@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,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"}
|