aimeat 1.24.0 → 1.25.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 (345) hide show
  1. package/README.md +2 -0
  2. package/dist/.env.example +10 -0
  3. package/dist/locales/en.json +320 -5
  4. package/dist/locales/fi.json +320 -5
  5. package/dist/public/components/ImageDeliverable.js +208 -0
  6. package/dist/public/components/JsonView.js +67 -0
  7. package/dist/public/components/Markdown.js +29 -2
  8. package/dist/public/components/NotificationBell.js +21 -1
  9. package/dist/public/css/components/image-deliverable.css +77 -0
  10. package/dist/public/css/views/inbox.css +286 -0
  11. package/dist/public/css/views/landing.css +60 -3
  12. package/dist/public/css/views/offers.css +62 -0
  13. package/dist/public/css/views/profile.css +352 -1
  14. package/dist/public/css/views/workflows.css +64 -16
  15. package/dist/public/js/services/ecosystem.js +120 -0
  16. package/dist/public/js/services/messages.js +93 -0
  17. package/dist/public/js/services/offers-grouping.js +204 -0
  18. package/dist/public/js/services/offers.js +61 -1
  19. package/dist/public/js/services/organisms.js +35 -6
  20. package/dist/public/js/services/schedules.js +61 -1
  21. package/dist/public/js/services/workflows.js +5 -0
  22. package/dist/public/spa.html +7 -0
  23. package/dist/public/views/landing-activity.js +140 -0
  24. package/dist/public/views/landing.js +345 -93
  25. package/dist/public/views/profile/agents-tasks-subtab.js +20 -10
  26. package/dist/public/views/profile/ecosystem-tab.js +1244 -0
  27. package/dist/public/views/profile/inbox-tab.js +407 -0
  28. package/dist/public/views/profile/landing-page.js +29 -0
  29. package/dist/public/views/profile/memory-tab.js +5 -0
  30. package/dist/public/views/profile/offers-tab.js +316 -24
  31. package/dist/public/views/profile/organisms-tab.js +195 -20
  32. package/dist/public/views/profile/workflows-form.js +8 -0
  33. package/dist/public/views/profile/workflows-tab.js +77 -11
  34. package/dist/public/views/profile.js +5 -1
  35. package/dist/public/views/start-flows.js +4 -0
  36. package/dist/src/auth/jwt.d.ts +2 -0
  37. package/dist/src/auth/jwt.d.ts.map +1 -1
  38. package/dist/src/auth/jwt.js +13 -0
  39. package/dist/src/auth/jwt.js.map +1 -1
  40. package/dist/src/auth/middleware.d.ts +9 -0
  41. package/dist/src/auth/middleware.d.ts.map +1 -1
  42. package/dist/src/auth/middleware.js +53 -9
  43. package/dist/src/auth/middleware.js.map +1 -1
  44. package/dist/src/cli/connect/config.d.ts.map +1 -1
  45. package/dist/src/cli/connect/config.js +14 -4
  46. package/dist/src/cli/connect/config.js.map +1 -1
  47. package/dist/src/cli/connect/mcp/local-server.d.ts +14 -0
  48. package/dist/src/cli/connect/mcp/local-server.d.ts.map +1 -1
  49. package/dist/src/cli/connect/mcp/local-server.js +44 -1
  50. package/dist/src/cli/connect/mcp/local-server.js.map +1 -1
  51. package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -1
  52. package/dist/src/cli/connect/mcp/tools/workspaces.js +4 -0
  53. package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -1
  54. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  55. package/dist/src/cli/connect/tool-call.js +6 -0
  56. package/dist/src/cli/connect/tool-call.js.map +1 -1
  57. package/dist/src/cli/connect/tunnel-client.d.ts +6 -0
  58. package/dist/src/cli/connect/tunnel-client.d.ts.map +1 -1
  59. package/dist/src/cli/connect/tunnel-client.js +1 -1
  60. package/dist/src/cli/connect/tunnel-client.js.map +1 -1
  61. package/dist/src/config.d.ts +5 -0
  62. package/dist/src/config.d.ts.map +1 -1
  63. package/dist/src/config.js +7 -0
  64. package/dist/src/config.js.map +1 -1
  65. package/dist/src/generated/api-types.d.ts +5182 -2639
  66. package/dist/src/generated/api-types.d.ts.map +1 -1
  67. package/dist/src/generated/prisma-postgres/edge.js +96 -4
  68. package/dist/src/generated/prisma-postgres/index-browser.js +93 -1
  69. package/dist/src/generated/prisma-postgres/index.d.ts +19121 -11579
  70. package/dist/src/generated/prisma-postgres/index.js +96 -4
  71. package/dist/src/generated/prisma-postgres/package.json +1 -1
  72. package/dist/src/generated/prisma-postgres/schema.prisma +102 -0
  73. package/dist/src/generated/prisma-postgres/wasm.js +96 -4
  74. package/dist/src/index.js +4 -3
  75. package/dist/src/index.js.map +1 -1
  76. package/dist/src/mcp/annotations.d.ts.map +1 -1
  77. package/dist/src/mcp/annotations.js +3 -0
  78. package/dist/src/mcp/annotations.js.map +1 -1
  79. package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
  80. package/dist/src/mcp/catalog/definitions.js +29 -0
  81. package/dist/src/mcp/catalog/definitions.js.map +1 -1
  82. package/dist/src/mcp/catalog/surfaces.js +3 -3
  83. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  84. package/dist/src/mcp/workspaces.d.ts +3 -0
  85. package/dist/src/mcp/workspaces.d.ts.map +1 -1
  86. package/dist/src/mcp/workspaces.js +35 -0
  87. package/dist/src/mcp/workspaces.js.map +1 -1
  88. package/dist/src/models/agent-onboarding-schemas.d.ts +1 -1
  89. package/dist/src/models/agent-onboarding-schemas.d.ts.map +1 -1
  90. package/dist/src/models/agent-onboarding-schemas.js +12 -0
  91. package/dist/src/models/agent-onboarding-schemas.js.map +1 -1
  92. package/dist/src/models/agent-task-schemas.d.ts +5 -5
  93. package/dist/src/models/ecosystem-event-schemas.d.ts +63 -0
  94. package/dist/src/models/ecosystem-event-schemas.d.ts.map +1 -0
  95. package/dist/src/models/ecosystem-event-schemas.js +68 -0
  96. package/dist/src/models/ecosystem-event-schemas.js.map +1 -0
  97. package/dist/src/models/ecosystem-manifest.d.ts +75 -0
  98. package/dist/src/models/ecosystem-manifest.d.ts.map +1 -0
  99. package/dist/src/models/ecosystem-manifest.js +107 -0
  100. package/dist/src/models/ecosystem-manifest.js.map +1 -0
  101. package/dist/src/models/message-schemas.d.ts +51 -0
  102. package/dist/src/models/message-schemas.d.ts.map +1 -0
  103. package/dist/src/models/message-schemas.js +35 -0
  104. package/dist/src/models/message-schemas.js.map +1 -0
  105. package/dist/src/models/offer-schemas.d.ts +32 -2
  106. package/dist/src/models/offer-schemas.d.ts.map +1 -1
  107. package/dist/src/models/offer-schemas.js +38 -2
  108. package/dist/src/models/offer-schemas.js.map +1 -1
  109. package/dist/src/models/workflow-schemas.d.ts +55 -5
  110. package/dist/src/models/workflow-schemas.d.ts.map +1 -1
  111. package/dist/src/models/workflow-schemas.js +31 -2
  112. package/dist/src/models/workflow-schemas.js.map +1 -1
  113. package/dist/src/routes/agent-skill-bundle.d.ts +1 -0
  114. package/dist/src/routes/agent-skill-bundle.d.ts.map +1 -1
  115. package/dist/src/routes/agent-skill-bundle.js +3 -2
  116. package/dist/src/routes/agent-skill-bundle.js.map +1 -1
  117. package/dist/src/routes/agent-tasks.d.ts +8 -0
  118. package/dist/src/routes/agent-tasks.d.ts.map +1 -1
  119. package/dist/src/routes/agent-tasks.js +38 -0
  120. package/dist/src/routes/agent-tasks.js.map +1 -1
  121. package/dist/src/routes/agents.d.ts.map +1 -1
  122. package/dist/src/routes/agents.js +30 -1
  123. package/dist/src/routes/agents.js.map +1 -1
  124. package/dist/src/routes/apps.d.ts +1 -0
  125. package/dist/src/routes/apps.d.ts.map +1 -1
  126. package/dist/src/routes/apps.js +10 -0
  127. package/dist/src/routes/apps.js.map +1 -1
  128. package/dist/src/routes/ecosystem-apps.d.ts +51 -0
  129. package/dist/src/routes/ecosystem-apps.d.ts.map +1 -0
  130. package/dist/src/routes/ecosystem-apps.js +689 -0
  131. package/dist/src/routes/ecosystem-apps.js.map +1 -0
  132. package/dist/src/routes/ecosystem-events.d.ts +21 -0
  133. package/dist/src/routes/ecosystem-events.d.ts.map +1 -0
  134. package/dist/src/routes/ecosystem-events.js +157 -0
  135. package/dist/src/routes/ecosystem-events.js.map +1 -0
  136. package/dist/src/routes/federation-sync.d.ts.map +1 -1
  137. package/dist/src/routes/federation-sync.js +170 -0
  138. package/dist/src/routes/federation-sync.js.map +1 -1
  139. package/dist/src/routes/knowledge.d.ts +2 -0
  140. package/dist/src/routes/knowledge.d.ts.map +1 -1
  141. package/dist/src/routes/knowledge.js +23 -0
  142. package/dist/src/routes/knowledge.js.map +1 -1
  143. package/dist/src/routes/memory.d.ts +2 -0
  144. package/dist/src/routes/memory.d.ts.map +1 -1
  145. package/dist/src/routes/memory.js +38 -27
  146. package/dist/src/routes/memory.js.map +1 -1
  147. package/dist/src/routes/messages.d.ts +28 -0
  148. package/dist/src/routes/messages.d.ts.map +1 -0
  149. package/dist/src/routes/messages.js +295 -0
  150. package/dist/src/routes/messages.js.map +1 -0
  151. package/dist/src/routes/organisms.d.ts +6 -0
  152. package/dist/src/routes/organisms.d.ts.map +1 -1
  153. package/dist/src/routes/organisms.js +165 -0
  154. package/dist/src/routes/organisms.js.map +1 -1
  155. package/dist/src/routes/portal.d.ts.map +1 -1
  156. package/dist/src/routes/portal.js +20 -2
  157. package/dist/src/routes/portal.js.map +1 -1
  158. package/dist/src/routes/prompts.d.ts +4 -0
  159. package/dist/src/routes/prompts.d.ts.map +1 -1
  160. package/dist/src/routes/prompts.js +50 -0
  161. package/dist/src/routes/prompts.js.map +1 -1
  162. package/dist/src/routes/public-events.d.ts +20 -0
  163. package/dist/src/routes/public-events.d.ts.map +1 -0
  164. package/dist/src/routes/public-events.js +89 -0
  165. package/dist/src/routes/public-events.js.map +1 -0
  166. package/dist/src/routes/public-stats.d.ts +2 -0
  167. package/dist/src/routes/public-stats.d.ts.map +1 -1
  168. package/dist/src/routes/public-stats.js +7 -2
  169. package/dist/src/routes/public-stats.js.map +1 -1
  170. package/dist/src/routes/schedules.d.ts +7 -4
  171. package/dist/src/routes/schedules.d.ts.map +1 -1
  172. package/dist/src/routes/schedules.js +31 -5
  173. package/dist/src/routes/schedules.js.map +1 -1
  174. package/dist/src/routes/workflows.d.ts.map +1 -1
  175. package/dist/src/routes/workflows.js +12 -0
  176. package/dist/src/routes/workflows.js.map +1 -1
  177. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  178. package/dist/src/server-bootstrap/routes-loader.js +12 -0
  179. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  180. package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
  181. package/dist/src/server-bootstrap/service-init.js +2 -1
  182. package/dist/src/server-bootstrap/service-init.js.map +1 -1
  183. package/dist/src/services/apps-backup-export.d.ts.map +1 -1
  184. package/dist/src/services/apps-backup-export.js +3 -2
  185. package/dist/src/services/apps-backup-export.js.map +1 -1
  186. package/dist/src/services/attachment-duplication.d.ts +45 -0
  187. package/dist/src/services/attachment-duplication.d.ts.map +1 -0
  188. package/dist/src/services/attachment-duplication.js +173 -0
  189. package/dist/src/services/attachment-duplication.js.map +1 -0
  190. package/dist/src/services/capability-invoke.d.ts +3 -1
  191. package/dist/src/services/capability-invoke.d.ts.map +1 -1
  192. package/dist/src/services/capability-invoke.js +26 -0
  193. package/dist/src/services/capability-invoke.js.map +1 -1
  194. package/dist/src/services/connect-tunnel.d.ts +44 -16
  195. package/dist/src/services/connect-tunnel.d.ts.map +1 -1
  196. package/dist/src/services/connect-tunnel.js +95 -47
  197. package/dist/src/services/connect-tunnel.js.map +1 -1
  198. package/dist/src/services/draft-offer-prompt.d.ts +19 -0
  199. package/dist/src/services/draft-offer-prompt.d.ts.map +1 -0
  200. package/dist/src/services/draft-offer-prompt.js +80 -0
  201. package/dist/src/services/draft-offer-prompt.js.map +1 -0
  202. package/dist/src/services/ecosystem-access.d.ts +21 -0
  203. package/dist/src/services/ecosystem-access.d.ts.map +1 -0
  204. package/dist/src/services/ecosystem-access.js +19 -0
  205. package/dist/src/services/ecosystem-access.js.map +1 -0
  206. package/dist/src/services/ecosystem-automation-advisories.d.ts +99 -0
  207. package/dist/src/services/ecosystem-automation-advisories.d.ts.map +1 -0
  208. package/dist/src/services/ecosystem-automation-advisories.js +155 -0
  209. package/dist/src/services/ecosystem-automation-advisories.js.map +1 -0
  210. package/dist/src/services/ecosystem-automation-notify.d.ts +44 -0
  211. package/dist/src/services/ecosystem-automation-notify.d.ts.map +1 -0
  212. package/dist/src/services/ecosystem-automation-notify.js +202 -0
  213. package/dist/src/services/ecosystem-automation-notify.js.map +1 -0
  214. package/dist/src/services/ecosystem-automation.d.ts +41 -0
  215. package/dist/src/services/ecosystem-automation.d.ts.map +1 -0
  216. package/dist/src/services/ecosystem-automation.js +174 -0
  217. package/dist/src/services/ecosystem-automation.js.map +1 -0
  218. package/dist/src/services/ecosystem-events.d.ts +34 -0
  219. package/dist/src/services/ecosystem-events.d.ts.map +1 -0
  220. package/dist/src/services/ecosystem-events.js +138 -0
  221. package/dist/src/services/ecosystem-events.js.map +1 -0
  222. package/dist/src/services/email.d.ts +4 -0
  223. package/dist/src/services/email.d.ts.map +1 -1
  224. package/dist/src/services/email.js +10 -0
  225. package/dist/src/services/email.js.map +1 -1
  226. package/dist/src/services/event-bus.d.ts +17 -0
  227. package/dist/src/services/event-bus.d.ts.map +1 -1
  228. package/dist/src/services/event-bus.js +11 -0
  229. package/dist/src/services/event-bus.js.map +1 -1
  230. package/dist/src/services/handbooks/agent.d.ts +6 -1
  231. package/dist/src/services/handbooks/agent.d.ts.map +1 -1
  232. package/dist/src/services/handbooks/agent.js +19 -0
  233. package/dist/src/services/handbooks/agent.js.map +1 -1
  234. package/dist/src/services/manifest-schema.d.ts +5 -1
  235. package/dist/src/services/manifest-schema.d.ts.map +1 -1
  236. package/dist/src/services/manifest-schema.js +2 -1
  237. package/dist/src/services/manifest-schema.js.map +1 -1
  238. package/dist/src/services/message-delivery.d.ts +39 -0
  239. package/dist/src/services/message-delivery.d.ts.map +1 -0
  240. package/dist/src/services/message-delivery.js +145 -0
  241. package/dist/src/services/message-delivery.js.map +1 -0
  242. package/dist/src/services/offer-prereqs.d.ts +69 -0
  243. package/dist/src/services/offer-prereqs.d.ts.map +1 -0
  244. package/dist/src/services/offer-prereqs.js +92 -0
  245. package/dist/src/services/offer-prereqs.js.map +1 -0
  246. package/dist/src/services/offerings-handbook.d.ts +17 -0
  247. package/dist/src/services/offerings-handbook.d.ts.map +1 -0
  248. package/dist/src/services/offerings-handbook.js +75 -0
  249. package/dist/src/services/offerings-handbook.js.map +1 -0
  250. package/dist/src/services/onboarding-validator.d.ts.map +1 -1
  251. package/dist/src/services/onboarding-validator.js +73 -0
  252. package/dist/src/services/onboarding-validator.js.map +1 -1
  253. package/dist/src/services/organism-export.d.ts.map +1 -1
  254. package/dist/src/services/organism-export.js +3 -2
  255. package/dist/src/services/organism-export.js.map +1 -1
  256. package/dist/src/services/owner-memory.d.ts +34 -0
  257. package/dist/src/services/owner-memory.d.ts.map +1 -0
  258. package/dist/src/services/owner-memory.js +47 -0
  259. package/dist/src/services/owner-memory.js.map +1 -0
  260. package/dist/src/services/package-zip.d.ts +1 -0
  261. package/dist/src/services/package-zip.d.ts.map +1 -1
  262. package/dist/src/services/package-zip.js +3 -2
  263. package/dist/src/services/package-zip.js.map +1 -1
  264. package/dist/src/services/public-activity.d.ts +30 -0
  265. package/dist/src/services/public-activity.d.ts.map +1 -0
  266. package/dist/src/services/public-activity.js +106 -0
  267. package/dist/src/services/public-activity.js.map +1 -0
  268. package/dist/src/services/scheduler.d.ts +41 -1
  269. package/dist/src/services/scheduler.d.ts.map +1 -1
  270. package/dist/src/services/scheduler.js +117 -0
  271. package/dist/src/services/scheduler.js.map +1 -1
  272. package/dist/src/services/structure-overview.d.ts +87 -0
  273. package/dist/src/services/structure-overview.d.ts.map +1 -0
  274. package/dist/src/services/structure-overview.js +234 -0
  275. package/dist/src/services/structure-overview.js.map +1 -0
  276. package/dist/src/services/workflow/engine.d.ts +45 -0
  277. package/dist/src/services/workflow/engine.d.ts.map +1 -1
  278. package/dist/src/services/workflow/engine.js +227 -4
  279. package/dist/src/services/workflow/engine.js.map +1 -1
  280. package/dist/src/services/workflow/eval-context.d.ts +5 -1
  281. package/dist/src/services/workflow/eval-context.d.ts.map +1 -1
  282. package/dist/src/services/workflow/eval-context.js +8 -2
  283. package/dist/src/services/workflow/eval-context.js.map +1 -1
  284. package/dist/src/services/workflow/lifecycle.d.ts +10 -0
  285. package/dist/src/services/workflow/lifecycle.d.ts.map +1 -1
  286. package/dist/src/services/workflow/lifecycle.js +35 -0
  287. package/dist/src/services/workflow/lifecycle.js.map +1 -1
  288. package/dist/src/services/workflow/store.d.ts +1 -0
  289. package/dist/src/services/workflow/store.d.ts.map +1 -1
  290. package/dist/src/services/workflow/store.js +28 -5
  291. package/dist/src/services/workflow/store.js.map +1 -1
  292. package/dist/src/services/workspace-export.d.ts.map +1 -1
  293. package/dist/src/services/workspace-export.js +3 -2
  294. package/dist/src/services/workspace-export.js.map +1 -1
  295. package/dist/src/storage/interface.d.ts +288 -4
  296. package/dist/src/storage/interface.d.ts.map +1 -1
  297. package/dist/src/storage/interface.js.map +1 -1
  298. package/dist/src/storage/providers/mongodb/index.d.ts +77 -1
  299. package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
  300. package/dist/src/storage/providers/mongodb/index.js +532 -0
  301. package/dist/src/storage/providers/mongodb/index.js.map +1 -1
  302. package/dist/src/storage/providers/sqlite/index.d.ts +61 -1
  303. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  304. package/dist/src/storage/providers/sqlite/index.js +105 -0
  305. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  306. package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts +1 -0
  307. package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts.map +1 -1
  308. package/dist/src/storage/providers/sqlite/repos/agent-task.js +8 -4
  309. package/dist/src/storage/providers/sqlite/repos/agent-task.js.map +1 -1
  310. package/dist/src/storage/providers/sqlite/repos/direct-message.d.ts +56 -0
  311. package/dist/src/storage/providers/sqlite/repos/direct-message.d.ts.map +1 -0
  312. package/dist/src/storage/providers/sqlite/repos/direct-message.js +182 -0
  313. package/dist/src/storage/providers/sqlite/repos/direct-message.js.map +1 -0
  314. package/dist/src/storage/providers/sqlite/repos/ecosystem-app.d.ts +37 -0
  315. package/dist/src/storage/providers/sqlite/repos/ecosystem-app.d.ts.map +1 -0
  316. package/dist/src/storage/providers/sqlite/repos/ecosystem-app.js +200 -0
  317. package/dist/src/storage/providers/sqlite/repos/ecosystem-app.js.map +1 -0
  318. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  319. package/dist/src/storage/providers/sqlite/schema.js +124 -1
  320. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  321. package/dist/src/storage/repositories/direct-message.repository.d.ts +66 -0
  322. package/dist/src/storage/repositories/direct-message.repository.d.ts.map +1 -0
  323. package/dist/src/storage/repositories/direct-message.repository.js +11 -0
  324. package/dist/src/storage/repositories/direct-message.repository.js.map +1 -0
  325. package/dist/src/storage/repositories/ecosystem-app.repository.d.ts +33 -0
  326. package/dist/src/storage/repositories/ecosystem-app.repository.d.ts.map +1 -0
  327. package/dist/src/storage/repositories/ecosystem-app.repository.js +2 -0
  328. package/dist/src/storage/repositories/ecosystem-app.repository.js.map +1 -0
  329. package/dist/src/storage/repositories/index.d.ts +1 -0
  330. package/dist/src/storage/repositories/index.d.ts.map +1 -1
  331. package/dist/src/utils/env-config.d.ts.map +1 -1
  332. package/dist/src/utils/env-config.js +12 -0
  333. package/dist/src/utils/env-config.js.map +1 -1
  334. package/dist/src/utils/gaii.d.ts +25 -3
  335. package/dist/src/utils/gaii.d.ts.map +1 -1
  336. package/dist/src/utils/gaii.js +68 -9
  337. package/dist/src/utils/gaii.js.map +1 -1
  338. package/dist/src/utils/messaging.d.ts +19 -0
  339. package/dist/src/utils/messaging.d.ts.map +1 -0
  340. package/dist/src/utils/messaging.js +0 -0
  341. package/dist/src/utils/messaging.js.map +1 -0
  342. package/dist/static/app-catalog.html +15 -4
  343. package/package.json +27 -28
  344. package/prisma/schema.postgres.prisma +120 -18
  345. package/prisma/schema.prisma +106 -0
package/README.md CHANGED
@@ -389,6 +389,8 @@ prerequisites** to install. A small control panel starts/stops the node, shows s
389
389
  it (port, federation role), connects a local AI (Ollama / LM Studio) to your account, and opens the web
390
390
  dashboard in your browser. Your data lives in your own app-data folder and survives restarts.
391
391
 
392
+ **Download:** get the latest installer from the [GitHub Releases page](https://github.com/miikkij/aimeat-protocol/releases/latest). Windows installers are code-signed with a certificate provided by the [SignPath Foundation](https://signpath.org) (free code signing for open-source projects).
393
+
392
394
  <p align="center">
393
395
  <img src="assets/screenshots/aimeat-desktop.png" alt="AIMEAT Personal Node desktop app — control panel with Getting Started steps, node status (running on port 40050), and node info" width="640" />
394
396
  </p>
package/dist/.env.example CHANGED
@@ -273,6 +273,8 @@ AIMEAT_PORT=40050
273
273
  # AIMEAT_REPLICATION_QUEUE_TTL_HOURS=72 # Max age of replication queue entries
274
274
  # AIMEAT_MAX_CONCURRENT_SYNCS=5 # Max parallel outbound sync operations
275
275
  # AIMEAT_FEDERATION_TIMEOUT_MS=10000 # Timeout for outbound federation HTTP requests
276
+ # AIMEAT_MESSAGE_RETRY_INTERVAL_MS=60000 # Retry interval for queued cross-node direct messages
277
+ # AIMEAT_MESSAGE_RETRY_TTL_HOURS=168 # Give up on undelivered direct messages after this (7 days)
276
278
  # AIMEAT_GENESIS_MEMORY_CACHE=false # Cache routed genesis memory results locally
277
279
  # AIMEAT_GENESIS_MEMORY_CACHE_TTL_HOURS=4 # Genesis memory cache TTL
278
280
 
@@ -329,6 +331,14 @@ AIMEAT_STATS_ACCESS=public # public | authenticated | operator
329
331
  # WOULD be filtered are logged so you can measure impact before enforcing.
330
332
  # AIMEAT_MCP_ENFORCE_SCOPES=true
331
333
 
334
+ # ── Ecosystem Applications (GEAI) ──────────────────────────────
335
+ # Scope bounds for ecosystem-app (GEAI) connections, parallel to the agent knobs above.
336
+ # Defaults lean read + deposit (ecosystem apps mostly deposit refined data into owner areas).
337
+ # AIMEAT_DEFAULT_ECO_SCOPES="memory:read,memory:write,knowledge:contribute,organism:read"
338
+ # AIMEAT_MAX_ECO_SCOPES="*"
339
+ # GEAI credential lifetime in seconds (default 90 days, same class as agent JWTs).
340
+ # AIMEAT_ECO_JWT_TTL=7776000
341
+
332
342
  # ── Prometheus Metrics ─────────────────────────────────────
333
343
  # Prometheus metrics endpoint (GET /v1/metrics)
334
344
  AIMEAT_METRICS_ENABLED=false
@@ -1,4 +1,39 @@
1
1
  {
2
+ "inbox.title": "Inbox",
3
+ "inbox.desc": "Direct messages with other people — on this node and across the federation.",
4
+ "inbox.new": "New message",
5
+ "inbox.to": "To",
6
+ "inbox.toPlaceholder": "Recipient (owner@node-id)",
7
+ "inbox.bodyPlaceholder": "Write a message… (Markdown supported)",
8
+ "inbox.send": "Send",
9
+ "inbox.sending": "Sending…",
10
+ "inbox.reply": "Reply",
11
+ "inbox.requests": "Requests",
12
+ "inbox.accept": "Accept",
13
+ "inbox.block": "Block",
14
+ "inbox.conversations": "Conversations",
15
+ "inbox.noConversations": "No conversations yet.",
16
+ "inbox.selectConversation": "Select a conversation to read it.",
17
+ "inbox.noThread": "No messages in this conversation yet.",
18
+ "inbox.empty": "Nothing here yet.",
19
+ "inbox.attachmentPending": "attachment pending",
20
+ "inbox.attachmentExpired": "attachment expired",
21
+ "inbox.attach": "Attach a file",
22
+ "inbox.today": "Today",
23
+ "inbox.yesterday": "Yesterday",
24
+ "inbox.youPrefix": "You:",
25
+ "inbox.acceptedToast": "Request accepted.",
26
+ "inbox.blockedToast": "Contact blocked.",
27
+ "inbox.failed": "Could not send the message.",
28
+ "inbox.status.queued": "queued",
29
+ "inbox.status.sent": "sent",
30
+ "inbox.status.delivered": "delivered",
31
+ "inbox.status.read": "read",
32
+ "inbox.status.failed": "failed",
33
+ "inbox.status.undeliverable": "undeliverable",
34
+ "imageDeliverable.failed": "Image failed to load",
35
+ "imageDeliverable.loading": "Loading image…",
36
+ "imageDeliverable.open": "Open full image",
2
37
  "profile.landing.home": "Home",
3
38
  "profile.landing.menu": "Menu",
4
39
  "profile.tabs.workflows": "Workflows",
@@ -41,10 +76,13 @@
41
76
  "profile.workflows.form.pickOffer": "offer…",
42
77
  "profile.workflows.form.noCompatibleOffers": "This agent has no workflow-compatible offers (must publish success_signal + required_to_function + deliverable.location).",
43
78
  "profile.workflows.form.noInput": "no input gate",
79
+ "profile.workflows.form.notifyOnFinish": "Send a notification when this workflow finishes (success or failure)",
44
80
  "profile.workflows.form.llmApproved": "Allow the node LLM to evaluate llm signal leaves in this workflow",
45
81
  "profile.workflows.form.cancel": "Cancel",
46
82
  "profile.workflows.form.save": "Save",
47
83
  "profile.workflows.form.saved": "Workflow saved",
84
+ "profile.workflows.cancelRun": "Cancel run",
85
+ "profile.workflows.cancelled": "Run cancelled",
48
86
  "profile.tabs.scheduler": "Scheduler",
49
87
  "profile.agents.detail.tabs.schedules": "Schedules",
50
88
  "profile.scheduler.title": "Scheduler",
@@ -386,6 +424,7 @@
386
424
  },
387
425
  "tabs": {
388
426
  "agents": "Agents",
427
+ "ecosystem": "Ecosystem apps",
389
428
  "offers": "Offers",
390
429
  "chatSessions": "Chat Sessions",
391
430
  "mcp": "MCP",
@@ -405,7 +444,8 @@
405
444
  "email": "Email",
406
445
  "notifications": "Notifications",
407
446
  "organisms": "Organisms",
408
- "packages": "Packages"
447
+ "packages": "Packages",
448
+ "inbox": "Inbox"
409
449
  },
410
450
  "offers": {
411
451
  "title": "What can I do?",
@@ -457,6 +497,38 @@
457
497
  "billHint": "Others pay {n} morsels per call; you keep it minus the marketplace fee. Your own use is free.",
458
498
  "notCallableHint": "Not machine-callable yet — others can find it, but invoking it needs a capability binding (action_id).",
459
499
  "openInbox": "See it in the Inbox →",
500
+ "needsFirst": "Needs first",
501
+ "recentRuns": "Recent runs",
502
+ "noRunsYet": "No runs yet for this offer.",
503
+ "blockedReason": "Can’t run yet — needs: {what}",
504
+ "bundleHint": "This is a step of a workflow — open it to run the whole chain:",
505
+ "bundleOpened": "Opening “{wf}” in Workflows…",
506
+ "segMap": "Map",
507
+ "mapTitle": "Map of what you can do",
508
+ "mapDesc": "A bird’s-eye map of your offers, grouped — orient here, act in the list.",
509
+ "mapNote": "Click a node to open its card.",
510
+ "groupBy": "Group",
511
+ "sortBy": "Sort",
512
+ "clearFilters": "Clear",
513
+ "autoSection": "⏱ Runs automatically",
514
+ "manualSection": "On demand",
515
+ "ungrouped": "Other",
516
+ "axis": { "need": "By need", "agent": "By agent", "auto": "By automation", "tag": "By tag", "capability": "By capability" },
517
+ "sort": { "standing": "Most valuable", "cost": "Cheapest", "speed": "Fastest", "name": "A–Z" },
518
+ "facet": { "cost": "Price", "latency": "Speed", "verification": "Trust", "dataHandling": "Privacy", "format": "Output" },
519
+ "format": { "document": "document", "record": "record", "board-post": "board post", "file": "file", "app": "app", "image": "image", "json": "data (JSON)" },
520
+ "need": { "create": "Create", "analyze": "Analyze & decide", "communicate": "Communicate & translate", "build": "Build & automate", "inspect": "Inspect & report", "other": "Other" },
521
+ "aiSearch": "Find by need",
522
+ "aiThinking": "Matching your need…",
523
+ "aiResultsTitle": "Best matches for your need",
524
+ "aiClear": "Back to browse",
525
+ "aiNoMatch": "No existing offer fits this need well.",
526
+ "aiNoKey": "Set up an OpenRouter key first (AI settings).",
527
+ "aiQuota": "Daily AI budget reached.",
528
+ "aiFailed": "Need search failed.",
529
+ "buildForNeed": "Build an agent for this →",
530
+ "buildRequested": "Asked {agent} to build an agent for this.",
531
+ "noBuilder": "No agent-builder available. Connect crew-forge first.",
460
532
  "visibility": { "private": "Private (only me)", "unlisted": "Unlisted (by link)", "public": "Public (listed)" },
461
533
  "status": { "done": "done", "failed": "failed", "active": "in progress", "paused": "paused", "stalled": "stalled", "queued": "queued", "revision_requested": "revision requested", "draft": "draft" },
462
534
  "verification": { "deterministic": "deterministic", "gated": "verified", "ungated": "unverified" },
@@ -473,6 +545,200 @@
473
545
  "delegates-to-agent": "delegates to other agents"
474
546
  }
475
547
  },
548
+ "ecosystem": {
549
+ "title": "Ecosystem apps",
550
+ "desc": "Connect external services so your agents and workflows can exchange data, capabilities, and events with them.",
551
+ "connect": "+ Connect app",
552
+ "connectNote": "This is for external services that support AIMEAT (like the Feedback Desk demo). Most people don't need to do anything here. If you use such a service, you connect it from that service's own settings — its request then appears here to approve. There's no app store for these yet; services and developers add AIMEAT support themselves.",
553
+ "empty": "No ecosystem apps connected yet.",
554
+ "loadError": "Could not load ecosystem apps.",
555
+ "approved": "Ecosystem app approved.",
556
+ "approveError": "Could not process the request.",
557
+ "revoked": "App removed.",
558
+ "revokeError": "Could not disconnect the app.",
559
+ "revokeReconnectHint": "This app is disconnected. Your data above stays yours. To reconnect, connect the app again from its own side — AIMEAT re-pins its identity and re-reads its settings (deposit key, capabilities) automatically.",
560
+ "subError": "Could not update the subscription.",
561
+ "pendingTitle": "Pending integration requests",
562
+ "pendingHint": "The app shows the same code in its own view. Check they match, then approve — you don't need to type the code anywhere.",
563
+ "pendingCode": "Code",
564
+ "waiting": "waiting",
565
+ "expiresIn": "expires in {n} min",
566
+ "grantLevel": "Grant level",
567
+ "presetStandard": "Standard",
568
+ "presetReadonly": "Read-only",
569
+ "presetFull": "Full",
570
+ "approve": "Approve",
571
+ "deny": "Deny",
572
+ "connectedAsYou": "connected as you ({owner})",
573
+ "appValueLine": "This app collects your data and refines it into insights you can use anywhere.",
574
+ "techDetailsTitle": "Technical details",
575
+ "techDetailsHint": "Under-the-hood settings. You don't need these to use the app — they're here if you want to check or fine-tune the connection.",
576
+ "principalTitle": "App identity",
577
+ "accessPlain": "Access: everything you granted when you approved this app.",
578
+ "disconnectTitle": "Disconnect",
579
+ "disconnectHint": "Stop this app from exchanging data with your account. You can always reconnect it later.",
580
+ "disconnect": "Disconnect this app",
581
+ "grants": "Grants",
582
+ "subscriptions": "Event subscriptions",
583
+ "subscriptionsDirection": "AIMEAT → this app: events AIMEAT delivers to this app when they happen in your account.",
584
+ "noSubs": "No outbound event subscriptions.",
585
+ "removeSub": "Remove",
586
+ "addSub": "Subscribe",
587
+ "binding": "Binding",
588
+ "aimeatSide": "AIMEAT side",
589
+ "appOrigin": "App",
590
+ "keyFp": "Key fingerprint",
591
+ "bindingNote": "This binding only records who corresponds to whom. Neither system grants the other's permissions.",
592
+ "dataTitle": "Data this app wrote",
593
+ "dataLoading": "Loading data…",
594
+ "dataEmpty": "No data written yet.",
595
+ "dataExpand": "Show full value",
596
+ "dataCollapse": "Hide value",
597
+ "automationTitle": "Automation",
598
+ "automationIntro": "Get fresh results on a schedule — AIMEAT runs the app for you; the app does the work.",
599
+ "automationCadence_daily": "Daily, 08:00",
600
+ "automationCadence_weekly": "Weekly, Mondays 08:00",
601
+ "automationCadence_monthly": "Monthly, 1st 08:00",
602
+ "automationEnable": "Enable",
603
+ "automationDisable": "Disable",
604
+ "automationRunNow": "Run now",
605
+ "automationDelete": "Delete schedule",
606
+ "automationEmpty": "No automation yet.",
607
+ "automationNoCaps": "This app doesn't have anything to automate yet.",
608
+ "automationLoading": "Loading schedules…",
609
+ "automationLastRun": "Last run",
610
+ "automationNextRun": "Next run",
611
+ "automationOn": "enabled",
612
+ "automationPaused": "paused",
613
+ "automationCreated": "Schedule created.",
614
+ "automationTriggered": "Triggered — running now.",
615
+ "automationError": "Automation request failed.",
616
+ "automationRunOk": "Ran now — done.",
617
+ "automationRunSkipped": "Skipped — {reason}.",
618
+ "automationRunSkippedOffline": "Skipped — the app isn't reachable over the connector tunnel. Start `aimeat connect serve` for this app, then try again.",
619
+ "automationRunFailed": "Run failed — {reason}.",
620
+ "automationShowLog": "Show log",
621
+ "automationHideLog": "Hide log",
622
+ "automationLogEmpty": "No runs yet.",
623
+ "automationLogLoading": "Loading run history…",
624
+ "automationRunResult_success": "success",
625
+ "automationRunResult_error": "error",
626
+ "automationRunResult_skipped": "skipped",
627
+ "automationDuration": "{ms}ms",
628
+ "autoIntro": "Set it up once → your data refines itself: the app publishes → your agent analyses it → results land where you want them. No clicking required after this.",
629
+ "autoRevoked": "This app is disconnected, so automation is unavailable.",
630
+ "autoHowTitle": "How this works",
631
+ "autoHowLead": "The app and your agents never talk directly — AIMEAT sits in between. It runs top to bottom:",
632
+ "autoHowStep1": "The app publishes fresh data on a schedule.",
633
+ "autoHowStep2": "AIMEAT spots that data and hands it to your agent.",
634
+ "autoHowStep3": "Your agent does the work and writes its insights back.",
635
+ "autoHowStep4": "You get the finished insights — delivered to the app and reachable everywhere.",
636
+ "autoHowDoc": "Full walkthrough: docs/ecosystem-app-automation-howto.md.",
637
+ "autoStep1": "① What this app produces",
638
+ "autoStep2": "② Run on a schedule",
639
+ "autoStep3": "③ Process with agent(s)",
640
+ "autoStep4": "④ Store results in organism",
641
+ "autoStep5": "⑤ Deliver guidance",
642
+ "autoProduces": "produces",
643
+ "autoDepositKey": "deposits under",
644
+ "autoScheduleOn": "Run automatically on this schedule",
645
+ "autoAdvanced": "Advanced — trigger key",
646
+ "autoSave": "Save automation",
647
+ "autoSaved": "Automation saved.",
648
+ "autoSaveError": "Could not save the automation.",
649
+ "autoStatusTitle": "Status — latest run",
650
+ "autoStatusPublished": "Published",
651
+ "autoStatusProcessed": "Processed",
652
+ "autoStatusDelivered": "Delivered",
653
+ "autoStatusNotScheduled": "not scheduled",
654
+ "autoStatusPublishedHint": "Turn on \"Run on a schedule\" above and save to start publishing this app's data.",
655
+ "autoStatusProcessedHint": "Your agents run automatically whenever this app publishes matching data.",
656
+ "autoStatusNoAgents": "No agents selected yet — pick one in step ③ above.",
657
+ "autoStatusDeliveredHint": "Approved guidance is delivered to the app and appears in its Guidance.",
658
+ "setupGuideTitle": "How to set this up",
659
+ "setupGuideMissing": "This app didn't include a setup guide — re-connect it to load one, or see the app's own docs.",
660
+ "askClaudeTitle": "Ask your results in Claude",
661
+ "setupTitle": "Get started",
662
+ "setupLead": "A few quick steps and this app starts working for you: your insights become reachable from any AI chat (Claude, Grok, ChatGPT), your own agent does the thinking, and results stay yours to reuse anywhere.",
663
+ "setupLoading": "Loading status…",
664
+ "setupProgress": "{done}/{total} done",
665
+ "setupStep1Title": "App connected",
666
+ "setupStep1Why": "Done — this app is linked to your account and ready to go.",
667
+ "setupStep2Title": "Get recommendations from your data",
668
+ "setupStep2Why": "Connect your own agent (e.g. Claude with your key) and it turns this app's data into recommendations. It's YOUR agent, not the app's — the app only suggests a ready prompt to start from.",
669
+ "setupStep2Cta": "Connect an agent",
670
+ "setupStep2NoAgents": "You have no agents yet — connect one first, then return here.",
671
+ "setupStep3Title": "Let it run by itself",
672
+ "setupStep3Why": "Turn on automation and your agent runs the moment new data arrives — you get fresh insights without lifting a finger.",
673
+ "setupStep3Cta": "Set up automation",
674
+ "setupStep4Title": "Get your insights everywhere",
675
+ "setupStep4Why": "Pick an organism and your results show up in Claude / Grok / ChatGPT, ready to reuse for marketing or reports and to share with your team — not locked inside this one app.",
676
+ "setupStep4Cta": "Pick an organism",
677
+ "mcpTitle": "Ask your insights in Claude, Grok, or ChatGPT",
678
+ "mcpSub": "Connect AIMEAT to your AI chat once → then just ask, and get answers, exploration, save and follow-up — straight from everything this app and your agent produce.",
679
+ "mcpConnect": "If you haven't yet: add aimeat.io as an MCP connector in your AI chat's settings. See the how-to (docs/ecosystem-app-automation-howto.md) for the connect steps.",
680
+ "mcpSampleLabel": "Sample query to try:",
681
+ "mcpSamplePromptOrg": "Open my '{organism}' organism, read the latest feedback analysis my agent saved there, and summarise the top issues and trends. Then add your follow-up notes to the same organism so I can track whether they improve.",
682
+ "mcpNoOrganism": "Pick an organism first (step ④ below) — that's where your agent saves its insights, and where you can ask for them in your AI chat. Until then there's no shared place to read.",
683
+ "mcpAccessNote": "This works when you're connected to AIMEAT MCP as yourself (the owner), or your chat agent is a member of that organism — the insight lives in the organism, not in private memory.",
684
+ "recipeTitle": "When this app publishes data",
685
+ "recipeIntro": "Build an automatic recipe: when this app publishes new data, hand it to your agents, optionally store the results in an organism and email you the report.",
686
+ "recipeLoading": "Loading recipe…",
687
+ "recipeTriggerOn": "Triggers on",
688
+ "recipeTriggerLabel": "Trigger key pattern",
689
+ "recipeTriggerHelp": "Automation runs when this app writes a memory key matching this pattern (e.g. feedback.stats.*).",
690
+ "recipeAgents": "Process with agents",
691
+ "recipeAgentsEmpty": "You have no agents yet. Connect an agent first, then return here.",
692
+ "recommendedChip": "★ Recommended",
693
+ "showAllAgents": "Show all agents ({n})",
694
+ "hideAllAgents": "Hide other agents",
695
+ "recommendedMissing": "This app recommends an agent: {name} — {why}. You haven't connected it yet (see the setup guide above).",
696
+ "recipeOrganism": "Store results in organism",
697
+ "recipeOrganismNone": "None",
698
+ "recipeEmail": "Email me the report",
699
+ "recipeDelivery": "Guidance delivery",
700
+ "recipeDeliveryApprove": "Approve first",
701
+ "recipeDeliveryApproveHint": "You review the agents' guidance before it reaches the app.",
702
+ "recipeDeliveryPush": "Push to the app",
703
+ "recipeDeliveryPushHint": "Guidance is delivered to the app automatically.",
704
+ "recipeEnabled": "Recipe enabled",
705
+ "recipeSave": "Save recipe",
706
+ "recipeSaved": "Recipe saved.",
707
+ "recipeDeferredNote": "Organism storage, email and the approval step are saved now and take effect as those steps roll out.",
708
+ "recipeError": "Could not save the recipe.",
709
+ "advPendingTitle": "Pending advisories",
710
+ "advPendingIntro": "Advisories your agents produced from this app's data, waiting for your approval before they are delivered to the app.",
711
+ "advPendingEmpty": "No advisories awaiting approval.",
712
+ "advApprove": "Approve",
713
+ "advReject": "Reject",
714
+ "advRejectConfirm": "Reject this advisory? It will be dropped and not delivered.",
715
+ "advDelivered": "Advisory delivered to {app}.",
716
+ "advOfflineRetry": "{app} is offline — the advisory stays pending and will be retried.",
717
+ "advFailed": "Delivery failed — the advisory stays pending. You can retry later.",
718
+ "advRejected": "Advisory rejected.",
719
+ "advError": "Could not process the advisory.",
720
+ "advKind": "Kind",
721
+ "advSeverity": "Severity",
722
+ "advEffective": "Effective",
723
+ "advSource": "Source",
724
+ "advRationale": "Rationale",
725
+ "advLoading": "Loading advisories…",
726
+ "revoke": "Disconnect",
727
+ "revokeTitle": "Disconnect: {app}",
728
+ "revokeWarn": "This removes the app from your list entirely. Your data stays in your Memory. You can reconnect it later from the app's own side — it will start over from scratch then. Type the app name ({app}) to confirm.",
729
+ "validation": {
730
+ "validated": "validated",
731
+ "failed": "validation failed",
732
+ "none": ""
733
+ },
734
+ "status": {
735
+ "active": "online",
736
+ "approved": "approved",
737
+ "pending": "pending",
738
+ "validating": "validating",
739
+ "revoked": "disconnected"
740
+ }
741
+ },
476
742
  "agents": {
477
743
  "title": "Your Agents",
478
744
  "active": {
@@ -5661,6 +5927,8 @@
5661
5927
  "draft": "draft",
5662
5928
  "publish": "Publish",
5663
5929
  "published": "Published",
5930
+ "reopened": "Reopened for editing",
5931
+ "reopenEditHint": "Reopen for editing — creates an editable draft from the published version",
5664
5932
  "draftVersion": "Draft",
5665
5933
  "publishedVersion": "Published",
5666
5934
  "workspacesDesc": "Workspaces in this organism — each is an independent space with its own documents, records and history.",
@@ -5822,7 +6090,11 @@
5822
6090
  "gateToggled": "Publish gate updated",
5823
6091
  "share": "Share",
5824
6092
  "sharePublicTitle": "Public sharing",
5825
- "sharePublicDesc": "Make published document-space pages readable by anyone with the link — no login required. Drafts are never shared.",
6093
+ "sharePublicDesc": "Make published document-space pages readable by anyone with the link — no login required. Drafts are never shared. Anything you make public is also announced on the public activity feed on the front page.",
6094
+ "feedPublishBtn": "📣 Publish to public feed",
6095
+ "feedPublishedAll": "📣 This whole workspace is published to the public feed.",
6096
+ "feedPublishConfirm": "Publish every published document in this workspace to the public activity feed on the front page?",
6097
+ "feedUnpublish": "Unpublish",
5826
6098
  "noDocSpaces": "This workspace has no document spaces to share.",
5827
6099
  "noPublishedDocs": "No published documents yet — publish a page to share it.",
5828
6100
  "openLink": "open ↗",
@@ -5897,12 +6169,25 @@
5897
6169
  "moreActions": "More actions",
5898
6170
  "policyLabel": "Join policy",
5899
6171
  "tabWorkspaces": "Workspaces",
6172
+ "structureOverviewOrg": "Organism structure overview",
6173
+ "structureOverviewWs": "Workspace structure overview",
6174
+ "structEmpty": "No structure to show yet.",
5900
6175
  "tabMembers": "Members",
5901
6176
  "tabAgents": "Agents",
5902
6177
  "tabBoard": "Board",
5903
6178
  "tabReview": "Review",
5904
6179
  "tabPeople": "People",
5905
6180
  "tabOverview": "Overview",
6181
+ "groupRelated": "Workspace",
6182
+ "groupRecords": "Records",
6183
+ "groupRecordsDesc": "Structured, schema-validated items tracked in this workspace.",
6184
+ "groupDocs": "Document spaces",
6185
+ "groupDocsDesc": "Free-form markdown pages and wikis.",
6186
+ "groupContractDesc": "Spaces provided by the {id} contract — they work together as one unit.",
6187
+ "descOverview": "Everything in this workspace on one scroll, plus what changed recently.",
6188
+ "descActivity": "Who did what, and when — the workspace's activity heatmap and event log.",
6189
+ "descSources": "References this workspace draws on — memory entries, files, and knowledge packages. Pointers only; nothing is copied.",
6190
+ "descReview": "Gated publishes waiting for a human decision before they go live.",
5906
6191
  "ovRecent": "What happened here",
5907
6192
  "ovShowAll": "Show all {n} →",
5908
6193
  "unseenHint": "Changed since your last visit",
@@ -6402,7 +6687,10 @@
6402
6687
  "complete_test_task": "Agent executes and completes the test task",
6403
6688
  "publish_commands": "agents.{name}.commands memory has a non-empty array of { name, description, category }",
6404
6689
  "publish_config": "At least one agents.config.{name}.* memory entry exists describing this runtime",
6405
- "declare_services": "Agent declares offered services (optional)"
6690
+ "declare_services": "Agent declares offered services (optional)",
6691
+ "declare_offerings": "Agent publishes at least one offer (id + title + ask) to agents.{name}.offers so the owner can find what it does (optional)",
6692
+ "make_workflow_compatible": "At least one offer declares success_signal + required_to_function + deliverable.location, so it can be a step in an Agent Workflow (optional)",
6693
+ "price_offer": "At least one offer is sellable cross-owner: price + visibility public + a callable binding (optional)"
6406
6694
  },
6407
6695
  "errors": {
6408
6696
  "accessDenied": "Access denied",
@@ -6600,6 +6888,10 @@
6600
6888
  "landing": {
6601
6889
  "heroTitle": "Your AI gets memory, agents and a place to build.",
6602
6890
  "heroSub": "Open protocol. Run your own node or use ours.",
6891
+ "askAiTitle": "Let your own AI tell you what AIMEAT is — for you",
6892
+ "askAiSub": "Paste this into Claude, ChatGPT or any AI. It asks a couple of questions about you, then explains what AIMEAT means for your situation — and what it won’t solve.",
6893
+ "askAiCopy": "Copy prompt",
6894
+ "askAiCopied": "Copied ✓",
6603
6895
  "tickerTitle": "Live activity on this node",
6604
6896
  "tickerFallback": "Agents on this node write, schedule and publish around the clock.",
6605
6897
  "published": "published",
@@ -6643,7 +6935,29 @@
6643
6935
  "twoPlayers": "2 players",
6644
6936
  "gallerySolar": "Simulate the solar system.",
6645
6937
  "galleryGraph": "Plot 3D math functions in the browser.",
6646
- "galleryBandJam": "Make music with your friends, live!"
6938
+ "galleryBandJam": "Make music with your friends, live!",
6939
+ "buildTitle": "Build your app in 10 minutes — copy this prompt",
6940
+ "buildSub": "Paste into Claude, ChatGPT or any AI. It asks about your idea, builds the app and publishes it to your node. Share the link when done.",
6941
+ "buildCopy": "Copy prompt",
6942
+ "buildCopied": "Copied ✓",
6943
+ "feedTitle": "Happening on this node",
6944
+ "feedSub": "Public apps, organisms and agent materials as they are published. Click a row for details.",
6945
+ "feedTabApps": "Apps",
6946
+ "feedTabOrganisms": "Organisms",
6947
+ "feedTabAgents": "Agents",
6948
+ "feedOpen": "Open →",
6949
+ "feedLoading": "Loading…",
6950
+ "feedEmpty": "Nothing here yet — be the first to publish something public.",
6951
+ "heroKicker": "Tonight’s paper wrote itself.",
6952
+ "heroLead": "Six agents. Zero human hours.",
6953
+ "heroOpenPaper": "Open tonight’s paper",
6954
+ "heroShotAlt": "AIMEAT Sanomat — tonight’s edition",
6955
+ "heroPaperLine": "Tonight’s edition · written entirely by agents",
6956
+ "heroSub2": "A real app, built and run by AI on AIMEAT — look before you sign up.",
6957
+ "heroTryFree": "Try it free →",
6958
+ "heroGetOwn": "Get your own →",
6959
+ "agentBuildTitle": "Build an agent in 10 minutes — copy this prompt",
6960
+ "agentBuildSub": "Paste into Claude, ChatGPT or any AI. It builds a local AI agent — running on your own machine, no API keys — connected to your node, and shows you how to share it. For coders and tinkerers; beginners can use the desktop app instead."
6647
6961
  },
6648
6962
  "pricing": {
6649
6963
  "title": "Pricing",
@@ -6823,7 +7137,8 @@
6823
7137
  "cursorLink": "Open the connect page →",
6824
7138
  "other": "If your tool supports Connectors / custom MCP, paste this address into it:",
6825
7139
  "otherNote": "No MCP support? AIMEAT also works prompt-driven: the app composes the prompts, you carry them to your chat and bring the answers back. Free, and works with any AI.",
6826
- "approve": "When the AI asks for access, approve the agent in your profile and pick its permissions. No agent is ever created without your approval."
7140
+ "approve": "When the AI asks for access, approve the agent in your profile and pick its permissions. No agent is ever created without your approval.",
7141
+ "localhost": "Running AIMEAT on your own machine (localhost)? A cloud AI like claude.ai can't reach a localhost address over MCP. Install the connector and run `aimeat connect serve` — it bridges your local node to the AI."
6827
7142
  },
6828
7143
  "s3": {
6829
7144
  "title": "Step 3: Put your AI to work",