aimeat 2.0.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 (722) hide show
  1. package/dist/.env.example +9 -4
  2. package/dist/locales/en.json +63 -1
  3. package/dist/locales/fi.json +63 -1
  4. package/dist/public/components/LinkPreview.js +101 -0
  5. package/dist/public/components/NotificationBell.js +18 -1
  6. package/dist/public/cortex-bundled/aimeat-charts.js +158 -10
  7. package/dist/public/cortex-bundled/aimeat-charts.yaml +1 -1
  8. package/dist/public/cortex-bundled/aimeat-dag.js +515 -173
  9. package/dist/public/cortex-bundled/aimeat-dag.yaml +1 -1
  10. package/dist/public/cortex-bundled/aimeat-i18n.js +6 -1
  11. package/dist/public/cortex-bundled/aimeat-i18n.yaml +1 -1
  12. package/dist/public/cortex-bundled/aimeat-surface.js +577 -0
  13. package/dist/public/cortex-bundled/aimeat-surface.yaml +107 -0
  14. package/dist/public/cortex-bundled/aimeat-viewport.js +405 -0
  15. package/dist/public/cortex-bundled/aimeat-viewport.yaml +100 -0
  16. package/dist/public/css/theme.css +57 -7
  17. package/dist/public/css/views/admin.css +8 -1
  18. package/dist/public/css/views/app-grant.css +18 -0
  19. package/dist/public/css/views/inbox.css +47 -1
  20. package/dist/public/css/views/portfolio.css +46 -0
  21. package/dist/public/css/views/profile.css +38 -4
  22. package/dist/public/js/services/apps.js +19 -3
  23. package/dist/public/js/services/messages-ai-prompts.js +38 -0
  24. package/dist/public/js/services/messages.js +26 -4
  25. package/dist/public/js/services/notebook.js +76 -0
  26. package/dist/public/js/services/unfurl.js +43 -0
  27. package/dist/public/lib/VENDORED.md +6 -3
  28. package/dist/public/lib/aimeat-daisyui-bridge.css +39 -2
  29. package/dist/public/lib/aimeat-theme.css +538 -0
  30. package/dist/public/lib/fonts/LICENSE.md +11 -4
  31. package/dist/public/lib/fonts/fraunces-var-latin-ext.woff2 +0 -0
  32. package/dist/public/lib/fonts/fraunces-var-latin.woff2 +0 -0
  33. package/dist/public/lib/fonts/inter-var-latin-ext.woff2 +0 -0
  34. package/dist/public/lib/fonts/inter-var-latin.woff2 +0 -0
  35. package/dist/public/lib/fonts/jetbrains-mono-var-latin-ext.woff2 +0 -0
  36. package/dist/public/lib/fonts/jetbrains-mono-var-latin.woff2 +0 -0
  37. package/dist/public/lib/fonts/space-grotesk-var-latin-ext.woff2 +0 -0
  38. package/dist/public/lib/fonts/space-grotesk-var-latin.woff2 +0 -0
  39. package/dist/public/lib/samples/LICENSE.md +11 -0
  40. package/dist/public/lib/samples/bass/A1.mp3 +0 -0
  41. package/dist/public/lib/samples/bass/B2.mp3 +0 -0
  42. package/dist/public/lib/samples/bass/D2.mp3 +0 -0
  43. package/dist/public/lib/samples/bass/E1.mp3 +0 -0
  44. package/dist/public/lib/samples/bass/E3.mp3 +0 -0
  45. package/dist/public/lib/samples/bass/G2.mp3 +0 -0
  46. package/dist/public/lib/samples/epiano/C2.mp3 +0 -0
  47. package/dist/public/lib/samples/epiano/C3.mp3 +0 -0
  48. package/dist/public/lib/samples/epiano/C4.mp3 +0 -0
  49. package/dist/public/lib/samples/epiano/C5.mp3 +0 -0
  50. package/dist/public/lib/samples/epiano/C6.mp3 +0 -0
  51. package/dist/public/lib/samples/epiano/G2.mp3 +0 -0
  52. package/dist/public/lib/samples/epiano/G3.mp3 +0 -0
  53. package/dist/public/lib/samples/epiano/G4.mp3 +0 -0
  54. package/dist/public/lib/samples/epiano/G5.mp3 +0 -0
  55. package/dist/public/lib/samples/guitar-steel/A2.mp3 +0 -0
  56. package/dist/public/lib/samples/guitar-steel/A4.mp3 +0 -0
  57. package/dist/public/lib/samples/guitar-steel/B3.mp3 +0 -0
  58. package/dist/public/lib/samples/guitar-steel/D3.mp3 +0 -0
  59. package/dist/public/lib/samples/guitar-steel/E2.mp3 +0 -0
  60. package/dist/public/lib/samples/guitar-steel/E4.mp3 +0 -0
  61. package/dist/public/lib/samples/guitar-steel/E5.mp3 +0 -0
  62. package/dist/public/lib/samples/guitar-steel/G3.mp3 +0 -0
  63. package/dist/public/lib/samples/organ/C2.mp3 +0 -0
  64. package/dist/public/lib/samples/organ/C3.mp3 +0 -0
  65. package/dist/public/lib/samples/organ/C4.mp3 +0 -0
  66. package/dist/public/lib/samples/organ/C5.mp3 +0 -0
  67. package/dist/public/lib/samples/organ/C6.mp3 +0 -0
  68. package/dist/public/lib/samples/organ/G2.mp3 +0 -0
  69. package/dist/public/lib/samples/organ/G3.mp3 +0 -0
  70. package/dist/public/lib/samples/organ/G4.mp3 +0 -0
  71. package/dist/public/lib/samples/organ/G5.mp3 +0 -0
  72. package/dist/public/lib/samples/strings/C2.mp3 +0 -0
  73. package/dist/public/lib/samples/strings/C3.mp3 +0 -0
  74. package/dist/public/lib/samples/strings/C4.mp3 +0 -0
  75. package/dist/public/lib/samples/strings/C5.mp3 +0 -0
  76. package/dist/public/lib/samples/strings/C6.mp3 +0 -0
  77. package/dist/public/lib/samples/strings/G2.mp3 +0 -0
  78. package/dist/public/lib/samples/strings/G3.mp3 +0 -0
  79. package/dist/public/lib/samples/strings/G4.mp3 +0 -0
  80. package/dist/public/lib/samples/strings/G5.mp3 +0 -0
  81. package/dist/public/lib/samples/theme-check.html +92 -0
  82. package/dist/public/lib/samples/themes-boot.js +20 -0
  83. package/dist/public/lib/samples/themes.html +154 -0
  84. package/dist/public/lib/samples/themes.js +60 -0
  85. package/dist/public/lib/samples/trumpet/A3.mp3 +0 -0
  86. package/dist/public/lib/samples/trumpet/A4.mp3 +0 -0
  87. package/dist/public/lib/samples/trumpet/A5.mp3 +0 -0
  88. package/dist/public/lib/samples/trumpet/C4.mp3 +0 -0
  89. package/dist/public/lib/samples/trumpet/C5.mp3 +0 -0
  90. package/dist/public/lib/samples/trumpet/E3.mp3 +0 -0
  91. package/dist/public/lib/samples/trumpet/E4.mp3 +0 -0
  92. package/dist/public/lib/samples/trumpet/E5.mp3 +0 -0
  93. package/dist/public/spa.html +2 -0
  94. package/dist/public/views/app-grant.js +24 -4
  95. package/dist/public/views/portfolio.js +61 -6
  96. package/dist/public/views/profile/access-tab/connected-apps.js +81 -5
  97. package/dist/public/views/profile/apps-tab.js +18 -1
  98. package/dist/public/views/profile/extensions-tab.maturity.js +4 -1
  99. package/dist/public/views/profile/inbox-tab/ai-actions.js +86 -0
  100. package/dist/public/views/profile/inbox-tab/components.js +141 -10
  101. package/dist/public/views/profile/inbox-tab/helpers.js +26 -0
  102. package/dist/public/views/profile/inbox-tab/panels.js +18 -3
  103. package/dist/public/views/profile/inbox-tab/use-thread-ux.js +47 -3
  104. package/dist/public/views/profile/inbox-tab.js +46 -49
  105. package/dist/public/views/profile/landing-page.cards.js +7 -0
  106. package/dist/public/views/profile/landing-page.js +12 -1
  107. package/dist/public/views/profile/libraries-tab.js +10 -2
  108. package/dist/public/views/profile/skills-tab.js +1 -1
  109. package/dist/public/views/profile/wallet-tab.js +64 -0
  110. package/dist/public/views/public-workspace-viewer.js +1 -1
  111. package/dist/public/views/start.js +2 -1
  112. package/dist/scripts/build-sdk-libs.d.ts +16 -0
  113. package/dist/scripts/build-sdk-libs.d.ts.map +1 -0
  114. package/dist/scripts/build-sdk-libs.js +112 -0
  115. package/dist/scripts/build-sdk-libs.js.map +1 -0
  116. package/dist/scripts/check-openapi.d.ts +2 -0
  117. package/dist/scripts/check-openapi.d.ts.map +1 -0
  118. package/dist/scripts/check-openapi.js +139 -0
  119. package/dist/scripts/check-openapi.js.map +1 -0
  120. package/dist/scripts/embed-viewport.d.ts +23 -0
  121. package/dist/scripts/embed-viewport.d.ts.map +1 -0
  122. package/dist/scripts/embed-viewport.js +116 -0
  123. package/dist/scripts/embed-viewport.js.map +1 -0
  124. package/dist/src/auth/sse-domain-scopes.d.ts +50 -0
  125. package/dist/src/auth/sse-domain-scopes.d.ts.map +1 -0
  126. package/dist/src/auth/sse-domain-scopes.js +111 -0
  127. package/dist/src/auth/sse-domain-scopes.js.map +1 -0
  128. package/dist/src/cli/connect/auth.d.ts +15 -0
  129. package/dist/src/cli/connect/auth.d.ts.map +1 -1
  130. package/dist/src/cli/connect/auth.js +25 -6
  131. package/dist/src/cli/connect/auth.js.map +1 -1
  132. package/dist/src/cli/connect/keychain.d.ts +9 -0
  133. package/dist/src/cli/connect/keychain.d.ts.map +1 -1
  134. package/dist/src/cli/connect/keychain.js +21 -8
  135. package/dist/src/cli/connect/keychain.js.map +1 -1
  136. package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
  137. package/dist/src/cli/connect/mcp/tools/agent-tasks.js +4 -1
  138. package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
  139. package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
  140. package/dist/src/cli/connect/mcp/tools/core.js +14 -3
  141. package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
  142. package/dist/src/cli/connect/mcp/tools/exchange.d.ts +18 -0
  143. package/dist/src/cli/connect/mcp/tools/exchange.d.ts.map +1 -0
  144. package/dist/src/cli/connect/mcp/tools/exchange.js +170 -0
  145. package/dist/src/cli/connect/mcp/tools/exchange.js.map +1 -0
  146. package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
  147. package/dist/src/cli/connect/mcp/tools/index.js +2 -0
  148. package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
  149. package/dist/src/cli/connect/mcp/tools/workspaces.d.ts +3 -0
  150. package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -1
  151. package/dist/src/cli/connect/mcp/tools/workspaces.js +4 -2
  152. package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -1
  153. package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
  154. package/dist/src/cli/connect/tool-call-defs-core.js +13 -1
  155. package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
  156. package/dist/src/cli/connect/tool-call-defs-exchange.d.ts +3 -0
  157. package/dist/src/cli/connect/tool-call-defs-exchange.d.ts.map +1 -0
  158. package/dist/src/cli/connect/tool-call-defs-exchange.js +146 -0
  159. package/dist/src/cli/connect/tool-call-defs-exchange.js.map +1 -0
  160. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  161. package/dist/src/cli/connect/tool-call.js +2 -0
  162. package/dist/src/cli/connect/tool-call.js.map +1 -1
  163. package/dist/src/commerce/__tests__/x402-registry.test.d.ts +2 -0
  164. package/dist/src/commerce/__tests__/x402-registry.test.d.ts.map +1 -0
  165. package/dist/src/commerce/__tests__/x402-registry.test.js +105 -0
  166. package/dist/src/commerce/__tests__/x402-registry.test.js.map +1 -0
  167. package/dist/src/commerce/evm-address.d.ts +21 -0
  168. package/dist/src/commerce/evm-address.d.ts.map +1 -0
  169. package/dist/src/commerce/evm-address.js +94 -0
  170. package/dist/src/commerce/evm-address.js.map +1 -0
  171. package/dist/src/commerce/money.d.ts +18 -5
  172. package/dist/src/commerce/money.d.ts.map +1 -1
  173. package/dist/src/commerce/money.js +27 -6
  174. package/dist/src/commerce/money.js.map +1 -1
  175. package/dist/src/commerce/session-service.d.ts +14 -0
  176. package/dist/src/commerce/session-service.d.ts.map +1 -1
  177. package/dist/src/commerce/session-service.js +1 -1
  178. package/dist/src/commerce/session-service.js.map +1 -1
  179. package/dist/src/commerce/x402-facilitator.d.ts +64 -13
  180. package/dist/src/commerce/x402-facilitator.d.ts.map +1 -1
  181. package/dist/src/commerce/x402-facilitator.js +71 -19
  182. package/dist/src/commerce/x402-facilitator.js.map +1 -1
  183. package/dist/src/commerce/x402-handler.d.ts +13 -7
  184. package/dist/src/commerce/x402-handler.d.ts.map +1 -1
  185. package/dist/src/commerce/x402-handler.js +23 -10
  186. package/dist/src/commerce/x402-handler.js.map +1 -1
  187. package/dist/src/commerce/x402.d.ts +11 -6
  188. package/dist/src/commerce/x402.d.ts.map +1 -1
  189. package/dist/src/commerce/x402.js +10 -7
  190. package/dist/src/commerce/x402.js.map +1 -1
  191. package/dist/src/config-types.d.ts +12 -0
  192. package/dist/src/config-types.d.ts.map +1 -1
  193. package/dist/src/config.d.ts.map +1 -1
  194. package/dist/src/config.js +8 -0
  195. package/dist/src/config.js.map +1 -1
  196. package/dist/src/data/app-templates/shells.d.ts +15 -3
  197. package/dist/src/data/app-templates/shells.d.ts.map +1 -1
  198. package/dist/src/data/app-templates/shells.js +97 -12
  199. package/dist/src/data/app-templates/shells.js.map +1 -1
  200. package/dist/src/data/app-templates.js +2 -2
  201. package/dist/src/data/app-templates.js.map +1 -1
  202. package/dist/src/data/appdev-pitfalls.d.ts +2 -0
  203. package/dist/src/data/appdev-pitfalls.d.ts.map +1 -1
  204. package/dist/src/data/appdev-pitfalls.js +24 -1
  205. package/dist/src/data/appdev-pitfalls.js.map +1 -1
  206. package/dist/src/data/library-packs/cortex.d.ts.map +1 -1
  207. package/dist/src/data/library-packs/cortex.js +108 -5
  208. package/dist/src/data/library-packs/cortex.js.map +1 -1
  209. package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
  210. package/dist/src/data/library-packs/sdk.js +32 -8
  211. package/dist/src/data/library-packs/sdk.js.map +1 -1
  212. package/dist/src/data/library-packs/vendored.d.ts.map +1 -1
  213. package/dist/src/data/library-packs/vendored.js +83 -6
  214. package/dist/src/data/library-packs/vendored.js.map +1 -1
  215. package/dist/src/generated/api-types.d.ts +2039 -24
  216. package/dist/src/generated/api-types.d.ts.map +1 -1
  217. package/dist/src/mcp/agent-tasks.d.ts +4 -0
  218. package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
  219. package/dist/src/mcp/agent-tasks.js +20 -2
  220. package/dist/src/mcp/agent-tasks.js.map +1 -1
  221. package/dist/src/mcp/annotations.d.ts.map +1 -1
  222. package/dist/src/mcp/annotations.js +20 -0
  223. package/dist/src/mcp/annotations.js.map +1 -1
  224. package/dist/src/mcp/apps.d.ts.map +1 -1
  225. package/dist/src/mcp/apps.js +8 -4
  226. package/dist/src/mcp/apps.js.map +1 -1
  227. package/dist/src/mcp/capabilities.d.ts +7 -1
  228. package/dist/src/mcp/capabilities.d.ts.map +1 -1
  229. package/dist/src/mcp/capabilities.js +5 -2
  230. package/dist/src/mcp/capabilities.js.map +1 -1
  231. package/dist/src/mcp/catalog/definitions/commerce.d.ts.map +1 -1
  232. package/dist/src/mcp/catalog/definitions/commerce.js +4 -2
  233. package/dist/src/mcp/catalog/definitions/commerce.js.map +1 -1
  234. package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts.map +1 -1
  235. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js +4 -3
  236. package/dist/src/mcp/catalog/definitions/discovery-work-boards.js.map +1 -1
  237. package/dist/src/mcp/catalog/definitions/exchange.d.ts +18 -0
  238. package/dist/src/mcp/catalog/definitions/exchange.d.ts.map +1 -0
  239. package/dist/src/mcp/catalog/definitions/exchange.js +182 -0
  240. package/dist/src/mcp/catalog/definitions/exchange.js.map +1 -0
  241. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +1 -1
  242. package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
  243. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts.map +1 -1
  244. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js +3 -2
  245. package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
  246. package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
  247. package/dist/src/mcp/catalog/definitions.js +2 -0
  248. package/dist/src/mcp/catalog/definitions.js.map +1 -1
  249. package/dist/src/mcp/catalog/output-schemas.d.ts +6 -1
  250. package/dist/src/mcp/catalog/output-schemas.d.ts.map +1 -1
  251. package/dist/src/mcp/catalog/output-schemas.js +6 -1
  252. package/dist/src/mcp/catalog/output-schemas.js.map +1 -1
  253. package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
  254. package/dist/src/mcp/catalog/scopes.js +22 -0
  255. package/dist/src/mcp/catalog/scopes.js.map +1 -1
  256. package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
  257. package/dist/src/mcp/catalog/surfaces.js +14 -0
  258. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  259. package/dist/src/mcp/commerce.d.ts.map +1 -1
  260. package/dist/src/mcp/commerce.js +15 -3
  261. package/dist/src/mcp/commerce.js.map +1 -1
  262. package/dist/src/mcp/core-storage.d.ts +23 -0
  263. package/dist/src/mcp/core-storage.d.ts.map +1 -0
  264. package/dist/src/mcp/core-storage.js +157 -0
  265. package/dist/src/mcp/core-storage.js.map +1 -0
  266. package/dist/src/mcp/core.d.ts +16 -0
  267. package/dist/src/mcp/core.d.ts.map +1 -1
  268. package/dist/src/mcp/core.js +75 -119
  269. package/dist/src/mcp/core.js.map +1 -1
  270. package/dist/src/mcp/dm-messages.d.ts +4 -0
  271. package/dist/src/mcp/dm-messages.d.ts.map +1 -1
  272. package/dist/src/mcp/dm-messages.js +43 -2
  273. package/dist/src/mcp/dm-messages.js.map +1 -1
  274. package/dist/src/mcp/exchange-run.d.ts +5 -0
  275. package/dist/src/mcp/exchange-run.d.ts.map +1 -0
  276. package/dist/src/mcp/exchange-run.js +226 -0
  277. package/dist/src/mcp/exchange-run.js.map +1 -0
  278. package/dist/src/mcp/exchange.d.ts +5 -0
  279. package/dist/src/mcp/exchange.d.ts.map +1 -0
  280. package/dist/src/mcp/exchange.js +352 -0
  281. package/dist/src/mcp/exchange.js.map +1 -0
  282. package/dist/src/mcp/extensions.d.ts.map +1 -1
  283. package/dist/src/mcp/extensions.js +17 -2
  284. package/dist/src/mcp/extensions.js.map +1 -1
  285. package/dist/src/mcp/index.d.ts +5 -0
  286. package/dist/src/mcp/index.d.ts.map +1 -1
  287. package/dist/src/mcp/index.js +26 -3
  288. package/dist/src/mcp/index.js.map +1 -1
  289. package/dist/src/mcp/memory-namespace-hints.d.ts +33 -0
  290. package/dist/src/mcp/memory-namespace-hints.d.ts.map +1 -0
  291. package/dist/src/mcp/memory-namespace-hints.js +60 -0
  292. package/dist/src/mcp/memory-namespace-hints.js.map +1 -0
  293. package/dist/src/mcp/workspaces.d.ts +5 -0
  294. package/dist/src/mcp/workspaces.d.ts.map +1 -1
  295. package/dist/src/mcp/workspaces.js +5 -3
  296. package/dist/src/mcp/workspaces.js.map +1 -1
  297. package/dist/src/models/agent-task-schemas.d.ts +25 -3
  298. package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
  299. package/dist/src/models/agent-task-schemas.js +16 -0
  300. package/dist/src/models/agent-task-schemas.js.map +1 -1
  301. package/dist/src/models/app-tool-schemas.d.ts +573 -2
  302. package/dist/src/models/app-tool-schemas.d.ts.map +1 -1
  303. package/dist/src/models/app-tool-schemas.js +73 -2
  304. package/dist/src/models/app-tool-schemas.js.map +1 -1
  305. package/dist/src/models/odps-schemas.d.ts +305 -0
  306. package/dist/src/models/odps-schemas.d.ts.map +1 -0
  307. package/dist/src/models/odps-schemas.js +182 -0
  308. package/dist/src/models/odps-schemas.js.map +1 -0
  309. package/dist/src/models/offer-schemas.d.ts +359 -4
  310. package/dist/src/models/offer-schemas.d.ts.map +1 -1
  311. package/dist/src/models/offer-schemas.js +37 -0
  312. package/dist/src/models/offer-schemas.js.map +1 -1
  313. package/dist/src/models/schemas.d.ts +7 -3
  314. package/dist/src/models/schemas.d.ts.map +1 -1
  315. package/dist/src/models/schemas.js +13 -1
  316. package/dist/src/models/schemas.js.map +1 -1
  317. package/dist/src/models/webhook-schemas.d.ts +8 -8
  318. package/dist/src/routes/agent-tasks/create-read.d.ts +4 -0
  319. package/dist/src/routes/agent-tasks/create-read.d.ts.map +1 -1
  320. package/dist/src/routes/agent-tasks/create-read.js +20 -1
  321. package/dist/src/routes/agent-tasks/create-read.js.map +1 -1
  322. package/dist/src/routes/agent-tasks/lifecycle.d.ts.map +1 -1
  323. package/dist/src/routes/agent-tasks/lifecycle.js +10 -0
  324. package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
  325. package/dist/src/routes/agents/device-auth.d.ts +4 -0
  326. package/dist/src/routes/agents/device-auth.d.ts.map +1 -1
  327. package/dist/src/routes/agents/device-auth.js +19 -4
  328. package/dist/src/routes/agents/device-auth.js.map +1 -1
  329. package/dist/src/routes/agents/offers.d.ts +2 -0
  330. package/dist/src/routes/agents/offers.d.ts.map +1 -1
  331. package/dist/src/routes/agents/offers.js +0 -0
  332. package/dist/src/routes/agents/offers.js.map +1 -1
  333. package/dist/src/routes/app-grants.d.ts +12 -0
  334. package/dist/src/routes/app-grants.d.ts.map +1 -1
  335. package/dist/src/routes/app-grants.js +90 -27
  336. package/dist/src/routes/app-grants.js.map +1 -1
  337. package/dist/src/routes/apps/drafts.d.ts +3 -0
  338. package/dist/src/routes/apps/drafts.d.ts.map +1 -1
  339. package/dist/src/routes/apps/drafts.js +63 -1
  340. package/dist/src/routes/apps/drafts.js.map +1 -1
  341. package/dist/src/routes/apps/fork-manage.d.ts.map +1 -1
  342. package/dist/src/routes/apps/fork-manage.js +24 -1
  343. package/dist/src/routes/apps/fork-manage.js.map +1 -1
  344. package/dist/src/routes/apps/publish.d.ts +4 -0
  345. package/dist/src/routes/apps/publish.d.ts.map +1 -1
  346. package/dist/src/routes/apps/publish.js +44 -3
  347. package/dist/src/routes/apps/publish.js.map +1 -1
  348. package/dist/src/routes/apps-cost.d.ts +25 -0
  349. package/dist/src/routes/apps-cost.d.ts.map +1 -0
  350. package/dist/src/routes/apps-cost.js +107 -0
  351. package/dist/src/routes/apps-cost.js.map +1 -0
  352. package/dist/src/routes/commerce.d.ts.map +1 -1
  353. package/dist/src/routes/commerce.js +122 -2
  354. package/dist/src/routes/commerce.js.map +1 -1
  355. package/dist/src/routes/exchange-market.d.ts +32 -0
  356. package/dist/src/routes/exchange-market.d.ts.map +1 -0
  357. package/dist/src/routes/exchange-market.js +580 -0
  358. package/dist/src/routes/exchange-market.js.map +1 -0
  359. package/dist/src/routes/exchange.d.ts +33 -0
  360. package/dist/src/routes/exchange.d.ts.map +1 -0
  361. package/dist/src/routes/exchange.js +398 -0
  362. package/dist/src/routes/exchange.js.map +1 -0
  363. package/dist/src/routes/extensions/actions.d.ts.map +1 -1
  364. package/dist/src/routes/extensions/actions.js +18 -0
  365. package/dist/src/routes/extensions/actions.js.map +1 -1
  366. package/dist/src/routes/extensions/crud.d.ts.map +1 -1
  367. package/dist/src/routes/extensions/crud.js +36 -3
  368. package/dist/src/routes/extensions/crud.js.map +1 -1
  369. package/dist/src/routes/extensions/entitlement-gate.d.ts +33 -0
  370. package/dist/src/routes/extensions/entitlement-gate.d.ts.map +1 -0
  371. package/dist/src/routes/extensions/entitlement-gate.js +156 -0
  372. package/dist/src/routes/extensions/entitlement-gate.js.map +1 -0
  373. package/dist/src/routes/extensions/manifest.d.ts +15 -0
  374. package/dist/src/routes/extensions/manifest.d.ts.map +1 -1
  375. package/dist/src/routes/extensions/manifest.js +101 -2
  376. package/dist/src/routes/extensions/manifest.js.map +1 -1
  377. package/dist/src/routes/extensions/pacing.d.ts +31 -0
  378. package/dist/src/routes/extensions/pacing.d.ts.map +1 -0
  379. package/dist/src/routes/extensions/pacing.js +73 -0
  380. package/dist/src/routes/extensions/pacing.js.map +1 -0
  381. package/dist/src/routes/extensions/paywall.d.ts.map +1 -1
  382. package/dist/src/routes/extensions/paywall.js +20 -11
  383. package/dist/src/routes/extensions/paywall.js.map +1 -1
  384. package/dist/src/routes/federation-sync/messaging.d.ts.map +1 -1
  385. package/dist/src/routes/federation-sync/messaging.js +3 -1
  386. package/dist/src/routes/federation-sync/messaging.js.map +1 -1
  387. package/dist/src/routes/ghii/recovery.d.ts +2 -0
  388. package/dist/src/routes/ghii/recovery.d.ts.map +1 -1
  389. package/dist/src/routes/ghii/recovery.js +7 -0
  390. package/dist/src/routes/ghii/recovery.js.map +1 -1
  391. package/dist/src/routes/ghii/register-login.d.ts +4 -0
  392. package/dist/src/routes/ghii/register-login.d.ts.map +1 -1
  393. package/dist/src/routes/ghii/register-login.js +45 -22
  394. package/dist/src/routes/ghii/register-login.js.map +1 -1
  395. package/dist/src/routes/ghii/web-verify.d.ts +5 -0
  396. package/dist/src/routes/ghii/web-verify.d.ts.map +1 -1
  397. package/dist/src/routes/ghii/web-verify.js +24 -3
  398. package/dist/src/routes/ghii/web-verify.js.map +1 -1
  399. package/dist/src/routes/libs/sdk-serve.d.ts +11 -0
  400. package/dist/src/routes/libs/sdk-serve.d.ts.map +1 -0
  401. package/dist/src/routes/libs/sdk-serve.js +53 -0
  402. package/dist/src/routes/libs/sdk-serve.js.map +1 -0
  403. package/dist/src/routes/libs.d.ts +7 -1
  404. package/dist/src/routes/libs.d.ts.map +1 -1
  405. package/dist/src/routes/libs.js +65 -146
  406. package/dist/src/routes/libs.js.map +1 -1
  407. package/dist/src/routes/memory/crud.d.ts.map +1 -1
  408. package/dist/src/routes/memory/crud.js +10 -0
  409. package/dist/src/routes/memory/crud.js.map +1 -1
  410. package/dist/src/routes/messages.d.ts +3 -0
  411. package/dist/src/routes/messages.d.ts.map +1 -1
  412. package/dist/src/routes/messages.js +9 -0
  413. package/dist/src/routes/messages.js.map +1 -1
  414. package/dist/src/routes/notifications.d.ts +6 -3
  415. package/dist/src/routes/notifications.d.ts.map +1 -1
  416. package/dist/src/routes/notifications.js +32 -3
  417. package/dist/src/routes/notifications.js.map +1 -1
  418. package/dist/src/routes/organisms/crud.d.ts +3 -0
  419. package/dist/src/routes/organisms/crud.d.ts.map +1 -1
  420. package/dist/src/routes/organisms/crud.js +5 -2
  421. package/dist/src/routes/organisms/crud.js.map +1 -1
  422. package/dist/src/routes/organisms/workspace-access.d.ts.map +1 -1
  423. package/dist/src/routes/organisms/workspace-access.js +38 -20
  424. package/dist/src/routes/organisms/workspace-access.js.map +1 -1
  425. package/dist/src/routes/organisms/workspace-read.d.ts.map +1 -1
  426. package/dist/src/routes/organisms/workspace-read.js +7 -2
  427. package/dist/src/routes/organisms/workspace-read.js.map +1 -1
  428. package/dist/src/routes/public-stats.d.ts +7 -0
  429. package/dist/src/routes/public-stats.d.ts.map +1 -1
  430. package/dist/src/routes/public-stats.js +28 -7
  431. package/dist/src/routes/public-stats.js.map +1 -1
  432. package/dist/src/routes/sse.d.ts +7 -0
  433. package/dist/src/routes/sse.d.ts.map +1 -1
  434. package/dist/src/routes/sse.js +36 -6
  435. package/dist/src/routes/sse.js.map +1 -1
  436. package/dist/src/routes/storage-files.d.ts +11 -0
  437. package/dist/src/routes/storage-files.d.ts.map +1 -1
  438. package/dist/src/routes/storage-files.js +58 -51
  439. package/dist/src/routes/storage-files.js.map +1 -1
  440. package/dist/src/routes/subdomains.d.ts +4 -0
  441. package/dist/src/routes/subdomains.d.ts.map +1 -1
  442. package/dist/src/routes/subdomains.js +42 -5
  443. package/dist/src/routes/subdomains.js.map +1 -1
  444. package/dist/src/routes/unfurl.d.ts +27 -0
  445. package/dist/src/routes/unfurl.d.ts.map +1 -0
  446. package/dist/src/routes/unfurl.js +180 -0
  447. package/dist/src/routes/unfurl.js.map +1 -0
  448. package/dist/src/routes/upload.d.ts +13 -0
  449. package/dist/src/routes/upload.d.ts.map +1 -1
  450. package/dist/src/routes/upload.js +115 -28
  451. package/dist/src/routes/upload.js.map +1 -1
  452. package/dist/src/routes/webmcp.d.ts +3 -0
  453. package/dist/src/routes/webmcp.d.ts.map +1 -1
  454. package/dist/src/routes/webmcp.js +59 -0
  455. package/dist/src/routes/webmcp.js.map +1 -1
  456. package/dist/src/schemas/knowledge-package.d.ts +1 -1
  457. package/dist/src/server-bootstrap/routes-loader.d.ts +1 -0
  458. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  459. package/dist/src/server-bootstrap/routes-loader.js +8 -0
  460. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  461. package/dist/src/server-bootstrap/static-files.d.ts +4 -0
  462. package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
  463. package/dist/src/server-bootstrap/static-files.js +11 -0
  464. package/dist/src/server-bootstrap/static-files.js.map +1 -1
  465. package/dist/src/services/agent-face.d.ts +10 -2
  466. package/dist/src/services/agent-face.d.ts.map +1 -1
  467. package/dist/src/services/agent-face.js +10 -4
  468. package/dist/src/services/agent-face.js.map +1 -1
  469. package/dist/src/services/app-tool-interfaces.d.ts +37 -0
  470. package/dist/src/services/app-tool-interfaces.d.ts.map +1 -0
  471. package/dist/src/services/app-tool-interfaces.js +101 -0
  472. package/dist/src/services/app-tool-interfaces.js.map +1 -0
  473. package/dist/src/services/build-app-prompt.d.ts +22 -0
  474. package/dist/src/services/build-app-prompt.d.ts.map +1 -1
  475. package/dist/src/services/build-app-prompt.js +108 -11
  476. package/dist/src/services/build-app-prompt.js.map +1 -1
  477. package/dist/src/services/call-timing.d.ts +51 -0
  478. package/dist/src/services/call-timing.d.ts.map +1 -0
  479. package/dist/src/services/call-timing.js +91 -0
  480. package/dist/src/services/call-timing.js.map +1 -0
  481. package/dist/src/services/capability-invoke.d.ts +2 -0
  482. package/dist/src/services/capability-invoke.d.ts.map +1 -1
  483. package/dist/src/services/capability-invoke.js +10 -0
  484. package/dist/src/services/capability-invoke.js.map +1 -1
  485. package/dist/src/services/config-schema.d.ts.map +1 -1
  486. package/dist/src/services/config-schema.js +6 -0
  487. package/dist/src/services/config-schema.js.map +1 -1
  488. package/dist/src/services/contacts.d.ts +25 -1
  489. package/dist/src/services/contacts.d.ts.map +1 -1
  490. package/dist/src/services/contacts.js +30 -0
  491. package/dist/src/services/contacts.js.map +1 -1
  492. package/dist/src/services/draft-token.d.ts +22 -2
  493. package/dist/src/services/draft-token.d.ts.map +1 -1
  494. package/dist/src/services/draft-token.js +52 -3
  495. package/dist/src/services/draft-token.js.map +1 -1
  496. package/dist/src/services/entitlement-money.d.ts +55 -0
  497. package/dist/src/services/entitlement-money.d.ts.map +1 -0
  498. package/dist/src/services/entitlement-money.js +68 -0
  499. package/dist/src/services/entitlement-money.js.map +1 -0
  500. package/dist/src/services/exchange-market.d.ts +280 -0
  501. package/dist/src/services/exchange-market.d.ts.map +1 -0
  502. package/dist/src/services/exchange-market.js +276 -0
  503. package/dist/src/services/exchange-market.js.map +1 -0
  504. package/dist/src/services/exchange-odps.d.ts +58 -0
  505. package/dist/src/services/exchange-odps.d.ts.map +1 -0
  506. package/dist/src/services/exchange-odps.js +400 -0
  507. package/dist/src/services/exchange-odps.js.map +1 -0
  508. package/dist/src/services/exchange-projection.d.ts +61 -0
  509. package/dist/src/services/exchange-projection.d.ts.map +1 -0
  510. package/dist/src/services/exchange-projection.js +504 -0
  511. package/dist/src/services/exchange-projection.js.map +1 -0
  512. package/dist/src/services/exchange-proposals.d.ts +47 -0
  513. package/dist/src/services/exchange-proposals.d.ts.map +1 -0
  514. package/dist/src/services/exchange-proposals.js +73 -0
  515. package/dist/src/services/exchange-proposals.js.map +1 -0
  516. package/dist/src/services/exchange-work.d.ts +30 -0
  517. package/dist/src/services/exchange-work.d.ts.map +1 -0
  518. package/dist/src/services/exchange-work.js +43 -0
  519. package/dist/src/services/exchange-work.js.map +1 -0
  520. package/dist/src/services/extension-files.d.ts +64 -0
  521. package/dist/src/services/extension-files.d.ts.map +1 -0
  522. package/dist/src/services/extension-files.js +88 -0
  523. package/dist/src/services/extension-files.js.map +1 -0
  524. package/dist/src/services/extension-runtime.d.ts +33 -0
  525. package/dist/src/services/extension-runtime.d.ts.map +1 -1
  526. package/dist/src/services/extension-runtime.js +52 -0
  527. package/dist/src/services/extension-runtime.js.map +1 -1
  528. package/dist/src/services/file-refs.d.ts +105 -0
  529. package/dist/src/services/file-refs.d.ts.map +1 -0
  530. package/dist/src/services/file-refs.js +106 -0
  531. package/dist/src/services/file-refs.js.map +1 -0
  532. package/dist/src/services/message-send.d.ts.map +1 -1
  533. package/dist/src/services/message-send.js +4 -1
  534. package/dist/src/services/message-send.js.map +1 -1
  535. package/dist/src/services/metered-entitlements.d.ts +210 -0
  536. package/dist/src/services/metered-entitlements.d.ts.map +1 -0
  537. package/dist/src/services/metered-entitlements.js +268 -0
  538. package/dist/src/services/metered-entitlements.js.map +1 -0
  539. package/dist/src/services/notify.d.ts +7 -0
  540. package/dist/src/services/notify.d.ts.map +1 -1
  541. package/dist/src/services/notify.js +35 -0
  542. package/dist/src/services/notify.js.map +1 -1
  543. package/dist/src/services/owner-memory.d.ts +30 -1
  544. package/dist/src/services/owner-memory.d.ts.map +1 -1
  545. package/dist/src/services/owner-memory.js +31 -14
  546. package/dist/src/services/owner-memory.js.map +1 -1
  547. package/dist/src/services/owner-provisioning.d.ts +5 -0
  548. package/dist/src/services/owner-provisioning.d.ts.map +1 -1
  549. package/dist/src/services/owner-provisioning.js +20 -2
  550. package/dist/src/services/owner-provisioning.js.map +1 -1
  551. package/dist/src/services/task-files.d.ts +51 -0
  552. package/dist/src/services/task-files.d.ts.map +1 -0
  553. package/dist/src/services/task-files.js +58 -0
  554. package/dist/src/services/task-files.js.map +1 -0
  555. package/dist/src/services/upload-token.d.ts +29 -0
  556. package/dist/src/services/upload-token.d.ts.map +1 -1
  557. package/dist/src/services/upload-token.js +37 -0
  558. package/dist/src/services/upload-token.js.map +1 -1
  559. package/dist/src/services/upload-zip.d.ts +2 -0
  560. package/dist/src/services/upload-zip.d.ts.map +1 -1
  561. package/dist/src/services/upload-zip.js +5 -1
  562. package/dist/src/services/upload-zip.js.map +1 -1
  563. package/dist/src/services/workspace-meta.d.ts +15 -0
  564. package/dist/src/services/workspace-meta.d.ts.map +1 -1
  565. package/dist/src/services/workspace-meta.js +17 -0
  566. package/dist/src/services/workspace-meta.js.map +1 -1
  567. package/dist/src/services/workspace-provision.d.ts +3 -0
  568. package/dist/src/services/workspace-provision.d.ts.map +1 -1
  569. package/dist/src/services/workspace-provision.js +5 -3
  570. package/dist/src/services/workspace-provision.js.map +1 -1
  571. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +1 -0
  572. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts.map +1 -1
  573. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js +10 -0
  574. package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
  575. package/dist/src/storage/providers/postgres-kysely/methods/apps.d.ts +1 -0
  576. package/dist/src/storage/providers/postgres-kysely/methods/apps.d.ts.map +1 -1
  577. package/dist/src/storage/providers/postgres-kysely/methods/apps.js +2 -0
  578. package/dist/src/storage/providers/postgres-kysely/methods/apps.js.map +1 -1
  579. package/dist/src/storage/providers/postgres-kysely/methods/identity.d.ts +1 -0
  580. package/dist/src/storage/providers/postgres-kysely/methods/identity.d.ts.map +1 -1
  581. package/dist/src/storage/providers/postgres-kysely/methods/identity.js +4 -0
  582. package/dist/src/storage/providers/postgres-kysely/methods/identity.js.map +1 -1
  583. package/dist/src/storage/providers/postgres-kysely/methods/memory.d.ts +2 -0
  584. package/dist/src/storage/providers/postgres-kysely/methods/memory.d.ts.map +1 -1
  585. package/dist/src/storage/providers/postgres-kysely/methods/memory.js +12 -1
  586. package/dist/src/storage/providers/postgres-kysely/methods/memory.js.map +1 -1
  587. package/dist/src/storage/providers/postgres-kysely/methods/organisms.d.ts.map +1 -1
  588. package/dist/src/storage/providers/postgres-kysely/methods/organisms.js +5 -1
  589. package/dist/src/storage/providers/postgres-kysely/methods/organisms.js.map +1 -1
  590. package/dist/src/storage/providers/postgres-kysely/migrations/0011_unique_verified_email.sql +25 -0
  591. package/dist/src/storage/providers/postgres-kysely/migrations/0012_unique_live_app_grant.sql +29 -0
  592. package/dist/src/storage/providers/sqlite/methods/apps.d.ts +4 -0
  593. package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
  594. package/dist/src/storage/providers/sqlite/methods/apps.js +9 -0
  595. package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
  596. package/dist/src/storage/providers/sqlite/methods/governance.d.ts +1 -0
  597. package/dist/src/storage/providers/sqlite/methods/governance.d.ts.map +1 -1
  598. package/dist/src/storage/providers/sqlite/methods/governance.js +4 -1
  599. package/dist/src/storage/providers/sqlite/methods/governance.js.map +1 -1
  600. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts +1 -0
  601. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
  602. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +4 -0
  603. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
  604. package/dist/src/storage/providers/sqlite/methods/owner.d.ts +5 -0
  605. package/dist/src/storage/providers/sqlite/methods/owner.d.ts.map +1 -1
  606. package/dist/src/storage/providers/sqlite/methods/owner.js +8 -0
  607. package/dist/src/storage/providers/sqlite/methods/owner.js.map +1 -1
  608. package/dist/src/storage/providers/sqlite/schema.d.ts +3 -0
  609. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  610. package/dist/src/storage/providers/sqlite/schema.js +40 -0
  611. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  612. package/dist/src/storage/repositories/app-grant.repository.d.ts +9 -1
  613. package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
  614. package/dist/src/storage/repositories/app.repository.d.ts +0 -0
  615. package/dist/src/storage/repositories/app.repository.d.ts.map +1 -1
  616. package/dist/src/storage/repositories/identity.repository.d.ts +6 -0
  617. package/dist/src/storage/repositories/identity.repository.d.ts.map +1 -1
  618. package/dist/src/storage/repositories/memory.repository.d.ts +14 -0
  619. package/dist/src/storage/repositories/memory.repository.d.ts.map +1 -1
  620. package/dist/src/storage/repositories-impl/memory-repository.d.ts +8 -1
  621. package/dist/src/storage/repositories-impl/memory-repository.d.ts.map +1 -1
  622. package/dist/src/storage/repositories-impl/memory-repository.js +15 -4
  623. package/dist/src/storage/repositories-impl/memory-repository.js.map +1 -1
  624. package/dist/src/storage/types/agents-messaging.d.ts +19 -0
  625. package/dist/src/storage/types/agents-messaging.d.ts.map +1 -1
  626. package/dist/src/storage/types/agents-messaging.js.map +1 -1
  627. package/dist/src/storage/types/apps.d.ts +1 -0
  628. package/dist/src/storage/types/apps.d.ts.map +1 -1
  629. package/dist/src/storage/types/organisms-federation.d.ts +50 -0
  630. package/dist/src/storage/types/organisms-federation.d.ts.map +1 -1
  631. package/dist/src/utils/app-badge.d.ts.map +1 -1
  632. package/dist/src/utils/app-badge.js +7 -3
  633. package/dist/src/utils/app-badge.js.map +1 -1
  634. package/dist/src/utils/app-mobile-lint.d.ts +17 -0
  635. package/dist/src/utils/app-mobile-lint.d.ts.map +1 -0
  636. package/dist/src/utils/app-mobile-lint.js +40 -0
  637. package/dist/src/utils/app-mobile-lint.js.map +1 -0
  638. package/dist/static/app-catalog/_template.html +18 -82
  639. package/dist/static/app-catalog/js/apps-io.js +51 -165
  640. package/dist/static/app-catalog/js/cortex.js +3 -1
  641. package/dist/static/app-catalog/js/cost.js +100 -0
  642. package/dist/static/app-catalog/js/db.js +23 -93
  643. package/dist/static/app-catalog/js/detail.js +568 -59
  644. package/dist/static/app-catalog/js/favorites.js +71 -0
  645. package/dist/static/app-catalog/js/i18n-data.js +369 -19
  646. package/dist/static/app-catalog/js/main.js +50 -139
  647. package/dist/static/app-catalog/js/migrate.js +88 -0
  648. package/dist/static/app-catalog/js/monetize.js +205 -17
  649. package/dist/static/app-catalog/js/odps.js +489 -0
  650. package/dist/static/app-catalog/js/promote.js +70 -0
  651. package/dist/static/app-catalog/js/render.js +29 -139
  652. package/dist/static/app-catalog/js/server-io.js +126 -223
  653. package/dist/static/app-catalog/js/settings.js +11 -204
  654. package/dist/static/app-catalog/js/workcopy.js +198 -0
  655. package/dist/static/app-catalog/styles/app-catalog.css +100 -0
  656. package/dist/static/app-catalog.html +2220 -1029
  657. package/dist/static/sdk-libs/_core/config.js +52 -0
  658. package/dist/static/sdk-libs/_core/http.js +52 -0
  659. package/dist/static/sdk-libs/_core/namespace.js +33 -0
  660. package/dist/static/sdk-libs/_core/sdk-globals.d.ts +50 -0
  661. package/dist/static/sdk-libs/_core/session.js +66 -0
  662. package/dist/static/sdk-libs/agentface/index.js +102 -0
  663. package/dist/static/sdk-libs/agents/index.js +305 -0
  664. package/dist/static/sdk-libs/ai/index.js +153 -0
  665. package/dist/static/sdk-libs/audio/core.js +111 -0
  666. package/dist/static/sdk-libs/audio/index.js +380 -0
  667. package/dist/static/sdk-libs/audio/instruments.js +369 -0
  668. package/dist/static/sdk-libs/auth/cluster.js +97 -0
  669. package/dist/static/sdk-libs/auth/config.js +46 -0
  670. package/dist/static/sdk-libs/auth/crypto.js +166 -0
  671. package/dist/static/sdk-libs/auth/events.js +27 -0
  672. package/dist/static/sdk-libs/auth/i18n.js +64 -0
  673. package/dist/static/sdk-libs/auth/index.js +61 -0
  674. package/dist/static/sdk-libs/auth/locale.js +151 -0
  675. package/dist/static/sdk-libs/auth/modal.js +554 -0
  676. package/dist/static/sdk-libs/auth/palette.js +172 -0
  677. package/dist/static/sdk-libs/auth/pill.js +198 -0
  678. package/dist/static/sdk-libs/auth/session.js +792 -0
  679. package/dist/static/sdk-libs/auth/signup.js +232 -0
  680. package/dist/static/sdk-libs/auth/theme.js +137 -0
  681. package/dist/static/sdk-libs/capabilities/index.js +179 -0
  682. package/dist/static/sdk-libs/commerce/index.js +243 -0
  683. package/dist/static/sdk-libs/data/index.js +250 -0
  684. package/dist/static/sdk-libs/dist/aimeat-agentface.js +91 -0
  685. package/dist/static/sdk-libs/dist/aimeat-agents.js +348 -0
  686. package/dist/static/sdk-libs/dist/aimeat-ai.js +168 -0
  687. package/dist/static/sdk-libs/dist/aimeat-audio.js +979 -0
  688. package/dist/static/sdk-libs/dist/aimeat-auth.js +2232 -0
  689. package/dist/static/sdk-libs/dist/aimeat-capabilities.js +177 -0
  690. package/dist/static/sdk-libs/dist/aimeat-commerce.js +265 -0
  691. package/dist/static/sdk-libs/dist/aimeat-data.js +247 -0
  692. package/dist/static/sdk-libs/dist/aimeat-editor.js +299 -0
  693. package/dist/static/sdk-libs/dist/aimeat-header.js +270 -0
  694. package/dist/static/sdk-libs/dist/aimeat-intake.js +94 -0
  695. package/dist/static/sdk-libs/dist/aimeat-live.js +317 -0
  696. package/dist/static/sdk-libs/dist/aimeat-markdown.js +633 -0
  697. package/dist/static/sdk-libs/dist/aimeat-organism.js +394 -0
  698. package/dist/static/sdk-libs/dist/aimeat-portfolio-standalone.js +90 -0
  699. package/dist/static/sdk-libs/dist/aimeat-social.js +157 -0
  700. package/dist/static/sdk-libs/dist/aimeat-speech.js +300 -0
  701. package/dist/static/sdk-libs/dist/aimeat-storage.js +210 -0
  702. package/dist/static/sdk-libs/dist/aimeat-tunnel.js +383 -0
  703. package/dist/static/sdk-libs/dist/aimeat-wallet.js +118 -0
  704. package/dist/static/sdk-libs/dist/aimeat-webmcp.js +187 -0
  705. package/dist/static/sdk-libs/dist/aimeat-work.js +213 -0
  706. package/dist/static/sdk-libs/dist/aimeat-workflows.js +147 -0
  707. package/dist/static/sdk-libs/editor/index.js +229 -0
  708. package/dist/static/sdk-libs/header/index.js +249 -0
  709. package/dist/static/sdk-libs/intake/index.js +75 -0
  710. package/dist/static/sdk-libs/live/index.js +223 -0
  711. package/dist/static/sdk-libs/markdown/index.js +570 -0
  712. package/dist/static/sdk-libs/organism/index.js +381 -0
  713. package/dist/static/sdk-libs/portfolio-standalone/index.js +78 -0
  714. package/dist/static/sdk-libs/social/index.js +140 -0
  715. package/dist/static/sdk-libs/speech/index.js +321 -0
  716. package/dist/static/sdk-libs/storage/index.js +189 -0
  717. package/dist/static/sdk-libs/tunnel/index.js +428 -0
  718. package/dist/static/sdk-libs/wallet/index.js +115 -0
  719. package/dist/static/sdk-libs/webmcp/index.js +185 -0
  720. package/dist/static/sdk-libs/work/index.js +191 -0
  721. package/dist/static/sdk-libs/workflows/index.js +113 -0
  722. package/package.json +10 -3
@@ -0,0 +1,92 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ @file theme-check.html
4
+ @description Visual + computed proof that /lib/aimeat-theme.css reaches an app through the
5
+ bridge alone (the bridge @imports it), and that both themes resolve to the AIMEAT palette
6
+ rather than daisyUI's defaults. Loads ONLY the bridge on purpose — no explicit theme link —
7
+ because that is the path every already-published app is on.
8
+ @usage open /lib/samples/theme-check.html on any AIMEAT node; toggle the two themes.
9
+ window.THEME_CHECK.read() returns the computed tokens for an automated check.
10
+ @version-history
11
+ v1.0.0 — 2026-07-25 — Initial theme proof page.
12
+ -->
13
+ <html lang="en" data-theme="light">
14
+ <head>
15
+ <meta charset="UTF-8" />
16
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
17
+ <title>AIMEAT theme check</title>
18
+ <link href="/lib/daisyui@5.css" rel="stylesheet" type="text/css" />
19
+ <!-- Deliberately NOT linking aimeat-theme.css: the bridge must pull it in. -->
20
+ <link href="/lib/aimeat-daisyui-bridge.css" rel="stylesheet" type="text/css" />
21
+ <script src="/lib/tailwindcss@4.js"></script>
22
+ </head>
23
+ <body class="bg-base-100 text-base-content min-h-screen p-6 flex flex-col gap-5">
24
+ <div class="flex items-center gap-3 flex-wrap">
25
+ <h1 class="text-xl font-bold">AIMEAT theme check</h1>
26
+ <button id="toggle" class="btn btn-sm btn-primary" type="button">Toggle theme</button>
27
+ <span id="which" class="badge badge-soft"></span>
28
+ </div>
29
+
30
+ <section class="card bg-base-200 card-border border-base-300">
31
+ <div class="card-body gap-3">
32
+ <h2 class="card-title text-base">Cards must be tellable from the page</h2>
33
+ <p class="text-sm opacity-70">This card is <code>bg-base-200</code> with <code>card-border</code>.
34
+ The one below has no edge, which is what a bare card looks like.</p>
35
+ <div class="bg-base-200 rounded-box p-3 text-sm">No edge: relies on the surface step alone.</div>
36
+ </div>
37
+ </section>
38
+
39
+ <section class="card bg-base-200 card-border border-base-300">
40
+ <div class="card-body gap-3">
41
+ <h2 class="card-title text-base">Solid vs soft</h2>
42
+ <div class="flex flex-wrap gap-2 items-center">
43
+ <span class="badge badge-warning">badge-warning</span>
44
+ <span class="badge badge-soft badge-warning">badge-soft warning</span>
45
+ <span class="badge badge-success">badge-success</span>
46
+ <span class="badge badge-soft badge-success">badge-soft success</span>
47
+ <span class="badge badge-primary">badge-primary</span>
48
+ <span class="badge badge-soft badge-primary">badge-soft primary</span>
49
+ </div>
50
+ <div class="flex flex-wrap gap-2">
51
+ <button class="btn btn-primary btn-sm" type="button">btn-primary</button>
52
+ <button class="btn btn-soft btn-primary btn-sm" type="button">btn-soft</button>
53
+ <button class="btn btn-outline btn-primary btn-sm" type="button">btn-outline</button>
54
+ </div>
55
+ <div class="alert alert-soft alert-info text-sm">alert-soft info</div>
56
+ </div>
57
+ </section>
58
+
59
+ <section class="card bg-base-200 card-border border-base-300">
60
+ <div class="card-body gap-2">
61
+ <h2 class="card-title text-base">Resolved tokens</h2>
62
+ <pre id="tokens" class="text-xs overflow-x-auto"></pre>
63
+ </div>
64
+ </section>
65
+
66
+ <script>
67
+ var TOKENS = ['--color-base-100', '--color-base-200', '--color-base-300', '--color-base-content',
68
+ '--color-primary', '--color-primary-content', '--color-warning', '--color-warning-content'];
69
+
70
+ function read() {
71
+ var cs = getComputedStyle(document.documentElement);
72
+ var out = {};
73
+ TOKENS.forEach(function (t) { out[t] = cs.getPropertyValue(t).trim(); });
74
+ out.theme = document.documentElement.getAttribute('data-theme');
75
+ return out;
76
+ }
77
+ function render() {
78
+ var v = read();
79
+ document.getElementById('which').textContent = v.theme;
80
+ document.getElementById('tokens').textContent =
81
+ TOKENS.map(function (t) { return t.padEnd(26) + v[t]; }).join('\n');
82
+ }
83
+ document.getElementById('toggle').onclick = function () {
84
+ var next = document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
85
+ document.documentElement.setAttribute('data-theme', next);
86
+ render();
87
+ };
88
+ window.THEME_CHECK = { read: read };
89
+ render();
90
+ </script>
91
+ </body>
92
+ </html>
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file themes-boot.js
3
+ * @description Head-of-page restore for the theme showroom: applies the stored light/dark MODE and
4
+ * PALETTE before first paint. External file (not inline) because /lib/ pages are served under a
5
+ * `script-src 'self'` CSP with no inline allowance.
6
+ * @usage <script src="/lib/samples/themes-boot.js"></script> in the <head> of themes.html.
7
+ * @version-history
8
+ * v1.0.0 — 2026-07-25 — Born with the theme showroom.
9
+ */
10
+ (function () {
11
+ function mode(t) { document.documentElement.setAttribute('data-theme', t === 'dark' ? 'dark' : 'light'); }
12
+ function pal(p) {
13
+ if (p && p !== 'aimeat') document.documentElement.setAttribute('data-palette', p);
14
+ else document.documentElement.removeAttribute('data-palette');
15
+ }
16
+ try {
17
+ mode(localStorage.getItem('aimeat-theme') || (matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'));
18
+ pal(localStorage.getItem('aimeat-palette'));
19
+ } catch (e) { /* storage blocked — defaults stand */ }
20
+ })();
@@ -0,0 +1,154 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ @file themes.html
4
+ @description The theme-system showroom: every AIMEAT palette in both modes, on real daisyUI
5
+ components — typography specimen, buttons, badges, alerts, stats, forms, table, elevation.
6
+ Loads the styling stack exactly as a published app does (daisyUI + theme + bridge) plus
7
+ aimeat-auth, whose login pill carries the REAL control cluster (language + mode + palette) —
8
+ so this page demos the controls users actually get, and the palette strip is read from
9
+ AIMEAT.auth.getPalettes() so it can never drift from the shipped registry.
10
+ @usage open /lib/samples/themes.html on any AIMEAT node; switch mode + palette from the pill
11
+ (or the in-page duplicates). window.THEME_CHECK.read() returns computed tokens for audits.
12
+ @version-history
13
+ v1.0.0 — 2026-07-25 — Born with the theme system (aimeat-theme.css v2).
14
+ -->
15
+ <html lang="en" data-theme="light">
16
+ <head>
17
+ <meta charset="UTF-8" />
18
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
19
+ <meta name="aimeat-locales" content="en fi" />
20
+ <title>AIMEAT themes</title>
21
+ <link href="/lib/daisyui@5.css" rel="stylesheet" type="text/css" />
22
+ <link href="/lib/aimeat-theme.css" rel="stylesheet" type="text/css" />
23
+ <link href="/lib/aimeat-daisyui-bridge.css" rel="stylesheet" type="text/css" />
24
+ <script src="/lib/tailwindcss@4.js"></script>
25
+ <!-- External (not inline): /lib/ pages run under a script-src 'self' CSP. -->
26
+ <script src="/lib/samples/themes-boot.js"></script>
27
+ <style>
28
+ /* Showroom-only helpers, all token-driven — no hardcoded colours. */
29
+ .sr-hero { font-size: var(--text-hero); font-weight: 700; line-height: 1.1;
30
+ font-family: var(--font-display); letter-spacing: var(--display-tracking, 0); }
31
+ .sr-fine { font-size: var(--text-fine); opacity: 0.65; }
32
+ .sr-card { box-shadow: var(--elev-card); transition: box-shadow var(--motion-base) var(--ease-out), transform var(--motion-base) var(--ease-out); }
33
+ .sr-card:hover { box-shadow: var(--elev-raise); transform: translateY(-2px); }
34
+ .sr-chip { width: 34px; height: 26px; border-radius: 6px; border: 1px solid var(--color-base-300); position: relative; overflow: hidden; flex: 0 0 auto; }
35
+ .sr-chip i { position: absolute; inset: 6px 6px 4px 6px; border-radius: 3px; display: block; }
36
+ .sr-chip b { position: absolute; right: 4px; bottom: 4px; width: 8px; height: 8px; border-radius: 50%; display: block; }
37
+ </style>
38
+ </head>
39
+ <body class="bg-base-100 text-base-content min-h-screen flex flex-col overflow-x-clip">
40
+ <nav class="navbar bg-base-200 px-4 shadow-sm sticky top-0 z-50 border-b border-base-300">
41
+ <div class="flex-1 min-w-0"><span class="text-lg font-bold">AIMEAT themes</span></div>
42
+ <div class="flex-none"><span id="login"></span></div>
43
+ </nav>
44
+
45
+ <main class="flex-1 w-full max-w-4xl mx-auto p-4 flex flex-col gap-5">
46
+ <!-- Hero: the display face + hero size of the ACTIVE palette. -->
47
+ <header class="pt-4">
48
+ <div class="sr-hero">Näin sovelluksesi näyttää<span class="text-primary">.</span></div>
49
+ <p class="mt-2 max-w-prose opacity-80">Five designed palettes, each with a light and a dark mode, its own
50
+ typeface, radii and verified contrast. Switch the look from the pill above — every AIMEAT app follows
51
+ the same choice. Ä and ö render in every face.</p>
52
+ <div class="sr-fine mt-1">Palette: <span id="which-pal" class="font-semibold"></span> · mode:
53
+ <span id="which-mode" class="font-semibold"></span></div>
54
+ </header>
55
+
56
+ <!-- All palettes, both modes, straight from the registry (never drifts). -->
57
+ <section class="card bg-base-200 card-border border-base-300 sr-card">
58
+ <div class="card-body gap-3">
59
+ <h2 class="card-title text-base">Every palette, both modes</h2>
60
+ <div id="pal-strip" class="flex flex-col gap-2"></div>
61
+ </div>
62
+ </section>
63
+
64
+ <!-- Typography specimen. -->
65
+ <section class="card bg-base-200 card-border border-base-300 sr-card">
66
+ <div class="card-body gap-2">
67
+ <h2 class="card-title text-base">Typography</h2>
68
+ <div class="sr-hero">Hero 123 äö</div>
69
+ <h3 style="font-size: var(--text-title)" class="font-semibold">Title — Otsikko käyttöliittymälle</h3>
70
+ <p style="font-size: var(--text-body)" class="max-w-prose">Body text is Inter in every palette, so
71
+ content stays quiet and legible while the display face above carries the personality.</p>
72
+ <p class="sr-fine">Fine print stays at a 13px floor, never smaller.</p>
73
+ <pre class="text-sm bg-base-100 rounded-box p-3 overflow-x-auto"><code>const mono = "JetBrains Mono — koodi näyttää koodilta";</code></pre>
74
+ </div>
75
+ </section>
76
+
77
+ <!-- Actions + status colours: quiet variants first, one solid shout. -->
78
+ <section class="card bg-base-200 card-border border-base-300 sr-card">
79
+ <div class="card-body gap-3">
80
+ <h2 class="card-title text-base">Actions and status</h2>
81
+ <div class="flex flex-wrap gap-2">
82
+ <button class="btn btn-primary btn-sm" type="button">Primary</button>
83
+ <button class="btn btn-soft btn-primary btn-sm" type="button">Soft</button>
84
+ <button class="btn btn-outline btn-primary btn-sm" type="button">Outline</button>
85
+ <button class="btn btn-secondary btn-sm" type="button">Secondary</button>
86
+ <button class="btn btn-accent btn-sm" type="button">Accent</button>
87
+ <button class="btn btn-ghost btn-sm" type="button">Ghost</button>
88
+ </div>
89
+ <div class="flex flex-wrap gap-2 items-center">
90
+ <span class="badge badge-soft badge-success badge-sm">valmis</span>
91
+ <span class="badge badge-soft badge-warning badge-sm">odottaa</span>
92
+ <span class="badge badge-soft badge-info badge-sm">tiedoksi</span>
93
+ <span class="badge badge-error badge-sm">virhe</span>
94
+ <span class="badge badge-outline badge-sm">neutraali</span>
95
+ </div>
96
+ <div class="alert alert-soft alert-info text-sm">Soft alerts read as information, not as alarms.</div>
97
+ </div>
98
+ </section>
99
+
100
+ <!-- Numbers that matter + a form + a table. -->
101
+ <section class="grid gap-5 md:grid-cols-2" style="grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr))">
102
+ <div class="card bg-base-200 card-border border-base-300 sr-card">
103
+ <div class="card-body gap-3">
104
+ <h2 class="card-title text-base">Stats</h2>
105
+ <div class="stats stats-vertical sm:stats-horizontal bg-base-100 border border-base-300 rounded-box">
106
+ <div class="stat py-3">
107
+ <div class="stat-title sr-fine">Jäseniä</div>
108
+ <div class="stat-value text-2xl tabular-nums">1 208</div>
109
+ </div>
110
+ <div class="stat py-3">
111
+ <div class="stat-title sr-fine">Tänään</div>
112
+ <div class="stat-value text-2xl tabular-nums text-primary">+37</div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ </div>
117
+ <div class="card bg-base-200 card-border border-base-300 sr-card">
118
+ <div class="card-body gap-3">
119
+ <h2 class="card-title text-base">Form controls</h2>
120
+ <input class="input input-bordered w-full" placeholder="Nimi tai sähköposti" />
121
+ <select class="select select-bordered w-full"><option>Suomi</option><option>English</option></select>
122
+ <label class="label cursor-pointer justify-start gap-3">
123
+ <input type="checkbox" class="toggle toggle-primary" checked />
124
+ <span class="label-text">Ilmoitukset päällä</span>
125
+ </label>
126
+ </div>
127
+ </div>
128
+ </section>
129
+
130
+ <section class="card bg-base-200 card-border border-base-300 sr-card">
131
+ <div class="card-body gap-2">
132
+ <h2 class="card-title text-base">Table</h2>
133
+ <div class="overflow-x-auto">
134
+ <table class="table table-zebra table-sm">
135
+ <thead><tr><th>Sovellus</th><th>Paletti</th><th class="text-right">Käyttäjiä</th></tr></thead>
136
+ <tbody>
137
+ <tr><td>ODPS</td><td><span class="badge badge-soft badge-sm">aimeat</span></td><td class="text-right tabular-nums">412</td></tr>
138
+ <tr><td>TILA</td><td><span class="badge badge-soft badge-sm">mist</span></td><td class="text-right tabular-nums">918</td></tr>
139
+ <tr><td>LOOM</td><td><span class="badge badge-soft badge-sm">circuit</span></td><td class="text-right tabular-nums">245</td></tr>
140
+ </tbody>
141
+ </table>
142
+ </div>
143
+ </div>
144
+ </section>
145
+ </main>
146
+
147
+ <footer class="footer footer-center p-4 sr-fine">
148
+ aimeat-theme.css v2 · verified by pnpm check:theme · fonts self-hosted (SIL OFL 1.1)
149
+ </footer>
150
+
151
+ <script src="/v1/libs/aimeat-auth.js"></script>
152
+ <script src="/lib/samples/themes.js"></script>
153
+ </body>
154
+ </html>
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @file themes.js
3
+ * @description Behaviour for the theme showroom (themes.html): mounts the real login pill (whose
4
+ * cluster carries the language/mode/palette controls), renders the every-palette-both-modes
5
+ * strip from AIMEAT.auth.getPalettes() (so it can never drift from the shipped registry), and
6
+ * exposes window.THEME_CHECK.read() for automated audits. External file because /lib/ pages run
7
+ * under a `script-src 'self'` CSP.
8
+ * @usage <script src="/lib/samples/themes.js"></script> after /v1/libs/aimeat-auth.js.
9
+ * @version-history
10
+ * v1.0.0 — 2026-07-25 — Born with the theme showroom.
11
+ */
12
+ /* global AIMEAT */
13
+ (function () {
14
+ AIMEAT.auth.mountLoginButton('#login', {});
15
+
16
+ function esc(s) { var d = document.createElement('div'); d.textContent = s; return d.innerHTML; }
17
+
18
+ // The palette strip: one row per palette, its light + dark swatches, click-to-apply.
19
+ function renderStrip() {
20
+ var cur = AIMEAT.auth.getPalette();
21
+ var rows = AIMEAT.auth.getPalettes().map(function (p) {
22
+ var chips = ['light', 'dark'].map(function (m) {
23
+ var s = p.swatch[m];
24
+ return '<span class="sr-chip" title="' + esc(p.label + ' — ' + m) + '" style="background:' + esc(s.bg) + '">'
25
+ + '<i style="background:' + esc(s.card) + '"></i><b style="background:' + esc(s.accent) + '"></b></span>';
26
+ }).join('');
27
+ return '<button type="button" data-pal="' + esc(p.id) + '" class="btn btn-ghost btn-sm justify-start gap-3 w-full'
28
+ + (p.id === cur ? ' btn-active' : '') + '">' + chips
29
+ + '<span class="font-semibold">' + esc(p.label) + '</span>'
30
+ + (p.id === cur ? '<span class="badge badge-soft badge-primary badge-sm ml-auto">in use</span>' : '')
31
+ + '</button>';
32
+ }).join('');
33
+ document.getElementById('pal-strip').innerHTML = rows;
34
+ document.querySelectorAll('#pal-strip [data-pal]').forEach(function (b) {
35
+ b.addEventListener('click', function () { AIMEAT.auth.setPalette(b.getAttribute('data-pal')); });
36
+ });
37
+ }
38
+
39
+ function renderWhich() {
40
+ document.getElementById('which-pal').textContent = AIMEAT.auth.getPalette();
41
+ document.getElementById('which-mode').textContent =
42
+ document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light';
43
+ }
44
+
45
+ renderStrip(); renderWhich();
46
+ window.addEventListener('aimeat-palette-change', function () { renderStrip(); renderWhich(); });
47
+ window.addEventListener('aimeat-theme-change', renderWhich);
48
+
49
+ // For automated audits (Playwright / the build-app audit snippet).
50
+ window.THEME_CHECK = {
51
+ read: function () {
52
+ var cs = getComputedStyle(document.documentElement);
53
+ var out = { theme: document.documentElement.getAttribute('data-theme'), palette: AIMEAT.auth.getPalette() };
54
+ ['--color-base-100', '--color-base-200', '--color-base-300', '--color-base-content',
55
+ '--color-primary', '--color-primary-content', '--font-display', '--font-body']
56
+ .forEach(function (t) { out[t] = cs.getPropertyValue(t).trim(); });
57
+ return out;
58
+ },
59
+ };
60
+ })();
@@ -154,6 +154,7 @@
154
154
  "/js/services/work.js": "/js/services/work.js",
155
155
  "/js/services/messages.js": "/js/services/messages.js",
156
156
  "/js/services/messages-ai-prompts.js": "/js/services/messages-ai-prompts.js",
157
+ "/js/services/unfurl.js": "/js/services/unfurl.js",
157
158
  "/js/services/tracked-responses.js": "/js/services/tracked-responses.js",
158
159
  "/js/services/presence.js": "/js/services/presence.js",
159
160
  "/js/presence-store.js": "/js/presence-store.js",
@@ -163,6 +164,7 @@
163
164
  "/components/Modal.js": "/components/Modal.js",
164
165
  "/components/useViewCSS.js": "/components/useViewCSS.js",
165
166
  "/components/Markdown.js": "/components/Markdown.js",
167
+ "/components/LinkPreview.js": "/components/LinkPreview.js",
166
168
  "/components/InboxLink.js": "/components/InboxLink.js",
167
169
  "/components/JsonView.js": "/components/JsonView.js",
168
170
  "/components/ImageDeliverable.js": "/components/ImageDeliverable.js",
@@ -17,6 +17,11 @@
17
17
  * v1.0.0 — 2026-06-20 — Initial (H-2 app-origin isolation, Phase 3: consent page).
18
18
  * v1.1.0 — 2026-06-20 — Popup (web_message) delivery + "trust this app" reframe + Advanced
19
19
  * per-scope subset selection (consent flow wired to apps via the SDK).
20
+ * v1.2.0 — 2026-07-19 — Own-app + scope-upgrade fixes (Band Jam findings): the signed-in owner's
21
+ * OWN app (server-verified origin_bound + app_owner) auto-approves like the silent bridge and
22
+ * shows "Your app" instead of "not yours"; manage mode pre-checks the UNION of granted +
23
+ * requested scopes and badges newly requested ones "new" (they used to come unchecked, so
24
+ * users silently kept the old grant after an app added a scope).
20
25
  */
21
26
  import { h } from 'preact';
22
27
  import { useState, useEffect } from 'preact/hooks';
@@ -34,6 +39,7 @@ export default function AppGrant() {
34
39
  const [advanced, setAdvanced] = useState(false);
35
40
  const [selected, setSelected] = useState(() => new Set());
36
41
  const [existingGrant, setExistingGrant] = useState(null); // the grant this app already holds (manage mode)
42
+ const [ownApp, setOwnApp] = useState(false); // server-verified: origin-bound request for the signed-in owner's own app
37
43
 
38
44
  const requestId = new URLSearchParams(window.location.search).get('req') || '';
39
45
  const [authed, setAuthed] = useState(() => !!window.AIMEAT?.auth?.hasSession);
@@ -67,9 +73,19 @@ export default function AppGrant() {
67
73
  } catch { /* ignore */ }
68
74
  if (!live) return;
69
75
  const reqScopes = (res.data.scopes || []).map((s) => s.scope);
70
- const granted = grant ? grant.scopes : reqScopes;
76
+ // The owner's OWN app (server-verified: the redirect origin is bound to exactly this app):
77
+ // same auto-approve policy as the silent bridge — their own app never needs the trust prompt.
78
+ // The server computes `own` independently at consent time, so this is UX, not the gate.
79
+ const myOwner = (window.AIMEAT?.auth?.storedGhii || '').split('@')[0];
80
+ const own = !!(res.data.origin_bound && res.data.app_owner && myOwner && myOwner === res.data.app_owner);
81
+ // Pre-check the UNION of already-granted and now-requested scopes: an app update that added
82
+ // a scope must surface it CHECKED — presenting it unchecked made users keep the old grant
83
+ // without noticing (the Band Jam scope-upgrade trap).
84
+ const granted = grant ? [...new Set([...grant.scopes, ...reqScopes])] : reqScopes;
71
85
  setExistingGrant(grant);
72
86
  setSelected(new Set(granted));
87
+ setOwnApp(own);
88
+ if (own && !res.data.manage) { setState({ status: 'autoapprove', request: res.data }); return; }
73
89
  // Pass-through: when NOT explicitly managing (the gear) and the app already holds a grant that
74
90
  // covers what it's asking for, just approve silently — no second prompt for an app you trust.
75
91
  const covers = grant && reqScopes.every((s) => grant.scopes.includes(s));
@@ -170,13 +186,15 @@ export default function AppGrant() {
170
186
  return html`
171
187
  <div class="agr-wrap">
172
188
  <div class="agr-card">
173
- <span class="agr-badge">${tr('appGrant.externalBadge', 'External app')}</span>
189
+ <span class="agr-badge ${ownApp ? 'agr-badge-own' : ''}">${ownApp ? tr('appGrant.ownBadge', 'Your app') : tr('appGrant.externalBadge', 'External app')}</span>
174
190
  <h1 class="agr-title">${existingGrant ? tr('appGrant.manageTitle', 'Manage this app’s access') : tr('appGrant.trustTitle', 'Trust this app?')}</h1>
175
191
  <div class="agr-app">
176
192
  <div class="agr-app-name">${escHtml(req.app_name)}</div>
177
193
  <div class="agr-app-origin">${escHtml(req.app_origin)}</div>
178
194
  </div>
179
- <p class="agr-muted">${tr('appGrant.trustIntro', 'This app is not yours. It gets its OWN scoped, revocable key — never your login session. You can revoke it anytime in Profile › Access.')}</p>
195
+ <p class="agr-muted">${ownApp
196
+ ? tr('appGrant.ownIntro', 'This is your own app. It still uses a scoped, revocable key — never your login session.')
197
+ : tr('appGrant.trustIntro', 'This app is not yours. It gets its OWN scoped, revocable key — never your login session. You can revoke it anytime in Profile › Access.')}</p>
180
198
 
181
199
  <div class="agr-scopes-label">${tr('appGrant.needsLabel', 'This app needs:')}</div>
182
200
  <ul class="agr-scopes">
@@ -186,7 +204,9 @@ export default function AppGrant() {
186
204
  <input type="checkbox" class="agr-scope-check" checked=${selected.has(s.scope)}
187
205
  onChange=${() => toggle(s.scope)} aria-label=${s.scope} />`}
188
206
  <span class="agr-scope-text">
189
- <span class="agr-scope-desc">${escHtml(s.description || s.scope)}</span>
207
+ <span class="agr-scope-desc">${escHtml(s.description || s.scope)}
208
+ ${existingGrant && !existingGrant.scopes.includes(s.scope) && html`<span class="agr-scope-newbadge">${tr('appGrant.newScope', 'new')}</span>`}
209
+ </span>
190
210
  <span class="agr-scope-name">${escHtml(s.scope)}</span>
191
211
  </span>
192
212
  </li>`)}
@@ -45,8 +45,9 @@ import { h } from 'preact';
45
45
  import { useState, useEffect, useRef } from 'preact/hooks';
46
46
  import htm from 'htm';
47
47
  const html = htm.bind(h);
48
- import { t } from '/js/i18n.js';
48
+ import { t, getLocale } from '/js/i18n.js';
49
49
  import { escHtml } from '/js/utils.js';
50
+ import { listApps } from '/js/services/apps.js';
50
51
  import { NODE_URL, tr, stampCspNonce, getSession } from './portfolio/shared.js';
51
52
  import { PortfolioBuilder } from './portfolio/builder.js';
52
53
 
@@ -56,6 +57,8 @@ function PortfolioViewer({ username, navigate }) {
56
57
  const [data, setData] = useState(null);
57
58
  const [loading, setLoading] = useState(true);
58
59
  const [errMsg, setErrMsg] = useState(null);
60
+ // Apps the owner promoted (their PUBLIC app-catalog.promoted doc), joined to app metadata.
61
+ const [promotedApps, setPromotedApps] = useState([]);
59
62
  const frameRef = useRef(null);
60
63
 
61
64
  // ── Portfolio bridge ──
@@ -144,6 +147,56 @@ function PortfolioViewer({ username, navigate }) {
144
147
  });
145
148
  }, [username]);
146
149
 
150
+ // Load the owner's promoted apps once we know their GHII (data.owner_gaiis[0]). The doc is PUBLIC,
151
+ // read anonymously via /v1/memory/:gaii/:key; app names/icons come from the public /v1/apps list.
152
+ useEffect(() => {
153
+ const ownerGhii = Array.isArray(data?.owner_gaiis) ? data.owner_gaiis[0] : null;
154
+ if (!ownerGhii) { setPromotedApps([]); return undefined; }
155
+ let cancelled = false;
156
+ (async () => {
157
+ try {
158
+ const resp = await fetch(`${NODE_URL}/v1/memory/${encodeURIComponent(ownerGhii)}/${encodeURIComponent('app-catalog.promoted')}?soft=1`);
159
+ const j = await resp.json().catch(() => null);
160
+ const items = (j && j.data && j.data.value && Array.isArray(j.data.value.items)) ? j.data.value.items : [];
161
+ if (!items.length) { if (!cancelled) setPromotedApps([]); return; }
162
+ let byRef = {};
163
+ try {
164
+ const apps = await listApps();
165
+ (apps || []).forEach(a => { byRef[`${a.owner}/${a.filename || a.name}`] = a; });
166
+ } catch { /* names fall back to the filename */ }
167
+ const cards = items.filter(it => it && typeof it.ref === 'string').map(it => {
168
+ const slash = it.ref.indexOf('/');
169
+ const owner = it.ref.slice(0, slash);
170
+ const filename = it.ref.slice(slash + 1);
171
+ const app = byRef[it.ref];
172
+ return {
173
+ ref: it.ref, owner, filename, text: it.text || {},
174
+ name: (app && app.manifest && app.manifest.name) || filename.replace(/\.html?$/i, ''),
175
+ icon: (app && app.manifest && app.manifest.icon) || '\u{1F4E6}',
176
+ };
177
+ });
178
+ if (!cancelled) setPromotedApps(cards);
179
+ } catch { if (!cancelled) setPromotedApps([]); }
180
+ })();
181
+ return () => { cancelled = true; };
182
+ }, [data]);
183
+
184
+ // The "Promoted apps" block — the owner's showcased apps with their per-language pitch.
185
+ const promotedBlock = promotedApps.length ? html`
186
+ <div class="portfolio-promoted">
187
+ <h3 class="portfolio-promoted-title">\u{1F4E3} ${tr('portfolio.viewer.promoted', 'Promoted apps')}</h3>
188
+ <div class="portfolio-promoted-grid">
189
+ ${promotedApps.map(p => {
190
+ const pitch = p.text[getLocale()] || p.text.en || p.text.fi || '';
191
+ return html`
192
+ <a class="portfolio-promoted-card" href=${`${NODE_URL}/v1/apps/${encodeURIComponent(p.owner)}/${encodeURIComponent(p.filename)}?mode=inline`} target="_blank" rel="noopener">
193
+ <div class="portfolio-promoted-name">${p.icon} ${escHtml(p.name)}</div>
194
+ ${pitch ? html`<div class="portfolio-promoted-pitch">${escHtml(pitch)}</div>` : ''}
195
+ </a>`;
196
+ })}
197
+ </div>
198
+ </div>` : '';
199
+
147
200
  if (loading) return html`<div class="portfolio-container"><div class="view-loading">Loading portfolio...</div></div>`;
148
201
 
149
202
  if (errMsg || !data) {
@@ -183,6 +236,7 @@ function PortfolioViewer({ username, navigate }) {
183
236
  ⛶ ${tr('portfolio.viewer.fullscreen', 'Fullscreen')}
184
237
  </button>
185
238
  </div>
239
+ ${promotedBlock}
186
240
  <iframe ref=${frameRef} class="portfolio-viewer-frame portfolio-viewer-frame-full"
187
241
  srcdoc=${stampCspNonce(data.portfolio_html)} sandbox="allow-scripts"
188
242
  onLoad=${(e) => postAuthState(e.target.contentWindow)}></iframe>
@@ -190,16 +244,17 @@ function PortfolioViewer({ username, navigate }) {
190
244
  `;
191
245
  }
192
246
 
193
- // No portfolio HTML — show basic profile info
247
+ // No portfolio HTML — show basic profile info + any promoted apps.
194
248
  return html`
195
249
  <div class="portfolio-container">
196
- <div class="portfolio-not-found">
250
+ <div class="portfolio-profile-head">
197
251
  <h2>${escHtml(data.display_name || username)}</h2>
198
252
  <p>${data.bio ? escHtml(data.bio) : t('portfolio.viewer.notFoundDesc')}</p>
199
- <button class="btn-ghost" style="margin-top:1rem;" onClick=${() => navigate('/v1/portal')}>
200
- ${t('portfolio.viewer.backToPortal')}
201
- </button>
202
253
  </div>
254
+ ${promotedBlock}
255
+ <button class="btn-ghost" style="margin-top:1rem;" onClick=${() => navigate('/v1/portal')}>
256
+ ${t('portfolio.viewer.backToPortal')}
257
+ </button>
203
258
  </div>
204
259
  `;
205
260
  }