@carlonicora/nestjs-neo4jsonapi 4.2.0 → 4.3.0

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.
Files changed (84) hide show
  1. package/dist/agents/graph/graph.module.d.ts.map +1 -1
  2. package/dist/agents/graph/graph.module.js +6 -0
  3. package/dist/agents/graph/graph.module.js.map +1 -1
  4. package/dist/agents/graph/interfaces/graph.catalog.interface.d.ts +46 -1
  5. package/dist/agents/graph/interfaces/graph.catalog.interface.d.ts.map +1 -1
  6. package/dist/agents/graph/services/graph.catalog.service.d.ts +14 -2
  7. package/dist/agents/graph/services/graph.catalog.service.d.ts.map +1 -1
  8. package/dist/agents/graph/services/graph.catalog.service.js +75 -0
  9. package/dist/agents/graph/services/graph.catalog.service.js.map +1 -1
  10. package/dist/agents/graph/services/richtext.write.d.ts +52 -0
  11. package/dist/agents/graph/services/richtext.write.d.ts.map +1 -0
  12. package/dist/agents/graph/services/richtext.write.js +92 -0
  13. package/dist/agents/graph/services/richtext.write.js.map +1 -0
  14. package/dist/agents/graph/services/writable.rules.d.ts +37 -0
  15. package/dist/agents/graph/services/writable.rules.d.ts.map +1 -0
  16. package/dist/agents/graph/services/writable.rules.js +46 -0
  17. package/dist/agents/graph/services/writable.rules.js.map +1 -0
  18. package/dist/agents/graph/tools/describe-entity.tool.d.ts.map +1 -1
  19. package/dist/agents/graph/tools/describe-entity.tool.js +15 -0
  20. package/dist/agents/graph/tools/describe-entity.tool.js.map +1 -1
  21. package/dist/agents/index.d.ts +1 -1
  22. package/dist/agents/index.d.ts.map +1 -1
  23. package/dist/agents/index.js.map +1 -1
  24. package/dist/agents/operator/contexts/operator.context.d.ts +17 -1
  25. package/dist/agents/operator/contexts/operator.context.d.ts.map +1 -1
  26. package/dist/agents/operator/contexts/operator.context.js +8 -0
  27. package/dist/agents/operator/contexts/operator.context.js.map +1 -1
  28. package/dist/agents/operator/controllers/operator.controller.d.ts.map +1 -1
  29. package/dist/agents/operator/controllers/operator.controller.js +10 -1
  30. package/dist/agents/operator/controllers/operator.controller.js.map +1 -1
  31. package/dist/agents/operator/interfaces/operator.tool.interface.d.ts +49 -1
  32. package/dist/agents/operator/interfaces/operator.tool.interface.d.ts.map +1 -1
  33. package/dist/agents/operator/interfaces/operator.tool.interface.js.map +1 -1
  34. package/dist/agents/operator/prompts/operator.system.prompt.d.ts +1 -1
  35. package/dist/agents/operator/prompts/operator.system.prompt.d.ts.map +1 -1
  36. package/dist/agents/operator/prompts/operator.system.prompt.js +2 -0
  37. package/dist/agents/operator/prompts/operator.system.prompt.js.map +1 -1
  38. package/dist/agents/operator/services/operator.service.d.ts +32 -0
  39. package/dist/agents/operator/services/operator.service.d.ts.map +1 -1
  40. package/dist/agents/operator/services/operator.service.js +83 -2
  41. package/dist/agents/operator/services/operator.service.js.map +1 -1
  42. package/dist/agents/operator/tools/entity-write.tools.d.ts +75 -19
  43. package/dist/agents/operator/tools/entity-write.tools.d.ts.map +1 -1
  44. package/dist/agents/operator/tools/entity-write.tools.js +422 -149
  45. package/dist/agents/operator/tools/entity-write.tools.js.map +1 -1
  46. package/dist/common/helpers/bound-content.d.ts +21 -0
  47. package/dist/common/helpers/bound-content.d.ts.map +1 -0
  48. package/dist/common/helpers/bound-content.js +28 -0
  49. package/dist/common/helpers/bound-content.js.map +1 -0
  50. package/dist/common/helpers/index.d.ts +1 -0
  51. package/dist/common/helpers/index.d.ts.map +1 -1
  52. package/dist/common/helpers/index.js +1 -0
  53. package/dist/common/helpers/index.js.map +1 -1
  54. package/dist/common/interfaces/entity.schema.interface.d.ts +27 -4
  55. package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
  56. package/dist/foundations/assistant/controllers/assistant.controller.d.ts +0 -7
  57. package/dist/foundations/assistant/controllers/assistant.controller.d.ts.map +1 -1
  58. package/dist/foundations/assistant/controllers/assistant.controller.js +2 -16
  59. package/dist/foundations/assistant/controllers/assistant.controller.js.map +1 -1
  60. package/dist/foundations/assistant/services/assistant.service.d.ts +0 -9
  61. package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -1
  62. package/dist/foundations/assistant/services/assistant.service.js +32 -35
  63. package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
  64. package/dist/foundations/assistant-action/entities/assistant-action.d.ts +1 -0
  65. package/dist/foundations/assistant-action/entities/assistant-action.d.ts.map +1 -1
  66. package/dist/foundations/assistant-action/entities/assistant-action.js +1 -0
  67. package/dist/foundations/assistant-action/entities/assistant-action.js.map +1 -1
  68. package/dist/foundations/assistant-action/services/assistant-action.service.d.ts +2 -0
  69. package/dist/foundations/assistant-action/services/assistant-action.service.d.ts.map +1 -1
  70. package/dist/foundations/assistant-action/services/assistant-action.service.js +1 -0
  71. package/dist/foundations/assistant-action/services/assistant-action.service.js.map +1 -1
  72. package/dist/mcp/mcp.module.d.ts +4 -0
  73. package/dist/mcp/mcp.module.d.ts.map +1 -1
  74. package/dist/mcp/mcp.module.js +6 -1
  75. package/dist/mcp/mcp.module.js.map +1 -1
  76. package/dist/mcp/services/mcp.entity.write.service.d.ts +16 -1
  77. package/dist/mcp/services/mcp.entity.write.service.d.ts.map +1 -1
  78. package/dist/mcp/services/mcp.entity.write.service.js +25 -6
  79. package/dist/mcp/services/mcp.entity.write.service.js.map +1 -1
  80. package/dist/mcp/services/mcp.promoted.tools.factory.d.ts +21 -4
  81. package/dist/mcp/services/mcp.promoted.tools.factory.d.ts.map +1 -1
  82. package/dist/mcp/services/mcp.promoted.tools.factory.js +28 -5
  83. package/dist/mcp/services/mcp.promoted.tools.factory.js.map +1 -1
  84. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writable.rules.js","sourceRoot":"","sources":["../../../../src/agents/graph/services/writable.rules.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,MAAqB,EAAsB,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAAvF,QAAA,UAAU,cAA6E;AAEpG,qFAAqF;AAC9E,MAAM,kBAAkB,GAAG,CAAC,MAAqB,EAAY,EAAE,CACpE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AADnF,QAAA,kBAAkB,sBACiE;AAEzF,MAAM,eAAe,GAAG,CAAC,MAAqB,EAAE,IAAY,EAAW,EAAE,CAC9E,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AADpD,QAAA,eAAe,mBACqC;AAYjE,8EAA8E;AACvE,MAAM,qBAAqB,GAAG,CACnC,MAAqB,EACrB,YAAiC,EACH,EAAE;IAChC,IAAI,YAAY,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,YAAY,CAAC,WAAW;QAAE,OAAO,aAAa,CAAC;IACnD,IAAI,YAAY,CAAC,IAAI,KAAK,IAAA,kBAAU,EAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7D,IAAI,MAAM,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC;IAClH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AATW,QAAA,qBAAqB,yBAShC;AAEK,MAAM,sBAAsB,GAAG,CAAC,MAAqB,EAAE,YAAiC,EAAW,EAAE,CAC1G,IAAA,6BAAqB,EAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;AAD1C,QAAA,sBAAsB,0BACoB;AAEvD,wFAAwF;AACjF,MAAM,yBAAyB,GAAG,CAAC,MAAqB,EAAY,EAAE,CAC3E,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,IAAA,8BAAsB,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AADpG,QAAA,yBAAyB,6BAC2E"}
@@ -1 +1 @@
1
- {"version":3,"file":"describe-entity.tool.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/tools/describe-entity.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1E,QAAA,MAAM,WAAW;;iBAEf,CAAC;AAEH,OAAO,EAAE,WAAW,IAAI,yBAAyB,EAAE,CAAC;AAEpD,qBACa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAEjD,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,qBAAqB;IASpE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA8BjH"}
1
+ {"version":3,"file":"describe-entity.tool.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/tools/describe-entity.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE1E,QAAA,MAAM,WAAW;;iBAEf,CAAC;AAEH,OAAO,EAAE,WAAW,IAAI,yBAAyB,EAAE,CAAC;AAEpD,qBACa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAEjD,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,qBAAqB;IASpE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA4CjH"}
@@ -13,6 +13,7 @@ exports.DescribeEntityTool = exports.describeEntityInputSchema = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const tools_1 = require("@langchain/core/tools");
15
15
  const zod_1 = require("zod");
16
+ const writable_rules_1 = require("../services/writable.rules");
16
17
  const tool_factory_1 = require("./tool.factory");
17
18
  const inputSchema = zod_1.z.object({
18
19
  type: zod_1.z.string().describe("Entity type name from the graph map."),
@@ -35,6 +36,13 @@ let DescribeEntityTool = class DescribeEntityTool {
35
36
  const entity = this.factory.resolveEntity(input.type, ctx);
36
37
  if ("error" in entity)
37
38
  return entity;
39
+ // The write tools refuse anything not marked writable here, so the model
40
+ // must be TOLD which fields and relationships it may set — without this
41
+ // it fills system-generated fields and read-only traversals, and the
42
+ // refusal only lands after the user has approved the action. Omitted
43
+ // entirely for a read-only type: a host that opts nothing in sees the
44
+ // response it has always seen.
45
+ const writable = entity.writable === true;
38
46
  return {
39
47
  type: entity.type,
40
48
  description: entity.description,
@@ -45,13 +53,20 @@ let DescribeEntityTool = class DescribeEntityTool {
45
53
  filterable: f.filterable,
46
54
  sortable: f.sortable,
47
55
  ...(f.kind ? { kind: f.kind } : {}),
56
+ // A richtext field is READ as markdown (the tool layer renders the
57
+ // stored BlockNote document), so it must be WRITTEN as markdown too —
58
+ // the write tools convert it back. Without saying so the model has no
59
+ // way to know the two directions match.
60
+ ...(f.kind?.type === "richtext" ? { format: "markdown" } : {}),
48
61
  ...(entity.list ? { stage: entity.list.includes(f.name) ? "list" : "detail" } : {}),
62
+ ...(writable ? { writable: (0, writable_rules_1.isFieldWritable)(entity, f.name) } : {}),
49
63
  })),
50
64
  relationships: entity.relationships.map((r) => ({
51
65
  name: r.name,
52
66
  targetType: r.targetType,
53
67
  cardinality: r.cardinality,
54
68
  description: r.description,
69
+ ...(writable ? { writable: (0, writable_rules_1.isRelationshipWritable)(entity, r) } : {}),
55
70
  })),
56
71
  ...(entity.bridge ? { bridge: { materialiseTo: [...entity.bridge.materialiseTo] } } : {}),
57
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"describe-entity.tool.js","sourceRoot":"","sources":["../../../../src/agents/graph/tools/describe-entity.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,iDAA8D;AAC9D,6BAAwB;AACxB,iDAA0E;AAE1E,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CAClE,CAAC,CAAC;AAEqB,gDAAyB;AAG1C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAA6B,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAErD,KAAK,CAAC,GAAgB,EAAE,QAA0B;QAChD,OAAO,IAAI,6BAAqB,CAAC;YAC/B,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,oEAAoE;YACjF,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;SAC/E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkC,EAAE,GAAgB,EAAE,QAA0B;QAC3F,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CACzB,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAClC,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,OAAO,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YACrC,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAChC,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpF,CAAC,CAAC;gBACH,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9C,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;iBAC3B,CAAC,CAAC;gBACH,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1F,CAAC;QACJ,CAAC,EACD,QAAQ,CACT,CAAC;IACJ,CAAC;CACF,CAAA;AA1CY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAE2B,0BAAW;GADtC,kBAAkB,CA0C9B"}
1
+ {"version":3,"file":"describe-entity.tool.js","sourceRoot":"","sources":["../../../../src/agents/graph/tools/describe-entity.tool.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ export { defaultOperatorSystemPrompt } from "./operator/prompts/operator.system.
53
53
  export { GRAPH_NODE_SYSTEM_PROMPT_BASE, renderGraphNodeSystemPrompt, describeDomainLayer, } from "./graph/prompts/graph.node.system.prompt";
54
54
  export { OperatorCheckpointerService, OPERATOR_DEFAULT_APPROVAL_TTL_DAYS, } from "./operator/services/operator.checkpointer.service";
55
55
  export { OPERATOR_TOOLS } from "./operator/interfaces/operator.tool.interface";
56
- export type { OperatorChunkCitation, OperatorRetrievalContext, OperatorToolCallRecord, OperatorToolContribution, OperatorToolDefinition, } from "./operator/interfaces/operator.tool.interface";
56
+ export type { OperatorActionProposal, OperatorChunkCitation, OperatorRetrievalContext, OperatorToolCallRecord, OperatorToolContribution, OperatorToolDefinition, ProposalRef, } from "./operator/interfaces/operator.tool.interface";
57
57
  export { SearchDocumentsTool } from "./operator/tools/search-documents.tool";
58
58
  export { SearchCommunitiesTool } from "./operator/tools/search-communities.tool";
59
59
  export { OperatorTestActionTool } from "./operator/tools/operator-test-action.tool";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,14 @@ export declare const OperatorContext: import("@langchain/langgraph").AnnotationR
62
62
  output: number;
63
63
  }>, unknown>;
64
64
  finalAnswer: import("@langchain/langgraph").BaseChannel<OperatorFinalAnswer, OperatorFinalAnswer | import("@langchain/langgraph").OverwriteValue<OperatorFinalAnswer>, unknown>;
65
+ /**
66
+ * Error the approved destructive tool of the last tools pass returned instead
67
+ * of writing. Last-write-wins, and written on EVERY pass that executed an
68
+ * approved destructive call — a successful one writes `null`, so a failure can
69
+ * never linger and mark a later action failed. The assistant layer reads it to
70
+ * transition the AssistantAction to `failed` instead of `executed`.
71
+ */
72
+ actionError: import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
65
73
  }>;
66
74
  /**
67
75
  * The attribution channels added to the root above, as OPTIONAL properties.
@@ -77,6 +85,14 @@ export declare const OperatorContext: import("@langchain/langgraph").AnnotationR
77
85
  * `scopeType` predate it and are left exactly as consumers already see them.
78
86
  */
79
87
  type OperatorAttributionState = Pick<CallerAttributionState, "scopeLabel" | "assistantId">;
88
+ /**
89
+ * Every channel added after the published state shape froze, declared OPTIONAL
90
+ * for the reason above: a consumer's existing state literal must keep compiling.
91
+ * `actionError` joins the attribution pair here for exactly that reason.
92
+ */
93
+ type OperatorLateState = OperatorAttributionState & {
94
+ actionError?: string | null;
95
+ };
80
96
  /**
81
97
  * The un-widened shape LangGraph itself hands to a node callback — every
82
98
  * channel required, `StateGraph`'s own view of the state.
@@ -89,6 +105,6 @@ type OperatorAttributionState = Pick<CallerAttributionState, "scopeLabel" | "ass
89
105
  * {@link OperatorContextState} widens.
90
106
  */
91
107
  export type OperatorGraphState = typeof OperatorContext.State;
92
- export type OperatorContextState = Omit<OperatorGraphState, keyof OperatorAttributionState> & OperatorAttributionState;
108
+ export type OperatorContextState = Omit<OperatorGraphState, keyof OperatorLateState> & OperatorLateState;
93
109
  export {};
94
110
  //# sourceMappingURL=operator.context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operator.context.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/contexts/operator.context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AACtF,MAAM,MAAM,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE1E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;IAO1B,iFAAiF;;IAEjF,iFAAiF;;IAEjF,8EAA8E;;IAE9E;;;;OAIG;;;;;;;;;;;;eAOyB,MAAM;gBAAU,MAAM;;eAAtB,MAAM;gBAAU,MAAM;;eAAtB,MAAM;gBAAU,MAAM;;;EAKlD,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,KAAK,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;AAE3F;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,eAAe,CAAC,KAAK,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,wBAAwB,CAAC,GAAG,wBAAwB,CAAC"}
1
+ {"version":3,"file":"operator.context.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/contexts/operator.context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AACtF,MAAM,MAAM,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE1E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;IAO1B,iFAAiF;;IAEjF,iFAAiF;;IAEjF,8EAA8E;;IAE9E;;;;OAIG;;;;;;;;;;;;eAOyB,MAAM;gBAAU,MAAM;;eAAtB,MAAM;gBAAU,MAAM;;eAAtB,MAAM;gBAAU,MAAM;;;IAKlD;;;;;;OAMG;;EAEH,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,KAAK,wBAAwB,GAAG,IAAI,CAAC,sBAAsB,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;AAE3F;;;;GAIG;AACH,KAAK,iBAAiB,GAAG,wBAAwB,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEpF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,eAAe,CAAC,KAAK,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,iBAAiB,CAAC,GAAG,iBAAiB,CAAC"}
@@ -31,5 +31,13 @@ exports.OperatorContext = langgraph_1.Annotation.Root({
31
31
  default: () => ({ input: 0, output: 0 }),
32
32
  }),
33
33
  finalAnswer: (0, langgraph_1.Annotation)({ reducer: (_, b) => b, default: () => null }),
34
+ /**
35
+ * Error the approved destructive tool of the last tools pass returned instead
36
+ * of writing. Last-write-wins, and written on EVERY pass that executed an
37
+ * approved destructive call — a successful one writes `null`, so a failure can
38
+ * never linger and mark a later action failed. The assistant layer reads it to
39
+ * transition the AssistantAction to `failed` instead of `executed`.
40
+ */
41
+ actionError: (0, langgraph_1.Annotation)({ reducer: (_, b) => b, default: () => null }),
34
42
  });
35
43
  //# sourceMappingURL=operator.context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operator.context.js","sourceRoot":"","sources":["../../../../src/agents/operator/contexts/operator.context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operator.context.js","sourceRoot":"","sources":["../../../../src/agents/operator/contexts/operator.context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"operator.controller.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/controllers/operator.controller.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,EAAoB,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAIhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAC;AAI1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAG7F;;;;;;;;GAQG;AACH,qBAEa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB;;;;;OAKG;IACmC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAXzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAG3C,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,cAAc;IACxC;;;;;OAKG;IACoD,eAAe,CAAC,EAAE,wBAAwB;IAGnG;;;;;;;OAOG;IAEG,MAAM,CAAS,IAAI,EAAE,gBAAgB,EAAS,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IA6C5F;;;;;OAKG;IAEG,MAAM,CACY,WAAW,EAAE,MAAM,EACjC,IAAI,EAAE,kBAAkB,EACzB,GAAG,EAAE,oBAAoB,GAC/B,OAAO,CAAC,GAAG,CAAC;CAsChB"}
1
+ {"version":3,"file":"operator.controller.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/controllers/operator.controller.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,EAAoB,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAIhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAC;AAI1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAG7F;;;;;;;;GAQG;AACH,qBAEa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB;;;;;OAKG;IACmC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IAXzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAG3C,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,cAAc;IACxC;;;;;OAKG;IACoD,eAAe,CAAC,EAAE,wBAAwB;IAGnG;;;;;;;OAOG;IAEG,MAAM,CAAS,IAAI,EAAE,gBAAgB,EAAS,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAqD5F;;;;;OAKG;IAEG,MAAM,CACY,WAAW,EAAE,MAAM,EACjC,IAAI,EAAE,kBAAkB,EACzB,GAAG,EAAE,oBAAoB,GAC/B,OAAO,CAAC,GAAG,CAAC;CAsChB"}
@@ -16,6 +16,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.OperatorController = void 0;
17
17
  const common_1 = require("@nestjs/common");
18
18
  const jwt_auth_guard_1 = require("../../../common/guards/jwt.auth.guard");
19
+ const bound_content_1 = require("../../../common/helpers/bound-content");
19
20
  const credit_gate_1 = require("../../../common/helpers/credit-gate");
20
21
  const tokens_1 = require("../../../common/tokens");
21
22
  const jsonapi_service_1 = require("../../../core/jsonapi/services/jsonapi.service");
@@ -60,7 +61,14 @@ let OperatorController = OperatorController_1 = class OperatorController {
60
61
  if (this.creditValidator && req.user?.companyId)
61
62
  await this.creditValidator.validateCredits({ companyId: req.user.companyId });
62
63
  const { content, title, howToMode, limitToHowToId } = body.data.attributes;
63
- this.logger.log(`create: userId=${req.user.userId} companyId=${req.user.companyId} firstMessageLen=${content.length}`);
64
+ // Same resolution as `AssistantController.create` the two engines share
65
+ // `AssistantPostDto`, so an operator thread must bind to the scope the
66
+ // client sent (`relationships.content`) exactly as a responder thread does.
67
+ // Without it the thread had no BOUND_TO edge and every record the write
68
+ // tools created landed outside the caller's campaign.
69
+ const boundContent = (0, bound_content_1.resolveBoundContent)(body.data.relationships?.content?.data);
70
+ this.logger.log(`create: userId=${req.user.userId} companyId=${req.user.companyId} firstMessageLen=${content.length}` +
71
+ (boundContent ? ` boundTo=${boundContent.type}/${boundContent.id}` : ""));
64
72
  const { assistant, userMessage, assistantMessage, toolCalls, action } = await this.assistants.createWithFirstMessageOperator({
65
73
  companyId: req.user.companyId,
66
74
  userId: req.user.userId,
@@ -68,6 +76,7 @@ let OperatorController = OperatorController_1 = class OperatorController {
68
76
  title,
69
77
  howToMode,
70
78
  limitToHowToId,
79
+ boundContent,
71
80
  });
72
81
  const document = (await this.jsonApi.buildSingle(assistant_1.AssistantDescriptor.model, assistant));
73
82
  const messagesDoc = (await this.jsonApi.buildList(assistant_message_1.AssistantMessageDescriptor.model, [
@@ -1 +1 @@
1
- {"version":3,"file":"operator.controller.js","sourceRoot":"","sources":["../../../../src/agents/operator/controllers/operator.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAWwB;AACxB,0EAAqE;AACrE,qEAAqE;AAErE,mDAAoF;AACpF,oFAAgF;AAChF,sGAA4G;AAC5G,yGAA+G;AAC/G,mHAA8G;AAC9G,mGAA8F;AAC9F,+FAA0F;AAC1F,iFAAwF;AACxF,2FAAuF;AACvF,0GAAgG;AAChG,iGAA6F;AAC7F,6DAAyD;AAEzD;;;;;;;;GAQG;AAGI,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAG7B,YACmB,UAA4B,EAC5B,OAAuB,EAOF,eAA2D;QARhF,eAAU,GAAV,UAAU,CAAkB;QAC5B,YAAO,GAAP,OAAO,CAAgB;QAOe,oBAAe,GAAf,eAAe,CAA2B;QAXlF,WAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IAY3D,CAAC;IAEJ;;;;;;;OAOG;IAEG,AAAN,KAAK,CAAC,MAAM,CAAS,IAAsB,EAAS,GAAyB;QAC3E,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,MAAM,IAAA,4BAAc,EAAC,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5G,MAAM,IAAI,0BAAiB,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS;YAC7C,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAEhF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,kBAAkB,GAAG,CAAC,IAAI,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,oBAAoB,OAAO,CAAC,MAAM,EAAE,CACtG,CAAC;QACF,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,GACnE,MAAM,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC;YACnD,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;YAC7B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;YACvB,YAAY,EAAE,OAAO;YACrB,KAAK;YACL,SAAS;YACT,cAAc;SACf,CAAC,CAAC;QACL,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,+BAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAwB,CAAC;QAC/G,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,8CAA0B,CAAC,KAAK,EAAE;YAClF,WAAW;YACX,gBAAgB;SACjB,CAAC,CAAwB,CAAC;QAC3B,MAAM,SAAS,GAAc;YAC3B,GAAG,CAAG,WAAmB,CAAC,IAA8B,IAAI,EAAE,CAAC;YAC/D,GAAG,CAAG,WAAmB,CAAC,QAAkC,IAAI,EAAE,CAAC;SACpE,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,4CAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAGzF,CAAC;YACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,QAAQ,CAAC,QAAQ,GAAG,IAAA,oCAAa,EAAC,QAAQ,CAAC,QAAiC,EAAE,SAAS,EAAE;YACvF,IAAI,EAAE,8BAAa,CAAC,IAAI;YACxB,EAAE,EAAE,SAAS,CAAC,EAAE;SACjB,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QACxD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IAEG,AAAN,KAAK,CAAC,MAAM,CACY,WAAmB,EACjC,IAAwB,EACzB,GAAyB;QAEhC,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,MAAM,IAAA,4BAAc,EAAC,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5G,MAAM,IAAI,0BAAiB,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS;YAC7C,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAEhF,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,WAAW,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,eAAe,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7G,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;YACvG,WAAW;YACX,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;YAC7B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;YACvB,UAAU,EAAE,OAAO;YACnB,SAAS;YACT,cAAc;SACf,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,8CAA0B,CAAC,KAAK,EAAE;YAC/E,WAAW;YACX,gBAAgB;SACjB,CAAC,CAAwB,CAAC;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,4CAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAGzF,CAAC;YACF,wDAAwD;YACxD,wEAAwE;YACxE,QAAQ,CAAC,QAAQ,GAAG,IAAA,oCAAa,EAAC,QAAQ,CAAC,QAAiC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC9F,IAAI,EAAE,8BAAa,CAAC,IAAI;gBACxB,EAAE,EAAE,WAAW;aAChB,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QACxD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AAtHY,gDAAkB;AAwBvB;IADL,IAAA,aAAI,EAAC,4BAAY,CAAC,QAAQ,CAAC;IACd,WAAA,IAAA,aAAI,GAAE,CAAA;IAA0B,WAAA,IAAA,YAAG,GAAE,CAAA;;qCAAxB,qCAAgB;;gDA2C1C;AASK;IADL,IAAA,aAAI,EAAC,GAAG,4BAAY,CAAC,QAAQ,iBAAiB,6CAAoB,CAAC,QAAQ,EAAE,CAAC;IAE5E,WAAA,IAAA,cAAK,EAAC,aAAa,CAAC,CAAA;IACpB,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;6CADQ,yCAAkB;;gDAuCjC;6BArHU,kBAAkB;IAF9B,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,mBAAU,GAAE;IAaR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,yBAAgB,CAAC,CAAA;qCARR,oCAAgB;QACnB,gCAAc;GAL/B,kBAAkB,CAsH9B"}
1
+ {"version":3,"file":"operator.controller.js","sourceRoot":"","sources":["../../../../src/agents/operator/controllers/operator.controller.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,59 @@ import { DynamicStructuredTool } from "@langchain/core/tools";
2
2
  import { MessageInterface } from "../../../common/interfaces/message.interface";
3
3
  import { DataLimits } from "../../../common/types/data.limits";
4
4
  import { ToolCallRecord, UserContext } from "../../graph/tools/tool.factory";
5
+ /**
6
+ * One referenced record, resolved to a display name.
7
+ *
8
+ * `id` exists for React keys only and must NEVER be rendered: the approval card
9
+ * shows names, never ids.
10
+ */
11
+ export interface ProposalRef {
12
+ id: string;
13
+ /** JSON:API type, e.g. "npcs". */
14
+ type: string;
15
+ /** Display name; `"(not found)"` when the id is unknown or out of scope. */
16
+ label: string;
17
+ }
18
+ /**
19
+ * Name-resolved description of a pending write, stored on the AssistantAction as
20
+ * a JSON string and rendered by the approval card. `toolArgs` stays the raw
21
+ * audit copy and is no longer used for display.
22
+ */
23
+ export type OperatorActionProposal = {
24
+ /** JSON:API type of the record being written. */
25
+ type: string;
26
+ /** update / delete / link / unlink: the target record's name. Absent on create. */
27
+ target?: ProposalRef;
28
+ /** create / update: the field values being written (raw, as the tool received them). */
29
+ attributes?: Record<string, unknown>;
30
+ /** create: related records, resolved. The scope relationship (e.g. campaign) is STRIPPED here. */
31
+ relationships?: Record<string, ProposalRef[]>;
32
+ /** link / unlink: the relationship name. */
33
+ relationship?: string;
34
+ /** link / unlink: the resolved targets. */
35
+ targets?: ProposalRef[];
36
+ };
5
37
  export interface OperatorToolDefinition {
6
38
  tool: DynamicStructuredTool;
7
39
  destructive: boolean;
8
40
  /** Human-readable line shown in the approval card. Required when destructive. */
9
- summarise?: (args: Record<string, unknown>) => string;
41
+ summarise?: (args: Record<string, unknown>) => string | Promise<string>;
42
+ /**
43
+ * Structured, name-resolved rendering of the pending write for the approval
44
+ * card — an `OperatorActionProposal`. Optional: a tool without it (or one that
45
+ * fails) simply produces no proposal and never blocks the approval.
46
+ */
47
+ present?: (args: Record<string, unknown>) => Promise<Record<string, unknown> | undefined>;
48
+ /**
49
+ * Pre-flight check, run BEFORE the approval interrupt. A non-null string is
50
+ * returned to the model as a tool error and no approval is requested; `null`
51
+ * lets the approval go ahead.
52
+ *
53
+ * Without it an invalid call is only refused when it executes — AFTER the user
54
+ * approved it — so the user approves an action and nothing is written. It must
55
+ * run the same checks the execution path runs and write nothing itself.
56
+ */
57
+ validate?: (args: Record<string, unknown>) => Promise<string | null>;
10
58
  }
11
59
  /** Chunk citation pushed into the per-turn recorder by retrieval tools. */
12
60
  export interface OperatorChunkCitation {
@@ -1 +1 @@
1
- {"version":3,"file":"operator.tool.interface.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/interfaces/operator.tool.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,iFAAiF;IACjF,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CACvD;AAED,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,SAAS,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,oEAAoE;AACpE,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,kGAAkG;IAClG,KAAK,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,sBAAsB,CAAC;CAC1F;AAED,6FAA6F;AAC7F,eAAO,MAAM,cAAc,eAA2B,CAAC"}
1
+ {"version":3,"file":"operator.tool.interface.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/interfaces/operator.tool.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AAIH,MAAM,MAAM,sBAAsB,GAAG;IACnC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,kGAAkG;IAClG,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9C,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,iFAAiF;IACjF,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1F;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACtE;AAED,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,SAAS,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,oEAAoE;AACpE,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,kGAAkG;IAClG,KAAK,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,sBAAsB,CAAC;CAC1F;AAED,6FAA6F;AAC7F,eAAO,MAAM,cAAc,eAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"operator.tool.interface.js","sourceRoot":"","sources":["../../../../src/agents/operator/interfaces/operator.tool.interface.ts"],"names":[],"mappings":";;;AAqDA,6FAA6F;AAChF,QAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"operator.tool.interface.js","sourceRoot":"","sources":["../../../../src/agents/operator/interfaces/operator.tool.interface.ts"],"names":[],"mappings":";;;AA0GA,6FAA6F;AAChF,QAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const defaultOperatorSystemPrompt = "# Role\n\nYou are an operator agent for a company ERP. You answer the user's request by calling tools in a loop: inspect the data, walk relationships, and \u2014 when the user asks for it \u2014 perform actions.\n\nEvery fact in your final reply must come from a tool call that returned it. Do not invent field names, relationship names, entity types, or record contents.\n\n## How to work\n\n- Call tools step by step. A typical request needs several tool calls; keep going until you have what you need, then reply without calling further tools.\n- If a tool returns an error message (for example \"Tool error: ...\" or \"{ error: ... }\"), read it, correct your input, and try again. Never stop on the first error and never apologise to the user for a tool error.\n- When an error tells you how to recover, recover immediately in the same run: if it suggests a corrected value (a \"suggestion\" field, or \"Retry this call with ...\"), retry the same tool with that value; if it says another tool must be called first (for example describe_entity), call that tool and then retry the original call. Never relay a tool error to the user as a question, and never ask permission to continue \u2014 you already have it.\n- Some tools perform real actions (they create, change, or delete data). When you call one of these, the system pauses and asks the user to approve the action before it runs. If the user denies it, you will see \"Action denied by the user.\" \u2014 accept the decision, do not retry the action, and wrap up by telling the user what was and was not done.\n- Never ask the user a clarifying question mid-run; make the most reasonable assumption, state it in your reply, and proceed.\n\n## Output\n\nWhen you are done, reply in plain prose with the answer or a summary of the actions performed. Quote real field values from tool results.\n\n- If the tool results do not contain the information needed to answer, say so plainly (\"I could not find ...\") instead of guessing.\n- Never claim to have performed, created, updated, or deleted anything unless a tool result in this conversation confirms that exact action. You have no ability to act outside your tools.\n";
1
+ export declare const defaultOperatorSystemPrompt = "# Role\n\nYou are an operator agent for a company ERP. You answer the user's request by calling tools in a loop: inspect the data, walk relationships, and \u2014 when the user asks for it \u2014 perform actions.\n\nEvery fact in your final reply must come from a tool call that returned it. Do not invent field names, relationship names, entity types, or record contents.\n\n## How to work\n\n- Call tools step by step. A typical request needs several tool calls; keep going until you have what you need, then reply without calling further tools.\n- If a tool returns an error message (for example \"Tool error: ...\" or \"{ error: ... }\"), read it, correct your input, and try again. Never stop on the first error and never apologise to the user for a tool error.\n- When an error tells you how to recover, recover immediately in the same run: if it suggests a corrected value (a \"suggestion\" field, or \"Retry this call with ...\"), retry the same tool with that value; if it says another tool must be called first (for example describe_entity), call that tool and then retry the original call. Never relay a tool error to the user as a question, and never ask permission to continue \u2014 you already have it.\n- Some tools perform real actions (they create, change, or delete data). When you call one of these, the system pauses and asks the user to approve the action before it runs. If the user denies it, you will see \"Action denied by the user.\" \u2014 accept the decision, do not retry the action, and wrap up by telling the user what was and was not done.\n- Never ask the user a clarifying question mid-run; make the most reasonable assumption, state it in your reply, and proceed.\n\n## Output\n\nWhen you are done, reply in plain prose with the answer or a summary of the actions performed. Quote real field values from tool results.\n\n- Never show a record id to the user. Ids are for tool calls only. Refer to every record by its name (or title), and when you need to disambiguate two records with the same name, describe them by another field they differ on (a location, a date, a status), never by id.\n\n- If the tool results do not contain the information needed to answer, say so plainly (\"I could not find ...\") instead of guessing.\n- Never claim to have performed, created, updated, or deleted anything unless a tool result in this conversation confirms that exact action. You have no ability to act outside your tools.\n";
2
2
  //# sourceMappingURL=operator.system.prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operator.system.prompt.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/prompts/operator.system.prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,yoEAoBvC,CAAC"}
1
+ {"version":3,"file":"operator.system.prompt.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/prompts/operator.system.prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,05EAsBvC,CAAC"}
@@ -19,6 +19,8 @@ Every fact in your final reply must come from a tool call that returned it. Do n
19
19
 
20
20
  When you are done, reply in plain prose with the answer or a summary of the actions performed. Quote real field values from tool results.
21
21
 
22
+ - Never show a record id to the user. Ids are for tool calls only. Refer to every record by its name (or title), and when you need to disambiguate two records with the same name, describe them by another field they differ on (a location, a date, a status), never by id.
23
+
22
24
  - If the tool results do not contain the information needed to answer, say so plainly ("I could not find ...") instead of guessing.
23
25
  - Never claim to have performed, created, updated, or deleted anything unless a tool result in this conversation confirms that exact action. You have no ability to act outside your tools.
24
26
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"operator.system.prompt.js","sourceRoot":"","sources":["../../../../src/agents/operator/prompts/operator.system.prompt.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;CAoB1C,CAAC"}
1
+ {"version":3,"file":"operator.system.prompt.js","sourceRoot":"","sources":["../../../../src/agents/operator/prompts/operator.system.prompt.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB1C,CAAC"}
@@ -21,11 +21,30 @@ export type OperatorRunResult = {
21
21
  input: number;
22
22
  output: number;
23
23
  };
24
+ /**
25
+ * Error the approved destructive tool returned instead of writing. Present
26
+ * only when an approved action failed: the caller must record the action as
27
+ * failed rather than executed.
28
+ */
29
+ actionError?: string;
24
30
  } | {
25
31
  kind: "pending_approval";
26
32
  toolName: string;
27
33
  toolArgs: Record<string, unknown>;
28
34
  summary: string;
35
+ /** Name-resolved rendering of the pending write; absent when it could not be built. */
36
+ proposal?: Record<string, unknown>;
37
+ /**
38
+ * Error the approved destructive tool returned instead of writing. Present
39
+ * only when an approved action failed: the caller must record the action as
40
+ * failed rather than executed.
41
+ *
42
+ * A resumed run can pause again on a SECOND approval — the model reacts to
43
+ * the refusal by proposing another destructive call — so the outcome of the
44
+ * action that was just approved has to travel on this variant too. Reading
45
+ * it only off `completed` silently marks a failed action `executed`.
46
+ */
47
+ actionError?: string;
29
48
  };
30
49
  /**
31
50
  * OperatorService - the operator agent graph (START → agent ⇄ tools → finalise → END).
@@ -94,6 +113,19 @@ export declare class OperatorService {
94
113
  seedContexts?: AssistantSeedContext[];
95
114
  }): Promise<OperatorRunResult>;
96
115
  private compileGraph;
116
+ /**
117
+ * Runs a destructive tool's `validate` hook, if it has one. A hook that throws
118
+ * is treated as a rejection: the execution path already turns a throw into a
119
+ * `Tool error: ...` ToolMessage, and refusing the call is the safe direction —
120
+ * the alternative is asking the user to approve a call nothing could check.
121
+ */
122
+ private validateDestructive;
123
+ /**
124
+ * The error a write tool returned instead of writing — write tools report a
125
+ * refusal as `{ error }` (JSON-stringified), never as a throw, so the string
126
+ * has to be parsed back.
127
+ */
128
+ private extractActionError;
97
129
  /** Entity references derived deterministically from the tool-call recorder (never from the LLM). */
98
130
  private collectReferences;
99
131
  /** Chunk citations recorded by retrieval tool wrappers into the recorder. */
@@ -1 +1 @@
1
- {"version":3,"file":"operator.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/services/operator.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operator.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/operator/services/operator.service.ts"],"names":[],"mappings":"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"}
@@ -197,6 +197,8 @@ let OperatorService = OperatorService_1 = class OperatorService {
197
197
  const ordered = [...calls.filter((c) => isDestructive(c.name)), ...calls.filter((c) => !isDestructive(c.name))];
198
198
  const toolMessages = [];
199
199
  let destructiveHandled = false;
200
+ /** Set on every pass that EXECUTED an approved destructive call: the error, or null. */
201
+ let actionOutcome;
200
202
  for (const [index, call] of ordered.entries()) {
201
203
  const callId = call.id ?? `call_${index}`;
202
204
  const definition = toolMap.get(call.name);
@@ -212,11 +214,35 @@ let OperatorService = OperatorService_1 = class OperatorService {
212
214
  }));
213
215
  continue;
214
216
  }
217
+ const toolArgs = (call.args ?? {});
218
+ // Pre-flight the call BEFORE freezing the run. An invalid call that is
219
+ // only refused at execution time is refused AFTER the user approved
220
+ // it: they approve an action and nothing is written. A rejection here
221
+ // becomes a recoverable tool error instead, and — because
222
+ // `destructiveHandled` stays false — the model can still get one
223
+ // corrected action approved in this same pass.
224
+ const rejection = await this.validateDestructive(definition, call.name, toolArgs);
225
+ if (rejection) {
226
+ toolMessages.push(new messages_1.ToolMessage({ content: `Tool error: ${rejection}`, tool_call_id: callId }));
227
+ continue;
228
+ }
215
229
  destructiveHandled = true;
230
+ // A proposal resolves referenced record NAMES, so it touches the
231
+ // database. It is presentation only: if it fails the approval must
232
+ // still be raised, with the summary alone.
233
+ let proposal;
234
+ try {
235
+ proposal = await definition.present?.(toolArgs);
236
+ }
237
+ catch (err) {
238
+ const message = err instanceof Error ? err.message : String(err);
239
+ this.logger.warn(`operator tool "${call.name}" could not build an approval proposal: ${message}`);
240
+ }
216
241
  const payload = {
217
242
  toolName: call.name,
218
- toolArgs: (call.args ?? {}),
219
- summary: definition.summarise?.(call.args ?? {}) ?? `${call.name}(${JSON.stringify(call.args ?? {})})`,
243
+ toolArgs,
244
+ summary: (await definition.summarise?.(toolArgs)) ?? `${call.name}(${JSON.stringify(toolArgs)})`,
245
+ ...(proposal ? { proposal } : {}),
220
246
  };
221
247
  const decision = (0, langgraph_1.interrupt)(payload);
222
248
  if (!decision?.approved) {
@@ -226,6 +252,13 @@ let OperatorService = OperatorService_1 = class OperatorService {
226
252
  }
227
253
  try {
228
254
  const result = await definition.tool.invoke(call.args ?? {});
255
+ // Only an APPROVED destructive call reaches this line (a denied one
256
+ // continued above), so its outcome is the action's outcome. A write
257
+ // tool reports a refusal as a returned `{ error }`, not a throw, so
258
+ // without reading it back the AssistantAction would be marked
259
+ // executed while nothing was written.
260
+ if (definition.destructive)
261
+ actionOutcome = { error: this.extractActionError(result) };
229
262
  toolMessages.push(new messages_1.ToolMessage({
230
263
  content: typeof result === "string" ? result : JSON.stringify(result),
231
264
  tool_call_id: callId,
@@ -234,6 +267,8 @@ let OperatorService = OperatorService_1 = class OperatorService {
234
267
  catch (err) {
235
268
  const message = err instanceof Error ? err.message : String(err);
236
269
  this.logger.warn(`operator tool "${call.name}" failed: ${message}`);
270
+ if (definition.destructive)
271
+ actionOutcome = { error: message };
237
272
  toolMessages.push(new messages_1.ToolMessage({ content: `Tool error: ${message}`, tool_call_id: callId }));
238
273
  }
239
274
  }
@@ -246,6 +281,9 @@ let OperatorService = OperatorService_1 = class OperatorService {
246
281
  toolCalls: newRecords,
247
282
  references: this.collectReferences(newRecords),
248
283
  citations: this.collectCitations(newRecords),
284
+ // Written only by a pass that executed an approved destructive call, so
285
+ // a read-only pass never clears (nor invents) an action's outcome.
286
+ ...(actionOutcome ? { actionError: actionOutcome.error } : {}),
249
287
  };
250
288
  })
251
289
  .addNode("finalise", async (state) => {
@@ -299,6 +337,44 @@ let OperatorService = OperatorService_1 = class OperatorService {
299
337
  .addEdge("finalise", langgraph_1.END);
300
338
  return workflow.compile({ checkpointer: saver });
301
339
  }
340
+ /**
341
+ * Runs a destructive tool's `validate` hook, if it has one. A hook that throws
342
+ * is treated as a rejection: the execution path already turns a throw into a
343
+ * `Tool error: ...` ToolMessage, and refusing the call is the safe direction —
344
+ * the alternative is asking the user to approve a call nothing could check.
345
+ */
346
+ async validateDestructive(definition, name, args) {
347
+ if (!definition.validate)
348
+ return null;
349
+ try {
350
+ return await definition.validate(args);
351
+ }
352
+ catch (err) {
353
+ const message = err instanceof Error ? err.message : String(err);
354
+ this.logger.warn(`operator tool "${name}" could not be validated: ${message}`);
355
+ return message;
356
+ }
357
+ }
358
+ /**
359
+ * The error a write tool returned instead of writing — write tools report a
360
+ * refusal as `{ error }` (JSON-stringified), never as a throw, so the string
361
+ * has to be parsed back.
362
+ */
363
+ extractActionError(result) {
364
+ let parsed = result;
365
+ if (typeof result === "string") {
366
+ try {
367
+ parsed = JSON.parse(result);
368
+ }
369
+ catch {
370
+ return null;
371
+ }
372
+ }
373
+ if (!parsed || typeof parsed !== "object")
374
+ return null;
375
+ const error = parsed.error;
376
+ return typeof error === "string" && error.length ? error : null;
377
+ }
302
378
  /** Entity references derived deterministically from the tool-call recorder (never from the LLM). */
303
379
  collectReferences(records) {
304
380
  const references = [];
@@ -364,6 +440,10 @@ let OperatorService = OperatorService_1 = class OperatorService {
364
440
  toolName: payload.toolName ?? "",
365
441
  toolArgs: payload.toolArgs ?? {},
366
442
  summary: payload.summary ?? "",
443
+ ...(payload.proposal ? { proposal: payload.proposal } : {}),
444
+ // The run paused again, but an action approved EARLIER in this same resume
445
+ // may already have failed; without this its status would stay `executed`.
446
+ ...(finalState.actionError ? { actionError: finalState.actionError } : {}),
367
447
  };
368
448
  }
369
449
  return {
@@ -374,6 +454,7 @@ let OperatorService = OperatorService_1 = class OperatorService {
374
454
  citations: finalState.citations ?? [],
375
455
  toolCalls: finalState.toolCalls ?? [],
376
456
  tokens: finalState.tokens ?? { input: 0, output: 0 },
457
+ ...(finalState.actionError ? { actionError: finalState.actionError } : {}),
377
458
  };
378
459
  }
379
460
  };