@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.
Files changed (166) hide show
  1. package/README.md +76 -1
  2. package/dist/cli.js +50 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/connect/identity.d.ts +22 -0
  5. package/dist/connect/identity.d.ts.map +1 -0
  6. package/dist/connect/identity.js +159 -0
  7. package/dist/connect/identity.js.map +1 -0
  8. package/dist/connect/index.d.ts +17 -0
  9. package/dist/connect/index.d.ts.map +1 -0
  10. package/dist/connect/index.js +9 -0
  11. package/dist/connect/index.js.map +1 -0
  12. package/dist/connect/local-agent-tool.d.ts +62 -0
  13. package/dist/connect/local-agent-tool.d.ts.map +1 -0
  14. package/dist/connect/local-agent-tool.js +131 -0
  15. package/dist/connect/local-agent-tool.js.map +1 -0
  16. package/dist/connect/manifest.d.ts +55 -0
  17. package/dist/connect/manifest.d.ts.map +1 -0
  18. package/dist/connect/manifest.js +166 -0
  19. package/dist/connect/manifest.js.map +1 -0
  20. package/dist/connect/openai-function-tools.d.ts +66 -0
  21. package/dist/connect/openai-function-tools.d.ts.map +1 -0
  22. package/dist/connect/openai-function-tools.js +182 -0
  23. package/dist/connect/openai-function-tools.js.map +1 -0
  24. package/dist/connect/payload.d.ts +30 -0
  25. package/dist/connect/payload.d.ts.map +1 -0
  26. package/dist/connect/payload.js +122 -0
  27. package/dist/connect/payload.js.map +1 -0
  28. package/dist/connect/tool-classifier.d.ts +40 -0
  29. package/dist/connect/tool-classifier.d.ts.map +1 -0
  30. package/dist/connect/tool-classifier.js +271 -0
  31. package/dist/connect/tool-classifier.js.map +1 -0
  32. package/dist/connect/toolset.d.ts +42 -0
  33. package/dist/connect/toolset.d.ts.map +1 -0
  34. package/dist/connect/toolset.js +123 -0
  35. package/dist/connect/toolset.js.map +1 -0
  36. package/dist/discovery/index.d.ts +13 -0
  37. package/dist/discovery/index.d.ts.map +1 -0
  38. package/dist/discovery/index.js +8 -0
  39. package/dist/discovery/index.js.map +1 -0
  40. package/dist/execution-observation.d.ts +122 -0
  41. package/dist/execution-observation.d.ts.map +1 -0
  42. package/dist/execution-observation.js +324 -0
  43. package/dist/execution-observation.js.map +1 -0
  44. package/dist/gateway/index.d.ts +9 -0
  45. package/dist/gateway/index.d.ts.map +1 -0
  46. package/dist/gateway/index.js +5 -0
  47. package/dist/gateway/index.js.map +1 -0
  48. package/dist/gateway/local-toolset.d.ts +32 -0
  49. package/dist/gateway/local-toolset.d.ts.map +1 -0
  50. package/dist/gateway/local-toolset.js +79 -0
  51. package/dist/gateway/local-toolset.js.map +1 -0
  52. package/dist/gateway/openai-function-tools.d.ts +28 -0
  53. package/dist/gateway/openai-function-tools.d.ts.map +1 -0
  54. package/dist/gateway/openai-function-tools.js +117 -0
  55. package/dist/gateway/openai-function-tools.js.map +1 -0
  56. package/dist/gateway/planner.d.ts +53 -0
  57. package/dist/gateway/planner.d.ts.map +1 -0
  58. package/dist/gateway/planner.js +155 -0
  59. package/dist/gateway/planner.js.map +1 -0
  60. package/dist/gateway/tool-graph-binding.d.ts +51 -0
  61. package/dist/gateway/tool-graph-binding.d.ts.map +1 -0
  62. package/dist/gateway/tool-graph-binding.js +123 -0
  63. package/dist/gateway/tool-graph-binding.js.map +1 -0
  64. package/dist/index.d.ts +2 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +1 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/langchain-execution-observer.d.ts +22 -0
  69. package/dist/langchain-execution-observer.d.ts.map +1 -0
  70. package/dist/langchain-execution-observer.js +128 -0
  71. package/dist/langchain-execution-observer.js.map +1 -0
  72. package/dist/langchain-runtime-discovery.d.ts +33 -0
  73. package/dist/langchain-runtime-discovery.d.ts.map +1 -0
  74. package/dist/langchain-runtime-discovery.js +214 -0
  75. package/dist/langchain-runtime-discovery.js.map +1 -0
  76. package/dist/mcp-live-discovery.d.ts +71 -0
  77. package/dist/mcp-live-discovery.d.ts.map +1 -0
  78. package/dist/mcp-live-discovery.js +710 -0
  79. package/dist/mcp-live-discovery.js.map +1 -0
  80. package/dist/mcp-live-report.d.ts +3 -0
  81. package/dist/mcp-live-report.d.ts.map +1 -0
  82. package/dist/mcp-live-report.js +50 -0
  83. package/dist/mcp-live-report.js.map +1 -0
  84. package/dist/mcp-tool-refresh-report.d.ts +3 -0
  85. package/dist/mcp-tool-refresh-report.d.ts.map +1 -0
  86. package/dist/mcp-tool-refresh-report.js +44 -0
  87. package/dist/mcp-tool-refresh-report.js.map +1 -0
  88. package/dist/mcp-tool-refresh.d.ts +33 -0
  89. package/dist/mcp-tool-refresh.d.ts.map +1 -0
  90. package/dist/mcp-tool-refresh.js +489 -0
  91. package/dist/mcp-tool-refresh.js.map +1 -0
  92. package/dist/openai-agents-execution-observer.d.ts +24 -0
  93. package/dist/openai-agents-execution-observer.d.ts.map +1 -0
  94. package/dist/openai-agents-execution-observer.js +163 -0
  95. package/dist/openai-agents-execution-observer.js.map +1 -0
  96. package/dist/otel-execution-observer.d.ts +16 -0
  97. package/dist/otel-execution-observer.d.ts.map +1 -0
  98. package/dist/otel-execution-observer.js +129 -0
  99. package/dist/otel-execution-observer.js.map +1 -0
  100. package/dist/runtime-tool-discovery.d.ts +86 -0
  101. package/dist/runtime-tool-discovery.d.ts.map +1 -0
  102. package/dist/runtime-tool-discovery.js +429 -0
  103. package/dist/runtime-tool-discovery.js.map +1 -0
  104. package/dist/tool-discovery.d.ts +51 -0
  105. package/dist/tool-discovery.d.ts.map +1 -0
  106. package/dist/tool-discovery.js +487 -0
  107. package/dist/tool-discovery.js.map +1 -0
  108. package/dist/tool-importance.d.ts +34 -0
  109. package/dist/tool-importance.d.ts.map +1 -0
  110. package/dist/tool-importance.js +269 -0
  111. package/dist/tool-importance.js.map +1 -0
  112. package/dist/tool-report.d.ts +3 -0
  113. package/dist/tool-report.d.ts.map +1 -0
  114. package/dist/tool-report.js +75 -0
  115. package/dist/tool-report.js.map +1 -0
  116. package/dist/vercel-execution-observer.d.ts +12 -0
  117. package/dist/vercel-execution-observer.d.ts.map +1 -0
  118. package/dist/vercel-execution-observer.js +97 -0
  119. package/dist/vercel-execution-observer.js.map +1 -0
  120. package/dist-cjs/connect/identity.js +162 -0
  121. package/dist-cjs/connect/identity.js.map +1 -0
  122. package/dist-cjs/connect/index.js +26 -0
  123. package/dist-cjs/connect/index.js.map +1 -0
  124. package/dist-cjs/connect/local-agent-tool.js +137 -0
  125. package/dist-cjs/connect/local-agent-tool.js.map +1 -0
  126. package/dist-cjs/connect/manifest.js +171 -0
  127. package/dist-cjs/connect/manifest.js.map +1 -0
  128. package/dist-cjs/connect/openai-function-tools.js +187 -0
  129. package/dist-cjs/connect/openai-function-tools.js.map +1 -0
  130. package/dist-cjs/connect/payload.js +125 -0
  131. package/dist-cjs/connect/payload.js.map +1 -0
  132. package/dist-cjs/connect/tool-classifier.js +276 -0
  133. package/dist-cjs/connect/tool-classifier.js.map +1 -0
  134. package/dist-cjs/connect/toolset.js +126 -0
  135. package/dist-cjs/connect/toolset.js.map +1 -0
  136. package/dist-cjs/discovery/index.js +26 -0
  137. package/dist-cjs/discovery/index.js.map +1 -0
  138. package/dist-cjs/execution-observation.js +330 -0
  139. package/dist-cjs/execution-observation.js.map +1 -0
  140. package/dist-cjs/gateway/index.js +16 -0
  141. package/dist-cjs/gateway/index.js.map +1 -0
  142. package/dist-cjs/gateway/local-toolset.js +84 -0
  143. package/dist-cjs/gateway/local-toolset.js.map +1 -0
  144. package/dist-cjs/gateway/openai-function-tools.js +120 -0
  145. package/dist-cjs/gateway/openai-function-tools.js.map +1 -0
  146. package/dist-cjs/gateway/planner.js +160 -0
  147. package/dist-cjs/gateway/planner.js.map +1 -0
  148. package/dist-cjs/gateway/tool-graph-binding.js +126 -0
  149. package/dist-cjs/gateway/tool-graph-binding.js.map +1 -0
  150. package/dist-cjs/index.js +4 -1
  151. package/dist-cjs/index.js.map +1 -1
  152. package/dist-cjs/langchain-execution-observer.js +131 -0
  153. package/dist-cjs/langchain-execution-observer.js.map +1 -0
  154. package/dist-cjs/langchain-runtime-discovery.js +218 -0
  155. package/dist-cjs/langchain-runtime-discovery.js.map +1 -0
  156. package/dist-cjs/openai-agents-execution-observer.js +166 -0
  157. package/dist-cjs/openai-agents-execution-observer.js.map +1 -0
  158. package/dist-cjs/otel-execution-observer.js +132 -0
  159. package/dist-cjs/otel-execution-observer.js.map +1 -0
  160. package/dist-cjs/runtime-tool-discovery.js +436 -0
  161. package/dist-cjs/runtime-tool-discovery.js.map +1 -0
  162. package/dist-cjs/tool-importance.js +272 -0
  163. package/dist-cjs/tool-importance.js.map +1 -0
  164. package/dist-cjs/vercel-execution-observer.js +100 -0
  165. package/dist-cjs/vercel-execution-observer.js.map +1 -0
  166. 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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"}