@documentation-robotics/cli 0.1.12 → 0.2.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 (189) hide show
  1. package/README.md +39 -1
  2. package/dist/analyzers/verify-engine.js +22 -19
  3. package/dist/analyzers/verify-engine.js.map +2 -2
  4. package/dist/cli.js +101 -27
  5. package/dist/cli.js.map +3 -3
  6. package/dist/coding-agents/agents/claude-code.js +3 -1
  7. package/dist/coding-agents/agents/claude-code.js.map +2 -2
  8. package/dist/coding-agents/claude-code-client.js +2 -1
  9. package/dist/coding-agents/claude-code-client.js.map +2 -2
  10. package/dist/coding-agents/copilot-client.js +17 -12
  11. package/dist/coding-agents/copilot-client.js.map +2 -2
  12. package/dist/coding-agents/default-permissions.js +122 -0
  13. package/dist/coding-agents/default-permissions.js.map +7 -0
  14. package/dist/commands/add.js +10 -6
  15. package/dist/commands/add.js.map +2 -2
  16. package/dist/commands/analyzer.js +18 -10
  17. package/dist/commands/analyzer.js.map +2 -2
  18. package/dist/commands/audit.js +6 -6
  19. package/dist/commands/audit.js.map +2 -2
  20. package/dist/commands/changeset.js +238 -145
  21. package/dist/commands/changeset.js.map +2 -2
  22. package/dist/commands/delete.js +45 -18
  23. package/dist/commands/delete.js.map +3 -3
  24. package/dist/commands/element.js +3 -2
  25. package/dist/commands/element.js.map +2 -2
  26. package/dist/commands/farm.js +657 -0
  27. package/dist/commands/farm.js.map +7 -0
  28. package/dist/commands/init.js +11 -1
  29. package/dist/commands/init.js.map +2 -2
  30. package/dist/commands/mcp.js +107 -0
  31. package/dist/commands/mcp.js.map +7 -0
  32. package/dist/commands/relationship.js +53 -30
  33. package/dist/commands/relationship.js.map +2 -2
  34. package/dist/commands/reports.js +1 -1
  35. package/dist/commands/reports.js.map +2 -2
  36. package/dist/commands/update.js +19 -6
  37. package/dist/commands/update.js.map +2 -2
  38. package/dist/commands/validate.js +41 -3
  39. package/dist/commands/validate.js.map +2 -2
  40. package/dist/commands/version.js +2 -2
  41. package/dist/commands/version.js.map +2 -2
  42. package/dist/config.js +83 -0
  43. package/dist/config.js.map +7 -0
  44. package/dist/core/annotation-store.js +138 -0
  45. package/dist/core/annotation-store.js.map +7 -0
  46. package/dist/core/farm-manifest.js +134 -0
  47. package/dist/core/farm-manifest.js.map +7 -0
  48. package/dist/core/farm-sync-engine.js +346 -0
  49. package/dist/core/farm-sync-engine.js.map +7 -0
  50. package/dist/core/farm-sync-state.js +159 -0
  51. package/dist/core/farm-sync-state.js.map +7 -0
  52. package/dist/core/manifest.js +6 -3
  53. package/dist/core/manifest.js.map +2 -2
  54. package/dist/core/migration-registry.js +55 -1
  55. package/dist/core/migration-registry.js.map +2 -2
  56. package/dist/core/model.js +177 -16
  57. package/dist/core/model.js.map +3 -3
  58. package/dist/core/virtual-projection.js +1 -0
  59. package/dist/core/virtual-projection.js.map +2 -2
  60. package/dist/generated/node-types.js +1 -1
  61. package/dist/generated/node-types.js.map +2 -2
  62. package/dist/generated/relationship-index.js +45 -9
  63. package/dist/generated/relationship-index.js.map +2 -2
  64. package/dist/integrations/claude_code/docs/MCP_SERVER.md +55 -0
  65. package/dist/integrations/claude_code/docs/README.md +4 -0
  66. package/dist/mcp/api-key-manager.js +98 -0
  67. package/dist/mcp/api-key-manager.js.map +7 -0
  68. package/dist/mcp/http-transport.js +176 -0
  69. package/dist/mcp/http-transport.js.map +7 -0
  70. package/dist/mcp/resource-registry.js +97 -0
  71. package/dist/mcp/resource-registry.js.map +7 -0
  72. package/dist/mcp/tool-registry.js +44 -0
  73. package/dist/mcp/tool-registry.js.map +7 -0
  74. package/dist/mcp/tools/annotation-create.js +39 -0
  75. package/dist/mcp/tools/annotation-create.js.map +7 -0
  76. package/dist/mcp/tools/annotation-delete.js +29 -0
  77. package/dist/mcp/tools/annotation-delete.js.map +7 -0
  78. package/dist/mcp/tools/annotation-get.js +29 -0
  79. package/dist/mcp/tools/annotation-get.js.map +7 -0
  80. package/dist/mcp/tools/annotation-list.js +24 -0
  81. package/dist/mcp/tools/annotation-list.js.map +7 -0
  82. package/dist/mcp/tools/annotation-reply.js +34 -0
  83. package/dist/mcp/tools/annotation-reply.js.map +7 -0
  84. package/dist/mcp/tools/annotation-shared.js +10 -0
  85. package/dist/mcp/tools/annotation-shared.js.map +7 -0
  86. package/dist/mcp/tools/annotation-update.js +39 -0
  87. package/dist/mcp/tools/annotation-update.js.map +7 -0
  88. package/dist/mcp/tools/changeset-list.js +33 -0
  89. package/dist/mcp/tools/changeset-list.js.map +7 -0
  90. package/dist/mcp/tools/changeset-show.js +39 -0
  91. package/dist/mcp/tools/changeset-show.js.map +7 -0
  92. package/dist/mcp/tools/chat-launch.js +50 -0
  93. package/dist/mcp/tools/chat-launch.js.map +7 -0
  94. package/dist/mcp/tools/chat-status.js +26 -0
  95. package/dist/mcp/tools/chat-status.js.map +7 -0
  96. package/dist/mcp/tools/index.js +47 -0
  97. package/dist/mcp/tools/index.js.map +7 -0
  98. package/dist/mcp/tools/model-add.js +106 -0
  99. package/dist/mcp/tools/model-add.js.map +7 -0
  100. package/dist/mcp/tools/model-delete.js +99 -0
  101. package/dist/mcp/tools/model-delete.js.map +7 -0
  102. package/dist/mcp/tools/model-export.js +72 -0
  103. package/dist/mcp/tools/model-export.js.map +7 -0
  104. package/dist/mcp/tools/model-info.js +51 -0
  105. package/dist/mcp/tools/model-info.js.map +7 -0
  106. package/dist/mcp/tools/model-list.js +53 -0
  107. package/dist/mcp/tools/model-list.js.map +7 -0
  108. package/dist/mcp/tools/model-reload.js +34 -0
  109. package/dist/mcp/tools/model-reload.js.map +7 -0
  110. package/dist/mcp/tools/model-search.js +88 -0
  111. package/dist/mcp/tools/model-search.js.map +7 -0
  112. package/dist/mcp/tools/model-show.js +41 -0
  113. package/dist/mcp/tools/model-show.js.map +7 -0
  114. package/dist/mcp/tools/model-stats.js +22 -0
  115. package/dist/mcp/tools/model-stats.js.map +7 -0
  116. package/dist/mcp/tools/model-trace.js +55 -0
  117. package/dist/mcp/tools/model-trace.js.map +7 -0
  118. package/dist/mcp/tools/model-update.js +105 -0
  119. package/dist/mcp/tools/model-update.js.map +7 -0
  120. package/dist/mcp/tools/model-validate.js +78 -0
  121. package/dist/mcp/tools/model-validate.js.map +7 -0
  122. package/dist/mcp/tools/shared.js +103 -0
  123. package/dist/mcp/tools/shared.js.map +7 -0
  124. package/dist/reports/model-layer-report-generator.js +5 -3
  125. package/dist/reports/model-layer-report-generator.js.map +2 -2
  126. package/dist/reports/model-readme-generator.js +116 -0
  127. package/dist/reports/model-readme-generator.js.map +7 -0
  128. package/dist/reports/model-report-data.js +37 -1
  129. package/dist/reports/model-report-data.js.map +2 -2
  130. package/dist/reports/model-report-orchestrator.js +29 -6
  131. package/dist/reports/model-report-orchestrator.js.map +2 -2
  132. package/dist/reports/model-report-utils.js +9 -0
  133. package/dist/reports/model-report-utils.js.map +7 -0
  134. package/dist/schemas/bundled/analyzers/cbm.json +2 -2
  135. package/dist/schemas/bundled/analyzers/manifest.json +2 -2
  136. package/dist/schemas/bundled/api.json +1 -1
  137. package/dist/schemas/bundled/apm.json +1 -1
  138. package/dist/schemas/bundled/application.json +12 -1
  139. package/dist/schemas/bundled/base.json +1 -1
  140. package/dist/schemas/bundled/business.json +1 -1
  141. package/dist/schemas/bundled/data-model.json +38 -2
  142. package/dist/schemas/bundled/data-store.json +1 -1
  143. package/dist/schemas/bundled/manifest.json +4 -4
  144. package/dist/schemas/bundled/motivation.json +1 -1
  145. package/dist/schemas/bundled/navigation.json +1 -1
  146. package/dist/schemas/bundled/product.json +1 -1
  147. package/dist/schemas/bundled/security.json +1 -1
  148. package/dist/schemas/bundled/technology.json +1 -1
  149. package/dist/schemas/bundled/testing.json +1 -1
  150. package/dist/schemas/bundled/ux.json +1 -1
  151. package/dist/server/server.js +45 -7
  152. package/dist/server/server.js.map +2 -2
  153. package/dist/telemetry/config.js +2 -40
  154. package/dist/telemetry/config.js.map +2 -2
  155. package/dist/telemetry/index.js +1 -1
  156. package/dist/types/index.js.map +2 -2
  157. package/dist/utils/ansi-suppressor.js +25 -0
  158. package/dist/utils/ansi-suppressor.js.map +7 -0
  159. package/dist/utils/color-utils.js +34 -0
  160. package/dist/utils/color-utils.js.map +7 -0
  161. package/dist/utils/element-reference-shape.js +15 -1
  162. package/dist/utils/element-reference-shape.js.map +3 -3
  163. package/dist/utils/errors.js +69 -10
  164. package/dist/utils/errors.js.map +2 -2
  165. package/dist/utils/globals.js +17 -1
  166. package/dist/utils/globals.js.map +2 -2
  167. package/dist/utils/project-paths.js +24 -2
  168. package/dist/utils/project-paths.js.map +2 -2
  169. package/dist/utils/reference-path-parser.js +49 -0
  170. package/dist/utils/reference-path-parser.js.map +7 -0
  171. package/dist/utils/source-reference.js +5 -0
  172. package/dist/utils/source-reference.js.map +2 -2
  173. package/dist/utils/spec-version.js +10 -2
  174. package/dist/utils/spec-version.js.map +2 -2
  175. package/dist/validators/composed-reference-validator.js +262 -0
  176. package/dist/validators/composed-reference-validator.js.map +7 -0
  177. package/dist/validators/reference-validator.js +59 -8
  178. package/dist/validators/reference-validator.js.map +3 -3
  179. package/dist/validators/relationship-schema-validator.js +30 -2
  180. package/dist/validators/relationship-schema-validator.js.map +3 -3
  181. package/dist/viewer/README.md +6 -6
  182. package/dist/viewer/assets/main-B7AOQXXX.js +81 -0
  183. package/dist/viewer/assets/main-vdrFrG7q.css +1 -0
  184. package/dist/viewer/index.html +2 -2
  185. package/dist/viewer/manifest.json +10 -10
  186. package/dist/viewer/version.json +1 -1
  187. package/package.json +6 -3
  188. package/dist/viewer/assets/main-BRPZyc36.css +0 -1
  189. package/dist/viewer/assets/main-BrpLargo.js +0 -81
@@ -1,5 +1,5 @@
1
1
  {
2
- "specVersion": "0.9.0",
2
+ "specVersion": "0.10.0",
3
3
  "layer": {
4
4
  "id": "testing",
5
5
  "number": 13,
@@ -1,5 +1,5 @@
1
1
  {
2
- "specVersion": "0.9.0",
2
+ "specVersion": "0.10.0",
3
3
  "layer": {
4
4
  "id": "ux",
5
5
  "number": 10,
@@ -17,6 +17,7 @@ import { telemetryMiddleware } from "./telemetry-middleware.js";
17
17
  import { ClaudeCodeClient } from "../coding-agents/claude-code-client.js";
18
18
  import { CopilotClient } from "../coding-agents/copilot-client.js";
19
19
  import { detectAvailableClients, selectChatClient } from "../coding-agents/chat-utils.js";
20
+ import { formatForClaudeCode, applyCopilotPermissions } from "../coding-agents/default-permissions.js";
20
21
  import { getErrorMessage } from "../utils/errors.js";
21
22
  import { AnnotationCreateSchema, AnnotationUpdateSchema, AnnotationReplyCreateSchema, LayerNameSchema, IdSchema, AnnotationFilterSchema, ErrorResponseSchema, HealthResponseSchema, AnnotationSchema, AnnotationReplySchema, AnnotationsListSchema, ChangesetsListSchema, ChangesetDetailSchema, ModelResponseSchema, LayerResponseSchema, SpecResponseSchema, AnnotationRepliesSchema, WSMessageSchema } from "./schemas.js";
22
23
  const JSONRPC_ERRORS = {
@@ -62,6 +63,8 @@ class VisualizationServer {
62
63
  // Selected chat client for server
63
64
  chatInitializationError;
64
65
  // Store initialization error for status endpoint
66
+ _testClaudeCmdOverride;
67
+ _testCopilotCmdOverride;
65
68
  /**
66
69
  * Valid spec node IDs per layer
67
70
  * Dynamically loaded from compiled spec (spec/dist/{layer}.json at module load time)
@@ -1263,13 +1266,31 @@ class VisualizationServer {
1263
1266
  id: requestId
1264
1267
  }));
1265
1268
  }
1269
+ /**
1270
+ * Build command arguments for Claude Code launch
1271
+ */
1272
+ buildClaudeChatArgs() {
1273
+ const cmd = ["claude", "--agent", "dr-architect", "--print"];
1274
+ return this.withDanger ? cmd.push("--dangerously-skip-permissions") : cmd.push("--allowedTools", formatForClaudeCode()), cmd.push("--verbose", "--output-format", "stream-json"), cmd;
1275
+ }
1276
+ /**
1277
+ * Add permission flags to Copilot command based on withDanger setting
1278
+ * Applies read-safe permissions when withDanger is false, with graceful degradation
1279
+ * if the installed Copilot CLI doesn't support granular permission flags.
1280
+ * @param cmd The command array to modify (will be mutated)
1281
+ * @param variant The Copilot variant for error messages (e.g., "gh copilot" or "copilot")
1282
+ */
1283
+ addCopilotPermissionFlags(cmd, variant) {
1284
+ const copilotCommand = cmd[0] === "gh" ? "gh" : "copilot";
1285
+ applyCopilotPermissions(cmd, variant, copilotCommand, this.withDanger);
1286
+ }
1266
1287
  /**
1267
1288
  * Launch Claude Code CLI with dr-architect agent and stream responses
1268
1289
  */
1269
1290
  async launchClaudeCodeChat(ws, conversationId, message, requestId) {
1270
1291
  try {
1271
- const cmd = ["claude", "--agent", "dr-architect", "--print"];
1272
- this.withDanger && cmd.push("--dangerously-skip-permissions"), cmd.push("--verbose", "--output-format", "stream-json");
1292
+ const cmd = this.buildClaudeChatArgs();
1293
+ this._testClaudeCmdOverride && cmd.splice(0, cmd.length, ...this._testClaudeCmdOverride);
1273
1294
  const proc = spawn(cmd[0], cmd.slice(1), {
1274
1295
  cwd: this.model.rootPath,
1275
1296
  stdio: ["pipe", "pipe", "pipe"]
@@ -1424,10 +1445,14 @@ class VisualizationServer {
1424
1445
  async launchCopilotChat(ws, conversationId, message, requestId) {
1425
1446
  try {
1426
1447
  let cmd;
1427
- const ghResult = spawnSync("gh", ["copilot", "--version"], {
1428
- stdio: ["ignore", "pipe", "pipe"]
1429
- });
1430
- ghResult.error ? console.warn(`[Copilot] 'gh copilot --version' probe failed to spawn: ${getErrorMessage(ghResult.error)}`) : ghResult.status !== 0 && process.env.VERBOSE && console.log(`[Copilot] 'gh copilot' unavailable (exit ${ghResult.status}), falling back to standalone 'copilot'`), ghResult.status === 0 ? (cmd = ["gh", "copilot", "explain"], this.withDanger && cmd.push("--allow-all-tools"), cmd.push(message)) : (cmd = ["copilot", "explain"], this.withDanger && cmd.push("--allow-all-tools"), cmd.push(message));
1448
+ if (this._testCopilotCmdOverride)
1449
+ cmd = [...this._testCopilotCmdOverride];
1450
+ else {
1451
+ const ghResult = spawnSync("gh", ["copilot", "--version"], {
1452
+ stdio: ["ignore", "pipe", "pipe"]
1453
+ });
1454
+ ghResult.error ? console.warn(`[Copilot] 'gh copilot --version' probe failed to spawn: ${getErrorMessage(ghResult.error)}`) : ghResult.status !== 0 && process.env.VERBOSE && console.log(`[Copilot] 'gh copilot' unavailable (exit ${ghResult.status}), falling back to standalone 'copilot'`), ghResult.status === 0 ? (cmd = ["gh", "copilot", "explain"], this.addCopilotPermissionFlags(cmd, "gh copilot"), cmd.push(message)) : (cmd = ["copilot", "explain"], this.addCopilotPermissionFlags(cmd, "copilot"), cmd.push(message));
1455
+ }
1431
1456
  const proc = spawn(cmd[0], cmd.slice(1), {
1432
1457
  cwd: this.model.rootPath,
1433
1458
  stdio: ["pipe", "pipe", "pipe"]
@@ -1497,7 +1522,20 @@ class VisualizationServer {
1497
1522
  }
1498
1523
  }
1499
1524
  })().catch((err) => {
1500
- console.error(`[Copilot] Stream error: ${getErrorMessage(err)}`);
1525
+ const errorMsg = getErrorMessage(err);
1526
+ console.error(`[Copilot] Stream error: ${errorMsg}`);
1527
+ try {
1528
+ ws.send(JSON.stringify({
1529
+ jsonrpc: "2.0",
1530
+ error: {
1531
+ code: JSONRPC_ERRORS.INTERNAL_ERROR,
1532
+ message: `Stream error: ${errorMsg}`
1533
+ },
1534
+ id: requestId
1535
+ }));
1536
+ } catch (sendError) {
1537
+ console.error(`[Copilot] Failed to send stream error notification: ${getErrorMessage(sendError)}`);
1538
+ }
1501
1539
  });
1502
1540
  } catch (error) {
1503
1541
  const errorMsg = getErrorMessage(error);