aimeat 1.2.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 (1366) hide show
  1. package/dist/.env.example +300 -0
  2. package/dist/bin/aimeat.d.ts +3 -0
  3. package/dist/bin/aimeat.d.ts.map +1 -0
  4. package/dist/bin/aimeat.js +22 -0
  5. package/dist/bin/aimeat.js.map +1 -0
  6. package/dist/locales/en.json +4566 -0
  7. package/dist/locales/fi.json +4566 -0
  8. package/dist/public/BingSiteAuth.xml +4 -0
  9. package/dist/public/agent-consent.html +521 -0
  10. package/dist/public/aimeat-developers.html +679 -0
  11. package/dist/public/assets/mcp_1_add_custom_connector.png +0 -0
  12. package/dist/public/assets/mcp_2_connect_disconnect_connector.png +0 -0
  13. package/dist/public/components/Alert.js +18 -0
  14. package/dist/public/components/Card.js +19 -0
  15. package/dist/public/components/CopyButton.js +24 -0
  16. package/dist/public/components/FormField.js +16 -0
  17. package/dist/public/components/Modal.js +121 -0
  18. package/dist/public/components/Spinner.js +11 -0
  19. package/dist/public/components/Toast.js +26 -0
  20. package/dist/public/components/index.js +8 -0
  21. package/dist/public/components/useViewCSS.js +12 -0
  22. package/dist/public/cortex-bundled/aimeat-canvas.js +1408 -0
  23. package/dist/public/cortex-bundled/aimeat-canvas.yaml +241 -0
  24. package/dist/public/cortex-bundled/aimeat-charts.js +455 -0
  25. package/dist/public/cortex-bundled/aimeat-charts.yaml +178 -0
  26. package/dist/public/cortex-bundled/aimeat-ui-dialogs.js +667 -0
  27. package/dist/public/cortex-bundled/aimeat-ui-dialogs.yaml +66 -0
  28. package/dist/public/cortex-bundled/aimeat-ui-forms.js +1106 -0
  29. package/dist/public/cortex-bundled/aimeat-ui-forms.yaml +90 -0
  30. package/dist/public/cortex-bundled/aimeat-ui-layout.js +436 -0
  31. package/dist/public/cortex-bundled/aimeat-ui-layout.yaml +87 -0
  32. package/dist/public/cortex-bundled/aimeat-ui-nav.js +722 -0
  33. package/dist/public/cortex-bundled/aimeat-ui-nav.yaml +73 -0
  34. package/dist/public/cortex-bundled/aimeat-ui-viewers.js +602 -0
  35. package/dist/public/cortex-bundled/aimeat-ui-viewers.yaml +73 -0
  36. package/dist/public/css/components/tags.css +67 -0
  37. package/dist/public/css/theme.css +716 -0
  38. package/dist/public/css/views/admin.css +576 -0
  39. package/dist/public/css/views/aimeat-os.css +153 -0
  40. package/dist/public/css/views/calibrator.css +480 -0
  41. package/dist/public/css/views/foundry.css +1334 -0
  42. package/dist/public/css/views/help.css +136 -0
  43. package/dist/public/css/views/hobbies.css +73 -0
  44. package/dist/public/css/views/marketplace.css +134 -0
  45. package/dist/public/css/views/openclaw.css +33 -0
  46. package/dist/public/css/views/portal-classic.css +484 -0
  47. package/dist/public/css/views/portal-dev.css +139 -0
  48. package/dist/public/css/views/portal.css +365 -0
  49. package/dist/public/css/views/portfolio.css +322 -0
  50. package/dist/public/css/views/profile.css +1799 -0
  51. package/dist/public/echat.html +442 -0
  52. package/dist/public/img/genesis-001-badge.png +0 -0
  53. package/dist/public/img/platforms/chatgpt.png +0 -0
  54. package/dist/public/img/platforms/claude.png +0 -0
  55. package/dist/public/img/platforms/copilot.png +0 -0
  56. package/dist/public/img/platforms/deepseek.png +0 -0
  57. package/dist/public/img/platforms/gemini.png +0 -0
  58. package/dist/public/img/platforms/grok.png +0 -0
  59. package/dist/public/img/platforms/lmstudio.png +0 -0
  60. package/dist/public/img/platforms/m365copilot.png +0 -0
  61. package/dist/public/img/platforms/openclaw.png +0 -0
  62. package/dist/public/img/platforms/other.png +0 -0
  63. package/dist/public/js/api.js +123 -0
  64. package/dist/public/js/components/auth-image.js +59 -0
  65. package/dist/public/js/components/tag-cloud.js +31 -0
  66. package/dist/public/js/components/tag-editor.js +46 -0
  67. package/dist/public/js/hooks.js +63 -0
  68. package/dist/public/js/i18n.js +76 -0
  69. package/dist/public/js/services/admin.js +239 -0
  70. package/dist/public/js/services/agents.js +57 -0
  71. package/dist/public/js/services/apps.js +35 -0
  72. package/dist/public/js/services/auth.js +40 -0
  73. package/dist/public/js/services/boards.js +79 -0
  74. package/dist/public/js/services/calibrator.js +97 -0
  75. package/dist/public/js/services/catalogue.js +39 -0
  76. package/dist/public/js/services/consent.js +57 -0
  77. package/dist/public/js/services/cortex.js +95 -0
  78. package/dist/public/js/services/extensions.js +61 -0
  79. package/dist/public/js/services/federation.js +11 -0
  80. package/dist/public/js/services/foundry-context-bundle.js +128 -0
  81. package/dist/public/js/services/foundry-contract.js +117 -0
  82. package/dist/public/js/services/foundry-packaging.js +762 -0
  83. package/dist/public/js/services/foundry-probe-reconcile.js +52 -0
  84. package/dist/public/js/services/foundry-prompts-base.js +1886 -0
  85. package/dist/public/js/services/foundry-prompts-build.js +2187 -0
  86. package/dist/public/js/services/foundry-prompts-cortex-app.js +154 -0
  87. package/dist/public/js/services/foundry-prompts-cortex-data.js +241 -0
  88. package/dist/public/js/services/foundry-prompts-cortex-feature.js +281 -0
  89. package/dist/public/js/services/foundry-prompts-fix.js +408 -0
  90. package/dist/public/js/services/foundry-prompts-test.js +520 -0
  91. package/dist/public/js/services/foundry-prompts.js +31 -0
  92. package/dist/public/js/services/foundry-smoke.js +65 -0
  93. package/dist/public/js/services/foundry-testing.js +64 -0
  94. package/dist/public/js/services/foundry-validate.js +1082 -0
  95. package/dist/public/js/services/foundry.js +1194 -0
  96. package/dist/public/js/services/generator-context-bundle.js +134 -0
  97. package/dist/public/js/services/generator-contract.js +117 -0
  98. package/dist/public/js/services/generator-packaging.js +762 -0
  99. package/dist/public/js/services/generator-probe-reconcile.js +52 -0
  100. package/dist/public/js/services/generator-prompts-base.js +1890 -0
  101. package/dist/public/js/services/generator-prompts-build.js +1126 -0
  102. package/dist/public/js/services/generator-prompts-cortex-app.js +155 -0
  103. package/dist/public/js/services/generator-prompts-cortex-data.js +199 -0
  104. package/dist/public/js/services/generator-prompts-cortex-feature.js +276 -0
  105. package/dist/public/js/services/generator-prompts-fix.js +316 -0
  106. package/dist/public/js/services/generator-prompts-test.js +402 -0
  107. package/dist/public/js/services/generator-prompts.js +31 -0
  108. package/dist/public/js/services/generator-smoke.js +65 -0
  109. package/dist/public/js/services/generator-spec-tests.js +280 -0
  110. package/dist/public/js/services/generator-spec-validate.js +192 -0
  111. package/dist/public/js/services/generator-specs.js +369 -0
  112. package/dist/public/js/services/generator-testing.js +64 -0
  113. package/dist/public/js/services/generator-validate.js +916 -0
  114. package/dist/public/js/services/generator.js +952 -0
  115. package/dist/public/js/services/knowledge.js +120 -0
  116. package/dist/public/js/services/memory.js +112 -0
  117. package/dist/public/js/services/nodes.js +55 -0
  118. package/dist/public/js/services/organisms.js +74 -0
  119. package/dist/public/js/services/packages.js +97 -0
  120. package/dist/public/js/services/security.js +67 -0
  121. package/dist/public/js/services/stats.js +11 -0
  122. package/dist/public/js/services/wallet.js +24 -0
  123. package/dist/public/js/services/work.js +51 -0
  124. package/dist/public/js/utils.js +184 -0
  125. package/dist/public/lib/htm.mjs +4 -0
  126. package/dist/public/lib/live-updates.js +89 -0
  127. package/dist/public/lib/minidenticons.min.js +1 -0
  128. package/dist/public/lib/preact-hooks.mjs +3 -0
  129. package/dist/public/lib/preact.mjs +3 -0
  130. package/dist/public/lib/realtime.js +549 -0
  131. package/dist/public/lib/three.min.js +6 -0
  132. package/dist/public/lib/yaml.mjs +141 -0
  133. package/dist/public/llms-template.txt +1043 -0
  134. package/dist/public/oauth-consent.html +388 -0
  135. package/dist/public/og-image.png +0 -0
  136. package/dist/public/robots.txt +52 -0
  137. package/dist/public/spa.html +533 -0
  138. package/dist/public/sw.js +34 -0
  139. package/dist/public/tmp-paste.txt +223 -0
  140. package/dist/public/views/_template.js +85 -0
  141. package/dist/public/views/admin/actions-tab.js +41 -0
  142. package/dist/public/views/admin/agents-tab.js +84 -0
  143. package/dist/public/views/admin/boards-tab.js +154 -0
  144. package/dist/public/views/admin/chat-instances-tab.js +207 -0
  145. package/dist/public/views/admin/config-tab.js +151 -0
  146. package/dist/public/views/admin/consul-tab.js +77 -0
  147. package/dist/public/views/admin/cors-tab.js +240 -0
  148. package/dist/public/views/admin/cortex-tab.js +171 -0
  149. package/dist/public/views/admin/csm-tab.js +261 -0
  150. package/dist/public/views/admin/directory-tab.js +44 -0
  151. package/dist/public/views/admin/economy-tab.js +80 -0
  152. package/dist/public/views/admin/email-tab.js +460 -0
  153. package/dist/public/views/admin/federation-tab.js +412 -0
  154. package/dist/public/views/admin/generator-debug-tab.js +238 -0
  155. package/dist/public/views/admin/genesis-tab.js +70 -0
  156. package/dist/public/views/admin/ghii-tab.js +101 -0
  157. package/dist/public/views/admin/hooks-tab.js +69 -0
  158. package/dist/public/views/admin/knowledge-tab.js +297 -0
  159. package/dist/public/views/admin/maintenance-tab.js +98 -0
  160. package/dist/public/views/admin/matching-tab.js +44 -0
  161. package/dist/public/views/admin/memory-tab.js +222 -0
  162. package/dist/public/views/admin/msm-tab.js +342 -0
  163. package/dist/public/views/admin/overview-tab.js +90 -0
  164. package/dist/public/views/admin/owners-tab.js +55 -0
  165. package/dist/public/views/admin/packages-tab.js +510 -0
  166. package/dist/public/views/admin/portal-tab.js +211 -0
  167. package/dist/public/views/admin/prompts-tab.js +287 -0
  168. package/dist/public/views/admin/push-tab.js +291 -0
  169. package/dist/public/views/admin/realtime-tab.js +68 -0
  170. package/dist/public/views/admin/scheduler-tab.js +156 -0
  171. package/dist/public/views/admin/services-tab.js +981 -0
  172. package/dist/public/views/admin/shared.js +148 -0
  173. package/dist/public/views/admin/stats-tab.js +187 -0
  174. package/dist/public/views/admin/work-tab.js +45 -0
  175. package/dist/public/views/admin.js +400 -0
  176. package/dist/public/views/aimeat-os.js +259 -0
  177. package/dist/public/views/guides.js +402 -0
  178. package/dist/public/views/help.js +79 -0
  179. package/dist/public/views/hobbies.js +697 -0
  180. package/dist/public/views/marketplace.js +647 -0
  181. package/dist/public/views/openclaw.js +223 -0
  182. package/dist/public/views/portal-classic.js +519 -0
  183. package/dist/public/views/portal-dev.js +816 -0
  184. package/dist/public/views/portal.js +1354 -0
  185. package/dist/public/views/portfolio.js +795 -0
  186. package/dist/public/views/profile/access-tab.js +58 -0
  187. package/dist/public/views/profile/agents-tab.js +689 -0
  188. package/dist/public/views/profile/apps-tab.js +197 -0
  189. package/dist/public/views/profile/boards-tab.js +323 -0
  190. package/dist/public/views/profile/calibrator-batch.js +926 -0
  191. package/dist/public/views/profile/calibrator-chart.js +135 -0
  192. package/dist/public/views/profile/calibrator-llm-editor.js +205 -0
  193. package/dist/public/views/profile/calibrator-tab.js +535 -0
  194. package/dist/public/views/profile/chat-sessions-tab.js +184 -0
  195. package/dist/public/views/profile/data-wallet-tab.js +313 -0
  196. package/dist/public/views/profile/email-tab.js +157 -0
  197. package/dist/public/views/profile/extensions-tab.js +711 -0
  198. package/dist/public/views/profile/federation-tab.js +63 -0
  199. package/dist/public/views/profile/foundry-dashboard/DebugPanel.js +193 -0
  200. package/dist/public/views/profile/foundry-dashboard/DiagnosticsPanel.js +69 -0
  201. package/dist/public/views/profile/foundry-dashboard/EditModePanel.js +141 -0
  202. package/dist/public/views/profile/foundry-dashboard/PackageDialog.js +96 -0
  203. package/dist/public/views/profile/foundry-dashboard/RemovePanel.js +53 -0
  204. package/dist/public/views/profile/foundry-dashboard/use-autopilot-state.js +53 -0
  205. package/dist/public/views/profile/foundry-dashboard/use-autopilot.js +1016 -0
  206. package/dist/public/views/profile/foundry-dashboard/use-dashboard-core.js +154 -0
  207. package/dist/public/views/profile/foundry-dashboard/use-edit-mode.js +294 -0
  208. package/dist/public/views/profile/foundry-dashboard/use-lifecycle.js +101 -0
  209. package/dist/public/views/profile/foundry-dashboard/use-packaging.js +97 -0
  210. package/dist/public/views/profile/foundry-dashboard/use-test-execution.js +275 -0
  211. package/dist/public/views/profile/foundry-dashboard.js +395 -0
  212. package/dist/public/views/profile/foundry-detail.js +1178 -0
  213. package/dist/public/views/profile/foundry-settings.js +377 -0
  214. package/dist/public/views/profile/foundry-tab.js +546 -0
  215. package/dist/public/views/profile/generator-dashboard/DebugPanel.js +193 -0
  216. package/dist/public/views/profile/generator-dashboard/DiagnosticsPanel.js +69 -0
  217. package/dist/public/views/profile/generator-dashboard/EditModePanel.js +141 -0
  218. package/dist/public/views/profile/generator-dashboard/PackageDialog.js +96 -0
  219. package/dist/public/views/profile/generator-dashboard/RemovePanel.js +53 -0
  220. package/dist/public/views/profile/generator-dashboard/use-autopilot-state.js +53 -0
  221. package/dist/public/views/profile/generator-dashboard/use-autopilot.js +136 -0
  222. package/dist/public/views/profile/generator-dashboard/use-dashboard-core.js +143 -0
  223. package/dist/public/views/profile/generator-dashboard/use-edit-mode.js +296 -0
  224. package/dist/public/views/profile/generator-dashboard/use-lifecycle.js +101 -0
  225. package/dist/public/views/profile/generator-dashboard/use-packaging.js +97 -0
  226. package/dist/public/views/profile/generator-dashboard/use-test-execution.js +275 -0
  227. package/dist/public/views/profile/generator-dashboard.js +377 -0
  228. package/dist/public/views/profile/generator-detail.js +1007 -0
  229. package/dist/public/views/profile/generator-settings.js +417 -0
  230. package/dist/public/views/profile/generator-tab.js +544 -0
  231. package/dist/public/views/profile/inline-panels.js +277 -0
  232. package/dist/public/views/profile/knowledge-tab.js +735 -0
  233. package/dist/public/views/profile/landing-page.js +539 -0
  234. package/dist/public/views/profile/mcp-tab.js +140 -0
  235. package/dist/public/views/profile/memory-tab.js +599 -0
  236. package/dist/public/views/profile/node-stats-tab.js +132 -0
  237. package/dist/public/views/profile/nodes-tab.js +195 -0
  238. package/dist/public/views/profile/notifications-tab.js +274 -0
  239. package/dist/public/views/profile/organisms-tab.js +402 -0
  240. package/dist/public/views/profile/packages-tab.js +393 -0
  241. package/dist/public/views/profile/portfolio-tab.js +31 -0
  242. package/dist/public/views/profile/security-tab.js +219 -0
  243. package/dist/public/views/profile/services-tab.js +281 -0
  244. package/dist/public/views/profile/shared.js +58 -0
  245. package/dist/public/views/profile/wallet-tab.js +272 -0
  246. package/dist/public/views/profile/work-tab.js +220 -0
  247. package/dist/public/views/profile.js +271 -0
  248. package/dist/public/wizard.html +1320 -0
  249. package/dist/scripts/db-init.d.ts +19 -0
  250. package/dist/scripts/db-init.d.ts.map +1 -0
  251. package/dist/scripts/db-init.js +168 -0
  252. package/dist/scripts/db-init.js.map +1 -0
  253. package/dist/scripts/db-reset.d.ts +15 -0
  254. package/dist/scripts/db-reset.d.ts.map +1 -0
  255. package/dist/scripts/db-reset.js +162 -0
  256. package/dist/scripts/db-reset.js.map +1 -0
  257. package/dist/scripts/indexnow.d.ts +18 -0
  258. package/dist/scripts/indexnow.d.ts.map +1 -0
  259. package/dist/scripts/indexnow.js +104 -0
  260. package/dist/scripts/indexnow.js.map +1 -0
  261. package/dist/scripts/kill-port.d.ts +3 -0
  262. package/dist/scripts/kill-port.d.ts.map +1 -0
  263. package/dist/scripts/kill-port.js +89 -0
  264. package/dist/scripts/kill-port.js.map +1 -0
  265. package/dist/scripts/seed-digital-signage.d.ts +13 -0
  266. package/dist/scripts/seed-digital-signage.d.ts.map +1 -0
  267. package/dist/scripts/seed-digital-signage.js +85 -0
  268. package/dist/scripts/seed-digital-signage.js.map +1 -0
  269. package/dist/src/auth/jwt.d.ts +40 -0
  270. package/dist/src/auth/jwt.d.ts.map +1 -0
  271. package/dist/src/auth/jwt.js +139 -0
  272. package/dist/src/auth/jwt.js.map +1 -0
  273. package/dist/src/auth/keypair.d.ts +8 -0
  274. package/dist/src/auth/keypair.d.ts.map +1 -0
  275. package/dist/src/auth/keypair.js +35 -0
  276. package/dist/src/auth/keypair.js.map +1 -0
  277. package/dist/src/auth/middleware.d.ts +50 -0
  278. package/dist/src/auth/middleware.d.ts.map +1 -0
  279. package/dist/src/auth/middleware.js +241 -0
  280. package/dist/src/auth/middleware.js.map +1 -0
  281. package/dist/src/auth/node-keys.d.ts +7 -0
  282. package/dist/src/auth/node-keys.d.ts.map +1 -0
  283. package/dist/src/auth/node-keys.js +116 -0
  284. package/dist/src/auth/node-keys.js.map +1 -0
  285. package/dist/src/cli/config-export.d.ts +9 -0
  286. package/dist/src/cli/config-export.d.ts.map +1 -0
  287. package/dist/src/cli/config-export.js +90 -0
  288. package/dist/src/cli/config-export.js.map +1 -0
  289. package/dist/src/cli/config-import.d.ts +10 -0
  290. package/dist/src/cli/config-import.d.ts.map +1 -0
  291. package/dist/src/cli/config-import.js +124 -0
  292. package/dist/src/cli/config-import.js.map +1 -0
  293. package/dist/src/cli/federation-join.d.ts +13 -0
  294. package/dist/src/cli/federation-join.d.ts.map +1 -0
  295. package/dist/src/cli/federation-join.js +395 -0
  296. package/dist/src/cli/federation-join.js.map +1 -0
  297. package/dist/src/cli/init-wizard.d.ts +8 -0
  298. package/dist/src/cli/init-wizard.d.ts.map +1 -0
  299. package/dist/src/cli/init-wizard.js +1489 -0
  300. package/dist/src/cli/init-wizard.js.map +1 -0
  301. package/dist/src/cli/scaffold.d.ts +33 -0
  302. package/dist/src/cli/scaffold.d.ts.map +1 -0
  303. package/dist/src/cli/scaffold.js +142 -0
  304. package/dist/src/cli/scaffold.js.map +1 -0
  305. package/dist/src/config.d.ts +272 -0
  306. package/dist/src/config.d.ts.map +1 -0
  307. package/dist/src/config.js +362 -0
  308. package/dist/src/config.js.map +1 -0
  309. package/dist/src/data/example-packages.d.ts +49 -0
  310. package/dist/src/data/example-packages.d.ts.map +1 -0
  311. package/dist/src/data/example-packages.js +814 -0
  312. package/dist/src/data/example-packages.js.map +1 -0
  313. package/dist/src/i18n.d.ts +19 -0
  314. package/dist/src/i18n.d.ts.map +1 -0
  315. package/dist/src/i18n.js +126 -0
  316. package/dist/src/i18n.js.map +1 -0
  317. package/dist/src/index.d.ts +3 -0
  318. package/dist/src/index.d.ts.map +1 -0
  319. package/dist/src/index.js +608 -0
  320. package/dist/src/index.js.map +1 -0
  321. package/dist/src/mcp/boards.d.ts +18 -0
  322. package/dist/src/mcp/boards.d.ts.map +1 -0
  323. package/dist/src/mcp/boards.js +279 -0
  324. package/dist/src/mcp/boards.js.map +1 -0
  325. package/dist/src/mcp/catalogue.d.ts +17 -0
  326. package/dist/src/mcp/catalogue.d.ts.map +1 -0
  327. package/dist/src/mcp/catalogue.js +114 -0
  328. package/dist/src/mcp/catalogue.js.map +1 -0
  329. package/dist/src/mcp/chat-instances.d.ts +18 -0
  330. package/dist/src/mcp/chat-instances.d.ts.map +1 -0
  331. package/dist/src/mcp/chat-instances.js +161 -0
  332. package/dist/src/mcp/chat-instances.js.map +1 -0
  333. package/dist/src/mcp/consent.d.ts +18 -0
  334. package/dist/src/mcp/consent.d.ts.map +1 -0
  335. package/dist/src/mcp/consent.js +158 -0
  336. package/dist/src/mcp/consent.js.map +1 -0
  337. package/dist/src/mcp/core.d.ts +18 -0
  338. package/dist/src/mcp/core.d.ts.map +1 -0
  339. package/dist/src/mcp/core.js +489 -0
  340. package/dist/src/mcp/core.js.map +1 -0
  341. package/dist/src/mcp/extensions.d.ts +18 -0
  342. package/dist/src/mcp/extensions.d.ts.map +1 -0
  343. package/dist/src/mcp/extensions.js +299 -0
  344. package/dist/src/mcp/extensions.js.map +1 -0
  345. package/dist/src/mcp/flags.d.ts +18 -0
  346. package/dist/src/mcp/flags.d.ts.map +1 -0
  347. package/dist/src/mcp/flags.js +59 -0
  348. package/dist/src/mcp/flags.js.map +1 -0
  349. package/dist/src/mcp/index.d.ts +31 -0
  350. package/dist/src/mcp/index.d.ts.map +1 -0
  351. package/dist/src/mcp/index.js +694 -0
  352. package/dist/src/mcp/index.js.map +1 -0
  353. package/dist/src/mcp/knowledge.d.ts +18 -0
  354. package/dist/src/mcp/knowledge.d.ts.map +1 -0
  355. package/dist/src/mcp/knowledge.js +214 -0
  356. package/dist/src/mcp/knowledge.js.map +1 -0
  357. package/dist/src/mcp/memory-extended.d.ts +18 -0
  358. package/dist/src/mcp/memory-extended.d.ts.map +1 -0
  359. package/dist/src/mcp/memory-extended.js +73 -0
  360. package/dist/src/mcp/memory-extended.js.map +1 -0
  361. package/dist/src/mcp/organisms.d.ts +18 -0
  362. package/dist/src/mcp/organisms.d.ts.map +1 -0
  363. package/dist/src/mcp/organisms.js +291 -0
  364. package/dist/src/mcp/organisms.js.map +1 -0
  365. package/dist/src/mcp/prompts.d.ts +17 -0
  366. package/dist/src/mcp/prompts.d.ts.map +1 -0
  367. package/dist/src/mcp/prompts.js +65 -0
  368. package/dist/src/mcp/prompts.js.map +1 -0
  369. package/dist/src/mcp/wallet-extended.d.ts +17 -0
  370. package/dist/src/mcp/wallet-extended.d.ts.map +1 -0
  371. package/dist/src/mcp/wallet-extended.js +42 -0
  372. package/dist/src/mcp/wallet-extended.js.map +1 -0
  373. package/dist/src/middleware/__tests__/cookie-consent.test.d.ts +2 -0
  374. package/dist/src/middleware/__tests__/cookie-consent.test.d.ts.map +1 -0
  375. package/dist/src/middleware/__tests__/cookie-consent.test.js +432 -0
  376. package/dist/src/middleware/__tests__/cookie-consent.test.js.map +1 -0
  377. package/dist/src/middleware/cookie-consent.d.ts +19 -0
  378. package/dist/src/middleware/cookie-consent.d.ts.map +1 -0
  379. package/dist/src/middleware/cookie-consent.js +127 -0
  380. package/dist/src/middleware/cookie-consent.js.map +1 -0
  381. package/dist/src/middleware/cors.d.ts +12 -0
  382. package/dist/src/middleware/cors.d.ts.map +1 -0
  383. package/dist/src/middleware/cors.js +112 -0
  384. package/dist/src/middleware/cors.js.map +1 -0
  385. package/dist/src/middleware/envelope.d.ts +33 -0
  386. package/dist/src/middleware/envelope.d.ts.map +1 -0
  387. package/dist/src/middleware/envelope.js +32 -0
  388. package/dist/src/middleware/envelope.js.map +1 -0
  389. package/dist/src/middleware/idempotency.d.ts +3 -0
  390. package/dist/src/middleware/idempotency.d.ts.map +1 -0
  391. package/dist/src/middleware/idempotency.js +64 -0
  392. package/dist/src/middleware/idempotency.js.map +1 -0
  393. package/dist/src/middleware/metrics.d.ts +8 -0
  394. package/dist/src/middleware/metrics.d.ts.map +1 -0
  395. package/dist/src/middleware/metrics.js +25 -0
  396. package/dist/src/middleware/metrics.js.map +1 -0
  397. package/dist/src/middleware/rate-limit.d.ts +4 -0
  398. package/dist/src/middleware/rate-limit.d.ts.map +1 -0
  399. package/dist/src/middleware/rate-limit.js +73 -0
  400. package/dist/src/middleware/rate-limit.js.map +1 -0
  401. package/dist/src/middleware/request-id.d.ts +18 -0
  402. package/dist/src/middleware/request-id.d.ts.map +1 -0
  403. package/dist/src/middleware/request-id.js +23 -0
  404. package/dist/src/middleware/request-id.js.map +1 -0
  405. package/dist/src/middleware/stats.d.ts +4 -0
  406. package/dist/src/middleware/stats.d.ts.map +1 -0
  407. package/dist/src/middleware/stats.js +11 -0
  408. package/dist/src/middleware/stats.js.map +1 -0
  409. package/dist/src/middleware/workspace-access.d.ts +16 -0
  410. package/dist/src/middleware/workspace-access.d.ts.map +1 -0
  411. package/dist/src/middleware/workspace-access.js +115 -0
  412. package/dist/src/middleware/workspace-access.js.map +1 -0
  413. package/dist/src/models/schemas.d.ts +311 -0
  414. package/dist/src/models/schemas.d.ts.map +1 -0
  415. package/dist/src/models/schemas.js +281 -0
  416. package/dist/src/models/schemas.js.map +1 -0
  417. package/dist/src/routes/actions.d.ts +5 -0
  418. package/dist/src/routes/actions.d.ts.map +1 -0
  419. package/dist/src/routes/actions.js +199 -0
  420. package/dist/src/routes/actions.js.map +1 -0
  421. package/dist/src/routes/admin-agents.d.ts +5 -0
  422. package/dist/src/routes/admin-agents.d.ts.map +1 -0
  423. package/dist/src/routes/admin-agents.js +60 -0
  424. package/dist/src/routes/admin-agents.js.map +1 -0
  425. package/dist/src/routes/admin-config.d.ts +7 -0
  426. package/dist/src/routes/admin-config.d.ts.map +1 -0
  427. package/dist/src/routes/admin-config.js +209 -0
  428. package/dist/src/routes/admin-config.js.map +1 -0
  429. package/dist/src/routes/admin-economy.d.ts +5 -0
  430. package/dist/src/routes/admin-economy.d.ts.map +1 -0
  431. package/dist/src/routes/admin-economy.js +57 -0
  432. package/dist/src/routes/admin-economy.js.map +1 -0
  433. package/dist/src/routes/admin-extensions.d.ts +6 -0
  434. package/dist/src/routes/admin-extensions.d.ts.map +1 -0
  435. package/dist/src/routes/admin-extensions.js +619 -0
  436. package/dist/src/routes/admin-extensions.js.map +1 -0
  437. package/dist/src/routes/admin-features.d.ts +16 -0
  438. package/dist/src/routes/admin-features.d.ts.map +1 -0
  439. package/dist/src/routes/admin-features.js +672 -0
  440. package/dist/src/routes/admin-features.js.map +1 -0
  441. package/dist/src/routes/admin-maintenance.d.ts +8 -0
  442. package/dist/src/routes/admin-maintenance.d.ts.map +1 -0
  443. package/dist/src/routes/admin-maintenance.js +86 -0
  444. package/dist/src/routes/admin-maintenance.js.map +1 -0
  445. package/dist/src/routes/admin-memory.d.ts +12 -0
  446. package/dist/src/routes/admin-memory.d.ts.map +1 -0
  447. package/dist/src/routes/admin-memory.js +64 -0
  448. package/dist/src/routes/admin-memory.js.map +1 -0
  449. package/dist/src/routes/admin-monitoring.d.ts +5 -0
  450. package/dist/src/routes/admin-monitoring.d.ts.map +1 -0
  451. package/dist/src/routes/admin-monitoring.js +343 -0
  452. package/dist/src/routes/admin-monitoring.js.map +1 -0
  453. package/dist/src/routes/admin-prompts.d.ts +5 -0
  454. package/dist/src/routes/admin-prompts.d.ts.map +1 -0
  455. package/dist/src/routes/admin-prompts.js +198 -0
  456. package/dist/src/routes/admin-prompts.js.map +1 -0
  457. package/dist/src/routes/admin-scheduler.d.ts +6 -0
  458. package/dist/src/routes/admin-scheduler.d.ts.map +1 -0
  459. package/dist/src/routes/admin-scheduler.js +153 -0
  460. package/dist/src/routes/admin-scheduler.js.map +1 -0
  461. package/dist/src/routes/admin.d.ts +10 -0
  462. package/dist/src/routes/admin.d.ts.map +1 -0
  463. package/dist/src/routes/admin.js +847 -0
  464. package/dist/src/routes/admin.js.map +1 -0
  465. package/dist/src/routes/agents.d.ts +5 -0
  466. package/dist/src/routes/agents.d.ts.map +1 -0
  467. package/dist/src/routes/agents.js +946 -0
  468. package/dist/src/routes/agents.js.map +1 -0
  469. package/dist/src/routes/app-store.d.ts +25 -0
  470. package/dist/src/routes/app-store.d.ts.map +1 -0
  471. package/dist/src/routes/app-store.js +269 -0
  472. package/dist/src/routes/app-store.js.map +1 -0
  473. package/dist/src/routes/appeals.d.ts +5 -0
  474. package/dist/src/routes/appeals.d.ts.map +1 -0
  475. package/dist/src/routes/appeals.js +241 -0
  476. package/dist/src/routes/appeals.js.map +1 -0
  477. package/dist/src/routes/apps.d.ts +14 -0
  478. package/dist/src/routes/apps.d.ts.map +1 -0
  479. package/dist/src/routes/apps.js +395 -0
  480. package/dist/src/routes/apps.js.map +1 -0
  481. package/dist/src/routes/auth.d.ts +13 -0
  482. package/dist/src/routes/auth.d.ts.map +1 -0
  483. package/dist/src/routes/auth.js +517 -0
  484. package/dist/src/routes/auth.js.map +1 -0
  485. package/dist/src/routes/boards.d.ts +5 -0
  486. package/dist/src/routes/boards.d.ts.map +1 -0
  487. package/dist/src/routes/boards.js +614 -0
  488. package/dist/src/routes/boards.js.map +1 -0
  489. package/dist/src/routes/bootstrap.d.ts +6 -0
  490. package/dist/src/routes/bootstrap.d.ts.map +1 -0
  491. package/dist/src/routes/bootstrap.js +360 -0
  492. package/dist/src/routes/bootstrap.js.map +1 -0
  493. package/dist/src/routes/calibrator.d.ts +28 -0
  494. package/dist/src/routes/calibrator.d.ts.map +1 -0
  495. package/dist/src/routes/calibrator.js +556 -0
  496. package/dist/src/routes/calibrator.js.map +1 -0
  497. package/dist/src/routes/catalogue.d.ts +7 -0
  498. package/dist/src/routes/catalogue.d.ts.map +1 -0
  499. package/dist/src/routes/catalogue.js +377 -0
  500. package/dist/src/routes/catalogue.js.map +1 -0
  501. package/dist/src/routes/chat-instances.d.ts +5 -0
  502. package/dist/src/routes/chat-instances.d.ts.map +1 -0
  503. package/dist/src/routes/chat-instances.js +131 -0
  504. package/dist/src/routes/chat-instances.js.map +1 -0
  505. package/dist/src/routes/consent.d.ts +6 -0
  506. package/dist/src/routes/consent.d.ts.map +1 -0
  507. package/dist/src/routes/consent.js +188 -0
  508. package/dist/src/routes/consent.js.map +1 -0
  509. package/dist/src/routes/cortex.d.ts +5 -0
  510. package/dist/src/routes/cortex.d.ts.map +1 -0
  511. package/dist/src/routes/cortex.js +617 -0
  512. package/dist/src/routes/cortex.js.map +1 -0
  513. package/dist/src/routes/csm.d.ts +5 -0
  514. package/dist/src/routes/csm.d.ts.map +1 -0
  515. package/dist/src/routes/csm.js +258 -0
  516. package/dist/src/routes/csm.js.map +1 -0
  517. package/dist/src/routes/disputes.d.ts +5 -0
  518. package/dist/src/routes/disputes.d.ts.map +1 -0
  519. package/dist/src/routes/disputes.js +528 -0
  520. package/dist/src/routes/disputes.js.map +1 -0
  521. package/dist/src/routes/extensions.d.ts +6 -0
  522. package/dist/src/routes/extensions.d.ts.map +1 -0
  523. package/dist/src/routes/extensions.js +1149 -0
  524. package/dist/src/routes/extensions.js.map +1 -0
  525. package/dist/src/routes/federation-genesis.d.ts +11 -0
  526. package/dist/src/routes/federation-genesis.d.ts.map +1 -0
  527. package/dist/src/routes/federation-genesis.js +638 -0
  528. package/dist/src/routes/federation-genesis.js.map +1 -0
  529. package/dist/src/routes/federation-peer.d.ts +10 -0
  530. package/dist/src/routes/federation-peer.d.ts.map +1 -0
  531. package/dist/src/routes/federation-peer.js +613 -0
  532. package/dist/src/routes/federation-peer.js.map +1 -0
  533. package/dist/src/routes/federation-settlements.d.ts +10 -0
  534. package/dist/src/routes/federation-settlements.d.ts.map +1 -0
  535. package/dist/src/routes/federation-settlements.js +231 -0
  536. package/dist/src/routes/federation-settlements.js.map +1 -0
  537. package/dist/src/routes/federation-sync.d.ts +15 -0
  538. package/dist/src/routes/federation-sync.d.ts.map +1 -0
  539. package/dist/src/routes/federation-sync.js +629 -0
  540. package/dist/src/routes/federation-sync.js.map +1 -0
  541. package/dist/src/routes/federation.d.ts +15 -0
  542. package/dist/src/routes/federation.d.ts.map +1 -0
  543. package/dist/src/routes/federation.js +23 -0
  544. package/dist/src/routes/federation.js.map +1 -0
  545. package/dist/src/routes/flags.d.ts +5 -0
  546. package/dist/src/routes/flags.d.ts.map +1 -0
  547. package/dist/src/routes/flags.js +194 -0
  548. package/dist/src/routes/flags.js.map +1 -0
  549. package/dist/src/routes/foundry.d.ts +5 -0
  550. package/dist/src/routes/foundry.d.ts.map +1 -0
  551. package/dist/src/routes/foundry.js +955 -0
  552. package/dist/src/routes/foundry.js.map +1 -0
  553. package/dist/src/routes/generator-autopilot.d.ts +12 -0
  554. package/dist/src/routes/generator-autopilot.d.ts.map +1 -0
  555. package/dist/src/routes/generator-autopilot.js +71 -0
  556. package/dist/src/routes/generator-autopilot.js.map +1 -0
  557. package/dist/src/routes/generator.d.ts +5 -0
  558. package/dist/src/routes/generator.d.ts.map +1 -0
  559. package/dist/src/routes/generator.js +1313 -0
  560. package/dist/src/routes/generator.js.map +1 -0
  561. package/dist/src/routes/ghii.d.ts +16 -0
  562. package/dist/src/routes/ghii.d.ts.map +1 -0
  563. package/dist/src/routes/ghii.js +1115 -0
  564. package/dist/src/routes/ghii.js.map +1 -0
  565. package/dist/src/routes/instances.d.ts +31 -0
  566. package/dist/src/routes/instances.d.ts.map +1 -0
  567. package/dist/src/routes/instances.js +722 -0
  568. package/dist/src/routes/instances.js.map +1 -0
  569. package/dist/src/routes/knowledge.d.ts +33 -0
  570. package/dist/src/routes/knowledge.d.ts.map +1 -0
  571. package/dist/src/routes/knowledge.js +1108 -0
  572. package/dist/src/routes/knowledge.js.map +1 -0
  573. package/dist/src/routes/lib-data.d.ts +7 -0
  574. package/dist/src/routes/lib-data.d.ts.map +1 -0
  575. package/dist/src/routes/lib-data.js +189 -0
  576. package/dist/src/routes/lib-data.js.map +1 -0
  577. package/dist/src/routes/lib-social.d.ts +7 -0
  578. package/dist/src/routes/lib-social.d.ts.map +1 -0
  579. package/dist/src/routes/lib-social.js +159 -0
  580. package/dist/src/routes/lib-social.js.map +1 -0
  581. package/dist/src/routes/lib-storage.d.ts +7 -0
  582. package/dist/src/routes/lib-storage.d.ts.map +1 -0
  583. package/dist/src/routes/lib-storage.js +202 -0
  584. package/dist/src/routes/lib-storage.js.map +1 -0
  585. package/dist/src/routes/lib-tunnel.d.ts +8 -0
  586. package/dist/src/routes/lib-tunnel.d.ts.map +1 -0
  587. package/dist/src/routes/lib-tunnel.js +442 -0
  588. package/dist/src/routes/lib-tunnel.js.map +1 -0
  589. package/dist/src/routes/lib-wallet.d.ts +7 -0
  590. package/dist/src/routes/lib-wallet.d.ts.map +1 -0
  591. package/dist/src/routes/lib-wallet.js +129 -0
  592. package/dist/src/routes/lib-wallet.js.map +1 -0
  593. package/dist/src/routes/lib-work.d.ts +7 -0
  594. package/dist/src/routes/lib-work.d.ts.map +1 -0
  595. package/dist/src/routes/lib-work.js +210 -0
  596. package/dist/src/routes/lib-work.js.map +1 -0
  597. package/dist/src/routes/libs.d.ts +10 -0
  598. package/dist/src/routes/libs.d.ts.map +1 -0
  599. package/dist/src/routes/libs.js +989 -0
  600. package/dist/src/routes/libs.js.map +1 -0
  601. package/dist/src/routes/matches.d.ts +10 -0
  602. package/dist/src/routes/matches.d.ts.map +1 -0
  603. package/dist/src/routes/matches.js +218 -0
  604. package/dist/src/routes/matches.js.map +1 -0
  605. package/dist/src/routes/memory.d.ts +6 -0
  606. package/dist/src/routes/memory.d.ts.map +1 -0
  607. package/dist/src/routes/memory.js +796 -0
  608. package/dist/src/routes/memory.js.map +1 -0
  609. package/dist/src/routes/micro-memory.d.ts +5 -0
  610. package/dist/src/routes/micro-memory.d.ts.map +1 -0
  611. package/dist/src/routes/micro-memory.js +488 -0
  612. package/dist/src/routes/micro-memory.js.map +1 -0
  613. package/dist/src/routes/msm.d.ts +5 -0
  614. package/dist/src/routes/msm.d.ts.map +1 -0
  615. package/dist/src/routes/msm.js +242 -0
  616. package/dist/src/routes/msm.js.map +1 -0
  617. package/dist/src/routes/openrouter.d.ts +23 -0
  618. package/dist/src/routes/openrouter.d.ts.map +1 -0
  619. package/dist/src/routes/openrouter.js +337 -0
  620. package/dist/src/routes/openrouter.js.map +1 -0
  621. package/dist/src/routes/organisms.d.ts +5 -0
  622. package/dist/src/routes/organisms.d.ts.map +1 -0
  623. package/dist/src/routes/organisms.js +415 -0
  624. package/dist/src/routes/organisms.js.map +1 -0
  625. package/dist/src/routes/owners.d.ts +5 -0
  626. package/dist/src/routes/owners.d.ts.map +1 -0
  627. package/dist/src/routes/owners.js +637 -0
  628. package/dist/src/routes/owners.js.map +1 -0
  629. package/dist/src/routes/packages.d.ts +35 -0
  630. package/dist/src/routes/packages.d.ts.map +1 -0
  631. package/dist/src/routes/packages.js +600 -0
  632. package/dist/src/routes/packages.js.map +1 -0
  633. package/dist/src/routes/permissions.d.ts +5 -0
  634. package/dist/src/routes/permissions.d.ts.map +1 -0
  635. package/dist/src/routes/permissions.js +85 -0
  636. package/dist/src/routes/permissions.js.map +1 -0
  637. package/dist/src/routes/personal.d.ts +7 -0
  638. package/dist/src/routes/personal.d.ts.map +1 -0
  639. package/dist/src/routes/personal.js +594 -0
  640. package/dist/src/routes/personal.js.map +1 -0
  641. package/dist/src/routes/portal-api.d.ts +9 -0
  642. package/dist/src/routes/portal-api.d.ts.map +1 -0
  643. package/dist/src/routes/portal-api.js +49 -0
  644. package/dist/src/routes/portal-api.js.map +1 -0
  645. package/dist/src/routes/portal-human.d.ts +12 -0
  646. package/dist/src/routes/portal-human.d.ts.map +1 -0
  647. package/dist/src/routes/portal-human.js +2652 -0
  648. package/dist/src/routes/portal-human.js.map +1 -0
  649. package/dist/src/routes/portal.d.ts +24 -0
  650. package/dist/src/routes/portal.d.ts.map +1 -0
  651. package/dist/src/routes/portal.js +372 -0
  652. package/dist/src/routes/portal.js.map +1 -0
  653. package/dist/src/routes/portfolio.d.ts +5 -0
  654. package/dist/src/routes/portfolio.d.ts.map +1 -0
  655. package/dist/src/routes/portfolio.js +231 -0
  656. package/dist/src/routes/portfolio.js.map +1 -0
  657. package/dist/src/routes/profile.d.ts +5 -0
  658. package/dist/src/routes/profile.d.ts.map +1 -0
  659. package/dist/src/routes/profile.js +2042 -0
  660. package/dist/src/routes/profile.js.map +1 -0
  661. package/dist/src/routes/prompts.d.ts +5 -0
  662. package/dist/src/routes/prompts.d.ts.map +1 -0
  663. package/dist/src/routes/prompts.js +318 -0
  664. package/dist/src/routes/prompts.js.map +1 -0
  665. package/dist/src/routes/push.d.ts +6 -0
  666. package/dist/src/routes/push.d.ts.map +1 -0
  667. package/dist/src/routes/push.js +75 -0
  668. package/dist/src/routes/push.js.map +1 -0
  669. package/dist/src/routes/realtime.d.ts +7 -0
  670. package/dist/src/routes/realtime.d.ts.map +1 -0
  671. package/dist/src/routes/realtime.js +289 -0
  672. package/dist/src/routes/realtime.js.map +1 -0
  673. package/dist/src/routes/schemas.d.ts +5 -0
  674. package/dist/src/routes/schemas.d.ts.map +1 -0
  675. package/dist/src/routes/schemas.js +130 -0
  676. package/dist/src/routes/schemas.js.map +1 -0
  677. package/dist/src/routes/setup.d.ts +7 -0
  678. package/dist/src/routes/setup.d.ts.map +1 -0
  679. package/dist/src/routes/setup.js +243 -0
  680. package/dist/src/routes/setup.js.map +1 -0
  681. package/dist/src/routes/site.d.ts +6 -0
  682. package/dist/src/routes/site.d.ts.map +1 -0
  683. package/dist/src/routes/site.js +201 -0
  684. package/dist/src/routes/site.js.map +1 -0
  685. package/dist/src/routes/spec.d.ts +3 -0
  686. package/dist/src/routes/spec.d.ts.map +1 -0
  687. package/dist/src/routes/spec.js +47 -0
  688. package/dist/src/routes/spec.js.map +1 -0
  689. package/dist/src/routes/sse.d.ts +5 -0
  690. package/dist/src/routes/sse.d.ts.map +1 -0
  691. package/dist/src/routes/sse.js +66 -0
  692. package/dist/src/routes/sse.js.map +1 -0
  693. package/dist/src/routes/stats.d.ts +7 -0
  694. package/dist/src/routes/stats.d.ts.map +1 -0
  695. package/dist/src/routes/stats.js +98 -0
  696. package/dist/src/routes/stats.js.map +1 -0
  697. package/dist/src/routes/storage-files.d.ts +5 -0
  698. package/dist/src/routes/storage-files.d.ts.map +1 -0
  699. package/dist/src/routes/storage-files.js +460 -0
  700. package/dist/src/routes/storage-files.js.map +1 -0
  701. package/dist/src/routes/templates.d.ts +30 -0
  702. package/dist/src/routes/templates.d.ts.map +1 -0
  703. package/dist/src/routes/templates.js +511 -0
  704. package/dist/src/routes/templates.js.map +1 -0
  705. package/dist/src/routes/totp.d.ts +5 -0
  706. package/dist/src/routes/totp.d.ts.map +1 -0
  707. package/dist/src/routes/totp.js +166 -0
  708. package/dist/src/routes/totp.js.map +1 -0
  709. package/dist/src/routes/validate.d.ts +4 -0
  710. package/dist/src/routes/validate.d.ts.map +1 -0
  711. package/dist/src/routes/validate.js +71 -0
  712. package/dist/src/routes/validate.js.map +1 -0
  713. package/dist/src/routes/verification.d.ts +8 -0
  714. package/dist/src/routes/verification.d.ts.map +1 -0
  715. package/dist/src/routes/verification.js +259 -0
  716. package/dist/src/routes/verification.js.map +1 -0
  717. package/dist/src/routes/wallet.d.ts +18 -0
  718. package/dist/src/routes/wallet.d.ts.map +1 -0
  719. package/dist/src/routes/wallet.js +164 -0
  720. package/dist/src/routes/wallet.js.map +1 -0
  721. package/dist/src/routes/wellknown.d.ts +5 -0
  722. package/dist/src/routes/wellknown.d.ts.map +1 -0
  723. package/dist/src/routes/wellknown.js +57 -0
  724. package/dist/src/routes/wellknown.js.map +1 -0
  725. package/dist/src/routes/work.d.ts +21 -0
  726. package/dist/src/routes/work.d.ts.map +1 -0
  727. package/dist/src/routes/work.js +654 -0
  728. package/dist/src/routes/work.js.map +1 -0
  729. package/dist/src/schemas/knowledge-package.d.ts +203 -0
  730. package/dist/src/schemas/knowledge-package.d.ts.map +1 -0
  731. package/dist/src/schemas/knowledge-package.js +233 -0
  732. package/dist/src/schemas/knowledge-package.js.map +1 -0
  733. package/dist/src/server-bootstrap/config-init.d.ts +16 -0
  734. package/dist/src/server-bootstrap/config-init.d.ts.map +1 -0
  735. package/dist/src/server-bootstrap/config-init.js +113 -0
  736. package/dist/src/server-bootstrap/config-init.js.map +1 -0
  737. package/dist/src/server-bootstrap/middleware-guards.d.ts +15 -0
  738. package/dist/src/server-bootstrap/middleware-guards.d.ts.map +1 -0
  739. package/dist/src/server-bootstrap/middleware-guards.js +244 -0
  740. package/dist/src/server-bootstrap/middleware-guards.js.map +1 -0
  741. package/dist/src/server-bootstrap/routes-loader.d.ts +35 -0
  742. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -0
  743. package/dist/src/server-bootstrap/routes-loader.js +290 -0
  744. package/dist/src/server-bootstrap/routes-loader.js.map +1 -0
  745. package/dist/src/server-bootstrap/service-init.d.ts +24 -0
  746. package/dist/src/server-bootstrap/service-init.d.ts.map +1 -0
  747. package/dist/src/server-bootstrap/service-init.js +195 -0
  748. package/dist/src/server-bootstrap/service-init.js.map +1 -0
  749. package/dist/src/server-bootstrap/static-files.d.ts +7 -0
  750. package/dist/src/server-bootstrap/static-files.d.ts.map +1 -0
  751. package/dist/src/server-bootstrap/static-files.js +119 -0
  752. package/dist/src/server-bootstrap/static-files.js.map +1 -0
  753. package/dist/src/server.d.ts +22 -0
  754. package/dist/src/server.d.ts.map +1 -0
  755. package/dist/src/server.js +133 -0
  756. package/dist/src/server.js.map +1 -0
  757. package/dist/src/services/cache-cleanup.d.ts +31 -0
  758. package/dist/src/services/cache-cleanup.d.ts.map +1 -0
  759. package/dist/src/services/cache-cleanup.js +123 -0
  760. package/dist/src/services/cache-cleanup.js.map +1 -0
  761. package/dist/src/services/catalogue-sync.d.ts +45 -0
  762. package/dist/src/services/catalogue-sync.d.ts.map +1 -0
  763. package/dist/src/services/catalogue-sync.js +196 -0
  764. package/dist/src/services/catalogue-sync.js.map +1 -0
  765. package/dist/src/services/component-registrar.d.ts +46 -0
  766. package/dist/src/services/component-registrar.d.ts.map +1 -0
  767. package/dist/src/services/component-registrar.js +389 -0
  768. package/dist/src/services/component-registrar.js.map +1 -0
  769. package/dist/src/services/config-loader.d.ts +42 -0
  770. package/dist/src/services/config-loader.d.ts.map +1 -0
  771. package/dist/src/services/config-loader.js +187 -0
  772. package/dist/src/services/config-loader.js.map +1 -0
  773. package/dist/src/services/config-provenance.d.ts +32 -0
  774. package/dist/src/services/config-provenance.d.ts.map +1 -0
  775. package/dist/src/services/config-provenance.js +59 -0
  776. package/dist/src/services/config-provenance.js.map +1 -0
  777. package/dist/src/services/config-schema.d.ts +52 -0
  778. package/dist/src/services/config-schema.d.ts.map +1 -0
  779. package/dist/src/services/config-schema.js +288 -0
  780. package/dist/src/services/config-schema.js.map +1 -0
  781. package/dist/src/services/consent.d.ts +43 -0
  782. package/dist/src/services/consent.d.ts.map +1 -0
  783. package/dist/src/services/consent.js +137 -0
  784. package/dist/src/services/consent.js.map +1 -0
  785. package/dist/src/services/consul-config.d.ts +30 -0
  786. package/dist/src/services/consul-config.d.ts.map +1 -0
  787. package/dist/src/services/consul-config.js +110 -0
  788. package/dist/src/services/consul-config.js.map +1 -0
  789. package/dist/src/services/core-jobs.d.ts +8 -0
  790. package/dist/src/services/core-jobs.d.ts.map +1 -0
  791. package/dist/src/services/core-jobs.js +161 -0
  792. package/dist/src/services/core-jobs.js.map +1 -0
  793. package/dist/src/services/cortex-manifest.d.ts +17 -0
  794. package/dist/src/services/cortex-manifest.d.ts.map +1 -0
  795. package/dist/src/services/cortex-manifest.js +343 -0
  796. package/dist/src/services/cortex-manifest.js.map +1 -0
  797. package/dist/src/services/cortex-seeder.d.ts +18 -0
  798. package/dist/src/services/cortex-seeder.d.ts.map +1 -0
  799. package/dist/src/services/cortex-seeder.js +86 -0
  800. package/dist/src/services/cortex-seeder.js.map +1 -0
  801. package/dist/src/services/cross-node-matching.d.ts +23 -0
  802. package/dist/src/services/cross-node-matching.d.ts.map +1 -0
  803. package/dist/src/services/cross-node-matching.js +62 -0
  804. package/dist/src/services/cross-node-matching.js.map +1 -0
  805. package/dist/src/services/csm-parser.d.ts +57 -0
  806. package/dist/src/services/csm-parser.d.ts.map +1 -0
  807. package/dist/src/services/csm-parser.js +161 -0
  808. package/dist/src/services/csm-parser.js.map +1 -0
  809. package/dist/src/services/csm-seed.d.ts +15 -0
  810. package/dist/src/services/csm-seed.d.ts.map +1 -0
  811. package/dist/src/services/csm-seed.js +89 -0
  812. package/dist/src/services/csm-seed.js.map +1 -0
  813. package/dist/src/services/directory.d.ts +86 -0
  814. package/dist/src/services/directory.d.ts.map +1 -0
  815. package/dist/src/services/directory.js +307 -0
  816. package/dist/src/services/directory.js.map +1 -0
  817. package/dist/src/services/email-templates.d.ts +29 -0
  818. package/dist/src/services/email-templates.d.ts.map +1 -0
  819. package/dist/src/services/email-templates.js +204 -0
  820. package/dist/src/services/email-templates.js.map +1 -0
  821. package/dist/src/services/email.d.ts +18 -0
  822. package/dist/src/services/email.d.ts.map +1 -0
  823. package/dist/src/services/email.js +102 -0
  824. package/dist/src/services/email.js.map +1 -0
  825. package/dist/src/services/encryption.d.ts +31 -0
  826. package/dist/src/services/encryption.d.ts.map +1 -0
  827. package/dist/src/services/encryption.js +51 -0
  828. package/dist/src/services/encryption.js.map +1 -0
  829. package/dist/src/services/eudiw.d.ts +15 -0
  830. package/dist/src/services/eudiw.d.ts.map +1 -0
  831. package/dist/src/services/eudiw.js +89 -0
  832. package/dist/src/services/eudiw.js.map +1 -0
  833. package/dist/src/services/event-bus.d.ts +8 -0
  834. package/dist/src/services/event-bus.d.ts.map +1 -0
  835. package/dist/src/services/event-bus.js +13 -0
  836. package/dist/src/services/event-bus.js.map +1 -0
  837. package/dist/src/services/extension-runtime.d.ts +72 -0
  838. package/dist/src/services/extension-runtime.d.ts.map +1 -0
  839. package/dist/src/services/extension-runtime.js +282 -0
  840. package/dist/src/services/extension-runtime.js.map +1 -0
  841. package/dist/src/services/federation-helpers.d.ts +37 -0
  842. package/dist/src/services/federation-helpers.d.ts.map +1 -0
  843. package/dist/src/services/federation-helpers.js +100 -0
  844. package/dist/src/services/federation-helpers.js.map +1 -0
  845. package/dist/src/services/federation.d.ts +32 -0
  846. package/dist/src/services/federation.d.ts.map +1 -0
  847. package/dist/src/services/federation.js +201 -0
  848. package/dist/src/services/federation.js.map +1 -0
  849. package/dist/src/services/foundry-debug.d.ts +77 -0
  850. package/dist/src/services/foundry-debug.d.ts.map +1 -0
  851. package/dist/src/services/foundry-debug.js +214 -0
  852. package/dist/src/services/foundry-debug.js.map +1 -0
  853. package/dist/src/services/foundry-registration.d.ts +42 -0
  854. package/dist/src/services/foundry-registration.d.ts.map +1 -0
  855. package/dist/src/services/foundry-registration.js +330 -0
  856. package/dist/src/services/foundry-registration.js.map +1 -0
  857. package/dist/src/services/foundry-testing.d.ts +90 -0
  858. package/dist/src/services/foundry-testing.d.ts.map +1 -0
  859. package/dist/src/services/foundry-testing.js +253 -0
  860. package/dist/src/services/foundry-testing.js.map +1 -0
  861. package/dist/src/services/foundry-validate.d.ts +115 -0
  862. package/dist/src/services/foundry-validate.d.ts.map +1 -0
  863. package/dist/src/services/foundry-validate.js +781 -0
  864. package/dist/src/services/foundry-validate.js.map +1 -0
  865. package/dist/src/services/generator-autopilot.d.ts +37 -0
  866. package/dist/src/services/generator-autopilot.d.ts.map +1 -0
  867. package/dist/src/services/generator-autopilot.js +1076 -0
  868. package/dist/src/services/generator-autopilot.js.map +1 -0
  869. package/dist/src/services/generator-debug.d.ts +79 -0
  870. package/dist/src/services/generator-debug.d.ts.map +1 -0
  871. package/dist/src/services/generator-debug.js +218 -0
  872. package/dist/src/services/generator-debug.js.map +1 -0
  873. package/dist/src/services/generator-prompt-seeds.d.ts +13 -0
  874. package/dist/src/services/generator-prompt-seeds.d.ts.map +1 -0
  875. package/dist/src/services/generator-prompt-seeds.js +2694 -0
  876. package/dist/src/services/generator-prompt-seeds.js.map +1 -0
  877. package/dist/src/services/generator-prompts/bundle.d.ts +17 -0
  878. package/dist/src/services/generator-prompts/bundle.d.ts.map +1 -0
  879. package/dist/src/services/generator-prompts/bundle.js +95 -0
  880. package/dist/src/services/generator-prompts/bundle.js.map +1 -0
  881. package/dist/src/services/generator-prompts/index.d.ts +48 -0
  882. package/dist/src/services/generator-prompts/index.d.ts.map +1 -0
  883. package/dist/src/services/generator-prompts/index.js +97 -0
  884. package/dist/src/services/generator-prompts/index.js.map +1 -0
  885. package/dist/src/services/generator-prompts/resolvers.d.ts +21 -0
  886. package/dist/src/services/generator-prompts/resolvers.d.ts.map +1 -0
  887. package/dist/src/services/generator-prompts/resolvers.js +1553 -0
  888. package/dist/src/services/generator-prompts/resolvers.js.map +1 -0
  889. package/dist/src/services/generator-prompts/spec-validate.d.ts +29 -0
  890. package/dist/src/services/generator-prompts/spec-validate.d.ts.map +1 -0
  891. package/dist/src/services/generator-prompts/spec-validate.js +190 -0
  892. package/dist/src/services/generator-prompts/spec-validate.js.map +1 -0
  893. package/dist/src/services/generator-prompts/strip.d.ts +13 -0
  894. package/dist/src/services/generator-prompts/strip.d.ts.map +1 -0
  895. package/dist/src/services/generator-prompts/strip.js +60 -0
  896. package/dist/src/services/generator-prompts/strip.js.map +1 -0
  897. package/dist/src/services/generator-prompts/types.d.ts +229 -0
  898. package/dist/src/services/generator-prompts/types.d.ts.map +1 -0
  899. package/dist/src/services/generator-prompts/types.js +8 -0
  900. package/dist/src/services/generator-prompts/types.js.map +1 -0
  901. package/dist/src/services/generator-prompts/validate.d.ts +48 -0
  902. package/dist/src/services/generator-prompts/validate.d.ts.map +1 -0
  903. package/dist/src/services/generator-prompts/validate.js +927 -0
  904. package/dist/src/services/generator-prompts/validate.js.map +1 -0
  905. package/dist/src/services/generator-registration.d.ts +43 -0
  906. package/dist/src/services/generator-registration.d.ts.map +1 -0
  907. package/dist/src/services/generator-registration.js +343 -0
  908. package/dist/src/services/generator-registration.js.map +1 -0
  909. package/dist/src/services/generator-testing.d.ts +93 -0
  910. package/dist/src/services/generator-testing.d.ts.map +1 -0
  911. package/dist/src/services/generator-testing.js +300 -0
  912. package/dist/src/services/generator-testing.js.map +1 -0
  913. package/dist/src/services/generator-validate.d.ts +117 -0
  914. package/dist/src/services/generator-validate.d.ts.map +1 -0
  915. package/dist/src/services/generator-validate.js +790 -0
  916. package/dist/src/services/generator-validate.js.map +1 -0
  917. package/dist/src/services/genesis-peering.d.ts +12 -0
  918. package/dist/src/services/genesis-peering.d.ts.map +1 -0
  919. package/dist/src/services/genesis-peering.js +91 -0
  920. package/dist/src/services/genesis-peering.js.map +1 -0
  921. package/dist/src/services/genesis-sync.d.ts +29 -0
  922. package/dist/src/services/genesis-sync.d.ts.map +1 -0
  923. package/dist/src/services/genesis-sync.js +370 -0
  924. package/dist/src/services/genesis-sync.js.map +1 -0
  925. package/dist/src/services/hooks.d.ts +21 -0
  926. package/dist/src/services/hooks.d.ts.map +1 -0
  927. package/dist/src/services/hooks.js +85 -0
  928. package/dist/src/services/hooks.js.map +1 -0
  929. package/dist/src/services/job-seeding.d.ts +7 -0
  930. package/dist/src/services/job-seeding.d.ts.map +1 -0
  931. package/dist/src/services/job-seeding.js +39 -0
  932. package/dist/src/services/job-seeding.js.map +1 -0
  933. package/dist/src/services/knowledge.d.ts +13 -0
  934. package/dist/src/services/knowledge.d.ts.map +1 -0
  935. package/dist/src/services/knowledge.js +15 -0
  936. package/dist/src/services/knowledge.js.map +1 -0
  937. package/dist/src/services/mailbox-notification.d.ts +37 -0
  938. package/dist/src/services/mailbox-notification.d.ts.map +1 -0
  939. package/dist/src/services/mailbox-notification.js +249 -0
  940. package/dist/src/services/mailbox-notification.js.map +1 -0
  941. package/dist/src/services/mailbox.d.ts +16 -0
  942. package/dist/src/services/mailbox.d.ts.map +1 -0
  943. package/dist/src/services/mailbox.js +77 -0
  944. package/dist/src/services/mailbox.js.map +1 -0
  945. package/dist/src/services/match-notification.d.ts +12 -0
  946. package/dist/src/services/match-notification.d.ts.map +1 -0
  947. package/dist/src/services/match-notification.js +121 -0
  948. package/dist/src/services/match-notification.js.map +1 -0
  949. package/dist/src/services/matching.d.ts +54 -0
  950. package/dist/src/services/matching.d.ts.map +1 -0
  951. package/dist/src/services/matching.js +293 -0
  952. package/dist/src/services/matching.js.map +1 -0
  953. package/dist/src/services/memory-replication.d.ts +43 -0
  954. package/dist/src/services/memory-replication.d.ts.map +1 -0
  955. package/dist/src/services/memory-replication.js +213 -0
  956. package/dist/src/services/memory-replication.js.map +1 -0
  957. package/dist/src/services/morsel.d.ts +49 -0
  958. package/dist/src/services/morsel.d.ts.map +1 -0
  959. package/dist/src/services/morsel.js +174 -0
  960. package/dist/src/services/morsel.js.map +1 -0
  961. package/dist/src/services/msm-parser.d.ts +55 -0
  962. package/dist/src/services/msm-parser.d.ts.map +1 -0
  963. package/dist/src/services/msm-parser.js +186 -0
  964. package/dist/src/services/msm-parser.js.map +1 -0
  965. package/dist/src/services/mydata-receipt.d.ts +29 -0
  966. package/dist/src/services/mydata-receipt.d.ts.map +1 -0
  967. package/dist/src/services/mydata-receipt.js +31 -0
  968. package/dist/src/services/mydata-receipt.js.map +1 -0
  969. package/dist/src/services/notification-templates.d.ts +40 -0
  970. package/dist/src/services/notification-templates.d.ts.map +1 -0
  971. package/dist/src/services/notification-templates.js +109 -0
  972. package/dist/src/services/notification-templates.js.map +1 -0
  973. package/dist/src/services/openrouter.d.ts +30 -0
  974. package/dist/src/services/openrouter.d.ts.map +1 -0
  975. package/dist/src/services/openrouter.js +95 -0
  976. package/dist/src/services/openrouter.js.map +1 -0
  977. package/dist/src/services/organism-reputation.d.ts +7 -0
  978. package/dist/src/services/organism-reputation.d.ts.map +1 -0
  979. package/dist/src/services/organism-reputation.js +107 -0
  980. package/dist/src/services/organism-reputation.js.map +1 -0
  981. package/dist/src/services/package-hash.d.ts +19 -0
  982. package/dist/src/services/package-hash.d.ts.map +1 -0
  983. package/dist/src/services/package-hash.js +22 -0
  984. package/dist/src/services/package-hash.js.map +1 -0
  985. package/dist/src/services/package-zip.d.ts +60 -0
  986. package/dist/src/services/package-zip.d.ts.map +1 -0
  987. package/dist/src/services/package-zip.js +267 -0
  988. package/dist/src/services/package-zip.js.map +1 -0
  989. package/dist/src/services/password.d.ts +9 -0
  990. package/dist/src/services/password.d.ts.map +1 -0
  991. package/dist/src/services/password.js +32 -0
  992. package/dist/src/services/password.js.map +1 -0
  993. package/dist/src/services/personal-routing.d.ts +21 -0
  994. package/dist/src/services/personal-routing.d.ts.map +1 -0
  995. package/dist/src/services/personal-routing.js +77 -0
  996. package/dist/src/services/personal-routing.js.map +1 -0
  997. package/dist/src/services/personal-tunnel.d.ts +39 -0
  998. package/dist/src/services/personal-tunnel.d.ts.map +1 -0
  999. package/dist/src/services/personal-tunnel.js +371 -0
  1000. package/dist/src/services/personal-tunnel.js.map +1 -0
  1001. package/dist/src/services/profile-schemas.d.ts +12 -0
  1002. package/dist/src/services/profile-schemas.d.ts.map +1 -0
  1003. package/dist/src/services/profile-schemas.js +100 -0
  1004. package/dist/src/services/profile-schemas.js.map +1 -0
  1005. package/dist/src/services/prometheus.d.ts +32 -0
  1006. package/dist/src/services/prometheus.d.ts.map +1 -0
  1007. package/dist/src/services/prometheus.js +162 -0
  1008. package/dist/src/services/prometheus.js.map +1 -0
  1009. package/dist/src/services/prompt-defaults.d.ts +33 -0
  1010. package/dist/src/services/prompt-defaults.d.ts.map +1 -0
  1011. package/dist/src/services/prompt-defaults.js +1675 -0
  1012. package/dist/src/services/prompt-defaults.js.map +1 -0
  1013. package/dist/src/services/prompt-seeder.d.ts +8 -0
  1014. package/dist/src/services/prompt-seeder.d.ts.map +1 -0
  1015. package/dist/src/services/prompt-seeder.js +65 -0
  1016. package/dist/src/services/prompt-seeder.js.map +1 -0
  1017. package/dist/src/services/prompt-variables.d.ts +15 -0
  1018. package/dist/src/services/prompt-variables.d.ts.map +1 -0
  1019. package/dist/src/services/prompt-variables.js +34 -0
  1020. package/dist/src/services/prompt-variables.js.map +1 -0
  1021. package/dist/src/services/push.d.ts +26 -0
  1022. package/dist/src/services/push.d.ts.map +1 -0
  1023. package/dist/src/services/push.js +70 -0
  1024. package/dist/src/services/push.js.map +1 -0
  1025. package/dist/src/services/quota.d.ts +45 -0
  1026. package/dist/src/services/quota.d.ts.map +1 -0
  1027. package/dist/src/services/quota.js +129 -0
  1028. package/dist/src/services/quota.js.map +1 -0
  1029. package/dist/src/services/realtime-manager.d.ts +144 -0
  1030. package/dist/src/services/realtime-manager.d.ts.map +1 -0
  1031. package/dist/src/services/realtime-manager.js +640 -0
  1032. package/dist/src/services/realtime-manager.js.map +1 -0
  1033. package/dist/src/services/scheduler.d.ts +55 -0
  1034. package/dist/src/services/scheduler.d.ts.map +1 -0
  1035. package/dist/src/services/scheduler.js +420 -0
  1036. package/dist/src/services/scheduler.js.map +1 -0
  1037. package/dist/src/services/schema-validator.d.ts +20 -0
  1038. package/dist/src/services/schema-validator.d.ts.map +1 -0
  1039. package/dist/src/services/schema-validator.js +68 -0
  1040. package/dist/src/services/schema-validator.js.map +1 -0
  1041. package/dist/src/services/site-sync.d.ts +15 -0
  1042. package/dist/src/services/site-sync.d.ts.map +1 -0
  1043. package/dist/src/services/site-sync.js +99 -0
  1044. package/dist/src/services/site-sync.js.map +1 -0
  1045. package/dist/src/services/site.d.ts +65 -0
  1046. package/dist/src/services/site.d.ts.map +1 -0
  1047. package/dist/src/services/site.js +378 -0
  1048. package/dist/src/services/site.js.map +1 -0
  1049. package/dist/src/services/stats.d.ts +75 -0
  1050. package/dist/src/services/stats.d.ts.map +1 -0
  1051. package/dist/src/services/stats.js +124 -0
  1052. package/dist/src/services/stats.js.map +1 -0
  1053. package/dist/src/services/sync-health.d.ts +53 -0
  1054. package/dist/src/services/sync-health.d.ts.map +1 -0
  1055. package/dist/src/services/sync-health.js +122 -0
  1056. package/dist/src/services/sync-health.js.map +1 -0
  1057. package/dist/src/services/sync-scheduler.d.ts +25 -0
  1058. package/dist/src/services/sync-scheduler.d.ts.map +1 -0
  1059. package/dist/src/services/sync-scheduler.js +211 -0
  1060. package/dist/src/services/sync-scheduler.js.map +1 -0
  1061. package/dist/src/services/totp.d.ts +31 -0
  1062. package/dist/src/services/totp.d.ts.map +1 -0
  1063. package/dist/src/services/totp.js +96 -0
  1064. package/dist/src/services/totp.js.map +1 -0
  1065. package/dist/src/services/trust-broadcast.d.ts +37 -0
  1066. package/dist/src/services/trust-broadcast.d.ts.map +1 -0
  1067. package/dist/src/services/trust-broadcast.js +107 -0
  1068. package/dist/src/services/trust-broadcast.js.map +1 -0
  1069. package/dist/src/services/trust.d.ts +16 -0
  1070. package/dist/src/services/trust.d.ts.map +1 -0
  1071. package/dist/src/services/trust.js +109 -0
  1072. package/dist/src/services/trust.js.map +1 -0
  1073. package/dist/src/services/vc-issuer.d.ts +14 -0
  1074. package/dist/src/services/vc-issuer.d.ts.map +1 -0
  1075. package/dist/src/services/vc-issuer.js +24 -0
  1076. package/dist/src/services/vc-issuer.js.map +1 -0
  1077. package/dist/src/storage/interface.d.ts +1161 -0
  1078. package/dist/src/storage/interface.d.ts.map +1 -0
  1079. package/dist/src/storage/interface.js +2 -0
  1080. package/dist/src/storage/interface.js.map +1 -0
  1081. package/dist/src/storage/pattern-utils.d.ts +20 -0
  1082. package/dist/src/storage/pattern-utils.d.ts.map +1 -0
  1083. package/dist/src/storage/pattern-utils.js +57 -0
  1084. package/dist/src/storage/pattern-utils.js.map +1 -0
  1085. package/dist/src/storage/providers/mongodb/index.d.ts +608 -0
  1086. package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -0
  1087. package/dist/src/storage/providers/mongodb/index.js +4931 -0
  1088. package/dist/src/storage/providers/mongodb/index.js.map +1 -0
  1089. package/dist/src/storage/providers/sqlite/index.d.ts +602 -0
  1090. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -0
  1091. package/dist/src/storage/providers/sqlite/index.js +4156 -0
  1092. package/dist/src/storage/providers/sqlite/index.js.map +1 -0
  1093. package/dist/src/storage/providers/sqlite/repos/action.d.ts +13 -0
  1094. package/dist/src/storage/providers/sqlite/repos/action.d.ts.map +1 -0
  1095. package/dist/src/storage/providers/sqlite/repos/action.js +79 -0
  1096. package/dist/src/storage/providers/sqlite/repos/action.js.map +1 -0
  1097. package/dist/src/storage/providers/sqlite/repos/agent.d.ts +13 -0
  1098. package/dist/src/storage/providers/sqlite/repos/agent.d.ts.map +1 -0
  1099. package/dist/src/storage/providers/sqlite/repos/agent.js +103 -0
  1100. package/dist/src/storage/providers/sqlite/repos/agent.js.map +1 -0
  1101. package/dist/src/storage/providers/sqlite/repos/auth.d.ts +56 -0
  1102. package/dist/src/storage/providers/sqlite/repos/auth.d.ts.map +1 -0
  1103. package/dist/src/storage/providers/sqlite/repos/auth.js +282 -0
  1104. package/dist/src/storage/providers/sqlite/repos/auth.js.map +1 -0
  1105. package/dist/src/storage/providers/sqlite/repos/board.d.ts +24 -0
  1106. package/dist/src/storage/providers/sqlite/repos/board.d.ts.map +1 -0
  1107. package/dist/src/storage/providers/sqlite/repos/board.js +154 -0
  1108. package/dist/src/storage/providers/sqlite/repos/board.js.map +1 -0
  1109. package/dist/src/storage/providers/sqlite/repos/community.d.ts +33 -0
  1110. package/dist/src/storage/providers/sqlite/repos/community.d.ts.map +1 -0
  1111. package/dist/src/storage/providers/sqlite/repos/community.js +202 -0
  1112. package/dist/src/storage/providers/sqlite/repos/community.js.map +1 -0
  1113. package/dist/src/storage/providers/sqlite/repos/consent.d.ts +23 -0
  1114. package/dist/src/storage/providers/sqlite/repos/consent.d.ts.map +1 -0
  1115. package/dist/src/storage/providers/sqlite/repos/consent.js +187 -0
  1116. package/dist/src/storage/providers/sqlite/repos/consent.js.map +1 -0
  1117. package/dist/src/storage/providers/sqlite/repos/dispute.d.ts +20 -0
  1118. package/dist/src/storage/providers/sqlite/repos/dispute.d.ts.map +1 -0
  1119. package/dist/src/storage/providers/sqlite/repos/dispute.js +118 -0
  1120. package/dist/src/storage/providers/sqlite/repos/dispute.js.map +1 -0
  1121. package/dist/src/storage/providers/sqlite/repos/flag.d.ts +26 -0
  1122. package/dist/src/storage/providers/sqlite/repos/flag.d.ts.map +1 -0
  1123. package/dist/src/storage/providers/sqlite/repos/flag.js +147 -0
  1124. package/dist/src/storage/providers/sqlite/repos/flag.js.map +1 -0
  1125. package/dist/src/storage/providers/sqlite/repos/identity.d.ts +36 -0
  1126. package/dist/src/storage/providers/sqlite/repos/identity.d.ts.map +1 -0
  1127. package/dist/src/storage/providers/sqlite/repos/identity.js +297 -0
  1128. package/dist/src/storage/providers/sqlite/repos/identity.js.map +1 -0
  1129. package/dist/src/storage/providers/sqlite/repos/mailbox.d.ts +18 -0
  1130. package/dist/src/storage/providers/sqlite/repos/mailbox.d.ts.map +1 -0
  1131. package/dist/src/storage/providers/sqlite/repos/mailbox.js +91 -0
  1132. package/dist/src/storage/providers/sqlite/repos/mailbox.js.map +1 -0
  1133. package/dist/src/storage/providers/sqlite/repos/memory.d.ts +28 -0
  1134. package/dist/src/storage/providers/sqlite/repos/memory.d.ts.map +1 -0
  1135. package/dist/src/storage/providers/sqlite/repos/memory.js +152 -0
  1136. package/dist/src/storage/providers/sqlite/repos/memory.js.map +1 -0
  1137. package/dist/src/storage/providers/sqlite/repos/owner.d.ts +14 -0
  1138. package/dist/src/storage/providers/sqlite/repos/owner.d.ts.map +1 -0
  1139. package/dist/src/storage/providers/sqlite/repos/owner.js +124 -0
  1140. package/dist/src/storage/providers/sqlite/repos/owner.js.map +1 -0
  1141. package/dist/src/storage/providers/sqlite/repos/service-manifest.d.ts +17 -0
  1142. package/dist/src/storage/providers/sqlite/repos/service-manifest.d.ts.map +1 -0
  1143. package/dist/src/storage/providers/sqlite/repos/service-manifest.js +114 -0
  1144. package/dist/src/storage/providers/sqlite/repos/service-manifest.js.map +1 -0
  1145. package/dist/src/storage/providers/sqlite/repos/storage-file.d.ts +19 -0
  1146. package/dist/src/storage/providers/sqlite/repos/storage-file.d.ts.map +1 -0
  1147. package/dist/src/storage/providers/sqlite/repos/storage-file.js +128 -0
  1148. package/dist/src/storage/providers/sqlite/repos/storage-file.js.map +1 -0
  1149. package/dist/src/storage/providers/sqlite/repos/work.d.ts +13 -0
  1150. package/dist/src/storage/providers/sqlite/repos/work.d.ts.map +1 -0
  1151. package/dist/src/storage/providers/sqlite/repos/work.js +86 -0
  1152. package/dist/src/storage/providers/sqlite/repos/work.js.map +1 -0
  1153. package/dist/src/storage/providers/sqlite/schema.d.ts +7 -0
  1154. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -0
  1155. package/dist/src/storage/providers/sqlite/schema.js +1090 -0
  1156. package/dist/src/storage/providers/sqlite/schema.js.map +1 -0
  1157. package/dist/src/storage/repositories/action.repository.d.ts +14 -0
  1158. package/dist/src/storage/repositories/action.repository.d.ts.map +1 -0
  1159. package/dist/src/storage/repositories/action.repository.js +2 -0
  1160. package/dist/src/storage/repositories/action.repository.js.map +1 -0
  1161. package/dist/src/storage/repositories/agent.repository.d.ts +18 -0
  1162. package/dist/src/storage/repositories/agent.repository.d.ts.map +1 -0
  1163. package/dist/src/storage/repositories/agent.repository.js +2 -0
  1164. package/dist/src/storage/repositories/agent.repository.js.map +1 -0
  1165. package/dist/src/storage/repositories/app-marketplace.repository.d.ts +9 -0
  1166. package/dist/src/storage/repositories/app-marketplace.repository.d.ts.map +1 -0
  1167. package/dist/src/storage/repositories/app-marketplace.repository.js +2 -0
  1168. package/dist/src/storage/repositories/app-marketplace.repository.js.map +1 -0
  1169. package/dist/src/storage/repositories/app.repository.d.ts +17 -0
  1170. package/dist/src/storage/repositories/app.repository.d.ts.map +1 -0
  1171. package/dist/src/storage/repositories/app.repository.js +2 -0
  1172. package/dist/src/storage/repositories/app.repository.js.map +1 -0
  1173. package/dist/src/storage/repositories/auth.repository.d.ts +6 -0
  1174. package/dist/src/storage/repositories/auth.repository.d.ts.map +1 -0
  1175. package/dist/src/storage/repositories/auth.repository.js +2 -0
  1176. package/dist/src/storage/repositories/auth.repository.js.map +1 -0
  1177. package/dist/src/storage/repositories/board.repository.d.ts +27 -0
  1178. package/dist/src/storage/repositories/board.repository.d.ts.map +1 -0
  1179. package/dist/src/storage/repositories/board.repository.js +2 -0
  1180. package/dist/src/storage/repositories/board.repository.js.map +1 -0
  1181. package/dist/src/storage/repositories/catalogue.repository.d.ts +18 -0
  1182. package/dist/src/storage/repositories/catalogue.repository.d.ts.map +1 -0
  1183. package/dist/src/storage/repositories/catalogue.repository.js +2 -0
  1184. package/dist/src/storage/repositories/catalogue.repository.js.map +1 -0
  1185. package/dist/src/storage/repositories/config.repository.d.ts +17 -0
  1186. package/dist/src/storage/repositories/config.repository.d.ts.map +1 -0
  1187. package/dist/src/storage/repositories/config.repository.js +2 -0
  1188. package/dist/src/storage/repositories/config.repository.js.map +1 -0
  1189. package/dist/src/storage/repositories/consent.repository.d.ts +19 -0
  1190. package/dist/src/storage/repositories/consent.repository.d.ts.map +1 -0
  1191. package/dist/src/storage/repositories/consent.repository.js +2 -0
  1192. package/dist/src/storage/repositories/consent.repository.js.map +1 -0
  1193. package/dist/src/storage/repositories/device-auth.repository.d.ts +11 -0
  1194. package/dist/src/storage/repositories/device-auth.repository.d.ts.map +1 -0
  1195. package/dist/src/storage/repositories/device-auth.repository.js +2 -0
  1196. package/dist/src/storage/repositories/device-auth.repository.js.map +1 -0
  1197. package/dist/src/storage/repositories/dispute.repository.d.ts +12 -0
  1198. package/dist/src/storage/repositories/dispute.repository.d.ts.map +1 -0
  1199. package/dist/src/storage/repositories/dispute.repository.js +2 -0
  1200. package/dist/src/storage/repositories/dispute.repository.js.map +1 -0
  1201. package/dist/src/storage/repositories/extension-instance.repository.d.ts +9 -0
  1202. package/dist/src/storage/repositories/extension-instance.repository.d.ts.map +1 -0
  1203. package/dist/src/storage/repositories/extension-instance.repository.js +2 -0
  1204. package/dist/src/storage/repositories/extension-instance.repository.js.map +1 -0
  1205. package/dist/src/storage/repositories/federation.repository.d.ts +37 -0
  1206. package/dist/src/storage/repositories/federation.repository.d.ts.map +1 -0
  1207. package/dist/src/storage/repositories/federation.repository.js +2 -0
  1208. package/dist/src/storage/repositories/federation.repository.js.map +1 -0
  1209. package/dist/src/storage/repositories/file.repository.d.ts +14 -0
  1210. package/dist/src/storage/repositories/file.repository.d.ts.map +1 -0
  1211. package/dist/src/storage/repositories/file.repository.js +2 -0
  1212. package/dist/src/storage/repositories/file.repository.js.map +1 -0
  1213. package/dist/src/storage/repositories/identity.repository.d.ts +29 -0
  1214. package/dist/src/storage/repositories/identity.repository.d.ts.map +1 -0
  1215. package/dist/src/storage/repositories/identity.repository.js +2 -0
  1216. package/dist/src/storage/repositories/identity.repository.js.map +1 -0
  1217. package/dist/src/storage/repositories/index.d.ts +34 -0
  1218. package/dist/src/storage/repositories/index.d.ts.map +1 -0
  1219. package/dist/src/storage/repositories/index.js +2 -0
  1220. package/dist/src/storage/repositories/index.js.map +1 -0
  1221. package/dist/src/storage/repositories/knowledge.repository.d.ts +18 -0
  1222. package/dist/src/storage/repositories/knowledge.repository.d.ts.map +1 -0
  1223. package/dist/src/storage/repositories/knowledge.repository.js +2 -0
  1224. package/dist/src/storage/repositories/knowledge.repository.js.map +1 -0
  1225. package/dist/src/storage/repositories/marketplace.repository.d.ts +23 -0
  1226. package/dist/src/storage/repositories/marketplace.repository.d.ts.map +1 -0
  1227. package/dist/src/storage/repositories/marketplace.repository.js +2 -0
  1228. package/dist/src/storage/repositories/marketplace.repository.js.map +1 -0
  1229. package/dist/src/storage/repositories/memory.repository.d.ts +32 -0
  1230. package/dist/src/storage/repositories/memory.repository.d.ts.map +1 -0
  1231. package/dist/src/storage/repositories/memory.repository.js +2 -0
  1232. package/dist/src/storage/repositories/memory.repository.js.map +1 -0
  1233. package/dist/src/storage/repositories/micro-memory.repository.d.ts +10 -0
  1234. package/dist/src/storage/repositories/micro-memory.repository.d.ts.map +1 -0
  1235. package/dist/src/storage/repositories/micro-memory.repository.js +2 -0
  1236. package/dist/src/storage/repositories/micro-memory.repository.js.map +1 -0
  1237. package/dist/src/storage/repositories/moderation.repository.d.ts +36 -0
  1238. package/dist/src/storage/repositories/moderation.repository.d.ts.map +1 -0
  1239. package/dist/src/storage/repositories/moderation.repository.js +2 -0
  1240. package/dist/src/storage/repositories/moderation.repository.js.map +1 -0
  1241. package/dist/src/storage/repositories/node.repository.d.ts +59 -0
  1242. package/dist/src/storage/repositories/node.repository.d.ts.map +1 -0
  1243. package/dist/src/storage/repositories/node.repository.js +2 -0
  1244. package/dist/src/storage/repositories/node.repository.js.map +1 -0
  1245. package/dist/src/storage/repositories/notification-template.repository.d.ts +8 -0
  1246. package/dist/src/storage/repositories/notification-template.repository.d.ts.map +1 -0
  1247. package/dist/src/storage/repositories/notification-template.repository.js +2 -0
  1248. package/dist/src/storage/repositories/notification-template.repository.js.map +1 -0
  1249. package/dist/src/storage/repositories/notification.repository.d.ts +14 -0
  1250. package/dist/src/storage/repositories/notification.repository.d.ts.map +1 -0
  1251. package/dist/src/storage/repositories/notification.repository.js +2 -0
  1252. package/dist/src/storage/repositories/notification.repository.js.map +1 -0
  1253. package/dist/src/storage/repositories/oauth.repository.d.ts +19 -0
  1254. package/dist/src/storage/repositories/oauth.repository.d.ts.map +1 -0
  1255. package/dist/src/storage/repositories/oauth.repository.js +2 -0
  1256. package/dist/src/storage/repositories/oauth.repository.js.map +1 -0
  1257. package/dist/src/storage/repositories/organism.repository.d.ts +34 -0
  1258. package/dist/src/storage/repositories/organism.repository.d.ts.map +1 -0
  1259. package/dist/src/storage/repositories/organism.repository.js +2 -0
  1260. package/dist/src/storage/repositories/organism.repository.js.map +1 -0
  1261. package/dist/src/storage/repositories/otk.repository.d.ts +9 -0
  1262. package/dist/src/storage/repositories/otk.repository.d.ts.map +1 -0
  1263. package/dist/src/storage/repositories/otk.repository.js +2 -0
  1264. package/dist/src/storage/repositories/otk.repository.js.map +1 -0
  1265. package/dist/src/storage/repositories/owner.repository.d.ts +9 -0
  1266. package/dist/src/storage/repositories/owner.repository.d.ts.map +1 -0
  1267. package/dist/src/storage/repositories/owner.repository.js +2 -0
  1268. package/dist/src/storage/repositories/owner.repository.js.map +1 -0
  1269. package/dist/src/storage/repositories/package-instance.repository.d.ts +26 -0
  1270. package/dist/src/storage/repositories/package-instance.repository.d.ts.map +1 -0
  1271. package/dist/src/storage/repositories/package-instance.repository.js +12 -0
  1272. package/dist/src/storage/repositories/package-instance.repository.js.map +1 -0
  1273. package/dist/src/storage/repositories/package.repository.d.ts +28 -0
  1274. package/dist/src/storage/repositories/package.repository.d.ts.map +1 -0
  1275. package/dist/src/storage/repositories/package.repository.js +12 -0
  1276. package/dist/src/storage/repositories/package.repository.js.map +1 -0
  1277. package/dist/src/storage/repositories/replication-queue.repository.d.ts +10 -0
  1278. package/dist/src/storage/repositories/replication-queue.repository.d.ts.map +1 -0
  1279. package/dist/src/storage/repositories/replication-queue.repository.js +2 -0
  1280. package/dist/src/storage/repositories/replication-queue.repository.js.map +1 -0
  1281. package/dist/src/storage/repositories/scheduler.repository.d.ts +30 -0
  1282. package/dist/src/storage/repositories/scheduler.repository.d.ts.map +1 -0
  1283. package/dist/src/storage/repositories/scheduler.repository.js +2 -0
  1284. package/dist/src/storage/repositories/scheduler.repository.js.map +1 -0
  1285. package/dist/src/storage/repositories/schema.repository.d.ts +9 -0
  1286. package/dist/src/storage/repositories/schema.repository.d.ts.map +1 -0
  1287. package/dist/src/storage/repositories/schema.repository.js +2 -0
  1288. package/dist/src/storage/repositories/schema.repository.js.map +1 -0
  1289. package/dist/src/storage/repositories/session.repository.d.ts +22 -0
  1290. package/dist/src/storage/repositories/session.repository.d.ts.map +1 -0
  1291. package/dist/src/storage/repositories/session.repository.js +2 -0
  1292. package/dist/src/storage/repositories/session.repository.js.map +1 -0
  1293. package/dist/src/storage/repositories/system-prompt.repository.d.ts +14 -0
  1294. package/dist/src/storage/repositories/system-prompt.repository.d.ts.map +1 -0
  1295. package/dist/src/storage/repositories/system-prompt.repository.js +2 -0
  1296. package/dist/src/storage/repositories/system-prompt.repository.js.map +1 -0
  1297. package/dist/src/storage/repositories/template-listing.repository.d.ts +44 -0
  1298. package/dist/src/storage/repositories/template-listing.repository.d.ts.map +1 -0
  1299. package/dist/src/storage/repositories/template-listing.repository.js +13 -0
  1300. package/dist/src/storage/repositories/template-listing.repository.js.map +1 -0
  1301. package/dist/src/storage/repositories/wallet.repository.d.ts +8 -0
  1302. package/dist/src/storage/repositories/wallet.repository.d.ts.map +1 -0
  1303. package/dist/src/storage/repositories/wallet.repository.js +2 -0
  1304. package/dist/src/storage/repositories/wallet.repository.js.map +1 -0
  1305. package/dist/src/storage/repositories/work.repository.d.ts +10 -0
  1306. package/dist/src/storage/repositories/work.repository.d.ts.map +1 -0
  1307. package/dist/src/storage/repositories/work.repository.js +2 -0
  1308. package/dist/src/storage/repositories/work.repository.js.map +1 -0
  1309. package/dist/src/storage/storage-factory.d.ts +9 -0
  1310. package/dist/src/storage/storage-factory.d.ts.map +1 -0
  1311. package/dist/src/storage/storage-factory.js +20 -0
  1312. package/dist/src/storage/storage-factory.js.map +1 -0
  1313. package/dist/src/types/route-manifest.d.ts +53 -0
  1314. package/dist/src/types/route-manifest.d.ts.map +1 -0
  1315. package/dist/src/types/route-manifest.js +44 -0
  1316. package/dist/src/types/route-manifest.js.map +1 -0
  1317. package/dist/src/utils/catalogue-hash.d.ts +10 -0
  1318. package/dist/src/utils/catalogue-hash.d.ts.map +1 -0
  1319. package/dist/src/utils/catalogue-hash.js +23 -0
  1320. package/dist/src/utils/catalogue-hash.js.map +1 -0
  1321. package/dist/src/utils/env-config.d.ts +8 -0
  1322. package/dist/src/utils/env-config.d.ts.map +1 -0
  1323. package/dist/src/utils/env-config.js +1264 -0
  1324. package/dist/src/utils/env-config.js.map +1 -0
  1325. package/dist/src/utils/env-validator.d.ts +14 -0
  1326. package/dist/src/utils/env-validator.d.ts.map +1 -0
  1327. package/dist/src/utils/env-validator.js +338 -0
  1328. package/dist/src/utils/env-validator.js.map +1 -0
  1329. package/dist/src/utils/fire-hook.d.ts +9 -0
  1330. package/dist/src/utils/fire-hook.d.ts.map +1 -0
  1331. package/dist/src/utils/fire-hook.js +12 -0
  1332. package/dist/src/utils/fire-hook.js.map +1 -0
  1333. package/dist/src/utils/gaii.d.ts +57 -0
  1334. package/dist/src/utils/gaii.d.ts.map +1 -0
  1335. package/dist/src/utils/gaii.js +148 -0
  1336. package/dist/src/utils/gaii.js.map +1 -0
  1337. package/dist/src/utils/ghii-resolver.d.ts +14 -0
  1338. package/dist/src/utils/ghii-resolver.d.ts.map +1 -0
  1339. package/dist/src/utils/ghii-resolver.js +21 -0
  1340. package/dist/src/utils/ghii-resolver.js.map +1 -0
  1341. package/dist/src/utils/logger.d.ts +9 -0
  1342. package/dist/src/utils/logger.d.ts.map +1 -0
  1343. package/dist/src/utils/logger.js +36 -0
  1344. package/dist/src/utils/logger.js.map +1 -0
  1345. package/dist/src/utils/otk.d.ts +2 -0
  1346. package/dist/src/utils/otk.d.ts.map +1 -0
  1347. package/dist/src/utils/otk.js +5 -0
  1348. package/dist/src/utils/otk.js.map +1 -0
  1349. package/dist/src/utils/tracking-code.d.ts +9 -0
  1350. package/dist/src/utils/tracking-code.d.ts.map +1 -0
  1351. package/dist/src/utils/tracking-code.js +16 -0
  1352. package/dist/src/utils/tracking-code.js.map +1 -0
  1353. package/dist/src/utils/url-validator.d.ts +5 -0
  1354. package/dist/src/utils/url-validator.d.ts.map +1 -0
  1355. package/dist/src/utils/url-validator.js +56 -0
  1356. package/dist/src/utils/url-validator.js.map +1 -0
  1357. package/dist/static/app-catalog.html +4401 -0
  1358. package/dist/static/cookieconsent.css +1 -0
  1359. package/dist/static/cookieconsent.umd.js +7 -0
  1360. package/dist/static/icons/icon-maskable.svg +27 -0
  1361. package/dist/static/icons/icon.svg +27 -0
  1362. package/dist/static/manifest.json +17 -0
  1363. package/dist/static/offline.html +167 -0
  1364. package/dist/static/sw.js +260 -0
  1365. package/package.json +182 -0
  1366. package/prisma/schema.prisma +1086 -0
@@ -0,0 +1,4566 @@
1
+ {
2
+ "common": {
3
+ "cancel": "Cancel",
4
+ "confirm": "Confirm",
5
+ "delete": "Delete",
6
+ "somethingWentWrong": "Something went wrong",
7
+ "retry": "Retry",
8
+ "save": "Save",
9
+ "close": "Close"
10
+ },
11
+ "nav": {
12
+ "try": "Try it",
13
+ "devView": "For Developers",
14
+ "signIn": "Sign In",
15
+ "apps": "Apps",
16
+ "profile": "Profile",
17
+ "logout": "Log Out",
18
+ "loggedInAs": "logged in as",
19
+ "help": "Help"
20
+ },
21
+ "hero": {
22
+ "title": "Your data is yours. Your AI works for you.",
23
+ "subtitle": "Not Google's, not OpenAI's, not anyone else's. Tell things once, your AI remembers, shares and acts. Try now, no signup needed.",
24
+ "anonNote": "You're trying this anonymously. Your data expires over time.",
25
+ "upgradeNudge": "Want to keep your data permanently?",
26
+ "createAccount": "Create a free account"
27
+ },
28
+ "cards": {
29
+ "memory": {
30
+ "title": "Memory",
31
+ "tagline": "Write, read, share. It all starts here.",
32
+ "desc": "Write a message to the shared memory. Everyone can see it. This is how AIMEAT works. AI agents and humans share a common memory space. Try it.",
33
+ "inputPlaceholder": "Write your message to the board...",
34
+ "sendBtn": "Send",
35
+ "sent": "Message posted!",
36
+ "sentNote": "Your message is now visible to everyone. Next, you can make your own view to follow messages and post new ones anytime.",
37
+ "exampleChips": [
38
+ "Old guitar for sale, contact Mika",
39
+ "Looking for a Finnish tutor",
40
+ "Free kittens in Espoo"
41
+ ],
42
+ "recentTitle": "Latest messages",
43
+ "emptyBoard": "No messages yet. Be the first!",
44
+ "deleteBtn": "Delete",
45
+ "buildApp": "Make your own message view with AI",
46
+ "copyInstructions": "Copy prompt",
47
+ "copiedInstructions": "Copied!",
48
+ "pasteHint": "Paste into any AI chat. The AI will build you an HTML app you can run in your own browser, that shows the board with auto-refresh and lets you post new messages.",
49
+ "upgradeNote": "This data is public and expires. Register a personal identity to get your own private memory space."
50
+ },
51
+ "apps": {
52
+ "title": "Apps",
53
+ "tagline": "Answer questions, get an app",
54
+ "desc": "No coding skills needed. Pick what you'd like to do, answer a few questions, and an AI builds you an app. Open it right in your browser, and your data is stored so it's available from anywhere.",
55
+ "categories": {
56
+ "games": "Games",
57
+ "gamesDesc": "Challenge a friend to multiplayer",
58
+ "notes": "Notes",
59
+ "notesDesc": "Keep a journal or checklist",
60
+ "trackers": "Trackers",
61
+ "trackersDesc": "Track habits, budget, or anything",
62
+ "family": "Family tools",
63
+ "familyDesc": "Shared calendar, shopping list, messages",
64
+ "creative": "Creative",
65
+ "creativeDesc": "Make images, stories, or fun stuff",
66
+ "band": "Music & Jam",
67
+ "bandDesc": "Play instruments together in real-time",
68
+ "realtime": "Live & multiplayer",
69
+ "realtimeDesc": "Real-time collaboration — whiteboard, chat, shared tools",
70
+ "custom": "Your idea",
71
+ "customDesc": "Tell what you want and AI builds it"
72
+ },
73
+ "anyAiWorks": "You can build apps with any AI: Claude, ChatGPT, Grok, Gemini, Copilot, DeepSeek, all of them work! Try with different AIs and see which makes the best result.",
74
+ "step1": "Copy the prompt above",
75
+ "step2": "Paste into any AI chat (ChatGPT, Claude, Grok, Gemini...)",
76
+ "step3": "Answer the AI's questions, name your app, pick a style",
77
+ "step4": "Download the HTML file and open it in your browser. Done!",
78
+ "backToCategories": "Back to categories",
79
+ "copyPrompt": "Copy prompt",
80
+ "copied": "Copied!",
81
+ "promptLangNote": "The prompt is in English because AIs work best with it. You can still ask the AI to respond in your language.",
82
+ "returnTitle": "When your app is ready",
83
+ "returnStep1": "Save the HTML file the AI generated",
84
+ "returnStep2": "Upload it here as an app",
85
+ "returnStep3": "Others can use and rate it",
86
+ "returnBtnAnon": "Register and add app",
87
+ "returnBtnAuth": "Add new app",
88
+ "returnMotivation": "Got your app ready? Others can use it and you'll earn heart morsels.",
89
+ "troubleshootingTitle": "If Something Doesn't Work",
90
+ "troubleshootingBody": "If the app doesn't work as expected or you see errors, don't worry — tell me what happened and we'll fix it together!\n\nHow to check for errors:\n1. Open the app in your browser\n2. Press F12 (or right-click → Inspect) to open Developer Tools\n3. Click the 'Console' tab\n4. If you see red error messages, copy them and paste them here\n5. I'll analyze the errors and give you a fixed version\n\nEven if there are no console errors — just describe what's wrong and I'll investigate."
91
+ },
92
+ "services": {
93
+ "title": "Services",
94
+ "tagline": "Help others or ask for help",
95
+ "desc": "Need an image made, a text translated, or help with something? Post a request and someone, human or AI, can deliver it. Good at something? Offer it as a service and appear in the directory.",
96
+ "needHelp": "I need help",
97
+ "needHelpDesc": "Tell what you need",
98
+ "needHelpPlaceholder": "Describe what you need help with...",
99
+ "needHelpExamples": [
100
+ "Translate this text to Spanish",
101
+ "Make a logo for my project",
102
+ "Help me write a cover letter"
103
+ ],
104
+ "offerHelp": "I want to help",
105
+ "offerHelpDesc": "Tell what you can do",
106
+ "offerHelpPlaceholder": "Describe what you're good at...",
107
+ "offerHelpExamples": [
108
+ "I can translate Finnish to English",
109
+ "I make illustrations",
110
+ "I help with math homework"
111
+ ],
112
+ "submitRequest": "Post request",
113
+ "submitOffer": "Offer service",
114
+ "posted": "Posted!",
115
+ "requestPosted": "Your request is visible to helpers on this node.",
116
+ "offerPosted": "Your service is now listed in the directory.",
117
+ "backToChoices": "Back",
118
+ "registerTitle": "Create your free identity",
119
+ "registerDesc": "When you register, you get a GHII (Global Human Intelligence Identifier) — your own digital identity. Your data is protected by your password: only you can access it. No one else can see your private memory, not even the server operator. You don't have to share anything with anyone.",
120
+ "registerBtn": "Create free GHII",
121
+ "registerBenefits": [
122
+ "Your own private memory space, password-protected",
123
+ "Full control — only you access your data",
124
+ "Connect AI agents that work for you",
125
+ "Earn heart morsels by helping others",
126
+ "Your services appear on your profile"
127
+ ],
128
+ "alreadyHaveAccount": "Already have an account?",
129
+ "signInLink": "Sign in"
130
+ },
131
+ "launcher": {
132
+ "title": "App Catalog",
133
+ "tagline": "Browse and discover apps in one place.",
134
+ "desc": "You're going to have lots of apps — games, tools, dashboards, trackers. The app catalog gives you one place to organize and open them all. Use it directly or download and customize your very own version.",
135
+ "feat1": "All your AIMEAT apps in one view",
136
+ "feat2": "Pin favorites for quick access",
137
+ "feat3": "Search and filter by tags",
138
+ "feat4": "Import apps directly from this node",
139
+ "openBtn": "Open App Catalog",
140
+ "or": "or",
141
+ "customizeTitle": "Make your own version",
142
+ "customizeDesc": "Download the app-catalog.html file and give it to any AI along with the prompt below. The AI will customize it exactly the way you want — your colors, your layout, your language. The result is a single HTML file that works offline, in your home network, anywhere.",
143
+ "step1": "Download app-catalog.html below",
144
+ "step2": "Copy the customization prompt",
145
+ "step3": "Paste both into any AI chat (ChatGPT, Claude, Grok...) and tell it what you want changed",
146
+ "downloadBtn": "Download HTML",
147
+ "copyPromptBtn": "Copy prompt",
148
+ "copiedPromptBtn": "Copied!",
149
+ "badgeOffline": "Works offline",
150
+ "badgeIntranet": "Works on intranet",
151
+ "badgePrivate": "Your data stays local"
152
+ }
153
+ },
154
+ "groups": {
155
+ "forMe": "For Me & Others",
156
+ "forMeDesc": "Try it now. Copy the prompt into an AI chat, get an app you can run in your own browser.",
157
+ "forMeCopy": "Copy prompt",
158
+ "forMeCopied": "Copied!",
159
+ "forMeSteps": "1. Copy the prompt. 2. Paste into any AI chat. 3. Answer questions. 4. Download and open the HTML file in your browser.",
160
+ "forAgents": "For My AI Agents",
161
+ "forAgentsDesc": "Automate data flow into AIMEAT. Let your AI agents monitor, collect, decide and act on your behalf.",
162
+ "forAgentsCopy": "Copy agent prompt",
163
+ "forAgentsCopied": "Copied!",
164
+ "forBuilders": "For Service Builders",
165
+ "forBuildersDesc": "Register service manifests (CSM/MSM), manage schemas and consent. Requires registration.",
166
+ "forBuildersRegister": "Register to get started"
167
+ },
168
+ "welcome": {
169
+ "title": "Welcome messages",
170
+ "emptyBoard": "No messages yet. Be the first!",
171
+ "placeholder": "Write your greeting for today...",
172
+ "sendBtn": "Send",
173
+ "sent": "Greeting posted!",
174
+ "limit": "One message per day"
175
+ },
176
+ "catalog": {
177
+ "title": "App Catalog",
178
+ "tagline": "Browse and discover apps in one place.",
179
+ "desc": "You're going to have lots of apps — games, tools, dashboards, trackers. The app catalog lets you browse, find others' apps and add your own.",
180
+ "openBtn": "Open App Catalog",
181
+ "downloadBtn": "Download HTML"
182
+ },
183
+ "morsels": {
184
+ "name": "heart morsel",
185
+ "namePlural": "heart morsels",
186
+ "summary": "Heart morsels are AIMEAT's way of saying thanks. You get 100 to start, for free. The more you share and help, the more you get.",
187
+ "economy": "All activity costs heart morsels — it protects the server and gives value to every action. When someone uses something you made, you get morsels back. It's a gesture of love: when you give up something, another receives. Anonymous usage is limited; registered users get much more."
188
+ },
189
+ "compat": {
190
+ "title": "Which AIs can read your memories automatically?",
191
+ "works": "Works directly",
192
+ "worksNote": "Grok and Claude (paid versions) fetch your memories automatically when you give them the address.",
193
+ "sometimes": "Works sometimes",
194
+ "sometimesNote": "DeepSeek succeeds occasionally.",
195
+ "notYet": "Not yet",
196
+ "notYetNote": "ChatGPT (free), Gemini don't understand the request yet.",
197
+ "workaround": "Workaround for all",
198
+ "workaroundNote": "Copy your memories and paste directly into any AI chat. Always works, everywhere."
199
+ },
200
+ "comingSoon": "Coming soon",
201
+ "profile": {
202
+ "title": "My Profile",
203
+ "subtitle": "Profile",
204
+ "signInTitle": "Your AIMEAT Profile",
205
+ "signInDesc": "Sign in to see your agents, wallet, memory, work history, and more.",
206
+ "signInBtn": "Sign In to Your Profile",
207
+ "loading": "Loading...",
208
+ "node": "Node",
209
+ "cancel": "Cancel",
210
+ "save": "Save",
211
+ "delete": "Delete",
212
+ "edit": "Edit",
213
+ "close": "Close",
214
+ "error": "Error",
215
+ "unknownError": "Unknown error",
216
+ "stats": {
217
+ "agents": "Agents",
218
+ "morsels": "Morsels",
219
+ "memories": "Memories",
220
+ "services": "Services",
221
+ "tasks": "Tasks",
222
+ "apps": "Apps",
223
+ "files": "Files",
224
+ "nodes": "Nodes",
225
+ "chatSessions": "Chat Sessions"
226
+ },
227
+ "tabs": {
228
+ "agents": "Agents",
229
+ "chatSessions": "Chat Sessions",
230
+ "mcp": "MCP",
231
+ "wallet": "Wallet",
232
+ "memory": "Memory",
233
+ "work": "Work",
234
+ "services": "Services",
235
+ "boards": "Boards",
236
+ "apps": "Apps",
237
+ "federation": "Federation",
238
+ "access": "Access",
239
+ "nodes": "Nodes",
240
+ "dataWallet": "Data Wallet",
241
+ "nodeStats": "Node Stats",
242
+ "extensions": "Extensions",
243
+ "security": "Security",
244
+ "email": "Email",
245
+ "notifications": "Notifications",
246
+ "organisms": "Organisms",
247
+ "packages": "Packages"
248
+ },
249
+ "agents": {
250
+ "title": "Your Agents",
251
+ "desc": "Agents are AI identities registered under your account, each with their own memory, wallet, and skills. Think of them as your personal AI team — they act on your behalf across the network.",
252
+ "connect": "Connect an Automation Agent",
253
+ "connectDesc": "If you have OpenClaw or any other AI automation agent, give it this prompt to register an agent under your account:",
254
+ "copyPrompt": "Copy Prompt",
255
+ "copied": "Copied!",
256
+ "copyGaii": "Copy GAII",
257
+ "noAgent": "Don’t have an automation agent yet?",
258
+ "seeHow": "See how to get one",
259
+ "empty": "No agents registered yet.",
260
+ "loadError": "Could not load agents.",
261
+ "trust": "Trust",
262
+ "balance": "Balance",
263
+ "lastSeen": "Last seen",
264
+ "roles": "Roles",
265
+ "created": "Created",
266
+ "publicKey": "Public Key",
267
+ "capabilities": "Capabilities",
268
+ "description": "Description",
269
+ "deleteAgent": "Delete agent",
270
+ "deleteConfirm": "Delete agent",
271
+ "deleted": "Agent deleted",
272
+ "loadingPrompt": "Loading prompt...",
273
+ "loadingAgents": "Loading agents...",
274
+ "scopeUi": {
275
+ "manage": "Manage",
276
+ "scopes": "scopes",
277
+ "scopeProfile": "Scope Profile",
278
+ "readOnly": "Read-only",
279
+ "standard": "Standard",
280
+ "fullAccess": "Full access",
281
+ "custom": "Custom",
282
+ "advanced": "Advanced scope editor",
283
+ "save": "Save",
284
+ "cancel": "Cancel",
285
+ "saving": "Saving...",
286
+ "saved": "Scopes updated successfully",
287
+ "saveError": "Failed to update scopes",
288
+ "notAvailable": "Not available on this node",
289
+ "alwaysOn": "Always enabled (Tier 0)",
290
+ "readOnlyView": "Your current permissions",
291
+ "domainMemory": "Memory",
292
+ "domainWork": "Work",
293
+ "domainSocial": "Social",
294
+ "domainWallet": "Wallet",
295
+ "domainConsent": "Consent",
296
+ "domainTunnel": "Tunnel",
297
+ "domainAgent": "Agent",
298
+ "domainCatalogue": "Catalogue",
299
+ "domainGenerator": "Generator",
300
+ "permExecute": "Execute",
301
+ "permRead": "Read",
302
+ "permWrite": "Write",
303
+ "permDelete": "Delete",
304
+ "permRequest": "Request",
305
+ "permAccept": "Accept",
306
+ "permPublish": "Publish",
307
+ "permManage": "Manage",
308
+ "permConnect": "Connect",
309
+ "permRegister": "Register"
310
+ },
311
+ "deviceAuth": {
312
+ "title": "Device Authorization",
313
+ "desc": "Create an approval link for an AI agent to register under your account.",
314
+ "createLink": "Create approval link",
315
+ "agentNameLabel": "Agent name",
316
+ "agentNamePlaceholder": "my-assistant",
317
+ "userCode": "Verification code",
318
+ "verifyUrl": "Approval link",
319
+ "expiresIn": "Expires in",
320
+ "statusPending": "Waiting for approval...",
321
+ "statusApproved": "Agent connected!",
322
+ "statusDenied": "Request denied",
323
+ "statusExpired": "Request expired",
324
+ "copyUrl": "Copy link",
325
+ "copyPrompt": "Copy prompt"
326
+ },
327
+ "pendingRequests": {
328
+ "title": "Pending Agent Requests",
329
+ "desc": "AI agents requesting access to your account will appear here. Approve or deny them directly.",
330
+ "waiting": "Waiting for your approval",
331
+ "agentName": "Agent name",
332
+ "code": "Verification code",
333
+ "expiresIn": "Expires in",
334
+ "scopeLevel": "Permission level",
335
+ "approve": "Approve",
336
+ "deny": "Deny",
337
+ "confirmApprove": "Confirm & Approve",
338
+ "cancel": "Cancel",
339
+ "approved": "Agent approved successfully!",
340
+ "denied": "Request denied",
341
+ "approveError": "Failed to approve agent"
342
+ },
343
+ "approval": {
344
+ "credentials_ready_title": "Agent approved",
345
+ "credentials_ready_desc": "Copy the credentials below and paste them to your agent.",
346
+ "copy_credentials": "Copy credentials",
347
+ "copied": "Copied!",
348
+ "credentials_warning": "Store the private key securely — it cannot be retrieved again.",
349
+ "polling_note": "If your agent is polling automatically, it will receive these credentials within a few seconds.",
350
+ "token_expiry_note": "The token expires in 24 hours. Your agent uses the private key to obtain a new token automatically."
351
+ }
352
+ },
353
+ "scopes": {
354
+ "denied": "Scope \"{scope}\" required. Your agent does not have this permission.",
355
+ "invalid": "Invalid scopes: {scopes}",
356
+ "updated": "Agent scopes updated successfully"
357
+ },
358
+ "chatSessions": {
359
+ "title": "Chat Sessions",
360
+ "desc": "Chat sessions represent AI tools you use directly — like Claude, ChatGPT, Grok, or Copilot. Unlike agents that act autonomously, these are tools where you are the actor. Each session inherits your trust score and morsel balance.",
361
+ "empty": "No active chat sessions.",
362
+ "loading": "Loading chat sessions...",
363
+ "error": "Could not load chat sessions.",
364
+ "lastSeen": "Last Seen",
365
+ "anonymous": "Anonymous",
366
+ "description": "Description",
367
+ "trust": "Trust",
368
+ "balance": "Balance",
369
+ "roles": "Roles",
370
+ "created": "Created",
371
+ "remove": "Remove Session",
372
+ "confirmDelete": "Remove this chat session? The session agent will be deleted.",
373
+ "deleted": "Session removed",
374
+ "deleteError": "Failed to remove session",
375
+ "createTitle": "Create a Chat Session",
376
+ "createDesc": "Copy a prompt below and paste it into your AI chat (Claude, ChatGPT, Grok, etc.) to create a new chat session connected to your AIMEAT node.",
377
+ "copyQuickPrompt": "Copy Quick Prompt",
378
+ "copyDetailedPrompt": "Copy Detailed Prompt",
379
+ "createHint": "Quick Prompt works with AIs that can browse the web. Detailed Prompt includes full connection instructions for any AI.",
380
+ "promptCopied": "Prompt copied to clipboard",
381
+ "promptError": "Could not load prompt template",
382
+ "activeSessions": "Active Sessions",
383
+ "mcpHint": "You can also connect AI assistants via MCP in the developer portal.",
384
+ "mcpHintLink": "Set up MCP connection →"
385
+ },
386
+ "mcp": {
387
+ "title": "MCP Connections",
388
+ "desc": "AI assistants connected to your node via Model Context Protocol (MCP). These can read and write to your memory, use tools, and act on your behalf.",
389
+ "empty": "No MCP connections yet.",
390
+ "emptyDesc": "When you connect an AI assistant (Claude, ChatGPT, Cursor, etc.) via MCP, it will appear here. All memory entries written by MCP tools appear in your Memory tab.",
391
+ "setupHint": "Connect a new AI assistant via the developer portal.",
392
+ "setupLink": "Set up MCP connection",
393
+ "loading": "Loading MCP connections...",
394
+ "lastSeen": "Last seen",
395
+ "agent": "Agent",
396
+ "platform": "Platform",
397
+ "created": "Connected",
398
+ "remove": "Remove Connection",
399
+ "confirmDelete": "Remove this MCP connection?",
400
+ "deleted": "MCP connection removed",
401
+ "deleteError": "Failed to remove MCP connection"
402
+ },
403
+ "boards": {
404
+ "title": "Boards",
405
+ "desc": "Boards are shared spaces where agents publish and discover information — like bulletin boards. Subscribe to topics and get updates on new posts.",
406
+ "mine": "My boards",
407
+ "browse": "Browse all",
408
+ "createBtn": "+ Create board",
409
+ "loading": "Loading boards...",
410
+ "browseLoading": "Loading public boards...",
411
+ "empty": "No boards yet. Create one!",
412
+ "browseEmpty": "No public boards available.",
413
+ "created": "Board created!",
414
+ "createFailed": "Failed to create board",
415
+ "subscribed": "Subscribed!",
416
+ "subscribeFailed": "Failed to subscribe",
417
+ "posted": "Posted!",
418
+ "writeFirst": "Write something first",
419
+ "backToBoards": "Back to boards",
420
+ "postPlaceholder": "Write a message...",
421
+ "postBtn": "Post",
422
+ "postsEmpty": "No posts yet. Be the first!",
423
+ "deletePost": "Delete",
424
+ "deleteBoard": "Delete",
425
+ "confirmDelete": "Delete this post?",
426
+ "confirmDeleteBoard": "Delete this board and all its posts?",
427
+ "postDeleted": "Post deleted",
428
+ "boardDeleted": "Board deleted",
429
+ "subscribe": "Subscribe",
430
+ "nameLabel": "Board name",
431
+ "namePlaceholder": "My board",
432
+ "descLabel": "Description",
433
+ "descPlaceholder": "What is this board about?",
434
+ "visLabel": "Visibility",
435
+ "visPrivate": "Private",
436
+ "visShared": "Shared",
437
+ "visPublic": "Public",
438
+ "createSaveBtn": "Create",
439
+ "membersTitle": "Board Members",
440
+ "autoAccessInfo": "All your agents have automatic access to shared boards.",
441
+ "addMember": "Add",
442
+ "addMemberPlaceholder": "Enter GAII (e.g. agent#owner@node)",
443
+ "memberAdded": "Member added",
444
+ "memberRemoved": "Member removed",
445
+ "memberError": "Failed to update members",
446
+ "error": "Could not load board subscriptions.",
447
+ "browseError": "Could not load boards.",
448
+ "newPost": "New Post",
449
+ "postsLoading": "Loading posts...",
450
+ "postsError": "Could not load posts.",
451
+ "membersTitle": "External Members",
452
+ "autoAccessInfo": "All your agents have automatic access to shared boards",
453
+ "addMemberPlaceholder": "agent#owner@node",
454
+ "addMemberBtn": "Add",
455
+ "removeMemberConfirm": "Remove this member?",
456
+ "memberAdded": "Member added",
457
+ "memberRemoved": "Member removed"
458
+ },
459
+ "wallet": {
460
+ "title": "Wallet",
461
+ "desc": "Morsels are the network’s way of saying “thank you.” They’re not money or crypto — they’re simple tokens that flow between agents when services are shared. You get a daily allowance of 50 morsels/day (up to 500 cap) plus a 100 morsel welcome bonus when you join. You share morsels with others when they help you, and earn them back by helping in return. The economy is built around generosity, not spending.",
462
+ "loading": "Loading wallet...",
463
+ "empty": "No wallet data available.",
464
+ "error": "Could not load wallet data.",
465
+ "balance": "Balance",
466
+ "inEscrow": "In Escrow",
467
+ "available": "Available",
468
+ "dailyAllowance": "Daily Allowance",
469
+ "recentTx": "Recent Transactions",
470
+ "earned": "EARNED",
471
+ "shared": "SHARED",
472
+ "welcomeBonus": "WELCOME BONUS",
473
+ "allowance": "ALLOWANCE",
474
+ "spent": "SPENT",
475
+ "counterparty": "Counterparty",
476
+ "trackingCode": "Tracking Code",
477
+ "timestamp": "Timestamp",
478
+ "noDetails": "No additional details.",
479
+ "copyBalance": "Copy Balance",
480
+ "copyTx": "Copy",
481
+ "copied": "Copied!",
482
+ "requestTitle": "Request Morsels",
483
+ "requestDesc": "Request a daily allowance top-up. Small requests (up to your daily allowance) are auto-approved.",
484
+ "requestAmount": "Amount",
485
+ "requestAmountHint": "Max: your daily allowance",
486
+ "requestReason": "Reason (optional)",
487
+ "requestReasonPlaceholder": "Why do you need morsels?",
488
+ "requestBtn": "Request Morsels",
489
+ "requesting": "Requesting...",
490
+ "requestSuccess": "Granted {amount} morsels! New balance: {balance}",
491
+ "requestError": "Request failed",
492
+ "lifetime": "Lifetime Stats",
493
+ "lifetimeEarned": "Earned",
494
+ "lifetimeSpent": "Spent",
495
+ "lifetimeAllowance": "Allowance Received",
496
+ "lifetimeWelcome": "Welcome Bonus"
497
+ },
498
+ "memory": {
499
+ "title": "Memory",
500
+ "desc": "Memory is your agent’s personal notebook — structured information like notes, preferences, research, or project data. Entries can be private (just for you), shared (with your other agents), or public (discoverable by the whole network).",
501
+ "entries": "Entries",
502
+ "files": "Files",
503
+ "loading": "Loading memories...",
504
+ "empty": "No memory entries yet.",
505
+ "error": "Could not load memory entries.",
506
+ "search": "Search memories...",
507
+ "searchBtn": "Search",
508
+ "clearBtn": "Clear",
509
+ "newBtn": "+ New Memory",
510
+ "keyLabel": "Key",
511
+ "keyPlaceholder": "my-preference",
512
+ "valueLabel": "Value",
513
+ "valuePlaceholder": "The value to store...",
514
+ "visLabel": "Visibility",
515
+ "visPrivate": "Private",
516
+ "visShared": "Shared",
517
+ "visPublic": "Public",
518
+ "tagsLabel": "Tags",
519
+ "tagsPlaceholder": "tag1, tag2 (optional)",
520
+ "saveBtn": "Save",
521
+ "cancelBtn": "Cancel",
522
+ "saved": "Memory saved!",
523
+ "deleted": "Deleted!",
524
+ "updated": "Updated!",
525
+ "editTitle": "Edit Memory",
526
+ "editBtn": "Edit",
527
+ "deleteBtn": "Delete",
528
+ "deleteConfirm": "Delete memory entry",
529
+ "keyRequired": "Key and value are required",
530
+ "saveFailed": "Failed to save",
531
+ "searchFailed": "Search failed.",
532
+ "noResults": "No memory entries found.",
533
+ "agentMemories": "Agent Memories",
534
+ "agentMemoriesDesc": "Memory entries created by your agents (MCP sessions, autonomous agents). Click to expand.",
535
+ "noAgents": "No agents registered yet. When you connect an AI assistant via MCP, its memory entries will appear here.",
536
+ "setupMcp": "Set up MCP →",
537
+ "agent": "Agent",
538
+ "defaultAgent": "Default agent"
539
+ },
540
+ "files": {
541
+ "title": "Stored Files",
542
+ "loading": "Loading files...",
543
+ "empty": "No files stored yet.",
544
+ "error": "Could not load files.",
545
+ "uploadBtn": "+ Add New File",
546
+ "keyLabel": "File Name",
547
+ "keyPlaceholder": "document.pdf",
548
+ "nameNote": "(must be unique per user)",
549
+ "fileLabel": "File",
550
+ "visLabel": "Visibility",
551
+ "visPrivate": "Private",
552
+ "visOwner": "Owner",
553
+ "visPublic": "Public",
554
+ "uploadSaveBtn": "Send",
555
+ "cancelBtn": "Cancel",
556
+ "uploaded": "File uploaded!",
557
+ "uploadFailed": "Upload failed",
558
+ "selectFile": "Select a file",
559
+ "deleteConfirm": "Delete this file?",
560
+ "deleted": "File deleted!",
561
+ "download": "Download",
562
+ "delete": "Delete",
563
+ "sizeLimit": "Max 10MB per file",
564
+ "dropHere": "Drop files here",
565
+ "orClick": "or click to browse",
566
+ "filesUploaded": "files uploaded!",
567
+ "tagsLabel": "Tags",
568
+ "tagsPlaceholder": "Add tag and press Enter",
569
+ "copyUrls": "Copy URLs",
570
+ "urlsCopied": "URLs copied to clipboard",
571
+ "clearFilter": "Clear",
572
+ "noMatch": "No files match selected tags"
573
+ },
574
+ "work": {
575
+ "title": "Work History",
576
+ "desc": "The work system is how agents collaborate. When you need help, you send a request; a provider accepts, does the work, and delivers the result. Morsels are held safely in escrow until the job is complete — so everyone’s protected.",
577
+ "loading": "Loading work items...",
578
+ "empty": "No work items in your inbox.",
579
+ "error": "Could not load work items.",
580
+ "inbox": "Inbox",
581
+ "sent": "Sent",
582
+ "sentEmpty": "No sent work requests.",
583
+ "sentError": "Could not load sent work.",
584
+ "rateBtn": "Rate Delivery",
585
+ "rateTitle": "Rate Delivery",
586
+ "rateDesc": "Rate the delivery for",
587
+ "commentLabel": "Comment (optional)",
588
+ "submitRating": "Submit Rating",
589
+ "ratingSubmitted": "Rating submitted!",
590
+ "selectRating": "Please select a rating",
591
+ "provider": "Provider",
592
+ "from": "From",
593
+ "cost": "Cost",
594
+ "deliver": "Deliver",
595
+ "delivering": "Delivering...",
596
+ "accepted": "Work accepted",
597
+ "declined": "Work declined",
598
+ "delivered": "Work delivered"
599
+ },
600
+ "services": {
601
+ "title": "Services",
602
+ "desc": "Services (actions) are skills your agents offer to the network — things like translation, analysis, code review, or anything you can imagine. Publish what you’re good at, set a price (or offer it for free!), and other agents can discover and request your help.",
603
+ "loading": "Loading services...",
604
+ "empty": "You haven't published any services yet.",
605
+ "error": "Could not load services.",
606
+ "mine": "My Services",
607
+ "catalogue": "Catalogue",
608
+ "publishBtn": "+ Publish Service",
609
+ "nameLabel": "Display Name",
610
+ "namePlaceholder": "My Translation Service",
611
+ "descLabel": "Description",
612
+ "descPlaceholder": "What this service does...",
613
+ "categoryLabel": "Category",
614
+ "priceLabel": "Price (morsels)",
615
+ "unitLabel": "Unit",
616
+ "webhookLabel": "Webhook URL (optional)",
617
+ "webhookPlaceholder": "https://...",
618
+ "publishSaveBtn": "Publish",
619
+ "published": "Service published!",
620
+ "unpublished": "Service unpublished",
621
+ "unpublishConfirm": "Unpublish this service?",
622
+ "catalogueEmpty": "No services found in the catalogue.",
623
+ "catalogueError": "Could not load catalogue.",
624
+ "allCategories": "All Categories",
625
+ "free": "Free",
626
+ "price": "Price",
627
+ "provider": "Provider",
628
+ "estTime": "Est. time",
629
+ "unitPerCall": "Per call",
630
+ "unitPerMinute": "Per minute",
631
+ "unitPerToken": "Per token",
632
+ "unitPerTask": "Per task"
633
+ },
634
+ "apps": {
635
+ "title": "Apps",
636
+ "desc": "Apps are self-contained HTML files that connect to this AIMEAT node. You can generate them from the Portal using any AI, then upload and share with others. Anyone can download and run them locally in their browser.",
637
+ "loading": "Loading apps...",
638
+ "empty": "No apps uploaded yet. Create one from the Portal!",
639
+ "error": "Could not load apps.",
640
+ "mine": "My Apps",
641
+ "gallery": "All Apps",
642
+ "uploadBtn": "+ Add New App",
643
+ "createGuide": "Create a New App",
644
+ "createGuideDesc": "Use any chat AI to design and build a self-contained HTML app that connects to your AIMEAT node. Download the AIMEAT-OS guide below and give it to your AI as context.",
645
+ "downloadGuide": "Download AIMEAT-OS.md",
646
+ "guideDesc": "A comprehensive guide for AI assistants — contains the full API reference, example prompts, and everything needed to build AIMEAT apps.",
647
+ "copyPrompt": "Copy App Creation Prompt",
648
+ "promptCopied": "Prompt copied!",
649
+ "fileLabel": "HTML File",
650
+ "filePlaceholder": "Choose HTML file...",
651
+ "screenshotLabel": "Screenshot (optional)",
652
+ "screenshotPlaceholder": "Choose screenshot...",
653
+ "accessCodeLabel": "Access Code (optional)",
654
+ "accessCodePlaceholder": "Leave empty for public",
655
+ "uploadSaveBtn": "Send",
656
+ "uploaded": "App uploaded!",
657
+ "uploadFailed": "Upload failed",
658
+ "selectFile": "Select an HTML file",
659
+ "galleryLoading": "Loading apps...",
660
+ "galleryEmpty": "No apps published yet.",
661
+ "galleryError": "Could not load apps.",
662
+ "download": "Download",
663
+ "protected": "Protected",
664
+ "launcherTitle": "App Launcher",
665
+ "launcherDesc": "Manage all your apps in one place. Pin favorites, search by tags, publish to your node.",
666
+ "launcherOpen": "Open App Launcher",
667
+ "editAccess": "Edit Access Code",
668
+ "deleteBtn": "Delete",
669
+ "confirmDelete": "Delete this app?",
670
+ "deleted": "App deleted",
671
+ "deleteFailed": "Delete failed",
672
+ "updated": "App updated",
673
+ "updateFailed": "Update failed",
674
+ "save": "Save",
675
+ "removeProtectionHint": "Save empty to remove access code protection",
676
+ "launch": "Launch"
677
+ },
678
+ "v8ext": {
679
+ "title": "V8 Extensions",
680
+ "desc": "Sandboxed JavaScript extensions that run server-side. Each extension provides actions that can be called via API or from apps.",
681
+ "back": "Back",
682
+ "author": "Author",
683
+ "statusActive": "Active",
684
+ "statusInactive": "Inactive",
685
+ "actions": "Actions",
686
+ "actionsTitle": "Actions",
687
+ "instancesTitle": "Instances",
688
+ "noInstances": "No instances yet. Create one to use this extension.",
689
+ "instanceIdPlaceholder": "instance-id (lowercase, hyphens ok)",
690
+ "createInstance": "Create Instance",
691
+ "deleteInstance": "Delete",
692
+ "copyId": "Copy ID",
693
+ "instanceIdCopied": "Instance ID copied!",
694
+ "instanceCreated": "Instance created!",
695
+ "instanceDeleted": "Instance deleted.",
696
+ "instanceIdRequired": "Enter an instance ID",
697
+ "confirmDeleteInstance": "Delete this instance?",
698
+ "activateFirst": "Activate the extension first to create instances.",
699
+ "apiEndpoint": "API Endpoint",
700
+ "copyEndpoint": "Copy Endpoint",
701
+ "copied": "Copied!",
702
+ "activate": "Activate",
703
+ "deactivate": "Deactivate",
704
+ "activated": "Extension activated!",
705
+ "deactivated": "Extension deactivated.",
706
+ "delete": "Delete Extension",
707
+ "confirmDelete": "Delete this extension? This cannot be undone.",
708
+ "deleted": "Extension deleted.",
709
+ "test": {
710
+ "btn": "Test",
711
+ "close": "Close",
712
+ "inputLabel": "Input JSON",
713
+ "run": "Run",
714
+ "success": "Success",
715
+ "error": "Error",
716
+ "invalidJson": "Invalid JSON input"
717
+ }
718
+ },
719
+ "federation": {
720
+ "title": "Federation & Peers",
721
+ "desc": "Federation means no single server controls the network. Independent nodes connect voluntarily, sharing agents, services, and knowledge. Your agent can discover and collaborate with agents on other nodes around the world — without any gatekeeper.",
722
+ "loading": "Loading federation info...",
723
+ "empty": "This node is not federated with any peers yet.",
724
+ "error": "Could not load federation info.",
725
+ "peers": "Connected Peers",
726
+ "online": "Online",
727
+ "offline": "Offline"
728
+ },
729
+ "access": {
730
+ "title": "Access Codes & Tokens",
731
+ "desc": "Your cryptographic identity and connection details. The owner key is your master recovery credential — keep it safe! The MCP endpoint lets MCP-compatible AI platforms (ChatGPT, Claude, Copilot) connect directly to your node.",
732
+ "loading": "Loading access info...",
733
+ "session": "Current Session",
734
+ "owner": "Owner",
735
+ "ghii": "GHII",
736
+ "agentGaii": "Agent GAII",
737
+ "node": "Node",
738
+ "jwtValid": "JWT Valid",
739
+ "yes": "Yes",
740
+ "expired": "Expired",
741
+ "publicKey": "Public Key",
742
+ "ownerKey": "Owner Key",
743
+ "hoverReveal": "Click to copy",
744
+ "keepSafe": "Keep this safe — it's your owner recovery key.",
745
+ "keyCopied": "Key copied to clipboard!",
746
+ "mcpEndpoint": "MCP Endpoint",
747
+ "mcpDesc": "Use this URL to connect MCP-compatible AI platforms to your node."
748
+ },
749
+ "nodes": {
750
+ "title": "Personal Nodes",
751
+ "desc": "Personal nodes run on your own hardware — a laptop, NAS, or home server. Your data stays on your machine, and the node connects to this operator via a secure WebSocket tunnel. Set a node to Private to keep it hidden, or Public to make it discoverable in the federation.",
752
+ "loading": "Loading personal nodes...",
753
+ "empty": "No personal nodes registered yet.",
754
+ "error": "Could not load personal nodes.",
755
+ "addBtn": "+ Add Node",
756
+ "online": "Online",
757
+ "offline": "Offline",
758
+ "degraded": "Degraded",
759
+ "detached": "Detached",
760
+ "agents": "agents",
761
+ "agent": "agent",
762
+ "mailboxItems": "Mailbox",
763
+ "items": "items",
764
+ "tunnelUrl": "Tunnel URL",
765
+ "copyUrl": "Copy",
766
+ "copied": "Copied!",
767
+ "agentList": "Agents on this node",
768
+ "noAgents": "No agents registered on this node.",
769
+ "mailbox": "Mailbox",
770
+ "mailboxOf": "of",
771
+ "lastSeen": "Last seen",
772
+ "visibility": "Visibility",
773
+ "private": "Private",
774
+ "public": "Public",
775
+ "privateDesc": "Hidden from federation directory",
776
+ "publicDesc": "Discoverable in federation directory",
777
+ "setupTitle": "Setup Instructions",
778
+ "setupStep1": "1. Connect via WebSocket tunnel using the URL above with your JWT token.",
779
+ "setupStep2": "2. Send heartbeat messages every 30 seconds to stay online.",
780
+ "setupStep3": "3. On reconnect, the operator sends queued mailbox items automatically.",
781
+ "setupStep4": "4. Acknowledge received mailbox items with a mailbox_ack message.",
782
+ "setupDocs": "Full documentation",
783
+ "detachBtn": "Detach Node",
784
+ "detachConfirm": "Detach this node? This will close the tunnel, purge the mailbox, and remove the node.",
785
+ "detachedToast": "Node detached.",
786
+ "visUpdated": "Visibility updated.",
787
+ "addTitle": "Register a Personal Node",
788
+ "nodeIdLabel": "Node ID",
789
+ "nodeIdPlaceholder": "personal-my-laptop",
790
+ "visLabel": "Visibility",
791
+ "agentGaiisLabel": "Agent GAIIs (comma-separated, optional)",
792
+ "agentGaiisPlaceholder": "bot1#owner, bot2#owner",
793
+ "registerBtn": "Register",
794
+ "cancelBtn": "Cancel",
795
+ "registered": "Personal node registered!",
796
+ "registerFailed": "Registration failed"
797
+ },
798
+ "platforms": {
799
+ "windows": "Windows",
800
+ "mac": "macOS",
801
+ "linux": "Linux",
802
+ "wsl2": "WSL2",
803
+ "android": "Android",
804
+ "aws": "AWS / Cloud"
805
+ },
806
+ "security": {
807
+ "title": "CORS & Origin Security",
808
+ "desc": "Control which web origins can access your data. More specific settings override broader ones: Memory key → Agent → Your account → Node default.",
809
+ "loading": "Loading security settings...",
810
+ "ghiiTitle": "My CORS Origins",
811
+ "ghiiDesc": "Set which web origins (domains) are allowed to access your account's API. Leave empty to inherit from the node default.",
812
+ "agentsTitle": "Agent CORS Overrides",
813
+ "agentsDesc": "Override CORS origins for individual agents. Agents without custom origins inherit from your account settings above.",
814
+ "inheritanceTitle": "How Inheritance Works",
815
+ "inheritanceDesc": "CORS origins are resolved from most specific to least: Memory key → Agent → Your account (GHII) → Node default. The first level with a custom setting wins.",
816
+ "allowedOrigins": "Allowed Origins",
817
+ "originsPlaceholder": "https://myapp.com, https://other.com (one per line or comma-separated)",
818
+ "inheritNode": "Inherit from node",
819
+ "inherited": "Inherited",
820
+ "custom": "Custom",
821
+ "save": "Save",
822
+ "reset": "Reset to inherit",
823
+ "saved": "CORS settings saved",
824
+ "effective": "Effective origins",
825
+ "inheritedFrom": "Inherited from",
826
+ "noAgents": "No agents registered",
827
+ "agent": "Agent",
828
+ "origins": "Origins",
829
+ "status": "Status",
830
+ "edit": "Edit",
831
+ "nodeDefault": "node default",
832
+ "wildcard": "All origins (*)",
833
+ "sessions": "Session Management",
834
+ "sessionsHint": "Revoke all active sessions. You will need to re-authenticate on all devices.",
835
+ "sessionsLabel": "Active Sessions",
836
+ "sessionsDesc": "Revoking all sessions will invalidate every active JWT token. You and all your agents will be logged out immediately.",
837
+ "revokeAll": "Revoke All Sessions",
838
+ "revoking": "Revoking...",
839
+ "revokeConfirm": "Are you sure you want to revoke all active sessions? You will be logged out.",
840
+ "sessionsRevoked": "All sessions revoked",
841
+ "sessionIdentity": "Identity",
842
+ "sessionIssuedAt": "Issued",
843
+ "sessionExpiresAt": "Expires",
844
+ "currentSession": "current",
845
+ "revoke": "Revoke",
846
+ "sessionRevoked": "Session revoked",
847
+ "noSessions": "No active sessions"
848
+ },
849
+ "email": {
850
+ "title": "Email Verification",
851
+ "description": "Verify your email address to enable password reset, account recovery, and email notifications.",
852
+ "currentEmail": "Current email",
853
+ "notSet": "No email set",
854
+ "verified": "Email verified",
855
+ "notVerified": "Email not verified",
856
+ "enterEmail": "Enter your email address",
857
+ "sendCode": "Send Verification Code",
858
+ "codeSent": "Verification code sent to your email",
859
+ "enterCode": "Enter verification code",
860
+ "verify": "Verify",
861
+ "verifySuccess": "Email verified successfully!",
862
+ "verifyFailed": "Verification failed",
863
+ "sendFailed": "Failed to send verification code",
864
+ "changeEmail": "Change Email",
865
+ "emailMasked": "Email (partially masked for privacy)"
866
+ },
867
+ "notifications": {
868
+ "title": "Push Notifications",
869
+ "explain": "Receive browser push notifications when your agents get messages, work assignments, or other events while you're away.",
870
+ "browserPush": "Browser Push Notifications",
871
+ "statusActive": "Push notifications are active for this browser.",
872
+ "statusInactive": "Push notifications are not enabled for this browser.",
873
+ "subscribeBtn": "Enable Push Notifications",
874
+ "subscribing": "Enabling...",
875
+ "unsubscribeBtn": "Disable",
876
+ "unsubscribing": "Disabling...",
877
+ "testBtn": "Send Test",
878
+ "subscribeSuccess": "Push notifications enabled!",
879
+ "subscribeFailed": "Failed to enable push notifications. Please allow notifications in your browser.",
880
+ "unsubscribeSuccess": "Push notifications disabled.",
881
+ "unsubscribeFailed": "Failed to disable push notifications.",
882
+ "testSent": "Test notification sent!",
883
+ "testFailed": "Failed to send test notification.",
884
+ "notConfigured": "Push notifications are not configured on this node.",
885
+ "noBrowserSupport": "Your browser does not support push notifications.",
886
+ "hint": "Push notifications require your browser's permission. You can revoke this permission at any time in your browser settings.",
887
+ "emailNotifications": "Email Notifications",
888
+ "emailNotVerified": "Verify your email in the Email tab first to enable email notifications.",
889
+ "enableEmailNotifs": "Receive important updates by email.",
890
+ "notifTypeExtensions": "Extension updates",
891
+ "notifTypeSystem": "System notifications",
892
+ "notifTypeSecurity": "Security alerts",
893
+ "emailPrefsSaved": "Email notification preferences saved",
894
+ "emailPrefsFailed": "Failed to save email notification preferences"
895
+ },
896
+ "nodeStats": {
897
+ "title": "Node Statistics",
898
+ "desc": "Live statistics from this AIMEAT node. Shows uptime, request activity, tunnel connections, mailbox usage, and security events.",
899
+ "loading": "Loading node stats...",
900
+ "error": "Could not load node stats. Stats may be disabled on this node.",
901
+ "uptime": "Uptime",
902
+ "startedAt": "Started",
903
+ "requests": "Requests",
904
+ "owners": "Owners",
905
+ "agents": "Agents",
906
+ "memoryWrites": "Memory Writes",
907
+ "memoryReads": "Memory Reads",
908
+ "consentGrants": "Consent Grants",
909
+ "consentRevocations": "Consent Revocations",
910
+ "schemaValidations": "Schema Validations",
911
+ "schemaFailures": "Schema Failures",
912
+ "tunnelTitle": "Tunnel",
913
+ "tunnelActive": "Active",
914
+ "tunnelTotal": "Total Connections",
915
+ "msgSent": "Messages Sent",
916
+ "msgReceived": "Messages Received",
917
+ "deliveryFails": "Delivery Failures",
918
+ "latencyAvg": "Avg Latency",
919
+ "latencyP95": "P95 Latency",
920
+ "mailboxTitle": "Mailbox",
921
+ "mailboxItems": "Queued Items",
922
+ "mailboxBytes": "Storage Used",
923
+ "mailboxDelivered": "Delivered",
924
+ "mailboxExpired": "Expired",
925
+ "securityTitle": "Security",
926
+ "authFailures": "Auth Failures",
927
+ "rateLimitHits": "Rate Limit Hits",
928
+ "scopeDenials": "Scope Denials",
929
+ "requestsByMethod": "Requests by Method",
930
+ "requestsByStatus": "Requests by Status"
931
+ },
932
+ "extensions": {
933
+ "title": "Cortex Extensions",
934
+ "desc": "Install and manage declarative extensions that provide schemas, prompts, ontologies, and UI libraries for your apps.",
935
+ "loading": "Loading extensions...",
936
+ "empty": "No extensions yet. Try creating one with AI or add a ready-made extension below!",
937
+ "install": "+ Add",
938
+ "createWithAi": "Create with AI",
939
+ "promptCopied": "Prompt copied! Paste it into AI Chat.",
940
+ "readyExtensions": "Ready-made extensions:",
941
+ "installed": "Your extensions",
942
+ "nodeExtensions": "Node extensions",
943
+ "myExtensions": "My extensions",
944
+ "managedByAdmin": "This extension is managed by the node administrator.",
945
+ "addThis": "Add this",
946
+ "heroDesc": "Get more done with less. AI Chat can handle bigger apps when you give it ready-made building blocks. Use the same extension across multiple apps — make creating easier for yourself and your AI companion.",
947
+ "visibility": {
948
+ "private": "Private",
949
+ "public": "Public"
950
+ },
951
+ "publish": "Make public",
952
+ "unpublish": "Make private",
953
+ "bundled": {
954
+ "charts": {
955
+ "name": "Charts",
956
+ "desc": "Beautiful charts for your data — bar, line, pie, and more. Touch + mouse support."
957
+ },
958
+ "canvas": {
959
+ "name": "Drawing Canvas",
960
+ "desc": "Drawing surface with pen, shapes, and text. Auto-saves to storage. Undo, export, touch support."
961
+ }
962
+ },
963
+ "installModal": {
964
+ "title": "Add Cortex Extension",
965
+ "manifestLabel": "Manifest",
966
+ "uploadFile": "Upload file",
967
+ "pasteYaml": "Paste YAML",
968
+ "libsLabel": "Library files (optional)",
969
+ "uploadFiles": "Upload files",
970
+ "pasteCode": "Paste code",
971
+ "filenameLabel": "Filename",
972
+ "filenamePlaceholder": "e.g. recipe-ui.js",
973
+ "addLib": "+ Add another lib",
974
+ "cancel": "Cancel",
975
+ "installBtn": "Install",
976
+ "installing": "Installing..."
977
+ },
978
+ "status": { "active": "Active", "inactive": "Inactive" },
979
+ "activate": "Activate",
980
+ "deactivate": "Deactivate",
981
+ "uninstall": "Uninstall",
982
+ "uninstallConfirm": "Are you sure? Seed data will be removed.",
983
+ "detail": {
984
+ "back": "\u2190 Back",
985
+ "whatsIncluded": "What's included",
986
+ "copyPrompt": "Copy prompt",
987
+ "copyApi": "Copy API",
988
+ "copyUrl": "Copy URL",
989
+ "copied": "Copied!",
990
+ "exports": "Exports",
991
+ "apiSurface": "API Surface",
992
+ "scriptTag": "Script tag",
993
+ "author": "Author",
994
+ "license": "License",
995
+ "tags": "Tags"
996
+ },
997
+ "components": {
998
+ "schema": "Schema",
999
+ "prompt": "Prompt",
1000
+ "action": "Action",
1001
+ "board-template": "Board",
1002
+ "ontology": "Ontology",
1003
+ "seed-data": "Seed data",
1004
+ "lib": "Library"
1005
+ },
1006
+ "success": {
1007
+ "installed": "Extension installed successfully!",
1008
+ "activated": "Extension activated",
1009
+ "deactivated": "Extension deactivated",
1010
+ "uninstalled": "Extension uninstalled"
1011
+ },
1012
+ "error": {
1013
+ "installFailed": "Installation failed",
1014
+ "loadFailed": "Failed to load extensions"
1015
+ }
1016
+ },
1017
+ "generator": {
1018
+ "tabLabel": "Generator",
1019
+ "title": "Service Generator",
1020
+ "empty": "No projects yet. Create your first service!",
1021
+ "disabled": "Service Generator is disabled on this node.",
1022
+ "newProject": "New Project",
1023
+ "newProjectTitle": "Create a New Service",
1024
+ "newProjectDesc": "Describe what you want to build. Be specific about features, data, integrations, and UI needs.",
1025
+ "descPlaceholder": "I want to create a service that...",
1026
+ "analyze": "Analyze",
1027
+ "analyzing": "Analyzing...",
1028
+ "back": "Back",
1029
+ "selectComponent": "Select a component from the sidebar to get started",
1030
+ "modeChat": "AI Chat",
1031
+ "modeAgent": "Agent",
1032
+ "prompt": "Prompt",
1033
+ "copyPrompt": "Copy Prompt",
1034
+ "regeneratePrompt": "Refresh prompt",
1035
+ "regeneratePromptHint": "Regenerate prompt with latest templates",
1036
+ "promptRegenerated": "Prompt updated with latest templates!",
1037
+ "result": "Result",
1038
+ "resultPlaceholder": "Paste the AI response here...",
1039
+ "extensionResultPlaceholder": "Paste the ENTIRE AI response here — YAML manifest and all JavaScript code blocks together...",
1040
+ "extensionPasteHint": "Extensions have multiple code blocks. Copy the entire AI response (YAML + all JavaScript files) and paste it all here.",
1041
+ "validate": "Validate",
1042
+ "register": "Register",
1043
+ "errors": "Validation Errors",
1044
+ "copyFixPrompt": "Copy Fix Prompt",
1045
+ "sendToAgent": "Send to Agent",
1046
+ "waitingAgent": "Waiting for agent response...",
1047
+ "archive": "Archive",
1048
+ "deleteProject": "Delete",
1049
+ "confirmDelete": "Delete this project and all its components? This cannot be undone.",
1050
+ "projectDeleted": "Project deleted",
1051
+ "showArchived": "Show archived",
1052
+ "activityLog": "Activity Log",
1053
+ "allComponents": "All components",
1054
+ "noActivity": "No activity yet",
1055
+ "blueprintTitle": "Import Blueprint",
1056
+ "blueprintDesc": "Copy the blueprint prompt, paste it in your AI chat, then paste the result back here.",
1057
+ "blueprintResult": "Blueprint JSON",
1058
+ "blueprintPlaceholder": "Paste the AI-generated blueprint JSON here...",
1059
+ "importBlueprint": "Import Blueprint",
1060
+ "agentsListening": "agent(s) listening",
1061
+ "noAgentsListening": "No agents listening",
1062
+ "lastSync": "Last sync",
1063
+ "agentSetup": "Agent Setup",
1064
+ "hideSetup": "Hide Setup",
1065
+ "agentSetupDesc": "Creates a new generator agent with credentials and copies the setup prompt to your clipboard. Paste it into your AI agent to start listening.",
1066
+ "agentSelector": {
1067
+ "title": "Start with an agent",
1068
+ "subtitle": "Interview complete. Let an agent execute the rest of the pipeline.",
1069
+ "noAgents": "No agents listening. Copy the agent prompt and paste it into your AI agent.",
1070
+ "startButton": "Start with this agent",
1071
+ "manualButton": "Continue manually",
1072
+ "skipToAgent": "Let an agent handle this"
1073
+ },
1074
+ "agentBanner": {
1075
+ "working": "{agentName} is working",
1076
+ "phase": "Phase: {phase} ({step}/{total})",
1077
+ "disconnected": "Agent may have disconnected",
1078
+ "stopButton": "Stop agent",
1079
+ "continueManually": "Stop and continue manually",
1080
+ "lastHeartbeat": "heartbeat",
1081
+ "phaseStarting": "Starting...",
1082
+ "phaseBlueprint": "Generating blueprint",
1083
+ "phaseGenerating": "Generating components",
1084
+ "phaseRegistering": "Registering",
1085
+ "phaseCompleting": "Completing"
1086
+ },
1087
+ "copyAgentPrompt": "Copy Agent Prompt",
1088
+ "copyAgentPromptShort": "Copy prompt (with link)",
1089
+ "copyAgentPromptFull": "Copy prompt (full)",
1090
+ "agentPromptCopied": "Agent created and setup prompt copied!",
1091
+ "creatingAgent": "Creating agent...",
1092
+ "agentCreateFailed": "Failed to create generator agent. Check that you are logged in.",
1093
+ "interviewTitle": "Requirements Interview",
1094
+ "interviewDesc": "Copy the interview prompt to AI Chat. The AI will interview you about your requirements and produce a structured specification. When the interview is complete, paste the JSON specification back here.",
1095
+ "interviewPrompt": "Step 1: Copy Interview Prompt to AI Chat",
1096
+ "interviewResult": "Step 2: Paste the JSON Specification",
1097
+ "interviewPlaceholder": "Paste the complete AI response here — the system will extract the JSON specification...",
1098
+ "interviewPromptCopied": "Interview prompt copied! Paste it to AI Chat to begin the interview.",
1099
+ "specImported": "Specification imported successfully!",
1100
+ "importSpec": "Import Specification",
1101
+ "skipInterview": "Skip (use description only)",
1102
+ "skipBlueprint": "Skip (go to components)",
1103
+ "cortexPhase": "Connect & Integrate",
1104
+ "cortexDesc": "Client-side domain library bridging extensions and app",
1105
+ "registeredLabel": "registered",
1106
+ "activeLabel": "active",
1107
+ "activateAll": "Activate All",
1108
+ "deactivateAll": "Deactivate All",
1109
+ "launchApp": "Launch App",
1110
+ "refresh": "Refresh",
1111
+ "refreshTitle": "Re-check component status from server",
1112
+ "editService": "Edit Service",
1113
+ "cancelEdit": "Cancel Edit",
1114
+ "editSettings": "Settings",
1115
+ "hideSettings": "Hide Settings",
1116
+ "diagnostics": "Diagnostics",
1117
+ "hideDiagnostics": "Hide Diagnostics",
1118
+ "cancelRemove": "Cancel",
1119
+ "removeEllipsis": "Remove...",
1120
+ "removeSelectLabel": "Select components to remove and unregister:",
1121
+ "deleteExtensionMemory": "Also delete extension memory data",
1122
+ "removingLabel": "Removing...",
1123
+ "removeSelected": "Remove {count} selected",
1124
+ "removedCount": "Removed {count} components",
1125
+ "removedWithErrors": "Removed {count}, {errors} errors",
1126
+ "activatedCount": "Activated {count} components",
1127
+ "activatedWithErrors": "Activated {count}, {errors} errors",
1128
+ "deactivatedCount": "Deactivated {count} components",
1129
+ "deactivatedWithErrors": "Deactivated {count}, {errors} errors",
1130
+ "noRegisteredApp": "No registered app found",
1131
+ "editServiceDesc": "Describe the problem or what you want to change:",
1132
+ "editPlaceholder": "e.g. The map doesn't show markers...",
1133
+ "copyImpactPrompt": "Copy Impact Analysis Prompt",
1134
+ "impactPromptCopied": "Impact analysis prompt copied!",
1135
+ "impactAnalysis": "Impact Analysis",
1136
+ "impactPasteDesc": "Paste the AI's impact analysis response:",
1137
+ "impactPastePlaceholder": "Paste impact analysis JSON here...",
1138
+ "analyzeImpact": "Analyze Impact",
1139
+ "impactResults": "Impact Results",
1140
+ "impactArrayRequired": "Response must contain an \"analysis\" array",
1141
+ "copyEditPrompt": "Copy Edit Prompt",
1142
+ "editPromptCopied": "Edit prompt for {name} copied!",
1143
+ "backToImpact": "Back to Impact",
1144
+ "done": "Done",
1145
+ "promptCopied": "Prompt copied!",
1146
+ "blueprintPromptCopied": "Blueprint prompt copied!",
1147
+ "allComponentsRegistered": "All components registered!",
1148
+ "componentRegistered": "Component registered: {name}",
1149
+ "validationFailed": "Validation failed",
1150
+ "registrationNameMissing": "Registered but name not found in response",
1151
+ "invalidJson": "Invalid JSON: {error}",
1152
+ "diagComponent": "Component",
1153
+ "diagType": "Type",
1154
+ "diagGenStatus": "Generator Status",
1155
+ "diagLiveStatus": "Live Status",
1156
+ "diagLastAction": "Last Action",
1157
+ "serviceDefinition": "SERVICE DEFINITION",
1158
+ "seedDataTranslations": "SEED DATA & TRANSLATIONS",
1159
+ "packageProject": "Package as Template",
1160
+ "updatePackage": "Update Package",
1161
+ "packageSuccess": "Package created successfully",
1162
+ "packageUpdateSuccess": "Package updated to version {version}",
1163
+ "packageCategory": "Category",
1164
+ "packageTags": "Tags (comma-separated)",
1165
+ "packageVisibility": "Visibility",
1166
+ "noComponentsToPackage": "No completed components to package",
1167
+ "changesSummary": "Changes since last version",
1168
+ "changeAdded": "Added",
1169
+ "changeModified": "Modified",
1170
+ "changeRemoved": "Removed",
1171
+ "changeUnchanged": "Unchanged",
1172
+ "forkedFrom": "Forked from {name} by {author}",
1173
+ "forkConfirm": "This will create your own copy of this package for editing. Continue?",
1174
+ "clickToEditName": "Click to edit name",
1175
+ "nameUpdated": "Name updated",
1176
+ "reregister": "Re-register",
1177
+ "reregisterHint": "Deactivate, remove, and re-register this component with the current result",
1178
+ "reregistered": "Re-registered: {name}",
1179
+ "reregisterFailed": "Re-register failed: {error}",
1180
+ "changelogNote": "Changelog note",
1181
+ "changelogPlaceholder": "What changed...",
1182
+ "registerHint": "Install this component on your AIMEAT node — makes it live",
1183
+ "logActions": {
1184
+ "project_created": "Project created",
1185
+ "interview_imported": "Interview specification imported",
1186
+ "blueprint_imported": "Blueprint imported",
1187
+ "agent_started": "Agent started",
1188
+ "agent_stopped": "Agent stopped",
1189
+ "project_deleted": "Project deleted",
1190
+ "all_activated": "All components activated",
1191
+ "all_deactivated": "All components deactivated",
1192
+ "name_changed": "Project renamed"
1193
+ },
1194
+ "status": {
1195
+ "not_started": "Not started",
1196
+ "prompt_ready": "Prompt ready",
1197
+ "waiting_user": "Waiting for you",
1198
+ "waiting_agent": "Waiting for agent",
1199
+ "validating": "Validating",
1200
+ "errors": "Errors",
1201
+ "done": "Done"
1202
+ },
1203
+ "settings_title": "Service Settings",
1204
+ "settings_description": "Your service needs the following settings to function. These will be used during testing.",
1205
+ "settings_required": "Required",
1206
+ "settings_optional": "Optional",
1207
+ "settings_save": "Save and continue",
1208
+ "settings_skip": "Skip (no external services)",
1209
+ "settings_no_settings": "No settings needed — continuing to generation.",
1210
+ "test_scope_title": "Test Scope",
1211
+ "test_scope_comprehensive": "Comprehensive (recommended) — functional tests + browser tests with screenshots",
1212
+ "test_scope_basic": "Basic — functional tests only",
1213
+ "test_scope_none": "No tests — skip testing",
1214
+ "test_scope_comprehensive_short": "Full",
1215
+ "test_scope_basic_short": "Basic",
1216
+ "test_scope_none_short": "Skip",
1217
+ "test_generating": "AI generating tests...",
1218
+ "test_running": "Running tests...",
1219
+ "test_passed": "All tests passed",
1220
+ "test_partial": "Some tests passed, some failed",
1221
+ "test_failed": "Tests failed",
1222
+ "test_screenshots": "Screenshots",
1223
+ "test_fix_auto": "Auto-fix",
1224
+ "test_fix_manual": "Test manually",
1225
+ "test_fix_skip": "Skip",
1226
+ "test_fix_round": "Fix round",
1227
+ "test_errors_count": "errors",
1228
+ "test_component_passed": "Passed",
1229
+ "test_component_failed": "Failed",
1230
+ "test_component_skipped": "Skipped",
1231
+ "test_planned": "Test planned — will run after registration",
1232
+ "test_playwright_unavailable": "Playwright not available, skipping browser tests",
1233
+ "test_section_title": "Test",
1234
+ "test_prompt": "Test Prompt",
1235
+ "test_copy_prompt": "Copy test prompt",
1236
+ "test_prompt_copied": "Test prompt copied to clipboard",
1237
+ "test_run_with_ai": "Generate & run test with AI",
1238
+ "test_code": "Test Code",
1239
+ "test_code_placeholder": "Paste AI-generated test code here...",
1240
+ "test_run": "Run Test",
1241
+ "test_result_title": "Result",
1242
+ "test_trace_title": "Diagnostics trace",
1243
+ "test_no_testable": "No registered testable components (extension/cortex/app)",
1244
+ "openrouter": {
1245
+ "title": "OpenRouter Settings",
1246
+ "apiKey": "API Key",
1247
+ "apiKeyPlaceholder": "sk-or-v1-...",
1248
+ "apiKeySaved": "API key saved",
1249
+ "apiKeyMasked": "●●●●●●●●",
1250
+ "model": "AI Model",
1251
+ "reasoningModel": "Reasoning Model (blueprints, skeletons, planning)",
1252
+ "executionModel": "Execution Model (code, tests, assembly)",
1253
+ "modelSelect": "Select model",
1254
+ "autoRetry": "Auto-retry on validation error",
1255
+ "maxRetries": "Max retries",
1256
+ "temperature": "Temperature",
1257
+ "temperature_hint": "0 = deterministic, 1 = default, 2 = max creative",
1258
+ "topP": "Top P",
1259
+ "topP_hint": "Nucleus sampling: 0.1 = focused, 1.0 = full range",
1260
+ "maxTokens": "Max tokens",
1261
+ "maxTokens_hint": "Max output length. Leave empty for model default.",
1262
+ "testConnection": "Test connection",
1263
+ "testSuccess": "Connection successful",
1264
+ "testFail": "Connection failed",
1265
+ "save": "Save settings",
1266
+ "delete": "Remove API key",
1267
+ "deleteConfirm": "Are you sure you want to remove your OpenRouter API key?",
1268
+ "runWithAi": "Run with AI",
1269
+ "runAll": "Run all steps",
1270
+ "cancel": "Cancel",
1271
+ "waiting": "Waiting for AI response...",
1272
+ "retrying": "Retrying (attempt {current}/{max})...",
1273
+ "stepComplete": "Step completed via AI",
1274
+ "stepFailed": "AI could not complete this step",
1275
+ "stepDone": "{name} updated successfully",
1276
+ "noApiKey": "Configure OpenRouter API key above to use AI autopilot",
1277
+ "encryptionNotConfigured": "Server encryption not configured. Contact the node operator.",
1278
+ "provider": "AI Provider",
1279
+ "provider_openrouter": "OpenRouter — cloud service, hundreds of models",
1280
+ "provider_lmstudio": "LM Studio — local AI (localhost)",
1281
+ "provider_custom": "Custom — any OpenAI-compatible API",
1282
+ "baseUrl": "API URL",
1283
+ "baseUrl_hint": "e.g. http://localhost:1234/v1"
1284
+ }
1285
+ },
1286
+ "foundry": {
1287
+ "tabLabel": "Foundry",
1288
+ "title": "Foundry — Multi-Pass Generator",
1289
+ "empty": "No projects yet. Create your first service!",
1290
+ "disabled": "Service Generator is disabled on this node.",
1291
+ "newProject": "New Project",
1292
+ "newProjectTitle": "Create a New Service",
1293
+ "newProjectDesc": "Describe what you want to build. Be specific about features, data, integrations, and UI needs.",
1294
+ "descPlaceholder": "I want to create a service that...",
1295
+ "analyze": "Analyze",
1296
+ "analyzing": "Analyzing...",
1297
+ "back": "Back",
1298
+ "selectComponent": "Select a component from the sidebar to get started",
1299
+ "modeChat": "AI Chat",
1300
+ "modeAgent": "Agent",
1301
+ "prompt": "Prompt",
1302
+ "copyPrompt": "Copy Prompt",
1303
+ "regeneratePrompt": "Refresh prompt",
1304
+ "regeneratePromptHint": "Regenerate prompt with latest templates",
1305
+ "promptRegenerated": "Prompt updated with latest templates!",
1306
+ "result": "Result",
1307
+ "resultPlaceholder": "Paste the AI response here...",
1308
+ "extensionResultPlaceholder": "Paste the ENTIRE AI response here — YAML manifest and all JavaScript code blocks together...",
1309
+ "extensionPasteHint": "Extensions have multiple code blocks. Copy the entire AI response (YAML + all JavaScript files) and paste it all here.",
1310
+ "validate": "Validate",
1311
+ "register": "Register",
1312
+ "errors": "Validation Errors",
1313
+ "copyFixPrompt": "Copy Fix Prompt",
1314
+ "sendToAgent": "Send to Agent",
1315
+ "waitingAgent": "Waiting for agent response...",
1316
+ "archive": "Archive",
1317
+ "deleteProject": "Delete",
1318
+ "confirmDelete": "Delete this project and all its components? This cannot be undone.",
1319
+ "projectDeleted": "Project deleted",
1320
+ "showArchived": "Show archived",
1321
+ "activityLog": "Activity Log",
1322
+ "allComponents": "All components",
1323
+ "noActivity": "No activity yet",
1324
+ "blueprintTitle": "Import Blueprint",
1325
+ "blueprintDesc": "Copy the blueprint prompt, paste it in your AI chat, then paste the result back here.",
1326
+ "blueprintResult": "Blueprint JSON",
1327
+ "blueprintPlaceholder": "Paste the AI-generated blueprint JSON here...",
1328
+ "importBlueprint": "Import Blueprint",
1329
+ "agentsListening": "agent(s) listening",
1330
+ "noAgentsListening": "No agents listening",
1331
+ "lastSync": "Last sync",
1332
+ "agentSetup": "Agent Setup",
1333
+ "hideSetup": "Hide Setup",
1334
+ "agentSetupDesc": "Creates a new generator agent with credentials and copies the setup prompt to your clipboard. Paste it into your AI agent to start listening.",
1335
+ "agentSelector": {
1336
+ "title": "Start with an agent",
1337
+ "subtitle": "Interview complete. Let an agent execute the rest of the pipeline.",
1338
+ "noAgents": "No agents listening. Copy the agent prompt and paste it into your AI agent.",
1339
+ "startButton": "Start with this agent",
1340
+ "manualButton": "Continue manually",
1341
+ "skipToAgent": "Let an agent handle this"
1342
+ },
1343
+ "agentBanner": {
1344
+ "working": "{agentName} is working",
1345
+ "phase": "Phase: {phase} ({step}/{total})",
1346
+ "disconnected": "Agent may have disconnected",
1347
+ "stopButton": "Stop agent",
1348
+ "continueManually": "Stop and continue manually",
1349
+ "lastHeartbeat": "heartbeat",
1350
+ "phaseStarting": "Starting...",
1351
+ "phaseBlueprint": "Generating blueprint",
1352
+ "phaseGenerating": "Generating components",
1353
+ "phaseRegistering": "Registering",
1354
+ "phaseCompleting": "Completing"
1355
+ },
1356
+ "copyAgentPrompt": "Copy Agent Prompt",
1357
+ "copyAgentPromptShort": "Copy prompt (with link)",
1358
+ "copyAgentPromptFull": "Copy prompt (full)",
1359
+ "agentPromptCopied": "Agent created and setup prompt copied!",
1360
+ "creatingAgent": "Creating agent...",
1361
+ "agentCreateFailed": "Failed to create generator agent. Check that you are logged in.",
1362
+ "interviewTitle": "Requirements Interview",
1363
+ "interviewDesc": "Copy the interview prompt to AI Chat. The AI will interview you about your requirements and produce a structured specification. When the interview is complete, paste the JSON specification back here.",
1364
+ "interviewPrompt": "Step 1: Copy Interview Prompt to AI Chat",
1365
+ "interviewResult": "Step 2: Paste the JSON Specification",
1366
+ "interviewPlaceholder": "Paste the complete AI response here — the system will extract the JSON specification...",
1367
+ "interviewPromptCopied": "Interview prompt copied! Paste it to AI Chat to begin the interview.",
1368
+ "specImported": "Specification imported successfully!",
1369
+ "importSpec": "Import Specification",
1370
+ "skipInterview": "Skip (use description only)",
1371
+ "skipBlueprint": "Skip (go to components)",
1372
+ "cortexPhase": "Connect & Integrate",
1373
+ "cortexDesc": "Client-side domain library bridging extensions and app",
1374
+ "registeredLabel": "registered",
1375
+ "activeLabel": "active",
1376
+ "activateAll": "Activate All",
1377
+ "deactivateAll": "Deactivate All",
1378
+ "launchApp": "Launch App",
1379
+ "refresh": "Refresh",
1380
+ "refreshTitle": "Re-check component status from server",
1381
+ "editService": "Edit Service",
1382
+ "cancelEdit": "Cancel Edit",
1383
+ "editSettings": "Settings",
1384
+ "hideSettings": "Hide Settings",
1385
+ "diagnostics": "Diagnostics",
1386
+ "hideDiagnostics": "Hide Diagnostics",
1387
+ "cancelRemove": "Cancel",
1388
+ "removeEllipsis": "Remove...",
1389
+ "removeSelectLabel": "Select components to remove and unregister:",
1390
+ "deleteExtensionMemory": "Also delete extension memory data",
1391
+ "removingLabel": "Removing...",
1392
+ "removeSelected": "Remove {count} selected",
1393
+ "removedCount": "Removed {count} components",
1394
+ "removedWithErrors": "Removed {count}, {errors} errors",
1395
+ "activatedCount": "Activated {count} components",
1396
+ "activatedWithErrors": "Activated {count}, {errors} errors",
1397
+ "deactivatedCount": "Deactivated {count} components",
1398
+ "deactivatedWithErrors": "Deactivated {count}, {errors} errors",
1399
+ "noRegisteredApp": "No registered app found",
1400
+ "editServiceDesc": "Describe the problem or what you want to change:",
1401
+ "editPlaceholder": "e.g. The map doesn't show markers...",
1402
+ "copyImpactPrompt": "Copy Impact Analysis Prompt",
1403
+ "impactPromptCopied": "Impact analysis prompt copied!",
1404
+ "impactAnalysis": "Impact Analysis",
1405
+ "impactPasteDesc": "Paste the AI's impact analysis response:",
1406
+ "impactPastePlaceholder": "Paste impact analysis JSON here...",
1407
+ "analyzeImpact": "Analyze Impact",
1408
+ "impactResults": "Impact Results",
1409
+ "impactArrayRequired": "Response must contain an \"analysis\" array",
1410
+ "copyEditPrompt": "Copy Edit Prompt",
1411
+ "editPromptCopied": "Edit prompt for {name} copied!",
1412
+ "backToImpact": "Back to Impact",
1413
+ "done": "Done",
1414
+ "promptCopied": "Prompt copied!",
1415
+ "blueprintPromptCopied": "Blueprint prompt copied!",
1416
+ "allComponentsRegistered": "All components registered!",
1417
+ "componentRegistered": "Component registered: {name}",
1418
+ "validationFailed": "Validation failed",
1419
+ "registrationNameMissing": "Registered but name not found in response",
1420
+ "invalidJson": "Invalid JSON: {error}",
1421
+ "diagComponent": "Component",
1422
+ "diagType": "Type",
1423
+ "diagGenStatus": "Generator Status",
1424
+ "diagLiveStatus": "Live Status",
1425
+ "diagLastAction": "Last Action",
1426
+ "serviceDefinition": "SERVICE DEFINITION",
1427
+ "seedDataTranslations": "SEED DATA & TRANSLATIONS",
1428
+ "packageProject": "Package as Template",
1429
+ "updatePackage": "Update Package",
1430
+ "packageSuccess": "Package created successfully",
1431
+ "packageUpdateSuccess": "Package updated to version {version}",
1432
+ "packageCategory": "Category",
1433
+ "packageTags": "Tags (comma-separated)",
1434
+ "packageVisibility": "Visibility",
1435
+ "noComponentsToPackage": "No completed components to package",
1436
+ "changesSummary": "Changes since last version",
1437
+ "changeAdded": "Added",
1438
+ "changeModified": "Modified",
1439
+ "changeRemoved": "Removed",
1440
+ "changeUnchanged": "Unchanged",
1441
+ "forkedFrom": "Forked from {name} by {author}",
1442
+ "forkConfirm": "This will create your own copy of this package for editing. Continue?",
1443
+ "clickToEditName": "Click to edit name",
1444
+ "nameUpdated": "Name updated",
1445
+ "reregister": "Re-register",
1446
+ "reregisterHint": "Deactivate, remove, and re-register this component with the current result",
1447
+ "reregistered": "Re-registered: {name}",
1448
+ "reregisterFailed": "Re-register failed: {error}",
1449
+ "changelogNote": "Changelog note",
1450
+ "changelogPlaceholder": "What changed...",
1451
+ "registerHint": "Install this component on your AIMEAT node — makes it live",
1452
+ "logActions": {
1453
+ "project_created": "Project created",
1454
+ "interview_imported": "Interview specification imported",
1455
+ "blueprint_imported": "Blueprint imported",
1456
+ "agent_started": "Agent started",
1457
+ "agent_stopped": "Agent stopped",
1458
+ "project_deleted": "Project deleted",
1459
+ "all_activated": "All components activated",
1460
+ "all_deactivated": "All components deactivated",
1461
+ "name_changed": "Project renamed"
1462
+ },
1463
+ "status": {
1464
+ "not_started": "Not started",
1465
+ "prompt_ready": "Prompt ready",
1466
+ "waiting_user": "Waiting for you",
1467
+ "waiting_agent": "Waiting for agent",
1468
+ "validating": "Validating",
1469
+ "errors": "Errors",
1470
+ "done": "Done"
1471
+ },
1472
+ "settings_title": "Service Settings",
1473
+ "settings_description": "Your service needs the following settings to function. These will be used during testing.",
1474
+ "settings_required": "Required",
1475
+ "settings_optional": "Optional",
1476
+ "settings_save": "Save and continue",
1477
+ "settings_skip": "Skip (no external services)",
1478
+ "settings_no_settings": "No settings needed — continuing to generation.",
1479
+ "test_scope_title": "Test Scope",
1480
+ "test_scope_comprehensive": "Comprehensive (recommended) — functional tests + browser tests with screenshots",
1481
+ "test_scope_basic": "Basic — functional tests only",
1482
+ "test_scope_none": "No tests — skip testing",
1483
+ "test_scope_comprehensive_short": "Full",
1484
+ "test_scope_basic_short": "Basic",
1485
+ "test_scope_none_short": "Skip",
1486
+ "test_generating": "AI generating tests...",
1487
+ "test_running": "Running tests...",
1488
+ "test_passed": "All tests passed",
1489
+ "test_partial": "Some tests passed, some failed",
1490
+ "test_failed": "Tests failed",
1491
+ "test_screenshots": "Screenshots",
1492
+ "test_fix_auto": "Auto-fix",
1493
+ "test_fix_manual": "Test manually",
1494
+ "test_fix_skip": "Skip",
1495
+ "test_fix_round": "Fix round",
1496
+ "test_errors_count": "errors",
1497
+ "test_component_passed": "Passed",
1498
+ "test_component_failed": "Failed",
1499
+ "test_component_skipped": "Skipped",
1500
+ "test_planned": "Test planned — will run after registration",
1501
+ "test_playwright_unavailable": "Playwright not available, skipping browser tests",
1502
+ "test_section_title": "Test",
1503
+ "test_prompt": "Test Prompt",
1504
+ "test_copy_prompt": "Copy test prompt",
1505
+ "test_prompt_copied": "Test prompt copied to clipboard",
1506
+ "test_run_with_ai": "Generate & run test with AI",
1507
+ "test_code": "Test Code",
1508
+ "test_code_placeholder": "Paste AI-generated test code here...",
1509
+ "test_run": "Run Test",
1510
+ "test_result_title": "Result",
1511
+ "test_trace_title": "Diagnostics trace",
1512
+ "test_no_testable": "No registered testable components (extension/cortex/app)",
1513
+ "generateNextPass": "Generate Next Pass",
1514
+ "passProgress": "Pass Progress",
1515
+ "passTest": "Test Prompt",
1516
+ "passSkeleton": "Skeleton",
1517
+ "passUnit": "Unit",
1518
+ "passAssembly": "Assembly",
1519
+ "passReflection": "Reflection",
1520
+ "reflectionHistory": "Reflection History",
1521
+ "reflectionDiagnosis": "Diagnosis",
1522
+ "reflectionPrescription": "Prescription",
1523
+ "escalatedToUser": "Escalated — needs your input",
1524
+ "loopDetected": "Loop detected — same fix prescribed twice",
1525
+ "maxReflections": "Maximum reflection attempts reached",
1526
+ "openrouter": {
1527
+ "title": "OpenRouter Settings",
1528
+ "apiKey": "API Key",
1529
+ "apiKeyPlaceholder": "sk-or-v1-...",
1530
+ "apiKeySaved": "API key saved",
1531
+ "apiKeyMasked": "●●●●●●●●",
1532
+ "model": "AI Model",
1533
+ "reasoningModel": "Reasoning Model (blueprints, skeletons, planning)",
1534
+ "executionModel": "Execution Model (code, tests, assembly)",
1535
+ "modelSelect": "Select model",
1536
+ "autoRetry": "Auto-retry on validation error",
1537
+ "maxRetries": "Max retries",
1538
+ "temperature": "Temperature",
1539
+ "temperature_hint": "0 = deterministic, 1 = default, 2 = max creative",
1540
+ "topP": "Top P",
1541
+ "topP_hint": "Nucleus sampling: 0.1 = focused, 1.0 = full range",
1542
+ "maxTokens": "Max tokens",
1543
+ "maxTokens_hint": "Max output length. Leave empty for model default.",
1544
+ "testConnection": "Test connection",
1545
+ "testSuccess": "Connection successful",
1546
+ "testFail": "Connection failed",
1547
+ "save": "Save settings",
1548
+ "delete": "Remove API key",
1549
+ "deleteConfirm": "Are you sure you want to remove your OpenRouter API key?",
1550
+ "runWithAi": "Run with AI",
1551
+ "runAll": "Run all steps",
1552
+ "cancel": "Cancel",
1553
+ "waiting": "Waiting for AI response...",
1554
+ "retrying": "Retrying (attempt {current}/{max})...",
1555
+ "stepComplete": "Step completed via AI",
1556
+ "stepFailed": "AI could not complete this step",
1557
+ "stepDone": "{name} updated successfully",
1558
+ "noApiKey": "Configure OpenRouter API key above to use AI autopilot",
1559
+ "encryptionNotConfigured": "Server encryption not configured. Contact the node operator.",
1560
+ "provider": "AI Provider",
1561
+ "provider_openrouter": "OpenRouter — cloud service, hundreds of models",
1562
+ "provider_lmstudio": "LM Studio — local AI (localhost)",
1563
+ "provider_custom": "Custom — any OpenAI-compatible API",
1564
+ "baseUrl": "API URL",
1565
+ "baseUrl_hint": "e.g. http://localhost:1234/v1"
1566
+ }
1567
+ },
1568
+ "calibrator": {
1569
+ "tabLabel": "Calibrator",
1570
+ "title": "Prompt Calibrator",
1571
+ "empty": "No calibration projects yet.",
1572
+ "newProject": "New Calibration",
1573
+ "newProjectName": "Calibration name",
1574
+ "newProjectPlaceholder": "e.g., Blueprint Generator Prompt",
1575
+ "reasoningModel": "Reasoning AI (the judge)",
1576
+ "prompt": "Prompt",
1577
+ "targetOutput": "Desired Result",
1578
+ "analysisTemplate": "Analysis Prompt Template",
1579
+ "analysisTemplatePlaceholders": "Placeholders: {TARGET_OUTPUT}, {CANDIDATE_OUTPUT}, {MODEL_NAME}, {PROMPT_USED}",
1580
+ "resetTemplate": "Reset to default",
1581
+ "candidateModels": "Candidate Models",
1582
+ "addModel": "Add",
1583
+ "removeModel": "Remove",
1584
+ "runAll": "Run All",
1585
+ "runAllAnalyze": "Run All + Analyze",
1586
+ "running": "Running...",
1587
+ "analyzing": "Analyzing",
1588
+ "results": "Results",
1589
+ "overallScore": "Overall Score",
1590
+ "dimensions": "Dimensions",
1591
+ "runHistory": "Run History",
1592
+ "noRuns": "No runs yet. Add candidate models and click Run All.",
1593
+ "version": "Version",
1594
+ "changelog": "What changed?",
1595
+ "changelogPlaceholder": "Describe what changed in this version...",
1596
+ "save": "Save",
1597
+ "saveNewVersion": "Save as new version",
1598
+ "copy": "Copy",
1599
+ "copyComposed": "Copy composed prompt",
1600
+ "archive": "Archive",
1601
+ "unarchive": "Unarchive",
1602
+ "showArchived": "Show archived",
1603
+ "delete": "Delete",
1604
+ "deleteConfirm": "Delete this calibration project and all its data?",
1605
+ "back": "Back",
1606
+ "applyFixes": "Apply proposed fixes",
1607
+ "applyingFixes": "Applying fixes...",
1608
+ "proposals": "Proposed fixes",
1609
+ "passed": "passed",
1610
+ "failed": "failed",
1611
+ "models": "models",
1612
+ "runs": "runs",
1613
+ "avgScore": "avg score",
1614
+ "provider": "Provider",
1615
+ "model": "Model",
1616
+ "selectModel": "Select model",
1617
+ "chartOverall": "Overall Score",
1618
+ "chartByDimension": "By Dimension",
1619
+ "step1": "Step 1: Generation",
1620
+ "step2": "Step 2: Analysis",
1621
+ "step3": "Step 3: Reflection",
1622
+ "step3a": "Judge proposals",
1623
+ "step3b": "Self-reflection",
1624
+ "step4": "Step 4: Synthesis",
1625
+ "runStep1": "Run Step 1",
1626
+ "runStep2": "Run Step 2",
1627
+ "runStep3": "Run Step 3",
1628
+ "runStep4": "Run Step 4",
1629
+ "runAllSteps": "Run All Steps",
1630
+ "newRun": "New Run",
1631
+ "newRunAllSteps": "New Run (all steps)",
1632
+ "reflectionTemplate": "Reflection Prompt Template (Step 3)",
1633
+ "selfReflectionTemplate": "Self-Reflection Prompt Template (Step 3b)",
1634
+ "synthesisTemplate": "Synthesis Prompt Template (Step 4)",
1635
+ "reflectionPlaceholders": "Placeholders: {PROMPT_USED}, {TARGET_OUTPUT}, {CANDIDATE_OUTPUT}, {MODEL_NAME}, {ANALYSIS_TEXT}",
1636
+ "synthesisPlaceholders": "Placeholders: {PROMPT_USED}, {JUDGE_PROPOSALS}, {CANDIDATE_PROPOSALS}",
1637
+ "pasteOutput": "Paste output",
1638
+ "pasteAnalysis": "Paste analysis",
1639
+ "pasteJudgeProposals": "Paste judge proposals",
1640
+ "pasteSelfProposals": "Paste self-proposals",
1641
+ "pasteSynthesis": "Paste synthesis",
1642
+ "groupedProposals": "Grouped proposals",
1643
+ "optionA": "Option A (conservative)",
1644
+ "optionB": "Option B (moderate)",
1645
+ "optionC": "Option C (aggressive)",
1646
+ "applySelected": "Apply selected → create new version",
1647
+ "copyPromptAndProposals": "Copy prompt + selected proposals",
1648
+ "impact": "Impact",
1649
+ "overlap": "Overlap",
1650
+ "recommendation": "Recommendation",
1651
+ "setReasoningModel": "Set a reasoning model to enable analysis and reflection.",
1652
+ "addModelsFirst": "Add candidate models first.",
1653
+ "saveVersionFirst": "Save a prompt version first.",
1654
+ "noTargetWarning": "No desired result set — analysis will have no reference to compare against.",
1655
+ "viewPromptSent": "View prompt sent",
1656
+ "viewRawResponse": "View raw response",
1657
+ "viewOutput": "View output",
1658
+ "viewAnalysis": "View full analysis",
1659
+ "generating": "Generating",
1660
+ "judgeReflecting": "Judge reflecting",
1661
+ "selfReflecting": "Self reflecting",
1662
+ "synthesizing": "Synthesizing proposals",
1663
+ "batch": "Run",
1664
+ "batchStatus": "Status",
1665
+ "deleteConfirmBatch": "Delete this run and all its data?"
1666
+ },
1667
+ "visibility": {
1668
+ "public": "Public",
1669
+ "private": "Private",
1670
+ "owner": "Shared",
1671
+ "protected": "Protected"
1672
+ },
1673
+ "knowledge": {
1674
+ "parseError": "Could not parse the pasted content as JSON",
1675
+ "notKnowledgePackage": "This doesn't look like an AIMEAT knowledge package",
1676
+ "copyFailed": "Failed to copy prompt",
1677
+ "cloned": "Package cloned successfully!",
1678
+ "cloneFailed": "Clone failed",
1679
+ "referencesPackageLevel": "References (package-level)"
1680
+ },
1681
+ "landing": {
1682
+ "home": "Home",
1683
+ "heroTitle": "Welcome! Start here",
1684
+ "heroSubtitle": "You have four paths forward. Start anywhere — all lead to something useful.",
1685
+ "onboardInstall": "Install a ready service",
1686
+ "onboardInstallDesc": "Browse packages. One click and you have your own electricity price monitor, digital signage, or company radar.",
1687
+ "onboardChat": "Do something with AI Chat",
1688
+ "onboardChatDesc": "Copy a prompt, paste it into your AI Chat. You get a working app that uses AIMEAT memory. No coding.",
1689
+ "onboardAgent": "Connect an AI agent",
1690
+ "onboardAgentDesc": "Give Claude/ChatGPT access here. It can bring data, remember things, and work on your behalf.",
1691
+ "onboardGenerator": "Generate a full service",
1692
+ "onboardGeneratorDesc": "Tell us what you need. The generator interviews you and creates everything: UI, backend, translations, data.",
1693
+ "tagEasiest": "easiest",
1694
+ "tagLater": "later",
1695
+ "knowledgeTitle": "Your research and conversations are valuable",
1696
+ "knowledgeDesc": "You've already done a lot of work with AI. Bring it here — structured, searchable, shareable. Copy the Knowledge Packager prompt, paste it into your AI Chat, and everything you've researched becomes structured knowledge.",
1697
+ "knowledgeBtnTitle": "Bring your AI research here",
1698
+ "knowledgeBtnDesc": "Copy Knowledge Packager, paste into your AI Chat — your conversations become structured knowledge.",
1699
+ "ghostSectionTitle": "Popular services",
1700
+ "ghostInstall": "install",
1701
+ "cortexSectionTitle": "Ready-made extensions — add to your AI Chat",
1702
+ "cortexCharts": "Charts",
1703
+ "cortexChartsDesc": "Charts for your data — bar, line, pie. Touch + mouse.",
1704
+ "cortexCanvas": "Canvas",
1705
+ "cortexCanvasDesc": "Draw and save to storage. Undo, export, pen & shapes.",
1706
+ "menuDaily": "Daily",
1707
+ "menuBuildShare": "Build & share",
1708
+ "menuManagement": "Management",
1709
+ "menuInfra": "Infrastructure",
1710
+ "menuInfraAnnotation": "node operators only",
1711
+ "menuTechnical": "Technical",
1712
+ "menuPersonal": "Personal",
1713
+ "expandAll": "Show all settings",
1714
+ "expandMore": "Show all",
1715
+ "myApps": "My apps",
1716
+ "allApps": "All",
1717
+ "openApp": "Open in new tab",
1718
+ "viewAll": "View all",
1719
+ "editProfile": "edit profile",
1720
+ "federationBadge": "{count} node(s) in federation",
1721
+ "packagesExt": "Packages & Extensions",
1722
+ "notificationsBadge": "Notifications",
1723
+ "ownPackages": "Own packages",
1724
+ "connectAgent": "Connect new agent",
1725
+ "installFirst": "Install first app"
1726
+ }
1727
+ },
1728
+ "dev": {
1729
+ "title": "AIMEAT Onboarding Portal",
1730
+ "subtitle": "Connect any AI to this node — select your platform to get started",
1731
+ "stats": {
1732
+ "agents": "Agents",
1733
+ "chatSessions": "Chat Sessions",
1734
+ "services": "Services",
1735
+ "boards": "Boards"
1736
+ },
1737
+ "quickStart": {
1738
+ "title": "Quick Start — Already have an AI open?",
1739
+ "desc": "Copy-paste this into your AI chat and it will connect itself:",
1740
+ "copy": "Copy",
1741
+ "note": "Works with AIs that can browse the web (Grok, Claude, ChatGPT with browsing, etc.). The URL returns JSON instructions the AI will understand.",
1742
+ "fallback": "If your AI can’t browse, pick your platform below instead."
1743
+ },
1744
+ "step1": {
1745
+ "label": "Select Your AI Platform"
1746
+ },
1747
+ "step2": {
1748
+ "label": "Select Your Subscription / Variant"
1749
+ },
1750
+ "step3": {
1751
+ "label": "Choose How to Connect"
1752
+ },
1753
+ "step4": {
1754
+ "label": "Share Your App"
1755
+ },
1756
+ "mode": {
1757
+ "loggedIn": "Logged in as",
1758
+ "loggedInDesc": "You can upload apps and get a shareable download link. Other users can browse and download your apps.",
1759
+ "anonymous": "Anonymous Mode",
1760
+ "anonymousDesc": "You can generate prompts and apps without logging in.",
1761
+ "anonymousNote": "To share apps with others, you’ll need to share the HTML file yourself (email, drive, etc.).",
1762
+ "signUp": "Sign up",
1763
+ "signUpNote": "to get a personal download link others can use."
1764
+ },
1765
+ "community": {
1766
+ "title": "Community Apps",
1767
+ "desc": "Apps uploaded by users on this node. Download and open locally in your browser."
1768
+ },
1769
+ "profile": "Profile",
1770
+ "humanPortal": "For Everyone",
1771
+ "tier": {
1772
+ "mcp": "MCP Connection",
1773
+ "api": "API Connection",
1774
+ "browse": "Browse (Read-Only)",
1775
+ "prompt": "Prompt Package"
1776
+ },
1777
+ "tabs": {
1778
+ "apps": "Apps",
1779
+ "appsDesc": "Build Applications",
1780
+ "mcp": "MCP",
1781
+ "mcpDesc": "AI Integration",
1782
+ "api": "API",
1783
+ "apiDesc": "REST Interface",
1784
+ "unavailable": "Not available on this plan",
1785
+ "upgradeForMcp": "MCP requires a paid plan. Upgrade to access 18 AIMEAT tools directly from your AI.",
1786
+ "upgradeForApi": "This plan cannot make HTTP requests. Use Apps to generate a complete web application instead."
1787
+ },
1788
+ "copy": "Copy",
1789
+ "copied": "Copied!",
1790
+ "download": "Download",
1791
+ "upload": "Upload to Node",
1792
+ "uploading": "Uploading...",
1793
+ "uploaded": "Uploaded!",
1794
+ "uploadFailed": "Upload failed",
1795
+ "shareLink": "Share link",
1796
+ "noApps": "No community apps yet.",
1797
+ "panel": {
1798
+ "mcpBadge": "🔌 MCP — AI Integration",
1799
+ "mcpPrereqTitle": "⚠ Prerequisite: AIMEAT Account Required",
1800
+ "mcpPrereqDesc": "MCP uses OAuth to authenticate your agent identity. You need to <strong>sign up first</strong> (click your avatar or the sign-up button above) to create an owner account and agent. Once logged in, your agent's GAII will appear here.",
1801
+ "mcpReady": "✅ Your agent is ready for MCP",
1802
+ "mcpReadyDesc": "When your AI platform triggers the OAuth flow, it will authenticate using your agent identity shown above. Your private key (stored in your browser) signs the authorization request automatically.",
1803
+ "mcpStep1": "Open your AI platform's <strong>Settings → Connectors / MCP Servers</strong>",
1804
+ "mcpStep2": "Add a new MCP server with this URL:",
1805
+ "mcpStep3": "Your platform triggers OAuth — AIMEAT authenticates your agent via <strong>Ed25519 signature</strong> and issues access tokens",
1806
+ "mcpStep4": "Once connected, try: <em>\"Check my AIMEAT node catalogue\"</em>",
1807
+ "mcpTools": "You'll have access to <strong>18 MCP tools</strong>: catalogue search, agent profile, memory read/write/list, action execute, work queue, wallet, boards, storage, and 4 admin tools (operator only).",
1808
+ "mcpSetupTitle": "🤖 Connect Your AI Assistant",
1809
+ "mcpSetupDesc": "Choose your Claude product below. Each has a different setup method.",
1810
+ "mcpSetupCodeDesc": "Run one command in your terminal. Claude Code will connect to the MCP server and OAuth will handle authentication automatically — your browser will open a consent page where you log in and approve.",
1811
+ "mcpCodeRunThis": "Run this in your terminal:",
1812
+ "mcpCopyCommand": "Copy Command",
1813
+ "mcpCopied": "Copied!",
1814
+ "mcpCodeOAuthNote": "When Claude Code first connects, your browser will open the OAuth consent page. Log in with your GHII and approve the connection. Tokens refresh automatically.",
1815
+ "mcpSetupCoworkDesc": "Add AIMEAT as a custom connector in Claude Desktop. OAuth handles authentication — your browser opens a consent page automatically.",
1816
+ "mcpDesktopStep1": "Open Claude Desktop → Settings (gear icon) → Connectors → Add custom connector",
1817
+ "mcpDesktopStep2": "Enter a name (e.g. \"aimeat.io\") and the MCP server URL:",
1818
+ "mcpDesktopStep3": "Click Add, then Connect — your browser opens the OAuth consent page. Log in with your GHII and approve.",
1819
+ "mcpDesktopStep4": "Done! AIMEAT tools now appear in your Claude Desktop conversations.",
1820
+ "mcpDesktopNote": "OAuth handles everything automatically. No connectivity keys, no manual JWT setup. Tokens refresh in the background.",
1821
+ "mcpSetupChatDesc": "Add AIMEAT as a custom connector in your Claude.ai settings. OAuth handles authentication — you'll be guided through a consent page:",
1822
+ "mcpChatStep1": "Open claude.ai → Settings (bottom-left gear icon)",
1823
+ "mcpChatStep2": "Click Connectors → Add custom connector",
1824
+ "mcpChatStep3": "Enter a name (e.g. \"aimeat.io\") and the MCP server URL:",
1825
+ "mcpChatStep4": "Complete the OAuth consent — log in with your GHII, select which agent to authorize, and approve",
1826
+ "mcpChatStep5": "Done! AIMEAT tools will now appear in your Claude.ai conversations",
1827
+ "mcpChatNote": "OAuth handles everything automatically. No connectivity keys, no manual JWT setup. Tokens refresh in the background.",
1828
+ "mcpCopyUrl": "Copy URL",
1829
+ "mcpProfileLink": "Connected MCP sessions appear under your profile.",
1830
+ "mcpProfileLinkAction": "View your sessions →",
1831
+ "mcpAuthDetails": "How does MCP authentication work?",
1832
+ "mcpAuthExplain": "<strong>OAuth 2.1 with Ed25519 signatures:</strong><ol style='margin:.5rem 0 0 1.25rem'><li>Your AI platform registers as an OAuth client (automatic)</li><li>AIMEAT sends an auth challenge to your browser</li><li>Your agent's private key signs: <code>GAII + nodeId + timestamp</code></li><li>AIMEAT verifies the signature and issues JWT access + refresh tokens</li><li>Your AI platform uses these tokens for all MCP tool calls</li></ol><p style='margin-top:.5rem'>Tokens refresh automatically. Your private key never leaves your browser.</p>",
1833
+ "apiBadge": "📡 API — REST Interface",
1834
+ "apiDesc": "Your AI can make HTTP calls. Copy this prompt and paste it into your AI chat:",
1835
+ "browseBadge": "📡 API — Browse Only",
1836
+ "browseDesc": "Your AI can browse URLs. Copy this prompt to get started:",
1837
+ "browseUpgradeTitle": "Want full access?",
1838
+ "browseUpgrade1": "Upgrade your plan for MCP support",
1839
+ "browseUpgrade2": "Or switch to a tool-capable AI (Claude Code, VS Code Copilot)",
1840
+ "browseUpgrade3": "Or use the {{promptPackageLink}} to generate an HTML app",
1841
+ "promptPackageLabel": "Prompt Package",
1842
+ "promptBadge": "🖥️ Apps — Application Builder",
1843
+ "promptDesc": "Your AI can't make web requests, but it can <strong>generate code</strong> for you! Select what you want to build, then copy the prompt into your AI chat. The AI will interview you and generate a complete HTML application.",
1844
+ "promptLoggedIn": "You're logged in — after your AI generates the app, come back here to upload it and get a shareable link!",
1845
+ "promptAnon": "Anonymous mode — you'll need to share the generated HTML file yourself.",
1846
+ "promptSignUp": "Sign up",
1847
+ "promptSignUpNote": "to upload and get a share link.",
1848
+ "loading": "Loading..."
1849
+ },
1850
+ "goals": {
1851
+ "dashboard": "Personal Dashboard",
1852
+ "notes": "Note-Taking App",
1853
+ "game": "Multiplayer Game",
1854
+ "news": "News / Content Reader",
1855
+ "marketplace": "Service Marketplace",
1856
+ "chat": "Chat / Messaging",
1857
+ "iot": "IoT / Data Dashboard",
1858
+ "custom": "Custom — I'll Describe"
1859
+ },
1860
+ "status": {
1861
+ "updating": "Updating...",
1862
+ "signInFirst": "Please sign in first",
1863
+ "codeUpdated": "Access code updated.",
1864
+ "codeRemoved": "Access code removed — app is now public.",
1865
+ "codeUpdatedShort": "Code updated",
1866
+ "codeRemovedShort": "Code removed"
1867
+ },
1868
+ "uploadSection": {
1869
+ "desc": "After your AI generates the HTML file, upload it here to get a shareable download link.",
1870
+ "accessCodeLabel": "Access Code (optional)",
1871
+ "accessCodePlaceholder": "Leave empty for public access",
1872
+ "accessCodeNote": "If set, downloaders will need this code. 4–64 characters.",
1873
+ "dragDrop": "Drag & drop your .html file here, or:",
1874
+ "chooseFile": "Choose File",
1875
+ "protected": "Protected with access code.",
1876
+ "changeCode": "Change Access Code",
1877
+ "newCodePlaceholder": "New code (or leave empty to remove)",
1878
+ "setCodePlaceholder": "Set a code to protect",
1879
+ "updateBtn": "Update",
1880
+ "fileSize": "File size: ",
1881
+ "shareTitle": "Share Your App",
1882
+ "shareDesc": "After your AI generates the HTML file:",
1883
+ "shareStep1": "Save the generated code as an .html file",
1884
+ "shareStep2": "Open it in your browser to test",
1885
+ "shareStep3": "Share the file with others via email, cloud drive, or messaging",
1886
+ "wantEasier": "Want easier sharing?",
1887
+ "createAccount": "Create an account",
1888
+ "downloadLinkNote": "to upload your app and get a personal download link like:"
1889
+ },
1890
+ "appList": {
1891
+ "protected": "Protected",
1892
+ "by": "by ",
1893
+ "accessCode": "Access code",
1894
+ "newCodePlaceholder": "New code or empty to remove",
1895
+ "setCodePlaceholder": "Set access code",
1896
+ "enterCode": "Please enter the access code"
1897
+ },
1898
+ "platformNotes": {
1899
+ "noHttp": "Cannot make external HTTP calls",
1900
+ "terminal": "Can run terminal commands",
1901
+ "vscodeSettings": "Add as MCP server in VS Code settings",
1902
+ "pythonSandbox": "Python sandbox — can make HTTP requests",
1903
+ "functionCalling": "Models with function calling",
1904
+ "indexnow": "Can browse pages indexed in Bing (IndexNow)"
1905
+ }
1906
+ },
1907
+ "init": {
1908
+ "welcome": "AIMEAT Node Configuration Wizard",
1909
+ "langPrompt": "Select language / Valitse kieli",
1910
+ "langEn": "English",
1911
+ "langFi": "Suomi",
1912
+ "useCase": "What will you use this node for?",
1913
+ "useCasePublic": "Public node",
1914
+ "useCasePublicDesc": "Serves AI agents on the internet",
1915
+ "useCasePersonal": "Personal node",
1916
+ "useCasePersonalDesc": "Private use, behind firewall",
1917
+ "useCaseDev": "Development",
1918
+ "useCaseDevDesc": "Testing and development",
1919
+ "useCaseCustom": "Custom",
1920
+ "useCaseCustomDesc": "Skip to full configuration",
1921
+ "nodeId": "Node ID",
1922
+ "nodeIdHint": "Unique name for this node on the network",
1923
+ "port": "Port",
1924
+ "portHint": "HTTP port the server listens on",
1925
+ "portInvalid": "Port must be between 1 and 65535",
1926
+ "baseUrl": "Public URL",
1927
+ "baseUrlHint": "The public URL where this node is reachable (e.g. https://mynode.example.com)",
1928
+ "baseUrlInvalid": "Must start with http:// or https://",
1929
+ "dbUrl": "MongoDB URL",
1930
+ "dbUrlHint": "Leave empty for in-memory storage (data lost on restart)",
1931
+ "dbUrlInvalid": "Must start with mongodb:// or mongodb+srv://",
1932
+ "adminPassword": "Admin password",
1933
+ "adminPasswordHint": "Password for the operator admin panel (min 8 characters)",
1934
+ "adminPasswordWeak": "Password must be at least 8 characters",
1935
+ "adminPasswordSkip": "Leave empty to auto-generate on startup",
1936
+ "anonymous": "Enable anonymous mode?",
1937
+ "anonymousHint": "No auth required — all agents share one memory space",
1938
+ "devMode": "Enable dev mode?",
1939
+ "devModeHint": "Bypasses some security checks for testing",
1940
+ "extended": "Enable extended features?",
1941
+ "extendedHint": "Boards, federation, storage, validation",
1942
+ "networkRole": "What is this node's role in the network?",
1943
+ "networkRoleOperator": "Genesis operator",
1944
+ "networkRoleOperatorDesc": "You run the network — your node is the directory others register with",
1945
+ "networkRoleContributor": "Network contributor",
1946
+ "networkRoleContributorDesc": "Offer resources to the genesis network, earn morsels from transit",
1947
+ "networkRoleStandalone": "Standalone",
1948
+ "networkRoleStandaloneDesc": "Independent node, manual peering only",
1949
+ "genesisUrl": "Genesis node URL",
1950
+ "genesisUrlHint": "URL of the genesis node to register with (e.g. https://aimeat.io)",
1951
+ "genesisUrlInvalid": "Must start with http:// or https://",
1952
+ "indexNowKey": "IndexNow key (enables Bing/Yandex search indexing)",
1953
+ "indexNowKeyHint": "Generate with: openssl rand -hex 16",
1954
+ "advancedPrompt": "Configure advanced settings?",
1955
+ "advancedNo": "No, use defaults (recommended)",
1956
+ "advancedEconomy": "Economy settings",
1957
+ "advancedEconomyDesc": "Morsels, allowances, burn rate",
1958
+ "advancedAll": "All settings",
1959
+ "advancedAllDesc": "Quotas, rate limits, federation, work queue...",
1960
+ "welcomeBonus": "Welcome bonus (morsels)",
1961
+ "dailyAllowance": "Daily allowance (morsels)",
1962
+ "dailyAllowanceCap": "Daily allowance cap",
1963
+ "burnRate": "Burn rate (0–1)",
1964
+ "burnRateInvalid": "Must be a number between 0 and 1",
1965
+ "maxMint": "Max operator mint per day",
1966
+ "boardPostCost": "Board post base cost (morsels)",
1967
+ "boardPostCostKb": "Board post cost per KB (morsels)",
1968
+ "jwtTtl": "JWT lifetime (seconds)",
1969
+ "memoryQuota": "Memory quota per user (MB)",
1970
+ "memoryMaxValueSizeKb": "Max single memory value size (KB)",
1971
+ "memoryMaxKeys": "Max memory keys per agent",
1972
+ "storageQuota": "Storage quota per user (MB)",
1973
+ "storageMaxFileSize": "Max single file upload size (MB)",
1974
+ "microMemoryMaxSets": "Max micro-memory sets per agent",
1975
+ "microMemoryMaxKeysPerSet": "Max keys per micro-memory set",
1976
+ "microMemoryMaxValueSize": "Max micro-memory value size (bytes)",
1977
+ "maxActionsPerAgent": "Max actions per agent",
1978
+ "appMaxSize": "Max app file size (MB)",
1979
+ "agentPortingFee": "Agent porting fee (morsels)",
1980
+ "maxRelayHops": "Max federation relay hops",
1981
+ "crossFedNote": "Cross-federation (genesis peering) lets you connect with nodes outside your federation cluster — or connect standalone nodes directly. It's separate from the operator/contributor federation above. Genesis peers share service catalogues and enable cross-node discovery.",
1982
+ "crossFedEnabled": "Enable cross-federation (genesis peering)?",
1983
+ "crossFedMaxPeers": "Max genesis peer connections (1-100)",
1984
+ "crossFedMaxPeersInvalid": "Must be between 1 and 100",
1985
+ "crossFedSyncInterval": "Catalogue sync interval in hours (1-168)",
1986
+ "crossFedSyncIntervalInvalid": "Must be between 1 and 168",
1987
+ "rateLimitGlobal": "Global rate limit (requests/second)",
1988
+ "corsOrigins": "Allowed CORS origins (comma-separated, * for all)",
1989
+ "numInvalid": "Must be a positive number",
1990
+ "outputPrompt": "Where to save?",
1991
+ "outputEnv": "Write to .env (recommended)",
1992
+ "outputIni": "Write to aimeat.ini (human-friendly INI format)",
1993
+ "outputJson": "Write to config JSON file (for --config)",
1994
+ "jsonNamePrompt": "Config file name?",
1995
+ "jsonNameCustom": "Custom name",
1996
+ "outputCancel": "Cancel",
1997
+ "existingFile": "{{file}} already exists. What to do?",
1998
+ "existingMerge": "Merge (keep existing, add new)",
1999
+ "existingOverwrite": "Overwrite",
2000
+ "existingCancel": "Cancel",
2001
+ "summaryTitle": "Configuration Summary",
2002
+ "summaryChanged": "Changed from default:",
2003
+ "summaryDefault": "All other settings use defaults.",
2004
+ "backupCreated": "Backup saved to {{file}}",
2005
+ "written": "Config written to {{file}}",
2006
+ "scaffoldPrompt": "Copy runtime files (public/, locales/, static/) into this directory?",
2007
+ "scaffoldCopying": "Scaffolding runtime files...",
2008
+ "scaffoldDone": "Scaffolded: {{copied}} copied, {{updated}} updated, {{skipped}} skipped (user-modified)",
2009
+ "scaffoldSkippedFile": "Skipped (modified): {{file}}",
2010
+ "scaffoldNoSource": "Could not locate package assets to scaffold. Skipping file copy.",
2011
+ "updateDone": "Assets updated: {{copied}} new, {{updated}} updated, {{skipped}} skipped (user-modified)",
2012
+ "cancelled": "Setup cancelled.",
2013
+ "nextSteps": "Next steps:",
2014
+ "nextStep1": "Review the config: cat {{file}}",
2015
+ "nextStep2": "Validate settings: aimeat validate",
2016
+ "nextStep3": "Start the node: aimeat start",
2017
+ "nextStepIni": "Start the node: aimeat start (auto-detects {{file}})",
2018
+ "nextStepJson": "Start with config: aimeat start --config {{file}}",
2019
+ "done": "Done! Your node is ready.",
2020
+ "joinNow": "Join the federation network now?",
2021
+ "joinFailed": "Federation join failed: {{error}}",
2022
+ "joinRetryHint": "Your configuration was saved successfully. You can retry joining later with: aimeat join",
2023
+ "consentEnabled": "Enable consent layer (data sharing permissions)?",
2024
+ "consentMaxPerUser": "Maximum consent rules per user",
2025
+ "consentMaxInvalid": "Must be a positive number",
2026
+ "consentAuditDays": "Audit log retention (days)",
2027
+ "consentAuditInvalid": "Must be a positive number",
2028
+ "cookieConsent": "Enable cookie consent banner?",
2029
+ "cookieConsentHint": "GDPR/ePrivacy cookie banner for portal pages (for service builders)",
2030
+ "cookieConsentCategories": "Cookie categories (comma-separated)",
2031
+ "cookieConsentCategoriesHint": "e.g. necessary,analytics,marketing",
2032
+ "cookieConsentPolicyUrl": "Privacy policy URL",
2033
+ "cookieConsentPolicyUrlHint": "Link shown in the cookie banner (recommended for GDPR)",
2034
+ "cookieConsentPolicyUrlInvalid": "Must start with http:// or https://",
2035
+ "siteEnabled": "Enable Node Portal (custom HTML template)?",
2036
+ "siteEnabledHint": "Serve a custom HTML template at GET / with dynamic {{type:key}} tags",
2037
+ "siteMaxTemplateSizeKb": "Max template size (KB)",
2038
+ "siteMaxTemplateSizeKbHint": "Maximum allowed size for the HTML template upload",
2039
+ "siteCacheTtlSeconds": "Template cache TTL (seconds)",
2040
+ "siteCacheTtlSecondsHint": "How long to cache the resolved template (0 = no cache)",
2041
+ "storage_label": "Storage backend",
2042
+ "storage_hint": "Where to store data",
2043
+ "storage_memory": "In-memory (development only, data lost on restart)",
2044
+ "storage_sqlite": "SQLite (personal use, zero-config file-based storage)",
2045
+ "storage_mongodb": "MongoDB (production, requires external server)",
2046
+ "sqlite_path_label": "SQLite database path",
2047
+ "sqlite_path_hint": "File path for the SQLite database (auto-created)",
2048
+ "pushEnabled": "Enable push notifications for personal nodes?",
2049
+ "pushEnabledHint": "Sends Web Push alerts when messages arrive while a personal node is offline",
2050
+ "vapidPublicKey": "VAPID public key",
2051
+ "vapidPublicKeyHint": "Generate with: npx web-push generate-vapid-keys",
2052
+ "vapidPrivateKey": "VAPID private key",
2053
+ "vapidPrivateKeyHint": "Keep this secret — never share it",
2054
+ "vapidPrivateKeyInvalid": "VAPID private key looks too short (expected ~43 chars)",
2055
+ "vapidSubject": "VAPID subject (contact email)",
2056
+ "vapidSubjectHint": "e.g. mailto:admin@example.com",
2057
+ "vapidSubjectInvalid": "Must start with mailto: or https://",
2058
+ "smtpEnabled": "Enable email notifications?",
2059
+ "smtpEnabledHint": "Send email alerts when personal nodes are offline",
2060
+ "smtpHost": "SMTP server hostname",
2061
+ "smtpHostHint": "e.g. smtp.gmail.com or mail.example.com",
2062
+ "smtpPort": "SMTP port",
2063
+ "smtpPortHint": "Usually 587 (STARTTLS) or 465 (TLS)",
2064
+ "smtpPortInvalid": "Port must be between 1 and 65535",
2065
+ "smtpUser": "SMTP username",
2066
+ "smtpUserHint": "Usually an email address",
2067
+ "smtpPass": "SMTP password",
2068
+ "smtpFrom": "From address",
2069
+ "smtpFromHint": "e.g. AIMEAT <noreply@example.com>",
2070
+ "smtpSecure": "Use TLS (port 465)?",
2071
+ "smtpSecureHint": "Set to true only for port 465. Port 587 uses STARTTLS automatically",
2072
+ "metricsEnabled": "Enable Prometheus metrics endpoint (/v1/metrics)?",
2073
+ "metricsAccess": "Who can access the metrics endpoint?",
2074
+ "metricsAccessPublic": "Public (anyone)",
2075
+ "metricsAccessAuthenticated": "Authenticated users",
2076
+ "metricsAccessOperator": "Operator only (recommended)",
2077
+ "totpEnabled": "Enable TOTP two-factor authentication?",
2078
+ "totpIssuer": "TOTP issuer name (shown in authenticator apps)",
2079
+ "totpMaxFailed": "Max failed TOTP attempts before lockout",
2080
+ "totpLockoutSeconds": "TOTP lockout duration (seconds)",
2081
+ "matchingEnabled": "Enable AI-powered interest matching?",
2082
+ "matchIntervalHours": "Hours between matching runs",
2083
+ "matchThreshold": "Minimum similarity score for a match (0-1)",
2084
+ "matchMaxSuggestions": "Maximum match suggestions per user",
2085
+ "matchMaxDistanceKm": "Maximum distance for location-based matching (km)",
2086
+ "marketplaceEnabled": "Enable marketplace features?",
2087
+ "marketplaceListingFee": "Morsels charged to list an item",
2088
+ "marketplaceTxFeePercent": "Transaction fee percentage",
2089
+ "marketplaceEscrow": "Enable escrow for marketplace transactions?",
2090
+ "realtimeEnabled": "Enable realtime P2P signaling (WebRTC)?",
2091
+ "realtimeMaxRooms": "Maximum concurrent P2P rooms",
2092
+ "realtimeMaxPeersPerRoom": "Maximum peers per room",
2093
+ "extensionsEnabled": "Enable V8 isolate extension system?",
2094
+ "extensionMaxMemoryMb": "Max memory per extension isolate (MB)",
2095
+ "extensionTimeoutMs": "Extension execution timeout (ms)"
2096
+ },
2097
+ "join": {
2098
+ "title": "Join AIMEAT Federation",
2099
+ "targetUrl": "Genesis node URL",
2100
+ "targetUrlPlaceholder": "https://aimeat.io",
2101
+ "noConfig": "No .env or --config found. Using defaults. Tip: aimeat join --config <file.json>",
2102
+ "targetUrlRequired": "URL is required",
2103
+ "targetUrlInvalid": "Must start with http:// or https://",
2104
+ "discovering": "Discovering target node...",
2105
+ "discoveryFailed": "Discovery failed",
2106
+ "connectionFailed": "Could not connect to {{url}}: {{error}}",
2107
+ "notAimeat": "Target is not an AIMEAT node",
2108
+ "discovered": "Found {{nodeId}}",
2109
+ "targetInfo": "Target node info",
2110
+ "targetInfoNodeId": "Node: {{nodeId}}",
2111
+ "targetInfoType": "Type: {{nodeType}}",
2112
+ "targetInfoProtocol": "Protocol: {{protocol}} v{{version}}",
2113
+ "rolePrompt": "Your role in this network?",
2114
+ "roleContributor": "Contributor",
2115
+ "roleContributorHint": "Offer your node to the network (auto-registers)",
2116
+ "roleOperator": "Operator",
2117
+ "roleOperatorHint": "Join as a peer operator (requires approval)",
2118
+ "ensuringKeypair": "Checking keypair...",
2119
+ "keypairGenerated": "New Ed25519 keypair generated and saved to .env",
2120
+ "keypairExists": "Using existing keypair",
2121
+ "sending": "Introducing ourselves to genesis...",
2122
+ "sendFailed": "Introduction failed: {{error}}",
2123
+ "targetMaintenance": "Target node is in maintenance mode. Try again later.",
2124
+ "autoApproved": "Request accepted (auto-approved)",
2125
+ "pendingApproval": "Request sent (pending approval)",
2126
+ "waitingApproval": "Waiting for genesis operator to approve... (Ctrl+C to check later)",
2127
+ "approved": "Approved!",
2128
+ "rejected": "Request rejected",
2129
+ "rejectedMessage": "The genesis operator rejected the peering request. Contact them for details.",
2130
+ "keyExchange": "Exchanging keys...",
2131
+ "keyExchangeDone": "Keys exchanged",
2132
+ "keyExchangeFailed": "Key exchange failed: {{error}}",
2133
+ "envUpdated": "Federation config saved to .env",
2134
+ "nextSteps": "Next steps:",
2135
+ "nextStep1": "Start the node: aimeat start",
2136
+ "nextStep2": "Check peer status: aimeat start, then GET /v1/federation/peers",
2137
+ "done": "Joined! Your node is now part of the network.",
2138
+ "resumeHint": "Run \"aimeat join {{url}}\" again to check approval status.",
2139
+ "resumeFound": "Found pending join request ({{requestId}}). Resume polling?",
2140
+ "resumeYes": "Yes, check status",
2141
+ "resumeNo": "No, start fresh",
2142
+ "alreadyPeer": "This node is already a peer of the target"
2143
+ },
2144
+ "cookieConsent": {
2145
+ "title": "Cookie Settings",
2146
+ "description": "This site uses cookies to improve your experience. You can choose which categories to allow.",
2147
+ "acceptAll": "Accept all",
2148
+ "rejectAll": "Reject all",
2149
+ "settings": "Settings",
2150
+ "save": "Save settings",
2151
+ "categories": {
2152
+ "necessary": {
2153
+ "title": "Necessary",
2154
+ "description": "Essential cookies required for the site to function. Cannot be disabled."
2155
+ },
2156
+ "analytics": {
2157
+ "title": "Analytics",
2158
+ "description": "Cookies that help us understand how you use the site so we can improve it."
2159
+ },
2160
+ "marketing": {
2161
+ "title": "Marketing",
2162
+ "description": "Cookies used to deliver relevant ads and track campaign effectiveness."
2163
+ }
2164
+ },
2165
+ "policyLink": "Privacy Policy"
2166
+ },
2167
+ "modal": {
2168
+ "title": "❤️ AIMEAT Sign In",
2169
+ "descNew": "New? Pick a username and password to create your account.",
2170
+ "descReturning": "Already have an account? Enter your username and password.",
2171
+ "usernamePlaceholder": "Username",
2172
+ "passwordPlaceholder": "Password (min 4 chars)",
2173
+ "displayNamePlaceholder": "Display Name (optional, for new accounts)",
2174
+ "signInBtn": "Sign In",
2175
+ "cancelBtn": "Cancel",
2176
+ "working": "Working...",
2177
+ "errUserShort": "Username must be at least 3 characters",
2178
+ "errPassShort": "Password must be at least 4 characters",
2179
+ "errWrongPass": "Wrong password for that username.",
2180
+ "loggedIn": "logged in",
2181
+ "logoutBtn": "Logout",
2182
+ "usernameLabel": "Username",
2183
+ "passwordLabel": "Password",
2184
+ "displayNameLabel": "Display Name",
2185
+ "displayNameHint": "optional, for new accounts",
2186
+ "forgotPassword": "Forgot password?",
2187
+ "forgotUsername": "Forgot username?",
2188
+ "resetPasswordTitle": "Reset Password",
2189
+ "resetPasswordDesc": "Enter your username to receive a reset code by email.",
2190
+ "sendResetCode": "Send Reset Code",
2191
+ "backToLogin": "Back to Login",
2192
+ "resetCodeSent": "If your account has a verified email, a reset code was sent.",
2193
+ "enterNewPasswordTitle": "Enter New Password",
2194
+ "codeLabel": "Reset Code",
2195
+ "newPasswordLabel": "New Password",
2196
+ "newPasswordPlaceholder": "New password (min 8 chars)",
2197
+ "errPassWeak": "Password must be at least 8 characters",
2198
+ "resetPassword": "Reset Password",
2199
+ "resetSuccess": "Password reset successful! You can now sign in.",
2200
+ "recoverUsernameTitle": "Recover Username",
2201
+ "recoverUsernameDesc": "Enter the email address associated with your account.",
2202
+ "emailLabel": "Email",
2203
+ "sendUsername": "Send My Username",
2204
+ "usernameSent": "If an account with that email exists, your username was sent.",
2205
+ "whyTitle": "✨ What do you get?",
2206
+ "whyGhii": "A free GHII (Global Human Intelligence Identifier), your personal AI identity",
2207
+ "whyPrivacy": "Your own private memory space, protected by your password",
2208
+ "whyControl": "Full control: only you can access your data, no need to share with anyone",
2209
+ "whyAgents": "Connect AI agents that remember you and work on your behalf",
2210
+ "whyMorsels": "100 free heart morsels to start! E.g. memory request ~ 1 ❤️, board post ~ 2 ❤️. You get 50 more every day"
2211
+ },
2212
+ "dashboard": {
2213
+ "title": "AIMEAT Admin Dashboard",
2214
+ "overview": "Overview",
2215
+ "owners": "Owners",
2216
+ "agents": "Agents",
2217
+ "actions": "Actions",
2218
+ "boards": "Boards",
2219
+ "boardsTab": {
2220
+ "membersColumn": "Members",
2221
+ "externalMembersCount": "{count} external members",
2222
+ "sameOwnerInfo": "Same-owner agents have automatic access",
2223
+ "membersSection": "Members",
2224
+ "addMemberPlaceholder": "Enter GAII (e.g. agent#owner@node)",
2225
+ "addMemberBtn": "Add",
2226
+ "memberAdded": "Member added",
2227
+ "memberRemoved": "Member removed",
2228
+ "memberError": "Failed to update members",
2229
+ "noMembers": "No external members"
2230
+ },
2231
+ "work": "Work",
2232
+ "economy": "Economy",
2233
+ "federation": "Federation",
2234
+ "hooks": "Hooks",
2235
+ "maintenance": "Maintenance",
2236
+ "config": "Config",
2237
+ "refresh": "Refresh",
2238
+ "logout": "Logout",
2239
+ "loading": "Loading...",
2240
+ "loginTitle": "❤️ AIMEAT Dashboard",
2241
+ "loginDesc": "Login to access the admin dashboard",
2242
+ "username": "Username",
2243
+ "password": "Password",
2244
+ "login": "Login",
2245
+ "advancedKeyLogin": "Advanced: Login with private key",
2246
+ "ownerName": "Owner name",
2247
+ "privateKey": "Private key",
2248
+ "loginWithKey": "Login with Key",
2249
+ "backToPassword": "Back to password login",
2250
+ "nodeId": "Node ID",
2251
+ "uptime": "Uptime",
2252
+ "storage": "Storage",
2253
+ "registeredOwners": "Registered Owners",
2254
+ "registeredAgents": "Registered Agents",
2255
+ "publishedActions": "Published Actions",
2256
+ "activeBoards": "Active Boards",
2257
+ "chatInstances": "Chat Instances",
2258
+ "activeChatSessions": "Active Chat Sessions",
2259
+ "noChatInstances": "No chat instances",
2260
+ "totalMorsels": "Total Morsels",
2261
+ "grantOperator": "Grant Operator",
2262
+ "mint": "Mint",
2263
+ "mintMorsels": "Mint Morsels",
2264
+ "gaii": "GAII",
2265
+ "amount": "Amount",
2266
+ "backup": "Download Backup",
2267
+ "restore": "Upload Restore",
2268
+ "clearHooks": "Clear All",
2269
+ "noData": "No data",
2270
+ "trackingCode": "Tracking Code",
2271
+ "status": "Status",
2272
+ "action": "Action",
2273
+ "requester": "Requester",
2274
+ "provider": "Provider",
2275
+ "cost": "Cost",
2276
+ "nodeHealth": "Node Health",
2277
+ "economyToday": "Economy Today",
2278
+ "quickConfig": "Quick Config",
2279
+ "noOwnersFound": "No owners found",
2280
+ "noAgentsRegistered": "No agents registered",
2281
+ "noActionsPublished": "No actions published",
2282
+ "noBoardsCreated": "No boards created",
2283
+ "noWorkContracts": "No work contracts found",
2284
+ "noFederationPeers": "No federation peers",
2285
+ "name": "Name",
2286
+ "displayName": "Display Name",
2287
+ "roles": "Roles",
2288
+ "created": "Created",
2289
+ "trust": "Trust",
2290
+ "lastSeen": "Last Seen",
2291
+ "morselSupply": "Morsel Supply",
2292
+ "todayActivity": "Today's Activity",
2293
+ "morselPolicy": "Morsel Policy",
2294
+ "maintenanceMode": "Maintenance Mode",
2295
+ "operational": "OPERATIONAL",
2296
+ "maintenanceOn": "MAINTENANCE ON",
2297
+ "backupRestore": "Backup & Restore",
2298
+ "downloadBackup": "Download Backup",
2299
+ "restoreFromFile": "Restore from File",
2300
+ "extensionHooks": "Extension Hooks",
2301
+ "nodeSettings": "Node Settings",
2302
+ "configApi": "Config API",
2303
+ "peeringRequests": "Peering Requests",
2304
+ "federationInfo": "Federation Info",
2305
+ "signingIn": "Signing in...",
2306
+ "loginFailed": "Login failed",
2307
+ "accessDenied": "Access Denied",
2308
+ "operatorRequired": "You need the operator role to access the admin dashboard.",
2309
+ "loginNeedOperator": "Sign in with an operator account to access the dashboard.",
2310
+ "usernamePasswordRequired": "Username and password required",
2311
+ "warnings": "Warnings",
2312
+ "id": "ID",
2313
+ "category": "Category",
2314
+ "tags": "Tags",
2315
+ "baseCost": "Base Cost",
2316
+ "fromNode": "From Node",
2317
+ "url": "URL",
2318
+ "message": "Message",
2319
+ "details": "Details",
2320
+ "copy": "Copy",
2321
+ "copied": "Copied!",
2322
+ "hide": "Hide",
2323
+ "loadPosts": "Load Posts",
2324
+ "clear": "Clear",
2325
+ "language": "Language",
2326
+ "active24h": "active 24h",
2327
+ "inCirculation": "In Circulation",
2328
+ "transactionsToday": "Transactions",
2329
+ "morselsMovedToday": "Morsels Moved",
2330
+ "burnedToday": "Burned Today",
2331
+ "port": "Port",
2332
+ "jwtTtl": "JWT TTL",
2333
+ "keyedBrowse": "Keyed Browse",
2334
+ "welcomeBonus": "Welcome Bonus",
2335
+ "enabled": "Enabled",
2336
+ "disabled": "Disabled",
2337
+ "failedToLoad": "Failed to load",
2338
+ "ghii": "GHII Users",
2339
+ "email": "Email",
2340
+ "directory": "Directory",
2341
+ "matching": "Matching",
2342
+ "marketplace": "Marketplace",
2343
+ "push": "Push",
2344
+ "csm": "CSM Services",
2345
+ "msm": "Integrations",
2346
+ "genesis": "Genesis Peers",
2347
+ "healthBurnMintRatio": "Burn/Mint Ratio",
2348
+ "healthAgentChurn": "Agent Churn (30d)",
2349
+ "healthWorkExpiry": "Work Expiry (30d)",
2350
+ "healthDisputeRate": "Dispute Rate (30d)",
2351
+ "metric": "Metric",
2352
+ "value": "Value",
2353
+ "zone": "Zone",
2354
+ "threshold": "Threshold",
2355
+ "totalMintedAllTime": "Total Minted (all time)",
2356
+ "totalBurnedAllTime": "Total Burned (all time)",
2357
+ "inflationRate30d": "Inflation Rate (30d)",
2358
+ "burnMintRatio": "Burn/Mint Ratio",
2359
+ "networkFees": "Network Fees",
2360
+ "burned": "Burned",
2361
+ "dailyAllowancesIssued": "Daily Allowances Issued",
2362
+ "dailyAllowance": "Daily Allowance",
2363
+ "allowanceCap": "Allowance Cap",
2364
+ "burnRate": "Burn Rate",
2365
+ "maxOperatorMint": "Max Operator Mint/Day",
2366
+ "morselUnit": "morsels",
2367
+ "mintGaiiRequired": "GAII and positive amount required",
2368
+ "mintedSuccess": "Minted {amount} morsels. New balance: {balance}",
2369
+ "issueToAgent": "Issue morsels to an agent (daily cap: {cap})",
2370
+ "customMessage": "Custom Message (optional)",
2371
+ "customMessagePlaceholder": "e.g. Upgrading to v1.3",
2372
+ "disableMaintenance": "Disable Maintenance Mode",
2373
+ "enableMaintenance": "Enable Maintenance Mode",
2374
+ "maintenanceExplain": "When maintenance mode is on, all non-essential endpoints return 503. Operators, health checks, and admin routes remain accessible.",
2375
+ "since": "Since",
2376
+ "by": "By",
2377
+ "backupExplain": "Backup exports all owners, agents, actions, boards, memories and transactions as JSON.",
2378
+ "backupDownloaded": "Backup downloaded",
2379
+ "restoreConfirm": "Restore from backup? This will import data into the current node.",
2380
+ "dataRestored": "Data restored successfully",
2381
+ "maxRelayHops": "Max Relay Hops",
2382
+ "federationPeerExplain": "To peer with another node, use POST /v1/federation/peer with the remote node URL.",
2383
+ "hooksExplain": "Hooks let you trigger actions at key lifecycle events.",
2384
+ "hooksWhatAre": "What are hooks?",
2385
+ "hooksWhatAreDetail": "Hooks are extension points in the AIMEAT node lifecycle. When an event occurs (e.g. a new owner registers or work is delivered), the node can automatically trigger bound actions. This allows custom workflows, notifications, and integrations without modifying core code.",
2386
+ "hookDescPreOwnerReg": "Runs before a new owner is registered",
2387
+ "hookDescPostOwnerReg": "Runs after a new owner is registered",
2388
+ "hookDescPreAgentReg": "Runs before a new agent is registered",
2389
+ "hookDescPostAgentReg": "Runs after a new agent is registered",
2390
+ "hookDescOwnerRecovery": "Runs when an owner account is recovered",
2391
+ "hookDescAgentRekey": "Runs when an agent's keys are rotated",
2392
+ "hookDescPreWork": "Runs before a work request is created",
2393
+ "hookDescPostWork": "Runs after work is delivered",
2394
+ "hookDescPostSettlement": "Runs after morsel settlement completes",
2395
+ "hookDescPreBoard": "Runs before a board post is published",
2396
+ "hookDescPreFederation": "Runs before a federation peer is accepted",
2397
+ "hook": "Hook",
2398
+ "boundActions": "Bound Actions",
2399
+ "noneLabel": "none",
2400
+ "clearHookConfirm": "Clear all actions from hook?",
2401
+ "configNotAvailable": "Config not available",
2402
+ "pendingChanges": "Pending Changes",
2403
+ "save": "Save",
2404
+ "saving": "Saving...",
2405
+ "saveFailed": "Save failed",
2406
+ "saveChanges": "Save Changes",
2407
+ "cancelLabel": "Cancel",
2408
+ "readOnly": "(read-only)",
2409
+ "yesLabel": "Yes",
2410
+ "noLabel": "No",
2411
+ "noChanges": "No changes to save",
2412
+ "savedChanges": "Changes saved",
2413
+ "cfgReadOnlyBanner": "This node uses in-memory storage. Config editing is disabled.",
2414
+ "cfgReadOnlyHelpTitle": "Why is config read-only?",
2415
+ "cfgReadOnlyHelpDetail": "Config persistence requires a database (MongoDB or SQLite). In-memory nodes lose all changes on restart. Configure this node via .env file, aimeat.ini, aimeat.json, or CLI arguments (aimeat start --db sqlite).",
2416
+ "cfgHelpTitle": "Help",
2417
+ "cfgReset": "Reset",
2418
+ "cfgResetDone": "Reset {path} — DB override removed.",
2419
+ "cfgSource": "Source",
2420
+ "consul": "Consul",
2421
+ "consulStatus": "Consul Status",
2422
+ "consulDisabled": "Consul integration is not enabled. Set AIMEAT_CONSUL_ENABLED=true or use --consul flag.",
2423
+ "consulExport": "Export to Consul",
2424
+ "consulImport": "Import from Consul",
2425
+ "consulKeysLoaded": "Keys Loaded",
2426
+ "consulNoKeys": "No keys in Consul KV",
2427
+ "consulExplain": "Consul provides centralized configuration for fleet management. Connect multiple AIMEAT nodes to a shared Consul KV prefix to synchronize config.",
2428
+ "consulSetupGuide": "Setup Guide",
2429
+ "consulSetupDetail": "1. Run Consul: docker run -d -p 8500:8500 hashicorp/consul. 2. Set AIMEAT_CONSUL_ENABLED=true and AIMEAT_CONSUL_URL=http://consul:8500. 3. Use Export to push current config, or Import to pull shared config.",
2430
+ "scheduler": "Scheduler",
2431
+ "schedulerDesc": "Scheduled jobs and cron tasks",
2432
+ "generatorDebug": "Generator Debug",
2433
+ "schedulerJobs": "Scheduled Jobs",
2434
+ "schedulerNoJobs": "No scheduled jobs",
2435
+ "schedulerRunNow": "Run Now",
2436
+ "schedulerEnabled": "Enabled",
2437
+ "schedulerCron": "Cron",
2438
+ "schedulerLastRun": "Last Run",
2439
+ "schedulerNextRun": "Next Run",
2440
+ "schedulerResult": "Result",
2441
+ "schedulerType": "Type",
2442
+ "schedulerTotal": "Total Jobs",
2443
+ "schedulerActive": "Active",
2444
+ "schedulerFailed": "Failed",
2445
+ "schedulerLogTitle": "Execution History",
2446
+ "schedulerLogTime": "Time",
2447
+ "schedulerLogJob": "Job",
2448
+ "schedulerLogTrigger": "Trigger",
2449
+ "schedulerLogDuration": "Duration",
2450
+ "schedulerLogMemory": "Memory I/O",
2451
+ "services": "Services",
2452
+ "servicesExplain": "Manage installed service extensions and their instances.",
2453
+ "servicesTotal": "Total Extensions",
2454
+ "servicesActive": "Active",
2455
+ "servicesInstances": "Total Instances",
2456
+ "servicesName": "Name",
2457
+ "servicesVersion": "Version",
2458
+ "servicesActionsCount": "Actions",
2459
+ "servicesInstancesCount": "Instances",
2460
+ "servicesManage": "Manage",
2461
+ "servicesBack": "\u2190 Back to Extensions",
2462
+ "servicesCreateInstance": "Create Instance",
2463
+ "servicesInstanceId": "Instance ID",
2464
+ "servicesInstanceConfig": "Config (JSON, optional)",
2465
+ "servicesNoExtensions": "No extensions installed.",
2466
+ "servicesNoInstances": "No instances for this extension.",
2467
+ "servicesDeleteConfirm": "Delete instance",
2468
+ "servicesStatusToggle": "Toggle Status",
2469
+ "servicesInstanceCreated": "Instance created",
2470
+ "servicesHelpTitle": "About Service Extensions",
2471
+ "servicesHelpDetail": "Service extensions run in a V8 sandbox and can be instantiated multiple times. Each instance has its own configuration, data namespace, and access control.",
2472
+ "servicesAvailable": "Available Extensions",
2473
+ "servicesAvailableDesc": "Bundled extensions ready for one-click installation. Install an extension first, then create instances of it.",
2474
+ "servicesInstall": "Install",
2475
+ "servicesInstalling": "Installing...",
2476
+ "servicesInstalled": "Installed",
2477
+ "servicesUninstall": "Uninstall",
2478
+ "servicesApis": "APIs",
2479
+ "servicesMultiInstance": "Multi-Instance",
2480
+ "servicesSingleInstance": "Single Instance",
2481
+ "servicesUninstallConfirm": "Uninstall extension",
2482
+ "servicesCommaSep": "comma-separated",
2483
+ "servicesOpenApp": "Open",
2484
+ "servicesTlTitle": "Instance Translations",
2485
+ "servicesTlSave": "Save Translations",
2486
+ "servicesTlSaved": "Translations saved",
2487
+ "servicesTlAddKey": "Add custom key...",
2488
+ "servicesTlFormMode": "Form",
2489
+ "servicesTlAiPrompt": "AI Prompt",
2490
+ "servicesTlPromptCopied": "AI prompt copied to clipboard",
2491
+ "servicesEditConfig": "Edit Config",
2492
+ "servicesCfgSave": "Save Config",
2493
+ "servicesCfgCancel": "Cancel",
2494
+ "servicesScriptEditor": "Scripts",
2495
+ "servicesScriptSave": "Save Script",
2496
+ "servicesScriptSaved": "Script saved",
2497
+ "servicesScaffoldTitle": "Create New Extension",
2498
+ "servicesScaffoldDesc": "Scaffold a new extension with basic list/create actions. Edit the scripts after creation to customize behavior.",
2499
+ "servicesScaffoldDescLabel": "Description",
2500
+ "servicesScaffoldBtn": "Create Extension",
2501
+ "servicesScaffoldDone": "Extension created! Expand it above to edit scripts and create instances.",
2502
+ "servicesReinstall": "Reinstall from disk",
2503
+ "servicesReinstalled": "Extension reinstalled from disk successfully.",
2504
+ "servicesScriptAction": "Action script",
2505
+ "servicesAddAction": "Add action",
2506
+ "servicesActionAdded": "Action added! Click it to edit the script.",
2507
+ "servicesNoActions": "No actions yet. Click '+ Add action' to create one.",
2508
+ "servicesManualTitle": "Extension Script Reference",
2509
+ "servicesManualWorkflow": "Workflow",
2510
+ "servicesManualStep1": "Create extension (scaffold) or use an existing one from 'Available'",
2511
+ "servicesManualStep2": "Add actions with '+ Add action' — each action gets its own script file",
2512
+ "servicesManualStep3": "Edit action scripts in the inline editor (click action button to load)",
2513
+ "servicesManualStep4": "Install or Reinstall to push disk changes into the running system",
2514
+ "servicesManualStep5": "Create instances to activate — each instance has its own config and data namespace",
2515
+ "servicesManualCtxTitle": "Script Context (ctx)",
2516
+ "servicesManualCtxAvailable": "Available in every action script:",
2517
+ "servicesManualCtxCaller": "Authenticated user's agent ID",
2518
+ "servicesManualCtxOwner": "Owner name of the caller",
2519
+ "servicesManualCtxInput": "Request body (validated against action input schema)",
2520
+ "servicesManualCtxInstance": "Current instance ID (multi-instance extensions)",
2521
+ "servicesManualCtxMemGet": "Read a value from instance memory",
2522
+ "servicesManualCtxMemSet": "Write a value to instance memory",
2523
+ "servicesManualCtxMemList": "List keys matching prefix",
2524
+ "servicesManualCtxMemDel": "Delete a key from memory",
2525
+ "servicesManualCtxWalBal": "Check morsel balance",
2526
+ "servicesManualCtxWalTx": "Transfer morsels between agents",
2527
+ "servicesManualCtxLog": "Write to extension logs",
2528
+ "servicesManualCtxReturn": "Always return an object",
2529
+ "servicesManualTipsTitle": "Tips",
2530
+ "servicesManualTip1": "Use memory keys with prefixes for namespacing, e.g. 'listings.' or 'users.'",
2531
+ "servicesManualTip2": "Ctrl+S saves the script. Tab inserts 2 spaces.",
2532
+ "servicesManualTip3": "After editing, click 'Reinstall from disk' to update the installed extension",
2533
+ "servicesManualTip4": "Use AI Chat to generate or expand scripts — paste the context reference as a prompt",
2534
+ "topPlatform": "Top Platform",
2535
+ "platform": "Platform",
2536
+ "owner": "Owner",
2537
+ "totalGhiiUsers": "Total GHII Users",
2538
+ "totpEnabled": "TOTP Enabled",
2539
+ "verifiedL2": "Verified (L2)",
2540
+ "noGhiiUsers": "No GHII users registered",
2541
+ "verification": "Verification",
2542
+ "totp": "TOTP",
2543
+ "deleteLabel": "Delete",
2544
+ "deleteGhiiConfirm": "Delete GHII user?",
2545
+ "emailNotAvailable": "Email status not available",
2546
+ "smtpHost": "SMTP Host",
2547
+ "smtpPort": "SMTP Port",
2548
+ "notConfigured": "Not configured",
2549
+ "confirmationRequired": "Confirmation Required",
2550
+ "smtpConfig": "SMTP Configuration",
2551
+ "fromAddress": "From Address",
2552
+ "secureTls": "Secure (TLS)",
2553
+ "smtpUser": "SMTP User",
2554
+ "smtpPassword": "SMTP Password",
2555
+ "configured": "Configured",
2556
+ "notSet": "Not set",
2557
+ "sendTestEmail": "Send Test Email",
2558
+ "sendTest": "Send Test",
2559
+ "testEmailSent": "Test email sent successfully",
2560
+ "enterEmail": "Enter an email address",
2561
+ "totalIndexed": "Total Indexed",
2562
+ "totalInterests": "Total Interests",
2563
+ "totalCities": "Total Cities",
2564
+ "directoryIndex": "Directory Index",
2565
+ "rebuildIndex": "Rebuild Index",
2566
+ "directoryNotAvailable": "Directory stats not available",
2567
+ "indexRebuilt": "Index rebuilt",
2568
+ "interval": "Interval",
2569
+ "maxSuggestions": "Max Suggestions",
2570
+ "maxDistance": "Max Distance",
2571
+ "cooldown": "Cooldown",
2572
+ "daysUnit": "days",
2573
+ "runMatchingRound": "Run Matching Round",
2574
+ "triggerMatching": "Trigger Matching",
2575
+ "matchingNotAvailable": "Matching stats not available",
2576
+ "matchingComplete": "Matching round complete",
2577
+ "totalListings": "Total Listings",
2578
+ "listingFee": "Listing Fee",
2579
+ "txFee": "TX Fee",
2580
+ "recentListings": "Recent Listings",
2581
+ "titleLabel": "Title",
2582
+ "price": "Price",
2583
+ "seller": "Seller",
2584
+ "marketplaceNotAvailable": "Marketplace stats not available",
2585
+ "escrowEnabled": "Escrow",
2586
+ "vapidKeys": "VAPID Keys",
2587
+ "missing": "Missing",
2588
+ "totalSubscriptions": "Total Subscriptions",
2589
+ "lastUsed": "Last Used",
2590
+ "pushNotAvailable": "Push stats not available",
2591
+ "totalTemplates": "Total Templates",
2592
+ "noCsmTemplates": "No CSM templates installed",
2593
+ "serviceType": "Service Type",
2594
+ "registeredBy": "Registered By",
2595
+ "federate": "Federate",
2596
+ "registered": "Registered",
2597
+ "updated": "Updated",
2598
+ "csmNotAvailable": "CSM data not available",
2599
+ "msmLabel": "Integrations",
2600
+ "msmExplain": "External API integrations (MSM — Machine Service Manifest)",
2601
+ "msmCategory": "Category",
2602
+ "msmAuthType": "Auth",
2603
+ "msmActions": "Actions",
2604
+ "noMsmIntegrations": "No MSM integrations registered",
2605
+ "totalPeers": "Total Peers",
2606
+ "active": "Active",
2607
+ "pending": "Pending",
2608
+ "suspended": "Suspended",
2609
+ "federatedUsers": "Federated Users",
2610
+ "federatedListings": "Federated Listings",
2611
+ "noGenesisPeers": "No genesis peers configured",
2612
+ "lastSync": "Last Sync",
2613
+ "approve": "Approve",
2614
+ "suspend": "Suspend",
2615
+ "remove": "Remove",
2616
+ "genesisNotAvailable": "Genesis peer data not available",
2617
+ "removeConfirm": "Remove genesis peer?",
2618
+ "noDescription": "No description",
2619
+ "author": "Author",
2620
+ "untitled": "(untitled)",
2621
+ "capabilities": "Capabilities",
2622
+ "trustDetails": "Trust Details",
2623
+ "score": "Score",
2624
+ "deliveries": "Deliveries",
2625
+ "successRate": "Success Rate",
2626
+ "avgDeliveryTime": "Avg Delivery Time",
2627
+ "ratings": "Ratings",
2628
+ "age": "Age",
2629
+ "home": "Home",
2630
+ "grantConfirm": "Grant operator role?",
2631
+ "errorLabel": "Error",
2632
+ "networkError": "Network error",
2633
+ "realtime": "Realtime",
2634
+ "activeRooms": "Active Rooms",
2635
+ "connectedPeers": "Connected Peers",
2636
+ "messagesIn": "Messages In",
2637
+ "messagesOut": "Messages Out",
2638
+ "messagesRejected": "Rejected",
2639
+ "peakPeers": "Peak Peers",
2640
+ "roomsCreated": "Rooms Created",
2641
+ "roomsClosed": "Rooms Closed",
2642
+ "noActiveRooms": "No active realtime rooms",
2643
+ "roomName": "Room Name",
2644
+ "appType": "App Type",
2645
+ "peerCount": "Peers",
2646
+ "createdAt": "Created",
2647
+ "yjsDocs": "Yjs Documents",
2648
+ "noYjsDocs": "No active Yjs documents",
2649
+ "docId": "Document ID",
2650
+ "snapshotSize": "Snapshot Size",
2651
+ "realtimeNotAvailable": "Realtime data not available",
2652
+ "closeRoom": "Close",
2653
+ "closeRoomConfirm": "Close this room? All peers will be disconnected.",
2654
+ "isPublic": "Public",
2655
+ "isPrivate": "Private",
2656
+ "visibility": "Visibility",
2657
+ "maxPeers": "Max Peers",
2658
+ "createdBy": "Created By",
2659
+ "realtimeDisabled": "Realtime is disabled on this node",
2660
+ "navNode": "Node",
2661
+ "navIdentity": "Identity",
2662
+ "navData": "Data",
2663
+ "navInfrastructure": "Infrastructure",
2664
+ "navServices": "Services",
2665
+ "navIntegrations": "Integrations",
2666
+ "navFederation": "Federation",
2667
+ "csmManagement": "CSM Management",
2668
+ "msmManagement": "MSM Management",
2669
+ "portal": "Portal",
2670
+ "portalDesc": "Manage your node's public portal — the landing page visitors see. Customize the HTML template, set dynamic content via memory keys and KV pairs, preview changes live, and generate an AI-friendly prompt summary of your portal for chat integrations.",
2671
+ "portalTemplate": "Template Editor",
2672
+ "portalPreview": "Portal Preview",
2673
+ "portalMemoryKeys": "Portal Memory Keys",
2674
+ "portalKvPairs": "KV Pairs (Environment)",
2675
+ "portalChangelog": "Change Log",
2676
+ "portalUpload": "Upload",
2677
+ "portalDownload": "Download",
2678
+ "portalResetDefault": "Reset to Default",
2679
+ "portalImport": "Import Bundle",
2680
+ "portalClearCache": "Clear Cache",
2681
+ "portalNoTemplate": "No custom template uploaded yet.",
2682
+ "portalNoMemoryKeys": "No portal memory keys found.",
2683
+ "portalNoChanges": "No changes recorded.",
2684
+ "portalSaveTemplate": "Save Template",
2685
+ "portalAiChat": "AI-Assisted Editor",
2686
+ "portalAiPlaceholder": "Describe what you want on your portal...",
2687
+ "portalAiSend": "Generate",
2688
+ "portalAiImport": "Import AI Result",
2689
+ "portalAiExplain": "Copy the AI prompt to your favourite AI assistant (Claude, ChatGPT, Copilot). Describe your portal, and it will generate a template you can import.",
2690
+ "portalTagHelp": "Use {{config:key}}, {{memory:key}}, {{storage:key}}, {{kv:key}}, {{board:slug}} tags in your template.",
2691
+ "portalTagHelpTitle": "Template Tag Reference",
2692
+ "portalTagHelpDetail": "Available template tags and examples:",
2693
+ "portalMemoryKeysExplain": "Memory keys store dynamic values your portal template can reference with {{memory:key}} tags.",
2694
+ "portalKeyLabel": "Key",
2695
+ "portalValueLabel": "Value",
2696
+ "portalNoKvPairs": "No KV pairs configured (set AIMEAT_SITE_KV_* env vars)",
2697
+ "portalKvExplain": "KV pairs are read-only values set via AIMEAT_SITE_KV_* environment variables. Use {{kv:key}} in templates.",
2698
+ "portalAiCopied": "AI prompt copied to clipboard!",
2699
+ "portalAiLoadPrompt": "Load AI Prompt",
2700
+ "portalDeleteKeyConfirm": "Delete {key}?",
2701
+ "tagExConfig": "Inserts a config value (e.g. node ID, port)",
2702
+ "tagExMemory": "Inserts a stored memory value",
2703
+ "tagExStorage": "Inserts storage info",
2704
+ "tagExKv": "Inserts a KV environment variable",
2705
+ "tagExBoard": "Embeds recent posts from a board",
2706
+ "portalLbMode": "Load-Balancer Mode",
2707
+ "portalLbReadOnly": "Portal content is read-only. Content synced from origin node.",
2708
+ "portalLbOrigin": "Origin URL",
2709
+ "portalLbLastSync": "Last Sync",
2710
+ "portalLbError": "Last Error",
2711
+ "portalLbStatus": "Sync Status",
2712
+ "portalLbSyncNow": "Sync Now",
2713
+ "portalLbSyncDone": "Portal sync completed.",
2714
+ "cors": "CORS",
2715
+ "corsTitle": "CORS Origin Management",
2716
+ "corsNodeDefault": "Node Default Origins",
2717
+ "corsNodeDefaultDesc": "The global CORS allowed origins configured for this node. Set via AIMEAT_CORS_ALLOWED_ORIGINS environment variable.",
2718
+ "corsGhiiOverrides": "User CORS Overrides",
2719
+ "corsGhiiOverridesDesc": "Users who have set custom CORS origins for their account. Users not listed here inherit the node default.",
2720
+ "corsAgentOverrides": "Agent CORS Overrides",
2721
+ "corsAgentOverridesDesc": "Agents with custom CORS origins. Agents not listed inherit from their owner or the node default.",
2722
+ "corsNoOverrides": "No custom CORS overrides",
2723
+ "corsOrigins": "Origins",
2724
+ "corsEffective": "Effective",
2725
+ "corsClear": "Clear",
2726
+ "corsClearConfirm": "Clear custom CORS? Will inherit node default.",
2727
+ "corsEdit": "Edit",
2728
+ "corsSave": "Save",
2729
+ "corsCancel": "Cancel",
2730
+ "corsAddOverride": "Add Override",
2731
+ "corsOriginPlaceholder": "https://example.com, http://localhost:3000",
2732
+ "corsCommonOrigins": "Quick add:",
2733
+ "corsSelectUser": "Select user...",
2734
+ "corsSelectAgent": "Select agent...",
2735
+ "stats": "Statistics",
2736
+ "statsNotAvailable": "Statistics are disabled on this node.",
2737
+ "requestsTotal": "Total Requests",
2738
+ "memoryOps": "Memory Operations",
2739
+ "consentOps": "Consent Operations",
2740
+ "schemaOps": "Schema Validations",
2741
+ "dailyActivity": "Daily Activity (30 days)",
2742
+ "weeklyComparison": "Weekly Comparison",
2743
+ "monthlyTrend": "Monthly Trend",
2744
+ "statsExplain": "Lightweight usage counters. Resets on server restart.",
2745
+ "writes": "Writes",
2746
+ "reads": "Reads",
2747
+ "grants": "Grants",
2748
+ "revocations": "Revocations",
2749
+ "validations": "Validations",
2750
+ "failures": "Failures",
2751
+ "thisWeek": "This Week",
2752
+ "lastWeek": "Last Week",
2753
+ "twoWeeksAgo": "2 Weeks Ago",
2754
+ "threeWeeksAgo": "3 Weeks Ago",
2755
+ "tunnelStats": "Tunnel Connections",
2756
+ "tunnelActive": "Active",
2757
+ "tunnelTotal": "Total Connections",
2758
+ "tunnelDisconnections": "Disconnections",
2759
+ "tunnelReconnects": "Reconnects",
2760
+ "tunnelMsgSent": "Messages Sent",
2761
+ "tunnelMsgReceived": "Messages Received",
2762
+ "tunnelDeliveryFails": "Delivery Failures",
2763
+ "tunnelLatencyAvg": "Average Latency",
2764
+ "tunnelLatencyP95": "P95 Latency",
2765
+ "tunnelHeartbeatMisses": "Heartbeat Misses",
2766
+ "tunnelMailboxFallbacks": "Mailbox Fallbacks",
2767
+ "mailboxStats": "Mailbox",
2768
+ "mailboxItems": "Items Queued",
2769
+ "mailboxBytes": "Storage Used",
2770
+ "mailboxEnqueued": "Enqueued",
2771
+ "mailboxDelivered": "Delivered",
2772
+ "mailboxExpired": "Expired",
2773
+ "mailboxQuotaRejects": "Quota Rejections",
2774
+ "mailboxOldestAge": "Oldest Item Age",
2775
+ "securityStats": "Security & Auth",
2776
+ "authFailures": "Auth Failures",
2777
+ "rateLimitHits": "Rate Limit Hits",
2778
+ "scopeDenials": "Scope Denials",
2779
+ "messages": "Messages",
2780
+ "latency": "Delivery Latency",
2781
+ "tunnelActivity": "Tunnel Activity",
2782
+ "consentPermStats": "Consent Permission Rules",
2783
+ "consentActiveRules": "Active Rules",
2784
+ "consentByGaii": "By GAII",
2785
+ "consentByGhii": "By GHII",
2786
+ "consentByOrganism": "By Organism",
2787
+ "consentByDomain": "By Domain",
2788
+ "consentByNode": "By Node",
2789
+ "consentByWildcard": "By Wildcard",
2790
+ "consentDataPatterns": "Unique Patterns",
2791
+ "noActionsRegistered": "No actions registered",
2792
+ "slug": "Slug",
2793
+ "showPosts": "Show Posts",
2794
+ "hidePosts": "Hide Posts",
2795
+ "noPosts": "No posts yet",
2796
+ "noWorkItems": "No work items",
2797
+ "totalSessions": "Total Sessions",
2798
+ "activeSessions": "Active Sessions",
2799
+ "avgMessages": "Avg Messages",
2800
+ "statusLabel": "Status",
2801
+ "started": "Started",
2802
+ "ended": "Ended",
2803
+ "gaiiExplain": "GAII (Global AI Identifier) — unique address for each AI agent on the AIMEAT network.",
2804
+ "ghiiExplain": "GHII (Global Human Intelligence Identifier) — unique identity for each human user on the AIMEAT network.",
2805
+ "ghiiLevelsTitle": "Verification Levels",
2806
+ "ghiiLevelL0": "L0 — Unverified: username + password only, no identity verification.",
2807
+ "ghiiLevelL1": "L1 — Email verified: email address confirmed via link or code.",
2808
+ "ghiiLevelL2": "L2 — Identity verified: government ID, EUDIW, or Finnish Trust Network verified.",
2809
+ "ghiiTotpExplain": "TOTP (Time-based One-Time Password) adds two-factor authentication. Users set up an authenticator app (e.g. Google Authenticator) for extra security.",
2810
+ "ghiiVerificationExplain": "Verification badge shows the trust level. Critical (red) = L0 unverified, Watch (yellow) = L1 partial, Healthy (green) = L2 fully verified.",
2811
+ "ghiiEmail": "Email",
2812
+ "ghiiEmailNotSet": "Not set",
2813
+ "ghiiEmailVerified": "Verified",
2814
+ "ghiiRemoveEmail": "Remove email",
2815
+ "ghiiRemoveEmailConfirm": "Remove email verification for {name}?",
2816
+ "ghiiEmailRemoved": "Email verification removed.",
2817
+ "boardCreateSystem": "Create System Board",
2818
+ "boardName": "Board Name",
2819
+ "boardDescription": "Description",
2820
+ "boardSlug": "Slug (URL-safe ID)",
2821
+ "boardVisibility": "Visibility",
2822
+ "boardPublic": "Public",
2823
+ "boardPrivate": "Private",
2824
+ "boardCreateConfirm": "Board created successfully",
2825
+ "chatExplain": "Chat instances are created when users interact with AI-powered chat applications on this node. System administrators can create node-wide chat channels for operator communication.",
2826
+ "chatCreateChannel": "Create Channel",
2827
+ "chatChannelName": "Channel name",
2828
+ "chatChannelNamePlaceholder": "e.g. ops-alerts, team-general",
2829
+ "chatChannelPlatform": "Platform",
2830
+ "chatChannelPlatformPlaceholder": "e.g. admin, slack, discord",
2831
+ "chatChannelCreated": "Channel created successfully",
2832
+ "chatDeleteConfirm": "Delete chat instance \"{id}\"?",
2833
+ "chatOperatorChannels": "Operator Channels",
2834
+ "chatOperatorChannelsExplain": "Operator channels are shared boards for team communication. Create a channel to start messaging.",
2835
+ "chatNoChannels": "No operator channels yet",
2836
+ "chatOpenChannel": "Open",
2837
+ "chatSendMessage": "Send",
2838
+ "chatMessagePlaceholder": "Type a message...",
2839
+ "chatBack": "Back to channels",
2840
+ "chatNoMessages": "No messages yet. Be the first to post!",
2841
+
2842
+ "emailDisabledExplain": "Email is not enabled. Configure SMTP settings in the Configuration tab to enable transactional emails.",
2843
+ "host": "Host",
2844
+ "secure": "Secure (TLS)",
2845
+ "rejectUnauthorized": "Verify TLS Certificates",
2846
+ "rejectUnauthorizedHelp": "Disable for self-signed certificates or STARTTLS",
2847
+ "from": "From",
2848
+ "testEmail": "Test Email",
2849
+ "emailPlaceholder": "recipient@example.com",
2850
+ "send": "Send",
2851
+ "emailSent": "Test email sent successfully",
2852
+ "emailSendFailed": "Email delivery failed. Check server logs for details (SMTP config, TLS, credentials).",
2853
+ "emailExplain": "SMTP is configured and email delivery is active. Transactional emails are sent for verification codes, login links, notifications, and match suggestions.",
2854
+ "emailSmtpHelp": "How to configure SMTP",
2855
+ "emailSmtpHelpDetail": "Set the SMTP settings (host, port, user, password, from address) in the Configuration tab under the Email group. Changes to mutable settings apply immediately; immutable settings require a restart.",
2856
+ "emailUserConfigured": "SMTP User",
2857
+ "emailPassConfigured": "SMTP Password",
2858
+ "emailTemplatesTitle": "Email Templates",
2859
+ "emailTemplatesExplain": "These are the email templates sent to users. Use the language toggle to preview each locale.",
2860
+ "emailTplVerification": "Verification Code",
2861
+ "emailTplMagicLink": "Magic Link (Login)",
2862
+ "emailTplNotification": "Notification",
2863
+ "emailTplMatchSuggestion": "Match Suggestion",
2864
+ "emailUsedInGhii": "used in: Identity (GHII)",
2865
+ "emailUsedInSystem": "used in: System",
2866
+ "emailUsedInMatching": "used in: Matching",
2867
+ "emailTplEditHtml": "Edit HTML",
2868
+ "emailTplEditText": "Edit Plain Text",
2869
+ "emailTplPreview": "Preview",
2870
+ "emailTplSave": "Save Template",
2871
+ "emailTplReset": "Reset to Default",
2872
+ "emailTplResetConfirm": "Reset this template to the default? Your custom version will be lost.",
2873
+ "emailTplSaved": "Template saved successfully",
2874
+ "emailTplResetDone": "Template reset to default",
2875
+ "emailTplCustomBadge": "customized",
2876
+ "emailTplParams": "Parameters",
2877
+ "emailTplParamsExplain": "These parameter tags are replaced with real data when the email is sent. Keep them in your custom template.",
2878
+ "emailTplAiPrompt": "Copy AI Prompt",
2879
+ "emailTplAiPromptCopied": "AI prompt copied to clipboard! Paste it into an AI chat to generate a template.",
2880
+ "emailTplSeedDefaults": "Seed Default Templates",
2881
+ "emailTplSeedExplain": "Load default templates (EN + FI) into storage so they can be edited.",
2882
+ "emailTplSeeded": "Seeded {count} templates (EN + FI)",
2883
+ "emailTplResetAll": "Reset All to Defaults",
2884
+ "emailTplReseed": "Re-seed Defaults",
2885
+ "emailTplSeededStatus": "Templates are stored and editable.",
2886
+ "emailTplResetAllConfirm": "Reset ALL email templates to defaults? All custom changes for both EN and FI will be lost.",
2887
+ "emailTplResetAllDone": "All {count} templates reset to defaults.",
2888
+ "emailGroupTitle": "Send to Group",
2889
+ "emailGroupExplain": "Send a notification email to a group of users. Only users with a notification email address will receive the message.",
2890
+ "emailGroupOperators": "Operators",
2891
+ "emailGroupAll": "All users with email",
2892
+ "emailGroupSubject": "Subject",
2893
+ "emailGroupBody": "Message body",
2894
+ "emailGroupSend": "Send to Group",
2895
+ "emailGroupSent": "Sent to {sent}/{total} recipients",
2896
+
2897
+ "pushNotConfigured": "Push notifications are not configured.",
2898
+ "pushExplain": "Web Push notifications allow sending real-time alerts to users who have subscribed via their browser. Requires VAPID keys configuration.",
2899
+ "pushHelpTitle": "How to configure Push",
2900
+ "pushHelpDetail": "Generate VAPID keys and set AIMEAT_VAPID_PUBLIC_KEY and AIMEAT_VAPID_PRIVATE_KEY in your .env file. Users subscribe via the portal UI.",
2901
+ "activeSubscriptions": "Active Subscriptions",
2902
+ "noSubscriptions": "No push subscriptions registered",
2903
+ "endpoint": "Endpoint",
2904
+ "pushTemplatesTitle": "Message Templates",
2905
+ "pushTemplatesExplain": "These are the notification messages sent to users when events occur. Templates are currently hardcoded in the backend.",
2906
+ "pushWebPushTitle": "Web Push: Browser Notification",
2907
+ "pushWebPushUsed": "Sent to subscribed browsers when a personal node has pending mailbox messages while offline.",
2908
+ "pushWebPushTitleTpl": "AIMEAT: Pending messages",
2909
+ "pushWebPushBodyTpl": "{count} message(s) waiting \u2014 {type}",
2910
+ "pushEmailTitle": "Email: Mailbox Alert",
2911
+ "pushEmailUsed": "Sent to the user's configured email when their personal node has pending messages and email notifications are enabled.",
2912
+ "pushEmailSubjectTpl": "AIMEAT: {count} pending message(s) for your node",
2913
+ "pushEmailBodyTpl": "Your personal node \"{nodeId}\" has {count} pending message(s).\n\nHighest priority: {type}\nOldest message: {age} minutes ago\n\nPlease reconnect your personal node to retrieve these messages.",
2914
+ "pushNotifyTypesTitle": "Notification Triggers",
2915
+ "pushNotifyTypesExplain": "Push notifications are sent when these mailbox event types occur. Configured via AIMEAT_PUSH_NOTIFY_TYPES.",
2916
+ "pushTypeWorkAssignment": "work_assignment \u2014 A work task has been assigned to the user's agent",
2917
+ "pushTypeActionRequest": "action_request \u2014 Another agent has requested an action from the user's agent",
2918
+ "pushTypeBoardNotification": "board_notification \u2014 New activity on a board the user subscribes to",
2919
+ "pushTypeFederationSync": "federation_sync \u2014 A federated peer node has synced data that needs attention",
2920
+ "pushTemplate": "Template",
2921
+ "pushUsedIn": "Used in",
2922
+ "pushTestBtn": "Send Test Push",
2923
+ "pushTestSending": "Sending...",
2924
+ "pushTestSent": "Sent!",
2925
+ "pushTestError": "Failed",
2926
+ "pushTestNoSubs": "No subscriptions — subscribe via portal first",
2927
+ "pushTestErrorDetail": "No subscription found or sending failed",
2928
+ "pushDefault": "default",
2929
+ "pushCustomized": "customized",
2930
+ "pushResetBtn": "Reset to Default Templates",
2931
+ "pushResetConfirm": "Reset all templates to defaults? This will overwrite any customizations.",
2932
+ "pushResetting": "Resetting...",
2933
+ "pushFieldTitle": "Title",
2934
+ "pushFieldSubject": "Subject",
2935
+ "pushFieldBody": "Body",
2936
+ "pushSubscribeBtn": "Subscribe this browser",
2937
+ "pushSubscribing": "Subscribing...",
2938
+ "pushSubscribed": "Subscribed!",
2939
+ "pushUnsubscribeBtn": "Unsubscribe",
2940
+ "pushNoBrowserSupport": "This browser does not support push notifications",
2941
+
2942
+ "totalEntries": "Total Entries",
2943
+ "cities": "Cities",
2944
+ "categories": "Categories",
2945
+ "directoryMaintenance": "Directory Maintenance",
2946
+ "directoryRebuilt": "Directory index rebuilt successfully",
2947
+ "directoryExplain": "The directory indexes owner profiles by city, category, and interests, enabling discovery and search. Profiles are automatically indexed when owners update their public information.",
2948
+ "directoryHelpTitle": "How the directory works",
2949
+ "directoryHelpDetail": "Owners register profiles with city, categories, and interests via the API. The directory builds search indexes for fast lookups. You can rebuild indexes if data becomes inconsistent.",
2950
+
2951
+ "totalProfiles": "Total Profiles",
2952
+ "activeMatches": "Active Matches",
2953
+ "lastRun": "Last Run",
2954
+ "matchingEngine": "Matching Engine",
2955
+ "matchingExplain": "The matching engine finds compatible profiles based on shared interests, location proximity, and preference criteria. Matches are computed periodically or can be triggered manually.",
2956
+ "matchingHelpTitle": "How matching works",
2957
+ "matchingHelpDetail": "The engine compares all active profiles, scoring compatibility based on shared interests, geographic proximity, and stated preferences. Matches above a threshold are surfaced to users. Run the engine manually to update matches immediately.",
2958
+
2959
+ "marketplaceEmpty": "No marketplace configured",
2960
+ "activeListings": "Active Listings",
2961
+ "totalTransactions": "Total Transactions",
2962
+ "noListings": "No listings found",
2963
+ "marketplaceExplain": "The marketplace enables peer-to-peer or node-level trading of goods and services using the morsel economy. Listings can be created at federation or individual node level.",
2964
+ "marketplaceHelpTitle": "How the marketplace works",
2965
+ "marketplaceHelpDetail": "Owners create listings with title, description, price (in morsels), and category. Buyers can browse, search, and purchase. Transactions are settled through the morsel wallet system. Federation-level marketplaces aggregate listings across nodes.",
2966
+ "marketplaceCreate": "Create Marketplace",
2967
+ "marketplaceName": "Marketplace Name",
2968
+ "marketplaceType": "Type",
2969
+ "marketplaceNodeLevel": "Node Level",
2970
+ "marketplaceFederationLevel": "Federation Level",
2971
+ "marketplaceCreateConfirm": "Marketplace created successfully",
2972
+
2973
+ "csmExplain": "CSM (Contextual Service Model) defines the data schema and rules for services running on the node. Each CSM template specifies what data a service collects, how it's validated, and what consent rules apply.",
2974
+ "csmHelpTitle": "What is a CSM?",
2975
+ "csmHelpDetail": "A CSM is a JSON document that defines a service's data model. It includes field definitions (name, type, required), validation rules, consent requirements, and display hints. Services like hobbies directory, marketplace, or dating use CSMs to describe their data shape. The node validates all data against the CSM before storing it.",
2976
+ "csmAddNew": "Add CSM Template",
2977
+ "csmEnable": "Enable",
2978
+ "csmDisable": "Disable",
2979
+ "csmStatusActive": "Active",
2980
+ "csmStatusDisabled": "Disabled",
2981
+ "csmNoFields": "No fields defined",
2982
+ "csmCreateFromTemplate": "Create from Template",
2983
+ "csmCreateCustom": "Create Custom",
2984
+ "csmYamlPlaceholder": "Paste CSM YAML definition here...",
2985
+ "csmSelectTemplate": "Select a template",
2986
+ "csmCreateSuccess": "CSM created successfully",
2987
+ "csmDeleteConfirm": "Delete CSM \"{name}\"? This also removes the associated schema lock.",
2988
+ "csmDeleted": "CSM deleted",
2989
+ "csmDefinition": "Definition (YAML)",
2990
+ "csmServiceType": "Service Type",
2991
+ "csmRegisteredBy": "Registered By",
2992
+ "csmFederate": "Federate",
2993
+ "csmCreate": "Create CSM",
2994
+ "csmCreateWithAi": "Create with AI Prompt",
2995
+ "csmAiPromptTitle": "CSM Builder — AI Prompt",
2996
+ "csmAiPromptDesc": "Copy this prompt into your AI chat (Claude, ChatGPT, etc.) to design a CSM interactively. The AI will ask you questions and generate the YAML for you.",
2997
+ "csmAiPromptHow": "How to use this prompt",
2998
+ "csmAiStep1": "Copy the prompt below to your clipboard",
2999
+ "csmAiStep2": "Paste it into a new AI chat conversation",
3000
+ "csmAiStep3": "Describe the service you want to create — the AI will guide you",
3001
+ "csmAiStep4": "Copy the generated YAML back here and click \"Create CSM\"",
3002
+
3003
+ "msmHelpTitle": "What is an MSM?",
3004
+ "msmHelpDetail": "An MSM is a configuration that connects the node to external services. It defines the endpoint URL, authentication method, data format, retry policy, and scheduling. MSMs can be used for webhook delivery, API integrations, data synchronization, and event-driven workflows. Node-level MSMs apply to this node only; federation-level MSMs are shared across the cluster.",
3005
+ "msmAddNew": "Add MSM Integration",
3006
+ "msmEndpoint": "Endpoint URL",
3007
+ "msmSchedule": "Schedule",
3008
+ "msmCreateConfirm": "MSM integration created successfully",
3009
+ "msmNodeLevel": "Node Level",
3010
+ "msmFederationLevel": "Federation Level",
3011
+ "msmRegisteredBy": "Registered By",
3012
+ "msmEdit": "Edit MSM",
3013
+ "msmEditDescription": "Description",
3014
+ "msmEditFederate": "Share across federation",
3015
+ "msmEditSave": "Save Changes",
3016
+ "msmUpdateConfirm": "MSM integration updated successfully",
3017
+ "msmDeleteConfirm": "Type \"{name}\" to confirm deletion",
3018
+ "msmDeleteTitle": "Delete MSM Integration",
3019
+ "msmDeleteSuccess": "MSM integration deleted successfully",
3020
+ "msmYamlPlaceholder": "Paste MSM YAML definition here...",
3021
+ "msmSelectTemplate": "— Select a template —",
3022
+ "msmCreateFromTemplate": "Start from template",
3023
+ "msmDefinition": "MSM Definition",
3024
+
3025
+ "federationNotAvailable": "Federation is not configured",
3026
+ "clusterName": "Cluster Name",
3027
+ "role": "Role",
3028
+ "peers": "Peers",
3029
+ "federationExplain": "Federation connects multiple AIMEAT nodes into a cluster, enabling shared data, cross-node discovery, and distributed services. Nodes communicate via authenticated peer-to-peer connections.",
3030
+ "federationHelpTitle": "How federation works",
3031
+ "federationHelpDetail": "A federation cluster consists of nodes that trust each other. One node acts as the genesis (origin) node, and others join by exchanging keys. Federated nodes can share directory listings, marketplace items, boards, and more. The cluster name identifies the federation, and each node has a role (genesis, peer, or observer).",
3032
+ "federationConfigTitle": "Federation Configuration",
3033
+ "federationJoinTitle": "Join a Federation",
3034
+ "federationJoinExplain": "To join an existing federation, you need the genesis node's endpoint URL and a valid invitation token.",
3035
+ "federationLeave": "Leave Federation",
3036
+ "federationLeaveConfirm": "Are you sure you want to leave this federation?",
3037
+
3038
+ "fedHowBusTitle": "What is the Federation Bus?",
3039
+ "fedHowBusDetail": "The federation bus is the communication layer between nodes. It handles heartbeats (health checks every 5 minutes), data replication, catalogue synchronization, cross-node work routing, morsel settlements, and trust advisories. All messages are cryptographically signed with Ed25519 keys to prevent tampering.",
3040
+ "fedHowJoinTitle": "How does a new node join?",
3041
+ "fedHowJoinDetail": "A new node sends a signed introduction request (POST /v1/federation/peer/introduce) with its node ID, URL, and public key. The operator of the receiving node sees the request here and can approve or reject it. After approval, the nodes exchange public keys and the new peer is activated. The heartbeat system then monitors the connection automatically.",
3042
+ "fedHowReplicationTitle": "How does data replication work?",
3043
+ "fedHowReplicationDetail": "Nodes can replicate memory entries to peers via POST /v1/federation/replicate. Each replication request is signed and verified. Replicated data is stored with a 'replica:' prefix to distinguish it from local data. Catalogue entries (actions/services) are synced incrementally — only new or updated items are transferred.",
3044
+ "fedHowSettlementsTitle": "How do morsel settlements work?",
3045
+ "fedHowSettlementsDetail": "When an agent on Node A uses a service on Node B, the morsel payment needs to be settled across nodes. Node B sends a signed settlement to Node A with the amount, tracking code, and proof. The receiving node verifies the signature, checks for replay attacks, and credits the agent's balance. Operators can also initiate outbound settlements manually.",
3046
+ "fedHowRoutingTitle": "How does cross-node routing work?",
3047
+ "fedHowRoutingDetail": "If you need to reach an agent on a remote node, the federation router (POST /v1/federation/route) forwards the request. It supports multi-hop relay — if the target isn't a direct peer, the request is relayed through intermediate nodes. Loop detection prevents infinite routing, and each hop costs 1 morsel as a routing fee. Max hops is configurable.",
3048
+
3049
+ "fedActivePeers": "Active Peers",
3050
+ "fedDegradedPeers": "Degraded",
3051
+ "fedOfflinePeers": "Offline",
3052
+ "fedPendingRequests": "Pending Requests",
3053
+
3054
+ "fedPendingRequestsTitle": "Pending Peering Requests",
3055
+ "fedPendingRequestsExplain": "These nodes want to join your federation. Review each request and approve or reject.",
3056
+ "fedPendingHelpTitle": "What should I check before approving?",
3057
+ "fedPendingHelpDetail": "Verify the node ID and URL are from a trusted source. Check the message field for context about who is requesting. After approval, you still need to activate the peer and complete the key exchange before data flows. You can always de-peer later if needed.",
3058
+ "fedReqId": "Request ID",
3059
+ "fedFromNode": "From Node",
3060
+ "fedMessage": "Message",
3061
+ "fedCreatedAt": "Created",
3062
+ "fedReject": "Reject",
3063
+ "fedApprovePeerConfirm": "Approve this peering request? The node will be added as a peer.",
3064
+ "fedRejectPeerConfirm": "Reject this peering request?",
3065
+ "fedPeerApproved": "Peering request approved successfully",
3066
+ "fedPeerRejected": "Peering request rejected",
3067
+
3068
+ "fedLivePeersTitle": "Live Peers",
3069
+ "fedLivePeersExplain": "Currently registered peers and their real-time health status. The heartbeat monitor pings each peer every 5 minutes.",
3070
+ "fedLivePeersHelpTitle": "Understanding peer statuses",
3071
+ "fedLivePeersHelpDetail": "Active: Peer is healthy and responding to heartbeats. Approved: Peer has been approved but not yet activated (needs activation). Degraded: Peer has failed 3+ consecutive heartbeats but is still reachable. Offline: Peer has failed 10+ consecutive heartbeats. Depeering: Peer is in the grace period before removal (default 72h) — in-flight work can still complete.",
3072
+ "fedAddedAt": "Added",
3073
+ "fedPublicKey": "Public Key",
3074
+ "fedActivate": "Activate",
3075
+ "fedDepeer": "De-peer",
3076
+ "fedEmergencyDepeer": "Emergency",
3077
+ "fedActivateConfirm": "Activate this peer? It will start receiving heartbeats and data.",
3078
+ "fedRemoveConfirm": "De-peer this node? A 72-hour grace period will be applied for in-flight work.",
3079
+ "fedEmergencyRemoveConfirm": "EMERGENCY de-peer! This immediately disconnects the peer, cancels all in-flight work, and returns escrow. Are you sure?",
3080
+ "fedPeerActivated": "Peer activated successfully",
3081
+ "fedPeerRemoved": "Peer set to depeering status (grace period active)",
3082
+ "fedPeerEmergencyRemoved": "Peer immediately disconnected. All in-flight work cancelled.",
3083
+
3084
+ "fedRequestHistoryTitle": "Peering Request History",
3085
+
3086
+ "fedJoinTitle": "Join Genesis Network",
3087
+ "fedJoinExplain": "Connect this node to an existing AIMEAT genesis network. Enter the genesis node URL and select your role. The genesis operator will review and approve your request.",
3088
+ "fedJoinHelpTitle": "How does joining work?",
3089
+ "fedJoinHelpDetail": "Your node will contact the genesis node, verify it's running AIMEAT, and send a signed introduction request. The genesis operator will see your request in their Federation dashboard and can approve it. Once approved, your nodes will exchange keys and start communicating.",
3090
+ "fedJoinUrlPlaceholder": "Genesis node URL (e.g. http://localhost:40050)",
3091
+ "fedJoinUrlRequired": "Genesis node URL is required",
3092
+ "fedJoinRoleContributor": "Contributor",
3093
+ "fedJoinRoleOperator": "Operator",
3094
+ "fedJoinBtn": "Join Network",
3095
+ "fedJoinSent": "Introduction sent! Waiting for genesis operator approval.",
3096
+ "fedJoinTargetNode": "Target Node",
3097
+ "fedJoinStatus": "Status",
3098
+ "fedJoinRequestId": "Request ID",
3099
+
3100
+ "fedAddPeerTitle": "Add Peer Directly",
3101
+ "fedAddPeerExplain": "Manually add a peer node without going through the introduction flow. Useful for bootstrapping federations or adding trusted nodes.",
3102
+ "fedAddPeerHelpTitle": "When should I add peers directly?",
3103
+ "fedAddPeerHelpDetail": "Direct peer addition skips the introduction handshake and creates the peer in 'pending' status. You'll still need to activate it and complete key exchange. Use this when you trust the remote node and have its details (node ID, URL, optionally public key). For production setups, prefer the introduction flow for better security.",
3104
+ "fedAddNodeIdPlaceholder": "Node ID (e.g. my-node-001)",
3105
+ "fedAddUrlPlaceholder": "Node URL (e.g. https://node.example.com)",
3106
+ "fedAddKeyPlaceholder": "Public key (optional, hex or base64)",
3107
+ "fedAddPeerBtn": "Add Peer",
3108
+ "fedAddPeerMissing": "Node ID and URL are required",
3109
+ "fedPeerAdded": "Peer added successfully (status: pending)",
3110
+
3111
+ "fedTestTitle": "Test Federation Readiness",
3112
+ "fedTestExplain": "Check if a remote node is reachable and running the AIMEAT protocol before peering.",
3113
+ "fedTestHelpTitle": "What does the test check?",
3114
+ "fedTestHelpDetail": "The test sends a request to the target node's /.well-known/aimeat endpoint to verify: 1) The node is reachable over the network, 2) It responds with the AIMEAT protocol identifier. If both checks pass, the node is ready for federation peering.",
3115
+ "fedTestBtn": "Test",
3116
+ "fedTestTarget": "Target",
3117
+ "fedTestReady": "Ready",
3118
+ "fedTestTime": "Tested at",
3119
+
3120
+ "fedBusTitle": "Federation Bus — Features",
3121
+ "fedBusExplain": "The federation bus provides all the communication channels between nodes. Each feature is described below with how it works and what API endpoints are involved.",
3122
+
3123
+ "fedBusHeartbeatTitle": "Heartbeat & Health Monitoring",
3124
+ "fedBusHeartbeatDetail": "Every 5 minutes, your node pings all active peers via POST /v1/federation/ping. If a peer fails 3 consecutive heartbeats, it's marked 'degraded'. After 10 failures, it goes 'offline'. Peers in 'depeering' state have their grace period checked — once expired, they're purged. The heartbeat also accepts signed POST /v1/federation/heartbeat messages from peers with optional stats data.",
3125
+
3126
+ "fedBusReplicateTitle": "Memory Replication",
3127
+ "fedBusReplicateDetail": "Nodes can replicate memory entries to peers via POST /v1/federation/replicate. The request must include the source node, agent GAII, key, value, visibility, version, and a cryptographic signature. The receiving node verifies the signature against the peer's stored public key, then stores the data with a 'replica:source_node:key' prefix. This enables cross-node data sharing while maintaining clear ownership.",
3128
+
3129
+ "fedBusCatalogueTitle": "Catalogue Synchronization",
3130
+ "fedBusCatalogueDetail": "Action catalogues are synced via POST /v1/federation/catalogue-sync. This supports incremental sync — if 'since_timestamp' is provided, only newer actions are expected. Existing federated actions are updated (upsert by federated ID). Each synced action is tagged with 'federated:source_node' and its display name is prefixed with the source node ID for clarity. A catalogue_hash is included for integrity verification.",
3131
+
3132
+ "fedBusRoutingTitle": "Cross-Node Request Routing",
3133
+ "fedBusRoutingDetail": "POST /v1/federation/route forwards requests to remote nodes. If the target is a direct peer, the request goes straight. Otherwise, it tries multi-hop relay through other active peers. Features: loop detection (via X-Relay-Path header), configurable max hops, 1 morsel routing fee per hop. GET /v1/federation/resolve/:gaii resolves which node hosts an agent — checks local first, then parses GAII hints, then broadcasts to peers.",
3134
+
3135
+ "fedBusSettlementTitle": "Morsel Settlements",
3136
+ "fedBusSettlementDetail": "Cross-node morsel transfers use POST /v1/federation/settle (inbound) and POST /v1/federation/settle/outbound (outbound, operator only). Each settlement is cryptographically signed, verified against the peer's public key, and checked for replay attacks via tracking codes. Settlements credit or debit agent balances and are recorded as 'federation_settlement' transactions.",
3137
+
3138
+ "fedBusTrustTitle": "Trust Advisories",
3139
+ "fedBusTrustDetail": "Operators can issue trust advisories about nodes via POST /v1/federation/trust-advisory. Advisory types: 'warning' (informational), 'suspend' (recommend suspension), 'ban' (auto-de-peers the target node immediately). Trust advisories are shared across the federation when emergency de-peering with network notification enabled.",
3140
+
3141
+ "fedBusKeyExchangeTitle": "Key Exchange",
3142
+ "fedBusKeyExchangeDetail": "POST /v1/federation/key-exchange allows peers to exchange Ed25519 public keys. This is a prerequisite for signed heartbeats, replication, and settlements. If the peer was recently approved via a peering request, the key exchange also promotes it from 'approved' to active peer status. Each node returns its own public key and capabilities.",
3143
+
3144
+ "fedBusCrossWorkTitle": "Cross-Node Work Requests",
3145
+ "fedBusCrossWorkDetail": "Agents can submit work to services on remote nodes via POST /v1/federation/cross-node/work. The request is signed by the originating node's private key and forwarded to the target peer. A 1 morsel routing fee is charged. The remote node processes the work request as if it were local, and results are returned in the response.",
3146
+
3147
+ "fedBusResolveTitle": "GAII Resolution",
3148
+ "fedBusResolveDetail": "GET /v1/federation/resolve/:gaii finds which node hosts an agent. Resolution order: 1) Check local cache (5-minute TTL), 2) Check local storage, 3) Check personal nodes anchored to this operator, 4) Parse node hint from GAII format (agent#owner@node), 5) Broadcast resolve to all active peers. Results are cached to reduce network traffic.",
3149
+
3150
+ "fedApiRefTitle": "API Reference",
3151
+ "fedApiRefHelpTitle": "All Federation Endpoints",
3152
+
3153
+ "fedDepeeringTitle": "Peers Being Removed",
3154
+ "fedDepeeringExplain": "These peers are in the grace period before permanent removal. In-flight work can still complete.",
3155
+ "fedDepeeringGrace": "Grace ends",
3156
+
3157
+ "genesisExplain": "Genesis peers are the founding nodes of a federation cluster. The genesis node is the first node that creates the federation, and it manages peer approvals, key exchange, and cluster policies.",
3158
+ "genesisHelpTitle": "What are genesis peers?",
3159
+ "genesisHelpDetail": "When you create a new federation, your node becomes the genesis (origin) node. Other nodes request to join, and you approve or reject them here. Genesis peers have special privileges: they can set cluster-wide policies, approve new members, and suspend misbehaving nodes. Approved peers can exchange data according to federation rules.",
3160
+ "approved": "Approved",
3161
+ "confirmAction": "Are you sure?",
3162
+ "approveConfirm": "Approve this peer?",
3163
+ "suspendConfirm": "Suspend this peer?",
3164
+
3165
+ "configuration": "Configuration",
3166
+ "schema": "Schema",
3167
+ "fields": "Fields",
3168
+ "required": "Required",
3169
+ "type": "Type",
3170
+ "version": "Version",
3171
+ "back": "Back",
3172
+
3173
+ "cfgGroup_node": "Node",
3174
+ "cfgGroup_storage": "Storage",
3175
+ "cfgGroup_morsel_policy": "Morsel Policy",
3176
+ "cfgGroup_auth": "Auth",
3177
+ "cfgGroup_features": "Features",
3178
+ "cfgGroup_work": "Work",
3179
+ "cfgGroup_quota": "Quota",
3180
+ "cfgGroup_federation": "Federation",
3181
+ "cfgGroup_rate_limits": "Rate Limits",
3182
+ "cfgGroup_email": "Email",
3183
+ "cfgGroup_consent": "Consent",
3184
+ "cfgGroup_totp": "TOTP",
3185
+ "cfgGroup_matching": "Matching",
3186
+ "cfgGroup_extensions": "Extensions",
3187
+ "cfgGroup_marketplace": "Marketplace",
3188
+ "cfgGroup_push": "Push",
3189
+ "cfgGroup_eudiw": "EUDIW",
3190
+ "cfgGroup_cross_federation": "Cross-Federation",
3191
+ "cfgHelp_cross_federation": "Cross-federation connects independent AIMEAT nodes (or different federation clusters) for catalogue sharing and cross-node discovery. Unlike intra-cluster federation (operator/contributor), genesis peering is point-to-point with no central registry. Each node can have up to 'Max Genesis Peers' connections. Catalogues (CSMs marked federate:true) are synced automatically at the configured interval. Enable this even on standalone nodes to connect with other operators. Manage peers in the Genesis Peers tab.",
3192
+ "cfgGroup_personal_nodes": "Personal Nodes",
3193
+ "cfgGroup_match_notifications": "Match Notifications",
3194
+ "cfgGroup_consul": "Consul",
3195
+
3196
+ "cfgHelp_extensions": "The extension system runs custom JavaScript code in sandboxed V8 isolates. Extensions add behaviors to your node — marketplace rules, auto-moderation, scheduled tasks, etc. Install bundled extensions from the Services tab, or create your own. Each extension runs in isolation with configurable memory limits, execution timeouts, and API call caps.",
3197
+ "cfgHelp_eudiw": "EUDIW (EU Digital Identity Wallet) enables verified identity through the European Digital Identity framework. FTN (Finnish Trust Network) enables strong identification via Finnish banks and mobile certificates. To enable: set EUDIW Enabled and/or FTN Enabled to true, then configure your identity provider credentials in your .env file (AIMEAT_EUDIW_CLIENT_ID, AIMEAT_EUDIW_CLIENT_SECRET for EUDIW; AIMEAT_FTN_CLIENT_ID, AIMEAT_FTN_CLIENT_SECRET for FTN). These require registration with the respective identity provider services.",
3198
+ "cfgHelp_consul": "Consul is a service discovery and configuration management tool. When enabled, AIMEAT syncs its configuration from a Consul KV store, allowing centralized management across multiple nodes. To configure: 1) Install and run Consul, 2) Set AIMEAT_CONSUL_ENABLED=true in your .env, 3) Set the Consul URL, KV prefix, and optionally an ACL token and datacenter. These settings are immutable and must be set before startup.",
3199
+ "cfgHelp_totp": "TOTP (Time-based One-Time Password) adds two-factor authentication to user accounts. When enabled, users can set up an authenticator app (like Google Authenticator, Authy, or 1Password) to generate 6-digit codes that rotate every 30 seconds. The encryption key protects stored TOTP secrets — generate one with: openssl rand -hex 32, then set it via AIMEAT_TOTP_ENCRYPTION_KEY in your .env file. Without this key, TOTP secrets are stored unencrypted.",
3200
+ "cfgHelp_matching": "The AI matching engine automatically connects users based on shared interests, location, and profile data. When enabled, it runs periodically (configurable interval) and generates match suggestions. Configure the minimum score threshold, max suggestions per round, geographic distance limits, and cooldown periods to control matching behavior.",
3201
+ "cfgHelp_consent": "The consent layer provides GDPR-compliant data access controls. When enabled, agents must request explicit consent before accessing user data, and all consent decisions are logged in an audit trail. Configure retention period for audit logs and maximum consent records per user.",
3202
+ "cfgHelp_email": "Email settings control SMTP connectivity for sending notifications, confirmations, and alerts. To configure email templates and notification content, go to the Infrastructure tab > Email section in this dashboard.",
3203
+
3204
+ "cfg_node_id": "Node ID",
3205
+ "cfg_node_port": "Port",
3206
+ "cfg_node_type": "Node Type",
3207
+ "cfg_storage_type": "Storage Type",
3208
+ "cfg_morsel_policy_welcome_bonus": "Welcome Bonus",
3209
+ "cfg_morsel_policy_daily_allowance": "Daily Allowance",
3210
+ "cfg_morsel_policy_daily_allowance_cap": "Allowance Cap",
3211
+ "cfg_morsel_policy_burn_rate": "Burn Rate",
3212
+ "cfg_morsel_policy_max_operator_mint_per_day": "Max Operator Mint/Day",
3213
+ "cfg_morsel_policy_board_post_base_cost": "Board Post Base Cost",
3214
+ "cfg_morsel_policy_board_post_cost_per_kb": "Board Post Cost/KB",
3215
+ "cfg_auth_jwt_ttl_seconds": "JWT TTL (seconds)",
3216
+ "cfg_features_keyed_browse_enabled": "Keyed Browse",
3217
+ "cfg_features_extended_features_enabled": "Extended Features",
3218
+ "cfg_work_queue_max_pending": "Max Pending Queue",
3219
+ "cfg_work_webhook_max_retries": "Webhook Max Retries",
3220
+ "cfg_quota_memory_mb": "Memory Quota (MB)",
3221
+ "cfg_quota_storage_mb": "Storage Quota (MB)",
3222
+ "cfg_quota_micro_memory_kb": "Micro-Memory (KB)",
3223
+ "cfg_federation_max_relay_hops": "Max Relay Hops",
3224
+ "cfg_rate_limits_global": "Global",
3225
+ "cfg_rate_limits_auth": "Auth",
3226
+ "cfg_rate_limits_work": "Work",
3227
+ "cfg_rate_limits_memory": "Memory",
3228
+ "cfg_rate_limits_boards": "Boards",
3229
+ "cfg_rate_limits_owners": "Owners",
3230
+ "cfg_rate_limits_ghii": "GHII (Identity)",
3231
+ "cfg_rate_limits_flags": "Flags",
3232
+ "cfg_rate_limits_appeals": "Appeals",
3233
+ "cfg_rate_limits_admin_setup": "Admin / Setup",
3234
+ "cfg_rate_limits_federation": "Federation",
3235
+ "cfg_rate_limits_catalogue": "Catalogue",
3236
+ "cfg_rate_limits_auth_challenge": "Auth Challenge",
3237
+ "cfg_email_enabled": "Email Enabled",
3238
+ "cfg_email_confirmation_required": "Confirmation Required",
3239
+ "cfg_email_smtp_host": "SMTP Host",
3240
+ "cfg_email_smtp_port": "SMTP Port",
3241
+ "cfg_email_smtp_from": "From Address",
3242
+ "cfg_email_smtp_user_configured": "SMTP User Configured",
3243
+ "cfg_email_smtp_pass_configured": "SMTP Password Configured",
3244
+ "cfg_consent_enabled": "Consent Enabled",
3245
+ "cfg_consent_audit_retention_days": "Audit Retention (days)",
3246
+ "cfg_consent_max_per_user": "Max per User",
3247
+ "cfg_totp_enabled": "TOTP Enabled",
3248
+ "cfg_totp_period": "Code Period (seconds)",
3249
+ "cfg_totp_window": "Validation Window",
3250
+ "cfg_totp_max_failed_attempts": "Max Failed Attempts",
3251
+ "cfg_totp_lockout_seconds": "Lockout Duration (seconds)",
3252
+ "cfg_totp_encryption_key_configured": "Encryption Key Configured",
3253
+ "cfg_matching_enabled": "Matching Enabled",
3254
+ "cfg_matching_interval_hours": "Interval (hours)",
3255
+ "cfg_matching_threshold": "Score Threshold",
3256
+ "cfg_matching_max_suggestions": "Max Suggestions",
3257
+ "cfg_matching_max_distance_km": "Max Distance (km)",
3258
+ "cfg_matching_cooldown_days": "Cooldown (days)",
3259
+ "cfg_extensions_enabled": "Extensions Enabled",
3260
+ "cfg_extensions_max_memory_mb": "Max Memory (MB)",
3261
+ "cfg_extensions_timeout_ms": "Timeout (ms)",
3262
+ "cfg_extensions_max_api_calls": "Max API Calls",
3263
+ "cfg_extensions_max_code_size_kb": "Max Code Size (KB)",
3264
+ "cfg_extensions_max_installed": "Max Installed",
3265
+ "cfg_extensions_install_role": "Extension Install Role",
3266
+ "cfg_extensions_install_role_desc": "Who can install extensions: operator or owner",
3267
+ "cfg_extensions_max_per_owner": "Max Extensions Per Owner",
3268
+ "cfg_extensions_max_per_owner_desc": "Maximum extensions each owner can install",
3269
+ "cfg_generator_enabled": "Service Generator",
3270
+ "cfg_generator_enabled_desc": "Show Generator tab in profile view",
3271
+ "cfg_marketplace_enabled": "Marketplace Enabled",
3272
+ "cfg_marketplace_listing_fee": "Listing Fee",
3273
+ "cfg_marketplace_tx_fee_percent": "Transaction Fee %",
3274
+ "cfg_marketplace_escrow_enabled": "Escrow Enabled",
3275
+ "cfg_push_enabled": "Push Enabled",
3276
+ "cfg_push_vapid_configured": "VAPID Keys Configured",
3277
+ "cfg_eudiw_enabled": "EUDIW Enabled",
3278
+ "cfg_eudiw_ftn_enabled": "Finnish Trust Network",
3279
+ "cfg_cross_federation_enabled": "Cross-Federation Enabled",
3280
+ "cfg_cross_federation_max_genesis_peers": "Max Genesis Peers",
3281
+ "cfg_cross_federation_sync_interval_hours": "Sync Interval (hours)",
3282
+ "cfg_personal_nodes_enabled": "Personal Nodes Enabled",
3283
+ "cfg_personal_nodes_max_slots": "Max Slots",
3284
+ "cfg_match_notifications_enabled": "Match Notifications Enabled",
3285
+ "cfg_match_notifications_interval_hours": "Notification Interval (hours)",
3286
+ "cfg_consul_enabled": "Consul Enabled",
3287
+ "cfg_consul_url": "Consul URL",
3288
+ "cfg_consul_prefix": "KV Prefix",
3289
+ "cfg_consul_token_configured": "ACL Token Configured",
3290
+ "cfg_consul_watch_interval_seconds": "Watch Interval (seconds)",
3291
+ "cfg_consul_datacenter": "Datacenter",
3292
+ "cortexTab": "Cortex Extensions",
3293
+ "cortex": {
3294
+ "back": "\u2190 Back",
3295
+ "total": "Total",
3296
+ "active": "Active",
3297
+ "inactive": "Inactive",
3298
+ "loading": "Loading cortex extensions...",
3299
+ "empty": "No cortex extensions installed.",
3300
+ "name": "Name",
3301
+ "version": "Version",
3302
+ "installedBy": "Installed by",
3303
+ "status": "Status",
3304
+ "visibility": "Visibility",
3305
+ "componentsCol": "Components",
3306
+ "components": "Components",
3307
+ "noComponents": "No components",
3308
+ "author": "Author",
3309
+ "activated": "Extension activated",
3310
+ "deactivated": "Extension deactivated",
3311
+ "uninstalled": "Extension uninstalled",
3312
+ "visibilityChanged": "Visibility updated",
3313
+ "confirmUninstall": "Uninstall this extension? This will remove all its components.",
3314
+ "activate": "Activate",
3315
+ "deactivate": "Deactivate",
3316
+ "uninstall": "Uninstall",
3317
+ "makePublic": "Make Public",
3318
+ "makePrivate": "Make Private"
3319
+ },
3320
+ "packagesTab": "Packages",
3321
+ "pkgTotalPackages": "Total Packages",
3322
+ "pkgTotalInstances": "Total Instances",
3323
+ "pkgTotalTemplates": "Template Listings",
3324
+ "pkgPublished": "Published",
3325
+ "pkgPackagesTab": "Packages",
3326
+ "pkgTemplatesTab": "Templates",
3327
+ "pkgInstancesTab": "Instances",
3328
+ "pkgAllPackages": "All Packages",
3329
+ "pkgAllTemplates": "Template Listings",
3330
+ "pkgAllInstances": "All Instances",
3331
+ "pkgNoPackages": "No packages yet. Seed example packages to get started.",
3332
+ "pkgNoTemplates": "No template listings yet",
3333
+ "pkgNoInstances": "No instances yet",
3334
+ "pkgSeedExamples": "Seed Example Packages",
3335
+ "pkgReseedHint": "Re-seed to update example packages to latest version.",
3336
+ "pkgAuthor": "Author",
3337
+ "pkgVersion": "Version",
3338
+ "pkgCategory": "Category",
3339
+ "pkgTitle": "Title",
3340
+ "pkgPackage": "Package",
3341
+ "pkgRating": "Rating",
3342
+ "pkgInstalls": "Installs",
3343
+ "pkgFeatured": "Featured",
3344
+ "pkgLabel": "Label",
3345
+ "pkgOwner": "Owner",
3346
+ "pkgComponents": "Components",
3347
+ "pkgInstalled": "Installed",
3348
+ "pkgPending": "Pending Review",
3349
+ "modModerationTab": "Moderation",
3350
+ "modPendingQueue": "Pending Review Queue",
3351
+ "modPublishedTemplates": "Published Templates",
3352
+ "modHistory": "Moderation History",
3353
+ "modNoPending": "No pending templates",
3354
+ "modNoPublished": "No published templates",
3355
+ "modNoHistory": "No moderation history",
3356
+ "modProposedDate": "Proposed",
3357
+ "modReview": "Review",
3358
+ "modClose": "Close",
3359
+ "modApprove": "Approve",
3360
+ "modReject": "Reject",
3361
+ "modSuspend": "Suspend",
3362
+ "modConfirmSuspend": "Confirm Suspend",
3363
+ "modComment": "Comment (optional)",
3364
+ "modCommentPlaceholder": "Optional approval comment...",
3365
+ "modReason": "Reason (required)",
3366
+ "modReasonPlaceholder": "Reason for rejection...",
3367
+ "modReasonRequired": "Reason is required",
3368
+ "modSuspendReason": "Suspension reason (required)",
3369
+ "modSuspendReasonPlaceholder": "Reason for suspension...",
3370
+ "modChangelog": "Changelog",
3371
+ "modDryRun": "Dry-Run Results",
3372
+ "modDecision": "Decision",
3373
+ "modReviewer": "Reviewer",
3374
+ "modReasonCol": "Reason",
3375
+ "promptsTab": "System Prompts",
3376
+ "promptsTotal": "Total",
3377
+ "promptsStatusActive": "Active",
3378
+ "promptsStatusInactive": "Inactive",
3379
+ "promptsGroups": "Groups",
3380
+ "promptsGroupTiers": "System Tiers",
3381
+ "promptsGroupBuilders": "App Builders",
3382
+ "promptsGroupPortal": "Portal",
3383
+ "promptsGroupKnowledge": "Knowledge",
3384
+ "promptsGroupPlatform": "Platform",
3385
+ "promptsGroupGenerator": "Generator",
3386
+ "promptsEdit": "Edit Prompt",
3387
+ "promptsContent": "Content",
3388
+ "promptsLocales": "Locale Overrides",
3389
+ "promptsAddLocale": "Add Locale",
3390
+ "promptsChangeNote": "Change Note (optional)",
3391
+ "promptsChangeNotePlaceholder": "Describe what changed...",
3392
+ "promptsSave": "Save Changes",
3393
+ "promptsReset": "Reset to Default",
3394
+ "promptsResetConfirm": "Reset this prompt to factory default? Your custom version will be saved in version history.",
3395
+ "promptsVersionHistory": "Version History",
3396
+ "promptsVersion": "Version",
3397
+ "promptsRestore": "Restore",
3398
+ "promptsRestoreConfirm": "Restore this version? A new version will be created from the old content.",
3399
+ "promptsUsedIn": "Used in",
3400
+ "promptsVariables": "Available Variables",
3401
+ "promptsNoVersions": "No version history yet",
3402
+ "promptsSaved": "Prompt saved successfully",
3403
+ "promptsResetDone": "Prompt reset to factory default",
3404
+ "promptsResetAll": "Reset All Prompts to Factory Defaults",
3405
+ "promptsResetAllConfirm": "Reset ALL system prompts to factory defaults? This will delete all custom edits and version histories. This cannot be undone.",
3406
+ "promptsResetAllDone": "All prompts reset to factory defaults",
3407
+ "promptsResetGroup": "Reset Group",
3408
+ "promptsResetGroupConfirm": "Reset all prompts in this group to factory defaults? Custom edits will be lost (but preserved in version history).",
3409
+ "promptsRestored": "Version restored successfully",
3410
+ "promptsHelp": "System prompts are the AI instruction texts served to agents and users. Edit them here to customize behavior without code changes. Each prompt supports {{variable}} placeholders that are filled at serve time.",
3411
+ "promptsHelpTitle": "About System Prompts",
3412
+ "promptsEmpty": "No system prompts found. They will be seeded on next server restart.",
3413
+ "memoryAdmin": "Memory",
3414
+ "memoryAdminDesc": "Browse and manage all memory keys across all owners",
3415
+ "memoryOwner": "Owner",
3416
+ "memoryKey": "Key",
3417
+ "memoryValue": "Value",
3418
+ "memoryVisibility": "Visibility",
3419
+ "memoryVersion": "Version",
3420
+ "memoryUpdated": "Last Updated",
3421
+ "memorySize": "Size",
3422
+ "memoryTotal": "Total Keys",
3423
+ "memorySearch": "Search memory...",
3424
+ "memoryFilterOwner": "Filter by owner",
3425
+ "memoryFilterPrefix": "Filter by key prefix",
3426
+ "memoryNoResults": "No memory keys found",
3427
+ "memoryDeleteConfirm": "Delete this memory key?",
3428
+ "memoryDeleted": "Memory key deleted"
3429
+ },
3430
+ "launcher": {
3431
+ "title": "My Apps",
3432
+ "addApp": "Add App",
3433
+ "settings": "Settings",
3434
+ "search": "Search apps...",
3435
+ "noApps": "No apps yet",
3436
+ "noAppsHint": "Add your first app using the + button above",
3437
+ "importAimeat": "Import from AIMEAT",
3438
+ "export": "Export Backup",
3439
+ "import": "Import Backup",
3440
+ "clearAll": "Clear All Data",
3441
+ "confirmDelete": "Delete this app?",
3442
+ "confirmClear": "Delete ALL apps and settings? This cannot be undone."
3443
+ },
3444
+ "hobbies": {
3445
+ "title": "Hobby Directory",
3446
+ "subtitle": "Find hobbies and like-minded people near you",
3447
+ "members": "Members",
3448
+ "hobbies": "Hobbies",
3449
+ "cities": "Cities",
3450
+ "browseByCategory": "Browse by category",
3451
+ "topInterests": "Top interests",
3452
+ "topCities": "Top cities",
3453
+ "searchPeople": "Search for hobbyists",
3454
+ "joinDirectory": "Join the directory",
3455
+ "people": "people",
3456
+ "loadError": "Could not load page.",
3457
+ "search": {
3458
+ "title": "Search for hobbyists",
3459
+ "subtitle": "Find like-minded people by interest or location",
3460
+ "interest": "Interest",
3461
+ "interestPlaceholder": "e.g. coding, cycling...",
3462
+ "city": "City",
3463
+ "cityPlaceholder": "e.g. Helsinki",
3464
+ "area": "Area",
3465
+ "areaPlaceholder": "e.g. Kallio",
3466
+ "btn": "Search",
3467
+ "results": "results",
3468
+ "forInterest": "for interest",
3469
+ "inCity": "in city",
3470
+ "noResults": "No results. Try different search criteria or",
3471
+ "joinLink": "join the directory",
3472
+ "interests": "Interests",
3473
+ "cities": "Cities",
3474
+ "shared": "shared",
3475
+ "profileHidden": "Profile hidden",
3476
+ "profileHiddenDesc": "This profile has been hidden based on community reports.",
3477
+ "prev": "Previous",
3478
+ "next": "Next",
3479
+ "error": "Could not perform search."
3480
+ },
3481
+ "profile": {
3482
+ "notFound": "Profile not found.",
3483
+ "backToSearch": "Back to search",
3484
+ "hidden": "This profile has been hidden based on community reports.",
3485
+ "description": "Description",
3486
+ "interests": "Interests",
3487
+ "location": "Location",
3488
+ "availability": "Availability",
3489
+ "seeking": "Seeking",
3490
+ "sharedInterests": "shared interests",
3491
+ "flagBtn": "Report profile",
3492
+ "flagReason": "Reason for report (unreliable, inappropriate, spam, other):",
3493
+ "flagSent": "Report sent.",
3494
+ "flagError": "Error",
3495
+ "networkError": "Network error.",
3496
+ "loadError": "Could not load profile."
3497
+ },
3498
+ "join": {
3499
+ "title": "Join the directory",
3500
+ "subtitle": "Create a profile and find like-minded people",
3501
+ "authNotice": "Sign in to join.",
3502
+ "authLink": "Sign in or register here.",
3503
+ "interests": "Interests *",
3504
+ "interestsPlaceholder": "e.g. coding, cycling, music",
3505
+ "interestsHint": "Separate with commas. At least one.",
3506
+ "city": "City *",
3507
+ "cityPlaceholder": "e.g. Helsinki",
3508
+ "country": "Country",
3509
+ "bio": "Description",
3510
+ "bioPlaceholder": "Tell about yourself...",
3511
+ "bioHint": "Maximum 500 characters.",
3512
+ "availability": "Availability",
3513
+ "availNone": "Not selected",
3514
+ "availAnytime": "Anytime",
3515
+ "availMornings": "Mornings",
3516
+ "availEvenings": "Evenings",
3517
+ "availWeekends": "Weekends",
3518
+ "availEveningsWeekends": "Evenings & weekends",
3519
+ "seeking": "Seeking (optional)",
3520
+ "seekingPlaceholder": "e.g. practice partner, team members",
3521
+ "seekingHint": "Separate with commas.",
3522
+ "consent": "I agree that my profile is visible in the directory (community-discovery).",
3523
+ "submitBtn": "Join the directory",
3524
+ "saving": "Saving...",
3525
+ "needInterest": "Add at least one interest.",
3526
+ "needCity": "City is required.",
3527
+ "success": "Your profile has been created! It will appear in the directory when the index is next updated.",
3528
+ "browseBtn": "Browse the directory",
3529
+ "saveFailed": "Save failed. Try again.",
3530
+ "error": "Could not load form.",
3531
+ "notifications": "Notify me when someone nearby shares my interests"
3532
+ },
3533
+ "me": {
3534
+ "title": "My profile",
3535
+ "noGhii": "You have not created a GHII profile yet.",
3536
+ "registerFirst": "Register first.",
3537
+ "notInDirectory": "Your profile was not found in the directory. This may be because you have not joined yet or the directory index has not updated.",
3538
+ "joinBtn": "Join the directory",
3539
+ "editTitle": "Edit profile",
3540
+ "saveBtn": "Save changes",
3541
+ "saving": "Saving...",
3542
+ "saved": "Changes saved! The directory will update on the next refresh.",
3543
+ "saveFailed": "Some saves failed.",
3544
+ "viewPublic": "View public profile",
3545
+ "notSet": "Not set",
3546
+ "loadError": "Could not load profile.",
3547
+ "signInRequired": "Sign in to view your profile.",
3548
+ "notifications": "Match notifications",
3549
+ "notificationsOn": "You will be notified when someone nearby shares your interests.",
3550
+ "notificationsOff": "Match notifications are disabled."
3551
+ },
3552
+ "nav": {
3553
+ "brand": "AIMEAT Hobbies",
3554
+ "search": "Search",
3555
+ "join": "Join",
3556
+ "me": "My Profile",
3557
+ "portal": "Portal",
3558
+ "matches": "Matches"
3559
+ },
3560
+ "availability": {
3561
+ "anytime": "Anytime",
3562
+ "mornings": "Mornings",
3563
+ "evenings": "Evenings",
3564
+ "weekends": "Weekends",
3565
+ "eveningsWeekends": "Evenings & weekends"
3566
+ },
3567
+ "matches": {
3568
+ "title": "Your Matches",
3569
+ "subtitle": "People who share your interests",
3570
+ "loginRequired": "Log in to see your matches",
3571
+ "noMatches": "No matches found yet. Try adding more interests to your profile!",
3572
+ "shared": "shared interests",
3573
+ "loading": "Finding your matches..."
3574
+ }
3575
+ },
3576
+ "mkt": {
3577
+ "brand": "AIME AT Tori",
3578
+ "instanceSelector": "Choose a Marketplace",
3579
+ "instanceSelectorSubtitle": "Select a marketplace to browse or sell items",
3580
+ "noInstances": "No marketplaces available",
3581
+ "visibility": { "public": "Public", "password": "Password Protected", "invite": "Invite Only" },
3582
+ "backToMarketplaces": "\u2190 All Marketplaces",
3583
+ "nav": {
3584
+ "search": "Search",
3585
+ "sell": "Sell",
3586
+ "myListings": "My listings",
3587
+ "myPurchases": "Purchases",
3588
+ "portal": "Portal"
3589
+ },
3590
+ "home": {
3591
+ "title": "Tori",
3592
+ "subtitle": "AIMEAT marketplace — buy and sell with morsel currency",
3593
+ "listings": "Listings",
3594
+ "categories": "Categories",
3595
+ "categoriesHeading": "Categories",
3596
+ "recentHeading": "Recent listings",
3597
+ "emptyText": "No listings yet. Be the first seller!",
3598
+ "browseBtn": "Browse listings",
3599
+ "sellBtn": "Create listing",
3600
+ "announcements": "announcements"
3601
+ },
3602
+ "search": {
3603
+ "title": "Search listings",
3604
+ "subtitle": "Filter and browse marketplace offerings",
3605
+ "keyword": "Keyword",
3606
+ "keywordPlaceholder": "Search...",
3607
+ "category": "Category",
3608
+ "categoryAll": "All",
3609
+ "city": "City",
3610
+ "cityPlaceholder": "e.g. Espoo",
3611
+ "price": "Price (morsels)",
3612
+ "minPlaceholder": "Min",
3613
+ "maxPlaceholder": "Max",
3614
+ "btn": "Search",
3615
+ "clearBtn": "Clear",
3616
+ "noResults": "No results. Try different search criteria.",
3617
+ "prev": "Previous",
3618
+ "next": "Next",
3619
+ "page": "Page",
3620
+ "error": "Search could not be performed."
3621
+ },
3622
+ "detail": {
3623
+ "backToMarket": "Back to marketplace",
3624
+ "seller": "Seller",
3625
+ "condition": "Condition",
3626
+ "availability": "Availability",
3627
+ "created": "Created",
3628
+ "totalPrice": "Total price including service fee",
3629
+ "price": "Price",
3630
+ "serviceFee": "service fee",
3631
+ "purchaseHint": "Purchasing requires authentication.",
3632
+ "purchaseBtn": "Purchase",
3633
+ "ownListing": "This is your listing. Manage via API.",
3634
+ "purchases": "Purchases",
3635
+ "buyer": "Buyer",
3636
+ "notFound": "Listing not found.",
3637
+ "backBtn": "Back",
3638
+ "loadError": "Could not load listing.",
3639
+ "purchaseSuccess": "Purchase successful!",
3640
+ "purchaseFailed": "Purchase failed"
3641
+ },
3642
+ "sell": {
3643
+ "title": "Create listing",
3644
+ "listingFee": "Listing fee",
3645
+ "formNote": "Fill in the details and submit to create a listing.",
3646
+ "titleLabel": "Title *",
3647
+ "titlePlaceholder": "Product or service name",
3648
+ "descLabel": "Description *",
3649
+ "descPlaceholder": "Describe the product or service...",
3650
+ "categoryLabel": "Category *",
3651
+ "priceLabel": "Price (morsels) *",
3652
+ "conditionLabel": "Condition",
3653
+ "conditionNone": "-",
3654
+ "conditionNew": "New",
3655
+ "conditionUsed": "Used",
3656
+ "conditionDigital": "Digital",
3657
+ "availLabel": "Availability",
3658
+ "availNone": "-",
3659
+ "availImmediate": "Immediate",
3660
+ "availOnRequest": "On request",
3661
+ "availScheduled": "Scheduled",
3662
+ "cityLabel": "City",
3663
+ "cityPlaceholder": "e.g. Helsinki",
3664
+ "areaLabel": "Area",
3665
+ "areaPlaceholder": "e.g. Kallio",
3666
+ "tagsLabel": "Tags (comma separated)",
3667
+ "tagsPlaceholder": "e.g. coding, web, react",
3668
+ "submitBtn": "Create listing",
3669
+ "sending": "Sending...",
3670
+ "success": "Listing created! ID:",
3671
+ "unknownError": "Unknown error",
3672
+ "networkError": "Network connection failed",
3673
+ "authRequired": "Sign in to create a listing.",
3674
+ "authBtn": "Sign in"
3675
+ },
3676
+ "myListings": {
3677
+ "title": "My listings",
3678
+ "subtitle": "Manage your sale listings",
3679
+ "newBtn": "+ New listing",
3680
+ "empty": "No listings yet. Create your first!",
3681
+ "authRequired": "Sign in to view your listings.",
3682
+ "error": "Could not load page.",
3683
+ "delistBtn": "Remove"
3684
+ },
3685
+ "myPurchases": {
3686
+ "title": "My purchases",
3687
+ "subtitle": "Purchase history and reviews",
3688
+ "empty": "No purchases yet.",
3689
+ "seller": "Seller",
3690
+ "code": "Code",
3691
+ "rateHint": "Rate: POST /v1/app-store/purchases/",
3692
+ "authRequired": "Sign in to view your purchases.",
3693
+ "error": "Could not load page.",
3694
+ "unknown": "Unknown"
3695
+ },
3696
+ "status": {
3697
+ "active": "Active",
3698
+ "sold": "Sold",
3699
+ "expired": "Expired",
3700
+ "hidden": "Hidden",
3701
+ "delisted": "Delisted",
3702
+ "pending_delivery": "Pending delivery",
3703
+ "delivered": "Delivered",
3704
+ "disputed": "Disputed",
3705
+ "completed": "Completed",
3706
+ "cancelled": "Cancelled"
3707
+ },
3708
+ "cat": {
3709
+ "palvelut": "Services",
3710
+ "tuotteet": "Products",
3711
+ "data": "Data",
3712
+ "osaaminen": "Skills",
3713
+ "muu": "Other"
3714
+ },
3715
+ "langSwitch": "FI"
3716
+ },
3717
+ "portal": {
3718
+ "nav": {
3719
+ "devView": "For Developers",
3720
+ "profile": "Profile"
3721
+ },
3722
+ "genesis": {
3723
+ "name": "GENESIS 001",
3724
+ "tagline": "Build crazy interfaces in seconds that connect to the whole world and other people or agents.",
3725
+ "taglines": [
3726
+ "Build crazy interfaces in seconds that connect to the whole world and other people or agents.",
3727
+ "A digital workspace for AI agents and humans.",
3728
+ "Your memory. Your agents. Your control.",
3729
+ "Build, share, discover — together with AI."
3730
+ ],
3731
+ "subline": "Copy the prompt. Paste it into any AI chat. You'll have a working multi-user app in minutes."
3732
+ },
3733
+ "oneliners": {
3734
+ "title": "Opinions Live",
3735
+ "empty": "No messages yet. Someone will break the silence soon."
3736
+ },
3737
+ "provocation": {
3738
+ "lines": [
3739
+ "You have an opinion. It changes things.",
3740
+ "The world doesn't know yet what you think.",
3741
+ "Here, people talk to people.",
3742
+ "Someone is waiting for exactly your perspective.",
3743
+ "The best ideas happen when people collide.",
3744
+ "Everyone has a story they want to tell.",
3745
+ "Believe in something? Say it out loud.",
3746
+ "You are more than your data.",
3747
+ "Today someone's idea changes someone's mind.",
3748
+ "Love what actually matters to you."
3749
+ ],
3750
+ "weights": [3, 3, 2, 2, 2, 2, 2, 1, 1, 1],
3751
+ "line1": "Opinions are like assholes. Everyone's got one. Here are a few:",
3752
+ "cta": "Make yours heard by copying the prompt below into any AI chat, tell it what you want, and in under a minute your opinion shows up here live."
3753
+ },
3754
+ "prompt": {
3755
+ "copyBtn": "COPY PROMPT & PASTE IT TO AI CHAT",
3756
+ "copied": "COPIED!",
3757
+ "anyAi": "Works with Claude, ChatGPT, Grok, Gemini, Copilot, DeepSeek — all of them."
3758
+ },
3759
+ "expand": {
3760
+ "btn": "▼ OPEN THE WHOLE WORLD ▼",
3761
+ "btnOpen": "▲ CLOSE ▲",
3762
+ "signInRequired": "Sign in to open your world.",
3763
+ "userPrefix": "Open the whole world",
3764
+ "userPrefixOpen": "Close"
3765
+ },
3766
+ "world": {
3767
+ "apps": {
3768
+ "title": "Apps",
3769
+ "desc": "Browse apps others have made, or upload yours."
3770
+ },
3771
+ "agents": {
3772
+ "title": "AI Agents",
3773
+ "desc": "Your AI works while you sleep. Copy this prompt and the AI builds you a working agent.",
3774
+ "copyBtn": "Copy agent prompt",
3775
+ "copied": "Copied!"
3776
+ },
3777
+ "connect": {
3778
+ "title": "Connect your own runtime",
3779
+ "desc": "If you run OpenClaw, LM Studio, or any MCP-capable tool — connect it directly.",
3780
+ "copyBtn": "Copy connect prompt",
3781
+ "copied": "Copied!",
3782
+ "readMore": "More about connecting agent runtimes"
3783
+ },
3784
+ "services": {
3785
+ "title": "Services",
3786
+ "desc": "Need help? Post a request. Good at something? Offer it."
3787
+ },
3788
+ "builders": {
3789
+ "title": "For Service Builders",
3790
+ "desc": "Create Community Service Manifests (CSM) that define new services anyone can use.",
3791
+ "registerBtn": "Register to get started"
3792
+ },
3793
+ "catalog": {
3794
+ "openBtn": "Open App Catalog",
3795
+ "downloadBtn": "Download HTML"
3796
+ },
3797
+ "fullBuilder": {
3798
+ "title": "Build Any App",
3799
+ "desc": "The full prompt with all categories: games, notes, trackers, music jam, real-time collaboration, services, and more. For when you want maximum control.",
3800
+ "copyBtn": "Copy full prompt",
3801
+ "copied": "Copied!"
3802
+ }
3803
+ },
3804
+ "modal": {
3805
+ "title": "❤️ Sign In",
3806
+ "descNew": "New? Pick a username and password to create your account.",
3807
+ "descReturning": "Already have an account? Enter your username and password.",
3808
+ "usernamePlaceholder": "Username",
3809
+ "passwordPlaceholder": "Password (min 4 chars)",
3810
+ "displayNamePlaceholder": "Display Name (optional, for new accounts)",
3811
+ "signInBtn": "Sign In",
3812
+ "cancelBtn": "Cancel",
3813
+ "working": "Working...",
3814
+ "errUserShort": "Username must be at least 3 characters",
3815
+ "errPassShort": "Password must be at least 4 characters",
3816
+ "errWrongPass": "Wrong password for that username.",
3817
+ "loggedIn": "logged in",
3818
+ "logoutBtn": "Logout",
3819
+ "whyTitle": "✨ What do you get?",
3820
+ "whyGhii": "A free GHII (Global Human Intelligence Identifier), your personal AI identity",
3821
+ "whyPrivacy": "Your own private memory space, protected by your password",
3822
+ "whyControl": "Full control: only you can access your data, no need to share with anyone",
3823
+ "whyAgents": "Connect AI agents that remember you and work on your behalf",
3824
+ "whyMorsels": "100 free heart morsels to start! E.g. memory request ~ 1 ❤️, board post ~ 2 ❤️. You get 50 more every day"
3825
+ },
3826
+ "promptLangNote": "The prompt is in English because AIs work best with it. You can still ask the AI to respond in your language. Works with Claude, ChatGPT, Grok, Gemini, Copilot, DeepSeek — all of them.",
3827
+ "morsels": {
3828
+ "economy": "Heart morsels (❤️) are the micro-currency here. You start with 100 for free. Actions cost a small amount. You earn 50 more every day."
3829
+ },
3830
+ "classic": {
3831
+ "link": "Classic view"
3832
+ },
3833
+ "userWorld": {
3834
+ "profile": {
3835
+ "title": "Profile Overview",
3836
+ "desc": "Your identity and quick access to your personal dashboard.",
3837
+ "owner": "Owner",
3838
+ "ghii": "GHII",
3839
+ "node": "Node",
3840
+ "openProfile": "Open full profile",
3841
+ "openWallet": "Open wallet",
3842
+ "openMemory": "Open memory",
3843
+ "openWork": "Open work",
3844
+ "openServices": "Open services",
3845
+ "openApps": "Open apps"
3846
+ },
3847
+ "stats": {
3848
+ "wallet": "Wallet",
3849
+ "agents": "Agents",
3850
+ "memory": "Memories",
3851
+ "work": "Tasks",
3852
+ "services": "Services",
3853
+ "apps": "Apps",
3854
+ "files": "Files"
3855
+ },
3856
+ "marketplace": {
3857
+ "title": "Marketplace",
3858
+ "desc": "Browse offers and publish what you can provide.",
3859
+ "open": "Open marketplace",
3860
+ "manage": "Manage your services"
3861
+ },
3862
+ "services": {
3863
+ "title": "Recent Services",
3864
+ "desc": "Jump into the latest portal services and tools.",
3865
+ "hobbies": "Hobbies",
3866
+ "guides": "Guides",
3867
+ "aimeatOs": "AIMEAT OS",
3868
+ "openclaw": "OpenClaw runtime",
3869
+ "catalog": "App catalog"
3870
+ }
3871
+ }
3872
+ },
3873
+ "wallet": {
3874
+ "consents": {
3875
+ "title": "Active Consents",
3876
+ "empty": "No active consents",
3877
+ "pattern": "Data Pattern",
3878
+ "recipient": "Recipient",
3879
+ "purpose": "Purpose",
3880
+ "scope": "Scope",
3881
+ "granted": "Granted",
3882
+ "expires": "Expires",
3883
+ "revoke": "Revoke",
3884
+ "never": "Never",
3885
+ "revoking": "Revoking...",
3886
+ "revoked": "Consent revoked"
3887
+ },
3888
+ "audit": {
3889
+ "title": "Audit Report",
3890
+ "empty": "No data access events found",
3891
+ "who": "Accessed By",
3892
+ "what": "Data Key",
3893
+ "when": "When",
3894
+ "purpose": "Purpose",
3895
+ "days": "days"
3896
+ },
3897
+ "export": {
3898
+ "title": "GDPR Export",
3899
+ "description": "Download all your data as a JSON file",
3900
+ "button": "Download All My Data",
3901
+ "downloading": "Preparing export..."
3902
+ }
3903
+ },
3904
+ "classic": {
3905
+ "nav": {
3906
+ "devView": "For Developers"
3907
+ },
3908
+ "hero": {
3909
+ "title": "Your data is yours. Your AI works for you.",
3910
+ "subtitle": "Not Google’s, not OpenAI’s, not anyone else’s. Tell things once, your AI remembers, shares and acts. Try now, no signup needed.",
3911
+ "anonNote": "You’re trying this anonymously. Your data expires over time.",
3912
+ "createAccount": "Create a free account"
3913
+ },
3914
+ "cards": {
3915
+ "memory": {
3916
+ "title": "Memory",
3917
+ "tagline": "Write, read, share. It all starts here.",
3918
+ "desc": "Write a message to the shared memory. Everyone can see it. This is how AIMEAT works. AI agents and humans share a common memory space. Try it.",
3919
+ "inputPlaceholder": "Write your message to the board...",
3920
+ "sendBtn": "Send",
3921
+ "sent": "Message posted!",
3922
+ "sentNote": "Your message is now visible to everyone. Next, you can make your own view to follow messages and post new ones anytime.",
3923
+ "exampleChips": "Old guitar for sale, contact Mika, Looking for a Finnish tutor, Free kittens in Espoo",
3924
+ "recentTitle": "Latest messages",
3925
+ "emptyBoard": "No messages yet. Be the first!",
3926
+ "buildApp": "Make your own message view with AI",
3927
+ "copyInstructions": "Copy prompt",
3928
+ "copiedInstructions": "Copied!",
3929
+ "pasteHint": "Paste into any AI chat. The AI will build you an HTML app you can run in your own browser, that shows the board with auto-refresh and lets you post new messages.",
3930
+ "upgradeNote": "This data is public and expires. Register a personal identity to get your own private memory space."
3931
+ },
3932
+ "apps": {
3933
+ "title": "Apps",
3934
+ "tagline": "Answer questions, get an app",
3935
+ "desc": "No coding skills needed. Pick what you’d like to do, answer a few questions, and an AI builds you an app. Open it right in your browser, and your data is stored so it’s available from anywhere.",
3936
+ "categories": {
3937
+ "games": "Games",
3938
+ "gamesDesc": "Challenge a friend to multiplayer",
3939
+ "notes": "Notes",
3940
+ "notesDesc": "Keep a journal or checklist",
3941
+ "trackers": "Trackers",
3942
+ "trackersDesc": "Track habits, budget, or anything",
3943
+ "family": "Family tools",
3944
+ "familyDesc": "Shared calendar, shopping list, messages",
3945
+ "creative": "Creative",
3946
+ "creativeDesc": "Make images, stories, or fun stuff",
3947
+ "band": "Music & Jam",
3948
+ "bandDesc": "Play instruments together in real-time",
3949
+ "realtime": "Live & multiplayer",
3950
+ "realtimeDesc": "Real-time collaboration — whiteboard, chat, shared tools",
3951
+ "custom": "Your idea",
3952
+ "customDesc": "Tell what you want and AI builds it"
3953
+ },
3954
+ "anyAiWorks": "You can build apps with any AI: Claude, ChatGPT, Grok, Gemini, Copilot, DeepSeek, all of them work! Try with different AIs and see which makes the best result.",
3955
+ "step1": "Copy the prompt above",
3956
+ "step2": "Paste into any AI chat (ChatGPT, Claude, Grok, Gemini...)",
3957
+ "step3": "Answer the AI’s questions, name your app, pick a style",
3958
+ "step4": "Download the HTML file and open it in your browser. Done!",
3959
+ "backToCategories": "Back to categories",
3960
+ "copyPrompt": "Copy prompt",
3961
+ "copied": "Copied!",
3962
+ "promptLangNote": "The prompt is in English because AIs work best with it. You can still ask the AI to respond in your language.",
3963
+ "returnTitle": "When your app is ready",
3964
+ "returnStep1": "Save the HTML file the AI generated",
3965
+ "returnStep2": "Upload it here as an app",
3966
+ "returnStep3": "Others can use and rate it",
3967
+ "returnBtnAnon": "Register and add app",
3968
+ "returnBtnAuth": "Add new app",
3969
+ "returnMotivation": "Got your app ready? Others can use it and you’ll earn heart morsels."
3970
+ },
3971
+ "services": {
3972
+ "title": "Services",
3973
+ "tagline": "Help others or ask for help",
3974
+ "desc": "Need an image made, a text translated, or help with something? Post a request and someone, human or AI, can deliver it. Good at something? Offer it as a service and appear in the directory.",
3975
+ "needHelp": "I need help",
3976
+ "needHelpDesc": "Tell what you need",
3977
+ "needHelpPlaceholder": "Describe what you need help with...",
3978
+ "needHelpExamples": "Translate this text to Spanish, Make a logo for my project, Help me write a cover letter",
3979
+ "offerHelp": "I want to help",
3980
+ "offerHelpDesc": "Tell what you can do",
3981
+ "offerHelpPlaceholder": "Describe what you’re good at...",
3982
+ "offerHelpExamples": "I can translate Finnish to English, I make illustrations, I help with math homework",
3983
+ "submitRequest": "Post request",
3984
+ "submitOffer": "Offer service",
3985
+ "posted": "Posted!",
3986
+ "requestPosted": "Your request is visible to helpers on this node.",
3987
+ "offerPosted": "Your service is now listed in the directory.",
3988
+ "backToChoices": "Back"
3989
+ },
3990
+ "launcher": {
3991
+ "title": "App Catalog",
3992
+ "tagline": "Browse and discover apps in one place.",
3993
+ "openBtn": "Open App Catalog",
3994
+ "downloadBtn": "Download HTML"
3995
+ }
3996
+ },
3997
+ "morsels": {
3998
+ "summary": "Heart morsels are AIMEAT’s way of saying thanks. You get 100 to start, for free. The more you share and help, the more you get.",
3999
+ "economy": "Heart morsels (❤️) are AIMEAT’s micro-currency. You start with 100 for free. Actions cost a small amount (e.g. memory write ~ 1❤️, board post ~ 2❤️). You earn 50 more every day, plus bonuses for sharing and helping others."
4000
+ },
4001
+ "groups": {
4002
+ "forMe": {
4003
+ "title": "For Me & Others",
4004
+ "tagline": "Build apps, share messages, find help",
4005
+ "desc": "Make your own apps by chatting with your favourite AI. Share them with others, use apps other people made, or remix them into your own version. Copy the prompt, paste it into any AI chat, and see how far you get.",
4006
+ "starterHint": "New here? Try making an app that posts a message to the Welcome Board — and watch it appear live above!",
4007
+ "beginnerTip": "Start with something simple if this is your first time!"
4008
+ },
4009
+ "forAgents": {
4010
+ "title": "My AI Agents",
4011
+ "tagline": "Your AI works while you sleep",
4012
+ "desc": "Set your AI to monitor news, produce daily content, or run tasks on a schedule. Copy the prompt, paste it into any AI chat, and the AI builds you a working agent.",
4013
+ "starterHint": "Try it: ask the AI to build a news agent that checks your favourite site every hour and posts summaries to the Welcome Board.",
4014
+ "step1": "Copy the prompt below",
4015
+ "step2": "Paste into any AI chat (ChatGPT, Claude, Grok, Gemini...)",
4016
+ "step3": "Answer the AI’s questions — it builds the agent for you",
4017
+ "connectTitle": "Got your own agent runtime?",
4018
+ "connectDesc": "If you run OpenClaw, LM Studio, or any MCP-capable tool — you can connect it directly. Copy this prompt instead and your AI will guide you through it.",
4019
+ "readMore": "More about connecting agent runtimes"
4020
+ },
4021
+ "forBuilders": {
4022
+ "title": "For Service Builders",
4023
+ "tagline": "Build and publish AIMEAT services",
4024
+ "desc": "Create Community Service Manifests (CSM) that define new services anyone can use. Registered users only."
4025
+ },
4026
+ "copyPrompt": "Copy prompt",
4027
+ "copied": "Copied!",
4028
+ "registerBtn": "Register to get started"
4029
+ },
4030
+ "welcome": {
4031
+ "title": "Welcome Board",
4032
+ "subtitle": "Say hello to the community",
4033
+ "emptyBoard": "No messages yet. Be the first to say hello!",
4034
+ "placeholder": "Write your greeting...",
4035
+ "sendBtn": "Send",
4036
+ "sent": "Greeting sent!"
4037
+ }
4038
+ },
4039
+ "permissions": {
4040
+ "invalidRecipient": "Invalid recipient format. Use *, a GAII, or prefixed patterns (ghii:, domain:, node:, organism.)",
4041
+ "scopeRequired": "consent:manage scope is required to view permissions",
4042
+ "grantTitle": "Grant New Permission",
4043
+ "grantBtn": "Grant Permission",
4044
+ "cancelBtn": "Cancel",
4045
+ "dataPattern": "Data Pattern",
4046
+ "dataPatternHint": "Glob pattern for memory keys (e.g. health.*, profile.interests)",
4047
+ "recipientType": "Recipient Type",
4048
+ "recipient": "Recipient",
4049
+ "purpose": "Purpose",
4050
+ "purposeHint": "Why is access needed?",
4051
+ "scope": "Scope",
4052
+ "scopePrivate": "Private (home node only)",
4053
+ "scopeDmz": "DMZ (internal federation)",
4054
+ "scopeFederation": "Federation (public replication)",
4055
+ "expires": "Expires",
4056
+ "expiresHint": "Leave empty for no expiration",
4057
+ "typGaii": "Specific Agent (GAII)",
4058
+ "typGhii": "GHII User (all agents)",
4059
+ "typOrganism": "Organism Members",
4060
+ "typDomain": "Node Domain",
4061
+ "typNode": "Specific Node",
4062
+ "typWildcard": "Everyone (*)",
4063
+ "summaryTitle": "Permission Overview",
4064
+ "summaryMemoryKeys": "Memory Keys",
4065
+ "summaryStorageFiles": "Storage Files",
4066
+ "summaryActiveRules": "Active Rules",
4067
+ "summaryByType": "By Type",
4068
+ "sharingRules": "Sharing rules",
4069
+ "noRules": "No sharing rules for this key",
4070
+ "badgeGaii": "GAII",
4071
+ "badgeGhii": "GHII",
4072
+ "badgeOrganism": "Organism",
4073
+ "badgeDomain": "Domain",
4074
+ "badgeNode": "Node",
4075
+ "badgeWildcard": "Wildcard",
4076
+ "expiringWarning": "Expiring soon",
4077
+ "revokeSelected": "Revoke Selected",
4078
+ "filterPlaceholder": "Filter by recipient or pattern...",
4079
+ "granted": "Granted"
4080
+ },
4081
+ "portfolio": {
4082
+ "title": "Portfolio",
4083
+ "tabLabel": "Portfolio",
4084
+ "builder": {
4085
+ "heading": "Build Your Portfolio",
4086
+ "subtitle": "Select your content, choose a style, and generate your portfolio with AI.",
4087
+ "step1Title": "Select Content",
4088
+ "step2Title": "Style & Purpose",
4089
+ "step3Title": "Auth-Gated Sections",
4090
+ "step4Title": "Generate Prompt",
4091
+ "step5Title": "Upload Portfolio",
4092
+ "noContent": "No publishable content found. Upload images or create apps first.",
4093
+ "imagesGroup": "Images",
4094
+ "appsGroup": "Published Apps",
4095
+ "boardsGroup": "Board Posts",
4096
+ "cortexGroup": "Cortex Extensions",
4097
+ "memoriesGroup": "Memory Entries",
4098
+ "portfolioType": "Portfolio type",
4099
+ "typeCV": "Professional / CV",
4100
+ "typeCreative": "Creative / Art Showcase",
4101
+ "typeDev": "Developer / Technical",
4102
+ "typePersonal": "Personal / Blog-style",
4103
+ "typeCustom": "Custom (describe in prompt)",
4104
+ "designStyle": "Design style",
4105
+ "styleMinimal": "Minimal & Clean",
4106
+ "styleBold": "Bold & Colorful",
4107
+ "styleDark": "Dark & Modern",
4108
+ "styleClassic": "Classic & Elegant",
4109
+ "authGateLabel": "Which sections should require login to view?",
4110
+ "gateContact": "Contact information",
4111
+ "gateProjectDetails": "Project details",
4112
+ "gateDownloads": "Download links",
4113
+ "gateCustom": "Custom sections (specify in prompt)",
4114
+ "generateBtn": "Generate Prompt",
4115
+ "copyPrompt": "Copy Prompt to Clipboard",
4116
+ "downloadPrompt": "Download as .txt",
4117
+ "promptCopied": "Copied!",
4118
+ "instructions": "Instructions",
4119
+ "inst1": "Copy the prompt above or download it",
4120
+ "inst2": "Paste it into any AI chat (ChatGPT, Claude, etc.)",
4121
+ "inst3": "The AI will create your portfolio as a downloadable HTML file",
4122
+ "inst4": "Upload the HTML file below to publish it",
4123
+ "uploadTitle": "Upload Your Portfolio HTML",
4124
+ "uploadDragDrop": "Drag & drop your HTML file here, or click to browse",
4125
+ "uploadBtn": "Upload & Publish",
4126
+ "uploadSuccess": "Portfolio published!",
4127
+ "uploadSizeError": "File too large. Maximum size: {max}KB",
4128
+ "enabled": "Portfolio published",
4129
+ "disabled": "Portfolio hidden",
4130
+ "viewPublic": "View public portfolio",
4131
+ "regenerate": "Regenerate",
4132
+ "delete": "Delete portfolio",
4133
+ "orPaste": "or paste HTML directly",
4134
+ "pasteHint": "Paste your portfolio HTML here from AI chat...",
4135
+ "pasteEmpty": "Paste HTML content first",
4136
+ "publishPaste": "Publish pasted HTML"
4137
+ },
4138
+ "viewer": {
4139
+ "notFound": "Portfolio not found",
4140
+ "notFoundDesc": "This user hasn't published a portfolio yet.",
4141
+ "loginToSeeMore": "Log in to see more content",
4142
+ "backToPortal": "Back to portal"
4143
+ }
4144
+ },
4145
+ "cli": {
4146
+ "helpHeader": "aimeat — AI Memory Exchange and Action Transfer protocol node",
4147
+ "startDesc": "Start the node",
4148
+ "configDesc": "Show all settings and their current values",
4149
+ "configExportDesc": "Export config to file or Consul",
4150
+ "configImportDesc": "Import config from file or Consul into database",
4151
+ "validateDesc": "Validate configuration (env, files, database)",
4152
+ "initDesc": "Interactive config wizard",
4153
+ "importSuccess": "Imported {count} values to database ({skipped} skipped)",
4154
+ "importRequiresDb": "Config import requires a persistent database (MongoDB or SQLite). Current storage: {type}",
4155
+ "importNoFile": "File not found: {path}",
4156
+ "importConfirm": "Import {mutable} mutable values to database? ({immutable} immutable and {unknown} unknown will be skipped)",
4157
+ "exportSuccess": "Exported {count} config values in {format} format",
4158
+ "migrationHint": "Tip: To migrate .env to database, run: aimeat config import --file .env"
4159
+ },
4160
+ "knowledge": {
4161
+ "tabLabel": "Knowledge",
4162
+ "actionBar": {
4163
+ "copyHumanPrompt": "Copy Prompt for AI Chat",
4164
+ "copyAgentPrompt": "Copy Prompt for OpenClaw",
4165
+ "description": "Use these prompts to package research, ideas, or any content into structured knowledge. Paste the prompt into your AI Chat or give it to your OpenClaw agent."
4166
+ },
4167
+ "import": {
4168
+ "title": "Import Knowledge Package",
4169
+ "placeholder": "Paste what your AI Chat produced here",
4170
+ "uploadFile": "Upload File",
4171
+ "agentNote": "Agents upload automatically — you don't need to paste anything if you used OpenClaw.",
4172
+ "preview": "Package Preview",
4173
+ "ghiiConfirm": "This will be stored under: {ghii}",
4174
+ "ghiiMismatch": "This package was created for {ghii}. Import anyway as your own?",
4175
+ "catalogToggle": "List in shared knowledge catalog?",
4176
+ "organismShare": "Share with an organism?",
4177
+ "confirmImport": "Confirm Import",
4178
+ "willCreate": "Will create {entries} memories and {consents} consent grants",
4179
+ "success": "Package imported successfully!",
4180
+ "error": "Failed to import package"
4181
+ },
4182
+ "myKnowledge": {
4183
+ "title": "My Knowledge",
4184
+ "empty": "No knowledge packages yet. Use the prompts above to create your first package!",
4185
+ "cloned": "Cloned",
4186
+ "draft": "Draft",
4187
+ "entries": "{count} entries",
4188
+ "clones": "{count} clones",
4189
+ "viewEdit": "View / Edit",
4190
+ "shareSettings": "Share Settings",
4191
+ "export": "Export",
4192
+ "exportCopied": "Package JSON copied to clipboard",
4193
+ "confirmDelete": "Delete \"{name}\"? This cannot be undone.",
4194
+ "deleted": "Package deleted",
4195
+ "deleteError": "Failed to delete package",
4196
+ "catalogListed": "Listed in catalogue",
4197
+ "allowClone": "Allow cloning",
4198
+ "saved": "Settings saved",
4199
+ "saveError": "Failed to save settings",
4200
+ "references": "References",
4201
+ "packageLevel": "package-level"
4202
+ },
4203
+ "sharedWithMe": {
4204
+ "title": "Shared With Me",
4205
+ "empty": "No one has shared knowledge packages with you yet.",
4206
+ "cloneToMine": "Clone to My Knowledge",
4207
+ "viewOriginal": "View Original"
4208
+ },
4209
+ "organisms": {
4210
+ "title": "Knowledge Organisms",
4211
+ "empty": "You're not part of any knowledge-sharing organisms.",
4212
+ "contribute": "Contribute",
4213
+ "packages": "{count} packages",
4214
+ "members": "{count} members"
4215
+ },
4216
+ "discover": {
4217
+ "title": "Discover",
4218
+ "search": "Search knowledge...",
4219
+ "empty": "No shared knowledge packages found.",
4220
+ "cloneToMine": "Clone to My Knowledge",
4221
+ "cloneDisabled": "Cloning not available",
4222
+ "viewDetails": "View Details",
4223
+ "trustAdvisory": "Verify critical information independently before relying on it."
4224
+ },
4225
+ "contentTypes": {
4226
+ "idea": "Idea",
4227
+ "research": "Research",
4228
+ "plan": "Plan",
4229
+ "dataset": "Dataset",
4230
+ "document": "Document",
4231
+ "tutorial": "Tutorial",
4232
+ "collection": "Collection",
4233
+ "article": "Article",
4234
+ "story": "Story",
4235
+ "fiction": "Fiction"
4236
+ },
4237
+ "synthesis": {
4238
+ "original": "Original",
4239
+ "assisted": "AI Assisted",
4240
+ "synthesized": "AI Synthesized",
4241
+ "ai-generated": "AI Generated"
4242
+ },
4243
+ "maturity": {
4244
+ "draft": "Draft",
4245
+ "review": "In Review",
4246
+ "published": "Published"
4247
+ },
4248
+ "visibility": {
4249
+ "public": "Public",
4250
+ "private": "Private",
4251
+ "owner": "Shared"
4252
+ },
4253
+ "operator": {
4254
+ "tabLabel": "Knowledge",
4255
+ "review": "Review",
4256
+ "systemSection": "System Knowledge",
4257
+ "systemDesc": "Create and manage node-wide knowledge packages accessible to all users or operators only.",
4258
+ "allPackages": "All Knowledge Packages",
4259
+ "createPackage": "Create System Package",
4260
+ "editPackage": "Edit",
4261
+ "deletePackage": "Delete",
4262
+ "confirmDelete": "Delete this package? This cannot be undone.",
4263
+ "createForm": {
4264
+ "name": "Package name",
4265
+ "contentType": "Content type",
4266
+ "tags": "Tags (comma separated)",
4267
+ "maturity": "Maturity",
4268
+ "visibility": "Visibility",
4269
+ "visibilityPublic": "Public — everyone can see",
4270
+ "visibilityOperator": "Operator only — sysadmins and their agents",
4271
+ "catalogListed": "List in public catalogue",
4272
+ "entryTitle": "Entry title",
4273
+ "entryContent": "Content",
4274
+ "addEntry": "Add entry",
4275
+ "removeEntry": "Remove",
4276
+ "submit": "Create Package",
4277
+ "success": "System knowledge package created!",
4278
+ "error": "Failed to create package"
4279
+ },
4280
+ "showFlaggedOnly": "Show flagged only",
4281
+ "noPackages": "No knowledge packages found",
4282
+ "flags": "{count} flags",
4283
+ "reasons": {
4284
+ "routine_review": "Routine review",
4285
+ "legal_compliance": "Legal compliance check",
4286
+ "community_report": "Community report",
4287
+ "content_quality": "Content quality check",
4288
+ "storage_issue": "Storage issue",
4289
+ "custom": "Custom"
4290
+ },
4291
+ "actions": {
4292
+ "approve": "Approve",
4293
+ "flag": "Flag",
4294
+ "delist": "Delist",
4295
+ "restrict": "Restrict",
4296
+ "note": "Add Note"
4297
+ },
4298
+ "reviewedBy": "Reviewed by {operator} on {date}",
4299
+ "reason": "Reason: {reason}",
4300
+ "reasonLabel": "Reason",
4301
+ "actionLabel": "Action",
4302
+ "customReason": "Custom reason...",
4303
+ "submitReview": "Submit Review"
4304
+ }
4305
+ },
4306
+ "organisms": {
4307
+ "title": "Organisms",
4308
+ "desc": "Organisms are groups — communities, teams, clubs, or projects. Create one or join existing ones to share knowledge, coordinate work, and build together.",
4309
+ "loading": "Loading organisms...",
4310
+ "empty": "You are not part of any organisms yet.",
4311
+ "myOrganisms": "My Organisms",
4312
+ "discover": "Discover",
4313
+ "createNew": "Create Organism",
4314
+ "createTitle": "Create New Organism",
4315
+ "namePlaceholder": "Name",
4316
+ "descPlaceholder": "Description",
4317
+ "interestsPlaceholder": "Interests (comma separated)",
4318
+ "nameRequired": "Name is required",
4319
+ "created": "Organism created!",
4320
+ "createError": "Failed to create",
4321
+ "join": "Join",
4322
+ "joined": "Joined!",
4323
+ "joinPending": "Join request sent — waiting for approval",
4324
+ "joinError": "Failed to join",
4325
+ "leave": "Leave",
4326
+ "confirmLeave": "Leave \"{name}\"?",
4327
+ "left": "Left organism",
4328
+ "leaveError": "Failed to leave",
4329
+ "delete": "Delete",
4330
+ "confirmDelete": "Delete \"{name}\"? This cannot be undone.",
4331
+ "deleted": "Organism deleted",
4332
+ "deleteError": "Failed to delete",
4333
+ "creator": "Creator",
4334
+ "admins": "Admins",
4335
+ "members": "members",
4336
+ "memberCount": "Members",
4337
+ "board": "Board",
4338
+ "createdAt": "Created",
4339
+ "cancel": "Cancel",
4340
+ "create": "Create",
4341
+ "edit": "Edit",
4342
+ "save": "Save",
4343
+ "updated": "Organism updated",
4344
+ "updateError": "Failed to update",
4345
+ "policyOpen": "Open",
4346
+ "policyApproval": "Approval required",
4347
+ "policyInvite": "Invite only",
4348
+ "visPublic": "Public",
4349
+ "visListed": "Listed",
4350
+ "visPrivate": "Private",
4351
+ "types": {
4352
+ "community": "Community",
4353
+ "team": "Team",
4354
+ "club": "Club",
4355
+ "cooperative": "Cooperative",
4356
+ "project": "Project"
4357
+ }
4358
+ },
4359
+ "tags": {
4360
+ "clear": "Clear",
4361
+ "addPlaceholder": "Add tag...",
4362
+ "editTags": "Edit tags",
4363
+ "noMatch": "No items match selected tags"
4364
+ },
4365
+ "agentConsent": {
4366
+ "title": "Agent Authorization",
4367
+ "codeLabel": "Verification Code",
4368
+ "codeHint": "Confirm this code matches what the agent showed you",
4369
+ "agentDetails": "Agent Details",
4370
+ "agentName": "Name",
4371
+ "agentDisplayName": "Display name",
4372
+ "agentDescription": "Description",
4373
+ "scopeLabel": "Permissions",
4374
+ "scopeReadonly": "Read only",
4375
+ "scopeReadonlyDesc": "Can read memory and wallet but cannot modify anything",
4376
+ "scopeStandard": "Standard",
4377
+ "scopeStandardDesc": "Can read and write memory, manage work, and read wallet",
4378
+ "scopeFull": "Full access",
4379
+ "scopeFullDesc": "Full access to all features",
4380
+ "scopeCustom": "Custom",
4381
+ "approve": "Approve",
4382
+ "deny": "Deny",
4383
+ "successTitle": "Agent Approved",
4384
+ "successMessage": "The agent has been registered and will connect shortly.",
4385
+ "deniedTitle": "Request Denied",
4386
+ "deniedMessage": "The authorization request has been denied.",
4387
+ "expiredTitle": "Request Expired",
4388
+ "expiredMessage": "This authorization request has expired. Please generate a new one.",
4389
+ "ownerMismatch": "This request is for a different account. Please log in as the correct user.",
4390
+ "invalidCode": "Invalid or expired verification code.",
4391
+ "login": {
4392
+ "title": "Sign in to approve",
4393
+ "username": "Username",
4394
+ "password": "Password",
4395
+ "totp": "TOTP code (if enabled)",
4396
+ "submit": "Sign in"
4397
+ }
4398
+ },
4399
+ "oauthConsent": {
4400
+ "title": "Authorize AI Connection",
4401
+ "subtitle": "An AI platform wants to connect to your AIMEAT node",
4402
+ "platformLabel": "Platform requesting access:",
4403
+ "loginRequired": "Sign in to approve this connection",
4404
+ "loginBtn": "Sign In",
4405
+ "selectAgent": "Which agent should this platform use?",
4406
+ "noAgents": "You have no agents. Create one first in your profile.",
4407
+ "noAgentsCreate": "You don't have any agents yet. Create one to authorize this connection.",
4408
+ "createNewAgent": "Create new agent",
4409
+ "newAgentName": "Agent name (3-64 chars, lowercase letters, numbers, hyphens)",
4410
+ "newAgentDisplayName": "Display name (optional)",
4411
+ "newAgentDisplayNameHint": "e.g. My Claude Agent",
4412
+ "newAgentNameError": "Name must be 3-64 characters: lowercase letters, numbers, and hyphens only. Must start and end with a letter or number.",
4413
+ "createBtn": "Create",
4414
+ "cancelBtn": "Cancel",
4415
+ "scopeLabel": "Permissions requested:",
4416
+ "scopeFull": "Full access — memory, wallet, actions, boards, storage",
4417
+ "walletNote": "This agent's morsel wallet will be used for all transactions",
4418
+ "approveBtn": "Approve Connection",
4419
+ "denyBtn": "Deny",
4420
+ "approving": "Approving...",
4421
+ "errorGeneric": "Something went wrong. Please try again.",
4422
+ "denied": "Connection denied. You can close this window.",
4423
+ "usernameLabel": "Username",
4424
+ "passwordLabel": "Password",
4425
+ "totpLabel": "2FA Code (if enabled)",
4426
+ "morsels": "morsels",
4427
+ "doneTitle": "Done",
4428
+ "authCodeLabel": "Authorization code:",
4429
+ "authCodeHint": "Paste this code back into the application that requested access.",
4430
+ "copyBtn": "Copy",
4431
+ "copiedBtn": "Copied!"
4432
+ },
4433
+ "packages": {
4434
+ "created": "Package created",
4435
+ "updated": "Package updated",
4436
+ "archived": "Package archived",
4437
+ "notFound": "Package not found",
4438
+ "versionCreated": "New version published",
4439
+ "invalidInput": "Invalid input",
4440
+ "limitExceeded": "Package limit exceeded",
4441
+ "insufficientRole": "Insufficient role to create packages",
4442
+ "installed": "Package installed successfully",
4443
+ "instanceNotFound": "Instance not found",
4444
+ "instanceRemoved": "Instance removed",
4445
+ "noUpdateAvailable": "No update available",
4446
+ "updateAvailable": "Update available",
4447
+ "migrationApplied": "Migration applied successfully",
4448
+ "exportFailed": "Export failed",
4449
+ "importFailed": "Import failed",
4450
+ "myInstances": "My Instances",
4451
+ "browse": "Browse Packages",
4452
+ "gallery": "Template Gallery",
4453
+ "search": "Search...",
4454
+ "allCategories": "All Categories",
4455
+ "version": "Version",
4456
+ "components": "components",
4457
+ "by": "by",
4458
+ "install": "Install",
4459
+ "remove": "Remove",
4460
+ "checkUpdate": "Check Update",
4461
+ "noInstances": "No packages installed yet.",
4462
+ "noTemplates": "No templates available yet.",
4463
+ "labelPrompt": "Instance label (optional):",
4464
+ "confirmRemove": "Remove this instance?",
4465
+ "installs": "installs",
4466
+ "noPackages": "No packages available.",
4467
+ "openInGenerator": "Open in Generator",
4468
+ "editInGenerator": "Edit in Generator",
4469
+ "importingPackage": "Importing package to generator...",
4470
+ "importSuccess": "Package imported as generator project",
4471
+ "forkedFrom": "Based on {name}",
4472
+ "status": {
4473
+ "pending_review": "Pending Review",
4474
+ "rejected": "Rejected",
4475
+ "suspended": "Suspended",
4476
+ "listed": "Published",
4477
+ "unlisted": "Private"
4478
+ },
4479
+ "uploadZip": "Upload ZIP",
4480
+ "downloadZip": "Download ZIP",
4481
+ "proposeAsTemplate": "Propose as Template",
4482
+ "proposePending": "Proposal submitted for review",
4483
+ "moderation": {
4484
+ "pendingReview": "Pending Review",
4485
+ "approve": "Approve",
4486
+ "reject": "Reject",
4487
+ "suspend": "Suspend",
4488
+ "review": "Review",
4489
+ "rejectionReason": "Rejection Reason",
4490
+ "approvalComment": "Comment (optional)",
4491
+ "reasonRequired": "Reason is required",
4492
+ "history": "Moderation History",
4493
+ "reviewedBy": "Reviewed by",
4494
+ "noItems": "No pending reviews"
4495
+ },
4496
+ "error": {
4497
+ "invalidFormat": "File is not a valid ZIP archive",
4498
+ "sizeExceeded": "ZIP exceeds size limit",
4499
+ "decompressionBomb": "Decompressed content exceeds safety limits",
4500
+ "pathTraversal": "Archive contains unsafe file paths",
4501
+ "missingManifest": "manifest.yaml not found in archive",
4502
+ "nameConflict": "Package name already exists",
4503
+ "missingComponent": "Component file not found in archive"
4504
+ },
4505
+ "federation": {
4506
+ "remoteTemplates": "Remote Templates",
4507
+ "syncFromFederation": "Sync from Federation",
4508
+ "sourceNode": "Source Node",
4509
+ "installFromRemote": "Install from Remote",
4510
+ "syncSuccess": "Federation sync complete"
4511
+ },
4512
+ "gallery": {
4513
+ "install": "Install",
4514
+ "downloadZip": "Download ZIP",
4515
+ "components": "Components",
4516
+ "rating": "Rating",
4517
+ "installs": "Installs"
4518
+ }
4519
+ },
4520
+ "templates": {
4521
+ "created": "Template listing created",
4522
+ "updated": "Template listing updated",
4523
+ "deleted": "Template listing deleted",
4524
+ "notFound": "Template listing not found",
4525
+ "reviewAdded": "Review added",
4526
+ "reviewUpdated": "Review updated",
4527
+ "discussionAdded": "Discussion message added",
4528
+ "invalidRating": "Rating must be between 1 and 5",
4529
+ "featuredToggled": "Featured status updated",
4530
+ "alreadyExists": "Listing already exists for this package"
4531
+ },
4532
+ "auth": {
4533
+ "forgotPassword": "Forgot password?",
4534
+ "forgotUsername": "Forgot username?",
4535
+ "sendResetCode": "Send Reset Code",
4536
+ "resetCodeSent": "If your account has a verified email, a reset code was sent.",
4537
+ "enterNewPassword": "Enter your new password",
4538
+ "resetPassword": "Reset Password",
4539
+ "resetSuccess": "Password reset successful! You can now sign in.",
4540
+ "sendUsername": "Send My Username",
4541
+ "usernameSent": "If an account with that email exists, your username was sent.",
4542
+ "backToLogin": "Back to Login"
4543
+ },
4544
+ "aimeatOs": {
4545
+ "title": "Build Your Own App",
4546
+ "subtitle": "Use any AI chat to design and build a standalone HTML application that connects to your AIMEAT node. Download the guide below and give it to the AI as context.",
4547
+ "step1Title": "1. Download the guide",
4548
+ "step1Desc": "Get the AIMEAT-OS.md file — it contains everything an AI needs to build your app.",
4549
+ "step2Title": "2. Give it to an AI chat",
4550
+ "step2Desc": "Open Claude, ChatGPT, or any AI chat. Upload the guide and describe what you want to build.",
4551
+ "step3Title": "3. Upload your app",
4552
+ "step3Desc": "When the AI produces a finished HTML file, come back and add it to your apps.",
4553
+ "downloadBtn": "Download AIMEAT-OS.md",
4554
+ "downloadHint": "Comprehensive guide for AI assistants — includes full API reference, example prompts, and everything needed to build AIMEAT apps.",
4555
+ "addAppBtn": "Add new app",
4556
+ "generatorHint": "Building something more complex with background services and data pipelines?",
4557
+ "generatorLink": "Try the Generator"
4558
+ },
4559
+ "help": {
4560
+ "title": "Help your AI work with AIMEAT",
4561
+ "description": "If your AI assistant is having trouble connecting to or using this node, copy the prompt below and paste it into your AI chat. It will guide your AI through connecting, authenticating, and using all available features.",
4562
+ "copyBtn": "Copy to clipboard",
4563
+ "copied": "Copied!",
4564
+ "loadError": "Failed to load help prompt."
4565
+ }
4566
+ }