@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.
Files changed (160) 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 +30 -7
  13. package/dist/connect/local-agent-tool.d.ts.map +1 -1
  14. package/dist/connect/local-agent-tool.js +81 -9
  15. package/dist/connect/local-agent-tool.js.map +1 -1
  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/langchain-execution-observer.d.ts +22 -0
  65. package/dist/langchain-execution-observer.d.ts.map +1 -0
  66. package/dist/langchain-execution-observer.js +128 -0
  67. package/dist/langchain-execution-observer.js.map +1 -0
  68. package/dist/langchain-runtime-discovery.d.ts +33 -0
  69. package/dist/langchain-runtime-discovery.d.ts.map +1 -0
  70. package/dist/langchain-runtime-discovery.js +214 -0
  71. package/dist/langchain-runtime-discovery.js.map +1 -0
  72. package/dist/mcp-live-discovery.d.ts +71 -0
  73. package/dist/mcp-live-discovery.d.ts.map +1 -0
  74. package/dist/mcp-live-discovery.js +710 -0
  75. package/dist/mcp-live-discovery.js.map +1 -0
  76. package/dist/mcp-live-report.d.ts +3 -0
  77. package/dist/mcp-live-report.d.ts.map +1 -0
  78. package/dist/mcp-live-report.js +50 -0
  79. package/dist/mcp-live-report.js.map +1 -0
  80. package/dist/mcp-tool-refresh-report.d.ts +3 -0
  81. package/dist/mcp-tool-refresh-report.d.ts.map +1 -0
  82. package/dist/mcp-tool-refresh-report.js +44 -0
  83. package/dist/mcp-tool-refresh-report.js.map +1 -0
  84. package/dist/mcp-tool-refresh.d.ts +33 -0
  85. package/dist/mcp-tool-refresh.d.ts.map +1 -0
  86. package/dist/mcp-tool-refresh.js +489 -0
  87. package/dist/mcp-tool-refresh.js.map +1 -0
  88. package/dist/openai-agents-execution-observer.d.ts +24 -0
  89. package/dist/openai-agents-execution-observer.d.ts.map +1 -0
  90. package/dist/openai-agents-execution-observer.js +163 -0
  91. package/dist/openai-agents-execution-observer.js.map +1 -0
  92. package/dist/otel-execution-observer.d.ts +16 -0
  93. package/dist/otel-execution-observer.d.ts.map +1 -0
  94. package/dist/otel-execution-observer.js +129 -0
  95. package/dist/otel-execution-observer.js.map +1 -0
  96. package/dist/runtime-tool-discovery.d.ts +86 -0
  97. package/dist/runtime-tool-discovery.d.ts.map +1 -0
  98. package/dist/runtime-tool-discovery.js +429 -0
  99. package/dist/runtime-tool-discovery.js.map +1 -0
  100. package/dist/tool-discovery.d.ts +51 -0
  101. package/dist/tool-discovery.d.ts.map +1 -0
  102. package/dist/tool-discovery.js +487 -0
  103. package/dist/tool-discovery.js.map +1 -0
  104. package/dist/tool-importance.d.ts +34 -0
  105. package/dist/tool-importance.d.ts.map +1 -0
  106. package/dist/tool-importance.js +269 -0
  107. package/dist/tool-importance.js.map +1 -0
  108. package/dist/tool-report.d.ts +3 -0
  109. package/dist/tool-report.d.ts.map +1 -0
  110. package/dist/tool-report.js +75 -0
  111. package/dist/tool-report.js.map +1 -0
  112. package/dist/vercel-execution-observer.d.ts +12 -0
  113. package/dist/vercel-execution-observer.d.ts.map +1 -0
  114. package/dist/vercel-execution-observer.js +97 -0
  115. package/dist/vercel-execution-observer.js.map +1 -0
  116. package/dist-cjs/connect/identity.js +162 -0
  117. package/dist-cjs/connect/identity.js.map +1 -0
  118. package/dist-cjs/connect/index.js +26 -0
  119. package/dist-cjs/connect/index.js.map +1 -0
  120. package/dist-cjs/connect/local-agent-tool.js +82 -9
  121. package/dist-cjs/connect/local-agent-tool.js.map +1 -1
  122. package/dist-cjs/connect/manifest.js +171 -0
  123. package/dist-cjs/connect/manifest.js.map +1 -0
  124. package/dist-cjs/connect/openai-function-tools.js +187 -0
  125. package/dist-cjs/connect/openai-function-tools.js.map +1 -0
  126. package/dist-cjs/connect/payload.js +125 -0
  127. package/dist-cjs/connect/payload.js.map +1 -0
  128. package/dist-cjs/connect/tool-classifier.js +276 -0
  129. package/dist-cjs/connect/tool-classifier.js.map +1 -0
  130. package/dist-cjs/connect/toolset.js +126 -0
  131. package/dist-cjs/connect/toolset.js.map +1 -0
  132. package/dist-cjs/discovery/index.js +26 -0
  133. package/dist-cjs/discovery/index.js.map +1 -0
  134. package/dist-cjs/execution-observation.js +330 -0
  135. package/dist-cjs/execution-observation.js.map +1 -0
  136. package/dist-cjs/gateway/index.js +16 -0
  137. package/dist-cjs/gateway/index.js.map +1 -0
  138. package/dist-cjs/gateway/local-toolset.js +84 -0
  139. package/dist-cjs/gateway/local-toolset.js.map +1 -0
  140. package/dist-cjs/gateway/openai-function-tools.js +120 -0
  141. package/dist-cjs/gateway/openai-function-tools.js.map +1 -0
  142. package/dist-cjs/gateway/planner.js +160 -0
  143. package/dist-cjs/gateway/planner.js.map +1 -0
  144. package/dist-cjs/gateway/tool-graph-binding.js +126 -0
  145. package/dist-cjs/gateway/tool-graph-binding.js.map +1 -0
  146. package/dist-cjs/langchain-execution-observer.js +131 -0
  147. package/dist-cjs/langchain-execution-observer.js.map +1 -0
  148. package/dist-cjs/langchain-runtime-discovery.js +218 -0
  149. package/dist-cjs/langchain-runtime-discovery.js.map +1 -0
  150. package/dist-cjs/openai-agents-execution-observer.js +166 -0
  151. package/dist-cjs/openai-agents-execution-observer.js.map +1 -0
  152. package/dist-cjs/otel-execution-observer.js +132 -0
  153. package/dist-cjs/otel-execution-observer.js.map +1 -0
  154. package/dist-cjs/runtime-tool-discovery.js +436 -0
  155. package/dist-cjs/runtime-tool-discovery.js.map +1 -0
  156. package/dist-cjs/tool-importance.js +272 -0
  157. package/dist-cjs/tool-importance.js.map +1 -0
  158. package/dist-cjs/vercel-execution-observer.js +100 -0
  159. package/dist-cjs/vercel-execution-observer.js.map +1 -0
  160. package/package.json +25 -3
@@ -0,0 +1,163 @@
1
+ import { executionToolFingerprint, observeToolExecution, } from "./execution-observation.js";
2
+ import { discoverOpenAIAgentRuntime, } from "./runtime-tool-discovery.js";
3
+ function asRecord(value) {
4
+ return value && typeof value === "object" && !Array.isArray(value)
5
+ ? value
6
+ : undefined;
7
+ }
8
+ function ownDataValue(value, key) {
9
+ const record = asRecord(value);
10
+ if (!record)
11
+ return undefined;
12
+ const descriptor = Object.getOwnPropertyDescriptor(record, key);
13
+ return descriptor && "value" in descriptor
14
+ ? descriptor.value
15
+ : undefined;
16
+ }
17
+ function ownString(value, key) {
18
+ const raw = ownDataValue(value, key);
19
+ return typeof raw === "string" && raw.trim() !== ""
20
+ ? raw
21
+ : undefined;
22
+ }
23
+ function agentTools(agent) {
24
+ const tools = ownDataValue(agent, "tools");
25
+ return Array.isArray(tools) ? tools : [];
26
+ }
27
+ function safeAgentSnapshot(agent) {
28
+ const name = ownString(agent, "name");
29
+ const tools = agentTools(agent);
30
+ const mcpServers = ownDataValue(agent, "mcpServers");
31
+ const mcpConfig = ownDataValue(agent, "mcpConfig");
32
+ return discoverOpenAIAgentRuntime({
33
+ ...(name ? { name } : {}),
34
+ tools,
35
+ ...(Array.isArray(mcpServers) ? { mcpServers } : {}),
36
+ ...(mcpConfig && typeof mcpConfig === "object" ? { mcpConfig } : {}),
37
+ });
38
+ }
39
+ function findToolArgument(args, byObject) {
40
+ for (const arg of args) {
41
+ if (!arg || typeof arg !== "object")
42
+ continue;
43
+ const observation = byObject.get(arg);
44
+ if (observation) {
45
+ return {
46
+ raw: arg,
47
+ observation,
48
+ };
49
+ }
50
+ }
51
+ return undefined;
52
+ }
53
+ function callIdFromArgs(args) {
54
+ for (let index = args.length - 1; index >= 0; index--) {
55
+ const details = args[index];
56
+ const toolCall = ownDataValue(details, "toolCall");
57
+ const callId = ownString(toolCall, "callId");
58
+ if (callId)
59
+ return callId;
60
+ }
61
+ return undefined;
62
+ }
63
+ /**
64
+ * Build dependency-free OpenAI Agents lifecycle handlers for execution evidence.
65
+ *
66
+ * The returned callbacks are meant to be registered with either an Agent or a
67
+ * Runner `agent_tool_start` / `agent_tool_end` hook. This helper never registers
68
+ * itself, never invokes a tool, and never reads tool arguments/results/context.
69
+ *
70
+ * `agent_tool_end` is proof that the tool lifecycle reached the end hook, so it
71
+ * can establish EXECUTED evidence. The v1 adapter records outcome as UNKNOWN:
72
+ * framework end hooks alone are not treated as authoritative proof that an
73
+ * external side effect succeeded.
74
+ */
75
+ export function createOpenAIAgentsExecutionObserver(agent) {
76
+ const rawTools = agentTools(agent);
77
+ const snapshot = safeAgentSnapshot(agent);
78
+ const byObject = new WeakMap();
79
+ for (const observation of snapshot.tools) {
80
+ const index = observation.origin.index;
81
+ const raw = rawTools[index];
82
+ if (raw && typeof raw === "object") {
83
+ byObject.set(raw, observation);
84
+ }
85
+ }
86
+ const pendingByCallId = new Map();
87
+ const pendingWithoutCallId = new WeakMap();
88
+ const collected = [];
89
+ let pendingWithoutIdCount = 0;
90
+ const onToolStart = (...args) => {
91
+ const match = findToolArgument(args, byObject);
92
+ if (!match)
93
+ return;
94
+ const callId = callIdFromArgs(args);
95
+ const pending = {
96
+ tool: match.observation,
97
+ startedAtMs: Date.now(),
98
+ ...(callId ? { callId } : {}),
99
+ };
100
+ if (callId) {
101
+ pendingByCallId.set(callId, pending);
102
+ return;
103
+ }
104
+ const queue = pendingWithoutCallId.get(match.raw) ?? [];
105
+ queue.push(pending);
106
+ pendingWithoutCallId.set(match.raw, queue);
107
+ pendingWithoutIdCount += 1;
108
+ };
109
+ const onToolEnd = (...args) => {
110
+ const match = findToolArgument(args, byObject);
111
+ if (!match)
112
+ return;
113
+ const callId = callIdFromArgs(args);
114
+ let pending;
115
+ if (callId) {
116
+ pending = pendingByCallId.get(callId);
117
+ pendingByCallId.delete(callId);
118
+ }
119
+ else {
120
+ const queue = pendingWithoutCallId.get(match.raw);
121
+ pending = queue?.shift();
122
+ if (pending)
123
+ pendingWithoutIdCount -= 1;
124
+ if (queue && queue.length === 0) {
125
+ pendingWithoutCallId.delete(match.raw);
126
+ }
127
+ }
128
+ const tool = pending?.tool ?? match.observation;
129
+ const now = Date.now();
130
+ const durationMs = pending
131
+ ? Math.max(0, now - pending.startedAtMs)
132
+ : undefined;
133
+ const result = observeToolExecution({
134
+ ...(callId ? { eventId: `openai-tool-call:${callId}` } : {}),
135
+ toolId: tool.toolId,
136
+ namespacedName: tool.namespacedName,
137
+ descriptorFingerprint: executionToolFingerprint(tool),
138
+ canonicalName: tool.canonicalName,
139
+ framework: tool.framework,
140
+ runtimeName: tool.origin.agentName,
141
+ source: "framework_callback",
142
+ status: "UNKNOWN",
143
+ observedAt: new Date(now).toISOString(),
144
+ ...(durationMs !== undefined ? { durationMs } : {}),
145
+ });
146
+ if (result.accepted) {
147
+ collected.push(result.event);
148
+ }
149
+ };
150
+ return Object.freeze({
151
+ snapshot,
152
+ onToolStart,
153
+ onToolEnd,
154
+ events: () => Object.freeze([...collected]),
155
+ drain: () => {
156
+ const drained = Object.freeze([...collected]);
157
+ collected.length = 0;
158
+ return drained;
159
+ },
160
+ pendingCount: () => pendingByCallId.size + pendingWithoutIdCount,
161
+ });
162
+ }
163
+ //# sourceMappingURL=openai-agents-execution-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-agents-execution-observer.js","sourceRoot":"","sources":["../src/openai-agents-execution-observer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type ExecutionPromotableTool, type ToolExecutionObservation } from "./execution-observation.js";
2
+ /**
3
+ * Ingest already-materialized OpenTelemetry GenAI tool-execution spans.
4
+ *
5
+ * Only spans with `gen_ai.operation.name=execute_tool` are considered. The
6
+ * implementation deliberately reads a tiny allowlist of low-risk attributes
7
+ * and never reads `gen_ai.tool.call.arguments`, `gen_ai.tool.call.result`,
8
+ * exception messages/stacks, prompts, provider/model metadata, results or
9
+ * other content-bearing fields.
10
+ *
11
+ * Generic OTel tool spans commonly identify tools by name. Therefore a name
12
+ * must resolve to exactly one caller-supplied Tool Graph observation; duplicate
13
+ * names fail closed instead of being correlated by array order.
14
+ */
15
+ export declare function observeOtelGenAiToolExecutions(spans: readonly unknown[], tools: readonly ExecutionPromotableTool[]): readonly ToolExecutionObservation[];
16
+ //# sourceMappingURL=otel-execution-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel-execution-observer.d.ts","sourceRoot":"","sources":["../src/otel-execution-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,4BAA4B,CAAC;AAmGpC;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,SAAS,OAAO,EAAE,EACzB,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,SAAS,wBAAwB,EAAE,CAsCrC"}
@@ -0,0 +1,129 @@
1
+ import { executionToolFingerprint, observeToolExecution, } from "./execution-observation.js";
2
+ function asRecord(value) {
3
+ return value && typeof value === "object" && !Array.isArray(value)
4
+ ? value
5
+ : undefined;
6
+ }
7
+ function ownDataValue(value, key) {
8
+ const record = asRecord(value);
9
+ if (!record)
10
+ return undefined;
11
+ const descriptor = Object.getOwnPropertyDescriptor(record, key);
12
+ return descriptor && "value" in descriptor
13
+ ? descriptor.value
14
+ : undefined;
15
+ }
16
+ function ownString(value, key) {
17
+ const raw = ownDataValue(value, key);
18
+ return typeof raw === "string" && raw.trim() !== ""
19
+ ? raw
20
+ : undefined;
21
+ }
22
+ function attributesOf(span) {
23
+ const raw = ownDataValue(span, "attributes");
24
+ return asRecord(raw);
25
+ }
26
+ function attrString(attributes, key) {
27
+ if (!attributes)
28
+ return undefined;
29
+ const descriptor = Object.getOwnPropertyDescriptor(attributes, key);
30
+ if (!descriptor || !("value" in descriptor))
31
+ return undefined;
32
+ return typeof descriptor.value === "string" && descriptor.value.trim() !== ""
33
+ ? descriptor.value
34
+ : undefined;
35
+ }
36
+ function toolIndex(tools) {
37
+ const map = new Map();
38
+ for (const tool of tools) {
39
+ const current = map.get(tool.canonicalName);
40
+ if (current === undefined) {
41
+ map.set(tool.canonicalName, tool);
42
+ }
43
+ else {
44
+ // Generic OTel spans commonly identify the tool by name only. If the
45
+ // caller supplies multiple same-named candidates, fail closed rather
46
+ // than choosing one by order.
47
+ map.set(tool.canonicalName, null);
48
+ }
49
+ }
50
+ return map;
51
+ }
52
+ function spanStatus(span, attributes) {
53
+ // Only presence matters; the value itself is intentionally not retained.
54
+ if (attrString(attributes, "error.type"))
55
+ return "FAILED";
56
+ const status = ownDataValue(span, "status");
57
+ const statusRecord = asRecord(status);
58
+ const rawCode = statusRecord
59
+ ? ownDataValue(statusRecord, "code")
60
+ : status;
61
+ if (rawCode === 2 || rawCode === "ERROR")
62
+ return "FAILED";
63
+ if (rawCode === 1 || rawCode === "OK")
64
+ return "SUCCEEDED";
65
+ return "UNKNOWN";
66
+ }
67
+ function spanEventId(span, attributes) {
68
+ const traceId = ownString(span, "traceId");
69
+ const spanId = ownString(span, "spanId");
70
+ if (traceId && spanId) {
71
+ return `otel-span:${traceId}:${spanId}`;
72
+ }
73
+ const callId = attrString(attributes, "gen_ai.tool.call.id");
74
+ return callId ? `otel-tool-call:${callId}` : undefined;
75
+ }
76
+ function durationMs(span) {
77
+ const raw = ownDataValue(span, "durationMs");
78
+ return typeof raw === "number" && Number.isFinite(raw) && raw >= 0
79
+ ? raw
80
+ : undefined;
81
+ }
82
+ /**
83
+ * Ingest already-materialized OpenTelemetry GenAI tool-execution spans.
84
+ *
85
+ * Only spans with `gen_ai.operation.name=execute_tool` are considered. The
86
+ * implementation deliberately reads a tiny allowlist of low-risk attributes
87
+ * and never reads `gen_ai.tool.call.arguments`, `gen_ai.tool.call.result`,
88
+ * exception messages/stacks, prompts, provider/model metadata, results or
89
+ * other content-bearing fields.
90
+ *
91
+ * Generic OTel tool spans commonly identify tools by name. Therefore a name
92
+ * must resolve to exactly one caller-supplied Tool Graph observation; duplicate
93
+ * names fail closed instead of being correlated by array order.
94
+ */
95
+ export function observeOtelGenAiToolExecutions(spans, tools) {
96
+ const byName = toolIndex(tools);
97
+ const events = [];
98
+ for (const span of spans) {
99
+ const attributes = attributesOf(span);
100
+ if (attrString(attributes, "gen_ai.operation.name") !== "execute_tool") {
101
+ continue;
102
+ }
103
+ const toolName = attrString(attributes, "gen_ai.tool.name");
104
+ if (!toolName)
105
+ continue;
106
+ const tool = byName.get(toolName);
107
+ if (!tool)
108
+ continue;
109
+ const eventId = spanEventId(span, attributes);
110
+ const duration = durationMs(span);
111
+ const observedAt = ownString(span, "endTime") ?? new Date().toISOString();
112
+ const observed = observeToolExecution({
113
+ ...(eventId ? { eventId } : {}),
114
+ toolId: tool.toolId,
115
+ namespacedName: tool.namespacedName,
116
+ descriptorFingerprint: executionToolFingerprint(tool),
117
+ canonicalName: tool.canonicalName,
118
+ source: "otel",
119
+ status: spanStatus(span, attributes),
120
+ observedAt,
121
+ ...(duration !== undefined ? { durationMs: duration } : {}),
122
+ });
123
+ if (observed.accepted) {
124
+ events.push(observed.event);
125
+ }
126
+ }
127
+ return Object.freeze(events);
128
+ }
129
+ //# sourceMappingURL=otel-execution-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel-execution-observer.js","sourceRoot":"","sources":["../src/otel-execution-observer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { type ToolImportanceAssessment } from "./tool-importance.js";
2
+ export type RuntimeToolFramework = "openai-agents" | "openai-responses" | "vercel-ai-sdk";
3
+ export type RuntimeToolSource = "agent.tools" | "responses.tools" | "vercel.toolset" | "vercel.generation.tools";
4
+ export type RuntimeToolObservation = {
5
+ toolId: string;
6
+ namespacedName: string;
7
+ canonicalName: string;
8
+ displayName: string;
9
+ description: string;
10
+ toolType: string;
11
+ framework: RuntimeToolFramework;
12
+ origin: {
13
+ kind: "runtime";
14
+ source: RuntimeToolSource;
15
+ agentName?: string;
16
+ runtimeName?: string;
17
+ index: number;
18
+ };
19
+ evidence: {
20
+ level: "RUNTIME_REGISTERED" | "MODEL_VISIBLE";
21
+ source: string;
22
+ };
23
+ visibility: {
24
+ configured: boolean;
25
+ runtimeRegistered: boolean;
26
+ modelVisible: boolean;
27
+ executed: false;
28
+ };
29
+ inputSchema?: unknown;
30
+ safeMetadata?: {
31
+ serverLabel?: string;
32
+ namespace?: string;
33
+ deferLoading?: boolean;
34
+ autoExecutable?: boolean;
35
+ schemaOpaque?: boolean;
36
+ providerDefined?: boolean;
37
+ };
38
+ once: ToolImportanceAssessment;
39
+ };
40
+ export type OpenAIAgentRuntimeSnapshot = {
41
+ framework: "openai-agents";
42
+ agentName?: string;
43
+ registeredToolCount: number;
44
+ configuredMcpServerCount: number;
45
+ includeServerInToolNames?: boolean;
46
+ tools: RuntimeToolObservation[];
47
+ externalCallsMade: false;
48
+ toolInvocationsMade: false;
49
+ secretValuesRetained: false;
50
+ };
51
+ export type OpenAIResponsesToolSnapshot = {
52
+ framework: "openai-responses";
53
+ modelVisibleToolCount: number;
54
+ tools: RuntimeToolObservation[];
55
+ externalCallsMade: false;
56
+ toolInvocationsMade: false;
57
+ secretValuesRetained: false;
58
+ };
59
+ export type VercelAiSdkRegisteredToolSnapshot = {
60
+ framework: "vercel-ai-sdk";
61
+ runtimeName?: string;
62
+ registeredToolCount: number;
63
+ tools: RuntimeToolObservation[];
64
+ externalCallsMade: false;
65
+ toolInvocationsMade: false;
66
+ secretValuesRetained: false;
67
+ };
68
+ export type VercelAiSdkModelVisibleToolSnapshot = {
69
+ framework: "vercel-ai-sdk";
70
+ runtimeName?: string;
71
+ modelVisibleToolCount: number;
72
+ activeToolFilterApplied: boolean;
73
+ tools: RuntimeToolObservation[];
74
+ externalCallsMade: false;
75
+ toolInvocationsMade: false;
76
+ secretValuesRetained: false;
77
+ };
78
+ export type MergedRuntimeToolSnapshot = {
79
+ tools: RuntimeToolObservation[];
80
+ };
81
+ export declare function discoverOpenAIAgentRuntime(agent: unknown): OpenAIAgentRuntimeSnapshot;
82
+ export declare function discoverOpenAIResponsesModelVisibleTools(requestOrTools: unknown): OpenAIResponsesToolSnapshot;
83
+ export declare function discoverVercelAiSdkRegisteredTools(toolSetOrRequest: unknown, runtimeName?: string): VercelAiSdkRegisteredToolSnapshot;
84
+ export declare function discoverVercelAiSdkModelVisibleTools(requestOrTools: unknown, runtimeName?: string): VercelAiSdkModelVisibleToolSnapshot;
85
+ export declare function mergeRuntimeToolEvidence(...snapshots: Array<OpenAIAgentRuntimeSnapshot | OpenAIResponsesToolSnapshot | VercelAiSdkRegisteredToolSnapshot | VercelAiSdkModelVisibleToolSnapshot | MergedRuntimeToolSnapshot>): MergedRuntimeToolSnapshot;
86
+ //# sourceMappingURL=runtime-tool-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-tool-discovery.d.ts","sourceRoot":"","sources":["../src/runtime-tool-discovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAI9B,MAAM,MAAM,oBAAoB,GAC5B,eAAe,GACf,kBAAkB,GAClB,eAAe,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,iBAAiB,GACjB,gBAAgB,GAChB,yBAAyB,CAAC;AAE9B,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE;QACN,IAAI,EAAE,SAAS,CAAC;QAChB,MAAM,EAAE,iBAAiB,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAAC;QAC9C,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,OAAO,CAAC;QACpB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,IAAI,EAAE,wBAAwB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,CAAC;IACzB,mBAAmB,EAAE,KAAK,CAAC;IAC3B,oBAAoB,EAAE,KAAK,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,CAAC;IACzB,mBAAmB,EAAE,KAAK,CAAC;IAC3B,oBAAoB,EAAE,KAAK,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,CAAC;IACzB,mBAAmB,EAAE,KAAK,CAAC;IAC3B,oBAAoB,EAAE,KAAK,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,CAAC;IACzB,mBAAmB,EAAE,KAAK,CAAC;IAC3B,oBAAoB,EAAE,KAAK,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,sBAAsB,EAAE,CAAC;CACjC,CAAC;AAoLF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,0BAA0B,CA2C5B;AAQD,wBAAgB,wCAAwC,CACtD,cAAc,EAAE,OAAO,GACtB,2BAA2B,CAsB7B;AAwMD,wBAAgB,kCAAkC,CAChD,gBAAgB,EAAE,OAAO,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,iCAAiC,CAuBnC;AAED,wBAAgB,oCAAoC,CAClD,cAAc,EAAE,OAAO,EACvB,WAAW,CAAC,EAAE,MAAM,GACnB,mCAAmC,CA0BrC;AAsBD,wBAAgB,wBAAwB,CACtC,GAAG,SAAS,EAAE,KAAK,CACjB,0BAA0B,GAC1B,2BAA2B,GAC3B,iCAAiC,GACjC,mCAAmC,GACnC,yBAAyB,CAC1B,GACA,yBAAyB,CAyB3B"}