@copilotkit/runtime 1.72.0 → 1.73.0

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 (195) hide show
  1. package/dist/agent/index.cjs +82 -8
  2. package/dist/agent/index.cjs.map +1 -1
  3. package/dist/agent/index.d.cts +55 -8
  4. package/dist/agent/index.d.cts.map +1 -1
  5. package/dist/agent/index.d.mts +53 -6
  6. package/dist/agent/index.d.mts.map +1 -1
  7. package/dist/agent/index.mjs +83 -10
  8. package/dist/agent/index.mjs.map +1 -1
  9. package/dist/agent/learned-skills.cjs +77 -0
  10. package/dist/agent/learned-skills.cjs.map +1 -0
  11. package/dist/agent/learned-skills.d.cts +16 -0
  12. package/dist/agent/learned-skills.d.cts.map +1 -0
  13. package/dist/agent/learned-skills.d.mts +16 -0
  14. package/dist/agent/learned-skills.d.mts.map +1 -0
  15. package/dist/agent/learned-skills.mjs +75 -0
  16. package/dist/agent/learned-skills.mjs.map +1 -0
  17. package/dist/index.cjs +1 -1
  18. package/dist/index.d.cts +27 -20
  19. package/dist/index.d.mts +27 -20
  20. package/dist/index.mjs +1 -1
  21. package/dist/internal/learned-skills.cjs +22 -0
  22. package/dist/internal/learned-skills.d.cts +10 -0
  23. package/dist/internal/learned-skills.d.mts +10 -0
  24. package/dist/internal/learned-skills.mjs +10 -0
  25. package/dist/langgraph.d.cts +3 -1
  26. package/dist/langgraph.d.mts +3 -1
  27. package/dist/lib/index.cjs +1 -1
  28. package/dist/lib/index.cjs.map +1 -1
  29. package/dist/lib/index.d.cts +2 -2
  30. package/dist/lib/index.d.cts.map +1 -1
  31. package/dist/lib/index.d.mts +2 -2
  32. package/dist/lib/index.d.mts.map +1 -1
  33. package/dist/lib/index.mjs +1 -1
  34. package/dist/lib/index.mjs.map +1 -1
  35. package/dist/lib/integrations/nextjs/app-router.cjs.map +1 -1
  36. package/dist/lib/integrations/nextjs/app-router.mjs.map +1 -1
  37. package/dist/lib/integrations/node-express/index.cjs.map +1 -1
  38. package/dist/lib/integrations/node-express/index.mjs.map +1 -1
  39. package/dist/lib/integrations/node-http/index.cjs.map +1 -1
  40. package/dist/lib/integrations/node-http/index.d.cts.map +1 -1
  41. package/dist/lib/integrations/node-http/index.d.mts.map +1 -1
  42. package/dist/lib/integrations/node-http/index.mjs.map +1 -1
  43. package/dist/lib/integrations/shared.cjs.map +1 -1
  44. package/dist/lib/integrations/shared.d.cts +1 -1
  45. package/dist/lib/integrations/shared.d.cts.map +1 -1
  46. package/dist/lib/integrations/shared.d.mts +1 -1
  47. package/dist/lib/integrations/shared.d.mts.map +1 -1
  48. package/dist/lib/integrations/shared.mjs.map +1 -1
  49. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts +1 -1
  50. package/dist/lib/runtime/copilot-runtime.cjs +2 -16
  51. package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
  52. package/dist/lib/runtime/copilot-runtime.d.cts +2 -2
  53. package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
  54. package/dist/lib/runtime/copilot-runtime.d.mts +2 -2
  55. package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
  56. package/dist/lib/runtime/copilot-runtime.mjs +3 -17
  57. package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
  58. package/dist/package.cjs +9 -3
  59. package/dist/package.mjs +9 -3
  60. package/dist/service-adapters/anthropic/anthropic-adapter.cjs.map +1 -1
  61. package/dist/service-adapters/anthropic/anthropic-adapter.d.cts.map +1 -1
  62. package/dist/service-adapters/anthropic/anthropic-adapter.d.mts.map +1 -1
  63. package/dist/service-adapters/anthropic/anthropic-adapter.mjs.map +1 -1
  64. package/dist/service-adapters/shared/sdk-client-utils.cjs.map +1 -1
  65. package/dist/service-adapters/shared/sdk-client-utils.d.cts.map +1 -1
  66. package/dist/service-adapters/shared/sdk-client-utils.d.mts.map +1 -1
  67. package/dist/service-adapters/shared/sdk-client-utils.mjs.map +1 -1
  68. package/dist/v2/index.cjs +7 -0
  69. package/dist/v2/index.d.cts +6 -5
  70. package/dist/v2/index.d.mts +6 -5
  71. package/dist/v2/index.mjs +3 -3
  72. package/dist/v2/runtime/core/channel-manager.d.cts +1 -1
  73. package/dist/v2/runtime/core/channel-manager.d.mts +2 -1
  74. package/dist/v2/runtime/core/channel-manager.d.mts.map +1 -1
  75. package/dist/v2/runtime/core/debug-event-bus.cjs +22 -0
  76. package/dist/v2/runtime/core/debug-event-bus.cjs.map +1 -1
  77. package/dist/v2/runtime/core/debug-event-bus.d.cts +1 -1
  78. package/dist/v2/runtime/core/debug-event-bus.d.mts +1 -1
  79. package/dist/v2/runtime/core/debug-event-bus.mjs +22 -1
  80. package/dist/v2/runtime/core/debug-event-bus.mjs.map +1 -1
  81. package/dist/v2/runtime/core/runtime.cjs +10 -5
  82. package/dist/v2/runtime/core/runtime.cjs.map +1 -1
  83. package/dist/v2/runtime/core/runtime.d.cts +29 -3
  84. package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
  85. package/dist/v2/runtime/core/runtime.d.mts +28 -2
  86. package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
  87. package/dist/v2/runtime/core/runtime.mjs +11 -6
  88. package/dist/v2/runtime/core/runtime.mjs.map +1 -1
  89. package/dist/v2/runtime/handlers/handle-connect.cjs +3 -2
  90. package/dist/v2/runtime/handlers/handle-connect.cjs.map +1 -1
  91. package/dist/v2/runtime/handlers/handle-connect.mjs +3 -2
  92. package/dist/v2/runtime/handlers/handle-connect.mjs.map +1 -1
  93. package/dist/v2/runtime/handlers/handle-debug-events.cjs +2 -1
  94. package/dist/v2/runtime/handlers/handle-debug-events.cjs.map +1 -1
  95. package/dist/v2/runtime/handlers/handle-debug-events.mjs +3 -1
  96. package/dist/v2/runtime/handlers/handle-debug-events.mjs.map +1 -1
  97. package/dist/v2/runtime/handlers/handle-run.cjs +5 -3
  98. package/dist/v2/runtime/handlers/handle-run.cjs.map +1 -1
  99. package/dist/v2/runtime/handlers/handle-run.mjs +5 -3
  100. package/dist/v2/runtime/handlers/handle-run.mjs.map +1 -1
  101. package/dist/v2/runtime/handlers/handle-suggest.cjs +4 -3
  102. package/dist/v2/runtime/handlers/handle-suggest.cjs.map +1 -1
  103. package/dist/v2/runtime/handlers/handle-suggest.mjs +5 -4
  104. package/dist/v2/runtime/handlers/handle-suggest.mjs.map +1 -1
  105. package/dist/v2/runtime/handlers/shared/cloud-telemetry.cjs +31 -0
  106. package/dist/v2/runtime/handlers/shared/cloud-telemetry.cjs.map +1 -0
  107. package/dist/v2/runtime/handlers/shared/cloud-telemetry.mjs +30 -0
  108. package/dist/v2/runtime/handlers/shared/cloud-telemetry.mjs.map +1 -0
  109. package/dist/v2/runtime/handlers/shared/sse-keep-alive.cjs +69 -0
  110. package/dist/v2/runtime/handlers/shared/sse-keep-alive.cjs.map +1 -0
  111. package/dist/v2/runtime/handlers/shared/sse-keep-alive.mjs +67 -0
  112. package/dist/v2/runtime/handlers/shared/sse-keep-alive.mjs.map +1 -0
  113. package/dist/v2/runtime/handlers/shared/sse-response.cjs +35 -4
  114. package/dist/v2/runtime/handlers/shared/sse-response.cjs.map +1 -1
  115. package/dist/v2/runtime/handlers/shared/sse-response.mjs +35 -4
  116. package/dist/v2/runtime/handlers/shared/sse-response.mjs.map +1 -1
  117. package/dist/v2/runtime/handlers/sse/connect.cjs +1 -0
  118. package/dist/v2/runtime/handlers/sse/connect.cjs.map +1 -1
  119. package/dist/v2/runtime/handlers/sse/connect.mjs +1 -0
  120. package/dist/v2/runtime/handlers/sse/connect.mjs.map +1 -1
  121. package/dist/v2/runtime/handlers/sse/run.cjs +2 -0
  122. package/dist/v2/runtime/handlers/sse/run.cjs.map +1 -1
  123. package/dist/v2/runtime/handlers/sse/run.mjs +2 -0
  124. package/dist/v2/runtime/handlers/sse/run.mjs.map +1 -1
  125. package/dist/v2/runtime/index.d.cts +3 -3
  126. package/dist/v2/runtime/index.d.mts +3 -3
  127. package/dist/v2/runtime/intelligence-platform/client.d.cts +1 -1
  128. package/dist/v2/runtime/intelligence-platform/client.d.mts +1 -1
  129. package/dist/v2/runtime/intelligence-platform/skill-registry/archive.cjs +132 -0
  130. package/dist/v2/runtime/intelligence-platform/skill-registry/archive.cjs.map +1 -0
  131. package/dist/v2/runtime/intelligence-platform/skill-registry/archive.d.cts +11 -0
  132. package/dist/v2/runtime/intelligence-platform/skill-registry/archive.d.cts.map +1 -0
  133. package/dist/v2/runtime/intelligence-platform/skill-registry/archive.d.mts +11 -0
  134. package/dist/v2/runtime/intelligence-platform/skill-registry/archive.d.mts.map +1 -0
  135. package/dist/v2/runtime/intelligence-platform/skill-registry/archive.mjs +128 -0
  136. package/dist/v2/runtime/intelligence-platform/skill-registry/archive.mjs.map +1 -0
  137. package/dist/v2/runtime/intelligence-platform/skill-registry/config.cjs +48 -0
  138. package/dist/v2/runtime/intelligence-platform/skill-registry/config.cjs.map +1 -0
  139. package/dist/v2/runtime/intelligence-platform/skill-registry/config.d.cts +27 -0
  140. package/dist/v2/runtime/intelligence-platform/skill-registry/config.d.cts.map +1 -0
  141. package/dist/v2/runtime/intelligence-platform/skill-registry/config.d.mts +27 -0
  142. package/dist/v2/runtime/intelligence-platform/skill-registry/config.d.mts.map +1 -0
  143. package/dist/v2/runtime/intelligence-platform/skill-registry/config.mjs +48 -0
  144. package/dist/v2/runtime/intelligence-platform/skill-registry/config.mjs.map +1 -0
  145. package/dist/v2/runtime/intelligence-platform/skill-registry/errors.cjs +11 -0
  146. package/dist/v2/runtime/intelligence-platform/skill-registry/errors.cjs.map +1 -0
  147. package/dist/v2/runtime/intelligence-platform/skill-registry/errors.d.cts +8 -0
  148. package/dist/v2/runtime/intelligence-platform/skill-registry/errors.d.cts.map +1 -0
  149. package/dist/v2/runtime/intelligence-platform/skill-registry/errors.d.mts +8 -0
  150. package/dist/v2/runtime/intelligence-platform/skill-registry/errors.d.mts.map +1 -0
  151. package/dist/v2/runtime/intelligence-platform/skill-registry/errors.mjs +11 -0
  152. package/dist/v2/runtime/intelligence-platform/skill-registry/errors.mjs.map +1 -0
  153. package/dist/v2/runtime/intelligence-platform/skill-registry/index.d.cts +8 -0
  154. package/dist/v2/runtime/intelligence-platform/skill-registry/index.d.mts +8 -0
  155. package/dist/v2/runtime/intelligence-platform/skill-registry/registry.cjs +132 -0
  156. package/dist/v2/runtime/intelligence-platform/skill-registry/registry.cjs.map +1 -0
  157. package/dist/v2/runtime/intelligence-platform/skill-registry/registry.d.cts +31 -0
  158. package/dist/v2/runtime/intelligence-platform/skill-registry/registry.d.cts.map +1 -0
  159. package/dist/v2/runtime/intelligence-platform/skill-registry/registry.d.mts +31 -0
  160. package/dist/v2/runtime/intelligence-platform/skill-registry/registry.d.mts.map +1 -0
  161. package/dist/v2/runtime/intelligence-platform/skill-registry/registry.mjs +132 -0
  162. package/dist/v2/runtime/intelligence-platform/skill-registry/registry.mjs.map +1 -0
  163. package/dist/v2/runtime/intelligence-platform/skill-registry/skill-content.cjs +42 -0
  164. package/dist/v2/runtime/intelligence-platform/skill-registry/skill-content.cjs.map +1 -0
  165. package/dist/v2/runtime/intelligence-platform/skill-registry/skill-content.d.cts +13 -0
  166. package/dist/v2/runtime/intelligence-platform/skill-registry/skill-content.d.cts.map +1 -0
  167. package/dist/v2/runtime/intelligence-platform/skill-registry/skill-content.d.mts +13 -0
  168. package/dist/v2/runtime/intelligence-platform/skill-registry/skill-content.d.mts.map +1 -0
  169. package/dist/v2/runtime/intelligence-platform/skill-registry/skill-content.mjs +39 -0
  170. package/dist/v2/runtime/intelligence-platform/skill-registry/skill-content.mjs.map +1 -0
  171. package/dist/v2/runtime/intelligence-platform/skill-registry/snapshot.cjs +93 -0
  172. package/dist/v2/runtime/intelligence-platform/skill-registry/snapshot.cjs.map +1 -0
  173. package/dist/v2/runtime/intelligence-platform/skill-registry/snapshot.d.cts +28 -0
  174. package/dist/v2/runtime/intelligence-platform/skill-registry/snapshot.d.cts.map +1 -0
  175. package/dist/v2/runtime/intelligence-platform/skill-registry/snapshot.d.mts +28 -0
  176. package/dist/v2/runtime/intelligence-platform/skill-registry/snapshot.d.mts.map +1 -0
  177. package/dist/v2/runtime/intelligence-platform/skill-registry/snapshot.mjs +92 -0
  178. package/dist/v2/runtime/intelligence-platform/skill-registry/snapshot.mjs.map +1 -0
  179. package/dist/v2/runtime/runner/agent-runner.d.cts +1 -1
  180. package/dist/v2/runtime/runner/in-memory.d.cts +1 -1
  181. package/dist/v2/runtime/runner/index.d.cts +2 -2
  182. package/dist/v2/runtime/runner/index.d.mts +2 -2
  183. package/dist/v2/runtime/runner/index.mjs +2 -2
  184. package/dist/v2/runtime/runner/intelligence.d.cts +1 -1
  185. package/dist/v2/runtime/telemetry/events.d.cts +12 -0
  186. package/dist/v2/runtime/telemetry/events.d.cts.map +1 -1
  187. package/dist/v2/runtime/telemetry/events.d.mts +12 -0
  188. package/dist/v2/runtime/telemetry/events.d.mts.map +1 -1
  189. package/dist/v2/runtime/telemetry/telemetry-client.cjs +3 -2
  190. package/dist/v2/runtime/telemetry/telemetry-client.cjs.map +1 -1
  191. package/dist/v2/runtime/telemetry/telemetry-client.d.cts.map +1 -1
  192. package/dist/v2/runtime/telemetry/telemetry-client.d.mts.map +1 -1
  193. package/dist/v2/runtime/telemetry/telemetry-client.mjs +7 -6
  194. package/dist/v2/runtime/telemetry/telemetry-client.mjs.map +1 -1
  195. package/package.json +9 -3
@@ -1 +1 @@
1
- {"version":3,"file":"connect.cjs","names":["createSseEventResponse","mergeForwardableHeaders","resolveForwardHeadersPolicy"],"sources":["../../../../../src/v2/runtime/handlers/sse/connect.ts"],"sourcesContent":["import type { AbstractAgent } from \"@ag-ui/client\";\nimport type { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { createSseEventResponse } from \"../shared/sse-response\";\nimport {\n mergeForwardableHeaders,\n resolveForwardHeadersPolicy,\n} from \"../header-utils\";\n\n/**\n * `headers` lives on the HTTP-backed agent configs (e.g. `HttpAgent`), not on\n * the base `AbstractAgent`. Mirror the runtime's own optional-headers shape so\n * we can read server-configured headers off the per-request clone without a\n * cast. See `agent-utils.ts`.\n */\ntype AgentWithHeaders = AbstractAgent & {\n headers?: Record<string, string>;\n};\n\ninterface HandleSseConnectParams {\n runtime: CopilotRuntimeLike;\n request: Request;\n agentId: string;\n threadId: string;\n /**\n * The per-request agent clone, carrying any server-configured `agent.headers`\n * (e.g. service-to-service auth). Used only to compute the merged header set\n * threaded into `runner.connect` below — see the note there for why that\n * merge is forward-looking plumbing rather than active outbound auth today.\n */\n agent?: AgentWithHeaders;\n}\n\nexport function handleSseConnect({\n runtime,\n request,\n agentId,\n threadId,\n agent,\n}: HandleSseConnectParams): Response {\n return createSseEventResponse({\n request,\n debugEventBus: runtime.debugEventBus,\n // Forward the real agentId so debug envelopes reflect the agent the\n // route resolved to — not the literal string \"connect\".\n agentId,\n telemetry: runtime.telemetry,\n observableFactory: () =>\n runtime.runner.connect({\n threadId,\n agentId,\n // Forward-looking plumbing: we compute the merged header set (server\n // `agent.headers` win on collision, case-insensitively; non-colliding\n // inbound headers still forward — see `mergeForwardableHeaders`, #5712)\n // and thread it into `runner.connect`. NO shipped runner consumes the\n // `headers` field of `AgentRunnerConnectRequest` today — every runner\n // (in-memory, intelligence, telemetry, sqlite) reads only `threadId`.\n // The real outbound header forwarding is the /run path, where\n // `cloneAgentForRequest` mutates `agent.headers` directly\n // (agent-utils.ts). This wiring exists so a future outbound-connecting\n // runner can pick the merged headers up without a route change; the\n // collision precedence noted here is purely about that merge, not about\n // middleware/mutation parity with /run.\n headers: mergeForwardableHeaders(\n agent?.headers,\n request,\n // Optional on `CopilotRuntimeLike` (non-breaking minor release);\n // coalesce a policy-less external implementor to the default resolved\n // policy (default-on denylist) instead of dereffing undefined.\n runtime.forwardHeadersPolicy ??\n resolveForwardHeadersPolicy(undefined),\n ),\n }),\n });\n}\n"],"mappings":";;;;;AAgCA,SAAgB,iBAAiB,EAC/B,SACA,SACA,SACA,UACA,SACmC;AACnC,QAAOA,4CAAuB;EAC5B;EACA,eAAe,QAAQ;EAGvB;EACA,WAAW,QAAQ;EACnB,yBACE,QAAQ,OAAO,QAAQ;GACrB;GACA;GAaA,SAASC,6CACP,OAAO,SACP,SAIA,QAAQ,wBACNC,iDAA4B,OAAU,CACzC;GACF,CAAC;EACL,CAAC"}
1
+ {"version":3,"file":"connect.cjs","names":["createSseEventResponse","mergeForwardableHeaders","resolveForwardHeadersPolicy"],"sources":["../../../../../src/v2/runtime/handlers/sse/connect.ts"],"sourcesContent":["import type { AbstractAgent } from \"@ag-ui/client\";\nimport type { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { createSseEventResponse } from \"../shared/sse-response\";\nimport {\n mergeForwardableHeaders,\n resolveForwardHeadersPolicy,\n} from \"../header-utils\";\n\n/**\n * `headers` lives on the HTTP-backed agent configs (e.g. `HttpAgent`), not on\n * the base `AbstractAgent`. Mirror the runtime's own optional-headers shape so\n * we can read server-configured headers off the per-request clone without a\n * cast. See `agent-utils.ts`.\n */\ntype AgentWithHeaders = AbstractAgent & {\n headers?: Record<string, string>;\n};\n\ninterface HandleSseConnectParams {\n runtime: CopilotRuntimeLike;\n request: Request;\n agentId: string;\n threadId: string;\n /**\n * The per-request agent clone, carrying any server-configured `agent.headers`\n * (e.g. service-to-service auth). Used only to compute the merged header set\n * threaded into `runner.connect` below — see the note there for why that\n * merge is forward-looking plumbing rather than active outbound auth today.\n */\n agent?: AgentWithHeaders;\n}\n\nexport function handleSseConnect({\n runtime,\n request,\n agentId,\n threadId,\n agent,\n}: HandleSseConnectParams): Response {\n return createSseEventResponse({\n request,\n debugEventBus: runtime.debugEventBus,\n // Forward the real agentId so debug envelopes reflect the agent the\n // route resolved to — not the literal string \"connect\".\n agentId,\n telemetry: runtime.telemetry,\n keepAliveIntervalSeconds: runtime.sseKeepAliveIntervalSeconds,\n observableFactory: () =>\n runtime.runner.connect({\n threadId,\n agentId,\n // Forward-looking plumbing: we compute the merged header set (server\n // `agent.headers` win on collision, case-insensitively; non-colliding\n // inbound headers still forward — see `mergeForwardableHeaders`, #5712)\n // and thread it into `runner.connect`. NO shipped runner consumes the\n // `headers` field of `AgentRunnerConnectRequest` today — every runner\n // (in-memory, intelligence, telemetry, sqlite) reads only `threadId`.\n // The real outbound header forwarding is the /run path, where\n // `cloneAgentForRequest` mutates `agent.headers` directly\n // (agent-utils.ts). This wiring exists so a future outbound-connecting\n // runner can pick the merged headers up without a route change; the\n // collision precedence noted here is purely about that merge, not about\n // middleware/mutation parity with /run.\n headers: mergeForwardableHeaders(\n agent?.headers,\n request,\n // Optional on `CopilotRuntimeLike` (non-breaking minor release);\n // coalesce a policy-less external implementor to the default resolved\n // policy (default-on denylist) instead of dereffing undefined.\n runtime.forwardHeadersPolicy ??\n resolveForwardHeadersPolicy(undefined),\n ),\n }),\n });\n}\n"],"mappings":";;;;;AAgCA,SAAgB,iBAAiB,EAC/B,SACA,SACA,SACA,UACA,SACmC;AACnC,QAAOA,4CAAuB;EAC5B;EACA,eAAe,QAAQ;EAGvB;EACA,WAAW,QAAQ;EACnB,0BAA0B,QAAQ;EAClC,yBACE,QAAQ,OAAO,QAAQ;GACrB;GACA;GAaA,SAASC,6CACP,OAAO,SACP,SAIA,QAAQ,wBACNC,iDAA4B,OAAU,CACzC;GACF,CAAC;EACL,CAAC"}
@@ -9,6 +9,7 @@ function handleSseConnect({ runtime, request, agentId, threadId, agent }) {
9
9
  debugEventBus: runtime.debugEventBus,
10
10
  agentId,
11
11
  telemetry: runtime.telemetry,
12
+ keepAliveIntervalSeconds: runtime.sseKeepAliveIntervalSeconds,
12
13
  observableFactory: () => runtime.runner.connect({
13
14
  threadId,
14
15
  agentId,
@@ -1 +1 @@
1
- {"version":3,"file":"connect.mjs","names":[],"sources":["../../../../../src/v2/runtime/handlers/sse/connect.ts"],"sourcesContent":["import type { AbstractAgent } from \"@ag-ui/client\";\nimport type { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { createSseEventResponse } from \"../shared/sse-response\";\nimport {\n mergeForwardableHeaders,\n resolveForwardHeadersPolicy,\n} from \"../header-utils\";\n\n/**\n * `headers` lives on the HTTP-backed agent configs (e.g. `HttpAgent`), not on\n * the base `AbstractAgent`. Mirror the runtime's own optional-headers shape so\n * we can read server-configured headers off the per-request clone without a\n * cast. See `agent-utils.ts`.\n */\ntype AgentWithHeaders = AbstractAgent & {\n headers?: Record<string, string>;\n};\n\ninterface HandleSseConnectParams {\n runtime: CopilotRuntimeLike;\n request: Request;\n agentId: string;\n threadId: string;\n /**\n * The per-request agent clone, carrying any server-configured `agent.headers`\n * (e.g. service-to-service auth). Used only to compute the merged header set\n * threaded into `runner.connect` below — see the note there for why that\n * merge is forward-looking plumbing rather than active outbound auth today.\n */\n agent?: AgentWithHeaders;\n}\n\nexport function handleSseConnect({\n runtime,\n request,\n agentId,\n threadId,\n agent,\n}: HandleSseConnectParams): Response {\n return createSseEventResponse({\n request,\n debugEventBus: runtime.debugEventBus,\n // Forward the real agentId so debug envelopes reflect the agent the\n // route resolved to — not the literal string \"connect\".\n agentId,\n telemetry: runtime.telemetry,\n observableFactory: () =>\n runtime.runner.connect({\n threadId,\n agentId,\n // Forward-looking plumbing: we compute the merged header set (server\n // `agent.headers` win on collision, case-insensitively; non-colliding\n // inbound headers still forward — see `mergeForwardableHeaders`, #5712)\n // and thread it into `runner.connect`. NO shipped runner consumes the\n // `headers` field of `AgentRunnerConnectRequest` today — every runner\n // (in-memory, intelligence, telemetry, sqlite) reads only `threadId`.\n // The real outbound header forwarding is the /run path, where\n // `cloneAgentForRequest` mutates `agent.headers` directly\n // (agent-utils.ts). This wiring exists so a future outbound-connecting\n // runner can pick the merged headers up without a route change; the\n // collision precedence noted here is purely about that merge, not about\n // middleware/mutation parity with /run.\n headers: mergeForwardableHeaders(\n agent?.headers,\n request,\n // Optional on `CopilotRuntimeLike` (non-breaking minor release);\n // coalesce a policy-less external implementor to the default resolved\n // policy (default-on denylist) instead of dereffing undefined.\n runtime.forwardHeadersPolicy ??\n resolveForwardHeadersPolicy(undefined),\n ),\n }),\n });\n}\n"],"mappings":";;;;;AAgCA,SAAgB,iBAAiB,EAC/B,SACA,SACA,SACA,UACA,SACmC;AACnC,QAAO,uBAAuB;EAC5B;EACA,eAAe,QAAQ;EAGvB;EACA,WAAW,QAAQ;EACnB,yBACE,QAAQ,OAAO,QAAQ;GACrB;GACA;GAaA,SAAS,wBACP,OAAO,SACP,SAIA,QAAQ,wBACN,4BAA4B,OAAU,CACzC;GACF,CAAC;EACL,CAAC"}
1
+ {"version":3,"file":"connect.mjs","names":[],"sources":["../../../../../src/v2/runtime/handlers/sse/connect.ts"],"sourcesContent":["import type { AbstractAgent } from \"@ag-ui/client\";\nimport type { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { createSseEventResponse } from \"../shared/sse-response\";\nimport {\n mergeForwardableHeaders,\n resolveForwardHeadersPolicy,\n} from \"../header-utils\";\n\n/**\n * `headers` lives on the HTTP-backed agent configs (e.g. `HttpAgent`), not on\n * the base `AbstractAgent`. Mirror the runtime's own optional-headers shape so\n * we can read server-configured headers off the per-request clone without a\n * cast. See `agent-utils.ts`.\n */\ntype AgentWithHeaders = AbstractAgent & {\n headers?: Record<string, string>;\n};\n\ninterface HandleSseConnectParams {\n runtime: CopilotRuntimeLike;\n request: Request;\n agentId: string;\n threadId: string;\n /**\n * The per-request agent clone, carrying any server-configured `agent.headers`\n * (e.g. service-to-service auth). Used only to compute the merged header set\n * threaded into `runner.connect` below — see the note there for why that\n * merge is forward-looking plumbing rather than active outbound auth today.\n */\n agent?: AgentWithHeaders;\n}\n\nexport function handleSseConnect({\n runtime,\n request,\n agentId,\n threadId,\n agent,\n}: HandleSseConnectParams): Response {\n return createSseEventResponse({\n request,\n debugEventBus: runtime.debugEventBus,\n // Forward the real agentId so debug envelopes reflect the agent the\n // route resolved to — not the literal string \"connect\".\n agentId,\n telemetry: runtime.telemetry,\n keepAliveIntervalSeconds: runtime.sseKeepAliveIntervalSeconds,\n observableFactory: () =>\n runtime.runner.connect({\n threadId,\n agentId,\n // Forward-looking plumbing: we compute the merged header set (server\n // `agent.headers` win on collision, case-insensitively; non-colliding\n // inbound headers still forward — see `mergeForwardableHeaders`, #5712)\n // and thread it into `runner.connect`. NO shipped runner consumes the\n // `headers` field of `AgentRunnerConnectRequest` today — every runner\n // (in-memory, intelligence, telemetry, sqlite) reads only `threadId`.\n // The real outbound header forwarding is the /run path, where\n // `cloneAgentForRequest` mutates `agent.headers` directly\n // (agent-utils.ts). This wiring exists so a future outbound-connecting\n // runner can pick the merged headers up without a route change; the\n // collision precedence noted here is purely about that merge, not about\n // middleware/mutation parity with /run.\n headers: mergeForwardableHeaders(\n agent?.headers,\n request,\n // Optional on `CopilotRuntimeLike` (non-breaking minor release);\n // coalesce a policy-less external implementor to the default resolved\n // policy (default-on denylist) instead of dereffing undefined.\n runtime.forwardHeadersPolicy ??\n resolveForwardHeadersPolicy(undefined),\n ),\n }),\n });\n}\n"],"mappings":";;;;;AAgCA,SAAgB,iBAAiB,EAC/B,SACA,SACA,SACA,UACA,SACmC;AACnC,QAAO,uBAAuB;EAC5B;EACA,eAAe,QAAQ;EAGvB;EACA,WAAW,QAAQ;EACnB,0BAA0B,QAAQ;EAClC,yBACE,QAAQ,OAAO,QAAQ;GACrB;GACA;GAaA,SAAS,wBACP,OAAO,SACP,SAIA,QAAQ,wBACN,4BAA4B,OAAU,CACzC;GACF,CAAC;EACL,CAAC"}
@@ -13,6 +13,8 @@ function handleSseRun({ runtime, request, agent, input, agentId, debug, logger,
13
13
  runtimeErrorReporter: require_runtime_error_reporter.getRuntimeErrorReporter(runtime),
14
14
  startTime,
15
15
  telemetry: runtime.telemetry,
16
+ keepAliveIntervalSeconds: runtime.sseKeepAliveIntervalSeconds,
17
+ executionSeed: { llmHostClass: agent.modelHostClass ?? "unknown" },
16
18
  observableFactory: () => runtime.runner.run({
17
19
  threadId: input.threadId,
18
20
  agent,
@@ -1 +1 @@
1
- {"version":3,"file":"run.cjs","names":["createSseEventResponse","getRuntimeErrorReporter"],"sources":["../../../../../src/v2/runtime/handlers/sse/run.ts"],"sourcesContent":["import type { AbstractAgent, RunAgentInput } from \"@ag-ui/client\";\nimport type { ResolvedDebugConfig } from \"@copilotkit/shared\";\nimport type { CopilotRuntimeLogger } from \"../../../../v1-deprecated/lib/logger\";\nimport type { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { getRuntimeErrorReporter } from \"../../core/runtime-error-reporter\";\nimport { createSseEventResponse } from \"../shared/sse-response\";\n\ninterface HandleSseRunParams {\n runtime: CopilotRuntimeLike;\n request: Request;\n agent: AbstractAgent;\n input: RunAgentInput;\n agentId: string;\n debug?: ResolvedDebugConfig;\n /** Pre-created logger instance to avoid creating a new pino logger per request. */\n logger?: CopilotRuntimeLogger;\n startTime?: number;\n}\n\nexport function handleSseRun({\n runtime,\n request,\n agent,\n input,\n agentId,\n debug,\n logger,\n startTime,\n}: HandleSseRunParams): Response {\n return createSseEventResponse({\n request,\n debugEventBus: runtime.debugEventBus,\n agentId,\n debug,\n logger,\n runtimeErrorReporter: getRuntimeErrorReporter(runtime),\n startTime,\n telemetry: runtime.telemetry,\n observableFactory: () =>\n runtime.runner.run({\n threadId: input.threadId,\n agent,\n input,\n }),\n });\n}\n"],"mappings":";;;;;AAmBA,SAAgB,aAAa,EAC3B,SACA,SACA,OACA,OACA,SACA,OACA,QACA,aAC+B;AAC/B,QAAOA,4CAAuB;EAC5B;EACA,eAAe,QAAQ;EACvB;EACA;EACA;EACA,sBAAsBC,uDAAwB,QAAQ;EACtD;EACA,WAAW,QAAQ;EACnB,yBACE,QAAQ,OAAO,IAAI;GACjB,UAAU,MAAM;GAChB;GACA;GACD,CAAC;EACL,CAAC"}
1
+ {"version":3,"file":"run.cjs","names":["createSseEventResponse","getRuntimeErrorReporter"],"sources":["../../../../../src/v2/runtime/handlers/sse/run.ts"],"sourcesContent":["import type { AbstractAgent, RunAgentInput } from \"@ag-ui/client\";\nimport type { ResolvedDebugConfig, ModelHostClass } from \"@copilotkit/shared\";\nimport type { CopilotRuntimeLogger } from \"../../../../v1-deprecated/lib/logger\";\nimport type { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { getRuntimeErrorReporter } from \"../../core/runtime-error-reporter\";\nimport { createSseEventResponse } from \"../shared/sse-response\";\n\ninterface HandleSseRunParams {\n runtime: CopilotRuntimeLike;\n request: Request;\n agent: AbstractAgent;\n input: RunAgentInput;\n agentId: string;\n debug?: ResolvedDebugConfig;\n /** Pre-created logger instance to avoid creating a new pino logger per request. */\n logger?: CopilotRuntimeLogger;\n startTime?: number;\n}\n\nexport function handleSseRun({\n runtime,\n request,\n agent,\n input,\n agentId,\n debug,\n logger,\n startTime,\n}: HandleSseRunParams): Response {\n return createSseEventResponse({\n request,\n debugEventBus: runtime.debugEventBus,\n agentId,\n debug,\n logger,\n runtimeErrorReporter: getRuntimeErrorReporter(runtime),\n startTime,\n telemetry: runtime.telemetry,\n keepAliveIntervalSeconds: runtime.sseKeepAliveIntervalSeconds,\n // Read structurally rather than via `instanceof BuiltInAgent`, which would\n // pull the agent module into this handler. Any agent can opt in by\n // exposing the same property.\n executionSeed: {\n llmHostClass:\n (agent as { modelHostClass?: ModelHostClass }).modelHostClass ??\n \"unknown\",\n },\n observableFactory: () =>\n runtime.runner.run({\n threadId: input.threadId,\n agent,\n input,\n }),\n });\n}\n"],"mappings":";;;;;AAmBA,SAAgB,aAAa,EAC3B,SACA,SACA,OACA,OACA,SACA,OACA,QACA,aAC+B;AAC/B,QAAOA,4CAAuB;EAC5B;EACA,eAAe,QAAQ;EACvB;EACA;EACA;EACA,sBAAsBC,uDAAwB,QAAQ;EACtD;EACA,WAAW,QAAQ;EACnB,0BAA0B,QAAQ;EAIlC,eAAe,EACb,cACG,MAA8C,kBAC/C,WACH;EACD,yBACE,QAAQ,OAAO,IAAI;GACjB,UAAU,MAAM;GAChB;GACA;GACD,CAAC;EACL,CAAC"}
@@ -13,6 +13,8 @@ function handleSseRun({ runtime, request, agent, input, agentId, debug, logger,
13
13
  runtimeErrorReporter: getRuntimeErrorReporter(runtime),
14
14
  startTime,
15
15
  telemetry: runtime.telemetry,
16
+ keepAliveIntervalSeconds: runtime.sseKeepAliveIntervalSeconds,
17
+ executionSeed: { llmHostClass: agent.modelHostClass ?? "unknown" },
16
18
  observableFactory: () => runtime.runner.run({
17
19
  threadId: input.threadId,
18
20
  agent,
@@ -1 +1 @@
1
- {"version":3,"file":"run.mjs","names":[],"sources":["../../../../../src/v2/runtime/handlers/sse/run.ts"],"sourcesContent":["import type { AbstractAgent, RunAgentInput } from \"@ag-ui/client\";\nimport type { ResolvedDebugConfig } from \"@copilotkit/shared\";\nimport type { CopilotRuntimeLogger } from \"../../../../v1-deprecated/lib/logger\";\nimport type { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { getRuntimeErrorReporter } from \"../../core/runtime-error-reporter\";\nimport { createSseEventResponse } from \"../shared/sse-response\";\n\ninterface HandleSseRunParams {\n runtime: CopilotRuntimeLike;\n request: Request;\n agent: AbstractAgent;\n input: RunAgentInput;\n agentId: string;\n debug?: ResolvedDebugConfig;\n /** Pre-created logger instance to avoid creating a new pino logger per request. */\n logger?: CopilotRuntimeLogger;\n startTime?: number;\n}\n\nexport function handleSseRun({\n runtime,\n request,\n agent,\n input,\n agentId,\n debug,\n logger,\n startTime,\n}: HandleSseRunParams): Response {\n return createSseEventResponse({\n request,\n debugEventBus: runtime.debugEventBus,\n agentId,\n debug,\n logger,\n runtimeErrorReporter: getRuntimeErrorReporter(runtime),\n startTime,\n telemetry: runtime.telemetry,\n observableFactory: () =>\n runtime.runner.run({\n threadId: input.threadId,\n agent,\n input,\n }),\n });\n}\n"],"mappings":";;;;;AAmBA,SAAgB,aAAa,EAC3B,SACA,SACA,OACA,OACA,SACA,OACA,QACA,aAC+B;AAC/B,QAAO,uBAAuB;EAC5B;EACA,eAAe,QAAQ;EACvB;EACA;EACA;EACA,sBAAsB,wBAAwB,QAAQ;EACtD;EACA,WAAW,QAAQ;EACnB,yBACE,QAAQ,OAAO,IAAI;GACjB,UAAU,MAAM;GAChB;GACA;GACD,CAAC;EACL,CAAC"}
1
+ {"version":3,"file":"run.mjs","names":[],"sources":["../../../../../src/v2/runtime/handlers/sse/run.ts"],"sourcesContent":["import type { AbstractAgent, RunAgentInput } from \"@ag-ui/client\";\nimport type { ResolvedDebugConfig, ModelHostClass } from \"@copilotkit/shared\";\nimport type { CopilotRuntimeLogger } from \"../../../../v1-deprecated/lib/logger\";\nimport type { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { getRuntimeErrorReporter } from \"../../core/runtime-error-reporter\";\nimport { createSseEventResponse } from \"../shared/sse-response\";\n\ninterface HandleSseRunParams {\n runtime: CopilotRuntimeLike;\n request: Request;\n agent: AbstractAgent;\n input: RunAgentInput;\n agentId: string;\n debug?: ResolvedDebugConfig;\n /** Pre-created logger instance to avoid creating a new pino logger per request. */\n logger?: CopilotRuntimeLogger;\n startTime?: number;\n}\n\nexport function handleSseRun({\n runtime,\n request,\n agent,\n input,\n agentId,\n debug,\n logger,\n startTime,\n}: HandleSseRunParams): Response {\n return createSseEventResponse({\n request,\n debugEventBus: runtime.debugEventBus,\n agentId,\n debug,\n logger,\n runtimeErrorReporter: getRuntimeErrorReporter(runtime),\n startTime,\n telemetry: runtime.telemetry,\n keepAliveIntervalSeconds: runtime.sseKeepAliveIntervalSeconds,\n // Read structurally rather than via `instanceof BuiltInAgent`, which would\n // pull the agent module into this handler. Any agent can opt in by\n // exposing the same property.\n executionSeed: {\n llmHostClass:\n (agent as { modelHostClass?: ModelHostClass }).modelHostClass ??\n \"unknown\",\n },\n observableFactory: () =>\n runtime.runner.run({\n threadId: input.threadId,\n agent,\n input,\n }),\n });\n}\n"],"mappings":";;;;;AAmBA,SAAgB,aAAa,EAC3B,SACA,SACA,OACA,OACA,SACA,OACA,QACA,aAC+B;AAC/B,QAAO,uBAAuB;EAC5B;EACA,eAAe,QAAQ;EACvB;EACA;EACA;EACA,sBAAsB,wBAAwB,QAAQ;EACtD;EACA,WAAW,QAAQ;EACnB,0BAA0B,QAAQ;EAIlC,eAAe,EACb,cACG,MAA8C,kBAC/C,WACH;EACD,yBACE,QAAQ,OAAO,IAAI;GACjB,UAAU,MAAM;GAChB;GACA;GACD,CAAC;EACL,CAAC"}
@@ -1,11 +1,11 @@
1
1
 
2
2
  import { TranscribeFileOptions, TranscriptionService } from "./transcription-service/transcription-service.cjs";
3
3
  import { AgentRunner, AgentRunnerConnectRequest, AgentRunnerIsRunningRequest, AgentRunnerRunRequest, AgentRunnerStopRequest, LocalThreadEndpointRecord, LocalThreadEndpointRunner, supportsLocalThreadEndpoints } from "./runner/agent-runner.cjs";
4
- import { CopilotRuntimeLearningConfig, CopilotRuntimeLearningContext, CopilotRuntimeUser, GetLearningContainerId, LearningContainerSelectorInput } from "./core/learning.cjs";
5
4
  import { GetLearnedSkillsSnapshotRequest, LearnedSkillsError, LearnedSkillsErrorCode, LearnedSkillsSnapshotResult } from "./intelligence-platform/learned-skills.cjs";
6
- import { CopilotKitIntelligence, CopilotKitIntelligenceConfig, CreateThreadRequest, ListThreadsResponse, SubscribeToThreadsRequest, SubscribeToThreadsResponse, ThreadSummary, UpdateThreadRequest } from "./intelligence-platform/client.cjs";
7
5
  import "./intelligence-platform/index.cjs";
8
6
  import { AgentFactoryContext, AgentsConfig, AgentsFactory, CopilotIntelligenceRuntime, CopilotIntelligenceRuntimeLike, CopilotIntelligenceRuntimeOptions, CopilotRuntime, CopilotRuntimeConstructor, CopilotRuntimeLike, CopilotRuntimeMemoryConfig, CopilotRuntimeOptions, CopilotSseRuntime, CopilotSseRuntimeLike, CopilotSseRuntimeOptions, IdentifyUserCallback, McpAppsConfig, McpAppsServerConfig, MemoryAccess, MemoryConsumer, MemoryGrant, OpenGenerativeUIConfig, OpenGenerativeUIOptions, RuntimeWithDeclaredChannels, VERSION, isA2UIEnabled, isIntelligenceRuntime, resolveAgents } from "./core/runtime.cjs";
7
+ import { CopilotRuntimeLearningConfig, CopilotRuntimeLearningContext, CopilotRuntimeUser, GetLearningContainerId, LearningContainerSelectorInput } from "./core/learning.cjs";
8
+ import { CopilotKitIntelligence, CopilotKitIntelligenceConfig, CreateThreadRequest, ListThreadsResponse, SubscribeToThreadsRequest, SubscribeToThreadsResponse, ThreadSummary, UpdateThreadRequest } from "./intelligence-platform/client.cjs";
9
9
  import { CopilotCorsConfig } from "./core/fetch-cors.cjs";
10
10
  import { CopilotRuntimeHooks, ErrorHookContext, HandlerHookContext, HookContext, ResponseHookContext, RouteInfo } from "./core/hooks.cjs";
11
11
  import { ChannelStatus, ChannelsControl } from "./core/channel-manager.cjs";
@@ -16,7 +16,7 @@ import { createCopilotEndpointSingleRouteExpress } from "./endpoints/express-sin
16
16
  import "./endpoints/index.cjs";
17
17
  import { InMemoryAgentRunner, InMemoryAgentRunnerOptions, InMemoryLimits, InMemoryThread, ɵBoundedThreadStore, ɵGLOBAL_STORE, ɵINMEMORY_DEFAULTS, ɵestimateBytes, ɵnormalizeLimits } from "./runner/in-memory.cjs";
18
18
  import { IntelligenceAgentRunner, IntelligenceAgentRunnerOptions, RunnerStartupBoundary } from "./runner/intelligence.cjs";
19
- import { finalizeRunEvents } from "./runner/index.cjs";
19
+ import { FinalizeRunOptions, RunEventFinalizer, createRunEventFinalizer, finalizeRunEvents } from "./runner/index.cjs";
20
20
  import { CopilotRuntimeFetchHandler, CopilotRuntimeFetchHandlerWithChannels, CopilotRuntimeHandlerOptions, createCopilotRuntimeHandler } from "./core/fetch-handler.cjs";
21
21
  import { MCPClient, MCPTransport } from "@ai-sdk/mcp";
22
22
 
@@ -1,11 +1,11 @@
1
1
 
2
2
  import { TranscribeFileOptions, TranscriptionService } from "./transcription-service/transcription-service.mjs";
3
3
  import { AgentRunner, AgentRunnerConnectRequest, AgentRunnerIsRunningRequest, AgentRunnerRunRequest, AgentRunnerStopRequest, LocalThreadEndpointRecord, LocalThreadEndpointRunner, supportsLocalThreadEndpoints } from "./runner/agent-runner.mjs";
4
- import { CopilotRuntimeLearningConfig, CopilotRuntimeLearningContext, CopilotRuntimeUser, GetLearningContainerId, LearningContainerSelectorInput } from "./core/learning.mjs";
5
4
  import { GetLearnedSkillsSnapshotRequest, LearnedSkillsError, LearnedSkillsErrorCode, LearnedSkillsSnapshotResult } from "./intelligence-platform/learned-skills.mjs";
6
- import { CopilotKitIntelligence, CopilotKitIntelligenceConfig, CreateThreadRequest, ListThreadsResponse, SubscribeToThreadsRequest, SubscribeToThreadsResponse, ThreadSummary, UpdateThreadRequest } from "./intelligence-platform/client.mjs";
7
5
  import "./intelligence-platform/index.mjs";
8
6
  import { AgentFactoryContext, AgentsConfig, AgentsFactory, CopilotIntelligenceRuntime, CopilotIntelligenceRuntimeLike, CopilotIntelligenceRuntimeOptions, CopilotRuntime, CopilotRuntimeConstructor, CopilotRuntimeLike, CopilotRuntimeMemoryConfig, CopilotRuntimeOptions, CopilotSseRuntime, CopilotSseRuntimeLike, CopilotSseRuntimeOptions, IdentifyUserCallback, McpAppsConfig, McpAppsServerConfig, MemoryAccess, MemoryConsumer, MemoryGrant, OpenGenerativeUIConfig, OpenGenerativeUIOptions, RuntimeWithDeclaredChannels, VERSION, isA2UIEnabled, isIntelligenceRuntime, resolveAgents } from "./core/runtime.mjs";
7
+ import { CopilotRuntimeLearningConfig, CopilotRuntimeLearningContext, CopilotRuntimeUser, GetLearningContainerId, LearningContainerSelectorInput } from "./core/learning.mjs";
8
+ import { CopilotKitIntelligence, CopilotKitIntelligenceConfig, CreateThreadRequest, ListThreadsResponse, SubscribeToThreadsRequest, SubscribeToThreadsResponse, ThreadSummary, UpdateThreadRequest } from "./intelligence-platform/client.mjs";
9
9
  import { CopilotCorsConfig } from "./core/fetch-cors.mjs";
10
10
  import { CopilotRuntimeHooks, ErrorHookContext, HandlerHookContext, HookContext, ResponseHookContext, RouteInfo } from "./core/hooks.mjs";
11
11
  import { ChannelStatus, ChannelsControl } from "./core/channel-manager.mjs";
@@ -16,7 +16,7 @@ import { createCopilotEndpointSingleRouteExpress } from "./endpoints/express-sin
16
16
  import "./endpoints/index.mjs";
17
17
  import { InMemoryAgentRunner, InMemoryAgentRunnerOptions, InMemoryLimits, InMemoryThread, ɵBoundedThreadStore, ɵGLOBAL_STORE, ɵINMEMORY_DEFAULTS, ɵestimateBytes, ɵnormalizeLimits } from "./runner/in-memory.mjs";
18
18
  import { IntelligenceAgentRunner, IntelligenceAgentRunnerOptions, RunnerStartupBoundary } from "./runner/intelligence.mjs";
19
- import { finalizeRunEvents } from "./runner/index.mjs";
19
+ import { FinalizeRunOptions, RunEventFinalizer, createRunEventFinalizer, finalizeRunEvents } from "./runner/index.mjs";
20
20
  import { CopilotRuntimeFetchHandler, CopilotRuntimeFetchHandlerWithChannels, CopilotRuntimeHandlerOptions, createCopilotRuntimeHandler } from "./core/fetch-handler.mjs";
21
21
  import { MCPClient, MCPTransport } from "@ai-sdk/mcp";
22
22
 
@@ -1,6 +1,6 @@
1
1
 
2
- import { GetLearningContainerId } from "../core/learning.cjs";
3
2
  import { GetLearnedSkillsSnapshotRequest, LearnedSkillsSnapshotResult } from "./learned-skills.cjs";
3
+ import { GetLearningContainerId } from "../core/learning.cjs";
4
4
  import { InspectorLearningRequestV1, InspectorLearningSnapshotV1, InspectorMetadataV1, RuntimeEntitlementResponse } from "@copilotkit/shared";
5
5
 
6
6
  //#region src/v2/runtime/intelligence-platform/client.d.ts
@@ -1,6 +1,6 @@
1
1
 
2
- import { GetLearningContainerId } from "../core/learning.mjs";
3
2
  import { GetLearnedSkillsSnapshotRequest, LearnedSkillsSnapshotResult } from "./learned-skills.mjs";
3
+ import { GetLearningContainerId } from "../core/learning.mjs";
4
4
  import { InspectorLearningRequestV1, InspectorLearningSnapshotV1, InspectorMetadataV1, RuntimeEntitlementResponse } from "@copilotkit/shared";
5
5
 
6
6
  //#region src/v2/runtime/intelligence-platform/client.d.ts
@@ -0,0 +1,132 @@
1
+ require("reflect-metadata");
2
+ const require_runtime = require('../../../../_virtual/_rolldown/runtime.cjs');
3
+ const require_errors = require('./errors.cjs');
4
+ let yauzl = require("yauzl");
5
+
6
+ //#region src/v2/runtime/intelligence-platform/skill-registry/archive.ts
7
+ /** Internal corruption bounds, including manifest and directory entries. */
8
+ const MAX_ARCHIVE_ENTRIES = 1e3;
9
+ const MAX_SNAPSHOT_BYTES = 32 * 1024 * 1024;
10
+ function safeRelativePath(path) {
11
+ return path.length > 0 && !/[\\\x00-\x1f\x7f]/.test(path) && !/^[a-z]:/i.test(path) && path.split("/").every((part) => part !== "" && part !== "." && part !== "..");
12
+ }
13
+ /** Decode only the listed ZIP namespace. No filesystem is involved. */
14
+ function readArchive(bytes, signal) {
15
+ return new Promise((resolve, reject) => {
16
+ let archive;
17
+ let stream;
18
+ let settled = false;
19
+ const finish = (error) => {
20
+ if (settled) return;
21
+ settled = true;
22
+ signal?.removeEventListener("abort", abort);
23
+ stream?.destroy();
24
+ archive?.close();
25
+ if (error !== void 0) reject(error);
26
+ else resolve(files);
27
+ };
28
+ const abort = () => finish(signal?.reason ?? require_errors.invalidSnapshot());
29
+ const files = /* @__PURE__ */ new Map();
30
+ const names = /* @__PURE__ */ new Set();
31
+ let decodedBytes = 0;
32
+ signal?.addEventListener("abort", abort, { once: true });
33
+ if (signal?.aborted) {
34
+ abort();
35
+ return;
36
+ }
37
+ (0, yauzl.fromBuffer)(bytes, {
38
+ lazyEntries: true,
39
+ decodeStrings: false,
40
+ validateEntrySizes: true,
41
+ autoClose: false
42
+ }, (error, zip) => {
43
+ if (error) {
44
+ finish(require_errors.invalidSnapshot(error));
45
+ return;
46
+ }
47
+ archive = zip;
48
+ if (settled) {
49
+ zip.close();
50
+ return;
51
+ }
52
+ zip.on("error", (cause) => finish(require_errors.invalidSnapshot(cause)));
53
+ zip.on("end", () => finish());
54
+ if (zip.entryCount > MAX_ARCHIVE_ENTRIES) {
55
+ finish(require_errors.invalidSnapshot());
56
+ return;
57
+ }
58
+ zip.on("entry", (entry) => {
59
+ try {
60
+ const rawName = entry.fileName;
61
+ if (!Buffer.isBuffer(rawName)) throw require_errors.invalidSnapshot();
62
+ const name = new TextDecoder("utf-8", {
63
+ fatal: true,
64
+ ignoreBOM: true
65
+ }).decode(rawName);
66
+ const directory = name.endsWith("/");
67
+ if (!safeRelativePath(directory ? name.slice(0, -1) : name) || names.has(name)) throw require_errors.invalidSnapshot();
68
+ names.add(name);
69
+ const fileType = entry.externalFileAttributes >>> 16 & 61440;
70
+ if (fileType !== 0 && fileType !== (directory ? 16384 : 32768)) throw require_errors.invalidSnapshot();
71
+ if (entry.isEncrypted() || ![0, 8].includes(entry.compressionMethod)) throw require_errors.invalidSnapshot();
72
+ if (!Number.isSafeInteger(entry.uncompressedSize) || entry.uncompressedSize < 0) throw require_errors.invalidSnapshot();
73
+ decodedBytes += entry.uncompressedSize;
74
+ if (decodedBytes > MAX_SNAPSHOT_BYTES || directory && entry.uncompressedSize !== 0) throw require_errors.invalidSnapshot();
75
+ const local = entry.relativeOffsetOfLocalHeader;
76
+ if (local < 0 || local + 30 > bytes.length || bytes.readUInt32LE(local) !== 67324752) throw require_errors.invalidSnapshot();
77
+ if (bytes.readUInt16LE(local + 6) !== entry.generalPurposeBitFlag || bytes.readUInt16LE(local + 8) !== entry.compressionMethod) throw require_errors.invalidSnapshot();
78
+ const localNameLength = bytes.readUInt16LE(local + 26);
79
+ const localExtraLength = bytes.readUInt16LE(local + 28);
80
+ if (local + 30 + localNameLength + localExtraLength + entry.compressedSize > bytes.length || !bytes.subarray(local + 30, local + 30 + localNameLength).equals(rawName)) throw require_errors.invalidSnapshot();
81
+ if (!(entry.generalPurposeBitFlag & 8) && (bytes.readUInt32LE(local + 18) !== entry.compressedSize || bytes.readUInt32LE(local + 22) !== entry.uncompressedSize)) throw require_errors.invalidSnapshot();
82
+ if (directory) {
83
+ zip.readEntry();
84
+ return;
85
+ }
86
+ zip.openReadStream(entry, (readError, readStream) => {
87
+ if (readError) {
88
+ finish(require_errors.invalidSnapshot(readError));
89
+ return;
90
+ }
91
+ stream = readStream;
92
+ if (settled) {
93
+ readStream.destroy();
94
+ return;
95
+ }
96
+ const chunks = [];
97
+ let size = 0;
98
+ readStream.on("error", (cause) => finish(require_errors.invalidSnapshot(cause)));
99
+ readStream.on("data", (chunk) => {
100
+ size += chunk.length;
101
+ if (size > entry.uncompressedSize || size > MAX_SNAPSHOT_BYTES) {
102
+ finish(require_errors.invalidSnapshot());
103
+ return;
104
+ }
105
+ chunks.push(chunk);
106
+ });
107
+ readStream.on("end", () => {
108
+ if (settled) return;
109
+ if (size !== entry.uncompressedSize) {
110
+ finish(require_errors.invalidSnapshot());
111
+ return;
112
+ }
113
+ files.set(name, Buffer.concat(chunks, size));
114
+ stream = void 0;
115
+ zip.readEntry();
116
+ });
117
+ });
118
+ } catch (cause) {
119
+ finish(require_errors.invalidSnapshot(cause));
120
+ }
121
+ });
122
+ zip.readEntry();
123
+ });
124
+ });
125
+ }
126
+
127
+ //#endregion
128
+ exports.MAX_ARCHIVE_ENTRIES = MAX_ARCHIVE_ENTRIES;
129
+ exports.MAX_SNAPSHOT_BYTES = MAX_SNAPSHOT_BYTES;
130
+ exports.readArchive = readArchive;
131
+ exports.safeRelativePath = safeRelativePath;
132
+ //# sourceMappingURL=archive.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.cjs","names":["invalidSnapshot"],"sources":["../../../../../src/v2/runtime/intelligence-platform/skill-registry/archive.ts"],"sourcesContent":["import { fromBuffer } from \"yauzl\";\nimport type { Entry, ZipFile } from \"yauzl\";\nimport type { Readable } from \"node:stream\";\nimport { invalidSnapshot } from \"./errors\";\n\n/** Internal corruption bounds, including manifest and directory entries. */\nexport const MAX_ARCHIVE_ENTRIES = 1_000;\nexport const MAX_SNAPSHOT_BYTES = 32 * 1024 * 1024;\n\nexport function safeRelativePath(path: string): boolean {\n return (\n path.length > 0 &&\n // Reject control bytes in archive paths, including NUL and DEL.\n // eslint-disable-next-line no-control-regex\n !/[\\\\\\x00-\\x1f\\x7f]/.test(path) &&\n !/^[a-z]:/i.test(path) &&\n path\n .split(\"/\")\n .every((part) => part !== \"\" && part !== \".\" && part !== \"..\")\n );\n}\n\n/** Decode only the listed ZIP namespace. No filesystem is involved. */\nexport function readArchive(\n bytes: Buffer,\n signal?: AbortSignal,\n): Promise<Map<string, Buffer>> {\n return new Promise((resolve, reject) => {\n let archive: ZipFile | undefined;\n let stream: Readable | undefined;\n let settled = false;\n const finish = (error?: unknown) => {\n if (settled) return;\n settled = true;\n signal?.removeEventListener(\"abort\", abort);\n stream?.destroy();\n archive?.close();\n if (error !== undefined) reject(error);\n else resolve(files);\n };\n const abort = () => finish(signal?.reason ?? invalidSnapshot());\n const files = new Map<string, Buffer>();\n const names = new Set<string>();\n let decodedBytes = 0;\n signal?.addEventListener(\"abort\", abort, { once: true });\n if (signal?.aborted) {\n abort();\n return;\n }\n fromBuffer(\n bytes,\n {\n lazyEntries: true,\n decodeStrings: false,\n validateEntrySizes: true,\n autoClose: false,\n },\n (error, zip) => {\n if (error) {\n finish(invalidSnapshot(error));\n return;\n }\n archive = zip;\n if (settled) {\n zip.close();\n return;\n }\n zip.on(\"error\", (cause: unknown) => finish(invalidSnapshot(cause)));\n zip.on(\"end\", () => finish());\n if (zip.entryCount > MAX_ARCHIVE_ENTRIES) {\n finish(invalidSnapshot());\n return;\n }\n zip.on(\"entry\", (entry: Entry) => {\n try {\n // decodeStrings:false preserves raw UTF-8 names instead of normalizing\n // backslashes or consulting alternate Unicode-path extra fields.\n const rawName: unknown = entry.fileName;\n if (!Buffer.isBuffer(rawName)) throw invalidSnapshot();\n const name = new TextDecoder(\"utf-8\", {\n fatal: true,\n ignoreBOM: true,\n }).decode(rawName);\n const directory = name.endsWith(\"/\");\n if (\n !safeRelativePath(directory ? name.slice(0, -1) : name) ||\n names.has(name)\n )\n throw invalidSnapshot();\n names.add(name);\n const fileType = (entry.externalFileAttributes >>> 16) & 0o170000;\n if (\n fileType !== 0 &&\n fileType !== (directory ? 0o040000 : 0o100000)\n )\n throw invalidSnapshot();\n if (\n entry.isEncrypted() ||\n ![0, 8].includes(entry.compressionMethod)\n )\n throw invalidSnapshot();\n if (\n !Number.isSafeInteger(entry.uncompressedSize) ||\n entry.uncompressedSize < 0\n )\n throw invalidSnapshot();\n decodedBytes += entry.uncompressedSize;\n if (\n decodedBytes > MAX_SNAPSHOT_BYTES ||\n (directory && entry.uncompressedSize !== 0)\n )\n throw invalidSnapshot();\n // Require the central directory and the local entry to name the same\n // bytes. ZIP data descriptors may leave local sizes unset.\n const local = entry.relativeOffsetOfLocalHeader;\n if (\n local < 0 ||\n local + 30 > bytes.length ||\n bytes.readUInt32LE(local) !== 0x04034b50\n )\n throw invalidSnapshot();\n if (\n bytes.readUInt16LE(local + 6) !== entry.generalPurposeBitFlag ||\n bytes.readUInt16LE(local + 8) !== entry.compressionMethod\n )\n throw invalidSnapshot();\n const localNameLength = bytes.readUInt16LE(local + 26);\n const localExtraLength = bytes.readUInt16LE(local + 28);\n const dataStart = local + 30 + localNameLength + localExtraLength;\n if (\n dataStart + entry.compressedSize > bytes.length ||\n !bytes\n .subarray(local + 30, local + 30 + localNameLength)\n .equals(rawName)\n )\n throw invalidSnapshot();\n if (\n !(entry.generalPurposeBitFlag & 8) &&\n (bytes.readUInt32LE(local + 18) !== entry.compressedSize ||\n bytes.readUInt32LE(local + 22) !== entry.uncompressedSize)\n )\n throw invalidSnapshot();\n if (directory) {\n zip.readEntry();\n return;\n }\n zip.openReadStream(entry, (readError, readStream) => {\n if (readError) {\n finish(invalidSnapshot(readError));\n return;\n }\n stream = readStream;\n if (settled) {\n readStream.destroy();\n return;\n }\n const chunks: Buffer[] = [];\n let size = 0;\n readStream.on(\"error\", (cause: unknown) =>\n finish(invalidSnapshot(cause)),\n );\n readStream.on(\"data\", (chunk: Buffer) => {\n size += chunk.length;\n if (\n size > entry.uncompressedSize ||\n size > MAX_SNAPSHOT_BYTES\n ) {\n finish(invalidSnapshot());\n return;\n }\n chunks.push(chunk);\n });\n readStream.on(\"end\", () => {\n if (settled) return;\n if (size !== entry.uncompressedSize) {\n finish(invalidSnapshot());\n return;\n }\n files.set(name, Buffer.concat(chunks, size));\n stream = undefined;\n zip.readEntry();\n });\n });\n } catch (cause) {\n finish(invalidSnapshot(cause));\n }\n });\n zip.readEntry();\n },\n );\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+
2
+ //#region src/v2/runtime/intelligence-platform/skill-registry/archive.d.ts
3
+ /** Internal corruption bounds, including manifest and directory entries. */
4
+ declare const MAX_ARCHIVE_ENTRIES = 1000;
5
+ declare const MAX_SNAPSHOT_BYTES: number;
6
+ declare function safeRelativePath(path: string): boolean;
7
+ /** Decode only the listed ZIP namespace. No filesystem is involved. */
8
+ declare function readArchive(bytes: Buffer, signal?: AbortSignal): Promise<Map<string, Buffer>>;
9
+ //#endregion
10
+ export { MAX_ARCHIVE_ENTRIES, MAX_SNAPSHOT_BYTES, readArchive, safeRelativePath };
11
+ //# sourceMappingURL=archive.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.cts","names":[],"sources":["../../../../../src/v2/runtime/intelligence-platform/skill-registry/archive.ts"],"mappings":";;;cAMa,mBAAA;AAAA,cACA,kBAAA;AAAA,iBAEG,gBAAA,CAAiB,IAAA;;iBAcjB,WAAA,CACd,KAAA,EAAO,MAAA,EACP,MAAA,GAAS,WAAA,GACR,OAAA,CAAQ,GAAA,SAAY,MAAA"}
@@ -0,0 +1,11 @@
1
+
2
+ //#region src/v2/runtime/intelligence-platform/skill-registry/archive.d.ts
3
+ /** Internal corruption bounds, including manifest and directory entries. */
4
+ declare const MAX_ARCHIVE_ENTRIES = 1000;
5
+ declare const MAX_SNAPSHOT_BYTES: number;
6
+ declare function safeRelativePath(path: string): boolean;
7
+ /** Decode only the listed ZIP namespace. No filesystem is involved. */
8
+ declare function readArchive(bytes: Buffer, signal?: AbortSignal): Promise<Map<string, Buffer>>;
9
+ //#endregion
10
+ export { MAX_ARCHIVE_ENTRIES, MAX_SNAPSHOT_BYTES, readArchive, safeRelativePath };
11
+ //# sourceMappingURL=archive.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.mts","names":[],"sources":["../../../../../src/v2/runtime/intelligence-platform/skill-registry/archive.ts"],"mappings":";;;cAMa,mBAAA;AAAA,cACA,kBAAA;AAAA,iBAEG,gBAAA,CAAiB,IAAA;;iBAcjB,WAAA,CACd,KAAA,EAAO,MAAA,EACP,MAAA,GAAS,WAAA,GACR,OAAA,CAAQ,GAAA,SAAY,MAAA"}
@@ -0,0 +1,128 @@
1
+ import "reflect-metadata";
2
+ import { invalidSnapshot } from "./errors.mjs";
3
+ import { fromBuffer } from "yauzl";
4
+
5
+ //#region src/v2/runtime/intelligence-platform/skill-registry/archive.ts
6
+ /** Internal corruption bounds, including manifest and directory entries. */
7
+ const MAX_ARCHIVE_ENTRIES = 1e3;
8
+ const MAX_SNAPSHOT_BYTES = 32 * 1024 * 1024;
9
+ function safeRelativePath(path) {
10
+ return path.length > 0 && !/[\\\x00-\x1f\x7f]/.test(path) && !/^[a-z]:/i.test(path) && path.split("/").every((part) => part !== "" && part !== "." && part !== "..");
11
+ }
12
+ /** Decode only the listed ZIP namespace. No filesystem is involved. */
13
+ function readArchive(bytes, signal) {
14
+ return new Promise((resolve, reject) => {
15
+ let archive;
16
+ let stream;
17
+ let settled = false;
18
+ const finish = (error) => {
19
+ if (settled) return;
20
+ settled = true;
21
+ signal?.removeEventListener("abort", abort);
22
+ stream?.destroy();
23
+ archive?.close();
24
+ if (error !== void 0) reject(error);
25
+ else resolve(files);
26
+ };
27
+ const abort = () => finish(signal?.reason ?? invalidSnapshot());
28
+ const files = /* @__PURE__ */ new Map();
29
+ const names = /* @__PURE__ */ new Set();
30
+ let decodedBytes = 0;
31
+ signal?.addEventListener("abort", abort, { once: true });
32
+ if (signal?.aborted) {
33
+ abort();
34
+ return;
35
+ }
36
+ fromBuffer(bytes, {
37
+ lazyEntries: true,
38
+ decodeStrings: false,
39
+ validateEntrySizes: true,
40
+ autoClose: false
41
+ }, (error, zip) => {
42
+ if (error) {
43
+ finish(invalidSnapshot(error));
44
+ return;
45
+ }
46
+ archive = zip;
47
+ if (settled) {
48
+ zip.close();
49
+ return;
50
+ }
51
+ zip.on("error", (cause) => finish(invalidSnapshot(cause)));
52
+ zip.on("end", () => finish());
53
+ if (zip.entryCount > MAX_ARCHIVE_ENTRIES) {
54
+ finish(invalidSnapshot());
55
+ return;
56
+ }
57
+ zip.on("entry", (entry) => {
58
+ try {
59
+ const rawName = entry.fileName;
60
+ if (!Buffer.isBuffer(rawName)) throw invalidSnapshot();
61
+ const name = new TextDecoder("utf-8", {
62
+ fatal: true,
63
+ ignoreBOM: true
64
+ }).decode(rawName);
65
+ const directory = name.endsWith("/");
66
+ if (!safeRelativePath(directory ? name.slice(0, -1) : name) || names.has(name)) throw invalidSnapshot();
67
+ names.add(name);
68
+ const fileType = entry.externalFileAttributes >>> 16 & 61440;
69
+ if (fileType !== 0 && fileType !== (directory ? 16384 : 32768)) throw invalidSnapshot();
70
+ if (entry.isEncrypted() || ![0, 8].includes(entry.compressionMethod)) throw invalidSnapshot();
71
+ if (!Number.isSafeInteger(entry.uncompressedSize) || entry.uncompressedSize < 0) throw invalidSnapshot();
72
+ decodedBytes += entry.uncompressedSize;
73
+ if (decodedBytes > MAX_SNAPSHOT_BYTES || directory && entry.uncompressedSize !== 0) throw invalidSnapshot();
74
+ const local = entry.relativeOffsetOfLocalHeader;
75
+ if (local < 0 || local + 30 > bytes.length || bytes.readUInt32LE(local) !== 67324752) throw invalidSnapshot();
76
+ if (bytes.readUInt16LE(local + 6) !== entry.generalPurposeBitFlag || bytes.readUInt16LE(local + 8) !== entry.compressionMethod) throw invalidSnapshot();
77
+ const localNameLength = bytes.readUInt16LE(local + 26);
78
+ const localExtraLength = bytes.readUInt16LE(local + 28);
79
+ if (local + 30 + localNameLength + localExtraLength + entry.compressedSize > bytes.length || !bytes.subarray(local + 30, local + 30 + localNameLength).equals(rawName)) throw invalidSnapshot();
80
+ if (!(entry.generalPurposeBitFlag & 8) && (bytes.readUInt32LE(local + 18) !== entry.compressedSize || bytes.readUInt32LE(local + 22) !== entry.uncompressedSize)) throw invalidSnapshot();
81
+ if (directory) {
82
+ zip.readEntry();
83
+ return;
84
+ }
85
+ zip.openReadStream(entry, (readError, readStream) => {
86
+ if (readError) {
87
+ finish(invalidSnapshot(readError));
88
+ return;
89
+ }
90
+ stream = readStream;
91
+ if (settled) {
92
+ readStream.destroy();
93
+ return;
94
+ }
95
+ const chunks = [];
96
+ let size = 0;
97
+ readStream.on("error", (cause) => finish(invalidSnapshot(cause)));
98
+ readStream.on("data", (chunk) => {
99
+ size += chunk.length;
100
+ if (size > entry.uncompressedSize || size > MAX_SNAPSHOT_BYTES) {
101
+ finish(invalidSnapshot());
102
+ return;
103
+ }
104
+ chunks.push(chunk);
105
+ });
106
+ readStream.on("end", () => {
107
+ if (settled) return;
108
+ if (size !== entry.uncompressedSize) {
109
+ finish(invalidSnapshot());
110
+ return;
111
+ }
112
+ files.set(name, Buffer.concat(chunks, size));
113
+ stream = void 0;
114
+ zip.readEntry();
115
+ });
116
+ });
117
+ } catch (cause) {
118
+ finish(invalidSnapshot(cause));
119
+ }
120
+ });
121
+ zip.readEntry();
122
+ });
123
+ });
124
+ }
125
+
126
+ //#endregion
127
+ export { MAX_ARCHIVE_ENTRIES, MAX_SNAPSHOT_BYTES, readArchive, safeRelativePath };
128
+ //# sourceMappingURL=archive.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.mjs","names":[],"sources":["../../../../../src/v2/runtime/intelligence-platform/skill-registry/archive.ts"],"sourcesContent":["import { fromBuffer } from \"yauzl\";\nimport type { Entry, ZipFile } from \"yauzl\";\nimport type { Readable } from \"node:stream\";\nimport { invalidSnapshot } from \"./errors\";\n\n/** Internal corruption bounds, including manifest and directory entries. */\nexport const MAX_ARCHIVE_ENTRIES = 1_000;\nexport const MAX_SNAPSHOT_BYTES = 32 * 1024 * 1024;\n\nexport function safeRelativePath(path: string): boolean {\n return (\n path.length > 0 &&\n // Reject control bytes in archive paths, including NUL and DEL.\n // eslint-disable-next-line no-control-regex\n !/[\\\\\\x00-\\x1f\\x7f]/.test(path) &&\n !/^[a-z]:/i.test(path) &&\n path\n .split(\"/\")\n .every((part) => part !== \"\" && part !== \".\" && part !== \"..\")\n );\n}\n\n/** Decode only the listed ZIP namespace. No filesystem is involved. */\nexport function readArchive(\n bytes: Buffer,\n signal?: AbortSignal,\n): Promise<Map<string, Buffer>> {\n return new Promise((resolve, reject) => {\n let archive: ZipFile | undefined;\n let stream: Readable | undefined;\n let settled = false;\n const finish = (error?: unknown) => {\n if (settled) return;\n settled = true;\n signal?.removeEventListener(\"abort\", abort);\n stream?.destroy();\n archive?.close();\n if (error !== undefined) reject(error);\n else resolve(files);\n };\n const abort = () => finish(signal?.reason ?? invalidSnapshot());\n const files = new Map<string, Buffer>();\n const names = new Set<string>();\n let decodedBytes = 0;\n signal?.addEventListener(\"abort\", abort, { once: true });\n if (signal?.aborted) {\n abort();\n return;\n }\n fromBuffer(\n bytes,\n {\n lazyEntries: true,\n decodeStrings: false,\n validateEntrySizes: true,\n autoClose: false,\n },\n (error, zip) => {\n if (error) {\n finish(invalidSnapshot(error));\n return;\n }\n archive = zip;\n if (settled) {\n zip.close();\n return;\n }\n zip.on(\"error\", (cause: unknown) => finish(invalidSnapshot(cause)));\n zip.on(\"end\", () => finish());\n if (zip.entryCount > MAX_ARCHIVE_ENTRIES) {\n finish(invalidSnapshot());\n return;\n }\n zip.on(\"entry\", (entry: Entry) => {\n try {\n // decodeStrings:false preserves raw UTF-8 names instead of normalizing\n // backslashes or consulting alternate Unicode-path extra fields.\n const rawName: unknown = entry.fileName;\n if (!Buffer.isBuffer(rawName)) throw invalidSnapshot();\n const name = new TextDecoder(\"utf-8\", {\n fatal: true,\n ignoreBOM: true,\n }).decode(rawName);\n const directory = name.endsWith(\"/\");\n if (\n !safeRelativePath(directory ? name.slice(0, -1) : name) ||\n names.has(name)\n )\n throw invalidSnapshot();\n names.add(name);\n const fileType = (entry.externalFileAttributes >>> 16) & 0o170000;\n if (\n fileType !== 0 &&\n fileType !== (directory ? 0o040000 : 0o100000)\n )\n throw invalidSnapshot();\n if (\n entry.isEncrypted() ||\n ![0, 8].includes(entry.compressionMethod)\n )\n throw invalidSnapshot();\n if (\n !Number.isSafeInteger(entry.uncompressedSize) ||\n entry.uncompressedSize < 0\n )\n throw invalidSnapshot();\n decodedBytes += entry.uncompressedSize;\n if (\n decodedBytes > MAX_SNAPSHOT_BYTES ||\n (directory && entry.uncompressedSize !== 0)\n )\n throw invalidSnapshot();\n // Require the central directory and the local entry to name the same\n // bytes. ZIP data descriptors may leave local sizes unset.\n const local = entry.relativeOffsetOfLocalHeader;\n if (\n local < 0 ||\n local + 30 > bytes.length ||\n bytes.readUInt32LE(local) !== 0x04034b50\n )\n throw invalidSnapshot();\n if (\n bytes.readUInt16LE(local + 6) !== entry.generalPurposeBitFlag ||\n bytes.readUInt16LE(local + 8) !== entry.compressionMethod\n )\n throw invalidSnapshot();\n const localNameLength = bytes.readUInt16LE(local + 26);\n const localExtraLength = bytes.readUInt16LE(local + 28);\n const dataStart = local + 30 + localNameLength + localExtraLength;\n if (\n dataStart + entry.compressedSize > bytes.length ||\n !bytes\n .subarray(local + 30, local + 30 + localNameLength)\n .equals(rawName)\n )\n throw invalidSnapshot();\n if (\n !(entry.generalPurposeBitFlag & 8) &&\n (bytes.readUInt32LE(local + 18) !== entry.compressedSize ||\n bytes.readUInt32LE(local + 22) !== entry.uncompressedSize)\n )\n throw invalidSnapshot();\n if (directory) {\n zip.readEntry();\n return;\n }\n zip.openReadStream(entry, (readError, readStream) => {\n if (readError) {\n finish(invalidSnapshot(readError));\n return;\n }\n stream = readStream;\n if (settled) {\n readStream.destroy();\n return;\n }\n const chunks: Buffer[] = [];\n let size = 0;\n readStream.on(\"error\", (cause: unknown) =>\n finish(invalidSnapshot(cause)),\n );\n readStream.on(\"data\", (chunk: Buffer) => {\n size += chunk.length;\n if (\n size > entry.uncompressedSize ||\n size > MAX_SNAPSHOT_BYTES\n ) {\n finish(invalidSnapshot());\n return;\n }\n chunks.push(chunk);\n });\n readStream.on(\"end\", () => {\n if (settled) return;\n if (size !== entry.uncompressedSize) {\n finish(invalidSnapshot());\n return;\n }\n files.set(name, Buffer.concat(chunks, size));\n stream = undefined;\n zip.readEntry();\n });\n });\n } catch (cause) {\n finish(invalidSnapshot(cause));\n }\n });\n zip.readEntry();\n },\n );\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ require("reflect-metadata");
2
+ const require_learned_skills = require('../learned-skills.cjs');
3
+ const require_client = require('../client.cjs');
4
+
5
+ //#region src/v2/runtime/intelligence-platform/skill-registry/config.ts
6
+ /** Resolve once. Never retain the options object, environment, or a second key. */
7
+ function resolveRegistryConfig(options = {}, environment = process.env) {
8
+ try {
9
+ const containerId = options.containerId ?? environment.CPK_INTELLIGENCE_LEARNING_CONTAINER_ID;
10
+ const revision = options.revision ?? environment.CPK_INTELLIGENCE_SKILLS_REVISION;
11
+ const freshnessWindowMs = options.freshnessWindowMs ?? 5e3;
12
+ const requestTimeoutMs = options.requestTimeoutMs ?? 5e3;
13
+ const debug = options.debug ?? false;
14
+ if (typeof containerId !== "string" || !containerId.trim() || revision !== void 0 && (typeof revision !== "string" || revision.length === 0) || !Number.isSafeInteger(freshnessWindowMs) || freshnessWindowMs < 0 || !Number.isSafeInteger(requestTimeoutMs) || requestTimeoutMs < 1 || requestTimeoutMs > 2147483647 || typeof debug !== "boolean") throw new require_learned_skills.LearnedSkillsError("INVALID_CONFIG", false);
15
+ let client = options.client;
16
+ if (client !== void 0) {
17
+ if (!client || typeof client.getLearnedSkillsSnapshot !== "function") throw new require_learned_skills.LearnedSkillsError("INVALID_CONFIG", false);
18
+ } else {
19
+ const apiKey = options.apiKey ?? environment.CPK_INTELLIGENCE_API_KEY;
20
+ const apiUrl = options.apiUrl ?? environment.INTELLIGENCE_API_URL;
21
+ if (typeof apiKey !== "string" || !apiKey.trim()) throw new require_learned_skills.LearnedSkillsError("INVALID_CONFIG", false);
22
+ if (apiUrl?.trim()) {
23
+ const url = new URL(apiUrl);
24
+ if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new require_learned_skills.LearnedSkillsError("INVALID_CONFIG", false);
25
+ }
26
+ client = new require_client.CopilotKitIntelligence({
27
+ apiKey,
28
+ ...apiUrl !== void 0 ? { apiUrl } : {},
29
+ ...apiUrl?.trim() ? { wsUrl: "wss://realtime.intelligence.copilotkit.ai" } : {}
30
+ });
31
+ }
32
+ return Object.freeze({
33
+ client,
34
+ containerId,
35
+ ...revision !== void 0 ? { revision } : {},
36
+ freshnessWindowMs,
37
+ requestTimeoutMs,
38
+ debug
39
+ });
40
+ } catch (error) {
41
+ if (error instanceof require_learned_skills.LearnedSkillsError) throw error;
42
+ throw new require_learned_skills.LearnedSkillsError("INVALID_CONFIG", false, error);
43
+ }
44
+ }
45
+
46
+ //#endregion
47
+ exports.resolveRegistryConfig = resolveRegistryConfig;
48
+ //# sourceMappingURL=config.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.cjs","names":["SkillDeliveryError","CopilotKitIntelligence"],"sources":["../../../../../src/v2/runtime/intelligence-platform/skill-registry/config.ts"],"sourcesContent":["import { CopilotKitIntelligence } from \"../client\";\nimport { SkillDeliveryError } from \"./errors\";\n\nexport interface SkillRegistryOptions {\n client?: CopilotKitIntelligence;\n apiKey?: string;\n apiUrl?: string;\n containerId?: string;\n revision?: string;\n freshnessWindowMs?: number;\n requestTimeoutMs?: number;\n debug?: boolean;\n}\nexport interface RegistryConfig {\n readonly client: CopilotKitIntelligence;\n readonly containerId: string;\n readonly revision?: string;\n readonly freshnessWindowMs: number;\n readonly requestTimeoutMs: number;\n readonly debug: boolean;\n}\n\n/** Resolve once. Never retain the options object, environment, or a second key. */\nexport function resolveRegistryConfig(\n options: SkillRegistryOptions = {},\n environment: NodeJS.ProcessEnv = process.env,\n): RegistryConfig {\n try {\n const containerId =\n options.containerId ?? environment.CPK_INTELLIGENCE_LEARNING_CONTAINER_ID;\n const revision =\n options.revision ?? environment.CPK_INTELLIGENCE_SKILLS_REVISION;\n const freshnessWindowMs = options.freshnessWindowMs ?? 5_000;\n const requestTimeoutMs = options.requestTimeoutMs ?? 5_000;\n const debug = options.debug ?? false;\n if (\n typeof containerId !== \"string\" ||\n !containerId.trim() ||\n (revision !== undefined &&\n (typeof revision !== \"string\" || revision.length === 0)) ||\n !Number.isSafeInteger(freshnessWindowMs) ||\n freshnessWindowMs < 0 ||\n !Number.isSafeInteger(requestTimeoutMs) ||\n requestTimeoutMs < 1 ||\n requestTimeoutMs > 2_147_483_647 ||\n typeof debug !== \"boolean\"\n )\n throw new SkillDeliveryError(\"INVALID_CONFIG\", false);\n let client = options.client;\n if (client !== undefined) {\n if (!client || typeof client.getLearnedSkillsSnapshot !== \"function\")\n throw new SkillDeliveryError(\"INVALID_CONFIG\", false);\n } else {\n const apiKey = options.apiKey ?? environment.CPK_INTELLIGENCE_API_KEY;\n const apiUrl = options.apiUrl ?? environment.INTELLIGENCE_API_URL;\n if (typeof apiKey !== \"string\" || !apiKey.trim())\n throw new SkillDeliveryError(\"INVALID_CONFIG\", false);\n if (apiUrl?.trim()) {\n const url = new URL(apiUrl);\n if (\n ![\"http:\", \"https:\"].includes(url.protocol) ||\n url.username ||\n url.password ||\n url.search ||\n url.hash\n )\n throw new SkillDeliveryError(\"INVALID_CONFIG\", false);\n }\n client = new CopilotKitIntelligence({\n apiKey,\n ...(apiUrl !== undefined ? { apiUrl } : {}),\n // This private helper client uses REST only. Explicitly retain the\n // canonical websocket default to prevent an irrelevant host warning.\n ...(apiUrl?.trim()\n ? { wsUrl: \"wss://realtime.intelligence.copilotkit.ai\" }\n : {}),\n });\n }\n return Object.freeze({\n client,\n containerId,\n ...(revision !== undefined ? { revision } : {}),\n freshnessWindowMs,\n requestTimeoutMs,\n debug,\n });\n } catch (error) {\n if (error instanceof SkillDeliveryError) throw error;\n throw new SkillDeliveryError(\"INVALID_CONFIG\", false, error);\n }\n}\n"],"mappings":";;;;;;AAuBA,SAAgB,sBACd,UAAgC,EAAE,EAClC,cAAiC,QAAQ,KACzB;AAChB,KAAI;EACF,MAAM,cACJ,QAAQ,eAAe,YAAY;EACrC,MAAM,WACJ,QAAQ,YAAY,YAAY;EAClC,MAAM,oBAAoB,QAAQ,qBAAqB;EACvD,MAAM,mBAAmB,QAAQ,oBAAoB;EACrD,MAAM,QAAQ,QAAQ,SAAS;AAC/B,MACE,OAAO,gBAAgB,YACvB,CAAC,YAAY,MAAM,IAClB,aAAa,WACX,OAAO,aAAa,YAAY,SAAS,WAAW,MACvD,CAAC,OAAO,cAAc,kBAAkB,IACxC,oBAAoB,KACpB,CAAC,OAAO,cAAc,iBAAiB,IACvC,mBAAmB,KACnB,mBAAmB,cACnB,OAAO,UAAU,UAEjB,OAAM,IAAIA,0CAAmB,kBAAkB,MAAM;EACvD,IAAI,SAAS,QAAQ;AACrB,MAAI,WAAW,QACb;OAAI,CAAC,UAAU,OAAO,OAAO,6BAA6B,WACxD,OAAM,IAAIA,0CAAmB,kBAAkB,MAAM;SAClD;GACL,MAAM,SAAS,QAAQ,UAAU,YAAY;GAC7C,MAAM,SAAS,QAAQ,UAAU,YAAY;AAC7C,OAAI,OAAO,WAAW,YAAY,CAAC,OAAO,MAAM,CAC9C,OAAM,IAAIA,0CAAmB,kBAAkB,MAAM;AACvD,OAAI,QAAQ,MAAM,EAAE;IAClB,MAAM,MAAM,IAAI,IAAI,OAAO;AAC3B,QACE,CAAC,CAAC,SAAS,SAAS,CAAC,SAAS,IAAI,SAAS,IAC3C,IAAI,YACJ,IAAI,YACJ,IAAI,UACJ,IAAI,KAEJ,OAAM,IAAIA,0CAAmB,kBAAkB,MAAM;;AAEzD,YAAS,IAAIC,sCAAuB;IAClC;IACA,GAAI,WAAW,SAAY,EAAE,QAAQ,GAAG,EAAE;IAG1C,GAAI,QAAQ,MAAM,GACd,EAAE,OAAO,6CAA6C,GACtD,EAAE;IACP,CAAC;;AAEJ,SAAO,OAAO,OAAO;GACnB;GACA;GACA,GAAI,aAAa,SAAY,EAAE,UAAU,GAAG,EAAE;GAC9C;GACA;GACA;GACD,CAAC;UACK,OAAO;AACd,MAAI,iBAAiBD,0CAAoB,OAAM;AAC/C,QAAM,IAAIA,0CAAmB,kBAAkB,OAAO,MAAM"}
@@ -0,0 +1,27 @@
1
+
2
+ import { CopilotKitIntelligence } from "../client.cjs";
3
+
4
+ //#region src/v2/runtime/intelligence-platform/skill-registry/config.d.ts
5
+ interface SkillRegistryOptions {
6
+ client?: CopilotKitIntelligence;
7
+ apiKey?: string;
8
+ apiUrl?: string;
9
+ containerId?: string;
10
+ revision?: string;
11
+ freshnessWindowMs?: number;
12
+ requestTimeoutMs?: number;
13
+ debug?: boolean;
14
+ }
15
+ interface RegistryConfig {
16
+ readonly client: CopilotKitIntelligence;
17
+ readonly containerId: string;
18
+ readonly revision?: string;
19
+ readonly freshnessWindowMs: number;
20
+ readonly requestTimeoutMs: number;
21
+ readonly debug: boolean;
22
+ }
23
+ /** Resolve once. Never retain the options object, environment, or a second key. */
24
+ declare function resolveRegistryConfig(options?: SkillRegistryOptions, environment?: NodeJS.ProcessEnv): RegistryConfig;
25
+ //#endregion
26
+ export { RegistryConfig, SkillRegistryOptions, resolveRegistryConfig };
27
+ //# sourceMappingURL=config.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.cts","names":[],"sources":["../../../../../src/v2/runtime/intelligence-platform/skill-registry/config.ts"],"mappings":";;;;UAGiB,oBAAA;EACf,MAAA,GAAS,sBAAA;EACT,MAAA;EACA,MAAA;EACA,WAAA;EACA,QAAA;EACA,iBAAA;EACA,gBAAA;EACA,KAAA;AAAA;AAAA,UAEe,cAAA;EAAA,SACN,MAAA,EAAQ,sBAAA;EAAA,SACR,WAAA;EAAA,SACA,QAAA;EAAA,SACA,iBAAA;EAAA,SACA,gBAAA;EAAA,SACA,KAAA;AAAA;;iBAIK,qBAAA,CACd,OAAA,GAAS,oBAAA,EACT,WAAA,GAAa,MAAA,CAAO,UAAA,GACnB,cAAA"}