aimeat 3.2.0 → 3.3.1

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 (534) hide show
  1. package/README.md +1 -1
  2. package/dist/.env.example +58 -1
  3. package/dist/build-stamp.json +4 -4
  4. package/dist/locales/en.json +41 -1
  5. package/dist/locales/es.json +41 -1
  6. package/dist/locales/fi.json +43 -3
  7. package/dist/public/changelog.json +12 -0
  8. package/dist/public/css/views/chat.css +388 -0
  9. package/dist/public/js/services/chat.js +190 -0
  10. package/dist/public/js/services/speech-reader.js +26 -0
  11. package/dist/public/lib/VENDORED.md +1 -0
  12. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser-eh.worker.js +14 -0
  13. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser.js +23 -0
  14. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-eh.wasm +0 -0
  15. package/dist/public/lib/duckdb-wasm@1.32.0/extensions/v1.4.3/wasm_eh/parquet.duckdb_extension.wasm +0 -0
  16. package/dist/public/lib/vendored-assets.json +19 -0
  17. package/dist/public/llms-full-template.txt +2706 -0
  18. package/dist/public/llms-index-template.txt +60 -0
  19. package/dist/public/robots.node.txt +64 -23
  20. package/dist/public/spa.html +8 -1
  21. package/dist/public/views/chat/parts.js +257 -0
  22. package/dist/public/views/chat.js +327 -0
  23. package/dist/public/views/landing.js +24 -1
  24. package/dist/public/views/profile/agents/scope-model.js +320 -315
  25. package/dist/scripts/audit-mcp-schemas.js +50 -0
  26. package/dist/scripts/audit-mcp-schemas.js.map +1 -1
  27. package/dist/scripts/build-sdk-libs.d.ts.map +1 -1
  28. package/dist/scripts/build-sdk-libs.js +1 -0
  29. package/dist/scripts/build-sdk-libs.js.map +1 -1
  30. package/dist/scripts/check-ai-disclosure.d.ts +1 -1
  31. package/dist/scripts/check-ai-disclosure.d.ts.map +1 -1
  32. package/dist/scripts/check-ai-disclosure.js +30 -3
  33. package/dist/scripts/check-ai-disclosure.js.map +1 -1
  34. package/dist/scripts/check-denial-coverage.d.ts +29 -0
  35. package/dist/scripts/check-denial-coverage.d.ts.map +1 -0
  36. package/dist/scripts/check-denial-coverage.js +237 -0
  37. package/dist/scripts/check-denial-coverage.js.map +1 -0
  38. package/dist/scripts/check-ext-entrypoints.js +14 -2
  39. package/dist/scripts/check-ext-entrypoints.js.map +1 -1
  40. package/dist/scripts/check-outbound-fetch.d.ts.map +1 -1
  41. package/dist/scripts/check-outbound-fetch.js +16 -2
  42. package/dist/scripts/check-outbound-fetch.js.map +1 -1
  43. package/dist/scripts/check-sse-parity.js +14 -0
  44. package/dist/scripts/check-sse-parity.js.map +1 -1
  45. package/dist/scripts/indexnow.js +9 -7
  46. package/dist/scripts/indexnow.js.map +1 -1
  47. package/dist/src/auth/ai-gate.d.ts +25 -0
  48. package/dist/src/auth/ai-gate.d.ts.map +1 -0
  49. package/dist/src/auth/ai-gate.js +21 -0
  50. package/dist/src/auth/ai-gate.js.map +1 -0
  51. package/dist/src/auth/middleware.d.ts +7 -0
  52. package/dist/src/auth/middleware.d.ts.map +1 -1
  53. package/dist/src/auth/middleware.js +15 -21
  54. package/dist/src/auth/middleware.js.map +1 -1
  55. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts +4 -0
  56. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
  57. package/dist/src/cli/connect/mcp/tools/agent-tasks.js +11 -1
  58. package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
  59. package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -1
  60. package/dist/src/cli/connect/mcp/tools/apps.js +88 -0
  61. package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -1
  62. package/dist/src/cli/connect/mcp/tools/core.d.ts +7 -0
  63. package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
  64. package/dist/src/cli/connect/mcp/tools/core.js +83 -4
  65. package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
  66. package/dist/src/cli/connect/onboarding-prompt.js +1 -1
  67. package/dist/src/cli/connect/skill-bundle.js +1 -1
  68. package/dist/src/cli/connect/tool-call-defs-agent.d.ts.map +1 -1
  69. package/dist/src/cli/connect/tool-call-defs-agent.js +38 -9
  70. package/dist/src/cli/connect/tool-call-defs-agent.js.map +1 -1
  71. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts +21 -0
  72. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts.map +1 -0
  73. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js +137 -0
  74. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js.map +1 -0
  75. package/dist/src/cli/connect/tool-call-defs-apps.d.ts.map +1 -1
  76. package/dist/src/cli/connect/tool-call-defs-apps.js +114 -25
  77. package/dist/src/cli/connect/tool-call-defs-apps.js.map +1 -1
  78. package/dist/src/cli/connect/tool-call-defs-core.d.ts +1 -0
  79. package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
  80. package/dist/src/cli/connect/tool-call-defs-core.js +179 -26
  81. package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
  82. package/dist/src/cli/connect/tool-call-defs-organism.d.ts.map +1 -1
  83. package/dist/src/cli/connect/tool-call-defs-organism.js +20 -3
  84. package/dist/src/cli/connect/tool-call-defs-organism.js.map +1 -1
  85. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  86. package/dist/src/cli/connect/tool-call.js +52 -1
  87. package/dist/src/cli/connect/tool-call.js.map +1 -1
  88. package/dist/src/config-types-ai.d.ts +76 -0
  89. package/dist/src/config-types-ai.d.ts.map +1 -0
  90. package/dist/src/config-types-ai.js +15 -0
  91. package/dist/src/config-types-ai.js.map +1 -0
  92. package/dist/src/config-types.d.ts +11 -2
  93. package/dist/src/config-types.d.ts.map +1 -1
  94. package/dist/src/config.d.ts.map +1 -1
  95. package/dist/src/config.js +25 -4
  96. package/dist/src/config.js.map +1 -1
  97. package/dist/src/data/builtin-skills.d.ts.map +1 -1
  98. package/dist/src/data/builtin-skills.js +3 -2
  99. package/dist/src/data/builtin-skills.js.map +1 -1
  100. package/dist/src/data/digital-signage-package.js +1 -1
  101. package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
  102. package/dist/src/data/library-packs/sdk.js +76 -0
  103. package/dist/src/data/library-packs/sdk.js.map +1 -1
  104. package/dist/src/data/library-packs/vendored.d.ts.map +1 -1
  105. package/dist/src/data/library-packs/vendored.js +81 -0
  106. package/dist/src/data/library-packs/vendored.js.map +1 -1
  107. package/dist/src/data/library-packs.d.ts +2 -2
  108. package/dist/src/data/library-packs.js +2 -2
  109. package/dist/src/data/public-pages.d.ts +13 -0
  110. package/dist/src/data/public-pages.d.ts.map +1 -1
  111. package/dist/src/data/public-pages.js +153 -113
  112. package/dist/src/data/public-pages.js.map +1 -1
  113. package/dist/src/generated/api-types.d.ts +1808 -36
  114. package/dist/src/generated/api-types.d.ts.map +1 -1
  115. package/dist/src/index-start.d.ts.map +1 -1
  116. package/dist/src/index-start.js +3 -0
  117. package/dist/src/index-start.js.map +1 -1
  118. package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
  119. package/dist/src/mcp/agent-tasks.js +5 -0
  120. package/dist/src/mcp/agent-tasks.js.map +1 -1
  121. package/dist/src/mcp/ai-image.d.ts +22 -0
  122. package/dist/src/mcp/ai-image.d.ts.map +1 -0
  123. package/dist/src/mcp/ai-image.js +60 -0
  124. package/dist/src/mcp/ai-image.js.map +1 -0
  125. package/dist/src/mcp/annotations.d.ts +5 -0
  126. package/dist/src/mcp/annotations.d.ts.map +1 -1
  127. package/dist/src/mcp/annotations.js +18 -0
  128. package/dist/src/mcp/annotations.js.map +1 -1
  129. package/dist/src/mcp/apps-draft-edit.d.ts +28 -0
  130. package/dist/src/mcp/apps-draft-edit.d.ts.map +1 -0
  131. package/dist/src/mcp/apps-draft-edit.js +164 -0
  132. package/dist/src/mcp/apps-draft-edit.js.map +1 -0
  133. package/dist/src/mcp/apps-screenshot.d.ts +26 -0
  134. package/dist/src/mcp/apps-screenshot.d.ts.map +1 -0
  135. package/dist/src/mcp/apps-screenshot.js +39 -0
  136. package/dist/src/mcp/apps-screenshot.js.map +1 -0
  137. package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts +1 -0
  138. package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts.map +1 -1
  139. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js +40 -0
  140. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js.map +1 -1
  141. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts +3 -0
  142. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts.map +1 -1
  143. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +74 -0
  144. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
  145. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts.map +1 -1
  146. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js +1 -0
  147. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
  148. package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
  149. package/dist/src/mcp/catalog/scopes.js +19 -1
  150. package/dist/src/mcp/catalog/scopes.js.map +1 -1
  151. package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
  152. package/dist/src/mcp/catalog/surfaces.js +18 -4
  153. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  154. package/dist/src/mcp/core-datapackage.d.ts +32 -0
  155. package/dist/src/mcp/core-datapackage.d.ts.map +1 -0
  156. package/dist/src/mcp/core-datapackage.js +188 -0
  157. package/dist/src/mcp/core-datapackage.js.map +1 -0
  158. package/dist/src/mcp/core-storage.d.ts +7 -3
  159. package/dist/src/mcp/core-storage.d.ts.map +1 -1
  160. package/dist/src/mcp/core-storage.js +27 -4
  161. package/dist/src/mcp/core-storage.js.map +1 -1
  162. package/dist/src/mcp/core.d.ts.map +1 -1
  163. package/dist/src/mcp/core.js +3 -0
  164. package/dist/src/mcp/core.js.map +1 -1
  165. package/dist/src/mcp/extensions.d.ts.map +1 -1
  166. package/dist/src/mcp/extensions.js +11 -1
  167. package/dist/src/mcp/extensions.js.map +1 -1
  168. package/dist/src/mcp/index.d.ts +9 -0
  169. package/dist/src/mcp/index.d.ts.map +1 -1
  170. package/dist/src/mcp/index.js +34 -0
  171. package/dist/src/mcp/index.js.map +1 -1
  172. package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
  173. package/dist/src/models/agent-task-schemas.js +12 -1
  174. package/dist/src/models/agent-task-schemas.js.map +1 -1
  175. package/dist/src/models/workflow-schemas.d.ts +178 -1
  176. package/dist/src/models/workflow-schemas.d.ts.map +1 -1
  177. package/dist/src/models/workflow-schemas.js +75 -0
  178. package/dist/src/models/workflow-schemas.js.map +1 -1
  179. package/dist/src/routes/admin-extensions.d.ts +4 -0
  180. package/dist/src/routes/admin-extensions.d.ts.map +1 -1
  181. package/dist/src/routes/admin-extensions.js +135 -142
  182. package/dist/src/routes/admin-extensions.js.map +1 -1
  183. package/dist/src/routes/agent-conventions.d.ts.map +1 -1
  184. package/dist/src/routes/agent-conventions.js +4 -2
  185. package/dist/src/routes/agent-conventions.js.map +1 -1
  186. package/dist/src/routes/agent-docs.d.ts +4 -4
  187. package/dist/src/routes/agent-docs.js +145 -145
  188. package/dist/src/routes/agent-docs.js.map +1 -1
  189. package/dist/src/routes/agent-messages.d.ts +6 -0
  190. package/dist/src/routes/agent-messages.d.ts.map +1 -1
  191. package/dist/src/routes/agent-messages.js +23 -1
  192. package/dist/src/routes/agent-messages.js.map +1 -1
  193. package/dist/src/routes/agent-tasks/create-read.d.ts.map +1 -1
  194. package/dist/src/routes/agent-tasks/create-read.js +8 -1
  195. package/dist/src/routes/agent-tasks/create-read.js.map +1 -1
  196. package/dist/src/routes/agent-tasks/lifecycle.d.ts +4 -1
  197. package/dist/src/routes/agent-tasks/lifecycle.d.ts.map +1 -1
  198. package/dist/src/routes/agent-tasks/lifecycle.js +80 -2
  199. package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
  200. package/dist/src/routes/ai.d.ts +5 -0
  201. package/dist/src/routes/ai.d.ts.map +1 -1
  202. package/dist/src/routes/ai.js +55 -16
  203. package/dist/src/routes/ai.js.map +1 -1
  204. package/dist/src/routes/app-grants.d.ts.map +1 -1
  205. package/dist/src/routes/app-grants.js +5 -0
  206. package/dist/src/routes/app-grants.js.map +1 -1
  207. package/dist/src/routes/apps/drafts.d.ts +6 -0
  208. package/dist/src/routes/apps/drafts.d.ts.map +1 -1
  209. package/dist/src/routes/apps/drafts.js +133 -1
  210. package/dist/src/routes/apps/drafts.js.map +1 -1
  211. package/dist/src/routes/apps/read.d.ts.map +1 -1
  212. package/dist/src/routes/apps/read.js +38 -1
  213. package/dist/src/routes/apps/read.js.map +1 -1
  214. package/dist/src/routes/auth-otk.d.ts +28 -0
  215. package/dist/src/routes/auth-otk.d.ts.map +1 -0
  216. package/dist/src/routes/auth-otk.js +190 -0
  217. package/dist/src/routes/auth-otk.js.map +1 -0
  218. package/dist/src/routes/auth.d.ts +17 -0
  219. package/dist/src/routes/auth.d.ts.map +1 -1
  220. package/dist/src/routes/auth.js +44 -153
  221. package/dist/src/routes/auth.js.map +1 -1
  222. package/dist/src/routes/bootstrap.d.ts +6 -0
  223. package/dist/src/routes/bootstrap.d.ts.map +1 -1
  224. package/dist/src/routes/bootstrap.js +47 -20
  225. package/dist/src/routes/bootstrap.js.map +1 -1
  226. package/dist/src/routes/chat.d.ts +23 -0
  227. package/dist/src/routes/chat.d.ts.map +1 -0
  228. package/dist/src/routes/chat.js +165 -0
  229. package/dist/src/routes/chat.js.map +1 -0
  230. package/dist/src/routes/commerce.js +4 -4
  231. package/dist/src/routes/commerce.js.map +1 -1
  232. package/dist/src/routes/datapackages.d.ts +35 -0
  233. package/dist/src/routes/datapackages.d.ts.map +1 -0
  234. package/dist/src/routes/datapackages.js +217 -0
  235. package/dist/src/routes/datapackages.js.map +1 -0
  236. package/dist/src/routes/disputes.d.ts +8 -0
  237. package/dist/src/routes/disputes.d.ts.map +1 -1
  238. package/dist/src/routes/disputes.js +52 -1
  239. package/dist/src/routes/disputes.js.map +1 -1
  240. package/dist/src/routes/ecosystem-apps-advisories.d.ts +16 -0
  241. package/dist/src/routes/ecosystem-apps-advisories.d.ts.map +1 -0
  242. package/dist/src/routes/ecosystem-apps-advisories.js +104 -0
  243. package/dist/src/routes/ecosystem-apps-advisories.js.map +1 -0
  244. package/dist/src/routes/ecosystem-apps.d.ts +6 -0
  245. package/dist/src/routes/ecosystem-apps.d.ts.map +1 -1
  246. package/dist/src/routes/ecosystem-apps.js +31 -99
  247. package/dist/src/routes/ecosystem-apps.js.map +1 -1
  248. package/dist/src/routes/extensions/actions.d.ts.map +1 -1
  249. package/dist/src/routes/extensions/actions.js +29 -1
  250. package/dist/src/routes/extensions/actions.js.map +1 -1
  251. package/dist/src/routes/federation-sync/routing.d.ts.map +1 -1
  252. package/dist/src/routes/federation-sync/routing.js +12 -3
  253. package/dist/src/routes/federation-sync/routing.js.map +1 -1
  254. package/dist/src/routes/glossary.js +1 -1
  255. package/dist/src/routes/glossary.js.map +1 -1
  256. package/dist/src/routes/home/track.d.ts +5 -1
  257. package/dist/src/routes/home/track.d.ts.map +1 -1
  258. package/dist/src/routes/home/track.js +20 -6
  259. package/dist/src/routes/home/track.js.map +1 -1
  260. package/dist/src/routes/instances/install.d.ts +3 -0
  261. package/dist/src/routes/instances/install.d.ts.map +1 -1
  262. package/dist/src/routes/instances/install.js +17 -24
  263. package/dist/src/routes/instances/install.js.map +1 -1
  264. package/dist/src/routes/libs.js +1 -1
  265. package/dist/src/routes/libs.js.map +1 -1
  266. package/dist/src/routes/llm-proxy.d.ts +34 -0
  267. package/dist/src/routes/llm-proxy.d.ts.map +1 -0
  268. package/dist/src/routes/llm-proxy.js +258 -0
  269. package/dist/src/routes/llm-proxy.js.map +1 -0
  270. package/dist/src/routes/markdown-mirrors.js +1 -1
  271. package/dist/src/routes/markdown-mirrors.js.map +1 -1
  272. package/dist/src/routes/odata.d.ts +36 -0
  273. package/dist/src/routes/odata.d.ts.map +1 -0
  274. package/dist/src/routes/odata.js +143 -0
  275. package/dist/src/routes/odata.js.map +1 -0
  276. package/dist/src/routes/openrouter.d.ts +4 -0
  277. package/dist/src/routes/openrouter.d.ts.map +1 -1
  278. package/dist/src/routes/openrouter.js +10 -1
  279. package/dist/src/routes/openrouter.js.map +1 -1
  280. package/dist/src/routes/organisms/gates.d.ts.map +1 -1
  281. package/dist/src/routes/organisms/gates.js +9 -2
  282. package/dist/src/routes/organisms/gates.js.map +1 -1
  283. package/dist/src/routes/portal.d.ts +1 -0
  284. package/dist/src/routes/portal.d.ts.map +1 -1
  285. package/dist/src/routes/portal.js +13 -0
  286. package/dist/src/routes/portal.js.map +1 -1
  287. package/dist/src/routes/schedules.d.ts +4 -0
  288. package/dist/src/routes/schedules.d.ts.map +1 -1
  289. package/dist/src/routes/schedules.js +9 -1
  290. package/dist/src/routes/schedules.js.map +1 -1
  291. package/dist/src/routes/storage-files.d.ts +23 -0
  292. package/dist/src/routes/storage-files.d.ts.map +1 -1
  293. package/dist/src/routes/storage-files.js +103 -82
  294. package/dist/src/routes/storage-files.js.map +1 -1
  295. package/dist/src/routes/workflows.d.ts.map +1 -1
  296. package/dist/src/routes/workflows.js +9 -1
  297. package/dist/src/routes/workflows.js.map +1 -1
  298. package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
  299. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  300. package/dist/src/server-bootstrap/routes-loader.js +22 -2
  301. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  302. package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
  303. package/dist/src/server-bootstrap/service-init.js +12 -7
  304. package/dist/src/server-bootstrap/service-init.js.map +1 -1
  305. package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
  306. package/dist/src/server-bootstrap/static-files.js +44 -10
  307. package/dist/src/server-bootstrap/static-files.js.map +1 -1
  308. package/dist/src/services/ai-allowance.d.ts +82 -0
  309. package/dist/src/services/ai-allowance.d.ts.map +1 -0
  310. package/dist/src/services/ai-allowance.js +117 -0
  311. package/dist/src/services/ai-allowance.js.map +1 -0
  312. package/dist/src/services/ai-completion.d.ts +102 -0
  313. package/dist/src/services/ai-completion.d.ts.map +1 -1
  314. package/dist/src/services/ai-completion.js +131 -67
  315. package/dist/src/services/ai-completion.js.map +1 -1
  316. package/dist/src/services/ai-image.d.ts +70 -0
  317. package/dist/src/services/ai-image.d.ts.map +1 -0
  318. package/dist/src/services/ai-image.js +104 -0
  319. package/dist/src/services/ai-image.js.map +1 -0
  320. package/dist/src/services/ai-model-defaults.d.ts +45 -0
  321. package/dist/src/services/ai-model-defaults.d.ts.map +1 -0
  322. package/dist/src/services/ai-model-defaults.js +42 -0
  323. package/dist/src/services/ai-model-defaults.js.map +1 -0
  324. package/dist/src/services/ai-tool-setup.d.ts +5 -1
  325. package/dist/src/services/ai-tool-setup.d.ts.map +1 -1
  326. package/dist/src/services/ai-tool-setup.js +36 -0
  327. package/dist/src/services/ai-tool-setup.js.map +1 -1
  328. package/dist/src/services/ai-transcription.d.ts +5 -0
  329. package/dist/src/services/ai-transcription.d.ts.map +1 -1
  330. package/dist/src/services/ai-transcription.js +5 -2
  331. package/dist/src/services/ai-transcription.js.map +1 -1
  332. package/dist/src/services/app-agent-surfaces.js +4 -4
  333. package/dist/src/services/app-agent-surfaces.js.map +1 -1
  334. package/dist/src/services/app-draft-edit.d.ts +144 -0
  335. package/dist/src/services/app-draft-edit.d.ts.map +1 -0
  336. package/dist/src/services/app-draft-edit.js +203 -0
  337. package/dist/src/services/app-draft-edit.js.map +1 -0
  338. package/dist/src/services/auth-md.js +2 -2
  339. package/dist/src/services/auth-md.js.map +1 -1
  340. package/dist/src/services/board-write.d.ts +11 -3
  341. package/dist/src/services/board-write.d.ts.map +1 -1
  342. package/dist/src/services/board-write.js +24 -3
  343. package/dist/src/services/board-write.js.map +1 -1
  344. package/dist/src/services/chat-agent.d.ts +36 -0
  345. package/dist/src/services/chat-agent.d.ts.map +1 -0
  346. package/dist/src/services/chat-agent.js +123 -0
  347. package/dist/src/services/chat-agent.js.map +1 -0
  348. package/dist/src/services/chat-session.d.ts +58 -0
  349. package/dist/src/services/chat-session.d.ts.map +1 -0
  350. package/dist/src/services/chat-session.js +151 -0
  351. package/dist/src/services/chat-session.js.map +1 -0
  352. package/dist/src/services/chat-threads.d.ts +61 -0
  353. package/dist/src/services/chat-threads.d.ts.map +1 -0
  354. package/dist/src/services/chat-threads.js +137 -0
  355. package/dist/src/services/chat-threads.js.map +1 -0
  356. package/dist/src/services/config-schema.d.ts.map +1 -1
  357. package/dist/src/services/config-schema.js +2 -1
  358. package/dist/src/services/config-schema.js.map +1 -1
  359. package/dist/src/services/datapackage/contract.d.ts +198 -0
  360. package/dist/src/services/datapackage/contract.d.ts.map +1 -0
  361. package/dist/src/services/datapackage/contract.js +140 -0
  362. package/dist/src/services/datapackage/contract.js.map +1 -0
  363. package/dist/src/services/datapackage/ext-capability.d.ts +85 -0
  364. package/dist/src/services/datapackage/ext-capability.d.ts.map +1 -0
  365. package/dist/src/services/datapackage/ext-capability.js +72 -0
  366. package/dist/src/services/datapackage/ext-capability.js.map +1 -0
  367. package/dist/src/services/datapackage/odata.d.ts +92 -0
  368. package/dist/src/services/datapackage/odata.d.ts.map +1 -0
  369. package/dist/src/services/datapackage/odata.js +256 -0
  370. package/dist/src/services/datapackage/odata.js.map +1 -0
  371. package/dist/src/services/datapackage/odps.d.ts +24 -0
  372. package/dist/src/services/datapackage/odps.d.ts.map +1 -0
  373. package/dist/src/services/datapackage/odps.js +183 -0
  374. package/dist/src/services/datapackage/odps.js.map +1 -0
  375. package/dist/src/services/datapackage/store.d.ts +143 -0
  376. package/dist/src/services/datapackage/store.d.ts.map +1 -0
  377. package/dist/src/services/datapackage/store.js +533 -0
  378. package/dist/src/services/datapackage/store.js.map +1 -0
  379. package/dist/src/services/datapackage/table.d.ts +67 -0
  380. package/dist/src/services/datapackage/table.d.ts.map +1 -0
  381. package/dist/src/services/datapackage/table.js +0 -0
  382. package/dist/src/services/datapackage/table.js.map +1 -0
  383. package/dist/src/services/extension-ctx.d.ts +1 -0
  384. package/dist/src/services/extension-ctx.d.ts.map +1 -1
  385. package/dist/src/services/extension-ctx.js +31 -6
  386. package/dist/src/services/extension-ctx.js.map +1 -1
  387. package/dist/src/services/extension-files.d.ts +20 -0
  388. package/dist/src/services/extension-files.d.ts.map +1 -1
  389. package/dist/src/services/extension-files.js +9 -2
  390. package/dist/src/services/extension-files.js.map +1 -1
  391. package/dist/src/services/extension-lifecycle.d.ts +3 -0
  392. package/dist/src/services/extension-lifecycle.d.ts.map +1 -1
  393. package/dist/src/services/extension-lifecycle.js +2 -26
  394. package/dist/src/services/extension-lifecycle.js.map +1 -1
  395. package/dist/src/services/extension-runtime.d.ts +28 -2
  396. package/dist/src/services/extension-runtime.d.ts.map +1 -1
  397. package/dist/src/services/extension-runtime.js +22 -0
  398. package/dist/src/services/extension-runtime.js.map +1 -1
  399. package/dist/src/services/extension-schedules.d.ts +90 -0
  400. package/dist/src/services/extension-schedules.d.ts.map +1 -0
  401. package/dist/src/services/extension-schedules.js +123 -0
  402. package/dist/src/services/extension-schedules.js.map +1 -0
  403. package/dist/src/services/extension-system-run.d.ts +91 -0
  404. package/dist/src/services/extension-system-run.d.ts.map +1 -0
  405. package/dist/src/services/extension-system-run.js +100 -0
  406. package/dist/src/services/extension-system-run.js.map +1 -0
  407. package/dist/src/services/extension-upsert.d.ts +2 -0
  408. package/dist/src/services/extension-upsert.d.ts.map +1 -1
  409. package/dist/src/services/extension-upsert.js +6 -24
  410. package/dist/src/services/extension-upsert.js.map +1 -1
  411. package/dist/src/services/goose-acp.d.ts +84 -0
  412. package/dist/src/services/goose-acp.d.ts.map +1 -0
  413. package/dist/src/services/goose-acp.js +304 -0
  414. package/dist/src/services/goose-acp.js.map +1 -0
  415. package/dist/src/services/markdown-negotiation.js +1 -1
  416. package/dist/src/services/markdown-negotiation.js.map +1 -1
  417. package/dist/src/services/openrouter.d.ts +43 -1
  418. package/dist/src/services/openrouter.d.ts.map +1 -1
  419. package/dist/src/services/openrouter.js +98 -1
  420. package/dist/src/services/openrouter.js.map +1 -1
  421. package/dist/src/services/prompt-defaults/tiers-core.js +4 -4
  422. package/dist/src/services/scheduler-extension-job.d.ts +29 -6
  423. package/dist/src/services/scheduler-extension-job.d.ts.map +1 -1
  424. package/dist/src/services/scheduler-extension-job.js +29 -75
  425. package/dist/src/services/scheduler-extension-job.js.map +1 -1
  426. package/dist/src/services/scope-vocabulary-migration.d.ts +34 -1
  427. package/dist/src/services/scope-vocabulary-migration.d.ts.map +1 -1
  428. package/dist/src/services/scope-vocabulary-migration.js +60 -0
  429. package/dist/src/services/scope-vocabulary-migration.js.map +1 -1
  430. package/dist/src/services/screenshot-capture.d.ts +40 -1
  431. package/dist/src/services/screenshot-capture.d.ts.map +1 -1
  432. package/dist/src/services/screenshot-capture.js +142 -60
  433. package/dist/src/services/screenshot-capture.js.map +1 -1
  434. package/dist/src/services/skill-bundle/generator.js +1 -1
  435. package/dist/src/services/skill-bundle/generic-adapter.js +1 -1
  436. package/dist/src/services/skill-bundle/hermes-adapter.js +1 -1
  437. package/dist/src/services/storage-file-write.d.ts +36 -1
  438. package/dist/src/services/storage-file-write.d.ts.map +1 -1
  439. package/dist/src/services/storage-file-write.js +49 -3
  440. package/dist/src/services/storage-file-write.js.map +1 -1
  441. package/dist/src/services/task-outcome.d.ts +53 -0
  442. package/dist/src/services/task-outcome.d.ts.map +1 -0
  443. package/dist/src/services/task-outcome.js +28 -0
  444. package/dist/src/services/task-outcome.js.map +1 -0
  445. package/dist/src/services/workflow/engine-human.d.ts +15 -0
  446. package/dist/src/services/workflow/engine-human.d.ts.map +1 -1
  447. package/dist/src/services/workflow/engine-human.js +10 -1
  448. package/dist/src/services/workflow/engine-human.js.map +1 -1
  449. package/dist/src/services/workflow/engine-steps.d.ts +48 -3
  450. package/dist/src/services/workflow/engine-steps.d.ts.map +1 -1
  451. package/dist/src/services/workflow/engine-steps.js +361 -0
  452. package/dist/src/services/workflow/engine-steps.js.map +1 -1
  453. package/dist/src/services/workflow/engine.d.ts +1 -0
  454. package/dist/src/services/workflow/engine.d.ts.map +1 -1
  455. package/dist/src/services/workflow/engine.js +2 -1
  456. package/dist/src/services/workflow/engine.js.map +1 -1
  457. package/dist/src/services/workflow/store.d.ts.map +1 -1
  458. package/dist/src/services/workflow/store.js +60 -4
  459. package/dist/src/services/workflow/store.js.map +1 -1
  460. package/dist/src/services/write-guards.d.ts +27 -1
  461. package/dist/src/services/write-guards.d.ts.map +1 -1
  462. package/dist/src/services/write-guards.js +39 -9
  463. package/dist/src/services/write-guards.js.map +1 -1
  464. package/dist/src/storage/providers/postgres-kysely/db-types.d.ts +1 -0
  465. package/dist/src/storage/providers/postgres-kysely/db-types.d.ts.map +1 -1
  466. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +1 -0
  467. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts.map +1 -1
  468. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js +3 -0
  469. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
  470. package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts +2 -0
  471. package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts.map +1 -1
  472. package/dist/src/storage/providers/postgres-kysely/methods/files.js +34 -2
  473. package/dist/src/storage/providers/postgres-kysely/methods/files.js.map +1 -1
  474. package/dist/src/storage/providers/postgres-kysely/methods/wallet.d.ts.map +1 -1
  475. package/dist/src/storage/providers/postgres-kysely/methods/wallet.js +23 -4
  476. package/dist/src/storage/providers/postgres-kysely/methods/wallet.js.map +1 -1
  477. package/dist/src/storage/providers/postgres-kysely/migrations/0039_storage_file_utf8_verified.sql +19 -0
  478. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  479. package/dist/src/storage/providers/sqlite/index.js +2 -1
  480. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  481. package/dist/src/storage/providers/sqlite/methods/apps.d.ts +1 -0
  482. package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
  483. package/dist/src/storage/providers/sqlite/methods/apps.js +33 -28
  484. package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
  485. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts +1 -12
  486. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
  487. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +28 -135
  488. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
  489. package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts +38 -0
  490. package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts.map +1 -0
  491. package/dist/src/storage/providers/sqlite/methods/storage-files.js +109 -0
  492. package/dist/src/storage/providers/sqlite/methods/storage-files.js.map +1 -0
  493. package/dist/src/storage/providers/sqlite/methods/work.d.ts +5 -0
  494. package/dist/src/storage/providers/sqlite/methods/work.d.ts.map +1 -1
  495. package/dist/src/storage/providers/sqlite/methods/work.js +34 -22
  496. package/dist/src/storage/providers/sqlite/methods/work.js.map +1 -1
  497. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  498. package/dist/src/storage/providers/sqlite/schema.js +134 -130
  499. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  500. package/dist/src/storage/repositories/app-grant.repository.d.ts +11 -0
  501. package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
  502. package/dist/src/storage/repositories/file.repository.d.ts +13 -0
  503. package/dist/src/storage/repositories/file.repository.d.ts.map +1 -1
  504. package/dist/src/storage/types/commerce.d.ts +6 -0
  505. package/dist/src/storage/types/commerce.d.ts.map +1 -1
  506. package/dist/src/utils/agent-footer.d.ts.map +1 -1
  507. package/dist/src/utils/agent-footer.js +1 -0
  508. package/dist/src/utils/agent-footer.js.map +1 -1
  509. package/dist/src/utils/app-content-type.d.ts +57 -3
  510. package/dist/src/utils/app-content-type.d.ts.map +1 -1
  511. package/dist/src/utils/app-content-type.js +81 -12
  512. package/dist/src/utils/app-content-type.js.map +1 -1
  513. package/dist/src/utils/env-config/sections-features.d.ts.map +1 -1
  514. package/dist/src/utils/env-config/sections-features.js +9 -3
  515. package/dist/src/utils/env-config/sections-features.js.map +1 -1
  516. package/dist/src/utils/file-download-headers.d.ts +5 -3
  517. package/dist/src/utils/file-download-headers.d.ts.map +1 -1
  518. package/dist/src/utils/file-download-headers.js +18 -5
  519. package/dist/src/utils/file-download-headers.js.map +1 -1
  520. package/dist/src/utils/http-range.d.ts +151 -0
  521. package/dist/src/utils/http-range.d.ts.map +1 -0
  522. package/dist/src/utils/http-range.js +190 -0
  523. package/dist/src/utils/http-range.js.map +1 -0
  524. package/dist/src/utils/page-head.d.ts +5 -0
  525. package/dist/src/utils/page-head.d.ts.map +1 -1
  526. package/dist/src/utils/page-head.js +10 -1
  527. package/dist/src/utils/page-head.js.map +1 -1
  528. package/dist/src/utils/reserved-keys.d.ts +4 -1
  529. package/dist/src/utils/reserved-keys.d.ts.map +1 -1
  530. package/dist/src/utils/reserved-keys.js +4 -1
  531. package/dist/src/utils/reserved-keys.js.map +1 -1
  532. package/dist/static/sdk-libs/datapackage/index.js +336 -0
  533. package/dist/static/sdk-libs/dist/aimeat-datapackage.js +305 -0
  534. package/package.json +10 -2
@@ -0,0 +1,304 @@
1
+ /**
2
+ * @file goose-acp.ts
3
+ * @description An ACP client for a goose agent, over stdio, that answers the agent's callbacks.
4
+ *
5
+ * The callbacks are why this is not thirty lines. ACP is bidirectional: the agent calls BACK
6
+ * mid-turn to ask permission for a tool call or to read a file, and a client that never answers
7
+ * leaves the turn hanging forever with no error and no output.
8
+ *
9
+ * STDIO, NOT HTTP, and that was measured rather than chosen for taste. `goose serve` exposes the
10
+ * same protocol over HTTP and its transport works for requests — initialize, session/new, even a
11
+ * clean -32601 for an unknown method — but it never delivers a single `session/update`
12
+ * notification, so a turn produces nothing and hangs. The identical prompt over `goose acp` on
13
+ * stdio answers in 5.2 s with agent_message_chunk and a stopReason. Measured on goose 1.45.0 and
14
+ * 1.46.0, with the model call visible on the provider's side in both cases.
15
+ *
16
+ * Stdio is also the better fit here: no port, no shared secret, no loopback surface to protect,
17
+ * and the lifetime of the agent is a plain child process.
18
+ * @structure
19
+ * - GooseAcpClient — start(), newSession(), prompt(), cancel(), close()
20
+ * - SessionUpdate — what a turn emits, normalised for the chat surface
21
+ * @usage
22
+ * const acp = await GooseAcpClient.start(config);
23
+ * const sessionId = await acp.newSession({ mcpServers: [aimeatMcpServer(base, token)] });
24
+ * for await (const u of acp.prompt(sessionId, 'build me a pong game')) { … }
25
+ * @version-history
26
+ * v2.0.1 — 2026-08-16 — Listen for the child's `error` event. A binary that cannot be spawned
27
+ * emits `error` rather than `exit`, and an unlistened `error` is thrown: one wrong character in
28
+ * an operator's path took the whole node down on the first person who said hello, and the turn
29
+ * waited out the 30 s handshake timeout first.
30
+ * v2.0.0 — 2026-08-16 — Stdio replaces HTTP. `goose serve` delivers no session/update over its
31
+ * HTTP transport, which makes every turn silent; `goose acp` on stdio delivers them and the
32
+ * same turn completes in seconds. The dispatch, the callback answers and the update
33
+ * normalisation are unchanged — only the pipe moved.
34
+ * v1.0.0 — 2026-08-16 — Initial, over `goose serve` HTTP.
35
+ */
36
+ import { spawn } from 'node:child_process';
37
+ import { EventEmitter } from 'node:events';
38
+ import { logger } from '../utils/logger.js';
39
+ /** How long one turn may run. Turns take minutes when an agent is building something. */
40
+ const TURN_TIMEOUT_MS = 15 * 60_000;
41
+ /** How long the handshake may take before the child is considered broken. */
42
+ const HANDSHAKE_TIMEOUT_MS = 30_000;
43
+ export class GooseAcpClient {
44
+ child;
45
+ nextId = 100;
46
+ pending = new Map();
47
+ bus = new EventEmitter();
48
+ buffer = '';
49
+ closed = false;
50
+ constructor(child) {
51
+ this.child = child;
52
+ // One listener per in-flight turn; the default of 10 is too few once a handful of people are
53
+ // talking at once, and the warning it prints is not a real leak.
54
+ this.bus.setMaxListeners(256);
55
+ child.stdout.setEncoding('utf8');
56
+ child.stdout.on('data', (chunk) => this.onData(chunk));
57
+ child.stderr.setEncoding('utf8');
58
+ child.stderr.on('data', (d) => {
59
+ const line = d.trim();
60
+ if (line)
61
+ logger.warn(`[goose] ${line.slice(0, 500)}`);
62
+ });
63
+ child.on('exit', (code, signal) => {
64
+ this.closed = true;
65
+ this.failAllPending(new Error(`goose exited (code ${code}, signal ${signal})`));
66
+ logger.warn(`[goose] agent process exited: code ${code}, signal ${signal}`);
67
+ });
68
+ // A child process that cannot be spawned at all — a path that names no binary — emits `error`
69
+ // rather than `exit`, and an `error` nobody listens for is thrown. Without this line one
70
+ // wrong character in the operator's configuration takes the whole node down on the first
71
+ // person who says hello, instead of failing that one turn with the reason.
72
+ child.on('error', (err) => {
73
+ this.closed = true;
74
+ this.failAllPending(new Error(`goose could not be started: ${err.message}`));
75
+ logger.warn(`[goose] agent process could not be started: ${err.message}`);
76
+ });
77
+ }
78
+ /**
79
+ * Start the agent and shake hands.
80
+ *
81
+ * Client capabilities are declared HONESTLY: no filesystem, no terminal. The node has neither to
82
+ * offer a hosted agent, and claiming otherwise then failing the callback is worse than saying no
83
+ * up front — the agent plans around what the client says it can do.
84
+ */
85
+ static async start(config) {
86
+ const bin = config.gooseBin || 'goose';
87
+ const env = { ...process.env };
88
+ if (config.goosePathRoot)
89
+ env.GOOSE_PATH_ROOT = config.goosePathRoot;
90
+ // Every model call this agent makes is billed to whoever owns this key. The node decides who
91
+ // may spend it before a turn is ever started; goose only sees the key.
92
+ if (config.gooseProviderApiKey)
93
+ env.OPENROUTER_API_KEY = config.gooseProviderApiKey;
94
+ const child = spawn(bin, ['acp'], { stdio: ['pipe', 'pipe', 'pipe'], env });
95
+ const client = new GooseAcpClient(child);
96
+ const info = await client.call('initialize', {
97
+ protocolVersion: 1,
98
+ clientCapabilities: { fs: { readTextFile: false, writeTextFile: false } },
99
+ }, HANDSHAKE_TIMEOUT_MS);
100
+ logger.info(`[goose] agent ready: ${info.agentInfo?.name ?? 'goose'} ${info.agentInfo?.version ?? ''}`);
101
+ return client;
102
+ }
103
+ /** Split the stream into lines; every line is one JSON-RPC message. */
104
+ onData(chunk) {
105
+ this.buffer += chunk;
106
+ let cut;
107
+ while ((cut = this.buffer.indexOf('\n')) !== -1) {
108
+ const line = this.buffer.slice(0, cut).trim();
109
+ this.buffer = this.buffer.slice(cut + 1);
110
+ if (!line)
111
+ continue;
112
+ try {
113
+ this.dispatch(JSON.parse(line));
114
+ }
115
+ catch {
116
+ // goose writes the occasional human line to stdout; it is not a protocol error.
117
+ logger.info(`[goose] ${line.slice(0, 300)}`);
118
+ }
119
+ }
120
+ }
121
+ /** A reply to us, a request FROM the agent that must be answered, or a notification. */
122
+ dispatch(msg) {
123
+ if (msg.id !== undefined && !msg.method) {
124
+ const waiter = this.pending.get(msg.id);
125
+ if (!waiter)
126
+ return;
127
+ this.pending.delete(msg.id);
128
+ if (msg.error) {
129
+ const detail = msg.error.data ? ` (${JSON.stringify(msg.error.data)})` : '';
130
+ waiter.reject(new Error(`${msg.error.code}: ${msg.error.message}${detail}`));
131
+ }
132
+ else {
133
+ waiter.resolve(msg.result);
134
+ }
135
+ return;
136
+ }
137
+ if (msg.method && msg.id !== undefined) {
138
+ this.answerAgentRequest(msg);
139
+ return;
140
+ }
141
+ if (msg.method === 'session/update') {
142
+ const params = msg.params;
143
+ if (params?.sessionId)
144
+ this.bus.emit(`update:${params.sessionId}`, params.update ?? {});
145
+ }
146
+ }
147
+ /**
148
+ * Answer the agent's callbacks.
149
+ *
150
+ * Permission is granted, because the node already decided what this session may do: the session's
151
+ * MCP token carries the owner's scopes and the tool surface refuses what it must. A second
152
+ * yes/no here would be a permission model in a place that cannot see the identity.
153
+ *
154
+ * Filesystem and terminal are refused, matching what start() declared.
155
+ */
156
+ answerAgentRequest(msg) {
157
+ const method = msg.method;
158
+ if (method === 'session/request_permission') {
159
+ const opts = msg.params?.options ?? [];
160
+ const allow = opts.find((o) => o.kind === 'allow_always')
161
+ ?? opts.find((o) => o.kind === 'allow_once')
162
+ ?? opts[0];
163
+ this.write({
164
+ jsonrpc: '2.0', id: msg.id,
165
+ result: { outcome: { outcome: 'selected', optionId: allow?.optionId ?? 'allow' } },
166
+ });
167
+ return;
168
+ }
169
+ this.write({
170
+ jsonrpc: '2.0', id: msg.id,
171
+ error: { code: -32601, message: 'This client has no filesystem or terminal.' },
172
+ });
173
+ }
174
+ write(msg) {
175
+ if (this.closed)
176
+ return;
177
+ this.child.stdin.write(`${JSON.stringify(msg)}\n`);
178
+ }
179
+ failAllPending(err) {
180
+ for (const [, waiter] of this.pending)
181
+ waiter.reject(err);
182
+ this.pending.clear();
183
+ }
184
+ call(method, params, timeoutMs = 60_000) {
185
+ if (this.closed)
186
+ return Promise.reject(new Error('goose agent is not running'));
187
+ const id = this.nextId++;
188
+ const done = new Promise((resolve, reject) => {
189
+ this.pending.set(id, { resolve, reject });
190
+ setTimeout(() => {
191
+ if (this.pending.delete(id))
192
+ reject(new Error(`goose ${method} timed out after ${timeoutMs}ms`));
193
+ }, timeoutMs).unref?.();
194
+ });
195
+ this.write({ jsonrpc: '2.0', id, method, params });
196
+ return done;
197
+ }
198
+ /** Start a session with its own MCP servers. `cwd` is required by the protocol and unused here. */
199
+ async newSession(opts) {
200
+ const result = await this.call('session/new', {
201
+ cwd: opts.cwd ?? process.cwd(),
202
+ mcpServers: opts.mcpServers,
203
+ });
204
+ // A session is created even when an MCP server failed to load, so the failure shows only in
205
+ // this list. Reading it is the difference between "the chat has its tools" and "the chat
206
+ // exists"; measured against a node that was down, where the session came back fine and empty.
207
+ for (const ext of result.extensionLoadResults ?? []) {
208
+ if (!ext.success)
209
+ logger.warn(`[goose] extension "${ext.name}" failed to load: ${ext.error ?? 'unknown'}`);
210
+ }
211
+ if (!result.sessionId)
212
+ throw new Error('goose session/new returned no sessionId');
213
+ return result.sessionId;
214
+ }
215
+ /** Run one turn, yielding what happens as it happens. */
216
+ async *prompt(sessionId, text) {
217
+ const queue = [];
218
+ let wake = null;
219
+ const push = (u) => { queue.push(u); wake?.(); wake = null; };
220
+ const onUpdate = (update) => push(normalise(update));
221
+ this.bus.on(`update:${sessionId}`, onUpdate);
222
+ void this.call('session/prompt', { sessionId, prompt: [{ type: 'text', text }] }, TURN_TIMEOUT_MS)
223
+ .then((r) => {
224
+ const res = r;
225
+ push({ kind: 'done', stopReason: String(res?.stopReason ?? 'end_turn'), tokens: res?.usage?.totalTokens });
226
+ })
227
+ .catch((e) => push({ kind: 'error', message: e.message }));
228
+ try {
229
+ for (;;) {
230
+ if (queue.length === 0)
231
+ await new Promise((resolve) => { wake = resolve; });
232
+ const next = queue.shift();
233
+ if (!next)
234
+ continue;
235
+ yield next;
236
+ if (next.kind === 'done' || next.kind === 'error')
237
+ break;
238
+ }
239
+ }
240
+ finally {
241
+ this.bus.off(`update:${sessionId}`, onUpdate);
242
+ }
243
+ }
244
+ /** Ask the agent to stop the current turn. */
245
+ async cancel(sessionId) {
246
+ await this.call('session/cancel', { sessionId }, 15_000).catch((e) => {
247
+ logger.warn(`[goose] cancel failed: ${e.message}`);
248
+ });
249
+ }
250
+ /** Stop the agent. SIGTERM first; a child that ignores it is killed after a grace period. */
251
+ close() {
252
+ if (this.closed)
253
+ return;
254
+ this.closed = true;
255
+ this.failAllPending(new Error('goose client closed'));
256
+ try {
257
+ this.child.kill('SIGTERM');
258
+ setTimeout(() => {
259
+ // eslint-disable-next-line aimeat/no-silent-catch -- the child is already gone, which is the outcome this line wanted
260
+ try {
261
+ this.child.kill('SIGKILL');
262
+ }
263
+ catch { /* exited on SIGTERM */ }
264
+ }, 5_000).unref?.();
265
+ }
266
+ catch (err) {
267
+ logger.warn(`[goose] could not stop the agent: ${String(err)}`);
268
+ }
269
+ }
270
+ }
271
+ /** Flatten one session/update into something the chat surface can render without knowing ACP. */
272
+ function normalise(update) {
273
+ const kind = String(update.sessionUpdate ?? 'unknown');
274
+ const content = update.content;
275
+ switch (kind) {
276
+ case 'agent_message_chunk':
277
+ return { kind: 'text', text: content?.text ?? '' };
278
+ case 'agent_thought_chunk':
279
+ return { kind: 'thought', text: content?.text ?? '' };
280
+ case 'tool_call':
281
+ case 'tool_call_update':
282
+ return {
283
+ kind: 'tool_call',
284
+ id: String(update.toolCallId ?? ''),
285
+ title: String(update.title ?? ''),
286
+ status: String(update.status ?? 'pending'),
287
+ raw: update,
288
+ };
289
+ default:
290
+ // usage_update, session_info_update, available_commands_update and whatever goose adds
291
+ // next. Kept rather than dropped: the chat shows spend and the work log from these.
292
+ return { kind: 'other', type: kind, raw: update };
293
+ }
294
+ }
295
+ /** The aimeat MCP server, as one session's tool surface, carrying that person's own agent token. */
296
+ export function aimeatMcpServer(baseUrl, agentToken) {
297
+ return {
298
+ name: 'aimeat',
299
+ type: 'http',
300
+ url: `${baseUrl.replace(/\/+$/, '')}/v1/mcp`,
301
+ headers: [{ name: 'Authorization', value: `Bearer ${agentToken}` }],
302
+ };
303
+ }
304
+ //# sourceMappingURL=goose-acp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goose-acp.js","sourceRoot":"","sources":["../../../src/services/goose-acp.ts"],"names":[],"mappings":"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"}
@@ -115,7 +115,7 @@ their AI agents, over REST and MCP.
115
115
  ## For AI agents
116
116
 
117
117
  - Machine-readable getting-started: \`GET ${b}/?format=json\`
118
- - Full agent manual: \`GET ${b}/llms.txt\`
118
+ - Full agent manual: \`GET ${b}/llms-full.txt\` (index: \`GET ${b}/llms.txt\`)
119
119
  - Register (RFC 8628 device flow, owner-approved): \`GET ${b}/auth.md\`
120
120
  - OpenAPI contract: \`GET ${b}/v1/spec\` · MCP server: \`POST ${b}/v1/mcp\`
121
121
  - Public skills index: \`GET ${b}/.well-known/agent-skills/index.json\`
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-negotiation.js","sourceRoot":"","sources":["../../../src/services/markdown-negotiation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-negotiation.js","sourceRoot":"","sources":["../../../src/services/markdown-negotiation.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,25 @@ export interface OpenRouterModel {
37
37
  /** What the model PRODUCES (`text`, `transcription`, `speech`, `image`). */
38
38
  output_modalities?: string[];
39
39
  }
40
+ /** What an image generation returns: the bytes, what they are, and what the provider charged. */
41
+ export interface ImageGenerationResult {
42
+ data: Buffer;
43
+ mime: string;
44
+ model: string;
45
+ /** Provider-reported cost in USD when it says; undefined otherwise, never estimated. */
46
+ costUsd?: number;
47
+ }
48
+ /**
49
+ * Generate an image, OpenAI-compatible (`POST {baseUrl}/images/generations`).
50
+ *
51
+ * The retry is not defensive padding. Some providers' moderation throws false positives on ordinary
52
+ * prompts and the SAME prompt passes on the next attempt, which scripts/gen_image.py has been
53
+ * working around since it was written. Only a moderation refusal is retried; every other failure is
54
+ * reported at once, because retrying a real error just makes the person wait longer for it.
55
+ */
56
+ export declare function generateImage(apiKey: string | undefined, model: string, prompt: string, baseUrl?: string, opts?: {
57
+ size?: string;
58
+ }): Promise<ImageGenerationResult>;
40
59
  /**
41
60
  * Which slice of a provider's catalogue to list.
42
61
  *
@@ -44,7 +63,7 @@ export interface OpenRouterModel {
44
63
  * OpenRouter's `output_modalities` filter — they are NOT in the default listing, so asking for the
45
64
  * default and filtering client-side returns nothing.
46
65
  */
47
- export type ModelModality = 'chat' | 'transcription' | 'speech';
66
+ export type ModelModality = 'chat' | 'transcription' | 'speech' | 'image';
48
67
  /** Audio bytes handed to transcribe(). `filename` only decides the multipart part name the provider
49
68
  * sees; `mime` is what actually tells it how to decode. */
50
69
  export interface TranscriptionAudio {
@@ -86,6 +105,13 @@ export type ProviderType = 'openrouter' | 'lmstudio' | 'custom';
86
105
  * the right home because it is the module that actually makes the request.
87
106
  */
88
107
  export declare const DEFAULT_BASE_URLS: Record<ProviderType, string>;
108
+ /** Auth + the OpenRouter-only attribution headers (which a non-OpenRouter endpoint has no use for). */
109
+ /**
110
+ * The headers every outbound call to the provider carries. Exported because the chat proxy sends the
111
+ * request itself rather than through complete(), and two places building these by hand is how the
112
+ * attribution headers end up on one door and not the other.
113
+ */
114
+ export declare function providerHeaders(apiKey: string | undefined, baseUrl: string): Record<string, string>;
89
115
  /**
90
116
  * Call an OpenAI-compatible chat completions API.
91
117
  */
@@ -109,6 +135,22 @@ export declare function complete(apiKey: string | undefined, model: string, prom
109
135
  * Content-Type is deliberately NOT set: fetch derives it from the FormData together with the
110
136
  * multipart boundary, and setting it by hand produces a body the provider cannot parse.
111
137
  */
138
+ /**
139
+ * Send a chat-completion request exactly as given, and hand back the provider's own response.
140
+ *
141
+ * `complete()` above builds the request and parses the answer, which is what a caller wanting a
142
+ * string needs. The chat proxy needs neither: it already has an OpenAI-shaped body from its caller
143
+ * and it forwards the provider's bytes untouched, streamed frames included. So this returns the raw
144
+ * `Response`.
145
+ *
146
+ * It lives here because this file is the node's only HTTP transport to a model provider, and that is
147
+ * enforced rather than agreed (`pnpm check:llm-transport`). A second place speaking to a provider is
148
+ * a second place that can forget to meter the call.
149
+ *
150
+ * Deciding whether the call may happen, whose key pays and what it cost is NOT this function's job —
151
+ * that is services/ai-completion.ts, and every caller of this goes through it first.
152
+ */
153
+ export declare function chatCompletionRaw(apiKey: string | undefined, baseUrl: string, body: Record<string, unknown>, signal?: AbortSignal): Promise<Response>;
112
154
  export declare function transcribe(apiKey: string | undefined, model: string, audio: TranscriptionAudio, baseUrl?: string, opts?: {
113
155
  language?: string;
114
156
  temperature?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/services/openrouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/services/openrouter.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,15 @@
6
6
  * - transcribe(apiKey, model, audio, baseUrl?, opts?) — call audio transcriptions (STT)
7
7
  * - listModels(apiKey, baseUrl?, modality?) — fetch available models
8
8
  * @version-history
9
+ * v3.1.0 — 2026-08-16 — chatCompletionRaw(): the request as given, the provider's response as it
10
+ * came. The chat proxy forwards both untouched, and this file is the node's only HTTP transport
11
+ * to a provider, which is a checked rule rather than a convention.
12
+ * v1.6.0 — 2026-08-16 — generateImage(): POST {baseUrl}/images/generations, and 'image' joins
13
+ * ModelModality so the picker can list image models the same way it lists whisper ones. The
14
+ * three-attempt retry is not padding: some providers' moderation throws false positives and the
15
+ * SAME prompt passes on the next attempt, which scripts/gen_image.py has worked around since it
16
+ * was written. Only moderation is retried; every other failure is reported at once, because
17
+ * retrying a real error only makes the person wait longer for it.
9
18
  * v1.5.0 — 2026-08-01 — Speech-to-text: transcribe() posts multipart/form-data to
10
19
  * `${baseUrl}/audio/transcriptions` (OpenAI-compatible, so it also reaches a local whisper.cpp /
11
20
  * faster-whisper server), and listModels() takes a modality. The modality is not cosmetic:
@@ -30,6 +39,66 @@
30
39
  * dropdown for custom providers). `owned_by` is carried into `description` when present.
31
40
  */
32
41
  import { logger } from '../utils/logger.js';
42
+ /** How many times a moderation refusal is retried before the model is given up on. */
43
+ const IMAGE_MODERATION_ATTEMPTS = 3;
44
+ /**
45
+ * Generate an image, OpenAI-compatible (`POST {baseUrl}/images/generations`).
46
+ *
47
+ * The retry is not defensive padding. Some providers' moderation throws false positives on ordinary
48
+ * prompts and the SAME prompt passes on the next attempt, which scripts/gen_image.py has been
49
+ * working around since it was written. Only a moderation refusal is retried; every other failure is
50
+ * reported at once, because retrying a real error just makes the person wait longer for it.
51
+ */
52
+ export async function generateImage(apiKey, model, prompt, baseUrl = OPENROUTER_BASE, opts) {
53
+ const controller = new AbortController();
54
+ const timeout = setTimeout(() => controller.abort(), TIMEOUT_MS);
55
+ logger.info(`[openrouter] image: model=${model}, size=${opts?.size ?? 'default'}`);
56
+ try {
57
+ let lastErr = null;
58
+ for (let attempt = 1; attempt <= IMAGE_MODERATION_ATTEMPTS; attempt++) {
59
+ const resp = await fetch(`${baseUrl}/images/generations`, {
60
+ method: 'POST',
61
+ headers: { ...providerHeaders(apiKey, baseUrl), 'Content-Type': 'application/json' },
62
+ body: JSON.stringify({ model, prompt, ...(opts?.size ? { size: opts.size } : {}), usage: { include: true } }),
63
+ signal: controller.signal,
64
+ });
65
+ if (!resp.ok) {
66
+ // eslint-disable-next-line aimeat/no-silent-catch -- the body only enriches an error already being reported; an unreadable body is honestly reported as empty
67
+ const body = await resp.text().catch(() => '');
68
+ const err = new Error(`OpenRouter ${resp.status}: ${body}`);
69
+ err.status = resp.status;
70
+ if (!/moderat/i.test(body) || attempt === IMAGE_MODERATION_ATTEMPTS)
71
+ throw err;
72
+ lastErr = err;
73
+ logger.info(`[openrouter] image: moderation refusal on attempt ${attempt}, retrying`);
74
+ continue;
75
+ }
76
+ const json = await resp.json();
77
+ if (json.error?.message)
78
+ throw new Error(`OpenRouter: ${json.error.message}`);
79
+ const first = json.data?.[0];
80
+ // Providers answer with either a base64 field or a data: URL carrying the same bytes.
81
+ const b64 = first?.b64_json
82
+ ?? (first?.url?.startsWith('data:') ? first.url.split('base64,', 2)[1] : undefined);
83
+ if (!b64)
84
+ throw new Error('OpenRouter returned no image data.');
85
+ const data = Buffer.from(b64, 'base64');
86
+ // Sniff rather than trust: the response does not say which format came back, and a wrong
87
+ // Content-Type on the stored file is what makes an image fail to render later.
88
+ const isPng = data.length > 8 && data[0] === 0x89 && data[1] === 0x50 && data[2] === 0x4e && data[3] === 0x47;
89
+ return {
90
+ data,
91
+ mime: isPng ? 'image/png' : 'image/jpeg',
92
+ model,
93
+ costUsd: typeof json.usage?.cost === 'number' ? json.usage.cost : undefined,
94
+ };
95
+ }
96
+ throw lastErr ?? new Error('OpenRouter: image generation failed.');
97
+ }
98
+ finally {
99
+ clearTimeout(timeout);
100
+ }
101
+ }
33
102
  /**
34
103
  * Where each provider lives when the owner has not overridden it.
35
104
  *
@@ -49,7 +118,12 @@ const TIMEOUT_MS = 1_800_000; // 30 minutes
49
118
  * A 30-minute ceiling here would only keep a dead socket open. */
50
119
  const STT_TIMEOUT_MS = 120_000;
51
120
  /** Auth + the OpenRouter-only attribution headers (which a non-OpenRouter endpoint has no use for). */
52
- function providerHeaders(apiKey, baseUrl) {
121
+ /**
122
+ * The headers every outbound call to the provider carries. Exported because the chat proxy sends the
123
+ * request itself rather than through complete(), and two places building these by hand is how the
124
+ * attribution headers end up on one door and not the other.
125
+ */
126
+ export function providerHeaders(apiKey, baseUrl) {
53
127
  const headers = {};
54
128
  if (apiKey)
55
129
  headers['Authorization'] = `Bearer ${apiKey}`;
@@ -146,6 +220,29 @@ export async function complete(apiKey, model, prompt, systemPrompt, baseUrl = OP
146
220
  * Content-Type is deliberately NOT set: fetch derives it from the FormData together with the
147
221
  * multipart boundary, and setting it by hand produces a body the provider cannot parse.
148
222
  */
223
+ /**
224
+ * Send a chat-completion request exactly as given, and hand back the provider's own response.
225
+ *
226
+ * `complete()` above builds the request and parses the answer, which is what a caller wanting a
227
+ * string needs. The chat proxy needs neither: it already has an OpenAI-shaped body from its caller
228
+ * and it forwards the provider's bytes untouched, streamed frames included. So this returns the raw
229
+ * `Response`.
230
+ *
231
+ * It lives here because this file is the node's only HTTP transport to a model provider, and that is
232
+ * enforced rather than agreed (`pnpm check:llm-transport`). A second place speaking to a provider is
233
+ * a second place that can forget to meter the call.
234
+ *
235
+ * Deciding whether the call may happen, whose key pays and what it cost is NOT this function's job —
236
+ * that is services/ai-completion.ts, and every caller of this goes through it first.
237
+ */
238
+ export async function chatCompletionRaw(apiKey, baseUrl, body, signal) {
239
+ return fetch(`${baseUrl}/chat/completions`, {
240
+ method: 'POST',
241
+ headers: { 'Content-Type': 'application/json', ...providerHeaders(apiKey, baseUrl) },
242
+ body: JSON.stringify(body),
243
+ signal,
244
+ });
245
+ }
149
246
  export async function transcribe(apiKey, model, audio, baseUrl = OPENROUTER_BASE, opts) {
150
247
  const form = new FormData();
151
248
  form.append('file', new Blob([new Uint8Array(audio.data)], { type: audio.mime }), audio.filename);
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../src/services/openrouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../src/services/openrouter.ts"],"names":[],"mappings":"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"}