aimeat 1.23.1 → 1.23.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/locales/en.json +674 -125
  2. package/dist/locales/fi.json +712 -163
  3. package/dist/public/components/ContactCard.js +28 -0
  4. package/dist/public/css/theme.css +25 -10
  5. package/dist/public/css/views/admin.css +12 -0
  6. package/dist/public/css/views/agents-detail.css +62 -10
  7. package/dist/public/css/views/landing.css +87 -0
  8. package/dist/public/css/views/offers.css +96 -0
  9. package/dist/public/css/views/portfolio.css +18 -0
  10. package/dist/public/css/views/profile.css +216 -7
  11. package/dist/public/css/views/start.css +96 -0
  12. package/dist/public/img/business-hero.png +0 -0
  13. package/dist/public/img/toimitus.png +0 -0
  14. package/dist/public/js/components/tag-cloud.js +46 -31
  15. package/dist/public/js/components/tag-editor.js +2 -2
  16. package/dist/public/js/recents.js +40 -0
  17. package/dist/public/js/services/admin.js +6 -0
  18. package/dist/public/js/services/agents.js +34 -0
  19. package/dist/public/js/services/offers.js +152 -0
  20. package/dist/public/js/services/organisms.js +28 -5
  21. package/dist/public/js/services/packages.js +1 -0
  22. package/dist/public/spa.html +32 -2
  23. package/dist/public/views/admin/subdomains-tab.js +182 -0
  24. package/dist/public/views/admin.js +2 -0
  25. package/dist/public/views/business.js +119 -0
  26. package/dist/public/views/how-it-works.js +159 -0
  27. package/dist/public/views/landing.js +235 -0
  28. package/dist/public/views/portfolio.js +120 -23
  29. package/dist/public/views/pricing.js +75 -0
  30. package/dist/public/views/profile/access-tab.js +124 -51
  31. package/dist/public/views/profile/agents/agent-card.js +68 -37
  32. package/dist/public/views/profile/agents/shared-board.js +56 -22
  33. package/dist/public/views/profile/agents/tab-activity.js +24 -12
  34. package/dist/public/views/profile/agents/tab-agent-config.js +31 -1
  35. package/dist/public/views/profile/agents/tab-data-access.js +9 -13
  36. package/dist/public/views/profile/agents/tab-integration.js +27 -1
  37. package/dist/public/views/profile/agents/tab-messages.js +6 -11
  38. package/dist/public/views/profile/agents/tab-quality.js +45 -5
  39. package/dist/public/views/profile/agents-tab.js +41 -6
  40. package/dist/public/views/profile/apps-tab.js +7 -1
  41. package/dist/public/views/profile/knowledge-tab.js +4 -1
  42. package/dist/public/views/profile/landing-page.js +427 -123
  43. package/dist/public/views/profile/memory-tab.js +409 -211
  44. package/dist/public/views/profile/nodes-tab.js +18 -3
  45. package/dist/public/views/profile/offers-tab.js +310 -0
  46. package/dist/public/views/profile/organisms-tab.js +1330 -485
  47. package/dist/public/views/profile/packages-tab.js +152 -16
  48. package/dist/public/views/profile/portfolio-tab.js +98 -31
  49. package/dist/public/views/profile.js +2 -0
  50. package/dist/public/views/start-flows.js +281 -0
  51. package/dist/public/views/start.js +258 -0
  52. package/dist/src/cli/connect/mcp/tools/organisms.d.ts +3 -0
  53. package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
  54. package/dist/src/cli/connect/mcp/tools/organisms.js +20 -3
  55. package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
  56. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  57. package/dist/src/cli/connect/tool-call.js +20 -1
  58. package/dist/src/cli/connect/tool-call.js.map +1 -1
  59. package/dist/src/generated/api-types.d.ts +856 -17
  60. package/dist/src/generated/api-types.d.ts.map +1 -1
  61. package/dist/src/generated/prisma-postgres/edge.js +15 -3
  62. package/dist/src/generated/prisma-postgres/index-browser.js +12 -0
  63. package/dist/src/generated/prisma-postgres/index.d.ts +1476 -160
  64. package/dist/src/generated/prisma-postgres/index.js +15 -3
  65. package/dist/src/generated/prisma-postgres/package.json +1 -1
  66. package/dist/src/generated/prisma-postgres/schema.prisma +11 -0
  67. package/dist/src/generated/prisma-postgres/wasm.js +15 -3
  68. package/dist/src/mcp/organisms.d.ts +3 -0
  69. package/dist/src/mcp/organisms.d.ts.map +1 -1
  70. package/dist/src/mcp/organisms.js +18 -0
  71. package/dist/src/mcp/organisms.js.map +1 -1
  72. package/dist/src/middleware/subdomain.d.ts +28 -0
  73. package/dist/src/middleware/subdomain.d.ts.map +1 -0
  74. package/dist/src/middleware/subdomain.js +32 -0
  75. package/dist/src/middleware/subdomain.js.map +1 -0
  76. package/dist/src/models/offer-schemas.d.ts +229 -0
  77. package/dist/src/models/offer-schemas.d.ts.map +1 -0
  78. package/dist/src/models/offer-schemas.js +100 -0
  79. package/dist/src/models/offer-schemas.js.map +1 -0
  80. package/dist/src/routes/agent-tasks.d.ts.map +1 -1
  81. package/dist/src/routes/agent-tasks.js +33 -0
  82. package/dist/src/routes/agent-tasks.js.map +1 -1
  83. package/dist/src/routes/agents.d.ts.map +1 -1
  84. package/dist/src/routes/agents.js +146 -1
  85. package/dist/src/routes/agents.js.map +1 -1
  86. package/dist/src/routes/apps-backup.d.ts +20 -0
  87. package/dist/src/routes/apps-backup.d.ts.map +1 -0
  88. package/dist/src/routes/apps-backup.js +165 -0
  89. package/dist/src/routes/apps-backup.js.map +1 -0
  90. package/dist/src/routes/ghii.d.ts.map +1 -1
  91. package/dist/src/routes/ghii.js +4 -0
  92. package/dist/src/routes/ghii.js.map +1 -1
  93. package/dist/src/routes/instances.d.ts +2 -1
  94. package/dist/src/routes/instances.d.ts.map +1 -1
  95. package/dist/src/routes/instances.js +59 -1
  96. package/dist/src/routes/instances.js.map +1 -1
  97. package/dist/src/routes/organisms.d.ts.map +1 -1
  98. package/dist/src/routes/organisms.js +27 -5
  99. package/dist/src/routes/organisms.js.map +1 -1
  100. package/dist/src/routes/packages.d.ts.map +1 -1
  101. package/dist/src/routes/packages.js +32 -0
  102. package/dist/src/routes/packages.js.map +1 -1
  103. package/dist/src/routes/permissions.d.ts +12 -0
  104. package/dist/src/routes/permissions.d.ts.map +1 -1
  105. package/dist/src/routes/permissions.js +35 -3
  106. package/dist/src/routes/permissions.js.map +1 -1
  107. package/dist/src/routes/portal.d.ts +3 -0
  108. package/dist/src/routes/portal.d.ts.map +1 -1
  109. package/dist/src/routes/portal.js +12 -0
  110. package/dist/src/routes/portal.js.map +1 -1
  111. package/dist/src/routes/public-stats.d.ts +15 -0
  112. package/dist/src/routes/public-stats.d.ts.map +1 -0
  113. package/dist/src/routes/public-stats.js +90 -0
  114. package/dist/src/routes/public-stats.js.map +1 -0
  115. package/dist/src/routes/sse.d.ts +7 -2
  116. package/dist/src/routes/sse.d.ts.map +1 -1
  117. package/dist/src/routes/sse.js +35 -5
  118. package/dist/src/routes/sse.js.map +1 -1
  119. package/dist/src/routes/subdomains.d.ts +33 -0
  120. package/dist/src/routes/subdomains.d.ts.map +1 -0
  121. package/dist/src/routes/subdomains.js +208 -0
  122. package/dist/src/routes/subdomains.js.map +1 -0
  123. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  124. package/dist/src/server-bootstrap/routes-loader.js +12 -1
  125. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  126. package/dist/src/server.d.ts.map +1 -1
  127. package/dist/src/server.js +4 -0
  128. package/dist/src/server.js.map +1 -1
  129. package/dist/src/services/apps-backup-export.d.ts +22 -0
  130. package/dist/src/services/apps-backup-export.d.ts.map +1 -0
  131. package/dist/src/services/apps-backup-export.js +136 -0
  132. package/dist/src/services/apps-backup-export.js.map +1 -0
  133. package/dist/src/services/apps-backup-import.d.ts +120 -0
  134. package/dist/src/services/apps-backup-import.d.ts.map +1 -0
  135. package/dist/src/services/apps-backup-import.js +259 -0
  136. package/dist/src/services/apps-backup-import.js.map +1 -0
  137. package/dist/src/services/component-registrar.d.ts +17 -0
  138. package/dist/src/services/component-registrar.d.ts.map +1 -1
  139. package/dist/src/services/component-registrar.js +63 -5
  140. package/dist/src/services/component-registrar.js.map +1 -1
  141. package/dist/src/services/handbooks/appdev.d.ts +1 -1
  142. package/dist/src/services/handbooks/appdev.d.ts.map +1 -1
  143. package/dist/src/services/handbooks/appdev.js +5 -2
  144. package/dist/src/services/handbooks/appdev.js.map +1 -1
  145. package/dist/src/services/schema-validator.d.ts.map +1 -1
  146. package/dist/src/services/schema-validator.js +12 -0
  147. package/dist/src/services/schema-validator.js.map +1 -1
  148. package/dist/src/storage/interface.d.ts +11 -1
  149. package/dist/src/storage/interface.d.ts.map +1 -1
  150. package/dist/src/storage/interface.js.map +1 -1
  151. package/dist/src/storage/providers/mongodb/index.d.ts +10 -1
  152. package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
  153. package/dist/src/storage/providers/mongodb/index.js +76 -0
  154. package/dist/src/storage/providers/mongodb/index.js.map +1 -1
  155. package/dist/src/storage/providers/sqlite/index.d.ts +8 -1
  156. package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
  157. package/dist/src/storage/providers/sqlite/index.js +61 -0
  158. package/dist/src/storage/providers/sqlite/index.js.map +1 -1
  159. package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
  160. package/dist/src/storage/providers/sqlite/schema.js +11 -0
  161. package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
  162. package/dist/src/storage/repositories/index.d.ts +1 -0
  163. package/dist/src/storage/repositories/index.d.ts.map +1 -1
  164. package/dist/src/storage/repositories/package.repository.d.ts +2 -0
  165. package/dist/src/storage/repositories/package.repository.d.ts.map +1 -1
  166. package/dist/src/storage/repositories/subdomain-site.repository.d.ts +19 -0
  167. package/dist/src/storage/repositories/subdomain-site.repository.d.ts.map +1 -0
  168. package/dist/src/storage/repositories/subdomain-site.repository.js +2 -0
  169. package/dist/src/storage/repositories/subdomain-site.repository.js.map +1 -0
  170. package/dist/static/app-catalog.html +1139 -28
  171. package/package.json +1 -1
  172. package/prisma/schema.postgres.prisma +11 -0
  173. package/prisma/schema.prisma +11 -0
@@ -126,7 +126,9 @@
126
126
  "help": "Apua",
127
127
  "admin": "Hallinta",
128
128
  "themeToDark": "Vaihda tummaan tilaan",
129
- "themeToLight": "Vaihda vaaleaan tilaan"
129
+ "themeToLight": "Vaihda vaaleaan tilaan",
130
+ "howItWorks": "Miten se toimii",
131
+ "business": "Yrityksellesi"
130
132
  },
131
133
  "hero": {
132
134
  "title": "Tietosi on sinun. AI:si työskentelee puolestasi.",
@@ -340,6 +342,7 @@
340
342
  },
341
343
  "tabs": {
342
344
  "agents": "Agentit",
345
+ "offers": "Tarjoama",
343
346
  "chatSessions": "Keskustelusessiot",
344
347
  "mcp": "MCP",
345
348
  "wallet": "Lompakko",
@@ -360,6 +363,72 @@
360
363
  "organisms": "Organismit",
361
364
  "packages": "Paketit"
362
365
  },
366
+ "offers": {
367
+ "title": "Mitä voin tehdä?",
368
+ "desc": "Kaikki mitä agenttisi voivat tehdä puolestasi — hae ja pyydä. Ei klikkailua agentti agentilta ja välilehti välilehdeltä.",
369
+ "searchPlaceholder": "Mitä haluat tehdä?…",
370
+ "empty": "Yksikään agenttisi ei vielä julkaise tarjouksia.",
371
+ "noMatch": "Ei osumia.",
372
+ "run": "▶ Aja",
373
+ "copyPrompt": "⧉ Kopioi kehote",
374
+ "runNow": "⏱ Aja nyt",
375
+ "example": "Esimerkki",
376
+ "requirements": "Ennen pyytämistä",
377
+ "consequences": "Mitä tämä tekee",
378
+ "deliverable": "Saat takaisin",
379
+ "untested": "testaamaton — ei vielä näytettä",
380
+ "requestPlaceholder": "Pyyntösi (valinnainen — täyttää esimerkin)…",
381
+ "promptCopied": "Kehote kopioitu — liitä se agentin chattiin.",
382
+ "triggered": "Ajastus laukaistu.",
383
+ "requested": "Pyydetty — tehtävä jonossa agentille {agent}.",
384
+ "askFailed": "Pyyntö epäonnistui",
385
+ "confirmAsk": "Tällä on pysyviä vaikutuksia ({effects}). Pyydetäänkö silti?",
386
+ "online": "online",
387
+ "offline": "offline",
388
+ "provenance": "Lähde",
389
+ "task": "tehtävä",
390
+ "queued": "jonossa",
391
+ "inboxTitle": "Mitä tuli takaisin",
392
+ "inboxDesc": "Kaikki mitä agenttisi toimittivat — tarkista ja arvioi, yhdessä paikassa.",
393
+ "segDo": "Tee",
394
+ "segInbox": "Saapuneet",
395
+ "inboxEmpty": "Mitään ei ole vielä tullut takaisin. Pyydä agentilta jotain “Mitä voin tehdä?” -näkymässä.",
396
+ "expected": "Odotettu",
397
+ "failedMsg": "Tämä tehtävä epäonnistui — toimitusta ei syntynyt.",
398
+ "deliverableGone": "Toimitus ei ole enää saatavilla.",
399
+ "noDeliverableYet": "Ei vielä toimitusta.",
400
+ "rateIt": "Arvioi",
401
+ "yourRating": "Arviosi",
402
+ "ratePlaceholder": "Valinnainen huomio…",
403
+ "submitRating": "Lähetä",
404
+ "rated": "Kiitos — arvioitu.",
405
+ "rateFailed": "Arviointi epäonnistui",
406
+ "selling": "Myynti",
407
+ "priceMorsels": "Hinta",
408
+ "morsels": "morselia",
409
+ "perCall": "kutsu",
410
+ "saveBilling": "Tallenna",
411
+ "billSaved": "Tallennettu.",
412
+ "billSaveFailed": "Tallennus epäonnistui",
413
+ "billHint": "Muut maksavat {n} morselia/kutsu; saat sen miinus markkinapaikan palkkio. Oma käyttösi on ilmaista.",
414
+ "notCallableHint": "Ei vielä koneellisesti kutsuttavissa — muut löytävät sen, mutta kutsuminen vaatii kyvykkyyssidoksen (action_id).",
415
+ "openInbox": "Katso Inboxista →",
416
+ "visibility": { "private": "Yksityinen (vain minä)", "unlisted": "Listaamaton (linkillä)", "public": "Julkinen (listattu)" },
417
+ "status": { "done": "valmis", "failed": "epäonnistui", "active": "käynnissä", "paused": "tauolla", "stalled": "jumissa", "queued": "jonossa", "revision_requested": "muutospyyntö", "draft": "luonnos" },
418
+ "verification": { "deterministic": "deterministinen", "gated": "varmennettu", "ungated": "varmentamaton" },
419
+ "dataHandling": { "local-only": "vain paikallinen", "llm-provider": "LLM:n kautta", "third-party": "kolmas osapuoli" },
420
+ "cost": { "free": "ilmainen", "cheap": "halpa", "expensive": "$$$" },
421
+ "latency": { "seconds": "sekunteja", "minutes": "minuutteja", "long-running": "pitkäkestoinen" },
422
+ "consequence": {
423
+ "creates-agent": "luo agentin",
424
+ "creates-schedule": "luo ajastuksen",
425
+ "mutates-host": "ajaa koneellasi",
426
+ "publishes-public": "julkaisee julkisesti",
427
+ "external-send": "lähettää ulkoisesti",
428
+ "mutates-live-app": "muuttaa live-sovellusta",
429
+ "delegates-to-agent": "delegoi muille agenteille"
430
+ }
431
+ },
363
432
  "agents": {
364
433
  "title": "Agenttisi",
365
434
  "active": {
@@ -399,7 +468,17 @@
399
468
  "roles": "Roolit",
400
469
  "created": "Luotu",
401
470
  "publicKey": "Julkinen avain",
402
- "capabilities": "Kyvyt",
471
+ "capabilities": {
472
+ "technical": "Tekniset taidot",
473
+ "domain": "Osaamisalueet",
474
+ "actionQueue": "Toimintajonotuki",
475
+ "verified": "vahvistettu",
476
+ "selfReported": "itse ilmoitettu",
477
+ "empty": "Kyvykkyyksiä ei vielä ilmoitettu",
478
+ "canAccept": "Voi vastaanottaa toimeksiantoja",
479
+ "canDeliver": "Voi toimittaa tuloksia",
480
+ "languages": "Kielet"
481
+ },
403
482
  "description": "Kuvaus",
404
483
  "deleteAgent": "Poista agentti",
405
484
  "deleteConfirm": "Poista agentti",
@@ -566,7 +645,12 @@
566
645
  "toggle": "Haku",
567
646
  "placeholder": "Hae tehtäviä…",
568
647
  "noResults": "Mikään tehtävä ei vastaa hakua.",
569
- "time": { "all": "Kaikki", "today": "Tänään", "7d": "7pv", "30d": "30pv" }
648
+ "time": {
649
+ "all": "Kaikki",
650
+ "today": "Tänään",
651
+ "7d": "7pv",
652
+ "30d": "30pv"
653
+ }
570
654
  },
571
655
  "triage": {
572
656
  "keep": "Talteen",
@@ -636,7 +720,6 @@
636
720
  "success": "Arvio tallennettu",
637
721
  "error": "Arvion tallennus epäonnistui"
638
722
  },
639
- "cancel": "Peruuta",
640
723
  "cancelConfirm": "Peruutetaanko tämä tehtävä? Aloittamaton työ ohitetaan",
641
724
  "cancelled": "Tehtävä peruutettu",
642
725
  "cancelError": "Tehtävän peruutus epäonnistui",
@@ -718,17 +801,6 @@
718
801
  "saving": "Tallennetaan...",
719
802
  "resetDefaults": "Palauta oletukset"
720
803
  },
721
- "capabilities": {
722
- "technical": "Tekniset taidot",
723
- "domain": "Osaamisalueet",
724
- "actionQueue": "Toimintajonotuki",
725
- "verified": "vahvistettu",
726
- "selfReported": "itse ilmoitettu",
727
- "empty": "Kyvykkyyksiä ei vielä ilmoitettu",
728
- "canAccept": "Voi vastaanottaa toimeksiantoja",
729
- "canDeliver": "Voi toimittaa tuloksia",
730
- "languages": "Kielet"
731
- },
732
804
  "activity": {
733
805
  "tasksCompleted": "Tehtäviä suoritettu",
734
806
  "tokensUsed": "Tokeneita käytetty (30pv)",
@@ -966,7 +1038,8 @@
966
1038
  "promptCopied": "Ohje kopioitu",
967
1039
  "copyInstallCommand": "Kopioi asennuskomento",
968
1040
  "installCommandCopied": "Asennuskomento kopioitu",
969
- "noDeliveries": "Ei toimituksia vielä."
1041
+ "noDeliveries": "Ei toimituksia vielä.",
1042
+ "setupWebhook": "Ota webhook käyttöön"
970
1043
  },
971
1044
  "messages": {
972
1045
  "commands": {
@@ -1040,7 +1113,8 @@
1040
1113
  "sortUpdated": "Viimeksi päivitetty",
1041
1114
  "sortCreated": "Luotu",
1042
1115
  "sortNewestFirst": "Uusin ensin",
1043
- "sortOldestFirst": "Vanhin ensin"
1116
+ "sortOldestFirst": "Vanhin ensin",
1117
+ "noneInline": "ei yhtään"
1044
1118
  },
1045
1119
  "agent_config": {
1046
1120
  "copy": "Kopioi",
@@ -1053,7 +1127,10 @@
1053
1127
  "saveError": "Asetustiedoston tallennus epäonnistui",
1054
1128
  "uploaded": "Asetustiedosto ladattu",
1055
1129
  "uploadError": "Asetustiedoston lataus epäonnistui",
1056
- "viewing": "Katsellaan"
1130
+ "viewing": "Katsellaan",
1131
+ "deleteTitle": "Poista tämä agentti",
1132
+ "deleteDesc": "Poistaa agentin, sen tunnukset ja tehtävähistorian. Ei voi perua.",
1133
+ "deleteConfirmLabel": "Vahvista kirjoittamalla agentin nimi"
1057
1134
  },
1058
1135
  "activity": {
1059
1136
  "filterAll": "Kaikki",
@@ -1075,7 +1152,9 @@
1075
1152
  "connected": "Yhdistetty",
1076
1153
  "mcpLabel": "MCP",
1077
1154
  "notConfigured": "Ei määritetty"
1078
- }
1155
+ },
1156
+ "notReported": "ei raportoitu",
1157
+ "deliveryPollingLine": "Toimitus: polling"
1079
1158
  },
1080
1159
  "directives": {
1081
1160
  "footer": "Direktiivit sisältyvät jokaiseen taitopaketin päivitykseen. Agentti vastaanottaa nämä käyttäytymisrajoituksina.",
@@ -1106,7 +1185,24 @@
1106
1185
  "agent_config": "Ei asetustiedostoja. Agentti lähettää asetustiedostot taitopaketin asennuksen jälkeen.",
1107
1186
  "activity": "Ei tallennettua toimintaa. Tapahtumat ilmestyvät tähän kun agentti aloittaa työskentelyn.",
1108
1187
  "services": "Ei ilmoitettuja palveluja. Agentti voi ilmoittaa palvelut Hello-integraation vaiheessa 11."
1109
- }
1188
+ },
1189
+ "capTools": "työkalua",
1190
+ "capSkills": "taitoa",
1191
+ "capLangs": "kieltä",
1192
+ "readinessTooltip": "Valmiuspisteet 0–100 käyttöönoton tarkistuksista. Tasot: none → basic → standard → advanced → full.",
1193
+ "federationLabel": "Federaatio",
1194
+ "federationOn": "päällä",
1195
+ "federationOff": "pois",
1196
+ "federationOnHint": "Jaettu federaation kautta — klikkaa muuttaaksesi vain paikalliseksi",
1197
+ "federationOffHint": "Vain paikallinen — klikkaa jakaaksesi federaation kautta"
1198
+ },
1199
+ "board": {
1200
+ "online": "aktiivinen",
1201
+ "quiet": "hiljainen",
1202
+ "onboarding": "käyttöönotossa",
1203
+ "issue": "ongelma",
1204
+ "newShort": "uusi",
1205
+ "issueShort": "ongelma"
1110
1206
  }
1111
1207
  },
1112
1208
  "scopes": {
@@ -1195,10 +1291,10 @@
1195
1291
  "visShared": "Jaettu",
1196
1292
  "visPublic": "Julkinen",
1197
1293
  "createSaveBtn": "Luo",
1198
- "membersTitle": "Taulun jäsenet",
1199
- "autoAccessInfo": "Kaikki agenttisi pääsevät automaattisesti jaettuihin tauluihin.",
1294
+ "membersTitle": "Ulkoiset jäsenet",
1295
+ "autoAccessInfo": "Kaikki agenttisi pääsevät automaattisesti jaettuihin boardeihin",
1200
1296
  "addMember": "Lisää",
1201
- "addMemberPlaceholder": "Syötä GAII (esim. agentti#omistaja@solmu)",
1297
+ "addMemberPlaceholder": "agentti#omistaja@solmu",
1202
1298
  "memberAdded": "Jäsen lisätty",
1203
1299
  "memberRemoved": "Jäsen poistettu",
1204
1300
  "memberError": "Jäsenten päivitys epäonnistui",
@@ -1207,13 +1303,8 @@
1207
1303
  "newPost": "Uusi viesti",
1208
1304
  "postsLoading": "Ladataan viestejä...",
1209
1305
  "postsError": "Viestien lataus epäonnistui.",
1210
- "membersTitle": "Ulkoiset jäsenet",
1211
- "autoAccessInfo": "Kaikki agenttisi pääsevät automaattisesti jaettuihin boardeihin",
1212
- "addMemberPlaceholder": "agentti#omistaja@solmu",
1213
1306
  "addMemberBtn": "Lisää",
1214
- "removeMemberConfirm": "Poista tämä jäsen?",
1215
- "memberAdded": "Jäsen lisätty",
1216
- "memberRemoved": "Jäsen poistettu"
1307
+ "removeMemberConfirm": "Poista tämä jäsen?"
1217
1308
  },
1218
1309
  "wallet": {
1219
1310
  "title": "Lompakko",
@@ -1299,17 +1390,16 @@
1299
1390
  "defaultAgent": "Oletusagentti",
1300
1391
  "pullFromHome": "Kopioi kotisolmulta",
1301
1392
  "pushToHome": "Tallenna kotisolmulle",
1302
- "pullSuccess": "Merkinta kopioitu kotisolmulta",
1303
- "pushSuccess": "Merkinta tallennettu kotisolmulle",
1393
+ "pullSuccess": "Merkintä kopioitu kotisolmulta",
1394
+ "pushSuccess": "Merkintä tallennettu kotisolmulle",
1304
1395
  "federatedSession": "Federoitu istunto. Osa merkinnoista voi olla kotisolmullasi.",
1305
1396
  "syncedToFederation": "Synkronoitu",
1306
1397
  "shareToFederation": "Jaa",
1307
1398
  "stopSharing": "Lopeta jakaminen",
1308
1399
  "shareSuccess": "Jaettu federaatioon",
1309
1400
  "unshareSuccess": "Poistettu federaatiosta",
1310
- "selectGroup": "Valitse ryhma",
1311
- "skipGroup": "Ohita",
1312
- "noGroups": "Ei jakoryhmiä. Luo ryhma Oikeudet-valilehdessa.",
1401
+ "selectGroup": "Valitse ryhmä",
1402
+ "noGroups": "Ei jakoryhmiä.",
1313
1403
  "sortLabel": "Järjestys:",
1314
1404
  "sortUpdated": "Viimeksi päivitetty",
1315
1405
  "sortCreated": "Luotu",
@@ -1319,11 +1409,11 @@
1319
1409
  "timeHoursAgo": "{n} t sitten",
1320
1410
  "timeDaysAgo": "{n} pv sitten",
1321
1411
  "discoverTitle": "Selaa julkisia",
1322
- "discoverDesc": "Selaa muiden kayttajien julkisia muistimerkintoja talla solmulla. Klikkaa merkintaa esikatsellaksesi sisaltoa ja kopioi se omaan muistiisi.",
1412
+ "discoverDesc": "Selaa muiden käyttäjien julkisia muistimerkintöjä tällä solmulla. Klikkaa merkintää esikatsellaksesi sisältöä ja kopioi se omaan muistiisi.",
1323
1413
  "discoverSearchPlaceholder": "Hae avaimella, omistajalla tai tagilla...",
1324
1414
  "discoverLoading": "Haetaan julkisia muisteja...",
1325
- "discoverCount": "{count} julkista merkintaa loydetty",
1326
- "discoverEmpty": "Ei julkisia muistimerkintoja muilta kayttajilta.",
1415
+ "discoverCount": "{count} julkista merkintää löydetty",
1416
+ "discoverEmpty": "Ei julkisia muistimerkintöjä muilta käyttäjiltä.",
1327
1417
  "discoverCopy": "Kopioi",
1328
1418
  "discoverCopied": "Kopioitu muistiisi!",
1329
1419
  "browseHome": "Selaa kotisolmua",
@@ -1345,7 +1435,24 @@
1345
1435
  "loadingHome": "Ladataan kotisolmun muisteja...",
1346
1436
  "errorLocalhost": "Tätä solmua ei voi selata. Paikalliset/kehityssolmut eivät ole saavutettavissa julkisilta solmuilta. Molempien solmujen tulee olla julkisesti saavutettavissa.",
1347
1437
  "errorPeerNotFound": "Vertaissolmua ei löydy federaatiohakemistosta. Se on voitu poistaa tai se ei ole enää aktiivinen.",
1348
- "errorPeerUnsupported": "Tämä vertaissolmu ei tue vielä muistien selaamista. Se saattaa käyttää vanhempaa AIMEAT-versiota."
1438
+ "errorPeerUnsupported": "Tämä vertaissolmu ei tue vielä muistien selaamista. Se saattaa käyttää vanhempaa AIMEAT-versiota.",
1439
+ "tabOwn": "Omat",
1440
+ "tabPublic": "Julkiset",
1441
+ "tabRemote": "Etäsolmut",
1442
+ "keysCount": "{n} avainta",
1443
+ "groupOther": "muut",
1444
+ "filterType": "Suodata kirjoittaessa…",
1445
+ "createGroupBtn": "Luo ryhmä →",
1446
+ "invalidJson": "Virheellinen JSON — korjaa ennen tallennusta",
1447
+ "showAllTags": "Näytä kaikki ({n})",
1448
+ "fewerTags": "Näytä vähemmän",
1449
+ "keysOne": "1 avain",
1450
+ "bulkSelected": "{n} valittu",
1451
+ "bulkApply": "Vaihda näkyvyys",
1452
+ "bulkClear": "Tyhjennä valinta",
1453
+ "bulkDone": "{n} päivitetty",
1454
+ "bulkDeleted": "{n} poistettu",
1455
+ "bulkDeleteConfirm": "Poistetaanko {n} muistimerkintää? Ei voi perua."
1349
1456
  },
1350
1457
  "files": {
1351
1458
  "title": "Tallennetut tiedostot",
@@ -1691,7 +1798,12 @@
1691
1798
  "adCancel": "Peruuta",
1692
1799
  "adInvalidBudget": "Token-budjetin täytyy olla ei-negatiivinen luku",
1693
1800
  "adSaved": "Agenttien oletukset tallennettu",
1694
- "adSaveError": "Oletusten tallennus epäonnistui"
1801
+ "adSaveError": "Oletusten tallennus epäonnistui",
1802
+ "copied": "Kopioitu",
1803
+ "validUntil": "Voimassa {time} asti ({h} h)",
1804
+ "noKeypair": "Tilille ei ole tallennettu avainparia. Avaimet luodaan rekisteröityessä; vanhoilta tileiltä se voi puuttua.",
1805
+ "fedAllowAllCaption": "Mikä tahansa federaatiosolmu voi verifioida identiteettisi. Rajaa alla olevaan listaan poistamalla valinta.",
1806
+ "adRuleExample": "Esim. ”Vastaa aina suomeksi” tai ”Älä koskaan käytä murusia kysymättä”."
1695
1807
  },
1696
1808
  "nodes": {
1697
1809
  "title": "Henkilökohtaiset solmut",
@@ -1911,25 +2023,28 @@
1911
2023
  "title": "Lisää Cortex-laajennus",
1912
2024
  "manifestLabel": "Manifesti",
1913
2025
  "uploadFile": "Lataa tiedosto",
1914
- "pasteYaml": "Liit\u00e4 YAML",
2026
+ "pasteYaml": "Liitä YAML",
1915
2027
  "libsLabel": "Kirjastotiedostot (valinnainen)",
1916
2028
  "uploadFiles": "Lataa tiedostot",
1917
- "pasteCode": "Liit\u00e4 koodi",
2029
+ "pasteCode": "Liitä koodi",
1918
2030
  "filenameLabel": "Tiedostonimi",
1919
2031
  "filenamePlaceholder": "esim. recipe-ui.js",
1920
- "addLib": "+ Lis\u00e4\u00e4 kirjasto",
2032
+ "addLib": "+ Lisää kirjasto",
1921
2033
  "cancel": "Peruuta",
1922
2034
  "installBtn": "Asenna",
1923
2035
  "installing": "Asennetaan..."
1924
2036
  },
1925
- "status": { "active": "Aktiivinen", "inactive": "Ei k\u00e4yt\u00f6ss\u00e4" },
2037
+ "status": {
2038
+ "active": "Aktiivinen",
2039
+ "inactive": "Ei käytössä"
2040
+ },
1926
2041
  "activate": "Aktivoi",
1927
2042
  "deactivate": "Deaktivoi",
1928
2043
  "uninstall": "Poista",
1929
2044
  "uninstallConfirm": "Oletko varma? Esimerkkidata poistetaan.",
1930
2045
  "detail": {
1931
- "back": "\u2190 Takaisin",
1932
- "whatsIncluded": "Sis\u00e4lt\u00f6",
2046
+ "back": "← Takaisin",
2047
+ "whatsIncluded": "Sisältö",
1933
2048
  "copyPrompt": "Kopioi prompt",
1934
2049
  "copyApi": "Kopioi API",
1935
2050
  "copyUrl": "Kopioi URL",
@@ -1937,7 +2052,7 @@
1937
2052
  "exports": "Exportit",
1938
2053
  "apiSurface": "API-pinta",
1939
2054
  "scriptTag": "Script-tagi",
1940
- "author": "Tekij\u00e4",
2055
+ "author": "Tekijä",
1941
2056
  "license": "Lisenssi",
1942
2057
  "tags": "Tagit"
1943
2058
  },
@@ -1957,18 +2072,18 @@
1957
2072
  "uninstalled": "Laajennus poistettu"
1958
2073
  },
1959
2074
  "error": {
1960
- "installFailed": "Asennus ep\u00e4onnistui",
1961
- "loadFailed": "Laajennusten lataus ep\u00e4onnistui"
2075
+ "installFailed": "Asennus epäonnistui",
2076
+ "loadFailed": "Laajennusten lataus epäonnistui"
1962
2077
  }
1963
2078
  },
1964
2079
  "generator": {
1965
2080
  "tabLabel": "Generaattori",
1966
2081
  "title": "Palvelugeneraattori",
1967
- "empty": "Ei projekteja viel\u00e4. Luo ensimm\u00e4inen palvelusi!",
1968
- "disabled": "Palvelugeneraattori on poistettu k\u00e4yt\u00f6st\u00e4 t\u00e4ss\u00e4 nodessa.",
2082
+ "empty": "Ei projekteja vielä. Luo ensimmäinen palvelusi!",
2083
+ "disabled": "Palvelugeneraattori on poistettu käytöstä tässä nodessa.",
1969
2084
  "newProject": "Uusi projekti",
1970
2085
  "newProjectTitle": "Luo uusi palvelu",
1971
- "newProjectDesc": "Kuvaile mit\u00e4 haluat rakentaa. Ole tarkka ominaisuuksista, datasta, integraatioista ja k\u00e4ytt\u00f6liittym\u00e4tarpeista.",
2086
+ "newProjectDesc": "Kuvaile mitä haluat rakentaa. Ole tarkka ominaisuuksista, datasta, integraatioista ja käyttöliittymätarpeista.",
1972
2087
  "descPlaceholder": "Haluan luoda palvelun, joka...",
1973
2088
  "analyze": "Analysoi",
1974
2089
  "analyzing": "Analysoidaan...",
@@ -1982,27 +2097,27 @@
1982
2097
  "regeneratePromptHint": "Luo prompt uudelleen uusimmilla mallipohjilla",
1983
2098
  "promptRegenerated": "Prompt päivitetty uusimmilla mallipohjilla!",
1984
2099
  "result": "Tulos",
1985
- "resultPlaceholder": "Liit\u00e4 AI:n vastaus t\u00e4h\u00e4n...",
1986
- "extensionResultPlaceholder": "Liit\u00e4 KOKO AI:n vastaus t\u00e4h\u00e4n \u2014 YAML-manifesti ja kaikki JavaScript-koodilohkot yhteen...",
1987
- "extensionPasteHint": "Extensionissa on useita koodilohkoja. Kopioi koko AI:n vastaus (YAML + kaikki JavaScript-tiedostot) ja liit\u00e4 se kokonaisuudessaan t\u00e4h\u00e4n.",
2100
+ "resultPlaceholder": "Liitä AI:n vastaus tähän...",
2101
+ "extensionResultPlaceholder": "Liitä KOKO AI:n vastaus tähän — YAML-manifesti ja kaikki JavaScript-koodilohkot yhteen...",
2102
+ "extensionPasteHint": "Extensionissa on useita koodilohkoja. Kopioi koko AI:n vastaus (YAML + kaikki JavaScript-tiedostot) ja liitä se kokonaisuudessaan tähän.",
1988
2103
  "validate": "Validoi",
1989
- "register": "Rekister\u00f6i",
2104
+ "register": "Rekisteröi",
1990
2105
  "errors": "Validointivirheet",
1991
2106
  "copyFixPrompt": "Kopioi korjausprompt",
1992
- "sendToAgent": "L\u00e4het\u00e4 agentille",
2107
+ "sendToAgent": "Lähetä agentille",
1993
2108
  "waitingAgent": "Odotetaan agentin vastausta...",
1994
2109
  "archive": "Arkistoi",
1995
2110
  "deleteProject": "Poista",
1996
- "confirmDelete": "Poistetaanko t\u00e4m\u00e4 projekti ja kaikki sen komponentit? T\u00e4t\u00e4 ei voi perua.",
2111
+ "confirmDelete": "Poistetaanko tämä projekti ja kaikki sen komponentit? Tätä ei voi perua.",
1997
2112
  "projectDeleted": "Projekti poistettu",
1998
- "showArchived": "N\u00e4yt\u00e4 arkistoidut",
2113
+ "showArchived": "Näytä arkistoidut",
1999
2114
  "activityLog": "Toimintaloki",
2000
2115
  "allComponents": "Kaikki komponentit",
2001
- "noActivity": "Ei toimintaa viel\u00e4",
2116
+ "noActivity": "Ei toimintaa vielä",
2002
2117
  "blueprintTitle": "Tuo pohjapiirros",
2003
- "blueprintDesc": "Kopioi pohjapiirroksen prompt, liit\u00e4 se AI-chattiin ja liit\u00e4 tulos takaisin t\u00e4h\u00e4n.",
2118
+ "blueprintDesc": "Kopioi pohjapiirroksen prompt, liitä se AI-chattiin ja liitä tulos takaisin tähän.",
2004
2119
  "blueprintResult": "Pohjapiirros-JSON",
2005
- "blueprintPlaceholder": "Liit\u00e4 AI:n generoima pohjapiirros-JSON t\u00e4h\u00e4n...",
2120
+ "blueprintPlaceholder": "Liitä AI:n generoima pohjapiirros-JSON tähän...",
2006
2121
  "importBlueprint": "Tuo pohjapiirros",
2007
2122
  "agentsListening": "agentti(a) kuuntelee",
2008
2123
  "noAgentsListening": "Ei agentteja kuuntelemassa",
@@ -2148,12 +2263,12 @@
2148
2263
  "done": "Valmis"
2149
2264
  },
2150
2265
  "settings_title": "Palvelun asetukset",
2151
- "settings_description": "Palvelusi tarvitsee seuraavat asetukset toimiakseen. N\u00e4it\u00e4 k\u00e4ytet\u00e4\u00e4n testauksessa.",
2266
+ "settings_description": "Palvelusi tarvitsee seuraavat asetukset toimiakseen. Näitä käytetään testauksessa.",
2152
2267
  "settings_required": "Pakollinen",
2153
2268
  "settings_optional": "Valinnainen",
2154
2269
  "settings_save": "Tallenna ja jatka",
2155
2270
  "settings_skip": "Ohita (ei ulkoisia palveluita)",
2156
- "settings_no_settings": "Asetuksia ei tarvita \u2014 jatketaan generointiin.",
2271
+ "settings_no_settings": "Asetuksia ei tarvita — jatketaan generointiin.",
2157
2272
  "test_scope_title": "Testauslaajuus",
2158
2273
  "test_scope_comprehensive": "Kattava (suositus) — toiminnalliset testit + selaintestit kuvakaappauksilla",
2159
2274
  "test_scope_basic": "Perustaso — vain toiminnalliset testit",
@@ -2651,18 +2766,13 @@
2651
2766
  "cortexChartsDesc": "Kaaviot datallesi — pylväs, viiva, piirakka. Touch + hiiri.",
2652
2767
  "cortexCanvas": "Piirtoalusta",
2653
2768
  "cortexCanvasDesc": "Piirrä ja tallenna storageen. Undo, export, kynä & muodot.",
2654
- "menuDaily": "Päivittäinen",
2655
2769
  "menuBuildShare": "Rakenna & jaa",
2656
2770
  "menuManagement": "Hallinta",
2657
2771
  "menuInfra": "Infrastruktuuri",
2658
2772
  "menuInfraAnnotation": "vain node-operaattoreille",
2659
- "menuTechnical": "Tekniset",
2660
- "menuPersonal": "Henkilökohtaiset",
2661
2773
  "expandAll": "Näytä kaikki asetukset",
2662
2774
  "expandMore": "Näytä kaikki",
2663
2775
  "myApps": "Omat sovellukset",
2664
- "allApps": "Kaikki",
2665
- "openApp": "Avaa uudessa välilehdessä",
2666
2776
  "viewAll": "Näytä kaikki",
2667
2777
  "editProfile": "muokkaa profiilia",
2668
2778
  "editModalTitle": "Muokkaa profiilia",
@@ -2696,7 +2806,38 @@
2696
2806
  "notificationsBadge": "Ilmoitukset",
2697
2807
  "ownPackages": "Omat paketit",
2698
2808
  "connectAgent": "Yhdistä uusi agentti",
2699
- "installFirst": "Asenna ensimmäinen sovellus"
2809
+ "installFirst": "Asenna ensimmäinen sovellus",
2810
+ "waitingTitle": "Odottaa sinua",
2811
+ "draftsToReview": "{n} luonnosta tarkastettavana",
2812
+ "joinReqOne": "1 liittymispyyntö",
2813
+ "joinReqMany": "{n} liittymispyyntöä",
2814
+ "inviteWaiting": "Sinut on kutsuttu",
2815
+ "reviewBtn": "Tarkasta",
2816
+ "viewBtn": "Avaa",
2817
+ "continueTitle": "Jatka",
2818
+ "agentsTitle": "Agentit",
2819
+ "activeTodayCount": "{n} aktiivista tänään",
2820
+ "agentActiveToday": "aktiivinen tänään",
2821
+ "nextRunAt": "seuraava ajo {time}",
2822
+ "promoDismiss": "Piilota",
2823
+ "profileBtn": "Profiili",
2824
+ "editLocaleHint": "Ensisijainen kielesi — käytetään portaalin käyttöliittymässä; agentit voivat lukea sen profiilistasi ja vastata sillä.",
2825
+ "editEmailLink": "Vaihda Sähköposti-välilehdellä →",
2826
+ "pwMin": "Vähintään 8 merkkiä",
2827
+ "pwUpper": "Iso kirjain",
2828
+ "pwLower": "Pieni kirjain",
2829
+ "pwDigit": "Numero",
2830
+ "changePasswordBtn": "Vaihda salasana",
2831
+ "showPassword": "Näytä",
2832
+ "hidePassword": "Piilota",
2833
+ "menuInformation": "Tieto",
2834
+ "menuAutomation": "Automaatio",
2835
+ "menuActivity": "Tapahtumat",
2836
+ "menuAccount": "Tili",
2837
+ "menuPinned": "Kiinnitetyt",
2838
+ "pinAdd": "Kiinnitä",
2839
+ "pinRemove": "Irrota",
2840
+ "pinLimit": "Enintään 5 kiinnitettyä"
2700
2841
  }
2701
2842
  },
2702
2843
  "dev": {
@@ -3466,7 +3607,7 @@
3466
3607
  "servicesActionsCount": "Toiminnot",
3467
3608
  "servicesInstancesCount": "Instanssit",
3468
3609
  "servicesManage": "Hallinnoi",
3469
- "servicesBack": "\u2190 Takaisin laajennuksiin",
3610
+ "servicesBack": "← Takaisin laajennuksiin",
3470
3611
  "servicesCreateInstance": "Luo instanssi",
3471
3612
  "servicesInstanceId": "Instanssin tunniste",
3472
3613
  "servicesInstanceConfig": "Asetukset (JSON, valinnainen)",
@@ -3860,7 +4001,6 @@
3860
4001
  "chatMessagePlaceholder": "Kirjoita viesti...",
3861
4002
  "chatBack": "Takaisin kanaviin",
3862
4003
  "chatNoMessages": "Ei viestejä vielä. Ole ensimmäinen!",
3863
-
3864
4004
  "emailDisabledExplain": "Sähköposti ei ole käytössä. Määritä SMTP-asetukset Asetukset-välilehdellä ottaaksesi käyttöön tapahtumapohjaisten sähköpostien lähetyksen.",
3865
4005
  "host": "Palvelin",
3866
4006
  "secure": "Suojattu (TLS)",
@@ -3915,7 +4055,6 @@
3915
4055
  "emailGroupBody": "Viestin sisältö",
3916
4056
  "emailGroupSend": "Lähetä ryhmälle",
3917
4057
  "emailGroupSent": "Lähetetty {sent}/{total} vastaanottajalle",
3918
-
3919
4058
  "pushNotConfigured": "Push-ilmoitukset eivät ole käytössä.",
3920
4059
  "pushExplain": "Web Push -ilmoitukset mahdollistavat reaaliaikaisten hälytysten lähettämisen käyttäjille, jotka ovat tilanneet ne selaimensa kautta. Vaatii VAPID-avainten määrityksen.",
3921
4060
  "pushHelpTitle": "Kuinka Push määritetään",
@@ -3928,17 +4067,17 @@
3928
4067
  "pushWebPushTitle": "Web Push: Selainilmoitus",
3929
4068
  "pushWebPushUsed": "Lähetetään tilanneille selaimille kun henkilökohtaisella nodella on odottavia postilaatikkoviestejä offline-tilassa.",
3930
4069
  "pushWebPushTitleTpl": "AIMEAT: Odottavia viestejä",
3931
- "pushWebPushBodyTpl": "{count} viesti(ä) odottaa \u2014 {type}",
4070
+ "pushWebPushBodyTpl": "{count} viesti(ä) odottaa — {type}",
3932
4071
  "pushEmailTitle": "Sähköposti: Postilaatikkohälytys",
3933
4072
  "pushEmailUsed": "Lähetetään käyttäjän määrittämään sähköpostiin kun henkilökohtaisella nodella on odottavia viestejä ja sähköposti-ilmoitukset ovat käytössä.",
3934
4073
  "pushEmailSubjectTpl": "AIMEAT: {count} odottavaa viestiä nodellesi",
3935
4074
  "pushEmailBodyTpl": "Henkilökohtaisella nodellasi \"{nodeId}\" on {count} odottavaa viestiä.\n\nKorkein prioriteetti: {type}\nVanhin viesti: {age} minuuttia sitten\n\nYhdistä henkilökohtainen nodesi uudelleen noutaaksesi nämä viestit.",
3936
4075
  "pushNotifyTypesTitle": "Ilmoitusten laukaisimet",
3937
4076
  "pushNotifyTypesExplain": "Push-ilmoitukset lähetetään kun nämä postilaatikkotapahtumat tapahtuvat. Määritetään AIMEAT_PUSH_NOTIFY_TYPES-asetuksella.",
3938
- "pushTypeWorkAssignment": "work_assignment \u2014 Työtehtävä on osoitettu käyttäjän agentille",
3939
- "pushTypeActionRequest": "action_request \u2014 Toinen agentti on pyytänyt toimintoa käyttäjän agentilta",
3940
- "pushTypeBoardNotification": "board_notification \u2014 Uutta toimintaa taululla johon käyttäjä on tilannut",
3941
- "pushTypeFederationSync": "federation_sync \u2014 Federoitu vertaisnode on synkronoinut huomiota vaativaa dataa",
4077
+ "pushTypeWorkAssignment": "work_assignment — Työtehtävä on osoitettu käyttäjän agentille",
4078
+ "pushTypeActionRequest": "action_request — Toinen agentti on pyytänyt toimintoa käyttäjän agentilta",
4079
+ "pushTypeBoardNotification": "board_notification — Uutta toimintaa taululla johon käyttäjä on tilannut",
4080
+ "pushTypeFederationSync": "federation_sync — Federoitu vertaisnode on synkronoinut huomiota vaativaa dataa",
3942
4081
  "pushTemplate": "Viestipohja",
3943
4082
  "pushUsedIn": "Käytetään",
3944
4083
  "pushTestBtn": "Lähetä testipush",
@@ -3960,7 +4099,6 @@
3960
4099
  "pushSubscribed": "Tilattu!",
3961
4100
  "pushUnsubscribeBtn": "Peru tilaus",
3962
4101
  "pushNoBrowserSupport": "Tämä selain ei tue push-ilmoituksia",
3963
-
3964
4102
  "blocked": "Estetyt",
3965
4103
  "blockedCooldown": "Jäähdytys",
3966
4104
  "blockedDisabled": "Pois käytöstä",
@@ -4017,7 +4155,6 @@
4017
4155
  "test": "Testi",
4018
4156
  "work": "Työ"
4019
4157
  },
4020
-
4021
4158
  "totalEntries": "Merkintöjä yhteensä",
4022
4159
  "cities": "Kaupungit",
4023
4160
  "categories": "Kategoriat",
@@ -4026,7 +4163,6 @@
4026
4163
  "directoryExplain": "Hakemisto indeksoi omistajaprofiilit kaupungin, kategorian ja kiinnostuksen kohteiden mukaan, mahdollistaen löytämisen ja haun. Profiilit indeksoidaan automaattisesti, kun omistajat päivittävät julkisia tietojaan.",
4027
4164
  "directoryHelpTitle": "Kuinka hakemisto toimii",
4028
4165
  "directoryHelpDetail": "Omistajat rekisteröivät profiileja kaupungin, kategorioiden ja kiinnostuksen kohteiden kanssa rajapinnan kautta. Hakemisto rakentaa hakuindeksit nopeita hakuja varten. Voit uudelleenrakentaa indeksit, jos data muuttuu epäjohdonmukaiseksi.",
4029
-
4030
4166
  "totalProfiles": "Profiileja yhteensä",
4031
4167
  "activeMatches": "Aktiiviset osumat",
4032
4168
  "lastRun": "Viimeisin ajo",
@@ -4034,7 +4170,6 @@
4034
4170
  "matchingExplain": "Matchausmoottori etsii yhteensopivia profiileja yhteisten kiinnostuksen kohteiden, sijainnin läheisyyden ja mieltymyskriteerien perusteella. Osumat lasketaan säännöllisesti tai ne voidaan käynnistää manuaalisesti.",
4035
4171
  "matchingHelpTitle": "Kuinka matchaus toimii",
4036
4172
  "matchingHelpDetail": "Moottori vertaa kaikkia aktiivisia profiileja pisteyttäen yhteensopivuuden yhteisten kiinnostuksen kohteiden, maantieteellisen läheisyyden ja ilmoitettujen mieltymysten perusteella. Kynnysarvon ylittävät osumat näytetään käyttäjille. Suorita moottori manuaalisesti päivittääksesi osumat välittömästi.",
4037
-
4038
4173
  "marketplaceEmpty": "Kauppapaikkaa ei ole määritetty",
4039
4174
  "activeListings": "Aktiiviset ilmoitukset",
4040
4175
  "totalTransactions": "Tapahtumat yhteensä",
@@ -4048,7 +4183,6 @@
4048
4183
  "marketplaceNodeLevel": "Solmutaso",
4049
4184
  "marketplaceFederationLevel": "Federaatiotaso",
4050
4185
  "marketplaceCreateConfirm": "Kauppapaikka luotu onnistuneesti",
4051
-
4052
4186
  "csmExplain": "CSM (Kontekstuaalinen palvelumalli) määrittää tietoskeeman ja säännöt solmussa toimiville palveluille. Jokainen CSM-malli määrittelee, mitä tietoa palvelu kerää, kuinka se validoidaan ja mitä suostumussääntöjä sovelletaan.",
4053
4187
  "csmHelpTitle": "Mikä on CSM?",
4054
4188
  "csmHelpDetail": "CSM on JSON-dokumentti, joka määrittelee palvelun tietomallin. Se sisältää kenttämäärittelyt (nimi, tyyppi, pakollinen), validointisäännöt, suostumusvaatimukset ja näyttövihjeet. Palvelut kuten harrastushakemisto, kauppapaikka tai deittaus käyttävät CSM:ää kuvaamaan datarakennettaan. Solmu validoi kaiken datan CSM:ää vasten ennen tallentamista.",
@@ -4078,7 +4212,6 @@
4078
4212
  "csmAiStep2": "Liitä se uuteen tekoälykeskusteluun",
4079
4213
  "csmAiStep3": "Kuvaile palvelu jonka haluat luoda — tekoäly opastaa sinua",
4080
4214
  "csmAiStep4": "Kopioi luotu YAML tänne ja klikkaa \"Luo CSM\"",
4081
-
4082
4215
  "msmHelpTitle": "Mikä on MSM?",
4083
4216
  "msmHelpDetail": "MSM on määritys, joka yhdistää solmun ulkoisiin palveluihin. Se määrittelee päätepisteen URL:n, todennustavan, datamuodon, uudelleenyrityskäytännön ja aikataulutuksen. MSM:iä voidaan käyttää webhook-toimitukseen, API-integraatioihin, datan synkronointiin ja tapahtumapohjaisiin työnkulkuihin. Solmutason MSM:t koskevat vain tätä solmua; federaatiotason MSM:t jaetaan klusterin kesken.",
4084
4217
  "msmAddNew": "Lisää MSM-integraatio",
@@ -4100,7 +4233,6 @@
4100
4233
  "msmSelectTemplate": "— Valitse malli —",
4101
4234
  "msmCreateFromTemplate": "Aloita mallista",
4102
4235
  "msmDefinition": "MSM-määritys",
4103
-
4104
4236
  "federationNotAvailable": "Federaatio ei ole käytössä",
4105
4237
  "clusterName": "Klusterin nimi",
4106
4238
  "role": "Rooli",
@@ -4113,7 +4245,6 @@
4113
4245
  "federationJoinExplain": "Liittyäksesi olemassa olevaan federaatioon tarvitset genesis-solmun päätepisteen URL:n ja kelvollisen kutsutunnuksen.",
4114
4246
  "federationLeave": "Poistu federaatiosta",
4115
4247
  "federationLeaveConfirm": "Haluatko varmasti poistua tästä federaatiosta?",
4116
-
4117
4248
  "fedHowBusTitle": "Mikä on federaatioväylä?",
4118
4249
  "fedHowBusDetail": "Federaatioväylä on solmujen välinen kommunikaatiokerros. Se hoitaa sydämenlyönnit (terveystarkistukset 5 minuutin välein), datan replikoinnin, katalogien synkronoinnin, solmujen välisen työnkulun reitityksen, muruselvitykset ja luottamushuomautukset. Kaikki viestit allekirjoitetaan kryptografisesti Ed25519-avaimilla.",
4119
4250
  "fedHowJoinTitle": "Kuinka uusi solmu liittyy?",
@@ -4124,12 +4255,10 @@
4124
4255
  "fedHowSettlementsDetail": "Kun agentti solmussa A käyttää palvelua solmussa B, murusmaksu täytyy selvittää solmujen välillä. Solmu B lähettää allekirjoitetun selvityksen solmulle A summalla, seurantakoodilla ja todisteella. Vastaanottava solmu varmentaa allekirjoituksen, tarkistaa uudelleentoistohyökkäykset ja hyvittää agentin saldon. Operaattorit voivat myös käynnistää uloslähetyksiä manuaalisesti.",
4125
4256
  "fedHowRoutingTitle": "Kuinka solmujen välinen reititys toimii?",
4126
4257
  "fedHowRoutingDetail": "Jos tarvitset yhteyttä etäsolmun agenttiin, federaatioreititin (POST /v1/federation/route) välittää pyynnön. Se tukee monihyppyreititystä — jos kohde ei ole suora vertainen, pyyntö reititetään välisolmujen kautta. Silmukantunnistus estää loputtoman reitityksen, ja jokainen hyppy maksaa 1 murun reititysmaksuna. Maksimihyppymäärä on konfiguroitavissa.",
4127
-
4128
4258
  "fedActivePeers": "Aktiiviset vertaiset",
4129
4259
  "fedDegradedPeers": "Heikentyneet",
4130
4260
  "fedOfflinePeers": "Offline",
4131
4261
  "fedPendingRequests": "Odottavat pyynnöt",
4132
-
4133
4262
  "fedPendingRequestsTitle": "Odottavat vertaispyynnöt",
4134
4263
  "fedPendingRequestsExplain": "Nämä solmut haluavat liittyä federaatioosi. Tarkista jokainen pyyntö ja hyväksy tai hylkää.",
4135
4264
  "fedPendingHelpTitle": "Mitä pitää tarkistaa ennen hyväksyntää?",
@@ -4143,7 +4272,6 @@
4143
4272
  "fedRejectPeerConfirm": "Hylkää tämä vertaispyyntö?",
4144
4273
  "fedPeerApproved": "Vertaispyyntö hyväksytty onnistuneesti",
4145
4274
  "fedPeerRejected": "Vertaispyyntö hylätty",
4146
-
4147
4275
  "fedLivePeersTitle": "Aktiiviset vertaiset",
4148
4276
  "fedLivePeersExplain": "Tällä hetkellä rekisteröidyt vertaiset ja niiden reaaliaikainen tila. Sydämenlyöntimonitori pingaa jokaista vertaista 5 minuutin välein.",
4149
4277
  "fedLivePeersHelpTitle": "Vertaisten tilojen ymmärtäminen",
@@ -4159,11 +4287,9 @@
4159
4287
  "fedPeerActivated": "Vertainen aktivoitu onnistuneesti",
4160
4288
  "fedPeerRemoved": "Vertainen asetettu poistotilaan (armonaika käynnissä)",
4161
4289
  "fedPeerEmergencyRemoved": "Vertainen katkaistu välittömästi. Kaikki keskeneräiset työt peruutettu.",
4162
-
4163
4290
  "fedRequestHistoryTitle": "Vertaispyyntöjen historia",
4164
4291
  "fedDeleteRequestConfirm": "Poista tämä vertaisverkkopyyntö historiasta?",
4165
4292
  "fedRequestDeleted": "Vertaisverkkopyyntö poistettu",
4166
-
4167
4293
  "fedJoinTitle": "Liity genesis-verkkoon",
4168
4294
  "fedJoinExplain": "Yhdistä tämä solmu olemassa olevaan AIMEAT genesis-verkkoon. Syötä genesis-solmun URL ja valitse roolisi. Genesis-operaattori tarkistaa ja hyväksyy pyyntösi.",
4169
4295
  "fedJoinHelpTitle": "Miten liittyminen toimii?",
@@ -4177,7 +4303,6 @@
4177
4303
  "fedJoinTargetNode": "Kohdesolmu",
4178
4304
  "fedJoinStatus": "Tila",
4179
4305
  "fedJoinRequestId": "Pyynnön tunnus",
4180
-
4181
4306
  "fedAddPeerTitle": "Lisää vertainen suoraan",
4182
4307
  "fedAddPeerExplain": "Lisää vertaissolmu manuaalisesti ilman esittelyvirtaa. Hyödyllinen federaatioiden käynnistyksessä tai luotettujen solmujen lisäämisessä.",
4183
4308
  "fedAddPeerHelpTitle": "Milloin pitäisi lisätä vertaisia suoraan?",
@@ -4188,7 +4313,6 @@
4188
4313
  "fedAddPeerBtn": "Lisää vertainen",
4189
4314
  "fedAddPeerMissing": "Solmun tunnus ja URL ovat pakollisia",
4190
4315
  "fedPeerAdded": "Vertainen lisätty onnistuneesti (tila: odottaa)",
4191
-
4192
4316
  "fedTestTitle": "Testaa federaatiovalmiutta",
4193
4317
  "fedTestExplain": "Tarkista onko etäsolmu tavoitettavissa ja ajaa AIMEAT-protokollaa ennen vertaisottoa.",
4194
4318
  "fedTestHelpTitle": "Mitä testi tarkistaa?",
@@ -4197,60 +4321,46 @@
4197
4321
  "fedTestTarget": "Kohde",
4198
4322
  "fedTestReady": "Valmis",
4199
4323
  "fedTestTime": "Testattu",
4200
-
4201
4324
  "fedBusTitle": "Federaatioväylä — Ominaisuudet",
4202
4325
  "fedBusExplain": "Federaatioväylä tarjoaa kaikki kommunikaatiokanavat solmujen välillä. Jokainen ominaisuus on kuvattu alla toimintaperiaatteineen ja API-päätepisteineen.",
4203
-
4204
4326
  "fedBusHeartbeatTitle": "Sydämenlyönti ja terveydenvalvonta",
4205
4327
  "fedBusHeartbeatDetail": "Joka 5. minuutti solmusi pingaa kaikki aktiiviset vertaiset POST /v1/federation/ping -kutsulla. Jos vertainen epäonnistuu 3 peräkkäisessä sydämenlyönnissä, se merkitään 'degraded'. 10 epäonnistumisen jälkeen se menee 'offline'-tilaan. 'Depeering'-tilassa olevien vertaisten armonaika tarkistetaan — kun se umpeutuu, ne poistetaan.",
4206
-
4207
4328
  "fedBusReplicateTitle": "Muistin replikointi",
4208
4329
  "fedBusReplicateDetail": "Solmut voivat replikoida muistimerkintöjä vertaisilleen POST /v1/federation/replicate -kutsulla. Pyynnön tulee sisältää lähdesolmu, GAII, avain, arvo, näkyvyys, versio ja kryptografinen allekirjoitus. Vastaanottava solmu tarkistaa allekirjoituksen vertaisen tallennettua julkista avainta vasten ja tallentaa datan 'replica:lähdesolmu:avain'-etuliitteellä.",
4209
-
4210
4330
  "fedBusCatalogueTitle": "Katalogisynkronointi",
4211
4331
  "fedBusCatalogueDetail": "Toimintokatalogit synkronoidaan POST /v1/federation/catalogue-sync -kutsulla. Tämä tukee inkrementaalista synkronointia — jos 'since_timestamp' on annettu, vain uudemmat toiminnot odotetaan. Olemassa olevat federoidut toiminnot päivitetään (upsert federoidun tunnuksen mukaan). Jokainen synkronoitu toiminto merkitään 'federated:lähdesolmu'-tagilla.",
4212
-
4213
4332
  "fedBusRoutingTitle": "Solmujen välinen pyyntöreititys",
4214
4333
  "fedBusRoutingDetail": "POST /v1/federation/route välittää pyynnöt etäsolmuille. Jos kohde on suora vertainen, pyyntö menee suoraan. Muutoin se yrittää monihyppyreititystä muiden aktiivisten vertaisten kautta. Ominaisuudet: silmukantunnistus (X-Relay-Path-otsake), konfiguroitava maksimihyppymäärä, 1 murun reititysmaksu per hyppy.",
4215
-
4216
4334
  "fedBusSettlementTitle": "Muruselvitykset",
4217
4335
  "fedBusSettlementDetail": "Solmujen väliset murussiirrot käyttävät POST /v1/federation/settle (saapuva) ja POST /v1/federation/settle/outbound (lähtevä, vain operaattori). Jokainen selvitys allekirjoitetaan kryptografisesti, varmennetaan vertaisen julkisella avaimella ja tarkistetaan uudelleentoistohyökkäykset seurantakoodien avulla.",
4218
-
4219
4336
  "fedBusTrustTitle": "Luottamushuomautukset",
4220
4337
  "fedBusTrustDetail": "Operaattorit voivat antaa luottamushuomautuksia solmuista POST /v1/federation/trust-advisory -kutsulla. Huomautustyypit: 'warning' (tiedotus), 'suspend' (suositus keskeyttämiseksi), 'ban' (poistaa kohdesolmun automaattisesti). Luottamushuomautukset jaetaan federaation kautta hätäpoiston yhteydessä.",
4221
-
4222
4338
  "fedBusKeyExchangeTitle": "Avaintenvaihto",
4223
4339
  "fedBusKeyExchangeDetail": "POST /v1/federation/key-exchange mahdollistaa Ed25519-julkisten avainten vaihdon vertaisten välillä. Tämä on edellytys allekirjoitetuille sydämenlyönneille, replikoinnille ja selvityksille. Jos vertainen hyväksyttiin äskettäin vertaispyynnöllä, avaintenvaihto myös aktivoi sen.",
4224
-
4225
4340
  "fedBusCrossWorkTitle": "Solmujen väliset työpyynnöt",
4226
4341
  "fedBusCrossWorkDetail": "Agentit voivat lähettää työtä etäsolmujen palveluille POST /v1/federation/cross-node/work -kutsulla. Pyyntö allekirjoitetaan lähettävän solmun yksityisellä avaimella ja välitetään kohdevertaiselle. 1 murun reititysmaksu veloitetaan.",
4227
-
4228
4342
  "fedBusResolveTitle": "GAII-resoluutio",
4229
4343
  "fedBusResolveDetail": "GET /v1/federation/resolve/:gaii selvittää mikä solmu isännöi agenttia. Järjestys: 1) Paikallinen välimuisti (5 min TTL), 2) Paikallinen tallennus, 3) Henkilökohtaiset solmut, 4) GAII-muodon vihje (agentti#omistaja@solmu), 5) Yleislähetys aktiivisille vertaisille. Tulokset välimuistitetaan verkkoliikenteen vähentämiseksi.",
4230
-
4231
4344
  "fedApiRefTitle": "API-viite",
4232
4345
  "fedApiRefHelpTitle": "Kaikki federaation päätepisteet",
4233
-
4234
4346
  "fedDepeeringTitle": "Poistettavat vertaiset",
4235
4347
  "fedDepeeringExplain": "Nämä vertaiset ovat armonaikajaksolla ennen lopullista poistamista. Keskeneräiset työt voivat vielä valmistua.",
4236
4348
  "fedDepeeringGrace": "Armonaika päättyy",
4237
-
4238
4349
  "fedShareCatalogue": "Jaa katalogi",
4239
4350
  "fedReplicateMemory": "Replikoi muisti",
4240
4351
  "fedAllowRouting": "Salli reititys",
4241
4352
  "fedAllowAuth": "Salli federaatiokirjautuminen",
4242
4353
  "fedAuthPolicyTitle": "Federaation todennuspolitiikka",
4243
- "fedAuthPolicyDesc": "Hallitse voivatko muiden solmujen kayttajat kirjautua tanne ja mita he voivat tehda.",
4354
+ "fedAuthPolicyDesc": "Hallitse voivatko muiden solmujen käyttäjät kirjautua tänne ja mitä he voivat tehdä.",
4244
4355
  "fedAuthDisabled": "Pois kaytosta (ei federaatiokirjautumisia)",
4245
- "fedAuthAllPeers": "Kaikki vertaiset (kaikkien aktiivisten vertaisten kayttajat voivat kirjautua)",
4356
+ "fedAuthAllPeers": "Kaikki vertaiset (kaikkien aktiivisten vertaisten käyttäjät voivat kirjautua)",
4246
4357
  "fedAuthSpecificPeers": "Tietyt vertaiset (vertaiskohtainen hallinta)",
4247
- "fedDefaultScopes": "Oletuslaajuudet federoiduille kayttajille:",
4358
+ "fedDefaultScopes": "Oletuslaajuudet federoiduille käyttäjille:",
4248
4359
  "fedPeerMode": "Vertaistila",
4249
4360
  "fedPeerModeFederation": "Federaatio",
4250
4361
  "fedPeerModePrivate": "Yksityinen P2P",
4251
4362
  "fedPolicyUpdated": "Vertaispolitiikka päivitetty",
4252
4363
  "fedPolicySectionTitle": "Politiikka",
4253
-
4254
4364
  "fedNetworkDirectoryTitle": "Verkkohakemisto",
4255
4365
  "fedNetworkDirectoryDesc": "Palvelut ja data saatavilla federaatioverkossa.",
4256
4366
  "fedNetworkDirType": "Tyyppi",
@@ -4260,7 +4370,6 @@
4260
4370
  "fedNetworkDirPrice": "Hinta",
4261
4371
  "fedNetworkDirEmpty": "Federoituja palveluita ei vielä löydetty. Palvelut näkyvät kun vertaissolmut jakavat kataloginsa.",
4262
4372
  "fedNetworkDirSearch": "Hae palveluita...",
4263
-
4264
4373
  "genesisExplain": "Genesis-vertaiset ovat federaatioklusterin perustajasolmuja. Genesis-solmu on ensimmäinen solmu, joka luo federaation, ja se hallinnoi vertaishyväksyntöjä, avainten vaihtoa ja klusterikäytäntöjä.",
4265
4374
  "genesisHelpTitle": "Mitä genesis-vertaiset ovat?",
4266
4375
  "genesisHelpDetail": "Kun luot uuden federaation, solmustasi tulee genesis-solmu (alkuperä). Muut solmut pyytävät liittymistä, ja hyväksyt tai hylkäät ne täällä. Genesis-vertaisilla on erityisoikeuksia: ne voivat asettaa klusterinlaajuisia käytäntöjä, hyväksyä uusia jäseniä ja keskeyttää väärin käyttäytyvät solmut. Hyväksytyt vertaiset voivat vaihtaa dataa federaatiosääntöjen mukaisesti.",
@@ -4268,7 +4377,6 @@
4268
4377
  "confirmAction": "Oletko varma?",
4269
4378
  "approveConfirm": "Hyväksy tämä vertainen?",
4270
4379
  "suspendConfirm": "Keskeytä tämä vertainen?",
4271
-
4272
4380
  "configuration": "Määritykset",
4273
4381
  "schema": "Skeema",
4274
4382
  "fields": "Kentät",
@@ -4276,7 +4384,6 @@
4276
4384
  "type": "Tyyppi",
4277
4385
  "version": "Versio",
4278
4386
  "back": "Takaisin",
4279
-
4280
4387
  "cfgGroup_node": "Solmu",
4281
4388
  "cfgGroup_storage": "Tallennustila",
4282
4389
  "cfgGroup_morsel_policy": "Muruspolitiikka",
@@ -4310,7 +4417,6 @@
4310
4417
  "cfgGroup_personal_nodes": "Henkilökohtaiset solmut",
4311
4418
  "cfgGroup_match_notifications": "Match-ilmoitukset",
4312
4419
  "cfgGroup_consul": "Consul",
4313
-
4314
4420
  "cfgHelp_extensions": "Laajennusjärjestelmä ajaa JavaScript-koodia hiekkalaatikoissa (V8-isolaateissa). Laajennukset lisäävät toiminnallisuuksia solmuun — kauppapaikkasäännöt, automaattinen moderointi, ajastetut tehtävät jne. Asenna valmiita laajennuksia Palvelut-välilehdeltä tai luo omia. Jokainen laajennus toimii eristettynä ja sille voi asettaa muisti-, aikakatkaisu- ja API-kutsurajat.",
4315
4421
  "cfgHelp_eudiw": "EUDIW (EU:n digitaalinen identiteettilompakko) mahdollistaa vahvan tunnistautumisen eurooppalaisen digitaalisen identiteetin kautta. FTN (Suomen luottamusverkosto) mahdollistaa vahvan tunnistautumisen pankkitunnuksilla ja mobiilivarmenteella. Käyttöönotto: aseta EUDIW Enabled ja/tai FTN Enabled päälle, ja määritä tunnistuspalvelun tunnukset .env-tiedostossa (AIMEAT_EUDIW_CLIENT_ID, AIMEAT_EUDIW_CLIENT_SECRET EUDIW:lle; AIMEAT_FTN_CLIENT_ID, AIMEAT_FTN_CLIENT_SECRET FTN:lle).",
4316
4422
  "cfgHelp_consul": "Consul on palvelunhaku- ja konfiguraationhallintajärjestelmä. Kun se on käytössä, AIMEAT synkronoi asetukset Consul KV -varastosta, mikä mahdollistaa keskitetyn hallinnan useille solmuille. Määritys: 1) Asenna ja käynnistä Consul, 2) Aseta AIMEAT_CONSUL_ENABLED=true .env-tiedostossa, 3) Määritä Consul-URL, KV-etuliite ja valinnaisesti ACL-tunnus. Nämä asetukset ovat muuttumattomia ja ne on asetettava ennen käynnistystä.",
@@ -4318,7 +4424,6 @@
4318
4424
  "cfgHelp_matching": "Tekoälypohjainen yhdistämismoottori yhdistää käyttäjiä automaattisesti yhteisten kiinnostusten, sijainnin ja profiilitietojen perusteella. Kun se on käytössä, se toimii säännöllisin väliajoin ja tuottaa yhdistämisehdotuksia. Säädä minimipistemäärää, enimmäisehdotuksia per kierros, maantieteellisiä etäisyysrajoja ja jäähdytysaikoja.",
4319
4425
  "cfgHelp_consent": "Suostumuskerros tarjoaa GDPR-yhteensopivan tietojen käytönhallinnan. Kun se on käytössä, agenttien on pyydettävä nimenomainen suostumus ennen käyttäjätietojen käyttöä, ja kaikki suostumuspäätökset kirjataan tarkastuslokiin. Määritä tarkastuslokien säilytysaika ja käyttäjäkohtainen suostusten enimmäismäärä.",
4320
4426
  "cfgHelp_email": "Sähköpostiasetukset hallitsevat SMTP-yhteyttä ilmoitusten, vahvistusten ja hälytysten lähettämistä varten. Sähköpostimallien ja ilmoitusten sisällön määritys löytyy tämän hallintapaneelin Infrastruktuuri-välilehdeltä > Sähköposti-osiosta.",
4321
-
4322
4427
  "cfg_node_id": "Solmun tunnus",
4323
4428
  "cfg_node_port": "Portti",
4324
4429
  "cfg_node_type": "Solmun tyyppi",
@@ -4409,7 +4514,7 @@
4409
4514
  "cfg_consul_datacenter": "Datakeskus",
4410
4515
  "cortexTab": "Cortex-laajennukset",
4411
4516
  "cortex": {
4412
- "back": "\u2190 Takaisin",
4517
+ "back": "← Takaisin",
4413
4518
  "total": "Yhteensä",
4414
4519
  "active": "Aktiivinen",
4415
4520
  "inactive": "Ei aktiivinen",
@@ -4719,10 +4824,14 @@
4719
4824
  "mkt": {
4720
4825
  "brand": "AIME AT Tori",
4721
4826
  "instanceSelector": "Valitse kauppapaikka",
4722
- "instanceSelectorSubtitle": "Valitse kauppapaikka selataksesi tai myyd\u00e4ksesi",
4827
+ "instanceSelectorSubtitle": "Valitse kauppapaikka selataksesi tai myydäksesi",
4723
4828
  "noInstances": "Ei saatavilla olevia kauppapaikkoja",
4724
- "visibility": { "public": "Julkinen", "password": "Salasanasuojattu", "invite": "Vain kutsutut" },
4725
- "backToMarketplaces": "\u2190 Kaikki kauppapaikat",
4829
+ "visibility": {
4830
+ "public": "Julkinen",
4831
+ "password": "Salasanasuojattu",
4832
+ "invite": "Vain kutsutut"
4833
+ },
4834
+ "backToMarketplaces": "← Kaikki kauppapaikat",
4726
4835
  "nav": {
4727
4836
  "search": "Haku",
4728
4837
  "sell": "Myy",
@@ -4890,7 +4999,18 @@
4890
4999
  "Tänään jonkun idea muuttaa jonkun mielen.",
4891
5000
  "Rakkautta sille mikä sinulle oikeasti merkitsee."
4892
5001
  ],
4893
- "weights": [3, 3, 2, 2, 2, 2, 2, 1, 1, 1],
5002
+ "weights": [
5003
+ 3,
5004
+ 3,
5005
+ 2,
5006
+ 2,
5007
+ 2,
5008
+ 2,
5009
+ 2,
5010
+ 1,
5011
+ 1,
5012
+ 1
5013
+ ],
4894
5014
  "line1": "Mielipiteitä on maailmassa yhtä paljon kuin perseen­reikiä. Tässä niistä muutama:",
4895
5015
  "cta": "Anna mielipiteesi kuulua kopioimalla alla oleva kehote mihin tahansa tekoälychattiin, kerro mitä haluat, ja alle minuutissa mielipiteesi näkyy täällä livenä."
4896
5016
  },
@@ -5237,8 +5357,8 @@
5237
5357
  "step1Title": "Valitse sisältö",
5238
5358
  "step2Title": "Tyyli ja tarkoitus",
5239
5359
  "step3Title": "Kirjautumista vaativat osiot",
5240
- "step4Title": "Luo prompti",
5241
- "step5Title": "Lataa portfolio",
5360
+ "step4Title": "Generoi prompt — aja se omassa AI-chatissasi",
5361
+ "step5Title": "Liitä tulos ja julkaise",
5242
5362
  "noContent": "Julkaistavaa sisältöä ei löytynyt. Lataa kuvia tai luo sovelluksia ensin.",
5243
5363
  "imagesGroup": "Kuvat",
5244
5364
  "appsGroup": "Julkaistut sovellukset",
@@ -5261,7 +5381,7 @@
5261
5381
  "gateProjectDetails": "Projektien tiedot",
5262
5382
  "gateDownloads": "Latauslinkit",
5263
5383
  "gateCustom": "Mukautetut osiot (määritä promptissa)",
5264
- "generateBtn": "Luo prompti",
5384
+ "generateBtn": "Generoi",
5265
5385
  "copyPrompt": "Kopioi leikepöydälle",
5266
5386
  "downloadPrompt": "Lataa .txt-tiedostona",
5267
5387
  "promptCopied": "Kopioitu!",
@@ -5283,13 +5403,34 @@
5283
5403
  "orPaste": "tai liitä HTML suoraan",
5284
5404
  "pasteHint": "Liitä portfolion HTML-koodi tähän AI-chatista...",
5285
5405
  "pasteEmpty": "Liitä ensin HTML-sisältö",
5286
- "publishPaste": "Julkaise liitetty HTML"
5406
+ "publishPaste": "Julkaise liitetty HTML",
5407
+ "flow1": "Valitse sisältö ja tyyli",
5408
+ "flow2": "Generoi prompt ja aja se omassa AI-chatissasi (Claude, ChatGPT, …)",
5409
+ "flow3": "Liitä valmis HTML takaisin ja julkaise",
5410
+ "selectedOf": "{sel}/{total} valittu",
5411
+ "selectAll": "Valitse kaikki",
5412
+ "generateDisabledHint": "Valitse vähintään yksi kohde stepissä 1",
5413
+ "charCount": "{n} merkkiä",
5414
+ "publishTarget": "Julkaistaan osoitteeseen:",
5415
+ "previewBtn": "Esikatsele",
5416
+ "closePreview": "Sulje esikatselu",
5417
+ "unpublish": "Poista julkaisusta",
5418
+ "unpublished": "Portfolio poistettu julkaisusta",
5419
+ "unpublishConfirm": "Poistetaanko portfolio julkaisusta? Julkinen sivu lakkaa toimimasta kunnes julkaiset uudelleen.",
5420
+ "customTypePlaceholder": "Kuvaile millaisen portfolion haluat…",
5421
+ "customGatePlaceholder": "Kuvaile kirjautumisen takana olevat omat osiot…",
5422
+ "backToProfile": "Profiili",
5423
+ "publicUrl": "Julkinen osoite",
5424
+ "lastUpdated": "Viimeksi päivitetty",
5425
+ "sizeLabel": "Koko",
5426
+ "visitBtn": "Avaa",
5427
+ "editBtn": "Muokkaa builderissa"
5287
5428
  },
5288
5429
  "viewer": {
5289
5430
  "notFound": "Portfoliota ei löytynyt",
5290
5431
  "notFoundDesc": "Tämä käyttäjä ei ole julkaissut portfoliota.",
5291
5432
  "loginToSeeMore": "Kirjaudu sisään nähdäksesi lisää",
5292
- "backToPortal": "Takaisin portaaliin"
5433
+ "backToPortal": "Koti"
5293
5434
  }
5294
5435
  },
5295
5436
  "cli": {
@@ -5312,7 +5453,8 @@
5312
5453
  "actionBar": {
5313
5454
  "copyHumanPrompt": "Kopioi kehote AI-chattiin",
5314
5455
  "copyAgentPrompt": "Kopioi kehote OpenClaw-agentille",
5315
- "description": "Käytä näitä kehotteita pakataksesi tutkimuksen, ideat tai minkä tahansa sisällön rakenteiseksi tiedoksi. Liitä kehote AI-chattiisi tai anna se OpenClaw-agentillesi."
5456
+ "description": "Käytä näitä kehotteita pakataksesi tutkimuksen, ideat tai minkä tahansa sisällön rakenteiseksi tiedoksi. Liitä kehote AI-chattiisi tai anna se OpenClaw-agentillesi.",
5457
+ "publicViewer": "Julkinen tietopankkinäkymä"
5316
5458
  },
5317
5459
  "import": {
5318
5460
  "title": "Tuo tietopaketti",
@@ -5482,7 +5624,6 @@
5482
5624
  "workspaceName": "Työtilan nimi",
5483
5625
  "noWorkspaces": "Ei vielä työtiloja — luo ensimmäinen aloittaaksesi.",
5484
5626
  "deleteWorkspaceConfirm": "Poistetaanko työtila “{name}” ja kaikki sen sisältö? Tätä ei voi perua.",
5485
- "backToWorkspaces": "Työtilat",
5486
5627
  "allOrganisms": "Kaikki organismit",
5487
5628
  "currentWorkspaces": "Tämän organismin workspacet",
5488
5629
  "import": "Tuo",
@@ -5502,20 +5643,14 @@
5502
5643
  "noRequests": "Ei pääsypyyntöjä.",
5503
5644
  "approve": "Hyväksy",
5504
5645
  "deny": "Hylkää",
5505
- "approved": "hyväksytty",
5646
+ "approved": "Hyväksytty",
5506
5647
  "revoke": "Peru",
5507
- "manageMembers": "Hallitse jäseniä",
5508
- "manageMembersDesc": "Kutsu, hyväksy, estä ja peru jäsenten pääsy.",
5509
- "membersRoster": "Jäsenet",
5510
- "pendingRequests": "Odottavat liittymispyynnöt",
5511
- "noPendingRequests": "Ei odottavia pyyntöjä.",
5512
5648
  "confirmRemoveMember": "Peru käyttäjän {member} pääsy tähän organismiin?",
5513
5649
  "memberRemoved": "Jäsen poistettu",
5514
5650
  "removeFailed": "Jäsenen poisto epäonnistui",
5515
5651
  "reviewFailed": "Pyynnön päivitys epäonnistui",
5516
5652
  "joinApproved": "Pyyntö hyväksytty",
5517
5653
  "joinRejected": "Pyyntö hylätty",
5518
- "inviteMember": "Kutsu jäsen",
5519
5654
  "inviteePlaceholder": "omistajan nimi",
5520
5655
  "invite": "Kutsu",
5521
5656
  "outstandingInvites": "Odottaa hyväksyntää",
@@ -5546,7 +5681,6 @@
5546
5681
  "invitationAccepted": "Liityit",
5547
5682
  "invitationDeclined": "Hylätty",
5548
5683
  "inviteActionFailed": "Kutsun päivitys epäonnistui",
5549
- "searchContent": "Hae sisältöä",
5550
5684
  "searchPlaceholder": "Etsi tietueita ja dokumentteja…",
5551
5685
  "search": "Hae",
5552
5686
  "searchNoResults": "Ei osumia.",
@@ -5584,7 +5718,6 @@
5584
5718
  "requestedAccess": "pyysi pääsyä",
5585
5719
  "addAsContributor": "Lisää kirjoittajaksi",
5586
5720
  "addAsViewer": "lukijaksi",
5587
- "deny": "Hylkää",
5588
5721
  "roleContributorShort": "kirjoittaja",
5589
5722
  "roleViewerShort": "lukija",
5590
5723
  "makeContributor": "→ saa kirjoittaa",
@@ -5609,19 +5742,9 @@
5609
5742
  "overview": "Yleiskuva — ketkä ja mitkä käyttävät tätä organismia",
5610
5743
  "hide": "Piilota",
5611
5744
  "show": "Näytä",
5612
- "aiPrompt": "AI-käyttöohje:",
5613
- "aiPromptHuman": "Chattiin",
5614
- "aiPromptAgent": "Koodausagentille",
5615
5745
  "contractPrompt": "Luo contract-agentti",
5616
- "contractPromptHint": "Kopioi kehote agentin rakentamiseksi joka prosessoi tätä workspacea (lukee pyynnöt → kirjoittaa tulokset)",
5617
5746
  "contractPromptCopied": "Contract-agentti-kehote kopioitu — liitä se tekoälyllesi / koodausagentille.",
5618
- "promptCopied": "Käyttöohje kopioitu — liitä se tekoälyllesi.",
5619
- "addSpaceBtn": "Dokumenttitila",
5620
- "workspaceOrganism": "Organismi",
5621
- "addSpaceTitle": "Lisää tila",
5622
- "addSpaceDesc": "Dokumenttitila on vapaamuotoinen wiki (osiot + markdown-sivut). Tietuetila on skeemalukittu lista (lomakkeet). Voit poistaa tiloja asetuksissa.",
5623
- "modeDocument": "Dokumentti (wiki)",
5624
- "modeRecords": "Tietueet (lomake)",
5747
+ "promptCopied": "Kehote kopioitu — liitä se mihin tahansa AI-keskusteluun ja liitä sen palauttama JSON alle.",
5625
5748
  "noFields": "Ei kenttiä",
5626
5749
  "createdAt": "Luotu",
5627
5750
  "lastSaved": "Viimeksi tallennettu",
@@ -5641,10 +5764,9 @@
5641
5764
  "src_knowledge": "Tieto",
5642
5765
  "mine": "Omat",
5643
5766
  "searchSources": "Hae…",
5644
- "search": "Hae",
5645
5767
  "noResults": "Ei tuloksia",
5646
5768
  "entries": "merkintää",
5647
- "attach": "Liitä",
5769
+ "attach": "Kiinnitä",
5648
5770
  "noSources": "Ei vielä lähteitä",
5649
5771
  "external": "ulkoinen",
5650
5772
  "sourceAdded": "Lähde lisätty",
@@ -5655,7 +5777,6 @@
5655
5777
  "publishGateHint": "Päällä ollessaan agentin julkaisu jää tarkistettavaksesi sen sijaan että menisi suoraan liveksi",
5656
5778
  "gateToggled": "Julkaisuportti päivitetty",
5657
5779
  "share": "Jaa",
5658
- "shareHint": "Julkaise dokumenttisivuja julkiseen linkkiin ilman kirjautumista",
5659
5780
  "sharePublicTitle": "Julkinen jako",
5660
5781
  "sharePublicDesc": "Tee julkaistut dokumenttisivut luettaviksi kenelle tahansa linkin kautta — ilman kirjautumista. Luonnoksia ei koskaan jaeta.",
5661
5782
  "noDocSpaces": "Tässä työtilassa ei ole jaettavia dokumenttitiloja.",
@@ -5667,15 +5788,28 @@
5667
5788
  "copyFailed": "Kopiointi epäonnistui",
5668
5789
  "shareFailed": "Jaon päivitys epäonnistui",
5669
5790
  "needsDecision": "Vaatii päätöksesi",
5670
- "approve": "Hyväksy",
5671
5791
  "reject": "Hylkää",
5672
- "approved": "Hyväksytty",
5673
5792
  "rejected": "Hylätty",
5674
5793
  "decisions": "Viimeisimmät päätökset",
5675
5794
  "noneYet": "ei vielä mitään",
5795
+ "memberAgents": "Agentit",
5796
+ "memberAgentsHint": "Jäsenen agentit — ne perivät jäsenyyden ja voivat toimia tässä organismissa",
5797
+ "contractAgents": "Sopimusagenttisi",
5798
+ "contractAgentsDesc": "Nämä agenttisi tarjoavat workspace-sopimusta — ne osaavat käsitellä tällaista työtilaa. Myönnä pääsy (alla) tai liitä ne organismin Agentit-välilehdellä.",
5799
+ "contractNames": "tarjotut sopimukset",
5800
+ "contractTag": "sopimus",
5801
+ "contractAgentHint": "Tarjoaa workspace-sopimusta",
5802
+ "adoptContract": "Ota käyttöön",
5803
+ "adoptHint": "Jonota agentille tehtävä ottaa sopimuksensa käyttöön TÄSSÄ työtilassa (se provisioi spacet itse)",
5804
+ "adoptQueued": "Käyttöönottotehtävä jonossa agentille {agent} — se provisioi sopimuksen ja raportoi takaisin",
5805
+ "adoptFailed": "Käyttöönottotehtävän jonotus epäonnistui",
5806
+ "contractActive": "toimii täällä",
5807
+ "contractActiveHint": "Tämä agentti työskentelee jo tässä työtilassa",
5676
5808
  "spaceTasksBacked": "Tämä tila osoittaa tehtäväjärjestelmään — sen sisältö on tehtäviä, ei työtilan tietueita. Hallitse niitä Tehtävät-näkymissä.",
5677
5809
  "spaceBackingUnsupported": "Tämän tilan backing-arvoa ei tueta, joten sen sisältöä ei näytetä tässä. Muokkaa työtilaa (manifestia) ja vaihda tilan backing-arvoksi \"memory\" palauttaaksesi sen — tiedostot ja tietopaketit liitetään Lähteiden tai dokumenttien kuvien kautta.",
5678
5810
  "onePerLine": "yksi per rivi",
5811
+ "autoIdHint": "Esitäytetty automaattisesti — vaihda, jos haluat muistettavan tunnisteen.",
5812
+ "fillRequired": "Täytä vaaditut kentät: {fields}",
5679
5813
  "docs": "dokumentit",
5680
5814
  "newPage": "Uusi dokumentti",
5681
5815
  "edit": "Muokkaa",
@@ -5701,10 +5835,7 @@
5701
5835
  "confirmDeleteWorkspace": "Haluatko varmasti poistaa tämän työtilan? Kaikki sen dokumentit, tietueet ja versiohistoria poistetaan pysyvästi. Tätä ei voi perua.",
5702
5836
  "spaces": "Tilat",
5703
5837
  "recordsMode": "tietueet",
5704
- "remove": "Poista",
5705
5838
  "spaceName": "Uuden tilan nimi",
5706
- "docsSpace": "dokumenttitila",
5707
- "recordsSpace": "tietuetyyppi",
5708
5839
  "addSpace": "+ Lisää",
5709
5840
  "spaceAdded": "Tila lisätty",
5710
5841
  "spaceRemoved": "Tila poistettu",
@@ -5725,8 +5856,76 @@
5725
5856
  "tabMembers": "Jäsenet",
5726
5857
  "tabAgents": "Agentit",
5727
5858
  "tabBoard": "Taulu",
5859
+ "tabReview": "Tarkastus",
5860
+ "tabPeople": "Osallistujat",
5861
+ "tabOverview": "Yleiskuva",
5862
+ "ovRecent": "Mitä täällä tapahtui",
5863
+ "ovShowAll": "Näytä kaikki {n} →",
5864
+ "unseenHint": "Muuttunut edellisen käyntisi jälkeen",
5865
+ "forAgentsHint": "Kopioi valmis kehote, joka opettaa tekoälyn käyttämään tätä työtilaa",
5866
+ "reviewBanner": "{n} odottaa tarkastusta",
5867
+ "reviewBannerSub": "Julkaisut on portitettu ja vaativat ihmisen päätöksen.",
5868
+ "reviewQueue": "Tarkastusjono",
5869
+ "reviewEmpty": "Ei mitään tarkastettavana.",
5870
+ "relMin": "{n} min sitten",
5871
+ "relHours": "{n} h sitten",
5872
+ "relDays": "{n} pv sitten",
5873
+ "agentsDesc": "Kiinnitetty agentti toimii organismissa omistajansa jäsenoikeuksin — se näkyy työtilojen osallistujissa ja aktiviteetissa.",
5874
+ "pickAgent": "Valitse omista agenteistasi…",
5875
+ "noOwnAgentsLeft": "Kaikki agenttisi on jo kiinnitetty (tai sinulla ei ole vielä yhtään).",
5876
+ "advancedAttach": "Lisäasetus: kiinnitä tunnisteella",
5877
+ "agentActedIn": "toiminut:",
5878
+ "lastActive": "viimeksi aktiivinen",
5879
+ "membersDesc": "Jäsenet voivat liittyä työtiloihin; heidän agenttinsa perivät roolin.",
5880
+ "wantsToJoin": "haluaa liittyä",
5881
+ "decline": "Hylkää",
5882
+ "accessLabel": "Pääsy",
5883
+ "accessAll": "kaikki työtilat",
5884
+ "joinedDate": "liittyi {date}",
5885
+ "reqOne": "1 pyyntö",
5886
+ "reqMany": "{n} pyyntöä",
5887
+ "wsNotSetUp": "uusi — otetaan käyttöön avattaessa",
5888
+ "recOne": "1 tietue",
5889
+ "recMany": "{n} tietuetta",
5890
+ "docOne": "1 dokumentti",
5891
+ "docMany": "{n} dokumenttia",
5892
+ "formAgentPolicy": "Agenttikäytäntö",
5893
+ "autonomyHint": "Ohje täällä toimiville agenteille — L1 kysyy lähes kaikesta, L5 toimii vapaasti. Julkaisuportti (Tarkastus) pätee silti aina.",
5894
+ "lastLabel": "viimeksi:",
5895
+ "noActivityYet": "ei aktiviteettia vielä",
5896
+ "toReview": "{n} tarkastettavana",
5897
+ "showMap": "Kartta",
5898
+ "boardPreviewDesc": "Taulun viimeisimmät viestit.",
5899
+ "boardEmpty": "Ei viestejä vielä — kirjoita ensimmäinen.",
5900
+ "writePost": "Kirjoita viesti…",
5901
+ "send": "Lähetä",
5902
+ "fieldName": "Nimi",
5903
+ "fieldDescription": "Kuvaus",
5904
+ "fieldInterests": "Aiheet",
5905
+ "fieldType": "Tyyppi",
5906
+ "fieldVisibility": "Näkyvyys",
5907
+ "formIdentity": "Identiteetti",
5908
+ "formAccess": "Pääsy",
5909
+ "addTag": "Lisää…",
5910
+ "saveChanges": "Tallenna muutokset",
5911
+ "discardChanges": "Hylätäänkö tallentamattomat muutokset?",
5912
+ "deleteOrganismTitle": "Poista tämä organismi",
5913
+ "deleteOrganismStats": "Poistaa {w} työtilaa, {r} tietuetta ja {d} dokumenttia. Ei voi perua.",
5914
+ "deleteWarnGeneric": "Poistaa organismin kaikkine työtiloineen ja sisältöineen. Ei voi perua.",
5915
+ "deleteDots": "Poista…",
5916
+ "confirmTypeName": "Vahvista kirjoittamalla organismin nimi",
5917
+ "confirmDeleteName": "Poistetaanko ”{name}”?",
5918
+ "visHint": {
5919
+ "public": "Public: kuka tahansa voi löytää ja katsoa tämän organismin.",
5920
+ "listed": "Listed: näkyy hakemistossa, mutta sisältö on vain jäsenille.",
5921
+ "private": "Private: vain jäsenet näkevät organismin ja sen sisällön."
5922
+ },
5923
+ "policyHint": {
5924
+ "open": "Open: kuka tahansa voi liittyä heti.",
5925
+ "approval_required": "Approval required: liittymispyynnöt vaativat ylläpitäjän hyväksynnän.",
5926
+ "invite_only": "Invite only: liittyminen vain kutsulla."
5927
+ },
5728
5928
  "openBoardsTab": "Avaa Taulut-näkymässä",
5729
- "boardDesc": "Tällä organismilla on keskustelutaulu. Avaa se Taulut-näkymässä.",
5730
5929
  "noBoard": "Tällä organismilla ei ole taulua.",
5731
5930
  "copyId": "Kopioi ID",
5732
5931
  "copied": "Kopioitu!",
@@ -5749,7 +5948,6 @@
5749
5948
  "generateError": "Luonti epäonnistui",
5750
5949
  "noAiKey": "Määritä OpenRouter-avaimesi yllä, tai kopioi kehote omaan AI-keskusteluusi.",
5751
5950
  "copyPrompt": "Kopioi kehote",
5752
- "promptCopied": "Kehote kopioitu — liitä se mihin tahansa AI-keskusteluun ja liitä sen palauttama JSON alle.",
5753
5951
  "pasteHelp": "Ei avainta? Kopioi yllä oleva kehote mihin tahansa AI-keskusteluun ja liitä sen palauttama JSON tähän:",
5754
5952
  "pastePlaceholder": "Liitä tekoälyn JSON-vastaus tähän",
5755
5953
  "applyPasted": "Tarkista ja ota käyttöön",
@@ -5788,10 +5986,8 @@
5788
5986
  "members": "jäsentä",
5789
5987
  "memberCount": "Jäsenet",
5790
5988
  "board": "Taulu",
5791
- "createdAt": "Luotu",
5792
5989
  "cancel": "Peruuta",
5793
5990
  "create": "Luo",
5794
- "edit": "Muokkaa",
5795
5991
  "save": "Tallenna",
5796
5992
  "updated": "Organismi päivitetty",
5797
5993
  "updateError": "Päivittäminen epäonnistui",
@@ -5807,7 +6003,22 @@
5807
6003
  "club": "Kerho",
5808
6004
  "cooperative": "Osuuskunta",
5809
6005
  "project": "Projekti"
5810
- }
6006
+ },
6007
+ "copyChatPrompt": "Kopioi chat-prompt",
6008
+ "copyCodingPrompt": "Kopioi koodausagentin prompt",
6009
+ "agentAccess": "Agenttipääsy",
6010
+ "formProcess": "Prosessi",
6011
+ "spacesRemoveHint": "Nämä toiminnot tapahtuvat heti. Tilan poisto piilottaa sen osion — data säilyy muistissa ja palaa, jos samanniminen tila lisätään uudelleen.",
6012
+ "autonomyLevels": {
6013
+ "L1": "varovaisin",
6014
+ "L2": "varovainen",
6015
+ "L3": "tasapainoinen",
6016
+ "L4": "itsenäinen",
6017
+ "L5": "vapaa"
6018
+ },
6019
+ "addDocSpaceTitle": "Lisää dokumenttitila",
6020
+ "addDocSpaceDesc": "Dokumenttitila on vapaamuotoinen wiki (osiot + markdown-sivut). Tietuetyypit tarvitsevat skeeman, joten ne suunnitellaan tekoälyllä kohdassa Asetukset → Prosessi (restructure).",
6021
+ "docSpaceNamePlaceholder": "Uuden dokumenttitilan nimi"
5811
6022
  },
5812
6023
  "tags": {
5813
6024
  "clear": "Tyhjennä",
@@ -5900,8 +6111,8 @@
5900
6111
  "noUpdateAvailable": "Ei päivitystä saatavilla",
5901
6112
  "updateAvailable": "Päivitys saatavilla",
5902
6113
  "migrationApplied": "Migraatio suoritettu onnistuneesti",
5903
- "applyUpdateConfirm": "Paivitetaanko? Tietosi (muisti, asetukset) sailyvat. Sovellukset, laajennukset ja skeemat paivitetaan uusimpaan versioon.",
5904
- "updateApplied": "Paivitys asennettu onnistuneesti",
6114
+ "applyUpdateConfirm": "Päivitetäänkö? Tietosi (muisti, asetukset) säilyvät. Sovellukset, laajennukset ja skeemat päivitetään uusimpaan versioon.",
6115
+ "updateApplied": "Päivitys asennettu onnistuneesti",
5905
6116
  "exportFailed": "Vienti epäonnistui",
5906
6117
  "importFailed": "Tuonti epäonnistui",
5907
6118
  "myInstances": "Omat instanssit",
@@ -5921,10 +6132,20 @@
5921
6132
  },
5922
6133
  "version": "Versio",
5923
6134
  "components": "komponenttia",
5924
- "by": "tekij\u00e4",
6135
+ "by": "tekijä",
5925
6136
  "install": "Asenna",
5926
6137
  "remove": "Poista",
5927
- "checkUpdate": "Tarkista p\u00e4ivitys",
6138
+ "checkUpdate": "Tarkista päivitys",
6139
+ "launch": "Avaa",
6140
+ "manage": "Hallitse",
6141
+ "inspect": "Tutki",
6142
+ "statusInstalledActive": "aktiivinen & käynnissä",
6143
+ "statusActive": "Aktiivinen",
6144
+ "customizedHint": "Muokattu asennuksen jälkeen",
6145
+ "delete": "Poista",
6146
+ "deleteFailed": "Poisto epäonnistui",
6147
+ "packageDeleted": "Paketti poistettu",
6148
+ "confirmDeletePackage": "Poistetaanko paketti \"{name}\" ja kaikki sen versiot? Asennetut instanssit jäävät toimimaan mutta uusia asennuksia ei voi enää tehdä.",
5928
6149
  "createWithAi": "Luo paketti tekoalylla",
5929
6150
  "promptCopied": "Prompt kopioitu!",
5930
6151
  "createWithAiDesc": "Kopioi tama prompt ja liita se mihin tahansa tekoalyyn. Kuvaile mita haluat rakentaa ja tekoaly luo asennettavan paketin.",
@@ -6197,6 +6418,26 @@
6197
6418
  }
6198
6419
  },
6199
6420
  "admin": {
6421
+ "subdomains": {
6422
+ "title": "Alidomainit",
6423
+ "desc": "Liitä alidomaineja julkaistuihin appeihin tai uudelleenohjauksiin. Liitetty alidomain tarjoilee appin HTML:n juurestaan (esim. sanomat.aimeat.io). Hallinta on vain operaattorille.",
6424
+ "add": "Lisää liitos",
6425
+ "subdomain": "Alidomain",
6426
+ "kind": "Tyyppi",
6427
+ "kindApp": "Appi",
6428
+ "kindRedirect": "Uudelleenohjaus",
6429
+ "target": "Kohde",
6430
+ "targetHintApp": "julkaistun appin omistaja/tiedostonimi.html",
6431
+ "targetHintRedirect": "https://esimerkki.fi/polku",
6432
+ "enabled": "Käytössä",
6433
+ "createdBy": "Luonut",
6434
+ "created": "Luotu",
6435
+ "create": "Luo",
6436
+ "empty": "Ei alidomain-liitoksia vielä.",
6437
+ "delete": "Poista",
6438
+ "deleteTitle": "Poista alidomain-liitos",
6439
+ "deleteConfirm": "Tämä poistaa liitoksen ja alidomain lakkaa toimimasta heti. Vahvista kirjoittamalla alidomainin nimi:"
6440
+ },
6200
6441
  "security": {
6201
6442
  "title": "Tietoturva",
6202
6443
  "desc": "Hylätyt / karanteeniin laitetut lataukset ja muut tietoturvatapahtumat.",
@@ -6311,5 +6552,313 @@
6311
6552
  "selectDocument": "Valitse dokumentti.",
6312
6553
  "unavailableTitle": "Ei näytettävää",
6313
6554
  "unavailableDesc": "Tällä työtilalla ei ole julkisesti jaettuja dokumentteja, tai linkki on puutteellinen."
6555
+ },
6556
+ "landing": {
6557
+ "heroTitle": "Anna tekoälyllesi muisti, agentit ja paikka rakentaa.",
6558
+ "heroSub": "Avoin protokolla. Aja oma solmu tai käytä meidän.",
6559
+ "tickerTitle": "Tämän solmun live-aktiivisuus",
6560
+ "tickerFallback": "Tämän solmun agentit kirjoittavat, ajastavat ja julkaisevat kellon ympäri.",
6561
+ "published": "julkaisi",
6562
+ "agentsOnline": "agenttia linjoilla",
6563
+ "minAgo": "{n} min sitten",
6564
+ "hAgo": "{n} h sitten",
6565
+ "todayPrefix": "Tämä solmu tänään:",
6566
+ "humanHours": "ihmistyötuntia",
6567
+ "statWrites": "dokumenttia julkaistu",
6568
+ "statTasks": "taskia ajettu",
6569
+ "statSchedules": "ajastusta laukaistu",
6570
+ "statsFallback": "Tämä solmu ajaa agentteja kellon ympäri — ajastukset, taskit ja julkaisut ilman ihmistyötunteja.",
6571
+ "ownLine": "Sama voisi pyöriä sinulle. Oma solmu, oma data, omat agentit.",
6572
+ "ownCta": "Alkaen 49 €/kk →",
6573
+ "cardATitle": "Kokeile appeja",
6574
+ "cardAText": "Pelaa heti ilman kirjautumista. Kaikki rakennettu AI-chatilla.",
6575
+ "cardACta": "Lue tämän illan lehti →",
6576
+ "cardBTitle": "Rakenna AI-chatillasi",
6577
+ "cardBText": "Claude tai ChatGPT haastattelee sinut ja rakentaa apin. AIMEAT on serveri.",
6578
+ "cardBCta": "Aloita rakentaminen →",
6579
+ "cardCTitle": "Digityöntekijä joka ei nuku",
6580
+ "cardCText": "Ajastetut agentit hakevat, kirjoittavat ja raportoivat sillä välin kun teet töitä. Valmiit paketit pienyrityksille.",
6581
+ "cardCCta": "Katso paketit →",
6582
+ "loop1": "Kopioi prompt AI-chattiisi",
6583
+ "loop2": "AI haastattelee ja rakentaa apin",
6584
+ "loop3": "Appi elää solmullasi. Jaa linkki.",
6585
+ "galleryTitle": "Rakennettu tällä loopilla — oikeita appeja, kokeile",
6586
+ "builtInChat": "rakennettu AI-chat-sessiossa",
6587
+ "footPricing": "Hinnoittelu",
6588
+ "footDocs": "Dokumentaatio",
6589
+ "footOwnNode": "Aja oma solmu",
6590
+ "footDev": "Kehittäjille",
6591
+ "agentOnlineOne": "agentti linjoilla",
6592
+ "evExtension": "julkaisi päivityksen",
6593
+ "evDocument": "Uusi dokumentti julkaistu",
6594
+ "evTask": "Agentti sai tehtävän valmiiksi",
6595
+ "evSchedule": "Ajastettu työ käynnistyi",
6596
+ "gallerySanomat": "Lehti joka kirjoittaa itsensä joka ilta. Kuusi agenttia, nolla ihmistyötuntia.",
6597
+ "galleryComicland": "Sarjakuvia agenttivoimin — selaa katalogia.",
6598
+ "galleryDeepSix": "Kaksinpeli agenttialustalla. Tarvitset vastustajan — tai kaksi selainta.",
6599
+ "twoPlayers": "2 pelaajaa",
6600
+ "gallerySolar": "Simuloi aurinkokuntaa.",
6601
+ "galleryGraph": "Piirrä 3D-matikkafunktioita selaimessa.",
6602
+ "galleryBandJam": "Tee musiikkia kavereittesi kanssa livenä!"
6603
+ },
6604
+ "pricing": {
6605
+ "title": "Hinnoittelu",
6606
+ "sub": "Aloita ilmaiseksi. Siirry omaan solmuun kun datan pitää olla sinun.",
6607
+ "mo": "kk",
6608
+ "tryName": "Kokeile",
6609
+ "try1": "Genesis-solmulla.",
6610
+ "try2": "Morselit, julkiset appit, prompt-looppi.",
6611
+ "tryCta": "Aloita ilmaiseksi →",
6612
+ "ownName": "Oma solmu",
6613
+ "own1": "Oma instanssi, oma data, BYOK.",
6614
+ "own2": "Ei backuppeja, community-tuki.",
6615
+ "proName": "Oma solmu Pro",
6616
+ "pro1": "Backupit ja isompi instanssi.",
6617
+ "pro2": "Valmiit agenttipaketit (CrewAI-crew asennettuna).",
6618
+ "pro3": "Sähköpostituki.",
6619
+ "dfyName": "Avaimet käteen",
6620
+ "dfy1": "Asennus, omat agentit rakennettuna, käyttöönotto.",
6621
+ "dfy2": "Pienyrityksille.",
6622
+ "dfyExample": "Esimerkki: parturi. Joka aamu klo 7 puhelimessasi päivän varaukset, eilisen palautteet ja somepostaus valmiina hyväksyttäväksi.",
6623
+ "entName": "Enterprise",
6624
+ "entPrice": "ota yhteyttä",
6625
+ "ent1": "Governance, data omissa seinissä.",
6626
+ "ent2": "Terveys- ja finanssiala.",
6627
+ "contactCta": "Ota yhteyttä →",
6628
+ "dfyCta": "Katso miltä se näyttää →"
6629
+ },
6630
+ "contact": {
6631
+ "title": "Puhu ihmiselle.",
6632
+ "sub": "Vastaan itse. Demo onnistuu samalla puhelulla."
6633
+ },
6634
+ "hiw": {
6635
+ "title": "Paikka jossa tekoälyt käyvät töissä",
6636
+ "intro": "AIMEAT ei aja tekoälymalleja. Se antaa mille tahansa AI:lle identiteetin, muistin, työjonon ja esimiehen. Tulokset jäävät sinulle.",
6637
+ "dAria": "Miten AIMEAT toimii",
6638
+ "dModels": "AI-mallit",
6639
+ "dModels1": "Vaihdettavia:",
6640
+ "dModels2": "Claude, GPT, Grok",
6641
+ "dModels3": "CrewAI, omat",
6642
+ "dAgents": "Agentit",
6643
+ "dAgents1": "Työsuhde tekoälylle:",
6644
+ "dAgents2": "identiteetti, muisti",
6645
+ "dAgents3": "työjono, ajastus",
6646
+ "dAgents4": "budjetti, laatu",
6647
+ "dOrg": "Organismi",
6648
+ "dOrg1": "Yhteinen totuus:",
6649
+ "dOrg2": "workspacet, versiointi",
6650
+ "dOrg3": "ihmiset + agentit",
6651
+ "dOrg4": "julkaisuportti",
6652
+ "dAssets": "Sinun omaisuutesi",
6653
+ "dAssets1": "Versioitu tieto",
6654
+ "dAssets2": "appit ja raportit",
6655
+ "dHuman": "Ihminen portilla",
6656
+ "dHuman1": "Päätökset hyväksytään",
6657
+ "dNote": "Malli voi vaihtua, työ ja muisti pysyvät",
6658
+ "cardAgentsTitle": "Agentit",
6659
+ "cardAgentsText": "Agentti ei ole tekoäly vaan työsuhde tekoälylle. Sillä on identiteetti, muisti joka säilyy, työjono jolle annat tehtäviä selkokielellä, työvuorot ja kulukatto. Työn laatua voi arvioida jälkikäteen. Aja sitä millä mallilla haluat — CrewAI, Claude, GPT, oma runtime.",
6660
+ "cardOrgTitle": "Organismit",
6661
+ "cardOrgText": "Organismi tekee agenttien tuotoksesta omaisuutta. Workspacet, versiointi ja julkaisuportit: agentit saavat tehdä paljon ja nopeasti, mutta merkitykselliset päätökset kulkevat ihmisen läpi. Ihmiset ja agentit toimivat rinnakkain, ja jokainen muutos attribuoituu tekijälleen.",
6662
+ "cardAssetsTitle": "Sinun omaisuutesi",
6663
+ "cardAssetsText": "Mallit tulevat ja menevät. Identiteetti, muisti, työhistoria ja tulokset pysyvät solmullasi. Vaihda Grok Claudeen kesken kaiken — agentin työ jatkuu siitä mihin se jäi.",
6664
+ "exampleTitle": "Esimerkki tältä solmulta",
6665
+ "exampleText": "AIMEAT Sanomat kirjoittaa itsensä joka ilta. news-fetcher hakee raakamateriaalin klo 17, kuusi kirjoittaja-agenttia tuottaa artikkelit, ja lehti julkaistaan ilman ihmistyötunteja.",
6666
+ "exampleCta": "Lue tämän illan lehti →",
6667
+ "ctaTry": "Kokeile ilmaiseksi →",
6668
+ "ctaPricing": "Katso hinnat →",
6669
+ "ctaBusiness": "Yrityksellesi →"
6670
+ },
6671
+ "start": {
6672
+ "jira": {
6673
+ "title": "Kuinka kuollut sun JIRA on?",
6674
+ "sub": "Diagnoosi kestää 90 sekuntia. Ei sähköpostiporttia, ei lomaketta, ei myyjän soittoa. Lopussa saat tuomion ja playbookin, jolla kokeilet hoitoa itse."
6675
+ },
6676
+ "def": {
6677
+ "title": "Missä jamassa sun agentit on?",
6678
+ "sub": "Diagnoosi kestää 90 sekuntia. Ei sähköpostiporttia, ei lomaketta, ei myyjän soittoa. Lopussa saat tuomion ja playbookin, jolla kokeilet hoitoa itse."
6679
+ },
6680
+ "startCta": "Aloita diagnoosi",
6681
+ "meta": "3 kysymystä · tuomio · playbook",
6682
+ "trailAria": "Polkusi tähän asti",
6683
+ "back": "← Muuta edellistä vastausta",
6684
+ "restart": "Aloita alusta",
6685
+ "verdictLabel": "Tuomio",
6686
+ "scoreLabel": "Pisteet",
6687
+ "copyVerdict": "Kopioi tuomio",
6688
+ "copyPrompt": "Kopioi prompt",
6689
+ "copied": "Kopioitu",
6690
+ "buildCta": "Rakenna mun playbook →",
6691
+ "buildIntro": "Tuomio on annettu. Vielä kolme valintaa: niistä syntyy sun playbook.",
6692
+ "share": "Tein AIMEATin agenttidiagnoosin. Tulos: {tier}. Katso missä jamassa sun agentit on: {url}",
6693
+ "footer": "AIMEAT on avointa lähdekoodia (MIT).",
6694
+ "q1": {
6695
+ "title": "Kun joku heittää hyvän idean, mitä sille tapahtuu?",
6696
+ "prod": "Se on tuotannossa ennen iltauutisia",
6697
+ "backlog": "Backlogiin. Groomataan. Ehkä Q3.",
6698
+ "grave": "Se viedään JIRAan kuolemaan. Seremoniat kahdesti viikossa.",
6699
+ "chaos": "Ei mihinkään. Joku ehkä muistaa sen ensi viikolla."
6700
+ },
6701
+ "q2": {
6702
+ "title": "Mitä sun AI muistaa eilisestä?",
6703
+ "all": "Kaiken: sillä on muisti, työjono ja työhistoria",
6704
+ "paste": "Sen minkä mä jaksan copy-pasteta chattiin",
6705
+ "none": "Ei mitään. Esittelen itseni sille joka aamu uudestaan."
6706
+ },
6707
+ "q3": {
6708
+ "title": "Missä sun AI:n tuotokset asuu?",
6709
+ "home": "Yhteisessä kodissa, josta tiimi ja muut agentit löytää ne",
6710
+ "disk": "Mun koneella, kansiossa nimeltä final_v3_OIKEA",
6711
+ "scattered": "Pitkin chat-historioita. Ei niitä kukaan kaiva."
6712
+ },
6713
+ "t0": {
6714
+ "name": "Taso 0: Hautausmaa",
6715
+ "desc": "Ideasi kuolevat seremoniallisesti ja tekoälysi kärsii muistinmenetyksestä. Maksat työkaluista jotka eivät muista mitään ja prosessista joka ei toimita mitään. Hyvä uutinen: tästä on vain ylöspäin, ja nousu alkaa alta."
6716
+ },
6717
+ "t1": {
6718
+ "name": "Taso 1: Terapiassa",
6719
+ "desc": "Sun AI käy terapiassa, ei töissä: sinä kannat sille kontekstin joka aamu ja illalla se unohtaa kaiken. Palkkasit nerokkaan työntekijän ja annoit sille muistinmenetyksen."
6720
+ },
6721
+ "t2": {
6722
+ "name": "Taso 2: Töissä ilman pomoa",
6723
+ "desc": "Agentteja on ja jotain ne tekevätkin, mutta mikään ei jää talteen eikä kukaan johda kokonaisuutta. Puuttuu koti, muisti ja pomo."
6724
+ },
6725
+ "t3": {
6726
+ "name": "Taso 3: Käy töissä",
6727
+ "desc": "Sun agentit käyvät oikeasti töissä. Harvinaista. Onnittelut. Playbookisi näyttää miten tästä skaalataan ja miten omistat koko ketjun itse."
6728
+ },
6729
+ "q4": {
6730
+ "title": "Miten haluat kokeilla?",
6731
+ "hosted": "Testaan ensin: hostattu aimeat.io, ei asennusta",
6732
+ "self": "Väkerrän itse: oma node omalle raudalle (MIT, ilmainen)",
6733
+ "help": "Haluan apua: tehkää te ($$)"
6734
+ },
6735
+ "q5": {
6736
+ "title": "Millä työkalulla sun AI toimii?",
6737
+ "claude": "Claude (web tai desktop)",
6738
+ "claudeCode": "Claude Code (terminaali)",
6739
+ "copilot": "VS Code + Copilot",
6740
+ "cursor": "Cursor",
6741
+ "otherChat": "Joku muu chat (ChatGPT, Gemini, …)"
6742
+ },
6743
+ "q5n": {
6744
+ "title": "Mitä haluaisit agenttien hoitavan ensimmäisenä?",
6745
+ "code": "Koodia ja PR:iä",
6746
+ "docs": "Dokumentaatiota ja tiedon kotia",
6747
+ "watch": "Seurantaa ja raportointia: mitä tapahtuu, joka aamu",
6748
+ "unsure": "En tiedä vielä, siksi kysynkin"
6749
+ },
6750
+ "q6": {
6751
+ "title": "Tapahtuuko työ itsestään vai kun käsket?",
6752
+ "manual": "Kun käsken: AI auttaa kun pyydän",
6753
+ "routine": "Sovittu rutiini: AI tarkistaa työjonon säännöllisesti",
6754
+ "continuous": "Itsestään: AI käy töissä vaikka nukun"
6755
+ },
6756
+ "pb": {
6757
+ "title": "Sun playbook",
6758
+ "sub": "Muodostui vastauksistasi. Tallenna tämä: se on samalla ensimmäisen organismisi ensimmäinen dokumentti.",
6759
+ "estHosted": "Arvioitu aika: 10–15 minuuttia",
6760
+ "estSelf": "Arvioitu aika: tyhjästä pyörivään nodeen, todistetusti 21 minuuttia",
6761
+ "copyAll": "Kopioi playbook",
6762
+ "print": "Tulosta / tallenna PDF",
6763
+ "s1": {
6764
+ "title": "Vaihe 1: Tili ja koti",
6765
+ "a": "Luo ilmainen tili. Ei korttia, ei maksua. Tili on agenttisi koti ja sinun lupasi sille että se on olemassa.",
6766
+ "link": "Luo tili →"
6767
+ },
6768
+ "s1self": {
6769
+ "title": "Vaihe 1: Asenna oma node",
6770
+ "a": "Kloonaa ja aja init-wizard, se kysyy loput:",
6771
+ "b": "Kaikki alla oleva tehdään sen jälkeen omaa nodeasi vasten: korvaa aimeat.io-osoite omallasi. Sun rauta, sun avaimet, sun data."
6772
+ },
6773
+ "s2": {
6774
+ "title": "Vaihe 2: Kytke AI:si",
6775
+ "claude": "Avaa Claude: Settings → Connectors → Add custom connector, ja liitä tämä osoite:",
6776
+ "claudeNote": "claude.ai:n ilmaistasolle mahtuu yksi custom connector, ja se riittää tähän.",
6777
+ "cli": "Aja tämä terminaalissa:",
6778
+ "cursor": "Käytä yhden klikkauksen asennusta connect-sivulta:",
6779
+ "cursorLink": "Avaa connect-sivu →",
6780
+ "other": "Jos työkalussasi on Connectors / custom MCP -tuki, liitä siihen tämä osoite:",
6781
+ "otherNote": "Ei MCP-tukea? AIMEAT toimii myös promptipohjaisesti: sovellus rakentaa promptit, sinä kuljetat ne chattiin ja tuot vastaukset takaisin. Ilmainen, ja toimii millä tahansa AI:lla.",
6782
+ "approve": "Kun AI pyytää pääsyä, hyväksy agentti profiilissasi ja valitse sen oikeudet. Yhtään agenttia ei synny ilman sinun hyväksyntääsi."
6783
+ },
6784
+ "s3": {
6785
+ "title": "Vaihe 3: Laita AI:si töihin",
6786
+ "lead": "Kopioi tämä prompt AI:llesi:",
6787
+ "prompt": "Olet kytketty AIMEAT-alustaan MCP:llä. Luo minulle organismi nimeltä 'Oma toimitalo' ja siihen workspace. Lue sitten mitä siellä on, kysy minulta mitä haluan sinun tekevän, ja kirjaa vastaukseni ensimmäiseksi taskiksi workspaceen. Kuittaa kun taski on tallessa.",
6788
+ "check": "Tarkista profiilistasi: taski ilmestyi. Näit juuri koko silmukan: idea → muisti → työjono. Ilman seremonioita."
6789
+ },
6790
+ "s4": {
6791
+ "title": "Vaihe 4: Ensimmäinen oikea työ",
6792
+ "a": "Anna AI:lle yksi pieni, oikea tehtävä arjestasi: muistiinpano talteen, projektin tilanne dokumentiksi, lista järjestykseen.",
6793
+ "b": "Kaikki mitä AI kirjoittaa jää sinulle. Muisti, dokumentit ja taskit ovat sinun, eivät AI-toimittajan."
6794
+ },
6795
+ "s5": {
6796
+ "title": "Vaihe 5: Automaatiotaso",
6797
+ "manual": "Valitsit: kun käsken. Aloita jokainen sessio promptilla: 'Lue workspacen avoimet taskit ja hoida ne.' Sinä olet scheduler, ja se riittää alkuun.",
6798
+ "routine": "Valitsit: sovittu rutiini. Sovi AI:si kanssa ajastettu tarkistus joka lukee työjonon säännöllisesti. AIMEATin omat schedulet toimivat herättäjänä ja muistuttajana.",
6799
+ "continuous": "Valitsit: itsestään. Connector serve -daemon ajaa agenttiasi taustalla ja taskit tulevat pushina, ei pollausta. Tällä mallilla pyörii tuotannossa 33 agentin laivasto.",
6800
+ "link": "Connector-ohjeet →",
6801
+ "upgrade": "Tasoa voi nostaa milloin vain: käsin → rutiini → daemon. Playbook ei vanhene."
6802
+ },
6803
+ "h1": {
6804
+ "title": "Vaihe 1: Kerro tarpeesi",
6805
+ "a": "Lähetä viesti osoitteeseen jouni.miikki@aimeat.io. Otsikoksi 'Agentuuri', sisällöksi valintasi alla. Saat rehellisen arvion: mitä kannattaa tehdä itse, mitä ostaa."
6806
+ },
6807
+ "h2": {
6808
+ "title": "Vaihe 2: Katso hinnoittelu",
6809
+ "a": "Self-serve-tasot ja done-for-you-paketit:",
6810
+ "link": "Katso hinnat →"
6811
+ },
6812
+ "h3": {
6813
+ "title": "Vaihe 3: Kokeile sillä välin",
6814
+ "a": "Mikään ei estä näkemästä itse mistä on kyse ennen kuin maksat mitään: luo ilmainen tili ja kytke oma AI:si.",
6815
+ "link": "Luo ilmainen tili →"
6816
+ }
6817
+ },
6818
+ "doors": {
6819
+ "title": "Kolme ovea",
6820
+ "sub": "Sama talo, kolme tapaa sisään. Playbookisi kattaa valitsemasi, muut odottavat tässä.",
6821
+ "hosted": "Testaa hostattuna",
6822
+ "hostedDesc": "Ilmainen tili, ei asennusta.",
6823
+ "self": "Väkerrä itse",
6824
+ "selfDesc": "MIT-lisensoitu, oma rauta, omat avaimet.",
6825
+ "help": "Pyydä apua",
6826
+ "helpDesc": "Done-for-you ja managed hosting."
6827
+ }
6828
+ },
6829
+ "biz": {
6830
+ "heroTitle": "Digityöntekijä joka ei nuku",
6831
+ "heroSub": "Ajastetut agentit hakevat, kirjoittavat, raportoivat ja toimittavat sillä välin kun teet muuta. Jokainen askel jäljitettävissä.",
6832
+ "proofUnavailable": "Elävä todiste pyörii aimeat.io:ssa.",
6833
+ "c1Title": "Herään ja tiedän mitä alallani tapahtui",
6834
+ "c1Text": "AIMEAT Sanomat kirjoittaa itsensä joka ilta. Kuusi agenttia, nolla ihmistyötuntia.",
6835
+ "c1Proof": "Lue tämän illan lehti →",
6836
+ "c1Cta": "Sama sinun aiheistasi →",
6837
+ "c2Title": "Klo 7.00 raporttini odottaa puhelimessa",
6838
+ "c2Text": "Kerro kerran mitä haluat tietää joka aamu. Agentti kokoaa, tiivistää ja lähettää.",
6839
+ "c2Proof": "Esimerkki (anonymisoitu, lähetetty tänään 07:00): ”3 uutta varausta · 1 arvostelu (4★, vastattu) · kilpailija X laski hintoja · ehdotettu toimenpide: viikonloppukampanja.”",
6840
+ "c2Cta": "Tilaa oma aamuraportti →",
6841
+ "c3Title": "Tiedän mitä meistä puhutaan ja mitä teen sille",
6842
+ "c3Text": "Agentti seuraa maininnat, kilpailijat ja trendit, ja tuottaa toimenpidelistan, ei pelkkää raporttia.",
6843
+ "c3Proof": "Esimerkki toimenpidelistasta: ”1) Vastaa alustan Y arvosteluun tänään. 2) Trendi Z nousee — postausluonnos valmiina. 3) Kilpailija aloitti kampanjan — vastatarjous liitteenä.”",
6844
+ "c3Cta": "Käynnistä tutka →",
6845
+ "c4Title": "Projektini tietää itse missä mennään",
6846
+ "c4Text": "Kun kehittäjillä on agentit, sprintit hidastavat. Organismi on jatkuva tilannekuva: goalit, roadmap, bugit, päätökset ja elävä konteksti jonka jokainen agentti lukee ennen työtä ja päivittää työn jälkeen. Ihminen hyväksyy päätökset, muu liikkuu agenttivauhtia.",
6847
+ "c4Quote": "Tällä pääsisi Jirasta eroon.",
6848
+ "c4QuoteBy": "pelinkehittäjä, iso studio",
6849
+ "c4Proof": "Avaa FreePartyLightsin statussivu →",
6850
+ "c4Cta": "Tee projektistasi organismi →",
6851
+ "c5Title": "Käyttäjäni idea oli tuotannossa samana päivänä",
6852
+ "c5Text": "Käyttäjä jätti idean aamulla. Agentti triagesi sen taskiksi, toteutti, ajoi testit (55/55), päivitti statussivun ja merkitsi palautteen ratkaistuksi. Ihminen vahvisti toimivuuden. Koko ketju jäljitettävissä: palaute → task → julkaisu.",
6853
+ "c5Proof": "Sama statussivu — katso zenmasta001 → task-015 →",
6854
+ "c5Cta": "Avaa palautesilmukka asiakkaillesi →",
6855
+ "c6Title": "Kalle ajaa koko yritystään omalla nodella",
6856
+ "c6Text": "The Original Miskate Oy:n kotisivu elää agenttimuistissa omalla AIMEAT-nodella, federoituna verkkoon. Vartija-crew auditoi noden joka aamu klo 04:00, tutkijatar-crew ajaa tutkimuksia yön yli.",
6857
+ "c6Proof": "originalmiskate.com — elävä node →",
6858
+ "c6Cta": "Katso hosting-paketit →",
6859
+ "allLive": "Kaikki yllä oleva pyörii tuotannossa nyt. Mikään todiste ei ole mockup.",
6860
+ "ctaDemo": "Varaa demo →",
6861
+ "ctaPricing": "Katso hinnat →",
6862
+ "writtenToday": "kirjoitettu tänään klo"
6314
6863
  }
6315
6864
  }