@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,219 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, resolve } from "node:path";
4
+ import { readJsonSafeSync } from "../utils/json.js";
5
+ import { ORCHESTRATE_PROMPT_TEXT } from "./arcs-orchestrate.js";
6
+ import { ORCHESTRATE_CAVEMAN_PROMPT_TEXT } from "./arcs-orchestrate-caveman.js";
7
+ // ---------------------------------------------------------------------------
8
+ // Helpers
9
+ // ---------------------------------------------------------------------------
10
+ /** Safely parse a JSON file. Returns empty object on any error. */
11
+ function readJsonFile(path) {
12
+ return readJsonSafeSync(path) ?? {};
13
+ }
14
+ /** Write JSON content to disk, creating parent dirs as needed. */
15
+ function writeJsonFile(path, data) {
16
+ mkdirSync(dirname(path), { recursive: true });
17
+ writeFileSync(path, `${JSON.stringify(data, null, 2)}\n`, "utf-8");
18
+ }
19
+ /**
20
+ * Deep-set a nested key path on an object (mutates in place).
21
+ * E.g. deepSet(obj, ["agent", "ARCS Orchestrator"], value)
22
+ */
23
+ function _deepSet(obj, keys, value) {
24
+ let current = obj;
25
+ for (let i = 0; i < keys.length - 1; i++) {
26
+ const k = keys[i];
27
+ if (typeof current[k] !== "object" || current[k] === null || Array.isArray(current[k])) {
28
+ current[k] = {};
29
+ }
30
+ current = current[k];
31
+ }
32
+ current[keys[keys.length - 1]] = value;
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Agent Model Resolution
36
+ // ---------------------------------------------------------------------------
37
+ /** Tier assignment for each known agent. */
38
+ const AGENT_TIER_MAP = {
39
+ "software-engineer": "heavy",
40
+ "docs-researcher": "heavy",
41
+ "arcs-docs": "heavy",
42
+ "oncall-ops": "heavy",
43
+ "system-architect": "heavy",
44
+ plan: "heavy",
45
+ general: "heavy",
46
+ build: "standard",
47
+ "ARCS Orchestrator": "standard",
48
+ "ARCS Caveman": "standard",
49
+ explore: "light",
50
+ "code-reviewer": "light",
51
+ "tech-architect": "light",
52
+ "qa-analyst": "light",
53
+ };
54
+ /**
55
+ * Resolves the model for a given agent based on tier config and per-agent overrides.
56
+ */
57
+ function resolveAgentModel(agentName, tier, modelConfig) {
58
+ return modelConfig.perAgent?.[agentName] ?? modelConfig[tier];
59
+ }
60
+ // ---------------------------------------------------------------------------
61
+ // Public API
62
+ // ---------------------------------------------------------------------------
63
+ /**
64
+ * Formats a short summary of an IDE config path for display.
65
+ * Replaces $HOME with ~ for readability.
66
+ */
67
+ export function displayPath(p) {
68
+ const home = homedir();
69
+ return p.startsWith(home) ? `~${p.slice(home.length)}` : p;
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // OpenCode Agent Registration
73
+ // ---------------------------------------------------------------------------
74
+ /** Path to the OpenCode config directory. */
75
+ function opencodeConfigDir() {
76
+ return resolve(homedir(), ".config", "opencode");
77
+ }
78
+ /** Path to the OpenCode prompts directory. */
79
+ function opencodePromptsDir() {
80
+ return resolve(opencodeConfigDir(), "prompts");
81
+ }
82
+ /** Path to the ARCS orchestrator prompt file. */
83
+ function opencodePromptPath() {
84
+ return resolve(opencodePromptsDir(), "arcs-orchestrate.txt");
85
+ }
86
+ /** Path to the ARCS Caveman orchestrator prompt file. */
87
+ function opencodeCavemanPromptPath() {
88
+ return resolve(opencodePromptsDir(), "arcs-orchestrate-caveman.txt");
89
+ }
90
+ /**
91
+ * The OpenCode agent entry for ARCS orchestrator.
92
+ */
93
+ export const ARCS_AGENT_ENTRY = {
94
+ description: "ARCS - (Orchestrator)",
95
+ mode: "primary",
96
+ prompt: "{file:./prompts/arcs-orchestrate.txt}",
97
+ color: "#00bcd4",
98
+ };
99
+ /**
100
+ * The OpenCode agent entry for ARCS Caveman — same capabilities as ARCS
101
+ * Orchestrator, but with caveman speech layered on top for token efficiency.
102
+ */
103
+ export const ARCS_CAVEMAN_AGENT_ENTRY = {
104
+ description: "ARCS - Caveman (token-efficient orchestrator)",
105
+ mode: "primary",
106
+ prompt: "{file:./prompts/arcs-orchestrate-caveman.txt}",
107
+ color: "#d2691e",
108
+ };
109
+ /** The key used for the ARCS agent entry in opencode.json → agent.<key>. */
110
+ const ARCS_AGENT_KEY = "ARCS Orchestrator";
111
+ /** The key used for the ARCS Caveman agent entry. */
112
+ const ARCS_CAVEMAN_AGENT_KEY = "ARCS Caveman";
113
+ /**
114
+ * Checks whether the ARCS agent is already registered in opencode.json.
115
+ */
116
+ export function opencodeHasAgent() {
117
+ const configFile = resolve(opencodeConfigDir(), "opencode.json");
118
+ if (!existsSync(configFile))
119
+ return false;
120
+ try {
121
+ const config = readJsonSafeSync(configFile) ?? {};
122
+ const agents = config.agent;
123
+ // Presence gate: if the orchestrator is registered, ARCS is "configured".
124
+ // writeOpencodeAgent() always installs both the orchestrator and Caveman,
125
+ // so existing installs auto-upgrade to gain Caveman on re-run.
126
+ return agents != null && ARCS_AGENT_KEY in agents;
127
+ }
128
+ catch {
129
+ return false;
130
+ }
131
+ }
132
+ /**
133
+ * Registers the ARCS orchestrator agents (standard + Caveman) as primary
134
+ * agents in opencode.json. Also writes both prompt text files to
135
+ * ~/.config/opencode/prompts/.
136
+ *
137
+ * Both agents share full ARCS tool access and workflow rules; ARCS Caveman
138
+ * layers caveman-speak on top for token-efficient chat output.
139
+ */
140
+ export function writeOpencodeAgent(modelConfig) {
141
+ const alreadyConfigured = opencodeHasAgent();
142
+ const configFile = resolve(opencodeConfigDir(), "opencode.json");
143
+ const promptFile = opencodePromptPath();
144
+ const cavemanPromptFile = opencodeCavemanPromptPath();
145
+ const existed = existsSync(configFile);
146
+ // Write both prompt text files
147
+ mkdirSync(opencodePromptsDir(), { recursive: true });
148
+ writeFileSync(promptFile, `${ORCHESTRATE_PROMPT_TEXT}\n`, "utf-8");
149
+ writeFileSync(cavemanPromptFile, `${ORCHESTRATE_CAVEMAN_PROMPT_TEXT}\n`, "utf-8");
150
+ // Merge agent entries into opencode.json with controlled key order:
151
+ // 1. ARCS Orchestrator (always first — controls Tab-cycle position in OpenCode)
152
+ // 2. ARCS Caveman (second — Tab once to reach token-efficient mode)
153
+ // 3. build (third, if already present in config)
154
+ // 4. all other existing agents in their original order
155
+ const existing = readJsonFile(configFile);
156
+ const existingAgents = (existing.agent ?? {});
157
+ // Primary agents get a model field resolved from tier map (standard) unless
158
+ // the user provided a perAgent override, which always wins.
159
+ const orchestratorEntry = { ...ARCS_AGENT_ENTRY };
160
+ if (modelConfig) {
161
+ orchestratorEntry.model = resolveAgentModel(ARCS_AGENT_KEY, AGENT_TIER_MAP[ARCS_AGENT_KEY] ?? "standard", modelConfig);
162
+ }
163
+ const cavemanEntry = { ...ARCS_CAVEMAN_AGENT_ENTRY };
164
+ if (modelConfig) {
165
+ cavemanEntry.model = resolveAgentModel(ARCS_CAVEMAN_AGENT_KEY, AGENT_TIER_MAP[ARCS_CAVEMAN_AGENT_KEY] ?? "standard", modelConfig);
166
+ }
167
+ const orderedAgents = {
168
+ [ARCS_AGENT_KEY]: orchestratorEntry,
169
+ [ARCS_CAVEMAN_AGENT_KEY]: cavemanEntry,
170
+ };
171
+ if ("build" in existingAgents) {
172
+ orderedAgents.build = existingAgents.build;
173
+ }
174
+ for (const [key, value] of Object.entries(existingAgents)) {
175
+ if (key !== ARCS_AGENT_KEY && key !== ARCS_CAVEMAN_AGENT_KEY && key !== "build") {
176
+ orderedAgents[key] = value;
177
+ }
178
+ }
179
+ existing.agent = orderedAgents;
180
+ // Set ARCS Orchestrator as the startup default agent (Caveman is opt-in via Tab)
181
+ existing.default_agent = ARCS_AGENT_KEY;
182
+ writeJsonFile(configFile, existing);
183
+ return {
184
+ configPath: configFile,
185
+ promptPath: promptFile,
186
+ cavemanPromptPath: cavemanPromptFile,
187
+ action: existed ? "updated" : "created",
188
+ alreadyConfigured,
189
+ };
190
+ }
191
+ // ---------------------------------------------------------------------------
192
+ // Apply Model Config to All Agents
193
+ // ---------------------------------------------------------------------------
194
+ /**
195
+ * Applies ModelTierConfig to all known agent entries in opencode.json.
196
+ * Each agent (primary or sub-agent) listed in AGENT_TIER_MAP gets a `model`
197
+ * field resolved from its tier. perAgent overrides always win.
198
+ * Call this AFTER bundle install so it overwrites hardcoded manifest models.
199
+ */
200
+ export function applyAgentModelConfig(modelConfig) {
201
+ const configFile = resolve(opencodeConfigDir(), "opencode.json");
202
+ if (!existsSync(configFile))
203
+ return;
204
+ const config = readJsonFile(configFile);
205
+ const agents = config.agent;
206
+ if (!agents)
207
+ return;
208
+ for (const [name, entry] of Object.entries(agents)) {
209
+ if (typeof entry !== "object" || entry === null)
210
+ continue;
211
+ const tier = AGENT_TIER_MAP[name];
212
+ if (tier) {
213
+ entry.model = resolveAgentModel(name, tier, modelConfig);
214
+ }
215
+ }
216
+ config.agent = agents;
217
+ writeJsonFile(configFile, config);
218
+ }
219
+ //# sourceMappingURL=instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/cli/instructions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Recursively strips noise from an object for leaner JSON output.
3
+ * Removes: null/undefined values, empty arrays/objects/strings,
4
+ * timestamp fields, and redundant normalizedId.
5
+ */
6
+ export declare function leanify(obj: unknown): unknown;
7
+ /**
8
+ * Check if lean mode is active from args or environment.
9
+ */
10
+ export declare function isLeanMode(args: string[]): boolean;
11
+ /**
12
+ * Format JSON output, applying leanify when lean mode is active.
13
+ */
14
+ export declare function formatJsonOutput(data: unknown, lean: boolean): string;
15
+ //# sourceMappingURL=lean-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lean-output.d.ts","sourceRoot":"","sources":["../../src/cli/lean-output.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CA0C7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAIlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAGrE"}
@@ -0,0 +1,66 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Lean Output — strips noise from JSON output for LLM token savings
3
+ // ---------------------------------------------------------------------------
4
+ const STRIP_FIELDS = new Set(["createdAt", "updatedAt"]);
5
+ /**
6
+ * Recursively strips noise from an object for leaner JSON output.
7
+ * Removes: null/undefined values, empty arrays/objects/strings,
8
+ * timestamp fields, and redundant normalizedId.
9
+ */
10
+ export function leanify(obj) {
11
+ if (obj === null || obj === undefined)
12
+ return undefined;
13
+ if (Array.isArray(obj)) {
14
+ const cleaned = obj.map((item) => leanify(item)).filter((item) => item !== undefined);
15
+ return cleaned.length === 0 ? undefined : cleaned;
16
+ }
17
+ if (typeof obj === "object") {
18
+ const input = obj;
19
+ const hasId = "id" in input;
20
+ const result = {};
21
+ for (const [key, value] of Object.entries(input)) {
22
+ // Strip known noisy fields
23
+ if (STRIP_FIELDS.has(key))
24
+ continue;
25
+ // Strip normalizedId when id is present
26
+ if (key === "normalizedId" && hasId)
27
+ continue;
28
+ const cleaned = leanify(value);
29
+ if (cleaned === undefined)
30
+ continue;
31
+ // Skip empty strings
32
+ if (cleaned === "")
33
+ continue;
34
+ // Skip empty arrays (already handled by recursive leanify returning undefined)
35
+ // Skip empty objects
36
+ if (typeof cleaned === "object" &&
37
+ !Array.isArray(cleaned) &&
38
+ Object.keys(cleaned).length === 0)
39
+ continue;
40
+ result[key] = cleaned;
41
+ }
42
+ return Object.keys(result).length === 0 ? undefined : result;
43
+ }
44
+ // Primitives (number, boolean, non-empty string)
45
+ if (typeof obj === "string" && obj === "")
46
+ return undefined;
47
+ return obj;
48
+ }
49
+ /**
50
+ * Check if lean mode is active from args or environment.
51
+ */
52
+ export function isLeanMode(args) {
53
+ if (args.includes("--lean"))
54
+ return true;
55
+ if (process.env.ARCS_LEAN === "1")
56
+ return true;
57
+ return false;
58
+ }
59
+ /**
60
+ * Format JSON output, applying leanify when lean mode is active.
61
+ */
62
+ export function formatJsonOutput(data, lean) {
63
+ const output = lean ? leanify(data) : data;
64
+ return JSON.stringify(output);
65
+ }
66
+ //# sourceMappingURL=lean-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lean-output.js","sourceRoot":"","sources":["../../src/cli/lean-output.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAY;IAClC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAExD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACtF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,GAA8B,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC;QAC5B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,2BAA2B;YAC3B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,wCAAwC;YACxC,IAAI,GAAG,KAAK,cAAc,IAAI,KAAK;gBAAE,SAAS;YAE9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAS;YAEpC,qBAAqB;YACrB,IAAI,OAAO,KAAK,EAAE;gBAAE,SAAS;YAC7B,+EAA+E;YAC/E,qBAAqB;YACrB,IACE,OAAO,OAAO,KAAK,QAAQ;gBAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC,MAAM,KAAK,CAAC;gBAE3C,SAAS;YAEX,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACxB,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,CAAC;IAED,iDAAiD;IACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa,EAAE,IAAa;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Renders structured CLI data as plain markdown for OpenCode chat panels.
3
+ * Returns null for commands that don't benefit from markdown formatting.
4
+ */
5
+ export declare function renderMarkdown(command: string, data: unknown): string | null;
6
+ //# sourceMappingURL=md-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md-renderer.d.ts","sourceRoot":"","sources":["../../src/cli/md-renderer.ts"],"names":[],"mappings":"AAsVA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA0E5E"}