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,71 @@
1
+ /**
2
+ * @file src/services/exchange-proposals.ts
3
+ * @description Contract RENEGOTIATION for EXCHANGE (TARGET-045). A live contract (metered entitlement) can be
4
+ * renegotiated instead of blindly revoked + re-accepted: either party PROPOSES new terms (a new per-call
5
+ * price and/or a new budget cap + a note — e.g. "the upstream API got pricier"), a message is delivered to
6
+ * the counterparty (Profile > Messages), and when the counterparty ACCEPTS, the old contract is archived to
7
+ * history (with its final spend + period) and a fresh one takes effect at the agreed terms. Mutual consent
8
+ * is the authority: whoever proposes, the OTHER party's acceptance makes the new price legitimate (so a
9
+ * consumer-proposed price only binds once the provider accepts, and vice-versa). Memory-backed (no new
10
+ * table), stored under a system namespace, surfaced to the two parties by the authorised routes.
11
+ * @structure ContractProposal · newProposalId · putProposal · getProposal · listProposalsForOwner ·
12
+ * supersedeWithProposal (archive old + mint new at the agreed terms)
13
+ * @usage
14
+ * const p = await putProposal(storage, {...});
15
+ * const ent = await supersedeWithProposal(storage, proposal, existingEntitlement);
16
+ * @version-history
17
+ * v1.0.0 — 2026-07-21 — Initial renegotiation: propose / accept (supersede + archive) / decline / withdraw.
18
+ */
19
+ import { randomUUID } from 'node:crypto';
20
+ import { archiveEntitlement, createEntitlement, readEntitlementForCall, } from './metered-entitlements.js';
21
+ const NS = 'exchange-proposal';
22
+ const keyOf = (id) => `xprop.${id}`;
23
+ export const ownerOfGaii = (gaii) => gaii.split('@')[0].split('#').pop() ?? gaii;
24
+ export function newProposalId() { return `prop-${randomUUID().slice(0, 12)}`; }
25
+ export async function putProposal(storage, p) {
26
+ const now = new Date().toISOString();
27
+ await storage.setMemory({
28
+ key: keyOf(p.proposalId), ownerGaii: NS, value: p,
29
+ visibility: 'private', tags: ['exchange-proposal'], ttlHours: null, version: 1,
30
+ createdAt: p.createdAt || now, updatedAt: now,
31
+ });
32
+ return p;
33
+ }
34
+ export async function getProposal(storage, id) {
35
+ const rec = await storage.getMemory(NS, keyOf(id));
36
+ return rec ? rec.value : null;
37
+ }
38
+ /** Every proposal an owner is party to (as proposer OR counterparty, either role), newest first. */
39
+ export async function listProposalsForOwner(storage, owner) {
40
+ const { items } = await storage.listAllMemory({ prefix: 'xprop.', limit: 5000 });
41
+ return items.map(r => r.value)
42
+ .filter(v => v && v.proposalId && (v.proposerOwner === owner || v.counterpartyOwner === owner))
43
+ .sort((a, b) => (a.createdAt < b.createdAt ? 1 : -1));
44
+ }
45
+ /**
46
+ * Apply an accepted proposal: archive the live entitlement to history (superseded), then mint a fresh one at
47
+ * the agreed terms under the SAME coordinate. Price change → the contract moves to a straightforward per-call
48
+ * model at the new price (plan renegotiation is a separate re-accept); an unchanged field keeps its value.
49
+ * The new contract starts a fresh meter (spend 0) — the old totals live on in the archived history entry.
50
+ * Returns the new entitlement, or null if the live contract vanished.
51
+ */
52
+ export async function supersedeWithProposal(storage, proposal) {
53
+ const existing = await readEntitlementForCall(storage, proposal.consumerGaii, proposal.ext, proposal.action);
54
+ if (!existing)
55
+ return null;
56
+ await archiveEntitlement(storage, existing, 'superseded', proposal.proposalId);
57
+ const newPrice = proposal.newPricePerCall ?? existing.pricePerCall;
58
+ const priceChanged = proposal.newPricePerCall != null && proposal.newPricePerCall !== existing.pricePerCall;
59
+ const newCap = proposal.newCapUnits != null ? proposal.newCapUnits : existing.budget.capUnits;
60
+ return createEntitlement(storage, {
61
+ consumerGaii: existing.consumerGaii, appId: existing.appId, providerGhii: existing.providerGhii,
62
+ ext: existing.ext, action: existing.action, capabilityLabel: existing.capabilityLabel,
63
+ unit: existing.unit, pricePerCall: newPrice, currency: existing.currency,
64
+ // A price change resets to a clean per-call model; otherwise keep the existing pricing state.
65
+ pricing: priceChanged ? { model: 'per_call' } : existing.pricing,
66
+ capUnits: newCap, rakePercent: existing.rakePercent, contractRef: `proposal:${proposal.proposalId}`,
67
+ surface: existing.surface, escrowParty: existing.escrowParty, createdBy: proposal.counterpartyOwner,
68
+ carrySpend: null, // renegotiation = a fresh meter; the old spend is preserved in the archive
69
+ });
70
+ }
71
+ //# sourceMappingURL=exchange-proposals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-proposals.js","sourceRoot":"","sources":["../../../src/services/exchange-proposals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Storage } from '../storage/interface.js';
2
+ import type { EntitlementUnit } from './metered-entitlements.js';
3
+ /** One unit of agent work under a contract: started by the consumer, delivered + settled by the provider. */
4
+ export interface AgentWork {
5
+ workId: string;
6
+ offeringId: string;
7
+ consumerGaii: string;
8
+ consumerOwner: string;
9
+ providerGhii: string;
10
+ providerOwner: string;
11
+ agentGaii: string;
12
+ taskType: string;
13
+ ext: string;
14
+ action: string;
15
+ input: unknown;
16
+ output: unknown;
17
+ note: string;
18
+ state: 'open' | 'delivered' | 'cancelled';
19
+ unit: EntitlementUnit;
20
+ currency: string | null;
21
+ chargedUnits: number;
22
+ createdAt: string;
23
+ deliveredAt: string | null;
24
+ }
25
+ export declare function newWorkId(): string;
26
+ export declare function putWork(storage: Storage, w: AgentWork): Promise<AgentWork>;
27
+ export declare function getWork(storage: Storage, id: string): Promise<AgentWork | null>;
28
+ export declare function listWorkByConsumer(storage: Storage, owner: string): Promise<AgentWork[]>;
29
+ export declare function listWorkByProvider(storage: Storage, owner: string): Promise<AgentWork[]>;
30
+ //# sourceMappingURL=exchange-work.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-work.d.ts","sourceRoot":"","sources":["../../../src/services/exchange-work.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKjE,6GAA6G;AAC7G,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;IAC1C,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,SAAS,IAAI,MAAM,CAAgD;AAEnF,wBAAsB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAOhF;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAGrF;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAI9F;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAI9F"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @file src/services/exchange-work.ts
3
+ * @description AGENT WORK records for EXCHANGE (TARGET-045 Gap 2) — the async third sellable surface
4
+ * (DATA / SERVICES / AGENT WORK). A consumer holding a metered contract for a provider agent's TASK TYPE
5
+ * STARTS a work item (input); the provider agent DELIVERS (output); the per-task price is metered ON
6
+ * DELIVERY — charge the consumer, credit the provider its cut, route the platform rake, decrement the
7
+ * budget — through the SAME G1 entitlement + G2 settlement as a synchronous call (settlement-rail ⊥
8
+ * pricing-model). Unlike data/app-tool calls (synchronous), the charge fires when the agent delivers, not
9
+ * on a request. Memory-backed under a system namespace; surfaced to the two parties by the authorised routes.
10
+ * @structure AgentWork · newWorkId · putWork · getWork · listWorkByConsumer / ByProvider
11
+ * @usage
12
+ * const w = await putWork(storage, { workId: newWorkId(), offeringId, consumerGaii, ... });
13
+ * // on delivery the exchange route settles via settleMeteredCoordinate against the consumer.
14
+ * @version-history
15
+ * v1.0.0 — 2026-07-21 — Initial agent-work records (start → deliver → settle on delivery); metered per task.
16
+ */
17
+ import { randomUUID } from 'node:crypto';
18
+ const NS = 'exchange-work';
19
+ const keyOf = (id) => `xwork.${id}`;
20
+ export function newWorkId() { return `work-${randomUUID().slice(0, 12)}`; }
21
+ export async function putWork(storage, w) {
22
+ const now = new Date().toISOString();
23
+ await storage.setMemory({
24
+ key: keyOf(w.workId), ownerGaii: NS, value: w, visibility: 'private', tags: ['exchange-work'],
25
+ ttlHours: null, version: 1, createdAt: w.createdAt || now, updatedAt: now,
26
+ });
27
+ return w;
28
+ }
29
+ export async function getWork(storage, id) {
30
+ const rec = await storage.getMemory(NS, keyOf(id));
31
+ return rec ? rec.value : null;
32
+ }
33
+ export async function listWorkByConsumer(storage, owner) {
34
+ const { items } = await storage.listAllMemory({ prefix: 'xwork.', limit: 5000 });
35
+ return items.map(r => r.value).filter(v => v && v.workId && v.consumerOwner === owner)
36
+ .sort((a, b) => (a.createdAt < b.createdAt ? 1 : -1));
37
+ }
38
+ export async function listWorkByProvider(storage, owner) {
39
+ const { items } = await storage.listAllMemory({ prefix: 'xwork.', limit: 5000 });
40
+ return items.map(r => r.value).filter(v => v && v.workId && v.providerOwner === owner)
41
+ .sort((a, b) => (a.createdAt < b.createdAt ? 1 : -1));
42
+ }
43
+ //# sourceMappingURL=exchange-work.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-work.js","sourceRoot":"","sources":["../../../src/services/exchange-work.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,EAAE,GAAG,eAAe,CAAC;AAC3B,MAAM,KAAK,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;AAyBpD,MAAM,UAAU,SAAS,KAAa,OAAO,QAAQ,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAgB,EAAE,CAAY;IAC1D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,OAAO,CAAC,SAAS,CAAC;QACtB,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,eAAe,CAAC;QAC7F,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,EAAE,SAAS,EAAE,GAAG;KAC1E,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAgB,EAAE,EAAU;IACxD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,KAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAgB,EAAE,KAAa;IACtE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC;SAChG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAgB,EAAE,KAAa;IACtE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC;SAChG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"message-send.d.ts","sourceRoot":"","sources":["../../../src/services/message-send.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAChH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAK3E,OAAO,EAAqC,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAG5F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC;mFAC+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iGAAiG;IACjG,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,sBAAsB,EAAE,EAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,uBAAuB,EAAE,CAa3B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAA;CAAE,CAAC;AAE3D;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2I7G"}
1
+ {"version":3,"file":"message-send.d.ts","sourceRoot":"","sources":["../../../src/services/message-send.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAChH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAK3E,OAAO,EAAqC,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAG5F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC;mFAC+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iGAAiG;IACjG,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,sBAAsB,EAAE,EAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,uBAAuB,EAAE,CAa3B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAA;CAAE,CAAC;AAE3D;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8I7G"}
@@ -143,7 +143,10 @@ export async function sendDirectMessage(ctx, input) {
143
143
  type: isRequest ? 'direct_message_request' : 'direct_message',
144
144
  title: isRequest ? `${senderGhii} wants to message you` : `New message from ${senderGhii}`,
145
145
  body: messagePreview(body),
146
- link: isRequest ? '/v1/profile#inbox/requests' : `/v1/profile#inbox/${conversationId}`,
146
+ // Request → 'req:<conversationId>': while pending it lands on the inbox requests list, but once
147
+ // the request is accepted the same notification opens the now-existing thread (see inbox-tab
148
+ // consumeDeepLink). A delivered DM deep-links straight to its conversation.
149
+ link: isRequest ? `/v1/profile#inbox/req:${conversationId}` : `/v1/profile#inbox/${conversationId}`,
147
150
  // A delivered DM gets an inline reply box in the bell (POST /v1/messages back to the sender).
148
151
  // A pending request has no thread to reply into yet — it keeps its navigate-to-requests link.
149
152
  actions: isRequest ? undefined : [
@@ -1 +1 @@
1
- {"version":3,"file":"message-send.js","sourceRoot":"","sources":["../../../src/services/message-send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-send.js","sourceRoot":"","sources":["../../../src/services/message-send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ import type { Storage } from '../storage/interface.js';
2
+ /** The unit an entitlement is priced + budgeted in. Kept single-unit-per-entitlement so money micros and
3
+ * morsels are NEVER conflated (commerce `money.ts` micros ≠ morsel counts). `money` prices are integer
4
+ * 6-decimal MICRO-units; `morsels` prices are whole morsels. Slice-1 uses `morsels` (fully in-repo,
5
+ * atomic settlement); the `money` rail (Stripe Connect, EE) is the identical seam. */
6
+ export type EntitlementUnit = 'money' | 'morsels';
7
+ /**
8
+ * The PRICING MODEL — what triggers a charge, orthogonal to the settlement rail (unit). Carries its own
9
+ * mutable state so the gateway can advance it per call. Amounts are in the entitlement's `unit`.
10
+ * - `per_call` — charge `pricePerCall` every call (the base model).
11
+ * - `bundle` — buy a block of `blockSize` calls for `blockPrice`; each call draws down
12
+ * `callsRemaining`; hitting 0 refills (charges another `blockPrice`).
13
+ * - `subscription` — pay `periodPrice` per `periodSeconds` window; within the period calls are free but
14
+ * rate-limited to `callsPerWindow` per `windowSeconds`; period expiry renews (charges again).
15
+ */
16
+ export type PricingSpec = {
17
+ model: 'per_call';
18
+ } | {
19
+ model: 'bundle';
20
+ blockSize: number;
21
+ blockPrice: number;
22
+ callsRemaining: number;
23
+ } | {
24
+ model: 'subscription';
25
+ periodSeconds: number;
26
+ periodPrice: number;
27
+ callsPerWindow: number;
28
+ windowSeconds: number;
29
+ validUntil: string;
30
+ windowStart: string;
31
+ windowCount: number;
32
+ };
33
+ /** What to charge for ONE call + the advanced pricing state to persist (computed by {@link computeCharge}). */
34
+ export interface ChargeDecision {
35
+ allowed: boolean;
36
+ reason?: string;
37
+ chargeUnits: number;
38
+ pricing: PricingSpec;
39
+ }
40
+ /** Per-entitlement spend ceiling, expressed in the entitlement's `unit`. `capUnits: null` = uncapped. */
41
+ export interface EntitlementBudget {
42
+ capUnits: number | null;
43
+ spentUnits: number;
44
+ calls: number;
45
+ }
46
+ /**
47
+ * The sellable surface a contract binds to when it is NOT a raw extension action — an app-tool a provider
48
+ * app sells cross-app (TARGET-045 Gap 1). The metered coordinate (`ext`/`action`) stays the shared key; this
49
+ * pins the immutable INTERFACE VERSION so the metered call routes to the frozen snapshot's binding even after
50
+ * the provider ships a new app version. `null`/absent = the classic ext-action surface.
51
+ */
52
+ export interface AppToolSurface {
53
+ kind: 'app-tool';
54
+ ownerName: string;
55
+ appId: string;
56
+ tool: string;
57
+ ifaceVersion: number;
58
+ }
59
+ /**
60
+ * The sellable surface for AGENT WORK (TARGET-045 Gap 2) — a provider agent sells a TASK TYPE it performs.
61
+ * Unlike a data/app-tool call (synchronous), agent work is ASYNC: a task is started, the agent delivers, and
62
+ * the per-task price is metered ON DELIVERY. The metered coordinate is `agentwork:{owner}/{agent}` + taskType.
63
+ */
64
+ export interface AgentWorkSurface {
65
+ kind: 'agent-work';
66
+ ownerName: string;
67
+ agentName: string;
68
+ taskType: string;
69
+ }
70
+ /** The sellable surface a contract binds to when it is not a raw ext-action. */
71
+ export type SellableSurface = AppToolSurface | AgentWorkSurface;
72
+ /** The stored shape of one entitlement (the `value` of the memory record). */
73
+ export interface MeteredEntitlement {
74
+ entitlementId: string;
75
+ /** Who may call: an app GEAI, an owner GHII, or a full GAII. Verified against the caller on every charge. */
76
+ consumerGaii: string;
77
+ /** The consuming app id ("owner/filename") when the consumer is an app — powers the per-app cost surface (G3). */
78
+ appId: string | null;
79
+ /** Who gets paid (the seller GHII). */
80
+ providerGhii: string;
81
+ /** Provider capability coordinates. Slice-1 = an extension action; a hop = one (ext, action) pair. */
82
+ ext: string;
83
+ action: string;
84
+ /** Human/machine label, e.g. `fi.ytunnus.validate`. */
85
+ capabilityLabel: string;
86
+ /** The unit price + budget are expressed in. */
87
+ unit: EntitlementUnit;
88
+ /** Base per-call price, in `unit` (micros for money, whole morsels for morsels). Charged directly for
89
+ * `per_call`; the reference/base for other models (bundle/subscription set their own amounts). */
90
+ pricePerCall: number;
91
+ /** Currency when `unit === 'money'` (e.g. EUR/USD); ignored for morsels. */
92
+ currency: string | null;
93
+ /** The pricing model + its mutable state. Defaults to `{ model: 'per_call' }`. */
94
+ pricing: PricingSpec;
95
+ budget: EntitlementBudget;
96
+ /** Platform cut override (0–100). `null` = use the node's configured marketplace fee. */
97
+ rakePercent: number | null;
98
+ /** The sellable surface when this contract is for an app-tool (Gap 1) or agent-work (Gap 2); absent for a
99
+ * raw ext-action. App-tool calls route to the pinned interface binding; agent-work settles on delivery. */
100
+ surface?: SellableSurface | null;
101
+ /** The contract this entitlement was minted under (an EXCHANGE contract or a `wsengage.*` id). */
102
+ contractRef: string;
103
+ /** Who carries the trust-ramp / escrow risk, per the contract. */
104
+ escrowParty: 'consumer' | 'provider' | null;
105
+ state: 'active' | 'paused' | 'exhausted' | 'revoked';
106
+ createdAt: string;
107
+ createdBy: string;
108
+ updatedAt: string;
109
+ }
110
+ /** Deterministic, dot-safe key: a call `(consumer, ext, action)` maps to exactly one entitlement, so the
111
+ * gateway does an O(1) `getMemory` lookup (no scan). GAII contains `@`/`#` — hashing sidesteps key-segment
112
+ * rules while staying reproducible. The full identifiers live in the value for verification. */
113
+ export declare function entitlementKey(consumerGaii: string, ext: string, action: string): string;
114
+ /** Look up the live entitlement authorising this exact call, or null. */
115
+ export declare function readEntitlementForCall(storage: Storage, consumerGaii: string, ext: string, action: string): Promise<MeteredEntitlement | null>;
116
+ /** Every entitlement a consumer holds (for the app cost/contract surface, G3). Filtered prefix scan. */
117
+ export declare function listEntitlementsByConsumer(storage: Storage, consumerGaii: string): Promise<MeteredEntitlement[]>;
118
+ /** Every entitlement a provider sells (for the provider/earnings view). Filtered prefix scan. */
119
+ export declare function listEntitlementsByProvider(storage: Storage, providerGhii: string): Promise<MeteredEntitlement[]>;
120
+ /** Every entitlement a consuming app holds (the per-app cost/contract surface, G3). Filtered prefix scan. */
121
+ export declare function listEntitlementsByApp(storage: Storage, appId: string): Promise<MeteredEntitlement[]>;
122
+ /** Mint (or overwrite) an entitlement — called by the contract-acceptance flow after both sides agree.
123
+ * One `(consumer, ext, action)` triple has one entitlement; re-minting replaces it (e.g. renegotiated price),
124
+ * carrying spend forward only when explicitly asked. */
125
+ export declare function createEntitlement(storage: Storage, input: {
126
+ consumerGaii: string;
127
+ appId?: string | null;
128
+ providerGhii: string;
129
+ ext: string;
130
+ action: string;
131
+ capabilityLabel?: string;
132
+ unit: EntitlementUnit;
133
+ pricePerCall: number;
134
+ currency?: string | null;
135
+ pricing?: PricingSpec | null;
136
+ capUnits?: number | null;
137
+ rakePercent?: number | null;
138
+ contractRef: string;
139
+ surface?: SellableSurface | null;
140
+ escrowParty?: 'consumer' | 'provider' | null;
141
+ createdBy: string;
142
+ carrySpend?: MeteredEntitlement | null;
143
+ }): Promise<MeteredEntitlement>;
144
+ /**
145
+ * Authorize a single metered call and record its spend against the budget.
146
+ *
147
+ * Returns `{ ok: true, entitlement }` when the entitlement is `active` and the (money) price fits under the
148
+ * remaining cap; the caller (the G2 gateway) then executes and settles. The budget counter is incremented
149
+ * here so an exhausted entitlement flips to `exhausted` and stops authorising.
150
+ *
151
+ * CONCURRENCY: this is a read-modify-write on a memory record — under heavy simultaneous calls on the SAME
152
+ * entitlement the cap can be marginally overshot. The cap is an *authorization ceiling*, not a fund gate:
153
+ * every actual payment still moves through the atomic debit/credit settle path per call, so no funds are
154
+ * lost — only the ceiling can be exceeded by a few in-flight calls. A dedicated atomic counter (or table)
155
+ * is deferred to G5. The per-call price is read from the entitlement itself (`pricePerCall`, in its `unit`).
156
+ */
157
+ export declare function authorizeAndCharge(storage: Storage, consumerGaii: string, ext: string, action: string): Promise<{
158
+ ok: true;
159
+ entitlement: MeteredEntitlement;
160
+ } | {
161
+ ok: false;
162
+ reason: string;
163
+ }>;
164
+ /**
165
+ * Compute what THIS call costs + the advanced pricing state, per the entitlement's pricing model. Pure —
166
+ * no mutation, no I/O (`nowMs` is passed in so it stays testable). The gate uses the result to check the
167
+ * budget, settle `chargeUnits`, and then {@link commitSpend} the advanced `pricing`. `allowed:false` means
168
+ * the call is refused without charge (a subscription rate-limit window is full).
169
+ */
170
+ export declare function computeCharge(ent: MeteredEntitlement, nowMs: number): ChargeDecision;
171
+ /** Peek: would a charge of `chargeUnits` fit under the cap right now? (No mutation — the G2 gate checks this
172
+ * BEFORE moving money, then calls {@link commitSpend} only after settlement succeeds, so a failed debit
173
+ * never leaves a phantom spend.) */
174
+ export declare function budgetAllows(ent: MeteredEntitlement, chargeUnits: number): boolean;
175
+ /** Commit one call AFTER settlement succeeded: add `chargeUnits` to spend, bump calls, advance the pricing
176
+ * state, flip to `exhausted` at the cap. (Read-modify-write — see the concurrency note on {@link authorizeAndCharge}.) */
177
+ export declare function commitSpend(storage: Storage, ent: MeteredEntitlement, chargeUnits: number, pricing?: PricingSpec): Promise<MeteredEntitlement>;
178
+ /** Roll back one call's spend by `chargeUnits` (the gate calls this when the sandbox script throws AFTER
179
+ * settlement, in lockstep with the money refund). Floors at 0 and un-exhausts if this frees headroom. Does
180
+ * NOT rewind the pricing quota/window (a thrown call still consumed its slot — conservative). No-op if gone. */
181
+ export declare function refundSpend(storage: Storage, consumerGaii: string, ext: string, action: string, chargeUnits: number): Promise<void>;
182
+ /** Pause (owner off-switch) — stops authorising without losing the record/spend history. */
183
+ export declare function pauseEntitlement(storage: Storage, consumerGaii: string, ext: string, action: string): Promise<boolean>;
184
+ /** Revoke — terminal; the entitlement no longer authorises and must be re-minted to resume. */
185
+ export declare function revokeEntitlement(storage: Storage, consumerGaii: string, ext: string, action: string): Promise<boolean>;
186
+ /** An archived (past) contract — a superseded entitlement snapshot kept for the history view. */
187
+ export interface EntitlementHistoryEntry extends MeteredEntitlement {
188
+ archivedId: string;
189
+ archivedAt: string;
190
+ archiveReason: 'superseded' | 'revoked';
191
+ supersededByProposal: string | null;
192
+ }
193
+ /**
194
+ * Archive a copy of an entitlement to history (append-only) before the live record is overwritten by a
195
+ * renegotiation (supersede) — so the old terms + final spend/period survive for the "past contracts" view.
196
+ * Does NOT touch the live record. The `from → to` period is `createdAt → archivedAt`.
197
+ */
198
+ export declare function archiveEntitlement(storage: Storage, ent: MeteredEntitlement, reason: 'superseded' | 'revoked', proposalId?: string | null): Promise<void>;
199
+ /** Past (archived) contracts a consumer held — newest first. */
200
+ export declare function listEntitlementHistoryByConsumer(storage: Storage, consumerGaii: string): Promise<EntitlementHistoryEntry[]>;
201
+ /** Past (archived) contracts a provider sold — newest first. */
202
+ export declare function listEntitlementHistoryByProvider(storage: Storage, providerGhii: string): Promise<EntitlementHistoryEntry[]>;
203
+ //# sourceMappingURL=metered-entitlements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metered-entitlements.d.ts","sourceRoot":"","sources":["../../../src/services/metered-entitlements.ts"],"names":[],"mappings":"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"}