@humwick/runner 0.0.0-stage → 0.130.1

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 (293) hide show
  1. package/LICENSE +167 -0
  2. package/agent-bin/agent-relay-browser +10 -0
  3. package/agent-bin/humwick +10 -0
  4. package/hooks/fff-search-redirect/fff-search-redirect.cjs +161 -0
  5. package/hooks/fff-search-redirect/hooks.json +13 -0
  6. package/hooks/rg-r-guard/hooks.json +18 -0
  7. package/hooks/rg-r-guard/rg-r-guard.cjs +144 -0
  8. package/hooks/web-tools-redirect/hooks.json +13 -0
  9. package/hooks/web-tools-redirect/web-tools-redirect.cjs +84 -0
  10. package/node_modules/@humwick/offload/LICENSE +167 -0
  11. package/node_modules/@humwick/offload/README.md +57 -0
  12. package/node_modules/@humwick/offload/dist/async-runner.d.ts +18 -0
  13. package/node_modules/@humwick/offload/dist/async-runner.d.ts.map +1 -0
  14. package/node_modules/@humwick/offload/dist/async-runner.js +158 -0
  15. package/node_modules/@humwick/offload/dist/async-runner.js.map +1 -0
  16. package/node_modules/@humwick/offload/dist/envelope.d.ts +25 -0
  17. package/node_modules/@humwick/offload/dist/envelope.d.ts.map +1 -0
  18. package/node_modules/@humwick/offload/dist/envelope.js +80 -0
  19. package/node_modules/@humwick/offload/dist/envelope.js.map +1 -0
  20. package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts +10 -0
  21. package/node_modules/@humwick/offload/dist/fixtures/worker-task.d.ts.map +1 -0
  22. package/node_modules/@humwick/offload/dist/fixtures/worker-task.js +59 -0
  23. package/node_modules/@humwick/offload/dist/fixtures/worker-task.js.map +1 -0
  24. package/node_modules/@humwick/offload/dist/index.d.ts +5 -0
  25. package/node_modules/@humwick/offload/dist/index.d.ts.map +1 -0
  26. package/node_modules/@humwick/offload/dist/index.js +5 -0
  27. package/node_modules/@humwick/offload/dist/index.js.map +1 -0
  28. package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts +62 -0
  29. package/node_modules/@humwick/offload/dist/subprocess-runner.d.ts.map +1 -0
  30. package/node_modules/@humwick/offload/dist/subprocess-runner.js +295 -0
  31. package/node_modules/@humwick/offload/dist/subprocess-runner.js.map +1 -0
  32. package/node_modules/@humwick/offload/dist/types.d.ts +111 -0
  33. package/node_modules/@humwick/offload/dist/types.d.ts.map +1 -0
  34. package/node_modules/@humwick/offload/dist/types.js +176 -0
  35. package/node_modules/@humwick/offload/dist/types.js.map +1 -0
  36. package/node_modules/@humwick/offload/dist/worker-pool.d.ts +23 -0
  37. package/node_modules/@humwick/offload/dist/worker-pool.d.ts.map +1 -0
  38. package/node_modules/@humwick/offload/dist/worker-pool.js +435 -0
  39. package/node_modules/@humwick/offload/dist/worker-pool.js.map +1 -0
  40. package/node_modules/@humwick/offload/dist/worker-runtime.d.ts +2 -0
  41. package/node_modules/@humwick/offload/dist/worker-runtime.d.ts.map +1 -0
  42. package/node_modules/@humwick/offload/dist/worker-runtime.js +27 -0
  43. package/node_modules/@humwick/offload/dist/worker-runtime.js.map +1 -0
  44. package/node_modules/@humwick/offload/dist/worker.d.ts +5 -0
  45. package/node_modules/@humwick/offload/dist/worker.d.ts.map +1 -0
  46. package/node_modules/@humwick/offload/dist/worker.js +1 -0
  47. package/node_modules/@humwick/offload/dist/worker.js.map +1 -0
  48. package/node_modules/@humwick/offload/package.json +42 -0
  49. package/node_modules/@humwick/offload/src/async-runner.ts +170 -0
  50. package/node_modules/@humwick/offload/src/envelope.ts +92 -0
  51. package/node_modules/@humwick/offload/src/fixtures/worker-task.ts +49 -0
  52. package/node_modules/@humwick/offload/src/index.ts +4 -0
  53. package/node_modules/@humwick/offload/src/subprocess-runner.ts +334 -0
  54. package/node_modules/@humwick/offload/src/types.ts +235 -0
  55. package/node_modules/@humwick/offload/src/worker-pool.ts +463 -0
  56. package/node_modules/@humwick/offload/src/worker-runtime.ts +32 -0
  57. package/node_modules/@humwick/offload/src/worker.ts +5 -0
  58. package/package.json +47 -4
  59. package/plugins/browser/skills/playwright-cli/SKILL.md +53 -0
  60. package/plugins/claude/.claude-plugin/plugin.json +8 -0
  61. package/plugins/claude/claude-statusline-probe.cjs +144 -0
  62. package/plugins/claude/hooks/gate-run-guard.provisioned.mjs +914 -0
  63. package/plugins/claude/hooks/gate-run-guard.sh +9 -0
  64. package/plugins/claude/hooks/gate-run-guard.ts +237 -0
  65. package/plugins/claude/hooks/hooks.json +158 -0
  66. package/plugins/claude/hooks/kill-guard.provisioned.mjs +7027 -0
  67. package/plugins/claude/hooks/kill-guard.sh +341 -0
  68. package/plugins/claude/hooks/kill-guard.ts +337 -0
  69. package/plugins/claude/hooks/permission-request.sh +22 -0
  70. package/plugins/claude/hooks/post-compact.sh +10 -0
  71. package/plugins/claude/hooks/post-tool-use.sh +8 -0
  72. package/plugins/claude/hooks/pre-compact.sh +12 -0
  73. package/plugins/claude/hooks/read-only-bash-guard.sh +587 -0
  74. package/plugins/claude/hooks/relay-status.sh +373 -0
  75. package/plugins/claude/hooks/session-end.sh +26 -0
  76. package/plugins/claude/hooks/session-start.sh +31 -0
  77. package/plugins/claude/hooks/shell-trust.ts +28 -0
  78. package/plugins/claude/hooks/stop-failure.sh +47 -0
  79. package/plugins/claude/hooks/stop.sh +48 -0
  80. package/plugins/claude/hooks/subagent-guard.cjs +26 -0
  81. package/plugins/claude/hooks/subagent-skill-policy.cjs +160 -0
  82. package/plugins/claude/hooks/subagent-start.sh +13 -0
  83. package/plugins/claude/hooks/subagent-stop.sh +19 -0
  84. package/plugins/claude/hooks/user-prompt-submit.sh +18 -0
  85. package/plugins/claude/hooks/wait-loop-guard.ts +120 -0
  86. package/plugins/claude/monitors/monitors.json +7 -0
  87. package/plugins/claude/monitors/relay-monitor.provisioned.mjs +786 -0
  88. package/plugins/claude/monitors/relay-monitor.ts +58 -0
  89. package/plugins/claude/skills/disconnect/SKILL.md +16 -0
  90. package/plugins/claude/skills/label/SKILL.md +23 -0
  91. package/plugins/claude/skills/message/SKILL.md +40 -0
  92. package/plugins/claude/skills/pair/SKILL.md +30 -0
  93. package/plugins/claude/skills/react/SKILL.md +18 -0
  94. package/plugins/claude/skills/read-message/SKILL.md +24 -0
  95. package/plugins/claude/skills/reply/SKILL.md +44 -0
  96. package/plugins/claude/skills/send-claimable/SKILL.md +39 -0
  97. package/plugins/claude/skills/slice-first/SKILL.md +32 -0
  98. package/plugins/claude/skills/slice-first/references/plan-recipe.md +46 -0
  99. package/plugins/claude/skills/status/SKILL.md +16 -0
  100. package/plugins/claude/skills/tags/SKILL.md +25 -0
  101. package/plugins/claude/skills/task/SKILL.md +28 -0
  102. package/plugins/claude-output-style/.claude-plugin/plugin.json +5 -0
  103. package/plugins/claude-output-style/output-styles/agent-relay.md +5 -0
  104. package/plugins/codex/skills/disconnect/SKILL.md +15 -0
  105. package/plugins/codex/skills/guide/SKILL.md +15 -0
  106. package/plugins/codex/skills/label/SKILL.md +22 -0
  107. package/plugins/codex/skills/message/SKILL.md +40 -0
  108. package/plugins/codex/skills/pair/SKILL.md +29 -0
  109. package/plugins/codex/skills/react/SKILL.md +17 -0
  110. package/plugins/codex/skills/read-message/SKILL.md +23 -0
  111. package/plugins/codex/skills/reply/SKILL.md +44 -0
  112. package/plugins/codex/skills/send-claimable/SKILL.md +39 -0
  113. package/plugins/codex/skills/slice-first/SKILL.md +32 -0
  114. package/plugins/codex/skills/slice-first/references/plan-recipe.md +46 -0
  115. package/plugins/codex/skills/status/SKILL.md +15 -0
  116. package/plugins/codex/skills/tags/SKILL.md +24 -0
  117. package/plugins/codex/skills/task/SKILL.md +28 -0
  118. package/src/adapter.ts +1061 -0
  119. package/src/adapters/__fixtures__/codex-app-server.ts +47 -0
  120. package/src/adapters/claude-api.ts +243 -0
  121. package/src/adapters/claude-context-command.ts +16 -0
  122. package/src/adapters/claude-credentials.ts +22 -0
  123. package/src/adapters/claude-delivery-lanes.ts +28 -0
  124. package/src/adapters/claude-delivery.ts +166 -0
  125. package/src/adapters/claude-effort.ts +94 -0
  126. package/src/adapters/claude-exit.ts +290 -0
  127. package/src/adapters/claude-headless-mirror.ts +88 -0
  128. package/src/adapters/claude-headless-refusal.ts +51 -0
  129. package/src/adapters/claude-headless.ts +617 -0
  130. package/src/adapters/claude-monitor-delivery-plan.ts +317 -0
  131. package/src/adapters/claude-permission.ts +243 -0
  132. package/src/adapters/claude-prompt-gates.ts +269 -0
  133. package/src/adapters/claude-prompt-hook.ts +145 -0
  134. package/src/adapters/claude-session-capture.ts +293 -0
  135. package/src/adapters/claude-session-probe.ts +414 -0
  136. package/src/adapters/claude-shutdown.ts +190 -0
  137. package/src/adapters/claude-status-detectors.ts +426 -0
  138. package/src/adapters/claude-subagents.ts +93 -0
  139. package/src/adapters/claude-submit-confirmation.ts +287 -0
  140. package/src/adapters/claude-tmux.ts +548 -0
  141. package/src/adapters/claude-token-usage-capture.ts +253 -0
  142. package/src/adapters/claude-tool-policy.ts +165 -0
  143. package/src/adapters/claude-transcript-tail.ts +193 -0
  144. package/src/adapters/claude-transcript.ts +812 -0
  145. package/src/adapters/claude.ts +1097 -0
  146. package/src/adapters/codex-agent-message-capture.ts +189 -0
  147. package/src/adapters/codex-app-server.ts +70 -0
  148. package/src/adapters/codex-client.ts +362 -0
  149. package/src/adapters/codex-effective-config.ts +87 -0
  150. package/src/adapters/codex-launch-config.ts +153 -0
  151. package/src/adapters/codex-rollout-context.ts +272 -0
  152. package/src/adapters/codex-skill-discovery.ts +18 -0
  153. package/src/adapters/codex-token-usage-capture.ts +163 -0
  154. package/src/adapters/codex-tool-output.ts +53 -0
  155. package/src/adapters/codex-turn-outcome.ts +27 -0
  156. package/src/adapters/codex-version.ts +64 -0
  157. package/src/adapters/codex.ts +1442 -0
  158. package/src/adapters/incremental-file.ts +110 -0
  159. package/src/adapters/opencode-api.ts +71 -0
  160. package/src/adapters/opencode-context.ts +277 -0
  161. package/src/adapters/opencode-model-registry.ts +126 -0
  162. package/src/adapters/opencode-provider.ts +169 -0
  163. package/src/adapters/opencode-server-retry.ts +50 -0
  164. package/src/adapters/opencode-soft-steer.ts +302 -0
  165. package/src/adapters/opencode-spawn.ts +145 -0
  166. package/src/adapters/opencode-subscribe.ts +62 -0
  167. package/src/adapters/opencode-token-usage-capture.ts +187 -0
  168. package/src/adapters/opencode-tool-events.ts +302 -0
  169. package/src/adapters/opencode-tools-config.ts +17 -0
  170. package/src/adapters/opencode.ts +2264 -0
  171. package/src/adapters/project-shell.ts +80 -0
  172. package/src/adapters/provider-launch-config.ts +21 -0
  173. package/src/adapters/provider-quota-harvest.ts +127 -0
  174. package/src/adapters/service-access.ts +153 -0
  175. package/src/adapters/tmux-offload.ts +207 -0
  176. package/src/adapters/tool-summary.ts +214 -0
  177. package/src/agent-redact.ts +75 -0
  178. package/src/agent-runner/commands/dispatch.ts +185 -0
  179. package/src/agent-runner/commands/lifecycle.ts +84 -0
  180. package/src/agent-runner/commands/prompt.ts +284 -0
  181. package/src/agent-runner/credentials.ts +208 -0
  182. package/src/agent-runner/http-liveness.ts +85 -0
  183. package/src/agent-runner/lifecycle-milestones.ts +207 -0
  184. package/src/agent-runner/lifecycle-phase.ts +80 -0
  185. package/src/agent-runner/registration.ts +163 -0
  186. package/src/agent-runner/runner-context.ts +158 -0
  187. package/src/agent-runner/session-mirror.ts +278 -0
  188. package/src/agent-runner/task-claims.ts +116 -0
  189. package/src/agent-runner/token-usage-coverage.ts +54 -0
  190. package/src/agent-runner/turn-report.ts +269 -0
  191. package/src/api-budget-accounting.ts +91 -0
  192. package/src/area-memory.ts +255 -0
  193. package/src/artifact-path-materialize.ts +52 -0
  194. package/src/async-guard.ts +35 -0
  195. package/src/attachment-cache-sweep.ts +31 -0
  196. package/src/attachment-cache.ts +195 -0
  197. package/src/background-script-reconcile.ts +106 -0
  198. package/src/bounded-log.ts +59 -0
  199. package/src/bounded-spawn-sync.ts +18 -0
  200. package/src/busy-reconciler.ts +282 -0
  201. package/src/claim-tracker.ts +140 -0
  202. package/src/claude-settings.ts +167 -0
  203. package/src/claude-workspace-trust.ts +289 -0
  204. package/src/config.ts +547 -0
  205. package/src/context-boundary.ts +101 -0
  206. package/src/context-command.ts +151 -0
  207. package/src/context-probe-state.ts +6 -0
  208. package/src/continuation-archive.ts +179 -0
  209. package/src/control-server.ts +730 -0
  210. package/src/delivery-policy.ts +9 -0
  211. package/src/delivery-result.ts +24 -0
  212. package/src/effort-command.ts +125 -0
  213. package/src/empty-turn.ts +816 -0
  214. package/src/free-port.ts +25 -0
  215. package/src/fs-offload.ts +26 -0
  216. package/src/gate-run-config.ts +35 -0
  217. package/src/gate-run-lease-probe.ts +38 -0
  218. package/src/host-asset-plan.ts +450 -0
  219. package/src/host-claude-config-worker.ts +34 -0
  220. package/src/host-sources.ts +40 -0
  221. package/src/inbox-carrier.ts +7 -0
  222. package/src/index.ts +386 -0
  223. package/src/launch-assembly.ts +955 -0
  224. package/src/liveness.ts +105 -0
  225. package/src/logger.ts +108 -0
  226. package/src/mcp-outbox.ts +204 -0
  227. package/src/mcp-preflight.ts +86 -0
  228. package/src/mcp-source-selection.ts +54 -0
  229. package/src/mcp-tool-deferral.ts +35 -0
  230. package/src/mcp-vault-env.ts +25 -0
  231. package/src/message-body-config/config.ts +16 -0
  232. package/src/message-body-config.ts +1 -0
  233. package/src/mid-turn-delivery.ts +43 -0
  234. package/src/native-memory-lever.ts +329 -0
  235. package/src/native-self-resume.ts +244 -0
  236. package/src/outbox.ts +453 -0
  237. package/src/park-post.ts +17 -0
  238. package/src/pending-permission-store.ts +148 -0
  239. package/src/process-meta.ts +9 -0
  240. package/src/profile-home.ts +419 -0
  241. package/src/profile-projection.ts +411 -0
  242. package/src/project-hooks.ts +65 -0
  243. package/src/project-instructions.ts +119 -0
  244. package/src/provider-double.ts +59 -0
  245. package/src/provider-hold.ts +228 -0
  246. package/src/provider-home-marker.ts +3 -0
  247. package/src/provider-home-tombstone.ts +4 -0
  248. package/src/provider-input-queue.ts +134 -0
  249. package/src/provider-integration.ts +93 -0
  250. package/src/provider-processes.ts +17 -0
  251. package/src/provider-submit-failure.ts +15 -0
  252. package/src/providers.ts +35 -0
  253. package/src/provisioning.ts +703 -0
  254. package/src/question-decision.ts +18 -0
  255. package/src/quota.ts +22 -0
  256. package/src/rate-limit.ts +351 -0
  257. package/src/refused-prompt-store.ts +36 -0
  258. package/src/relay-injection-events.ts +161 -0
  259. package/src/relay-instructions.ts +107 -0
  260. package/src/relay-mcp-proxy.long-turn-e2e.ts +183 -0
  261. package/src/relay-mcp-proxy.ts +704 -0
  262. package/src/relay-mcp.ts +583 -0
  263. package/src/reply-obligation-cache.ts +211 -0
  264. package/src/response-capture-report.ts +111 -0
  265. package/src/response-routing.ts +6 -0
  266. package/src/runner-core.ts +2955 -0
  267. package/src/runner-exit.ts +12 -0
  268. package/src/runner-helpers.ts +582 -0
  269. package/src/runner-insights.ts +105 -0
  270. package/src/runner-mcp-proxy.ts +46 -0
  271. package/src/runner-spawn-config.ts +68 -0
  272. package/src/runner-stale-scratch-sweep.ts +21 -0
  273. package/src/runner.ts +9 -0
  274. package/src/runtime-token-file.ts +45 -0
  275. package/src/runtime-token-remint.ts +56 -0
  276. package/src/service-access.ts +88 -0
  277. package/src/session-destroy.ts +27 -0
  278. package/src/session-insights.ts +118 -0
  279. package/src/session-scratch.ts +296 -0
  280. package/src/spawn-input.ts +147 -0
  281. package/src/startup-config-fetch.ts +48 -0
  282. package/src/subreaper.ts +113 -0
  283. package/src/template-resolver.ts +29 -0
  284. package/src/test-run-dedup.ts +435 -0
  285. package/src/transcript-context.ts +99 -0
  286. package/src/transport-errors.ts +48 -0
  287. package/src/turn-opener.ts +55 -0
  288. package/src/turn-reconcile-event.ts +88 -0
  289. package/src/vault-proxy-hop.ts +99 -0
  290. package/src/version.ts +44 -0
  291. package/src/web-tool-call-proxy.ts +128 -0
  292. package/src/web-tools.ts +59 -0
  293. package/README.md +0 -3
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: reply
3
+ description: Reply to an Humwick message by ID. Auto-routes to the sender and inherits channel context — no target needed. Use when the user invokes /reply or asks to reply to a specific relay message, especially with stdin/file for long replies.
4
+ argument-hint: "<messageId> <message|--stdin|--body-file PATH>"
5
+ allowed-tools: [Bash]
6
+ ---
7
+
8
+ # Humwick Reply
9
+
10
+ ⚠️ **SECURITY — never inline the reply body in the shell command.** Your shell runs
11
+ the command you type, so a body containing markdown backticks `` `like this` `` or
12
+ `$(...)` would be executed as a shell command *before* `agent-relay` ever sees it
13
+ (command substitution). This is a real command-injection vector (#1262): the body may
14
+ quote another agent's or a user's text. **Always feed the body through stdin via a
15
+ quoted heredoc**, which disables all shell expansion and delivers the body verbatim.
16
+
17
+ Run (safe — quoted `'RELAY_EOF'` delimiter means no expansion, no substitution):
18
+
19
+ ```bash
20
+ agent-relay /reply <messageId> --stdin <<'RELAY_EOF'
21
+ Your reply text here. Backticks `bun run release` and $(anything) are delivered
22
+ verbatim and are NOT executed.
23
+ RELAY_EOF
24
+ ```
25
+
26
+ The server auto-routes the reply to the original sender and inherits the channel
27
+ (Telegram, Slack, etc.) if applicable. No target or channel ID needed.
28
+
29
+ For a reply you have already staged in a file, use `--body-file` instead:
30
+
31
+ ```bash
32
+ agent-relay /reply <messageId> --body-file .agent-relay/sessions/$AGENT_RELAY_ID/tmp/reply.md
33
+ ```
34
+
35
+ The relay creates that per-session scratch dir for you (git-ignored locally), so
36
+ staging there never pollutes the working tree and never collides with other agents.
37
+ No cleanup needed — the dir is reaped when your session ends. Oversized replies are
38
+ automatically uploaded as an Humwick artifact and sent as an attached concise reply.
39
+
40
+ **Do NOT** build `agent-relay /reply <id> "…body…"` with the body inside quotes — the
41
+ heredoc `--stdin` form above is the only safe way to pass free text.
42
+
43
+ Do not send a separate Relay follow-up that only confirms the reply was sent. The CLI
44
+ output is enough local confirmation.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: send-claimable
3
+ description: Send a claimable Humwick work item so one matching agent can claim and handle it. Use when the user invokes /send-claimable or wants to enqueue work for another agent.
4
+ argument-hint: "<target> <message|--stdin|--body-file PATH> [--subject TEXT] [--channel NAME]"
5
+ allowed-tools: [Bash]
6
+ ---
7
+
8
+ # Humwick Send Claimable
9
+
10
+ ⚠️ **SECURITY — never inline the work-item body in the shell command.** A body with
11
+ markdown backticks `` `like this` `` or `$(...)` would be shell-executed (command
12
+ substitution) before `agent-relay` sees it — a command-injection vector (#1262).
13
+ **Feed the body through stdin via a quoted heredoc** (the `'RELAY_EOF'` quotes disable
14
+ all expansion, delivering the body verbatim):
15
+
16
+ ```bash
17
+ agent-relay /send-claimable <target> --stdin <<'RELAY_EOF'
18
+ Describe the work item here. Backticks `bun run release` and $(anything) are
19
+ delivered verbatim and are NOT executed.
20
+ RELAY_EOF
21
+ ```
22
+
23
+ Targets can be an agent id, `tag:`, `cap:`, or `policy:`:
24
+
25
+ ```bash
26
+ agent-relay /send-claimable tag:backend --stdin <<'RELAY_EOF'
27
+ Fix the failing API test
28
+ RELAY_EOF
29
+
30
+ agent-relay /send-claimable cap:review --stdin <<'RELAY_EOF'
31
+ Review the migration patch
32
+ RELAY_EOF
33
+ ```
34
+
35
+ For a work item you have already staged in a file, use `--body-file PATH` instead.
36
+
37
+ **Do NOT** build `agent-relay /send-claimable <target> "…body…"` with the body inside quotes.
38
+
39
+ Report the sent claimable message id briefly.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: slice-first
3
+ description: Frame and prove a thin end-to-end feature slice before planning hardening. Use for new feature coordination or stage decisions in any project.
4
+ ---
5
+
6
+ # Slice first
7
+
8
+ Use the current project's instructions and configured validation/deployment gates,
9
+ including its “How to validate in THIS project” brief or `.agent-relay/land-gates.json`.
10
+ Choose the proof's location and runtime in that project; no particular repo is required.
11
+
12
+ | Stage | Required result |
13
+ |---|---|
14
+ | frame | Write and commit the executable proof FIRST; it fails for the right reason. Then a slice spec, max one page: path, proof command, allowed shortcuts, fixed v1 bar, unknowns, harden budget (default 6 Tasks). |
15
+ | slice | One builder, one branch, all layers, flag off by default. Proof passes on a deployed/ephemeral instance and a different agent reproduces it. |
16
+ | harden | Only after independent proof passes: plan small changes to the working feature; re-run the proof at every delivery. |
17
+ | v1 | Fixed bar met; enable flag; file remaining work as future issues outside the DAG. |
18
+ | closed | Record closure. |
19
+
20
+ Coordinator owns stages, scope ledger and budget; record stage decisions on the spec
21
+ Task. Changing the bar or exceeding the budget needs operator approval. A blocked
22
+ slice returns to frame. Never create or spawn harden Tasks before the proof Task is
23
+ done with `slice-proof: pass`; dependencies alone do not prevent dispatch.
24
+
25
+ Design writes proof then spec, no full design. Builder declares each slice shortcut
26
+ in delivery risks. QA reproduces independently. Review blocks only on the stage's
27
+ bar: declared slice shortcuts may pass; unmet harden/v1 criteria block. Outside-bar
28
+ findings are future work.
29
+
30
+ `slice-proof` supplements project gates; it never replaces them. Record command,
31
+ revision and instance with the result. For coordinators building a plan, load
32
+ [references/plan-recipe.md](references/plan-recipe.md). Other roles need no recipe.
@@ -0,0 +1,46 @@
1
+ # Plan recipe (coordinator only)
2
+
3
+ 1. **Frame.** `relay_plan_create { title:"<feature>", acceptance:[{ id, text, check?:{ path }|{ command } }] }`.
4
+ Acceptance is required: the plan's own bar (the design doc's deliverables, deletions and
5
+ acceptance commands), one checkable item each. Then create and bind the spec Task:
6
+ `relay_task_create { intent, issueRefs:["#<feature>"] }` →
7
+ `relay_plan_add_node { planId, node:{ id:"spec", label:"Slice spec", lane:"frame", refs:{ taskId:<spec> } } }`.
8
+ Record the fixed v1 bar and budget on this Task; spawn `software-design` on it.
9
+ 2. **Slice.** Create the build Task (normal landing Task) and the proof Task. The proof
10
+ Task must not land: `relay_task_create { intent:"Independent slice proof",
11
+ doneWhen:"delivered", dispatch:{ type:"review" }, context:"<proof command>; <instance>" }`.
12
+ Add both as nodes (lane `slice`, `refs:{ taskId }`) and edges `spec→build`, `build→proof`
13
+ (`relay_plan_add_edge { planId, from, to }`: `to` depends on `from`; edges between bound
14
+ nodes become Task dependencies). Spawn a `worker` on `build`; when its project delivery/deployment
15
+ gates pass, spawn `QA` on `proof`.
16
+ 3. **Gate.** The prover delivers the proof Task; that closes it `done` with no land attempt
17
+ because it is a delivered review Task. `relay_task_record_gate` alone does not finish it,
18
+ so its harden dependents stay on an open upstream.
19
+ - Pass: `relay_task_deliver { disposition:"complete", summary, gates:{ other:[{ name:"slice-proof", status:"pass", detail:"<command> @ <sha> on <instance>" }] } }`
20
+ - Fail: `relay_task_deliver { disposition:"failed", summary, reason:"<blocker>", gates:{ other:[{ name:"slice-proof", status:"fail", detail }] } }`
21
+
22
+ Fail → frame again (new spec revision, same plan). Pass → verify the proof Task is
23
+ `done` with `slice-proof: pass`, then record the stage on the spec Task:
24
+ `relay_task_memory_append_decision { taskId:<spec>, decision:"stage: harden" }`.
25
+ 4. **Harden.** Only now add harden nodes (lane `harden`, bound to their Tasks), each with
26
+ an edge `proof→<node>`, up to the budget. Each harden builder delivers normally and adds
27
+ the proof re-run: `relay_task_deliver { disposition:"complete", summary, commits,
28
+ idempotencyKey, gates:{ test:{ status:"pass" }, other:[{ name:"slice-proof", status:"pass" }] } }`.
29
+ 5. **Conformance.** When every node lands the plan reads `completion:"conformance-pending"`,
30
+ not done, and you get a `plan.conformance-pending` notice. Fetch, check each acceptance item
31
+ on the main tip (or spawn a fresh agent to audit it), then
32
+ `relay_plan_conformance { planId, mainSha:<origin/main tip>, items:[{ id, status:"met"|"unmet", note? }] }`.
33
+ A gap files one bound Task per unmet item and reopens the plan; repeat after they land.
34
+ Only a pass makes the plan `done`.
35
+ 6. **v1/closed.** Bar met → flag on, file "future" issues, record `stage: v1`;
36
+ after closure, record `stage: closed` and archive the plan.
37
+
38
+ Before spawning a harden builder, read `relay_task_get { taskId:<harden>, verbose:true }`
39
+ for `dependsOn`, then `relay_task_get { taskId:<proof>, verbose:true }`; require
40
+ `status:"done"` and `slice-proof` with `status:"pass"`. Relay records dependencies;
41
+ the coordinator enforces dispatch order. Validate with the project's own commands
42
+ from its spawn brief/config; the proof is an additional gate.
43
+
44
+ Check gate order any time with `relay_plan_get { planId, mode:"lean" }`: every
45
+ `harden` node must have `proof` upstream, and no harden node may exist while the proof
46
+ Task is not complete with a passing `slice-proof` gate.
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: status
3
+ description: Show Humwick status for this session, including relay health, current agent id, label, tags, readiness, and active pair state. Use when the user invokes /status or asks for relay connection status.
4
+ argument-hint: "[--json]"
5
+ ---
6
+
7
+ # Humwick Status
8
+
9
+ Run:
10
+
11
+ ```bash
12
+ agent-relay /status $ARGUMENTS
13
+ ```
14
+
15
+ Summarize the current relay connection, agent identity, label, tags, and active pair state.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: tags
3
+ description: List or update Humwick tags for the current session. Use when the user invokes /tags or asks to set, add, remove, or inspect relay tags.
4
+ argument-hint: "[TAG ...|--list|--add TAGS|--remove TAGS]"
5
+ ---
6
+
7
+ # Humwick Tags
8
+
9
+ Run:
10
+
11
+ ```bash
12
+ agent-relay /tags $ARGUMENTS
13
+ ```
14
+
15
+ Examples:
16
+
17
+ ```bash
18
+ agent-relay /tags
19
+ agent-relay /tags backend tests urgent
20
+ agent-relay /tags --add backend,tests
21
+ agent-relay /tags --remove urgent
22
+ ```
23
+
24
+ Report the resulting tags briefly.
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: agent-relay-task
3
+ description: Use Humwick Task tools to create, update, and document durable work records. Use when coordinating multi-step work or when your brief was spawned from a Task.
4
+ ---
5
+
6
+ # Humwick Task
7
+
8
+ Use Relay Task tools for durable work tracking instead of burying state in chat.
9
+
10
+ Coordinators:
11
+
12
+ - Create a Task before multi-step work with `relay_task_create`.
13
+ - Set `intent`, `complexity`, and useful `context`; add `doneWhen`, `dispatch`, refs, or dependencies when they clarify routing.
14
+ - Spawn workers from the Task so they inherit the Task context.
15
+
16
+ Workers:
17
+
18
+ - Use `relay_task_set_status` as work moves through `in_progress`, `blocked`, `done`, `failed`, or `canceled`.
19
+ - Use `relay_task_memory_replace_working_state` for current progress a retry agent needs.
20
+ - Use `relay_task_memory_append_decision` for durable choices and rationale.
21
+ - Use `relay_task_memory_append_ruled_out` for dead ends, failed approaches, and why they were rejected.
22
+
23
+ Useful reads and updates:
24
+
25
+ - `relay_task_get` and `relay_task_history` inspect the Task and audit timeline.
26
+ - `relay_task_update` refreshes intent, context, latest steer, doneWhen, complexity, or dispatch.
27
+ - `relay_task_record_gate` records tests, typecheck, docs, smoke, and other quality gates.
28
+ - `relay_task_dispatch` maps Task shape to a concrete spawn and launches it bound to the Task (shared spawn path). Idempotent retry needs a caller-supplied spawnRequestId, as with relay_spawn_agent.