@once-agent/sdk 0.1.11 → 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 +30 -7
- package/dist/connect/local-agent-tool.d.ts.map +1 -1
- package/dist/connect/local-agent-tool.js +81 -9
- package/dist/connect/local-agent-tool.js.map +1 -1
- 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/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 +82 -9
- package/dist-cjs/connect/local-agent-tool.js.map +1 -1
- 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/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":"payload.js","sourceRoot":"","sources":["../../src/connect/payload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const CONNECT_TOOL_DECISION: Readonly<{
|
|
2
|
+
readonly PROTECT: "PROTECT";
|
|
3
|
+
readonly BYPASS: "BYPASS";
|
|
4
|
+
readonly UNKNOWN: "UNKNOWN";
|
|
5
|
+
}>;
|
|
6
|
+
export type ConnectToolDecision = (typeof CONNECT_TOOL_DECISION)[keyof typeof CONNECT_TOOL_DECISION];
|
|
7
|
+
export interface ConnectToolAnnotations {
|
|
8
|
+
readOnlyHint?: boolean;
|
|
9
|
+
destructiveHint?: boolean;
|
|
10
|
+
idempotentHint?: boolean;
|
|
11
|
+
openWorldHint?: boolean;
|
|
12
|
+
title?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ConnectToolDescriptor {
|
|
15
|
+
name: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
inputSchema?: unknown;
|
|
18
|
+
annotations?: ConnectToolAnnotations;
|
|
19
|
+
_meta?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export type ConnectToolClassificationReason = "INVALID_TOOL_DESCRIPTOR" | "INVALID_TOOL_ANNOTATIONS" | "EXPLICIT_READ_ONLY" | "EXPLICIT_IDEMPOTENT_WRITE" | "EXPLICIT_WRITE" | "MUTATION_SIGNAL" | "READ_ONLY_SIGNAL" | "CONFLICTING_SIGNALS" | "INSUFFICIENT_EVIDENCE";
|
|
22
|
+
export interface ConnectToolClassification {
|
|
23
|
+
decision: ConnectToolDecision;
|
|
24
|
+
reason: ConnectToolClassificationReason;
|
|
25
|
+
signals: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Infer whether a tool should cross the Once Connect safety boundary.
|
|
29
|
+
*
|
|
30
|
+
* This is intentionally conservative. Explicit metadata and deterministic
|
|
31
|
+
* name/description semantics cross-check one another. Weak or contradictory
|
|
32
|
+
* evidence resolves to UNKNOWN rather than permission.
|
|
33
|
+
*
|
|
34
|
+
* UNKNOWN is not a bypass decision. Callers should require an explicit safety
|
|
35
|
+
* declaration, human/config policy, or another trusted classifier before
|
|
36
|
+
* executing a consequential operation outside Once.
|
|
37
|
+
*/
|
|
38
|
+
export declare function classifyConnectTool(tool: unknown): Readonly<ConnectToolClassification>;
|
|
39
|
+
export declare function classifyConnectTools(tools: readonly unknown[]): readonly Readonly<ConnectToolClassification>[];
|
|
40
|
+
//# sourceMappingURL=tool-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-classifier.d.ts","sourceRoot":"","sources":["../../src/connect/tool-classifier.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB;;;;EAIvB,CAAC;AAEZ,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,+BAA+B,GACvC,yBAAyB,GACzB,0BAA0B,GAC1B,oBAAoB,GACpB,2BAA2B,GAC3B,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,+BAA+B,CAAC;IACxC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AA0LD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,GACZ,QAAQ,CAAC,yBAAyB,CAAC,CAiNrC;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,OAAO,EAAE,GACxB,SAAS,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAEhD"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
export const CONNECT_TOOL_DECISION = Object.freeze({
|
|
2
|
+
PROTECT: "PROTECT",
|
|
3
|
+
BYPASS: "BYPASS",
|
|
4
|
+
UNKNOWN: "UNKNOWN",
|
|
5
|
+
});
|
|
6
|
+
/*
|
|
7
|
+
* Keep this list action-oriented. Object nouns such as email, message,
|
|
8
|
+
* order, and post are intentionally excluded so names like search_messages
|
|
9
|
+
* and list_orders do not look mutating merely because of their subject.
|
|
10
|
+
*/
|
|
11
|
+
const MUTATION_NAME_TOKENS = new Set([
|
|
12
|
+
"activate",
|
|
13
|
+
"add",
|
|
14
|
+
"approve",
|
|
15
|
+
"archive",
|
|
16
|
+
"assign",
|
|
17
|
+
"book",
|
|
18
|
+
"buy",
|
|
19
|
+
"cancel",
|
|
20
|
+
"charge",
|
|
21
|
+
"close",
|
|
22
|
+
"comment",
|
|
23
|
+
"commit",
|
|
24
|
+
"create",
|
|
25
|
+
"deactivate",
|
|
26
|
+
"delete",
|
|
27
|
+
"deploy",
|
|
28
|
+
"disable",
|
|
29
|
+
"edit",
|
|
30
|
+
"enable",
|
|
31
|
+
"execute",
|
|
32
|
+
"follow",
|
|
33
|
+
"grant",
|
|
34
|
+
"invite",
|
|
35
|
+
"lock",
|
|
36
|
+
"mark",
|
|
37
|
+
"merge",
|
|
38
|
+
"modify",
|
|
39
|
+
"move",
|
|
40
|
+
"pay",
|
|
41
|
+
"place",
|
|
42
|
+
"provision",
|
|
43
|
+
"publish",
|
|
44
|
+
"purchase",
|
|
45
|
+
"refund",
|
|
46
|
+
"reject",
|
|
47
|
+
"remove",
|
|
48
|
+
"rename",
|
|
49
|
+
"reserve",
|
|
50
|
+
"reschedule",
|
|
51
|
+
"restart",
|
|
52
|
+
"restore",
|
|
53
|
+
"revoke",
|
|
54
|
+
"save",
|
|
55
|
+
"schedule",
|
|
56
|
+
"send",
|
|
57
|
+
"set",
|
|
58
|
+
"share",
|
|
59
|
+
"sign",
|
|
60
|
+
"start",
|
|
61
|
+
"stop",
|
|
62
|
+
"submit",
|
|
63
|
+
"subscribe",
|
|
64
|
+
"transfer",
|
|
65
|
+
"unlock",
|
|
66
|
+
"unfollow",
|
|
67
|
+
"unsubscribe",
|
|
68
|
+
"unschedule",
|
|
69
|
+
"update",
|
|
70
|
+
"upload",
|
|
71
|
+
"write",
|
|
72
|
+
]);
|
|
73
|
+
const READ_ONLY_NAME_TOKENS = new Set([
|
|
74
|
+
"analyze",
|
|
75
|
+
"calculate",
|
|
76
|
+
"check",
|
|
77
|
+
"compute",
|
|
78
|
+
"convert",
|
|
79
|
+
"describe",
|
|
80
|
+
"fetch",
|
|
81
|
+
"find",
|
|
82
|
+
"format",
|
|
83
|
+
"generate",
|
|
84
|
+
"get",
|
|
85
|
+
"history",
|
|
86
|
+
"inspect",
|
|
87
|
+
"list",
|
|
88
|
+
"lookup",
|
|
89
|
+
"metrics",
|
|
90
|
+
"parse",
|
|
91
|
+
"preview",
|
|
92
|
+
"read",
|
|
93
|
+
"render",
|
|
94
|
+
"retrieve",
|
|
95
|
+
"search",
|
|
96
|
+
"show",
|
|
97
|
+
"stats",
|
|
98
|
+
"status",
|
|
99
|
+
"summarize",
|
|
100
|
+
"translate",
|
|
101
|
+
"validate",
|
|
102
|
+
"view",
|
|
103
|
+
]);
|
|
104
|
+
const MUTATION_DESCRIPTION_PATTERNS = [
|
|
105
|
+
/\b(activates?|adds?|approves?|archives?|assigns?)\b/i,
|
|
106
|
+
/\b(books?|buys?|cancels?|charges?|closes?|commits?|creates?)\b/i,
|
|
107
|
+
/\b(deactivates?|deletes?|deploys?|disables?|edits?|enables?)\b/i,
|
|
108
|
+
/\b(follows?|grants?|invites?|locks?|marks?|merges?|modifies?|moves?)\b/i,
|
|
109
|
+
/\b(pays?|places?|provisions?|publishes?|purchases?|refunds?)\b/i,
|
|
110
|
+
/\b(rejects?|removes?|renames?|reserves?|reschedules?|restarts?)\b/i,
|
|
111
|
+
/\b(restores?|revokes?|saves?|schedules?|sends?|sets?|shares?|signs?)\b/i,
|
|
112
|
+
/\b(starts?|stops?|submits?|subscribes?|transfers?|unlocks?)\b/i,
|
|
113
|
+
/\b(unfollows?|unsubscribes?|unschedules?|updates?|uploads?|writes?)\b/i,
|
|
114
|
+
/\b(changes? external state|modifies? external state|side[- ]effecting)\b/i,
|
|
115
|
+
];
|
|
116
|
+
const READ_ONLY_DESCRIPTION_PATTERNS = [
|
|
117
|
+
/\bread[- ]only\b/i,
|
|
118
|
+
/\bno side effects?\b/i,
|
|
119
|
+
/\bdoes not (?:modify|change|write|mutate)\b/i,
|
|
120
|
+
/\bwithout (?:modifying|changing|writing|mutating|saving)\b/i,
|
|
121
|
+
/\b(searches?|reads?|retrieves?|fetches?|lists?|looks? up|inspects?)\b/i,
|
|
122
|
+
/\b(generates?|summarizes?|translates?|analyzes?|calculates?|computes?)\b/i,
|
|
123
|
+
/\b(converts?|formats?|parses?|renders?|validates?)\b/i,
|
|
124
|
+
];
|
|
125
|
+
function freezeResult(decision, reason, signals) {
|
|
126
|
+
return Object.freeze({
|
|
127
|
+
decision,
|
|
128
|
+
reason,
|
|
129
|
+
signals: Object.freeze([...signals]),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
function normalizeName(name) {
|
|
133
|
+
return name
|
|
134
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
135
|
+
.toLowerCase()
|
|
136
|
+
.split(/[^a-z0-9]+/g)
|
|
137
|
+
.filter(Boolean);
|
|
138
|
+
}
|
|
139
|
+
function hasPattern(text, patterns) {
|
|
140
|
+
return patterns.some(pattern => pattern.test(text));
|
|
141
|
+
}
|
|
142
|
+
function validateAnnotations(value) {
|
|
143
|
+
if (value === undefined) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
const candidate = value;
|
|
150
|
+
for (const key of [
|
|
151
|
+
"readOnlyHint",
|
|
152
|
+
"destructiveHint",
|
|
153
|
+
"idempotentHint",
|
|
154
|
+
"openWorldHint",
|
|
155
|
+
]) {
|
|
156
|
+
if (candidate[key] !== undefined &&
|
|
157
|
+
typeof candidate[key] !== "boolean") {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (candidate.title !== undefined &&
|
|
162
|
+
typeof candidate.title !== "string") {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Infer whether a tool should cross the Once Connect safety boundary.
|
|
169
|
+
*
|
|
170
|
+
* This is intentionally conservative. Explicit metadata and deterministic
|
|
171
|
+
* name/description semantics cross-check one another. Weak or contradictory
|
|
172
|
+
* evidence resolves to UNKNOWN rather than permission.
|
|
173
|
+
*
|
|
174
|
+
* UNKNOWN is not a bypass decision. Callers should require an explicit safety
|
|
175
|
+
* declaration, human/config policy, or another trusted classifier before
|
|
176
|
+
* executing a consequential operation outside Once.
|
|
177
|
+
*/
|
|
178
|
+
export function classifyConnectTool(tool) {
|
|
179
|
+
if (!tool || typeof tool !== "object" || Array.isArray(tool)) {
|
|
180
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "INVALID_TOOL_DESCRIPTOR", []);
|
|
181
|
+
}
|
|
182
|
+
const candidate = tool;
|
|
183
|
+
if (typeof candidate.name !== "string" ||
|
|
184
|
+
candidate.name.trim().length === 0) {
|
|
185
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "INVALID_TOOL_DESCRIPTOR", []);
|
|
186
|
+
}
|
|
187
|
+
if (candidate.description !== undefined &&
|
|
188
|
+
typeof candidate.description !== "string") {
|
|
189
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "INVALID_TOOL_DESCRIPTOR", []);
|
|
190
|
+
}
|
|
191
|
+
if (!validateAnnotations(candidate.annotations)) {
|
|
192
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "INVALID_TOOL_ANNOTATIONS", []);
|
|
193
|
+
}
|
|
194
|
+
const annotations = candidate.annotations;
|
|
195
|
+
const nameTokens = normalizeName(candidate.name);
|
|
196
|
+
const description = typeof candidate.description === "string"
|
|
197
|
+
? candidate.description
|
|
198
|
+
: "";
|
|
199
|
+
const mutationNameTokens = nameTokens.filter(token => MUTATION_NAME_TOKENS.has(token));
|
|
200
|
+
const readOnlyNameTokens = nameTokens.filter(token => READ_ONLY_NAME_TOKENS.has(token));
|
|
201
|
+
const mutationDescription = hasPattern(description, MUTATION_DESCRIPTION_PATTERNS);
|
|
202
|
+
const readOnlyDescription = hasPattern(description, READ_ONLY_DESCRIPTION_PATTERNS);
|
|
203
|
+
const mutationSignal = mutationNameTokens.length > 0 || mutationDescription;
|
|
204
|
+
const readOnlySignal = readOnlyNameTokens.length > 0 || readOnlyDescription;
|
|
205
|
+
const signals = [];
|
|
206
|
+
for (const token of mutationNameTokens) {
|
|
207
|
+
signals.push(`name:${token}`);
|
|
208
|
+
}
|
|
209
|
+
for (const token of readOnlyNameTokens) {
|
|
210
|
+
signals.push(`name:${token}`);
|
|
211
|
+
}
|
|
212
|
+
if (mutationDescription) {
|
|
213
|
+
signals.push("description:mutation");
|
|
214
|
+
}
|
|
215
|
+
if (readOnlyDescription) {
|
|
216
|
+
signals.push("description:read-only");
|
|
217
|
+
}
|
|
218
|
+
if (mutationSignal && readOnlySignal) {
|
|
219
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "CONFLICTING_SIGNALS", signals);
|
|
220
|
+
}
|
|
221
|
+
if (annotations?.readOnlyHint === true) {
|
|
222
|
+
signals.push("annotations.readOnlyHint=true");
|
|
223
|
+
if (annotations.destructiveHint === true ||
|
|
224
|
+
mutationSignal) {
|
|
225
|
+
if (annotations.destructiveHint === true) {
|
|
226
|
+
signals.push("annotations.destructiveHint=true");
|
|
227
|
+
}
|
|
228
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "CONFLICTING_SIGNALS", signals);
|
|
229
|
+
}
|
|
230
|
+
return freezeResult(CONNECT_TOOL_DECISION.BYPASS, "EXPLICIT_READ_ONLY", signals);
|
|
231
|
+
}
|
|
232
|
+
if (annotations?.readOnlyHint === false) {
|
|
233
|
+
signals.push("annotations.readOnlyHint=false");
|
|
234
|
+
if (readOnlySignal && !mutationSignal) {
|
|
235
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "CONFLICTING_SIGNALS", signals);
|
|
236
|
+
}
|
|
237
|
+
if (annotations.idempotentHint === true) {
|
|
238
|
+
signals.push("annotations.idempotentHint=true");
|
|
239
|
+
return freezeResult(CONNECT_TOOL_DECISION.BYPASS, "EXPLICIT_IDEMPOTENT_WRITE", signals);
|
|
240
|
+
}
|
|
241
|
+
if (annotations.idempotentHint === false) {
|
|
242
|
+
signals.push("annotations.idempotentHint=false");
|
|
243
|
+
}
|
|
244
|
+
if (annotations.destructiveHint !== undefined) {
|
|
245
|
+
signals.push(`annotations.destructiveHint=${String(annotations.destructiveHint)}`);
|
|
246
|
+
}
|
|
247
|
+
return freezeResult(CONNECT_TOOL_DECISION.PROTECT, "EXPLICIT_WRITE", signals);
|
|
248
|
+
}
|
|
249
|
+
if (annotations?.idempotentHint === true) {
|
|
250
|
+
signals.push("annotations.idempotentHint=true");
|
|
251
|
+
return freezeResult(CONNECT_TOOL_DECISION.BYPASS, "EXPLICIT_IDEMPOTENT_WRITE", signals);
|
|
252
|
+
}
|
|
253
|
+
if (annotations?.destructiveHint === true) {
|
|
254
|
+
signals.push("annotations.destructiveHint=true");
|
|
255
|
+
if (readOnlySignal) {
|
|
256
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "CONFLICTING_SIGNALS", signals);
|
|
257
|
+
}
|
|
258
|
+
return freezeResult(CONNECT_TOOL_DECISION.PROTECT, "EXPLICIT_WRITE", signals);
|
|
259
|
+
}
|
|
260
|
+
if (mutationSignal) {
|
|
261
|
+
return freezeResult(CONNECT_TOOL_DECISION.PROTECT, "MUTATION_SIGNAL", signals);
|
|
262
|
+
}
|
|
263
|
+
if (readOnlySignal) {
|
|
264
|
+
return freezeResult(CONNECT_TOOL_DECISION.BYPASS, "READ_ONLY_SIGNAL", signals);
|
|
265
|
+
}
|
|
266
|
+
return freezeResult(CONNECT_TOOL_DECISION.UNKNOWN, "INSUFFICIENT_EVIDENCE", signals);
|
|
267
|
+
}
|
|
268
|
+
export function classifyConnectTools(tools) {
|
|
269
|
+
return Object.freeze(tools.map(tool => classifyConnectTool(tool)));
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=tool-classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-classifier.js","sourceRoot":"","sources":["../../src/connect/tool-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type ConnectManifestPlan } from "./manifest.js";
|
|
2
|
+
import { type AgentTool, type AutoLocalAgentToolContract } from "./local-agent-tool.js";
|
|
3
|
+
type AnyAgentTool = AgentTool<any, any>;
|
|
4
|
+
export type LocalAgentToolRegistry = Record<string, AnyAgentTool>;
|
|
5
|
+
export type ConnectedLocalAgentToolRegistry<T extends LocalAgentToolRegistry> = {
|
|
6
|
+
readonly [K in keyof T]: T[K] extends AgentTool<infer Input, infer Result> ? AgentTool<Input, Result> : never;
|
|
7
|
+
};
|
|
8
|
+
export type AutoLocalAgentToolsetOverride = Omit<AutoLocalAgentToolContract<any, any>, "descriptor">;
|
|
9
|
+
export interface AutoLocalAgentToolsetOptions {
|
|
10
|
+
/** Native/MCP/OpenAI-style manifest accepted by planConnectToolManifest(). */
|
|
11
|
+
manifest: unknown;
|
|
12
|
+
/** Shared default SQLite state path for all connected tools. */
|
|
13
|
+
statePath?: string;
|
|
14
|
+
/** Optional per-tool escape hatches for unusual identity/payload/reconcile needs. */
|
|
15
|
+
overrides?: Readonly<Record<string, AutoLocalAgentToolsetOverride | undefined>>;
|
|
16
|
+
}
|
|
17
|
+
export interface ConnectedLocalAgentToolset<T extends LocalAgentToolRegistry> {
|
|
18
|
+
/** Frozen protection plan used to create this connected registry. */
|
|
19
|
+
plan: Readonly<ConnectManifestPlan>;
|
|
20
|
+
/** Frozen registry. Expose this registry to the agent, not the originals. */
|
|
21
|
+
tools: Readonly<ConnectedLocalAgentToolRegistry<T>>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Connect an entire local agent tool registry in one fail-closed operation.
|
|
25
|
+
*
|
|
26
|
+
* Safety properties:
|
|
27
|
+
* - the manifest must fully classify with no UNKNOWN entries;
|
|
28
|
+
* - every declared tool must have exactly one same-named implementation;
|
|
29
|
+
* - undeclared executable registry entries are rejected;
|
|
30
|
+
* - duplicate or invalid tool names are rejected before wrappers are built;
|
|
31
|
+
* - the original registry is never mutated;
|
|
32
|
+
* - every returned tool delegates through connectLocalAgentToolAuto(), so the
|
|
33
|
+
* existing routing, identity, payload and SQLite protection rules remain the
|
|
34
|
+
* single source of execution behaviour.
|
|
35
|
+
*
|
|
36
|
+
* Per-call identity/payload can still fail closed at invocation time because
|
|
37
|
+
* those values depend on actual input. Only expose `result.tools` to the agent;
|
|
38
|
+
* retaining and using the original registry remains an intentional bypass.
|
|
39
|
+
*/
|
|
40
|
+
export declare function connectLocalAgentToolsetAuto<T extends LocalAgentToolRegistry>(tools: T, options: AutoLocalAgentToolsetOptions): Readonly<ConnectedLocalAgentToolset<T>>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=toolset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolset.d.ts","sourceRoot":"","sources":["../../src/connect/toolset.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,0BAA0B,EAChC,MAAM,uBAAuB,CAAC;AAK/B,KAAK,YAAY,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAChC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAE/B,MAAM,MAAM,+BAA+B,CACzC,CAAC,SAAS,sBAAsB,IAC9B;IACF,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GACpB,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,MAAM,MAAM,CAAC,GAC7C,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GACxB,KAAK;CACZ,CAAC;AAEF,MAAM,MAAM,6BAA6B,GACvC,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AAE3D,MAAM,WAAW,4BAA4B;IAC3C,8EAA8E;IAC9E,QAAQ,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,SAAS,CAAC,EAAE,QAAQ,CAClB,MAAM,CAAC,MAAM,EAAE,6BAA6B,GAAG,SAAS,CAAC,CAC1D,CAAC;CACH;AAED,MAAM,WAAW,0BAA0B,CACzC,CAAC,SAAS,sBAAsB;IAEhC,qEAAqE;IACrE,IAAI,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACpC,6EAA6E;IAC7E,KAAK,EAAE,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;CACrD;AAgCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAC1C,CAAC,SAAS,sBAAsB,EAEhC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,4BAA4B,GACpC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAiKzC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { normalizeConnectToolManifest, planConnectToolManifest, } from "./manifest.js";
|
|
2
|
+
import { AgentToolConnectionError, connectLocalAgentToolAuto, } from "./local-agent-tool.js";
|
|
3
|
+
function isRecord(value) {
|
|
4
|
+
if (value === null ||
|
|
5
|
+
typeof value !== "object" ||
|
|
6
|
+
Array.isArray(value)) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
const prototype = Object.getPrototypeOf(value);
|
|
10
|
+
return prototype === Object.prototype || prototype === null;
|
|
11
|
+
}
|
|
12
|
+
function hasOwn(value, key) {
|
|
13
|
+
return Object.prototype.hasOwnProperty.call(value, key);
|
|
14
|
+
}
|
|
15
|
+
function formatUnknownTools(plan) {
|
|
16
|
+
return plan.unknown
|
|
17
|
+
.map(entry => `${entry.name ?? `#${entry.index}`}:${entry.reason}`)
|
|
18
|
+
.join(", ");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Connect an entire local agent tool registry in one fail-closed operation.
|
|
22
|
+
*
|
|
23
|
+
* Safety properties:
|
|
24
|
+
* - the manifest must fully classify with no UNKNOWN entries;
|
|
25
|
+
* - every declared tool must have exactly one same-named implementation;
|
|
26
|
+
* - undeclared executable registry entries are rejected;
|
|
27
|
+
* - duplicate or invalid tool names are rejected before wrappers are built;
|
|
28
|
+
* - the original registry is never mutated;
|
|
29
|
+
* - every returned tool delegates through connectLocalAgentToolAuto(), so the
|
|
30
|
+
* existing routing, identity, payload and SQLite protection rules remain the
|
|
31
|
+
* single source of execution behaviour.
|
|
32
|
+
*
|
|
33
|
+
* Per-call identity/payload can still fail closed at invocation time because
|
|
34
|
+
* those values depend on actual input. Only expose `result.tools` to the agent;
|
|
35
|
+
* retaining and using the original registry remains an intentional bypass.
|
|
36
|
+
*/
|
|
37
|
+
export function connectLocalAgentToolsetAuto(tools, options) {
|
|
38
|
+
if (!isRecord(tools)) {
|
|
39
|
+
throw new AgentToolConnectionError("INVALID_TOOLSET", "Once Connect needs a plain-object registry of named agent tools.");
|
|
40
|
+
}
|
|
41
|
+
if (!options || !("manifest" in options)) {
|
|
42
|
+
throw new AgentToolConnectionError("INVALID_TOOL_MANIFEST", "Once Connect needs a complete tool manifest before toolset wiring.");
|
|
43
|
+
}
|
|
44
|
+
const normalized = normalizeConnectToolManifest(options.manifest);
|
|
45
|
+
const plan = planConnectToolManifest(options.manifest);
|
|
46
|
+
if (!normalized || !plan.valid) {
|
|
47
|
+
throw new AgentToolConnectionError("INVALID_TOOL_MANIFEST", "Once Connect could not parse the supplied tool manifest.");
|
|
48
|
+
}
|
|
49
|
+
if (!plan.ready) {
|
|
50
|
+
throw new AgentToolConnectionError("UNKNOWN_TOOLSET_SAFETY", `Once Connect refuses partial automatic wiring while tool safety is unresolved: ${formatUnknownTools(plan)}.`);
|
|
51
|
+
}
|
|
52
|
+
if (normalized.length !== plan.entries.length) {
|
|
53
|
+
throw new AgentToolConnectionError("INVALID_TOOL_MANIFEST", "Once Connect manifest normalization and classification disagree.");
|
|
54
|
+
}
|
|
55
|
+
const descriptors = new Map();
|
|
56
|
+
for (let index = 0; index < normalized.length; index += 1) {
|
|
57
|
+
const item = normalized[index];
|
|
58
|
+
const name = item.name;
|
|
59
|
+
if (typeof name !== "string" ||
|
|
60
|
+
!/^[A-Za-z0-9_-]{1,100}$/.test(name) ||
|
|
61
|
+
!isRecord(item.descriptor)) {
|
|
62
|
+
throw new AgentToolConnectionError("INVALID_TOOL_NAME", `Once Connect requires a stable registry-safe tool name at manifest index ${index}.`);
|
|
63
|
+
}
|
|
64
|
+
if (descriptors.has(name)) {
|
|
65
|
+
throw new AgentToolConnectionError("DUPLICATE_TOOL_NAME", `Once Connect cannot safely map duplicate manifest tool name "${name}" to one implementation.`);
|
|
66
|
+
}
|
|
67
|
+
descriptors.set(name, item.descriptor);
|
|
68
|
+
}
|
|
69
|
+
for (const name of descriptors.keys()) {
|
|
70
|
+
if (!hasOwn(tools, name)) {
|
|
71
|
+
throw new AgentToolConnectionError("MISSING_TOOL_IMPLEMENTATION", `The manifest declares "${name}" but the tool registry has no same-named implementation.`);
|
|
72
|
+
}
|
|
73
|
+
const implementation = tools[name];
|
|
74
|
+
if (!implementation ||
|
|
75
|
+
typeof implementation.execute !== "function") {
|
|
76
|
+
throw new AgentToolConnectionError("INVALID_TOOL_IMPLEMENTATION", `Tool "${name}" must expose execute(input).`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const name of Object.keys(tools)) {
|
|
80
|
+
if (!descriptors.has(name)) {
|
|
81
|
+
throw new AgentToolConnectionError("UNDECLARED_TOOL_IMPLEMENTATION", `Tool registry entry "${name}" is executable but absent from the manifest. Once refuses to leave an undeclared bypass in the connected registry.`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (options.overrides !== undefined &&
|
|
85
|
+
!isRecord(options.overrides)) {
|
|
86
|
+
throw new AgentToolConnectionError("INVALID_TOOLSET_OVERRIDES", "Once Connect toolset overrides must be a plain object keyed by tool name.");
|
|
87
|
+
}
|
|
88
|
+
if (options.overrides) {
|
|
89
|
+
for (const name of Object.keys(options.overrides)) {
|
|
90
|
+
if (!descriptors.has(name)) {
|
|
91
|
+
throw new AgentToolConnectionError("UNDECLARED_TOOL_OVERRIDE", `Override "${name}" does not correspond to a declared tool.`);
|
|
92
|
+
}
|
|
93
|
+
const override = options.overrides[name];
|
|
94
|
+
if (override !== undefined && !isRecord(override)) {
|
|
95
|
+
throw new AgentToolConnectionError("INVALID_TOOLSET_OVERRIDES", `Override "${name}" must be a plain object when provided.`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const connected = Object.create(null);
|
|
100
|
+
for (const [name, descriptor] of descriptors) {
|
|
101
|
+
const implementation = tools[name];
|
|
102
|
+
const override = options.overrides?.[name];
|
|
103
|
+
const wrapped = connectLocalAgentToolAuto(implementation, {
|
|
104
|
+
descriptor,
|
|
105
|
+
statePath: override?.statePath ?? options.statePath,
|
|
106
|
+
id: override?.id,
|
|
107
|
+
payload: override?.payload,
|
|
108
|
+
reconcile: override?.reconcile,
|
|
109
|
+
});
|
|
110
|
+
Object.defineProperty(connected, name, {
|
|
111
|
+
value: Object.freeze(wrapped),
|
|
112
|
+
enumerable: true,
|
|
113
|
+
configurable: false,
|
|
114
|
+
writable: false,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
const frozenTools = Object.freeze(connected);
|
|
118
|
+
return Object.freeze({
|
|
119
|
+
plan,
|
|
120
|
+
tools: frozenTools,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=toolset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolset.js","sourceRoot":"","sources":["../../src/connect/toolset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { discoverOpenAIAgentRuntime, discoverOpenAIResponsesModelVisibleTools, discoverVercelAiSdkRegisteredTools, discoverVercelAiSdkModelVisibleTools, mergeRuntimeToolEvidence, } from "../runtime-tool-discovery.js";
|
|
2
|
+
export { discoverLangChainRegisteredTools, discoverLangChainModelVisibleTools, } from "../langchain-runtime-discovery.js";
|
|
3
|
+
export { observeToolExecution, aggregateToolExecutions, executionToolFingerprint, promoteToolExecution, } from "../execution-observation.js";
|
|
4
|
+
export { createOpenAIAgentsExecutionObserver, } from "../openai-agents-execution-observer.js";
|
|
5
|
+
export { observeVercelAiSdkStepExecutions, } from "../vercel-execution-observer.js";
|
|
6
|
+
export { createLangChainExecutionObserver, } from "../langchain-execution-observer.js";
|
|
7
|
+
export { observeOtelGenAiToolExecutions, } from "../otel-execution-observer.js";
|
|
8
|
+
export type { RuntimeToolFramework, RuntimeToolSource, RuntimeToolObservation, OpenAIAgentRuntimeSnapshot, OpenAIResponsesToolSnapshot, VercelAiSdkRegisteredToolSnapshot, VercelAiSdkModelVisibleToolSnapshot, MergedRuntimeToolSnapshot, } from "../runtime-tool-discovery.js";
|
|
9
|
+
export type { LangChainRuntimeToolObservation, LangChainRegisteredToolSnapshot, LangChainModelVisibleToolSnapshot, } from "../langchain-runtime-discovery.js";
|
|
10
|
+
export type { ToolExecutionStatus, ToolExecutionSource, ToolExecutionObservationInput, ToolExecutionObservation, ToolExecutionObservationResult, ToolExecutionSummary, ToolExecutionAggregate, ExecutionPromotableTool, ExecutedToolObservation, } from "../execution-observation.js";
|
|
11
|
+
export type { OpenAIAgentsExecutionObserver, } from "../openai-agents-execution-observer.js";
|
|
12
|
+
export type { LangChainExecutionObserver, } from "../langchain-execution-observer.js";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wCAAwC,EACxC,kCAAkC,EAClC,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gCAAgC,EAChC,kCAAkC,GACnC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,mCAAmC,GACpC,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,gCAAgC,GACjC,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,mCAAmC,EACnC,yBAAyB,GAC1B,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EACV,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,mCAAmC,CAAC;AAE3C,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,wBAAwB,EACxB,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,6BAA6B,GAC9B,MAAM,wCAAwC,CAAC;AAEhD,YAAY,EACV,0BAA0B,GAC3B,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { discoverOpenAIAgentRuntime, discoverOpenAIResponsesModelVisibleTools, discoverVercelAiSdkRegisteredTools, discoverVercelAiSdkModelVisibleTools, mergeRuntimeToolEvidence, } from "../runtime-tool-discovery.js";
|
|
2
|
+
export { discoverLangChainRegisteredTools, discoverLangChainModelVisibleTools, } from "../langchain-runtime-discovery.js";
|
|
3
|
+
export { observeToolExecution, aggregateToolExecutions, executionToolFingerprint, promoteToolExecution, } from "../execution-observation.js";
|
|
4
|
+
export { createOpenAIAgentsExecutionObserver, } from "../openai-agents-execution-observer.js";
|
|
5
|
+
export { observeVercelAiSdkStepExecutions, } from "../vercel-execution-observer.js";
|
|
6
|
+
export { createLangChainExecutionObserver, } from "../langchain-execution-observer.js";
|
|
7
|
+
export { observeOtelGenAiToolExecutions, } from "../otel-execution-observer.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,wCAAwC,EACxC,kCAAkC,EAClC,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,gCAAgC,EAChC,kCAAkC,GACnC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,mCAAmC,GACpC,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,gCAAgC,GACjC,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC"}
|