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
@@ -0,0 +1,183 @@
1
+ /**
2
+ * @file src/services/datapackage/odps.ts
3
+ * @description The product sheet, as a projection of the descriptor. `odps.yaml` is generated into
4
+ * every published version so a package is describable to a buyer without anyone authoring a second
5
+ * document about it.
6
+ *
7
+ * ONE SCHEMA, MANY PROJECTIONS, and this is one of the projections. The Table Schema is the only
8
+ * place columns and types are declared; the ODPS sheet, the CSV header and an agent's view of the
9
+ * package are all derived from it, so they cannot drift. Nothing here is authored — every field
10
+ * traces to something the descriptor already holds, which is why it stays true when the package
11
+ * changes and why it needs no mapping layer to maintain.
12
+ *
13
+ * THREE PLACES THE SPEC'S CLOSED ENUMS DO NOT FIT, handled the same way each time: state it under
14
+ * `x-aimeat` rather than bend a field to nearly mean it.
15
+ * - `dataAccess[].format` is `TOON|JSON|XML|CSV|Excel|zip|plain text|GraphQL|MCP`. CSV is on it, so
16
+ * today's canonical form declares itself honestly. Parquet is not, and when Parquet arrives it
17
+ * goes in the extension block rather than being called `zip`.
18
+ * - `specification` is `OAS|RAML|Slate|MCP`. A plain file has no API specification, so the field is
19
+ * simply absent rather than filled with the closest wrong answer.
20
+ * - `updateFrequency` IS in the SLA dimension enum, and it is filled from the producer's cron —
21
+ * recorded, not described. A package nobody schedules gets no SLA block at all: an unstated
22
+ * service level is an absent one, never a promise of daily.
23
+ * @structure descriptorToOdps · odpsYamlKey
24
+ * @usage const doc = descriptorToOdps({ descriptor, ownerGhii, baseUrl, resourceUrls });
25
+ * @version-history
26
+ * v1.0.0 -- 2026-08-15 -- Initial (TARGET-063 vaihe 1: "the package is sellable").
27
+ */
28
+ import { stringify as yamlStringify } from 'yaml';
29
+ import { ODPS_VERSION, ODPS_SCHEMA_URL_YAML } from '../exchange-odps.js';
30
+ import { bare, packageKeyRoot } from './contract.js';
31
+ /** Where the generated sheet sits, beside the descriptor it was projected from. */
32
+ export const odpsYamlKey = (name, contentHash) => `${packageKeyRoot(name)}/${bare(contentHash)}/odps.yaml`;
33
+ /**
34
+ * A cron expression as an ODPS `updateFrequency` objective.
35
+ *
36
+ * Deliberately coarse: the SLA dimension takes a number and a unit, and a cron says more than that
37
+ * shape can hold. What a buyer needs from it is the ORDER OF MAGNITUDE — is this refreshed daily or
38
+ * quarterly — and an expression it cannot express is answered with null rather than a rounded
39
+ * fiction. `unit: 'never'` is the enum's own word for "no cadence", which is not the same as a
40
+ * cadence nobody stated.
41
+ */
42
+ function updateFrequencyFrom(cron) {
43
+ if (!cron)
44
+ return null;
45
+ const parts = cron.trim().split(/\s+/);
46
+ if (parts.length < 5)
47
+ return null;
48
+ const [, , dom, month, dow] = parts;
49
+ if (month !== '*')
50
+ return { objective: 1, unit: 'months' };
51
+ if (dom !== '*')
52
+ return { objective: 1, unit: 'months' };
53
+ if (dow !== '*') {
54
+ // A single weekday is weekly; a list of them is more often than that, and "days" is the
55
+ // honest floor rather than a fraction of a week.
56
+ return /^[0-7]$/.test(dow) ? { objective: 1, unit: 'weeks' } : { objective: 1, unit: 'days' };
57
+ }
58
+ return { objective: 1, unit: 'days' };
59
+ }
60
+ /**
61
+ * Project one published version into an ODPS v4.1 document.
62
+ *
63
+ * Everything traces to the descriptor. `status` is 'production' because a published version at a
64
+ * permanent immutable address is exactly that — a draft is a thing that has not been published, and
65
+ * this function only ever sees published ones.
66
+ */
67
+ export function descriptorToOdps(input) {
68
+ const { descriptor: d, resourceUrls, descriptorUrl } = input;
69
+ const lang = input.lang ?? 'en';
70
+ const a = d.aimeat;
71
+ const columns = d.resources.flatMap(r => r.schema.fields.map(f => `${r.name}.${f.name} (${f.type})`));
72
+ const rowTotal = d.resources.reduce((n, r) => n + r.rowCount, 0);
73
+ const details = {
74
+ name: d.title ?? d.name,
75
+ productID: a.packageId,
76
+ // v4.1 `type`: this is a dataset delivered as files, which is what 'dataset' means here.
77
+ type: 'dataset',
78
+ status: 'production',
79
+ visibility: 'public',
80
+ version: bare(a.contentHash).slice(0, 12),
81
+ description: d.description
82
+ ?? `${rowTotal} rows across ${d.resources.length} resource(s), as a Frictionless Data Package.`,
83
+ // The change note is the version's own explanation, and ODPS has a field that means exactly
84
+ // that. It is required on every AIMEAT version, so this is never empty.
85
+ versionNotes: a.changes,
86
+ // The columns, from the ONE place they are declared. A buyer reading the sheet knows the
87
+ // shape before contracting, and this line cannot drift from the data.
88
+ tags: ['frictionless', 'data-package', d.name],
89
+ outputFileFormats: ['CSV'],
90
+ ...(a.sources?.length ? {
91
+ recommendedDataProducts: a.sources.filter(s => s.url).map(s => s.url),
92
+ } : {}),
93
+ // A free sample without a separate artefact: the first resource IS the file, and it is
94
+ // world-readable. Nobody buys data blind, and here they do not have to.
95
+ ...(Object.values(resourceUrls)[0] ? { contentSample: Object.values(resourceUrls)[0] } : {}),
96
+ };
97
+ const dataAccess = {
98
+ default: {
99
+ name: { [lang]: 'Permanent file address' },
100
+ description: {
101
+ [lang]: 'The resource CSV at a permanent, immutable URL. No authentication, no API key, '
102
+ + 'byte ranges supported. The version is the content hash in the path, so this address '
103
+ + 'can never answer with different bytes.',
104
+ },
105
+ outputPortType: 'file',
106
+ format: 'CSV',
107
+ authenticationMethod: 'none',
108
+ accessURL: Object.values(resourceUrls)[0] ?? descriptorUrl,
109
+ documentationURL: descriptorUrl,
110
+ hashType: 'SHA-256',
111
+ checksum: bare(d.resources[0]?.hash ?? a.contentHash),
112
+ },
113
+ descriptor: {
114
+ name: { [lang]: 'Frictionless descriptor' },
115
+ description: {
116
+ [lang]: 'datapackage.json with a Table Schema per resource. frictionless-py, R and the JS '
117
+ + 'client resolve the resources from it with no AIMEAT knowledge.',
118
+ },
119
+ outputPortType: 'file',
120
+ format: 'JSON',
121
+ authenticationMethod: 'none',
122
+ accessURL: descriptorUrl,
123
+ documentationURL: descriptorUrl,
124
+ },
125
+ };
126
+ const freq = updateFrequencyFrom(a.producer.schedule);
127
+ const sla = freq
128
+ ? {
129
+ declarative: [{
130
+ name: { [lang]: 'Producer cadence' },
131
+ description: {
132
+ [lang]: `Refreshed by a ${a.producer.kind} producer on the schedule "${a.producer.schedule}". `
133
+ + 'A run that fails writes no version: the package stays on its previous one and the '
134
+ + 'failure is recorded on the package pointer.',
135
+ },
136
+ dimensions: [{
137
+ dimension: 'updateFrequency',
138
+ objective: String(freq.objective),
139
+ unit: freq.unit,
140
+ }],
141
+ }],
142
+ }
143
+ : null;
144
+ return {
145
+ schema: ODPS_SCHEMA_URL_YAML,
146
+ version: ODPS_VERSION,
147
+ product: {
148
+ details: { [lang]: details },
149
+ dataAccess,
150
+ ...(a.license ? { license: { scope: { definition: a.license } } } : {}),
151
+ ...(sla ? { SLA: sla } : {}),
152
+ // Everything the closed enums cannot hold, stated rather than bent into a near-fit.
153
+ 'x-aimeat': {
154
+ packageId: a.packageId,
155
+ contentHash: a.contentHash,
156
+ descriptorUrl,
157
+ profile: 'aimeat.datapackage/v1',
158
+ schemaSource: a.schemaSource,
159
+ producer: a.producer,
160
+ producedBy: a.producedBy,
161
+ resources: d.resources.map(r => ({
162
+ name: r.name, rowCount: r.rowCount, bytes: r.bytes, hash: r.hash,
163
+ url: resourceUrls[r.name] ?? null,
164
+ fields: r.schema.fields.map(f => ({ name: f.name, type: f.type })),
165
+ })),
166
+ columns,
167
+ ...(a.legalBasis ? { legalBasis: a.legalBasis } : {}),
168
+ ...(a.consentStatus ? { consentStatus: a.consentStatus } : {}),
169
+ ...(a.retention ? { retention: a.retention } : {}),
170
+ ...(a.retentionPolicy ? { retentionPolicy: a.retentionPolicy } : {}),
171
+ ...(a.lineage?.length ? { lineage: a.lineage } : {}),
172
+ ...(a.transformations?.length ? { transformations: a.transformations } : {}),
173
+ ...(a.supersedes ? { supersedes: a.supersedes } : {}),
174
+ ...(a.aiProvenanceId ? { aiProvenanceId: a.aiProvenanceId } : {}),
175
+ },
176
+ },
177
+ };
178
+ }
179
+ /** The generated sheet as YAML — the format ODPS leads with. */
180
+ export function odpsToYamlDocument(doc) {
181
+ return yamlStringify(doc, { lineWidth: 0 });
182
+ }
183
+ //# sourceMappingURL=odps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odps.js","sourceRoot":"","sources":["../../../../src/services/datapackage/odps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * @file src/services/datapackage/store.ts
3
+ * @description Publishing and reading an AIMEAT Data Package — the one implementation the three
4
+ * bindings (ctx.datapackage, the browser library, the MCP tools) all reach.
5
+ *
6
+ * REFUSE BEFORE YOU WRITE. `publish` validates every resource against its own Table Schema and
7
+ * returns the coordinates of what is wrong WITHOUT having stored a byte. The order is the point:
8
+ * this node's own audit found three defects of exactly one shape — bytes written before the name
9
+ * was claimed, a paywall standing down before comparing the coordinate, a response sent before the
10
+ * work it announced. A publish that wrote the CSV and then discovered the schema was violated would
11
+ * leave a half-version at a permanent address, which is worse than no version at all.
12
+ *
13
+ * AND A FAILED RUN LEAVES THE PREVIOUS VERSION STANDING. `recordFailure` writes the reason onto
14
+ * the mutable `latest.json` pointer and touches nothing else, so a consumer following the newest
15
+ * version keeps reading the last good one and can see that the newest attempt failed, when, and
16
+ * why. No empty version, no truncated version, no silent success.
17
+ *
18
+ * TWO SURFACES, ONE TRUTH. The BYTES in storage are canonical — a permanent, auth-free,
19
+ * range-readable address that DuckDB, pandas and frictionless-py read with no AIMEAT knowledge.
20
+ * The knowledge package written beside them is a CATALOGUE entry (`content_type: 'dataset'`, the
21
+ * value the closed union already has — `data-package` is not in it) so the package appears where a
22
+ * person and an agent look for knowledge. The catalogue points at the bytes; it never holds them,
23
+ * because a knowledge package is a collection of memory entries and memory does not carry files.
24
+ * @structure publishPackage · openPackage · readRows · recordFailure · listPackages
25
+ * @usage
26
+ * const out = await publishPackage({ storage, config }, ownerGhii, input, producedBy);
27
+ * if (!out.ok) return out.issues;
28
+ * @version-history
29
+ * v1.0.0 -- 2026-08-15 -- Initial (TARGET-063 vaihe 1, A4/B1/B2).
30
+ */
31
+ import type { AimeatConfig } from '../../config.js';
32
+ import type { Storage } from '../../storage/interface.js';
33
+ import { type Descriptor, type LatestPointer, type PublishInput, type TableSchema } from './contract.js';
34
+ import { type ValidationIssue } from './table.js';
35
+ export interface StoreDeps {
36
+ storage: Storage;
37
+ config: AimeatConfig;
38
+ }
39
+ /** Who produced this version. Every road knows it; none of them may make it up. */
40
+ export interface ProducedBy {
41
+ /** The exact principal: an owner GHII, an agent GAII, or the owner on an unattended road. */
42
+ gaii: string;
43
+ kind: Descriptor['aimeat']['producer']['kind'];
44
+ ref?: string;
45
+ schedule?: string;
46
+ run?: string;
47
+ }
48
+ export type PublishResult = {
49
+ ok: true;
50
+ descriptor: Descriptor;
51
+ contentHash: string;
52
+ descriptorUrl: string;
53
+ unchanged: boolean;
54
+ resources: Array<{
55
+ name: string;
56
+ url: string;
57
+ rowCount: number;
58
+ bytes: number;
59
+ }>;
60
+ /** Versions the owner's retention policy removed on this publish. Empty when no policy is
61
+ * set, which is the default: keep everything. Returned so the answer can SAY what was
62
+ * deleted — a deletion nobody can see is how a history disappears unnoticed. */
63
+ pruned: string[];
64
+ } | {
65
+ ok: false;
66
+ code: 'INVALID_INPUT' | 'QUALITY_GATE';
67
+ message: string;
68
+ issues: ValidationIssue[];
69
+ };
70
+ /**
71
+ * Build, check and store one version.
72
+ *
73
+ * `unchanged: true` means the content hash matched what is already published: the same address
74
+ * already holds these exact bytes, so nothing was rewritten. That is not a failure and not a new
75
+ * version — it is a deterministic producer proving it is deterministic, and the caller should say
76
+ * so rather than announcing an update that did not happen.
77
+ */
78
+ export declare function publishPackage(deps: StoreDeps, ownerGhii: string, input: PublishInput, producedBy: ProducedBy): Promise<PublishResult>;
79
+ /**
80
+ * A run failed. The package stays on the version it had; the pointer says the newest attempt did not
81
+ * land, when, and why. This is the whole of "epäonnistuminen näkyy, eikä sitä peitetä": no empty
82
+ * version is written, and a consumer polling `latest.json` learns the difference between a package
83
+ * that has not changed and one whose producer is broken.
84
+ */
85
+ export declare function recordFailure(deps: StoreDeps, ownerGhii: string, name: string, message: string): Promise<void>;
86
+ export interface OpenedPackage {
87
+ descriptor: Descriptor;
88
+ descriptorUrl: string;
89
+ latest?: LatestPointer;
90
+ }
91
+ /**
92
+ * Read a package back. `ref` is `pkg:{owner}/{name}` for the newest version, or
93
+ * `pkg:{owner}/{name}@sha256:…` to pin one. A pinned reference always answers with the same bytes,
94
+ * which is what makes pinning worth anything.
95
+ */
96
+ export declare function openPackage(deps: StoreDeps, ref: string, nodeId: string): Promise<OpenedPackage | null>;
97
+ /** Rows of one resource, paginated. The caller names the window; nothing here decides to send a
98
+ * whole table into somebody's context because it happened to fit. */
99
+ export declare function readRows(deps: StoreDeps, ref: string, nodeId: string, resource: string, opts?: {
100
+ offset?: number;
101
+ limit?: number;
102
+ select?: string[];
103
+ }): Promise<{
104
+ rows: Array<Record<string, unknown>>;
105
+ total: number;
106
+ schema: TableSchema;
107
+ } | null>;
108
+ /** Every package one owner has, newest version each, with any recorded failure. */
109
+ export declare function listPackages(deps: StoreDeps, ownerGhii: string): Promise<LatestPointer[]>;
110
+ /** One entry in a package's history: enough to decide about a version without opening it. */
111
+ export interface VersionEntry {
112
+ contentHash: string;
113
+ /** When this version's descriptor was written. Not the descriptor's own `created`, which is the
114
+ * first producer's clock; this is when these bytes landed here. */
115
+ at: string;
116
+ /** True for the one `latest.json` points at. There is exactly one, unless nothing is published. */
117
+ current: boolean;
118
+ /** The mandatory explanation. It is the reason a history is readable rather than a list of hashes. */
119
+ changes: string;
120
+ rowCount: number;
121
+ bytes: number;
122
+ descriptorUrl: string;
123
+ supersedes?: string;
124
+ }
125
+ /**
126
+ * Every version of one package, newest first.
127
+ *
128
+ * The versions are DISCOVERED FROM THE KEYS rather than from an index, because the keys are the
129
+ * index: a version is a directory named by its content hash, so nothing can be published without
130
+ * appearing here and nothing can be listed here without existing. An index would be a second thing
131
+ * to keep in step with the first.
132
+ *
133
+ * Each descriptor is read, which is one small GET per version. That is what makes `changes` and
134
+ * `rowCount` available, and it is bounded by the owner's retention policy rather than by time.
135
+ */
136
+ export declare function listVersions(deps: StoreDeps, ownerGhii: string, name: string): Promise<VersionEntry[]>;
137
+ /** `pkg:{owner}/{name}` or `pkg:{owner}/{name}@sha256:…`, or the bare `{name}` of your own. */
138
+ export declare function parseRef(ref: string, nodeId: string): {
139
+ ownerGhii: string;
140
+ name: string;
141
+ contentHash?: string;
142
+ } | null;
143
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/services/datapackage/store.ts"],"names":[],"mappings":"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"}