@aexol/spectral 0.8.2 → 0.8.6

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 (588) 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/agent/index.js +11 -11
  8. package/dist/cli.d.ts +17 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +1 -1
  11. package/dist/commands/bind.d.ts +12 -0
  12. package/dist/commands/bind.d.ts.map +1 -0
  13. package/dist/commands/login-oauth.d.ts +15 -0
  14. package/dist/commands/login-oauth.d.ts.map +1 -0
  15. package/dist/commands/login.d.ts +37 -0
  16. package/dist/commands/login.d.ts.map +1 -0
  17. package/dist/commands/logout.d.ts +8 -0
  18. package/dist/commands/logout.d.ts.map +1 -0
  19. package/dist/commands/serve.d.ts +112 -0
  20. package/dist/commands/serve.d.ts.map +1 -0
  21. package/dist/commands/serve.js +5 -2
  22. package/dist/commands/unbind.d.ts +8 -0
  23. package/dist/commands/unbind.d.ts.map +1 -0
  24. package/dist/config.d.ts +49 -0
  25. package/dist/config.d.ts.map +1 -0
  26. package/dist/config.js +1 -1
  27. package/dist/designer/guidelines.d.ts +23 -0
  28. package/dist/designer/guidelines.d.ts.map +1 -0
  29. package/dist/designer/index.d.ts +26 -0
  30. package/dist/designer/index.d.ts.map +1 -0
  31. package/dist/designer/index.js +9 -9
  32. package/dist/designer/philosophies.d.ts +33 -0
  33. package/dist/designer/philosophies.d.ts.map +1 -0
  34. package/dist/designer/skills.d.ts +27 -0
  35. package/dist/designer/skills.d.ts.map +1 -0
  36. package/dist/designer/systems.d.ts +36 -0
  37. package/dist/designer/systems.d.ts.map +1 -0
  38. package/dist/extensions/aexol-mcp.d.ts +25 -0
  39. package/dist/extensions/aexol-mcp.d.ts.map +1 -0
  40. package/dist/extensions/aexol-mcp.js +12 -12
  41. package/dist/extensions/kanban-bridge.d.ts +24 -0
  42. package/dist/extensions/kanban-bridge.d.ts.map +1 -0
  43. package/dist/extensions/kanban-bridge.js +3 -3
  44. package/dist/extensions/openrouter-attribution.d.ts +12 -0
  45. package/dist/extensions/openrouter-attribution.d.ts.map +1 -0
  46. package/dist/extensions/openrouter-attribution.js +2 -2
  47. package/dist/extensions/spectral-vision-fallback.d.ts +23 -0
  48. package/dist/extensions/spectral-vision-fallback.d.ts.map +1 -0
  49. package/dist/extensions/spectral-vision-fallback.js +32 -23
  50. package/dist/index.d.ts +46 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +44 -0
  53. package/dist/mcp/agent-dir.d.ts +3 -0
  54. package/dist/mcp/agent-dir.d.ts.map +1 -0
  55. package/dist/mcp/commands.d.ts +9 -0
  56. package/dist/mcp/commands.d.ts.map +1 -0
  57. package/dist/mcp/commands.js +1 -1
  58. package/dist/mcp/config.d.ts +78 -0
  59. package/dist/mcp/config.d.ts.map +1 -0
  60. package/dist/mcp/config.js +15 -15
  61. package/dist/mcp/consent-manager.d.ts +14 -0
  62. package/dist/mcp/consent-manager.d.ts.map +1 -0
  63. package/dist/mcp/direct-tools.d.ts +11 -0
  64. package/dist/mcp/direct-tools.d.ts.map +1 -0
  65. package/dist/mcp/errors.d.ts +100 -0
  66. package/dist/mcp/errors.d.ts.map +1 -0
  67. package/dist/mcp/glimpse-ui.d.ts +10 -0
  68. package/dist/mcp/glimpse-ui.d.ts.map +1 -0
  69. package/dist/mcp/host-html-template.d.ts +17 -0
  70. package/dist/mcp/host-html-template.d.ts.map +1 -0
  71. package/dist/mcp/host-html-template.js +3 -3
  72. package/dist/mcp/index.d.ts +3 -0
  73. package/dist/mcp/index.d.ts.map +1 -0
  74. package/dist/mcp/index.js +15 -13
  75. package/dist/mcp/init.d.ts +10 -0
  76. package/dist/mcp/init.d.ts.map +1 -0
  77. package/dist/mcp/init.js +4 -4
  78. package/dist/mcp/lifecycle.d.ts +30 -0
  79. package/dist/mcp/lifecycle.d.ts.map +1 -0
  80. package/dist/mcp/logger.d.ts +52 -0
  81. package/dist/mcp/logger.d.ts.map +1 -0
  82. package/dist/mcp/mcp-auth-flow.d.ts +69 -0
  83. package/dist/mcp/mcp-auth-flow.d.ts.map +1 -0
  84. package/dist/mcp/mcp-auth.d.ts +100 -0
  85. package/dist/mcp/mcp-auth.d.ts.map +1 -0
  86. package/dist/mcp/mcp-callback-server.d.ts +40 -0
  87. package/dist/mcp/mcp-callback-server.d.ts.map +1 -0
  88. package/dist/mcp/mcp-oauth-provider.d.ts +101 -0
  89. package/dist/mcp/mcp-oauth-provider.d.ts.map +1 -0
  90. package/dist/mcp/mcp-oauth-provider.js +1 -1
  91. package/dist/mcp/metadata-cache.d.ts +32 -0
  92. package/dist/mcp/metadata-cache.d.ts.map +1 -0
  93. package/dist/mcp/npx-resolver.d.ts +7 -0
  94. package/dist/mcp/npx-resolver.d.ts.map +1 -0
  95. package/dist/mcp/oauth-handler.d.ts +19 -0
  96. package/dist/mcp/oauth-handler.d.ts.map +1 -0
  97. package/dist/mcp/onboarding-state.d.ts +13 -0
  98. package/dist/mcp/onboarding-state.d.ts.map +1 -0
  99. package/dist/mcp/proxy-modes.d.ts +12 -0
  100. package/dist/mcp/proxy-modes.d.ts.map +1 -0
  101. package/dist/mcp/proxy-modes.js +2 -2
  102. package/dist/mcp/resource-tools.d.ts +2 -0
  103. package/dist/mcp/resource-tools.d.ts.map +1 -0
  104. package/dist/mcp/sampling-handler.d.ts +16 -0
  105. package/dist/mcp/sampling-handler.d.ts.map +1 -0
  106. package/dist/mcp/server-manager.d.ts +42 -0
  107. package/dist/mcp/server-manager.d.ts.map +1 -0
  108. package/dist/mcp/server-manager.js +2 -2
  109. package/dist/mcp/state-getter.d.ts +14 -0
  110. package/dist/mcp/state-getter.d.ts.map +1 -0
  111. package/dist/mcp/state-getter.js +21 -0
  112. package/dist/mcp/state.d.ts +41 -0
  113. package/dist/mcp/state.d.ts.map +1 -0
  114. package/dist/mcp/tool-metadata.d.ts +11 -0
  115. package/dist/mcp/tool-metadata.d.ts.map +1 -0
  116. package/dist/mcp/tool-registrar.d.ts +9 -0
  117. package/dist/mcp/tool-registrar.d.ts.map +1 -0
  118. package/dist/mcp/tool-registrar.js +1 -1
  119. package/dist/mcp/types.d.ts +263 -0
  120. package/dist/mcp/types.d.ts.map +1 -0
  121. package/dist/mcp/ui-resource-handler.d.ts +10 -0
  122. package/dist/mcp/ui-resource-handler.d.ts.map +1 -0
  123. package/dist/mcp/ui-server.d.ts +37 -0
  124. package/dist/mcp/ui-server.d.ts.map +1 -0
  125. package/dist/mcp/ui-server.js +1 -1
  126. package/dist/mcp/ui-session.d.ts +27 -0
  127. package/dist/mcp/ui-session.d.ts.map +1 -0
  128. package/dist/mcp/ui-stream-types.d.ts +197 -0
  129. package/dist/mcp/ui-stream-types.d.ts.map +1 -0
  130. package/dist/mcp/ui-stream-types.js +5 -5
  131. package/dist/mcp/utils.d.ts +17 -0
  132. package/dist/mcp/utils.d.ts.map +1 -0
  133. package/dist/mcp/utils.js +10 -10
  134. package/dist/mcp/vitest.config.d.ts +3 -0
  135. package/dist/mcp/vitest.config.d.ts.map +1 -0
  136. package/dist/mcp-client.d.ts +58 -0
  137. package/dist/mcp-client.d.ts.map +1 -0
  138. package/dist/mcp-client.js +3 -2
  139. package/dist/memory/branch.d.ts +124 -0
  140. package/dist/memory/branch.d.ts.map +1 -0
  141. package/dist/memory/commands/status.d.ts +4 -0
  142. package/dist/memory/commands/status.d.ts.map +1 -0
  143. package/dist/memory/commands/status.js +2 -2
  144. package/dist/memory/commands/view.d.ts +4 -0
  145. package/dist/memory/commands/view.d.ts.map +1 -0
  146. package/dist/memory/commands/view.js +2 -2
  147. package/dist/memory/compaction.d.ts +113 -0
  148. package/dist/memory/compaction.d.ts.map +1 -0
  149. package/dist/memory/config.d.ts +27 -0
  150. package/dist/memory/config.d.ts.map +1 -0
  151. package/dist/memory/debug-log.d.ts +12 -0
  152. package/dist/memory/debug-log.d.ts.map +1 -0
  153. package/dist/memory/hooks/compaction-hook.d.ts +4 -0
  154. package/dist/memory/hooks/compaction-hook.d.ts.map +1 -0
  155. package/dist/memory/hooks/compaction-hook.js +5 -5
  156. package/dist/memory/hooks/compaction-trigger.d.ts +4 -0
  157. package/dist/memory/hooks/compaction-trigger.d.ts.map +1 -0
  158. package/dist/memory/hooks/compaction-trigger.js +3 -3
  159. package/dist/memory/hooks/observer-trigger.d.ts +4 -0
  160. package/dist/memory/hooks/observer-trigger.d.ts.map +1 -0
  161. package/dist/memory/hooks/observer-trigger.js +4 -4
  162. package/dist/memory/ids.d.ts +2 -0
  163. package/dist/memory/ids.d.ts.map +1 -0
  164. package/dist/memory/index.d.ts +3 -0
  165. package/dist/memory/index.d.ts.map +1 -0
  166. package/dist/memory/index.js +9 -9
  167. package/dist/memory/model-budget.d.ts +4 -0
  168. package/dist/memory/model-budget.d.ts.map +1 -0
  169. package/dist/memory/observer.d.ts +21 -0
  170. package/dist/memory/observer.d.ts.map +1 -0
  171. package/dist/memory/project-observations-store.d.ts +24 -0
  172. package/dist/memory/project-observations-store.d.ts.map +1 -0
  173. package/dist/memory/prompts.d.ts +11 -0
  174. package/dist/memory/prompts.d.ts.map +1 -0
  175. package/dist/memory/relevance.d.ts +4 -0
  176. package/dist/memory/relevance.d.ts.map +1 -0
  177. package/dist/memory/runtime.d.ts +40 -0
  178. package/dist/memory/runtime.d.ts.map +1 -0
  179. package/dist/memory/serialize.d.ts +26 -0
  180. package/dist/memory/serialize.d.ts.map +1 -0
  181. package/dist/memory/tokens.d.ts +8 -0
  182. package/dist/memory/tokens.d.ts.map +1 -0
  183. package/dist/memory/tools/read-project-observations.d.ts +8 -0
  184. package/dist/memory/tools/read-project-observations.d.ts.map +1 -0
  185. package/dist/memory/tools/read-project-observations.js +2 -2
  186. package/dist/memory/tools/recall-observation.d.ts +63 -0
  187. package/dist/memory/tools/recall-observation.d.ts.map +1 -0
  188. package/dist/memory/tools/recall-observation.js +2 -2
  189. package/dist/memory/tools/write-project-observation.d.ts +9 -0
  190. package/dist/memory/tools/write-project-observation.d.ts.map +1 -0
  191. package/dist/memory/tools/write-project-observation.js +2 -2
  192. package/dist/memory/types.d.ts +65 -0
  193. package/dist/memory/types.d.ts.map +1 -0
  194. package/dist/preflight.d.ts +27 -0
  195. package/dist/preflight.d.ts.map +1 -0
  196. package/dist/preflight.js +4 -2
  197. package/dist/relay/auto-research.d.ts +64 -0
  198. package/dist/relay/auto-research.d.ts.map +1 -0
  199. package/dist/relay/auto-research.js +184 -79
  200. package/dist/relay/client.d.ts +126 -0
  201. package/dist/relay/client.d.ts.map +1 -0
  202. package/dist/relay/dispatcher.d.ts +216 -0
  203. package/dist/relay/dispatcher.d.ts.map +1 -0
  204. package/dist/relay/dispatcher.js +33 -6
  205. package/dist/relay/machine-store.d.ts +68 -0
  206. package/dist/relay/machine-store.d.ts.map +1 -0
  207. package/dist/relay/models-fetch.d.ts +75 -0
  208. package/dist/relay/models-fetch.d.ts.map +1 -0
  209. package/dist/relay/registration.d.ts +81 -0
  210. package/dist/relay/registration.d.ts.map +1 -0
  211. package/dist/sdk/agent-core/agent-loop.d.ts +24 -0
  212. package/dist/sdk/agent-core/agent-loop.d.ts.map +1 -0
  213. package/dist/sdk/agent-core/agent.d.ts +125 -0
  214. package/dist/sdk/agent-core/agent.d.ts.map +1 -0
  215. package/dist/sdk/agent-core/harness/agent-harness.d.ts +92 -0
  216. package/dist/sdk/agent-core/harness/agent-harness.d.ts.map +1 -0
  217. package/dist/sdk/agent-core/harness/compaction/branch-summarization.d.ts +53 -0
  218. package/dist/sdk/agent-core/harness/compaction/branch-summarization.d.ts.map +1 -0
  219. package/dist/sdk/agent-core/harness/compaction/compaction.d.ts +95 -0
  220. package/dist/sdk/agent-core/harness/compaction/compaction.d.ts.map +1 -0
  221. package/dist/sdk/agent-core/harness/compaction/utils.d.ts +25 -0
  222. package/dist/sdk/agent-core/harness/compaction/utils.d.ts.map +1 -0
  223. package/dist/sdk/agent-core/harness/env/nodejs.d.ts +51 -0
  224. package/dist/sdk/agent-core/harness/env/nodejs.d.ts.map +1 -0
  225. package/dist/sdk/agent-core/harness/messages.d.ts +51 -0
  226. package/dist/sdk/agent-core/harness/messages.d.ts.map +1 -0
  227. package/dist/sdk/agent-core/harness/prompt-templates.d.ts +48 -0
  228. package/dist/sdk/agent-core/harness/prompt-templates.d.ts.map +1 -0
  229. package/dist/sdk/agent-core/harness/session/jsonl-repo.d.ts +26 -0
  230. package/dist/sdk/agent-core/harness/session/jsonl-repo.d.ts.map +1 -0
  231. package/dist/sdk/agent-core/harness/session/jsonl-storage.d.ts +33 -0
  232. package/dist/sdk/agent-core/harness/session/jsonl-storage.d.ts.map +1 -0
  233. package/dist/sdk/agent-core/harness/session/memory-repo.d.ts +18 -0
  234. package/dist/sdk/agent-core/harness/session/memory-repo.d.ts.map +1 -0
  235. package/dist/sdk/agent-core/harness/session/memory-storage.d.ts +25 -0
  236. package/dist/sdk/agent-core/harness/session/memory-storage.d.ts.map +1 -0
  237. package/dist/sdk/agent-core/harness/session/repo-utils.d.ts +11 -0
  238. package/dist/sdk/agent-core/harness/session/repo-utils.d.ts.map +1 -0
  239. package/dist/sdk/agent-core/harness/session/session.d.ts +32 -0
  240. package/dist/sdk/agent-core/harness/session/session.d.ts.map +1 -0
  241. package/dist/sdk/agent-core/harness/session/uuid.d.ts +2 -0
  242. package/dist/sdk/agent-core/harness/session/uuid.d.ts.map +1 -0
  243. package/dist/sdk/agent-core/harness/skills.d.ts +44 -0
  244. package/dist/sdk/agent-core/harness/skills.d.ts.map +1 -0
  245. package/dist/sdk/agent-core/harness/system-prompt.d.ts +3 -0
  246. package/dist/sdk/agent-core/harness/system-prompt.d.ts.map +1 -0
  247. package/dist/sdk/agent-core/harness/types.d.ts +601 -0
  248. package/dist/sdk/agent-core/harness/types.d.ts.map +1 -0
  249. package/dist/sdk/agent-core/harness/utils/shell-output.d.ts +14 -0
  250. package/dist/sdk/agent-core/harness/utils/shell-output.d.ts.map +1 -0
  251. package/dist/sdk/agent-core/harness/utils/truncate.d.ts +70 -0
  252. package/dist/sdk/agent-core/harness/utils/truncate.d.ts.map +1 -0
  253. package/dist/sdk/agent-core/index.d.ts +20 -0
  254. package/dist/sdk/agent-core/index.d.ts.map +1 -0
  255. package/dist/sdk/agent-core/node.d.ts +3 -0
  256. package/dist/sdk/agent-core/node.d.ts.map +1 -0
  257. package/dist/sdk/agent-core/proxy.d.ts +69 -0
  258. package/dist/sdk/agent-core/proxy.d.ts.map +1 -0
  259. package/dist/sdk/agent-core/types.d.ts +393 -0
  260. package/dist/sdk/agent-core/types.d.ts.map +1 -0
  261. package/dist/sdk/ai/api-registry.d.ts +20 -0
  262. package/dist/sdk/ai/api-registry.d.ts.map +1 -0
  263. package/dist/sdk/ai/cli.d.ts +3 -0
  264. package/dist/sdk/ai/cli.d.ts.map +1 -0
  265. package/dist/sdk/ai/env-api-keys.d.ts +18 -0
  266. package/dist/sdk/ai/env-api-keys.d.ts.map +1 -0
  267. package/dist/sdk/ai/image-models.d.ts +10 -0
  268. package/dist/sdk/ai/image-models.d.ts.map +1 -0
  269. package/dist/sdk/ai/image-models.generated.d.ts +440 -0
  270. package/dist/sdk/ai/image-models.generated.d.ts.map +1 -0
  271. package/dist/sdk/ai/images-api-registry.d.ts +14 -0
  272. package/dist/sdk/ai/images-api-registry.d.ts.map +1 -0
  273. package/dist/sdk/ai/images.d.ts +4 -0
  274. package/dist/sdk/ai/images.d.ts.map +1 -0
  275. package/dist/sdk/ai/index.d.ts +21 -0
  276. package/dist/sdk/ai/index.d.ts.map +1 -0
  277. package/dist/sdk/ai/models.d.ts +18 -0
  278. package/dist/sdk/ai/models.d.ts.map +1 -0
  279. package/dist/sdk/ai/models.generated.d.ts +17349 -0
  280. package/dist/sdk/ai/models.generated.d.ts.map +1 -0
  281. package/dist/sdk/ai/oauth.d.ts +2 -0
  282. package/dist/sdk/ai/oauth.d.ts.map +1 -0
  283. package/dist/sdk/ai/providers/anthropic.d.ts +54 -0
  284. package/dist/sdk/ai/providers/anthropic.d.ts.map +1 -0
  285. package/dist/sdk/ai/providers/faux.d.ts +56 -0
  286. package/dist/sdk/ai/providers/faux.d.ts.map +1 -0
  287. package/dist/sdk/ai/providers/github-copilot-headers.d.ts +8 -0
  288. package/dist/sdk/ai/providers/github-copilot-headers.d.ts.map +1 -0
  289. package/dist/sdk/ai/providers/openai-completions.d.ts +19 -0
  290. package/dist/sdk/ai/providers/openai-completions.d.ts.map +1 -0
  291. package/dist/sdk/ai/providers/openai-prompt-cache.d.ts +3 -0
  292. package/dist/sdk/ai/providers/openai-prompt-cache.d.ts.map +1 -0
  293. package/dist/sdk/ai/providers/register-builtins.d.ts +15 -0
  294. package/dist/sdk/ai/providers/register-builtins.d.ts.map +1 -0
  295. package/dist/sdk/ai/providers/simple-options.d.ts +8 -0
  296. package/dist/sdk/ai/providers/simple-options.d.ts.map +1 -0
  297. package/dist/sdk/ai/providers/transform-messages.d.ts +8 -0
  298. package/dist/sdk/ai/providers/transform-messages.d.ts.map +1 -0
  299. package/dist/sdk/ai/session-resources.d.ts +4 -0
  300. package/dist/sdk/ai/session-resources.d.ts.map +1 -0
  301. package/dist/sdk/ai/stream.d.ts +8 -0
  302. package/dist/sdk/ai/stream.d.ts.map +1 -0
  303. package/dist/sdk/ai/types.d.ts +488 -0
  304. package/dist/sdk/ai/types.d.ts.map +1 -0
  305. package/dist/sdk/ai/utils/diagnostics.d.ts +19 -0
  306. package/dist/sdk/ai/utils/diagnostics.d.ts.map +1 -0
  307. package/dist/sdk/ai/utils/event-stream.d.ts +21 -0
  308. package/dist/sdk/ai/utils/event-stream.d.ts.map +1 -0
  309. package/dist/sdk/ai/utils/hash.d.ts +3 -0
  310. package/dist/sdk/ai/utils/hash.d.ts.map +1 -0
  311. package/dist/sdk/ai/utils/headers.d.ts +2 -0
  312. package/dist/sdk/ai/utils/headers.d.ts.map +1 -0
  313. package/dist/sdk/ai/utils/json-parse.d.ts +16 -0
  314. package/dist/sdk/ai/utils/json-parse.d.ts.map +1 -0
  315. package/dist/sdk/ai/utils/node-http-proxy.d.ts +10 -0
  316. package/dist/sdk/ai/utils/node-http-proxy.d.ts.map +1 -0
  317. package/dist/sdk/ai/utils/oauth/anthropic.d.ts +25 -0
  318. package/dist/sdk/ai/utils/oauth/anthropic.d.ts.map +1 -0
  319. package/dist/sdk/ai/utils/oauth/device-code.d.ts +19 -0
  320. package/dist/sdk/ai/utils/oauth/device-code.d.ts.map +1 -0
  321. package/dist/sdk/ai/utils/oauth/github-copilot.d.ts +30 -0
  322. package/dist/sdk/ai/utils/oauth/github-copilot.d.ts.map +1 -0
  323. package/dist/sdk/ai/utils/oauth/index.d.ts +58 -0
  324. package/dist/sdk/ai/utils/oauth/index.d.ts.map +1 -0
  325. package/dist/sdk/ai/utils/oauth/oauth-page.d.ts +3 -0
  326. package/dist/sdk/ai/utils/oauth/oauth-page.d.ts.map +1 -0
  327. package/dist/sdk/ai/utils/oauth/openai-codex.d.ts +34 -0
  328. package/dist/sdk/ai/utils/oauth/openai-codex.d.ts.map +1 -0
  329. package/dist/sdk/ai/utils/oauth/openai-codex.js +2 -2
  330. package/dist/sdk/ai/utils/oauth/pkce.d.ts +13 -0
  331. package/dist/sdk/ai/utils/oauth/pkce.d.ts.map +1 -0
  332. package/dist/sdk/ai/utils/oauth/types.d.ts +64 -0
  333. package/dist/sdk/ai/utils/oauth/types.d.ts.map +1 -0
  334. package/dist/sdk/ai/utils/overflow.d.ts +56 -0
  335. package/dist/sdk/ai/utils/overflow.d.ts.map +1 -0
  336. package/dist/sdk/ai/utils/sanitize-unicode.d.ts +22 -0
  337. package/dist/sdk/ai/utils/sanitize-unicode.d.ts.map +1 -0
  338. package/dist/sdk/ai/utils/typebox-helpers.d.ts +17 -0
  339. package/dist/sdk/ai/utils/typebox-helpers.d.ts.map +1 -0
  340. package/dist/sdk/ai/utils/validation.d.ts +18 -0
  341. package/dist/sdk/ai/utils/validation.d.ts.map +1 -0
  342. package/dist/sdk/coding-agent/cli.d.ts +3 -0
  343. package/dist/sdk/coding-agent/cli.d.ts.map +1 -0
  344. package/dist/sdk/coding-agent/config.d.ts +71 -0
  345. package/dist/sdk/coding-agent/config.d.ts.map +1 -0
  346. package/dist/sdk/coding-agent/core/agent-session-runtime.d.ts +117 -0
  347. package/dist/sdk/coding-agent/core/agent-session-runtime.d.ts.map +1 -0
  348. package/dist/sdk/coding-agent/core/agent-session-services.d.ts +86 -0
  349. package/dist/sdk/coding-agent/core/agent-session-services.d.ts.map +1 -0
  350. package/dist/sdk/coding-agent/core/agent-session.d.ts +626 -0
  351. package/dist/sdk/coding-agent/core/agent-session.d.ts.map +1 -0
  352. package/dist/sdk/coding-agent/core/agent-session.js +3 -3
  353. package/dist/sdk/coding-agent/core/auth-guidance.d.ts +5 -0
  354. package/dist/sdk/coding-agent/core/auth-guidance.d.ts.map +1 -0
  355. package/dist/sdk/coding-agent/core/auth-storage.d.ts +145 -0
  356. package/dist/sdk/coding-agent/core/auth-storage.d.ts.map +1 -0
  357. package/dist/sdk/coding-agent/core/auth-storage.js +2 -2
  358. package/dist/sdk/coding-agent/core/bash-executor.d.ts +32 -0
  359. package/dist/sdk/coding-agent/core/bash-executor.d.ts.map +1 -0
  360. package/dist/sdk/coding-agent/core/bash-executor.js +1 -1
  361. package/dist/sdk/coding-agent/core/compaction/branch-summarization.d.ts +88 -0
  362. package/dist/sdk/coding-agent/core/compaction/branch-summarization.d.ts.map +1 -0
  363. package/dist/sdk/coding-agent/core/compaction/branch-summarization.js +1 -1
  364. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts +142 -0
  365. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts.map +1 -0
  366. package/dist/sdk/coding-agent/core/compaction/compaction.js +1 -1
  367. package/dist/sdk/coding-agent/core/compaction/index.d.ts +7 -0
  368. package/dist/sdk/coding-agent/core/compaction/index.d.ts.map +1 -0
  369. package/dist/sdk/coding-agent/core/compaction/utils.d.ts +38 -0
  370. package/dist/sdk/coding-agent/core/compaction/utils.d.ts.map +1 -0
  371. package/dist/sdk/coding-agent/core/defaults.d.ts +3 -0
  372. package/dist/sdk/coding-agent/core/defaults.d.ts.map +1 -0
  373. package/dist/sdk/coding-agent/core/diagnostics.d.ts +15 -0
  374. package/dist/sdk/coding-agent/core/diagnostics.d.ts.map +1 -0
  375. package/dist/sdk/coding-agent/core/event-bus.d.ts +9 -0
  376. package/dist/sdk/coding-agent/core/event-bus.d.ts.map +1 -0
  377. package/dist/sdk/coding-agent/core/exec.d.ts +29 -0
  378. package/dist/sdk/coding-agent/core/exec.d.ts.map +1 -0
  379. package/dist/sdk/coding-agent/core/extensions/index.d.ts +12 -0
  380. package/dist/sdk/coding-agent/core/extensions/index.d.ts.map +1 -0
  381. package/dist/sdk/coding-agent/core/extensions/loader.d.ts +24 -0
  382. package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -0
  383. package/dist/sdk/coding-agent/core/extensions/loader.js +18 -21
  384. package/dist/sdk/coding-agent/core/extensions/runner.d.ts +161 -0
  385. package/dist/sdk/coding-agent/core/extensions/runner.d.ts.map +1 -0
  386. package/dist/sdk/coding-agent/core/extensions/runner.js +1 -1
  387. package/dist/sdk/coding-agent/core/extensions/types.d.ts +1181 -0
  388. package/dist/sdk/coding-agent/core/extensions/types.d.ts.map +1 -0
  389. package/dist/sdk/coding-agent/core/extensions/wrapper.d.ts +20 -0
  390. package/dist/sdk/coding-agent/core/extensions/wrapper.d.ts.map +1 -0
  391. package/dist/sdk/coding-agent/core/http-dispatcher.d.ts +21 -0
  392. package/dist/sdk/coding-agent/core/http-dispatcher.d.ts.map +1 -0
  393. package/dist/sdk/coding-agent/core/index.d.ts +12 -0
  394. package/dist/sdk/coding-agent/core/index.d.ts.map +1 -0
  395. package/dist/sdk/coding-agent/core/keybindings.d.ts +371 -0
  396. package/dist/sdk/coding-agent/core/keybindings.d.ts.map +1 -0
  397. package/dist/sdk/coding-agent/core/messages.d.ts +77 -0
  398. package/dist/sdk/coding-agent/core/messages.d.ts.map +1 -0
  399. package/dist/sdk/coding-agent/core/model-registry.d.ts +150 -0
  400. package/dist/sdk/coding-agent/core/model-registry.d.ts.map +1 -0
  401. package/dist/sdk/coding-agent/core/model-resolver-utils.d.ts +7 -0
  402. package/dist/sdk/coding-agent/core/model-resolver-utils.d.ts.map +1 -0
  403. package/dist/sdk/coding-agent/core/model-resolver.d.ts +110 -0
  404. package/dist/sdk/coding-agent/core/model-resolver.d.ts.map +1 -0
  405. package/dist/sdk/coding-agent/core/output-guard.d.ts +6 -0
  406. package/dist/sdk/coding-agent/core/output-guard.d.ts.map +1 -0
  407. package/dist/sdk/coding-agent/core/package-manager.d.ts +204 -0
  408. package/dist/sdk/coding-agent/core/package-manager.d.ts.map +1 -0
  409. package/dist/sdk/coding-agent/core/package-manager.js +14 -14
  410. package/dist/sdk/coding-agent/core/prompt-templates.d.ts +52 -0
  411. package/dist/sdk/coding-agent/core/prompt-templates.d.ts.map +1 -0
  412. package/dist/sdk/coding-agent/core/provider-display-names.d.ts +2 -0
  413. package/dist/sdk/coding-agent/core/provider-display-names.d.ts.map +1 -0
  414. package/dist/sdk/coding-agent/core/resolve-config-value.d.ts +23 -0
  415. package/dist/sdk/coding-agent/core/resolve-config-value.d.ts.map +1 -0
  416. package/dist/sdk/coding-agent/core/resource-loader.d.ts +194 -0
  417. package/dist/sdk/coding-agent/core/resource-loader.d.ts.map +1 -0
  418. package/dist/sdk/coding-agent/core/sdk.d.ts +107 -0
  419. package/dist/sdk/coding-agent/core/sdk.d.ts.map +1 -0
  420. package/dist/sdk/coding-agent/core/sdk.js +2 -2
  421. package/dist/sdk/coding-agent/core/session-cwd.d.ts +19 -0
  422. package/dist/sdk/coding-agent/core/session-cwd.d.ts.map +1 -0
  423. package/dist/sdk/coding-agent/core/session-manager.d.ts +333 -0
  424. package/dist/sdk/coding-agent/core/session-manager.d.ts.map +1 -0
  425. package/dist/sdk/coding-agent/core/settings-manager.d.ts +209 -0
  426. package/dist/sdk/coding-agent/core/settings-manager.d.ts.map +1 -0
  427. package/dist/sdk/coding-agent/core/skills.d.ts +60 -0
  428. package/dist/sdk/coding-agent/core/skills.d.ts.map +1 -0
  429. package/dist/sdk/coding-agent/core/slash-commands.d.ts +14 -0
  430. package/dist/sdk/coding-agent/core/slash-commands.d.ts.map +1 -0
  431. package/dist/sdk/coding-agent/core/source-info.d.ts +18 -0
  432. package/dist/sdk/coding-agent/core/source-info.d.ts.map +1 -0
  433. package/dist/sdk/coding-agent/core/system-prompt.d.ts +28 -0
  434. package/dist/sdk/coding-agent/core/system-prompt.d.ts.map +1 -0
  435. package/dist/sdk/coding-agent/core/system-prompt.js +7 -7
  436. package/dist/sdk/coding-agent/core/telemetry.d.ts +3 -0
  437. package/dist/sdk/coding-agent/core/telemetry.d.ts.map +1 -0
  438. package/dist/sdk/coding-agent/core/theme.d.ts +28 -0
  439. package/dist/sdk/coding-agent/core/theme.d.ts.map +1 -0
  440. package/dist/sdk/coding-agent/core/timings.d.ts +8 -0
  441. package/dist/sdk/coding-agent/core/timings.d.ts.map +1 -0
  442. package/dist/sdk/coding-agent/core/tools/bash.d.ts +63 -0
  443. package/dist/sdk/coding-agent/core/tools/bash.d.ts.map +1 -0
  444. package/dist/sdk/coding-agent/core/tools/bash.js +3 -3
  445. package/dist/sdk/coding-agent/core/tools/edit-diff.d.ts +87 -0
  446. package/dist/sdk/coding-agent/core/tools/edit-diff.d.ts.map +1 -0
  447. package/dist/sdk/coding-agent/core/tools/edit.d.ts +39 -0
  448. package/dist/sdk/coding-agent/core/tools/edit.d.ts.map +1 -0
  449. package/dist/sdk/coding-agent/core/tools/file-mutation-queue.d.ts +6 -0
  450. package/dist/sdk/coding-agent/core/tools/file-mutation-queue.d.ts.map +1 -0
  451. package/dist/sdk/coding-agent/core/tools/find.d.ts +35 -0
  452. package/dist/sdk/coding-agent/core/tools/find.d.ts.map +1 -0
  453. package/dist/sdk/coding-agent/core/tools/grep.d.ts +37 -0
  454. package/dist/sdk/coding-agent/core/tools/grep.d.ts.map +1 -0
  455. package/dist/sdk/coding-agent/core/tools/index.d.ts +40 -0
  456. package/dist/sdk/coding-agent/core/tools/index.d.ts.map +1 -0
  457. package/dist/sdk/coding-agent/core/tools/ls.d.ts +37 -0
  458. package/dist/sdk/coding-agent/core/tools/ls.d.ts.map +1 -0
  459. package/dist/sdk/coding-agent/core/tools/output-accumulator.d.ts +52 -0
  460. package/dist/sdk/coding-agent/core/tools/output-accumulator.d.ts.map +1 -0
  461. package/dist/sdk/coding-agent/core/tools/output-accumulator.js +1 -1
  462. package/dist/sdk/coding-agent/core/tools/path-utils.d.ts +8 -0
  463. package/dist/sdk/coding-agent/core/tools/path-utils.d.ts.map +1 -0
  464. package/dist/sdk/coding-agent/core/tools/read.d.ts +35 -0
  465. package/dist/sdk/coding-agent/core/tools/read.d.ts.map +1 -0
  466. package/dist/sdk/coding-agent/core/tools/read.js +18 -10
  467. package/dist/sdk/coding-agent/core/tools/render-diff.d.ts +17 -0
  468. package/dist/sdk/coding-agent/core/tools/render-diff.d.ts.map +1 -0
  469. package/dist/sdk/coding-agent/core/tools/render-utils.d.ts +21 -0
  470. package/dist/sdk/coding-agent/core/tools/render-utils.d.ts.map +1 -0
  471. package/dist/sdk/coding-agent/core/tools/tool-definition-wrapper.d.ts +14 -0
  472. package/dist/sdk/coding-agent/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  473. package/dist/sdk/coding-agent/core/tools/truncate.d.ts +70 -0
  474. package/dist/sdk/coding-agent/core/tools/truncate.d.ts.map +1 -0
  475. package/dist/sdk/coding-agent/core/tools/write.d.ts +26 -0
  476. package/dist/sdk/coding-agent/core/tools/write.d.ts.map +1 -0
  477. package/dist/sdk/coding-agent/index.d.ts +29 -0
  478. package/dist/sdk/coding-agent/index.d.ts.map +1 -0
  479. package/dist/sdk/coding-agent/main.d.ts +2 -0
  480. package/dist/sdk/coding-agent/main.d.ts.map +1 -0
  481. package/dist/sdk/coding-agent/migrations.d.ts +33 -0
  482. package/dist/sdk/coding-agent/migrations.d.ts.map +1 -0
  483. package/dist/sdk/coding-agent/migrations.js +4 -4
  484. package/dist/sdk/coding-agent/modes/index.d.ts +8 -0
  485. package/dist/sdk/coding-agent/modes/index.d.ts.map +1 -0
  486. package/dist/sdk/coding-agent/modes/print-mode.d.ts +28 -0
  487. package/dist/sdk/coding-agent/modes/print-mode.d.ts.map +1 -0
  488. package/dist/sdk/coding-agent/modes/print-mode.js +2 -2
  489. package/dist/sdk/coding-agent/modes/rpc/jsonl.d.ts +17 -0
  490. package/dist/sdk/coding-agent/modes/rpc/jsonl.d.ts.map +1 -0
  491. package/dist/sdk/coding-agent/modes/rpc/rpc-client.d.ts +224 -0
  492. package/dist/sdk/coding-agent/modes/rpc/rpc-client.d.ts.map +1 -0
  493. package/dist/sdk/coding-agent/modes/rpc/rpc-mode.d.ts +20 -0
  494. package/dist/sdk/coding-agent/modes/rpc/rpc-mode.d.ts.map +1 -0
  495. package/dist/sdk/coding-agent/modes/rpc/rpc-types.d.ts +419 -0
  496. package/dist/sdk/coding-agent/modes/rpc/rpc-types.d.ts.map +1 -0
  497. package/dist/sdk/coding-agent/utils/ansi.d.ts +2 -0
  498. package/dist/sdk/coding-agent/utils/ansi.d.ts.map +1 -0
  499. package/dist/sdk/coding-agent/utils/changelog.d.ts +21 -0
  500. package/dist/sdk/coding-agent/utils/changelog.d.ts.map +1 -0
  501. package/dist/sdk/coding-agent/utils/child-process.d.ts +15 -0
  502. package/dist/sdk/coding-agent/utils/child-process.d.ts.map +1 -0
  503. package/dist/sdk/coding-agent/utils/clipboard-image.d.ts +11 -0
  504. package/dist/sdk/coding-agent/utils/clipboard-image.d.ts.map +1 -0
  505. package/dist/sdk/coding-agent/utils/clipboard-image.js +1 -1
  506. package/dist/sdk/coding-agent/utils/clipboard-native.d.ts +8 -0
  507. package/dist/sdk/coding-agent/utils/clipboard-native.d.ts.map +1 -0
  508. package/dist/sdk/coding-agent/utils/clipboard.d.ts +2 -0
  509. package/dist/sdk/coding-agent/utils/clipboard.d.ts.map +1 -0
  510. package/dist/sdk/coding-agent/utils/exif-orientation.d.ts +5 -0
  511. package/dist/sdk/coding-agent/utils/exif-orientation.d.ts.map +1 -0
  512. package/dist/sdk/coding-agent/utils/frontmatter.d.ts +8 -0
  513. package/dist/sdk/coding-agent/utils/frontmatter.d.ts.map +1 -0
  514. package/dist/sdk/coding-agent/utils/fs-watch.d.ts +5 -0
  515. package/dist/sdk/coding-agent/utils/fs-watch.d.ts.map +1 -0
  516. package/dist/sdk/coding-agent/utils/git.d.ts +26 -0
  517. package/dist/sdk/coding-agent/utils/git.d.ts.map +1 -0
  518. package/dist/sdk/coding-agent/utils/html.d.ts +7 -0
  519. package/dist/sdk/coding-agent/utils/html.d.ts.map +1 -0
  520. package/dist/sdk/coding-agent/utils/image-convert.d.ts +9 -0
  521. package/dist/sdk/coding-agent/utils/image-convert.d.ts.map +1 -0
  522. package/dist/sdk/coding-agent/utils/image-resize.d.ts +36 -0
  523. package/dist/sdk/coding-agent/utils/image-resize.d.ts.map +1 -0
  524. package/dist/sdk/coding-agent/utils/mime.d.ts +3 -0
  525. package/dist/sdk/coding-agent/utils/mime.d.ts.map +1 -0
  526. package/dist/sdk/coding-agent/utils/paths.d.ts +31 -0
  527. package/dist/sdk/coding-agent/utils/paths.d.ts.map +1 -0
  528. package/dist/sdk/coding-agent/utils/photon.d.ts +13 -0
  529. package/dist/sdk/coding-agent/utils/photon.d.ts.map +1 -0
  530. package/dist/sdk/coding-agent/utils/shell.d.ts +30 -0
  531. package/dist/sdk/coding-agent/utils/shell.d.ts.map +1 -0
  532. package/dist/sdk/coding-agent/utils/sleep.d.ts +5 -0
  533. package/dist/sdk/coding-agent/utils/sleep.d.ts.map +1 -0
  534. package/dist/sdk/coding-agent/utils/spectral-user-agent.d.ts +2 -0
  535. package/dist/sdk/coding-agent/utils/spectral-user-agent.d.ts.map +1 -0
  536. package/dist/sdk/coding-agent/utils/spectral-user-agent.js +3 -0
  537. package/dist/sdk/coding-agent/utils/syntax-highlight.d.ts +12 -0
  538. package/dist/sdk/coding-agent/utils/syntax-highlight.d.ts.map +1 -0
  539. package/dist/sdk/coding-agent/utils/tools-manager.d.ts +3 -0
  540. package/dist/sdk/coding-agent/utils/tools-manager.d.ts.map +1 -0
  541. package/dist/sdk/coding-agent/utils/version-check.d.ts +15 -0
  542. package/dist/sdk/coding-agent/utils/version-check.d.ts.map +1 -0
  543. package/dist/sdk/coding-agent/utils/version-check.js +7 -7
  544. package/dist/sdk/coding-agent/utils/windows-self-update.d.ts +3 -0
  545. package/dist/sdk/coding-agent/utils/windows-self-update.d.ts.map +1 -0
  546. package/dist/sdk/coding-agent/utils/windows-self-update.js +1 -1
  547. package/dist/server/agent-bridge.d.ts +308 -0
  548. package/dist/server/agent-bridge.d.ts.map +1 -0
  549. package/dist/server/agent-bridge.js +58 -58
  550. package/dist/server/handlers/errors.d.ts +26 -0
  551. package/dist/server/handlers/errors.d.ts.map +1 -0
  552. package/dist/server/handlers/mcp-status.d.ts +21 -0
  553. package/dist/server/handlers/mcp-status.d.ts.map +1 -0
  554. package/dist/server/handlers/mcp-status.js +52 -0
  555. package/dist/server/handlers/paths-autocomplete.d.ts +45 -0
  556. package/dist/server/handlers/paths-autocomplete.d.ts.map +1 -0
  557. package/dist/server/handlers/projects.d.ts +58 -0
  558. package/dist/server/handlers/projects.d.ts.map +1 -0
  559. package/dist/server/handlers/queue.d.ts +27 -0
  560. package/dist/server/handlers/queue.d.ts.map +1 -0
  561. package/dist/server/handlers/sessions.d.ts +50 -0
  562. package/dist/server/handlers/sessions.d.ts.map +1 -0
  563. package/dist/server/handlers/sessions.js +1 -1
  564. package/dist/server/handlers/settings.d.ts +30 -0
  565. package/dist/server/handlers/settings.d.ts.map +1 -0
  566. package/dist/server/handlers/settings.js +123 -0
  567. package/dist/server/paths.d.ts +51 -0
  568. package/dist/server/paths.d.ts.map +1 -0
  569. package/dist/server/paths.js +2 -2
  570. package/dist/server/session-stream.d.ts +379 -0
  571. package/dist/server/session-stream.d.ts.map +1 -0
  572. package/dist/server/session-stream.js +43 -34
  573. package/dist/server/shutdown.d.ts +102 -0
  574. package/dist/server/shutdown.d.ts.map +1 -0
  575. package/dist/server/shutdown.js +3 -3
  576. package/dist/server/storage.d.ts +287 -0
  577. package/dist/server/storage.d.ts.map +1 -0
  578. package/dist/server/storage.js +6 -6
  579. package/dist/server/title-generator.d.ts +25 -0
  580. package/dist/server/title-generator.d.ts.map +1 -0
  581. package/dist/server/wire.d.ts +448 -0
  582. package/dist/server/wire.d.ts.map +1 -0
  583. package/dist/server/wire.js +1 -1
  584. package/dist/studio-binding.d.ts +44 -0
  585. package/dist/studio-binding.d.ts.map +1 -0
  586. package/dist/studio-binding.js +1 -1
  587. package/package.json +11 -1
  588. package/dist/sdk/coding-agent/utils/pi-user-agent.js +0 -3
@@ -1,30 +1,30 @@
1
1
  /**
2
- * Aexol MCP pi extension.
2
+ * Aexol MCP spectral extension.
3
3
  *
4
4
  * Loaded by the spectral wrapper via `--extension <abs-path>`. On startup it:
5
5
  * 1. Reads ~/.spectral/config.json (writen by `spectral login`).
6
6
  * 2. Calls tools/list against the MCP backend once.
7
7
  * 3. Reads the local Studio binding (`.aexol/aexol.jsonc`) so remote tools
8
8
  * auto-inherit `teamId` / `projectId` without needing `remote_set_context`.
9
- * 4. Registers every returned remote tool through pi.registerTool() so the
9
+ * 4. Registers every returned remote tool through ext.registerTool() so the
10
10
  * model can call them like built-in tools.
11
11
  * 5. Registers local binding-management tools (`local_bind_project`,
12
12
  * `local_unbind_project`, `local_get_binding`) so users can bind a
13
13
  * directory to an Aexol Studio project from within the agent.
14
14
  *
15
- * Each registered tool is just a thin proxy: when pi's model invokes it, we
15
+ * Each registered tool is just a thin proxy: when spectral's model invokes it, we
16
16
  * translate the call into a JSON-RPC tools/call POST and unwrap the response
17
- * into the `{ content: [{ type: "text", text }], details }` shape pi expects.
17
+ * into the `{ content: [{ type: "text", text }], details }` shape spectral expects.
18
18
  *
19
19
  * Failure modes are intentionally non-fatal: if config is missing or the
20
- * backend is unreachable we log a warning and return, leaving pi to start
20
+ * backend is unreachable we log a warning and return, leaving spectral to start
21
21
  * without Aexol tools rather than crashing the whole agent.
22
22
  */
23
23
  import { getApiUrl, getConfigFile, readConfig } from "../config.js";
24
24
  import { AexolMcpClient, AexolMcpError } from "../mcp-client.js";
25
25
  import { readStudioBinding, writeStudioBinding, deleteStudioBinding, } from "../studio-binding.js";
26
26
  /**
27
- * Render a backend tool result into a single string for pi.
27
+ * Render a backend tool result into a single string for ext.
28
28
  *
29
29
  * The Aexol backend wraps results as `{ content: [{ type: "json", json: ... }] }`
30
30
  * but may also send `{ type: "text", text: ... }`. We pick the first content
@@ -96,7 +96,7 @@ function augmentParams(toolName, params) {
96
96
  }
97
97
  return augmented;
98
98
  }
99
- export default async function aexolMcpExtension(pi) {
99
+ export default async function aexolMcpExtension(ext) {
100
100
  const cfg = await readConfig();
101
101
  if (!cfg) {
102
102
  // Pre-flight in cli.ts should have caught this. Logging is enough.
@@ -153,7 +153,7 @@ export default async function aexolMcpExtension(pi) {
153
153
  // Surface backend tool errors as a textual result, not a thrown
154
154
  // exception. Pi treats this as the tool's natural reply; the model
155
155
  // sees the `[Aexol MCP error] ...` marker and can recover. Throwing
156
- // here would force pi to wrap the message and risk crashing
156
+ // here would force spectral to wrap the message and risk crashing
157
157
  // callers that don't expect agent-tool exceptions.
158
158
  const errorText = `[Aexol MCP error] ${text || "Tool reported an error with no message."}`;
159
159
  return {
@@ -168,7 +168,7 @@ export default async function aexolMcpExtension(pi) {
168
168
  },
169
169
  };
170
170
  try {
171
- pi.registerTool(definition);
171
+ ext.registerTool(definition);
172
172
  registered++;
173
173
  }
174
174
  catch (err) {
@@ -181,7 +181,7 @@ export default async function aexolMcpExtension(pi) {
181
181
  // binding directly from within the agent, without the user having to drop
182
182
  // out to the terminal and run `spectral bind` / `spectral unbind`.
183
183
  try {
184
- pi.registerTool({
184
+ ext.registerTool({
185
185
  name: "local_bind_project",
186
186
  label: "Bind Project",
187
187
  description: "Link the current working directory to an Aexol Studio project. " +
@@ -249,7 +249,7 @@ export default async function aexolMcpExtension(pi) {
249
249
  process.stderr.write(`[aexol-mcp] Failed to register local_bind_project: ${msg}\n`);
250
250
  }
251
251
  try {
252
- pi.registerTool({
252
+ ext.registerTool({
253
253
  name: "local_unbind_project",
254
254
  label: "Unbind Project",
255
255
  description: "Remove the Aexol Studio project binding from the current working directory. " +
@@ -301,7 +301,7 @@ export default async function aexolMcpExtension(pi) {
301
301
  process.stderr.write(`[aexol-mcp] Failed to register local_unbind_project: ${msg}\n`);
302
302
  }
303
303
  try {
304
- pi.registerTool({
304
+ ext.registerTool({
305
305
  name: "local_get_binding",
306
306
  label: "Get Binding",
307
307
  description: "Show the current Aexol Studio project binding for this directory. " +
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Kanban Bridge spectral extension.
3
+ *
4
+ * Registers kanban management tools that allow the coding agent to read,
5
+ * create, update, and move Kanban tasks on the Aexol Studio board. This
6
+ * enables task-driven execution — the agent can pick up TODO tasks, work
7
+ * on them, and move them to DONE.
8
+ *
9
+ * Auth is read from ~/.spectral/config.json (same as aexol-mcp).
10
+ * The Studio project ID comes from the local binding (.aexol/aexol.jsonc),
11
+ * falling back to an explicit kanban_project_id flag.
12
+ *
13
+ * Registered tools:
14
+ * - kanban_list — List all Kanban tasks for the project
15
+ * - kanban_get — Get a single task by ID
16
+ * - kanban_create — Create a new Kanban task
17
+ * - kanban_update — Update a task (title, description, priority, tags)
18
+ * - kanban_move — Move a task between columns (BACKLOG → TODO → IN_PROGRESS → DONE)
19
+ * - kanban_next — Pick the next TODO task and mark it IN_PROGRESS
20
+ * - kanban_delete — Delete a task
21
+ */
22
+ import type { ExtensionAPI } from "../sdk/coding-agent/index.js";
23
+ export default function kanbanBridgeExtension(ext: ExtensionAPI): Promise<void>;
24
+ //# sourceMappingURL=kanban-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanban-bridge.d.ts","sourceRoot":"","sources":["../../src/extensions/kanban-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,8BAA8B,CAAC;AAixBjF,wBAA8B,qBAAqB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCpF"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Kanban Bridge pi extension.
2
+ * Kanban Bridge spectral extension.
3
3
  *
4
4
  * Registers kanban management tools that allow the coding agent to read,
5
5
  * create, update, and move Kanban tasks on the Aexol Studio board. This
@@ -636,7 +636,7 @@ const kanbanDeleteTool = {
636
636
  // ---------------------------------------------------------------------------
637
637
  // Extension entry point
638
638
  // ---------------------------------------------------------------------------
639
- export default async function kanbanBridgeExtension(pi) {
639
+ export default async function kanbanBridgeExtension(ext) {
640
640
  const tools = [
641
641
  kanbanListTool,
642
642
  kanbanGetTool,
@@ -649,7 +649,7 @@ export default async function kanbanBridgeExtension(pi) {
649
649
  let registered = 0;
650
650
  for (const tool of tools) {
651
651
  try {
652
- pi.registerTool(tool);
652
+ ext.registerTool(tool);
653
653
  registered++;
654
654
  }
655
655
  catch (err) {
@@ -0,0 +1,12 @@
1
+ /**
2
+ * OpenRouter App Attribution extension.
3
+ *
4
+ * Adds HTTP headers required by OpenRouter's app attribution system so that
5
+ * Aexol / Spectral appears in OpenRouter rankings, analytics, and model
6
+ * "Apps" tabs. Without these headers our usage is anonymous to OpenRouter.
7
+ *
8
+ * @see https://openrouter.ai/docs/app-attribution
9
+ */
10
+ import type { ExtensionAPI } from "../sdk/coding-agent/index.js";
11
+ export default function openrouterAttributionExtension(ext: ExtensionAPI): void;
12
+ //# sourceMappingURL=openrouter-attribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter-attribution.d.ts","sourceRoot":"","sources":["../../src/extensions/openrouter-attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAU9E"}
@@ -7,8 +7,8 @@
7
7
  *
8
8
  * @see https://openrouter.ai/docs/app-attribution
9
9
  */
10
- export default function openrouterAttributionExtension(pi) {
11
- pi.registerProvider("openrouter", {
10
+ export default function openrouterAttributionExtension(ext) {
11
+ ext.registerProvider("openrouter", {
12
12
  headers: {
13
13
  "HTTP-Referer": "https://aexol.ai",
14
14
  "X-OpenRouter-Title": "Aexol",
@@ -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(ext: 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,GAAG,EAAE,YAAY,GAAG,IAAI,CAmFvE"}
@@ -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));
@@ -177,18 +177,21 @@ async function describeImages(visionModel, content, contextText, ctx) {
177
177
  // ---------------------------------------------------------------------------
178
178
  // Extension entry point
179
179
  // ---------------------------------------------------------------------------
180
- export default function spectralVisionExtension(pi) {
180
+ export default function spectralVisionExtension(ext) {
181
181
  let visionModel;
182
- pi.on("session_start", (_event, ctx) => {
182
+ ext.on("session_start", (_event, ctx) => {
183
183
  visionModel = resolveVisionModel(ctx);
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
  }
190
193
  });
191
- pi.on("context", async (event, ctx) => {
194
+ ext.on("context", async (event, ctx) => {
192
195
  const messages = event.messages;
193
196
  // Check if any message contains images
194
197
  let totalImages = 0;
@@ -198,11 +201,17 @@ 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`);
@@ -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(ext: ExtensionAPI): void {
12
+ * ext.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(ext: ExtensionAPI): void {
30
+ * ext.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(ext: ExtensionAPI): void {
12
+ * ext.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(ext: ExtensionAPI): void {
30
+ * ext.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, ext: 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,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBpJ"}
@@ -131,7 +131,7 @@ export async function authenticateServer(serverName, config, ctx) {
131
131
  ctx.ui.notify(`Failed to authenticate "${serverName}": ${message}`, "error");
132
132
  }
133
133
  }
134
- export async function showSetupStatus(state, pi, ctx, configOverridePath) {
134
+ export async function showSetupStatus(state, ext, ctx, configOverridePath) {
135
135
  // Show MCP status first, then check for shared-config discovery hints
136
136
  await showStatus(state, ctx);
137
137
  if (!ctx.hasUI)
@@ -0,0 +1,78 @@
1
+ import type { McpConfig, ServerEntry, ImportKind, ServerProvenance } from "./types.js";
2
+ interface ConfigSourceSpec {
3
+ id: "shared-global" | "spectral-global" | "shared-project" | "spectral-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" | "spectral";
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
+ hasSpectralOwnedServers: 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 getSpectralGlobalConfigPath(overridePath?: string): string;
58
+ export declare function getGenericGlobalConfigPath(): string;
59
+ export declare function getProjectConfigPath(cwd?: string): string;
60
+ export declare function getProjectSpectralConfigPath(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,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;IAChF,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,UAAU,CAAC;IAC5B,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,uBAAuB,EAAE,OAAO,CAAC;IACjC,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,2BAA2B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAEhE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,SAAgB,GAAG,MAAM,CAExE;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"}
@@ -22,7 +22,7 @@ const IMPORT_PATHS = {
22
22
  windsurf: [join(homedir(), ".windsurf", "mcp.json")],
23
23
  vscode: [".vscode/mcp.json"],
24
24
  };
25
- export function getPiGlobalConfigPath(overridePath) {
25
+ export function getSpectralGlobalConfigPath(overridePath) {
26
26
  return overridePath ? resolve(overridePath) : getAgentPath("mcp.json");
27
27
  }
28
28
  export function getGenericGlobalConfigPath() {
@@ -31,7 +31,7 @@ export function getGenericGlobalConfigPath() {
31
31
  export function getProjectConfigPath(cwd = process.cwd()) {
32
32
  return resolve(cwd, PROJECT_CONFIG_NAME);
33
33
  }
34
- export function getProjectPiConfigPath(cwd = process.cwd()) {
34
+ export function getProjectSpectralConfigPath(cwd = process.cwd()) {
35
35
  return resolve(cwd, PROJECT_MCP_CONFIG_NAME);
36
36
  }
37
37
  export function getConfigDiscoveryPaths(overridePath) {
@@ -60,7 +60,7 @@ export function getMcpDiscoverySummary(overridePath, cwd = process.cwd()) {
60
60
  path: source.readPath,
61
61
  exists: existsSync(source.readPath),
62
62
  scope: source.scope,
63
- kind: source.shared ? "shared" : "pi",
63
+ kind: source.shared ? "shared" : "spectral",
64
64
  serverCount: loaded ? Object.keys(loaded.mcpServers).length : 0,
65
65
  };
66
66
  });
@@ -78,7 +78,7 @@ export function getMcpDiscoverySummary(overridePath, cwd = process.cwd()) {
78
78
  .filter((value) => value !== null);
79
79
  const totalServerCount = sources.reduce((sum, source) => sum + source.serverCount, 0);
80
80
  const hasSharedServers = sources.some((source) => source.kind === "shared" && source.serverCount > 0);
81
- const hasPiOwnedServers = sources.some((source) => source.kind === "pi" && source.serverCount > 0);
81
+ const hasSpectralOwnedServers = sources.some((source) => source.kind === "spectral" && source.serverCount > 0);
82
82
  const hasAnyDetectedPaths = sources.some((source) => source.exists) || imports.length > 0;
83
83
  const hasAnyConfig = totalServerCount > 0 || imports.some((entry) => entry.serverCount > 0) || hasAnyDetectedPaths;
84
84
  const summaryWithoutRepoPrompt = {
@@ -87,7 +87,7 @@ export function getMcpDiscoverySummary(overridePath, cwd = process.cwd()) {
87
87
  hasAnyConfig,
88
88
  hasAnyDetectedPaths,
89
89
  hasSharedServers,
90
- hasPiOwnedServers,
90
+ hasSpectralOwnedServers,
91
91
  totalServerCount,
92
92
  };
93
93
  const fingerprint = JSON.stringify({
@@ -111,9 +111,9 @@ export function loadMcpConfig(overridePath) {
111
111
  return config;
112
112
  }
113
113
  function getConfigSources(overridePath, cwd = process.cwd()) {
114
- const userPath = getPiGlobalConfigPath(overridePath);
114
+ const userPath = getSpectralGlobalConfigPath(overridePath);
115
115
  const projectPath = getProjectConfigPath(cwd);
116
- const projectPiPath = getProjectPiConfigPath(cwd);
116
+ const projectSpectralPath = getProjectSpectralConfigPath(cwd);
117
117
  const sources = [];
118
118
  if (GENERIC_GLOBAL_CONFIG_PATH !== userPath) {
119
119
  sources.push({
@@ -128,7 +128,7 @@ function getConfigSources(overridePath, cwd = process.cwd()) {
128
128
  });
129
129
  }
130
130
  sources.push({
131
- id: "pi-global",
131
+ id: "spectral-global",
132
132
  label: "Pi global override",
133
133
  readPath: userPath,
134
134
  writePath: userPath,
@@ -147,12 +147,12 @@ function getConfigSources(overridePath, cwd = process.cwd()) {
147
147
  scope: "project",
148
148
  });
149
149
  }
150
- if (projectPiPath !== userPath && projectPiPath !== projectPath) {
150
+ if (projectSpectralPath !== userPath && projectSpectralPath !== projectPath) {
151
151
  sources.push({
152
- id: "pi-project",
152
+ id: "spectral-project",
153
153
  label: "project Pi override",
154
- readPath: projectPiPath,
155
- writePath: projectPiPath,
154
+ readPath: projectSpectralPath,
155
+ writePath: projectSpectralPath,
156
156
  kind: "project",
157
157
  shared: false,
158
158
  scope: "project",
@@ -412,7 +412,7 @@ function detectRepoPrompt(summary, cwd = process.cwd()) {
412
412
  };
413
413
  }
414
414
  export function previewCompatibilityImports(importKinds, overridePath) {
415
- const targetPath = getPiGlobalConfigPath(overridePath);
415
+ const targetPath = getSpectralGlobalConfigPath(overridePath);
416
416
  const raw = readRawConfigObject(targetPath);
417
417
  const currentImports = Array.isArray(raw.imports) ? raw.imports.filter((value) => typeof value === "string") : [];
418
418
  const merged = [...new Set([...currentImports, ...importKinds])];
@@ -421,7 +421,7 @@ export function previewCompatibilityImports(importKinds, overridePath) {
421
421
  return buildConfigWritePreview(targetPath, nextRaw);
422
422
  }
423
423
  export function ensureCompatibilityImports(importKinds, overridePath) {
424
- const targetPath = getPiGlobalConfigPath(overridePath);
424
+ const targetPath = getSpectralGlobalConfigPath(overridePath);
425
425
  const raw = readRawConfigObject(targetPath);
426
426
  const currentImports = Array.isArray(raw.imports) ? raw.imports.filter((value) => typeof value === "string") : [];
427
427
  const merged = [...new Set([...currentImports, ...importKinds])];
@@ -469,7 +469,7 @@ export function writeSharedServerEntry(filePath, serverName, entry) {
469
469
  }
470
470
  export function getServerProvenance(overridePath) {
471
471
  const provenance = new Map();
472
- const userPath = getPiGlobalConfigPath(overridePath);
472
+ const userPath = getSpectralGlobalConfigPath(overridePath);
473
473
  for (const source of getConfigSources(overridePath)) {
474
474
  const loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);
475
475
  if (!loaded)