@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.
Files changed (43) hide show
  1. package/dist/application/resume-service.js +45 -114
  2. package/dist/application/resume-service.js.map +1 -1
  3. package/dist/application/self/codex-plugin.js +87 -0
  4. package/dist/application/self/codex-plugin.js.map +1 -0
  5. package/dist/application/self/hooks-dialect.js +18 -0
  6. package/dist/application/self/hooks-dialect.js.map +1 -0
  7. package/dist/application/self/hooks-json.js +226 -0
  8. package/dist/application/self/hooks-json.js.map +1 -0
  9. package/dist/application/self/hooks-toml.js +4 -11
  10. package/dist/application/self/hooks-toml.js.map +1 -1
  11. package/dist/application/self/host-states.js +64 -3
  12. package/dist/application/self/host-states.js.map +1 -1
  13. package/dist/application/self/install-hooks.js +291 -37
  14. package/dist/application/self/install-hooks.js.map +1 -1
  15. package/dist/application/self/install-skill.js +7 -2
  16. package/dist/application/self/install-skill.js.map +1 -1
  17. package/dist/application/self/opencode-plugin.js +167 -0
  18. package/dist/application/self/opencode-plugin.js.map +1 -0
  19. package/dist/application/self/uninstall.js +147 -1
  20. package/dist/application/self/uninstall.js.map +1 -1
  21. package/dist/application/status-service.js +1 -0
  22. package/dist/application/status-service.js.map +1 -1
  23. package/dist/application/workline-index-service.js +143 -28
  24. package/dist/application/workline-index-service.js.map +1 -1
  25. package/dist/cli/commands/resume.js +20 -3
  26. package/dist/cli/commands/resume.js.map +1 -1
  27. package/dist/cli/commands/status.js +57 -8
  28. package/dist/cli/commands/status.js.map +1 -1
  29. package/dist/cli/tui/app.js +1 -1
  30. package/dist/cli/tui/app.js.map +1 -1
  31. package/dist/cli/tui/components/host-admin-section.js +53 -21
  32. package/dist/cli/tui/components/host-admin-section.js.map +1 -1
  33. package/dist/cli/tui/tabs/mcp-tab.js +20 -5
  34. package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
  35. package/dist/cli/tui/tabs/workflow-tab.js +2 -2
  36. package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
  37. package/dist/domain/harnesses.js +166 -10
  38. package/dist/domain/harnesses.js.map +1 -1
  39. package/package.json +1 -1
  40. package/skills/w/commands/resume.md +19 -12
  41. package/skills/w/commands/status.md +9 -5
  42. package/skills/w/commands/workspace-init.md +6 -6
  43. package/skills/w/harness/HARNESS.md +10 -6
@@ -22,6 +22,7 @@
22
22
  // and a hook that silently never fires, so the matcher is dropped for those
23
23
  // events — and an absent matcher means "always", which is exactly what that
24
24
  // Claude matcher expresses.
25
+ import { isOurCommand } from "./hooks-dialect.js";
25
26
  export const MANAGED_BLOCK_BEGIN = "# >>> agent-workflow (Workline) managed hooks — do not edit inside this block >>>";
26
27
  export const MANAGED_BLOCK_END = "# <<< agent-workflow (Workline) managed hooks <<<";
27
28
  /** Events whose matcher value is the tool name, so a tool-name regex transfers as-is. */
@@ -157,14 +158,11 @@ export function renderManagedHooksBlock(entries) {
157
158
  return `${lines.join("\n")}\n`;
158
159
  }
159
160
  /**
160
- * OWNERSHIP IS BY DATA, NOT BY COMMENT.
161
- *
162
- * The marked block is for humans reading the file. It cannot be the identity of
161
+ * The marked block is for humans reading the file — it cannot be the identity of
163
162
  * our entries, because Kimi Code rewrites its own `config.toml` whenever it
164
163
  * touches a setting (`kimi provider remove`, an OAuth refresh, …): it
165
- * re-serializes the parsed config, which keeps the `hooks` array and drops
166
- * EVERY comment our markers included. Identity therefore rests on the same
167
- * signal the Claude side uses: every command we install invokes this CLI.
164
+ * re-serializes the parsed config, which keeps the `hooks` array and drops EVERY
165
+ * comment, our markers included. Identity therefore rests on `isOurCommand`.
168
166
  *
169
167
  * Without this, one routine Kimi command left our hooks armed and unremovable,
170
168
  * and every reinstall appended a duplicate set.
@@ -175,11 +173,6 @@ export function renderManagedHooksBlock(entries) {
175
173
  const OUR_COMMAND_RE = /^\s*command\s*=\s*["']agent-workflow(?=[\s"']|$)/;
176
174
  const HOOK_TABLE_HEADER = "[[hooks]]";
177
175
  const TOML_KEY_RE = /^\s*[A-Za-z_][\w-]*\s*=/;
178
- /** True when this command line invokes THIS CLI (and not a lookalike binary). */
179
- export function isOurCommand(command) {
180
- const trimmed = command.trimStart();
181
- return trimmed === "agent-workflow" || trimmed.startsWith("agent-workflow ");
182
- }
183
176
  /**
184
177
  * Removes every `[[hooks]]` entry that is OURS — wherever it sits and whether or
185
178
  * not our comment markers survived — plus the markers themselves. Anything else
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-toml.js","sourceRoot":"","sources":["../../../src/application/self/hooks-toml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks-toml.js","sourceRoot":"","sources":["../../../src/application/self/hooks-toml.ts"],"names":[],"mappings":"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"}
@@ -16,13 +16,15 @@
16
16
  // runtime and must never inflate a host count (spec 010, criterion 3).
17
17
  import { dirname, join } from "node:path";
18
18
  import { parse as parseToml } from "smol-toml";
19
- import { HARNESSES, SHARED_SKILL_DESTINATIONS, verificationFor, } from "../../domain/harnesses.js";
19
+ import { HARNESSES, SHARED_SKILL_DESTINATIONS, hookCoverage, hookMechanism, verificationFor, } from "../../domain/harnesses.js";
20
20
  import { crushGlobalMcpFile, opencodeGlobalMcpFile } from "../mcp-host-paths.js";
21
21
  import { resolveWarpGlobalMcpPath } from "../multiroot/warp.js";
22
+ import { countOurAgyHooks, countOurCrushHooks, hooksTemplateToAgy, hooksTemplateToCrush, } from "./hooks-json.js";
22
23
  import { countOurHookEntries, hooksTemplateToToml } from "./hooks-toml.js";
23
24
  import { resolveBundledHookTemplate } from "./install-hooks.js";
24
25
  import { SKILL_DIR_NAME, USER_COMMANDS_BY_TARGET } from "./install-skill.js";
25
26
  import { COMMAND_SKILLS_HOSTS, TARGET_ROOTS } from "./install-targets.js";
27
+ import { buildOpencodePlugin } from "./opencode-plugin.js";
26
28
  /** Upper bound for a single `--version` call. Probes run in parallel across hosts. */
27
29
  const RUNTIME_PROBE_TIMEOUT_MS = 2500;
28
30
  function expandHome(path, home) {
@@ -164,11 +166,18 @@ export function capabilitiesFor(spec) {
164
166
  spec.hooks === null
165
167
  ? { id: "hooks", status: "unsupported", detail: "this host has no hook system" }
166
168
  : spec.hooks.managed
167
- ? { id: "hooks", status: "native", detail: `installed into ${spec.hooks.mechanism}` }
169
+ ? {
170
+ id: "hooks",
171
+ status: "native",
172
+ // The coverage rides along even here: claude carries all five, kimi
173
+ // carries PostCompact with a handler missing, and "installed" alone
174
+ // would read as parity between the two.
175
+ detail: `installed into ${hookMechanism(spec.hooks)} — ${hookCoverage(spec.hooks)}`,
176
+ }
168
177
  : {
169
178
  id: "hooks",
170
179
  status: "degraded",
171
- detail: `host supports hooks (${spec.hooks.mechanism}); Workline does not install them here the CLI commands stay callable`,
180
+ detail: `host supports hooks (${hookMechanism(spec.hooks)}) — ${hookCoverage(spec.hooks)}; ${notManagedHere(spec)}`,
172
181
  },
173
182
  spec.mcpHostId === null
174
183
  ? {
@@ -179,6 +188,23 @@ export function capabilitiesFor(spec) {
179
188
  : { id: "mcp", status: "native", detail: `written to its ${spec.mcpHostId} MCP config` },
180
189
  ];
181
190
  }
191
+ /**
192
+ * Why Workline does not arm this host's hooks, and what it does instead.
193
+ *
194
+ * Codex is the one host with a second route: a plugin bundle whose hooks skip its
195
+ * per-hook trust review. The bundle is generated, never installed — codex takes
196
+ * plugins through a marketplace — so the state says "generated, not armed" and
197
+ * stops there. Every other unmanaged host gets the plain answer.
198
+ */
199
+ function notManagedHere(spec) {
200
+ if (spec.id === "codex") {
201
+ return "Workline generates its plugin bundle instead ('aw self install-hooks --target codex'), which is NOT armed: installing a codex plugin goes through a marketplace and is yours to run";
202
+ }
203
+ if (spec.id === "opencode") {
204
+ return "Workline generates its plugin module instead ('aw self install-hooks --target opencode'), declared in opencode.json: the tool guards travel, the session and compaction hooks do not";
205
+ }
206
+ return "Workline does not install them here — the CLI commands stay callable";
207
+ }
182
208
  /**
183
209
  * One line for what a human boundary really does here.
184
210
  *
@@ -259,6 +285,14 @@ const HOOKS_ARMED_PROBES = {
259
285
  const path = join(home, ".claude", "settings.json");
260
286
  return { armed: await claudeHooksArmed(ctx, path), path };
261
287
  },
288
+ crush: async (ctx, home) => {
289
+ const path = crushGlobalMcpFile(home);
290
+ return { armed: (await countJsonHooks(ctx, path, countOurCrushHooks)) > 0, path };
291
+ },
292
+ gemini: async (ctx, home) => {
293
+ const path = join(home, ".agents", "hooks.json");
294
+ return { armed: (await countJsonHooks(ctx, path, countOurAgyHooks)) > 0, path };
295
+ },
262
296
  kimi: async (ctx, home) => {
263
297
  // Read through a real TOML parse, NOT by looking for our comment markers:
264
298
  // Kimi rewrites this file on its own and drops every comment while keeping
@@ -275,6 +309,26 @@ const HOOKS_ARMED_PROBES = {
275
309
  }
276
310
  },
277
311
  };
312
+ /**
313
+ * Our entries in a JSON host config, read through a real parse.
314
+ *
315
+ * Zero on an absent or unreadable file: "we cannot tell" and "they are not
316
+ * armed" look the same to a probe, and claiming armed on a file nobody could
317
+ * read is the one answer that would be a lie.
318
+ */
319
+ async function countJsonHooks(ctx, path, count) {
320
+ if (!(await ctx.fs.exists(path)))
321
+ return 0;
322
+ try {
323
+ const parsed = JSON.parse(await ctx.fs.readText(path));
324
+ return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)
325
+ ? count(parsed)
326
+ : 0;
327
+ }
328
+ catch {
329
+ return 0;
330
+ }
331
+ }
278
332
  /**
279
333
  * A non-empty `hooks{}` is NOT enough: the user may keep hooks of their own.
280
334
  * Ours are the entries whose command invokes this CLI.
@@ -315,7 +369,14 @@ const HOOK_TEMPLATE_LOSSES = {
315
369
  ...degraded.map((d) => `${d.event}: ${d.reason}`),
316
370
  ];
317
371
  },
372
+ crush: (template) => skipLines(hooksTemplateToCrush(template).skipped),
373
+ gemini: (template) => skipLines(hooksTemplateToAgy(template).skipped),
374
+ opencode: (template) => skipLines(buildOpencodePlugin(template).skipped),
318
375
  };
376
+ /** The four events neither JSON dialect carries, one line each. */
377
+ function skipLines(skipped) {
378
+ return skipped.map((s) => `${s.event}: skipped — ${s.reason}`);
379
+ }
319
380
  /**
320
381
  * What each managed host cannot carry from the bundled template.
321
382
  *
@@ -1 +1 @@
1
- {"version":3,"file":"host-states.js","sourceRoot":"","sources":["../../../src/application/self/host-states.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-states.js","sourceRoot":"","sources":["../../../src/application/self/host-states.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,14 @@ import { copyFile } from "node:fs/promises";
2
2
  import { dirname, join } from "node:path";
3
3
  import { isDeepStrictEqual } from "node:util";
4
4
  import { parse as parseToml } from "smol-toml";
5
+ import { readPackageVersion } from "../../runtime/version.js";
6
+ import { crushGlobalMcpFile, opencodeGlobalMcpFile } from "../mcp-host-paths.js";
7
+ import { CODEX_PLUGIN_DIR, buildCodexPluginBundle } from "./codex-plugin.js";
8
+ import { AGY_HOOK_NAME, hooksTemplateToAgy, hooksTemplateToCrush, isOurHookEntry, } from "./hooks-json.js";
5
9
  import { auditHooksSection, hooksTemplateToToml, upsertManagedHooksBlock } from "./hooks-toml.js";
6
10
  import { INSTALL_TARGETS, SKILL_DIR_NAME, findUpward, } from "./install-skill.js";
7
11
  import { HOOKS_MANAGED_TARGETS } from "./install-targets.js";
12
+ import { OPENCODE_PLUGIN_FILE, buildOpencodePlugin, declareOpencodePlugin, } from "./opencode-plugin.js";
8
13
  // Every install target is a valid --target; hooks merge-into-config is only
9
14
  // implemented for claude, so the rest resolve to an explanatory "unsupported"
10
15
  // result (not a generic INVALID_TARGET). Derived from INSTALL_TARGETS so a new
@@ -34,6 +39,17 @@ export async function selfInstallHooks(args, ctx, resolveTemplate = resolveBundl
34
39
  };
35
40
  }
36
41
  const target = targetArg;
42
+ // Codex is not a managed host and is not an unsupported one either: its plugin
43
+ // route produces a real artifact that only the PERSON can install. Placed
44
+ // before the managed check so it is not swallowed by the "unsupported" answer.
45
+ if (target === "codex" || target === "opencode") {
46
+ const loaded = await loadTemplate(args, ctx, resolveTemplate);
47
+ if ("error" in loaded)
48
+ return loaded.error;
49
+ return target === "codex"
50
+ ? generateCodexPlugin(ctx, target, loaded.template, dryRun)
51
+ : installOpencodePlugin(ctx, target, loaded.template, dryRun);
52
+ }
37
53
  if (!HOOKS_MANAGED_TARGETS.has(target)) {
38
54
  return {
39
55
  ok: true,
@@ -49,54 +65,70 @@ export async function selfInstallHooks(args, ctx, resolveTemplate = resolveBundl
49
65
  exitCode: 0,
50
66
  };
51
67
  }
52
- const templatePathArg = args.values.get("template");
53
- const templatePath = templatePathArg ?? (await resolveTemplate());
68
+ const loaded = await loadTemplate(args, ctx, resolveTemplate);
69
+ if ("error" in loaded)
70
+ return loaded.error;
71
+ return installHooksFor(target, ctx, loaded.template, dryRun);
72
+ }
73
+ /** The bundled template, resolved and validated, or the failure that stops the run. */
74
+ async function loadTemplate(args, ctx, resolveTemplate) {
75
+ const fail = (code, message) => ({
76
+ error: { ok: false, error: { code, message }, exitCode: 1 },
77
+ });
78
+ const templatePath = args.values.get("template") ?? (await resolveTemplate());
54
79
  if (templatePath === null) {
55
- return {
56
- ok: false,
57
- error: {
58
- code: "TEMPLATE_NOT_FOUND",
59
- message: "hooks.template.json not found in bundled skill location. Pass --template <path> to override.",
60
- },
61
- exitCode: 1,
62
- };
80
+ return fail("TEMPLATE_NOT_FOUND", "hooks.template.json not found in bundled skill location. Pass --template <path> to override.");
63
81
  }
64
82
  if (!(await ctx.fs.exists(templatePath))) {
65
- return {
66
- ok: false,
67
- error: {
68
- code: "TEMPLATE_NOT_FOUND",
69
- message: `hooks template not found at ${templatePath}.`,
70
- },
71
- exitCode: 1,
72
- };
83
+ return fail("TEMPLATE_NOT_FOUND", `hooks template not found at ${templatePath}.`);
73
84
  }
74
- const templateText = await ctx.fs.readText(templatePath);
75
85
  let template;
76
86
  try {
77
- template = JSON.parse(templateText);
87
+ template = JSON.parse(await ctx.fs.readText(templatePath));
78
88
  }
79
89
  catch (err) {
80
- return {
81
- ok: false,
82
- error: {
83
- code: "TEMPLATE_INVALID_JSON",
84
- message: `hooks template at ${templatePath} is invalid JSON: ${err.message}`,
85
- },
86
- exitCode: 1,
87
- };
90
+ return fail("TEMPLATE_INVALID_JSON", `hooks template at ${templatePath} is invalid JSON: ${err.message}`);
88
91
  }
89
92
  if (!isHooksTemplate(template)) {
90
- return {
91
- ok: false,
92
- error: {
93
- code: "TEMPLATE_INVALID_SCHEMA",
94
- message: `hooks template at ${templatePath} missing 'hooks' top-level key.`,
95
- },
96
- exitCode: 1,
97
- };
93
+ return fail("TEMPLATE_INVALID_SCHEMA", `hooks template at ${templatePath} missing 'hooks' top-level key.`);
98
94
  }
99
- return installHooksFor(target, ctx, template, dryRun);
95
+ return { template };
96
+ }
97
+ /**
98
+ * Codex: write the plugin bundle, and say plainly that it is not armed.
99
+ *
100
+ * The status is `generated`, never `installed`: the two `codex plugin` commands
101
+ * that arm it are the person's, and no `trusted_hash` is written here or
102
+ * anywhere else — forging one would forge their security approval.
103
+ */
104
+ async function generateCodexPlugin(ctx, target, template, dryRun) {
105
+ const root = join(ctx.env.homeDir(), ...CODEX_PLUGIN_DIR);
106
+ const bundle = buildCodexPluginBundle(template, readPackageVersion());
107
+ if (!dryRun) {
108
+ for (const [relative, contents] of Object.entries(bundle.files)) {
109
+ const path = join(root, relative);
110
+ await ctx.fs.mkdirp(dirname(path));
111
+ await ctx.fs.writeText(path, contents);
112
+ }
113
+ }
114
+ return {
115
+ ok: true,
116
+ data: {
117
+ status: dryRun ? "dry-run" : "generated",
118
+ target,
119
+ config_path: root,
120
+ events_installed: Object.keys(template.hooks),
121
+ events_already_present: [],
122
+ backup_path: null,
123
+ warning: [
124
+ `The bundle was written to ${root} and is NOT armed.`,
125
+ "Codex installs plugins through a marketplace, so arming it is yours to run:",
126
+ bundle.install_commands.map((c) => `\`${c}\``).join(" then "),
127
+ "Its hooks skip codex's per-hook trust review because they ship inside a plugin; nothing here writes a trusted_hash.",
128
+ ].join(" "),
129
+ },
130
+ exitCode: 0,
131
+ };
100
132
  }
101
133
  /**
102
134
  * Per-host hook installers. A host in `HOOKS_MANAGED_TARGETS` MUST have one —
@@ -106,6 +138,8 @@ export async function selfInstallHooks(args, ctx, resolveTemplate = resolveBundl
106
138
  const HOOK_INSTALLERS = {
107
139
  claude: installClaudeHooks,
108
140
  kimi: installKimiHooks,
141
+ crush: installCrushHooks,
142
+ gemini: installAgyHooks,
109
143
  };
110
144
  /** Managed targets with no installer wired. Must be empty. */
111
145
  export function hookInstallerCoverage() {
@@ -328,6 +362,226 @@ async function installClaudeHooks(ctx, target, template, dryRun) {
328
362
  exitCode: 0,
329
363
  };
330
364
  }
365
+ /**
366
+ * Crush: JSON merge into its own `crush.json` → `hooks`.
367
+ *
368
+ * The file is the SAME one its MCP servers live in, so the merge is per key and
369
+ * never a rewrite: everything the person configured — models, lsp, mcp, and any
370
+ * hook of their own — is read, kept and written back beside ours.
371
+ */
372
+ async function installCrushHooks(ctx, target, template, dryRun) {
373
+ const configPath = crushGlobalMcpFile(ctx.env.homeDir());
374
+ const read = await readJsonConfig(ctx, configPath, "crush.json");
375
+ if ("error" in read)
376
+ return read.error;
377
+ const { emitted, skipped } = hooksTemplateToCrush(template);
378
+ const warning = skipNotice(skipped, "Crush");
379
+ const existingHooks = isRecord(read.data.hooks) ? read.data.hooks : {};
380
+ const merged = { ...existingHooks };
381
+ const events = [];
382
+ for (const [event, ours] of Object.entries(emitted)) {
383
+ const theirs = Array.isArray(existingHooks[event]) ? existingHooks[event] : [];
384
+ // Ours replace ours, never theirs: a reinstall must not append a second copy,
385
+ // and a hook the person wrote is not ours to drop.
386
+ const kept = theirs.filter((entry) => !isOurHookEntry(entry));
387
+ const next = [...kept, ...ours];
388
+ if (isDeepStrictEqual(theirs, next))
389
+ continue;
390
+ merged[event] = next;
391
+ events.push(event);
392
+ }
393
+ return writeMergedConfig(ctx, {
394
+ target,
395
+ configPath,
396
+ dryRun,
397
+ changed: events,
398
+ unchanged: events.length === 0 ? Object.keys(emitted) : [],
399
+ next: { ...read.data, hooks: merged },
400
+ warning,
401
+ });
402
+ }
403
+ /**
404
+ * agy: one named hook in `~/.agents/hooks.json`.
405
+ *
406
+ * `.agents/` is the customization root agy's own doc names, and the user-global
407
+ * one is NOT verified — which is why the catalog says so and the install result
408
+ * repeats it. Writing the artifact is what this can prove; that a running agy
409
+ * loads it is an operator's observation, never this command's claim.
410
+ */
411
+ async function installAgyHooks(ctx, target, template, dryRun) {
412
+ const configPath = join(ctx.env.homeDir(), ".agents", "hooks.json");
413
+ const read = await readJsonConfig(ctx, configPath, "hooks.json");
414
+ if ("error" in read)
415
+ return read.error;
416
+ const { emitted, skipped } = hooksTemplateToAgy(template);
417
+ const notices = [skipNotice(skipped, "agy")];
418
+ notices.push(`Written to ${configPath}. agy documents its customization root as the workspace's .agents/; whether it also reads a user-global one is NOT verified here — confirm it in a running host before relying on it.`);
419
+ const warning = notices.filter((n) => n !== undefined).join(" ");
420
+ if (emitted === null) {
421
+ return {
422
+ ok: true,
423
+ data: {
424
+ status: "noop",
425
+ target,
426
+ config_path: configPath,
427
+ events_installed: [],
428
+ events_already_present: [],
429
+ backup_path: null,
430
+ warning,
431
+ },
432
+ exitCode: 0,
433
+ };
434
+ }
435
+ const existing = read.data[AGY_HOOK_NAME];
436
+ const already = isDeepStrictEqual(existing, emitted);
437
+ return writeMergedConfig(ctx, {
438
+ target,
439
+ configPath,
440
+ dryRun,
441
+ changed: already ? [] : Object.keys(emitted),
442
+ unchanged: already ? Object.keys(emitted) : [],
443
+ next: { ...read.data, [AGY_HOOK_NAME]: emitted },
444
+ warning,
445
+ });
446
+ }
447
+ function skipNotice(skipped, host) {
448
+ if (skipped.length === 0)
449
+ return undefined;
450
+ return `Not expressible in ${host} and therefore skipped: ${skipped
451
+ .map((s) => `${s.event} (${s.reason})`)
452
+ .join("; ")}.`;
453
+ }
454
+ /** A host config read as JSON, or the failure that must stop the install. */
455
+ async function readJsonConfig(ctx, path, label) {
456
+ if (!(await ctx.fs.exists(path)))
457
+ return { data: {} };
458
+ const text = await ctx.fs.readText(path);
459
+ if (text.trim().length === 0)
460
+ return { data: {} };
461
+ try {
462
+ const parsed = JSON.parse(text);
463
+ return { data: isRecord(parsed) ? parsed : {} };
464
+ }
465
+ catch (err) {
466
+ return {
467
+ error: {
468
+ ok: false,
469
+ error: {
470
+ code: "SETTINGS_INVALID_JSON",
471
+ message: `${path} is invalid ${label}: ${err.message}. Fix manually before retrying.`,
472
+ },
473
+ exitCode: 1,
474
+ },
475
+ };
476
+ }
477
+ }
478
+ /** The write half both JSON dialects share: noop, dry-run, or backup-then-write. */
479
+ async function writeMergedConfig(ctx, write) {
480
+ const base = {
481
+ target: write.target,
482
+ config_path: write.configPath,
483
+ ...(write.warning === undefined ? {} : { warning: write.warning }),
484
+ };
485
+ if (write.changed.length === 0) {
486
+ return {
487
+ ok: true,
488
+ data: {
489
+ ...base,
490
+ status: "noop",
491
+ events_installed: [],
492
+ events_already_present: write.unchanged,
493
+ backup_path: null,
494
+ },
495
+ exitCode: 0,
496
+ };
497
+ }
498
+ if (write.dryRun) {
499
+ return {
500
+ ok: true,
501
+ data: {
502
+ ...base,
503
+ status: "dry-run",
504
+ events_installed: write.changed,
505
+ events_already_present: write.unchanged,
506
+ backup_path: null,
507
+ },
508
+ exitCode: 0,
509
+ };
510
+ }
511
+ await ctx.fs.mkdirp(dirname(write.configPath));
512
+ const backup = await tryBackup(write.configPath, ctx);
513
+ await ctx.fs.writeText(write.configPath, `${JSON.stringify(write.next, null, 2)}\n`);
514
+ return {
515
+ ok: true,
516
+ data: {
517
+ ...base,
518
+ status: "installed",
519
+ events_installed: write.changed,
520
+ events_already_present: write.unchanged,
521
+ backup_path: backup,
522
+ },
523
+ exitCode: 0,
524
+ };
525
+ }
526
+ /**
527
+ * opencode: write the plugin module and declare it in `opencode.json`.
528
+ *
529
+ * Unlike codex's bundle this one IS armed — opencode loads what sits in its
530
+ * plugin dir — so the status is `installed`. What it does NOT carry is the whole
531
+ * template: only `tool.execute.before` exists here, and the guard whose matcher
532
+ * cannot be bridged to a Claude-shaped payload is reported rather than written.
533
+ */
534
+ async function installOpencodePlugin(ctx, target, template, dryRun) {
535
+ const configPath = opencodeGlobalMcpFile(ctx.env.homeDir());
536
+ const pluginPath = join(dirname(configPath), "plugin", OPENCODE_PLUGIN_FILE);
537
+ const read = await readJsonConfig(ctx, configPath, "opencode.json");
538
+ if ("error" in read)
539
+ return read.error;
540
+ const plugin = buildOpencodePlugin(template);
541
+ const existing = (await ctx.fs.exists(pluginPath)) ? await ctx.fs.readText(pluginPath) : null;
542
+ const config = declareOpencodePlugin(read.data, pluginPath);
543
+ const changed = existing !== plugin.source || config !== read.data;
544
+ const warning = [
545
+ skipNotice(plugin.skipped, "the opencode plugin API"),
546
+ `The module was written to ${pluginPath}; the user-global plugin dir is derived from opencode's global config dir, and its documented one is the workspace's .opencode/plugin/.`,
547
+ ]
548
+ .filter((n) => n !== undefined)
549
+ .join(" ");
550
+ if (!changed) {
551
+ return {
552
+ ok: true,
553
+ data: {
554
+ status: "noop",
555
+ target,
556
+ config_path: pluginPath,
557
+ events_installed: [],
558
+ events_already_present: ["PreToolUse"],
559
+ backup_path: null,
560
+ warning,
561
+ },
562
+ exitCode: 0,
563
+ };
564
+ }
565
+ if (!dryRun) {
566
+ await ctx.fs.mkdirp(dirname(pluginPath));
567
+ await ctx.fs.writeText(pluginPath, plugin.source);
568
+ await ctx.fs.mkdirp(dirname(configPath));
569
+ await ctx.fs.writeText(configPath, `${JSON.stringify(config, null, 2)}\n`);
570
+ }
571
+ return {
572
+ ok: true,
573
+ data: {
574
+ status: dryRun ? "dry-run" : "installed",
575
+ target,
576
+ config_path: pluginPath,
577
+ events_installed: ["PreToolUse"],
578
+ events_already_present: [],
579
+ backup_path: null,
580
+ warning,
581
+ },
582
+ exitCode: 0,
583
+ };
584
+ }
331
585
  async function tryBackup(path, ctx) {
332
586
  if (!(await ctx.fs.exists(path)))
333
587
  return null;