holistic 0.2.0 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.3 - 2026-03-22
4
+
5
+ Stopped teaching agents to visibly fail on missing PATH before recovering.
6
+
7
+ - Changed generated Holistic docs to recommend repo-local helper commands first in bootstrapped repos.
8
+ - Changed resume output to recommend repo-local commands directly instead of bare `holistic ...` commands.
9
+ - Tightened startup, checkpoint, and handoff guidance so agents use repo-local commands by default.
10
+ - Added regression coverage for the repo-local-first command recommendations.
11
+
12
+ ## 0.2.2 - 2026-03-22
13
+
14
+ Improved first-run recovery when Holistic is available in the repo but missing from the current shell PATH.
15
+
16
+ - Added generated repo-local CLI fallback wrappers under `.holistic/system/` for Windows and macOS/Linux.
17
+ - Surfaced repo-local fallback commands in bootstrap output, resume output, and generated Holistic docs.
18
+ - Updated the README to document the repo-local fallback command for bootstrapped repos.
19
+ - Added regression coverage for the generated fallback wrappers and startup guidance.
20
+
21
+ ## 0.2.1 - 2026-03-22
22
+
23
+ Hardened for real-world use after dogfooding on the project that inspired Holistic.
24
+
25
+ - Added `holistic --version` / `-v` / `version` command.
26
+ - Added version display in the ASCII splash banner.
27
+ - Fixed repo snapshot performance — now skips `node_modules` and other heavy generated directories instead of stat-ing tens of thousands of irrelevant files on every checkpoint.
28
+ - Fixed stale lock recovery — a crashed daemon or CLI no longer permanently blocks all state operations.
29
+ - Fixed corrupt session resilience — a single bad JSON file in `.holistic/sessions/` no longer crashes the entire tool.
30
+ - Fixed `bin/holistic.js` to respect `holistic.repo.json` runtime overrides in the post-handoff auto-commit flow.
31
+ - Fixed git hook refresh — hooks now self-heal from daemon startup and MCP client connections, not just CLI commands.
32
+ - Improved first-run experience — softened empty-state language in generated docs so agents don't editorialize about missing plans.
33
+
3
34
  ## 0.2.0 - 2026-03-21
4
35
 
5
36
  First public npm-ready release of Holistic.
package/CONTRIBUTING.md CHANGED
@@ -37,19 +37,28 @@ npm test
37
37
  | `tests/run-tests.ts` | end-to-end regression harness |
38
38
  | `.holistic-local/` | ignored local Holistic runtime for this public product repo |
39
39
 
40
- ## Dogfooding Holistic in this repo
40
+ ## Working On This Repo
41
41
 
42
- This public product repo is a special case.
42
+ This repository is the public Holistic product repo. That makes it a special case.
43
43
 
44
- Holistic dogfooding here must stay local-only and untracked. The repo-level override redirects runtime state into `.holistic-local/`, `HOLISTIC.local.md`, and `AGENTS.local.md` instead of tracked public runtime files.
44
+ Normal user repos are expected to commit portable Holistic runtime files such as `.holistic/` and sync them through the hidden portable state ref. This repo should not publish a contributor's live runtime state, handoff history, or local dogfooding artifacts.
45
45
 
46
- Recommended local setup for working on Holistic itself:
46
+ ### Repo-specific dogfooding rules
47
+
48
+ - Keep self-dogfooding runtime local-only and untracked.
49
+ - Use `.holistic-local/`, `HOLISTIC.local.md`, and `AGENTS.local.md` for repo-local runtime state.
50
+ - Do not initialize tracked `.holistic/` runtime state in this repo.
51
+ - Do not use a visible `holistic/state` branch for self-dogfooding here.
52
+
53
+ ### Recommended local setup
54
+
55
+ If you want Holistic active while working on Holistic itself, use this non-invasive local setup:
47
56
 
48
57
  ```bash
49
58
  node --experimental-strip-types src/cli.ts bootstrap --install-daemon false --configure-mcp false --install-hooks false
50
59
  ```
51
60
 
52
- Common local flows:
61
+ ### Common local flows
53
62
 
54
63
  ```bash
55
64
  node --experimental-strip-types src/cli.ts resume --agent codex
@@ -57,9 +66,7 @@ node --experimental-strip-types src/cli.ts checkpoint --reason "milestone"
57
66
  node --experimental-strip-types src/cli.ts handoff
58
67
  ```
59
68
 
60
- Do not initialize tracked `.holistic/` runtime state in this repo, and do not use a visible `holistic/state` branch here for self-dogfooding.
61
-
62
- For normal user repos, tracked `.holistic/` runtime plus the hidden portable state ref (`refs/holistic/state`) is the standard path. This product repo itself should stay public, clean, and main-only.
69
+ For normal user repos, tracked `.holistic/` runtime plus the hidden portable state ref (`refs/holistic/state`) remains the standard path.
63
70
 
64
71
  ## Contribution guidelines
65
72
 
package/README.md CHANGED
@@ -12,33 +12,52 @@ Your repo remembers, so your next agent doesn't have to guess.
12
12
  Shared memory for AI agents, built into your repo.
13
13
  ```
14
14
 
15
- ### One command. Every agent. Zero re-explaining.
15
+ ### One command. Every agent. Zero re-explaining.
16
16
 
17
17
  Holistic gives your AI agents shared memory inside the repo itself. When you switch from Claude to Codex to Gemini, the next agent can see what happened last time, what not to break, and what should happen next.
18
18
 
19
- ## Public repo hygiene
19
+ ---
20
+
21
+ ## Get started in 30 seconds ⚡
22
+
23
+ Open your project repo in PowerShell, Terminal, Command Prompt, or whatever shell you normally use.
24
+
25
+ Requires Node.js 24+.
26
+
27
+ Run these two commands:
28
+
29
+ ```bash
30
+ npm install -g holistic
31
+ holistic bootstrap
32
+ ```
33
+
34
+ After that, open the repo in your agent app and use this startup prompt:
20
35
 
21
- The Holistic product repo is a special case when it dogfoods itself.
36
+ ```text
37
+ Before doing any other work, read AGENTS.md and HOLISTIC.md, recap the current state briefly, and ask me exactly one question: continue as planned, tweak the plan, or start something new.
38
+ ```
22
39
 
23
- Normal user repos may commit portable Holistic runtime files and sync them through a dedicated portable git ref. This public repo should not ship a contributor's personal session history, handoff state, or live dogfooding runtime files. Self-dogfooding on this repo is redirected to ignored local files instead.
40
+ That is enough to get the basic Holistic workflow working.
41
+
42
+ If you want the fuller install and setup details, jump to [Quick start](#quick-start-).
24
43
 
25
44
  ---
26
45
 
27
- ## The problem
46
+ ## The problem 😵
28
47
 
29
48
  If you use more than one AI coding assistant, the workflow usually falls apart:
30
49
 
31
- - You re-explain the project every session.
32
- - Bugs come back because the next agent does not know what was already fixed.
33
- - Progress gets lost when context windows end.
34
- - Agents undo each other because there is no durable handoff.
35
- - It is hard to tell what is actually done.
50
+ - 🔁 You re-explain the project every session.
51
+ - 🐞 Bugs come back because the next agent does not know what was already fixed.
52
+ - 🧠 Progress gets lost when context windows end.
53
+ - 💥 Agents undo each other because there is no durable handoff.
54
+ - 🌫️ It is hard to tell what is actually done.
36
55
 
37
56
  Holistic fixes that by making the repo the source of truth.
38
57
 
39
58
  ---
40
59
 
41
- ## What it feels like now
60
+ ## What it feels like now 🌿
42
61
 
43
62
  Run one setup command on a machine:
44
63
 
@@ -59,7 +78,7 @@ Most days, you do not need to run `npm start`, keep a terminal process open, or
59
78
 
60
79
  ---
61
80
 
62
- ## How it works
81
+ ## How it works 🧭
63
82
 
64
83
  ```text
65
84
  holistic bootstrap
@@ -79,9 +98,9 @@ The next agent picks up without a long re-explanation
79
98
 
80
99
  ---
81
100
 
82
- ## Quick start
101
+ ## Quick start 🚀
83
102
 
84
- ### Install
103
+ ### Install 📦
85
104
 
86
105
  Requires Node.js 24+.
87
106
 
@@ -113,7 +132,7 @@ npm install
113
132
  npm link
114
133
  ```
115
134
 
116
- ### Set up a repo
135
+ ### Set up a repo 🛠️
117
136
 
118
137
  ```bash
119
138
  cd my-project
@@ -147,21 +166,13 @@ holistic bootstrap --install-daemon false --configure-mcp false
147
166
  - `.holistic/sessions/` - session history files
148
167
 
149
168
  **What NOT to commit:**
150
- - `.holistic/system/*.sh` and `.holistic/system/*.ps1` - machine-local scripts with absolute paths (already in `.gitignore`)
169
+ - `.holistic/system/` - machine-local helper scripts and wrappers with absolute paths (already in `.gitignore`)
151
170
 
152
171
  The portable repo memory is meant to be committed and synced. Machine-local helper scripts are generated for each machine and stay local.
153
172
 
154
- After that, open the repo in your agent app and use a startup prompt like:
155
-
156
- ```text
157
- Before doing any other work, read AGENTS.md and HOLISTIC.md, recap the current state briefly, and ask me exactly one question: continue as planned, tweak the plan, or start something new.
158
- ```
159
-
160
- That is enough for normal repo-first continuity.
161
-
162
173
  ---
163
174
 
164
- ## Daily workflow
175
+ ## Daily workflow 🔄
165
176
 
166
177
  One-time machine setup:
167
178
 
@@ -184,9 +195,14 @@ holistic checkpoint --reason "..."
184
195
  holistic handoff
185
196
  ```
186
197
 
198
+ If `holistic` is not on `PATH` in a given shell, every bootstrapped repo also has a repo-local fallback:
199
+
200
+ - Windows: `.\.holistic\system\holistic.cmd <command>`
201
+ - macOS/Linux: `./.holistic/system/holistic <command>`
202
+
187
203
  ---
188
204
 
189
- ## Regression protection
205
+ ## Regression protection 🛡️
190
206
 
191
207
  When an agent fixes something delicate, lock it in:
192
208
 
@@ -201,7 +217,7 @@ Future agents will see that warning in the repo docs before they touch the risky
201
217
 
202
218
  ---
203
219
 
204
- ## Works with multiple agent apps
220
+ ## Works with multiple agent apps 🤝
205
221
 
206
222
  Holistic is model-agnostic. It works through repo files first, and can also expose a thin MCP server where supported.
207
223
 
@@ -215,7 +231,7 @@ Holistic is model-agnostic. It works through repo files first, and can also expo
215
231
 
216
232
  ---
217
233
 
218
- ## What lives in your repo
234
+ ## What lives in your repo 🗂️
219
235
 
220
236
  ```text
221
237
  my-project/
@@ -234,7 +250,7 @@ my-project/
234
250
  `- adapters/
235
251
  ```
236
252
 
237
- The portable repo memory (config, state, context, sessions) is meant to be committed and synced. Machine-local helper scripts under `.holistic/system/` are generated for each machine and stay local (already in `.gitignore`).
253
+ The portable repo memory (config, state, context, sessions) is meant to be committed and synced. Machine-local helper scripts and repo-local CLI fallbacks under `.holistic/system/` are generated for each machine and stay local (already in `.gitignore`).
238
254
 
239
255
  ---
240
256
 
package/bin/holistic.js CHANGED
@@ -1,59 +1,90 @@
1
- #!/usr/bin/env node
2
- import { spawnSync } from "node:child_process";
3
- import { fileURLToPath } from "node:url";
4
- import fs from "node:fs";
5
- import path from "node:path";
6
-
7
- const currentFile = fileURLToPath(import.meta.url);
8
- const repoRoot = path.resolve(path.dirname(currentFile), "..");
9
- const cliPath = path.resolve(repoRoot, "dist/cli.js");
10
- const args = process.argv.slice(2);
11
- const result = spawnSync(process.execPath, [cliPath, ...args], {
12
- stdio: "inherit",
13
- cwd: process.cwd(),
14
- });
15
-
16
- if (result.status !== 0) {
17
- process.exit(result.status ?? 1);
18
- }
19
-
20
- if (args[0] === "handoff") {
21
- const pendingCommitPath = path.join(process.cwd(), ".holistic", "context", "pending-commit.txt");
22
- if (fs.existsSync(pendingCommitPath)) {
23
- const message = fs.readFileSync(pendingCommitPath, "utf8").split(/\r?\n/)[0]?.trim();
24
- if (message) {
25
- const addResult = spawnSync("git", ["add", "--", "HOLISTIC.md", "AGENTS.md", ".holistic"], {
26
- stdio: "inherit",
27
- cwd: process.cwd(),
28
- });
29
- if ((addResult.status ?? 1) === 0) {
30
- const commitResult = spawnSync("git", ["commit", "-m", message], {
31
- stdio: "inherit",
32
- cwd: process.cwd(),
33
- });
34
- if ((commitResult.status ?? 1) === 0) {
35
- const syncScript = path.join(process.cwd(), ".holistic", "system", process.platform === "win32" ? "sync-state.ps1" : "sync-state.sh");
36
- if (fs.existsSync(syncScript)) {
37
- if (process.platform === "win32") {
38
- spawnSync("powershell", ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", syncScript], {
39
- stdio: "inherit",
40
- cwd: process.cwd(),
41
- });
42
- } else {
43
- spawnSync("/bin/sh", [syncScript], {
44
- stdio: "inherit",
45
- cwd: process.cwd(),
46
- });
47
- }
48
- }
49
- spawnSync(process.execPath, [cliPath, "internal-mark-commit", "--message", message], {
50
- stdio: "inherit",
51
- cwd: process.cwd(),
52
- });
53
- }
54
- }
55
- }
56
- }
57
- }
58
-
59
- process.exit(0);
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from "node:child_process";
3
+ import { fileURLToPath } from "node:url";
4
+ import fs from "node:fs";
5
+ import path from "node:path";
6
+
7
+ const currentFile = fileURLToPath(import.meta.url);
8
+ const repoRoot = path.resolve(path.dirname(currentFile), "..");
9
+ const cliPath = path.resolve(repoRoot, "dist/cli.js");
10
+ const args = process.argv.slice(2);
11
+ const result = spawnSync(process.execPath, [cliPath, ...args], {
12
+ stdio: "inherit",
13
+ cwd: process.cwd(),
14
+ });
15
+
16
+ if (result.status !== 0) {
17
+ process.exit(result.status ?? 1);
18
+ }
19
+
20
+ /**
21
+ * Resolve the Holistic directory and tracked file names for the current repo.
22
+ * Reads holistic.repo.json if present, otherwise falls back to defaults.
23
+ */
24
+ function resolveRepoPaths(rootDir) {
25
+ const defaults = {
26
+ holisticDir: ".holistic",
27
+ masterDoc: "HOLISTIC.md",
28
+ agentsDoc: "AGENTS.md",
29
+ };
30
+
31
+ const configPath = path.join(rootDir, "holistic.repo.json");
32
+ if (fs.existsSync(configPath)) {
33
+ try {
34
+ const config = JSON.parse(fs.readFileSync(configPath, "utf8"));
35
+ const runtime = config.runtime ?? {};
36
+ return {
37
+ holisticDir: runtime.holisticDir ?? defaults.holisticDir,
38
+ masterDoc: runtime.masterDoc ?? defaults.masterDoc,
39
+ agentsDoc: runtime.agentsDoc ?? defaults.agentsDoc,
40
+ };
41
+ } catch {
42
+ // Fall through to defaults on corrupt config.
43
+ }
44
+ }
45
+
46
+ return defaults;
47
+ }
48
+
49
+ if (args[0] === "handoff") {
50
+ const rootDir = process.cwd();
51
+ const repoPaths = resolveRepoPaths(rootDir);
52
+ const pendingCommitPath = path.join(rootDir, repoPaths.holisticDir, "context", "pending-commit.txt");
53
+ if (fs.existsSync(pendingCommitPath)) {
54
+ const message = fs.readFileSync(pendingCommitPath, "utf8").split(/\r?\n/)[0]?.trim();
55
+ if (message) {
56
+ const addResult = spawnSync("git", ["add", "--", repoPaths.masterDoc, repoPaths.agentsDoc, repoPaths.holisticDir], {
57
+ stdio: "inherit",
58
+ cwd: rootDir,
59
+ });
60
+ if ((addResult.status ?? 1) === 0) {
61
+ const commitResult = spawnSync("git", ["commit", "-m", message], {
62
+ stdio: "inherit",
63
+ cwd: rootDir,
64
+ });
65
+ if ((commitResult.status ?? 1) === 0) {
66
+ const syncScript = path.join(rootDir, repoPaths.holisticDir, "system", process.platform === "win32" ? "sync-state.ps1" : "sync-state.sh");
67
+ if (fs.existsSync(syncScript)) {
68
+ if (process.platform === "win32") {
69
+ spawnSync("powershell", ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", syncScript], {
70
+ stdio: "inherit",
71
+ cwd: rootDir,
72
+ });
73
+ } else {
74
+ spawnSync("/bin/sh", [syncScript], {
75
+ stdio: "inherit",
76
+ cwd: rootDir,
77
+ });
78
+ }
79
+ }
80
+ spawnSync(process.execPath, [cliPath, "internal-mark-commit", "--message", message], {
81
+ stdio: "inherit",
82
+ cwd: rootDir,
83
+ });
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ process.exit(0);
@@ -248,7 +248,7 @@ export const tests = [
248
248
  });
249
249
  const greeting = buildStartupGreeting(state, "claude");
250
250
  assert.ok(greeting);
251
- assert.match(greeting, /Recommended command: holistic resume --continue/);
251
+ assert.match(greeting, /Recommended command: Windows `?\.\\\.holistic\\system\\holistic\.cmd resume --continue`?; macOS\/Linux `?\.\/\.holistic\/system\/holistic resume --continue`?/);
252
252
  },
253
253
  },
254
254
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-notification.test.js","sourceRoot":"","sources":["../../src/__tests__/mcp-notification.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-notification.test.js","sourceRoot":"","sources":["../../src/__tests__/mcp-notification.test.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAA4C,YAAY,EAAE,aAAa,EAAgB,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAoFvJ,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAyED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAcnG;AAMD,wBAAgB,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAoE1G;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CA4DzD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAA4C,YAAY,EAAE,aAAa,EAAgB,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA+FvJ,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAyED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAcnG;AAMD,wBAAgB,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAoE1G;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CA4DzD"}
package/dist/cli.js CHANGED
@@ -1,7 +1,9 @@
1
+ import fs from "node:fs";
1
2
  import path from "node:path";
2
3
  import { createInterface } from "node:readline/promises";
3
4
  import { stdin as input, stdout as output } from "node:process";
4
5
  import { fileURLToPath, pathToFileURL } from "node:url";
6
+ import { renderRepoLocalCliCommands } from './core/cli-fallback.js';
5
7
  import { captureRepoSnapshot, clearPendingCommit, writePendingCommit } from './core/git.js';
6
8
  import { writeDerivedDocs } from './core/docs.js';
7
9
  import { bootstrapHolistic, initializeHolistic, refreshHolisticHooks } from './core/setup.js';
@@ -54,8 +56,19 @@ function asAgent(value) {
54
56
  function printJson(payload) {
55
57
  process.stdout.write(JSON.stringify(payload, null, 2) + "\n");
56
58
  }
59
+ function getVersion() {
60
+ const currentFile = fileURLToPath(import.meta.url);
61
+ const packagePath = path.resolve(path.dirname(currentFile), "..", "package.json");
62
+ try {
63
+ const pkg = JSON.parse(fs.readFileSync(packagePath, "utf8"));
64
+ return pkg.version ?? "unknown";
65
+ }
66
+ catch {
67
+ return "unknown";
68
+ }
69
+ }
57
70
  function printHelp() {
58
- process.stdout.write(`Holistic CLI
71
+ process.stdout.write(`Holistic CLI v${getVersion()}
59
72
 
60
73
  Usage:
61
74
  holistic init [--install-daemon] [--install-hooks] [--platform win32|darwin|linux] [--interval 30] [--remote origin] [--state-ref refs/holistic/state] [--state-branch holistic/state]
@@ -63,15 +76,15 @@ Usage:
63
76
  holistic start [--agent codex|claude|antigravity|gemini|copilot|cursor|goose|gsd] [--continue] [--json]
64
77
  holistic resume [--agent codex|claude|antigravity|gemini|copilot|cursor|goose|gsd] [--continue] [--json]
65
78
  holistic checkpoint --reason "<reason>" [--goal "<goal>"] [--status "<status>"] [--plan "<step>"]...
66
- holistic checkpoint --fixed "<bug>" [--fix-files "<file>"] [--fix-risk "<what reintroduces it>"]
67
- holistic handoff [--draft] [--summary "<summary>"] [--next "<step>"]...
68
- holistic start-new --goal "<goal>" [--title "<title>"] [--plan "<step>"]...
69
- holistic status
70
- holistic diff --from "<session-id>" --to "<session-id>" [--format text|json]
71
- holistic serve
72
- holistic watch [--agent codex|claude|antigravity|gemini|copilot|cursor|goose|gsd] [--interval 60]
73
-
74
- 'holistic start' is an alias for 'holistic resume'.
79
+ holistic checkpoint --fixed "<bug>" [--fix-files "<file>"] [--fix-risk "<what reintroduces it>"]
80
+ holistic handoff [--draft] [--summary "<summary>"] [--next "<step>"]...
81
+ holistic start-new --goal "<goal>" [--title "<title>"] [--plan "<step>"]...
82
+ holistic status
83
+ holistic diff --from "<session-id>" --to "<session-id>" [--format text|json]
84
+ holistic serve
85
+ holistic watch [--agent codex|claude|antigravity|gemini|copilot|cursor|goose|gsd] [--interval 60]
86
+
87
+ 'holistic start' is an alias for 'holistic resume'.
75
88
  `);
76
89
  }
77
90
  export function renderResumeOutput(body) {
@@ -300,10 +313,12 @@ async function handleInit(rootDir, parsed) {
300
313
  showStatus: true,
301
314
  statusItems,
302
315
  });
303
- process.stdout.write(`System files: ${result.systemDir}
304
- Config: ${result.configFile}
305
- Platform: ${result.platform}
306
- Daemon install: ${result.installed ? `enabled at ${result.startupTarget}` : "not installed"}
316
+ const initFallback = renderRepoLocalCliCommands(path.relative(rootDir, path.join(result.systemDir, "..", "context")).replaceAll("\\", "/"), "resume --agent codex");
317
+ process.stdout.write(`System files: ${result.systemDir}
318
+ Config: ${result.configFile}
319
+ Platform: ${result.platform}
320
+ Daemon install: ${result.installed ? `enabled at ${result.startupTarget}` : "not installed"}
321
+ Repo-local CLI: ${initFallback}
307
322
  `);
308
323
  if (result.gitHooksInstalled) {
309
324
  process.stdout.write(`Git hooks installed: ${result.gitHooks.join(", ")}\n`);
@@ -343,13 +358,15 @@ async function handleBootstrap(rootDir, parsed) {
343
358
  showStatus: true,
344
359
  statusItems,
345
360
  });
346
- process.stdout.write(`System files: ${result.systemDir}
347
- Config: ${result.configFile}
348
- Platform: ${result.platform}
349
- Daemon install: ${result.installed ? `enabled at ${result.startupTarget}` : "not installed"}
350
- Git hooks: ${result.gitHooksInstalled ? result.gitHooks.join(", ") : "not installed"}
351
- MCP config: ${result.mcpConfigured ? result.mcpConfigFile : "skipped"}
352
- Checks: ${result.checks.join(", ")}
361
+ const bootstrapFallback = renderRepoLocalCliCommands(path.relative(rootDir, path.join(result.systemDir, "..", "context")).replaceAll("\\", "/"), "resume --agent codex");
362
+ process.stdout.write(`System files: ${result.systemDir}
363
+ Config: ${result.configFile}
364
+ Platform: ${result.platform}
365
+ Daemon install: ${result.installed ? `enabled at ${result.startupTarget}` : "not installed"}
366
+ Git hooks: ${result.gitHooksInstalled ? result.gitHooks.join(", ") : "not installed"}
367
+ MCP config: ${result.mcpConfigured ? result.mcpConfigFile : "skipped"}
368
+ Checks: ${result.checks.join(", ")}
369
+ Repo-local CLI: ${bootstrapFallback}
353
370
  `);
354
371
  return 0;
355
372
  }
@@ -596,6 +613,11 @@ async function main() {
596
613
  const parsed = parseArgs(process.argv.slice(2));
597
614
  const rootDir = process.cwd();
598
615
  switch (parsed.command) {
616
+ case "version":
617
+ case "--version":
618
+ case "-v":
619
+ process.stdout.write(`${getVersion()}\n`);
620
+ return 0;
599
621
  case "init":
600
622
  return handleInit(rootDir, parsed);
601
623
  case "bootstrap":