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,602 @@
1
+ // GENERATED FILE — do not edit directly. Source: src/static/sdk-libs/markdown/ (+ _core/).
2
+ // Rebuild: pnpm build:sdk · Served at /v1/libs/aimeat-markdown.js (with a per-node config prelude).
3
+ "use strict";
4
+ (() => {
5
+ // src/static/sdk-libs/_core/config.js
6
+ function cfg() {
7
+ return window.__AIMEAT_SDK_CFG__ || { nodeId: "", baseUrl: "" };
8
+ }
9
+ function resolveNodeUrl() {
10
+ const meta = document.querySelector('meta[name="aimeat-node"]');
11
+ if (meta) return (meta.getAttribute("content") || "").replace(/\/$/, "");
12
+ if (location.protocol === "http:" || location.protocol === "https:") return location.origin;
13
+ return cfg().baseUrl;
14
+ }
15
+ var NODE_URL = resolveNodeUrl();
16
+ var APEX_URL = cfg().baseUrl;
17
+ var NODE_ID = cfg().nodeId;
18
+ var HEARTBEAT_MS = cfg().heartbeatMs || 3e4;
19
+
20
+ // src/static/sdk-libs/_core/namespace.js
21
+ function namespace() {
22
+ if (!window.AIMEAT) window.AIMEAT = {};
23
+ return window.AIMEAT;
24
+ }
25
+ function attach(key, value) {
26
+ const ns = namespace();
27
+ ns[key] = value;
28
+ return ns;
29
+ }
30
+
31
+ // src/static/sdk-libs/markdown/index.js
32
+ var BT = String.fromCharCode(96);
33
+ var SAFE = /^(https?:|mailto:)/i;
34
+ var SAFE_IMG = /^(https?:|blob:)/i;
35
+ function sanitizeHref(url) {
36
+ if (typeof url !== "string") return null;
37
+ var t = url.trim();
38
+ if (!/^[a-z][a-z0-9+.-]*:/i.test(t)) return t;
39
+ return SAFE.test(t) ? t : null;
40
+ }
41
+ function sanitizeImgSrc(url) {
42
+ if (typeof url !== "string") return null;
43
+ var t = url.trim();
44
+ if (!/^[a-z][a-z0-9+.-]*:/i.test(t)) return t;
45
+ return SAFE_IMG.test(t) ? t : null;
46
+ }
47
+ function txt(s) {
48
+ return document.createTextNode(s == null ? "" : String(s));
49
+ }
50
+ function append(node, kids) {
51
+ if (kids == null) return;
52
+ if (!Array.isArray(kids)) kids = [kids];
53
+ for (var i = 0; i < kids.length; i++) {
54
+ var c = kids[i];
55
+ if (c == null) continue;
56
+ node.appendChild(typeof c === "string" ? txt(c) : c);
57
+ }
58
+ }
59
+ function el(tag, attrs, kids) {
60
+ var n = document.createElement(tag);
61
+ if (attrs) for (var k in attrs) {
62
+ if (attrs[k] != null) n.setAttribute(k, attrs[k]);
63
+ }
64
+ append(n, kids);
65
+ return n;
66
+ }
67
+ function parseInline(text) {
68
+ var out = [], i = 0, buf = "";
69
+ function flush() {
70
+ if (buf) {
71
+ out.push(buf);
72
+ buf = "";
73
+ }
74
+ }
75
+ while (i < text.length) {
76
+ var c = text[i];
77
+ if (c === "!" && text[i + 1] === "[") {
78
+ var close = text.indexOf("]", i + 2);
79
+ if (close > i && text[close + 1] === "(") {
80
+ var paren = text.indexOf(")", close + 2);
81
+ if (paren > close) {
82
+ var src = sanitizeImgSrc(text.slice(close + 2, paren));
83
+ flush();
84
+ if (src) out.push(el("img", { src, alt: text.slice(i + 2, close), "class": "md-img", loading: "lazy" }));
85
+ i = paren + 1;
86
+ continue;
87
+ }
88
+ }
89
+ }
90
+ if (c === BT) {
91
+ var endc = text.indexOf(BT, i + 1);
92
+ if (endc > i) {
93
+ flush();
94
+ out.push(el("code", { "class": "md-code" }, text.slice(i + 1, endc)));
95
+ i = endc + 1;
96
+ continue;
97
+ }
98
+ }
99
+ if (c === "[") {
100
+ var lc = text.indexOf("]", i + 1);
101
+ if (lc > i && text[lc + 1] === "(") {
102
+ var lp = text.indexOf(")", lc + 2);
103
+ if (lp > lc) {
104
+ var href = sanitizeHref(text.slice(lc + 2, lp));
105
+ var label = parseInline(text.slice(i + 1, lc));
106
+ flush();
107
+ out.push(href ? el("a", { href, target: "_blank", rel: "noopener noreferrer nofollow" }, label) : el("span", null, label));
108
+ i = lp + 1;
109
+ continue;
110
+ }
111
+ }
112
+ }
113
+ if (c === "*" && text[i + 1] === "*") {
114
+ var be = text.indexOf("**", i + 2);
115
+ if (be > i) {
116
+ flush();
117
+ out.push(el("strong", null, parseInline(text.slice(i + 2, be))));
118
+ i = be + 2;
119
+ continue;
120
+ }
121
+ }
122
+ if (c === "*") {
123
+ var ie = text.indexOf("*", i + 1);
124
+ if (ie > i) {
125
+ flush();
126
+ out.push(el("em", null, parseInline(text.slice(i + 1, ie))));
127
+ i = ie + 1;
128
+ continue;
129
+ }
130
+ }
131
+ if (c === "_" && (i === 0 || !/\w/.test(text[i - 1])) && text[i + 1] && text[i + 1] !== " ") {
132
+ var j = i + 1;
133
+ while ((j = text.indexOf("_", j)) >= 0) {
134
+ var after = text[j + 1];
135
+ if (text[j - 1] !== " " && (after === void 0 || !/\w/.test(after))) break;
136
+ j++;
137
+ }
138
+ if (j >= 0) {
139
+ flush();
140
+ out.push(el("em", null, parseInline(text.slice(i + 1, j))));
141
+ i = j + 1;
142
+ continue;
143
+ }
144
+ }
145
+ buf += c;
146
+ i++;
147
+ }
148
+ flush();
149
+ return out;
150
+ }
151
+ function tableRow(line) {
152
+ var cells = line.trim().split("|");
153
+ if (cells.length && cells[0] === "") cells = cells.slice(1);
154
+ if (cells.length && cells[cells.length - 1] === "") cells = cells.slice(0, -1);
155
+ return cells.map(function(c) {
156
+ return c.trim();
157
+ });
158
+ }
159
+ function isDivider(line) {
160
+ return /^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)*\|?\s*$/.test(line);
161
+ }
162
+ function fenceInfo(line) {
163
+ var t = line.replace(/^\s+/, ""), ch = t.charAt(0);
164
+ if ((ch === BT || ch === "~") && t.slice(0, 3) === ch + ch + ch) return { marker: ch, lang: t.slice(3).trim().toLowerCase() };
165
+ return null;
166
+ }
167
+ function isFenceLine(line) {
168
+ return fenceInfo(line) !== null;
169
+ }
170
+ function isHeading(line) {
171
+ return /^#{1,6}\s/.test(line);
172
+ }
173
+ function isQuote(line) {
174
+ return /^\s*>/.test(line);
175
+ }
176
+ function isHr(line) {
177
+ return /^\s*([-*_])\1{2,}\s*$/.test(line);
178
+ }
179
+ function isUl(line) {
180
+ return /^(\s*)([-*+])\s+/.test(line);
181
+ }
182
+ function isOl(line) {
183
+ return /^(\s*)(\d+)\.\s+/.test(line);
184
+ }
185
+ function isBlockStart(line) {
186
+ return isFenceLine(line) || isHeading(line) || isQuote(line) || isUl(line) || isOl(line);
187
+ }
188
+ function parseBlocks(src) {
189
+ var lines = src.replace(/\r\n?/g, "\n").split("\n");
190
+ var blocks = [], i = 0;
191
+ while (i < lines.length) {
192
+ var line = lines[i];
193
+ if (line.trim() === "") {
194
+ i++;
195
+ continue;
196
+ }
197
+ var fence = fenceInfo(line);
198
+ if (fence) {
199
+ var code = [];
200
+ i++;
201
+ while (i < lines.length && lines[i].trim().split("").join("") !== "" && !(lines[i].trim().length >= 3 && lines[i].trim().split("").every(function(x) {
202
+ return x === fence.marker;
203
+ }))) {
204
+ code.push(lines[i]);
205
+ i++;
206
+ }
207
+ i++;
208
+ if (fence.lang === "aimeat-memory") {
209
+ blocks.push(el("pre", { "class": "md-pre md-mem-src" }, el("code", { "class": "md-code" }, code.join("\n"))));
210
+ } else {
211
+ blocks.push(el("pre", { "class": "md-pre" }, el("code", { "class": "md-code" }, code.join("\n"))));
212
+ }
213
+ continue;
214
+ }
215
+ var h = line.match(/^(#{1,6})\s+(.*)$/);
216
+ if (h) {
217
+ blocks.push(el("h" + h[1].length, null, parseInline(h[2].trim())));
218
+ i++;
219
+ continue;
220
+ }
221
+ if (isQuote(line)) {
222
+ var quoted = [];
223
+ while (i < lines.length && isQuote(lines[i])) {
224
+ quoted.push(lines[i].replace(/^\s*>\s?/, ""));
225
+ i++;
226
+ }
227
+ blocks.push(el("blockquote", null, parseBlocks(quoted.join("\n"))));
228
+ continue;
229
+ }
230
+ if (line.indexOf("|") !== -1 && i + 1 < lines.length && isDivider(lines[i + 1])) {
231
+ var header = tableRow(line);
232
+ i += 2;
233
+ var rows = [];
234
+ while (i < lines.length && lines[i].indexOf("|") !== -1 && lines[i].trim() !== "") {
235
+ rows.push(tableRow(lines[i]));
236
+ i++;
237
+ }
238
+ var thead = el("thead", null, el("tr", null, header.map(function(c) {
239
+ return el("th", null, parseInline(c));
240
+ })));
241
+ var tbody = el("tbody", null, rows.map(function(r) {
242
+ return el("tr", null, r.map(function(c) {
243
+ return el("td", null, parseInline(c));
244
+ }));
245
+ }));
246
+ blocks.push(el("table", null, [thead, tbody]));
247
+ continue;
248
+ }
249
+ if (isHr(line)) {
250
+ blocks.push(el("hr", { "class": "md-hr" }));
251
+ i++;
252
+ continue;
253
+ }
254
+ if (isUl(line) || isOl(line)) {
255
+ var ordered = isOl(line), items = [];
256
+ while (i < lines.length && (ordered ? isOl(lines[i]) : isUl(lines[i]))) {
257
+ var m = lines[i].match(ordered ? /^(\s*)(\d+)\.\s+(.*)$/ : /^(\s*)([-*+])\s+(.*)$/);
258
+ var parts = [m[3]];
259
+ i++;
260
+ while (i < lines.length && lines[i].trim() !== "" && !isUl(lines[i]) && !isOl(lines[i]) && !isHeading(lines[i]) && !isFenceLine(lines[i]) && !isQuote(lines[i]) && !isHr(lines[i])) {
261
+ parts.push(lines[i].trim());
262
+ i++;
263
+ }
264
+ items.push(el("li", null, parseInline(parts.join(" "))));
265
+ }
266
+ blocks.push(el(ordered ? "ol" : "ul", null, items));
267
+ continue;
268
+ }
269
+ var para = [];
270
+ while (i < lines.length && lines[i].trim() !== "" && !isBlockStart(lines[i])) {
271
+ para.push(lines[i]);
272
+ i++;
273
+ }
274
+ blocks.push(el("p", null, parseInline(para.join(" "))));
275
+ }
276
+ return blocks;
277
+ }
278
+ function render(text, target) {
279
+ var div = el("div", { "class": "md-body" }, parseBlocks(typeof text === "string" ? text : ""));
280
+ if (target) {
281
+ var t = typeof target === "string" ? document.querySelector(target) : target;
282
+ if (t) {
283
+ t.innerHTML = "";
284
+ t.appendChild(div);
285
+ }
286
+ }
287
+ return div;
288
+ }
289
+ function renderToString(text) {
290
+ return render(text).outerHTML;
291
+ }
292
+ var RICH_CSS = '.md-body li.task-list-item{list-style:none;margin-left:-1.2rem;}.md-body li.task-list-item input[type=checkbox]{margin-right:.45rem;vertical-align:-1px;}.md-body .footnotes{font-size:.85rem;opacity:.75;}.md-body pre.md-mermaid{position:relative;}.md-body pre.md-mermaid::after{content:"mermaid";position:absolute;top:.35rem;right:.55rem;font-size:.62rem;opacity:.6;}.md-body pre.md-mermaid.md-mermaid-err::after{content:"mermaid — syntax error, showing source";color:#e06c75;opacity:1;}.md-body .md-mermaid-svg{margin:.8rem 0;overflow-x:auto;text-align:center;}.md-body .md-mermaid-svg svg{max-width:100%;height:auto;}.md-body .hljs-comment,.md-body .hljs-quote{color:#7d8799;font-style:italic;}.md-body .hljs-keyword,.md-body .hljs-selector-tag,.md-body .hljs-doctag{color:#a626a4;}.md-body .hljs-string,.md-body .hljs-regexp,.md-body .hljs-addition{color:#50a14f;}.md-body .hljs-number,.md-body .hljs-literal,.md-body .hljs-attr{color:#986801;}.md-body .hljs-title,.md-body .hljs-name,.md-body .hljs-section{color:#4078f2;}.md-body .hljs-built_in,.md-body .hljs-type{color:#c18401;}.md-body .hljs-symbol,.md-body .hljs-bullet,.md-body .hljs-meta,.md-body .hljs-selector-id,.md-body .hljs-variable,.md-body .hljs-template-variable{color:#0184bb;}.md-body .hljs-deletion{color:#ca1243;}.md-body .hljs-emphasis{font-style:italic;}.md-body .hljs-strong{font-weight:700;}[data-theme="dark"] .md-body .hljs-comment,[data-theme="dark"] .md-body .hljs-quote{color:#7f848e;}[data-theme="dark"] .md-body .hljs-keyword,[data-theme="dark"] .md-body .hljs-selector-tag,[data-theme="dark"] .md-body .hljs-doctag{color:#c678dd;}[data-theme="dark"] .md-body .hljs-string,[data-theme="dark"] .md-body .hljs-regexp,[data-theme="dark"] .md-body .hljs-addition{color:#98c379;}[data-theme="dark"] .md-body .hljs-number,[data-theme="dark"] .md-body .hljs-literal,[data-theme="dark"] .md-body .hljs-attr{color:#d19a66;}[data-theme="dark"] .md-body .hljs-title,[data-theme="dark"] .md-body .hljs-name,[data-theme="dark"] .md-body .hljs-section{color:#61afef;}[data-theme="dark"] .md-body .hljs-built_in,[data-theme="dark"] .md-body .hljs-type{color:#e5c07b;}[data-theme="dark"] .md-body .hljs-symbol,[data-theme="dark"] .md-body .hljs-bullet,[data-theme="dark"] .md-body .hljs-meta,[data-theme="dark"] .md-body .hljs-selector-id,[data-theme="dark"] .md-body .hljs-variable,[data-theme="dark"] .md-body .hljs-template-variable{color:#56b6c2;}[data-theme="dark"] .md-body .hljs-deletion{color:#e06c75;}.md-body .md-mem{border:1px solid var(--color-base-300,#d8dde4);border-radius:8px;padding:.5em .8em .7em;margin:1em 0;background:var(--color-base-200,#f4f5f7);}[data-theme="dark"] .md-body .md-mem{border-color:var(--color-base-300,#3a3a3a);background:var(--color-base-200,#1c1c1c);}.md-body .md-mem-head{display:flex;align-items:center;gap:.6em;font-size:.78rem;opacity:.75;margin-bottom:.35em;}.md-body .md-mem-title{font-family:ui-monospace,Menlo,Consolas,monospace;overflow-wrap:anywhere;flex:1;}.md-body .md-mem-refresh{border:none;background:transparent;color:inherit;cursor:pointer;border-radius:4px;padding:0 .3em;font-size:.9rem;}.md-body .md-mem table{margin:.3em 0 0;}.md-body .md-mem-note{opacity:.75;font-size:.88rem;padding:.2em 0;}.md-body .md-mem-err{color:#e06c75;opacity:1;}.md-body .md-mem-more{opacity:.7;font-size:.78rem;margin-top:.3em;}.md-body .md-mem-value{white-space:pre-wrap;overflow-wrap:anywhere;}';
293
+ function injectRichCss() {
294
+ if (document.getElementById("aimeat-md-rich-styles")) return;
295
+ var s = document.createElement("style");
296
+ s.id = "aimeat-md-rich-styles";
297
+ s.textContent = RICH_CSS;
298
+ (document.head || document.documentElement).appendChild(s);
299
+ }
300
+ var _scriptP = {};
301
+ function loadScript(src) {
302
+ if (_scriptP[src]) return _scriptP[src];
303
+ _scriptP[src] = new Promise(function(resolve, reject) {
304
+ var s = document.createElement("script");
305
+ s.src = src;
306
+ s.onload = function() {
307
+ resolve(void 0);
308
+ };
309
+ s.onerror = function() {
310
+ delete _scriptP[src];
311
+ reject(new Error("failed to load " + src));
312
+ };
313
+ document.head.appendChild(s);
314
+ });
315
+ return _scriptP[src];
316
+ }
317
+ var _richP = null;
318
+ function ensureRich() {
319
+ if (window.markdownit && window.DOMPurify) return Promise.resolve();
320
+ if (_richP) return _richP;
321
+ _richP = loadScript("https://cdn.jsdelivr.net/npm/markdown-it@14/dist/markdown-it.min.js").then(function() {
322
+ return Promise.all([
323
+ loadScript("https://cdn.jsdelivr.net/npm/markdown-it-task-lists@2/dist/markdown-it-task-lists.min.js").catch(function() {
324
+ }),
325
+ loadScript("https://cdn.jsdelivr.net/npm/markdown-it-footnote@4/dist/markdown-it-footnote.min.js").catch(function() {
326
+ }),
327
+ loadScript("https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"),
328
+ loadScript("https://cdn.jsdelivr.net/npm/@highlightjs/cdn-assets@11/highlight.min.js").catch(function() {
329
+ })
330
+ ]);
331
+ }).catch(function(e) {
332
+ _richP = null;
333
+ throw e;
334
+ });
335
+ return _richP;
336
+ }
337
+ var _mermaidP = null;
338
+ var _mmSeq = 0;
339
+ function loadMermaid() {
340
+ if (window.mermaid) return Promise.resolve(window.mermaid);
341
+ if (_mermaidP) return _mermaidP;
342
+ _mermaidP = new Promise(function(resolve, reject) {
343
+ var s = document.createElement("script");
344
+ s.src = NODE_URL + "/lib/mermaid/mermaid.min.js";
345
+ s.onload = function() {
346
+ try {
347
+ window.mermaid.initialize({
348
+ startOnLoad: false,
349
+ securityLevel: "strict",
350
+ flowchart: { htmlLabels: false },
351
+ suppressErrorRendering: true,
352
+ // parse errors must NOT inject mermaid's error bomb into <body>
353
+ theme: document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "neutral"
354
+ });
355
+ resolve(window.mermaid);
356
+ } catch (e) {
357
+ reject(e);
358
+ }
359
+ };
360
+ s.onerror = function() {
361
+ _mermaidP = null;
362
+ reject(new Error("mermaid load failed"));
363
+ };
364
+ document.head.appendChild(s);
365
+ });
366
+ return _mermaidP;
367
+ }
368
+ function renderMermaids(container) {
369
+ var nodes = container.querySelectorAll("pre.md-mermaid");
370
+ if (!nodes.length) return;
371
+ loadMermaid().then(function(mm) {
372
+ nodes.forEach(function(preEl) {
373
+ mm.render("aimd-" + _mmSeq++, preEl.textContent || "").then(function(r) {
374
+ if (!preEl.isConnected) return;
375
+ var d = document.createElement("div");
376
+ d.className = "md-mermaid-svg";
377
+ d.innerHTML = r.svg;
378
+ preEl.replaceWith(d);
379
+ }).catch(function() {
380
+ preEl.classList.add("md-mermaid-err");
381
+ });
382
+ });
383
+ }).catch(function() {
384
+ });
385
+ }
386
+ function parseEmbedSpec(text) {
387
+ var spec = {};
388
+ String(text || "").split("\n").forEach(function(line) {
389
+ var m = line.match(/^\s*([a-zA-Z_-]+)\s*[:=]\s*(.+?)\s*$/);
390
+ if (!m) return;
391
+ var k = m[1].toLowerCase();
392
+ if (k === "fields") spec.fields = m[2].split(",").map(function(s) {
393
+ return s.trim();
394
+ }).filter(Boolean);
395
+ else spec[k] = m[2];
396
+ });
397
+ return spec;
398
+ }
399
+ function memCellText(v) {
400
+ if (v == null) return "—";
401
+ var s = typeof v === "object" ? JSON.stringify(v) : String(v);
402
+ return s.length > 160 ? s.slice(0, 160) + "…" : s;
403
+ }
404
+ function isPlainObj(v) {
405
+ return v !== null && typeof v === "object" && !Array.isArray(v);
406
+ }
407
+ function buildMemBody(spec, value) {
408
+ var view = (spec.view || "auto").toLowerCase();
409
+ if (view === "auto") {
410
+ if (Array.isArray(value)) view = value.length && value.every(isPlainObj) ? "table" : "list";
411
+ else if (isPlainObj(value)) view = "props";
412
+ else view = "value";
413
+ }
414
+ if (view === "json") return el("pre", { "class": "md-pre" }, el("code", { "class": "md-code" }, JSON.stringify(value, null, 2)));
415
+ if (view === "table") {
416
+ var rows = (Array.isArray(value) ? value : []).filter(isPlainObj);
417
+ var cols = spec.fields && spec.fields.length ? spec.fields : [];
418
+ if (!cols.length) {
419
+ rows.forEach(function(r) {
420
+ Object.keys(r).forEach(function(k) {
421
+ if (cols.indexOf(k) < 0 && cols.length < 10) cols.push(k);
422
+ });
423
+ });
424
+ }
425
+ var table = el("table", null, [
426
+ el("thead", null, el("tr", null, cols.map(function(c) {
427
+ return el("th", null, c);
428
+ }))),
429
+ el("tbody", null, rows.slice(0, 200).map(function(r) {
430
+ return el("tr", null, cols.map(function(c) {
431
+ return el("td", null, memCellText(r[c]));
432
+ }));
433
+ }))
434
+ ]);
435
+ var out = [table];
436
+ if (rows.length > 200) out.push(el("div", { "class": "md-mem-more" }, "… " + (rows.length - 200) + " more rows"));
437
+ return el("div", null, out);
438
+ }
439
+ if (view === "props") {
440
+ var obj = isPlainObj(value) ? value : {};
441
+ return el("table", null, el("tbody", null, Object.keys(obj).map(function(k) {
442
+ return el("tr", null, [el("th", null, k), el("td", null, memCellText(obj[k]))]);
443
+ })));
444
+ }
445
+ if (view === "list") {
446
+ var arr = Array.isArray(value) ? value : [value];
447
+ return el("ul", null, arr.slice(0, 200).map(function(v) {
448
+ return el("li", null, memCellText(v));
449
+ }));
450
+ }
451
+ return el("div", { "class": "md-mem-value" }, memCellText(value));
452
+ }
453
+ function renderOneEmbed(preEl) {
454
+ var spec = parseEmbedSpec(preEl.textContent || "");
455
+ var box = el("div", { "class": "md-mem" });
456
+ var title = el("span", { "class": "md-mem-title" }, spec.title || spec.key || "aimeat-memory");
457
+ var refresh = el("button", { type: "button", "class": "md-mem-refresh", title: "Refresh" }, "↻");
458
+ box.appendChild(el("div", { "class": "md-mem-head" }, [title, refresh]));
459
+ var body = el("div", { "class": "md-mem-note" }, "Loading…");
460
+ box.appendChild(body);
461
+ function setBody(node) {
462
+ box.replaceChild(node, body);
463
+ body = node;
464
+ }
465
+ function note(msg, err) {
466
+ setBody(el("div", { "class": "md-mem-note" + (err ? " md-mem-err" : "") }, msg));
467
+ }
468
+ async function load() {
469
+ if (!spec.key) {
470
+ note("The block declares no key", true);
471
+ return;
472
+ }
473
+ try {
474
+ var envl;
475
+ if (spec.owner) {
476
+ var r = await fetch(NODE_URL + "/v1/memory/" + encodeURIComponent(spec.owner) + "/" + encodeURIComponent(spec.key));
477
+ envl = await r.json();
478
+ } else {
479
+ var auth = window.AIMEAT && window.AIMEAT.auth;
480
+ var s = auth && auth.getSession && auth.getSession();
481
+ if (!s || !s.jwt) {
482
+ note("Sign in to view this data", true);
483
+ return;
484
+ }
485
+ envl = await s.fetch("/v1/memory/" + encodeURIComponent(spec.key) + "?owner_scope=true");
486
+ if (envl && typeof envl.json === "function") envl = await envl.json();
487
+ }
488
+ if (!envl || envl.ok === false) {
489
+ var code = envl && envl.error && envl.error.code || "";
490
+ if (code === "NOT_FOUND") note("Key not found", true);
491
+ else if (code === "AUTH_REQUIRED") note("Sign in to view this data", true);
492
+ else if (/SCOPE|FORBIDDEN|CONSENT|ACCESS|DENIED/.test(code)) note("🔒 No permission to read this key", true);
493
+ else note("Could not load (" + (envl && envl.error && envl.error.message || code || "?") + ")", true);
494
+ return;
495
+ }
496
+ var value = envl.data ? envl.data.value : void 0;
497
+ if (value == null) {
498
+ note("(empty)");
499
+ return;
500
+ }
501
+ setBody(buildMemBody(spec, value));
502
+ } catch (e) {
503
+ note("Could not load (" + (e && e.message || "?") + ")", true);
504
+ }
505
+ }
506
+ refresh.addEventListener("click", function() {
507
+ note("Loading…");
508
+ load();
509
+ });
510
+ preEl.replaceWith(box);
511
+ load();
512
+ }
513
+ function renderMemoryEmbeds(container) {
514
+ container.querySelectorAll("pre.md-mem-src").forEach(function(p) {
515
+ renderOneEmbed(p);
516
+ });
517
+ }
518
+ var _mdit = null;
519
+ function getMdIt() {
520
+ if (_mdit) return _mdit;
521
+ if (!window.markdownit) return null;
522
+ var m = window.markdownit({
523
+ html: false,
524
+ linkify: true,
525
+ highlight: function(code, lang) {
526
+ if (window.hljs && code.length < 3e4) {
527
+ try {
528
+ if (lang && window.hljs.getLanguage(lang)) return window.hljs.highlight(code, { language: lang, ignoreIllegals: true }).value;
529
+ } catch {
530
+ }
531
+ }
532
+ return "";
533
+ }
534
+ });
535
+ try {
536
+ if (window.markdownitTaskLists) m.use(window.markdownitTaskLists);
537
+ } catch {
538
+ }
539
+ try {
540
+ if (window.markdownitFootnote) m.use(window.markdownitFootnote);
541
+ } catch {
542
+ }
543
+ var defFence = m.renderer.rules.fence || function(t, i, o, e, s) {
544
+ return s.renderToken(t, i, o);
545
+ };
546
+ m.renderer.rules.fence = function(tokens, idx, options, env, self) {
547
+ var t = tokens[idx];
548
+ var info = String(t.info || "").trim().toLowerCase();
549
+ if (info === "mermaid") {
550
+ return '<pre class="md-mermaid">' + m.utils.escapeHtml(t.content) + "</pre>\n";
551
+ }
552
+ if (info === "aimeat-memory") {
553
+ return '<pre class="md-mem-src">' + m.utils.escapeHtml(t.content) + "</pre>\n";
554
+ }
555
+ return defFence(tokens, idx, options, env, self);
556
+ };
557
+ _mdit = m;
558
+ return m;
559
+ }
560
+ async function renderRich(text, target) {
561
+ text = typeof text === "string" ? text : "";
562
+ var div;
563
+ try {
564
+ await ensureRich();
565
+ injectRichCss();
566
+ var m = getMdIt();
567
+ if (!m || !window.DOMPurify) throw new Error("rich pipeline unavailable");
568
+ div = el("div", { "class": "md-body" });
569
+ div.innerHTML = window.DOMPurify.sanitize(m.render(text));
570
+ div.querySelectorAll("a[href]").forEach(function(a) {
571
+ a.setAttribute("target", "_blank");
572
+ a.setAttribute("rel", "noopener noreferrer nofollow");
573
+ });
574
+ div.querySelectorAll("input[type=checkbox]").forEach(function(cb) {
575
+ cb.disabled = true;
576
+ });
577
+ renderMermaids(div);
578
+ } catch {
579
+ div = render(text);
580
+ }
581
+ injectRichCss();
582
+ renderMemoryEmbeds(div);
583
+ if (target) {
584
+ var t = typeof target === "string" ? document.querySelector(target) : target;
585
+ if (t) {
586
+ t.innerHTML = "";
587
+ t.appendChild(div);
588
+ }
589
+ }
590
+ return div;
591
+ }
592
+ var CSS = ".md-body{line-height:1.6;color:var(--color-base-content,#e6e6e6);word-wrap:break-word;}.md-body>:first-child{margin-top:0;}.md-body>:last-child{margin-bottom:0;}.md-body h1,.md-body h2,.md-body h3,.md-body h4,.md-body h5,.md-body h6{font-weight:700;line-height:1.3;margin:1.8em 0 .6em;}.md-body h1{font-size:1.7rem;padding-bottom:.3em;border-bottom:2px solid var(--color-base-300,#3a3a3a);margin-top:.2em;}.md-body h2{font-size:1.32rem;padding-bottom:.25em;border-bottom:1px solid var(--color-base-300,#3a3a3a);}.md-body h3{font-size:1.13rem;}.md-body h4{font-size:1rem;}.md-body h5{font-size:.9rem;}.md-body h6{font-size:.85rem;opacity:.7;}.md-body p{margin:.85em 0;}.md-body ul,.md-body ol{margin:.7em 0;padding-left:1.7em;}.md-body ul{list-style:disc;}.md-body ol{list-style:decimal;}.md-body li{margin:.32em 0;padding-left:.2em;}.md-body a{color:var(--color-primary,#4f9eff);text-decoration:none;}.md-body a:hover{text-decoration:underline;}.md-body strong{font-weight:700;}.md-body em{font-style:italic;}.md-body .md-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85em;background:var(--color-base-200,#1c1c1c);padding:.12em .42em;border-radius:4px;border:1px solid var(--color-base-300,#3a3a3a);}.md-body .md-pre{background:var(--color-base-200,#1c1c1c);border:1px solid var(--color-base-300,#3a3a3a);border-radius:8px;padding:.9em 1.1em;overflow-x:auto;margin:1em 0;line-height:1.5;}.md-body .md-pre .md-code{background:none;border:none;padding:0;font-size:.84rem;white-space:pre;}.md-body blockquote{margin:1em 0;padding:.3em 1.1em;border-left:3px solid var(--color-primary,#4f9eff);background:var(--color-base-200,#1c1c1c);border-radius:0 6px 6px 0;opacity:.85;}.md-body blockquote p{margin:.4em 0;}.md-body table{border-collapse:collapse;margin:1em 0;width:100%;font-size:.9rem;display:block;overflow-x:auto;}.md-body th,.md-body td{border:1px solid var(--color-base-300,#3a3a3a);padding:.45em .75em;text-align:left;vertical-align:top;}.md-body th{background:var(--color-base-200,#1c1c1c);font-weight:600;}.md-body tbody tr:nth-child(even){background:var(--color-base-200,#1c1c1c);}.md-body .md-img{max-width:100%;height:auto;border-radius:6px;margin:.6em 0;}.md-body hr,.md-body .md-hr{border:none;border-top:1px solid var(--color-base-300,#3a3a3a);margin:1.6em 0;}";
593
+ function injectCss() {
594
+ if (document.getElementById("aimeat-md-styles")) return;
595
+ var s = document.createElement("style");
596
+ s.id = "aimeat-md-styles";
597
+ s.textContent = CSS;
598
+ (document.head || document.documentElement).appendChild(s);
599
+ }
600
+ injectCss();
601
+ attach("md", { render, renderToString, renderRich, sanitizeHref, sanitizeImgSrc });
602
+ })();