aimeat 1.23.2 → 1.23.3

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 (154) hide show
  1. package/dist/locales/en.json +536 -21
  2. package/dist/locales/fi.json +548 -33
  3. package/dist/public/components/ContactCard.js +28 -0
  4. package/dist/public/css/views/admin.css +12 -0
  5. package/dist/public/css/views/agents-detail.css +62 -10
  6. package/dist/public/css/views/landing.css +87 -0
  7. package/dist/public/css/views/offers.css +96 -0
  8. package/dist/public/css/views/portfolio.css +18 -0
  9. package/dist/public/css/views/profile.css +153 -8
  10. package/dist/public/css/views/start.css +96 -0
  11. package/dist/public/img/business-hero.png +0 -0
  12. package/dist/public/img/toimitus.png +0 -0
  13. package/dist/public/js/components/tag-cloud.js +46 -31
  14. package/dist/public/js/components/tag-editor.js +2 -2
  15. package/dist/public/js/recents.js +40 -0
  16. package/dist/public/js/services/admin.js +6 -0
  17. package/dist/public/js/services/agents.js +34 -0
  18. package/dist/public/js/services/offers.js +152 -0
  19. package/dist/public/js/services/packages.js +1 -0
  20. package/dist/public/spa.html +32 -2
  21. package/dist/public/views/admin/subdomains-tab.js +182 -0
  22. package/dist/public/views/admin.js +2 -0
  23. package/dist/public/views/business.js +119 -0
  24. package/dist/public/views/how-it-works.js +159 -0
  25. package/dist/public/views/landing.js +235 -0
  26. package/dist/public/views/portfolio.js +120 -23
  27. package/dist/public/views/pricing.js +75 -0
  28. package/dist/public/views/profile/access-tab.js +124 -51
  29. package/dist/public/views/profile/agents/agent-card.js +68 -37
  30. package/dist/public/views/profile/agents/shared-board.js +56 -22
  31. package/dist/public/views/profile/agents/tab-activity.js +24 -12
  32. package/dist/public/views/profile/agents/tab-agent-config.js +31 -1
  33. package/dist/public/views/profile/agents/tab-data-access.js +9 -13
  34. package/dist/public/views/profile/agents/tab-integration.js +27 -1
  35. package/dist/public/views/profile/agents/tab-messages.js +6 -11
  36. package/dist/public/views/profile/agents/tab-quality.js +45 -5
  37. package/dist/public/views/profile/agents-tab.js +41 -6
  38. package/dist/public/views/profile/apps-tab.js +7 -1
  39. package/dist/public/views/profile/knowledge-tab.js +4 -1
  40. package/dist/public/views/profile/landing-page.js +427 -123
  41. package/dist/public/views/profile/memory-tab.js +409 -211
  42. package/dist/public/views/profile/nodes-tab.js +18 -3
  43. package/dist/public/views/profile/offers-tab.js +310 -0
  44. package/dist/public/views/profile/organisms-tab.js +289 -28
  45. package/dist/public/views/profile/packages-tab.js +152 -16
  46. package/dist/public/views/profile/portfolio-tab.js +98 -31
  47. package/dist/public/views/profile.js +2 -0
  48. package/dist/public/views/start-flows.js +281 -0
  49. package/dist/public/views/start.js +258 -0
  50. package/dist/src/generated/api-types.d.ts +856 -17
  51. package/dist/src/generated/api-types.d.ts.map +1 -1
  52. package/dist/src/generated/prisma-postgres/edge.js +15 -3
  53. package/dist/src/generated/prisma-postgres/index-browser.js +12 -0
  54. package/dist/src/generated/prisma-postgres/index.d.ts +1476 -160
  55. package/dist/src/generated/prisma-postgres/index.js +15 -3
  56. package/dist/src/generated/prisma-postgres/package.json +1 -1
  57. package/dist/src/generated/prisma-postgres/schema.prisma +11 -0
  58. package/dist/src/generated/prisma-postgres/wasm.js +15 -3
  59. package/dist/src/middleware/subdomain.d.ts +28 -0
  60. package/dist/src/middleware/subdomain.d.ts.map +1 -0
  61. package/dist/src/middleware/subdomain.js +32 -0
  62. package/dist/src/middleware/subdomain.js.map +1 -0
  63. package/dist/src/models/offer-schemas.d.ts +229 -0
  64. package/dist/src/models/offer-schemas.d.ts.map +1 -0
  65. package/dist/src/models/offer-schemas.js +100 -0
  66. package/dist/src/models/offer-schemas.js.map +1 -0
  67. package/dist/src/routes/agent-tasks.d.ts.map +1 -1
  68. package/dist/src/routes/agent-tasks.js +33 -0
  69. package/dist/src/routes/agent-tasks.js.map +1 -1
  70. package/dist/src/routes/agents.d.ts.map +1 -1
  71. package/dist/src/routes/agents.js +146 -1
  72. package/dist/src/routes/agents.js.map +1 -1
  73. package/dist/src/routes/apps-backup.d.ts +20 -0
  74. package/dist/src/routes/apps-backup.d.ts.map +1 -0
  75. package/dist/src/routes/apps-backup.js +165 -0
  76. package/dist/src/routes/apps-backup.js.map +1 -0
  77. package/dist/src/routes/ghii.d.ts.map +1 -1
  78. package/dist/src/routes/ghii.js +4 -0
  79. package/dist/src/routes/ghii.js.map +1 -1
  80. package/dist/src/routes/instances.d.ts +2 -1
  81. package/dist/src/routes/instances.d.ts.map +1 -1
  82. package/dist/src/routes/instances.js +59 -1
  83. package/dist/src/routes/instances.js.map +1 -1
  84. package/dist/src/routes/packages.d.ts.map +1 -1
  85. package/dist/src/routes/packages.js +32 -0
  86. package/dist/src/routes/packages.js.map +1 -1
  87. package/dist/src/routes/permissions.d.ts +12 -0
  88. package/dist/src/routes/permissions.d.ts.map +1 -1
  89. package/dist/src/routes/permissions.js +35 -3
  90. package/dist/src/routes/permissions.js.map +1 -1
  91. package/dist/src/routes/portal.d.ts +3 -0
  92. package/dist/src/routes/portal.d.ts.map +1 -1
  93. package/dist/src/routes/portal.js +12 -0
  94. package/dist/src/routes/portal.js.map +1 -1
  95. package/dist/src/routes/public-stats.d.ts +15 -0
  96. package/dist/src/routes/public-stats.d.ts.map +1 -0
  97. package/dist/src/routes/public-stats.js +90 -0
  98. package/dist/src/routes/public-stats.js.map +1 -0
  99. package/dist/src/routes/sse.d.ts +7 -2
  100. package/dist/src/routes/sse.d.ts.map +1 -1
  101. package/dist/src/routes/sse.js +35 -5
  102. package/dist/src/routes/sse.js.map +1 -1
  103. package/dist/src/routes/subdomains.d.ts +33 -0
  104. package/dist/src/routes/subdomains.d.ts.map +1 -0
  105. package/dist/src/routes/subdomains.js +208 -0
  106. package/dist/src/routes/subdomains.js.map +1 -0
  107. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  108. package/dist/src/server-bootstrap/routes-loader.js +12 -1
  109. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  110. package/dist/src/server.d.ts.map +1 -1
  111. package/dist/src/server.js +4 -0
  112. package/dist/src/server.js.map +1 -1
  113. package/dist/src/services/apps-backup-export.d.ts +22 -0
  114. package/dist/src/services/apps-backup-export.d.ts.map +1 -0
  115. package/dist/src/services/apps-backup-export.js +136 -0
  116. package/dist/src/services/apps-backup-export.js.map +1 -0
  117. package/dist/src/services/apps-backup-import.d.ts +120 -0
  118. package/dist/src/services/apps-backup-import.d.ts.map +1 -0
  119. package/dist/src/services/apps-backup-import.js +259 -0
  120. package/dist/src/services/apps-backup-import.js.map +1 -0
  121. package/dist/src/services/component-registrar.d.ts +17 -0
  122. package/dist/src/services/component-registrar.d.ts.map +1 -1
  123. package/dist/src/services/component-registrar.js +63 -5
  124. package/dist/src/services/component-registrar.js.map +1 -1
  125. package/dist/src/services/handbooks/appdev.d.ts +1 -1
  126. package/dist/src/services/handbooks/appdev.d.ts.map +1 -1
  127. package/dist/src/services/handbooks/appdev.js +5 -2
  128. package/dist/src/services/handbooks/appdev.js.map +1 -1
  129. package/dist/src/storage/interface.d.ts +11 -1
  130. package/dist/src/storage/interface.d.ts.map +1 -1
  131. package/dist/src/storage/interface.js.map +1 -1
  132. package/dist/src/storage/providers/mongodb/index.d.ts +10 -1
  133. package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
  134. package/dist/src/storage/providers/mongodb/index.js +76 -0
  135. package/dist/src/storage/providers/mongodb/index.js.map +1 -1
  136. package/dist/src/storage/providers/sqlite/index.d.ts +8 -1
  137. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  138. package/dist/src/storage/providers/sqlite/index.js +61 -0
  139. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  140. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  141. package/dist/src/storage/providers/sqlite/schema.js +11 -0
  142. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  143. package/dist/src/storage/repositories/index.d.ts +1 -0
  144. package/dist/src/storage/repositories/index.d.ts.map +1 -1
  145. package/dist/src/storage/repositories/package.repository.d.ts +2 -0
  146. package/dist/src/storage/repositories/package.repository.d.ts.map +1 -1
  147. package/dist/src/storage/repositories/subdomain-site.repository.d.ts +19 -0
  148. package/dist/src/storage/repositories/subdomain-site.repository.d.ts.map +1 -0
  149. package/dist/src/storage/repositories/subdomain-site.repository.js +2 -0
  150. package/dist/src/storage/repositories/subdomain-site.repository.js.map +1 -0
  151. package/dist/static/app-catalog.html +1139 -28
  152. package/package.json +1 -1
  153. package/prisma/schema.postgres.prisma +11 -0
  154. package/prisma/schema.prisma +11 -0
@@ -784,6 +784,87 @@ export interface paths {
784
784
  patch: operations["updateAgentMaxConcurrentTasks"];
785
785
  trace?: never;
786
786
  };
787
+ "/v1/agents/{name}/offers": {
788
+ parameters: {
789
+ query?: never;
790
+ header?: never;
791
+ path?: never;
792
+ cookie?: never;
793
+ };
794
+ /** Read an agent's published offers */
795
+ get: operations["getAgentOffers"];
796
+ /**
797
+ * Publish an agent's offers
798
+ * @description An agent publishes its own "offers" (the human-readable face of its contract: what it can do for you, with an example, the outcome, and a sample deliverable), or the owner publishes for one of their agents. Validated against the offer descriptor; stored as memory `agents.{name}.offers` under the agent's GAII and consumed by both the Offers UI and the mesh (delegate selection).
799
+ */
800
+ put: operations["publishAgentOffers"];
801
+ post?: never;
802
+ delete?: never;
803
+ options?: never;
804
+ head?: never;
805
+ patch?: never;
806
+ trace?: never;
807
+ };
808
+ "/v1/agents/{name}/offers/{offerId}/invoke": {
809
+ parameters: {
810
+ query?: never;
811
+ header?: never;
812
+ path?: never;
813
+ cookie?: never;
814
+ };
815
+ get?: never;
816
+ put?: never;
817
+ /**
818
+ * Invoke a callable offer (billable)
819
+ * @description Invoke an offer's machine-callable binding. Free when the caller owns the agent; when a different owner invokes, the caller is debited and the provider credited (morsels, minus the marketplace fee) on success, with a refund if dispatch fails. The offer must declare a `callable.action_id` backing capability — human-prompt / task offers use the Ask flow instead. `visibility:'private'` blocks cross-owner invocation. `name` may be a bare agent name (the caller's own agent) or a full provider GAII (URL-encoded) for cross-owner calls.
820
+ */
821
+ post: operations["invokeAgentOffer"];
822
+ delete?: never;
823
+ options?: never;
824
+ head?: never;
825
+ patch?: never;
826
+ trace?: never;
827
+ };
828
+ "/v1/offers": {
829
+ parameters: {
830
+ query?: never;
831
+ header?: never;
832
+ path?: never;
833
+ cookie?: never;
834
+ };
835
+ /**
836
+ * Aggregate all your agents' offers (the goal-first "Do" feed)
837
+ * @description Owner aggregate: every agent's published offers joined with the runtime context the cards need (mode, last-seen, online). The source for the goal-first "what do you want to do" search across all agents.
838
+ */
839
+ get: operations["listOwnerOffers"];
840
+ put?: never;
841
+ post?: never;
842
+ delete?: never;
843
+ options?: never;
844
+ head?: never;
845
+ patch?: never;
846
+ trace?: never;
847
+ };
848
+ "/v1/deliverables": {
849
+ parameters: {
850
+ query?: never;
851
+ header?: never;
852
+ path?: never;
853
+ cookie?: never;
854
+ };
855
+ /**
856
+ * The Offers "Inbox" — everything that came back across all agents
857
+ * @description Owner aggregate of non-draft agent tasks (queued/active/done/failed/…), newest first, with provenance (agent, status, timestamps), the deliverable memory key, the verification expectation, and any existing rating. The follow-up half of the Offers surface: check + rate without clicking through agents. Failures are included as status='failed'. Rate a done task via POST /v1/agents/{name}/tasks/{id}/rate.
858
+ */
859
+ get: operations["listOwnerDeliverables"];
860
+ put?: never;
861
+ post?: never;
862
+ delete?: never;
863
+ options?: never;
864
+ head?: never;
865
+ patch?: never;
866
+ trace?: never;
867
+ };
787
868
  "/v1/agents/{name}/scopes": {
788
869
  parameters: {
789
870
  query?: never;
@@ -3096,6 +3177,108 @@ export interface paths {
3096
3177
  patch?: never;
3097
3178
  trace?: never;
3098
3179
  };
3180
+ "/v1/admin/subdomains": {
3181
+ parameters: {
3182
+ query?: never;
3183
+ header?: never;
3184
+ path?: never;
3185
+ cookie?: never;
3186
+ };
3187
+ /**
3188
+ * List subdomain mappings (operator only)
3189
+ * @description Lists all operator-managed subdomain → site mappings. A mapping serves a published app at the root of `<subdomain>.<apex>` (kind `app`) or 301-redirects to an external URL (kind `redirect`).
3190
+ */
3191
+ get: operations["listSubdomainSites"];
3192
+ put?: never;
3193
+ /**
3194
+ * Create a subdomain mapping (operator only)
3195
+ * @description Maps a subdomain to a published app (`target` = `owner/filename`) or an external redirect URL. Reserved subdomains (www, mail, api, admin, static, cdn, portal, app, apps, docs, status, mcp) are rejected. Access-code protected and paid apps cannot be mapped.
3196
+ */
3197
+ post: operations["createSubdomainSite"];
3198
+ delete?: never;
3199
+ options?: never;
3200
+ head?: never;
3201
+ patch?: never;
3202
+ trace?: never;
3203
+ };
3204
+ "/v1/admin/subdomains/{subdomain}": {
3205
+ parameters: {
3206
+ query?: never;
3207
+ header?: never;
3208
+ path?: never;
3209
+ cookie?: never;
3210
+ };
3211
+ get?: never;
3212
+ put?: never;
3213
+ post?: never;
3214
+ /** Delete a subdomain mapping (operator only) */
3215
+ delete: operations["deleteSubdomainSite"];
3216
+ options?: never;
3217
+ head?: never;
3218
+ /** Update a subdomain mapping (operator only) */
3219
+ patch: operations["updateSubdomainSite"];
3220
+ trace?: never;
3221
+ };
3222
+ "/v1/apps/backup": {
3223
+ parameters: {
3224
+ query?: never;
3225
+ header?: never;
3226
+ path?: never;
3227
+ cookie?: never;
3228
+ };
3229
+ /**
3230
+ * Export the caller's whole app catalog as a ZIP backup
3231
+ * @description Streams a ZIP containing EVERY app published by the calling owner with EVERY stored version (apps/{filename}/app.json + versions/v{N}.html) plus the owner's installed cortex extensions (extensions/{name}/ext.json + manifest.yaml + libs/), described by a top-level backup-manifest.json. Access codes, tokens and keys are never included. Owner role required.
3232
+ */
3233
+ get: operations["exportAppsBackup"];
3234
+ put?: never;
3235
+ post?: never;
3236
+ delete?: never;
3237
+ options?: never;
3238
+ head?: never;
3239
+ patch?: never;
3240
+ trace?: never;
3241
+ };
3242
+ "/v1/apps/backup/inspect": {
3243
+ parameters: {
3244
+ query?: never;
3245
+ header?: never;
3246
+ path?: never;
3247
+ cookie?: never;
3248
+ };
3249
+ get?: never;
3250
+ put?: never;
3251
+ /**
3252
+ * Inspect an uploaded backup ZIP without writing anything
3253
+ * @description Parses the backup (zip-slip / zip-bomb hardened), reports its contents and which apps/extensions would conflict with the caller's existing data, and returns a short-lived backup_token so the restore call does not need to re-upload the ZIP. Send the ZIP as the raw request body (Content-Type application/zip) or as JSON { zip_base64 }.
3254
+ */
3255
+ post: operations["inspectAppsBackup"];
3256
+ delete?: never;
3257
+ options?: never;
3258
+ head?: never;
3259
+ patch?: never;
3260
+ trace?: never;
3261
+ };
3262
+ "/v1/apps/backup/restore": {
3263
+ parameters: {
3264
+ query?: never;
3265
+ header?: never;
3266
+ path?: never;
3267
+ cookie?: never;
3268
+ };
3269
+ get?: never;
3270
+ put?: never;
3271
+ /**
3272
+ * Selectively restore apps/extensions from an inspected backup
3273
+ * @description Restores only the selected apps (optionally a subset of versions) and extensions into the CALLER's account. Per-app conflict mode when the app already exists — skip (default), append (backup versions stack on top as new versions) or copy (new filename with a -restored suffix). Nothing is ever silently overwritten.
3274
+ */
3275
+ post: operations["restoreAppsBackup"];
3276
+ delete?: never;
3277
+ options?: never;
3278
+ head?: never;
3279
+ patch?: never;
3280
+ trace?: never;
3281
+ };
3099
3282
  "/v1/mcp": {
3100
3283
  parameters: {
3101
3284
  query?: never;
@@ -3472,6 +3655,70 @@ export interface paths {
3472
3655
  patch?: never;
3473
3656
  trace?: never;
3474
3657
  };
3658
+ "/v1/public/activity-ticker": {
3659
+ parameters: {
3660
+ query?: never;
3661
+ header?: never;
3662
+ path?: never;
3663
+ cookie?: never;
3664
+ };
3665
+ /**
3666
+ * Live activity ticker for the landing page (public, cached 10 s)
3667
+ * @description Newest PUBLIC-visibility memory writes (actor agent name + key tail + timestamp)
3668
+ * and the count of agents seen in the last 10 minutes. No auth; rate-limited.
3669
+ */
3670
+ get: operations["publicActivityTicker"];
3671
+ put?: never;
3672
+ post?: never;
3673
+ delete?: never;
3674
+ options?: never;
3675
+ head?: never;
3676
+ patch?: never;
3677
+ trace?: never;
3678
+ };
3679
+ "/v1/public/node-stats-today": {
3680
+ parameters: {
3681
+ query?: never;
3682
+ header?: never;
3683
+ path?: never;
3684
+ cookie?: never;
3685
+ };
3686
+ /**
3687
+ * Today's aggregate activity counters (public, cached 60 s)
3688
+ * @description Real counters for today — public memory writes, completed tasks (bounded sweep),
3689
+ * schedules fired. Aggregates only; no per-user data. No auth; rate-limited.
3690
+ */
3691
+ get: operations["publicNodeStatsToday"];
3692
+ put?: never;
3693
+ post?: never;
3694
+ delete?: never;
3695
+ options?: never;
3696
+ head?: never;
3697
+ patch?: never;
3698
+ trace?: never;
3699
+ };
3700
+ "/v1/ghii/me": {
3701
+ parameters: {
3702
+ query?: never;
3703
+ header?: never;
3704
+ path?: never;
3705
+ cookie?: never;
3706
+ };
3707
+ /**
3708
+ * Get the authenticated owner's own GHII profile
3709
+ * @description Returns the caller's own GHII profile, including fields not exposed on the
3710
+ * public profile route (notification email, email verification timestamp, and
3711
+ * the Ed25519 public key generated at registration).
3712
+ */
3713
+ get: operations["ghiiMe"];
3714
+ put?: never;
3715
+ post?: never;
3716
+ delete?: never;
3717
+ options?: never;
3718
+ head?: never;
3719
+ patch?: never;
3720
+ trace?: never;
3721
+ };
3475
3722
  "/v1/ghii/totp/setup": {
3476
3723
  parameters: {
3477
3724
  query?: never;
@@ -3833,6 +4080,11 @@ export interface paths {
3833
4080
  * @description List public organisms with optional filtering by type, interest,
3834
4081
  * and location. No authentication required for public organisms.
3835
4082
  * Supports pagination.
4083
+ *
4084
+ * `?member=<owner>` lists that owner's organisms. Private memberships are
4085
+ * enumerable only by the member themself (authenticated as that owner or
4086
+ * one of their agents) or an operator — for anyone else the member filter
4087
+ * degrades to public organisms only (no private-membership disclosure).
3836
4088
  */
3837
4089
  get: operations["listOrganisms"];
3838
4090
  put?: never;
@@ -3934,6 +4186,13 @@ export interface paths {
3934
4186
  * @description List all members of an organism. Public organisms show members
3935
4187
  * to anyone. Private organisms require membership to view.
3936
4188
  * Supports pagination.
4189
+ *
4190
+ * When the caller is an ACTIVE member of the organism (or an operator),
4191
+ * each member row additionally carries `agents: [{gaii, name}]` — the
4192
+ * member's same-owner agents, which inherit the membership implicitly
4193
+ * (their join answers ALREADY_MEMBER). This makes "who can act in this
4194
+ * organism" enumerable; the response then includes `agents_included: true`.
4195
+ * Non-member callers get the legacy shape without agent rosters.
3937
4196
  */
3938
4197
  get: operations["listOrganismMembers"];
3939
4198
  put?: never;
@@ -10323,6 +10582,68 @@ export interface components {
10323
10582
  changedAt?: string;
10324
10583
  changeNote?: string;
10325
10584
  };
10585
+ AppsBackupInspection: {
10586
+ backup_token?: string;
10587
+ expires_in_seconds?: number;
10588
+ source?: {
10589
+ nodeId?: string;
10590
+ owner?: string;
10591
+ };
10592
+ exported_at?: string;
10593
+ apps?: {
10594
+ filename?: string;
10595
+ name?: string;
10596
+ exists?: boolean;
10597
+ existing_versions?: number;
10598
+ versions?: {
10599
+ version?: number;
10600
+ size?: number;
10601
+ created_at?: string;
10602
+ semver?: string;
10603
+ }[];
10604
+ }[];
10605
+ extensions?: {
10606
+ name?: string;
10607
+ exists?: boolean;
10608
+ }[];
10609
+ totals?: {
10610
+ apps?: number;
10611
+ versions?: number;
10612
+ extensions?: number;
10613
+ };
10614
+ };
10615
+ AppsBackupRestoreSummary: {
10616
+ apps_created?: string[];
10617
+ apps_appended?: string[];
10618
+ apps_copied?: {
10619
+ from?: string;
10620
+ to?: string;
10621
+ }[];
10622
+ apps_skipped?: string[];
10623
+ versions_restored?: number;
10624
+ extensions_created?: string[];
10625
+ extensions_copied?: {
10626
+ from?: string;
10627
+ to?: string;
10628
+ }[];
10629
+ extensions_skipped?: string[];
10630
+ errors?: {
10631
+ item?: string;
10632
+ message?: string;
10633
+ }[];
10634
+ };
10635
+ SubdomainSiteRecord: {
10636
+ subdomain?: string;
10637
+ /** @enum {string} */
10638
+ kind?: "app" | "redirect";
10639
+ target?: string;
10640
+ enabled?: boolean;
10641
+ createdBy?: string;
10642
+ /** Format: date-time */
10643
+ createdAt?: string;
10644
+ /** Format: date-time */
10645
+ updatedAt?: string;
10646
+ };
10326
10647
  PackageComponent: {
10327
10648
  id: string;
10328
10649
  /** @enum {string} */
@@ -12262,12 +12583,26 @@ export interface operations {
12262
12583
  404: components["responses"]["NotFound"];
12263
12584
  };
12264
12585
  };
12265
- updateAgentScopes: {
12586
+ getAgentOffers: {
12266
12587
  parameters: {
12267
12588
  query?: never;
12268
12589
  header?: never;
12269
12590
  path: {
12270
- /** @description Agent name (not full GAII) */
12591
+ name: string;
12592
+ };
12593
+ cookie?: never;
12594
+ };
12595
+ requestBody?: never;
12596
+ responses: {
12597
+ 200: components["responses"]["AimeatSuccess"];
12598
+ };
12599
+ };
12600
+ publishAgentOffers: {
12601
+ parameters: {
12602
+ query?: never;
12603
+ header?: never;
12604
+ path: {
12605
+ /** @description Agent name */
12271
12606
  name: string;
12272
12607
  };
12273
12608
  cookie?: never;
@@ -12275,33 +12610,182 @@ export interface operations {
12275
12610
  requestBody: {
12276
12611
  content: {
12277
12612
  "application/json": {
12278
- /** @description New scope list (validated against node max scopes) */
12279
- scopes: string[];
12613
+ version?: number;
12614
+ updatedAt?: string;
12615
+ /** @description See docs/plans/2026-06-12-agent-offers-surface.md §4 for the full descriptor. */
12616
+ offers: {
12617
+ id: string;
12618
+ title: string;
12619
+ ask: string;
12620
+ example?: string;
12621
+ tags?: string[];
12622
+ /** @enum {string} */
12623
+ cost?: "free" | "cheap" | "expensive";
12624
+ /** @enum {string} */
12625
+ latency?: "seconds" | "minutes" | "long-running";
12626
+ /** @enum {string} */
12627
+ repeatability?: "idempotent" | "accumulative" | "destructive";
12628
+ /** @enum {string} */
12629
+ verification?: "deterministic" | "gated" | "ungated";
12630
+ /** @enum {string} */
12631
+ dataHandling?: "local-only" | "llm-provider" | "third-party";
12632
+ availability?: Record<string, never>;
12633
+ requirements?: Record<string, never>[];
12634
+ consequences?: Record<string, never>[];
12635
+ deliverable: {
12636
+ /** @enum {string} */
12637
+ format: "document" | "record" | "board-post" | "file" | "app";
12638
+ location?: Record<string, never>;
12639
+ sample?: unknown;
12640
+ };
12641
+ }[];
12280
12642
  };
12281
12643
  };
12282
12644
  };
12283
12645
  responses: {
12284
- /** @description Scopes updated */
12285
- 200: {
12646
+ 200: components["responses"]["AimeatSuccess"];
12647
+ /** @description INVALID_OFFERS — descriptor failed validation. */
12648
+ 400: {
12286
12649
  headers: {
12287
12650
  [name: string]: unknown;
12288
12651
  };
12289
- content: {
12290
- "application/json": components["schemas"]["AimeatEnvelope"] & {
12291
- data?: {
12292
- gaii?: components["schemas"]["GAII"];
12293
- scopes?: string[];
12294
- };
12295
- };
12296
- };
12652
+ content?: never;
12297
12653
  };
12298
- 400: components["responses"]["BadRequest"];
12654
+ 403: components["responses"]["Forbidden"];
12299
12655
  404: components["responses"]["NotFound"];
12300
12656
  };
12301
12657
  };
12302
- getAgentCors: {
12658
+ invokeAgentOffer: {
12303
12659
  parameters: {
12304
- query?: never;
12660
+ query?: {
12661
+ mode?: "normal" | "raw";
12662
+ };
12663
+ header?: never;
12664
+ path: {
12665
+ name: string;
12666
+ offerId: string;
12667
+ };
12668
+ cookie?: never;
12669
+ };
12670
+ requestBody?: {
12671
+ content: {
12672
+ "application/json": {
12673
+ /** @description Input passed to the backing capability */
12674
+ input?: Record<string, never>;
12675
+ };
12676
+ };
12677
+ };
12678
+ responses: {
12679
+ /** @description Success — `{ offer, agent, result, receipt }`. `receipt` is `{ charged: 0 }` for self-use, else `{ charged, earned, fee, trackingCode }`. */
12680
+ 200: {
12681
+ headers: {
12682
+ [name: string]: unknown;
12683
+ };
12684
+ content: {
12685
+ "application/json": components["responses"]["AimeatSuccess"];
12686
+ };
12687
+ };
12688
+ /** @description INSUFFICIENT_BALANCE — the caller cannot cover the offer price */
12689
+ 402: {
12690
+ headers: {
12691
+ [name: string]: unknown;
12692
+ };
12693
+ content?: never;
12694
+ };
12695
+ /** @description OFFER_PRIVATE — a different owner cannot invoke a private offer */
12696
+ 403: {
12697
+ headers: {
12698
+ [name: string]: unknown;
12699
+ };
12700
+ content?: never;
12701
+ };
12702
+ /** @description AGENT_NOT_FOUND / OFFER_NOT_FOUND / CAPABILITY_NOT_FOUND */
12703
+ 404: {
12704
+ headers: {
12705
+ [name: string]: unknown;
12706
+ };
12707
+ content?: never;
12708
+ };
12709
+ /** @description OFFER_NOT_CALLABLE — the offer has no machine-invocable binding */
12710
+ 422: {
12711
+ headers: {
12712
+ [name: string]: unknown;
12713
+ };
12714
+ content?: never;
12715
+ };
12716
+ /** @description OFFER_INVOKE_FAILED — the backing capability errored (caller refunded) */
12717
+ 502: {
12718
+ headers: {
12719
+ [name: string]: unknown;
12720
+ };
12721
+ content?: never;
12722
+ };
12723
+ };
12724
+ };
12725
+ listOwnerOffers: {
12726
+ parameters: {
12727
+ query?: never;
12728
+ header?: never;
12729
+ path?: never;
12730
+ cookie?: never;
12731
+ };
12732
+ requestBody?: never;
12733
+ responses: {
12734
+ 200: components["responses"]["AimeatSuccess"];
12735
+ };
12736
+ };
12737
+ listOwnerDeliverables: {
12738
+ parameters: {
12739
+ query?: never;
12740
+ header?: never;
12741
+ path?: never;
12742
+ cookie?: never;
12743
+ };
12744
+ requestBody?: never;
12745
+ responses: {
12746
+ 200: components["responses"]["AimeatSuccess"];
12747
+ };
12748
+ };
12749
+ updateAgentScopes: {
12750
+ parameters: {
12751
+ query?: never;
12752
+ header?: never;
12753
+ path: {
12754
+ /** @description Agent name (not full GAII) */
12755
+ name: string;
12756
+ };
12757
+ cookie?: never;
12758
+ };
12759
+ requestBody: {
12760
+ content: {
12761
+ "application/json": {
12762
+ /** @description New scope list (validated against node max scopes) */
12763
+ scopes: string[];
12764
+ };
12765
+ };
12766
+ };
12767
+ responses: {
12768
+ /** @description Scopes updated */
12769
+ 200: {
12770
+ headers: {
12771
+ [name: string]: unknown;
12772
+ };
12773
+ content: {
12774
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
12775
+ data?: {
12776
+ gaii?: components["schemas"]["GAII"];
12777
+ scopes?: string[];
12778
+ };
12779
+ };
12780
+ };
12781
+ };
12782
+ 400: components["responses"]["BadRequest"];
12783
+ 404: components["responses"]["NotFound"];
12784
+ };
12785
+ };
12786
+ getAgentCors: {
12787
+ parameters: {
12788
+ query?: never;
12305
12789
  header?: never;
12306
12790
  path: {
12307
12791
  /** @description Agent name (not full GAII) */
@@ -15722,6 +16206,262 @@ export interface operations {
15722
16206
  404: components["responses"]["NotFound"];
15723
16207
  };
15724
16208
  };
16209
+ listSubdomainSites: {
16210
+ parameters: {
16211
+ query?: never;
16212
+ header?: never;
16213
+ path?: never;
16214
+ cookie?: never;
16215
+ };
16216
+ requestBody?: never;
16217
+ responses: {
16218
+ /** @description List of subdomain mappings */
16219
+ 200: {
16220
+ headers: {
16221
+ [name: string]: unknown;
16222
+ };
16223
+ content: {
16224
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
16225
+ data?: {
16226
+ sites?: components["schemas"]["SubdomainSiteRecord"][];
16227
+ total?: number;
16228
+ };
16229
+ };
16230
+ };
16231
+ };
16232
+ 401: components["responses"]["Unauthorized"];
16233
+ 403: components["responses"]["Forbidden"];
16234
+ };
16235
+ };
16236
+ createSubdomainSite: {
16237
+ parameters: {
16238
+ query?: never;
16239
+ header?: never;
16240
+ path?: never;
16241
+ cookie?: never;
16242
+ };
16243
+ requestBody: {
16244
+ content: {
16245
+ "application/json": {
16246
+ subdomain: string;
16247
+ /** @enum {string} */
16248
+ kind: "app" | "redirect";
16249
+ /** @description "owner/filename" of a published app, or an absolute http(s) URL */
16250
+ target: string;
16251
+ /** @default true */
16252
+ enabled?: boolean;
16253
+ };
16254
+ };
16255
+ };
16256
+ responses: {
16257
+ /** @description Mapping created */
16258
+ 201: {
16259
+ headers: {
16260
+ [name: string]: unknown;
16261
+ };
16262
+ content: {
16263
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
16264
+ data?: {
16265
+ site?: components["schemas"]["SubdomainSiteRecord"];
16266
+ };
16267
+ };
16268
+ };
16269
+ };
16270
+ 400: components["responses"]["BadRequest"];
16271
+ 401: components["responses"]["Unauthorized"];
16272
+ 403: components["responses"]["Forbidden"];
16273
+ 404: components["responses"]["NotFound"];
16274
+ 409: components["responses"]["AimeatError"];
16275
+ };
16276
+ };
16277
+ deleteSubdomainSite: {
16278
+ parameters: {
16279
+ query?: never;
16280
+ header?: never;
16281
+ path: {
16282
+ subdomain: string;
16283
+ };
16284
+ cookie?: never;
16285
+ };
16286
+ requestBody?: never;
16287
+ responses: {
16288
+ /** @description Mapping deleted */
16289
+ 200: {
16290
+ headers: {
16291
+ [name: string]: unknown;
16292
+ };
16293
+ content: {
16294
+ "application/json": components["schemas"]["AimeatEnvelope"];
16295
+ };
16296
+ };
16297
+ 401: components["responses"]["Unauthorized"];
16298
+ 403: components["responses"]["Forbidden"];
16299
+ 404: components["responses"]["NotFound"];
16300
+ };
16301
+ };
16302
+ updateSubdomainSite: {
16303
+ parameters: {
16304
+ query?: never;
16305
+ header?: never;
16306
+ path: {
16307
+ subdomain: string;
16308
+ };
16309
+ cookie?: never;
16310
+ };
16311
+ requestBody: {
16312
+ content: {
16313
+ "application/json": {
16314
+ /** @enum {string} */
16315
+ kind?: "app" | "redirect";
16316
+ target?: string;
16317
+ enabled?: boolean;
16318
+ };
16319
+ };
16320
+ };
16321
+ responses: {
16322
+ /** @description Mapping updated */
16323
+ 200: {
16324
+ headers: {
16325
+ [name: string]: unknown;
16326
+ };
16327
+ content: {
16328
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
16329
+ data?: {
16330
+ site?: components["schemas"]["SubdomainSiteRecord"];
16331
+ };
16332
+ };
16333
+ };
16334
+ };
16335
+ 400: components["responses"]["BadRequest"];
16336
+ 401: components["responses"]["Unauthorized"];
16337
+ 403: components["responses"]["Forbidden"];
16338
+ 404: components["responses"]["NotFound"];
16339
+ };
16340
+ };
16341
+ exportAppsBackup: {
16342
+ parameters: {
16343
+ query?: never;
16344
+ header?: never;
16345
+ path?: never;
16346
+ cookie?: never;
16347
+ };
16348
+ requestBody?: never;
16349
+ responses: {
16350
+ /** @description ZIP archive (Content-Disposition attachment) */
16351
+ 200: {
16352
+ headers: {
16353
+ [name: string]: unknown;
16354
+ };
16355
+ content: {
16356
+ "application/zip": string;
16357
+ };
16358
+ };
16359
+ 401: components["responses"]["Unauthorized"];
16360
+ 403: components["responses"]["Forbidden"];
16361
+ };
16362
+ };
16363
+ inspectAppsBackup: {
16364
+ parameters: {
16365
+ query?: never;
16366
+ header?: never;
16367
+ path?: never;
16368
+ cookie?: never;
16369
+ };
16370
+ requestBody: {
16371
+ content: {
16372
+ "application/zip": string;
16373
+ "application/json": {
16374
+ zip_base64?: string;
16375
+ };
16376
+ };
16377
+ };
16378
+ responses: {
16379
+ /** @description Backup contents and conflict report */
16380
+ 200: {
16381
+ headers: {
16382
+ [name: string]: unknown;
16383
+ };
16384
+ content: {
16385
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
16386
+ data?: components["schemas"]["AppsBackupInspection"];
16387
+ };
16388
+ };
16389
+ };
16390
+ 400: components["responses"]["BadRequest"];
16391
+ 401: components["responses"]["Unauthorized"];
16392
+ 403: components["responses"]["Forbidden"];
16393
+ /** @description ZIP rejected by safety checks and quarantined */
16394
+ 422: {
16395
+ headers: {
16396
+ [name: string]: unknown;
16397
+ };
16398
+ content: {
16399
+ "application/json": components["schemas"]["AimeatEnvelope"];
16400
+ };
16401
+ };
16402
+ };
16403
+ };
16404
+ restoreAppsBackup: {
16405
+ parameters: {
16406
+ query?: never;
16407
+ header?: never;
16408
+ path?: never;
16409
+ cookie?: never;
16410
+ };
16411
+ requestBody: {
16412
+ content: {
16413
+ "application/json": {
16414
+ /** @description Token from /v1/apps/backup/inspect (30 min TTL) */
16415
+ backup_token?: string;
16416
+ /** @description Fallback when the token has expired */
16417
+ zip_base64?: string;
16418
+ selections?: {
16419
+ filename: string;
16420
+ /** @description Default — all versions in the backup */
16421
+ versions?: number[];
16422
+ /**
16423
+ * @default skip
16424
+ * @enum {string}
16425
+ */
16426
+ conflict?: "skip" | "append" | "copy";
16427
+ }[];
16428
+ extensions?: {
16429
+ name: string;
16430
+ /**
16431
+ * @default skip
16432
+ * @enum {string}
16433
+ */
16434
+ conflict?: "skip" | "copy";
16435
+ }[];
16436
+ };
16437
+ };
16438
+ };
16439
+ responses: {
16440
+ /** @description Restore summary (created / appended / copied / skipped / errors) */
16441
+ 200: {
16442
+ headers: {
16443
+ [name: string]: unknown;
16444
+ };
16445
+ content: {
16446
+ "application/json": components["schemas"]["AimeatEnvelope"] & {
16447
+ data?: components["schemas"]["AppsBackupRestoreSummary"];
16448
+ };
16449
+ };
16450
+ };
16451
+ 400: components["responses"]["BadRequest"];
16452
+ 401: components["responses"]["Unauthorized"];
16453
+ 403: components["responses"]["Forbidden"];
16454
+ /** @description ZIP rejected by safety checks and quarantined */
16455
+ 422: {
16456
+ headers: {
16457
+ [name: string]: unknown;
16458
+ };
16459
+ content: {
16460
+ "application/json": components["schemas"]["AimeatEnvelope"];
16461
+ };
16462
+ };
16463
+ };
16464
+ };
15725
16465
  mcpResources: {
15726
16466
  parameters: {
15727
16467
  query?: never;
@@ -16467,6 +17207,10 @@ export interface operations {
16467
17207
  ok?: boolean;
16468
17208
  data?: {
16469
17209
  key?: string;
17210
+ /** @description Whether a memory record with this key exists (owner session checks the GHII and all owned agents) */
17211
+ found?: boolean;
17212
+ /** @description The identity (GHII or agent GAII) that actually owns the record, when found */
17213
+ owner_gaii?: string | null;
16470
17214
  visibility?: string;
16471
17215
  effective_rules?: {
16472
17216
  consent_id?: string;
@@ -16485,6 +17229,99 @@ export interface operations {
16485
17229
  401: components["responses"]["Unauthorized"];
16486
17230
  };
16487
17231
  };
17232
+ publicActivityTicker: {
17233
+ parameters: {
17234
+ query?: never;
17235
+ header?: never;
17236
+ path?: never;
17237
+ cookie?: never;
17238
+ };
17239
+ requestBody?: never;
17240
+ responses: {
17241
+ /** @description Ticker items */
17242
+ 200: {
17243
+ headers: {
17244
+ [name: string]: unknown;
17245
+ };
17246
+ content: {
17247
+ "application/json": {
17248
+ ok?: boolean;
17249
+ data?: {
17250
+ items?: {
17251
+ actor?: string;
17252
+ key?: string;
17253
+ at?: string;
17254
+ }[];
17255
+ agents_online?: number;
17256
+ };
17257
+ };
17258
+ };
17259
+ };
17260
+ };
17261
+ };
17262
+ publicNodeStatsToday: {
17263
+ parameters: {
17264
+ query?: never;
17265
+ header?: never;
17266
+ path?: never;
17267
+ cookie?: never;
17268
+ };
17269
+ requestBody?: never;
17270
+ responses: {
17271
+ /** @description Today's counters */
17272
+ 200: {
17273
+ headers: {
17274
+ [name: string]: unknown;
17275
+ };
17276
+ content: {
17277
+ "application/json": {
17278
+ ok?: boolean;
17279
+ data?: {
17280
+ public_writes?: number;
17281
+ tasks_completed?: number;
17282
+ schedules_fired?: number;
17283
+ };
17284
+ };
17285
+ };
17286
+ };
17287
+ };
17288
+ };
17289
+ ghiiMe: {
17290
+ parameters: {
17291
+ query?: never;
17292
+ header?: never;
17293
+ path?: never;
17294
+ cookie?: never;
17295
+ };
17296
+ requestBody?: never;
17297
+ responses: {
17298
+ /** @description Own GHII profile */
17299
+ 200: {
17300
+ headers: {
17301
+ [name: string]: unknown;
17302
+ };
17303
+ content: {
17304
+ "application/json": {
17305
+ ok?: boolean;
17306
+ data?: {
17307
+ ghii?: string;
17308
+ display_name?: string | null;
17309
+ bio?: string | null;
17310
+ avatar?: string | null;
17311
+ locale?: string | null;
17312
+ notification_email?: string | null;
17313
+ verification_level?: number;
17314
+ email_verified_at?: string | null;
17315
+ /** @description The owner's Ed25519 public key (base64), generated at registration */
17316
+ public_key?: string | null;
17317
+ };
17318
+ };
17319
+ };
17320
+ };
17321
+ 401: components["responses"]["Unauthorized"];
17322
+ 404: components["responses"]["NotFound"];
17323
+ };
17324
+ };
16488
17325
  totpSetup: {
16489
17326
  parameters: {
16490
17327
  query?: never;
@@ -17197,6 +18034,8 @@ export interface operations {
17197
18034
  query?: {
17198
18035
  /** @description Filter by organism type */
17199
18036
  type?: "club" | "team" | "community" | "project";
18037
+ /** @description Filter to organisms this owner is a member of (bare owner name; a GHII/GAII is normalized). Includes private organisms only when the caller IS that owner (or an operator); otherwise public-only. */
18038
+ member?: string;
17200
18039
  /** @description Filter by interest tag */
17201
18040
  interest?: string;
17202
18041
  /** @description Filter by city */