@nanonets/graft 0.22.1 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +4 -4
  2. package/dist/ask/ask.d.ts +0 -3
  3. package/dist/ask/ask.d.ts.map +1 -1
  4. package/dist/ask/ask.js +1 -3
  5. package/dist/ask/ask.js.map +1 -1
  6. package/dist/brand.d.ts.map +1 -1
  7. package/dist/brand.js +4 -1
  8. package/dist/brand.js.map +1 -1
  9. package/dist/claude/format.d.ts +1 -9
  10. package/dist/claude/format.d.ts.map +1 -1
  11. package/dist/claude/format.js +2 -17
  12. package/dist/claude/format.js.map +1 -1
  13. package/dist/claude/hook-layers.d.ts.map +1 -1
  14. package/dist/claude/hook-layers.js +5 -3
  15. package/dist/claude/hook-layers.js.map +1 -1
  16. package/dist/claude/hooks.d.ts +6 -0
  17. package/dist/claude/hooks.d.ts.map +1 -1
  18. package/dist/claude/hooks.js +101 -14
  19. package/dist/claude/hooks.js.map +1 -1
  20. package/dist/claude/init.d.ts +38 -7
  21. package/dist/claude/init.d.ts.map +1 -1
  22. package/dist/claude/init.js +172 -33
  23. package/dist/claude/init.js.map +1 -1
  24. package/dist/claude/settings-merge.d.ts +23 -0
  25. package/dist/claude/settings-merge.d.ts.map +1 -1
  26. package/dist/claude/settings-merge.js +103 -7
  27. package/dist/claude/settings-merge.js.map +1 -1
  28. package/dist/claude/skill-template.d.ts +4 -3
  29. package/dist/claude/skill-template.d.ts.map +1 -1
  30. package/dist/claude/skill-template.js +7 -3
  31. package/dist/claude/skill-template.js.map +1 -1
  32. package/dist/claude/state.d.ts +1 -1
  33. package/dist/claude/state.d.ts.map +1 -1
  34. package/dist/cli.js +43 -35
  35. package/dist/cli.js.map +1 -1
  36. package/dist/context/map-dir.d.ts +13 -0
  37. package/dist/context/map-dir.d.ts.map +1 -0
  38. package/dist/context/map-dir.js +67 -0
  39. package/dist/context/map-dir.js.map +1 -0
  40. package/dist/context/node-file.d.ts +4 -3
  41. package/dist/context/node-file.d.ts.map +1 -1
  42. package/dist/context/node-file.js +18 -4
  43. package/dist/context/node-file.js.map +1 -1
  44. package/dist/hosts/claude-global.d.ts.map +1 -1
  45. package/dist/hosts/claude-global.js +31 -11
  46. package/dist/hosts/claude-global.js.map +1 -1
  47. package/dist/hosts/config-write.js +1 -1
  48. package/dist/hosts/config-write.js.map +1 -1
  49. package/dist/hosts/retract.d.ts.map +1 -1
  50. package/dist/hosts/retract.js +15 -6
  51. package/dist/hosts/retract.js.map +1 -1
  52. package/dist/notes/branches.d.ts +18 -1
  53. package/dist/notes/branches.d.ts.map +1 -1
  54. package/dist/notes/branches.js +73 -7
  55. package/dist/notes/branches.js.map +1 -1
  56. package/dist/notes/edit-overlap.d.ts +62 -0
  57. package/dist/notes/edit-overlap.d.ts.map +1 -0
  58. package/dist/notes/edit-overlap.js +202 -0
  59. package/dist/notes/edit-overlap.js.map +1 -0
  60. package/dist/notes/notes.d.ts +6 -0
  61. package/dist/notes/notes.d.ts.map +1 -1
  62. package/dist/notes/notes.js +12 -0
  63. package/dist/notes/notes.js.map +1 -1
  64. package/dist/notes/repo-trail.d.ts +3 -1
  65. package/dist/notes/repo-trail.d.ts.map +1 -1
  66. package/dist/notes/repo-trail.js +40 -3
  67. package/dist/notes/repo-trail.js.map +1 -1
  68. package/dist/notes/session-cost.d.ts +16 -4
  69. package/dist/notes/session-cost.d.ts.map +1 -1
  70. package/dist/notes/session-cost.js +120 -11
  71. package/dist/notes/session-cost.js.map +1 -1
  72. package/dist/upkeep-run.d.ts.map +1 -1
  73. package/dist/upkeep-run.js +4 -2
  74. package/dist/upkeep-run.js.map +1 -1
  75. package/dist/upkeep.js +2 -2
  76. package/dist/upkeep.js.map +1 -1
  77. package/dist/util/state.d.ts.map +1 -1
  78. package/dist/util/state.js +2 -1
  79. package/dist/util/state.js.map +1 -1
  80. package/package.json +1 -1
@@ -1,21 +1,31 @@
1
- import { mkdirSync, writeFileSync, readFileSync, chmodSync, rmSync } from 'node:fs';
2
- import { join, dirname, resolve } from 'node:path';
1
+ import { mkdirSync, writeFileSync, readFileSync, chmodSync, rmSync, rmdirSync, existsSync, appendFileSync } from 'node:fs';
2
+ import { join, dirname, resolve, isAbsolute } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
4
  import { execFileSync } from 'node:child_process';
5
5
  import { disableGraftServerIn, installClaudeGlobal } from '../hosts/claude-global.js';
6
- import { mergeGraftSettings } from './settings-merge.js';
6
+ import { mergeGraftSettings, mergeTrailShared, mergeTrailLocal } from './settings-merge.js';
7
7
  import { statuslineShim, hooksShim, rememberInstall } from './shim-template.js';
8
8
  import { skillTemplate } from './skill-template.js';
9
9
  import { mergeJsonKey, serverEntry } from '../hosts/mcp-config.js';
10
+ import { readJsonObject } from '../hosts/config-write.js';
11
+ import { ignoreInTrailDir } from '../notes/repo-trail.js';
12
+ export { ignoreInTrailDir };
10
13
  import { hasGraftIndex } from '../graph/root.js';
11
14
  import { repoWiredForTrail } from '../brand.js';
15
+ /** trail's committed hook, inside `.trail/` where a `.claude/*` ignore rule can't drop it. */
16
+ export const TRAIL_HOOK = join('.trail', 'hook.cjs');
17
+ /** The status line's shim. Also in `.trail/`, but ignored there: only people with trail draw it. */
18
+ export const TRAIL_STATUSLINE = join('.trail', 'statusline.cjs');
19
+ /** Where trail's skill goes: the user's own `~/.claude`, never the repo. */
20
+ export function trailSkillPath(home = homedir()) {
21
+ return join(home, '.claude', 'skills', 'trail', 'SKILL.md');
22
+ }
12
23
  /**
13
24
  * The files `runInit` writes — pure, no writes, so `--dry-run` and the picker
14
- * can report them up front. All repo-local: the Claude Code layer never writes
15
- * outside the project.
25
+ * can report them up front.
16
26
  */
17
- export function claudeTargets(dir, initBrand) {
18
- return claudeTargetsFor(dir, wiringName(dir, initBrand));
27
+ export function claudeTargets(dir, initBrand, home) {
28
+ return claudeTargetsFor(dir, wiringName(dir, initBrand), home);
19
29
  }
20
30
  /**
21
31
  * The name the Claude Code wiring goes by in `dir`: trail's where `trail init`
@@ -26,8 +36,36 @@ export function claudeTargets(dir, initBrand) {
26
36
  export function wiringName(dir, initBrand) {
27
37
  return initBrand === 'trail' || repoWiredForTrail(dir) ? 'trail' : 'graft';
28
38
  }
29
- /** `claudeTargets` under one name. Uninstall walks both, so either set comes out. */
30
- export function claudeTargetsFor(dir, name) {
39
+ /**
40
+ * `claudeTargets` under one name.
41
+ *
42
+ * trail splits what it writes in two. Shared, committed once by whoever sets
43
+ * the repo up: `.trail/hook.cjs` and one SessionStart entry in
44
+ * `.claude/settings.json`, which is all a teammate without trail needs to be
45
+ * shown the learnings and offered trail. Personal, where git never looks: the
46
+ * status line and allowlist in `.claude/settings.local.json`, the skill in
47
+ * `~/.claude/skills/`, and the other hooks in `~/.claude` (hosts/claude-global.ts).
48
+ * No MCP server: the hooks and the `trail` command do what it did.
49
+ */
50
+ export function claudeTargetsFor(dir, name, home = homedir()) {
51
+ if (name !== 'trail')
52
+ return legacyClaudeTargets(dir, name);
53
+ const t = (path, what) => ({ hostId: 'claude', id: 'claude', path, scope: 'repo', kind: 'claude', what });
54
+ return [
55
+ t(join(dir, '.claude', 'settings.json'), 'trail SessionStart hook, shared'),
56
+ t(join(dir, TRAIL_HOOK), 'hooks shim, shared'),
57
+ t(join(dir, '.claude', 'settings.local.json'), 'trail statusline + allowlist, yours'),
58
+ t(join(dir, TRAIL_STATUSLINE), 'statusline shim, git-ignored'),
59
+ { hostId: 'claude', id: 'claude', path: trailSkillPath(home), scope: 'global', kind: 'claude', what: 'trail skill' },
60
+ ];
61
+ }
62
+ /**
63
+ * The layout every graft repo has, and trail repos had before 0.23: shims in
64
+ * `.claude/helpers/`, the skill in `.claude/skills/`, the server in `.mcp.json`,
65
+ * in that order. `runInit` writes it for graft; for trail it's what a refresh
66
+ * clears away, and what uninstall removes under both names.
67
+ */
68
+ export function legacyClaudeTargets(dir, name) {
31
69
  const t = (path, what, kind = 'claude') => ({ hostId: 'claude', id: 'claude', path, scope: 'repo', kind, what });
32
70
  return [
33
71
  t(join(dir, '.claude', 'settings.json'), `${name} statusline + hook blocks`),
@@ -61,17 +99,14 @@ export function buildGraphIfMissing(dir, opts) {
61
99
  }
62
100
  }
63
101
  export function runInit(dir, opts = {}) {
102
+ if (wiringName(dir, opts.brand) === 'trail')
103
+ return runTrailInit(dir, opts);
64
104
  // Same list `--dry-run` and the picker report, so the two can't drift apart.
65
- const name = wiringName(dir, opts.brand);
66
- const [settings, statusline, hooks, skill, mcpTarget] = claudeTargetsFor(dir, name).map((t) => t.path);
105
+ const [settings, statusline, hooks, skill, mcpTarget] = legacyClaudeTargets(dir, 'graft').map((t) => t.path);
67
106
  mkdirSync(dirname(statusline), { recursive: true });
68
107
  const settingsPath = settings;
69
- let existing = {};
70
- try {
71
- existing = JSON.parse(readFileSync(settingsPath, 'utf8'));
72
- }
73
- catch { /* none/invalid → start fresh */ }
74
- const { merged, warnings } = mergeGraftSettings(existing, { statusline: opts.statusline, name });
108
+ const existing = readSettings(settingsPath);
109
+ const { merged, warnings } = mergeGraftSettings(existing, { statusline: opts.statusline, name: 'graft' });
75
110
  writeFileSync(settingsPath, `${JSON.stringify(merged, null, 2)}\n`);
76
111
  const sl = statusline;
77
112
  const hk = hooks;
@@ -86,31 +121,135 @@ export function runInit(dir, opts = {}) {
86
121
  // greps source. Overwritten each run (graft owns this file), like the shims above.
87
122
  const skillPath = skill;
88
123
  mkdirSync(dirname(skillPath), { recursive: true });
89
- writeFileSync(skillPath, skillTemplate(name));
90
- // A repo moving from graft's names to trail's: the graft-named shims and
91
- // skill go, so the agent doesn't load two copies. Their settings entries
92
- // were already replaced by the merge above.
93
- if (name === 'trail') {
94
- const [, oldSl, oldHk, oldSkill] = claudeTargetsFor(dir, 'graft').map((t) => t.path);
95
- for (const f of [oldSl, oldHk])
96
- rmSync(f, { force: true });
97
- rmSync(dirname(oldSkill), { recursive: true, force: true });
98
- }
124
+ writeFileSync(skillPath, skillTemplate('graft'));
99
125
  // Register the graft MCP server in the project's .mcp.json so Claude Code
100
126
  // exposes graft_find_code/graft_trace_calls/etc. as tools — the same keyed merge the
101
127
  // other hosts use (existing servers preserved; unparseable files skipped).
102
- const mcp = mergeJsonKey('claude', mcpTarget, 'mcpServers', serverEntry({ brand: name }), name, name === 'trail' ? ['graft'] : []);
128
+ const mcp = mergeJsonKey('claude', mcpTarget, 'mcpServers', serverEntry({ brand: 'graft' }), 'graft');
103
129
  // The same wiring again, one level up in `~/.claude`, because everything above
104
130
  // this line can be erased by a `.gitignore` and lost to `git worktree add`. See
105
131
  // hosts/claude-global.ts for the failure that motivates it. Gated on the same
106
132
  // flag `registerMcpConfigs` uses, so `--no-global` still means "nothing outside
107
133
  // this repo".
108
- const global = opts.global === false ? [] : installClaudeGlobal(opts.home ?? homedir(), name);
109
- // A trail repo on a machine with graft's server installed for everything:
110
- // graft goes off in this folder, so Claude lists one server here.
111
- if (name === 'trail' && opts.global !== false)
112
- global.push(disableGraftServerIn(opts.home ?? homedir(), resolve(dir)));
134
+ const global = opts.global === false ? [] : installClaudeGlobal(opts.home ?? homedir(), 'graft');
113
135
  const built = buildGraphIfMissing(dir, opts);
114
136
  return { settingsPath, shims: [sl, hk], skill: skillPath, mcp, global, warnings, built };
115
137
  }
138
+ function readSettings(path) {
139
+ try {
140
+ return JSON.parse(readFileSync(path, 'utf8'));
141
+ }
142
+ catch {
143
+ return {};
144
+ } // none/invalid → start fresh
145
+ }
146
+ /**
147
+ * `runInit` for a repo on trail. Shared: `.trail/hook.cjs` and its one
148
+ * SessionStart entry in `.claude/settings.json`. Personal: everything else.
149
+ * Run again over a repo set up the old way, it moves it: the old shims, the
150
+ * repo skill and trail's `.mcp.json` server go.
151
+ */
152
+ function runTrailInit(dir, opts) {
153
+ const home = opts.home ?? homedir();
154
+ const global = opts.global !== false;
155
+ const [settings, hook, local, statusline, skill] = claudeTargetsFor(dir, 'trail', home).map((t) => t.path);
156
+ mkdirSync(dirname(hook), { recursive: true });
157
+ writeFileSync(hook, hooksShim());
158
+ chmodSync(hook, 0o755);
159
+ writeFileSync(statusline, statuslineShim());
160
+ chmodSync(statusline, 0o755);
161
+ ignoreInTrailDir(dir, 'statusline.cjs');
162
+ rememberInstall(home);
163
+ const shared = mergeTrailShared(readSettings(settings));
164
+ mkdirSync(dirname(settings), { recursive: true });
165
+ writeFileSync(settings, `${JSON.stringify(shared, null, 2)}\n`);
166
+ // Hooks for every other event come from `~/.claude`. Only when that's off do
167
+ // they go in the personal file, beside the status line.
168
+ const { merged, warnings } = mergeTrailLocal(readSettings(local), { statusline: opts.statusline, hooks: !global });
169
+ writeFileSync(local, `${JSON.stringify(merged, null, 2)}\n`);
170
+ keepOutOfGit(dir, join('.claude', 'settings.local.json'));
171
+ let skillPath = '';
172
+ if (global) {
173
+ mkdirSync(dirname(skill), { recursive: true });
174
+ writeFileSync(skill, skillTemplate('trail'));
175
+ skillPath = skill;
176
+ }
177
+ clearOldLayout(dir);
178
+ const globalWrites = global ? installClaudeGlobal(home, 'trail') : [];
179
+ // A trail repo on a machine with graft's server installed for everything:
180
+ // graft goes off in this folder, so its tools don't show here.
181
+ if (global)
182
+ globalWrites.push(disableGraftServerIn(home, resolve(dir)));
183
+ const built = buildGraphIfMissing(dir, opts);
184
+ return { settingsPath: settings, shims: [statusline, hook], skill: skillPath, mcp: null, global: globalWrites, warnings, built };
185
+ }
186
+ /**
187
+ * What trail wrote before 0.23 and doesn't any more: both names' shims in
188
+ * `.claude/helpers/`, the skill in `.claude/skills/`, and trail's server in
189
+ * `.mcp.json`. Settings entries are already gone: the merges replace them.
190
+ */
191
+ function clearOldLayout(dir) {
192
+ for (const n of ['graft', 'trail']) {
193
+ const [, oldSl, oldHk, oldSkill] = legacyClaudeTargets(dir, n).map((t) => t.path);
194
+ rmSync(oldSl, { force: true });
195
+ rmSync(oldHk, { force: true });
196
+ rmSync(dirname(oldSkill), { recursive: true, force: true });
197
+ }
198
+ // The folders they were in, once nothing else is: rmdir refuses a non-empty one.
199
+ for (const d of [join(dir, '.claude', 'helpers'), join(dir, '.claude', 'skills')]) {
200
+ try {
201
+ rmdirSync(d);
202
+ }
203
+ catch { /* holds the user's files, or was never there */ }
204
+ }
205
+ dropServer(join(dir, '.mcp.json'), ['trail', 'graft']);
206
+ }
207
+ /** Take trail's (or graft's) server out of an `.mcp.json`; the file goes if nothing else was in it. */
208
+ function dropServer(path, names) {
209
+ try {
210
+ const loaded = readJsonObject(path);
211
+ if (loaded === 'unparseable' || !loaded.existed)
212
+ return;
213
+ const root = loaded.root;
214
+ const servers = root.mcpServers;
215
+ if (!servers || typeof servers !== 'object' || !names.some((n) => n in servers))
216
+ return;
217
+ for (const n of names)
218
+ delete servers[n];
219
+ if (Object.keys(servers).length === 0)
220
+ delete root.mcpServers;
221
+ if (Object.keys(root).length === 0)
222
+ rmSync(path, { force: true });
223
+ else
224
+ writeFileSync(path, `${JSON.stringify(root, null, 2)}\n`);
225
+ }
226
+ catch { /* leave it as the user has it */ }
227
+ }
228
+ /**
229
+ * Keep a personal file out of git without touching the repo's `.gitignore`:
230
+ * if nothing ignores it already, it goes in `.git/info/exclude`, which is
231
+ * never committed. A folder that isn't a git checkout is left alone.
232
+ */
233
+ export function keepOutOfGit(dir, rel) {
234
+ try {
235
+ execFileSync('git', ['check-ignore', '-q', '--', rel], { cwd: dir, stdio: 'ignore' });
236
+ return; // exit 0: already ignored
237
+ }
238
+ catch (e) {
239
+ if (e.status !== 1)
240
+ return; // 128: not a git checkout
241
+ }
242
+ try {
243
+ let exclude = execFileSync('git', ['rev-parse', '--git-path', 'info/exclude'], { cwd: dir, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
244
+ if (!isAbsolute(exclude))
245
+ exclude = join(dir, exclude);
246
+ const line = `/${rel.split('\\').join('/')}`;
247
+ const text = existsSync(exclude) ? readFileSync(exclude, 'utf8') : '';
248
+ if (text.split('\n').some((l) => l.trim() === line))
249
+ return;
250
+ mkdirSync(dirname(exclude), { recursive: true });
251
+ appendFileSync(exclude, `${text && !text.endsWith('\n') ? '\n' : ''}${line}\n`);
252
+ }
253
+ catch { /* best-effort: git status shows the file, and nothing else breaks */ }
254
+ }
116
255
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/claude/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/claude/init.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  type Json = Record<string, any>;
2
+ /** trail's committed hook, `.trail/hook.cjs`, run for one event. */
3
+ export declare function trailHookCmd(arg: string): string;
2
4
  /**
3
5
  * Is this allowlist entry one graft wrote?
4
6
  *
@@ -39,5 +41,26 @@ export declare function mergeGraftSettings(existing: Json, opts?: {
39
41
  export declare function mergeGraftHooks(existing: Json, helpers: string): {
40
42
  merged: Json;
41
43
  };
44
+ /**
45
+ * trail's part of the committed `.claude/settings.json`: one SessionStart entry
46
+ * running `.trail/hook.cjs`, and nothing else. For a teammate without trail it
47
+ * shows the learnings and offers trail; with trail it hands off to the install.
48
+ * Anything an older init put here (status line, the other hooks, allowlist,
49
+ * footer regex) comes out, so the file a team commits is the same on every machine.
50
+ */
51
+ export declare function mergeTrailShared(existing: Json): Json;
52
+ /**
53
+ * trail's part of `.claude/settings.local.json`, the person's own: the status
54
+ * line, the footer regex and the allowlist, plus, when `~/.claude` doesn't carry
55
+ * them (`--no-global`), the hooks for every event but session start, which the
56
+ * shared file already runs once.
57
+ */
58
+ export declare function mergeTrailLocal(existing: Json, opts?: {
59
+ statusline?: boolean;
60
+ hooks?: boolean;
61
+ }): {
62
+ merged: Json;
63
+ warnings: string[];
64
+ };
42
65
  export {};
43
66
  //# sourceMappingURL=settings-merge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings-merge.d.ts","sourceRoot":"","sources":["../../src/claude/settings-merge.ts"],"names":[],"mappings":"AAEA,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AA2DhC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAEvD;AAOD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAE7E;AA8BD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,IAAI,EACd,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAAO,GAC5D;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAuCtC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,CASjF"}
1
+ {"version":3,"file":"settings-merge.d.ts","sourceRoot":"","sources":["../../src/claude/settings-merge.ts"],"names":[],"mappings":"AAEA,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAkChC,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAiCD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAEvD;AAOD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAE7E;AA8BD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,IAAI,EACd,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAAO,GAC5D;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAuCtC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,CASjF;AA+BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAQrD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,IAAI,EACd,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACnD;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAoBtC"}
@@ -1,8 +1,10 @@
1
1
  import { isGraftEntry } from '../hosts/config-write.js';
2
2
  const slCmd = (name = 'graft') => `node "\${CLAUDE_PROJECT_DIR:-.}/.claude/helpers/${name}-statusline.cjs"`;
3
+ /** trail's status line, from the shim in `.trail/` (see claude/init.ts). */
4
+ const TRAIL_SL_CMD = 'node "${CLAUDE_PROJECT_DIR:-.}/.trail/statusline.cjs"';
3
5
  /** Stable marker for "this statusLine is Graft's", not the full command string —
4
6
  * an older shim path or a GRAFT_DIR wrapper still names this file. Either name. */
5
- const STATUSLINE_HELPER = /(graft|trail)-statusline\.cjs/;
7
+ const STATUSLINE_HELPER = /(graft|trail)-statusline\.cjs|\.trail\/statusline\.cjs/;
6
8
  const FOOTER = 'graft/[\\w./-]+\\.md';
7
9
  // Every form graft is actually invoked as. 'graft:*' covers a global install;
8
10
  // the other two cover a repo working on graft itself (or any consumer running it
@@ -27,11 +29,17 @@ const REPO_HELPERS = '${CLAUDE_PROJECT_DIR:-.}/.claude/helpers';
27
29
  function hookCmd(arg, helpers = REPO_HELPERS, name = 'graft') {
28
30
  return `node "${helpers}/${name}-hooks.cjs" ${arg}`;
29
31
  }
32
+ /** trail's committed hook, `.trail/hook.cjs`, run for one event. */
33
+ export function trailHookCmd(arg) {
34
+ return `node "\${CLAUDE_PROJECT_DIR:-.}/.trail/hook.cjs" ${arg}`;
35
+ }
30
36
  function graftBlocks(helpers, name = 'graft') {
31
- const hookCmd_ = (arg, h) => hookCmd(arg, h, name);
37
+ return hookBlocks((arg) => hookCmd(arg, helpers, name));
38
+ }
39
+ function hookBlocks(hookCmd_) {
32
40
  return {
33
41
  PostToolUse: [
34
- { matcher: 'Write|Edit|MultiEdit', hooks: [{ type: 'command', command: hookCmd_('post-edit', helpers), timeout: 10000 }] },
42
+ { matcher: 'Write|Edit|MultiEdit', hooks: [{ type: 'command', command: hookCmd_('post-edit'), timeout: 10000 }] },
35
43
  // Score the usage mix and sum token savings. A graft retrieval (CLI `graft …`
36
44
  // via Bash, or the `graft_*` MCP tools) prints a `[graft] tokens saved ≈ N`
37
45
  // footer this hook sums into the session total; the same hook classifies
@@ -39,7 +47,7 @@ function graftBlocks(helpers, name = 'graft') {
39
47
  // `graft stats` and the `session_summary` graft-vs-grep ratio. Broad matcher,
40
48
  // but the handler no-ops instantly unless there is something to record, so an
41
49
  // unrelated Bash or a plain Read costs only a stdin read.
42
- { matcher: 'Bash|mcp__graft__|mcp__trail__|Read|Grep|Glob', hooks: [{ type: 'command', command: hookCmd_('tool-savings', helpers), timeout: 8000 }] },
50
+ { matcher: 'Bash|mcp__graft__|mcp__trail__|Read|Grep|Glob', hooks: [{ type: 'command', command: hookCmd_('tool-savings'), timeout: 8000 }] },
43
51
  ],
44
52
  // Longer budget than the other hooks: its `graft ask` is a real query, and a
45
53
  // query now brings the graph up to date first (graph/refresh.ts) — usually
@@ -49,9 +57,12 @@ function graftBlocks(helpers, name = 'graft') {
49
57
  // this bump (8s) keeps a child that fits inside 8s. Changing the number here is
50
58
  // therefore safe on its own — but it only reaches an existing repo when someone
51
59
  // re-runs `graft init`, since that is the only caller of this function.
52
- UserPromptSubmit: [{ hooks: [{ type: 'command', command: hookCmd_('prompt', helpers), timeout: 15000 }] }],
53
- SessionStart: [{ hooks: [{ type: 'command', command: hookCmd_('session-start', helpers), timeout: 8000 }] }],
54
- Stop: [{ hooks: [{ type: 'command', command: hookCmd_('stop', helpers), timeout: 8000 }] }],
60
+ UserPromptSubmit: [{ hooks: [{ type: 'command', command: hookCmd_('prompt'), timeout: 15000 }] }],
61
+ SessionStart: [{ hooks: [{ type: 'command', command: hookCmd_('session-start'), timeout: 8000 }] }],
62
+ Stop: [{ hooks: [{ type: 'command', command: hookCmd_('stop'), timeout: 8000 }] }],
63
+ // Sends the telemetry queue in a detached child, so closing Claude isn't
64
+ // slowed. Not fired when the terminal is killed; session start sends what's left.
65
+ SessionEnd: [{ hooks: [{ type: 'command', command: hookCmd_('session-end'), timeout: 5000 }] }],
55
66
  };
56
67
  }
57
68
  /**
@@ -151,4 +162,89 @@ export function mergeGraftHooks(existing, helpers) {
151
162
  }
152
163
  return { merged };
153
164
  }
165
+ /** Drop every fragment graft or trail wrote from a settings object, keeping the user's. */
166
+ function withoutOurs(existing) {
167
+ const merged = { ...(existing ?? {}) };
168
+ for (const key of ['statusLine', 'subagentStatusLine'])
169
+ if (isGraftStatusline(merged[key]))
170
+ delete merged[key];
171
+ if (merged.hooks && typeof merged.hooks === 'object' && !Array.isArray(merged.hooks)) {
172
+ const hooks = {};
173
+ for (const [event, prior] of Object.entries(merged.hooks)) {
174
+ const kept = Array.isArray(prior) ? prior.filter((e) => !isGraftEntry(e)) : prior;
175
+ if (!Array.isArray(kept) || kept.length)
176
+ hooks[event] = kept;
177
+ }
178
+ if (Object.keys(hooks).length)
179
+ merged.hooks = hooks;
180
+ else
181
+ delete merged.hooks;
182
+ }
183
+ if (Array.isArray(merged.footerLinksRegexes)) {
184
+ const kept = merged.footerLinksRegexes.filter((r) => !isGraftFooterRegex(r));
185
+ if (kept.length)
186
+ merged.footerLinksRegexes = kept;
187
+ else
188
+ delete merged.footerLinksRegexes;
189
+ }
190
+ if (merged.permissions && typeof merged.permissions === 'object' && Array.isArray(merged.permissions.allow)) {
191
+ const allow = merged.permissions.allow.filter((e) => !isGraftAllowEntry(e));
192
+ const permissions = { ...merged.permissions };
193
+ if (allow.length)
194
+ permissions.allow = allow;
195
+ else
196
+ delete permissions.allow;
197
+ if (Object.keys(permissions).length)
198
+ merged.permissions = permissions;
199
+ else
200
+ delete merged.permissions;
201
+ }
202
+ return merged;
203
+ }
204
+ /**
205
+ * trail's part of the committed `.claude/settings.json`: one SessionStart entry
206
+ * running `.trail/hook.cjs`, and nothing else. For a teammate without trail it
207
+ * shows the learnings and offers trail; with trail it hands off to the install.
208
+ * Anything an older init put here (status line, the other hooks, allowlist,
209
+ * footer regex) comes out, so the file a team commits is the same on every machine.
210
+ */
211
+ export function mergeTrailShared(existing) {
212
+ const merged = withoutOurs(existing);
213
+ merged.hooks = { ...(merged.hooks ?? {}) };
214
+ merged.hooks.SessionStart = [
215
+ ...(Array.isArray(merged.hooks.SessionStart) ? merged.hooks.SessionStart : []),
216
+ { hooks: [{ type: 'command', command: trailHookCmd('session-start'), timeout: 8000 }] },
217
+ ];
218
+ return merged;
219
+ }
220
+ /**
221
+ * trail's part of `.claude/settings.local.json`, the person's own: the status
222
+ * line, the footer regex and the allowlist, plus, when `~/.claude` doesn't carry
223
+ * them (`--no-global`), the hooks for every event but session start, which the
224
+ * shared file already runs once.
225
+ */
226
+ export function mergeTrailLocal(existing, opts = {}) {
227
+ const merged = withoutOurs(existing);
228
+ const warnings = [];
229
+ if (statuslineWanted(opts)) {
230
+ for (const key of ['statusLine', 'subagentStatusLine']) {
231
+ if (!merged[key])
232
+ merged[key] = { type: 'command', command: TRAIL_SL_CMD };
233
+ else if (key === 'statusLine')
234
+ warnings.push('Existing statusLine left untouched (a session allows only one). To use Trail, point it at .trail/statusline.cjs.');
235
+ }
236
+ }
237
+ if (opts.hooks) {
238
+ merged.hooks = { ...(merged.hooks ?? {}) };
239
+ for (const [event, blocks] of Object.entries(hookBlocks(trailHookCmd))) {
240
+ if (event === 'SessionStart')
241
+ continue;
242
+ merged.hooks[event] = [...(Array.isArray(merged.hooks[event]) ? merged.hooks[event] : []), ...blocks];
243
+ }
244
+ }
245
+ merged.footerLinksRegexes = [...(merged.footerLinksRegexes ?? []), FOOTER];
246
+ merged.permissions = { ...(merged.permissions ?? {}) };
247
+ merged.permissions.allow = [...(merged.permissions.allow ?? []), ...ALLOW_ENTRIES];
248
+ return { merged, warnings };
249
+ }
154
250
  //# sourceMappingURL=settings-merge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings-merge.js","sourceRoot":"","sources":["../../src/claude/settings-merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-merge.js","sourceRoot":"","sources":["../../src/claude/settings-merge.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@ export declare function skillTemplate(brand?: Brand): string;
3
3
  /**
4
4
  * Agent-facing graft text in trail's spelling, for every file trail writes
5
5
  * for an agent: the commands as trail spells them (`graft check` became
6
- * `trail build --check`, see `cmd`), and the name in prose. The code map
7
- * still lives in `graft/`, so a `graft` followed by `/` is a path and stays,
8
- * as do `graft-…` and `graft_…` names.
6
+ * `trail build --check`, see `cmd`), and the name in prose. Under trail the
7
+ * code map is in `.trail/cache/` (context/map-dir.ts), so the folder's name
8
+ * changes too; any other `graft` followed by `/` stays, as do `graft-…` and
9
+ * `graft_…` names.
9
10
  */
10
11
  export declare function trailSpelling(text: string): string;
11
12
  //# sourceMappingURL=skill-template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-template.d.ts","sourceRoot":"","sources":["../../src/claude/skill-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAU9C,wBAAgB,aAAa,CAAC,KAAK,GAAE,KAAe,GAAG,MAAM,CAE5D;AAuDD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKlD"}
1
+ {"version":3,"file":"skill-template.d.ts","sourceRoot":"","sources":["../../src/claude/skill-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAU9C,wBAAgB,aAAa,CAAC,KAAK,GAAE,KAAe,GAAG,MAAM,CAE5D;AAuDD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQlD"}
@@ -65,12 +65,16 @@ about trail.
65
65
  /**
66
66
  * Agent-facing graft text in trail's spelling, for every file trail writes
67
67
  * for an agent: the commands as trail spells them (`graft check` became
68
- * `trail build --check`, see `cmd`), and the name in prose. The code map
69
- * still lives in `graft/`, so a `graft` followed by `/` is a path and stays,
70
- * as do `graft-…` and `graft_…` names.
68
+ * `trail build --check`, see `cmd`), and the name in prose. Under trail the
69
+ * code map is in `.trail/cache/` (context/map-dir.ts), so the folder's name
70
+ * changes too; any other `graft` followed by `/` stays, as do `graft-…` and
71
+ * `graft_…` names.
71
72
  */
72
73
  export function trailSpelling(text) {
73
74
  return text
75
+ .replace(/`graft\/`/g, "`.trail/cache/`")
76
+ .replace(/(?<![\w./-])graft\/INDEX\.md/g, ".trail/cache/INDEX.md")
77
+ .replace(/(?<![\w./-])graft\/(?=[\s.,)])/g, ".trail/cache/")
74
78
  .replace(/\bgraft (check|stats)\b(?![\w-])/g, (m) => cmd(m, "trail"))
75
79
  .replace(/\bGraft\b(?![/\w-])/g, "Trail")
76
80
  .replace(/\bgraft\b(?![/\w-])/g, "trail");
@@ -1 +1 @@
1
- {"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../../src/claude/skill-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAc,MAAM,aAAa,CAAC;AAC9C,uFAAuF;AACvF,yFAAyF;AACzF,uFAAuF;AACvF,uFAAuF;AACvF,oCAAoC;AACpC,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,QAAe,OAAO;IAClD,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG;;;;;;;;;;0BAUA,CAAC;AAE3B,iFAAiF;AACjF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BrB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI;SACR,OAAO,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;SACpE,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC;SACxC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,IAAI,GAAG,aAAa,CACxB,KAAK;SACF,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,mDAAmD,EAAE,2DAA2D,CAAC,CAC7H,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,aAAa,EAAE,CAAC,CAAC;IACtD,OAAO;;eAEM,iBAAiB;;EAE9B,IAAI,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDf,CAAC;AACF,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4JR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../../src/claude/skill-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAc,MAAM,aAAa,CAAC;AAC9C,uFAAuF;AACvF,yFAAyF;AACzF,uFAAuF;AACvF,uFAAuF;AACvF,oCAAoC;AACpC,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,QAAe,OAAO;IAClD,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG;;;;;;;;;;0BAUA,CAAC;AAE3B,iFAAiF;AACjF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BrB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI;SACR,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC;SACxC,OAAO,CAAC,+BAA+B,EAAE,uBAAuB,CAAC;SACjE,OAAO,CAAC,iCAAiC,EAAE,eAAe,CAAC;SAC3D,OAAO,CAAC,mCAAmC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;SACpE,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC;SACxC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,IAAI,GAAG,aAAa,CACxB,KAAK;SACF,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;SACpC,OAAO,CAAC,mDAAmD,EAAE,2DAA2D,CAAC,CAC7H,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,aAAa,EAAE,CAAC,CAAC;IACtD,OAAO;;eAEM,iBAAiB;;EAE9B,IAAI,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDf,CAAC;AACF,CAAC;AAED,SAAS,UAAU;IACjB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4JR,CAAC;AACF,CAAC"}
@@ -15,7 +15,7 @@ export interface SessionState {
15
15
  /** Notes already put in front of the agent this session by the per-prompt
16
16
  * hook, by path, so each is shown once (see `notesForPrompt`). */
17
17
  injectedNotes?: string[];
18
- /** Overlap lines (teammates' pushed branches on the same code) already put in front of the agent this session. */
18
+ /** `<branch> <function id>` pairs: a teammate's open branch on a function the agent edited, already put in front of it this session. */
19
19
  injectedOverlaps?: string[];
20
20
  /** Weak-match nudges spent this session, capped so the line stays signal.
21
21
  * Optional for the same backwards-compatibility reason as above. */
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/claude/state.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IACxC,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB;;8DAE0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;sEACkE;IAClE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,kHAAkH;IAClH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;wEACoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;sFAEkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;iFAC6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;yEACqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;gFAC4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;4EAMwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;oBAGgB;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;wDACoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;4DAGwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;wBAIoB;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAMD,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAyC;AAItF;iFACiF;AACjF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIlD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAE/D;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAEzE"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/claude/state.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IACxC,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB;;8DAE0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;sEACkE;IAClE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,wIAAwI;IACxI,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;wEACoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;sFAEkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;iFAC6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;yEACqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;gFAC4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;4EAMwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;oBAGgB;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;wDACoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;4DAGwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;wBAIoB;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAMD,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAyC;AAItF;iFACiF;AACjF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIlD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAE/D;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAEzE"}