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
@@ -0,0 +1,177 @@
1
+ import { createServer } from 'node:http';
2
+ import { spawn } from 'node:child_process';
3
+ import { mkdtempSync, rmSync, existsSync } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { join, resolve } from 'node:path';
6
+ import { describe, it, expect, beforeAll, afterAll, beforeEach } from 'vitest';
7
+ /**
8
+ * CORBOT-7F3EC71C — the bond link must survive the process that printed it.
9
+ *
10
+ * The device code is redeemable for 30 minutes server-side. What killed it was
11
+ * the client: every `/v1/oauth/device/authorize` call expires the agent's
12
+ * outstanding unclaimed claim token (OAuthDeviceService `tryReuseProvisional`)
13
+ * before issuing the next one. An IDE restarts its stdio MCP server routinely,
14
+ * so the restart silently invalidated the exact link the agent had already
15
+ * relayed to its human — who then clicked a page that meant nothing.
16
+ *
17
+ * This drives the built binary against a fake AIS that never approves, so both
18
+ * processes stay in the pending state, and asserts that process #2 surfaces the
19
+ * SAME bond URL process #1 printed, with no second authorize call.
20
+ */
21
+ describe('aismemory bond link survives the minting process exiting', () => {
22
+ let fakeAis;
23
+ let port = 0;
24
+ let authorizeCalls = 0;
25
+ const issuedCodes = [];
26
+ beforeAll(async () => {
27
+ fakeAis = createServer((req, res) => {
28
+ req.on('data', () => { });
29
+ req.on('end', () => {
30
+ if (req.url === '/v1/oauth/device/authorize' && req.method === 'POST') {
31
+ authorizeCalls += 1;
32
+ const userCode = `MINT-${String(authorizeCalls).padStart(4, '0')}`;
33
+ issuedCodes.push(userCode);
34
+ res.writeHead(200, { 'content-type': 'application/json' });
35
+ res.end(JSON.stringify({
36
+ success: true,
37
+ data: {
38
+ device_code: `device-${authorizeCalls}`,
39
+ user_code: userCode,
40
+ verification_uri: `http://127.0.0.1:${port}/activate`,
41
+ verification_uri_complete: `http://127.0.0.1:${port}/activate?user_code=${userCode}`,
42
+ expires_in: 1800,
43
+ interval: 1,
44
+ agent_id: `agent-${authorizeCalls}`,
45
+ provisional_tenant_id: `tenant-${authorizeCalls}`,
46
+ provisional_token: `provisional-${authorizeCalls}`,
47
+ },
48
+ }));
49
+ return;
50
+ }
51
+ if (req.url === '/v1/oauth/token' && req.method === 'POST') {
52
+ // Nobody has pressed Bond yet — the human is still reading the link.
53
+ res.writeHead(400, { 'content-type': 'application/json' });
54
+ res.end(JSON.stringify({ error: 'authorization_pending' }));
55
+ return;
56
+ }
57
+ res.writeHead(404);
58
+ res.end();
59
+ });
60
+ });
61
+ await new Promise((ready) => {
62
+ fakeAis.listen(0, '127.0.0.1', () => {
63
+ const addr = fakeAis.address();
64
+ if (addr && typeof addr === 'object')
65
+ port = addr.port;
66
+ ready();
67
+ });
68
+ });
69
+ });
70
+ afterAll(async () => {
71
+ await new Promise((done) => fakeAis?.close(() => done()));
72
+ });
73
+ beforeEach(() => {
74
+ authorizeCalls = 0;
75
+ issuedCodes.length = 0;
76
+ });
77
+ it('re-surfaces the same bond URL from a new process instead of minting another', async () => {
78
+ const distPath = resolve(__dirname, '..', '..', 'dist', 'index.js');
79
+ if (!existsSync(distPath)) {
80
+ throw new Error(`dist/index.js missing — run \`pnpm build\` first (looked at ${distPath})`);
81
+ }
82
+ // One HOME, two processes — the IDE restart this ticket is about.
83
+ const sharedHome = mkdtempSync(join(tmpdir(), 'aismem-survive-'));
84
+ try {
85
+ const first = await bondUrlFromOneRun(distPath, sharedHome, port);
86
+ expect(first).toMatch(/user_code=MINT-0001/);
87
+ expect(authorizeCalls).toBe(1);
88
+ const second = await bondUrlFromOneRun(distPath, sharedHome, port);
89
+ // The link the human already has still works: same URL, no new code.
90
+ expect(second).toBe(first);
91
+ expect(authorizeCalls).toBe(1);
92
+ expect(issuedCodes).toEqual(['MINT-0001']);
93
+ }
94
+ finally {
95
+ try {
96
+ rmSync(sharedHome, { recursive: true, force: true });
97
+ }
98
+ catch { /* ignore */ }
99
+ }
100
+ }, 60000);
101
+ });
102
+ /**
103
+ * Boot the MCP server, make one tool call, read the bond URL out of the
104
+ * BondPendingError text, then kill the process — the "one-shot command that
105
+ * exits" from the ticket's repro.
106
+ */
107
+ async function bondUrlFromOneRun(distPath, home, port) {
108
+ let proc = null;
109
+ try {
110
+ // Build the child env explicitly: inheriting process.env drags in a
111
+ // developer's AIS_AGENT_API_KEY, which puts the client in key-auth mode
112
+ // and skips the device flow entirely (the suite then passes for the wrong
113
+ // reason, or fails for one).
114
+ proc = spawn('node', [distPath], {
115
+ env: {
116
+ PATH: process.env.PATH ?? '',
117
+ HOME: home,
118
+ AIS_URL: `http://127.0.0.1:${port}`,
119
+ },
120
+ stdio: ['pipe', 'pipe', 'pipe'],
121
+ });
122
+ let stdoutBuf = '';
123
+ proc.stdout.on('data', (d) => { stdoutBuf += d.toString(); });
124
+ proc.stderr.on('data', () => { });
125
+ proc.stdin.write(JSON.stringify({
126
+ jsonrpc: '2.0',
127
+ id: 1,
128
+ method: 'initialize',
129
+ params: {
130
+ protocolVersion: '2024-11-05',
131
+ capabilities: {},
132
+ clientInfo: { name: 'survive-test', version: '0.0.0' },
133
+ },
134
+ }) + '\n');
135
+ await waitFor(() => stdoutBuf.includes('"id":1'), 15000, 'initialize response');
136
+ proc.stdin.write(JSON.stringify({
137
+ jsonrpc: '2.0',
138
+ id: 2,
139
+ method: 'tools/call',
140
+ params: { name: 'whoami', arguments: {} },
141
+ }) + '\n');
142
+ await waitFor(() => stdoutBuf.includes('"id":2'), 30000, 'whoami response');
143
+ const text = extractResponseText(stdoutBuf, 2);
144
+ expect(text).toMatch(/Memory bond required/);
145
+ const url = /http:\/\/[^\s"]*activate\?user_code=[A-Z0-9-]+/.exec(text);
146
+ if (!url)
147
+ throw new Error(`no bond URL in response: ${text.slice(0, 400)}`);
148
+ return url[0];
149
+ }
150
+ finally {
151
+ proc?.kill();
152
+ }
153
+ }
154
+ function waitFor(predicate, ms, label) {
155
+ return new Promise((done, reject) => {
156
+ const start = Date.now();
157
+ const tick = () => {
158
+ if (predicate()) {
159
+ done();
160
+ return;
161
+ }
162
+ if (Date.now() - start > ms) {
163
+ reject(new Error(`timeout waiting for ${label}`));
164
+ return;
165
+ }
166
+ setTimeout(tick, 50);
167
+ };
168
+ tick();
169
+ });
170
+ }
171
+ function extractResponseText(buf, id) {
172
+ const line = buf.split('\n').find((l) => l.includes(`"id":${id}`));
173
+ if (!line)
174
+ throw new Error(`no response line for id ${id}`);
175
+ return JSON.stringify(JSON.parse(line));
176
+ }
177
+ //# sourceMappingURL=bond-link-survives-exit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bond-link-survives-exit.test.js","sourceRoot":"","sources":["../../src/__tests__/bond-link-survives-exit.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
2
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
3
+ import { spawn } from 'node:child_process';
3
4
  import { createServer } from 'node:http';
4
5
  import { mkdtempSync, writeFileSync, rmSync } from 'node:fs';
5
6
  import { tmpdir } from 'node:os';
@@ -7,8 +8,22 @@ import { join, resolve } from 'node:path';
7
8
  import { describe, expect, it } from 'vitest';
8
9
  import { loadAgentApiKeyConfig } from '../agent-key-mode.js';
9
10
  import { loadWorkspaceKeyConfig } from '../workspace-key-mode.js';
10
- import { loadHarnessIdentity } from '../harness-identity.js';
11
+ import { loadRunPassConfig } from '../run-pass-mode.js';
12
+ import { loadSessionIdentity } from '../session-identity.js';
11
13
  const agentId = '11111111-1111-4111-8111-111111111111';
14
+ const runPass = `ais_rp_${'C'.repeat(43)}`;
15
+ function runAismemoryStartup(env) {
16
+ return new Promise((resolveProcess, reject) => {
17
+ const proc = spawn(process.execPath, [resolve(__dirname, '../../dist/index.js')], { env });
18
+ let stdout = '';
19
+ let stderr = '';
20
+ proc.stdout.on('data', (data) => { stdout += data.toString(); });
21
+ proc.stderr.on('data', (data) => { stderr += data.toString(); });
22
+ proc.on('error', reject);
23
+ proc.on('close', (code) => { resolveProcess({ code, stdout, stderr }); });
24
+ proc.stdin.end();
25
+ });
26
+ }
12
27
  describe('scoped credential aliases', () => {
13
28
  it('accepts AIS_API_KEY for a single agent and trims it', () => {
14
29
  expect(loadAgentApiKeyConfig({ AIS_API_KEY: ' ais_ak_test\n', AIS_AGENT_ID: agentId }))
@@ -34,17 +49,17 @@ describe('scoped credential aliases', () => {
34
49
  expect(() => loadWorkspaceKeyConfig({ AIS_API_KEY: 'ais_wk_test' })).toThrow(/AIS_API_KEY is set but AIS_AGENT_ID is missing/);
35
50
  });
36
51
  it('selects agent key mode when AIS_AGENT_ID arrives with injection whitespace', () => {
37
- // main() resolves the harness identity BEFORE its agent-API-key check and
52
+ // main() resolves this session's identity BEFORE its agent-API-key check and
38
53
  // rebuilds the adapter env from it, so an untrimmed AIS_AGENT_ID used to
39
54
  // abort the process there and agent key mode never ran (CORBOT-D8D35CF0).
40
55
  const env = { AIS_API_KEY: 'ais_ak_test', AIS_AGENT_ID: ` ${agentId}\n` };
41
- const identity = loadHarnessIdentity([], env);
42
- expect(identity).toEqual({ version: 1, harness: 'env-pin', agentId });
56
+ const identity = loadSessionIdentity(env);
57
+ expect(identity).toEqual({ version: 1, source: 'env', agentId });
43
58
  const adapterEnv = { ...env, AIS_AGENT_ID: identity?.agentId };
44
59
  expect(loadAgentApiKeyConfig(adapterEnv)).toEqual({ apiKey: 'ais_ak_test', agentId });
45
60
  });
46
61
  it('treats a blank AIS_AGENT_ID as absent so the key loader names it', () => {
47
- expect(loadHarnessIdentity([], { AIS_AGENT_ID: ' ' })).toBeNull();
62
+ expect(loadSessionIdentity({ AIS_AGENT_ID: ' ' })).toBeNull();
48
63
  expect(() => loadAgentApiKeyConfig({ AIS_API_KEY: 'ais_ak_test', AIS_AGENT_ID: undefined }))
49
64
  .toThrow(/AIS_API_KEY is set but AIS_AGENT_ID is missing/);
50
65
  });
@@ -53,18 +68,24 @@ describe('scoped credential aliases', () => {
53
68
  expect(loadWorkspaceKeyConfig(env)).toBeNull();
54
69
  expect(loadAgentApiKeyConfig(env)).toBeNull();
55
70
  });
71
+ it('loads run-pass config without a key env var', () => {
72
+ expect(loadRunPassConfig({ AIS_RUN_PASS_FILE: '/tmp/ais-run-pass', AIS_AGENT_ID: agentId }))
73
+ .toEqual({ runPassFile: '/tmp/ais-run-pass', agentId });
74
+ });
56
75
  });
57
76
  describe('real MCP credential resolution', () => {
58
- it.each(['workspace', 'agent', 'agent-padded', 'cache', 'cold'])('%s path uses only the selected credential and gives actionable errors', async (mode) => {
77
+ it.each(['workspace', 'agent', 'agent-padded', 'run-pass', 'workspace-plus-run-pass', 'agent-plus-run-pass', 'cache', 'cold'])('%s path uses only the selected credential and gives actionable errors', async (mode) => {
59
78
  const taskHome = mkdtempSync(join(tmpdir(), 'ais-credential-resolution-'));
60
79
  const requests = [];
61
80
  const server = createServer((req, res) => {
62
81
  const workspace = req.headers['x-workspace-key'];
63
82
  const agent = req.headers['x-agent-api-key'];
83
+ const runPassHeader = req.headers['x-run-pass'];
64
84
  requests.push({
65
85
  path: req.url ?? '',
66
86
  ...(typeof workspace === 'string' ? { workspace } : {}),
67
87
  ...(typeof agent === 'string' ? { agent } : {}),
88
+ ...(typeof runPassHeader === 'string' ? { runPass: runPassHeader } : {}),
68
89
  ...(req.headers.authorization ? { bearer: req.headers.authorization } : {}),
69
90
  });
70
91
  res.writeHead(mode === 'cold' ? 503 : 200, { 'content-type': 'application/json' });
@@ -99,6 +120,28 @@ describe('real MCP credential resolution', () => {
99
120
  // Same credential, injected the way a sourced .env file delivers it.
100
121
  if (mode === 'agent-padded')
101
122
  Object.assign(env, { AIS_API_KEY: ' ais_ak_test\n', AIS_AGENT_ID: ` ${agentId}\n` });
123
+ if (mode === 'run-pass' || mode === 'workspace-plus-run-pass' || mode === 'agent-plus-run-pass') {
124
+ const runPassFile = join(taskHome, 'ais-run-pass');
125
+ writeFileSync(runPassFile, runPass, { mode: 0o600 });
126
+ Object.assign(env, { AIS_RUN_PASS_FILE: runPassFile, AIS_AGENT_ID: agentId });
127
+ }
128
+ if (mode === 'workspace-plus-run-pass')
129
+ Object.assign(env, { AIS_WORKSPACE_KEY: 'ais_wk_test' });
130
+ if (mode === 'agent-plus-run-pass')
131
+ Object.assign(env, { AIS_API_KEY: 'ais_ak_test' });
132
+ if (mode === 'workspace-plus-run-pass' || mode === 'agent-plus-run-pass') {
133
+ const started = await runAismemoryStartup(env);
134
+ const output = `${started.stdout}${started.stderr}`;
135
+ expect(started.code).toBe(1);
136
+ expect(output).toContain('AIS_RUN_PASS_FILE');
137
+ expect(output).toContain(mode === 'workspace-plus-run-pass' ? 'AIS_WORKSPACE_KEY' : 'AIS_API_KEY');
138
+ expect(output).toContain('Refusing to start');
139
+ expect(output).not.toContain('ais_wk_test');
140
+ expect(output).not.toContain('ais_ak_test');
141
+ expect(output).not.toContain(runPass);
142
+ expect(requests).toEqual([]);
143
+ return;
144
+ }
102
145
  const transport = new StdioClientTransport({ command: process.execPath, args: [resolve(__dirname, '../../dist/index.js')], env, stderr: 'pipe' });
103
146
  await client.connect(transport);
104
147
  const result = await client.callTool({ name: mode === 'cold' ? 'agent_load' : 'recall', arguments: mode === 'cold' ? { query: 'corbot' } : { query: 'test' } });
@@ -111,15 +154,20 @@ describe('real MCP credential resolution', () => {
111
154
  expect(serialized).toContain('AIS_AGENT_ID');
112
155
  expect(serialized).toContain('~/.aismemory/credentials.json');
113
156
  expect(serialized).toContain('AIS sign-in could not start');
114
- expect(requests.every((request) => request.path === '/v1/oauth/device/authorize' && !request.bearer && !request.workspace && !request.agent)).toBe(true);
157
+ expect(requests.every((request) => request.path === '/v1/oauth/device/authorize' &&
158
+ !request.bearer &&
159
+ !request.workspace &&
160
+ !request.agent &&
161
+ !request.runPass)).toBe(true);
115
162
  }
116
163
  else {
117
164
  expect(result.isError).not.toBe(true);
118
165
  const memoryRequests = requests.filter((request) => request.path.includes('/memory'));
119
166
  expect(memoryRequests.length).toBeGreaterThan(0);
120
167
  for (const request of memoryRequests) {
121
- expect(request.workspace).toBe(mode === 'workspace' ? 'ais_wk_test' : undefined);
168
+ expect(request.workspace).toBe(mode === 'workspace' || mode === 'workspace-plus-run-pass' ? 'ais_wk_test' : undefined);
122
169
  expect(request.agent).toBe(mode.startsWith('agent') ? 'ais_ak_test' : undefined);
170
+ expect(request.runPass).toBe(mode === 'run-pass' ? runPass : undefined);
123
171
  expect(request.bearer).toBe(mode === 'cache' ? 'Bearer cache-test-sentinel' : undefined);
124
172
  }
125
173
  expect(requests.some((request) => request.path.includes('/oauth/'))).toBe(false);
@@ -1 +1 @@
1
- {"version":3,"file":"credential-resolution.test.js","sourceRoot":"","sources":["../../src/__tests__/credential-resolution.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-resolution.test.js","sourceRoot":"","sources":["../../src/__tests__/credential-resolution.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Credential self-description passthrough tests (CORBOT-49535E96).
3
+ *
4
+ * The point of the fallback is that an older AIS — one without the whoami
5
+ * route, or without it on its allowlist — keeps working. These tests pin both
6
+ * halves: a server that answers, and a server that does not.
7
+ */
8
+ export {};
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Credential self-description passthrough tests (CORBOT-49535E96).
3
+ *
4
+ * The point of the fallback is that an older AIS — one without the whoami
5
+ * route, or without it on its allowlist — keeps working. These tests pin both
6
+ * halves: a server that answers, and a server that does not.
7
+ */
8
+ import { describe, expect, it, vi } from 'vitest';
9
+ import { fetchCredentialWhoami } from '../credential-whoami.js';
10
+ import { AisHttpError } from '../ais-http-error.js';
11
+ const AGENT_ID = 'agent-1';
12
+ const WHOAMI_PATH = `/v1/agents/${AGENT_ID}/whoami`;
13
+ function serverAnswer(overrides = {}) {
14
+ return {
15
+ success: true,
16
+ data: {
17
+ agentId: AGENT_ID,
18
+ tenantId: 'tenant-1',
19
+ mode: 'agent-api-key',
20
+ scopeModel: 'allowlist',
21
+ scopes: ['memory', 'whoami'],
22
+ restrictions: ['cannot mint, list or revoke API keys'],
23
+ actsAsGrantedAgent: false,
24
+ expiresAt: '2027-01-01T00:00:00.000Z',
25
+ ...overrides,
26
+ },
27
+ };
28
+ }
29
+ describe('fetchCredentialWhoami', () => {
30
+ it('passes the server fields through and never probes', async () => {
31
+ const probe = vi.fn();
32
+ const result = await fetchCredentialWhoami(AGENT_ID, 'agent-api-key', () => Promise.resolve(serverAnswer()), probe);
33
+ expect(result.data).toEqual({
34
+ agentId: AGENT_ID,
35
+ authMode: 'agent-api-key',
36
+ keyValid: true,
37
+ selfDescribed: true,
38
+ tenantId: 'tenant-1',
39
+ mode: 'agent-api-key',
40
+ scopeModel: 'allowlist',
41
+ scopes: ['memory', 'whoami'],
42
+ restrictions: ['cannot mint, list or revoke API keys'],
43
+ actsAsGrantedAgent: false,
44
+ expiresAt: '2027-01-01T00:00:00.000Z',
45
+ });
46
+ expect(probe).not.toHaveBeenCalled();
47
+ });
48
+ it('keeps a null expiry distinct from an absent one', async () => {
49
+ const result = await fetchCredentialWhoami(AGENT_ID, 'workspace-key', () => Promise.resolve(serverAnswer({ expiresAt: null, mode: 'workspace-key' })), vi.fn());
50
+ expect(result.data.expiresAt).toBeNull();
51
+ expect(result.data.mode).toBe('workspace-key');
52
+ });
53
+ it.each([403, 404])('falls back to the liveness probe when the server answers %i', async (status) => {
54
+ const probe = vi.fn().mockResolvedValue({ success: true, data: [] });
55
+ const result = await fetchCredentialWhoami(AGENT_ID, 'agent-api-key', () => Promise.reject(new AisHttpError(status, WHOAMI_PATH, null)), probe);
56
+ expect(probe).toHaveBeenCalledOnce();
57
+ expect(result.data).toEqual({
58
+ agentId: AGENT_ID,
59
+ authMode: 'agent-api-key',
60
+ keyValid: true,
61
+ selfDescribed: false,
62
+ });
63
+ });
64
+ it('does not mask a dead key: a 401 propagates instead of falling back', async () => {
65
+ const probe = vi.fn();
66
+ await expect(fetchCredentialWhoami(AGENT_ID, 'agent-api-key', () => Promise.reject(new AisHttpError(401, WHOAMI_PATH, null)), probe)).rejects.toBeInstanceOf(AisHttpError);
67
+ expect(probe).not.toHaveBeenCalled();
68
+ });
69
+ it('does not mask a network failure', async () => {
70
+ await expect(fetchCredentialWhoami(AGENT_ID, 'agent-api-key', () => Promise.reject(new Error('ECONNREFUSED')), vi.fn())).rejects.toThrow('ECONNREFUSED');
71
+ });
72
+ it('surfaces a self-described different agent so identity gates can refuse it', async () => {
73
+ const probe = vi.fn().mockResolvedValue({ success: true, data: [] });
74
+ const result = await fetchCredentialWhoami(AGENT_ID, 'agent-api-key', () => Promise.resolve(serverAnswer({ agentId: 'agent-2' })), probe);
75
+ expect(probe).not.toHaveBeenCalled();
76
+ expect(result.data.agentId).toBe('agent-2');
77
+ expect(result.data.selfDescribed).toBe(true);
78
+ });
79
+ it('drops fields of an unexpected shape instead of forwarding them', async () => {
80
+ const result = await fetchCredentialWhoami(AGENT_ID, 'agent-api-key', () => Promise.resolve(serverAnswer({ scopes: ['memory', 7], tenantId: 42, expiresAt: 99 })), vi.fn());
81
+ expect(result.data.selfDescribed).toBe(true);
82
+ expect(result.data).not.toHaveProperty('scopes');
83
+ expect(result.data).not.toHaveProperty('tenantId');
84
+ expect(result.data).not.toHaveProperty('expiresAt');
85
+ });
86
+ it.each([null, 'not-an-object', { success: true }])('falls back when the server body is unusable (%p)', async (body) => {
87
+ const probe = vi.fn().mockResolvedValue({ success: true, data: [] });
88
+ const result = await fetchCredentialWhoami(AGENT_ID, 'workspace-key', () => Promise.resolve(body), probe);
89
+ expect(probe).toHaveBeenCalledOnce();
90
+ expect(result.data.selfDescribed).toBe(false);
91
+ });
92
+ });
93
+ //# sourceMappingURL=credential-whoami.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-whoami.test.js","sourceRoot":"","sources":["../../src/__tests__/credential-whoami.test.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,8 @@ import { join, resolve } from 'path';
27
27
  import { describe, it, expect, beforeAll, afterAll, beforeEach } from 'vitest';
28
28
  import { generateAndSaveKeypair } from '../key-auth.js';
29
29
  const MISSING_AGENT_ID = 'missing-agent-id';
30
+ /** Loaded CI can spend many seconds importing before the spawned MCP child answers initialize. */
31
+ const MCP_CHILD_INITIALIZE_WAIT_MS = 15000;
30
32
  function mintJwt() {
31
33
  const header = Buffer.from(JSON.stringify({ alg: 'HS256', typ: 'JWT' })).toString('base64url');
32
34
  const payload = Buffer.from(JSON.stringify({ sub: 'u1', user_id: 'u1', tenant_id: 't1' })).toString('base64url');
@@ -148,7 +150,7 @@ describe('device-flow gate: resolution errors never fall back, first-enrollment
148
150
  jsonrpc: '2.0', id: 1, method: 'initialize',
149
151
  params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'gate-resolution-test', version: '0.0.0' } },
150
152
  }) + '\n');
151
- await waitFor(() => stdoutBuf.includes('"id":1'), 5000, 'initialize response');
153
+ await waitFor(() => stdoutBuf.includes('"id":1'), MCP_CHILD_INITIALIZE_WAIT_MS, 'initialize response');
152
154
  proc.stdin.write(JSON.stringify({
153
155
  jsonrpc: '2.0', id: 2, method: 'tools/call', params: { name: 'whoami', arguments: {} },
154
156
  }) + '\n');
@@ -166,7 +168,7 @@ describe('device-flow gate: resolution errors never fall back, first-enrollment
166
168
  }
167
169
  catch { /* ignore */ }
168
170
  }
169
- }, 30000);
171
+ }, 45000);
170
172
  it('(b) no enrolled key: device flow still reachable, bond URL surfaces on the first tool call', async () => {
171
173
  const distPath = resolve(__dirname, '..', '..', 'dist', 'index.js');
172
174
  if (!existsSync(distPath)) {
@@ -188,7 +190,7 @@ describe('device-flow gate: resolution errors never fall back, first-enrollment
188
190
  jsonrpc: '2.0', id: 1, method: 'initialize',
189
191
  params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'gate-no-key-test', version: '0.0.0' } },
190
192
  }) + '\n');
191
- await waitFor(() => stdoutBuf.includes('"id":1'), 5000, 'initialize response');
193
+ await waitFor(() => stdoutBuf.includes('"id":1'), MCP_CHILD_INITIALIZE_WAIT_MS, 'initialize response');
192
194
  proc.stdin.write(JSON.stringify({
193
195
  jsonrpc: '2.0', id: 2, method: 'tools/call', params: { name: 'whoami', arguments: {} },
194
196
  }) + '\n');
@@ -213,7 +215,7 @@ describe('device-flow gate: resolution errors never fall back, first-enrollment
213
215
  }
214
216
  catch { /* ignore */ }
215
217
  }
216
- }, 30000);
218
+ }, 45000);
217
219
  });
218
220
  function waitFor(predicate, ms, label) {
219
221
  return new Promise((resolveOuter, reject) => {
@@ -1 +1 @@
1
- {"version":3,"file":"device-flow-gate-e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/device-flow-gate-e2e.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-flow-gate-e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/device-flow-gate-e2e.test.ts"],"names":[],"mappings":"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"}