@carlonicora/nestjs-neo4jsonapi 4.2.0 → 4.3.1

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
@@ -1 +1 @@
1
- {"version":3,"file":"graph.module.d.ts","sourceRoot":"","sources":["../../../src/agents/graph/graph.module.ts"],"names":[],"mappings":"AAqBA;;;;;;;GAOG;AACH,qBA2Ca,WAAW;CAAG"}
1
+ {"version":3,"file":"graph.module.d.ts","sourceRoot":"","sources":["../../../src/agents/graph/graph.module.ts"],"names":[],"mappings":"AAqBA;;;;;;;GAOG;AACH,qBAiDa,WAAW;CAAG"}
@@ -65,6 +65,12 @@ exports.GraphModule = GraphModule = __decorate([
65
65
  { provide: scope_predicate_source_1.SCOPE_PREDICATE_SOURCE, useExisting: scope_predicate_service_1.ScopePredicateService },
66
66
  ],
67
67
  exports: [
68
+ // Re-exported: the operator's write tools (OperatorModule, which imports
69
+ // GraphModule) need BlockNoteService to store markdown in a rich-text field
70
+ // as a BlockNote document. A module that exports a consumer of a non-global
71
+ // provider must re-export that provider's module, or the consumer cannot be
72
+ // constructed in the importing module's injector.
73
+ blocknote_module_1.BlockNoteModule,
68
74
  descriptor_source_1.GraphDescriptorRegistry,
69
75
  graph_catalog_service_1.GraphCatalogService,
70
76
  user_modules_repository_1.UserModulesRepository,
@@ -1 +1 @@
1
- {"version":3,"file":"graph.module.js","sourceRoot":"","sources":["../../../src/agents/graph/graph.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+DAA+D;AAC/D,2CAAgD;AAChD,6FAA0F;AAC1F,4EAAwE;AACxE,0DAAsD;AACtD,oFAA+E;AAC/E,wEAAmE;AACnE,0EAAqE;AACrE,oEAAuE;AACvE,4EAAuE;AACvE,kEAAwE;AACxE,4EAAuE;AACvE,wDAAoD;AACpD,gFAA2E;AAC3E,uEAAkE;AAClE,+DAA0D;AAC1D,qEAAgE;AAChE,uEAAkE;AAClE,uDAAmD;AACnD,yDAAqD;AAErD;;;;;;;GAOG;AA4CI,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IA3CvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAS,EAAE,kCAAe,CAAC;QACrC,SAAS,EAAE;YACT,2CAAuB;YACvB;gBACE,OAAO,EAAE,2CAAmB;gBAC5B,UAAU,EAAE,CAAC,GAA4B,EAAE,EAAE,CAAC,IAAI,2CAAmB,CAAC,GAAG,CAAC;gBAC1E,MAAM,EAAE,CAAC,2CAAuB,CAAC;aAClC;YACD,0BAAW;YACX,uCAAiB;YACjB,yCAAkB;YAClB,yCAAkB;YAClB,iCAAc;YACd,4BAAY;YACZ,+CAAqB;YACrB,uCAAiB;YACjB,yCAAkB;YAClB,wBAAU;YACV,+CAAqB;YACrB,4CAAyB;YACzB,2CAAmB;YACnB,EAAE,OAAO,EAAE,+CAAsB,EAAE,WAAW,EAAE,+CAAqB,EAAE;SACxE;QACD,OAAO,EAAE;YACP,2CAAuB;YACvB,2CAAmB;YACnB,+CAAqB;YACrB,0BAAW;YACX,uCAAiB;YACjB,yCAAkB;YAClB,yCAAkB;YAClB,iCAAc;YACd,4BAAY;YACZ,yCAAkB;YAClB,wBAAU;YACV,+CAAqB;YACrB,4CAAyB;YACzB,2CAAmB;YACnB,+CAAsB;SACvB;KACF,CAAC;GACW,WAAW,CAAG"}
1
+ {"version":3,"file":"graph.module.js","sourceRoot":"","sources":["../../../src/agents/graph/graph.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+DAA+D;AAC/D,2CAAgD;AAChD,6FAA0F;AAC1F,4EAAwE;AACxE,0DAAsD;AACtD,oFAA+E;AAC/E,wEAAmE;AACnE,0EAAqE;AACrE,oEAAuE;AACvE,4EAAuE;AACvE,kEAAwE;AACxE,4EAAuE;AACvE,wDAAoD;AACpD,gFAA2E;AAC3E,uEAAkE;AAClE,+DAA0D;AAC1D,qEAAgE;AAChE,uEAAkE;AAClE,uDAAmD;AACnD,yDAAqD;AAErD;;;;;;;GAOG;AAkDI,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAjDvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAS,EAAE,kCAAe,CAAC;QACrC,SAAS,EAAE;YACT,2CAAuB;YACvB;gBACE,OAAO,EAAE,2CAAmB;gBAC5B,UAAU,EAAE,CAAC,GAA4B,EAAE,EAAE,CAAC,IAAI,2CAAmB,CAAC,GAAG,CAAC;gBAC1E,MAAM,EAAE,CAAC,2CAAuB,CAAC;aAClC;YACD,0BAAW;YACX,uCAAiB;YACjB,yCAAkB;YAClB,yCAAkB;YAClB,iCAAc;YACd,4BAAY;YACZ,+CAAqB;YACrB,uCAAiB;YACjB,yCAAkB;YAClB,wBAAU;YACV,+CAAqB;YACrB,4CAAyB;YACzB,2CAAmB;YACnB,EAAE,OAAO,EAAE,+CAAsB,EAAE,WAAW,EAAE,+CAAqB,EAAE;SACxE;QACD,OAAO,EAAE;YACP,yEAAyE;YACzE,4EAA4E;YAC5E,4EAA4E;YAC5E,4EAA4E;YAC5E,kDAAkD;YAClD,kCAAe;YACf,2CAAuB;YACvB,2CAAmB;YACnB,+CAAqB;YACrB,0BAAW;YACX,uCAAiB;YACjB,yCAAkB;YAClB,yCAAkB;YAClB,iCAAc;YACd,4BAAY;YACZ,yCAAkB;YAClB,wBAAU;YACV,+CAAqB;YACrB,4CAAyB;YACzB,2CAAmB;YACnB,+CAAsB;SACvB;KACF,CAAC;GACW,WAAW,CAAG"}
@@ -18,6 +18,16 @@ export interface CatalogField {
18
18
  export interface CatalogRelationship {
19
19
  /** Traversal name exposed to the LLM. */
20
20
  name: string;
21
+ /**
22
+ * Key this relationship takes inside a JSON:API `relationships` object: the
23
+ * descriptor's `dtoKey`, or `name` when the descriptor declares none.
24
+ *
25
+ * Writes go through `AbstractService.createFromDTO` / `patchFromDTO`, which look
26
+ * a relationship up by `dtoKey` (`relationshipDef.dtoKey || relationshipKey`).
27
+ * A payload keyed by `name` is silently DROPPED whenever the two differ — the
28
+ * edge is never written and nothing reports a failure.
29
+ */
30
+ dtoKey: string;
21
31
  sourceType: string;
22
32
  targetType: string;
23
33
  cardinality: "one" | "many";
@@ -42,6 +52,13 @@ export interface CatalogRelationship {
42
52
  export interface CatalogScopeHop {
43
53
  /** Descriptor relationship key on the SOURCE type of this hop. */
44
54
  key: string;
55
+ /**
56
+ * Key this hop takes inside a JSON:API `relationships` object: the descriptor's
57
+ * `dtoKey`, or `key` when it declares none. Same reason as
58
+ * {@link CatalogRelationship.dtoKey} — the write tools pin a new record to the
59
+ * run's scope root through the DTO path.
60
+ */
61
+ dtoKey: string;
45
62
  /** Neo4j relationship type, e.g. "PART_OF". */
46
63
  cypherLabel: string;
47
64
  /** Direction from the SOURCE node's perspective. */
@@ -78,8 +95,36 @@ export interface CatalogEntity {
78
95
  };
79
96
  /** Compiled scope chain. Absent when the descriptor declares no chat.scope. */
80
97
  scope?: CatalogScope;
81
- /** Mirrors chat.writable. */
98
+ /**
99
+ * The descriptor relationship that records the owning user — the one the host
100
+ * application's own clients fill with the current user on create. Compiled from
101
+ * the FULL descriptor relationship set (it is deliberately undescribed, so it
102
+ * never appears in `relationships`), and absent when the descriptor declares no
103
+ * such relationship or when it is filled from CLS through a `contextKey`.
104
+ *
105
+ * The generic write tools must set it themselves: a host read query that
106
+ * REQUIRES the owner edge returns nothing for a record created without it, so
107
+ * the write succeeds and the read-back after it throws `not found`.
108
+ */
109
+ owner?: {
110
+ key: string;
111
+ dtoKey: string;
112
+ type: string;
113
+ };
114
+ /** Mirrors chat.writable — true for BOTH the legacy `true` and the object form. */
82
115
  writable?: boolean;
116
+ /**
117
+ * Field names the write tools may set, from the object form of `chat.writable`.
118
+ * `undefined` is the legacy `chat.writable: true`: every described field.
119
+ */
120
+ writableFields?: string[];
121
+ /**
122
+ * Relationship keys the write tools may set, from the object form of
123
+ * `chat.writable`. An object form that omits `relationships` compiles to `[]`
124
+ * (none). `undefined` is the legacy `chat.writable: true`: every forward,
125
+ * non-polymorphic relationship except the scope one.
126
+ */
127
+ writableRelationships?: string[];
83
128
  /** Mirrors chat.list — stage-1 field names for list-returning tools. */
84
129
  list?: string[];
85
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graph.catalog.interface.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/interfaces/graph.catalog.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,eAAe,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAC;IACnB;;;yFAGqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,eAAe,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,2FAA2F;IAC3F,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,MAAM,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB"}
1
+ {"version":3,"file":"graph.catalog.interface.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/interfaces/graph.catalog.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,eAAe,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAC;IACnB;;;yFAGqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,eAAe,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,2FAA2F;IAC3F,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,MAAM,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB"}
@@ -1,6 +1,6 @@
1
1
  import { OnApplicationBootstrap } from "@nestjs/common";
2
2
  import { CatalogEntity } from "../interfaces/graph.catalog.interface";
3
- import { FieldKind } from "../../../common/interfaces/entity.schema.interface";
3
+ import { ChatWritableConfig, FieldKind } from "../../../common/interfaces/entity.schema.interface";
4
4
  /**
5
5
  * Provided by the library bootstrap layer. Must return the full list of registered
6
6
  * entity descriptors (including their `moduleId` — the stable UUID of the `(Module)`
@@ -34,13 +34,17 @@ export interface DescriptorSource {
34
34
  name: string;
35
35
  description: string;
36
36
  };
37
+ /** JSON:API `relationships` key override; the descriptor key when absent. */
38
+ dtoKey?: string;
39
+ /** Set when the value is filled from CLS instead of the DTO. */
40
+ contextKey?: string;
37
41
  }>;
38
42
  chat?: {
39
43
  summary?: (d: any) => string;
40
44
  textSearchFields?: string[];
41
45
  list?: string[];
42
46
  scope?: string;
43
- writable?: boolean;
47
+ writable?: boolean | ChatWritableConfig;
44
48
  /** Compile a polymorphic chat-only "related" traversal (RELATES_TO, both directions). */
45
49
  related?: boolean;
46
50
  };
@@ -58,6 +62,14 @@ export declare class GraphCatalogService implements OnApplicationBootstrap {
58
62
  constructor(source: DescriptorSource);
59
63
  onApplicationBootstrap(): void;
60
64
  buildCatalog(): void;
65
+ /**
66
+ * A `chat.writable` object form names exactly what the assistant may write, so
67
+ * a typo in it silently narrows the assistant instead of failing — the model is
68
+ * simply told a field is not writable and gives up. Every listed name is
69
+ * therefore checked at boot, in the same style as the writable/scope check
70
+ * above: a misconfiguration is a boot failure, never a runtime surprise.
71
+ */
72
+ private validateWritableAllowLists;
61
73
  /**
62
74
  * Resolve `chat.scope` into a Cypher-ready chain of hops ending at a
63
75
  * `chat.scope === "self"` root. Runs once, at catalog build time: a chain
@@ -1 +1 @@
1
- {"version":3,"file":"graph.catalog.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.catalog.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EACL,aAAa,EAKd,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAe/E;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,IAAI,KAAK,CAAC;QACf,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,SAAS,CAAA;SAAE,CAAC,CAAC;QACjF,aAAa,EAAE,MAAM,CACnB,MAAM,EACN;YACE,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAA;aAAE,CAAC;YAC7D,SAAS,EAAE,IAAI,GAAG,KAAK,CAAC;YACxB,YAAY,EAAE,MAAM,CAAC;YACrB,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;YAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,OAAO,CAAC,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,WAAW,EAAE,MAAM,CAAA;aAAE,CAAC;SACjD,CACF,CAAC;QACF,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;YAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,yFAAyF;YACzF,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,CAAC;QACF,MAAM,CAAC,EAAE;YAAE,aAAa,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KACtC,CAAC,CAAC;CACJ;AASD,qBACa,mBAAoB,YAAW,sBAAsB;IAMpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAoC;IACpD,2EAA2E;IAC3E,OAAO,CAAC,kBAAkB,CAA6B;gBAE1B,MAAM,EAAE,gBAAgB;IAErD,sBAAsB;IAItB,YAAY,IAAI,IAAI;IA2KpB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA+CpB,OAAO,CAAC,YAAY;IA0CpB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;IAqB1C,OAAO,CAAC,iBAAiB;IAuBzB;;;;;;OAMG;IACH,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;IAYhD;;;OAGG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAUrD,yBAAyB,IAAI,aAAa,EAAE;IAQ5C;;;;;;;;OAQG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,aAAa,GAAG,IAAI;CAM7E"}
1
+ {"version":3,"file":"graph.catalog.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.catalog.service.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ var GraphCatalogService_1;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.GraphCatalogService = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
+ const user_meta_1 = require("../../../foundations/user/entities/user.meta");
16
+ const writable_rules_1 = require("./writable.rules");
15
17
  const FILTERABLE_TYPES = new Set(["string", "number", "boolean", "date", "datetime"]);
16
18
  const SORTABLE_TYPES = new Set(["string", "number", "date", "datetime"]);
17
19
  function renderFieldKindMarker(kind) {
@@ -22,6 +24,11 @@ function renderFieldKindMarker(kind) {
22
24
  const factor = minor === 0 ? "1" : `10^${minor}`;
23
25
  return `, money [integer stored in minor units (${minor} decimals); divide by ${factor} to display]`;
24
26
  }
27
+ if (kind.type === "richtext") {
28
+ // Consistent with describe_entity's `format: "markdown"` and the write
29
+ // tools' RICHTEXT_HINT: read as markdown, written as markdown.
30
+ return ", richtext [markdown; read and written as markdown, stored as a document]";
31
+ }
25
32
  return "";
26
33
  }
27
34
  let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
@@ -67,6 +74,7 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
67
74
  continue;
68
75
  relationships.push({
69
76
  name,
77
+ dtoKey: rel.dtoKey ?? name,
70
78
  sourceType: d.model.type,
71
79
  targetType: rel.model.type,
72
80
  cardinality: rel.cardinality,
@@ -76,9 +84,14 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
76
84
  isReverse: false,
77
85
  });
78
86
  }
87
+ // The owner edge is deliberately UNDESCRIBED (the assistant has no reason to
88
+ // read or write it), so the loop above never sees it: this lookup scans the
89
+ // full descriptor relationship set instead.
90
+ const ownerEntry = Object.entries(d.relationships).find(([, rel]) => rel.model.nodeName === user_meta_1.ownerMeta.nodeName && !rel.contextKey);
79
91
  if (d.chat?.related) {
80
92
  relationships.push({
81
93
  name: "related",
94
+ dtoKey: "related",
82
95
  sourceType: d.model.type,
83
96
  targetType: "*",
84
97
  cardinality: "many",
@@ -89,6 +102,12 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
89
102
  polymorphic: true,
90
103
  });
91
104
  }
105
+ // `writable` stays a plain boolean for BOTH forms — every caller that only
106
+ // asks "may this type be written at all?" keeps working unchanged. The
107
+ // object form additionally compiles its allow-lists; an omitted
108
+ // `relationships` means none, so it compiles to `[]`, never to undefined
109
+ // (which is the legacy "all of them").
110
+ const writableConfig = d.chat?.writable && typeof d.chat.writable === "object" ? d.chat.writable : undefined;
92
111
  const entity = {
93
112
  type: d.model.type,
94
113
  moduleId: d.moduleId,
@@ -99,8 +118,23 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
99
118
  textSearchFields: d.chat?.textSearchFields,
100
119
  nodeName: d.model.nodeName,
101
120
  labelName: d.model.labelName,
121
+ ...(ownerEntry
122
+ ? {
123
+ owner: {
124
+ key: ownerEntry[0],
125
+ dtoKey: ownerEntry[1].dtoKey ?? ownerEntry[0],
126
+ type: ownerEntry[1].model.type,
127
+ },
128
+ }
129
+ : {}),
102
130
  ...(d.bridge ? { bridge: { materialiseTo: [...d.bridge.materialiseTo] } } : {}),
103
131
  ...(d.chat?.writable ? { writable: true } : {}),
132
+ ...(writableConfig
133
+ ? {
134
+ writableFields: [...writableConfig.fields],
135
+ writableRelationships: [...(writableConfig.relationships ?? [])],
136
+ }
137
+ : {}),
104
138
  ...(d.chat?.list ? { list: [...d.chat.list] } : {}),
105
139
  };
106
140
  this.entities.set(d.model.type, entity);
@@ -135,6 +169,9 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
135
169
  }
136
170
  target.relationships.push({
137
171
  name: rel.reverse.name,
172
+ // A reverse relationship has no edge on this side and is never written,
173
+ // so its DTO key is simply its own name.
174
+ dtoKey: rel.reverse.name,
138
175
  sourceType: rel.model.type,
139
176
  targetType: d.model.type,
140
177
  cardinality: rel.cardinality,
@@ -146,6 +183,11 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
146
183
  });
147
184
  }
148
185
  }
186
+ // Pass 2b: validate the object form of chat.writable. Runs AFTER pass 2 so a
187
+ // listed relationship is checked against the FULL relationship set, reverse
188
+ // ones included — naming a reverse relationship is exactly the mistake this
189
+ // has to catch, and before pass 2 it would look like an unknown name.
190
+ this.validateWritableAllowLists();
149
191
  // Pass 3: render per-moduleId text fragments.
150
192
  const byModuleId = new Map();
151
193
  for (const e of this.entities.values()) {
@@ -184,6 +226,38 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
184
226
  }
185
227
  this.logger.log(`Graph catalog built: ${this.entities.size} entities, ${byModuleId.size} modules: ${JSON.stringify(Array.from(this.entities.values()).map((e) => ({ type: e.type, moduleId: e.moduleId, isBridge: !!e.bridge })))}`);
186
228
  }
229
+ /**
230
+ * A `chat.writable` object form names exactly what the assistant may write, so
231
+ * a typo in it silently narrows the assistant instead of failing — the model is
232
+ * simply told a field is not writable and gives up. Every listed name is
233
+ * therefore checked at boot, in the same style as the writable/scope check
234
+ * above: a misconfiguration is a boot failure, never a runtime surprise.
235
+ */
236
+ validateWritableAllowLists() {
237
+ for (const entity of this.entities.values()) {
238
+ if (!entity.writableFields)
239
+ continue;
240
+ const described = new Set(entity.fields.map((field) => field.name));
241
+ for (const name of entity.writableFields) {
242
+ if (!described.has(name)) {
243
+ throw new Error(`Entity "${entity.type}" declares chat.writable field "${name}", which is not a described field on it.`);
244
+ }
245
+ }
246
+ const scopeKey = (0, writable_rules_1.scopeKeyOf)(entity);
247
+ for (const name of entity.writableRelationships ?? []) {
248
+ const relationship = entity.relationships.find((candidate) => candidate.name === name);
249
+ if (!relationship) {
250
+ throw new Error(`Entity "${entity.type}" declares chat.writable relationship "${name}", which is not a catalogued relationship on it.`);
251
+ }
252
+ if (relationship.isReverse || relationship.polymorphic) {
253
+ throw new Error(`Entity "${entity.type}" declares chat.writable relationship "${name}", which is read-only and cannot be written.`);
254
+ }
255
+ if (name === scopeKey) {
256
+ throw new Error(`Entity "${entity.type}" declares chat.writable relationship "${name}", which is the scope relationship and cannot be changed.`);
257
+ }
258
+ }
259
+ }
260
+ }
187
261
  /**
188
262
  * Resolve `chat.scope` into a Cypher-ready chain of hops ending at a
189
263
  * `chat.scope === "self"` root. Runs once, at catalog build time: a chain
@@ -219,6 +293,7 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
219
293
  seen.add(targetType);
220
294
  path.push({
221
295
  key: current.scopeKey,
296
+ dtoKey: rel.dtoKey ?? current.scopeKey,
222
297
  cypherLabel: rel.relationship,
223
298
  cypherDirection: rel.direction,
224
299
  targetLabel: rel.model.labelName,
@@ -1 +1 @@
1
- {"version":3,"file":"graph.catalog.service.js","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.catalog.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.catalog.service.js","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.catalog.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { CatalogEntity } from "../interfaces/graph.catalog.interface";
2
+ import type { BlockNoteService } from "../../../core/blocknote/services/blocknote.service";
3
+ /**
4
+ * The one sentence every write tool's description carries, so the model knows
5
+ * what a `kind: { type: "richtext" }` field expects. `describe_entity` says the
6
+ * same thing per field (`format: "markdown"`), and the catalogue's inline kind
7
+ * marker says it again in the system prompt — all three from this contract.
8
+ */
9
+ export declare const RICHTEXT_HINT = "Rich-text fields (kind richtext) take markdown; it is stored as a document.";
10
+ /**
11
+ * A BlockNote-backed field is stored as a JSON string in its own string
12
+ * attribute — the convention every host-app entity already uses (e.g.
13
+ * `Npc.description`: `JSON.stringify` out, `JSON.parse` back). Detect that
14
+ * shape without trusting it: plain prose must never be mistaken for a
15
+ * document, so this requires an array whose first entry is an object with a
16
+ * string `type`, which is the minimal shape of a BlockNote block.
17
+ *
18
+ * Returns the parsed node array, or `null` when the string is not a serialised
19
+ * BlockNote document. The single implementation: the write path uses it to
20
+ * decide whether a value still needs converting, and the assistant uses it to
21
+ * decide whether a user message came from a rich composer.
22
+ */
23
+ export declare function parseBlockNoteDocument(raw: string): unknown[] | null;
24
+ /**
25
+ * The value to STORE in a `kind: { type: "richtext" }` field.
26
+ *
27
+ * The read side already renders these fields to markdown for the model
28
+ * (`ToolFieldFormatterService.renderRichtext`), so the model writes markdown
29
+ * back. Storing that prose verbatim leaves a string the frontend then tries to
30
+ * `JSON.parse` into BlockNote blocks, and the record cannot be rendered at all
31
+ * ("Cannot read properties of undefined (reading 'dehydrate')"). So markdown
32
+ * is converted to a serialised BlockNote document here, symmetrically with the
33
+ * read.
34
+ *
35
+ * - a string that already IS a serialised BlockNote document: unchanged (a
36
+ * client-shaped payload must survive a round trip untouched);
37
+ * - any other non-empty string: treated as markdown and converted;
38
+ * - `null` / `undefined` / `""` and every non-string: unchanged, so clearing a
39
+ * field and non-text values behave exactly as before.
40
+ */
41
+ export declare function toStoredRichtext(blockNote: BlockNoteService, value: unknown): Promise<unknown>;
42
+ /**
43
+ * Applies {@link toStoredRichtext} to every field the entity's catalog marks
44
+ * `kind: { type: "richtext" }`, returning a NEW map — the caller's own payload
45
+ * (and therefore the approval card, which renders the model's markdown as
46
+ * text) is never mutated.
47
+ *
48
+ * `blockNote` is optional so unit tests can exercise a write path without the
49
+ * converter; without it every field passes through unchanged.
50
+ */
51
+ export declare function convertRichtextFields(blockNote: BlockNoteService | undefined, entity: CatalogEntity, fields: Record<string, unknown>): Promise<Record<string, unknown>>;
52
+ //# sourceMappingURL=richtext.write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"richtext.write.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/richtext.write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AAE3F;;;;;GAKG;AACH,eAAO,MAAM,aAAa,gFAAgF,CAAC;AAE3G;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,CAYpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAKpG;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,gBAAgB,GAAG,SAAS,EACvC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAWlC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RICHTEXT_HINT = void 0;
4
+ exports.parseBlockNoteDocument = parseBlockNoteDocument;
5
+ exports.toStoredRichtext = toStoredRichtext;
6
+ exports.convertRichtextFields = convertRichtextFields;
7
+ /**
8
+ * The one sentence every write tool's description carries, so the model knows
9
+ * what a `kind: { type: "richtext" }` field expects. `describe_entity` says the
10
+ * same thing per field (`format: "markdown"`), and the catalogue's inline kind
11
+ * marker says it again in the system prompt — all three from this contract.
12
+ */
13
+ exports.RICHTEXT_HINT = "Rich-text fields (kind richtext) take markdown; it is stored as a document.";
14
+ /**
15
+ * A BlockNote-backed field is stored as a JSON string in its own string
16
+ * attribute — the convention every host-app entity already uses (e.g.
17
+ * `Npc.description`: `JSON.stringify` out, `JSON.parse` back). Detect that
18
+ * shape without trusting it: plain prose must never be mistaken for a
19
+ * document, so this requires an array whose first entry is an object with a
20
+ * string `type`, which is the minimal shape of a BlockNote block.
21
+ *
22
+ * Returns the parsed node array, or `null` when the string is not a serialised
23
+ * BlockNote document. The single implementation: the write path uses it to
24
+ * decide whether a value still needs converting, and the assistant uses it to
25
+ * decide whether a user message came from a rich composer.
26
+ */
27
+ function parseBlockNoteDocument(raw) {
28
+ const trimmed = raw.trimStart();
29
+ if (!trimmed.startsWith("["))
30
+ return null;
31
+ try {
32
+ const parsed = JSON.parse(trimmed);
33
+ if (!Array.isArray(parsed) || parsed.length === 0)
34
+ return null;
35
+ const first = parsed[0];
36
+ if (!first || typeof first !== "object" || typeof first.type !== "string")
37
+ return null;
38
+ return parsed;
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ /**
45
+ * The value to STORE in a `kind: { type: "richtext" }` field.
46
+ *
47
+ * The read side already renders these fields to markdown for the model
48
+ * (`ToolFieldFormatterService.renderRichtext`), so the model writes markdown
49
+ * back. Storing that prose verbatim leaves a string the frontend then tries to
50
+ * `JSON.parse` into BlockNote blocks, and the record cannot be rendered at all
51
+ * ("Cannot read properties of undefined (reading 'dehydrate')"). So markdown
52
+ * is converted to a serialised BlockNote document here, symmetrically with the
53
+ * read.
54
+ *
55
+ * - a string that already IS a serialised BlockNote document: unchanged (a
56
+ * client-shaped payload must survive a round trip untouched);
57
+ * - any other non-empty string: treated as markdown and converted;
58
+ * - `null` / `undefined` / `""` and every non-string: unchanged, so clearing a
59
+ * field and non-text values behave exactly as before.
60
+ */
61
+ async function toStoredRichtext(blockNote, value) {
62
+ if (typeof value !== "string")
63
+ return value;
64
+ if (value.trim() === "")
65
+ return value;
66
+ if (parseBlockNoteDocument(value))
67
+ return value;
68
+ return JSON.stringify(await blockNote.createFromMarkdown(value));
69
+ }
70
+ /**
71
+ * Applies {@link toStoredRichtext} to every field the entity's catalog marks
72
+ * `kind: { type: "richtext" }`, returning a NEW map — the caller's own payload
73
+ * (and therefore the approval card, which renders the model's markdown as
74
+ * text) is never mutated.
75
+ *
76
+ * `blockNote` is optional so unit tests can exercise a write path without the
77
+ * converter; without it every field passes through unchanged.
78
+ */
79
+ async function convertRichtextFields(blockNote, entity, fields) {
80
+ const converted = { ...fields };
81
+ if (!blockNote)
82
+ return converted;
83
+ const richtext = new Set(entity.fields.filter((field) => field.kind?.type === "richtext").map((field) => field.name));
84
+ if (!richtext.size)
85
+ return converted;
86
+ for (const name of Object.keys(converted)) {
87
+ if (richtext.has(name))
88
+ converted[name] = await toStoredRichtext(blockNote, converted[name]);
89
+ }
90
+ return converted;
91
+ }
92
+ //# sourceMappingURL=richtext.write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"richtext.write.js","sourceRoot":"","sources":["../../../../src/agents/graph/services/richtext.write.ts"],"names":[],"mappings":";;;AAwBA,wDAYC;AAmBD,4CAKC;AAWD,sDAeC;AAnFD;;;;;GAKG;AACU,QAAA,aAAa,GAAG,6EAA6E,CAAC;AAE3G;;;;;;;;;;;;GAYG;AACH,SAAgB,sBAAsB,CAAC,GAAW;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAA8B,CAAC;QACrD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACI,KAAK,UAAU,gBAAgB,CAAC,SAA2B,EAAE,KAAc;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,sBAAsB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,qBAAqB,CACzC,SAAuC,EACvC,MAAqB,EACrB,MAA+B;IAE/B,MAAM,SAAS,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACzD,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtH,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { CatalogEntity, CatalogRelationship } from "../interfaces/graph.catalog.interface";
2
+ /**
3
+ * One place decides what a `chat.writable` entity exposes to the assistant, so
4
+ * `describe_entity` (which TELLS the model what it may write) and the operator's
5
+ * write tools (which REFUSE everything else) can never drift apart.
6
+ *
7
+ * Two declaration forms are compiled into the catalog:
8
+ * - legacy `chat.writable: true` — `writableFields` / `writableRelationships` are
9
+ * `undefined`, meaning "every described field, every forward non-polymorphic
10
+ * relationship except the scope one";
11
+ * - `ChatWritableConfig` — the allow-lists, with an omitted `relationships`
12
+ * compiled to `[]` (none).
13
+ */
14
+ /**
15
+ * The relationship that pins a record to the run's scope root. Writable types are
16
+ * exactly one hop from their root — the catalog rejects deeper ones at boot — so
17
+ * the first hop's key is that relationship.
18
+ */
19
+ export declare const scopeKeyOf: (entity: CatalogEntity) => string | undefined;
20
+ /** Every field name the assistant may write on this entity, in declaration order. */
21
+ export declare const writableFieldNames: (entity: CatalogEntity) => string[];
22
+ export declare const isFieldWritable: (entity: CatalogEntity, name: string) => boolean;
23
+ /**
24
+ * Why the generic write path must never touch a relationship:
25
+ * - `reverse`: serialisation-only, with no edge on this side;
26
+ * - `polymorphic`: a read-only chat traversal carrying no single target type
27
+ * (`targetType` is the `"*"` placeholder, which no scope check can honour);
28
+ * - `scope`: re-pointing it would move the record into another scope root;
29
+ * - `notListed`: the descriptor's `chat.writable.relationships` omits it.
30
+ */
31
+ export type RelationshipRejection = "reverse" | "polymorphic" | "scope" | "notListed";
32
+ /** The reason this relationship may not be written, or `null` when it may. */
33
+ export declare const relationshipRejection: (entity: CatalogEntity, relationship: CatalogRelationship) => RelationshipRejection | null;
34
+ export declare const isRelationshipWritable: (entity: CatalogEntity, relationship: CatalogRelationship) => boolean;
35
+ /** Every relationship name the assistant may write on this entity, in catalog order. */
36
+ export declare const writableRelationshipNames: (entity: CatalogEntity) => string[];
37
+ //# sourceMappingURL=writable.rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writable.rules.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/writable.rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE3F;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,aAAa,KAAG,MAAM,GAAG,SAAuC,CAAC;AAEpG,qFAAqF;AACrF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,aAAa,KAAG,MAAM,EAC8B,CAAC;AAEhG,eAAO,MAAM,eAAe,GAAI,QAAQ,aAAa,EAAE,MAAM,MAAM,KAAG,OACN,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC;AAEtF,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,GAChC,QAAQ,aAAa,EACrB,cAAc,mBAAmB,KAChC,qBAAqB,GAAG,IAM1B,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,aAAa,EAAE,cAAc,mBAAmB,KAAG,OAC5C,CAAC;AAEvD,wFAAwF;AACxF,eAAO,MAAM,yBAAyB,GAAI,QAAQ,aAAa,KAAG,MAAM,EACwC,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writableRelationshipNames = exports.isRelationshipWritable = exports.relationshipRejection = exports.isFieldWritable = exports.writableFieldNames = exports.scopeKeyOf = void 0;
4
+ /**
5
+ * One place decides what a `chat.writable` entity exposes to the assistant, so
6
+ * `describe_entity` (which TELLS the model what it may write) and the operator's
7
+ * write tools (which REFUSE everything else) can never drift apart.
8
+ *
9
+ * Two declaration forms are compiled into the catalog:
10
+ * - legacy `chat.writable: true` — `writableFields` / `writableRelationships` are
11
+ * `undefined`, meaning "every described field, every forward non-polymorphic
12
+ * relationship except the scope one";
13
+ * - `ChatWritableConfig` — the allow-lists, with an omitted `relationships`
14
+ * compiled to `[]` (none).
15
+ */
16
+ /**
17
+ * The relationship that pins a record to the run's scope root. Writable types are
18
+ * exactly one hop from their root — the catalog rejects deeper ones at boot — so
19
+ * the first hop's key is that relationship.
20
+ */
21
+ const scopeKeyOf = (entity) => entity.scope?.path[0]?.key;
22
+ exports.scopeKeyOf = scopeKeyOf;
23
+ /** Every field name the assistant may write on this entity, in declaration order. */
24
+ const writableFieldNames = (entity) => entity.writableFields ? [...entity.writableFields] : entity.fields.map((field) => field.name);
25
+ exports.writableFieldNames = writableFieldNames;
26
+ const isFieldWritable = (entity, name) => !entity.writableFields || entity.writableFields.includes(name);
27
+ exports.isFieldWritable = isFieldWritable;
28
+ /** The reason this relationship may not be written, or `null` when it may. */
29
+ const relationshipRejection = (entity, relationship) => {
30
+ if (relationship.isReverse)
31
+ return "reverse";
32
+ if (relationship.polymorphic)
33
+ return "polymorphic";
34
+ if (relationship.name === (0, exports.scopeKeyOf)(entity))
35
+ return "scope";
36
+ if (entity.writableRelationships && !entity.writableRelationships.includes(relationship.name))
37
+ return "notListed";
38
+ return null;
39
+ };
40
+ exports.relationshipRejection = relationshipRejection;
41
+ const isRelationshipWritable = (entity, relationship) => (0, exports.relationshipRejection)(entity, relationship) === null;
42
+ exports.isRelationshipWritable = isRelationshipWritable;
43
+ /** Every relationship name the assistant may write on this entity, in catalog order. */
44
+ const writableRelationshipNames = (entity) => entity.relationships.filter((relationship) => (0, exports.isRelationshipWritable)(entity, relationship)).map((r) => r.name);
45
+ exports.writableRelationshipNames = writableRelationshipNames;
46
+ //# sourceMappingURL=writable.rules.js.map