@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,330 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executionToolFingerprint = executionToolFingerprint;
|
|
4
|
+
exports.observeToolExecution = observeToolExecution;
|
|
5
|
+
exports.aggregateToolExecutions = aggregateToolExecutions;
|
|
6
|
+
exports.promoteToolExecution = promoteToolExecution;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const tool_importance_js_1 = require("./tool-importance.js");
|
|
9
|
+
const VALID_STATUS = new Set([
|
|
10
|
+
"SUCCEEDED",
|
|
11
|
+
"FAILED",
|
|
12
|
+
"UNKNOWN",
|
|
13
|
+
]);
|
|
14
|
+
const VALID_SOURCE = new Set([
|
|
15
|
+
"framework_callback",
|
|
16
|
+
"otel",
|
|
17
|
+
"adapter",
|
|
18
|
+
]);
|
|
19
|
+
function ownDataValue(value, key) {
|
|
20
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
24
|
+
return descriptor && "value" in descriptor
|
|
25
|
+
? descriptor.value
|
|
26
|
+
: undefined;
|
|
27
|
+
}
|
|
28
|
+
function optionalString(value) {
|
|
29
|
+
return typeof value === "string" && value.trim() !== ""
|
|
30
|
+
? value
|
|
31
|
+
: undefined;
|
|
32
|
+
}
|
|
33
|
+
function validTimestamp(value) {
|
|
34
|
+
if (value === undefined) {
|
|
35
|
+
return new Date().toISOString();
|
|
36
|
+
}
|
|
37
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
const time = Date.parse(value);
|
|
41
|
+
if (!Number.isFinite(time))
|
|
42
|
+
return undefined;
|
|
43
|
+
return new Date(time).toISOString();
|
|
44
|
+
}
|
|
45
|
+
function canonicalFingerprintValue(value, depth = 0, seen = new Set()) {
|
|
46
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
if (typeof value === "number") {
|
|
50
|
+
return Number.isFinite(value) ? value : null;
|
|
51
|
+
}
|
|
52
|
+
if (typeof value !== "object" || depth > 12) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
const objectValue = value;
|
|
56
|
+
if (seen.has(objectValue))
|
|
57
|
+
return "<cycle>";
|
|
58
|
+
seen.add(objectValue);
|
|
59
|
+
try {
|
|
60
|
+
if (Array.isArray(value)) {
|
|
61
|
+
const output = [];
|
|
62
|
+
for (let index = 0; index < value.length; index++) {
|
|
63
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
64
|
+
output.push(descriptor && "value" in descriptor
|
|
65
|
+
? canonicalFingerprintValue(descriptor.value, depth + 1, seen)
|
|
66
|
+
: "<opaque>");
|
|
67
|
+
}
|
|
68
|
+
return output;
|
|
69
|
+
}
|
|
70
|
+
const prototype = Object.getPrototypeOf(value);
|
|
71
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
72
|
+
return "<opaque>";
|
|
73
|
+
}
|
|
74
|
+
const output = {};
|
|
75
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
76
|
+
for (const key of Object.keys(descriptors).sort()) {
|
|
77
|
+
const descriptor = descriptors[key];
|
|
78
|
+
if (!("value" in descriptor))
|
|
79
|
+
continue;
|
|
80
|
+
const child = canonicalFingerprintValue(descriptor.value, depth + 1, seen);
|
|
81
|
+
if (child !== undefined)
|
|
82
|
+
output[key] = child;
|
|
83
|
+
}
|
|
84
|
+
return output;
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
seen.delete(objectValue);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Stable fingerprint of the safe descriptor already retained by discovery.
|
|
92
|
+
* This closes same-name/toolId collision risk without reading executable or
|
|
93
|
+
* getter-backed runtime state.
|
|
94
|
+
*/
|
|
95
|
+
function executionToolFingerprint(tool) {
|
|
96
|
+
const canonical = canonicalFingerprintValue({
|
|
97
|
+
namespacedName: tool.namespacedName,
|
|
98
|
+
canonicalName: tool.canonicalName,
|
|
99
|
+
description: tool.description ?? "",
|
|
100
|
+
toolType: tool.toolType ?? "",
|
|
101
|
+
inputSchema: tool.inputSchema,
|
|
102
|
+
safeMetadata: tool.safeMetadata,
|
|
103
|
+
});
|
|
104
|
+
return (0, node_crypto_1.createHash)("sha256")
|
|
105
|
+
.update(JSON.stringify(canonical))
|
|
106
|
+
.digest("hex");
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Convert callback/telemetry metadata into a secret-minimal execution event.
|
|
110
|
+
*
|
|
111
|
+
* This function intentionally whitelists fields. Tool arguments, prompts,
|
|
112
|
+
* results, error messages, auth data, callbacks and runtime objects are never
|
|
113
|
+
* copied into the observation, even when present on the input object.
|
|
114
|
+
*/
|
|
115
|
+
function observeToolExecution(input) {
|
|
116
|
+
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
117
|
+
return Object.freeze({
|
|
118
|
+
accepted: false,
|
|
119
|
+
reason: "INVALID_EVENT",
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const toolId = optionalString(ownDataValue(input, "toolId"));
|
|
123
|
+
const namespacedName = optionalString(ownDataValue(input, "namespacedName"));
|
|
124
|
+
if (!toolId && !namespacedName) {
|
|
125
|
+
return Object.freeze({
|
|
126
|
+
accepted: false,
|
|
127
|
+
reason: "IDENTITY_REQUIRED",
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const status = ownDataValue(input, "status");
|
|
131
|
+
if (typeof status !== "string" || !VALID_STATUS.has(status)) {
|
|
132
|
+
return Object.freeze({
|
|
133
|
+
accepted: false,
|
|
134
|
+
reason: "INVALID_STATUS",
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
const source = ownDataValue(input, "source");
|
|
138
|
+
if (typeof source !== "string" || !VALID_SOURCE.has(source)) {
|
|
139
|
+
return Object.freeze({
|
|
140
|
+
accepted: false,
|
|
141
|
+
reason: "INVALID_SOURCE",
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
const observedAt = validTimestamp(ownDataValue(input, "observedAt"));
|
|
145
|
+
if (!observedAt) {
|
|
146
|
+
return Object.freeze({
|
|
147
|
+
accepted: false,
|
|
148
|
+
reason: "INVALID_TIMESTAMP",
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const rawDuration = ownDataValue(input, "durationMs");
|
|
152
|
+
if (rawDuration !== undefined &&
|
|
153
|
+
(typeof rawDuration !== "number" ||
|
|
154
|
+
!Number.isFinite(rawDuration) ||
|
|
155
|
+
rawDuration < 0)) {
|
|
156
|
+
return Object.freeze({
|
|
157
|
+
accepted: false,
|
|
158
|
+
reason: "INVALID_DURATION",
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
const eventId = optionalString(ownDataValue(input, "eventId"));
|
|
162
|
+
const descriptorFingerprint = optionalString(ownDataValue(input, "descriptorFingerprint"));
|
|
163
|
+
const canonicalName = optionalString(ownDataValue(input, "canonicalName"));
|
|
164
|
+
const framework = optionalString(ownDataValue(input, "framework"));
|
|
165
|
+
const runtimeName = optionalString(ownDataValue(input, "runtimeName"));
|
|
166
|
+
const event = Object.freeze({
|
|
167
|
+
...(eventId ? { eventId } : {}),
|
|
168
|
+
...(toolId ? { toolId } : {}),
|
|
169
|
+
...(namespacedName ? { namespacedName } : {}),
|
|
170
|
+
...(descriptorFingerprint ? { descriptorFingerprint } : {}),
|
|
171
|
+
...(canonicalName ? { canonicalName } : {}),
|
|
172
|
+
...(framework ? { framework } : {}),
|
|
173
|
+
...(runtimeName ? { runtimeName } : {}),
|
|
174
|
+
source: source,
|
|
175
|
+
status: status,
|
|
176
|
+
observedAt,
|
|
177
|
+
...(typeof rawDuration === "number"
|
|
178
|
+
? { durationMs: rawDuration }
|
|
179
|
+
: {}),
|
|
180
|
+
});
|
|
181
|
+
return Object.freeze({
|
|
182
|
+
accepted: true,
|
|
183
|
+
event,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
function identityKey(event) {
|
|
187
|
+
const identity = event.toolId
|
|
188
|
+
? `tool:${event.toolId}`
|
|
189
|
+
: `name:${event.namespacedName}`;
|
|
190
|
+
return event.descriptorFingerprint
|
|
191
|
+
? `${identity}:descriptor:${event.descriptorFingerprint}`
|
|
192
|
+
: identity;
|
|
193
|
+
}
|
|
194
|
+
function compareTimestamp(left, right) {
|
|
195
|
+
return Date.parse(left) - Date.parse(right);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Aggregate already-observed execution metadata without retaining raw call data.
|
|
199
|
+
* Duplicate event IDs are ignored so replayed telemetry batches do not inflate
|
|
200
|
+
* observed execution counts.
|
|
201
|
+
*/
|
|
202
|
+
function aggregateToolExecutions(inputs) {
|
|
203
|
+
const accepted = [];
|
|
204
|
+
let rejectedEventCount = 0;
|
|
205
|
+
let duplicateEventCount = 0;
|
|
206
|
+
const seenEventIds = new Set();
|
|
207
|
+
for (const input of inputs) {
|
|
208
|
+
const result = observeToolExecution(input);
|
|
209
|
+
if (!result.accepted) {
|
|
210
|
+
rejectedEventCount += 1;
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
if (result.event.eventId) {
|
|
214
|
+
if (seenEventIds.has(result.event.eventId)) {
|
|
215
|
+
duplicateEventCount += 1;
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
seenEventIds.add(result.event.eventId);
|
|
219
|
+
}
|
|
220
|
+
accepted.push(result.event);
|
|
221
|
+
}
|
|
222
|
+
const groups = new Map();
|
|
223
|
+
for (const event of accepted) {
|
|
224
|
+
const key = identityKey(event);
|
|
225
|
+
const existing = groups.get(key);
|
|
226
|
+
if (existing) {
|
|
227
|
+
existing.push(event);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
groups.set(key, [event]);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const summaries = [];
|
|
234
|
+
for (const [key, events] of groups.entries()) {
|
|
235
|
+
const ordered = [...events].sort((left, right) => compareTimestamp(left.observedAt, right.observedAt));
|
|
236
|
+
const first = ordered[0];
|
|
237
|
+
const last = ordered[ordered.length - 1];
|
|
238
|
+
const durations = ordered
|
|
239
|
+
.map(event => event.durationMs)
|
|
240
|
+
.filter((value) => typeof value === "number");
|
|
241
|
+
const totalDurationMs = durations.reduce((sum, value) => sum + value, 0);
|
|
242
|
+
const sources = Object.freeze([
|
|
243
|
+
...new Set(ordered.map(event => event.source)),
|
|
244
|
+
]);
|
|
245
|
+
summaries.push(Object.freeze({
|
|
246
|
+
identityKey: key,
|
|
247
|
+
...(last.toolId ? { toolId: last.toolId } : {}),
|
|
248
|
+
...(last.namespacedName ? { namespacedName: last.namespacedName } : {}),
|
|
249
|
+
...(last.descriptorFingerprint
|
|
250
|
+
? { descriptorFingerprint: last.descriptorFingerprint }
|
|
251
|
+
: {}),
|
|
252
|
+
...(last.canonicalName ? { canonicalName: last.canonicalName } : {}),
|
|
253
|
+
...(last.framework ? { framework: last.framework } : {}),
|
|
254
|
+
...(last.runtimeName ? { runtimeName: last.runtimeName } : {}),
|
|
255
|
+
callCount: ordered.length,
|
|
256
|
+
succeededCount: ordered.filter(event => event.status === "SUCCEEDED").length,
|
|
257
|
+
failedCount: ordered.filter(event => event.status === "FAILED").length,
|
|
258
|
+
unknownCount: ordered.filter(event => event.status === "UNKNOWN").length,
|
|
259
|
+
firstObservedAt: first.observedAt,
|
|
260
|
+
lastObservedAt: last.observedAt,
|
|
261
|
+
latestStatus: last.status,
|
|
262
|
+
...(durations.length > 0
|
|
263
|
+
? {
|
|
264
|
+
totalDurationMs,
|
|
265
|
+
averageDurationMs: totalDurationMs / durations.length,
|
|
266
|
+
}
|
|
267
|
+
: {}),
|
|
268
|
+
sources,
|
|
269
|
+
}));
|
|
270
|
+
}
|
|
271
|
+
summaries.sort((left, right) => left.identityKey.localeCompare(right.identityKey));
|
|
272
|
+
return Object.freeze({
|
|
273
|
+
summaries: Object.freeze(summaries),
|
|
274
|
+
acceptedEventCount: accepted.length,
|
|
275
|
+
rejectedEventCount,
|
|
276
|
+
duplicateEventCount,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
function summaryMatchesTool(tool, summary) {
|
|
280
|
+
if (!summary.descriptorFingerprint)
|
|
281
|
+
return false;
|
|
282
|
+
if (summary.descriptorFingerprint !== executionToolFingerprint(tool)) {
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
if (summary.toolId && summary.toolId !== tool.toolId) {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
if (summary.namespacedName &&
|
|
289
|
+
summary.namespacedName !== tool.namespacedName) {
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
return Boolean(summary.toolId || summary.namespacedName);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Promote a discovered tool to EXECUTED evidence only after exact identity
|
|
296
|
+
* correlation plus a safe-descriptor fingerprint match. Canonical/display
|
|
297
|
+
* names alone are never sufficient because same-named tools may exist in
|
|
298
|
+
* different agents, runtimes or servers and older discovery IDs may collide.
|
|
299
|
+
*/
|
|
300
|
+
function promoteToolExecution(tool, summary) {
|
|
301
|
+
if (!summaryMatchesTool(tool, summary)) {
|
|
302
|
+
return undefined;
|
|
303
|
+
}
|
|
304
|
+
const visibility = Object.freeze({
|
|
305
|
+
...tool.visibility,
|
|
306
|
+
executed: true,
|
|
307
|
+
});
|
|
308
|
+
const once = (0, tool_importance_js_1.assessToolImportance)({
|
|
309
|
+
name: tool.canonicalName,
|
|
310
|
+
description: tool.description,
|
|
311
|
+
sourceCategory: tool.toolType,
|
|
312
|
+
evidence: "EXECUTED",
|
|
313
|
+
qualification: tool.once.qualification,
|
|
314
|
+
protection: tool.once.protection,
|
|
315
|
+
readOnlyHint: tool.once.effectClass === "READ_ONLY"
|
|
316
|
+
? true
|
|
317
|
+
: undefined,
|
|
318
|
+
});
|
|
319
|
+
return Object.freeze({
|
|
320
|
+
...tool,
|
|
321
|
+
evidence: Object.freeze({
|
|
322
|
+
level: "EXECUTED",
|
|
323
|
+
source: `execution:${summary.sources.join(",")}`,
|
|
324
|
+
}),
|
|
325
|
+
visibility,
|
|
326
|
+
execution: summary,
|
|
327
|
+
once,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=execution-observation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-observation.js","sourceRoot":"","sources":["../src/execution-observation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.connectOpenAIAgentsFunctionToolsGatewayAuto = exports.bindGatewayPlanToToolGraph = exports.connectLocalGatewayToolsetAuto = exports.GatewayConnectionError = exports.planGatewayToolset = exports.gatewayDescriptorFingerprint = exports.GATEWAY_PLAN_VERSION = exports.GATEWAY_ROUTE = void 0;
|
|
4
|
+
var planner_js_1 = require("./planner.js");
|
|
5
|
+
Object.defineProperty(exports, "GATEWAY_ROUTE", { enumerable: true, get: function () { return planner_js_1.GATEWAY_ROUTE; } });
|
|
6
|
+
Object.defineProperty(exports, "GATEWAY_PLAN_VERSION", { enumerable: true, get: function () { return planner_js_1.GATEWAY_PLAN_VERSION; } });
|
|
7
|
+
Object.defineProperty(exports, "gatewayDescriptorFingerprint", { enumerable: true, get: function () { return planner_js_1.gatewayDescriptorFingerprint; } });
|
|
8
|
+
Object.defineProperty(exports, "planGatewayToolset", { enumerable: true, get: function () { return planner_js_1.planGatewayToolset; } });
|
|
9
|
+
var local_toolset_js_1 = require("./local-toolset.js");
|
|
10
|
+
Object.defineProperty(exports, "GatewayConnectionError", { enumerable: true, get: function () { return local_toolset_js_1.GatewayConnectionError; } });
|
|
11
|
+
Object.defineProperty(exports, "connectLocalGatewayToolsetAuto", { enumerable: true, get: function () { return local_toolset_js_1.connectLocalGatewayToolsetAuto; } });
|
|
12
|
+
var tool_graph_binding_js_1 = require("./tool-graph-binding.js");
|
|
13
|
+
Object.defineProperty(exports, "bindGatewayPlanToToolGraph", { enumerable: true, get: function () { return tool_graph_binding_js_1.bindGatewayPlanToToolGraph; } });
|
|
14
|
+
var openai_function_tools_js_1 = require("./openai-function-tools.js");
|
|
15
|
+
Object.defineProperty(exports, "connectOpenAIAgentsFunctionToolsGatewayAuto", { enumerable: true, get: function () { return openai_function_tools_js_1.connectOpenAIAgentsFunctionToolsGatewayAuto; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":";;;AAAA,2CAKsB;AAJpB,2GAAA,aAAa,OAAA;AACb,kHAAA,oBAAoB,OAAA;AACpB,0HAAA,4BAA4B,OAAA;AAC5B,gHAAA,kBAAkB,OAAA;AAGpB,uDAG4B;AAF1B,0HAAA,sBAAsB,OAAA;AACtB,kIAAA,8BAA8B,OAAA;AAGhC,iEAEiC;AAD/B,mIAAA,0BAA0B,OAAA;AAG5B,uEAEoC;AADlC,uJAAA,2CAA2C,OAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GatewayConnectionError = void 0;
|
|
4
|
+
exports.connectLocalGatewayToolsetAuto = connectLocalGatewayToolsetAuto;
|
|
5
|
+
const toolset_js_1 = require("../connect/toolset.js");
|
|
6
|
+
const planner_js_1 = require("./planner.js");
|
|
7
|
+
const tool_graph_binding_js_1 = require("./tool-graph-binding.js");
|
|
8
|
+
class GatewayConnectionError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
constructor(code, message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.name = "GatewayConnectionError";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.GatewayConnectionError = GatewayConnectionError;
|
|
17
|
+
function blockedSummary(plan) {
|
|
18
|
+
return plan.blocked
|
|
19
|
+
.map(entry => `${entry.name ?? `#${entry.index}`}:${entry.connectReason}`)
|
|
20
|
+
.join(", ");
|
|
21
|
+
}
|
|
22
|
+
function bindingBlockedSummary(plan) {
|
|
23
|
+
return plan.blocked
|
|
24
|
+
.map(entry => `${entry.name ?? `#${entry.index}`}:${entry.bindingStatus}`)
|
|
25
|
+
.join(", ");
|
|
26
|
+
}
|
|
27
|
+
function verifyConnectAgreement(gatewayPlan, connectPlan) {
|
|
28
|
+
if (gatewayPlan.entries.length !== connectPlan.entries.length) {
|
|
29
|
+
throw new GatewayConnectionError("GATEWAY_PLAN_MISMATCH", "Gateway and Connect disagree about the selected toolset length.");
|
|
30
|
+
}
|
|
31
|
+
for (let index = 0; index < gatewayPlan.entries.length; index += 1) {
|
|
32
|
+
const gateway = gatewayPlan.entries[index];
|
|
33
|
+
const connect = connectPlan.entries[index];
|
|
34
|
+
const expected = gateway.route === planner_js_1.GATEWAY_ROUTE.DIRECT
|
|
35
|
+
? "BYPASS"
|
|
36
|
+
: gateway.route === planner_js_1.GATEWAY_ROUTE.PROTECT
|
|
37
|
+
? "PROTECT"
|
|
38
|
+
: "UNKNOWN";
|
|
39
|
+
if (connect.decision !== expected) {
|
|
40
|
+
throw new GatewayConnectionError("GATEWAY_PLAN_MISMATCH", `Gateway and Connect disagree about route index ${index}.`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Wire a complete runtime-selected local tool subset through the Once Gateway.
|
|
46
|
+
*
|
|
47
|
+
* This function intentionally contains no execution engine. It performs a
|
|
48
|
+
* gateway preflight, optionally binds exact Tool Graph identity, then delegates
|
|
49
|
+
* registry validation and wrapper creation to the existing Connect toolset.
|
|
50
|
+
*
|
|
51
|
+
* A selected subset containing BLOCK cannot be partially wired. Returning a
|
|
52
|
+
* mixed registry would leave an unprotected bypass surface for unresolved
|
|
53
|
+
* tools, so v1 fails the whole selected subset closed.
|
|
54
|
+
*/
|
|
55
|
+
function connectLocalGatewayToolsetAuto(tools, options) {
|
|
56
|
+
if (!options || !("manifest" in options)) {
|
|
57
|
+
throw new GatewayConnectionError("INVALID_GATEWAY_MANIFEST", "Once Gateway needs the complete runtime-selected tool manifest before wiring.");
|
|
58
|
+
}
|
|
59
|
+
const plan = (0, planner_js_1.planGatewayToolset)(options.manifest);
|
|
60
|
+
if (!plan.valid) {
|
|
61
|
+
throw new GatewayConnectionError("INVALID_GATEWAY_MANIFEST", "Once Gateway could not parse the supplied runtime-selected tool manifest.");
|
|
62
|
+
}
|
|
63
|
+
if (!plan.ready) {
|
|
64
|
+
throw new GatewayConnectionError("GATEWAY_BLOCKED", `Once Gateway refuses partial wiring while selected-tool routing is unresolved: ${blockedSummary(plan)}.`);
|
|
65
|
+
}
|
|
66
|
+
let binding;
|
|
67
|
+
if (options.toolGraphBindings !== undefined) {
|
|
68
|
+
if (!Array.isArray(options.toolGraphBindings)) {
|
|
69
|
+
throw new GatewayConnectionError("INVALID_TOOL_GRAPH_BINDINGS", "Once Gateway Tool Graph bindings must be an array of safe identity records.");
|
|
70
|
+
}
|
|
71
|
+
binding = (0, tool_graph_binding_js_1.bindGatewayPlanToToolGraph)(plan, options.toolGraphBindings);
|
|
72
|
+
if (!binding.ready) {
|
|
73
|
+
throw new GatewayConnectionError("GATEWAY_TOOL_GRAPH_BLOCKED", `Once Gateway refuses wiring because selected tools do not match exact Tool Graph identity: ${bindingBlockedSummary(binding)}.`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const connected = (0, toolset_js_1.connectLocalAgentToolsetAuto)(tools, options);
|
|
77
|
+
verifyConnectAgreement(plan, connected.plan);
|
|
78
|
+
return Object.freeze({
|
|
79
|
+
plan,
|
|
80
|
+
...(binding ? { binding } : {}),
|
|
81
|
+
tools: connected.tools,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=local-toolset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-toolset.js","sourceRoot":"","sources":["../../src/gateway/local-toolset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.connectOpenAIAgentsFunctionToolsGatewayAuto = connectOpenAIAgentsFunctionToolsGatewayAuto;
|
|
4
|
+
const openai_function_tools_js_1 = require("../connect/openai-function-tools.js");
|
|
5
|
+
const local_toolset_js_1 = require("./local-toolset.js");
|
|
6
|
+
const planner_js_1 = require("./planner.js");
|
|
7
|
+
const tool_graph_binding_js_1 = require("./tool-graph-binding.js");
|
|
8
|
+
function isObject(value) {
|
|
9
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
10
|
+
}
|
|
11
|
+
function isFunctionToolLike(value) {
|
|
12
|
+
return isObject(value) &&
|
|
13
|
+
value.type === "function" &&
|
|
14
|
+
typeof value.name === "string" &&
|
|
15
|
+
value.name.trim() !== "" &&
|
|
16
|
+
typeof value.description === "string" &&
|
|
17
|
+
Object.prototype.hasOwnProperty.call(value, "parameters") &&
|
|
18
|
+
typeof value.invoke === "function";
|
|
19
|
+
}
|
|
20
|
+
function descriptorFor(tool, override) {
|
|
21
|
+
return {
|
|
22
|
+
name: tool.name,
|
|
23
|
+
description: tool.description,
|
|
24
|
+
inputSchema: tool.parameters,
|
|
25
|
+
...(override?.annotations !== undefined
|
|
26
|
+
? { annotations: override.annotations }
|
|
27
|
+
: {}),
|
|
28
|
+
...(override?._meta !== undefined
|
|
29
|
+
? { _meta: override._meta }
|
|
30
|
+
: {}),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function blockedSummary(plan) {
|
|
34
|
+
return plan.blocked
|
|
35
|
+
.map(entry => `${entry.name ?? `#${entry.index}`}:${entry.connectReason}`)
|
|
36
|
+
.join(", ");
|
|
37
|
+
}
|
|
38
|
+
function bindingBlockedSummary(plan) {
|
|
39
|
+
return plan.blocked
|
|
40
|
+
.map(entry => `${entry.name ?? `#${entry.index}`}:${entry.bindingStatus}`)
|
|
41
|
+
.join(", ");
|
|
42
|
+
}
|
|
43
|
+
function verifyConnectAgreement(gatewayPlan, connectEntries) {
|
|
44
|
+
if (gatewayPlan.entries.length !== connectEntries.length) {
|
|
45
|
+
throw new local_toolset_js_1.GatewayConnectionError("GATEWAY_PLAN_MISMATCH", "OpenAI Gateway and Connect disagree about the FunctionTool subset length.");
|
|
46
|
+
}
|
|
47
|
+
for (let index = 0; index < gatewayPlan.entries.length; index += 1) {
|
|
48
|
+
const gateway = gatewayPlan.entries[index];
|
|
49
|
+
const expected = gateway.route === planner_js_1.GATEWAY_ROUTE.DIRECT
|
|
50
|
+
? "BYPASS"
|
|
51
|
+
: gateway.route === planner_js_1.GATEWAY_ROUTE.PROTECT
|
|
52
|
+
? "PROTECT"
|
|
53
|
+
: "UNKNOWN";
|
|
54
|
+
if (connectEntries[index]?.decision !== expected) {
|
|
55
|
+
throw new local_toolset_js_1.GatewayConnectionError("GATEWAY_PLAN_MISMATCH", `OpenAI Gateway and Connect disagree about FunctionTool route index ${index}.`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Route an already-selected OpenAI Agents FunctionTool subset through Once.
|
|
61
|
+
*
|
|
62
|
+
* Gateway owns only preflight/routing identity. Actual FunctionTool wrapping,
|
|
63
|
+
* protected input parsing, logical-operation identity, payload binding,
|
|
64
|
+
* replay and reconciliation remain delegated to the existing proven Connect
|
|
65
|
+
* adapter. The supplied subset is never expanded with Tool Graph catalog
|
|
66
|
+
* entries.
|
|
67
|
+
*/
|
|
68
|
+
function connectOpenAIAgentsFunctionToolsGatewayAuto(tools, options = {}) {
|
|
69
|
+
if (!Array.isArray(tools)) {
|
|
70
|
+
throw new local_toolset_js_1.GatewayConnectionError("INVALID_OPENAI_GATEWAY_TOOLSET", "Once Gateway needs the runtime-selected OpenAI Agents FunctionTool array.");
|
|
71
|
+
}
|
|
72
|
+
const manifest = [];
|
|
73
|
+
const names = new Set();
|
|
74
|
+
for (const candidate of tools) {
|
|
75
|
+
if (!isFunctionToolLike(candidate)) {
|
|
76
|
+
throw new local_toolset_js_1.GatewayConnectionError("UNSUPPORTED_OPENAI_GATEWAY_TOOL_TYPE", "Once Gateway v1 supports only OpenAI Agents FunctionTool objects in this adapter.");
|
|
77
|
+
}
|
|
78
|
+
if (names.has(candidate.name)) {
|
|
79
|
+
throw new local_toolset_js_1.GatewayConnectionError("DUPLICATE_OPENAI_GATEWAY_TOOL_NAME", `Once Gateway cannot safely map duplicate OpenAI FunctionTool name "${candidate.name}".`);
|
|
80
|
+
}
|
|
81
|
+
names.add(candidate.name);
|
|
82
|
+
manifest.push(descriptorFor(candidate, options.overrides?.[candidate.name]));
|
|
83
|
+
}
|
|
84
|
+
if (options.overrides) {
|
|
85
|
+
for (const name of Object.keys(options.overrides)) {
|
|
86
|
+
if (!names.has(name)) {
|
|
87
|
+
throw new local_toolset_js_1.GatewayConnectionError("UNDECLARED_OPENAI_GATEWAY_OVERRIDE", `Gateway override "${name}" does not correspond to a supplied FunctionTool.`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const plan = (0, planner_js_1.planGatewayToolset)(manifest);
|
|
92
|
+
if (!plan.valid) {
|
|
93
|
+
throw new local_toolset_js_1.GatewayConnectionError("INVALID_OPENAI_GATEWAY_TOOLSET", "Once Gateway could not plan the supplied OpenAI FunctionTool subset.");
|
|
94
|
+
}
|
|
95
|
+
if (!plan.ready) {
|
|
96
|
+
throw new local_toolset_js_1.GatewayConnectionError("GATEWAY_BLOCKED", `Once Gateway refuses unresolved OpenAI FunctionTool routing: ${blockedSummary(plan)}.`);
|
|
97
|
+
}
|
|
98
|
+
let binding;
|
|
99
|
+
if (options.toolGraphBindings !== undefined) {
|
|
100
|
+
if (!Array.isArray(options.toolGraphBindings)) {
|
|
101
|
+
throw new local_toolset_js_1.GatewayConnectionError("INVALID_TOOL_GRAPH_BINDINGS", "OpenAI Gateway Tool Graph bindings must be an array of safe identity records.");
|
|
102
|
+
}
|
|
103
|
+
binding = (0, tool_graph_binding_js_1.bindGatewayPlanToToolGraph)(plan, options.toolGraphBindings);
|
|
104
|
+
if (!binding.ready) {
|
|
105
|
+
throw new local_toolset_js_1.GatewayConnectionError("GATEWAY_TOOL_GRAPH_BLOCKED", `OpenAI Gateway refuses stale or ambiguous Tool Graph identity: ${bindingBlockedSummary(binding)}.`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const { toolGraphBindings: _toolGraphBindings, ...connectOptions } = options;
|
|
109
|
+
const connected = (0, openai_function_tools_js_1.connectOpenAIAgentsFunctionToolsAuto)(tools, connectOptions);
|
|
110
|
+
verifyConnectAgreement(plan, connected.plan.entries);
|
|
111
|
+
if (connected.tools.length !== tools.length) {
|
|
112
|
+
throw new local_toolset_js_1.GatewayConnectionError("GATEWAY_SUBSET_MISMATCH", "OpenAI Gateway changed the size of the runtime-selected FunctionTool subset.");
|
|
113
|
+
}
|
|
114
|
+
return Object.freeze({
|
|
115
|
+
plan,
|
|
116
|
+
...(binding ? { binding } : {}),
|
|
117
|
+
tools: connected.tools,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=openai-function-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-function-tools.js","sourceRoot":"","sources":["../../src/gateway/openai-function-tools.ts"],"names":[],"mappings":"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"}
|