@aexol/spectral 0.8.0 → 0.8.5

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 (561) hide show
  1. package/CHANGELOG.md +82 -55
  2. package/README.md +80 -82
  3. package/dist/agent/agents.d.ts +37 -0
  4. package/dist/agent/agents.d.ts.map +1 -0
  5. package/dist/agent/index.d.ts +29 -0
  6. package/dist/agent/index.d.ts.map +1 -0
  7. package/dist/cli.d.ts +17 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/commands/bind.d.ts +12 -0
  10. package/dist/commands/bind.d.ts.map +1 -0
  11. package/dist/commands/login-oauth.d.ts +15 -0
  12. package/dist/commands/login-oauth.d.ts.map +1 -0
  13. package/dist/commands/login.d.ts +37 -0
  14. package/dist/commands/login.d.ts.map +1 -0
  15. package/dist/commands/logout.d.ts +8 -0
  16. package/dist/commands/logout.d.ts.map +1 -0
  17. package/dist/commands/serve.d.ts +112 -0
  18. package/dist/commands/serve.d.ts.map +1 -0
  19. package/dist/commands/unbind.d.ts +8 -0
  20. package/dist/commands/unbind.d.ts.map +1 -0
  21. package/dist/config.d.ts +49 -0
  22. package/dist/config.d.ts.map +1 -0
  23. package/dist/designer/guidelines.d.ts +23 -0
  24. package/dist/designer/guidelines.d.ts.map +1 -0
  25. package/dist/designer/index.d.ts +26 -0
  26. package/dist/designer/index.d.ts.map +1 -0
  27. package/dist/designer/philosophies.d.ts +33 -0
  28. package/dist/designer/philosophies.d.ts.map +1 -0
  29. package/dist/designer/skills.d.ts +27 -0
  30. package/dist/designer/skills.d.ts.map +1 -0
  31. package/dist/designer/systems.d.ts +36 -0
  32. package/dist/designer/systems.d.ts.map +1 -0
  33. package/dist/extensions/aexol-mcp.d.ts +25 -0
  34. package/dist/extensions/aexol-mcp.d.ts.map +1 -0
  35. package/dist/extensions/kanban-bridge.d.ts +24 -0
  36. package/dist/extensions/kanban-bridge.d.ts.map +1 -0
  37. package/dist/extensions/kanban-bridge.js +668 -0
  38. package/dist/extensions/openrouter-attribution.d.ts +12 -0
  39. package/dist/extensions/openrouter-attribution.d.ts.map +1 -0
  40. package/dist/extensions/spectral-vision-fallback.d.ts +23 -0
  41. package/dist/extensions/spectral-vision-fallback.d.ts.map +1 -0
  42. package/dist/extensions/spectral-vision-fallback.js +32 -22
  43. package/dist/index.d.ts +46 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +44 -0
  46. package/dist/mcp/agent-dir.d.ts +3 -0
  47. package/dist/mcp/agent-dir.d.ts.map +1 -0
  48. package/dist/mcp/commands.d.ts +9 -0
  49. package/dist/mcp/commands.d.ts.map +1 -0
  50. package/dist/mcp/config.d.ts +78 -0
  51. package/dist/mcp/config.d.ts.map +1 -0
  52. package/dist/mcp/consent-manager.d.ts +14 -0
  53. package/dist/mcp/consent-manager.d.ts.map +1 -0
  54. package/dist/mcp/direct-tools.d.ts +11 -0
  55. package/dist/mcp/direct-tools.d.ts.map +1 -0
  56. package/dist/mcp/errors.d.ts +100 -0
  57. package/dist/mcp/errors.d.ts.map +1 -0
  58. package/dist/mcp/glimpse-ui.d.ts +10 -0
  59. package/dist/mcp/glimpse-ui.d.ts.map +1 -0
  60. package/dist/mcp/host-html-template.d.ts +17 -0
  61. package/dist/mcp/host-html-template.d.ts.map +1 -0
  62. package/dist/mcp/index.d.ts +3 -0
  63. package/dist/mcp/index.d.ts.map +1 -0
  64. package/dist/mcp/init.d.ts +10 -0
  65. package/dist/mcp/init.d.ts.map +1 -0
  66. package/dist/mcp/init.js +1 -9
  67. package/dist/mcp/lifecycle.d.ts +30 -0
  68. package/dist/mcp/lifecycle.d.ts.map +1 -0
  69. package/dist/mcp/logger.d.ts +52 -0
  70. package/dist/mcp/logger.d.ts.map +1 -0
  71. package/dist/mcp/mcp-auth-flow.d.ts +69 -0
  72. package/dist/mcp/mcp-auth-flow.d.ts.map +1 -0
  73. package/dist/mcp/mcp-auth.d.ts +100 -0
  74. package/dist/mcp/mcp-auth.d.ts.map +1 -0
  75. package/dist/mcp/mcp-callback-server.d.ts +40 -0
  76. package/dist/mcp/mcp-callback-server.d.ts.map +1 -0
  77. package/dist/mcp/mcp-oauth-provider.d.ts +101 -0
  78. package/dist/mcp/mcp-oauth-provider.d.ts.map +1 -0
  79. package/dist/mcp/metadata-cache.d.ts +32 -0
  80. package/dist/mcp/metadata-cache.d.ts.map +1 -0
  81. package/dist/mcp/npx-resolver.d.ts +7 -0
  82. package/dist/mcp/npx-resolver.d.ts.map +1 -0
  83. package/dist/mcp/oauth-handler.d.ts +19 -0
  84. package/dist/mcp/oauth-handler.d.ts.map +1 -0
  85. package/dist/mcp/onboarding-state.d.ts +13 -0
  86. package/dist/mcp/onboarding-state.d.ts.map +1 -0
  87. package/dist/mcp/proxy-modes.d.ts +12 -0
  88. package/dist/mcp/proxy-modes.d.ts.map +1 -0
  89. package/dist/mcp/resource-tools.d.ts +2 -0
  90. package/dist/mcp/resource-tools.d.ts.map +1 -0
  91. package/dist/mcp/sampling-handler.d.ts +16 -0
  92. package/dist/mcp/sampling-handler.d.ts.map +1 -0
  93. package/dist/mcp/server-manager.d.ts +42 -0
  94. package/dist/mcp/server-manager.d.ts.map +1 -0
  95. package/dist/mcp/state.d.ts +41 -0
  96. package/dist/mcp/state.d.ts.map +1 -0
  97. package/dist/mcp/tool-metadata.d.ts +11 -0
  98. package/dist/mcp/tool-metadata.d.ts.map +1 -0
  99. package/dist/mcp/tool-registrar.d.ts +9 -0
  100. package/dist/mcp/tool-registrar.d.ts.map +1 -0
  101. package/dist/mcp/types.d.ts +263 -0
  102. package/dist/mcp/types.d.ts.map +1 -0
  103. package/dist/mcp/ui-resource-handler.d.ts +10 -0
  104. package/dist/mcp/ui-resource-handler.d.ts.map +1 -0
  105. package/dist/mcp/ui-server.d.ts +37 -0
  106. package/dist/mcp/ui-server.d.ts.map +1 -0
  107. package/dist/mcp/ui-session.d.ts +27 -0
  108. package/dist/mcp/ui-session.d.ts.map +1 -0
  109. package/dist/mcp/ui-stream-types.d.ts +197 -0
  110. package/dist/mcp/ui-stream-types.d.ts.map +1 -0
  111. package/dist/mcp/utils.d.ts +17 -0
  112. package/dist/mcp/utils.d.ts.map +1 -0
  113. package/dist/mcp/vitest.config.d.ts +3 -0
  114. package/dist/mcp/vitest.config.d.ts.map +1 -0
  115. package/dist/mcp-client.d.ts +58 -0
  116. package/dist/mcp-client.d.ts.map +1 -0
  117. package/dist/mcp-client.js +2 -1
  118. package/dist/memory/branch.d.ts +124 -0
  119. package/dist/memory/branch.d.ts.map +1 -0
  120. package/dist/memory/commands/status.d.ts +4 -0
  121. package/dist/memory/commands/status.d.ts.map +1 -0
  122. package/dist/memory/commands/view.d.ts +4 -0
  123. package/dist/memory/commands/view.d.ts.map +1 -0
  124. package/dist/memory/compaction.d.ts +113 -0
  125. package/dist/memory/compaction.d.ts.map +1 -0
  126. package/dist/memory/config.d.ts +27 -0
  127. package/dist/memory/config.d.ts.map +1 -0
  128. package/dist/memory/debug-log.d.ts +12 -0
  129. package/dist/memory/debug-log.d.ts.map +1 -0
  130. package/dist/memory/hooks/compaction-hook.d.ts +4 -0
  131. package/dist/memory/hooks/compaction-hook.d.ts.map +1 -0
  132. package/dist/memory/hooks/compaction-trigger.d.ts +4 -0
  133. package/dist/memory/hooks/compaction-trigger.d.ts.map +1 -0
  134. package/dist/memory/hooks/observer-trigger.d.ts +4 -0
  135. package/dist/memory/hooks/observer-trigger.d.ts.map +1 -0
  136. package/dist/memory/ids.d.ts +2 -0
  137. package/dist/memory/ids.d.ts.map +1 -0
  138. package/dist/memory/index.d.ts +3 -0
  139. package/dist/memory/index.d.ts.map +1 -0
  140. package/dist/memory/index.js +2 -0
  141. package/dist/memory/model-budget.d.ts +4 -0
  142. package/dist/memory/model-budget.d.ts.map +1 -0
  143. package/dist/memory/observer.d.ts +21 -0
  144. package/dist/memory/observer.d.ts.map +1 -0
  145. package/dist/memory/project-observations-store.d.ts +24 -0
  146. package/dist/memory/project-observations-store.d.ts.map +1 -0
  147. package/dist/memory/prompts.d.ts +11 -0
  148. package/dist/memory/prompts.d.ts.map +1 -0
  149. package/dist/memory/relevance.d.ts +4 -0
  150. package/dist/memory/relevance.d.ts.map +1 -0
  151. package/dist/memory/runtime.d.ts +40 -0
  152. package/dist/memory/runtime.d.ts.map +1 -0
  153. package/dist/memory/serialize.d.ts +26 -0
  154. package/dist/memory/serialize.d.ts.map +1 -0
  155. package/dist/memory/tokens.d.ts +8 -0
  156. package/dist/memory/tokens.d.ts.map +1 -0
  157. package/dist/memory/tools/read-project-observations.d.ts +8 -0
  158. package/dist/memory/tools/read-project-observations.d.ts.map +1 -0
  159. package/dist/memory/tools/recall-observation.d.ts +63 -0
  160. package/dist/memory/tools/recall-observation.d.ts.map +1 -0
  161. package/dist/memory/tools/write-project-observation.d.ts +9 -0
  162. package/dist/memory/tools/write-project-observation.d.ts.map +1 -0
  163. package/dist/memory/tools/write-project-observation.js +60 -0
  164. package/dist/memory/types.d.ts +65 -0
  165. package/dist/memory/types.d.ts.map +1 -0
  166. package/dist/preflight.d.ts +27 -0
  167. package/dist/preflight.d.ts.map +1 -0
  168. package/dist/preflight.js +3 -1
  169. package/dist/relay/auto-research.d.ts +64 -0
  170. package/dist/relay/auto-research.d.ts.map +1 -0
  171. package/dist/relay/auto-research.js +208 -69
  172. package/dist/relay/client.d.ts +126 -0
  173. package/dist/relay/client.d.ts.map +1 -0
  174. package/dist/relay/dispatcher.d.ts +207 -0
  175. package/dist/relay/dispatcher.d.ts.map +1 -0
  176. package/dist/relay/machine-store.d.ts +68 -0
  177. package/dist/relay/machine-store.d.ts.map +1 -0
  178. package/dist/relay/models-fetch.d.ts +75 -0
  179. package/dist/relay/models-fetch.d.ts.map +1 -0
  180. package/dist/relay/registration.d.ts +81 -0
  181. package/dist/relay/registration.d.ts.map +1 -0
  182. package/dist/sdk/agent-core/agent-loop.d.ts +24 -0
  183. package/dist/sdk/agent-core/agent-loop.d.ts.map +1 -0
  184. package/dist/sdk/agent-core/agent.d.ts +125 -0
  185. package/dist/sdk/agent-core/agent.d.ts.map +1 -0
  186. package/dist/sdk/agent-core/harness/agent-harness.d.ts +92 -0
  187. package/dist/sdk/agent-core/harness/agent-harness.d.ts.map +1 -0
  188. package/dist/sdk/agent-core/harness/compaction/branch-summarization.d.ts +53 -0
  189. package/dist/sdk/agent-core/harness/compaction/branch-summarization.d.ts.map +1 -0
  190. package/dist/sdk/agent-core/harness/compaction/compaction.d.ts +95 -0
  191. package/dist/sdk/agent-core/harness/compaction/compaction.d.ts.map +1 -0
  192. package/dist/sdk/agent-core/harness/compaction/utils.d.ts +25 -0
  193. package/dist/sdk/agent-core/harness/compaction/utils.d.ts.map +1 -0
  194. package/dist/sdk/agent-core/harness/env/nodejs.d.ts +51 -0
  195. package/dist/sdk/agent-core/harness/env/nodejs.d.ts.map +1 -0
  196. package/dist/sdk/agent-core/harness/messages.d.ts +51 -0
  197. package/dist/sdk/agent-core/harness/messages.d.ts.map +1 -0
  198. package/dist/sdk/agent-core/harness/prompt-templates.d.ts +48 -0
  199. package/dist/sdk/agent-core/harness/prompt-templates.d.ts.map +1 -0
  200. package/dist/sdk/agent-core/harness/session/jsonl-repo.d.ts +26 -0
  201. package/dist/sdk/agent-core/harness/session/jsonl-repo.d.ts.map +1 -0
  202. package/dist/sdk/agent-core/harness/session/jsonl-storage.d.ts +33 -0
  203. package/dist/sdk/agent-core/harness/session/jsonl-storage.d.ts.map +1 -0
  204. package/dist/sdk/agent-core/harness/session/memory-repo.d.ts +18 -0
  205. package/dist/sdk/agent-core/harness/session/memory-repo.d.ts.map +1 -0
  206. package/dist/sdk/agent-core/harness/session/memory-storage.d.ts +25 -0
  207. package/dist/sdk/agent-core/harness/session/memory-storage.d.ts.map +1 -0
  208. package/dist/sdk/agent-core/harness/session/repo-utils.d.ts +11 -0
  209. package/dist/sdk/agent-core/harness/session/repo-utils.d.ts.map +1 -0
  210. package/dist/sdk/agent-core/harness/session/session.d.ts +32 -0
  211. package/dist/sdk/agent-core/harness/session/session.d.ts.map +1 -0
  212. package/dist/sdk/agent-core/harness/session/uuid.d.ts +2 -0
  213. package/dist/sdk/agent-core/harness/session/uuid.d.ts.map +1 -0
  214. package/dist/sdk/agent-core/harness/skills.d.ts +44 -0
  215. package/dist/sdk/agent-core/harness/skills.d.ts.map +1 -0
  216. package/dist/sdk/agent-core/harness/system-prompt.d.ts +3 -0
  217. package/dist/sdk/agent-core/harness/system-prompt.d.ts.map +1 -0
  218. package/dist/sdk/agent-core/harness/types.d.ts +601 -0
  219. package/dist/sdk/agent-core/harness/types.d.ts.map +1 -0
  220. package/dist/sdk/agent-core/harness/utils/shell-output.d.ts +14 -0
  221. package/dist/sdk/agent-core/harness/utils/shell-output.d.ts.map +1 -0
  222. package/dist/sdk/agent-core/harness/utils/truncate.d.ts +70 -0
  223. package/dist/sdk/agent-core/harness/utils/truncate.d.ts.map +1 -0
  224. package/dist/sdk/agent-core/index.d.ts +20 -0
  225. package/dist/sdk/agent-core/index.d.ts.map +1 -0
  226. package/dist/sdk/agent-core/node.d.ts +3 -0
  227. package/dist/sdk/agent-core/node.d.ts.map +1 -0
  228. package/dist/sdk/agent-core/proxy.d.ts +69 -0
  229. package/dist/sdk/agent-core/proxy.d.ts.map +1 -0
  230. package/dist/sdk/agent-core/types.d.ts +393 -0
  231. package/dist/sdk/agent-core/types.d.ts.map +1 -0
  232. package/dist/sdk/ai/api-registry.d.ts +20 -0
  233. package/dist/sdk/ai/api-registry.d.ts.map +1 -0
  234. package/dist/sdk/ai/cli.d.ts +3 -0
  235. package/dist/sdk/ai/cli.d.ts.map +1 -0
  236. package/dist/sdk/ai/env-api-keys.d.ts +18 -0
  237. package/dist/sdk/ai/env-api-keys.d.ts.map +1 -0
  238. package/dist/sdk/ai/env-api-keys.js +9 -49
  239. package/dist/sdk/ai/image-models.d.ts +10 -0
  240. package/dist/sdk/ai/image-models.d.ts.map +1 -0
  241. package/dist/sdk/ai/image-models.generated.d.ts +440 -0
  242. package/dist/sdk/ai/image-models.generated.d.ts.map +1 -0
  243. package/dist/sdk/ai/images-api-registry.d.ts +14 -0
  244. package/dist/sdk/ai/images-api-registry.d.ts.map +1 -0
  245. package/dist/sdk/ai/images.d.ts +4 -0
  246. package/dist/sdk/ai/images.d.ts.map +1 -0
  247. package/dist/sdk/ai/index.d.ts +21 -0
  248. package/dist/sdk/ai/index.d.ts.map +1 -0
  249. package/dist/sdk/ai/models.d.ts +18 -0
  250. package/dist/sdk/ai/models.d.ts.map +1 -0
  251. package/dist/sdk/ai/models.generated.d.ts +17349 -0
  252. package/dist/sdk/ai/models.generated.d.ts.map +1 -0
  253. package/dist/sdk/ai/oauth.d.ts +2 -0
  254. package/dist/sdk/ai/oauth.d.ts.map +1 -0
  255. package/dist/sdk/ai/providers/anthropic.d.ts +54 -0
  256. package/dist/sdk/ai/providers/anthropic.d.ts.map +1 -0
  257. package/dist/sdk/ai/providers/faux.d.ts +56 -0
  258. package/dist/sdk/ai/providers/faux.d.ts.map +1 -0
  259. package/dist/sdk/ai/providers/github-copilot-headers.d.ts +8 -0
  260. package/dist/sdk/ai/providers/github-copilot-headers.d.ts.map +1 -0
  261. package/dist/sdk/ai/providers/openai-completions.d.ts +19 -0
  262. package/dist/sdk/ai/providers/openai-completions.d.ts.map +1 -0
  263. package/dist/sdk/ai/providers/openai-prompt-cache.d.ts +3 -0
  264. package/dist/sdk/ai/providers/openai-prompt-cache.d.ts.map +1 -0
  265. package/dist/sdk/ai/providers/register-builtins.d.ts +15 -0
  266. package/dist/sdk/ai/providers/register-builtins.d.ts.map +1 -0
  267. package/dist/sdk/ai/providers/simple-options.d.ts +8 -0
  268. package/dist/sdk/ai/providers/simple-options.d.ts.map +1 -0
  269. package/dist/sdk/ai/providers/transform-messages.d.ts +8 -0
  270. package/dist/sdk/ai/providers/transform-messages.d.ts.map +1 -0
  271. package/dist/sdk/ai/session-resources.d.ts +4 -0
  272. package/dist/sdk/ai/session-resources.d.ts.map +1 -0
  273. package/dist/sdk/ai/stream.d.ts +8 -0
  274. package/dist/sdk/ai/stream.d.ts.map +1 -0
  275. package/dist/sdk/ai/types.d.ts +488 -0
  276. package/dist/sdk/ai/types.d.ts.map +1 -0
  277. package/dist/sdk/ai/utils/diagnostics.d.ts +19 -0
  278. package/dist/sdk/ai/utils/diagnostics.d.ts.map +1 -0
  279. package/dist/sdk/ai/utils/event-stream.d.ts +21 -0
  280. package/dist/sdk/ai/utils/event-stream.d.ts.map +1 -0
  281. package/dist/sdk/ai/utils/hash.d.ts +3 -0
  282. package/dist/sdk/ai/utils/hash.d.ts.map +1 -0
  283. package/dist/sdk/ai/utils/headers.d.ts +2 -0
  284. package/dist/sdk/ai/utils/headers.d.ts.map +1 -0
  285. package/dist/sdk/ai/utils/json-parse.d.ts +16 -0
  286. package/dist/sdk/ai/utils/json-parse.d.ts.map +1 -0
  287. package/dist/sdk/ai/utils/node-http-proxy.d.ts +10 -0
  288. package/dist/sdk/ai/utils/node-http-proxy.d.ts.map +1 -0
  289. package/dist/sdk/ai/utils/oauth/anthropic.d.ts +25 -0
  290. package/dist/sdk/ai/utils/oauth/anthropic.d.ts.map +1 -0
  291. package/dist/sdk/ai/utils/oauth/anthropic.js +1 -1
  292. package/dist/sdk/ai/utils/oauth/device-code.d.ts +19 -0
  293. package/dist/sdk/ai/utils/oauth/device-code.d.ts.map +1 -0
  294. package/dist/sdk/ai/utils/oauth/github-copilot.d.ts +30 -0
  295. package/dist/sdk/ai/utils/oauth/github-copilot.d.ts.map +1 -0
  296. package/dist/sdk/ai/utils/oauth/index.d.ts +58 -0
  297. package/dist/sdk/ai/utils/oauth/index.d.ts.map +1 -0
  298. package/dist/sdk/ai/utils/oauth/oauth-page.d.ts +3 -0
  299. package/dist/sdk/ai/utils/oauth/oauth-page.d.ts.map +1 -0
  300. package/dist/sdk/ai/utils/oauth/openai-codex.d.ts +34 -0
  301. package/dist/sdk/ai/utils/oauth/openai-codex.d.ts.map +1 -0
  302. package/dist/sdk/ai/utils/oauth/openai-codex.js +1 -1
  303. package/dist/sdk/ai/utils/oauth/pkce.d.ts +13 -0
  304. package/dist/sdk/ai/utils/oauth/pkce.d.ts.map +1 -0
  305. package/dist/sdk/ai/utils/oauth/types.d.ts +64 -0
  306. package/dist/sdk/ai/utils/oauth/types.d.ts.map +1 -0
  307. package/dist/sdk/ai/utils/overflow.d.ts +56 -0
  308. package/dist/sdk/ai/utils/overflow.d.ts.map +1 -0
  309. package/dist/sdk/ai/utils/sanitize-unicode.d.ts +22 -0
  310. package/dist/sdk/ai/utils/sanitize-unicode.d.ts.map +1 -0
  311. package/dist/sdk/ai/utils/typebox-helpers.d.ts +17 -0
  312. package/dist/sdk/ai/utils/typebox-helpers.d.ts.map +1 -0
  313. package/dist/sdk/ai/utils/validation.d.ts +18 -0
  314. package/dist/sdk/ai/utils/validation.d.ts.map +1 -0
  315. package/dist/sdk/coding-agent/cli.d.ts +3 -0
  316. package/dist/sdk/coding-agent/cli.d.ts.map +1 -0
  317. package/dist/sdk/coding-agent/config.d.ts +71 -0
  318. package/dist/sdk/coding-agent/config.d.ts.map +1 -0
  319. package/dist/sdk/coding-agent/config.js +2 -69
  320. package/dist/sdk/coding-agent/core/agent-session-runtime.d.ts +117 -0
  321. package/dist/sdk/coding-agent/core/agent-session-runtime.d.ts.map +1 -0
  322. package/dist/sdk/coding-agent/core/agent-session-services.d.ts +86 -0
  323. package/dist/sdk/coding-agent/core/agent-session-services.d.ts.map +1 -0
  324. package/dist/sdk/coding-agent/core/agent-session.d.ts +626 -0
  325. package/dist/sdk/coding-agent/core/agent-session.d.ts.map +1 -0
  326. package/dist/sdk/coding-agent/core/auth-guidance.d.ts +5 -0
  327. package/dist/sdk/coding-agent/core/auth-guidance.d.ts.map +1 -0
  328. package/dist/sdk/coding-agent/core/auth-storage.d.ts +145 -0
  329. package/dist/sdk/coding-agent/core/auth-storage.d.ts.map +1 -0
  330. package/dist/sdk/coding-agent/core/bash-executor.d.ts +32 -0
  331. package/dist/sdk/coding-agent/core/bash-executor.d.ts.map +1 -0
  332. package/dist/sdk/coding-agent/core/compaction/branch-summarization.d.ts +88 -0
  333. package/dist/sdk/coding-agent/core/compaction/branch-summarization.d.ts.map +1 -0
  334. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts +142 -0
  335. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts.map +1 -0
  336. package/dist/sdk/coding-agent/core/compaction/index.d.ts +7 -0
  337. package/dist/sdk/coding-agent/core/compaction/index.d.ts.map +1 -0
  338. package/dist/sdk/coding-agent/core/compaction/utils.d.ts +38 -0
  339. package/dist/sdk/coding-agent/core/compaction/utils.d.ts.map +1 -0
  340. package/dist/sdk/coding-agent/core/defaults.d.ts +3 -0
  341. package/dist/sdk/coding-agent/core/defaults.d.ts.map +1 -0
  342. package/dist/sdk/coding-agent/core/diagnostics.d.ts +15 -0
  343. package/dist/sdk/coding-agent/core/diagnostics.d.ts.map +1 -0
  344. package/dist/sdk/coding-agent/core/event-bus.d.ts +9 -0
  345. package/dist/sdk/coding-agent/core/event-bus.d.ts.map +1 -0
  346. package/dist/sdk/coding-agent/core/exec.d.ts +29 -0
  347. package/dist/sdk/coding-agent/core/exec.d.ts.map +1 -0
  348. package/dist/sdk/coding-agent/core/extensions/index.d.ts +12 -0
  349. package/dist/sdk/coding-agent/core/extensions/index.d.ts.map +1 -0
  350. package/dist/sdk/coding-agent/core/extensions/loader.d.ts +24 -0
  351. package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -0
  352. package/dist/sdk/coding-agent/core/extensions/loader.js +3 -35
  353. package/dist/sdk/coding-agent/core/extensions/runner.d.ts +161 -0
  354. package/dist/sdk/coding-agent/core/extensions/runner.d.ts.map +1 -0
  355. package/dist/sdk/coding-agent/core/extensions/runner.js +1 -2
  356. package/dist/sdk/coding-agent/core/extensions/types.d.ts +1181 -0
  357. package/dist/sdk/coding-agent/core/extensions/types.d.ts.map +1 -0
  358. package/dist/sdk/coding-agent/core/extensions/wrapper.d.ts +20 -0
  359. package/dist/sdk/coding-agent/core/extensions/wrapper.d.ts.map +1 -0
  360. package/dist/sdk/coding-agent/core/http-dispatcher.d.ts +21 -0
  361. package/dist/sdk/coding-agent/core/http-dispatcher.d.ts.map +1 -0
  362. package/dist/sdk/coding-agent/core/index.d.ts +12 -0
  363. package/dist/sdk/coding-agent/core/index.d.ts.map +1 -0
  364. package/dist/sdk/coding-agent/core/keybindings.d.ts +371 -0
  365. package/dist/sdk/coding-agent/core/keybindings.d.ts.map +1 -0
  366. package/dist/sdk/coding-agent/core/messages.d.ts +77 -0
  367. package/dist/sdk/coding-agent/core/messages.d.ts.map +1 -0
  368. package/dist/sdk/coding-agent/core/model-registry.d.ts +150 -0
  369. package/dist/sdk/coding-agent/core/model-registry.d.ts.map +1 -0
  370. package/dist/sdk/coding-agent/core/model-resolver-utils.d.ts +7 -0
  371. package/dist/sdk/coding-agent/core/model-resolver-utils.d.ts.map +1 -0
  372. package/dist/sdk/coding-agent/core/model-resolver-utils.js +8 -0
  373. package/dist/sdk/coding-agent/core/model-resolver.d.ts +110 -0
  374. package/dist/sdk/coding-agent/core/model-resolver.d.ts.map +1 -0
  375. package/dist/sdk/coding-agent/core/model-resolver.js +1 -1
  376. package/dist/sdk/coding-agent/core/output-guard.d.ts +6 -0
  377. package/dist/sdk/coding-agent/core/output-guard.d.ts.map +1 -0
  378. package/dist/sdk/coding-agent/core/package-manager.d.ts +204 -0
  379. package/dist/sdk/coding-agent/core/package-manager.d.ts.map +1 -0
  380. package/dist/sdk/coding-agent/core/prompt-templates.d.ts +52 -0
  381. package/dist/sdk/coding-agent/core/prompt-templates.d.ts.map +1 -0
  382. package/dist/sdk/coding-agent/core/provider-display-names.d.ts +2 -0
  383. package/dist/sdk/coding-agent/core/provider-display-names.d.ts.map +1 -0
  384. package/dist/sdk/coding-agent/core/resolve-config-value.d.ts +23 -0
  385. package/dist/sdk/coding-agent/core/resolve-config-value.d.ts.map +1 -0
  386. package/dist/sdk/coding-agent/core/resource-loader.d.ts +194 -0
  387. package/dist/sdk/coding-agent/core/resource-loader.d.ts.map +1 -0
  388. package/dist/sdk/coding-agent/core/resource-loader.js +1 -1
  389. package/dist/sdk/coding-agent/core/sdk.d.ts +107 -0
  390. package/dist/sdk/coding-agent/core/sdk.d.ts.map +1 -0
  391. package/dist/sdk/coding-agent/core/session-cwd.d.ts +19 -0
  392. package/dist/sdk/coding-agent/core/session-cwd.d.ts.map +1 -0
  393. package/dist/sdk/coding-agent/core/session-manager.d.ts +333 -0
  394. package/dist/sdk/coding-agent/core/session-manager.d.ts.map +1 -0
  395. package/dist/sdk/coding-agent/core/settings-manager.d.ts +209 -0
  396. package/dist/sdk/coding-agent/core/settings-manager.d.ts.map +1 -0
  397. package/dist/sdk/coding-agent/core/settings-manager.js +1 -170
  398. package/dist/sdk/coding-agent/core/skills.d.ts +60 -0
  399. package/dist/sdk/coding-agent/core/skills.d.ts.map +1 -0
  400. package/dist/sdk/coding-agent/core/slash-commands.d.ts +14 -0
  401. package/dist/sdk/coding-agent/core/slash-commands.d.ts.map +1 -0
  402. package/dist/sdk/coding-agent/core/source-info.d.ts +18 -0
  403. package/dist/sdk/coding-agent/core/source-info.d.ts.map +1 -0
  404. package/dist/sdk/coding-agent/core/system-prompt.d.ts +28 -0
  405. package/dist/sdk/coding-agent/core/system-prompt.d.ts.map +1 -0
  406. package/dist/sdk/coding-agent/core/system-prompt.js +3 -1
  407. package/dist/sdk/coding-agent/core/telemetry.d.ts +3 -0
  408. package/dist/sdk/coding-agent/core/telemetry.d.ts.map +1 -0
  409. package/dist/sdk/coding-agent/core/theme.d.ts +28 -0
  410. package/dist/sdk/coding-agent/core/theme.d.ts.map +1 -0
  411. package/dist/sdk/coding-agent/core/theme.js +202 -0
  412. package/dist/sdk/coding-agent/core/timings.d.ts +8 -0
  413. package/dist/sdk/coding-agent/core/timings.d.ts.map +1 -0
  414. package/dist/sdk/coding-agent/core/tools/bash.d.ts +63 -0
  415. package/dist/sdk/coding-agent/core/tools/bash.d.ts.map +1 -0
  416. package/dist/sdk/coding-agent/core/tools/bash.js +17 -18
  417. package/dist/sdk/coding-agent/core/tools/edit-diff.d.ts +87 -0
  418. package/dist/sdk/coding-agent/core/tools/edit-diff.d.ts.map +1 -0
  419. package/dist/sdk/coding-agent/core/tools/edit.d.ts +39 -0
  420. package/dist/sdk/coding-agent/core/tools/edit.d.ts.map +1 -0
  421. package/dist/sdk/coding-agent/core/tools/edit.js +7 -8
  422. package/dist/sdk/coding-agent/core/tools/file-mutation-queue.d.ts +6 -0
  423. package/dist/sdk/coding-agent/core/tools/file-mutation-queue.d.ts.map +1 -0
  424. package/dist/sdk/coding-agent/core/tools/find.d.ts +35 -0
  425. package/dist/sdk/coding-agent/core/tools/find.d.ts.map +1 -0
  426. package/dist/sdk/coding-agent/core/tools/find.js +9 -13
  427. package/dist/sdk/coding-agent/core/tools/grep.d.ts +37 -0
  428. package/dist/sdk/coding-agent/core/tools/grep.d.ts.map +1 -0
  429. package/dist/sdk/coding-agent/core/tools/grep.js +10 -14
  430. package/dist/sdk/coding-agent/core/tools/index.d.ts +40 -0
  431. package/dist/sdk/coding-agent/core/tools/index.d.ts.map +1 -0
  432. package/dist/sdk/coding-agent/core/tools/ls.d.ts +37 -0
  433. package/dist/sdk/coding-agent/core/tools/ls.d.ts.map +1 -0
  434. package/dist/sdk/coding-agent/core/tools/ls.js +9 -10
  435. package/dist/sdk/coding-agent/core/tools/output-accumulator.d.ts +52 -0
  436. package/dist/sdk/coding-agent/core/tools/output-accumulator.d.ts.map +1 -0
  437. package/dist/sdk/coding-agent/core/tools/path-utils.d.ts +8 -0
  438. package/dist/sdk/coding-agent/core/tools/path-utils.d.ts.map +1 -0
  439. package/dist/sdk/coding-agent/core/tools/read.d.ts +35 -0
  440. package/dist/sdk/coding-agent/core/tools/read.d.ts.map +1 -0
  441. package/dist/sdk/coding-agent/core/tools/read.js +33 -35
  442. package/dist/sdk/coding-agent/core/tools/render-diff.d.ts +17 -0
  443. package/dist/sdk/coding-agent/core/tools/render-diff.d.ts.map +1 -0
  444. package/dist/sdk/coding-agent/{modes/interactive/components/diff.js → core/tools/render-diff.js} +18 -31
  445. package/dist/sdk/coding-agent/core/tools/render-utils.d.ts +21 -0
  446. package/dist/sdk/coding-agent/core/tools/render-utils.d.ts.map +1 -0
  447. package/dist/sdk/coding-agent/core/tools/tool-definition-wrapper.d.ts +14 -0
  448. package/dist/sdk/coding-agent/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  449. package/dist/sdk/coding-agent/core/tools/truncate.d.ts +70 -0
  450. package/dist/sdk/coding-agent/core/tools/truncate.d.ts.map +1 -0
  451. package/dist/sdk/coding-agent/core/tools/write.d.ts +26 -0
  452. package/dist/sdk/coding-agent/core/tools/write.d.ts.map +1 -0
  453. package/dist/sdk/coding-agent/core/tools/write.js +10 -11
  454. package/dist/sdk/coding-agent/index.d.ts +29 -0
  455. package/dist/sdk/coding-agent/index.d.ts.map +1 -0
  456. package/dist/sdk/coding-agent/index.js +7 -5
  457. package/dist/sdk/coding-agent/main.d.ts +2 -0
  458. package/dist/sdk/coding-agent/main.d.ts.map +1 -0
  459. package/dist/sdk/coding-agent/migrations.d.ts +33 -0
  460. package/dist/sdk/coding-agent/migrations.d.ts.map +1 -0
  461. package/dist/sdk/coding-agent/modes/index.d.ts +8 -0
  462. package/dist/sdk/coding-agent/modes/index.d.ts.map +1 -0
  463. package/dist/sdk/coding-agent/modes/index.js +0 -1
  464. package/dist/sdk/coding-agent/modes/print-mode.d.ts +28 -0
  465. package/dist/sdk/coding-agent/modes/print-mode.d.ts.map +1 -0
  466. package/dist/sdk/coding-agent/modes/rpc/jsonl.d.ts +17 -0
  467. package/dist/sdk/coding-agent/modes/rpc/jsonl.d.ts.map +1 -0
  468. package/dist/sdk/coding-agent/modes/rpc/rpc-client.d.ts +224 -0
  469. package/dist/sdk/coding-agent/modes/rpc/rpc-client.d.ts.map +1 -0
  470. package/dist/sdk/coding-agent/modes/rpc/rpc-mode.d.ts +20 -0
  471. package/dist/sdk/coding-agent/modes/rpc/rpc-mode.d.ts.map +1 -0
  472. package/dist/sdk/coding-agent/modes/rpc/rpc-mode.js +2 -2
  473. package/dist/sdk/coding-agent/modes/rpc/rpc-types.d.ts +419 -0
  474. package/dist/sdk/coding-agent/modes/rpc/rpc-types.d.ts.map +1 -0
  475. package/dist/sdk/coding-agent/utils/ansi.d.ts +2 -0
  476. package/dist/sdk/coding-agent/utils/ansi.d.ts.map +1 -0
  477. package/dist/sdk/coding-agent/utils/changelog.d.ts +21 -0
  478. package/dist/sdk/coding-agent/utils/changelog.d.ts.map +1 -0
  479. package/dist/sdk/coding-agent/utils/child-process.d.ts +15 -0
  480. package/dist/sdk/coding-agent/utils/child-process.d.ts.map +1 -0
  481. package/dist/sdk/coding-agent/utils/clipboard-image.d.ts +11 -0
  482. package/dist/sdk/coding-agent/utils/clipboard-image.d.ts.map +1 -0
  483. package/dist/sdk/coding-agent/utils/clipboard-native.d.ts +8 -0
  484. package/dist/sdk/coding-agent/utils/clipboard-native.d.ts.map +1 -0
  485. package/dist/sdk/coding-agent/utils/clipboard.d.ts +2 -0
  486. package/dist/sdk/coding-agent/utils/clipboard.d.ts.map +1 -0
  487. package/dist/sdk/coding-agent/utils/exif-orientation.d.ts +5 -0
  488. package/dist/sdk/coding-agent/utils/exif-orientation.d.ts.map +1 -0
  489. package/dist/sdk/coding-agent/utils/frontmatter.d.ts +8 -0
  490. package/dist/sdk/coding-agent/utils/frontmatter.d.ts.map +1 -0
  491. package/dist/sdk/coding-agent/utils/fs-watch.d.ts +5 -0
  492. package/dist/sdk/coding-agent/utils/fs-watch.d.ts.map +1 -0
  493. package/dist/sdk/coding-agent/utils/git.d.ts +26 -0
  494. package/dist/sdk/coding-agent/utils/git.d.ts.map +1 -0
  495. package/dist/sdk/coding-agent/utils/html.d.ts +7 -0
  496. package/dist/sdk/coding-agent/utils/html.d.ts.map +1 -0
  497. package/dist/sdk/coding-agent/utils/image-convert.d.ts +9 -0
  498. package/dist/sdk/coding-agent/utils/image-convert.d.ts.map +1 -0
  499. package/dist/sdk/coding-agent/utils/image-resize.d.ts +36 -0
  500. package/dist/sdk/coding-agent/utils/image-resize.d.ts.map +1 -0
  501. package/dist/sdk/coding-agent/utils/mime.d.ts +3 -0
  502. package/dist/sdk/coding-agent/utils/mime.d.ts.map +1 -0
  503. package/dist/sdk/coding-agent/utils/paths.d.ts +31 -0
  504. package/dist/sdk/coding-agent/utils/paths.d.ts.map +1 -0
  505. package/dist/sdk/coding-agent/utils/photon.d.ts +13 -0
  506. package/dist/sdk/coding-agent/utils/photon.d.ts.map +1 -0
  507. package/dist/sdk/coding-agent/utils/photon.js +2 -10
  508. package/dist/sdk/coding-agent/utils/pi-user-agent.d.ts +2 -0
  509. package/dist/sdk/coding-agent/utils/pi-user-agent.d.ts.map +1 -0
  510. package/dist/sdk/coding-agent/utils/pi-user-agent.js +1 -2
  511. package/dist/sdk/coding-agent/utils/shell.d.ts +30 -0
  512. package/dist/sdk/coding-agent/utils/shell.d.ts.map +1 -0
  513. package/dist/sdk/coding-agent/utils/sleep.d.ts +5 -0
  514. package/dist/sdk/coding-agent/utils/sleep.d.ts.map +1 -0
  515. package/dist/sdk/coding-agent/utils/syntax-highlight.d.ts +12 -0
  516. package/dist/sdk/coding-agent/utils/syntax-highlight.d.ts.map +1 -0
  517. package/dist/sdk/coding-agent/utils/tools-manager.d.ts +3 -0
  518. package/dist/sdk/coding-agent/utils/tools-manager.d.ts.map +1 -0
  519. package/dist/sdk/coding-agent/utils/version-check.d.ts +15 -0
  520. package/dist/sdk/coding-agent/utils/version-check.d.ts.map +1 -0
  521. package/dist/sdk/coding-agent/utils/windows-self-update.d.ts +3 -0
  522. package/dist/sdk/coding-agent/utils/windows-self-update.d.ts.map +1 -0
  523. package/dist/server/agent-bridge.d.ts +308 -0
  524. package/dist/server/agent-bridge.d.ts.map +1 -0
  525. package/dist/server/agent-bridge.js +2 -1
  526. package/dist/server/handlers/errors.d.ts +26 -0
  527. package/dist/server/handlers/errors.d.ts.map +1 -0
  528. package/dist/server/handlers/paths-autocomplete.d.ts +45 -0
  529. package/dist/server/handlers/paths-autocomplete.d.ts.map +1 -0
  530. package/dist/server/handlers/projects.d.ts +58 -0
  531. package/dist/server/handlers/projects.d.ts.map +1 -0
  532. package/dist/server/handlers/queue.d.ts +27 -0
  533. package/dist/server/handlers/queue.d.ts.map +1 -0
  534. package/dist/server/handlers/sessions.d.ts +50 -0
  535. package/dist/server/handlers/sessions.d.ts.map +1 -0
  536. package/dist/server/paths.d.ts +51 -0
  537. package/dist/server/paths.d.ts.map +1 -0
  538. package/dist/server/session-stream.d.ts +379 -0
  539. package/dist/server/session-stream.d.ts.map +1 -0
  540. package/dist/server/shutdown.d.ts +102 -0
  541. package/dist/server/shutdown.d.ts.map +1 -0
  542. package/dist/server/storage.d.ts +287 -0
  543. package/dist/server/storage.d.ts.map +1 -0
  544. package/dist/server/title-generator.d.ts +25 -0
  545. package/dist/server/title-generator.d.ts.map +1 -0
  546. package/dist/server/wire.d.ts +448 -0
  547. package/dist/server/wire.d.ts.map +1 -0
  548. package/dist/studio-binding.d.ts +44 -0
  549. package/dist/studio-binding.d.ts.map +1 -0
  550. package/dist/studio-binding.js +1 -1
  551. package/package.json +11 -1
  552. package/dist/sdk/coding-agent/bun/cli.js +0 -7
  553. package/dist/sdk/coding-agent/bun/restore-sandbox-env.js +0 -31
  554. package/dist/sdk/coding-agent/cli/args.js +0 -340
  555. package/dist/sdk/coding-agent/cli/file-processor.js +0 -82
  556. package/dist/sdk/coding-agent/cli/initial-message.js +0 -21
  557. package/dist/sdk/coding-agent/core/footer-data-provider.js +0 -309
  558. package/dist/sdk/coding-agent/modes/interactive/components/keybinding-hints.js +0 -35
  559. package/dist/sdk/coding-agent/modes/interactive/components/visual-truncate.js +0 -26
  560. package/dist/sdk/coding-agent/modes/interactive/interactive-mode.js +0 -3
  561. package/dist/sdk/coding-agent/modes/interactive/theme/theme.js +0 -1022
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Spectral Vision Extension
3
+ *
4
+ * Automatically switches to a vision-capable model for image processing
5
+ * when images are attached. This allows non-vision models to "see" images
6
+ * and saves main agent context by using a potentially smaller/cheaper
7
+ * vision model for image understanding.
8
+ *
9
+ * Logic:
10
+ * - If the main model supports vision natively, images pass through
11
+ * directly — no interception, no text descriptions.
12
+ * - When the main model does NOT support vision, falls back to the
13
+ * admin-configured default vision model (isVisionDefault flag from
14
+ * backend via SettingsManager) for image descriptions.
15
+ * - If no admin default is configured, falls back to the best
16
+ * available vision-capable model by provider priority.
17
+ *
18
+ * Hooks into the `context` event to intercept ALL images before they reach
19
+ * the LLM (covers user-attached images and tool-result images alike).
20
+ */
21
+ import type { ExtensionAPI } from "../sdk/coding-agent/index.js";
22
+ export default function spectralVisionExtension(pi: ExtensionAPI): void;
23
+ //# sourceMappingURL=spectral-vision-fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spectral-vision-fallback.d.ts","sourceRoot":"","sources":["../../src/extensions/spectral-vision-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAuNjE,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAmFtE"}
@@ -7,14 +7,13 @@
7
7
  * vision model for image understanding.
8
8
  *
9
9
  * Logic:
10
- * - ALWAYS intercepts images (even when main model supports vision),
11
- * replacing them with text descriptions.
12
- * - Prefers the admin-configured default vision model (isVisionDefault
13
- * flag from backend via SettingsManager) for image descriptions.
14
- * - Falls back to the main model for vision if no admin default is
15
- * configured and the main model supports images.
16
- * - If neither is available, falls back to the first available
17
- * vision-capable model by provider priority.
10
+ * - If the main model supports vision natively, images pass through
11
+ * directly no interception, no text descriptions.
12
+ * - When the main model does NOT support vision, falls back to the
13
+ * admin-configured default vision model (isVisionDefault flag from
14
+ * backend via SettingsManager) for image descriptions.
15
+ * - If no admin default is configured, falls back to the best
16
+ * available vision-capable model by provider priority.
18
17
  *
19
18
  * Hooks into the `context` event to intercept ALL images before they reach
20
19
  * the LLM (covers user-attached images and tool-result images alike).
@@ -47,24 +46,25 @@ function getAdminVisionModel(ctx) {
47
46
  * Resolve the best vision model to use for image descriptions.
48
47
  *
49
48
  * Priority:
50
- * 1. Admin-configured default vision model (isVisionDefault from backend)
51
- * 2. Current main model if it supports images
49
+ * 1. Current main model if it supports images — passthrough, no interception
50
+ * 2. Admin-configured default vision model (isVisionDefault from backend)
52
51
  * 3. Best available vision model by provider priority
53
52
  * 4. First available vision model
54
53
  */
55
54
  function resolveVisionModel(ctx) {
56
- // 1. Admin-configured default vision model (always preferred)
55
+ // 1. If the main model supports vision natively, skip interception entirely
56
+ // and let the main model process images directly.
57
+ const currentModel = ctx.model;
58
+ if (currentModel?.input.includes("image") && ctx.modelRegistry.hasConfiguredAuth(currentModel)) {
59
+ process.stderr.write(`[spectral-vision] Main model supports vision — passing images through natively (${currentModel.provider}/${currentModel.id})\n`);
60
+ return undefined;
61
+ }
62
+ // 2. Admin-configured default vision model (fallback for non-vision main models)
57
63
  const adminModel = getAdminVisionModel(ctx);
58
64
  if (adminModel) {
59
65
  process.stderr.write(`[spectral-vision] Using admin-configured default: ${adminModel.provider}/${adminModel.id}\n`);
60
66
  return adminModel;
61
67
  }
62
- // 2. Current main model if it supports images
63
- const currentModel = ctx.model;
64
- if (currentModel?.input.includes("image") && ctx.modelRegistry.hasConfiguredAuth(currentModel)) {
65
- process.stderr.write(`[spectral-vision] Using main model for vision: ${currentModel.provider}/${currentModel.id}\n`);
66
- return currentModel;
67
- }
68
68
  // 3. Fall back to best available vision model by provider priority
69
69
  const allModels = ctx.modelRegistry.getAll();
70
70
  const visionModels = allModels.filter((m) => m.input.includes("image") && ctx.modelRegistry.hasConfiguredAuth(m));
@@ -184,6 +184,9 @@ export default function spectralVisionExtension(pi) {
184
184
  if (visionModel) {
185
185
  process.stderr.write(`[spectral-vision] Ready — using ${visionModel.provider}/${visionModel.id} for image descriptions.\n`);
186
186
  }
187
+ else if (ctx.model?.input.includes("image")) {
188
+ process.stderr.write(`[spectral-vision] Ready — main model ${ctx.model.provider}/${ctx.model.id} handles vision natively, passthrough enabled.\n`);
189
+ }
187
190
  else {
188
191
  process.stderr.write("[spectral-vision] No vision model with auth configured. Image description disabled.\n");
189
192
  }
@@ -198,17 +201,24 @@ export default function spectralVisionExtension(pi) {
198
201
  if (totalImages === 0)
199
202
  return;
200
203
  // Re-resolve vision model each time images are encountered.
201
- // This ensures automatic switching to the admin-configured default
202
- // vision model even when the main model supports vision.
204
+ // If the main model supports vision natively, resolveVisionModel
205
+ // returns undefined and we pass images through without interception.
203
206
  visionModel = resolveVisionModel(ctx);
204
207
  if (!visionModel) {
205
- process.stderr.write("[spectral-vision] No vision model available, images will be omitted\n");
208
+ // Check if we're in passthrough mode (main model has native vision)
209
+ if (ctx.model?.input.includes("image")) {
210
+ process.stderr.write(`[spectral-vision] Passthrough — ${totalImages} image(s) flowing to main model natively\n`);
211
+ }
212
+ else {
213
+ process.stderr.write("[spectral-vision] No vision model available, images will be omitted\n");
214
+ }
206
215
  return;
207
216
  }
208
217
  process.stderr.write(`[spectral-vision] Describing ${totalImages} image(s) with ${visionModel.provider}/${visionModel.id}...\n`);
209
- // Process each message
218
+ // Process each message — intercept both user messages and tool results
219
+ // that contain images (e.g. read tool returning a screenshot).
210
220
  const processed = await Promise.all(messages.map(async (msg) => {
211
- if (msg.role !== "user" || !Array.isArray(msg.content) || !hasImageContent(msg.content)) {
221
+ if ((msg.role !== "user" && msg.role !== "toolResult") || !Array.isArray(msg.content) || !hasImageContent(msg.content)) {
212
222
  return msg;
213
223
  }
214
224
  // Extract context from preceding text blocks
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @aexol/spectral — Public API for extension authors.
3
+ *
4
+ * Import types and utilities from this package when writing .spectral extensions.
5
+ *
6
+ * ## Quick Start
7
+ *
8
+ * ```ts
9
+ * import type { ExtensionAPI, ToolDefinition } from "@aexol/spectral";
10
+ *
11
+ * export default function activate(pi: ExtensionAPI): void {
12
+ * pi.registerTool({
13
+ * name: "my_tool",
14
+ * label: "My Tool",
15
+ * description: "Does something useful.",
16
+ * parameters: { type: "object", properties: {}, additionalProperties: false },
17
+ * async execute(_id, params) {
18
+ * return { content: [{ type: "text", text: "Done!" }], details: {} };
19
+ * },
20
+ * });
21
+ * }
22
+ * ```
23
+ *
24
+ * ## Event Handling
25
+ *
26
+ * ```ts
27
+ * import type { ExtensionAPI, BeforeAgentStartEvent } from "@aexol/spectral";
28
+ *
29
+ * export default function activate(pi: ExtensionAPI): void {
30
+ * pi.on("before_agent_start", (event, ctx) => {
31
+ * // inspect or modify the system prompt
32
+ * return { systemPrompt: event.systemPrompt + "\nExtra instructions..." };
33
+ * });
34
+ * }
35
+ * ```
36
+ */
37
+ export type { ExtensionAPI, ToolDefinition } from "./sdk/coding-agent/index.js";
38
+ export type { AfterProviderResponseEvent, AgentEndEvent, AgentStartEvent, BashToolCallEvent, BashToolResultEvent, BeforeAgentStartEvent, BeforeProviderRequestEvent, ContextEvent, CustomToolCallEvent, CustomToolResultEvent, EditToolCallEvent, EditToolResultEvent, ExtensionEvent, FindToolCallEvent, FindToolResultEvent, GrepToolCallEvent, GrepToolResultEvent, InputEvent, LsToolCallEvent, LsToolResultEvent, MessageEndEvent, MessageStartEvent, MessageUpdateEvent, ModelSelectEvent, ReadToolCallEvent, ReadToolResultEvent, ResourcesDiscoverEvent, SessionBeforeCompactEvent, SessionBeforeForkEvent, SessionBeforeSwitchEvent, SessionBeforeTreeEvent, SessionCompactEvent, SessionEvent, SessionShutdownEvent, SessionStartEvent, SessionTreeEvent, ToolCallEvent, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolExecutionUpdateEvent, ToolResultEvent, TurnEndEvent, TurnStartEvent, UserBashEvent, WriteToolCallEvent, WriteToolResultEvent, } from "./sdk/coding-agent/index.js";
39
+ export type { BeforeAgentStartEventResult, BeforeProviderRequestEventResult, ContextEventResult, InputEventResult, ResourcesDiscoverResult, SessionBeforeCompactResult, SessionBeforeForkResult, SessionBeforeSwitchResult, SessionBeforeTreeResult, ToolCallEventResult, UserBashEventResult, } from "./sdk/coding-agent/index.js";
40
+ export type { ExtensionCommandContext, ExtensionContext, ReplacedSessionContext, } from "./sdk/coding-agent/index.js";
41
+ export type { ProviderConfig, ProviderModelConfig, } from "./sdk/coding-agent/index.js";
42
+ export { defineTool } from "./sdk/coding-agent/index.js";
43
+ export { isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, } from "./sdk/coding-agent/index.js";
44
+ export type { AgentToolResult, AgentToolUpdateCallback, BuildSystemPromptOptions, CompactOptions, ExecOptions, ExecResult, InputSource, ToolExecutionMode, } from "./sdk/coding-agent/index.js";
45
+ export type { Extension, ExtensionActions, ExtensionError, ExtensionFactory, ExtensionFlag, ExtensionHandler, ExtensionRuntime, ExtensionShortcut, ExtensionUIContext, LoadExtensionsResult, RegisteredCommand, RegisteredTool, ResolvedCommand, ToolInfo, } from "./sdk/coding-agent/index.js";
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAMH,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAMhF,YAAY,EACV,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,2BAA2B,EAC3B,gCAAgC,EAChC,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAMzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,QAAQ,GACT,MAAM,6BAA6B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @aexol/spectral — Public API for extension authors.
3
+ *
4
+ * Import types and utilities from this package when writing .spectral extensions.
5
+ *
6
+ * ## Quick Start
7
+ *
8
+ * ```ts
9
+ * import type { ExtensionAPI, ToolDefinition } from "@aexol/spectral";
10
+ *
11
+ * export default function activate(pi: ExtensionAPI): void {
12
+ * pi.registerTool({
13
+ * name: "my_tool",
14
+ * label: "My Tool",
15
+ * description: "Does something useful.",
16
+ * parameters: { type: "object", properties: {}, additionalProperties: false },
17
+ * async execute(_id, params) {
18
+ * return { content: [{ type: "text", text: "Done!" }], details: {} };
19
+ * },
20
+ * });
21
+ * }
22
+ * ```
23
+ *
24
+ * ## Event Handling
25
+ *
26
+ * ```ts
27
+ * import type { ExtensionAPI, BeforeAgentStartEvent } from "@aexol/spectral";
28
+ *
29
+ * export default function activate(pi: ExtensionAPI): void {
30
+ * pi.on("before_agent_start", (event, ctx) => {
31
+ * // inspect or modify the system prompt
32
+ * return { systemPrompt: event.systemPrompt + "\nExtra instructions..." };
33
+ * });
34
+ * }
35
+ * ```
36
+ */
37
+ // ---------------------------------------------------------------------------
38
+ // Tool definition helpers.
39
+ // ---------------------------------------------------------------------------
40
+ export { defineTool } from "./sdk/coding-agent/index.js";
41
+ // ---------------------------------------------------------------------------
42
+ // Type guards for tool result events.
43
+ // ---------------------------------------------------------------------------
44
+ export { isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, } from "./sdk/coding-agent/index.js";
@@ -0,0 +1,3 @@
1
+ export declare function getAgentDir(): string;
2
+ export declare function getAgentPath(...segments: string[]): string;
3
+ //# sourceMappingURL=agent-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-dir.d.ts","sourceRoot":"","sources":["../../src/mcp/agent-dir.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,MAAM,CAYpC;AAED,wBAAgB,YAAY,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,9 @@
1
+ import type { ExtensionAPI, ExtensionContext } from "../sdk/coding-agent/index.js";
2
+ import type { McpExtensionState } from "./state.js";
3
+ import type { McpConfig } from "./types.js";
4
+ export declare function showStatus(state: McpExtensionState, ctx: ExtensionContext): Promise<void>;
5
+ export declare function showTools(state: McpExtensionState, ctx: ExtensionContext): Promise<void>;
6
+ export declare function reconnectServers(state: McpExtensionState, ctx: ExtensionContext, targetServer?: string): Promise<void>;
7
+ export declare function authenticateServer(serverName: string, config: McpConfig, ctx: ExtensionContext): Promise<void>;
8
+ export declare function showSetupStatus(state: McpExtensionState, pi: ExtensionAPI, ctx: ExtensionContext, configOverridePath?: string): Promise<void>;
9
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/mcp/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AASzD,wBAAsB,UAAU,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC/F;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9F;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,gBAAgB,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAiDf;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBnJ"}
@@ -0,0 +1,78 @@
1
+ import type { McpConfig, ServerEntry, ImportKind, ServerProvenance } from "./types.js";
2
+ interface ConfigSourceSpec {
3
+ id: "shared-global" | "pi-global" | "shared-project" | "pi-project";
4
+ label: string;
5
+ readPath: string;
6
+ writePath: string;
7
+ kind: "user" | "project" | "import";
8
+ importKind?: string;
9
+ shared: boolean;
10
+ scope: "global" | "project";
11
+ }
12
+ export interface ConfigDiscoveryPath {
13
+ label: string;
14
+ path: string;
15
+ exists: boolean;
16
+ }
17
+ export interface DiscoveredImportConfig {
18
+ kind: ImportKind;
19
+ path: string;
20
+ }
21
+ export interface ConfigDiscoverySource extends ConfigDiscoveryPath {
22
+ id: ConfigSourceSpec["id"];
23
+ scope: ConfigSourceSpec["scope"];
24
+ kind: "shared" | "pi";
25
+ serverCount: number;
26
+ }
27
+ export interface ImportConfigSummary extends DiscoveredImportConfig {
28
+ serverCount: number;
29
+ }
30
+ export interface RepoPromptDiscovery {
31
+ configured: boolean;
32
+ configuredPath?: string;
33
+ executablePath?: string;
34
+ targetPath?: string;
35
+ serverName?: string;
36
+ entry?: ServerEntry;
37
+ }
38
+ export interface McpDiscoverySummary {
39
+ sources: ConfigDiscoverySource[];
40
+ imports: ImportConfigSummary[];
41
+ hasAnyConfig: boolean;
42
+ hasAnyDetectedPaths: boolean;
43
+ hasSharedServers: boolean;
44
+ hasPiOwnedServers: boolean;
45
+ totalServerCount: number;
46
+ fingerprint: string;
47
+ repoPrompt: RepoPromptDiscovery;
48
+ }
49
+ export interface ConfigWritePreview {
50
+ path: string;
51
+ existed: boolean;
52
+ changed: boolean;
53
+ beforeText: string;
54
+ afterText: string;
55
+ diffText: string;
56
+ }
57
+ export declare function getPiGlobalConfigPath(overridePath?: string): string;
58
+ export declare function getGenericGlobalConfigPath(): string;
59
+ export declare function getProjectConfigPath(cwd?: string): string;
60
+ export declare function getProjectPiConfigPath(cwd?: string): string;
61
+ export declare function getConfigDiscoveryPaths(overridePath?: string): ConfigDiscoveryPath[];
62
+ export declare function findAvailableImportConfigs(cwd?: string): DiscoveredImportConfig[];
63
+ export declare function getMcpDiscoverySummary(overridePath?: string, cwd?: string): McpDiscoverySummary;
64
+ export declare function loadMcpConfig(overridePath?: string): McpConfig;
65
+ export declare function previewCompatibilityImports(importKinds: ImportKind[], overridePath?: string): ConfigWritePreview;
66
+ export declare function ensureCompatibilityImports(importKinds: ImportKind[], overridePath?: string): {
67
+ path: string;
68
+ added: ImportKind[];
69
+ };
70
+ export declare function buildStarterProjectConfig(): McpConfig;
71
+ export declare function previewStarterProjectConfig(cwd?: string): ConfigWritePreview;
72
+ export declare function writeStarterProjectConfig(cwd?: string): string;
73
+ export declare function previewSharedServerEntry(filePath: string, serverName: string, entry: ServerEntry): ConfigWritePreview;
74
+ export declare function writeSharedServerEntry(filePath: string, serverName: string, entry: ServerEntry): string;
75
+ export declare function getServerProvenance(overridePath?: string): Map<string, ServerProvenance>;
76
+ export declare function writeDirectToolsConfig(changes: Map<string, true | string[] | false>, provenance: Map<string, ServerProvenance>, fullConfig: McpConfig): void;
77
+ export {};
78
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAe,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuBpG,UAAU,gBAAgB;IACxB,EAAE,EAAE,eAAe,GAAG,WAAW,GAAG,gBAAgB,GAAG,YAAY,CAAC;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAEhE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAElE;AAED,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAMpF;AAED,wBAAgB,0BAA0B,CAAC,GAAG,SAAgB,GAAG,sBAAsB,EAAE,CAWxF;AAED,wBAAgB,sBAAsB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,mBAAmB,CAoDtG;AAED,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAU9D;AAiVD,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAQhH;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,CAelI;AAED,wBAAgB,yBAAyB,IAAI,SAAS,CAIrD;AAED,wBAAgB,2BAA2B,CAAC,GAAG,SAAgB,GAAG,kBAAkB,CAInF;AAED,wBAAgB,yBAAyB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAKrE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,kBAAkB,CAOrH;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAOvG;AAED,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAmCxF;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,EAC7C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACzC,UAAU,EAAE,SAAS,GACpB,IAAI,CA+BN"}
@@ -0,0 +1,14 @@
1
+ export type ToolConsentMode = "never" | "once-per-server" | "always";
2
+ export declare class ConsentManager {
3
+ private mode;
4
+ private approvedServers;
5
+ private deniedServers;
6
+ private log;
7
+ constructor(mode?: ToolConsentMode);
8
+ requiresPrompt(serverName: string): boolean;
9
+ shouldCacheConsent(): boolean;
10
+ registerDecision(serverName: string, approved: boolean): void;
11
+ ensureApproved(serverName: string): void;
12
+ clear(serverName?: string): void;
13
+ }
14
+ //# sourceMappingURL=consent-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/consent-manager.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,iBAAiB,GAAG,QAAQ,CAAC;AAErE,qBAAa,cAAc;IAKb,OAAO,CAAC,IAAI;IAJxB,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,GAAG,CAAiD;gBAExC,IAAI,GAAE,eAAmC;IAI7D,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAO3C,kBAAkB,IAAI,OAAO;IAI7B,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAc7D,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAaxC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAWjC"}
@@ -0,0 +1,11 @@
1
+ import type { ToolDefinition } from "../sdk/coding-agent/index.js";
2
+ import type { McpExtensionState } from "./state.js";
3
+ import type { DirectToolSpec, McpConfig } from "./types.js";
4
+ import type { MetadataCache } from "./metadata-cache.js";
5
+ export declare function resolveDirectTools(config: McpConfig, cache: MetadataCache | null, prefix: "server" | "none" | "short", envOverride?: string[]): DirectToolSpec[];
6
+ export declare function getMissingConfiguredDirectToolServers(config: McpConfig, cache: MetadataCache | null): string[];
7
+ export declare function buildProxyDescription(config: McpConfig, cache: MetadataCache | null, directSpecs: DirectToolSpec[]): string;
8
+ type DirectToolExecute = ToolDefinition["execute"];
9
+ export declare function createDirectToolExecutor(getState: () => McpExtensionState | null, getInitPromise: () => Promise<McpExtensionState> | null, spec: DirectToolSpec): DirectToolExecute;
10
+ export {};
11
+ //# sourceMappingURL=direct-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/direct-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAwEzD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,aAAa,GAAG,IAAI,EAC3B,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,EACnC,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,cAAc,EAAE,CAoGlB;AAED,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,aAAa,GAAG,IAAI,GAC1B,MAAM,EAAE,CAkBV;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,aAAa,GAAG,IAAI,EAC3B,WAAW,EAAE,cAAc,EAAE,GAC5B,MAAM,CAoDR;AAED,KAAK,iBAAiB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAEnD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,iBAAiB,GAAG,IAAI,EACxC,cAAc,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,EACvD,IAAI,EAAE,cAAc,GACnB,iBAAiB,CAwJnB"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Custom error types for MCP UI operations.
3
+ * Provides structured errors with context and recovery hints.
4
+ */
5
+ export interface McpUiErrorContext {
6
+ server?: string;
7
+ tool?: string;
8
+ uri?: string;
9
+ session?: string;
10
+ [key: string]: unknown;
11
+ }
12
+ /**
13
+ * Base error class for MCP UI errors.
14
+ */
15
+ export declare class McpUiError extends Error {
16
+ readonly code: string;
17
+ readonly context: McpUiErrorContext;
18
+ readonly recoveryHint?: string;
19
+ readonly cause?: Error;
20
+ constructor(message: string, options: {
21
+ code: string;
22
+ context?: McpUiErrorContext;
23
+ recoveryHint?: string;
24
+ cause?: Error;
25
+ });
26
+ toJSON(): Record<string, unknown>;
27
+ }
28
+ /**
29
+ * Error fetching a UI resource from the MCP server.
30
+ */
31
+ export declare class ResourceFetchError extends McpUiError {
32
+ constructor(uri: string, reason: string, options?: {
33
+ server?: string;
34
+ cause?: Error;
35
+ });
36
+ }
37
+ /**
38
+ * Error parsing or validating UI resource content.
39
+ */
40
+ export declare class ResourceParseError extends McpUiError {
41
+ constructor(uri: string, reason: string, options?: {
42
+ server?: string;
43
+ mimeType?: string;
44
+ });
45
+ }
46
+ /**
47
+ * Error connecting to the AppBridge.
48
+ */
49
+ export declare class BridgeConnectionError extends McpUiError {
50
+ constructor(reason: string, options?: {
51
+ session?: string;
52
+ cause?: Error;
53
+ });
54
+ }
55
+ /**
56
+ * Error related to user consent for tool calls.
57
+ */
58
+ export declare class ConsentError extends McpUiError {
59
+ readonly denied: boolean;
60
+ constructor(server: string, options: {
61
+ denied?: boolean;
62
+ requiresApproval?: boolean;
63
+ });
64
+ }
65
+ /**
66
+ * Error with UI server session management.
67
+ */
68
+ export declare class SessionError extends McpUiError {
69
+ constructor(reason: string, options?: {
70
+ session?: string;
71
+ cause?: Error;
72
+ });
73
+ }
74
+ /**
75
+ * Error starting or operating the UI server.
76
+ */
77
+ export declare class ServerError extends McpUiError {
78
+ constructor(reason: string, options?: {
79
+ port?: number;
80
+ cause?: Error;
81
+ });
82
+ }
83
+ /**
84
+ * Error communicating with the MCP server.
85
+ */
86
+ export declare class McpServerError extends McpUiError {
87
+ constructor(server: string, reason: string, options?: {
88
+ tool?: string;
89
+ cause?: Error;
90
+ });
91
+ }
92
+ /**
93
+ * Wrap an unknown error into an McpUiError.
94
+ */
95
+ export declare function wrapError(error: unknown, context?: McpUiErrorContext): McpUiError;
96
+ /**
97
+ * Check if an error is a specific MCP UI error type.
98
+ */
99
+ export declare function isErrorCode(error: unknown, code: string): boolean;
100
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,KAAK,CAAC;KACf;IAeH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAUlC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;gBAE9C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAU/C;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;gBAE9C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;CASnD;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;gBACvC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAS1E;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;gBAGvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE;CAgB5D;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAExC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAUhD;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;gBAEvC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAU7C;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;gBAE1C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAU7C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAmBjF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE"}
@@ -0,0 +1,10 @@
1
+ export declare function isGlimpseAvailable(): boolean;
2
+ export declare function openGlimpseWindow(html: string, options: {
3
+ title: string;
4
+ width?: number;
5
+ height?: number;
6
+ onClosed: () => void;
7
+ }): Promise<{
8
+ close: () => void;
9
+ }>;
10
+ //# sourceMappingURL=glimpse-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glimpse-ui.d.ts","sourceRoot":"","sources":["../../src/mcp/glimpse-ui.ts"],"names":[],"mappings":"AASA,wBAAgB,kBAAkB,IAAI,OAAO,CAW5C;AAyBD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;;GA2BF"}
@@ -0,0 +1,17 @@
1
+ import type { UiHostContext, UiResourceContent, UiResourceCsp } from "./types.js";
2
+ export interface HostHtmlTemplateInput {
3
+ sessionToken: string;
4
+ serverName: string;
5
+ toolName: string;
6
+ toolArgs: Record<string, unknown>;
7
+ resource: UiResourceContent;
8
+ allowAttribute: string;
9
+ requireToolConsent: boolean;
10
+ cacheToolConsent: boolean;
11
+ hostContext?: UiHostContext;
12
+ appBridgeModuleUrl?: string;
13
+ }
14
+ export declare function buildHostHtmlTemplate(input: HostHtmlTemplateInput): string;
15
+ export declare function buildCspMetaContent(csp: UiResourceCsp | undefined): string | undefined;
16
+ export declare function applyCspMeta(html: string, cspContent: string | undefined): string;
17
+ //# sourceMappingURL=host-html-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-html-template.d.ts","sourceRoot":"","sources":["../../src/mcp/host-html-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKlF,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAkV1E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA2BtF;AAOD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQjF"}
@@ -0,0 +1,3 @@
1
+ import type { ExtensionAPI } from "../sdk/coding-agent/index.js";
2
+ export default function mcpAdapter(pi: ExtensionAPI): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,8BAA8B,CAAC;AAY3E,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,EAAE,YAAY,QAwSlD"}
@@ -0,0 +1,10 @@
1
+ import type { ExtensionAPI, ExtensionContext } from "../sdk/coding-agent/index.js";
2
+ import type { McpExtensionState } from "./state.js";
3
+ export declare function initializeMcp(pi: ExtensionAPI, ctx: ExtensionContext): Promise<McpExtensionState>;
4
+ export declare function updateServerMetadata(state: McpExtensionState, serverName: string): void;
5
+ export declare function updateMetadataCache(state: McpExtensionState, serverName: string): void;
6
+ export declare function flushMetadataCache(state: McpExtensionState): void;
7
+ export declare function updateStatusBar(state: McpExtensionState): void;
8
+ export declare function getFailureAgeSeconds(state: McpExtensionState, serverName: string): number | null;
9
+ export declare function lazyConnect(state: McpExtensionState, serverName: string): Promise<boolean>;
10
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/mcp/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA0BpD,wBAAsB,aAAa,CACjC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAsL5B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAWvF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CA+BtF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAMjE;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAU9D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhG;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoChG"}
package/dist/mcp/init.js CHANGED
@@ -208,15 +208,7 @@ export function flushMetadataCache(state) {
208
208
  }
209
209
  }
210
210
  }
211
- function safeFg(ui, color, text) {
212
- try {
213
- const styled = ui?.theme?.fg?.(color, text);
214
- if (styled)
215
- return styled;
216
- }
217
- catch {
218
- // fall through to plain text
219
- }
211
+ function safeFg(_ui, _color, text) {
220
212
  return text;
221
213
  }
222
214
  export function updateStatusBar(state) {
@@ -0,0 +1,30 @@
1
+ import type { ServerDefinition } from "./types.js";
2
+ import type { McpServerManager } from "./server-manager.js";
3
+ export type ReconnectCallback = (serverName: string) => void;
4
+ export declare class McpLifecycleManager {
5
+ private manager;
6
+ private keepAliveServers;
7
+ private allServers;
8
+ private serverSettings;
9
+ private globalIdleTimeout;
10
+ private healthCheckInterval?;
11
+ private onReconnect?;
12
+ private onIdleShutdown?;
13
+ constructor(manager: McpServerManager);
14
+ /**
15
+ * Set callback to be invoked after a successful auto-reconnect.
16
+ * Use this to update tool metadata when a server reconnects.
17
+ */
18
+ setReconnectCallback(callback: ReconnectCallback): void;
19
+ markKeepAlive(name: string, definition: ServerDefinition): void;
20
+ registerServer(name: string, definition: ServerDefinition, settings?: {
21
+ idleTimeout?: number;
22
+ }): void;
23
+ setGlobalIdleTimeout(minutes: number): void;
24
+ setIdleShutdownCallback(callback: (serverName: string) => void): void;
25
+ startHealthChecks(intervalMs?: number): void;
26
+ private checkConnections;
27
+ private getIdleTimeout;
28
+ gracefulShutdown(): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/mcp/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,mBAAmB,CAAC,CAAiB;IAC7C,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,CAAC,cAAc,CAAC,CAA+B;gBAE1C,OAAO,EAAE,gBAAgB;IAIrC;;;OAGG;IACH,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIvD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAI/D,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAOrG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3C,uBAAuB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIrE,iBAAiB,CAAC,UAAU,SAAQ,GAAG,IAAI;YAO7B,gBAAgB;IA0B9B,OAAO,CAAC,cAAc;IAMhB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAMxC"}