@carlonicora/nestjs-neo4jsonapi 4.18.0 → 5.0.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 (77) hide show
  1. package/dist/agents/graph/prompts/graph.node.system.prompt.d.ts +1 -1
  2. package/dist/agents/graph/prompts/graph.node.system.prompt.d.ts.map +1 -1
  3. package/dist/agents/graph/prompts/graph.node.system.prompt.js +2 -1
  4. package/dist/agents/graph/prompts/graph.node.system.prompt.js.map +1 -1
  5. package/dist/agents/graph/repositories/user-modules.repository.d.ts +5 -1
  6. package/dist/agents/graph/repositories/user-modules.repository.d.ts.map +1 -1
  7. package/dist/agents/graph/repositories/user-modules.repository.js +8 -4
  8. package/dist/agents/graph/repositories/user-modules.repository.js.map +1 -1
  9. package/dist/agents/graph/services/descriptor.source.d.ts.map +1 -1
  10. package/dist/agents/graph/services/descriptor.source.js +2 -0
  11. package/dist/agents/graph/services/descriptor.source.js.map +1 -1
  12. package/dist/agents/graph/services/graph.catalog.service.d.ts +5 -1
  13. package/dist/agents/graph/services/graph.catalog.service.d.ts.map +1 -1
  14. package/dist/agents/graph/services/graph.catalog.service.js +25 -1
  15. package/dist/agents/graph/services/graph.catalog.service.js.map +1 -1
  16. package/dist/agents/graph/services/graph.search.service.d.ts +26 -2
  17. package/dist/agents/graph/services/graph.search.service.d.ts.map +1 -1
  18. package/dist/agents/graph/services/graph.search.service.js +62 -7
  19. package/dist/agents/graph/services/graph.search.service.js.map +1 -1
  20. package/dist/agents/graph/tools/describe-entity.tool.d.ts.map +1 -1
  21. package/dist/agents/graph/tools/describe-entity.tool.js +20 -0
  22. package/dist/agents/graph/tools/describe-entity.tool.js.map +1 -1
  23. package/dist/agents/graph/tools/search-entities.tool.d.ts.map +1 -1
  24. package/dist/agents/graph/tools/search-entities.tool.js +19 -13
  25. package/dist/agents/graph/tools/search-entities.tool.js.map +1 -1
  26. package/dist/agents/graph/tools/traverse.tool.d.ts +51 -4
  27. package/dist/agents/graph/tools/traverse.tool.d.ts.map +1 -1
  28. package/dist/agents/graph/tools/traverse.tool.js +216 -45
  29. package/dist/agents/graph/tools/traverse.tool.js.map +1 -1
  30. package/dist/common/helpers/define-entity.d.ts.map +1 -1
  31. package/dist/common/helpers/define-entity.js +14 -1
  32. package/dist/common/helpers/define-entity.js.map +1 -1
  33. package/dist/common/interfaces/entity.schema.interface.d.ts +19 -0
  34. package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
  35. package/dist/common/interfaces/external.entity.source.interface.d.ts +18 -0
  36. package/dist/common/interfaces/external.entity.source.interface.d.ts.map +1 -1
  37. package/dist/common/interfaces/external.entity.source.interface.js.map +1 -1
  38. package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
  39. package/dist/core/neo4j/abstracts/abstract.repository.js +33 -1
  40. package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
  41. package/dist/foundations/assistant/services/assistant.service.js +4 -4
  42. package/dist/foundations/assistant/services/assistant.service.js.map +1 -1
  43. package/dist/foundations/auth/entities/auth.code.d.ts.map +1 -1
  44. package/dist/foundations/auth/entities/auth.code.js +1 -0
  45. package/dist/foundations/auth/entities/auth.code.js.map +1 -1
  46. package/dist/foundations/auth/entities/auth.d.ts.map +1 -1
  47. package/dist/foundations/auth/entities/auth.js +1 -0
  48. package/dist/foundations/auth/entities/auth.js.map +1 -1
  49. package/dist/foundations/auth/entities/pending-auth.d.ts.map +1 -1
  50. package/dist/foundations/auth/entities/pending-auth.js +1 -0
  51. package/dist/foundations/auth/entities/pending-auth.js.map +1 -1
  52. package/dist/foundations/company/entities/company.d.ts.map +1 -1
  53. package/dist/foundations/company/entities/company.js +1 -0
  54. package/dist/foundations/company/entities/company.js.map +1 -1
  55. package/dist/foundations/feature/entities/feature.d.ts.map +1 -1
  56. package/dist/foundations/feature/entities/feature.js +1 -0
  57. package/dist/foundations/feature/entities/feature.js.map +1 -1
  58. package/dist/foundations/how-to/entities/how-to.d.ts.map +1 -1
  59. package/dist/foundations/how-to/entities/how-to.js +1 -0
  60. package/dist/foundations/how-to/entities/how-to.js.map +1 -1
  61. package/dist/foundations/s3/controllers/s3.controller.d.ts.map +1 -1
  62. package/dist/foundations/s3/controllers/s3.controller.js +3 -2
  63. package/dist/foundations/s3/controllers/s3.controller.js.map +1 -1
  64. package/dist/foundations/s3/services/s3.service.d.ts +6 -0
  65. package/dist/foundations/s3/services/s3.service.d.ts.map +1 -1
  66. package/dist/foundations/s3/services/s3.service.js +19 -1
  67. package/dist/foundations/s3/services/s3.service.js.map +1 -1
  68. package/dist/mcp/controllers/mcp.controller.js +1 -1
  69. package/dist/mcp/controllers/mcp.controller.js.map +1 -1
  70. package/dist/mcp/services/mcp.errors.d.ts +3 -1
  71. package/dist/mcp/services/mcp.errors.d.ts.map +1 -1
  72. package/dist/mcp/services/mcp.errors.js +10 -0
  73. package/dist/mcp/services/mcp.errors.js.map +1 -1
  74. package/dist/mcp/services/mcp.generic.tools.service.d.ts.map +1 -1
  75. package/dist/mcp/services/mcp.generic.tools.service.js +27 -4
  76. package/dist/mcp/services/mcp.generic.tools.service.js.map +1 -1
  77. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { GraphNodeDomainPrompts } from "../../../config/interfaces/config.prompts.interface";
2
- export declare const GRAPH_NODE_SYSTEM_PROMPT_BASE = "# Role\n\n{DOMAIN_ROLE}\n\nThe data is stored as a graph \u2014 entities are nodes, and the connections between them are edges.\n\nYou answer the user's questions by traversing this graph: find the entities the question is about, read their fields, and walk the relationships between them to reach related entities, continuing until you have enough information to answer. Nearly every useful answer requires following at least one edge \u2014 a single search is rarely the whole story.\n\nEvery fact in your answer must come from a tool call that returned it. Do not invent field names, relationship names, entity types, or record contents.\n\n## Your data\n\n{GRAPH_MAP}\n\nThe list above is the complete inventory of entity types available to you \u2014 anything not listed does not exist. Each entry shows only the type and a one-line description; fields and relationships are not included here. To learn the fields and relationships of any type, call `describe_entity({ type })` \u2014 its response is the only authoritative source for that type's schema. Do not assume a field or relationship exists until `describe_entity` confirms it.\n\nA field marked `money` in the catalogue above is stored as an integer in minor units; its marker states how many decimals (e.g. `total_amount (number, money [integer stored in minor units (2 decimals); divide by 10^2 to display], ...)`). For these fields, every record returned by `read_entity`, `search_entities`, or `traverse` also carries a sibling `<name>_formatted` string \u2014 quote that string when narrating the value in your answer, and never quote the raw integer as if it were the display amount. Filters and sort still target the raw field, in minor units.\n\n{DOMAIN_DATA_CONVENTIONS}\n\n## Tools\n\nYou have five tools.\n\n**Never ask the user a clarifying question.** The user expects an answer, not a follow-up. After `resolve_entity` returns at least one usable candidate, immediately continue: `describe_entity` \u2192 `search_entities` / `traverse` / `read_entity` \u2192 answer. Do not stop the tool chain to confirm what to do next. If multiple candidates of different types could match, pick the one whose type and connected relationships best fit the user's question. State the assumption you made in the `reason` clause of the entity you return; do not ask the user.\n\n{DOMAIN_DISAMBIGUATION}\n\nBefore choosing a tool, check the \"Entities already in this conversation\" block that may be provided below. If the user's phrase refers to an entity listed there \u2014 by its exact name, by a partial name, or implicitly (\"them\", \"their\", \"other\", \"these\") \u2014 treat that entity as resolved. Use its `type` and `id` directly with `read_entity` or `traverse`. **A previous-turn record's nested relationships also carry their own `{ type, id }` \u2014 those ids are addressable, so call `read_entity` or `traverse` with them directly.** Do not call `resolve_entity` for a name that is already resolved in context, and do not call `resolve_entity` for a record whose id you already have.\n\nOtherwise, if the user names an entity \u2014 a person, a place, an organisation, a project, anything that could correspond to a record in the graph \u2014 your first tool call is `resolve_entity` with the user's literal phrase. Do not guess a type. `resolve_entity` returns candidates across every entity type in one shot; you then pick a candidate and proceed with `describe_entity` + the typed tools.\n\nSome entities in the catalog are marked `(bridge \u2192 \u2026)` in the type index. A bridge is a junction record whose own fields are minimal \u2014 the actionable data lives on the relationships named in the bridge marker. When `traverse`, `read_entity`, or `search_entities` returns a record of a bridge type, the response already contains those relationships' targets inlined as nested objects, alongside a `__materialised: [...]` array listing which keys were filled. Do not call `traverse` on a relationship that already appears in `__materialised` \u2014 its content is already in front of you. If a relationship is in the bridge's `materialiseTo` per `describe_entity` but missing from `__materialised`, the target is gated by your module access; do not retry that traverse \u2014 narrate the gap to the user.\n\n- `resolve_entity(text)` \u2014 look up nodes by name across every entity type in one call. Pass the user's literal phrase verbatim, including words like \"and\", \"&\", or other punctuation that may be part of a name. The response carries a `matchMode`, `items` sorted by `score` descending, and an optional `recommendation`:\n - `exact` or `fuzzy` \u2192\n - **If the response carries `recommendation`, follow it.** It surfaces a deterministic rule already applied to the candidates and is more reliable than re-deriving the rule each turn.\n - Otherwise: if `items[0].summary` equals the user's literal phrase (case-insensitive), `items[0]` is the answer \u2014 pick it without further disambiguation. Words like \"and\", \"&\", or commas inside that phrase are part of the name; never split the phrase into multiple `resolve_entity` calls and never ask the user to clarify between `items[0]` and lower-ranked items just because the phrase looks plural.\n - Otherwise: if `items.length === 1` or `items[0].score - items[1].score \u2265 0.15`, pick `items[0]`.\n - Otherwise: pick the most plausible candidate by name match and continue traversing \u2014 the question still has to be answered. Do not refuse the user when at least one usable candidate exists.\n - `semantic` \u2192 same rules, margin \u2265 0.08. The match is approximate; reflect that in the `reason` clause.\n - `none` \u2192 no record exists; tell the user in your answer and suggest rephrasing.\n\n- `describe_entity(type)` \u2014 inspect one entity type in full: every field with its type, and every relationship with its target type and description. Call this for every type you intend to touch, before searching, reading, or traversing it. The next three tools will refuse to run on a type that has not been described in this turn.\n\n- `search_entities(type, filters?, sort?, limit?)` \u2014 find records of a known type by filter and sort. Use this when you already have the type (from `resolve_entity` or because the user referred to a kind of record without naming a specific one, e.g. \"all records of that type created after a given date\"). `search_entities` does not search by name \u2014 to find a record by name, call `resolve_entity` first.\n\n- `read_entity(type, id, include?)` \u2014 fetch the full fields of a single node by id. Tool outputs from other tools are summaries; call this to get the complete record before reporting on it. Calling `read_entity` again for a record already returned in full earlier in this conversation is refused with `{ alreadyRead: true }` \u2014 reuse the copy you already have instead of re-reading.\n\n- `traverse(fromType, fromId, relationship, filters?, sort?, limit?)` \u2014 walk one edge from a known node to its connected nodes. The `relationship` must be one listed under the source type in the catalogue. `filters` and `sort` apply to the target node's fields. This is the only way to cross from one entity type to another. A relationship named `related` is polymorphic: it returns records of mixed types linked to the source by mentions or GM-drawn links, each item tagged with its own `type` \u2014 treat each exactly like a `search_entities` result of that type; filters and sort do not apply to it.\n\nA list item from `search_entities` or `traverse` may carry `availableOnRead`: those fields exist on that record and were withheld from the list for size \u2014 call `read_entity` with the item's `type` and `id` to obtain them. A field absent from both `fields` and `availableOnRead` is empty, not withheld.\n\n{DOMAIN_DEPTH}\n\nIf a tool returns `{ error: \"\u2026\" }`, read the message \u2014 it usually lists valid fields or relationships, or tells you to call `describe_entity` first. Pick one of those and call the tool again. Recover within the same turn; do not apologise to the user for a tool error. Never stop on the first error.\n\n## Output\n\nReturn these fields:\n\n- `answer` \u2014 a concise prose reply (2\u20134 sentences for a single record, a markdown bullet list when enumerating) built from the actual field values and traversal results. When you report on a record, use its real field values, not its type name. When you report a money value, quote the `<name>_formatted` string from the record. When you report a date, use the date as it appears in the record.\n\n{DOMAIN_OUTPUT_RULES}\n\n- `entities` \u2014 every entity that contributes to the meaning of your `answer`, as `{ type, id, reason, fields? }`. An entity contributes when it is the subject the user asked about, or a record the answer reports a fact about. `reason` is one short clause explaining that role (for example \"the account the user asked about\", \"one of the records listed in the answer\"). Populate `fields` with the values you quoted in `answer`. Do not include entities you retrieved, inspected, and discarded: a `resolve_entity` call that returned three candidates of which you only used one \u2014 the other two are not entities to return; a `traverse` that walked an edge whose target you did not mention \u2014 not an entity. These entities are persisted and re-loaded as context on the next turn, so polluting them with irrelevant records will cause the next turn to confuse them with the actual subject \u2014 be strict.\n\n- `stop` \u2014 set to `true` once `answer` is complete and `entities` is the matching set.\n";
2
+ export declare const GRAPH_NODE_SYSTEM_PROMPT_BASE = "# Role\n\n{DOMAIN_ROLE}\n\nThe data is stored as a graph \u2014 entities are nodes, and the connections between them are edges.\n\nYou answer the user's questions by traversing this graph: find the entities the question is about, read their fields, and walk the relationships between them to reach related entities, continuing until you have enough information to answer. Nearly every useful answer requires following at least one edge \u2014 a single search is rarely the whole story.\n\nEvery fact in your answer must come from a tool call that returned it. Do not invent field names, relationship names, entity types, or record contents.\n\n## Your data\n\n{GRAPH_MAP}\n\nThe list above is the complete inventory of entity types available to you \u2014 anything not listed does not exist. Each entry shows only the type and a one-line description; fields and relationships are not included here. To learn the fields and relationships of any type, call `describe_entity({ type })` \u2014 its response is the only authoritative source for that type's schema. Do not assume a field or relationship exists until `describe_entity` confirms it.\n\nA field marked `money` in the catalogue above is stored as an integer in minor units; its marker states how many decimals (e.g. `total_amount (number, money [integer stored in minor units (2 decimals); divide by 10^2 to display], ...)`). For these fields, every record returned by `read_entity`, `search_entities`, or `traverse` also carries a sibling `<name>_formatted` string \u2014 quote that string when narrating the value in your answer, and never quote the raw integer as if it were the display amount. Filters and sort still target the raw field, in minor units.\n\n{DOMAIN_DATA_CONVENTIONS}\n\n## Tools\n\nYou have five tools.\n\n**Never ask the user a clarifying question.** The user expects an answer, not a follow-up. After `resolve_entity` returns at least one usable candidate, immediately continue: `describe_entity` \u2192 `search_entities` / `traverse` / `read_entity` \u2192 answer. Do not stop the tool chain to confirm what to do next. If multiple candidates of different types could match, pick the one whose type and connected relationships best fit the user's question. State the assumption you made in the `reason` clause of the entity you return; do not ask the user.\n\n{DOMAIN_DISAMBIGUATION}\n\nBefore choosing a tool, check the \"Entities already in this conversation\" block that may be provided below. If the user's phrase refers to an entity listed there \u2014 by its exact name, by a partial name, or implicitly (\"them\", \"their\", \"other\", \"these\") \u2014 treat that entity as resolved. Use its `type` and `id` directly with `read_entity` or `traverse`. **A previous-turn record's nested relationships also carry their own `{ type, id }` \u2014 those ids are addressable, so call `read_entity` or `traverse` with them directly.** Do not call `resolve_entity` for a name that is already resolved in context, and do not call `resolve_entity` for a record whose id you already have.\n\nOtherwise, if the user names an entity \u2014 a person, a place, an organisation, a project, anything that could correspond to a record in the graph \u2014 your first tool call is `resolve_entity` with the user's literal phrase. Do not guess a type. `resolve_entity` returns candidates across every entity type in one shot; you then pick a candidate and proceed with `describe_entity` + the typed tools.\n\nSome entities in the catalog are marked `(bridge \u2192 \u2026)` in the type index. A bridge is a junction record whose own fields are minimal \u2014 the actionable data lives on the relationships named in the bridge marker. When `traverse`, `read_entity`, or `search_entities` returns a record of a bridge type, the response already contains those relationships' targets inlined as nested objects, alongside a `__materialised: [...]` array listing which keys were filled. Do not call `traverse` on a relationship that already appears in `__materialised` \u2014 its content is already in front of you. If a relationship is in the bridge's `materialiseTo` per `describe_entity` but missing from `__materialised`, the target is gated by your module access; do not retry that traverse \u2014 narrate the gap to the user.\n\n- `resolve_entity(text)` \u2014 look up nodes by name across every entity type in one call. Pass the user's literal phrase verbatim, including words like \"and\", \"&\", or other punctuation that may be part of a name. The response carries a `matchMode`, `items` sorted by `score` descending, and an optional `recommendation`:\n - exact, substring or fuzzy \u2192\n - **If the response carries `recommendation`, follow it.** It surfaces a deterministic rule already applied to the candidates and is more reliable than re-deriving the rule each turn.\n - Otherwise: if `items[0].summary` equals the user's literal phrase (case-insensitive), `items[0]` is the answer \u2014 pick it without further disambiguation. Words like \"and\", \"&\", or commas inside that phrase are part of the name; never split the phrase into multiple `resolve_entity` calls and never ask the user to clarify between `items[0]` and lower-ranked items just because the phrase looks plural.\n - Exception: if the response carries a disambiguation field, two or more candidates share the same summary. Do NOT pick items[0], even when its summary equals the user's literal phrase; this overrides the literal-match rule above. Ask the user for court, sezione or type, or call search_entities with those filters.\n - Otherwise: if `items.length === 1` or `items[0].score - items[1].score \u2265 0.15`, pick `items[0]`.\n - Otherwise: pick the most plausible candidate by name match and continue traversing \u2014 the question still has to be answered. Do not refuse the user when at least one usable candidate exists.\n - `semantic` \u2192 same rules, margin \u2265 0.08. The match is approximate; reflect that in the `reason` clause.\n - `none` \u2192 no record exists; tell the user in your answer and suggest rephrasing.\n\n- `describe_entity(type)` \u2014 inspect one entity type in full: every field with its type, and every relationship with its target type and description. Call this for every type you intend to touch, before searching, reading, or traversing it. The next three tools will refuse to run on a type that has not been described in this turn.\n\n- `search_entities(type, filters?, sort?, limit?)` \u2014 find records of a known type by filter and sort. Use this when you already have the type (from `resolve_entity` or because the user referred to a kind of record without naming a specific one, e.g. \"all records of that type created after a given date\"). `search_entities` does not search by name \u2014 to find a record by name, call `resolve_entity` first.\n\n- `read_entity(type, id, include?)` \u2014 fetch the full fields of a single node by id. Tool outputs from other tools are summaries; call this to get the complete record before reporting on it. Calling `read_entity` again for a record already returned in full earlier in this conversation is refused with `{ alreadyRead: true }` \u2014 reuse the copy you already have instead of re-reading.\n\n- `traverse(fromType, fromId, relationship, filters?, sort?, limit?)` \u2014 walk one edge from a known node to its connected nodes. The `relationship` must be one listed under the source type in the catalogue. `filters` and `sort` apply to the target node's fields. This is the only way to cross from one entity type to another. A relationship named `related` is polymorphic: it returns records of mixed types linked to the source by mentions or GM-drawn links, each item tagged with its own `type` \u2014 treat each exactly like a `search_entities` result of that type; filters and sort do not apply to it.\n\nA list item from `search_entities` or `traverse` may carry `availableOnRead`: those fields exist on that record and were withheld from the list for size \u2014 call `read_entity` with the item's `type` and `id` to obtain them. A field absent from both `fields` and `availableOnRead` is empty, not withheld.\n\n{DOMAIN_DEPTH}\n\nIf a tool returns `{ error: \"\u2026\" }`, read the message \u2014 it usually lists valid fields or relationships, or tells you to call `describe_entity` first. Pick one of those and call the tool again. Recover within the same turn; do not apologise to the user for a tool error. Never stop on the first error.\n\n## Output\n\nReturn these fields:\n\n- `answer` \u2014 a concise prose reply (2\u20134 sentences for a single record, a markdown bullet list when enumerating) built from the actual field values and traversal results. When you report on a record, use its real field values, not its type name. When you report a money value, quote the `<name>_formatted` string from the record. When you report a date, use the date as it appears in the record.\n\n{DOMAIN_OUTPUT_RULES}\n\n- `entities` \u2014 every entity that contributes to the meaning of your `answer`, as `{ type, id, reason, fields? }`. An entity contributes when it is the subject the user asked about, or a record the answer reports a fact about. `reason` is one short clause explaining that role (for example \"the account the user asked about\", \"one of the records listed in the answer\"). Populate `fields` with the values you quoted in `answer`. Do not include entities you retrieved, inspected, and discarded: a `resolve_entity` call that returned three candidates of which you only used one \u2014 the other two are not entities to return; a `traverse` that walked an edge whose target you did not mention \u2014 not an entity. These entities are persisted and re-loaded as context on the next turn, so polluting them with irrelevant records will cause the next turn to confuse them with the actual subject \u2014 be strict.\n\n- `stop` \u2014 set to `true` once `answer` is complete and `entities` is the matching set.\n";
3
3
  export declare function describeDomainLayer(domain?: GraphNodeDomainPrompts): string;
4
4
  export declare function renderGraphNodeSystemPrompt(graphMap: string, domain?: GraphNodeDomainPrompts): string;
5
5
  //# sourceMappingURL=graph.node.system.prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.node.system.prompt.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/prompts/graph.node.system.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAE7F,eAAO,MAAM,6BAA6B,i9SAoEzC,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAG3E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAerG"}
1
+ {"version":3,"file":"graph.node.system.prompt.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/prompts/graph.node.system.prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAE7F,eAAO,MAAM,6BAA6B,yxTAqEzC,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAG3E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAerG"}
@@ -38,9 +38,10 @@ Otherwise, if the user names an entity — a person, a place, an organisation, a
38
38
  Some entities in the catalog are marked \`(bridge → …)\` in the type index. A bridge is a junction record whose own fields are minimal — the actionable data lives on the relationships named in the bridge marker. When \`traverse\`, \`read_entity\`, or \`search_entities\` returns a record of a bridge type, the response already contains those relationships' targets inlined as nested objects, alongside a \`__materialised: [...]\` array listing which keys were filled. Do not call \`traverse\` on a relationship that already appears in \`__materialised\` — its content is already in front of you. If a relationship is in the bridge's \`materialiseTo\` per \`describe_entity\` but missing from \`__materialised\`, the target is gated by your module access; do not retry that traverse — narrate the gap to the user.
39
39
 
40
40
  - \`resolve_entity(text)\` — look up nodes by name across every entity type in one call. Pass the user's literal phrase verbatim, including words like "and", "&", or other punctuation that may be part of a name. The response carries a \`matchMode\`, \`items\` sorted by \`score\` descending, and an optional \`recommendation\`:
41
- - \`exact\` or \`fuzzy\` →
41
+ - exact, substring or fuzzy →
42
42
  - **If the response carries \`recommendation\`, follow it.** It surfaces a deterministic rule already applied to the candidates and is more reliable than re-deriving the rule each turn.
43
43
  - Otherwise: if \`items[0].summary\` equals the user's literal phrase (case-insensitive), \`items[0]\` is the answer — pick it without further disambiguation. Words like "and", "&", or commas inside that phrase are part of the name; never split the phrase into multiple \`resolve_entity\` calls and never ask the user to clarify between \`items[0]\` and lower-ranked items just because the phrase looks plural.
44
+ - Exception: if the response carries a disambiguation field, two or more candidates share the same summary. Do NOT pick items[0], even when its summary equals the user's literal phrase; this overrides the literal-match rule above. Ask the user for court, sezione or type, or call search_entities with those filters.
44
45
  - Otherwise: if \`items.length === 1\` or \`items[0].score - items[1].score ≥ 0.15\`, pick \`items[0]\`.
45
46
  - Otherwise: pick the most plausible candidate by name match and continue traversing — the question still has to be answered. Do not refuse the user when at least one usable candidate exists.
46
47
  - \`semantic\` → same rules, margin ≥ 0.08. The match is approximate; reflect that in the \`reason\` clause.
@@ -1 +1 @@
1
- {"version":3,"file":"graph.node.system.prompt.js","sourceRoot":"","sources":["../../../../src/agents/graph/prompts/graph.node.system.prompt.ts"],"names":[],"mappings":";;;AA4EA,kDAGC;AAED,kEAeC;AA9FY,QAAA,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoE5C,CAAC;AAEF,MAAM,YAAY,GAAG,oDAAoD,CAAC;AAE1E,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,CAAU,CAAC;AAEpG,SAAgB,mBAAmB,CAAC,MAA+B;IACjE,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtG,OAAO,4BAA4B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAgB,2BAA2B,CAAC,QAAgB,EAAE,MAA+B;IAC3F,yEAAyE;IACzE,6EAA6E;IAC7E,OAAO,qCAA6B,CAAC,OAAO,CAC1C,aAAa,EACb,GAAG,EAAE,CACH,QAAQ;QACR,4KAA4K,CAC/K;SACE,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC;SACpE,OAAO,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACjF,OAAO,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC9E,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC5D,OAAO,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACzE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"graph.node.system.prompt.js","sourceRoot":"","sources":["../../../../src/agents/graph/prompts/graph.node.system.prompt.ts"],"names":[],"mappings":";;;AA6EA,kDAGC;AAED,kEAeC;AA/FY,QAAA,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqE5C,CAAC;AAEF,MAAM,YAAY,GAAG,oDAAoD,CAAC;AAE1E,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,CAAU,CAAC;AAEpG,SAAgB,mBAAmB,CAAC,MAA+B;IACjE,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtG,OAAO,4BAA4B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAgB,2BAA2B,CAAC,QAAgB,EAAE,MAA+B;IAC3F,yEAAyE;IACzE,6EAA6E;IAC7E,OAAO,qCAA6B,CAAC,OAAO,CAC1C,aAAa,EACb,GAAG,EAAE,CACH,QAAQ;QACR,4KAA4K,CAC/K;SACE,OAAO,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC;SACpE,OAAO,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACjF,OAAO,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC9E,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC5D,OAAO,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACzE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC"}
@@ -22,7 +22,11 @@ export declare class UserModulesRepository {
22
22
  * effective permissions are returned on a virtual module node as a JSON
23
23
  * string on `properties.permissions`; we parse it and keep the modules
24
24
  * where `read.value === true`.
25
+ *
26
+ * The match is bound to `companyId` (the request's company, from the token):
27
+ * a user who belongs to several companies sees only the modules of the
28
+ * company the request runs in, never the union across all of them.
25
29
  */
26
- findModuleIdsForUser(userId: string): Promise<string[]>;
30
+ findModuleIdsForUser(userId: string, companyId: string): Promise<string[]>;
27
31
  }
28
32
  //# sourceMappingURL=user-modules.repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-modules.repository.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/repositories/user-modules.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAQ1E;;;;;;;;;GASG;AACH,qBACa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;gBAEpC,KAAK,EAAE,YAAY;IAEhD;;;;;;;;;OASG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CA4B9D"}
1
+ {"version":3,"file":"user-modules.repository.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/repositories/user-modules.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAQ1E;;;;;;;;;GASG;AACH,qBACa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;gBAEpC,KAAK,EAAE,YAAY;IAEhD;;;;;;;;;;;;;OAaG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CA8BjF"}
@@ -38,12 +38,16 @@ let UserModulesRepository = UserModulesRepository_1 = class UserModulesRepositor
38
38
  * effective permissions are returned on a virtual module node as a JSON
39
39
  * string on `properties.permissions`; we parse it and keep the modules
40
40
  * where `read.value === true`.
41
+ *
42
+ * The match is bound to `companyId` (the request's company, from the token):
43
+ * a user who belongs to several companies sees only the modules of the
44
+ * company the request runs in, never the union across all of them.
41
45
  */
42
- async findModuleIdsForUser(userId) {
46
+ async findModuleIdsForUser(userId, companyId) {
43
47
  const result = await this.neo4j.read(`
44
- MATCH (user:User {id: $userId})-[:BELONGS_TO]->(company:Company)
48
+ MATCH (user:User {id: $userId})-[:BELONGS_TO]->(company:Company {id: $companyId})
45
49
  ${feature_module_query_1.featureModuleQuery}
46
- `, { userId });
50
+ `, { userId, companyId });
47
51
  const moduleIds = [];
48
52
  for (const record of result.records) {
49
53
  const moduleNode = record.get("module");
@@ -64,7 +68,7 @@ let UserModulesRepository = UserModulesRepository_1 = class UserModulesRepositor
64
68
  this.logger.warn(`findModuleIdsForUser: malformed permissions JSON on module ${id}`);
65
69
  }
66
70
  }
67
- this.logger.log(`findModuleIdsForUser: userId=${userId} readableModuleIds=${JSON.stringify(moduleIds)}`);
71
+ this.logger.log(`findModuleIdsForUser: userId=${userId} companyId=${companyId} readableModuleIds=${JSON.stringify(moduleIds)}`);
68
72
  return moduleIds;
69
73
  }
70
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"user-modules.repository.js","sourceRoot":"","sources":["../../../../src/agents/graph/repositories/user-modules.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8EAA0E;AAC1E,mGAA8F;AAO9F;;;;;;;;;GASG;AAEI,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAGhC,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;QAF/B,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IAEd,CAAC;IAEpD;;;;;;;;;OASG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAc;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC;;QAEE,yCAAkB;OACnB,EACD,EAAE,MAAM,EAAE,CACX,CAAC;QAEF,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,UAAU,GAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,UAAU,EAAE,UAAU,CAAC;YACrC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;YACpC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,SAAS,KAAK,QAAQ;gBAAE,SAAS;YACpF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAsB,CAAC;gBACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;gBAClD,IAAI,IAAI,EAAE,KAAK,KAAK,IAAI;oBAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,MAAM,sBAAsB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzG,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AA3CY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAIyB,4BAAY;GAHrC,qBAAqB,CA2CjC"}
1
+ {"version":3,"file":"user-modules.repository.js","sourceRoot":"","sources":["../../../../src/agents/graph/repositories/user-modules.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,8EAA0E;AAC1E,mGAA8F;AAO9F;;;;;;;;;GASG;AAEI,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAGhC,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;QAF/B,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IAEd,CAAC;IAEpD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,SAAiB;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC;;QAEE,yCAAkB;OACnB,EACD,EAAE,MAAM,EAAE,SAAS,EAAE,CACtB,CAAC;QAEF,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,UAAU,GAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,UAAU,EAAE,UAAU,CAAC;YACrC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;YACpC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,SAAS,KAAK,QAAQ;gBAAE,SAAS;YACpF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAsB,CAAC;gBACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;gBAClD,IAAI,IAAI,EAAE,KAAK,KAAK,IAAI;oBAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,EAAE,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,gCAAgC,MAAM,cAAc,SAAS,sBAAsB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAC/G,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AAjDY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAIyB,4BAAY;GAHrC,qBAAqB,CAiDjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.source.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/descriptor.source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAO3D,qBACa,uBAAwB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI7D,OAAO,IAAI,GAAG,EAAE;CA0BjB"}
1
+ {"version":3,"file":"descriptor.source.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/descriptor.source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAO3D,qBACa,uBAAwB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI7D,OAAO,IAAI,GAAG,EAAE;CA4BjB"}
@@ -31,6 +31,8 @@ let GraphDescriptorRegistry = GraphDescriptorRegistry_1 = class GraphDescriptorR
31
31
  model: e.descriptor.model,
32
32
  description: e.descriptor.description,
33
33
  moduleId: e.moduleId,
34
+ isCompanyScoped: e.descriptor.isCompanyScoped !== false,
35
+ tenancy: e.descriptor.tenancy,
34
36
  fields: e.descriptor.fields ?? {},
35
37
  relationships: e.descriptor.relationships ?? {},
36
38
  chat: e.descriptor.chat,
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.source.js","sourceRoot":"","sources":["../../../../src/agents/graph/services/descriptor.source.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAS7C,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAA7B;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,yBAAuB,CAAC,IAAI,CAAC,CAAC;QAClD,YAAO,GAAsB,EAAE,CAAC;QACzC,WAAM,GAAG,KAAK,CAAC;IAwCzB,CAAC;IAtCC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAA6C;QACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK;YACzB,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW;YACrC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE;YACjC,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,aAAa,IAAI,EAAE;YAC/C,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI;YACvB,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM;SAC5B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,YAAY,GAAG,CAAC,MAAM,gBAAgB;gBACpC,IAAI,CAAC,SAAS,CACZ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACd,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;oBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW;oBAC/B,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;iBACtB,CAAC,CAAC,CACJ,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AA3CY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;GACA,uBAAuB,CA2CnC"}
1
+ {"version":3,"file":"descriptor.source.js","sourceRoot":"","sources":["../../../../src/agents/graph/services/descriptor.source.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAS7C,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAA7B;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,yBAAuB,CAAC,IAAI,CAAC,CAAC;QAClD,YAAO,GAAsB,EAAE,CAAC;QACzC,WAAM,GAAG,KAAK,CAAC;IA0CzB,CAAC;IAxCC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAA6C;QACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK;YACzB,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW;YACrC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,eAAe,KAAK,KAAK;YACvD,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO;YAC7B,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE;YACjC,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,aAAa,IAAI,EAAE;YAC/C,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI;YACvB,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM;SAC5B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,YAAY,GAAG,CAAC,MAAM,gBAAgB;gBACpC,IAAI,CAAC,SAAS,CACZ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACd,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;oBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW;oBAC/B,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;iBACtB,CAAC,CAAC,CACJ,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AA7CY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;GACA,uBAAuB,CA6CnC"}
@@ -1,6 +1,6 @@
1
1
  import { OnApplicationBootstrap } from "@nestjs/common";
2
2
  import { CatalogEntity } from "../interfaces/graph.catalog.interface";
3
- import { ChatScopeHop, ChatWritableConfig, FieldKind } from "../../../common/interfaces/entity.schema.interface";
3
+ import { ChatScopeHop, ChatWritableConfig, EntityTenancy, FieldKind } from "../../../common/interfaces/entity.schema.interface";
4
4
  import type { DetailFieldDef } from "../../../common/interfaces/detail.fields.source.interface";
5
5
  /**
6
6
  * Provided by the library bootstrap layer. Must return the full list of registered
@@ -16,6 +16,10 @@ export interface DescriptorSource {
16
16
  };
17
17
  description?: string;
18
18
  moduleId: string;
19
+ /** `false` for a descriptor declared `isCompanyScoped: false`. */
20
+ isCompanyScoped: boolean;
21
+ /** Tenant rule of an unscoped descriptor (see EntitySchemaInput.tenancy). */
22
+ tenancy?: EntityTenancy;
19
23
  fields: Record<string, {
20
24
  type: string;
21
25
  description?: string;
@@ -1 +1 @@
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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"}
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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"}
@@ -45,7 +45,31 @@ let GraphCatalogService = GraphCatalogService_1 = class GraphCatalogService {
45
45
  buildCatalog() {
46
46
  this.entities.clear();
47
47
  this.renderedByModuleId.clear();
48
- const descriptors = this.source.loadAll().filter((d) => typeof d.description === "string" && d.description.length);
48
+ const all = this.source.loadAll();
49
+ const byType = new Map(all.map((d) => [d.model.type, d]));
50
+ const descriptors = all.filter((d) => typeof d.description === "string" && d.description.length && d.tenancy !== "internal");
51
+ // Tenancy gate: no unscoped type reaches the catalog without an explicit tenant rule,
52
+ // and a `via` rule must land on a company-scoped type (its rows carry BELONGS_TO).
53
+ for (const d of descriptors) {
54
+ if (d.isCompanyScoped !== false)
55
+ continue;
56
+ if (!d.tenancy) {
57
+ throw new Error(`Entity "${d.model.type}" is not company-scoped and has a description, so it must declare "tenancy" ("global" | "self" | "internal" | { via: "<relationship key>" }).`);
58
+ }
59
+ if (typeof d.tenancy === "object") {
60
+ const via = d.tenancy.via;
61
+ const rel = d.relationships[via];
62
+ if (!rel) {
63
+ throw new Error(`tenancy.via "${via}" on ${d.model.type} is not a relationship on this descriptor.`);
64
+ }
65
+ const target = byType.get(rel.model.type);
66
+ // Accepted targets: a company-scoped type (rows carry BELONGS_TO) or the company
67
+ // itself (`tenancy: "self"`, matched directly by the repository predicate).
68
+ if (!target || (target.isCompanyScoped === false && target.tenancy !== "self")) {
69
+ throw new Error(`tenancy.via "${via}" on ${d.model.type} points at ${rel.model.type}, which is not company-scoped${target ? "" : " (not registered)"}.`);
70
+ }
71
+ }
72
+ }
49
73
  /** Raw scope material, keyed by JSON:API type. Consumed by pass 1b. */
50
74
  const scopeSources = new Map();
51
75
  // Pass 1: create CatalogEntity for every described descriptor (fields + forward relationships).
@@ -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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"}
@@ -10,7 +10,12 @@ export declare const GRAPH_FUZZY_MAX_RESULTS = 10;
10
10
  export declare const GRAPH_SEMANTIC_MAX_RESULTS = 5;
11
11
  export declare const GRAPH_RESOLVE_MAX_RESULTS = 10;
12
12
  export declare const GRAPH_SEMANTIC_MIN_SCORE = 0.6;
13
- export type MatchMode = "exact" | "fuzzy" | "semantic" | "none";
13
+ /**
14
+ * `exact`: the top candidate's summary (or id) equals the text, or an external
15
+ * source matched the text as an identifier (`RankedCandidate.exact`). `substring`,
16
+ * `fuzzy`, `semantic`: the tier that produced the candidates. `none`: nothing.
17
+ */
18
+ export type MatchMode = "exact" | "substring" | "fuzzy" | "semantic" | "none";
14
19
  export interface RunSearchParams {
15
20
  entity: CatalogEntity;
16
21
  text: string;
@@ -26,6 +31,10 @@ export interface RankedCandidate {
26
31
  id: string;
27
32
  summary: string;
28
33
  score: number;
34
+ /** Set by an external source that matched the text as an identifier. */
35
+ exact?: boolean;
36
+ /** Identity ties are judged on, when the summary is a richer label. */
37
+ key?: string;
29
38
  }
30
39
  export interface ResolveEntityParams {
31
40
  text: string;
@@ -47,16 +56,31 @@ export interface ResolveEntityResult {
47
56
  * reliably than rules they have to re-derive from the system prompt.
48
57
  */
49
58
  recommendation?: string;
59
+ /**
60
+ * Present when another candidate shares items[0]'s summary (e.g. a civil and
61
+ * a criminal judgement both named 14345/2024). No recommendation is given
62
+ * then; this hint tells the caller which fields tell them apart.
63
+ */
64
+ disambiguation?: string;
50
65
  }
66
+ /**
67
+ * When two or more candidates share items[0]'s identity (`key ?? summary`),
68
+ * returns the hint that names the distinguishing fields; `undefined` otherwise.
69
+ */
70
+ export declare function buildResolveDisambiguation(items: RankedCandidate[]): string | undefined;
51
71
  /**
52
72
  * Decide whether the merged candidate list satisfies a deterministic
53
73
  * disambiguation rule worth surfacing to the LLM. Returns the recommendation
54
74
  * text or `undefined` when the candidates are genuinely ambiguous.
55
75
  *
76
+ * Never recommends when another candidate shares items[0]'s identity
77
+ * (`key ?? summary`, see `buildResolveDisambiguation`).
78
+ *
56
79
  * Two rules, in priority order:
57
80
  * 1. Literal-summary match: items[0].summary equals the user's literal
58
81
  * phrase (case-insensitive). Holds even with a smaller margin because
59
- * the name match is unambiguous on its own.
82
+ * the name match is unambiguous on its own. An external candidate that
83
+ * matched the text as an identifier (`exact`) counts the same way.
60
84
  * 2. Score-margin dominance: items[0] beats items[1] by ≥ 0.15 on
61
85
  * exact/fuzzy tiers, ≥ 0.08 on semantic.
62
86
  */
@@ -1 +1 @@
1
- {"version":3,"file":"graph.search.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.search.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.search.service.d.ts","sourceRoot":"","sources":["../../../../src/agents/graph/services/graph.search.service.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var GraphSearchService_1;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.GraphSearchService = exports.GRAPH_SEMANTIC_MIN_SCORE = exports.GRAPH_RESOLVE_MAX_RESULTS = exports.GRAPH_SEMANTIC_MAX_RESULTS = exports.GRAPH_FUZZY_MAX_RESULTS = exports.GRAPH_EXACT_MAX_RESULTS = void 0;
14
+ exports.buildResolveDisambiguation = buildResolveDisambiguation;
14
15
  exports.buildResolveRecommendation = buildResolveRecommendation;
15
16
  const common_1 = require("@nestjs/common");
16
17
  const embedder_service_1 = require("../../../core/llm/services/embedder.service");
@@ -28,21 +29,57 @@ exports.GRAPH_SEMANTIC_MAX_RESULTS = 5;
28
29
  exports.GRAPH_RESOLVE_MAX_RESULTS = 10;
29
30
  exports.GRAPH_SEMANTIC_MIN_SCORE = 0.6;
30
31
  const GRAPH_VECTOR_OVERFETCH = 50;
32
+ const normaliseSummary = (value) => value.trim().toLowerCase();
33
+ /** The identity a tie is judged on: the candidate's `key` when set, its summary otherwise (case-insensitive). */
34
+ const tieIdentity = (item) => normaliseSummary(item.key ?? item.summary);
35
+ /** True when a candidate other than items[0] has the same identity (`key ?? summary`, case-insensitive). */
36
+ function hasSummaryTie(items) {
37
+ if (items.length < 2)
38
+ return false;
39
+ const top = tieIdentity(items[0]);
40
+ return items.slice(1).some((item) => tieIdentity(item) === top);
41
+ }
42
+ /**
43
+ * When two or more candidates share items[0]'s identity (`key ?? summary`),
44
+ * returns the hint that names the distinguishing fields; `undefined` otherwise.
45
+ */
46
+ function buildResolveDisambiguation(items) {
47
+ if (!hasSummaryTie(items))
48
+ return undefined;
49
+ return `Two or more candidates share the summary "${items[0].key ?? items[0].summary}". Ask the user for court, sezione or type, or call search_entities with those filters.`;
50
+ }
51
+ /**
52
+ * Divides every score in a bucket by the bucket's best score, so Lucene scores
53
+ * (unbounded) and external rank scores ((0, 1]) compete on equal terms once
54
+ * merged. An empty bucket, or one whose best score is not positive, is left as is.
55
+ */
56
+ function normaliseBucket(bucket) {
57
+ const max = bucket.reduce((best, candidate) => Math.max(best, candidate.score), 0);
58
+ if (!(max > 0))
59
+ return bucket;
60
+ return bucket.map((candidate) => ({ ...candidate, score: candidate.score / max }));
61
+ }
31
62
  /**
32
63
  * Decide whether the merged candidate list satisfies a deterministic
33
64
  * disambiguation rule worth surfacing to the LLM. Returns the recommendation
34
65
  * text or `undefined` when the candidates are genuinely ambiguous.
35
66
  *
67
+ * Never recommends when another candidate shares items[0]'s identity
68
+ * (`key ?? summary`, see `buildResolveDisambiguation`).
69
+ *
36
70
  * Two rules, in priority order:
37
71
  * 1. Literal-summary match: items[0].summary equals the user's literal
38
72
  * phrase (case-insensitive). Holds even with a smaller margin because
39
- * the name match is unambiguous on its own.
73
+ * the name match is unambiguous on its own. An external candidate that
74
+ * matched the text as an identifier (`exact`) counts the same way.
40
75
  * 2. Score-margin dominance: items[0] beats items[1] by ≥ 0.15 on
41
76
  * exact/fuzzy tiers, ≥ 0.08 on semantic.
42
77
  */
43
78
  function buildResolveRecommendation(items, userText, matchMode) {
44
79
  if (items.length === 0)
45
80
  return undefined;
81
+ if (hasSummaryTie(items))
82
+ return undefined;
46
83
  const top = items[0];
47
84
  const next = items[1];
48
85
  const margin = next ? top.score - next.score : Number.POSITIVE_INFINITY;
@@ -51,6 +88,9 @@ function buildResolveRecommendation(items, userText, matchMode) {
51
88
  if (literalMatch && (items.length === 1 || dominantMargin)) {
52
89
  return `Use items[0] (id=${top.id}, type=${top.type}): its summary equals the user's literal phrase and dominates by score margin. Do not ask the user to disambiguate.`;
53
90
  }
91
+ if (top.exact && (items.length === 1 || dominantMargin)) {
92
+ return `Use items[0] (id=${top.id}, type=${top.type}): it matches the user's text as an identifier and no other candidate shares it. Do not ask the user to disambiguate.`;
93
+ }
54
94
  if (dominantMargin) {
55
95
  return `Use items[0] (id=${top.id}, type=${top.type}): it dominates the next candidate by the documented score margin (${margin.toFixed(2)}).`;
56
96
  }
@@ -136,7 +176,7 @@ let GraphSearchService = GraphSearchService_1 = class GraphSearchService {
136
176
  return { matchMode: "none", items: [] };
137
177
  }
138
178
  const tiers = [
139
- ["substring", "exact"],
179
+ ["substring", "substring"],
140
180
  ["fuzzy", "fuzzy"],
141
181
  ["semantic", "semantic"],
142
182
  ];
@@ -156,14 +196,27 @@ let GraphSearchService = GraphSearchService_1 = class GraphSearchService {
156
196
  return this.runTierForEntitySafe(e, params, tier);
157
197
  return tier === "substring" ? this.runExternalForEntitySafe(e, external, params) : Promise.resolve([]);
158
198
  }));
159
- const merged = buckets.flat();
199
+ // One bucket per type: normalise within the type, then merge. Sort is
200
+ // stable, so equal normalised scores keep catalog order.
201
+ const merged = buckets.map(normaliseBucket).flat();
160
202
  if (!merged.length)
161
203
  continue;
162
204
  merged.sort((a, b) => b.score - a.score);
163
205
  const items = await this.keepAccessible({ candidates: merged, params, externalByType, entityByType });
164
206
  if (items.length) {
165
- const recommendation = buildResolveRecommendation(items, params.text, label);
166
- return recommendation ? { matchMode: label, items, recommendation } : { matchMode: label, items };
207
+ const text = normaliseSummary(params.text);
208
+ const literal = items[0].exact === true ||
209
+ normaliseSummary(items[0].summary) === text ||
210
+ items[0].id.trim().toLowerCase() === text;
211
+ const matchMode = literal ? "exact" : label;
212
+ const recommendation = buildResolveRecommendation(items, params.text, matchMode);
213
+ const disambiguation = buildResolveDisambiguation(items);
214
+ return {
215
+ matchMode,
216
+ items,
217
+ ...(recommendation ? { recommendation } : {}),
218
+ ...(disambiguation ? { disambiguation } : {}),
219
+ };
167
220
  }
168
221
  }
169
222
  return { matchMode: "none", items: [] };
@@ -247,6 +300,8 @@ let GraphSearchService = GraphSearchService_1 = class GraphSearchService {
247
300
  id: candidate.id,
248
301
  summary: candidate.name || candidate.id,
249
302
  score: candidate.score,
303
+ ...(candidate.exact ? { exact: true } : {}),
304
+ ...(candidate.key ? { key: candidate.key } : {}),
250
305
  }));
251
306
  }
252
307
  catch (err) {
@@ -318,7 +373,7 @@ let GraphSearchService = GraphSearchService_1 = class GraphSearchService {
318
373
  const indexName = this.indexNames.fulltextIndexName(params.entity.labelName);
319
374
  const existing = await this.getExistingIndexes();
320
375
  if (existing.size > 0 && !existing.has(indexName)) {
321
- return { matchMode: mode === "substring" ? "exact" : "fuzzy", items: [] };
376
+ return { matchMode: mode, items: [] };
322
377
  }
323
378
  const escaped = (0, build_fulltext_term_1.escapeLuceneTerm)(params.text).toLowerCase();
324
379
  const term = mode === "substring" ? `*${escaped}*` : `${escaped}~`;
@@ -346,7 +401,7 @@ let GraphSearchService = GraphSearchService_1 = class GraphSearchService {
346
401
  score: r.get("score"),
347
402
  properties: r.get("properties") ?? {},
348
403
  }));
349
- return { matchMode: mode === "substring" ? "exact" : "fuzzy", items };
404
+ return { matchMode: mode, items };
350
405
  }
351
406
  async tierSemantic(params) {
352
407
  const indexName = this.indexNames.vectorIndexName(params.entity.labelName);