aimeat 2.1.0 → 2.2.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 (422) hide show
  1. package/dist/.env.example +9 -4
  2. package/dist/locales/en.json +28 -0
  3. package/dist/locales/fi.json +28 -0
  4. package/dist/public/cortex-bundled/aimeat-charts.js +158 -10
  5. package/dist/public/cortex-bundled/aimeat-charts.yaml +1 -1
  6. package/dist/public/cortex-bundled/aimeat-dag.js +515 -173
  7. package/dist/public/cortex-bundled/aimeat-dag.yaml +1 -1
  8. package/dist/public/cortex-bundled/aimeat-i18n.js +6 -1
  9. package/dist/public/cortex-bundled/aimeat-i18n.yaml +1 -1
  10. package/dist/public/cortex-bundled/aimeat-surface.js +577 -0
  11. package/dist/public/cortex-bundled/aimeat-surface.yaml +107 -0
  12. package/dist/public/cortex-bundled/aimeat-viewport.js +405 -0
  13. package/dist/public/cortex-bundled/aimeat-viewport.yaml +100 -0
  14. package/dist/public/css/views/inbox.css +1 -1
  15. package/dist/public/css/views/profile.css +9 -0
  16. package/dist/public/lib/VENDORED.md +6 -3
  17. package/dist/public/lib/aimeat-daisyui-bridge.css +39 -2
  18. package/dist/public/lib/aimeat-theme.css +538 -0
  19. package/dist/public/lib/fonts/LICENSE.md +11 -4
  20. package/dist/public/lib/fonts/fraunces-var-latin-ext.woff2 +0 -0
  21. package/dist/public/lib/fonts/fraunces-var-latin.woff2 +0 -0
  22. package/dist/public/lib/fonts/inter-var-latin-ext.woff2 +0 -0
  23. package/dist/public/lib/fonts/inter-var-latin.woff2 +0 -0
  24. package/dist/public/lib/fonts/jetbrains-mono-var-latin-ext.woff2 +0 -0
  25. package/dist/public/lib/fonts/jetbrains-mono-var-latin.woff2 +0 -0
  26. package/dist/public/lib/fonts/space-grotesk-var-latin-ext.woff2 +0 -0
  27. package/dist/public/lib/fonts/space-grotesk-var-latin.woff2 +0 -0
  28. package/dist/public/lib/samples/theme-check.html +92 -0
  29. package/dist/public/lib/samples/themes-boot.js +20 -0
  30. package/dist/public/lib/samples/themes.html +154 -0
  31. package/dist/public/lib/samples/themes.js +60 -0
  32. package/dist/public/views/profile/access-tab/connected-apps.js +81 -5
  33. package/dist/public/views/profile/extensions-tab.maturity.js +4 -1
  34. package/dist/public/views/profile/inbox-tab/components.js +17 -1
  35. package/dist/public/views/profile/inbox-tab/use-thread-ux.js +29 -2
  36. package/dist/public/views/profile/libraries-tab.js +10 -2
  37. package/dist/public/views/profile/wallet-tab.js +64 -0
  38. package/dist/scripts/check-openapi.d.ts +2 -0
  39. package/dist/scripts/check-openapi.d.ts.map +1 -0
  40. package/dist/scripts/check-openapi.js +139 -0
  41. package/dist/scripts/check-openapi.js.map +1 -0
  42. package/dist/scripts/embed-viewport.d.ts +23 -0
  43. package/dist/scripts/embed-viewport.d.ts.map +1 -0
  44. package/dist/scripts/embed-viewport.js +116 -0
  45. package/dist/scripts/embed-viewport.js.map +1 -0
  46. package/dist/src/auth/sse-domain-scopes.d.ts +50 -0
  47. package/dist/src/auth/sse-domain-scopes.d.ts.map +1 -0
  48. package/dist/src/auth/sse-domain-scopes.js +111 -0
  49. package/dist/src/auth/sse-domain-scopes.js.map +1 -0
  50. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
  51. package/dist/src/cli/connect/mcp/tools/agent-tasks.js +4 -1
  52. package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
  53. package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
  54. package/dist/src/cli/connect/mcp/tools/core.js +14 -3
  55. package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
  56. package/dist/src/cli/connect/mcp/tools/workspaces.d.ts +3 -0
  57. package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -1
  58. package/dist/src/cli/connect/mcp/tools/workspaces.js +4 -2
  59. package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -1
  60. package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
  61. package/dist/src/cli/connect/tool-call-defs-core.js +13 -1
  62. package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
  63. package/dist/src/commerce/__tests__/x402-registry.test.d.ts +2 -0
  64. package/dist/src/commerce/__tests__/x402-registry.test.d.ts.map +1 -0
  65. package/dist/src/commerce/__tests__/x402-registry.test.js +105 -0
  66. package/dist/src/commerce/__tests__/x402-registry.test.js.map +1 -0
  67. package/dist/src/commerce/evm-address.d.ts +21 -0
  68. package/dist/src/commerce/evm-address.d.ts.map +1 -0
  69. package/dist/src/commerce/evm-address.js +94 -0
  70. package/dist/src/commerce/evm-address.js.map +1 -0
  71. package/dist/src/commerce/money.d.ts +18 -5
  72. package/dist/src/commerce/money.d.ts.map +1 -1
  73. package/dist/src/commerce/money.js +27 -6
  74. package/dist/src/commerce/money.js.map +1 -1
  75. package/dist/src/commerce/x402-facilitator.d.ts +64 -13
  76. package/dist/src/commerce/x402-facilitator.d.ts.map +1 -1
  77. package/dist/src/commerce/x402-facilitator.js +71 -19
  78. package/dist/src/commerce/x402-facilitator.js.map +1 -1
  79. package/dist/src/commerce/x402-handler.d.ts +13 -7
  80. package/dist/src/commerce/x402-handler.d.ts.map +1 -1
  81. package/dist/src/commerce/x402-handler.js +23 -10
  82. package/dist/src/commerce/x402-handler.js.map +1 -1
  83. package/dist/src/commerce/x402.d.ts +11 -6
  84. package/dist/src/commerce/x402.d.ts.map +1 -1
  85. package/dist/src/commerce/x402.js +10 -7
  86. package/dist/src/commerce/x402.js.map +1 -1
  87. package/dist/src/config-types.d.ts +12 -0
  88. package/dist/src/config-types.d.ts.map +1 -1
  89. package/dist/src/config.d.ts.map +1 -1
  90. package/dist/src/config.js +8 -0
  91. package/dist/src/config.js.map +1 -1
  92. package/dist/src/data/app-templates/shells.d.ts +11 -3
  93. package/dist/src/data/app-templates/shells.d.ts.map +1 -1
  94. package/dist/src/data/app-templates/shells.js +87 -6
  95. package/dist/src/data/app-templates/shells.js.map +1 -1
  96. package/dist/src/data/app-templates.js +2 -2
  97. package/dist/src/data/app-templates.js.map +1 -1
  98. package/dist/src/data/library-packs/cortex.d.ts.map +1 -1
  99. package/dist/src/data/library-packs/cortex.js +108 -5
  100. package/dist/src/data/library-packs/cortex.js.map +1 -1
  101. package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
  102. package/dist/src/data/library-packs/sdk.js +32 -8
  103. package/dist/src/data/library-packs/sdk.js.map +1 -1
  104. package/dist/src/data/library-packs/vendored.d.ts.map +1 -1
  105. package/dist/src/data/library-packs/vendored.js +83 -6
  106. package/dist/src/data/library-packs/vendored.js.map +1 -1
  107. package/dist/src/generated/api-types.d.ts +478 -19
  108. package/dist/src/generated/api-types.d.ts.map +1 -1
  109. package/dist/src/mcp/agent-tasks.d.ts +4 -0
  110. package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
  111. package/dist/src/mcp/agent-tasks.js +20 -2
  112. package/dist/src/mcp/agent-tasks.js.map +1 -1
  113. package/dist/src/mcp/capabilities.d.ts +7 -1
  114. package/dist/src/mcp/capabilities.d.ts.map +1 -1
  115. package/dist/src/mcp/capabilities.js +5 -2
  116. package/dist/src/mcp/capabilities.js.map +1 -1
  117. package/dist/src/mcp/catalog/definitions/commerce.d.ts.map +1 -1
  118. package/dist/src/mcp/catalog/definitions/commerce.js +4 -2
  119. package/dist/src/mcp/catalog/definitions/commerce.js.map +1 -1
  120. package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts.map +1 -1
  121. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js +4 -3
  122. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js.map +1 -1
  123. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +1 -1
  124. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
  125. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts.map +1 -1
  126. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js +3 -2
  127. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
  128. package/dist/src/mcp/catalog/output-schemas.d.ts +6 -1
  129. package/dist/src/mcp/catalog/output-schemas.d.ts.map +1 -1
  130. package/dist/src/mcp/catalog/output-schemas.js +6 -1
  131. package/dist/src/mcp/catalog/output-schemas.js.map +1 -1
  132. package/dist/src/mcp/commerce.d.ts.map +1 -1
  133. package/dist/src/mcp/commerce.js +15 -3
  134. package/dist/src/mcp/commerce.js.map +1 -1
  135. package/dist/src/mcp/core-storage.d.ts +23 -0
  136. package/dist/src/mcp/core-storage.d.ts.map +1 -0
  137. package/dist/src/mcp/core-storage.js +157 -0
  138. package/dist/src/mcp/core-storage.js.map +1 -0
  139. package/dist/src/mcp/core.d.ts +16 -0
  140. package/dist/src/mcp/core.d.ts.map +1 -1
  141. package/dist/src/mcp/core.js +75 -119
  142. package/dist/src/mcp/core.js.map +1 -1
  143. package/dist/src/mcp/dm-messages.d.ts +4 -0
  144. package/dist/src/mcp/dm-messages.d.ts.map +1 -1
  145. package/dist/src/mcp/dm-messages.js +43 -2
  146. package/dist/src/mcp/dm-messages.js.map +1 -1
  147. package/dist/src/mcp/exchange.d.ts.map +1 -1
  148. package/dist/src/mcp/exchange.js +3 -2
  149. package/dist/src/mcp/exchange.js.map +1 -1
  150. package/dist/src/mcp/extensions.d.ts.map +1 -1
  151. package/dist/src/mcp/extensions.js +6 -2
  152. package/dist/src/mcp/extensions.js.map +1 -1
  153. package/dist/src/mcp/index.d.ts +5 -0
  154. package/dist/src/mcp/index.d.ts.map +1 -1
  155. package/dist/src/mcp/index.js +23 -4
  156. package/dist/src/mcp/index.js.map +1 -1
  157. package/dist/src/mcp/memory-namespace-hints.d.ts +33 -0
  158. package/dist/src/mcp/memory-namespace-hints.d.ts.map +1 -0
  159. package/dist/src/mcp/memory-namespace-hints.js +60 -0
  160. package/dist/src/mcp/memory-namespace-hints.js.map +1 -0
  161. package/dist/src/mcp/workspaces.d.ts +5 -0
  162. package/dist/src/mcp/workspaces.d.ts.map +1 -1
  163. package/dist/src/mcp/workspaces.js +5 -3
  164. package/dist/src/mcp/workspaces.js.map +1 -1
  165. package/dist/src/models/agent-task-schemas.d.ts +25 -3
  166. package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
  167. package/dist/src/models/agent-task-schemas.js +16 -0
  168. package/dist/src/models/agent-task-schemas.js.map +1 -1
  169. package/dist/src/models/app-tool-schemas.d.ts +518 -1
  170. package/dist/src/models/app-tool-schemas.d.ts.map +1 -1
  171. package/dist/src/models/app-tool-schemas.js +53 -1
  172. package/dist/src/models/app-tool-schemas.js.map +1 -1
  173. package/dist/src/models/odps-schemas.d.ts +305 -0
  174. package/dist/src/models/odps-schemas.d.ts.map +1 -0
  175. package/dist/src/models/odps-schemas.js +182 -0
  176. package/dist/src/models/odps-schemas.js.map +1 -0
  177. package/dist/src/models/offer-schemas.d.ts +357 -2
  178. package/dist/src/models/offer-schemas.d.ts.map +1 -1
  179. package/dist/src/models/offer-schemas.js +37 -0
  180. package/dist/src/models/offer-schemas.js.map +1 -1
  181. package/dist/src/models/schemas.d.ts +6 -3
  182. package/dist/src/models/schemas.d.ts.map +1 -1
  183. package/dist/src/models/schemas.js +10 -1
  184. package/dist/src/models/schemas.js.map +1 -1
  185. package/dist/src/models/webhook-schemas.d.ts +8 -8
  186. package/dist/src/routes/agent-tasks/create-read.d.ts +4 -0
  187. package/dist/src/routes/agent-tasks/create-read.d.ts.map +1 -1
  188. package/dist/src/routes/agent-tasks/create-read.js +20 -1
  189. package/dist/src/routes/agent-tasks/create-read.js.map +1 -1
  190. package/dist/src/routes/agent-tasks/lifecycle.d.ts.map +1 -1
  191. package/dist/src/routes/agent-tasks/lifecycle.js +10 -0
  192. package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
  193. package/dist/src/routes/agents/offers.d.ts +2 -0
  194. package/dist/src/routes/agents/offers.d.ts.map +1 -1
  195. package/dist/src/routes/agents/offers.js +0 -0
  196. package/dist/src/routes/agents/offers.js.map +1 -1
  197. package/dist/src/routes/app-grants.d.ts +6 -0
  198. package/dist/src/routes/app-grants.d.ts.map +1 -1
  199. package/dist/src/routes/app-grants.js +55 -25
  200. package/dist/src/routes/app-grants.js.map +1 -1
  201. package/dist/src/routes/apps/drafts.d.ts +3 -0
  202. package/dist/src/routes/apps/drafts.d.ts.map +1 -1
  203. package/dist/src/routes/apps/drafts.js +63 -1
  204. package/dist/src/routes/apps/drafts.js.map +1 -1
  205. package/dist/src/routes/apps/publish.d.ts +2 -0
  206. package/dist/src/routes/apps/publish.d.ts.map +1 -1
  207. package/dist/src/routes/apps/publish.js +17 -2
  208. package/dist/src/routes/apps/publish.js.map +1 -1
  209. package/dist/src/routes/commerce.d.ts.map +1 -1
  210. package/dist/src/routes/commerce.js +122 -2
  211. package/dist/src/routes/commerce.js.map +1 -1
  212. package/dist/src/routes/exchange-market.d.ts +6 -2
  213. package/dist/src/routes/exchange-market.d.ts.map +1 -1
  214. package/dist/src/routes/exchange-market.js +154 -28
  215. package/dist/src/routes/exchange-market.js.map +1 -1
  216. package/dist/src/routes/exchange.d.ts.map +1 -1
  217. package/dist/src/routes/exchange.js +5 -2
  218. package/dist/src/routes/exchange.js.map +1 -1
  219. package/dist/src/routes/extensions/actions.d.ts.map +1 -1
  220. package/dist/src/routes/extensions/actions.js +18 -0
  221. package/dist/src/routes/extensions/actions.js.map +1 -1
  222. package/dist/src/routes/extensions/crud.d.ts.map +1 -1
  223. package/dist/src/routes/extensions/crud.js +36 -3
  224. package/dist/src/routes/extensions/crud.js.map +1 -1
  225. package/dist/src/routes/extensions/entitlement-gate.d.ts.map +1 -1
  226. package/dist/src/routes/extensions/entitlement-gate.js +13 -0
  227. package/dist/src/routes/extensions/entitlement-gate.js.map +1 -1
  228. package/dist/src/routes/extensions/manifest.d.ts +6 -0
  229. package/dist/src/routes/extensions/manifest.d.ts.map +1 -1
  230. package/dist/src/routes/extensions/manifest.js +68 -1
  231. package/dist/src/routes/extensions/manifest.js.map +1 -1
  232. package/dist/src/routes/extensions/pacing.d.ts +31 -0
  233. package/dist/src/routes/extensions/pacing.d.ts.map +1 -0
  234. package/dist/src/routes/extensions/pacing.js +73 -0
  235. package/dist/src/routes/extensions/pacing.js.map +1 -0
  236. package/dist/src/routes/extensions/paywall.d.ts.map +1 -1
  237. package/dist/src/routes/extensions/paywall.js +17 -17
  238. package/dist/src/routes/extensions/paywall.js.map +1 -1
  239. package/dist/src/routes/memory/crud.d.ts.map +1 -1
  240. package/dist/src/routes/memory/crud.js +10 -0
  241. package/dist/src/routes/memory/crud.js.map +1 -1
  242. package/dist/src/routes/organisms/crud.d.ts +3 -0
  243. package/dist/src/routes/organisms/crud.d.ts.map +1 -1
  244. package/dist/src/routes/organisms/crud.js +5 -2
  245. package/dist/src/routes/organisms/crud.js.map +1 -1
  246. package/dist/src/routes/organisms/workspace-read.d.ts.map +1 -1
  247. package/dist/src/routes/organisms/workspace-read.js +7 -2
  248. package/dist/src/routes/organisms/workspace-read.js.map +1 -1
  249. package/dist/src/routes/public-stats.d.ts +7 -0
  250. package/dist/src/routes/public-stats.d.ts.map +1 -1
  251. package/dist/src/routes/public-stats.js +28 -7
  252. package/dist/src/routes/public-stats.js.map +1 -1
  253. package/dist/src/routes/sse.d.ts +7 -0
  254. package/dist/src/routes/sse.d.ts.map +1 -1
  255. package/dist/src/routes/sse.js +36 -6
  256. package/dist/src/routes/sse.js.map +1 -1
  257. package/dist/src/routes/storage-files.d.ts +11 -0
  258. package/dist/src/routes/storage-files.d.ts.map +1 -1
  259. package/dist/src/routes/storage-files.js +58 -51
  260. package/dist/src/routes/storage-files.js.map +1 -1
  261. package/dist/src/routes/subdomains.d.ts +4 -0
  262. package/dist/src/routes/subdomains.d.ts.map +1 -1
  263. package/dist/src/routes/subdomains.js +42 -5
  264. package/dist/src/routes/subdomains.js.map +1 -1
  265. package/dist/src/routes/upload.d.ts +11 -0
  266. package/dist/src/routes/upload.d.ts.map +1 -1
  267. package/dist/src/routes/upload.js +108 -28
  268. package/dist/src/routes/upload.js.map +1 -1
  269. package/dist/src/routes/webmcp.d.ts.map +1 -1
  270. package/dist/src/routes/webmcp.js +4 -0
  271. package/dist/src/routes/webmcp.js.map +1 -1
  272. package/dist/src/schemas/knowledge-package.d.ts +1 -1
  273. package/dist/src/server-bootstrap/static-files.d.ts +4 -0
  274. package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
  275. package/dist/src/server-bootstrap/static-files.js +11 -0
  276. package/dist/src/server-bootstrap/static-files.js.map +1 -1
  277. package/dist/src/services/build-app-prompt.d.ts +19 -0
  278. package/dist/src/services/build-app-prompt.d.ts.map +1 -1
  279. package/dist/src/services/build-app-prompt.js +97 -11
  280. package/dist/src/services/build-app-prompt.js.map +1 -1
  281. package/dist/src/services/call-timing.d.ts +51 -0
  282. package/dist/src/services/call-timing.d.ts.map +1 -0
  283. package/dist/src/services/call-timing.js +91 -0
  284. package/dist/src/services/call-timing.js.map +1 -0
  285. package/dist/src/services/capability-invoke.d.ts +2 -0
  286. package/dist/src/services/capability-invoke.d.ts.map +1 -1
  287. package/dist/src/services/capability-invoke.js +10 -0
  288. package/dist/src/services/capability-invoke.js.map +1 -1
  289. package/dist/src/services/config-schema.d.ts.map +1 -1
  290. package/dist/src/services/config-schema.js +6 -0
  291. package/dist/src/services/config-schema.js.map +1 -1
  292. package/dist/src/services/draft-token.d.ts +22 -2
  293. package/dist/src/services/draft-token.d.ts.map +1 -1
  294. package/dist/src/services/draft-token.js +52 -3
  295. package/dist/src/services/draft-token.js.map +1 -1
  296. package/dist/src/services/exchange-market.d.ts +41 -8
  297. package/dist/src/services/exchange-market.d.ts.map +1 -1
  298. package/dist/src/services/exchange-market.js +24 -2
  299. package/dist/src/services/exchange-market.js.map +1 -1
  300. package/dist/src/services/exchange-odps.d.ts +58 -0
  301. package/dist/src/services/exchange-odps.d.ts.map +1 -0
  302. package/dist/src/services/exchange-odps.js +400 -0
  303. package/dist/src/services/exchange-odps.js.map +1 -0
  304. package/dist/src/services/exchange-projection.d.ts +61 -0
  305. package/dist/src/services/exchange-projection.d.ts.map +1 -0
  306. package/dist/src/services/exchange-projection.js +504 -0
  307. package/dist/src/services/exchange-projection.js.map +1 -0
  308. package/dist/src/services/exchange-proposals.d.ts.map +1 -1
  309. package/dist/src/services/exchange-proposals.js +2 -0
  310. package/dist/src/services/exchange-proposals.js.map +1 -1
  311. package/dist/src/services/extension-files.d.ts +64 -0
  312. package/dist/src/services/extension-files.d.ts.map +1 -0
  313. package/dist/src/services/extension-files.js +88 -0
  314. package/dist/src/services/extension-files.js.map +1 -0
  315. package/dist/src/services/extension-runtime.d.ts +33 -0
  316. package/dist/src/services/extension-runtime.d.ts.map +1 -1
  317. package/dist/src/services/extension-runtime.js +52 -0
  318. package/dist/src/services/extension-runtime.js.map +1 -1
  319. package/dist/src/services/file-refs.d.ts +105 -0
  320. package/dist/src/services/file-refs.d.ts.map +1 -0
  321. package/dist/src/services/file-refs.js +106 -0
  322. package/dist/src/services/file-refs.js.map +1 -0
  323. package/dist/src/services/metered-entitlements.d.ts +7 -0
  324. package/dist/src/services/metered-entitlements.d.ts.map +1 -1
  325. package/dist/src/services/metered-entitlements.js +4 -0
  326. package/dist/src/services/metered-entitlements.js.map +1 -1
  327. package/dist/src/services/owner-memory.d.ts +14 -1
  328. package/dist/src/services/owner-memory.d.ts.map +1 -1
  329. package/dist/src/services/owner-memory.js +8 -14
  330. package/dist/src/services/owner-memory.js.map +1 -1
  331. package/dist/src/services/task-files.d.ts +51 -0
  332. package/dist/src/services/task-files.d.ts.map +1 -0
  333. package/dist/src/services/task-files.js +58 -0
  334. package/dist/src/services/task-files.js.map +1 -0
  335. package/dist/src/services/upload-token.d.ts +29 -0
  336. package/dist/src/services/upload-token.d.ts.map +1 -1
  337. package/dist/src/services/upload-token.js +37 -0
  338. package/dist/src/services/upload-token.js.map +1 -1
  339. package/dist/src/services/upload-zip.d.ts +2 -0
  340. package/dist/src/services/upload-zip.d.ts.map +1 -1
  341. package/dist/src/services/upload-zip.js +5 -1
  342. package/dist/src/services/upload-zip.js.map +1 -1
  343. package/dist/src/services/workspace-meta.d.ts +15 -0
  344. package/dist/src/services/workspace-meta.d.ts.map +1 -1
  345. package/dist/src/services/workspace-meta.js +17 -0
  346. package/dist/src/services/workspace-meta.js.map +1 -1
  347. package/dist/src/services/workspace-provision.d.ts +3 -0
  348. package/dist/src/services/workspace-provision.d.ts.map +1 -1
  349. package/dist/src/services/workspace-provision.js +5 -3
  350. package/dist/src/services/workspace-provision.js.map +1 -1
  351. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +1 -0
  352. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts.map +1 -1
  353. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js +10 -0
  354. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
  355. package/dist/src/storage/providers/postgres-kysely/methods/memory.d.ts +2 -0
  356. package/dist/src/storage/providers/postgres-kysely/methods/memory.d.ts.map +1 -1
  357. package/dist/src/storage/providers/postgres-kysely/methods/memory.js +12 -1
  358. package/dist/src/storage/providers/postgres-kysely/methods/memory.js.map +1 -1
  359. package/dist/src/storage/providers/postgres-kysely/methods/organisms.d.ts.map +1 -1
  360. package/dist/src/storage/providers/postgres-kysely/methods/organisms.js +5 -1
  361. package/dist/src/storage/providers/postgres-kysely/methods/organisms.js.map +1 -1
  362. package/dist/src/storage/providers/postgres-kysely/migrations/0012_unique_live_app_grant.sql +29 -0
  363. package/dist/src/storage/providers/sqlite/methods/apps.d.ts +3 -0
  364. package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
  365. package/dist/src/storage/providers/sqlite/methods/apps.js +7 -0
  366. package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
  367. package/dist/src/storage/providers/sqlite/methods/governance.d.ts +1 -0
  368. package/dist/src/storage/providers/sqlite/methods/governance.d.ts.map +1 -1
  369. package/dist/src/storage/providers/sqlite/methods/governance.js +4 -1
  370. package/dist/src/storage/providers/sqlite/methods/governance.js.map +1 -1
  371. package/dist/src/storage/providers/sqlite/methods/owner.d.ts +5 -0
  372. package/dist/src/storage/providers/sqlite/methods/owner.d.ts.map +1 -1
  373. package/dist/src/storage/providers/sqlite/methods/owner.js +8 -0
  374. package/dist/src/storage/providers/sqlite/methods/owner.js.map +1 -1
  375. package/dist/src/storage/providers/sqlite/schema.d.ts +3 -0
  376. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  377. package/dist/src/storage/providers/sqlite/schema.js +20 -0
  378. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  379. package/dist/src/storage/repositories/app-grant.repository.d.ts +9 -1
  380. package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
  381. package/dist/src/storage/repositories/memory.repository.d.ts +14 -0
  382. package/dist/src/storage/repositories/memory.repository.d.ts.map +1 -1
  383. package/dist/src/storage/repositories-impl/memory-repository.d.ts +8 -1
  384. package/dist/src/storage/repositories-impl/memory-repository.d.ts.map +1 -1
  385. package/dist/src/storage/repositories-impl/memory-repository.js +15 -4
  386. package/dist/src/storage/repositories-impl/memory-repository.js.map +1 -1
  387. package/dist/src/storage/types/agents-messaging.d.ts +19 -0
  388. package/dist/src/storage/types/agents-messaging.d.ts.map +1 -1
  389. package/dist/src/storage/types/agents-messaging.js.map +1 -1
  390. package/dist/src/storage/types/organisms-federation.d.ts +29 -0
  391. package/dist/src/storage/types/organisms-federation.d.ts.map +1 -1
  392. package/dist/src/utils/app-badge.d.ts.map +1 -1
  393. package/dist/src/utils/app-badge.js +7 -3
  394. package/dist/src/utils/app-badge.js.map +1 -1
  395. package/dist/static/app-catalog/_template.html +6 -5
  396. package/dist/static/app-catalog/js/cortex.js +3 -1
  397. package/dist/static/app-catalog/js/detail.js +411 -36
  398. package/dist/static/app-catalog/js/i18n-data.js +279 -3
  399. package/dist/static/app-catalog/js/main.js +28 -37
  400. package/dist/static/app-catalog/js/monetize.js +204 -16
  401. package/dist/static/app-catalog/js/odps.js +489 -0
  402. package/dist/static/app-catalog/js/render.js +3 -0
  403. package/dist/static/app-catalog/js/workcopy.js +198 -0
  404. package/dist/static/app-catalog/styles/app-catalog.css +60 -0
  405. package/dist/static/app-catalog.html +1450 -137
  406. package/dist/static/sdk-libs/agents/index.js +45 -7
  407. package/dist/static/sdk-libs/auth/cluster.js +97 -0
  408. package/dist/static/sdk-libs/auth/index.js +25 -1
  409. package/dist/static/sdk-libs/auth/locale.js +151 -0
  410. package/dist/static/sdk-libs/auth/modal.js +11 -2
  411. package/dist/static/sdk-libs/auth/palette.js +172 -0
  412. package/dist/static/sdk-libs/auth/pill.js +37 -6
  413. package/dist/static/sdk-libs/auth/theme.js +61 -20
  414. package/dist/static/sdk-libs/data/index.js +70 -8
  415. package/dist/static/sdk-libs/dist/aimeat-agents.js +41 -8
  416. package/dist/static/sdk-libs/dist/aimeat-auth.js +422 -21
  417. package/dist/static/sdk-libs/dist/aimeat-data.js +50 -8
  418. package/dist/static/sdk-libs/dist/aimeat-live.js +54 -2
  419. package/dist/static/sdk-libs/dist/aimeat-markdown.js +32 -1
  420. package/dist/static/sdk-libs/live/index.js +71 -4
  421. package/dist/static/sdk-libs/markdown/index.js +49 -1
  422. package/package.json +6 -2
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @file src/services/extension-files.ts
3
+ * @description The file half of the extension sandbox: ctx.files.read / ctx.files.write. An
4
+ * extension could hold memory records and make outbound text requests, and had no way to touch a
5
+ * stored FILE — so every capability that works on bytes (an image, a PDF, an audio clip) had to
6
+ * take base64 in its arguments and hand base64 back in its result. ctx.fetch cannot stand in for
7
+ * it either: it answers with `text`, so binary read through it is corrupt by construction.
8
+ *
9
+ * Two rules make this safe to hand to sandboxed code:
10
+ * READ — authorized as the CALLER, through the same authorizeRead() the /v1/pub route uses. An
11
+ * extension can read exactly what the person invoking it could read, never more.
12
+ * WRITE — lands in the caller's own storage under a reserved `ext/{name}/` prefix. The result
13
+ * belongs to the person who paid for it and shows up in their files, and no extension
14
+ * can overwrite something they wrote themselves.
15
+ * Both are size-capped before any base64 crosses the QuickJS bridge, and a write goes through the
16
+ * ordinary per-file limit and storage quota.
17
+ * @structure MAX_FILE_BYTES · parseRef · makeExtensionFiles (the ctx.files factory)
18
+ * @usage const files = makeExtensionFiles({ config, storage, callerGaii, extName });
19
+ * const ctx: ExtensionCtx = { …, files };
20
+ * @version-history
21
+ * v1.0.0 — 2026-07-26 — Initial: ctx.files.read/write so a capability can take a file REFERENCE
22
+ * instead of its bytes (image pipelines, MCP-safe handoff).
23
+ * v1.1.0 — 2026-07-26 — parseRef delegates to services/file-refs.ts: the same reference form now
24
+ * serves MCP tools, DM attachments and task attachments, and there is one implementation of it.
25
+ */
26
+ import type { AimeatConfig } from '../config.js';
27
+ import type { Storage } from '../storage/interface.js';
28
+ import { parseFileRef } from './file-refs.js';
29
+ /** What may cross the sandbox bridge in one call, in decoded bytes. */
30
+ export declare const MAX_EXT_FILE_BYTES: number;
31
+ export interface ExtensionFileRef {
32
+ /** "<gaii>/<key>", or a bare key meaning the caller's own storage. */
33
+ ref: string;
34
+ }
35
+ /**
36
+ * Split "<gaii>/<key>" into its parts. A GAII always carries an @node, so the first path segment
37
+ * is an owner only when it looks like one; anything else is a plain key belonging to the caller.
38
+ * Kept as a named export here (the sandbox's vocabulary) over the shared implementation.
39
+ */
40
+ export declare const parseRef: typeof parseFileRef;
41
+ export declare function makeExtensionFiles(deps: {
42
+ config: AimeatConfig;
43
+ storage: Storage;
44
+ callerGaii: string;
45
+ callerOwner?: string;
46
+ extName: string;
47
+ }): {
48
+ read(ref: string): Promise<{
49
+ base64: string;
50
+ mime: string;
51
+ size: number;
52
+ key: string;
53
+ } | null>;
54
+ write(key: string, base64: string, opts?: {
55
+ mime?: string;
56
+ visibility?: string;
57
+ }): Promise<{
58
+ key: string;
59
+ gaii: string;
60
+ url: string;
61
+ size: number;
62
+ }>;
63
+ };
64
+ //# sourceMappingURL=extension-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-files.d.ts","sourceRoot":"","sources":["../../../src/services/extension-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC7B,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,qBAAe,CAAC;AAErC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACrC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACnB,GAAG;IACA,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC/F,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5E,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE,CA2EA"}
@@ -0,0 +1,88 @@
1
+ import { authorizeRead } from './access-guard.js';
2
+ import { parseFileRef } from './file-refs.js';
3
+ import { checkStorageQuota } from './quota.js';
4
+ /** What may cross the sandbox bridge in one call, in decoded bytes. */
5
+ export const MAX_EXT_FILE_BYTES = 8 * 1024 * 1024;
6
+ /**
7
+ * Split "<gaii>/<key>" into its parts. A GAII always carries an @node, so the first path segment
8
+ * is an owner only when it looks like one; anything else is a plain key belonging to the caller.
9
+ * Kept as a named export here (the sandbox's vocabulary) over the shared implementation.
10
+ */
11
+ export const parseRef = parseFileRef;
12
+ export function makeExtensionFiles(deps) {
13
+ const { config, storage, callerGaii, callerOwner, extName } = deps;
14
+ return {
15
+ async read(ref) {
16
+ const { gaii, key } = parseRef(String(ref || ''), callerGaii);
17
+ if (!key)
18
+ return null;
19
+ const file = await storage.getStorageFile(gaii, key);
20
+ if (!file)
21
+ return null;
22
+ // The extension reads AS the caller. A capability must never become a way to see a file
23
+ // the person invoking it could not open themselves.
24
+ const decision = await authorizeRead(storage, config, {
25
+ ownerGaii: gaii,
26
+ accessorGaii: callerGaii,
27
+ resourceKey: `storage:${key}`,
28
+ visibility: file.visibility,
29
+ groupId: file.groupId,
30
+ workspaceRef: file.workspaceRef,
31
+ accessorSub: callerGaii,
32
+ accessorOwner: callerOwner,
33
+ action: 'read',
34
+ });
35
+ if (!decision.allowed) {
36
+ throw new Error(`Access denied for ${gaii}/${key}: ${decision.reason ?? 'not permitted'}`);
37
+ }
38
+ if (file.size > MAX_EXT_FILE_BYTES) {
39
+ throw new Error(`File ${key} is ${Math.round(file.size / 1024)} kB, over the ${MAX_EXT_FILE_BYTES / 1024 / 1024} MB sandbox limit`);
40
+ }
41
+ return {
42
+ base64: Buffer.from(file.data).toString('base64'),
43
+ mime: file.mimeType,
44
+ size: file.size,
45
+ key: `${gaii}/${key}`,
46
+ };
47
+ },
48
+ async write(key, base64, opts) {
49
+ const clean = String(key || '').replace(/^\/+/, '').trim();
50
+ if (!clean)
51
+ throw new Error('write() needs a key');
52
+ // Reserved prefix: the result is attributable to the extension that made it, and no
53
+ // extension can land on top of a file the owner wrote by hand.
54
+ const full = clean.startsWith(`ext/${extName}/`) ? clean : `ext/${extName}/${clean}`;
55
+ const data = Buffer.from(String(base64 || '').replace(/^data:[^;]+;base64,/, ''), 'base64');
56
+ if (!data.length)
57
+ throw new Error('write() got no bytes');
58
+ if (data.length > MAX_EXT_FILE_BYTES) {
59
+ throw new Error(`Refusing ${Math.round(data.length / 1024)} kB: over the ${MAX_EXT_FILE_BYTES / 1024 / 1024} MB sandbox limit`);
60
+ }
61
+ if (data.length > config.storageMaxFileSizeMb * 1024 * 1024) {
62
+ throw new Error(`File size exceeds the node's ${config.storageMaxFileSizeMb}MB limit`);
63
+ }
64
+ const quota = await checkStorageQuota(config, storage, callerGaii, data.length);
65
+ if (!quota.allowed)
66
+ throw new Error(quota.reason ?? 'storage quota exceeded');
67
+ const visibility = opts?.visibility === 'public' ? 'public' : 'private';
68
+ await storage.createStorageFile({
69
+ key: full,
70
+ ownerGaii: callerGaii,
71
+ visibility,
72
+ mimeType: opts?.mime || 'application/octet-stream',
73
+ size: data.length,
74
+ data,
75
+ tags: [`ext:${extName}`],
76
+ createdAt: new Date().toISOString(),
77
+ });
78
+ return {
79
+ key: full,
80
+ gaii: callerGaii,
81
+ // Only meaningful for a public file; a private one is fetched with the owner's token.
82
+ url: `${config.baseUrl}/v1/pub/${encodeURIComponent(callerGaii)}/${full.split('/').map(encodeURIComponent).join('/')}`,
83
+ size: data.length,
84
+ };
85
+ },
86
+ };
87
+ }
88
+ //# sourceMappingURL=extension-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-files.js","sourceRoot":"","sources":["../../../src/services/extension-files.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,25 @@ export interface ExtensionCtx {
33
33
  text: string;
34
34
  headers: Record<string, string>;
35
35
  }>;
36
+ /** Stored FILES, by reference. Optional the way notify/email are: a context that cannot offer
37
+ * it (a scheduled run with no caller) simply does not, and the guest sees undefined. */
38
+ files?: {
39
+ read(ref: string): Promise<{
40
+ base64: string;
41
+ mime: string;
42
+ size: number;
43
+ key: string;
44
+ } | null>;
45
+ write(key: string, base64: string, opts?: {
46
+ mime?: string;
47
+ visibility?: string;
48
+ }): Promise<{
49
+ key: string;
50
+ gaii: string;
51
+ url: string;
52
+ size: number;
53
+ }>;
54
+ };
36
55
  caller: {
37
56
  gaii: string;
38
57
  owner: string;
@@ -55,6 +74,20 @@ export interface ExtensionCtx {
55
74
  }): Promise<boolean>;
56
75
  email?(to: string, subject: string, body: string): Promise<boolean>;
57
76
  }
77
+ /**
78
+ * The EXACT source of `ctx.hash`, exported so an app that must agree with an extension on a
79
+ * derived value can run the identical function in the browser.
80
+ *
81
+ * Why this exists: the sandbox has no `crypto.subtle`, so an extension author reaches for a
82
+ * hand-rolled hash while the browser side reaches for SHA-256, and the two silently disagree. That
83
+ * is not hypothetical — it shipped: an app and its extension hashed the same spreadsheet inputs
84
+ * differently, so every value the app computed looked stale to the server and would have been
85
+ * recomputed and re-charged forever. One published function, usable verbatim on both sides.
86
+ *
87
+ * FNV-1a style, 64 bits as two 32-bit lanes. Not cryptographic: use it for cache keys, change
88
+ * detection and content identity, never for signatures or secrets.
89
+ */
90
+ export declare const EXT_HASH_REFERENCE_JS = "function aimeatHash(s) {\n s = String(s);\n var h1 = 0x811c9dc5, h2 = 0x01000193;\n for (var i = 0; i < s.length; i++) {\n var ch = s.charCodeAt(i);\n h1 = (h1 ^ ch) >>> 0; h1 = Math.imul(h1, 0x01000193) >>> 0;\n h2 = (h2 ^ (ch + i)) >>> 0; h2 = Math.imul(h2, 0x85ebca6b) >>> 0;\n }\n return ('00000000' + h1.toString(16)).slice(-8) + ('00000000' + h2.toString(16)).slice(-8);\n}";
58
91
  export interface ExtensionLimits {
59
92
  memoryMb: number;
60
93
  timeoutMs: number;
@@ -1 +1 @@
1
- {"version":3,"file":"extension-runtime.d.ts","sourceRoot":"","sources":["../../../src/services/extension-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-runtime.d.ts","sourceRoot":"","sources":["../../../src/services/extension-runtime.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,39 @@
11
11
  * v2.0.0 -- 2026-04-29 -- Replace isolated-vm with quickjs-emscripten (pure WASM, no C++ build tools)
12
12
  * v2.1.0 -- 2026-07-07 -- Await/abort in-flight host calls before disposing the runtime; fixes JS_FreeRuntime gc assertion abort when a script rejects with sibling async calls still pending (e.g. multi-feed fetch, one feed fails)
13
13
  * v2.2.0 -- 2026-07-08 -- Self-heal a poisoned WASM engine: detect an emscripten abort and rebuild the module singleton so one abort no longer fails every later run until a process restart
14
+ * v2.4.0 -- 2026-07-26 -- Give the sandbox the two primitives every author was otherwise forced to
15
+ * hand-roll: `ctx.hash(s)` (FNV-1a 64-bit, published as EXT_HASH_REFERENCE_JS so a browser app
16
+ * can compute the SAME value -- there is no crypto.subtle in QuickJS, and an app/extension pair
17
+ * that hashes differently silently recomputes and re-charges everything) and `ctx.now()` (the
18
+ * run's start timestamp, fixed for the whole action so multi-record writes stay consistent).
19
+ * Both are pure guest-side helpers: no host call, no API-budget cost.
14
20
  * v2.3.0 -- 2026-07-18 -- transformScript preserves top-level helpers/consts declared ABOVE `export default` (rewrites the export in place instead of wrapping the whole script) -- fixes QuickJS "unexpected token 'const'" for actions that define a helper above the export, which the extension prompt explicitly permits
15
21
  */
16
22
  import { getQuickJS, newQuickJSWASMModule, shouldInterruptAfterDeadline } from 'quickjs-emscripten';
17
23
  import { safeFetch } from '../utils/url-validator.js';
24
+ /**
25
+ * The EXACT source of `ctx.hash`, exported so an app that must agree with an extension on a
26
+ * derived value can run the identical function in the browser.
27
+ *
28
+ * Why this exists: the sandbox has no `crypto.subtle`, so an extension author reaches for a
29
+ * hand-rolled hash while the browser side reaches for SHA-256, and the two silently disagree. That
30
+ * is not hypothetical — it shipped: an app and its extension hashed the same spreadsheet inputs
31
+ * differently, so every value the app computed looked stale to the server and would have been
32
+ * recomputed and re-charged forever. One published function, usable verbatim on both sides.
33
+ *
34
+ * FNV-1a style, 64 bits as two 32-bit lanes. Not cryptographic: use it for cache keys, change
35
+ * detection and content identity, never for signatures or secrets.
36
+ */
37
+ export const EXT_HASH_REFERENCE_JS = `function aimeatHash(s) {
38
+ s = String(s);
39
+ var h1 = 0x811c9dc5, h2 = 0x01000193;
40
+ for (var i = 0; i < s.length; i++) {
41
+ var ch = s.charCodeAt(i);
42
+ h1 = (h1 ^ ch) >>> 0; h1 = Math.imul(h1, 0x01000193) >>> 0;
43
+ h2 = (h2 ^ (ch + i)) >>> 0; h2 = Math.imul(h2, 0x85ebca6b) >>> 0;
44
+ }
45
+ return ('00000000' + h1.toString(16)).slice(-8) + ('00000000' + h2.toString(16)).slice(-8);
46
+ }`;
18
47
  // ── Internal helpers ─────────────────────────────────────────
19
48
  function setStringGlobal(vm, name, value) {
20
49
  if (value === null) {
@@ -106,7 +135,17 @@ ${userFnDecl}
106
135
  return JSON.parse(raw);
107
136
  }
108
137
 
138
+ // Pure helpers: no host round trip, so they cost no API-call budget and add no latency.
139
+ // ctx.hash is the node's PUBLISHED hash (EXT_HASH_REFERENCE_JS) so a browser app can compute
140
+ // the identical value; the sandbox has no crypto.subtle, and letting each author invent one is
141
+ // how an app and its extension end up disagreeing about what is up to date.
142
+ ${EXT_HASH_REFERENCE_JS.replace(/^function aimeatHash/, 'function __hash')}
143
+
109
144
  const ctx = {
145
+ // One timestamp for the whole action run: two calls cannot disagree, so an action that
146
+ // stamps several records stays internally consistent and replayable.
147
+ now: () => __runStartedAt,
148
+ hash: (s) => __hash(s),
110
149
  memory: {
111
150
  get: async (key) => __call(__memory_get, [key]),
112
151
  set: async (key, value) => __call(__memory_set, [key, JSON.stringify(value)]),
@@ -115,6 +154,10 @@ ${userFnDecl}
115
154
  getPublic: async (namespace, key) => __call(__memory_getPublic, [namespace, key]),
116
155
  },
117
156
  fetch: async (url, opts) => __call(__fetch, [url, opts ? JSON.stringify(opts) : '{}']),
157
+ files: __files_read ? {
158
+ read: async (ref) => __call(__files_read, [ref]),
159
+ write: async (key, b64, opts) => __call(__files_write, [key, b64, opts ? JSON.stringify(opts) : '{}']),
160
+ } : undefined,
118
161
  wallet: {
119
162
  consume: __wallet_consume ? (async (amount, reason) => __call(__wallet_consume, [String(amount), reason])) : undefined,
120
163
  getBalance: __wallet_balance ? (async () => __call(__wallet_balance, [])) : undefined,
@@ -220,6 +263,8 @@ export async function executeExtensionAction(scriptContent, ctx, input, limits)
220
263
  const counter = { count: 0 };
221
264
  // ── Serialized data ──────────────────────────────────
222
265
  setStringGlobal(vm, '__inputJson', JSON.stringify(input));
266
+ // Captured ONCE here, so ctx.now() is stable across the whole action.
267
+ setStringGlobal(vm, '__runStartedAt', new Date().toISOString());
223
268
  setStringGlobal(vm, '__callerJson', JSON.stringify(ctx.caller));
224
269
  setStringGlobal(vm, '__configJson', JSON.stringify(ctx.config));
225
270
  setStringGlobal(vm, '__instanceJson', ctx.instance ? JSON.stringify(ctx.instance) : null);
@@ -277,6 +322,13 @@ export async function executeExtensionAction(scriptContent, ctx, input, limits)
277
322
  resp.headers.forEach((v, k) => { headers[k] = v; });
278
323
  return { status: resp.status, ok: resp.ok, text, headers };
279
324
  }, counter, limits.maxApiCalls, inflight);
325
+ // ── Files API ─────────────────────────────────────────
326
+ // A capability that works on bytes takes a REFERENCE and answers with one. Both sides are
327
+ // size-capped in the factory before any base64 crosses this bridge.
328
+ registerAsyncHostFn(vm, '__files_read', ctx.files ? async (ref) => ctx.files.read(ref) : null, counter, limits.maxApiCalls, inflight);
329
+ registerAsyncHostFn(vm, '__files_write', ctx.files
330
+ ? async (key, b64, optsJson) => ctx.files.write(key, b64, JSON.parse(optsJson || '{}'))
331
+ : null, counter, limits.maxApiCalls, inflight);
280
332
  // ── Wallet API ────────────────────────────────────────
281
333
  registerAsyncHostFn(vm, '__wallet_consume', ctx.wallet.consume
282
334
  ? async (amountStr, reason) => ctx.wallet.consume(Number(amountStr), reason)
@@ -1 +1 @@
1
- {"version":3,"file":"extension-runtime.js","sourceRoot":"","sources":["../../../src/services/extension-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-runtime.js","sourceRoot":"","sources":["../../../src/services/extension-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @file src/services/file-refs.ts
3
+ * @description One place that turns a FILE REFERENCE into either an authorized handle or a legible
4
+ * refusal. A reference is `"<gaii>/<key>"` (a bare key means the caller's own storage) — the same
5
+ * form `ctx.files.read` already takes, so an extension, an MCP tool, a task attachment and a DM
6
+ * attachment all name a file the same way.
7
+ *
8
+ * Why this exists: storage is keyed by (ownerGaii, key), and every agent-facing read path used to
9
+ * look up ONLY the caller's own namespace. A file the owner uploaded answered "not found" to that
10
+ * owner's own agent, so a PDF could be handed to an agent as a reference it could never open. The
11
+ * authorization was never the problem — `visibility:'owner'` and consent grants already cover it;
12
+ * the lookup was. Reads here go through the same authorizeRead() the /v1/pub route uses, as the
13
+ * CALLER, so an agent sees exactly what the principal invoking it could see and nothing more.
14
+ *
15
+ * Bytes never travel through this module: it answers with a presigned, TTL-limited download_url.
16
+ * A FOREIGN file gets a deliberately shorter TTL than the caller's own — the handle outlives a
17
+ * revoked grant until it expires, so the window for someone else's data is kept small.
18
+ * @structure
19
+ * - parseFileRef(ref, callerGaii) — split "<gaii>/<key>" (bare key → caller's namespace)
20
+ * - resolveFileRef(...) — locate + authorize, never throws, returns a typed access verdict
21
+ * - fileHandleFor(...) — resolveFileRef + mint the presigned download handle
22
+ * - OWN_HANDLE_TTL_SECONDS / FOREIGN_HANDLE_TTL_SECONDS
23
+ * @usage
24
+ * import { fileHandleFor } from '../services/file-refs.js';
25
+ * const h = await fileHandleFor(storage, config, `${ownerGhii}/${key}`, { gaii: agentGaii });
26
+ * if (h.access !== 'granted') return refuse(h.reason);
27
+ * @version-history
28
+ * v1.0.0 — 2026-07-26 — Initial: shared file-reference resolution so an agent can read a file it
29
+ * does not own (owner-uploaded PDFs, DM attachments, task attachments) through one guard.
30
+ */
31
+ import type { AimeatConfig } from '../config.js';
32
+ import type { Storage, StorageFileRecord } from '../storage/interface.js';
33
+ /** A handle for one of the caller's OWN files may live an hour (parity with GET /v1/storage?mode=handle). */
34
+ export declare const OWN_HANDLE_TTL_SECONDS = 3600;
35
+ /** Someone else's file: short enough that a revoked grant stops mattering quickly. */
36
+ export declare const FOREIGN_HANDLE_TTL_SECONDS = 900;
37
+ export interface FileRefAccessor {
38
+ /** The resolved identity of the caller (GHII / GAII / GEAI) — never a client-supplied id. */
39
+ gaii: string;
40
+ /** `req.auth.sub` when there is one (threaded into the workspace read gate). */
41
+ sub?: string;
42
+ /** The caller's bare owner name (threaded into the workspace read gate). */
43
+ owner?: string;
44
+ }
45
+ export type FileRefAccess = 'granted' | 'denied' | 'missing';
46
+ export interface ResolvedFileRef {
47
+ access: FileRefAccess;
48
+ /** Canonical "<gaii>/<key>" form of what was asked for. */
49
+ ref: string;
50
+ ownerGaii: string;
51
+ key: string;
52
+ /** Present only when access === 'granted'. */
53
+ file?: StorageFileRecord;
54
+ /** Machine-readable cause on a non-granted verdict. */
55
+ reason?: string;
56
+ }
57
+ export interface FileHandle {
58
+ access: FileRefAccess;
59
+ ref: string;
60
+ owner_gaii: string;
61
+ key: string;
62
+ mime_type?: string;
63
+ size?: number;
64
+ name?: string;
65
+ /** Presigned, no-auth GET. Absent unless access === 'granted'. */
66
+ download_url?: string;
67
+ expires_in_seconds?: number;
68
+ reason?: string;
69
+ }
70
+ /**
71
+ * Split `"<gaii>/<key>"` into its parts. A GAII always carries an `@node` (and an extension namespace
72
+ * starts with `ext:`), so the first path segment is an owner ONLY when it looks like one — a plain
73
+ * `dm-out/invoice.pdf` stays a key in the caller's own namespace.
74
+ */
75
+ export declare function parseFileRef(ref: string, callerGaii: string): {
76
+ gaii: string;
77
+ key: string;
78
+ };
79
+ /** Build the canonical reference string for a stored file. */
80
+ export declare function fileRefFor(ownerGaii: string, key: string): string;
81
+ /**
82
+ * Locate the file a reference names and decide whether `accessor` may read it. Never throws: a
83
+ * missing file, an unreadable one and a malformed reference all come back as a verdict, because
84
+ * every caller here is a tool or a route that owes the agent a legible answer rather than a stack
85
+ * trace. Existence is NOT disclosed to a caller who may not read the file — a denied read reports
86
+ * 'denied' whether or not the bytes exist, matching GET /v1/pub.
87
+ */
88
+ export declare function resolveFileRef(storage: Storage, config: AimeatConfig, ref: string, accessor: FileRefAccessor): Promise<ResolvedFileRef>;
89
+ /**
90
+ * Turn an already-resolved reference into a handle. Split out from fileHandleFor so a caller that
91
+ * needs the record for something else (an inline text read, a byte stream) pays for ONE lookup —
92
+ * getStorageFile loads the data, and resolving twice would read a large file twice.
93
+ */
94
+ export declare function handleFromResolved(config: AimeatConfig, resolved: ResolvedFileRef, accessorGaii: string, opts?: {
95
+ name?: string;
96
+ }): Promise<FileHandle>;
97
+ /**
98
+ * Resolve a reference and, when the read is allowed, mint the presigned download handle. This is what
99
+ * every agent-facing surface returns: the agent gets a URL it can hand to a fetch, a document parser
100
+ * or a human, and the bytes never enter a model context.
101
+ */
102
+ export declare function fileHandleFor(storage: Storage, config: AimeatConfig, ref: string, accessor: FileRefAccessor, opts?: {
103
+ name?: string;
104
+ }): Promise<FileHandle>;
105
+ //# sourceMappingURL=file-refs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-refs.d.ts","sourceRoot":"","sources":["../../../src/services/file-refs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAI1E,6GAA6G;AAC7G,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,sFAAsF;AACtF,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC5B,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAS3F;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,eAAe,GAC1B,OAAO,CAAC,eAAe,CAAC,CAsC1B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,UAAU,CAAC,CAyBrB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAC/B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,eAAe,EACzB,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,UAAU,CAAC,CAGrB"}
@@ -0,0 +1,106 @@
1
+ import { authorizeRead } from './access-guard.js';
2
+ import { generateDownloadToken } from './download-token.js';
3
+ /** A handle for one of the caller's OWN files may live an hour (parity with GET /v1/storage?mode=handle). */
4
+ export const OWN_HANDLE_TTL_SECONDS = 3600;
5
+ /** Someone else's file: short enough that a revoked grant stops mattering quickly. */
6
+ export const FOREIGN_HANDLE_TTL_SECONDS = 900;
7
+ /**
8
+ * Split `"<gaii>/<key>"` into its parts. A GAII always carries an `@node` (and an extension namespace
9
+ * starts with `ext:`), so the first path segment is an owner ONLY when it looks like one — a plain
10
+ * `dm-out/invoice.pdf` stays a key in the caller's own namespace.
11
+ */
12
+ export function parseFileRef(ref, callerGaii) {
13
+ const slash = String(ref ?? '').indexOf('/');
14
+ if (slash > 0) {
15
+ const head = ref.slice(0, slash);
16
+ if (head.includes('@') || head.startsWith('ext:')) {
17
+ return { gaii: head, key: ref.slice(slash + 1) };
18
+ }
19
+ }
20
+ return { gaii: callerGaii, key: String(ref ?? '') };
21
+ }
22
+ /** Build the canonical reference string for a stored file. */
23
+ export function fileRefFor(ownerGaii, key) {
24
+ return `${ownerGaii}/${key}`;
25
+ }
26
+ /**
27
+ * Locate the file a reference names and decide whether `accessor` may read it. Never throws: a
28
+ * missing file, an unreadable one and a malformed reference all come back as a verdict, because
29
+ * every caller here is a tool or a route that owes the agent a legible answer rather than a stack
30
+ * trace. Existence is NOT disclosed to a caller who may not read the file — a denied read reports
31
+ * 'denied' whether or not the bytes exist, matching GET /v1/pub.
32
+ */
33
+ export async function resolveFileRef(storage, config, ref, accessor) {
34
+ const { gaii, key } = parseFileRef(ref, accessor.gaii);
35
+ const canonical = fileRefFor(gaii, key);
36
+ if (!key) {
37
+ return { access: 'missing', ref: canonical, ownerGaii: gaii, key, reason: 'empty_key' };
38
+ }
39
+ const file = await storage.getStorageFile(gaii, key);
40
+ const own = gaii === accessor.gaii;
41
+ if (!file) {
42
+ return {
43
+ access: 'missing',
44
+ ref: canonical,
45
+ ownerGaii: gaii,
46
+ key,
47
+ // The single most common mistake: naming a bare key for a file that belongs to the OWNER.
48
+ reason: own
49
+ ? 'not_found_in_your_namespace'
50
+ : 'not_found',
51
+ };
52
+ }
53
+ const decision = await authorizeRead(storage, config, {
54
+ ownerGaii: gaii,
55
+ accessorGaii: accessor.gaii,
56
+ resourceKey: `storage:${key}`,
57
+ visibility: file.visibility,
58
+ groupId: file.groupId,
59
+ workspaceRef: file.workspaceRef,
60
+ accessorSub: accessor.sub,
61
+ accessorOwner: accessor.owner,
62
+ action: 'read',
63
+ });
64
+ if (!decision.allowed) {
65
+ return { access: 'denied', ref: canonical, ownerGaii: gaii, key, reason: decision.reason ?? 'not_permitted' };
66
+ }
67
+ return { access: 'granted', ref: canonical, ownerGaii: gaii, key, file };
68
+ }
69
+ /**
70
+ * Turn an already-resolved reference into a handle. Split out from fileHandleFor so a caller that
71
+ * needs the record for something else (an inline text read, a byte stream) pays for ONE lookup —
72
+ * getStorageFile loads the data, and resolving twice would read a large file twice.
73
+ */
74
+ export async function handleFromResolved(config, resolved, accessorGaii, opts) {
75
+ const base = {
76
+ access: resolved.access,
77
+ ref: resolved.ref,
78
+ owner_gaii: resolved.ownerGaii,
79
+ key: resolved.key,
80
+ };
81
+ if (opts?.name)
82
+ base.name = opts.name;
83
+ if (resolved.access !== 'granted' || !resolved.file) {
84
+ return { ...base, reason: resolved.reason };
85
+ }
86
+ const file = resolved.file;
87
+ const ttl = resolved.ownerGaii === accessorGaii ? OWN_HANDLE_TTL_SECONDS : FOREIGN_HANDLE_TTL_SECONDS;
88
+ const token = await generateDownloadToken({ sub: file.ownerGaii, key: file.key, mimeType: file.mimeType, size: file.size }, ttl);
89
+ return {
90
+ ...base,
91
+ mime_type: file.mimeType,
92
+ size: file.size,
93
+ download_url: `${config.baseUrl}/v1/download/${token}`,
94
+ expires_in_seconds: ttl,
95
+ };
96
+ }
97
+ /**
98
+ * Resolve a reference and, when the read is allowed, mint the presigned download handle. This is what
99
+ * every agent-facing surface returns: the agent gets a URL it can hand to a fetch, a document parser
100
+ * or a human, and the bytes never enter a model context.
101
+ */
102
+ export async function fileHandleFor(storage, config, ref, accessor, opts) {
103
+ const resolved = await resolveFileRef(storage, config, ref, accessor);
104
+ return handleFromResolved(config, resolved, accessor.gaii, opts);
105
+ }
106
+ //# sourceMappingURL=file-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-refs.js","sourceRoot":"","sources":["../../../src/services/file-refs.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,12 @@ export interface MeteredEntitlement {
95
95
  budget: EntitlementBudget;
96
96
  /** Platform cut override (0–100). `null` = use the node's configured marketplace fee. */
97
97
  rakePercent: number | null;
98
+ /**
99
+ * Morsels burned per call to PACE this contract, pinned at accept time like the price is. Null
100
+ * means the capability declared none and the node's default applies. A burn, never revenue: it
101
+ * bounds the call RATE, which is the one thing a money budget cannot do.
102
+ */
103
+ tollMorsels?: number | null;
98
104
  /** The sellable surface when this contract is for an app-tool (Gap 1) or agent-work (Gap 2); absent for a
99
105
  * raw ext-action. App-tool calls route to the pinned interface binding; agent-work settles on delivery. */
100
106
  surface?: SellableSurface | null;
@@ -137,6 +143,7 @@ export declare function createEntitlement(storage: Storage, input: {
137
143
  rakePercent?: number | null;
138
144
  contractRef: string;
139
145
  surface?: SellableSurface | null;
146
+ tollMorsels?: number | null;
140
147
  escrowParty?: 'consumer' | 'provider' | null;
141
148
  createdBy: string;
142
149
  carrySpend?: MeteredEntitlement | null;