@codeledger/cli 0.6.8 → 0.6.9

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 (83) hide show
  1. package/dist/commands/activate.d.ts.map +1 -1
  2. package/dist/commands/activate.js +16 -1
  3. package/dist/commands/activate.js.map +1 -1
  4. package/dist/commands/commit-msg.d.ts +58 -0
  5. package/dist/commands/commit-msg.d.ts.map +1 -0
  6. package/dist/commands/commit-msg.js +461 -0
  7. package/dist/commands/commit-msg.js.map +1 -0
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +14 -0
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/intent.d.ts +3 -1
  12. package/dist/commands/intent.d.ts.map +1 -1
  13. package/dist/commands/intent.js +68 -2
  14. package/dist/commands/intent.js.map +1 -1
  15. package/dist/commands/pr-summary.d.ts +59 -0
  16. package/dist/commands/pr-summary.d.ts.map +1 -0
  17. package/dist/commands/pr-summary.js +524 -0
  18. package/dist/commands/pr-summary.js.map +1 -0
  19. package/dist/commands/session-cleanup.js +1 -0
  20. package/dist/commands/session-cleanup.js.map +1 -1
  21. package/dist/commands/session-summary.d.ts.map +1 -1
  22. package/dist/commands/session-summary.js +135 -3
  23. package/dist/commands/session-summary.js.map +1 -1
  24. package/dist/commands/setup-ci.d.ts.map +1 -1
  25. package/dist/commands/setup-ci.js +12 -0
  26. package/dist/commands/setup-ci.js.map +1 -1
  27. package/dist/commands/verify.d.ts.map +1 -1
  28. package/dist/commands/verify.js +35 -3
  29. package/dist/commands/verify.js.map +1 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +45 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/intent/extractor.d.ts +15 -0
  34. package/dist/intent/extractor.d.ts.map +1 -0
  35. package/dist/intent/extractor.js +149 -0
  36. package/dist/intent/extractor.js.map +1 -0
  37. package/dist/intent/fetcher.d.ts +33 -0
  38. package/dist/intent/fetcher.d.ts.map +1 -0
  39. package/dist/intent/fetcher.js +364 -0
  40. package/dist/intent/fetcher.js.map +1 -0
  41. package/dist/intent/loader.d.ts +26 -0
  42. package/dist/intent/loader.d.ts.map +1 -0
  43. package/dist/intent/loader.js +80 -0
  44. package/dist/intent/loader.js.map +1 -0
  45. package/dist/intent/types.d.ts +33 -0
  46. package/dist/intent/types.d.ts.map +1 -0
  47. package/dist/intent/types.js +9 -0
  48. package/dist/intent/types.js.map +1 -0
  49. package/dist/project-config.d.ts +38 -0
  50. package/dist/project-config.d.ts.map +1 -0
  51. package/dist/project-config.js +206 -0
  52. package/dist/project-config.js.map +1 -0
  53. package/dist/review-intelligence/detectors/architecture-graph.d.ts +18 -0
  54. package/dist/review-intelligence/detectors/architecture-graph.d.ts.map +1 -0
  55. package/dist/review-intelligence/detectors/architecture-graph.js +73 -0
  56. package/dist/review-intelligence/detectors/architecture-graph.js.map +1 -0
  57. package/dist/review-intelligence/detectors/pack-rules.d.ts +16 -0
  58. package/dist/review-intelligence/detectors/pack-rules.d.ts.map +1 -0
  59. package/dist/review-intelligence/detectors/pack-rules.js +107 -0
  60. package/dist/review-intelligence/detectors/pack-rules.js.map +1 -0
  61. package/dist/review-intelligence/fixes/index.d.ts +18 -0
  62. package/dist/review-intelligence/fixes/index.d.ts.map +1 -1
  63. package/dist/review-intelligence/fixes/index.js +198 -9
  64. package/dist/review-intelligence/fixes/index.js.map +1 -1
  65. package/dist/review-intelligence/index.d.ts +4 -1
  66. package/dist/review-intelligence/index.d.ts.map +1 -1
  67. package/dist/review-intelligence/index.js +20 -3
  68. package/dist/review-intelligence/index.js.map +1 -1
  69. package/dist/review-intelligence/invariants.d.ts +15 -0
  70. package/dist/review-intelligence/invariants.d.ts.map +1 -1
  71. package/dist/review-intelligence/invariants.js +36 -5
  72. package/dist/review-intelligence/invariants.js.map +1 -1
  73. package/dist/review-intelligence/types.d.ts +16 -12
  74. package/dist/review-intelligence/types.d.ts.map +1 -1
  75. package/dist/review-intelligence/types.js +9 -1
  76. package/dist/review-intelligence/types.js.map +1 -1
  77. package/dist/templates/claude-md.d.ts.map +1 -1
  78. package/dist/templates/claude-md.js +23 -128
  79. package/dist/templates/claude-md.js.map +1 -1
  80. package/dist/templates/hooks.d.ts.map +1 -1
  81. package/dist/templates/hooks.js +39 -0
  82. package/dist/templates/hooks.js.map +1 -1
  83. package/package.json +9 -9
@@ -11,154 +11,49 @@ export function claudeMdSection() {
11
11
  '## CodeLedger Integration',
12
12
  '',
13
13
  'This repo uses [CodeLedger](https://github.com/codeledgerECF/codeledger-blackbox) for deterministic context selection.',
14
- 'CodeLedger is a **real CLI tool** installed in this repo — not a prompt technique or convention.',
14
+ 'CodeLedger is a **real CLI tool** — not a prompt technique. All commands must run in a real shell.',
15
15
  '',
16
- '### Rule 0: Activate Before Every Task',
16
+ '### Activate Before Every Task',
17
17
  '',
18
- 'Before starting ANY task code review, bug fix, refactor, feature, documentation **always run `codeledger activate` first.**',
19
- 'This is the single most important rule. CodeLedger selects the most relevant files for the task so you start with the right context.',
20
- '',
21
- '**When suggesting a task to the user**, always include the activate command:',
22
- '',
23
- '> "I\'ll start by running `codeledger activate --task "staged code review"` to select the most relevant files, then proceed with the review."',
24
- '',
25
- '**When the user confirms a task**, run activate immediately:',
18
+ 'Before starting ANY task, run activate first. This selects the most relevant files for the task.',
26
19
  '',
27
20
  '```bash',
28
21
  'npx codeledger activate --task "one-line description of the task"',
29
22
  '```',
30
23
  '',
31
- 'Then read `.codeledger/active-bundle.md` to see which files were selected.',
32
- '',
33
- '### Rule 1: ALWAYS Execute via Shell',
34
- '',
35
- 'Every `codeledger` command **must** be executed in a real shell (Bash tool, terminal, subprocess).',
36
- '**NEVER** do any of the following:',
37
- '',
38
- '- Simulate or approximate CodeLedger output',
39
- '- Manually construct bundle recall/precision/token numbers',
40
- '- Write to any file under `.codeledger/` directly',
41
- '- Claim CodeLedger "ran" without actually executing the command',
42
- '- Fabricate a session summary, session progress, or bundle',
43
- '- Paraphrase or reformat CodeLedger output as if you ran it',
44
- '',
45
- 'If a command fails or is unavailable, **say so** — do not invent output.',
24
+ 'Then read `.codeledger/active-bundle.md` prioritize files listed there.',
46
25
  '',
47
- '### Rule 2: Verify Before Claiming Success',
26
+ '### Core Rules',
48
27
  '',
49
- 'After running any `codeledger` command, check the exit code and output.',
50
- 'If the command prints an error or returns a non-zero exit code:',
51
- '',
52
- '1. Show the user the actual error message',
53
- '2. Do NOT proceed as if the command succeeded',
54
- '3. Suggest `npx codeledger init` if the error mentions missing config',
55
- '',
56
- '### Rule 3: Re-Engage Between Stages',
57
- '',
58
- 'For multi-step tasks (staged code reviews, multi-file refactors, feature + tests, etc.),',
59
- '**do not let CodeLedger go silent after the initial activate.** Re-engage between stages:',
60
- '',
61
- '| When | What to run |',
62
- '|------|-------------|',
63
- '| After completing a stage/phase | `npx codeledger progress-check` — see bundle coverage + suggestions |',
64
- '| When you discover new context | `npx codeledger refine --learned "discovered X depends on Y"` — re-score the bundle |',
65
- '| When moving to a different phase | `npx codeledger refine --learned "completed error handling, now reviewing performance"` |',
66
- '| When most reads are off-bundle | `npx codeledger refine --learned "task shifted to X" --add-keywords "keyword1,keyword2"` |',
67
- '| Mid-review (review mode) | `npx codeledger review-coverage` — check which required files are still unread |',
68
- '',
69
- 'The `progress-check` command is lightweight and designed for mid-session use. It shows:',
70
- '- How many bundle files you\'ve read vs not',
71
- '- Off-bundle file hotspots',
72
- '- Actionable next steps',
73
- '',
74
- '**Example multi-stage pattern:**',
75
- '```',
76
- '1. codeledger activate --task "staged code review"',
77
- '2. ... complete Stage 1 (error handling) ...',
78
- '3. codeledger progress-check',
79
- '4. codeledger refine --learned "error handling solid, jitter issue found in retries"',
80
- '5. ... complete Stage 2 (testing) ...',
81
- '6. codeledger progress-check',
82
- '7. ... continue through remaining stages ...',
83
- '8. codeledger session-summary (auto-runs on session end)',
84
- '```',
28
+ '1. **Execute via shell** — never simulate, fabricate, or approximate CodeLedger output. If a command fails, say so.',
29
+ '2. **Verify results** check exit codes. Show errors to the user. Suggest `npx codeledger init` for missing config.',
30
+ '3. **`.codeledger/` is read-only** — never create/edit files there. Use CLI commands instead (`activate`, `session-progress`, `session-summary`).',
85
31
  '',
86
- '### Available Commands',
32
+ '### Mid-Session Commands',
87
33
  '',
88
- '| Command | What It Does |',
34
+ '| Command | When to use |',
89
35
  '|---------|-------------|',
90
- '| `npx codeledger init [--force]` | Initialize CodeLedger in a repo (creates `.codeledger/`, config, hooks) |',
91
- '| `npx codeledger scan` | Rebuild the repo index (dependency graph, churn, test map) |',
92
- '| `npx codeledger activate --task "..."` | Scan repo (if stale), generate context bundle, write `.codeledger/active-bundle.md` |',
93
- '| `npx codeledger bundle --task "..."` | Generate a context bundle (JSON only, no active-bundle write) |',
94
- '| `npx codeledger refine --learned "..."` | Re-score bundle mid-session with new context, keywords, or file exclusions |',
95
- '| `npx codeledger progress-check` | Mid-session check: bundle coverage, off-bundle reads, suggestions |',
96
- '| `npx codeledger session-progress` | Write a ground-truth session progress snapshot |',
97
- '| `npx codeledger session-summary` | Show session-end value recap (recall, precision, token savings) |',
98
- '| `npx codeledger review-coverage` | Check review coverage mid-session (review mode) |',
99
- '| `npx codeledger doctor` | Integration health check (config, hooks, index, ledger) |',
100
- '| `npx codeledger setup-ci [--mode ...]` | Generate GitHub Actions workflow + policy for CI integration |',
101
- '| `npx codeledger manifest --task "..."` | Generate deterministic context manifest (evidence payload) |',
102
- '| `npx codeledger verify --task "..."` | CI enforcement: evaluate policy, emit artifacts, return exit code |',
103
- '| `npx codeledger intent init\\|show\\|set\\|ack` | Intent governance (deterministic drift detection) |',
104
- '| `npx codeledger checkpoint create\\|restore\\|list` | Save/restore incremental session checkpoints |',
105
- '| `npx codeledger vendor` | Vendor standalone CLI into repo for cloud/web environments |',
106
- '',
107
- '**Trigger phrases:** If the user asks for a "session summary", "session recap", "codeledger summary", "how did the bundle do", or anything similar — run `npx codeledger session-summary` in your shell. Do not construct the output yourself.',
108
- '',
109
- '### Rule 4: .codeledger/ Is Read-Only to Agents',
110
- '',
111
- 'All files under `.codeledger/` are managed exclusively by the CLI.',
112
- '**Never create, edit, or overwrite** any file in `.codeledger/` — not even to "help" or "fix" something.',
113
- '',
114
- '| Instead of writing to... | Run this command |',
115
- '|--------------------------|-----------------|',
116
- '| `.codeledger/active-bundle.md` | `npx codeledger activate --task "..."` |',
117
- '| `.codeledger/session-progress.md` | `npx codeledger session-progress` |',
118
- '| `.codeledger/config.json` | `npx codeledger init --force` (or user edits manually) |',
119
- '| Session summary output | `npx codeledger session-summary` |',
120
- '',
121
- '### Hooks (Automatic)',
122
- '',
123
- 'CodeLedger hooks (`.claude/hooks.json`) run automatically:',
124
- '',
125
- '- **On session start:** warms the repo index and generates an initial bundle',
126
- '- **After every 10 file reads:** nudges you to run `progress-check` or `refine`',
127
- '- **On git commit:** shows bundle recall/precision for the current task',
128
- '- **Before compaction:** saves a progress snapshot you can read after compaction',
129
- '- **On session end:** shows a final session recap',
130
- '',
131
- 'You do not need to run `codeledger session-summary` manually after commits — the hook does it. But you can run it if the user explicitly asks.',
132
- '',
133
- '### Using the Context Bundle',
36
+ '| `npx codeledger progress-check` | After completing a stage see bundle coverage |',
37
+ '| `npx codeledger refine --learned "..."` | When you discover new context or task shifts |',
38
+ '| `npx codeledger review-coverage` | Mid-review check which bundle files are unread |',
134
39
  '',
135
- 'If `.codeledger/active-bundle.md` exists and is not empty, it lists the most relevant files ranked by score with reasons and code excerpts.',
136
- '**Prioritize reading and working within the files listed in that bundle** — they were selected deterministically based on the task description.',
40
+ '### All Commands',
137
41
  '',
138
- 'To refresh the bundle for a new task:',
42
+ '`activate`, `scan`, `bundle`, `refine`, `progress-check`, `session-progress`, `session-summary`,',
43
+ '`review-coverage`, `doctor`, `verify`, `manifest`, `intent`, `checkpoint`, `setup-ci`, `vendor`',
139
44
  '',
140
- '```bash',
141
- 'npx codeledger activate --task "describe the task here"',
142
- '```',
143
- '',
144
- '### Multi-Session Awareness',
145
- '',
146
- 'If you see a session ID in your environment (`CODELEDGER_SESSION`) or in a PID marker file,',
147
- 'always pass `--session $CODELEDGER_SESSION` when running codeledger commands.',
148
- 'Your session-specific bundle is at `.codeledger/sessions/{session-id}/active-bundle.md`.',
149
- 'If no session ID is set, use the default: `.codeledger/active-bundle.md`.',
45
+ 'Run `npx codeledger help` for details on any command.',
150
46
  '',
151
- 'To see all active sessions: `npx codeledger sessions`',
47
+ '**Trigger phrases:** If the user asks for a "session summary" or "how did the bundle do" — run `npx codeledger session-summary`. Do not construct the output yourself.',
152
48
  '',
153
- '### Quick Verification',
49
+ '### Hooks (Automatic)',
154
50
  '',
155
- 'To verify CodeLedger is installed and working:',
51
+ 'Hooks in `.claude/hooks.json` run automatically: bundle on session start, recall/precision on commit, progress snapshot before compaction, recap on session end.',
156
52
  '',
157
- '```bash',
158
- 'npx codeledger --version',
159
- '```',
53
+ '### Multi-Session',
160
54
  '',
161
- 'If this fails, CodeLedger may not be installed. Run `npm install` or see the project README.',
55
+ 'If `CODELEDGER_SESSION` is set, pass `--session $CODELEDGER_SESSION` to commands.',
56
+ 'Session bundle: `.codeledger/sessions/{session-id}/active-bundle.md`.',
162
57
  '',
163
58
  ].join('\n');
164
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,2BAA2B;QAC3B,EAAE;QACF,wHAAwH;QACxH,kGAAkG;QAClG,EAAE;QACF,wCAAwC;QACxC,EAAE;QACF,iIAAiI;QACjI,sIAAsI;QACtI,EAAE;QACF,8EAA8E;QAC9E,EAAE;QACF,+IAA+I;QAC/I,EAAE;QACF,8DAA8D;QAC9D,EAAE;QACF,SAAS;QACT,mEAAmE;QACnE,KAAK;QACL,EAAE;QACF,4EAA4E;QAC5E,EAAE;QACF,sCAAsC;QACtC,EAAE;QACF,oGAAoG;QACpG,oCAAoC;QACpC,EAAE;QACF,6CAA6C;QAC7C,4DAA4D;QAC5D,mDAAmD;QACnD,iEAAiE;QACjE,4DAA4D;QAC5D,6DAA6D;QAC7D,EAAE;QACF,0EAA0E;QAC1E,EAAE;QACF,4CAA4C;QAC5C,EAAE;QACF,yEAAyE;QACzE,iEAAiE;QACjE,EAAE;QACF,2CAA2C;QAC3C,+CAA+C;QAC/C,uEAAuE;QACvE,EAAE;QACF,sCAAsC;QACtC,EAAE;QACF,0FAA0F;QAC1F,2FAA2F;QAC3F,EAAE;QACF,wBAAwB;QACxB,wBAAwB;QACxB,0GAA0G;QAC1G,yHAAyH;QACzH,gIAAgI;QAChI,+HAA+H;QAC/H,+GAA+G;QAC/G,EAAE;QACF,yFAAyF;QACzF,6CAA6C;QAC7C,4BAA4B;QAC5B,yBAAyB;QACzB,EAAE;QACF,kCAAkC;QAClC,KAAK;QACL,oDAAoD;QACpD,8CAA8C;QAC9C,8BAA8B;QAC9B,sFAAsF;QACtF,uCAAuC;QACvC,8BAA8B;QAC9B,8CAA8C;QAC9C,2DAA2D;QAC3D,KAAK;QACL,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,4BAA4B;QAC5B,2BAA2B;QAC3B,+GAA+G;QAC/G,wFAAwF;QACxF,kIAAkI;QAClI,0GAA0G;QAC1G,0HAA0H;QAC1H,yGAAyG;QACzG,wFAAwF;QACxF,wGAAwG;QACxG,wFAAwF;QACxF,uFAAuF;QACvF,2GAA2G;QAC3G,yGAAyG;QACzG,8GAA8G;QAC9G,yGAAyG;QACzG,wGAAwG;QACxG,0FAA0F;QAC1F,EAAE;QACF,gPAAgP;QAChP,EAAE;QACF,iDAAiD;QACjD,EAAE;QACF,oEAAoE;QACpE,0GAA0G;QAC1G,EAAE;QACF,iDAAiD;QACjD,gDAAgD;QAChD,6EAA6E;QAC7E,2EAA2E;QAC3E,wFAAwF;QACxF,+DAA+D;QAC/D,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,4DAA4D;QAC5D,EAAE;QACF,8EAA8E;QAC9E,iFAAiF;QACjF,yEAAyE;QACzE,kFAAkF;QAClF,mDAAmD;QACnD,EAAE;QACF,gJAAgJ;QAChJ,EAAE;QACF,8BAA8B;QAC9B,EAAE;QACF,6IAA6I;QAC7I,iJAAiJ;QACjJ,EAAE;QACF,uCAAuC;QACvC,EAAE;QACF,SAAS;QACT,yDAAyD;QACzD,KAAK;QACL,EAAE;QACF,6BAA6B;QAC7B,EAAE;QACF,6FAA6F;QAC7F,+EAA+E;QAC/E,0FAA0F;QAC1F,2EAA2E;QAC3E,EAAE;QACF,uDAAuD;QACvD,EAAE;QACF,wBAAwB;QACxB,EAAE;QACF,gDAAgD;QAChD,EAAE;QACF,SAAS;QACT,0BAA0B;QAC1B,KAAK;QACL,EAAE;QACF,8FAA8F;QAC9F,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,2BAA2B;QAC3B,EAAE;QACF,wHAAwH;QACxH,oGAAoG;QACpG,EAAE;QACF,gCAAgC;QAChC,EAAE;QACF,kGAAkG;QAClG,EAAE;QACF,SAAS;QACT,mEAAmE;QACnE,KAAK;QACL,EAAE;QACF,2EAA2E;QAC3E,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,qHAAqH;QACrH,sHAAsH;QACtH,mJAAmJ;QACnJ,EAAE;QACF,0BAA0B;QAC1B,EAAE;QACF,2BAA2B;QAC3B,2BAA2B;QAC3B,sFAAsF;QACtF,4FAA4F;QAC5F,yFAAyF;QACzF,EAAE;QACF,kBAAkB;QAClB,EAAE;QACF,kGAAkG;QAClG,iGAAiG;QACjG,EAAE;QACF,uDAAuD;QACvD,EAAE;QACF,wKAAwK;QACxK,EAAE;QACF,uBAAuB;QACvB,EAAE;QACF,kKAAkK;QAClK,EAAE;QACF,mBAAmB;QACnB,EAAE;QACF,mFAAmF;QACnF,uEAAuE;QACvE,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/templates/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE;QACL,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;QAC3B,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;KACpB,CAAC;CACH;AAED,wBAAgB,YAAY,IAAI,WAAW,CAmK1C"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/templates/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE;QACL,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;QAC3B,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;KACpB,CAAC;CACH;AAED,wBAAgB,YAAY,IAAI,WAAW,CA0M1C"}
@@ -128,6 +128,45 @@ export function defaultHooks() {
128
128
  ].join(' '),
129
129
  timeout: 3000,
130
130
  },
131
+ // Out-of-bundle edit tracker — nudges refresh when agent drifts from bundle.
132
+ {
133
+ type: 'command',
134
+ command: [
135
+ 'if [ "$TOOL_NAME" = "Edit" ] || [ "$TOOL_NAME" = "Write" ]; then',
136
+ ' CL_SID="${CODELEDGER_SESSION:-}";',
137
+ ' if [ -z "$CL_SID" ] && [ -n "$$" ]; then',
138
+ ' CL_MARKER=".codeledger/.current-session-pid-$PPID";',
139
+ ' [ -f "$CL_MARKER" ] && CL_SID=$(cat "$CL_MARKER" 2>/dev/null);',
140
+ ' fi;',
141
+ ' if [ -n "$CL_SID" ]; then',
142
+ ' BUNDLE=".codeledger/sessions/$CL_SID/active-bundle.md";',
143
+ ' DRIFT_FILE=".codeledger/sessions/$CL_SID/.out-of-bundle-edits";',
144
+ ' else',
145
+ ' BUNDLE=".codeledger/active-bundle.md";',
146
+ ' DRIFT_FILE=".codeledger/.out-of-bundle-edits";',
147
+ ' fi;',
148
+ ' EDIT_PATH=$(echo "$TOOL_INPUT" | grep -o \'"file_path":"[^"]*"\' | head -1 | sed \'s/"file_path":"//;s/"//g\' 2>/dev/null || echo "");',
149
+ ' if [ -n "$EDIT_PATH" ] && [ -f "$BUNDLE" ]; then',
150
+ ' REL_PATH=$(echo "$EDIT_PATH" | sed "s|^$(pwd)/||");',
151
+ ' if ! grep -qF "$REL_PATH" "$BUNDLE" 2>/dev/null; then',
152
+ ' mkdir -p "$(dirname "$DRIFT_FILE")";',
153
+ ' echo "$REL_PATH" >> "$DRIFT_FILE";',
154
+ ' OOB_COUNT=$(wc -l < "$DRIFT_FILE" 2>/dev/null | tr -d " ");',
155
+ ' NUDGE_AT=5;',
156
+ ' if [ "$OOB_COUNT" = "$NUDGE_AT" ]; then',
157
+ ' echo "CodeLedger: $OOB_COUNT edits outside the bundle. Consider refreshing: codeledger activate --task \\"your current task\\"";',
158
+ ' if [ -n "$CL_SID" ]; then',
159
+ ' rm -f ".codeledger/sessions/$CL_SID/.hook-reminded";',
160
+ ' else',
161
+ ' rm -f ".codeledger/.hook-reminded";',
162
+ ' fi;',
163
+ ' fi;',
164
+ ' fi;',
165
+ ' fi;',
166
+ 'fi',
167
+ ].join(' '),
168
+ timeout: 3000,
169
+ },
131
170
  ],
132
171
  PreCompact: [
133
172
  {
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/templates/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/templates/hooks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeledger/cli",
3
- "version": "0.6.8",
3
+ "version": "0.6.9",
4
4
  "type": "module",
5
5
  "description": "CLI for CodeLedger — deterministic context selection for AI coding agents",
6
6
  "license": "MIT",
@@ -27,14 +27,14 @@
27
27
  }
28
28
  },
29
29
  "dependencies": {
30
- "@codeledger/types": "0.6.8",
31
- "@codeledger/core": "0.6.8",
32
- "@codeledger/core-engine": "0.6.8",
33
- "@codeledger/repo": "0.6.8",
34
- "@codeledger/instrument": "0.6.8",
35
- "@codeledger/harness": "0.6.8",
36
- "@codeledger/cowork": "0.6.8",
37
- "@codeledger/selector": "0.6.8"
30
+ "@codeledger/core": "0.6.9",
31
+ "@codeledger/core-engine": "0.6.9",
32
+ "@codeledger/types": "0.6.9",
33
+ "@codeledger/repo": "0.6.9",
34
+ "@codeledger/instrument": "0.6.9",
35
+ "@codeledger/harness": "0.6.9",
36
+ "@codeledger/cowork": "0.6.9",
37
+ "@codeledger/selector": "0.6.9"
38
38
  },
39
39
  "devDependencies": {
40
40
  "typescript": "^5.4.0"