aimeat 1.19.0 → 1.20.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 +39 -3
- package/dist/.env.example +5 -1
- package/dist/locales/en.json +231 -1
- package/dist/locales/fi.json +233 -1
- package/dist/public/components/Markdown.js +88 -15
- package/dist/public/components/Mermaid.js +59 -0
- package/dist/public/components/NotificationBell.js +94 -0
- package/dist/public/css/theme.css +26 -0
- package/dist/public/css/views/admin.css +16 -0
- package/dist/public/css/views/agents-detail.css +93 -0
- package/dist/public/css/views/profile.css +241 -2
- package/dist/public/js/api.js +11 -5
- package/dist/public/js/services/admin.js +4 -0
- package/dist/public/js/services/agents.js +19 -0
- package/dist/public/js/services/organisms.js +822 -2
- package/dist/public/lib/mermaid/README.md +6 -0
- package/dist/public/lib/mermaid/mermaid.min.js +3405 -0
- package/dist/public/lib/toastui/toastui-editor-all.min.js +24 -0
- package/dist/public/lib/toastui/toastui-editor.min.css +6 -0
- package/dist/public/llms-template.txt +4 -0
- package/dist/public/spa.html +8 -0
- package/dist/public/views/admin/security-tab.js +93 -0
- package/dist/public/views/admin.js +2 -0
- package/dist/public/views/doc-solo.js +102 -0
- package/dist/public/views/profile/agents/agent-card.js +67 -8
- package/dist/public/views/profile/agents/tab-messages.js +51 -7
- package/dist/public/views/profile/agents-tab.js +184 -4
- package/dist/public/views/profile/agents-tasks-subtab.js +11 -1
- package/dist/public/views/profile/generator-dashboard/use-autopilot.js +5 -2
- package/dist/public/views/profile/landing-page.js +12 -4
- package/dist/public/views/profile/organisms-tab.js +1640 -2
- package/dist/public/views/profile/schedule-item.js +15 -1
- package/dist/public/views/profile.js +6 -3
- package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/index.js +2 -0
- package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js +31 -0
- package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workspaces.d.ts +15 -0
- package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/workspaces.js +240 -0
- package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -0
- package/dist/src/cli/connect/tool-call.d.ts +5 -0
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +255 -0
- 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 +16 -8
- package/dist/src/cli/init-wizard.js.map +1 -1
- package/dist/src/config.d.ts +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +4 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +998 -23
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/generated/prisma-postgres/client.d.ts +1 -0
- package/dist/src/generated/prisma-postgres/client.js +5 -0
- package/dist/src/generated/prisma-postgres/default.d.ts +1 -0
- package/dist/src/generated/prisma-postgres/default.js +5 -0
- package/dist/src/generated/prisma-postgres/edge.d.ts +1 -0
- package/dist/src/generated/prisma-postgres/edge.js +1530 -0
- package/dist/src/generated/prisma-postgres/index-browser.js +1516 -0
- package/dist/src/generated/prisma-postgres/index.d.ts +128983 -0
- package/dist/src/generated/prisma-postgres/index.js +1551 -0
- package/dist/src/generated/prisma-postgres/package.json +183 -0
- package/dist/src/generated/prisma-postgres/query_engine-windows.dll.node +0 -0
- package/dist/src/generated/prisma-postgres/query_engine_bg.js +2 -0
- package/dist/src/generated/prisma-postgres/query_engine_bg.wasm +0 -0
- package/dist/src/generated/prisma-postgres/runtime/edge-esm.js +35 -0
- package/dist/src/generated/prisma-postgres/runtime/edge.js +35 -0
- package/dist/src/generated/prisma-postgres/runtime/index-browser.d.ts +370 -0
- package/dist/src/generated/prisma-postgres/runtime/index-browser.js +17 -0
- package/dist/src/generated/prisma-postgres/runtime/library.d.ts +3982 -0
- package/dist/src/generated/prisma-postgres/runtime/library.js +147 -0
- package/dist/src/generated/prisma-postgres/runtime/react-native.js +84 -0
- package/dist/src/generated/prisma-postgres/runtime/wasm-compiler-edge.js +85 -0
- package/dist/src/generated/prisma-postgres/runtime/wasm-engine-edge.js +38 -0
- package/dist/src/generated/prisma-postgres/schema.prisma +1465 -0
- package/dist/src/generated/prisma-postgres/wasm-edge-light-loader.mjs +5 -0
- package/dist/src/generated/prisma-postgres/wasm-worker-loader.mjs +5 -0
- package/dist/src/generated/prisma-postgres/wasm.d.ts +1 -0
- package/dist/src/generated/prisma-postgres/wasm.js +1537 -0
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/agent-messages.d.ts +3 -0
- package/dist/src/mcp/agent-messages.d.ts.map +1 -1
- package/dist/src/mcp/agent-messages.js +9 -3
- package/dist/src/mcp/agent-messages.js.map +1 -1
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +12 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.js +139 -0
- package/dist/src/mcp/catalog/definitions.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +9 -2
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +2 -0
- package/dist/src/mcp/index.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 +106 -21
- package/dist/src/mcp/organisms.js.map +1 -1
- package/dist/src/mcp/workspaces.d.ts +34 -0
- package/dist/src/mcp/workspaces.d.ts.map +1 -0
- package/dist/src/mcp/workspaces.js +464 -0
- package/dist/src/mcp/workspaces.js.map +1 -0
- package/dist/src/middleware/workspace-access.d.ts +13 -0
- package/dist/src/middleware/workspace-access.d.ts.map +1 -1
- package/dist/src/middleware/workspace-access.js +12 -7
- package/dist/src/middleware/workspace-access.js.map +1 -1
- package/dist/src/models/schemas.d.ts +2 -2
- package/dist/src/routes/admin-prompts.d.ts.map +1 -1
- package/dist/src/routes/admin-prompts.js +4 -1
- package/dist/src/routes/admin-prompts.js.map +1 -1
- package/dist/src/routes/admin-security.d.ts +19 -0
- package/dist/src/routes/admin-security.d.ts.map +1 -0
- package/dist/src/routes/admin-security.js +87 -0
- package/dist/src/routes/admin-security.js.map +1 -0
- package/dist/src/routes/agent-messages.d.ts +3 -0
- package/dist/src/routes/agent-messages.d.ts.map +1 -1
- package/dist/src/routes/agent-messages.js +27 -2
- package/dist/src/routes/agent-messages.js.map +1 -1
- package/dist/src/routes/agent-tasks.d.ts +5 -1
- package/dist/src/routes/agent-tasks.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks.js +43 -3
- package/dist/src/routes/agent-tasks.js.map +1 -1
- package/dist/src/routes/apps.d.ts +13 -0
- package/dist/src/routes/apps.d.ts.map +1 -1
- package/dist/src/routes/apps.js +74 -42
- package/dist/src/routes/apps.js.map +1 -1
- package/dist/src/routes/bootstrap.d.ts.map +1 -1
- package/dist/src/routes/bootstrap.js +1 -0
- package/dist/src/routes/bootstrap.js.map +1 -1
- package/dist/src/routes/extensions.d.ts.map +1 -1
- package/dist/src/routes/extensions.js +5 -1
- package/dist/src/routes/extensions.js.map +1 -1
- package/dist/src/routes/generator-autopilot.d.ts +1 -0
- package/dist/src/routes/generator-autopilot.d.ts.map +1 -1
- package/dist/src/routes/generator-autopilot.js +8 -2
- package/dist/src/routes/generator-autopilot.js.map +1 -1
- package/dist/src/routes/generator.d.ts.map +1 -1
- package/dist/src/routes/generator.js +20 -0
- package/dist/src/routes/generator.js.map +1 -1
- package/dist/src/routes/libs.d.ts +4 -0
- package/dist/src/routes/libs.d.ts.map +1 -1
- package/dist/src/routes/libs.js +134 -5
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/memory.d.ts +2 -0
- package/dist/src/routes/memory.d.ts.map +1 -1
- package/dist/src/routes/memory.js +20 -10
- package/dist/src/routes/memory.js.map +1 -1
- package/dist/src/routes/notifications.d.ts +18 -0
- package/dist/src/routes/notifications.d.ts.map +1 -0
- package/dist/src/routes/notifications.js +64 -0
- package/dist/src/routes/notifications.js.map +1 -0
- package/dist/src/routes/organisms.d.ts +29 -0
- package/dist/src/routes/organisms.d.ts.map +1 -1
- package/dist/src/routes/organisms.js +1042 -2
- package/dist/src/routes/organisms.js.map +1 -1
- package/dist/src/routes/schedules.d.ts.map +1 -1
- package/dist/src/routes/schedules.js +10 -2
- package/dist/src/routes/schedules.js.map +1 -1
- package/dist/src/routes/storage-files.d.ts +5 -0
- package/dist/src/routes/storage-files.d.ts.map +1 -1
- package/dist/src/routes/storage-files.js +83 -16
- package/dist/src/routes/storage-files.js.map +1 -1
- package/dist/src/routes/upload.d.ts +3 -0
- package/dist/src/routes/upload.d.ts.map +1 -1
- package/dist/src/routes/upload.js +9 -1
- package/dist/src/routes/upload.js.map +1 -1
- package/dist/src/server-bootstrap/config-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/config-init.js +1 -0
- package/dist/src/server-bootstrap/config-init.js.map +1 -1
- package/dist/src/server-bootstrap/middleware-guards.d.ts.map +1 -1
- package/dist/src/server-bootstrap/middleware-guards.js +4 -2
- package/dist/src/server-bootstrap/middleware-guards.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +4 -0
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.d.ts +17 -0
- package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +26 -0
- package/dist/src/server-bootstrap/service-init.js.map +1 -1
- package/dist/src/services/access-guard.d.ts +52 -0
- package/dist/src/services/access-guard.d.ts.map +1 -0
- package/dist/src/services/access-guard.js +30 -0
- package/dist/src/services/access-guard.js.map +1 -0
- package/dist/src/services/config-schema.js +1 -1
- package/dist/src/services/config-schema.js.map +1 -1
- package/dist/src/services/consent.d.ts.map +1 -1
- package/dist/src/services/consent.js +37 -1
- package/dist/src/services/consent.js.map +1 -1
- package/dist/src/services/gate-expiry.d.ts +25 -0
- package/dist/src/services/gate-expiry.d.ts.map +1 -0
- package/dist/src/services/gate-expiry.js +26 -0
- package/dist/src/services/gate-expiry.js.map +1 -0
- package/dist/src/services/gate-policy.d.ts +50 -0
- package/dist/src/services/gate-policy.d.ts.map +1 -0
- package/dist/src/services/gate-policy.js +82 -0
- package/dist/src/services/gate-policy.js.map +1 -0
- package/dist/src/services/generator-autopilot.d.ts +18 -1
- package/dist/src/services/generator-autopilot.d.ts.map +1 -1
- package/dist/src/services/generator-autopilot.js +94 -154
- package/dist/src/services/generator-autopilot.js.map +1 -1
- package/dist/src/services/handbooks/agent.d.ts +3 -1
- package/dist/src/services/handbooks/agent.d.ts.map +1 -1
- package/dist/src/services/handbooks/agent.js +10 -3
- package/dist/src/services/handbooks/agent.js.map +1 -1
- package/dist/src/services/manifest-schema.d.ts +48 -0
- package/dist/src/services/manifest-schema.d.ts.map +1 -0
- package/dist/src/services/manifest-schema.js +88 -0
- package/dist/src/services/manifest-schema.js.map +1 -0
- package/dist/src/services/notify.d.ts +19 -0
- package/dist/src/services/notify.d.ts.map +1 -0
- package/dist/src/services/notify.js +43 -0
- package/dist/src/services/notify.js.map +1 -0
- package/dist/src/services/organism-export.d.ts +13 -0
- package/dist/src/services/organism-export.d.ts.map +1 -0
- package/dist/src/services/organism-export.js +58 -0
- package/dist/src/services/organism-export.js.map +1 -0
- package/dist/src/services/organism-import.d.ts +16 -0
- package/dist/src/services/organism-import.d.ts.map +1 -0
- package/dist/src/services/organism-import.js +82 -0
- package/dist/src/services/organism-import.js.map +1 -0
- package/dist/src/services/prompt-defaults.d.ts.map +1 -1
- package/dist/src/services/prompt-defaults.js +75 -0
- package/dist/src/services/prompt-defaults.js.map +1 -1
- package/dist/src/services/safe-zip.d.ts +27 -0
- package/dist/src/services/safe-zip.d.ts.map +1 -0
- package/dist/src/services/safe-zip.js +131 -0
- package/dist/src/services/safe-zip.js.map +1 -0
- package/dist/src/services/scheduler.d.ts +19 -1
- package/dist/src/services/scheduler.d.ts.map +1 -1
- package/dist/src/services/scheduler.js +49 -17
- package/dist/src/services/scheduler.js.map +1 -1
- package/dist/src/services/security-incident.d.ts +25 -0
- package/dist/src/services/security-incident.d.ts.map +1 -0
- package/dist/src/services/security-incident.js +49 -0
- package/dist/src/services/security-incident.js.map +1 -0
- package/dist/src/services/skill-bundle/generator.d.ts +2 -0
- package/dist/src/services/skill-bundle/generator.d.ts.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +11 -5
- package/dist/src/services/skill-bundle/generator.js.map +1 -1
- package/dist/src/services/template-bundles.d.ts +37 -0
- package/dist/src/services/template-bundles.d.ts.map +1 -0
- package/dist/src/services/template-bundles.js +130 -0
- package/dist/src/services/template-bundles.js.map +1 -0
- package/dist/src/services/workspace-export.d.ts +63 -0
- package/dist/src/services/workspace-export.d.ts.map +1 -0
- package/dist/src/services/workspace-export.js +145 -0
- package/dist/src/services/workspace-export.js.map +1 -0
- package/dist/src/services/workspace-import.d.ts +44 -0
- package/dist/src/services/workspace-import.d.ts.map +1 -0
- package/dist/src/services/workspace-import.js +120 -0
- package/dist/src/services/workspace-import.js.map +1 -0
- package/dist/src/services/workspace-meta.d.ts +39 -0
- package/dist/src/services/workspace-meta.d.ts.map +1 -0
- package/dist/src/services/workspace-meta.js +95 -0
- package/dist/src/services/workspace-meta.js.map +1 -0
- package/dist/src/storage/interface.d.ts +26 -0
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/interface.js.map +1 -1
- package/dist/src/storage/pattern-utils.d.ts +26 -1
- package/dist/src/storage/pattern-utils.d.ts.map +1 -1
- package/dist/src/storage/pattern-utils.js +37 -8
- package/dist/src/storage/pattern-utils.js.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +50 -7
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +244 -15
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/postgres/index.d.ts +6 -0
- package/dist/src/storage/providers/postgres/index.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres/index.js +33 -0
- package/dist/src/storage/providers/postgres/index.js.map +1 -0
- package/dist/src/storage/providers/sqlite/index.d.ts +11 -1
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +152 -2
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.js +5 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/storage-file.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/storage-file.js +6 -2
- package/dist/src/storage/providers/sqlite/repos/storage-file.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +23 -0
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/app.repository.d.ts +42 -0
- package/dist/src/storage/repositories/app.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/organism.repository.d.ts +8 -1
- package/dist/src/storage/repositories/organism.repository.d.ts.map +1 -1
- package/dist/src/storage/storage-factory.d.ts +1 -1
- package/dist/src/storage/storage-factory.d.ts.map +1 -1
- package/dist/src/storage/storage-factory.js +6 -0
- package/dist/src/storage/storage-factory.js.map +1 -1
- package/dist/src/utils/env-config.js +5 -5
- package/dist/src/utils/env-config.js.map +1 -1
- package/dist/src/utils/env-validator.js +6 -6
- package/dist/src/utils/env-validator.js.map +1 -1
- package/dist/src/utils/stable-json.d.ts +22 -0
- package/dist/src/utils/stable-json.d.ts.map +1 -0
- package/dist/src/utils/stable-json.js +36 -0
- package/dist/src/utils/stable-json.js.map +1 -0
- package/dist/static/app-catalog.html +936 -221
- package/package.json +6 -3
- package/prisma/schema.postgres.prisma +1467 -0
- package/prisma/schema.prisma +27 -0
package/README.md
CHANGED
|
@@ -13,6 +13,18 @@ AIMEAT is an open protocol for AI agent infrastructure. It gives agents (Claude,
|
|
|
13
13
|
|
|
14
14
|
> Try it at [aimeat.io](https://aimeat.io/), or [run your own node](#getting-started) and join the federation.
|
|
15
15
|
|
|
16
|
+
### Fastest start: let your AI assistant set this up
|
|
17
|
+
|
|
18
|
+
Cloned the repo and want it running without reading docs? Open **[startup.prompt.md](startup.prompt.md)** and
|
|
19
|
+
paste its contents into **Claude Code**, **Copilot**, **Cursor**, or any coding assistant with this repo
|
|
20
|
+
open. It takes the assistant — and you — from a fresh clone to a **live AIMEAT node** (or a connection to a
|
|
21
|
+
hosted one), **registers your AI agents** (CrewAI crews, Claude, Cursor, …) onto it, and explains the
|
|
22
|
+
essentials of working with AIMEAT as it goes.
|
|
23
|
+
|
|
24
|
+
The prompt asks only what it can't determine for itself (self-host vs `aimeat.io`, SQLite vs MongoDB, your
|
|
25
|
+
owner handle), runs the setup commands for you, and surfaces each agent's approval code for you to confirm.
|
|
26
|
+
It never invents secrets or pushes anything outward without asking.
|
|
27
|
+
|
|
16
28
|
<p align="center">
|
|
17
29
|
<img src="assets/screenshots/portal-landing.png" alt="Portal landing page" width="24%" />
|
|
18
30
|
<img src="assets/screenshots/profile-overview.png" alt="User profile with the persistent grouped sidebar" width="24%" />
|
|
@@ -357,8 +369,10 @@ aimeat validate # check for problems
|
|
|
357
369
|
pnpm dev # development with auto-reload
|
|
358
370
|
pnpm build && pnpm start # production
|
|
359
371
|
|
|
360
|
-
# Docker (
|
|
361
|
-
docker compose up
|
|
372
|
+
# Docker — one compose file per backend (run from the aimeat/ directory)
|
|
373
|
+
docker compose up # MongoDB (default)
|
|
374
|
+
docker compose -f docker-compose.postgres.yml up --build # PostgreSQL
|
|
375
|
+
docker compose -f docker-compose.sqlite.yml up --build # SQLite (no external DB)
|
|
362
376
|
```
|
|
363
377
|
|
|
364
378
|
Server runs on port 40050. Quick test: paste this into any AI chat:
|
|
@@ -367,13 +381,34 @@ Server runs on port 40050. Quick test: paste this into any AI chat:
|
|
|
367
381
|
|
|
368
382
|
If the AI reads the docs and explains the protocol, everything works. Admin dashboard URL is shown in the startup log.
|
|
369
383
|
|
|
384
|
+
### Desktop app (Windows) — no terminal needed
|
|
385
|
+
|
|
386
|
+
For a personal node without the command line, **AIMEAT Personal Node** is a one-click Windows installer that
|
|
387
|
+
bundles everything — the node server, a Node.js runtime, and a persistent SQLite database — so there are **no
|
|
388
|
+
prerequisites** to install. A small control panel starts/stops the node, shows status and live logs, configures
|
|
389
|
+
it (port, federation role), connects a local AI (Ollama / LM Studio) to your account, and opens the web
|
|
390
|
+
dashboard in your browser. Your data lives in your own app-data folder and survives restarts.
|
|
391
|
+
|
|
392
|
+
<p align="center">
|
|
393
|
+
<img src="assets/screenshots/aimeat-desktop.png" alt="AIMEAT Personal Node desktop app — control panel with Getting Started steps, node status (running on port 40050), and node info" width="640" />
|
|
394
|
+
</p>
|
|
395
|
+
|
|
396
|
+
Build the installer from source (a Rust toolchain + Node 24 + pnpm are needed to *build* it, not to *run* it):
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
pnpm build-desktop # installer lands in aimeat-desktop/src-tauri/target/release/bundle/
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
Built with [Tauri](https://tauri.app). Windows is the supported target today (macOS/Linux can follow via per-OS
|
|
403
|
+
CI). Developer docs: [aimeat-desktop/README.md](aimeat-desktop/README.md).
|
|
404
|
+
|
|
370
405
|
---
|
|
371
406
|
|
|
372
407
|
## Reference Implementation
|
|
373
408
|
|
|
374
409
|
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.
|
|
375
410
|
|
|
376
|
-
|
|
411
|
+
Three storage backends: SQLite (personal nodes, local dev; can run `:memory:` for true in-RAM speed), MongoDB (production), and PostgreSQL (production). MongoDB and PostgreSQL share one Prisma-backed code path, so behaviour is identical across both. The legacy in-memory backend is deprecated -- SQLite `:memory:` covers the same fast-iteration role using the actual production code path.
|
|
377
412
|
|
|
378
413
|
See the [Implementation Guide v3.0](docs/AIMEAT-IO-Implementation-Guide-v3.0.md) for full details.
|
|
379
414
|
|
|
@@ -382,6 +417,7 @@ See the [Implementation Guide v3.0](docs/AIMEAT-IO-Implementation-Guide-v3.0.md)
|
|
|
382
417
|
```bash
|
|
383
418
|
pnpm test:e2e:sqlite # fast iteration default
|
|
384
419
|
pnpm test:e2e:mongodb # most realistic; run before a PR
|
|
420
|
+
pnpm test:e2e:postgresql # PostgreSQL backend (needs a running Postgres)
|
|
385
421
|
pnpm test:playwright:sqlite # browser tests, scoped
|
|
386
422
|
pnpm test # unit tests
|
|
387
423
|
pnpm typecheck && pnpm lint
|
package/dist/.env.example
CHANGED
|
@@ -9,7 +9,8 @@ AIMEAT_PORT=40050
|
|
|
9
9
|
# AIMEAT_BASE_URL="https://your-domain.com" # Public URL (default: http://localhost:$PORT)
|
|
10
10
|
|
|
11
11
|
# ── Storage Backend ───────────────────────────────────────────
|
|
12
|
-
# Choose storage: memory (default, data lost on restart), sqlite (file-based, zero-config),
|
|
12
|
+
# Choose storage: memory (default, data lost on restart), sqlite (file-based, zero-config),
|
|
13
|
+
# mongodb (production), or postgresql (production). `postgres` is accepted as an alias.
|
|
13
14
|
# AIMEAT_STORAGE="memory"
|
|
14
15
|
|
|
15
16
|
# SQLite — file path for the database (auto-created on first run)
|
|
@@ -18,6 +19,9 @@ AIMEAT_PORT=40050
|
|
|
18
19
|
# MongoDB — required when AIMEAT_STORAGE=mongodb
|
|
19
20
|
# DATABASE_URL="mongodb://user:pass@localhost:27017/AIMEAT?replicaSet=rs0&authSource=admin"
|
|
20
21
|
|
|
22
|
+
# PostgreSQL — required when AIMEAT_STORAGE=postgresql
|
|
23
|
+
# DATABASE_URL="postgresql://user:pass@localhost:5432/aimeat?schema=public"
|
|
24
|
+
|
|
21
25
|
# ── Operator / Admin ───────────────────────────────────────────
|
|
22
26
|
# Auto-generated on startup if not set (printed to console)
|
|
23
27
|
# AIMEAT_ADMIN_PASSWORD="TestAdminPw123!"
|
package/dist/locales/en.json
CHANGED
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
"profile.scheduler.newSchedule": "New schedule",
|
|
10
10
|
"profile.scheduler.close": "Close",
|
|
11
11
|
"profile.scheduler.triggered": "Schedule run started",
|
|
12
|
+
"profile.scheduler.runCreated": "Run started — a new task was created",
|
|
13
|
+
"profile.scheduler.runBusy": "No task created — a previous run is still active. Finish, fail, or delete it, then run again.",
|
|
14
|
+
"profile.scheduler.runLimited": "Not run — this schedule's run limit (daily or max) has been reached.",
|
|
15
|
+
"profile.scheduler.runError": "Run failed",
|
|
12
16
|
"profile.scheduler.cancelled": "Schedule cancelled",
|
|
13
17
|
"profile.scheduler.created": "Schedule created",
|
|
14
18
|
"profile.scheduler.saving": "Saving…",
|
|
@@ -107,6 +111,10 @@
|
|
|
107
111
|
"copied": "✓ Copied",
|
|
108
112
|
"error": "Error"
|
|
109
113
|
},
|
|
114
|
+
"notif": {
|
|
115
|
+
"title": "Notifications",
|
|
116
|
+
"empty": "No notifications yet"
|
|
117
|
+
},
|
|
110
118
|
"nav": {
|
|
111
119
|
"try": "Try it",
|
|
112
120
|
"devView": "For Developers",
|
|
@@ -490,12 +498,27 @@
|
|
|
490
498
|
"byTag": "Filter by tag:",
|
|
491
499
|
"groupBy": "Group by:",
|
|
492
500
|
"groupByNone": "No grouping",
|
|
501
|
+
"groupByCustom": "Custom groups",
|
|
493
502
|
"groupByTag": "Tag",
|
|
494
503
|
"groupByMode": "Mode",
|
|
495
504
|
"clear": "Clear",
|
|
496
505
|
"untagged": "Untagged",
|
|
497
506
|
"noMatches": "No agents match the current filter."
|
|
498
507
|
},
|
|
508
|
+
"groups": {
|
|
509
|
+
"addGroup": "Add group",
|
|
510
|
+
"hint": "Drag an agent by its grip handle onto a group to file it there.",
|
|
511
|
+
"ungrouped": "Ungrouped",
|
|
512
|
+
"unnamed": "Untitled group",
|
|
513
|
+
"namePlaceholder": "Group name",
|
|
514
|
+
"rename": "Click to rename",
|
|
515
|
+
"remove": "Remove group",
|
|
516
|
+
"toggle": "Collapse / expand",
|
|
517
|
+
"dragHint": "Drag onto a group to file it",
|
|
518
|
+
"emptyDrop": "Drag agents here to add them to this group.",
|
|
519
|
+
"confirmRemove": "Remove the group “{name}”? Its agents move to Ungrouped — they are not deleted.",
|
|
520
|
+
"saveError": "Failed to save groups."
|
|
521
|
+
},
|
|
499
522
|
"reorderHint": "Drag to reorder",
|
|
500
523
|
"solo": {
|
|
501
524
|
"notFound": "Agent not found.",
|
|
@@ -743,6 +766,9 @@
|
|
|
743
766
|
"online": "online",
|
|
744
767
|
"offline": "offline",
|
|
745
768
|
"threads": "Conversations",
|
|
769
|
+
"threadFallback": "Conversation",
|
|
770
|
+
"threadsShowMore": "Show {count} more",
|
|
771
|
+
"threadsShowLess": "Show less",
|
|
746
772
|
"proposedTask": "Proposed task",
|
|
747
773
|
"createTask": "Create this task",
|
|
748
774
|
"adjustTask": "Let me adjust",
|
|
@@ -2875,7 +2901,7 @@
|
|
|
2875
2901
|
"baseUrlInvalid": "Must start with http:// or https://",
|
|
2876
2902
|
"dbUrl": "MongoDB URL",
|
|
2877
2903
|
"dbUrlHint": "Leave empty for in-memory storage (data lost on restart)",
|
|
2878
|
-
"dbUrlInvalid": "Must
|
|
2904
|
+
"dbUrlInvalid": "Must be a valid mongodb:// (or mongodb+srv://) or postgresql:// connection URL",
|
|
2879
2905
|
"adminPassword": "Admin password",
|
|
2880
2906
|
"adminPasswordHint": "Password for the operator admin panel (min 8 characters)",
|
|
2881
2907
|
"adminPasswordWeak": "Password must be at least 8 characters",
|
|
@@ -3018,6 +3044,7 @@
|
|
|
3018
3044
|
"storage_memory": "In-memory (development only, data lost on restart)",
|
|
3019
3045
|
"storage_sqlite": "SQLite (personal use, zero-config file-based storage)",
|
|
3020
3046
|
"storage_mongodb": "MongoDB (production, requires external server)",
|
|
3047
|
+
"storage_postgresql": "PostgreSQL (production, requires external server)",
|
|
3021
3048
|
"sqlite_path_label": "SQLite database path",
|
|
3022
3049
|
"sqlite_path_hint": "File path for the SQLite database (auto-created)",
|
|
3023
3050
|
"pushEnabled": "Enable push notifications for personal nodes?",
|
|
@@ -5434,6 +5461,195 @@
|
|
|
5434
5461
|
},
|
|
5435
5462
|
"organisms": {
|
|
5436
5463
|
"title": "Organisms",
|
|
5464
|
+
"openWorkspace": "Open workspace",
|
|
5465
|
+
"backToList": "All organisms",
|
|
5466
|
+
"noWorkspace": "This organism has no workspace yet. Set one up to track goals, plans, deliverables and decisions — versioned on publish.",
|
|
5467
|
+
"setupWorkspace": "Set up workspace",
|
|
5468
|
+
"workspaceReady": "Workspace ready",
|
|
5469
|
+
"setupError": "Failed to set up workspace",
|
|
5470
|
+
"addDraft": "Add draft",
|
|
5471
|
+
"saveDraft": "Save draft",
|
|
5472
|
+
"draftSaved": "Draft saved",
|
|
5473
|
+
"idOptional": "id (optional)",
|
|
5474
|
+
"draft": "draft",
|
|
5475
|
+
"publish": "Publish",
|
|
5476
|
+
"published": "Published",
|
|
5477
|
+
"draftVersion": "Draft",
|
|
5478
|
+
"publishedVersion": "Published",
|
|
5479
|
+
"workspacesDesc": "Workspaces in this organism — each is an independent space with its own documents, records and history.",
|
|
5480
|
+
"newWorkspace": "New workspace",
|
|
5481
|
+
"workspaceName": "Workspace name",
|
|
5482
|
+
"noWorkspaces": "No workspaces yet — create one to get started.",
|
|
5483
|
+
"deleteWorkspaceConfirm": "Delete the workspace “{name}” and all its content? This cannot be undone.",
|
|
5484
|
+
"backToWorkspaces": "Workspaces",
|
|
5485
|
+
"allOrganisms": "All organisms",
|
|
5486
|
+
"currentWorkspaces": "Workspaces in this organism",
|
|
5487
|
+
"import": "Import",
|
|
5488
|
+
"importHint": "Restore a workspace from a .zip backup",
|
|
5489
|
+
"export": "Export backup (.zip)",
|
|
5490
|
+
"imported": "Workspace imported",
|
|
5491
|
+
"exportOrg": "Export organism",
|
|
5492
|
+
"exportOrgHint": "Download a ZIP backup of the whole organism (all workspaces)",
|
|
5493
|
+
"importOrg": "Import organism",
|
|
5494
|
+
"importOrgHint": "Restore an organism from a .zip backup",
|
|
5495
|
+
"orgImported": "Organism imported",
|
|
5496
|
+
"requestAccess": "Request access",
|
|
5497
|
+
"accessRequested": "Access requested — {creator} will decide.",
|
|
5498
|
+
"byCreator": "by {creator}",
|
|
5499
|
+
"yours": "yours",
|
|
5500
|
+
"requests": "Access requests",
|
|
5501
|
+
"noRequests": "No access requests.",
|
|
5502
|
+
"approve": "Approve",
|
|
5503
|
+
"deny": "Deny",
|
|
5504
|
+
"approved": "approved",
|
|
5505
|
+
"revoke": "Revoke",
|
|
5506
|
+
"editFlow": "How editing works here",
|
|
5507
|
+
"activity": "Activity",
|
|
5508
|
+
"draftEdit": "Draft edit",
|
|
5509
|
+
"publishedWord": "Published",
|
|
5510
|
+
"publishedVerb": "published",
|
|
5511
|
+
"editedVerb": "edited",
|
|
5512
|
+
"confirmDeleteItem": "Delete “{name}”? Its draft, published version and full history are removed. This cannot be undone.",
|
|
5513
|
+
"deletedItem": "Deleted",
|
|
5514
|
+
"popOut": "Open in its own window",
|
|
5515
|
+
"docNotFound2": "Document not found.",
|
|
5516
|
+
"loginToView": "Sign in to view this document.",
|
|
5517
|
+
"docRejected": "Document rejected",
|
|
5518
|
+
"participants": "Who works here",
|
|
5519
|
+
"you": "you",
|
|
5520
|
+
"creatorTag": "creator",
|
|
5521
|
+
"guest": "guest",
|
|
5522
|
+
"anAgent": "agent",
|
|
5523
|
+
"hiddenAgent": "An agent whose details you cannot see",
|
|
5524
|
+
"otherAgentHint": "Another owner’s agent — you see what it has done here, not its live status",
|
|
5525
|
+
"viaAgent": "done via this agent",
|
|
5526
|
+
"contributions": "contributions",
|
|
5527
|
+
"events": "events",
|
|
5528
|
+
"less": "Less",
|
|
5529
|
+
"more": "More",
|
|
5530
|
+
"mon": "Mon",
|
|
5531
|
+
"wed": "Wed",
|
|
5532
|
+
"fri": "Fri",
|
|
5533
|
+
"docsDraft": "Docs draft",
|
|
5534
|
+
"docsPublished": "Docs published",
|
|
5535
|
+
"recordsDraft": "Records draft",
|
|
5536
|
+
"recordsPublished": "Records published",
|
|
5537
|
+
"overview": "Overview — who & what uses this organism",
|
|
5538
|
+
"hide": "Hide",
|
|
5539
|
+
"show": "Show",
|
|
5540
|
+
"aiPrompt": "AI access prompt:",
|
|
5541
|
+
"aiPromptHuman": "For chat",
|
|
5542
|
+
"aiPromptAgent": "For coding agent",
|
|
5543
|
+
"promptCopied": "Access prompt copied — paste it to your AI.",
|
|
5544
|
+
"addSpaceBtn": "Space",
|
|
5545
|
+
"addSpaceTitle": "Add a space",
|
|
5546
|
+
"addSpaceDesc": "A document space is a free-form wiki (sections + markdown pages). A record space is a schema-locked list (forms). You can remove spaces in Settings.",
|
|
5547
|
+
"modeDocument": "Document (wiki)",
|
|
5548
|
+
"modeRecords": "Records (form)",
|
|
5549
|
+
"noFields": "No fields",
|
|
5550
|
+
"createdAt": "Created",
|
|
5551
|
+
"lastSaved": "Last saved",
|
|
5552
|
+
"publishedAt": "Published",
|
|
5553
|
+
"fileVisibility": "File visibility",
|
|
5554
|
+
"fileVisibilityNote": "Private files only load for you — make them public to share the document.",
|
|
5555
|
+
"makeAllPublic": "Make all public",
|
|
5556
|
+
"toggleVisibility": "Click to toggle public / private",
|
|
5557
|
+
"public": "Public",
|
|
5558
|
+
"private": "Private",
|
|
5559
|
+
"sources": "Sources",
|
|
5560
|
+
"addSource": "Add source",
|
|
5561
|
+
"close": "Close",
|
|
5562
|
+
"sourcesDesc": "References this workspace draws on — memory, files, and knowledge packages. Pointers only; the originals stay where they live.",
|
|
5563
|
+
"src_memory": "Memory",
|
|
5564
|
+
"src_storage": "Files",
|
|
5565
|
+
"src_knowledge": "Knowledge",
|
|
5566
|
+
"mine": "Mine",
|
|
5567
|
+
"searchSources": "Search…",
|
|
5568
|
+
"search": "Search",
|
|
5569
|
+
"noResults": "No results",
|
|
5570
|
+
"entries": "entries",
|
|
5571
|
+
"attach": "Attach",
|
|
5572
|
+
"noSources": "No sources yet",
|
|
5573
|
+
"external": "external",
|
|
5574
|
+
"sourceAdded": "Source added",
|
|
5575
|
+
"sourceExists": "Already added",
|
|
5576
|
+
"sourcesSaveError": "Failed to save sources",
|
|
5577
|
+
"publishGated": "Sent for review (publish gate is on)",
|
|
5578
|
+
"publishGate": "Require review before publishing",
|
|
5579
|
+
"gateToggled": "Publish gate updated",
|
|
5580
|
+
"needsDecision": "Needs your decision",
|
|
5581
|
+
"approve": "Approve",
|
|
5582
|
+
"reject": "Reject",
|
|
5583
|
+
"approved": "Approved",
|
|
5584
|
+
"rejected": "Rejected",
|
|
5585
|
+
"decisions": "Recent decisions",
|
|
5586
|
+
"noneYet": "none yet",
|
|
5587
|
+
"onePerLine": "one per line",
|
|
5588
|
+
"docs": "docs",
|
|
5589
|
+
"newPage": "New document",
|
|
5590
|
+
"edit": "Edit",
|
|
5591
|
+
"pageTitle": "Document title",
|
|
5592
|
+
"writeMarkdown": "Write markdown…",
|
|
5593
|
+
"insertImage": "Upload image from file",
|
|
5594
|
+
"orPaste": "…or paste / drag an image into the editor",
|
|
5595
|
+
"saving": "Saving…",
|
|
5596
|
+
"pageSaved": "Document saved",
|
|
5597
|
+
"section": "Section",
|
|
5598
|
+
"sectionName": "Section name",
|
|
5599
|
+
"unsorted": "Unsorted",
|
|
5600
|
+
"moveTo": "move…",
|
|
5601
|
+
"newDocHere": "New document here",
|
|
5602
|
+
"addSubsection": "Sub-section",
|
|
5603
|
+
"selectDoc": "Select a document, or create one.",
|
|
5604
|
+
"docNotFound": "No document titled “{title}”",
|
|
5605
|
+
"rename": "Rename",
|
|
5606
|
+
"dragHint": "Drag into a section",
|
|
5607
|
+
"unnamed": "(unnamed)",
|
|
5608
|
+
"removeSection": "Remove section",
|
|
5609
|
+
"confirmRemoveSection": "Remove the section “{name}”? Its documents move to Unsorted — they are not deleted.",
|
|
5610
|
+
"confirmDeleteWorkspace": "Are you sure you want to delete this workspace? All its documents, records and version history are permanently removed. This cannot be undone.",
|
|
5611
|
+
"spaces": "Spaces",
|
|
5612
|
+
"recordsMode": "records",
|
|
5613
|
+
"remove": "Remove",
|
|
5614
|
+
"spaceName": "New space name",
|
|
5615
|
+
"docsSpace": "document space",
|
|
5616
|
+
"recordsSpace": "records type",
|
|
5617
|
+
"addSpace": "+ Add",
|
|
5618
|
+
"spaceAdded": "Space added",
|
|
5619
|
+
"spaceRemoved": "Space removed",
|
|
5620
|
+
"removeSpace": "Remove space",
|
|
5621
|
+
"confirmRemoveSpace": "Remove \"{name}\" from this workspace? Its data is kept in memory (orphaned) but the section disappears.",
|
|
5622
|
+
"restructure": "✨ Restructure / add types with AI",
|
|
5623
|
+
"restructureTitle": "Restructure / add types with AI",
|
|
5624
|
+
"restructureDesc": "Describe what to add or change. Existing types and their data are kept — the AI extends the current structure. (To start completely fresh, delete the workspace below first.)",
|
|
5625
|
+
"dangerZone": "Danger zone",
|
|
5626
|
+
"deleteWarn": "Deleting the workspace removes the manifest and ALL its data — drafts, published records, version history — and its schemas. The organism stays. This cannot be undone.",
|
|
5627
|
+
"deleteConfirmLabel": "Type the workspace name to confirm",
|
|
5628
|
+
"deleteWorkspace": "Delete workspace",
|
|
5629
|
+
"workspaceDeleted": "Workspace deleted",
|
|
5630
|
+
"settings": "Settings",
|
|
5631
|
+
"wsName": "Name",
|
|
5632
|
+
"wsSummary": "Summary",
|
|
5633
|
+
"autonomy": "AI autonomy (L1 cautious → L5 free)",
|
|
5634
|
+
"template": "Template",
|
|
5635
|
+
"settingsSaved": "Settings saved",
|
|
5636
|
+
"generateTitle": "Or generate a custom workspace with AI",
|
|
5637
|
+
"generateDesc": "Describe what this workspace is for — track, organise or refine information, or run a whole project lifecycle. The AI designs the object types. Use your OpenRouter key for one-click generation, or copy the prompt into any AI chat (free) and paste the result back.",
|
|
5638
|
+
"generatePlaceholder": "e.g. a game project's full dev lifecycle · organising AI-governance research & EU regulations · refining product specs",
|
|
5639
|
+
"generate": "Generate with AI",
|
|
5640
|
+
"generating": "Generating…",
|
|
5641
|
+
"generateError": "Generation failed",
|
|
5642
|
+
"noAiKey": "Set up your OpenRouter key above, or copy the prompt to your own AI chat.",
|
|
5643
|
+
"copyPrompt": "Copy prompt",
|
|
5644
|
+
"promptCopied": "Prompt copied — paste it into any AI chat, then paste the JSON it returns below.",
|
|
5645
|
+
"pasteHelp": "No key? Copy the prompt above into any AI chat, then paste the JSON it returns here:",
|
|
5646
|
+
"pastePlaceholder": "Paste the AI JSON response here",
|
|
5647
|
+
"applyPasted": "Validate & apply",
|
|
5648
|
+
"applyError": "Could not apply — check the pasted JSON.",
|
|
5649
|
+
"genFailed": "Generation failed — try again",
|
|
5650
|
+
"fixNeeded": "This needs fixing before it can be saved:",
|
|
5651
|
+
"copyFixPrompt": "Copy fix prompt for the AI",
|
|
5652
|
+
"fixPromptCopied": "Fix prompt copied — paste it back to your AI, then paste the corrected JSON.",
|
|
5437
5653
|
"desc": "Organisms are groups — communities, teams, clubs, or projects. Create one or join existing ones to share knowledge, coordinate work, and build together.",
|
|
5438
5654
|
"loading": "Loading organisms...",
|
|
5439
5655
|
"empty": "You are not part of any organisms yet.",
|
|
@@ -5873,6 +6089,20 @@
|
|
|
5873
6089
|
}
|
|
5874
6090
|
},
|
|
5875
6091
|
"admin": {
|
|
6092
|
+
"security": {
|
|
6093
|
+
"title": "Security",
|
|
6094
|
+
"desc": "Rejected / quarantined uploads and other security incidents.",
|
|
6095
|
+
"open": "open",
|
|
6096
|
+
"none": "No security incidents 🎉",
|
|
6097
|
+
"actor": "On behalf of",
|
|
6098
|
+
"source": "Source",
|
|
6099
|
+
"resolve": "Resolve",
|
|
6100
|
+
"resolved": "Incident resolved",
|
|
6101
|
+
"delete": "Delete",
|
|
6102
|
+
"deleted": "Deleted",
|
|
6103
|
+
"deleteConfirm": "Delete this incident and its quarantined file?",
|
|
6104
|
+
"evidence": "Payload"
|
|
6105
|
+
},
|
|
5876
6106
|
"tabs": {
|
|
5877
6107
|
"agentIntegration": "Agent Integration"
|
|
5878
6108
|
},
|