aismemory 0.8.0 → 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.
- package/README.md +87 -7
- package/dist/__tests__/agent-key-mode.test.js +105 -6
- package/dist/__tests__/agent-key-mode.test.js.map +1 -1
- package/dist/__tests__/agent-load-persistence.test.js +22 -6
- package/dist/__tests__/agent-load-persistence.test.js.map +1 -1
- package/dist/__tests__/ais-http.test.js +23 -3
- package/dist/__tests__/ais-http.test.js.map +1 -1
- package/dist/__tests__/auto-handoff.test.js +56 -0
- package/dist/__tests__/auto-handoff.test.js.map +1 -1
- package/dist/__tests__/bond-link-survives-exit.test.d.ts +1 -0
- package/dist/__tests__/bond-link-survives-exit.test.js +177 -0
- package/dist/__tests__/bond-link-survives-exit.test.js.map +1 -0
- package/dist/__tests__/credential-resolution.test.js +51 -3
- package/dist/__tests__/credential-resolution.test.js.map +1 -1
- package/dist/__tests__/credential-whoami.test.d.ts +8 -0
- package/dist/__tests__/credential-whoami.test.js +93 -0
- package/dist/__tests__/credential-whoami.test.js.map +1 -0
- package/dist/__tests__/device-flow-gate-e2e.test.js +6 -4
- package/dist/__tests__/device-flow-gate-e2e.test.js.map +1 -1
- package/dist/__tests__/doctor.test.js +39 -13
- package/dist/__tests__/doctor.test.js.map +1 -1
- package/dist/__tests__/full-context-view-forwarding.test.d.ts +1 -0
- package/dist/__tests__/full-context-view-forwarding.test.js +80 -0
- package/dist/__tests__/full-context-view-forwarding.test.js.map +1 -0
- package/dist/__tests__/hydration.test.js +56 -1
- package/dist/__tests__/hydration.test.js.map +1 -1
- package/dist/__tests__/install.test.d.ts +1 -0
- package/dist/__tests__/install.test.js +126 -0
- package/dist/__tests__/install.test.js.map +1 -0
- package/dist/__tests__/integration.test.js +1 -0
- package/dist/__tests__/integration.test.js.map +1 -1
- package/dist/__tests__/lost-agent.test.js +51 -0
- package/dist/__tests__/lost-agent.test.js.map +1 -1
- package/dist/__tests__/mcp-tools.test.js +175 -2
- package/dist/__tests__/mcp-tools.test.js.map +1 -1
- package/dist/__tests__/pending-device-flow-e2e.test.js +22 -1
- package/dist/__tests__/pending-device-flow-e2e.test.js.map +1 -1
- package/dist/__tests__/pending-device-flow-resume.test.d.ts +1 -0
- package/dist/__tests__/pending-device-flow-resume.test.js +104 -0
- package/dist/__tests__/pending-device-flow-resume.test.js.map +1 -0
- package/dist/__tests__/prompt-resource.test.js +1 -0
- package/dist/__tests__/prompt-resource.test.js.map +1 -1
- package/dist/__tests__/refresh.test.js +24 -2
- package/dist/__tests__/refresh.test.js.map +1 -1
- package/dist/__tests__/request-timeout.test.d.ts +1 -0
- package/dist/__tests__/request-timeout.test.js +40 -0
- package/dist/__tests__/request-timeout.test.js.map +1 -0
- package/dist/__tests__/resolve-agent-preference-e2e.test.js +15 -3
- package/dist/__tests__/resolve-agent-preference-e2e.test.js.map +1 -1
- package/dist/__tests__/retry-after.test.js +10 -4
- package/dist/__tests__/retry-after.test.js.map +1 -1
- package/dist/__tests__/run-pass-mode.test.d.ts +1 -0
- package/dist/__tests__/run-pass-mode.test.js +130 -0
- package/dist/__tests__/run-pass-mode.test.js.map +1 -0
- package/dist/__tests__/session-identity.test.d.ts +1 -0
- package/dist/__tests__/session-identity.test.js +213 -0
- package/dist/__tests__/session-identity.test.js.map +1 -0
- package/dist/__tests__/workspace-key-mode.test.js +194 -16
- package/dist/__tests__/workspace-key-mode.test.js.map +1 -1
- package/dist/agent-key-mode.js +70 -30
- package/dist/agent-key-mode.js.map +1 -1
- package/dist/ais-http-error.d.ts +3 -0
- package/dist/ais-http-error.js +8 -1
- package/dist/ais-http-error.js.map +1 -1
- package/dist/ais-http.d.ts +2 -0
- package/dist/ais-http.js +24 -14
- package/dist/ais-http.js.map +1 -1
- package/dist/auto-handoff.js +33 -1
- package/dist/auto-handoff.js.map +1 -1
- package/dist/cli/doctor.d.ts +4 -0
- package/dist/cli/doctor.js +60 -18
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/install.d.ts +6 -0
- package/dist/cli/install.js +52 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/orientation.d.ts +2 -0
- package/dist/cli/orientation.js +31 -1
- package/dist/cli/orientation.js.map +1 -1
- package/dist/credential-whoami.d.ts +50 -0
- package/dist/credential-whoami.js +91 -0
- package/dist/credential-whoami.js.map +1 -0
- package/dist/hydration.js +8 -0
- package/dist/hydration.js.map +1 -1
- package/dist/index.js +180 -29
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools.d.ts +10 -0
- package/dist/mcp/tools.js +81 -6
- package/dist/mcp/tools.js.map +1 -1
- package/dist/pending-device-flow.d.ts +31 -0
- package/dist/pending-device-flow.js +38 -0
- package/dist/pending-device-flow.js.map +1 -1
- package/dist/refresh.js +5 -1
- package/dist/refresh.js.map +1 -1
- package/dist/request-timeout.d.ts +26 -0
- package/dist/request-timeout.js +49 -0
- package/dist/request-timeout.js.map +1 -0
- package/dist/run-pass-mode.d.ts +16 -0
- package/dist/run-pass-mode.js +274 -0
- package/dist/run-pass-mode.js.map +1 -0
- package/dist/session-identity.d.ts +15 -1
- package/dist/session-identity.js +102 -12
- package/dist/session-identity.js.map +1 -1
- package/dist/telemetry.d.ts +1 -1
- package/dist/telemetry.js.map +1 -1
- package/dist/tool-args.d.ts +11 -1
- package/dist/tool-args.js +17 -1
- package/dist/tool-args.js.map +1 -1
- package/dist/types.d.ts +32 -0
- package/dist/workspace-key-mode.js +93 -26
- package/dist/workspace-key-mode.js.map +1 -1
- 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
22
|
import { getUpdateNotice } 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
|
|
@@ -54,8 +57,9 @@ export function createWorkspaceKeyCallToolHandler(ctx) {
|
|
|
54
57
|
const toolStartedAt = Date.now();
|
|
55
58
|
try {
|
|
56
59
|
const callConfig = ctx.getActiveConfig();
|
|
60
|
+
const credentialKey = identityCredentialFingerprint('workspace-key', callConfig.workspaceKey);
|
|
57
61
|
if (requiresIdentityGate(name, rawArgs)) {
|
|
58
|
-
await verifyPinnedIdentity(ctx.getSessionIdentity(), callConfig.agentId, () => dispatchToolWorkspaceKeyMode(ctx.aisUrl, callConfig, 'whoami', {}));
|
|
62
|
+
await verifyPinnedIdentity(ctx.getSessionIdentity(), callConfig.agentId, () => dispatchToolWorkspaceKeyMode(ctx.aisUrl, callConfig, 'whoami', {}), { credentialKey });
|
|
59
63
|
}
|
|
60
64
|
const result = await dispatchToolWorkspaceKeyMode(ctx.aisUrl, callConfig, name, rawArgs);
|
|
61
65
|
if (result === UNKNOWN_TOOL_WORKSPACE_KEY_MODE) {
|
|
@@ -77,7 +81,11 @@ export function createWorkspaceKeyCallToolHandler(ctx) {
|
|
|
77
81
|
const identityBeforeSwitch = ctx.getSessionIdentity();
|
|
78
82
|
if (identityBeforeSwitch) {
|
|
79
83
|
const switched = switchedTo(identityBeforeSwitch, switchResult.agentId);
|
|
80
|
-
await verifyPinnedIdentity(switched, switchResult.agentId, () => dispatchToolWorkspaceKeyMode(ctx.aisUrl, { ...callConfig, agentId: switchResult.agentId }, 'whoami', {})
|
|
84
|
+
await verifyPinnedIdentity(switched, switchResult.agentId, () => dispatchToolWorkspaceKeyMode(ctx.aisUrl, { ...callConfig, agentId: switchResult.agentId }, 'whoami', {}), {
|
|
85
|
+
credentialKey,
|
|
86
|
+
freshOnly: true,
|
|
87
|
+
});
|
|
88
|
+
clearPinnedIdentityConfirmation(identityBeforeSwitch, credentialKey);
|
|
81
89
|
ctx.setSessionIdentity(switched);
|
|
82
90
|
}
|
|
83
91
|
ctx.setActiveConfig({ ...ctx.getActiveConfig(), agentId: switchResult.agentId });
|
|
@@ -109,6 +117,53 @@ export function createWorkspaceKeyCallToolHandler(ctx) {
|
|
|
109
117
|
}
|
|
110
118
|
};
|
|
111
119
|
}
|
|
120
|
+
/** `tools/call` handler for run-pass auth mode (CORBOT-662A4B3A). */
|
|
121
|
+
export function createRunPassCallToolHandler(ctx) {
|
|
122
|
+
const { config } = ctx;
|
|
123
|
+
return async (request) => {
|
|
124
|
+
const { name, arguments: args } = request.params;
|
|
125
|
+
const rawArgs = args ?? {};
|
|
126
|
+
ctx.activityTracker.recordToolUse(name);
|
|
127
|
+
const toolStartedAt = Date.now();
|
|
128
|
+
try {
|
|
129
|
+
if (requiresIdentityGate(name, rawArgs)) {
|
|
130
|
+
const runPass = await readRunPassFile(config.runPassFile);
|
|
131
|
+
const credentialKey = identityCredentialFingerprint('run-pass', runPass);
|
|
132
|
+
await verifyPinnedIdentity(ctx.getSessionIdentity(), config.agentId, () => dispatchToolRunPassMode(ctx.aisUrl, config, 'whoami', {}), { credentialKey });
|
|
133
|
+
}
|
|
134
|
+
const result = await dispatchToolRunPassMode(ctx.aisUrl, config, name, rawArgs);
|
|
135
|
+
if (result === UNKNOWN_TOOL_RUN_PASS_MODE) {
|
|
136
|
+
return {
|
|
137
|
+
content: [{ type: 'text', text: JSON.stringify({ error: `Unknown tool: ${name}` }) }],
|
|
138
|
+
isError: true,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
emitTelemetry({
|
|
142
|
+
event: 'tool.call',
|
|
143
|
+
tool: name,
|
|
144
|
+
agentIdHash: hashAgentId(config.agentId),
|
|
145
|
+
latencyMs: Date.now() - toolStartedAt,
|
|
146
|
+
status: 'ok',
|
|
147
|
+
});
|
|
148
|
+
return { content: [{ type: 'text', text: JSON.stringify(withUpdateNotice(name, result), null, 2) }] };
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
152
|
+
emitTelemetry({
|
|
153
|
+
event: 'tool.call',
|
|
154
|
+
tool: name,
|
|
155
|
+
agentIdHash: hashAgentId(config.agentId),
|
|
156
|
+
latencyMs: Date.now() - toolStartedAt,
|
|
157
|
+
status: 'error',
|
|
158
|
+
error: message,
|
|
159
|
+
});
|
|
160
|
+
return {
|
|
161
|
+
content: [{ type: 'text', text: JSON.stringify({ error: message }) }],
|
|
162
|
+
isError: true,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
}
|
|
112
167
|
/** `tools/call` handler for agent-API-key auth mode (CORBOT-B1D3244C). */
|
|
113
168
|
export function createAgentKeyCallToolHandler(ctx) {
|
|
114
169
|
const { config } = ctx;
|
|
@@ -118,8 +173,9 @@ export function createAgentKeyCallToolHandler(ctx) {
|
|
|
118
173
|
ctx.activityTracker.recordToolUse(name);
|
|
119
174
|
const toolStartedAt = Date.now();
|
|
120
175
|
try {
|
|
176
|
+
const credentialKey = identityCredentialFingerprint('agent-api-key', config.apiKey);
|
|
121
177
|
if (requiresIdentityGate(name, rawArgs)) {
|
|
122
|
-
await verifyPinnedIdentity(ctx.getSessionIdentity(), config.agentId, () => dispatchToolKeyMode(ctx.aisUrl, config, 'whoami', {}));
|
|
178
|
+
await verifyPinnedIdentity(ctx.getSessionIdentity(), config.agentId, () => dispatchToolKeyMode(ctx.aisUrl, config, 'whoami', {}), { credentialKey });
|
|
123
179
|
}
|
|
124
180
|
const result = await dispatchToolKeyMode(ctx.aisUrl, config, name, rawArgs);
|
|
125
181
|
if (result === UNKNOWN_TOOL_KEY_MODE) {
|
|
@@ -172,10 +228,11 @@ export function createOAuthCallToolHandler(ctx) {
|
|
|
172
228
|
const UNKNOWN_TOOL = Symbol('unknown-tool');
|
|
173
229
|
const dispatchTool = async (c) => {
|
|
174
230
|
const token = c.token;
|
|
231
|
+
const credentialKey = identityCredentialFingerprint('oauth-bearer', token);
|
|
175
232
|
// agentId is mutable across `agent_load` calls within this session.
|
|
176
233
|
let agentId = ctx.getSessionIdentity()?.agentId ?? c.agentId;
|
|
177
234
|
if (requiresIdentityGate(name, rawArgs)) {
|
|
178
|
-
await verifyPinnedIdentity(ctx.getSessionIdentity(), agentId, () => aisGet(`/v1/agents/${agentId}`, token));
|
|
235
|
+
await verifyPinnedIdentity(ctx.getSessionIdentity(), agentId, () => aisGet(`/v1/agents/${agentId}`, token), { credentialKey });
|
|
179
236
|
}
|
|
180
237
|
let result;
|
|
181
238
|
switch (name) {
|
|
@@ -222,6 +279,13 @@ export function createOAuthCallToolHandler(ctx) {
|
|
|
222
279
|
parseEmptyToolArgs(rawArgs);
|
|
223
280
|
result = await aisGet(`/v1/agents/${agentId}`, token);
|
|
224
281
|
break;
|
|
282
|
+
case 'orientation_check':
|
|
283
|
+
// Pure, read-only, local comparison — no AIS round trip. orient()
|
|
284
|
+
// validates its own input against the manifest schema and throws
|
|
285
|
+
// on a malformed manifest; the outer catch turns that into the
|
|
286
|
+
// same {error} shape every other tool uses.
|
|
287
|
+
result = orient(rawArgs);
|
|
288
|
+
break;
|
|
225
289
|
case 'full_context': {
|
|
226
290
|
const fcArgs = parseFullContextArgs(rawArgs);
|
|
227
291
|
const fcParams = new URLSearchParams();
|
|
@@ -231,6 +295,8 @@ export function createOAuthCallToolHandler(ctx) {
|
|
|
231
295
|
fcParams.set('memoriesLimit', String(fcArgs.memoriesLimit));
|
|
232
296
|
if (fcArgs.view !== undefined)
|
|
233
297
|
fcParams.set('view', fcArgs.view);
|
|
298
|
+
if (fcArgs.maxTokens !== undefined)
|
|
299
|
+
fcParams.set('maxTokens', String(fcArgs.maxTokens));
|
|
234
300
|
const fcQs = fcParams.toString();
|
|
235
301
|
const fcPath = `/v1/agents/${agentId}/full-context${fcQs ? `?${fcQs}` : ''}`;
|
|
236
302
|
result = await aisGet(fcPath, token);
|
|
@@ -262,7 +328,11 @@ export function createOAuthCallToolHandler(ctx) {
|
|
|
262
328
|
const identityBeforeSwitch = ctx.getSessionIdentity();
|
|
263
329
|
if (identityBeforeSwitch) {
|
|
264
330
|
const switched = switchedTo(identityBeforeSwitch, target.id);
|
|
265
|
-
await verifyPinnedIdentity(switched, target.id, () => aisGet(`/v1/agents/${target.id}`, token)
|
|
331
|
+
await verifyPinnedIdentity(switched, target.id, () => aisGet(`/v1/agents/${target.id}`, token), {
|
|
332
|
+
credentialKey,
|
|
333
|
+
freshOnly: true,
|
|
334
|
+
});
|
|
335
|
+
clearPinnedIdentityConfirmation(identityBeforeSwitch, credentialKey);
|
|
266
336
|
ctx.setSessionIdentity(switched);
|
|
267
337
|
}
|
|
268
338
|
ctx.persistClaudeSessionAgentName(process.env.CLAUDE_SESSION_ID, target.name);
|
|
@@ -297,6 +367,11 @@ export function createOAuthCallToolHandler(ctx) {
|
|
|
297
367
|
status: target.status,
|
|
298
368
|
memoriesLoaded: loaded?.recentMemories.length ?? 0,
|
|
299
369
|
goalsLoaded: loaded?.goals.length ?? 0,
|
|
370
|
+
// CORBOT-2DDFC7A0: memoriesLoaded/goalsLoaded say how much arrived
|
|
371
|
+
// but not what was skipped or which rule chose it. The receipt
|
|
372
|
+
// does, and it names the rule's version — so an agent that just
|
|
373
|
+
// switched identity can see the selection instead of guessing.
|
|
374
|
+
receipt: loaded?.receipt ?? null,
|
|
300
375
|
};
|
|
301
376
|
break;
|
|
302
377
|
}
|
package/dist/mcp/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAwB,MAAM,wBAAwB,CAAC;AACzI,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAA0B,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAGhC,MAAM,0BAA0B,CAAC;AA+ClC;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AAEhE,SAAS,gBAAgB,CAAC,QAAgB,EAAE,MAAe;IACzD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC;IACtD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1F,OAAO,EAAE,GAAG,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAC/C,GAAgC;IAEhC,OAAO,KAAK,EAAE,OAAwB,EAA2B,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YACzC,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,oBAAoB,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,UAAU,CAAC,OAAO,EAAE,GAAqB,EAAE,CAAC,4BAA4B,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACvK,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAEzF,IAAI,MAAM,KAAK,+BAA+B,EAAE,CAAC;gBAC/C,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,8DAA8D;YAC9D,IACE,IAAI,KAAK,YAAY;gBACrB,OAAO,MAAM,KAAK,QAAQ;gBAC1B,MAAM,KAAK,IAAI;gBACf,UAAU,IAAI,MAAM;gBACnB,MAA4B,CAAC,QAAQ,EACtC,CAAC;gBACD,MAAM,YAAY,GAAG,MAA2B,CAAC;gBACjD,iEAAiE;gBACjE,oEAAoE;gBACpE,sDAAsD;gBACtD,MAAM,oBAAoB,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;gBACtD,IAAI,oBAAoB,EAAE,CAAC;oBACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,oBAAoB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;oBACxE,MAAM,oBAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAE,GAAqB,EAAE,CAChF,4BAA4B,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC5G,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACnC,CAAC;gBACD,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjF,GAAG,CAAC,MAAM,CAAC,4BAA4B,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,aAAa,CAAC;gBACZ,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC;gBACvD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;gBACrC,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACxG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,aAAa,CAAC;gBACZ,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC;gBACvD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;gBACrC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,6BAA6B,CAC3C,GAA4B;IAE5B,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACvB,OAAO,KAAK,EAAE,OAAwB,EAA2B,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBACxC,MAAM,oBAAoB,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,GAAqB,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACtJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAE5E,IAAI,MAAM,KAAK,qBAAqB,EAAE,CAAC;gBACrC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,aAAa,CAAC;gBACZ,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;gBACrC,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACxG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,aAAa,CAAC;gBACZ,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;gBACrC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,GAAyB;IAEzB,OAAO,KAAK,EAAE,OAAwB,EAA2B,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBACxC,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,GAAG,CAAC,kBAAkB,EAAE,EAAE,OAAO,IAAI,YAAY,CAAC,CAAC;YACjG,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;YAE5C,MAAM,YAAY,GAAG,KAAK,EAAE,CAAmB,EAAoB,EAAE;gBACnE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBACtB,oEAAoE;gBACpE,IAAI,OAAO,GAAG,GAAG,CAAC,kBAAkB,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;gBAC7D,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;oBACxC,MAAM,oBAAoB,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,GAAqB,EAAE,CAAC,MAAM,CAAC,cAAc,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;gBAChI,CAAC;gBAED,IAAI,MAAe,CAAC;gBAEpB,QAAQ,IAAI,EAAE,CAAC;oBACf,KAAK,UAAU,CAAC,CAAC,CAAC;wBAChB,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAChD,IAAI,CAAC;4BACH,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,OAAO,SAAS,EAAE;gCACrD,OAAO,EAAE,YAAY,CAAC,OAAO;gCAC7B,IAAI,EAAE,YAAY,CAAC,IAAI;gCACvB,UAAU,EAAE,YAAY,CAAC,UAAU;gCACnC,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;6BACpE,EAAE,KAAK,CAAC,CAAC;4BACV,GAAG,CAAC,eAAe,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;wBAC/D,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,mEAAmE;4BACnE,mEAAmE;4BACnE,+DAA+D;4BAC/D,6CAA6C;4BAC7C,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;4BAC7C,IAAI,CAAC,SAAS;gCAAE,MAAM,GAAG,CAAC;4BAC1B,MAAM,GAAG,SAAS,CAAC;wBACrB,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;wBAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;wBACrC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;wBACtC,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS;4BAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;wBAClF,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS;4BAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;wBACxE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;4BAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC/G,IAAI,UAAU,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;4BAC9C,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;wBAC9D,CAAC;wBACD,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,OAAO,WAAW,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;wBACvE,MAAM;oBACR,CAAC;oBAED,KAAK,QAAQ;wBACX,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAC5B,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;wBACtD,MAAM;oBAER,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;wBAC7C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;wBACvC,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS;4BAAE,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;wBACrG,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;4BAAE,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;wBACpG,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;4BAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBACjC,MAAM,MAAM,GAAG,cAAc,OAAO,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;wBAC7E,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBACrC,MAAM;oBACR,CAAC;oBAED,KAAK,OAAO;wBACV,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAC5B,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,OAAO,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;wBACjE,MAAM;oBAER,KAAK,SAAS,CAAC,CAAC,CAAC;wBACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;wBAC9C,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,OAAO,UAAU,EAAE;4BACtD,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,eAAe;4BAC/C,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,EAAE;4BAC5C,kEAAkE;4BAClE,kEAAkE;4BAClE,2DAA2D;4BAC3D,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC9E,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAClF,EAAE,KAAK,CAAC,CAAC;wBACV,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAC7D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;wBAC3D,kEAAkE;wBAClE,iEAAiE;wBACjE,8DAA8D;wBAC9D,MAAM,oBAAoB,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;wBACtD,IAAI,oBAAoB,EAAE,CAAC;4BACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;4BAC7D,MAAM,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,GAAqB,EAAE,CAAC,MAAM,CAAC,cAAc,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;4BAClH,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;wBACnC,CAAC;wBACD,GAAG,CAAC,6BAA6B,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC9E,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;wBACpB,iEAAiE;wBACjE,8DAA8D;wBAC9D,kEAAkE;wBAClE,oDAAoD;wBACpD,kEAAkE;wBAClE,+DAA+D;wBAC/D,4DAA4D;wBAC5D,+DAA+D;wBAC/D,6BAA6B;wBAC7B,MAAM,YAAY,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;wBAC1C,IAAI,YAAY,EAAE,CAAC;4BACjB,MAAM,aAAa,GAAG,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,CAAC;4BACnD,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;4BAClC,GAAG,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;4BAC3E,IAAI,CAAC,oBAAoB;gCAAE,mBAAmB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAChG,CAAC;wBACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;wBAChF,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBAC5B,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;wBACvC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC,CAAC;wBAC1E,GAAG,CAAC,MAAM,CAAC,4BAA4B,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;wBACtE,MAAM,GAAG;4BACP,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,MAAM,CAAC,EAAE;4BAClB,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,IAAI;4BACjC,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,CAAC;4BAClD,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC;yBACvC,CAAC;wBACF,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAClD,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,OAAO,QAAQ,EAAE;4BACpD,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;4BAChD,IAAI,EAAE,aAAa,CAAC,IAAI;4BACxB,IAAI,EAAE,aAAa,CAAC,IAAI;4BACxB,GAAG,CAAC,aAAa,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrF,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/E,GAAG,CAAC,aAAa,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACxF,GAAG,CAAC,aAAa,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACxF,GAAG,CAAC,aAAa,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC5F,EAAE,KAAK,CAAC,CAAC;wBACV,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAClD,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;wBAC1C,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS;4BAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;wBACxF,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;wBACtD,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;wBAChE,MAAM,GAAG,MAAM,oBAAoB,CACjC,aAAa,EACb,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,OAAO,UAAU,WAAW,EAAE,EAAE,KAAK,CAAC,EACjE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,OAAO,YAAY,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,CAClF,CAAC;wBACF,MAAM;oBACR,CAAC;oBAED,KAAK,WAAW,CAAC,CAAC,CAAC;wBACjB,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAChD,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,OAAO,YAAY,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;wBAC1G,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;wBACpD,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,OAAO,QAAQ,EAAE;4BACpD,KAAK,EAAE,cAAc,CAAC,KAAK;4BAC3B,WAAW,EAAE,cAAc,CAAC,WAAW;4BACvC,GAAG,CAAC,cAAc,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC5G,GAAG,CAAC,cAAc,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACpG,EAAE,KAAK,CAAC,CAAC;wBACV,MAAM;oBACR,CAAC;oBAED,KAAK,WAAW,CAAC,CAAC,CAAC;wBACjB,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAChD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;wBACzC,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS;4BAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;wBACrF,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS;4BAAE,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;wBACvF,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;wBACpD,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS;4BAAE,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;wBACvG,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,OAAO,UAAU,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;wBAC1E,MAAM;oBACR,CAAC;oBAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;wBAC5B,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;wBAC9D,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,OAAO,UAAU,gBAAgB,CAAC,MAAM,EAAE,EAAE;4BAChF,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;yBACpC,EAAE,KAAK,CAAC,CAAC;wBACV,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;wBACxD,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,OAAO,UAAU,gBAAgB,CAAC,MAAM,WAAW,EAAE;4BACxF,OAAO,EAAE,gBAAgB,CAAC,OAAO;4BACjC,GAAG,CAAC,gBAAgB,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAClF,GAAG,CAAC,gBAAgB,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC9G,EAAE,KAAK,CAAC,CAAC;wBACV,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC;oBACrB,KAAK,cAAc;wBACjB,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;wBACxF,MAAM;oBAER;wBACE,aAAa,CAAC;4BACZ,KAAK,EAAE,WAAW;4BAClB,IAAI,EAAE,IAAI;4BACV,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC;4BACjC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;4BACrC,MAAM,EAAE,OAAO;4BACf,KAAK,EAAE,iBAAiB,IAAI,EAAE;yBAC/B,CAAC,CAAC;wBACH,OAAO,YAAY,CAAC;gBACtB,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;YAEF,IAAI,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC/D,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,6DAA6D;gBAC7D,gEAAgE;gBAChE,6DAA6D;gBAC7D,GAAG,CAAC,MAAM,CAAC,uEAAuE,CAAC,CAAC;gBACpF,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACzB,+DAA+D;gBAC/D,kEAAkE;gBAClE,iEAAiE;gBACjE,gEAAgE;gBAChE,oEAAoE;gBACpE,mEAAmE;gBACnE,mEAAmE;gBACnE,oEAAoE;gBACpE,qEAAqE;gBACrE,2DAA2D;gBAC3D,GAAG,CAAC,eAAe,EAAE,CAAC;gBACtB,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YACrC,aAAa,CAAC;gBACZ,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC/D,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;gBACrC,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC3F,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,aAAa,CAAC;gBACZ,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,SAAS;gBACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;gBACrC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,OAAO;aACf,CAAC,CAAC;YACH,qEAAqE;YACrE,2DAA2D;YAC3D,IAAI,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oBAC1C,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
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`, {
|
|
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();
|
package/dist/refresh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../src/refresh.ts"],"names":[],"mappings":"
|
|
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);
|
|
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. Every other error passes through
|
|
24
|
+
* unchanged.
|
|
25
|
+
*/
|
|
26
|
+
export declare function toAisRequestError(err: unknown, path: string, timeoutMs: number): unknown;
|
|
@@ -0,0 +1,49 @@
|
|
|
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) {
|
|
33
|
+
super(`AIS request to ${path} timed out after ${timeoutMs}ms`);
|
|
34
|
+
this.name = 'AisRequestTimeoutError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Replace a raw timeout abort with a clear, path- and duration-specific
|
|
39
|
+
* error so it surfaces as an actionable MCP tool error (`isError`) instead of
|
|
40
|
+
* an opaque "operation was aborted" message. Every other error passes through
|
|
41
|
+
* unchanged.
|
|
42
|
+
*/
|
|
43
|
+
export function toAisRequestError(err, path, timeoutMs) {
|
|
44
|
+
if (isAisRequestTimeout(err)) {
|
|
45
|
+
return new AisRequestTimeoutError(path, timeoutMs);
|
|
46
|
+
}
|
|
47
|
+
return err;
|
|
48
|
+
}
|
|
49
|
+
//# 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;QACzC,KAAK,CAAC,kBAAkB,IAAI,oBAAoB,SAAS,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAE,IAAY,EAAE,SAAiB;IAC7E,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrD,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 {};
|