@su-record/vibe 4.2.35 → 4.2.36

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 (217) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/dist/cli/common.js +4 -1
  5. package/dist/cli/common.js.map +1 -1
  6. package/dist/cli/heldout.js +10 -4
  7. package/dist/cli/heldout.js.map +1 -1
  8. package/dist/cli/human.js +8 -4
  9. package/dist/cli/human.js.map +1 -1
  10. package/dist/cli/internal.js +37 -24
  11. package/dist/cli/internal.js.map +1 -1
  12. package/dist/cli/ledger.js +67 -0
  13. package/dist/cli/ledger.js.map +1 -0
  14. package/dist/cli/map.js +5 -3
  15. package/dist/cli/map.js.map +1 -1
  16. package/dist/cli/memory.js +104 -74
  17. package/dist/cli/memory.js.map +1 -1
  18. package/dist/cli/risks.js +20 -3
  19. package/dist/cli/risks.js.map +1 -1
  20. package/dist/cli/session.js +4 -2
  21. package/dist/cli/session.js.map +1 -1
  22. package/dist/cli/setup.js +44 -13
  23. package/dist/cli/setup.js.map +1 -1
  24. package/dist/cli/work.js +73 -21
  25. package/dist/cli/work.js.map +1 -1
  26. package/dist/cli.js +18 -6
  27. package/dist/cli.js.map +1 -1
  28. package/dist/core/analyze.js +21 -7
  29. package/dist/core/analyze.js.map +1 -1
  30. package/dist/core/artifact-paths.js +14 -3
  31. package/dist/core/artifact-paths.js.map +1 -1
  32. package/dist/core/capabilities.js +69 -15
  33. package/dist/core/capabilities.js.map +1 -1
  34. package/dist/core/check-authorization.js +37 -0
  35. package/dist/core/check-authorization.js.map +1 -0
  36. package/dist/core/check-process.js +12 -4
  37. package/dist/core/check-process.js.map +1 -1
  38. package/dist/core/check-report.js +66 -0
  39. package/dist/core/check-report.js.map +1 -0
  40. package/dist/core/check.js +59 -71
  41. package/dist/core/check.js.map +1 -1
  42. package/dist/core/checks/changed.js +20 -6
  43. package/dist/core/checks/changed.js.map +1 -1
  44. package/dist/core/checks/eval.js +35 -10
  45. package/dist/core/checks/eval.js.map +1 -1
  46. package/dist/core/checks/file.js +26 -23
  47. package/dist/core/checks/file.js.map +1 -1
  48. package/dist/core/checks/fileRules.js +42 -16
  49. package/dist/core/checks/fileRules.js.map +1 -1
  50. package/dist/core/checks/http.js +35 -34
  51. package/dist/core/checks/http.js.map +1 -1
  52. package/dist/core/checks/packs.js +1 -1
  53. package/dist/core/checks/packs.js.map +1 -1
  54. package/dist/core/checks/review.js +75 -40
  55. package/dist/core/checks/review.js.map +1 -1
  56. package/dist/core/checks/run.js +5 -2
  57. package/dist/core/checks/run.js.map +1 -1
  58. package/dist/core/checks/schema.js +25 -0
  59. package/dist/core/checks/schema.js.map +1 -0
  60. package/dist/core/checks/source.js +11 -6
  61. package/dist/core/checks/source.js.map +1 -1
  62. package/dist/core/config.js +9 -2
  63. package/dist/core/config.js.map +1 -1
  64. package/dist/core/consent.js +24 -16
  65. package/dist/core/consent.js.map +1 -1
  66. package/dist/core/context-notes.js +15 -7
  67. package/dist/core/context-notes.js.map +1 -1
  68. package/dist/core/context.js +24 -12
  69. package/dist/core/context.js.map +1 -1
  70. package/dist/core/conventions.js +22 -9
  71. package/dist/core/conventions.js.map +1 -1
  72. package/dist/core/docs/cfb.js +81 -45
  73. package/dist/core/docs/cfb.js.map +1 -1
  74. package/dist/core/docs/html.js +14 -3
  75. package/dist/core/docs/html.js.map +1 -1
  76. package/dist/core/docs/hwp.js +44 -22
  77. package/dist/core/docs/hwp.js.map +1 -1
  78. package/dist/core/docs/office.js +20 -10
  79. package/dist/core/docs/office.js.map +1 -1
  80. package/dist/core/docs/pdf.js +10 -4
  81. package/dist/core/docs/pdf.js.map +1 -1
  82. package/dist/core/docs/read.js +32 -24
  83. package/dist/core/docs/read.js.map +1 -1
  84. package/dist/core/docs/zip.js +32 -15
  85. package/dist/core/docs/zip.js.map +1 -1
  86. package/dist/core/evidence.js +17 -7
  87. package/dist/core/evidence.js.map +1 -1
  88. package/dist/core/failure-message.js +35 -13
  89. package/dist/core/failure-message.js.map +1 -1
  90. package/dist/core/failure.js +49 -14
  91. package/dist/core/failure.js.map +1 -1
  92. package/dist/core/github.js +3 -1
  93. package/dist/core/github.js.map +1 -1
  94. package/dist/core/handoff.js +20 -7
  95. package/dist/core/handoff.js.map +1 -1
  96. package/dist/core/heldout-run.js +6 -3
  97. package/dist/core/heldout-run.js.map +1 -1
  98. package/dist/core/heldout.js +24 -13
  99. package/dist/core/heldout.js.map +1 -1
  100. package/dist/core/inbox.js +3 -1
  101. package/dist/core/inbox.js.map +1 -1
  102. package/dist/core/inputs.js +6 -3
  103. package/dist/core/inputs.js.map +1 -1
  104. package/dist/core/inspect.js +61 -20
  105. package/dist/core/inspect.js.map +1 -1
  106. package/dist/core/intent.js +35 -13
  107. package/dist/core/intent.js.map +1 -1
  108. package/dist/core/knowledge-find.js +31 -12
  109. package/dist/core/knowledge-find.js.map +1 -1
  110. package/dist/core/knowledge.js +22 -12
  111. package/dist/core/knowledge.js.map +1 -1
  112. package/dist/core/lang.js +5 -2
  113. package/dist/core/lang.js.map +1 -1
  114. package/dist/core/ledger.js +44 -20
  115. package/dist/core/ledger.js.map +1 -1
  116. package/dist/core/locations.js +12 -0
  117. package/dist/core/locations.js.map +1 -0
  118. package/dist/core/map/imports.js +20 -9
  119. package/dist/core/map/imports.js.map +1 -1
  120. package/dist/core/map/index.js +28 -13
  121. package/dist/core/map/index.js.map +1 -1
  122. package/dist/core/map/symbols.js +27 -12
  123. package/dist/core/map/symbols.js.map +1 -1
  124. package/dist/core/output-capture.js +7 -4
  125. package/dist/core/output-capture.js.map +1 -1
  126. package/dist/core/paths.js +2 -1
  127. package/dist/core/paths.js.map +1 -1
  128. package/dist/core/performance.js +43 -17
  129. package/dist/core/performance.js.map +1 -1
  130. package/dist/core/profile.js +6 -3
  131. package/dist/core/profile.js.map +1 -1
  132. package/dist/core/reader.js +32 -16
  133. package/dist/core/reader.js.map +1 -1
  134. package/dist/core/readerSession.js +34 -14
  135. package/dist/core/readerSession.js.map +1 -1
  136. package/dist/core/recent.js +20 -6
  137. package/dist/core/recent.js.map +1 -1
  138. package/dist/core/regress.js +21 -12
  139. package/dist/core/regress.js.map +1 -1
  140. package/dist/core/repair.js +22 -4
  141. package/dist/core/repair.js.map +1 -1
  142. package/dist/core/research-queries.js +85 -0
  143. package/dist/core/research-queries.js.map +1 -0
  144. package/dist/core/research.js +89 -88
  145. package/dist/core/research.js.map +1 -1
  146. package/dist/core/results.js +15 -6
  147. package/dist/core/results.js.map +1 -1
  148. package/dist/core/risk-signals.js +53 -15
  149. package/dist/core/risk-signals.js.map +1 -1
  150. package/dist/core/run-id.js +10 -6
  151. package/dist/core/run-id.js.map +1 -1
  152. package/dist/core/scenarios.js +91 -60
  153. package/dist/core/scenarios.js.map +1 -1
  154. package/dist/core/session.js +3 -2
  155. package/dist/core/session.js.map +1 -1
  156. package/dist/core/size.js +28 -8
  157. package/dist/core/size.js.map +1 -1
  158. package/dist/core/skills.js +66 -28
  159. package/dist/core/skills.js.map +1 -1
  160. package/dist/core/skillsmp.js +26 -12
  161. package/dist/core/skillsmp.js.map +1 -1
  162. package/dist/core/source-basis.js +21 -9
  163. package/dist/core/source-basis.js.map +1 -1
  164. package/dist/core/status.js +26 -13
  165. package/dist/core/status.js.map +1 -1
  166. package/dist/core/table.js +8 -1
  167. package/dist/core/table.js.map +1 -1
  168. package/dist/core/tokens.js +20 -10
  169. package/dist/core/tokens.js.map +1 -1
  170. package/dist/core/tree.js +26 -16
  171. package/dist/core/tree.js.map +1 -1
  172. package/dist/core/verification-plan.js +24 -8
  173. package/dist/core/verification-plan.js.map +1 -1
  174. package/dist/core/verification.js +14 -7
  175. package/dist/core/verification.js.map +1 -1
  176. package/dist/core/view.js +93 -44
  177. package/dist/core/view.js.map +1 -1
  178. package/dist/install/global.js +37 -18
  179. package/dist/install/global.js.map +1 -1
  180. package/dist/install/hooks.js +17 -8
  181. package/dist/install/hooks.js.map +1 -1
  182. package/dist/install/manifest.js +11 -0
  183. package/dist/install/manifest.js.map +1 -0
  184. package/dist/install/mcpb.js +52 -23
  185. package/dist/install/mcpb.js.map +1 -1
  186. package/dist/install/plugin.js +73 -33
  187. package/dist/install/plugin.js.map +1 -1
  188. package/dist/install/project.js +8 -7
  189. package/dist/install/project.js.map +1 -1
  190. package/dist/install/register.js +83 -48
  191. package/dist/install/register.js.map +1 -1
  192. package/dist/install/tree.js +27 -11
  193. package/dist/install/tree.js.map +1 -1
  194. package/dist/install/update.js +46 -20
  195. package/dist/install/update.js.map +1 -1
  196. package/hooks/code-map.cjs +22 -9
  197. package/hooks/journal.cjs +18 -16
  198. package/hooks/knowledge-auto.cjs +55 -21
  199. package/hooks/knowledge-journal.cjs +47 -20
  200. package/hooks/knowledge-projects.cjs +50 -21
  201. package/hooks/knowledge-recall.cjs +16 -6
  202. package/hooks/knowledge-upkeep.cjs +22 -5
  203. package/hooks/locations.cjs +35 -0
  204. package/hooks/notify.js +52 -24
  205. package/hooks/obsidian.cjs +17 -7
  206. package/hooks/private-store.cjs +25 -10
  207. package/hooks/retest.cjs +39 -16
  208. package/hooks/session-context.cjs +30 -13
  209. package/hooks/session-files.cjs +44 -21
  210. package/hooks/session-repair.cjs +26 -11
  211. package/hooks/session-state.cjs +78 -38
  212. package/hooks/session.js +19 -8
  213. package/hooks/slice-command.cjs +38 -17
  214. package/hooks/slice-guard.cjs +20 -6
  215. package/hooks/slice-store.cjs +25 -12
  216. package/mcpb/server/index.js +40 -12
  217. package/package.json +1 -1
@@ -4,39 +4,59 @@ import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import { packageRoot } from '../core/paths.js';
6
6
  import { readJson, writeJson } from '../core/store.js';
7
+ import { PACKAGE_MANIFEST, packageVersion } from './manifest.js';
7
8
  import { installPlugin, MARKETPLACE_NAME, pluginPaths, pluginStatus } from './plugin.js';
9
+ import { CODEX_HOOKS_FILE, CODEX_MANIFEST_FILE, PLUGIN_NAME } from './tree.js';
8
10
  import { newer } from './update.js';
11
+ import { claudeHome, codexHome, codexConfig, codexHooks } from '../core/locations.js';
9
12
  const MARKETPLACE = MARKETPLACE_NAME;
10
13
  const PLUGIN_ID = `vibe@${MARKETPLACE}`;
11
14
  const LEGACY_ID = 'vibe@vibe';
15
+ const LEGACY_MARKETPLACE = 'vibe';
16
+ const PLUGINS_DIR = 'plugins';
17
+ const PACKAGE_NAME = '@su-record/vibe';
18
+ const CLAUDE_CLI = 'claude';
19
+ const CODEX_CLI = 'codex';
20
+ const CLI_RUN_TIMEOUT_MS = 2 * 60 * 1000;
21
+ const CLI_PROBE_TIMEOUT_MS = 15 * 1000;
22
+ const ERROR_TAIL_CHARS = 200;
23
+ const VERSION_DIR = /^\d+\.\d+\.\d+/;
24
+ const INSTALLED_PLUGINS_FILE = 'installed_plugins.json';
25
+ const KNOWN_MARKETPLACES_FILE = 'known_marketplaces.json';
26
+ const CLAUDE_MANIFEST_DIR = '.claude-plugin';
27
+ const MARKETPLACE_FILE = 'marketplace.json';
28
+ const CODEX_HOOK_EVENTS = ['session_start', 'pre_tool_use', 'post_tool_use', 'stop'];
29
+ const CODEX_SNAPSHOT_PREFIX = 'vibe-codex-held-';
30
+ const CLAUDE_SNAPSHOT_PREFIX = 'vibe-claude-held-';
12
31
  function run(cmd, args, home) {
13
- const r = spawnSync(cmd, args, { encoding: 'utf-8', timeout: 120_000, env: { ...process.env, HOME: home, USERPROFILE: home }, shell: process.platform === 'win32' });
32
+ const env = { ...process.env, HOME: home, USERPROFILE: home };
33
+ const r = spawnSync(cmd, args, { encoding: 'utf-8', timeout: CLI_RUN_TIMEOUT_MS, env, shell: process.platform === 'win32' });
14
34
  return { ok: r.status === 0, out: `${r.stdout ?? ''}${r.stderr ?? ''}`.trim() };
15
35
  }
16
36
  export function cliAvailable(name) {
17
37
  if (process.env['VIBE_NO_PLUGIN'])
18
38
  return false;
19
- const r = spawnSync(name, ['--version'], { encoding: 'utf-8', timeout: 15_000, shell: process.platform === 'win32' });
39
+ const r = spawnSync(name, ['--version'], { encoding: 'utf-8', timeout: CLI_PROBE_TIMEOUT_MS, shell: process.platform === 'win32' });
20
40
  return r.status === 0;
21
41
  }
22
- function packageVersion() {
23
- return readJson(path.join(packageRoot(), 'package.json'))?.version ?? '0.0.0';
24
- }
25
42
  function claudeVersion(home, id) {
26
- const doc = readJson(path.join(home, '.claude', 'plugins', 'installed_plugins.json'));
43
+ const doc = readJson(claudeHome(home, PLUGINS_DIR, INSTALLED_PLUGINS_FILE));
27
44
  return doc?.plugins?.[id]?.[0]?.version ?? null;
28
45
  }
29
46
  export function claudePluginVersion(home) {
30
47
  return claudeVersion(home, PLUGIN_ID) ?? claudeVersion(home, LEGACY_ID);
31
48
  }
32
49
  export function claudeNeedsMigration(home) {
33
- const doc = readJson(path.join(home, '.claude', 'plugins', 'installed_plugins.json'));
50
+ const doc = readJson(claudeHome(home, PLUGINS_DIR, INSTALLED_PLUGINS_FILE));
34
51
  return doc?.plugins?.[LEGACY_ID]?.some(p => p.scope === 'user') ?? false;
35
52
  }
53
+ function isMarketplaceManifest(file) {
54
+ return path.basename(file) === MARKETPLACE_FILE && path.basename(path.dirname(file)) === CLAUDE_MANIFEST_DIR;
55
+ }
36
56
  function claudeMarketplacePath(home, name = MARKETPLACE) {
37
- const doc = readJson(path.join(home, '.claude', 'plugins', 'known_marketplaces.json'));
57
+ const doc = readJson(claudeHome(home, PLUGINS_DIR, KNOWN_MARKETPLACES_FILE));
38
58
  const source = doc?.[name]?.source;
39
- if (source?.source === 'file' && source.path && path.basename(source.path) === 'marketplace.json' && path.basename(path.dirname(source.path)) === '.claude-plugin')
59
+ if (source?.source === 'file' && source.path && isMarketplaceManifest(source.path))
40
60
  return path.dirname(path.dirname(source.path));
41
61
  return source?.path ?? null;
42
62
  }
@@ -44,8 +64,8 @@ function claudeMarketplacePath(home, name = MARKETPLACE) {
44
64
  function vibeVersionAt(dir) {
45
65
  if (!dir)
46
66
  return null;
47
- const pkg = readJson(path.join(dir, 'package.json'));
48
- return pkg?.name === '@su-record/vibe' && typeof pkg.version === 'string' ? pkg.version : null;
67
+ const pkg = readJson(path.join(dir, PACKAGE_MANIFEST));
68
+ return pkg?.name === PACKAGE_NAME && typeof pkg.version === 'string' ? pkg.version : null;
49
69
  }
50
70
  /**
51
71
  * Highest version wins: a marketplace that already points at another vibe install of a version
@@ -53,7 +73,7 @@ function vibeVersionAt(dir) {
53
73
  * checkout and a global install stop re-registering each other on every command.
54
74
  */
55
75
  export function claudeHeldElsewhere(home, root = packageRoot()) {
56
- const at = claudeMarketplacePath(home) ?? claudeMarketplacePath(home, 'vibe');
76
+ const at = claudeMarketplacePath(home) ?? claudeMarketplacePath(home, LEGACY_MARKETPLACE);
57
77
  if (!at || path.resolve(at) === path.resolve(root))
58
78
  return null;
59
79
  const theirs = vibeVersionAt(at);
@@ -63,6 +83,9 @@ export function claudeHeldElsewhere(home, root = packageRoot()) {
63
83
  return null;
64
84
  return claudePluginVersion(home) === theirs ? { at, version: theirs } : null;
65
85
  }
86
+ function claudeFailure(home, detail, version = claudePluginVersion(home)) {
87
+ return { ok: false, mode: claudePluginVersion(home) ? 'plugin' : 'home', version, detail };
88
+ }
66
89
  /** Point the `vibe-local` marketplace at this package and install/update the plugin. Idempotent: nothing runs when current. */
67
90
  export function registerClaude(home, root = packageRoot()) {
68
91
  const want = packageVersion();
@@ -71,39 +94,46 @@ export function registerClaude(home, root = packageRoot()) {
71
94
  if (installed === want && at === root && !claudeNeedsMigration(home))
72
95
  return { ok: true, mode: 'plugin', version: installed, detail: 'current' };
73
96
  const elsewhere = claudeHeldElsewhere(home, root);
74
- if (elsewhere && (!claudeNeedsMigration(home) || newer(elsewhere.version, want)))
97
+ if (elsewhere && (!claudeNeedsMigration(home) || newer(elsewhere.version, want))) {
75
98
  return { ok: true, mode: 'plugin', version: elsewhere.version, detail: `current — ${elsewhere.version} at ${elsewhere.at}` };
99
+ }
76
100
  if (at !== null && at !== root)
77
- run('claude', ['plugin', 'marketplace', 'remove', MARKETPLACE], home);
101
+ run(CLAUDE_CLI, ['plugin', 'marketplace', 'remove', MARKETPLACE], home);
78
102
  if (at !== root) {
79
103
  // Claude deduplicates directory sources by path, retaining the former marketplace name.
80
104
  // A manifest file is a distinct source; preserve the old registration and live caches.
81
- const source = claudeMarketplacePath(home, 'vibe') === root ? path.join(root, '.claude-plugin', 'marketplace.json') : root;
82
- const add = run('claude', ['plugin', 'marketplace', 'add', source, '--scope', 'user'], home);
105
+ const manifest = path.join(root, CLAUDE_MANIFEST_DIR, MARKETPLACE_FILE);
106
+ const source = claudeMarketplacePath(home, LEGACY_MARKETPLACE) === root ? manifest : root;
107
+ const add = run(CLAUDE_CLI, ['plugin', 'marketplace', 'add', source, '--scope', 'user'], home);
83
108
  if (!add.ok)
84
- return { ok: false, mode: claudePluginVersion(home) ? 'plugin' : 'home', version: claudePluginVersion(home), detail: `marketplace add failed: ${add.out.slice(-200)}` };
109
+ return claudeFailure(home, `marketplace add failed: ${add.out.slice(-ERROR_TAIL_CHARS)}`);
85
110
  }
86
- const step = installed === want && at === root ? { ok: true, out: '' } : installed ? run('claude', ['plugin', 'update', PLUGIN_ID], home) : run('claude', ['plugin', 'install', PLUGIN_ID, '--scope', 'user'], home);
111
+ const step = installed === want && at === root ? { ok: true, out: '' } : installClaudePlugin(home, installed);
87
112
  if (!step.ok)
88
- return { ok: false, mode: claudePluginVersion(home) ? 'plugin' : 'home', version: claudePluginVersion(home), detail: `plugin ${installed ? 'update' : 'install'} failed: ${step.out.slice(-200)}` };
113
+ return claudeFailure(home, `plugin ${installed ? 'update' : 'install'} failed: ${step.out.slice(-ERROR_TAIL_CHARS)}`);
89
114
  const now = claudeVersion(home, PLUGIN_ID);
90
115
  if (now !== want)
91
- return { ok: false, mode: claudePluginVersion(home) ? 'plugin' : 'home', version: now, detail: `plugin verification failed: expected ${want}, found ${now ?? 'none'}` };
116
+ return claudeFailure(home, `plugin verification failed: expected ${want}, found ${now ?? 'none'}`, now);
92
117
  const error = retireLegacyClaude(home);
93
118
  if (error)
94
119
  return { ok: false, mode: 'plugin', version: now, detail: error };
95
120
  return { ok: true, mode: 'plugin', version: now, detail: installed ? `updated ${installed} → ${now}` : `installed ${now}` };
96
121
  }
122
+ function installClaudePlugin(home, installed) {
123
+ return installed
124
+ ? run(CLAUDE_CLI, ['plugin', 'update', PLUGIN_ID], home)
125
+ : run(CLAUDE_CLI, ['plugin', 'install', PLUGIN_ID, '--scope', 'user'], home);
126
+ }
97
127
  /** Keep old cached hook paths alive for sessions that started before the namespace changed. */
98
128
  function retireLegacyClaude(home) {
99
129
  if (claudeNeedsMigration(home)) {
100
- const cache = path.join(home, '.claude', 'plugins', 'cache', 'vibe', 'vibe');
101
- const snapshot = fs.existsSync(cache) ? fs.mkdtempSync(path.join(os.tmpdir(), 'vibe-claude-held-')) : null;
130
+ const cache = claudeHome(home, PLUGINS_DIR, 'cache', LEGACY_MARKETPLACE, PLUGIN_NAME);
131
+ const snapshot = fs.existsSync(cache) ? fs.mkdtempSync(path.join(os.tmpdir(), CLAUDE_SNAPSHOT_PREFIX)) : null;
102
132
  if (snapshot)
103
133
  fs.cpSync(cache, snapshot, { recursive: true });
104
134
  let result;
105
135
  try {
106
- result = run('claude', ['plugin', 'uninstall', LEGACY_ID, '--scope', 'user'], home);
136
+ result = run(CLAUDE_CLI, ['plugin', 'uninstall', LEGACY_ID, '--scope', 'user'], home);
107
137
  }
108
138
  finally {
109
139
  if (snapshot) {
@@ -112,7 +142,7 @@ function retireLegacyClaude(home) {
112
142
  }
113
143
  }
114
144
  if (!result.ok || claudeNeedsMigration(home))
115
- return `legacy plugin removal failed: ${result.out.slice(-200)}`;
145
+ return `legacy plugin removal failed: ${result.out.slice(-ERROR_TAIL_CHARS)}`;
116
146
  }
117
147
  // Leave the old marketplace registered: it may serve other plugins/scopes, and removing
118
148
  // it may delete cached hooks still used by running sessions. It exposes no uninstalled skill.
@@ -121,10 +151,12 @@ function retireLegacyClaude(home) {
121
151
  export function unregisterClaude(home) {
122
152
  const removed = [];
123
153
  for (const id of [PLUGIN_ID, LEGACY_ID]) {
124
- if (claudeVersion(home, id) !== null && run('claude', ['plugin', 'uninstall', id, '--scope', 'user'], home).ok)
154
+ const uninstalled = claudeVersion(home, id) !== null && run(CLAUDE_CLI, ['plugin', 'uninstall', id, '--scope', 'user'], home).ok;
155
+ if (uninstalled)
125
156
  removed.push(`claude plugin ${id}`);
126
157
  }
127
- if (claudeMarketplacePath(home) !== null && run('claude', ['plugin', 'marketplace', 'remove', MARKETPLACE], home).ok)
158
+ const unlisted = claudeMarketplacePath(home) !== null && run(CLAUDE_CLI, ['plugin', 'marketplace', 'remove', MARKETPLACE], home).ok;
159
+ if (unlisted)
128
160
  removed.push(`claude marketplace ${MARKETPLACE}`);
129
161
  return removed;
130
162
  }
@@ -137,16 +169,15 @@ function marketplaceName(home) {
137
169
  * the highest when several are present, null when Codex holds none — a reading, not the package version.
138
170
  */
139
171
  export function codexPluginVersion(home) {
140
- const dir = path.join(home, '.codex', 'plugins', 'cache', marketplaceName(home), 'vibe');
172
+ const dir = codexHome(home, PLUGINS_DIR, 'cache', marketplaceName(home), PLUGIN_NAME);
141
173
  if (!fs.existsSync(dir))
142
174
  return null;
143
175
  const versions = fs
144
176
  .readdirSync(dir)
145
- .filter((v) => /^\d+\.\d+\.\d+/.test(v) && fs.existsSync(path.join(dir, v, '.codex-plugin', 'plugin.json')))
177
+ .filter((v) => VERSION_DIR.test(v) && fs.existsSync(path.join(dir, v, CODEX_MANIFEST_FILE)))
146
178
  .sort((a, b) => (newer(a, b) ? -1 : newer(b, a) ? 1 : 0));
147
179
  return versions[0] ?? null;
148
180
  }
149
- /** An assembled tree alone does not prove Codex has installed it. */
150
181
  /** Highest version wins for Codex too: a tree assembled by a newer install, which Codex holds, is not torn down by an older binary. */
151
182
  export function codexHeldNewer(home) {
152
183
  const s = pluginStatus(home);
@@ -164,7 +195,7 @@ export function codexHeldNewer(home) {
164
195
  export function codexHooksTrusted(home) {
165
196
  let toml = '';
166
197
  try {
167
- toml = fs.readFileSync(path.join(home, '.codex', 'config.toml'), 'utf-8');
198
+ toml = fs.readFileSync(codexConfig(home), 'utf-8');
168
199
  }
169
200
  catch {
170
201
  return null;
@@ -172,9 +203,8 @@ export function codexHooksTrusted(home) {
172
203
  const keys = [...toml.matchAll(/^\[hooks\.state\."([^"]+)"\]/gm)].map((m) => m[1] ?? '');
173
204
  if (keys.length === 0)
174
205
  return null;
175
- const sources = [`vibe@${marketplaceName(home)}:hooks/codex-hooks.json`, path.join(home, '.codex', 'hooks.json')];
176
- const events = ['session_start', 'pre_tool_use', 'post_tool_use', 'stop'];
177
- return sources.some((src) => events.every((ev) => keys.some((k) => k.startsWith(`${src}:${ev}:`))));
206
+ const sources = [`${PLUGIN_NAME}@${marketplaceName(home)}:${CODEX_HOOKS_FILE}`, codexHooks(home)];
207
+ return sources.some((src) => CODEX_HOOK_EVENTS.every((ev) => keys.some((k) => k.startsWith(`${src}:${ev}:`))));
178
208
  }
179
209
  export function codexRegistered(home) {
180
210
  if (codexHeldNewer(home))
@@ -185,7 +215,7 @@ export function codexRegistered(home) {
185
215
  const held = codexPluginVersion(home);
186
216
  return held === packageVersion();
187
217
  }
188
- const codexCacheDir = (home) => path.join(home, '.codex', 'plugins', 'cache', marketplaceName(home), 'vibe');
218
+ const codexCacheDir = (home) => codexHome(home, PLUGINS_DIR, 'cache', marketplaceName(home), PLUGIN_NAME);
189
219
  /**
190
220
  * A Codex or ChatGPT session resolves `${PLUGIN_ROOT}` once, at start, to the cache directory of the version it
191
221
  * found; `codex plugin remove` deletes that directory, and every hook of a session still running under the old
@@ -204,9 +234,9 @@ function snapshotVersions(home) {
204
234
  const from = codexCacheDir(home);
205
235
  if (!fs.existsSync(from))
206
236
  return null;
207
- const to = fs.mkdtempSync(path.join(os.tmpdir(), 'vibe-codex-held-'));
237
+ const to = fs.mkdtempSync(path.join(os.tmpdir(), CODEX_SNAPSHOT_PREFIX));
208
238
  for (const version of fs.readdirSync(from)) {
209
- if (/^\d+\.\d+\.\d+/.test(version))
239
+ if (VERSION_DIR.test(version))
210
240
  fs.cpSync(path.join(from, version), path.join(to, version), { recursive: true });
211
241
  }
212
242
  return to;
@@ -225,17 +255,18 @@ export function registerCodex(home) {
225
255
  return { ok: true, mode: 'plugin', version: packageVersion(), detail: 'current' };
226
256
  const held = codexPluginVersion(home);
227
257
  const r = installPlugin(home);
228
- const id = `vibe@${r.marketplaceName}`;
229
- const add = run('codex', ['plugin', 'marketplace', 'add', home], home);
258
+ const id = `${PLUGIN_NAME}@${r.marketplaceName}`;
259
+ const codexFailure = (detail) => ({ ok: false, mode: 'home', version: held, detail });
260
+ const add = run(CODEX_CLI, ['plugin', 'marketplace', 'add', home], home);
230
261
  if (!add.ok && !/already/i.test(add.out))
231
- return { ok: false, mode: 'home', version: held, detail: `codex marketplace add failed: ${add.out.slice(-200)}` };
262
+ return codexFailure(`codex marketplace add failed: ${add.out.slice(-ERROR_TAIL_CHARS)}`);
232
263
  const snapshot = snapshotVersions(home);
233
264
  let plug;
234
265
  try {
235
266
  if (held !== null)
236
- run('codex', ['plugin', 'remove', id], home);
267
+ run(CODEX_CLI, ['plugin', 'remove', id], home);
237
268
  restoreVersions(home, snapshot);
238
- plug = run('codex', ['plugin', 'add', id], home);
269
+ plug = run(CODEX_CLI, ['plugin', 'add', id], home);
239
270
  }
240
271
  finally {
241
272
  restoreVersions(home, snapshot);
@@ -243,23 +274,27 @@ export function registerCodex(home) {
243
274
  fs.rmSync(snapshot, { recursive: true, force: true });
244
275
  }
245
276
  if (!plug.ok)
246
- return { ok: false, mode: 'home', version: held, detail: `codex plugin add failed: ${plug.out.slice(-200)}` };
277
+ return codexFailure(`codex plugin add failed: ${plug.out.slice(-ERROR_TAIL_CHARS)}`);
247
278
  const observed = codexPluginVersion(home);
248
- if (observed !== r.version)
249
- return { ok: false, mode: 'plugin', version: observed, detail: `codex verification incomplete: expected ${r.version}, observed ${observed ?? 'unknown'}; inspect the client installation before retrying setup` };
250
- return { ok: true, mode: 'plugin', version: r.version, detail: held ? `updated ${held} → ${r.version}; a session started under ${held} keeps its hooks until it restarts` : `registered ${id}` };
279
+ if (observed !== r.version) {
280
+ const detail = `codex verification incomplete: expected ${r.version}, observed ${observed ?? 'unknown'}; `
281
+ + 'inspect the client installation before retrying setup';
282
+ return { ok: false, mode: 'plugin', version: observed, detail };
283
+ }
284
+ const detail = held ? `updated ${held} → ${r.version}; a session started under ${held} keeps its hooks until it restarts` : `registered ${id}`;
285
+ return { ok: true, mode: 'plugin', version: r.version, detail };
251
286
  }
252
287
  export function unregisterCodex(home) {
253
288
  const removed = [];
254
289
  const paths = pluginPaths(home);
255
290
  if (fs.existsSync(paths.tree)) {
256
- run('codex', ['plugin', 'remove', `vibe@${marketplaceName(home)}`], home);
291
+ run(CODEX_CLI, ['plugin', 'remove', `${PLUGIN_NAME}@${marketplaceName(home)}`], home);
257
292
  fs.rmSync(paths.tree, { recursive: true, force: true });
258
293
  removed.push(paths.tree);
259
294
  }
260
295
  const doc = readJson(paths.marketplace);
261
- if (doc?.plugins?.some((p) => p?.name === 'vibe')) {
262
- writeJson(paths.marketplace, { ...doc, plugins: doc.plugins.filter((p) => p?.name !== 'vibe') });
296
+ if (doc?.plugins?.some((p) => p?.name === PLUGIN_NAME)) {
297
+ writeJson(paths.marketplace, { ...doc, plugins: doc.plugins.filter((p) => p?.name !== PLUGIN_NAME) });
263
298
  removed.push(`${paths.marketplace} vibe entry`);
264
299
  }
265
300
  return removed;
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/install/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/install/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAUtF,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,SAAS,GAAG,QAAQ,WAAW,EAAE,CAAC;AACxC,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9B,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,YAAY,GAAG,iBAAiB,CAAC;AACvC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;AACvC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AACxD,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAC1D,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAC7C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,iBAAiB,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AACrF,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AACjD,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEnD,SAAS,GAAG,CAAC,GAAW,EAAE,IAAc,EAAE,IAAY;IACpD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC9D,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;IAC7H,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;IACpI,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxB,CAAC;AAWD,SAAS,aAAa,CAAC,IAAY,EAAE,EAAU;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAmB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC9F,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,GAAG,GAAG,QAAQ,CAAmB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC9F,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC;AAC3E,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,mBAAmB,CAAC;AAC/G,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,OAAe,WAAW;IACrE,MAAM,GAAG,GAAG,QAAQ,CAAoB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACnC,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACnI,OAAO,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC;AAC9B,CAAC;AASD,mEAAmE;AACnE,SAAS,aAAa,CAAC,GAAkB;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,QAAQ,CAAsC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5F,OAAO,GAAG,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAe,WAAW,EAAE;IAC5E,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC1F,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,MAAc,EAAE,UAAyB,mBAAmB,CAAC,IAAI,CAAC;IACrG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7F,CAAC;AAED,+HAA+H;AAC/H,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAe,WAAW,EAAE;IACvE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACjJ,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,SAAS,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QACjF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,SAAS,CAAC,OAAO,OAAO,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IAC/H,CAAC;IACD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IACxG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,wFAAwF;QACxF,uFAAuF;QACvF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/F,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,aAAa,CAAC,IAAI,EAAE,2BAA2B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9G,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,aAAa,CAAC,IAAI,EAAE,UAAU,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACpI,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC,IAAI,EAAE,wCAAwC,IAAI,WAAW,GAAG,IAAI,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;IAC1H,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC7E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,SAAS,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,EAAE,EAAE,CAAC;AAC9H,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,SAAwB;IACjE,OAAO,SAAS;QACd,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC;QACxD,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,+FAA+F;AAC/F,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9G,IAAI,QAAQ;YAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,IAAI,MAA8B,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QACxF,CAAC;gBAAS,CAAC;YACT,IAAI,QAAQ,EAAE,CAAC;gBACb,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9D,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC;YAAE,OAAO,iCAAiC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC9H,CAAC;IACD,wFAAwF;IACxF,8FAA8F;IAC9F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QACjI,IAAI,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;IACpI,IAAI,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;IAChE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4EAA4E;AAE5E,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,QAAQ,CAAoB,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,gBAAgB,CAAC;AAC9F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IACtF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,EAAE;SAChB,WAAW,CAAC,GAAG,CAAC;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;SAC3F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC7B,CAAC;AAED,uIAAuI;AACvI,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACjH,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC;QACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,IAAI,KAAK,cAAc,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;AAE1H;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAY,EAAE,QAAuB;IAC5D,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACzE,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,SAAS,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACtI,IAAI,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7G,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,GAAG,WAAW,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,CAAC,MAAc,EAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9G,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACzE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC,iCAAiC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACnI,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAA4B,CAAC;IACjC,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,IAAI;YAAE,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAClE,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChC,IAAI,QAAQ;YAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC,4BAA4B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACnG,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,2CAA2C,CAAC,CAAC,OAAO,cAAc,QAAQ,IAAI,SAAS,IAAI;cACtG,uDAAuD,CAAC;QAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,OAAO,6BAA6B,IAAI,oCAAoC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;IAC/I,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACtF,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAAyC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChF,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QACvD,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,aAAa,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -2,23 +2,31 @@ import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { packageRoot } from '../core/paths.js';
4
4
  import { readJson, readText, writeAtomic } from '../core/store.js';
5
+ import { FALLBACK_VERSION, PACKAGE_MANIFEST } from './manifest.js';
5
6
  function pkg() {
6
- const p = readJson(path.join(packageRoot(), 'package.json'));
7
- return { version: p?.version ?? '0.0.0', description: p?.description ?? '' };
7
+ const p = readJson(path.join(packageRoot(), PACKAGE_MANIFEST));
8
+ return { version: p?.version ?? FALLBACK_VERSION, description: p?.description ?? '' };
8
9
  }
10
+ export const PLUGIN_NAME = 'vibe';
11
+ export const CODEX_MANIFEST_FILE = '.codex-plugin/plugin.json';
12
+ export const CODEX_HOOKS_FILE = 'hooks/codex-hooks.json';
13
+ export const MARKETPLACE_NAME = 'vibe-local';
9
14
  const AUTHOR = { name: 'su-record', url: 'https://github.com/su-record' };
10
15
  const REPO = 'https://github.com/su-record/vibe';
16
+ const LICENSE = 'MIT';
17
+ const HOOK_TIMEOUT_S = 5;
18
+ const GATE_TIMEOUT_S = 20; // the Bash gate may run a check before it answers
11
19
  /** Tools whose PostToolUse marks that the session acted: shell calls and the file edits of Claude Code and Codex. */
12
20
  export const ACTED = 'Bash|Edit|Write|MultiEdit|NotebookEdit|apply_patch';
13
21
  function hookSet(root, sessionArg) {
14
- const cmd = (file, arg) => ({ type: 'command', command: `node "${root}/hooks/${file}" ${arg}`, timeout: 5 });
22
+ const cmd = (file, arg) => ({ type: 'command', command: `node "${root}/hooks/${file}" ${arg}`, timeout: HOOK_TIMEOUT_S });
15
23
  return {
16
24
  hooks: {
17
25
  SessionStart: [{ hooks: [cmd('session.js', sessionArg)] }],
18
26
  SubagentStart: [{ hooks: [cmd('session.js', `${sessionArg} subagent`)] }],
19
- Stop: [{ hooks: [{ ...cmd('notify.js', 'stop --plugin --personal'), timeout: 5 }] }],
27
+ Stop: [{ hooks: [cmd('notify.js', 'stop --plugin --personal')] }],
20
28
  PreToolUse: [
21
- { matcher: 'Bash', hooks: [{ ...cmd('notify.js', 'pre --plugin --personal'), timeout: 20 }] },
29
+ { matcher: 'Bash', hooks: [{ ...cmd('notify.js', 'pre --plugin --personal'), timeout: GATE_TIMEOUT_S }] },
22
30
  ],
23
31
  // Session-knowledge journal: return at once when the person has not turned it on.
24
32
  UserPromptSubmit: [{ hooks: [cmd('journal.cjs', 'prompt --plugin')] }],
@@ -28,13 +36,13 @@ function hookSet(root, sessionArg) {
28
36
  }
29
37
  export function codexManifest(p = pkg()) {
30
38
  return {
31
- name: 'vibe',
39
+ name: PLUGIN_NAME,
32
40
  version: p.version,
33
41
  description: p.description,
34
42
  author: AUTHOR,
35
43
  homepage: REPO,
36
44
  repository: REPO,
37
- license: 'MIT',
45
+ license: LICENSE,
38
46
  keywords: ['harness', 'ax', 'fde', 'verification', 'codex', 'chatgpt'],
39
47
  // No hooks here: Codex asks again for a plugin hook whenever the plugin changes, so `vibe setup` writes the same
40
48
  // set (hooks/codex-hooks.json) into ~/.codex/hooks.json, which it trusts by command (see install/hooks.ts).
@@ -54,11 +62,19 @@ export function codexManifest(p = pkg()) {
54
62
  export function pluginTree(p = pkg()) {
55
63
  const json = (v) => `${JSON.stringify(v, null, 2)}\n`;
56
64
  return {
57
- '.claude-plugin/plugin.json': json({ name: 'vibe', version: p.version, description: p.description, author: AUTHOR, homepage: REPO, repository: REPO, license: 'MIT', keywords: ['harness', 'ax', 'fde', 'verification', 'claude-code'] }),
58
- '.claude-plugin/marketplace.json': json({ name: 'vibe-local', owner: AUTHOR, metadata: { description: p.description, version: p.version }, plugins: [{ name: 'vibe', source: './', description: p.description, version: p.version, category: 'productivity' }] }),
59
- '.codex-plugin/plugin.json': json(codexManifest(p)),
65
+ '.claude-plugin/plugin.json': json({
66
+ name: PLUGIN_NAME, version: p.version, description: p.description, author: AUTHOR, homepage: REPO, repository: REPO, license: LICENSE,
67
+ keywords: ['harness', 'ax', 'fde', 'verification', 'claude-code'],
68
+ }),
69
+ '.claude-plugin/marketplace.json': json({
70
+ name: MARKETPLACE_NAME,
71
+ owner: AUTHOR,
72
+ metadata: { description: p.description, version: p.version },
73
+ plugins: [{ name: PLUGIN_NAME, source: './', description: p.description, version: p.version, category: 'productivity' }],
74
+ }),
75
+ [CODEX_MANIFEST_FILE]: json(codexManifest(p)),
60
76
  'hooks/hooks.json': json(hookSet('${CLAUDE_PLUGIN_ROOT}', 'claude')),
61
- 'hooks/codex-hooks.json': json(hookSet('${PLUGIN_ROOT}', 'codex')),
77
+ [CODEX_HOOKS_FILE]: json(hookSet('${PLUGIN_ROOT}', 'codex')),
62
78
  };
63
79
  }
64
80
  export function writePluginTree(root = packageRoot()) {
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/install/tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/install/tree.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { spawnSync } from 'node:child_process';
2
2
  import path from 'node:path';
3
- import { packageRoot } from '../core/paths.js';
4
- import { readJson } from '../core/store.js';
3
+ import { packageVersion } from './manifest.js';
5
4
  /**
6
5
  * `vibe update` — the update is an npm install, but the user should not have to know npm.
7
6
  * Asks the registry for the latest version, installs it globally when it differs, and lets the
@@ -9,19 +8,21 @@ import { readJson } from '../core/store.js';
9
8
  */
10
9
  export const PACKAGE = '@su-record/vibe';
11
10
  const VIEW_TIMEOUT_MS = 10_000;
12
- const INSTALL_TIMEOUT_MS = 180_000;
11
+ const INSTALL_TIMEOUT_MS = 3 * 60 * 1000;
12
+ const REGISTRY_UNREACHABLE = 'the npm registry could not be reached — try again with a network';
13
+ const SEMVER_PREFIX = /^\d+\.\d+\.\d+/;
14
+ const SEMVER_EXACT = /^\d+\.\d+\.\d+$/;
15
+ const ERROR_TAIL_CHARS = 300;
13
16
  function npm(args, timeout) {
14
17
  const r = spawnSync('npm', args, { encoding: 'utf-8', timeout, shell: process.platform === 'win32' });
15
18
  return { ok: r.status === 0, out: `${r.stdout ?? ''}${r.stderr ?? ''}`.trim() };
16
19
  }
17
- export function installedVersion() {
18
- return readJson(path.join(packageRoot(), 'package.json'))?.version ?? '0.0.0';
19
- }
20
+ export const installedVersion = packageVersion;
20
21
  /** Latest published version, or null when the registry cannot be reached. Never throws. */
21
22
  export function latestVersion() {
22
23
  const r = npm(['view', PACKAGE, 'version'], VIEW_TIMEOUT_MS);
23
24
  const v = r.out.split('\n').at(-1)?.trim() ?? '';
24
- return r.ok && /^\d+\.\d+\.\d+/.test(v) ? v : null;
25
+ return r.ok && SEMVER_PREFIX.test(v) ? v : null;
25
26
  }
26
27
  export function newer(a, b) {
27
28
  const pa = a.split(/[.-]/).map(Number);
@@ -40,36 +41,61 @@ export function checkUpdate() {
40
41
  export function runUpdate() {
41
42
  const check = checkUpdate();
42
43
  if (check.latest === null)
43
- return { ...check, updated: false, detail: 'the npm registry could not be reached — try again with a network' };
44
+ return { ...check, updated: false, detail: REGISTRY_UNREACHABLE };
44
45
  if (!check.available)
45
46
  return { ...check, updated: false, detail: `already current (${check.installed})` };
46
47
  const r = npm(['i', '-g', `${PACKAGE}@${check.latest}`], INSTALL_TIMEOUT_MS);
47
- if (!r.ok)
48
- return { ...check, updated: false, detail: `npm install failed — run: npm i -g ${PACKAGE}@${check.latest}\n${r.out.slice(-300)}` };
48
+ if (!r.ok) {
49
+ return { ...check, updated: false, detail: `npm install failed — run: npm i -g ${PACKAGE}@${check.latest}\n${r.out.slice(-ERROR_TAIL_CHARS)}` };
50
+ }
49
51
  return { ...check, updated: true, detail: `${check.installed} → ${check.latest}` };
50
52
  }
53
+ /** A plugin-mode client is up to date when it holds a release at least as new as the one just installed. */
54
+ function pluginUpToDate(c, version) {
55
+ const held = c.pluginVersion;
56
+ if (typeof held !== 'string' || !SEMVER_EXACT.test(held))
57
+ return false;
58
+ return held === version || newer(held, version);
59
+ }
60
+ function staleClients(clients, version) {
61
+ return Object.entries(clients)
62
+ .filter(([, c]) => !c || c.current !== true || (c.mode === 'plugin' && !pluginUpToDate(c, version)))
63
+ .map(([name]) => name);
64
+ }
65
+ function incompleteSync(setup, stale) {
66
+ const reasons = Object.entries(setup.details ?? {})
67
+ .filter(([client]) => client === 'setup' || stale.includes(client))
68
+ .map(([client, detail]) => `${client}: ${detail}`)
69
+ .join('\n');
70
+ const which = stale.length ? `: ${stale.join(', ')}` : '';
71
+ const detail = `plugin synchronization incomplete${which}; retry \`vibe setup\`, not the npm install${reasons ? `\n${reasons}` : ''}`;
72
+ return { ok: false, phase: 'verify', setup, detail };
73
+ }
51
74
  /** Resolve npm's installed copy, not an older executable earlier on PATH. */
52
75
  export function syncUpdatedIntegrations(version, home) {
53
76
  const root = npm(['root', '-g'], VIEW_TIMEOUT_MS);
54
77
  const dir = root.out.split('\n').at(-1)?.trim();
55
78
  if (!root.ok || !dir || !path.isAbsolute(dir))
56
79
  return { ok: false, phase: 'locate', detail: 'could not locate the updated package; run `vibe setup`' };
57
- const cli = path.join(dir, '@su-record', 'vibe', 'dist', 'cli.js');
80
+ const cli = path.join(dir, ...PACKAGE.split('/'), 'dist', 'cli.js');
58
81
  const args = [cli, 'setup', '--json', ...(home ? ['--home', home] : [])];
59
82
  const after = spawnSync(process.execPath, args, { encoding: 'utf-8', timeout: INSTALL_TIMEOUT_MS });
60
- if (after.error || after.signal)
61
- return { ok: false, phase: 'execute', detail: `setup interrupted (${after.error?.code ?? after.signal}); installation may have changed — inspect \`vibe status\` before retrying \`vibe setup\`` };
83
+ if (after.error || after.signal) {
84
+ const cause = after.error?.code ?? after.signal;
85
+ const detail = `setup interrupted (${cause}); installation may have changed — inspect \`vibe status\` before retrying \`vibe setup\``;
86
+ return { ok: false, phase: 'execute', detail };
87
+ }
62
88
  try {
63
89
  const setup = JSON.parse(after.stdout ?? '');
64
90
  if (!setup || !setup.clients || typeof setup.clients !== 'object' || Array.isArray(setup.clients))
65
91
  throw new Error('invalid setup response');
66
- const stale = Object.entries(setup.clients).filter(([, c]) => !c || c.current !== true ||
67
- (c.mode === 'plugin' && (typeof c.pluginVersion !== 'string' || !/^\d+\.\d+\.\d+$/.test(c.pluginVersion) || (c.pluginVersion !== version && !newer(c.pluginVersion, version))))).map(([name]) => name);
68
- if (after.status !== 0 || setup.version !== version || !setup.clients || stale.length) {
69
- const reasons = Object.entries(setup.details ?? {}).filter(([client]) => client === 'setup' || stale.includes(client)).map(([client, detail]) => `${client}: ${detail}`).join('\n');
70
- return { ok: false, phase: 'verify', setup, detail: `plugin synchronization incomplete${stale.length ? `: ${stale.join(', ')}` : ''}; retry \`vibe setup\`, not the npm install${reasons ? `\n${reasons}` : ''}` };
71
- }
72
- return { ok: true, phase: 'complete', setup, detail: Object.keys(setup.clients).length ? 'client integrations synchronized; restart existing sessions to load the updated plugin' : 'package verified; no client integrations detected' };
92
+ const stale = staleClients(setup.clients, version);
93
+ if (after.status !== 0 || setup.version !== version || !setup.clients || stale.length)
94
+ return incompleteSync(setup, stale);
95
+ const detail = Object.keys(setup.clients).length
96
+ ? 'client integrations synchronized; restart existing sessions to load the updated plugin'
97
+ : 'package verified; no client integrations detected';
98
+ return { ok: true, phase: 'complete', setup, detail };
73
99
  }
74
100
  catch {
75
101
  return { ok: false, phase: 'verify', detail: `could not verify plugin synchronization (setup exit ${after.status}); run \`vibe setup\`` };