@tacuchi/agent-workflow-cli 20.23.0 → 20.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +34 -11
  2. package/dist/application/context/budget-service.js +128 -0
  3. package/dist/application/context/budget-service.js.map +1 -0
  4. package/dist/application/context/bundle-root.js +41 -0
  5. package/dist/application/context/bundle-root.js.map +1 -0
  6. package/dist/application/context/manifest.js +150 -0
  7. package/dist/application/context/manifest.js.map +1 -0
  8. package/dist/application/context/measure.js +227 -0
  9. package/dist/application/context/measure.js.map +1 -0
  10. package/dist/application/context/plan-service.js +177 -0
  11. package/dist/application/context/plan-service.js.map +1 -0
  12. package/dist/application/dev-only-services.js +17 -14
  13. package/dist/application/dev-only-services.js.map +1 -1
  14. package/dist/application/mcp-host-reader.js +3 -1
  15. package/dist/application/mcp-host-reader.js.map +1 -1
  16. package/dist/application/mcp-host-writer.js +86 -41
  17. package/dist/application/mcp-host-writer.js.map +1 -1
  18. package/dist/application/plugin-doctor/hooks.js +7 -1
  19. package/dist/application/plugin-doctor/hooks.js.map +1 -1
  20. package/dist/application/self/bootstrap.js +30 -16
  21. package/dist/application/self/bootstrap.js.map +1 -1
  22. package/dist/application/self/clean-legacy.js +5 -0
  23. package/dist/application/self/clean-legacy.js.map +1 -1
  24. package/dist/application/self/detect-hosts.js +31 -45
  25. package/dist/application/self/detect-hosts.js.map +1 -1
  26. package/dist/application/self/doctor-self.js +7 -2
  27. package/dist/application/self/doctor-self.js.map +1 -1
  28. package/dist/application/self/hooks-toml.js +232 -0
  29. package/dist/application/self/hooks-toml.js.map +1 -0
  30. package/dist/application/self/host-states.js +290 -0
  31. package/dist/application/self/host-states.js.map +1 -0
  32. package/dist/application/self/install-hooks.js +98 -4
  33. package/dist/application/self/install-hooks.js.map +1 -1
  34. package/dist/application/self/install-skill.js +28 -16
  35. package/dist/application/self/install-skill.js.map +1 -1
  36. package/dist/application/self/install-targets.js +23 -0
  37. package/dist/application/self/install-targets.js.map +1 -1
  38. package/dist/application/self/mcp-config.js +13 -19
  39. package/dist/application/self/mcp-config.js.map +1 -1
  40. package/dist/application/self/skills-manager.js +9 -0
  41. package/dist/application/self/skills-manager.js.map +1 -1
  42. package/dist/application/self/uninstall.js +162 -26
  43. package/dist/application/self/uninstall.js.map +1 -1
  44. package/dist/cli/commands/context-budget.js +79 -0
  45. package/dist/cli/commands/context-budget.js.map +1 -0
  46. package/dist/cli/commands/context-plan.js +75 -0
  47. package/dist/cli/commands/context-plan.js.map +1 -0
  48. package/dist/cli/commands/dev-only.js +4 -1
  49. package/dist/cli/commands/dev-only.js.map +1 -1
  50. package/dist/cli/commands/index.js +4 -0
  51. package/dist/cli/commands/index.js.map +1 -1
  52. package/dist/cli/commands/mcp.js +16 -8
  53. package/dist/cli/commands/mcp.js.map +1 -1
  54. package/dist/cli/help-groups.js +4 -0
  55. package/dist/cli/help-groups.js.map +1 -1
  56. package/dist/cli/parser.js +4 -0
  57. package/dist/cli/parser.js.map +1 -1
  58. package/dist/cli/tui/components/host-admin-section.js +69 -60
  59. package/dist/cli/tui/components/host-admin-section.js.map +1 -1
  60. package/dist/cli/tui/data/workflow-content.js +6 -0
  61. package/dist/cli/tui/data/workflow-content.js.map +1 -1
  62. package/dist/cli/tui/hosts.js +39 -17
  63. package/dist/cli/tui/hosts.js.map +1 -1
  64. package/dist/cli/tui/tabs/config-tab.js +3 -3
  65. package/dist/cli/tui/tabs/config-tab.js.map +1 -1
  66. package/dist/cli/tui/tabs/mcp-tab-helpers.js +7 -1
  67. package/dist/cli/tui/tabs/mcp-tab-helpers.js.map +1 -1
  68. package/dist/cli/tui/tabs/mcp-tab.js +32 -10
  69. package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
  70. package/dist/cli/tui/tabs/skills-tab.js +13 -4
  71. package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
  72. package/dist/cli/tui/tabs/status-tab.js +11 -17
  73. package/dist/cli/tui/tabs/status-tab.js.map +1 -1
  74. package/dist/cli/tui/tabs/workflow-tab.js +7 -3
  75. package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
  76. package/dist/cli/tui/tui-prefs.js +7 -1
  77. package/dist/cli/tui/tui-prefs.js.map +1 -1
  78. package/dist/domain/harnesses.js +129 -0
  79. package/dist/domain/harnesses.js.map +1 -1
  80. package/dist/domain/host-verification.js +20 -0
  81. package/dist/domain/host-verification.js.map +1 -0
  82. package/package.json +3 -2
  83. package/skills/w/SKILL.md +2 -2
  84. package/skills/w/commands/export-diagrams.md +10 -27
  85. package/skills/w/commands/export-manuals.md +13 -29
  86. package/skills/w/commands/export-reports.md +11 -27
  87. package/skills/w/commands/export-scripts.md +12 -29
  88. package/skills/w/commands/fix-git.md +21 -32
  89. package/skills/w/commands/generate-launch.md +13 -32
  90. package/skills/w/commands/persist.md +8 -29
  91. package/skills/w/commands/plan-exec.md +14 -30
  92. package/skills/w/commands/plan-new.md +11 -38
  93. package/skills/w/commands/plan-refine.md +13 -41
  94. package/skills/w/commands/quick.md +13 -20
  95. package/skills/w/commands/resume.md +17 -33
  96. package/skills/w/commands/spec-new.md +28 -69
  97. package/skills/w/commands/spec-refine.md +12 -37
  98. package/skills/w/commands/status.md +12 -19
  99. package/skills/w/commands/workspace-init.md +13 -20
  100. package/skills/w/context/MANIFEST.json +486 -0
  101. package/skills/w/harness/HARNESS.md +24 -17
  102. package/skills/w/loops/CHASSIS.md +53 -104
  103. package/skills/w/loops/CODE-POLICIES.md +4 -9
  104. package/skills/w/loops/plan-exec-loop/LOOP.md +5 -12
  105. package/skills/w/loops/plan-new-loop/LOOP.md +8 -32
  106. package/skills/w/loops/plan-refine-loop/LOOP.md +8 -36
  107. package/skills/w/loops/quick-loop/LOOP.md +4 -10
  108. package/skills/w/loops/spec-refine-loop/LOOP.md +7 -49
  109. package/skills/w/modules/ADOPTED-CONTEXT.md +10 -0
  110. package/skills/w/modules/COMPACTION.md +13 -0
  111. package/skills/w/modules/DB-RESEARCH-RULE.md +11 -0
  112. package/skills/w/modules/DB-SCRIPTS-ONLY.md +12 -0
  113. package/skills/w/modules/EXEC-DB-POLICY.md +7 -0
  114. package/skills/w/modules/EXEC-PROBE-TASKS.md +11 -0
  115. package/skills/w/modules/IDEATION-GATE.md +16 -0
  116. package/skills/w/modules/INCREMENTAL-STRATEGY.md +7 -0
  117. package/skills/w/modules/LAUNCH-DETECTION.md +26 -0
  118. package/skills/w/modules/PERSIST-ROUTING.md +16 -0
  119. package/skills/w/modules/PLAN-DESIGN-SPECS.md +12 -0
  120. package/skills/w/modules/PLAN-INPUT.md +26 -0
  121. package/skills/w/modules/PLAN-MODE.md +26 -0
  122. package/skills/w/modules/PLAN-PROBE-TASKS.md +10 -0
  123. package/skills/w/modules/PLAN-REFINE-DESIGN-SPECS.md +7 -0
  124. package/skills/w/modules/PLAN-REFINE-KEYS.md +9 -0
  125. package/skills/w/modules/PLAN-REFINE-SPLIT.md +12 -0
  126. package/skills/w/modules/PLAN-SPLIT-GATE.md +14 -0
  127. package/skills/w/modules/PROBE.md +12 -0
  128. package/skills/w/modules/PROMPT-CONTINUITY.md +13 -0
  129. package/skills/w/modules/RECONNAISSANCE.md +48 -0
  130. package/skills/w/modules/REPLANNING.md +12 -0
  131. package/skills/w/modules/SESSION-NUMBERING.md +19 -0
  132. package/skills/w/modules/SIMULATION-LIFECYCLE.md +11 -0
  133. package/skills/w/modules/SPEC-CHANGE-SHAPE.md +37 -0
  134. package/skills/w/modules/SPEC-REFINE-KEYS.md +14 -0
  135. package/skills/w/modules/SPLIT-GATE.md +42 -0
  136. package/skills/w/modules/WORKSPACE-SCAFFOLD.md +28 -0
  137. package/skills/w/roles/ui-spec/ROLE.md +1 -1
@@ -0,0 +1,486 @@
1
+ {
2
+ "version": 1,
3
+ "$comment": "Context graph of the w bundle. Single source for BOTH measurement (aw context-budget) and resolution (aw context-plan). It lives inside the bundle on purpose: a hand-installed tree carries the manifest that describes IT, so a receipt can never describe a bundle other than the one the agent actually reads. Paths are relative to the bundle root. `core` is loaded always, in order; a module is loaded only when its signal is observed.",
4
+ "signals": {
5
+ "plan-mode": "the host reports it is planning, so the command describes instead of acting",
6
+ "adopted": "the conversation already produced the analysis, plan or answers the run needs",
7
+ "probe": "the run rests on a runnable assumption that reading cannot settle",
8
+ "db": "the run reads or writes a database",
9
+ "ui": "the run produces or changes a user interface",
10
+ "split": "the deliverable may have to become more than one document",
11
+ "shape": "the investigation may have changed what kind of document this is",
12
+ "input": "the argument is not plainly the document this command expects",
13
+ "resume": "a prior run over this same input may exist",
14
+ "replan": "work already executed has to be re-planned around",
15
+ "simulation": "the change carries temporary behavior with a boundary to declare",
16
+ "compaction": "the run is long enough that context pressure governs its pacing",
17
+ "sessions": "a session other than this run's own has to be located, named or reopened",
18
+ "web": "the run needs evidence from outside the workspace",
19
+ "reconnaissance": "a draft is being cut from a raw prompt over unfamiliar terrain",
20
+ "detection": "the CLI's automatic detection was wrong or ambiguous",
21
+ "scaffold": "the target folder already carries a workspace",
22
+ "classification": "in-conversation work has to be classified before it is written",
23
+ "authoring": "the deliverable's own notation, structure or ordering is not obvious from the material"
24
+ },
25
+ "commands": {
26
+ "quick": {
27
+ "core": [
28
+ "commands/quick.md",
29
+ "loops/quick-loop/LOOP.md",
30
+ "loops/CHASSIS.md",
31
+ "loops/CODE-POLICIES.md"
32
+ ],
33
+ "modules": [
34
+ {
35
+ "path": "modules/PLAN-MODE.md",
36
+ "signal": "plan-mode"
37
+ },
38
+ {
39
+ "path": "modules/ADOPTED-CONTEXT.md",
40
+ "signal": "adopted"
41
+ },
42
+ {
43
+ "path": "modules/PROBE.md",
44
+ "signal": "probe"
45
+ },
46
+ {
47
+ "path": "modules/DB-RESEARCH-RULE.md",
48
+ "signal": "db",
49
+ "requires": "external-data"
50
+ },
51
+ {
52
+ "path": "modules/DB-SCRIPTS-ONLY.md",
53
+ "signal": "db",
54
+ "requires": "external-data"
55
+ },
56
+ {
57
+ "path": "modules/COMPACTION.md",
58
+ "signal": "compaction",
59
+ "requires": "compaction"
60
+ },
61
+ {
62
+ "path": "modules/SESSION-NUMBERING.md",
63
+ "signal": "sessions"
64
+ },
65
+ {
66
+ "path": "modules/PROMPT-CONTINUITY.md",
67
+ "signal": "resume"
68
+ }
69
+ ]
70
+ },
71
+ "spec-new": {
72
+ "core": ["commands/spec-new.md"],
73
+ "modules": [
74
+ {
75
+ "path": "modules/PLAN-MODE.md",
76
+ "signal": "plan-mode"
77
+ },
78
+ {
79
+ "path": "modules/RECONNAISSANCE.md",
80
+ "signal": "reconnaissance"
81
+ },
82
+ {
83
+ "path": "modules/SPLIT-GATE.md",
84
+ "signal": "split"
85
+ }
86
+ ]
87
+ },
88
+ "spec-refine": {
89
+ "core": ["commands/spec-refine.md", "loops/spec-refine-loop/LOOP.md", "loops/CHASSIS.md"],
90
+ "modules": [
91
+ {
92
+ "path": "modules/PLAN-MODE.md",
93
+ "signal": "plan-mode"
94
+ },
95
+ {
96
+ "path": "modules/SPEC-CHANGE-SHAPE.md",
97
+ "signal": "shape"
98
+ },
99
+ {
100
+ "path": "modules/SPEC-REFINE-KEYS.md",
101
+ "signal": "resume"
102
+ },
103
+ {
104
+ "path": "modules/IDEATION-GATE.md",
105
+ "signal": "web",
106
+ "requires": "web-research"
107
+ },
108
+ {
109
+ "path": "modules/ADOPTED-CONTEXT.md",
110
+ "signal": "adopted"
111
+ },
112
+ {
113
+ "path": "modules/PROBE.md",
114
+ "signal": "probe"
115
+ },
116
+ {
117
+ "path": "modules/DB-RESEARCH-RULE.md",
118
+ "signal": "db",
119
+ "requires": "external-data"
120
+ },
121
+ {
122
+ "path": "modules/COMPACTION.md",
123
+ "signal": "compaction",
124
+ "requires": "compaction"
125
+ },
126
+ {
127
+ "path": "modules/SESSION-NUMBERING.md",
128
+ "signal": "sessions"
129
+ }
130
+ ]
131
+ },
132
+ "plan-new": {
133
+ "core": ["commands/plan-new.md", "loops/plan-new-loop/LOOP.md", "loops/CHASSIS.md"],
134
+ "modules": [
135
+ {
136
+ "path": "modules/PLAN-MODE.md",
137
+ "signal": "plan-mode"
138
+ },
139
+ {
140
+ "path": "modules/PLAN-INPUT.md",
141
+ "signal": "input"
142
+ },
143
+ {
144
+ "path": "modules/PLAN-SPLIT-GATE.md",
145
+ "signal": "split"
146
+ },
147
+ {
148
+ "path": "modules/INCREMENTAL-STRATEGY.md",
149
+ "signal": "split"
150
+ },
151
+ {
152
+ "path": "modules/PLAN-DESIGN-SPECS.md",
153
+ "signal": "ui"
154
+ },
155
+ {
156
+ "path": "modules/PLAN-PROBE-TASKS.md",
157
+ "signal": "probe"
158
+ },
159
+ {
160
+ "path": "modules/PROBE.md",
161
+ "signal": "probe"
162
+ },
163
+ {
164
+ "path": "modules/ADOPTED-CONTEXT.md",
165
+ "signal": "adopted"
166
+ },
167
+ {
168
+ "path": "modules/DB-RESEARCH-RULE.md",
169
+ "signal": "db",
170
+ "requires": "external-data"
171
+ },
172
+ {
173
+ "path": "modules/COMPACTION.md",
174
+ "signal": "compaction",
175
+ "requires": "compaction"
176
+ },
177
+ {
178
+ "path": "modules/SESSION-NUMBERING.md",
179
+ "signal": "sessions"
180
+ }
181
+ ]
182
+ },
183
+ "plan-refine": {
184
+ "core": [
185
+ "commands/plan-refine.md",
186
+ "loops/plan-refine-loop/LOOP.md",
187
+ "loops/plan-new-loop/LOOP.md",
188
+ "loops/CHASSIS.md"
189
+ ],
190
+ "modules": [
191
+ {
192
+ "path": "modules/PLAN-MODE.md",
193
+ "signal": "plan-mode"
194
+ },
195
+ {
196
+ "path": "modules/PLAN-INPUT.md",
197
+ "signal": "input"
198
+ },
199
+ {
200
+ "path": "modules/PLAN-REFINE-KEYS.md",
201
+ "signal": "resume"
202
+ },
203
+ {
204
+ "path": "modules/PLAN-REFINE-SPLIT.md",
205
+ "signal": "split"
206
+ },
207
+ {
208
+ "path": "modules/PLAN-SPLIT-GATE.md",
209
+ "signal": "split"
210
+ },
211
+ {
212
+ "path": "modules/INCREMENTAL-STRATEGY.md",
213
+ "signal": "split"
214
+ },
215
+ {
216
+ "path": "modules/PLAN-REFINE-DESIGN-SPECS.md",
217
+ "signal": "ui"
218
+ },
219
+ {
220
+ "path": "modules/PLAN-DESIGN-SPECS.md",
221
+ "signal": "ui"
222
+ },
223
+ {
224
+ "path": "modules/REPLANNING.md",
225
+ "signal": "replan"
226
+ },
227
+ {
228
+ "path": "modules/SIMULATION-LIFECYCLE.md",
229
+ "signal": "simulation"
230
+ },
231
+ {
232
+ "path": "modules/PLAN-PROBE-TASKS.md",
233
+ "signal": "probe"
234
+ },
235
+ {
236
+ "path": "modules/PROBE.md",
237
+ "signal": "probe"
238
+ },
239
+ {
240
+ "path": "modules/ADOPTED-CONTEXT.md",
241
+ "signal": "adopted"
242
+ },
243
+ {
244
+ "path": "modules/DB-RESEARCH-RULE.md",
245
+ "signal": "db",
246
+ "requires": "external-data"
247
+ },
248
+ {
249
+ "path": "modules/COMPACTION.md",
250
+ "signal": "compaction",
251
+ "requires": "compaction"
252
+ },
253
+ {
254
+ "path": "modules/SESSION-NUMBERING.md",
255
+ "signal": "sessions"
256
+ }
257
+ ]
258
+ },
259
+ "plan-exec": {
260
+ "core": [
261
+ "commands/plan-exec.md",
262
+ "loops/plan-exec-loop/LOOP.md",
263
+ "loops/CHASSIS.md",
264
+ "loops/CODE-POLICIES.md"
265
+ ],
266
+ "modules": [
267
+ {
268
+ "path": "modules/PLAN-MODE.md",
269
+ "signal": "plan-mode"
270
+ },
271
+ {
272
+ "path": "modules/EXEC-PROBE-TASKS.md",
273
+ "signal": "probe"
274
+ },
275
+ {
276
+ "path": "modules/PROBE.md",
277
+ "signal": "probe"
278
+ },
279
+ {
280
+ "path": "modules/EXEC-DB-POLICY.md",
281
+ "signal": "db",
282
+ "requires": "external-data"
283
+ },
284
+ {
285
+ "path": "modules/DB-SCRIPTS-ONLY.md",
286
+ "signal": "db",
287
+ "requires": "external-data"
288
+ },
289
+ {
290
+ "path": "modules/DB-RESEARCH-RULE.md",
291
+ "signal": "db",
292
+ "requires": "external-data"
293
+ },
294
+ {
295
+ "path": "modules/SIMULATION-LIFECYCLE.md",
296
+ "signal": "simulation"
297
+ },
298
+ {
299
+ "path": "modules/PLAN-DESIGN-SPECS.md",
300
+ "signal": "ui"
301
+ },
302
+ {
303
+ "path": "modules/ADOPTED-CONTEXT.md",
304
+ "signal": "adopted"
305
+ },
306
+ {
307
+ "path": "modules/COMPACTION.md",
308
+ "signal": "compaction",
309
+ "requires": "compaction"
310
+ },
311
+ {
312
+ "path": "modules/SESSION-NUMBERING.md",
313
+ "signal": "sessions"
314
+ }
315
+ ]
316
+ },
317
+ "status": {
318
+ "core": ["commands/status.md"],
319
+ "modules": [
320
+ {
321
+ "path": "modules/PLAN-MODE.md",
322
+ "signal": "plan-mode"
323
+ }
324
+ ]
325
+ },
326
+ "resume": {
327
+ "core": ["commands/resume.md"],
328
+ "modules": [
329
+ {
330
+ "path": "modules/PLAN-MODE.md",
331
+ "signal": "plan-mode"
332
+ }
333
+ ]
334
+ },
335
+ "persist": {
336
+ "core": ["commands/persist.md"],
337
+ "modules": [
338
+ {
339
+ "path": "modules/PLAN-MODE.md",
340
+ "signal": "plan-mode"
341
+ },
342
+ {
343
+ "path": "modules/PERSIST-ROUTING.md",
344
+ "signal": "classification"
345
+ },
346
+ {
347
+ "path": "modules/ADOPTED-CONTEXT.md",
348
+ "signal": "adopted"
349
+ }
350
+ ]
351
+ },
352
+ "fix-git": {
353
+ "core": ["commands/fix-git.md"],
354
+ "modules": [
355
+ {
356
+ "path": "modules/PLAN-MODE.md",
357
+ "signal": "plan-mode"
358
+ }
359
+ ]
360
+ },
361
+ "generate-launch": {
362
+ "core": ["commands/generate-launch.md"],
363
+ "modules": [
364
+ {
365
+ "path": "modules/PLAN-MODE.md",
366
+ "signal": "plan-mode"
367
+ },
368
+ {
369
+ "path": "modules/LAUNCH-DETECTION.md",
370
+ "signal": "detection"
371
+ }
372
+ ]
373
+ },
374
+ "workspace-init": {
375
+ "core": ["commands/workspace-init.md"],
376
+ "modules": [
377
+ {
378
+ "path": "modules/PLAN-MODE.md",
379
+ "signal": "plan-mode"
380
+ },
381
+ {
382
+ "path": "modules/WORKSPACE-SCAFFOLD.md",
383
+ "signal": "scaffold"
384
+ }
385
+ ]
386
+ },
387
+ "export-diagrams": {
388
+ "core": ["commands/export-diagrams.md"],
389
+ "modules": [
390
+ {
391
+ "path": "modules/PLAN-MODE.md",
392
+ "signal": "plan-mode"
393
+ },
394
+ {
395
+ "path": "exports/export-diagrams/EXPORT.md",
396
+ "signal": "authoring"
397
+ }
398
+ ]
399
+ },
400
+ "export-manuals": {
401
+ "core": ["commands/export-manuals.md"],
402
+ "modules": [
403
+ {
404
+ "path": "modules/PLAN-MODE.md",
405
+ "signal": "plan-mode"
406
+ },
407
+ {
408
+ "path": "exports/export-manuals/EXPORT.md",
409
+ "signal": "authoring"
410
+ }
411
+ ]
412
+ },
413
+ "export-reports": {
414
+ "core": ["commands/export-reports.md"],
415
+ "modules": [
416
+ {
417
+ "path": "modules/PLAN-MODE.md",
418
+ "signal": "plan-mode"
419
+ },
420
+ {
421
+ "path": "exports/export-reports/EXPORT.md",
422
+ "signal": "authoring"
423
+ }
424
+ ]
425
+ },
426
+ "export-scripts": {
427
+ "core": ["commands/export-scripts.md"],
428
+ "modules": [
429
+ {
430
+ "path": "modules/PLAN-MODE.md",
431
+ "signal": "plan-mode"
432
+ },
433
+ {
434
+ "path": "exports/export-scripts/EXPORT.md",
435
+ "signal": "authoring"
436
+ }
437
+ ]
438
+ }
439
+ },
440
+ "journeys": [
441
+ {
442
+ "id": "spec",
443
+ "label": "SPEC",
444
+ "command": "spec-refine",
445
+ "signals": []
446
+ },
447
+ {
448
+ "id": "plan-doc",
449
+ "label": "PLAN documental",
450
+ "command": "plan-new",
451
+ "signals": []
452
+ },
453
+ {
454
+ "id": "code-exec",
455
+ "label": "ejecucion de codigo",
456
+ "command": "plan-exec",
457
+ "signals": []
458
+ },
459
+ {
460
+ "id": "quick",
461
+ "label": "QUICK",
462
+ "command": "quick",
463
+ "signals": []
464
+ },
465
+ {
466
+ "id": "transversal",
467
+ "label": "transversal",
468
+ "command": "persist",
469
+ "signals": []
470
+ },
471
+ {
472
+ "id": "export",
473
+ "label": "export",
474
+ "command": "export-scripts",
475
+ "signals": []
476
+ }
477
+ ],
478
+ "budget_policy": {
479
+ "$comment": "Ratios of the frozen baseline (spec 009 \u00a7 Decisions: -30% discovery, -40% median and -20% minimum activation, -25% median execution, +5% ceiling per journey). Absolute targets are DERIVED from baseline x ratio, never written by hand. The +5% ceiling also caps modules.total, the conditional tree as one figure: a representative journey carries no signal, so no journey line ever prices a module, and without that line the modules would grow unwatched.",
480
+ "discovery_max_ratio": 0.7,
481
+ "activation_median_max_ratio": 0.6,
482
+ "activation_each_max_ratio": 0.8,
483
+ "execution_median_max_ratio": 0.75,
484
+ "journey_max_ratio": 1.05
485
+ }
486
+ }
@@ -49,25 +49,27 @@ The capabilities the harness layer depends on, with their universal fallback (wh
49
49
 
50
50
  Concrete mechanism per harness (**Jul-2026**, verified against official 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).
51
51
 
52
- | Capability | Claude Code | Codex | Gemini / Antigravity | OpenCode | Crush | Warp / Oz | Generic |
53
- |---|---|---|---|---|---|---|---|
54
- | command-invocation | `.claude/commands/` (slash) | skills only (`$` mention; no commands dir, prompts removed) | skills only in agy (system slash commands; `.gemini/commands/*.toml` = legacy Gemini CLI) | `.opencode/command/` | `.crush/commands` (palette) + user-invocable skills | skills as `/name` | text |
55
- | procedure-loading (skills) | `SKILL.md` `.claude/skills` | `SKILL.md` `.agents/skills` | `SKILL.md` (agentskills) | `SKILL.md` `.opencode`+`.claude`+`.agents` | `SKILL.md` `~/.config/crush`+`.agents`+`.claude` (`.crush/skills` is project-only) | `SKILL.md` `.agents`+`.warp`+`.claude` | read-and-follow `.md` |
56
- | structured-choice | `AskUserQuestion` (**main-agent only**) | — | — | — | — | — | numbered markdown |
57
- | compaction | `/compact` | Pre/PostCompact hooks | ~ | `session.compacted` | ~ | ~ | CHECKPOINT + resume |
58
- | subagent-dispatch | `Task` (parallel) | `SubagentStart` / agents | agents (`.gemini/agents`) | `.opencode/agent/*.md` | ~ | ~ (cloud agents) | inline |
59
- | persistent-context | `CLAUDE.md` (does **not** read AGENTS.md → symlink) | `AGENTS.md` | `GEMINI.md` + `AGENTS.md` | `AGENTS.md` | `CRUSH.md` + `AGENTS.md` | `AGENTS.md` (auto) | `AGENTS.md` |
60
- | **host-memory** | `MEMORY.md` (cheap) + transcripts/`--resume` (deep) | `AGENTS.md` (static → fallback) | `GEMINI.md`+`AGENTS.md` (static → fallback) | `AGENTS.md` (static → fallback) | `CRUSH.md`+`AGENTS.md` (static → fallback) | rules / history (~) | git/`docs/` + ask |
61
- | **web-research** | `WebSearch` / `WebFetch` | `web_search` (opt-in config) | `google_web_search` + `web_fetch` | `webfetch` (~) | ~ | ~ (agent web access) | — (offline + declare) |
62
- | external-data (MCP) | `.mcp.json` | `.codex/config.toml` `[mcp_servers]` | `settings.json` `mcpServers` | `opencode.json` `mcp` | `crush.json` `mcp` | `.warp/.mcp.json` (+auto-discovers `.mcp.json`) · Oz: `--mcp` flag | — |
63
- | **enforcement (deny tool)** | `PreToolUse` → `permissionDecision:deny` / exit 2 | `PreToolUse` (**≈same protocol**) | `BeforeTool` → `decision:deny` / exit 2 | plugin `tool.execute.before` (`throw`) | `allowed_tools` (+ preliminary hooks) | allow/deny lists (**coarse**) | doctrine (git-safe #5) |
64
- | plugin / dist | `.claude-plugin` + marketplace | `.codex-plugin` + `/plugins` marketplace | Extension `gemini-extension.json` | JS/TS plugin (npm) | MCP + skills + config | Warp Drive | — |
65
-
66
- > **Notes (field research Jul-2026):** **`SKILL.md` skills** are the **universal** portable unit — **all six** harnesses support them (Codex added them Dec-2025; **`.agents/skills` is the cross-host anchor**, read by Codex/OpenCode/Crush/Warp). **Structured choice** (`AskUserQuestion`) remains **Claude Code / main-agent only** → elsewhere `structured-choice` degrades to numbered markdown. The **enforcement layer** (new row) is **NO longer Claude-exclusive**: Codex + Gemini use a near-identical protocol (`permissionDecision:deny` / exit 2) and OpenCode blocks via `throw` in a JS plugin; Crush/Warp 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.
52
+ | Capability | Claude Code | Codex | Kimi Code | Gemini / Antigravity | OpenCode | Crush | Warp / Oz | Generic |
53
+ |---|---|---|---|---|---|---|---|---|
54
+ | command-invocation | `.claude/commands/` (slash) | skills only (`$` mention; no commands dir, prompts removed) | skills only, as `/skill:<name>` (no commands dir) | skills only in agy (system slash commands; `.gemini/commands/*.toml` = legacy Gemini CLI) | `.opencode/command/` | `.crush/commands` (palette) + user-invocable skills | skills as `/name` | text |
55
+ | procedure-loading (skills) | `SKILL.md` `.claude/skills` | `SKILL.md` `.agents/skills` | `SKILL.md` `.kimi-code/skills`+`.agents/skills` (user and project tiers) | `SKILL.md` (agentskills) | `SKILL.md` `.opencode`+`.claude`+`.agents` | `SKILL.md` `~/.config/crush`+`.agents`+`.claude` (`.crush/skills` is project-only) | `SKILL.md` `.agents`+`.warp`+`.claude` | read-and-follow `.md` |
56
+ | structured-choice | `AskUserQuestion` (**main-agent only**) | — | — | — | — | — | — | numbered markdown |
57
+ | compaction | `/compact` | Pre/PostCompact hooks | `/compact` + Pre/PostCompact hooks | ~ | `session.compacted` | ~ | ~ | CHECKPOINT + resume |
58
+ | subagent-dispatch | `Task` (parallel) | `SubagentStart` / agents | sub-agents (`SubagentStart`/`SubagentStop`) | agents (`.gemini/agents`) | `.opencode/agent/*.md` | ~ | ~ (cloud agents) | inline |
59
+ | persistent-context | `CLAUDE.md` (does **not** read AGENTS.md → symlink) | `AGENTS.md` | `AGENTS.md` (hierarchical) | `GEMINI.md` + `AGENTS.md` | `AGENTS.md` | `CRUSH.md` + `AGENTS.md` | `AGENTS.md` (auto) | `AGENTS.md` |
60
+ | **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 |
61
+ | **web-research** | `WebSearch` / `WebFetch` | `web_search` (opt-in config) | moonshot search + fetch services | `google_web_search` + `web_fetch` | `webfetch` (~) | ~ | ~ (agent web access) | — (offline + declare) |
62
+ | 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 | — |
63
+ | **enforcement (deny tool)** | `PreToolUse` → `permissionDecision:deny` / exit 2 | `PreToolUse` (**≈same protocol**) | `PreToolUse` → block / exit 2 | `BeforeTool` → `decision:deny` / exit 2 | plugin `tool.execute.before` (`throw`) | `allowed_tools` (+ preliminary hooks) | allow/deny lists (**coarse**) | doctrine (git-safe #5) |
64
+ | 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 | — |
65
+
66
+ > **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.
67
+
68
+ > **Notes (field research Jul-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`). **Structured choice** (`AskUserQuestion`) remains **Claude Code / main-agent only** → elsewhere `structured-choice` degrades to numbered markdown. The **enforcement layer** (new row) is **NO longer Claude-exclusive**: Codex + Gemini use a near-identical protocol (`permissionDecision:deny` / exit 2) and OpenCode blocks via `throw` in a JS plugin; Crush/Warp 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.
67
69
 
68
70
  > **Oz (Warp's cloud sibling).** `oz agent run` is a cloud agent orchestrator that **reuses Warp's surfaces**: same skills (`.agents/skills`, top-level dirs like Warp) and `AGENTS.md`, with `structured-choice` equally degraded to numbered markdown. It differs in three points: **detection** via `OZ_RUN_ID` (takes priority over Warp when both markers coexist); **MCP without a config file** — the JSON is passed via the `--mcp` flag of `oz agent run` (or the `OZ_MCP_CONFIG` env), it never writes `.warp/.mcp.json`; and **no plugin or hooks** (advisory enforcement, like Warp). Hence it shares the **Warp / Oz** column with that MCP caveat.
69
71
 
70
- > **compaction (signal & self-regulation).** The chassis' *Self-regulation (proactive compaction)* doctrine (`../loops/CHASSIS.md` § *Compact / resume*) needs two per-host facts: the **context-pressure signal** (does the host surface one the agent can read?) and **`auto`-mode viability** (can compaction fire **without user interaction**?). Claude Code: the signal is the harness' own context warnings; `/compact` is user-invoked — the agent cannot run it itself, so `auto` **degrades to `confirm`** there (the native auto-compact is already cushioned by the PreCompact/PostCompact hooks: checkpoint-write + resume-summary). Hosts with compaction hooks/events (Codex Pre/PostCompact, OpenCode `session.compacted`) cushion resume the same way; hosts with neither signal nor mechanism run the universal fallback (CHECKPOINT + restart + resume) and `auto` likewise degrades. Mode semantics (`[compaction]` config, default, consent): the chassis' subsection — single source.
72
+ > **compaction (signal & self-regulation).** The chassis' *Self-regulation (proactive compaction)* doctrine (`../modules/COMPACTION.md`, loaded under the `compaction` signal) needs two per-host facts: the **context-pressure signal** (does the host surface one the agent can read?) and **`auto`-mode viability** (can compaction fire **without user interaction**?). Claude Code: the signal is the harness' own context warnings; `/compact` is user-invoked — the agent cannot run it itself, so `auto` **degrades to `confirm`** there (the native auto-compact is already cushioned by the PreCompact/PostCompact hooks: checkpoint-write + resume-summary). Hosts with compaction hooks/events (Codex Pre/PostCompact, OpenCode `session.compacted`) cushion resume the same way; hosts with neither signal nor mechanism run the universal fallback (CHECKPOINT + restart + resume) and `auto` likewise degrades. Mode semantics (`[compaction]` config, default, consent): the chassis' subsection — single source.
71
73
 
72
74
  > **host-memory (tiers & consumers).** Two tiers: *cheap* (structured, bounded — on Claude Code the auto-memory `MEMORY.md` + `CLAUDE.md`) and *deep* (transcript / `--resume` search, expensive). Consumers: **`/status`** reads only the *cheap* tier, **opportunistically and additively** (a `CONTEXTO DEL HOST` section when available; it **never asks** — a read-only dashboard — and silently omits the section on degrade); **`/resume`** **composes `/status`** and escalates a host-only finding **to a proposal only when the workline level does not explain the pending work** (the spec's fixed order governs the proposals, not the summary), optionally using the *deep* tier or asking as fallback. It is *enhancement*, never a `must`.
73
75
 
@@ -102,9 +104,14 @@ Each command's **contract** (Flow, Trigger, Input, Mode, …) is agnostic. The *
102
104
  | OpenCode | `~/.opencode/command/w/<cmd>.md` | `/w/<cmd>` |
103
105
  | Crush | `~/.crush/commands/w/<cmd>.md` (plain body — Crush parses no frontmatter) | palette `user:w:<cmd>` |
104
106
  | Warp/Oz | synthesized skill `w-<cmd>/SKILL.md` next to the bundle (Warp lists skills as `/name`) | `/w-<cmd>` |
107
+ | Kimi Code | synthesized skill `~/.kimi-code/skills/w-<cmd>/SKILL.md` (reads no commands dir; verified vs v0.29.2) | `/skill:w-<cmd>` |
105
108
 
106
109
  *Skill-as-command* (a synthesized `w-<cmd>` skill whose body is the command, with bundle references rewritten to `../w/…`) is the **universal fallback** for any host without a native commands surface. The loop/role/export manuals are deliberately **not** `SKILL.md` files (`LOOP.md`/`ROLE.md`/`EXPORT.md`/`HARNESS.md`): hosts that scan skill roots **recursively** (Codex ≤6 levels; OpenCode and Crush — which also cross-read `~/.claude/skills` and `~/.agents/skills`) must never index the internals as invocable skills. The contract never changes; the wrapper does (another column).
107
110
 
108
111
  ## Status
109
112
 
110
- Capability model + binding matrix **defined** and **validated** with field research (**Jul-2026**, against official docs). Coverage: **6 real harnesses** (families; Warp/Oz counts as one, like Gemini/Antigravity): Claude Code, Codex, Gemini/Antigravity, OpenCode, Crush, Warp/Oz — all support `SKILL.md` (anchor `.agents/skills`) + MCP + `AGENTS.md`; deterministic enforcement on Claude/Codex/Gemini/OpenCode, advisory + coarse allow/deny on Crush/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.
113
+ Capability model + binding matrix **defined** and **validated** with field research (**Jul-2026**, against official docs and, for Kimi Code, the shipped binary).
114
+
115
+ 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. The anti-drift guards cover the CODE projections (TUI, install targets, doctor, detection) — this table is prose and no test reads it, so it is kept in step by review, not by a check. 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.
116
+
117
+ All support `SKILL.md` (anchor `.agents/skills`) + MCP + `AGENTS.md`; deterministic enforcement on Claude/Codex/Kimi/Gemini/OpenCode, advisory + coarse allow/deny on Crush/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.