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,247 @@
1
+ import type { Storage } from '../storage/interface.js';
2
+ import { type EntitlementUnit, type PricingSpec, type AppToolSurface, type AgentWorkSurface, type SellableSurface } from './metered-entitlements.js';
3
+ export type { AppToolSurface, AgentWorkSurface, SellableSurface };
4
+ /** The action `commercial` block an offering/contract prices against. */
5
+ export interface ActionCommercial {
6
+ payMorsels?: number;
7
+ payMoney?: {
8
+ amount: number;
9
+ currency: string;
10
+ };
11
+ plans?: OfferingPlan[];
12
+ }
13
+ /**
14
+ * Resolve the AUTHORITATIVE unit + per-call price + (optional plan) pricing spec from a provider action's
15
+ * commercial block — the single source of truth shared by the acceptance route AND bid-accept, so a
16
+ * consumer can never undercut the provider. Money (payMoney) takes precedence over morsels.
17
+ */
18
+ export declare function resolveActionPricing(comm: ActionCommercial | undefined, planId: string | null): {
19
+ ok: true;
20
+ unit: EntitlementUnit;
21
+ pricePerCall: number;
22
+ currency: string | null;
23
+ pricing: PricingSpec | null;
24
+ } | {
25
+ ok: false;
26
+ code: string;
27
+ message: string;
28
+ };
29
+ /** A provider pricing plan surfaced on an offering (mirrors the action's commercial.plans). */
30
+ export type OfferingPlan = {
31
+ id: string;
32
+ model: 'per_call';
33
+ } | {
34
+ id: string;
35
+ model: 'bundle';
36
+ blockSize: number;
37
+ blockPrice: number;
38
+ } | {
39
+ id: string;
40
+ model: 'subscription';
41
+ periodSeconds: number;
42
+ periodPrice: number;
43
+ callsPerWindow: number;
44
+ windowSeconds: number;
45
+ };
46
+ /** ODPS-style provenance attestation (a PROMISE by the provider, not a platform guarantee). */
47
+ export interface Provenance {
48
+ source?: string;
49
+ legalBasis?: string;
50
+ consentStatus?: string;
51
+ retention?: string;
52
+ odpsVersion?: string;
53
+ }
54
+ /**
55
+ * How a consumer may use the delivered data — the consent-forward half of provenance. A provider PROMISE
56
+ * surfaced to the consumer BEFORE they contract, so "may I refine and resell this downstream?" is answered
57
+ * up front (it is not enforced by the node — it is the stated licence the contract is accepted under).
58
+ */
59
+ export interface UsageTerms {
60
+ derivatives: boolean;
61
+ resale: boolean;
62
+ attribution: boolean;
63
+ note?: string;
64
+ }
65
+ /**
66
+ * The interface a requesting app is WAITING to call — what makes a NEED an emergent, machine-matchable
67
+ * data-API request rather than a wish. The app declares the exact shape it will SEND and the shape it EXPECTS
68
+ * back; a provider builds a matching app-tool (or extension) whose I/O satisfies it. `inputSchema`/`outputSchema`
69
+ * are the precise contract (like an offering's); `requiredFields`/`format`/`sample` are the light human hints.
70
+ */
71
+ export interface NeedSpec {
72
+ requiredFields: string[];
73
+ format?: string;
74
+ sample?: string;
75
+ notes?: string;
76
+ inputSchema?: Record<string, unknown>;
77
+ outputSchema?: Record<string, unknown>;
78
+ }
79
+ /** A public supply listing. `kind` distinguishes a raw extension action (the original surface) from an
80
+ * app-tool (a method a provider app sells cross-app). For BOTH, `ext`/`action` hold the metered COORDINATE
81
+ * (app-tool uses `apptool:{owner}/{appId}` + the tool name) so the entitlement + stats machinery is shared. */
82
+ export interface Offering {
83
+ offeringId: string;
84
+ providerGhii: string;
85
+ providerOwner: string;
86
+ kind: 'ext-action' | 'app-tool' | 'agent-work';
87
+ ext: string;
88
+ action: string;
89
+ surface: SellableSurface | null;
90
+ title: string;
91
+ description: string;
92
+ unit: EntitlementUnit;
93
+ basePrice: number;
94
+ currency: string | null;
95
+ plans: OfferingPlan[];
96
+ /** For kind==='agent-work': the task interface (what the consumer sends / the agent delivers). */
97
+ taskSpec?: {
98
+ inputSchema: Record<string, unknown>;
99
+ outputSchema: Record<string, unknown>;
100
+ } | null;
101
+ provenance: Provenance | null;
102
+ usageTerms: UsageTerms | null;
103
+ tags: string[];
104
+ state: 'listed' | 'delisted';
105
+ createdAt: string;
106
+ updatedAt: string;
107
+ }
108
+ /** The metered coordinate for an app-tool surface — the (ext, action) pair the entitlement + gate key on. */
109
+ export declare function appToolCoordinate(ownerName: string, appId: string, tool: string): {
110
+ ext: string;
111
+ action: string;
112
+ };
113
+ /** The metered coordinate for an agent-work surface (a provider agent's task type; settled per delivered task). */
114
+ export declare function agentWorkCoordinate(ownerName: string, agentName: string, taskType: string): {
115
+ ext: string;
116
+ action: string;
117
+ };
118
+ /** Build an ActionCommercial from an offering's stored price/plans, so the shared pricing resolver
119
+ * (resolveActionPricing) works for app-tool offerings too — the offering's listing IS the authoritative price. */
120
+ export declare function offeringToCommercial(o: Offering): ActionCommercial;
121
+ /**
122
+ * Resolve the authoritative pricing + metered coordinate to mint a contract from an offering — shared by the
123
+ * REST and MCP accept flows, for BOTH kinds. For app-tool the price comes from the offering's own listing;
124
+ * for ext-action it comes LIVE from the provider's extension action (so the provider's current price wins).
125
+ */
126
+ export declare function resolveOfferingPricing(storage: Storage, o: Offering, planId: string | null): Promise<{
127
+ ok: true;
128
+ unit: EntitlementUnit;
129
+ pricePerCall: number;
130
+ currency: string | null;
131
+ pricing: PricingSpec | null;
132
+ providerGhii: string;
133
+ ext: string;
134
+ action: string;
135
+ capabilityLabel: string;
136
+ surface: SellableSurface | null;
137
+ } | {
138
+ ok: false;
139
+ status: number;
140
+ code: string;
141
+ message: string;
142
+ }>;
143
+ /** A public demand posting. */
144
+ export interface Need {
145
+ needId: string;
146
+ requesterGaii: string;
147
+ requesterOwner: string;
148
+ appId: string | null;
149
+ ext: string | null;
150
+ action: string | null;
151
+ description: string;
152
+ spec: NeedSpec | null;
153
+ usageIntent: string | null;
154
+ budgetUnit: EntitlementUnit | null;
155
+ budgetCap: number | null;
156
+ autonomy: 'supervised' | 'auto';
157
+ state: 'open' | 'matched' | 'closed';
158
+ createdAt: string;
159
+ updatedAt: string;
160
+ }
161
+ /** A need enriched with the requesting app's identity + purpose, so a provider knows WHO/WHAT they'd serve. */
162
+ export interface NeedWithContext extends Need {
163
+ appContext: {
164
+ app: string;
165
+ name: string;
166
+ description: string;
167
+ } | null;
168
+ }
169
+ /**
170
+ * Attach app context to needs: when a need names a requesting app (`appId` = "owner/filename" or a bare
171
+ * filename under the requester), resolve that app's published name + description so a provider can judge the
172
+ * consumer before offering (per "do I even want to serve an app that misuses the data?"). Best-effort — a
173
+ * need without a resolvable app gets `appContext: null` and is grouped under its requester instead.
174
+ */
175
+ export declare function enrichNeeds(storage: Storage, needs: Need[]): Promise<NeedWithContext[]>;
176
+ /** A provider's bid against a NEED. */
177
+ export interface Bid {
178
+ bidId: string;
179
+ needId: string;
180
+ bidderGhii: string;
181
+ bidderOwner: string;
182
+ offeringId: string | null;
183
+ ext: string;
184
+ action: string;
185
+ planId: string | null;
186
+ note: string;
187
+ state: 'open' | 'accepted' | 'withdrawn';
188
+ createdAt: string;
189
+ }
190
+ export declare function newOfferingId(): string;
191
+ export declare function putOffering(storage: Storage, o: Offering): Promise<Offering>;
192
+ export declare function getOffering(storage: Storage, id: string): Promise<Offering | null>;
193
+ export declare function listOfferings(storage: Storage): Promise<Offering[]>;
194
+ export declare function deleteOffering(storage: Storage, id: string): Promise<boolean>;
195
+ /** Rank listed offerings that satisfy a capability. Match = exact (ext,action) when given, else a text
196
+ * contains over title/description/tags. Cheapest base price first (a proxy; agents refine with plans/trust). */
197
+ export declare function matchOfferings(storage: Storage, q: {
198
+ ext?: string | null;
199
+ action?: string | null;
200
+ text?: string | null;
201
+ }): Promise<Offering[]>;
202
+ export declare function newNeedId(): string;
203
+ export declare function putNeed(storage: Storage, n: Need): Promise<Need>;
204
+ export declare function getNeed(storage: Storage, id: string): Promise<Need | null>;
205
+ export declare function listNeeds(storage: Storage, opts?: {
206
+ openOnly?: boolean;
207
+ owner?: string;
208
+ }): Promise<Need[]>;
209
+ export declare function newBidId(): string;
210
+ export declare function putBid(storage: Storage, b: Bid): Promise<Bid>;
211
+ export declare function listBids(storage: Storage, needId: string): Promise<Bid[]>;
212
+ export declare function getBid(storage: Storage, needId: string, bidId: string): Promise<Bid | null>;
213
+ /**
214
+ * Usage/reputation for an offering — the "is this API actually used, and successful?" signal that was in
215
+ * the original measurability spec. Derived entirely from the entitlements against it (each carries its own
216
+ * call + spend counters), so it needs no separate metrics table: a real, tamper-resistant record of demand.
217
+ */
218
+ export interface OfferingStats {
219
+ activeContracts: number;
220
+ totalContracts: number;
221
+ totalCalls: number;
222
+ totalSettledUnits: number;
223
+ consumers: number;
224
+ listedAt: string;
225
+ lastUsedAt: string | null;
226
+ }
227
+ /** Compute an offering's usage stats from the entitlements minted against its (provider, ext, action). */
228
+ export declare function offeringStats(storage: Storage, o: Offering): Promise<OfferingStats>;
229
+ /**
230
+ * The provider's DATA-LINEAGE view: who holds a contract against this offering, how much they have consumed,
231
+ * and when they last used it — answering "where is my data used, by whom, and how much?". One row per live
232
+ * or historical contract. Provider-only (the route authorises); the consuming identity is shown so the
233
+ * provider can see (and, via the off-switch, react to) each relationship.
234
+ */
235
+ export interface ConsumerRow {
236
+ consumerGaii: string;
237
+ appId: string | null;
238
+ contractRef: string;
239
+ unit: EntitlementUnit;
240
+ calls: number;
241
+ settledUnits: number;
242
+ state: string;
243
+ lastUsedAt: string;
244
+ }
245
+ /** List the consumers holding contracts against an offering (provider lineage/consumption log). */
246
+ export declare function offeringConsumers(storage: Storage, o: Offering): Promise<ConsumerRow[]>;
247
+ //# sourceMappingURL=exchange-market.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-market.d.ts","sourceRoot":"","sources":["../../../src/services/exchange-market.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * @file src/services/exchange-market.ts
3
+ * @description The two-sided EXCHANGE marketplace records (TARGET-045 Phase C) — the DEMAND + SUPPLY sides
4
+ * that sit above the metered entitlement (the contract). Three public, memory-backed record types the
5
+ * marketplace app + agents read/write; matching + negotiation live in the app/agent layer (this service
6
+ * is the generic store + a simple capability match, per "node holds refined data, not orchestration"):
7
+ * - OFFERING — a provider's public supply listing: a capability (ext/action) + pricing (base + plans) +
8
+ * ODPS-style provenance. Discoverable by any consumer.
9
+ * - NEED — a consumer/app's open demand: a wanted capability + budget + autonomy. Providers browse open
10
+ * needs and BID.
11
+ * - BID — a provider's offer against a NEED (links an OFFERING + proposed terms). The requester accepts
12
+ * one → the acceptance flow mints the entitlement.
13
+ * Keys: `exchange.offering.{id}` / `exchange.need.{id}` / `exchange.bid.{needId}.{id}` — public so the
14
+ * marketplace is browsable; ownership is the record's provider/requester GHII (authorised by the routes).
15
+ * @structure Offering·Need·Bid types · UsageTerms·NeedSpec · put/get/list/delete for each · matchOfferings ·
16
+ * offeringStats (reputation) · offeringConsumers (provider data-lineage)
17
+ * @usage import { putOffering, listOfferings, matchOfferings, putNeed, listOpenNeeds, putBid } from './exchange-market.js';
18
+ * @version-history
19
+ * v1.5.0 — 2026-07-21 — Agent-work surface (Gap 2): Offering.kind gains 'agent-work' + AgentWorkSurface +
20
+ * agentWorkCoordinate + Offering.taskSpec; resolveOfferingPricing covers agent-work (DATA/SERVICES/AGENT WORK).
21
+ * v1.4.0 — 2026-07-21 — Demand side as an emergent interface request: NeedSpec gains input/outputSchema
22
+ * (the shape the app sends/expects — a provider builds a matching app-tool). A need is app-bound.
23
+ * v1.3.0 — 2026-07-21 — Needs app-context: Need.usageIntent + enrichNeeds (resolve the requesting app's
24
+ * name/description so a provider can judge who they'd serve before offering).
25
+ * v1.2.0 — 2026-07-21 — Cross-app selling (Gap 1): Offering.kind ('ext-action'|'app-tool') + AppToolSurface
26
+ * (pinned interface); appToolCoordinate + offeringToCommercial + resolveOfferingPricing (shared mint path).
27
+ * v1.1.0 — 2026-07-20 — Legibility layer: UsageTerms + NeedSpec on records; offeringStats (usage/reputation)
28
+ * + offeringConsumers (provider lineage) derived from entitlements (no metrics table).
29
+ * v1.0.0 — 2026-07-20 — Initial marketplace records (offering/need/bid) + capability matching (Phase C).
30
+ */
31
+ import { randomUUID } from 'node:crypto';
32
+ import { listEntitlementsByProvider } from './metered-entitlements.js';
33
+ /**
34
+ * Resolve the AUTHORITATIVE unit + per-call price + (optional plan) pricing spec from a provider action's
35
+ * commercial block — the single source of truth shared by the acceptance route AND bid-accept, so a
36
+ * consumer can never undercut the provider. Money (payMoney) takes precedence over morsels.
37
+ */
38
+ export function resolveActionPricing(comm, planId) {
39
+ const money = comm?.payMoney;
40
+ let unit;
41
+ let pricePerCall;
42
+ let currency = null;
43
+ if (money && typeof money.amount === 'number' && Number.isInteger(money.amount) && money.amount > 0) {
44
+ unit = 'money';
45
+ pricePerCall = money.amount;
46
+ currency = money.currency;
47
+ }
48
+ else if (typeof comm?.payMorsels === 'number' && Number.isInteger(comm.payMorsels) && comm.payMorsels > 0) {
49
+ unit = 'morsels';
50
+ pricePerCall = comm.payMorsels;
51
+ }
52
+ else {
53
+ return { ok: false, code: 'NOT_PRICED', message: 'Action has no price; only priced actions are contractable' };
54
+ }
55
+ let pricing = null;
56
+ if (planId) {
57
+ const plan = (comm?.plans ?? []).find(p => p.id === planId);
58
+ if (!plan)
59
+ return { ok: false, code: 'PLAN_NOT_FOUND', message: `No plan "${planId}" on this action` };
60
+ if (plan.model === 'bundle') {
61
+ pricing = { model: 'bundle', blockSize: plan.blockSize, blockPrice: plan.blockPrice, callsRemaining: 0 };
62
+ }
63
+ else if (plan.model === 'subscription') {
64
+ const epoch = new Date(0).toISOString();
65
+ pricing = { model: 'subscription', periodSeconds: plan.periodSeconds, periodPrice: plan.periodPrice, callsPerWindow: plan.callsPerWindow, windowSeconds: plan.windowSeconds, validUntil: epoch, windowStart: epoch, windowCount: 0 };
66
+ }
67
+ }
68
+ return { ok: true, unit, pricePerCall, currency, pricing };
69
+ }
70
+ /** The metered coordinate for an app-tool surface — the (ext, action) pair the entitlement + gate key on. */
71
+ export function appToolCoordinate(ownerName, appId, tool) {
72
+ return { ext: `apptool:${ownerName}/${appId}`, action: tool };
73
+ }
74
+ /** The metered coordinate for an agent-work surface (a provider agent's task type; settled per delivered task). */
75
+ export function agentWorkCoordinate(ownerName, agentName, taskType) {
76
+ return { ext: `agentwork:${ownerName}/${agentName}`, action: taskType };
77
+ }
78
+ /** Build an ActionCommercial from an offering's stored price/plans, so the shared pricing resolver
79
+ * (resolveActionPricing) works for app-tool offerings too — the offering's listing IS the authoritative price. */
80
+ export function offeringToCommercial(o) {
81
+ return {
82
+ payMorsels: o.unit === 'morsels' ? o.basePrice : undefined,
83
+ payMoney: o.unit === 'money' ? { amount: o.basePrice, currency: o.currency ?? 'EUR' } : undefined,
84
+ plans: o.plans,
85
+ };
86
+ }
87
+ /**
88
+ * Resolve the authoritative pricing + metered coordinate to mint a contract from an offering — shared by the
89
+ * REST and MCP accept flows, for BOTH kinds. For app-tool the price comes from the offering's own listing;
90
+ * for ext-action it comes LIVE from the provider's extension action (so the provider's current price wins).
91
+ */
92
+ export async function resolveOfferingPricing(storage, o, planId) {
93
+ // app-tool + agent-work both price from the offering's own listing (the provider authored it).
94
+ if ((o.kind === 'app-tool' || o.kind === 'agent-work') && o.surface) {
95
+ const priced = resolveActionPricing(offeringToCommercial(o), planId);
96
+ if (!priced.ok)
97
+ return { ok: false, status: 400, code: priced.code, message: priced.message };
98
+ const label = o.surface.kind === 'app-tool'
99
+ ? `${o.surface.appId}/${o.surface.tool} v${o.surface.ifaceVersion}`
100
+ : `${o.surface.agentName}:${o.surface.taskType}`;
101
+ return {
102
+ ok: true, unit: priced.unit, pricePerCall: priced.pricePerCall, currency: priced.currency, pricing: priced.pricing,
103
+ providerGhii: o.providerGhii, ext: o.ext, action: o.action, capabilityLabel: label, surface: o.surface,
104
+ };
105
+ }
106
+ // ext-action: authoritative LIVE price from the provider's extension action.
107
+ const extRec = await storage.getExtension(o.ext);
108
+ const act = extRec?.actions.find(a => a.id === o.action);
109
+ if (!extRec || !act)
110
+ return { ok: false, status: 404, code: 'NOT_FOUND', message: 'Offering capability no longer exists' };
111
+ const priced = resolveActionPricing(act.commercial, planId);
112
+ if (!priced.ok)
113
+ return { ok: false, status: 400, code: priced.code, message: priced.message };
114
+ return {
115
+ ok: true, unit: priced.unit, pricePerCall: priced.pricePerCall, currency: priced.currency, pricing: priced.pricing,
116
+ providerGhii: o.providerGhii, ext: o.ext, action: o.action, capabilityLabel: `${o.ext}/${o.action}`, surface: null,
117
+ };
118
+ }
119
+ /**
120
+ * Attach app context to needs: when a need names a requesting app (`appId` = "owner/filename" or a bare
121
+ * filename under the requester), resolve that app's published name + description so a provider can judge the
122
+ * consumer before offering (per "do I even want to serve an app that misuses the data?"). Best-effort — a
123
+ * need without a resolvable app gets `appContext: null` and is grouped under its requester instead.
124
+ */
125
+ export async function enrichNeeds(storage, needs) {
126
+ const cache = new Map();
127
+ const out = [];
128
+ for (const n of needs) {
129
+ let appContext = null;
130
+ if (n.appId) {
131
+ const ref = n.appId.includes('/') ? n.appId : `${n.requesterOwner}/${n.appId}`;
132
+ if (cache.has(ref)) {
133
+ appContext = cache.get(ref) ?? null;
134
+ }
135
+ else {
136
+ const [owner, filename] = ref.split('/');
137
+ let resolved = null;
138
+ try {
139
+ const rec = owner && filename ? await storage.getAppByOwnerName(owner, filename) : null;
140
+ const m = (rec?.manifest ?? {});
141
+ if (rec)
142
+ resolved = { app: ref, name: m.name || filename, description: m.description || '' };
143
+ }
144
+ catch { /* unresolved app → null context */ }
145
+ cache.set(ref, resolved);
146
+ appContext = resolved;
147
+ }
148
+ }
149
+ out.push({ ...n, appContext });
150
+ }
151
+ return out;
152
+ }
153
+ const OFFERING_PREFIX = 'exchange.offering.';
154
+ const NEED_PREFIX = 'exchange.need.';
155
+ const bidPrefix = (needId) => `exchange.bid.${needId}.`;
156
+ async function putPublic(storage, ownerGhii, key, value, tag) {
157
+ const now = new Date().toISOString();
158
+ await storage.setMemory({ key, ownerGaii: ownerGhii, value, visibility: 'public', tags: [tag], ttlHours: null, version: 1, createdAt: now, updatedAt: now });
159
+ }
160
+ // ── OFFERING ────────────────────────────────────────────────────────────────
161
+ export function newOfferingId() { return `off-${randomUUID().slice(0, 12)}`; }
162
+ export async function putOffering(storage, o) {
163
+ await putPublic(storage, o.providerGhii, OFFERING_PREFIX + o.offeringId, o, 'exchange-offering');
164
+ return o;
165
+ }
166
+ export async function getOffering(storage, id) {
167
+ const { items } = await storage.listAllMemory({ prefix: OFFERING_PREFIX + id, limit: 2 });
168
+ const rec = items.find(r => r.key === OFFERING_PREFIX + id);
169
+ return rec ? rec.value : null;
170
+ }
171
+ export async function listOfferings(storage) {
172
+ const { items } = await storage.listAllMemory({ prefix: OFFERING_PREFIX, limit: 5000 });
173
+ return items.map(r => r.value).filter(v => v && v.offeringId && v.state === 'listed');
174
+ }
175
+ export async function deleteOffering(storage, id) {
176
+ const o = await getOffering(storage, id);
177
+ if (!o)
178
+ return false;
179
+ o.state = 'delisted';
180
+ o.updatedAt = new Date().toISOString();
181
+ await putOffering(storage, o);
182
+ return true;
183
+ }
184
+ /** Rank listed offerings that satisfy a capability. Match = exact (ext,action) when given, else a text
185
+ * contains over title/description/tags. Cheapest base price first (a proxy; agents refine with plans/trust). */
186
+ export async function matchOfferings(storage, q) {
187
+ const all = await listOfferings(storage);
188
+ const text = (q.text || '').trim().toLowerCase();
189
+ const hits = all.filter(o => {
190
+ if (q.ext && q.action)
191
+ return o.ext === q.ext && o.action === q.action;
192
+ if (!text)
193
+ return true;
194
+ return [o.title, o.description, o.ext, o.action, ...(o.tags || [])].join(' ').toLowerCase().includes(text);
195
+ });
196
+ return hits.sort((a, b) => a.basePrice - b.basePrice);
197
+ }
198
+ // ── NEED ────────────────────────────────────────────────────────────────────
199
+ export function newNeedId() { return `need-${randomUUID().slice(0, 12)}`; }
200
+ export async function putNeed(storage, n) {
201
+ await putPublic(storage, n.requesterGaii, NEED_PREFIX + n.needId, n, 'exchange-need');
202
+ return n;
203
+ }
204
+ export async function getNeed(storage, id) {
205
+ const { items } = await storage.listAllMemory({ prefix: NEED_PREFIX + id, limit: 2 });
206
+ const rec = items.find(r => r.key === NEED_PREFIX + id);
207
+ return rec ? rec.value : null;
208
+ }
209
+ export async function listNeeds(storage, opts) {
210
+ const { items } = await storage.listAllMemory({ prefix: NEED_PREFIX, limit: 5000 });
211
+ return items.map(r => r.value).filter(v => v && v.needId &&
212
+ (!opts?.openOnly || v.state === 'open') &&
213
+ (!opts?.owner || v.requesterOwner === opts.owner));
214
+ }
215
+ // ── BID ─────────────────────────────────────────────────────────────────────
216
+ export function newBidId() { return `bid-${randomUUID().slice(0, 12)}`; }
217
+ export async function putBid(storage, b) {
218
+ await putPublic(storage, b.bidderGhii, bidPrefix(b.needId) + b.bidId, b, 'exchange-bid');
219
+ return b;
220
+ }
221
+ export async function listBids(storage, needId) {
222
+ const { items } = await storage.listAllMemory({ prefix: bidPrefix(needId), limit: 2000 });
223
+ return items.map(r => r.value).filter(v => v && v.bidId);
224
+ }
225
+ export async function getBid(storage, needId, bidId) {
226
+ const rec = (await storage.listAllMemory({ prefix: bidPrefix(needId) + bidId, limit: 2 })).items.find(r => r.key === bidPrefix(needId) + bidId);
227
+ return rec ? rec.value : null;
228
+ }
229
+ /** Compute an offering's usage stats from the entitlements minted against its (provider, ext, action). */
230
+ export async function offeringStats(storage, o) {
231
+ const ents = (await listEntitlementsByProvider(storage, o.providerGhii)).filter(e => e.ext === o.ext && e.action === o.action);
232
+ const consumers = new Set(ents.map(e => e.consumerGaii));
233
+ let totalCalls = 0, totalSettledUnits = 0, activeContracts = 0, lastUsedAt = null;
234
+ for (const e of ents) {
235
+ totalCalls += e.budget.calls;
236
+ totalSettledUnits += e.budget.spentUnits;
237
+ if (e.state === 'active')
238
+ activeContracts += 1;
239
+ if (e.budget.calls > 0 && (!lastUsedAt || e.updatedAt > lastUsedAt))
240
+ lastUsedAt = e.updatedAt;
241
+ }
242
+ return { activeContracts, totalContracts: ents.length, totalCalls, totalSettledUnits, consumers: consumers.size, listedAt: o.createdAt, lastUsedAt };
243
+ }
244
+ /** List the consumers holding contracts against an offering (provider lineage/consumption log). */
245
+ export async function offeringConsumers(storage, o) {
246
+ const ents = (await listEntitlementsByProvider(storage, o.providerGhii)).filter(e => e.ext === o.ext && e.action === o.action);
247
+ return ents
248
+ .map(e => ({
249
+ consumerGaii: e.consumerGaii, appId: e.appId, contractRef: e.contractRef, unit: e.unit,
250
+ calls: e.budget.calls, settledUnits: e.budget.spentUnits, state: e.state, lastUsedAt: e.updatedAt,
251
+ }))
252
+ .sort((a, b) => b.calls - a.calls);
253
+ }
254
+ //# sourceMappingURL=exchange-market.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-market.js","sourceRoot":"","sources":["../../../src/services/exchange-market.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { Storage } from '../storage/interface.js';
2
+ import { type EntitlementUnit, type MeteredEntitlement } from './metered-entitlements.js';
3
+ export declare const ownerOfGaii: (gaii: string) => string;
4
+ /** A proposed change to a live contract, pending the counterparty's decision. */
5
+ export interface ContractProposal {
6
+ proposalId: string;
7
+ /** The contract being renegotiated — its metered coordinate + parties. */
8
+ consumerGaii: string;
9
+ providerGhii: string;
10
+ ext: string;
11
+ action: string;
12
+ capabilityLabel: string;
13
+ /** Who initiated the change, and who must accept it. */
14
+ proposedByRole: 'provider' | 'consumer';
15
+ proposerGhii: string;
16
+ proposerOwner: string;
17
+ counterpartyGhii: string;
18
+ counterpartyOwner: string;
19
+ /** Proposed new terms — `null` means "leave unchanged". */
20
+ newPricePerCall: number | null;
21
+ newCapUnits: number | null;
22
+ note: string;
23
+ /** A snapshot of the current terms (for the diff shown to the counterparty + the history). */
24
+ currentTerms: {
25
+ unit: EntitlementUnit;
26
+ pricePerCall: number;
27
+ pricingModel: string;
28
+ capUnits: number | null;
29
+ };
30
+ status: 'pending' | 'accepted' | 'declined' | 'withdrawn';
31
+ createdAt: string;
32
+ resolvedAt: string | null;
33
+ }
34
+ export declare function newProposalId(): string;
35
+ export declare function putProposal(storage: Storage, p: ContractProposal): Promise<ContractProposal>;
36
+ export declare function getProposal(storage: Storage, id: string): Promise<ContractProposal | null>;
37
+ /** Every proposal an owner is party to (as proposer OR counterparty, either role), newest first. */
38
+ export declare function listProposalsForOwner(storage: Storage, owner: string): Promise<ContractProposal[]>;
39
+ /**
40
+ * Apply an accepted proposal: archive the live entitlement to history (superseded), then mint a fresh one at
41
+ * the agreed terms under the SAME coordinate. Price change → the contract moves to a straightforward per-call
42
+ * model at the new price (plan renegotiation is a separate re-accept); an unchanged field keeps its value.
43
+ * The new contract starts a fresh meter (spend 0) — the old totals live on in the archived history entry.
44
+ * Returns the new entitlement, or null if the live contract vanished.
45
+ */
46
+ export declare function supersedeWithProposal(storage: Storage, proposal: ContractProposal): Promise<MeteredEntitlement | null>;
47
+ //# sourceMappingURL=exchange-proposals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-proposals.d.ts","sourceRoot":"","sources":["../../../src/services/exchange-proposals.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAEL,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAC9C,MAAM,2BAA2B,CAAC;AAKnC,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAAqD,CAAC;AAEjG,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,cAAc,EAAE,UAAU,GAAG,UAAU,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,8FAA8F;IAC9F,YAAY,EAAE;QAAE,IAAI,EAAE,eAAe,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7G,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAgD;AAEvF,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQlG;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAGhG;AAED,oGAAoG;AACpG,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAKxG;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAC3C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAiBpC"}