aimeat 3.1.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 (824) hide show
  1. package/dist/.env.example +58 -1
  2. package/dist/build-stamp.json +4 -4
  3. package/dist/locales/en.json +9225 -9103
  4. package/dist/locales/es.json +9217 -9095
  5. package/dist/locales/fi.json +9225 -9103
  6. package/dist/public/changelog.json +12 -0
  7. package/dist/public/css/views/admin.css +11 -0
  8. package/dist/public/css/views/chat.css +388 -0
  9. package/dist/public/css/views/profile.css +41 -0
  10. package/dist/public/js/services/admin.js +346 -331
  11. package/dist/public/js/services/chat.js +190 -0
  12. package/dist/public/js/services/organism-roles.js +51 -0
  13. package/dist/public/js/services/organisms.js +5 -25
  14. package/dist/public/js/services/speech-reader.js +26 -0
  15. package/dist/public/lib/VENDORED.md +1 -0
  16. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser-eh.worker.js +14 -0
  17. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser.js +23 -0
  18. package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-eh.wasm +0 -0
  19. package/dist/public/lib/duckdb-wasm@1.32.0/extensions/v1.4.3/wasm_eh/parquet.duckdb_extension.wasm +0 -0
  20. package/dist/public/lib/vendored-assets.json +19 -0
  21. package/dist/public/llms-full-template.txt +2706 -0
  22. package/dist/public/llms-index-template.txt +60 -0
  23. package/dist/public/robots.node.txt +64 -23
  24. package/dist/public/spa.html +9 -1
  25. package/dist/public/views/admin/organism-ownership-tab.js +124 -0
  26. package/dist/public/views/admin/owners-tab.js +15 -4
  27. package/dist/public/views/admin/usage-tab.calls.js +120 -0
  28. package/dist/public/views/admin/usage-tab.js +18 -4
  29. package/dist/public/views/admin.js +2 -0
  30. package/dist/public/views/chat/parts.js +257 -0
  31. package/dist/public/views/chat.js +327 -0
  32. package/dist/public/views/landing.js +24 -1
  33. package/dist/public/views/profile/agents/scope-model.js +320 -296
  34. package/dist/public/views/profile/landing-page.cards.js +1 -0
  35. package/dist/public/views/profile/organisms/home.js +3 -1
  36. package/dist/public/views/profile/organisms/members.js +29 -4
  37. package/dist/public/views/profile/usage-tab.js +204 -0
  38. package/dist/public/views/profile.js +2 -0
  39. package/dist/scripts/audit-mcp-schemas.js +41 -0
  40. package/dist/scripts/audit-mcp-schemas.js.map +1 -1
  41. package/dist/scripts/build-sdk-libs.d.ts.map +1 -1
  42. package/dist/scripts/build-sdk-libs.js +1 -0
  43. package/dist/scripts/build-sdk-libs.js.map +1 -1
  44. package/dist/scripts/check-ai-disclosure.js +11 -0
  45. package/dist/scripts/check-ai-disclosure.js.map +1 -1
  46. package/dist/scripts/check-commit-msg.d.ts +8 -0
  47. package/dist/scripts/check-commit-msg.d.ts.map +1 -0
  48. package/dist/scripts/check-commit-msg.js +118 -0
  49. package/dist/scripts/check-commit-msg.js.map +1 -0
  50. package/dist/scripts/check-denial-coverage.d.ts +29 -0
  51. package/dist/scripts/check-denial-coverage.d.ts.map +1 -0
  52. package/dist/scripts/check-denial-coverage.js +237 -0
  53. package/dist/scripts/check-denial-coverage.js.map +1 -0
  54. package/dist/scripts/check-ext-entrypoints.js +14 -2
  55. package/dist/scripts/check-ext-entrypoints.js.map +1 -1
  56. package/dist/scripts/check-liaison-surface.js +27 -2
  57. package/dist/scripts/check-liaison-surface.js.map +1 -1
  58. package/dist/scripts/check-locales.js +38 -0
  59. package/dist/scripts/check-locales.js.map +1 -1
  60. package/dist/scripts/check-outbound-fetch.d.ts.map +1 -1
  61. package/dist/scripts/check-outbound-fetch.js +16 -2
  62. package/dist/scripts/check-outbound-fetch.js.map +1 -1
  63. package/dist/scripts/check-route-scopes.d.ts.map +1 -1
  64. package/dist/scripts/check-route-scopes.js +33 -4
  65. package/dist/scripts/check-route-scopes.js.map +1 -1
  66. package/dist/scripts/check-shared-implementation.js +28 -11
  67. package/dist/scripts/check-shared-implementation.js.map +1 -1
  68. package/dist/scripts/check-sse-parity.js +14 -0
  69. package/dist/scripts/check-sse-parity.js.map +1 -1
  70. package/dist/scripts/check-trusted-keys.d.ts +90 -1
  71. package/dist/scripts/check-trusted-keys.d.ts.map +1 -1
  72. package/dist/scripts/check-trusted-keys.js +521 -52
  73. package/dist/scripts/check-trusted-keys.js.map +1 -1
  74. package/dist/scripts/indexnow.js +9 -7
  75. package/dist/scripts/indexnow.js.map +1 -1
  76. package/dist/src/auth/middleware.d.ts +69 -6
  77. package/dist/src/auth/middleware.d.ts.map +1 -1
  78. package/dist/src/auth/middleware.js +130 -28
  79. package/dist/src/auth/middleware.js.map +1 -1
  80. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts +5 -0
  81. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
  82. package/dist/src/cli/connect/mcp/tools/agent-tasks.js +20 -2
  83. package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
  84. package/dist/src/cli/connect/mcp/tools/agent-telemetry.d.ts +7 -1
  85. package/dist/src/cli/connect/mcp/tools/agent-telemetry.d.ts.map +1 -1
  86. package/dist/src/cli/connect/mcp/tools/agent-telemetry.js +24 -0
  87. package/dist/src/cli/connect/mcp/tools/agent-telemetry.js.map +1 -1
  88. package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -1
  89. package/dist/src/cli/connect/mcp/tools/apps.js +88 -0
  90. package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -1
  91. package/dist/src/cli/connect/mcp/tools/core.d.ts +7 -0
  92. package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
  93. package/dist/src/cli/connect/mcp/tools/core.js +83 -4
  94. package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
  95. package/dist/src/cli/connect/mcp/tools/organisms.d.ts +2 -0
  96. package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
  97. package/dist/src/cli/connect/mcp/tools/organisms.js +16 -0
  98. package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
  99. package/dist/src/cli/connect/onboarding-prompt.js +1 -1
  100. package/dist/src/cli/connect/skill-bundle.js +1 -1
  101. package/dist/src/cli/connect/tool-call-defs-agent.d.ts +1 -0
  102. package/dist/src/cli/connect/tool-call-defs-agent.d.ts.map +1 -1
  103. package/dist/src/cli/connect/tool-call-defs-agent.js +6 -0
  104. package/dist/src/cli/connect/tool-call-defs-agent.js.map +1 -1
  105. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts +21 -0
  106. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts.map +1 -0
  107. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js +137 -0
  108. package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js.map +1 -0
  109. package/dist/src/cli/connect/tool-call-defs-core.d.ts +1 -0
  110. package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
  111. package/dist/src/cli/connect/tool-call-defs-core.js +30 -0
  112. package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
  113. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  114. package/dist/src/cli/connect/tool-call.js +2 -0
  115. package/dist/src/cli/connect/tool-call.js.map +1 -1
  116. package/dist/src/config-types-ai.d.ts +76 -0
  117. package/dist/src/config-types-ai.d.ts.map +1 -0
  118. package/dist/src/config-types-ai.js +15 -0
  119. package/dist/src/config-types-ai.js.map +1 -0
  120. package/dist/src/config-types.d.ts +11 -2
  121. package/dist/src/config-types.d.ts.map +1 -1
  122. package/dist/src/config.d.ts.map +1 -1
  123. package/dist/src/config.js +25 -4
  124. package/dist/src/config.js.map +1 -1
  125. package/dist/src/data/appdev-pitfalls.d.ts +1 -0
  126. package/dist/src/data/appdev-pitfalls.d.ts.map +1 -1
  127. package/dist/src/data/appdev-pitfalls.js +11 -0
  128. package/dist/src/data/appdev-pitfalls.js.map +1 -1
  129. package/dist/src/data/builtin-skills.d.ts.map +1 -1
  130. package/dist/src/data/builtin-skills.js +3 -2
  131. package/dist/src/data/builtin-skills.js.map +1 -1
  132. package/dist/src/data/digital-signage-package.js +1 -1
  133. package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
  134. package/dist/src/data/library-packs/sdk.js +76 -0
  135. package/dist/src/data/library-packs/sdk.js.map +1 -1
  136. package/dist/src/data/library-packs/vendored.d.ts.map +1 -1
  137. package/dist/src/data/library-packs/vendored.js +81 -0
  138. package/dist/src/data/library-packs/vendored.js.map +1 -1
  139. package/dist/src/data/library-packs.d.ts +2 -2
  140. package/dist/src/data/library-packs.js +2 -2
  141. package/dist/src/data/public-pages.d.ts +13 -0
  142. package/dist/src/data/public-pages.d.ts.map +1 -1
  143. package/dist/src/data/public-pages.js +153 -113
  144. package/dist/src/data/public-pages.js.map +1 -1
  145. package/dist/src/generated/api-types.d.ts +2251 -102
  146. package/dist/src/generated/api-types.d.ts.map +1 -1
  147. package/dist/src/index-start.d.ts.map +1 -1
  148. package/dist/src/index-start.js +21 -1
  149. package/dist/src/index-start.js.map +1 -1
  150. package/dist/src/mcp/agent-tasks.d.ts +16 -0
  151. package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
  152. package/dist/src/mcp/agent-tasks.js +84 -54
  153. package/dist/src/mcp/agent-tasks.js.map +1 -1
  154. package/dist/src/mcp/agent-telemetry.d.ts +6 -1
  155. package/dist/src/mcp/agent-telemetry.d.ts.map +1 -1
  156. package/dist/src/mcp/agent-telemetry.js +37 -1
  157. package/dist/src/mcp/agent-telemetry.js.map +1 -1
  158. package/dist/src/mcp/ai-image.d.ts +22 -0
  159. package/dist/src/mcp/ai-image.d.ts.map +1 -0
  160. package/dist/src/mcp/ai-image.js +60 -0
  161. package/dist/src/mcp/ai-image.js.map +1 -0
  162. package/dist/src/mcp/annotations.d.ts +5 -0
  163. package/dist/src/mcp/annotations.d.ts.map +1 -1
  164. package/dist/src/mcp/annotations.js +23 -0
  165. package/dist/src/mcp/annotations.js.map +1 -1
  166. package/dist/src/mcp/apps-draft-edit.d.ts +28 -0
  167. package/dist/src/mcp/apps-draft-edit.d.ts.map +1 -0
  168. package/dist/src/mcp/apps-draft-edit.js +164 -0
  169. package/dist/src/mcp/apps-draft-edit.js.map +1 -0
  170. package/dist/src/mcp/apps-screenshot.d.ts +26 -0
  171. package/dist/src/mcp/apps-screenshot.d.ts.map +1 -0
  172. package/dist/src/mcp/apps-screenshot.js +39 -0
  173. package/dist/src/mcp/apps-screenshot.js.map +1 -0
  174. package/dist/src/mcp/catalog/definitions/agent-messaging.d.ts.map +1 -1
  175. package/dist/src/mcp/catalog/definitions/agent-messaging.js +18 -0
  176. package/dist/src/mcp/catalog/definitions/agent-messaging.js.map +1 -1
  177. package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts +1 -0
  178. package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts.map +1 -1
  179. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js +59 -0
  180. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js.map +1 -1
  181. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts +3 -0
  182. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts.map +1 -1
  183. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +96 -2
  184. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
  185. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts +2 -0
  186. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts.map +1 -1
  187. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js +7 -3
  188. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
  189. package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
  190. package/dist/src/mcp/catalog/scopes.js +34 -1
  191. package/dist/src/mcp/catalog/scopes.js.map +1 -1
  192. package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
  193. package/dist/src/mcp/catalog/surfaces.js +26 -7
  194. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  195. package/dist/src/mcp/core-admin.d.ts +7 -3
  196. package/dist/src/mcp/core-admin.d.ts.map +1 -1
  197. package/dist/src/mcp/core-admin.js +60 -3
  198. package/dist/src/mcp/core-admin.js.map +1 -1
  199. package/dist/src/mcp/core-datapackage.d.ts +32 -0
  200. package/dist/src/mcp/core-datapackage.d.ts.map +1 -0
  201. package/dist/src/mcp/core-datapackage.js +188 -0
  202. package/dist/src/mcp/core-datapackage.js.map +1 -0
  203. package/dist/src/mcp/core-storage.d.ts +7 -3
  204. package/dist/src/mcp/core-storage.d.ts.map +1 -1
  205. package/dist/src/mcp/core-storage.js +27 -4
  206. package/dist/src/mcp/core-storage.js.map +1 -1
  207. package/dist/src/mcp/core.d.ts.map +1 -1
  208. package/dist/src/mcp/core.js +3 -0
  209. package/dist/src/mcp/core.js.map +1 -1
  210. package/dist/src/mcp/extensions.d.ts.map +1 -1
  211. package/dist/src/mcp/extensions.js +11 -1
  212. package/dist/src/mcp/extensions.js.map +1 -1
  213. package/dist/src/mcp/index.d.ts +9 -0
  214. package/dist/src/mcp/index.d.ts.map +1 -1
  215. package/dist/src/mcp/index.js +43 -2
  216. package/dist/src/mcp/index.js.map +1 -1
  217. package/dist/src/mcp/organisms-email-invites.d.ts.map +1 -1
  218. package/dist/src/mcp/organisms-email-invites.js +2 -1
  219. package/dist/src/mcp/organisms-email-invites.js.map +1 -1
  220. package/dist/src/mcp/organisms-name-invites.d.ts.map +1 -1
  221. package/dist/src/mcp/organisms-name-invites.js +40 -1
  222. package/dist/src/mcp/organisms-name-invites.js.map +1 -1
  223. package/dist/src/mcp/organisms.d.ts.map +1 -1
  224. package/dist/src/mcp/organisms.js +6 -1
  225. package/dist/src/mcp/organisms.js.map +1 -1
  226. package/dist/src/mcp/tool-usage-wrap.d.ts +9 -0
  227. package/dist/src/mcp/tool-usage-wrap.d.ts.map +1 -0
  228. package/dist/src/mcp/tool-usage-wrap.js +87 -0
  229. package/dist/src/mcp/tool-usage-wrap.js.map +1 -0
  230. package/dist/src/mcp/workspaces.d.ts.map +1 -1
  231. package/dist/src/mcp/workspaces.js +9 -0
  232. package/dist/src/mcp/workspaces.js.map +1 -1
  233. package/dist/src/middleware/idempotency.d.ts +6 -0
  234. package/dist/src/middleware/idempotency.d.ts.map +1 -1
  235. package/dist/src/middleware/idempotency.js +23 -2
  236. package/dist/src/middleware/idempotency.js.map +1 -1
  237. package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
  238. package/dist/src/models/agent-task-schemas.js +12 -1
  239. package/dist/src/models/agent-task-schemas.js.map +1 -1
  240. package/dist/src/models/webhook-schemas.d.ts +2 -2
  241. package/dist/src/models/workflow-schemas.d.ts +178 -1
  242. package/dist/src/models/workflow-schemas.d.ts.map +1 -1
  243. package/dist/src/models/workflow-schemas.js +75 -0
  244. package/dist/src/models/workflow-schemas.js.map +1 -1
  245. package/dist/src/routes/admin-extensions.d.ts +4 -0
  246. package/dist/src/routes/admin-extensions.d.ts.map +1 -1
  247. package/dist/src/routes/admin-extensions.js +135 -142
  248. package/dist/src/routes/admin-extensions.js.map +1 -1
  249. package/dist/src/routes/admin-monitoring.d.ts +2 -0
  250. package/dist/src/routes/admin-monitoring.d.ts.map +1 -1
  251. package/dist/src/routes/admin-monitoring.js +32 -0
  252. package/dist/src/routes/admin-monitoring.js.map +1 -1
  253. package/dist/src/routes/admin-organisms.d.ts +28 -0
  254. package/dist/src/routes/admin-organisms.d.ts.map +1 -0
  255. package/dist/src/routes/admin-organisms.js +99 -0
  256. package/dist/src/routes/admin-organisms.js.map +1 -0
  257. package/dist/src/routes/admin-usage.d.ts +33 -0
  258. package/dist/src/routes/admin-usage.d.ts.map +1 -0
  259. package/dist/src/routes/admin-usage.js +198 -0
  260. package/dist/src/routes/admin-usage.js.map +1 -0
  261. package/dist/src/routes/agent-conventions.d.ts.map +1 -1
  262. package/dist/src/routes/agent-conventions.js +4 -2
  263. package/dist/src/routes/agent-conventions.js.map +1 -1
  264. package/dist/src/routes/agent-docs.d.ts +4 -4
  265. package/dist/src/routes/agent-docs.js +145 -145
  266. package/dist/src/routes/agent-docs.js.map +1 -1
  267. package/dist/src/routes/agent-messages.d.ts +6 -0
  268. package/dist/src/routes/agent-messages.d.ts.map +1 -1
  269. package/dist/src/routes/agent-messages.js +23 -1
  270. package/dist/src/routes/agent-messages.js.map +1 -1
  271. package/dist/src/routes/agent-tasks/completion.d.ts +5 -0
  272. package/dist/src/routes/agent-tasks/completion.d.ts.map +1 -1
  273. package/dist/src/routes/agent-tasks/completion.js +35 -54
  274. package/dist/src/routes/agent-tasks/completion.js.map +1 -1
  275. package/dist/src/routes/agent-tasks/create-read.d.ts.map +1 -1
  276. package/dist/src/routes/agent-tasks/create-read.js +8 -1
  277. package/dist/src/routes/agent-tasks/create-read.js.map +1 -1
  278. package/dist/src/routes/agent-tasks/lifecycle.d.ts +4 -1
  279. package/dist/src/routes/agent-tasks/lifecycle.d.ts.map +1 -1
  280. package/dist/src/routes/agent-tasks/lifecycle.js +80 -2
  281. package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
  282. package/dist/src/routes/agents/device-auth.d.ts.map +1 -1
  283. package/dist/src/routes/agents/device-auth.js +27 -4
  284. package/dist/src/routes/agents/device-auth.js.map +1 -1
  285. package/dist/src/routes/ai.d.ts +5 -0
  286. package/dist/src/routes/ai.d.ts.map +1 -1
  287. package/dist/src/routes/ai.js +51 -1
  288. package/dist/src/routes/ai.js.map +1 -1
  289. package/dist/src/routes/app-grants.d.ts.map +1 -1
  290. package/dist/src/routes/app-grants.js +5 -0
  291. package/dist/src/routes/app-grants.js.map +1 -1
  292. package/dist/src/routes/apps/drafts.d.ts +6 -0
  293. package/dist/src/routes/apps/drafts.d.ts.map +1 -1
  294. package/dist/src/routes/apps/drafts.js +133 -1
  295. package/dist/src/routes/apps/drafts.js.map +1 -1
  296. package/dist/src/routes/apps/read.d.ts +4 -0
  297. package/dist/src/routes/apps/read.d.ts.map +1 -1
  298. package/dist/src/routes/apps/read.js +47 -2
  299. package/dist/src/routes/apps/read.js.map +1 -1
  300. package/dist/src/routes/auth-otk.d.ts +28 -0
  301. package/dist/src/routes/auth-otk.d.ts.map +1 -0
  302. package/dist/src/routes/auth-otk.js +190 -0
  303. package/dist/src/routes/auth-otk.js.map +1 -0
  304. package/dist/src/routes/auth.d.ts +17 -0
  305. package/dist/src/routes/auth.d.ts.map +1 -1
  306. package/dist/src/routes/auth.js +44 -153
  307. package/dist/src/routes/auth.js.map +1 -1
  308. package/dist/src/routes/bootstrap.d.ts +6 -0
  309. package/dist/src/routes/bootstrap.d.ts.map +1 -1
  310. package/dist/src/routes/bootstrap.js +47 -20
  311. package/dist/src/routes/bootstrap.js.map +1 -1
  312. package/dist/src/routes/capabilities.d.ts +17 -0
  313. package/dist/src/routes/capabilities.d.ts.map +1 -1
  314. package/dist/src/routes/capabilities.js +187 -4
  315. package/dist/src/routes/capabilities.js.map +1 -1
  316. package/dist/src/routes/chat.d.ts +23 -0
  317. package/dist/src/routes/chat.d.ts.map +1 -0
  318. package/dist/src/routes/chat.js +165 -0
  319. package/dist/src/routes/chat.js.map +1 -0
  320. package/dist/src/routes/commerce.js +4 -4
  321. package/dist/src/routes/commerce.js.map +1 -1
  322. package/dist/src/routes/datapackages.d.ts +35 -0
  323. package/dist/src/routes/datapackages.d.ts.map +1 -0
  324. package/dist/src/routes/datapackages.js +217 -0
  325. package/dist/src/routes/datapackages.js.map +1 -0
  326. package/dist/src/routes/disputes.d.ts +27 -0
  327. package/dist/src/routes/disputes.d.ts.map +1 -1
  328. package/dist/src/routes/disputes.js +74 -79
  329. package/dist/src/routes/disputes.js.map +1 -1
  330. package/dist/src/routes/ecosystem-apps-advisories.d.ts +16 -0
  331. package/dist/src/routes/ecosystem-apps-advisories.d.ts.map +1 -0
  332. package/dist/src/routes/ecosystem-apps-advisories.js +104 -0
  333. package/dist/src/routes/ecosystem-apps-advisories.js.map +1 -0
  334. package/dist/src/routes/ecosystem-apps.d.ts +6 -0
  335. package/dist/src/routes/ecosystem-apps.d.ts.map +1 -1
  336. package/dist/src/routes/ecosystem-apps.js +31 -99
  337. package/dist/src/routes/ecosystem-apps.js.map +1 -1
  338. package/dist/src/routes/extensions/actions.d.ts.map +1 -1
  339. package/dist/src/routes/extensions/actions.js +29 -1
  340. package/dist/src/routes/extensions/actions.js.map +1 -1
  341. package/dist/src/routes/federation-sync/messaging.d.ts +6 -0
  342. package/dist/src/routes/federation-sync/messaging.d.ts.map +1 -1
  343. package/dist/src/routes/federation-sync/messaging.js +22 -1
  344. package/dist/src/routes/federation-sync/messaging.js.map +1 -1
  345. package/dist/src/routes/federation-sync/routing.d.ts.map +1 -1
  346. package/dist/src/routes/federation-sync/routing.js +12 -3
  347. package/dist/src/routes/federation-sync/routing.js.map +1 -1
  348. package/dist/src/routes/glossary.js +1 -1
  349. package/dist/src/routes/glossary.js.map +1 -1
  350. package/dist/src/routes/home/track.d.ts +5 -1
  351. package/dist/src/routes/home/track.d.ts.map +1 -1
  352. package/dist/src/routes/home/track.js +20 -6
  353. package/dist/src/routes/home/track.js.map +1 -1
  354. package/dist/src/routes/instances/install.d.ts +7 -0
  355. package/dist/src/routes/instances/install.d.ts.map +1 -1
  356. package/dist/src/routes/instances/install.js +31 -24
  357. package/dist/src/routes/instances/install.js.map +1 -1
  358. package/dist/src/routes/library-packs.d.ts +7 -0
  359. package/dist/src/routes/library-packs.d.ts.map +1 -1
  360. package/dist/src/routes/library-packs.js +32 -8
  361. package/dist/src/routes/library-packs.js.map +1 -1
  362. package/dist/src/routes/libs.js +1 -1
  363. package/dist/src/routes/libs.js.map +1 -1
  364. package/dist/src/routes/markdown-mirrors.js +1 -1
  365. package/dist/src/routes/markdown-mirrors.js.map +1 -1
  366. package/dist/src/routes/messages.d.ts +6 -0
  367. package/dist/src/routes/messages.d.ts.map +1 -1
  368. package/dist/src/routes/messages.js +15 -3
  369. package/dist/src/routes/messages.js.map +1 -1
  370. package/dist/src/routes/odata.d.ts +36 -0
  371. package/dist/src/routes/odata.d.ts.map +1 -0
  372. package/dist/src/routes/odata.js +143 -0
  373. package/dist/src/routes/odata.js.map +1 -0
  374. package/dist/src/routes/openrouter.d.ts +4 -0
  375. package/dist/src/routes/openrouter.d.ts.map +1 -1
  376. package/dist/src/routes/openrouter.js +10 -1
  377. package/dist/src/routes/openrouter.js.map +1 -1
  378. package/dist/src/routes/organisms/crud.d.ts +4 -0
  379. package/dist/src/routes/organisms/crud.d.ts.map +1 -1
  380. package/dist/src/routes/organisms/crud.js +25 -7
  381. package/dist/src/routes/organisms/crud.js.map +1 -1
  382. package/dist/src/routes/organisms/gates.d.ts.map +1 -1
  383. package/dist/src/routes/organisms/gates.js +19 -2
  384. package/dist/src/routes/organisms/gates.js.map +1 -1
  385. package/dist/src/routes/organisms/membership.d.ts +4 -0
  386. package/dist/src/routes/organisms/membership.d.ts.map +1 -1
  387. package/dist/src/routes/organisms/membership.js +88 -36
  388. package/dist/src/routes/organisms/membership.js.map +1 -1
  389. package/dist/src/routes/organisms/shared.d.ts.map +1 -1
  390. package/dist/src/routes/organisms/shared.js +2 -1
  391. package/dist/src/routes/organisms/shared.js.map +1 -1
  392. package/dist/src/routes/organisms/workspace-access.d.ts +5 -0
  393. package/dist/src/routes/organisms/workspace-access.d.ts.map +1 -1
  394. package/dist/src/routes/organisms/workspace-access.js +41 -2
  395. package/dist/src/routes/organisms/workspace-access.js.map +1 -1
  396. package/dist/src/routes/organisms/workspace-ops.d.ts +2 -0
  397. package/dist/src/routes/organisms/workspace-ops.d.ts.map +1 -1
  398. package/dist/src/routes/organisms/workspace-ops.js +10 -6
  399. package/dist/src/routes/organisms/workspace-ops.js.map +1 -1
  400. package/dist/src/routes/organisms/workspace-read.d.ts +3 -0
  401. package/dist/src/routes/organisms/workspace-read.d.ts.map +1 -1
  402. package/dist/src/routes/organisms/workspace-read.js +13 -7
  403. package/dist/src/routes/organisms/workspace-read.js.map +1 -1
  404. package/dist/src/routes/portal.d.ts +1 -0
  405. package/dist/src/routes/portal.d.ts.map +1 -1
  406. package/dist/src/routes/portal.js +13 -0
  407. package/dist/src/routes/portal.js.map +1 -1
  408. package/dist/src/routes/schedules.d.ts +4 -0
  409. package/dist/src/routes/schedules.d.ts.map +1 -1
  410. package/dist/src/routes/schedules.js +9 -1
  411. package/dist/src/routes/schedules.js.map +1 -1
  412. package/dist/src/routes/storage-files.d.ts +23 -0
  413. package/dist/src/routes/storage-files.d.ts.map +1 -1
  414. package/dist/src/routes/storage-files.js +103 -82
  415. package/dist/src/routes/storage-files.js.map +1 -1
  416. package/dist/src/routes/subdomains.d.ts +9 -1
  417. package/dist/src/routes/subdomains.d.ts.map +1 -1
  418. package/dist/src/routes/subdomains.js +55 -1
  419. package/dist/src/routes/subdomains.js.map +1 -1
  420. package/dist/src/routes/usage-reports.d.ts +31 -0
  421. package/dist/src/routes/usage-reports.d.ts.map +1 -0
  422. package/dist/src/routes/usage-reports.js +107 -0
  423. package/dist/src/routes/usage-reports.js.map +1 -0
  424. package/dist/src/routes/validate.d.ts.map +1 -1
  425. package/dist/src/routes/validate.js +1 -0
  426. package/dist/src/routes/validate.js.map +1 -1
  427. package/dist/src/routes/workflows.d.ts.map +1 -1
  428. package/dist/src/routes/workflows.js +9 -1
  429. package/dist/src/routes/workflows.js.map +1 -1
  430. package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
  431. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  432. package/dist/src/server-bootstrap/routes-loader.js +32 -2
  433. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  434. package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
  435. package/dist/src/server-bootstrap/service-init.js +12 -7
  436. package/dist/src/server-bootstrap/service-init.js.map +1 -1
  437. package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
  438. package/dist/src/server-bootstrap/static-files.js +44 -10
  439. package/dist/src/server-bootstrap/static-files.js.map +1 -1
  440. package/dist/src/services/agent-task-fanout.d.ts +61 -0
  441. package/dist/src/services/agent-task-fanout.d.ts.map +1 -1
  442. package/dist/src/services/agent-task-fanout.js +114 -2
  443. package/dist/src/services/agent-task-fanout.js.map +1 -1
  444. package/dist/src/services/agent-task-write.d.ts.map +1 -1
  445. package/dist/src/services/agent-task-write.js +6 -0
  446. package/dist/src/services/agent-task-write.js.map +1 -1
  447. package/dist/src/services/ai-allowance.d.ts +82 -0
  448. package/dist/src/services/ai-allowance.d.ts.map +1 -0
  449. package/dist/src/services/ai-allowance.js +117 -0
  450. package/dist/src/services/ai-allowance.js.map +1 -0
  451. package/dist/src/services/ai-completion.d.ts +39 -0
  452. package/dist/src/services/ai-completion.d.ts.map +1 -1
  453. package/dist/src/services/ai-completion.js +77 -10
  454. package/dist/src/services/ai-completion.js.map +1 -1
  455. package/dist/src/services/ai-image.d.ts +70 -0
  456. package/dist/src/services/ai-image.d.ts.map +1 -0
  457. package/dist/src/services/ai-image.js +104 -0
  458. package/dist/src/services/ai-image.js.map +1 -0
  459. package/dist/src/services/ai-model-defaults.d.ts +45 -0
  460. package/dist/src/services/ai-model-defaults.d.ts.map +1 -0
  461. package/dist/src/services/ai-model-defaults.js +42 -0
  462. package/dist/src/services/ai-model-defaults.js.map +1 -0
  463. package/dist/src/services/ai-tool-setup.d.ts +5 -1
  464. package/dist/src/services/ai-tool-setup.d.ts.map +1 -1
  465. package/dist/src/services/ai-tool-setup.js +36 -0
  466. package/dist/src/services/ai-tool-setup.js.map +1 -1
  467. package/dist/src/services/ai-transcription.d.ts +5 -0
  468. package/dist/src/services/ai-transcription.d.ts.map +1 -1
  469. package/dist/src/services/ai-transcription.js +10 -2
  470. package/dist/src/services/ai-transcription.js.map +1 -1
  471. package/dist/src/services/ai-usage-admin.d.ts +19 -8
  472. package/dist/src/services/ai-usage-admin.d.ts.map +1 -1
  473. package/dist/src/services/ai-usage-admin.js +30 -35
  474. package/dist/src/services/ai-usage-admin.js.map +1 -1
  475. package/dist/src/services/app-agent-surfaces.js +4 -4
  476. package/dist/src/services/app-agent-surfaces.js.map +1 -1
  477. package/dist/src/services/app-artifact-lint.d.ts +4 -0
  478. package/dist/src/services/app-artifact-lint.d.ts.map +1 -1
  479. package/dist/src/services/app-artifact-lint.js +49 -0
  480. package/dist/src/services/app-artifact-lint.js.map +1 -1
  481. package/dist/src/services/app-draft-edit.d.ts +144 -0
  482. package/dist/src/services/app-draft-edit.d.ts.map +1 -0
  483. package/dist/src/services/app-draft-edit.js +203 -0
  484. package/dist/src/services/app-draft-edit.js.map +1 -0
  485. package/dist/src/services/app-spec-gate.d.ts +4 -0
  486. package/dist/src/services/app-spec-gate.d.ts.map +1 -1
  487. package/dist/src/services/app-spec-gate.js +16 -1
  488. package/dist/src/services/app-spec-gate.js.map +1 -1
  489. package/dist/src/services/attachment-duplication.d.ts +4 -0
  490. package/dist/src/services/attachment-duplication.d.ts.map +1 -1
  491. package/dist/src/services/attachment-duplication.js +15 -0
  492. package/dist/src/services/attachment-duplication.js.map +1 -1
  493. package/dist/src/services/auth-md.js +2 -2
  494. package/dist/src/services/auth-md.js.map +1 -1
  495. package/dist/src/services/board-write.d.ts +11 -3
  496. package/dist/src/services/board-write.d.ts.map +1 -1
  497. package/dist/src/services/board-write.js +24 -3
  498. package/dist/src/services/board-write.js.map +1 -1
  499. package/dist/src/services/capability-record.d.ts.map +1 -1
  500. package/dist/src/services/capability-record.js +22 -9
  501. package/dist/src/services/capability-record.js.map +1 -1
  502. package/dist/src/services/chat-agent.d.ts +36 -0
  503. package/dist/src/services/chat-agent.d.ts.map +1 -0
  504. package/dist/src/services/chat-agent.js +123 -0
  505. package/dist/src/services/chat-agent.js.map +1 -0
  506. package/dist/src/services/chat-session.d.ts +58 -0
  507. package/dist/src/services/chat-session.d.ts.map +1 -0
  508. package/dist/src/services/chat-session.js +151 -0
  509. package/dist/src/services/chat-session.js.map +1 -0
  510. package/dist/src/services/chat-threads.d.ts +61 -0
  511. package/dist/src/services/chat-threads.d.ts.map +1 -0
  512. package/dist/src/services/chat-threads.js +137 -0
  513. package/dist/src/services/chat-threads.js.map +1 -0
  514. package/dist/src/services/config-schema.d.ts.map +1 -1
  515. package/dist/src/services/config-schema.js +2 -1
  516. package/dist/src/services/config-schema.js.map +1 -1
  517. package/dist/src/services/core-jobs.d.ts +2 -0
  518. package/dist/src/services/core-jobs.d.ts.map +1 -1
  519. package/dist/src/services/core-jobs.js +11 -0
  520. package/dist/src/services/core-jobs.js.map +1 -1
  521. package/dist/src/services/datapackage/contract.d.ts +198 -0
  522. package/dist/src/services/datapackage/contract.d.ts.map +1 -0
  523. package/dist/src/services/datapackage/contract.js +140 -0
  524. package/dist/src/services/datapackage/contract.js.map +1 -0
  525. package/dist/src/services/datapackage/ext-capability.d.ts +85 -0
  526. package/dist/src/services/datapackage/ext-capability.d.ts.map +1 -0
  527. package/dist/src/services/datapackage/ext-capability.js +72 -0
  528. package/dist/src/services/datapackage/ext-capability.js.map +1 -0
  529. package/dist/src/services/datapackage/odata.d.ts +92 -0
  530. package/dist/src/services/datapackage/odata.d.ts.map +1 -0
  531. package/dist/src/services/datapackage/odata.js +256 -0
  532. package/dist/src/services/datapackage/odata.js.map +1 -0
  533. package/dist/src/services/datapackage/odps.d.ts +24 -0
  534. package/dist/src/services/datapackage/odps.d.ts.map +1 -0
  535. package/dist/src/services/datapackage/odps.js +183 -0
  536. package/dist/src/services/datapackage/odps.js.map +1 -0
  537. package/dist/src/services/datapackage/store.d.ts +143 -0
  538. package/dist/src/services/datapackage/store.d.ts.map +1 -0
  539. package/dist/src/services/datapackage/store.js +533 -0
  540. package/dist/src/services/datapackage/store.js.map +1 -0
  541. package/dist/src/services/datapackage/table.d.ts +67 -0
  542. package/dist/src/services/datapackage/table.d.ts.map +1 -0
  543. package/dist/src/services/datapackage/table.js +0 -0
  544. package/dist/src/services/datapackage/table.js.map +1 -0
  545. package/dist/src/services/extension-ctx.d.ts +1 -0
  546. package/dist/src/services/extension-ctx.d.ts.map +1 -1
  547. package/dist/src/services/extension-ctx.js +31 -6
  548. package/dist/src/services/extension-ctx.js.map +1 -1
  549. package/dist/src/services/extension-files.d.ts +20 -0
  550. package/dist/src/services/extension-files.d.ts.map +1 -1
  551. package/dist/src/services/extension-files.js +9 -2
  552. package/dist/src/services/extension-files.js.map +1 -1
  553. package/dist/src/services/extension-lifecycle.d.ts +3 -0
  554. package/dist/src/services/extension-lifecycle.d.ts.map +1 -1
  555. package/dist/src/services/extension-lifecycle.js +2 -26
  556. package/dist/src/services/extension-lifecycle.js.map +1 -1
  557. package/dist/src/services/extension-runtime.d.ts +28 -2
  558. package/dist/src/services/extension-runtime.d.ts.map +1 -1
  559. package/dist/src/services/extension-runtime.js +22 -0
  560. package/dist/src/services/extension-runtime.js.map +1 -1
  561. package/dist/src/services/extension-schedules.d.ts +90 -0
  562. package/dist/src/services/extension-schedules.d.ts.map +1 -0
  563. package/dist/src/services/extension-schedules.js +123 -0
  564. package/dist/src/services/extension-schedules.js.map +1 -0
  565. package/dist/src/services/extension-system-run.d.ts +91 -0
  566. package/dist/src/services/extension-system-run.d.ts.map +1 -0
  567. package/dist/src/services/extension-system-run.js +100 -0
  568. package/dist/src/services/extension-system-run.js.map +1 -0
  569. package/dist/src/services/extension-upsert.d.ts +2 -0
  570. package/dist/src/services/extension-upsert.d.ts.map +1 -1
  571. package/dist/src/services/extension-upsert.js +6 -24
  572. package/dist/src/services/extension-upsert.js.map +1 -1
  573. package/dist/src/services/goose-acp.d.ts +84 -0
  574. package/dist/src/services/goose-acp.d.ts.map +1 -0
  575. package/dist/src/services/goose-acp.js +304 -0
  576. package/dist/src/services/goose-acp.js.map +1 -0
  577. package/dist/src/services/invitations.d.ts +0 -20
  578. package/dist/src/services/invitations.d.ts.map +1 -1
  579. package/dist/src/services/invitations.js +30 -0
  580. package/dist/src/services/invitations.js.map +1 -1
  581. package/dist/src/services/job-seeding.d.ts +1 -0
  582. package/dist/src/services/job-seeding.d.ts.map +1 -1
  583. package/dist/src/services/job-seeding.js +6 -0
  584. package/dist/src/services/job-seeding.js.map +1 -1
  585. package/dist/src/services/ledger-admin.d.ts +18 -4
  586. package/dist/src/services/ledger-admin.d.ts.map +1 -1
  587. package/dist/src/services/ledger-admin.js +47 -33
  588. package/dist/src/services/ledger-admin.js.map +1 -1
  589. package/dist/src/services/markdown-negotiation.js +1 -1
  590. package/dist/src/services/markdown-negotiation.js.map +1 -1
  591. package/dist/src/services/message-broadcast.d.ts.map +1 -1
  592. package/dist/src/services/message-broadcast.js +29 -1
  593. package/dist/src/services/message-broadcast.js.map +1 -1
  594. package/dist/src/services/metered-access.d.ts +9 -2
  595. package/dist/src/services/metered-access.d.ts.map +1 -1
  596. package/dist/src/services/metered-access.js +92 -12
  597. package/dist/src/services/metered-access.js.map +1 -1
  598. package/dist/src/services/openrouter.d.ts +20 -1
  599. package/dist/src/services/openrouter.d.ts.map +1 -1
  600. package/dist/src/services/openrouter.js +66 -0
  601. package/dist/src/services/openrouter.js.map +1 -1
  602. package/dist/src/services/organism-import.d.ts.map +1 -1
  603. package/dist/src/services/organism-import.js +4 -1
  604. package/dist/src/services/organism-import.js.map +1 -1
  605. package/dist/src/services/organism-lifecycle.d.ts.map +1 -1
  606. package/dist/src/services/organism-lifecycle.js +5 -1
  607. package/dist/src/services/organism-lifecycle.js.map +1 -1
  608. package/dist/src/services/organism-ownership.d.ts +56 -0
  609. package/dist/src/services/organism-ownership.d.ts.map +1 -0
  610. package/dist/src/services/organism-ownership.js +174 -0
  611. package/dist/src/services/organism-ownership.js.map +1 -0
  612. package/dist/src/services/organism-privacy.d.ts.map +1 -1
  613. package/dist/src/services/organism-privacy.js +2 -1
  614. package/dist/src/services/organism-privacy.js.map +1 -1
  615. package/dist/src/services/prompt-defaults/tiers-core.js +4 -4
  616. package/dist/src/services/scheduler-extension-job.d.ts +29 -6
  617. package/dist/src/services/scheduler-extension-job.d.ts.map +1 -1
  618. package/dist/src/services/scheduler-extension-job.js +29 -75
  619. package/dist/src/services/scheduler-extension-job.js.map +1 -1
  620. package/dist/src/services/scope-vocabulary-migration.d.ts +54 -1
  621. package/dist/src/services/scope-vocabulary-migration.d.ts.map +1 -1
  622. package/dist/src/services/scope-vocabulary-migration.js +101 -6
  623. package/dist/src/services/scope-vocabulary-migration.js.map +1 -1
  624. package/dist/src/services/screenshot-capture.d.ts +40 -1
  625. package/dist/src/services/screenshot-capture.d.ts.map +1 -1
  626. package/dist/src/services/screenshot-capture.js +142 -60
  627. package/dist/src/services/screenshot-capture.js.map +1 -1
  628. package/dist/src/services/skill-bundle/generator.js +1 -1
  629. package/dist/src/services/skill-bundle/generic-adapter.js +1 -1
  630. package/dist/src/services/skill-bundle/hermes-adapter.js +1 -1
  631. package/dist/src/services/storage-file-write.d.ts +36 -1
  632. package/dist/src/services/storage-file-write.d.ts.map +1 -1
  633. package/dist/src/services/storage-file-write.js +49 -3
  634. package/dist/src/services/storage-file-write.js.map +1 -1
  635. package/dist/src/services/task-outcome.d.ts +53 -0
  636. package/dist/src/services/task-outcome.d.ts.map +1 -0
  637. package/dist/src/services/task-outcome.js +28 -0
  638. package/dist/src/services/task-outcome.js.map +1 -0
  639. package/dist/src/services/usage/archive-job.d.ts +25 -0
  640. package/dist/src/services/usage/archive-job.d.ts.map +1 -0
  641. package/dist/src/services/usage/archive-job.js +36 -0
  642. package/dist/src/services/usage/archive-job.js.map +1 -0
  643. package/dist/src/services/usage/record-app-open.d.ts +8 -0
  644. package/dist/src/services/usage/record-app-open.d.ts.map +1 -0
  645. package/dist/src/services/usage/record-app-open.js +52 -0
  646. package/dist/src/services/usage/record-app-open.js.map +1 -0
  647. package/dist/src/services/usage/rollup-cuts.d.ts +44 -0
  648. package/dist/src/services/usage/rollup-cuts.d.ts.map +1 -0
  649. package/dist/src/services/usage/rollup-cuts.js +81 -0
  650. package/dist/src/services/usage/rollup-cuts.js.map +1 -0
  651. package/dist/src/services/usage/rollup-engine.d.ts +71 -0
  652. package/dist/src/services/usage/rollup-engine.d.ts.map +1 -0
  653. package/dist/src/services/usage/rollup-engine.js +237 -0
  654. package/dist/src/services/usage/rollup-engine.js.map +1 -0
  655. package/dist/src/services/usage/usage-buffer.d.ts +25 -0
  656. package/dist/src/services/usage/usage-buffer.d.ts.map +1 -0
  657. package/dist/src/services/usage/usage-buffer.js +146 -0
  658. package/dist/src/services/usage/usage-buffer.js.map +1 -0
  659. package/dist/src/services/usage/usage-read.d.ts +115 -0
  660. package/dist/src/services/usage/usage-read.d.ts.map +1 -0
  661. package/dist/src/services/usage/usage-read.js +246 -0
  662. package/dist/src/services/usage/usage-read.js.map +1 -0
  663. package/dist/src/services/usage-metering.d.ts +5 -0
  664. package/dist/src/services/usage-metering.d.ts.map +1 -1
  665. package/dist/src/services/usage-metering.js +7 -0
  666. package/dist/src/services/usage-metering.js.map +1 -1
  667. package/dist/src/services/workflow/engine-human.d.ts +15 -0
  668. package/dist/src/services/workflow/engine-human.d.ts.map +1 -1
  669. package/dist/src/services/workflow/engine-human.js +10 -1
  670. package/dist/src/services/workflow/engine-human.js.map +1 -1
  671. package/dist/src/services/workflow/engine-steps.d.ts +48 -3
  672. package/dist/src/services/workflow/engine-steps.d.ts.map +1 -1
  673. package/dist/src/services/workflow/engine-steps.js +361 -0
  674. package/dist/src/services/workflow/engine-steps.js.map +1 -1
  675. package/dist/src/services/workflow/engine.d.ts +1 -0
  676. package/dist/src/services/workflow/engine.d.ts.map +1 -1
  677. package/dist/src/services/workflow/engine.js +2 -1
  678. package/dist/src/services/workflow/engine.js.map +1 -1
  679. package/dist/src/services/workflow/store.d.ts.map +1 -1
  680. package/dist/src/services/workflow/store.js +60 -4
  681. package/dist/src/services/workflow/store.js.map +1 -1
  682. package/dist/src/services/write-guards.d.ts +27 -1
  683. package/dist/src/services/write-guards.d.ts.map +1 -1
  684. package/dist/src/services/write-guards.js +39 -9
  685. package/dist/src/services/write-guards.js.map +1 -1
  686. package/dist/src/storage/interface.d.ts +4 -1
  687. package/dist/src/storage/interface.d.ts.map +1 -1
  688. package/dist/src/storage/interface.js +1 -0
  689. package/dist/src/storage/interface.js.map +1 -1
  690. package/dist/src/storage/providers/postgres-kysely/db-types.d.ts +119 -0
  691. package/dist/src/storage/providers/postgres-kysely/db-types.d.ts.map +1 -1
  692. package/dist/src/storage/providers/postgres-kysely/index.d.ts.map +1 -1
  693. package/dist/src/storage/providers/postgres-kysely/index.js +2 -1
  694. package/dist/src/storage/providers/postgres-kysely/index.js.map +1 -1
  695. package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.d.ts.map +1 -1
  696. package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.js +3 -0
  697. package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.js.map +1 -1
  698. package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.d.ts.map +1 -1
  699. package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.js +4 -0
  700. package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.js.map +1 -1
  701. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +1 -0
  702. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts.map +1 -1
  703. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js +3 -0
  704. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
  705. package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts +2 -0
  706. package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts.map +1 -1
  707. package/dist/src/storage/providers/postgres-kysely/methods/files.js +34 -2
  708. package/dist/src/storage/providers/postgres-kysely/methods/files.js.map +1 -1
  709. package/dist/src/storage/providers/postgres-kysely/methods/organisms.d.ts.map +1 -1
  710. package/dist/src/storage/providers/postgres-kysely/methods/organisms.js +11 -2
  711. package/dist/src/storage/providers/postgres-kysely/methods/organisms.js.map +1 -1
  712. package/dist/src/storage/providers/postgres-kysely/methods/usage.d.ts +32 -0
  713. package/dist/src/storage/providers/postgres-kysely/methods/usage.d.ts.map +1 -0
  714. package/dist/src/storage/providers/postgres-kysely/methods/usage.js +336 -0
  715. package/dist/src/storage/providers/postgres-kysely/methods/usage.js.map +1 -0
  716. package/dist/src/storage/providers/postgres-kysely/migrations/0036_usage_telemetry.sql +181 -0
  717. package/dist/src/storage/providers/postgres-kysely/migrations/0037_task_created_by.sql +18 -0
  718. package/dist/src/storage/providers/postgres-kysely/migrations/0038_organism_owners.sql +31 -0
  719. package/dist/src/storage/providers/postgres-kysely/migrations/0039_storage_file_utf8_verified.sql +19 -0
  720. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  721. package/dist/src/storage/providers/sqlite/index.js +3 -1
  722. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  723. package/dist/src/storage/providers/sqlite/methods/apps.d.ts +1 -0
  724. package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
  725. package/dist/src/storage/providers/sqlite/methods/apps.js +33 -28
  726. package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
  727. package/dist/src/storage/providers/sqlite/methods/governance.d.ts +2 -0
  728. package/dist/src/storage/providers/sqlite/methods/governance.d.ts.map +1 -1
  729. package/dist/src/storage/providers/sqlite/methods/governance.js +25 -4
  730. package/dist/src/storage/providers/sqlite/methods/governance.js.map +1 -1
  731. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts +1 -12
  732. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
  733. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +28 -135
  734. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
  735. package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts +38 -0
  736. package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts.map +1 -0
  737. package/dist/src/storage/providers/sqlite/methods/storage-files.js +109 -0
  738. package/dist/src/storage/providers/sqlite/methods/storage-files.js.map +1 -0
  739. package/dist/src/storage/providers/sqlite/methods/usage.d.ts +43 -0
  740. package/dist/src/storage/providers/sqlite/methods/usage.d.ts.map +1 -0
  741. package/dist/src/storage/providers/sqlite/methods/usage.js +37 -0
  742. package/dist/src/storage/providers/sqlite/methods/usage.js.map +1 -0
  743. package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts +1 -0
  744. package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts.map +1 -1
  745. package/dist/src/storage/providers/sqlite/repos/agent-task.js +4 -2
  746. package/dist/src/storage/providers/sqlite/repos/agent-task.js.map +1 -1
  747. package/dist/src/storage/providers/sqlite/repos/agent-usage.d.ts.map +1 -1
  748. package/dist/src/storage/providers/sqlite/repos/agent-usage.js +4 -2
  749. package/dist/src/storage/providers/sqlite/repos/agent-usage.js.map +1 -1
  750. package/dist/src/storage/providers/sqlite/repos/community.d.ts.map +1 -1
  751. package/dist/src/storage/providers/sqlite/repos/community.js +20 -0
  752. package/dist/src/storage/providers/sqlite/repos/community.js.map +1 -1
  753. package/dist/src/storage/providers/sqlite/repos/usage.d.ts +35 -0
  754. package/dist/src/storage/providers/sqlite/repos/usage.d.ts.map +1 -0
  755. package/dist/src/storage/providers/sqlite/repos/usage.js +352 -0
  756. package/dist/src/storage/providers/sqlite/repos/usage.js.map +1 -0
  757. package/dist/src/storage/providers/sqlite/schema-tables-1.d.ts.map +1 -1
  758. package/dist/src/storage/providers/sqlite/schema-tables-1.js +2 -0
  759. package/dist/src/storage/providers/sqlite/schema-tables-1.js.map +1 -1
  760. package/dist/src/storage/providers/sqlite/schema-tables-3.d.ts +1 -0
  761. package/dist/src/storage/providers/sqlite/schema-tables-3.d.ts.map +1 -1
  762. package/dist/src/storage/providers/sqlite/schema-tables-3.js +1 -0
  763. package/dist/src/storage/providers/sqlite/schema-tables-3.js.map +1 -1
  764. package/dist/src/storage/providers/sqlite/schema-tables-4.d.ts +2 -0
  765. package/dist/src/storage/providers/sqlite/schema-tables-4.d.ts.map +1 -1
  766. package/dist/src/storage/providers/sqlite/schema-tables-4.js +131 -0
  767. package/dist/src/storage/providers/sqlite/schema-tables-4.js.map +1 -1
  768. package/dist/src/storage/providers/sqlite/schema.d.ts +2 -0
  769. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  770. package/dist/src/storage/providers/sqlite/schema.js +155 -130
  771. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  772. package/dist/src/storage/repositories/app-grant.repository.d.ts +11 -0
  773. package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
  774. package/dist/src/storage/repositories/file.repository.d.ts +13 -0
  775. package/dist/src/storage/repositories/file.repository.d.ts.map +1 -1
  776. package/dist/src/storage/repositories/usage.repository.d.ts +80 -0
  777. package/dist/src/storage/repositories/usage.repository.d.ts.map +1 -0
  778. package/dist/src/storage/repositories/usage.repository.js +23 -0
  779. package/dist/src/storage/repositories/usage.repository.js.map +1 -0
  780. package/dist/src/storage/types/agents-messaging.d.ts +24 -0
  781. package/dist/src/storage/types/agents-messaging.d.ts.map +1 -1
  782. package/dist/src/storage/types/agents-messaging.js +1 -0
  783. package/dist/src/storage/types/agents-messaging.js.map +1 -1
  784. package/dist/src/storage/types/commerce.d.ts +6 -0
  785. package/dist/src/storage/types/commerce.d.ts.map +1 -1
  786. package/dist/src/storage/types/organisms-federation.d.ts +21 -0
  787. package/dist/src/storage/types/organisms-federation.d.ts.map +1 -1
  788. package/dist/src/storage/types/usage.d.ts +186 -0
  789. package/dist/src/storage/types/usage.d.ts.map +1 -0
  790. package/dist/src/storage/types/usage.js +24 -0
  791. package/dist/src/storage/types/usage.js.map +1 -0
  792. package/dist/src/utils/agent-footer.d.ts.map +1 -1
  793. package/dist/src/utils/agent-footer.js +1 -0
  794. package/dist/src/utils/agent-footer.js.map +1 -1
  795. package/dist/src/utils/app-content-type.d.ts +57 -3
  796. package/dist/src/utils/app-content-type.d.ts.map +1 -1
  797. package/dist/src/utils/app-content-type.js +81 -12
  798. package/dist/src/utils/app-content-type.js.map +1 -1
  799. package/dist/src/utils/env-config/sections-features.d.ts.map +1 -1
  800. package/dist/src/utils/env-config/sections-features.js +9 -3
  801. package/dist/src/utils/env-config/sections-features.js.map +1 -1
  802. package/dist/src/utils/file-download-headers.d.ts +5 -3
  803. package/dist/src/utils/file-download-headers.d.ts.map +1 -1
  804. package/dist/src/utils/file-download-headers.js +18 -5
  805. package/dist/src/utils/file-download-headers.js.map +1 -1
  806. package/dist/src/utils/http-range.d.ts +151 -0
  807. package/dist/src/utils/http-range.d.ts.map +1 -0
  808. package/dist/src/utils/http-range.js +190 -0
  809. package/dist/src/utils/http-range.js.map +1 -0
  810. package/dist/src/utils/page-head.d.ts +5 -0
  811. package/dist/src/utils/page-head.d.ts.map +1 -1
  812. package/dist/src/utils/page-head.js +10 -1
  813. package/dist/src/utils/page-head.js.map +1 -1
  814. package/dist/src/utils/reserved-keys.d.ts +4 -1
  815. package/dist/src/utils/reserved-keys.d.ts.map +1 -1
  816. package/dist/src/utils/reserved-keys.js +4 -1
  817. package/dist/src/utils/reserved-keys.js.map +1 -1
  818. package/dist/src/utils/scope-coverage.d.ts +21 -0
  819. package/dist/src/utils/scope-coverage.d.ts.map +1 -1
  820. package/dist/src/utils/scope-coverage.js +22 -1
  821. package/dist/src/utils/scope-coverage.js.map +1 -1
  822. package/dist/static/sdk-libs/datapackage/index.js +336 -0
  823. package/dist/static/sdk-libs/dist/aimeat-datapackage.js +305 -0
  824. package/package.json +13 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-range.js","sourceRoot":"","sources":["../../../src/utils/http-range.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,11 @@
19
19
  * @usage
20
20
  * html = injectPageHead(html, findPublicPage('/v1/connect'), config, nonceAttr);
21
21
  * @version-history
22
+ * v1.1.0 — 2026-08-16 — The per-page WebPage JSON-LD is emitted again. Its guard was "the
23
+ * document has no ld+json at all", and spa.html always ships SoftwareApplication +
24
+ * Organization, so on every SPA route — which is every page in the registry — the per-page
25
+ * block was silently skipped. Guard is now the WebPage marker itself. Adds the llmstxt.org
26
+ * v2 rel="describedby" link beside the markdown alternate.
22
27
  * v1.0.0 — 2026-07-28 — Initial (agent-readability phases 07 + 08)
23
28
  */
24
29
  import type { AimeatConfig } from '../config.js';
@@ -1 +1 @@
1
- {"version":3,"file":"page-head.d.ts","sourceRoot":"","sources":["../../../src/utils/page-head.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAc1D;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,EACpB,SAAS,SAAK,GACb,MAAM,CAqCR"}
1
+ {"version":3,"file":"page-head.d.ts","sourceRoot":"","sources":["../../../src/utils/page-head.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAc1D;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,EACpB,SAAS,SAAK,GACb,MAAM,CAgDR"}
@@ -30,7 +30,16 @@ export function injectPageHead(html, page, config, nonceAttr = '') {
30
30
  if (page.markdown) {
31
31
  out = upsert(out, /<link rel="alternate" type="text\/markdown"[^>]*>/i, `<link rel="alternate" type="text/markdown" href="${mirror}">`);
32
32
  }
33
- if (!/application\/ld\+json/i.test(out)) {
33
+ // llmstxt.org v2 names rel="describedby" as the link from a page to the llms.txt that covers it,
34
+ // beside the markdown alternate above. A reader that finds one convention and not the other has
35
+ // to guess the path.
36
+ out = upsert(out, /<link rel="describedby"[^>]*>/i, `<link rel="describedby" type="text/plain" href="${b}/llms.txt">`);
37
+ // The WebPage block describes THIS page and is separate from the site-level SoftwareApplication
38
+ // and Organization blocks that spa.html ships. This used to be guarded by "does the document
39
+ // already contain any ld+json", which spa.html always does — so on every SPA route, which is
40
+ // every page in the registry, the per-page structured data was never emitted. Multiple ld+json
41
+ // blocks in one document are legal, and are how you say two different things.
42
+ if (!/"@type"\s*:\s*"WebPage"/.test(out)) {
34
43
  const jsonLd = JSON.stringify({
35
44
  '@context': 'https://schema.org',
36
45
  '@type': 'WebPage',
@@ -1 +1 @@
1
- {"version":3,"file":"page-head.js","sourceRoot":"","sources":["../../../src/utils/page-head.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-head.js","sourceRoot":"","sources":["../../../src/utils/page-head.ts"],"names":[],"mappings":"AA+BA,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,SAAS,MAAM,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC;AAChG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,IAAgB,EAChB,MAAoB,EACpB,SAAS,GAAG,EAAE;IAEd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC;IAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEnC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,2BAA2B,EAAE,UAAU,KAAK,UAAU,CAAC,CAAC;IAC1E,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,kDAAkD,EAClE,qCAAqC,IAAI,IAAI,CAAC,CAAC;IACjD,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,mDAAmD,EACnE,sCAAsC,KAAK,IAAI,CAAC,CAAC;IACnD,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,yDAAyD,EACzE,4CAA4C,IAAI,IAAI,CAAC,CAAC;IACxD,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,iDAAiD,EACjE,oCAAoC,GAAG,IAAI,CAAC,CAAC;IAC/C,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,8BAA8B,EAAE,+BAA+B,GAAG,IAAI,CAAC,CAAC;IAC1F,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,oDAAoD,EACpE,oDAAoD,MAAM,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,iGAAiG;IACjG,gGAAgG;IAChG,qBAAqB;IACrB,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,gCAAgC,EAChD,mDAAmD,CAAC,aAAa,CAAC,CAAC;IAErE,gGAAgG;IAChG,6FAA6F;IAC7F,6FAA6F;IAC7F,+FAA+F;IAC/F,8EAA8E;IAC9E,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5B,UAAU,EAAE,oBAAoB;YAChC,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,IAAI,CAAC,KAAK;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG;YACH,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpD,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;SAC/D,CAAC,CAAC;QACH,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,qCAAqC,SAAS,IAAI,MAAM,oBAAoB,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -16,6 +16,9 @@
16
16
  * appMayWriteKey(roles, key, delegatedOwnerWrite?, reservedAllowed?)
17
17
  * @usage import { appMayWriteKey } from '../utils/reserved-keys.js';
18
18
  * @version-history
19
+ * v1.4.0 — 2026-08-16 — `chat.` joins the list. A conversation is what the person said and what
20
+ * the agent did on their behalf, and an app-grant token that could append to one could put
21
+ * words in either mouth — including instructions the next turn would read as the person's own.
19
22
  * v1.3.0 — 2026-08-11 — `finance.` and `commerce.` join the list (August 2026 audit H-6, H-23).
20
23
  * Both became server-trusted after the list was written and neither was added.
21
24
  * `finance.accountants` is the CROSS-OWNER authorization list for the whole finance area:
@@ -57,7 +60,7 @@
57
60
  * write that never passes through this gate, which is what the openrouter, finance and commerce
58
61
  * keys all use.
59
62
  */
60
- export declare const RESERVED_OWNER_KEY_PREFIXES: readonly ["openrouter.", "ai-usage.", "profile.", "finance.", "commerce."];
63
+ export declare const RESERVED_OWNER_KEY_PREFIXES: readonly ["openrouter.", "ai-usage.", "profile.", "finance.", "commerce.", "chat."];
61
64
  /** True iff `key` falls under a reserved, server-trusted owner-namespace prefix. */
62
65
  export declare function isReservedServerKey(key: string): boolean;
63
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"reserved-keys.d.ts","sourceRoot":"","sources":["../../../src/utils/reserved-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B,4EAE9B,CAAC;AAEX,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAmB,UAAQ,EAAE,eAAe,UAAQ,GACjF,OAAO,CAQT"}
1
+ {"version":3,"file":"reserved-keys.d.ts","sourceRoot":"","sources":["../../../src/utils/reserved-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,2BAA2B,qFAE9B,CAAC;AAEX,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAmB,UAAQ,EAAE,eAAe,UAAQ,GACjF,OAAO,CAQT"}
@@ -16,6 +16,9 @@
16
16
  * appMayWriteKey(roles, key, delegatedOwnerWrite?, reservedAllowed?)
17
17
  * @usage import { appMayWriteKey } from '../utils/reserved-keys.js';
18
18
  * @version-history
19
+ * v1.4.0 — 2026-08-16 — `chat.` joins the list. A conversation is what the person said and what
20
+ * the agent did on their behalf, and an app-grant token that could append to one could put
21
+ * words in either mouth — including instructions the next turn would read as the person's own.
19
22
  * v1.3.0 — 2026-08-11 — `finance.` and `commerce.` join the list (August 2026 audit H-6, H-23).
20
23
  * Both became server-trusted after the list was written and neither was added.
21
24
  * `finance.accountants` is the CROSS-OWNER authorization list for the whole finance area:
@@ -58,7 +61,7 @@
58
61
  * keys all use.
59
62
  */
60
63
  export const RESERVED_OWNER_KEY_PREFIXES = [
61
- 'openrouter.', 'ai-usage.', 'profile.', 'finance.', 'commerce.',
64
+ 'openrouter.', 'ai-usage.', 'profile.', 'finance.', 'commerce.', 'chat.',
62
65
  ];
63
66
  /** True iff `key` falls under a reserved, server-trusted owner-namespace prefix. */
64
67
  export function isReservedServerKey(key) {
@@ -1 +1 @@
1
- {"version":3,"file":"reserved-keys.js","sourceRoot":"","sources":["../../../src/utils/reserved-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;CACvD,CAAC;AAEX,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAe,EAAE,GAAW,EAAE,mBAAmB,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK;IAElF,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3G,IAAI,cAAc;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAChE,+FAA+F;IAC/F,kFAAkF;IAClF,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"reserved-keys.js","sourceRoot":"","sources":["../../../src/utils/reserved-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO;CAChE,CAAC;AAEX,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAe,EAAE,GAAW,EAAE,mBAAmB,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK;IAElF,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3G,IAAI,cAAc;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAChE,+FAA+F;IAC/F,kFAAkF;IAClF,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC"}
@@ -28,6 +28,10 @@
28
28
  * const added = uncoveredScopes(agent.defaultScopes ?? [], proposed.scopes);
29
29
  * if (added.length > 0) return err(`…${added.join(', ')}`);
30
30
  * @version-history
31
+ * v1.2.0 — 2026-08-15 — OPERATOR_ORGANISM_REPAIR_SCOPE, the operator's break-glass over an
32
+ * organism's ownership. Outside the wildcard from the day it exists: the incident it answers was
33
+ * an unscoped agent handing away an organism, so a repair word that "Full access" carries would
34
+ * rebuild the same hole with a wider blast radius.
31
35
  * v1.1.0 — 2026-08-11 — ACCOUNT_SECURITY_SCOPE. Out of the wildcard from the day it exists,
32
36
  * because the narrow-only check on the agent-configure surface asks THIS file whether a scope
33
37
  * is already covered: a '*' agent would have been told yes and could have written the word
@@ -54,6 +58,23 @@ export declare const WRITE_RESERVED_SCOPE = "memory:write-reserved";
54
58
  * (services/scope-vocabulary-migration.ts), so an agent holding it was ticked by hand.
55
59
  */
56
60
  export declare const ACCOUNT_SECURITY_SCOPE = "account:security";
61
+ /**
62
+ * The node operator's break-glass over an organism nobody else can reach: install an owner on an
63
+ * organism the caller does not own. It exists because ownership had no repair path at all — an admin
64
+ * cannot remove, demote or replace a creator, and the operator running the node could not either, so
65
+ * a handover to an account that later went unreachable was permanent.
66
+ *
67
+ * Enforced by requireOperatorPrincipal() in auth/middleware.ts, which admits an operator session
68
+ * outright and any other principal only when its OWNER holds the operator role AND the token carries
69
+ * this exact word. Out of every wildcard, and for the sharpest reason on this list: the incident that
70
+ * produced this scope was an unscoped agent calling POST /v1/organisms/:id/transfer in a test run and
71
+ * handing away the node's own development organism. A break-glass that "Full access" carries by
72
+ * default is the same hole one level up.
73
+ *
74
+ * Nobody is grandfathered onto it (services/scope-vocabulary-migration.ts has no entry): this names
75
+ * a capability that did not exist before, so no agent can lose one it had.
76
+ */
77
+ export declare const OPERATOR_ORGANISM_REPAIR_SCOPE = "operator:organism-repair";
57
78
  export declare const SCOPES_OUTSIDE_WILDCARD: readonly string[];
58
79
  /** True when `scope` is one of the scopes only an exact grant can confer. */
59
80
  export declare function isOutsideWildcard(scope: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"scope-coverage.d.ts","sourceRoot":"","sources":["../../../src/utils/scope-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAiCzD,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EACiB,CAAC;AAEvE,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM9E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE5F"}
1
+ {"version":3,"file":"scope-coverage.d.ts","sourceRoot":"","sources":["../../../src/utils/scope-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AAiCzE,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EACiD,CAAC;AAEvG,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM9E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE5F"}
@@ -28,6 +28,10 @@
28
28
  * const added = uncoveredScopes(agent.defaultScopes ?? [], proposed.scopes);
29
29
  * if (added.length > 0) return err(`…${added.join(', ')}`);
30
30
  * @version-history
31
+ * v1.2.0 — 2026-08-15 — OPERATOR_ORGANISM_REPAIR_SCOPE, the operator's break-glass over an
32
+ * organism's ownership. Outside the wildcard from the day it exists: the incident it answers was
33
+ * an unscoped agent handing away an organism, so a repair word that "Full access" carries would
34
+ * rebuild the same hole with a wider blast radius.
31
35
  * v1.1.0 — 2026-08-11 — ACCOUNT_SECURITY_SCOPE. Out of the wildcard from the day it exists,
32
36
  * because the narrow-only check on the agent-configure surface asks THIS file whether a scope
33
37
  * is already covered: a '*' agent would have been told yes and could have written the word
@@ -54,6 +58,23 @@ export const WRITE_RESERVED_SCOPE = 'memory:write-reserved';
54
58
  * (services/scope-vocabulary-migration.ts), so an agent holding it was ticked by hand.
55
59
  */
56
60
  export const ACCOUNT_SECURITY_SCOPE = 'account:security';
61
+ /**
62
+ * The node operator's break-glass over an organism nobody else can reach: install an owner on an
63
+ * organism the caller does not own. It exists because ownership had no repair path at all — an admin
64
+ * cannot remove, demote or replace a creator, and the operator running the node could not either, so
65
+ * a handover to an account that later went unreachable was permanent.
66
+ *
67
+ * Enforced by requireOperatorPrincipal() in auth/middleware.ts, which admits an operator session
68
+ * outright and any other principal only when its OWNER holds the operator role AND the token carries
69
+ * this exact word. Out of every wildcard, and for the sharpest reason on this list: the incident that
70
+ * produced this scope was an unscoped agent calling POST /v1/organisms/:id/transfer in a test run and
71
+ * handing away the node's own development organism. A break-glass that "Full access" carries by
72
+ * default is the same hole one level up.
73
+ *
74
+ * Nobody is grandfathered onto it (services/scope-vocabulary-migration.ts has no entry): this names
75
+ * a capability that did not exist before, so no agent can lose one it had.
76
+ */
77
+ export const OPERATOR_ORGANISM_REPAIR_SCOPE = 'operator:organism-repair';
57
78
  /**
58
79
  * Scopes no wildcard carries — neither `*` nor `{domain}:*`. Only the exact string counts, anywhere
59
80
  * a scope is checked, proposed, or approved.
@@ -84,7 +105,7 @@ const OWN_TICK_SCOPES = [
84
105
  'share:manage', // hand another account a standing right to read part of the owner's memory
85
106
  'social:members', // change who may read a shared board
86
107
  ];
87
- export const SCOPES_OUTSIDE_WILDCARD = [WRITE_RESERVED_SCOPE, ACCOUNT_SECURITY_SCOPE, ...OWN_TICK_SCOPES];
108
+ export const SCOPES_OUTSIDE_WILDCARD = [WRITE_RESERVED_SCOPE, ACCOUNT_SECURITY_SCOPE, OPERATOR_ORGANISM_REPAIR_SCOPE, ...OWN_TICK_SCOPES];
88
109
  /** True when `scope` is one of the scopes only an exact grant can confer. */
89
110
  export function isOutsideWildcard(scope) {
90
111
  return SCOPES_OUTSIDE_WILDCARD.includes(scope);
@@ -1 +1 @@
1
- {"version":3,"file":"scope-coverage.js","sourceRoot":"","sources":["../../../src/utils/scope-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAEzD;;;;;;;GAOG;AACH;;;;;;;;;;;;;GAaG;AACH,MAAM,eAAe,GAAG;IACpB,cAAc,EAAa,oDAAoD;IAC/E,6BAA6B,EAAE,oDAAoD;IACnF,mBAAmB,EAAQ,yCAAyC;IACpE,gBAAgB,EAAW,qDAAqD;IAChF,cAAc,EAAa,2EAA2E;IACtG,gBAAgB,EAAW,qCAAqC;CAC1D,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAChC,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,GAAG,eAAe,CAAC,CAAC;AAEvE,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC3C,OAAO,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAuB,EAAE,KAAa;IACjE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAuB,EAAE,MAAyB;IAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"scope-coverage.js","sourceRoot":"","sources":["../../../src/utils/scope-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAEzE;;;;;;;GAOG;AACH;;;;;;;;;;;;;GAaG;AACH,MAAM,eAAe,GAAG;IACpB,cAAc,EAAa,oDAAoD;IAC/E,6BAA6B,EAAE,oDAAoD;IACnF,mBAAmB,EAAQ,yCAAyC;IACpE,gBAAgB,EAAW,qDAAqD;IAChF,cAAc,EAAa,2EAA2E;IACtG,gBAAgB,EAAW,qCAAqC;CAC1D,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAChC,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,GAAG,eAAe,CAAC,CAAC;AAEvG,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC3C,OAAO,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAuB,EAAE,KAAa;IACjE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAuB,EAAE,MAAyB;IAC9E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,336 @@
1
+ /**
2
+ * @file datapackage/index.js
3
+ * @description The aimeat-datapackage library — AIMEAT.datapackage. Build, check, publish and read
4
+ * a Frictionless Data Package with AIMEAT provenance, without an app parsing CSV, inferring a
5
+ * type, computing a hash or assembling a provenance block itself.
6
+ *
7
+ * IT IS A CLIENT, NOT A SECOND IMPLEMENTATION, and that is the whole design. A package's identity
8
+ * is a content hash: two pieces of code that compute it differently produce two identities for the
9
+ * same bytes, and every consumer pinned to a hash breaks silently. This node has already paid for
10
+ * that shape once, which is why `ctx.hash` is published as source (EXT_HASH_REFERENCE_JS) rather
11
+ * than described. So the inference, the quality gate, the canonical CSV and the hash all happen on
12
+ * the server, in services/datapackage/, and this library carries the rows there and brings the
13
+ * answer back. An app, an extension and an agent therefore cannot disagree about what a package is.
14
+ *
15
+ * WHAT AN APP STILL GETS LOCALLY: the shape of the work. `create()` gives a small builder so a
16
+ * page can accumulate resources and provenance as the user fills a form, `validate()` shows the
17
+ * row and the column before anything is stored, and `publish()` is one call at the end.
18
+ *
19
+ * THE ADDRESS IS NOT THIS LIBRARY. Every answer carries `descriptorUrl` — a permanent, auth-free,
20
+ * range-readable /v1/pub URL. That is what you give to DuckDB, pandas, frictionless-py, Excel or a
21
+ * person. Reading a package back through here is a convenience for a UI, not the road.
22
+ * @structure makeSession/authFetch · DataPackageBuilder (create) · publish/validate/inferSchema ·
23
+ * list/open/rows/exportAs · attach('datapackage', …)
24
+ * @usage
25
+ * <script src="/v1/libs/aimeat-auth.js"></script>
26
+ * <script src="/v1/libs/aimeat-datapackage.js"></script>
27
+ * const pkg = AIMEAT.datapackage.create({ name: 'laake-weekly' });
28
+ * pkg.addResource('rows', rows); // schema inferred unless you declare one
29
+ * const check = await pkg.validate(); // { ok, issues:[{row, field, message}], schemas }
30
+ * pkg.changes('Added the sentiment column');
31
+ * const out = await pkg.publish(); // { packageId, contentHash, descriptorUrl }
32
+ * @version-history
33
+ * v1.0.0 — 2026-08-15 — Initial (TARGET-063 vaihe 1, B1).
34
+ * v1.1.0 — 2026-08-15 — Three session.fetch contract errors fixed against a real browser (see call()),
35
+ * and parseTable() added so an app does not rebuild paste handling.
36
+ * v1.2.0 — 2026-08-16 — versions(): a package's history, each entry with the explanation it was
37
+ * published with, so an app can show a chain rather than a hash.
38
+ */
39
+ import { makeSession } from '../_core/session.js';
40
+ const { authFetch } = makeSession('aimeat-datapackage.js');
41
+ import { attach } from '../_core/namespace.js';
42
+
43
+ /**
44
+ * Unwrap the node envelope and turn a refusal into a thrown Error carrying `.code` and `.issues`.
45
+ *
46
+ * THREE THINGS ABOUT `session.fetch` THAT THIS FUNCTION GOT WRONG ON THE FIRST PASS, all of them
47
+ * invisible to a server-side test and all three caught the moment a real browser loaded the page:
48
+ * - it returns the PARSED envelope, not a `Response`. Calling `.json()` on it throws, and a
49
+ * swallowed throw here made every call answer `null`.
50
+ * - it does NOT throw on an error status — it hands back the envelope so a caller can look. So
51
+ * the refusal has to be read here, from `ok`/`error`, or a 422 reads as success.
52
+ * - it sets `Content-Type: application/json` itself. Passing our own duplicates the header and
53
+ * the body arrives empty at the route.
54
+ */
55
+ async function call(path, opts) {
56
+ const body = await authFetch(path, opts);
57
+ if (!body || body.ok === false || body.error) {
58
+ const err = (body && body.error) || { code: 'REQUEST_FAILED', message: 'The request did not answer.' };
59
+ /** @type {Error & { code?: string, issues?: any[] }} */
60
+ const e = new Error(err.message || 'Request failed');
61
+ e.code = err.code;
62
+ // The quality gate's coordinates, so a page can point at the cell rather than say "invalid".
63
+ e.issues = (err.details && err.details.issues) || [];
64
+ throw e;
65
+ }
66
+ return body.data !== undefined ? body.data : body;
67
+ }
68
+
69
+ /**
70
+ * A package under construction. Holds nothing but what you put in it — no rows are sent anywhere
71
+ * until you call validate() or publish().
72
+ */
73
+ class DataPackageBuilder {
74
+ constructor(meta) {
75
+ this._meta = meta || {};
76
+ this._resources = [];
77
+ this._changes = '';
78
+ this._provenance = {};
79
+ }
80
+
81
+ /**
82
+ * Add one tabular resource.
83
+ *
84
+ * `opts.schema` omitted means INFER, and inference is a PROPOSAL: the published descriptor records
85
+ * `schemaSource: 'inferred'`, so a consumer can see that nobody confirmed the types. Call
86
+ * inferSchema() first, show the result to the person publishing, and pass the corrected schema
87
+ * here to publish as `declared`.
88
+ */
89
+ addResource(name, rows, opts) {
90
+ const o = opts || {};
91
+ this._resources.push({
92
+ name,
93
+ rows: rows || [],
94
+ ...(o.schema ? { schema: o.schema } : {}),
95
+ ...(o.title ? { title: o.title } : {}),
96
+ ...(o.description ? { description: o.description } : {}),
97
+ });
98
+ return this;
99
+ }
100
+
101
+ /** REQUIRED before publish: what moved against the previous version and why. */
102
+ changes(text) { this._changes = String(text || ''); return this; }
103
+
104
+ /** Origin, legal basis and licence. The owner is responsible for what they publish; this is where
105
+ * they say where it came from and on what terms. */
106
+ provenance(block) { this._provenance = Object.assign({}, this._provenance, block || {}); return this; }
107
+
108
+ /** How many old versions to keep, by count or by months. */
109
+ retention(policy) { this._retentionPolicy = policy; return this; }
110
+
111
+ /** What the producer was asked for — the window, the keywords. Travels in the descriptor. */
112
+ parameters(params) { this._parameters = params; return this; }
113
+
114
+ /** Run the quality gate WITHOUT publishing. Answers `{ ok, issues, schemas }`; `issues` name the
115
+ * resource, the row and the field, which is what lets a page highlight the cell. */
116
+ validate() {
117
+ return call('/v1/datapackages/validate', {
118
+ method: 'POST',
119
+ body: JSON.stringify({ resources: this._resources }),
120
+ });
121
+ }
122
+
123
+ /**
124
+ * Publish one version. THROWS when the gate refuses, with `.code === 'QUALITY_GATE'` and `.issues`
125
+ * carrying the coordinates — nothing was written, and the package stands on its previous version.
126
+ *
127
+ * `unchanged: true` in the answer means these exact bytes were already published: the address
128
+ * already holds them, and no new version was created. Say "no change" rather than "updated".
129
+ */
130
+ publish() {
131
+ return call('/v1/datapackages', {
132
+ method: 'POST',
133
+ body: JSON.stringify(Object.assign({}, this._meta, {
134
+ changes: this._changes,
135
+ resources: this._resources,
136
+ provenance: this._provenance,
137
+ ...(this._parameters ? { parameters: this._parameters } : {}),
138
+ ...(this._retentionPolicy ? { retentionPolicy: this._retentionPolicy } : {}),
139
+ })),
140
+ });
141
+ }
142
+ }
143
+
144
+ /** Drop a leading byte-order mark. A spreadsheet export usually carries one, and left in place it
145
+ * becomes part of the FIRST COLUMN'S NAME — so the header a person sees and the key the rows carry
146
+ * quietly stop matching. Written as a code point: a raw BOM in source is invisible. */
147
+ const stripBom = (s) => (s.charCodeAt(0) === 0xFEFF ? s.slice(1) : s);
148
+
149
+ /**
150
+ * Turn a pasted table into rows: CSV, TSV, semicolon-separated, or a JSON array of objects.
151
+ *
152
+ * THIS IS INPUT HANDLING, NOT THE CANONICAL READER, and the distinction is the whole reason it can
153
+ * live in the browser. It is deliberately lenient — it sniffs the delimiter, tolerates a BOM, CRLF
154
+ * and a ragged last line — because it is reading whatever a person pasted out of a spreadsheet. The
155
+ * canonical CSV reader is on the server and is deliberately exact, because it reads bytes this node
156
+ * itself wrote and hashed. Two parsers with two jobs; only one of them decides what a package IS.
157
+ *
158
+ * It lives here rather than in each app because otherwise every app rebuilds it, which is the exact
159
+ * duplication this library exists to prevent.
160
+ */
161
+ function parseTable(text) {
162
+ const raw = stripBom(String(text || '')).trim();
163
+ if (!raw) return [];
164
+ if (raw[0] === '[' || raw[0] === '{') {
165
+ const parsed = JSON.parse(raw);
166
+ const rows = Array.isArray(parsed) ? parsed : [parsed];
167
+ if (!rows.every(r => r && typeof r === 'object' && !Array.isArray(r))) {
168
+ throw new Error('A JSON table must be an array of objects, one per row.');
169
+ }
170
+ return rows;
171
+ }
172
+ // Sniff the delimiter from the HEADER line only: a comma inside a quoted value further down
173
+ // must not outvote the separator the file actually uses.
174
+ const head = raw.split(/\r?\n/)[0];
175
+ /** @type {Array<{ ch: string, n: number }>} */
176
+ const counts = [{ ch: ',', n: 0 }, { ch: ';', n: 0 }, { ch: '\t', n: 0 }];
177
+ let q = false;
178
+ for (const ch of head) {
179
+ if (ch === '"') q = !q;
180
+ else if (!q) for (const c of counts) if (ch === c.ch) c.n++;
181
+ }
182
+ counts.sort((a, b) => b.n - a.n);
183
+ const delim = counts[0].n > 0 ? counts[0].ch : ',';
184
+
185
+ const records = [];
186
+ let field = '';
187
+ let record = [];
188
+ let inQuotes = false;
189
+ for (let i = 0; i < raw.length; i++) {
190
+ const ch = raw[i];
191
+ if (inQuotes) {
192
+ if (ch === '"') { if (raw[i + 1] === '"') { field += '"'; i++; } else inQuotes = false; }
193
+ else field += ch;
194
+ continue;
195
+ }
196
+ if (ch === '"') { inQuotes = true; continue; }
197
+ if (ch === delim) { record.push(field); field = ''; continue; }
198
+ if (ch === '\n' || ch === '\r') {
199
+ if (ch === '\r' && raw[i + 1] === '\n') i++;
200
+ record.push(field); field = ''; records.push(record); record = [];
201
+ continue;
202
+ }
203
+ field += ch;
204
+ }
205
+ if (field !== '' || record.length) { record.push(field); records.push(record); }
206
+ if (!records.length) return [];
207
+
208
+ const header = records[0].map((h, i) => (h.trim() || `column_${i + 1}`));
209
+ return records.slice(1)
210
+ .filter(r => r.length > 1 || (r[0] ?? '') !== '')
211
+ .map(r => {
212
+ const row = {};
213
+ // Values stay STRINGS here. Typing them is the server's job — a browser that eagerly turned
214
+ // "001000" into a number would destroy exactly the identifier the type inference protects.
215
+ for (let c = 0; c < header.length; c++) row[header[c]] = (r[c] ?? '') === '' ? null : r[c];
216
+ return row;
217
+ });
218
+ }
219
+
220
+ const datapackage = {
221
+ /** Start a package. `meta` is `{ name, title?, description? }`; the name is an address segment. */
222
+ create(meta) { return new DataPackageBuilder(meta); },
223
+
224
+ /** CSV / TSV / semicolon / JSON text → rows. See parseTable above for why it is lenient. */
225
+ parseTable(text) { return parseTable(text); },
226
+
227
+ /** The type proposal for a set of rows, without publishing anything. Show it to the publisher. */
228
+ inferSchema(rows) {
229
+ return call('/v1/datapackages/validate', {
230
+ method: 'POST',
231
+ body: JSON.stringify({ resources: [{ name: 'preview', rows: rows || [] }] }),
232
+ }).then(d => d.schemas.preview);
233
+ },
234
+
235
+ /** One-shot publish for a caller that has everything already. Same refusal behaviour as the builder. */
236
+ publish(input) {
237
+ return call('/v1/datapackages', {
238
+ method: 'POST', body: JSON.stringify(input || {}),
239
+ });
240
+ },
241
+
242
+ /** The caller's own packages, newest version each, with `lastError` when the last run failed. */
243
+ list() { return call('/v1/datapackages', { method: 'GET' }); },
244
+
245
+ /**
246
+ * Every version of one package, newest first: `{ contentHash, at, current, changes, rowCount,
247
+ * bytes, descriptorUrl, supersedes }`.
248
+ *
249
+ * `changes` is why this is worth showing rather than a list of hashes — it is the sentence the
250
+ * producer had to write to publish at all. Pin any of them by passing
251
+ * `pkg:owner/name@<contentHash>` to open() or rows().
252
+ */
253
+ versions(ref) {
254
+ const p = parseRef(ref);
255
+ if (!p) return Promise.reject(new Error('versions() needs a reference like "pkg:owner/name"'));
256
+ return call('/v1/datapackages/' + encodeURIComponent(p.owner) + '/' + encodeURIComponent(p.name) + '/versions',
257
+ { method: 'GET' });
258
+ },
259
+
260
+ /** A descriptor. `ref` is `pkg:owner/name`, optionally `@sha256:…` to pin a version. */
261
+ open(ref) {
262
+ const p = parseRef(ref);
263
+ if (!p) return Promise.reject(new Error('open() needs a reference like "pkg:owner/name" or "pkg:owner/name@sha256:…"'));
264
+ const q = p.version ? ('?version=' + encodeURIComponent(p.version)) : '';
265
+ return call('/v1/datapackages/' + encodeURIComponent(p.owner) + '/' + encodeURIComponent(p.name) + q, { method: 'GET' });
266
+ },
267
+
268
+ /** A window of rows, for a preview table. For the whole thing use the CSV address — it is
269
+ * permanent, needs no session and answers byte ranges. */
270
+ rows(ref, resource, opts) {
271
+ const p = parseRef(ref);
272
+ if (!p) return Promise.reject(new Error('rows() needs a reference like "pkg:owner/name"'));
273
+ const o = opts || {};
274
+ const qs = [];
275
+ if (p.version) qs.push('version=' + encodeURIComponent(p.version));
276
+ if (o.offset != null) qs.push('offset=' + encodeURIComponent(o.offset));
277
+ if (o.limit != null) qs.push('limit=' + encodeURIComponent(o.limit));
278
+ if (o.select && o.select.length) qs.push('select=' + encodeURIComponent(o.select.join(',')));
279
+ const q = qs.length ? ('?' + qs.join('&')) : '';
280
+ return call('/v1/datapackages/' + encodeURIComponent(p.owner) + '/' + encodeURIComponent(p.name)
281
+ + '/rows/' + encodeURIComponent(resource) + q, { method: 'GET' });
282
+ },
283
+
284
+ /**
285
+ * The permanent, session-free address of one resource's CSV — what you hand to DuckDB, pandas,
286
+ * Google Sheets IMPORTDATA or a person with a download button.
287
+ *
288
+ * Derived from the descriptor rather than assembled from parts, because the descriptor's
289
+ * `resources[].path` is the authority on where a resource lives and a hand-built URL would be a
290
+ * second opinion about it.
291
+ */
292
+ urlFor(descriptorResponse, resource) {
293
+ const d = descriptorResponse && (descriptorResponse.descriptor || descriptorResponse);
294
+ if (!d || !d.resources) return null;
295
+ const r = d.resources.find(x => x.name === resource);
296
+ const base = descriptorResponse && descriptorResponse.descriptor_url;
297
+ if (!r || !base) return null;
298
+ return base.replace(/datapackage\.json$/, '') + r.path.split('/').map(encodeURIComponent).join('/');
299
+ },
300
+
301
+ /**
302
+ * Turn a resource into a file the person can keep. CSV is handed over as its permanent URL — no
303
+ * download, no copy, the address IS the file. JSON is derived in the browser from a row read.
304
+ *
305
+ * There is no XLSX here yet, and it is left out rather than half-done: a spreadsheet writer is a
306
+ * vendored dependency this node does not carry, and emitting a CSV named .xlsx would be exactly
307
+ * the covering fallback this whole format exists to avoid.
308
+ */
309
+ async exportAs(ref, resource, format) {
310
+ const fmt = String(format || 'csv').toLowerCase();
311
+ const opened = await this.open(ref);
312
+ if (fmt === 'csv') return { url: this.urlFor(opened, resource), format: 'csv' };
313
+ if (fmt === 'json') {
314
+ const all = [];
315
+ let offset = 0;
316
+ for (;;) {
317
+ const page = await this.rows(ref, resource, { offset, limit: 5000 });
318
+ all.push.apply(all, page.rows);
319
+ offset += page.rows.length;
320
+ if (offset >= page.total || page.rows.length === 0) break;
321
+ }
322
+ const blob = new Blob([JSON.stringify(all, null, 2)], { type: 'application/json' });
323
+ return { url: URL.createObjectURL(blob), format: 'json', rows: all.length };
324
+ }
325
+ throw new Error('exportAs supports "csv" (the permanent URL) and "json". '
326
+ + 'XLSX needs a spreadsheet writer this node does not vendor yet, and a CSV named .xlsx would be a lie.');
327
+ },
328
+ };
329
+
330
+ /** `pkg:owner/name` or `pkg:owner/name@sha256:…`. */
331
+ function parseRef(ref) {
332
+ const m = /^pkg:([^/@]+)\/([^@]+)(?:@(sha256:[a-f0-9]{64}))?$/.exec(String(ref || '').trim());
333
+ return m ? { owner: m[1], name: m[2], version: m[3] || null } : null;
334
+ }
335
+
336
+ attach('datapackage', datapackage);