@assemblyline-agents/runtime 0.1.0
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/LICENSE +21 -0
- package/README.md +19 -0
- package/dist/agent-harness.d.ts +108 -0
- package/dist/agent-harness.d.ts.map +1 -0
- package/dist/agent-harness.js +2 -0
- package/dist/agent-harness.js.map +1 -0
- package/dist/attachments-legacy.d.ts +17 -0
- package/dist/attachments-legacy.d.ts.map +1 -0
- package/dist/attachments-legacy.js +273 -0
- package/dist/attachments-legacy.js.map +1 -0
- package/dist/attachments.d.ts +49 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/attachments.js +832 -0
- package/dist/attachments.js.map +1 -0
- package/dist/builtin-tool-executors.d.ts +96 -0
- package/dist/builtin-tool-executors.d.ts.map +1 -0
- package/dist/builtin-tool-executors.js +501 -0
- package/dist/builtin-tool-executors.js.map +1 -0
- package/dist/builtin-tools.d.ts +30 -0
- package/dist/builtin-tools.d.ts.map +1 -0
- package/dist/builtin-tools.js +690 -0
- package/dist/builtin-tools.js.map +1 -0
- package/dist/capability-catalog.d.ts +27 -0
- package/dist/capability-catalog.d.ts.map +1 -0
- package/dist/capability-catalog.js +193 -0
- package/dist/capability-catalog.js.map +1 -0
- package/dist/channel-http-util.d.ts +34 -0
- package/dist/channel-http-util.d.ts.map +1 -0
- package/dist/channel-http-util.js +93 -0
- package/dist/channel-http-util.js.map +1 -0
- package/dist/channel-ingress.d.ts +56 -0
- package/dist/channel-ingress.d.ts.map +1 -0
- package/dist/channel-ingress.js +273 -0
- package/dist/channel-ingress.js.map +1 -0
- package/dist/channel.d.ts +146 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +2 -0
- package/dist/channel.js.map +1 -0
- package/dist/checkpoints.d.ts +34 -0
- package/dist/checkpoints.d.ts.map +1 -0
- package/dist/checkpoints.js +86 -0
- package/dist/checkpoints.js.map +1 -0
- package/dist/code-mode.d.ts +20 -0
- package/dist/code-mode.d.ts.map +1 -0
- package/dist/code-mode.js +658 -0
- package/dist/code-mode.js.map +1 -0
- package/dist/computer-relay-protocol.d.ts +36 -0
- package/dist/computer-relay-protocol.d.ts.map +1 -0
- package/dist/computer-relay-protocol.js +127 -0
- package/dist/computer-relay-protocol.js.map +1 -0
- package/dist/concurrency.d.ts +68 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +193 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/connection-auth-util.d.ts +56 -0
- package/dist/connection-auth-util.d.ts.map +1 -0
- package/dist/connection-auth-util.js +154 -0
- package/dist/connection-auth-util.js.map +1 -0
- package/dist/connection-clients.d.ts +50 -0
- package/dist/connection-clients.d.ts.map +1 -0
- package/dist/connection-clients.js +402 -0
- package/dist/connection-clients.js.map +1 -0
- package/dist/connection-stores.d.ts +108 -0
- package/dist/connection-stores.d.ts.map +1 -0
- package/dist/connection-stores.js +127 -0
- package/dist/connection-stores.js.map +1 -0
- package/dist/connection-util.d.ts +27 -0
- package/dist/connection-util.d.ts.map +1 -0
- package/dist/connection-util.js +118 -0
- package/dist/connection-util.js.map +1 -0
- package/dist/connections.d.ts +152 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +838 -0
- package/dist/connections.js.map +1 -0
- package/dist/content-capture.d.ts +32 -0
- package/dist/content-capture.d.ts.map +1 -0
- package/dist/content-capture.js +77 -0
- package/dist/content-capture.js.map +1 -0
- package/dist/context-policy-util.d.ts +45 -0
- package/dist/context-policy-util.d.ts.map +1 -0
- package/dist/context-policy-util.js +120 -0
- package/dist/context-policy-util.js.map +1 -0
- package/dist/conversation-context.d.ts +55 -0
- package/dist/conversation-context.d.ts.map +1 -0
- package/dist/conversation-context.js +179 -0
- package/dist/conversation-context.js.map +1 -0
- package/dist/conversation-transcript.d.ts +49 -0
- package/dist/conversation-transcript.d.ts.map +1 -0
- package/dist/conversation-transcript.js +77 -0
- package/dist/conversation-transcript.js.map +1 -0
- package/dist/conversation-turn-dispatch.d.ts +46 -0
- package/dist/conversation-turn-dispatch.d.ts.map +1 -0
- package/dist/conversation-turn-dispatch.js +201 -0
- package/dist/conversation-turn-dispatch.js.map +1 -0
- package/dist/delivery-queue.d.ts +89 -0
- package/dist/delivery-queue.d.ts.map +1 -0
- package/dist/delivery-queue.js +244 -0
- package/dist/delivery-queue.js.map +1 -0
- package/dist/delivery-send.d.ts +44 -0
- package/dist/delivery-send.d.ts.map +1 -0
- package/dist/delivery-send.js +494 -0
- package/dist/delivery-send.js.map +1 -0
- package/dist/env-config.d.ts +6 -0
- package/dist/env-config.d.ts.map +1 -0
- package/dist/env-config.js +27 -0
- package/dist/env-config.js.map +1 -0
- package/dist/eval-run-options.d.ts +37 -0
- package/dist/eval-run-options.d.ts.map +1 -0
- package/dist/eval-run-options.js +106 -0
- package/dist/eval-run-options.js.map +1 -0
- package/dist/harness-continuation.d.ts +54 -0
- package/dist/harness-continuation.d.ts.map +1 -0
- package/dist/harness-continuation.js +58 -0
- package/dist/harness-continuation.js.map +1 -0
- package/dist/harness-loop.d.ts +110 -0
- package/dist/harness-loop.d.ts.map +1 -0
- package/dist/harness-loop.js +575 -0
- package/dist/harness-loop.js.map +1 -0
- package/dist/hook-dispatch.d.ts +19 -0
- package/dist/hook-dispatch.d.ts.map +1 -0
- package/dist/hook-dispatch.js +37 -0
- package/dist/hook-dispatch.js.map +1 -0
- package/dist/http.d.ts +26 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +114 -0
- package/dist/http.js.map +1 -0
- package/dist/in-memory-conversation-turn-store.d.ts +29 -0
- package/dist/in-memory-conversation-turn-store.d.ts.map +1 -0
- package/dist/in-memory-conversation-turn-store.js +166 -0
- package/dist/in-memory-conversation-turn-store.js.map +1 -0
- package/dist/in-memory-run-store.d.ts +39 -0
- package/dist/in-memory-run-store.d.ts.map +1 -0
- package/dist/in-memory-run-store.js +332 -0
- package/dist/in-memory-run-store.js.map +1 -0
- package/dist/in-memory-sandbox-session-store.d.ts +33 -0
- package/dist/in-memory-sandbox-session-store.d.ts.map +1 -0
- package/dist/in-memory-sandbox-session-store.js +186 -0
- package/dist/in-memory-sandbox-session-store.js.map +1 -0
- package/dist/in-memory-small-stores.d.ts +117 -0
- package/dist/in-memory-small-stores.d.ts.map +1 -0
- package/dist/in-memory-small-stores.js +340 -0
- package/dist/in-memory-small-stores.js.map +1 -0
- package/dist/in-memory-usage-store.d.ts +15 -0
- package/dist/in-memory-usage-store.d.ts.map +1 -0
- package/dist/in-memory-usage-store.js +49 -0
- package/dist/in-memory-usage-store.js.map +1 -0
- package/dist/index.d.ts +467 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2046 -0
- package/dist/index.js.map +1 -0
- package/dist/json-util.d.ts +19 -0
- package/dist/json-util.d.ts.map +1 -0
- package/dist/json-util.js +59 -0
- package/dist/json-util.js.map +1 -0
- package/dist/local-sandbox.d.ts +16 -0
- package/dist/local-sandbox.d.ts.map +1 -0
- package/dist/local-sandbox.js +327 -0
- package/dist/local-sandbox.js.map +1 -0
- package/dist/logging.d.ts +16 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +41 -0
- package/dist/logging.js.map +1 -0
- package/dist/mcp-client.d.ts +27 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +169 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/model-harnesses.d.ts +4 -0
- package/dist/model-harnesses.d.ts.map +1 -0
- package/dist/model-harnesses.js +6 -0
- package/dist/model-harnesses.js.map +1 -0
- package/dist/model-media.d.ts +36 -0
- package/dist/model-media.d.ts.map +1 -0
- package/dist/model-media.js +234 -0
- package/dist/model-media.js.map +1 -0
- package/dist/operator-controls.d.ts +31 -0
- package/dist/operator-controls.d.ts.map +1 -0
- package/dist/operator-controls.js +71 -0
- package/dist/operator-controls.js.map +1 -0
- package/dist/pi-agent-harness.d.ts +40 -0
- package/dist/pi-agent-harness.d.ts.map +1 -0
- package/dist/pi-agent-harness.js +222 -0
- package/dist/pi-agent-harness.js.map +1 -0
- package/dist/pi-harness.d.ts +42 -0
- package/dist/pi-harness.d.ts.map +1 -0
- package/dist/pi-harness.js +142 -0
- package/dist/pi-harness.js.map +1 -0
- package/dist/relay-mcp-client.d.ts +17 -0
- package/dist/relay-mcp-client.d.ts.map +1 -0
- package/dist/relay-mcp-client.js +119 -0
- package/dist/relay-mcp-client.js.map +1 -0
- package/dist/replay-resume.d.ts +107 -0
- package/dist/replay-resume.d.ts.map +1 -0
- package/dist/replay-resume.js +495 -0
- package/dist/replay-resume.js.map +1 -0
- package/dist/resource-projection-util.d.ts +58 -0
- package/dist/resource-projection-util.d.ts.map +1 -0
- package/dist/resource-projection-util.js +298 -0
- package/dist/resource-projection-util.js.map +1 -0
- package/dist/resource-projection.d.ts +45 -0
- package/dist/resource-projection.d.ts.map +1 -0
- package/dist/resource-projection.js +481 -0
- package/dist/resource-projection.js.map +1 -0
- package/dist/run-heartbeat.d.ts +34 -0
- package/dist/run-heartbeat.d.ts.map +1 -0
- package/dist/run-heartbeat.js +62 -0
- package/dist/run-heartbeat.js.map +1 -0
- package/dist/run-outcome.d.ts +47 -0
- package/dist/run-outcome.d.ts.map +1 -0
- package/dist/run-outcome.js +92 -0
- package/dist/run-outcome.js.map +1 -0
- package/dist/run-recovery.d.ts +117 -0
- package/dist/run-recovery.d.ts.map +1 -0
- package/dist/run-recovery.js +466 -0
- package/dist/run-recovery.js.map +1 -0
- package/dist/run-resolver.d.ts +35 -0
- package/dist/run-resolver.d.ts.map +1 -0
- package/dist/run-resolver.js +84 -0
- package/dist/run-resolver.js.map +1 -0
- package/dist/run-stream.d.ts +37 -0
- package/dist/run-stream.d.ts.map +1 -0
- package/dist/run-stream.js +78 -0
- package/dist/run-stream.js.map +1 -0
- package/dist/runs-query.d.ts +29 -0
- package/dist/runs-query.d.ts.map +1 -0
- package/dist/runs-query.js +142 -0
- package/dist/runs-query.js.map +1 -0
- package/dist/runtime-bundle.d.ts +3 -0
- package/dist/runtime-bundle.d.ts.map +1 -0
- package/dist/runtime-bundle.js +18 -0
- package/dist/runtime-bundle.js.map +1 -0
- package/dist/runtime-types.d.ts +397 -0
- package/dist/runtime-types.d.ts.map +1 -0
- package/dist/runtime-types.js +2 -0
- package/dist/runtime-types.js.map +1 -0
- package/dist/runtime-util.d.ts +45 -0
- package/dist/runtime-util.d.ts.map +1 -0
- package/dist/runtime-util.js +116 -0
- package/dist/runtime-util.js.map +1 -0
- package/dist/sandbox-cli-client.d.ts +20 -0
- package/dist/sandbox-cli-client.d.ts.map +1 -0
- package/dist/sandbox-cli-client.js +97 -0
- package/dist/sandbox-cli-client.js.map +1 -0
- package/dist/sandbox-fs.d.ts +56 -0
- package/dist/sandbox-fs.d.ts.map +1 -0
- package/dist/sandbox-fs.js +276 -0
- package/dist/sandbox-fs.js.map +1 -0
- package/dist/sandbox-session-key.d.ts +8 -0
- package/dist/sandbox-session-key.d.ts.map +1 -0
- package/dist/sandbox-session-key.js +32 -0
- package/dist/sandbox-session-key.js.map +1 -0
- package/dist/sandbox-snapshot-policy.d.ts +27 -0
- package/dist/sandbox-snapshot-policy.d.ts.map +1 -0
- package/dist/sandbox-snapshot-policy.js +94 -0
- package/dist/sandbox-snapshot-policy.js.map +1 -0
- package/dist/sandbox-sync-worker.d.ts +63 -0
- package/dist/sandbox-sync-worker.d.ts.map +1 -0
- package/dist/sandbox-sync-worker.js +448 -0
- package/dist/sandbox-sync-worker.js.map +1 -0
- package/dist/schedule-execution.d.ts +59 -0
- package/dist/schedule-execution.d.ts.map +1 -0
- package/dist/schedule-execution.js +951 -0
- package/dist/schedule-execution.js.map +1 -0
- package/dist/scheduler.d.ts +19 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +38 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/security.d.ts +20 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +145 -0
- package/dist/security.js.map +1 -0
- package/dist/self-improvement.d.ts +245 -0
- package/dist/self-improvement.d.ts.map +1 -0
- package/dist/self-improvement.js +554 -0
- package/dist/self-improvement.js.map +1 -0
- package/dist/source-loader.d.ts +19 -0
- package/dist/source-loader.d.ts.map +1 -0
- package/dist/source-loader.js +160 -0
- package/dist/source-loader.js.map +1 -0
- package/dist/state-store-helpers.d.ts +28 -0
- package/dist/state-store-helpers.d.ts.map +1 -0
- package/dist/state-store-helpers.js +164 -0
- package/dist/state-store-helpers.js.map +1 -0
- package/dist/state-stores.d.ts +25 -0
- package/dist/state-stores.d.ts.map +1 -0
- package/dist/state-stores.js +157 -0
- package/dist/state-stores.js.map +1 -0
- package/dist/state.d.ts +736 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +46 -0
- package/dist/state.js.map +1 -0
- package/dist/storage.d.ts +188 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +752 -0
- package/dist/storage.js.map +1 -0
- package/dist/subagent-execution.d.ts +80 -0
- package/dist/subagent-execution.d.ts.map +1 -0
- package/dist/subagent-execution.js +135 -0
- package/dist/subagent-execution.js.map +1 -0
- package/dist/telemetry.d.ts +49 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +60 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tool-apis.d.ts +22 -0
- package/dist/tool-apis.d.ts.map +1 -0
- package/dist/tool-apis.js +344 -0
- package/dist/tool-apis.js.map +1 -0
- package/dist/tool-execution.d.ts +143 -0
- package/dist/tool-execution.d.ts.map +1 -0
- package/dist/tool-execution.js +573 -0
- package/dist/tool-execution.js.map +1 -0
- package/dist/trusted-attachments.d.ts +20 -0
- package/dist/trusted-attachments.d.ts.map +1 -0
- package/dist/trusted-attachments.js +276 -0
- package/dist/trusted-attachments.js.map +1 -0
- package/dist/usage-accounting.d.ts +37 -0
- package/dist/usage-accounting.d.ts.map +1 -0
- package/dist/usage-accounting.js +181 -0
- package/dist/usage-accounting.js.map +1 -0
- package/dist/usage-budget.d.ts +29 -0
- package/dist/usage-budget.d.ts.map +1 -0
- package/dist/usage-budget.js +145 -0
- package/dist/usage-budget.js.map +1 -0
- package/dist/usage-reconciliation.d.ts +76 -0
- package/dist/usage-reconciliation.d.ts.map +1 -0
- package/dist/usage-reconciliation.js +463 -0
- package/dist/usage-reconciliation.js.map +1 -0
- package/dist/usage-records.d.ts +24 -0
- package/dist/usage-records.d.ts.map +1 -0
- package/dist/usage-records.js +445 -0
- package/dist/usage-records.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { ConnectionAuthorizationChallenge, ConnectionPrincipal, ConnectionResolverContext, JsonObject, JsonSchema, JsonValue } from "@assemblyline-agents/core";
|
|
2
|
+
/**
|
|
3
|
+
* Connection grant / authorization-session store interfaces, the in-memory
|
|
4
|
+
* and encrypted-file store implementations, and the connection tool metadata
|
|
5
|
+
* and search types shared with the registry and clients.
|
|
6
|
+
*/
|
|
7
|
+
export interface StoredConnectionGrant {
|
|
8
|
+
connectionName: string;
|
|
9
|
+
principalKey: string;
|
|
10
|
+
principal: ConnectionPrincipal;
|
|
11
|
+
token: string;
|
|
12
|
+
refreshToken?: string;
|
|
13
|
+
tokenType?: string;
|
|
14
|
+
scopes?: string[];
|
|
15
|
+
expiresAt?: number;
|
|
16
|
+
credential?: JsonObject;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ConnectionGrantStore {
|
|
21
|
+
getGrant(connectionName: string, principalKey: string): Promise<StoredConnectionGrant | undefined>;
|
|
22
|
+
saveGrant(grant: StoredConnectionGrant): Promise<void>;
|
|
23
|
+
deleteGrant(connectionName: string, principalKey: string): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export interface ConnectionAuthorizationSessionRecord {
|
|
26
|
+
id: string;
|
|
27
|
+
state: string;
|
|
28
|
+
connectionName: string;
|
|
29
|
+
principal: ConnectionPrincipal;
|
|
30
|
+
principalKey: string;
|
|
31
|
+
session: ConnectionResolverContext["session"];
|
|
32
|
+
callbackUrl: string;
|
|
33
|
+
codeVerifier?: string;
|
|
34
|
+
resume?: JsonValue;
|
|
35
|
+
runId?: string;
|
|
36
|
+
toolCallId?: string;
|
|
37
|
+
toolName?: string;
|
|
38
|
+
challenge: ConnectionAuthorizationChallenge;
|
|
39
|
+
continuation?: JsonObject;
|
|
40
|
+
status: "pending" | "completed" | "denied" | "expired";
|
|
41
|
+
expiresAt: number;
|
|
42
|
+
createdAt: string;
|
|
43
|
+
updatedAt: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ConnectionAuthorizationSessionStore {
|
|
46
|
+
createSession(session: ConnectionAuthorizationSessionRecord): Promise<void>;
|
|
47
|
+
updateSession(id: string, patch: Partial<Omit<ConnectionAuthorizationSessionRecord, "id" | "createdAt">>): Promise<ConnectionAuthorizationSessionRecord>;
|
|
48
|
+
getSession(id: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
|
|
49
|
+
getSessionByState(state: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
|
|
50
|
+
findPendingSession(connectionName: string, principalKey: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
|
|
51
|
+
}
|
|
52
|
+
export interface ConnectionToolMetadata {
|
|
53
|
+
connection: string;
|
|
54
|
+
name: string;
|
|
55
|
+
qualifiedName: string;
|
|
56
|
+
description: string;
|
|
57
|
+
inputSchema: JsonSchema;
|
|
58
|
+
outputSchema?: JsonSchema;
|
|
59
|
+
}
|
|
60
|
+
export interface ConnectionSearchInput {
|
|
61
|
+
connection?: string;
|
|
62
|
+
keywords?: string;
|
|
63
|
+
limit?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface ConnectionSearchResultItem {
|
|
66
|
+
connection: string;
|
|
67
|
+
description: string;
|
|
68
|
+
error?: string;
|
|
69
|
+
inputSchema?: JsonSchema;
|
|
70
|
+
needsAuthorization?: boolean;
|
|
71
|
+
outputSchema?: JsonSchema;
|
|
72
|
+
qualifiedName?: string;
|
|
73
|
+
tool?: string;
|
|
74
|
+
}
|
|
75
|
+
export declare const CONNECTION_SEARCH_TOOL_NAME = "connection_search";
|
|
76
|
+
export declare class InMemoryConnectionGrantStore implements ConnectionGrantStore {
|
|
77
|
+
protected readonly grants: Map<string, StoredConnectionGrant>;
|
|
78
|
+
getGrant(connectionName: string, principalKey: string): Promise<StoredConnectionGrant | undefined>;
|
|
79
|
+
saveGrant(grant: StoredConnectionGrant): Promise<void>;
|
|
80
|
+
deleteGrant(connectionName: string, principalKey: string): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
export declare class InMemoryConnectionAuthorizationSessionStore implements ConnectionAuthorizationSessionStore {
|
|
83
|
+
protected readonly sessions: Map<string, ConnectionAuthorizationSessionRecord>;
|
|
84
|
+
createSession(session: ConnectionAuthorizationSessionRecord): Promise<void>;
|
|
85
|
+
updateSession(id: string, patch: Partial<Omit<ConnectionAuthorizationSessionRecord, "id" | "createdAt">>): Promise<ConnectionAuthorizationSessionRecord>;
|
|
86
|
+
getSession(id: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
|
|
87
|
+
getSessionByState(state: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
|
|
88
|
+
findPendingSession(connectionName: string, principalKey: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
|
|
89
|
+
}
|
|
90
|
+
export declare class FileConnectionGrantStore extends InMemoryConnectionGrantStore {
|
|
91
|
+
private readonly path;
|
|
92
|
+
private readonly secret;
|
|
93
|
+
constructor(path: string, secret: string);
|
|
94
|
+
saveGrant(grant: StoredConnectionGrant): Promise<void>;
|
|
95
|
+
deleteGrant(connectionName: string, principalKey: string): Promise<void>;
|
|
96
|
+
private load;
|
|
97
|
+
private persist;
|
|
98
|
+
}
|
|
99
|
+
export declare class FileConnectionAuthorizationSessionStore extends InMemoryConnectionAuthorizationSessionStore {
|
|
100
|
+
private readonly path;
|
|
101
|
+
private readonly secret;
|
|
102
|
+
constructor(path: string, secret: string);
|
|
103
|
+
createSession(session: ConnectionAuthorizationSessionRecord): Promise<void>;
|
|
104
|
+
updateSession(id: string, patch: Partial<Omit<ConnectionAuthorizationSessionRecord, "id" | "createdAt">>): Promise<ConnectionAuthorizationSessionRecord>;
|
|
105
|
+
private load;
|
|
106
|
+
private persist;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=connection-stores.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-stores.d.ts","sourceRoot":"","sources":["../src/connection-stores.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { createCipheriv, createDecipheriv, createHash, randomBytes } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { connectionGrantKey, timestamp } from "./connection-util.js";
|
|
5
|
+
export const CONNECTION_SEARCH_TOOL_NAME = "connection_search";
|
|
6
|
+
export class InMemoryConnectionGrantStore {
|
|
7
|
+
grants = new Map();
|
|
8
|
+
async getGrant(connectionName, principalKey) {
|
|
9
|
+
return this.grants.get(connectionGrantKey(connectionName, principalKey));
|
|
10
|
+
}
|
|
11
|
+
async saveGrant(grant) {
|
|
12
|
+
this.grants.set(connectionGrantKey(grant.connectionName, grant.principalKey), grant);
|
|
13
|
+
}
|
|
14
|
+
async deleteGrant(connectionName, principalKey) {
|
|
15
|
+
this.grants.delete(connectionGrantKey(connectionName, principalKey));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class InMemoryConnectionAuthorizationSessionStore {
|
|
19
|
+
sessions = new Map();
|
|
20
|
+
async createSession(session) {
|
|
21
|
+
this.sessions.set(session.id, session);
|
|
22
|
+
}
|
|
23
|
+
async updateSession(id, patch) {
|
|
24
|
+
const current = this.sessions.get(id);
|
|
25
|
+
if (!current)
|
|
26
|
+
throw new Error(`Connection authorization session not found: ${id}`);
|
|
27
|
+
const updated = { ...current, ...patch, updatedAt: timestamp() };
|
|
28
|
+
this.sessions.set(id, updated);
|
|
29
|
+
return updated;
|
|
30
|
+
}
|
|
31
|
+
async getSession(id) {
|
|
32
|
+
return this.sessions.get(id);
|
|
33
|
+
}
|
|
34
|
+
async getSessionByState(state) {
|
|
35
|
+
return [...this.sessions.values()].find((session) => session.state === state);
|
|
36
|
+
}
|
|
37
|
+
async findPendingSession(connectionName, principalKey) {
|
|
38
|
+
const now = Date.now();
|
|
39
|
+
return [...this.sessions.values()].find((session) => session.connectionName === connectionName &&
|
|
40
|
+
session.principalKey === principalKey &&
|
|
41
|
+
session.status === "pending" &&
|
|
42
|
+
session.expiresAt > now);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export class FileConnectionGrantStore extends InMemoryConnectionGrantStore {
|
|
46
|
+
path;
|
|
47
|
+
secret;
|
|
48
|
+
constructor(path, secret) {
|
|
49
|
+
super();
|
|
50
|
+
this.path = path;
|
|
51
|
+
this.secret = secret;
|
|
52
|
+
this.load();
|
|
53
|
+
}
|
|
54
|
+
async saveGrant(grant) {
|
|
55
|
+
await super.saveGrant(grant);
|
|
56
|
+
this.persist();
|
|
57
|
+
}
|
|
58
|
+
async deleteGrant(connectionName, principalKey) {
|
|
59
|
+
await super.deleteGrant(connectionName, principalKey);
|
|
60
|
+
this.persist();
|
|
61
|
+
}
|
|
62
|
+
load() {
|
|
63
|
+
const parsed = readEncryptedStore(this.path, this.secret) ?? {};
|
|
64
|
+
for (const grant of parsed.grants ?? []) {
|
|
65
|
+
void super.saveGrant(grant);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
persist() {
|
|
69
|
+
const grants = [...this.grants.values()];
|
|
70
|
+
writeEncryptedStore(this.path, this.secret, { grants });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export class FileConnectionAuthorizationSessionStore extends InMemoryConnectionAuthorizationSessionStore {
|
|
74
|
+
path;
|
|
75
|
+
secret;
|
|
76
|
+
constructor(path, secret) {
|
|
77
|
+
super();
|
|
78
|
+
this.path = path;
|
|
79
|
+
this.secret = secret;
|
|
80
|
+
this.load();
|
|
81
|
+
}
|
|
82
|
+
async createSession(session) {
|
|
83
|
+
await super.createSession(session);
|
|
84
|
+
this.persist();
|
|
85
|
+
}
|
|
86
|
+
async updateSession(id, patch) {
|
|
87
|
+
const updated = await super.updateSession(id, patch);
|
|
88
|
+
this.persist();
|
|
89
|
+
return updated;
|
|
90
|
+
}
|
|
91
|
+
load() {
|
|
92
|
+
const parsed = readEncryptedStore(this.path, this.secret) ?? {};
|
|
93
|
+
for (const session of parsed.sessions ?? []) {
|
|
94
|
+
void super.createSession(session);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
persist() {
|
|
98
|
+
const sessions = [...this.sessions.values()];
|
|
99
|
+
writeEncryptedStore(this.path, this.secret, { sessions });
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function readEncryptedStore(path, secret) {
|
|
103
|
+
if (!existsSync(path))
|
|
104
|
+
return undefined;
|
|
105
|
+
const envelope = JSON.parse(readFileSync(path, "utf8"));
|
|
106
|
+
if (!envelope.iv || !envelope.tag || !envelope.data)
|
|
107
|
+
return undefined;
|
|
108
|
+
const decipher = createDecipheriv("aes-256-gcm", encryptionKey(secret), Buffer.from(envelope.iv, "base64"));
|
|
109
|
+
decipher.setAuthTag(Buffer.from(envelope.tag, "base64"));
|
|
110
|
+
const plaintext = Buffer.concat([decipher.update(Buffer.from(envelope.data, "base64")), decipher.final()]).toString("utf8");
|
|
111
|
+
return JSON.parse(plaintext);
|
|
112
|
+
}
|
|
113
|
+
function writeEncryptedStore(path, secret, value) {
|
|
114
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
115
|
+
const iv = randomBytes(12);
|
|
116
|
+
const cipher = createCipheriv("aes-256-gcm", encryptionKey(secret), iv);
|
|
117
|
+
const encrypted = Buffer.concat([cipher.update(JSON.stringify(value)), cipher.final()]);
|
|
118
|
+
writeFileSync(path, JSON.stringify({
|
|
119
|
+
iv: iv.toString("base64"),
|
|
120
|
+
tag: cipher.getAuthTag().toString("base64"),
|
|
121
|
+
data: encrypted.toString("base64")
|
|
122
|
+
}, null, 2));
|
|
123
|
+
}
|
|
124
|
+
function encryptionKey(secret) {
|
|
125
|
+
return createHash("sha256").update(secret || "openeve-local-dev-connection-secret").digest();
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=connection-stores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-stores.js","sourceRoot":"","sources":["../src/connection-stores.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CompiledConnection, ConnectionAccessDefinition, HttpApiConnectionDefinition, JsonObject, McpClientConnectionDefinition, OpenAPIConnectionDefinition, SandboxCliConnectionDefinition, ToolFilterDefinition } from "@assemblyline-agents/core";
|
|
2
|
+
import type { ConnectionToolMetadata } from "./connection-stores.js";
|
|
3
|
+
/**
|
|
4
|
+
* Small shared guards, scoring and misc helpers for the runtime connection
|
|
5
|
+
* modules (`connections.ts`, `connection-stores.ts`, `connection-auth-util.ts`,
|
|
6
|
+
* `connection-clients.ts`).
|
|
7
|
+
*/
|
|
8
|
+
export declare function qualifiedConnectionToolName(connectionName: string, toolName: string): string;
|
|
9
|
+
export declare function parseQualifiedName(qualifiedName: string): {
|
|
10
|
+
connectionName: string;
|
|
11
|
+
toolName: string;
|
|
12
|
+
} | undefined;
|
|
13
|
+
export declare function tokenize(value: string): string[];
|
|
14
|
+
export declare function scoreMatch(queryTokens: string[], tool: ConnectionToolMetadata): number;
|
|
15
|
+
export declare function stringifyAttributes(metadata: JsonObject): Record<string, string | string[]>;
|
|
16
|
+
export declare function passesFilter(name: string, filter: ToolFilterDefinition | undefined): boolean;
|
|
17
|
+
export type ConnectionToolAccess = "read" | "write" | "none";
|
|
18
|
+
export declare function connectionToolAccess(name: string, access: ConnectionAccessDefinition): ConnectionToolAccess;
|
|
19
|
+
export declare function matchesToolPatterns(name: string, patterns: string[]): boolean;
|
|
20
|
+
export declare function connectionGrantKey(connectionName: string, principalKey: string): string;
|
|
21
|
+
export declare function timestamp(): string;
|
|
22
|
+
export declare function stringValue(value: unknown): string;
|
|
23
|
+
export declare function isLiveConnection(connection: CompiledConnection): boolean;
|
|
24
|
+
export declare function liveDefinitionUrl(definition: McpClientConnectionDefinition | OpenAPIConnectionDefinition | HttpApiConnectionDefinition | SandboxCliConnectionDefinition): string | undefined;
|
|
25
|
+
export declare function isJsonObject(value: unknown): value is JsonObject;
|
|
26
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
27
|
+
//# sourceMappingURL=connection-util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-util.d.ts","sourceRoot":"","sources":["../src/connection-util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,UAAU,EACV,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE;;;;GAIG;AAEH,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5F;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOlH;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAKhD;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,sBAAsB,GAAG,MAAM,CActF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAO3F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAI5F;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,GAAG,oBAAoB,CAI3G;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAE7E;AAkBD,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGlD;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAKxE;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EACN,6BAA6B,GAC7B,2BAA2B,GAC3B,2BAA2B,GAC3B,8BAA8B,GACjC,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Small shared guards, scoring and misc helpers for the runtime connection
|
|
3
|
+
* modules (`connections.ts`, `connection-stores.ts`, `connection-auth-util.ts`,
|
|
4
|
+
* `connection-clients.ts`).
|
|
5
|
+
*/
|
|
6
|
+
export function qualifiedConnectionToolName(connectionName, toolName) {
|
|
7
|
+
return `${connectionName}__${toolName}`;
|
|
8
|
+
}
|
|
9
|
+
export function parseQualifiedName(qualifiedName) {
|
|
10
|
+
const index = qualifiedName.indexOf("__");
|
|
11
|
+
if (index <= 0 || index >= qualifiedName.length - 2)
|
|
12
|
+
return undefined;
|
|
13
|
+
return {
|
|
14
|
+
connectionName: qualifiedName.slice(0, index),
|
|
15
|
+
toolName: qualifiedName.slice(index + 2)
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function tokenize(value) {
|
|
19
|
+
return value
|
|
20
|
+
.toLowerCase()
|
|
21
|
+
.split(/[\s_\-./]+/u)
|
|
22
|
+
.filter((token) => token.length > 1);
|
|
23
|
+
}
|
|
24
|
+
export function scoreMatch(queryTokens, tool) {
|
|
25
|
+
if (queryTokens.length === 0)
|
|
26
|
+
return 1;
|
|
27
|
+
const nameTokens = tokenize(tool.name);
|
|
28
|
+
const descriptionTokens = tokenize(tool.description);
|
|
29
|
+
let score = 0;
|
|
30
|
+
for (const query of queryTokens) {
|
|
31
|
+
for (const token of nameTokens) {
|
|
32
|
+
if (token.includes(query) || query.includes(token))
|
|
33
|
+
score += 3;
|
|
34
|
+
}
|
|
35
|
+
for (const token of descriptionTokens) {
|
|
36
|
+
if (token.includes(query) || query.includes(token))
|
|
37
|
+
score += 1;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return score;
|
|
41
|
+
}
|
|
42
|
+
export function stringifyAttributes(metadata) {
|
|
43
|
+
const out = {};
|
|
44
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
45
|
+
if (Array.isArray(value))
|
|
46
|
+
out[key] = value.map((item) => String(item));
|
|
47
|
+
else if (value !== null && typeof value !== "object")
|
|
48
|
+
out[key] = String(value);
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
export function passesFilter(name, filter) {
|
|
53
|
+
if (!filter)
|
|
54
|
+
return true;
|
|
55
|
+
if ("allow" in filter)
|
|
56
|
+
return matchesToolPatterns(name, filter.allow);
|
|
57
|
+
return !matchesToolPatterns(name, filter.block);
|
|
58
|
+
}
|
|
59
|
+
export function connectionToolAccess(name, access) {
|
|
60
|
+
if (access.write !== false && matchesToolPatterns(name, access.write.tools))
|
|
61
|
+
return "write";
|
|
62
|
+
if (matchesToolPatterns(name, access.read.tools))
|
|
63
|
+
return "read";
|
|
64
|
+
return "none";
|
|
65
|
+
}
|
|
66
|
+
export function matchesToolPatterns(name, patterns) {
|
|
67
|
+
return patterns.some((pattern) => matchesToolPattern(name, pattern));
|
|
68
|
+
}
|
|
69
|
+
function matchesToolPattern(name, pattern) {
|
|
70
|
+
if (pattern.startsWith("regex:")) {
|
|
71
|
+
try {
|
|
72
|
+
return new RegExp(pattern.slice("regex:".length), "iu").test(name);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (!pattern.includes("*"))
|
|
79
|
+
return name === pattern;
|
|
80
|
+
const expression = pattern
|
|
81
|
+
.split("*")
|
|
82
|
+
.map((part) => part.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&"))
|
|
83
|
+
.join(".*");
|
|
84
|
+
return new RegExp(`^${expression}$`, "u").test(name);
|
|
85
|
+
}
|
|
86
|
+
export function connectionGrantKey(connectionName, principalKey) {
|
|
87
|
+
return `${connectionName}:${principalKey}`;
|
|
88
|
+
}
|
|
89
|
+
export function timestamp() {
|
|
90
|
+
return new Date().toISOString();
|
|
91
|
+
}
|
|
92
|
+
export function stringValue(value) {
|
|
93
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
94
|
+
return String(value);
|
|
95
|
+
return typeof value === "string" ? value.trim() : "";
|
|
96
|
+
}
|
|
97
|
+
export function isLiveConnection(connection) {
|
|
98
|
+
return connection.protocol === "mcp"
|
|
99
|
+
|| connection.protocol === "openapi"
|
|
100
|
+
|| connection.protocol === "http"
|
|
101
|
+
|| connection.protocol === "cli";
|
|
102
|
+
}
|
|
103
|
+
export function liveDefinitionUrl(definition) {
|
|
104
|
+
if ("url" in definition && typeof definition.url === "string")
|
|
105
|
+
return definition.url;
|
|
106
|
+
if ("baseUrl" in definition && definition.baseUrl)
|
|
107
|
+
return definition.baseUrl;
|
|
108
|
+
if ("command" in definition && typeof definition.command === "string")
|
|
109
|
+
return `cli:${definition.command}`;
|
|
110
|
+
return "spec" in definition && typeof definition.spec === "string" ? definition.spec : undefined;
|
|
111
|
+
}
|
|
112
|
+
export function isJsonObject(value) {
|
|
113
|
+
return isRecord(value);
|
|
114
|
+
}
|
|
115
|
+
export function isRecord(value) {
|
|
116
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=connection-util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-util.js","sourceRoot":"","sources":["../src/connection-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { CompiledConnection, ConnectionResolverContext, JsonObject, SandboxCliInvocation, SandboxCommandResult } from "@assemblyline-agents/core";
|
|
2
|
+
import { type ConnectionClient, type LiveConnectionDefinition } from "./connection-clients.js";
|
|
3
|
+
import { type ConnectionAuthorizationSessionRecord, type ConnectionAuthorizationSessionStore, type ConnectionGrantStore, type ConnectionSearchInput, type ConnectionSearchResultItem, type ConnectionToolMetadata } from "./connection-stores.js";
|
|
4
|
+
export * from "./connection-auth-util.js";
|
|
5
|
+
export * from "./connection-clients.js";
|
|
6
|
+
export * from "./connection-stores.js";
|
|
7
|
+
export * from "./connection-util.js";
|
|
8
|
+
export * from "./computer-relay-protocol.js";
|
|
9
|
+
export interface RuntimeConnectionOptions {
|
|
10
|
+
connections: CompiledConnection[];
|
|
11
|
+
loadDefinition(connection: CompiledConnection): Promise<unknown>;
|
|
12
|
+
env: Record<string, string | undefined>;
|
|
13
|
+
fetch: typeof fetch;
|
|
14
|
+
session: ConnectionResolverContext["session"];
|
|
15
|
+
grantStore?: ConnectionGrantStore;
|
|
16
|
+
authorizationSessionStore?: ConnectionAuthorizationSessionStore;
|
|
17
|
+
callbackBaseUrl?: string;
|
|
18
|
+
/** Runtime host platform override for tests. Defaults to process.platform. */
|
|
19
|
+
platform?: string;
|
|
20
|
+
executeSandboxCli?: (invocation: SandboxCliInvocation & {
|
|
21
|
+
command: string;
|
|
22
|
+
}, execution?: ConnectionExecutionContext) => Promise<SandboxCommandResult>;
|
|
23
|
+
}
|
|
24
|
+
export interface ConnectionExecutionContext {
|
|
25
|
+
runId?: string;
|
|
26
|
+
toolCallId?: string;
|
|
27
|
+
toolName?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface MaterializedConnectionCredential {
|
|
30
|
+
connection: string;
|
|
31
|
+
files: Array<{
|
|
32
|
+
path: string;
|
|
33
|
+
content: string;
|
|
34
|
+
mode: number;
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
export interface ConnectionCredentialMaterialization {
|
|
38
|
+
materialized: MaterializedConnectionCredential[];
|
|
39
|
+
pending: Array<{
|
|
40
|
+
connection: string;
|
|
41
|
+
reason: string;
|
|
42
|
+
authorizeUrl?: string;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
export declare function connectionAuthorizationPrompt(store: ConnectionAuthorizationSessionStore, authorizationSessionId: string | undefined, baseResponse: string): Promise<string>;
|
|
46
|
+
/**
|
|
47
|
+
* Project declared connection credentials into a freshly acquired sandbox.
|
|
48
|
+
* Tokens resolve host-side (cached grant or refresh exchange — the grant
|
|
49
|
+
* store is updated before anything reaches the sandbox), so recycling the
|
|
50
|
+
* sandbox never loses a durable credential and never holds one. Subagent
|
|
51
|
+
* sandboxes are excluded: they receive only their engine harness credential,
|
|
52
|
+
* never the parent's connections. The emitted event carries paths only —
|
|
53
|
+
* credential contents never reach the event log.
|
|
54
|
+
*/
|
|
55
|
+
export declare function materializeConnectionCredentialsIntoSandbox(run: {
|
|
56
|
+
id: string;
|
|
57
|
+
input: Record<string, unknown>;
|
|
58
|
+
}, registry: RuntimeConnectionRegistry, sandbox: {
|
|
59
|
+
writeFile(path: string, contents: string): unknown;
|
|
60
|
+
shell(command: string): unknown;
|
|
61
|
+
}, appendEvent: (eventType: string, payload: JsonObject) => Promise<unknown>): Promise<void>;
|
|
62
|
+
export declare const CONNECTION_PAIR_TOOL_NAME = "pair";
|
|
63
|
+
export declare class RuntimeConnectionRegistry {
|
|
64
|
+
private readonly options;
|
|
65
|
+
private resolved;
|
|
66
|
+
private clients;
|
|
67
|
+
private tokenCache;
|
|
68
|
+
private executionContext;
|
|
69
|
+
private readonly grantStore;
|
|
70
|
+
private readonly authorizationSessionStore;
|
|
71
|
+
constructor(options: RuntimeConnectionOptions);
|
|
72
|
+
hasLiveConnections(): boolean;
|
|
73
|
+
liveConnectionNames(): string[];
|
|
74
|
+
search(input: ConnectionSearchInput, execution?: ConnectionExecutionContext): Promise<ConnectionSearchResultItem[]>;
|
|
75
|
+
private searchWithContext;
|
|
76
|
+
private supportsPairing;
|
|
77
|
+
/**
|
|
78
|
+
* Redeem a user-provided one-time pairing code host-side and persist the
|
|
79
|
+
* resulting credentials in the grant store. The durable credential never
|
|
80
|
+
* enters a sandbox; the model only relays the single-use code.
|
|
81
|
+
*/
|
|
82
|
+
redeemPairingCode(connectionName: string, code: string): Promise<{
|
|
83
|
+
connected: true;
|
|
84
|
+
connection: string;
|
|
85
|
+
message: string;
|
|
86
|
+
}>;
|
|
87
|
+
metadataForQualifiedName(qualifiedName: string): Promise<ConnectionToolMetadata | undefined>;
|
|
88
|
+
executeQualifiedTool(qualifiedName: string, input: unknown, execution?: ConnectionExecutionContext): Promise<unknown>;
|
|
89
|
+
getConnectionApproval(connectionName: string, toolName: string): Promise<LiveConnectionDefinition["approval"] | undefined>;
|
|
90
|
+
getClient(connectionName: string): ConnectionClient;
|
|
91
|
+
executeSandboxCli(invocation: SandboxCliInvocation & {
|
|
92
|
+
command: string;
|
|
93
|
+
}): Promise<SandboxCommandResult>;
|
|
94
|
+
resolveHeaders(connection: CompiledConnection, definition: LiveConnectionDefinition): Promise<Record<string, string>>;
|
|
95
|
+
/**
|
|
96
|
+
* Start (or resume) the authorization flow for a named connection and
|
|
97
|
+
* report where to send the user's browser. Backs the host's authenticated
|
|
98
|
+
* GET /openeve/connections/authorize endpoint (agent-control route class,
|
|
99
|
+
* JSON — deliberately not a public 302, so unauthenticated callers cannot
|
|
100
|
+
* trigger consent flows or enumerate connection names): the dashboard
|
|
101
|
+
* fetches the URL and opens it; the provider redirects back to the public,
|
|
102
|
+
* idempotency-claimed callback. Hitting it when a grant already exists
|
|
103
|
+
* reports "connected" instead of minting a redundant session; a pending
|
|
104
|
+
* session's challenge is reused.
|
|
105
|
+
*/
|
|
106
|
+
beginAuthorization(connectionName: string): Promise<{
|
|
107
|
+
status: "authorize";
|
|
108
|
+
url: string;
|
|
109
|
+
} | {
|
|
110
|
+
status: "connected";
|
|
111
|
+
} | {
|
|
112
|
+
status: "unavailable";
|
|
113
|
+
reason: string;
|
|
114
|
+
}>;
|
|
115
|
+
/**
|
|
116
|
+
* Resolve every connection that declares `materialize` and render its
|
|
117
|
+
* credential files for injection into the agent sandbox. Tokens resolve
|
|
118
|
+
* through the normal host-side flow — cached grant, or a refresh exchange
|
|
119
|
+
* that persists the rotated grant to the grant store BEFORE anything is
|
|
120
|
+
* rendered — so the sandbox only ever sees the short-lived access token.
|
|
121
|
+
*
|
|
122
|
+
* A connection that cannot resolve (missing grant, pending authorization,
|
|
123
|
+
* failed refresh) is reported as pending, never thrown: missing credentials
|
|
124
|
+
* are a recoverable connection-required state, not a boot crash.
|
|
125
|
+
*/
|
|
126
|
+
materializeCredentials(): Promise<ConnectionCredentialMaterialization>;
|
|
127
|
+
evictToken(connection: CompiledConnection, definition: LiveConnectionDefinition): Promise<void>;
|
|
128
|
+
completeAuthorization(callback: {
|
|
129
|
+
params: Record<string, string>;
|
|
130
|
+
method: string;
|
|
131
|
+
body?: string;
|
|
132
|
+
}): Promise<ConnectionAuthorizationSessionRecord>;
|
|
133
|
+
getAuthorizationSession(id: string): Promise<ConnectionAuthorizationSessionRecord | undefined>;
|
|
134
|
+
updateAuthorizationSession(id: string, patch: Partial<Omit<ConnectionAuthorizationSessionRecord, "id" | "createdAt">>): Promise<ConnectionAuthorizationSessionRecord>;
|
|
135
|
+
close(): Promise<void>;
|
|
136
|
+
request(input: Parameters<typeof fetch>[0], init?: Parameters<typeof fetch>[1]): ReturnType<typeof fetch>;
|
|
137
|
+
environmentValue(name: string): string | undefined;
|
|
138
|
+
private resolveConnection;
|
|
139
|
+
private loadResolvedConnection;
|
|
140
|
+
private targetConnections;
|
|
141
|
+
private connectionFailure;
|
|
142
|
+
private resolveToken;
|
|
143
|
+
private resolverContext;
|
|
144
|
+
private withExecutionContext;
|
|
145
|
+
private createAuthorizationRequiredError;
|
|
146
|
+
private callbackUrl;
|
|
147
|
+
private exchangeOAuthAuthorizationCode;
|
|
148
|
+
private refreshOAuthGrant;
|
|
149
|
+
private requestOAuthToken;
|
|
150
|
+
private saveGrantFromToken;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=connections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../src/connections.ts"],"names":[],"mappings":"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"}
|