Skip to content

Rule Chain Behavior Manifest

Scanned

  • Frontend files: 22
  • Backend files: 35
  • Total files: 57

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

  • None verified

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(page?

  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • from "react-router-dom" createRuleChain, getRuleChain, pauseRuleChain, previewRuleChain, startRuleChain, updateRuleChain, from "../../../api/ruleChains"
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • name: string description: string enabled: boolean status: RuleChainStatus config: RuleChainConfig > return
  • c:/autoconnecto/frontend/src/api/ruleChains.ts
    • CreateRuleChainPayload, PreviewRuleChainPayload, RuleChain, RuleChainPreviewResponse, RuleChainSummary, UpdateRuleChainPayload, from "../features/rule-chains/types/ruleChain.types"
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • is.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: "Ru
  • C:/autoconnecto/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?.lab
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • atus= status /> isEdit ? "Edit Rule Chain" : "New Rule Chain" Type: Data Generator
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
    • 0 > Rule Chains navigate("/rule-chains/new") > + New Rule Chain <Table rowKey="id" dataSource= items loading= loading pagination= pageSize: 10 > <Table.Column title="
  • C:/autoconnecto/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, [ filePathInclud
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • onClick= () => handleSave("draft") loading= saving && actionLoading === "save" > Save Draft <Button type="primary" onClick= handleStart loading= saving && actionLoading === "start" > Save &
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • nceInFiles(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 Edi
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
    • rom "react-router-dom" Button, Card, message, Modal, Space, Table, Typography, from "antd" DeleteOutlined, PauseCircleOutlined, PlayCircleOutlined, from "@ant-design/icons" deleteRuleChain, listRuleChains, pauseRuleChain, startRuleChain, from "../../../api/rul
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • 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: "/rulechains"
  • C:/autoconnecto/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 =
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • e="primary" onClick= handleStart loading= saving && actionLoading === "start" > Save & Start isEdit && status === "active" ? ( <Button onClick= handlePause loading= actionLoading === "pause" >
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • s, [ 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", routeHint
  • c:/autoconnecto/frontend/src/features/rule-chains/components/RuleChainStatusBadge.tsx
    • rops = status: RuleChainStatus const colorMap: Record = draft: "default", active: "green", paused: "orange", const labelMap: Record = draft: "Draft", active: "Active", paused: "Paused", return
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • Navigate, useParams from "react-router-dom" createRuleChain, getRuleChain, pauseRuleChain, previewRuleChain, startRuleChain, updateRuleChain, from "../../../api/ruleChains"
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
    • om" Button, Card, message, Modal, Space, Table, Typography, from "antd" DeleteOutlined, PauseCircleOutlined, PlayCircleOutlined, from "@ant-design/icons" deleteRuleChain, listRuleChains, pauseRuleChain, startRuleChain, from "../../../api/ruleChains"
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • | "same_payload_for_all" |
  • c:/autoconnecto/frontend/src/api/ruleChains.ts
    • tring 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: P
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • eChainEditorPage", "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(files,
  • C:/autoconnecto/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 = !!
  • c:/autoconnecto/frontend/src/features/rule-chains/components/GeneratorKeyCard.tsx
    • ve /> > <Input value= value.key onChange= (e) => update( key: e.target.value ) placeholder="temperature" />
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • useState ([]) const [deviceTypeOptions, setDeviceTypeOptions] = useState ( [] ) const [name, setName] = useState("") const [description, setDescription] = useState("") const [enabled, setEnabled] = useState(true) const [config, setConfig] = useState ( createDe
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
    • row: RuleChainSummary) => Modal.confirm( title: "Delete Rule Chain", 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) => pre
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • 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: number interva
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • file?: string id: string name: string steps: string[] confidence: Confidence evidence: EvidenceItem[] id: string label: string confidence: Confidence evidence: EvidenceItem[
  • C:/autoconnecto/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
    • ehaviorManifest, RuleChainFlow, RuleChainTable, from "../extractors/rulechain-behavior-extractor.service" render(manifest: RuleChainBehaviorManifest): Page[] const pages: Page[] = [] const overview = this.renderOverview(manif
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • deviceTypeOptions, setDeviceTypeOptions] = useState ( [] ) const [name, setName] = useState("") const [description, setDescription] = useState("") const [enabled, setEnabled] = useState(true) const [config, setConfig] = useState ( createDefaultRuleChainConfig(
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • mber mode: RuleChainMode generator: DataGeneratorConfig id: string name: string description?: string | null type: RuleChainType protocol?: RuleChainProtocol | null status: RuleChainStatus enabled: boolean targetCount: number keyCount: number intervalSeconds: n
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • : ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Name/i], , ]) ) addField( "description", "Description", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Description/i], ,
  • c:/autoconnecto/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= <DeleteOutl
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • iceTypeOption[]>( [] ) const [name, setName] = useState("") const [description, setDescription] = useState("") const [enabled, setEnabled] = useState(true) const [config, setConfig] = useState ( createDefaultRuleChainConfig() ) const generator = config.generat
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • = "number" | "boolean" | "string" protocol: RuleChainProtocol targetMode: RuleChainTargetMode deviceIds: string[] intervalSecon
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • eChainEditorPage", "rulechain", "rule-chain"], regexes: [/Description/i], , ]) ) addField( "enabled", "Enabled", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Enabled/i], , ])
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • aultGeneratorKey, createDefaultRuleChainConfig, type GeneratorKeyConfig, type RuleChain, type RuleChainConfig, type RuleChainProtocol, type RuleChainStatus, from "../types/ruleChain.types" const Title, Text = Typography type DeviceTypeOption = value: string
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
    • <Table.Column title="Interval" dataIndex="interva
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • | "same_payload_for_all" | "per_device_randomized" ex
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • "RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Enabled/i], , ]) ) addField( "protocol", "Protocol", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Protocol/i], , ])
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • /> <Select value= targetMode options= [ label: "Single Device", value: "single" , label: "Multipl
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • "rulechain", "rule-chain"], regexes: [/Protocol/i], , ]) ) addField( "target-mode", "Target Mode", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Target Mode/i], , ]) )
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • /> <Select value= generator.batchMode options= [ label: "Per Device Randomized",
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • ulechain", "rule-chain"], regexes: [/Target Mode/i], , ]) ) addField( "batch-mode", "Batch Mode", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Batch Mode/i], , ]) )
  • c:/autoconnecto/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" | "pause" |
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • leChainEditorPage", "rulechain", "rule-chain"], regexes: [/Batch Mode/i], , ]) ) addField( "devices", "Devices", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Devices/i], , ])
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • le="Schedule" style= marginBottom: 16 > <InputNumber style= width: "100%" min= 1 value= generator.intervalSeconds onChange= (v) =>
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
    • lumn title="Targets" dataIndex="targetsCount" /> <Table.Column title="Status" render= (_: unknown, row: RuleChainSummary) => ( )
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • expor
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • "RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Devices/i], , ]) ) addField( "interval", "Interval", this.findEvidenceInFiles(files, [ filePathIncludes: ["RuleChainEditorPage", "rulechain", "rule-chain"], regexes: [/Interval/i], , ])
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • => ( ...prev, generator: ...prev.generator, ...patch, as any, )) const updateKeys = (nextKeys: GeneratorKeyConfig[]) => updateGenerator( keys: nextKeys ) const handleAddKey = () => updateKeys([...(generator.keys || []), createDefaultGeneratorKey()]) const h
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
    • n title="Protocol" dataIndex="protocol" /> <Table.Column title="Status" render= (_: unknown, row: RuleChainSummary) => (
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • ChainProtocol targetMode: RuleChainTargetMode deviceIds: string[] intervalSeconds: number batchMode: RuleChainBatchMode keys: GeneratorKeyConfig[] id: string name: string
  • C:/autoconnecto/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: [
  • c:/autoconnecto/frontend/src/features/rule-chains/components/GeneratorKeyCard.tsx
    • lue.dataType === "number") return ( <InputNumber style= width: "100%" value= value.settings?.min onChange= (v) => updateSettings( min: v ) /> <
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • " : "", 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
  • C:/autoconnecto/backend/src/documentation/extractors/rulechain-behavior-extractor.service.ts
    • ms.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,
  • C:/autoconnecto/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
    • nst 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, "A
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • fig, type RuleChainProtocol, type RuleChainStatus, from "../types/ruleChain.types" const Title, Text = Typography type GeneratorTargetMode = "single" | "multiple" | "deviceType" function getErrorMessag
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • = "form" | "same_payload_for_all" | "per_device_randomized" id: string key: string dataType: GeneratorDataType enabled: boolean mode: s
  • C:/autoconnecto/backend/src/documentation/renderers/rulechain-multipage.renderer.ts
    • ngth || 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( mani
  • c:/autoconnecto/frontend/src/features/rule-chains/components/GeneratorKeyCard.tsx
    • Space, Switch, from "antd" GeneratorDataType, GeneratorKeyConfig, from "../types/ruleChain.types" const dataTypeOp
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainEditorPage.tsx
    • leChain, pauseRuleChain, previewRuleChain, startRuleChain, updateRuleChain, from "../../../api/ruleChains" createDefaultGeneratorKey, createDefaultRuleChainConfig, type GeneratorKeyConfig,
  • c:/autoconnecto/frontend/src/features/rule-chains/pages/RuleChainsPage.tsx
    • y" onClick= () => navigate("/rule-chains/new") > + New Rule Chain <Table rowKey="id" dataSource= items loading= loading pagination= pageSize: 10 > <Table.Column title="Type" dataIndex="type"
  • c:/autoconnecto/frontend/src/features/rule-chains/types/ruleChain.types.ts
    • _payload_for_all" | "per_device_randomized" protocol: RuleChainProtoc
  • C:/autoconnecto/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 (!hasAnyConte

support@autoconnecto.in · founder@autoconnecto.in · +91 92121 00555 · app.autoconnecto.in