aismemory 0.8.0 → 0.8.3

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 (134) hide show
  1. package/README.md +87 -7
  2. package/dist/__tests__/agent-key-mode.test.js +105 -6
  3. package/dist/__tests__/agent-key-mode.test.js.map +1 -1
  4. package/dist/__tests__/agent-load-persistence.test.js +22 -6
  5. package/dist/__tests__/agent-load-persistence.test.js.map +1 -1
  6. package/dist/__tests__/ais-http.test.js +50 -4
  7. package/dist/__tests__/ais-http.test.js.map +1 -1
  8. package/dist/__tests__/auto-handoff.test.js +56 -0
  9. package/dist/__tests__/auto-handoff.test.js.map +1 -1
  10. package/dist/__tests__/bond-link-survives-exit.test.d.ts +1 -0
  11. package/dist/__tests__/bond-link-survives-exit.test.js +177 -0
  12. package/dist/__tests__/bond-link-survives-exit.test.js.map +1 -0
  13. package/dist/__tests__/cli-info.test.d.ts +1 -0
  14. package/dist/__tests__/cli-info.test.js +113 -0
  15. package/dist/__tests__/cli-info.test.js.map +1 -0
  16. package/dist/__tests__/credential-resolution.test.js +57 -3
  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 +39 -13
  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__/invite-accept.test.d.ts +1 -0
  36. package/dist/__tests__/invite-accept.test.js +118 -0
  37. package/dist/__tests__/invite-accept.test.js.map +1 -0
  38. package/dist/__tests__/lost-agent.test.js +51 -0
  39. package/dist/__tests__/lost-agent.test.js.map +1 -1
  40. package/dist/__tests__/mcp-tools.test.js +245 -6
  41. package/dist/__tests__/mcp-tools.test.js.map +1 -1
  42. package/dist/__tests__/missing-credential-help.test.d.ts +1 -0
  43. package/dist/__tests__/missing-credential-help.test.js +14 -0
  44. package/dist/__tests__/missing-credential-help.test.js.map +1 -0
  45. package/dist/__tests__/pending-device-flow-e2e.test.js +22 -1
  46. package/dist/__tests__/pending-device-flow-e2e.test.js.map +1 -1
  47. package/dist/__tests__/pending-device-flow-resume.test.d.ts +1 -0
  48. package/dist/__tests__/pending-device-flow-resume.test.js +104 -0
  49. package/dist/__tests__/pending-device-flow-resume.test.js.map +1 -0
  50. package/dist/__tests__/prompt-resource.test.js +1 -0
  51. package/dist/__tests__/prompt-resource.test.js.map +1 -1
  52. package/dist/__tests__/reconnect-survival-e2e.test.js +3 -2
  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 +55 -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.js +63 -4
  62. package/dist/__tests__/retry-after.test.js.map +1 -1
  63. package/dist/__tests__/run-pass-mode.test.d.ts +1 -0
  64. package/dist/__tests__/run-pass-mode.test.js +163 -0
  65. package/dist/__tests__/run-pass-mode.test.js.map +1 -0
  66. package/dist/__tests__/session-identity.test.d.ts +1 -0
  67. package/dist/__tests__/session-identity.test.js +276 -0
  68. package/dist/__tests__/session-identity.test.js.map +1 -0
  69. package/dist/__tests__/version-check.test.js +16 -1
  70. package/dist/__tests__/version-check.test.js.map +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-key-mode.js +70 -30
  74. package/dist/agent-key-mode.js.map +1 -1
  75. package/dist/ais-http-error.d.ts +3 -0
  76. package/dist/ais-http-error.js +8 -1
  77. package/dist/ais-http-error.js.map +1 -1
  78. package/dist/ais-http.d.ts +4 -0
  79. package/dist/ais-http.js +58 -17
  80. package/dist/ais-http.js.map +1 -1
  81. package/dist/auto-handoff.js +33 -1
  82. package/dist/auto-handoff.js.map +1 -1
  83. package/dist/cli/doctor.d.ts +4 -0
  84. package/dist/cli/doctor.js +60 -18
  85. package/dist/cli/doctor.js.map +1 -1
  86. package/dist/cli/install.d.ts +6 -0
  87. package/dist/cli/install.js +52 -0
  88. package/dist/cli/install.js.map +1 -0
  89. package/dist/cli/invite-accept.d.ts +32 -0
  90. package/dist/cli/invite-accept.js +161 -0
  91. package/dist/cli/invite-accept.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/cli-info.d.ts +18 -0
  96. package/dist/cli-info.js +72 -0
  97. package/dist/cli-info.js.map +1 -0
  98. package/dist/credential-whoami.d.ts +50 -0
  99. package/dist/credential-whoami.js +91 -0
  100. package/dist/credential-whoami.js.map +1 -0
  101. package/dist/hydration.js +8 -0
  102. package/dist/hydration.js.map +1 -1
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.js +201 -31
  105. package/dist/index.js.map +1 -1
  106. package/dist/mcp/tools.d.ts +10 -0
  107. package/dist/mcp/tools.js +99 -11
  108. package/dist/mcp/tools.js.map +1 -1
  109. package/dist/pending-device-flow.d.ts +31 -0
  110. package/dist/pending-device-flow.js +38 -0
  111. package/dist/pending-device-flow.js.map +1 -1
  112. package/dist/refresh.js +5 -1
  113. package/dist/refresh.js.map +1 -1
  114. package/dist/request-timeout.d.ts +26 -0
  115. package/dist/request-timeout.js +58 -0
  116. package/dist/request-timeout.js.map +1 -0
  117. package/dist/run-pass-mode.d.ts +16 -0
  118. package/dist/run-pass-mode.js +312 -0
  119. package/dist/run-pass-mode.js.map +1 -0
  120. package/dist/session-identity.d.ts +15 -1
  121. package/dist/session-identity.js +104 -12
  122. package/dist/session-identity.js.map +1 -1
  123. package/dist/telemetry.d.ts +1 -1
  124. package/dist/telemetry.js.map +1 -1
  125. package/dist/tool-args.d.ts +11 -1
  126. package/dist/tool-args.js +17 -1
  127. package/dist/tool-args.js.map +1 -1
  128. package/dist/types.d.ts +32 -0
  129. package/dist/version-check.d.ts +8 -0
  130. package/dist/version-check.js +21 -1
  131. package/dist/version-check.js.map +1 -1
  132. package/dist/workspace-key-mode.js +120 -32
  133. package/dist/workspace-key-mode.js.map +1 -1
  134. package/package.json +4 -6
package/dist/mcp/tools.js CHANGED
@@ -9,18 +9,21 @@
9
9
  * is reached through the context objects rather than a closure.
10
10
  */
11
11
  import { aisGet, aisPost, aisPatch } from '../ais-http.js';
12
+ import { orient } from '../cli/orientation.js';
12
13
  import { isAuthErrorResult } from '../auth-staleness.js';
13
14
  import { saveAgentPreference } from '../agent-preference.js';
14
15
  import { hydrateIdentity } from '../hydration.js';
15
16
  import { emitTelemetry, hashAgentId } from '../telemetry.js';
16
17
  import { duplicateMemoryResult } from '../ais-http-error.js';
17
18
  import { parseAgentLoadArgs, parseEmptyToolArgs, parseHandoffArgs, parseRecallArgs, parseFullContextArgs, parseRememberArgs, parseInboxSendArgs, parseInboxReadArgs, parseInboxAckArgs, parseGoalCreateArgs, parseGoalListArgs, parseGoalUpdateProgressArgs, parseGoalCompleteArgs, } from '../tool-args.js';
18
- import { assertPinnedAgent, requiresIdentityGate, switchedTo, verifyPinnedIdentity } from '../session-identity.js';
19
+ import { assertPinnedAgent, clearPinnedIdentityConfirmation, identityCredentialFingerprint, requiresIdentityGate, switchedTo, verifyPinnedIdentity, } from '../session-identity.js';
19
20
  import { readInboxAndMaybeAck } from '../inbox-client.js';
20
21
  import { dispatchToolKeyMode, UNKNOWN_TOOL_KEY_MODE } from '../agent-key-mode.js';
21
- import { getUpdateNotice } from '../version-check.js';
22
+ import { getLatestKnownVersion, getUpdateNotice, readPackageVersion } from '../version-check.js';
22
23
  import { archiveAgent } from '../agent-archive.js';
23
24
  import { dispatchToolWorkspaceKeyMode, UNKNOWN_TOOL_WORKSPACE_KEY_MODE, } from '../workspace-key-mode.js';
25
+ import { dispatchToolRunPassMode, UNKNOWN_TOOL_RUN_PASS_MODE, } from '../run-pass-mode.js';
26
+ import { readRunPassFile } from '../run-pass-mode.js';
24
27
  /**
25
28
  * Tools whose result carries the "a newer aismemory has been published" notice
26
29
  * (CORBOT-7B8A1D16). whoami and full_context are the two orientation calls an
@@ -33,12 +36,25 @@ const UPDATE_NOTICE_TOOLS = new Set(['whoami', 'full_context']);
33
36
  function withUpdateNotice(toolName, result) {
34
37
  if (!UPDATE_NOTICE_TOOLS.has(toolName))
35
38
  return result;
36
- const notice = getUpdateNotice();
37
- if (notice === null)
38
- return result;
39
39
  if (typeof result !== 'object' || result === null || Array.isArray(result))
40
40
  return result;
41
- return { ...result, aismemoryUpdateAvailable: notice };
41
+ const withVersion = toolName === 'whoami' ? { ...result, ...whoamiVersionFields() } : { ...result };
42
+ const notice = getUpdateNotice();
43
+ if (notice !== null)
44
+ withVersion['aismemoryUpdateAvailable'] = notice;
45
+ return withVersion;
46
+ }
47
+ /**
48
+ * whoami reports the running package version, and the latest published
49
+ * version when the background check has settled (CORBOT-0003AE64). A pinned
50
+ * install that fell behind is then visible even where the notice was missed.
51
+ */
52
+ function whoamiVersionFields() {
53
+ const fields = { aismemoryVersion: readPackageVersion() };
54
+ const latest = getLatestKnownVersion();
55
+ if (latest !== null)
56
+ fields['aismemoryLatestVersion'] = latest;
57
+ return fields;
42
58
  }
43
59
  /**
44
60
  * `tools/call` handler for workspace-key auth mode (CORBOT-3103ED88).
@@ -54,8 +70,9 @@ export function createWorkspaceKeyCallToolHandler(ctx) {
54
70
  const toolStartedAt = Date.now();
55
71
  try {
56
72
  const callConfig = ctx.getActiveConfig();
73
+ const credentialKey = identityCredentialFingerprint('workspace-key', callConfig.workspaceKey);
57
74
  if (requiresIdentityGate(name, rawArgs)) {
58
- await verifyPinnedIdentity(ctx.getSessionIdentity(), callConfig.agentId, () => dispatchToolWorkspaceKeyMode(ctx.aisUrl, callConfig, 'whoami', {}));
75
+ await verifyPinnedIdentity(ctx.getSessionIdentity(), callConfig.agentId, () => dispatchToolWorkspaceKeyMode(ctx.aisUrl, callConfig, 'whoami', {}), { credentialKey });
59
76
  }
60
77
  const result = await dispatchToolWorkspaceKeyMode(ctx.aisUrl, callConfig, name, rawArgs);
61
78
  if (result === UNKNOWN_TOOL_WORKSPACE_KEY_MODE) {
@@ -77,7 +94,11 @@ export function createWorkspaceKeyCallToolHandler(ctx) {
77
94
  const identityBeforeSwitch = ctx.getSessionIdentity();
78
95
  if (identityBeforeSwitch) {
79
96
  const switched = switchedTo(identityBeforeSwitch, switchResult.agentId);
80
- await verifyPinnedIdentity(switched, switchResult.agentId, () => dispatchToolWorkspaceKeyMode(ctx.aisUrl, { ...callConfig, agentId: switchResult.agentId }, 'whoami', {}));
97
+ await verifyPinnedIdentity(switched, switchResult.agentId, () => dispatchToolWorkspaceKeyMode(ctx.aisUrl, { ...callConfig, agentId: switchResult.agentId }, 'whoami', {}), {
98
+ credentialKey,
99
+ freshOnly: true,
100
+ });
101
+ clearPinnedIdentityConfirmation(identityBeforeSwitch, credentialKey);
81
102
  ctx.setSessionIdentity(switched);
82
103
  }
83
104
  ctx.setActiveConfig({ ...ctx.getActiveConfig(), agentId: switchResult.agentId });
@@ -109,6 +130,53 @@ export function createWorkspaceKeyCallToolHandler(ctx) {
109
130
  }
110
131
  };
111
132
  }
133
+ /** `tools/call` handler for run-pass auth mode (CORBOT-662A4B3A). */
134
+ export function createRunPassCallToolHandler(ctx) {
135
+ const { config } = ctx;
136
+ return async (request) => {
137
+ const { name, arguments: args } = request.params;
138
+ const rawArgs = args ?? {};
139
+ ctx.activityTracker.recordToolUse(name);
140
+ const toolStartedAt = Date.now();
141
+ try {
142
+ if (requiresIdentityGate(name, rawArgs)) {
143
+ const runPass = await readRunPassFile(config.runPassFile);
144
+ const credentialKey = identityCredentialFingerprint('run-pass', runPass);
145
+ await verifyPinnedIdentity(ctx.getSessionIdentity(), config.agentId, () => dispatchToolRunPassMode(ctx.aisUrl, config, 'whoami', {}), { credentialKey });
146
+ }
147
+ const result = await dispatchToolRunPassMode(ctx.aisUrl, config, name, rawArgs);
148
+ if (result === UNKNOWN_TOOL_RUN_PASS_MODE) {
149
+ return {
150
+ content: [{ type: 'text', text: JSON.stringify({ error: `Unknown tool: ${name}` }) }],
151
+ isError: true,
152
+ };
153
+ }
154
+ emitTelemetry({
155
+ event: 'tool.call',
156
+ tool: name,
157
+ agentIdHash: hashAgentId(config.agentId),
158
+ latencyMs: Date.now() - toolStartedAt,
159
+ status: 'ok',
160
+ });
161
+ return { content: [{ type: 'text', text: JSON.stringify(withUpdateNotice(name, result), null, 2) }] };
162
+ }
163
+ catch (error) {
164
+ const message = error instanceof Error ? error.message : 'Unknown error';
165
+ emitTelemetry({
166
+ event: 'tool.call',
167
+ tool: name,
168
+ agentIdHash: hashAgentId(config.agentId),
169
+ latencyMs: Date.now() - toolStartedAt,
170
+ status: 'error',
171
+ error: message,
172
+ });
173
+ return {
174
+ content: [{ type: 'text', text: JSON.stringify({ error: message }) }],
175
+ isError: true,
176
+ };
177
+ }
178
+ };
179
+ }
112
180
  /** `tools/call` handler for agent-API-key auth mode (CORBOT-B1D3244C). */
113
181
  export function createAgentKeyCallToolHandler(ctx) {
114
182
  const { config } = ctx;
@@ -118,8 +186,9 @@ export function createAgentKeyCallToolHandler(ctx) {
118
186
  ctx.activityTracker.recordToolUse(name);
119
187
  const toolStartedAt = Date.now();
120
188
  try {
189
+ const credentialKey = identityCredentialFingerprint('agent-api-key', config.apiKey);
121
190
  if (requiresIdentityGate(name, rawArgs)) {
122
- await verifyPinnedIdentity(ctx.getSessionIdentity(), config.agentId, () => dispatchToolKeyMode(ctx.aisUrl, config, 'whoami', {}));
191
+ await verifyPinnedIdentity(ctx.getSessionIdentity(), config.agentId, () => dispatchToolKeyMode(ctx.aisUrl, config, 'whoami', {}), { credentialKey });
123
192
  }
124
193
  const result = await dispatchToolKeyMode(ctx.aisUrl, config, name, rawArgs);
125
194
  if (result === UNKNOWN_TOOL_KEY_MODE) {
@@ -172,10 +241,11 @@ export function createOAuthCallToolHandler(ctx) {
172
241
  const UNKNOWN_TOOL = Symbol('unknown-tool');
173
242
  const dispatchTool = async (c) => {
174
243
  const token = c.token;
244
+ const credentialKey = identityCredentialFingerprint('oauth-bearer', token);
175
245
  // agentId is mutable across `agent_load` calls within this session.
176
246
  let agentId = ctx.getSessionIdentity()?.agentId ?? c.agentId;
177
247
  if (requiresIdentityGate(name, rawArgs)) {
178
- await verifyPinnedIdentity(ctx.getSessionIdentity(), agentId, () => aisGet(`/v1/agents/${agentId}`, token));
248
+ await verifyPinnedIdentity(ctx.getSessionIdentity(), agentId, () => aisGet(`/v1/agents/${agentId}`, token), { credentialKey });
179
249
  }
180
250
  let result;
181
251
  switch (name) {
@@ -222,6 +292,13 @@ export function createOAuthCallToolHandler(ctx) {
222
292
  parseEmptyToolArgs(rawArgs);
223
293
  result = await aisGet(`/v1/agents/${agentId}`, token);
224
294
  break;
295
+ case 'orientation_check':
296
+ // Pure, read-only, local comparison — no AIS round trip. orient()
297
+ // validates its own input against the manifest schema and throws
298
+ // on a malformed manifest; the outer catch turns that into the
299
+ // same {error} shape every other tool uses.
300
+ result = orient(rawArgs);
301
+ break;
225
302
  case 'full_context': {
226
303
  const fcArgs = parseFullContextArgs(rawArgs);
227
304
  const fcParams = new URLSearchParams();
@@ -231,6 +308,8 @@ export function createOAuthCallToolHandler(ctx) {
231
308
  fcParams.set('memoriesLimit', String(fcArgs.memoriesLimit));
232
309
  if (fcArgs.view !== undefined)
233
310
  fcParams.set('view', fcArgs.view);
311
+ if (fcArgs.maxTokens !== undefined)
312
+ fcParams.set('maxTokens', String(fcArgs.maxTokens));
234
313
  const fcQs = fcParams.toString();
235
314
  const fcPath = `/v1/agents/${agentId}/full-context${fcQs ? `?${fcQs}` : ''}`;
236
315
  result = await aisGet(fcPath, token);
@@ -262,7 +341,11 @@ export function createOAuthCallToolHandler(ctx) {
262
341
  const identityBeforeSwitch = ctx.getSessionIdentity();
263
342
  if (identityBeforeSwitch) {
264
343
  const switched = switchedTo(identityBeforeSwitch, target.id);
265
- await verifyPinnedIdentity(switched, target.id, () => aisGet(`/v1/agents/${target.id}`, token));
344
+ await verifyPinnedIdentity(switched, target.id, () => aisGet(`/v1/agents/${target.id}`, token), {
345
+ credentialKey,
346
+ freshOnly: true,
347
+ });
348
+ clearPinnedIdentityConfirmation(identityBeforeSwitch, credentialKey);
266
349
  ctx.setSessionIdentity(switched);
267
350
  }
268
351
  ctx.persistClaudeSessionAgentName(process.env.CLAUDE_SESSION_ID, target.name);
@@ -297,6 +380,11 @@ export function createOAuthCallToolHandler(ctx) {
297
380
  status: target.status,
298
381
  memoriesLoaded: loaded?.recentMemories.length ?? 0,
299
382
  goalsLoaded: loaded?.goals.length ?? 0,
383
+ // CORBOT-2DDFC7A0: memoriesLoaded/goalsLoaded say how much arrived
384
+ // but not what was skipped or which rule chose it. The receipt
385
+ // does, and it names the rule's version — so an agent that just
386
+ // switched identity can see the selection instead of guessing.
387
+ receipt: loaded?.receipt ?? null,
300
388
  };
301
389
  break;
302
390
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,25 @@ export interface PendingDeviceFlow {
30
30
  provisionalTenantId: string;
31
31
  /** ISO timestamp of when this flow was started. */
32
32
  startedAt: string;
33
+ /**
34
+ * The live device code, so a later process can resume polling THIS code
35
+ * instead of calling /authorize again (CORBOT-7F3EC71C). Calling authorize
36
+ * expires every unclaimed claim token for the agent (OAuthDeviceService
37
+ * `tryReuseProvisional`), so a respawn used to kill the bond link that was
38
+ * already printed and relayed to the human.
39
+ *
40
+ * Optional: records written before this field existed are still loadable,
41
+ * they simply cannot be resumed.
42
+ */
43
+ deviceCode?: string;
44
+ /** The human-readable code, re-surfaced verbatim when a flow resumes. */
45
+ userCode?: string;
46
+ /** The bond URL, re-surfaced verbatim when a flow resumes. */
47
+ verificationUriComplete?: string;
48
+ /** Server-advised poll interval in seconds. */
49
+ interval?: number;
50
+ /** ISO timestamp at which the device code stops being redeemable. */
51
+ codeExpiresAt?: string;
33
52
  }
34
53
  /**
35
54
  * Sits beside credentials.json, so it follows the same per-agent isolation
@@ -47,3 +66,15 @@ export declare function savePendingDeviceFlow(flow: PendingDeviceFlow, home?: st
47
66
  export declare function loadPendingDeviceFlow(home?: string, now?: number): PendingDeviceFlow | null;
48
67
  /** Drop the record once the flow has bonded (or is known dead). */
49
68
  export declare function clearPendingDeviceFlow(home?: string): void;
69
+ /** Narrowed shape of a pending flow that carries everything a resume needs. */
70
+ export interface ResumableDeviceFlow extends PendingDeviceFlow {
71
+ deviceCode: string;
72
+ userCode: string;
73
+ verificationUriComplete: string;
74
+ codeExpiresAt: string;
75
+ }
76
+ /**
77
+ * True when `flow` carries a device code that has not expired yet, so the
78
+ * caller should resume polling it instead of minting a new one.
79
+ */
80
+ export declare function isResumableDeviceFlow(flow: PendingDeviceFlow | null, now?: number): flow is ResumableDeviceFlow;
@@ -77,6 +77,13 @@ export function loadPendingDeviceFlow(home = homedir(), now = Date.now()) {
77
77
  agentId: typeof parsed.agentId === 'string' ? parsed.agentId : '',
78
78
  provisionalTenantId: typeof parsed.provisionalTenantId === 'string' ? parsed.provisionalTenantId : '',
79
79
  startedAt: typeof parsed.startedAt === 'string' ? parsed.startedAt : '',
80
+ ...(typeof parsed.deviceCode === 'string' ? { deviceCode: parsed.deviceCode } : {}),
81
+ ...(typeof parsed.userCode === 'string' ? { userCode: parsed.userCode } : {}),
82
+ ...(typeof parsed.verificationUriComplete === 'string'
83
+ ? { verificationUriComplete: parsed.verificationUriComplete }
84
+ : {}),
85
+ ...(typeof parsed.interval === 'number' ? { interval: parsed.interval } : {}),
86
+ ...(typeof parsed.codeExpiresAt === 'string' ? { codeExpiresAt: parsed.codeExpiresAt } : {}),
80
87
  };
81
88
  }
82
89
  catch {
@@ -93,4 +100,35 @@ export function clearPendingDeviceFlow(home = homedir()) {
93
100
  // reuse attempt, which degrades to minting.
94
101
  }
95
102
  }
103
+ /**
104
+ * A device code that is still redeemable: the human can open the bond link
105
+ * that was already printed and it will work.
106
+ *
107
+ * `MIN_RESUMABLE_REMAINING_MS` keeps a code that is about to expire out of
108
+ * the resume path — re-surfacing a link with four seconds of life left is
109
+ * worse for the human than minting a fresh one.
110
+ */
111
+ const MIN_RESUMABLE_REMAINING_MS = 60_000;
112
+ /**
113
+ * True when `flow` carries a device code that has not expired yet, so the
114
+ * caller should resume polling it instead of minting a new one.
115
+ */
116
+ export function isResumableDeviceFlow(flow, now = Date.now()) {
117
+ if (!flow)
118
+ return false;
119
+ if (typeof flow.deviceCode !== 'string' || flow.deviceCode.length === 0)
120
+ return false;
121
+ if (typeof flow.userCode !== 'string' || flow.userCode.length === 0)
122
+ return false;
123
+ if (typeof flow.verificationUriComplete !== 'string' ||
124
+ flow.verificationUriComplete.length === 0) {
125
+ return false;
126
+ }
127
+ if (typeof flow.codeExpiresAt !== 'string')
128
+ return false;
129
+ const expiresAt = Date.parse(flow.codeExpiresAt);
130
+ if (!Number.isFinite(expiresAt))
131
+ return false;
132
+ return expiresAt - now >= MIN_RESUMABLE_REMAINING_MS;
133
+ }
96
134
  //# sourceMappingURL=pending-device-flow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pending-device-flow.js","sourceRoot":"","sources":["../src/pending-device-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending-device-flow.js","sourceRoot":"","sources":["../src/pending-device-flow.ts"],"names":[],"mappings":"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"}
package/dist/refresh.js CHANGED
@@ -1,9 +1,13 @@
1
+ import { getAisRequestTimeoutMs } from './request-timeout.js';
1
2
  let refreshInterval = null;
2
3
  export function startRefreshTimer(aisUrl, agentId, token, onUpdate, intervalMs = 5 * 60 * 1000) {
3
4
  stopRefreshTimer();
4
5
  refreshInterval = setInterval(async () => {
5
6
  try {
6
- const res = await fetch(`${aisUrl}/v1/agents/${agentId}/memory?limit=20&minImportance=0.5`, { headers: { Authorization: `Bearer ${token}` } });
7
+ const res = await fetch(`${aisUrl}/v1/agents/${agentId}/memory?limit=20&minImportance=0.5`, {
8
+ headers: { Authorization: `Bearer ${token}` },
9
+ signal: AbortSignal.timeout(getAisRequestTimeoutMs()),
10
+ });
7
11
  if (!res.ok)
8
12
  return;
9
13
  const json = await res.json();
@@ -1 +1 @@
1
- {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../src/refresh.ts"],"names":[],"mappings":"AAEA,IAAI,eAAe,GAA0C,IAAI,CAAC;AAElE,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,OAAe,EACf,KAAa,EACb,QAA2C,EAC3C,aAAqB,CAAC,GAAG,EAAE,GAAG,IAAI;IAElC,gBAAgB,EAAE,CAAC;IACnB,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,MAAM,cAAc,OAAO,oCAAoC,EAClE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,CAClD,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO;YACpB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,eAAe,EAAE,CAAC;QACpB,aAAa,CAAC,eAAe,CAAC,CAAC;QAC/B,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../src/refresh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,IAAI,eAAe,GAA0C,IAAI,CAAC;AAElE,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,OAAe,EACf,KAAa,EACb,QAA2C,EAC3C,aAAqB,CAAC,GAAG,EAAE,GAAG,IAAI;IAElC,gBAAgB,EAAE,CAAC;IACnB,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,MAAM,cAAc,OAAO,oCAAoC,EAClE;gBACE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;gBAC7C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;aACtD,CACF,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO;YACpB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,eAAe,EAAE,CAAC;QACpB,aAAa,CAAC,eAAe,CAAC,CAAC;QAC/B,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared client-side request timeout for every HTTP call the aismemory MCP
3
+ * server makes to AIS (GitHub issue #6635). A stalled AIS call must fail fast
4
+ * with a clear error instead of hanging the agent process for tens of
5
+ * minutes — that hang previously froze an entire floor session for 6 hours.
6
+ */
7
+ /** Default timeout for an AIS request, in milliseconds. */
8
+ export declare const DEFAULT_AIS_REQUEST_TIMEOUT_MS = 20000;
9
+ /**
10
+ * Resolve the AIS request timeout from AIS_MCP_REQUEST_TIMEOUT_MS. Falls back
11
+ * to the default for anything unset, blank, non-numeric, or non-positive — a
12
+ * malformed override must degrade to a safe timeout, never disable it.
13
+ */
14
+ export declare function getAisRequestTimeoutMs(env?: Record<string, string | undefined>): number;
15
+ /** True when `err` is the abort produced by an `AbortSignal.timeout()` firing. */
16
+ export declare function isAisRequestTimeout(err: unknown): boolean;
17
+ export declare class AisRequestTimeoutError extends Error {
18
+ constructor(path: string, timeoutMs: number, note?: string);
19
+ }
20
+ /**
21
+ * Replace a raw timeout abort with a clear, path- and duration-specific
22
+ * error so it surfaces as an actionable MCP tool error (`isError`) instead of
23
+ * an opaque "operation was aborted" message. A non-GET `method` adds the
24
+ * may-have-landed note. Every other error passes through unchanged.
25
+ */
26
+ export declare function toAisRequestError(err: unknown, path: string, timeoutMs: number, method?: string): unknown;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Shared client-side request timeout for every HTTP call the aismemory MCP
3
+ * server makes to AIS (GitHub issue #6635). A stalled AIS call must fail fast
4
+ * with a clear error instead of hanging the agent process for tens of
5
+ * minutes — that hang previously froze an entire floor session for 6 hours.
6
+ */
7
+ /** Default timeout for an AIS request, in milliseconds. */
8
+ export const DEFAULT_AIS_REQUEST_TIMEOUT_MS = 20_000;
9
+ const ENV_VAR = 'AIS_MCP_REQUEST_TIMEOUT_MS';
10
+ /**
11
+ * Resolve the AIS request timeout from AIS_MCP_REQUEST_TIMEOUT_MS. Falls back
12
+ * to the default for anything unset, blank, non-numeric, or non-positive — a
13
+ * malformed override must degrade to a safe timeout, never disable it.
14
+ */
15
+ export function getAisRequestTimeoutMs(env = process.env) {
16
+ const raw = env[ENV_VAR]?.trim();
17
+ if (!raw)
18
+ return DEFAULT_AIS_REQUEST_TIMEOUT_MS;
19
+ const parsed = Number(raw);
20
+ if (!Number.isFinite(parsed) || parsed <= 0) {
21
+ process.stderr.write(`[aismemory] ${ENV_VAR}="${raw}" is not a positive number of milliseconds; ` +
22
+ `using the default ${DEFAULT_AIS_REQUEST_TIMEOUT_MS}ms.\n`);
23
+ return DEFAULT_AIS_REQUEST_TIMEOUT_MS;
24
+ }
25
+ return parsed;
26
+ }
27
+ /** True when `err` is the abort produced by an `AbortSignal.timeout()` firing. */
28
+ export function isAisRequestTimeout(err) {
29
+ return err instanceof DOMException && err.name === 'TimeoutError';
30
+ }
31
+ export class AisRequestTimeoutError extends Error {
32
+ constructor(path, timeoutMs, note = '') {
33
+ super(`AIS request to ${path} timed out after ${timeoutMs}ms${note}`);
34
+ this.name = 'AisRequestTimeoutError';
35
+ }
36
+ }
37
+ /**
38
+ * Appended to a timed-out write (CORBOT-14EDC987). The client abort does not
39
+ * cancel the server, so a timed-out write has often already been stored, and
40
+ * a blind retry used to create duplicates. remember is deduplicated on
41
+ * content server-side and inbox_send on messageId, so those retries are safe.
42
+ */
43
+ const WRITE_TIMEOUT_NOTE = ' — the write may have landed on the server anyway. Retrying remember with identical content, ' +
44
+ 'or inbox_send with the same messageId, is idempotent; check before retrying any other write.';
45
+ /**
46
+ * Replace a raw timeout abort with a clear, path- and duration-specific
47
+ * error so it surfaces as an actionable MCP tool error (`isError`) instead of
48
+ * an opaque "operation was aborted" message. A non-GET `method` adds the
49
+ * may-have-landed note. Every other error passes through unchanged.
50
+ */
51
+ export function toAisRequestError(err, path, timeoutMs, method = 'GET') {
52
+ if (isAisRequestTimeout(err)) {
53
+ const note = method === 'GET' ? '' : WRITE_TIMEOUT_NOTE;
54
+ return new AisRequestTimeoutError(path, timeoutMs, note);
55
+ }
56
+ return err;
57
+ }
58
+ //# sourceMappingURL=request-timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-timeout.js","sourceRoot":"","sources":["../src/request-timeout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC;AAErD,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,8BAA8B,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,eAAe,OAAO,KAAK,GAAG,8CAA8C;YAC1E,qBAAqB,8BAA8B,OAAO,CAC7D,CAAC;QACF,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC;AACpE,CAAC;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,IAAY,EAAE,SAAiB,EAAE,IAAI,GAAG,EAAE;QACpD,KAAK,CAAC,kBAAkB,IAAI,oBAAoB,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,kBAAkB,GACtB,+FAA+F;IAC/F,8FAA8F,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAY,EACZ,IAAY,EACZ,SAAiB,EACjB,MAAM,GAAG,KAAK;IAEd,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACxD,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface RunPassConfig {
2
+ runPassFile: string;
3
+ agentId: string;
4
+ }
5
+ export declare class RunPassConfigError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ type FetchImpl = typeof globalThis.fetch;
9
+ export declare function loadRunPassConfig(env?: Record<string, string | undefined>): RunPassConfig | null;
10
+ export declare function readRunPassFile(runPassFile: string): Promise<string>;
11
+ export declare function runPassPost(aisUrl: string, path: string, runPassFile: string, body: unknown, fetchImpl?: FetchImpl): Promise<unknown>;
12
+ export declare function runPassGet(aisUrl: string, path: string, runPassFile: string, fetchImpl?: FetchImpl): Promise<unknown>;
13
+ export declare function runPassPatch(aisUrl: string, path: string, runPassFile: string, body: unknown, fetchImpl?: FetchImpl): Promise<unknown>;
14
+ export declare const UNKNOWN_TOOL_RUN_PASS_MODE: unique symbol;
15
+ export declare function dispatchToolRunPassMode(aisUrl: string, config: RunPassConfig, name: string, rawArgs: unknown, fetchImpl?: FetchImpl): Promise<unknown | typeof UNKNOWN_TOOL_RUN_PASS_MODE>;
16
+ export {};