aismemory 0.7.5 → 0.8.2

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 (133) hide show
  1. package/README.md +247 -7
  2. package/dist/__tests__/agent-archive.test.d.ts +1 -0
  3. package/dist/__tests__/agent-archive.test.js +153 -0
  4. package/dist/__tests__/agent-archive.test.js.map +1 -0
  5. package/dist/__tests__/agent-key-mode.test.js +121 -6
  6. package/dist/__tests__/agent-key-mode.test.js.map +1 -1
  7. package/dist/__tests__/agent-load-persistence.test.js +22 -6
  8. package/dist/__tests__/agent-load-persistence.test.js.map +1 -1
  9. package/dist/__tests__/ais-http.test.js +23 -3
  10. package/dist/__tests__/ais-http.test.js.map +1 -1
  11. package/dist/__tests__/auto-handoff.test.js +56 -0
  12. package/dist/__tests__/auto-handoff.test.js.map +1 -1
  13. package/dist/__tests__/bond-link-survives-exit.test.d.ts +1 -0
  14. package/dist/__tests__/bond-link-survives-exit.test.js +177 -0
  15. package/dist/__tests__/bond-link-survives-exit.test.js.map +1 -0
  16. package/dist/__tests__/credential-resolution.test.js +56 -8
  17. package/dist/__tests__/credential-resolution.test.js.map +1 -1
  18. package/dist/__tests__/credential-whoami.test.d.ts +8 -0
  19. package/dist/__tests__/credential-whoami.test.js +93 -0
  20. package/dist/__tests__/credential-whoami.test.js.map +1 -0
  21. package/dist/__tests__/device-flow-gate-e2e.test.js +6 -4
  22. package/dist/__tests__/device-flow-gate-e2e.test.js.map +1 -1
  23. package/dist/__tests__/doctor.test.js +176 -85
  24. package/dist/__tests__/doctor.test.js.map +1 -1
  25. package/dist/__tests__/full-context-view-forwarding.test.d.ts +1 -0
  26. package/dist/__tests__/full-context-view-forwarding.test.js +80 -0
  27. package/dist/__tests__/full-context-view-forwarding.test.js.map +1 -0
  28. package/dist/__tests__/hydration.test.js +56 -1
  29. package/dist/__tests__/hydration.test.js.map +1 -1
  30. package/dist/__tests__/install.test.d.ts +1 -0
  31. package/dist/__tests__/install.test.js +126 -0
  32. package/dist/__tests__/install.test.js.map +1 -0
  33. package/dist/__tests__/integration.test.js +1 -0
  34. package/dist/__tests__/integration.test.js.map +1 -1
  35. package/dist/__tests__/lost-agent.test.js +51 -0
  36. package/dist/__tests__/lost-agent.test.js.map +1 -1
  37. package/dist/__tests__/mcp-tools.test.js +210 -3
  38. package/dist/__tests__/mcp-tools.test.js.map +1 -1
  39. package/dist/__tests__/memory-write-failure.test.js +4 -8
  40. package/dist/__tests__/memory-write-failure.test.js.map +1 -1
  41. package/dist/__tests__/no-registered-keys-disk-bearer-fallback.test.js +4 -7
  42. package/dist/__tests__/no-registered-keys-disk-bearer-fallback.test.js.map +1 -1
  43. package/dist/__tests__/pending-device-flow-e2e.test.js +22 -1
  44. package/dist/__tests__/pending-device-flow-e2e.test.js.map +1 -1
  45. package/dist/__tests__/pending-device-flow-resume.test.d.ts +1 -0
  46. package/dist/__tests__/pending-device-flow-resume.test.js +104 -0
  47. package/dist/__tests__/pending-device-flow-resume.test.js.map +1 -0
  48. package/dist/__tests__/prompt-resource.test.js +1 -0
  49. package/dist/__tests__/prompt-resource.test.js.map +1 -1
  50. package/dist/__tests__/provisional-register-mcp-remember.test.js +4 -8
  51. package/dist/__tests__/provisional-register-mcp-remember.test.js.map +1 -1
  52. package/dist/__tests__/reconnect-survival-e2e.test.js +3 -4
  53. package/dist/__tests__/reconnect-survival-e2e.test.js.map +1 -1
  54. package/dist/__tests__/refresh.test.js +24 -2
  55. package/dist/__tests__/refresh.test.js.map +1 -1
  56. package/dist/__tests__/request-timeout.test.d.ts +1 -0
  57. package/dist/__tests__/request-timeout.test.js +40 -0
  58. package/dist/__tests__/request-timeout.test.js.map +1 -0
  59. package/dist/__tests__/resolve-agent-preference-e2e.test.js +15 -3
  60. package/dist/__tests__/resolve-agent-preference-e2e.test.js.map +1 -1
  61. package/dist/__tests__/retry-after.test.d.ts +4 -0
  62. package/dist/__tests__/retry-after.test.js +134 -0
  63. package/dist/__tests__/retry-after.test.js.map +1 -0
  64. package/dist/__tests__/run-pass-mode.test.d.ts +1 -0
  65. package/dist/__tests__/run-pass-mode.test.js +130 -0
  66. package/dist/__tests__/run-pass-mode.test.js.map +1 -0
  67. package/dist/__tests__/session-identity.test.d.ts +1 -0
  68. package/dist/__tests__/session-identity.test.js +213 -0
  69. package/dist/__tests__/session-identity.test.js.map +1 -0
  70. package/dist/__tests__/version-check.test.js +1 -1
  71. package/dist/__tests__/workspace-key-mode.test.js +194 -16
  72. package/dist/__tests__/workspace-key-mode.test.js.map +1 -1
  73. package/dist/agent-archive.d.ts +36 -0
  74. package/dist/agent-archive.js +69 -0
  75. package/dist/agent-archive.js.map +1 -0
  76. package/dist/agent-key-mode.js +86 -29
  77. package/dist/agent-key-mode.js.map +1 -1
  78. package/dist/ais-http-error.d.ts +7 -2
  79. package/dist/ais-http-error.js +18 -5
  80. package/dist/ais-http-error.js.map +1 -1
  81. package/dist/ais-http.d.ts +2 -0
  82. package/dist/ais-http.js +41 -19
  83. package/dist/ais-http.js.map +1 -1
  84. package/dist/auto-handoff.js +33 -1
  85. package/dist/auto-handoff.js.map +1 -1
  86. package/dist/cli/doctor.d.ts +5 -2
  87. package/dist/cli/doctor.js +72 -15
  88. package/dist/cli/doctor.js.map +1 -1
  89. package/dist/cli/install.d.ts +6 -0
  90. package/dist/cli/install.js +52 -0
  91. package/dist/cli/install.js.map +1 -0
  92. package/dist/cli/orientation.d.ts +2 -0
  93. package/dist/cli/orientation.js +31 -1
  94. package/dist/cli/orientation.js.map +1 -1
  95. package/dist/credential-whoami.d.ts +50 -0
  96. package/dist/credential-whoami.js +91 -0
  97. package/dist/credential-whoami.js.map +1 -0
  98. package/dist/hydration.js +8 -0
  99. package/dist/hydration.js.map +1 -1
  100. package/dist/index.js +213 -50
  101. package/dist/index.js.map +1 -1
  102. package/dist/mcp/tools.d.ts +18 -4
  103. package/dist/mcp/tools.js +107 -12
  104. package/dist/mcp/tools.js.map +1 -1
  105. package/dist/pending-device-flow.d.ts +31 -0
  106. package/dist/pending-device-flow.js +38 -0
  107. package/dist/pending-device-flow.js.map +1 -1
  108. package/dist/refresh.js +5 -1
  109. package/dist/refresh.js.map +1 -1
  110. package/dist/request-timeout.d.ts +26 -0
  111. package/dist/request-timeout.js +49 -0
  112. package/dist/request-timeout.js.map +1 -0
  113. package/dist/retry-after.d.ts +26 -0
  114. package/dist/retry-after.js +42 -0
  115. package/dist/retry-after.js.map +1 -0
  116. package/dist/run-pass-mode.d.ts +16 -0
  117. package/dist/run-pass-mode.js +274 -0
  118. package/dist/run-pass-mode.js.map +1 -0
  119. package/dist/session-identity.d.ts +40 -0
  120. package/dist/session-identity.js +179 -0
  121. package/dist/session-identity.js.map +1 -0
  122. package/dist/telemetry.d.ts +1 -1
  123. package/dist/telemetry.js.map +1 -1
  124. package/dist/tool-args.d.ts +13 -1
  125. package/dist/tool-args.js +27 -1
  126. package/dist/tool-args.js.map +1 -1
  127. package/dist/types.d.ts +32 -0
  128. package/dist/workspace-key-mode.js +100 -26
  129. package/dist/workspace-key-mode.js.map +1 -1
  130. package/package.json +4 -6
  131. package/dist/harness-identity.d.ts +0 -17
  132. package/dist/harness-identity.js +0 -105
  133. package/dist/harness-identity.js.map +0 -1
@@ -5,7 +5,7 @@
5
5
  * so tests inject fakes instead of hitting the real network or filesystem.
6
6
  */
7
7
  import { afterEach, describe, it, expect } from 'vitest';
8
- import { checkHarnessIdentity, checkNodeVersion, checkDnsResolution, checkTlsReachability, checkRestHealth, checkMcpEndpoint, checkCredentials, checkProxyEnv, checkClockSkew, runDoctor, } from '../cli/doctor.js';
8
+ import { checkSessionIdentity, checkLegacyHarnessPins, checkNodeVersion, checkDnsResolution, checkTlsReachability, checkRestHealth, checkMcpEndpoint, checkCredentials, checkProxyEnv, checkClockSkew, runDoctor, } from '../cli/doctor.js';
9
9
  function fakeResponse(status, headers = {}) {
10
10
  const headerMap = new Headers(headers);
11
11
  return {
@@ -197,6 +197,7 @@ describe('checkClockSkew', () => {
197
197
  describe('runDoctor', () => {
198
198
  it.each([404, 500])('fails the report when MCP returns HTTP %i', async (status) => {
199
199
  const report = await runDoctor({
200
+ home: homeFixture(),
200
201
  aisUrl: 'https://ais.example',
201
202
  env: {},
202
203
  nodeVersion: 'v20.10.0',
@@ -209,7 +210,7 @@ describe('runDoctor', () => {
209
210
  expect(report.verdict).toBe('problems');
210
211
  expect(report.checks.find((check) => check.name === 'MCP HTTP endpoint')?.status).toBe('FAIL');
211
212
  });
212
- it('passes an otherwise healthy legacy environment without a harness pin', async () => {
213
+ it('passes an otherwise healthy environment with no session identity set', async () => {
213
214
  const now = Date.now();
214
215
  const fetchImpl = async (input) => {
215
216
  const url = String(input);
@@ -220,6 +221,7 @@ describe('runDoctor', () => {
220
221
  return fakeResponse(200);
221
222
  };
222
223
  const report = await runDoctor({
224
+ home: homeFixture(),
223
225
  aisUrl: 'https://ais.agentsandswarms.ai',
224
226
  env: {},
225
227
  nodeVersion: 'v20.10.0',
@@ -229,13 +231,14 @@ describe('runDoctor', () => {
229
231
  tlsProbe: async () => undefined,
230
232
  loadCreds: () => ({ token: 'synthetic-token', agentId: 'legacy-agent', tenantId: 'tenant-a', expiresAt: new Date(now + 3600000).toISOString() }),
231
233
  });
232
- expect(report.checks).toHaveLength(10);
233
- expect(report.checks.find((c) => c.name === 'Harness identity gate')?.status).toBe('PASS');
234
+ expect(report.checks).toHaveLength(12);
235
+ expect(report.checks.find((c) => c.name === 'Session identity')?.status).toBe('PASS');
234
236
  expect(report.verdict).toBe('pass');
235
237
  expect(report.exitCode).toBe(0);
236
238
  });
237
239
  it('sets exit code 1 when any check fails', async () => {
238
240
  const report = await runDoctor({
241
+ home: homeFixture(),
239
242
  aisUrl: 'https://ais.agentsandswarms.ai',
240
243
  env: {},
241
244
  nodeVersion: 'v14.0.0', // below minimum -> FAIL
@@ -266,6 +269,7 @@ describe('runDoctor', () => {
266
269
  return new Response(JSON.stringify({ success: true, data: { id: 'agent-1' } }), { status: 200 });
267
270
  };
268
271
  const report = await runDoctor({
272
+ home: homeFixture(),
269
273
  aisUrl: 'https://ais.agentsandswarms.ai',
270
274
  env: { AIS_AGENT_ID: 'agent-1' },
271
275
  nodeVersion: 'v20.10.0',
@@ -281,25 +285,41 @@ describe('runDoctor', () => {
281
285
  expect(report.exitCode).toBe(0);
282
286
  });
283
287
  });
284
- import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
288
+ import { existsSync, mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
285
289
  import { tmpdir } from 'node:os';
286
290
  import { join, resolve } from 'node:path';
287
291
  import { createServer } from 'node:http';
288
292
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
289
293
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
290
- import { installHarnessIdentity, loadHarnessIdentity, verifyPinnedIdentity, requiresIdentityGate } from '../harness-identity.js';
294
+ import * as sessionIdentityModule from '../session-identity.js';
295
+ import { loadSessionIdentity, legacyHarnessManifests, switchedTo, verifyPinnedIdentity, requiresIdentityGate, } from '../session-identity.js';
291
296
  const homes = [];
292
297
  const clients = [];
293
298
  let server;
294
299
  function homeFixture() {
295
- const home = mkdtempSync(join(tmpdir(), 'ais-harness-gate-'));
300
+ const home = mkdtempSync(join(tmpdir(), 'ais-session-identity-'));
296
301
  homes.push(home);
297
302
  return home;
298
303
  }
299
- function install(home, harness, agentId) {
300
- const source = join(home, `${harness}-source.json`);
301
- writeFileSync(source, JSON.stringify({ version: 1, harness, agentId }));
302
- installHarnessIdentity(source, home);
304
+ /** Writes a leftover manifest from the removed per-harness pin, to prove it is ignored. */
305
+ function legacyManifest(home, harness, agentId) {
306
+ const dir = join(home, '.aismemory', 'harnesses');
307
+ mkdirSync(dir, { recursive: true });
308
+ const path = join(dir, `${harness}.json`);
309
+ writeFileSync(path, JSON.stringify({ version: 1, harness, agentId }));
310
+ return path;
311
+ }
312
+ /**
313
+ * Credentials for ONE session's agent. AIS_AGENT_ID already routes each
314
+ * session to ~/.aismemory/agents/<id>/credentials.json, so two agents on one
315
+ * machine never share a credential file.
316
+ */
317
+ function agentCredentials(home, agentId) {
318
+ const dir = join(home, '.aismemory', 'agents', agentId);
319
+ mkdirSync(dir, { recursive: true });
320
+ const path = join(dir, 'credentials.json');
321
+ writeFileSync(path, JSON.stringify({ agentId, tenantId: 'synthetic-tenant', token: 'synthetic-bearer', expiresAt: new Date(Date.now() + 3600000).toISOString() }));
322
+ return path;
303
323
  }
304
324
  function sharedDefault(home, agentId) {
305
325
  const path = join(home, '.aismemory', 'credentials.json');
@@ -307,13 +327,18 @@ function sharedDefault(home, agentId) {
307
327
  writeFileSync(path, JSON.stringify({ agentId, tenantId: 'synthetic-tenant', token: 'synthetic-bearer', expiresAt: new Date(Date.now() + 3600000).toISOString() }));
308
328
  return path;
309
329
  }
310
- async function connect(home, url, harness, authEnv = {}) {
311
- const client = new Client({ name: 'synthetic-harness', version: '1' });
330
+ /** Launches one MCP process whose identity is its own AIS_AGENT_ID — never a machine-wide pin. */
331
+ async function connect(home, url, agentId, authEnv = {}) {
332
+ const client = new Client({ name: 'synthetic-session', version: '1' });
312
333
  clients.push(client);
313
334
  await client.connect(new StdioClientTransport({
314
335
  command: process.execPath,
315
- args: [resolve(__dirname, '../../dist/index.js'), ...(harness ? ['--harness', harness] : [])],
316
- env: { PATH: process.env['PATH'] ?? '', HOME: home, AIS_URL: url, AIS_TELEMETRY: '0', ...authEnv },
336
+ args: [resolve(__dirname, '../../dist/index.js')],
337
+ env: {
338
+ PATH: process.env['PATH'] ?? '', HOME: home, AIS_URL: url, AIS_TELEMETRY: '0',
339
+ ...(agentId ? { AIS_AGENT_ID: agentId } : {}),
340
+ ...authEnv,
341
+ },
317
342
  stderr: 'pipe',
318
343
  }));
319
344
  return client;
@@ -329,75 +354,124 @@ afterEach(async () => {
329
354
  for (const home of homes.splice(0))
330
355
  rmSync(home, { recursive: true, force: true });
331
356
  });
332
- describe('harness identity manifest', () => {
333
- it('installs separate immutable pins and rejects missing, conflicting, and malformed manifests', () => {
357
+ describe('session identity', () => {
358
+ it('reads identity from this process env only, and offers no machine-wide install', () => {
359
+ expect(loadSessionIdentity({ AIS_AGENT_ID: 'agent-a' })?.agentId).toBe('agent-a');
360
+ expect(loadSessionIdentity({ AIS_AGENT_ID: ' agent-a\n' })?.agentId).toBe('agent-a');
361
+ expect(loadSessionIdentity({ AIS_AGENT_ID: ' ' })).toBeNull();
362
+ expect(loadSessionIdentity({})).toBeNull();
363
+ expect(() => loadSessionIdentity({ AIS_AGENT_ID: '../escape' })).toThrow();
364
+ // The removed per-harness manifest surface must not come back.
365
+ const surface = Object.keys(sessionIdentityModule);
366
+ expect(surface).not.toContain('installHarnessIdentity');
367
+ expect(surface).not.toContain('manifestPath');
368
+ });
369
+ it('lets a session switch its own identity with agent_load without touching any other session', () => {
370
+ const launched = loadSessionIdentity({ AIS_AGENT_ID: 'agent-a' });
371
+ if (!launched)
372
+ throw new Error('expected a launch identity');
373
+ const switched = switchedTo(launched, 'agent-b');
374
+ expect(switched).toEqual({ version: 1, source: 'agent_load', agentId: 'agent-b' });
375
+ expect(launched.agentId).toBe('agent-a');
376
+ });
377
+ it('ignores leftover per-harness manifests and never deletes them', () => {
334
378
  const home = homeFixture();
335
- install(home, 'codex', 'agent-a');
336
- install(home, 'claude', 'agent-b');
337
- expect(loadHarnessIdentity(['--harness', 'codex'], {}, home)?.agentId).toBe('agent-a');
338
- expect(loadHarnessIdentity(['--harness', 'claude'], {}, home)?.agentId).toBe('agent-b');
339
- expect(() => install(home, 'codex', 'agent-b')).toThrow();
340
- expect(() => loadHarnessIdentity(['--harness', 'missing'], {}, home)).toThrow('aismemory install');
341
- expect(() => loadHarnessIdentity(['--harness', '../codex'], {}, home)).toThrow();
342
- expect(() => loadHarnessIdentity(['--harness', 'codex'], { AIS_AGENT_ID: 'agent-b' }, home)).toThrow('conflicting pin');
343
- writeFileSync(join(home, 'invalid.json'), JSON.stringify({ version: 1, harness: 'codex', agentId: 'agent-a', secret: 'synthetic' }));
344
- expect(() => installHarnessIdentity(join(home, 'invalid.json'), home)).toThrow();
345
- });
346
- it('enforces configured pins and leaves legacy unpinned installs ungated', async () => {
347
- const pin = { version: 1, harness: 'codex', agentId: 'agent-a' };
379
+ const path = legacyManifest(home, 'codex', 'agent-a');
380
+ expect(legacyHarnessManifests(home)).toEqual([path]);
381
+ expect(legacyHarnessManifests(join(home, 'nowhere'))).toEqual([]);
382
+ // A leftover file must not become this session's identity.
383
+ expect(loadSessionIdentity({})).toBeNull();
384
+ expect(existsSync(path)).toBe(true);
385
+ });
386
+ it('refuses a write whose live agent differs from the session identity', async () => {
387
+ const pin = { version: 1, source: 'env', agentId: 'agent-a' };
348
388
  await expect(verifyPinnedIdentity(null, 'agent-a', async () => {
349
- throw new Error('whoami should not be called without a pin');
350
- })).resolves.toBeUndefined();
351
- await expect(verifyPinnedIdentity(pin, 'agent-b', async () => ({}))).rejects.toThrow('expected agent-a');
389
+ throw new Error('whoami should not be called without a session identity');
390
+ }, { credentialKey: 'doctor-test' })).resolves.toBeUndefined();
391
+ await expect(verifyPinnedIdentity(pin, 'agent-b', async () => ({}), { credentialKey: 'doctor-test' })).rejects.toThrow('expected agent-a');
352
392
  for (const result of [{ success: true, data: { id: 'agent-b' } }, {}, { success: false, data: { id: 'agent-a' } }]) {
353
- await expect(verifyPinnedIdentity(pin, 'agent-a', async () => result)).rejects.toThrow('whoami did not confirm');
393
+ await expect(verifyPinnedIdentity(pin, 'agent-a', async () => result, { credentialKey: 'doctor-test' })).rejects.toThrow('whoami did not confirm');
354
394
  }
355
- await expect(verifyPinnedIdentity(pin, 'agent-a', async () => { throw new Error('offline'); })).rejects.toThrow('whoami unavailable');
395
+ const cause = new Error('socket closed');
396
+ cause.code = 'ECONNRESET';
397
+ await expect(verifyPinnedIdentity(pin, 'agent-a', async () => {
398
+ throw new TypeError('fetch failed', { cause });
399
+ }, { credentialKey: 'doctor-test', sleep: async () => undefined })).rejects.toThrow('whoami unavailable');
356
400
  expect(requiresIdentityGate('inbox_read', {})).toBe(false);
357
401
  expect(requiresIdentityGate('inbox_read', { ack: true })).toBe(true);
358
402
  });
359
- it('doctor reports a verified pin and rejects the wrong remote identity', async () => {
403
+ it('doctor reports this session identity and rejects the wrong remote identity', async () => {
360
404
  const home = homeFixture();
361
- install(home, 'codex', 'agent-a');
362
405
  const options = {
363
- home, argv: ['--harness', 'codex'], env: {},
406
+ home, env: { AIS_AGENT_ID: 'agent-a' },
364
407
  loadCreds: () => ({ token: 'synthetic', agentId: 'shared-other', tenantId: 'synthetic', expiresAt: new Date(Date.now() + 3600000).toISOString() }),
365
408
  };
366
- const good = await checkHarnessIdentity('http://synthetic.invalid', { ...options, fetchImpl: async () => Response.json({ success: true, data: { id: 'agent-a' } }) });
409
+ const good = await checkSessionIdentity('http://synthetic.invalid', { ...options, fetchImpl: async () => Response.json({ success: true, data: { id: 'agent-a' } }) });
367
410
  expect(good.status).toBe('PASS');
368
- const bad = await checkHarnessIdentity('http://synthetic.invalid', { ...options, fetchImpl: async () => Response.json({ success: true, data: { id: 'agent-b' } }) });
411
+ expect(good.message).toContain('This session runs as agent-a');
412
+ const bad = await checkSessionIdentity('http://synthetic.invalid', { ...options, fetchImpl: async () => Response.json({ success: true, data: { id: 'agent-b' } }) });
369
413
  expect(bad.status).toBe('FAIL');
370
- expect(bad.hint).toContain('aismemory doctor --harness');
414
+ expect(bad.hint).toContain('Set AIS_AGENT_ID for THIS session');
415
+ expect(JSON.stringify(bad)).not.toContain('--harness');
371
416
  });
372
- it('doctor leaves legacy unpinned installs healthy', async () => {
373
- const result = await checkHarnessIdentity('http://synthetic.invalid', {
417
+ it('doctor asks fresh and never accepts a stored session confirmation', async () => {
418
+ const home = homeFixture();
419
+ const pin = { version: 1, source: 'env', agentId: 'agent-a' };
420
+ await verifyPinnedIdentity(pin, 'agent-a', async () => ({ success: true, data: { id: 'agent-a' } }), { credentialKey: 'doctor-oauth-fresh-only', sleep: async () => undefined });
421
+ const result = await checkSessionIdentity('http://synthetic.invalid', {
422
+ home,
423
+ env: { AIS_AGENT_ID: 'agent-a' },
424
+ loadCreds: () => ({
425
+ token: 'synthetic',
426
+ agentId: 'agent-a',
427
+ tenantId: 'synthetic',
428
+ expiresAt: new Date(Date.now() + 3600000).toISOString(),
429
+ }),
430
+ fetchImpl: async () => {
431
+ const cause = new Error('socket closed');
432
+ cause.code = 'ECONNRESET';
433
+ throw new TypeError('fetch failed', { cause });
434
+ },
435
+ });
436
+ expect(result.status).toBe('FAIL');
437
+ expect(result.message).toContain('whoami unavailable for agent-a');
438
+ });
439
+ it('doctor warns about leftover harness manifests instead of deleting them', async () => {
440
+ const home = homeFixture();
441
+ const path = legacyManifest(home, 'codex', 'agent-a');
442
+ const result = checkLegacyHarnessPins(home);
443
+ expect(result.status).toBe('WARN');
444
+ expect(result.message).toContain(path);
445
+ expect(existsSync(path)).toBe(true);
446
+ });
447
+ it('doctor leaves a session without its own AIS_AGENT_ID healthy', async () => {
448
+ const result = await checkSessionIdentity('http://synthetic.invalid', {
449
+ home: homeFixture(),
374
450
  env: {},
375
451
  fetchImpl: async () => {
376
- throw new Error('whoami should not be called without a pin');
452
+ throw new Error('whoami should not be called without a session identity');
377
453
  },
378
454
  });
379
455
  expect(result.status).toBe('PASS');
380
- expect(result.message).toContain('legacy unpinned mode remains allowed');
456
+ expect(result.message).toContain('names no agent of its own');
457
+ expect(result.hint).toContain('Other sessions on this machine stay free to run as other agents');
381
458
  });
382
459
  it('doctor reports scoped-key config errors without the identity repair hint', async () => {
383
- const home = homeFixture();
384
- install(home, 'codex', 'agent-a');
385
- const result = await checkHarnessIdentity('http://synthetic.invalid', {
386
- home,
387
- argv: ['--harness', 'codex'],
388
- env: { AIS_WORKSPACE_KEY: 'not-a-workspace-key' },
460
+ const result = await checkSessionIdentity('http://synthetic.invalid', {
461
+ home: homeFixture(),
462
+ env: { AIS_AGENT_ID: 'agent-a', AIS_WORKSPACE_KEY: 'not-a-workspace-key' },
389
463
  });
390
464
  expect(result.status).toBe('FAIL');
391
465
  expect(result.message).toContain('does not look like a workspace key');
392
466
  expect(result.hint).toContain('Fix the scoped key environment');
393
- expect(result.hint).not.toContain('aismemory install');
467
+ expect(result.hint).not.toContain('AIS_AGENT_ID for THIS session');
394
468
  });
395
469
  });
396
470
  describe('real MCP processes with synthetic AIS', () => {
397
- it('keeps two harnesses pinned after shared-default changes and restarts; rejects writes and acknowledgements on mismatch', async () => {
471
+ it('runs two agents from one machine at once, follows agent_load, and still refuses mismatched writes', async () => {
398
472
  const home = homeFixture();
399
- install(home, 'codex', 'agent-a');
400
- install(home, 'claude', 'agent-b');
473
+ // A leftover manifest from the removed pin must change nothing below.
474
+ legacyManifest(home, 'codex', 'agent-a');
401
475
  const requests = [];
402
476
  let mismatch = false;
403
477
  server = createServer((req, res) => {
@@ -407,7 +481,7 @@ describe('real MCP processes with synthetic AIS', () => {
407
481
  if (agent)
408
482
  res.end(JSON.stringify({ success: true, data: { id: mismatch ? 'wrong-agent' : agent, name: agent, status: 'active' } }));
409
483
  else if (req.url?.startsWith('/v1/resolve'))
410
- res.end(JSON.stringify({ success: true, data: { id: 'agent-b', name: 'B', status: 'active' } }));
484
+ res.end(JSON.stringify({ success: true, data: { status: 'resolved', agent: { id: 'agent-b', name: 'agent-b', status: 'active' } } }));
411
485
  else if (req.url?.includes('/inbox?'))
412
486
  res.end(JSON.stringify({ success: true, data: { messages: [{ id: 'message-a' }] } }));
413
487
  else
@@ -418,29 +492,46 @@ describe('real MCP processes with synthetic AIS', () => {
418
492
  if (!address || typeof address === 'string')
419
493
  throw new Error('No synthetic server port');
420
494
  const url = `http://127.0.0.1:${address.port}`;
421
- for (const defaultAgent of ['shared-first', 'shared-changed']) {
422
- const preference = sharedDefault(home, defaultAgent);
423
- for (const [harness, agentId] of [['codex', 'agent-a'], ['claude', 'agent-b']]) {
424
- const client = await connect(home, url, harness);
425
- const whoami = await client.callTool({ name: 'whoami', arguments: {} });
426
- expect(JSON.stringify(whoami)).toContain(agentId);
427
- const before = requests.length;
428
- const result = await client.callTool({ name: 'remember', arguments: { content: 'synthetic memory' } });
429
- expect(result.isError).not.toBe(true);
430
- expect(requests.slice(before)).toEqual([`GET /v1/agents/${agentId}`, `POST /v1/agents/${agentId}/memory`]);
431
- expect(JSON.parse(readFileSync(preference, 'utf8')).agentId).toBe(defaultAgent);
432
- await client.close();
433
- }
495
+ // Two processes, one machine, one HOME, two different agents — both live
496
+ // at the same time. This is the case a per-machine pin made impossible.
497
+ const preference = sharedDefault(home, 'shared-first');
498
+ agentCredentials(home, 'agent-a');
499
+ agentCredentials(home, 'agent-b');
500
+ const sessionA = await connect(home, url, 'agent-a');
501
+ const whoamiA = await sessionA.callTool({ name: 'whoami', arguments: {} });
502
+ expect(JSON.stringify(whoamiA)).toContain('agent-a');
503
+ const sessionB = await connect(home, url, 'agent-b');
504
+ const whoamiB = await sessionB.callTool({ name: 'whoami', arguments: {} });
505
+ expect(JSON.stringify(whoamiB)).toContain('agent-b');
506
+ for (const [session, agentId] of [[sessionA, 'agent-a'], [sessionB, 'agent-b'], [sessionA, 'agent-a']]) {
507
+ const before = requests.length;
508
+ const result = await session.callTool({ name: 'remember', arguments: { content: 'synthetic memory' } });
509
+ expect(result.isError).not.toBe(true);
510
+ expect(requests.slice(before)).toEqual([`GET /v1/agents/${agentId}`, `POST /v1/agents/${agentId}/memory`]);
434
511
  }
435
- const client = await connect(home, url, 'codex');
436
- const switched = await client.callTool({ name: 'agent_load', arguments: { query: 'agent-b' } });
437
- expect(switched.isError).toBe(true);
512
+ // Neither session rewrote the machine's shared default agent.
513
+ expect(JSON.parse(readFileSync(preference, 'utf8')).agentId).toBe('shared-first');
514
+ await sessionA.close();
515
+ await sessionB.close();
516
+ // A changed shared default does not move either session off its own agent.
517
+ sharedDefault(home, 'shared-changed');
518
+ const restarted = await connect(home, url, 'agent-a');
519
+ const afterRestart = await restarted.callTool({ name: 'remember', arguments: { content: 'still agent-a' } });
520
+ expect(afterRestart.isError).not.toBe(true);
521
+ expect(requests.at(-1)).toBe('POST /v1/agents/agent-a/memory');
522
+ // agent_load switches THIS session, and the gate follows the switch.
523
+ const switched = await restarted.callTool({ name: 'agent_load', arguments: { query: 'agent-b' } });
524
+ expect(switched.isError).not.toBe(true);
525
+ const afterSwitch = await restarted.callTool({ name: 'remember', arguments: { content: 'now agent-b' } });
526
+ expect(afterSwitch.isError).not.toBe(true);
527
+ expect(requests.at(-1)).toBe('POST /v1/agents/agent-b/memory');
528
+ // The gate still refuses when the live agent is not the session's agent.
438
529
  mismatch = true;
439
530
  for (const [name, args] of [['remember', { content: 'must not write' }], ['inbox_read', { ack: true }], ['handoff', {}]]) {
440
531
  const before = requests.length;
441
- const result = await client.callTool({ name, arguments: args });
532
+ const result = await restarted.callTool({ name, arguments: args });
442
533
  expect(result.isError).toBe(true);
443
- expect(JSON.stringify(result)).toContain('aismemory doctor --harness codex');
534
+ expect(JSON.stringify(result)).toContain('Set AIS_AGENT_ID for THIS session');
444
535
  expect(requests.slice(before).some((request) => request.startsWith('POST'))).toBe(false);
445
536
  }
446
537
  const unpinned = await connect(home, url);
@@ -452,9 +543,8 @@ describe('real MCP processes with synthetic AIS', () => {
452
543
  }, 30000);
453
544
  });
454
545
  describe('scoped key adapters', () => {
455
- it.each(['AIS_AGENT_API_KEY', 'AIS_WORKSPACE_KEY'])('verifies the pinned grant before writes with %s', async (keyName) => {
546
+ it.each(['AIS_AGENT_API_KEY', 'AIS_WORKSPACE_KEY'])('verifies this session\'s grant before writes with %s', async (keyName) => {
456
547
  const home = homeFixture();
457
- install(home, 'codex', 'agent-a');
458
548
  let allowed = true;
459
549
  const requests = [];
460
550
  server = createServer((req, res) => {
@@ -466,24 +556,25 @@ describe('scoped key adapters', () => {
466
556
  const address = server.address();
467
557
  if (!address || typeof address === 'string')
468
558
  throw new Error('No synthetic server port');
469
- const client = await connect(home, `http://127.0.0.1:${address.port}`, 'codex', {
559
+ const client = await connect(home, `http://127.0.0.1:${address.port}`, 'agent-a', {
470
560
  [keyName]: keyName === 'AIS_AGENT_API_KEY' ? 'ais_ak_synthetic-fixture' : 'ais_wk_synthetic-fixture',
471
561
  });
472
562
  const result = await client.callTool({ name: 'remember', arguments: { content: 'synthetic' } });
473
563
  expect(result.isError).not.toBe(true);
474
- expect(requests).toEqual(['GET /v1/agents/agent-a/memory?limit=1', 'POST /v1/agents/agent-a/memory']);
564
+ expect(requests).toEqual(['GET /v1/agents/agent-a/whoami', 'POST /v1/agents/agent-a/memory']);
475
565
  if (keyName === 'AIS_WORKSPACE_KEY') {
476
- const crossPin = await client.callTool({ name: 'agent_load', arguments: { query: 'agent-b' } });
477
- expect(crossPin.isError).toBe(true);
478
- expect(JSON.stringify(crossPin)).toContain('expected agent-a, received agent-b');
479
- const ownPin = await client.callTool({ name: 'agent_load', arguments: { query: 'agent-a' } });
480
- expect(ownPin.isError).not.toBe(true);
566
+ // agent_load moves this session to another agent it is granted.
567
+ const switchedSession = await client.callTool({ name: 'agent_load', arguments: { query: 'agent-b' } });
568
+ expect(switchedSession.isError).not.toBe(true);
569
+ const afterSwitch = await client.callTool({ name: 'remember', arguments: { content: 'as agent-b' } });
570
+ expect(afterSwitch.isError).not.toBe(true);
571
+ expect(requests.at(-1)).toBe('POST /v1/agents/agent-b/memory');
481
572
  }
482
573
  allowed = false;
483
574
  const denied = await client.callTool({ name: 'remember', arguments: { content: 'denied' } });
484
575
  expect(denied.isError).toBe(true);
485
- expect(JSON.stringify(denied)).toContain('whoami unavailable');
486
- expect(requests.filter((request) => request.startsWith('POST'))).toHaveLength(1);
576
+ expect(JSON.stringify(denied)).toContain('whoami did not confirm');
577
+ expect(requests.filter((request) => request.startsWith('POST'))).toHaveLength(keyName === 'AIS_WORKSPACE_KEY' ? 2 : 1);
487
578
  });
488
579
  });
489
580
  //# sourceMappingURL=doctor.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../src/__tests__/doctor.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../src/__tests__/doctor.test.ts"],"names":[],"mappings":"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"}