aimeat 3.2.0 → 3.3.0

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 (507) hide show
  1. package/dist/.env.example +58 -1
  2. package/dist/build-stamp.json +4 -4
  3. package/dist/locales/en.json +41 -1
  4. package/dist/locales/es.json +41 -1
  5. package/dist/locales/fi.json +43 -3
  6. package/dist/public/changelog.json +12 -0
  7. package/dist/public/css/views/chat.css +388 -0
  8. package/dist/public/js/services/chat.js +190 -0
  9. package/dist/public/js/services/speech-reader.js +26 -0
  10. package/dist/public/lib/VENDORED.md +1 -0
  11. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser-eh.worker.js +14 -0
  12. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser.js +23 -0
  13. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-eh.wasm +0 -0
  14. package/dist/public/lib/duckdb-wasm@1.32.0/extensions/v1.4.3/wasm_eh/parquet.duckdb_extension.wasm +0 -0
  15. package/dist/public/lib/vendored-assets.json +19 -0
  16. package/dist/public/llms-full-template.txt +2706 -0
  17. package/dist/public/llms-index-template.txt +60 -0
  18. package/dist/public/robots.node.txt +64 -23
  19. package/dist/public/spa.html +8 -1
  20. package/dist/public/views/chat/parts.js +257 -0
  21. package/dist/public/views/chat.js +327 -0
  22. package/dist/public/views/landing.js +24 -1
  23. package/dist/public/views/profile/agents/scope-model.js +320 -315
  24. package/dist/scripts/audit-mcp-schemas.js +41 -0
  25. package/dist/scripts/audit-mcp-schemas.js.map +1 -1
  26. package/dist/scripts/build-sdk-libs.d.ts.map +1 -1
  27. package/dist/scripts/build-sdk-libs.js +1 -0
  28. package/dist/scripts/build-sdk-libs.js.map +1 -1
  29. package/dist/scripts/check-ai-disclosure.js +11 -0
  30. package/dist/scripts/check-ai-disclosure.js.map +1 -1
  31. package/dist/scripts/check-denial-coverage.d.ts +29 -0
  32. package/dist/scripts/check-denial-coverage.d.ts.map +1 -0
  33. package/dist/scripts/check-denial-coverage.js +237 -0
  34. package/dist/scripts/check-denial-coverage.js.map +1 -0
  35. package/dist/scripts/check-ext-entrypoints.js +14 -2
  36. package/dist/scripts/check-ext-entrypoints.js.map +1 -1
  37. package/dist/scripts/check-outbound-fetch.d.ts.map +1 -1
  38. package/dist/scripts/check-outbound-fetch.js +16 -2
  39. package/dist/scripts/check-outbound-fetch.js.map +1 -1
  40. package/dist/scripts/check-sse-parity.js +14 -0
  41. package/dist/scripts/check-sse-parity.js.map +1 -1
  42. package/dist/scripts/indexnow.js +9 -7
  43. package/dist/scripts/indexnow.js.map +1 -1
  44. package/dist/src/auth/middleware.d.ts +7 -0
  45. package/dist/src/auth/middleware.d.ts.map +1 -1
  46. package/dist/src/auth/middleware.js +15 -21
  47. package/dist/src/auth/middleware.js.map +1 -1
  48. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts +4 -0
  49. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
  50. package/dist/src/cli/connect/mcp/tools/agent-tasks.js +11 -1
  51. package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
  52. package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -1
  53. package/dist/src/cli/connect/mcp/tools/apps.js +88 -0
  54. package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -1
  55. package/dist/src/cli/connect/mcp/tools/core.d.ts +7 -0
  56. package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
  57. package/dist/src/cli/connect/mcp/tools/core.js +83 -4
  58. package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
  59. package/dist/src/cli/connect/onboarding-prompt.js +1 -1
  60. package/dist/src/cli/connect/skill-bundle.js +1 -1
  61. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts +21 -0
  62. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts.map +1 -0
  63. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js +137 -0
  64. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js.map +1 -0
  65. package/dist/src/cli/connect/tool-call-defs-core.d.ts +1 -0
  66. package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
  67. package/dist/src/cli/connect/tool-call-defs-core.js +30 -0
  68. package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
  69. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  70. package/dist/src/cli/connect/tool-call.js +2 -0
  71. package/dist/src/cli/connect/tool-call.js.map +1 -1
  72. package/dist/src/config-types-ai.d.ts +76 -0
  73. package/dist/src/config-types-ai.d.ts.map +1 -0
  74. package/dist/src/config-types-ai.js +15 -0
  75. package/dist/src/config-types-ai.js.map +1 -0
  76. package/dist/src/config-types.d.ts +11 -2
  77. package/dist/src/config-types.d.ts.map +1 -1
  78. package/dist/src/config.d.ts.map +1 -1
  79. package/dist/src/config.js +25 -4
  80. package/dist/src/config.js.map +1 -1
  81. package/dist/src/data/builtin-skills.d.ts.map +1 -1
  82. package/dist/src/data/builtin-skills.js +3 -2
  83. package/dist/src/data/builtin-skills.js.map +1 -1
  84. package/dist/src/data/digital-signage-package.js +1 -1
  85. package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
  86. package/dist/src/data/library-packs/sdk.js +76 -0
  87. package/dist/src/data/library-packs/sdk.js.map +1 -1
  88. package/dist/src/data/library-packs/vendored.d.ts.map +1 -1
  89. package/dist/src/data/library-packs/vendored.js +81 -0
  90. package/dist/src/data/library-packs/vendored.js.map +1 -1
  91. package/dist/src/data/library-packs.d.ts +2 -2
  92. package/dist/src/data/library-packs.js +2 -2
  93. package/dist/src/data/public-pages.d.ts +13 -0
  94. package/dist/src/data/public-pages.d.ts.map +1 -1
  95. package/dist/src/data/public-pages.js +153 -113
  96. package/dist/src/data/public-pages.js.map +1 -1
  97. package/dist/src/generated/api-types.d.ts +1652 -36
  98. package/dist/src/generated/api-types.d.ts.map +1 -1
  99. package/dist/src/index-start.d.ts.map +1 -1
  100. package/dist/src/index-start.js +3 -0
  101. package/dist/src/index-start.js.map +1 -1
  102. package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
  103. package/dist/src/mcp/agent-tasks.js +5 -0
  104. package/dist/src/mcp/agent-tasks.js.map +1 -1
  105. package/dist/src/mcp/ai-image.d.ts +22 -0
  106. package/dist/src/mcp/ai-image.d.ts.map +1 -0
  107. package/dist/src/mcp/ai-image.js +60 -0
  108. package/dist/src/mcp/ai-image.js.map +1 -0
  109. package/dist/src/mcp/annotations.d.ts +5 -0
  110. package/dist/src/mcp/annotations.d.ts.map +1 -1
  111. package/dist/src/mcp/annotations.js +18 -0
  112. package/dist/src/mcp/annotations.js.map +1 -1
  113. package/dist/src/mcp/apps-draft-edit.d.ts +28 -0
  114. package/dist/src/mcp/apps-draft-edit.d.ts.map +1 -0
  115. package/dist/src/mcp/apps-draft-edit.js +164 -0
  116. package/dist/src/mcp/apps-draft-edit.js.map +1 -0
  117. package/dist/src/mcp/apps-screenshot.d.ts +26 -0
  118. package/dist/src/mcp/apps-screenshot.d.ts.map +1 -0
  119. package/dist/src/mcp/apps-screenshot.js +39 -0
  120. package/dist/src/mcp/apps-screenshot.js.map +1 -0
  121. package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts +1 -0
  122. package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts.map +1 -1
  123. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js +40 -0
  124. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js.map +1 -1
  125. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts +3 -0
  126. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts.map +1 -1
  127. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +74 -0
  128. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
  129. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts.map +1 -1
  130. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js +1 -0
  131. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
  132. package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
  133. package/dist/src/mcp/catalog/scopes.js +19 -1
  134. package/dist/src/mcp/catalog/scopes.js.map +1 -1
  135. package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
  136. package/dist/src/mcp/catalog/surfaces.js +18 -4
  137. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  138. package/dist/src/mcp/core-datapackage.d.ts +32 -0
  139. package/dist/src/mcp/core-datapackage.d.ts.map +1 -0
  140. package/dist/src/mcp/core-datapackage.js +188 -0
  141. package/dist/src/mcp/core-datapackage.js.map +1 -0
  142. package/dist/src/mcp/core-storage.d.ts +7 -3
  143. package/dist/src/mcp/core-storage.d.ts.map +1 -1
  144. package/dist/src/mcp/core-storage.js +27 -4
  145. package/dist/src/mcp/core-storage.js.map +1 -1
  146. package/dist/src/mcp/core.d.ts.map +1 -1
  147. package/dist/src/mcp/core.js +3 -0
  148. package/dist/src/mcp/core.js.map +1 -1
  149. package/dist/src/mcp/extensions.d.ts.map +1 -1
  150. package/dist/src/mcp/extensions.js +11 -1
  151. package/dist/src/mcp/extensions.js.map +1 -1
  152. package/dist/src/mcp/index.d.ts +9 -0
  153. package/dist/src/mcp/index.d.ts.map +1 -1
  154. package/dist/src/mcp/index.js +34 -0
  155. package/dist/src/mcp/index.js.map +1 -1
  156. package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
  157. package/dist/src/models/agent-task-schemas.js +12 -1
  158. package/dist/src/models/agent-task-schemas.js.map +1 -1
  159. package/dist/src/models/workflow-schemas.d.ts +178 -1
  160. package/dist/src/models/workflow-schemas.d.ts.map +1 -1
  161. package/dist/src/models/workflow-schemas.js +75 -0
  162. package/dist/src/models/workflow-schemas.js.map +1 -1
  163. package/dist/src/routes/admin-extensions.d.ts +4 -0
  164. package/dist/src/routes/admin-extensions.d.ts.map +1 -1
  165. package/dist/src/routes/admin-extensions.js +135 -142
  166. package/dist/src/routes/admin-extensions.js.map +1 -1
  167. package/dist/src/routes/agent-conventions.d.ts.map +1 -1
  168. package/dist/src/routes/agent-conventions.js +4 -2
  169. package/dist/src/routes/agent-conventions.js.map +1 -1
  170. package/dist/src/routes/agent-docs.d.ts +4 -4
  171. package/dist/src/routes/agent-docs.js +145 -145
  172. package/dist/src/routes/agent-docs.js.map +1 -1
  173. package/dist/src/routes/agent-messages.d.ts +6 -0
  174. package/dist/src/routes/agent-messages.d.ts.map +1 -1
  175. package/dist/src/routes/agent-messages.js +23 -1
  176. package/dist/src/routes/agent-messages.js.map +1 -1
  177. package/dist/src/routes/agent-tasks/create-read.d.ts.map +1 -1
  178. package/dist/src/routes/agent-tasks/create-read.js +8 -1
  179. package/dist/src/routes/agent-tasks/create-read.js.map +1 -1
  180. package/dist/src/routes/agent-tasks/lifecycle.d.ts +4 -1
  181. package/dist/src/routes/agent-tasks/lifecycle.d.ts.map +1 -1
  182. package/dist/src/routes/agent-tasks/lifecycle.js +80 -2
  183. package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
  184. package/dist/src/routes/ai.d.ts +5 -0
  185. package/dist/src/routes/ai.d.ts.map +1 -1
  186. package/dist/src/routes/ai.js +51 -1
  187. package/dist/src/routes/ai.js.map +1 -1
  188. package/dist/src/routes/app-grants.d.ts.map +1 -1
  189. package/dist/src/routes/app-grants.js +5 -0
  190. package/dist/src/routes/app-grants.js.map +1 -1
  191. package/dist/src/routes/apps/drafts.d.ts +6 -0
  192. package/dist/src/routes/apps/drafts.d.ts.map +1 -1
  193. package/dist/src/routes/apps/drafts.js +133 -1
  194. package/dist/src/routes/apps/drafts.js.map +1 -1
  195. package/dist/src/routes/apps/read.d.ts.map +1 -1
  196. package/dist/src/routes/apps/read.js +38 -1
  197. package/dist/src/routes/apps/read.js.map +1 -1
  198. package/dist/src/routes/auth-otk.d.ts +28 -0
  199. package/dist/src/routes/auth-otk.d.ts.map +1 -0
  200. package/dist/src/routes/auth-otk.js +190 -0
  201. package/dist/src/routes/auth-otk.js.map +1 -0
  202. package/dist/src/routes/auth.d.ts +17 -0
  203. package/dist/src/routes/auth.d.ts.map +1 -1
  204. package/dist/src/routes/auth.js +44 -153
  205. package/dist/src/routes/auth.js.map +1 -1
  206. package/dist/src/routes/bootstrap.d.ts +6 -0
  207. package/dist/src/routes/bootstrap.d.ts.map +1 -1
  208. package/dist/src/routes/bootstrap.js +47 -20
  209. package/dist/src/routes/bootstrap.js.map +1 -1
  210. package/dist/src/routes/chat.d.ts +23 -0
  211. package/dist/src/routes/chat.d.ts.map +1 -0
  212. package/dist/src/routes/chat.js +165 -0
  213. package/dist/src/routes/chat.js.map +1 -0
  214. package/dist/src/routes/commerce.js +4 -4
  215. package/dist/src/routes/commerce.js.map +1 -1
  216. package/dist/src/routes/datapackages.d.ts +35 -0
  217. package/dist/src/routes/datapackages.d.ts.map +1 -0
  218. package/dist/src/routes/datapackages.js +217 -0
  219. package/dist/src/routes/datapackages.js.map +1 -0
  220. package/dist/src/routes/disputes.d.ts +8 -0
  221. package/dist/src/routes/disputes.d.ts.map +1 -1
  222. package/dist/src/routes/disputes.js +52 -1
  223. package/dist/src/routes/disputes.js.map +1 -1
  224. package/dist/src/routes/ecosystem-apps-advisories.d.ts +16 -0
  225. package/dist/src/routes/ecosystem-apps-advisories.d.ts.map +1 -0
  226. package/dist/src/routes/ecosystem-apps-advisories.js +104 -0
  227. package/dist/src/routes/ecosystem-apps-advisories.js.map +1 -0
  228. package/dist/src/routes/ecosystem-apps.d.ts +6 -0
  229. package/dist/src/routes/ecosystem-apps.d.ts.map +1 -1
  230. package/dist/src/routes/ecosystem-apps.js +31 -99
  231. package/dist/src/routes/ecosystem-apps.js.map +1 -1
  232. package/dist/src/routes/extensions/actions.d.ts.map +1 -1
  233. package/dist/src/routes/extensions/actions.js +29 -1
  234. package/dist/src/routes/extensions/actions.js.map +1 -1
  235. package/dist/src/routes/federation-sync/routing.d.ts.map +1 -1
  236. package/dist/src/routes/federation-sync/routing.js +12 -3
  237. package/dist/src/routes/federation-sync/routing.js.map +1 -1
  238. package/dist/src/routes/glossary.js +1 -1
  239. package/dist/src/routes/glossary.js.map +1 -1
  240. package/dist/src/routes/home/track.d.ts +5 -1
  241. package/dist/src/routes/home/track.d.ts.map +1 -1
  242. package/dist/src/routes/home/track.js +20 -6
  243. package/dist/src/routes/home/track.js.map +1 -1
  244. package/dist/src/routes/instances/install.d.ts +3 -0
  245. package/dist/src/routes/instances/install.d.ts.map +1 -1
  246. package/dist/src/routes/instances/install.js +17 -24
  247. package/dist/src/routes/instances/install.js.map +1 -1
  248. package/dist/src/routes/libs.js +1 -1
  249. package/dist/src/routes/libs.js.map +1 -1
  250. package/dist/src/routes/markdown-mirrors.js +1 -1
  251. package/dist/src/routes/markdown-mirrors.js.map +1 -1
  252. package/dist/src/routes/odata.d.ts +36 -0
  253. package/dist/src/routes/odata.d.ts.map +1 -0
  254. package/dist/src/routes/odata.js +143 -0
  255. package/dist/src/routes/odata.js.map +1 -0
  256. package/dist/src/routes/openrouter.d.ts +4 -0
  257. package/dist/src/routes/openrouter.d.ts.map +1 -1
  258. package/dist/src/routes/openrouter.js +10 -1
  259. package/dist/src/routes/openrouter.js.map +1 -1
  260. package/dist/src/routes/organisms/gates.d.ts.map +1 -1
  261. package/dist/src/routes/organisms/gates.js +9 -2
  262. package/dist/src/routes/organisms/gates.js.map +1 -1
  263. package/dist/src/routes/portal.d.ts +1 -0
  264. package/dist/src/routes/portal.d.ts.map +1 -1
  265. package/dist/src/routes/portal.js +13 -0
  266. package/dist/src/routes/portal.js.map +1 -1
  267. package/dist/src/routes/schedules.d.ts +4 -0
  268. package/dist/src/routes/schedules.d.ts.map +1 -1
  269. package/dist/src/routes/schedules.js +9 -1
  270. package/dist/src/routes/schedules.js.map +1 -1
  271. package/dist/src/routes/storage-files.d.ts +23 -0
  272. package/dist/src/routes/storage-files.d.ts.map +1 -1
  273. package/dist/src/routes/storage-files.js +103 -82
  274. package/dist/src/routes/storage-files.js.map +1 -1
  275. package/dist/src/routes/workflows.d.ts.map +1 -1
  276. package/dist/src/routes/workflows.js +9 -1
  277. package/dist/src/routes/workflows.js.map +1 -1
  278. package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
  279. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  280. package/dist/src/server-bootstrap/routes-loader.js +20 -2
  281. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  282. package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
  283. package/dist/src/server-bootstrap/service-init.js +12 -7
  284. package/dist/src/server-bootstrap/service-init.js.map +1 -1
  285. package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
  286. package/dist/src/server-bootstrap/static-files.js +44 -10
  287. package/dist/src/server-bootstrap/static-files.js.map +1 -1
  288. package/dist/src/services/ai-allowance.d.ts +82 -0
  289. package/dist/src/services/ai-allowance.d.ts.map +1 -0
  290. package/dist/src/services/ai-allowance.js +117 -0
  291. package/dist/src/services/ai-allowance.js.map +1 -0
  292. package/dist/src/services/ai-completion.d.ts +26 -0
  293. package/dist/src/services/ai-completion.d.ts.map +1 -1
  294. package/dist/src/services/ai-completion.js +41 -13
  295. package/dist/src/services/ai-completion.js.map +1 -1
  296. package/dist/src/services/ai-image.d.ts +70 -0
  297. package/dist/src/services/ai-image.d.ts.map +1 -0
  298. package/dist/src/services/ai-image.js +104 -0
  299. package/dist/src/services/ai-image.js.map +1 -0
  300. package/dist/src/services/ai-model-defaults.d.ts +45 -0
  301. package/dist/src/services/ai-model-defaults.d.ts.map +1 -0
  302. package/dist/src/services/ai-model-defaults.js +42 -0
  303. package/dist/src/services/ai-model-defaults.js.map +1 -0
  304. package/dist/src/services/ai-tool-setup.d.ts +5 -1
  305. package/dist/src/services/ai-tool-setup.d.ts.map +1 -1
  306. package/dist/src/services/ai-tool-setup.js +36 -0
  307. package/dist/src/services/ai-tool-setup.js.map +1 -1
  308. package/dist/src/services/ai-transcription.d.ts +5 -0
  309. package/dist/src/services/ai-transcription.d.ts.map +1 -1
  310. package/dist/src/services/ai-transcription.js +5 -2
  311. package/dist/src/services/ai-transcription.js.map +1 -1
  312. package/dist/src/services/app-agent-surfaces.js +4 -4
  313. package/dist/src/services/app-agent-surfaces.js.map +1 -1
  314. package/dist/src/services/app-draft-edit.d.ts +144 -0
  315. package/dist/src/services/app-draft-edit.d.ts.map +1 -0
  316. package/dist/src/services/app-draft-edit.js +203 -0
  317. package/dist/src/services/app-draft-edit.js.map +1 -0
  318. package/dist/src/services/auth-md.js +2 -2
  319. package/dist/src/services/auth-md.js.map +1 -1
  320. package/dist/src/services/board-write.d.ts +11 -3
  321. package/dist/src/services/board-write.d.ts.map +1 -1
  322. package/dist/src/services/board-write.js +24 -3
  323. package/dist/src/services/board-write.js.map +1 -1
  324. package/dist/src/services/chat-agent.d.ts +36 -0
  325. package/dist/src/services/chat-agent.d.ts.map +1 -0
  326. package/dist/src/services/chat-agent.js +123 -0
  327. package/dist/src/services/chat-agent.js.map +1 -0
  328. package/dist/src/services/chat-session.d.ts +58 -0
  329. package/dist/src/services/chat-session.d.ts.map +1 -0
  330. package/dist/src/services/chat-session.js +151 -0
  331. package/dist/src/services/chat-session.js.map +1 -0
  332. package/dist/src/services/chat-threads.d.ts +61 -0
  333. package/dist/src/services/chat-threads.d.ts.map +1 -0
  334. package/dist/src/services/chat-threads.js +137 -0
  335. package/dist/src/services/chat-threads.js.map +1 -0
  336. package/dist/src/services/config-schema.d.ts.map +1 -1
  337. package/dist/src/services/config-schema.js +2 -1
  338. package/dist/src/services/config-schema.js.map +1 -1
  339. package/dist/src/services/datapackage/contract.d.ts +198 -0
  340. package/dist/src/services/datapackage/contract.d.ts.map +1 -0
  341. package/dist/src/services/datapackage/contract.js +140 -0
  342. package/dist/src/services/datapackage/contract.js.map +1 -0
  343. package/dist/src/services/datapackage/ext-capability.d.ts +85 -0
  344. package/dist/src/services/datapackage/ext-capability.d.ts.map +1 -0
  345. package/dist/src/services/datapackage/ext-capability.js +72 -0
  346. package/dist/src/services/datapackage/ext-capability.js.map +1 -0
  347. package/dist/src/services/datapackage/odata.d.ts +92 -0
  348. package/dist/src/services/datapackage/odata.d.ts.map +1 -0
  349. package/dist/src/services/datapackage/odata.js +256 -0
  350. package/dist/src/services/datapackage/odata.js.map +1 -0
  351. package/dist/src/services/datapackage/odps.d.ts +24 -0
  352. package/dist/src/services/datapackage/odps.d.ts.map +1 -0
  353. package/dist/src/services/datapackage/odps.js +183 -0
  354. package/dist/src/services/datapackage/odps.js.map +1 -0
  355. package/dist/src/services/datapackage/store.d.ts +143 -0
  356. package/dist/src/services/datapackage/store.d.ts.map +1 -0
  357. package/dist/src/services/datapackage/store.js +533 -0
  358. package/dist/src/services/datapackage/store.js.map +1 -0
  359. package/dist/src/services/datapackage/table.d.ts +67 -0
  360. package/dist/src/services/datapackage/table.d.ts.map +1 -0
  361. package/dist/src/services/datapackage/table.js +0 -0
  362. package/dist/src/services/datapackage/table.js.map +1 -0
  363. package/dist/src/services/extension-ctx.d.ts +1 -0
  364. package/dist/src/services/extension-ctx.d.ts.map +1 -1
  365. package/dist/src/services/extension-ctx.js +31 -6
  366. package/dist/src/services/extension-ctx.js.map +1 -1
  367. package/dist/src/services/extension-files.d.ts +20 -0
  368. package/dist/src/services/extension-files.d.ts.map +1 -1
  369. package/dist/src/services/extension-files.js +9 -2
  370. package/dist/src/services/extension-files.js.map +1 -1
  371. package/dist/src/services/extension-lifecycle.d.ts +3 -0
  372. package/dist/src/services/extension-lifecycle.d.ts.map +1 -1
  373. package/dist/src/services/extension-lifecycle.js +2 -26
  374. package/dist/src/services/extension-lifecycle.js.map +1 -1
  375. package/dist/src/services/extension-runtime.d.ts +28 -2
  376. package/dist/src/services/extension-runtime.d.ts.map +1 -1
  377. package/dist/src/services/extension-runtime.js +22 -0
  378. package/dist/src/services/extension-runtime.js.map +1 -1
  379. package/dist/src/services/extension-schedules.d.ts +90 -0
  380. package/dist/src/services/extension-schedules.d.ts.map +1 -0
  381. package/dist/src/services/extension-schedules.js +123 -0
  382. package/dist/src/services/extension-schedules.js.map +1 -0
  383. package/dist/src/services/extension-system-run.d.ts +91 -0
  384. package/dist/src/services/extension-system-run.d.ts.map +1 -0
  385. package/dist/src/services/extension-system-run.js +100 -0
  386. package/dist/src/services/extension-system-run.js.map +1 -0
  387. package/dist/src/services/extension-upsert.d.ts +2 -0
  388. package/dist/src/services/extension-upsert.d.ts.map +1 -1
  389. package/dist/src/services/extension-upsert.js +6 -24
  390. package/dist/src/services/extension-upsert.js.map +1 -1
  391. package/dist/src/services/goose-acp.d.ts +84 -0
  392. package/dist/src/services/goose-acp.d.ts.map +1 -0
  393. package/dist/src/services/goose-acp.js +304 -0
  394. package/dist/src/services/goose-acp.js.map +1 -0
  395. package/dist/src/services/markdown-negotiation.js +1 -1
  396. package/dist/src/services/markdown-negotiation.js.map +1 -1
  397. package/dist/src/services/openrouter.d.ts +20 -1
  398. package/dist/src/services/openrouter.d.ts.map +1 -1
  399. package/dist/src/services/openrouter.js +66 -0
  400. package/dist/src/services/openrouter.js.map +1 -1
  401. package/dist/src/services/prompt-defaults/tiers-core.js +4 -4
  402. package/dist/src/services/scheduler-extension-job.d.ts +29 -6
  403. package/dist/src/services/scheduler-extension-job.d.ts.map +1 -1
  404. package/dist/src/services/scheduler-extension-job.js +29 -75
  405. package/dist/src/services/scheduler-extension-job.js.map +1 -1
  406. package/dist/src/services/scope-vocabulary-migration.d.ts +34 -1
  407. package/dist/src/services/scope-vocabulary-migration.d.ts.map +1 -1
  408. package/dist/src/services/scope-vocabulary-migration.js +60 -0
  409. package/dist/src/services/scope-vocabulary-migration.js.map +1 -1
  410. package/dist/src/services/screenshot-capture.d.ts +40 -1
  411. package/dist/src/services/screenshot-capture.d.ts.map +1 -1
  412. package/dist/src/services/screenshot-capture.js +142 -60
  413. package/dist/src/services/screenshot-capture.js.map +1 -1
  414. package/dist/src/services/skill-bundle/generator.js +1 -1
  415. package/dist/src/services/skill-bundle/generic-adapter.js +1 -1
  416. package/dist/src/services/skill-bundle/hermes-adapter.js +1 -1
  417. package/dist/src/services/storage-file-write.d.ts +36 -1
  418. package/dist/src/services/storage-file-write.d.ts.map +1 -1
  419. package/dist/src/services/storage-file-write.js +49 -3
  420. package/dist/src/services/storage-file-write.js.map +1 -1
  421. package/dist/src/services/task-outcome.d.ts +53 -0
  422. package/dist/src/services/task-outcome.d.ts.map +1 -0
  423. package/dist/src/services/task-outcome.js +28 -0
  424. package/dist/src/services/task-outcome.js.map +1 -0
  425. package/dist/src/services/workflow/engine-human.d.ts +15 -0
  426. package/dist/src/services/workflow/engine-human.d.ts.map +1 -1
  427. package/dist/src/services/workflow/engine-human.js +10 -1
  428. package/dist/src/services/workflow/engine-human.js.map +1 -1
  429. package/dist/src/services/workflow/engine-steps.d.ts +48 -3
  430. package/dist/src/services/workflow/engine-steps.d.ts.map +1 -1
  431. package/dist/src/services/workflow/engine-steps.js +361 -0
  432. package/dist/src/services/workflow/engine-steps.js.map +1 -1
  433. package/dist/src/services/workflow/engine.d.ts +1 -0
  434. package/dist/src/services/workflow/engine.d.ts.map +1 -1
  435. package/dist/src/services/workflow/engine.js +2 -1
  436. package/dist/src/services/workflow/engine.js.map +1 -1
  437. package/dist/src/services/workflow/store.d.ts.map +1 -1
  438. package/dist/src/services/workflow/store.js +60 -4
  439. package/dist/src/services/workflow/store.js.map +1 -1
  440. package/dist/src/services/write-guards.d.ts +27 -1
  441. package/dist/src/services/write-guards.d.ts.map +1 -1
  442. package/dist/src/services/write-guards.js +39 -9
  443. package/dist/src/services/write-guards.js.map +1 -1
  444. package/dist/src/storage/providers/postgres-kysely/db-types.d.ts +1 -0
  445. package/dist/src/storage/providers/postgres-kysely/db-types.d.ts.map +1 -1
  446. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +1 -0
  447. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts.map +1 -1
  448. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js +3 -0
  449. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
  450. package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts +2 -0
  451. package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts.map +1 -1
  452. package/dist/src/storage/providers/postgres-kysely/methods/files.js +34 -2
  453. package/dist/src/storage/providers/postgres-kysely/methods/files.js.map +1 -1
  454. package/dist/src/storage/providers/postgres-kysely/migrations/0039_storage_file_utf8_verified.sql +19 -0
  455. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  456. package/dist/src/storage/providers/sqlite/index.js +2 -1
  457. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  458. package/dist/src/storage/providers/sqlite/methods/apps.d.ts +1 -0
  459. package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
  460. package/dist/src/storage/providers/sqlite/methods/apps.js +33 -28
  461. package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
  462. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts +1 -12
  463. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
  464. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +28 -135
  465. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
  466. package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts +38 -0
  467. package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts.map +1 -0
  468. package/dist/src/storage/providers/sqlite/methods/storage-files.js +109 -0
  469. package/dist/src/storage/providers/sqlite/methods/storage-files.js.map +1 -0
  470. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  471. package/dist/src/storage/providers/sqlite/schema.js +134 -130
  472. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  473. package/dist/src/storage/repositories/app-grant.repository.d.ts +11 -0
  474. package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
  475. package/dist/src/storage/repositories/file.repository.d.ts +13 -0
  476. package/dist/src/storage/repositories/file.repository.d.ts.map +1 -1
  477. package/dist/src/storage/types/commerce.d.ts +6 -0
  478. package/dist/src/storage/types/commerce.d.ts.map +1 -1
  479. package/dist/src/utils/agent-footer.d.ts.map +1 -1
  480. package/dist/src/utils/agent-footer.js +1 -0
  481. package/dist/src/utils/agent-footer.js.map +1 -1
  482. package/dist/src/utils/app-content-type.d.ts +57 -3
  483. package/dist/src/utils/app-content-type.d.ts.map +1 -1
  484. package/dist/src/utils/app-content-type.js +81 -12
  485. package/dist/src/utils/app-content-type.js.map +1 -1
  486. package/dist/src/utils/env-config/sections-features.d.ts.map +1 -1
  487. package/dist/src/utils/env-config/sections-features.js +9 -3
  488. package/dist/src/utils/env-config/sections-features.js.map +1 -1
  489. package/dist/src/utils/file-download-headers.d.ts +5 -3
  490. package/dist/src/utils/file-download-headers.d.ts.map +1 -1
  491. package/dist/src/utils/file-download-headers.js +18 -5
  492. package/dist/src/utils/file-download-headers.js.map +1 -1
  493. package/dist/src/utils/http-range.d.ts +151 -0
  494. package/dist/src/utils/http-range.d.ts.map +1 -0
  495. package/dist/src/utils/http-range.js +190 -0
  496. package/dist/src/utils/http-range.js.map +1 -0
  497. package/dist/src/utils/page-head.d.ts +5 -0
  498. package/dist/src/utils/page-head.d.ts.map +1 -1
  499. package/dist/src/utils/page-head.js +10 -1
  500. package/dist/src/utils/page-head.js.map +1 -1
  501. package/dist/src/utils/reserved-keys.d.ts +4 -1
  502. package/dist/src/utils/reserved-keys.d.ts.map +1 -1
  503. package/dist/src/utils/reserved-keys.js +4 -1
  504. package/dist/src/utils/reserved-keys.js.map +1 -1
  505. package/dist/static/sdk-libs/datapackage/index.js +336 -0
  506. package/dist/static/sdk-libs/dist/aimeat-datapackage.js +305 -0
  507. package/package.json +10 -2
@@ -1360,6 +1360,141 @@ export interface paths {
1360
1360
  patch?: never;
1361
1361
  trace?: never;
1362
1362
  };
1363
+ "/v1/chat/status": {
1364
+ parameters: {
1365
+ query?: never;
1366
+ header?: never;
1367
+ path?: never;
1368
+ cookie?: never;
1369
+ };
1370
+ /**
1371
+ * Whether this node has a built-in chat agent
1372
+ * @description Report whether an operator has configured a chat agent on this node, what the owner's chat
1373
+ * agent is called, how much of their AI allowance is left, and whether they have their own
1374
+ * OpenRouter key. A node with no agent says so plainly rather than offering a box that will
1375
+ * never answer. Owner sessions only.
1376
+ */
1377
+ get: operations["getChatStatus"];
1378
+ put?: never;
1379
+ post?: never;
1380
+ delete?: never;
1381
+ options?: never;
1382
+ head?: never;
1383
+ patch?: never;
1384
+ trace?: never;
1385
+ };
1386
+ "/v1/chat/threads": {
1387
+ parameters: {
1388
+ query?: never;
1389
+ header?: never;
1390
+ path?: never;
1391
+ cookie?: never;
1392
+ };
1393
+ /**
1394
+ * The owner's open conversations
1395
+ * @description List the owner's live conversations, newest first, without their turns. Older conversations
1396
+ * roll into one record per month once more than the node's ceiling are open, and those are not
1397
+ * listed here. Owner sessions only.
1398
+ */
1399
+ get: operations["listChatThreads"];
1400
+ put?: never;
1401
+ /**
1402
+ * Start a conversation
1403
+ * @description Start a conversation and provision the owner's chat agent if this is their first. The agent
1404
+ * is a real GAII principal that appears in the Agents tab beside the ones they connected
1405
+ * themselves, and its scopes are edited in the same place. The title is a placeholder until the
1406
+ * first thing the person says replaces it. Owner sessions only.
1407
+ */
1408
+ post: operations["createChatThread"];
1409
+ delete?: never;
1410
+ options?: never;
1411
+ head?: never;
1412
+ patch?: never;
1413
+ trace?: never;
1414
+ };
1415
+ "/v1/chat/threads/{id}": {
1416
+ parameters: {
1417
+ query?: never;
1418
+ header?: never;
1419
+ path: {
1420
+ id: string;
1421
+ };
1422
+ cookie?: never;
1423
+ };
1424
+ /**
1425
+ * One conversation, in full
1426
+ * @description Return one conversation with every turn it holds, including the tool calls the agent made and
1427
+ * which model answered each turn. A conversation the caller does not own is reported as absent.
1428
+ * Owner sessions only.
1429
+ */
1430
+ get: operations["getChatThread"];
1431
+ put?: never;
1432
+ post?: never;
1433
+ /**
1434
+ * Throw a conversation away
1435
+ * @description Delete one conversation and its turns. The conversation is looked up first, so a caller who
1436
+ * cannot see it is told nothing exists rather than being told a deletion happened. Owner
1437
+ * sessions only.
1438
+ */
1439
+ delete: operations["deleteChatThread"];
1440
+ options?: never;
1441
+ head?: never;
1442
+ patch?: never;
1443
+ trace?: never;
1444
+ };
1445
+ "/v1/chat/threads/{id}/reset": {
1446
+ parameters: {
1447
+ query?: never;
1448
+ header?: never;
1449
+ path?: never;
1450
+ cookie?: never;
1451
+ };
1452
+ get?: never;
1453
+ put?: never;
1454
+ /**
1455
+ * Forget the agent session, keep the conversation
1456
+ * @description Drop the agent session this conversation runs on. The next message opens a fresh one, which
1457
+ * is how a change to the chat agent's scopes takes effect: the session's credential carries the
1458
+ * scopes it was minted with. The conversation itself is untouched. Owner sessions only.
1459
+ */
1460
+ post: operations["resetChatThreadSession"];
1461
+ delete?: never;
1462
+ options?: never;
1463
+ head?: never;
1464
+ patch?: never;
1465
+ trace?: never;
1466
+ };
1467
+ "/v1/chat/threads/{id}/turn": {
1468
+ parameters: {
1469
+ query?: never;
1470
+ header?: never;
1471
+ path?: never;
1472
+ cookie?: never;
1473
+ };
1474
+ get?: never;
1475
+ put?: never;
1476
+ /**
1477
+ * Say something, and watch what happens
1478
+ * @description Send one message and receive the agent's work as it happens, as `text/event-stream`. A turn
1479
+ * takes minutes when the agent is building something, so a single response at the end would be
1480
+ * indistinguishable from a hang.
1481
+ *
1482
+ * Each `data:` frame is one update: `{ kind: 'text', text }` as words are written,
1483
+ * `{ kind: 'thought', text }`, `{ kind: 'tool_call', id, title, status }` as each tool call
1484
+ * starts and finishes, `{ kind: 'done', stopReason, tokens }` at the end, and
1485
+ * `{ kind: 'error', message }` when the turn could not run — a node with no agent configured
1486
+ * answers with exactly that rather than hanging. `:keepalive` comments arrive every 15 s.
1487
+ *
1488
+ * The person's own words are written to the conversation before the agent is asked anything,
1489
+ * so a turn that fails halfway leaves a record of what was said. Owner sessions only.
1490
+ */
1491
+ post: operations["sendChatTurn"];
1492
+ delete?: never;
1493
+ options?: never;
1494
+ head?: never;
1495
+ patch?: never;
1496
+ trace?: never;
1497
+ };
1363
1498
  "/v1/checkin": {
1364
1499
  parameters: {
1365
1500
  query?: never;
@@ -2073,7 +2208,8 @@ export interface paths {
2073
2208
  /**
2074
2209
  * Which side this person lands on (the switch)
2075
2210
  * @description The new home or the old profile. K2: the choice is per USER and stored on the account, so it follows them to another device; a per-tab choice would mean landing on whichever side happened to be the default every morning.
2076
- * When nothing has been chosen, `defaulted` is true and the answer comes from the account's cohort (K3): an account created on the remake lands on the home, one created before it lands where it always did. Nobody's workflow changes under them.
2211
+ * There are three sides: the chat, the new home, and the old profile.
2212
+ * When nothing has been chosen, `defaulted` is true and the answer comes from the account's cohort (K3): an account created before the remake lands where it always did, so nobody's workflow changes under them. A newer account lands in the chat, which is the one place a person who has connected no AI tool of their own can do something on their first visit — but only on a node that HAS a chat agent. Where there is none, the new home is the answer, since landing somebody in a box that can only say "no agent configured" is worse.
2077
2213
  * `track` and `switched` are returned read-only, for transparency — no route here changes `track`.
2078
2214
  */
2079
2215
  get: operations["getHomeUiTrack"];
@@ -2571,6 +2707,40 @@ export interface paths {
2571
2707
  patch?: never;
2572
2708
  trace?: never;
2573
2709
  };
2710
+ "/v1/ai/image": {
2711
+ parameters: {
2712
+ query?: never;
2713
+ header?: never;
2714
+ path?: never;
2715
+ cookie?: never;
2716
+ };
2717
+ get?: never;
2718
+ put?: never;
2719
+ /**
2720
+ * Generate an image on the owner's AI key
2721
+ * @description Makes a picture from a description and stores it in the caller's own storage, answering with
2722
+ * a key and a URL rather than the image. Bytes returned inline would travel through a tool
2723
+ * result and an agent's context for nothing, and this node already has a place where files live
2724
+ * and can be pointed at.
2725
+ *
2726
+ * Needs an image model: the owner's `imageModel`, or the node's default. With neither it
2727
+ * refuses as NO_IMAGE_MODEL rather than falling back to a chat model, which would answer an
2728
+ * image request with prose and leave the caller holding an opaque provider error.
2729
+ *
2730
+ * Spends the owner's daily AI budget and is refused before the provider is called when that
2731
+ * budget is used up. Gated like the other AI routes: an owner session, or any principal holding
2732
+ * `ai:use`.
2733
+ *
2734
+ * Pass `public: true` when a model or a web page has to fetch the image back by URL; the
2735
+ * default is private.
2736
+ */
2737
+ post: operations["generateImage"];
2738
+ delete?: never;
2739
+ options?: never;
2740
+ head?: never;
2741
+ patch?: never;
2742
+ trace?: never;
2743
+ };
2574
2744
  "/v1/ai/transcribe": {
2575
2745
  parameters: {
2576
2746
  query?: never;
@@ -4284,6 +4454,231 @@ export interface paths {
4284
4454
  patch?: never;
4285
4455
  trace?: never;
4286
4456
  };
4457
+ "/v1/datapackages": {
4458
+ parameters: {
4459
+ query?: never;
4460
+ header?: never;
4461
+ path?: never;
4462
+ cookie?: never;
4463
+ };
4464
+ /**
4465
+ * The caller's own packages
4466
+ * @description One entry per package, pointing at its NEWEST version, plus `lastError` when the most recent
4467
+ * production run failed. That pairing is the point: a package that has not changed and a
4468
+ * package whose producer is broken look identical without it.
4469
+ */
4470
+ get: operations["listDataPackages"];
4471
+ put?: never;
4472
+ /**
4473
+ * Publish a data package version
4474
+ * @description Build, check and store one immutable version. The quality gate runs FIRST: if any row fails
4475
+ * its resource's Table Schema the response is 422 with the row and column of every problem and
4476
+ * NOTHING is written, so the package stays on its previous version rather than acquiring a
4477
+ * half-finished one at a permanent address.
4478
+ *
4479
+ * The version is the content hash of the descriptor, so re-publishing identical data answers
4480
+ * 200 with `unchanged: true` instead of creating a second version — a deterministic producer
4481
+ * proving it is deterministic is not an update.
4482
+ *
4483
+ * `schema` per resource is either a Table Schema (declared) or omitted/`infer` (proposed from
4484
+ * the rows). The descriptor records which, as `aimeat.schemaSource`, so a consumer can see
4485
+ * whether anybody confirmed the types.
4486
+ */
4487
+ post: operations["publishDataPackage"];
4488
+ delete?: never;
4489
+ options?: never;
4490
+ head?: never;
4491
+ patch?: never;
4492
+ trace?: never;
4493
+ };
4494
+ "/v1/datapackages/validate": {
4495
+ parameters: {
4496
+ query?: never;
4497
+ header?: never;
4498
+ path?: never;
4499
+ cookie?: never;
4500
+ };
4501
+ get?: never;
4502
+ put?: never;
4503
+ /**
4504
+ * Run the quality gate without writing
4505
+ * @description The same check `POST /v1/datapackages` runs, with no side effect: infer or apply each
4506
+ * resource's Table Schema, validate every row against it, and answer with the coordinates of
4507
+ * anything wrong plus the schemas that were used. This is what puts a row-and-column error in
4508
+ * front of a publisher in the browser, before anything is stored.
4509
+ */
4510
+ post: operations["validateDataPackage"];
4511
+ delete?: never;
4512
+ options?: never;
4513
+ head?: never;
4514
+ patch?: never;
4515
+ trace?: never;
4516
+ };
4517
+ "/v1/datapackages/{owner}/{name}": {
4518
+ parameters: {
4519
+ query?: never;
4520
+ header?: never;
4521
+ path?: never;
4522
+ cookie?: never;
4523
+ };
4524
+ /**
4525
+ * A package descriptor
4526
+ * @description The Frictionless descriptor for one version. Without `version` the newest is resolved through
4527
+ * the package's mutable pointer, and the pointer travels back so a consumer can see whether the
4528
+ * latest production run failed. With `version` the answer is pinned and can never change.
4529
+ *
4530
+ * No authentication: a published package is public, and a program reading one should not need
4531
+ * an AIMEAT session. For the raw bytes use the descriptor_url this returns, which is a
4532
+ * permanent, range-readable /v1/pub address.
4533
+ */
4534
+ get: operations["getDataPackage"];
4535
+ put?: never;
4536
+ post?: never;
4537
+ delete?: never;
4538
+ options?: never;
4539
+ head?: never;
4540
+ patch?: never;
4541
+ trace?: never;
4542
+ };
4543
+ "/v1/datapackages/{owner}/{name}/versions": {
4544
+ parameters: {
4545
+ query?: never;
4546
+ header?: never;
4547
+ path?: never;
4548
+ cookie?: never;
4549
+ };
4550
+ /**
4551
+ * Every version of one package
4552
+ * @description Newest first, each with the explanation it was published with, its row count, its size and
4553
+ * its permanent address. `current: true` marks the one the pointer names, and `supersedes`
4554
+ * names the version each one replaced, so the history reads as a chain rather than a list of
4555
+ * hashes.
4556
+ *
4557
+ * The versions are discovered from the stored keys rather than from an index, so nothing can
4558
+ * be published without appearing here. How far back it goes is the owner's retention policy.
4559
+ *
4560
+ * No authentication, for the same reason as the descriptor: a history nobody can see is not a
4561
+ * history a consumer can rely on.
4562
+ */
4563
+ get: operations["listDataPackageVersions"];
4564
+ put?: never;
4565
+ post?: never;
4566
+ delete?: never;
4567
+ options?: never;
4568
+ head?: never;
4569
+ patch?: never;
4570
+ trace?: never;
4571
+ };
4572
+ "/v1/datapackages/{owner}/{name}/rows/{resource}": {
4573
+ parameters: {
4574
+ query?: never;
4575
+ header?: never;
4576
+ path?: never;
4577
+ cookie?: never;
4578
+ };
4579
+ /**
4580
+ * A window of rows
4581
+ * @description A paginated read for a UI or an agent that wants to look rather than download. For anything
4582
+ * larger, read the resource's CSV from its permanent address — that is what it is for, and it
4583
+ * answers byte ranges.
4584
+ */
4585
+ get: operations["readDataPackageRows"];
4586
+ put?: never;
4587
+ post?: never;
4588
+ delete?: never;
4589
+ options?: never;
4590
+ head?: never;
4591
+ patch?: never;
4592
+ trace?: never;
4593
+ };
4594
+ "/v1/odata/{owner}/{name}": {
4595
+ parameters: {
4596
+ query?: never;
4597
+ header?: never;
4598
+ path?: never;
4599
+ cookie?: never;
4600
+ };
4601
+ /**
4602
+ * OData service document
4603
+ * @description The first thing a native connector fetches: which entity sets this feed offers. One entity
4604
+ * set per tabular resource in the package.
4605
+ *
4606
+ * Paste this URL into Excel's "From OData Feed" or Power BI's OData connector and the rest is
4607
+ * automatic — and the workbook refreshes itself afterwards, which is the whole reason this
4608
+ * exists next to the CSV address.
4609
+ */
4610
+ get: operations["odataServiceDocument"];
4611
+ put?: never;
4612
+ post?: never;
4613
+ delete?: never;
4614
+ options?: never;
4615
+ head?: never;
4616
+ patch?: never;
4617
+ trace?: never;
4618
+ };
4619
+ "/v1/odata/{owner}/{name}/$metadata": {
4620
+ parameters: {
4621
+ query?: never;
4622
+ header?: never;
4623
+ path?: never;
4624
+ cookie?: never;
4625
+ };
4626
+ /**
4627
+ * CSDL metadata (XML)
4628
+ * @description The CSDL v4 document, projected from the package's Table Schema — which is the ONE place
4629
+ * columns and types are declared, so the metadata cannot drift from the data.
4630
+ *
4631
+ * XML, not JSON: that is what a v4 metadata document is and what every native connector parses.
4632
+ * Types map Frictionless to EDM (string→Edm.String, integer→Edm.Int64, number→Edm.Double,
4633
+ * boolean→Edm.Boolean, date→Edm.Date, datetime→Edm.DateTimeOffset).
4634
+ *
4635
+ * Every entity gets a synthetic `RowId` key, because OData requires an entity key and a CSV row
4636
+ * has no identity of its own. It is the row's ordinal within the version, which is stable
4637
+ * precisely because the version is immutable. Every other property is nullable: a Table Schema's
4638
+ * `primaryKey` is the only statement anybody made about required-ness.
4639
+ */
4640
+ get: operations["odataMetadata"];
4641
+ put?: never;
4642
+ post?: never;
4643
+ delete?: never;
4644
+ options?: never;
4645
+ head?: never;
4646
+ patch?: never;
4647
+ trace?: never;
4648
+ };
4649
+ "/v1/odata/{owner}/{name}/{resource}": {
4650
+ parameters: {
4651
+ query?: never;
4652
+ header?: never;
4653
+ path?: never;
4654
+ cookie?: never;
4655
+ };
4656
+ /**
4657
+ * An entity set — the rows
4658
+ * @description The rows of one resource, with the readable subset of the OData query language applied.
4659
+ *
4660
+ * SUPPORTED: `$select`, `$top`, `$skip`, `$filter`, `$orderby`, `$count`, `$format`.
4661
+ * `$filter` reads `field eq|ne|gt|ge|lt|le value` clauses joined by `and`, plus
4662
+ * `contains()`, `startswith()` and `endswith()`.
4663
+ *
4664
+ * ANYTHING ELSE IS REFUSED, NEVER IGNORED — 501 for a construct this feed does not implement
4665
+ * (`$expand`, `$apply`, `$search`, `or`, `not`), 400 for a property that does not exist. That
4666
+ * is the design decision worth knowing: a server that ignores a query option returns MORE ROWS
4667
+ * THAN THE CLIENT ASKED FOR, and the client puts them in a report as the answer. There is no
4668
+ * symptom — the numbers are simply wrong. A visibly missing feature is cheap by comparison.
4669
+ *
4670
+ * `$count=true` reports what the FILTER matched, before `$top`/`$skip`, which is what the option
4671
+ * means and what a paging client needs.
4672
+ */
4673
+ get: operations["odataEntitySet"];
4674
+ put?: never;
4675
+ post?: never;
4676
+ delete?: never;
4677
+ options?: never;
4678
+ head?: never;
4679
+ patch?: never;
4680
+ trace?: never;
4681
+ };
4287
4682
  "/v1/storage": {
4288
4683
  parameters: {
4289
4684
  query?: never;
@@ -4345,7 +4740,12 @@ export interface paths {
4345
4740
  get: operations["downloadFile"];
4346
4741
  put?: never;
4347
4742
  post?: never;
4348
- /** Delete file */
4743
+ /**
4744
+ * Delete file
4745
+ * @description Removes one file from the CALLER's own namespace. Irreversible: a stored file has no version history behind it the way a memory record does.
4746
+ *
4747
+ * Scope: own namespace only. Files are keyed by (owner, key), so a file someone else owns answers 404 here even when the caller is allowed to READ it through `GET /v1/pub/{gaii}/{key}`. There is deliberately no cross-owner delete.
4748
+ */
4349
4749
  delete: operations["deleteFile"];
4350
4750
  options?: never;
4351
4751
  /** File metadata */
@@ -5568,7 +5968,7 @@ export interface paths {
5568
5968
  };
5569
5969
  /**
5570
5970
  * Site map for agents (markdown)
5571
- * @description One-page map of the node in markdown: the public pages (from the shared public-page registry), the agent documentation (llms.txt, AGENTS.md, the OpenAPI contract, the app building prompt) and the machine-readable discovery endpoints, each with a one-line description. The answer to "what is here and where do I start" that neither sitemap.xml nor the 145 kB llms.txt gives. Apex only — an app origin gets its own (404 until then).
5971
+ * @description One-page map of the node in markdown: the public pages (from the shared public-page registry), the agent documentation (llms.txt, AGENTS.md, the OpenAPI contract, the app building prompt) and the machine-readable discovery endpoints, each with a one-line description. The answer to "what is here and where do I start" that neither sitemap.xml nor the 124 kB llms-full.txt gives. Apex only — an app origin gets its own (404 until then).
5572
5972
  */
5573
5973
  get: operations["sitemapMd"];
5574
5974
  put?: never;
@@ -5588,7 +5988,7 @@ export interface paths {
5588
5988
  };
5589
5989
  /**
5590
5990
  * Orientation for a coding agent (AGENTS.md convention)
5591
- * @description Short markdown orientation for a coding agent that has met this node as a dependency or an integration target: what AIMEAT is, how to get an identity (RFC 8628 device flow), the identity/scope/morsel vocabulary needed before the first call, worked curl examples, the response-envelope and discovery-header conventions, and links to the full references. Deliberately short — llms.txt is the manual, this is the orientation. Also served at /agents.md. Apex only.
5991
+ * @description Short markdown orientation for a coding agent that has met this node as a dependency or an integration target: what AIMEAT is, how to get an identity (RFC 8628 device flow), the identity/scope/morsel vocabulary needed before the first call, worked curl examples, the response-envelope and discovery-header conventions, and links to the full references. Deliberately short — llms-full.txt is the manual, this is the orientation. Also served at /agents.md. Apex only.
5592
5992
  */
5593
5993
  get: operations["agentsMd"];
5594
5994
  put?: never;
@@ -5607,8 +6007,8 @@ export interface paths {
5607
6007
  cookie?: never;
5608
6008
  };
5609
6009
  /**
5610
- * Full builder's manual for AI agents (llmstxt.org)
5611
- * @description The node's complete agent-facing manual: starter templates, the SDK library and library-pack tables (generated from the library-pack registry, so they cannot drift from /v1/libs), core concepts, the device-authorization and MCP connection flows, the response envelope, and the endpoint reference. Opens with a blockquote summary and link-list sections pointing at the site map, AGENTS.md, the OpenAPI contract and the discovery endpoints. On an app origin this path serves THAT app's agent face instead.
6010
+ * Curated index of this node for AI readers (llmstxt.org)
6011
+ * @description The node's curated map, under 8 kB: an H1, a blockquote summary whose first sentence names the full manual at /llms-full.txt, then link-list sections for the documentation, the machine-readable discovery endpoints, the human pages (generated from the shared public-page registry) and an Optional section a reader can skip for a shorter context. This is the first fetch; /llms-full.txt is the manual behind it. On an app origin this path serves THAT app's agent face instead.
5612
6012
  */
5613
6013
  get: operations["llmsTxt"];
5614
6014
  put?: never;
@@ -5627,8 +6027,8 @@ export interface paths {
5627
6027
  cookie?: never;
5628
6028
  };
5629
6029
  /**
5630
- * Full builder's manual at the conventional full-content path
5631
- * @description Byte-for-byte the same document as /llms.txt. The llmstxt.org convention splits a link index from the full content; this node's llms.txt has always BEEN the full content, and every published skill, the app-building prompt and robots.txt point at that exact path, so the index moved into the manual rather than the manual moving out from under its readers. Apex only.
6030
+ * Full builder's manual for AI agents (llmstxt.org full content)
6031
+ * @description The node's complete agent-facing manual: starter templates, the SDK library and library-pack tables (generated from the library-pack registry, so they cannot drift from /v1/libs), core concepts, the device-authorization and MCP connection flows, the response envelope, and the endpoint reference. /llms.txt is the curated index over this document, and this is what it points at. Apex only.
5632
6032
  */
5633
6033
  get: operations["llmsFullTxt"];
5634
6034
  put?: never;
@@ -7738,6 +8138,149 @@ export interface paths {
7738
8138
  patch?: never;
7739
8139
  trace?: never;
7740
8140
  };
8141
+ "/v1/apps/{owner}/{filename}/screenshot/capture": {
8142
+ parameters: {
8143
+ query?: never;
8144
+ header?: never;
8145
+ path?: never;
8146
+ cookie?: never;
8147
+ };
8148
+ get?: never;
8149
+ put?: never;
8150
+ /**
8151
+ * Render the published app now and store the screenshot
8152
+ * @description Renders `{owner}/{filename}` in a real headless browser at 1200x750, stores the JPEG, and
8153
+ * returns the URL of `GET .../screenshot`. The sibling `POST .../screenshot` accepts a picture
8154
+ * the caller already has; this one takes it.
8155
+ *
8156
+ * Until this existed the node had no request path that rendered, deliberately: rendering is the
8157
+ * most expensive thing it does, and an open one is a denial-of-service shape. It exists because
8158
+ * a caller that has just published an app otherwise cannot see what it made. The publish
8159
+ * response says the bytes arrived, not that the page works, and a blank screen, a broken layout
8160
+ * or a script that never ran all answer 200.
8161
+ *
8162
+ * The screenshot URL needs no authentication, which is what makes it usable as a model input:
8163
+ * an address a provider can fetch, rather than bytes to carry.
8164
+ *
8165
+ * Owner or operator only, and throttled per owner. Only published apps can be rendered; a draft
8166
+ * has no public page.
8167
+ */
8168
+ post: operations["captureAppScreenshot"];
8169
+ delete?: never;
8170
+ options?: never;
8171
+ head?: never;
8172
+ patch?: never;
8173
+ trace?: never;
8174
+ };
8175
+ "/v1/apps/{owner}/{filename}/draft/write": {
8176
+ parameters: {
8177
+ query?: never;
8178
+ header?: never;
8179
+ path?: never;
8180
+ cookie?: never;
8181
+ };
8182
+ get?: never;
8183
+ put?: never;
8184
+ /**
8185
+ * Append to, or replace, the app's draft
8186
+ * @description Writes a PIECE of the draft. `PUT .../draft` takes the whole app base64-encoded in one
8187
+ * request, which suits a client that already has the file and is impossible for a caller
8188
+ * composing one: no model emits 400 kB in a single response. Call this repeatedly with
8189
+ * `mode: append` until the file is complete, then publish the draft.
8190
+ *
8191
+ * Content is plain UTF-8 text, not base64. The caller is composing HTML rather than moving a
8192
+ * file, and base64 would inflate the body by a third for nothing.
8193
+ *
8194
+ * The size ceiling is checked before anything is written, so a chunk that would push the draft
8195
+ * past the node's app size limit leaves the previous content intact instead of truncating it.
8196
+ * Pass `expected_size_bytes` while building across many calls to be refused, rather than
8197
+ * silently duplicating a chunk, if the draft moved underneath you.
8198
+ */
8199
+ post: operations["writeAppDraft"];
8200
+ delete?: never;
8201
+ options?: never;
8202
+ head?: never;
8203
+ patch?: never;
8204
+ trace?: never;
8205
+ };
8206
+ "/v1/apps/{owner}/{filename}/draft/replace": {
8207
+ parameters: {
8208
+ query?: never;
8209
+ header?: never;
8210
+ path?: never;
8211
+ cookie?: never;
8212
+ };
8213
+ get?: never;
8214
+ put?: never;
8215
+ /**
8216
+ * Replace an exact passage inside the app's draft
8217
+ * @description The editing counterpart to `.../draft/write`: change part of a draft without sending the
8218
+ * whole file. `old_string` must match exactly, including indentation and line breaks.
8219
+ *
8220
+ * Without `replace_all` the match must be unique. Both refusals carry the actual number of
8221
+ * occurrences, because the caller's next move differs between none and several: none means the
8222
+ * text is not there at all, and several means the surrounding context has to be widened until
8223
+ * the target is unambiguous.
8224
+ */
8225
+ post: operations["replaceInAppDraft"];
8226
+ delete?: never;
8227
+ options?: never;
8228
+ head?: never;
8229
+ patch?: never;
8230
+ trace?: never;
8231
+ };
8232
+ "/v1/apps/{owner}/{filename}/draft/lines": {
8233
+ parameters: {
8234
+ query?: never;
8235
+ header?: never;
8236
+ path?: never;
8237
+ cookie?: never;
8238
+ };
8239
+ /**
8240
+ * Read a line range of the app's draft
8241
+ * @description Returns a slice of the draft as text, plus the total line count and byte size. `GET
8242
+ * .../draft` returns the WHOLE slot base64-encoded, which is right for a client restoring its
8243
+ * working copy and wrong for a caller that wants the twenty lines it is about to change.
8244
+ *
8245
+ * Bounded twice: a request with no range returns the first page with `has_more` set rather than
8246
+ * the whole app, and a slice that would exceed the character ceiling is cut at a line boundary
8247
+ * with the same flag. A caller therefore never aims a replacement at text it only half received.
8248
+ */
8249
+ get: operations["readAppDraftLines"];
8250
+ put?: never;
8251
+ post?: never;
8252
+ delete?: never;
8253
+ options?: never;
8254
+ head?: never;
8255
+ patch?: never;
8256
+ trace?: never;
8257
+ };
8258
+ "/v1/apps/{owner}/{filename}/draft/seed": {
8259
+ parameters: {
8260
+ query?: never;
8261
+ header?: never;
8262
+ path?: never;
8263
+ cookie?: never;
8264
+ };
8265
+ get?: never;
8266
+ put?: never;
8267
+ /**
8268
+ * Copy a published version into the app's draft slot
8269
+ * @description Loads a published version's source into the draft, server-side, so an app that is already
8270
+ * live can be continued. Without it there is nothing to edit: the app read routes serve the
8271
+ * bytes for download, and every draft write path has always taken its bytes from the caller.
8272
+ *
8273
+ * Seeding under a different `{filename}` copies the app, manifest and all. The source manifest
8274
+ * is the base, so the copy keeps the original name and category rather than inheriting from
8275
+ * whatever happens to live at the destination name.
8276
+ */
8277
+ post: operations["seedAppDraft"];
8278
+ delete?: never;
8279
+ options?: never;
8280
+ head?: never;
8281
+ patch?: never;
8282
+ trace?: never;
8283
+ };
7741
8284
  "/v1/apps/{owner}/{filename}/draft/preview-token": {
7742
8285
  parameters: {
7743
8286
  query?: never;
@@ -12302,11 +12845,7 @@ export interface paths {
12302
12845
  path?: never;
12303
12846
  cookie?: never;
12304
12847
  };
12305
- /**
12306
- * Who holds this organism, and who made it
12307
- * @description `owners` is everyone with the organism's highest authority, in the order they were added, and is never empty. `created_by` is who made it and never changes, including through a handover. The deprecated `creator_ghii` on the organism record mirrors `owners[0]`.
12308
- */
12309
- get: operations["listOrganismOwners"];
12848
+ get?: never;
12310
12849
  put?: never;
12311
12850
  /**
12312
12851
  * Add an owner
@@ -14267,7 +14806,8 @@ export interface paths {
14267
14806
  };
14268
14807
  /**
14269
14808
  * Get task detail
14270
- * @description Get full task detail including all events and TODO items.
14809
+ * @description Full task detail: TODO items, attachments as presigned handles authorized for this reader, and once the task has finished — `outcome`: what it actually produced.
14810
+ * `outcome` carries the agent's own completion message and the address of the deliverable it published. It is absent while the task is still running, because an unfinished task has no outcome and an empty one would read as "finished with nothing". Before this, a completed task answered with `status: "done"` and nothing else: the completion message lived only on the terminal event and the deliverable pointer was stored but never returned, so a caller had to already know that a second, differently-shaped endpoint existed in order to find out what happened. The deliverable comes back as an ADDRESS rather than as content, because an output may be megabytes.
14271
14811
  */
14272
14812
  get: operations["getAgentTask"];
14273
14813
  put?: never;
@@ -14352,6 +14892,26 @@ export interface paths {
14352
14892
  patch?: never;
14353
14893
  trace?: never;
14354
14894
  };
14895
+ "/v1/agents/{name}/tasks/{id}/queue": {
14896
+ parameters: {
14897
+ query?: never;
14898
+ header?: never;
14899
+ path?: never;
14900
+ cookie?: never;
14901
+ };
14902
+ get?: never;
14903
+ put?: never;
14904
+ /**
14905
+ * Release a draft task to the agent
14906
+ * @description Move a draft task to queued, which is the point at which the agent it is for can see it. Owner, or a same-owner app holding task:write. When the target agent's mode is task-runner the task goes straight to active, exactly as it would have at create time, and the response says so in auto_activated.
14907
+ */
14908
+ post: operations["queueAgentTask"];
14909
+ delete?: never;
14910
+ options?: never;
14911
+ head?: never;
14912
+ patch?: never;
14913
+ trace?: never;
14914
+ };
14355
14915
  "/v1/agents/{name}/tasks/{id}/start": {
14356
14916
  parameters: {
14357
14917
  query?: never;
@@ -22963,20 +23523,91 @@ export interface components {
22963
23523
  };
22964
23524
  /** @description Max minutes to wait for this step's success signal before timed-out. Default 60 (agent/ecosystem steps) / 1440 (human-input steps). */
22965
23525
  timeout_min?: number;
22966
- /** @description Absent ⇒ the default agent-dispatch. `export-out` pushes a memory key to a GEAI; `trigger-geai` invokes a GEAI capability (both complete on the tunnel reply). `human-input` parks the run (step state `waiting-human`) and asks the owner a structured question (in-app inbox + push); the run resumes when the owner answers via POST /v1/workflows/{id}/runs/{runId}/steps/{stepId}/answer, or the `on_timeout` policy fires after timeout_min (default 1440 = 24h): fail (timed-out, default) | skip | default (synthesize the answer `default_option`, by "timeout-default"). The answer JSON ({picks, pick, other, answeredAt, by}) is written to `answer_to_key` (templated, sandbox-prefix-honoring) so downstream steps branch on it with deterministic json_field gates — e.g. required_to_function {op: json_field, key: <answer_to_key>, path: pick, equals: approve}. */
23526
+ /** @description Absent ⇒ the default agent-dispatch. `export-out` pushes a memory key to a GEAI; `trigger-geai` invokes a GEAI capability (both complete on the tunnel reply). `human-input` parks the run (step state `waiting-human`) and asks the owner a structured question (in-app inbox + push); the run resumes when the owner answers via POST /v1/workflows/{id}/runs/{runId}/steps/{stepId}/answer, or the `on_timeout` policy fires after timeout_min (default 1440 = 24h): fail (timed-out, default) | skip | default (synthesize the answer `default_option`, by "timeout-default"). The answer JSON ({picks, pick, other, answeredAt, by}) is written to `answer_to_key` (templated, sandbox-prefix-honoring) so downstream steps branch on it with deterministic json_field gates — e.g. required_to_function {op: json_field, key: <answer_to_key>, path: pick, equals: approve}. `extension` runs one of the OWNER'S OWN extension actions on this node, in the sandbox, with no agent session and no model call — the deterministic half of a pipeline (fetch, normalise, hash, write a file) next to the agent steps that interpret. It completes through the same path as an ecosystem step, so its `success_signal` decides green or red; a `success_signal` is REQUIRED on an extension step, because without one the step would go green whenever the script merely returned, whatever it produced. Naming an extension installed by anyone else is refused at save AND at run: an unattended call has no paywall, no contract and no meter, so it would be an unlimited standing call on someone else's capability, API keys and quota. */
22967
23527
  action?: {
22968
23528
  /** @enum {string} */
22969
- kind: "agent" | "export-out" | "trigger-geai" | "human-input";
23529
+ kind: "agent" | "export-out" | "trigger-geai" | "human-input" | "extension" | "datapackage";
22970
23530
  /** @description export-out / trigger-geai: the target GEAI. */
22971
23531
  geai?: string;
22972
23532
  /** @description trigger-geai (required) / export-out (default __deposit__). */
22973
23533
  capability?: string;
22974
23534
  /** @description export-out: owner memory key whose value is pushed. */
22975
23535
  from?: string;
22976
- /** @description trigger-geai: capability input. */
23536
+ /** @description trigger-geai: capability input. extension: the action's input, with `{var}` substituted into its string leaves at dispatch (numbers and booleans pass through unchanged). */
22977
23537
  input?: {
22978
23538
  [key: string]: unknown;
22979
23539
  };
23540
+ /** @description extension: the extension name — must be installed by this workflow's owner. */
23541
+ extension?: string;
23542
+ /** @description extension: the action id on that extension. */
23543
+ action?: string;
23544
+ /** @description extension: run against this named instance (its config, secrets decrypted, arrives as ctx.instance). */
23545
+ instance_id?: string;
23546
+ /** @description extension: owner-namespace key (templated, sandbox-prefix-honoring) the action's RETURN VALUE is written to, so a signal can gate on it — the analogue of `answer_to_key`. It is needed because an extension's own memory lives in the `ext:{name}` namespace while a workflow's signals read owner scope, and those never intersect: a signal pointed at what the extension wrote for itself can only read nothing. Absent `success_signal`, the default gate is that this key is non-empty. A step must declare one or the other. */
23547
+ result_to_key?: string;
23548
+ /** @description datapackage: the package name. It becomes part of the permanent address, so it is a name rather than a sentence. */
23549
+ name?: string;
23550
+ /** @description datapackage: the owner-namespace key an earlier step wrote (its `result_to_key`), {var}-templated. This is the join a repeating package needs and the one no other component can make: an extension step lands its result in the owner's namespace as a PRIVATE record, which the sandbox cannot read back (ctx.memory.get sees `ext:{name}`, getPublic returns only public records). The engine already runs as the owner and already wrote that key. */
23551
+ from_key?: string;
23552
+ /** @description datapackage: dotted path to the rows INSIDE that value. A producer answers with an envelope (`{ ok, total, results }`) far more often than with a bare array, so naming the path is how a workflow says which part of the answer is the table. Omit when the value is the array itself. */
23553
+ rows_at?: string;
23554
+ /** @description extension: call the action repeatedly and merge the pages. Real registries page — `laake-fi` caps at 500 rows on a set of 718, so one call answers `truncated: true` and a package built from it holds five-sevenths of the data with nothing saying so. The merged value keeps the LAST page's envelope with `items_at` replaced by every row collected, plus `pagesFetched` and `complete`. `complete` is false when the loop stopped at `max_pages` rather than at the end of the data, which is what makes "did we get all of it" something a success_signal can assert. */
23555
+ paging?: {
23556
+ /** @description Input field carrying the offset; set on each call. */
23557
+ offset_param: string;
23558
+ /** @description Rows per page, and the increment. */
23559
+ page_size: number;
23560
+ /** @description Dotted path to a page's rows. */
23561
+ items_at: string;
23562
+ /** @description Dotted path to the reported total. Absent = stop on a short page. */
23563
+ total_at?: string;
23564
+ /** @description Hard stop. Required: a producer that never reports completion must not loop forever. */
23565
+ max_pages: number;
23566
+ };
23567
+ /** @description extension: call the action once per value and merge the answers — the other shape a real producer has. `kumppani` answers about ONE company per call, so a package covering ten companies is ten calls. Paging varies an offset over one query; this varies a parameter over a list. Both merge `items_at` and both add `complete`. A call that fails fails the STEP: ten companies of which one could not be read is not a package about ten companies. */
23568
+ for_each?: {
23569
+ /** @description The values to iterate; each is {var}-templated. */
23570
+ values: string[];
23571
+ /** @description Input field each value is set on. */
23572
+ param: string;
23573
+ /** @description Dotted path to the rows in ONE answer. */
23574
+ items_at: string;
23575
+ };
23576
+ /** @description datapackage: several lists in one answer, published as ONE table with a discriminator. `aiuutiset` answers with topics, actors and sources — the same numbers under a differently-named label each — and `rows_at` names exactly one path, so without this such a producer could only publish a third of what it knows. Each source gets its own `columns` (that is what reconciles topic/actor/source into one `name`) and its own `set` of constant columns (that is the discriminator). When `union` is present the top-level `rows_at` and `columns` are not used. */
23577
+ union?: {
23578
+ rows_at: string;
23579
+ columns?: {
23580
+ [key: string]: string;
23581
+ };
23582
+ /** @description Constant columns added to every row from this source. */
23583
+ set?: {
23584
+ [key: string]: string;
23585
+ };
23586
+ }[];
23587
+ /** @description datapackage: column name to a dotted path INSIDE each row. Omit to publish the rows as they are. A Table Schema describes scalars and a real producer answers with nested objects (`buyer: { name, businessId }`) and arrays, so this is the transformation these bindings actually need — the first production run of one refused 200 row problems for exactly that reason. It is a mapping rather than a script on purpose: flattening is declarative and lands in the descriptor as a recorded transformation, where a scripting language in a workflow descriptor would be a sandbox with no boundary. A missing path yields null rather than dropping the column, so a row that lost a field is a visible gap instead of a silently different table; an array at the end of a path is joined with a semicolon. */
23588
+ columns?: {
23589
+ [key: string]: string;
23590
+ };
23591
+ /** @description datapackage: what moved against the previous version and why, {var}-templated. Required, and required at SAVE as well as at publish — a workflow that discovers the contract at 06:00 has already lost the run it was written for. */
23592
+ changes?: string;
23593
+ /** @description datapackage: the Table Schema the rows must satisfy. Omitting it INFERS from the rows, and for a repeating producer that is the wrong default even though it is the convenient one: inference widens to fit whatever arrived, so a run where the upstream sent a word instead of a number publishes a version whose column is quietly a string, and every consumer's join against it stops matching with no error anywhere. Declared, the same run is refused with the row and the field named, and the package stands on its previous version. */
23594
+ schema?: {
23595
+ fields?: {
23596
+ name: string;
23597
+ type: string;
23598
+ }[];
23599
+ };
23600
+ /** @description datapackage: resource name, default `rows`. */
23601
+ resource?: string;
23602
+ /** @description datapackage: sources, licence, legal basis and transformations, carried into the descriptor. */
23603
+ provenance?: {
23604
+ [key: string]: unknown;
23605
+ };
23606
+ /** @description datapackage: how many old versions to keep. */
23607
+ retention_policy?: {
23608
+ keep?: number;
23609
+ unit?: string;
23610
+ };
22980
23611
  /** @description human-input: the structured question (AskUserQuestion-shaped). */
22981
23612
  question?: {
22982
23613
  header?: string;
@@ -25766,6 +26397,174 @@ export interface operations {
25766
26397
  404: components["responses"]["NotFound"];
25767
26398
  };
25768
26399
  };
26400
+ getChatStatus: {
26401
+ parameters: {
26402
+ query?: never;
26403
+ header?: never;
26404
+ path?: never;
26405
+ cookie?: never;
26406
+ };
26407
+ requestBody?: never;
26408
+ responses: {
26409
+ /**
26410
+ * @description `{ enabled, agent_name, allowance_remaining_usd, has_own_key, note? }`. `note` is present
26411
+ * only when `enabled` is false, and names what an operator has to set.
26412
+ */
26413
+ 200: {
26414
+ headers: {
26415
+ [name: string]: unknown;
26416
+ };
26417
+ content?: never;
26418
+ };
26419
+ 401: components["responses"]["Unauthorized"];
26420
+ 403: components["responses"]["Forbidden"];
26421
+ };
26422
+ };
26423
+ listChatThreads: {
26424
+ parameters: {
26425
+ query?: never;
26426
+ header?: never;
26427
+ path?: never;
26428
+ cookie?: never;
26429
+ };
26430
+ requestBody?: never;
26431
+ responses: {
26432
+ /** @description `{ threads: [{ id, title, created_at, updated_at, turns }] }` */
26433
+ 200: {
26434
+ headers: {
26435
+ [name: string]: unknown;
26436
+ };
26437
+ content?: never;
26438
+ };
26439
+ 401: components["responses"]["Unauthorized"];
26440
+ 403: components["responses"]["Forbidden"];
26441
+ };
26442
+ };
26443
+ createChatThread: {
26444
+ parameters: {
26445
+ query?: never;
26446
+ header?: never;
26447
+ path?: never;
26448
+ cookie?: never;
26449
+ };
26450
+ requestBody?: {
26451
+ content: {
26452
+ "application/json": {
26453
+ /** @description Optional title. Otherwise taken from the first message. */
26454
+ title?: string;
26455
+ };
26456
+ };
26457
+ };
26458
+ responses: {
26459
+ /** @description `{ thread: { id, title, createdAt, updatedAt, turns: [] } }` */
26460
+ 201: {
26461
+ headers: {
26462
+ [name: string]: unknown;
26463
+ };
26464
+ content?: never;
26465
+ };
26466
+ 401: components["responses"]["Unauthorized"];
26467
+ 403: components["responses"]["Forbidden"];
26468
+ };
26469
+ };
26470
+ getChatThread: {
26471
+ parameters: {
26472
+ query?: never;
26473
+ header?: never;
26474
+ path: {
26475
+ id: string;
26476
+ };
26477
+ cookie?: never;
26478
+ };
26479
+ requestBody?: never;
26480
+ responses: {
26481
+ /** @description `{ thread: { id, title, createdAt, updatedAt, gooseSessionId?, turns: [{ role, text, at, tools?, model? }] } }` */
26482
+ 200: {
26483
+ headers: {
26484
+ [name: string]: unknown;
26485
+ };
26486
+ content?: never;
26487
+ };
26488
+ 401: components["responses"]["Unauthorized"];
26489
+ 403: components["responses"]["Forbidden"];
26490
+ 404: components["responses"]["NotFound"];
26491
+ };
26492
+ };
26493
+ deleteChatThread: {
26494
+ parameters: {
26495
+ query?: never;
26496
+ header?: never;
26497
+ path: {
26498
+ id: string;
26499
+ };
26500
+ cookie?: never;
26501
+ };
26502
+ requestBody?: never;
26503
+ responses: {
26504
+ /** @description `{ deleted: true }` */
26505
+ 200: {
26506
+ headers: {
26507
+ [name: string]: unknown;
26508
+ };
26509
+ content?: never;
26510
+ };
26511
+ 401: components["responses"]["Unauthorized"];
26512
+ 403: components["responses"]["Forbidden"];
26513
+ 404: components["responses"]["NotFound"];
26514
+ };
26515
+ };
26516
+ resetChatThreadSession: {
26517
+ parameters: {
26518
+ query?: never;
26519
+ header?: never;
26520
+ path?: never;
26521
+ cookie?: never;
26522
+ };
26523
+ requestBody?: never;
26524
+ responses: {
26525
+ /** @description `{ reset: true }` */
26526
+ 200: {
26527
+ headers: {
26528
+ [name: string]: unknown;
26529
+ };
26530
+ content?: never;
26531
+ };
26532
+ 401: components["responses"]["Unauthorized"];
26533
+ 403: components["responses"]["Forbidden"];
26534
+ 404: components["responses"]["NotFound"];
26535
+ };
26536
+ };
26537
+ sendChatTurn: {
26538
+ parameters: {
26539
+ query?: never;
26540
+ header?: never;
26541
+ path?: never;
26542
+ cookie?: never;
26543
+ };
26544
+ requestBody: {
26545
+ content: {
26546
+ "application/json": {
26547
+ /** @description What to say. Must not be empty. */
26548
+ text: string;
26549
+ };
26550
+ };
26551
+ };
26552
+ responses: {
26553
+ /** @description SSE stream of turn updates */
26554
+ 200: {
26555
+ headers: {
26556
+ [name: string]: unknown;
26557
+ };
26558
+ content: {
26559
+ "text/event-stream": string;
26560
+ };
26561
+ };
26562
+ 400: components["responses"]["BadRequest"];
26563
+ 401: components["responses"]["Unauthorized"];
26564
+ 403: components["responses"]["Forbidden"];
26565
+ 404: components["responses"]["NotFound"];
26566
+ };
26567
+ };
25769
26568
  agentCheckin: {
25770
26569
  parameters: {
25771
26570
  query?: never;
@@ -27120,7 +27919,7 @@ export interface operations {
27120
27919
  content: {
27121
27920
  "application/json": {
27122
27921
  /** @enum {string} */
27123
- ui: "home" | "profile";
27922
+ ui: "home" | "profile" | "chat";
27124
27923
  };
27125
27924
  };
27126
27925
  };
@@ -27132,7 +27931,7 @@ export interface operations {
27132
27931
  };
27133
27932
  content?: never;
27134
27933
  };
27135
- /** @description ui must be "home" or "profile" */
27934
+ /** @description ui must be "home", "profile" or "chat" */
27136
27935
  400: {
27137
27936
  headers: {
27138
27937
  [name: string]: unknown;
@@ -28097,6 +28896,101 @@ export interface operations {
28097
28896
  403: components["responses"]["AimeatError"];
28098
28897
  };
28099
28898
  };
28899
+ generateImage: {
28900
+ parameters: {
28901
+ query?: never;
28902
+ header?: never;
28903
+ path?: never;
28904
+ cookie?: never;
28905
+ };
28906
+ requestBody: {
28907
+ content: {
28908
+ "application/json": {
28909
+ /** @description What the picture should show. */
28910
+ prompt: string;
28911
+ /** @description Provider-specific size string, e.g. "1024x1024". Passed through untouched. */
28912
+ size?: string;
28913
+ /** @description Where to store it. Defaults to ai-images/<timestamp>-<random>.<ext>. */
28914
+ storage_key?: string;
28915
+ /**
28916
+ * @description Store it publicly readable, so a model or page can fetch it by URL.
28917
+ * @default false
28918
+ */
28919
+ public?: boolean;
28920
+ /** @description Override the image model. */
28921
+ model?: string;
28922
+ /** @description Attribution for the per-app quota and the spend report. */
28923
+ app_id?: string;
28924
+ };
28925
+ };
28926
+ };
28927
+ responses: {
28928
+ /** @description The image was generated and stored */
28929
+ 200: {
28930
+ headers: {
28931
+ [name: string]: unknown;
28932
+ };
28933
+ content: {
28934
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
28935
+ data?: {
28936
+ storage_key?: string;
28937
+ mime_type?: string;
28938
+ size?: number;
28939
+ model?: string;
28940
+ /** @enum {string} */
28941
+ visibility?: "public" | "private";
28942
+ url?: string;
28943
+ usage?: {
28944
+ cost_usd?: number;
28945
+ /** @description false when the provider reported no cost; never estimated */
28946
+ cost_exact?: boolean;
28947
+ };
28948
+ budget?: {
28949
+ daily_budget_usd?: number;
28950
+ spent_today_usd?: number;
28951
+ remaining_usd?: number;
28952
+ };
28953
+ };
28954
+ };
28955
+ };
28956
+ };
28957
+ /** @description INVALID_BODY, PROMPT_TOO_LONG, or NO_IMAGE_MODEL when neither the owner nor the node has named one */
28958
+ 400: {
28959
+ headers: {
28960
+ [name: string]: unknown;
28961
+ };
28962
+ content?: never;
28963
+ };
28964
+ /** @description Unauthorized, or INVALID_API_KEY when the provider rejected the key */
28965
+ 401: {
28966
+ headers: {
28967
+ [name: string]: unknown;
28968
+ };
28969
+ content?: never;
28970
+ };
28971
+ /** @description QUOTA_EXHAUSTED - the daily budget is spent; nothing was generated */
28972
+ 402: {
28973
+ headers: {
28974
+ [name: string]: unknown;
28975
+ };
28976
+ content?: never;
28977
+ };
28978
+ /** @description RATE_LIMITED by the provider */
28979
+ 429: {
28980
+ headers: {
28981
+ [name: string]: unknown;
28982
+ };
28983
+ content?: never;
28984
+ };
28985
+ /** @description PROVIDER_ERROR - the provider failed; the message carries what it said */
28986
+ 502: {
28987
+ headers: {
28988
+ [name: string]: unknown;
28989
+ };
28990
+ content?: never;
28991
+ };
28992
+ };
28993
+ };
28100
28994
  aiTranscribe: {
28101
28995
  parameters: {
28102
28996
  query?: never;
@@ -30508,6 +31402,393 @@ export interface operations {
30508
31402
  };
30509
31403
  };
30510
31404
  };
31405
+ listDataPackages: {
31406
+ parameters: {
31407
+ query?: never;
31408
+ header?: never;
31409
+ path?: never;
31410
+ cookie?: never;
31411
+ };
31412
+ requestBody?: never;
31413
+ responses: {
31414
+ /** @description The caller's packages, newest first */
31415
+ 200: {
31416
+ headers: {
31417
+ [name: string]: unknown;
31418
+ };
31419
+ content?: never;
31420
+ };
31421
+ /** @description Authentication required */
31422
+ 401: {
31423
+ headers: {
31424
+ [name: string]: unknown;
31425
+ };
31426
+ content?: never;
31427
+ };
31428
+ };
31429
+ };
31430
+ publishDataPackage: {
31431
+ parameters: {
31432
+ query?: never;
31433
+ header?: never;
31434
+ path?: never;
31435
+ cookie?: never;
31436
+ };
31437
+ requestBody: {
31438
+ content: {
31439
+ "application/json": {
31440
+ /** @description Lowercase letters, digits and dashes, 2-64 chars. It is an address segment. */
31441
+ name: string;
31442
+ /** @description REQUIRED. What moved against the previous version and why. A version nobody explained is a version a consumer cannot decide about, so this is not optional. */
31443
+ changes: string;
31444
+ title?: string;
31445
+ description?: string;
31446
+ resources: {
31447
+ /** @description Becomes data/{name}.csv in the package. */
31448
+ name: string;
31449
+ rows: {
31450
+ [key: string]: unknown;
31451
+ }[];
31452
+ /** @description A Table Schema object, or "infer" (the default) to propose one from the rows. */
31453
+ schema?: "infer" | {
31454
+ fields: {
31455
+ name: string;
31456
+ /** @enum {string} */
31457
+ type: "string" | "integer" | "number" | "boolean" | "date" | "datetime" | "any";
31458
+ description?: string;
31459
+ }[];
31460
+ /** @description Fields that must be present, non-empty and unique across rows. */
31461
+ primaryKey?: string[];
31462
+ };
31463
+ title?: string;
31464
+ description?: string;
31465
+ }[];
31466
+ /** @description What the producer was asked for — the window, the keywords. Travels in the descriptor. */
31467
+ parameters?: {
31468
+ [key: string]: unknown;
31469
+ };
31470
+ /** @description Origin, legal basis and licence. The owner is responsible for the data; this is where they say so. */
31471
+ provenance?: {
31472
+ sources?: {
31473
+ url?: string;
31474
+ title?: string;
31475
+ retrievedAt?: string;
31476
+ role?: string;
31477
+ }[];
31478
+ /** @description packageIds this was derived from. */
31479
+ lineage?: string[];
31480
+ transformations?: {
31481
+ by?: string;
31482
+ what?: string;
31483
+ }[];
31484
+ legalBasis?: string;
31485
+ consentStatus?: string;
31486
+ retention?: string;
31487
+ license?: string;
31488
+ supersedes?: string;
31489
+ };
31490
+ retentionPolicy?: {
31491
+ keep?: number;
31492
+ /** @enum {string} */
31493
+ unit?: "versions" | "months";
31494
+ };
31495
+ };
31496
+ };
31497
+ };
31498
+ responses: {
31499
+ /** @description Identical content was already published — no new version (unchanged is true) */
31500
+ 200: {
31501
+ headers: {
31502
+ [name: string]: unknown;
31503
+ };
31504
+ content?: never;
31505
+ };
31506
+ /** @description A new version was written */
31507
+ 201: {
31508
+ headers: {
31509
+ [name: string]: unknown;
31510
+ };
31511
+ content?: never;
31512
+ };
31513
+ /** @description The request is malformed (no name, no changes, no resources, a bad resource name) */
31514
+ 400: {
31515
+ headers: {
31516
+ [name: string]: unknown;
31517
+ };
31518
+ content?: never;
31519
+ };
31520
+ /** @description Authentication required */
31521
+ 401: {
31522
+ headers: {
31523
+ [name: string]: unknown;
31524
+ };
31525
+ content?: never;
31526
+ };
31527
+ /** @description Missing storage:write or memory:write */
31528
+ 403: {
31529
+ headers: {
31530
+ [name: string]: unknown;
31531
+ };
31532
+ content?: never;
31533
+ };
31534
+ /** @description The quality gate refused — issues[] carries the row and column of each problem */
31535
+ 422: {
31536
+ headers: {
31537
+ [name: string]: unknown;
31538
+ };
31539
+ content?: never;
31540
+ };
31541
+ };
31542
+ };
31543
+ validateDataPackage: {
31544
+ parameters: {
31545
+ query?: never;
31546
+ header?: never;
31547
+ path?: never;
31548
+ cookie?: never;
31549
+ };
31550
+ requestBody: {
31551
+ content: {
31552
+ "application/json": {
31553
+ resources: {
31554
+ name: string;
31555
+ rows: {
31556
+ [key: string]: unknown;
31557
+ }[];
31558
+ /** @description A Table Schema, or "infer" (default). */
31559
+ schema?: unknown;
31560
+ }[];
31561
+ };
31562
+ };
31563
+ };
31564
+ responses: {
31565
+ /** @description ok:false with issues[] is a normal answer here — the gate ran and refused. */
31566
+ 200: {
31567
+ headers: {
31568
+ [name: string]: unknown;
31569
+ };
31570
+ content?: never;
31571
+ };
31572
+ /** @description Authentication required */
31573
+ 401: {
31574
+ headers: {
31575
+ [name: string]: unknown;
31576
+ };
31577
+ content?: never;
31578
+ };
31579
+ };
31580
+ };
31581
+ getDataPackage: {
31582
+ parameters: {
31583
+ query?: {
31584
+ /** @description sha256:… to pin one version. */
31585
+ version?: string;
31586
+ };
31587
+ header?: never;
31588
+ path: {
31589
+ /** @description Owner name or GHII. */
31590
+ owner: string;
31591
+ name: string;
31592
+ };
31593
+ cookie?: never;
31594
+ };
31595
+ requestBody?: never;
31596
+ responses: {
31597
+ /** @description The descriptor, its permanent URL, and the latest pointer when unpinned */
31598
+ 200: {
31599
+ headers: {
31600
+ [name: string]: unknown;
31601
+ };
31602
+ content?: never;
31603
+ };
31604
+ /** @description No such package or version */
31605
+ 404: {
31606
+ headers: {
31607
+ [name: string]: unknown;
31608
+ };
31609
+ content?: never;
31610
+ };
31611
+ };
31612
+ };
31613
+ listDataPackageVersions: {
31614
+ parameters: {
31615
+ query?: never;
31616
+ header?: never;
31617
+ path: {
31618
+ /** @description Owner name or GHII. */
31619
+ owner: string;
31620
+ name: string;
31621
+ };
31622
+ cookie?: never;
31623
+ };
31624
+ requestBody?: never;
31625
+ responses: {
31626
+ /** @description The version list, newest first */
31627
+ 200: {
31628
+ headers: {
31629
+ [name: string]: unknown;
31630
+ };
31631
+ content?: never;
31632
+ };
31633
+ /** @description No such package */
31634
+ 404: {
31635
+ headers: {
31636
+ [name: string]: unknown;
31637
+ };
31638
+ content?: never;
31639
+ };
31640
+ };
31641
+ };
31642
+ readDataPackageRows: {
31643
+ parameters: {
31644
+ query?: {
31645
+ version?: string;
31646
+ offset?: number;
31647
+ limit?: number;
31648
+ /** @description Comma-separated field names. */
31649
+ select?: string;
31650
+ };
31651
+ header?: never;
31652
+ path: {
31653
+ owner: string;
31654
+ name: string;
31655
+ resource: string;
31656
+ };
31657
+ cookie?: never;
31658
+ };
31659
+ requestBody?: never;
31660
+ responses: {
31661
+ /** @description rows, total, and the Table Schema of what was returned */
31662
+ 200: {
31663
+ headers: {
31664
+ [name: string]: unknown;
31665
+ };
31666
+ content?: never;
31667
+ };
31668
+ /** @description No such package, version or resource */
31669
+ 404: {
31670
+ headers: {
31671
+ [name: string]: unknown;
31672
+ };
31673
+ content?: never;
31674
+ };
31675
+ };
31676
+ };
31677
+ odataServiceDocument: {
31678
+ parameters: {
31679
+ query?: {
31680
+ /** @description sha256:… to pin the feed to one version, which can then never change under the consumer. */
31681
+ version?: string;
31682
+ };
31683
+ header?: never;
31684
+ path: {
31685
+ owner: string;
31686
+ name: string;
31687
+ };
31688
+ cookie?: never;
31689
+ };
31690
+ requestBody?: never;
31691
+ responses: {
31692
+ /** @description { "@odata.context": …, "value": [ { name, kind, url } ] } */
31693
+ 200: {
31694
+ headers: {
31695
+ [name: string]: unknown;
31696
+ };
31697
+ content?: never;
31698
+ };
31699
+ /** @description No such package (OData error shape, not the node envelope) */
31700
+ 404: {
31701
+ headers: {
31702
+ [name: string]: unknown;
31703
+ };
31704
+ content?: never;
31705
+ };
31706
+ };
31707
+ };
31708
+ odataMetadata: {
31709
+ parameters: {
31710
+ query?: {
31711
+ version?: string;
31712
+ };
31713
+ header?: never;
31714
+ path: {
31715
+ owner: string;
31716
+ name: string;
31717
+ };
31718
+ cookie?: never;
31719
+ };
31720
+ requestBody?: never;
31721
+ responses: {
31722
+ /** @description CSDL v4 XML */
31723
+ 200: {
31724
+ headers: {
31725
+ [name: string]: unknown;
31726
+ };
31727
+ content: {
31728
+ "application/xml": string;
31729
+ };
31730
+ };
31731
+ /** @description No such package */
31732
+ 404: {
31733
+ headers: {
31734
+ [name: string]: unknown;
31735
+ };
31736
+ content?: never;
31737
+ };
31738
+ };
31739
+ };
31740
+ odataEntitySet: {
31741
+ parameters: {
31742
+ query?: {
31743
+ version?: string;
31744
+ $select?: string;
31745
+ $top?: number;
31746
+ $skip?: number;
31747
+ $filter?: string;
31748
+ $orderby?: string;
31749
+ $count?: boolean;
31750
+ };
31751
+ header?: never;
31752
+ path: {
31753
+ owner: string;
31754
+ name: string;
31755
+ /** @description The entity set name from the service document. */
31756
+ resource: string;
31757
+ };
31758
+ cookie?: never;
31759
+ };
31760
+ requestBody?: never;
31761
+ responses: {
31762
+ /** @description { "@odata.context": …, "@odata.count": …, "value": [ … ] } */
31763
+ 200: {
31764
+ headers: {
31765
+ [name: string]: unknown;
31766
+ };
31767
+ content?: never;
31768
+ };
31769
+ /** @description A named property does not exist, or an option is malformed */
31770
+ 400: {
31771
+ headers: {
31772
+ [name: string]: unknown;
31773
+ };
31774
+ content?: never;
31775
+ };
31776
+ /** @description No such package, version or entity set */
31777
+ 404: {
31778
+ headers: {
31779
+ [name: string]: unknown;
31780
+ };
31781
+ content?: never;
31782
+ };
31783
+ /** @description A query construct this feed does not implement — refused rather than ignored */
31784
+ 501: {
31785
+ headers: {
31786
+ [name: string]: unknown;
31787
+ };
31788
+ content?: never;
31789
+ };
31790
+ };
31791
+ };
30511
31792
  listStorage: {
30512
31793
  parameters: {
30513
31794
  query?: never;
@@ -30670,6 +31951,20 @@ export interface operations {
30670
31951
  requestBody?: never;
30671
31952
  responses: {
30672
31953
  200: components["responses"]["AimeatSuccess"];
31954
+ /** @description Anonymous agent outside the `anonymous/` key prefix */
31955
+ 403: {
31956
+ headers: {
31957
+ [name: string]: unknown;
31958
+ };
31959
+ content?: never;
31960
+ };
31961
+ /** @description No such file in the caller's own namespace */
31962
+ 404: {
31963
+ headers: {
31964
+ [name: string]: unknown;
31965
+ };
31966
+ content?: never;
31967
+ };
30673
31968
  };
30674
31969
  };
30675
31970
  fileMetadata: {
@@ -32228,7 +33523,7 @@ export interface operations {
32228
33523
  };
32229
33524
  requestBody?: never;
32230
33525
  responses: {
32231
- /** @description Builder's manual */
33526
+ /** @description Node index */
32232
33527
  200: {
32233
33528
  headers: {
32234
33529
  [name: string]: unknown;
@@ -35914,6 +37209,308 @@ export interface operations {
35914
37209
  };
35915
37210
  };
35916
37211
  };
37212
+ captureAppScreenshot: {
37213
+ parameters: {
37214
+ query?: never;
37215
+ header?: never;
37216
+ path: {
37217
+ owner: string;
37218
+ filename: string;
37219
+ };
37220
+ cookie?: never;
37221
+ };
37222
+ requestBody?: never;
37223
+ responses: {
37224
+ /** @description The app was rendered and the screenshot stored */
37225
+ 200: {
37226
+ headers: {
37227
+ [name: string]: unknown;
37228
+ };
37229
+ content: {
37230
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
37231
+ data?: {
37232
+ filename?: string;
37233
+ captured?: boolean;
37234
+ /** @description JPEG size in bytes */
37235
+ size?: number;
37236
+ screenshot_url?: string;
37237
+ };
37238
+ };
37239
+ };
37240
+ };
37241
+ 401: components["responses"]["Unauthorized"];
37242
+ /** @description Not your app */
37243
+ 403: {
37244
+ headers: {
37245
+ [name: string]: unknown;
37246
+ };
37247
+ content?: never;
37248
+ };
37249
+ /** @description No published app by that name */
37250
+ 404: {
37251
+ headers: {
37252
+ [name: string]: unknown;
37253
+ };
37254
+ content?: never;
37255
+ };
37256
+ /** @description RATE_LIMITED - the owner's hourly render allowance is used up */
37257
+ 429: {
37258
+ headers: {
37259
+ [name: string]: unknown;
37260
+ };
37261
+ content?: never;
37262
+ };
37263
+ /** @description RENDER_FAILED - the page did not render; the message carries the reason */
37264
+ 502: {
37265
+ headers: {
37266
+ [name: string]: unknown;
37267
+ };
37268
+ content?: never;
37269
+ };
37270
+ /** @description NO_BROWSER - this node has no usable browser to render with */
37271
+ 503: {
37272
+ headers: {
37273
+ [name: string]: unknown;
37274
+ };
37275
+ content?: never;
37276
+ };
37277
+ };
37278
+ };
37279
+ writeAppDraft: {
37280
+ parameters: {
37281
+ query?: never;
37282
+ header?: never;
37283
+ path: {
37284
+ owner: string;
37285
+ filename: string;
37286
+ };
37287
+ cookie?: never;
37288
+ };
37289
+ requestBody: {
37290
+ content: {
37291
+ "application/json": {
37292
+ /** @description The text to write. Plain UTF-8, not base64. */
37293
+ content: string;
37294
+ /**
37295
+ * @default append
37296
+ * @enum {string}
37297
+ */
37298
+ mode?: "append" | "replace";
37299
+ /** @description Refuse unless the draft currently has exactly this many bytes. */
37300
+ expected_size_bytes?: number;
37301
+ /** @description Display name; defaults from the live app, or from the draft once set. */
37302
+ name?: string;
37303
+ description?: string;
37304
+ };
37305
+ };
37306
+ };
37307
+ responses: {
37308
+ /** @description The piece was written */
37309
+ 200: {
37310
+ headers: {
37311
+ [name: string]: unknown;
37312
+ };
37313
+ content: {
37314
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
37315
+ data?: {
37316
+ filename?: string;
37317
+ mode?: string;
37318
+ size?: number;
37319
+ /** Format: date-time */
37320
+ updated_at?: string;
37321
+ has_live_version?: boolean;
37322
+ live_version_number?: number;
37323
+ };
37324
+ };
37325
+ };
37326
+ };
37327
+ 400: components["responses"]["BadRequest"];
37328
+ 401: components["responses"]["Unauthorized"];
37329
+ /** @description DRAFT_CHANGED - the draft is not the size the caller expected; nothing was written */
37330
+ 409: {
37331
+ headers: {
37332
+ [name: string]: unknown;
37333
+ };
37334
+ content?: never;
37335
+ };
37336
+ /** @description TOO_LARGE - the write would exceed the node's app size ceiling; nothing was written */
37337
+ 413: {
37338
+ headers: {
37339
+ [name: string]: unknown;
37340
+ };
37341
+ content?: never;
37342
+ };
37343
+ };
37344
+ };
37345
+ replaceInAppDraft: {
37346
+ parameters: {
37347
+ query?: never;
37348
+ header?: never;
37349
+ path: {
37350
+ owner: string;
37351
+ filename: string;
37352
+ };
37353
+ cookie?: never;
37354
+ };
37355
+ requestBody: {
37356
+ content: {
37357
+ "application/json": {
37358
+ /** @description The exact text to replace, including indentation. */
37359
+ old_string: string;
37360
+ new_string: string;
37361
+ /** @default false */
37362
+ replace_all?: boolean;
37363
+ };
37364
+ };
37365
+ };
37366
+ responses: {
37367
+ /** @description The replacement was made */
37368
+ 200: {
37369
+ headers: {
37370
+ [name: string]: unknown;
37371
+ };
37372
+ content: {
37373
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
37374
+ data?: {
37375
+ filename?: string;
37376
+ replacements?: number;
37377
+ size?: number;
37378
+ /** Format: date-time */
37379
+ updated_at?: string;
37380
+ };
37381
+ };
37382
+ };
37383
+ };
37384
+ 400: components["responses"]["BadRequest"];
37385
+ 401: components["responses"]["Unauthorized"];
37386
+ /** @description NO_DRAFT, or NOT_FOUND when old_string does not appear in the draft */
37387
+ 404: {
37388
+ headers: {
37389
+ [name: string]: unknown;
37390
+ };
37391
+ content?: never;
37392
+ };
37393
+ /** @description NOT_UNIQUE - old_string appears more than once and replace_all was not set */
37394
+ 409: {
37395
+ headers: {
37396
+ [name: string]: unknown;
37397
+ };
37398
+ content?: never;
37399
+ };
37400
+ };
37401
+ };
37402
+ readAppDraftLines: {
37403
+ parameters: {
37404
+ query?: {
37405
+ /** @description First line to return, 1-based. */
37406
+ offset?: number;
37407
+ limit?: number;
37408
+ };
37409
+ header?: never;
37410
+ path: {
37411
+ owner: string;
37412
+ filename: string;
37413
+ };
37414
+ cookie?: never;
37415
+ };
37416
+ requestBody?: never;
37417
+ responses: {
37418
+ /** @description The requested range */
37419
+ 200: {
37420
+ headers: {
37421
+ [name: string]: unknown;
37422
+ };
37423
+ content: {
37424
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
37425
+ data?: {
37426
+ filename?: string;
37427
+ size?: number;
37428
+ total_lines?: number;
37429
+ from_line?: number;
37430
+ to_line?: number;
37431
+ has_more?: boolean;
37432
+ mime_type?: string;
37433
+ /** Format: date-time */
37434
+ updated_at?: string;
37435
+ content?: string;
37436
+ };
37437
+ };
37438
+ };
37439
+ };
37440
+ /** @description INVALID_RANGE - offset is 1-based and limit is at least 1 */
37441
+ 400: {
37442
+ headers: {
37443
+ [name: string]: unknown;
37444
+ };
37445
+ content?: never;
37446
+ };
37447
+ 401: components["responses"]["Unauthorized"];
37448
+ /** @description NO_DRAFT - nothing is staged for this app */
37449
+ 404: {
37450
+ headers: {
37451
+ [name: string]: unknown;
37452
+ };
37453
+ content?: never;
37454
+ };
37455
+ };
37456
+ };
37457
+ seedAppDraft: {
37458
+ parameters: {
37459
+ query?: never;
37460
+ header?: never;
37461
+ path: {
37462
+ owner: string;
37463
+ /** @description The draft slot to write into. */
37464
+ filename: string;
37465
+ };
37466
+ cookie?: never;
37467
+ };
37468
+ requestBody?: {
37469
+ content: {
37470
+ "application/json": {
37471
+ /** @description The published app to copy from. Defaults to filename. */
37472
+ from_filename?: string;
37473
+ /** @description Which published version. Defaults to the newest. */
37474
+ version?: number;
37475
+ };
37476
+ };
37477
+ };
37478
+ responses: {
37479
+ /** @description The published source is now in the draft slot */
37480
+ 200: {
37481
+ headers: {
37482
+ [name: string]: unknown;
37483
+ };
37484
+ content: {
37485
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
37486
+ data?: {
37487
+ filename?: string;
37488
+ seeded_from?: string;
37489
+ seeded_version?: number;
37490
+ size?: number;
37491
+ /** Format: date-time */
37492
+ updated_at?: string;
37493
+ };
37494
+ };
37495
+ };
37496
+ };
37497
+ 401: components["responses"]["Unauthorized"];
37498
+ /** @description NOT_FOUND - no published app, or no such version, to copy from */
37499
+ 404: {
37500
+ headers: {
37501
+ [name: string]: unknown;
37502
+ };
37503
+ content?: never;
37504
+ };
37505
+ /** @description TOO_LARGE - the published app exceeds the node's current app size ceiling */
37506
+ 413: {
37507
+ headers: {
37508
+ [name: string]: unknown;
37509
+ };
37510
+ content?: never;
37511
+ };
37512
+ };
37513
+ };
35917
37514
  mintAppDraftPreviewToken: {
35918
37515
  parameters: {
35919
37516
  query?: never;
@@ -44121,21 +45718,6 @@ export interface operations {
44121
45718
  404: components["responses"]["NotFound"];
44122
45719
  };
44123
45720
  };
44124
- listOrganismOwners: {
44125
- parameters: {
44126
- query?: never;
44127
- header?: never;
44128
- path: {
44129
- id: string;
44130
- };
44131
- cookie?: never;
44132
- };
44133
- requestBody?: never;
44134
- responses: {
44135
- 200: components["responses"]["AimeatSuccess"];
44136
- 404: components["responses"]["NotFound"];
44137
- };
44138
- };
44139
45721
  addOrganismOwner: {
44140
45722
  parameters: {
44141
45723
  query?: never;
@@ -47619,7 +49201,8 @@ export interface operations {
47619
49201
  /** @description Primary task instructions. The agent crew reads this field as its prompt. */
47620
49202
  description?: string;
47621
49203
  /**
47622
- * @default draft
49204
+ * @description queued means the agent can see it; draft holds it for your review and is released later with POST .../{id}/queue.
49205
+ * @default queued
47623
49206
  * @enum {string}
47624
49207
  */
47625
49208
  status?: "draft" | "queued";
@@ -47839,6 +49422,39 @@ export interface operations {
47839
49422
  409: components["responses"]["Conflict"];
47840
49423
  };
47841
49424
  };
49425
+ queueAgentTask: {
49426
+ parameters: {
49427
+ query?: never;
49428
+ header?: never;
49429
+ path: {
49430
+ name: string;
49431
+ id: string;
49432
+ };
49433
+ cookie?: never;
49434
+ };
49435
+ requestBody?: never;
49436
+ responses: {
49437
+ /** @description Draft released */
49438
+ 200: {
49439
+ headers: {
49440
+ [name: string]: unknown;
49441
+ };
49442
+ content: {
49443
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
49444
+ data?: {
49445
+ task?: components["schemas"]["AgentTask"];
49446
+ /** @description The target agent is a task-runner, so the task is already active. */
49447
+ auto_activated?: boolean;
49448
+ };
49449
+ };
49450
+ };
49451
+ };
49452
+ 401: components["responses"]["Unauthorized"];
49453
+ 403: components["responses"]["Forbidden"];
49454
+ 404: components["responses"]["NotFound"];
49455
+ 409: components["responses"]["Conflict"];
49456
+ };
49457
+ };
47842
49458
  startAgentTask: {
47843
49459
  parameters: {
47844
49460
  query?: never;