@yanlinglabs/winter-agent-runtime 0.0.27

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 (311) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +41 -0
  3. package/README.md +64 -0
  4. package/dist/checkpoint/file-history.d.ts +81 -0
  5. package/dist/checkpoint/rewind.d.ts +55 -0
  6. package/dist/checkpoint/seam.d.ts +47 -0
  7. package/dist/checkpoint/sink.d.ts +66 -0
  8. package/dist/commands/builtins-listing.d.ts +40 -0
  9. package/dist/commands/resolver.d.ts +103 -0
  10. package/dist/commands/seam.d.ts +53 -0
  11. package/dist/compaction/controller.d.ts +23 -0
  12. package/dist/compaction/retention.d.ts +35 -0
  13. package/dist/compaction/seam.d.ts +115 -0
  14. package/dist/compaction/summarizer.d.ts +79 -0
  15. package/dist/context/agent-listing.d.ts +39 -0
  16. package/dist/context/assembler.d.ts +46 -0
  17. package/dist/context/attachments.d.ts +104 -0
  18. package/dist/context/dynamic-sections.d.ts +31 -0
  19. package/dist/context/git-fixture.d.ts +18 -0
  20. package/dist/context/git-status.d.ts +16 -0
  21. package/dist/context/imports.d.ts +22 -0
  22. package/dist/context/injection.d.ts +53 -0
  23. package/dist/context/memory-key.d.ts +46 -0
  24. package/dist/context/memory.d.ts +28 -0
  25. package/dist/context/minimal-prompt.d.ts +5 -0
  26. package/dist/context/output-styles.d.ts +68 -0
  27. package/dist/context/plan-mode.d.ts +29 -0
  28. package/dist/context/request-layout.d.ts +138 -0
  29. package/dist/context/rules.d.ts +63 -0
  30. package/dist/context/seam.d.ts +136 -0
  31. package/dist/context/tool-epoch.d.ts +118 -0
  32. package/dist/context/winter-code-preset.d.ts +39 -0
  33. package/dist/context/winter-md.d.ts +81 -0
  34. package/dist/embedded-host.d.ts +48 -0
  35. package/dist/embedded-host.js +155 -0
  36. package/dist/embedded-protocol.d.ts +44 -0
  37. package/dist/embedded-worker.d.ts +1 -0
  38. package/dist/embedded-worker.js +74 -0
  39. package/dist/embedded.d.ts +34 -0
  40. package/dist/embedded.js +9 -0
  41. package/dist/engine.d.ts +1298 -0
  42. package/dist/hooks/additional-context.d.ts +21 -0
  43. package/dist/hooks/bounds.d.ts +6 -0
  44. package/dist/hooks/bridge-invoker.d.ts +3 -0
  45. package/dist/hooks/command-invoker.d.ts +52 -0
  46. package/dist/hooks/from-config.d.ts +31 -0
  47. package/dist/hooks/hook-stage.d.ts +25 -0
  48. package/dist/hooks/input-validator.d.ts +6 -0
  49. package/dist/hooks/reducer.d.ts +74 -0
  50. package/dist/hooks/registry.d.ts +33 -0
  51. package/dist/hooks/runner.d.ts +105 -0
  52. package/dist/index-584yahed.js +6037 -0
  53. package/dist/index-97t2rmtf.js +42 -0
  54. package/dist/index-9qgkpv56.js +27183 -0
  55. package/dist/index-bef62z3r.js +437 -0
  56. package/dist/index-rkhh0457.js +187 -0
  57. package/dist/index.d.ts +37 -0
  58. package/dist/index.js +353 -0
  59. package/dist/main.d.ts +1 -0
  60. package/dist/mcp/client.d.ts +105 -0
  61. package/dist/mcp/control-seam.d.ts +25 -0
  62. package/dist/mcp/control.d.ts +5 -0
  63. package/dist/mcp/elicitation.d.ts +35 -0
  64. package/dist/mcp/env.d.ts +12 -0
  65. package/dist/mcp/lifecycle.d.ts +142 -0
  66. package/dist/mcp/output-cap.d.ts +15 -0
  67. package/dist/mcp/state.d.ts +24 -0
  68. package/dist/mcp/test-fixtures.d.ts +88 -0
  69. package/dist/mcp/transports/__fixtures__/stdio-server.d.ts +1 -0
  70. package/dist/mcp/transports/http.d.ts +5 -0
  71. package/dist/mcp/transports/sdk.d.ts +5 -0
  72. package/dist/mcp/transports/sse.d.ts +3 -0
  73. package/dist/mcp/transports/stdio.d.ts +35 -0
  74. package/dist/mcp/winter-server.d.ts +2 -0
  75. package/dist/messaging/reference-adapter.d.ts +88 -0
  76. package/dist/messaging/router.d.ts +8 -0
  77. package/dist/paths/project-dir-name.d.ts +2 -0
  78. package/dist/paths/temp.d.ts +25 -0
  79. package/dist/permissions/approvals.d.ts +107 -0
  80. package/dist/permissions/auto/caches.d.ts +53 -0
  81. package/dist/permissions/auto/config.d.ts +37 -0
  82. package/dist/permissions/auto/engine.d.ts +74 -0
  83. package/dist/permissions/auto/envelope.d.ts +45 -0
  84. package/dist/permissions/auto/inheritance.d.ts +27 -0
  85. package/dist/permissions/edit-recognition.d.ts +30 -0
  86. package/dist/permissions/evaluator.d.ts +284 -0
  87. package/dist/permissions/file-rules.d.ts +384 -0
  88. package/dist/permissions/grammar.d.ts +113 -0
  89. package/dist/permissions/paths.d.ts +32 -0
  90. package/dist/permissions/policy-state.d.ts +64 -0
  91. package/dist/permissions/prompt-stage.d.ts +3 -0
  92. package/dist/permissions/protected.d.ts +54 -0
  93. package/dist/permissions/ruleset.d.ts +134 -0
  94. package/dist/permissions/shell-structure.d.ts +41 -0
  95. package/dist/plugins/bundle.d.ts +100 -0
  96. package/dist/plugins/installed.d.ts +30 -0
  97. package/dist/plugins/loader.d.ts +56 -0
  98. package/dist/plugins/manifest.d.ts +115 -0
  99. package/dist/production-wiring.d.ts +340 -0
  100. package/dist/protocol/channel.d.ts +22 -0
  101. package/dist/provider/advisor-route.d.ts +47 -0
  102. package/dist/provider/bridge.d.ts +124 -0
  103. package/dist/provider/classifier/model-classifier.d.ts +82 -0
  104. package/dist/provider/classifier/prompt.d.ts +62 -0
  105. package/dist/provider/classifier/verdict-schema.d.ts +83 -0
  106. package/dist/provider/credential-api.d.ts +160 -0
  107. package/dist/provider/family-listing.d.ts +27 -0
  108. package/dist/provider/first-party.d.ts +4 -0
  109. package/dist/provider/keychain-store.d.ts +59 -0
  110. package/dist/provider/lean-prompt.d.ts +7 -0
  111. package/dist/provider/mock.d.ts +55 -0
  112. package/dist/provider/scenario-fake.d.ts +96 -0
  113. package/dist/provider/selection.d.ts +115 -0
  114. package/dist/provider/session-provider.d.ts +426 -0
  115. package/dist/provider/slots.d.ts +120 -0
  116. package/dist/provider/stream-frames.d.ts +25 -0
  117. package/dist/provider/tool-secret.d.ts +57 -0
  118. package/dist/rpc/bridge.d.ts +14 -0
  119. package/dist/rpc/mcp-control.d.ts +26 -0
  120. package/dist/runtime.d.ts +14 -0
  121. package/dist/sandbox/profile.d.ts +249 -0
  122. package/dist/sandbox/spawn.d.ts +139 -0
  123. package/dist/settings/env-filter.d.ts +52 -0
  124. package/dist/settings/loaders/hooks.d.ts +44 -0
  125. package/dist/settings/loaders/mcp-config.d.ts +83 -0
  126. package/dist/settings/loaders/plugin-mcp.d.ts +3 -0
  127. package/dist/settings/loaders/strict-plugin-only.d.ts +13 -0
  128. package/dist/settings/resolve.d.ts +2 -0
  129. package/dist/settings/sources.d.ts +2 -0
  130. package/dist/settings/trust.d.ts +36 -0
  131. package/dist/skills/attachment.d.ts +25 -0
  132. package/dist/skills/frontmatter.d.ts +64 -0
  133. package/dist/skills/index.d.ts +16 -0
  134. package/dist/skills/listing.d.ts +89 -0
  135. package/dist/skills/loader.d.ts +104 -0
  136. package/dist/skills/option.d.ts +68 -0
  137. package/dist/skills/permission-rules.d.ts +21 -0
  138. package/dist/skills/runtime.d.ts +21 -0
  139. package/dist/skills/store.d.ts +163 -0
  140. package/dist/store/continuation-attach.d.ts +44 -0
  141. package/dist/store/dialect.d.ts +526 -0
  142. package/dist/store/provider-state.d.ts +188 -0
  143. package/dist/store/resume.d.ts +92 -0
  144. package/dist/structured/ajv-seam.d.ts +7 -0
  145. package/dist/structured/descriptor.d.ts +9 -0
  146. package/dist/structured/seam.d.ts +51 -0
  147. package/dist/structured/validator.d.ts +22 -0
  148. package/dist/subagents/activity.d.ts +13 -0
  149. package/dist/subagents/availability.d.ts +30 -0
  150. package/dist/subagents/builtin-agents.d.ts +37 -0
  151. package/dist/subagents/child-engine.d.ts +198 -0
  152. package/dist/subagents/child-handle.d.ts +344 -0
  153. package/dist/subagents/definitions.d.ts +189 -0
  154. package/dist/subagents/fork.d.ts +55 -0
  155. package/dist/subagents/git-root.d.ts +1 -0
  156. package/dist/subagents/limits.d.ts +28 -0
  157. package/dist/subagents/notification-queue.d.ts +233 -0
  158. package/dist/subagents/plugin-agents.d.ts +5 -0
  159. package/dist/subagents/policy.d.ts +46 -0
  160. package/dist/subagents/register-default-factory.d.ts +66 -0
  161. package/dist/subagents/resolution.d.ts +56 -0
  162. package/dist/subagents/restore.d.ts +9 -0
  163. package/dist/subagents/roster.d.ts +17 -0
  164. package/dist/subagents/test-fakes.d.ts +12 -0
  165. package/dist/subagents/tool-pools.d.ts +69 -0
  166. package/dist/subagents/watchdog.d.ts +13 -0
  167. package/dist/subagents/workspace.d.ts +27 -0
  168. package/dist/testing.d.ts +5 -0
  169. package/dist/testing.js +194 -0
  170. package/dist/tools/background-tasks.d.ts +10 -0
  171. package/dist/tools/descriptors/_shared.d.ts +34 -0
  172. package/dist/tools/descriptors/advisor.d.ts +1 -0
  173. package/dist/tools/descriptors/agent.d.ts +47 -0
  174. package/dist/tools/descriptors/artifact.d.ts +1 -0
  175. package/dist/tools/descriptors/ask-user-question.d.ts +1 -0
  176. package/dist/tools/descriptors/bash.d.ts +20 -0
  177. package/dist/tools/descriptors/claude-design.d.ts +1 -0
  178. package/dist/tools/descriptors/cron-create.d.ts +1 -0
  179. package/dist/tools/descriptors/cron-delete.d.ts +1 -0
  180. package/dist/tools/descriptors/cron-list.d.ts +1 -0
  181. package/dist/tools/descriptors/edit.d.ts +1 -0
  182. package/dist/tools/descriptors/end-conversation.d.ts +1 -0
  183. package/dist/tools/descriptors/enter-plan-mode.d.ts +1 -0
  184. package/dist/tools/descriptors/enter-worktree.d.ts +1 -0
  185. package/dist/tools/descriptors/exit-plan-mode.d.ts +1 -0
  186. package/dist/tools/descriptors/exit-worktree.d.ts +1 -0
  187. package/dist/tools/descriptors/glob.d.ts +1 -0
  188. package/dist/tools/descriptors/grep.d.ts +1 -0
  189. package/dist/tools/descriptors/index.d.ts +59 -0
  190. package/dist/tools/descriptors/list-agents.d.ts +1 -0
  191. package/dist/tools/descriptors/list-mcp-resources-tool.d.ts +1 -0
  192. package/dist/tools/descriptors/lsp.d.ts +1 -0
  193. package/dist/tools/descriptors/monitor.d.ts +1 -0
  194. package/dist/tools/descriptors/notebook-edit.d.ts +1 -0
  195. package/dist/tools/descriptors/powershell.d.ts +1 -0
  196. package/dist/tools/descriptors/projects.d.ts +1 -0
  197. package/dist/tools/descriptors/propose-goal.d.ts +1 -0
  198. package/dist/tools/descriptors/propose-skills.d.ts +1 -0
  199. package/dist/tools/descriptors/push-notification.d.ts +1 -0
  200. package/dist/tools/descriptors/read-mcp-resource-dir-tool.d.ts +1 -0
  201. package/dist/tools/descriptors/read-mcp-resource-tool.d.ts +1 -0
  202. package/dist/tools/descriptors/read-notifications.d.ts +1 -0
  203. package/dist/tools/descriptors/read.d.ts +1 -0
  204. package/dist/tools/descriptors/refresh-mcp-tools.d.ts +1 -0
  205. package/dist/tools/descriptors/remote-trigger.d.ts +1 -0
  206. package/dist/tools/descriptors/repl.d.ts +1 -0
  207. package/dist/tools/descriptors/report-findings.d.ts +1 -0
  208. package/dist/tools/descriptors/schedule-wakeup.d.ts +1 -0
  209. package/dist/tools/descriptors/send-feedback.d.ts +1 -0
  210. package/dist/tools/descriptors/send-message.d.ts +1 -0
  211. package/dist/tools/descriptors/send-user-file.d.ts +1 -0
  212. package/dist/tools/descriptors/share-onboarding-guide.d.ts +1 -0
  213. package/dist/tools/descriptors/show-onboarding-role-picker.d.ts +1 -0
  214. package/dist/tools/descriptors/skill.d.ts +1 -0
  215. package/dist/tools/descriptors/structured-output.d.ts +1 -0
  216. package/dist/tools/descriptors/task-create.d.ts +1 -0
  217. package/dist/tools/descriptors/task-get.d.ts +1 -0
  218. package/dist/tools/descriptors/task-list.d.ts +1 -0
  219. package/dist/tools/descriptors/task-output.d.ts +1 -0
  220. package/dist/tools/descriptors/task-stop.d.ts +1 -0
  221. package/dist/tools/descriptors/task-update.d.ts +1 -0
  222. package/dist/tools/descriptors/todo-write.d.ts +1 -0
  223. package/dist/tools/descriptors/tool-search.d.ts +1 -0
  224. package/dist/tools/descriptors/wait-for-mcp-servers.d.ts +1 -0
  225. package/dist/tools/descriptors/web-fetch.d.ts +8 -0
  226. package/dist/tools/descriptors/web-search.d.ts +15 -0
  227. package/dist/tools/descriptors/winter-list-agents.d.ts +1 -0
  228. package/dist/tools/descriptors/winter-send-message.d.ts +1 -0
  229. package/dist/tools/descriptors/workflow.d.ts +1 -0
  230. package/dist/tools/descriptors/write.d.ts +1 -0
  231. package/dist/tools/impl/_caller.d.ts +14 -0
  232. package/dist/tools/impl/_domains.d.ts +25 -0
  233. package/dist/tools/impl/_exa-client.d.ts +122 -0
  234. package/dist/tools/impl/_exa-session-client.d.ts +23 -0
  235. package/dist/tools/impl/_inner-model.d.ts +135 -0
  236. package/dist/tools/impl/_search-budget.d.ts +36 -0
  237. package/dist/tools/impl/_web-fetch-cache.d.ts +37 -0
  238. package/dist/tools/impl/_web-fetch-html.d.ts +26 -0
  239. package/dist/tools/impl/_web-fetch-net.d.ts +99 -0
  240. package/dist/tools/impl/_web-search-assembler.d.ts +57 -0
  241. package/dist/tools/impl/advisor.d.ts +37 -0
  242. package/dist/tools/impl/agent.d.ts +10 -0
  243. package/dist/tools/impl/ask-user-question.d.ts +5 -0
  244. package/dist/tools/impl/background-task-runtime.d.ts +272 -0
  245. package/dist/tools/impl/bash.d.ts +78 -0
  246. package/dist/tools/impl/cron.d.ts +11 -0
  247. package/dist/tools/impl/edit.d.ts +1 -0
  248. package/dist/tools/impl/enter-plan-mode.d.ts +4 -0
  249. package/dist/tools/impl/enter-worktree.d.ts +25 -0
  250. package/dist/tools/impl/exit-plan-mode.d.ts +4 -0
  251. package/dist/tools/impl/exit-worktree.d.ts +4 -0
  252. package/dist/tools/impl/glob.d.ts +1 -0
  253. package/dist/tools/impl/grep.d.ts +19 -0
  254. package/dist/tools/impl/index.d.ts +37 -0
  255. package/dist/tools/impl/list-agents.d.ts +7 -0
  256. package/dist/tools/impl/list-mcp-resources-tool.d.ts +9 -0
  257. package/dist/tools/impl/monitor.d.ts +66 -0
  258. package/dist/tools/impl/notebook-edit.d.ts +1 -0
  259. package/dist/tools/impl/push-notification.d.ts +4 -0
  260. package/dist/tools/impl/read-ladder.d.ts +25 -0
  261. package/dist/tools/impl/read-mcp-resource-dir-tool.d.ts +9 -0
  262. package/dist/tools/impl/read-mcp-resource-tool.d.ts +9 -0
  263. package/dist/tools/impl/read-notifications.d.ts +5 -0
  264. package/dist/tools/impl/read.d.ts +44 -0
  265. package/dist/tools/impl/refresh-mcp-tools.d.ts +8 -0
  266. package/dist/tools/impl/report-findings.d.ts +1 -0
  267. package/dist/tools/impl/schedule-wakeup.d.ts +2 -0
  268. package/dist/tools/impl/send-message.d.ts +7 -0
  269. package/dist/tools/impl/skill.d.ts +5 -0
  270. package/dist/tools/impl/task-graph.d.ts +1 -0
  271. package/dist/tools/impl/task-output.d.ts +16 -0
  272. package/dist/tools/impl/task-stop.d.ts +11 -0
  273. package/dist/tools/impl/todo-write.d.ts +8 -0
  274. package/dist/tools/impl/tool-search.d.ts +4 -0
  275. package/dist/tools/impl/wait-for-mcp-servers.d.ts +29 -0
  276. package/dist/tools/impl/web-fetch.d.ts +36 -0
  277. package/dist/tools/impl/web-search.d.ts +30 -0
  278. package/dist/tools/impl/workflow.d.ts +5 -0
  279. package/dist/tools/impl/write.d.ts +8 -0
  280. package/dist/tools/paths-seam.d.ts +6 -0
  281. package/dist/tools/read-state.d.ts +12 -0
  282. package/dist/tools/registry.d.ts +423 -0
  283. package/dist/tools/task-graph-store.d.ts +61 -0
  284. package/dist/toolsearch/aliases.d.ts +26 -0
  285. package/dist/toolsearch/exposure.d.ts +30 -0
  286. package/dist/toolsearch/ranking.d.ts +6 -0
  287. package/dist/toolsearch/search.d.ts +45 -0
  288. package/dist/version.d.ts +1 -0
  289. package/dist/version.js +5 -0
  290. package/dist/web/fetchable-url.d.ts +28 -0
  291. package/dist/web/preapproved-hosts.d.ts +52 -0
  292. package/dist/web/private-address.d.ts +55 -0
  293. package/dist/web/session-runtime.d.ts +86 -0
  294. package/dist/workflows/bridge.d.ts +87 -0
  295. package/dist/workflows/budget.d.ts +24 -0
  296. package/dist/workflows/host-registry.d.ts +142 -0
  297. package/dist/workflows/journal.d.ts +29 -0
  298. package/dist/workflows/meta.d.ts +45 -0
  299. package/dist/workflows/registry.d.ts +24 -0
  300. package/dist/workflows/runtime.d.ts +254 -0
  301. package/dist/workflows/sandbox.d.ts +49 -0
  302. package/dist/workflows/script-api.d.ts +58 -0
  303. package/dist/workflows/seam.d.ts +92 -0
  304. package/dist/workflows/semaphore.d.ts +16 -0
  305. package/dist/workflows/store.d.ts +177 -0
  306. package/dist/workflows/subprocess-entry.d.ts +38 -0
  307. package/dist/workflows/subprocess-entry.js +14 -0
  308. package/dist/workflows/transcript.d.ts +56 -0
  309. package/dist/workflows/types.d.ts +84 -0
  310. package/dist/workflows/worker-harness.d.ts +45 -0
  311. package/package.json +76 -0
package/dist/index.js ADDED
@@ -0,0 +1,353 @@
1
+ import {
2
+ createRpcBridge2,
3
+ registerTool2,
4
+ onCompaction2,
5
+ WinterPathsError2,
6
+ sessionTempDir2,
7
+ ensureTasksDir2,
8
+ resolveProjectDirName2,
9
+ DEFAULT_CONTEXT_WINDOW_TOKENS2,
10
+ createContextAccountant2,
11
+ runEngine2,
12
+ recordedProviderSystems2,
13
+ resetRecordedProviderSystems2,
14
+ echoProvider2,
15
+ scriptedProvider2,
16
+ stubExecutor2,
17
+ P5_FIXTURE_SKILL_NAME2,
18
+ P5_WORKFLOW_SCRIPT2,
19
+ isTestProviderName2,
20
+ testProviderByName2,
21
+ SUBAGENT_CHILD_PROBE_TEXT2,
22
+ MCP_SDK_TEST_SERVER_NAME2,
23
+ MCP_SDK_TEST_TOOL_NAME2,
24
+ BGTASK_TEST_TOOL_NAME2,
25
+ registerBgTaskTestTool2,
26
+ ResumeTargetError2,
27
+ ResumeTruncationError2,
28
+ findContinueTarget2,
29
+ findResumeTarget2,
30
+ toDialectEntries2,
31
+ truncateAt2,
32
+ rebuildProviderMessages2,
33
+ userEntry2,
34
+ winterMessageIdFor2,
35
+ assistantEntry2,
36
+ CLAUDE_COMPACT_SUMMARY_PREAMBLE2,
37
+ claudeCompactBoundaryEntry2,
38
+ claudeCompactSummaryEntry2,
39
+ TranscriptWriterError2,
40
+ TranscriptWriter2,
41
+ RUNTIME_ENGINE_VERSION2,
42
+ resolveEngineSession2,
43
+ resolveProductionWinterHome2,
44
+ providerCredentialRef2,
45
+ storeProviderCredential2,
46
+ deleteProviderCredential2,
47
+ validateProviderCredential2,
48
+ CLASSIFIER_TOOL_NAME2,
49
+ CLASSIFIER_VERDICT_SCHEMA2,
50
+ CLASSIFIER_NO_VERDICT_REASONS2,
51
+ DEFAULT_MAX_CONTEXT_CHARS2,
52
+ CLASSIFIER_SYSTEM_PROMPT2,
53
+ DEFAULT_CLASSIFIER_TIMEOUT_MS2,
54
+ createModelClassifier2,
55
+ selectClassifierRoute2
56
+ } from "./index-9qgkpv56.js";
57
+ import"./index-bef62z3r.js";
58
+ import {
59
+ createInMemoryChannel2
60
+ } from "./index-97t2rmtf.js";
61
+
62
+ // src/runtime.ts
63
+ async function runWinterRuntime(opts) {
64
+ const config = {
65
+ sessionId: opts.sessionId,
66
+ cwd: opts.cwd,
67
+ model: opts.model,
68
+ ...opts.permissionMode !== undefined ? { permissionMode: opts.permissionMode } : {},
69
+ ...opts.maxTurns !== undefined ? { maxTurns: opts.maxTurns } : {}
70
+ };
71
+ await runEngine2({
72
+ config,
73
+ input: opts.input,
74
+ output: opts.output,
75
+ provider: opts.provider,
76
+ tools: opts.tools ?? stubExecutor2,
77
+ ...opts.store !== undefined ? { store: opts.store } : {}
78
+ });
79
+ }
80
+ // src/provider/scenario-fake.ts
81
+ import { serve } from "bun";
82
+ var SCENARIO_MODELS = {
83
+ anthropic: "anthropic/claude-sonnet-5",
84
+ openaiResponses: "openai/gpt-4.1",
85
+ openaiChat: "deepseek/deepseek-v4-pro",
86
+ gemini: "google/gemini-2.5-flash"
87
+ };
88
+ var SCENARIO_TOOL_CALLING_NONE = "anthropic/claude-sonnet-4.5";
89
+ var SCENARIO_CHILD_MODEL = "anthropic/claude-haiku-4-5-20251001";
90
+ var SCENARIO_DELEGATE_MARKER = "winter-t10-delegate";
91
+ var SCENARIO_CHILD_AGENT = "prober";
92
+ var SCENARIO_TOOL_NAME = "Glob";
93
+ var SCENARIO_TOOL_INPUT = { pattern: "*.winter-t10-no-such-file" };
94
+ var SCENARIO_FIRST_TEXT = "checking the tree";
95
+ var SCENARIO_FINAL_TEXT = "the provider scenario is done";
96
+ var CREDENTIAL_HEADERS = new Set(["authorization", "x-api-key", "api-key", "x-goog-api-key", "proxy-authorization", "x-amz-security-token"]);
97
+ function redactHeaderValue(name, value) {
98
+ if (!CREDENTIAL_HEADERS.has(name.toLowerCase()))
99
+ return value;
100
+ const space = value.indexOf(" ");
101
+ return space > 0 ? `${value.slice(0, space)} ***` : "***";
102
+ }
103
+ function sse(frames, eventNames) {
104
+ const body = frames.map((payload, i) => {
105
+ const event = eventNames?.[i];
106
+ return `${event !== undefined ? `event: ${event}
107
+ ` : ""}data: ${JSON.stringify(payload)}
108
+
109
+ `;
110
+ }).join("");
111
+ return new Response(body, { headers: { "content-type": "text/event-stream", "cache-control": "no-cache" } });
112
+ }
113
+ var SCENARIO_CHILD_WIRE_ID = "claude-haiku-4-5-20251001";
114
+ function anthropicFrames(withTool, delegating = false) {
115
+ const frames = [{ type: "message_start", message: { id: "msg_p6", type: "message", role: "assistant", model: "claude-sonnet-5", content: [], usage: { input_tokens: 7, output_tokens: 3 } } }];
116
+ const events = ["message_start"];
117
+ const push = (event, payload) => {
118
+ events.push(event);
119
+ frames.push(payload);
120
+ };
121
+ if (withTool) {
122
+ const toolName = delegating ? "Agent" : SCENARIO_TOOL_NAME;
123
+ const toolInput = delegating ? { subagent_type: SCENARIO_CHILD_AGENT, description: "r6-17 probe", prompt: "answer briefly" } : SCENARIO_TOOL_INPUT;
124
+ push("content_block_start", { type: "content_block_start", index: 0, content_block: { type: "text", text: "" } });
125
+ push("content_block_delta", { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: SCENARIO_FIRST_TEXT } });
126
+ push("content_block_stop", { type: "content_block_stop", index: 0 });
127
+ push("content_block_start", { type: "content_block_start", index: 1, content_block: { type: "tool_use", id: "toolu_p6", name: toolName, input: {} } });
128
+ push("content_block_delta", { type: "content_block_delta", index: 1, delta: { type: "input_json_delta", partial_json: JSON.stringify(toolInput) } });
129
+ push("content_block_stop", { type: "content_block_stop", index: 1 });
130
+ push("message_delta", { type: "message_delta", delta: { stop_reason: "tool_use", stop_sequence: null }, usage: { output_tokens: 3 } });
131
+ } else {
132
+ push("content_block_start", { type: "content_block_start", index: 0, content_block: { type: "text", text: "" } });
133
+ push("content_block_delta", { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: SCENARIO_FINAL_TEXT } });
134
+ push("content_block_stop", { type: "content_block_stop", index: 0 });
135
+ push("message_delta", { type: "message_delta", delta: { stop_reason: "end_turn", stop_sequence: null }, usage: { output_tokens: 4 } });
136
+ }
137
+ push("message_stop", { type: "message_stop" });
138
+ return { frames, events };
139
+ }
140
+ function responsesFrames(withTool) {
141
+ const out = [{ type: "response.created", response: { id: "resp_p6", model: "gpt-4.1", output: [] } }];
142
+ if (withTool) {
143
+ out.push({ type: "response.output_item.added", output_index: 0, item: { id: "msg_p6", type: "message", role: "assistant", content: [] } }, { type: "response.output_text.delta", item_id: "msg_p6", output_index: 0, content_index: 0, delta: SCENARIO_FIRST_TEXT }, { type: "response.output_item.done", output_index: 0, item: { id: "msg_p6", type: "message", role: "assistant", content: [{ type: "output_text", text: SCENARIO_FIRST_TEXT }] } }, { type: "response.output_item.added", output_index: 1, item: { id: "fc_p6", type: "function_call", call_id: "call_p6", name: SCENARIO_TOOL_NAME, arguments: "" } }, { type: "response.function_call_arguments.delta", item_id: "fc_p6", output_index: 1, delta: JSON.stringify(SCENARIO_TOOL_INPUT) }, { type: "response.output_item.done", output_index: 1, item: { id: "fc_p6", type: "function_call", call_id: "call_p6", name: SCENARIO_TOOL_NAME, arguments: JSON.stringify(SCENARIO_TOOL_INPUT) } });
144
+ } else {
145
+ out.push({ type: "response.output_item.added", output_index: 0, item: { id: "msg_p6b", type: "message", role: "assistant", content: [] } }, { type: "response.output_text.delta", item_id: "msg_p6b", output_index: 0, content_index: 0, delta: SCENARIO_FINAL_TEXT }, { type: "response.output_item.done", output_index: 0, item: { id: "msg_p6b", type: "message", role: "assistant", content: [{ type: "output_text", text: SCENARIO_FINAL_TEXT }] } });
146
+ }
147
+ out.push({ type: "response.completed", response: { id: "resp_p6", model: "gpt-4.1", status: "completed", usage: { input_tokens: 7, output_tokens: 4 }, output: [] } });
148
+ return out;
149
+ }
150
+ function chatFrames(withTool) {
151
+ const base = { id: "chatcmpl-p6", object: "chat.completion.chunk", model: "deepseek-v4-pro" };
152
+ const out = [{ ...base, choices: [{ index: 0, delta: { role: "assistant", content: "" } }] }];
153
+ if (withTool) {
154
+ out.push({ ...base, choices: [{ index: 0, delta: { content: SCENARIO_FIRST_TEXT } }] }, { ...base, choices: [{ index: 0, delta: { tool_calls: [{ index: 0, id: "call_p6", type: "function", function: { name: SCENARIO_TOOL_NAME, arguments: "" } }] } }] }, { ...base, choices: [{ index: 0, delta: { tool_calls: [{ index: 0, function: { arguments: JSON.stringify(SCENARIO_TOOL_INPUT) } }] } }] }, { ...base, choices: [{ index: 0, delta: {}, finish_reason: "tool_calls" }] });
155
+ } else {
156
+ out.push({ ...base, choices: [{ index: 0, delta: { content: SCENARIO_FINAL_TEXT } }] }, { ...base, choices: [{ index: 0, delta: {}, finish_reason: "stop" }] });
157
+ }
158
+ out.push({ ...base, choices: [], usage: { prompt_tokens: 7, completion_tokens: 4, total_tokens: 11 } });
159
+ return out;
160
+ }
161
+ function geminiFrames(withTool) {
162
+ const parts = withTool ? [{ text: SCENARIO_FIRST_TEXT }, { functionCall: { name: SCENARIO_TOOL_NAME, args: SCENARIO_TOOL_INPUT } }] : [{ text: SCENARIO_FINAL_TEXT }];
163
+ return [
164
+ {
165
+ candidates: [{ content: { role: "model", parts }, finishReason: "STOP", index: 0 }],
166
+ usageMetadata: { promptTokenCount: 7, candidatesTokenCount: 4, totalTokenCount: 11 },
167
+ modelVersion: "gemini-2.5-flash"
168
+ }
169
+ ];
170
+ }
171
+ function carriesToolResult(body) {
172
+ return body.includes("tool_result") || body.includes("function_call_output") || body.includes("functionResponse") || body.includes('"role":"tool"');
173
+ }
174
+ async function startScenarioFake(options = {}) {
175
+ const requests = [];
176
+ let lastWasScriptedRefusal = false;
177
+ const server = serve({
178
+ hostname: "127.0.0.1",
179
+ port: 0,
180
+ async fetch(req) {
181
+ const url = new URL(req.url);
182
+ const headers = {};
183
+ req.headers.forEach((value, name) => {
184
+ headers[name.toLowerCase()] = redactHeaderValue(name, value);
185
+ });
186
+ const body = req.method === "GET" || req.method === "HEAD" ? "" : await req.text();
187
+ requests.push({ method: req.method, path: url.pathname, search: url.search, headers, body });
188
+ if (options.failModel !== undefined && (body.includes(`"model":"${options.failModel.wireModel}"`) || url.pathname.includes(`/models/${options.failModel.wireModel}:`))) {
189
+ return new Response(JSON.stringify({ error: { message: "winter scenario fake: scripted failure for one model", type: "server_error" } }), {
190
+ status: options.failModel.status,
191
+ headers: { "content-type": "application/json", ...options.failModel.retryAfter !== undefined ? { "retry-after": options.failModel.retryAfter } : {} }
192
+ });
193
+ }
194
+ if (options.alwaysFailStatus !== undefined) {
195
+ return new Response(JSON.stringify({ error: { message: "winter scenario fake: scripted provider failure", type: "server_error" } }), {
196
+ status: options.alwaysFailStatus,
197
+ headers: { "content-type": "application/json", "retry-after": "0" }
198
+ });
199
+ }
200
+ if (options.firstAttemptStatus !== undefined && !lastWasScriptedRefusal && !carriesToolResult(body)) {
201
+ lastWasScriptedRefusal = true;
202
+ return new Response(JSON.stringify({ error: { message: "winter scenario fake: scripted first-attempt refusal", type: "rate_limit_error" } }), {
203
+ status: options.firstAttemptStatus,
204
+ headers: {
205
+ "content-type": "application/json",
206
+ "retry-after": "0",
207
+ "anthropic-ratelimit-requests-limit": "100",
208
+ "anthropic-ratelimit-requests-remaining": "0",
209
+ "x-ratelimit-limit-requests": "100",
210
+ "x-ratelimit-remaining-requests": "0"
211
+ }
212
+ });
213
+ }
214
+ lastWasScriptedRefusal = false;
215
+ const withTool = !carriesToolResult(body);
216
+ const isChild = body.includes(`"model":"${SCENARIO_CHILD_WIRE_ID}"`);
217
+ const delegating = withTool && !isChild && body.includes(SCENARIO_DELEGATE_MARKER);
218
+ if (url.pathname === "/v1/messages") {
219
+ const { frames, events } = anthropicFrames(withTool && !isChild, delegating);
220
+ if (options.dropAfterFirstEvent === true) {
221
+ const first = `event: ${events[0]}
222
+ data: ${JSON.stringify(frames[0])}
223
+
224
+ `;
225
+ const torn = new ReadableStream({
226
+ start(controller) {
227
+ controller.enqueue(new TextEncoder().encode(first));
228
+ setTimeout(() => controller.error(new Error("winter scenario fake: connection dropped after the first event")), 5);
229
+ }
230
+ });
231
+ return new Response(torn, { headers: { "content-type": "text/event-stream", "cache-control": "no-cache" } });
232
+ }
233
+ return sse(frames, events);
234
+ }
235
+ if (url.pathname === "/responses")
236
+ return sse(responsesFrames(withTool));
237
+ if (url.pathname === "/chat/completions")
238
+ return sse(chatFrames(withTool));
239
+ if (url.pathname.endsWith(":streamGenerateContent"))
240
+ return sse(geminiFrames(withTool));
241
+ return new Response(JSON.stringify({ error: { message: `winter scenario fake: no route for ${req.method} ${url.pathname}` } }), {
242
+ status: 404,
243
+ headers: { "content-type": "application/json" }
244
+ });
245
+ }
246
+ });
247
+ return {
248
+ url: `http://127.0.0.1:${server.port}`,
249
+ requests,
250
+ async close() {
251
+ await server.stop(true);
252
+ }
253
+ };
254
+ }
255
+
256
+ // src/index.ts
257
+ import { resolveWinterHome } from "@yanlinglabs/winter-agent-sdk";
258
+ import { transcriptProjectKey } from "@yanlinglabs/winter-agent-sdk";
259
+ import { compatibilityKeys } from "@yanlinglabs/winter-agent-sdk";
260
+ import {
261
+ WinterCompatibilitySessionStore,
262
+ WinterStoreError,
263
+ WinterStoreLeaseError,
264
+ DIALECT_RECORD_ENTRY_TYPE
265
+ } from "@yanlinglabs/winter-agent-sdk";
266
+ import {
267
+ PROTOCOL_VERSION,
268
+ encodeFrame,
269
+ decodeFrame,
270
+ splitFrames,
271
+ ProtocolError
272
+ } from "@yanlinglabs/winter-agent-sdk";
273
+ export {
274
+ BGTASK_TEST_TOOL_NAME2 as BGTASK_TEST_TOOL_NAME,
275
+ CLASSIFIER_NO_VERDICT_REASONS2 as CLASSIFIER_NO_VERDICT_REASONS,
276
+ CLASSIFIER_SYSTEM_PROMPT2 as CLASSIFIER_SYSTEM_PROMPT,
277
+ CLASSIFIER_TOOL_NAME2 as CLASSIFIER_TOOL_NAME,
278
+ CLASSIFIER_VERDICT_SCHEMA2 as CLASSIFIER_VERDICT_SCHEMA,
279
+ CLAUDE_COMPACT_SUMMARY_PREAMBLE2 as CLAUDE_COMPACT_SUMMARY_PREAMBLE,
280
+ DEFAULT_CLASSIFIER_TIMEOUT_MS2 as DEFAULT_CLASSIFIER_TIMEOUT_MS,
281
+ DEFAULT_CONTEXT_WINDOW_TOKENS2 as DEFAULT_CONTEXT_WINDOW_TOKENS,
282
+ DEFAULT_MAX_CONTEXT_CHARS2 as DEFAULT_MAX_CONTEXT_CHARS,
283
+ DIALECT_RECORD_ENTRY_TYPE,
284
+ MCP_SDK_TEST_SERVER_NAME2 as MCP_SDK_TEST_SERVER_NAME,
285
+ MCP_SDK_TEST_TOOL_NAME2 as MCP_SDK_TEST_TOOL_NAME,
286
+ P5_FIXTURE_SKILL_NAME2 as P5_FIXTURE_SKILL_NAME,
287
+ P5_WORKFLOW_SCRIPT2 as P5_WORKFLOW_SCRIPT,
288
+ PROTOCOL_VERSION,
289
+ ProtocolError,
290
+ RUNTIME_ENGINE_VERSION2 as RUNTIME_ENGINE_VERSION,
291
+ ResumeTargetError2 as ResumeTargetError,
292
+ ResumeTruncationError2 as ResumeTruncationError,
293
+ SCENARIO_CHILD_AGENT,
294
+ SCENARIO_CHILD_MODEL,
295
+ SCENARIO_CHILD_WIRE_ID,
296
+ SCENARIO_DELEGATE_MARKER,
297
+ SCENARIO_FINAL_TEXT,
298
+ SCENARIO_FIRST_TEXT,
299
+ SCENARIO_MODELS,
300
+ SCENARIO_TOOL_CALLING_NONE,
301
+ SCENARIO_TOOL_INPUT,
302
+ SCENARIO_TOOL_NAME,
303
+ SUBAGENT_CHILD_PROBE_TEXT2 as SUBAGENT_CHILD_PROBE_TEXT,
304
+ TranscriptWriter2 as TranscriptWriter,
305
+ TranscriptWriterError2 as TranscriptWriterError,
306
+ WinterCompatibilitySessionStore,
307
+ WinterPathsError2 as WinterPathsError,
308
+ WinterStoreError,
309
+ WinterStoreLeaseError,
310
+ assistantEntry2 as assistantEntry,
311
+ claudeCompactBoundaryEntry2 as claudeCompactBoundaryEntry,
312
+ claudeCompactSummaryEntry2 as claudeCompactSummaryEntry,
313
+ compatibilityKeys,
314
+ createContextAccountant2 as createContextAccountant,
315
+ createInMemoryChannel2 as createInMemoryChannel,
316
+ createModelClassifier2 as createModelClassifier,
317
+ createRpcBridge2 as createRpcBridge,
318
+ decodeFrame,
319
+ deleteProviderCredential2 as deleteProviderCredential,
320
+ echoProvider2 as echoProvider,
321
+ encodeFrame,
322
+ ensureTasksDir2 as ensureTasksDir,
323
+ findContinueTarget2 as findContinueTarget,
324
+ findResumeTarget2 as findResumeTarget,
325
+ isTestProviderName2 as isTestProviderName,
326
+ onCompaction2 as onCompaction,
327
+ providerCredentialRef2 as providerCredentialRef,
328
+ rebuildProviderMessages2 as rebuildProviderMessages,
329
+ recordedProviderSystems2 as recordedProviderSystems,
330
+ registerBgTaskTestTool2 as registerBgTaskTestTool,
331
+ registerTool2 as registerTool,
332
+ resetRecordedProviderSystems2 as resetRecordedProviderSystems,
333
+ resolveEngineSession2 as resolveEngineSession,
334
+ resolveProductionWinterHome2 as resolveProductionWinterHome,
335
+ resolveProjectDirName2 as resolveProjectDirName,
336
+ resolveWinterHome,
337
+ runEngine2 as runEngine,
338
+ runWinterRuntime,
339
+ scriptedProvider2 as scriptedProvider,
340
+ selectClassifierRoute2 as selectClassifierRoute,
341
+ sessionTempDir2 as sessionTempDir,
342
+ splitFrames,
343
+ startScenarioFake,
344
+ storeProviderCredential2 as storeProviderCredential,
345
+ stubExecutor2 as stubExecutor,
346
+ testProviderByName2 as testProviderByName,
347
+ toDialectEntries2 as toDialectEntries,
348
+ transcriptProjectKey,
349
+ truncateAt2 as truncateAt,
350
+ userEntry2 as userEntry,
351
+ validateProviderCredential2 as validateProviderCredential,
352
+ winterMessageIdFor2 as winterMessageIdFor
353
+ };
package/dist/main.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,105 @@
1
+ import type { McpServerConfigForProcessTransport, McpVersionNegotiation } from "@yanlinglabs/winter-agent-sdk";
2
+ import { type InProcessMcpServer } from "./transports/sdk.js";
3
+ import { type ElicitationAsker } from "./elicitation.js";
4
+ export type McpConnectErrorCode = "timeout" | "spawn_failed" | "handshake_failed" | "needs_auth" | "unknown";
5
+ export declare class McpConnectError extends Error {
6
+ readonly code: McpConnectErrorCode;
7
+ /**
8
+ * The HTTP status an http/sse transport failed the handshake with, when there was one.
9
+ *
10
+ * Carried because the classification below is LOSSY on purpose (the state model needs only
11
+ * failed-vs-needsAuth) and the transport's message holds the response BODY, not the status -- so a
12
+ * direct caller that must tell a 429 from a 500 (the web search backend's anonymous tier answers a
13
+ * rate limit at `initialize`) had nothing to read. `declare` + conditional assignment so an error
14
+ * with no status has no own `httpStatus` key at all.
15
+ */
16
+ readonly httpStatus?: number;
17
+ constructor(code: McpConnectErrorCode, message: string, httpStatus?: number);
18
+ }
19
+ export interface McpToolAnnotationsInfo {
20
+ readOnlyHint?: boolean;
21
+ destructiveHint?: boolean;
22
+ openWorldHint?: boolean;
23
+ title?: string;
24
+ idempotentHint?: boolean;
25
+ }
26
+ export interface McpToolInfo {
27
+ name: string;
28
+ description?: string;
29
+ inputSchema: Record<string, unknown>;
30
+ outputSchema?: Record<string, unknown>;
31
+ annotations?: McpToolAnnotationsInfo;
32
+ _meta?: Record<string, unknown>;
33
+ }
34
+ export interface McpResourceInfo {
35
+ uri: string;
36
+ name?: string;
37
+ description?: string;
38
+ mimeType?: string;
39
+ }
40
+ export interface McpResourceContent {
41
+ uri: string;
42
+ mimeType?: string;
43
+ text?: string;
44
+ blobBase64?: string;
45
+ }
46
+ export interface McpToolCallResult {
47
+ content: unknown[];
48
+ isError?: boolean;
49
+ }
50
+ export interface ConnectedMcpClient {
51
+ readonly serverName: string;
52
+ /**
53
+ * The protocol revision this connection settled on: `2025-11-25` (or an older 2025-era revision a
54
+ * server counter-offered) on the legacy `initialize` handshake, `2026-07-28` when an `auto`/pinned
55
+ * `server/discover` probe selected the modern era. Read ONCE at connect -- a connection's era never
56
+ * changes after it is established (the v2 client resets it only on a fresh connect). Optional on
57
+ * the type so a hand-built fake (test-fixtures.ts's `createFakeConnectedMcpClient`) need not invent
58
+ * one.
59
+ */
60
+ readonly protocolVersion?: string;
61
+ listTools(): Promise<McpToolInfo[]>;
62
+ listResources(): Promise<McpResourceInfo[]>;
63
+ readResource(uri: string, opts?: {
64
+ timeoutMs?: number;
65
+ }): Promise<McpResourceContent[]>;
66
+ callTool(toolName: string, args: Record<string, unknown>, opts?: {
67
+ timeoutMs?: number;
68
+ }): Promise<McpToolCallResult>;
69
+ close(): Promise<void>;
70
+ }
71
+ export interface ConnectMcpServerOptions {
72
+ name: string;
73
+ config: McpServerConfigForProcessTransport;
74
+ connectTimeoutMs: number;
75
+ elicitationAsk: ElicitationAsker;
76
+ inProcessServer?: InProcessMcpServer;
77
+ /** `type: "http"` only: fail rather than follow a redirect -- see `buildHttpTransport`. For a direct caller whose headers carry a credential. */
78
+ refuseHttpRedirects?: boolean;
79
+ /**
80
+ * WS-23: the session cwd a STDIO server is spawned in. Optional on this options bag only because
81
+ * the other three transports have no process; a stdio config connected WITHOUT one is refused
82
+ * typed (`spawn_failed`) rather than spawned in the host process's cwd -- which, for an embedded
83
+ * session (one Worker per session inside a daemon), is the daemon's, not the session's.
84
+ */
85
+ cwd?: string;
86
+ /**
87
+ * Called when the connected server says its TOOL list changed (`notifications/tools/list_changed`
88
+ * on a legacy connection; the same notification over the auto-opened `subscriptions/listen` stream
89
+ * on a 2026-07-28 one). A SIGNAL, never a list: the v2 client is configured with
90
+ * `autoRefresh: false`, so this file never fetches or hands over a tool list of its own -- the
91
+ * caller (mcp/lifecycle.ts) re-queries through `listTools()` on its own staleness-guarded refresh
92
+ * path, which stays the ONE place a server's tools are (re-)registered. Only wired when the server
93
+ * advertises `tools.listChanged` (the v2 client skips the handler otherwise).
94
+ *
95
+ * No prompts/resources counterpart, deliberately: the runtime keeps no view of either to refresh.
96
+ * `listResources()`/`readResource()` below are live requests on every call (the bridge tools read
97
+ * through them), and Winter does not surface MCP prompts at all -- a handler for those two
98
+ * notifications would have nothing to update.
99
+ */
100
+ onToolListChanged?: () => void;
101
+ }
102
+ export declare function resolveVersionNegotiation(config: McpServerConfigForProcessTransport): McpVersionNegotiation;
103
+ export declare const AUTO_PROBE_TIMEOUT_CAP_MS = 5000;
104
+ export declare const MANUAL_LIST_MAX_PAGES = 64;
105
+ export declare function connectMcpServer(opts: ConnectMcpServerOptions): Promise<ConnectedMcpClient>;
@@ -0,0 +1,25 @@
1
+ import type { McpServerConfigForProcessTransport } from "@yanlinglabs/winter-agent-sdk";
2
+ export interface McpSetServersResult {
3
+ added: string[];
4
+ removed: string[];
5
+ errors: Record<string, string>;
6
+ }
7
+ export interface McpControlSeam {
8
+ reconnect(serverName: string): Promise<void>;
9
+ toggle(serverName: string, enabled: boolean): Promise<void>;
10
+ setServers(servers: Record<string, McpServerConfigForProcessTransport>): Promise<McpSetServersResult>;
11
+ }
12
+ export interface FakeMcpControlSeamCall {
13
+ reconnect: string[];
14
+ toggle: Array<{
15
+ serverName: string;
16
+ enabled: boolean;
17
+ }>;
18
+ setServers: Array<Record<string, McpServerConfigForProcessTransport>>;
19
+ }
20
+ export interface FakeMcpControlSeam extends McpControlSeam {
21
+ readonly calls: FakeMcpControlSeamCall;
22
+ setServersResult: McpSetServersResult;
23
+ failNextWith: Partial<Record<keyof McpControlSeam, Error>>;
24
+ }
25
+ export declare function createFakeMcpControlSeam(): FakeMcpControlSeam;
@@ -0,0 +1,5 @@
1
+ import type { McpControlSeam } from "./control-seam.js";
2
+ import type { McpLifecycleInternals } from "./lifecycle.js";
3
+ export declare function createMcpControlSeam(internals: McpLifecycleInternals, opts?: {
4
+ reservedServerName?: string;
5
+ }): McpControlSeam;
@@ -0,0 +1,35 @@
1
+ import type { Client } from "@modelcontextprotocol/client";
2
+ export interface ElicitationRequestPayload {
3
+ serverName: string;
4
+ message: string;
5
+ mode?: "form" | "url";
6
+ url?: string;
7
+ elicitationId?: string;
8
+ requestedSchema?: Record<string, unknown>;
9
+ title?: string;
10
+ displayName?: string;
11
+ description?: string;
12
+ }
13
+ export type ElicitationAction = "accept" | "decline" | "cancel";
14
+ export interface ElicitationResultPayload {
15
+ action: ElicitationAction;
16
+ content?: Record<string, unknown>;
17
+ }
18
+ export declare const MCP_ELICITATION_SUBTYPE = "mcp_elicitation";
19
+ export interface ElicitationSender {
20
+ request<T = unknown>(subtype: string, payload: unknown, opts?: {
21
+ timeoutMs?: number;
22
+ }): Promise<T>;
23
+ }
24
+ export type ElicitationAsker = (payload: ElicitationRequestPayload) => Promise<ElicitationResultPayload>;
25
+ export declare function createElicitationAsker(sender: ElicitationSender | undefined): ElicitationAsker;
26
+ interface RawElicitParams {
27
+ message: string;
28
+ mode?: "form" | "url" | undefined;
29
+ url?: string | undefined;
30
+ elicitationId?: string | undefined;
31
+ requestedSchema?: Record<string, unknown> | undefined;
32
+ }
33
+ export declare function buildElicitationPayload(serverName: string, params: RawElicitParams): ElicitationRequestPayload;
34
+ export declare function installElicitationHandler(client: Client, serverName: string, ask: ElicitationAsker): void;
35
+ export {};
@@ -0,0 +1,12 @@
1
+ import type { DeferralActivation } from "../tools/registry.js";
2
+ export type EnableToolSearchValue = DeferralActivation["enableToolSearch"];
3
+ export interface McpEnvConfig {
4
+ enableToolSearch: EnableToolSearchValue;
5
+ connectionNonblocking: boolean;
6
+ connectTimeoutMs: number;
7
+ timeoutMs: number;
8
+ discoveryCache: boolean;
9
+ toolTimeoutMs?: number;
10
+ maxOutputTokens: number;
11
+ }
12
+ export declare function parseMcpEnvConfig(env: Readonly<Record<string, string | undefined>>): McpEnvConfig;