@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,117 @@
1
+ import { connectOpenAIAgentsFunctionToolsAuto, } from "../connect/openai-function-tools.js";
2
+ import { GatewayConnectionError, } from "./local-toolset.js";
3
+ import { GATEWAY_ROUTE, planGatewayToolset, } from "./planner.js";
4
+ import { bindGatewayPlanToToolGraph, } from "./tool-graph-binding.js";
5
+ function isObject(value) {
6
+ return value !== null && typeof value === "object" && !Array.isArray(value);
7
+ }
8
+ function isFunctionToolLike(value) {
9
+ return isObject(value) &&
10
+ value.type === "function" &&
11
+ typeof value.name === "string" &&
12
+ value.name.trim() !== "" &&
13
+ typeof value.description === "string" &&
14
+ Object.prototype.hasOwnProperty.call(value, "parameters") &&
15
+ typeof value.invoke === "function";
16
+ }
17
+ function descriptorFor(tool, override) {
18
+ return {
19
+ name: tool.name,
20
+ description: tool.description,
21
+ inputSchema: tool.parameters,
22
+ ...(override?.annotations !== undefined
23
+ ? { annotations: override.annotations }
24
+ : {}),
25
+ ...(override?._meta !== undefined
26
+ ? { _meta: override._meta }
27
+ : {}),
28
+ };
29
+ }
30
+ function blockedSummary(plan) {
31
+ return plan.blocked
32
+ .map(entry => `${entry.name ?? `#${entry.index}`}:${entry.connectReason}`)
33
+ .join(", ");
34
+ }
35
+ function bindingBlockedSummary(plan) {
36
+ return plan.blocked
37
+ .map(entry => `${entry.name ?? `#${entry.index}`}:${entry.bindingStatus}`)
38
+ .join(", ");
39
+ }
40
+ function verifyConnectAgreement(gatewayPlan, connectEntries) {
41
+ if (gatewayPlan.entries.length !== connectEntries.length) {
42
+ throw new GatewayConnectionError("GATEWAY_PLAN_MISMATCH", "OpenAI Gateway and Connect disagree about the FunctionTool subset length.");
43
+ }
44
+ for (let index = 0; index < gatewayPlan.entries.length; index += 1) {
45
+ const gateway = gatewayPlan.entries[index];
46
+ const expected = gateway.route === GATEWAY_ROUTE.DIRECT
47
+ ? "BYPASS"
48
+ : gateway.route === GATEWAY_ROUTE.PROTECT
49
+ ? "PROTECT"
50
+ : "UNKNOWN";
51
+ if (connectEntries[index]?.decision !== expected) {
52
+ throw new GatewayConnectionError("GATEWAY_PLAN_MISMATCH", `OpenAI Gateway and Connect disagree about FunctionTool route index ${index}.`);
53
+ }
54
+ }
55
+ }
56
+ /**
57
+ * Route an already-selected OpenAI Agents FunctionTool subset through Once.
58
+ *
59
+ * Gateway owns only preflight/routing identity. Actual FunctionTool wrapping,
60
+ * protected input parsing, logical-operation identity, payload binding,
61
+ * replay and reconciliation remain delegated to the existing proven Connect
62
+ * adapter. The supplied subset is never expanded with Tool Graph catalog
63
+ * entries.
64
+ */
65
+ export function connectOpenAIAgentsFunctionToolsGatewayAuto(tools, options = {}) {
66
+ if (!Array.isArray(tools)) {
67
+ throw new GatewayConnectionError("INVALID_OPENAI_GATEWAY_TOOLSET", "Once Gateway needs the runtime-selected OpenAI Agents FunctionTool array.");
68
+ }
69
+ const manifest = [];
70
+ const names = new Set();
71
+ for (const candidate of tools) {
72
+ if (!isFunctionToolLike(candidate)) {
73
+ throw new GatewayConnectionError("UNSUPPORTED_OPENAI_GATEWAY_TOOL_TYPE", "Once Gateway v1 supports only OpenAI Agents FunctionTool objects in this adapter.");
74
+ }
75
+ if (names.has(candidate.name)) {
76
+ throw new GatewayConnectionError("DUPLICATE_OPENAI_GATEWAY_TOOL_NAME", `Once Gateway cannot safely map duplicate OpenAI FunctionTool name "${candidate.name}".`);
77
+ }
78
+ names.add(candidate.name);
79
+ manifest.push(descriptorFor(candidate, options.overrides?.[candidate.name]));
80
+ }
81
+ if (options.overrides) {
82
+ for (const name of Object.keys(options.overrides)) {
83
+ if (!names.has(name)) {
84
+ throw new GatewayConnectionError("UNDECLARED_OPENAI_GATEWAY_OVERRIDE", `Gateway override "${name}" does not correspond to a supplied FunctionTool.`);
85
+ }
86
+ }
87
+ }
88
+ const plan = planGatewayToolset(manifest);
89
+ if (!plan.valid) {
90
+ throw new GatewayConnectionError("INVALID_OPENAI_GATEWAY_TOOLSET", "Once Gateway could not plan the supplied OpenAI FunctionTool subset.");
91
+ }
92
+ if (!plan.ready) {
93
+ throw new GatewayConnectionError("GATEWAY_BLOCKED", `Once Gateway refuses unresolved OpenAI FunctionTool routing: ${blockedSummary(plan)}.`);
94
+ }
95
+ let binding;
96
+ if (options.toolGraphBindings !== undefined) {
97
+ if (!Array.isArray(options.toolGraphBindings)) {
98
+ throw new GatewayConnectionError("INVALID_TOOL_GRAPH_BINDINGS", "OpenAI Gateway Tool Graph bindings must be an array of safe identity records.");
99
+ }
100
+ binding = bindGatewayPlanToToolGraph(plan, options.toolGraphBindings);
101
+ if (!binding.ready) {
102
+ throw new GatewayConnectionError("GATEWAY_TOOL_GRAPH_BLOCKED", `OpenAI Gateway refuses stale or ambiguous Tool Graph identity: ${bindingBlockedSummary(binding)}.`);
103
+ }
104
+ }
105
+ const { toolGraphBindings: _toolGraphBindings, ...connectOptions } = options;
106
+ const connected = connectOpenAIAgentsFunctionToolsAuto(tools, connectOptions);
107
+ verifyConnectAgreement(plan, connected.plan.entries);
108
+ if (connected.tools.length !== tools.length) {
109
+ throw new GatewayConnectionError("GATEWAY_SUBSET_MISMATCH", "OpenAI Gateway changed the size of the runtime-selected FunctionTool subset.");
110
+ }
111
+ return Object.freeze({
112
+ plan,
113
+ ...(binding ? { binding } : {}),
114
+ tools: connected.tools,
115
+ });
116
+ }
117
+ //# 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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"}
@@ -0,0 +1,53 @@
1
+ import { type ConnectManifestToolSource } from "../connect/manifest.js";
2
+ import { type ConnectToolClassificationReason, type ConnectToolDecision } from "../connect/tool-classifier.js";
3
+ export declare const GATEWAY_ROUTE: Readonly<{
4
+ readonly DIRECT: "DIRECT";
5
+ readonly PROTECT: "PROTECT";
6
+ readonly BLOCK: "BLOCK";
7
+ }>;
8
+ export type GatewayRoute = (typeof GATEWAY_ROUTE)[keyof typeof GATEWAY_ROUTE];
9
+ export declare const GATEWAY_PLAN_VERSION: "once-gateway-plan-v1";
10
+ export interface GatewayPlanEntry {
11
+ index: number;
12
+ name: string | null;
13
+ source: ConnectManifestToolSource;
14
+ route: GatewayRoute;
15
+ descriptorFingerprint: string;
16
+ connectDecision: ConnectToolDecision;
17
+ connectReason: ConnectToolClassificationReason;
18
+ signals: readonly string[];
19
+ }
20
+ export interface GatewayPlanSummary {
21
+ total: number;
22
+ direct: number;
23
+ protect: number;
24
+ blocked: number;
25
+ }
26
+ export interface GatewayPlan {
27
+ version: typeof GATEWAY_PLAN_VERSION;
28
+ valid: boolean;
29
+ ready: boolean;
30
+ reason: "PLANNED" | "INVALID_MANIFEST";
31
+ entries: readonly Readonly<GatewayPlanEntry>[];
32
+ direct: readonly Readonly<GatewayPlanEntry>[];
33
+ protect: readonly Readonly<GatewayPlanEntry>[];
34
+ blocked: readonly Readonly<GatewayPlanEntry>[];
35
+ summary: Readonly<GatewayPlanSummary>;
36
+ }
37
+ /**
38
+ * Stable, secret-safe fingerprint of the exact descriptor shape used for
39
+ * gateway routing. Getter-backed/non-plain runtime state is never evaluated.
40
+ */
41
+ export declare function gatewayDescriptorFingerprint(descriptor: unknown): string;
42
+ /**
43
+ * Plan how a runtime-selected tool subset should cross the Once Gateway.
44
+ *
45
+ * This is a pure control-plane operation. It does not execute tools, resolve
46
+ * per-invocation operation identity/effect payload, open local protection
47
+ * state, contact MCP/providers, or retain executable implementations.
48
+ *
49
+ * Existing Connect classification remains authoritative:
50
+ * BYPASS -> DIRECT, PROTECT -> PROTECT, UNKNOWN -> BLOCK.
51
+ */
52
+ export declare function planGatewayToolset(manifest: unknown): Readonly<GatewayPlan>;
53
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/gateway/planner.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,aAAa;;;;EAIf,CAAC;AAEZ,MAAM,MAAM,YAAY,GACtB,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAErD,eAAO,MAAM,oBAAoB,EAAG,sBAA+B,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,mBAAmB,CAAC;IACrC,aAAa,EAAE,+BAA+B,CAAC;IAC/C,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,oBAAoB,CAAC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,kBAAkB,CAAC;IACvC,OAAO,EAAE,SAAS,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/C,MAAM,EAAE,SAAS,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC9C,OAAO,EAAE,SAAS,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/C,OAAO,EAAE,SAAS,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/C,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CACvC;AAwED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,OAAO,GAClB,MAAM,CAKR;AAyCD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,GAChB,QAAQ,CAAC,WAAW,CAAC,CAyDvB"}
@@ -0,0 +1,155 @@
1
+ import { createHash } from "node:crypto";
2
+ import { normalizeConnectToolManifest, planConnectToolManifest, } from "../connect/manifest.js";
3
+ import { CONNECT_TOOL_DECISION, } from "../connect/tool-classifier.js";
4
+ export const GATEWAY_ROUTE = Object.freeze({
5
+ DIRECT: "DIRECT",
6
+ PROTECT: "PROTECT",
7
+ BLOCK: "BLOCK",
8
+ });
9
+ export const GATEWAY_PLAN_VERSION = "once-gateway-plan-v1";
10
+ const secretNamePattern = /(?:^|[_-])(authorization|api[_-]?key|token|password|passwd|secret|credential|cookie)(?:$|[_-])/i;
11
+ function canonicalGatewayValue(value, depth = 0, seen = new Set(), secretContext = false) {
12
+ if (secretContext)
13
+ return "<redacted>";
14
+ if (value === null || typeof value === "string" || typeof value === "boolean") {
15
+ return value;
16
+ }
17
+ if (typeof value === "number") {
18
+ return Number.isFinite(value) ? value : null;
19
+ }
20
+ if (typeof value !== "object" || depth > 12) {
21
+ return "<opaque>";
22
+ }
23
+ const objectValue = value;
24
+ if (seen.has(objectValue))
25
+ return "<cycle>";
26
+ seen.add(objectValue);
27
+ try {
28
+ if (Array.isArray(value)) {
29
+ const output = [];
30
+ for (let index = 0; index < value.length; index += 1) {
31
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
32
+ output.push(descriptor && "value" in descriptor
33
+ ? canonicalGatewayValue(descriptor.value, depth + 1, seen)
34
+ : "<opaque>");
35
+ }
36
+ return output;
37
+ }
38
+ const prototype = Object.getPrototypeOf(value);
39
+ if (prototype !== Object.prototype && prototype !== null) {
40
+ return "<opaque>";
41
+ }
42
+ const output = {};
43
+ const descriptors = Object.getOwnPropertyDescriptors(value);
44
+ for (const key of Object.keys(descriptors).sort()) {
45
+ const descriptor = descriptors[key];
46
+ if (!("value" in descriptor)) {
47
+ output[key] = "<opaque>";
48
+ continue;
49
+ }
50
+ output[key] = canonicalGatewayValue(descriptor.value, depth + 1, seen, secretNamePattern.test(key));
51
+ }
52
+ return output;
53
+ }
54
+ finally {
55
+ seen.delete(objectValue);
56
+ }
57
+ }
58
+ /**
59
+ * Stable, secret-safe fingerprint of the exact descriptor shape used for
60
+ * gateway routing. Getter-backed/non-plain runtime state is never evaluated.
61
+ */
62
+ export function gatewayDescriptorFingerprint(descriptor) {
63
+ const canonical = canonicalGatewayValue(descriptor);
64
+ return createHash("sha256")
65
+ .update(JSON.stringify(canonical))
66
+ .digest("hex");
67
+ }
68
+ function mapRoute(decision) {
69
+ if (decision === CONNECT_TOOL_DECISION.BYPASS) {
70
+ return GATEWAY_ROUTE.DIRECT;
71
+ }
72
+ if (decision === CONNECT_TOOL_DECISION.PROTECT) {
73
+ return GATEWAY_ROUTE.PROTECT;
74
+ }
75
+ return GATEWAY_ROUTE.BLOCK;
76
+ }
77
+ function freezeEntry(entry) {
78
+ return Object.freeze({
79
+ ...entry,
80
+ signals: Object.freeze([...entry.signals]),
81
+ });
82
+ }
83
+ function invalidPlan() {
84
+ const entries = Object.freeze([]);
85
+ const summary = Object.freeze({
86
+ total: 0,
87
+ direct: 0,
88
+ protect: 0,
89
+ blocked: 0,
90
+ });
91
+ return Object.freeze({
92
+ version: GATEWAY_PLAN_VERSION,
93
+ valid: false,
94
+ ready: false,
95
+ reason: "INVALID_MANIFEST",
96
+ entries,
97
+ direct: entries,
98
+ protect: entries,
99
+ blocked: entries,
100
+ summary,
101
+ });
102
+ }
103
+ /**
104
+ * Plan how a runtime-selected tool subset should cross the Once Gateway.
105
+ *
106
+ * This is a pure control-plane operation. It does not execute tools, resolve
107
+ * per-invocation operation identity/effect payload, open local protection
108
+ * state, contact MCP/providers, or retain executable implementations.
109
+ *
110
+ * Existing Connect classification remains authoritative:
111
+ * BYPASS -> DIRECT, PROTECT -> PROTECT, UNKNOWN -> BLOCK.
112
+ */
113
+ export function planGatewayToolset(manifest) {
114
+ const normalized = normalizeConnectToolManifest(manifest);
115
+ const connectPlan = planConnectToolManifest(manifest);
116
+ if (!normalized ||
117
+ !connectPlan.valid ||
118
+ normalized.length !== connectPlan.entries.length) {
119
+ return invalidPlan();
120
+ }
121
+ const entries = connectPlan.entries.map((connectEntry, index) => {
122
+ const normalizedEntry = normalized[index];
123
+ return freezeEntry({
124
+ index,
125
+ name: connectEntry.name,
126
+ source: connectEntry.source,
127
+ route: mapRoute(connectEntry.decision),
128
+ descriptorFingerprint: gatewayDescriptorFingerprint(normalizedEntry.descriptor),
129
+ connectDecision: connectEntry.decision,
130
+ connectReason: connectEntry.reason,
131
+ signals: connectEntry.signals,
132
+ });
133
+ });
134
+ const direct = entries.filter(entry => entry.route === GATEWAY_ROUTE.DIRECT);
135
+ const protect = entries.filter(entry => entry.route === GATEWAY_ROUTE.PROTECT);
136
+ const blocked = entries.filter(entry => entry.route === GATEWAY_ROUTE.BLOCK);
137
+ const summary = Object.freeze({
138
+ total: entries.length,
139
+ direct: direct.length,
140
+ protect: protect.length,
141
+ blocked: blocked.length,
142
+ });
143
+ return Object.freeze({
144
+ version: GATEWAY_PLAN_VERSION,
145
+ valid: true,
146
+ ready: blocked.length === 0,
147
+ reason: "PLANNED",
148
+ entries: Object.freeze(entries),
149
+ direct: Object.freeze(direct),
150
+ protect: Object.freeze(protect),
151
+ blocked: Object.freeze(blocked),
152
+ summary,
153
+ });
154
+ }
155
+ //# sourceMappingURL=planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/gateway/planner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,GAExB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,GAGtB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACN,CAAC,CAAC;AAKZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAA+B,CAAC;AAgCpE,MAAM,iBAAiB,GACrB,iGAAiG,CAAC;AAEpG,SAAS,qBAAqB,CAC5B,KAAc,EACd,KAAK,GAAG,CAAC,EACT,OAAoB,IAAI,GAAG,EAAE,EAC7B,aAAa,GAAG,KAAK;IAErB,IAAI,aAAa;QAAE,OAAO,YAAY,CAAC;IAEvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,KAAe,CAAC;IACpC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEtB,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACrD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzE,MAAM,CAAC,IAAI,CACT,UAAU,IAAI,OAAO,IAAI,UAAU;oBACjC,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;oBAC1D,CAAC,CAAC,UAAU,CACf,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACzD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAE5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,qBAAqB,CACjC,UAAU,CAAC,KAAK,EAChB,KAAK,GAAG,CAAC,EACT,IAAI,EACJ,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAC5B,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAmB;IAEnB,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SACjC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,QAA6B;IAC7C,IAAI,QAAQ,KAAK,qBAAqB,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO,aAAa,CAAC,MAAM,CAAC;IAC9B,CAAC;IACD,IAAI,QAAQ,KAAK,qBAAqB,CAAC,OAAO,EAAE,CAAC;QAC/C,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,KAAK;QACR,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;KAC3C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAA0C,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,oBAAoB;QAC7B,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,kBAA2B;QACnC,OAAO;QACP,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO;QAChB,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAiB;IAEjB,MAAM,UAAU,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAEtD,IACE,CAAC,UAAU;QACX,CAAC,WAAW,CAAC,KAAK;QAClB,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,EAChD,CAAC;QACD,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAE1C,OAAO,WAAW,CAAC;YACjB,KAAK;YACL,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;YACtC,qBAAqB,EAAE,4BAA4B,CACjD,eAAe,CAAC,UAAU,CAC3B;YACD,eAAe,EAAE,YAAY,CAAC,QAAQ;YACtC,aAAa,EAAE,YAAY,CAAC,MAAM;YAClC,OAAO,EAAE,YAAY,CAAC,OAAO;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC,MAAM,CAC9C,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAC5B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC,OAAO,CAC/C,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAC5B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAC7C,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM;KACxB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,oBAAoB;QAC7B,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC3B,MAAM,EAAE,SAAkB;QAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { ToolEvidenceLevel, ToolProtectionState } from "../tool-importance.js";
2
+ import { type GatewayPlan, type GatewayRoute } from "./planner.js";
3
+ export type GatewayToolGraphBinding = Readonly<{
4
+ toolId: string;
5
+ namespacedName: string;
6
+ canonicalName: string;
7
+ descriptorFingerprint: string;
8
+ evidenceLevel: ToolEvidenceLevel;
9
+ actionPriorityScore?: number;
10
+ protection?: ToolProtectionState;
11
+ }>;
12
+ export type GatewayToolGraphBindingStatus = "MATCHED" | "MISSING" | "FINGERPRINT_MISMATCH" | "AMBIGUOUS" | "NOT_ROUTABLE";
13
+ export type BoundGatewayPlanEntry = Readonly<{
14
+ index: number;
15
+ name: string | null;
16
+ plannedRoute: GatewayRoute;
17
+ route: GatewayRoute;
18
+ descriptorFingerprint: string;
19
+ bindingStatus: GatewayToolGraphBindingStatus;
20
+ toolGraph?: GatewayToolGraphBinding;
21
+ }>;
22
+ export type BoundGatewayPlanSummary = Readonly<{
23
+ total: number;
24
+ matched: number;
25
+ missing: number;
26
+ fingerprintMismatch: number;
27
+ ambiguous: number;
28
+ blocked: number;
29
+ }>;
30
+ export type BoundGatewayPlan = Readonly<{
31
+ valid: boolean;
32
+ ready: boolean;
33
+ entries: readonly BoundGatewayPlanEntry[];
34
+ matched: readonly BoundGatewayPlanEntry[];
35
+ blocked: readonly BoundGatewayPlanEntry[];
36
+ summary: BoundGatewayPlanSummary;
37
+ }>;
38
+ /**
39
+ * Bind a gateway route plan to safe Tool Graph identity records.
40
+ *
41
+ * Binding is intentionally stricter than name matching: one and only one
42
+ * Tool Graph record must match both canonical name and the exact gateway
43
+ * descriptor fingerprint. Evidence/protection state is retained only for
44
+ * reporting; it never downgrades a PROTECT route to DIRECT.
45
+ *
46
+ * The caller may pass a larger/global Tool Graph binding set. Unrelated
47
+ * entries are ignored, so binding the selected runtime subset does not force
48
+ * the global catalog into model context or into the returned plan.
49
+ */
50
+ export declare function bindGatewayPlanToToolGraph(plan: Readonly<GatewayPlan>, bindings: readonly unknown[]): BoundGatewayPlan;
51
+ //# sourceMappingURL=tool-graph-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-graph-binding.d.ts","sourceRoot":"","sources":["../../src/gateway/tool-graph-binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,iBAAiB,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,MAAM,6BAA6B,GACrC,SAAS,GACT,SAAS,GACT,sBAAsB,GACtB,WAAW,GACX,cAAc,CAAC;AAEnB,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,6BAA6B,CAAC;IAC7C,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC1C,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC1C,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC1C,OAAO,EAAE,uBAAuB,CAAC;CAClC,CAAC,CAAC;AA+EH;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC3B,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,gBAAgB,CA8DlB"}
@@ -0,0 +1,123 @@
1
+ import { GATEWAY_ROUTE, } from "./planner.js";
2
+ function nonEmptyString(value) {
3
+ return typeof value === "string" && value.trim() !== "";
4
+ }
5
+ function validScore(value) {
6
+ return value === undefined ||
7
+ (typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 100);
8
+ }
9
+ const evidenceLevels = new Set([
10
+ "EXECUTED",
11
+ "MODEL_VISIBLE",
12
+ "RUNTIME_REGISTERED",
13
+ "SERVER_AUTHORITATIVE",
14
+ "HOST_CONFIGURED",
15
+ "SOURCE_DISCOVERED",
16
+ "REGISTRY_CANDIDATE",
17
+ ]);
18
+ const protectionStates = new Set([
19
+ "NONE",
20
+ "NATIVE_IDEMPOTENCY",
21
+ "AUTHORITATIVE_RECONCILIATION",
22
+ "ONCE_HEALTHY",
23
+ "ONCE_UNVERIFIED",
24
+ ]);
25
+ function normalizeBinding(value) {
26
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
27
+ return undefined;
28
+ }
29
+ const record = value;
30
+ if (!nonEmptyString(record.toolId) ||
31
+ !nonEmptyString(record.namespacedName) ||
32
+ !nonEmptyString(record.canonicalName) ||
33
+ !nonEmptyString(record.descriptorFingerprint) ||
34
+ !evidenceLevels.has(record.evidenceLevel) ||
35
+ !validScore(record.actionPriorityScore) ||
36
+ (record.protection !== undefined &&
37
+ !protectionStates.has(record.protection))) {
38
+ return undefined;
39
+ }
40
+ return Object.freeze({
41
+ toolId: record.toolId,
42
+ namespacedName: record.namespacedName,
43
+ canonicalName: record.canonicalName,
44
+ descriptorFingerprint: record.descriptorFingerprint,
45
+ evidenceLevel: record.evidenceLevel,
46
+ ...(record.actionPriorityScore !== undefined
47
+ ? { actionPriorityScore: record.actionPriorityScore }
48
+ : {}),
49
+ ...(record.protection !== undefined
50
+ ? { protection: record.protection }
51
+ : {}),
52
+ });
53
+ }
54
+ function blockedEntry(entry, bindingStatus) {
55
+ return Object.freeze({
56
+ index: entry.index,
57
+ name: entry.name,
58
+ plannedRoute: entry.route,
59
+ route: GATEWAY_ROUTE.BLOCK,
60
+ descriptorFingerprint: entry.descriptorFingerprint,
61
+ bindingStatus,
62
+ });
63
+ }
64
+ /**
65
+ * Bind a gateway route plan to safe Tool Graph identity records.
66
+ *
67
+ * Binding is intentionally stricter than name matching: one and only one
68
+ * Tool Graph record must match both canonical name and the exact gateway
69
+ * descriptor fingerprint. Evidence/protection state is retained only for
70
+ * reporting; it never downgrades a PROTECT route to DIRECT.
71
+ *
72
+ * The caller may pass a larger/global Tool Graph binding set. Unrelated
73
+ * entries are ignored, so binding the selected runtime subset does not force
74
+ * the global catalog into model context or into the returned plan.
75
+ */
76
+ export function bindGatewayPlanToToolGraph(plan, bindings) {
77
+ const normalized = Array.isArray(bindings)
78
+ ? bindings
79
+ .map(normalizeBinding)
80
+ .filter((binding) => Boolean(binding))
81
+ : [];
82
+ const entries = plan.entries.map(entry => {
83
+ if (entry.route === GATEWAY_ROUTE.BLOCK || !entry.name) {
84
+ return blockedEntry(entry, "NOT_ROUTABLE");
85
+ }
86
+ const sameName = normalized.filter(binding => binding.canonicalName === entry.name);
87
+ const exact = sameName.filter(binding => binding.descriptorFingerprint === entry.descriptorFingerprint);
88
+ if (exact.length > 1) {
89
+ return blockedEntry(entry, "AMBIGUOUS");
90
+ }
91
+ if (exact.length === 0) {
92
+ return blockedEntry(entry, sameName.length > 0 ? "FINGERPRINT_MISMATCH" : "MISSING");
93
+ }
94
+ return Object.freeze({
95
+ index: entry.index,
96
+ name: entry.name,
97
+ plannedRoute: entry.route,
98
+ route: entry.route,
99
+ descriptorFingerprint: entry.descriptorFingerprint,
100
+ bindingStatus: "MATCHED",
101
+ toolGraph: exact[0],
102
+ });
103
+ });
104
+ const matched = entries.filter(entry => entry.bindingStatus === "MATCHED");
105
+ const blocked = entries.filter(entry => entry.route === GATEWAY_ROUTE.BLOCK);
106
+ const summary = Object.freeze({
107
+ total: entries.length,
108
+ matched: matched.length,
109
+ missing: entries.filter(entry => entry.bindingStatus === "MISSING").length,
110
+ fingerprintMismatch: entries.filter(entry => entry.bindingStatus === "FINGERPRINT_MISMATCH").length,
111
+ ambiguous: entries.filter(entry => entry.bindingStatus === "AMBIGUOUS").length,
112
+ blocked: blocked.length,
113
+ });
114
+ return Object.freeze({
115
+ valid: plan.valid,
116
+ ready: plan.valid && plan.ready && blocked.length === 0,
117
+ entries: Object.freeze(entries),
118
+ matched: Object.freeze(matched),
119
+ blocked: Object.freeze(blocked),
120
+ summary,
121
+ });
122
+ }
123
+ //# sourceMappingURL=tool-graph-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-graph-binding.js","sourceRoot":"","sources":["../../src/gateway/tool-graph-binding.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,GAId,MAAM,cAAc,CAAC;AA+CtB,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAoB;IAChD,UAAU;IACV,eAAe;IACf,oBAAoB;IACpB,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAsB;IACpD,MAAM;IACN,oBAAoB;IACpB,8BAA8B;IAC9B,cAAc;IACd,iBAAiB;CAClB,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IACE,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC;QACtC,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;QACrC,CAAC,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAC7C,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,aAAkC,CAAC;QAC9D,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC;QACvC,CACE,MAAM,CAAC,UAAU,KAAK,SAAS;YAC/B,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAiC,CAAC,CAChE,EACD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,aAAa,EAAE,MAAM,CAAC,aAAkC;QACxD,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAA6B,EAAE;YAC/D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAiC,EAAE;YAC1D,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,KAAiC,EACjC,aAA4C;IAE5C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,YAAY,EAAE,KAAK,CAAC,KAAK;QACzB,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAA2B,EAC3B,QAA4B;IAE5B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxC,CAAC,CAAC,QAAQ;aACL,GAAG,CAAC,gBAAgB,CAAC;aACrB,MAAM,CAAC,CAAC,OAAO,EAAsC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9E,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACvC,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACvD,OAAO,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAChC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC,IAAI,CAChD,CAAC;QACF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAC3B,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,KAAK,KAAK,CAAC,qBAAqB,CACzE,CAAC;QAEF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,YAAY,CACjB,KAAK,EACL,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CACzD,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,KAAK,CAAC,KAAK;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,aAAa,EAAE,SAAkB;YACjC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,MAAM;QAC1E,mBAAmB,EAAE,OAAO,CAAC,MAAM,CACjC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,sBAAsB,CACxD,CAAC,MAAM;QACR,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,WAAW,CAAC,CAAC,MAAM;QAC9E,OAAO,EAAE,OAAO,CAAC,MAAM;KACxB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QACvD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type ToolExecutionObservation } from "./execution-observation.js";
2
+ import type { LangChainModelVisibleToolSnapshot } from "./langchain-runtime-discovery.js";
3
+ export type LangChainExecutionObserver = Readonly<{
4
+ name: "once-execution-observer";
5
+ handleToolStart: (...args: unknown[]) => void;
6
+ handleToolEnd: (...args: unknown[]) => void;
7
+ handleToolError: (...args: unknown[]) => void;
8
+ events: () => readonly ToolExecutionObservation[];
9
+ drain: () => readonly ToolExecutionObservation[];
10
+ pendingCount: () => number;
11
+ }>;
12
+ /**
13
+ * Create a dependency-free object compatible with LangChain callback handler
14
+ * methods for tool execution observation.
15
+ *
16
+ * The observer never invokes a tool and never retains input, output, errors,
17
+ * tags, metadata or parent run state. A matching handleToolStart establishes
18
+ * exact tool identity; handleToolEnd/handleToolError close that run as
19
+ * SUCCEEDED/FAILED respectively.
20
+ */
21
+ export declare function createLangChainExecutionObserver(visibleSnapshot: LangChainModelVisibleToolSnapshot): LangChainExecutionObserver;
22
+ //# sourceMappingURL=langchain-execution-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain-execution-observer.d.ts","sourceRoot":"","sources":["../src/langchain-execution-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,iCAAiC,EAElC,MAAM,kCAAkC,CAAC;AAU1C,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,IAAI,EAAE,yBAAyB,CAAC;IAChC,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC5C,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,MAAM,SAAS,wBAAwB,EAAE,CAAC;IAClD,KAAK,EAAE,MAAM,SAAS,wBAAwB,EAAE,CAAC;IACjD,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B,CAAC,CAAC;AAyDH;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,eAAe,EAAE,iCAAiC,GACjD,0BAA0B,CAyE5B"}