@once-agent/sdk 0.1.10 → 0.1.12
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 +76 -1
- package/dist/cli.js +50 -1
- package/dist/cli.js.map +1 -1
- package/dist/connect/identity.d.ts +22 -0
- package/dist/connect/identity.d.ts.map +1 -0
- package/dist/connect/identity.js +159 -0
- package/dist/connect/identity.js.map +1 -0
- package/dist/connect/index.d.ts +17 -0
- package/dist/connect/index.d.ts.map +1 -0
- package/dist/connect/index.js +9 -0
- package/dist/connect/index.js.map +1 -0
- package/dist/connect/local-agent-tool.d.ts +62 -0
- package/dist/connect/local-agent-tool.d.ts.map +1 -0
- package/dist/connect/local-agent-tool.js +131 -0
- package/dist/connect/local-agent-tool.js.map +1 -0
- package/dist/connect/manifest.d.ts +55 -0
- package/dist/connect/manifest.d.ts.map +1 -0
- package/dist/connect/manifest.js +166 -0
- package/dist/connect/manifest.js.map +1 -0
- package/dist/connect/openai-function-tools.d.ts +66 -0
- package/dist/connect/openai-function-tools.d.ts.map +1 -0
- package/dist/connect/openai-function-tools.js +182 -0
- package/dist/connect/openai-function-tools.js.map +1 -0
- package/dist/connect/payload.d.ts +30 -0
- package/dist/connect/payload.d.ts.map +1 -0
- package/dist/connect/payload.js +122 -0
- package/dist/connect/payload.js.map +1 -0
- package/dist/connect/tool-classifier.d.ts +40 -0
- package/dist/connect/tool-classifier.d.ts.map +1 -0
- package/dist/connect/tool-classifier.js +271 -0
- package/dist/connect/tool-classifier.js.map +1 -0
- package/dist/connect/toolset.d.ts +42 -0
- package/dist/connect/toolset.d.ts.map +1 -0
- package/dist/connect/toolset.js +123 -0
- package/dist/connect/toolset.js.map +1 -0
- package/dist/discovery/index.d.ts +13 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +8 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/execution-observation.d.ts +122 -0
- package/dist/execution-observation.d.ts.map +1 -0
- package/dist/execution-observation.js +324 -0
- package/dist/execution-observation.js.map +1 -0
- package/dist/gateway/index.d.ts +9 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +5 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/local-toolset.d.ts +32 -0
- package/dist/gateway/local-toolset.d.ts.map +1 -0
- package/dist/gateway/local-toolset.js +79 -0
- package/dist/gateway/local-toolset.js.map +1 -0
- package/dist/gateway/openai-function-tools.d.ts +28 -0
- package/dist/gateway/openai-function-tools.d.ts.map +1 -0
- package/dist/gateway/openai-function-tools.js +117 -0
- package/dist/gateway/openai-function-tools.js.map +1 -0
- package/dist/gateway/planner.d.ts +53 -0
- package/dist/gateway/planner.d.ts.map +1 -0
- package/dist/gateway/planner.js +155 -0
- package/dist/gateway/planner.js.map +1 -0
- package/dist/gateway/tool-graph-binding.d.ts +51 -0
- package/dist/gateway/tool-graph-binding.d.ts.map +1 -0
- package/dist/gateway/tool-graph-binding.js +123 -0
- package/dist/gateway/tool-graph-binding.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/langchain-execution-observer.d.ts +22 -0
- package/dist/langchain-execution-observer.d.ts.map +1 -0
- package/dist/langchain-execution-observer.js +128 -0
- package/dist/langchain-execution-observer.js.map +1 -0
- package/dist/langchain-runtime-discovery.d.ts +33 -0
- package/dist/langchain-runtime-discovery.d.ts.map +1 -0
- package/dist/langchain-runtime-discovery.js +214 -0
- package/dist/langchain-runtime-discovery.js.map +1 -0
- package/dist/mcp-live-discovery.d.ts +71 -0
- package/dist/mcp-live-discovery.d.ts.map +1 -0
- package/dist/mcp-live-discovery.js +710 -0
- package/dist/mcp-live-discovery.js.map +1 -0
- package/dist/mcp-live-report.d.ts +3 -0
- package/dist/mcp-live-report.d.ts.map +1 -0
- package/dist/mcp-live-report.js +50 -0
- package/dist/mcp-live-report.js.map +1 -0
- package/dist/mcp-tool-refresh-report.d.ts +3 -0
- package/dist/mcp-tool-refresh-report.d.ts.map +1 -0
- package/dist/mcp-tool-refresh-report.js +44 -0
- package/dist/mcp-tool-refresh-report.js.map +1 -0
- package/dist/mcp-tool-refresh.d.ts +33 -0
- package/dist/mcp-tool-refresh.d.ts.map +1 -0
- package/dist/mcp-tool-refresh.js +489 -0
- package/dist/mcp-tool-refresh.js.map +1 -0
- package/dist/openai-agents-execution-observer.d.ts +24 -0
- package/dist/openai-agents-execution-observer.d.ts.map +1 -0
- package/dist/openai-agents-execution-observer.js +163 -0
- package/dist/openai-agents-execution-observer.js.map +1 -0
- package/dist/otel-execution-observer.d.ts +16 -0
- package/dist/otel-execution-observer.d.ts.map +1 -0
- package/dist/otel-execution-observer.js +129 -0
- package/dist/otel-execution-observer.js.map +1 -0
- package/dist/runtime-tool-discovery.d.ts +86 -0
- package/dist/runtime-tool-discovery.d.ts.map +1 -0
- package/dist/runtime-tool-discovery.js +429 -0
- package/dist/runtime-tool-discovery.js.map +1 -0
- package/dist/tool-discovery.d.ts +51 -0
- package/dist/tool-discovery.d.ts.map +1 -0
- package/dist/tool-discovery.js +487 -0
- package/dist/tool-discovery.js.map +1 -0
- package/dist/tool-importance.d.ts +34 -0
- package/dist/tool-importance.d.ts.map +1 -0
- package/dist/tool-importance.js +269 -0
- package/dist/tool-importance.js.map +1 -0
- package/dist/tool-report.d.ts +3 -0
- package/dist/tool-report.d.ts.map +1 -0
- package/dist/tool-report.js +75 -0
- package/dist/tool-report.js.map +1 -0
- package/dist/vercel-execution-observer.d.ts +12 -0
- package/dist/vercel-execution-observer.d.ts.map +1 -0
- package/dist/vercel-execution-observer.js +97 -0
- package/dist/vercel-execution-observer.js.map +1 -0
- package/dist-cjs/connect/identity.js +162 -0
- package/dist-cjs/connect/identity.js.map +1 -0
- package/dist-cjs/connect/index.js +26 -0
- package/dist-cjs/connect/index.js.map +1 -0
- package/dist-cjs/connect/local-agent-tool.js +137 -0
- package/dist-cjs/connect/local-agent-tool.js.map +1 -0
- package/dist-cjs/connect/manifest.js +171 -0
- package/dist-cjs/connect/manifest.js.map +1 -0
- package/dist-cjs/connect/openai-function-tools.js +187 -0
- package/dist-cjs/connect/openai-function-tools.js.map +1 -0
- package/dist-cjs/connect/payload.js +125 -0
- package/dist-cjs/connect/payload.js.map +1 -0
- package/dist-cjs/connect/tool-classifier.js +276 -0
- package/dist-cjs/connect/tool-classifier.js.map +1 -0
- package/dist-cjs/connect/toolset.js +126 -0
- package/dist-cjs/connect/toolset.js.map +1 -0
- package/dist-cjs/discovery/index.js +26 -0
- package/dist-cjs/discovery/index.js.map +1 -0
- package/dist-cjs/execution-observation.js +330 -0
- package/dist-cjs/execution-observation.js.map +1 -0
- package/dist-cjs/gateway/index.js +16 -0
- package/dist-cjs/gateway/index.js.map +1 -0
- package/dist-cjs/gateway/local-toolset.js +84 -0
- package/dist-cjs/gateway/local-toolset.js.map +1 -0
- package/dist-cjs/gateway/openai-function-tools.js +120 -0
- package/dist-cjs/gateway/openai-function-tools.js.map +1 -0
- package/dist-cjs/gateway/planner.js +160 -0
- package/dist-cjs/gateway/planner.js.map +1 -0
- package/dist-cjs/gateway/tool-graph-binding.js +126 -0
- package/dist-cjs/gateway/tool-graph-binding.js.map +1 -0
- package/dist-cjs/index.js +4 -1
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/langchain-execution-observer.js +131 -0
- package/dist-cjs/langchain-execution-observer.js.map +1 -0
- package/dist-cjs/langchain-runtime-discovery.js +218 -0
- package/dist-cjs/langchain-runtime-discovery.js.map +1 -0
- package/dist-cjs/openai-agents-execution-observer.js +166 -0
- package/dist-cjs/openai-agents-execution-observer.js.map +1 -0
- package/dist-cjs/otel-execution-observer.js +132 -0
- package/dist-cjs/otel-execution-observer.js.map +1 -0
- package/dist-cjs/runtime-tool-discovery.js +436 -0
- package/dist-cjs/runtime-tool-discovery.js.map +1 -0
- package/dist-cjs/tool-importance.js +272 -0
- package/dist-cjs/tool-importance.js.map +1 -0
- package/dist-cjs/vercel-execution-observer.js +100 -0
- package/dist-cjs/vercel-execution-observer.js.map +1 -0
- package/package.json +25 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-agent-tool.js","sourceRoot":"","sources":["../../src/connect/local-agent-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type ConnectToolClassificationReason, type ConnectToolDecision } from "./tool-classifier.js";
|
|
2
|
+
export declare const CONNECT_MANIFEST_VERSION: "connect-tool-plan-v1";
|
|
3
|
+
export type ConnectManifestToolSource = "native" | "openai_function" | "invalid";
|
|
4
|
+
export interface ConnectManifestPlanEntry {
|
|
5
|
+
index: number;
|
|
6
|
+
name: string | null;
|
|
7
|
+
source: ConnectManifestToolSource;
|
|
8
|
+
decision: ConnectToolDecision;
|
|
9
|
+
reason: ConnectToolClassificationReason;
|
|
10
|
+
signals: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface ConnectManifestPlanSummary {
|
|
13
|
+
total: number;
|
|
14
|
+
protect: number;
|
|
15
|
+
bypass: number;
|
|
16
|
+
unknown: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ConnectManifestPlan {
|
|
19
|
+
version: typeof CONNECT_MANIFEST_VERSION;
|
|
20
|
+
valid: boolean;
|
|
21
|
+
ready: boolean;
|
|
22
|
+
reason: "CLASSIFIED" | "INVALID_MANIFEST";
|
|
23
|
+
entries: readonly Readonly<ConnectManifestPlanEntry>[];
|
|
24
|
+
protect: readonly Readonly<ConnectManifestPlanEntry>[];
|
|
25
|
+
bypass: readonly Readonly<ConnectManifestPlanEntry>[];
|
|
26
|
+
unknown: readonly Readonly<ConnectManifestPlanEntry>[];
|
|
27
|
+
summary: Readonly<ConnectManifestPlanSummary>;
|
|
28
|
+
}
|
|
29
|
+
/** Internal normalized representation shared by manifest planning and toolset wiring. */
|
|
30
|
+
export interface NormalizedConnectManifestTool {
|
|
31
|
+
descriptor: unknown;
|
|
32
|
+
name: string | null;
|
|
33
|
+
source: ConnectManifestToolSource;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Normalize the same manifest shapes accepted by planConnectToolManifest().
|
|
37
|
+
*
|
|
38
|
+
* This is exported for internal Connect modules so classification and wiring
|
|
39
|
+
* cannot silently disagree about the descriptor being inspected. It is not
|
|
40
|
+
* re-exported from the public @once-agent/sdk/connect entry point.
|
|
41
|
+
*/
|
|
42
|
+
export declare function normalizeConnectToolManifest(manifest: unknown): readonly NormalizedConnectManifestTool[] | null;
|
|
43
|
+
/**
|
|
44
|
+
* Inspect a complete tool manifest and produce an ordered Once protection plan.
|
|
45
|
+
*
|
|
46
|
+
* Accepted inputs:
|
|
47
|
+
* - an array of native/MCP-style tool descriptors;
|
|
48
|
+
* - an MCP-style `{ tools: [...] }` result;
|
|
49
|
+
* - OpenAI-style `{ type: "function", function: { ... } }` entries.
|
|
50
|
+
*
|
|
51
|
+
* `ready` is true only when every entry has a deterministic PROTECT/BYPASS
|
|
52
|
+
* decision. UNKNOWN never becomes implicit permission.
|
|
53
|
+
*/
|
|
54
|
+
export declare function planConnectToolManifest(manifest: unknown): Readonly<ConnectManifestPlan>;
|
|
55
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/connect/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,wBAAwB,EAAG,sBAA+B,CAAC;AAExE,MAAM,MAAM,yBAAyB,GACjC,QAAQ,GACR,iBAAiB,GACjB,SAAS,CAAC;AAEd,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,+BAA+B,CAAC;IACxC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,wBAAwB,CAAC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,kBAAkB,CAAC;IAC1C,OAAO,EAAE,SAAS,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;IACvD,OAAO,EAAE,SAAS,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;IACvD,MAAM,EAAE,SAAS,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;IACtD,OAAO,EAAE,SAAS,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;IACvD,OAAO,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAC;CAC/C;AAED,yFAAyF;AACzF,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAiGD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,OAAO,GAChB,SAAS,6BAA6B,EAAE,GAAG,IAAI,CAUjD;AAiCD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,OAAO,GAChB,QAAQ,CAAC,mBAAmB,CAAC,CAkD/B"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { CONNECT_TOOL_DECISION, classifyConnectTool, } from "./tool-classifier.js";
|
|
2
|
+
export const CONNECT_MANIFEST_VERSION = "connect-tool-plan-v1";
|
|
3
|
+
function isRecord(value) {
|
|
4
|
+
return Boolean(value) &&
|
|
5
|
+
typeof value === "object" &&
|
|
6
|
+
!Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
function normalizeManifestInput(manifest) {
|
|
9
|
+
if (Array.isArray(manifest)) {
|
|
10
|
+
return manifest;
|
|
11
|
+
}
|
|
12
|
+
if (isRecord(manifest) && Array.isArray(manifest.tools)) {
|
|
13
|
+
return manifest.tools;
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
function normalizedAnnotations(value) {
|
|
18
|
+
return isRecord(value)
|
|
19
|
+
? value
|
|
20
|
+
: undefined;
|
|
21
|
+
}
|
|
22
|
+
function normalizedMeta(value) {
|
|
23
|
+
return isRecord(value)
|
|
24
|
+
? value
|
|
25
|
+
: undefined;
|
|
26
|
+
}
|
|
27
|
+
function normalizeTool(tool) {
|
|
28
|
+
if (!isRecord(tool)) {
|
|
29
|
+
return {
|
|
30
|
+
descriptor: tool,
|
|
31
|
+
name: null,
|
|
32
|
+
source: "invalid",
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (typeof tool.name === "string" &&
|
|
36
|
+
tool.name.trim().length > 0) {
|
|
37
|
+
return {
|
|
38
|
+
descriptor: tool,
|
|
39
|
+
name: tool.name,
|
|
40
|
+
source: "native",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (tool.type === "function" &&
|
|
44
|
+
isRecord(tool.function) &&
|
|
45
|
+
typeof tool.function.name === "string" &&
|
|
46
|
+
tool.function.name.trim().length > 0) {
|
|
47
|
+
const fn = tool.function;
|
|
48
|
+
const name = tool.function.name;
|
|
49
|
+
const annotations = normalizedAnnotations(tool.annotations);
|
|
50
|
+
const meta = normalizedMeta(tool._meta) ?? normalizedMeta(fn._meta);
|
|
51
|
+
const descriptor = {
|
|
52
|
+
name,
|
|
53
|
+
...(typeof fn.description === "string"
|
|
54
|
+
? { description: fn.description }
|
|
55
|
+
: {}),
|
|
56
|
+
...(fn.parameters !== undefined
|
|
57
|
+
? { inputSchema: fn.parameters }
|
|
58
|
+
: {}),
|
|
59
|
+
...(annotations !== undefined
|
|
60
|
+
? { annotations }
|
|
61
|
+
: {}),
|
|
62
|
+
...(meta !== undefined
|
|
63
|
+
? { _meta: meta }
|
|
64
|
+
: {}),
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
descriptor,
|
|
68
|
+
name,
|
|
69
|
+
source: "openai_function",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
descriptor: tool,
|
|
74
|
+
name: null,
|
|
75
|
+
source: "invalid",
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Normalize the same manifest shapes accepted by planConnectToolManifest().
|
|
80
|
+
*
|
|
81
|
+
* This is exported for internal Connect modules so classification and wiring
|
|
82
|
+
* cannot silently disagree about the descriptor being inspected. It is not
|
|
83
|
+
* re-exported from the public @once-agent/sdk/connect entry point.
|
|
84
|
+
*/
|
|
85
|
+
export function normalizeConnectToolManifest(manifest) {
|
|
86
|
+
const tools = normalizeManifestInput(manifest);
|
|
87
|
+
if (!tools) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return Object.freeze(tools.map(tool => Object.freeze(normalizeTool(tool))));
|
|
91
|
+
}
|
|
92
|
+
function freezeEntry(entry) {
|
|
93
|
+
return Object.freeze({
|
|
94
|
+
...entry,
|
|
95
|
+
signals: Object.freeze([...entry.signals]),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function invalidPlan() {
|
|
99
|
+
const entries = Object.freeze([]);
|
|
100
|
+
const summary = Object.freeze({
|
|
101
|
+
total: 0,
|
|
102
|
+
protect: 0,
|
|
103
|
+
bypass: 0,
|
|
104
|
+
unknown: 0,
|
|
105
|
+
});
|
|
106
|
+
return Object.freeze({
|
|
107
|
+
version: CONNECT_MANIFEST_VERSION,
|
|
108
|
+
valid: false,
|
|
109
|
+
ready: false,
|
|
110
|
+
reason: "INVALID_MANIFEST",
|
|
111
|
+
entries,
|
|
112
|
+
protect: entries,
|
|
113
|
+
bypass: entries,
|
|
114
|
+
unknown: entries,
|
|
115
|
+
summary,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Inspect a complete tool manifest and produce an ordered Once protection plan.
|
|
120
|
+
*
|
|
121
|
+
* Accepted inputs:
|
|
122
|
+
* - an array of native/MCP-style tool descriptors;
|
|
123
|
+
* - an MCP-style `{ tools: [...] }` result;
|
|
124
|
+
* - OpenAI-style `{ type: "function", function: { ... } }` entries.
|
|
125
|
+
*
|
|
126
|
+
* `ready` is true only when every entry has a deterministic PROTECT/BYPASS
|
|
127
|
+
* decision. UNKNOWN never becomes implicit permission.
|
|
128
|
+
*/
|
|
129
|
+
export function planConnectToolManifest(manifest) {
|
|
130
|
+
const tools = normalizeConnectToolManifest(manifest);
|
|
131
|
+
if (!tools) {
|
|
132
|
+
return invalidPlan();
|
|
133
|
+
}
|
|
134
|
+
const entries = tools.map((tool, index) => {
|
|
135
|
+
const classification = classifyConnectTool(tool.descriptor);
|
|
136
|
+
return freezeEntry({
|
|
137
|
+
index,
|
|
138
|
+
name: tool.name,
|
|
139
|
+
source: tool.source,
|
|
140
|
+
decision: classification.decision,
|
|
141
|
+
reason: classification.reason,
|
|
142
|
+
signals: classification.signals,
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
const protect = entries.filter(entry => entry.decision === CONNECT_TOOL_DECISION.PROTECT);
|
|
146
|
+
const bypass = entries.filter(entry => entry.decision === CONNECT_TOOL_DECISION.BYPASS);
|
|
147
|
+
const unknown = entries.filter(entry => entry.decision === CONNECT_TOOL_DECISION.UNKNOWN);
|
|
148
|
+
const summary = Object.freeze({
|
|
149
|
+
total: entries.length,
|
|
150
|
+
protect: protect.length,
|
|
151
|
+
bypass: bypass.length,
|
|
152
|
+
unknown: unknown.length,
|
|
153
|
+
});
|
|
154
|
+
return Object.freeze({
|
|
155
|
+
version: CONNECT_MANIFEST_VERSION,
|
|
156
|
+
valid: true,
|
|
157
|
+
ready: unknown.length === 0,
|
|
158
|
+
reason: "CLASSIFIED",
|
|
159
|
+
entries: Object.freeze(entries),
|
|
160
|
+
protect: Object.freeze(protect),
|
|
161
|
+
bypass: Object.freeze(bypass),
|
|
162
|
+
unknown: Object.freeze(unknown),
|
|
163
|
+
summary,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/connect/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type ConnectToolAnnotations } from "./tool-classifier.js";
|
|
2
|
+
import type { ConnectManifestPlan } from "./manifest.js";
|
|
3
|
+
import type { LocalObservation } from "../local.js";
|
|
4
|
+
export { OpenAIAgentsConnectError, } from "./openai-agents.js";
|
|
5
|
+
export type OpenAIAgentsParsedToolInput = Record<string, unknown>;
|
|
6
|
+
/**
|
|
7
|
+
* Structural subset of the current @openai/agents FunctionTool contract.
|
|
8
|
+
*
|
|
9
|
+
* Once intentionally does not depend on @openai/agents at runtime. Keeping the
|
|
10
|
+
* adapter structural avoids forcing an Agents SDK version onto applications
|
|
11
|
+
* that already own that dependency.
|
|
12
|
+
*/
|
|
13
|
+
export interface OpenAIAgentsFunctionToolLike {
|
|
14
|
+
type: "function";
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
parameters: unknown;
|
|
18
|
+
invoke(runContext: unknown, input: string, details?: unknown): Promise<unknown>;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface OpenAIAgentsFunctionToolOverride {
|
|
22
|
+
/** Optional explicit Connect safety annotations for ambiguous tool names/descriptions. */
|
|
23
|
+
annotations?: ConnectToolAnnotations;
|
|
24
|
+
/** Optional Once metadata such as identityFields/effectFields. */
|
|
25
|
+
_meta?: Record<string, unknown>;
|
|
26
|
+
/** Optional explicit stable identity selector over parsed tool arguments. */
|
|
27
|
+
id?: (input: OpenAIAgentsParsedToolInput) => string;
|
|
28
|
+
/** Optional explicit consequential payload selector over parsed tool arguments. */
|
|
29
|
+
payload?: (input: OpenAIAgentsParsedToolInput) => Record<string, unknown>;
|
|
30
|
+
/** Optional per-tool state path override. */
|
|
31
|
+
statePath?: string;
|
|
32
|
+
/** Optional provider reconciliation hook. */
|
|
33
|
+
reconcile?: (context: {
|
|
34
|
+
id: string;
|
|
35
|
+
payload: Record<string, unknown>;
|
|
36
|
+
}) => Promise<LocalObservation<unknown>> | LocalObservation<unknown>;
|
|
37
|
+
}
|
|
38
|
+
export interface ConnectOpenAIAgentsFunctionToolsOptions {
|
|
39
|
+
/** Shared default SQLite state path for protected local function tools. */
|
|
40
|
+
statePath?: string;
|
|
41
|
+
/** Optional per-tool metadata and escape hatches. */
|
|
42
|
+
overrides?: Readonly<Record<string, OpenAIAgentsFunctionToolOverride | undefined>>;
|
|
43
|
+
}
|
|
44
|
+
export interface ConnectedOpenAIAgentsFunctionTools<T extends readonly OpenAIAgentsFunctionToolLike[]> {
|
|
45
|
+
/** The exact Connect protection plan used to wrap the tools. */
|
|
46
|
+
plan: Readonly<ConnectManifestPlan>;
|
|
47
|
+
/** New FunctionTool objects. The input array and originals are not mutated. */
|
|
48
|
+
tools: Readonly<{
|
|
49
|
+
[K in keyof T]: T[K];
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Connect a complete array of OpenAI Agents SDK FunctionTool objects to Once.
|
|
54
|
+
*
|
|
55
|
+
* The returned FunctionTools preserve the original framework object shape and
|
|
56
|
+
* replace only `invoke`. Tool-call IDs/details are never used as logical Once
|
|
57
|
+
* identity. Protected calls derive identity/effect from the parsed JSON tool
|
|
58
|
+
* arguments and execute the original `invoke` with the original raw input,
|
|
59
|
+
* run context and call details.
|
|
60
|
+
*
|
|
61
|
+
* This v1 adapter is deliberately FunctionTool-only. Passing hosted, shell,
|
|
62
|
+
* computer, apply-patch, MCP or other tool types fails closed rather than
|
|
63
|
+
* returning a partially protected agent tool list.
|
|
64
|
+
*/
|
|
65
|
+
export declare function connectOpenAIAgentsFunctionToolsAuto<T extends readonly OpenAIAgentsFunctionToolLike[]>(tools: T, options?: ConnectOpenAIAgentsFunctionToolsOptions): Readonly<ConnectedOpenAIAgentsFunctionTools<T>>;
|
|
66
|
+
//# sourceMappingURL=openai-function-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-function-tools.d.ts","sourceRoot":"","sources":["../../src/connect/openai-function-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,sBAAsB,CAAC;AAkB9B,OAAO,KAAK,EACV,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,2BAA2B,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CACJ,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gCAAgC;IAC/C,0FAA0F;IAC1F,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,6EAA6E;IAC7E,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,MAAM,CAAC;IACpD,mFAAmF;IACnF,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,2BAA2B,KAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,KACG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAClC,gBAAgB,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,uCAAuC;IACtD,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,QAAQ,CAClB,MAAM,CACJ,MAAM,EACN,gCAAgC,GAAG,SAAS,CAC7C,CACF,CAAC;CACH;AAED,MAAM,WAAW,kCAAkC,CACjD,CAAC,SAAS,SAAS,4BAA4B,EAAE;IAEjD,gEAAgE;IAChE,IAAI,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACpC,+EAA+E;IAC/E,KAAK,EAAE,QAAQ,CAAC;SACb,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC,CAAC;CACJ;AAoLD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oCAAoC,CAClD,CAAC,SAAS,SAAS,4BAA4B,EAAE,EAEjD,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,uCAA4C,GACpD,QAAQ,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CA8HjD"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { CONNECT_TOOL_DECISION, } from "./tool-classifier.js";
|
|
2
|
+
import { resolveConnectToolOperationIdentity, } from "./identity.js";
|
|
3
|
+
import { resolveConnectToolEffectPayload, } from "./payload.js";
|
|
4
|
+
import { connectLocalAgentToolsetAuto, } from "./toolset.js";
|
|
5
|
+
import { AgentToolConnectionError, } from "./local-agent-tool.js";
|
|
6
|
+
import { OpenAIAgentsConnectError, } from "./openai-agents.js";
|
|
7
|
+
export { OpenAIAgentsConnectError, } from "./openai-agents.js";
|
|
8
|
+
function isObject(value) {
|
|
9
|
+
return value !== null &&
|
|
10
|
+
typeof value === "object" &&
|
|
11
|
+
!Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
function isFunctionToolLike(value) {
|
|
14
|
+
return isObject(value) &&
|
|
15
|
+
value.type === "function" &&
|
|
16
|
+
typeof value.name === "string" &&
|
|
17
|
+
value.name.trim() !== "" &&
|
|
18
|
+
typeof value.description === "string" &&
|
|
19
|
+
Object.prototype.hasOwnProperty.call(value, "parameters") &&
|
|
20
|
+
typeof value.invoke === "function";
|
|
21
|
+
}
|
|
22
|
+
function parseProtectedInput(toolName, rawInput) {
|
|
23
|
+
if (typeof rawInput !== "string") {
|
|
24
|
+
throw new OpenAIAgentsConnectError(`Once Connect expected OpenAI Agents function tool "${toolName}" to receive JSON text input.`, "INVALID_OPENAI_TOOL_INPUT");
|
|
25
|
+
}
|
|
26
|
+
let parsed;
|
|
27
|
+
try {
|
|
28
|
+
parsed = JSON.parse(rawInput);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
throw new OpenAIAgentsConnectError(`Once Connect could not parse protected OpenAI Agents tool input for "${toolName}".`, "INVALID_OPENAI_TOOL_INPUT");
|
|
32
|
+
}
|
|
33
|
+
if (!isObject(parsed)) {
|
|
34
|
+
throw new OpenAIAgentsConnectError(`Once Connect requires protected OpenAI Agents tool input for "${toolName}" to be a JSON object.`, "INVALID_OPENAI_TOOL_INPUT");
|
|
35
|
+
}
|
|
36
|
+
return parsed;
|
|
37
|
+
}
|
|
38
|
+
function requireParsedInput(toolName, envelope) {
|
|
39
|
+
if (!envelope.parsedInput) {
|
|
40
|
+
throw new OpenAIAgentsConnectError(`Once Connect did not receive parsed protected input for "${toolName}".`, "INVALID_OPENAI_TOOL_INPUT");
|
|
41
|
+
}
|
|
42
|
+
return envelope.parsedInput;
|
|
43
|
+
}
|
|
44
|
+
function descriptorFor(tool, override) {
|
|
45
|
+
return {
|
|
46
|
+
name: tool.name,
|
|
47
|
+
description: tool.description,
|
|
48
|
+
inputSchema: tool.parameters,
|
|
49
|
+
...(override?.annotations !== undefined
|
|
50
|
+
? { annotations: override.annotations }
|
|
51
|
+
: {}),
|
|
52
|
+
...(override?._meta !== undefined
|
|
53
|
+
? { _meta: override._meta }
|
|
54
|
+
: {}),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function resolveIdentityForEnvelope(descriptor, envelope, override) {
|
|
58
|
+
const input = requireParsedInput(descriptor.name, envelope);
|
|
59
|
+
if (typeof override?.id === "function") {
|
|
60
|
+
return override.id(input);
|
|
61
|
+
}
|
|
62
|
+
const result = resolveConnectToolOperationIdentity({
|
|
63
|
+
tool: descriptor,
|
|
64
|
+
input,
|
|
65
|
+
});
|
|
66
|
+
if (result.status === "FOUND") {
|
|
67
|
+
return result.operationId;
|
|
68
|
+
}
|
|
69
|
+
if (result.status === "CONFLICT") {
|
|
70
|
+
throw new AgentToolConnectionError("IDENTITY_CONFLICT", result.reason);
|
|
71
|
+
}
|
|
72
|
+
throw new AgentToolConnectionError("IDENTITY_REQUIRED", result.reason);
|
|
73
|
+
}
|
|
74
|
+
function resolvePayloadForEnvelope(descriptor, envelope, override) {
|
|
75
|
+
const input = requireParsedInput(descriptor.name, envelope);
|
|
76
|
+
if (typeof override?.payload === "function") {
|
|
77
|
+
return override.payload(input);
|
|
78
|
+
}
|
|
79
|
+
const result = resolveConnectToolEffectPayload({
|
|
80
|
+
tool: descriptor,
|
|
81
|
+
input,
|
|
82
|
+
});
|
|
83
|
+
if (result.status === "FOUND") {
|
|
84
|
+
return { ...result.payload };
|
|
85
|
+
}
|
|
86
|
+
throw new AgentToolConnectionError("PAYLOAD_REQUIRED", result.reason);
|
|
87
|
+
}
|
|
88
|
+
function cloneFunctionToolWithInvoke(tool, invoke) {
|
|
89
|
+
const descriptors = Object.getOwnPropertyDescriptors(tool);
|
|
90
|
+
const originalInvoke = Object.getOwnPropertyDescriptor(tool, "invoke");
|
|
91
|
+
Reflect.deleteProperty(descriptors, "invoke");
|
|
92
|
+
const clone = Object.create(Object.getPrototypeOf(tool), descriptors);
|
|
93
|
+
Object.defineProperty(clone, "invoke", {
|
|
94
|
+
value: invoke,
|
|
95
|
+
enumerable: originalInvoke?.enumerable ?? true,
|
|
96
|
+
configurable: originalInvoke?.configurable ?? true,
|
|
97
|
+
writable: originalInvoke?.writable ?? true,
|
|
98
|
+
});
|
|
99
|
+
return clone;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Connect a complete array of OpenAI Agents SDK FunctionTool objects to Once.
|
|
103
|
+
*
|
|
104
|
+
* The returned FunctionTools preserve the original framework object shape and
|
|
105
|
+
* replace only `invoke`. Tool-call IDs/details are never used as logical Once
|
|
106
|
+
* identity. Protected calls derive identity/effect from the parsed JSON tool
|
|
107
|
+
* arguments and execute the original `invoke` with the original raw input,
|
|
108
|
+
* run context and call details.
|
|
109
|
+
*
|
|
110
|
+
* This v1 adapter is deliberately FunctionTool-only. Passing hosted, shell,
|
|
111
|
+
* computer, apply-patch, MCP or other tool types fails closed rather than
|
|
112
|
+
* returning a partially protected agent tool list.
|
|
113
|
+
*/
|
|
114
|
+
export function connectOpenAIAgentsFunctionToolsAuto(tools, options = {}) {
|
|
115
|
+
if (!Array.isArray(tools)) {
|
|
116
|
+
throw new OpenAIAgentsConnectError("Once Connect needs an array of OpenAI Agents FunctionTool objects.", "INVALID_OPENAI_TOOLSET");
|
|
117
|
+
}
|
|
118
|
+
const registry = Object.create(null);
|
|
119
|
+
const manifest = [];
|
|
120
|
+
const internalOverrides = Object.create(null);
|
|
121
|
+
const originals = new Map();
|
|
122
|
+
for (const candidate of tools) {
|
|
123
|
+
if (!isFunctionToolLike(candidate)) {
|
|
124
|
+
throw new OpenAIAgentsConnectError("Once Connect v1 supports only OpenAI Agents FunctionTool objects with name, description, parameters and invoke.", "UNSUPPORTED_OPENAI_TOOL_TYPE");
|
|
125
|
+
}
|
|
126
|
+
const override = options.overrides?.[candidate.name];
|
|
127
|
+
const descriptor = descriptorFor(candidate, override);
|
|
128
|
+
manifest.push(descriptor);
|
|
129
|
+
originals.set(candidate.name, candidate);
|
|
130
|
+
registry[candidate.name] = {
|
|
131
|
+
execute: async (envelope) => await candidate.invoke(envelope.runContext, envelope.rawInput, envelope.details),
|
|
132
|
+
};
|
|
133
|
+
internalOverrides[candidate.name] = {
|
|
134
|
+
statePath: override?.statePath ?? options.statePath,
|
|
135
|
+
id: (envelope) => resolveIdentityForEnvelope(descriptor, envelope, override),
|
|
136
|
+
payload: (envelope) => resolvePayloadForEnvelope(descriptor, envelope, override),
|
|
137
|
+
reconcile: override?.reconcile,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (options.overrides) {
|
|
141
|
+
for (const name of Object.keys(options.overrides)) {
|
|
142
|
+
if (!originals.has(name)) {
|
|
143
|
+
internalOverrides[name] = {};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const connected = connectLocalAgentToolsetAuto(registry, {
|
|
148
|
+
manifest,
|
|
149
|
+
statePath: options.statePath,
|
|
150
|
+
overrides: internalOverrides,
|
|
151
|
+
});
|
|
152
|
+
const decisions = new Map(connected.plan.entries.map(entry => [
|
|
153
|
+
entry.name,
|
|
154
|
+
entry.decision,
|
|
155
|
+
]));
|
|
156
|
+
const wrappedTools = tools.map((tool) => {
|
|
157
|
+
const decision = decisions.get(tool.name);
|
|
158
|
+
const connectedTool = connected.tools[tool.name];
|
|
159
|
+
if (!connectedTool) {
|
|
160
|
+
throw new OpenAIAgentsConnectError(`Once Connect did not produce a connected implementation for "${tool.name}".`, "INVALID_OPENAI_TOOLSET");
|
|
161
|
+
}
|
|
162
|
+
const wrappedInvoke = async (runContext, rawInput, details) => {
|
|
163
|
+
const envelope = {
|
|
164
|
+
runContext,
|
|
165
|
+
rawInput,
|
|
166
|
+
details,
|
|
167
|
+
...(decision === CONNECT_TOOL_DECISION.PROTECT
|
|
168
|
+
? {
|
|
169
|
+
parsedInput: parseProtectedInput(tool.name, rawInput),
|
|
170
|
+
}
|
|
171
|
+
: {}),
|
|
172
|
+
};
|
|
173
|
+
return await connectedTool.execute(envelope);
|
|
174
|
+
};
|
|
175
|
+
return cloneFunctionToolWithInvoke(tool, wrappedInvoke);
|
|
176
|
+
});
|
|
177
|
+
return Object.freeze({
|
|
178
|
+
plan: connected.plan,
|
|
179
|
+
tools: Object.freeze(wrappedTools),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=openai-function-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-function-tools.js","sourceRoot":"","sources":["../../src/connect/openai-function-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ConnectToolDescriptor } from "./tool-classifier.js";
|
|
2
|
+
export type ConnectPayloadSource = "full_input" | "meta:effect_fields";
|
|
3
|
+
export type ConnectEffectPayloadResult = Readonly<{
|
|
4
|
+
status: "FOUND";
|
|
5
|
+
payload: Readonly<Record<string, unknown>>;
|
|
6
|
+
source: ConnectPayloadSource;
|
|
7
|
+
reason: string;
|
|
8
|
+
}> | Readonly<{
|
|
9
|
+
status: "REQUIRED";
|
|
10
|
+
reason: string;
|
|
11
|
+
}>;
|
|
12
|
+
export interface ResolveConnectEffectPayloadInput {
|
|
13
|
+
tool: Pick<ConnectToolDescriptor, "name" | "_meta">;
|
|
14
|
+
input: unknown;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the effect-bearing payload to bind to a protected tool call.
|
|
18
|
+
*
|
|
19
|
+
* Safety policy:
|
|
20
|
+
* - tool-authored `_meta.once.effectFields` may explicitly narrow the bound
|
|
21
|
+
* payload to complete, top-level effect fields;
|
|
22
|
+
* - otherwise the entire parsed plain-object input is bound.
|
|
23
|
+
*
|
|
24
|
+
* The full-input fallback is deliberately conservative. It may produce a
|
|
25
|
+
* conflict when unrelated retry metadata changes, but it cannot silently omit
|
|
26
|
+
* an input field that changes the external effect. Callers that need a narrower
|
|
27
|
+
* contract can keep using an explicit payload callback or declare effectFields.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveConnectToolEffectPayload(request: ResolveConnectEffectPayloadInput): ConnectEffectPayloadResult;
|
|
30
|
+
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/connect/payload.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,oBAAoB,GAC5B,YAAY,GACZ,oBAAoB,CAAC;AAEzB,MAAM,MAAM,0BAA0B,GAClC,QAAQ,CAAC;IACP,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,GACF,QAAQ,CAAC;IACP,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEP,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACpD,KAAK,EAAE,OAAO,CAAC;CAChB;AAkED;;;;;;;;;;;;GAYG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,0BAA0B,CA6E5B"}
|