aismemory 0.5.0 → 0.5.1

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 (77) hide show
  1. package/dist/__tests__/auth-staleness.test.d.ts +9 -0
  2. package/dist/__tests__/auth-staleness.test.js +46 -0
  3. package/dist/__tests__/auth-staleness.test.js.map +1 -0
  4. package/dist/__tests__/auto-handoff.test.js +108 -2
  5. package/dist/__tests__/auto-handoff.test.js.map +1 -1
  6. package/dist/__tests__/config.test.js +6 -3
  7. package/dist/__tests__/config.test.js.map +1 -1
  8. package/dist/__tests__/env-agent.test.d.ts +1 -0
  9. package/dist/__tests__/env-agent.test.js +19 -0
  10. package/dist/__tests__/env-agent.test.js.map +1 -0
  11. package/dist/__tests__/existing-hashes.test.d.ts +1 -0
  12. package/dist/__tests__/existing-hashes.test.js +122 -0
  13. package/dist/__tests__/existing-hashes.test.js.map +1 -0
  14. package/dist/__tests__/hydration.test.js +38 -0
  15. package/dist/__tests__/hydration.test.js.map +1 -1
  16. package/dist/__tests__/local-mirror.test.js +4 -0
  17. package/dist/__tests__/local-mirror.test.js.map +1 -1
  18. package/dist/__tests__/oauth-credentials.test.d.ts +1 -0
  19. package/dist/__tests__/oauth-credentials.test.js +29 -0
  20. package/dist/__tests__/oauth-credentials.test.js.map +1 -0
  21. package/dist/__tests__/pipeline-ingestion.test.js +112 -1
  22. package/dist/__tests__/pipeline-ingestion.test.js.map +1 -1
  23. package/dist/__tests__/refresh.test.js +24 -0
  24. package/dist/__tests__/refresh.test.js.map +1 -1
  25. package/dist/__tests__/sync-memory-cli.test.d.ts +1 -0
  26. package/dist/__tests__/sync-memory-cli.test.js +200 -0
  27. package/dist/__tests__/sync-memory-cli.test.js.map +1 -0
  28. package/dist/__tests__/telemetry.test.d.ts +1 -0
  29. package/dist/__tests__/telemetry.test.js +67 -0
  30. package/dist/__tests__/telemetry.test.js.map +1 -0
  31. package/dist/__tests__/token-expiry-reauth.test.d.ts +1 -0
  32. package/dist/__tests__/token-expiry-reauth.test.js +201 -0
  33. package/dist/__tests__/token-expiry-reauth.test.js.map +1 -0
  34. package/dist/__tests__/tool-args.test.d.ts +1 -0
  35. package/dist/__tests__/tool-args.test.js +78 -0
  36. package/dist/__tests__/tool-args.test.js.map +1 -0
  37. package/dist/auth-staleness.d.ts +27 -0
  38. package/dist/auth-staleness.js +41 -0
  39. package/dist/auth-staleness.js.map +1 -0
  40. package/dist/auto-handoff.d.ts +2 -0
  41. package/dist/auto-handoff.js +40 -16
  42. package/dist/auto-handoff.js.map +1 -1
  43. package/dist/cli/sync-memory.js +31 -36
  44. package/dist/cli/sync-memory.js.map +1 -1
  45. package/dist/config.js +4 -1
  46. package/dist/config.js.map +1 -1
  47. package/dist/env-agent.d.ts +10 -0
  48. package/dist/env-agent.js +14 -0
  49. package/dist/env-agent.js.map +1 -0
  50. package/dist/hydration.js +54 -3
  51. package/dist/hydration.js.map +1 -1
  52. package/dist/index.js +229 -113
  53. package/dist/index.js.map +1 -1
  54. package/dist/local-mirror.d.ts +5 -0
  55. package/dist/local-mirror.js +72 -14
  56. package/dist/local-mirror.js.map +1 -1
  57. package/dist/oauth-credentials.d.ts +14 -0
  58. package/dist/oauth-credentials.js +35 -0
  59. package/dist/oauth-credentials.js.map +1 -0
  60. package/dist/pipeline/bulk-store.d.ts +46 -0
  61. package/dist/pipeline/bulk-store.js +165 -0
  62. package/dist/pipeline/bulk-store.js.map +1 -0
  63. package/dist/pipeline/existing-hashes.d.ts +20 -0
  64. package/dist/pipeline/existing-hashes.js +111 -0
  65. package/dist/pipeline/existing-hashes.js.map +1 -0
  66. package/dist/pipeline/ingestion.d.ts +8 -4
  67. package/dist/pipeline/ingestion.js +36 -8
  68. package/dist/pipeline/ingestion.js.map +1 -1
  69. package/dist/telemetry.d.ts +22 -0
  70. package/dist/telemetry.js +28 -0
  71. package/dist/telemetry.js.map +1 -0
  72. package/dist/tool-args.d.ts +52 -0
  73. package/dist/tool-args.js +78 -0
  74. package/dist/tool-args.js.map +1 -0
  75. package/dist/trust-ledger.js +2 -2
  76. package/dist/trust-ledger.js.map +1 -1
  77. package/package.json +9 -4
@@ -2,7 +2,7 @@ import { describe, it, expect, vi } from 'vitest';
2
2
  import { readFileSync, readdirSync, statSync, rmSync, mkdtempSync } from 'node:fs';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { join } from 'node:path';
5
- import { runIngestion } from '../pipeline/ingestion.js';
5
+ import { runIngestion, BULK_BATCH_SIZE } from '../pipeline/ingestion.js';
6
6
  import { LocalClaudeSource } from '../sources/local-claude.js';
7
7
  import { SyncConfig } from '../config.js';
8
8
  import { TrustLedger } from '../trust-ledger.js';
@@ -128,6 +128,117 @@ describe('runIngestion', () => {
128
128
  rmSync(tmpHome, { recursive: true, force: true });
129
129
  }
130
130
  });
131
+ it('does not advance trust ledger when bulkStore has partial failures', async () => {
132
+ const fs = readFixtureFs(FIXTURE_PATH);
133
+ const tmpHome = mkdtempSync(join(tmpdir(), 'aismem-partialfail-'));
134
+ try {
135
+ const config = new SyncConfig(tmpHome);
136
+ const ledger = new TrustLedger(tmpHome);
137
+ const mirror = new LocalMirror(tmpHome, 30);
138
+ const scopeKey = `project||${FIXTURE_PATH}|partialfail`;
139
+ const recordSyncSpy = vi.spyOn(ledger, 'recordSync');
140
+ const result = await runIngestion({
141
+ adapter: new LocalClaudeSource(),
142
+ rawSourceData: fs,
143
+ scope: { kind: 'project', label: 'partialfail', projectPath: FIXTURE_PATH },
144
+ agentId: 'agent1',
145
+ config,
146
+ ledger,
147
+ mirror,
148
+ existingHashes: new Set(),
149
+ bulkStore: async (drafts) => ({
150
+ created: drafts.length > 0 ? [{ index: 0, id: 'm-0' }] : [],
151
+ failed: drafts.length > 1 ? [{ index: 1, error: 'ais rejected' }] : [],
152
+ }),
153
+ review: async (d) => d,
154
+ });
155
+ expect(result.failed.length).toBeGreaterThan(0);
156
+ expect(recordSyncSpy).not.toHaveBeenCalled();
157
+ expect(ledger.isTrusted('agent1', 'claude-local', scopeKey)).toBe(false);
158
+ // Two partial-failure runs must not reach auto-commit trust (syncCount would be 2).
159
+ await runIngestion({
160
+ adapter: new LocalClaudeSource(),
161
+ rawSourceData: fs,
162
+ scope: { kind: 'project', label: 'partialfail', projectPath: FIXTURE_PATH },
163
+ agentId: 'agent1',
164
+ config,
165
+ ledger,
166
+ mirror,
167
+ existingHashes: new Set(),
168
+ bulkStore: async (drafts) => ({
169
+ created: drafts.length > 0 ? [{ index: 0, id: 'm-0' }] : [],
170
+ failed: drafts.length > 1 ? [{ index: 1, error: 'ais rejected' }] : [],
171
+ }),
172
+ review: async (d) => d,
173
+ });
174
+ expect(ledger.isTrusted('agent1', 'claude-local', scopeKey)).toBe(false);
175
+ }
176
+ finally {
177
+ rmSync(tmpHome, { recursive: true, force: true });
178
+ }
179
+ });
180
+ it('splits >100 approved drafts into chunks of at most BULK_BATCH_SIZE', async () => {
181
+ // Build 203 synthetic drafts by repeating a fixture-derived draft with unique content
182
+ const tmpHome = mkdtempSync(join(tmpdir(), 'aismem-chunk-'));
183
+ try {
184
+ const config = new SyncConfig(tmpHome);
185
+ const ledger = new TrustLedger(tmpHome);
186
+ const mirror = new LocalMirror(tmpHome, 30);
187
+ const batchSizes = [];
188
+ const bulkStore = vi.fn(async (drafts) => {
189
+ batchSizes.push(drafts.length);
190
+ return {
191
+ created: drafts.map((_, i) => ({ index: i, id: `m-${batchSizes.length}-${i}` })),
192
+ failed: [],
193
+ };
194
+ });
195
+ // Generate 203 unique drafts
196
+ const fakeDrafts = Array.from({ length: 203 }, (_, i) => ({
197
+ content: `synthetic memory entry number ${i}`,
198
+ type: 'fact',
199
+ importance: 0.5,
200
+ trustScore: 0.5,
201
+ provenance: {
202
+ source: 'claude-local',
203
+ sourceHash: `hash-${i}`,
204
+ importedAt: new Date().toISOString(),
205
+ importedBy: 'agent1',
206
+ sourceScope: { kind: 'project', label: 'chunk-test' },
207
+ sourcePrompt: '',
208
+ },
209
+ }));
210
+ // Use a custom adapter stub that returns our 203 fake drafts
211
+ const stubAdapter = {
212
+ id: 'claude-local',
213
+ parseResponse: () => ({ memories: fakeDrafts, warnings: [] }),
214
+ mapToAis: (_src, _scope, _agentId) => _src,
215
+ };
216
+ const result = await runIngestion({
217
+ adapter: stubAdapter,
218
+ rawSourceData: '',
219
+ scope: { kind: 'project', label: 'chunk-test', projectPath: '/tmp' },
220
+ agentId: 'agent1',
221
+ config,
222
+ ledger,
223
+ mirror,
224
+ existingHashes: new Set(),
225
+ bulkStore,
226
+ review: async (d) => d,
227
+ });
228
+ expect(result.imported).toBe(203);
229
+ expect(result.failed).toHaveLength(0);
230
+ // Must have called bulkStore multiple times, never exceeding BULK_BATCH_SIZE
231
+ expect(batchSizes.length).toBeGreaterThan(1);
232
+ for (const size of batchSizes) {
233
+ expect(size).toBeLessThanOrEqual(BULK_BATCH_SIZE);
234
+ }
235
+ // Total items across all batches equals 203
236
+ expect(batchSizes.reduce((a, b) => a + b, 0)).toBe(203);
237
+ }
238
+ finally {
239
+ rmSync(tmpHome, { recursive: true, force: true });
240
+ }
241
+ });
131
242
  it('dedupes against existingHashes', async () => {
132
243
  const fs = readFixtureFs(FIXTURE_PATH);
133
244
  const source = new LocalClaudeSource();
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-ingestion.test.js","sourceRoot":"","sources":["../../src/__tests__/pipeline-ingestion.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline-ingestion.test.js","sourceRoot":"","sources":["../../src/__tests__/pipeline-ingestion.test.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,30 @@ describe('startRefreshTimer', () => {
51
51
  expect(mockFetch).toHaveBeenCalledTimes(2);
52
52
  expect(onUpdate).not.toHaveBeenCalled();
53
53
  });
54
+ it('restarting with a new agentId switches the fetch target (agent_load pattern)', async () => {
55
+ const newAgentMemories = [
56
+ { id: 'm2', content: 'Other agent memory', type: 'episodic', importance: 0.9, createdAt: '2026-01-02T00:00:00Z' },
57
+ ];
58
+ const mockFetch = vi
59
+ .fn()
60
+ .mockResolvedValueOnce({
61
+ ok: true,
62
+ json: vi.fn().mockResolvedValue({ success: true, data: { memories: mockMemories } }),
63
+ })
64
+ .mockResolvedValueOnce({
65
+ ok: true,
66
+ json: vi.fn().mockResolvedValue({ success: true, data: { memories: newAgentMemories } }),
67
+ });
68
+ vi.stubGlobal('fetch', mockFetch);
69
+ const onUpdate = vi.fn();
70
+ startRefreshTimer(MOCK_AIS_URL, MOCK_AGENT_ID, MOCK_TOKEN, onUpdate, INTERVAL_MS);
71
+ await vi.advanceTimersByTimeAsync(INTERVAL_MS);
72
+ const newAgentId = 'agent-456';
73
+ startRefreshTimer(MOCK_AIS_URL, newAgentId, MOCK_TOKEN, onUpdate, INTERVAL_MS);
74
+ await vi.advanceTimersByTimeAsync(INTERVAL_MS);
75
+ expect(mockFetch).toHaveBeenLastCalledWith(`${MOCK_AIS_URL}/v1/agents/${newAgentId}/memory?limit=20&minImportance=0.5`, { headers: { Authorization: `Bearer ${MOCK_TOKEN}` } });
76
+ expect(onUpdate).toHaveBeenLastCalledWith(newAgentMemories);
77
+ });
54
78
  it('stopRefreshTimer clears the interval so no more callbacks fire', async () => {
55
79
  const mockFetch = makeFetchMock(true, {
56
80
  success: true,
@@ -1 +1 @@
1
- {"version":3,"file":"refresh.test.js","sourceRoot":"","sources":["../../src/__tests__/refresh.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refresh.test.js","sourceRoot":"","sources":["../../src/__tests__/refresh.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Unit tests for CORBOT-452ED9F0: AIS bulk memory writes timeout resilience.
3
+ *
4
+ * Tests the exported helpers in pipeline/bulk-store.ts:
5
+ * - bulkStoreViaAis: chunks at BULK_CHUNK_SIZE (25)
6
+ * - writeWithRetry: recursive split on AbortError / 5xx
7
+ * - postSingleWrite: per-item fallback
8
+ * - singleWriteAllViaAis: --single-write operator mode
9
+ */
10
+ import { describe, it, expect, vi, afterEach } from 'vitest';
11
+ import { bulkStoreViaAis, singleWriteAllViaAis, writeWithRetry, postSingleWrite, BULK_CHUNK_SIZE, } from '../pipeline/bulk-store.js';
12
+ // ---------------------------------------------------------------------------
13
+ // Helpers
14
+ // ---------------------------------------------------------------------------
15
+ const CREDS = { apiBase: 'https://ais.test', apiKey: 'key', tenantId: 'tenant' };
16
+ const AGENT = 'agent1';
17
+ // Use a very long timeout in tests so AbortController doesn't fire on its own.
18
+ const LONG_TIMEOUT = 60_000;
19
+ function makeDraft(i) {
20
+ const prov = {
21
+ source: 'claude-local',
22
+ sourceHash: `hash-${i}`,
23
+ importedAt: new Date().toISOString(),
24
+ importedBy: AGENT,
25
+ sourceScope: { kind: 'project', label: 'test' },
26
+ sourcePrompt: '',
27
+ };
28
+ return { content: `memory ${i}`, type: 'fact', importance: 0.5, trustScore: 0.5, provenance: prov };
29
+ }
30
+ function makeDrafts(n) {
31
+ return Array.from({ length: n }, (_, i) => makeDraft(i));
32
+ }
33
+ // ---------------------------------------------------------------------------
34
+ afterEach(() => {
35
+ vi.unstubAllGlobals();
36
+ });
37
+ // ---------------------------------------------------------------------------
38
+ // bulkStoreViaAis — chunked writes
39
+ // ---------------------------------------------------------------------------
40
+ describe('bulkStoreViaAis', () => {
41
+ it(`chunks ${BULK_CHUNK_SIZE + 5} drafts into two POST calls`, async () => {
42
+ const total = BULK_CHUNK_SIZE + 5;
43
+ const drafts = makeDrafts(total);
44
+ const chunkSizes = [];
45
+ vi.stubGlobal('fetch', async (_url, init) => {
46
+ const body = JSON.parse(init?.body);
47
+ chunkSizes.push(body.memories.length);
48
+ const created = body.memories.map((_, idx) => ({ index: idx, id: `id-${idx}` }));
49
+ return new Response(JSON.stringify({ data: { created, failed: [] } }), { status: 200, headers: { 'Content-Type': 'application/json' } });
50
+ });
51
+ const result = await bulkStoreViaAis(AGENT, drafts, CREDS);
52
+ expect(chunkSizes).toHaveLength(2);
53
+ expect(chunkSizes[0]).toBe(BULK_CHUNK_SIZE);
54
+ expect(chunkSizes[1]).toBe(5);
55
+ expect(result.created).toHaveLength(total);
56
+ expect(result.failed).toHaveLength(0);
57
+ });
58
+ it('remaps chunk-local indices to global indices', async () => {
59
+ const drafts = makeDrafts(BULK_CHUNK_SIZE + 2);
60
+ vi.stubGlobal('fetch', async (_url, init) => {
61
+ const body = JSON.parse(init?.body);
62
+ const created = body.memories.map((_, idx) => ({ index: idx, id: `id-${idx}` }));
63
+ return new Response(JSON.stringify({ data: { created, failed: [] } }), { status: 200, headers: { 'Content-Type': 'application/json' } });
64
+ });
65
+ const result = await bulkStoreViaAis(AGENT, drafts, CREDS);
66
+ // Global indices must be 0..N-1 with no duplicates
67
+ const indices = result.created.map((c) => c.index).sort((a, b) => a - b);
68
+ expect(indices).toEqual(Array.from({ length: drafts.length }, (_, i) => i));
69
+ });
70
+ });
71
+ // ---------------------------------------------------------------------------
72
+ // writeWithRetry — recursive split on transient errors
73
+ // ---------------------------------------------------------------------------
74
+ describe('writeWithRetry', () => {
75
+ it('splits on AbortError and falls through to single writes', async () => {
76
+ const drafts = makeDrafts(4);
77
+ const callLog = [];
78
+ vi.stubGlobal('fetch', async (_url, init) => {
79
+ const body = JSON.parse(init?.body);
80
+ if (body.memories && body.memories.length > 1) {
81
+ callLog.push(`bulk:${body.memories.length}`);
82
+ const err = new Error('The operation was aborted');
83
+ err.name = 'AbortError';
84
+ throw err;
85
+ }
86
+ // Single-write endpoint
87
+ callLog.push('single');
88
+ const id = `sid-${callLog.filter((l) => l === 'single').length}`;
89
+ return new Response(JSON.stringify({ data: { id } }), { status: 200, headers: { 'Content-Type': 'application/json' } });
90
+ });
91
+ const baseIndices = drafts.map((_, i) => i);
92
+ const result = await writeWithRetry(AGENT, drafts, baseIndices, CREDS, LONG_TIMEOUT);
93
+ // Four single writes must have happened
94
+ expect(callLog.filter((l) => l === 'single')).toHaveLength(4);
95
+ expect(result.created).toHaveLength(4);
96
+ expect(result.failed).toHaveLength(0);
97
+ });
98
+ it('splits on HTTP 502 response', async () => {
99
+ const drafts = makeDrafts(2);
100
+ const callLog = [];
101
+ vi.stubGlobal('fetch', async (_url, init) => {
102
+ const body = JSON.parse(init?.body);
103
+ if (body.memories && body.memories.length > 1) {
104
+ callLog.push('bulk-502');
105
+ return new Response('Bad Gateway', { status: 502 });
106
+ }
107
+ callLog.push('single');
108
+ return new Response(JSON.stringify({ data: { id: 'sid' } }), { status: 200, headers: { 'Content-Type': 'application/json' } });
109
+ });
110
+ const result = await writeWithRetry(AGENT, drafts, [0, 1], CREDS, LONG_TIMEOUT);
111
+ expect(callLog).toContain('bulk-502');
112
+ expect(callLog.filter((l) => l === 'single')).toHaveLength(2);
113
+ expect(result.created).toHaveLength(2);
114
+ expect(result.failed).toHaveLength(0);
115
+ });
116
+ it('throws immediately on 401 auth error without splitting', async () => {
117
+ const drafts = makeDrafts(4);
118
+ const fetchCallCount = { n: 0 };
119
+ vi.stubGlobal('fetch', async () => {
120
+ fetchCallCount.n++;
121
+ return new Response('Unauthorized', { status: 401 });
122
+ });
123
+ await expect(writeWithRetry(AGENT, drafts, [0, 1, 2, 3], CREDS, LONG_TIMEOUT)).rejects.toThrow('auth error');
124
+ // Only one fetch call — no splitting attempted
125
+ expect(fetchCallCount.n).toBe(1);
126
+ });
127
+ it('retries per-item bulk failures via single write', async () => {
128
+ const drafts = makeDrafts(3);
129
+ vi.stubGlobal('fetch', async (_url, init) => {
130
+ const body = JSON.parse(init?.body);
131
+ if (body.memories) {
132
+ return new Response(JSON.stringify({
133
+ data: {
134
+ created: [{ index: 0, id: 'bulk-id-0' }],
135
+ failed: [
136
+ { index: 1, error: 'validation error' },
137
+ { index: 2, error: 'duplicate' },
138
+ ],
139
+ },
140
+ }), { status: 200, headers: { 'Content-Type': 'application/json' } });
141
+ }
142
+ // Single write fallback succeeds
143
+ return new Response(JSON.stringify({ data: { id: 'single-id' } }), { status: 200, headers: { 'Content-Type': 'application/json' } });
144
+ });
145
+ const result = await writeWithRetry(AGENT, drafts, [0, 1, 2], CREDS, LONG_TIMEOUT);
146
+ // All three should be created (1 from bulk + 2 from single retries)
147
+ expect(result.created).toHaveLength(3);
148
+ expect(result.failed).toHaveLength(0);
149
+ });
150
+ });
151
+ // ---------------------------------------------------------------------------
152
+ // postSingleWrite — single-write fallback
153
+ // ---------------------------------------------------------------------------
154
+ describe('postSingleWrite', () => {
155
+ it('returns created entry on success', async () => {
156
+ vi.stubGlobal('fetch', async () => new Response(JSON.stringify({ data: { id: 'new-id' } }), { status: 200, headers: { 'Content-Type': 'application/json' } }));
157
+ const result = await postSingleWrite(AGENT, makeDraft(0), 5, CREDS, LONG_TIMEOUT);
158
+ expect(result.created).toEqual([{ index: 5, id: 'new-id' }]);
159
+ expect(result.failed).toHaveLength(0);
160
+ });
161
+ it('returns failed entry on non-auth HTTP error', async () => {
162
+ vi.stubGlobal('fetch', async () => new Response('Internal Server Error', { status: 500 }));
163
+ const result = await postSingleWrite(AGENT, makeDraft(0), 3, CREDS, LONG_TIMEOUT);
164
+ expect(result.created).toHaveLength(0);
165
+ expect(result.failed[0].index).toBe(3);
166
+ });
167
+ it('returns failed entry on AbortError (timeout)', async () => {
168
+ vi.stubGlobal('fetch', async () => {
169
+ const err = new Error('aborted');
170
+ err.name = 'AbortError';
171
+ throw err;
172
+ });
173
+ const result = await postSingleWrite(AGENT, makeDraft(0), 7, CREDS, LONG_TIMEOUT);
174
+ expect(result.failed[0]).toMatchObject({ index: 7, error: 'request timed out' });
175
+ });
176
+ it('throws on 401', async () => {
177
+ vi.stubGlobal('fetch', async () => new Response('Unauthorized', { status: 401 }));
178
+ await expect(postSingleWrite(AGENT, makeDraft(0), 0, CREDS, LONG_TIMEOUT)).rejects.toThrow('auth error');
179
+ });
180
+ });
181
+ // ---------------------------------------------------------------------------
182
+ // singleWriteAllViaAis — --single-write operator mode
183
+ // ---------------------------------------------------------------------------
184
+ describe('singleWriteAllViaAis', () => {
185
+ it('writes all drafts individually and returns correct indices', async () => {
186
+ const drafts = makeDrafts(3);
187
+ let callCount = 0;
188
+ vi.stubGlobal('fetch', async () => {
189
+ const id = `s-${callCount++}`;
190
+ return new Response(JSON.stringify({ data: { id } }), { status: 200, headers: { 'Content-Type': 'application/json' } });
191
+ });
192
+ const result = await singleWriteAllViaAis(AGENT, drafts, CREDS);
193
+ expect(result.created).toHaveLength(3);
194
+ expect(result.failed).toHaveLength(0);
195
+ // Indices must be 0, 1, 2
196
+ const indices = result.created.map((c) => c.index).sort((a, b) => a - b);
197
+ expect(indices).toEqual([0, 1, 2]);
198
+ });
199
+ });
200
+ //# sourceMappingURL=sync-memory-cli.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-memory-cli.test.js","sourceRoot":"","sources":["../../src/__tests__/sync-memory-cli.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,67 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { emitTelemetry, hashAgentId, isTelemetryEnabled } from '../telemetry.js';
3
+ describe('telemetry', () => {
4
+ const prev = process.env['AISMEMORY_TELEMETRY'];
5
+ beforeEach(() => {
6
+ delete process.env['AISMEMORY_TELEMETRY'];
7
+ });
8
+ afterEach(() => {
9
+ if (prev === undefined) {
10
+ delete process.env['AISMEMORY_TELEMETRY'];
11
+ }
12
+ else {
13
+ process.env['AISMEMORY_TELEMETRY'] = prev;
14
+ }
15
+ });
16
+ it('is disabled by default', () => {
17
+ expect(isTelemetryEnabled()).toBe(false);
18
+ });
19
+ it('enables on AISMEMORY_TELEMETRY=1', () => {
20
+ process.env['AISMEMORY_TELEMETRY'] = '1';
21
+ expect(isTelemetryEnabled()).toBe(true);
22
+ });
23
+ it('hashAgentId is stable and non-reversible to raw id', () => {
24
+ const h1 = hashAgentId('agent-abc');
25
+ const h2 = hashAgentId('agent-abc');
26
+ const h3 = hashAgentId('agent-xyz');
27
+ expect(h1).toBe(h2);
28
+ expect(h1).toHaveLength(16);
29
+ expect(h1).not.toBe(h3);
30
+ expect(h1).not.toContain('agent-abc');
31
+ });
32
+ it('emitTelemetry writes JSON when enabled', () => {
33
+ process.env['AISMEMORY_TELEMETRY'] = 'true';
34
+ const lines = [];
35
+ const orig = process.stderr.write.bind(process.stderr);
36
+ process.stderr.write = ((chunk) => {
37
+ lines.push(typeof chunk === 'string' ? chunk : Buffer.from(chunk).toString('utf8'));
38
+ return true;
39
+ });
40
+ emitTelemetry({
41
+ event: 'tool.call',
42
+ tool: 'remember',
43
+ agentIdHash: hashAgentId('a1'),
44
+ latencyMs: 12,
45
+ status: 'ok',
46
+ });
47
+ process.stderr.write = orig;
48
+ expect(lines).toHaveLength(1);
49
+ expect(lines[0]).toMatch(/^\[aismemory-telemetry\] /);
50
+ const parsed = JSON.parse(lines[0].replace(/^\[aismemory-telemetry\] /, '').trim());
51
+ expect(parsed.event).toBe('tool.call');
52
+ expect(parsed.tool).toBe('remember');
53
+ expect(parsed.status).toBe('ok');
54
+ });
55
+ it('emitTelemetry is a no-op when disabled', () => {
56
+ let called = false;
57
+ const orig = process.stderr.write.bind(process.stderr);
58
+ process.stderr.write = (() => {
59
+ called = true;
60
+ return true;
61
+ });
62
+ emitTelemetry({ event: 'auth.device_flow.start' });
63
+ process.stderr.write = orig;
64
+ expect(called).toBe(false);
65
+ });
66
+ });
67
+ //# sourceMappingURL=telemetry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.test.js","sourceRoot":"","sources":["../../src/__tests__/telemetry.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};