@jterrats/open-orchestra 0.4.1 → 0.4.2-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/AGENTS.md +5 -3
  2. package/dist/advisory-artifacts.d.ts +14 -0
  3. package/dist/advisory-artifacts.js +100 -0
  4. package/dist/advisory-artifacts.js.map +1 -0
  5. package/dist/assets/web-console.js +230 -1
  6. package/dist/autonomous-phase-lifecycle.d.ts +3 -2
  7. package/dist/autonomous-phase-lifecycle.js +28 -8
  8. package/dist/autonomous-phase-lifecycle.js.map +1 -1
  9. package/dist/autonomous-run-state.d.ts +6 -4
  10. package/dist/autonomous-run-state.js +82 -11
  11. package/dist/autonomous-run-state.js.map +1 -1
  12. package/dist/autonomous-run-store.d.ts +5 -0
  13. package/dist/autonomous-run-store.js +27 -2
  14. package/dist/autonomous-run-store.js.map +1 -1
  15. package/dist/autonomous-workflow-constants.d.ts +1 -0
  16. package/dist/autonomous-workflow-constants.js.map +1 -1
  17. package/dist/autonomous-workflow.d.ts +2 -2
  18. package/dist/autonomous-workflow.js +2 -2
  19. package/dist/autonomous-workflow.js.map +1 -1
  20. package/dist/benchmark.js +16 -0
  21. package/dist/benchmark.js.map +1 -1
  22. package/dist/clarification.d.ts +2 -0
  23. package/dist/clarification.js +23 -5
  24. package/dist/clarification.js.map +1 -1
  25. package/dist/cli.js +97 -18
  26. package/dist/cli.js.map +1 -1
  27. package/dist/command-manifest.d.ts +3 -0
  28. package/dist/command-manifest.js +17 -1
  29. package/dist/command-manifest.js.map +1 -1
  30. package/dist/commands.d.ts +10 -2
  31. package/dist/commands.js +484 -49
  32. package/dist/commands.js.map +1 -1
  33. package/dist/constants.js +13 -0
  34. package/dist/constants.js.map +1 -1
  35. package/dist/context-budget.d.ts +4 -0
  36. package/dist/context-budget.js +119 -0
  37. package/dist/context-budget.js.map +1 -0
  38. package/dist/mcp-oauth-proxy.d.ts +79 -0
  39. package/dist/mcp-oauth-proxy.js +396 -0
  40. package/dist/mcp-oauth-proxy.js.map +1 -1
  41. package/dist/memory.d.ts +11 -0
  42. package/dist/memory.js +224 -0
  43. package/dist/memory.js.map +1 -0
  44. package/dist/metrics-commands.js +9 -0
  45. package/dist/metrics-commands.js.map +1 -1
  46. package/dist/model-commands.js +18 -1
  47. package/dist/model-commands.js.map +1 -1
  48. package/dist/notifications.d.ts +25 -0
  49. package/dist/notifications.js +187 -11
  50. package/dist/notifications.js.map +1 -1
  51. package/dist/package-update-check.d.ts +19 -0
  52. package/dist/package-update-check.js +123 -0
  53. package/dist/package-update-check.js.map +1 -0
  54. package/dist/runtime-bootstrap.js +4 -2
  55. package/dist/runtime-bootstrap.js.map +1 -1
  56. package/dist/runtime-commands.js +10 -0
  57. package/dist/runtime-commands.js.map +1 -1
  58. package/dist/runtime-execution-renderer.js +5 -0
  59. package/dist/runtime-execution-renderer.js.map +1 -1
  60. package/dist/runtime-execution.d.ts +4 -2
  61. package/dist/runtime-execution.js +17 -4
  62. package/dist/runtime-execution.js.map +1 -1
  63. package/dist/setup-agents-import.d.ts +42 -0
  64. package/dist/setup-agents-import.js +337 -0
  65. package/dist/setup-agents-import.js.map +1 -0
  66. package/dist/skills-commands.d.ts +1 -0
  67. package/dist/skills-commands.js +9 -1
  68. package/dist/skills-commands.js.map +1 -1
  69. package/dist/skills.d.ts +7 -1
  70. package/dist/skills.js +120 -11
  71. package/dist/skills.js.map +1 -1
  72. package/dist/subagent-protocol.js +6 -0
  73. package/dist/subagent-protocol.js.map +1 -1
  74. package/dist/tool-commands.d.ts +2 -0
  75. package/dist/tool-commands.js +113 -13
  76. package/dist/tool-commands.js.map +1 -1
  77. package/dist/types.d.ts +163 -4
  78. package/dist/types.js.map +1 -1
  79. package/dist/web-api.js +216 -1
  80. package/dist/web-api.js.map +1 -1
  81. package/dist/web-chart-contracts.d.ts +3 -1
  82. package/dist/web-chart-contracts.js +6 -0
  83. package/dist/web-chart-contracts.js.map +1 -1
  84. package/dist/web-console.js +2 -2
  85. package/dist/workflow-services.d.ts +24 -4
  86. package/dist/workflow-services.js +478 -12
  87. package/dist/workflow-services.js.map +1 -1
  88. package/dist/workflow-templates.d.ts +1 -0
  89. package/dist/workflow-templates.js +1 -0
  90. package/dist/workflow-templates.js.map +1 -1
  91. package/dist/workspace.js +6 -0
  92. package/dist/workspace.js.map +1 -1
  93. package/docs/command-contracts.md +22 -0
  94. package/docs/mcp-oauth-proxy-evaluation.md +14 -0
  95. package/docs/runtime-adapters.md +4 -0
  96. package/docs/setup-agents-bridge.md +61 -0
  97. package/docs/traceability-flow.md +89 -0
  98. package/package.json +8 -6
  99. package/skills/proactive-orchestra/SKILL.md +27 -0
  100. package/skills/proactive-orchestra/manifest.json +41 -0
@@ -1,3 +1,7 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ import { createServer } from "node:http";
3
+ import { chmod, mkdir, readFile, rm, writeFile } from "node:fs/promises";
4
+ import { spawn } from "node:child_process";
1
5
  import path from "node:path";
2
6
  export function evaluateMcpOAuthProxy(config) {
3
7
  const risks = validateMcpOAuthProxyConfig(config);
@@ -39,6 +43,17 @@ export function validateMcpOAuthProxyConfig(config) {
39
43
  if (!config.serverUrl.startsWith("https://")) {
40
44
  risks.push("serverUrl must use https");
41
45
  }
46
+ if (config.authorizationUrl &&
47
+ !config.authorizationUrl.startsWith("https://")) {
48
+ risks.push("authorizationUrl must use https");
49
+ }
50
+ if (config.tokenUrl && !config.tokenUrl.startsWith("https://")) {
51
+ risks.push("tokenUrl must use https");
52
+ }
53
+ if (config.registrationUrl &&
54
+ !config.registrationUrl.startsWith("https://")) {
55
+ risks.push("registrationUrl must use https");
56
+ }
42
57
  if (config.refreshWindowSeconds < 30) {
43
58
  risks.push("refreshWindowSeconds must be at least 30");
44
59
  }
@@ -52,6 +67,182 @@ export function validateMcpOAuthProxyConfig(config) {
52
67
  }
53
68
  return risks;
54
69
  }
70
+ export async function discoverMcpOAuthMetadata({ serverUrl, fetchFn = fetch, }) {
71
+ const server = new URL(serverUrl);
72
+ if (server.protocol !== "https:") {
73
+ throw new Error("MCP OAuth discovery requires https serverUrl");
74
+ }
75
+ const discoveryUrl = new URL("/.well-known/oauth-authorization-server", server.origin);
76
+ const response = await fetchFn(discoveryUrl);
77
+ if (!response.ok) {
78
+ throw new Error(`OAuth discovery returned HTTP ${response.status}`);
79
+ }
80
+ const payload = (await response.json());
81
+ return removeUndefinedMetadata({
82
+ issuer: optionalStringField(payload, "issuer"),
83
+ authorizationEndpoint: stringField(payload, "authorization_endpoint"),
84
+ tokenEndpoint: stringField(payload, "token_endpoint"),
85
+ registrationEndpoint: optionalStringField(payload, "registration_endpoint"),
86
+ scopesSupported: stringArrayField(payload, "scopes_supported"),
87
+ });
88
+ }
89
+ export async function registerMcpOAuthClient({ metadata, clientName = "Open Orchestra MCP OAuth Proxy", redirectUris, scopes = [], fetchFn = fetch, }) {
90
+ if (!metadata.registrationEndpoint?.startsWith("https://")) {
91
+ throw new Error("OAuth dynamic registration endpoint is unavailable");
92
+ }
93
+ const response = await fetchFn(metadata.registrationEndpoint, {
94
+ method: "POST",
95
+ headers: { "content-type": "application/json" },
96
+ body: JSON.stringify({
97
+ client_name: clientName,
98
+ redirect_uris: redirectUris,
99
+ grant_types: ["authorization_code", "refresh_token"],
100
+ response_types: ["code"],
101
+ token_endpoint_auth_method: "client_secret_post",
102
+ ...(scopes.length > 0 ? { scope: scopes.join(" ") } : {}),
103
+ }),
104
+ });
105
+ if (!response.ok) {
106
+ throw new Error(`OAuth dynamic registration returned HTTP ${response.status}`);
107
+ }
108
+ const payload = (await response.json());
109
+ return removeUndefinedRegistration({
110
+ clientId: stringField(payload, "client_id"),
111
+ clientSecret: optionalStringField(payload, "client_secret"),
112
+ clientIdIssuedAt: numberField(payload, "client_id_issued_at"),
113
+ clientSecretExpiresAt: numberField(payload, "client_secret_expires_at"),
114
+ });
115
+ }
116
+ export async function resolveMcpOAuthDiscoveryConfig({ config, redirectUris, fetchFn = fetch, }) {
117
+ const metadata = await discoverMcpOAuthMetadata({
118
+ serverUrl: config.serverUrl,
119
+ fetchFn,
120
+ });
121
+ const registration = config.dynamicRegistration && !config.clientId
122
+ ? await registerMcpOAuthClient({
123
+ metadata,
124
+ redirectUris,
125
+ fetchFn,
126
+ ...(config.clientName ? { clientName: config.clientName } : {}),
127
+ ...(config.scopes ? { scopes: config.scopes } : {}),
128
+ })
129
+ : undefined;
130
+ return removeUndefinedConfig({
131
+ ...config,
132
+ authorizationUrl: config.authorizationUrl ?? metadata.authorizationEndpoint,
133
+ tokenUrl: config.tokenUrl ?? metadata.tokenEndpoint,
134
+ registrationUrl: config.registrationUrl ?? metadata.registrationEndpoint,
135
+ clientId: config.clientId ?? registration?.clientId,
136
+ clientSecret: config.clientSecret ?? registration?.clientSecret,
137
+ });
138
+ }
139
+ export async function readMcpTokenStatus(config, now = new Date()) {
140
+ const token = await loadMcpToken(config).catch(() => undefined);
141
+ if (!token) {
142
+ return { exists: false };
143
+ }
144
+ return {
145
+ exists: true,
146
+ expiresAt: token.expiresAt,
147
+ needsRefresh: tokenNeedsRefresh(token, now, config.refreshWindowSeconds),
148
+ };
149
+ }
150
+ export async function loadMcpToken(config) {
151
+ assertSecureFileStorage(config);
152
+ const content = await readFile(config.tokenPath, "utf8");
153
+ return JSON.parse(content);
154
+ }
155
+ export async function saveMcpToken(config, token) {
156
+ assertSecureFileStorage(config);
157
+ await mkdir(path.dirname(config.tokenPath), {
158
+ recursive: true,
159
+ mode: 0o700,
160
+ });
161
+ await writeFile(config.tokenPath, JSON.stringify(token, null, 2), {
162
+ mode: 0o600,
163
+ });
164
+ await chmod(config.tokenPath, 0o600);
165
+ }
166
+ export async function clearMcpToken(config) {
167
+ assertSecureFileStorage(config);
168
+ await rm(config.tokenPath, { force: true });
169
+ return { cleared: true };
170
+ }
171
+ export async function forceRefreshMcpToken({ config, fetchFn = fetch, }) {
172
+ const token = await loadMcpToken(config);
173
+ const refreshed = await refreshTokenWithEndpoint(config, token, fetchFn);
174
+ await saveMcpToken(config, refreshed);
175
+ return {
176
+ refreshed: true,
177
+ reason: "token refresh forced",
178
+ token: refreshed,
179
+ };
180
+ }
181
+ export async function startMcpOAuthProxy({ config, fetchFn = fetch, openBrowser = true, }) {
182
+ if (config.dynamicRegistration ||
183
+ !config.authorizationUrl ||
184
+ !config.tokenUrl) {
185
+ config = await resolveMcpOAuthDiscoveryConfig({
186
+ config,
187
+ redirectUris: ["http://127.0.0.1/callback"],
188
+ fetchFn,
189
+ });
190
+ }
191
+ const risks = validateMcpOAuthProxyConfig(config);
192
+ if (risks.length > 0) {
193
+ throw new Error("invalid MCP OAuth proxy config: " + risks.join("; "));
194
+ }
195
+ const token = await ensureMcpToken({ config, fetchFn, openBrowser });
196
+ return {
197
+ mode: config.mode,
198
+ serverUrl: config.serverUrl,
199
+ token: {
200
+ exists: true,
201
+ expiresAt: token.expiresAt,
202
+ needsRefresh: false,
203
+ },
204
+ proxyReady: config.mode === "stdio-proxy",
205
+ };
206
+ }
207
+ export async function proxyMcpHttpRequest({ config, request, fetchFn = fetch, }) {
208
+ const token = await ensureMcpToken({ config, fetchFn, openBrowser: false });
209
+ const target = new URL(request.path, ensureTrailingSlash(config.serverUrl));
210
+ if (target.protocol !== "https:") {
211
+ throw new Error("MCP proxy target must use https");
212
+ }
213
+ const response = await fetchMcpWithToken({ target, request, token, fetchFn });
214
+ if (response.status !== 401) {
215
+ return response;
216
+ }
217
+ const refreshed = await refreshTokenWithEndpoint(config, token, fetchFn);
218
+ await saveMcpToken(config, refreshed);
219
+ return fetchMcpWithToken({
220
+ target,
221
+ request,
222
+ token: refreshed,
223
+ fetchFn,
224
+ });
225
+ }
226
+ async function fetchMcpWithToken({ target, request, token, fetchFn, }) {
227
+ const headers = new Headers(request.headers);
228
+ headers.set("authorization", "Bearer " + token.accessToken);
229
+ const init = {
230
+ method: request.method ?? "POST",
231
+ headers,
232
+ };
233
+ if (request.body !== undefined) {
234
+ init.body = request.body;
235
+ }
236
+ const response = await fetchFn(target, {
237
+ ...init,
238
+ });
239
+ const contentType = response.headers.get("content-type") ?? undefined;
240
+ return removeUndefinedResponse({
241
+ status: response.status,
242
+ body: await response.text(),
243
+ ...(contentType ? { contentType } : {}),
244
+ });
245
+ }
55
246
  export async function refreshMcpTokenIfNeeded({ token, now = new Date(), refreshWindowSeconds, refresh, }) {
56
247
  const expiresAt = new Date(token.expiresAt);
57
248
  const refreshAt = expiresAt.getTime() - refreshWindowSeconds * 1000;
@@ -68,6 +259,211 @@ export async function refreshMcpTokenIfNeeded({ token, now = new Date(), refresh
68
259
  token: await refresh(token),
69
260
  };
70
261
  }
262
+ async function ensureMcpToken({ config, fetchFn, openBrowser, }) {
263
+ const existing = await loadMcpToken(config).catch(() => undefined);
264
+ if (existing) {
265
+ const refreshed = await refreshMcpTokenIfNeeded({
266
+ token: existing,
267
+ refreshWindowSeconds: config.refreshWindowSeconds,
268
+ refresh: (token) => refreshTokenWithEndpoint(config, token, fetchFn),
269
+ });
270
+ if (refreshed.refreshed) {
271
+ await saveMcpToken(config, refreshed.token);
272
+ }
273
+ return refreshed.token;
274
+ }
275
+ const token = await acquireTokenWithAuthorizationCode({
276
+ config,
277
+ fetchFn,
278
+ openBrowser,
279
+ });
280
+ await saveMcpToken(config, token);
281
+ return token;
282
+ }
283
+ async function acquireTokenWithAuthorizationCode({ config, fetchFn, openBrowser, }) {
284
+ if (!config.authorizationUrl || !config.tokenUrl || !config.clientId) {
285
+ throw new Error("authorizationUrl, tokenUrl, and clientId are required");
286
+ }
287
+ const verifier = base64Url(randomBytes(32));
288
+ const challenge = base64Url(createHash("sha256").update(verifier).digest());
289
+ const state = base64Url(randomBytes(18));
290
+ const callback = await waitForOAuthCallback();
291
+ const authorizationUrl = new URL(config.authorizationUrl);
292
+ authorizationUrl.searchParams.set("response_type", "code");
293
+ authorizationUrl.searchParams.set("client_id", config.clientId);
294
+ authorizationUrl.searchParams.set("redirect_uri", callback.redirectUri);
295
+ authorizationUrl.searchParams.set("code_challenge", challenge);
296
+ authorizationUrl.searchParams.set("code_challenge_method", "S256");
297
+ authorizationUrl.searchParams.set("state", state);
298
+ if (config.scopes?.length) {
299
+ authorizationUrl.searchParams.set("scope", config.scopes.join(" "));
300
+ }
301
+ if (openBrowser) {
302
+ openSystemBrowser(authorizationUrl.toString());
303
+ }
304
+ const code = await callback.code;
305
+ if (code.state !== state) {
306
+ throw new Error("OAuth callback state mismatch");
307
+ }
308
+ return exchangeAuthorizationCode(config, code.code, callback.redirectUri, verifier, fetchFn);
309
+ }
310
+ async function waitForOAuthCallback() {
311
+ let resolveCode;
312
+ let rejectCode;
313
+ const code = new Promise((resolve, reject) => {
314
+ resolveCode = resolve;
315
+ rejectCode = reject;
316
+ });
317
+ const server = createServer((request, response) => {
318
+ const url = new URL(request.url ?? "/", "http://127.0.0.1");
319
+ if (url.pathname !== "/callback") {
320
+ response.writeHead(404).end("Not found");
321
+ return;
322
+ }
323
+ const oauthCode = url.searchParams.get("code");
324
+ const state = url.searchParams.get("state");
325
+ if (!oauthCode || !state) {
326
+ response.writeHead(400).end("Missing code or state");
327
+ rejectCode(new Error("OAuth callback missing code or state"));
328
+ server.close();
329
+ return;
330
+ }
331
+ response
332
+ .writeHead(200, { "content-type": "text/plain" })
333
+ .end("OAuth complete. You can close this window.");
334
+ resolveCode({ code: oauthCode, state });
335
+ server.close();
336
+ });
337
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
338
+ const address = server.address();
339
+ if (!address || typeof address === "string") {
340
+ server.close();
341
+ throw new Error("failed to bind OAuth callback");
342
+ }
343
+ return {
344
+ redirectUri: `http://127.0.0.1:${address.port}/callback`,
345
+ code,
346
+ };
347
+ }
348
+ async function exchangeAuthorizationCode(config, code, redirectUri, verifier, fetchFn) {
349
+ const body = new URLSearchParams({
350
+ grant_type: "authorization_code",
351
+ code,
352
+ redirect_uri: redirectUri,
353
+ client_id: config.clientId ?? "",
354
+ code_verifier: verifier,
355
+ });
356
+ if (config.clientSecret) {
357
+ body.set("client_secret", config.clientSecret);
358
+ }
359
+ return tokenFromResponse(await postToken(config, body, fetchFn));
360
+ }
361
+ async function refreshTokenWithEndpoint(config, token, fetchFn) {
362
+ if (!config.tokenUrl || !config.clientId) {
363
+ throw new Error("tokenUrl and clientId are required for refresh");
364
+ }
365
+ const body = new URLSearchParams({
366
+ grant_type: "refresh_token",
367
+ refresh_token: token.refreshToken,
368
+ client_id: config.clientId,
369
+ });
370
+ if (config.clientSecret) {
371
+ body.set("client_secret", config.clientSecret);
372
+ }
373
+ return tokenFromResponse(await postToken(config, body, fetchFn), token);
374
+ }
375
+ async function postToken(config, body, fetchFn) {
376
+ if (!config.tokenUrl?.startsWith("https://")) {
377
+ throw new Error("tokenUrl must use https");
378
+ }
379
+ const response = await fetchFn(config.tokenUrl, {
380
+ method: "POST",
381
+ headers: { "content-type": "application/x-www-form-urlencoded" },
382
+ body,
383
+ });
384
+ if (!response.ok) {
385
+ throw new Error(`OAuth token endpoint returned HTTP ${response.status}`);
386
+ }
387
+ return (await response.json());
388
+ }
389
+ function tokenFromResponse(payload, previous) {
390
+ const accessToken = stringField(payload, "access_token");
391
+ const refreshToken = typeof payload.refresh_token === "string"
392
+ ? payload.refresh_token
393
+ : previous?.refreshToken;
394
+ const expiresIn = typeof payload.expires_in === "number" ? payload.expires_in : 3600;
395
+ if (!refreshToken) {
396
+ throw new Error("OAuth token response missing refresh_token");
397
+ }
398
+ return {
399
+ accessToken,
400
+ refreshToken,
401
+ expiresAt: new Date(Date.now() + expiresIn * 1000).toISOString(),
402
+ };
403
+ }
404
+ function stringField(payload, key) {
405
+ const value = payload[key];
406
+ if (typeof value !== "string" || value.trim() === "") {
407
+ throw new Error(`OAuth token response missing ${key}`);
408
+ }
409
+ return value;
410
+ }
411
+ function optionalStringField(payload, key) {
412
+ const value = payload[key];
413
+ return typeof value === "string" && value.trim() !== "" ? value : undefined;
414
+ }
415
+ function numberField(payload, key) {
416
+ const value = payload[key];
417
+ return typeof value === "number" ? value : undefined;
418
+ }
419
+ function stringArrayField(payload, key) {
420
+ const value = payload[key];
421
+ if (!Array.isArray(value)) {
422
+ return undefined;
423
+ }
424
+ return value.filter((entry) => typeof entry === "string" && entry.trim() !== "");
425
+ }
426
+ function tokenNeedsRefresh(token, now, refreshWindowSeconds) {
427
+ return (now.getTime() >=
428
+ new Date(token.expiresAt).getTime() - refreshWindowSeconds * 1000);
429
+ }
430
+ function assertSecureFileStorage(config) {
431
+ if (config.tokenStorage !== "secure-file") {
432
+ throw new Error("only secure-file token storage is implemented");
433
+ }
434
+ if (!config.tokenPath || !isSecureLocalTokenPath(config.tokenPath)) {
435
+ throw new Error("tokenPath must stay under an approved local secret directory");
436
+ }
437
+ }
438
+ function openSystemBrowser(url) {
439
+ const platform = process.platform;
440
+ const command = platform === "darwin" ? "open" : platform === "win32" ? "cmd" : "xdg-open";
441
+ const args = platform === "win32" ? ["/c", "start", "", url] : [url];
442
+ const child = spawn(command, args, { detached: true, stdio: "ignore" });
443
+ child.unref();
444
+ }
445
+ function ensureTrailingSlash(value) {
446
+ return value.endsWith("/") ? value : value + "/";
447
+ }
448
+ function removeUndefinedResponse(response) {
449
+ return Object.fromEntries(Object.entries(response).filter(([, value]) => value !== undefined));
450
+ }
451
+ function removeUndefinedConfig(config) {
452
+ return Object.fromEntries(Object.entries(config).filter(([, value]) => value !== undefined));
453
+ }
454
+ function removeUndefinedMetadata(metadata) {
455
+ return Object.fromEntries(Object.entries(metadata).filter(([, value]) => value !== undefined));
456
+ }
457
+ function removeUndefinedRegistration(registration) {
458
+ return Object.fromEntries(Object.entries(registration).filter(([, value]) => value !== undefined));
459
+ }
460
+ function base64Url(input) {
461
+ return input
462
+ .toString("base64")
463
+ .replace(/\+/g, "-")
464
+ .replace(/\//g, "_")
465
+ .replace(/=+$/g, "");
466
+ }
71
467
  function isSecureLocalTokenPath(tokenPath) {
72
468
  const normalized = path.normalize(tokenPath);
73
469
  const home = process.env.HOME ? path.normalize(process.env.HOME) : "";
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-oauth-proxy.js","sourceRoot":"","sources":["../src/mcp-oauth-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-oauth-proxy.js","sourceRoot":"","sources":["../src/mcp-oauth-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { EventEntry, MemoryHookPoint, MemoryPacket } from "./types.js";
2
+ export interface MemoryQueryInput {
3
+ taskId?: string;
4
+ hook?: MemoryHookPoint;
5
+ query?: string;
6
+ tokenBudget?: number;
7
+ root?: string;
8
+ }
9
+ export declare function queryMemory({ taskId, hook, query, tokenBudget, root, }: MemoryQueryInput): Promise<MemoryPacket>;
10
+ export declare function recordMemoryEvent(root: string, packet: MemoryPacket, type: "MEMORY_QUERIED" | "MEMORY_HOOK_RAN"): Promise<EventEntry | undefined>;
11
+ export declare function renderMemoryPacket(packet: MemoryPacket): string;