@tacuchi/agent-workflow-cli 14.3.0 → 14.5.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 (77) hide show
  1. package/dist/adapters/node-file-system.d.ts +2 -0
  2. package/dist/adapters/node-file-system.d.ts.map +1 -1
  3. package/dist/adapters/node-file-system.js +7 -2
  4. package/dist/adapters/node-file-system.js.map +1 -1
  5. package/dist/adapters/node-process.d.ts +3 -0
  6. package/dist/adapters/node-process.d.ts.map +1 -1
  7. package/dist/adapters/node-process.js +19 -0
  8. package/dist/adapters/node-process.js.map +1 -1
  9. package/dist/application/dev-only-services.d.ts.map +1 -1
  10. package/dist/application/dev-only-services.js +13 -12
  11. package/dist/application/dev-only-services.js.map +1 -1
  12. package/dist/application/logging/log-events.d.ts +12 -0
  13. package/dist/application/logging/log-events.d.ts.map +1 -0
  14. package/dist/application/logging/log-events.js +30 -0
  15. package/dist/application/logging/log-events.js.map +1 -0
  16. package/dist/application/logging/logger.d.ts +32 -0
  17. package/dist/application/logging/logger.d.ts.map +1 -0
  18. package/dist/application/logging/logger.js +45 -0
  19. package/dist/application/logging/logger.js.map +1 -0
  20. package/dist/application/mcp-host-writer.d.ts.map +1 -1
  21. package/dist/application/mcp-host-writer.js +102 -2
  22. package/dist/application/mcp-host-writer.js.map +1 -1
  23. package/dist/application/open-external.d.ts +21 -0
  24. package/dist/application/open-external.d.ts.map +1 -0
  25. package/dist/application/open-external.js +26 -0
  26. package/dist/application/open-external.js.map +1 -0
  27. package/dist/application/paths-service.d.ts +7 -0
  28. package/dist/application/paths-service.d.ts.map +1 -1
  29. package/dist/application/paths-service.js +12 -0
  30. package/dist/application/paths-service.js.map +1 -1
  31. package/dist/application/self/clean-legacy.d.ts.map +1 -1
  32. package/dist/application/self/clean-legacy.js +14 -0
  33. package/dist/application/self/clean-legacy.js.map +1 -1
  34. package/dist/application/self/detect-hosts.d.ts.map +1 -1
  35. package/dist/application/self/detect-hosts.js +19 -3
  36. package/dist/application/self/detect-hosts.js.map +1 -1
  37. package/dist/application/self/install-skill.d.ts +2 -1
  38. package/dist/application/self/install-skill.d.ts.map +1 -1
  39. package/dist/application/self/install-skill.js +28 -1
  40. package/dist/application/self/install-skill.js.map +1 -1
  41. package/dist/application/self/uninstall.d.ts.map +1 -1
  42. package/dist/application/self/uninstall.js +16 -1
  43. package/dist/application/self/uninstall.js.map +1 -1
  44. package/dist/cli/main.js +8 -0
  45. package/dist/cli/main.js.map +1 -1
  46. package/dist/cli/tui/app.js +6 -6
  47. package/dist/cli/tui/app.js.map +1 -1
  48. package/dist/cli/tui/components/logs-section.d.ts +21 -0
  49. package/dist/cli/tui/components/logs-section.d.ts.map +1 -0
  50. package/dist/cli/tui/components/logs-section.js +80 -0
  51. package/dist/cli/tui/components/logs-section.js.map +1 -0
  52. package/dist/cli/tui/data/logs.d.ts +20 -0
  53. package/dist/cli/tui/data/logs.d.ts.map +1 -0
  54. package/dist/cli/tui/data/logs.js +39 -0
  55. package/dist/cli/tui/data/logs.js.map +1 -0
  56. package/dist/cli/tui/hosts.js +7 -7
  57. package/dist/cli/tui/hosts.js.map +1 -1
  58. package/dist/cli/tui/tabs/status-tab.d.ts +8 -4
  59. package/dist/cli/tui/tabs/status-tab.d.ts.map +1 -1
  60. package/dist/cli/tui/tabs/status-tab.js +33 -8
  61. package/dist/cli/tui/tabs/status-tab.js.map +1 -1
  62. package/dist/cli/tui/tui-prefs.d.ts +2 -0
  63. package/dist/cli/tui/tui-prefs.d.ts.map +1 -1
  64. package/dist/cli/tui/tui-prefs.js +1 -0
  65. package/dist/cli/tui/tui-prefs.js.map +1 -1
  66. package/dist/domain/harnesses.d.ts +2 -2
  67. package/dist/domain/harnesses.d.ts.map +1 -1
  68. package/dist/domain/harnesses.js +63 -2
  69. package/dist/domain/harnesses.js.map +1 -1
  70. package/dist/domain/mcp-entry.d.ts +1 -1
  71. package/dist/domain/mcp-entry.d.ts.map +1 -1
  72. package/dist/ports/file-system.d.ts +2 -0
  73. package/dist/ports/file-system.d.ts.map +1 -1
  74. package/dist/ports/process.d.ts +9 -0
  75. package/dist/ports/process.d.ts.map +1 -1
  76. package/package.json +1 -1
  77. package/skills/w/harness/SKILL.md +16 -15
@@ -25,8 +25,14 @@ export const HARNESSES = [
25
25
  },
26
26
  projectMcpPath: ".codex/config.toml",
27
27
  pluginManifest: ".codex-plugin/plugin.json",
28
- pluginHooksDir: "codex-hooks",
29
- skillsDirs: [".codex/skills"],
28
+ // Codex plugin bundles ship hooks at `hooks/hooks.json` in the plugin root
29
+ // (env PLUGIN_ROOT), same layout as Claude's `hooks/`. Verified 2026-07 vs
30
+ // developers.openai.com/codex/hooks.
31
+ pluginHooksDir: "hooks",
32
+ // Codex loads Agent Skills from `.agents/skills` (the open-standard dir,
33
+ // ~/.agents/skills global) — this is primary. `.codex/skills` kept as a
34
+ // secondary for older builds. Verified vs developers.openai.com/codex/skills.
35
+ skillsDirs: [".agents/skills", ".codex/skills"],
30
36
  installTarget: "codex",
31
37
  },
32
38
  {
@@ -70,6 +76,61 @@ export const HARNESSES = [
70
76
  skillsDirs: [".warp/skills", ".agents/skills", ".claude/skills", ".codex/skills"],
71
77
  installTarget: "warp",
72
78
  },
79
+ {
80
+ // Gemini CLI + Antigravity CLI (successor; reuses ~/.gemini/). envMarkers are
81
+ // best-effort (detection also keys off the ~/.gemini config dir); Antigravity
82
+ // markers are treated as a Gemini alias. MCP in settings.json (mcpServers,
83
+ // Claude-compatible shape). Skills = open agentskills standard.
84
+ id: "gemini",
85
+ envMarkers: ["GEMINI_CLI", "GEMINI_SANDBOX", "ANTIGRAVITY", "ANTIGRAVITY_CLI"],
86
+ mcpHostId: "gemini",
87
+ globalMcpPaths: {
88
+ darwin: { stable: "~/.gemini/settings.json" },
89
+ linux: { stable: "~/.gemini/settings.json" },
90
+ win32: { stable: "~/.gemini/settings.json" },
91
+ },
92
+ projectMcpPath: ".gemini/settings.json",
93
+ pluginManifest: null, // Gemini uses Extensions (gemini-extension.json) — Phase 2
94
+ pluginHooksDir: null, // Extension-bundled hooks (BeforeTool) — Phase 2
95
+ skillsDirs: [".agents/skills", ".gemini/skills"],
96
+ installTarget: "gemini",
97
+ },
98
+ {
99
+ // OpenCode (sst/opencode). Config `opencode.json` ($schema); MCP under `mcp`
100
+ // (type "local", command as array, `environment`). Reads .claude/skills and
101
+ // .agents/skills directly. Enforcement via JS plugins (tool.execute.before) — Phase 2.
102
+ id: "opencode",
103
+ envMarkers: ["OPENCODE", "OPENCODE_BIN", "OPENCODE_CONFIG"],
104
+ mcpHostId: "opencode",
105
+ globalMcpPaths: {
106
+ darwin: { stable: "~/.config/opencode/opencode.json" },
107
+ linux: { stable: "~/.config/opencode/opencode.json" },
108
+ win32: { stable: "~/.config/opencode/opencode.json" },
109
+ },
110
+ projectMcpPath: "opencode.json",
111
+ pluginManifest: null, // JS/TS plugins in .opencode/plugin — Phase 2
112
+ pluginHooksDir: null,
113
+ skillsDirs: [".opencode/skills", ".agents/skills", ".claude/skills"],
114
+ installTarget: "opencode",
115
+ },
116
+ {
117
+ // Crush (charmbracelet/crush). Config `crush.json` ($schema charm.land/crush.json);
118
+ // MCP under `mcp` (type "stdio"). Reads .agents/skills + .claude/skills. Hooks are
119
+ // preliminary; enforcement via `allowed_tools` allowlist — Phase 3.
120
+ id: "crush",
121
+ envMarkers: ["CRUSH", "CRUSH_CONFIG"],
122
+ mcpHostId: "crush",
123
+ globalMcpPaths: {
124
+ darwin: { stable: "~/.config/crush/crush.json" },
125
+ linux: { stable: "~/.config/crush/crush.json" },
126
+ win32: { stable: "~/.config/crush/crush.json" },
127
+ },
128
+ projectMcpPath: "crush.json",
129
+ pluginManifest: null,
130
+ pluginHooksDir: null,
131
+ skillsDirs: [".agents/skills", ".crush/skills", ".claude/skills"],
132
+ installTarget: "crush",
133
+ },
73
134
  ];
74
135
  /**
75
136
  * Resolves the global MCP config path for a harness spec.
@@ -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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"}
@@ -1,4 +1,4 @@
1
- export type McpHost = "claude" | "codex" | "warp";
1
+ export type McpHost = "claude" | "codex" | "warp" | "gemini" | "opencode" | "crush";
2
2
  export type McpInstance = string;
3
3
  export type McpEntryName = string;
4
4
  export declare const DEFAULT_MCP_INSTANCES: readonly ["cert", "prod"];
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-entry.d.ts","sourceRoot":"","sources":["../../src/domain/mcp-entry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,eAAO,MAAM,qBAAqB,2BAA4B,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,oBAAoB,GAAG,SAAS,CAAC;AAEtF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,CAAC;AAEnG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACtE,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1D,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAK/D;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAejE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,CAEnE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAY5D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAgB9E"}
1
+ {"version":3,"file":"mcp-entry.d.ts","sourceRoot":"","sources":["../../src/domain/mcp-entry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEpF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,eAAO,MAAM,qBAAqB,2BAA4B,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,oBAAoB,GAAG,SAAS,CAAC;AAEtF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,CAAC;AAEnG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACtE,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1D,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAK/D;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAejE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,CAEnE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAY5D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAgB9E"}
@@ -12,6 +12,8 @@ export interface FileStat {
12
12
  export interface FileSystemPort {
13
13
  readText(path: string): Promise<string>;
14
14
  writeText(path: string, content: string): Promise<void>;
15
+ /** Append `content` to `path`, creating the file and its parent dirs if absent. */
16
+ appendText(path: string, content: string): Promise<void>;
15
17
  /**
16
18
  * Atomically create file with content. Returns `{ created: true }` on success
17
19
  * or `{ created: false }` if path already exists. Used by lock-service to
@@ -1 +1 @@
1
- {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/ports/file-system.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,iGAAiG;IACjG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/ports/file-system.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,mFAAmF;IACnF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,iGAAiG;IACjG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvC"}
@@ -52,6 +52,15 @@ export interface ProcessPort {
52
52
  * pid on Windows; `mode` says which path was taken.
53
53
  */
54
54
  spawnInTerminal(cmd: string, args: string[], opts: SpawnInTerminalOptions): Promise<SpawnInTerminalResult>;
55
+ /**
56
+ * Open a file in an EXTERNAL application — the OS default text editor, or
57
+ * `opts.app` when given — spawned detached so it never captures the TUI's TTY.
58
+ * Best-effort: resolves even if the opener can't be launched (the caller
59
+ * surfaces failure, e.g. checks the file exists first).
60
+ */
61
+ openPath(path: string, opts?: {
62
+ app?: string;
63
+ }): Promise<void>;
55
64
  /**
56
65
  * Terminate a process and its whole tree/group. Best-effort: resolves even if
57
66
  * the process is already gone.
@@ -1 +1 @@
1
- {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/ports/process.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,2HAA2H;IAC3H,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,gJAAgJ;IAChJ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,yGAAyG;IACzG,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,iIAAiI;IACjI,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACxE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD;;;;OAIG;IACH,aAAa,CACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,eAAe,CACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,6EAA6E;IAC7E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC"}
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/ports/process.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,2HAA2H;IAC3H,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,gJAAgJ;IAChJ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,yGAAyG;IACzG,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,iIAAiI;IACjI,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACxE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD;;;;OAIG;IACH,aAAa,CACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC;;;;;;;OAOG;IACH,eAAe,CACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,6EAA6E;IAC7E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tacuchi/agent-workflow-cli",
3
- "version": "14.3.0",
3
+ "version": "14.5.0",
4
4
  "description": "Agnostic runtime CLI for AI development workflows — a stages + loops + artifacts harness. Bundles the universal `w` skill set under `skills/w/` (slash commands `/w:*`: spec-new/spec-refine, plan-new/plan-exec, quick, workspace-init, export-*); `self install --target <host>` copies SKILL + commands + hooks into the host. Pluggable capability skills via `.workflow/skills.toml`. Multi-empresa parametrization via `profile.json` cascade. Namespace auto-detected from any `.<ns>/sessions/` dir in CWD; default `workflow`.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -3,7 +3,7 @@ name: harness
3
3
  description: >-
4
4
  Harness-agnostic capability layer for agent-workflow. Read-and-follow doc (no es
5
5
  invocable por nombre): define el contrato que mantiene a la herramienta agnóstica al
6
- arnés (Claude Code, Codex, opencode, Gemini CLI, genérico) sin renunciar a las
6
+ arnés (Claude Code, Codex, Gemini/Antigravity, OpenCode, Crush, Warp, genérico) sin renunciar a las
7
7
  capacidades ricas de cada uno. Cataloga las capacidades de las que depende el
8
8
  workflow, las liga al mecanismo concreto de cada arnés (binding matrix), y fija los
9
9
  dos principios (capacidad-no-tool · progressive-enhancement). Referenciado desde
@@ -44,20 +44,21 @@ Las capacidades de las que depende el harness, con su fallback universal (lo que
44
44
 
45
45
  ## Harness binding matrix
46
46
 
47
- Mecanismo concreto por arnés (jun-2026; `~` parcial · `?` sin confirmar).
47
+ Mecanismo concreto por arnés (**jul-2026**, verificado contra docs oficiales; `~` parcial). Antigravity CLI reusa las superficies de Gemini (`~/.gemini/`).
48
48
 
49
- | Capability | Claude Code | Codex CLI | opencode | Gemini CLI | Genérico |
50
- |---|---|---|---|---|---|
51
- | command-invocation | `.claude/commands/` (slash) | skills (prompts custom **deprecados**) | `.opencode/commands/` | `.gemini/commands/*.toml` | texto |
52
- | procedure-loading | skills `SKILL.md` | skills `SKILL.md` | skills `SKILL.md` | skills (extensiones) | read-and-follow `.md` |
53
- | structured-choice | `AskUserQuestion` (**solo main-agent**) | — | — | — | markdown numerado |
54
- | compaction | `/compact` | `?` | `?` | `?` | CHECKPOINT + resume |
55
- | subagent-dispatch | `Task` (paralelo) | agents (depth=1) | Explore/Scout | agents | inline |
56
- | persistent-context | `CLAUDE.md` (**no** lee AGENTS.md → symlink) | `AGENTS.md` | `AGENTS.md` | `AGENTS.md`/`GEMINI.md` | `AGENTS.md` |
57
- | external-data | MCP | MCP | MCP | MCP | — |
58
- | dry-run / plan | plan mode (enforced) | `/plan` (prompt, **no** enforced) | Plan agent | plan mode | describir sin escribir |
49
+ | Capability | Claude Code | Codex | Gemini / Antigravity | OpenCode | Crush | Warp | Genérico |
50
+ |---|---|---|---|---|---|---|---|
51
+ | command-invocation | `.claude/commands/` (slash) | slash + skills | `.gemini/commands/*.toml` | `.opencode/command/` | skills user-invocable | Workflows (Drive) | texto |
52
+ | procedure-loading (skills) | `SKILL.md` `.claude/skills` | `SKILL.md` `.agents/skills` | `SKILL.md` (agentskills) | `SKILL.md` `.opencode`+`.claude`+`.agents` | `SKILL.md` `.agents`+`.crush`+`.claude` | `SKILL.md` `.agents`+`.warp`+`.claude` | read-and-follow `.md` |
53
+ | structured-choice | `AskUserQuestion` (**solo main-agent**) | — | — | — | — | — | markdown numerado |
54
+ | compaction | `/compact` | Pre/PostCompact hooks | ~ | `session.compacted` | ~ | ~ | CHECKPOINT + resume |
55
+ | subagent-dispatch | `Task` (paralelo) | `SubagentStart` / agents | agents (`.gemini/agents`) | `.opencode/agent/*.md` | ~ | ~ (cloud agents) | inline |
56
+ | persistent-context | `CLAUDE.md` (**no** lee AGENTS.md → symlink) | `AGENTS.md` | `GEMINI.md` + `AGENTS.md` | `AGENTS.md` | `CRUSH.md` + `AGENTS.md` | `AGENTS.md` (auto) | `AGENTS.md` |
57
+ | external-data (MCP) | `.mcp.json` | `.codex/config.toml` `[mcp_servers]` | `settings.json` `mcpServers` | `opencode.json` `mcp` | `crush.json` `mcp` | `.warp/.mcp.json` (+autodescubre `.mcp.json`) | — |
58
+ | **enforcement (deny tool)** | `PreToolUse` `permissionDecision:deny` / exit 2 | `PreToolUse` (**≈mismo protocolo**) | `BeforeTool` → `decision:deny` / exit 2 | plugin `tool.execute.before` (`throw`) | `allowed_tools` (+ hooks preliminares) | allow/deny lists (**grueso**) | doctrina (git-safe #5) |
59
+ | plugin / dist | `.claude-plugin` + marketplace | `.codex-plugin` + `/plugins` marketplace | Extension `gemini-extension.json` | plugin JS/TS (npm) | MCP + skills + config | Warp Drive | — |
59
60
 
60
- > **Notas (investigación de campo jun-2026):** las **skills `SKILL.md`** son la unidad portable **universal** (las cinco las soportan; Codex deprecó los prompts custom) la doctrina se empaqueta como skill. La **elección estructurada** (`AskUserQuestion`) es **solo de Claude Code y solo del main-agent** → en el resto, `structured-choice` degrada a markdown numerado. El **plan mode** está *enforced* solo en Claude Code/opencode (prompt-level en Codex) → **no se confía para safety**; el git-safe (invariante #5) es propio. **MCP** es universal. El **piso garantizado** (última columna) corre el modelo completo.
61
+ > **Notas (investigación de campo jul-2026):** las **skills `SKILL.md`** son la unidad portable **universal** **los seis** arneses las soportan (Codex las agregó Dic-2025; **`.agents/skills` es el ancla cross-host**, leída por Codex/OpenCode/Crush/Warp). La **elección estructurada** (`AskUserQuestion`) sigue siendo **solo Claude Code / main-agent** → en el resto `structured-choice` degrada a markdown numerado. La **capa de enforcement** (fila nueva) ya **NO es exclusiva de Claude**: Codex + Gemini usan un protocolo casi idéntico (`permissionDecision:deny` / exit 2) y OpenCode bloquea vía `throw` en un plugin JS; Crush/Warp solo ofrecen allow/deny **grueso** (sin lógica custom por comando) → en ellos las convenciones quedan **advisory** + listas allow/deny. El **plan mode** enforced no se confía para safety; el git-safe (invariante #5) es propio. **MCP** es universal (cada host su archivo/clave). El **piso garantizado** (última columna) corre el modelo completo.
61
62
 
62
63
  ## Leverage installed skills
63
64
 
@@ -78,8 +79,8 @@ Patrón probado (Spec Kit, 30+ agentes): **una fuente canónica** + generar/syml
78
79
 
79
80
  ## Command packaging (harness-specific)
80
81
 
81
- El **contrato** de cada comando (Flow, Trigger, Input, Mode, …) es agnóstico. El **archivo** que el arnés ejecuta envuelve ese contrato en su formato nativo: Claude Code = slash-command con frontmatter (`description`, `argument-hint`, `allowed-tools`) + cuerpo que invoca la skill o el `aw` CLI; Codex = skill (los prompts custom en `~/.codex/prompts/` están deprecados); otros, su equivalente. El contrato no cambia; el envoltorio (otra columna). El comportamiento en *dry-run / plan mode* (previsualizar sin escribir) se documenta en el cuerpo del comando cuando aplica.
82
+ El **contrato** de cada comando (Flow, Trigger, Input, Mode, …) es agnóstico. El **archivo** que el arnés ejecuta envuelve ese contrato en su formato nativo: Claude Code = slash-command con frontmatter (`description`, `argument-hint`, `allowed-tools`) + cuerpo que invoca la skill o el `aw` CLI; Codex = slash-command o skill; Gemini/Antigravity = `.gemini/commands/*.toml`; OpenCode = `.opencode/command/*.md`; Crush/Warp = la **skill misma** invocable. El **fallback universal** es *skill-as-command*: como los seis arneses cargan skills, la doctrina siempre corre aunque el host no tenga comandos nativos. El contrato no cambia; el envoltorio (otra columna).
82
83
 
83
84
  ## Status
84
85
 
85
- Modelo de capacidades + matriz de binding **definidos** y **validados** con investigación de campo (jun-2026). El piso universal (`AGENTS.md` + texto + archivos + skills) corre el modelo completo hoy.
86
+ Modelo de capacidades + matriz de binding **definidos** y **validados** con investigación de campo (**jul-2026**, contra docs oficiales). Cobertura **6 arneses reales**: Claude Code, Codex, Gemini/Antigravity, OpenCode, Crush, Warp — todos soportan `SKILL.md` (ancla `.agents/skills`) + MCP + `AGENTS.md`; enforcement determinista en Claude/Codex/Gemini/OpenCode, advisory + allow/deny grueso en Crush/Warp. El CLI (`aw`) implementa el registro (`domain/harnesses.ts`), los writers MCP por-host, `detect-hosts` e `install-skill --target <host>`. El piso universal (`AGENTS.md` + texto + archivos + skills) corre el modelo completo hoy.