aimeat 2.0.0 → 2.1.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 (412) hide show
  1. package/dist/locales/en.json +35 -1
  2. package/dist/locales/fi.json +35 -1
  3. package/dist/public/components/LinkPreview.js +101 -0
  4. package/dist/public/components/NotificationBell.js +18 -1
  5. package/dist/public/css/theme.css +57 -7
  6. package/dist/public/css/views/admin.css +8 -1
  7. package/dist/public/css/views/app-grant.css +18 -0
  8. package/dist/public/css/views/inbox.css +46 -0
  9. package/dist/public/css/views/portfolio.css +46 -0
  10. package/dist/public/css/views/profile.css +29 -4
  11. package/dist/public/js/services/apps.js +19 -3
  12. package/dist/public/js/services/messages-ai-prompts.js +38 -0
  13. package/dist/public/js/services/messages.js +26 -4
  14. package/dist/public/js/services/notebook.js +76 -0
  15. package/dist/public/js/services/unfurl.js +43 -0
  16. package/dist/public/lib/samples/LICENSE.md +11 -0
  17. package/dist/public/lib/samples/bass/A1.mp3 +0 -0
  18. package/dist/public/lib/samples/bass/B2.mp3 +0 -0
  19. package/dist/public/lib/samples/bass/D2.mp3 +0 -0
  20. package/dist/public/lib/samples/bass/E1.mp3 +0 -0
  21. package/dist/public/lib/samples/bass/E3.mp3 +0 -0
  22. package/dist/public/lib/samples/bass/G2.mp3 +0 -0
  23. package/dist/public/lib/samples/epiano/C2.mp3 +0 -0
  24. package/dist/public/lib/samples/epiano/C3.mp3 +0 -0
  25. package/dist/public/lib/samples/epiano/C4.mp3 +0 -0
  26. package/dist/public/lib/samples/epiano/C5.mp3 +0 -0
  27. package/dist/public/lib/samples/epiano/C6.mp3 +0 -0
  28. package/dist/public/lib/samples/epiano/G2.mp3 +0 -0
  29. package/dist/public/lib/samples/epiano/G3.mp3 +0 -0
  30. package/dist/public/lib/samples/epiano/G4.mp3 +0 -0
  31. package/dist/public/lib/samples/epiano/G5.mp3 +0 -0
  32. package/dist/public/lib/samples/guitar-steel/A2.mp3 +0 -0
  33. package/dist/public/lib/samples/guitar-steel/A4.mp3 +0 -0
  34. package/dist/public/lib/samples/guitar-steel/B3.mp3 +0 -0
  35. package/dist/public/lib/samples/guitar-steel/D3.mp3 +0 -0
  36. package/dist/public/lib/samples/guitar-steel/E2.mp3 +0 -0
  37. package/dist/public/lib/samples/guitar-steel/E4.mp3 +0 -0
  38. package/dist/public/lib/samples/guitar-steel/E5.mp3 +0 -0
  39. package/dist/public/lib/samples/guitar-steel/G3.mp3 +0 -0
  40. package/dist/public/lib/samples/organ/C2.mp3 +0 -0
  41. package/dist/public/lib/samples/organ/C3.mp3 +0 -0
  42. package/dist/public/lib/samples/organ/C4.mp3 +0 -0
  43. package/dist/public/lib/samples/organ/C5.mp3 +0 -0
  44. package/dist/public/lib/samples/organ/C6.mp3 +0 -0
  45. package/dist/public/lib/samples/organ/G2.mp3 +0 -0
  46. package/dist/public/lib/samples/organ/G3.mp3 +0 -0
  47. package/dist/public/lib/samples/organ/G4.mp3 +0 -0
  48. package/dist/public/lib/samples/organ/G5.mp3 +0 -0
  49. package/dist/public/lib/samples/strings/C2.mp3 +0 -0
  50. package/dist/public/lib/samples/strings/C3.mp3 +0 -0
  51. package/dist/public/lib/samples/strings/C4.mp3 +0 -0
  52. package/dist/public/lib/samples/strings/C5.mp3 +0 -0
  53. package/dist/public/lib/samples/strings/C6.mp3 +0 -0
  54. package/dist/public/lib/samples/strings/G2.mp3 +0 -0
  55. package/dist/public/lib/samples/strings/G3.mp3 +0 -0
  56. package/dist/public/lib/samples/strings/G4.mp3 +0 -0
  57. package/dist/public/lib/samples/strings/G5.mp3 +0 -0
  58. package/dist/public/lib/samples/trumpet/A3.mp3 +0 -0
  59. package/dist/public/lib/samples/trumpet/A4.mp3 +0 -0
  60. package/dist/public/lib/samples/trumpet/A5.mp3 +0 -0
  61. package/dist/public/lib/samples/trumpet/C4.mp3 +0 -0
  62. package/dist/public/lib/samples/trumpet/C5.mp3 +0 -0
  63. package/dist/public/lib/samples/trumpet/E3.mp3 +0 -0
  64. package/dist/public/lib/samples/trumpet/E4.mp3 +0 -0
  65. package/dist/public/lib/samples/trumpet/E5.mp3 +0 -0
  66. package/dist/public/spa.html +2 -0
  67. package/dist/public/views/app-grant.js +24 -4
  68. package/dist/public/views/portfolio.js +61 -6
  69. package/dist/public/views/profile/apps-tab.js +18 -1
  70. package/dist/public/views/profile/inbox-tab/ai-actions.js +86 -0
  71. package/dist/public/views/profile/inbox-tab/components.js +124 -9
  72. package/dist/public/views/profile/inbox-tab/helpers.js +26 -0
  73. package/dist/public/views/profile/inbox-tab/panels.js +18 -3
  74. package/dist/public/views/profile/inbox-tab/use-thread-ux.js +18 -1
  75. package/dist/public/views/profile/inbox-tab.js +46 -49
  76. package/dist/public/views/profile/landing-page.cards.js +7 -0
  77. package/dist/public/views/profile/landing-page.js +12 -1
  78. package/dist/public/views/profile/skills-tab.js +1 -1
  79. package/dist/public/views/public-workspace-viewer.js +1 -1
  80. package/dist/public/views/start.js +2 -1
  81. package/dist/scripts/build-sdk-libs.d.ts +16 -0
  82. package/dist/scripts/build-sdk-libs.d.ts.map +1 -0
  83. package/dist/scripts/build-sdk-libs.js +112 -0
  84. package/dist/scripts/build-sdk-libs.js.map +1 -0
  85. package/dist/src/cli/connect/auth.d.ts +15 -0
  86. package/dist/src/cli/connect/auth.d.ts.map +1 -1
  87. package/dist/src/cli/connect/auth.js +25 -6
  88. package/dist/src/cli/connect/auth.js.map +1 -1
  89. package/dist/src/cli/connect/keychain.d.ts +9 -0
  90. package/dist/src/cli/connect/keychain.d.ts.map +1 -1
  91. package/dist/src/cli/connect/keychain.js +21 -8
  92. package/dist/src/cli/connect/keychain.js.map +1 -1
  93. package/dist/src/cli/connect/mcp/tools/exchange.d.ts +18 -0
  94. package/dist/src/cli/connect/mcp/tools/exchange.d.ts.map +1 -0
  95. package/dist/src/cli/connect/mcp/tools/exchange.js +170 -0
  96. package/dist/src/cli/connect/mcp/tools/exchange.js.map +1 -0
  97. package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
  98. package/dist/src/cli/connect/mcp/tools/index.js +2 -0
  99. package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
  100. package/dist/src/cli/connect/tool-call-defs-exchange.d.ts +3 -0
  101. package/dist/src/cli/connect/tool-call-defs-exchange.d.ts.map +1 -0
  102. package/dist/src/cli/connect/tool-call-defs-exchange.js +146 -0
  103. package/dist/src/cli/connect/tool-call-defs-exchange.js.map +1 -0
  104. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  105. package/dist/src/cli/connect/tool-call.js +2 -0
  106. package/dist/src/cli/connect/tool-call.js.map +1 -1
  107. package/dist/src/commerce/session-service.d.ts +14 -0
  108. package/dist/src/commerce/session-service.d.ts.map +1 -1
  109. package/dist/src/commerce/session-service.js +1 -1
  110. package/dist/src/commerce/session-service.js.map +1 -1
  111. package/dist/src/data/app-templates/shells.d.ts +7 -3
  112. package/dist/src/data/app-templates/shells.d.ts.map +1 -1
  113. package/dist/src/data/app-templates/shells.js +10 -6
  114. package/dist/src/data/app-templates/shells.js.map +1 -1
  115. package/dist/src/data/appdev-pitfalls.d.ts +2 -0
  116. package/dist/src/data/appdev-pitfalls.d.ts.map +1 -1
  117. package/dist/src/data/appdev-pitfalls.js +24 -1
  118. package/dist/src/data/appdev-pitfalls.js.map +1 -1
  119. package/dist/src/generated/api-types.d.ts +1565 -9
  120. package/dist/src/generated/api-types.d.ts.map +1 -1
  121. package/dist/src/mcp/annotations.d.ts.map +1 -1
  122. package/dist/src/mcp/annotations.js +20 -0
  123. package/dist/src/mcp/annotations.js.map +1 -1
  124. package/dist/src/mcp/apps.d.ts.map +1 -1
  125. package/dist/src/mcp/apps.js +8 -4
  126. package/dist/src/mcp/apps.js.map +1 -1
  127. package/dist/src/mcp/catalog/definitions/exchange.d.ts +18 -0
  128. package/dist/src/mcp/catalog/definitions/exchange.d.ts.map +1 -0
  129. package/dist/src/mcp/catalog/definitions/exchange.js +182 -0
  130. package/dist/src/mcp/catalog/definitions/exchange.js.map +1 -0
  131. package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
  132. package/dist/src/mcp/catalog/definitions.js +2 -0
  133. package/dist/src/mcp/catalog/definitions.js.map +1 -1
  134. package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
  135. package/dist/src/mcp/catalog/scopes.js +22 -0
  136. package/dist/src/mcp/catalog/scopes.js.map +1 -1
  137. package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
  138. package/dist/src/mcp/catalog/surfaces.js +14 -0
  139. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  140. package/dist/src/mcp/exchange-run.d.ts +5 -0
  141. package/dist/src/mcp/exchange-run.d.ts.map +1 -0
  142. package/dist/src/mcp/exchange-run.js +226 -0
  143. package/dist/src/mcp/exchange-run.js.map +1 -0
  144. package/dist/src/mcp/exchange.d.ts +5 -0
  145. package/dist/src/mcp/exchange.d.ts.map +1 -0
  146. package/dist/src/mcp/exchange.js +351 -0
  147. package/dist/src/mcp/exchange.js.map +1 -0
  148. package/dist/src/mcp/extensions.d.ts.map +1 -1
  149. package/dist/src/mcp/extensions.js +11 -0
  150. package/dist/src/mcp/extensions.js.map +1 -1
  151. package/dist/src/mcp/index.d.ts.map +1 -1
  152. package/dist/src/mcp/index.js +6 -2
  153. package/dist/src/mcp/index.js.map +1 -1
  154. package/dist/src/models/app-tool-schemas.d.ts +55 -1
  155. package/dist/src/models/app-tool-schemas.d.ts.map +1 -1
  156. package/dist/src/models/app-tool-schemas.js +20 -1
  157. package/dist/src/models/app-tool-schemas.js.map +1 -1
  158. package/dist/src/models/offer-schemas.d.ts +2 -2
  159. package/dist/src/models/schemas.d.ts +1 -0
  160. package/dist/src/models/schemas.d.ts.map +1 -1
  161. package/dist/src/models/schemas.js +3 -0
  162. package/dist/src/models/schemas.js.map +1 -1
  163. package/dist/src/routes/agents/device-auth.d.ts +4 -0
  164. package/dist/src/routes/agents/device-auth.d.ts.map +1 -1
  165. package/dist/src/routes/agents/device-auth.js +19 -4
  166. package/dist/src/routes/agents/device-auth.js.map +1 -1
  167. package/dist/src/routes/app-grants.d.ts +6 -0
  168. package/dist/src/routes/app-grants.d.ts.map +1 -1
  169. package/dist/src/routes/app-grants.js +35 -2
  170. package/dist/src/routes/app-grants.js.map +1 -1
  171. package/dist/src/routes/apps/fork-manage.d.ts.map +1 -1
  172. package/dist/src/routes/apps/fork-manage.js +24 -1
  173. package/dist/src/routes/apps/fork-manage.js.map +1 -1
  174. package/dist/src/routes/apps/publish.d.ts +2 -0
  175. package/dist/src/routes/apps/publish.d.ts.map +1 -1
  176. package/dist/src/routes/apps/publish.js +27 -1
  177. package/dist/src/routes/apps/publish.js.map +1 -1
  178. package/dist/src/routes/apps-cost.d.ts +25 -0
  179. package/dist/src/routes/apps-cost.d.ts.map +1 -0
  180. package/dist/src/routes/apps-cost.js +107 -0
  181. package/dist/src/routes/apps-cost.js.map +1 -0
  182. package/dist/src/routes/exchange-market.d.ts +28 -0
  183. package/dist/src/routes/exchange-market.d.ts.map +1 -0
  184. package/dist/src/routes/exchange-market.js +454 -0
  185. package/dist/src/routes/exchange-market.js.map +1 -0
  186. package/dist/src/routes/exchange.d.ts +33 -0
  187. package/dist/src/routes/exchange.d.ts.map +1 -0
  188. package/dist/src/routes/exchange.js +395 -0
  189. package/dist/src/routes/exchange.js.map +1 -0
  190. package/dist/src/routes/extensions/entitlement-gate.d.ts +33 -0
  191. package/dist/src/routes/extensions/entitlement-gate.d.ts.map +1 -0
  192. package/dist/src/routes/extensions/entitlement-gate.js +143 -0
  193. package/dist/src/routes/extensions/entitlement-gate.js.map +1 -0
  194. package/dist/src/routes/extensions/manifest.d.ts +9 -0
  195. package/dist/src/routes/extensions/manifest.d.ts.map +1 -1
  196. package/dist/src/routes/extensions/manifest.js +33 -1
  197. package/dist/src/routes/extensions/manifest.js.map +1 -1
  198. package/dist/src/routes/extensions/paywall.d.ts.map +1 -1
  199. package/dist/src/routes/extensions/paywall.js +9 -0
  200. package/dist/src/routes/extensions/paywall.js.map +1 -1
  201. package/dist/src/routes/federation-sync/messaging.d.ts.map +1 -1
  202. package/dist/src/routes/federation-sync/messaging.js +3 -1
  203. package/dist/src/routes/federation-sync/messaging.js.map +1 -1
  204. package/dist/src/routes/ghii/recovery.d.ts +2 -0
  205. package/dist/src/routes/ghii/recovery.d.ts.map +1 -1
  206. package/dist/src/routes/ghii/recovery.js +7 -0
  207. package/dist/src/routes/ghii/recovery.js.map +1 -1
  208. package/dist/src/routes/ghii/register-login.d.ts +4 -0
  209. package/dist/src/routes/ghii/register-login.d.ts.map +1 -1
  210. package/dist/src/routes/ghii/register-login.js +45 -22
  211. package/dist/src/routes/ghii/register-login.js.map +1 -1
  212. package/dist/src/routes/ghii/web-verify.d.ts +5 -0
  213. package/dist/src/routes/ghii/web-verify.d.ts.map +1 -1
  214. package/dist/src/routes/ghii/web-verify.js +24 -3
  215. package/dist/src/routes/ghii/web-verify.js.map +1 -1
  216. package/dist/src/routes/libs/sdk-serve.d.ts +11 -0
  217. package/dist/src/routes/libs/sdk-serve.d.ts.map +1 -0
  218. package/dist/src/routes/libs/sdk-serve.js +53 -0
  219. package/dist/src/routes/libs/sdk-serve.js.map +1 -0
  220. package/dist/src/routes/libs.d.ts +7 -1
  221. package/dist/src/routes/libs.d.ts.map +1 -1
  222. package/dist/src/routes/libs.js +65 -146
  223. package/dist/src/routes/libs.js.map +1 -1
  224. package/dist/src/routes/messages.d.ts +3 -0
  225. package/dist/src/routes/messages.d.ts.map +1 -1
  226. package/dist/src/routes/messages.js +9 -0
  227. package/dist/src/routes/messages.js.map +1 -1
  228. package/dist/src/routes/notifications.d.ts +6 -3
  229. package/dist/src/routes/notifications.d.ts.map +1 -1
  230. package/dist/src/routes/notifications.js +32 -3
  231. package/dist/src/routes/notifications.js.map +1 -1
  232. package/dist/src/routes/organisms/workspace-access.d.ts.map +1 -1
  233. package/dist/src/routes/organisms/workspace-access.js +38 -20
  234. package/dist/src/routes/organisms/workspace-access.js.map +1 -1
  235. package/dist/src/routes/unfurl.d.ts +27 -0
  236. package/dist/src/routes/unfurl.d.ts.map +1 -0
  237. package/dist/src/routes/unfurl.js +180 -0
  238. package/dist/src/routes/unfurl.js.map +1 -0
  239. package/dist/src/routes/upload.d.ts +2 -0
  240. package/dist/src/routes/upload.d.ts.map +1 -1
  241. package/dist/src/routes/upload.js +7 -0
  242. package/dist/src/routes/upload.js.map +1 -1
  243. package/dist/src/routes/webmcp.d.ts +3 -0
  244. package/dist/src/routes/webmcp.d.ts.map +1 -1
  245. package/dist/src/routes/webmcp.js +55 -0
  246. package/dist/src/routes/webmcp.js.map +1 -1
  247. package/dist/src/server-bootstrap/routes-loader.d.ts +1 -0
  248. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  249. package/dist/src/server-bootstrap/routes-loader.js +8 -0
  250. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  251. package/dist/src/services/agent-face.d.ts +10 -2
  252. package/dist/src/services/agent-face.d.ts.map +1 -1
  253. package/dist/src/services/agent-face.js +10 -4
  254. package/dist/src/services/agent-face.js.map +1 -1
  255. package/dist/src/services/app-tool-interfaces.d.ts +37 -0
  256. package/dist/src/services/app-tool-interfaces.d.ts.map +1 -0
  257. package/dist/src/services/app-tool-interfaces.js +101 -0
  258. package/dist/src/services/app-tool-interfaces.js.map +1 -0
  259. package/dist/src/services/build-app-prompt.d.ts +3 -0
  260. package/dist/src/services/build-app-prompt.d.ts.map +1 -1
  261. package/dist/src/services/build-app-prompt.js +12 -1
  262. package/dist/src/services/build-app-prompt.js.map +1 -1
  263. package/dist/src/services/contacts.d.ts +25 -1
  264. package/dist/src/services/contacts.d.ts.map +1 -1
  265. package/dist/src/services/contacts.js +30 -0
  266. package/dist/src/services/contacts.js.map +1 -1
  267. package/dist/src/services/entitlement-money.d.ts +55 -0
  268. package/dist/src/services/entitlement-money.d.ts.map +1 -0
  269. package/dist/src/services/entitlement-money.js +68 -0
  270. package/dist/src/services/entitlement-money.js.map +1 -0
  271. package/dist/src/services/exchange-market.d.ts +247 -0
  272. package/dist/src/services/exchange-market.d.ts.map +1 -0
  273. package/dist/src/services/exchange-market.js +254 -0
  274. package/dist/src/services/exchange-market.js.map +1 -0
  275. package/dist/src/services/exchange-proposals.d.ts +47 -0
  276. package/dist/src/services/exchange-proposals.d.ts.map +1 -0
  277. package/dist/src/services/exchange-proposals.js +71 -0
  278. package/dist/src/services/exchange-proposals.js.map +1 -0
  279. package/dist/src/services/exchange-work.d.ts +30 -0
  280. package/dist/src/services/exchange-work.d.ts.map +1 -0
  281. package/dist/src/services/exchange-work.js +43 -0
  282. package/dist/src/services/exchange-work.js.map +1 -0
  283. package/dist/src/services/message-send.d.ts.map +1 -1
  284. package/dist/src/services/message-send.js +4 -1
  285. package/dist/src/services/message-send.js.map +1 -1
  286. package/dist/src/services/metered-entitlements.d.ts +203 -0
  287. package/dist/src/services/metered-entitlements.d.ts.map +1 -0
  288. package/dist/src/services/metered-entitlements.js +264 -0
  289. package/dist/src/services/metered-entitlements.js.map +1 -0
  290. package/dist/src/services/notify.d.ts +7 -0
  291. package/dist/src/services/notify.d.ts.map +1 -1
  292. package/dist/src/services/notify.js +35 -0
  293. package/dist/src/services/notify.js.map +1 -1
  294. package/dist/src/services/owner-memory.d.ts +16 -0
  295. package/dist/src/services/owner-memory.d.ts.map +1 -1
  296. package/dist/src/services/owner-memory.js +23 -0
  297. package/dist/src/services/owner-memory.js.map +1 -1
  298. package/dist/src/services/owner-provisioning.d.ts +5 -0
  299. package/dist/src/services/owner-provisioning.d.ts.map +1 -1
  300. package/dist/src/services/owner-provisioning.js +20 -2
  301. package/dist/src/services/owner-provisioning.js.map +1 -1
  302. package/dist/src/storage/providers/postgres-kysely/methods/apps.d.ts +1 -0
  303. package/dist/src/storage/providers/postgres-kysely/methods/apps.d.ts.map +1 -1
  304. package/dist/src/storage/providers/postgres-kysely/methods/apps.js +2 -0
  305. package/dist/src/storage/providers/postgres-kysely/methods/apps.js.map +1 -1
  306. package/dist/src/storage/providers/postgres-kysely/methods/identity.d.ts +1 -0
  307. package/dist/src/storage/providers/postgres-kysely/methods/identity.d.ts.map +1 -1
  308. package/dist/src/storage/providers/postgres-kysely/methods/identity.js +4 -0
  309. package/dist/src/storage/providers/postgres-kysely/methods/identity.js.map +1 -1
  310. package/dist/src/storage/providers/postgres-kysely/migrations/0011_unique_verified_email.sql +25 -0
  311. package/dist/src/storage/providers/sqlite/methods/apps.d.ts +1 -0
  312. package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
  313. package/dist/src/storage/providers/sqlite/methods/apps.js +2 -0
  314. package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
  315. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts +1 -0
  316. package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
  317. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +4 -0
  318. package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
  319. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  320. package/dist/src/storage/providers/sqlite/schema.js +20 -0
  321. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  322. package/dist/src/storage/repositories/app.repository.d.ts +0 -0
  323. package/dist/src/storage/repositories/app.repository.d.ts.map +1 -1
  324. package/dist/src/storage/repositories/identity.repository.d.ts +6 -0
  325. package/dist/src/storage/repositories/identity.repository.d.ts.map +1 -1
  326. package/dist/src/storage/types/apps.d.ts +1 -0
  327. package/dist/src/storage/types/apps.d.ts.map +1 -1
  328. package/dist/src/storage/types/organisms-federation.d.ts +21 -0
  329. package/dist/src/storage/types/organisms-federation.d.ts.map +1 -1
  330. package/dist/src/utils/app-mobile-lint.d.ts +17 -0
  331. package/dist/src/utils/app-mobile-lint.d.ts.map +1 -0
  332. package/dist/src/utils/app-mobile-lint.js +40 -0
  333. package/dist/src/utils/app-mobile-lint.js.map +1 -0
  334. package/dist/static/app-catalog/_template.html +12 -77
  335. package/dist/static/app-catalog/js/apps-io.js +51 -165
  336. package/dist/static/app-catalog/js/cost.js +100 -0
  337. package/dist/static/app-catalog/js/db.js +23 -93
  338. package/dist/static/app-catalog/js/detail.js +158 -24
  339. package/dist/static/app-catalog/js/favorites.js +71 -0
  340. package/dist/static/app-catalog/js/i18n-data.js +90 -16
  341. package/dist/static/app-catalog/js/main.js +23 -103
  342. package/dist/static/app-catalog/js/migrate.js +88 -0
  343. package/dist/static/app-catalog/js/monetize.js +1 -1
  344. package/dist/static/app-catalog/js/promote.js +70 -0
  345. package/dist/static/app-catalog/js/render.js +26 -139
  346. package/dist/static/app-catalog/js/server-io.js +126 -223
  347. package/dist/static/app-catalog/js/settings.js +11 -204
  348. package/dist/static/app-catalog/styles/app-catalog.css +40 -0
  349. package/dist/static/app-catalog.html +790 -912
  350. package/dist/static/sdk-libs/_core/config.js +52 -0
  351. package/dist/static/sdk-libs/_core/http.js +52 -0
  352. package/dist/static/sdk-libs/_core/namespace.js +33 -0
  353. package/dist/static/sdk-libs/_core/sdk-globals.d.ts +50 -0
  354. package/dist/static/sdk-libs/_core/session.js +66 -0
  355. package/dist/static/sdk-libs/agentface/index.js +102 -0
  356. package/dist/static/sdk-libs/agents/index.js +267 -0
  357. package/dist/static/sdk-libs/ai/index.js +153 -0
  358. package/dist/static/sdk-libs/audio/core.js +111 -0
  359. package/dist/static/sdk-libs/audio/index.js +380 -0
  360. package/dist/static/sdk-libs/audio/instruments.js +369 -0
  361. package/dist/static/sdk-libs/auth/config.js +46 -0
  362. package/dist/static/sdk-libs/auth/crypto.js +166 -0
  363. package/dist/static/sdk-libs/auth/events.js +27 -0
  364. package/dist/static/sdk-libs/auth/i18n.js +64 -0
  365. package/dist/static/sdk-libs/auth/index.js +37 -0
  366. package/dist/static/sdk-libs/auth/modal.js +545 -0
  367. package/dist/static/sdk-libs/auth/pill.js +167 -0
  368. package/dist/static/sdk-libs/auth/session.js +792 -0
  369. package/dist/static/sdk-libs/auth/signup.js +232 -0
  370. package/dist/static/sdk-libs/auth/theme.js +96 -0
  371. package/dist/static/sdk-libs/capabilities/index.js +179 -0
  372. package/dist/static/sdk-libs/commerce/index.js +243 -0
  373. package/dist/static/sdk-libs/data/index.js +188 -0
  374. package/dist/static/sdk-libs/dist/aimeat-agentface.js +91 -0
  375. package/dist/static/sdk-libs/dist/aimeat-agents.js +315 -0
  376. package/dist/static/sdk-libs/dist/aimeat-ai.js +168 -0
  377. package/dist/static/sdk-libs/dist/aimeat-audio.js +979 -0
  378. package/dist/static/sdk-libs/dist/aimeat-auth.js +1831 -0
  379. package/dist/static/sdk-libs/dist/aimeat-capabilities.js +177 -0
  380. package/dist/static/sdk-libs/dist/aimeat-commerce.js +265 -0
  381. package/dist/static/sdk-libs/dist/aimeat-data.js +205 -0
  382. package/dist/static/sdk-libs/dist/aimeat-editor.js +299 -0
  383. package/dist/static/sdk-libs/dist/aimeat-header.js +270 -0
  384. package/dist/static/sdk-libs/dist/aimeat-intake.js +94 -0
  385. package/dist/static/sdk-libs/dist/aimeat-live.js +265 -0
  386. package/dist/static/sdk-libs/dist/aimeat-markdown.js +602 -0
  387. package/dist/static/sdk-libs/dist/aimeat-organism.js +394 -0
  388. package/dist/static/sdk-libs/dist/aimeat-portfolio-standalone.js +90 -0
  389. package/dist/static/sdk-libs/dist/aimeat-social.js +157 -0
  390. package/dist/static/sdk-libs/dist/aimeat-speech.js +300 -0
  391. package/dist/static/sdk-libs/dist/aimeat-storage.js +210 -0
  392. package/dist/static/sdk-libs/dist/aimeat-tunnel.js +383 -0
  393. package/dist/static/sdk-libs/dist/aimeat-wallet.js +118 -0
  394. package/dist/static/sdk-libs/dist/aimeat-webmcp.js +187 -0
  395. package/dist/static/sdk-libs/dist/aimeat-work.js +213 -0
  396. package/dist/static/sdk-libs/dist/aimeat-workflows.js +147 -0
  397. package/dist/static/sdk-libs/editor/index.js +229 -0
  398. package/dist/static/sdk-libs/header/index.js +249 -0
  399. package/dist/static/sdk-libs/intake/index.js +75 -0
  400. package/dist/static/sdk-libs/live/index.js +156 -0
  401. package/dist/static/sdk-libs/markdown/index.js +522 -0
  402. package/dist/static/sdk-libs/organism/index.js +381 -0
  403. package/dist/static/sdk-libs/portfolio-standalone/index.js +78 -0
  404. package/dist/static/sdk-libs/social/index.js +140 -0
  405. package/dist/static/sdk-libs/speech/index.js +321 -0
  406. package/dist/static/sdk-libs/storage/index.js +189 -0
  407. package/dist/static/sdk-libs/tunnel/index.js +428 -0
  408. package/dist/static/sdk-libs/wallet/index.js +115 -0
  409. package/dist/static/sdk-libs/webmcp/index.js +185 -0
  410. package/dist/static/sdk-libs/work/index.js +191 -0
  411. package/dist/static/sdk-libs/workflows/index.js +113 -0
  412. package/package.json +5 -2
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @file promote.js
3
+ * @description Promoted apps for the catalog. A per-owner PUBLIC memory doc (`app-catalog.promoted`
4
+ * = { version, updatedAt, items: [{ ref: "owner/filename", text: { en, fi } }] }) read/written via
5
+ * /v1/memory with the owner token. PUBLIC so others can read it (GET /v1/memory/:gaii/:key) — it
6
+ * powers a "Promoted apps" section on the owner's public profile/portfolio. Promote is for the
7
+ * owner's OWN published apps (showcasing your work), with per-language promotion copy.
8
+ * @usage import { loadPromoted, setPromotion, isPromoted, getPromotion } from './promote.js'
9
+ * @version-history
10
+ * v1.0.0 — 2026-07-20 — initial (Phase 2c promote).
11
+ */
12
+ import { loadConfig } from './config.js';
13
+ import { getCortexOwnerToken } from './cortex.js';
14
+
15
+ const KEY = 'app-catalog.promoted';
16
+ // ref -> { en, fi }
17
+ let promoted = {};
18
+
19
+ function base() { return (loadConfig().aimeatUrl || '').replace(/\/+$/, ''); }
20
+
21
+ export function isPromoted(ref) { return Object.prototype.hasOwnProperty.call(promoted, ref); }
22
+ export function getPromotion(ref) { return promoted[ref] || null; }
23
+ export function getPromotedItems() {
24
+ return Object.keys(promoted).map(function (ref) { return { ref: ref, text: promoted[ref] || {} }; });
25
+ }
26
+
27
+ // Load the owner's promoted doc (owner token). Logged out → empty. Never throws (404 = none yet).
28
+ export function loadPromoted() {
29
+ var token = getCortexOwnerToken();
30
+ var b = base();
31
+ if (!token || !b) { promoted = {}; return Promise.resolve(); }
32
+ return fetch(b + '/v1/memory/' + encodeURIComponent(KEY), { headers: { 'Authorization': 'Bearer ' + token } })
33
+ .then(function (r) { return r.ok ? r.json() : null; })
34
+ .then(function (j) {
35
+ var items = (j && j.data && j.data.value && Array.isArray(j.data.value.items)) ? j.data.value.items : [];
36
+ var map = {};
37
+ items.forEach(function (it) {
38
+ if (it && typeof it.ref === 'string' && it.text && typeof it.text === 'object') map[it.ref] = { en: it.text.en || '', fi: it.text.fi || '' };
39
+ });
40
+ promoted = map;
41
+ })
42
+ .catch(function () { /* leave as-is on a transient error */ });
43
+ }
44
+
45
+ function persist() {
46
+ var token = getCortexOwnerToken();
47
+ var b = base();
48
+ if (!token || !b) return Promise.resolve();
49
+ var items = getPromotedItems();
50
+ return fetch(b + '/v1/memory', {
51
+ method: 'POST',
52
+ headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token },
53
+ body: JSON.stringify({
54
+ key: KEY,
55
+ value: { version: 1, updatedAt: new Date().toISOString(), items: items },
56
+ visibility: 'public',
57
+ }),
58
+ }).catch(function () { /* best-effort */ });
59
+ }
60
+
61
+ // Set (or clear) the promotion for an app. text = { en, fi }; when both are blank the app is
62
+ // un-promoted. Persists the public doc and resolves to the new promoted state (true = promoted).
63
+ export function setPromotion(ref, text) {
64
+ var en = (text && text.en ? String(text.en).trim() : '');
65
+ var fi = (text && text.fi ? String(text.fi).trim() : '');
66
+ var now;
67
+ if (!en && !fi) { delete promoted[ref]; now = false; }
68
+ else { promoted[ref] = { en: en, fi: fi }; now = true; }
69
+ return persist().then(function () { return now; });
70
+ }
@@ -13,12 +13,15 @@
13
13
  * v1.1.0 — 2026-07-16 — Card badges now reflect PUBLICATION state only (retire the
14
14
  * "Server only" concept: a published no-local-copy app is "Listed vN", not "server").
15
15
  * Add a Staging pill + split Open into "Open released" / "Open staging" when has_draft.
16
+ * v2.0.0 — 2026-07-20 — Server-only cutover: grid renders the owner's server apps only (no local
17
+ * merge), drop drag-reorder + Recently-Opened + the local-only card affordances + byte stats.
16
18
  */
17
19
  import { escapeHtml, jsArg, sourceLabel, filterAttr, isSameOriginUrl } from './util.js';
18
20
  import { getAllApps, saveApp, deleteApp } from './db.js';
19
21
  import { showConfirm, showNotice } from './ui.js';
20
22
  import { loadConfig } from './config.js';
21
- import { t } from './i18n.js';
23
+ import { t, getLang } from './i18n.js';
24
+ import { favStarHtml } from './favorites.js';
22
25
  import { setEditingAppId, switchTab } from './apps-io.js';
23
26
  import { openPromptBuilder } from './cortex.js';
24
27
  import { openDetailView, openPublishedDetail } from './detail.js';
@@ -250,6 +253,7 @@ function buildLibraryEntries(localApps, serverApps) {
250
253
  name: (sa.manifest && sa.manifest.name) || fn,
251
254
  icon: '\u{1F310}',
252
255
  description: (sa.manifest && sa.manifest.description) || '',
256
+ descriptions: (sa.manifest && sa.manifest.descriptions) || null,
253
257
  tags: (sa.manifest && sa.manifest.tags) || [],
254
258
  favorite: false, sortOrder: undefined, openMode: 'tab',
255
259
  source: 'server', origin: null,
@@ -280,22 +284,16 @@ function buildLibraryEntries(localApps, serverApps) {
280
284
 
281
285
  function renderApps() {
282
286
  getAllApps().then(function (apps) {
283
- setAllApps(apps); // keep the raw local list (openPublishedDetail et al. read getMainApps())
287
+ setAllApps(apps); // keep the transient working-set (openPublishedDetail materializes into it)
284
288
 
285
- // Unified library list: one entry per app (local + own-server, deduped by filename).
286
- var entries = buildLibraryEntries(apps, ownServerApps);
289
+ // Server-only library: one entry per OWN server app (published + parked). No browser-local
290
+ // apps exist anymore, so nothing local is merged in — the grid is purely the owner's server apps.
291
+ var entries = buildLibraryEntries([], ownServerApps);
287
292
 
288
- // Sort: favorites first, then by explicit sortOrder, then most-recent.
293
+ // Sort: Listed (public) before Unlisted (parked); the server already returns each group
294
+ // newest-first, so preserve that order within a group.
289
295
  entries.sort(function (a, b) {
290
- if (a.favorite && !b.favorite) return -1;
291
- if (!a.favorite && b.favorite) return 1;
292
- var oA = typeof a.sortOrder === 'number' ? a.sortOrder : Infinity;
293
- var oB = typeof b.sortOrder === 'number' ? b.sortOrder : Infinity;
294
- if (oA !== oB) return oA - oB;
295
- var dateA = a.lastOpenedAt || a.addedAt || '';
296
- var dateB = b.lastOpenedAt || b.addedAt || '';
297
- if (dateA > dateB) return -1;
298
- if (dateA < dateB) return 1;
296
+ if (!!a.parked !== !!b.parked) return a.parked ? 1 : -1;
299
297
  return 0;
300
298
  });
301
299
 
@@ -357,19 +355,11 @@ function renderApps() {
357
355
  grid.innerHTML = html;
358
356
  }
359
357
 
360
- // Stats: count + total local blob size (server-only apps have no local footprint).
358
+ // Stats: app count only the catalog is server-only, so there is no local footprint to report.
361
359
  var statsEl = document.getElementById('stats');
362
- var totalSize = 0;
363
- for (var sz = 0; sz < entries.length; sz++) {
364
- if (entries[sz].blob) totalSize += entries[sz].blob.length;
365
- }
366
- var sizeLabel = totalSize < 1024 ? totalSize + ' B'
367
- : totalSize < 1048576 ? (totalSize / 1024).toFixed(1) + ' KB'
368
- : (totalSize / 1048576).toFixed(1) + ' MB';
369
- statsEl.textContent = entries.length + ' ' + t('stats.apps') + ' · ' + sizeLabel + ' ' + t('stats.stored');
360
+ statsEl.textContent = entries.length + ' ' + t('stats.apps');
370
361
 
371
362
  renderTags();
372
- renderRecentlyOpened();
373
363
  });
374
364
  }
375
365
 
@@ -419,33 +409,20 @@ function libraryCardHtml(e, i) {
419
409
  '<div class="app-name">' + escapeHtml(e.name) +
420
410
  (e.origin === 'ai-published' ? ' <span class="ai-origin-badge">AI</span>' : '') +
421
411
  (e.hasAgents ? ' <span class="pcb-agent" title="' + escapeHtml(t('card.agentHint')) + '">\u{1F916}</span>' : '') + '</div>' +
422
- (e.description
423
- ? '<div class="app-source">' + escapeHtml(e.description) + '</div>'
424
- : '<div class="app-source">' + sourceLabel(e.source) + '</div>') +
412
+ (function () {
413
+ // Show the description in the current UI language, falling back to the canonical one.
414
+ var d = (e.descriptions && e.descriptions[getLang()]) || e.description || '';
415
+ return d
416
+ ? '<div class="app-source">' + escapeHtml(d) + '</div>'
417
+ : '<div class="app-source">' + sourceLabel(e.source) + '</div>';
418
+ })() +
425
419
  '<div class="app-actions">' +
426
420
  openBtns +
427
421
  '<button onclick="event.stopPropagation(); ' + detailCall + '">' + escapeHtml(t('ctx.details')) + '</button>' +
428
422
  '</div>' +
429
- (e.favorite ? '<span class="fav-star visible">⭐</span>' : '') +
430
- '</div>';
431
- }
432
-
433
- function renderRecentlyOpened() {
434
- var section = document.getElementById('recent-section');
435
- var strip = document.getElementById('recent-strip');
436
- var recent = getMainApps()
437
- .filter(function(a) { return a.lastOpenedAt; })
438
- .sort(function(a, b) { return (b.lastOpenedAt || '') > (a.lastOpenedAt || '') ? 1 : -1; })
439
- .slice(0, 5);
440
- if (recent.length === 0) { section.style.display = 'none'; return; }
441
- section.style.display = 'block';
442
- strip.innerHTML = recent.map(function(app) {
443
- var icon = app.icon || '\u{1F4DD}';
444
- return '<div style="background:var(--surface-glass);border:1px solid var(--border-subtle);border-radius:10px;padding:.6rem .8rem;cursor:pointer;min-width:120px;flex-shrink:0;transition:all .15s" onclick="window._launcher.launchApp(\'' + escapeHtml(app.id) + '\', \'' + escapeHtml(app.openMode || 'tab') + '\')" onmouseover="this.style.borderColor=\'var(--border-hover)\'" onmouseout="this.style.borderColor=\'var(--border-subtle)\'">' +
445
- '<div style="font-size:1.3rem;text-align:center">' + escapeHtml(icon) + '</div>' +
446
- '<div style="font-size:.75rem;font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px">' + escapeHtml(app.name) + '</div>' +
423
+ // Server-backed favourite toggle (owner/filename); only for server apps with a filename.
424
+ (e.filename ? favStarHtml((e.owner || e.aimeatOwner || '') + '/' + e.filename) : '') +
447
425
  '</div>';
448
- }).join('');
449
426
  }
450
427
 
451
428
  // ── Iframe helpers ────────────────────────────────
@@ -538,23 +515,9 @@ async function handleContextAction(action) {
538
515
  break;
539
516
 
540
517
  case 'edit':
541
- // Open modal pre-filled with app data
542
- setEditingAppId(appId);
543
- document.getElementById('modal-title').textContent = 'Edit App';
544
- document.getElementById('app-name').value = app.name || '';
545
- document.getElementById('app-icon').value = app.icon || '';
546
- document.getElementById('app-tags').value = (app.tags || []).join(', ');
547
-
548
- // Set the correct source tab
549
- if (app.source === 'url') {
550
- switchTab('url');
551
- document.getElementById('app-url').value = app.url || '';
552
- } else {
553
- switchTab('file');
554
- document.getElementById('selected-file-name').textContent = '(existing file)';
555
- }
556
-
557
- document.getElementById('modal-overlay').hidden = false;
518
+ // Server-only: editing an app's name/description/icon/tags is done in the detail view
519
+ // ("Edit details"); route there instead of the old local Add/Edit modal.
520
+ openDetailView(appId);
558
521
  break;
559
522
 
560
523
  case 'favorite':
@@ -709,82 +672,7 @@ function generateHomepagePrompt() {
709
672
  overlay.hidden = false;
710
673
  }
711
674
 
712
- // ── Drag & Drop Reordering (card reorder) ─────────
713
-
714
- var dragSourceId = null;
715
-
716
- function onCardDragStart(e) {
717
- var card = e.target.closest('.app-card');
718
- if (!card) return;
719
- dragSourceId = card.dataset.id;
720
- card.classList.add('dragging');
721
- e.dataTransfer.effectAllowed = 'move';
722
- e.dataTransfer.setData('text/plain', dragSourceId);
723
- }
724
-
725
- function onCardDragEnd(e) {
726
- var card = e.target.closest('.app-card');
727
- if (card) card.classList.remove('dragging');
728
- // Remove all drag-over highlights
729
- var cards = document.querySelectorAll('.app-card.drag-over');
730
- for (var i = 0; i < cards.length; i++) cards[i].classList.remove('drag-over');
731
- dragSourceId = null;
732
- }
733
-
734
- function onCardDragOver(e) {
735
- e.preventDefault();
736
- e.dataTransfer.dropEffect = 'move';
737
- var card = e.target.closest('.app-card');
738
- if (!card || card.dataset.id === dragSourceId) return;
739
- // Remove highlight from others
740
- var cards = document.querySelectorAll('.app-card.drag-over');
741
- for (var i = 0; i < cards.length; i++) cards[i].classList.remove('drag-over');
742
- card.classList.add('drag-over');
743
- }
744
-
745
- function onCardDrop(e) {
746
- e.preventDefault();
747
- var targetCard = e.target.closest('.app-card');
748
- if (!targetCard) return;
749
- var targetId = targetCard.dataset.id;
750
- if (!dragSourceId || dragSourceId === targetId) return;
751
-
752
- // Find indexes in the currently rendered/sorted getMainApps()
753
- var srcIdx = -1, tgtIdx = -1;
754
- for (var i = 0; i < getMainApps().length; i++) {
755
- if (getMainApps()[i].id === dragSourceId) srcIdx = i;
756
- if (getMainApps()[i].id === targetId) tgtIdx = i;
757
- }
758
- if (srcIdx === -1 || tgtIdx === -1) return;
759
-
760
- // Move the source app to the target position
761
- var moved = getMainApps().splice(srcIdx, 1)[0];
762
- getMainApps().splice(tgtIdx, 0, moved);
763
-
764
- // Assign sortOrder values based on new positions
765
- var saves = [];
766
- for (var j = 0; j < getMainApps().length; j++) {
767
- getMainApps()[j].sortOrder = j;
768
- saves.push(saveApp(getMainApps()[j]));
769
- }
770
-
771
- // Re-render immediately (no animation delay for reorder)
772
- var grid = document.getElementById('app-grid');
773
- var cards = grid.querySelectorAll('.app-card');
774
- for (var k = 0; k < cards.length; k++) {
775
- cards[k].classList.remove('drag-over', 'dragging');
776
- }
777
-
778
- Promise.all(saves).then(function () {
779
- renderApps();
780
- });
781
- }
782
-
783
675
  export {
784
- onCardDragStart,
785
- onCardDragEnd,
786
- onCardDragOver,
787
- onCardDrop,
788
676
  renderTags,
789
677
  filterByTag,
790
678
  launchApp,
@@ -792,7 +680,6 @@ export {
792
680
  viewPublished,
793
681
  launchInIframe,
794
682
  renderApps,
795
- renderRecentlyOpened,
796
683
  closeIframe,
797
684
  openExternal,
798
685
  showContextMenu,