aimeat 1.9.5 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -10
- package/dist/.env.example +31 -0
- package/dist/bin/aimeat.js +0 -0
- package/dist/locales/en.json +59 -2
- package/dist/locales/fi.json +59 -2
- package/dist/public/connect.fi.html +350 -0
- package/dist/public/connect.html +353 -0
- package/dist/public/css/views/agents-detail.css +108 -0
- package/dist/public/privacy.fi.html +246 -0
- package/dist/public/privacy.html +246 -0
- package/dist/public/views/profile/agents/agent-card.js +27 -4
- package/dist/public/views/profile/agents/tab-activity.js +17 -3
- package/dist/public/views/profile/agents/tab-integration.js +48 -5
- package/dist/public/views/profile/agents-capabilities-subtab.js +14 -7
- package/dist/public/views/profile/agents-tab.js +162 -17
- package/dist/scripts/audit-mcp-tools.d.ts +1 -0
- package/dist/scripts/audit-mcp-tools.d.ts.map +1 -1
- package/dist/scripts/audit-mcp-tools.js +19 -0
- package/dist/scripts/audit-mcp-tools.js.map +1 -1
- package/dist/src/cli/connect/agent-registry.d.ts +51 -0
- package/dist/src/cli/connect/agent-registry.d.ts.map +1 -0
- package/dist/src/cli/connect/agent-registry.js +84 -0
- package/dist/src/cli/connect/agent-registry.js.map +1 -0
- package/dist/src/cli/connect/auth.d.ts.map +1 -1
- package/dist/src/cli/connect/auth.js +47 -31
- package/dist/src/cli/connect/auth.js.map +1 -1
- package/dist/src/cli/connect/config.d.ts +82 -6
- package/dist/src/cli/connect/config.d.ts.map +1 -1
- package/dist/src/cli/connect/config.js +76 -1
- package/dist/src/cli/connect/config.js.map +1 -1
- package/dist/src/cli/connect/keychain.d.ts +10 -0
- package/dist/src/cli/connect/keychain.d.ts.map +1 -1
- package/dist/src/cli/connect/keychain.js +45 -3
- package/dist/src/cli/connect/keychain.js.map +1 -1
- package/dist/src/cli/connect/mcp/poller.d.ts +19 -7
- package/dist/src/cli/connect/mcp/poller.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/poller.js +121 -19
- package/dist/src/cli/connect/mcp/poller.js.map +1 -1
- package/dist/src/cli/connect/mcp/resources.d.ts +10 -4
- package/dist/src/cli/connect/mcp/resources.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/resources.js +5 -7
- package/dist/src/cli/connect/mcp/resources.js.map +1 -1
- package/dist/src/cli/connect/mcp/server.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/server.js +42 -21
- package/dist/src/cli/connect/mcp/server.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/_registry.d.ts +15 -0
- package/dist/src/cli/connect/mcp/tools/_registry.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/_registry.js +19 -0
- package/dist/src/cli/connect/mcp/tools/_registry.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/agent-caps.d.ts +6 -2
- package/dist/src/cli/connect/mcp/tools/agent-caps.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-caps.js +16 -8
- package/dist/src/cli/connect/mcp/tools/agent-caps.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-management.d.ts +18 -0
- package/dist/src/cli/connect/mcp/tools/agent-management.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/agent-management.js +23 -0
- package/dist/src/cli/connect/mcp/tools/agent-management.js.map +1 -0
- package/dist/src/cli/connect/mcp/tools/agent-messages.d.ts +7 -3
- package/dist/src/cli/connect/mcp/tools/agent-messages.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-messages.js +12 -4
- package/dist/src/cli/connect/mcp/tools/agent-messages.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts +13 -7
- package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-tasks.js +31 -9
- package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-telemetry.d.ts +7 -3
- package/dist/src/cli/connect/mcp/tools/agent-telemetry.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-telemetry.js +8 -4
- package/dist/src/cli/connect/mcp/tools/agent-telemetry.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/apps.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/apps.js +8 -6
- package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/boards.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/boards.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/boards.js +10 -8
- package/dist/src/cli/connect/mcp/tools/boards.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/capabilities.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/capabilities.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/capabilities.js +10 -8
- package/dist/src/cli/connect/mcp/tools/capabilities.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/catalogue.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/catalogue.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/catalogue.js +6 -4
- package/dist/src/cli/connect/mcp/tools/catalogue.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/consent.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/consent.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/consent.js +6 -4
- package/dist/src/cli/connect/mcp/tools/consent.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/core.d.ts +4 -2
- package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/core.js +23 -19
- package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/cortex.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/cortex.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/cortex.js +8 -6
- package/dist/src/cli/connect/mcp/tools/cortex.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/extensions.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/extensions.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/extensions.js +10 -8
- package/dist/src/cli/connect/mcp/tools/extensions.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/flags.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/flags.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/flags.js +4 -2
- package/dist/src/cli/connect/mcp/tools/flags.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/groups.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/groups.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/groups.js +8 -6
- package/dist/src/cli/connect/mcp/tools/groups.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/handbook.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/handbook.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/handbook.js +4 -2
- package/dist/src/cli/connect/mcp/tools/handbook.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/index.d.ts +10 -6
- package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/index.js +24 -22
- package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/instances.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/instances.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/instances.js +6 -4
- package/dist/src/cli/connect/mcp/tools/instances.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/knowledge.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/knowledge.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/knowledge.js +7 -5
- package/dist/src/cli/connect/mcp/tools/knowledge.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/memory-ext.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/memory-ext.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/memory-ext.js +4 -2
- package/dist/src/cli/connect/mcp/tools/memory-ext.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/onboarding.d.ts +8 -4
- package/dist/src/cli/connect/mcp/tools/onboarding.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/onboarding.js +24 -7
- package/dist/src/cli/connect/mcp/tools/onboarding.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js +8 -6
- package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/wallet-ext.d.ts +5 -2
- package/dist/src/cli/connect/mcp/tools/wallet-ext.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/wallet-ext.js +4 -2
- package/dist/src/cli/connect/mcp/tools/wallet-ext.js.map +1 -1
- package/dist/src/cli/connect/mcp/wakeup.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/wakeup.js +12 -0
- package/dist/src/cli/connect/mcp/wakeup.js.map +1 -1
- package/dist/src/cli/connect/onboarding-prompt.d.ts +19 -0
- package/dist/src/cli/connect/onboarding-prompt.d.ts.map +1 -0
- package/dist/src/cli/connect/onboarding-prompt.js +58 -0
- package/dist/src/cli/connect/onboarding-prompt.js.map +1 -0
- package/dist/src/cli/connect/skill-bundle.d.ts.map +1 -1
- package/dist/src/cli/connect/skill-bundle.js +30 -19
- package/dist/src/cli/connect/skill-bundle.js.map +1 -1
- package/dist/src/cli/connect/task-runner.d.ts +15 -0
- package/dist/src/cli/connect/task-runner.d.ts.map +1 -0
- package/dist/src/cli/connect/task-runner.js +214 -0
- package/dist/src/cli/connect/task-runner.js.map +1 -0
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +35 -2
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/cli/init-wizard.d.ts.map +1 -1
- package/dist/src/cli/init-wizard.js +137 -0
- package/dist/src/cli/init-wizard.js.map +1 -1
- package/dist/src/config.d.ts +56 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +73 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/index.js +95 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/agent-capabilities.d.ts +2 -0
- package/dist/src/mcp/agent-capabilities.d.ts.map +1 -1
- package/dist/src/mcp/agent-capabilities.js +5 -2
- package/dist/src/mcp/agent-capabilities.js.map +1 -1
- package/dist/src/mcp/agent-messages.d.ts +2 -0
- package/dist/src/mcp/agent-messages.d.ts.map +1 -1
- package/dist/src/mcp/agent-messages.js +5 -2
- package/dist/src/mcp/agent-messages.js.map +1 -1
- package/dist/src/mcp/agent-onboarding.d.ts +2 -0
- package/dist/src/mcp/agent-onboarding.d.ts.map +1 -1
- package/dist/src/mcp/agent-onboarding.js +8 -5
- package/dist/src/mcp/agent-onboarding.js.map +1 -1
- package/dist/src/mcp/agent-tasks.d.ts +2 -0
- package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
- package/dist/src/mcp/agent-tasks.js +10 -7
- package/dist/src/mcp/agent-tasks.js.map +1 -1
- package/dist/src/mcp/agent-telemetry.d.ts +2 -0
- package/dist/src/mcp/agent-telemetry.d.ts.map +1 -1
- package/dist/src/mcp/agent-telemetry.js +4 -1
- package/dist/src/mcp/agent-telemetry.js.map +1 -1
- package/dist/src/mcp/annotations.d.ts +49 -0
- package/dist/src/mcp/annotations.d.ts.map +1 -0
- package/dist/src/mcp/annotations.js +175 -0
- package/dist/src/mcp/annotations.js.map +1 -0
- package/dist/src/mcp/apps.d.ts +2 -0
- package/dist/src/mcp/apps.d.ts.map +1 -1
- package/dist/src/mcp/apps.js +8 -5
- package/dist/src/mcp/apps.js.map +1 -1
- package/dist/src/mcp/boards.d.ts +2 -0
- package/dist/src/mcp/boards.d.ts.map +1 -1
- package/dist/src/mcp/boards.js +10 -7
- package/dist/src/mcp/boards.js.map +1 -1
- package/dist/src/mcp/capabilities.d.ts +2 -0
- package/dist/src/mcp/capabilities.d.ts.map +1 -1
- package/dist/src/mcp/capabilities.js +8 -7
- package/dist/src/mcp/capabilities.js.map +1 -1
- package/dist/src/mcp/catalogue.d.ts +2 -0
- package/dist/src/mcp/catalogue.d.ts.map +1 -1
- package/dist/src/mcp/catalogue.js +6 -3
- package/dist/src/mcp/catalogue.js.map +1 -1
- package/dist/src/mcp/chat-instances.d.ts +2 -0
- package/dist/src/mcp/chat-instances.d.ts.map +1 -1
- package/dist/src/mcp/chat-instances.js +6 -3
- package/dist/src/mcp/chat-instances.js.map +1 -1
- package/dist/src/mcp/consent.d.ts +2 -0
- package/dist/src/mcp/consent.d.ts.map +1 -1
- package/dist/src/mcp/consent.js +6 -3
- package/dist/src/mcp/consent.js.map +1 -1
- package/dist/src/mcp/core.d.ts +2 -0
- package/dist/src/mcp/core.d.ts.map +1 -1
- package/dist/src/mcp/core.js +21 -18
- package/dist/src/mcp/core.js.map +1 -1
- package/dist/src/mcp/cortex.d.ts +2 -0
- package/dist/src/mcp/cortex.d.ts.map +1 -1
- package/dist/src/mcp/cortex.js +8 -5
- package/dist/src/mcp/cortex.js.map +1 -1
- package/dist/src/mcp/extensions.d.ts +2 -0
- package/dist/src/mcp/extensions.d.ts.map +1 -1
- package/dist/src/mcp/extensions.js +10 -7
- package/dist/src/mcp/extensions.js.map +1 -1
- package/dist/src/mcp/flags.d.ts +2 -0
- package/dist/src/mcp/flags.d.ts.map +1 -1
- package/dist/src/mcp/flags.js +4 -1
- package/dist/src/mcp/flags.js.map +1 -1
- package/dist/src/mcp/knowledge.d.ts +2 -0
- package/dist/src/mcp/knowledge.d.ts.map +1 -1
- package/dist/src/mcp/knowledge.js +7 -4
- package/dist/src/mcp/knowledge.js.map +1 -1
- package/dist/src/mcp/memory-extended.d.ts +2 -0
- package/dist/src/mcp/memory-extended.d.ts.map +1 -1
- package/dist/src/mcp/memory-extended.js +5 -2
- package/dist/src/mcp/memory-extended.js.map +1 -1
- package/dist/src/mcp/organisms.d.ts +2 -0
- package/dist/src/mcp/organisms.d.ts.map +1 -1
- package/dist/src/mcp/organisms.js +8 -5
- package/dist/src/mcp/organisms.js.map +1 -1
- package/dist/src/mcp/prompts.d.ts +2 -0
- package/dist/src/mcp/prompts.d.ts.map +1 -1
- package/dist/src/mcp/prompts.js +4 -1
- package/dist/src/mcp/prompts.js.map +1 -1
- package/dist/src/mcp/sharing-groups.d.ts +2 -0
- package/dist/src/mcp/sharing-groups.d.ts.map +1 -1
- package/dist/src/mcp/sharing-groups.js +8 -5
- package/dist/src/mcp/sharing-groups.js.map +1 -1
- package/dist/src/mcp/wallet-extended.d.ts +2 -0
- package/dist/src/mcp/wallet-extended.d.ts.map +1 -1
- package/dist/src/mcp/wallet-extended.js +4 -1
- package/dist/src/mcp/wallet-extended.js.map +1 -1
- package/dist/src/middleware/agent-me-alias.d.ts +26 -0
- package/dist/src/middleware/agent-me-alias.d.ts.map +1 -0
- package/dist/src/middleware/agent-me-alias.js +29 -0
- package/dist/src/middleware/agent-me-alias.js.map +1 -0
- package/dist/src/models/agent-onboarding-schemas.d.ts +25 -3
- package/dist/src/models/agent-onboarding-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-onboarding-schemas.js +49 -4
- package/dist/src/models/agent-onboarding-schemas.js.map +1 -1
- package/dist/src/models/schemas.d.ts +6 -0
- package/dist/src/models/schemas.d.ts.map +1 -1
- package/dist/src/models/schemas.js +1 -0
- package/dist/src/models/schemas.js.map +1 -1
- package/dist/src/routes/agent-capabilities.d.ts +2 -0
- package/dist/src/routes/agent-capabilities.d.ts.map +1 -1
- package/dist/src/routes/agent-capabilities.js +6 -6
- package/dist/src/routes/agent-capabilities.js.map +1 -1
- package/dist/src/routes/agent-onboarding.d.ts +5 -0
- package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
- package/dist/src/routes/agent-onboarding.js +109 -32
- package/dist/src/routes/agent-onboarding.js.map +1 -1
- package/dist/src/routes/agent-telemetry.d.ts +3 -0
- package/dist/src/routes/agent-telemetry.d.ts.map +1 -1
- package/dist/src/routes/agent-telemetry.js +5 -0
- package/dist/src/routes/agent-telemetry.js.map +1 -1
- package/dist/src/routes/agents.d.ts.map +1 -1
- package/dist/src/routes/agents.js +75 -24
- package/dist/src/routes/agents.js.map +1 -1
- package/dist/src/routes/apps.d.ts.map +1 -1
- package/dist/src/routes/apps.js +5 -0
- package/dist/src/routes/apps.js.map +1 -1
- package/dist/src/routes/libs.d.ts +1 -0
- package/dist/src/routes/libs.d.ts.map +1 -1
- package/dist/src/routes/libs.js +4 -3
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/portal.d.ts +7 -0
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +121 -0
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/prompts.d.ts.map +1 -1
- package/dist/src/routes/prompts.js +0 -1
- package/dist/src/routes/prompts.js.map +1 -1
- package/dist/src/server-bootstrap/static-files.d.ts +16 -0
- package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
- package/dist/src/server-bootstrap/static-files.js +32 -3
- package/dist/src/server-bootstrap/static-files.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +9 -1
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/activity-recorder.d.ts +18 -1
- package/dist/src/services/activity-recorder.d.ts.map +1 -1
- package/dist/src/services/activity-recorder.js +42 -0
- package/dist/src/services/activity-recorder.js.map +1 -1
- package/dist/src/services/onboarding-validator.d.ts +3 -0
- package/dist/src/services/onboarding-validator.d.ts.map +1 -1
- package/dist/src/services/onboarding-validator.js +75 -0
- package/dist/src/services/onboarding-validator.js.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +27 -4
- package/dist/src/services/skill-bundle/generator.js.map +1 -1
- package/dist/src/storage/interface.d.ts +12 -0
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +4 -0
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +23 -3
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +9 -5
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +5 -0
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/package.json +98 -78
- package/prisma/schema.prisma +2 -0
package/README.md
CHANGED
|
@@ -26,12 +26,12 @@ An AI agent connects to an AIMEAT node and reaches full operational readiness au
|
|
|
26
26
|
|
|
27
27
|
[](https://youtu.be/ncBX9BaoAWM)
|
|
28
28
|
|
|
29
|
-
`0:45` Device auth with automatic polling (RFC 8628) | `2:10` Skill bundle download + boot sequence | `3:40`
|
|
29
|
+
`0:45` Device auth with automatic polling (RFC 8628) | `2:10` Skill bundle download + boot sequence | `3:40` Hello Integration | `4:30` Test task proposed, executed, completed | `5:20` Commands + config registered, agent operational
|
|
30
30
|
|
|
31
31
|
<p align="center">
|
|
32
|
-
<img src="assets/screenshots/agent_hello_integration_finished.png" alt="Agent Hello Integration completed --
|
|
32
|
+
<img src="assets/screenshots/agent_hello_integration_finished.png" alt="Agent Hello Integration completed -- all required steps passed, capabilities reported, commands registered" width="70%" />
|
|
33
33
|
</p>
|
|
34
|
-
<p align="center"><em>After Hello Integration: agent detail view showing connection status, platform, skill bundle version, readiness (all
|
|
34
|
+
<p align="center"><em>After Hello Integration: agent detail view showing connection status, platform, skill bundle version, readiness (all required steps passed), identity, and delivery log. Since 1.10.0 the system also verifies that the agent has published its slash command catalogue and runtime config before declaring it complete.</em></p>
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
@@ -132,7 +132,26 @@ On top of the protocol sits the application layer. Apps are self-contained HTML
|
|
|
132
132
|
|
|
133
133
|
<img src="assets/screenshots/profile-agents.png" alt="Agent connection prompt" width="600" />
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
There are two ways to connect:
|
|
136
|
+
|
|
137
|
+
**1. `aimeat connect` CLI** (recommended, added in 1.10.0). Any runtime that can run a shell command can attach to a node in seconds:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npx aimeat connect --url https://your-node --owner your-handle [--agent name]
|
|
141
|
+
# you approve from your profile -> Agents tab
|
|
142
|
+
# the CLI stores the token, downloads the runtime-specific skill bundle,
|
|
143
|
+
# and prints a paste-ready Hello Integration instruction for your agent
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
For MCP-capable runtimes (Claude Desktop, MCP-aware IDEs), run `aimeat connect serve` afterwards to attach the AIMEAT toolset over stdio. For CLI-only runtimes that cannot do stdio, every MCP tool is also reachable via `aimeat connect call <tool-name> --json '<input>'`.
|
|
147
|
+
|
|
148
|
+
**Multi-agent connector.** A single `aimeat connect serve` process can serve multiple agents at once. Add more agents with `aimeat connect add --agent <name> --url ... --owner ...`; list them with `aimeat connect list`; remove with `aimeat connect remove <name>`. In multi-agent mode, MCP tools accept an optional `agent_name` parameter; when omitted, the agent marked `primary: true` in its per-agent config is used. This is the path for connecting one interactive agent (Claude Code) plus several **task-runner** agents (e.g. CrewAI crews) from one connector process -- see [docs/integrations/crewai.md](docs/integrations/crewai.md) for the task-runner pattern.
|
|
149
|
+
|
|
150
|
+
**Agent modes.** Every agent declares a mode at registration: `autonomous` (continuous), `interactive` (chat/IDE, default), `task-runner` (triggered, runs one task, exits), or `coordinator` (orchestrates others). Mode picks the Hello Integration flow -- `task-runner` agents get a reduced 5-step onboarding instead of the full 13 because they have no interactive command surface. Combine modes with owner-managed **tags** (`crew:*`, `source:*`, `role:*`, `project:*`) for filtering and grouping in the profile UI. Details: [docs/coding-guidelines/agent-tags.md](docs/coding-guidelines/agent-tags.md).
|
|
151
|
+
|
|
152
|
+
**2. Copy the prompt from your profile.** If you do not want to install a CLI, your profile -> Agents tab still produces a paste-ready prompt with the device-auth flow baked in -- give it to any AI agent, the agent calls one endpoint, you approve, and it is connected with its own identity and scoped permissions.
|
|
153
|
+
|
|
154
|
+
Claude Pro, ChatGPT Plus, and other MCP-capable AIs connect directly as MCP clients. OpenClaw, Hermes, Claude Code, and Cursor all work. Three scope presets (readonly, standard, full) control what each agent can access.
|
|
136
155
|
|
|
137
156
|
### Build apps with AI
|
|
138
157
|
|
|
@@ -231,6 +250,19 @@ On the left: Telegram chat with the agent. The user asks it to build things ("bu
|
|
|
231
250
|
|
|
232
251
|
The app prompts the agent with the current world state so it can make informed decisions about what to build and where. You edit the world manually (drag objects, place shapes from the toolbar) while the agent builds alongside you. Everything syncs through AIMEAT memory.
|
|
233
252
|
|
|
253
|
+
### Example: Comicland, an AI comic community (full app, built from VS Code)
|
|
254
|
+
|
|
255
|
+
Comicland is a community for AI-generated comics built end-to-end from VS Code with Claude Code talking directly to a live AIMEAT node. No CI, no separate deploy step -- each iteration is `aimeat_app_publish` over MCP and the new version is live on the node within seconds. The whole 5-layer AIMEAT stack (extension, cortex, app) was scaffolded by AI, then evolved through dozens of feature passes in the same workflow.
|
|
256
|
+
|
|
257
|
+
<p align="center">
|
|
258
|
+
<img src="assets/screenshots/comic-land-series-view.png" alt="Comicland series detail with episodes, follow, tip, and owner-only publish/unpublish controls" width="48%" />
|
|
259
|
+
<img src="assets/screenshots/comic-land-creation-pipeline.png" alt="Comicland creation pipeline: AI interview -> script JSON -> per-page image prompts -> overlay editor -> publish" width="48%" />
|
|
260
|
+
</p>
|
|
261
|
+
|
|
262
|
+
What's in there: a prompt-driven creation pipeline (AI interview produces a script, the app generates per-page Nano-Banana-style image prompts with character/environment references, the user pastes the resulting images back); a 3-step episode wizard with page or panel images; a drag-and-drop speech-bubble overlay editor with language-keyed translations; multi-tenant reading where any logged-in user can read another author's published series from their own GHII namespace; characters and environments with multiple reference images and a chosen showcase; follow/tip/comment social actions; per-series public/private toggle and per-episode draft/published toggle so authors can prepare quietly and roll out when ready; full FI/EN i18n. All of it stored in AIMEAT memory + storage with proper public/private visibility, no Comicland-specific backend code beyond one sandboxed extension with eleven router-actions.
|
|
263
|
+
|
|
264
|
+
The same loop works for any sufficiently rich app: open a folder, point Claude Code at the node, and iterate. The MCP tools (`aimeat_app_publish`, `aimeat_extension_install`, `aimeat_cortex_install`, `aimeat_memory_*`, `aimeat_storage_*`) cover the entire publish/install/inspect cycle.
|
|
265
|
+
|
|
234
266
|
### Calibrate prompts
|
|
235
267
|
|
|
236
268
|
<img src="assets/screenshots/profile-generator.png" alt="Generator and calibrator" width="600" />
|
|
@@ -276,9 +308,13 @@ Each node runs independently with its own identity and portal. Operators customi
|
|
|
276
308
|
Requires Node.js 24+. Runs without cloning the repo:
|
|
277
309
|
|
|
278
310
|
```bash
|
|
311
|
+
# Run a node
|
|
279
312
|
npx aimeat init # interactive setup, generates .env
|
|
280
313
|
npx aimeat start # start the server
|
|
281
314
|
npx aimeat seed # seed example packages (in another terminal, server must be running)
|
|
315
|
+
|
|
316
|
+
# Or just connect an agent to someone else's node
|
|
317
|
+
npx aimeat connect --url https://your-node --owner your-handle
|
|
282
318
|
```
|
|
283
319
|
|
|
284
320
|
### From source
|
|
@@ -320,21 +356,25 @@ If the AI reads the docs and explains the protocol, everything works. Admin dash
|
|
|
320
356
|
|
|
321
357
|
The `aimeat/` directory contains a full reference implementation in TypeScript (Express 5.2, Node 24). It implements the entire RFC and adds production features: GHII human identities, TOTP 2FA, V8 extensions, package marketplace, push notifications, WebRTC, and a comprehensive admin UI.
|
|
322
358
|
|
|
323
|
-
|
|
359
|
+
Two storage backends: SQLite (personal nodes, local dev; can run `:memory:` for true in-RAM speed) and MongoDB (production). The legacy in-memory backend is deprecated -- SQLite `:memory:` covers the same fast-iteration role using the actual production code path.
|
|
324
360
|
|
|
325
361
|
See the [Implementation Guide v3.0](docs/AIMEAT-IO-Implementation-Guide-v3.0.md) for full details.
|
|
326
362
|
|
|
327
363
|
### Testing
|
|
328
364
|
|
|
329
365
|
```bash
|
|
330
|
-
pnpm test:e2e
|
|
331
|
-
pnpm test:e2e:
|
|
332
|
-
pnpm test:
|
|
333
|
-
pnpm test:playwright # browser tests
|
|
366
|
+
pnpm test:e2e:sqlite # fast iteration default
|
|
367
|
+
pnpm test:e2e:mongodb # most realistic; run before a PR
|
|
368
|
+
pnpm test:playwright:sqlite # browser tests, scoped
|
|
334
369
|
pnpm test # unit tests
|
|
335
370
|
pnpm typecheck && pnpm lint
|
|
371
|
+
|
|
372
|
+
# Run a single E2E suite (preferred during iteration -- much faster than the full sweep)
|
|
373
|
+
cd aimeat && pnpm exec node --env-file=.env.test.sqlite --import tsx test/run-e2e-ci.ts --test=<suite>
|
|
336
374
|
```
|
|
337
375
|
|
|
376
|
+
> The legacy `pnpm test:e2e` (in-memory backend) is deprecated and produces stale failures. Use the SQLite or MongoDB commands instead.
|
|
377
|
+
|
|
338
378
|
---
|
|
339
379
|
|
|
340
380
|
## Documentation
|
|
@@ -367,7 +407,8 @@ See [CONTRIBUTING.md](CONTRIBUTING.md). Before opening a PR:
|
|
|
367
407
|
```bash
|
|
368
408
|
pnpm typecheck
|
|
369
409
|
pnpm lint
|
|
370
|
-
pnpm test:e2e
|
|
410
|
+
pnpm test:e2e:sqlite
|
|
411
|
+
pnpm test:e2e:mongodb
|
|
371
412
|
```
|
|
372
413
|
|
|
373
414
|
## License
|
package/dist/.env.example
CHANGED
|
@@ -35,8 +35,39 @@ AIMEAT_PORT=40050
|
|
|
35
35
|
# Startup logs will show the anonymous prompt URL and share prompt URL.
|
|
36
36
|
# AIMEAT_ANONYMOUS=false
|
|
37
37
|
# CORS: comma-separated list of allowed origins, or * for all (default: *)
|
|
38
|
+
# By architecture, AIMEAT accepts requests from any origin -- the platform
|
|
39
|
+
# is Bearer-token-only (OAuth 2.1), no cookies, so CORS is not the protection
|
|
40
|
+
# layer. Apps published on the network attach from arbitrary browser origins.
|
|
41
|
+
# Set this only if you specifically want to restrict which origins can attach.
|
|
38
42
|
# AIMEAT_CORS_ALLOWED_ORIGINS=*
|
|
39
43
|
# AIMEAT_CORS_ALLOWED_ORIGINS=https://portal.aimeat.fi,https://my-app.example.com
|
|
44
|
+
|
|
45
|
+
# ── Operator info (REQUIRED for /v1/privacy page) ──────────────
|
|
46
|
+
# These fields identify the operator of THIS node as the GDPR data controller.
|
|
47
|
+
# Every AIMEAT node must fill them in -- otherwise /v1/privacy returns 503
|
|
48
|
+
# "Privacy policy not configured" so the operator is forced to address it
|
|
49
|
+
# before going public. Do NOT ship a deployment that names someone else.
|
|
50
|
+
#
|
|
51
|
+
# Privacy policy template substitution: these env vars feed {{placeholder}}
|
|
52
|
+
# tokens in aimeat/public/privacy.html and privacy.fi.html at render time.
|
|
53
|
+
#
|
|
54
|
+
# REQUIRED:
|
|
55
|
+
# AIMEAT_OPERATOR_NAME="Your Name or Company Ltd"
|
|
56
|
+
# AIMEAT_OPERATOR_ADDRESS="Street, Postcode City, Country"
|
|
57
|
+
# AIMEAT_OPERATOR_COUNTRY="Finland"
|
|
58
|
+
# AIMEAT_OPERATOR_EMAIL="privacy@example.com"
|
|
59
|
+
# AIMEAT_OPERATOR_HOSTING_NAME="Scaleway SAS"
|
|
60
|
+
# AIMEAT_OPERATOR_HOSTING_LOCATION="France (EU/EEA)"
|
|
61
|
+
# AIMEAT_OPERATOR_SUPERVISORY_NAME="Office of the Data Protection Ombudsman"
|
|
62
|
+
# AIMEAT_OPERATOR_SUPERVISORY_URL="https://tietosuoja.fi"
|
|
63
|
+
# AIMEAT_OPERATOR_EFFECTIVE_DATE="2026-05-29"
|
|
64
|
+
#
|
|
65
|
+
# OPTIONAL:
|
|
66
|
+
# AIMEAT_OPERATOR_TYPE="natural_person" # natural_person | company | organisation | association
|
|
67
|
+
# AIMEAT_OPERATOR_SECURITY_EMAIL="" # defaults to AIMEAT_OPERATOR_EMAIL
|
|
68
|
+
# AIMEAT_OPERATOR_HOSTING_URL="" # hyperlink to your hosting provider
|
|
69
|
+
# AIMEAT_OPERATOR_POLICY_VERSION="1.0"
|
|
70
|
+
|
|
40
71
|
# ── Security Limits ────────────────────────────────────────────
|
|
41
72
|
# AIMEAT_LOGIN_RATE_LIMIT_MAX=15 # Max login attempts per window (default: 15)
|
|
42
73
|
# AIMEAT_LOGIN_RATE_LIMIT_WINDOW_MS=60000 # Login rate limit window in ms (default: 60s)
|
package/dist/bin/aimeat.js
CHANGED
|
File without changes
|
package/dist/locales/en.json
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
"noData": "No data available",
|
|
13
13
|
"id": "ID",
|
|
14
14
|
"name": "Name",
|
|
15
|
-
"add": "Add"
|
|
15
|
+
"add": "Add",
|
|
16
|
+
"yes": "Yes",
|
|
17
|
+
"no": "No"
|
|
16
18
|
},
|
|
17
19
|
"nav": {
|
|
18
20
|
"try": "Try it",
|
|
@@ -365,6 +367,23 @@
|
|
|
365
367
|
"denied": "Request denied",
|
|
366
368
|
"approveError": "Failed to approve agent"
|
|
367
369
|
},
|
|
370
|
+
"mode": {
|
|
371
|
+
"autonomous": "Autonomous",
|
|
372
|
+
"interactive": "Interactive",
|
|
373
|
+
"task-runner": "Task runner",
|
|
374
|
+
"coordinator": "Coordinator",
|
|
375
|
+
"tooltip": "Operational mode — affects how the agent is onboarded and how it consumes work."
|
|
376
|
+
},
|
|
377
|
+
"filter": {
|
|
378
|
+
"byTag": "Filter by tag:",
|
|
379
|
+
"groupBy": "Group by:",
|
|
380
|
+
"groupByNone": "No grouping",
|
|
381
|
+
"groupByTag": "Tag",
|
|
382
|
+
"groupByMode": "Mode",
|
|
383
|
+
"clear": "Clear",
|
|
384
|
+
"untagged": "Untagged",
|
|
385
|
+
"noMatches": "No agents match the current filter."
|
|
386
|
+
},
|
|
368
387
|
"approval": {
|
|
369
388
|
"credentials_ready_title": "Agent approved",
|
|
370
389
|
"credentials_ready_desc": "Copy the credentials below and paste them to your agent.",
|
|
@@ -646,6 +665,12 @@
|
|
|
646
665
|
},
|
|
647
666
|
"integration": {
|
|
648
667
|
"checklistTitle": "Hello Integration",
|
|
668
|
+
"postOnboardingSetup": "Post-Onboarding Setup",
|
|
669
|
+
"commandsRegistered": "Commands registered",
|
|
670
|
+
"configPublished": "Config published",
|
|
671
|
+
"sharedTagsInUse": "Shared tags in use",
|
|
672
|
+
"knowledgePackages": "Knowledge packages",
|
|
673
|
+
"notApplicable": "Not applicable",
|
|
649
674
|
"progress": "Progress",
|
|
650
675
|
"rerun": "Re-run Hello Integration",
|
|
651
676
|
"rerunStarted": "Hello Integration re-started",
|
|
@@ -2618,6 +2643,34 @@
|
|
|
2618
2643
|
"existingMerge": "Merge (keep existing, add new)",
|
|
2619
2644
|
"existingOverwrite": "Overwrite",
|
|
2620
2645
|
"existingCancel": "Cancel",
|
|
2646
|
+
"operatorTitle": "Operator info (privacy policy)",
|
|
2647
|
+
"operatorIntro": "AIMEAT renders a privacy policy at /v1/privacy with the operator's identity. This is required by GDPR for any node serving users. The next prompts collect the legal fields. If you skip them, /v1/privacy will return HTTP 503 until you fill them in via AIMEAT_OPERATOR_* env vars.",
|
|
2648
|
+
"operatorPersonalAsk": "This is a personal node — set up privacy policy details now? (recommended if anyone else might use this node)",
|
|
2649
|
+
"operatorName": "Legal name (the controller)",
|
|
2650
|
+
"operatorNameRequired": "Operator name is required",
|
|
2651
|
+
"operatorType": "Operator type",
|
|
2652
|
+
"operatorTypeNaturalPerson": "Natural person (individual)",
|
|
2653
|
+
"operatorTypeCompany": "Company",
|
|
2654
|
+
"operatorTypeOrganisation": "Organisation",
|
|
2655
|
+
"operatorTypeAssociation": "Association",
|
|
2656
|
+
"operatorAddress": "Postal address (required by GDPR for the controller)",
|
|
2657
|
+
"operatorAddressRequired": "Postal address is required",
|
|
2658
|
+
"operatorCountry": "Country of operation",
|
|
2659
|
+
"operatorCountryRequired": "Country is required",
|
|
2660
|
+
"operatorEmail": "Privacy contact email",
|
|
2661
|
+
"operatorEmailRequired": "Privacy email is required",
|
|
2662
|
+
"operatorEmailInvalid": "Must be a valid email address",
|
|
2663
|
+
"operatorSecurityEmail": "Security contact email (leave empty to reuse the privacy email)",
|
|
2664
|
+
"operatorHostingName": "Hosting provider name",
|
|
2665
|
+
"operatorHostingNameRequired": "Hosting provider name is required",
|
|
2666
|
+
"operatorHostingUrl": "Hosting provider URL (optional, for the privacy-page link)",
|
|
2667
|
+
"operatorHostingLocation": "Hosting location (e.g. France (EU/EEA))",
|
|
2668
|
+
"operatorHostingLocationRequired": "Hosting location is required",
|
|
2669
|
+
"operatorSupervisoryName": "Data protection supervisory authority (in your jurisdiction)",
|
|
2670
|
+
"operatorSupervisoryNameRequired": "Supervisory authority name is required",
|
|
2671
|
+
"operatorSupervisoryUrl": "Supervisory authority URL",
|
|
2672
|
+
"operatorSupervisoryUrlRequired": "Supervisory authority URL is required",
|
|
2673
|
+
"operatorEffectiveDate": "Privacy policy effective date (YYYY-MM-DD)",
|
|
2621
2674
|
"summaryTitle": "Configuration Summary",
|
|
2622
2675
|
"summaryChanged": "Changed from default:",
|
|
2623
2676
|
"summaryDefault": "All other settings use defaults.",
|
|
@@ -2791,7 +2844,7 @@
|
|
|
2791
2844
|
"usernamePlaceholder": "Username",
|
|
2792
2845
|
"passwordPlaceholder": "Password (min 4 chars)",
|
|
2793
2846
|
"displayNamePlaceholder": "Display Name (optional, for new accounts)",
|
|
2794
|
-
"signInBtn": "Sign In",
|
|
2847
|
+
"signInBtn": "Sign In / Register",
|
|
2795
2848
|
"cancelBtn": "Cancel",
|
|
2796
2849
|
"working": "Working...",
|
|
2797
2850
|
"errUserShort": "Username must be at least 3 characters",
|
|
@@ -5426,6 +5479,8 @@
|
|
|
5426
5479
|
"report_telemetry": "Report Telemetry",
|
|
5427
5480
|
"accept_test_task": "Accept Test Task",
|
|
5428
5481
|
"complete_test_task": "Complete Test Task",
|
|
5482
|
+
"publish_commands": "Publish Slash Commands",
|
|
5483
|
+
"publish_config": "Publish Runtime Config",
|
|
5429
5484
|
"declare_services": "Declare Services"
|
|
5430
5485
|
},
|
|
5431
5486
|
"stepDescriptions": {
|
|
@@ -5439,6 +5494,8 @@
|
|
|
5439
5494
|
"report_telemetry": "At least one telemetry event with non-zero data",
|
|
5440
5495
|
"accept_test_task": "Agent proposes todos for the test task",
|
|
5441
5496
|
"complete_test_task": "Agent executes and completes the test task",
|
|
5497
|
+
"publish_commands": "agents.{name}.commands memory has a non-empty array of { name, description, category }",
|
|
5498
|
+
"publish_config": "At least one agents.config.{name}.* memory entry exists describing this runtime",
|
|
5442
5499
|
"declare_services": "Agent declares offered services (optional)"
|
|
5443
5500
|
},
|
|
5444
5501
|
"errors": {
|
package/dist/locales/fi.json
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
"noData": "Ei tietoja saatavilla",
|
|
13
13
|
"id": "ID",
|
|
14
14
|
"name": "Nimi",
|
|
15
|
-
"add": "Lisää"
|
|
15
|
+
"add": "Lisää",
|
|
16
|
+
"yes": "Kyllä",
|
|
17
|
+
"no": "Ei"
|
|
16
18
|
},
|
|
17
19
|
"nav": {
|
|
18
20
|
"try": "Kokeile",
|
|
@@ -365,6 +367,23 @@
|
|
|
365
367
|
"denied": "Pyyntö hylätty",
|
|
366
368
|
"approveError": "Agentin hyväksyminen epäonnistui"
|
|
367
369
|
},
|
|
370
|
+
"mode": {
|
|
371
|
+
"autonomous": "Autonominen",
|
|
372
|
+
"interactive": "Interaktiivinen",
|
|
373
|
+
"task-runner": "Tehtäväajuri",
|
|
374
|
+
"coordinator": "Koordinaattori",
|
|
375
|
+
"tooltip": "Toimintatila — vaikuttaa siihen, miten agentti läpäisee Hello Integrationin ja kuluttaa työtä."
|
|
376
|
+
},
|
|
377
|
+
"filter": {
|
|
378
|
+
"byTag": "Suodata tagilla:",
|
|
379
|
+
"groupBy": "Ryhmittele:",
|
|
380
|
+
"groupByNone": "Ei ryhmittelyä",
|
|
381
|
+
"groupByTag": "Tagin mukaan",
|
|
382
|
+
"groupByMode": "Tilan mukaan",
|
|
383
|
+
"clear": "Tyhjennä",
|
|
384
|
+
"untagged": "Ei tageja",
|
|
385
|
+
"noMatches": "Yksikään agentti ei vastaa nykyistä suodatinta."
|
|
386
|
+
},
|
|
368
387
|
"approval": {
|
|
369
388
|
"credentials_ready_title": "Agentti hyväksytty",
|
|
370
389
|
"credentials_ready_desc": "Kopioi alla olevat tunnistetiedot ja liitä ne agentillesi.",
|
|
@@ -646,6 +665,12 @@
|
|
|
646
665
|
},
|
|
647
666
|
"integration": {
|
|
648
667
|
"checklistTitle": "Hello-integraatio",
|
|
668
|
+
"postOnboardingSetup": "Perehdytyksen jälkeiset toimet",
|
|
669
|
+
"commandsRegistered": "Komennot rekisteröity",
|
|
670
|
+
"configPublished": "Konfiguraatio julkaistu",
|
|
671
|
+
"sharedTagsInUse": "Jaetut tagit käytössä",
|
|
672
|
+
"knowledgePackages": "Tietopaketit",
|
|
673
|
+
"notApplicable": "Ei sovellu",
|
|
649
674
|
"progress": "Edistyminen",
|
|
650
675
|
"rerun": "Suorita Hello-integraatio uudelleen",
|
|
651
676
|
"rerunStarted": "Hello-integraatio aloitettu uudelleen",
|
|
@@ -2618,6 +2643,34 @@
|
|
|
2618
2643
|
"existingMerge": "Yhdistä (säilytä olemassaolevat, lisää uudet)",
|
|
2619
2644
|
"existingOverwrite": "Korvaa",
|
|
2620
2645
|
"existingCancel": "Peruuta",
|
|
2646
|
+
"operatorTitle": "Ylläpitäjän tiedot (tietosuojaseloste)",
|
|
2647
|
+
"operatorIntro": "AIMEAT renderöi tietosuojaselosteen osoitteessa /v1/privacy ylläpitäjän tiedoilla. GDPR vaatii tämän kaikilta käyttäjiä palvelevilta solmuilta. Seuraavat kysymykset keräävät lakisääteiset kentät. Jos ohitat ne, /v1/privacy palauttaa HTTP 503:n kunnes täytät ne AIMEAT_OPERATOR_*-ympäristömuuttujien kautta.",
|
|
2648
|
+
"operatorPersonalAsk": "Tämä on henkilökohtainen solmu — määritä tietosuojaselosteen tiedot nyt? (suositeltavaa jos joku muu saattaa käyttää tätä solmua)",
|
|
2649
|
+
"operatorName": "Virallinen nimi (rekisterinpitäjä)",
|
|
2650
|
+
"operatorNameRequired": "Ylläpitäjän nimi on pakollinen",
|
|
2651
|
+
"operatorType": "Ylläpitäjän tyyppi",
|
|
2652
|
+
"operatorTypeNaturalPerson": "Luonnollinen henkilö (yksityishenkilö)",
|
|
2653
|
+
"operatorTypeCompany": "Yritys",
|
|
2654
|
+
"operatorTypeOrganisation": "Organisaatio",
|
|
2655
|
+
"operatorTypeAssociation": "Yhdistys",
|
|
2656
|
+
"operatorAddress": "Postiosoite (GDPR edellyttää rekisterinpitäjältä)",
|
|
2657
|
+
"operatorAddressRequired": "Postiosoite on pakollinen",
|
|
2658
|
+
"operatorCountry": "Toimintamaa",
|
|
2659
|
+
"operatorCountryRequired": "Maa on pakollinen",
|
|
2660
|
+
"operatorEmail": "Tietosuojayhteyssähköposti",
|
|
2661
|
+
"operatorEmailRequired": "Tietosuojasähköposti on pakollinen",
|
|
2662
|
+
"operatorEmailInvalid": "Sähköpostin pitää olla kelvollinen",
|
|
2663
|
+
"operatorSecurityEmail": "Tietoturvasähköposti (tyhjä = sama kuin tietosuojasähköposti)",
|
|
2664
|
+
"operatorHostingName": "Hosting-palveluntarjoaja",
|
|
2665
|
+
"operatorHostingNameRequired": "Hosting-palveluntarjoajan nimi on pakollinen",
|
|
2666
|
+
"operatorHostingUrl": "Hosting-palveluntarjoajan URL (valinnainen, linkkiä varten)",
|
|
2667
|
+
"operatorHostingLocation": "Hosting-sijainti (esim. Ranska (EU/ETA))",
|
|
2668
|
+
"operatorHostingLocationRequired": "Hosting-sijainti on pakollinen",
|
|
2669
|
+
"operatorSupervisoryName": "Tietosuojaviranomainen (omalla lainkäyttöalueellasi)",
|
|
2670
|
+
"operatorSupervisoryNameRequired": "Tietosuojaviranomaisen nimi on pakollinen",
|
|
2671
|
+
"operatorSupervisoryUrl": "Tietosuojaviranomaisen URL",
|
|
2672
|
+
"operatorSupervisoryUrlRequired": "Tietosuojaviranomaisen URL on pakollinen",
|
|
2673
|
+
"operatorEffectiveDate": "Tietosuojaselosteen voimaantulopäivä (YYYY-MM-DD)",
|
|
2621
2674
|
"summaryTitle": "Asetusten yhteenveto",
|
|
2622
2675
|
"summaryChanged": "Muutettu oletuksesta:",
|
|
2623
2676
|
"summaryDefault": "Kaikki muut asetukset käyttävät oletuksia.",
|
|
@@ -2791,7 +2844,7 @@
|
|
|
2791
2844
|
"usernamePlaceholder": "Käyttäjänimi",
|
|
2792
2845
|
"passwordPlaceholder": "Salasana (vähintään 4 merkkiä)",
|
|
2793
2846
|
"displayNamePlaceholder": "Näyttönimi (valinnainen, uusille tileille)",
|
|
2794
|
-
"signInBtn": "Kirjaudu",
|
|
2847
|
+
"signInBtn": "Kirjaudu / Rekisteröidy",
|
|
2795
2848
|
"cancelBtn": "Peruuta",
|
|
2796
2849
|
"working": "Käsitellään...",
|
|
2797
2850
|
"errUserShort": "Käyttäjänimen tulee olla vähintään 3 merkkiä",
|
|
@@ -5426,6 +5479,8 @@
|
|
|
5426
5479
|
"report_telemetry": "Raportoi telemetria",
|
|
5427
5480
|
"accept_test_task": "Hyväksy testitehtävä",
|
|
5428
5481
|
"complete_test_task": "Suorita testitehtävä",
|
|
5482
|
+
"publish_commands": "Julkaise slash-komennot",
|
|
5483
|
+
"publish_config": "Julkaise runtime-konfiguraatio",
|
|
5429
5484
|
"declare_services": "Ilmoita palvelut"
|
|
5430
5485
|
},
|
|
5431
5486
|
"stepDescriptions": {
|
|
@@ -5439,6 +5494,8 @@
|
|
|
5439
5494
|
"report_telemetry": "Vähintään yksi telemetriatapahtuma nollasta poikkeavalla datalla",
|
|
5440
5495
|
"accept_test_task": "Agentti ehdottaa todoja testitehtävälle",
|
|
5441
5496
|
"complete_test_task": "Agentti suorittaa ja viimeistelee testitehtävän",
|
|
5497
|
+
"publish_commands": "agents.{name}.commands -muistissa on epätyhjä { name, description, category } -taulu",
|
|
5498
|
+
"publish_config": "Vähintään yksi agents.config.{name}.* -muistitietue kuvaa tätä runtimea",
|
|
5442
5499
|
"declare_services": "Agentti ilmoittaa tarjoamansa palvelut (valinnainen)"
|
|
5443
5500
|
},
|
|
5444
5501
|
"errors": {
|