@cluesmith/codev 3.0.0-rc.1 → 3.0.0-rc.11

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 (328) hide show
  1. package/LICENSE +201 -0
  2. package/bin/af.js +2 -2
  3. package/bin/afx.js +8 -0
  4. package/bin/consult.js +2 -1
  5. package/bin/team.js +2 -1
  6. package/{dashboard/dist/assets/index-nr0cXxtf.css → dashboard-dist/assets/index-Bs8I7N2s.css} +1 -1
  7. package/dashboard-dist/assets/index-CkNo2z6t.js +195 -0
  8. package/dashboard-dist/assets/index-CkNo2z6t.js.map +1 -0
  9. package/dashboard-dist/dist/assets/index-Bs8I7N2s.css +32 -0
  10. package/dashboard-dist/dist/assets/index-CkNo2z6t.js +195 -0
  11. package/dashboard-dist/dist/assets/index-CkNo2z6t.js.map +1 -0
  12. package/{dashboard → dashboard-dist}/dist/index.html +2 -2
  13. package/dashboard-dist/index.html +14 -0
  14. package/dist/agent-farm/cli.d.ts.map +1 -1
  15. package/dist/agent-farm/cli.js +17 -14
  16. package/dist/agent-farm/cli.js.map +1 -1
  17. package/dist/agent-farm/commands/architect.d.ts +4 -4
  18. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  19. package/dist/agent-farm/commands/architect.js +23 -12
  20. package/dist/agent-farm/commands/architect.js.map +1 -1
  21. package/dist/agent-farm/commands/attach.js +8 -8
  22. package/dist/agent-farm/commands/attach.js.map +1 -1
  23. package/dist/agent-farm/commands/bench.d.ts +1 -1
  24. package/dist/agent-farm/commands/bench.js +1 -1
  25. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  26. package/dist/agent-farm/commands/cleanup.js +10 -5
  27. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  28. package/dist/agent-farm/commands/cron.js +1 -1
  29. package/dist/agent-farm/commands/cron.js.map +1 -1
  30. package/dist/agent-farm/commands/db.d.ts +3 -3
  31. package/dist/agent-farm/commands/db.js +4 -4
  32. package/dist/agent-farm/commands/db.js.map +1 -1
  33. package/dist/agent-farm/commands/open.js +2 -2
  34. package/dist/agent-farm/commands/open.js.map +1 -1
  35. package/dist/agent-farm/commands/rename.js +1 -1
  36. package/dist/agent-farm/commands/rename.js.map +1 -1
  37. package/dist/agent-farm/commands/send.d.ts +4 -1
  38. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  39. package/dist/agent-farm/commands/send.js +8 -5
  40. package/dist/agent-farm/commands/send.js.map +1 -1
  41. package/dist/agent-farm/commands/shell.js +3 -3
  42. package/dist/agent-farm/commands/shell.js.map +1 -1
  43. package/dist/agent-farm/commands/spawn-roles.d.ts +2 -1
  44. package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
  45. package/dist/agent-farm/commands/spawn-roles.js +1 -1
  46. package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
  47. package/dist/agent-farm/commands/spawn-worktree.d.ts +49 -10
  48. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  49. package/dist/agent-farm/commands/spawn-worktree.js +356 -51
  50. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  51. package/dist/agent-farm/commands/spawn.d.ts +6 -6
  52. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  53. package/dist/agent-farm/commands/spawn.js +182 -74
  54. package/dist/agent-farm/commands/spawn.js.map +1 -1
  55. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  56. package/dist/agent-farm/commands/status.js +48 -3
  57. package/dist/agent-farm/commands/status.js.map +1 -1
  58. package/dist/agent-farm/commands/team-update.d.ts +1 -1
  59. package/dist/agent-farm/commands/team-update.d.ts.map +1 -1
  60. package/dist/agent-farm/commands/team-update.js +8 -5
  61. package/dist/agent-farm/commands/team-update.js.map +1 -1
  62. package/dist/agent-farm/commands/team.d.ts +1 -1
  63. package/dist/agent-farm/commands/team.d.ts.map +1 -1
  64. package/dist/agent-farm/commands/team.js +7 -3
  65. package/dist/agent-farm/commands/team.js.map +1 -1
  66. package/dist/agent-farm/commands/tower-cloud.d.ts +2 -2
  67. package/dist/agent-farm/commands/tower-cloud.js +3 -3
  68. package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
  69. package/dist/agent-farm/commands/tower.js +2 -2
  70. package/dist/agent-farm/commands/tower.js.map +1 -1
  71. package/dist/agent-farm/lib/cloud-config.js +2 -2
  72. package/dist/agent-farm/lib/cloud-config.js.map +1 -1
  73. package/dist/agent-farm/lib/tower-client.d.ts +6 -230
  74. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  75. package/dist/agent-farm/lib/tower-client.js +6 -293
  76. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  77. package/dist/agent-farm/lib/tunnel-client.js +1 -1
  78. package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
  79. package/dist/agent-farm/servers/message-write.d.ts +24 -0
  80. package/dist/agent-farm/servers/message-write.d.ts.map +1 -0
  81. package/dist/agent-farm/servers/message-write.js +63 -0
  82. package/dist/agent-farm/servers/message-write.js.map +1 -0
  83. package/dist/agent-farm/servers/overview.d.ts +10 -8
  84. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  85. package/dist/agent-farm/servers/overview.js +78 -38
  86. package/dist/agent-farm/servers/overview.js.map +1 -1
  87. package/dist/agent-farm/servers/send-buffer.d.ts +4 -3
  88. package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
  89. package/dist/agent-farm/servers/send-buffer.js +7 -4
  90. package/dist/agent-farm/servers/send-buffer.js.map +1 -1
  91. package/dist/agent-farm/servers/tower-cron-parser.js +1 -1
  92. package/dist/agent-farm/servers/tower-cron-parser.js.map +1 -1
  93. package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
  94. package/dist/agent-farm/servers/tower-cron.js +4 -5
  95. package/dist/agent-farm/servers/tower-cron.js.map +1 -1
  96. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  97. package/dist/agent-farm/servers/tower-instances.js +15 -13
  98. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  99. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  100. package/dist/agent-farm/servers/tower-routes.js +9 -16
  101. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  102. package/dist/agent-farm/servers/tower-server.js +1 -1
  103. package/dist/agent-farm/servers/tower-terminals.d.ts +2 -2
  104. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  105. package/dist/agent-farm/servers/tower-terminals.js +64 -36
  106. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  107. package/dist/agent-farm/servers/tower-tunnel.js +2 -2
  108. package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
  109. package/dist/agent-farm/servers/tower-utils.d.ts +9 -6
  110. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  111. package/dist/agent-farm/servers/tower-utils.js +13 -7
  112. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  113. package/dist/agent-farm/types.d.ts +13 -0
  114. package/dist/agent-farm/types.d.ts.map +1 -1
  115. package/dist/agent-farm/utils/config.d.ts +11 -0
  116. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  117. package/dist/agent-farm/utils/config.js +39 -17
  118. package/dist/agent-farm/utils/config.js.map +1 -1
  119. package/dist/agent-farm/utils/harness.d.ts +85 -0
  120. package/dist/agent-farm/utils/harness.d.ts.map +1 -0
  121. package/dist/agent-farm/utils/harness.js +212 -0
  122. package/dist/agent-farm/utils/harness.js.map +1 -0
  123. package/dist/agent-farm/utils/roles.d.ts +11 -4
  124. package/dist/agent-farm/utils/roles.d.ts.map +1 -1
  125. package/dist/agent-farm/utils/roles.js +21 -6
  126. package/dist/agent-farm/utils/roles.js.map +1 -1
  127. package/dist/cli.d.ts +1 -1
  128. package/dist/cli.d.ts.map +1 -1
  129. package/dist/cli.js +40 -5
  130. package/dist/cli.js.map +1 -1
  131. package/dist/commands/adopt.d.ts.map +1 -1
  132. package/dist/commands/adopt.js +16 -45
  133. package/dist/commands/adopt.js.map +1 -1
  134. package/dist/commands/consult/index.d.ts +37 -3
  135. package/dist/commands/consult/index.d.ts.map +1 -1
  136. package/dist/commands/consult/index.js +281 -194
  137. package/dist/commands/consult/index.js.map +1 -1
  138. package/dist/commands/doctor.d.ts.map +1 -1
  139. package/dist/commands/doctor.js +121 -31
  140. package/dist/commands/doctor.js.map +1 -1
  141. package/dist/commands/init.d.ts.map +1 -1
  142. package/dist/commands/init.js +13 -43
  143. package/dist/commands/init.js.map +1 -1
  144. package/dist/commands/porch/artifacts.d.ts +69 -0
  145. package/dist/commands/porch/artifacts.d.ts.map +1 -0
  146. package/dist/commands/porch/artifacts.js +368 -0
  147. package/dist/commands/porch/artifacts.js.map +1 -0
  148. package/dist/commands/porch/checks.d.ts +14 -3
  149. package/dist/commands/porch/checks.d.ts.map +1 -1
  150. package/dist/commands/porch/checks.js +150 -4
  151. package/dist/commands/porch/checks.js.map +1 -1
  152. package/dist/commands/porch/config.d.ts +6 -9
  153. package/dist/commands/porch/config.d.ts.map +1 -1
  154. package/dist/commands/porch/config.js +12 -37
  155. package/dist/commands/porch/config.js.map +1 -1
  156. package/dist/commands/porch/index.d.ts +12 -7
  157. package/dist/commands/porch/index.d.ts.map +1 -1
  158. package/dist/commands/porch/index.js +273 -82
  159. package/dist/commands/porch/index.js.map +1 -1
  160. package/dist/commands/porch/next.d.ts.map +1 -1
  161. package/dist/commands/porch/next.js +142 -75
  162. package/dist/commands/porch/next.js.map +1 -1
  163. package/dist/commands/porch/notify.d.ts +2 -2
  164. package/dist/commands/porch/notify.js +5 -5
  165. package/dist/commands/porch/notify.js.map +1 -1
  166. package/dist/commands/porch/prompts.d.ts +2 -1
  167. package/dist/commands/porch/prompts.d.ts.map +1 -1
  168. package/dist/commands/porch/prompts.js +34 -38
  169. package/dist/commands/porch/prompts.js.map +1 -1
  170. package/dist/commands/porch/protocol.d.ts +4 -3
  171. package/dist/commands/porch/protocol.d.ts.map +1 -1
  172. package/dist/commands/porch/protocol.js +21 -21
  173. package/dist/commands/porch/protocol.js.map +1 -1
  174. package/dist/commands/porch/state.d.ts +27 -2
  175. package/dist/commands/porch/state.d.ts.map +1 -1
  176. package/dist/commands/porch/state.js +100 -9
  177. package/dist/commands/porch/state.js.map +1 -1
  178. package/dist/commands/porch/types.d.ts +10 -2
  179. package/dist/commands/porch/types.d.ts.map +1 -1
  180. package/dist/commands/sync.d.ts +26 -0
  181. package/dist/commands/sync.d.ts.map +1 -0
  182. package/dist/commands/sync.js +207 -0
  183. package/dist/commands/sync.js.map +1 -0
  184. package/dist/commands/update.d.ts +15 -2
  185. package/dist/commands/update.d.ts.map +1 -1
  186. package/dist/commands/update.js +159 -202
  187. package/dist/commands/update.js.map +1 -1
  188. package/dist/lib/config.d.ts +96 -0
  189. package/dist/lib/config.d.ts.map +1 -0
  190. package/dist/lib/config.js +165 -0
  191. package/dist/lib/config.js.map +1 -0
  192. package/dist/lib/forge-contracts.d.ts +100 -0
  193. package/dist/lib/forge-contracts.d.ts.map +1 -0
  194. package/dist/lib/forge-contracts.js +35 -0
  195. package/dist/lib/forge-contracts.js.map +1 -0
  196. package/dist/lib/forge.d.ts +102 -0
  197. package/dist/lib/forge.d.ts.map +1 -0
  198. package/dist/lib/forge.js +376 -0
  199. package/dist/lib/forge.js.map +1 -0
  200. package/dist/lib/github.d.ts +68 -60
  201. package/dist/lib/github.d.ts.map +1 -1
  202. package/dist/lib/github.js +160 -169
  203. package/dist/lib/github.js.map +1 -1
  204. package/dist/lib/skeleton.d.ts +15 -5
  205. package/dist/lib/skeleton.d.ts.map +1 -1
  206. package/dist/lib/skeleton.js +82 -7
  207. package/dist/lib/skeleton.js.map +1 -1
  208. package/dist/lib/team-github.d.ts +7 -3
  209. package/dist/lib/team-github.d.ts.map +1 -1
  210. package/dist/lib/team-github.js +29 -19
  211. package/dist/lib/team-github.js.map +1 -1
  212. package/dist/terminal/pty-manager.d.ts.map +1 -1
  213. package/dist/terminal/pty-manager.js +2 -0
  214. package/dist/terminal/pty-manager.js.map +1 -1
  215. package/dist/terminal/ws-protocol.d.ts +10 -8
  216. package/dist/terminal/ws-protocol.d.ts.map +1 -1
  217. package/dist/terminal/ws-protocol.js +3 -0
  218. package/dist/terminal/ws-protocol.js.map +1 -1
  219. package/package.json +27 -24
  220. package/scripts/forge/gitea/auth-status.sh +3 -0
  221. package/scripts/forge/gitea/issue-comment.sh +3 -0
  222. package/scripts/forge/gitea/issue-list.sh +3 -0
  223. package/scripts/forge/gitea/issue-view.sh +3 -0
  224. package/scripts/forge/gitea/pr-exists.sh +6 -0
  225. package/scripts/forge/gitea/pr-list.sh +3 -0
  226. package/scripts/forge/gitea/pr-merge.sh +3 -0
  227. package/scripts/forge/gitea/pr-view.sh +3 -0
  228. package/scripts/forge/gitea/recently-closed.sh +3 -0
  229. package/scripts/forge/gitea/recently-merged.sh +3 -0
  230. package/scripts/forge/gitea/repo-archive.sh +11 -0
  231. package/scripts/forge/gitea/user-identity.sh +3 -0
  232. package/scripts/forge/github/auth-status.sh +4 -0
  233. package/scripts/forge/github/issue-comment.sh +5 -0
  234. package/scripts/forge/github/issue-list.sh +4 -0
  235. package/scripts/forge/github/issue-view.sh +5 -0
  236. package/scripts/forge/github/on-it-timestamps.sh +8 -0
  237. package/scripts/forge/github/pr-diff.sh +10 -0
  238. package/scripts/forge/github/pr-exists.sh +7 -0
  239. package/scripts/forge/github/pr-list.sh +4 -0
  240. package/scripts/forge/github/pr-merge.sh +5 -0
  241. package/scripts/forge/github/pr-search.sh +5 -0
  242. package/scripts/forge/github/pr-view.sh +11 -0
  243. package/scripts/forge/github/recently-closed.sh +15 -0
  244. package/scripts/forge/github/recently-merged.sh +15 -0
  245. package/scripts/forge/github/repo-archive.sh +10 -0
  246. package/scripts/forge/github/team-activity.sh +5 -0
  247. package/scripts/forge/github/user-identity.sh +4 -0
  248. package/scripts/forge/gitlab/auth-status.sh +3 -0
  249. package/scripts/forge/gitlab/issue-comment.sh +3 -0
  250. package/scripts/forge/gitlab/issue-list.sh +3 -0
  251. package/scripts/forge/gitlab/issue-view.sh +3 -0
  252. package/scripts/forge/gitlab/pr-diff.sh +3 -0
  253. package/scripts/forge/gitlab/pr-exists.sh +5 -0
  254. package/scripts/forge/gitlab/pr-list.sh +3 -0
  255. package/scripts/forge/gitlab/pr-merge.sh +3 -0
  256. package/scripts/forge/gitlab/pr-search.sh +3 -0
  257. package/scripts/forge/gitlab/pr-view.sh +3 -0
  258. package/scripts/forge/gitlab/recently-closed.sh +3 -0
  259. package/scripts/forge/gitlab/recently-merged.sh +3 -0
  260. package/scripts/forge/gitlab/repo-archive.sh +12 -0
  261. package/scripts/forge/gitlab/user-identity.sh +3 -0
  262. package/skeleton/.claude/skills/afx/SKILL.md +144 -0
  263. package/skeleton/.claude/skills/codev/SKILL.md +3 -3
  264. package/skeleton/.claude/skills/consult/SKILL.md +1 -1
  265. package/skeleton/.claude/skills/porch/SKILL.md +2 -2
  266. package/skeleton/DEPENDENCIES.md +1 -1
  267. package/skeleton/builders.md +4 -4
  268. package/skeleton/protocol-schema.json +2 -2
  269. package/skeleton/protocols/air/builder-prompt.md +6 -6
  270. package/skeleton/protocols/air/prompts/pr.md +17 -5
  271. package/skeleton/protocols/air/protocol.md +1 -2
  272. package/skeleton/protocols/aspir/builder-prompt.md +28 -6
  273. package/skeleton/protocols/aspir/prompts/review.md +11 -0
  274. package/skeleton/protocols/aspir/protocol.json +9 -1
  275. package/skeleton/protocols/aspir/protocol.md +1 -1
  276. package/skeleton/protocols/aspir/templates/plan.md +0 -20
  277. package/skeleton/protocols/aspir/templates/spec.md +0 -28
  278. package/skeleton/protocols/bugfix/builder-prompt.md +6 -6
  279. package/skeleton/protocols/bugfix/prompts/pr.md +16 -4
  280. package/skeleton/protocols/experiment/builder-prompt.md +15 -0
  281. package/skeleton/protocols/experiment/protocol.md +1 -6
  282. package/skeleton/protocols/maintain/builder-prompt.md +12 -11
  283. package/skeleton/protocols/maintain/prompts/maintain.md +88 -0
  284. package/skeleton/protocols/maintain/prompts/review.md +84 -0
  285. package/skeleton/protocols/maintain/protocol.json +14 -68
  286. package/skeleton/protocols/maintain/protocol.md +111 -409
  287. package/skeleton/protocols/maintain/templates/maintenance-run.md +18 -49
  288. package/skeleton/protocols/protocol-schema.json +1 -1
  289. package/skeleton/protocols/spike/builder-prompt.md +1 -1
  290. package/skeleton/protocols/spike/protocol.md +4 -4
  291. package/skeleton/protocols/spir/builder-prompt.md +28 -5
  292. package/skeleton/protocols/spir/prompts/review.md +11 -0
  293. package/skeleton/protocols/spir/protocol.json +9 -1
  294. package/skeleton/protocols/spir/protocol.md +2 -2
  295. package/skeleton/protocols/spir/templates/plan.md +0 -20
  296. package/skeleton/protocols/spir/templates/spec.md +0 -28
  297. package/skeleton/resources/commands/agent-farm.md +84 -84
  298. package/skeleton/resources/commands/codev.md +1 -1
  299. package/skeleton/resources/commands/consult.md +16 -7
  300. package/skeleton/resources/commands/overview.md +14 -15
  301. package/skeleton/resources/risk-triage.md +1 -1
  302. package/skeleton/resources/workflow-reference.md +14 -14
  303. package/skeleton/roles/architect.md +55 -43
  304. package/skeleton/roles/builder.md +22 -14
  305. package/skeleton/templates/AGENTS.md +4 -3
  306. package/skeleton/templates/CLAUDE.md +4 -3
  307. package/skeleton/templates/cheatsheet.md +11 -12
  308. package/templates/3d-viewer.html +16 -18
  309. package/templates/tower.html +1 -1
  310. package/dashboard/dist/assets/index-CiIBsixF.js +0 -194
  311. package/dashboard/dist/assets/index-CiIBsixF.js.map +0 -1
  312. package/skeleton/.claude/skills/af/SKILL.md +0 -146
  313. package/skeleton/porch/prompts/understand.md +0 -61
  314. package/skeleton/porch/prompts/verify.md +0 -58
  315. package/skeleton/protocols/maintain/prompts/audit.md +0 -111
  316. package/skeleton/protocols/maintain/prompts/clean.md +0 -91
  317. package/skeleton/protocols/maintain/prompts/sync.md +0 -113
  318. package/skeleton/protocols/maintain/prompts/verify.md +0 -110
  319. package/skeleton/protocols/tick/builder-prompt.md +0 -65
  320. package/skeleton/protocols/tick/consult-types/impl-review.md +0 -72
  321. package/skeleton/protocols/tick/consult-types/plan-review.md +0 -59
  322. package/skeleton/protocols/tick/consult-types/pr-review.md +0 -72
  323. package/skeleton/protocols/tick/consult-types/spec-review.md +0 -55
  324. package/skeleton/protocols/tick/protocol.json +0 -151
  325. package/skeleton/protocols/tick/protocol.md +0 -277
  326. package/skeleton/protocols/tick/templates/plan.md +0 -67
  327. package/skeleton/protocols/tick/templates/review.md +0 -89
  328. package/skeleton/protocols/tick/templates/spec.md +0 -61
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Agent harness abstraction.
3
+ *
4
+ * Encapsulates how different agent CLI tools (Claude, Codex, Gemini, etc.)
5
+ * handle role/system prompt injection. Built-in providers cover Claude, Codex,
6
+ * and Gemini. Custom providers can be defined in .codev/config.json.
7
+ *
8
+ * Two integration patterns exist:
9
+ * - Node spawn() call sites: use buildRoleInjection() → returns args + env
10
+ * - Bash script generation: use buildScriptRoleInjection() → returns fragment + env
11
+ *
12
+ * @see codev/specs/591-af-workspace-failure-with-code.md
13
+ */
14
+ // =============================================================================
15
+ // Built-in providers
16
+ // =============================================================================
17
+ export const CLAUDE_HARNESS = {
18
+ buildRoleInjection: (content, _filePath) => ({
19
+ args: ['--append-system-prompt', content],
20
+ env: {},
21
+ }),
22
+ buildScriptRoleInjection: (_content, filePath) => ({
23
+ fragment: `--append-system-prompt "$(cat '${shellEscapeSingleQuote(filePath)}')"`,
24
+ env: {},
25
+ }),
26
+ };
27
+ export const CODEX_HARNESS = {
28
+ buildRoleInjection: (_content, filePath) => ({
29
+ args: ['-c', `model_instructions_file=${filePath}`],
30
+ env: {},
31
+ }),
32
+ buildScriptRoleInjection: (_content, filePath) => ({
33
+ fragment: `-c model_instructions_file='${shellEscapeSingleQuote(filePath)}'`,
34
+ env: {},
35
+ }),
36
+ };
37
+ export const GEMINI_HARNESS = {
38
+ buildRoleInjection: (_content, filePath) => ({
39
+ args: [],
40
+ env: { GEMINI_SYSTEM_MD: filePath },
41
+ }),
42
+ buildScriptRoleInjection: (_content, filePath) => ({
43
+ fragment: '',
44
+ env: { GEMINI_SYSTEM_MD: filePath },
45
+ }),
46
+ };
47
+ export const OPENCODE_HARNESS = {
48
+ buildRoleInjection: () => {
49
+ throw new Error('OpenCode is only supported as a builder shell, not as an architect shell. ' +
50
+ 'OpenCode uses file-based role injection (opencode.json instructions field) ' +
51
+ 'which requires an ephemeral worktree. Configure a different shell for ' +
52
+ 'the architect (e.g., "claude --dangerously-skip-permissions").');
53
+ },
54
+ buildScriptRoleInjection: () => ({ fragment: '', env: {} }),
55
+ getWorktreeFiles: () => ([{
56
+ relativePath: 'opencode.json',
57
+ content: JSON.stringify({ instructions: ['.builder-role.md'] }, null, 2) + '\n',
58
+ }]),
59
+ };
60
+ const BUILTIN_HARNESSES = {
61
+ claude: CLAUDE_HARNESS,
62
+ codex: CODEX_HARNESS,
63
+ gemini: GEMINI_HARNESS,
64
+ opencode: OPENCODE_HARNESS,
65
+ };
66
+ // =============================================================================
67
+ // Template expansion
68
+ // =============================================================================
69
+ /**
70
+ * Expand template variables in a string.
71
+ * ${ROLE_FILE} → roleFilePath, ${ROLE_CONTENT} → roleContent.
72
+ * Unknown ${...} variables are left unexpanded (makes typos visible).
73
+ */
74
+ function expandTemplateVars(template, roleContent, roleFilePath) {
75
+ // Use replacer functions to avoid $& / $' / $` interpretation in replacement strings
76
+ return template
77
+ .replace(/\$\{ROLE_FILE\}/g, () => roleFilePath)
78
+ .replace(/\$\{ROLE_CONTENT\}/g, () => roleContent);
79
+ }
80
+ /**
81
+ * Escape a string for safe inclusion inside single quotes in bash.
82
+ * Replaces ' with '\'' (end quote, escaped quote, start quote).
83
+ */
84
+ export function shellEscapeSingleQuote(value) {
85
+ return value.replace(/'/g, "'\\''");
86
+ }
87
+ // =============================================================================
88
+ // Custom harness provider
89
+ // =============================================================================
90
+ /**
91
+ * Build a HarnessProvider from a custom config definition.
92
+ * Template variables (${ROLE_FILE}, ${ROLE_CONTENT}) are expanded at call time.
93
+ */
94
+ export function buildCustomHarnessProvider(config) {
95
+ return {
96
+ buildRoleInjection: (content, filePath) => ({
97
+ args: config.roleArgs.map(arg => expandTemplateVars(arg, content, filePath)),
98
+ env: Object.fromEntries(Object.entries(config.roleEnv ?? {}).map(([k, v]) => [k, expandTemplateVars(v, content, filePath)])),
99
+ }),
100
+ buildScriptRoleInjection: (content, filePath) => ({
101
+ fragment: expandTemplateVars(config.roleScriptFragment, content, filePath),
102
+ env: Object.fromEntries(Object.entries(config.roleScriptEnv ?? {}).map(([k, v]) => [k, expandTemplateVars(v, content, filePath)])),
103
+ }),
104
+ };
105
+ }
106
+ // =============================================================================
107
+ // Validation
108
+ // =============================================================================
109
+ /**
110
+ * Validate a custom harness config entry.
111
+ * Throws a descriptive error if required fields are missing or wrong type.
112
+ */
113
+ export function validateCustomHarnessConfig(name, config) {
114
+ if (typeof config !== 'object' || config === null) {
115
+ throw new Error(`Harness "${name}": expected an object, got ${typeof config}`);
116
+ }
117
+ const obj = config;
118
+ if (!Array.isArray(obj.roleArgs)) {
119
+ throw new Error(`Harness "${name}": missing required field "roleArgs" (must be a string array)`);
120
+ }
121
+ if (!obj.roleArgs.every((a) => typeof a === 'string')) {
122
+ throw new Error(`Harness "${name}": "roleArgs" must contain only strings`);
123
+ }
124
+ if (typeof obj.roleScriptFragment !== 'string') {
125
+ throw new Error(`Harness "${name}": missing required field "roleScriptFragment" (must be a string)`);
126
+ }
127
+ if (obj.roleEnv !== undefined) {
128
+ if (typeof obj.roleEnv !== 'object' || obj.roleEnv === null) {
129
+ throw new Error(`Harness "${name}": "roleEnv" must be an object if provided`);
130
+ }
131
+ for (const [k, v] of Object.entries(obj.roleEnv)) {
132
+ if (typeof v !== 'string') {
133
+ throw new Error(`Harness "${name}": "roleEnv.${k}" must be a string, got ${typeof v}`);
134
+ }
135
+ }
136
+ }
137
+ if (obj.roleScriptEnv !== undefined) {
138
+ if (typeof obj.roleScriptEnv !== 'object' || obj.roleScriptEnv === null) {
139
+ throw new Error(`Harness "${name}": "roleScriptEnv" must be an object if provided`);
140
+ }
141
+ for (const [k, v] of Object.entries(obj.roleScriptEnv)) {
142
+ if (typeof v !== 'string') {
143
+ throw new Error(`Harness "${name}": "roleScriptEnv.${k}" must be a string, got ${typeof v}`);
144
+ }
145
+ }
146
+ }
147
+ return obj;
148
+ }
149
+ // =============================================================================
150
+ // Auto-detection
151
+ // =============================================================================
152
+ /**
153
+ * Detect harness type from a command string by extracting the basename of the
154
+ * first token and matching against known CLI names.
155
+ * Returns undefined if no match (caller decides what to do).
156
+ */
157
+ export function detectHarnessFromCommand(command) {
158
+ const firstToken = command.trim().split(/\s+/)[0];
159
+ if (!firstToken)
160
+ return undefined;
161
+ // Extract basename (handles full paths like /opt/homebrew/bin/codex)
162
+ const basename = firstToken.split('/').pop() || firstToken;
163
+ if (basename.includes('claude'))
164
+ return 'claude';
165
+ if (basename.includes('codex'))
166
+ return 'codex';
167
+ if (basename.includes('gemini'))
168
+ return 'gemini';
169
+ if (basename.includes('opencode'))
170
+ return 'opencode';
171
+ return undefined;
172
+ }
173
+ // =============================================================================
174
+ // Resolution
175
+ // =============================================================================
176
+ /**
177
+ * Resolve a harness name to a HarnessProvider.
178
+ *
179
+ * Resolution order:
180
+ * 1. Explicit harnessName → built-in or custom provider
181
+ * 2. Auto-detect from command string basename (if command provided)
182
+ * 3. Default to claude (backward compatible)
183
+ *
184
+ * Throws if harnessName is set but doesn't match any known provider.
185
+ */
186
+ export function resolveHarness(harnessName, customHarnesses, command) {
187
+ // Explicit harness name takes priority
188
+ if (harnessName) {
189
+ const builtin = BUILTIN_HARNESSES[harnessName];
190
+ if (builtin)
191
+ return builtin;
192
+ if (customHarnesses && harnessName in customHarnesses) {
193
+ return buildCustomHarnessProvider(customHarnesses[harnessName]);
194
+ }
195
+ const knownNames = Object.keys(BUILTIN_HARNESSES);
196
+ const customNames = customHarnesses ? Object.keys(customHarnesses) : [];
197
+ const allNames = [...knownNames, ...customNames];
198
+ throw new Error(`Unknown harness "${harnessName}". ` +
199
+ `Available harnesses: ${allNames.join(', ') || '(none)'}. ` +
200
+ `Configure a custom harness in .codev/config.json under the "harness" section.`);
201
+ }
202
+ // Auto-detect from command basename
203
+ if (command) {
204
+ const detected = detectHarnessFromCommand(command);
205
+ if (detected) {
206
+ return BUILTIN_HARNESSES[detected];
207
+ }
208
+ }
209
+ // Default to claude
210
+ return CLAUDE_HARNESS;
211
+ }
212
+ //# sourceMappingURL=harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/harness.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,15 @@
2
2
  * Role prompt utilities
3
3
  * Extracted from start.ts, spawn.ts, architect.ts to eliminate duplication
4
4
  * (Maintenance Run 0004)
5
+ *
6
+ * Uses the unified file resolver for per-file resolution:
7
+ * .codev/roles/<name>.md → codev/roles/<name>.md → skeleton/roles/<name>.md
5
8
  */
6
9
  export interface RoleConfig {
7
10
  codevDir: string;
8
11
  bundledRolesDir: string;
12
+ /** Workspace root for unified file resolution. Falls back to bundledRolesDir if not set. */
13
+ workspaceRoot?: string;
9
14
  }
10
15
  export interface RolePromptPath {
11
16
  path: string;
@@ -16,15 +21,17 @@ export interface RolePromptContent {
16
21
  source: 'local' | 'bundled';
17
22
  }
18
23
  /**
19
- * Find role prompt file path (local first, then bundled)
20
- * @param config - Configuration with codevDir and bundledRolesDir
24
+ * Find role prompt file path using unified per-file resolution.
25
+ * Each role file is resolved independently so partial overrides work correctly.
26
+ *
27
+ * @param config - Configuration with codevDir, bundledRolesDir, and optionally workspaceRoot
21
28
  * @param roleName - Name of the role (e.g., 'architect', 'builder')
22
29
  * @returns Path info or null if not found
23
30
  */
24
31
  export declare function findRolePromptPath(config: RoleConfig, roleName: string): RolePromptPath | null;
25
32
  /**
26
- * Load role prompt content (local first, then bundled)
27
- * @param config - Configuration with codevDir and bundledRolesDir
33
+ * Load role prompt content using unified per-file resolution.
34
+ * @param config - Configuration with codevDir, bundledRolesDir, and optionally workspaceRoot
28
35
  * @param roleName - Name of the role (e.g., 'architect', 'builder')
29
36
  * @returns Content and source or null if not found
30
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/roles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAc9F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAS7F"}
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/roles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAwB9F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAS7F"}
@@ -2,22 +2,37 @@
2
2
  * Role prompt utilities
3
3
  * Extracted from start.ts, spawn.ts, architect.ts to eliminate duplication
4
4
  * (Maintenance Run 0004)
5
+ *
6
+ * Uses the unified file resolver for per-file resolution:
7
+ * .codev/roles/<name>.md → codev/roles/<name>.md → skeleton/roles/<name>.md
5
8
  */
6
9
  import { existsSync, readFileSync } from 'node:fs';
7
10
  import { resolve } from 'node:path';
11
+ import { resolveCodevFile } from '../../lib/skeleton.js';
8
12
  /**
9
- * Find role prompt file path (local first, then bundled)
10
- * @param config - Configuration with codevDir and bundledRolesDir
13
+ * Find role prompt file path using unified per-file resolution.
14
+ * Each role file is resolved independently so partial overrides work correctly.
15
+ *
16
+ * @param config - Configuration with codevDir, bundledRolesDir, and optionally workspaceRoot
11
17
  * @param roleName - Name of the role (e.g., 'architect', 'builder')
12
18
  * @returns Path info or null if not found
13
19
  */
14
20
  export function findRolePromptPath(config, roleName) {
15
- // Try local project first
21
+ // Use unified resolver when workspaceRoot is available
22
+ if (config.workspaceRoot) {
23
+ const resolved = resolveCodevFile(`roles/${roleName}.md`, config.workspaceRoot);
24
+ if (resolved) {
25
+ // Determine source based on path
26
+ const isLocal = resolved.includes('.codev/') || resolved.includes('codev/roles/');
27
+ return { path: resolved, source: isLocal ? 'local' : 'bundled' };
28
+ }
29
+ return null;
30
+ }
31
+ // Legacy fallback for callers that don't provide workspaceRoot
16
32
  const localPath = resolve(config.codevDir, 'roles', `${roleName}.md`);
17
33
  if (existsSync(localPath)) {
18
34
  return { path: localPath, source: 'local' };
19
35
  }
20
- // Fall back to bundled
21
36
  const bundledPath = resolve(config.bundledRolesDir, `${roleName}.md`);
22
37
  if (existsSync(bundledPath)) {
23
38
  return { path: bundledPath, source: 'bundled' };
@@ -25,8 +40,8 @@ export function findRolePromptPath(config, roleName) {
25
40
  return null;
26
41
  }
27
42
  /**
28
- * Load role prompt content (local first, then bundled)
29
- * @param config - Configuration with codevDir and bundledRolesDir
43
+ * Load role prompt content using unified per-file resolution.
44
+ * @param config - Configuration with codevDir, bundledRolesDir, and optionally workspaceRoot
30
45
  * @param roleName - Name of the role (e.g., 'architect', 'builder')
31
46
  * @returns Content and source or null if not found
32
47
  */
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/roles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB,EAAE,QAAgB;IACrE,0BAA0B;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,QAAgB;IACjE,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/roles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAmBzD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB,EAAE,QAAgB;IACrE,uDAAuD;IACvD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,QAAQ,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QAChF,IAAI,QAAQ,EAAE,CAAC;YACb,iCAAiC;YACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAClF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,QAAgB;IACjE,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
  /**
6
6
  * Run the CLI with given arguments
7
- * Used by bin shims (af.js, consult.js) to inject commands
7
+ * Used by bin shims (afx.js, consult.js) to inject commands
8
8
  */
9
9
  export declare function run(args: string[]): Promise<void>;
10
10
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;AA+UH;;;GAGG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG;AAiXH;;;GAGG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvD"}
package/dist/cli.js CHANGED
@@ -9,6 +9,8 @@ import { doctor } from './commands/doctor.js';
9
9
  import { init } from './commands/init.js';
10
10
  import { adopt } from './commands/adopt.js';
11
11
  import { update } from './commands/update.js';
12
+ import { sync, getFrameworkCacheDir as _getFrameworkCacheDir } from './commands/sync.js';
13
+ import { setFrameworkCacheDir } from './lib/skeleton.js';
12
14
  import { consult } from './commands/consult/index.js';
13
15
  import { handleStats } from './commands/consult/stats.js';
14
16
  import { cli as porchCli } from './commands/porch/index.js';
@@ -27,6 +29,10 @@ function requireWorkspace() {
27
29
  console.error('Error: Not inside a Codev workspace. Run from a project that has a codev/ directory.');
28
30
  process.exit(1);
29
31
  }
32
+ // Initialize framework cache for remote source resolution
33
+ const cacheDir = _getFrameworkCacheDir(root);
34
+ if (cacheDir)
35
+ setFrameworkCacheDir(cacheDir);
30
36
  return root;
31
37
  }
32
38
  const program = new Command();
@@ -137,15 +143,30 @@ program
137
143
  process.exit(1);
138
144
  }
139
145
  });
146
+ // Sync command
147
+ program
148
+ .command('sync')
149
+ .description('Fetch and cache remote framework sources')
150
+ .option('-f, --force', 'Delete cache and re-fetch from scratch')
151
+ .option('-s, --status', 'Show current cache state')
152
+ .action(async (options) => {
153
+ try {
154
+ await sync({ force: options.force, status: options.status });
155
+ }
156
+ catch (error) {
157
+ console.error(error instanceof Error ? error.message : String(error));
158
+ process.exit(1);
159
+ }
160
+ });
140
161
  // Consult command
141
162
  program
142
163
  .command('consult')
143
164
  .description('AI consultation with external models')
144
165
  .argument('[subcommand]', 'Optional: stats')
145
- .option('-m, --model <model>', 'Model to use (gemini, codex, claude, or aliases: pro, gpt, opus)')
166
+ .option('-m, --model <model>', 'Model to use (gemini, codex, claude, hermes, or aliases: pro, gpt, opus)')
146
167
  .option('--prompt <text>', 'Inline prompt (general mode)')
147
168
  .option('--prompt-file <path>', 'Prompt file path (general mode)')
148
- .option('--protocol <name>', 'Protocol name: spir, aspir, air, bugfix, tick, maintain')
169
+ .option('--protocol <name>', 'Protocol name: spir, aspir, air, bugfix, maintain')
149
170
  .option('-t, --type <type>', 'Review type: spec, plan, impl, pr, phase, integration')
150
171
  .option('--issue <number>', 'Issue number (required from architect context)')
151
172
  .option('--output <path>', 'Write consultation output to file (used by porch)')
@@ -319,16 +340,27 @@ teamCmd
319
340
  // Agent-farm command (delegates to existing agent-farm CLI)
320
341
  program
321
342
  .command('agent-farm', { hidden: false })
322
- .alias('af')
343
+ .aliases(['afx', 'af'])
323
344
  .description('Agent farm commands (start, spawn, status, etc.)')
324
345
  .allowUnknownOption(true)
325
346
  .action(async () => {
326
347
  // This is handled specially - delegate to agent-farm
327
348
  // The args after 'agent-farm' need to be passed through
328
349
  });
350
+ // When invoked via standalone bin shim (e.g. `consult` not `codev consult`),
351
+ // strip the parent "codev" prefix from help usage lines
352
+ const standaloneCmd = process.env.CODEV_STANDALONE;
353
+ if (standaloneCmd) {
354
+ const stripParent = { commandUsage: (cmd) => cmd.name() + ' ' + cmd.usage() };
355
+ for (const cmd of program.commands) {
356
+ if (cmd.name() === standaloneCmd) {
357
+ cmd.configureHelp(stripParent);
358
+ }
359
+ }
360
+ }
329
361
  /**
330
362
  * Run the CLI with given arguments
331
- * Used by bin shims (af.js, consult.js) to inject commands
363
+ * Used by bin shims (afx.js, consult.js) to inject commands
332
364
  */
333
365
  export async function run(args) {
334
366
  // Check if this is an agent-farm command
@@ -347,7 +379,10 @@ const isMainModule = import.meta.url === `file://${process.argv[1]}` ||
347
379
  if (isMainModule) {
348
380
  // Check for agent-farm subcommand before commander parses
349
381
  const args = process.argv.slice(2);
350
- if (args[0] === 'agent-farm' || args[0] === 'af') {
382
+ if (args[0] === 'agent-farm' || args[0] === 'afx' || args[0] === 'af') {
383
+ if (args[0] === 'af') {
384
+ process.stderr.write('⚠ `codev af` is deprecated. Use `codev afx` or `afx` instead.\n');
385
+ }
351
386
  runAgentFarm(args.slice(1)).catch((error) => {
352
387
  console.error(error instanceof Error ? error.message : String(error));
353
388
  process.exit(1);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAoCD;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8LrE"}
1
+ {"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAoCD;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8JrE"}
@@ -10,7 +10,7 @@ import { spawn } from 'node:child_process';
10
10
  import chalk from 'chalk';
11
11
  import { getTemplatesDir } from '../lib/templates.js';
12
12
  import { confirm } from '../lib/cli-prompts.js';
13
- import { createUserDirs, createProjectsDir, copyConsultTypes, copyResourceTemplates, copyRoles, copyProtocols, copySkills, copyRootFiles, updateGitignore, } from '../lib/scaffold.js';
13
+ import { createUserDirs, createProjectsDir, copySkills, copyRootFiles, updateGitignore, } from '../lib/scaffold.js';
14
14
  // confirm imported from ../lib/cli-prompts.js
15
15
  /**
16
16
  * Detect conflicts with existing files
@@ -90,42 +90,9 @@ export async function adopt(options = {}) {
90
90
  console.log(chalk.green(' +'), 'codev/projects/');
91
91
  fileCount++;
92
92
  }
93
- // Copy resource templates - skip existing
94
- const resourcesResult = copyResourceTemplates(targetDir, skeletonDir, { skipExisting: true });
95
- for (const file of resourcesResult.copied) {
96
- console.log(chalk.green(' +'), `codev/resources/${file}`);
97
- fileCount++;
98
- }
99
- // Copy consult-types - skip existing
100
- const consultTypesResult = copyConsultTypes(targetDir, skeletonDir, { skipExisting: true });
101
- if (consultTypesResult.directoryCreated) {
102
- console.log(chalk.green(' +'), 'codev/consult-types/');
103
- fileCount++;
104
- }
105
- for (const file of consultTypesResult.copied) {
106
- console.log(chalk.green(' +'), `codev/consult-types/${file}`);
107
- fileCount++;
108
- }
109
- // Copy role definitions - skip existing (preserve user customizations)
110
- const rolesResult = copyRoles(targetDir, skeletonDir, { skipExisting: true });
111
- if (rolesResult.directoryCreated) {
112
- console.log(chalk.green(' +'), 'codev/roles/');
113
- fileCount++;
114
- }
115
- for (const file of rolesResult.copied) {
116
- console.log(chalk.green(' +'), `codev/roles/${file}`);
117
- fileCount++;
118
- }
119
- // Copy protocol definitions (required for porch orchestration) - skip existing
120
- const protocolsResult = copyProtocols(targetDir, skeletonDir, { skipExisting: true });
121
- if (protocolsResult.directoryCreated) {
122
- console.log(chalk.green(' +'), 'codev/protocols/');
123
- fileCount++;
124
- }
125
- for (const protocol of protocolsResult.copied) {
126
- console.log(chalk.green(' +'), `codev/protocols/${protocol}`);
127
- fileCount++;
128
- }
93
+ // Framework files (protocols, roles, consult-types, templates) are NOT copied.
94
+ // They resolve at runtime from the installed npm package via the unified file resolver.
95
+ // Existing local copies in codev/ are left in place — they take precedence via the resolution chain.
129
96
  // Copy .claude/skills/ - skip existing (preserve user customizations)
130
97
  const skillsResult = copySkills(targetDir, skeletonDir, { skipExisting: true });
131
98
  if (skillsResult.directoryCreated) {
@@ -146,18 +113,22 @@ export async function adopt(options = {}) {
146
113
  console.log(chalk.yellow(' !'), file, chalk.dim('(conflict - .codev-new created)'));
147
114
  skippedCount++;
148
115
  }
149
- // Create af-config.json if it doesn't exist
150
- const afConfigPath = path.join(targetDir, 'af-config.json');
151
- if (!fs.existsSync(afConfigPath)) {
152
- const afConfig = {
116
+ // Create .codev/config.json if it doesn't exist
117
+ const codevConfigDir = path.join(targetDir, '.codev');
118
+ const codevConfigPath = path.join(codevConfigDir, 'config.json');
119
+ if (!fs.existsSync(codevConfigPath)) {
120
+ if (!fs.existsSync(codevConfigDir)) {
121
+ fs.mkdirSync(codevConfigDir, { recursive: true });
122
+ }
123
+ const codevConfig = {
153
124
  shell: {
154
125
  architect: skipPermissions ? 'claude --dangerously-skip-permissions' : 'claude',
155
126
  builder: skipPermissions ? 'claude --dangerously-skip-permissions' : 'claude',
156
127
  shell: 'bash',
157
128
  },
158
129
  };
159
- fs.writeFileSync(afConfigPath, JSON.stringify(afConfig, null, 2) + '\n');
160
- console.log(chalk.green(' +'), 'af-config.json');
130
+ fs.writeFileSync(codevConfigPath, JSON.stringify(codevConfig, null, 2) + '\n');
131
+ console.log(chalk.green(' +'), '.codev/config.json');
161
132
  fileCount++;
162
133
  }
163
134
  // Update or create .gitignore
@@ -178,8 +149,8 @@ export async function adopt(options = {}) {
178
149
  console.log(chalk.bold('Next steps:'));
179
150
  console.log('');
180
151
  console.log(' consult plan # Review the plan with an architect');
181
- console.log(' af tower start # Start the Tower daemon');
182
- console.log(' af spawn # Spawn a builder to implement the plan');
152
+ console.log(' afx tower start # Start the Tower daemon');
153
+ console.log(' afx spawn # Spawn a builder to implement the plan');
183
154
  console.log('');
184
155
  console.log(chalk.dim('For more info, see: https://github.com/cluesmith/codev'));
185
156
  // If there are root conflicts (CLAUDE.md, AGENTS.md), spawn Claude to merge