aismemory 0.7.4 → 0.7.5

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 (73) hide show
  1. package/README.md +51 -11
  2. package/dist/__tests__/agent-key-mode.test.js +72 -7
  3. package/dist/__tests__/agent-key-mode.test.js.map +1 -1
  4. package/dist/__tests__/ais-http.test.js +32 -0
  5. package/dist/__tests__/ais-http.test.js.map +1 -1
  6. package/dist/__tests__/credential-isolation.test.js +117 -3
  7. package/dist/__tests__/credential-isolation.test.js.map +1 -1
  8. package/dist/__tests__/device-flow-gate-e2e.test.js +5 -0
  9. package/dist/__tests__/device-flow-gate-e2e.test.js.map +1 -1
  10. package/dist/__tests__/doctor.test.js +1 -1
  11. package/dist/__tests__/doctor.test.js.map +1 -1
  12. package/dist/__tests__/mcp-tools.test.d.ts +1 -0
  13. package/dist/__tests__/mcp-tools.test.js +155 -0
  14. package/dist/__tests__/mcp-tools.test.js.map +1 -0
  15. package/dist/__tests__/memory-pull.test.d.ts +1 -0
  16. package/dist/__tests__/memory-pull.test.js +380 -0
  17. package/dist/__tests__/memory-pull.test.js.map +1 -0
  18. package/dist/__tests__/pending-device-flow-e2e.test.d.ts +19 -0
  19. package/dist/__tests__/pending-device-flow-e2e.test.js +159 -0
  20. package/dist/__tests__/pending-device-flow-e2e.test.js.map +1 -0
  21. package/dist/__tests__/pending-device-flow.test.d.ts +15 -0
  22. package/dist/__tests__/pending-device-flow.test.js +108 -0
  23. package/dist/__tests__/pending-device-flow.test.js.map +1 -0
  24. package/dist/__tests__/readme-quickstart-default-ais-url.test.d.ts +1 -0
  25. package/dist/__tests__/readme-quickstart-default-ais-url.test.js +80 -0
  26. package/dist/__tests__/readme-quickstart-default-ais-url.test.js.map +1 -0
  27. package/dist/__tests__/remember-duplicate-truth.test.d.ts +13 -0
  28. package/dist/__tests__/remember-duplicate-truth.test.js +106 -0
  29. package/dist/__tests__/remember-duplicate-truth.test.js.map +1 -0
  30. package/dist/__tests__/startup-credential-warning-e2e.test.d.ts +1 -0
  31. package/dist/__tests__/startup-credential-warning-e2e.test.js +102 -0
  32. package/dist/__tests__/startup-credential-warning-e2e.test.js.map +1 -0
  33. package/dist/__tests__/tool-args.test.js +10 -0
  34. package/dist/__tests__/tool-args.test.js.map +1 -1
  35. package/dist/__tests__/version-check.test.d.ts +1 -0
  36. package/dist/__tests__/version-check.test.js +349 -0
  37. package/dist/__tests__/version-check.test.js.map +1 -0
  38. package/dist/agent-key-mode.d.ts +1 -1
  39. package/dist/agent-key-mode.js +30 -10
  40. package/dist/agent-key-mode.js.map +1 -1
  41. package/dist/ais-http-error.d.ts +22 -0
  42. package/dist/ais-http-error.js +42 -0
  43. package/dist/ais-http-error.js.map +1 -1
  44. package/dist/ais-http.js +31 -13
  45. package/dist/ais-http.js.map +1 -1
  46. package/dist/cli/doctor.d.ts +16 -0
  47. package/dist/cli/doctor.js +64 -0
  48. package/dist/cli/doctor.js.map +1 -1
  49. package/dist/cli/pull-memory.d.ts +17 -0
  50. package/dist/cli/pull-memory.js +141 -0
  51. package/dist/cli/pull-memory.js.map +1 -0
  52. package/dist/index.js +107 -382
  53. package/dist/index.js.map +1 -1
  54. package/dist/mcp/tools.d.ts +78 -0
  55. package/dist/mcp/tools.js +433 -0
  56. package/dist/mcp/tools.js.map +1 -0
  57. package/dist/memory-pull.d.ts +114 -0
  58. package/dist/memory-pull.js +171 -0
  59. package/dist/memory-pull.js.map +1 -0
  60. package/dist/pending-device-flow.d.ts +49 -0
  61. package/dist/pending-device-flow.js +96 -0
  62. package/dist/pending-device-flow.js.map +1 -0
  63. package/dist/telemetry.d.ts +1 -1
  64. package/dist/telemetry.js.map +1 -1
  65. package/dist/tool-args.d.ts +2 -0
  66. package/dist/tool-args.js +6 -0
  67. package/dist/tool-args.js.map +1 -1
  68. package/dist/version-check.d.ts +72 -0
  69. package/dist/version-check.js +237 -0
  70. package/dist/version-check.js.map +1 -0
  71. package/dist/workspace-key-mode.js +15 -6
  72. package/dist/workspace-key-mode.js.map +1 -1
  73. package/package.json +4 -3
@@ -0,0 +1,349 @@
1
+ /**
2
+ * Published-version check (CORBOT-7B8A1D16).
3
+ *
4
+ * Covers the five states the lane names: behind, current, ahead,
5
+ * offline/timeout, and switched off — plus the daily cache and the two places
6
+ * a customer reads the notice (the doctor line and the whoami / full_context
7
+ * tool results).
8
+ */
9
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
10
+ import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
11
+ import { tmpdir } from 'node:os';
12
+ import { join } from 'node:path';
13
+ import { checkForUpdate, classifyVersion, clearUpdateNotice, compareVersions, formatUpdateNotice, getUpdateNotice, isUpdateStatus, isVersionCheckEnabled, startVersionCheck, versionCacheFilePath, REGISTRY_LATEST_URL, } from '../version-check.js';
14
+ import { checkPackageVersion } from '../cli/doctor.js';
15
+ import { createAgentKeyCallToolHandler } from '../mcp/tools.js';
16
+ import { ActivityTracker } from '../auto-handoff.js';
17
+ let home;
18
+ function registryFetch(version, calls) {
19
+ return (async (input) => {
20
+ calls?.push(String(input));
21
+ return Response.json({ name: 'aismemory', version });
22
+ });
23
+ }
24
+ function offlineFetch(message = 'The operation was aborted due to timeout') {
25
+ return (async () => {
26
+ throw new Error(message);
27
+ });
28
+ }
29
+ function asStatus(result) {
30
+ if (!isUpdateStatus(result))
31
+ throw new Error(`expected a version status, got skip: ${result.skipped}`);
32
+ return result;
33
+ }
34
+ beforeEach(() => {
35
+ home = mkdtempSync(join(tmpdir(), 'aismemory-version-check-'));
36
+ clearUpdateNotice();
37
+ });
38
+ afterEach(() => {
39
+ rmSync(home, { recursive: true, force: true });
40
+ clearUpdateNotice();
41
+ });
42
+ describe('compareVersions', () => {
43
+ it('orders release versions by each numeric part', () => {
44
+ expect(compareVersions('0.6.0', '0.7.4')).toBe(-1);
45
+ expect(compareVersions('0.7.4', '0.6.0')).toBe(1);
46
+ expect(compareVersions('0.7.4', '0.7.4')).toBe(0);
47
+ expect(compareVersions('0.10.0', '0.9.9')).toBe(1);
48
+ expect(compareVersions('1.0.0', '0.99.99')).toBe(1);
49
+ });
50
+ it('treats a pre-release as older than the release it leads to', () => {
51
+ expect(compareVersions('1.0.0-rc.1', '1.0.0')).toBe(-1);
52
+ expect(compareVersions('1.0.0', '1.0.0-rc.1')).toBe(1);
53
+ expect(compareVersions('1.0.0-rc.1', '1.0.0-rc.2')).toBe(-1);
54
+ expect(compareVersions('1.0.0-alpha', '1.0.0-beta')).toBe(-1);
55
+ });
56
+ it('ignores a leading v and build metadata', () => {
57
+ expect(compareVersions('v0.7.4', '0.7.4+build.9')).toBe(0);
58
+ });
59
+ });
60
+ describe('classifyVersion', () => {
61
+ it('names the three states', () => {
62
+ expect(classifyVersion('0.6.0', '0.7.4')).toBe('behind');
63
+ expect(classifyVersion('0.7.4', '0.7.4')).toBe('current');
64
+ expect(classifyVersion('0.8.0', '0.7.4')).toBe('ahead');
65
+ });
66
+ });
67
+ describe('checkForUpdate', () => {
68
+ it('reports behind, with a notice naming both versions and both commands', async () => {
69
+ const result = asStatus(await checkForUpdate({
70
+ currentVersion: '0.6.0',
71
+ env: {},
72
+ home,
73
+ fetchImpl: registryFetch('0.7.4'),
74
+ }));
75
+ expect(result.comparison).toBe('behind');
76
+ expect(result.currentVersion).toBe('0.6.0');
77
+ expect(result.latestVersion).toBe('0.7.4');
78
+ expect(result.notice).toContain('you are running version 0.6.0');
79
+ expect(result.notice).toContain('the latest published version is 0.7.4');
80
+ expect(result.notice).toContain('npm install -g aismemory@latest');
81
+ expect(result.notice).toContain('npx -y aismemory@latest');
82
+ });
83
+ it('reports current with no notice', async () => {
84
+ const result = asStatus(await checkForUpdate({
85
+ currentVersion: '0.7.4',
86
+ env: {},
87
+ home,
88
+ fetchImpl: registryFetch('0.7.4'),
89
+ }));
90
+ expect(result.comparison).toBe('current');
91
+ expect(result.notice).toBeUndefined();
92
+ });
93
+ it('reports ahead with no notice when running an unpublished build', async () => {
94
+ const result = asStatus(await checkForUpdate({
95
+ currentVersion: '0.8.0',
96
+ env: {},
97
+ home,
98
+ fetchImpl: registryFetch('0.7.4'),
99
+ }));
100
+ expect(result.comparison).toBe('ahead');
101
+ expect(result.notice).toBeUndefined();
102
+ });
103
+ it('skips without throwing when the registry is unreachable or times out', async () => {
104
+ const result = await checkForUpdate({
105
+ currentVersion: '0.6.0',
106
+ env: {},
107
+ home,
108
+ fetchImpl: offlineFetch(),
109
+ });
110
+ expect(isUpdateStatus(result)).toBe(false);
111
+ expect(result).toMatchObject({ skipped: 'unreachable' });
112
+ });
113
+ it('skips a registry response that carries no version', async () => {
114
+ const result = await checkForUpdate({
115
+ currentVersion: '0.6.0',
116
+ env: {},
117
+ home,
118
+ fetchImpl: (async () => Response.json({ name: 'aismemory' })),
119
+ });
120
+ expect(result).toMatchObject({ skipped: 'unreachable' });
121
+ });
122
+ it('skips a registry error status', async () => {
123
+ const result = await checkForUpdate({
124
+ currentVersion: '0.6.0',
125
+ env: {},
126
+ home,
127
+ fetchImpl: (async () => new Response('nope', { status: 503 })),
128
+ });
129
+ expect(result).toMatchObject({ skipped: 'unreachable' });
130
+ });
131
+ it.each(['off', '0', 'false', 'no', 'OFF'])('does not call the registry when AISMEMORY_VERSION_CHECK=%s', async (value) => {
132
+ const calls = [];
133
+ const result = await checkForUpdate({
134
+ currentVersion: '0.6.0',
135
+ env: { AISMEMORY_VERSION_CHECK: value },
136
+ home,
137
+ fetchImpl: registryFetch('0.7.4', calls),
138
+ });
139
+ expect(result).toMatchObject({ skipped: 'disabled' });
140
+ expect(calls).toEqual([]);
141
+ });
142
+ it('stays enabled for any other value of the switch', () => {
143
+ expect(isVersionCheckEnabled({})).toBe(true);
144
+ expect(isVersionCheckEnabled({ AISMEMORY_VERSION_CHECK: 'on' })).toBe(true);
145
+ expect(isVersionCheckEnabled({ AISMEMORY_VERSION_CHECK: '' })).toBe(true);
146
+ expect(isVersionCheckEnabled({ AISMEMORY_VERSION_CHECK: 'off' })).toBe(false);
147
+ });
148
+ it('asks the registry once a day and serves the cache in between', async () => {
149
+ const calls = [];
150
+ const day = 24 * 60 * 60 * 1000;
151
+ const first = await checkForUpdate({
152
+ currentVersion: '0.6.0',
153
+ env: {},
154
+ home,
155
+ now: () => 1_000_000,
156
+ fetchImpl: registryFetch('0.7.4', calls),
157
+ });
158
+ expect(asStatus(first).latestVersion).toBe('0.7.4');
159
+ expect(calls).toEqual([REGISTRY_LATEST_URL]);
160
+ expect(JSON.parse(readFileSync(versionCacheFilePath(home), 'utf-8'))).toEqual({
161
+ latestVersion: '0.7.4',
162
+ checkedAt: 1_000_000,
163
+ });
164
+ // One hour later: served from cache, no second registry call.
165
+ const cached = await checkForUpdate({
166
+ currentVersion: '0.6.0',
167
+ env: {},
168
+ home,
169
+ now: () => 1_000_000 + 3_600_000,
170
+ fetchImpl: registryFetch('9.9.9', calls),
171
+ });
172
+ expect(asStatus(cached).latestVersion).toBe('0.7.4');
173
+ expect(calls).toHaveLength(1);
174
+ // A day later: the cache has expired and the registry is asked again.
175
+ const refreshed = await checkForUpdate({
176
+ currentVersion: '0.6.0',
177
+ env: {},
178
+ home,
179
+ now: () => 1_000_000 + day + 1,
180
+ fetchImpl: registryFetch('0.8.0', calls),
181
+ });
182
+ expect(asStatus(refreshed).latestVersion).toBe('0.8.0');
183
+ expect(calls).toHaveLength(2);
184
+ });
185
+ it('ignores a corrupt cache file rather than failing', async () => {
186
+ mkdirSync(join(home, '.aismemory'), { recursive: true });
187
+ writeFileSync(versionCacheFilePath(home), 'not json at all');
188
+ const result = asStatus(await checkForUpdate({
189
+ currentVersion: '0.6.0',
190
+ env: {},
191
+ home,
192
+ fetchImpl: registryFetch('0.7.4'),
193
+ }));
194
+ expect(result.latestVersion).toBe('0.7.4');
195
+ });
196
+ });
197
+ describe('startVersionCheck', () => {
198
+ it('publishes the notice and announces it once when behind', async () => {
199
+ const announced = [];
200
+ await startVersionCheck({
201
+ currentVersion: '0.6.0',
202
+ env: {},
203
+ home,
204
+ fetchImpl: registryFetch('0.7.4'),
205
+ onUpdateAvailable: (notice) => { announced.push(notice); },
206
+ });
207
+ expect(announced).toEqual([formatUpdateNotice('0.6.0', '0.7.4')]);
208
+ expect(getUpdateNotice()).toBe(formatUpdateNotice('0.6.0', '0.7.4'));
209
+ });
210
+ it.each([
211
+ ['current', '0.7.4', registryFetch('0.7.4')],
212
+ ['ahead', '0.8.0', registryFetch('0.7.4')],
213
+ ['offline', '0.6.0', offlineFetch()],
214
+ ])('publishes no notice when %s', async (_label, currentVersion, fetchImpl) => {
215
+ await startVersionCheck({ currentVersion, env: {}, home, fetchImpl });
216
+ expect(getUpdateNotice()).toBeNull();
217
+ });
218
+ it('publishes no notice when the check is switched off', async () => {
219
+ await startVersionCheck({
220
+ currentVersion: '0.6.0',
221
+ env: { AISMEMORY_VERSION_CHECK: 'off' },
222
+ home,
223
+ fetchImpl: registryFetch('0.7.4'),
224
+ });
225
+ expect(getUpdateNotice()).toBeNull();
226
+ });
227
+ });
228
+ describe('doctor package-version check', () => {
229
+ const behind = async () => ({
230
+ currentVersion: '0.6.0',
231
+ latestVersion: '0.7.4',
232
+ comparison: 'behind',
233
+ notice: formatUpdateNotice('0.6.0', '0.7.4'),
234
+ });
235
+ it('WARNs with the upgrade command when behind', async () => {
236
+ const check = await checkPackageVersion({ packageVersion: '0.6.0', versionCheck: behind });
237
+ expect(check).toMatchObject({ name: 'Package version', status: 'WARN' });
238
+ expect(check.message).toContain('0.6.0');
239
+ expect(check.message).toContain('0.7.4');
240
+ expect(check.hint).toContain('npm install -g aismemory@latest');
241
+ });
242
+ it('PASSes when current', async () => {
243
+ const check = await checkPackageVersion({
244
+ packageVersion: '0.7.4',
245
+ versionCheck: async () => ({
246
+ currentVersion: '0.7.4', latestVersion: '0.7.4', comparison: 'current',
247
+ }),
248
+ });
249
+ expect(check.status).toBe('PASS');
250
+ expect(check.message).toContain('the latest published version');
251
+ });
252
+ it('PASSes when ahead of the published version', async () => {
253
+ const check = await checkPackageVersion({
254
+ packageVersion: '0.8.0',
255
+ versionCheck: async () => ({
256
+ currentVersion: '0.8.0', latestVersion: '0.7.4', comparison: 'ahead',
257
+ }),
258
+ });
259
+ expect(check.status).toBe('PASS');
260
+ expect(check.message).toContain('ahead of the latest published version');
261
+ });
262
+ it('PASSes and says so when the registry could not be reached', async () => {
263
+ const check = await checkPackageVersion({
264
+ packageVersion: '0.6.0',
265
+ versionCheck: async () => ({ skipped: 'unreachable', detail: 'timed out' }),
266
+ });
267
+ expect(check.status).toBe('PASS');
268
+ expect(check.message).toContain('could not reach the npm registry');
269
+ expect(check.hint).toBeUndefined();
270
+ });
271
+ it('PASSes and says so when the check is switched off', async () => {
272
+ const check = await checkPackageVersion({
273
+ packageVersion: '0.6.0',
274
+ versionCheck: async () => ({ skipped: 'disabled' }),
275
+ });
276
+ expect(check.status).toBe('PASS');
277
+ expect(check.message).toContain('AISMEMORY_VERSION_CHECK');
278
+ });
279
+ it('runs the real check end to end against an injected registry', async () => {
280
+ const check = await checkPackageVersion({
281
+ packageVersion: '0.6.0',
282
+ env: {},
283
+ home,
284
+ fetchImpl: registryFetch('0.7.4'),
285
+ });
286
+ expect(check.status).toBe('WARN');
287
+ expect(check.message).toContain('aismemory update available');
288
+ });
289
+ });
290
+ describe('model context protocol tool results', () => {
291
+ const config = {
292
+ agentId: '11111111-2222-3333-4444-555555555555',
293
+ apiKey: 'synthetic-key',
294
+ tenantId: 'tenant-a',
295
+ };
296
+ function handlerWithFetch(payload) {
297
+ globalThis.fetch = (async () => Response.json(payload));
298
+ return createAgentKeyCallToolHandler({
299
+ aisUrl: 'https://ais.example',
300
+ activityTracker: new ActivityTracker(),
301
+ config,
302
+ getHarnessIdentity: () => null,
303
+ });
304
+ }
305
+ const originalFetch = globalThis.fetch;
306
+ afterEach(() => { globalThis.fetch = originalFetch; });
307
+ async function callTool(name) {
308
+ const handler = handlerWithFetch({ success: true, data: { id: config.agentId, name: 'Jaire' } });
309
+ const response = await handler({
310
+ method: 'tools/call',
311
+ params: { name, arguments: {} },
312
+ });
313
+ const first = response.content?.[0];
314
+ if (!first || first.type !== 'text')
315
+ throw new Error('tool returned no text content');
316
+ return JSON.parse(first.text);
317
+ }
318
+ it.each(['whoami', 'full_context'])('carries the notice in the %s result when behind', async (tool) => {
319
+ await startVersionCheck({
320
+ currentVersion: '0.6.0',
321
+ env: {},
322
+ home,
323
+ fetchImpl: registryFetch('0.7.4'),
324
+ });
325
+ const result = await callTool(tool);
326
+ expect(result['aismemoryUpdateAvailable']).toBe(formatUpdateNotice('0.6.0', '0.7.4'));
327
+ });
328
+ it('carries nothing in the whoami result when the version is current', async () => {
329
+ await startVersionCheck({
330
+ currentVersion: '0.7.4',
331
+ env: {},
332
+ home,
333
+ fetchImpl: registryFetch('0.7.4'),
334
+ });
335
+ const result = await callTool('whoami');
336
+ expect(result['aismemoryUpdateAvailable']).toBeUndefined();
337
+ });
338
+ it('leaves other tool results untouched when behind', async () => {
339
+ await startVersionCheck({
340
+ currentVersion: '0.6.0',
341
+ env: {},
342
+ home,
343
+ fetchImpl: registryFetch('0.7.4'),
344
+ });
345
+ const result = await callTool('recall');
346
+ expect(result['aismemoryUpdateAvailable']).toBeUndefined();
347
+ });
348
+ });
349
+ //# sourceMappingURL=version-check.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.test.js","sourceRoot":"","sources":["../../src/__tests__/version-check.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,IAAI,IAAY,CAAC;AAEjB,SAAS,aAAa,CAAC,OAAe,EAAE,KAAgB;IACtD,OAAO,CAAC,KAAK,EAAE,KAAwB,EAAqB,EAAE;QAC5D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC,CAAiB,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,OAAO,GAAG,0CAA0C;IACxE,OAAO,CAAC,KAAK,IAAuB,EAAE;QACpC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAiB,CAAC;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,MAA0B;IAC1C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACvG,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,UAAU,CAAC,GAAS,EAAE;IACpB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAC/D,iBAAiB,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAS,EAAE;IACnB,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,iBAAiB,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,8CAA8C,EAAE,GAAS,EAAE;QAC5D,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAS,EAAE;QAC1E,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;QACtD,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,wBAAwB,EAAE,GAAS,EAAE;QACtC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAmB,EAAE;QACnG,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC;YAC3C,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAmB,EAAE;QAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC;YAC3C,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAmB,EAAE;QAC7F,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC;YAC3C,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAmB,EAAE;QACnG,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,YAAY,EAAE;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAmB,EAAE;QAChF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,CAAC,KAAK,IAAuB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAiB;SACjG,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAmB,EAAE;QAC5D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,CAAC,KAAK,IAAuB,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAiB;SAClG,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CACzC,4DAA4D,EAC5D,KAAK,EAAE,KAAK,EAAiB,EAAE;QAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE;YACvC,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;SACzC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CACF,CAAC;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;QAC/D,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,qBAAqB,CAAC,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,MAAM,CAAC,qBAAqB,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,CAAC,qBAAqB,CAAC,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAmB,EAAE;QAC3F,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC;YACjC,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;YACpB,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,aAAa,EAAE,OAAO;YACtB,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,8DAA8D;QAC9D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,GAAG,SAAS;YAChC,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE9B,sEAAsE;QACtE,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC;YACrC,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC;YAC9B,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAmB,EAAE;QAC/E,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC;YAC3C,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC,CAAC;QACJ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAmB,EAAE;QACrF,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,iBAAiB,CAAC;YACtB,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;YACjC,iBAAiB,EAAE,CAAC,MAAM,EAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACjE,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;KACrC,CAAC,CAAC,6BAA6B,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAiB,EAAE;QAC3F,MAAM,iBAAiB,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAmB,EAAE;QACjF,MAAM,iBAAiB,CAAC;YACtB,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE;YACvC,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,MAAM,MAAM,GAAG,KAAK,IAAiC,EAAE,CAAC,CAAC;QACvD,cAAc,EAAE,OAAO;QACvB,aAAa,EAAE,OAAO;QACtB,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;KAC7C,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAmB,EAAE;QACzE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAmB,EAAE;QAClD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC;YACtC,cAAc,EAAE,OAAO;YACvB,YAAY,EAAE,KAAK,IAAiC,EAAE,CAAC,CAAC;gBACtD,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS;aACvE,CAAC;SACH,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAmB,EAAE;QACzE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC;YACtC,cAAc,EAAE,OAAO;YACvB,YAAY,EAAE,KAAK,IAAiC,EAAE,CAAC,CAAC;gBACtD,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;aACrE,CAAC;SACH,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAmB,EAAE;QACxF,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC;YACtC,cAAc,EAAE,OAAO;YACvB,YAAY,EAAE,KAAK,IAAiC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;SACzG,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAmB,EAAE;QAChF,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC;YACtC,cAAc,EAAE,OAAO;YACvB,YAAY,EAAE,KAAK,IAAiC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;SACjF,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAmB,EAAE;QAC1F,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC;YACtC,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,sCAAsC;QAC/C,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEF,SAAS,gBAAgB,CAAC,OAAgB;QACxC,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,IAAuB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAiB,CAAC;QAC3F,OAAO,6BAA6B,CAAC;YACnC,MAAM,EAAE,qBAAqB;YAC7B,eAAe,EAAE,IAAI,eAAe,EAAE;YACtC,MAAM;YACN,kBAAkB,EAAE,GAAS,EAAE,CAAC,IAAI;SACrC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC;IACvC,SAAS,CAAC,GAAS,EAAE,GAAG,UAAU,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,KAAK,UAAU,QAAQ,CAAC,IAAY;QAClC,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACjG,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;SAChC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IAC3D,CAAC;IAED,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,iDAAiD,EAAE,KAAK,EAAE,IAAI,EAAiB,EAAE;QACnH,MAAM,iBAAiB,CAAC;YACtB,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAmB,EAAE;QAC/F,MAAM,iBAAiB,CAAC;YACtB,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAmB,EAAE;QAC9E,MAAM,iBAAiB,CAAC;YACtB,cAAc,EAAE,OAAO;YACvB,GAAG,EAAE,EAAE;YACP,IAAI;YACJ,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -26,7 +26,7 @@ export declare function aisKeyPatch(aisUrl: string, path: string, apiKey: string
26
26
  export declare const UNKNOWN_TOOL_KEY_MODE: unique symbol;
27
27
  /**
28
28
  * Error for a tool whose server route falls outside the agent-API-key
29
- * allowlist (memory, goals, dream, full-context). Thrown instead of ever
29
+ * allowlist (memory, goals, dream, full-context, handoff). Thrown instead of ever
30
30
  * making the doomed request — the server would 403 it anyway, but failing
31
31
  * fast client-side keeps the error message focused on SCOPE rather than a
32
32
  * generic 403, and avoids burning a round trip on a request known to fail.
@@ -19,9 +19,9 @@
19
19
  * out-of-scope route return an honest error instead of making a request the
20
20
  * server would reject anyway.
21
21
  */
22
- import { AisHttpError } from './ais-http-error.js';
22
+ import { AisHttpError, duplicateMemoryResult } from './ais-http-error.js';
23
23
  import { emitTelemetry } from './telemetry.js';
24
- import { parseEmptyToolArgs, parseRecallArgs, parseFullContextArgs, parseRememberArgs, parseInboxSendArgs, parseInboxReadArgs, parseGoalCreateArgs, parseGoalListArgs, parseGoalUpdateProgressArgs, parseGoalCompleteArgs, parseInboxAckArgs, } from './tool-args.js';
24
+ import { parseEmptyToolArgs, parseRecallArgs, parseFullContextArgs, parseRememberArgs, parseInboxSendArgs, parseInboxReadArgs, parseGoalCreateArgs, parseGoalListArgs, parseGoalUpdateProgressArgs, parseGoalCompleteArgs, parseInboxAckArgs, parseHandoffArgs, } from './tool-args.js';
25
25
  import { readInboxAndMaybeAck } from './inbox-client.js';
26
26
  /** Thrown by loadAgentApiKeyConfig when AIS_AGENT_API_KEY is set without AIS_AGENT_ID. */
27
27
  export class AgentApiKeyConfigError extends Error {
@@ -139,7 +139,7 @@ export async function aisKeyPatch(aisUrl, path, apiKey, body, fetchImpl = global
139
139
  export const UNKNOWN_TOOL_KEY_MODE = Symbol('unknown-tool-key-mode');
140
140
  /**
141
141
  * Error for a tool whose server route falls outside the agent-API-key
142
- * allowlist (memory, goals, dream, full-context). Thrown instead of ever
142
+ * allowlist (memory, goals, dream, full-context, handoff). Thrown instead of ever
143
143
  * making the doomed request — the server would 403 it anyway, but failing
144
144
  * fast client-side keeps the error message focused on SCOPE rather than a
145
145
  * generic 403, and avoids burning a round trip on a request known to fail.
@@ -155,11 +155,21 @@ export async function dispatchToolKeyMode(aisUrl, config, name, rawArgs, fetchIm
155
155
  switch (name) {
156
156
  case 'remember': {
157
157
  const args = parseRememberArgs(rawArgs);
158
- return aisKeyPost(aisUrl, `/v1/agents/${agentId}/memory`, apiKey, {
159
- content: args.content,
160
- type: args.type,
161
- importance: args.importance,
162
- }, fetchImpl);
158
+ try {
159
+ return await aisKeyPost(aisUrl, `/v1/agents/${agentId}/memory`, apiKey, {
160
+ content: args.content,
161
+ type: args.type,
162
+ importance: args.importance,
163
+ }, fetchImpl);
164
+ }
165
+ catch (err) {
166
+ // CORBOT-F21668B5: a deduplicated write is not a lost write — report
167
+ // what is true instead of an error the agent would retry forever.
168
+ const duplicate = duplicateMemoryResult(err);
169
+ if (duplicate)
170
+ return duplicate;
171
+ throw err;
172
+ }
163
173
  }
164
174
  case 'recall': {
165
175
  const args = parseRecallArgs(rawArgs);
@@ -266,8 +276,18 @@ export async function dispatchToolKeyMode(aisUrl, config, name, rawArgs, fetchIm
266
276
  ...(args.lessonsLearned !== undefined ? { lessonsLearned: args.lessonsLearned } : {}),
267
277
  }, fetchImpl);
268
278
  }
269
- case 'handoff':
270
- throw new OutOfScopeToolError('handoff', "the handoff route is outside the key's allowed scope (memory, goals, dream, full-context).");
279
+ case 'handoff': {
280
+ // CORBOT-E3541A7F: handoff is in the agent key's scope. The route is
281
+ // own-agent only — the service pins the path agent to the key's agent —
282
+ // so the agent id comes from the key, never from the caller's arguments.
283
+ const args = parseHandoffArgs(rawArgs);
284
+ return aisKeyPost(aisUrl, `/v1/agents/${agentId}/handoff`, apiKey, {
285
+ ...(args.summary !== undefined ? { summary: args.summary } : {}),
286
+ ...(args.keyLearnings !== undefined ? { keyLearnings: args.keyLearnings } : {}),
287
+ ...(args.docPath !== undefined ? { docPath: args.docPath } : {}),
288
+ ...(args.docPrUrl !== undefined ? { docPrUrl: args.docPrUrl } : {}),
289
+ }, fetchImpl);
290
+ }
271
291
  case 'agent_load':
272
292
  throw new OutOfScopeToolError('agent_load', 'switching agents requires a tenant-wide agent-listing route, which is outside the ' +
273
293
  "key's allowed scope. The active agent is fixed to AIS_AGENT_ID for the life of this process.");
@@ -1 +1 @@
1
- {"version":3,"file":"agent-key-mode.js","sourceRoot":"","sources":["../src/agent-key-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-key-mode.js","sourceRoot":"","sources":["../src/agent-key-mode.ts"],"names":[],"mappings":"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"}
@@ -24,3 +24,25 @@ export declare class AisHttpError extends Error {
24
24
  readonly body: unknown;
25
25
  constructor(status: number, path: string, body: unknown);
26
26
  }
27
+ /**
28
+ * The result a `remember` returns when the server deduplicated the write
29
+ * (HTTP 409 DUPLICATE_MEMORY).
30
+ *
31
+ * CORBOT-F21668B5: a duplicate is not a failed write. The agent's content IS
32
+ * stored — an identical memory was written earlier — so reporting the tool
33
+ * call as an error made agents believe their memory was lost and retry a call
34
+ * that can never succeed. This result states what is actually true.
35
+ */
36
+ export interface DuplicateMemoryResult {
37
+ readonly success: true;
38
+ readonly duplicate: true;
39
+ readonly data?: {
40
+ readonly id: string;
41
+ };
42
+ readonly message: string;
43
+ }
44
+ /**
45
+ * Convert a duplicate-memory rejection into the truthful success result above.
46
+ * Returns null for every other error, which the caller must re-throw.
47
+ */
48
+ export declare function duplicateMemoryResult(error: unknown): DuplicateMemoryResult | null;
@@ -72,4 +72,46 @@ export class AisHttpError extends Error {
72
72
  this.body = body;
73
73
  }
74
74
  }
75
+ /** Read `error.details.existingMemoryId` out of an AIS error body, if present. */
76
+ function existingMemoryIdOf(body) {
77
+ if (typeof body !== 'object' || body === null)
78
+ return null;
79
+ const err = body.error;
80
+ if (typeof err !== 'object' || err === null)
81
+ return null;
82
+ const details = err.details;
83
+ if (typeof details !== 'object' || details === null)
84
+ return null;
85
+ const id = details.existingMemoryId;
86
+ return typeof id === 'string' && id !== '' ? id : null;
87
+ }
88
+ /** True when an AIS error body carries the duplicate-memory code. */
89
+ function isDuplicateMemoryBody(body) {
90
+ if (typeof body !== 'object' || body === null)
91
+ return false;
92
+ const err = body.error;
93
+ if (typeof err !== 'object' || err === null)
94
+ return false;
95
+ return err.code === 'DUPLICATE_MEMORY';
96
+ }
97
+ /**
98
+ * Convert a duplicate-memory rejection into the truthful success result above.
99
+ * Returns null for every other error, which the caller must re-throw.
100
+ */
101
+ export function duplicateMemoryResult(error) {
102
+ if (!(error instanceof AisHttpError) || error.status !== 409)
103
+ return null;
104
+ if (!isDuplicateMemoryBody(error.body))
105
+ return null;
106
+ const existingId = existingMemoryIdOf(error.body);
107
+ const message = existingId
108
+ ? `Already remembered — this exact content is stored as memory ${existingId}. Nothing was written twice and nothing was lost; do not retry.`
109
+ : 'Already remembered — this exact content is already stored for this agent. Nothing was written twice and nothing was lost; do not retry.';
110
+ return {
111
+ success: true,
112
+ duplicate: true,
113
+ ...(existingId ? { data: { id: existingId } } : {}),
114
+ message,
115
+ };
116
+ }
75
117
  //# sourceMappingURL=ais-http-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ais-http-error.js","sourceRoot":"","sources":["../src/ais-http-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ais-http-error.js","sourceRoot":"","sources":["../src/ais-http-error.ts"],"names":[],"mappings":"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"}