Appearance
Rule Chain Behavior Manifest
Scanned
- Frontend files: 39
- Backend files: 35
- Total files: 74
Pages
- Rule Chains (/rulechains)
- Rule Chain Editor (/rulechains/:id)
Forms
- Name (name)
- Description (description)
- Enabled (enabled)
- Protocol (protocol)
- Target Mode (target-mode)
- Batch Mode (batch-mode)
- Devices (devices)
- Interval (interval)
- Keys (keys)
Flows
- create-rulechain
- Open the rule chains area.
- Click New Rule Chain.
- Enter name and configuration.
- Configure targets and keys.
- Save the rule chain.
- edit-rulechain
- Open an existing rule chain.
- Modify the configuration.
- Save the changes.
- delete-rulechain
- Locate a rule chain in the list.
- Click Delete.
- Confirm the deletion.
- start-rulechain
- Open the editor.
- Review the rule chain configuration.
- Click Save & Start.
- pause-rulechain
- Locate an active rule chain.
- Click Pause.
- The rule chain changes to paused state.
- preview-rulechain
- Open the editor.
- Configure the generator settings.
- Click Preview.
- Review the sample payload.
Tables
- rulechains-table: Name, Type, Protocol, Targets, Keys, Interval, Status, Last Run, Actions
Constraints
- Name is required before saving.
- At least one device must be selected.
- At least one key must be configured.
- Rule chain must be saved before it can be started.
- Only active rule chains can be paused.
Unknowns
- None
Available Pages") lines.push("") pages.forEach((page) => const name = String
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- Params from "react-router-dom" createRuleChain, getRuleChain, pauseRuleChain, previewRuleChain, startRuleChain, updateRuleChain, from "../../../api/ruleChains"
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- Partial< name: string description: string enabled: boolean status: RuleChainStatus config: RuleChainConfig > return id:
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/api/ruleChains.ts
- CreateRuleChainPayload, PreviewRuleChainPayload, RuleChain, RuleChainPreviewResponse, RuleChainSummary, UpdateRuleChainPayload, from "../features/rule-chains/types/ruleChain.types"
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Preview/i, /Save Draft/i, /Save & Start/i], requireAllRegexes: false, , ]) if (editorEvidence.length) items.push( id: "rulechain-editor", name: "
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
- ================ */ private renderEditor(manifest: RuleChainBehaviorManifest): string | null const lines: string[] = [] const previewFlow = this.getFlow(manifest, "preview-rulechain") const formFields = this.uniqueNonEmpty( (manifest.forms || []).map((f) => f?
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- on onClick= () => handleSave("draft") loading= saving && actionLoading === "save" > Save Draft <Button type="primary" onClick= handleStart loading= saving && actionLoading === "start" > Save & Start
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- ) addFlow( "create-rulechain", "Create Rule Chain", [ "Open the rule chains area.", "Click New Rule Chain.", "Enter name and configuration.", "Configure targets and keys.", "Save the rule chain.", ], this.findEvidenceInFiles(files, [ filePathIncludes: ["R
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- idenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Preview/i, /Save Draft/i, /Save & Start/i], requireAllRegexes: false, , ]) if (editorEvidence.length) items.push( id: "rulechain-editor", name: "Rule Chain
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- es(files, [ filePathIncludes: ["RuleChainsPage", "rulechain", "rule-chain"], regexes: [/Rule Chains/i, /columns/i, /Delete/i], requireAllRegexes: false, , ]) if (listEvidence.length) items.push( id: "rulechains-list", name: "Rule Chains", routeHint: "/rulechai
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
- const createFlow = this.getFlow(manifest, "create-rulechain") const editFlow = this.getFlow(manifest, "edit-rulechain") const deleteFlow = this.getFlow(manifest, "delete-rulechain") const startFlow = this.getFlow(manifest, "start-rulechain") const pauseFlow =
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- type="primary" onClick= handleStart loading= saving && actionLoading === "start" > Save & Start isEdit && status === "active" ? ( <Button onClick= handlePause loading= actionLoading === "pause" >
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- iles, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Preview/i, /Save Draft/i, /Save & Start/i], requireAllRegexes: false, , ]) if (editorEvidence.length) items.push( id: "rulechain-editor", name: "Rule Chain Editor", routeH
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/components/RuleChainStatusBadge.tsx
- const colorMap: Record = draft: "default", active: "green", paused: "orange", const labelMap: Record = draft: "Draft", active: "Active", paused: "Paused", return <Tag colo
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- useNavigate, useParams from "react-router-dom" createRuleChain, getRuleChain, pauseRuleChain, previewRuleChain, startRuleChain, updateRuleChain, from "../../../api/ruleChains"
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
- act-router-dom" Button, Card, message, Modal, Space, Table, Typography, from "antd" DeleteOutlined, PauseCircleOutlined, PlayCircleOutlined, from "@ant-design/icons" deleteRuleChain, listRuleChains, pauseRuleChain, startRuleChain, from "../../../api/ruleChains
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- | "same_payload_for_all" | "per_
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/api/ruleChains.ts
- id: string status: "active" > const res = await api.post(
/api/rule-chains/$ id /start) return res.data id: string ): Promise const res = await api.post(/api/rule-chains/$ id /pause) return res.data payload: PreviewRu
- id: string status: "active" > const res = await api.post(
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- : ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Save & Start/i], , ]) ) addFlow( "pause-rulechain", "Pause Rule Chain", [ "Locate an active rule chain.", "Click Pause.", "The rule chain changes to paused state.", ], this.findEvidenceInFiles(fi
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
- const deleteFlow = this.getFlow(manifest, "delete-rulechain") const startFlow = this.getFlow(manifest, "start-rulechain") const pauseFlow = this.getFlow(manifest, "pause-rulechain") const constraints = this.getConstraintTexts(manifest) const hasAnyContent = !!
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/components/GeneratorKeyCard.tsx
- bleRemove /> > <Input value= value.key onChange= (e) => update( key: e.target.value ) placeholder="temperature" /> </C
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- ns] = useState ([]) const [deviceTypeOptions, setDeviceTypeOptions] = useState ( [] ) const [name, setName] = useState("") const [description, setDescription] = useState("") const [enabled, setEnabled] = useState(true) const [config, setConfig] = useState ( cr
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
- ow: RuleChainSummary) => Modal.confirm( title: "Delete Data Generator", content:
Are you sure you want to delete "$ row.name "?, okText: "Delete", okType: "danger", onOk: async () => setBusy(row.id, true) try await deleteRuleChain(row.id) setItems((prev) =>
- ow: RuleChainSummary) => Modal.confirm( title: "Delete Data Generator", content:
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- Config = version: number mode: RuleChainMode generator: DataGeneratorConfig id: string name: string description?: string | null type: RuleChainType protocol?: RuleChainProtocol | null status: RuleChainStatus enabled: boolean targetCount: number keyCount: numbe
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- n: string file?: string id: string name: string steps: string[] confidence: Confidence evidence: EvidenceItem[] id: string label: string confidence: Confidence evidence: EvidenceItem[] exp
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
- ChainBehaviorManifest, RuleChainFlow, RuleChainTable, from "../extractors/rulechain-behavior-extractor.service" render(manifest: RuleChainBehaviorManifest): Page[] const pages: Page[] = [] const overview = this.renderOverview(manifest)
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- nst [deviceTypeOptions, setDeviceTypeOptions] = useState ( [] ) const [name, setName] = useState("") const [description, setDescription] = useState("") const [enabled, setEnabled] = useState(true) const [config, setConfig] = useState ( createDefaultRuleChainCo
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- sion: number mode: RuleChainMode generator: DataGeneratorConfig id: string name: string description?: string | null type: RuleChainType protocol?: RuleChainProtocol | null status: RuleChainStatus enabled: boolean targetCount: number keyCount: number intervalSe
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- ncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Name/i], , ]) ) addField( "description", "Description", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Description/i], ,
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/components/GeneratorKeyCard.tsx
- title= value.key?.trim() ? value.key : "New Key" extra= Enabled <Switch checked= value.enabled onChange= (checked) => update( enabled: checked ) /> <Button danger icon=
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- te ( [] ) const [name, setName] = useState("") const [description, setDescription] = useState("") const [enabled, setEnabled] = useState(true) const [config, setConfig] = useState ( createDefaultRuleChainConfig() ) const generator = config.generator as RuleCha
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- taType = "number" | "boolean" | "string" protocol: RuleChainProtocol targetMode: RuleChainTargetMode deviceIds: string[] intervalSeconds: numbe
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- : ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Description/i], , ]) ) addField( "enabled", "Enabled", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Enabled/i], , ]) )
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- teDefaultGeneratorKey, createDefaultRuleChainConfig, type GeneratorKeyConfig, type RuleChain, type RuleChainConfig, type RuleChainProtocol, type RuleChainStatus, from "../types/ruleChain.types" const Title, Text = Typography type DeviceTypeOption = value: stri
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
- <Table.Column title="Interval" dataIndex="intervalLa
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- | "same_payload_for_all" | "per_device_randomized"
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- udes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Enabled/i], , ]) ) addField( "protocol", "Protocol", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Protocol/i], , ]) )
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- /> <Select value= targetMode options= [ label: "Single Device", value: "single" , label: "Multiple Dev
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- rPage", "rulechain", "rule-chain"], regexes: [/Protocol/i], , ]) ) addField( "target-mode", "Target Mode", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Target Mode/i], , ]) ) addFiel
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- /> <Select value= generator.batchMode options= [ label: "Per Device Randomized", v
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- age", "rulechain", "rule-chain"], regexes: [/Target Mode/i], , ]) ) addField( "batch-mode", "Batch Mode", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Batch Mode/i], , ]) ) addField(
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- ] = useState(false) const [saving, setSaving] = useState(false) const [previewLoading, setPreviewLoading] = useState(false) const [devicesLoading, setDevicesLoading] = useState(false) const [actionLoading, setActionLoading] = useState< "save" | "start" | "paus
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- s: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Batch Mode/i], , ]) ) addField( "devices", "Devices", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Devices/i], , ]) )
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- title="Schedule" style= marginBottom: 16 > <InputNumber style= width: "100%" min= 1 value= generator.intervalSeconds onChange= (v) =>
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
- Column title="Targets" dataIndex="targetsCount" /> <Table.Column title="Status" render= (_: unknown, row: RuleChainSummary) => ( )
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- g, any>
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- udes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Devices/i], , ]) ) addField( "interval", "Interval", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Interval/i], , ]) )
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- ig((prev) => ( ...prev, generator: ...prev.generator, ...patch, as any, )) const updateKeys = (nextKeys: GeneratorKeyConfig[]) => updateGenerator( keys: nextKeys ) const handleAddKey = () => updateKeys([...(generator.keys || []), createDefaultGeneratorKey()])
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
- umn title="Protocol" dataIndex="protocol" /> <Table.Column title="Status" render= (_: unknown, row: RuleChainSummary) => ( <Ru
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- RuleChainProtocol targetMode: RuleChainTargetMode deviceIds: string[] intervalSeconds: number batchMode: RuleChainBatchMode keys: GeneratorKeyConfig[] id: string name: string description
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- "Open the rule chains area.", "Click New Rule Chain.", "Enter name and configuration.", "Configure targets and keys.", "Save the rule chain.", ], this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/components/RuleChainStatusBadge.tsx
- const colorMap: Record = draft: "default", active: "green", paused: "orange", const labelMap:
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- eChain, updateRuleChain, from "../../../api/ruleChains" createDefaultGeneratorKey, createDefaultRuleChainConfig, type GeneratorKeyConfig, type RuleChain, type RuleChainConfig, type RuleChainProtocol,
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
- hain, startRuleChain, from "../../../api/ruleChains" const Title = Typography const navigate = useNavigate() const [items, setItems] = useState<RuleChainSummary[]
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- | "
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/api/ruleChains.ts
- ait api.delete(
/api/rule-chains/$ id) return res.data id: string ): Promise const res = await api.post(/api/rule-chains/$ id /start) return res.data id: string ): Promise const res = aw
- ait api.delete(
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- id: string label: string confidence: Confidence evidence: EvidenceItem[] id: string columns: string[] confidence: Confidence evidence: EvidenceItem[] id: string text: string confidence: Confidence evidence: EvidenceItem[]
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
- t = route ?
— \$ route `: "" lines.push(- **$ name **$ routeText) ) lines.push("") if (table?.columns?.length) lines.push("## Table Columns") lines.push("") this.uniqueNonEmpty(table.columns).forEach((c) => lines.push(- **$ c **`) ) lines.push("") if
- t = route ?
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/components/GeneratorKeyCard.tsx
- (value.dataType === "number") return ( <InputNumber style= width: "100%" value= value.settings?.min onChange= (v) => updateSettings( min: v ) /> </Form.
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- pe || "" : "", as any, , ) const validateBeforeSubmit = () => if (!name.trim()) messageApi.error("Name is required") return false if (targetMode === "deviceType") if (!generator.deviceType?.trim()) messageApi.error("Please select a device type") return false e
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
- items.push( id, text, confidence: "high", evidence, ) addConstraint( "name-required", "Name is required before saving.", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/required/i, /Name
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
- const hasAnyContent = formFields.length > 0 || !!previewFlow?.steps?.length || this.hasConstraintText(manifest, "Name is required before saving.") || this.hasConstraintText(manifest, "At least one device must be selected.") || this.hasConstraintText(manifest,
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- hainConfig, type RuleChainProtocol, type RuleChainStatus, from "../types/ruleChain.types" const Title, Text = Typography type GeneratorTargetMode = "single" | "multiple" | "deviceType" function getErrorMessage(error: any
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- ode = "form" | "same_payload_for_all" | "per_device_randomized" id: string key: string dataType: GeneratorDataType enabled: boolean mode: string
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
- length || this.hasConstraintText(manifest, "Name is required before saving.") || this.hasConstraintText(manifest, "At least one device must be selected.") || this.hasConstraintText(manifest, "At least one key must be configured.") || this.hasConstraintText( ma
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/components/GeneratorKeyCard.tsx
- Select, Space, Switch, from "antd" GeneratorDataType, GeneratorKeyConfig, from "../types/ruleChain.types" const dataTypeOptions = [
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
- getRuleChain, pauseRuleChain, previewRuleChain, startRuleChain, updateRuleChain, from "../../../api/ruleChains" createDefaultGeneratorKey, createDefaultRuleChainConfig, type GeneratorKeyConfig, typ
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
- ary" onClick= () => navigate("/rule-chains/new") > + New Data Generator <Table rowKey="id" dataSource= items loading= loading pagination= pageSize: 10 >
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/frontend/src/features/rule-chains/types/ruleChain.types.ts
- "same_payload_for_all" | "per_device_randomized" protocol: RuleChainProtocol targ
- /home/runner/work/autoconnecto-workspace/autoconnecto-workspace/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
- || this.hasConstraintText(manifest, "At least one device must be selected.") || this.hasConstraintText(manifest, "At least one key must be configured.") || this.hasConstraintText( manifest, "Rule chain must be saved before it can be started." ) if (!hasAnyCont
