ultraclaude-agent 0.0.24 → 0.0.25

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.
@@ -0,0 +1,199 @@
1
+ // Integration test — real chokidar against tmp project dir. Regression
2
+ // guard for the project watcher's parent-directory watch pattern on
3
+ // .git/HEAD and .claude/ultra/version.json.
4
+ //
5
+ // Per the Lead amendment (shared/lead.md § Amendments 2026-04-12):
6
+ // these tests are regression guards, not failing-first reproductions.
7
+ // chokidar 5.x on Linux auto-re-registers inodes in `_handleFile`, so a
8
+ // simple multi-rename scenario passes against both unfixed and fixed code.
9
+ // The tests exist to ensure the parent-dir + basename-filter pattern
10
+ // correctly fires on atomic tmp+mv across multiple renames — verifying
11
+ // the fix doesn't introduce a new breakage.
12
+
13
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
14
+ import { mkdtemp, writeFile, rename, mkdir, rm } from 'node:fs/promises';
15
+ import { tmpdir } from 'node:os';
16
+ import { join } from 'node:path';
17
+
18
+ // --- Mock ./sync.js — observable surface for the handlers ---
19
+
20
+ const mockInitialSync = vi.fn();
21
+ const mockPushVersionMetadata = vi.fn();
22
+ const mockSyncFile = vi.fn();
23
+ const mockDeleteFiles = vi.fn();
24
+ const mockCreateSnapshot = vi.fn();
25
+ const mockHideBranches = vi.fn();
26
+
27
+ vi.mock('../src/sync.js', () => ({
28
+ syncFile: (...args: unknown[]) => mockSyncFile(...args),
29
+ deleteFiles: (...args: unknown[]) => mockDeleteFiles(...args),
30
+ initialSync: (...args: unknown[]) => mockInitialSync(...args),
31
+ createSnapshot: (...args: unknown[]) => mockCreateSnapshot(...args),
32
+ pushVersionMetadata: (...args: unknown[]) => mockPushVersionMetadata(...args),
33
+ hideBranches: (...args: unknown[]) => mockHideBranches(...args),
34
+ }));
35
+
36
+ // --- Mock logger ---
37
+
38
+ vi.mock('../src/logger.js', () => ({
39
+ logger: {
40
+ child: () => ({
41
+ info: vi.fn(),
42
+ warn: vi.fn(),
43
+ error: vi.fn(),
44
+ debug: vi.fn(),
45
+ }),
46
+ info: vi.fn(),
47
+ warn: vi.fn(),
48
+ error: vi.fn(),
49
+ debug: vi.fn(),
50
+ },
51
+ }));
52
+
53
+ describe('project watcher — atomic tmp+mv (real chokidar)', () => {
54
+ let tempDir: string;
55
+ let watcher: { close: () => Promise<void> } | null = null;
56
+
57
+ const testCredentials = {
58
+ apiKey: 'test-key',
59
+ userId: 'test-user',
60
+ serverUrl: 'http://localhost:3000',
61
+ };
62
+
63
+ beforeEach(async () => {
64
+ mockInitialSync.mockReset().mockResolvedValue(undefined);
65
+ mockPushVersionMetadata.mockReset().mockResolvedValue(undefined);
66
+ mockSyncFile.mockReset().mockResolvedValue(undefined);
67
+ mockDeleteFiles.mockReset().mockResolvedValue(undefined);
68
+ mockCreateSnapshot.mockReset().mockResolvedValue(true);
69
+ mockHideBranches.mockReset().mockResolvedValue(true);
70
+
71
+ tempDir = await mkdtemp(join(tmpdir(), 'project-watcher-test-'));
72
+
73
+ // Seed a minimal git repo layout
74
+ await mkdir(join(tempDir, '.git', 'refs', 'heads'), { recursive: true });
75
+ await writeFile(join(tempDir, '.git', 'HEAD'), 'ref: refs/heads/main\n');
76
+ await writeFile(
77
+ join(tempDir, '.git', 'refs', 'heads', 'main'),
78
+ '0000000000000000000000000000000000000000\n',
79
+ );
80
+
81
+ // Seed Ultra Claude layout
82
+ await mkdir(join(tempDir, '.claude', 'ultra'), { recursive: true });
83
+ await writeFile(
84
+ join(tempDir, '.claude', 'ultra', 'version.json'),
85
+ JSON.stringify({ version: '1.0.0' }),
86
+ );
87
+
88
+ // Seed documentation/ dir so docWatcher has something to watch
89
+ await mkdir(join(tempDir, 'documentation'), { recursive: true });
90
+
91
+ // Fresh module load per test
92
+ vi.resetModules();
93
+ const { startProjectWatcher } = await import('../src/watcher.js');
94
+ watcher = startProjectWatcher({
95
+ projectId: 'test-project',
96
+ projectPath: tempDir,
97
+ credentials: testCredentials,
98
+ });
99
+
100
+ // Give chokidar time to reach ready state
101
+ await new Promise((r) => setTimeout(r, 300));
102
+ });
103
+
104
+ afterEach(async () => {
105
+ if (watcher) await watcher.close();
106
+ watcher = null;
107
+ await rm(tempDir, { recursive: true, force: true });
108
+ });
109
+
110
+ it('fires initialSync on repeated atomic tmp+mv of .git/HEAD (branch switch simulation)', async () => {
111
+ // Reproduction: repeated atomic tmp+mv of .git/HEAD (as `git checkout` does).
112
+ // On the unfixed single-file watch, the inode swap orphans chokidar's
113
+ // internal watch after the first rename; subsequent checkouts are silent.
114
+ const headPath = join(tempDir, '.git', 'HEAD');
115
+ await mkdir(join(tempDir, '.git', 'refs', 'heads'), { recursive: true });
116
+ await writeFile(
117
+ join(tempDir, '.git', 'refs', 'heads', 'feature'),
118
+ '1111111111111111111111111111111111111111\n',
119
+ );
120
+ await writeFile(
121
+ join(tempDir, '.git', 'refs', 'heads', 'develop'),
122
+ '2222222222222222222222222222222222222222\n',
123
+ );
124
+
125
+ const checkoutAtomic = async (branch: string, label: string) => {
126
+ const tmpPath = `${headPath}.${label}.tmp`;
127
+ await writeFile(tmpPath, `ref: refs/heads/${branch}\n`);
128
+ await rename(tmpPath, headPath);
129
+ };
130
+
131
+ await checkoutAtomic('feature', 'a');
132
+ await vi.waitFor(
133
+ () => {
134
+ expect(mockInitialSync).toHaveBeenCalledTimes(1);
135
+ },
136
+ { timeout: 4000, interval: 100 },
137
+ );
138
+
139
+ await new Promise((r) => setTimeout(r, 500));
140
+
141
+ await checkoutAtomic('develop', 'b');
142
+ await vi.waitFor(
143
+ () => {
144
+ expect(mockInitialSync).toHaveBeenCalledTimes(2);
145
+ },
146
+ { timeout: 4000, interval: 100 },
147
+ );
148
+
149
+ await new Promise((r) => setTimeout(r, 500));
150
+
151
+ await checkoutAtomic('main', 'c');
152
+ await vi.waitFor(
153
+ () => {
154
+ expect(mockInitialSync).toHaveBeenCalledTimes(3);
155
+ },
156
+ { timeout: 4000, interval: 100 },
157
+ );
158
+ });
159
+
160
+ it('fires pushVersionMetadata on repeated atomic tmp+mv of .claude/ultra/version.json', async () => {
161
+ // Reproduction: repeated atomic tmp+mv. The awaitWriteFinish setting
162
+ // means we need to space them past the stability threshold.
163
+ const versionPath = join(tempDir, '.claude', 'ultra', 'version.json');
164
+
165
+ const bumpAtomic = async (version: string, label: string) => {
166
+ const tmpPath = `${versionPath}.${label}.tmp`;
167
+ await writeFile(tmpPath, JSON.stringify({ version }));
168
+ await rename(tmpPath, versionPath);
169
+ };
170
+
171
+ await bumpAtomic('2.0.0', 'a');
172
+ await vi.waitFor(
173
+ () => {
174
+ expect(mockPushVersionMetadata).toHaveBeenCalledTimes(1);
175
+ },
176
+ { timeout: 4000, interval: 100 },
177
+ );
178
+
179
+ await new Promise((r) => setTimeout(r, 500));
180
+
181
+ await bumpAtomic('2.1.0', 'b');
182
+ await vi.waitFor(
183
+ () => {
184
+ expect(mockPushVersionMetadata).toHaveBeenCalledTimes(2);
185
+ },
186
+ { timeout: 4000, interval: 100 },
187
+ );
188
+
189
+ await new Promise((r) => setTimeout(r, 500));
190
+
191
+ await bumpAtomic('2.2.0', 'c');
192
+ await vi.waitFor(
193
+ () => {
194
+ expect(mockPushVersionMetadata).toHaveBeenCalledTimes(3);
195
+ },
196
+ { timeout: 4000, interval: 100 },
197
+ );
198
+ });
199
+ });
@@ -0,0 +1,259 @@
1
+ // Integration test — real chokidar against tmp dir. Regression guard for
2
+ // the usage-sync watcher's parent-directory watch pattern.
3
+ //
4
+ // NOTE on failing-first: the plan originally framed these tests as
5
+ // failing-first reproductions of a live daemon bug (watcher goes silent
6
+ // after atomic tmp+mv writes). Investigation of chokidar 5.x source and
7
+ // empirical testing showed that a simple inode-swap-dies-after-one-mv
8
+ // scenario does NOT reproduce — chokidar 5.x on Linux auto re-registers
9
+ // inodes in `_handleFile` (handler.js:365-371). A steady-state stress
10
+ // reproduction was found that sometimes pins `_pendingWrites` state on
11
+ // the single-file path, but it's non-deterministic and not suitable for
12
+ // a unit test.
13
+ //
14
+ // Per the Lead amendment (shared/lead.md, 2026-04-12): these tests are
15
+ // relabeled as REGRESSION GUARDS for the parent-dir watch pattern. They
16
+ // ensure the fix handles atomic tmp+mv correctly. The live production
17
+ // root cause remains unknown; the fix moves off the suspect `_handleFile`
18
+ // code path entirely.
19
+
20
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
21
+ import { mkdtemp, writeFile, rename, mkdir, rm } from 'node:fs/promises';
22
+ import { tmpdir } from 'node:os';
23
+ import { join } from 'node:path';
24
+
25
+ // --- State for the homedir mock (captured via closure, set in beforeEach) ---
26
+
27
+ let tempDir: string;
28
+
29
+ vi.mock('node:os', async (importOriginal) => {
30
+ const original = await importOriginal<typeof import('node:os')>();
31
+ return {
32
+ ...original,
33
+ homedir: () => tempDir,
34
+ };
35
+ });
36
+
37
+ // --- Mock config — loadCredentials, loadAllCredentials, getServerUrl ---
38
+
39
+ vi.mock('../src/config.js', () => ({
40
+ loadCredentials: vi.fn().mockResolvedValue({
41
+ apiKey: 'test-key',
42
+ userId: 'test-user',
43
+ serverUrl: 'http://localhost:3000',
44
+ }),
45
+ loadAllCredentials: vi.fn().mockResolvedValue(
46
+ new Map([
47
+ [
48
+ 'test-user',
49
+ {
50
+ apiKey: 'test-key',
51
+ userId: 'test-user',
52
+ email: 'test@example.com',
53
+ serverUrl: 'http://localhost:3000',
54
+ },
55
+ ],
56
+ ]),
57
+ ),
58
+ getServerUrl: vi.fn().mockReturnValue('http://localhost:3000'),
59
+ paths: {
60
+ claudeProjects: '/tmp/test-projects',
61
+ projectIdFile: '.claude/ultra/project-id',
62
+ oldConfigDir: '/tmp/test-old-config',
63
+ },
64
+ }));
65
+
66
+ // --- Mock logger ---
67
+
68
+ vi.mock('../src/logger.js', () => ({
69
+ logger: {
70
+ child: () => ({
71
+ info: vi.fn(),
72
+ warn: vi.fn(),
73
+ error: vi.fn(),
74
+ debug: vi.fn(),
75
+ }),
76
+ info: vi.fn(),
77
+ warn: vi.fn(),
78
+ error: vi.fn(),
79
+ debug: vi.fn(),
80
+ },
81
+ }));
82
+
83
+ // --- Mock fetch — observable surface for "the chokidar handler fired" ---
84
+ //
85
+ // startUsageWatcher → scheduleSyncUsage → syncUsageData → pushUsageData → apiRequest → fetch
86
+ // If chokidar never fires, fetch is never called. Any fetch call is proof the
87
+ // handler ran end-to-end.
88
+
89
+ const mockFetch = vi.fn();
90
+ vi.stubGlobal('fetch', mockFetch);
91
+
92
+ describe('usage watcher — atomic tmp+mv (real chokidar)', () => {
93
+ let watcher: { close: () => Promise<void> } | null = null;
94
+
95
+ beforeEach(async () => {
96
+ mockFetch.mockReset();
97
+ mockFetch.mockResolvedValue({
98
+ ok: true,
99
+ status: 200,
100
+ json: () => Promise.resolve({ data: { ok: true, upserted: 1 } }),
101
+ });
102
+
103
+ tempDir = await mkdtemp(join(tmpdir(), 'usage-watcher-test-'));
104
+ await mkdir(join(tempDir, '.claude', 'ultra', 'accounts'), { recursive: true });
105
+
106
+ // Seed an initial usage-status.json so the first post-start mutation is
107
+ // observable (the watcher uses ignoreInitial: true).
108
+ await writeFile(
109
+ join(tempDir, '.claude', 'ultra', 'usage-status.json'),
110
+ JSON.stringify({ accounts: {}, updated_at: new Date().toISOString() }),
111
+ );
112
+
113
+ // Fresh module load per test — ULTRA_DIR/USAGE_STATUS_PATH constants are
114
+ // computed at module-eval time from the mocked homedir.
115
+ vi.resetModules();
116
+ const mod = await import('../src/usage-sync.js');
117
+ watcher = mod.startUsageWatcher();
118
+
119
+ // Give chokidar time to reach its 'ready' state before the test mutates files.
120
+ await new Promise((r) => setTimeout(r, 300));
121
+ });
122
+
123
+ afterEach(async () => {
124
+ if (watcher) await watcher.close();
125
+ watcher = null;
126
+ await rm(tempDir, { recursive: true, force: true });
127
+ });
128
+
129
+ it('fires handler on atomic tmp+mv of usage-status.json', async () => {
130
+ // Regression guard: a write-to-tmp + rename to usage-status.json
131
+ // (the exact pattern statusline.sh uses) fires the watcher handler
132
+ // within the debounce window.
133
+ const statusPath = join(tempDir, '.claude', 'ultra', 'usage-status.json');
134
+ const tmpPath = statusPath + '.tmp';
135
+ const nowSec = Math.floor(Date.now() / 1000);
136
+ await writeFile(
137
+ tmpPath,
138
+ JSON.stringify({
139
+ accounts: {
140
+ a1: {
141
+ account_id: 'a1',
142
+ rate_limits: {
143
+ five_hour: { used_percentage: 42, resets_at: nowSec + 3600 },
144
+ seven_day: { used_percentage: 18, resets_at: nowSec + 86400 },
145
+ },
146
+ updated_at: new Date().toISOString(),
147
+ },
148
+ },
149
+ updated_at: new Date().toISOString(),
150
+ }),
151
+ );
152
+ await rename(tmpPath, statusPath);
153
+
154
+ await vi.waitFor(
155
+ () => {
156
+ expect(mockFetch).toHaveBeenCalled();
157
+ },
158
+ { timeout: 4000, interval: 100 },
159
+ );
160
+ });
161
+
162
+ it('fires handler on multiple sequential atomic tmp+mv operations', { timeout: 15_000 }, async () => {
163
+ // Regression guard for the parent-dir watch pattern: multiple
164
+ // sequential atomic renames (as statusline.sh does over time) must
165
+ // continue firing the handler, not silently die after the first one.
166
+ const statusPath = join(tempDir, '.claude', 'ultra', 'usage-status.json');
167
+
168
+ const writeAtomic = async (label: string) => {
169
+ const tmpPath = `${statusPath}.${label}.tmp`;
170
+ const nowSec = Math.floor(Date.now() / 1000);
171
+ await writeFile(
172
+ tmpPath,
173
+ JSON.stringify({
174
+ accounts: {
175
+ a1: {
176
+ account_id: 'a1',
177
+ rate_limits: {
178
+ five_hour: { used_percentage: 42, resets_at: nowSec + 3600 },
179
+ seven_day: { used_percentage: 18, resets_at: nowSec + 86400 },
180
+ },
181
+ updated_at: new Date().toISOString(),
182
+ },
183
+ },
184
+ updated_at: new Date().toISOString(),
185
+ label,
186
+ }),
187
+ );
188
+ await rename(tmpPath, statusPath);
189
+ };
190
+
191
+ await writeAtomic('a');
192
+ await vi.waitFor(
193
+ () => {
194
+ expect(mockFetch).toHaveBeenCalledTimes(1);
195
+ },
196
+ { timeout: 4000, interval: 100 },
197
+ );
198
+
199
+ await new Promise((r) => setTimeout(r, 1500));
200
+
201
+ await writeAtomic('b');
202
+ await vi.waitFor(
203
+ () => {
204
+ expect(mockFetch).toHaveBeenCalledTimes(2);
205
+ },
206
+ { timeout: 4000, interval: 100 },
207
+ );
208
+
209
+ await new Promise((r) => setTimeout(r, 1500));
210
+
211
+ await writeAtomic('c');
212
+ await vi.waitFor(
213
+ () => {
214
+ expect(mockFetch).toHaveBeenCalledTimes(3);
215
+ },
216
+ { timeout: 4000, interval: 100 },
217
+ );
218
+ });
219
+
220
+ it('fires handler on adding a new accounts/*.json file (no-regression)', async () => {
221
+ const accountsPath = join(tempDir, '.claude', 'ultra', 'accounts', 'new-user.json');
222
+
223
+ // Seed usage-status.json with a matching account so the payload is non-empty.
224
+ const nowSec = Math.floor(Date.now() / 1000);
225
+ await writeFile(
226
+ join(tempDir, '.claude', 'ultra', 'usage-status.json'),
227
+ JSON.stringify({
228
+ accounts: {
229
+ 'new-user': {
230
+ account_id: 'new-user',
231
+ rate_limits: {
232
+ five_hour: { used_percentage: 10, resets_at: nowSec + 3600 },
233
+ seven_day: { used_percentage: 5, resets_at: nowSec + 86400 },
234
+ },
235
+ updated_at: new Date().toISOString(),
236
+ },
237
+ },
238
+ updated_at: new Date().toISOString(),
239
+ }),
240
+ );
241
+
242
+ await writeFile(
243
+ accountsPath,
244
+ JSON.stringify({
245
+ account_id: 'new-user',
246
+ email: 'new@example.com',
247
+ orgName: 'Org',
248
+ subscriptionType: 'pro',
249
+ }),
250
+ );
251
+
252
+ await vi.waitFor(
253
+ () => {
254
+ expect(mockFetch).toHaveBeenCalled();
255
+ },
256
+ { timeout: 4000, interval: 100 },
257
+ );
258
+ });
259
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"usage-sync.d.ts","sourceRoot":"","sources":["../src/usage-sync.ts"],"names":[],"mappings":"AAkOA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAanD;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,iBAAiB,IAAI,YAAY,CA4ChD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAavC"}
1
+ {"version":3,"file":"usage-sync.d.ts","sourceRoot":"","sources":["../src/usage-sync.ts"],"names":[],"mappings":"AAkOA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAanD;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,iBAAiB,IAAI,YAAY,CA4DhD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAavC"}
@@ -2,7 +2,7 @@
2
2
  import chokidar from 'chokidar';
3
3
  import { readFile, readdir } from 'node:fs/promises';
4
4
  import { homedir } from 'node:os';
5
- import { join } from 'node:path';
5
+ import { join, sep } from 'node:path';
6
6
  import { apiRequest } from './sync.js';
7
7
  import { loadAllCredentials, loadCredentials, getServerUrl } from './config.js';
8
8
  import { logger } from './logger.js';
@@ -188,19 +188,34 @@ export function startUsageWatcher() {
188
188
  });
189
189
  }, DEBOUNCE_MS);
190
190
  }
191
- watcher = chokidar.watch([USAGE_STATUS_PATH, ACCOUNTS_DIR], {
191
+ // Watch ULTRA_DIR at depth 0 (not the single file) so atomic tmp+mv writes
192
+ // by statusline.sh don't strand us on a stale inode or get stuck in
193
+ // chokidar's `_handleFile` / `_pendingWrites` state. Filter in the handler
194
+ // so sibling files (sessions/, version.json, etc.) are ignored.
195
+ // ACCOUNTS_DIR is a separate watch so individual accounts/*.json adds fire.
196
+ watcher = chokidar.watch([ULTRA_DIR, ACCOUNTS_DIR], {
192
197
  persistent: true,
193
198
  ignoreInitial: true,
199
+ depth: 0,
194
200
  awaitWriteFinish: {
195
201
  stabilityThreshold: 200,
196
202
  pollInterval: 100,
197
203
  },
198
204
  });
205
+ const onPath = (filePath) => {
206
+ if (filePath === USAGE_STATUS_PATH) {
207
+ scheduleSyncUsage();
208
+ return;
209
+ }
210
+ if (filePath.startsWith(ACCOUNTS_DIR + sep)) {
211
+ scheduleSyncUsage();
212
+ }
213
+ };
199
214
  watcher
200
- .on('add', scheduleSyncUsage)
201
- .on('change', scheduleSyncUsage)
215
+ .on('add', onPath)
216
+ .on('change', onPath)
202
217
  .on('error', (err) => log.error({ err }, 'Usage watcher error'));
203
- log.info({ paths: [USAGE_STATUS_PATH, ACCOUNTS_DIR] }, 'Usage watcher started');
218
+ log.info({ ultraDir: ULTRA_DIR, accountsDir: ACCOUNTS_DIR }, 'Usage watcher started');
204
219
  return {
205
220
  async close() {
206
221
  if (debounceTimer) {
@@ -1 +1 @@
1
- {"version":3,"file":"usage-sync.js","sourceRoot":"","sources":["../src/usage-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-sync.js","sourceRoot":"","sources":["../src/usage-sync.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAe5D;AAuBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CA+KlF"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAe5D;AAuBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAkMlF"}
package/dist/watcher.js CHANGED
@@ -116,13 +116,17 @@ export function startProjectWatcher(options) {
116
116
  })
117
117
  .on('error', (err) => log.error({ err }, 'Documentation watcher error'))
118
118
  .on('ready', () => log.info('Documentation watcher ready'));
119
- // Git HEAD watcher — triggers full resync on branch switch
120
- const gitHeadPath = join(projectPath, '.git', 'HEAD');
121
- const gitWatcher = chokidar.watch(gitHeadPath, {
119
+ // Git HEAD watcher — triggers full resync on branch switch.
120
+ // `git checkout` writes HEAD atomically via tmp+mv, so we watch the .git/
121
+ // directory at depth 0 and filter for HEAD to stay resilient to the state
122
+ // paths in chokidar's `_handleFile` code path.
123
+ const gitDir = join(projectPath, '.git');
124
+ const gitWatcher = chokidar.watch(gitDir, {
122
125
  persistent: true,
123
126
  ignoreInitial: true,
127
+ depth: 0,
124
128
  });
125
- gitWatcher.on('change', () => {
129
+ const handleHeadChange = () => {
126
130
  const newBranch = getCurrentBranch(projectPath);
127
131
  log.info({ oldBranch: currentBranch, newBranch }, 'Git HEAD changed — triggering full resync');
128
132
  currentBranch = newBranch;
@@ -132,23 +136,40 @@ export function startProjectWatcher(options) {
132
136
  .catch((err) => {
133
137
  log.error({ err }, 'Full resync after git HEAD change failed');
134
138
  });
139
+ };
140
+ gitWatcher.on('change', (filePath) => {
141
+ if (basename(filePath) !== 'HEAD')
142
+ return;
143
+ handleHeadChange();
144
+ });
145
+ gitWatcher.on('add', (filePath) => {
146
+ if (basename(filePath) !== 'HEAD')
147
+ return;
148
+ handleHeadChange();
135
149
  });
136
- // Version file watcher — push version metadata on change
137
- const versionFilePath = join(projectPath, '.claude', 'ultra', 'version.json');
138
- const versionWatcher = chokidar.watch(versionFilePath, {
150
+ // Version file watcher — push version metadata on change.
151
+ // Same parent-dir + basename filter pattern as the HEAD watcher: ultra
152
+ // update scripts write version.json atomically via tmp+mv.
153
+ const ultraDir = join(projectPath, '.claude', 'ultra');
154
+ const versionWatcher = chokidar.watch(ultraDir, {
139
155
  persistent: true,
140
156
  ignoreInitial: true,
157
+ depth: 0,
141
158
  awaitWriteFinish: {
142
159
  stabilityThreshold: 200,
143
160
  pollInterval: 50,
144
161
  },
145
162
  });
146
- versionWatcher.on('change', () => {
163
+ const onVersionEvent = (filePath) => {
164
+ if (basename(filePath) !== 'version.json')
165
+ return;
147
166
  log.info('version.json changed — pushing version metadata');
148
167
  pushVersionMetadata(projectId, projectPath, credentials).catch((err) => {
149
168
  log.error({ err }, 'Version metadata push failed');
150
169
  });
151
- });
170
+ };
171
+ versionWatcher.on('add', onVersionEvent);
172
+ versionWatcher.on('change', onVersionEvent);
152
173
  // Git refs watcher — detect commits for auto-snapshots
153
174
  const gitRefsPath = join(projectPath, '.git', 'refs');
154
175
  const gitRefsWatcher = chokidar.watch(gitRefsPath, {
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
@@ -71,4 +71,9 @@ export declare const branchHideRequestSchema: z.ZodObject<{
71
71
  branches: z.ZodArray<z.ZodString>;
72
72
  }, z.core.$strip>;
73
73
  export type BranchHideRequestInput = z.infer<typeof branchHideRequestSchema>;
74
+ export declare const branchVisibilitySchema: z.ZodObject<{
75
+ branch: z.ZodString;
76
+ visible: z.ZodBoolean;
77
+ }, z.core.$strip>;
78
+ export type BranchVisibilityInput = z.infer<typeof branchVisibilitySchema>;
74
79
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/api/schemas/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,UAAU,aAAwD,CAAC;AAIhF,eAAO,MAAM,iBAAiB;;;;;;;iBAO5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;iBAO7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;iBAI1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAI7D,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAM/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIvE,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAIjE,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAI7D,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/api/schemas/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,UAAU,aAAwD,CAAC;AAIhF,eAAO,MAAM,iBAAiB;;;;;;;iBAO5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;iBAO7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;iBAI1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAI7D,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAM/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIvE,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAIjE,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAI7D,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAI7E,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -61,4 +61,9 @@ export const branchHideRequestSchema = z.object({
61
61
  projectId: z.string().uuid(),
62
62
  branches: z.array(z.string().min(1).max(200)).min(1).max(100),
63
63
  });
64
+ // --- POST /api/projects/[id]/branches/visibility ---
65
+ export const branchVisibilitySchema = z.object({
66
+ branch: branchName,
67
+ visible: z.boolean(),
68
+ });
64
69
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/api/schemas/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/api/schemas/sync.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,7 @@ export interface UsageAccount {
49
49
  sevenDayPct: string | null;
50
50
  sevenDayResetsAt: string | null;
51
51
  updatedAt: string;
52
+ syncedAt: string;
52
53
  createdAt: string;
53
54
  }
54
55
  //# sourceMappingURL=usage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/api/schemas/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;iBAUjC,CAAC;AAIH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;iBAEjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/api/schemas/usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;iBAUjC,CAAC;AAIH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;iBAEjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -1,5 +1,5 @@
1
1
  export { createProjectSchema, updateProjectSchema, moveProjectSchema, branchListItemSchema, branchListResponseSchema, type CreateProjectInput, type UpdateProjectInput, type MoveProjectInput, type BranchListResponse, } from './api/schemas/projects.js';
2
- export { branchName, syncSectionsSchema, sectionItemSchema, syncFilesSchema, syncFileItemSchema, createSnapshotSchema, deleteFilesSchema, reconcileSchema, branchHideRequestSchema, type SyncSectionsInput, type SectionItem, type SyncFilesInput, type CreateSnapshotInput, type DeleteFilesInput, type BranchHideRequestInput, type ReconcileInput, } from './api/schemas/sync.js';
2
+ export { branchName, syncSectionsSchema, sectionItemSchema, syncFilesSchema, syncFileItemSchema, createSnapshotSchema, deleteFilesSchema, reconcileSchema, branchHideRequestSchema, branchVisibilitySchema, type SyncSectionsInput, type SectionItem, type SyncFilesInput, type CreateSnapshotInput, type DeleteFilesInput, type BranchHideRequestInput, type BranchVisibilityInput, type ReconcileInput, } from './api/schemas/sync.js';
3
3
  export { computeContentHash, verifyContentHash } from './hashing.js';
4
4
  export { parseMarkdownSections, generateSlug } from './sections.js';
5
5
  export type { SectionData, ManifestEntry, ProjectRegistryEntry, ProjectRegistry, AgentCredentials, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpE,YAAY,EACV,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,8BAA8B,EAC9B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,uBAAuB,GAC7B,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpE,YAAY,EACV,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,8BAA8B,EAC9B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,uBAAuB,GAC7B,MAAM,4BAA4B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // @ultra-claude/shared — shared types, API contracts, block parsing
2
2
  export { createProjectSchema, updateProjectSchema, moveProjectSchema, branchListItemSchema, branchListResponseSchema, } from './api/schemas/projects.js';
3
- export { branchName, syncSectionsSchema, sectionItemSchema, syncFilesSchema, syncFileItemSchema, createSnapshotSchema, deleteFilesSchema, reconcileSchema, branchHideRequestSchema, } from './api/schemas/sync.js';
3
+ export { branchName, syncSectionsSchema, sectionItemSchema, syncFilesSchema, syncFileItemSchema, createSnapshotSchema, deleteFilesSchema, reconcileSchema, branchHideRequestSchema, branchVisibilitySchema, } from './api/schemas/sync.js';
4
4
  export { computeContentHash, verifyContentHash } from './hashing.js';
5
5
  export { parseMarkdownSections, generateSlug } from './sections.js';
6
6
  export { ok, err } from './result.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,GAKzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,GAQxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAUpE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAe,MAAM,aAAa,CAAC;AAEnD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,8BAA8B,GAK/B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAIvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,6BAA6B,GAM9B,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,GAKzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,sBAAsB,GASvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAUpE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAe,MAAM,aAAa,CAAC;AAEnD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,8BAA8B,GAK/B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GAIvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,6BAA6B,GAM9B,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultraclaude-agent",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "ultraclaude-agent": "./dist/cli.js"
package/src/usage-sync.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  import chokidar from 'chokidar';
4
4
  import { readFile, readdir } from 'node:fs/promises';
5
5
  import { homedir } from 'node:os';
6
- import { join } from 'node:path';
6
+ import { join, sep } from 'node:path';
7
7
  import type { SyncUsageAccount, SyncUsageRequest } from '@ultra-claude/shared';
8
8
  import { apiRequest } from './sync.js';
9
9
  import { loadAllCredentials, loadCredentials, getServerUrl } from './config.js';
@@ -258,21 +258,37 @@ export function startUsageWatcher(): UsageWatcher {
258
258
  }, DEBOUNCE_MS);
259
259
  }
260
260
 
261
- watcher = chokidar.watch([USAGE_STATUS_PATH, ACCOUNTS_DIR], {
261
+ // Watch ULTRA_DIR at depth 0 (not the single file) so atomic tmp+mv writes
262
+ // by statusline.sh don't strand us on a stale inode or get stuck in
263
+ // chokidar's `_handleFile` / `_pendingWrites` state. Filter in the handler
264
+ // so sibling files (sessions/, version.json, etc.) are ignored.
265
+ // ACCOUNTS_DIR is a separate watch so individual accounts/*.json adds fire.
266
+ watcher = chokidar.watch([ULTRA_DIR, ACCOUNTS_DIR], {
262
267
  persistent: true,
263
268
  ignoreInitial: true,
269
+ depth: 0,
264
270
  awaitWriteFinish: {
265
271
  stabilityThreshold: 200,
266
272
  pollInterval: 100,
267
273
  },
268
274
  });
269
275
 
276
+ const onPath = (filePath: string) => {
277
+ if (filePath === USAGE_STATUS_PATH) {
278
+ scheduleSyncUsage();
279
+ return;
280
+ }
281
+ if (filePath.startsWith(ACCOUNTS_DIR + sep)) {
282
+ scheduleSyncUsage();
283
+ }
284
+ };
285
+
270
286
  watcher
271
- .on('add', scheduleSyncUsage)
272
- .on('change', scheduleSyncUsage)
287
+ .on('add', onPath)
288
+ .on('change', onPath)
273
289
  .on('error', (err) => log.error({ err }, 'Usage watcher error'));
274
290
 
275
- log.info({ paths: [USAGE_STATUS_PATH, ACCOUNTS_DIR] }, 'Usage watcher started');
291
+ log.info({ ultraDir: ULTRA_DIR, accountsDir: ACCOUNTS_DIR }, 'Usage watcher started');
276
292
 
277
293
  return {
278
294
  async close() {
package/src/watcher.ts CHANGED
@@ -143,14 +143,18 @@ export function startProjectWatcher(options: ProjectWatcherOptions): ProjectWatc
143
143
  .on('error', (err) => log.error({ err }, 'Documentation watcher error'))
144
144
  .on('ready', () => log.info('Documentation watcher ready'));
145
145
 
146
- // Git HEAD watcher — triggers full resync on branch switch
147
- const gitHeadPath = join(projectPath, '.git', 'HEAD');
148
- const gitWatcher = chokidar.watch(gitHeadPath, {
146
+ // Git HEAD watcher — triggers full resync on branch switch.
147
+ // `git checkout` writes HEAD atomically via tmp+mv, so we watch the .git/
148
+ // directory at depth 0 and filter for HEAD to stay resilient to the state
149
+ // paths in chokidar's `_handleFile` code path.
150
+ const gitDir = join(projectPath, '.git');
151
+ const gitWatcher = chokidar.watch(gitDir, {
149
152
  persistent: true,
150
153
  ignoreInitial: true,
154
+ depth: 0,
151
155
  });
152
156
 
153
- gitWatcher.on('change', () => {
157
+ const handleHeadChange = () => {
154
158
  const newBranch = getCurrentBranch(projectPath);
155
159
  log.info({ oldBranch: currentBranch, newBranch }, 'Git HEAD changed — triggering full resync');
156
160
  currentBranch = newBranch;
@@ -160,25 +164,40 @@ export function startProjectWatcher(options: ProjectWatcherOptions): ProjectWatc
160
164
  .catch((err) => {
161
165
  log.error({ err }, 'Full resync after git HEAD change failed');
162
166
  });
167
+ };
168
+
169
+ gitWatcher.on('change', (filePath) => {
170
+ if (basename(filePath) !== 'HEAD') return;
171
+ handleHeadChange();
172
+ });
173
+ gitWatcher.on('add', (filePath) => {
174
+ if (basename(filePath) !== 'HEAD') return;
175
+ handleHeadChange();
163
176
  });
164
177
 
165
- // Version file watcher — push version metadata on change
166
- const versionFilePath = join(projectPath, '.claude', 'ultra', 'version.json');
167
- const versionWatcher = chokidar.watch(versionFilePath, {
178
+ // Version file watcher — push version metadata on change.
179
+ // Same parent-dir + basename filter pattern as the HEAD watcher: ultra
180
+ // update scripts write version.json atomically via tmp+mv.
181
+ const ultraDir = join(projectPath, '.claude', 'ultra');
182
+ const versionWatcher = chokidar.watch(ultraDir, {
168
183
  persistent: true,
169
184
  ignoreInitial: true,
185
+ depth: 0,
170
186
  awaitWriteFinish: {
171
187
  stabilityThreshold: 200,
172
188
  pollInterval: 50,
173
189
  },
174
190
  });
175
191
 
176
- versionWatcher.on('change', () => {
192
+ const onVersionEvent = (filePath: string) => {
193
+ if (basename(filePath) !== 'version.json') return;
177
194
  log.info('version.json changed — pushing version metadata');
178
195
  pushVersionMetadata(projectId, projectPath, credentials).catch((err) => {
179
196
  log.error({ err }, 'Version metadata push failed');
180
197
  });
181
- });
198
+ };
199
+ versionWatcher.on('add', onVersionEvent);
200
+ versionWatcher.on('change', onVersionEvent);
182
201
 
183
202
  // Git refs watcher — detect commits for auto-snapshots
184
203
  const gitRefsPath = join(projectPath, '.git', 'refs');