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
@@ -10,6 +10,14 @@
10
10
  @usage Loaded first in spa.html <head>; the theme is toggled by /js/theme.js
11
11
  which flips the data-theme attribute on <html>.
12
12
  @version-history
13
+ v1.24.0 — 2026-07-21 — App-shell scroll model: html/body no longer scroll (height:100%;
14
+ overflow:hidden); #app is a full-viewport (100dvh) flex column with the topnav as a fixed-height
15
+ row and .page-content as the sole overflow-y:auto scroll region. Removes the ~nav-height phantom
16
+ overscroll and stops view content sliding under the (formerly sticky, now in-frame) header. Coupled
17
+ offset fixes: .pf-sidebar/.adm-sidebar stick to top:0 of the region and cap at 100dvh−nav-height.
18
+ v1.23.1 — 2026-07-20 — Mobile: pin .notif-dropdown to fixed viewport insets under 560px (the
19
+ 320px, right:0-anchored panel ran off the LEFT edge — the bell sits mid-right of the bar — and
20
+ got clipped by body{overflow-x:hidden}); long notif titles/bodies wrap (overflow-wrap:anywhere).
13
21
  v1.23.0 — 2026-07-18 — Notification bell inline actions: split .notif-item into a clickable
14
22
  .notif-item-main + an actions row; add .notif-actions/.notif-action-btn/.notif-reply*/.notif-result.
15
23
  v1.22.0 — 2026-07-17 — UI-unification foundation: extend the spacing scale (--sp-5=20/--sp-6=24/
@@ -307,15 +315,22 @@
307
315
  }
308
316
 
309
317
  /* ── Base ── */
310
- html { scroll-behavior: smooth; }
318
+ html { scroll-behavior: smooth; height: 100%; }
311
319
 
312
320
  body {
313
321
  font-family: var(--font);
314
322
  background: var(--bg);
315
323
  color: var(--text);
316
324
  line-height: 1.6;
317
- min-height: 100vh;
318
- overflow-x: hidden;
325
+ height: 100%;
326
+ margin: 0; /* zero the UA default 8px — with the fixed app-shell frame it would push #app past the viewport */
327
+ /* App-shell: the page (html/body) never scrolls. The topnav is a fixed-height
328
+ flex row and .page-content owns the ONLY scroll region (see #app +
329
+ .page-content). This is what stops view content sliding under the header and
330
+ removes the ~nav-height phantom overscroll that body-scroll + an in-flow
331
+ (sticky) header produced — the content fills the space below the header and
332
+ scrolls within it. overflow:hidden also subsumes the old overflow-x clip. */
333
+ overflow: hidden;
319
334
  -webkit-font-smoothing: antialiased;
320
335
  }
321
336
 
@@ -402,14 +417,28 @@ a { color: inherit; text-decoration: none; }
402
417
  #app {
403
418
  position: relative;
404
419
  z-index: 1;
420
+ /* App-shell frame: a full-viewport flex column — topnav (fixed height) on top,
421
+ .page-content (the scroll region) filling the rest. dvh keeps the frame flush
422
+ with the visual viewport as mobile browser chrome shows/hides. */
423
+ height: 100vh;
424
+ height: 100dvh;
425
+ display: flex;
426
+ flex-direction: column;
405
427
  }
406
428
 
407
429
  /* ── Top Navigation ── */
408
430
  .topnav {
409
- position: sticky;
410
- top: 0;
431
+ /* App-shell: a fixed-height flex row inside #app (no longer sticky — #app
432
+ itself doesn't scroll, so the header stays put for free). z-index keeps the
433
+ header's own dropdowns (notifications, mobile menu) above .page-content. */
434
+ position: relative;
411
435
  z-index: 100;
436
+ flex: 0 0 auto;
412
437
  height: var(--nav-height);
438
+ /* border-box so the 1px border-bottom is INCLUDED in --nav-height — otherwise the
439
+ header renders 1px taller than the token and every `100dvh - var(--nav-height)`
440
+ scroll region (sidebars) is 1px too tall and can't stay pinned. */
441
+ box-sizing: border-box;
413
442
  display: flex;
414
443
  align-items: center;
415
444
  justify-content: space-between;
@@ -481,7 +510,10 @@ a { color: inherit; text-decoration: none; }
481
510
  .notif-bell-btn:hover { background: var(--bg-dim); }
482
511
  .notif-badge { position: absolute; top: -1px; right: -1px; background: var(--accent); color: #fff; border-radius: 10px; font-size: 0.6rem; font-weight: 700; min-width: 15px; height: 15px; padding: 0 3px; display: flex; align-items: center; justify-content: center; }
483
512
  .notif-dropdown { position: absolute; right: 0; top: calc(100% + 6px); width: 320px; max-height: 60vh; overflow-y: auto; background: var(--card); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 10px 30px rgba(0,0,0,0.18); z-index: 1200; }
484
- .notif-dropdown-head { font-weight: 700; font-size: 0.9rem; color: var(--text); padding: 0.6rem 0.85rem; border-bottom: 1px solid var(--border-subtle); position: sticky; top: 0; background: var(--card); }
513
+ .notif-dropdown-head { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; font-weight: 700; font-size: 0.9rem; color: var(--text); padding: 0.6rem 0.85rem; border-bottom: 1px solid var(--border-subtle); position: sticky; top: 0; background: var(--card); z-index: 1; }
514
+ .notif-clear-all { font-weight: 600; font-size: 0.78rem; color: var(--muted); background: none; border: none; padding: 0.15rem 0.35rem; border-radius: 6px; cursor: pointer; }
515
+ .notif-clear-all:hover:not(:disabled) { color: var(--brand); background: var(--bg-dim); }
516
+ .notif-clear-all:disabled { opacity: 0.6; cursor: default; }
485
517
  .notif-empty { padding: 1rem 0.85rem; color: var(--muted); font-size: 0.85rem; }
486
518
  .notif-item { display: block; border-bottom: 1px solid var(--border-subtle); }
487
519
  .notif-item.unread { background: var(--accent-subtle); }
@@ -499,6 +531,21 @@ a { color: inherit; text-decoration: none; }
499
531
  .notif-result { font-size: 0.76rem; padding: 0.3rem 0.85rem 0.55rem; }
500
532
  .notif-result.ok { color: var(--success, #4caf50); }
501
533
  .notif-result.err { color: var(--danger, #e0564a); }
534
+ /* Long sender GHIIs / subjects wrap instead of forcing the panel wider than the screen. */
535
+ .notif-item-title, .notif-item-body { overflow-wrap: anywhere; }
536
+ /* Mobile: the 320px-wide, right:0-anchored dropdown runs off the LEFT edge (the bell sits
537
+ mid-right of the bar) and gets clipped by body{overflow-x:hidden}. Pin it to fixed viewport
538
+ insets so it spans the screen width minus small margins, regardless of the bell's position. */
539
+ @media (max-width: 560px) {
540
+ .notif-dropdown {
541
+ position: fixed;
542
+ top: calc(var(--nav-height, 56px) + 4px);
543
+ right: 8px;
544
+ left: 8px;
545
+ width: auto;
546
+ max-height: 72vh;
547
+ }
548
+ }
502
549
 
503
550
  .topnav-right a {
504
551
  font-size: 0.84rem;
@@ -1277,7 +1324,10 @@ select.input-field { cursor: pointer; }
1277
1324
  }
1278
1325
 
1279
1326
  /* ── Page entrance ── */
1280
- .page-content { animation: pageIn 0.8s ease; }
1327
+ /* App-shell scroll region: fills the space under the topnav and owns the only
1328
+ scroll. min-height:0 lets the flex child shrink so overflow-y actually scrolls;
1329
+ overflow-x:hidden replaces the clip that used to live on body. */
1330
+ .page-content { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; animation: pageIn 0.8s ease; }
1281
1331
 
1282
1332
  /* ── Responsive ── */
1283
1333
  @media (max-width: 480px) {
@@ -4,6 +4,9 @@
4
4
  * its distinct indigo accent and a permanently-dark sidebar, but all content
5
5
  * surfaces map to global theme.css tokens so they flip with dark/light mode.
6
6
  * @version-history
7
+ * v1.10.0 — 2026-07-21 — App-shell scroll model (theme.css v1.24.0): .adm-sidebar height 100vh →
8
+ * calc(100dvh − nav-height) so the sticky sidebar fills the .page-content scroll region instead of
9
+ * overflowing the frame by the header's height.
7
10
  * v1.9.0 — 2026-07-16 — Drop the dead .adm-nav-item .icon rule (nav is label-only now).
8
11
  * v1.8.0 — 2026-06-25 — Applications tab: .adm-apps-rowactions (Hide/Restore + Delete row).
9
12
  * v1.7.0 — 2026-06-24 — Applications moderation tab: .adm-apps-* (filters row,
@@ -53,9 +56,13 @@
53
56
  border-right: none;
54
57
  padding: 16px 0;
55
58
  flex-shrink: 0;
59
+ /* App-shell: sticks to the top of the .page-content scroll region; height caps
60
+ at that region (viewport minus the fixed header) so the sidebar's own nav
61
+ scrolls instead of overflowing past the frame by the header's height. */
56
62
  position: sticky;
57
63
  top: 0;
58
- height: 100vh;
64
+ height: calc(100dvh - var(--nav-height, 56px));
65
+ box-sizing: border-box; /* fold the 16px vertical padding into the height so it fits the scroll region */
59
66
  overflow-y: auto;
60
67
  display: flex;
61
68
  flex-direction: column;
@@ -4,6 +4,7 @@
4
4
  * screen where an owner reviews a published app's requested scopes (H-2 Phase 3).
5
5
  * @version-history
6
6
  * v1.0.0 — 2026-06-20 — Initial (H-2 app-origin isolation, Phase 3).
7
+ * v1.1.0 — 2026-07-19 — Own-app badge variant + "new" chip for newly requested scopes.
7
8
  */
8
9
 
9
10
  .agr-wrap { max-width: 540px; margin: 3rem auto; padding: 0 1.25rem; }
@@ -64,6 +65,23 @@
64
65
  padding: 0.18rem 0.6rem;
65
66
  margin-bottom: 0.6rem;
66
67
  }
68
+ /* The signed-in owner's OWN app — reassuring, not warning */
69
+ .agr-badge-own { color: var(--success, #3dbf6e); }
70
+
71
+ /* Chip on a scope the app requests but the existing grant doesn't hold yet */
72
+ .agr-scope-newbadge {
73
+ display: inline-block;
74
+ font-size: 0.68rem;
75
+ font-weight: 700;
76
+ letter-spacing: 0.04em;
77
+ text-transform: uppercase;
78
+ color: var(--accent);
79
+ border: 1px solid var(--accent);
80
+ border-radius: 999px;
81
+ padding: 0 0.4rem;
82
+ margin-left: 0.45rem;
83
+ vertical-align: 0.08em;
84
+ }
67
85
 
68
86
  /* Advanced toggle (link-style button) */
69
87
  .agr-advanced-toggle {
@@ -5,6 +5,8 @@
5
5
  * ticks, and a sticky composer. All colors/spacing use theme.css variables (dark-mode safe).
6
6
  * Classes are `inbox-` prefixed. NOTE: this file must be linked in spa.html (useViewCSS is a no-op).
7
7
  * @version-history
8
+ * v1.7.0 -- 2026-07-21 -- Link-preview (unfurl) cards under a pasted link (.inbox-linkcard*) + the
9
+ * thread-head show/hide toggle (.inbox-linkprev-toggle).
8
10
  * v1.6.0 -- 2026-07-18 -- TRUE full-screen mobile chat: ≤760px open panel becomes `position:fixed;inset:0`
9
11
  * over the whole viewport (covers the app shell nav/menu/breadcrumb); body height var(--inbox-avail,
10
12
  * 100dvh) + safe-area padding under the composer. ← Back drops `.inbox--panel` → shell returns. Pairs
@@ -485,7 +487,14 @@
485
487
  font-size: 14px;
486
488
  }
487
489
 
490
+ /* Expanded composer (the ⤢ toggle): grow the fallback/simple textarea + preview to ~60vh so a long or
491
+ formatted draft is fully visible. The rich Toast UI editor is resized in JS via setHeight instead. */
492
+ .inbox-composer--tall .inbox-textarea { min-height: 60vh; }
493
+ .inbox-composer--tall .inbox-textarea--chat { max-height: 60vh; }
494
+ .inbox-composer--tall .inbox-md-preview { max-height: 60vh; }
495
+
488
496
  .inbox-composer-bar { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
497
+ .inbox-bar-left { display: flex; align-items: center; gap: 8px; }
489
498
  .inbox-attach-btn {
490
499
  display: inline-flex;
491
500
  align-items: center;
@@ -519,7 +528,7 @@
519
528
  box-shadow: var(--shadow-md);
520
529
  }
521
530
  .inbox-row:hover .inbox-bubble-actions { opacity: 1; pointer-events: auto; }
522
- /* Touch devices have no hover — the per-message actions (↩ reply, ⭐, 🔗, 📓, ✨) would be unreachable.
531
+ /* Touch devices have no hover — the per-message actions (↩ reply, ⧉ copy, ⭐, 🔗, 📓, ✨) would be unreachable.
523
532
  Reveal them permanently there so a phone user can actually reply to / act on a message by tapping. */
524
533
  @media (hover: none) {
525
534
  .inbox-bubble-actions { opacity: 1; pointer-events: auto; }
@@ -743,3 +752,40 @@
743
752
  .inbox-sched-new { display: flex; flex-direction: column; gap: 6px; }
744
753
  .inbox-sched-new .btn-primary { align-self: flex-start; }
745
754
  .inbox-sched-desc { min-height: 38px; resize: vertical; }
755
+
756
+ /* ── Link previews (unfurl cards) — a rich card under a pasted link in a message bubble. The card is a
757
+ * clickable row (thumbnail · site · title · description) plus a ✕ to hide it. Theme tokens only. ── */
758
+ .inbox-linkcards { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
759
+ .inbox-linkcard {
760
+ position: relative; display: flex; align-items: stretch;
761
+ border: 1px solid var(--border-subtle); border-radius: var(--radius-sm);
762
+ background: var(--card-bg-alt); overflow: hidden;
763
+ }
764
+ .inbox-linkcard-main {
765
+ display: flex; align-items: stretch; gap: 10px; min-width: 0; flex: 1;
766
+ padding: 8px 10px; text-decoration: none; color: inherit;
767
+ }
768
+ .inbox-linkcard-main:hover { background: var(--surface-hover); }
769
+ .inbox-linkcard-thumb { flex: none; width: 72px; display: flex; align-items: center; justify-content: center; }
770
+ .inbox-linkcard-thumb img {
771
+ width: 72px; height: 72px; object-fit: cover; border-radius: var(--radius-xs); display: block; margin: 0;
772
+ }
773
+ .inbox-linkcard-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; justify-content: center; }
774
+ .inbox-linkcard-site { font-size: 11px; color: var(--text-dim); text-transform: uppercase; letter-spacing: .02em; }
775
+ .inbox-linkcard-title {
776
+ font-size: 13px; font-weight: 600; color: var(--text); line-height: 1.3;
777
+ overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
778
+ }
779
+ .inbox-linkcard-desc {
780
+ font-size: 12px; color: var(--text-dim); line-height: 1.35;
781
+ overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
782
+ }
783
+ .inbox-linkcard-x {
784
+ flex: none; align-self: flex-start; border: none; background: transparent; cursor: pointer;
785
+ color: var(--text-dim); font-size: 12px; line-height: 1; padding: 6px 8px; border-radius: var(--radius-xs);
786
+ }
787
+ .inbox-linkcard-x:hover { color: var(--text); background: var(--surface-hover); }
788
+
789
+ /* Thread-head toggle: show/hide all link previews (persisted). --on marks the active state. */
790
+ .inbox-linkprev-toggle { flex: none; white-space: nowrap; }
791
+ .inbox-linkprev-toggle--on { background: var(--accent-subtle); border-color: var(--accent-border); color: var(--accent); }
@@ -317,6 +317,52 @@
317
317
  margin-bottom: 0.5rem;
318
318
  }
319
319
 
320
+ /* ── Promoted apps (public profile) ── */
321
+ .portfolio-profile-head {
322
+ text-align: center;
323
+ padding: 3rem 2rem 1rem;
324
+ color: var(--text-dim, #6B7280);
325
+ }
326
+ .portfolio-profile-head h2 { color: var(--text, #1A1A2E); margin-bottom: 0.5rem; }
327
+ .portfolio-promoted {
328
+ max-width: 900px;
329
+ margin: 0 auto;
330
+ padding: 0 1.5rem 1rem;
331
+ }
332
+ .portfolio-promoted-title {
333
+ font-size: 1rem;
334
+ color: var(--text, #1A1A2E);
335
+ margin: 0 0 0.75rem;
336
+ }
337
+ .portfolio-promoted-grid {
338
+ display: grid;
339
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
340
+ gap: 0.75rem;
341
+ }
342
+ .portfolio-promoted-card {
343
+ display: block;
344
+ text-decoration: none;
345
+ border: 1px solid var(--border, #E5E7EB);
346
+ border-radius: 12px;
347
+ padding: 0.85rem 1rem;
348
+ background: var(--card, #fff);
349
+ transition: border-color 0.15s, transform 0.15s;
350
+ }
351
+ .portfolio-promoted-card:hover {
352
+ border-color: var(--accent, #E8564A);
353
+ transform: translateY(-1px);
354
+ }
355
+ .portfolio-promoted-name {
356
+ font-weight: 700;
357
+ color: var(--text, #1A1A2E);
358
+ margin-bottom: 0.3rem;
359
+ }
360
+ .portfolio-promoted-pitch {
361
+ font-size: 0.85rem;
362
+ color: var(--text-dim, #6B7280);
363
+ line-height: 1.4;
364
+ }
365
+
320
366
  /* ── Upload Section ── */
321
367
  .portfolio-upload-zone {
322
368
  border: 2px dashed var(--border, #E5E7EB);
@@ -4,6 +4,15 @@
4
4
  * wallet, memory, agents, extensions, packages, knowledge, generator, and
5
5
  * edit panels. Consumes theme.css tokens so it flips with dark/light mode.
6
6
  * @version-history
7
+ * v2.17.0 — 2026-07-25 — .ag-scope-toggle: the Connected Apps scope count is now the disclosure
8
+ * button for its badge list (button reset so it still renders as a plain .badge).
9
+ * v2.16.2 — 2026-07-21 — App-shell scroll model (theme.css v1.24.0): .pf-sidebar sticks to top:0 of
10
+ * the new .page-content scroll region (was top:var(--nav-height) against the window) and caps at
11
+ * calc(100dvh − nav-height) so its nav list scrolls without a header-height gap.
12
+ * v2.16.1 — 2026-07-20 — Mobile home-dashboard overflow fix: .pf-home-card (and the spend/quota
13
+ * tiles, chips, and long app-name row) get min-width:0 so unbreakable inner content no longer
14
+ * forces a card — and the whole home grid — wider than a narrow phone (content ran off the right
15
+ * edge, clipped by body{overflow-x:hidden}). .pf-usage-head wraps a very long quota value.
7
16
  * v2.16.0 — 2026-07-19 — AppDev tab (pf-adk-*): prompt cards, learned-pitfall rows,
8
17
  * chips (model/shared/tier/proof), severity badges (AppDev KB UI phase).
9
18
  * v2.15.0 — 2026-07-16 — Drop the dead .pf-side-ico rule (sidebar nav is label-only now).
@@ -219,6 +228,9 @@
219
228
  .pf .wallet-psp{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}
220
229
  .pf .wallet-psp-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
221
230
  .pf .wallet-psp-input{flex:1;min-width:240px}
231
+ /* Payout rails: the chips that say WHICH rail a sale settles on (fiat via provider vs USDC on-chain). */
232
+ .pf .wallet-rail-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
233
+ .pf .wallet-rail-row code{font-size:.8em;word-break:break-all}
222
234
  .pf .pf-psp-chip{display:inline-block;padding:.1rem .55rem;border-radius:var(--radius-full,999px);border:1px solid var(--border);font-size:.72rem;width:fit-content}
223
235
  .pf .pf-psp-chip--ok{color:var(--success,#22c55e);border-color:var(--success,#22c55e)}
224
236
  .pf .pf-psp-chip--warn{color:var(--warning,#f59e0b);border-color:var(--warning,#f59e0b)}
@@ -1608,6 +1620,10 @@
1608
1620
 
1609
1621
  /* ── Access tab ── */
1610
1622
  .pf .access-mono { font-family: monospace; font-size: .75rem; word-break: break-all; color: var(--muted); }
1623
+ /* Scope count doubles as the disclosure control for the badge list it summarises: button reset so a
1624
+ <button> carrying .badge looks exactly like the static badges elsewhere in the card. */
1625
+ .pf .ag-scope-toggle { border: 0; font-family: inherit; font-size: .66rem; font-weight: 600; cursor: pointer; }
1626
+ .pf .ag-scope-toggle:hover { filter: brightness(1.1); }
1611
1627
  .pf .access-key-blur { filter: blur(4px); transition: filter .2s; }
1612
1628
  .pf .access-key-blur.revealed { filter: none; }
1613
1629
  .pf .access-card-warn { border-color: var(--warn); cursor: pointer; }
@@ -2239,8 +2255,15 @@
2239
2255
 
2240
2256
  .pf-sidebar {
2241
2257
  width: 240px; flex: 0 0 240px;
2242
- position: sticky; top: var(--nav-height, 56px);
2243
- max-height: calc(100vh - var(--nav-height, 56px));
2258
+ /* App-shell: the scroll region is now .page-content (the header lives OUTSIDE
2259
+ it), so the sidebar sticks to the top of that region (top:0), not below the
2260
+ header. Height caps at the region's height so its own nav list scrolls.
2261
+ border-box folds the vertical padding INTO max-height — without it the padding
2262
+ stacks on top, making the sidebar taller than the scroll region so sticky can't
2263
+ hold it (it drifts up and the identity slides under the header when you scroll). */
2264
+ position: sticky; top: 0;
2265
+ box-sizing: border-box;
2266
+ max-height: calc(100dvh - var(--nav-height, 56px));
2244
2267
  overflow-y: auto;
2245
2268
  padding: 0.75rem 0.5rem 2rem;
2246
2269
  border-right: 1px solid var(--border);
@@ -2977,7 +3000,11 @@
2977
3000
  .pf-waiting-where { color: var(--muted); }
2978
3001
  .pf-home-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1rem 0; }
2979
3002
  @media (max-width: 760px) { .pf-home-grid { grid-template-columns: 1fr; } }
2980
- .pf-home-card { border: 1px solid var(--border); border-radius: 12px; background: var(--card); padding: 0.8rem 1rem; }
3003
+ /* min-width:0 is load-bearing: grid/flex items default to min-width:auto and refuse to shrink
3004
+ below their content's intrinsic width. Without it, a card with unbreakable inner content (long
3005
+ app names, the 3-col number grid, the chart canvas) forces its grid column — and thus the whole
3006
+ home dashboard — wider than a narrow phone, overflowing the right edge. */
3007
+ .pf-home-card { border: 1px solid var(--border); border-radius: 12px; background: var(--card); padding: 0.8rem 1rem; min-width: 0; }
2981
3008
  .pf-home-card-title { font-size: 0.78rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-dim); margin-bottom: 0.5rem; background: none; border: none; padding: 0; text-align: left; }
2982
3009
  .pf-home-card-link { cursor: pointer; }
2983
3010
  .pf-home-card-link:hover { color: var(--text); }
@@ -3017,7 +3044,14 @@
3017
3044
  .pf-ai-apps-head { font-size: 0.75rem; font-weight: 600; color: var(--muted); margin-bottom: 0.35rem; }
3018
3045
  .pf-ai-app-row { display: flex; align-items: center; gap: 0.5rem; padding: 0.2rem 0; font-size: 0.82rem; }
3019
3046
  .pf-ai-app-dot { width: 10px; height: 10px; border-radius: 3px; flex: none; }
3020
- .pf-ai-app-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
3047
+ /* min-width:0 lets the flex:1 item actually shrink so the ellipsis engages on a long app name
3048
+ (a bare flex:1 keeps min-width:auto and would overflow the card on a narrow screen instead). */
3049
+ .pf-ai-app-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
3050
+ /* Let the spend tiles / quota chips shrink to their column on a narrow screen (tabular numbers
3051
+ otherwise hold an intrinsic min-width and push the card past the viewport). */
3052
+ .pf-ai-win, .pf-usage-chip { min-width: 0; }
3053
+ /* A very long quota value wraps under its label instead of forcing the row wider than the screen. */
3054
+ .pf-usage-head { flex-wrap: wrap; }
3021
3055
  .pf-ai-app-cost { color: var(--text); font-variant-numeric: tabular-nums; }
3022
3056
  .pf-ai-app-pct { width: 3ch; text-align: right; color: var(--muted); font-variant-numeric: tabular-nums; }
3023
3057
  .pf-ai-app-meta { color: var(--muted); font-size: 0.72rem; white-space: nowrap; font-variant-numeric: tabular-nums; }
@@ -12,6 +12,8 @@
12
12
  * crew-defs an app declares (manifest.cortex.agents) onto YOUR OWN fleet + read liveness
13
13
  *
14
14
  * @version-history
15
+ * v1.2.0 — 2026-07-21 — listApps() paginates through ALL apps (was capped at the server
16
+ * default of 50, silently truncating the Apps tab / gallery).
15
17
  * v1.1.0 — 2026-07-16 — Agent-Bundled Apps Slice 1: deploy/undeploy/status service calls
16
18
  * v1.0.0 — 2026-07-13 — Header added; file pre-dates header standard
17
19
  */
@@ -19,10 +21,24 @@ import { apiGet, apiDelete, apiPatch, api } from '/js/api.js';
19
21
 
20
22
  /** List apps. Returns array. The server decides visibility from who is
21
23
  * authenticated: the owner sees their own parked/operator-hidden apps (the latter
22
- * flagged operator_hidden so the UI can badge them); everyone else does not. */
24
+ * flagged operator_hidden so the UI can badge them); everyone else does not.
25
+ *
26
+ * Paginates through EVERY app: a single /v1/apps request caps at the server default
27
+ * (50), so this loops by offset (200/page) until it has the server-reported `total`.
28
+ * Otherwise the Apps tab / gallery silently stopped at 50. A guard bounds the loop. */
23
29
  export async function listApps() {
24
- const data = await apiGet('/v1/apps');
25
- return data?.data?.apps || [];
30
+ const LIMIT = 200;
31
+ let all = [];
32
+ let offset = 0;
33
+ for (let page = 0; page < 100; page++) { // guard: ≤ 100 pages (20k apps)
34
+ const data = await apiGet(`/v1/apps?limit=${LIMIT}&offset=${offset}`);
35
+ const apps = data?.data?.apps || [];
36
+ all = all.concat(apps);
37
+ const total = typeof data?.data?.total === 'number' ? data.data.total : all.length;
38
+ if (apps.length < LIMIT || all.length >= total) break;
39
+ offset += LIMIT;
40
+ }
41
+ return all;
26
42
  }
27
43
 
28
44
  /** Upload an app (HTML file + optional screenshot). */
@@ -19,6 +19,8 @@
19
19
  * - handleOf(id) / peerLabel(id) — short label helpers (mirrors inbox-tab peerName)
20
20
  * - buildConversationReplyPrompt({ peerGhii, subject, conversationId, thread }, mode)
21
21
  * - buildMessageReplyPrompt({ peerGhii, subject, conversationId, message }, mode)
22
+ * - buildConversationSummaryPrompt({ peerGhii, subject, thread, peerName }) — distill a whole thread
23
+ * into a filo-ready note (summary/decisions/open-questions/actions/ideas) for the Notebook capture.
22
24
  * @usage
23
25
  * import { buildConversationReplyPrompt, MODES } from '/js/services/messages-ai-prompts.js';
24
26
  * const text = buildConversationReplyPrompt({ peerGhii, subject, conversationId, thread }, MODES.COPY);
@@ -31,6 +33,9 @@
31
33
  * v1.2.0 -- 2026-07-12 -- MCP mode sends AS THE OWNER via aimeat_dm_send_as_owner (consent-gated
32
34
  * delegation, scope messages:send-as-owner), landing the reply in the owner's thread from the owner.
33
35
  * Graceful fallback to "hand me the reply" when the scope isn't granted; still never aimeat_dm_send.
36
+ * v1.3.0 -- 2026-07-19 -- buildConversationSummaryPrompt: distill a whole thread into a knowledge note
37
+ * (summary/decisions/open-questions/actions/ideas). One prompt, two deliveries — the server-side
38
+ * /v1/ai/complete summary AND the copy-paste "run it in my own chat" mode of the Notebook capture.
34
39
  */
35
40
 
36
41
  export const MODES = { COPY: 'copy', MCP: 'mcp' };
@@ -165,6 +170,39 @@ export function buildConversationReplyPrompt({ peerGhii, subject, conversationId
165
170
  ].join('\n');
166
171
  }
167
172
 
173
+ /**
174
+ * Distill a whole conversation into a self-contained knowledge note — the prompt behind the Inbox
175
+ * "→ Notebook" capture. Used two ways with the SAME text: sent to /v1/ai/complete (server-side, the
176
+ * owner's own key) and shown for copy-paste into the owner's own AI chat. English framing (house rule);
177
+ * the model answers in the conversation's language.
178
+ * @param {ConversationSource} [src]
179
+ */
180
+ export function buildConversationSummaryPrompt({ peerGhii, subject, thread, peerName } = {}) {
181
+ const them = peerLabel(peerGhii, peerName);
182
+ const topic = subject ? ` (topic: "${subject}")` : '';
183
+ const convo = transcript(thread, peerGhii, peerName || handleOf(peerGhii));
184
+ return [
185
+ '# Summarize this conversation for my knowledge base',
186
+ '',
187
+ `This is my AIMEAT conversation with **${them}**${topic}. Distill it into a clean, self-contained`,
188
+ 'Markdown note I can file into my workspace. Write in the SAME language as the conversation.',
189
+ '',
190
+ '## Produce these sections (drop a heading only when it would be genuinely empty)',
191
+ '1. **Summary** — 2-4 sentences on what this conversation was about.',
192
+ '2. **Decisions** — concrete decisions that were made (bullet list).',
193
+ '3. **Open questions** — anything still unresolved or awaiting an answer.',
194
+ '4. **Action items** — who does what next, if stated (name the owner when known).',
195
+ '5. **Ideas worth keeping** — proposals, concepts, or directions raised that are worth revisiting.',
196
+ '',
197
+ 'Stay faithful to what was actually said — do not invent decisions or facts. Images shown as',
198
+ '`![name](url)` were shared but you cannot see them — reference them by name, never guess their',
199
+ 'contents. Start the note with a single H1 title line.',
200
+ '',
201
+ '## The conversation',
202
+ convo,
203
+ ].join('\n');
204
+ }
205
+
168
206
  /**
169
207
  * Single-message reply prompt — scoped to one message the user pointed at.
170
208
  * @param {MessageSource} [src]
@@ -13,6 +13,8 @@
13
13
  * v1.1.0 -- 2026-06-23 -- send() carries the optional `interactive` payload (federated AskUserQuestion).
14
14
  * v1.1.1 -- 2026-07-17 -- uploadAttachment: add a random suffix to the storage key so same-named files
15
15
  * uploaded in the same millisecond (two clipboard "image.png" pastes) don't overwrite each other.
16
+ * v1.2.0 -- 2026-07-21 -- getConversation(…, all): default loads the newest 50 (server page); all=true
17
+ * walks every page (per_page=200) so long threads show their FULL history instead of only the last 50.
16
18
  */
17
19
  import { api, apiGet } from '/js/api.js';
18
20
 
@@ -54,10 +56,30 @@ export async function listConversations() {
54
56
  return r?.data?.conversations || [];
55
57
  }
56
58
 
57
- export async function getConversation(conversationId, viaAgent) {
58
- const q = viaAgent ? `?agent=${enc(viaAgent)}` : '';
59
- const r = await apiGet(`/v1/messages/conversations/${enc(conversationId)}${q}`);
60
- return r?.data?.messages || [];
59
+ /**
60
+ * Fetch a conversation thread. Default = the newest page (server default 50). Pass all=true to load the
61
+ * ENTIRE history: it walks every page (per_page=200) so long threads are never truncated — no message is
62
+ * hidden, only paged. Returns the messages array newest-first (the caller reverses for chat display);
63
+ * dedupes by id so a message arriving mid-walk can't double-render.
64
+ */
65
+ export async function getConversation(conversationId, viaAgent, all = false) {
66
+ const base = `/v1/messages/conversations/${enc(conversationId)}`;
67
+ const agent = viaAgent ? `&agent=${enc(viaAgent)}` : '';
68
+ const perPage = all ? 200 : 50;
69
+ const first = await apiGet(`${base}?per_page=${perPage}&page=1${agent}`);
70
+ const data = first?.data || {};
71
+ let messages = data.messages || [];
72
+ const total = Number(data.total) || messages.length;
73
+ if (all && total > messages.length) {
74
+ const pages = Math.ceil(total / perPage);
75
+ for (let p = 2; p <= pages; p++) {
76
+ const r = await apiGet(`${base}?per_page=${perPage}&page=${p}${agent}`);
77
+ messages = messages.concat(r?.data?.messages || []);
78
+ }
79
+ const seen = new Set();
80
+ messages = messages.filter(m => m && m.id && !seen.has(m.id) && seen.add(m.id));
81
+ }
82
+ return messages;
61
83
  }
62
84
 
63
85
  export async function markConversationRead(conversationId) {
@@ -11,6 +11,9 @@
11
11
  * - distributeNote(text) — POST /v1/librarian/distribute (split into placed chunks)
12
12
  * - materializeDocument(plan) — resolve/create org → ws → document space → draft→publish doc → drop source
13
13
  * - distributeChunks(chunks, sourceKey, onProgress) — materialize each chunk to its home
14
+ * - parkMessageToNotebook(msg) — park ONE inbox message for later processing
15
+ * - parkConversationToNotebook({conv,thread,peerName,summary,images}) — park a WHOLE thread (transcript +
16
+ * inline image embeds, optional AI/pasted summary) as one entry, ready for classify/distribute
14
17
  * - getNotebookSettings/saveNotebookSettings — the per-owner trust toggles (notebook.settings)
15
18
  * @version-history
16
19
  * v1.0.0 — 2026-06-19 — Initial: classify + materialize-document orchestration (slice B).
@@ -21,10 +24,13 @@
21
24
  * v1.3.0 — 2026-06-23 — materializeDocument now writes via writeDraft + publishDraft (was a raw
22
25
  * `.latest` memory write) so notebook documents get version history and appear in the workspace
23
26
  * activity log/heatmap — the document-path counterpart to the v1.2.0 record fix.
27
+ * v1.4.0 — 2026-07-19 — parkConversationToNotebook: capture a whole inbox thread (transcript + inline
28
+ * image embeds, optional summary) as one notebook entry for the "→ Notebook" conversation capture.
24
29
  */
25
30
  import { api, apiPost } from '/js/api.js';
26
31
  import { createMemory, getMemory, deleteMemory } from '/js/services/memory.js';
27
32
  import { createOrganism, saveManifest, listWorkspaces, saveWorkspaceRegistry, wsRoot, writeDraft, publishDraft } from '/js/services/organisms.js';
33
+ import { handleOf } from '/js/services/messages-ai-prompts.js';
28
34
 
29
35
  const DOC_SPACE = 'pages';
30
36
 
@@ -82,6 +88,76 @@ export async function parkMessageToNotebook(msg, opts = {}) {
82
88
  return { key };
83
89
  }
84
90
 
91
+ /** A short, stable UTC timestamp for a transcript line (locale-independent so the note is reproducible). */
92
+ function nbStamp(iso) {
93
+ if (!iso) return '';
94
+ const d = new Date(iso);
95
+ return Number.isFinite(d.getTime()) ? d.toISOString().replace('T', ' ').slice(0, 16) + ' UTC' : '';
96
+ }
97
+
98
+ /** Render a whole thread as a Markdown transcript, embedding each message's image attachments inline
99
+ * (by url) so they survive into the materialized workspace document. `images` groups by messageId. */
100
+ function renderConversationMarkdown(thread, peerGhii, peerName, images) {
101
+ const them = peerName || handleOf(peerGhii);
102
+ const byMsg = {};
103
+ for (const im of (images || [])) (byMsg[im.messageId] || (byMsg[im.messageId] = [])).push(im);
104
+ return (thread || []).map((m) => {
105
+ const who = m.direction === 'outbound' ? 'Me' : them;
106
+ const when = nbStamp(m.createdAt);
107
+ const body = String(m.body || '').trim();
108
+ const imgs = (byMsg[m.id] || []).map((im) => `\n\n![${im.name || 'image'}](${im.url})`).join('');
109
+ return `**${who}**${when ? ` — ${when}` : ''}\n\n${body}${imgs}`;
110
+ }).join('\n\n---\n\n');
111
+ }
112
+
113
+ /** Pull an H1/first line out of a summary to use as the note title, or null. */
114
+ function summaryTitle(summary) {
115
+ const first = String(summary || '').split('\n').map((l) => l.trim()).find(Boolean);
116
+ if (!first) return null;
117
+ return first.replace(/^#+\s*/, '').slice(0, 120) || null;
118
+ }
119
+
120
+ /**
121
+ * Park a WHOLE conversation into the notebook as one entry (text + inline image embeds), ready for the
122
+ * existing classify/distribute enrichment. The three inbox capture modes all land here:
123
+ * - a server-side / pasted AI summary → stored above a "Full transcript" section, or
124
+ * - raw (no summary) → just the transcript.
125
+ * @param {object} [args]
126
+ * @param {{ conversationId?:string, peerGhii?:string, subject?:string }} [args.conv]
127
+ * @param {Array} [args.thread] The loaded thread messages.
128
+ * @param {string} [args.peerName]
129
+ * @param {string} [args.summary] An AI (server or pasted) summary markdown; omit for a raw capture.
130
+ * @param {Array<{messageId:string,id:string,name?:string,url:string}>} [args.images] Image attachments.
131
+ */
132
+ export async function parkConversationToNotebook({ conv, thread, peerName, summary, images } = {}) {
133
+ const peerGhii = conv?.peerGhii || '';
134
+ const transcriptMd = renderConversationMarkdown(thread, peerGhii, peerName, images);
135
+ const sum = (summary || '').trim();
136
+ const text = sum
137
+ ? `${sum}\n\n---\n\n## Full transcript\n\n${transcriptMd}`
138
+ : transcriptMd;
139
+ const title = summaryTitle(sum) || `Conversation with ${peerName || handleOf(peerGhii)}`;
140
+ const key = 'notebook.inbox.' + Date.now();
141
+ const value = {
142
+ text,
143
+ title,
144
+ capturedAt: new Date().toISOString(),
145
+ source: {
146
+ kind: 'conversation',
147
+ conversationId: conv?.conversationId,
148
+ peerGhii,
149
+ originNodeId: (peerGhii.split('@')[1] || ''),
150
+ messageCount: (thread || []).length,
151
+ attachments: (images || []).map((im) => ({ messageId: im.messageId, id: im.id, name: im.name, url: im.url })),
152
+ },
153
+ // A summarized thread is a knowledge capture, not an unanswered message — it owes no reply.
154
+ trackedResponseIntent: { owes: false, mode: 'approve' },
155
+ };
156
+ const resp = await createMemory(key, value, 'private');
157
+ if (resp?.ok === false) throw new Error(resp.error?.message || 'Could not park conversation to notebook');
158
+ return { key };
159
+ }
160
+
85
161
  /** The per-owner notebook trust toggles ({ autoDetectIntent, autoRunPlan, autoDistribute }). */
86
162
  export async function getNotebookSettings() {
87
163
  try { const r = await getMemory('notebook.settings'); return (r?.data?.value) || {}; }