@humwick/runner 0.130.5 → 0.130.6
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.
- package/agent-bin/humwick +2 -2
- package/agent-bin/humwick-browser +4 -0
- package/hooks/fff-search-redirect/fff-search-redirect.cjs +1 -1
- package/hooks/web-tools-redirect/web-tools-redirect.cjs +2 -2
- package/package.json +7 -10
- package/plugins/browser/skills/playwright-cli/SKILL.md +8 -6
- package/plugins/claude/.claude-plugin/plugin.json +3 -3
- package/plugins/claude/claude-statusline-probe.cjs +26 -16
- package/plugins/claude/hooks/gate-run-guard.provisioned.mjs +47 -17
- package/plugins/claude/hooks/gate-run-guard.sh +3 -3
- package/plugins/claude/hooks/gate-run-guard.ts +5 -5
- package/plugins/claude/hooks/kill-guard.sh +4 -4
- package/plugins/claude/hooks/kill-guard.ts +1 -1
- package/plugins/claude/hooks/permission-request.sh +1 -1
- package/plugins/claude/hooks/post-compact.sh +1 -1
- package/plugins/claude/hooks/post-tool-use.sh +3 -3
- package/plugins/claude/hooks/pre-compact.sh +2 -2
- package/plugins/claude/hooks/read-only-bash-guard.sh +4 -4
- package/plugins/claude/hooks/relay-status.sh +32 -32
- package/plugins/claude/hooks/session-end.sh +2 -2
- package/plugins/claude/hooks/session-start.sh +3 -3
- package/plugins/claude/hooks/shell-trust.ts +1 -1
- package/plugins/claude/hooks/stop-failure.sh +2 -2
- package/plugins/claude/hooks/stop.sh +6 -6
- package/plugins/claude/hooks/subagent-skill-policy.cjs +8 -6
- package/plugins/claude/hooks/subagent-stop.sh +3 -3
- package/plugins/claude/hooks/user-prompt-submit.sh +1 -1
- package/plugins/claude/hooks/wait-loop-guard.ts +3 -3
- package/plugins/claude/monitors/monitors.json +2 -2
- package/plugins/claude/monitors/relay-monitor.provisioned.mjs +96 -62
- package/plugins/claude/monitors/relay-monitor.ts +5 -5
- package/plugins/claude/skills/label/SKILL.md +3 -3
- package/plugins/claude/skills/message/SKILL.md +5 -5
- package/plugins/claude/skills/react/SKILL.md +1 -1
- package/plugins/claude/skills/read-message/SKILL.md +4 -4
- package/plugins/claude/skills/reply/SKILL.md +5 -5
- package/plugins/claude/skills/send-claimable/SKILL.md +5 -5
- package/plugins/claude/skills/slice-first/SKILL.md +5 -3
- package/plugins/claude/skills/slice-first/references/plan-recipe.md +30 -29
- package/plugins/claude/skills/status/SKILL.md +1 -1
- package/plugins/claude/skills/tags/SKILL.md +5 -5
- package/plugins/claude/skills/task/SKILL.md +10 -10
- package/plugins/claude-output-style/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-output-style/output-styles/{agent-relay.md → humwick.md} +1 -1
- package/plugins/codex/skills/guide/SKILL.md +1 -1
- package/plugins/codex/skills/label/SKILL.md +3 -3
- package/plugins/codex/skills/message/SKILL.md +5 -5
- package/plugins/codex/skills/react/SKILL.md +1 -1
- package/plugins/codex/skills/read-message/SKILL.md +4 -4
- package/plugins/codex/skills/reply/SKILL.md +5 -5
- package/plugins/codex/skills/send-claimable/SKILL.md +5 -5
- package/plugins/codex/skills/slice-first/SKILL.md +5 -3
- package/plugins/codex/skills/slice-first/references/plan-recipe.md +30 -29
- package/plugins/codex/skills/status/SKILL.md +1 -1
- package/plugins/codex/skills/tags/SKILL.md +5 -5
- package/plugins/codex/skills/task/SKILL.md +11 -10
- package/src/adapter.ts +95 -92
- package/src/adapters/claude-api.ts +8 -11
- package/src/adapters/claude-context-command.ts +1 -1
- package/src/adapters/claude-credentials.ts +7 -3
- package/src/adapters/claude-delivery-lanes.ts +2 -2
- package/src/adapters/claude-delivery.ts +16 -16
- package/src/adapters/claude-effort.ts +2 -2
- package/src/adapters/claude-exit.ts +2 -2
- package/src/adapters/claude-headless-mirror.ts +18 -2
- package/src/adapters/claude-headless-refusal.ts +3 -3
- package/src/adapters/claude-headless.ts +11 -10
- package/src/adapters/claude-launch-exit.ts +1 -1
- package/src/adapters/claude-monitor-delivery-plan.ts +36 -16
- package/src/adapters/claude-permission.ts +5 -5
- package/src/adapters/claude-prompt-gates.ts +9 -9
- package/src/adapters/claude-prompt-hook.ts +2 -2
- package/src/adapters/claude-session-capture.ts +6 -6
- package/src/adapters/claude-session-probe.ts +25 -25
- package/src/adapters/claude-shutdown.ts +11 -11
- package/src/adapters/claude-status-detectors.ts +31 -31
- package/src/adapters/claude-subagents.ts +7 -7
- package/src/adapters/claude-submit-confirmation.ts +6 -6
- package/src/adapters/claude-tmux.ts +43 -43
- package/src/adapters/claude-token-usage-capture.ts +5 -5
- package/src/adapters/claude-tool-policy.ts +7 -7
- package/src/adapters/claude-transcript.ts +24 -24
- package/src/adapters/claude.ts +100 -100
- package/src/adapters/codex-agent-message-capture.ts +26 -63
- package/src/adapters/codex-app-server.ts +1 -1
- package/src/adapters/codex-client.ts +9 -9
- package/src/adapters/codex-effective-config.ts +1 -1
- package/src/adapters/codex-launch-config.ts +5 -5
- package/src/adapters/codex-rollout-context.ts +2 -2
- package/src/adapters/codex-skill-discovery.ts +1 -1
- package/src/adapters/codex-token-usage-capture.ts +16 -16
- package/src/adapters/codex-tool-output.ts +4 -4
- package/src/adapters/codex-version.ts +3 -3
- package/src/adapters/codex.ts +64 -64
- package/src/adapters/opencode-api.ts +1 -1
- package/src/adapters/opencode-context.ts +20 -22
- package/src/adapters/opencode-model-registry.ts +7 -7
- package/src/adapters/opencode-provider.ts +8 -8
- package/src/adapters/opencode-provisioning.ts +30 -0
- package/src/adapters/opencode-server-retry.ts +1 -1
- package/src/adapters/opencode-soft-steer.ts +5 -5
- package/src/adapters/opencode-spawn.ts +18 -14
- package/src/adapters/opencode-token-usage-capture.ts +12 -12
- package/src/adapters/opencode-tool-events.ts +15 -15
- package/src/adapters/opencode.ts +232 -232
- package/src/adapters/project-shell.ts +11 -11
- package/src/adapters/service-access.ts +6 -6
- package/src/adapters/tmux-offload.ts +9 -9
- package/src/adapters/tool-summary.ts +5 -5
- package/src/agent-redact.ts +1 -1
- package/src/agent-runner/commands/dispatch.ts +10 -10
- package/src/agent-runner/commands/lifecycle.ts +2 -2
- package/src/agent-runner/commands/prompt.ts +19 -19
- package/src/agent-runner/credentials.ts +5 -5
- package/src/agent-runner/inbox.ts +1 -1
- package/src/agent-runner/lifecycle-milestones.ts +3 -3
- package/src/agent-runner/lifecycle-phase.ts +2 -2
- package/src/agent-runner/liveness-exchange.ts +4 -10
- package/src/agent-runner/registration.ts +8 -8
- package/src/agent-runner/runner-context.ts +9 -14
- package/src/agent-runner/session-mirror.ts +12 -12
- package/src/agent-runner/task-claims.ts +2 -2
- package/src/agent-runner/token-usage-coverage.ts +1 -1
- package/src/agent-runner/turn-report.ts +12 -12
- package/src/api-budget-accounting.ts +3 -3
- package/src/area-memory.ts +6 -6
- package/src/artifact-path-materialize.ts +1 -1
- package/src/async-guard.ts +5 -5
- package/src/attachment-cache.ts +17 -22
- package/src/background-script-reconcile.ts +6 -6
- package/src/bounded-log.ts +1 -1
- package/src/busy-reconciler.ts +22 -22
- package/src/claim-tracker.ts +3 -3
- package/src/claude-settings.ts +8 -8
- package/src/claude-system-prompt.ts +1 -1
- package/src/claude-workspace-trust.ts +1 -1
- package/src/config.ts +62 -61
- package/src/context-boundary.ts +5 -5
- package/src/context-command.ts +3 -3
- package/src/control-server.ts +32 -32
- package/src/delivery-result.ts +2 -2
- package/src/effort-command.ts +2 -2
- package/src/empty-turn.ts +22 -14
- package/src/free-port.ts +1 -1
- package/src/gate-run-config.ts +3 -3
- package/src/host-asset-plan.ts +24 -17
- package/src/host-claude-config-worker.ts +2 -2
- package/src/host-sources.ts +2 -2
- package/src/index.ts +16 -16
- package/src/launch-assembly.ts +94 -96
- package/src/liveness.ts +15 -15
- package/src/logger.ts +3 -3
- package/src/mcp-outbox.ts +3 -3
- package/src/mcp-preflight.ts +2 -2
- package/src/mcp-source-selection.ts +2 -2
- package/src/mcp-tool-deferral.ts +1 -1
- package/src/mcp-vault-env.ts +2 -2
- package/src/message-body-config/config.ts +4 -4
- package/src/mid-turn-delivery.ts +2 -2
- package/src/native-memory-lever.ts +8 -8
- package/src/outbox.ts +15 -15
- package/src/pending-permission-store.ts +1 -1
- package/src/profile-home.ts +19 -19
- package/src/profile-projection.ts +26 -24
- package/src/project-instructions.ts +5 -5
- package/src/provider-auth-warning.ts +17 -0
- package/src/provider-double.ts +1 -1
- package/src/provider-hold.ts +3 -3
- package/src/provider-home-marker.ts +1 -1
- package/src/provider-home-tombstone.ts +1 -1
- package/src/provider-input-queue.ts +2 -2
- package/src/provider-integration.ts +15 -13
- package/src/provider-setup.ts +15 -3
- package/src/providers.ts +1 -1
- package/src/provisioning.ts +37 -40
- package/src/question-decision.ts +2 -2
- package/src/quota.ts +0 -6
- package/src/rate-limit.ts +24 -13
- package/src/refused-prompt-store.ts +2 -2
- package/src/relay-injection-events.ts +2 -2
- package/src/relay-instructions.ts +5 -5
- package/src/relay-mcp-proxy.long-turn-e2e.ts +13 -13
- package/src/relay-mcp-proxy.ts +57 -58
- package/src/relay-mcp.ts +55 -69
- package/src/reply-obligation-cache.ts +9 -9
- package/src/response-capture-report.ts +9 -9
- package/src/response-routing.ts +1 -1
- package/src/runner-core.ts +209 -222
- package/src/runner-exit.ts +1 -1
- package/src/runner-helpers.ts +10 -10
- package/src/runner-insights.ts +4 -2
- package/src/runner-mcp-proxy.ts +3 -3
- package/src/runner-spawn-config.ts +3 -3
- package/src/runtime-token-file.ts +1 -1
- package/src/runtime-token-remint.ts +1 -1
- package/src/service-access.ts +2 -2
- package/src/session-destroy.ts +1 -1
- package/src/session-insights.ts +1 -1
- package/src/session-scratch.ts +24 -37
- package/src/spawn-input.ts +6 -6
- package/src/startup-config-fetch.ts +4 -4
- package/src/subreaper.ts +3 -5
- package/src/test-run-dedup.ts +13 -13
- package/src/transcript-context.ts +2 -2
- package/src/transport-errors.ts +1 -1
- package/src/turn-opener.ts +1 -1
- package/src/turn-reconcile-event.ts +2 -2
- package/src/vault-proxy-hop.ts +2 -2
- package/src/web-tools.ts +2 -2
- package/agent-bin/agent-relay-browser +0 -10
- package/src/adapters/provider-quota-harvest.ts +0 -76
|
@@ -1,46 +1,47 @@
|
|
|
1
1
|
# Plan recipe (coordinator only)
|
|
2
2
|
|
|
3
|
-
1. **Frame.** `
|
|
3
|
+
1. **Frame.** `humwick_plan_create { title:"<feature>", acceptance:[{ id, text, check?:{ path }|{ command } }] }`.
|
|
4
4
|
Acceptance is required: the plan's own bar (the design doc's deliverables, deletions and
|
|
5
5
|
acceptance commands), one checkable item each. Then create and bind the spec Task:
|
|
6
|
-
`
|
|
7
|
-
`
|
|
6
|
+
`humwick_task_create { intent, issueRefs:["#<feature>"] }` →
|
|
7
|
+
`humwick_plan_add_node { planId, node:{ id:"spec", label:"Slice spec", lane:"frame", refs:{ taskId:<spec> } } }`.
|
|
8
8
|
Record the fixed v1 bar and budget on this Task; spawn `software-design` on it.
|
|
9
|
-
2. **Slice.** Create
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Add
|
|
13
|
-
(`
|
|
14
|
-
nodes become Task dependencies).
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`
|
|
24
|
-
`
|
|
9
|
+
2. **Slice.** Create one slice Task, a normal landing Task whose execution is the
|
|
10
|
+
`slice-proof` workflow: `humwick_task_create { intent, doneWhen, execution:{ workflow:"slice-proof",
|
|
11
|
+
inputs:{ command:"<proof command>", instance:"<dev or ephemeral instance>" } } }`. There is no
|
|
12
|
+
proof Task. Add it as a node (lane `slice`, `refs:{ taskId }`) with the edge `spec→slice`
|
|
13
|
+
(`humwick_plan_add_edge { planId, from, to }`: `to` depends on `from`; edges between bound
|
|
14
|
+
nodes become Task dependencies). Plan autopilot starts its run; by hand:
|
|
15
|
+
`humwick_workflow_start { workflow:"slice-proof", taskId:<slice>, inputs:{ command, instance } }`.
|
|
16
|
+
The run builds and reviews the slice, lands it, then a fresh `slice-qa` agent reproduces
|
|
17
|
+
the proof on the slice Task itself.
|
|
18
|
+
3. **Gate.** The QA agent records the `slice-proof` verdict on the slice Task with
|
|
19
|
+
`humwick_task_verdict` (pass or fail, the landed commit, command, instance and evidence).
|
|
20
|
+
Until it passes, the slice Task stays `validating` (failed: in progress) and its dependents
|
|
21
|
+
wait for the proof verdict. Fail → the run escalates to you → frame again (new spec
|
|
22
|
+
revision, same plan). Pass → the slice Task is `done`; confirm with
|
|
23
|
+
`humwick_task_get { taskId:<slice>, verbose:true }` (`status:"done"`, gate `slice-proof`
|
|
24
|
+
with `status:"pass"`), then record the stage on the spec Task:
|
|
25
|
+
`humwick_task_memory_append_decision { taskId:<spec>, decision:"stage: harden" }`.
|
|
25
26
|
4. **Harden.** Only now add harden nodes (lane `harden`, bound to their Tasks), each with
|
|
26
|
-
an edge `
|
|
27
|
-
the proof re-run: `
|
|
27
|
+
an edge `slice→<node>`, up to the budget. Each harden builder delivers normally and adds
|
|
28
|
+
the proof re-run: `humwick_task_deliver { disposition:"complete", summary, commits,
|
|
28
29
|
idempotencyKey, gates:{ test:{ status:"pass" }, other:[{ name:"slice-proof", status:"pass" }] } }`.
|
|
29
30
|
5. **Conformance.** When every node lands the plan reads `completion:"conformance-pending"`,
|
|
30
31
|
not done, and you get a `plan.conformance-pending` notice. Fetch, check each acceptance item
|
|
31
32
|
on the main tip (or spawn a fresh agent to audit it), then
|
|
32
|
-
`
|
|
33
|
+
`humwick_plan_conformance { planId, mainSha:<origin/main tip>, items:[{ id, status:"met"|"unmet", note? }] }`.
|
|
33
34
|
A gap files one bound Task per unmet item and reopens the plan; repeat after they land.
|
|
34
35
|
Only a pass makes the plan `done`.
|
|
35
36
|
6. **v1/closed.** Bar met → flag on, file "future" issues, record `stage: v1`;
|
|
36
37
|
after closure, record `stage: closed` and archive the plan.
|
|
37
38
|
|
|
38
|
-
Before spawning a harden builder, read `
|
|
39
|
-
for `dependsOn`, then
|
|
40
|
-
`status:"
|
|
41
|
-
|
|
39
|
+
Before spawning a harden builder by hand, read `humwick_task_get { taskId:<harden>, verbose:true }`
|
|
40
|
+
for `dependsOn`, then the slice Task: require `status:"done"` and gate `slice-proof` with
|
|
41
|
+
`status:"pass"`. Plan autopilot and Task dependencies already hold dependents of a slice whose
|
|
42
|
+
proof is open or failed; a hand spawn is not held. Validate with the project's own commands
|
|
42
43
|
from its spawn brief/config; the proof is an additional gate.
|
|
43
44
|
|
|
44
|
-
Check gate order any time with `
|
|
45
|
-
`harden` node must have `
|
|
46
|
-
Task is not
|
|
45
|
+
Check gate order any time with `humwick_plan_get { planId, mode:"lean" }`: every
|
|
46
|
+
`harden` node must have `slice` upstream, and no harden node may exist while the slice
|
|
47
|
+
Task is not `done` with a passing `slice-proof` verdict.
|
|
@@ -10,16 +10,16 @@ allowed-tools: [Bash]
|
|
|
10
10
|
Run:
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
|
|
13
|
+
humwick /tags $ARGUMENTS
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
Examples:
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
humwick /tags
|
|
20
|
+
humwick /tags backend tests urgent
|
|
21
|
+
humwick /tags --add backend,tests
|
|
22
|
+
humwick /tags --remove urgent
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
Report the resulting tags briefly.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: humwick-task
|
|
3
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
4
|
---
|
|
5
5
|
|
|
@@ -9,20 +9,20 @@ Use Relay Task tools for durable work tracking instead of burying state in chat.
|
|
|
9
9
|
|
|
10
10
|
Coordinators:
|
|
11
11
|
|
|
12
|
-
- Create a Task before multi-step work with `
|
|
12
|
+
- Create a Task before multi-step work with `humwick_task_create`.
|
|
13
13
|
- Set `intent`, `complexity`, and useful `context`; add `doneWhen`, `dispatch`, refs, or dependencies when they clarify routing.
|
|
14
14
|
- Spawn workers from the Task so they inherit the Task context.
|
|
15
15
|
|
|
16
16
|
Workers:
|
|
17
17
|
|
|
18
|
-
- Use `
|
|
19
|
-
- Use `
|
|
20
|
-
- Use `
|
|
21
|
-
- Use `
|
|
18
|
+
- Use `humwick_task_set_status` as work moves through `in_progress`, `blocked`, `done`, `failed`, or `canceled`.
|
|
19
|
+
- Use `humwick_task_memory_replace_working_state` for current progress a retry agent needs.
|
|
20
|
+
- Use `humwick_task_memory_append_decision` for durable choices and rationale.
|
|
21
|
+
- Use `humwick_task_memory_append_ruled_out` for dead ends, failed approaches, and why they were rejected.
|
|
22
22
|
|
|
23
23
|
Useful reads and updates:
|
|
24
24
|
|
|
25
|
-
- `
|
|
26
|
-
- `
|
|
27
|
-
- `
|
|
28
|
-
- `
|
|
25
|
+
- `humwick_task_get` and `humwick_task_history` inspect the Task and audit timeline.
|
|
26
|
+
- `humwick_task_update` refreshes intent, context, latest steer, doneWhen, complexity, or dispatch.
|
|
27
|
+
- `humwick_task_record_gate` records tests, typecheck, docs, smoke, and other quality gates.
|
|
28
|
+
- `humwick_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 humwick_spawn_agent.
|
|
@@ -9,14 +9,14 @@ argument-hint: "[LABEL|--clear]"
|
|
|
9
9
|
Run:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
humwick /label $ARGUMENTS
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Examples:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
humwick /label backend-fixer
|
|
19
|
+
humwick /label --clear
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Report the new label or current label briefly.
|
|
@@ -9,12 +9,12 @@ allowed-tools: [Bash]
|
|
|
9
9
|
|
|
10
10
|
⚠️ **SECURITY — never inline the message body in the shell command.** A body with
|
|
11
11
|
markdown backticks `` `like this` `` or `$(...)` would be shell-executed (command
|
|
12
|
-
substitution) before `
|
|
12
|
+
substitution) before `humwick` sees it — a command-injection vector,
|
|
13
13
|
since the body may quote another agent's or a user's text. **Feed the body through
|
|
14
14
|
stdin via a quoted heredoc** (the `'RELAY_EOF'` quotes disable all expansion):
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
|
|
17
|
+
humwick /message <target> --stdin <<'RELAY_EOF'
|
|
18
18
|
Your message text. Backticks `bun run release` and $(anything) are delivered
|
|
19
19
|
verbatim and are NOT executed.
|
|
20
20
|
RELAY_EOF
|
|
@@ -24,17 +24,17 @@ Targets (the `<target>` positional) can be an agent id, `tag:`, `policy:`, `cap:
|
|
|
24
24
|
`broadcast`:
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
|
|
27
|
+
humwick /message codex --stdin <<'RELAY_EOF'
|
|
28
28
|
Can you look at that failing action?
|
|
29
29
|
RELAY_EOF
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
humwick /message tag:backend --stdin <<'RELAY_EOF'
|
|
32
32
|
Does anyone see the regression?
|
|
33
33
|
RELAY_EOF
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
For a message you have already staged in a file, use `--body-file PATH` instead.
|
|
37
37
|
|
|
38
|
-
**Do NOT** build `
|
|
38
|
+
**Do NOT** build `humwick /message <target> "…body…"` with the body inside quotes.
|
|
39
39
|
|
|
40
40
|
Report the sent message id briefly.
|
|
@@ -9,7 +9,7 @@ argument-hint: "<messageId> <emoji> [--remove]"
|
|
|
9
9
|
Run:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
humwick /react $ARGUMENTS
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Use reactions instead of text when the message only needs lightweight acknowledgement, approval, thanks, or "good job".
|
|
@@ -9,15 +9,15 @@ argument-hint: "<messageId> [--json|--body]"
|
|
|
9
9
|
Run:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
humwick get-message $ARGUMENTS
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Useful forms:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
humwick get-message 206
|
|
19
|
+
humwick get-message 206 --json
|
|
20
|
+
humwick get-message 206 --body
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Use `--body` when you only need the complete message text. Use `--json` when attachments, metadata, or thread context matter.
|
|
@@ -9,15 +9,15 @@ allowed-tools: [Bash]
|
|
|
9
9
|
|
|
10
10
|
⚠️ **SECURITY — never inline the reply body in the shell command.** Your shell runs
|
|
11
11
|
the command you type, so a body containing markdown backticks `` `like this` `` or
|
|
12
|
-
`$(...)` would be executed as a shell command *before* `
|
|
13
|
-
(command substitution). This is a real command-injection vector
|
|
12
|
+
`$(...)` would be executed as a shell command *before* `humwick` ever sees it
|
|
13
|
+
(command substitution). This is a real command-injection vector: the body may
|
|
14
14
|
quote another agent's or a user's text. **Always feed the body through stdin via a
|
|
15
15
|
quoted heredoc**, which disables all shell expansion and delivers the body verbatim.
|
|
16
16
|
|
|
17
17
|
Run (safe — quoted `'RELAY_EOF'` delimiter means no expansion, no substitution):
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
20
|
+
humwick /reply <messageId> --stdin <<'RELAY_EOF'
|
|
21
21
|
Your reply text here. Backticks `bun run release` and $(anything) are delivered
|
|
22
22
|
verbatim and are NOT executed.
|
|
23
23
|
RELAY_EOF
|
|
@@ -29,7 +29,7 @@ The server auto-routes the reply to the original sender and inherits the channel
|
|
|
29
29
|
For a reply you have already staged in a file, use `--body-file` instead:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
|
|
32
|
+
humwick /reply <messageId> --body-file $TMPDIR/reply.md
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
The relay creates that per-session scratch dir for you (git-ignored locally), so
|
|
@@ -37,7 +37,7 @@ staging there never pollutes the working tree and never collides with other agen
|
|
|
37
37
|
No cleanup needed — the dir is reaped when your session ends. Oversized replies are
|
|
38
38
|
automatically uploaded as an Humwick artifact and sent as an attached concise reply.
|
|
39
39
|
|
|
40
|
-
**Do NOT** build `
|
|
40
|
+
**Do NOT** build `humwick /reply <id> "…body…"` with the body inside quotes — the
|
|
41
41
|
heredoc `--stdin` form above is the only safe way to pass free text.
|
|
42
42
|
|
|
43
43
|
Do not send a separate Relay follow-up that only confirms the reply was sent. The CLI
|
|
@@ -9,12 +9,12 @@ allowed-tools: [Bash]
|
|
|
9
9
|
|
|
10
10
|
⚠️ **SECURITY — never inline the work-item body in the shell command.** A body with
|
|
11
11
|
markdown backticks `` `like this` `` or `$(...)` would be shell-executed (command
|
|
12
|
-
substitution) before `
|
|
12
|
+
substitution) before `humwick` sees it — a command-injection vector.
|
|
13
13
|
**Feed the body through stdin via a quoted heredoc** (the `'RELAY_EOF'` quotes disable
|
|
14
14
|
all expansion, delivering the body verbatim):
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
|
|
17
|
+
humwick /send-claimable <target> --stdin <<'RELAY_EOF'
|
|
18
18
|
Describe the work item here. Backticks `bun run release` and $(anything) are
|
|
19
19
|
delivered verbatim and are NOT executed.
|
|
20
20
|
RELAY_EOF
|
|
@@ -23,17 +23,17 @@ RELAY_EOF
|
|
|
23
23
|
Targets can be an agent id, `tag:`, `cap:`, or `policy:`:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
|
|
26
|
+
humwick /send-claimable tag:backend --stdin <<'RELAY_EOF'
|
|
27
27
|
Fix the failing API test
|
|
28
28
|
RELAY_EOF
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
humwick /send-claimable cap:review --stdin <<'RELAY_EOF'
|
|
31
31
|
Review the migration patch
|
|
32
32
|
RELAY_EOF
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
For a work item you have already staged in a file, use `--body-file PATH` instead.
|
|
36
36
|
|
|
37
|
-
**Do NOT** build `
|
|
37
|
+
**Do NOT** build `humwick /send-claimable <target> "…body…"` with the body inside quotes.
|
|
38
38
|
|
|
39
39
|
Report the sent claimable message id briefly.
|
|
@@ -6,7 +6,7 @@ description: Frame and prove a thin end-to-end feature slice before planning har
|
|
|
6
6
|
# Slice first
|
|
7
7
|
|
|
8
8
|
Use the current project's instructions and configured validation/deployment gates,
|
|
9
|
-
including its “How to validate in THIS project” brief or
|
|
9
|
+
including its “How to validate in THIS project” brief or the project’s `land-gates.json`.
|
|
10
10
|
Choose the proof's location and runtime in that project; no particular repo is required.
|
|
11
11
|
|
|
12
12
|
| Stage | Required result |
|
|
@@ -19,8 +19,10 @@ Choose the proof's location and runtime in that project; no particular repo is r
|
|
|
19
19
|
|
|
20
20
|
Coordinator owns stages, scope ledger and budget; record stage decisions on the spec
|
|
21
21
|
Task. Changing the bar or exceeding the budget needs operator approval. A blocked
|
|
22
|
-
slice returns to frame. Never
|
|
23
|
-
|
|
22
|
+
slice returns to frame. Never spawn harden builders before the slice Task is `done`
|
|
23
|
+
with a passing `slice-proof` verdict. Relay holds the slice Task's dependents (plan
|
|
24
|
+
nodes, Task dependencies) while its proof is open or failed; a builder you spawn by
|
|
25
|
+
hand is not held.
|
|
24
26
|
|
|
25
27
|
Design writes proof then spec, no full design. Builder declares each slice shortcut
|
|
26
28
|
in delivery risks. QA reproduces independently. Review blocks only on the stage's
|
|
@@ -1,46 +1,47 @@
|
|
|
1
1
|
# Plan recipe (coordinator only)
|
|
2
2
|
|
|
3
|
-
1. **Frame.** `
|
|
3
|
+
1. **Frame.** `humwick_plan_create { title:"<feature>", acceptance:[{ id, text, check?:{ path }|{ command } }] }`.
|
|
4
4
|
Acceptance is required: the plan's own bar (the design doc's deliverables, deletions and
|
|
5
5
|
acceptance commands), one checkable item each. Then create and bind the spec Task:
|
|
6
|
-
`
|
|
7
|
-
`
|
|
6
|
+
`humwick_task_create { intent, issueRefs:["#<feature>"] }` →
|
|
7
|
+
`humwick_plan_add_node { planId, node:{ id:"spec", label:"Slice spec", lane:"frame", refs:{ taskId:<spec> } } }`.
|
|
8
8
|
Record the fixed v1 bar and budget on this Task; spawn `software-design` on it.
|
|
9
|
-
2. **Slice.** Create
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Add
|
|
13
|
-
(`
|
|
14
|
-
nodes become Task dependencies).
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`
|
|
24
|
-
`
|
|
9
|
+
2. **Slice.** Create one slice Task, a normal landing Task whose execution is the
|
|
10
|
+
`slice-proof` workflow: `humwick_task_create { intent, doneWhen, execution:{ workflow:"slice-proof",
|
|
11
|
+
inputs:{ command:"<proof command>", instance:"<dev or ephemeral instance>" } } }`. There is no
|
|
12
|
+
proof Task. Add it as a node (lane `slice`, `refs:{ taskId }`) with the edge `spec→slice`
|
|
13
|
+
(`humwick_plan_add_edge { planId, from, to }`: `to` depends on `from`; edges between bound
|
|
14
|
+
nodes become Task dependencies). Plan autopilot starts its run; by hand:
|
|
15
|
+
`humwick_workflow_start { workflow:"slice-proof", taskId:<slice>, inputs:{ command, instance } }`.
|
|
16
|
+
The run builds and reviews the slice, lands it, then a fresh `slice-qa` agent reproduces
|
|
17
|
+
the proof on the slice Task itself.
|
|
18
|
+
3. **Gate.** The QA agent records the `slice-proof` verdict on the slice Task with
|
|
19
|
+
`humwick_task_verdict` (pass or fail, the landed commit, command, instance and evidence).
|
|
20
|
+
Until it passes, the slice Task stays `validating` (failed: in progress) and its dependents
|
|
21
|
+
wait for the proof verdict. Fail → the run escalates to you → frame again (new spec
|
|
22
|
+
revision, same plan). Pass → the slice Task is `done`; confirm with
|
|
23
|
+
`humwick_task_get { taskId:<slice>, verbose:true }` (`status:"done"`, gate `slice-proof`
|
|
24
|
+
with `status:"pass"`), then record the stage on the spec Task:
|
|
25
|
+
`humwick_task_memory_append_decision { taskId:<spec>, decision:"stage: harden" }`.
|
|
25
26
|
4. **Harden.** Only now add harden nodes (lane `harden`, bound to their Tasks), each with
|
|
26
|
-
an edge `
|
|
27
|
-
the proof re-run: `
|
|
27
|
+
an edge `slice→<node>`, up to the budget. Each harden builder delivers normally and adds
|
|
28
|
+
the proof re-run: `humwick_task_deliver { disposition:"complete", summary, commits,
|
|
28
29
|
idempotencyKey, gates:{ test:{ status:"pass" }, other:[{ name:"slice-proof", status:"pass" }] } }`.
|
|
29
30
|
5. **Conformance.** When every node lands the plan reads `completion:"conformance-pending"`,
|
|
30
31
|
not done, and you get a `plan.conformance-pending` notice. Fetch, check each acceptance item
|
|
31
32
|
on the main tip (or spawn a fresh agent to audit it), then
|
|
32
|
-
`
|
|
33
|
+
`humwick_plan_conformance { planId, mainSha:<origin/main tip>, items:[{ id, status:"met"|"unmet", note? }] }`.
|
|
33
34
|
A gap files one bound Task per unmet item and reopens the plan; repeat after they land.
|
|
34
35
|
Only a pass makes the plan `done`.
|
|
35
36
|
6. **v1/closed.** Bar met → flag on, file "future" issues, record `stage: v1`;
|
|
36
37
|
after closure, record `stage: closed` and archive the plan.
|
|
37
38
|
|
|
38
|
-
Before spawning a harden builder, read `
|
|
39
|
-
for `dependsOn`, then
|
|
40
|
-
`status:"
|
|
41
|
-
|
|
39
|
+
Before spawning a harden builder by hand, read `humwick_task_get { taskId:<harden>, verbose:true }`
|
|
40
|
+
for `dependsOn`, then the slice Task: require `status:"done"` and gate `slice-proof` with
|
|
41
|
+
`status:"pass"`. Plan autopilot and Task dependencies already hold dependents of a slice whose
|
|
42
|
+
proof is open or failed; a hand spawn is not held. Validate with the project's own commands
|
|
42
43
|
from its spawn brief/config; the proof is an additional gate.
|
|
43
44
|
|
|
44
|
-
Check gate order any time with `
|
|
45
|
-
`harden` node must have `
|
|
46
|
-
Task is not
|
|
45
|
+
Check gate order any time with `humwick_plan_get { planId, mode:"lean" }`: every
|
|
46
|
+
`harden` node must have `slice` upstream, and no harden node may exist while the slice
|
|
47
|
+
Task is not `done` with a passing `slice-proof` verdict.
|
|
@@ -9,16 +9,16 @@ argument-hint: "[TAG ...|--list|--add TAGS|--remove TAGS]"
|
|
|
9
9
|
Run:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
humwick /tags $ARGUMENTS
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
Examples:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
humwick /tags
|
|
19
|
+
humwick /tags backend tests urgent
|
|
20
|
+
humwick /tags --add backend,tests
|
|
21
|
+
humwick /tags --remove urgent
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Report the resulting tags briefly.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: humwick-task
|
|
3
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
4
|
---
|
|
5
5
|
|
|
@@ -9,20 +9,21 @@ Use Relay Task tools for durable work tracking instead of burying state in chat.
|
|
|
9
9
|
|
|
10
10
|
Coordinators:
|
|
11
11
|
|
|
12
|
-
- Create a Task before multi-step work with `
|
|
12
|
+
- Create a Task before multi-step work with `humwick_task_create`.
|
|
13
13
|
- Set `intent`, `complexity`, and useful `context`; add `doneWhen`, `dispatch`, refs, or dependencies when they clarify routing.
|
|
14
14
|
- Spawn workers from the Task so they inherit the Task context.
|
|
15
15
|
|
|
16
16
|
Workers:
|
|
17
17
|
|
|
18
|
-
-
|
|
19
|
-
- Use `
|
|
20
|
-
- Use `
|
|
21
|
-
- Use `
|
|
18
|
+
- Deliver with `humwick_task_deliver` after code, committed tests and the project's delivery gate pass. Checks explicitly marked post-deploy/onDeploy are verified after landing; name them in delivery risks and deliver `complete`, rather than blocking on a deployment the builder does not own.
|
|
19
|
+
- Use `humwick_task_set_status` as work moves through `in_progress`, `blocked`, `done`, `failed`, or `canceled`.
|
|
20
|
+
- Use `humwick_task_memory_replace_working_state` for current progress a retry agent needs.
|
|
21
|
+
- Use `humwick_task_memory_append_decision` for durable choices and rationale.
|
|
22
|
+
- Use `humwick_task_memory_append_ruled_out` for dead ends, failed approaches, and why they were rejected.
|
|
22
23
|
|
|
23
24
|
Useful reads and updates:
|
|
24
25
|
|
|
25
|
-
- `
|
|
26
|
-
- `
|
|
27
|
-
- `
|
|
28
|
-
- `
|
|
26
|
+
- `humwick_task_get` and `humwick_task_history` inspect the Task and audit timeline.
|
|
27
|
+
- `humwick_task_update` refreshes intent, context, latest steer, doneWhen, complexity, or dispatch.
|
|
28
|
+
- `humwick_task_record_gate` records tests, typecheck, docs, smoke, and other quality gates.
|
|
29
|
+
- `humwick_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 humwick_spawn_agent.
|