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
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../../src/routes/instances/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../../src/routes/instances/install.ts"],"names":[],"mappings":"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"}
@@ -163,7 +163,7 @@ import { buildLibsCatalogue } from '../data/library-packs.js';
163
163
  const SDK_LIB_NAMES = [
164
164
  'speech', 'data', 'wallet', 'ai', 'capabilities', 'agents', 'agentface', 'intake', 'organism',
165
165
  'workflows', 'header', 'editor', 'live', 'storage', 'social', 'work', 'commerce', 'exchange',
166
- 'webmcp', 'markdown', 'audio', 'tunnel', 'game', 'iam', 'connect',
166
+ 'webmcp', 'markdown', 'audio', 'tunnel', 'game', 'iam', 'connect', 'datapackage',
167
167
  ];
168
168
  function sendJavascriptLibrary(res, source) {
169
169
  res.set('Cache-Control', 'no-store');
@@ -1 +1 @@
1
- {"version":3,"file":"libs.js","sourceRoot":"","sources":["../../../src/routes/libs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs.js","sourceRoot":"","sources":["../../../src/routes/libs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @file src/routes/llm-proxy.ts
3
+ * @description An OpenAI-compatible door in front of the node's own AI decisions, so an agent that
4
+ * speaks that dialect spends money under the same rules as everything else here.
5
+ *
6
+ * WHY THIS EXISTS. The built-in chat runs on goose, and goose talks to a model provider directly.
7
+ * Its provider key is process-wide, so every person's turn would arrive on the node's key with
8
+ * nothing between them and it: no allowance, no daily budget, no per-app quota, no usage record,
9
+ * no free-model fallback when the allowance runs out. This route is that something. Point the
10
+ * agent's provider at it and every turn goes through the same gate `/v1/ai/complete` goes through.
11
+ *
12
+ * IT DECIDES NOTHING ITSELF. Which pocket pays, which model answers, whether the allowance is
13
+ * spent and a free model has to answer instead of a refusal: `prepareAiCall` decides all of it,
14
+ * and `settleAiCall` records what happened. This file translates between OpenAI's request shape
15
+ * and those two, and moves bytes. A second copy of the key choice or the budget test is exactly
16
+ * the defect this is built to prevent.
17
+ *
18
+ * THE MODEL IS THE NODE'S CHOICE, NOT THE CALLER'S. A caller naming a model is asking the node to
19
+ * spend on it, and the node is the one that knows whose money this is and how much is left. The
20
+ * owner's own preference decides, then the node's default for the role — the same order every
21
+ * other AI surface uses — and the answer says which model actually ran. Honouring the caller's
22
+ * name instead would also disable the free-model fallback, because an explicit model is
23
+ * deliberately left alone by `prepareAiCall`.
24
+ * @structure
25
+ * - llmProxyRouter(config, storage) — POST /v1/llm/chat/completions, GET /v1/llm/models
26
+ * @usage mounted in server-bootstrap/routes-loader.ts; an agent uses <node>/v1/llm as its base URL
27
+ * @version-history
28
+ * v1.0.0 — 2026-08-16 — Initial.
29
+ */
30
+ import { Router } from 'express';
31
+ import type { AimeatConfig } from '../config.js';
32
+ import type { Storage } from '../storage/interface.js';
33
+ export declare function llmProxyRouter(config: AimeatConfig, storage: Storage): Router;
34
+ //# sourceMappingURL=llm-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-proxy.d.ts","sourceRoot":"","sources":["../../../src/routes/llm-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AA2BvD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAuH7E"}
@@ -0,0 +1,258 @@
1
+ /**
2
+ * @file src/routes/llm-proxy.ts
3
+ * @description An OpenAI-compatible door in front of the node's own AI decisions, so an agent that
4
+ * speaks that dialect spends money under the same rules as everything else here.
5
+ *
6
+ * WHY THIS EXISTS. The built-in chat runs on goose, and goose talks to a model provider directly.
7
+ * Its provider key is process-wide, so every person's turn would arrive on the node's key with
8
+ * nothing between them and it: no allowance, no daily budget, no per-app quota, no usage record,
9
+ * no free-model fallback when the allowance runs out. This route is that something. Point the
10
+ * agent's provider at it and every turn goes through the same gate `/v1/ai/complete` goes through.
11
+ *
12
+ * IT DECIDES NOTHING ITSELF. Which pocket pays, which model answers, whether the allowance is
13
+ * spent and a free model has to answer instead of a refusal: `prepareAiCall` decides all of it,
14
+ * and `settleAiCall` records what happened. This file translates between OpenAI's request shape
15
+ * and those two, and moves bytes. A second copy of the key choice or the budget test is exactly
16
+ * the defect this is built to prevent.
17
+ *
18
+ * THE MODEL IS THE NODE'S CHOICE, NOT THE CALLER'S. A caller naming a model is asking the node to
19
+ * spend on it, and the node is the one that knows whose money this is and how much is left. The
20
+ * owner's own preference decides, then the node's default for the role — the same order every
21
+ * other AI surface uses — and the answer says which model actually ran. Honouring the caller's
22
+ * name instead would also disable the free-model fallback, because an explicit model is
23
+ * deliberately left alone by `prepareAiCall`.
24
+ * @structure
25
+ * - llmProxyRouter(config, storage) — POST /v1/llm/chat/completions, GET /v1/llm/models
26
+ * @usage mounted in server-bootstrap/routes-loader.ts; an agent uses <node>/v1/llm as its base URL
27
+ * @version-history
28
+ * v1.0.0 — 2026-08-16 — Initial.
29
+ */
30
+ import { Router } from 'express';
31
+ import { requireAuth, requireScope } from '../auth/middleware.js';
32
+ import { rateLimit } from '../middleware/rate-limit.js';
33
+ import { assertAiUseAllowed } from '../auth/ai-gate.js';
34
+ import { error } from '../middleware/envelope.js';
35
+ import { resolveIdentity } from '../utils/gaii.js';
36
+ import { prepareAiCall, settleAiCall, estimateCostUsd, AiCompletionError, } from '../services/ai-completion.js';
37
+ import { chatCompletionRaw, listModels } from '../services/openrouter.js';
38
+ import { logger } from '../utils/logger.js';
39
+ /** A turn can take minutes when the model is reasoning; the default socket timeout is not enough. */
40
+ const TURN_TIMEOUT_MS = 10 * 60_000;
41
+ export function llmProxyRouter(config, storage) {
42
+ const router = Router();
43
+ // The same ceiling the other AI doors run under. A proxy without one is the cheapest way to
44
+ // spend an operator's money, and it reads the same operator setting as /v1/ai/complete.
45
+ const aiRateLimit = rateLimit(config.rateLimits.openrouter);
46
+ /**
47
+ * GET /v1/llm/models — the models this node will actually run.
48
+ *
49
+ * An OpenAI-shaped client asks this before it asks for anything else. The list comes from the
50
+ * provider through the same service the model pickers use, so a model that appears here is one
51
+ * the node can genuinely reach.
52
+ */
53
+ router.get('/v1/llm/models', requireAuth(), requireScope('ai:use'), aiRateLimit, async (req, res) => {
54
+ if (!assertAiUseAllowed(req, res, config.nodeId))
55
+ return;
56
+ const gaii = resolveIdentity(req.auth, config.nodeId);
57
+ try {
58
+ const plan = await prepareAiCall(storage, config, gaii, { appId: 'llm-proxy' });
59
+ const models = await listModels(plan.key, plan.baseUrl, 'chat');
60
+ // OpenAI's shape, because that is what a client asking this URL parses.
61
+ res.json({
62
+ object: 'list',
63
+ data: models.map((m) => ({ id: m.id, object: 'model', owned_by: plan.provider })),
64
+ });
65
+ }
66
+ catch (err) {
67
+ sendError(res, config.nodeId, err);
68
+ }
69
+ });
70
+ /**
71
+ * POST /v1/llm/chat/completions — one completion, streamed or whole.
72
+ *
73
+ * `requireScope('ai:use')` sits in the middleware chain and `assertAiUseAllowed` runs in the
74
+ * handler, and they are not redundant: owner sessions bypass scopes entirely, so the middleware
75
+ * alone would let a mirrored agent token through, and the in-handler test alone is invisible to
76
+ * the route-authorization gate. Together they admit exactly one set of callers.
77
+ *
78
+ * The gate runs before the provider is touched and the accounting runs after it answers, which
79
+ * is the order that matters: a call that was refused must never have been paid for, and a call
80
+ * that was paid for must never go unrecorded.
81
+ */
82
+ router.post('/v1/llm/chat/completions', requireAuth(), requireScope('ai:use'), aiRateLimit, async (req, res) => {
83
+ if (!assertAiUseAllowed(req, res, config.nodeId))
84
+ return;
85
+ const gaii = resolveIdentity(req.auth, config.nodeId);
86
+ const body = (req.body ?? {});
87
+ if (!Array.isArray(body.messages) || body.messages.length === 0) {
88
+ res.status(400).json(error(config.nodeId, 'INVALID_BODY', 'messages is required.'));
89
+ return;
90
+ }
91
+ let plan;
92
+ try {
93
+ // `model` is deliberately not passed through: see the file header. The node decides.
94
+ plan = await prepareAiCall(storage, config, gaii, { appId: 'llm-proxy' });
95
+ }
96
+ catch (err) {
97
+ sendError(res, config.nodeId, err);
98
+ return;
99
+ }
100
+ const upstream = {
101
+ model: plan.model,
102
+ messages: body.messages,
103
+ ...(body.temperature !== undefined ? { temperature: body.temperature } : {}),
104
+ ...(body.top_p !== undefined ? { top_p: body.top_p } : {}),
105
+ ...(body.max_tokens !== undefined ? { max_tokens: body.max_tokens } : {}),
106
+ // Tool calling is the whole point for an agent: passed through untouched, because the
107
+ // node has no opinion about which tools a caller offers its own model.
108
+ ...(body.tools !== undefined ? { tools: body.tools } : {}),
109
+ ...(body.tool_choice !== undefined ? { tool_choice: body.tool_choice } : {}),
110
+ ...(body.response_format !== undefined ? { response_format: body.response_format } : {}),
111
+ ...(body.stream ? { stream: true, stream_options: { include_usage: true } } : {}),
112
+ };
113
+ req.setTimeout(TURN_TIMEOUT_MS);
114
+ res.setTimeout(TURN_TIMEOUT_MS);
115
+ const controller = new AbortController();
116
+ req.on('close', () => controller.abort());
117
+ let provider;
118
+ try {
119
+ // Through the openrouter service, never straight out of this file. That file is the
120
+ // node's only HTTP transport to a model provider, checked by `pnpm check:llm-transport`,
121
+ // and a second place speaking to a provider is a second place that can forget to meter.
122
+ provider = await chatCompletionRaw(plan.key, plan.baseUrl, upstream, controller.signal);
123
+ }
124
+ catch (err) {
125
+ sendError(res, config.nodeId, new AiCompletionError('PROVIDER_ERROR', 502, err.message));
126
+ return;
127
+ }
128
+ if (!provider.ok) {
129
+ // eslint-disable-next-line aimeat/no-silent-catch -- the body only enriches an error already being reported; an unreadable one is honestly reported as empty
130
+ const detail = await provider.text().catch(() => '');
131
+ sendError(res, config.nodeId, providerFailure(provider.status, detail));
132
+ return;
133
+ }
134
+ try {
135
+ const outcome = body.stream
136
+ ? await pipeStream(provider, res, plan)
137
+ : await passWhole(provider, res, plan);
138
+ await settleAiCall(storage, config, gaii, plan, {
139
+ ...outcome, appId: 'llm-proxy', source: 'llm-proxy',
140
+ });
141
+ }
142
+ catch (err) {
143
+ // The provider may already have written half an answer, so there is nothing to send but
144
+ // the log line. Never swallowed: an operator seeing this knows a turn was spent and not
145
+ // recorded, which is the one bookkeeping failure that matters.
146
+ logger.warn(`[llm-proxy] ${gaii}: ${err.message}`);
147
+ if (!res.headersSent)
148
+ sendError(res, config.nodeId, err);
149
+ else
150
+ res.end();
151
+ }
152
+ });
153
+ return router;
154
+ }
155
+ /** A provider status turned into the node's own vocabulary, so a caller sees a named cause. */
156
+ function providerFailure(status, detail) {
157
+ const short = detail.slice(0, 300);
158
+ if (status === 401 || status === 403) {
159
+ return new AiCompletionError('INVALID_API_KEY', 401, `The provider rejected the key. ${short}`);
160
+ }
161
+ if (status === 429) {
162
+ // The one a free model hits first: the free tier's request ceiling depends on what the
163
+ // account has bought, so this is a quota answer and not a fault in the request.
164
+ return new AiCompletionError('RATE_LIMITED', 429, `The model is rate limited right now. Free models hit this first. ${short}`);
165
+ }
166
+ if (status === 502 || status === 503) {
167
+ return new AiCompletionError('PROVIDER_ERROR', 502, `The model is overloaded or unavailable. ${short}`);
168
+ }
169
+ return new AiCompletionError('PROVIDER_ERROR', 502, `The provider answered ${status}. ${short}`);
170
+ }
171
+ /** Send whatever went wrong in the node's envelope, with its own code. */
172
+ function sendError(res, nodeId, err) {
173
+ const e = err;
174
+ const status = typeof e?.status === 'number' ? e.status : 500;
175
+ const code = typeof e?.code === 'string' ? e.code : 'INTERNAL_ERROR';
176
+ res.status(status).json(error(nodeId, code, e?.message || 'The completion failed.'));
177
+ }
178
+ /** Whole-response: hand it on unchanged, and read the accounting out of it. */
179
+ async function passWhole(provider, res, plan) {
180
+ const json = await provider.json();
181
+ res.json(json);
182
+ return readUsage(json.model ?? plan.model, json.choices?.[0]?.message?.content ?? '', json.usage);
183
+ }
184
+ /**
185
+ * Streamed: the provider's own frames, byte for byte, while the text and the usage are read out of
186
+ * them on the way past.
187
+ *
188
+ * The frames are not rewritten. A client that understands OpenAI's stream understands this one, and
189
+ * anything the node invented in the middle would be a second dialect to keep in step.
190
+ */
191
+ async function pipeStream(provider, res, plan) {
192
+ res.writeHead(200, {
193
+ 'Content-Type': 'text/event-stream',
194
+ 'Cache-Control': 'no-cache',
195
+ 'Connection': 'keep-alive',
196
+ 'X-Accel-Buffering': 'no',
197
+ });
198
+ const reader = provider.body?.getReader();
199
+ if (!reader)
200
+ throw new AiCompletionError('PROVIDER_ERROR', 502, 'The provider sent no body.');
201
+ const decoder = new TextDecoder();
202
+ let buffer = '';
203
+ let content = '';
204
+ let model = plan.model;
205
+ let usage;
206
+ for (;;) {
207
+ const { done, value } = await reader.read();
208
+ if (done)
209
+ break;
210
+ const chunk = decoder.decode(value, { stream: true });
211
+ res.write(chunk);
212
+ res.flush?.();
213
+ buffer += chunk;
214
+ let cut;
215
+ while ((cut = buffer.indexOf('\n\n')) !== -1) {
216
+ const frame = buffer.slice(0, cut);
217
+ buffer = buffer.slice(cut + 2);
218
+ for (const line of frame.split('\n')) {
219
+ if (!line.startsWith('data:'))
220
+ continue;
221
+ const payload = line.slice(5).trim();
222
+ if (!payload || payload === '[DONE]')
223
+ continue;
224
+ let parsed;
225
+ try {
226
+ parsed = JSON.parse(payload);
227
+ }
228
+ catch (err) {
229
+ // The frame was already forwarded verbatim above, so the client is unaffected;
230
+ // only the node's own reading of it failed, and only the accounting depends on
231
+ // that. Said out loud rather than dropped.
232
+ logger.warn(`[llm-proxy] unreadable frame: ${err.message}`);
233
+ continue;
234
+ }
235
+ if (parsed.model)
236
+ model = parsed.model;
237
+ const delta = parsed.choices?.[0]?.delta?.content;
238
+ if (typeof delta === 'string')
239
+ content += delta;
240
+ // OpenRouter puts the totals in the last frame when include_usage is set, which is
241
+ // why it is set: without it the node would have to guess what the turn cost.
242
+ if (parsed.usage)
243
+ usage = parsed.usage;
244
+ }
245
+ }
246
+ }
247
+ res.end();
248
+ return readUsage(model, content, usage);
249
+ }
250
+ /** Tokens and cost, with the same estimate the rest of the node falls back to. */
251
+ function readUsage(model, content, usage) {
252
+ const promptTokens = usage?.prompt_tokens ?? 0;
253
+ const completionTokens = usage?.completion_tokens ?? 0;
254
+ const totalTokens = usage?.total_tokens ?? (promptTokens + completionTokens);
255
+ const costUsd = typeof usage?.cost === 'number' ? usage.cost : estimateCostUsd(promptTokens, completionTokens);
256
+ return { model, content, promptTokens, completionTokens, totalTokens, costUsd };
257
+ }
258
+ //# sourceMappingURL=llm-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-proxy.js","sourceRoot":"","sources":["../../../src/routes/llm-proxy.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,7 @@ ${sub(page.markdown ?? page.description)}
56
56
  ## Sitemap
57
57
 
58
58
  ${siteMap}
59
- - [Full manual](${b}/llms.txt) · [Glossary](${b}/v1/glossary.md) · [API contract](${b}/v1/spec)
59
+ - [Full manual](${b}/llms-full.txt) · [Glossary](${b}/v1/glossary.md) · [API contract](${b}/v1/spec)
60
60
  - [AI transparency](${b}/v1/ai-transparency.md) — how this node marks content a model wrote
61
61
  `;
62
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-mirrors.js","sourceRoot":"","sources":["../../../src/routes/markdown-mirrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,2FAA2F;AAC3F,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB,EAAE,MAAoB;IACvE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,YAAY,EAAE;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;SAC3C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;SACA,IAAI,CAAC,KAAK;eACJ,IAAI,CAAC,WAAW;OACxB,CAAC,GAAG,IAAI,CAAC,IAAI;QACZ,MAAM,CAAC,MAAM;;;IAGjB,IAAI,CAAC,KAAK;;EAEZ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC;;;;EAItC,OAAO;kBACS,CAAC,2BAA2B,CAAC,qCAAqC,CAAC;sBAC/D,CAAC;CACtB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,EAAE,CAAC;QACnC,4FAA4F;QAC5F,0FAA0F;QAC1F,8EAA8E;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACxC,uFAAuF;YACvF,mEAAmE;YACnE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,oBAAoB,CAAC,CAAC;YACvF,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAC5C,YAAY,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"markdown-mirrors.js","sourceRoot":"","sources":["../../../src/routes/markdown-mirrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,2FAA2F;AAC3F,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB,EAAE,MAAoB;IACvE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,YAAY,EAAE;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;SAC3C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;SACA,IAAI,CAAC,KAAK;eACJ,IAAI,CAAC,WAAW;OACxB,CAAC,GAAG,IAAI,CAAC,IAAI;QACZ,MAAM,CAAC,MAAM;;;IAGjB,IAAI,CAAC,KAAK;;EAEZ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC;;;;EAItC,OAAO;kBACS,CAAC,gCAAgC,CAAC,qCAAqC,CAAC;sBACpE,CAAC;CACtB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,EAAE,CAAC;QACnC,4FAA4F;QAC5F,0FAA0F;QAC1F,8EAA8E;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACxC,uFAAuF;YACvF,mEAAmE;YACnE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,oBAAoB,CAAC,CAAC;YACvF,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAC5C,YAAY,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @file src/routes/odata.ts
3
+ * @description The OData v4 feed for a data package — the surface Excel, Power BI and Tableau
4
+ * connect to natively and then REFRESH BY THEMSELVES.
5
+ *
6
+ * WHY THIS IS A CORE ROUTE. It was measured before it was written: an extension cannot serve this.
7
+ * The whole extension HTTP surface is two POST routes behind requireAuth, the sandbox is handed
8
+ * `req.body` and never the query string, and the answer is wrapped in the node's success envelope.
9
+ * OData needs GET, needs `$filter` and friends off the query string, needs XML for `$metadata` and
10
+ * needs an unwrapped JSON body with `@odata.context`. Four of those are impossible there, so the
11
+ * feed lives here — and this file stays a projection: the CSDL and the query language are
12
+ * services/datapackage/odata.ts, the bytes are the same ones the CSV address serves.
13
+ *
14
+ * IT IS AS OPEN AS THE BYTES IT SERVES, AND NO MORE. A published package's CSV is world-readable
15
+ * at a permanent address, so a feed over the same rows is world-readable too. Putting a token in
16
+ * front of the feed while the CSV stays public would be theatre, not a control.
17
+ *
18
+ * NOT METERED, AND SAYING SO. The design note for this target wants each feed request to be a
19
+ * billable event, and that is genuinely attractive — a downloaded file escapes measurement the
20
+ * moment it lands, and a feed does not. But metering needs an authenticated caller and an
21
+ * entitlement coordinate, which is a different door from this one, and a half-built meter that
22
+ * counted anonymous reads as free would misreport rather than under-report. So: no meter here, and
23
+ * the paid feed is a separate authenticated surface when it is built.
24
+ * @structure
25
+ * - GET /v1/odata/:owner/:name the service document
26
+ * - GET /v1/odata/:owner/:name/$metadata CSDL XML
27
+ * - GET /v1/odata/:owner/:name/:resource the entity set
28
+ * @usage app.use(odataRouter(config, storage))
29
+ * @version-history
30
+ * v1.0.0 -- 2026-08-15 -- Initial (TARGET-063 vaihe 1, the OData surface).
31
+ */
32
+ import { Router } from 'express';
33
+ import type { AimeatConfig } from '../config.js';
34
+ import type { Storage } from '../storage/interface.js';
35
+ export declare function odataRouter(config: AimeatConfig, storage: Storage): Router;
36
+ //# sourceMappingURL=odata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odata.d.ts","sourceRoot":"","sources":["../../../src/routes/odata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAuBvD,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAwF1E"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * @file src/routes/odata.ts
3
+ * @description The OData v4 feed for a data package — the surface Excel, Power BI and Tableau
4
+ * connect to natively and then REFRESH BY THEMSELVES.
5
+ *
6
+ * WHY THIS IS A CORE ROUTE. It was measured before it was written: an extension cannot serve this.
7
+ * The whole extension HTTP surface is two POST routes behind requireAuth, the sandbox is handed
8
+ * `req.body` and never the query string, and the answer is wrapped in the node's success envelope.
9
+ * OData needs GET, needs `$filter` and friends off the query string, needs XML for `$metadata` and
10
+ * needs an unwrapped JSON body with `@odata.context`. Four of those are impossible there, so the
11
+ * feed lives here — and this file stays a projection: the CSDL and the query language are
12
+ * services/datapackage/odata.ts, the bytes are the same ones the CSV address serves.
13
+ *
14
+ * IT IS AS OPEN AS THE BYTES IT SERVES, AND NO MORE. A published package's CSV is world-readable
15
+ * at a permanent address, so a feed over the same rows is world-readable too. Putting a token in
16
+ * front of the feed while the CSV stays public would be theatre, not a control.
17
+ *
18
+ * NOT METERED, AND SAYING SO. The design note for this target wants each feed request to be a
19
+ * billable event, and that is genuinely attractive — a downloaded file escapes measurement the
20
+ * moment it lands, and a feed does not. But metering needs an authenticated caller and an
21
+ * entitlement coordinate, which is a different door from this one, and a half-built meter that
22
+ * counted anonymous reads as free would misreport rather than under-report. So: no meter here, and
23
+ * the paid feed is a separate authenticated surface when it is built.
24
+ * @structure
25
+ * - GET /v1/odata/:owner/:name the service document
26
+ * - GET /v1/odata/:owner/:name/$metadata CSDL XML
27
+ * - GET /v1/odata/:owner/:name/:resource the entity set
28
+ * @usage app.use(odataRouter(config, storage))
29
+ * @version-history
30
+ * v1.0.0 -- 2026-08-15 -- Initial (TARGET-063 vaihe 1, the OData surface).
31
+ */
32
+ import { Router } from 'express';
33
+ import { openPackage, readRows } from '../services/datapackage/store.js';
34
+ import { toCsdl, parseQuery, applyQuery, edmName, ODATA_SUPPORTED } from '../services/datapackage/odata.js';
35
+ /**
36
+ * OData errors have their own shape, and a client renders it. The node envelope would be a body this
37
+ * connector does not read, so a genuine refusal would surface in Excel as "something went wrong".
38
+ */
39
+ function odataError(res, status, code, message) {
40
+ res.status(status)
41
+ .type('application/json;odata.metadata=minimal')
42
+ .send(JSON.stringify({ error: { code, message } }, null, 2));
43
+ }
44
+ /** Every OData response says which version it is, and none of them may be cached as a document: the
45
+ * feed follows `latest` unless a version is pinned, and a stale answer is a wrong report. */
46
+ function odataHeaders(res, pinned) {
47
+ res.setHeader('OData-Version', '4.0');
48
+ res.setHeader('Access-Control-Allow-Origin', '*');
49
+ res.setHeader('Cache-Control', pinned ? 'public, max-age=300' : 'no-cache');
50
+ }
51
+ export function odataRouter(config, storage) {
52
+ const router = Router();
53
+ const store = { storage, config };
54
+ /** `pkg:owner/name[@version]` from the path plus the optional `version` query parameter. */
55
+ const refOf = (req) => {
56
+ const v = typeof req.query.version === 'string' && req.query.version.trim()
57
+ ? `@${req.query.version.trim()}` : '';
58
+ return `pkg:${req.params.owner}/${req.params.name}${v}`;
59
+ };
60
+ const serviceRoot = (req) => `${config.baseUrl.replace(/\/+$/, '')}/v1/odata/${encodeURIComponent(req.params.owner)}`
61
+ + `/${encodeURIComponent(req.params.name)}`;
62
+ /** The service document: which entity sets this feed offers. What Excel reads first. */
63
+ router.get('/v1/odata/:owner/:name', async (req, res) => {
64
+ const opened = await openPackage(store, refOf(req), config.nodeId);
65
+ if (!opened) {
66
+ odataError(res, 404, 'NotFound', `No such data package: ${refOf(req)}`);
67
+ return;
68
+ }
69
+ odataHeaders(res, !!req.query.version);
70
+ res.type('application/json;odata.metadata=minimal').send(JSON.stringify({
71
+ '@odata.context': `${serviceRoot(req)}/$metadata`,
72
+ value: opened.descriptor.resources.map(r => ({
73
+ name: edmName(r.name), kind: 'EntitySet', url: edmName(r.name),
74
+ })),
75
+ }, null, 2));
76
+ });
77
+ /**
78
+ * CSDL. XML, not JSON, because that is what the v4 metadata document is and what every native
79
+ * connector parses — a JSON approximation here would fail inside Excel with no useful message.
80
+ */
81
+ router.get('/v1/odata/:owner/:name/\\$metadata', async (req, res) => {
82
+ const opened = await openPackage(store, refOf(req), config.nodeId);
83
+ if (!opened) {
84
+ odataError(res, 404, 'NotFound', `No such data package: ${refOf(req)}`);
85
+ return;
86
+ }
87
+ odataHeaders(res, !!req.query.version);
88
+ res.type('application/xml; charset=utf-8')
89
+ .send(toCsdl(opened.descriptor, namespaceFor(opened.descriptor)));
90
+ });
91
+ /** One entity set: the rows, with the readable subset of the query language applied. */
92
+ router.get('/v1/odata/:owner/:name/:resource', async (req, res) => {
93
+ const ref = refOf(req);
94
+ const opened = await openPackage(store, ref, config.nodeId);
95
+ if (!opened) {
96
+ odataError(res, 404, 'NotFound', `No such data package: ${ref}`);
97
+ return;
98
+ }
99
+ // The client addresses the set by the name the METADATA published, which may differ from the
100
+ // descriptor's own field-legal-but-not-CSDL-legal name.
101
+ const resource = opened.descriptor.resources.find(r => edmName(r.name) === req.params.resource);
102
+ if (!resource) {
103
+ odataError(res, 404, 'NotFound', `No entity set "${req.params.resource}". This feed offers: `
104
+ + opened.descriptor.resources.map(r => edmName(r.name)).join(', '));
105
+ return;
106
+ }
107
+ const parsed = parseQuery(new URLSearchParams(req.url.split('?')[1] ?? ''), resource.schema);
108
+ if (!parsed.ok) {
109
+ // 501 for "this feed does not do that", 400 for "you asked for something that is not
110
+ // there". Both are refusals; neither quietly returns the unfiltered set.
111
+ odataError(res, parsed.code === 'NOT_IMPLEMENTED' ? 501 : 400, parsed.code === 'NOT_IMPLEMENTED' ? 'NotImplemented' : 'BadRequest', parsed.message);
112
+ return;
113
+ }
114
+ // The whole resource is read and filtered here. That is honest for the sizes this format is
115
+ // built for and it is the thing to revisit first when a package outgrows it: the query is
116
+ // parsed into a shape a storage-side implementation could execute, so the seam already exists.
117
+ const all = await readRows(store, ref, config.nodeId, resource.name, { offset: 0, limit: 5000 });
118
+ if (!all) {
119
+ odataError(res, 404, 'NotFound', `Could not read ${resource.name} of ${ref}`);
120
+ return;
121
+ }
122
+ const page = applyQuery(all.rows, parsed.value, resource.schema);
123
+ odataHeaders(res, !!req.query.version);
124
+ const body = {
125
+ '@odata.context': `${serviceRoot(req)}/$metadata#${edmName(resource.name)}`,
126
+ ...(parsed.value.count ? { '@odata.count': page.matched } : {}),
127
+ value: page.rows,
128
+ };
129
+ res.type('application/json;odata.metadata=minimal').send(JSON.stringify(body, null, 2));
130
+ });
131
+ /** What a caller gets for asking about a feed that does not exist as a whole. */
132
+ router.get('/v1/odata', (_req, res) => {
133
+ odataError(res, 400, 'BadRequest', 'An OData service root is one data package: /v1/odata/{owner}/{package}. '
134
+ + `Supported query options on an entity set: ${ODATA_SUPPORTED.join(', ')}.`);
135
+ });
136
+ return router;
137
+ }
138
+ /** The CSDL namespace for one package — its own id, so two packages' metadata cannot collide in a
139
+ * client that has both open. */
140
+ function namespaceFor(d) {
141
+ return `AIMEAT.${d.name}`;
142
+ }
143
+ //# sourceMappingURL=odata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odata.js","sourceRoot":"","sources":["../../../src/routes/odata.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,10 @@
12
12
  * - POST /v1/openrouter/test — test API key validity
13
13
  * - POST /v1/openrouter/complete — run AI completion for generator step
14
14
  * @version-history
15
+ * v1.9.0 — 2026-08-16 — `imageModel` persists beside the other roles, for POST /v1/ai/image. It is
16
+ * read through services/ai-model-defaults.ts like the rest, so an owner who sets nothing gets
17
+ * the node's default and a node that sets nothing refuses by name rather than handing an image
18
+ * request to a chat model.
15
19
  * v1.8.0 — 2026-08-01 — Speech-to-text settings: `sttModel` + `sttLanguage` persist alongside
16
20
  * visionModel, and GET /models takes `?modality=`. The modality is load-bearing rather than
17
21
  * cosmetic — OpenRouter's default catalogue has no transcription models in it, so without the
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/routes/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAkDvD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAoV/E"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/routes/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAkDvD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAyV/E"}