@automagik/omni 2.260908.7 → 2.260908.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,32 @@
1
+ -- Manifest-compilation provenance on automations (#986, RFC #925 G4b).
2
+ --
3
+ -- Adds `automations.managed_by_agent_id`: set when the row was COMPILED from
4
+ -- `agents.event_manifest` by the manifest compiler
5
+ -- (packages/api/src/services/manifest-compiler.ts); NULL = hand-made. The
6
+ -- agent's manifest is the source of truth and `automations` becomes the
7
+ -- compiled plan for these rows — the API rejects manual create/update/delete
8
+ -- of a managed automation so the plan cannot drift silently.
9
+ --
10
+ -- The FK is ON DELETE CASCADE so a hard agent delete removes its compiled
11
+ -- plan at the DB level (the service-level soft delete reconciles compiled
12
+ -- rows away explicitly before that ever matters). NOT VALID mirrors the 0041
13
+ -- precedent: no scan on deploy; every new write is checked.
14
+ --
15
+ -- Hand-written following the 0043/0044/0052 precedent (additive, idempotent).
16
+ --
17
+ -- NOTE: no explicit BEGIN/COMMIT — the boot migrator executes this file on a
18
+ -- pooled postgres-js connection, which rejects raw transaction control.
19
+
20
+ ALTER TABLE "automations" ADD COLUMN IF NOT EXISTS "managed_by_agent_id" uuid;
21
+ --> statement-breakpoint
22
+ DO $$
23
+ BEGIN
24
+ IF NOT EXISTS (
25
+ SELECT 1 FROM pg_constraint
26
+ WHERE conname = 'automations_managed_by_agent_fk' AND conrelid = '"automations"'::regclass
27
+ ) THEN
28
+ ALTER TABLE "automations" ADD CONSTRAINT "automations_managed_by_agent_fk" FOREIGN KEY ("managed_by_agent_id") REFERENCES "agents" ("id") ON DELETE CASCADE NOT VALID;
29
+ END IF;
30
+ END $$;
31
+ --> statement-breakpoint
32
+ CREATE INDEX IF NOT EXISTS "automations_managed_by_agent_idx" ON "automations" ("managed_by_agent_id");
@@ -442,6 +442,13 @@
442
442
  "when": 1786200000000,
443
443
  "tag": "0062_agent_event_manifest",
444
444
  "breakpoints": true
445
+ },
446
+ {
447
+ "idx": 63,
448
+ "version": "7",
449
+ "when": 1786300000000,
450
+ "tag": "0063_automation_manifest_provenance",
451
+ "breakpoints": true
445
452
  }
446
453
  ]
447
454
  }
@@ -29,6 +29,7 @@ declare function parseManifestSource(source: string, format: 'json' | 'yaml'): u
29
29
  declare function validateManifestDocument(raw: unknown): AgentEventManifest;
30
30
  /** Minimal agent shape the graph helpers need (matches SDK list output). */
31
31
  interface GraphAgentInput {
32
+ id: string;
32
33
  name: string;
33
34
  eventManifest?: {
34
35
  accepts?: {
@@ -44,12 +45,33 @@ interface GraphRow {
44
45
  agent: string;
45
46
  consumes: string;
46
47
  produces: string;
48
+ compiled: string;
47
49
  }
50
+ /**
51
+ * Count compiled (manifest-managed) automations per owning agent (#986).
52
+ * Input is the SDK automations list; rows without `managedByAgentId` are
53
+ * hand-made and ignored.
54
+ */
55
+ declare function countManagedAutomations(automations: Array<{
56
+ managedByAgentId?: string | null;
57
+ }>): Map<string, number>;
58
+ /**
59
+ * Render the declared-vs-materialized indicator for one agent:
60
+ * - `-` when nothing is declared (nothing to compile),
61
+ * - `unknown` when the automations list was unavailable,
62
+ * - `materialized/declared` otherwise (e.g. `2/2`; `0/2` = declared but
63
+ * not yet compiled — the manifest predates the G4b compiler).
64
+ */
65
+ declare function formatCompiledIndicator(declared: number, materialized: number | undefined): string;
48
66
  /**
49
67
  * Build the producer/consumer table: one row per agent that declares at least
50
68
  * one accepts/publishes entry. Agents without a manifest are omitted.
69
+ *
70
+ * `managedCounts` (from `countManagedAutomations`, #986) drives the
71
+ * `compiled` column — declared vs materialized state; pass undefined when the
72
+ * automations list could not be fetched.
51
73
  */
52
- declare function buildGraphRows(agents: GraphAgentInput[]): GraphRow[];
74
+ declare function buildGraphRows(agents: GraphAgentInput[], managedCounts?: Map<string, number>): GraphRow[];
53
75
  interface TypeGraphRow {
54
76
  agent: string;
55
77
  role: 'consumes' | 'produces';
@@ -67,6 +89,8 @@ export declare const __testables: {
67
89
  validateManifestDocument: typeof validateManifestDocument;
68
90
  buildGraphRows: typeof buildGraphRows;
69
91
  buildTypeRows: typeof buildTypeRows;
92
+ countManagedAutomations: typeof countManagedAutomations;
93
+ formatCompiledIndicator: typeof formatCompiledIndicator;
70
94
  };
71
95
  export declare function createAgentsCommand(): Command;
72
96
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsJpC,8EAA8E;AAC9E,iBAAS,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,iBAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAS7E;AAED;;;GAGG;AACH,iBAAS,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CASlE;AAED,4EAA4E;AAC5E,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,EAAE,CAAC;QAChE,SAAS,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACjC,GAAG,IAAI,CAAC;CACV;AAED,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD;;;GAGG;AACH,iBAAS,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,QAAQ,EAAE,CAc7D;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAcnF;AAED,oCAAoC;AACpC,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,OAAO,CA0Q7C"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsJpC,8EAA8E;AAC9E,iBAAS,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,iBAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAS7E;AAED;;;GAGG;AACH,iBAAS,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CASlE;AAED,4EAA4E;AAC5E,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,EAAE,CAAC;QAChE,SAAS,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACjC,GAAG,IAAI,CAAC;CACV;AAED,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,iBAAS,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC;IAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ9G;AAED;;;;;;GAMG;AACH,iBAAS,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI3F;AAQD;;;;;;;GAOG;AACH,iBAAS,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAE,CAelG;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAcnF;AAED,oCAAoC;AACpC,eAAO,MAAM,WAAW;;;;;;;;CAQvB,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,OAAO,CAoR7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"automations.d.ts","sourceRoot":"","sources":["../../src/commands/automations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0FpC,wBAAgB,wBAAwB,IAAI,OAAO,CAwUlD"}
1
+ {"version":3,"file":"automations.d.ts","sourceRoot":"","sources":["../../src/commands/automations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0FpC,wBAAgB,wBAAwB,IAAI,OAAO,CA2UlD"}
package/dist/index.js CHANGED
@@ -34426,7 +34426,14 @@ var init_events = __esm(() => {
34426
34426
  });
34427
34427
 
34428
34428
  // ../core/src/schemas/agent-manifest.ts
34429
- var EVENT_TYPE_TOKEN_PATTERN, ManifestEventTypeSchema, ManifestAcceptsEntrySchema, ManifestPublishesEntrySchema, AgentEventManifestSchema;
34429
+ function checkPublishAllowed(manifest, eventType) {
34430
+ const publishes = manifest?.publishes;
34431
+ if (!Array.isArray(publishes)) {
34432
+ return true;
34433
+ }
34434
+ return publishes.some((entry) => entry?.event === eventType);
34435
+ }
34436
+ var EVENT_TYPE_TOKEN_PATTERN, ManifestEventTypeSchema, ManifestAcceptsEntrySchema, ManifestPublishesEntrySchema, AgentEventManifestSchema, PUBLISH_NOT_DECLARED = "publish_not_declared";
34430
34437
  var init_agent_manifest = __esm(() => {
34431
34438
  init_zod();
34432
34439
  init_types2();
@@ -40928,14 +40935,14 @@ async function releaseEmissionClaim(deps, claimedEventId, eventType) {
40928
40935
  });
40929
40936
  });
40930
40937
  }
40931
- async function enforceEmitEventSchema(deps, eventType, payload, trustedTenantId) {
40938
+ async function enforceEmitEventGates(deps, eventType, payload, trustedTenantId, emitterAgentId) {
40932
40939
  if (!deps.validateEmitEvent)
40933
40940
  return null;
40934
- const verdict = await deps.validateEmitEvent(eventType, payload, trustedTenantId);
40941
+ const verdict = await deps.validateEmitEvent(eventType, payload, trustedTenantId, emitterAgentId);
40935
40942
  if (verdict.valid)
40936
40943
  return null;
40937
40944
  const detail = verdict.errors?.length ? `: ${verdict.errors.join("; ")}` : "";
40938
- logger2.warn("Emit event refused by schema registry", { eventType, errors: verdict.errors });
40945
+ logger2.warn("Emit event refused by emission gate", { eventType, emitterAgentId, errors: verdict.errors });
40939
40946
  return `${verdict.reason ?? SCHEMA_VALIDATION_FAILED}${detail}`;
40940
40947
  }
40941
40948
  async function prepareEmitEvent(config2, context, deps, trustedTenantId, actionIndex, provenance) {
@@ -40949,9 +40956,9 @@ async function prepareEmitEvent(config2, context, deps, trustedTenantId, actionI
40949
40956
  payload = context.payload;
40950
40957
  }
40951
40958
  const eventType = substituteTemplate(config2.eventType, context);
40952
- const schemaError = await enforceEmitEventSchema(deps, eventType, payload, trustedTenantId);
40953
- if (schemaError !== null) {
40954
- return { error: schemaError };
40959
+ const gateError = await enforceEmitEventGates(deps, eventType, payload, trustedTenantId, context.automation?.managedByAgentId ?? null);
40960
+ if (gateError !== null) {
40961
+ return { error: gateError };
40955
40962
  }
40956
40963
  const correlationId = context.event?.metadata.correlationId ?? context.payload.correlationId ?? undefined;
40957
40964
  const causationId = context.event?.id ?? provenance?.parentEventId;
@@ -41695,7 +41702,7 @@ class AutomationEngine {
41695
41702
  const instanceId = event.metadata.instanceId ?? "global";
41696
41703
  const context = createTemplateContext(event.payload, {
41697
41704
  event: { id: event.id, type: event.type, timestamp: event.timestamp, metadata: event.metadata },
41698
- automation: { id: automation.id }
41705
+ automation: { id: automation.id, managedByAgentId: automation.managedByAgentId ?? null }
41699
41706
  });
41700
41707
  await this.queueExecution(automation, event, context, instanceId);
41701
41708
  }
@@ -41733,7 +41740,7 @@ class AutomationEngine {
41733
41740
  timestamp: syntheticEvent.timestamp,
41734
41741
  metadata: syntheticEvent.metadata
41735
41742
  },
41736
- automation: { id: automation.id }
41743
+ automation: { id: automation.id, managedByAgentId: automation.managedByAgentId ?? null }
41737
41744
  });
41738
41745
  await this.queueExecution(automation, syntheticEvent, context, instanceId);
41739
41746
  };
@@ -70677,6 +70684,7 @@ __export(exports_src, {
70677
70684
  classifyEnvelope: () => classifyEnvelope,
70678
70685
  checkSessionReset: () => checkSessionReset,
70679
70686
  checkSchemaCompatibility: () => checkSchemaCompatibility,
70687
+ checkPublishAllowed: () => checkPublishAllowed,
70680
70688
  channelSupportsTypingIndicator: () => channelSupportsTypingIndicator,
70681
70689
  channelHasMessagingWindow: () => channelHasMessagingWindow,
70682
70690
  canonicalizeIpv4: () => canonicalizeIpv4,
@@ -70741,6 +70749,7 @@ __export(exports_src, {
70741
70749
  PersonWithIdentitiesSchema: () => PersonWithIdentitiesSchema,
70742
70750
  PersonSchema: () => PersonSchema,
70743
70751
  PaginationSchema: () => PaginationSchema,
70752
+ PUBLISH_NOT_DECLARED: () => PUBLISH_NOT_DECLARED,
70744
70753
  PROVIDER_SCHEMAS: () => PROVIDER_SCHEMAS,
70745
70754
  PAYLOAD_STAGES: () => PAYLOAD_STAGES,
70746
70755
  OutgoingMessageSchema: () => OutgoingMessageSchema,
@@ -82700,6 +82709,7 @@ var init_schema2 = __esm(() => {
82700
82709
  enabled: boolean2("enabled").notNull().default(true),
82701
82710
  priority: integer("priority").notNull().default(0),
82702
82711
  transactionalEmissions: boolean2("transactional_emissions").notNull().default(false),
82712
+ managedByAgentId: uuid("managed_by_agent_id").references(() => agents.id, { onDelete: "cascade" }),
82703
82713
  createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
82704
82714
  updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
82705
82715
  tenantId: uuid("tenant_id").references(() => tenants.id, { onDelete: "restrict" })
@@ -82709,7 +82719,8 @@ var init_schema2 = __esm(() => {
82709
82719
  nameIdx: index("automations_name_idx").on(table3.name),
82710
82720
  triggerIdx: index("automations_trigger_idx").on(table3.triggerEventType),
82711
82721
  enabledIdx: index("automations_enabled_idx").on(table3.enabled),
82712
- priorityIdx: index("automations_priority_idx").on(table3.priority)
82722
+ priorityIdx: index("automations_priority_idx").on(table3.priority),
82723
+ managedByAgentIdx: index("automations_managed_by_agent_idx").on(table3.managedByAgentId)
82713
82724
  }));
82714
82725
  automationLogStatuses = ["success", "failed", "skipped"];
82715
82726
  automationLogs = pgTable("automation_logs", {
@@ -136684,7 +136695,7 @@ import { fileURLToPath } from "url";
136684
136695
  // package.json
136685
136696
  var package_default = {
136686
136697
  name: "@automagik/omni",
136687
- version: "2.260908.7",
136698
+ version: "2.260908.9",
136688
136699
  repository: {
136689
136700
  type: "git",
136690
136701
  url: "git+https://github.com/automagik-dev/omni.git",
@@ -137799,11 +137810,28 @@ ${issues}`);
137799
137810
  }
137800
137811
  return result.data;
137801
137812
  }
137813
+ function countManagedAutomations(automations2) {
137814
+ const counts = new Map;
137815
+ for (const automation of automations2) {
137816
+ const agentId = automation.managedByAgentId;
137817
+ if (!agentId)
137818
+ continue;
137819
+ counts.set(agentId, (counts.get(agentId) ?? 0) + 1);
137820
+ }
137821
+ return counts;
137822
+ }
137823
+ function formatCompiledIndicator(declared, materialized) {
137824
+ if (declared === 0)
137825
+ return "-";
137826
+ if (materialized === undefined)
137827
+ return "unknown";
137828
+ return `${materialized}/${declared}`;
137829
+ }
137802
137830
  function formatAcceptsEntry(entry) {
137803
137831
  const filtered = entry.filter !== undefined && Object.keys(entry.filter).length > 0;
137804
137832
  return filtered ? `${entry.event} (filtered)` : entry.event;
137805
137833
  }
137806
- function buildGraphRows(agents) {
137834
+ function buildGraphRows(agents, managedCounts) {
137807
137835
  const rows = [];
137808
137836
  for (const agent3 of agents) {
137809
137837
  const manifest = agent3.eventManifest;
@@ -137814,7 +137842,8 @@ function buildGraphRows(agents) {
137814
137842
  rows.push({
137815
137843
  agent: agent3.name,
137816
137844
  consumes: accepts.length > 0 ? accepts.map(formatAcceptsEntry).join(", ") : "-",
137817
- produces: publishes.length > 0 ? publishes.map((entry) => entry.event).join(", ") : "-"
137845
+ produces: publishes.length > 0 ? publishes.map((entry) => entry.event).join(", ") : "-",
137846
+ compiled: formatCompiledIndicator(accepts.length, managedCounts ? managedCounts.get(agent3.id) ?? 0 : undefined)
137818
137847
  });
137819
137848
  }
137820
137849
  return rows;
@@ -137982,7 +138011,13 @@ function createAgentsCommand() {
137982
138011
  list(rows2, { emptyMessage: `No agent declares ${options.type}.` });
137983
138012
  return;
137984
138013
  }
137985
- const rows = buildGraphRows(items);
138014
+ let managedCounts;
138015
+ try {
138016
+ managedCounts = countManagedAutomations(await client.automations.list({}));
138017
+ } catch {
138018
+ managedCounts = undefined;
138019
+ }
138020
+ const rows = buildGraphRows(items, managedCounts);
137986
138021
  list(rows, { emptyMessage: "No agent declares an event manifest." });
137987
138022
  } catch (err2) {
137988
138023
  const message2 = err2 instanceof Error ? err2.message : "Unknown error";
@@ -138820,7 +138855,8 @@ function createAutomationsCommand() {
138820
138855
  name: a2.name,
138821
138856
  trigger: a2.triggerEventType,
138822
138857
  enabled: a2.enabled ? "yes" : "no",
138823
- priority: a2.priority
138858
+ priority: a2.priority,
138859
+ managed: a2.managedByAgentId ? "manifest" : "-"
138824
138860
  }));
138825
138861
  list(items, { emptyMessage: "No automations found." });
138826
138862
  } catch (err2) {
@@ -5596,6 +5596,11 @@ export interface components {
5596
5596
  priority: number;
5597
5597
  /** @description Transactional publication (G5, #988): buffer the run's emit_event publishes and flush them in order only when every action succeeded; a failed run publishes zero */
5598
5598
  transactionalEmissions: boolean;
5599
+ /**
5600
+ * Format: uuid
5601
+ * @description Set when this automation was compiled from an agent event manifest (RFC #925 G4b, #986); null = hand-made. Managed automations reject manual mutation — edit the owning agent’s manifest instead
5602
+ */
5603
+ managedByAgentId: string | null;
5599
5604
  /**
5600
5605
  * Format: date-time
5601
5606
  * @description Creation timestamp
@@ -17032,6 +17037,11 @@ export interface operations {
17032
17037
  priority: number;
17033
17038
  /** @description Transactional publication (G5, #988): buffer the run's emit_event publishes and flush them in order only when every action succeeded; a failed run publishes zero */
17034
17039
  transactionalEmissions: boolean;
17040
+ /**
17041
+ * Format: uuid
17042
+ * @description Set when this automation was compiled from an agent event manifest (RFC #925 G4b, #986); null = hand-made. Managed automations reject manual mutation — edit the owning agent’s manifest instead
17043
+ */
17044
+ managedByAgentId: string | null;
17035
17045
  /**
17036
17046
  * Format: date-time
17037
17047
  * @description Creation timestamp
@@ -17315,6 +17325,11 @@ export interface operations {
17315
17325
  priority: number;
17316
17326
  /** @description Transactional publication (G5, #988): buffer the run's emit_event publishes and flush them in order only when every action succeeded; a failed run publishes zero */
17317
17327
  transactionalEmissions: boolean;
17328
+ /**
17329
+ * Format: uuid
17330
+ * @description Set when this automation was compiled from an agent event manifest (RFC #925 G4b, #986); null = hand-made. Managed automations reject manual mutation — edit the owning agent’s manifest instead
17331
+ */
17332
+ managedByAgentId: string | null;
17318
17333
  /**
17319
17334
  * Format: date-time
17320
17335
  * @description Creation timestamp
@@ -17491,6 +17506,11 @@ export interface operations {
17491
17506
  priority: number;
17492
17507
  /** @description Transactional publication (G5, #988): buffer the run's emit_event publishes and flush them in order only when every action succeeded; a failed run publishes zero */
17493
17508
  transactionalEmissions: boolean;
17509
+ /**
17510
+ * Format: uuid
17511
+ * @description Set when this automation was compiled from an agent event manifest (RFC #925 G4b, #986); null = hand-made. Managed automations reject manual mutation — edit the owning agent’s manifest instead
17512
+ */
17513
+ managedByAgentId: string | null;
17494
17514
  /**
17495
17515
  * Format: date-time
17496
17516
  * @description Creation timestamp
@@ -17845,6 +17865,11 @@ export interface operations {
17845
17865
  priority: number;
17846
17866
  /** @description Transactional publication (G5, #988): buffer the run's emit_event publishes and flush them in order only when every action succeeded; a failed run publishes zero */
17847
17867
  transactionalEmissions: boolean;
17868
+ /**
17869
+ * Format: uuid
17870
+ * @description Set when this automation was compiled from an agent event manifest (RFC #925 G4b, #986); null = hand-made. Managed automations reject manual mutation — edit the owning agent’s manifest instead
17871
+ */
17872
+ managedByAgentId: string | null;
17848
17873
  /**
17849
17874
  * Format: date-time
17850
17875
  * @description Creation timestamp
@@ -18021,6 +18046,11 @@ export interface operations {
18021
18046
  priority: number;
18022
18047
  /** @description Transactional publication (G5, #988): buffer the run's emit_event publishes and flush them in order only when every action succeeded; a failed run publishes zero */
18023
18048
  transactionalEmissions: boolean;
18049
+ /**
18050
+ * Format: uuid
18051
+ * @description Set when this automation was compiled from an agent event manifest (RFC #925 G4b, #986); null = hand-made. Managed automations reject manual mutation — edit the owning agent’s manifest instead
18052
+ */
18053
+ managedByAgentId: string | null;
18024
18054
  /**
18025
18055
  * Format: date-time
18026
18056
  * @description Creation timestamp
@@ -18197,6 +18227,11 @@ export interface operations {
18197
18227
  priority: number;
18198
18228
  /** @description Transactional publication (G5, #988): buffer the run's emit_event publishes and flush them in order only when every action succeeded; a failed run publishes zero */
18199
18229
  transactionalEmissions: boolean;
18230
+ /**
18231
+ * Format: uuid
18232
+ * @description Set when this automation was compiled from an agent event manifest (RFC #925 G4b, #986); null = hand-made. Managed automations reject manual mutation — edit the owning agent’s manifest instead
18233
+ */
18234
+ managedByAgentId: string | null;
18200
18235
  /**
18201
18236
  * Format: date-time
18202
18237
  * @description Creation timestamp