@tacuchi/agent-workflow-cli 22.1.0 → 22.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/resume-service.js +45 -114
- package/dist/application/resume-service.js.map +1 -1
- package/dist/application/self/codex-plugin.js +87 -0
- package/dist/application/self/codex-plugin.js.map +1 -0
- package/dist/application/self/hooks-dialect.js +18 -0
- package/dist/application/self/hooks-dialect.js.map +1 -0
- package/dist/application/self/hooks-json.js +226 -0
- package/dist/application/self/hooks-json.js.map +1 -0
- package/dist/application/self/hooks-toml.js +4 -11
- package/dist/application/self/hooks-toml.js.map +1 -1
- package/dist/application/self/host-states.js +64 -3
- package/dist/application/self/host-states.js.map +1 -1
- package/dist/application/self/install-hooks.js +291 -37
- package/dist/application/self/install-hooks.js.map +1 -1
- package/dist/application/self/install-skill.js +7 -2
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/opencode-plugin.js +167 -0
- package/dist/application/self/opencode-plugin.js.map +1 -0
- package/dist/application/self/uninstall.js +147 -1
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/application/status-service.js +1 -0
- package/dist/application/status-service.js.map +1 -1
- package/dist/application/workline-index-service.js +143 -28
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/cli/commands/resume.js +20 -3
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/status.js +57 -8
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/tui/app.js +1 -1
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/host-admin-section.js +53 -21
- package/dist/cli/tui/components/host-admin-section.js.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab.js +20 -5
- package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.js +2 -2
- package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
- package/dist/domain/harnesses.js +166 -10
- package/dist/domain/harnesses.js.map +1 -1
- package/package.json +1 -1
- package/skills/w/commands/resume.md +19 -12
- package/skills/w/commands/status.md +9 -5
- package/skills/w/commands/workspace-init.md +6 -6
- package/skills/w/harness/HARNESS.md +10 -6
package/dist/domain/harnesses.js
CHANGED
|
@@ -1,4 +1,59 @@
|
|
|
1
1
|
import { HOST_VERIFICATIONS } from "./host-verification.js";
|
|
2
|
+
/**
|
|
3
|
+
* The events the bundled hook template ships, in template order.
|
|
4
|
+
*
|
|
5
|
+
* The per-host contract below is a statement ABOUT this set: "carried" and
|
|
6
|
+
* "omitted" only mean something against a fixed list. A guard pins it to the
|
|
7
|
+
* template's own keys, so a sixth event added to the bundle cannot leave every
|
|
8
|
+
* host silently under-declared.
|
|
9
|
+
*/
|
|
10
|
+
export const TEMPLATE_HOOK_EVENTS = [
|
|
11
|
+
"SessionStart",
|
|
12
|
+
"PreToolUse",
|
|
13
|
+
"SessionEnd",
|
|
14
|
+
"PreCompact",
|
|
15
|
+
"PostCompact",
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* The one-line mechanism every surface prints, derived from the contract.
|
|
19
|
+
*
|
|
20
|
+
* It used to be a hand-written string per host, and three of them were wrong:
|
|
21
|
+
* crush was declared hookless while it has `PreToolUse`, gemini named a
|
|
22
|
+
* `BeforeTool` event that appears nowhere in its binary, and opencode named its
|
|
23
|
+
* event without ever saying where the plugin goes. A sentence nobody can
|
|
24
|
+
* recompute is a sentence nobody notices going stale.
|
|
25
|
+
*/
|
|
26
|
+
export function hookMechanism(hooks) {
|
|
27
|
+
const base = `${hooks.artifact.path} → ${hooks.artifact.entry}`;
|
|
28
|
+
return hooks.caveat === undefined ? base : `${base}; ${hooks.caveat}`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Which template events travel to this host and which do not, in one line.
|
|
32
|
+
*
|
|
33
|
+
* Printed next to the hook state because a reader who is only told "supports
|
|
34
|
+
* hooks" assumes parity — and on crush, gemini and opencode what travels is the
|
|
35
|
+
* enforcement, never the resumability.
|
|
36
|
+
*/
|
|
37
|
+
export function hookCoverage(hooks) {
|
|
38
|
+
const carried = [];
|
|
39
|
+
const partial = [];
|
|
40
|
+
const omitted = [];
|
|
41
|
+
for (const event of TEMPLATE_HOOK_EVENTS) {
|
|
42
|
+
const support = hooks.events[event];
|
|
43
|
+
if (support.state === "carried")
|
|
44
|
+
carried.push(event);
|
|
45
|
+
else if (support.state === "degraded")
|
|
46
|
+
partial.push(`${event} (${support.loss})`);
|
|
47
|
+
else
|
|
48
|
+
omitted.push(event);
|
|
49
|
+
}
|
|
50
|
+
const parts = [`carries ${carried.length === 0 ? "no template event" : carried.join(", ")}`];
|
|
51
|
+
if (partial.length > 0)
|
|
52
|
+
parts.push(`partial: ${partial.join(", ")}`);
|
|
53
|
+
if (omitted.length > 0)
|
|
54
|
+
parts.push(`omits ${omitted.join(", ")}`);
|
|
55
|
+
return parts.join("; ");
|
|
56
|
+
}
|
|
2
57
|
/** The mention form every host that auto-discovers skills by description shares. */
|
|
3
58
|
const MENTION = {
|
|
4
59
|
kind: "mention",
|
|
@@ -13,7 +68,18 @@ export const HARNESSES = [
|
|
|
13
68
|
support: { tier: "official" },
|
|
14
69
|
runtime: { bins: ["claude"], versionArgs: ["--version"] },
|
|
15
70
|
configDir: { kind: "dir", path: "~/.claude" },
|
|
16
|
-
hooks: {
|
|
71
|
+
hooks: {
|
|
72
|
+
managed: true,
|
|
73
|
+
artifact: { kind: "config-merge", path: "~/.claude/settings.json", entry: "hooks{}" },
|
|
74
|
+
events: {
|
|
75
|
+
SessionStart: { state: "carried", native: "SessionStart" },
|
|
76
|
+
PreToolUse: { state: "carried", native: "PreToolUse" },
|
|
77
|
+
SessionEnd: { state: "carried", native: "SessionEnd" },
|
|
78
|
+
PreCompact: { state: "carried", native: "PreCompact" },
|
|
79
|
+
PostCompact: { state: "carried", native: "PostCompact" },
|
|
80
|
+
},
|
|
81
|
+
verified: "Jul-2026, against the installed claude runtime (matrix base)",
|
|
82
|
+
},
|
|
17
83
|
envMarkers: ["CLAUDECODE", "CLAUDE_PLUGIN_ROOT", "CLAUDE_AGENT_ID"],
|
|
18
84
|
mcpHostId: "claude",
|
|
19
85
|
globalMcpPaths: {
|
|
@@ -53,10 +119,23 @@ export const HARNESSES = [
|
|
|
53
119
|
// an interactive human review, persisted as `trusted_hash` in
|
|
54
120
|
// `[hooks.state]`. Writing the file is therefore not arming it, and forging
|
|
55
121
|
// that hash would forge the person's security decision — so this stays
|
|
56
|
-
// `managed: false` and
|
|
122
|
+
// `managed: false` and its `caveat` says exactly why.
|
|
57
123
|
hooks: {
|
|
58
|
-
mechanism: "~/.codex/hooks.json (Claude-shaped); each hook needs an interactive trust review in codex, recorded as trusted_hash in [hooks.state]",
|
|
59
124
|
managed: false,
|
|
125
|
+
artifact: {
|
|
126
|
+
kind: "config-merge",
|
|
127
|
+
path: "~/.codex/hooks.json",
|
|
128
|
+
entry: "hooks{} (Claude-shaped)",
|
|
129
|
+
},
|
|
130
|
+
caveat: "each hook needs an interactive trust review in codex, recorded as trusted_hash in [hooks.state]",
|
|
131
|
+
events: {
|
|
132
|
+
SessionStart: { state: "carried", native: "SessionStart" },
|
|
133
|
+
PreToolUse: { state: "carried", native: "PreToolUse" },
|
|
134
|
+
SessionEnd: { state: "carried", native: "SessionEnd" },
|
|
135
|
+
PreCompact: { state: "carried", native: "PreCompact" },
|
|
136
|
+
PostCompact: { state: "carried", native: "PostCompact" },
|
|
137
|
+
},
|
|
138
|
+
verified: "2026-08-05, against codex-cli 0.146.0 (HookEventsToml enum + real runs)",
|
|
60
139
|
},
|
|
61
140
|
envMarkers: ["CODEX_THREAD_ID", "CODEX_HOME", "CODEX_CLI", "CODEX_RUNTIME"],
|
|
62
141
|
mcpHostId: "codex",
|
|
@@ -188,7 +267,28 @@ export const HARNESSES = [
|
|
|
188
267
|
// ~/.gemini. Probed in that order so the successor wins.
|
|
189
268
|
runtime: { bins: ["agy", "gemini"], versionArgs: ["--version"] },
|
|
190
269
|
configDir: { kind: "dir", path: "~/.gemini" },
|
|
191
|
-
|
|
270
|
+
// The catalog used to name a `BeforeTool` event. It appears nowhere in the
|
|
271
|
+
// binary: what agy has is a single `hooks.json` at the customization root.
|
|
272
|
+
hooks: {
|
|
273
|
+
managed: true,
|
|
274
|
+
artifact: {
|
|
275
|
+
kind: "config-merge",
|
|
276
|
+
path: "~/.agents/hooks.json",
|
|
277
|
+
entry: "named hooks → PreToolUse/PostToolUse (Claude-shaped) · PreInvocation/PostInvocation/Stop (flat handler lists)",
|
|
278
|
+
},
|
|
279
|
+
caveat: 'handlers are type: "command" only and run synchronously, blocking the loop; the host documents its customization root as the workspace\'s .agents/, so whether a user-global one is read was NOT verified',
|
|
280
|
+
events: {
|
|
281
|
+
SessionStart: { state: "omitted", reason: "agy declares no session-start event" },
|
|
282
|
+
PreToolUse: { state: "carried", native: "PreToolUse" },
|
|
283
|
+
SessionEnd: {
|
|
284
|
+
state: "omitted",
|
|
285
|
+
reason: "its closest event is `Stop`, which fires at the end of every turn and not at session close: carrying the close hook there would run it on every turn",
|
|
286
|
+
},
|
|
287
|
+
PreCompact: { state: "omitted", reason: "agy exposes no compaction event" },
|
|
288
|
+
PostCompact: { state: "omitted", reason: "agy exposes no compaction event" },
|
|
289
|
+
},
|
|
290
|
+
verified: "2026-08-18, against agy 1.0.16 (its bundled `hooks.json` doc + the CORTEX_STEP_TYPE tool names in the binary): `BeforeTool` does not appear in the binary",
|
|
291
|
+
},
|
|
192
292
|
envMarkers: [
|
|
193
293
|
"GEMINI_CLI",
|
|
194
294
|
"GEMINI_SANDBOX",
|
|
@@ -205,7 +305,7 @@ export const HARNESSES = [
|
|
|
205
305
|
},
|
|
206
306
|
projectMcpPath: ".gemini/settings.json",
|
|
207
307
|
pluginManifest: null, // Gemini uses Extensions (gemini-extension.json) — Phase 2
|
|
208
|
-
pluginHooksDir: null, //
|
|
308
|
+
pluginHooksDir: null, // agy's hooks are its own hooks.json, not extension-bundled
|
|
209
309
|
skillsDirs: [".agents/skills", ".gemini/skills"],
|
|
210
310
|
installTarget: "gemini",
|
|
211
311
|
invocation: MENTION,
|
|
@@ -236,7 +336,25 @@ export const HARNESSES = [
|
|
|
236
336
|
support: { tier: "best-effort" },
|
|
237
337
|
runtime: { bins: ["opencode"], versionArgs: ["--version"] },
|
|
238
338
|
configDir: { kind: "mcp-parent" },
|
|
239
|
-
hooks: {
|
|
339
|
+
hooks: {
|
|
340
|
+
managed: false,
|
|
341
|
+
artifact: {
|
|
342
|
+
kind: "plugin-module",
|
|
343
|
+
path: ".opencode/plugin/",
|
|
344
|
+
entry: 'a JS/TS module, declared in opencode.json under "plugin": []',
|
|
345
|
+
},
|
|
346
|
+
events: {
|
|
347
|
+
SessionStart: { state: "omitted", reason: "the plugin API fires no session-start event" },
|
|
348
|
+
PreToolUse: { state: "carried", native: "tool.execute.before" },
|
|
349
|
+
SessionEnd: { state: "omitted", reason: "the plugin API fires no session-end event" },
|
|
350
|
+
PreCompact: {
|
|
351
|
+
state: "omitted",
|
|
352
|
+
reason: "its only candidate is `experimental.session.compacting`, an experimental event Workline does not rest resumability on",
|
|
353
|
+
},
|
|
354
|
+
PostCompact: { state: "omitted", reason: "the plugin API fires no post-compaction event" },
|
|
355
|
+
},
|
|
356
|
+
verified: "2026-08-04, against opencode 1.18.5 (its plugin API event list)",
|
|
357
|
+
},
|
|
240
358
|
envMarkers: ["OPENCODE", "OPENCODE_BIN", "OPENCODE_CONFIG"],
|
|
241
359
|
mcpHostId: "opencode",
|
|
242
360
|
globalMcpPaths: {
|
|
@@ -264,8 +382,8 @@ export const HARNESSES = [
|
|
|
264
382
|
},
|
|
265
383
|
{
|
|
266
384
|
// Crush (charmbracelet/crush). Config `crush.json` ($schema charm.land/crush.json);
|
|
267
|
-
// MCP under `mcp` (type "stdio"). Reads .agents/skills + .claude/skills.
|
|
268
|
-
//
|
|
385
|
+
// MCP under `mcp` (type "stdio"). Reads .agents/skills + .claude/skills. It has
|
|
386
|
+
// hooks of its own (`hooks` in crush.json) on top of the `allowed_tools` allowlist.
|
|
269
387
|
// Global config verified 2026-07 (README charmbracelet/crush): Unix XDG,
|
|
270
388
|
// Windows %LOCALAPPDATA%\crush\crush.json (override CRUSH_GLOBAL_CONFIG).
|
|
271
389
|
id: "crush",
|
|
@@ -274,7 +392,25 @@ export const HARNESSES = [
|
|
|
274
392
|
support: { tier: "best-effort", unstableSurface: true },
|
|
275
393
|
runtime: { bins: ["crush"], versionArgs: ["--version"] },
|
|
276
394
|
configDir: { kind: "mcp-parent" },
|
|
277
|
-
|
|
395
|
+
// The catalog used to deny crush had hooks at all. It has them, in its own
|
|
396
|
+
// config file, and exactly one event.
|
|
397
|
+
hooks: {
|
|
398
|
+
managed: true,
|
|
399
|
+
artifact: {
|
|
400
|
+
kind: "config-merge",
|
|
401
|
+
path: "~/.config/crush/crush.json",
|
|
402
|
+
entry: "hooks{} (HookConfig: command · matcher · timeout)",
|
|
403
|
+
},
|
|
404
|
+
caveat: "matching hooks run in parallel, deduplicated by command; a project crush.json takes precedence over the global one",
|
|
405
|
+
events: {
|
|
406
|
+
SessionStart: { state: "omitted", reason: "crush supports only PreToolUse" },
|
|
407
|
+
PreToolUse: { state: "carried", native: "PreToolUse" },
|
|
408
|
+
SessionEnd: { state: "omitted", reason: "crush supports only PreToolUse" },
|
|
409
|
+
PreCompact: { state: "omitted", reason: "crush supports only PreToolUse" },
|
|
410
|
+
PostCompact: { state: "omitted", reason: "crush supports only PreToolUse" },
|
|
411
|
+
},
|
|
412
|
+
verified: '2026-08-04, against crush v0.87.0 (its embedded docs + JSON schema): "Only PreToolUse is currently supported"',
|
|
413
|
+
},
|
|
278
414
|
envMarkers: ["CRUSH", "CRUSH_CONFIG"],
|
|
279
415
|
mcpHostId: "crush",
|
|
280
416
|
globalMcpPaths: {
|
|
@@ -338,7 +474,27 @@ export const HARNESSES = [
|
|
|
338
474
|
versionArgs: ["--version"],
|
|
339
475
|
},
|
|
340
476
|
configDir: { kind: "dir", path: "~/.kimi-code" },
|
|
341
|
-
hooks: {
|
|
477
|
+
hooks: {
|
|
478
|
+
managed: true,
|
|
479
|
+
artifact: {
|
|
480
|
+
kind: "config-merge",
|
|
481
|
+
path: "~/.kimi-code/config.toml",
|
|
482
|
+
entry: "[[hooks]] (event · matcher · command · timeout)",
|
|
483
|
+
},
|
|
484
|
+
caveat: "user-global only: kimi has no project-level config",
|
|
485
|
+
events: {
|
|
486
|
+
SessionStart: { state: "carried", native: "SessionStart" },
|
|
487
|
+
PreToolUse: { state: "carried", native: "PreToolUse" },
|
|
488
|
+
SessionEnd: { state: "carried", native: "SessionEnd" },
|
|
489
|
+
PreCompact: { state: "carried", native: "PreCompact" },
|
|
490
|
+
PostCompact: {
|
|
491
|
+
state: "degraded",
|
|
492
|
+
native: "PostCompact",
|
|
493
|
+
loss: 'its type: "prompt" handler cannot be expressed in config.toml and is reported as skipped',
|
|
494
|
+
},
|
|
495
|
+
},
|
|
496
|
+
verified: "2026-07-29, against kimi 0.29.2 (shipped binary + live probes)",
|
|
497
|
+
},
|
|
342
498
|
envMarkers: [],
|
|
343
499
|
mcpHostId: "kimi",
|
|
344
500
|
globalMcpPaths: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harnesses.js","sourceRoot":"","sources":["../../src/domain/harnesses.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"harnesses.js","sourceRoot":"","sources":["../../src/domain/harnesses.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tacuchi/agent-workflow-cli",
|
|
3
|
-
"version": "22.
|
|
3
|
+
"version": "22.3.0",
|
|
4
4
|
"description": "Runtime CLI for Workline — the stages + loops + artifacts system for agent work. Bundles the universal `w` skill set under `skills/w/` (slash commands `/w:*`: spec-new/spec-refine, plan-new/plan-exec, quick, persist, workspace-init, export-*); `self install --target <host>` copies SKILL + commands + hooks into the host. Pluggable capability skills resolve through `.workflow/skills.toml`. Namespace auto-detected from any `.<ns>/sessions/` dir in CWD; default `workflow`.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -12,25 +12,32 @@ allowed-tools:
|
|
|
12
12
|
|
|
13
13
|
Read-only **with or without an argument**: no loop, no session, and it writes nothing in `docs/` or `.workflow/`. Sibling of `aw status`; not `aw session-resume` / `aw resume-summary` (internals).
|
|
14
14
|
|
|
15
|
-
1. **
|
|
16
|
-
2.
|
|
17
|
-
3. **Ask via structured-choice** only for CLI candidates: one option each, in order, plus `flow`. Follow the canonical [option shape](../loops/CHASSIS.md#structured-choice-design--batching) and [per-host binding](../harness/HARNESS.md#harness-binding-matrix); use each candidate's title as its label and its `Progreso` + `Siguiente` as the functional description.
|
|
18
|
-
4. Output in the **user's language**.
|
|
15
|
+
1. **Never re-decide** — priority, ties, the spec→plan link and the command are the CLI's. No re-sort by date, no slug match, no tie broken.
|
|
16
|
+
2. Output in the **user's language**.
|
|
19
17
|
|
|
20
18
|
## Run
|
|
21
19
|
|
|
22
|
-
1. `aw resume --format human`. For one artifact, **pass it as the positional** (`aw resume docs/plans/009-plan-x.md
|
|
23
|
-
2. **Relay it verbatim
|
|
24
|
-
|
|
20
|
+
1. `aw resume --format human`. For one artifact, **pass it as the positional** (`aw resume docs/plans/009-plan-x.md`, or its `NNN`); for a session, `aw resume --code <NNN | folder>`; neither walks the pipeline.
|
|
21
|
+
2. **Relay it verbatim**, then offer the choice.
|
|
22
|
+
|
|
23
|
+
## Choose and continue
|
|
24
|
+
|
|
25
|
+
No target → **every** pending item as `candidates` in the CLI's order, `proposal` the recommended one. It runs no route and writes nothing: continuing is yours.
|
|
26
|
+
|
|
27
|
+
1. **Analyse briefly first** — what is pending, what you recommend, why. From that envelope alone: no transcript, no repo walk.
|
|
28
|
+
2. **One option per candidate** — only for CLI candidates, in its order — each with its re-entry command, plus the `flow` slot. Canonical [option shape](../loops/CHASSIS.md#structured-choice-design--batching) and [host binding](../harness/HARNESS.md#harness-binding-matrix): the title is the label, `Progreso` + `Siguiente` the sentence.
|
|
29
|
+
3. **Past the host's ceiling**, group by class into ≤3 questions; if a class still will not fit, present them **all** as labelled markdown and declare the degradation. Nothing trimmed, merged or dropped.
|
|
30
|
+
4. **Choosing invokes that command in the same turn.** The destination flow opens its own session and consent boundaries.
|
|
31
|
+
5. **No candidates** → nothing is pending: say it and stop, opening no choice; cheap host-memory may add a recent-focus note, never expensive or blocking. No workspace → offer `/w:workspace-init`.
|
|
25
32
|
|
|
26
33
|
## What the CLI decides (do not re-derive)
|
|
27
34
|
|
|
28
|
-
- **Priority**: unrefined spec → refined spec with no plan →
|
|
29
|
-
- **Ties**: equal priority and progress →
|
|
30
|
-
- **Spec→plan link**:
|
|
31
|
-
- **The route**: `/w:spec-refine`, `/w:plan-new`, `/w:plan-exec
|
|
35
|
+
- **Priority**: unrefined spec → refined spec with no plan → plan not `done`; started first. A loose session is a notice, never a candidate.
|
|
36
|
+
- **Ties**: equal priority and progress → no single recommendation; date never splits.
|
|
37
|
+
- **Spec→plan link**: `Derived from` or `## Origin`, never the slug; unproven stays unplanned.
|
|
38
|
+
- **The route**: `/w:spec-refine`, `/w:plan-new`, `/w:plan-exec`, `aw session-resume --reopen`.
|
|
32
39
|
|
|
33
|
-
> A plan is not finished because its boxes are ticked
|
|
40
|
+
> A plan is not finished because its boxes are ticked: re-entry is the first phase not `validada`, a `bloqueada` phase with its declared reason, or — phases green, plan never closed — the final validation. One declaring `done` over open work comes back as inconsistent. An obligation leaving it neither runnable nor closable is said before its percentage.
|
|
34
41
|
|
|
35
42
|
## More context
|
|
36
43
|
|
|
@@ -15,14 +15,18 @@ Read-only single pass: no loop, no session, no writes. Transversal.
|
|
|
15
15
|
## Run
|
|
16
16
|
|
|
17
17
|
1. `aw status --format human`; `--detail` for the full inventory ("detalle", "todo", "historial").
|
|
18
|
-
2. **Relay it verbatim.** The CLI
|
|
19
|
-
3. **Host context, opportunistic.**
|
|
18
|
+
2. **Relay it verbatim.** The CLI selects, groups and humanizes: never paraphrase, re-sort, add or drop a line.
|
|
19
|
+
3. **Host context, opportunistic.** Cheap host-memory → append a `▸ CONTEXTO DEL HOST` section with a few recent-focus signals. Otherwise omit silently; never scan transcripts, never ask.
|
|
20
20
|
|
|
21
|
-
> **The default view is what is LEFT TO DO** — unrefined specs, refined specs with no plan, plans not `done
|
|
21
|
+
> **The default view is what is LEFT TO DO** — unrefined specs, refined specs with no plan, plans not `done` — and each says **what it still owes**, under its title. `--detail` brings back history, sessions and discarded items: re-run, never explain an absence.
|
|
22
22
|
|
|
23
|
-
> **
|
|
23
|
+
> **An obligation comes before the percentage.** What leaves an item neither runnable nor closable — an unresolvable design reference, a pending reconciliation, an unprovable baseline — takes the title, and the progress drops below it. A plan at `100%` with every phase `validada` is not finished either: it owes its final validation and its close.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
> **Sessions are not the user's work.** One carrying work with no document of its own is a **notice** — count and how to look — never a pending row.
|
|
26
|
+
|
|
27
|
+
> **Automation reads JSON.** Piped or with `--json` / `--format json` it emits its envelope; `--detail` is human-only.
|
|
28
|
+
|
|
29
|
+
Nothing pending → one line, no empty section. No workspace → it offers `/w:workspace-init`; an empty pipeline for want of one is never "nothing pending".
|
|
26
30
|
|
|
27
31
|
## More context
|
|
28
32
|
|
|
@@ -12,16 +12,16 @@ allowed-tools:
|
|
|
12
12
|
|
|
13
13
|
Turns the current folder into a Workline workspace: **1+ sources** (repos), one source = standalone. No project/hub modes.
|
|
14
14
|
|
|
15
|
-
`aw workspace-init --source alias:path[:branch] [
|
|
15
|
+
`aw workspace-init --source alias:path[:branch] [flags above] --format human`
|
|
16
16
|
|
|
17
|
-
> **The CLI writes; this wrapper does not** — `Write` and `Edit` are
|
|
17
|
+
> **The CLI writes; this wrapper does not** — `Write` and `Edit` are absent from `allowed-tools` on purpose. `--dry-run` previews; re-run without it. Relay the output, never re-render it.
|
|
18
18
|
|
|
19
19
|
## Interactive steps
|
|
20
20
|
|
|
21
|
-
1. **Sources** — the CLI detects the repo path(s); the user confirms aliases, paths
|
|
22
|
-
2. **Default skills** — present the catalog of capabilities (roles). Per role: `built-in default`, a third-party skill (`skills.sh`), or `off`; the result lands in `.workflow/skills.toml`. Cascade: `built-in → ~/.workflow/skills.toml (global) → .workflow/skills.toml (workspace)`. The template also ships a commented `[compaction]` section
|
|
23
|
-
3. **Minimal scaffold** — only the activation set: `.workflow/sessions/` (the marker that activates the operating context), `.workflow/skills.toml`, the `WORKSPACE` block in CLAUDE.md/AGENTS.md and the CLI-owned `.gitignore`. **Nothing else upfront**: each `docs/<category>`
|
|
24
|
-
4. **External sources** —
|
|
21
|
+
1. **Sources** — the CLI detects the repo path(s); the user confirms aliases, paths and branches. Multiple `--source` accepted.
|
|
22
|
+
2. **Default skills** — present the catalog of capabilities (roles). Per role: `built-in default`, a third-party skill (`skills.sh`), or `off`; the result lands in `.workflow/skills.toml`. Cascade: `built-in → ~/.workflow/skills.toml (global) → .workflow/skills.toml (workspace)`. The template also ships a commented `[compaction]` section: the `mode` switch for the loops' context self-regulation (`confirm` default, `auto` opt-in).
|
|
23
|
+
3. **Minimal scaffold** — only the activation set: `.workflow/sessions/` (the marker that activates the operating context), `.workflow/skills.toml`, the `WORKSPACE` block in CLAUDE.md/AGENTS.md and the CLI-owned `.gitignore`. **Nothing else upfront**: each `docs/<category>` is born on demand at its first numbered write (`aw next-number docs/<cat>`), and `.workflow/launch/<alias>/` plus `docs/logs/` at the first launch.
|
|
24
|
+
4. **External sources** — one outside the workspace folder gets multi-root visibility (gitignored) and a reconcile.
|
|
25
25
|
|
|
26
26
|
**Idempotent** — a re-run reconciles: it keeps manual configuration and prunes the legacy scaffold.
|
|
27
27
|
|
|
@@ -70,7 +70,7 @@ coordination, without turning a deterministic CLI rule into model work.
|
|
|
70
70
|
|
|
71
71
|
## Harness binding matrix
|
|
72
72
|
|
|
73
|
-
Concrete mechanism per harness (matrix base verified **Jul-2026**; the `structured-choice` row re-verified **2026-08-04** and the
|
|
73
|
+
Concrete mechanism per harness (matrix base verified **Jul-2026**; the `structured-choice` row re-verified **2026-08-04**, the Codex `hooks` row **2026-08-05** and the crush/gemini/opencode `hooks` contract **2026-08-18**, all against the INSTALLED runtimes plus real runs — not docs; `~` partial). Antigravity CLI reuses Gemini's surfaces (`~/.gemini/`); Oz reuses Warp's (they share the **Warp / Oz** column, with MCP via flag — see the note under the matrix).
|
|
74
74
|
|
|
75
75
|
| Capability | Claude Code | Codex | Kimi Code | Gemini / Antigravity | OpenCode | Crush | Warp / Oz | Generic |
|
|
76
76
|
|---|---|---|---|---|---|---|---|---|
|
|
@@ -83,16 +83,20 @@ Concrete mechanism per harness (matrix base verified **Jul-2026**; the `structur
|
|
|
83
83
|
| **host-memory** | `MEMORY.md` (cheap) + transcripts/`--resume` (deep) | `AGENTS.md` (static → fallback) | sessions with resume/fork (`kimi -S`) + `AGENTS.md` | `GEMINI.md`+`AGENTS.md` (static → fallback) | `AGENTS.md` (static → fallback) | `CRUSH.md`+`AGENTS.md` (static → fallback) | rules / history (~) | git/`docs/` + ask |
|
|
84
84
|
| **web-research** | `WebSearch` / `WebFetch` | `web_search` (opt-in config) | moonshot search + fetch services | `google_web_search` + `web_fetch` | `webfetch` (~) | ~ | ~ (agent web access) | — (offline + declare) |
|
|
85
85
|
| external-data (MCP) | `.mcp.json` | `.codex/config.toml` `[mcp_servers]` | `~/.kimi-code/mcp.json` `mcpServers` (also reads project `.mcp.json`) | `settings.json` `mcpServers` | `opencode.json` `mcp` | `crush.json` `mcp` | `.warp/.mcp.json` (+auto-discovers `.mcp.json`) · Oz: `--mcp` flag | — |
|
|
86
|
-
| **enforcement (deny tool)** | `PreToolUse` → `permissionDecision:deny` / exit 2 | `PreToolUse` (**≈same protocol**) | `PreToolUse` → block / exit 2 | `
|
|
86
|
+
| **enforcement (deny tool)** | `PreToolUse` → `permissionDecision:deny` / exit 2 | `PreToolUse` (**≈same protocol**) | `PreToolUse` → block / exit 2 | `PreToolUse` in its `hooks.json` (Claude-shaped; `BeforeTool` **does not exist**) | plugin `tool.execute.before` (`throw`) | `PreToolUse` in `crush.json` → `hooks` (+ `allowed_tools` allowlist) | allow/deny lists (**coarse**) | doctrine (git-safe #5) |
|
|
87
87
|
| plugin / dist | `.claude-plugin` + marketplace | `.codex-plugin` + `/plugins` marketplace | plugins + marketplace (no manifest we ship) | Extension `gemini-extension.json` | JS/TS plugin (npm) | MCP + skills + config | Warp Drive | — |
|
|
88
88
|
|
|
89
89
|
> **Kimi Code caveats** (verified 2026-07-29 vs the shipped v0.29.2 binary + live probes): it exports **no env markers** to its subprocesses, so `aw harness` legitimately answers `unknown` inside it and detection goes through binary + config dir. Its hooks live **only** in the user-global `config.toml` — there is no project-level config — and their schema is `event`/`matcher`/`command`/`timeout`, so the bundled JSON template is *transformed*, not copied: `type: "prompt"` hooks cannot be expressed and are reported as skipped, and matchers are carried only for the tool-name events.
|
|
90
90
|
|
|
91
91
|
> **Codex hooks caveats** (verified **2026-08-05** vs codex-cli 0.146.0 + real runs). Its user-level hooks are **not** in `config.toml`: they live in **`~/.codex/hooks.json`** with the **same JSON shape as Claude's** — `{"hooks": {"<Event>": [{"matcher": …, "hooks": [{"type": "command", "command": …, "timeout": N}]}]}}`. The event enum (`HookEventsToml`) is `PreToolUse` · `PermissionRequest` · `PostToolUse` · `PreCompact` · `PostCompact` · `SessionStart` · `SessionEnd` · `UserPromptSubmit` · `SubagentStart` · `SubagentStop` · `Stop`, so **all 5 events of the bundled template fit**, and its handlers admit `command`, **`prompt`** and `agent` — the `type: "prompt"` hook kimi cannot express, codex can. One observed limit: `SessionEnd` clamps its timeout to **3 s**.
|
|
92
92
|
>
|
|
93
|
-
> **But writing that file does not arm it, and that is why Workline does not manage hooks here.** Codex requires an **interactive human review per new or changed hook** (`New hook - review required`, `Modified since last trusted - review required`) and persists the decision as `trusted_hash` under `[hooks.state]`, keyed `"<file>:<event_snake_case>:<i>:<j>"`; the hash pins the command, so any edit re-requires review. Probe: in a clean `CODEX_HOME` a freshly written `hooks.json` was **read and validated** (it clamped a timeout) yet **no hook ran** across two consecutive runs, and codex recorded no trust entry of its own. Forging that hash would forge the person's security approval, so the surfaces say **available, not armed** and name this reason. `--dangerously-bypass-hook-trust` is per-invocation and self-describing. Plugin-bundled hooks skip the review (`Managed hooks are always on`),
|
|
93
|
+
> **But writing that file does not arm it, and that is why Workline does not manage hooks here.** Codex requires an **interactive human review per new or changed hook** (`New hook - review required`, `Modified since last trusted - review required`) and persists the decision as `trusted_hash` under `[hooks.state]`, keyed `"<file>:<event_snake_case>:<i>:<j>"`; the hash pins the command, so any edit re-requires review. Probe: in a clean `CODEX_HOME` a freshly written `hooks.json` was **read and validated** (it clamped a timeout) yet **no hook ran** across two consecutive runs, and codex recorded no trust entry of its own. Forging that hash would forge the person's security approval, so the surfaces say **available, not armed** and name this reason. `--dangerously-bypass-hook-trust` is per-invocation and self-describing. Plugin-bundled hooks skip the review (`Managed hooks are always on`), and **that route is now generated**: `aw self install-hooks --target codex` writes a bundle — `.codex-plugin/plugin.json` with `"hooks": "./hooks.json"`, the five template events verbatim — under `~/.agent-workflow/codex-plugin/`, and reports `generated`, never `installed`. Codex takes plugins **through a marketplace** (`codex plugin marketplace add` then `codex plugin install`), so arming it is the person's step; the uninstaller removes the bundle, and only when its descriptor `name` is ours. Verified against codex-cli 0.147.0 (its plugin validator's required fields and its own scaffold).
|
|
94
94
|
|
|
95
|
-
> **
|
|
95
|
+
> **Hooks contract per host** (catalog dated **2026-08-18**; runtimes read 2026-08-04 and 2026-07-29). Three catalog rows described mechanisms their runtimes do not have. **crush** was declared hookless and has hooks: `crush.json` → `hooks` (`command` · `matcher` · `timeout`), **only `PreToolUse`** (v0.87.0, its embedded docs + JSON schema). **gemini/Antigravity** named a `BeforeTool` event that appears **nowhere in `agy` 1.0.16**: what it has is one `hooks.json` at its customization root, with `PreToolUse`/`PostToolUse` Claude-shaped plus `PreInvocation`/`PostInvocation`/`Stop`. **opencode** named its event but never its artifact, which is a **JS/TS module in `.opencode/plugin/`** declared under `"plugin": []` — code, not config. That module is now **generated** (`aw self install-hooks --target opencode`): it registers `tool.execute.before`, and it TRANSLATES — opencode calls its tools `edit`/`write`/`bash` while our hooks read a Claude-shaped `{tool_name, tool_input}` and act only on names they know, so the module bridges both ways and throws on the CLI's exit 2. The SQL guard does **not** travel: its matcher (`mcp__.*__execute_sql`) names no opencode tool the bridge can produce, and the generated file's own header lists that omission next to the four missing events. Ownership is the module's first line; uninstall removes it and its `plugin[]` entry, and leaves anyone else's. Against the bundle's five template events: Claude and Codex carry all five; Kimi carries all five with `PostCompact` **partial** (its `type: "prompt"` handler is not expressible in `config.toml`); **crush, gemini and opencode carry `PreToolUse` and nothing else**. So on those three the **enforcement travels and the resumability does not** — no session pin, no compaction checkpoint — and that is declared, never simulated: agy's `Stop` fires at the end of every turn rather than at session close, and opencode's only compaction candidate is `experimental.session.compacting`.
|
|
96
|
+
>
|
|
97
|
+
> **crush and agy are now MANAGED** (`aw self install-hooks --target crush|gemini`, and the uninstaller removes what it wrote). Their `PreToolUse` matchers are TRANSLATED, never copied: ours name Claude's tools, crush's are `edit`/`write`/`multiedit`/`bash` and agy's are its step types lowercased (`file_change`, `run_command`), so a verbatim matcher would install a hook that never fires. A matcher with no translation **skips its hook and says so**. Ownership is per entry, by the command invoking this CLI: on crush ours are merged beside the person's own `hooks` inside `crush.json`, and on agy ours live under one named hook (`agent-workflow`) in `~/.agents/hooks.json` — a hook of that name whose commands are not ours is left alone. agy documents its customization root as the workspace's `.agents/`; whether a user-global one is read is **not verified**, and the install result says so rather than implying it.
|
|
98
|
+
|
|
99
|
+
> **Notes (field research Aug-2026):** **`SKILL.md` skills** are the **universal** portable unit — **every harness in the matrix** supports them (Codex added them Dec-2025; **`.agents/skills` is the cross-host anchor**, read by Codex/OpenCode/Crush/Warp/Oz/**Kimi Code** — every host except Claude Code, which reads only `.claude/skills`). The **enforcement layer** is **not Claude-exclusive**: Codex + Gemini use a near-identical protocol (`permissionDecision:deny` / exit 2) and OpenCode blocks via `throw` in a JS plugin; Crush blocks through `PreToolUse` in its own `crush.json` (its ONLY hook event) on top of its `allowed_tools` allowlist; Warp/Oz only offer **coarse** allow/deny (no custom per-command logic) → there, conventions stay **advisory** + allow/deny lists. Enforced **plan mode** is never trusted for safety; git-safe (invariant #5) is our own — though a host-planner's *output* (the plan it built) is adoptable input (`../commands/plan-new.md` § *Input resolution*, mode 4). **MCP** is universal (each host its file/key). The **guaranteed floor** (last column) runs the full model.
|
|
96
100
|
|
|
97
101
|
> **structured-choice routing.** A native binding qualifies only when the current client exposes it and can display the option's functional sentence without loss. When it has separate fields, map the semantic label and sentence to them; when it exposes one visible option string, render `Label — functional sentence`. Otherwise use labeled markdown. Respect the per-call ceilings in the row and reserve one question slot for `flow`; carry overflow into a later call. If the native tool already injects a custom/free-text option, do not add a duplicate `Other` option.
|
|
98
102
|
|
|
@@ -163,8 +167,8 @@ Each command's **contract** (Flow, Trigger, Input, Mode, …) is agnostic. The *
|
|
|
163
167
|
|
|
164
168
|
## Status
|
|
165
169
|
|
|
166
|
-
Capability model + binding matrix **defined** and **validated** with field research (base **Jul-2026**; the `structured-choice` row re-verified **2026-08-04
|
|
170
|
+
Capability model + binding matrix **defined** and **validated** with field research (base **Jul-2026**; the `structured-choice` row re-verified **2026-08-04**, the Codex `hooks` row **2026-08-05** and the crush/gemini/opencode `hooks` contract **2026-08-18** against the INSTALLED runtimes plus real runs — see the evidence note under the matrix for which claims rest on a run and which still rest on a doc). The per-host hook contract lives in `domain/harnesses.ts` (artifact + one answer per template event) and its fixtures are the guards in `host-catalog-guards.test.ts` plus the dialect and HOME-temp cases in `hooks-json-dialects.test.ts`; opencode's plugin artifact is still later work, and observing any of them inside an installed host is an optional handoff, never a closing condition.
|
|
167
171
|
|
|
168
172
|
The catalog counts **8 hosts** — `claude-code`, `codex`, `oz`, `warp`, `gemini`, `opencode`, `crush`, `kimi` — each with its own entry in `domain/harnesses.ts`. The columns above group two pairs that share a config surface (Warp/Oz, Gemini/Antigravity), which is a presentation choice, not a second taxonomy: the host set is whatever `HARNESSES` says. Anti-drift guards cover the CODE projections (TUI, install targets, doctor, detection); `chassis-consistency.test.ts` additionally parses the `structured-choice` row and asserts every host binding or explicit limitation. Support levels: **official** — Claude Code, Codex, Warp, Gemini/Antigravity, Kimi Code; **best-effort** — Oz, OpenCode, Crush. `agents` (`~/.agents/skills`) is a **shared destination**, never a host.
|
|
169
173
|
|
|
170
|
-
All support `SKILL.md` (anchor `.agents/skills`) + MCP + `AGENTS.md`; deterministic enforcement on Claude/Codex/Kimi/Gemini/OpenCode, advisory + coarse allow/deny on
|
|
174
|
+
All support `SKILL.md` (anchor `.agents/skills`) + MCP + `AGENTS.md`; deterministic enforcement on Claude/Codex/Kimi/Gemini/OpenCode/Crush, advisory + coarse allow/deny on Warp/Oz. The CLI (`aw`) implements the registry (`domain/harnesses.ts`), the per-host MCP writers, `detect-hosts` and `install-skill --target <host>`. The universal floor (`AGENTS.md` + text + files + skills) runs the full model today.
|