@rryando/arcs 3.0.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 (370) hide show
  1. package/README.md +448 -0
  2. package/dist/cli/arcs-orchestrate-caveman.d.ts +16 -0
  3. package/dist/cli/arcs-orchestrate-caveman.d.ts.map +1 -0
  4. package/dist/cli/arcs-orchestrate-caveman.js +109 -0
  5. package/dist/cli/arcs-orchestrate-caveman.js.map +1 -0
  6. package/dist/cli/arcs-orchestrate.d.ts +2 -0
  7. package/dist/cli/arcs-orchestrate.d.ts.map +1 -0
  8. package/dist/cli/arcs-orchestrate.js +431 -0
  9. package/dist/cli/arcs-orchestrate.js.map +1 -0
  10. package/dist/cli/arg-parser.d.ts +20 -0
  11. package/dist/cli/arg-parser.d.ts.map +1 -0
  12. package/dist/cli/arg-parser.js +216 -0
  13. package/dist/cli/arg-parser.js.map +1 -0
  14. package/dist/cli/brief-renderer.d.ts +32 -0
  15. package/dist/cli/brief-renderer.d.ts.map +1 -0
  16. package/dist/cli/brief-renderer.js +67 -0
  17. package/dist/cli/brief-renderer.js.map +1 -0
  18. package/dist/cli/bundle-installer.d.ts +77 -0
  19. package/dist/cli/bundle-installer.d.ts.map +1 -0
  20. package/dist/cli/bundle-installer.js +328 -0
  21. package/dist/cli/bundle-installer.js.map +1 -0
  22. package/dist/cli/command-registry.d.ts +52 -0
  23. package/dist/cli/command-registry.d.ts.map +1 -0
  24. package/dist/cli/command-registry.js +68 -0
  25. package/dist/cli/command-registry.js.map +1 -0
  26. package/dist/cli/commands/batch.d.ts +2 -0
  27. package/dist/cli/commands/batch.d.ts.map +1 -0
  28. package/dist/cli/commands/batch.js +307 -0
  29. package/dist/cli/commands/batch.js.map +1 -0
  30. package/dist/cli/commands/brief.d.ts +2 -0
  31. package/dist/cli/commands/brief.d.ts.map +1 -0
  32. package/dist/cli/commands/brief.js +146 -0
  33. package/dist/cli/commands/brief.js.map +1 -0
  34. package/dist/cli/commands/bundle.d.ts +2 -0
  35. package/dist/cli/commands/bundle.d.ts.map +1 -0
  36. package/dist/cli/commands/bundle.js +90 -0
  37. package/dist/cli/commands/bundle.js.map +1 -0
  38. package/dist/cli/commands/dependency.d.ts +2 -0
  39. package/dist/cli/commands/dependency.d.ts.map +1 -0
  40. package/dist/cli/commands/dependency.js +260 -0
  41. package/dist/cli/commands/dependency.js.map +1 -0
  42. package/dist/cli/commands/diagnostics.d.ts +2 -0
  43. package/dist/cli/commands/diagnostics.d.ts.map +1 -0
  44. package/dist/cli/commands/diagnostics.js +91 -0
  45. package/dist/cli/commands/diagnostics.js.map +1 -0
  46. package/dist/cli/commands/diagram.d.ts +2 -0
  47. package/dist/cli/commands/diagram.d.ts.map +1 -0
  48. package/dist/cli/commands/diagram.js +305 -0
  49. package/dist/cli/commands/diagram.js.map +1 -0
  50. package/dist/cli/commands/done.d.ts +2 -0
  51. package/dist/cli/commands/done.d.ts.map +1 -0
  52. package/dist/cli/commands/done.js +140 -0
  53. package/dist/cli/commands/done.js.map +1 -0
  54. package/dist/cli/commands/graph.d.ts +2 -0
  55. package/dist/cli/commands/graph.d.ts.map +1 -0
  56. package/dist/cli/commands/graph.js +105 -0
  57. package/dist/cli/commands/graph.js.map +1 -0
  58. package/dist/cli/commands/index.d.ts +21 -0
  59. package/dist/cli/commands/index.d.ts.map +1 -0
  60. package/dist/cli/commands/index.js +22 -0
  61. package/dist/cli/commands/index.js.map +1 -0
  62. package/dist/cli/commands/knowledge-search.d.ts +2 -0
  63. package/dist/cli/commands/knowledge-search.d.ts.map +1 -0
  64. package/dist/cli/commands/knowledge-search.js +43 -0
  65. package/dist/cli/commands/knowledge-search.js.map +1 -0
  66. package/dist/cli/commands/knowledge.d.ts +2 -0
  67. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  68. package/dist/cli/commands/knowledge.js +416 -0
  69. package/dist/cli/commands/knowledge.js.map +1 -0
  70. package/dist/cli/commands/loop.d.ts +2 -0
  71. package/dist/cli/commands/loop.d.ts.map +1 -0
  72. package/dist/cli/commands/loop.js +192 -0
  73. package/dist/cli/commands/loop.js.map +1 -0
  74. package/dist/cli/commands/maintenance.d.ts +2 -0
  75. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  76. package/dist/cli/commands/maintenance.js +231 -0
  77. package/dist/cli/commands/maintenance.js.map +1 -0
  78. package/dist/cli/commands/next.d.ts +2 -0
  79. package/dist/cli/commands/next.d.ts.map +1 -0
  80. package/dist/cli/commands/next.js +116 -0
  81. package/dist/cli/commands/next.js.map +1 -0
  82. package/dist/cli/commands/plan.d.ts +2 -0
  83. package/dist/cli/commands/plan.d.ts.map +1 -0
  84. package/dist/cli/commands/plan.js +340 -0
  85. package/dist/cli/commands/plan.js.map +1 -0
  86. package/dist/cli/commands/project-updates.d.ts +2 -0
  87. package/dist/cli/commands/project-updates.d.ts.map +1 -0
  88. package/dist/cli/commands/project-updates.js +243 -0
  89. package/dist/cli/commands/project-updates.js.map +1 -0
  90. package/dist/cli/commands/project.d.ts +2 -0
  91. package/dist/cli/commands/project.d.ts.map +1 -0
  92. package/dist/cli/commands/project.js +362 -0
  93. package/dist/cli/commands/project.js.map +1 -0
  94. package/dist/cli/commands/remember.d.ts +2 -0
  95. package/dist/cli/commands/remember.d.ts.map +1 -0
  96. package/dist/cli/commands/remember.js +70 -0
  97. package/dist/cli/commands/remember.js.map +1 -0
  98. package/dist/cli/commands/status.d.ts +2 -0
  99. package/dist/cli/commands/status.d.ts.map +1 -0
  100. package/dist/cli/commands/status.js +104 -0
  101. package/dist/cli/commands/status.js.map +1 -0
  102. package/dist/cli/commands/task.d.ts +6 -0
  103. package/dist/cli/commands/task.d.ts.map +1 -0
  104. package/dist/cli/commands/task.js +361 -0
  105. package/dist/cli/commands/task.js.map +1 -0
  106. package/dist/cli/commands/utility.d.ts +9 -0
  107. package/dist/cli/commands/utility.d.ts.map +1 -0
  108. package/dist/cli/commands/utility.js +302 -0
  109. package/dist/cli/commands/utility.js.map +1 -0
  110. package/dist/cli/config.d.ts +42 -0
  111. package/dist/cli/config.d.ts.map +1 -0
  112. package/dist/cli/config.js +134 -0
  113. package/dist/cli/config.js.map +1 -0
  114. package/dist/cli/dag-commands.d.ts +7 -0
  115. package/dist/cli/dag-commands.d.ts.map +1 -0
  116. package/dist/cli/dag-commands.js +152 -0
  117. package/dist/cli/dag-commands.js.map +1 -0
  118. package/dist/cli/diagram-renderer.d.ts +26 -0
  119. package/dist/cli/diagram-renderer.d.ts.map +1 -0
  120. package/dist/cli/diagram-renderer.js +118 -0
  121. package/dist/cli/diagram-renderer.js.map +1 -0
  122. package/dist/cli/help-generator.d.ts +21 -0
  123. package/dist/cli/help-generator.d.ts.map +1 -0
  124. package/dist/cli/help-generator.js +100 -0
  125. package/dist/cli/help-generator.js.map +1 -0
  126. package/dist/cli/index.d.ts +8 -0
  127. package/dist/cli/index.d.ts.map +1 -0
  128. package/dist/cli/index.js +95 -0
  129. package/dist/cli/index.js.map +1 -0
  130. package/dist/cli/instructions.d.ts +53 -0
  131. package/dist/cli/instructions.d.ts.map +1 -0
  132. package/dist/cli/instructions.js +219 -0
  133. package/dist/cli/instructions.js.map +1 -0
  134. package/dist/cli/lean-output.d.ts +15 -0
  135. package/dist/cli/lean-output.d.ts.map +1 -0
  136. package/dist/cli/lean-output.js +66 -0
  137. package/dist/cli/lean-output.js.map +1 -0
  138. package/dist/cli/md-renderer.d.ts +6 -0
  139. package/dist/cli/md-renderer.d.ts.map +1 -0
  140. package/dist/cli/md-renderer.js +396 -0
  141. package/dist/cli/md-renderer.js.map +1 -0
  142. package/dist/cli/output-envelope.d.ts +15 -0
  143. package/dist/cli/output-envelope.d.ts.map +1 -0
  144. package/dist/cli/output-envelope.js +61 -0
  145. package/dist/cli/output-envelope.js.map +1 -0
  146. package/dist/cli/setup.d.ts +11 -0
  147. package/dist/cli/setup.d.ts.map +1 -0
  148. package/dist/cli/setup.js +415 -0
  149. package/dist/cli/setup.js.map +1 -0
  150. package/dist/cli/status-dashboard.d.ts +5 -0
  151. package/dist/cli/status-dashboard.d.ts.map +1 -0
  152. package/dist/cli/status-dashboard.js +248 -0
  153. package/dist/cli/status-dashboard.js.map +1 -0
  154. package/dist/index.d.ts +3 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +25 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/retrieval/bm25.d.ts +23 -0
  159. package/dist/retrieval/bm25.d.ts.map +1 -0
  160. package/dist/retrieval/bm25.js +92 -0
  161. package/dist/retrieval/bm25.js.map +1 -0
  162. package/dist/retrieval/cross-project-search.d.ts +30 -0
  163. package/dist/retrieval/cross-project-search.d.ts.map +1 -0
  164. package/dist/retrieval/cross-project-search.js +109 -0
  165. package/dist/retrieval/cross-project-search.js.map +1 -0
  166. package/dist/retrieval/graph-builder.d.ts +6 -0
  167. package/dist/retrieval/graph-builder.d.ts.map +1 -0
  168. package/dist/retrieval/graph-builder.js +196 -0
  169. package/dist/retrieval/graph-builder.js.map +1 -0
  170. package/dist/retrieval/graph-cache.d.ts +15 -0
  171. package/dist/retrieval/graph-cache.d.ts.map +1 -0
  172. package/dist/retrieval/graph-cache.js +66 -0
  173. package/dist/retrieval/graph-cache.js.map +1 -0
  174. package/dist/retrieval/graph-invalidate.d.ts +18 -0
  175. package/dist/retrieval/graph-invalidate.d.ts.map +1 -0
  176. package/dist/retrieval/graph-invalidate.js +23 -0
  177. package/dist/retrieval/graph-invalidate.js.map +1 -0
  178. package/dist/retrieval/graph-retrieval.d.ts +24 -0
  179. package/dist/retrieval/graph-retrieval.d.ts.map +1 -0
  180. package/dist/retrieval/graph-retrieval.js +165 -0
  181. package/dist/retrieval/graph-retrieval.js.map +1 -0
  182. package/dist/retrieval/graph-traverse.d.ts +3 -0
  183. package/dist/retrieval/graph-traverse.d.ts.map +1 -0
  184. package/dist/retrieval/graph-traverse.js +53 -0
  185. package/dist/retrieval/graph-traverse.js.map +1 -0
  186. package/dist/retrieval/graph-types.d.ts +37 -0
  187. package/dist/retrieval/graph-types.d.ts.map +1 -0
  188. package/dist/retrieval/graph-types.js +12 -0
  189. package/dist/retrieval/graph-types.js.map +1 -0
  190. package/dist/retrieval/index-builder.d.ts +21 -0
  191. package/dist/retrieval/index-builder.d.ts.map +1 -0
  192. package/dist/retrieval/index-builder.js +94 -0
  193. package/dist/retrieval/index-builder.js.map +1 -0
  194. package/dist/retrieval/knowledge-selection.d.ts +7 -0
  195. package/dist/retrieval/knowledge-selection.d.ts.map +1 -0
  196. package/dist/retrieval/knowledge-selection.js +80 -0
  197. package/dist/retrieval/knowledge-selection.js.map +1 -0
  198. package/dist/retrieval/task-scoped.d.ts +23 -0
  199. package/dist/retrieval/task-scoped.d.ts.map +1 -0
  200. package/dist/retrieval/task-scoped.js +51 -0
  201. package/dist/retrieval/task-scoped.js.map +1 -0
  202. package/dist/utils/content-assembly.d.ts +44 -0
  203. package/dist/utils/content-assembly.d.ts.map +1 -0
  204. package/dist/utils/content-assembly.js +101 -0
  205. package/dist/utils/content-assembly.js.map +1 -0
  206. package/dist/utils/dag.d.ts +28 -0
  207. package/dist/utils/dag.d.ts.map +1 -0
  208. package/dist/utils/dag.js +68 -0
  209. package/dist/utils/dag.js.map +1 -0
  210. package/dist/utils/diagram-generator.d.ts +17 -0
  211. package/dist/utils/diagram-generator.d.ts.map +1 -0
  212. package/dist/utils/diagram-generator.js +38 -0
  213. package/dist/utils/diagram-generator.js.map +1 -0
  214. package/dist/utils/errors.d.ts +40 -0
  215. package/dist/utils/errors.d.ts.map +1 -0
  216. package/dist/utils/errors.js +83 -0
  217. package/dist/utils/errors.js.map +1 -0
  218. package/dist/utils/file-lock.d.ts +13 -0
  219. package/dist/utils/file-lock.d.ts.map +1 -0
  220. package/dist/utils/file-lock.js +80 -0
  221. package/dist/utils/file-lock.js.map +1 -0
  222. package/dist/utils/git.d.ts +14 -0
  223. package/dist/utils/git.d.ts.map +1 -0
  224. package/dist/utils/git.js +56 -0
  225. package/dist/utils/git.js.map +1 -0
  226. package/dist/utils/graphify-knowledge.d.ts +6 -0
  227. package/dist/utils/graphify-knowledge.d.ts.map +1 -0
  228. package/dist/utils/graphify-knowledge.js +60 -0
  229. package/dist/utils/graphify-knowledge.js.map +1 -0
  230. package/dist/utils/graphify.d.ts +49 -0
  231. package/dist/utils/graphify.d.ts.map +1 -0
  232. package/dist/utils/graphify.js +306 -0
  233. package/dist/utils/graphify.js.map +1 -0
  234. package/dist/utils/json-schemas.d.ts +723 -0
  235. package/dist/utils/json-schemas.d.ts.map +1 -0
  236. package/dist/utils/json-schemas.js +147 -0
  237. package/dist/utils/json-schemas.js.map +1 -0
  238. package/dist/utils/json.d.ts +15 -0
  239. package/dist/utils/json.d.ts.map +1 -0
  240. package/dist/utils/json.js +39 -0
  241. package/dist/utils/json.js.map +1 -0
  242. package/dist/utils/knowledge-store.d.ts +49 -0
  243. package/dist/utils/knowledge-store.d.ts.map +1 -0
  244. package/dist/utils/knowledge-store.js +191 -0
  245. package/dist/utils/knowledge-store.js.map +1 -0
  246. package/dist/utils/loop-state.d.ts +51 -0
  247. package/dist/utils/loop-state.d.ts.map +1 -0
  248. package/dist/utils/loop-state.js +123 -0
  249. package/dist/utils/loop-state.js.map +1 -0
  250. package/dist/utils/paths.d.ts +16 -0
  251. package/dist/utils/paths.d.ts.map +1 -0
  252. package/dist/utils/paths.js +66 -0
  253. package/dist/utils/paths.js.map +1 -0
  254. package/dist/utils/plan-store.d.ts +46 -0
  255. package/dist/utils/plan-store.d.ts.map +1 -0
  256. package/dist/utils/plan-store.js +184 -0
  257. package/dist/utils/plan-store.js.map +1 -0
  258. package/dist/utils/project-documents.d.ts +20 -0
  259. package/dist/utils/project-documents.d.ts.map +1 -0
  260. package/dist/utils/project-documents.js +10 -0
  261. package/dist/utils/project-documents.js.map +1 -0
  262. package/dist/utils/project-memory.d.ts +16 -0
  263. package/dist/utils/project-memory.d.ts.map +1 -0
  264. package/dist/utils/project-memory.js +16 -0
  265. package/dist/utils/project-memory.js.map +1 -0
  266. package/dist/utils/project-resolver.d.ts +28 -0
  267. package/dist/utils/project-resolver.d.ts.map +1 -0
  268. package/dist/utils/project-resolver.js +119 -0
  269. package/dist/utils/project-resolver.js.map +1 -0
  270. package/dist/utils/quick-scan.d.ts +13 -0
  271. package/dist/utils/quick-scan.d.ts.map +1 -0
  272. package/dist/utils/quick-scan.js +156 -0
  273. package/dist/utils/quick-scan.js.map +1 -0
  274. package/dist/utils/schemas.d.ts +13 -0
  275. package/dist/utils/schemas.d.ts.map +1 -0
  276. package/dist/utils/schemas.js +6 -0
  277. package/dist/utils/schemas.js.map +1 -0
  278. package/dist/utils/slug.d.ts +10 -0
  279. package/dist/utils/slug.d.ts.map +1 -0
  280. package/dist/utils/slug.js +18 -0
  281. package/dist/utils/slug.js.map +1 -0
  282. package/dist/utils/stdin.d.ts +6 -0
  283. package/dist/utils/stdin.d.ts.map +1 -0
  284. package/dist/utils/stdin.js +25 -0
  285. package/dist/utils/stdin.js.map +1 -0
  286. package/dist/utils/storage-utils.d.ts +48 -0
  287. package/dist/utils/storage-utils.d.ts.map +1 -0
  288. package/dist/utils/storage-utils.js +175 -0
  289. package/dist/utils/storage-utils.js.map +1 -0
  290. package/dist/utils/task-store.d.ts +49 -0
  291. package/dist/utils/task-store.d.ts.map +1 -0
  292. package/dist/utils/task-store.js +178 -0
  293. package/dist/utils/task-store.js.map +1 -0
  294. package/dist/utils/template.d.ts +15 -0
  295. package/dist/utils/template.d.ts.map +1 -0
  296. package/dist/utils/template.js +27 -0
  297. package/dist/utils/template.js.map +1 -0
  298. package/dist/utils/tool-response.d.ts +37 -0
  299. package/dist/utils/tool-response.d.ts.map +1 -0
  300. package/dist/utils/tool-response.js +44 -0
  301. package/dist/utils/tool-response.js.map +1 -0
  302. package/dist/utils/workflow-policy.d.ts +50 -0
  303. package/dist/utils/workflow-policy.d.ts.map +1 -0
  304. package/dist/utils/workflow-policy.js +111 -0
  305. package/dist/utils/workflow-policy.js.map +1 -0
  306. package/dist/utils/workspace-match.d.ts +35 -0
  307. package/dist/utils/workspace-match.d.ts.map +1 -0
  308. package/dist/utils/workspace-match.js +58 -0
  309. package/dist/utils/workspace-match.js.map +1 -0
  310. package/opencode/arcs/.opencode/plugins/arcs.js +348 -0
  311. package/opencode/arcs/bundle-runtime.json +68 -0
  312. package/opencode/arcs/manifest.json +279 -0
  313. package/opencode/arcs/prompts/arcs-docs.txt +124 -0
  314. package/opencode/arcs/prompts/arcs-orchestrate-caveman.txt +529 -0
  315. package/opencode/arcs/prompts/arcs-orchestrate.txt +437 -0
  316. package/opencode/arcs/prompts/code-reviewer.txt +55 -0
  317. package/opencode/arcs/prompts/devil-advocate.txt +121 -0
  318. package/opencode/arcs/prompts/docs-researcher.txt +54 -0
  319. package/opencode/arcs/prompts/oncall-ops.txt +54 -0
  320. package/opencode/arcs/prompts/qa-analyst.txt +54 -0
  321. package/opencode/arcs/prompts/software-engineer.txt +48 -0
  322. package/opencode/arcs/prompts/system-architect.txt +60 -0
  323. package/opencode/arcs/prompts/tech-architect.txt +54 -0
  324. package/opencode/arcs/skills/brainstorming/SKILL.md +144 -0
  325. package/opencode/arcs/skills/brainstorming/scripts/frame-template.html +214 -0
  326. package/opencode/arcs/skills/brainstorming/scripts/helper.js +88 -0
  327. package/opencode/arcs/skills/brainstorming/scripts/server.js +338 -0
  328. package/opencode/arcs/skills/brainstorming/scripts/start-server.sh +137 -0
  329. package/opencode/arcs/skills/brainstorming/scripts/stop-server.sh +31 -0
  330. package/opencode/arcs/skills/brainstorming/spec-document-reviewer-prompt.md +50 -0
  331. package/opencode/arcs/skills/brainstorming/visual-companion.md +277 -0
  332. package/opencode/arcs/skills/caveman-commit/SKILL.md +51 -0
  333. package/opencode/arcs/skills/code-agent/SKILL.md +58 -0
  334. package/opencode/arcs/skills/deep-pr-review/SKILL.md +191 -0
  335. package/opencode/arcs/skills/deep-pr-review/graphify-diff.md +102 -0
  336. package/opencode/arcs/skills/deep-pr-review/review-template.md +69 -0
  337. package/opencode/arcs/skills/executing-plans/SKILL.md +91 -0
  338. package/opencode/arcs/skills/init-project/SKILL.md +150 -0
  339. package/opencode/arcs/skills/quick-dev/SKILL.md +47 -0
  340. package/opencode/arcs/skills/requesting-code-review/SKILL.md +47 -0
  341. package/opencode/arcs/skills/requesting-code-review/code-reviewer.md +179 -0
  342. package/opencode/arcs/skills/subagent-driven-development/SKILL.md +162 -0
  343. package/opencode/arcs/skills/subagent-driven-development/code-quality-reviewer-prompt.md +53 -0
  344. package/opencode/arcs/skills/subagent-driven-development/implementer-prompt.md +148 -0
  345. package/opencode/arcs/skills/subagent-driven-development/spec-reviewer-prompt.md +85 -0
  346. package/opencode/arcs/skills/systematic-debugging/SKILL.md +174 -0
  347. package/opencode/arcs/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  348. package/opencode/arcs/skills/systematic-debugging/condition-based-waiting.md +115 -0
  349. package/opencode/arcs/skills/systematic-debugging/defense-in-depth.md +122 -0
  350. package/opencode/arcs/skills/systematic-debugging/find-polluter.sh +63 -0
  351. package/opencode/arcs/skills/systematic-debugging/phases-reference.md +168 -0
  352. package/opencode/arcs/skills/systematic-debugging/root-cause-tracing.md +169 -0
  353. package/opencode/arcs/skills/test-driven-development/SKILL.md +72 -0
  354. package/opencode/arcs/skills/test-driven-development/tdd-rationalizations-and-examples.md +157 -0
  355. package/opencode/arcs/skills/test-driven-development/testing-anti-patterns.md +299 -0
  356. package/opencode/arcs/skills/to-diagram/SKILL.md +235 -0
  357. package/opencode/arcs/skills/to-diagram/scripts/manage-diagram.mjs +963 -0
  358. package/opencode/arcs/skills/writing-plans/SKILL.md +179 -0
  359. package/opencode/arcs/skills/writing-plans/plan-document-reviewer-prompt.md +52 -0
  360. package/package.json +60 -0
  361. package/scripts/arcs-cli.mjs +45 -0
  362. package/skills/explore-dag.md +57 -0
  363. package/skills/init-project.md +105 -0
  364. package/skills/orchestrate.md +94 -0
  365. package/skills/update-docs.md +72 -0
  366. package/templates/dependency.md.tmpl +9 -0
  367. package/templates/knowledge.md.tmpl +15 -0
  368. package/templates/project-meta.json.tmpl +13 -0
  369. package/templates/project.md.tmpl +11 -0
  370. package/templates/task.md.tmpl +9 -0
@@ -0,0 +1,305 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Diagram commands — registry-based
3
+ // ---------------------------------------------------------------------------
4
+ import { execSync } from "node:child_process";
5
+ import { existsSync } from "node:fs";
6
+ import { access, writeFile } from "node:fs/promises";
7
+ import { homedir } from "node:os";
8
+ import { resolve } from "node:path";
9
+ import { generateDiagramFromTasks } from "../../utils/diagram-generator.js";
10
+ import { getDataDir, getProjectDir } from "../../utils/paths.js";
11
+ import { listTasks } from "../../utils/project-memory.js";
12
+ import { defineCommand, ERROR_CODES, } from "../command-registry.js";
13
+ import { failure, success } from "../output-envelope.js";
14
+ // ---------------------------------------------------------------------------
15
+ // Helpers
16
+ // ---------------------------------------------------------------------------
17
+ function findDiagramScript() {
18
+ const localPath = resolve(import.meta.dirname, "../../../opencode/arcs/skills/to-diagram/scripts/manage-diagram.mjs");
19
+ if (existsSync(localPath))
20
+ return localPath;
21
+ const configPath = resolve(homedir(), ".config/opencode/skills/arcs/to-diagram/scripts/manage-diagram.mjs");
22
+ if (existsSync(configPath))
23
+ return configPath;
24
+ return undefined;
25
+ }
26
+ function resolveDiagramPath(slug, planId) {
27
+ const dataDir = getDataDir();
28
+ return resolve(dataDir, "projects", slug, "plans", `${planId}.diagram.mmd`);
29
+ }
30
+ function runDiagramScript(scriptPath, subcommand, diagramPath, extraArgs = []) {
31
+ const argsStr = extraArgs.map((a) => `"${a}"`).join(" ");
32
+ return execSync(`node "${scriptPath}" ${subcommand} "${diagramPath}"${argsStr ? ` ${argsStr}` : ""}`, {
33
+ encoding: "utf-8",
34
+ timeout: 10000,
35
+ }).trim();
36
+ }
37
+ function requireScript() {
38
+ const scriptPath = findDiagramScript();
39
+ if (!scriptPath) {
40
+ return failure("script_not_found", "manage-diagram.mjs not found. Install ARCS OpenCode bundle: arcs setup");
41
+ }
42
+ return scriptPath;
43
+ }
44
+ function requireDiagramFile(slug, planId) {
45
+ const diagramPath = resolveDiagramPath(slug, planId);
46
+ if (!existsSync(diagramPath)) {
47
+ return failure(ERROR_CODES.ENTITY_NOT_FOUND, `No diagram found for plan "${planId}" in project "${slug}". Create one via brainstorm workflow.`);
48
+ }
49
+ return diagramPath;
50
+ }
51
+ function parseScriptOutput(output) {
52
+ try {
53
+ return JSON.parse(output);
54
+ }
55
+ catch {
56
+ return { output };
57
+ }
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // diagram ready
61
+ // ---------------------------------------------------------------------------
62
+ defineCommand({
63
+ path: "diagram ready",
64
+ description: "Show ready-to-execute nodes (all dependencies done)",
65
+ params: {
66
+ slug: { type: "string", required: true, positional: 0, description: "Project slug" },
67
+ planId: { type: "string", required: true, positional: 1, description: "Plan ID" },
68
+ },
69
+ handler: handleDiagramReady,
70
+ });
71
+ async function handleDiagramReady(params, _flags) {
72
+ const slug = params.slug;
73
+ const planId = params.planId;
74
+ const diagramPath = requireDiagramFile(slug, planId);
75
+ if (typeof diagramPath !== "string")
76
+ return diagramPath;
77
+ const scriptPath = requireScript();
78
+ if (typeof scriptPath !== "string")
79
+ return scriptPath;
80
+ try {
81
+ const output = runDiagramScript(scriptPath, "ready", diagramPath);
82
+ return success(parseScriptOutput(output));
83
+ }
84
+ catch (err) {
85
+ const msg = err instanceof Error ? err.stderr || err.message : String(err);
86
+ return failure("diagram_error", `diagram ready failed: ${msg}`);
87
+ }
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // diagram inspect
91
+ // ---------------------------------------------------------------------------
92
+ defineCommand({
93
+ path: "diagram inspect",
94
+ description: "Show diagram structure and metadata",
95
+ params: {
96
+ slug: { type: "string", required: true, positional: 0, description: "Project slug" },
97
+ planId: { type: "string", positional: 1, description: "Plan ID" },
98
+ },
99
+ handler: handleDiagramInspect,
100
+ });
101
+ async function handleDiagramInspect(params, _flags) {
102
+ const slug = params.slug;
103
+ const planId = params.planId;
104
+ const projectDir = getProjectDir(slug);
105
+ if (!existsSync(projectDir)) {
106
+ return failure(ERROR_CODES.PROJECT_NOT_FOUND, `Project "${slug}" not found`);
107
+ }
108
+ if (!planId) {
109
+ return failure(ERROR_CODES.MISSING_PARAM, "--planId is required", {
110
+ hint: "usage: arcs diagram inspect <slug> <planId>",
111
+ });
112
+ }
113
+ const diagramPath = requireDiagramFile(slug, planId);
114
+ if (typeof diagramPath !== "string")
115
+ return diagramPath;
116
+ const scriptPath = requireScript();
117
+ if (typeof scriptPath !== "string")
118
+ return scriptPath;
119
+ try {
120
+ const output = runDiagramScript(scriptPath, "inspect", diagramPath);
121
+ return success(parseScriptOutput(output));
122
+ }
123
+ catch (err) {
124
+ const msg = err instanceof Error ? err.stderr || err.message : String(err);
125
+ return failure("diagram_error", `diagram inspect failed: ${msg}`);
126
+ }
127
+ }
128
+ // ---------------------------------------------------------------------------
129
+ // diagram validate
130
+ // ---------------------------------------------------------------------------
131
+ defineCommand({
132
+ path: "diagram validate",
133
+ description: "Validate diagram integrity",
134
+ params: {
135
+ slug: { type: "string", required: true, positional: 0, description: "Project slug" },
136
+ planId: { type: "string", required: true, positional: 1, description: "Plan ID" },
137
+ },
138
+ handler: handleDiagramValidate,
139
+ });
140
+ async function handleDiagramValidate(params, _flags) {
141
+ const slug = params.slug;
142
+ const planId = params.planId;
143
+ const diagramPath = requireDiagramFile(slug, planId);
144
+ if (typeof diagramPath !== "string")
145
+ return diagramPath;
146
+ const scriptPath = requireScript();
147
+ if (typeof scriptPath !== "string")
148
+ return scriptPath;
149
+ try {
150
+ const output = runDiagramScript(scriptPath, "validate", diagramPath);
151
+ return success(parseScriptOutput(output));
152
+ }
153
+ catch (err) {
154
+ const msg = err instanceof Error ? err.stderr || err.message : String(err);
155
+ return failure("diagram_error", `diagram validate failed: ${msg}`);
156
+ }
157
+ }
158
+ // ---------------------------------------------------------------------------
159
+ // diagram status
160
+ // ---------------------------------------------------------------------------
161
+ defineCommand({
162
+ path: "diagram status",
163
+ description: "Update a diagram node's status",
164
+ mutation: true,
165
+ params: {
166
+ slug: { type: "string", required: true, positional: 0, description: "Project slug" },
167
+ planId: { type: "string", required: true, positional: 1, description: "Plan ID" },
168
+ nodeId: { type: "string", required: true, positional: 2, description: "Node ID to update" },
169
+ status: {
170
+ type: "string",
171
+ required: true,
172
+ positional: 3,
173
+ description: "New status",
174
+ enum: ["backlog", "in_progress", "done", "blocked"],
175
+ },
176
+ },
177
+ handler: handleDiagramStatus,
178
+ });
179
+ async function handleDiagramStatus(params, _flags) {
180
+ const slug = params.slug;
181
+ const planId = params.planId;
182
+ const nodeId = params.nodeId;
183
+ const status = params.status;
184
+ const diagramPath = requireDiagramFile(slug, planId);
185
+ if (typeof diagramPath !== "string")
186
+ return diagramPath;
187
+ const scriptPath = requireScript();
188
+ if (typeof scriptPath !== "string")
189
+ return scriptPath;
190
+ try {
191
+ const output = runDiagramScript(scriptPath, "status", diagramPath, [nodeId, status]);
192
+ return success(parseScriptOutput(output));
193
+ }
194
+ catch (err) {
195
+ const msg = err instanceof Error ? err.stderr || err.message : String(err);
196
+ return failure("diagram_error", `diagram status failed: ${msg}`);
197
+ }
198
+ }
199
+ // ---------------------------------------------------------------------------
200
+ // diagram sort-metadata
201
+ // ---------------------------------------------------------------------------
202
+ defineCommand({
203
+ path: "diagram sort-metadata",
204
+ description: "Sort metadata blocks in diagram file",
205
+ mutation: true,
206
+ params: {
207
+ slug: { type: "string", required: true, positional: 0, description: "Project slug" },
208
+ planId: { type: "string", required: true, positional: 1, description: "Plan ID" },
209
+ },
210
+ handler: handleDiagramSortMetadata,
211
+ });
212
+ async function handleDiagramSortMetadata(params, _flags) {
213
+ const slug = params.slug;
214
+ const planId = params.planId;
215
+ const diagramPath = requireDiagramFile(slug, planId);
216
+ if (typeof diagramPath !== "string")
217
+ return diagramPath;
218
+ const scriptPath = requireScript();
219
+ if (typeof scriptPath !== "string")
220
+ return scriptPath;
221
+ try {
222
+ const output = runDiagramScript(scriptPath, "sort-metadata", diagramPath);
223
+ return success(parseScriptOutput(output));
224
+ }
225
+ catch (err) {
226
+ const msg = err instanceof Error ? err.stderr || err.message : String(err);
227
+ return failure("diagram_error", `diagram sort-metadata failed: ${msg}`);
228
+ }
229
+ }
230
+ // ---------------------------------------------------------------------------
231
+ // diagram show
232
+ // ---------------------------------------------------------------------------
233
+ defineCommand({
234
+ path: "diagram show",
235
+ description: "Render diagram in terminal",
236
+ params: {
237
+ path: { type: "string", required: true, positional: 0, description: "Path to .mmd file" },
238
+ },
239
+ handler: handleDiagramShow,
240
+ });
241
+ async function handleDiagramShow(params, _flags) {
242
+ const path = params.path;
243
+ if (!existsSync(path)) {
244
+ return failure(ERROR_CODES.ENTITY_NOT_FOUND, `File not found: ${path}`);
245
+ }
246
+ try {
247
+ const { renderDiagramShow } = await import("../diagram-renderer.js");
248
+ const output = renderDiagramShow(path);
249
+ return success({ output });
250
+ }
251
+ catch (err) {
252
+ return failure("diagram_error", err instanceof Error ? err.message : String(err));
253
+ }
254
+ }
255
+ // ---------------------------------------------------------------------------
256
+ // diagram init
257
+ // ---------------------------------------------------------------------------
258
+ defineCommand({
259
+ path: "diagram init",
260
+ description: "Generate skeleton .diagram.mmd for a plan from its existing tasks",
261
+ params: {
262
+ slug: { type: "string", positional: 0, required: true, description: "Project slug" },
263
+ planId: { type: "string", positional: 1, required: true, description: "Plan ID" },
264
+ force: { type: "boolean", description: "Overwrite existing .mmd file" },
265
+ },
266
+ mutation: true,
267
+ errorCodes: ["project_not_found", "entity_not_found", "conflict"],
268
+ handler: async (params, _flags) => {
269
+ const { slug, planId, force } = params;
270
+ const projectDir = getProjectDir(slug);
271
+ try {
272
+ await access(projectDir);
273
+ }
274
+ catch {
275
+ return { ok: false, code: "project_not_found", message: `Project not found: ${slug}` };
276
+ }
277
+ const allTasks = await listTasks(projectDir);
278
+ const planTasks = allTasks.filter((t) => t.planId === planId);
279
+ if (planTasks.length === 0) {
280
+ return {
281
+ ok: false,
282
+ code: "entity_not_found",
283
+ message: `No tasks found for plan '${planId}' in project '${slug}'. Create tasks with --planId first.`,
284
+ };
285
+ }
286
+ const diagramPath = resolveDiagramPath(slug, planId);
287
+ if (!force) {
288
+ try {
289
+ await access(diagramPath);
290
+ return {
291
+ ok: false,
292
+ code: "conflict",
293
+ message: `Diagram already exists: ${diagramPath}. Use --force to overwrite.`,
294
+ };
295
+ }
296
+ catch {
297
+ // file does not exist — proceed
298
+ }
299
+ }
300
+ const { mmd, nodes } = generateDiagramFromTasks(planId, planTasks);
301
+ await writeFile(diagramPath, mmd, "utf-8");
302
+ return { ok: true, data: { path: diagramPath, planId, nodeCount: nodes.length, nodes } };
303
+ },
304
+ });
305
+ //# sourceMappingURL=diagram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram.js","sourceRoot":"","sources":["../../../src/cli/commands/diagram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=done.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/done.ts"],"names":[],"mappings":""}
@@ -0,0 +1,140 @@
1
+ // ---------------------------------------------------------------------------
2
+ // done — Mark a task as done and show the next task to work on
3
+ // ---------------------------------------------------------------------------
4
+ import { existsSync } from "node:fs";
5
+ import { createKnowledgeEntry, getTask, listTasks, readPlanIndex, updateTask, } from "../../utils/project-memory.js";
6
+ import { resolveProject } from "../../utils/project-resolver.js";
7
+ import { normalizeIdentifier } from "../../utils/slug.js";
8
+ import { defineCommand, ERROR_CODES, } from "../command-registry.js";
9
+ import { failure, success } from "../output-envelope.js";
10
+ import { attemptDiagramUpdate } from "./task.js";
11
+ // ---------------------------------------------------------------------------
12
+ defineCommand({
13
+ path: "done",
14
+ description: "Mark a task as done and show the next task",
15
+ mutation: true,
16
+ params: {
17
+ slug: {
18
+ type: "string",
19
+ required: true,
20
+ positional: 0,
21
+ description: "Project slug",
22
+ },
23
+ taskId: {
24
+ type: "string",
25
+ required: true,
26
+ positional: 1,
27
+ description: "Task ID to mark as done",
28
+ },
29
+ planId: { type: "string", description: "Plan ID (enables atomic diagram update)" },
30
+ diagramNodeId: { type: "string", description: "Diagram node ID to update (e.g. T001)" },
31
+ learn: { type: "string", description: "Capture a quick insight linked to this task" },
32
+ },
33
+ handler: handleDone,
34
+ });
35
+ // ---------------------------------------------------------------------------
36
+ async function handleDone(params, flags) {
37
+ const rawSlug = params.slug;
38
+ const taskId = params.taskId;
39
+ const planIdParam = params.planId;
40
+ const diagramNodeId = params.diagramNodeId;
41
+ const learnText = params.learn;
42
+ const resolved = await resolveProject(rawSlug);
43
+ if (!resolved.ok)
44
+ return resolved.result;
45
+ const { slug, projectDir } = resolved;
46
+ // Validate project directory exists
47
+ if (!existsSync(projectDir)) {
48
+ return failure(ERROR_CODES.PROJECT_NOT_FOUND, `Project "${slug}" not found`, {
49
+ hint: "Run 'arcs project list' to see available projects.",
50
+ });
51
+ }
52
+ // Get and transition the task
53
+ let completedTask;
54
+ try {
55
+ const task = await getTask(projectDir, taskId);
56
+ await updateTask(projectDir, { id: taskId, status: "done" });
57
+ completedTask = { id: task.id, title: task.title };
58
+ // Attempt diagram update if planId and diagramNodeId available
59
+ const effectivePlanId = planIdParam ?? task.planId;
60
+ if (effectivePlanId && diagramNodeId) {
61
+ attemptDiagramUpdate(slug, effectivePlanId, diagramNodeId, "done");
62
+ }
63
+ }
64
+ catch (err) {
65
+ return failure(ERROR_CODES.ENTITY_NOT_FOUND, err instanceof Error ? err.message : String(err));
66
+ }
67
+ // Derive next task
68
+ const [allTasks, planIndex] = await Promise.all([
69
+ listTasks(projectDir),
70
+ readPlanIndex(projectDir),
71
+ ]);
72
+ const openTasks = allTasks.filter((t) => t.status !== "done" && t.status !== "cancelled");
73
+ const priorityOrder = { high: 0, medium: 1, low: 2 };
74
+ const sorted = [...openTasks].sort((a, b) => {
75
+ if (a.status === "in_progress" && b.status !== "in_progress")
76
+ return -1;
77
+ if (b.status === "in_progress" && a.status !== "in_progress")
78
+ return 1;
79
+ const pa = priorityOrder[a.priority ?? "medium"] ?? 1;
80
+ const pb = priorityOrder[b.priority ?? "medium"] ?? 1;
81
+ return pa - pb;
82
+ });
83
+ const nextTask = sorted[0];
84
+ const nextPlan = nextTask?.planId
85
+ ? planIndex.plans.find((p) => p.id === nextTask.planId)
86
+ : undefined;
87
+ const nextData = nextTask
88
+ ? { id: nextTask.id, title: nextTask.title, plan: nextPlan?.title ?? null }
89
+ : null;
90
+ // Capture --learn insight if provided
91
+ let learnedEntry = null;
92
+ if (learnText) {
93
+ try {
94
+ const lower = learnText.toLowerCase();
95
+ const kind = /don't|never|careful|watch out|gotcha/.test(lower)
96
+ ? "gotcha"
97
+ : /learned|lesson|realized|mistake/.test(lower)
98
+ ? "lesson"
99
+ : /pattern|always|convention|rule/.test(lower)
100
+ ? "pattern"
101
+ : "lesson";
102
+ const title = learnText.length <= 50 ? learnText : `${learnText.slice(0, 50)}...`;
103
+ const id = normalizeIdentifier(title);
104
+ const entry = await createKnowledgeEntry(projectDir, {
105
+ id,
106
+ title,
107
+ kind: kind,
108
+ keywords: [completedTask.id],
109
+ summary: learnText,
110
+ });
111
+ learnedEntry = { id: entry.id, title: entry.title, kind: entry.kind };
112
+ }
113
+ catch {
114
+ // Best-effort — don't fail the done command for a learn error
115
+ }
116
+ }
117
+ if (flags.json) {
118
+ return success({
119
+ completed: completedTask,
120
+ next: nextData,
121
+ ...(learnedEntry ? { learned: learnedEntry } : {}),
122
+ });
123
+ }
124
+ const lines = [`✓ Done: ${completedTask.title}`, ""];
125
+ if (nextData) {
126
+ lines.push(`Next: ${nextData.title}`);
127
+ if (nextData.plan)
128
+ lines.push(`Plan: ${nextData.plan}`);
129
+ lines.push("");
130
+ lines.push(`Run: arcs done ${slug} ${nextData.id}`);
131
+ }
132
+ else {
133
+ lines.push("All tasks complete! Nothing left to do.");
134
+ }
135
+ if (learnedEntry) {
136
+ lines.push(`✓ Remembered [${learnedEntry.kind}]: ${learnedEntry.title}`);
137
+ }
138
+ return success(lines.join("\n"));
139
+ }
140
+ //# sourceMappingURL=done.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"done.js","sourceRoot":"","sources":["../../../src/cli/commands/done.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/graph.ts"],"names":[],"mappings":""}
@@ -0,0 +1,105 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Graph-related commands — related, graph inspect (registry-based)
3
+ // ---------------------------------------------------------------------------
4
+ import { existsSync } from "node:fs";
5
+ import { createGraphCache } from "../../retrieval/graph-cache.js";
6
+ import { retrieveRelated } from "../../retrieval/graph-retrieval.js";
7
+ import { getProjectDir } from "../../utils/paths.js";
8
+ import { defineCommand, ERROR_CODES, } from "../command-registry.js";
9
+ import { failure, success } from "../output-envelope.js";
10
+ // ---------------------------------------------------------------------------
11
+ // related
12
+ // ---------------------------------------------------------------------------
13
+ defineCommand({
14
+ path: "related",
15
+ description: "Find entities related to a task, knowledge entry, or plan via the knowledge graph",
16
+ params: {
17
+ slug: { type: "string", required: true, positional: 0, description: "Project slug" },
18
+ task: { type: "string", description: "Task ID to find related entities for" },
19
+ plan: { type: "string", description: "Plan ID to find related entities for" },
20
+ knowledge: { type: "string", description: "Knowledge entry ID to find related entities for" },
21
+ limit: { type: "number", description: "Max results to return (default 10)" },
22
+ },
23
+ handler: handleRelatedCmd,
24
+ });
25
+ async function handleRelatedCmd(params, _flags) {
26
+ const slug = params.slug;
27
+ const taskId = params.task;
28
+ const knowledgeId = params.knowledge;
29
+ const planId = params.plan;
30
+ if (!taskId && !knowledgeId && !planId) {
31
+ return failure(ERROR_CODES.MISSING_PARAM, "One of --task, --knowledge, or --plan is required", {
32
+ usage: "arcs related <slug> --task=<id> | --knowledge=<id> | --plan=<id> [--limit=N] [--json]",
33
+ });
34
+ }
35
+ let startNodeId;
36
+ if (taskId) {
37
+ startNodeId = `task:${taskId}`;
38
+ }
39
+ else if (knowledgeId) {
40
+ startNodeId = `knowledge:${knowledgeId}`;
41
+ }
42
+ else {
43
+ startNodeId = `plan:${planId}`;
44
+ }
45
+ const limit = params.limit ?? 10;
46
+ const results = await retrieveRelated(slug, startNodeId, { limit });
47
+ return success({ related: results });
48
+ }
49
+ // ---------------------------------------------------------------------------
50
+ // graph inspect
51
+ // ---------------------------------------------------------------------------
52
+ defineCommand({
53
+ path: "graph inspect",
54
+ description: "Show knowledge graph index statistics for a project",
55
+ params: {
56
+ slug: { type: "string", required: true, positional: 0, description: "Project slug" },
57
+ },
58
+ handler: handleGraphInspectCmd,
59
+ });
60
+ async function handleGraphInspectCmd(params, _flags) {
61
+ const slug = params.slug;
62
+ const projectDir = getProjectDir(slug);
63
+ if (!existsSync(projectDir)) {
64
+ return failure(ERROR_CODES.PROJECT_NOT_FOUND, `Project "${slug}" not found`);
65
+ }
66
+ const cache = createGraphCache();
67
+ const index = await cache.getOrBuild(slug);
68
+ const nodeCount = index.nodes.size;
69
+ let edgeCount = 0;
70
+ for (const edgeList of index.edges.values()) {
71
+ edgeCount += edgeList.length;
72
+ }
73
+ const nodesByType = {};
74
+ for (const node of index.nodes.values()) {
75
+ nodesByType[node.type] = (nodesByType[node.type] || 0) + 1;
76
+ }
77
+ const mostConnectedFiles = [...index.fileIndex.entries()]
78
+ .map(([path, refs]) => ({ path, refs: refs.length }))
79
+ .sort((a, b) => b.refs - a.refs)
80
+ .slice(0, 10);
81
+ // Orphan nodes: no outgoing AND no incoming edges
82
+ const hasConnection = new Set();
83
+ for (const [source, edgeList] of index.edges.entries()) {
84
+ if (edgeList.length > 0)
85
+ hasConnection.add(source);
86
+ for (const edge of edgeList) {
87
+ hasConnection.add(edge.target);
88
+ }
89
+ }
90
+ const orphanNodes = [];
91
+ for (const nodeId of index.nodes.keys()) {
92
+ if (!hasConnection.has(nodeId))
93
+ orphanNodes.push(nodeId);
94
+ }
95
+ const density = nodeCount > 1 ? edgeCount / (nodeCount * (nodeCount - 1)) : 0;
96
+ return success({
97
+ nodeCount,
98
+ edgeCount,
99
+ nodesByType,
100
+ mostConnectedFiles,
101
+ orphanNodes,
102
+ density: Math.round(density * 1000) / 1000,
103
+ });
104
+ }
105
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/cli/commands/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import "./project.js";
2
+ import "./project-updates.js";
3
+ import "./task.js";
4
+ import "./plan.js";
5
+ import "./knowledge.js";
6
+ import "./knowledge-search.js";
7
+ import "./utility.js";
8
+ import "./batch.js";
9
+ import "./diagram.js";
10
+ import "./diagnostics.js";
11
+ import "./graph.js";
12
+ import "./dependency.js";
13
+ import "./bundle.js";
14
+ import "./maintenance.js";
15
+ import "./loop.js";
16
+ import "./brief.js";
17
+ import "./next.js";
18
+ import "./remember.js";
19
+ import "./done.js";
20
+ import "./status.js";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,CAAC;AACtB,OAAO,sBAAsB,CAAC;AAC9B,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AACnB,OAAO,gBAAgB,CAAC;AACxB,OAAO,uBAAuB,CAAC;AAC/B,OAAO,cAAc,CAAC;AACtB,OAAO,YAAY,CAAC;AACpB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,YAAY,CAAC;AACpB,OAAO,iBAAiB,CAAC;AACzB,OAAO,aAAa,CAAC;AACrB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,WAAW,CAAC;AACnB,OAAO,YAAY,CAAC;AACpB,OAAO,WAAW,CAAC;AACnB,OAAO,eAAe,CAAC;AACvB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC"}
@@ -0,0 +1,22 @@
1
+ // Import command files to register them with the registry
2
+ import "./project.js";
3
+ import "./project-updates.js";
4
+ import "./task.js";
5
+ import "./plan.js";
6
+ import "./knowledge.js";
7
+ import "./knowledge-search.js";
8
+ import "./utility.js";
9
+ import "./batch.js";
10
+ import "./diagram.js";
11
+ import "./diagnostics.js";
12
+ import "./graph.js";
13
+ import "./dependency.js";
14
+ import "./bundle.js";
15
+ import "./maintenance.js";
16
+ import "./loop.js";
17
+ import "./brief.js";
18
+ import "./next.js";
19
+ import "./remember.js";
20
+ import "./done.js";
21
+ import "./status.js";
22
+ //# sourceMappingURL=index.js.map