aismemory 0.7.1 → 0.7.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.
- package/README.md +121 -2
- package/dist/__tests__/agent-key-mode-e2e.test.js +78 -0
- package/dist/__tests__/agent-key-mode-e2e.test.js.map +1 -1
- package/dist/__tests__/agent-key-mode.test.js +123 -0
- package/dist/__tests__/agent-key-mode.test.js.map +1 -1
- package/dist/__tests__/agent-load-persistence.test.js +25 -2
- package/dist/__tests__/agent-load-persistence.test.js.map +1 -1
- package/dist/__tests__/agent-preference.test.js +8 -0
- package/dist/__tests__/agent-preference.test.js.map +1 -1
- package/dist/__tests__/agentmemory.test.d.ts +1 -0
- package/dist/__tests__/agentmemory.test.js +73 -0
- package/dist/__tests__/agentmemory.test.js.map +1 -0
- package/dist/__tests__/ais-http.test.d.ts +1 -0
- package/dist/__tests__/ais-http.test.js +139 -0
- package/dist/__tests__/ais-http.test.js.map +1 -0
- package/dist/__tests__/auto-enroll-key.test.js +28 -4
- package/dist/__tests__/auto-enroll-key.test.js.map +1 -1
- package/dist/__tests__/beacon-contract.test.d.ts +1 -0
- package/dist/__tests__/beacon-contract.test.js +106 -0
- package/dist/__tests__/beacon-contract.test.js.map +1 -0
- package/dist/__tests__/credential-isolation.test.d.ts +1 -0
- package/dist/__tests__/credential-isolation.test.js +61 -0
- package/dist/__tests__/credential-isolation.test.js.map +1 -0
- package/dist/__tests__/credential-resolution.test.d.ts +1 -0
- package/dist/__tests__/credential-resolution.test.js +141 -0
- package/dist/__tests__/credential-resolution.test.js.map +1 -0
- package/dist/__tests__/delegated-read-args.test.d.ts +9 -0
- package/dist/__tests__/delegated-read-args.test.js +80 -0
- package/dist/__tests__/delegated-read-args.test.js.map +1 -0
- package/dist/__tests__/doctor.test.js +250 -9
- package/dist/__tests__/doctor.test.js.map +1 -1
- package/dist/__tests__/ender-receipt-auth.test.d.ts +1 -0
- package/dist/__tests__/ender-receipt-auth.test.js +26 -0
- package/dist/__tests__/ender-receipt-auth.test.js.map +1 -0
- package/dist/__tests__/fixtures/beacon-contract.d.ts +66 -0
- package/dist/__tests__/fixtures/beacon-contract.js +72 -0
- package/dist/__tests__/fixtures/beacon-contract.js.map +1 -0
- package/dist/__tests__/inbox-client.test.d.ts +1 -0
- package/dist/__tests__/inbox-client.test.js +108 -0
- package/dist/__tests__/inbox-client.test.js.map +1 -0
- package/dist/__tests__/key-auth.test.js +7 -1
- package/dist/__tests__/key-auth.test.js.map +1 -1
- package/dist/__tests__/list-all-agents.test.js +2 -0
- package/dist/__tests__/list-all-agents.test.js.map +1 -1
- package/dist/__tests__/lost-agent.test.d.ts +1 -0
- package/dist/__tests__/lost-agent.test.js +108 -0
- package/dist/__tests__/lost-agent.test.js.map +1 -0
- package/dist/__tests__/memory-write-failure.test.js +5 -1
- package/dist/__tests__/memory-write-failure.test.js.map +1 -1
- package/dist/__tests__/no-registered-keys-disk-bearer-fallback.test.d.ts +1 -0
- package/dist/__tests__/no-registered-keys-disk-bearer-fallback.test.js +207 -0
- package/dist/__tests__/no-registered-keys-disk-bearer-fallback.test.js.map +1 -0
- package/dist/__tests__/provisional-register-mcp-remember.test.d.ts +1 -0
- package/dist/__tests__/provisional-register-mcp-remember.test.js +196 -0
- package/dist/__tests__/provisional-register-mcp-remember.test.js.map +1 -0
- package/dist/__tests__/readme-tools-parity.test.d.ts +1 -0
- package/dist/__tests__/readme-tools-parity.test.js +64 -0
- package/dist/__tests__/readme-tools-parity.test.js.map +1 -0
- package/dist/__tests__/reconnect-survival-e2e.test.js +63 -1
- package/dist/__tests__/reconnect-survival-e2e.test.js.map +1 -1
- package/dist/__tests__/token-manager.test.js +20 -1
- package/dist/__tests__/token-manager.test.js.map +1 -1
- package/dist/__tests__/tool-args.test.js +196 -1
- package/dist/__tests__/tool-args.test.js.map +1 -1
- package/dist/__tests__/workspace-key-mode.test.d.ts +1 -0
- package/dist/__tests__/workspace-key-mode.test.js +264 -0
- package/dist/__tests__/workspace-key-mode.test.js.map +1 -0
- package/dist/agent-key-mode.d.ts +4 -2
- package/dist/agent-key-mode.js +106 -11
- package/dist/agent-key-mode.js.map +1 -1
- package/dist/ais-http.d.ts +7 -0
- package/dist/ais-http.js +137 -0
- package/dist/ais-http.js.map +1 -0
- package/dist/auth-staleness.d.ts +2 -0
- package/dist/auth-staleness.js +5 -0
- package/dist/auth-staleness.js.map +1 -1
- package/dist/auto-handoff.d.ts +1 -1
- package/dist/auto-handoff.js +5 -3
- package/dist/auto-handoff.js.map +1 -1
- package/dist/cli/doctor.d.ts +4 -0
- package/dist/cli/doctor.js +120 -8
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/enable-key-auth.js +4 -5
- package/dist/cli/enable-key-auth.js.map +1 -1
- package/dist/cli/orientation.d.ts +15 -0
- package/dist/cli/orientation.js +89 -0
- package/dist/cli/orientation.js.map +1 -0
- package/dist/harness-identity.d.ts +17 -0
- package/dist/harness-identity.js +105 -0
- package/dist/harness-identity.js.map +1 -0
- package/dist/hydration.d.ts +1 -1
- package/dist/hydration.js +3 -2
- package/dist/hydration.js.map +1 -1
- package/dist/inbox-client.d.ts +9 -0
- package/dist/inbox-client.js +74 -0
- package/dist/inbox-client.js.map +1 -0
- package/dist/index.js +498 -109
- package/dist/index.js.map +1 -1
- package/dist/key-auth.js +16 -10
- package/dist/key-auth.js.map +1 -1
- package/dist/oauth-credentials.d.ts +11 -0
- package/dist/oauth-credentials.js +31 -3
- package/dist/oauth-credentials.js.map +1 -1
- package/dist/token-manager.d.ts +6 -0
- package/dist/token-manager.js +16 -0
- package/dist/token-manager.js.map +1 -1
- package/dist/tool-args.d.ts +98 -0
- package/dist/tool-args.js +155 -0
- package/dist/tool-args.js.map +1 -1
- package/dist/workspace-key-mode.d.ts +40 -0
- package/dist/workspace-key-mode.js +258 -0
- package/dist/workspace-key-mode.js.map +1 -0
- package/package.json +1 -1
package/dist/tool-args.js
CHANGED
|
@@ -16,7 +16,18 @@ export const rememberArgsSchema = z.object({
|
|
|
16
16
|
type: memoryTypeSchema.optional().default('context'),
|
|
17
17
|
importance: z.number().min(0).max(1).optional().default(0.5),
|
|
18
18
|
});
|
|
19
|
+
/**
|
|
20
|
+
* Optional delegated-read principal (CORBOT-3785D10D).
|
|
21
|
+
*
|
|
22
|
+
* Names ANOTHER agent whose memories should be read. The server refuses with
|
|
23
|
+
* 403 unless that agent's owner has granted this agent the `memory:read` scope
|
|
24
|
+
* and both share a tenant. Read-only — never accepted on a write tool.
|
|
25
|
+
*/
|
|
26
|
+
const principalAgentIdSchema = z
|
|
27
|
+
.string()
|
|
28
|
+
.regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, 'principalAgentId must be a valid agent UUID');
|
|
19
29
|
export const recallArgsSchema = z.object({
|
|
30
|
+
principalAgentId: principalAgentIdSchema.optional(),
|
|
20
31
|
query: z
|
|
21
32
|
.string({ message: 'query is required and must be a string' })
|
|
22
33
|
.min(1, 'query is required and must be a string')
|
|
@@ -42,9 +53,129 @@ export const agentLoadArgsSchema = z.object({
|
|
|
42
53
|
.trim()
|
|
43
54
|
.min(1, 'agent_load: query is required')
|
|
44
55
|
.max(500, 'agent_load: query exceeds maximum length of 500 characters'),
|
|
56
|
+
memoriesLimit: z.number().int().min(1).max(50).optional(),
|
|
45
57
|
});
|
|
46
58
|
/** Tools with no parameters — reject unexpected keys. */
|
|
47
59
|
export const emptyArgsSchema = z.object({}).strict();
|
|
60
|
+
/** full_context: optional delegated-read principal + configurable memory limit (CORBOT-45FE6ECE). */
|
|
61
|
+
export const fullContextArgsSchema = z
|
|
62
|
+
.object({
|
|
63
|
+
principalAgentId: principalAgentIdSchema.optional(),
|
|
64
|
+
memoriesLimit: z.number().int().min(1).max(50).optional(),
|
|
65
|
+
/** View mode: full (default), lean (bounded), bootstrap (cross-harness session start). */
|
|
66
|
+
view: z.enum(['full', 'lean', 'bootstrap']).optional(),
|
|
67
|
+
})
|
|
68
|
+
.strict();
|
|
69
|
+
// ── Agent inbox (CORBOT-7115B8AE) ───────────────────────────────────────
|
|
70
|
+
// Mirrors packages/agent-identity-service/src/core/inbox/types.ts and
|
|
71
|
+
// mcp/handlers/agent-inbox-handlers.ts — this package cannot import from
|
|
72
|
+
// agent-identity-service (it ships standalone to npm), so the limits and
|
|
73
|
+
// arg shapes are duplicated here on purpose. Keep them in sync by hand if
|
|
74
|
+
// the server side ever changes them.
|
|
75
|
+
const AGENT_MESSAGE_KINDS = ['task', 'update', 'question', 'decision', 'handoff', 'ack'];
|
|
76
|
+
export const INBOX_MAX_BODY_CHARS = 8_000;
|
|
77
|
+
export const INBOX_MAX_TASK_ID_CHARS = 128;
|
|
78
|
+
export const INBOX_MIN_TTL_SECONDS = 300;
|
|
79
|
+
export const INBOX_MAX_TTL_SECONDS = 604_800;
|
|
80
|
+
export const INBOX_DEFAULT_TTL_SECONDS = 7 * 24 * 60 * 60;
|
|
81
|
+
export const INBOX_DEFAULT_PAGE_SIZE = 20;
|
|
82
|
+
export const INBOX_MAX_PAGE_SIZE = 100;
|
|
83
|
+
const inboxUuidSchema = z
|
|
84
|
+
.string()
|
|
85
|
+
.regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, 'must be a valid uuid');
|
|
86
|
+
export const inboxSendArgsSchema = z
|
|
87
|
+
.object({
|
|
88
|
+
recipientAgentId: inboxUuidSchema,
|
|
89
|
+
kind: z.enum(AGENT_MESSAGE_KINDS),
|
|
90
|
+
body: z
|
|
91
|
+
.string({ message: 'body is required' })
|
|
92
|
+
.min(1, 'body is required')
|
|
93
|
+
.max(INBOX_MAX_BODY_CHARS, `body exceeds ${INBOX_MAX_BODY_CHARS} characters`),
|
|
94
|
+
threadId: inboxUuidSchema.optional(),
|
|
95
|
+
taskId: z.string().min(1).max(INBOX_MAX_TASK_ID_CHARS).optional(),
|
|
96
|
+
inReplyTo: inboxUuidSchema.optional(),
|
|
97
|
+
messageId: inboxUuidSchema.optional(),
|
|
98
|
+
ttlSeconds: z.number().int().min(INBOX_MIN_TTL_SECONDS).max(INBOX_MAX_TTL_SECONDS).optional(),
|
|
99
|
+
})
|
|
100
|
+
.strict();
|
|
101
|
+
export const inboxReadArgsSchema = z
|
|
102
|
+
.object({
|
|
103
|
+
cursor: z.string().min(1).max(512).optional(),
|
|
104
|
+
limit: z.number().int().min(1).max(INBOX_MAX_PAGE_SIZE).optional().default(INBOX_DEFAULT_PAGE_SIZE),
|
|
105
|
+
// True by default, unlike the REST default of false — a harness reading
|
|
106
|
+
// its inbox wants what's new, not the whole retained stream (matches the
|
|
107
|
+
// MCP tool contract in agent-identity-service's inbox-tools.ts).
|
|
108
|
+
unreadOnly: z.boolean().optional().default(true),
|
|
109
|
+
ack: z.boolean().optional().default(false),
|
|
110
|
+
})
|
|
111
|
+
.strict();
|
|
112
|
+
// ── Goals (CORBOT-721e9a8b, L4 one-client-surface) ──────────────────────
|
|
113
|
+
// Mirrors packages/agent-identity-service/src/api/routes/goals.ts and
|
|
114
|
+
// core/state/IGoalService.ts — this package cannot import from
|
|
115
|
+
// agent-identity-service (it ships standalone to npm), so the shapes are
|
|
116
|
+
// duplicated here on purpose, same convention as the inbox tools above.
|
|
117
|
+
const GOAL_STATUSES = ['draft', 'active', 'completing', 'completed', 'failed', 'cancelled'];
|
|
118
|
+
export const GOAL_MAX_TITLE_CHARS = 500;
|
|
119
|
+
export const GOAL_MAX_DESCRIPTION_CHARS = 10_000;
|
|
120
|
+
export const GOAL_MAX_CRITERION_CHARS = 1_000;
|
|
121
|
+
export const GOAL_MAX_CRITERIA_ITEMS = 50;
|
|
122
|
+
export const GOAL_DEFAULT_PAGE_SIZE = 20;
|
|
123
|
+
export const GOAL_MAX_PAGE_SIZE = 100;
|
|
124
|
+
const goalUuidSchema = z
|
|
125
|
+
.string()
|
|
126
|
+
.regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, 'must be a valid uuid');
|
|
127
|
+
export const goalCreateArgsSchema = z
|
|
128
|
+
.object({
|
|
129
|
+
title: z
|
|
130
|
+
.string({ message: 'title is required' })
|
|
131
|
+
.min(1, 'title is required')
|
|
132
|
+
.max(GOAL_MAX_TITLE_CHARS, `title exceeds ${GOAL_MAX_TITLE_CHARS} characters`),
|
|
133
|
+
description: z
|
|
134
|
+
.string({ message: 'description is required' })
|
|
135
|
+
.min(1, 'description is required')
|
|
136
|
+
.max(GOAL_MAX_DESCRIPTION_CHARS, `description exceeds ${GOAL_MAX_DESCRIPTION_CHARS} characters`),
|
|
137
|
+
successCriteria: z
|
|
138
|
+
.array(z.string().min(1).max(GOAL_MAX_CRITERION_CHARS))
|
|
139
|
+
.max(GOAL_MAX_CRITERIA_ITEMS, `successCriteria exceeds ${GOAL_MAX_CRITERIA_ITEMS} items`)
|
|
140
|
+
.optional(),
|
|
141
|
+
parentGoalId: goalUuidSchema.optional(),
|
|
142
|
+
})
|
|
143
|
+
.strict();
|
|
144
|
+
export const goalListArgsSchema = z
|
|
145
|
+
.object({
|
|
146
|
+
status: z.enum(GOAL_STATUSES).optional(),
|
|
147
|
+
page: z.number().int().min(1).optional(),
|
|
148
|
+
limit: z.number().int().min(1).max(GOAL_MAX_PAGE_SIZE).optional().default(GOAL_DEFAULT_PAGE_SIZE),
|
|
149
|
+
parentGoalId: goalUuidSchema.optional(),
|
|
150
|
+
})
|
|
151
|
+
.strict();
|
|
152
|
+
export const goalUpdateProgressArgsSchema = z
|
|
153
|
+
.object({
|
|
154
|
+
goalId: goalUuidSchema,
|
|
155
|
+
progress: z.number().min(0).max(100),
|
|
156
|
+
})
|
|
157
|
+
.strict();
|
|
158
|
+
export const goalCompleteArgsSchema = z
|
|
159
|
+
.object({
|
|
160
|
+
goalId: goalUuidSchema,
|
|
161
|
+
success: z.boolean({ message: 'success is required and must be a boolean' }),
|
|
162
|
+
notes: z.string().max(GOAL_MAX_DESCRIPTION_CHARS, `notes exceeds ${GOAL_MAX_DESCRIPTION_CHARS} characters`).optional(),
|
|
163
|
+
lessonsLearned: z
|
|
164
|
+
.array(z.string().min(1).max(GOAL_MAX_CRITERION_CHARS))
|
|
165
|
+
.max(GOAL_MAX_CRITERIA_ITEMS, `lessonsLearned exceeds ${GOAL_MAX_CRITERIA_ITEMS} items`)
|
|
166
|
+
.optional(),
|
|
167
|
+
})
|
|
168
|
+
.strict();
|
|
169
|
+
/** Mirrors AIS core/inbox/types.ts MAX_ACK_IDS — a page never exceeds it. */
|
|
170
|
+
export const INBOX_MAX_ACK_IDS = 100;
|
|
171
|
+
export const inboxAckArgsSchema = z
|
|
172
|
+
.object({
|
|
173
|
+
messageIds: z
|
|
174
|
+
.array(inboxUuidSchema)
|
|
175
|
+
.min(1, 'messageIds must contain at least one id')
|
|
176
|
+
.max(INBOX_MAX_ACK_IDS, `messageIds exceeds ${INBOX_MAX_ACK_IDS} items`),
|
|
177
|
+
})
|
|
178
|
+
.strict();
|
|
48
179
|
export function formatValidationError(error) {
|
|
49
180
|
return error.issues
|
|
50
181
|
.map((issue) => {
|
|
@@ -75,4 +206,28 @@ export function parseAgentLoadArgs(raw) {
|
|
|
75
206
|
export function parseEmptyToolArgs(raw) {
|
|
76
207
|
return parseOrThrow(emptyArgsSchema, raw);
|
|
77
208
|
}
|
|
209
|
+
export function parseFullContextArgs(raw) {
|
|
210
|
+
return parseOrThrow(fullContextArgsSchema, raw);
|
|
211
|
+
}
|
|
212
|
+
export function parseInboxSendArgs(raw) {
|
|
213
|
+
return parseOrThrow(inboxSendArgsSchema, raw);
|
|
214
|
+
}
|
|
215
|
+
export function parseInboxReadArgs(raw) {
|
|
216
|
+
return parseOrThrow(inboxReadArgsSchema, raw);
|
|
217
|
+
}
|
|
218
|
+
export function parseGoalCreateArgs(raw) {
|
|
219
|
+
return parseOrThrow(goalCreateArgsSchema, raw);
|
|
220
|
+
}
|
|
221
|
+
export function parseGoalListArgs(raw) {
|
|
222
|
+
return parseOrThrow(goalListArgsSchema, raw);
|
|
223
|
+
}
|
|
224
|
+
export function parseGoalUpdateProgressArgs(raw) {
|
|
225
|
+
return parseOrThrow(goalUpdateProgressArgsSchema, raw);
|
|
226
|
+
}
|
|
227
|
+
export function parseGoalCompleteArgs(raw) {
|
|
228
|
+
return parseOrThrow(goalCompleteArgsSchema, raw);
|
|
229
|
+
}
|
|
230
|
+
export function parseInboxAckArgs(raw) {
|
|
231
|
+
return parseOrThrow(inboxAckArgsSchema, raw);
|
|
232
|
+
}
|
|
78
233
|
//# sourceMappingURL=tool-args.js.map
|
package/dist/tool-args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-args.js","sourceRoot":"","sources":["../src/tool-args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2EAA2E;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEpD,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC;SACP,MAAM,CAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;SAC/D,GAAG,CAAC,CAAC,EAAE,0CAA0C,CAAC;SAClD,GAAG,CACF,yBAAyB,EACzB,qCAAqC,yBAAyB,QAAQ,CACvE;IACH,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;SAC7D,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;SAChD,GAAG,CACF,yBAAyB,EACzB,mCAAmC,yBAAyB,QAAQ,CACrE;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IAC9D,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CACF,yBAAyB,EACzB,qCAAqC,yBAAyB,QAAQ,CACvE;SACA,QAAQ,EAAE;IACb,YAAY,EAAE,CAAC;SACZ,KAAK,CACJ,CAAC;SACE,MAAM,EAAE;SACR,GAAG,CACF,yBAAyB,EACzB,+CAA+C,yBAAyB,QAAQ,CACjF,CACJ;SACA,GAAG,CAAC,GAAG,EAAE,2CAA2C,CAAC;SACrD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;SACpD,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;SACvC,GAAG,CAAC,GAAG,EAAE,4DAA4D,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-args.js","sourceRoot":"","sources":["../src/tool-args.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface WorkspaceKeyConfig {
|
|
2
|
+
workspaceKey: string;
|
|
3
|
+
agentId: string;
|
|
4
|
+
}
|
|
5
|
+
/** Thrown by loadWorkspaceKeyConfig when AIS_WORKSPACE_KEY is set without AIS_AGENT_ID. */
|
|
6
|
+
export declare class WorkspaceKeyConfigError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when agent_load probes a target agent's memory endpoint and
|
|
11
|
+
* receives a 403 AGENT_NOT_GRANTED response, meaning the workspace key
|
|
12
|
+
* has no grant for that agent.
|
|
13
|
+
*/
|
|
14
|
+
export declare class AgentNotGrantedError extends Error {
|
|
15
|
+
readonly targetAgentId: string;
|
|
16
|
+
constructor(targetAgentId: string);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Read workspace-key config from the environment.
|
|
20
|
+
*
|
|
21
|
+
* Returns null when AIS_WORKSPACE_KEY is unset -- the caller falls through to
|
|
22
|
+
* the agent-API-key / device-flow path. Throws WorkspaceKeyConfigError when
|
|
23
|
+
* the key is set but AIS_AGENT_ID is missing; the caller must print the
|
|
24
|
+
* message to stderr and exit nonzero, and must NEVER fall back to the device
|
|
25
|
+
* flow or create a provisional agent.
|
|
26
|
+
*/
|
|
27
|
+
export declare function loadWorkspaceKeyConfig(env?: Record<string, string | undefined>): WorkspaceKeyConfig | null;
|
|
28
|
+
type FetchImpl = typeof globalThis.fetch;
|
|
29
|
+
export declare function wksKeyPost(aisUrl: string, path: string, workspaceKey: string, body: unknown, fetchImpl?: FetchImpl): Promise<unknown>;
|
|
30
|
+
export declare function wksKeyGet(aisUrl: string, path: string, workspaceKey: string, fetchImpl?: FetchImpl): Promise<unknown>;
|
|
31
|
+
export declare function wksKeyPatch(aisUrl: string, path: string, workspaceKey: string, body: unknown, fetchImpl?: FetchImpl): Promise<unknown>;
|
|
32
|
+
/** Sentinel returned for a tool name this dispatcher doesn't recognize. */
|
|
33
|
+
export declare const UNKNOWN_TOOL_WORKSPACE_KEY_MODE: unique symbol;
|
|
34
|
+
/** Result returned by agent_load on successful switch. */
|
|
35
|
+
export interface AgentSwitchResult {
|
|
36
|
+
switched: true;
|
|
37
|
+
agentId: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function dispatchToolWorkspaceKeyMode(aisUrl: string, config: WorkspaceKeyConfig, name: string, rawArgs: unknown, fetchImpl?: FetchImpl): Promise<unknown | typeof UNKNOWN_TOOL_WORKSPACE_KEY_MODE>;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace key auth mode for the aismemory MCP client (CORBOT-3103ED88).
|
|
3
|
+
*
|
|
4
|
+
* Multi-agent workspace auth: a scoped `x-workspace-key` credential
|
|
5
|
+
* (AIS_WORKSPACE_KEY, prefix `ais_wk_`) that can access multiple agents
|
|
6
|
+
* within a workspace, unlike the single-agent `x-agent-api-key` mode.
|
|
7
|
+
* No device flow, no OAuth credential file, no DID key-auth.
|
|
8
|
+
*
|
|
9
|
+
* Server-side contract: the key authenticates ONLY
|
|
10
|
+
* `/v1/agents/:agentId/{memory,goals,dream,full-context}`, but unlike
|
|
11
|
+
* agent API keys, a workspace key may be granted access to multiple
|
|
12
|
+
* agents. `agent_load` is supported: it switches the active agent by
|
|
13
|
+
* probing the new agent's memory endpoint; a 403 AGENT_NOT_GRANTED
|
|
14
|
+
* means the workspace key has no grant for that agent.
|
|
15
|
+
*
|
|
16
|
+
* Precedence: workspace key -> agent API key -> DID/device flow.
|
|
17
|
+
*/
|
|
18
|
+
import { AisHttpError } from './ais-http-error.js';
|
|
19
|
+
import { emitTelemetry } from './telemetry.js';
|
|
20
|
+
import { OutOfScopeToolError } from './agent-key-mode.js';
|
|
21
|
+
import { parseEmptyToolArgs, parseRecallArgs, parseFullContextArgs, parseRememberArgs, parseAgentLoadArgs, parseGoalCreateArgs, parseGoalListArgs, parseGoalUpdateProgressArgs, parseGoalCompleteArgs, } from './tool-args.js';
|
|
22
|
+
/** Thrown by loadWorkspaceKeyConfig when AIS_WORKSPACE_KEY is set without AIS_AGENT_ID. */
|
|
23
|
+
export class WorkspaceKeyConfigError extends Error {
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = 'WorkspaceKeyConfigError';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Thrown when agent_load probes a target agent's memory endpoint and
|
|
31
|
+
* receives a 403 AGENT_NOT_GRANTED response, meaning the workspace key
|
|
32
|
+
* has no grant for that agent.
|
|
33
|
+
*/
|
|
34
|
+
export class AgentNotGrantedError extends Error {
|
|
35
|
+
targetAgentId;
|
|
36
|
+
constructor(targetAgentId) {
|
|
37
|
+
super(`Workspace key does not have a grant for agent "${targetAgentId}". ` +
|
|
38
|
+
'Ask the workspace owner to grant this key access to the target agent.');
|
|
39
|
+
this.name = 'AgentNotGrantedError';
|
|
40
|
+
this.targetAgentId = targetAgentId;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Read workspace-key config from the environment.
|
|
45
|
+
*
|
|
46
|
+
* Returns null when AIS_WORKSPACE_KEY is unset -- the caller falls through to
|
|
47
|
+
* the agent-API-key / device-flow path. Throws WorkspaceKeyConfigError when
|
|
48
|
+
* the key is set but AIS_AGENT_ID is missing; the caller must print the
|
|
49
|
+
* message to stderr and exit nonzero, and must NEVER fall back to the device
|
|
50
|
+
* flow or create a provisional agent.
|
|
51
|
+
*/
|
|
52
|
+
export function loadWorkspaceKeyConfig(env = process.env) {
|
|
53
|
+
const keyName = env['AIS_WORKSPACE_KEY'] !== undefined ? 'AIS_WORKSPACE_KEY' : 'AIS_API_KEY';
|
|
54
|
+
const rawKey = env[keyName];
|
|
55
|
+
// The generic alias may hold a workspace or agent key; other values are
|
|
56
|
+
// validated by loadAgentApiKeyConfig, never treated as service credentials.
|
|
57
|
+
if (keyName === 'AIS_API_KEY' && !rawKey?.trim().startsWith('ais_wk_'))
|
|
58
|
+
return null;
|
|
59
|
+
if (rawKey === undefined)
|
|
60
|
+
return null;
|
|
61
|
+
const workspaceKey = rawKey.trim();
|
|
62
|
+
if (workspaceKey === '') {
|
|
63
|
+
throw new WorkspaceKeyConfigError(`${keyName} is set but empty (or whitespace-only).\n` +
|
|
64
|
+
'Refusing to start: silently falling back to the device flow could ' +
|
|
65
|
+
'create a duplicate provisional agent.\n' +
|
|
66
|
+
'Unset the variable to use the device flow, or set a real ais_wk_ key.');
|
|
67
|
+
}
|
|
68
|
+
if (!workspaceKey.startsWith('ais_wk_')) {
|
|
69
|
+
throw new WorkspaceKeyConfigError(`${keyName} does not look like a workspace key -- expected the ` +
|
|
70
|
+
'ais_wk_ prefix. Agent API keys (ais_ak_) go in AIS_AGENT_API_KEY; ' +
|
|
71
|
+
'service keys and JWTs do not work here.');
|
|
72
|
+
}
|
|
73
|
+
const agentId = env['AIS_AGENT_ID']?.trim();
|
|
74
|
+
if (!agentId) {
|
|
75
|
+
throw new WorkspaceKeyConfigError(`${keyName} is set but AIS_AGENT_ID is missing.\n` +
|
|
76
|
+
'Workspace keys need a default agent -- set AIS_AGENT_ID to the id ' +
|
|
77
|
+
'of the agent this session should start with (agent_load can switch later).\n' +
|
|
78
|
+
'Refusing to start: falling back to the device flow or creating a new ' +
|
|
79
|
+
'provisional agent would silently create a duplicate agent.');
|
|
80
|
+
}
|
|
81
|
+
return { workspaceKey, agentId };
|
|
82
|
+
}
|
|
83
|
+
async function readJson(res) {
|
|
84
|
+
return res.json().catch(() => null);
|
|
85
|
+
}
|
|
86
|
+
export async function wksKeyPost(aisUrl, path, workspaceKey, body, fetchImpl = globalThis.fetch) {
|
|
87
|
+
const headers = {
|
|
88
|
+
'Content-Type': 'application/json',
|
|
89
|
+
'x-workspace-key': workspaceKey,
|
|
90
|
+
};
|
|
91
|
+
let res;
|
|
92
|
+
try {
|
|
93
|
+
res = await fetchImpl(`${aisUrl}${path}`, { method: 'POST', headers, body: JSON.stringify(body) });
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
emitTelemetry({ event: 'ais.http.failure', path, error: err instanceof Error ? err.message : String(err) });
|
|
97
|
+
throw err;
|
|
98
|
+
}
|
|
99
|
+
const data = await readJson(res);
|
|
100
|
+
if (!res.ok) {
|
|
101
|
+
emitTelemetry({ event: 'ais.http.failure', path, httpStatus: res.status, error: `HTTP ${res.status}` });
|
|
102
|
+
throw new AisHttpError(res.status, path, data);
|
|
103
|
+
}
|
|
104
|
+
return data;
|
|
105
|
+
}
|
|
106
|
+
export async function wksKeyGet(aisUrl, path, workspaceKey, fetchImpl = globalThis.fetch) {
|
|
107
|
+
let res;
|
|
108
|
+
try {
|
|
109
|
+
res = await fetchImpl(`${aisUrl}${path}`, { headers: { 'x-workspace-key': workspaceKey } });
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
emitTelemetry({ event: 'ais.http.failure', path, error: err instanceof Error ? err.message : String(err) });
|
|
113
|
+
throw err;
|
|
114
|
+
}
|
|
115
|
+
const data = await readJson(res);
|
|
116
|
+
if (!res.ok) {
|
|
117
|
+
emitTelemetry({ event: 'ais.http.failure', path, httpStatus: res.status, error: `HTTP ${res.status}` });
|
|
118
|
+
throw new AisHttpError(res.status, path, data);
|
|
119
|
+
}
|
|
120
|
+
return data;
|
|
121
|
+
}
|
|
122
|
+
export async function wksKeyPatch(aisUrl, path, workspaceKey, body, fetchImpl = globalThis.fetch) {
|
|
123
|
+
const headers = {
|
|
124
|
+
'Content-Type': 'application/json',
|
|
125
|
+
'x-workspace-key': workspaceKey,
|
|
126
|
+
};
|
|
127
|
+
let res;
|
|
128
|
+
try {
|
|
129
|
+
res = await fetchImpl(`${aisUrl}${path}`, { method: 'PATCH', headers, body: JSON.stringify(body) });
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
emitTelemetry({ event: 'ais.http.failure', path, error: err instanceof Error ? err.message : String(err) });
|
|
133
|
+
throw err;
|
|
134
|
+
}
|
|
135
|
+
const data = await readJson(res);
|
|
136
|
+
if (!res.ok) {
|
|
137
|
+
emitTelemetry({ event: 'ais.http.failure', path, httpStatus: res.status, error: `HTTP ${res.status}` });
|
|
138
|
+
throw new AisHttpError(res.status, path, data);
|
|
139
|
+
}
|
|
140
|
+
return data;
|
|
141
|
+
}
|
|
142
|
+
// -- Scoped tool dispatch --------------------------------------------------
|
|
143
|
+
/** Sentinel returned for a tool name this dispatcher doesn't recognize. */
|
|
144
|
+
export const UNKNOWN_TOOL_WORKSPACE_KEY_MODE = Symbol('unknown-tool-workspace-key-mode');
|
|
145
|
+
export async function dispatchToolWorkspaceKeyMode(aisUrl, config, name, rawArgs, fetchImpl = globalThis.fetch) {
|
|
146
|
+
const { agentId, workspaceKey } = config;
|
|
147
|
+
switch (name) {
|
|
148
|
+
case 'remember': {
|
|
149
|
+
const args = parseRememberArgs(rawArgs);
|
|
150
|
+
return wksKeyPost(aisUrl, `/v1/agents/${agentId}/memory`, workspaceKey, {
|
|
151
|
+
content: args.content,
|
|
152
|
+
type: args.type,
|
|
153
|
+
importance: args.importance,
|
|
154
|
+
}, fetchImpl);
|
|
155
|
+
}
|
|
156
|
+
case 'recall': {
|
|
157
|
+
const args = parseRecallArgs(rawArgs);
|
|
158
|
+
const params = new URLSearchParams();
|
|
159
|
+
params.set('query', args.query);
|
|
160
|
+
if (args.limit !== undefined)
|
|
161
|
+
params.set('limit', String(args.limit));
|
|
162
|
+
if (args.type !== undefined)
|
|
163
|
+
params.set('types', args.type);
|
|
164
|
+
if (args.principalAgentId !== undefined) {
|
|
165
|
+
params.set('principalAgentId', args.principalAgentId);
|
|
166
|
+
}
|
|
167
|
+
return wksKeyGet(aisUrl, `/v1/agents/${agentId}/memory?${params}`, workspaceKey, fetchImpl);
|
|
168
|
+
}
|
|
169
|
+
case 'full_context': {
|
|
170
|
+
const fcArgs = parseFullContextArgs(rawArgs);
|
|
171
|
+
const fcParams = new URLSearchParams();
|
|
172
|
+
if (fcArgs.principalAgentId !== undefined)
|
|
173
|
+
fcParams.set('principalAgentId', fcArgs.principalAgentId);
|
|
174
|
+
if (fcArgs.memoriesLimit !== undefined)
|
|
175
|
+
fcParams.set('memoriesLimit', String(fcArgs.memoriesLimit));
|
|
176
|
+
const fcQs = fcParams.toString();
|
|
177
|
+
const fcPath = `/v1/agents/${agentId}/full-context${fcQs ? `?${fcQs}` : ''}`;
|
|
178
|
+
return wksKeyGet(aisUrl, fcPath, workspaceKey, fetchImpl);
|
|
179
|
+
}
|
|
180
|
+
case 'dream':
|
|
181
|
+
parseEmptyToolArgs(rawArgs);
|
|
182
|
+
return wksKeyPost(aisUrl, `/v1/agents/${agentId}/dream`, workspaceKey, {}, fetchImpl);
|
|
183
|
+
case 'whoami': {
|
|
184
|
+
parseEmptyToolArgs(rawArgs);
|
|
185
|
+
await wksKeyGet(aisUrl, `/v1/agents/${agentId}/memory?limit=1`, workspaceKey, fetchImpl);
|
|
186
|
+
return {
|
|
187
|
+
success: true,
|
|
188
|
+
data: {
|
|
189
|
+
agentId,
|
|
190
|
+
authMode: 'workspace-key',
|
|
191
|
+
keyValid: true,
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
case 'agent_load': {
|
|
196
|
+
const args = parseAgentLoadArgs(rawArgs);
|
|
197
|
+
const targetAgentId = args.query.trim();
|
|
198
|
+
// Probe the target agent's memory endpoint to verify the workspace key
|
|
199
|
+
// has a grant. If the server returns 403 AGENT_NOT_GRANTED, surface a
|
|
200
|
+
// typed error so the caller knows the switch failed due to scope.
|
|
201
|
+
try {
|
|
202
|
+
await wksKeyGet(aisUrl, `/v1/agents/${targetAgentId}/memory?limit=1`, workspaceKey, fetchImpl);
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
if (err instanceof AisHttpError && err.status === 403) {
|
|
206
|
+
throw new AgentNotGrantedError(targetAgentId);
|
|
207
|
+
}
|
|
208
|
+
throw err;
|
|
209
|
+
}
|
|
210
|
+
const result = { switched: true, agentId: targetAgentId };
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
case 'goal_create': {
|
|
214
|
+
const args = parseGoalCreateArgs(rawArgs);
|
|
215
|
+
return wksKeyPost(aisUrl, `/v1/agents/${agentId}/goals`, workspaceKey, {
|
|
216
|
+
title: args.title,
|
|
217
|
+
description: args.description,
|
|
218
|
+
...(args.successCriteria !== undefined ? { successCriteria: args.successCriteria } : {}),
|
|
219
|
+
...(args.parentGoalId !== undefined ? { parentGoalId: args.parentGoalId } : {}),
|
|
220
|
+
}, fetchImpl);
|
|
221
|
+
}
|
|
222
|
+
case 'goal_list': {
|
|
223
|
+
const args = parseGoalListArgs(rawArgs);
|
|
224
|
+
const params = new URLSearchParams();
|
|
225
|
+
if (args.status !== undefined)
|
|
226
|
+
params.set('status', args.status);
|
|
227
|
+
if (args.page !== undefined)
|
|
228
|
+
params.set('page', String(args.page));
|
|
229
|
+
params.set('limit', String(args.limit));
|
|
230
|
+
if (args.parentGoalId !== undefined)
|
|
231
|
+
params.set('parentGoalId', args.parentGoalId);
|
|
232
|
+
return wksKeyGet(aisUrl, `/v1/agents/${agentId}/goals?${params}`, workspaceKey, fetchImpl);
|
|
233
|
+
}
|
|
234
|
+
case 'goal_update_progress': {
|
|
235
|
+
const args = parseGoalUpdateProgressArgs(rawArgs);
|
|
236
|
+
return wksKeyPatch(aisUrl, `/v1/agents/${agentId}/goals/${args.goalId}`, workspaceKey, {
|
|
237
|
+
progress: args.progress,
|
|
238
|
+
}, fetchImpl);
|
|
239
|
+
}
|
|
240
|
+
case 'goal_complete': {
|
|
241
|
+
const args = parseGoalCompleteArgs(rawArgs);
|
|
242
|
+
return wksKeyPost(aisUrl, `/v1/agents/${agentId}/goals/${args.goalId}/complete`, workspaceKey, {
|
|
243
|
+
success: args.success,
|
|
244
|
+
...(args.notes !== undefined ? { notes: args.notes } : {}),
|
|
245
|
+
...(args.lessonsLearned !== undefined ? { lessonsLearned: args.lessonsLearned } : {}),
|
|
246
|
+
}, fetchImpl);
|
|
247
|
+
}
|
|
248
|
+
// inbox_ack is intentionally NOT handled here: workspace keys are scoped to
|
|
249
|
+
// memory, goals, dream, full-context only (no 'inbox' in the server-side
|
|
250
|
+
// allowlist — see workspaceKeyAuth.ts), matching inbox_send/inbox_read's
|
|
251
|
+
// existing absence from this dispatcher.
|
|
252
|
+
case 'handoff':
|
|
253
|
+
throw new OutOfScopeToolError('handoff', "the handoff route is outside the key's allowed scope (memory, goals, dream, full-context).");
|
|
254
|
+
default:
|
|
255
|
+
return UNKNOWN_TOOL_WORKSPACE_KEY_MODE;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=workspace-key-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-key-mode.js","sourceRoot":"","sources":["../src/workspace-key-mode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED