@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,10 +1,11 @@
1
1
 
2
+ import { BuiltInAgentLearnedSkills, BuiltInAgentLearnedSkillsOptions } from "./learned-skills.cjs";
2
3
  import { convertAISDKStream } from "./converters/aisdk.cjs";
3
4
  import { TanStackChatMessage, TanStackInputResult, convertInputToTanStackAI, convertTanStackStream } from "./converters/tanstack.cjs";
4
- import { LanguageModel, ModelMessage, ToolChoice, ToolSet } from "ai";
5
- import { Observable } from "rxjs";
6
- import { InferSchemaOutput, StandardSchemaV1 } from "@copilotkit/shared";
5
+ import { InferSchemaOutput, ModelHostClass, StandardSchemaV1 } from "@copilotkit/shared";
7
6
  import { AbstractAgent, BaseEvent, Interrupt, Message, ResumeEntry, RunAgentInput } from "@ag-ui/client";
7
+ import { Observable } from "rxjs";
8
+ import { LanguageModel, ModelMessage, ToolChoice, ToolSet } from "ai";
8
9
  import { AgentCapabilities } from "@ag-ui/core";
9
10
  import { z } from "zod";
10
11
  import { StreamableHTTPClientTransportOptions } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
@@ -73,6 +74,26 @@ interface MCPClientProvider {
73
74
  * @returns LanguageModel instance
74
75
  */
75
76
  declare function resolveModel(spec: ModelSpecifier, apiKey?: string): LanguageModel;
77
+ /**
78
+ * Which vendor a model specifier will actually reach, as a closed vocabulary.
79
+ *
80
+ * `resolveModel` above is the only place this runtime builds a provider, so it
81
+ * is the only place that knows the endpoint. Once built, the endpoint is gone:
82
+ * an AI SDK model reports `provider: "openai.responses"` whether it points at
83
+ * api.openai.com, Azure, OpenRouter or a laptop, and its base URL survives
84
+ * only inside a closure that the public `LanguageModelV3` type does not
85
+ * expose. Azure's own migration guide tells customers to use that same OpenAI
86
+ * client, so the case we are blindest to is the common one.
87
+ *
88
+ * A caller who hands us an already-built LanguageModel gets `unknown`. Nobody
89
+ * can recover the host from it, and saying so is more useful than guessing
90
+ * `openai` from a provider label that means only "speaks the OpenAI wire".
91
+ *
92
+ * The branches below mirror `resolveModel`'s switch and must change with it.
93
+ * `model-host-class.test.ts` walks every provider that switch accepts and
94
+ * fails if one lands here as `unknown`.
95
+ */
96
+ declare function classifyModelSpec(spec: ModelSpecifier): ModelHostClass;
76
97
  /**
77
98
  * Thrown by `AgentFactoryContext.interrupt()` on a fresh (non-resume) run to
78
99
  * pause the factory. Caught in `runFactory` and translated into a RUN_FINISHED
@@ -98,9 +119,8 @@ interface ToolDefinition<TParameters extends StandardSchemaV1 = StandardSchemaV1
98
119
  * When true, calling this tool pauses the run and emits a standard AG-UI
99
120
  * interrupt (RUN_FINISHED outcome:interrupt) keyed by the tool call's id.
100
121
  * The human response (resume payload) is injected as this tool call's result
101
- * on the resume run. Interrupt tools must NOT define `execute`, and require
102
- * the default `maxSteps: 1` — with `maxSteps > 1` the AI SDK's agentic loop
103
- * would try to continue past the unexecuted tool call instead of pausing.
122
+ * on the resume run. Interrupt tools must NOT define `execute`. The AI SDK
123
+ * pauses when a tool call has no result, even with a multi-step limit.
104
124
  */
105
125
  interrupt?: boolean;
106
126
  /** Optional categorical reason surfaced on the Interrupt (default: "tool_call"). */
@@ -167,6 +187,8 @@ declare function convertToolDefinitionsToVercelAITools(tools: ToolDefinition[]):
167
187
  * Context passed to the user-supplied factory function in factory mode.
168
188
  */
169
189
  interface AgentFactoryContext {
190
+ /** Verified catalog and AI SDK tools for this run; empty when disabled or no skills exist. */
191
+ learnedSkills: BuiltInAgentLearnedSkills;
170
192
  input: RunAgentInput;
171
193
  /**
172
194
  * Prefer `abortSignal` for most use cases (AI SDK, fetch, custom backends).
@@ -185,12 +207,16 @@ interface AgentFactoryContext {
185
207
  */
186
208
  interrupt: (interrupts: Interrupt[]) => Promise<ResumeEntry[]>;
187
209
  }
210
+ /** Public name that avoids the runtime's request-scoped AgentFactoryContext. */
211
+ type BuiltInAgentFactoryContext = AgentFactoryContext;
188
212
  /**
189
213
  * Factory config for AI SDK backend.
190
214
  * The factory must return an object with a `fullStream` async iterable
191
215
  * (compatible with the result of `streamText()` — only `fullStream` is consumed).
192
216
  */
193
217
  interface BuiltInAgentAISDKFactoryConfig {
218
+ /** Opt in to automatic snapshot acquisition before each run, including resumes. */
219
+ learnedSkills?: BuiltInAgentLearnedSkillsOptions;
194
220
  type: "aisdk";
195
221
  factory: (ctx: AgentFactoryContext) => {
196
222
  fullStream: AsyncIterable<unknown>;
@@ -203,6 +229,8 @@ interface BuiltInAgentAISDKFactoryConfig {
203
229
  * The factory must return an async iterable of TanStack AI stream chunks.
204
230
  */
205
231
  interface BuiltInAgentTanStackFactoryConfig {
232
+ /** Opt in to automatic snapshot acquisition before each run, including resumes. */
233
+ learnedSkills?: BuiltInAgentLearnedSkillsOptions;
206
234
  type: "tanstack";
207
235
  factory: (ctx: AgentFactoryContext) => AsyncIterable<unknown> | Promise<AsyncIterable<unknown>>;
208
236
  }
@@ -210,6 +238,8 @@ interface BuiltInAgentTanStackFactoryConfig {
210
238
  * Factory config for a custom backend that directly yields AG-UI events.
211
239
  */
212
240
  interface BuiltInAgentCustomFactoryConfig {
241
+ /** Opt in to automatic snapshot acquisition before each run, including resumes. */
242
+ learnedSkills?: BuiltInAgentLearnedSkillsOptions;
213
243
  type: "custom";
214
244
  factory: (ctx: AgentFactoryContext) => AsyncIterable<BaseEvent> | Promise<AsyncIterable<BaseEvent>>;
215
245
  }
@@ -221,6 +251,8 @@ type BuiltInAgentFactoryConfig = BuiltInAgentAISDKFactoryConfig | BuiltInAgentTa
221
251
  * Classic config — BuiltInAgent handles streamText, tools, MCP, state tools, prompt building.
222
252
  */
223
253
  interface BuiltInAgentClassicConfig {
254
+ /** Opt in to automatic snapshot acquisition before each run, including resumes. */
255
+ learnedSkills?: BuiltInAgentLearnedSkillsOptions;
224
256
  /**
225
257
  * The model to use
226
258
  */
@@ -235,7 +267,7 @@ interface BuiltInAgentClassicConfig {
235
267
  */
236
268
  apiKey?: string;
237
269
  /**
238
- * Maximum number of steps/iterations for tool calling (default: 1)
270
+ * Maximum number of steps/iterations for tool calling (default: 1, or 10 when learned skills are available)
239
271
  */
240
272
  maxSteps?: number;
241
273
  /**
@@ -342,6 +374,21 @@ type BuiltInAgentConfiguration = BuiltInAgentClassicConfig | BuiltInAgentFactory
342
374
  declare class BuiltInAgent extends AbstractAgent {
343
375
  private config;
344
376
  private abortController?;
377
+ private skillRegistry?;
378
+ /**
379
+ * Which vendor this agent's configured model reaches. Read by the SSE layer
380
+ * onto `agent_execution_stream_*` telemetry.
381
+ *
382
+ * Computed once, from the configured model, because that is what holds for
383
+ * the agent's lifetime. A per-request `forwardedProps.model` override
384
+ * (handled further down in `run`) can point somewhere else for one run and
385
+ * is not reflected here — overrides are rare and the field describes the
386
+ * agent, not the call.
387
+ *
388
+ * Factory-mode configs own their own LLM call, so there is no model for us
389
+ * to classify.
390
+ */
391
+ readonly modelHostClass: ModelHostClass;
345
392
  constructor(config: BuiltInAgentConfiguration);
346
393
  /**
347
394
  * Check if a property can be overridden by forwardedProps
@@ -362,5 +409,5 @@ declare class BasicAgent extends BuiltInAgent {
362
409
  /** @deprecated Use BuiltInAgentClassicConfig instead */
363
410
  type BasicAgentConfiguration = BuiltInAgentClassicConfig;
364
411
  //#endregion
365
- export { BasicAgent, BasicAgentConfiguration, BuiltInAgent, BuiltInAgentAISDKFactoryConfig, BuiltInAgentClassicConfig, BuiltInAgentConfiguration, BuiltInAgentCustomFactoryConfig, BuiltInAgentFactoryConfig, BuiltInAgentModel, BuiltInAgentTanStackFactoryConfig, InterruptSignal, MCPClientConfig, MCPClientConfigHTTP, MCPClientConfigSSE, MCPClientProvider, MessageConversionOptions, ModelSpecifier, OverridableProperty, ToolDefinition, convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
412
+ export { BasicAgent, BasicAgentConfiguration, BuiltInAgent, BuiltInAgentAISDKFactoryConfig, BuiltInAgentClassicConfig, BuiltInAgentConfiguration, BuiltInAgentCustomFactoryConfig, BuiltInAgentFactoryConfig, BuiltInAgentFactoryContext, BuiltInAgentModel, BuiltInAgentTanStackFactoryConfig, InterruptSignal, MCPClientConfig, MCPClientConfigHTTP, MCPClientConfigSSE, MCPClientProvider, MessageConversionOptions, ModelSpecifier, OverridableProperty, ToolDefinition, classifyModelSpec, convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
366
413
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/agent/index.ts"],"mappings":";;;;;;;;;;;;;;;AAyEA;KAAY,mBAAA;;;;KAkBA,iBAAA;;;;KA+BA,cAAA,YAA0B,aAAA;AAAtC;;;AAAA,UAKiB,mBAAA;EALkC;EAOjD,IAAA;EAFkC;EAIlC,GAAA;EAO8C;;;;;;EAA9C,OAAA,GAAU,oCAAA;AAAA;;;;UAMK,kBAAA;EAIf;EAFA,IAAA;EAIU;EAFV,GAAA;EAEgB;EAAhB,OAAA,GAAU,MAAA;AAAA;;;;KAMA,eAAA,GAAkB,mBAAA,GAAsB,kBAAA;;;;;;;;;UAUnC,iBAAA;EAWW;EAT1B,KAAA,IAAS,OAAA,CAAQ,OAAA;AAAA;;;;;;;iBASH,YAAA,CACd,IAAA,EAAM,cAAA,EACN,MAAA,YACC,aAAA;;;;;;cA+FU,eAAA,SAAwB,KAAA;EAAA,SACP,UAAA,EAAY,SAAA;cAAZ,UAAA,EAAY,SAAA;AAAA;;;;UASzB,cAAA,qBACK,gBAAA,GAAmB,gBAAA;EAEvC,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EALiB;;;;EAU7B,OAAA,IAAW,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;EAAjB;;;;;;;;EASnC,SAAA;EAfA;EAiBA,eAAA;EAhBY;EAkBZ,gBAAA;AAAA;;;;;;;;;iBAWc,UAAA,qBAA+B,gBAAA,CAAA,CAAkB,MAAA;EAC/D,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,IAAW,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;EACpD,SAAA;EACA,eAAA;EACA,gBAAA;AAAA,IACE,cAAA,CAAe,WAAA;;;;UA0JF,wBAAA;EACf,qBAAA;EACA,wBAAA;AAAA;;;;iBAMc,oCAAA,CACd,QAAA,EAAU,OAAA,IACV,OAAA,GAAS,wBAAA,GACR,YAAA;;;;UAmFO,UAAA;EACR,IAAA;EAQA,WAAA;EACA,UAAA,GAAa,MAAA,SAAe,UAAA;EAC5B,QAAA;EACA,KAAA,GAAQ,UAAA;EACR,IAAA;EAIA,KAAA,GAAQ,UAAA;EACR,KAAA,GAAQ,UAAA;AAAA;;;;iBAMM,4BAAA,CACd,UAAA,EAAY,UAAA,EACZ,QAAA,YACC,CAAA,CAAE,SAAA;;iBA2GW,2BAAA,CACd,KAAA,EAAO,aAAA,YACN,OAAA;;;;;;;;iBA+Ca,qCAAA,CACd,KAAA,EAAO,cAAA,KACN,OAAA;;;;UA6Bc,mBAAA;EACf,KAAA,EAAO,aAAA;EAvNW;;;;;EA6NlB,eAAA,EAAiB,eAAA;EACjB,WAAA,EAAa,WAAA;EA5MK;;;;;;;;EAqNlB,SAAA,GAAY,UAAA,EAAY,SAAA,OAAgB,OAAA,CAAQ,WAAA;AAAA;;;;;;UAQjC,8BAAA;EACf,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA;IAED,UAAA,EAAY,aAAA;EAAA,IACd,OAAA;IAAU,UAAA,EAAY,aAAA;EAAA;AAAA;;;;;UAOX,iCAAA;EACf,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA,KACF,aAAA,YAAyB,OAAA,CAAQ,aAAA;AAAA;;;;UAMvB,+BAAA;EACf,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA,KACF,aAAA,CAAc,SAAA,IAAa,OAAA,CAAQ,aAAA,CAAc,SAAA;AAAA;;;;KAM5C,yBAAA,GACR,8BAAA,GACA,iCAAA,GACA,+BAAA;;;;UAKa,yBAAA;EAlEA;;;EAsEf,KAAA,EAAO,iBAAA,GAAoB,aAAA;EA/DV;;;;;;;;EAwEjB,MAAA;EAxEA;;;EA4EA,QAAA;EAlEA;;;EAsEA,UAAA,GAAa,UAAA,CAAW,MAAA;EAtEwB;;;EA0EhD,eAAA;EAlE6C;;;EAsE7C,WAAA;EAhE0B;;;EAoE1B,IAAA;EAzEA;;;EA6EA,IAAA;EAzEM;;;EA6EN,eAAA;EA5E0B;;;EAgF1B,gBAAA;EAzEgD;;;EA6EhD,aAAA;EAzEsC;;;EA6EtC,IAAA;EAhFA;;;EAoFA,UAAA;EAjFK;;;EAqFL,MAAA;EArFmD;AAMrD;;EAmFE,qBAAA,GAAwB,mBAAA;EAhFjB;;;EAoFP,UAAA,GAAa,eAAA;EAnF2B;;;;;;;;;;;EA+FxC,UAAA,GAAa,iBAAA;EA/FyC;;;EAmGtD,KAAA,GAAQ,cAAA;EA7F2B;;;;EAkGnC,qBAAA;EA/FiC;;;;EAoGjC,wBAAA;EApGiC;;AAKnC;;EAoGE,eAAA,GAAkB,MAAA;EAhGX;;;;;;;;EAyGP,YAAA,GAAe,OAAA,CAAQ,iBAAA;AAAA;;;;;;;;KAUb,yBAAA,GACR,yBAAA,GACA,yBAAA;AAAA,cAWS,YAAA,SAAqB,aAAA;EAAA,QAGZ,MAAA;EAAA,QAFZ,eAAA;cAEY,MAAA,EAAQ,yBAAA;EA1G5B;;;EAiHA,WAAA,CAAY,QAAA,EAAU,mBAAA;EAKhB,eAAA,CAAA,GAAmB,OAAA,CAAQ,iBAAA;EA+BjC,GAAA,CAAI,KAAA,EAAO,aAAA,GAAgB,UAAA,CAAW,SAAA;EAAA,QA42B9B,UAAA;EA8LR,KAAA,CAAA,GAAK,YAAA;EASL,QAAA,CAAA;AAAA;;;;cAQW,UAAA,SAAmB,YAAA;cAClB,MAAA,EAAQ,yBAAA;AAAA;;KAOV,uBAAA,GAA0B,yBAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
 
2
+ import { BuiltInAgentLearnedSkills, BuiltInAgentLearnedSkillsOptions } from "./learned-skills.mjs";
2
3
  import { convertAISDKStream } from "./converters/aisdk.mjs";
3
4
  import { TanStackChatMessage, TanStackInputResult, convertInputToTanStackAI, convertTanStackStream } from "./converters/tanstack.mjs";
4
5
  import "./converters/index.mjs";
5
- import { InferSchemaOutput, StandardSchemaV1 } from "@copilotkit/shared";
6
+ import { InferSchemaOutput, ModelHostClass, StandardSchemaV1 } from "@copilotkit/shared";
6
7
  import { Observable } from "rxjs";
7
8
  import { AbstractAgent, BaseEvent, Interrupt, Message, ResumeEntry, RunAgentInput } from "@ag-ui/client";
8
9
  import { z } from "zod";
@@ -74,6 +75,26 @@ interface MCPClientProvider {
74
75
  * @returns LanguageModel instance
75
76
  */
76
77
  declare function resolveModel(spec: ModelSpecifier, apiKey?: string): LanguageModel;
78
+ /**
79
+ * Which vendor a model specifier will actually reach, as a closed vocabulary.
80
+ *
81
+ * `resolveModel` above is the only place this runtime builds a provider, so it
82
+ * is the only place that knows the endpoint. Once built, the endpoint is gone:
83
+ * an AI SDK model reports `provider: "openai.responses"` whether it points at
84
+ * api.openai.com, Azure, OpenRouter or a laptop, and its base URL survives
85
+ * only inside a closure that the public `LanguageModelV3` type does not
86
+ * expose. Azure's own migration guide tells customers to use that same OpenAI
87
+ * client, so the case we are blindest to is the common one.
88
+ *
89
+ * A caller who hands us an already-built LanguageModel gets `unknown`. Nobody
90
+ * can recover the host from it, and saying so is more useful than guessing
91
+ * `openai` from a provider label that means only "speaks the OpenAI wire".
92
+ *
93
+ * The branches below mirror `resolveModel`'s switch and must change with it.
94
+ * `model-host-class.test.ts` walks every provider that switch accepts and
95
+ * fails if one lands here as `unknown`.
96
+ */
97
+ declare function classifyModelSpec(spec: ModelSpecifier): ModelHostClass;
77
98
  /**
78
99
  * Thrown by `AgentFactoryContext.interrupt()` on a fresh (non-resume) run to
79
100
  * pause the factory. Caught in `runFactory` and translated into a RUN_FINISHED
@@ -99,9 +120,8 @@ interface ToolDefinition<TParameters extends StandardSchemaV1 = StandardSchemaV1
99
120
  * When true, calling this tool pauses the run and emits a standard AG-UI
100
121
  * interrupt (RUN_FINISHED outcome:interrupt) keyed by the tool call's id.
101
122
  * The human response (resume payload) is injected as this tool call's result
102
- * on the resume run. Interrupt tools must NOT define `execute`, and require
103
- * the default `maxSteps: 1` — with `maxSteps > 1` the AI SDK's agentic loop
104
- * would try to continue past the unexecuted tool call instead of pausing.
123
+ * on the resume run. Interrupt tools must NOT define `execute`. The AI SDK
124
+ * pauses when a tool call has no result, even with a multi-step limit.
105
125
  */
106
126
  interrupt?: boolean;
107
127
  /** Optional categorical reason surfaced on the Interrupt (default: "tool_call"). */
@@ -168,6 +188,8 @@ declare function convertToolDefinitionsToVercelAITools(tools: ToolDefinition[]):
168
188
  * Context passed to the user-supplied factory function in factory mode.
169
189
  */
170
190
  interface AgentFactoryContext {
191
+ /** Verified catalog and AI SDK tools for this run; empty when disabled or no skills exist. */
192
+ learnedSkills: BuiltInAgentLearnedSkills;
171
193
  input: RunAgentInput;
172
194
  /**
173
195
  * Prefer `abortSignal` for most use cases (AI SDK, fetch, custom backends).
@@ -186,12 +208,16 @@ interface AgentFactoryContext {
186
208
  */
187
209
  interrupt: (interrupts: Interrupt[]) => Promise<ResumeEntry[]>;
188
210
  }
211
+ /** Public name that avoids the runtime's request-scoped AgentFactoryContext. */
212
+ type BuiltInAgentFactoryContext = AgentFactoryContext;
189
213
  /**
190
214
  * Factory config for AI SDK backend.
191
215
  * The factory must return an object with a `fullStream` async iterable
192
216
  * (compatible with the result of `streamText()` — only `fullStream` is consumed).
193
217
  */
194
218
  interface BuiltInAgentAISDKFactoryConfig {
219
+ /** Opt in to automatic snapshot acquisition before each run, including resumes. */
220
+ learnedSkills?: BuiltInAgentLearnedSkillsOptions;
195
221
  type: "aisdk";
196
222
  factory: (ctx: AgentFactoryContext) => {
197
223
  fullStream: AsyncIterable<unknown>;
@@ -204,6 +230,8 @@ interface BuiltInAgentAISDKFactoryConfig {
204
230
  * The factory must return an async iterable of TanStack AI stream chunks.
205
231
  */
206
232
  interface BuiltInAgentTanStackFactoryConfig {
233
+ /** Opt in to automatic snapshot acquisition before each run, including resumes. */
234
+ learnedSkills?: BuiltInAgentLearnedSkillsOptions;
207
235
  type: "tanstack";
208
236
  factory: (ctx: AgentFactoryContext) => AsyncIterable<unknown> | Promise<AsyncIterable<unknown>>;
209
237
  }
@@ -211,6 +239,8 @@ interface BuiltInAgentTanStackFactoryConfig {
211
239
  * Factory config for a custom backend that directly yields AG-UI events.
212
240
  */
213
241
  interface BuiltInAgentCustomFactoryConfig {
242
+ /** Opt in to automatic snapshot acquisition before each run, including resumes. */
243
+ learnedSkills?: BuiltInAgentLearnedSkillsOptions;
214
244
  type: "custom";
215
245
  factory: (ctx: AgentFactoryContext) => AsyncIterable<BaseEvent> | Promise<AsyncIterable<BaseEvent>>;
216
246
  }
@@ -222,6 +252,8 @@ type BuiltInAgentFactoryConfig = BuiltInAgentAISDKFactoryConfig | BuiltInAgentTa
222
252
  * Classic config — BuiltInAgent handles streamText, tools, MCP, state tools, prompt building.
223
253
  */
224
254
  interface BuiltInAgentClassicConfig {
255
+ /** Opt in to automatic snapshot acquisition before each run, including resumes. */
256
+ learnedSkills?: BuiltInAgentLearnedSkillsOptions;
225
257
  /**
226
258
  * The model to use
227
259
  */
@@ -236,7 +268,7 @@ interface BuiltInAgentClassicConfig {
236
268
  */
237
269
  apiKey?: string;
238
270
  /**
239
- * Maximum number of steps/iterations for tool calling (default: 1)
271
+ * Maximum number of steps/iterations for tool calling (default: 1, or 10 when learned skills are available)
240
272
  */
241
273
  maxSteps?: number;
242
274
  /**
@@ -343,6 +375,21 @@ type BuiltInAgentConfiguration = BuiltInAgentClassicConfig | BuiltInAgentFactory
343
375
  declare class BuiltInAgent extends AbstractAgent {
344
376
  private config;
345
377
  private abortController?;
378
+ private skillRegistry?;
379
+ /**
380
+ * Which vendor this agent's configured model reaches. Read by the SSE layer
381
+ * onto `agent_execution_stream_*` telemetry.
382
+ *
383
+ * Computed once, from the configured model, because that is what holds for
384
+ * the agent's lifetime. A per-request `forwardedProps.model` override
385
+ * (handled further down in `run`) can point somewhere else for one run and
386
+ * is not reflected here — overrides are rare and the field describes the
387
+ * agent, not the call.
388
+ *
389
+ * Factory-mode configs own their own LLM call, so there is no model for us
390
+ * to classify.
391
+ */
392
+ readonly modelHostClass: ModelHostClass;
346
393
  constructor(config: BuiltInAgentConfiguration);
347
394
  /**
348
395
  * Check if a property can be overridden by forwardedProps
@@ -363,5 +410,5 @@ declare class BasicAgent extends BuiltInAgent {
363
410
  /** @deprecated Use BuiltInAgentClassicConfig instead */
364
411
  type BasicAgentConfiguration = BuiltInAgentClassicConfig;
365
412
  //#endregion
366
- export { BasicAgent, BasicAgentConfiguration, BuiltInAgent, BuiltInAgentAISDKFactoryConfig, BuiltInAgentClassicConfig, BuiltInAgentConfiguration, BuiltInAgentCustomFactoryConfig, BuiltInAgentFactoryConfig, BuiltInAgentModel, BuiltInAgentTanStackFactoryConfig, InterruptSignal, MCPClientConfig, MCPClientConfigHTTP, MCPClientConfigSSE, MCPClientProvider, MessageConversionOptions, ModelSpecifier, OverridableProperty, ToolDefinition, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
413
+ export { BasicAgent, BasicAgentConfiguration, BuiltInAgent, BuiltInAgentAISDKFactoryConfig, BuiltInAgentClassicConfig, BuiltInAgentConfiguration, BuiltInAgentCustomFactoryConfig, BuiltInAgentFactoryConfig, BuiltInAgentFactoryContext, BuiltInAgentModel, BuiltInAgentTanStackFactoryConfig, InterruptSignal, MCPClientConfig, MCPClientConfigHTTP, MCPClientConfigSSE, MCPClientProvider, MessageConversionOptions, ModelSpecifier, OverridableProperty, ToolDefinition, classifyModelSpec, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
367
414
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":";;;;;;;;;;;;;;;;AAwFA;;KAAY,mBAAA;;;AAkBZ;KAAY,iBAAA;;;;KA+BA,cAAA,YAA0B,aAAA;;;;UAKrB,mBAAA;EAAA;EAEf,IAAA;;EAEA,GAAA;EAFA;;;;;;EASA,OAAA,GAAU,oCAAA;AAAA;;;;UAMK,kBAAA;EAMf;EAJA,IAAA;EAIgB;EAFhB,GAAA;EAQU;EANV,OAAA,GAAU,MAAA;AAAA;;;AAgBZ;KAVY,eAAA,GAAkB,mBAAA,GAAsB,kBAAA;;;;;;;;AAqBpD;UAXiB,iBAAA;;EAEf,KAAA,IAAS,OAAA,CAAQ,OAAA;AAAA;;;;;;AAyHnB;iBAhHgB,YAAA,CACd,IAAA,EAAM,cAAA,EACN,MAAA,YACC,aAAA;;;;;;;;AAmJH;;;;;;;;;;;;iBAtCgB,iBAAA,CAAkB,IAAA,EAAM,cAAA,GAAiB,cAAA;;;;AAgDzD;;cAVa,eAAA,SAAwB,KAAA;EAAA,SACP,UAAA,EAAY,SAAA;cAAZ,UAAA,EAAY,SAAA;AAAA;;;;UASzB,cAAA,qBACK,gBAAA,GAAmB,gBAAA;EAEvC,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EAJ2B;;;;EASvC,OAAA,IAAW,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;EAApD;;;;;;;EAQA,SAAA;EAIgB;EAFhB,eAAA;EAac;EAXd,gBAAA;AAAA;;;;;;;;;iBAWc,UAAA,qBAA+B,gBAAA,CAAA,CAAkB,MAAA;EAC/D,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,IAAW,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;EACpD,SAAA;EACA,eAAA;EACA,gBAAA;AAAA,IACE,cAAA,CAAe,WAAA;;;;UA0JF,wBAAA;EACf,qBAAA;EACA,wBAAA;AAAA;;;;iBAMc,oCAAA,CACd,QAAA,EAAU,OAAA,IACV,OAAA,GAAS,wBAAA,GACR,YAAA;AAXH;;;AAAA,UA8FU,UAAA;EACR,IAAA;EAQA,WAAA;EACA,UAAA,GAAa,MAAA,SAAe,UAAA;EAC5B,QAAA;EACA,KAAA,GAAQ,UAAA;EACR,IAAA;EAIA,KAAA,GAAQ,UAAA;EACR,KAAA,GAAQ,UAAA;AAAA;;;;iBAMM,8BAAA,CACd,UAAA,EAAY,UAAA,EACZ,QAAA,YACC,CAAA,CAAE,SAAA;;iBA2GW,2BAAA,CACd,KAAA,EAAO,aAAA,YACN,OAAA;;AA7IF;;;;;;iBA4Le,qCAAA,CACd,KAAA,EAAO,cAAA,KACN,OAAA;;;;UA6Bc,mBAAA;EA7Mf;EA+MA,aAAA,EAAe,yBAAA;EACf,KAAA,EAAO,aAAA;EA/MqB;;;;;EAqN5B,eAAA,EAAiB,eAAA;EACjB,WAAA,EAAa,WAAA;EA9Mb;;;;AAMF;;;;EAiNE,SAAA,GAAY,UAAA,EAAY,SAAA,OAAgB,OAAA,CAAQ,WAAA;AAAA;;KAItC,0BAAA,GAA6B,mBAAA;;;;AAvGzC;;UA8GiB,8BAAA;EA5GP;EA8GR,aAAA,GAAgB,gCAAA;EAChB,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA;IAED,UAAA,EAAY,aAAA;EAAA,IACd,OAAA;IAAU,UAAA,EAAY,aAAA;EAAA;AAAA;;;;;UAOX,iCAAA;EA1EP;EA4ER,aAAA,GAAgB,gCAAA;EAChB,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA,KACF,aAAA,YAAyB,OAAA,CAAQ,aAAA;AAAA;;;;UAMvB,+BAAA;EAtCiC;EAwChD,aAAA,GAAgB,gCAAA;EAChB,IAAA;EACA,OAAA,GACE,GAAA,EAAK,mBAAA,KACF,aAAA,CAAc,SAAA,IAAa,OAAA,CAAQ,aAAA,CAAc,SAAA;AAAA;;;;KAM5C,yBAAA,GACR,8BAAA,GACA,iCAAA,GACA,+BAAA;;;;UAKa,yBAAA;EA1DS;EA4DxB,aAAA,GAAgB,gCAAA;EA5DwB;;;EAgExC,KAAA,EAAO,iBAAA,GAAoB,aAAA;EA5DjB;;;;;AAOZ;;;EA8DE,MAAA;EAzDO;;;EA6DP,QAAA;EA1DW;;;EA8DX,UAAA,GAAa,UAAA,CAAW,MAAA;EAnExB;;;EAuEA,eAAA;EAnEM;;;EAuEN,WAAA;EAtE0B;;;EA0E1B,IAAA;EAnEgD;;;EAuEhD,IAAA;EAjEK;;;EAqEL,eAAA;EArEqC;;;EAyErC,gBAAA;EA3EA;;;EA+EA,aAAA;EA7E8B;;;EAiF9B,IAAA;EA3Ee;;;EA+Ef,UAAA;EA1EO;;;EA8EP,MAAA;EA7EwC;;;EAiFxC,qBAAA,GAAwB,mBAAA;EArFxB;;;EAyFA,UAAA,GAAa,eAAA;EAtFN;;;;;;;;;AAOT;;EA2FE,UAAA,GAAa,iBAAA;EA1FX;;;EA8FF,KAAA,GAAQ,cAAA;EA5FyB;;;;EAiGjC,qBAAA;EAjGiC;AAKnC;;;EAiGE,wBAAA;EA3FO;;;;EAgGP,eAAA,GAAkB,MAAA;EA/BL;;;;;;;;EAwCb,YAAA,GAAe,OAAA,CAAQ,iBAAA;AAAA;;;;;;;;KAUb,yBAAA,GACR,yBAAA,GACA,yBAAA;AAAA,cAWS,YAAA,SAAqB,aAAA;EAAA,QAmBZ,MAAA;EAAA,QAlBZ,eAAA;EAAA,QACA,aAAA;EA7FR;;;;;;;;;;;;;EAAA,SA4GS,cAAA,EAAgB,cAAA;cAEL,MAAA,EAAQ,yBAAA;EAxD5B;;;EAsEA,WAAA,CAAY,QAAA,EAAU,mBAAA;EAKhB,eAAA,CAAA,GAAmB,OAAA,CAAQ,iBAAA;EA+BjC,GAAA,CAAI,KAAA,EAAO,aAAA,GAAgB,UAAA,CAAW,SAAA;EAAA,QAi5B9B,UAAA;EA0MR,KAAA,CAAA,GAAK,YAAA;EAeL,QAAA,CAAA;AAAA;;;;cAQW,UAAA,SAAmB,YAAA;cAClB,MAAA,EAAQ,yBAAA;AAAA;;KAOV,uBAAA,GAA0B,yBAAA"}
@@ -3,8 +3,10 @@ import { createStateEventNormalizer } from "./state-delta.mjs";
3
3
  import { collectStandardRunFinishedDetails, getNonEmptyString, isRecord } from "./converters/usage.mjs";
4
4
  import { convertAISDKStream, getAISDKRunFinishedDetails } from "./converters/aisdk.mjs";
5
5
  import { convertInputToTanStackAI, convertTanStackStream } from "./converters/tanstack.mjs";
6
+ import { SkillRegistry } from "../v2/runtime/intelligence-platform/skill-registry/registry.mjs";
7
+ import { assertNoSkillToolConflicts, prepareLearnedSkills } from "./learned-skills.mjs";
6
8
  import { createOpenAI } from "@ai-sdk/openai";
7
- import { randomUUID, safeParseToolArgs, schemaToJsonSchema } from "@copilotkit/shared";
9
+ import { classifyModelHost, randomUUID, safeParseToolArgs, schemaToJsonSchema } from "@copilotkit/shared";
8
10
  import { createGoogleGenerativeAI } from "@ai-sdk/google";
9
11
  import { Observable } from "rxjs";
10
12
  import { AbstractAgent, EventType } from "@ag-ui/client";
@@ -58,6 +60,38 @@ function resolveModel(spec, apiKey) {
58
60
  }
59
61
  }
60
62
  /**
63
+ * Which vendor a model specifier will actually reach, as a closed vocabulary.
64
+ *
65
+ * `resolveModel` above is the only place this runtime builds a provider, so it
66
+ * is the only place that knows the endpoint. Once built, the endpoint is gone:
67
+ * an AI SDK model reports `provider: "openai.responses"` whether it points at
68
+ * api.openai.com, Azure, OpenRouter or a laptop, and its base URL survives
69
+ * only inside a closure that the public `LanguageModelV3` type does not
70
+ * expose. Azure's own migration guide tells customers to use that same OpenAI
71
+ * client, so the case we are blindest to is the common one.
72
+ *
73
+ * A caller who hands us an already-built LanguageModel gets `unknown`. Nobody
74
+ * can recover the host from it, and saying so is more useful than guessing
75
+ * `openai` from a provider label that means only "speaks the OpenAI wire".
76
+ *
77
+ * The branches below mirror `resolveModel`'s switch and must change with it.
78
+ * `model-host-class.test.ts` walks every provider that switch accepts and
79
+ * fails if one lands here as `unknown`.
80
+ */
81
+ function classifyModelSpec(spec) {
82
+ if (typeof spec !== "string") return "unknown";
83
+ switch (spec.replace("/", ":").trim().split(":")[0]?.toLowerCase()) {
84
+ case "openai": return classifyModelHost(process.env.OPENAI_BASE_URL, "openai");
85
+ case "anthropic": return classifyModelHost(process.env.ANTHROPIC_BASE_URL, "anthropic");
86
+ case "google":
87
+ case "gemini":
88
+ case "google-gemini": return classifyModelHost(process.env.GOOGLE_GENERATIVE_AI_BASE_URL, "google");
89
+ case "minimax": return classifyModelHost(process.env.MINIMAX_BASE_URL || "https://api.minimax.io/v1", "minimax");
90
+ case "vertex": return "vertex";
91
+ default: return "unknown";
92
+ }
93
+ }
94
+ /**
61
95
  * Thrown by `AgentFactoryContext.interrupt()` on a fresh (non-resume) run to
62
96
  * pause the factory. Caught in `runFactory` and translated into a RUN_FINISHED
63
97
  * event carrying `outcome:{type:"interrupt",interrupts}`. Not a real error.
@@ -387,6 +421,8 @@ var BuiltInAgent = class BuiltInAgent extends AbstractAgent {
387
421
  constructor(config) {
388
422
  super();
389
423
  this.config = config;
424
+ this.skillRegistry = config.learnedSkills === void 0 ? void 0 : new SkillRegistry(config.learnedSkills);
425
+ this.modelHostClass = isFactoryConfig(config) ? "unknown" : classifyModelSpec(config.model);
390
426
  }
391
427
  /**
392
428
  * Check if a property can be overridden by forwardedProps
@@ -550,6 +586,15 @@ This is state from the application that you can edit by calling AGUISendStateSna
550
586
  subscriber.next(reasoningEnd);
551
587
  };
552
588
  try {
589
+ const learnedSkills = await prepareLearnedSkills(this.skillRegistry, abortController.signal);
590
+ abortController.signal.throwIfAborted();
591
+ if (learnedSkills.catalog) {
592
+ messages.unshift({
593
+ role: "system",
594
+ content: learnedSkills.catalog
595
+ });
596
+ if (config.maxSteps === void 0) streamTextParams.stopWhen = stepCountIs(10);
597
+ }
553
598
  streamTextParams.tools = {
554
599
  ...streamTextParams.tools,
555
600
  AGUISendStateSnapshot: tool({
@@ -583,6 +628,7 @@ This is state from the application that you can edit by calling AGUISendStateSna
583
628
  };
584
629
  if (config.mcpClients && config.mcpClients.length > 0) for (const client of config.mcpClients) {
585
630
  const mcpTools = await client.tools();
631
+ abortController.signal.throwIfAborted();
586
632
  streamTextParams.tools = {
587
633
  ...streamTextParams.tools,
588
634
  ...mcpTools
@@ -594,6 +640,7 @@ This is state from the application that you can edit by calling AGUISendStateSna
594
640
  if (serverConfig.type === "http") transport = new StreamableHTTPClientTransport(new URL(serverConfig.url), serverConfig.options);
595
641
  else if (serverConfig.type === "sse") {
596
642
  const { SSEClientTransport } = await import("@modelcontextprotocol/sdk/client/sse.js");
643
+ abortController.signal.throwIfAborted();
597
644
  transport = new SSEClientTransport(new URL(serverConfig.url), serverConfig.headers ? { requestInit: { headers: serverConfig.headers } } : void 0);
598
645
  }
599
646
  if (transport) {
@@ -601,21 +648,36 @@ This is state from the application that you can edit by calling AGUISendStateSna
601
648
  try {
602
649
  mcpClient = await createMCPClient({ transport });
603
650
  } catch (err) {
651
+ abortController.signal.throwIfAborted();
604
652
  console.error(`[CopilotKit] MCP server ${serverConfig.url} failed to connect — skipping it for this run:`, err);
605
653
  continue;
606
654
  }
655
+ if (abortController.signal.aborted) {
656
+ await mcpClient.close();
657
+ abortController.signal.throwIfAborted();
658
+ }
607
659
  mcpClients.push(mcpClient);
608
660
  try {
609
661
  const mcpTools = await mcpClient.tools();
662
+ abortController.signal.throwIfAborted();
610
663
  streamTextParams.tools = {
611
664
  ...streamTextParams.tools,
612
665
  ...mcpTools
613
666
  };
614
667
  } catch (err) {
668
+ abortController.signal.throwIfAborted();
615
669
  console.error(`[CopilotKit] MCP server ${serverConfig.url} tools() failed — skipping its tools for this run:`, err);
616
670
  }
617
671
  }
618
672
  }
673
+ if (this.skillRegistry) {
674
+ assertNoSkillToolConflicts(streamTextParams.tools ?? {});
675
+ streamTextParams.tools = {
676
+ ...streamTextParams.tools,
677
+ ...learnedSkills.tools
678
+ };
679
+ }
680
+ abortController.signal.throwIfAborted();
619
681
  const response = streamText({
620
682
  ...streamTextParams,
621
683
  abortSignal: abortController.signal
@@ -892,11 +954,13 @@ This is state from the application that you can edit by calling AGUISendStateSna
892
954
  subscriber.error(error);
893
955
  }
894
956
  } finally {
895
- this.abortController = void 0;
957
+ if (this.abortController === abortController) this.abortController = void 0;
896
958
  await Promise.all(mcpClients.map((client) => client.close()));
897
959
  }
898
960
  })();
899
961
  return () => {
962
+ abortController.abort();
963
+ if (this.abortController === abortController) this.abortController = void 0;
900
964
  Promise.all(mcpClients.map((client) => client.close())).catch(() => {});
901
965
  };
902
966
  });
@@ -935,13 +999,16 @@ This is state from the application that you can edit by calling AGUISendStateSna
935
999
  ...input,
936
1000
  messages: [...input.messages, ...resumeToolMessages]
937
1001
  } : input;
938
- const factoryCtx = {
939
- ...ctx,
940
- input: factoryInput
941
- };
942
1002
  (async () => {
943
1003
  const runFinishedDetails = {};
944
1004
  try {
1005
+ const learnedSkills = await prepareLearnedSkills(this.skillRegistry, controller.signal);
1006
+ controller.signal.throwIfAborted();
1007
+ const factoryCtx = {
1008
+ ...ctx,
1009
+ input: factoryInput,
1010
+ learnedSkills
1011
+ };
945
1012
  let events;
946
1013
  let customRunFinishedEvent;
947
1014
  const pendingInterrupts = [];
@@ -953,7 +1020,7 @@ This is state from the application that you can edit by calling AGUISendStateSna
953
1020
  events = convertTanStackStream(await config.factory(factoryCtx), controller.signal, pendingInterrupts, input.state, runFinishedDetails);
954
1021
  break;
955
1022
  case "custom":
956
- events = await config.factory(ctx);
1023
+ events = await config.factory(factoryCtx);
957
1024
  break;
958
1025
  default: {
959
1026
  const _exhaustive = config;
@@ -1006,16 +1073,22 @@ This is state from the application that you can edit by calling AGUISendStateSna
1006
1073
  subscriber.error(error);
1007
1074
  }
1008
1075
  } finally {
1009
- this.abortController = void 0;
1076
+ if (this.abortController === controller) this.abortController = void 0;
1010
1077
  }
1011
1078
  })();
1012
1079
  return () => {
1013
1080
  controller.abort();
1081
+ if (this.abortController === controller) this.abortController = void 0;
1014
1082
  };
1015
1083
  });
1016
1084
  }
1017
1085
  clone() {
1018
- const cloned = new BuiltInAgent(this.config);
1086
+ const cloned = new BuiltInAgent({
1087
+ ...this.config,
1088
+ learnedSkills: void 0
1089
+ });
1090
+ cloned.config = this.config;
1091
+ cloned.skillRegistry = this.skillRegistry;
1019
1092
  cloned.middlewares = [...this.middlewares];
1020
1093
  return cloned;
1021
1094
  }
@@ -1034,5 +1107,5 @@ var BasicAgent = class extends BuiltInAgent {
1034
1107
  };
1035
1108
 
1036
1109
  //#endregion
1037
- export { BasicAgent, BuiltInAgent, InterruptSignal, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
1110
+ export { BasicAgent, BuiltInAgent, InterruptSignal, classifyModelSpec, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
1038
1111
  //# sourceMappingURL=index.mjs.map