@documentation-robotics/cli 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/README.md +36 -2
  2. package/dist/analysis/relationship-classifier.js +2 -9
  3. package/dist/analysis/relationship-classifier.js.map +2 -2
  4. package/dist/analyzers/call-graph-utils.js +2 -2
  5. package/dist/analyzers/call-graph-utils.js.map +2 -2
  6. package/dist/analyzers/cards/build.js +171 -0
  7. package/dist/analyzers/cards/build.js.map +7 -0
  8. package/dist/analyzers/cards/classify.js +42 -0
  9. package/dist/analyzers/cards/classify.js.map +7 -0
  10. package/dist/analyzers/cards/edge-index.js +44 -0
  11. package/dist/analyzers/cards/edge-index.js.map +7 -0
  12. package/dist/analyzers/cards/facts.js +46 -0
  13. package/dist/analyzers/cards/facts.js.map +7 -0
  14. package/dist/analyzers/cards/graph.js +42 -0
  15. package/dist/analyzers/cards/graph.js.map +7 -0
  16. package/dist/analyzers/cards/index.js +8 -0
  17. package/dist/analyzers/cards/index.js.map +7 -0
  18. package/dist/analyzers/cards/tier0.js +18 -0
  19. package/dist/analyzers/cards/tier0.js.map +7 -0
  20. package/dist/analyzers/cards/types.js +1 -0
  21. package/dist/analyzers/cards/types.js.map +7 -0
  22. package/dist/analyzers/cbm-analyzer.js +195 -171
  23. package/dist/analyzers/cbm-analyzer.js.map +2 -2
  24. package/dist/analyzers/cbm-responses.js +336 -0
  25. package/dist/analyzers/cbm-responses.js.map +7 -0
  26. package/dist/analyzers/edge-relationships.js +45 -0
  27. package/dist/analyzers/edge-relationships.js.map +7 -0
  28. package/dist/analyzers/mapping-loader.js +9 -0
  29. package/dist/analyzers/mapping-loader.js.map +2 -2
  30. package/dist/analyzers/tier0-rules.js +153 -0
  31. package/dist/analyzers/tier0-rules.js.map +7 -0
  32. package/dist/analyzers/types.js.map +1 -1
  33. package/dist/audit/relationships/ai/prompts.js +10 -10
  34. package/dist/audit/relationships/ai/prompts.js.map +2 -2
  35. package/dist/audit/relationships/analysis/layer-templates.js +52 -52
  36. package/dist/audit/relationships/analysis/layer-templates.js.map +1 -1
  37. package/dist/cli.js +12 -2
  38. package/dist/cli.js.map +2 -2
  39. package/dist/coding-agents/default-permissions.js +31 -1
  40. package/dist/coding-agents/default-permissions.js.map +2 -2
  41. package/dist/coding-agents/drbot-mcp.js +167 -0
  42. package/dist/coding-agents/drbot-mcp.js.map +7 -0
  43. package/dist/commands/add.js +3 -2
  44. package/dist/commands/add.js.map +2 -2
  45. package/dist/commands/analyzer.js +117 -14
  46. package/dist/commands/analyzer.js.map +2 -2
  47. package/dist/commands/changeset-verify.js +55 -0
  48. package/dist/commands/changeset-verify.js.map +7 -0
  49. package/dist/commands/changeset.js +43 -22
  50. package/dist/commands/changeset.js.map +2 -2
  51. package/dist/commands/delete.js +10 -4
  52. package/dist/commands/delete.js.map +2 -2
  53. package/dist/commands/farm.js +176 -60
  54. package/dist/commands/farm.js.map +2 -2
  55. package/dist/commands/mcp.js +19 -4
  56. package/dist/commands/mcp.js.map +2 -2
  57. package/dist/commands/relationship.js +207 -26
  58. package/dist/commands/relationship.js.map +2 -2
  59. package/dist/commands/update.js +42 -23
  60. package/dist/commands/update.js.map +2 -2
  61. package/dist/commands/upgrade.js +99 -11
  62. package/dist/commands/upgrade.js.map +3 -3
  63. package/dist/commands/version.js +1 -1
  64. package/dist/commands/visualize.js +4 -3
  65. package/dist/commands/visualize.js.map +2 -2
  66. package/dist/core/catalog-migration.js +33 -0
  67. package/dist/core/catalog-migration.js.map +7 -0
  68. package/dist/core/changeset-analysis.js +421 -0
  69. package/dist/core/changeset-analysis.js.map +7 -0
  70. package/dist/core/changeset-base-index.js +153 -0
  71. package/dist/core/changeset-base-index.js.map +7 -0
  72. package/dist/core/changeset-brief-delta.js +102 -0
  73. package/dist/core/changeset-brief-delta.js.map +7 -0
  74. package/dist/core/changeset-graph.js +281 -0
  75. package/dist/core/changeset-graph.js.map +7 -0
  76. package/dist/core/changeset-only-guard.js +32 -0
  77. package/dist/core/changeset-only-guard.js.map +7 -0
  78. package/dist/core/changeset-summary.js +68 -0
  79. package/dist/core/changeset-summary.js.map +7 -0
  80. package/dist/core/changeset-validator.js +66 -20
  81. package/dist/core/changeset-validator.js.map +2 -2
  82. package/dist/core/changeset-verify.js +518 -0
  83. package/dist/core/changeset-verify.js.map +7 -0
  84. package/dist/core/changeset.js +56 -9
  85. package/dist/core/changeset.js.map +2 -2
  86. package/dist/core/element-type-migration.js +145 -0
  87. package/dist/core/element-type-migration.js.map +7 -0
  88. package/dist/core/farm-manifest.js +12 -6
  89. package/dist/core/farm-manifest.js.map +2 -2
  90. package/dist/core/farm-sync-engine.js +1 -1
  91. package/dist/core/farm-sync-engine.js.map +2 -2
  92. package/dist/core/farm-sync-state.js +10 -2
  93. package/dist/core/farm-sync-state.js.map +2 -2
  94. package/dist/core/migration-registry.js +75 -46
  95. package/dist/core/migration-registry.js.map +2 -2
  96. package/dist/core/model-upgrade.js +102 -0
  97. package/dist/core/model-upgrade.js.map +7 -0
  98. package/dist/core/model.js +82 -30
  99. package/dist/core/model.js.map +2 -2
  100. package/dist/core/mutation-handler.js +71 -6
  101. package/dist/core/mutation-handler.js.map +2 -2
  102. package/dist/core/relationship-migration-table.js +6639 -0
  103. package/dist/core/relationship-migration-table.js.map +7 -0
  104. package/dist/core/relationship-migration.js +272 -0
  105. package/dist/core/relationship-migration.js.map +7 -0
  106. package/dist/core/relationship-prune.js +49 -0
  107. package/dist/core/relationship-prune.js.map +7 -0
  108. package/dist/core/relationship-staging.js +68 -0
  109. package/dist/core/relationship-staging.js.map +7 -0
  110. package/dist/core/relationships.js +26 -4
  111. package/dist/core/relationships.js.map +2 -2
  112. package/dist/core/report-data-model.js +7 -13
  113. package/dist/core/report-data-model.js.map +2 -2
  114. package/dist/core/staged-changeset-storage.js +64 -17
  115. package/dist/core/staged-changeset-storage.js.map +2 -2
  116. package/dist/core/staged-source-reference.js +28 -0
  117. package/dist/core/staged-source-reference.js.map +7 -0
  118. package/dist/core/staging-area.js +83 -18
  119. package/dist/core/staging-area.js.map +2 -2
  120. package/dist/core/virtual-projection.js +13 -5
  121. package/dist/core/virtual-projection.js.map +2 -2
  122. package/dist/export/archimate-exporter.js +1 -0
  123. package/dist/export/archimate-exporter.js.map +2 -2
  124. package/dist/generated/compiled-validators.js +2 -2
  125. package/dist/generated/compiled-validators.js.map +2 -2
  126. package/dist/generated/layer-registry.js +16 -16
  127. package/dist/generated/layer-registry.js.map +2 -2
  128. package/dist/generated/node-types.js +186 -168
  129. package/dist/generated/node-types.js.map +2 -2
  130. package/dist/generated/relationship-index.js +2236 -7790
  131. package/dist/generated/relationship-index.js.map +2 -2
  132. package/dist/integrations/claude_code/agents/dr-architect.md +16 -3
  133. package/dist/integrations/claude_code/agents/dr-extractor.md +1 -1
  134. package/dist/integrations/claude_code/commands/dr-analyzer.md +565 -0
  135. package/dist/integrations/claude_code/commands/dr-map.md +13 -0
  136. package/dist/integrations/claude_code/commands/dr-plan.md +40 -0
  137. package/dist/integrations/claude_code/commands/dr-relate.md +106 -96
  138. package/dist/integrations/claude_code/commands/dr-verify.md +45 -2
  139. package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +14 -0
  140. package/dist/integrations/claude_code/docs/MCP_SERVER.md +26 -2
  141. package/dist/integrations/claude_code/docs/QUICK_START.md +37 -8
  142. package/dist/integrations/claude_code/docs/README.md +48 -1
  143. package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +93 -72
  144. package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +163 -126
  145. package/dist/integrations/claude_code/skills/dr_03_product_layer/SKILL.md +161 -126
  146. package/dist/integrations/claude_code/skills/dr_04_security_layer/SKILL.md +153 -133
  147. package/dist/integrations/claude_code/skills/dr_05_application_layer/SKILL.md +129 -100
  148. package/dist/integrations/claude_code/skills/dr_06_technology_layer/SKILL.md +111 -94
  149. package/dist/integrations/claude_code/skills/dr_07_api_layer/SKILL.md +143 -157
  150. package/dist/integrations/claude_code/skills/dr_08_data_model_layer/SKILL.md +117 -33
  151. package/dist/integrations/claude_code/skills/dr_09_dataset_layer/SKILL.md +74 -25
  152. package/dist/integrations/claude_code/skills/dr_10_ux_layer/SKILL.md +88 -12
  153. package/dist/integrations/claude_code/skills/dr_11_navigation_layer/SKILL.md +83 -24
  154. package/dist/integrations/claude_code/skills/dr_12_apm_layer/SKILL.md +57 -12
  155. package/dist/integrations/claude_code/skills/dr_13_testing_layer/SKILL.md +92 -15
  156. package/dist/integrations/claude_code/skills/dr_change_planning/SKILL.md +119 -0
  157. package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +3 -0
  158. package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +1 -1
  159. package/dist/integrations/github_copilot/agents/dr-architect.md +1 -1
  160. package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +182 -102
  161. package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +266 -148
  162. package/dist/integrations/github_copilot/skills/dr_03_product_layer/SKILL.md +547 -86
  163. package/dist/integrations/github_copilot/skills/dr_04_security_layer/SKILL.md +164 -169
  164. package/dist/integrations/github_copilot/skills/dr_05_application_layer/SKILL.md +420 -150
  165. package/dist/integrations/github_copilot/skills/dr_06_technology_layer/SKILL.md +331 -138
  166. package/dist/integrations/github_copilot/skills/dr_07_api_layer/SKILL.md +265 -201
  167. package/dist/integrations/github_copilot/skills/dr_08_data_model_layer/SKILL.md +181 -58
  168. package/dist/integrations/github_copilot/skills/dr_09_dataset_layer/SKILL.md +209 -57
  169. package/dist/integrations/github_copilot/skills/dr_10_ux_layer/SKILL.md +277 -112
  170. package/dist/integrations/github_copilot/skills/dr_11_navigation_layer/SKILL.md +219 -70
  171. package/dist/integrations/github_copilot/skills/dr_12_apm_layer/SKILL.md +189 -105
  172. package/dist/integrations/github_copilot/skills/dr_13_testing_layer/SKILL.md +222 -102
  173. package/dist/integrations/github_copilot/skills/dr_change_planning/SKILL.md +119 -0
  174. package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +3 -0
  175. package/dist/integrations/hash-utils.js.map +2 -2
  176. package/dist/mcp/api-key-manager.js +14 -1
  177. package/dist/mcp/api-key-manager.js.map +2 -2
  178. package/dist/mcp/changeset-only.js +34 -0
  179. package/dist/mcp/changeset-only.js.map +7 -0
  180. package/dist/mcp/tool-registry.js +19 -3
  181. package/dist/mcp/tool-registry.js.map +2 -2
  182. package/dist/mcp/tools/changeset-analysis-tools.js +78 -0
  183. package/dist/mcp/tools/changeset-analysis-tools.js.map +7 -0
  184. package/dist/mcp/tools/changeset-editing.js +184 -0
  185. package/dist/mcp/tools/changeset-editing.js.map +7 -0
  186. package/dist/mcp/tools/changeset-lifecycle.js +83 -0
  187. package/dist/mcp/tools/changeset-lifecycle.js.map +7 -0
  188. package/dist/mcp/tools/changeset-shared.js +31 -0
  189. package/dist/mcp/tools/changeset-shared.js.map +7 -0
  190. package/dist/mcp/tools/changeset-show.js +17 -1
  191. package/dist/mcp/tools/changeset-show.js.map +2 -2
  192. package/dist/mcp/tools/changeset-verify.js +43 -0
  193. package/dist/mcp/tools/changeset-verify.js.map +7 -0
  194. package/dist/mcp/tools/index.js +19 -1
  195. package/dist/mcp/tools/index.js.map +2 -2
  196. package/dist/mcp/tools/model-add.js +6 -5
  197. package/dist/mcp/tools/model-add.js.map +2 -2
  198. package/dist/mcp/tools/model-delete.js +2 -2
  199. package/dist/mcp/tools/model-delete.js.map +2 -2
  200. package/dist/mcp/tools/model-search.js +14 -0
  201. package/dist/mcp/tools/model-search.js.map +2 -2
  202. package/dist/mcp/tools/model-show.js +29 -2
  203. package/dist/mcp/tools/model-show.js.map +2 -2
  204. package/dist/mcp/tools/model-trace.js +93 -30
  205. package/dist/mcp/tools/model-trace.js.map +2 -2
  206. package/dist/mcp/tools/model-update.js +35 -19
  207. package/dist/mcp/tools/model-update.js.map +2 -2
  208. package/dist/mcp/tools/relationship-tools.js +98 -0
  209. package/dist/mcp/tools/relationship-tools.js.map +7 -0
  210. package/dist/mcp/tools/shared.js +25 -2
  211. package/dist/mcp/tools/shared.js.map +2 -2
  212. package/dist/mcp/tools/spec-type.js +90 -0
  213. package/dist/mcp/tools/spec-type.js.map +7 -0
  214. package/dist/schemas/bundled/analyzers/cbm.json +1186 -68
  215. package/dist/schemas/bundled/analyzers/manifest.json +2 -2
  216. package/dist/schemas/bundled/api.json +1029 -1658
  217. package/dist/schemas/bundled/apm.json +499 -734
  218. package/dist/schemas/bundled/application.json +735 -371
  219. package/dist/schemas/bundled/base.json +3 -220
  220. package/dist/schemas/bundled/business.json +452 -366
  221. package/dist/schemas/bundled/data-model.json +395 -411
  222. package/dist/schemas/bundled/data-store.json +334 -558
  223. package/dist/schemas/bundled/manifest.json +18 -18
  224. package/dist/schemas/bundled/motivation.json +349 -368
  225. package/dist/schemas/bundled/navigation.json +415 -731
  226. package/dist/schemas/bundled/product.json +325 -159
  227. package/dist/schemas/bundled/security.json +864 -1232
  228. package/dist/schemas/bundled/technology.json +574 -703
  229. package/dist/schemas/bundled/testing.json +718 -1643
  230. package/dist/schemas/bundled/ux.json +739 -1352
  231. package/dist/server/schemas.js +8 -0
  232. package/dist/server/schemas.js.map +2 -2
  233. package/dist/server/server.js +218 -34
  234. package/dist/server/server.js.map +2 -2
  235. package/dist/server-entry.js +2 -1
  236. package/dist/server-entry.js.map +2 -2
  237. package/dist/telemetry/index.js +1 -1
  238. package/dist/utils/ansi-suppressor.js +6 -8
  239. package/dist/utils/ansi-suppressor.js.map +2 -2
  240. package/dist/utils/attribute-patch.js +41 -0
  241. package/dist/utils/attribute-patch.js.map +7 -0
  242. package/dist/utils/error-hints.js +29 -0
  243. package/dist/utils/error-hints.js.map +7 -0
  244. package/dist/utils/errors.js +9 -3
  245. package/dist/utils/errors.js.map +2 -2
  246. package/dist/utils/project-paths.js +26 -1
  247. package/dist/utils/project-paths.js.map +2 -2
  248. package/dist/utils/source-reference.js +14 -12
  249. package/dist/utils/source-reference.js.map +2 -2
  250. package/dist/utils/spec-version.js +2 -2
  251. package/dist/utils/spec-version.js.map +1 -1
  252. package/dist/validators/composed-reference-validator.js +5 -27
  253. package/dist/validators/composed-reference-validator.js.map +2 -2
  254. package/dist/validators/reference-validator.js +0 -7
  255. package/dist/validators/reference-validator.js.map +2 -2
  256. package/dist/validators/relationship-schema-validator.js +3 -3
  257. package/dist/validators/relationship-schema-validator.js.map +2 -2
  258. package/dist/validators/schema-validator.js +27 -9
  259. package/dist/validators/schema-validator.js.map +2 -2
  260. package/dist/validators/types.js.map +1 -1
  261. package/dist/viewer/README.md +6 -6
  262. package/dist/viewer/assets/main-CxzcuU_o.js +84 -0
  263. package/dist/viewer/assets/main-j-7ULYpm.css +1 -0
  264. package/dist/viewer/index.html +2 -2
  265. package/dist/viewer/manifest.json +10 -10
  266. package/dist/viewer/version.json +1 -1
  267. package/package.json +2 -1
  268. package/dist/viewer/assets/main-B7AOQXXX.js +0 -81
  269. package/dist/viewer/assets/main-vdrFrG7q.css +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/analyzers/cards/facts.ts"],
4
+ "sourcesContent": ["/**\n * Tier-0 structural facts: decorators and a few reuse counts, from one graph query per fact.\n */\nimport type { CardFacts, CardGraph } from \"./types.js\";\n\n/** `@field_validator(\"X\", mode=\"before\")` -> `field_validator`; `@router.get('/')` -> `router.get`. */\nexport function decoratorName(text: string): string {\n return text.trim().replace(/^@/, \"\").replace(/\\s*#.*$/, \"\").replace(/\\(.*$/s, \"\").trim();\n}\n\n/** CBM stores decorators as a JSON-encoded list (or, in some builds, a real one). */\nfunction parseList(v: unknown): string[] {\n if (Array.isArray(v)) return v.map(String);\n if (typeof v !== \"string\" || !v.trim()) return [];\n try {\n const p = JSON.parse(v);\n return Array.isArray(p) ? p.map(String) : [];\n } catch {\n return [];\n }\n}\n\nexport interface FactsIndex {\n /** full qualified name -> decorator texts */\n decorators: Map<string, string[]>;\n /** file path -> other files importing it */\n importers: Map<string, Set<string>>;\n /** full qualified name -> DEFINES_METHOD count */\n methods: Map<string, number>;\n /** full qualified name -> other files with USAGE edges into it */\n usage: Map<string, Set<string>>;\n}\n\nexport async function buildFactsIndex(graph: CardGraph): Promise<FactsIndex> {\n const decorators = new Map<string, string[]>();\n for (const [qn, decs] of await graph.rows(\"MATCH (b) WHERE b.decorators IS NOT NULL RETURN b.qualified_name, b.decorators\")) {\n if (typeof qn === \"string\") decorators.set(qn, parseList(decs));\n }\n const importers = new Map<string, Set<string>>();\n for (const [afile, bfile] of await graph.rows(\"MATCH (a)-[r:IMPORTS]->(b) RETURN a.file_path, b.file_path\")) {\n if (typeof afile !== \"string\" || typeof bfile !== \"string\" || !bfile || afile === bfile) continue;\n if (!importers.has(bfile)) importers.set(bfile, new Set());\n importers.get(bfile)!.add(afile);\n }\n const methods = new Map<string, number>();\n for (const [a] of await graph.rows(\"MATCH (a)-[r:DEFINES_METHOD]->(m) RETURN a.qualified_name, m.qualified_name\")) {\n if (typeof a === \"string\") methods.set(a, (methods.get(a) ?? 0) + 1);\n }\n const usage = new Map<string, Set<string>>();\n for (const [afile, b, bfile] of await graph.rows(\"MATCH (a)-[r:USAGE]->(b) RETURN a.file_path, b.qualified_name, b.file_path\")) {\n if (typeof afile !== \"string\" || typeof b !== \"string\" || afile === bfile) continue;\n if (!usage.has(b)) usage.set(b, new Set());\n usage.get(b)!.add(afile);\n }\n return { decorators, importers, methods, usage };\n}\n\n/** Facts for one symbol, by its full (project-prefixed) qualified name and file. */\nexport function factsFor(idx: FactsIndex, fullQualifiedName: string, filePath: string | null): CardFacts {\n const decorators = idx.decorators.get(fullQualifiedName) ?? [];\n return {\n decorators,\n decorator_names: decorators.map(decoratorName),\n file_importers: filePath ? (idx.importers.get(filePath)?.size ?? 0) : 0,\n methods: idx.methods.get(fullQualifiedName) ?? 0,\n usage_files: idx.usage.get(fullQualifiedName)?.size ?? 0,\n };\n}\n"],
5
+ "mappings": "AAMM,SAAU,cAAc,MAAY;AACxC,SAAO,KAAK,KAAI,EAAG,QAAQ,MAAM,EAAE,EAAE,QAAQ,WAAW,EAAE,EAAE,QAAQ,UAAU,EAAE,EAAE,KAAI;AACxF;AAGA,SAAS,UAAU,GAAU;AAC3B,MAAI,MAAM,QAAQ,CAAC;AAAG,WAAO,EAAE,IAAI,MAAM;AACzC,MAAI,OAAO,KAAM,YAAY,CAAC,EAAE,KAAI;AAAI,WAAO,CAAA;AAC/C,MAAI;AACF,UAAM,IAAI,KAAK,MAAM,CAAC;AACtB,WAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,CAAA;EAC5C,QAAQ;AACN,WAAO,CAAA;EACT;AACF;AAaA,eAAsB,gBAAgB,OAAgB;AACpD,QAAM,aAAa,oBAAI,IAAG;AAC1B,aAAW,CAAC,IAAI,IAAI,KAAK,MAAM,MAAM,KAAK,gFAAgF;AACxH,IAAI,OAAO,MAAO,YAAU,WAAW,IAAI,IAAI,UAAU,IAAI,CAAC;AAEhE,QAAM,YAAY,oBAAI,IAAG;AACzB,aAAW,CAAC,OAAO,KAAK,KAAK,MAAM,MAAM,KAAK,4DAA4D;AACxG,IAAI,OAAO,SAAU,YAAY,OAAO,SAAU,YAAY,CAAC,SAAS,UAAU,UAC7E,UAAU,IAAI,KAAK,KAAG,UAAU,IAAI,OAAO,oBAAI,IAAG,CAAE,GACzD,UAAU,IAAI,KAAK,EAAG,IAAI,KAAK;AAEjC,QAAM,UAAU,oBAAI,IAAG;AACvB,aAAW,CAAC,CAAC,KAAK,MAAM,MAAM,KAAK,6EAA6E;AAC9G,IAAI,OAAO,KAAM,YAAU,QAAQ,IAAI,IAAI,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC;AAErE,QAAM,QAAQ,oBAAI,IAAG;AACrB,aAAW,CAAC,OAAO,GAAG,KAAK,KAAK,MAAM,MAAM,KAAK,4EAA4E;AAC3H,IAAI,OAAO,SAAU,YAAY,OAAO,KAAM,YAAY,UAAU,UAC/D,MAAM,IAAI,CAAC,KAAG,MAAM,IAAI,GAAG,oBAAI,IAAG,CAAE,GACzC,MAAM,IAAI,CAAC,EAAG,IAAI,KAAK;AAEzB,SAAO,EAAE,YAAY,WAAW,SAAS,MAAK;AAChD;AAGM,SAAU,SAAS,KAAiB,mBAA2B,UAAuB;AAC1F,QAAM,aAAa,IAAI,WAAW,IAAI,iBAAiB,KAAK,CAAA;AAC5D,SAAO;IACL;IACA,iBAAiB,WAAW,IAAI,aAAa;IAC7C,gBAAgB,WAAY,IAAI,UAAU,IAAI,QAAQ,GAAG,QAAQ,IAAK;IACtE,SAAS,IAAI,QAAQ,IAAI,iBAAiB,KAAK;IAC/C,aAAa,IAAI,MAAM,IAAI,iBAAiB,GAAG,QAAQ;;AAE3D;",
6
+ "names": []
7
+ }
@@ -0,0 +1,42 @@
1
+ import { CbmToolError } from "../cbm-responses.js";
2
+ function graphNodeOf(node) {
3
+ const qualifiedName = String(node.qualified_name ?? node.name ?? "");
4
+ return {
5
+ ...node.properties ?? {},
6
+ label: node.label,
7
+ name: node.label === "Route" ? qualifiedName : String(node.name ?? ""),
8
+ qualified_name: qualifiedName,
9
+ file_path: typeof node.file_path == "string" ? node.file_path : ""
10
+ };
11
+ }
12
+ function cbmCardGraph(tools, project) {
13
+ return {
14
+ project,
15
+ async search(label, filePattern, fields) {
16
+ return (await tools.searchGraph({
17
+ project,
18
+ label,
19
+ ...filePattern ? { file_pattern: filePattern } : {},
20
+ ...fields.length ? { fields } : {}
21
+ })).map(graphNodeOf);
22
+ },
23
+ async rows(cypher) {
24
+ return (await tools.queryGraph(cypher, project)).rows;
25
+ },
26
+ async snippet(qualifiedName) {
27
+ try {
28
+ const raw = await tools.call("get_code_snippet", { project, qualified_name: qualifiedName, source_mode: "full" });
29
+ return raw && typeof raw.source == "string" ? { source: raw.source } : null;
30
+ } catch (error) {
31
+ if (error instanceof CbmToolError)
32
+ return null;
33
+ throw error;
34
+ }
35
+ }
36
+ };
37
+ }
38
+ export {
39
+ cbmCardGraph,
40
+ graphNodeOf
41
+ };
42
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/analyzers/cards/graph.ts"],
4
+ "sourcesContent": ["/**\n * The card builder's view of a CBM project, over the analyzer's {@link CbmTools}.\n */\nimport { CbmToolError, type CbmGraphNode, type CbmTools } from \"../cbm-responses.js\";\nimport type { CardGraph, GraphNode } from \"./types.js\";\n\n/**\n * Flatten a normalised search_graph node: its properties become top-level fields. A Route keeps\n * its full qualified name (`__route__GET__/owners`) as its name, since CBM's own name for it is\n * only the path, or a fragment of it.\n */\nexport function graphNodeOf(node: CbmGraphNode): GraphNode {\n const qualifiedName = String(node.qualified_name ?? node.name ?? \"\");\n const props = node.properties ?? {};\n return {\n ...props,\n label: node.label,\n name: node.label === \"Route\" ? qualifiedName : String(node.name ?? \"\"),\n qualified_name: qualifiedName,\n file_path: typeof node.file_path === \"string\" ? node.file_path : \"\",\n };\n}\n\nexport function cbmCardGraph(tools: CbmTools, project: string): CardGraph {\n return {\n project,\n async search(label, filePattern, fields) {\n const nodes = await tools.searchGraph({\n project,\n label,\n ...(filePattern ? { file_pattern: filePattern } : {}),\n ...(fields.length ? { fields } : {}),\n });\n return nodes.map(graphNodeOf);\n },\n async rows(cypher) {\n return (await tools.queryGraph(cypher, project)).rows;\n },\n async snippet(qualifiedName) {\n try {\n // CBM 0.12's default (\"auto\") outlines containers of 200+ lines and caps output at about\n // 2,500 tokens; \"full\" returns the source (up to 500 lines, uncapped).\n const raw = (await tools.call(\"get_code_snippet\", { project, qualified_name: qualifiedName, source_mode: \"full\" })) as { source?: unknown };\n return raw && typeof raw.source === \"string\" ? { source: raw.source } : null;\n } catch (error) {\n // An unknown or source-less symbol comes back as an error payload: no source.\n if (error instanceof CbmToolError) return null;\n throw error;\n }\n },\n };\n}\n"],
5
+ "mappings": "AAGA,SAAS,oBAAsD;AAQzD,SAAU,YAAY,MAAkB;AAC5C,QAAM,gBAAgB,OAAO,KAAK,kBAAkB,KAAK,QAAQ,EAAE;AAEnE,SAAO;IACL,GAFY,KAAK,cAAc,CAAA;IAG/B,OAAO,KAAK;IACZ,MAAM,KAAK,UAAU,UAAU,gBAAgB,OAAO,KAAK,QAAQ,EAAE;IACrE,gBAAgB;IAChB,WAAW,OAAO,KAAK,aAAc,WAAW,KAAK,YAAY;;AAErE;AAEM,SAAU,aAAa,OAAiB,SAAe;AAC3D,SAAO;IACL;IACA,MAAM,OAAO,OAAO,aAAa,QAAM;AAOrC,cANc,MAAM,MAAM,YAAY;QACpC;QACA;QACA,GAAI,cAAc,EAAE,cAAc,YAAW,IAAK,CAAA;QAClD,GAAI,OAAO,SAAS,EAAE,OAAM,IAAK,CAAA;OAClC,GACY,IAAI,WAAW;IAC9B;IACA,MAAM,KAAK,QAAM;AACf,cAAQ,MAAM,MAAM,WAAW,QAAQ,OAAO,GAAG;IACnD;IACA,MAAM,QAAQ,eAAa;AACzB,UAAI;AAGF,cAAM,MAAO,MAAM,MAAM,KAAK,oBAAoB,EAAE,SAAS,gBAAgB,eAAe,aAAa,OAAM,CAAE;AACjH,eAAO,OAAO,OAAO,IAAI,UAAW,WAAW,EAAE,QAAQ,IAAI,OAAM,IAAK;MAC1E,SAAS,OAAO;AAEd,YAAI,iBAAiB;AAAc,iBAAO;AAC1C,cAAM;MACR;IACF;;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ export * from "./types.js";
2
+ export * from "./graph.js";
3
+ export * from "./edge-index.js";
4
+ export * from "./facts.js";
5
+ export * from "./build.js";
6
+ export * from "./tier0.js";
7
+ export * from "./classify.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/analyzers/cards/index.ts"],
4
+ "sourcesContent": ["export * from \"./types.js\";\nexport * from \"./graph.js\";\nexport * from \"./edge-index.js\";\nexport * from \"./facts.js\";\nexport * from \"./build.js\";\nexport * from \"./tier0.js\";\nexport * from \"./classify.js\";\n"],
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
+ "names": []
7
+ }
@@ -0,0 +1,18 @@
1
+ import { declarationOf, evaluateTier0 } from "../tier0-rules.js";
2
+ function tier0SymbolOf(card, facts) {
3
+ return {
4
+ label: card.label,
5
+ name: card.name,
6
+ file_path: card.file_path,
7
+ declaration: declarationOf(card.source, card.signature),
8
+ decorator_names: facts?.decorator_names ?? []
9
+ };
10
+ }
11
+ function tier0ForCard(card, facts, rules) {
12
+ return evaluateTier0(tier0SymbolOf(card, facts), rules);
13
+ }
14
+ export {
15
+ tier0ForCard,
16
+ tier0SymbolOf
17
+ };
18
+ //# sourceMappingURL=tier0.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/analyzers/cards/tier0.ts"],
4
+ "sourcesContent": ["/**\n * Tier 0 on cards: the analyzer's rules (src/analyzers/tier0-rules.ts) applied to a card and its\n * facts. Used by `dr analyzer classify` and by the classify-eval harness.\n */\nimport { declarationOf, evaluateTier0, type Tier0Outcome, type Tier0Rule, type Tier0Symbol } from \"../tier0-rules.js\";\nimport type { CardFacts } from \"./types.js\";\n\n/** The card fields Tier 0 reads (a harness card, with its corpus field, also fits). */\nexport type Tier0Card = { label: string; name: string; file_path: string | null; source: string | null; signature: string | null };\n\nexport function tier0SymbolOf(card: Tier0Card, facts: CardFacts | undefined): Tier0Symbol {\n return {\n label: card.label,\n name: card.name,\n file_path: card.file_path,\n declaration: declarationOf(card.source, card.signature),\n decorator_names: facts?.decorator_names ?? [],\n };\n}\n\nexport function tier0ForCard(card: Tier0Card, facts: CardFacts | undefined, rules: Tier0Rule[]): Tier0Outcome | null {\n return evaluateTier0(tier0SymbolOf(card, facts), rules);\n}\n"],
5
+ "mappings": "AAIA,SAAS,eAAe,qBAA0E;AAM5F,SAAU,cAAc,MAAiB,OAA4B;AACzE,SAAO;IACL,OAAO,KAAK;IACZ,MAAM,KAAK;IACX,WAAW,KAAK;IAChB,aAAa,cAAc,KAAK,QAAQ,KAAK,SAAS;IACtD,iBAAiB,OAAO,mBAAmB,CAAA;;AAE/C;AAEM,SAAU,aAAa,MAAiB,OAA8B,OAAkB;AAC5F,SAAO,cAAc,cAAc,MAAM,KAAK,GAAG,KAAK;AACxD;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }