kennel 0.2.0 → 0.2.2

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 (872) hide show
  1. package/README.md +18 -5
  2. package/dist/cli/dispatch.js +9 -0
  3. package/dist/cli/src/automations/notifications.d.ts +40 -0
  4. package/dist/cli/src/automations/notifications.js +220 -0
  5. package/dist/cli/src/cli/dispatch.d.ts +1 -0
  6. package/dist/cli/src/cli/dispatch.js +125 -0
  7. package/dist/cli/src/cli/usage.d.ts +1 -0
  8. package/dist/cli/src/cli/usage.js +25 -0
  9. package/dist/cli/src/core/api-client.d.ts +13 -0
  10. package/dist/cli/src/core/api-client.js +1 -0
  11. package/dist/cli/src/core/command.d.ts +1 -0
  12. package/dist/cli/src/core/command.js +69 -0
  13. package/dist/cli/src/core/core-folders.d.ts +1 -0
  14. package/dist/cli/src/core/core-folders.js +42 -0
  15. package/dist/cli/src/core/init.d.ts +1 -0
  16. package/dist/cli/src/core/init.js +141 -0
  17. package/dist/cli/src/core/runtime.d.ts +14 -0
  18. package/dist/cli/src/core/runtime.js +1 -0
  19. package/dist/cli/src/deploy/cloudflare.d.ts +6 -0
  20. package/dist/cli/src/deploy/cloudflare.js +100 -0
  21. package/dist/cli/src/deploy/environment.d.ts +2 -0
  22. package/dist/cli/src/deploy/environment.js +47 -0
  23. package/dist/cli/src/deploy/smoke-tests.d.ts +4 -0
  24. package/dist/cli/src/deploy/smoke-tests.js +92 -0
  25. package/dist/cli/src/deploy/trigger-dev.d.ts +2 -0
  26. package/dist/cli/src/deploy/trigger-dev.js +255 -0
  27. package/dist/cli/src/deploy/vercel.d.ts +3 -0
  28. package/dist/cli/src/deploy/vercel.js +67 -0
  29. package/dist/cli/src/main.d.ts +1 -0
  30. package/dist/cli/src/main.js +9 -0
  31. package/dist/cli/src/mcp/agent-tools.d.ts +8 -0
  32. package/dist/cli/src/mcp/agent-tools.js +247 -0
  33. package/dist/cli/src/mcp/config.d.ts +25 -0
  34. package/dist/cli/src/mcp/config.js +185 -0
  35. package/dist/cli/src/mcp/function-source.d.ts +7 -0
  36. package/dist/cli/src/mcp/function-source.js +42 -0
  37. package/dist/cli/src/mcp/generate.d.ts +1 -0
  38. package/dist/cli/src/mcp/generate.js +47 -0
  39. package/dist/cli/src/mcp/install-page.d.ts +12 -0
  40. package/dist/cli/src/mcp/install-page.js +5 -0
  41. package/dist/cli/src/notifications/email-worker.d.ts +8 -0
  42. package/dist/cli/src/notifications/email-worker.js +137 -0
  43. package/dist/cli/src/package/mcp-data.d.ts +1 -0
  44. package/dist/cli/src/package/mcp-data.js +1 -0
  45. package/dist/cli/src/package/mcp-email-worker.d.ts +1 -0
  46. package/dist/cli/src/package/mcp-email-worker.js +1 -0
  47. package/dist/cli/src/package/mcp-http.d.ts +1 -0
  48. package/dist/cli/src/package/mcp-http.js +1 -0
  49. package/dist/cli/src/package/mcp-stdio.d.ts +1 -0
  50. package/dist/cli/src/package/mcp-stdio.js +1 -0
  51. package/dist/cli/src/package/mcp.d.ts +1 -0
  52. package/dist/cli/src/package/mcp.js +1 -0
  53. package/dist/cli/src/package/preview.d.ts +9 -0
  54. package/dist/cli/src/package/preview.js +1 -0
  55. package/dist/cli/src/plugins/external.d.ts +36 -0
  56. package/dist/cli/src/plugins/external.js +503 -0
  57. package/dist/cli/src/publish/cloudflare-init.d.ts +12 -0
  58. package/dist/cli/src/publish/cloudflare-init.js +101 -0
  59. package/dist/cli/src/publish/config.d.ts +28 -0
  60. package/dist/cli/src/publish/config.js +178 -0
  61. package/dist/cli/src/publish/options.d.ts +13 -0
  62. package/dist/cli/src/publish/options.js +78 -0
  63. package/dist/cli/src/publish/vercel-init.d.ts +9 -0
  64. package/dist/cli/src/publish/vercel-init.js +52 -0
  65. package/dist/cli/src/shared/json.d.ts +4 -0
  66. package/dist/cli/src/shared/json.js +56 -0
  67. package/dist/cli/src/shared/object.d.ts +2 -0
  68. package/dist/cli/src/shared/object.js +3 -0
  69. package/dist/cli/src/shared/package-manager.d.ts +11 -0
  70. package/dist/cli/src/shared/package-manager.js +39 -0
  71. package/dist/cli/src/shared/path.d.ts +4 -0
  72. package/dist/cli/src/shared/path.js +40 -0
  73. package/dist/cli/src/shared/process.d.ts +7 -0
  74. package/dist/cli/src/shared/process.js +12 -0
  75. package/dist/cli/src/shared/project-config.d.ts +2 -0
  76. package/dist/cli/src/shared/project-config.js +26 -0
  77. package/dist/cli/src/site/dev.d.ts +10 -0
  78. package/dist/cli/src/site/dev.js +126 -0
  79. package/dist/cli/src/site/extension.d.ts +8 -0
  80. package/dist/cli/src/site/extension.js +113 -0
  81. package/dist/cli/src/site/folder-icons.d.ts +46 -0
  82. package/dist/cli/src/site/folder-icons.js +86 -0
  83. package/dist/cli/src/site/hot-viewer.d.ts +2 -0
  84. package/dist/cli/src/site/hot-viewer.js +231 -0
  85. package/dist/cli/src/site/kinds.d.ts +1 -0
  86. package/dist/cli/src/site/kinds.js +1 -0
  87. package/dist/cli/src/site/mail.d.ts +1 -0
  88. package/dist/cli/src/site/mail.js +10 -0
  89. package/dist/cli/src/site/renderers.d.ts +61 -0
  90. package/dist/cli/src/site/renderers.js +219 -0
  91. package/dist/cli/src/site/server-plugins.d.ts +54 -0
  92. package/dist/cli/src/site/server-plugins.js +1 -0
  93. package/dist/cli/src/site/viewer.d.ts +36 -0
  94. package/dist/cli/src/site/viewer.js +352 -0
  95. package/dist/cli/src/site/vitepress.d.ts +1 -0
  96. package/dist/cli/src/site/vitepress.js +1 -0
  97. package/dist/cli/usage.js +1 -0
  98. package/dist/core/api-client.js +75 -44
  99. package/dist/core/command.js +6 -3
  100. package/dist/core/core-folders.js +38280 -33
  101. package/dist/core/init.js +59 -4
  102. package/dist/core/runtime.js +57163 -41853
  103. package/dist/package/preview.js +40589 -17894
  104. package/dist/plugins/external.d.ts +36 -0
  105. package/dist/plugins/external.js +503 -0
  106. package/dist/site/server-plugins.js +394 -59
  107. package/dist/site/viewer.js +18 -5
  108. package/kernel/apps/web/.env.example +11 -0
  109. package/kernel/apps/web/components.json +20 -0
  110. package/kernel/apps/web/eslint.config.mjs +60 -0
  111. package/kernel/apps/web/index.html +17 -0
  112. package/kernel/apps/web/package.json +79 -0
  113. package/kernel/apps/web/public/favicon.svg +6 -0
  114. package/kernel/apps/web/public/providers/claude.svg +1 -0
  115. package/kernel/apps/web/public/providers/codex.svg +1 -0
  116. package/kernel/apps/web/public/providers/cursor.svg +1 -0
  117. package/kernel/apps/web/public/providers/opencode.svg +1 -0
  118. package/kernel/apps/web/public/providers/pi.svg +1 -0
  119. package/kernel/apps/web/server/acp/index.ts +1 -0
  120. package/kernel/apps/web/server/acp/live-agent-connection.ts +1 -0
  121. package/kernel/apps/web/server/acp/process-manager.ts +1 -0
  122. package/kernel/apps/web/server/acp/registry.ts +1 -0
  123. package/kernel/apps/web/server/acp/sdk.ts +1 -0
  124. package/kernel/apps/web/server/acp/transport.ts +1 -0
  125. package/kernel/apps/web/server/acp/types.ts +1 -0
  126. package/kernel/apps/web/server/acp-live-plugin.ts +30 -0
  127. package/kernel/apps/web/server/api/document-edit.ts +1 -0
  128. package/kernel/apps/web/server/api/open-path.ts +1 -0
  129. package/kernel/apps/web/server/core-plugin.ts +49 -0
  130. package/kernel/apps/web/server/folder-favicon.ts +1 -0
  131. package/kernel/apps/web/server/folder-icons.ts +1 -0
  132. package/kernel/apps/web/server/folder-metadata-plugin.ts +31 -0
  133. package/kernel/apps/web/server/plugins.ts +1 -0
  134. package/kernel/apps/web/server/preview-kinds.ts +1 -0
  135. package/kernel/apps/web/src/ai-input.tsx +62 -0
  136. package/kernel/apps/web/src/annotations.tsx +430 -0
  137. package/kernel/apps/web/src/api/client.ts +3 -0
  138. package/kernel/apps/web/src/api/errors.ts +1 -0
  139. package/kernel/apps/web/src/api/events.ts +42 -0
  140. package/kernel/apps/web/src/app.css +332 -0
  141. package/kernel/apps/web/src/app.tsx +667 -0
  142. package/kernel/apps/web/src/ask-draft.ts +164 -0
  143. package/kernel/apps/web/src/ask-tray.tsx +256 -0
  144. package/kernel/apps/web/src/comment-editor.tsx +93 -0
  145. package/kernel/apps/web/src/comment-form.tsx +162 -0
  146. package/kernel/apps/web/src/copy-path.ts +18 -0
  147. package/kernel/apps/web/src/deferred-ask-tray.tsx +20 -0
  148. package/kernel/apps/web/src/document-url.ts +46 -0
  149. package/kernel/apps/web/src/documents-url.ts +23 -0
  150. package/kernel/apps/web/src/dropped-folder.ts +64 -0
  151. package/kernel/apps/web/src/external-plugins.ts +3 -0
  152. package/kernel/apps/web/src/file-viewer.tsx +171 -0
  153. package/kernel/apps/web/src/folder-filter-icons.tsx +39 -0
  154. package/kernel/apps/web/src/folder-metadata.ts +76 -0
  155. package/kernel/apps/web/src/folder-plugin-view.tsx +87 -0
  156. package/kernel/apps/web/src/folder-query-cache.ts +66 -0
  157. package/kernel/apps/web/src/host-adapters.ts +209 -0
  158. package/kernel/apps/web/src/host-bridge.ts +214 -0
  159. package/kernel/apps/web/src/lib/entity-folder.ts +2 -0
  160. package/kernel/apps/web/src/linked-session-header.tsx +43 -0
  161. package/kernel/apps/web/src/live-session-controls.tsx +326 -0
  162. package/kernel/apps/web/src/local-source.ts +32 -0
  163. package/kernel/apps/web/src/main.tsx +24 -0
  164. package/kernel/apps/web/src/markdown-page.tsx +444 -0
  165. package/kernel/apps/web/src/notes-page.tsx +103 -0
  166. package/kernel/apps/web/src/plugins.ts +53 -0
  167. package/kernel/apps/web/src/project-search-dialog.tsx +257 -0
  168. package/kernel/apps/web/src/project-search.ts +18 -0
  169. package/kernel/apps/web/src/query-client.ts +4 -0
  170. package/kernel/apps/web/src/rehype-source-lines.ts +22 -0
  171. package/kernel/apps/web/src/routes/document.tsx +1 -0
  172. package/kernel/apps/web/src/routes/entities.tsx +277 -0
  173. package/kernel/apps/web/src/routes/search.tsx +60 -0
  174. package/kernel/apps/web/src/selection-context.ts +68 -0
  175. package/kernel/apps/web/src/selection-input.tsx +58 -0
  176. package/kernel/apps/web/src/selection-popup.tsx +155 -0
  177. package/kernel/apps/web/src/session-transcript-page.tsx +152 -0
  178. package/kernel/apps/web/src/use-annotations.ts +162 -0
  179. package/kernel/apps/web/src/use-ask-ai.ts +26 -0
  180. package/kernel/apps/web/src/use-ask-draft.ts +27 -0
  181. package/kernel/apps/web/src/use-document.ts +37 -0
  182. package/kernel/apps/web/src/use-folder-notes.ts +49 -0
  183. package/kernel/apps/web/src/use-linked-session.ts +33 -0
  184. package/kernel/apps/web/src/view-context.tsx +69 -0
  185. package/kernel/apps/web/src/view-header.tsx +66 -0
  186. package/kernel/apps/web/src/viewer-capabilities.ts +33 -0
  187. package/kernel/apps/web/src/viewer-route.ts +1 -0
  188. package/kernel/apps/web/src/viewport-height.ts +33 -0
  189. package/kernel/apps/web/tsconfig.json +24 -0
  190. package/kernel/apps/web/vite.config.ts +252 -0
  191. package/kernel/packages/agents/eslint.config.js +10 -0
  192. package/kernel/packages/agents/package.json +75 -0
  193. package/kernel/packages/agents/src/agent-card.tsx +334 -0
  194. package/kernel/packages/agents/src/client.tsx +13 -0
  195. package/kernel/packages/agents/src/index.ts +18 -0
  196. package/kernel/packages/agents/src/manifest.ts +7 -0
  197. package/kernel/packages/agents/src/node.ts +447 -0
  198. package/kernel/packages/agents/src/profiles.ts +137 -0
  199. package/kernel/packages/agents/src/resolve.ts +69 -0
  200. package/kernel/packages/agents/src/server.ts +60 -0
  201. package/kernel/packages/agents/src/types.ts +82 -0
  202. package/kernel/packages/agents/src/viewer.tsx +370 -0
  203. package/kernel/packages/agents/test/profiles.test.mjs +88 -0
  204. package/kernel/packages/agents/test/resolve.test.mjs +729 -0
  205. package/kernel/packages/agents/tsconfig.json +17 -0
  206. package/kernel/packages/api/README.md +73 -0
  207. package/kernel/packages/api/openapi.json +3368 -0
  208. package/kernel/packages/api/package.json +41 -0
  209. package/kernel/packages/api/src/client/errors.ts +1 -0
  210. package/kernel/packages/api/src/client/index.ts +2 -0
  211. package/kernel/packages/api/src/contracts/schemas.ts +277 -0
  212. package/kernel/packages/api/src/contracts.ts +20 -0
  213. package/kernel/packages/api/src/index.ts +34 -0
  214. package/kernel/packages/api/src/server/acp/index.ts +35 -0
  215. package/kernel/packages/api/src/server/acp/live-agent-connection.ts +44 -0
  216. package/kernel/packages/api/src/server/acp/process-manager.ts +291 -0
  217. package/kernel/packages/api/src/server/acp/registry.ts +140 -0
  218. package/kernel/packages/api/src/server/acp/sdk.ts +15 -0
  219. package/kernel/packages/api/src/server/acp/transport.ts +115 -0
  220. package/kernel/packages/api/src/server/acp/types.ts +89 -0
  221. package/kernel/packages/api/src/server/acp-live-plugin.ts +423 -0
  222. package/kernel/packages/api/src/server/api/create-agent-file.ts +46 -0
  223. package/kernel/packages/api/src/server/api/document-edit.ts +125 -0
  224. package/kernel/packages/api/src/server/api/open-path.ts +40 -0
  225. package/kernel/packages/api/src/server/contracts.ts +85 -0
  226. package/kernel/packages/api/src/server/entity-folder.ts +353 -0
  227. package/kernel/packages/api/src/server/folder-favicon.ts +17 -0
  228. package/kernel/packages/api/src/server/folder-icons.ts +113 -0
  229. package/kernel/packages/api/src/server/folder-metadata-plugin.ts +1758 -0
  230. package/kernel/packages/api/src/server/host.ts +21 -0
  231. package/kernel/packages/api/src/server/index.ts +197 -0
  232. package/kernel/packages/api/src/server/linked-folder-discovery.ts +158 -0
  233. package/kernel/packages/api/src/server/plugins.ts +205 -0
  234. package/kernel/packages/api/src/server/project-discovery.ts +69 -0
  235. package/kernel/packages/api/src/server/watcher.ts +46 -0
  236. package/kernel/packages/api/src/shared/selection.ts +16 -0
  237. package/kernel/packages/api/src/shared/viewer-route.ts +200 -0
  238. package/kernel/packages/api/test/agents-loading.test.ts +94 -0
  239. package/kernel/packages/api/test/core.test.ts +364 -0
  240. package/kernel/packages/api/test/entity-folder.test.ts +131 -0
  241. package/kernel/packages/api/test/linked-folder-discovery.test.ts +78 -0
  242. package/kernel/packages/api/test/media-endpoint.test.ts +83 -0
  243. package/kernel/packages/api/test/partial-loading.test.ts +43 -0
  244. package/kernel/packages/api/test/project-discovery.test.ts +44 -0
  245. package/kernel/packages/api/tsconfig.json +11 -0
  246. package/kernel/packages/api-client/README.md +72 -0
  247. package/kernel/packages/api-client/package.json +26 -0
  248. package/kernel/packages/api-client/scripts/generate.ts +68 -0
  249. package/kernel/packages/api-client/src/errors.ts +59 -0
  250. package/kernel/packages/api-client/src/generated.d.ts +1248 -0
  251. package/kernel/packages/api-client/src/index.ts +206 -0
  252. package/kernel/packages/api-client/src/responses.ts +19 -0
  253. package/kernel/packages/api-client/test/client.test.ts +143 -0
  254. package/kernel/packages/api-client/tsconfig.json +12 -0
  255. package/kernel/packages/folder-plugin/eslint.config.js +10 -0
  256. package/kernel/packages/folder-plugin/package.json +50 -0
  257. package/kernel/packages/folder-plugin/src/client.ts +73 -0
  258. package/kernel/packages/folder-plugin/src/endpoint.ts +273 -0
  259. package/kernel/packages/folder-plugin/src/index.ts +15 -0
  260. package/kernel/packages/folder-plugin/src/server.ts +78 -0
  261. package/kernel/packages/folder-plugin/src/subpath.ts +34 -0
  262. package/kernel/packages/folder-plugin/src/types.ts +86 -0
  263. package/kernel/packages/folder-plugin/src/validation.ts +56 -0
  264. package/kernel/packages/folder-plugin/test/contract.test.mjs +133 -0
  265. package/kernel/packages/folder-plugin/tsconfig.json +17 -0
  266. package/kernel/packages/kinds/package.json +24 -0
  267. package/kernel/packages/kinds/src/kinds.ts +172 -0
  268. package/kernel/packages/markdown/README.md +40 -0
  269. package/kernel/packages/markdown/explorer.css +1 -0
  270. package/kernel/packages/markdown/package.json +30 -0
  271. package/kernel/packages/markdown/src/documents.ts +1 -0
  272. package/kernel/packages/markdown/src/explorer.ts +1 -0
  273. package/kernel/packages/markdown/src/index.ts +2 -0
  274. package/kernel/packages/markdown/src/metadata.ts +63 -0
  275. package/kernel/packages/markdown/src/node.ts +1 -0
  276. package/kernel/packages/markdown/styles.css +1 -0
  277. package/kernel/packages/notes/SKILL.md +19 -0
  278. package/kernel/packages/notes/eslint.config.js +10 -0
  279. package/kernel/packages/notes/package.json +72 -0
  280. package/kernel/packages/notes/src/client.tsx +12 -0
  281. package/kernel/packages/notes/src/data/ai-input.ts +58 -0
  282. package/kernel/packages/notes/src/data/api.ts +40 -0
  283. package/kernel/packages/notes/src/data/parse.ts +15 -0
  284. package/kernel/packages/notes/src/data/routing.ts +33 -0
  285. package/kernel/packages/notes/src/data/use-folder-notes.ts +49 -0
  286. package/kernel/packages/notes/src/index.ts +2 -0
  287. package/kernel/packages/notes/src/manifest.ts +6 -0
  288. package/kernel/packages/notes/src/pages/notes-page.tsx +79 -0
  289. package/kernel/packages/notes/src/pages/single-note-page.tsx +57 -0
  290. package/kernel/packages/notes/src/server.ts +88 -0
  291. package/kernel/packages/notes/src/ui/ai-composer-controls.tsx +70 -0
  292. package/kernel/packages/notes/src/ui/folder-notes-list.tsx +140 -0
  293. package/kernel/packages/notes/tsconfig.json +16 -0
  294. package/kernel/packages/schemas/ICON-POLICY.md +43 -0
  295. package/kernel/packages/schemas/SKILL.md +185 -0
  296. package/kernel/packages/schemas/eslint.config.js +10 -0
  297. package/kernel/packages/schemas/package.json +81 -0
  298. package/kernel/packages/schemas/src/client.tsx +137 -0
  299. package/kernel/packages/schemas/src/data/config-file.ts +37 -0
  300. package/kernel/packages/schemas/src/data/contract.ts +174 -0
  301. package/kernel/packages/schemas/src/data/favicon.ts +218 -0
  302. package/kernel/packages/schemas/src/data/fields.ts +96 -0
  303. package/kernel/packages/schemas/src/data/icon-image.ts +53 -0
  304. package/kernel/packages/schemas/src/data/icon.ts +97 -0
  305. package/kernel/packages/schemas/src/data/load.ts +161 -0
  306. package/kernel/packages/schemas/src/data/params.ts +103 -0
  307. package/kernel/packages/schemas/src/data/query.ts +33 -0
  308. package/kernel/packages/schemas/src/data/sort.ts +50 -0
  309. package/kernel/packages/schemas/src/data/workspace.ts +101 -0
  310. package/kernel/packages/schemas/src/index.ts +22 -0
  311. package/kernel/packages/schemas/src/manifest.ts +4 -0
  312. package/kernel/packages/schemas/src/node.ts +384 -0
  313. package/kernel/packages/schemas/src/pages/collection.tsx +252 -0
  314. package/kernel/packages/schemas/src/server.ts +208 -0
  315. package/kernel/packages/schemas/src/ui/schema-entity-list.tsx +124 -0
  316. package/kernel/packages/schemas/src/ui/schema-filters.tsx +186 -0
  317. package/kernel/packages/schemas/src/ui/schema-search.tsx +35 -0
  318. package/kernel/packages/schemas/src/ui/use-query-param-filter-setting.tsx +15 -0
  319. package/kernel/packages/schemas/test/contract.test.mjs +26 -0
  320. package/kernel/packages/schemas/test/fields.test.mjs +187 -0
  321. package/kernel/packages/schemas/test/load.test.mjs +12 -0
  322. package/kernel/packages/schemas/test/node.test.mjs +412 -0
  323. package/kernel/packages/schemas/test/query.test.mjs +134 -0
  324. package/kernel/packages/schemas/test/workspace.test.mjs +86 -0
  325. package/kernel/packages/schemas/tsconfig.json +17 -0
  326. package/kernel/packages/session-finding/package.json +33 -0
  327. package/kernel/packages/session-finding/src/index.ts +120 -0
  328. package/kernel/packages/session-finding/test/list-sessions.test.mjs +139 -0
  329. package/kernel/packages/session-finding/tsconfig.json +12 -0
  330. package/kernel/packages/ui/LICENSE +21 -0
  331. package/kernel/packages/ui/components.json +20 -0
  332. package/kernel/packages/ui/eslint.config.js +8 -0
  333. package/kernel/packages/ui/package.json +106 -0
  334. package/kernel/packages/ui/src/chat/file-link.ts +178 -0
  335. package/kernel/packages/ui/src/chat/index.ts +18 -0
  336. package/kernel/packages/ui/src/chat/transcript.tsx +348 -0
  337. package/kernel/packages/ui/src/chat/turns.ts +76 -0
  338. package/kernel/packages/ui/src/chat/types.ts +23 -0
  339. package/kernel/packages/ui/src/chat/use-overflowing.ts +56 -0
  340. package/kernel/packages/ui/src/components/accordion.tsx +74 -0
  341. package/kernel/packages/ui/src/components/alert-dialog.tsx +164 -0
  342. package/kernel/packages/ui/src/components/alert.tsx +68 -0
  343. package/kernel/packages/ui/src/components/app-breadcrumbs.tsx +170 -0
  344. package/kernel/packages/ui/src/components/app-header.tsx +125 -0
  345. package/kernel/packages/ui/src/components/app-options.tsx +87 -0
  346. package/kernel/packages/ui/src/components/app-view-header.tsx +34 -0
  347. package/kernel/packages/ui/src/components/aspect-ratio.tsx +11 -0
  348. package/kernel/packages/ui/src/components/avatar.tsx +53 -0
  349. package/kernel/packages/ui/src/components/badge.tsx +47 -0
  350. package/kernel/packages/ui/src/components/base-dialog.tsx +3 -0
  351. package/kernel/packages/ui/src/components/base-tabs.tsx +63 -0
  352. package/kernel/packages/ui/src/components/breadcrumb.tsx +110 -0
  353. package/kernel/packages/ui/src/components/button-group.tsx +86 -0
  354. package/kernel/packages/ui/src/components/button.tsx +65 -0
  355. package/kernel/packages/ui/src/components/calendar.tsx +240 -0
  356. package/kernel/packages/ui/src/components/card.tsx +95 -0
  357. package/kernel/packages/ui/src/components/carousel.tsx +240 -0
  358. package/kernel/packages/ui/src/components/chart.tsx +375 -0
  359. package/kernel/packages/ui/src/components/checkbox.tsx +39 -0
  360. package/kernel/packages/ui/src/components/collapsible.tsx +33 -0
  361. package/kernel/packages/ui/src/components/collection-icon.tsx +28 -0
  362. package/kernel/packages/ui/src/components/command.tsx +205 -0
  363. package/kernel/packages/ui/src/components/content-issues.tsx +63 -0
  364. package/kernel/packages/ui/src/components/context-menu.tsx +298 -0
  365. package/kernel/packages/ui/src/components/copy-context.tsx +134 -0
  366. package/kernel/packages/ui/src/components/dialog.tsx +157 -0
  367. package/kernel/packages/ui/src/components/drawer.tsx +162 -0
  368. package/kernel/packages/ui/src/components/dropdown-menu.tsx +303 -0
  369. package/kernel/packages/ui/src/components/empty.tsx +108 -0
  370. package/kernel/packages/ui/src/components/field.tsx +260 -0
  371. package/kernel/packages/ui/src/components/file-preview.tsx +152 -0
  372. package/kernel/packages/ui/src/components/file-renderer.tsx +466 -0
  373. package/kernel/packages/ui/src/components/filter-chip-panel.tsx +157 -0
  374. package/kernel/packages/ui/src/components/filter-select.tsx +127 -0
  375. package/kernel/packages/ui/src/components/folder-activity.tsx +646 -0
  376. package/kernel/packages/ui/src/components/folder-file-list.tsx +58 -0
  377. package/kernel/packages/ui/src/components/folder-filter-bar.tsx +191 -0
  378. package/kernel/packages/ui/src/components/folder-image.tsx +18 -0
  379. package/kernel/packages/ui/src/components/folder-landing.tsx +70 -0
  380. package/kernel/packages/ui/src/components/folder-list.tsx +140 -0
  381. package/kernel/packages/ui/src/components/folder-metadata.tsx +107 -0
  382. package/kernel/packages/ui/src/components/folder-mobile-bar.tsx +60 -0
  383. package/kernel/packages/ui/src/components/folder-project-list.tsx +133 -0
  384. package/kernel/packages/ui/src/components/folder-session-list.tsx +113 -0
  385. package/kernel/packages/ui/src/components/folder-session-page.tsx +126 -0
  386. package/kernel/packages/ui/src/components/folder-sidebar.tsx +52 -0
  387. package/kernel/packages/ui/src/components/folder-skill-list.tsx +62 -0
  388. package/kernel/packages/ui/src/components/folder-tabs.tsx +156 -0
  389. package/kernel/packages/ui/src/components/form.tsx +167 -0
  390. package/kernel/packages/ui/src/components/hover-card.tsx +52 -0
  391. package/kernel/packages/ui/src/components/icons.tsx +34 -0
  392. package/kernel/packages/ui/src/components/input-group.tsx +184 -0
  393. package/kernel/packages/ui/src/components/input-otp.tsx +90 -0
  394. package/kernel/packages/ui/src/components/input.tsx +29 -0
  395. package/kernel/packages/ui/src/components/item.tsx +195 -0
  396. package/kernel/packages/ui/src/components/kbd.tsx +32 -0
  397. package/kernel/packages/ui/src/components/label.tsx +27 -0
  398. package/kernel/packages/ui/src/components/link.tsx +45 -0
  399. package/kernel/packages/ui/src/components/live-tool-call.tsx +193 -0
  400. package/kernel/packages/ui/src/components/menubar.tsx +323 -0
  401. package/kernel/packages/ui/src/components/navigation-menu.tsx +210 -0
  402. package/kernel/packages/ui/src/components/note-card.tsx +149 -0
  403. package/kernel/packages/ui/src/components/pagination.tsx +128 -0
  404. package/kernel/packages/ui/src/components/popover.tsx +56 -0
  405. package/kernel/packages/ui/src/components/progress.tsx +31 -0
  406. package/kernel/packages/ui/src/components/radio-group.tsx +54 -0
  407. package/kernel/packages/ui/src/components/scroll-area.tsx +61 -0
  408. package/kernel/packages/ui/src/components/select.tsx +219 -0
  409. package/kernel/packages/ui/src/components/separator.tsx +30 -0
  410. package/kernel/packages/ui/src/components/session-icon.tsx +124 -0
  411. package/kernel/packages/ui/src/components/sheet.tsx +157 -0
  412. package/kernel/packages/ui/src/components/sidebar.tsx +789 -0
  413. package/kernel/packages/ui/src/components/skeleton.tsx +13 -0
  414. package/kernel/packages/ui/src/components/slider.tsx +73 -0
  415. package/kernel/packages/ui/src/components/sonner.tsx +41 -0
  416. package/kernel/packages/ui/src/components/spinner.tsx +16 -0
  417. package/kernel/packages/ui/src/components/switch.tsx +40 -0
  418. package/kernel/packages/ui/src/components/table.tsx +120 -0
  419. package/kernel/packages/ui/src/components/tabs.tsx +78 -0
  420. package/kernel/packages/ui/src/components/textarea.tsx +25 -0
  421. package/kernel/packages/ui/src/components/toggle-group.tsx +87 -0
  422. package/kernel/packages/ui/src/components/toggle.tsx +48 -0
  423. package/kernel/packages/ui/src/components/tooltip.tsx +71 -0
  424. package/kernel/packages/ui/src/components/viewer-options.tsx +166 -0
  425. package/kernel/packages/ui/src/hooks/use-folder-filter.ts +103 -0
  426. package/kernel/packages/ui/src/hooks/use-mobile.ts +19 -0
  427. package/kernel/packages/ui/src/index.ts +13 -0
  428. package/kernel/packages/ui/src/lib/document-extensions.ts +83 -0
  429. package/kernel/packages/ui/src/lib/folder-activity.ts +143 -0
  430. package/kernel/packages/ui/src/lib/folder-filter.ts +284 -0
  431. package/kernel/packages/ui/src/lib/live-tool-call.tsx +109 -0
  432. package/kernel/packages/ui/src/lib/media-urls.ts +176 -0
  433. package/kernel/packages/ui/src/lib/obsidian-links.ts +120 -0
  434. package/kernel/packages/ui/src/lib/source-components.tsx +65 -0
  435. package/kernel/packages/ui/src/lib/utils.tsx +7 -0
  436. package/kernel/packages/ui/src/pages/entity-detail-page.tsx +82 -0
  437. package/kernel/packages/ui/src/pages/entity-list-page.tsx +50 -0
  438. package/kernel/packages/ui/src/pages/entity-page.tsx +69 -0
  439. package/kernel/packages/ui/src/styles/folder-activity.css +2151 -0
  440. package/kernel/packages/ui/test/copy-context.test.mjs +48 -0
  441. package/kernel/packages/ui/test/folder-filter.test.mjs +484 -0
  442. package/kernel/packages/ui/tsconfig.json +15 -0
  443. package/kernel/plugins/calendar/SKILL.md +173 -0
  444. package/kernel/plugins/calendar/eslint.config.js +10 -0
  445. package/kernel/plugins/calendar/package.json +73 -0
  446. package/kernel/plugins/calendar/schema.json +137 -0
  447. package/kernel/plugins/calendar/src/calendar.tsx +328 -0
  448. package/kernel/plugins/calendar/src/client.tsx +139 -0
  449. package/kernel/plugins/calendar/src/context.ts +48 -0
  450. package/kernel/plugins/calendar/src/copy-button.tsx +66 -0
  451. package/kernel/plugins/calendar/src/event-dialog.tsx +270 -0
  452. package/kernel/plugins/calendar/src/index.ts +4 -0
  453. package/kernel/plugins/calendar/src/manifest.ts +7 -0
  454. package/kernel/plugins/calendar/src/parse.ts +610 -0
  455. package/kernel/plugins/calendar/src/server.ts +160 -0
  456. package/kernel/plugins/calendar/src/utils.ts +80 -0
  457. package/kernel/plugins/calendar/src/views.tsx +418 -0
  458. package/kernel/plugins/calendar/test/context.test.mjs +60 -0
  459. package/kernel/plugins/calendar/test/package.test.mjs +43 -0
  460. package/kernel/plugins/calendar/test/parse.test.mjs +392 -0
  461. package/kernel/plugins/calendar/test/server.test.mjs +126 -0
  462. package/kernel/plugins/calendar/tsconfig.json +17 -0
  463. package/kernel/plugins/mail/SKILL.md +97 -0
  464. package/kernel/plugins/mail/eslint.config.js +10 -0
  465. package/kernel/plugins/mail/package.json +79 -0
  466. package/kernel/plugins/mail/src/api.ts +359 -0
  467. package/kernel/plugins/mail/src/bun-ffi.d.ts +14 -0
  468. package/kernel/plugins/mail/src/client.tsx +14 -0
  469. package/kernel/plugins/mail/src/flock.ts +137 -0
  470. package/kernel/plugins/mail/src/folders.ts +37 -0
  471. package/kernel/plugins/mail/src/history.ts +485 -0
  472. package/kernel/plugins/mail/src/index.ts +3 -0
  473. package/kernel/plugins/mail/src/mail-card.tsx +123 -0
  474. package/kernel/plugins/mail/src/mail-conversation.tsx +153 -0
  475. package/kernel/plugins/mail/src/mail-detail-page.tsx +467 -0
  476. package/kernel/plugins/mail/src/mail-hooks.ts +252 -0
  477. package/kernel/plugins/mail/src/mail-page.tsx +109 -0
  478. package/kernel/plugins/mail/src/mail-request.ts +78 -0
  479. package/kernel/plugins/mail/src/mail-send-box.tsx +175 -0
  480. package/kernel/plugins/mail/src/mailos.ts +723 -0
  481. package/kernel/plugins/mail/src/manifest.ts +7 -0
  482. package/kernel/plugins/mail/src/node.ts +171 -0
  483. package/kernel/plugins/mail/src/parse.ts +139 -0
  484. package/kernel/plugins/mail/src/server.ts +125 -0
  485. package/kernel/plugins/mail/src/types.ts +10 -0
  486. package/kernel/plugins/mail/src/viewer.tsx +147 -0
  487. package/kernel/plugins/mail/test/flock.test.mjs +156 -0
  488. package/kernel/plugins/mail/test/folders.test.mjs +138 -0
  489. package/kernel/plugins/mail/test/history.test.mjs +460 -0
  490. package/kernel/plugins/mail/test/mailos.test.mjs +752 -0
  491. package/kernel/plugins/mail/test/node.test.mjs +207 -0
  492. package/kernel/plugins/mail/test/package.test.mjs +54 -0
  493. package/kernel/plugins/mail/test/parse.test.mjs +32 -0
  494. package/kernel/plugins/mail/test/server.test.mjs +116 -0
  495. package/kernel/plugins/mail/test/viewer.test.mjs +192 -0
  496. package/kernel/plugins/mail/tsconfig.json +17 -0
  497. package/kernel/plugins/projects/SKILL.md +73 -0
  498. package/kernel/plugins/projects/eslint.config.js +10 -0
  499. package/kernel/plugins/projects/package.json +70 -0
  500. package/kernel/plugins/projects/src/client.tsx +17 -0
  501. package/kernel/plugins/projects/src/data/model.ts +129 -0
  502. package/kernel/plugins/projects/src/index.ts +17 -0
  503. package/kernel/plugins/projects/src/manifest.ts +7 -0
  504. package/kernel/plugins/projects/src/project-context.ts +41 -0
  505. package/kernel/plugins/projects/src/server.ts +276 -0
  506. package/kernel/plugins/projects/src/ui/project-card.tsx +61 -0
  507. package/kernel/plugins/projects/src/ui/projects-page.tsx +102 -0
  508. package/kernel/plugins/projects/test/package.test.mjs +51 -0
  509. package/kernel/plugins/projects/tsconfig.json +17 -0
  510. package/kernel/plugins/tasks/SKILL.md +341 -0
  511. package/kernel/plugins/tasks/eslint.config.js +10 -0
  512. package/kernel/plugins/tasks/package.json +74 -0
  513. package/kernel/plugins/tasks/schema.json +939 -0
  514. package/kernel/plugins/tasks/src/api.ts +212 -0
  515. package/kernel/plugins/tasks/src/client.tsx +23 -0
  516. package/kernel/plugins/tasks/src/data/parse.ts +544 -0
  517. package/kernel/plugins/tasks/src/data/task-id.ts +56 -0
  518. package/kernel/plugins/tasks/src/data/todo-model.ts +795 -0
  519. package/kernel/plugins/tasks/src/index.ts +34 -0
  520. package/kernel/plugins/tasks/src/manifest.ts +7 -0
  521. package/kernel/plugins/tasks/src/pages/task-detail.tsx +48 -0
  522. package/kernel/plugins/tasks/src/pages/task-list.tsx +88 -0
  523. package/kernel/plugins/tasks/src/server.ts +447 -0
  524. package/kernel/plugins/tasks/src/styles.css +9 -0
  525. package/kernel/plugins/tasks/src/ui/compact-todo-list.tsx +372 -0
  526. package/kernel/plugins/tasks/src/ui/error-details.tsx +78 -0
  527. package/kernel/plugins/tasks/src/ui/task-page.tsx +392 -0
  528. package/kernel/plugins/tasks/src/ui/todo-agent-filter.tsx +36 -0
  529. package/kernel/plugins/tasks/src/ui/todo-filter-bar.tsx +66 -0
  530. package/kernel/plugins/tasks/src/ui/todo-item.tsx +494 -0
  531. package/kernel/plugins/tasks/src/ui/todo-status-filter.tsx +60 -0
  532. package/kernel/plugins/tasks/src/ui/todo-tag-filter.tsx +48 -0
  533. package/kernel/plugins/tasks/src/ui/todo-warnings.tsx +106 -0
  534. package/kernel/plugins/tasks/test/api.test.mjs +99 -0
  535. package/kernel/plugins/tasks/test/folder-sources.test.mjs +46 -0
  536. package/kernel/plugins/tasks/test/package.test.mjs +54 -0
  537. package/kernel/plugins/tasks/test/parse.test.mjs +225 -0
  538. package/kernel/plugins/tasks/test/server.test.mjs +386 -0
  539. package/kernel/plugins/tasks/tsconfig.json +17 -0
  540. package/node_modules/@agentclientprotocol/sdk/LICENSE +191 -0
  541. package/node_modules/@agentclientprotocol/sdk/README.md +70 -0
  542. package/node_modules/@agentclientprotocol/sdk/dist/acp.d.ts +1835 -0
  543. package/node_modules/@agentclientprotocol/sdk/dist/acp.js +1885 -0
  544. package/node_modules/@agentclientprotocol/sdk/dist/acp.js.map +1 -0
  545. package/node_modules/@agentclientprotocol/sdk/dist/acp.test.d.ts +1 -0
  546. package/node_modules/@agentclientprotocol/sdk/dist/acp.test.js +5036 -0
  547. package/node_modules/@agentclientprotocol/sdk/dist/acp.test.js.map +1 -0
  548. package/node_modules/@agentclientprotocol/sdk/dist/connection.d.ts +82 -0
  549. package/node_modules/@agentclientprotocol/sdk/dist/connection.js +428 -0
  550. package/node_modules/@agentclientprotocol/sdk/dist/connection.js.map +1 -0
  551. package/node_modules/@agentclientprotocol/sdk/dist/connection.test.d.ts +1 -0
  552. package/node_modules/@agentclientprotocol/sdk/dist/connection.test.js +470 -0
  553. package/node_modules/@agentclientprotocol/sdk/dist/connection.test.js.map +1 -0
  554. package/node_modules/@agentclientprotocol/sdk/dist/cookie-store.d.ts +26 -0
  555. package/node_modules/@agentclientprotocol/sdk/dist/cookie-store.js +96 -0
  556. package/node_modules/@agentclientprotocol/sdk/dist/cookie-store.js.map +1 -0
  557. package/node_modules/@agentclientprotocol/sdk/dist/cookie-store.test.d.ts +1 -0
  558. package/node_modules/@agentclientprotocol/sdk/dist/cookie-store.test.js +77 -0
  559. package/node_modules/@agentclientprotocol/sdk/dist/cookie-store.test.js.map +1 -0
  560. package/node_modules/@agentclientprotocol/sdk/dist/examples/agent.d.ts +2 -0
  561. package/node_modules/@agentclientprotocol/sdk/dist/examples/agent.js +232 -0
  562. package/node_modules/@agentclientprotocol/sdk/dist/examples/agent.js.map +1 -0
  563. package/node_modules/@agentclientprotocol/sdk/dist/examples/client.d.ts +2 -0
  564. package/node_modules/@agentclientprotocol/sdk/dist/examples/client.js +132 -0
  565. package/node_modules/@agentclientprotocol/sdk/dist/examples/client.js.map +1 -0
  566. package/node_modules/@agentclientprotocol/sdk/dist/examples/dual-version-agent.d.ts +9 -0
  567. package/node_modules/@agentclientprotocol/sdk/dist/examples/dual-version-agent.js +221 -0
  568. package/node_modules/@agentclientprotocol/sdk/dist/examples/dual-version-agent.js.map +1 -0
  569. package/node_modules/@agentclientprotocol/sdk/dist/examples/http-client.d.ts +2 -0
  570. package/node_modules/@agentclientprotocol/sdk/dist/examples/http-client.js +86 -0
  571. package/node_modules/@agentclientprotocol/sdk/dist/examples/http-client.js.map +1 -0
  572. package/node_modules/@agentclientprotocol/sdk/dist/examples/http-server.d.ts +2 -0
  573. package/node_modules/@agentclientprotocol/sdk/dist/examples/http-server.js +112 -0
  574. package/node_modules/@agentclientprotocol/sdk/dist/examples/http-server.js.map +1 -0
  575. package/node_modules/@agentclientprotocol/sdk/dist/examples/ws-client.d.ts +2 -0
  576. package/node_modules/@agentclientprotocol/sdk/dist/examples/ws-client.js +88 -0
  577. package/node_modules/@agentclientprotocol/sdk/dist/examples/ws-client.js.map +1 -0
  578. package/node_modules/@agentclientprotocol/sdk/dist/http-stream.d.ts +33 -0
  579. package/node_modules/@agentclientprotocol/sdk/dist/http-stream.js +435 -0
  580. package/node_modules/@agentclientprotocol/sdk/dist/http-stream.js.map +1 -0
  581. package/node_modules/@agentclientprotocol/sdk/dist/http-stream.test.d.ts +1 -0
  582. package/node_modules/@agentclientprotocol/sdk/dist/http-stream.test.js +1380 -0
  583. package/node_modules/@agentclientprotocol/sdk/dist/http-stream.test.js.map +1 -0
  584. package/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.d.ts +603 -0
  585. package/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.js +1064 -0
  586. package/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.js.map +1 -0
  587. package/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.test.d.ts +1 -0
  588. package/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.test.js +851 -0
  589. package/node_modules/@agentclientprotocol/sdk/dist/jsonrpc.test.js.map +1 -0
  590. package/node_modules/@agentclientprotocol/sdk/dist/line-buffer.d.ts +22 -0
  591. package/node_modules/@agentclientprotocol/sdk/dist/line-buffer.js +64 -0
  592. package/node_modules/@agentclientprotocol/sdk/dist/line-buffer.js.map +1 -0
  593. package/node_modules/@agentclientprotocol/sdk/dist/line-buffer.test.d.ts +1 -0
  594. package/node_modules/@agentclientprotocol/sdk/dist/line-buffer.test.js +45 -0
  595. package/node_modules/@agentclientprotocol/sdk/dist/line-buffer.test.js.map +1 -0
  596. package/node_modules/@agentclientprotocol/sdk/dist/node-adapter.d.ts +17 -0
  597. package/node_modules/@agentclientprotocol/sdk/dist/node-adapter.js +426 -0
  598. package/node_modules/@agentclientprotocol/sdk/dist/node-adapter.js.map +1 -0
  599. package/node_modules/@agentclientprotocol/sdk/dist/node-adapter.test.d.ts +1 -0
  600. package/node_modules/@agentclientprotocol/sdk/dist/node-adapter.test.js +499 -0
  601. package/node_modules/@agentclientprotocol/sdk/dist/node-adapter.test.js.map +1 -0
  602. package/node_modules/@agentclientprotocol/sdk/dist/protocol-router.d.ts +37 -0
  603. package/node_modules/@agentclientprotocol/sdk/dist/protocol-router.js +474 -0
  604. package/node_modules/@agentclientprotocol/sdk/dist/protocol-router.js.map +1 -0
  605. package/node_modules/@agentclientprotocol/sdk/dist/protocol-router.test.d.ts +1 -0
  606. package/node_modules/@agentclientprotocol/sdk/dist/protocol-router.test.js +535 -0
  607. package/node_modules/@agentclientprotocol/sdk/dist/protocol-router.test.js.map +1 -0
  608. package/node_modules/@agentclientprotocol/sdk/dist/protocol.d.ts +11 -0
  609. package/node_modules/@agentclientprotocol/sdk/dist/protocol.js +57 -0
  610. package/node_modules/@agentclientprotocol/sdk/dist/protocol.js.map +1 -0
  611. package/node_modules/@agentclientprotocol/sdk/dist/protocol.test.d.ts +1 -0
  612. package/node_modules/@agentclientprotocol/sdk/dist/protocol.test.js +73 -0
  613. package/node_modules/@agentclientprotocol/sdk/dist/protocol.test.js.map +1 -0
  614. package/node_modules/@agentclientprotocol/sdk/dist/schema/guards.gen.d.ts +199 -0
  615. package/node_modules/@agentclientprotocol/sdk/dist/schema/guards.gen.js +211 -0
  616. package/node_modules/@agentclientprotocol/sdk/dist/schema/guards.gen.js.map +1 -0
  617. package/node_modules/@agentclientprotocol/sdk/dist/schema/index.d.ts +51 -0
  618. package/node_modules/@agentclientprotocol/sdk/dist/schema/index.js +52 -0
  619. package/node_modules/@agentclientprotocol/sdk/dist/schema/index.js.map +1 -0
  620. package/node_modules/@agentclientprotocol/sdk/dist/schema/types.gen.d.ts +6118 -0
  621. package/node_modules/@agentclientprotocol/sdk/dist/schema/types.gen.js +3 -0
  622. package/node_modules/@agentclientprotocol/sdk/dist/schema/types.gen.js.map +1 -0
  623. package/node_modules/@agentclientprotocol/sdk/dist/schema/zod.gen.d.ts +14160 -0
  624. package/node_modules/@agentclientprotocol/sdk/dist/schema/zod.gen.js +3066 -0
  625. package/node_modules/@agentclientprotocol/sdk/dist/schema/zod.gen.js.map +1 -0
  626. package/node_modules/@agentclientprotocol/sdk/dist/schema-deserialize.d.ts +30 -0
  627. package/node_modules/@agentclientprotocol/sdk/dist/schema-deserialize.js +98 -0
  628. package/node_modules/@agentclientprotocol/sdk/dist/schema-deserialize.js.map +1 -0
  629. package/node_modules/@agentclientprotocol/sdk/dist/schema-deserialize.test.d.ts +1 -0
  630. package/node_modules/@agentclientprotocol/sdk/dist/schema-deserialize.test.js +93 -0
  631. package/node_modules/@agentclientprotocol/sdk/dist/schema-deserialize.test.js.map +1 -0
  632. package/node_modules/@agentclientprotocol/sdk/dist/server-permission.test.d.ts +1 -0
  633. package/node_modules/@agentclientprotocol/sdk/dist/server-permission.test.js +261 -0
  634. package/node_modules/@agentclientprotocol/sdk/dist/server-permission.test.js.map +1 -0
  635. package/node_modules/@agentclientprotocol/sdk/dist/server-session-sse.test.d.ts +1 -0
  636. package/node_modules/@agentclientprotocol/sdk/dist/server-session-sse.test.js +490 -0
  637. package/node_modules/@agentclientprotocol/sdk/dist/server-session-sse.test.js.map +1 -0
  638. package/node_modules/@agentclientprotocol/sdk/dist/server-sse.d.ts +2 -0
  639. package/node_modules/@agentclientprotocol/sdk/dist/server-sse.js +104 -0
  640. package/node_modules/@agentclientprotocol/sdk/dist/server-sse.js.map +1 -0
  641. package/node_modules/@agentclientprotocol/sdk/dist/server-sse.test.d.ts +1 -0
  642. package/node_modules/@agentclientprotocol/sdk/dist/server-sse.test.js +52 -0
  643. package/node_modules/@agentclientprotocol/sdk/dist/server-sse.test.js.map +1 -0
  644. package/node_modules/@agentclientprotocol/sdk/dist/server-websocket-upgrade.test.d.ts +1 -0
  645. package/node_modules/@agentclientprotocol/sdk/dist/server-websocket-upgrade.test.js +946 -0
  646. package/node_modules/@agentclientprotocol/sdk/dist/server-websocket-upgrade.test.js.map +1 -0
  647. package/node_modules/@agentclientprotocol/sdk/dist/server.d.ts +81 -0
  648. package/node_modules/@agentclientprotocol/sdk/dist/server.js +380 -0
  649. package/node_modules/@agentclientprotocol/sdk/dist/server.js.map +1 -0
  650. package/node_modules/@agentclientprotocol/sdk/dist/server.test.d.ts +1 -0
  651. package/node_modules/@agentclientprotocol/sdk/dist/server.test.js +1082 -0
  652. package/node_modules/@agentclientprotocol/sdk/dist/server.test.js.map +1 -0
  653. package/node_modules/@agentclientprotocol/sdk/dist/sse.d.ts +4 -0
  654. package/node_modules/@agentclientprotocol/sdk/dist/sse.js +91 -0
  655. package/node_modules/@agentclientprotocol/sdk/dist/sse.js.map +1 -0
  656. package/node_modules/@agentclientprotocol/sdk/dist/sse.test.d.ts +1 -0
  657. package/node_modules/@agentclientprotocol/sdk/dist/sse.test.js +126 -0
  658. package/node_modules/@agentclientprotocol/sdk/dist/sse.test.js.map +1 -0
  659. package/node_modules/@agentclientprotocol/sdk/dist/stream.d.ts +35 -0
  660. package/node_modules/@agentclientprotocol/sdk/dist/stream.js +106 -0
  661. package/node_modules/@agentclientprotocol/sdk/dist/stream.js.map +1 -0
  662. package/node_modules/@agentclientprotocol/sdk/dist/stream.test.d.ts +1 -0
  663. package/node_modules/@agentclientprotocol/sdk/dist/stream.test.js +206 -0
  664. package/node_modules/@agentclientprotocol/sdk/dist/stream.test.js.map +1 -0
  665. package/node_modules/@agentclientprotocol/sdk/dist/test-support/streams.d.ts +8 -0
  666. package/node_modules/@agentclientprotocol/sdk/dist/test-support/streams.js +51 -0
  667. package/node_modules/@agentclientprotocol/sdk/dist/test-support/streams.js.map +1 -0
  668. package/node_modules/@agentclientprotocol/sdk/dist/test-support/test-agent.d.ts +24 -0
  669. package/node_modules/@agentclientprotocol/sdk/dist/test-support/test-agent.js +163 -0
  670. package/node_modules/@agentclientprotocol/sdk/dist/test-support/test-agent.js.map +1 -0
  671. package/node_modules/@agentclientprotocol/sdk/dist/test-support/test-http-server.d.ts +9 -0
  672. package/node_modules/@agentclientprotocol/sdk/dist/test-support/test-http-server.js +74 -0
  673. package/node_modules/@agentclientprotocol/sdk/dist/test-support/test-http-server.js.map +1 -0
  674. package/node_modules/@agentclientprotocol/sdk/dist/v2/acp.d.ts +806 -0
  675. package/node_modules/@agentclientprotocol/sdk/dist/v2/acp.js +1183 -0
  676. package/node_modules/@agentclientprotocol/sdk/dist/v2/acp.js.map +1 -0
  677. package/node_modules/@agentclientprotocol/sdk/dist/v2/acp.test.d.ts +1 -0
  678. package/node_modules/@agentclientprotocol/sdk/dist/v2/acp.test.js +512 -0
  679. package/node_modules/@agentclientprotocol/sdk/dist/v2/acp.test.js.map +1 -0
  680. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/guards.gen.d.ts +954 -0
  681. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/guards.gen.js +1035 -0
  682. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/guards.gen.js.map +1 -0
  683. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/index.d.ts +42 -0
  684. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/index.js +43 -0
  685. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/index.js.map +1 -0
  686. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/types.gen.d.ts +6146 -0
  687. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/types.gen.js +3 -0
  688. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/types.gen.js.map +1 -0
  689. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/zod.gen.d.ts +30552 -0
  690. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/zod.gen.js +3204 -0
  691. package/node_modules/@agentclientprotocol/sdk/dist/v2/schema/zod.gen.js.map +1 -0
  692. package/node_modules/@agentclientprotocol/sdk/dist/ws-server.d.ts +14 -0
  693. package/node_modules/@agentclientprotocol/sdk/dist/ws-server.js +358 -0
  694. package/node_modules/@agentclientprotocol/sdk/dist/ws-server.js.map +1 -0
  695. package/node_modules/@agentclientprotocol/sdk/dist/ws-stream.d.ts +54 -0
  696. package/node_modules/@agentclientprotocol/sdk/dist/ws-stream.js +246 -0
  697. package/node_modules/@agentclientprotocol/sdk/dist/ws-stream.js.map +1 -0
  698. package/node_modules/@agentclientprotocol/sdk/dist/ws-stream.test.d.ts +1 -0
  699. package/node_modules/@agentclientprotocol/sdk/dist/ws-stream.test.js +833 -0
  700. package/node_modules/@agentclientprotocol/sdk/dist/ws-stream.test.js.map +1 -0
  701. package/node_modules/@agentclientprotocol/sdk/dist/ws-utils.d.ts +13 -0
  702. package/node_modules/@agentclientprotocol/sdk/dist/ws-utils.js +78 -0
  703. package/node_modules/@agentclientprotocol/sdk/dist/ws-utils.js.map +1 -0
  704. package/node_modules/@agentclientprotocol/sdk/dist/ws-utils.test.d.ts +1 -0
  705. package/node_modules/@agentclientprotocol/sdk/dist/ws-utils.test.js +42 -0
  706. package/node_modules/@agentclientprotocol/sdk/dist/ws-utils.test.js.map +1 -0
  707. package/node_modules/@agentclientprotocol/sdk/package.json +105 -0
  708. package/node_modules/@agentclientprotocol/sdk/schema/schema.json +8819 -0
  709. package/node_modules/@agentclientprotocol/sdk/schema/v2/schema.unstable.json +10098 -0
  710. package/package.json +52 -6
  711. package/web/assets/{abnfDiagram-VRR7QNED-Nfq-O04D.js → abnfDiagram-VRR7QNED-Bgfb1nEB.js} +1 -1
  712. package/web/assets/app-DoGr2Zi7.js +2 -0
  713. package/web/assets/app-options-D-RJiQ-X.js +25 -0
  714. package/web/assets/app-view-header-BLvLq02T.js +1 -0
  715. package/web/assets/arc-Dk_KI36B.js +1 -0
  716. package/web/assets/{architectureDiagram-ZJ3FMSHR-qhRwPNcQ.js → architectureDiagram-ZJ3FMSHR-NR_KhRCf.js} +1 -1
  717. package/web/assets/ask-tray-TzeTcO6-.js +14 -0
  718. package/web/assets/{blockDiagram-677ZJIJ3-C56P3bGu.js → blockDiagram-677ZJIJ3-CkLkwx9C.js} +1 -1
  719. package/web/assets/button-C6arH7zt.js +1 -0
  720. package/web/assets/{c4Diagram-LMCZKHZV-Ey1M72zD.js → c4Diagram-LMCZKHZV-CFCUH8e_.js} +1 -1
  721. package/web/assets/channel-uMEjV8qc.js +1 -0
  722. package/web/assets/{chunk-2Q5K7J3B-a6isk9VU.js → chunk-2Q5K7J3B-B_BPLWsW.js} +1 -1
  723. package/web/assets/{chunk-32BRIVSS-uy4kdSLL.js → chunk-32BRIVSS-B1VB1hOy.js} +1 -1
  724. package/web/assets/{chunk-5VM5RSS4-oj2sBFd7.js → chunk-5VM5RSS4-KFcYr8Co.js} +1 -1
  725. package/web/assets/{chunk-EX3LRPZG-Bzl1ukAi.js → chunk-EX3LRPZG-CpBX3kuK.js} +3 -3
  726. package/web/assets/{chunk-JWPE2WC7-sUph7I_t.js → chunk-JWPE2WC7-BPSl40wG.js} +1 -1
  727. package/web/assets/{chunk-MOJQB5TN-C0ERSuVK.js → chunk-MOJQB5TN-D2RcYmoU.js} +1 -1
  728. package/web/assets/{chunk-RYQCIY6F-Dyw1Hfwp.js → chunk-RYQCIY6F-m7Gyn-t3.js} +1 -1
  729. package/web/assets/{chunk-V7JOEXUC-DnSz22rb.js → chunk-V7JOEXUC-TDvdopxS.js} +1 -1
  730. package/web/assets/{chunk-VR4S4FIN-Bp2SNel7.js → chunk-VR4S4FIN-DZTsG51a.js} +1 -1
  731. package/web/assets/{chunk-XXDRQBXY-Dqtar746.js → chunk-XXDRQBXY-Dp0--RE2.js} +1 -1
  732. package/web/assets/classDiagram-OUVF2IWQ-fbZocVor.js +1 -0
  733. package/web/assets/classDiagram-v2-EOCWNBFH-fbZocVor.js +1 -0
  734. package/web/assets/client-C6Nxdfif.js +2 -0
  735. package/web/assets/client-CXYfBko5.js +17 -0
  736. package/web/assets/client-CoKtOq-X.js +7 -0
  737. package/web/assets/client-DyRQz5RU.js +53 -0
  738. package/web/assets/client-OY6HUzuD.js +98 -0
  739. package/web/assets/client-YOYWZIFi.js +34 -0
  740. package/web/assets/client-j2kQmxsO.js +22 -0
  741. package/web/assets/command-BugZBGXE.js +38 -0
  742. package/web/assets/copy-context-C0Uqsp-3.js +1 -0
  743. package/web/assets/{cose-bilkent-JH36ORCC-Dx1VqMjj.js → cose-bilkent-JH36ORCC-CPu3PI8h.js} +1 -1
  744. package/web/assets/{cynefin-VYW2F7L2-SjhCWmIV.js → cynefin-VYW2F7L2-DWxftYAm.js} +1 -1
  745. package/web/assets/{cynefinDiagram-TSTJHNR4-Dvqz2594.js → cynefinDiagram-TSTJHNR4-DsmN2V-p.js} +1 -1
  746. package/web/assets/{dagre-VKFMJZFB-Ju2m2qXt.js → dagre-VKFMJZFB-COEbApyY.js} +1 -1
  747. package/web/assets/{diagram-FQU43EPY-DsHKTt0k.js → diagram-FQU43EPY-0O9WGWKB.js} +1 -1
  748. package/web/assets/{diagram-G47NLZAW-DWHAcLkJ.js → diagram-G47NLZAW-CutEdMVh.js} +1 -1
  749. package/web/assets/{diagram-NH7WQ7WH-uUMz46ZD.js → diagram-NH7WQ7WH-C9KZc3B2.js} +1 -1
  750. package/web/assets/{diagram-OA4YK3LP-BRjVzjdp.js → diagram-OA4YK3LP-D8kkPXbY.js} +1 -1
  751. package/web/assets/{diagram-WEI45ONY-Cb-FhBpQ.js → diagram-WEI45ONY-_YqiTaGP.js} +1 -1
  752. package/web/assets/document-Dgt5eZFj.js +19 -0
  753. package/web/assets/{ebnfDiagram-CCIWWBDH-IhhxX3IB.js → ebnfDiagram-CCIWWBDH-JO-zQh6g.js} +1 -1
  754. package/web/assets/{entities-DUnx74kH.js → entities-C3wz7FCx.js} +12 -12
  755. package/web/assets/{erDiagram-Q63AITRT-D1frgeWf.js → erDiagram-Q63AITRT-9UjQwJ4P.js} +1 -1
  756. package/web/assets/file-viewer-DZJ8nYnl.js +1 -0
  757. package/web/assets/{flowDiagram-23GEKE2U-BiPPM-FY.js → flowDiagram-23GEKE2U-Ca08tnYM.js} +5 -5
  758. package/web/assets/folder-image-BfGgxo7i.js +1 -0
  759. package/web/assets/folder-landing-qUKBCnG-.js +54 -0
  760. package/web/assets/folder-list-BfFjv7rR.js +1 -0
  761. package/web/assets/folder-metadata-DCw8xzHk.js +2 -0
  762. package/web/assets/folder-mobile-bar-Ubz4babf.js +1 -0
  763. package/web/assets/folder-plugin-view-DsWR1zmQ.js +6 -0
  764. package/web/assets/{ganttDiagram-NO4QXBWP-CmEOlHD7.js → ganttDiagram-NO4QXBWP-KnHzX5W3.js} +1 -1
  765. package/web/assets/{gitGraphDiagram-IHSO6WYX-tTjcpZpU.js → gitGraphDiagram-IHSO6WYX-Cm8woNtK.js} +1 -1
  766. package/web/assets/index-BaRnbYRw.js +1 -0
  767. package/web/assets/index-BexmLxIP.css +1 -0
  768. package/web/assets/index-Bp9DidgD.js +1 -0
  769. package/web/assets/{index-eL1k96k8.js → index-CCXE8zc9.js} +1 -1
  770. package/web/assets/index-CNyy98F8.js +2 -0
  771. package/web/assets/{index-DmrKjrlM.js → index-CXhBn-ar.js} +1 -1
  772. package/web/assets/index-DDirZMgx.js +1 -0
  773. package/web/assets/{infoDiagram-FWYZ7A6U-Ok2sdbc1.js → infoDiagram-FWYZ7A6U-yyqmUtIb.js} +1 -1
  774. package/web/assets/{ishikawaDiagram-FXEZZL3T-kPnM5psX.js → ishikawaDiagram-FXEZZL3T-BfvR_Zy4.js} +4 -4
  775. package/web/assets/{journeyDiagram-5HDEW3XC-BkoT0-45.js → journeyDiagram-5HDEW3XC-BKuw06HM.js} +1 -1
  776. package/web/assets/{kanban-definition-HUTT4EX6-xnm_eFoU.js → kanban-definition-HUTT4EX6-n0010rmQ.js} +8 -8
  777. package/web/assets/{linear-CLZpgLH-.js → linear-C0d0lT8O.js} +1 -1
  778. package/web/assets/linked-session-header-BkEweU0Z.js +3 -0
  779. package/web/assets/{markdown-njUwQKsR.js → markdown-Bw9RgUGR.js} +9 -9
  780. package/web/assets/{mermaid.core-Bvxj3RoN.js → mermaid.core-BDVbShyO.js} +6 -6
  781. package/web/assets/metadata-KV0dpp4G.js +1 -0
  782. package/web/assets/{mindmap-definition-LN4V7U3C-42Uoox79.js → mindmap-definition-LN4V7U3C--_0ks3GF.js} +1 -1
  783. package/web/assets/note-card-DBfX6gW1.js +6 -0
  784. package/web/assets/{pegDiagram-2B236MQR-B-GZCw3w.js → pegDiagram-2B236MQR-CBoNIpKR.js} +1 -1
  785. package/web/assets/{pieDiagram-ENE6RG2P-DRmmssIB.js → pieDiagram-ENE6RG2P-MA5tkYh5.js} +3 -3
  786. package/web/assets/popover-DBD7FF-W.js +9 -0
  787. package/web/assets/{project-search-dialog-B730oZ1S.js → project-search-dialog-DM1IkSZu.js} +6 -6
  788. package/web/assets/{quadrantDiagram-ABIIQ3AL-BfhVQ7V9.js → quadrantDiagram-ABIIQ3AL-CWT1ryqF.js} +1 -1
  789. package/web/assets/{railroadDiagram-RFXS5EU6-DxKx7XRp.js → railroadDiagram-RFXS5EU6-ZiLB5FGi.js} +1 -1
  790. package/web/assets/{react-DZzLHL-l.js → react-B9jn2M18.js} +2 -2
  791. package/web/assets/{requirementDiagram-TGXJPOKE-NUzj9fw1.js → requirementDiagram-TGXJPOKE-CQq9uneq.js} +1 -1
  792. package/web/assets/{sankeyDiagram-HTMAVEWB-Cy9OMnl-.js → sankeyDiagram-HTMAVEWB-qDG-0JqI.js} +1 -1
  793. package/web/assets/search-DNrQA5fF.js +2 -0
  794. package/web/assets/select-D8cqNgcp.js +30 -0
  795. package/web/assets/selection-popup-DmtTeRs2.js +7 -0
  796. package/web/assets/{sequenceDiagram-DBY2YBRQ-CBNE9mzn.js → sequenceDiagram-DBY2YBRQ-CiApurLO.js} +1 -1
  797. package/web/assets/{sizeCapture-X5ZJPWSS-S4HhfX0n.js → sizeCapture-X5ZJPWSS-DZSR5QXm.js} +1 -1
  798. package/web/assets/stateDiagram-2N3HPSRC-CjJJR9_z.js +1 -0
  799. package/web/assets/stateDiagram-v2-6OUMAXLB-BpeGSCu9.js +1 -0
  800. package/web/assets/{swimlanes-5IMT3BWC-DJ2aLWal.js → swimlanes-5IMT3BWC-CKmo1sg6.js} +2 -2
  801. package/web/assets/swimlanesDiagram-G3AALYLV-D9RjLKb9.js +8 -0
  802. package/web/assets/tanstack-YzX_Mi37.js +3 -0
  803. package/web/assets/{timeline-definition-FHXFAJF6-vFDUVPCX.js → timeline-definition-FHXFAJF6-D-NMwS3y.js} +1 -1
  804. package/web/assets/{use-folder-filter-BbTUlXgG.js → use-folder-filter-LQyXns5Q.js} +1 -1
  805. package/web/assets/{utils-CwHGE3BB.js → utils-DCaHk0Gm.js} +1 -1
  806. package/web/assets/{vennDiagram-L72KCM5P-AsnhK2zW.js → vennDiagram-L72KCM5P-CfL6LBWw.js} +1 -1
  807. package/web/assets/view-context-gyDl_p2V.js +229 -0
  808. package/web/assets/viewer-capabilities-Bpp8Uvcg.js +1 -0
  809. package/web/assets/{wardleyDiagram-EHGQE667-Cj1wFbNV.js → wardleyDiagram-EHGQE667-DgldMxaj.js} +1 -1
  810. package/web/assets/{xychartDiagram-FW5EYKEG-Bbvnutsm.js → xychartDiagram-FW5EYKEG-CIoAIFX8.js} +1 -1
  811. package/web/favicon.svg +6 -0
  812. package/web/index.html +5 -4
  813. package/web/assets/app-CPSmsokP.js +0 -2
  814. package/web/assets/app-options-XEWvevsz.js +0 -25
  815. package/web/assets/app-view-header-BKZ90ToF.js +0 -1
  816. package/web/assets/arc-DbpbZvCt.js +0 -1
  817. package/web/assets/arrow-left-CFeHb-Z1.js +0 -1
  818. package/web/assets/ask-tray-D2YHtbPj.js +0 -14
  819. package/web/assets/button-BJ7z-ZA7.js +0 -1
  820. package/web/assets/calendar-days-DWh2XMO2.js +0 -1
  821. package/web/assets/channel-dSRp_qTo.js +0 -1
  822. package/web/assets/chevron-down-C5oRtqbX.js +0 -1
  823. package/web/assets/chevron-right-CsPtvh8C.js +0 -1
  824. package/web/assets/chevron-up-DjpU6Pyv.js +0 -1
  825. package/web/assets/classDiagram-OUVF2IWQ-B7B2zLzM.js +0 -1
  826. package/web/assets/classDiagram-v2-EOCWNBFH-B7B2zLzM.js +0 -1
  827. package/web/assets/client-CAudjYV9.js +0 -34
  828. package/web/assets/client-Dn9-_Gm_.js +0 -14
  829. package/web/assets/client-Dxrf2tyq.js +0 -102
  830. package/web/assets/client-aFI2M4pE.js +0 -53
  831. package/web/assets/collection-icon-TbOVyORG.js +0 -1
  832. package/web/assets/collection-page-Du6FKkuU.js +0 -10
  833. package/web/assets/command-C_g5E1Wx.js +0 -38
  834. package/web/assets/copy-Ikmr6Iq2.js +0 -1
  835. package/web/assets/copy-context-Cl1TE2PJ.js +0 -1
  836. package/web/assets/document-DcjNSJCk.js +0 -2
  837. package/web/assets/external-link-BXmSXqqF.js +0 -1
  838. package/web/assets/file-renderer-BRZTrYx8.js +0 -19
  839. package/web/assets/file-text-CiiSsCDq.js +0 -1
  840. package/web/assets/file-viewer-C1wAeVDK.js +0 -1
  841. package/web/assets/folder-image-AXBrHUcU.js +0 -1
  842. package/web/assets/folder-landing-BhRg7hwn.js +0 -54
  843. package/web/assets/folder-list-rIdszVde.js +0 -1
  844. package/web/assets/folder-metadata-puTC5QqJ.js +0 -2
  845. package/web/assets/folder-mobile-bar-DjjRQo3T.js +0 -1
  846. package/web/assets/folder-plugin-view-BU_kzR8j.js +0 -6
  847. package/web/assets/index-DS2Wmd9I.css +0 -1
  848. package/web/assets/index-DgqzSeIR.js +0 -1
  849. package/web/assets/index-DnlTDqaa.js +0 -1
  850. package/web/assets/index-DztTMDFz.js +0 -2
  851. package/web/assets/index-kY75qc96.js +0 -1
  852. package/web/assets/index-p38i_yyY.js +0 -1
  853. package/web/assets/link-2-BWKA6t--.js +0 -1
  854. package/web/assets/link-DC_1Z6Yy.js +0 -11
  855. package/web/assets/linked-session-header-DJYWZ_-q.js +0 -3
  856. package/web/assets/mail-2rCdIFul.js +0 -1
  857. package/web/assets/markdown-title-dncAYYiP.js +0 -131
  858. package/web/assets/notes-page-DIW6rgJp.js +0 -10
  859. package/web/assets/pencil-8cobiSSq.js +0 -1
  860. package/web/assets/plus-BHV2wJr7.js +0 -1
  861. package/web/assets/popover-Cmmgj-MJ.js +0 -9
  862. package/web/assets/search-CvlYUkN6.js +0 -2
  863. package/web/assets/select-1SvaKQsS.js +0 -30
  864. package/web/assets/selection-popup-ntjycEVh.js +0 -7
  865. package/web/assets/sparkles-CBhGREdc.js +0 -1
  866. package/web/assets/stateDiagram-2N3HPSRC-BEw1Mheu.js +0 -1
  867. package/web/assets/stateDiagram-v2-6OUMAXLB-BHtjl1iD.js +0 -1
  868. package/web/assets/swimlanesDiagram-G3AALYLV-Z362aroZ.js +0 -8
  869. package/web/assets/tanstack-CD46mJkU.js +0 -1
  870. package/web/assets/view-context-D-fh9AbH.js +0 -81
  871. package/web/assets/viewer-capabilities-CROIaoqh.js +0 -1
  872. package/web/assets/x-BUeE--I4.js +0 -1
@@ -0,0 +1,1064 @@
1
+ const CANCEL_REQUEST_METHOD = "$/cancel_request";
2
+ export function batchRequest(method, params, mapResponseOrOptions, options) {
3
+ const mapResponse = typeof mapResponseOrOptions === "function"
4
+ ? mapResponseOrOptions
5
+ : undefined;
6
+ const requestOptions = typeof mapResponseOrOptions === "function"
7
+ ? options
8
+ : (mapResponseOrOptions ?? options);
9
+ return {
10
+ kind: "request",
11
+ method,
12
+ params,
13
+ mapResponse,
14
+ options: requestOptions,
15
+ };
16
+ }
17
+ /**
18
+ * Creates a typed notification descriptor for `Connection.sendBatch`.
19
+ */
20
+ export function batchNotification(method, params) {
21
+ return { kind: "notification", method, params };
22
+ }
23
+ export function isJsonRpcMessage(value) {
24
+ return (isRequestMessage(value) ||
25
+ isResponseMessage(value) ||
26
+ isNotificationMessage(value));
27
+ }
28
+ /**
29
+ * Returns whether a value is a non-empty batch of valid JSON-RPC messages.
30
+ */
31
+ export function isJsonRpcBatchMessage(value) {
32
+ if (!Array.isArray(value) || value.length === 0) {
33
+ return false;
34
+ }
35
+ return (value.every((message) => isRequestMessage(message) || isNotificationMessage(message)) || value.every((message) => isResponseMessage(message)));
36
+ }
37
+ /**
38
+ * Returns whether a value is a valid individual or batch JSON-RPC message.
39
+ */
40
+ export function isJsonRpcWireMessage(value) {
41
+ return isJsonRpcMessage(value) || isJsonRpcBatchMessage(value);
42
+ }
43
+ export function isRequestMessage(value) {
44
+ return (isJsonRpcEnvelope(value) &&
45
+ "id" in value &&
46
+ typeof value["method"] === "string" &&
47
+ isJsonRpcId(value["id"]));
48
+ }
49
+ export function isResponseMessage(value) {
50
+ if (!isJsonRpcEnvelope(value) || "method" in value) {
51
+ return false;
52
+ }
53
+ if (!("id" in value) || !isJsonRpcId(value["id"])) {
54
+ return false;
55
+ }
56
+ const hasResult = Object.hasOwn(value, "result");
57
+ const hasError = Object.hasOwn(value, "error");
58
+ if (hasResult === hasError) {
59
+ return false;
60
+ }
61
+ return !hasError || isErrorResponse(value["error"]);
62
+ }
63
+ export function isNotificationMessage(value) {
64
+ return (isJsonRpcEnvelope(value) &&
65
+ !("id" in value) &&
66
+ typeof value["method"] === "string");
67
+ }
68
+ export function isRecord(value) {
69
+ return typeof value === "object" && value !== null;
70
+ }
71
+ function isJsonRpcEnvelope(value) {
72
+ return isRecord(value) && value["jsonrpc"] === "2.0";
73
+ }
74
+ function isJsonRpcId(value) {
75
+ return (value === null ||
76
+ typeof value === "string" ||
77
+ (typeof value === "number" && Number.isFinite(value)));
78
+ }
79
+ /**
80
+ * Detects response-shaped objects, including malformed responses, so they are
81
+ * never handled as calls that require a JSON-RPC response.
82
+ *
83
+ * @internal
84
+ */
85
+ export function isResponseShapedMessage(value) {
86
+ return (isRecord(value) &&
87
+ !("method" in value) &&
88
+ ("id" in value || "result" in value || "error" in value));
89
+ }
90
+ /**
91
+ * Classifies a potentially malformed batch using the direction established by
92
+ * its valid entries. A valid call takes precedence because response members in
93
+ * a call batch must be rejected. Otherwise, a valid response establishes
94
+ * response semantics so malformed siblings cannot provoke another response.
95
+ * Shape hints are used only when the batch has no valid messages; an `id` alone
96
+ * is ambiguous, and batches without a direction hint default to call semantics.
97
+ *
98
+ * @internal
99
+ */
100
+ export function isResponseBatch(batch) {
101
+ let hasValidCall = false;
102
+ let hasValidResponse = false;
103
+ let hasCallShape = false;
104
+ let hasResponseShape = false;
105
+ for (const entry of batch) {
106
+ hasValidCall ||= isRequestMessage(entry) || isNotificationMessage(entry);
107
+ hasValidResponse ||= isResponseMessage(entry);
108
+ if (!isRecord(entry)) {
109
+ continue;
110
+ }
111
+ hasCallShape ||= "method" in entry;
112
+ hasResponseShape ||= "result" in entry || "error" in entry;
113
+ }
114
+ if (hasValidCall) {
115
+ return false;
116
+ }
117
+ if (hasValidResponse) {
118
+ return true;
119
+ }
120
+ return hasResponseShape && !hasCallShape;
121
+ }
122
+ function cancelRequestId(params) {
123
+ if (!isRecord(params) || !isJsonRpcId(params["requestId"])) {
124
+ return undefined;
125
+ }
126
+ return params["requestId"];
127
+ }
128
+ function isErrorResponse(value) {
129
+ return (isRecord(value) &&
130
+ typeof value["code"] === "number" &&
131
+ Number.isInteger(value["code"]) &&
132
+ typeof value["message"] === "string");
133
+ }
134
+ /**
135
+ * Helpers for constructing `HandleResult` values.
136
+ */
137
+ export const Handled = {
138
+ /**
139
+ * Marks a message as handled.
140
+ */
141
+ yes() {
142
+ return { handled: true };
143
+ },
144
+ /**
145
+ * Leaves a message unhandled so later handlers can process it.
146
+ */
147
+ no(message, retry = false) {
148
+ return { handled: false, message, retry };
149
+ },
150
+ };
151
+ function rejectedPromise(error) {
152
+ const promise = Promise.reject(error);
153
+ promise.catch(() => { });
154
+ return promise;
155
+ }
156
+ function errorDetails(error) {
157
+ if (error instanceof Error) {
158
+ return error.message;
159
+ }
160
+ if (typeof error === "object" &&
161
+ error != null &&
162
+ "message" in error &&
163
+ typeof error.message === "string") {
164
+ return error.message;
165
+ }
166
+ return undefined;
167
+ }
168
+ function isZodError(error) {
169
+ return (typeof error === "object" &&
170
+ error !== null &&
171
+ "name" in error &&
172
+ error.name === "ZodError" &&
173
+ "issues" in error &&
174
+ Array.isArray(error.issues) &&
175
+ "format" in error &&
176
+ typeof error.format === "function");
177
+ }
178
+ function errorToResult(error) {
179
+ if (error instanceof RequestError) {
180
+ return error.toResult();
181
+ }
182
+ if (isZodError(error)) {
183
+ return RequestError.invalidParams(error.format()).toResult();
184
+ }
185
+ const details = errorDetails(error);
186
+ try {
187
+ return RequestError.internalError(details ? JSON.parse(details) : {}).toResult();
188
+ }
189
+ catch {
190
+ return RequestError.internalError({ details }).toResult();
191
+ }
192
+ }
193
+ function requestCancelledError(reason) {
194
+ if (reason instanceof RequestError && reason.code === -32800) {
195
+ return reason;
196
+ }
197
+ return RequestError.requestCancelled(reason);
198
+ }
199
+ function errorToRequestResult(error, signal) {
200
+ const requestCancelled = abortErrorToRequestCancelled(error, signal);
201
+ return requestCancelled ? requestCancelled.toResult() : errorToResult(error);
202
+ }
203
+ function abortErrorToRequestCancelled(error, signal) {
204
+ if (!signal.aborted || !isAbortError(error)) {
205
+ return undefined;
206
+ }
207
+ return requestCancelledError(signal.reason);
208
+ }
209
+ function isAbortError(error) {
210
+ if (typeof error !== "object" || error === null) {
211
+ return false;
212
+ }
213
+ const maybeAbortError = error;
214
+ return (maybeAbortError.name === "AbortError" ||
215
+ maybeAbortError.code === "ABORT_ERR");
216
+ }
217
+ /**
218
+ * Responder for one incoming JSON-RPC request.
219
+ *
220
+ * Handlers may use this when they need to decide exactly when or how the
221
+ * response is sent.
222
+ */
223
+ export class RequestResponder {
224
+ id;
225
+ sendResult;
226
+ signal;
227
+ finishRequest;
228
+ didRespond = false;
229
+ constructor(
230
+ /**
231
+ * Request ID to include in the response.
232
+ */
233
+ id, sendResult,
234
+ /**
235
+ * AbortSignal for this incoming request.
236
+ */
237
+ signal = new AbortController().signal, finishRequest) {
238
+ this.id = id;
239
+ this.sendResult = sendResult;
240
+ this.signal = signal;
241
+ this.finishRequest = finishRequest;
242
+ }
243
+ /**
244
+ * Whether this request has already received a response.
245
+ */
246
+ get responded() {
247
+ return this.didRespond;
248
+ }
249
+ /**
250
+ * Sends a successful JSON-RPC response.
251
+ */
252
+ respond(response) {
253
+ return this.respondWithResult({ result: (response ?? null) });
254
+ }
255
+ /**
256
+ * Sends an error JSON-RPC response.
257
+ */
258
+ respondWithError(error) {
259
+ const errorResponse = error instanceof RequestError ? error.toErrorResponse() : error;
260
+ return this.respondWithResult({ error: errorResponse });
261
+ }
262
+ /**
263
+ * Sends a complete JSON-RPC result payload.
264
+ */
265
+ respondWithResult(result) {
266
+ if (this.didRespond) {
267
+ return rejectedPromise(new Error("JSON-RPC request already responded"));
268
+ }
269
+ this.didRespond = true;
270
+ return this.sendResult(result).finally(() => {
271
+ this.finishRequest?.();
272
+ });
273
+ }
274
+ }
275
+ /**
276
+ * Disposable handle returned when a handler is registered dynamically.
277
+ */
278
+ export class HandlerRegistration {
279
+ disposeHandler;
280
+ active = true;
281
+ constructor(disposeHandler) {
282
+ this.disposeHandler = disposeHandler;
283
+ }
284
+ /**
285
+ * Unregisters the associated handler.
286
+ */
287
+ dispose() {
288
+ if (!this.active) {
289
+ return;
290
+ }
291
+ this.active = false;
292
+ this.disposeHandler();
293
+ }
294
+ /**
295
+ * Supports explicit resource management with `using`.
296
+ */
297
+ [Symbol.dispose]() {
298
+ this.dispose();
299
+ }
300
+ /**
301
+ * Returns this registration for call sites that intentionally keep it active.
302
+ */
303
+ runIndefinitely() {
304
+ return this;
305
+ }
306
+ }
307
+ /**
308
+ * Per-connection context passed to low-level JSON-RPC handlers.
309
+ */
310
+ export class ConnectionContext {
311
+ connection;
312
+ constructor(connection) {
313
+ this.connection = connection;
314
+ }
315
+ /**
316
+ * Sends a request over the connection.
317
+ */
318
+ sendRequest(method, params, mapResponse, options) {
319
+ return this.connection.sendRequest(method, params, mapResponse, options);
320
+ }
321
+ /**
322
+ * Sends a notification over the connection.
323
+ */
324
+ sendNotification(method, params) {
325
+ return this.connection.sendNotification(method, params);
326
+ }
327
+ /**
328
+ * Sends a non-empty JSON-RPC batch in one transport message.
329
+ */
330
+ sendBatch(entries) {
331
+ return this.connection.sendBatch(entries);
332
+ }
333
+ /**
334
+ * Sends a protocol-level request cancellation notification.
335
+ */
336
+ sendCancelRequest(requestId) {
337
+ return this.connection.sendCancelRequest(requestId);
338
+ }
339
+ /**
340
+ * Registers a handler that can be disposed independently.
341
+ */
342
+ addDynamicHandler(handler) {
343
+ return this.connection.addDynamicHandler(handler);
344
+ }
345
+ /**
346
+ * AbortSignal that aborts when the connection closes.
347
+ */
348
+ get signal() {
349
+ return this.connection.signal;
350
+ }
351
+ /**
352
+ * Promise that resolves when the connection closes.
353
+ */
354
+ get closed() {
355
+ return this.connection.closed;
356
+ }
357
+ }
358
+ /**
359
+ * Lower-level JSON-RPC connection over an ACP `Stream`.
360
+ *
361
+ * Most ACP integrations should use `agent(...)` or `client(...)`. Use this
362
+ * class when building generic JSON-RPC middleware or custom dispatch behavior.
363
+ */
364
+ export class Connection {
365
+ pendingResponses = new Map();
366
+ incomingRequests = new Map();
367
+ nextRequestId = 0;
368
+ staticHandlers = [];
369
+ dynamicHandlers = new Set();
370
+ stream;
371
+ writeQueue = Promise.resolve();
372
+ abortController = new AbortController();
373
+ closedPromise;
374
+ retryQueue = [];
375
+ context = new ConnectionContext(this);
376
+ receiveReader;
377
+ allowBatches = true;
378
+ constructor(requestHandlerOrStream, notificationHandlerOrHandlers, streamOrOptions, options) {
379
+ if (typeof requestHandlerOrStream === "function") {
380
+ const requestHandler = requestHandlerOrStream;
381
+ const notificationHandler = notificationHandlerOrHandlers;
382
+ const stream = streamOrOptions;
383
+ this.initialize(stream, [
384
+ ...(options?.handlers ?? []),
385
+ this.legacyHandler(requestHandler, notificationHandler),
386
+ ], options);
387
+ return;
388
+ }
389
+ const stream = requestHandlerOrStream;
390
+ const handlers = notificationHandlerOrHandlers;
391
+ const connectionOptions = streamOrOptions;
392
+ this.initialize(stream, [...(connectionOptions?.handlers ?? []), ...handlers], connectionOptions);
393
+ }
394
+ /**
395
+ * Creates a builder for configuring a handler-based connection.
396
+ */
397
+ static builder() {
398
+ return new ConnectionBuilder();
399
+ }
400
+ /**
401
+ * Runs an operation while the connection is open, then closes the connection.
402
+ *
403
+ * If the stream closes before `op` settles, the returned promise rejects with
404
+ * the connection close reason.
405
+ */
406
+ runUntil(op) {
407
+ let opSettled = false;
408
+ const opPromise = Promise.resolve()
409
+ .then(() => op(this.context))
410
+ .finally(() => {
411
+ opSettled = true;
412
+ });
413
+ const closedPromise = this.closed.then(() => {
414
+ if (opSettled) {
415
+ return new Promise(() => { });
416
+ }
417
+ throw this.closedReason();
418
+ });
419
+ return Promise.race([opPromise, closedPromise]).finally(() => {
420
+ opSettled = true;
421
+ this.close();
422
+ });
423
+ }
424
+ /**
425
+ * Adds a handler after the connection has started.
426
+ *
427
+ * Any messages queued with `Handled.no(message, true)` are retried after the
428
+ * handler is added.
429
+ */
430
+ addDynamicHandler(handler) {
431
+ this.dynamicHandlers.add(handler);
432
+ if (this.retryQueue.length > 0) {
433
+ for (const message of this.retryQueue.splice(0)) {
434
+ void this.processIncomingMessage(message).catch((error) => this.close(error));
435
+ }
436
+ }
437
+ return new HandlerRegistration(() => {
438
+ this.dynamicHandlers.delete(handler);
439
+ });
440
+ }
441
+ /**
442
+ * AbortSignal that aborts when the connection closes.
443
+ */
444
+ get signal() {
445
+ return this.abortController.signal;
446
+ }
447
+ /**
448
+ * Promise that resolves when the connection closes.
449
+ */
450
+ get closed() {
451
+ return this.closedPromise;
452
+ }
453
+ /** @internal */
454
+ getContext() {
455
+ return this.context;
456
+ }
457
+ /**
458
+ * Sends a JSON-RPC request.
459
+ *
460
+ * `mapResponse` can convert the raw result before the returned promise
461
+ * resolves.
462
+ */
463
+ sendRequest(method, params, mapResponse, options = {}) {
464
+ if (this.abortController.signal.aborted) {
465
+ return rejectedPromise(this.closedReason());
466
+ }
467
+ const request = this.prepareRequest(method, params, mapResponse, options);
468
+ const requestSent = this.sendWireMessage(request.message);
469
+ void requestSent.catch(() => { });
470
+ if (options.cancellationSignal?.aborted) {
471
+ request.cancel();
472
+ }
473
+ return request.response;
474
+ }
475
+ /**
476
+ * Sends a non-empty JSON-RPC batch in one transport message.
477
+ *
478
+ * Requests and notifications are processed independently by the peer. The
479
+ * returned tuple preserves the input order: request entries resolve to their
480
+ * mapped response, while notification entries resolve to `undefined`.
481
+ */
482
+ sendBatch(entries) {
483
+ if (this.abortController.signal.aborted) {
484
+ return rejectedPromise(this.closedReason());
485
+ }
486
+ if (!this.allowBatches) {
487
+ return rejectedPromise(new TypeError("JSON-RPC batches are not supported on this connection"));
488
+ }
489
+ if (entries.length === 0) {
490
+ return rejectedPromise(new TypeError("JSON-RPC batch must contain at least one entry"));
491
+ }
492
+ const messages = [];
493
+ const cancellations = [];
494
+ const outputs = [];
495
+ for (const entry of entries) {
496
+ if (entry.kind === "notification") {
497
+ messages.push({
498
+ jsonrpc: "2.0",
499
+ method: entry.method,
500
+ params: entry.params,
501
+ });
502
+ outputs.push(Promise.resolve(undefined));
503
+ continue;
504
+ }
505
+ const request = this.prepareRequest(entry.method, entry.params, entry.mapResponse, entry.options);
506
+ messages.push(request.message);
507
+ outputs.push(request.response);
508
+ cancellations.push({
509
+ signal: entry.options?.cancellationSignal,
510
+ cancel: request.cancel,
511
+ });
512
+ }
513
+ const batch = messages;
514
+ const batchSent = this.sendWireMessage(batch);
515
+ for (const cancellation of cancellations) {
516
+ if (cancellation.signal?.aborted) {
517
+ cancellation.cancel();
518
+ }
519
+ }
520
+ const response = Promise.all([batchSent, ...outputs]).then(([, ...resolved]) => resolved);
521
+ response.catch(() => { });
522
+ return response;
523
+ }
524
+ /**
525
+ * Sends a protocol-level request cancellation notification.
526
+ */
527
+ sendCancelRequest(requestId) {
528
+ return this.sendNotification(CANCEL_REQUEST_METHOD, { requestId });
529
+ }
530
+ /**
531
+ * Sends a JSON-RPC notification.
532
+ */
533
+ sendNotification(method, params) {
534
+ if (this.abortController.signal.aborted) {
535
+ return rejectedPromise(this.closedReason());
536
+ }
537
+ return this.sendWireMessage({ jsonrpc: "2.0", method, params });
538
+ }
539
+ prepareRequest(method, params, mapResponse, options = {}) {
540
+ const id = this.nextRequestId++;
541
+ let cancel = () => { };
542
+ const response = new Promise((resolve, reject) => {
543
+ const pendingResponse = {
544
+ resolve: (value) => {
545
+ try {
546
+ resolve(mapResponse ? mapResponse(value) : value);
547
+ }
548
+ catch (error) {
549
+ reject(error);
550
+ }
551
+ },
552
+ reject,
553
+ };
554
+ cancel = () => {
555
+ if (pendingResponse.cancellationSent) {
556
+ return;
557
+ }
558
+ pendingResponse.cancellationSent = true;
559
+ pendingResponse.cleanup?.();
560
+ void this.sendCancelRequest(id).catch(() => { });
561
+ };
562
+ options.cancellationSignal?.addEventListener("abort", cancel, {
563
+ once: true,
564
+ });
565
+ pendingResponse.cleanup = () => {
566
+ options.cancellationSignal?.removeEventListener("abort", cancel);
567
+ };
568
+ this.pendingResponses.set(id, pendingResponse);
569
+ });
570
+ response.catch(() => { });
571
+ return {
572
+ message: { jsonrpc: "2.0", id, method, params },
573
+ response,
574
+ cancel: () => cancel(),
575
+ };
576
+ }
577
+ /**
578
+ * Closes the connection and rejects pending requests.
579
+ */
580
+ close(error) {
581
+ if (this.abortController.signal.aborted) {
582
+ return;
583
+ }
584
+ const closeError = error ?? new Error("ACP connection closed");
585
+ this.abortController.abort(closeError);
586
+ for (const pendingResponse of this.pendingResponses.values()) {
587
+ pendingResponse.cleanup?.();
588
+ pendingResponse.reject(closeError);
589
+ }
590
+ this.pendingResponses.clear();
591
+ for (const controller of this.incomingRequests.values()) {
592
+ controller.abort(closeError);
593
+ }
594
+ this.incomingRequests.clear();
595
+ void this.receiveReader?.cancel(closeError).catch(() => { });
596
+ }
597
+ initialize(stream, handlers, options) {
598
+ this.stream = stream;
599
+ this.staticHandlers = handlers;
600
+ this.allowBatches = options?.allowBatches ?? true;
601
+ this.closedPromise = new Promise((resolve) => {
602
+ this.abortController.signal.addEventListener("abort", () => resolve());
603
+ });
604
+ void this.receive();
605
+ }
606
+ legacyHandler(requestHandler, notificationHandler) {
607
+ return {
608
+ handleMessage: async (message, cx) => {
609
+ if (message.kind === "request") {
610
+ const result = await requestHandler(message.method, message.params, cx);
611
+ await message.responder.respond(result);
612
+ }
613
+ else {
614
+ await notificationHandler(message.method, message.params, cx);
615
+ }
616
+ return Handled.yes();
617
+ },
618
+ };
619
+ }
620
+ async receive() {
621
+ let closeError = undefined;
622
+ try {
623
+ const reader = this.stream.readable.getReader();
624
+ this.receiveReader = reader;
625
+ try {
626
+ while (!this.abortController.signal.aborted) {
627
+ const { value: message, done } = await reader.read();
628
+ if (this.abortController.signal.aborted) {
629
+ break;
630
+ }
631
+ if (done) {
632
+ break;
633
+ }
634
+ if (!message) {
635
+ continue;
636
+ }
637
+ this.receiveWireMessage(message);
638
+ }
639
+ }
640
+ finally {
641
+ if (this.receiveReader === reader) {
642
+ this.receiveReader = undefined;
643
+ }
644
+ reader.releaseLock();
645
+ }
646
+ }
647
+ catch (error) {
648
+ closeError = error;
649
+ }
650
+ finally {
651
+ this.close(closeError);
652
+ }
653
+ }
654
+ receiveWireMessage(message) {
655
+ if (Array.isArray(message)) {
656
+ if (!this.allowBatches) {
657
+ this.close(new TypeError("JSON-RPC batches are not supported on this connection"));
658
+ return;
659
+ }
660
+ this.receiveBatch(message);
661
+ return;
662
+ }
663
+ if (!isRecord(message)) {
664
+ console.error("Invalid message", { message });
665
+ return;
666
+ }
667
+ this.receiveMessage(message);
668
+ }
669
+ receiveBatch(batch) {
670
+ if (batch.length === 0) {
671
+ void this.sendWireMessage({
672
+ jsonrpc: "2.0",
673
+ id: null,
674
+ error: RequestError.invalidRequest(batch).toErrorResponse(),
675
+ }).catch(() => { });
676
+ return;
677
+ }
678
+ const responseBatch = isResponseBatch(batch);
679
+ const responseCount = responseBatch
680
+ ? 0
681
+ : batch.reduce((count, message) => count + (isNotificationMessage(message) ? 0 : 1), 0);
682
+ let remaining = responseCount;
683
+ let remainingNotifications = batch.reduce((count, message) => count + (isNotificationMessage(message) ? 1 : 0), 0);
684
+ let responseSent = false;
685
+ const responses = [];
686
+ const sendResponsesIfReady = async () => {
687
+ if (responseSent ||
688
+ remaining !== 0 ||
689
+ remainingNotifications !== 0 ||
690
+ responses.length === 0) {
691
+ return;
692
+ }
693
+ responseSent = true;
694
+ await this.sendWireMessage(responses);
695
+ };
696
+ const collectResponse = async (response) => {
697
+ responses.push(response);
698
+ remaining -= 1;
699
+ await sendResponsesIfReady();
700
+ };
701
+ for (const message of batch) {
702
+ if (responseBatch) {
703
+ // A response batch is not a request, so malformed members must not
704
+ // provoke responses. Still route response-shaped objects so a
705
+ // malformed response with a matching ID rejects its pending request.
706
+ if (isResponseShapedMessage(message)) {
707
+ this.receiveMessage(message);
708
+ }
709
+ continue;
710
+ }
711
+ if (!isRequestMessage(message) && !isNotificationMessage(message)) {
712
+ void collectResponse({
713
+ jsonrpc: "2.0",
714
+ id: null,
715
+ error: RequestError.invalidRequest(message).toErrorResponse(),
716
+ }).catch(() => { });
717
+ continue;
718
+ }
719
+ const processing = this.receiveMessage(message, isRequestMessage(message) ? collectResponse : undefined);
720
+ if (isNotificationMessage(message)) {
721
+ void processing.finally(() => {
722
+ remainingNotifications -= 1;
723
+ void sendResponsesIfReady().catch((error) => this.close(error));
724
+ });
725
+ }
726
+ }
727
+ }
728
+ receiveMessage(message, sendResponse) {
729
+ if (this.abortController.signal.aborted) {
730
+ return Promise.resolve();
731
+ }
732
+ // Guard against transports that deliver non-object values; the `in`
733
+ // checks below would throw and tear down the connection.
734
+ if (!isRecord(message)) {
735
+ console.error("Invalid message", { message });
736
+ return Promise.resolve();
737
+ }
738
+ if ("method" in message) {
739
+ if (!("id" in message)) {
740
+ this.handleProtocolNotification(message);
741
+ }
742
+ return this.processIncomingMessage(this.toIncomingMessage(message, sendResponse)).catch((error) => this.close(error));
743
+ }
744
+ else if ("id" in message) {
745
+ this.handleResponse(message);
746
+ }
747
+ else {
748
+ console.error("Invalid message", { message });
749
+ }
750
+ return Promise.resolve();
751
+ }
752
+ async processIncomingMessage(message) {
753
+ if (this.abortController.signal.aborted) {
754
+ return;
755
+ }
756
+ let current = message;
757
+ let retry = false;
758
+ try {
759
+ for (const handler of [
760
+ ...this.staticHandlers,
761
+ ...this.dynamicHandlers.values(),
762
+ ]) {
763
+ if (this.abortController.signal.aborted) {
764
+ return;
765
+ }
766
+ const result = (await handler.handleMessage(current, this.context)) ?? {
767
+ handled: true,
768
+ };
769
+ if (result.handled) {
770
+ return;
771
+ }
772
+ current = result.message ?? current;
773
+ retry = retry || Boolean(result.retry);
774
+ }
775
+ if (retry) {
776
+ this.retryQueue.push(current);
777
+ }
778
+ else if (current.kind === "request") {
779
+ await current.responder.respondWithError(RequestError.methodNotFound(current.method));
780
+ }
781
+ }
782
+ catch (error) {
783
+ if (this.abortController.signal.aborted) {
784
+ return;
785
+ }
786
+ if (current.kind === "request" && !current.responder.responded) {
787
+ await current.responder.respondWithResult(errorToRequestResult(error, current.responder.signal));
788
+ }
789
+ else {
790
+ const response = errorToResult(error);
791
+ if ("error" in response) {
792
+ console.error("Error handling notification", message.raw, response.error);
793
+ }
794
+ }
795
+ }
796
+ }
797
+ toIncomingMessage(message, sendResponse) {
798
+ if ("id" in message) {
799
+ const abortController = new AbortController();
800
+ this.incomingRequests.set(message.id, abortController);
801
+ const finishRequest = () => {
802
+ if (this.incomingRequests.get(message.id) === abortController) {
803
+ this.incomingRequests.delete(message.id);
804
+ }
805
+ };
806
+ return {
807
+ kind: "request",
808
+ method: message.method,
809
+ params: message.params,
810
+ raw: message,
811
+ signal: abortController.signal,
812
+ responder: new RequestResponder(message.id, (result) => {
813
+ const response = {
814
+ jsonrpc: "2.0",
815
+ id: message.id,
816
+ ...result,
817
+ };
818
+ return sendResponse
819
+ ? sendResponse(response)
820
+ : this.sendWireMessage(response);
821
+ }, abortController.signal, finishRequest),
822
+ };
823
+ }
824
+ return {
825
+ kind: "notification",
826
+ method: message.method,
827
+ params: message.params,
828
+ raw: message,
829
+ };
830
+ }
831
+ handleResponse(response) {
832
+ const pendingResponse = this.pendingResponses.get(response.id);
833
+ if (pendingResponse) {
834
+ this.pendingResponses.delete(response.id);
835
+ pendingResponse.cleanup?.();
836
+ if (!isResponseMessage(response)) {
837
+ pendingResponse.reject(RequestError.invalidRequest(response));
838
+ }
839
+ else if ("result" in response) {
840
+ pendingResponse.resolve(response.result);
841
+ }
842
+ else {
843
+ const { code, message, data } = response.error;
844
+ pendingResponse.reject(new RequestError(code, message, data));
845
+ }
846
+ }
847
+ else {
848
+ console.error("Got response to unknown request", response.id);
849
+ }
850
+ }
851
+ handleProtocolNotification(message) {
852
+ if (message.method !== CANCEL_REQUEST_METHOD) {
853
+ return;
854
+ }
855
+ const requestId = cancelRequestId(message.params);
856
+ if (requestId === undefined) {
857
+ return;
858
+ }
859
+ const controller = this.incomingRequests.get(requestId);
860
+ if (!controller || controller.signal.aborted) {
861
+ return;
862
+ }
863
+ controller.abort(RequestError.requestCancelled({ requestId }));
864
+ }
865
+ closedReason() {
866
+ return (this.abortController.signal.reason ?? new Error("ACP connection closed"));
867
+ }
868
+ async sendWireMessage(message) {
869
+ if (this.abortController.signal.aborted) {
870
+ return rejectedPromise(this.closedReason());
871
+ }
872
+ this.writeQueue = this.writeQueue
873
+ .then(async () => {
874
+ if (this.abortController.signal.aborted) {
875
+ throw this.closedReason();
876
+ }
877
+ const writer = this.stream.writable.getWriter();
878
+ try {
879
+ await writer.write(message);
880
+ }
881
+ finally {
882
+ writer.releaseLock();
883
+ }
884
+ })
885
+ .catch((error) => {
886
+ this.close(error);
887
+ throw error;
888
+ });
889
+ return this.writeQueue;
890
+ }
891
+ }
892
+ /**
893
+ * Builder for a lower-level handler-based JSON-RPC connection.
894
+ */
895
+ export class ConnectionBuilder {
896
+ handlers = [];
897
+ connectionName;
898
+ /**
899
+ * Sets a diagnostic name used by handlers created from this builder.
900
+ */
901
+ name(name) {
902
+ this.connectionName = name;
903
+ return this;
904
+ }
905
+ /**
906
+ * Adds a raw JSON-RPC handler to the handler chain.
907
+ */
908
+ withHandler(handler) {
909
+ this.handlers.push(handler);
910
+ return this;
911
+ }
912
+ /**
913
+ * Adds a handler that can inspect every incoming request or notification.
914
+ *
915
+ * Observer callbacks that return void pass the message through to later
916
+ * handlers. Return `Handled.yes()` to stop dispatch explicitly.
917
+ */
918
+ onReceiveMessage(handler) {
919
+ return this.withHandler({
920
+ handleMessage: async (message, cx) => (await handler(message, cx)) ?? Handled.no(message),
921
+ describe: () => this.connectionName ?? "onReceiveMessage",
922
+ });
923
+ }
924
+ /**
925
+ * Adds a typed request handler for one method.
926
+ */
927
+ onReceiveRequest(method, parse, handler) {
928
+ return this.withHandler({
929
+ handleMessage: async (message, cx) => {
930
+ if (message.kind !== "request" || message.method !== method) {
931
+ return Handled.no(message);
932
+ }
933
+ const request = parse(message.params);
934
+ return ((await handler(request, message.responder, cx)) ?? Handled.yes());
935
+ },
936
+ describe: () => `${this.connectionName ?? "request"}:${method}`,
937
+ });
938
+ }
939
+ /**
940
+ * Adds a typed notification handler for one method.
941
+ */
942
+ onReceiveNotification(method, parse, handler) {
943
+ return this.withHandler({
944
+ handleMessage: async (message, cx) => {
945
+ if (message.kind !== "notification" || message.method !== method) {
946
+ return Handled.no(message);
947
+ }
948
+ const notification = parse(message.params);
949
+ return (await handler(notification, cx)) ?? Handled.yes();
950
+ },
951
+ describe: () => `${this.connectionName ?? "notification"}:${method}`,
952
+ });
953
+ }
954
+ /**
955
+ * Connects the configured handlers to a stream.
956
+ */
957
+ connect(stream, options) {
958
+ return new Connection(stream, this.handlers, options);
959
+ }
960
+ /**
961
+ * Connects to a stream for the lifetime of `op`, then closes the connection.
962
+ */
963
+ connectWith(stream, op, options) {
964
+ return this.connect(stream, options).runUntil(op);
965
+ }
966
+ }
967
+ /**
968
+ * JSON-RPC error object.
969
+ *
970
+ * Represents an error that occurred during method execution, following the
971
+ * JSON-RPC 2.0 error object specification with optional additional data.
972
+ *
973
+ * See protocol docs: [JSON-RPC Error Object](https://www.jsonrpc.org/specification#error_object)
974
+ */
975
+ export class RequestError extends Error {
976
+ code;
977
+ /**
978
+ * Additional JSON-RPC error data.
979
+ */
980
+ data;
981
+ constructor(
982
+ /**
983
+ * JSON-RPC error code.
984
+ */
985
+ code, message, data) {
986
+ super(message);
987
+ this.code = code;
988
+ this.name = "RequestError";
989
+ this.data = data;
990
+ }
991
+ /**
992
+ * Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.
993
+ */
994
+ static parseError(data, additionalMessage) {
995
+ return new RequestError(-32700, `Parse error${additionalMessage ? `: ${additionalMessage}` : ""}`, data);
996
+ }
997
+ /**
998
+ * The JSON sent is not a valid Request object.
999
+ */
1000
+ static invalidRequest(data, additionalMessage) {
1001
+ return new RequestError(-32600, `Invalid request${additionalMessage ? `: ${additionalMessage}` : ""}`, data);
1002
+ }
1003
+ /**
1004
+ * The method does not exist / is not available.
1005
+ */
1006
+ static methodNotFound(method) {
1007
+ return new RequestError(-32601, `"Method not found": ${method}`, {
1008
+ method,
1009
+ });
1010
+ }
1011
+ /**
1012
+ * Invalid method parameter(s).
1013
+ */
1014
+ static invalidParams(data, additionalMessage) {
1015
+ return new RequestError(-32602, `Invalid params${additionalMessage ? `: ${additionalMessage}` : ""}`, data);
1016
+ }
1017
+ /**
1018
+ * Internal JSON-RPC error.
1019
+ */
1020
+ static internalError(data, additionalMessage) {
1021
+ return new RequestError(-32603, `Internal error${additionalMessage ? `: ${additionalMessage}` : ""}`, data);
1022
+ }
1023
+ /**
1024
+ * Execution of the request was aborted.
1025
+ */
1026
+ static requestCancelled(data, additionalMessage) {
1027
+ return new RequestError(-32800, `Request cancelled${additionalMessage ? `: ${additionalMessage}` : ""}`, data);
1028
+ }
1029
+ /**
1030
+ * Authentication required.
1031
+ */
1032
+ static authRequired(data, additionalMessage) {
1033
+ return new RequestError(-32000, `Authentication required${additionalMessage ? `: ${additionalMessage}` : ""}`, data);
1034
+ }
1035
+ /**
1036
+ * Resource, such as a file, was not found
1037
+ */
1038
+ static resourceNotFound(uri) {
1039
+ return new RequestError(-32002, `Resource not found${uri ? `: ${uri}` : ""}`, uri && { uri });
1040
+ }
1041
+ /**
1042
+ * Converts this error to a JSON-RPC result object.
1043
+ */
1044
+ toResult() {
1045
+ return {
1046
+ error: {
1047
+ code: this.code,
1048
+ message: this.message,
1049
+ data: this.data,
1050
+ },
1051
+ };
1052
+ }
1053
+ /**
1054
+ * Converts this error to a JSON-RPC error response payload.
1055
+ */
1056
+ toErrorResponse() {
1057
+ return {
1058
+ code: this.code,
1059
+ message: this.message,
1060
+ data: this.data,
1061
+ };
1062
+ }
1063
+ }
1064
+ //# sourceMappingURL=jsonrpc.js.map