@agent-assembly/sdk 0.0.1-alpha.3

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 (256) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +182 -0
  3. package/dist/cjs/adapters/adapter-registry.js +2 -0
  4. package/dist/cjs/adapters/adapter.js +2 -0
  5. package/dist/cjs/adapters/index.js +2 -0
  6. package/dist/cjs/adapters/langchain/assembly-callback-handler.js +93 -0
  7. package/dist/cjs/adapters/langchain/index.js +8 -0
  8. package/dist/cjs/adapters/langchain/wrap-tool-with-assembly.js +55 -0
  9. package/dist/cjs/audit/encode.js +176 -0
  10. package/dist/cjs/audit/index.js +8 -0
  11. package/dist/cjs/core/gateway-resolver.js +254 -0
  12. package/dist/cjs/core/index.js +9 -0
  13. package/dist/cjs/core/init-assembly.js +224 -0
  14. package/dist/cjs/errors/configuration-error.js +17 -0
  15. package/dist/cjs/errors/gateway-error.js +17 -0
  16. package/dist/cjs/errors/index.js +11 -0
  17. package/dist/cjs/errors/op-terminated-error.js +20 -0
  18. package/dist/cjs/errors/policy-violation-error.js +10 -0
  19. package/dist/cjs/gateway/client.js +15 -0
  20. package/dist/cjs/gateway/index.js +5 -0
  21. package/dist/cjs/hooks/adapter-registry.js +7 -0
  22. package/dist/cjs/hooks/ai-sdk-detection.js +14 -0
  23. package/dist/cjs/hooks/ai-sdk.js +164 -0
  24. package/dist/cjs/hooks/langchain.js +9 -0
  25. package/dist/cjs/hooks/langgraph-detection.js +14 -0
  26. package/dist/cjs/hooks/langgraph.js +107 -0
  27. package/dist/cjs/hooks/mastra-detection.js +14 -0
  28. package/dist/cjs/hooks/mastra.js +120 -0
  29. package/dist/cjs/hooks/openai-agents-detection.js +14 -0
  30. package/dist/cjs/hooks/openai-agents.js +189 -0
  31. package/dist/cjs/index.js +25 -0
  32. package/dist/cjs/lineage/agent-context-store.js +20 -0
  33. package/dist/cjs/lineage/index.js +7 -0
  34. package/dist/cjs/native/client.js +160 -0
  35. package/dist/cjs/op-control.js +150 -0
  36. package/dist/cjs/package.json +3 -0
  37. package/dist/cjs/proto/generated/common.js +365 -0
  38. package/dist/cjs/proto/generated/policy.js +1418 -0
  39. package/dist/cjs/runtime.js +144 -0
  40. package/dist/cjs/types/assembly-config.js +2 -0
  41. package/dist/cjs/types/assembly-context.js +2 -0
  42. package/dist/cjs/types/assembly-mode.js +2 -0
  43. package/dist/cjs/types/audit.js +5 -0
  44. package/dist/cjs/types/enforcement-mode.js +9 -0
  45. package/dist/cjs/types/gateway-governance.js +2 -0
  46. package/dist/cjs/types/index.js +5 -0
  47. package/dist/cjs/types/langchain-adapter.js +2 -0
  48. package/dist/cjs/types/openai-agents-adapter.js +2 -0
  49. package/dist/cjs/types/policy.js +2 -0
  50. package/dist/cjs/types/tool-map.js +2 -0
  51. package/dist/cjs/types/vercel-ai-adapter.js +2 -0
  52. package/dist/cjs/wrappers/index.js +5 -0
  53. package/dist/cjs/wrappers/with-assembly.js +82 -0
  54. package/dist/esm/adapters/adapter-registry.js +2 -0
  55. package/dist/esm/adapters/adapter-registry.js.map +1 -0
  56. package/dist/esm/adapters/adapter.js +2 -0
  57. package/dist/esm/adapters/adapter.js.map +1 -0
  58. package/dist/esm/adapters/index.js +2 -0
  59. package/dist/esm/adapters/index.js.map +1 -0
  60. package/dist/esm/adapters/langchain/assembly-callback-handler.js +90 -0
  61. package/dist/esm/adapters/langchain/assembly-callback-handler.js.map +1 -0
  62. package/dist/esm/adapters/langchain/index.js +3 -0
  63. package/dist/esm/adapters/langchain/index.js.map +1 -0
  64. package/dist/esm/adapters/langchain/wrap-tool-with-assembly.js +52 -0
  65. package/dist/esm/adapters/langchain/wrap-tool-with-assembly.js.map +1 -0
  66. package/dist/esm/audit/encode.js +171 -0
  67. package/dist/esm/audit/encode.js.map +1 -0
  68. package/dist/esm/audit/index.js +2 -0
  69. package/dist/esm/audit/index.js.map +1 -0
  70. package/dist/esm/core/gateway-resolver.js +213 -0
  71. package/dist/esm/core/gateway-resolver.js.map +1 -0
  72. package/dist/esm/core/index.js +2 -0
  73. package/dist/esm/core/index.js.map +1 -0
  74. package/dist/esm/core/init-assembly.js +218 -0
  75. package/dist/esm/core/init-assembly.js.map +1 -0
  76. package/dist/esm/errors/configuration-error.js +14 -0
  77. package/dist/esm/errors/configuration-error.js.map +1 -0
  78. package/dist/esm/errors/gateway-error.js +14 -0
  79. package/dist/esm/errors/gateway-error.js.map +1 -0
  80. package/dist/esm/errors/index.js +5 -0
  81. package/dist/esm/errors/index.js.map +1 -0
  82. package/dist/esm/errors/op-terminated-error.js +17 -0
  83. package/dist/esm/errors/op-terminated-error.js.map +1 -0
  84. package/dist/esm/errors/policy-violation-error.js +7 -0
  85. package/dist/esm/errors/policy-violation-error.js.map +1 -0
  86. package/dist/esm/gateway/client.js +13 -0
  87. package/dist/esm/gateway/client.js.map +1 -0
  88. package/dist/esm/gateway/index.js +2 -0
  89. package/dist/esm/gateway/index.js.map +1 -0
  90. package/dist/esm/hooks/adapter-registry.js +5 -0
  91. package/dist/esm/hooks/adapter-registry.js.map +1 -0
  92. package/dist/esm/hooks/ai-sdk-detection.js +12 -0
  93. package/dist/esm/hooks/ai-sdk-detection.js.map +1 -0
  94. package/dist/esm/hooks/ai-sdk.js +123 -0
  95. package/dist/esm/hooks/ai-sdk.js.map +1 -0
  96. package/dist/esm/hooks/langchain.js +7 -0
  97. package/dist/esm/hooks/langchain.js.map +1 -0
  98. package/dist/esm/hooks/langgraph-detection.js +12 -0
  99. package/dist/esm/hooks/langgraph-detection.js.map +1 -0
  100. package/dist/esm/hooks/langgraph.js +69 -0
  101. package/dist/esm/hooks/langgraph.js.map +1 -0
  102. package/dist/esm/hooks/mastra-detection.js +12 -0
  103. package/dist/esm/hooks/mastra-detection.js.map +1 -0
  104. package/dist/esm/hooks/mastra.js +83 -0
  105. package/dist/esm/hooks/mastra.js.map +1 -0
  106. package/dist/esm/hooks/openai-agents-detection.js +12 -0
  107. package/dist/esm/hooks/openai-agents-detection.js.map +1 -0
  108. package/dist/esm/hooks/openai-agents.js +145 -0
  109. package/dist/esm/hooks/openai-agents.js.map +1 -0
  110. package/dist/esm/index.js +12 -0
  111. package/dist/esm/index.js.map +1 -0
  112. package/dist/esm/lineage/agent-context-store.js +16 -0
  113. package/dist/esm/lineage/agent-context-store.js.map +1 -0
  114. package/dist/esm/lineage/index.js +2 -0
  115. package/dist/esm/lineage/index.js.map +1 -0
  116. package/dist/esm/native/client.js +150 -0
  117. package/dist/esm/native/client.js.map +1 -0
  118. package/dist/esm/op-control.js +147 -0
  119. package/dist/esm/op-control.js.map +1 -0
  120. package/dist/esm/proto/generated/common.js +357 -0
  121. package/dist/esm/proto/generated/common.js.map +1 -0
  122. package/dist/esm/proto/generated/policy.js +1414 -0
  123. package/dist/esm/proto/generated/policy.js.map +1 -0
  124. package/dist/esm/runtime.js +138 -0
  125. package/dist/esm/runtime.js.map +1 -0
  126. package/dist/esm/types/assembly-config.js +2 -0
  127. package/dist/esm/types/assembly-config.js.map +1 -0
  128. package/dist/esm/types/assembly-context.js +2 -0
  129. package/dist/esm/types/assembly-context.js.map +1 -0
  130. package/dist/esm/types/assembly-mode.js +2 -0
  131. package/dist/esm/types/assembly-mode.js.map +1 -0
  132. package/dist/esm/types/audit.js +5 -0
  133. package/dist/esm/types/audit.js.map +1 -0
  134. package/dist/esm/types/enforcement-mode.js +7 -0
  135. package/dist/esm/types/enforcement-mode.js.map +1 -0
  136. package/dist/esm/types/gateway-governance.js +2 -0
  137. package/dist/esm/types/gateway-governance.js.map +1 -0
  138. package/dist/esm/types/index.js +2 -0
  139. package/dist/esm/types/index.js.map +1 -0
  140. package/dist/esm/types/langchain-adapter.js +2 -0
  141. package/dist/esm/types/langchain-adapter.js.map +1 -0
  142. package/dist/esm/types/openai-agents-adapter.js +2 -0
  143. package/dist/esm/types/openai-agents-adapter.js.map +1 -0
  144. package/dist/esm/types/policy.js +2 -0
  145. package/dist/esm/types/policy.js.map +1 -0
  146. package/dist/esm/types/tool-map.js +2 -0
  147. package/dist/esm/types/tool-map.js.map +1 -0
  148. package/dist/esm/types/vercel-ai-adapter.js +2 -0
  149. package/dist/esm/types/vercel-ai-adapter.js.map +1 -0
  150. package/dist/esm/wrappers/index.js +2 -0
  151. package/dist/esm/wrappers/index.js.map +1 -0
  152. package/dist/esm/wrappers/with-assembly.js +80 -0
  153. package/dist/esm/wrappers/with-assembly.js.map +1 -0
  154. package/dist/types/adapters/adapter-registry.d.ts +7 -0
  155. package/dist/types/adapters/adapter-registry.d.ts.map +1 -0
  156. package/dist/types/adapters/adapter.d.ts +6 -0
  157. package/dist/types/adapters/adapter.d.ts.map +1 -0
  158. package/dist/types/adapters/index.d.ts +3 -0
  159. package/dist/types/adapters/index.d.ts.map +1 -0
  160. package/dist/types/adapters/langchain/assembly-callback-handler.d.ts +21 -0
  161. package/dist/types/adapters/langchain/assembly-callback-handler.d.ts.map +1 -0
  162. package/dist/types/adapters/langchain/index.d.ts +4 -0
  163. package/dist/types/adapters/langchain/index.d.ts.map +1 -0
  164. package/dist/types/adapters/langchain/wrap-tool-with-assembly.d.ts +9 -0
  165. package/dist/types/adapters/langchain/wrap-tool-with-assembly.d.ts.map +1 -0
  166. package/dist/types/audit/encode.d.ts +77 -0
  167. package/dist/types/audit/encode.d.ts.map +1 -0
  168. package/dist/types/audit/index.d.ts +3 -0
  169. package/dist/types/audit/index.d.ts.map +1 -0
  170. package/dist/types/core/gateway-resolver.d.ts +92 -0
  171. package/dist/types/core/gateway-resolver.d.ts.map +1 -0
  172. package/dist/types/core/index.d.ts +2 -0
  173. package/dist/types/core/index.d.ts.map +1 -0
  174. package/dist/types/core/init-assembly.d.ts +10 -0
  175. package/dist/types/core/init-assembly.d.ts.map +1 -0
  176. package/dist/types/errors/configuration-error.d.ts +11 -0
  177. package/dist/types/errors/configuration-error.d.ts.map +1 -0
  178. package/dist/types/errors/gateway-error.d.ts +11 -0
  179. package/dist/types/errors/gateway-error.d.ts.map +1 -0
  180. package/dist/types/errors/index.d.ts +5 -0
  181. package/dist/types/errors/index.d.ts.map +1 -0
  182. package/dist/types/errors/op-terminated-error.d.ts +13 -0
  183. package/dist/types/errors/op-terminated-error.d.ts.map +1 -0
  184. package/dist/types/errors/policy-violation-error.d.ts +4 -0
  185. package/dist/types/errors/policy-violation-error.d.ts.map +1 -0
  186. package/dist/types/gateway/client.d.ts +14 -0
  187. package/dist/types/gateway/client.d.ts.map +1 -0
  188. package/dist/types/gateway/index.d.ts +3 -0
  189. package/dist/types/gateway/index.d.ts.map +1 -0
  190. package/dist/types/hooks/adapter-registry.d.ts +3 -0
  191. package/dist/types/hooks/adapter-registry.d.ts.map +1 -0
  192. package/dist/types/hooks/ai-sdk-detection.d.ts +2 -0
  193. package/dist/types/hooks/ai-sdk-detection.d.ts.map +1 -0
  194. package/dist/types/hooks/ai-sdk.d.ts +36 -0
  195. package/dist/types/hooks/ai-sdk.d.ts.map +1 -0
  196. package/dist/types/hooks/langchain.d.ts +3 -0
  197. package/dist/types/hooks/langchain.d.ts.map +1 -0
  198. package/dist/types/hooks/langgraph-detection.d.ts +2 -0
  199. package/dist/types/hooks/langgraph-detection.d.ts.map +1 -0
  200. package/dist/types/hooks/langgraph.d.ts +26 -0
  201. package/dist/types/hooks/langgraph.d.ts.map +1 -0
  202. package/dist/types/hooks/mastra-detection.d.ts +2 -0
  203. package/dist/types/hooks/mastra-detection.d.ts.map +1 -0
  204. package/dist/types/hooks/mastra.d.ts +29 -0
  205. package/dist/types/hooks/mastra.d.ts.map +1 -0
  206. package/dist/types/hooks/openai-agents-detection.d.ts +2 -0
  207. package/dist/types/hooks/openai-agents-detection.d.ts.map +1 -0
  208. package/dist/types/hooks/openai-agents.d.ts +42 -0
  209. package/dist/types/hooks/openai-agents.d.ts.map +1 -0
  210. package/dist/types/index.d.ts +10 -0
  211. package/dist/types/index.d.ts.map +1 -0
  212. package/dist/types/lineage/agent-context-store.d.ts +12 -0
  213. package/dist/types/lineage/agent-context-store.d.ts.map +1 -0
  214. package/dist/types/lineage/index.d.ts +2 -0
  215. package/dist/types/lineage/index.d.ts.map +1 -0
  216. package/dist/types/native/client.d.ts +26 -0
  217. package/dist/types/native/client.d.ts.map +1 -0
  218. package/dist/types/op-control.d.ts +85 -0
  219. package/dist/types/op-control.d.ts.map +1 -0
  220. package/dist/types/proto/generated/common.d.ts +90 -0
  221. package/dist/types/proto/generated/common.d.ts.map +1 -0
  222. package/dist/types/proto/generated/policy.d.ts +298 -0
  223. package/dist/types/proto/generated/policy.d.ts.map +1 -0
  224. package/dist/types/runtime.d.ts +59 -0
  225. package/dist/types/runtime.d.ts.map +1 -0
  226. package/dist/types/types/assembly-config.d.ts +47 -0
  227. package/dist/types/types/assembly-config.d.ts.map +1 -0
  228. package/dist/types/types/assembly-context.d.ts +12 -0
  229. package/dist/types/types/assembly-context.d.ts.map +1 -0
  230. package/dist/types/types/assembly-mode.d.ts +2 -0
  231. package/dist/types/types/assembly-mode.d.ts.map +1 -0
  232. package/dist/types/types/audit.d.ts +76 -0
  233. package/dist/types/types/audit.d.ts.map +1 -0
  234. package/dist/types/types/enforcement-mode.d.ts +20 -0
  235. package/dist/types/types/enforcement-mode.d.ts.map +1 -0
  236. package/dist/types/types/gateway-governance.d.ts +31 -0
  237. package/dist/types/types/gateway-governance.d.ts.map +1 -0
  238. package/dist/types/types/index.d.ts +12 -0
  239. package/dist/types/types/index.d.ts.map +1 -0
  240. package/dist/types/types/langchain-adapter.d.ts +25 -0
  241. package/dist/types/types/langchain-adapter.d.ts.map +1 -0
  242. package/dist/types/types/openai-agents-adapter.d.ts +17 -0
  243. package/dist/types/types/openai-agents-adapter.d.ts.map +1 -0
  244. package/dist/types/types/policy.d.ts +10 -0
  245. package/dist/types/types/policy.d.ts.map +1 -0
  246. package/dist/types/types/tool-map.d.ts +2 -0
  247. package/dist/types/types/tool-map.d.ts.map +1 -0
  248. package/dist/types/types/vercel-ai-adapter.d.ts +12 -0
  249. package/dist/types/types/vercel-ai-adapter.d.ts.map +1 -0
  250. package/dist/types/wrappers/index.d.ts +3 -0
  251. package/dist/types/wrappers/index.d.ts.map +1 -0
  252. package/dist/types/wrappers/with-assembly.d.ts +9 -0
  253. package/dist/types/wrappers/with-assembly.d.ts.map +1 -0
  254. package/native/aa-ffi-node/index.cjs +20 -0
  255. package/native/aa-ffi-node/index.d.ts +23 -0
  256. package/package.json +95 -0
@@ -0,0 +1,123 @@
1
+ import { PolicyViolationError } from "../errors/policy-violation-error.js";
2
+ import { runWithAgentId } from "../lineage/agent-context-store.js";
3
+ export const vercelAiSdkPatchState = {
4
+ isPatched: false,
5
+ originalToolFactory: undefined,
6
+ patchedModule: undefined
7
+ };
8
+ export function captureOriginalToolFactory(module) {
9
+ const candidate = module.tool;
10
+ if (typeof candidate !== "function") {
11
+ return undefined;
12
+ }
13
+ if (!vercelAiSdkPatchState.originalToolFactory) {
14
+ vercelAiSdkPatchState.originalToolFactory = candidate;
15
+ }
16
+ return vercelAiSdkPatchState.originalToolFactory;
17
+ }
18
+ export function recordToolResultNonBlocking(gatewayClient, runId, output) {
19
+ void gatewayClient.recordResult({ runId, output }).catch(() => undefined);
20
+ }
21
+ export function createWrappedExecute(originalExecute, description, gatewayClient, options) {
22
+ return async function wrappedExecute(args, executionOptions) {
23
+ const runId = executionOptions.toolCallId ?? options.fallbackRunId;
24
+ const executeOriginal = async () => {
25
+ const run = async () => {
26
+ const result = await originalExecute(args, executionOptions);
27
+ recordToolResultNonBlocking(gatewayClient, runId, result);
28
+ return result;
29
+ };
30
+ return options.agentId ? runWithAgentId(options.agentId, run) : run();
31
+ };
32
+ let decision;
33
+ try {
34
+ decision = await gatewayClient.check({
35
+ action: "tool_call",
36
+ toolName: description,
37
+ args: args,
38
+ runId
39
+ });
40
+ }
41
+ catch {
42
+ return executeOriginal();
43
+ }
44
+ if (decision.denied) {
45
+ throw new PolicyViolationError(`Tool blocked by governance policy: ${decision.reason ?? "Denied"}`);
46
+ }
47
+ if (decision.pending) {
48
+ let approval;
49
+ try {
50
+ approval = await gatewayClient.waitForApproval(description, runId, options.approvalTimeoutMs);
51
+ }
52
+ catch {
53
+ return executeOriginal();
54
+ }
55
+ if (approval.denied) {
56
+ throw new PolicyViolationError(`Approval rejected: ${approval.reason ?? "Rejected"}`);
57
+ }
58
+ }
59
+ return executeOriginal();
60
+ };
61
+ }
62
+ export function createPatchedToolFactory(originalToolFactory, gatewayClient, options) {
63
+ return function patchedTool(definition) {
64
+ const toolResult = originalToolFactory(definition);
65
+ if (!toolResult.execute) {
66
+ return toolResult;
67
+ }
68
+ const description = toolResult.description ?? "unknown_tool";
69
+ return {
70
+ ...toolResult,
71
+ execute: createWrappedExecute(toolResult.execute, description, gatewayClient, options)
72
+ };
73
+ };
74
+ }
75
+ async function loadVercelAiSdkModule() {
76
+ try {
77
+ const moduleName = "ai";
78
+ const module = (await import(moduleName));
79
+ return module;
80
+ }
81
+ catch {
82
+ return undefined;
83
+ }
84
+ }
85
+ export async function patchVercelAiSdk(options) {
86
+ if (vercelAiSdkPatchState.isPatched) {
87
+ return true;
88
+ }
89
+ const loadModule = options.loadModule ?? loadVercelAiSdkModule;
90
+ const module = await loadModule();
91
+ if (!module) {
92
+ return false;
93
+ }
94
+ const originalToolFactory = captureOriginalToolFactory(module);
95
+ if (!originalToolFactory) {
96
+ return false;
97
+ }
98
+ module.tool = createPatchedToolFactory(originalToolFactory, options.gatewayClient, {
99
+ approvalTimeoutMs: options.approvalTimeoutMs ?? 30_000,
100
+ fallbackRunId: options.fallbackRunId ?? "vercel-ai-sdk",
101
+ ...(options.agentId !== undefined ? { agentId: options.agentId } : {})
102
+ });
103
+ vercelAiSdkPatchState.isPatched = true;
104
+ vercelAiSdkPatchState.patchedModule = module;
105
+ return true;
106
+ }
107
+ export function unpatchVercelAiSdk() {
108
+ if (!vercelAiSdkPatchState.isPatched) {
109
+ return false;
110
+ }
111
+ if (!vercelAiSdkPatchState.patchedModule) {
112
+ return false;
113
+ }
114
+ if (!vercelAiSdkPatchState.originalToolFactory) {
115
+ return false;
116
+ }
117
+ vercelAiSdkPatchState.patchedModule.tool =
118
+ vercelAiSdkPatchState.originalToolFactory;
119
+ vercelAiSdkPatchState.isPatched = false;
120
+ vercelAiSdkPatchState.patchedModule = undefined;
121
+ return true;
122
+ }
123
+ //# sourceMappingURL=ai-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-sdk.js","sourceRoot":"","sources":["../../../src/hooks/ai-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export async function patchLangChain(client) {
2
+ if (client.mode === "grpc-sidecar" || client.mode === "napi-inprocess") {
3
+ return false;
4
+ }
5
+ return false;
6
+ }
7
+ //# sourceMappingURL=langchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.js","sourceRoot":"","sources":["../../../src/hooks/langchain.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAoB;IACvD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { createRequire } from "node:module";
2
+ const requireFromCwd = createRequire(`${process.cwd()}/`);
3
+ export function hasLangGraph() {
4
+ try {
5
+ requireFromCwd.resolve("@langchain/langgraph");
6
+ return true;
7
+ }
8
+ catch {
9
+ return false;
10
+ }
11
+ }
12
+ //# sourceMappingURL=langgraph-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph-detection.js","sourceRoot":"","sources":["../../../src/hooks/langgraph-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1D,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { runWithAgentId } from "../lineage/agent-context-store.js";
2
+ export const langGraphPatchState = {
3
+ isPatched: false,
4
+ originalCompile: undefined,
5
+ patchedClass: undefined
6
+ };
7
+ export function wrapCompiledGraph(compiled, agentId) {
8
+ const originalInvoke = compiled.invoke.bind(compiled);
9
+ const originalStream = compiled.stream.bind(compiled);
10
+ compiled.invoke = (...args) => runWithAgentId(agentId, () => originalInvoke(...args));
11
+ compiled.stream = (...args) => runWithAgentId(agentId, () => originalStream(...args));
12
+ return compiled;
13
+ }
14
+ async function loadLangGraphModule() {
15
+ try {
16
+ const moduleName = "@langchain/langgraph";
17
+ const module = (await import(moduleName));
18
+ return module;
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ }
24
+ export async function patchLangGraph(options) {
25
+ if (langGraphPatchState.isPatched) {
26
+ return true;
27
+ }
28
+ const loadModule = options.loadModule ?? loadLangGraphModule;
29
+ let module;
30
+ try {
31
+ module = await loadModule();
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ if (!module?.StateGraph?.prototype?.compile) {
37
+ return false;
38
+ }
39
+ const originalCompile = module.StateGraph.prototype.compile;
40
+ langGraphPatchState.originalCompile = originalCompile;
41
+ langGraphPatchState.patchedClass = module.StateGraph;
42
+ const { agentId } = options;
43
+ module.StateGraph.prototype.compile = function patchedCompile(...args) {
44
+ const compiled = originalCompile.apply(this, args);
45
+ try {
46
+ return wrapCompiledGraph(compiled, agentId);
47
+ }
48
+ catch (e) {
49
+ console.warn("[assembly] LangGraph lineage patch error on compile; falling back:", e);
50
+ return compiled;
51
+ }
52
+ };
53
+ langGraphPatchState.isPatched = true;
54
+ return true;
55
+ }
56
+ export function unpatchLangGraph() {
57
+ if (!langGraphPatchState.isPatched) {
58
+ return false;
59
+ }
60
+ if (!langGraphPatchState.patchedClass || !langGraphPatchState.originalCompile) {
61
+ return false;
62
+ }
63
+ langGraphPatchState.patchedClass.prototype.compile = langGraphPatchState.originalCompile;
64
+ langGraphPatchState.isPatched = false;
65
+ langGraphPatchState.originalCompile = undefined;
66
+ langGraphPatchState.patchedClass = undefined;
67
+ return true;
68
+ }
69
+ //# sourceMappingURL=langgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langgraph.js","sourceRoot":"","sources":["../../../src/hooks/langgraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { createRequire } from "node:module";
2
+ const requireFromCwd = createRequire(`${process.cwd()}/`);
3
+ export function hasMastra() {
4
+ try {
5
+ requireFromCwd.resolve("@mastra/core");
6
+ return true;
7
+ }
8
+ catch {
9
+ return false;
10
+ }
11
+ }
12
+ //# sourceMappingURL=mastra-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mastra-detection.js","sourceRoot":"","sources":["../../../src/hooks/mastra-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1D,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { runWithAgentId } from "../lineage/agent-context-store.js";
2
+ export const mastraPatchState = {
3
+ isPatched: false,
4
+ originalGenerate: undefined,
5
+ originalExecute: undefined,
6
+ patchedAgentClass: undefined,
7
+ patchedWorkflowClass: undefined
8
+ };
9
+ async function loadMastraModule() {
10
+ try {
11
+ const moduleName = "@mastra/core";
12
+ const module = (await import(moduleName));
13
+ return module;
14
+ }
15
+ catch {
16
+ return undefined;
17
+ }
18
+ }
19
+ export async function patchMastra(options) {
20
+ if (mastraPatchState.isPatched) {
21
+ return true;
22
+ }
23
+ const loadModule = options.loadModule ?? loadMastraModule;
24
+ let module;
25
+ try {
26
+ module = await loadModule();
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ if (!module?.Agent?.prototype?.generate) {
32
+ return false;
33
+ }
34
+ const { agentId } = options;
35
+ // Wrap Agent.prototype.generate
36
+ const originalGenerate = module.Agent.prototype.generate;
37
+ mastraPatchState.originalGenerate = originalGenerate;
38
+ mastraPatchState.patchedAgentClass = module.Agent;
39
+ module.Agent.prototype.generate = function patchedGenerate(...args) {
40
+ try {
41
+ return runWithAgentId(agentId, () => originalGenerate.apply(this, args));
42
+ }
43
+ catch (e) {
44
+ console.warn("[assembly] Mastra lineage patch error on generate; falling back:", e);
45
+ return originalGenerate.apply(this, args);
46
+ }
47
+ };
48
+ // Wrap Workflow.prototype.execute if present
49
+ if (module.Workflow?.prototype?.execute) {
50
+ const originalExecute = module.Workflow.prototype.execute;
51
+ mastraPatchState.originalExecute = originalExecute;
52
+ mastraPatchState.patchedWorkflowClass = module.Workflow;
53
+ module.Workflow.prototype.execute = function patchedExecute(...args) {
54
+ try {
55
+ return runWithAgentId(agentId, () => originalExecute.apply(this, args));
56
+ }
57
+ catch (e) {
58
+ console.warn("[assembly] Mastra lineage patch error on execute; falling back:", e);
59
+ return originalExecute.apply(this, args);
60
+ }
61
+ };
62
+ }
63
+ mastraPatchState.isPatched = true;
64
+ return true;
65
+ }
66
+ export function unpatchMastra() {
67
+ if (!mastraPatchState.isPatched) {
68
+ return false;
69
+ }
70
+ if (mastraPatchState.patchedAgentClass && mastraPatchState.originalGenerate) {
71
+ mastraPatchState.patchedAgentClass.prototype.generate = mastraPatchState.originalGenerate;
72
+ }
73
+ if (mastraPatchState.patchedWorkflowClass && mastraPatchState.originalExecute) {
74
+ mastraPatchState.patchedWorkflowClass.prototype.execute = mastraPatchState.originalExecute;
75
+ }
76
+ mastraPatchState.isPatched = false;
77
+ mastraPatchState.originalGenerate = undefined;
78
+ mastraPatchState.originalExecute = undefined;
79
+ mastraPatchState.patchedAgentClass = undefined;
80
+ mastraPatchState.patchedWorkflowClass = undefined;
81
+ return true;
82
+ }
83
+ //# sourceMappingURL=mastra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mastra.js","sourceRoot":"","sources":["../../../src/hooks/mastra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AA2BnE,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,SAAS,EAAE,KAAK;IAChB,gBAAgB,EAAE,SAAS;IAC3B,eAAe,EAAE,SAAS;IAC1B,iBAAiB,EAAE,SAAS;IAC5B,oBAAoB,EAAE,SAAS;CAChC,CAAC;AAOF,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,cAAc,CAAC;QAClC,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAiB,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,gBAAgB,CAAC;IAC1D,IAAI,MAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,gCAAgC;IAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;IACzD,gBAAgB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACrD,gBAAgB,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;IAElD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,eAAe,CACxD,GAAG,IAAe;QAElB,IAAI,CAAC;YACH,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,kEAAkE,EAAE,CAAC,CAAC,CAAC;YACpF,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC;IAEF,6CAA6C;IAC7C,IAAI,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QACxC,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1D,gBAAgB,CAAC,eAAe,GAAG,eAAe,CAAC;QACnD,gBAAgB,CAAC,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC;QAExD,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,cAAc,CACzD,GAAG,IAAe;YAElB,IAAI,CAAC;gBACH,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,iEAAiE,EAAE,CAAC,CAAC,CAAC;gBACnF,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,gBAAgB,CAAC,iBAAiB,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;QAC5E,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;IAC5F,CAAC;IACD,IAAI,gBAAgB,CAAC,oBAAoB,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;QAC9E,gBAAgB,CAAC,oBAAoB,CAAC,SAAS,CAAC,OAAO,GAAG,gBAAgB,CAAC,eAAe,CAAC;IAC7F,CAAC;IAED,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC;IACnC,gBAAgB,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAC9C,gBAAgB,CAAC,eAAe,GAAG,SAAS,CAAC;IAC7C,gBAAgB,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAC/C,gBAAgB,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { createRequire } from "node:module";
2
+ const requireFromCwd = createRequire(`${process.cwd()}/`);
3
+ export function hasOpenAIAgentsSDK() {
4
+ try {
5
+ requireFromCwd.resolve("@openai/agents");
6
+ return true;
7
+ }
8
+ catch {
9
+ return false;
10
+ }
11
+ }
12
+ //# sourceMappingURL=openai-agents-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-agents-detection.js","sourceRoot":"","sources":["../../../src/hooks/openai-agents-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1D,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,145 @@
1
+ import { hasOpenAIAgentsSDK } from "./openai-agents-detection.js";
2
+ export const openAIAgentsPatchState = {
3
+ isPatched: false,
4
+ originalRunTool: undefined,
5
+ patchedAgentClass: undefined
6
+ };
7
+ export function captureOriginalRunTool(agentClass) {
8
+ const candidate = agentClass.prototype._runTool;
9
+ if (!candidate) {
10
+ return undefined;
11
+ }
12
+ if (!openAIAgentsPatchState.originalRunTool) {
13
+ openAIAgentsPatchState.originalRunTool = candidate;
14
+ }
15
+ return openAIAgentsPatchState.originalRunTool;
16
+ }
17
+ export function parseToolCallArguments(toolCall) {
18
+ try {
19
+ return JSON.parse(toolCall.function.arguments);
20
+ }
21
+ catch {
22
+ return toolCall.function.arguments;
23
+ }
24
+ }
25
+ export function extractToolCallContextMetadata(context) {
26
+ return {
27
+ agentId: context?.agentId ?? undefined,
28
+ runId: context?.runId ?? undefined
29
+ };
30
+ }
31
+ export function formatDeniedToolCallOutput(reason, prefix) {
32
+ const detail = reason?.trim() ? reason : "denied";
33
+ return { error: `${prefix}: ${detail}` };
34
+ }
35
+ export async function handlePendingApproval(gatewayClient, options) {
36
+ const approval = await gatewayClient.waitForApproval(options.toolName, options.runId, options.timeoutMs);
37
+ if (!approval.denied) {
38
+ return undefined;
39
+ }
40
+ return formatDeniedToolCallOutput(approval.reason, "Approval denied");
41
+ }
42
+ export function recordToolResultNonBlocking(gatewayClient, runId, output) {
43
+ void gatewayClient.recordResult({ runId, output }).catch(() => undefined);
44
+ }
45
+ export function createPatchedRunTool(originalRunTool, gatewayClient, options) {
46
+ return async function patchedRunTool(toolCall, context) {
47
+ const toolName = toolCall.function.name;
48
+ const args = parseToolCallArguments(toolCall);
49
+ const metadata = extractToolCallContextMetadata(context);
50
+ const runId = metadata.runId ?? options.fallbackRunId;
51
+ const executeOriginal = async () => {
52
+ const result = await originalRunTool.call(this, toolCall, context);
53
+ recordToolResultNonBlocking(gatewayClient, runId, {
54
+ toolName,
55
+ args,
56
+ result,
57
+ agentId: metadata.agentId
58
+ });
59
+ return result;
60
+ };
61
+ let decision;
62
+ try {
63
+ decision = await gatewayClient.check({
64
+ action: "tool_call",
65
+ toolName,
66
+ args,
67
+ runId
68
+ });
69
+ }
70
+ catch {
71
+ return executeOriginal();
72
+ }
73
+ if (decision.denied) {
74
+ return formatDeniedToolCallOutput(decision.reason, "Blocked by governance policy");
75
+ }
76
+ if (decision.pending) {
77
+ let pendingOutput;
78
+ try {
79
+ pendingOutput = await handlePendingApproval(gatewayClient, {
80
+ toolName,
81
+ runId,
82
+ timeoutMs: options.approvalTimeoutMs
83
+ });
84
+ }
85
+ catch {
86
+ return executeOriginal();
87
+ }
88
+ if (pendingOutput) {
89
+ return pendingOutput;
90
+ }
91
+ }
92
+ return executeOriginal();
93
+ };
94
+ }
95
+ async function loadAgentClassFromSdk() {
96
+ if (!hasOpenAIAgentsSDK()) {
97
+ return undefined;
98
+ }
99
+ try {
100
+ const moduleName = "@openai/agents";
101
+ const module = (await import(moduleName));
102
+ return module.Agent;
103
+ }
104
+ catch {
105
+ return undefined;
106
+ }
107
+ }
108
+ export async function patchOpenAIAgents(options) {
109
+ if (openAIAgentsPatchState.isPatched) {
110
+ return true;
111
+ }
112
+ const loadAgentClass = options.loadAgentClass ?? loadAgentClassFromSdk;
113
+ const agentClass = await loadAgentClass();
114
+ if (!agentClass) {
115
+ return false;
116
+ }
117
+ const originalRunTool = captureOriginalRunTool(agentClass);
118
+ if (!originalRunTool) {
119
+ return false;
120
+ }
121
+ agentClass.prototype._runTool = createPatchedRunTool(originalRunTool, options.gatewayClient, {
122
+ approvalTimeoutMs: options.approvalTimeoutMs ?? 30_000,
123
+ fallbackRunId: options.fallbackRunId ?? "openai-agents"
124
+ });
125
+ openAIAgentsPatchState.isPatched = true;
126
+ openAIAgentsPatchState.patchedAgentClass = agentClass;
127
+ return true;
128
+ }
129
+ export function unpatchOpenAIAgents() {
130
+ if (!openAIAgentsPatchState.isPatched) {
131
+ return false;
132
+ }
133
+ if (!openAIAgentsPatchState.patchedAgentClass) {
134
+ return false;
135
+ }
136
+ if (!openAIAgentsPatchState.originalRunTool) {
137
+ return false;
138
+ }
139
+ openAIAgentsPatchState.patchedAgentClass.prototype._runTool =
140
+ openAIAgentsPatchState.originalRunTool;
141
+ openAIAgentsPatchState.isPatched = false;
142
+ openAIAgentsPatchState.patchedAgentClass = undefined;
143
+ return true;
144
+ }
145
+ //# sourceMappingURL=openai-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-agents.js","sourceRoot":"","sources":["../../../src/hooks/openai-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export { initAssembly } from "./core/init-assembly.js";
2
+ export { withAssembly } from "./wrappers/index.js";
3
+ export { ENFORCEMENT_MODES } from "./types/index.js";
4
+ export { decodeAuditEvent, decodeCallStackNode, encodeAuditEvent, encodeCallStackNode } from "./audit/index.js";
5
+ export { currentAgentId, runWithAgentId } from "./lineage/index.js";
6
+ // Runtime binary resolution helpers (F113 / AAASM-1221). Re-export the
7
+ // discovery + error-message surfaces from src/runtime.ts; the lifecycle
8
+ // `initAssembly` from runtime.ts intentionally stays scoped to the
9
+ // `@agent-assembly/sdk/runtime` subpath export to avoid colliding with
10
+ // the gateway-based `initAssembly` re-exported above.
11
+ export { INSTALL_HINT, findAasmBinary } from "./runtime.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpE,uEAAuE;AACvE,wEAAwE;AACxE,mEAAmE;AACnE,uEAAuE;AACvE,sDAAsD;AACtD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ /**
3
+ * Holds the current agent's ID for automatic lineage propagation.
4
+ * When a framework spawns a child agent, the child's initAssembly reads
5
+ * this store to auto-populate parentAgentId without manual threading.
6
+ */
7
+ export const agentContextStore = new AsyncLocalStorage();
8
+ /** Run fn within a context where the current agent ID is set. */
9
+ export function runWithAgentId(agentId, fn) {
10
+ return agentContextStore.run(agentId, fn);
11
+ }
12
+ /** Return the current agent ID from the async context, or undefined if absent. */
13
+ export function currentAgentId() {
14
+ return agentContextStore.getStore();
15
+ }
16
+ //# sourceMappingURL=agent-context-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-context-store.js","sourceRoot":"","sources":["../../../src/lineage/agent-context-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAU,CAAC;AAEjE,iEAAiE;AACjE,MAAM,UAAU,cAAc,CAAI,OAAe,EAAE,EAAW;IAC5D,OAAO,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,cAAc;IAC5B,OAAO,iBAAiB,CAAC,QAAQ,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { agentContextStore, currentAgentId, runWithAgentId } from "./agent-context-store.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lineage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}