aimeat 1.27.1 → 1.29.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/dist/locales/en.json +113 -4
- package/dist/locales/fi.json +113 -4
- package/dist/public/components/NotificationBell.js +2 -4
- package/dist/public/css/views/agents-detail.css +22 -0
- package/dist/public/css/views/inbox.css +49 -1
- package/dist/public/css/views/profile.css +105 -8
- package/dist/public/js/presence-store.js +7 -1
- package/dist/public/js/services/agents.js +10 -3
- package/dist/public/js/services/living.js +1 -1
- package/dist/public/js/services/memory.js +83 -5
- package/dist/public/js/services/nodes.js +1 -1
- package/dist/public/js/services/notebook-plan.js +1 -1
- package/dist/public/js/services/notebook.js +25 -77
- package/dist/public/js/services/organisms.js +80 -3
- package/dist/public/js/services/tracked-responses.js +28 -4
- package/dist/public/js/services/workflows.js +4 -3
- package/dist/public/lib/live-updates.js +231 -94
- package/dist/public/spa.html +7 -1
- package/dist/public/views/admin/agent-integration-tab.js +2 -5
- package/dist/public/views/admin/agent-tasks-tab.js +2 -5
- package/dist/public/views/admin/cortex-tab.js +2 -5
- package/dist/public/views/admin/federation-tab.js +3 -10
- package/dist/public/views/admin/memory-tab.js +2 -5
- package/dist/public/views/admin/messages-tab.js +2 -5
- package/dist/public/views/admin/packages-tab.js +2 -5
- package/dist/public/views/admin/sharing-groups-tab.js +2 -5
- package/dist/public/views/command-palette.js +145 -0
- package/dist/public/views/landing-node-totals.js +3 -3
- package/dist/public/views/profile/agents/agent-card.js +8 -5
- package/dist/public/views/profile/agents/tab-activity.js +2 -3
- package/dist/public/views/profile/agents/tab-agent-config.js +2 -3
- package/dist/public/views/profile/agents/tab-data-access.js +2 -3
- package/dist/public/views/profile/agents/tab-integration.js +2 -3
- package/dist/public/views/profile/agents/tab-messages.js +2 -6
- package/dist/public/views/profile/agents/tab-quality.js +2 -5
- package/dist/public/views/profile/agents/tab-schedules.js +2 -4
- package/dist/public/views/profile/agents-activity-subtab.js +2 -5
- package/dist/public/views/profile/agents-capabilities-subtab.js +2 -2
- package/dist/public/views/profile/agents-messages-subtab.js +2 -5
- package/dist/public/views/profile/agents-services-subtab.js +2 -3
- package/dist/public/views/profile/agents-tab.js +67 -88
- package/dist/public/views/profile/agents-tasks-subtab.js +3 -8
- package/dist/public/views/profile/boards-tab.js +2 -5
- package/dist/public/views/profile/chat-sessions-tab.js +2 -5
- package/dist/public/views/profile/ecosystem-tab.js +7 -12
- package/dist/public/views/profile/extensions-tab.js +2 -5
- package/dist/public/views/profile/federation-tab.js +2 -5
- package/dist/public/views/profile/inbox-tab.js +222 -153
- package/dist/public/views/profile/knowledge-tab.js +8 -14
- package/dist/public/views/profile/landing-page.js +17 -55
- package/dist/public/views/profile/memory-tab.js +253 -31
- package/dist/public/views/profile/notebook-card.js +27 -1
- package/dist/public/views/profile/organisms/activity-panel.js +3 -2
- package/dist/public/views/profile/organisms/agents.js +6 -11
- package/dist/public/views/profile/organisms/home.js +52 -3
- package/dist/public/views/profile/organisms/members.js +11 -10
- package/dist/public/views/profile/organisms/mindmap.js +292 -0
- package/dist/public/views/profile/organisms/panels.js +39 -29
- package/dist/public/views/profile/organisms/participants-panel.js +3 -2
- package/dist/public/views/profile/organisms/readme-panel.js +97 -0
- package/dist/public/views/profile/organisms/sources-panel.js +2 -5
- package/dist/public/views/profile/organisms/timeline-panel.js +133 -0
- package/dist/public/views/profile/organisms/workspace-comments.js +16 -9
- package/dist/public/views/profile/organisms/workspace-list.js +41 -29
- package/dist/public/views/profile/organisms/workspace.js +203 -33
- package/dist/public/views/profile/organisms-tab.js +20 -11
- package/dist/public/views/profile/packages-tab.js +2 -5
- package/dist/public/views/profile/scheduler-tab.js +2 -4
- package/dist/public/views/profile/track-response-modal.js +211 -0
- package/dist/public/views/profile/workflows-tab.js +10 -19
- package/dist/public/views/profile.js +8 -9
- package/dist/scripts/consent-audit-prune.d.ts +21 -0
- package/dist/scripts/consent-audit-prune.d.ts.map +1 -0
- package/dist/scripts/consent-audit-prune.js +198 -0
- package/dist/scripts/consent-audit-prune.js.map +1 -0
- package/dist/scripts/telemetry-prune.d.ts +20 -0
- package/dist/scripts/telemetry-prune.d.ts.map +1 -0
- package/dist/scripts/telemetry-prune.js +195 -0
- package/dist/scripts/telemetry-prune.js.map +1 -0
- package/dist/src/auth/jwt.d.ts +1 -0
- package/dist/src/auth/jwt.d.ts.map +1 -1
- package/dist/src/auth/jwt.js +13 -0
- package/dist/src/auth/jwt.js.map +1 -1
- package/dist/src/cli/connect/mcp/local-server.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/local-server.js +137 -0
- package/dist/src/cli/connect/mcp/local-server.js.map +1 -1
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +9 -0
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/cli/connect/tunnel-client.d.ts +16 -0
- package/dist/src/cli/connect/tunnel-client.d.ts.map +1 -1
- package/dist/src/cli/connect/tunnel-client.js +42 -0
- package/dist/src/cli/connect/tunnel-client.js.map +1 -1
- package/dist/src/config.d.ts +1 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +1 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +755 -53
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/generated/prisma-postgres/edge.js +16 -3
- package/dist/src/generated/prisma-postgres/index-browser.js +13 -0
- package/dist/src/generated/prisma-postgres/index.d.ts +1550 -160
- package/dist/src/generated/prisma-postgres/index.js +16 -3
- package/dist/src/generated/prisma-postgres/package.json +1 -1
- package/dist/src/generated/prisma-postgres/schema.prisma +17 -0
- package/dist/src/generated/prisma-postgres/wasm.js +16 -3
- package/dist/src/index.js +4 -0
- package/dist/src/index.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 +8 -3
- package/dist/src/mcp/agent-telemetry.js.map +1 -1
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +1 -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 +15 -0
- package/dist/src/mcp/catalog/definitions.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 +43 -0
- package/dist/src/mcp/organisms.js.map +1 -1
- package/dist/src/mcp/workspaces.d.ts.map +1 -1
- package/dist/src/mcp/workspaces.js +4 -0
- package/dist/src/mcp/workspaces.js.map +1 -1
- package/dist/src/routes/agent-messages.js +2 -2
- package/dist/src/routes/agent-messages.js.map +1 -1
- package/dist/src/routes/agent-tasks.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks.js +27 -14
- package/dist/src/routes/agent-tasks.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 +11 -6
- 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 +41 -3
- package/dist/src/routes/agents.js.map +1 -1
- package/dist/src/routes/boards.d.ts.map +1 -1
- package/dist/src/routes/boards.js +4 -2
- package/dist/src/routes/boards.js.map +1 -1
- package/dist/src/routes/consent.d.ts.map +1 -1
- package/dist/src/routes/consent.js +14 -1
- package/dist/src/routes/consent.js.map +1 -1
- package/dist/src/routes/matches.d.ts.map +1 -1
- package/dist/src/routes/matches.js +1 -3
- package/dist/src/routes/matches.js.map +1 -1
- package/dist/src/routes/memory.d.ts +3 -0
- package/dist/src/routes/memory.d.ts.map +1 -1
- package/dist/src/routes/memory.js +269 -12
- package/dist/src/routes/memory.js.map +1 -1
- package/dist/src/routes/messages.d.ts.map +1 -1
- package/dist/src/routes/messages.js +11 -9
- package/dist/src/routes/messages.js.map +1 -1
- package/dist/src/routes/organisms.d.ts +8 -0
- package/dist/src/routes/organisms.d.ts.map +1 -1
- package/dist/src/routes/organisms.js +441 -5
- package/dist/src/routes/organisms.js.map +1 -1
- package/dist/src/routes/owners.d.ts.map +1 -1
- package/dist/src/routes/owners.js +2 -0
- package/dist/src/routes/owners.js.map +1 -1
- package/dist/src/routes/personal.d.ts.map +1 -1
- package/dist/src/routes/personal.js +7 -0
- package/dist/src/routes/personal.js.map +1 -1
- package/dist/src/routes/sse.d.ts +3 -0
- package/dist/src/routes/sse.d.ts.map +1 -1
- package/dist/src/routes/sse.js +27 -15
- package/dist/src/routes/sse.js.map +1 -1
- package/dist/src/routes/storage-files.d.ts +2 -0
- package/dist/src/routes/storage-files.d.ts.map +1 -1
- package/dist/src/routes/storage-files.js +4 -7
- package/dist/src/routes/storage-files.js.map +1 -1
- package/dist/src/routes/tracked-responses.d.ts.map +1 -1
- package/dist/src/routes/tracked-responses.js +52 -0
- package/dist/src/routes/tracked-responses.js.map +1 -1
- package/dist/src/routes/workflows.d.ts.map +1 -1
- package/dist/src/routes/workflows.js +13 -2
- package/dist/src/routes/workflows.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +7 -0
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/services/access-guard.d.ts +4 -4
- package/dist/src/services/access-guard.d.ts.map +1 -1
- package/dist/src/services/access-guard.js +7 -8
- package/dist/src/services/access-guard.js.map +1 -1
- package/dist/src/services/activity-recorder.d.ts +2 -13
- package/dist/src/services/activity-recorder.d.ts.map +1 -1
- package/dist/src/services/activity-recorder.js +0 -42
- package/dist/src/services/activity-recorder.js.map +1 -1
- package/dist/src/services/connect-tunnel.d.ts +67 -3
- package/dist/src/services/connect-tunnel.d.ts.map +1 -1
- package/dist/src/services/connect-tunnel.js +252 -1
- package/dist/src/services/connect-tunnel.js.map +1 -1
- package/dist/src/services/consent-audit-buffer.d.ts +45 -0
- package/dist/src/services/consent-audit-buffer.d.ts.map +1 -0
- package/dist/src/services/consent-audit-buffer.js +85 -0
- package/dist/src/services/consent-audit-buffer.js.map +1 -0
- package/dist/src/services/consent.d.ts +9 -3
- package/dist/src/services/consent.d.ts.map +1 -1
- package/dist/src/services/consent.js +13 -5
- package/dist/src/services/consent.js.map +1 -1
- package/dist/src/services/core-jobs.d.ts.map +1 -1
- package/dist/src/services/core-jobs.js +15 -4
- package/dist/src/services/core-jobs.js.map +1 -1
- package/dist/src/services/event-bus.d.ts +15 -2
- package/dist/src/services/event-bus.d.ts.map +1 -1
- package/dist/src/services/event-bus.js +10 -4
- package/dist/src/services/event-bus.js.map +1 -1
- package/dist/src/services/job-seeding.d.ts.map +1 -1
- package/dist/src/services/job-seeding.js +2 -0
- package/dist/src/services/job-seeding.js.map +1 -1
- package/dist/src/services/message-delivery.d.ts +1 -1
- package/dist/src/services/message-delivery.d.ts.map +1 -1
- package/dist/src/services/message-delivery.js +10 -7
- package/dist/src/services/message-delivery.js.map +1 -1
- package/dist/src/services/message-send.d.ts.map +1 -1
- package/dist/src/services/message-send.js +24 -16
- package/dist/src/services/message-send.js.map +1 -1
- package/dist/src/services/onboarding-validator.d.ts.map +1 -1
- package/dist/src/services/onboarding-validator.js +13 -3
- package/dist/src/services/onboarding-validator.js.map +1 -1
- package/dist/src/services/organism-comments.d.ts +5 -1
- package/dist/src/services/organism-comments.d.ts.map +1 -1
- package/dist/src/services/organism-comments.js +7 -22
- package/dist/src/services/organism-comments.js.map +1 -1
- package/dist/src/services/organism-readme.d.ts +24 -0
- package/dist/src/services/organism-readme.d.ts.map +1 -0
- package/dist/src/services/organism-readme.js +37 -0
- package/dist/src/services/organism-readme.js.map +1 -0
- package/dist/src/services/organism-search.d.ts +12 -7
- package/dist/src/services/organism-search.d.ts.map +1 -1
- package/dist/src/services/organism-search.js +93 -60
- package/dist/src/services/organism-search.js.map +1 -1
- package/dist/src/services/readiness-scorer.d.ts.map +1 -1
- package/dist/src/services/readiness-scorer.js +11 -6
- package/dist/src/services/readiness-scorer.js.map +1 -1
- package/dist/src/services/scheduler.d.ts.map +1 -1
- package/dist/src/services/scheduler.js +9 -3
- package/dist/src/services/scheduler.js.map +1 -1
- package/dist/src/services/structure-graph.d.ts +65 -0
- package/dist/src/services/structure-graph.d.ts.map +1 -0
- package/dist/src/services/structure-graph.js +53 -0
- package/dist/src/services/structure-graph.js.map +1 -0
- package/dist/src/services/structure-overview.d.ts +6 -0
- package/dist/src/services/structure-overview.d.ts.map +1 -1
- package/dist/src/services/structure-overview.js +1 -1
- package/dist/src/services/structure-overview.js.map +1 -1
- package/dist/src/services/structure-snapshot.d.ts +47 -0
- package/dist/src/services/structure-snapshot.d.ts.map +1 -0
- package/dist/src/services/structure-snapshot.js +101 -0
- package/dist/src/services/structure-snapshot.js.map +1 -0
- package/dist/src/services/telemetry-buffer.d.ts +73 -0
- package/dist/src/services/telemetry-buffer.d.ts.map +1 -0
- package/dist/src/services/telemetry-buffer.js +185 -0
- package/dist/src/services/telemetry-buffer.js.map +1 -0
- package/dist/src/services/tracked-classify.d.ts +98 -0
- package/dist/src/services/tracked-classify.d.ts.map +1 -0
- package/dist/src/services/tracked-classify.js +182 -0
- package/dist/src/services/tracked-classify.js.map +1 -0
- package/dist/src/services/workspace-access.d.ts +36 -0
- package/dist/src/services/workspace-access.d.ts.map +1 -0
- package/dist/src/services/workspace-access.js +38 -0
- package/dist/src/services/workspace-access.js.map +1 -0
- package/dist/src/services/workspace-enrichment.d.ts +76 -0
- package/dist/src/services/workspace-enrichment.d.ts.map +1 -0
- package/dist/src/services/workspace-enrichment.js +144 -0
- package/dist/src/services/workspace-enrichment.js.map +1 -0
- package/dist/src/storage/interface.d.ts +4 -1
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/interface.js.map +1 -1
- package/dist/src/storage/providers/mongodb/index.d.ts +26 -1
- package/dist/src/storage/providers/mongodb/index.d.ts.map +1 -1
- package/dist/src/storage/providers/mongodb/index.js +129 -1
- package/dist/src/storage/providers/mongodb/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/index.d.ts +26 -1
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +55 -4
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-message.d.ts +4 -0
- package/dist/src/storage/providers/sqlite/repos/agent-message.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-message.js +14 -0
- package/dist/src/storage/providers/sqlite/repos/agent-message.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts +9 -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 +25 -0
- package/dist/src/storage/providers/sqlite/repos/agent-task.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/memory.d.ts +23 -1
- package/dist/src/storage/providers/sqlite/repos/memory.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/memory.js +65 -3
- package/dist/src/storage/providers/sqlite/repos/memory.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +21 -0
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/agent-message.repository.d.ts +10 -0
- package/dist/src/storage/repositories/agent-message.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/agent-task.repository.d.ts +15 -0
- package/dist/src/storage/repositories/agent-task.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/consent.repository.d.ts +2 -0
- package/dist/src/storage/repositories/consent.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/memory.repository.d.ts +32 -0
- package/dist/src/storage/repositories/memory.repository.d.ts.map +1 -1
- package/dist/src/utils/messaging.d.ts +5 -0
- package/dist/src/utils/messaging.d.ts.map +1 -1
- package/dist/src/utils/messaging.js +0 -0
- package/dist/src/utils/messaging.js.map +1 -1
- package/package.json +5 -1
- package/prisma/schema.postgres.prisma +17 -0
- package/prisma/schema.prisma +19 -0
package/dist/locales/en.json
CHANGED
|
@@ -59,8 +59,39 @@
|
|
|
59
59
|
"inbox.trackCreated": "Tracked response created.",
|
|
60
60
|
"inbox.trackFailed": "Could not create the tracked response.",
|
|
61
61
|
"inbox.trackPickTarget": "Pick an organism and workspace first.",
|
|
62
|
-
"inbox.trackReady": "Reply ready",
|
|
62
|
+
"inbox.trackReady": "Reply ready — approve or reject",
|
|
63
63
|
"inbox.trackUseSuggested": "Use suggested reply",
|
|
64
|
+
"inbox.trackApprove": "Approve & edit",
|
|
65
|
+
"inbox.trackReject": "Reject",
|
|
66
|
+
"inbox.trackOpenRecord": "Open record",
|
|
67
|
+
"inbox.trackNoRecord": "No linked record to open.",
|
|
68
|
+
"inbox.trackAlready": "This message already has a tracked response.",
|
|
69
|
+
"inbox.trackCancelled": "Tracked response cancelled.",
|
|
70
|
+
"inbox.trackStateWatching": "Watching",
|
|
71
|
+
"inbox.trackStateAwaiting": "Reply ready",
|
|
72
|
+
"inbox.trackStateReplied": "Replied",
|
|
73
|
+
"inbox.trackStateError": "Error — will retry",
|
|
74
|
+
"inbox.trackedTitle": "Tracked responses",
|
|
75
|
+
"inbox.trackedEmpty": "No tracked responses yet. Use 🔗 on a message to track one.",
|
|
76
|
+
"inbox.trackedTo": "to",
|
|
77
|
+
"inbox.trackedWatching": "watching",
|
|
78
|
+
"inbox.trackedOpen": "Open",
|
|
79
|
+
"inbox.trackedOpenConvo": "Open conversation",
|
|
80
|
+
"inbox.trackedCancel": "Cancel",
|
|
81
|
+
"inbox.trackedAllDone": "All tracked responses are completed.",
|
|
82
|
+
"inbox.trackedDoneCount": "{n} completed",
|
|
83
|
+
"inbox.trackHintAi": "Your AI chose where this belongs. Review, pick the record type, and a reply policy.",
|
|
84
|
+
"inbox.trackAiThinking": "AI is choosing where this belongs…",
|
|
85
|
+
"inbox.trackNeedsAi": "Tracking a response needs your own AI (OpenRouter or Ollama) to decide where the message belongs. Configure it to use this feature.",
|
|
86
|
+
"inbox.trackConfigureAi": "Configure AI",
|
|
87
|
+
"inbox.trackContent": "Content",
|
|
88
|
+
"inbox.trackNoTypes": "This workspace has no record types",
|
|
89
|
+
"inbox.trackCreatedGated": "Tracked response created — the record was sent for approval.",
|
|
90
|
+
"inbox.trackFillNote": "On create, your AI fills the record's fields to match this type's schema and sets the completion condition automatically.",
|
|
91
|
+
"inbox.trackPark": "Put in notebook for later",
|
|
92
|
+
"inbox.trackParked": "Saved to the notebook for later processing.",
|
|
93
|
+
"inbox.trackParkedBadge": "Owes a reply to {peer}",
|
|
94
|
+
"inbox.trackParkedDesc": "Parked from a message. Process it when ready — a reply will be tracked back to the sender.",
|
|
64
95
|
"inbox.status.queued": "queued",
|
|
65
96
|
"inbox.status.sent": "sent",
|
|
66
97
|
"inbox.status.delivered": "delivered",
|
|
@@ -413,6 +444,7 @@
|
|
|
413
444
|
"somethingWentWrong": "Something went wrong",
|
|
414
445
|
"retry": "Retry",
|
|
415
446
|
"save": "Save",
|
|
447
|
+
"saving": "Saving…",
|
|
416
448
|
"close": "Close",
|
|
417
449
|
"loading": "Loading...",
|
|
418
450
|
"search": "Search...",
|
|
@@ -2023,7 +2055,36 @@
|
|
|
2023
2055
|
"bulkClear": "Clear selection",
|
|
2024
2056
|
"bulkDone": "{n} updated",
|
|
2025
2057
|
"bulkDeleted": "{n} deleted",
|
|
2026
|
-
"bulkDeleteConfirm": "Delete {n} memory entries? This cannot be undone."
|
|
2058
|
+
"bulkDeleteConfirm": "Delete {n} memory entries? This cannot be undone.",
|
|
2059
|
+
"toolsLabel": "Tools",
|
|
2060
|
+
"storageUsed": "Storage",
|
|
2061
|
+
"keysWord": "keys",
|
|
2062
|
+
"sizeLabel": "Value size",
|
|
2063
|
+
"sortSize": "Largest first",
|
|
2064
|
+
"loadingValue": "Loading value…",
|
|
2065
|
+
"loadContents": "Load all contents",
|
|
2066
|
+
"searchContents": "Search content or key…",
|
|
2067
|
+
"searchResultCount": "{n} matches",
|
|
2068
|
+
"searchEmpty": "No matches",
|
|
2069
|
+
"searchClear": "Clear search",
|
|
2070
|
+
"searchInGroup": "Search in this group",
|
|
2071
|
+
"searchInGroupHint": "Type a query to search within {g}",
|
|
2072
|
+
"exportBtn": "Export",
|
|
2073
|
+
"exportDone": "Exported {n} entries",
|
|
2074
|
+
"importBtn": "Import",
|
|
2075
|
+
"importModeLabel": "Conflict handling",
|
|
2076
|
+
"importMode": {
|
|
2077
|
+
"skip": "Skip existing",
|
|
2078
|
+
"overwrite": "Overwrite",
|
|
2079
|
+
"rename": "Import as new"
|
|
2080
|
+
},
|
|
2081
|
+
"importConfirm": "Import {n} entries? Existing keys are handled by mode: {mode}.",
|
|
2082
|
+
"importDone": "Imported: {c} new, {u} updated, {s} skipped",
|
|
2083
|
+
"importBadJson": "Not a valid JSON backup",
|
|
2084
|
+
"importEmpty": "No entries found in file",
|
|
2085
|
+
"deleteGroup": "Delete group",
|
|
2086
|
+
"deleteGroupConfirm": "Delete all {n} entries under \"{g}\"? This cannot be undone.",
|
|
2087
|
+
"deleteGroupUnsupported": "This group cannot be bulk-deleted"
|
|
2027
2088
|
},
|
|
2028
2089
|
"files": {
|
|
2029
2090
|
"title": "Stored Files",
|
|
@@ -6259,6 +6320,54 @@
|
|
|
6259
6320
|
"submitReview": "Submit Review"
|
|
6260
6321
|
}
|
|
6261
6322
|
},
|
|
6323
|
+
"readme": {
|
|
6324
|
+
"editTitle": "Edit README",
|
|
6325
|
+
"edit": "Edit README",
|
|
6326
|
+
"write": "Write",
|
|
6327
|
+
"preview": "Preview",
|
|
6328
|
+
"generateAi": "Generate with AI",
|
|
6329
|
+
"copied": "Copied!",
|
|
6330
|
+
"pasteBack": "Prompt copied — run it in your AI chat, then paste the Markdown result here.",
|
|
6331
|
+
"placeholder": "# Title\n\nDescribe what this is about. Mermaid diagrams are allowed.",
|
|
6332
|
+
"emptyHint": "No description yet. Add a README so people (and agents) know what this is about.",
|
|
6333
|
+
"saved": "README saved"
|
|
6334
|
+
},
|
|
6335
|
+
"mindmap": {
|
|
6336
|
+
"titleOrg": "Organism map",
|
|
6337
|
+
"titleWs": "Workspace map",
|
|
6338
|
+
"chart": "Chart",
|
|
6339
|
+
"chartMindmap": "Mindmap",
|
|
6340
|
+
"chartLr": "Flowchart →",
|
|
6341
|
+
"chartTd": "Flowchart ↓",
|
|
6342
|
+
"level": "Level",
|
|
6343
|
+
"levelWs": "Workspaces",
|
|
6344
|
+
"levelSpaces": "+ Spaces",
|
|
6345
|
+
"levelCounts": "+ Counts",
|
|
6346
|
+
"showUsers": "Users",
|
|
6347
|
+
"showActivity": "Activity",
|
|
6348
|
+
"heatmap": "Heatmap",
|
|
6349
|
+
"clickHint": "Click a node to open it."
|
|
6350
|
+
},
|
|
6351
|
+
"timeline": {
|
|
6352
|
+
"title": "Development timeline",
|
|
6353
|
+
"empty": "No structural history yet.",
|
|
6354
|
+
"now": "now",
|
|
6355
|
+
"snapshot": "Snapshot",
|
|
6356
|
+
"pick": "Pick a point to see the structure then.",
|
|
6357
|
+
"changed": "structure changed"
|
|
6358
|
+
},
|
|
6359
|
+
"search": {
|
|
6360
|
+
"wsPlaceholder": "Search this workspace…",
|
|
6361
|
+
"orgPlaceholder": "Search this organism…",
|
|
6362
|
+
"clear": "Clear",
|
|
6363
|
+
"noMatches": "No matches",
|
|
6364
|
+
"paletteTitle": "Search everything",
|
|
6365
|
+
"palettePlaceholder": "Search organisms, workspaces, records…",
|
|
6366
|
+
"recents": "Recent",
|
|
6367
|
+
"results": "Results",
|
|
6368
|
+
"openHint": "↵ open · Esc close",
|
|
6369
|
+
"searching": "Searching…"
|
|
6370
|
+
},
|
|
6262
6371
|
"organisms": {
|
|
6263
6372
|
"title": "Organisms",
|
|
6264
6373
|
"backToList": "All organisms",
|
|
@@ -6515,8 +6624,8 @@
|
|
|
6515
6624
|
"moreActions": "More actions",
|
|
6516
6625
|
"policyLabel": "Join policy",
|
|
6517
6626
|
"tabWorkspaces": "Workspaces",
|
|
6518
|
-
"structureOverviewOrg": "Organism structure
|
|
6519
|
-
"structureOverviewWs": "Workspace structure
|
|
6627
|
+
"structureOverviewOrg": "Organism structure — table of contents",
|
|
6628
|
+
"structureOverviewWs": "Workspace structure — table of contents",
|
|
6520
6629
|
"structEmpty": "No structure to show yet.",
|
|
6521
6630
|
"tabMembers": "Members",
|
|
6522
6631
|
"tabAgents": "Agents",
|
package/dist/locales/fi.json
CHANGED
|
@@ -59,8 +59,39 @@
|
|
|
59
59
|
"inbox.trackCreated": "Seurattu vastaus luotu.",
|
|
60
60
|
"inbox.trackFailed": "Seuratun vastauksen luonti epäonnistui.",
|
|
61
61
|
"inbox.trackPickTarget": "Valitse ensin organismi ja työtila.",
|
|
62
|
-
"inbox.trackReady": "Vastaus valmis",
|
|
62
|
+
"inbox.trackReady": "Vastaus valmis — hyväksy tai hylkää",
|
|
63
63
|
"inbox.trackUseSuggested": "Käytä ehdotettua vastausta",
|
|
64
|
+
"inbox.trackApprove": "Hyväksy ja muokkaa",
|
|
65
|
+
"inbox.trackReject": "Hylkää",
|
|
66
|
+
"inbox.trackOpenRecord": "Avaa tietue",
|
|
67
|
+
"inbox.trackNoRecord": "Ei linkitettyä tietuetta avattavaksi.",
|
|
68
|
+
"inbox.trackAlready": "Tällä viestillä on jo seurattu vastaus.",
|
|
69
|
+
"inbox.trackCancelled": "Seurattu vastaus peruutettu.",
|
|
70
|
+
"inbox.trackStateWatching": "Seurataan",
|
|
71
|
+
"inbox.trackStateAwaiting": "Vastaus valmis",
|
|
72
|
+
"inbox.trackStateReplied": "Vastattu",
|
|
73
|
+
"inbox.trackStateError": "Virhe — yritetään uudelleen",
|
|
74
|
+
"inbox.trackedTitle": "Seuratut vastaukset",
|
|
75
|
+
"inbox.trackedEmpty": "Ei seurattuja vastauksia vielä. Paina 🔗 viestin kohdalla aloittaaksesi.",
|
|
76
|
+
"inbox.trackedTo": "vastaanottaja",
|
|
77
|
+
"inbox.trackedWatching": "seurataan",
|
|
78
|
+
"inbox.trackedOpen": "Avaa",
|
|
79
|
+
"inbox.trackedOpenConvo": "Avaa keskustelu",
|
|
80
|
+
"inbox.trackedCancel": "Peruuta",
|
|
81
|
+
"inbox.trackedAllDone": "Kaikki seuratut vastaukset on hoidettu.",
|
|
82
|
+
"inbox.trackedDoneCount": "{n} hoidettu",
|
|
83
|
+
"inbox.trackHintAi": "Tekoälysi valitsi minne tämä kuuluu. Tarkista, valitse tietuetyyppi ja vastaustapa.",
|
|
84
|
+
"inbox.trackAiThinking": "Tekoäly valitsee minne tämä kuuluu…",
|
|
85
|
+
"inbox.trackNeedsAi": "Vastauksen seuraaminen vaatii oman tekoälysi (OpenRouter tai Ollama) päättämään minne viesti kuuluu. Ota se käyttöön käyttääksesi tätä toimintoa.",
|
|
86
|
+
"inbox.trackConfigureAi": "Määritä tekoäly",
|
|
87
|
+
"inbox.trackContent": "Sisältö",
|
|
88
|
+
"inbox.trackNoTypes": "Tällä työtilalla ei ole tietuetyyppejä",
|
|
89
|
+
"inbox.trackCreatedGated": "Seurattu vastaus luotu — tietue lähetettiin hyväksyttäväksi.",
|
|
90
|
+
"inbox.trackFillNote": "Luotaessa tekoälysi täyttää tietueen kentät tämän tyypin scheman mukaan ja asettaa valmis-ehdon automaattisesti.",
|
|
91
|
+
"inbox.trackPark": "Laita muistikirjaan myöhempää käsittelyä varten",
|
|
92
|
+
"inbox.trackParked": "Tallennettu muistikirjaan myöhempää käsittelyä varten.",
|
|
93
|
+
"inbox.trackParkedBadge": "Velkaa vastauksen: {peer}",
|
|
94
|
+
"inbox.trackParkedDesc": "Parkkeerattu viestistä. Käsittele kun ehdit — vastaus seurataan takaisin lähettäjälle.",
|
|
64
95
|
"inbox.status.queued": "jonossa",
|
|
65
96
|
"inbox.status.sent": "lähetetty",
|
|
66
97
|
"inbox.status.delivered": "toimitettu",
|
|
@@ -413,6 +444,7 @@
|
|
|
413
444
|
"somethingWentWrong": "Jokin meni pieleen",
|
|
414
445
|
"retry": "Yritä uudelleen",
|
|
415
446
|
"save": "Tallenna",
|
|
447
|
+
"saving": "Tallennetaan…",
|
|
416
448
|
"close": "Sulje",
|
|
417
449
|
"loading": "Ladataan...",
|
|
418
450
|
"search": "Haku...",
|
|
@@ -2023,7 +2055,36 @@
|
|
|
2023
2055
|
"bulkClear": "Tyhjennä valinta",
|
|
2024
2056
|
"bulkDone": "{n} päivitetty",
|
|
2025
2057
|
"bulkDeleted": "{n} poistettu",
|
|
2026
|
-
"bulkDeleteConfirm": "Poistetaanko {n} muistimerkintää? Ei voi perua."
|
|
2058
|
+
"bulkDeleteConfirm": "Poistetaanko {n} muistimerkintää? Ei voi perua.",
|
|
2059
|
+
"toolsLabel": "Työkalut",
|
|
2060
|
+
"storageUsed": "Tallennustila",
|
|
2061
|
+
"keysWord": "avainta",
|
|
2062
|
+
"sizeLabel": "Arvon koko",
|
|
2063
|
+
"sortSize": "Suurimmat ensin",
|
|
2064
|
+
"loadingValue": "Ladataan sisältöä…",
|
|
2065
|
+
"loadContents": "Lataa kaikki sisällöt",
|
|
2066
|
+
"searchContents": "Hae sisällöstä tai avaimesta…",
|
|
2067
|
+
"searchResultCount": "{n} osumaa",
|
|
2068
|
+
"searchEmpty": "Ei osumia",
|
|
2069
|
+
"searchClear": "Tyhjennä haku",
|
|
2070
|
+
"searchInGroup": "Hae tästä ryhmästä",
|
|
2071
|
+
"searchInGroupHint": "Kirjoita hakusana hakeaksesi ryhmästä {g}",
|
|
2072
|
+
"exportBtn": "Vie",
|
|
2073
|
+
"exportDone": "Vietiin {n} merkintää",
|
|
2074
|
+
"importBtn": "Tuo",
|
|
2075
|
+
"importModeLabel": "Ristiriitojen käsittely",
|
|
2076
|
+
"importMode": {
|
|
2077
|
+
"skip": "Ohita olemassa olevat",
|
|
2078
|
+
"overwrite": "Korvaa",
|
|
2079
|
+
"rename": "Tuo uusina"
|
|
2080
|
+
},
|
|
2081
|
+
"importConfirm": "Tuodaanko {n} merkintää? Olemassa olevat avaimet käsitellään tilassa: {mode}.",
|
|
2082
|
+
"importDone": "Tuotiin: {c} uutta, {u} päivitetty, {s} ohitettu",
|
|
2083
|
+
"importBadJson": "Ei kelvollinen JSON-varmuuskopio",
|
|
2084
|
+
"importEmpty": "Tiedostosta ei löytynyt merkintöjä",
|
|
2085
|
+
"deleteGroup": "Poista ryhmä",
|
|
2086
|
+
"deleteGroupConfirm": "Poistetaanko kaikki {n} merkintää ryhmästä \"{g}\"? Ei voi perua.",
|
|
2087
|
+
"deleteGroupUnsupported": "Tätä ryhmää ei voi poistaa joukkona"
|
|
2027
2088
|
},
|
|
2028
2089
|
"files": {
|
|
2029
2090
|
"title": "Tallennetut tiedostot",
|
|
@@ -6259,6 +6320,54 @@
|
|
|
6259
6320
|
"submitReview": "Lähetä arviointi"
|
|
6260
6321
|
}
|
|
6261
6322
|
},
|
|
6323
|
+
"readme": {
|
|
6324
|
+
"editTitle": "Muokkaa README:ta",
|
|
6325
|
+
"edit": "Muokkaa README:ta",
|
|
6326
|
+
"write": "Kirjoita",
|
|
6327
|
+
"preview": "Esikatselu",
|
|
6328
|
+
"generateAi": "Luo tekoälyllä",
|
|
6329
|
+
"copied": "Kopioitu!",
|
|
6330
|
+
"pasteBack": "Prompti kopioitu — aja se AI-chatissa ja liitä Markdown-tulos tähän.",
|
|
6331
|
+
"placeholder": "# Otsikko\n\nKuvaa mistä tässä on kyse. Mermaid-kaaviot ovat sallittuja.",
|
|
6332
|
+
"emptyHint": "Ei vielä kuvausta. Lisää README, jotta ihmiset (ja agentit) tietävät mistä on kyse.",
|
|
6333
|
+
"saved": "README tallennettu"
|
|
6334
|
+
},
|
|
6335
|
+
"mindmap": {
|
|
6336
|
+
"titleOrg": "Organismin kartta",
|
|
6337
|
+
"titleWs": "Työtilan kartta",
|
|
6338
|
+
"chart": "Kaavio",
|
|
6339
|
+
"chartMindmap": "Mindmap",
|
|
6340
|
+
"chartLr": "Vuokaavio →",
|
|
6341
|
+
"chartTd": "Vuokaavio ↓",
|
|
6342
|
+
"level": "Taso",
|
|
6343
|
+
"levelWs": "Työtilat",
|
|
6344
|
+
"levelSpaces": "+ Spacet",
|
|
6345
|
+
"levelCounts": "+ Määrät",
|
|
6346
|
+
"showUsers": "Käyttäjät",
|
|
6347
|
+
"showActivity": "Aktiviteetti",
|
|
6348
|
+
"heatmap": "Lämpökartta",
|
|
6349
|
+
"clickHint": "Klikkaa solmua avataksesi sen."
|
|
6350
|
+
},
|
|
6351
|
+
"timeline": {
|
|
6352
|
+
"title": "Kehityksen aikajana",
|
|
6353
|
+
"empty": "Ei vielä rakennehistoriaa.",
|
|
6354
|
+
"now": "nyt",
|
|
6355
|
+
"snapshot": "Tilannekuva",
|
|
6356
|
+
"pick": "Valitse kohta nähdäksesi rakenteen silloin.",
|
|
6357
|
+
"changed": "rakenne muuttui"
|
|
6358
|
+
},
|
|
6359
|
+
"search": {
|
|
6360
|
+
"wsPlaceholder": "Hae tästä työtilasta…",
|
|
6361
|
+
"orgPlaceholder": "Hae tästä organismista…",
|
|
6362
|
+
"clear": "Tyhjennä",
|
|
6363
|
+
"noMatches": "Ei osumia",
|
|
6364
|
+
"paletteTitle": "Hae kaikkea",
|
|
6365
|
+
"palettePlaceholder": "Hae organismeja, työtiloja, recordeja…",
|
|
6366
|
+
"recents": "Viimeisimmät",
|
|
6367
|
+
"results": "Tulokset",
|
|
6368
|
+
"openHint": "↵ avaa · Esc sulje",
|
|
6369
|
+
"searching": "Haetaan…"
|
|
6370
|
+
},
|
|
6262
6371
|
"organisms": {
|
|
6263
6372
|
"title": "Organismit",
|
|
6264
6373
|
"backToList": "Kaikki organismit",
|
|
@@ -6515,8 +6624,8 @@
|
|
|
6515
6624
|
"moreActions": "Lisätoiminnot",
|
|
6516
6625
|
"policyLabel": "Liittymiskäytäntö",
|
|
6517
6626
|
"tabWorkspaces": "Työtilat",
|
|
6518
|
-
"structureOverviewOrg": "Organismin
|
|
6519
|
-
"structureOverviewWs": "Työtilan
|
|
6627
|
+
"structureOverviewOrg": "Organismin rakenne sisällysluettelona",
|
|
6628
|
+
"structureOverviewWs": "Työtilan rakenne sisällysluettelona",
|
|
6520
6629
|
"structEmpty": "Ei vielä rakennetta näytettäväksi.",
|
|
6521
6630
|
"tabMembers": "Jäsenet",
|
|
6522
6631
|
"tabAgents": "Agentit",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import { h } from 'preact';
|
|
14
14
|
import { useState, useEffect, useRef, useCallback } from 'preact/hooks';
|
|
15
15
|
import htm from 'htm';
|
|
16
|
+
import { onLiveUpdate } from '/lib/live-updates.js';
|
|
16
17
|
const html = htm.bind(h);
|
|
17
18
|
|
|
18
19
|
const jwt = () => { try { return window.AIMEAT?.auth?.getSession?.()?.jwt || ''; } catch { return ''; } };
|
|
@@ -49,10 +50,7 @@ export function NotificationBell({ t, onNavigate }) {
|
|
|
49
50
|
|
|
50
51
|
useEffect(() => {
|
|
51
52
|
load();
|
|
52
|
-
|
|
53
|
-
window.addEventListener('aimeat-live-update', onUpd);
|
|
54
|
-
const iv = setInterval(load, 45000);
|
|
55
|
-
return () => { window.removeEventListener('aimeat-live-update', onUpd); clearInterval(iv); };
|
|
53
|
+
return onLiveUpdate(['agent-messages', 'agent-tasks', 'notifications', 'workspace-access'], () => load());
|
|
56
54
|
}, [load]);
|
|
57
55
|
|
|
58
56
|
// Close the dropdown on an outside click.
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
* Uses agd- prefix to avoid collisions with other profile styles.
|
|
5
5
|
* All colors use CSS variables from theme.css.
|
|
6
6
|
* @version-history
|
|
7
|
+
* v1.12.0 -- 2026-06-22 -- Add .pf-agd-capwrap rule so the capabilities summary
|
|
8
|
+
* ("N tools · N skills · N langs") gets the card content inset (1rem) instead of
|
|
9
|
+
* sitting flush against the edge, plus a small top gap from the tag/badge strip.
|
|
10
|
+
* v1.11.0 -- 2026-06-21 -- Add has-unseen DOT badge modifier (.pf-agd-*-badge--dot): a small
|
|
11
|
+
* round indicator replacing the old numeric change-count badge.
|
|
7
12
|
* v1.10.0 -- 2026-06-03 -- Add fleet "running now" panel styles (.pf-agd-active,
|
|
8
13
|
* -head, -empty, -list, -row, -dot, -agent, -title, -time) for the cross-agent
|
|
9
14
|
* active-tasks list between the board and the agent list. All colors tokenized
|
|
@@ -1794,6 +1799,14 @@
|
|
|
1794
1799
|
color: var(--text-dim, #6B7280);
|
|
1795
1800
|
}
|
|
1796
1801
|
|
|
1802
|
+
/* Capabilities summary (collapsed one-liner "N tools · N skills · N langs").
|
|
1803
|
+
The wrapper carries the card's content inset (1rem) so the summary doesn't sit
|
|
1804
|
+
flush against the card edge, plus a little top gap to separate it from the
|
|
1805
|
+
tag/badge strip above. */
|
|
1806
|
+
.pf .pf-agd-capwrap {
|
|
1807
|
+
padding: 0.4rem 1rem 0.1rem;
|
|
1808
|
+
}
|
|
1809
|
+
|
|
1797
1810
|
/* Capabilities badges */
|
|
1798
1811
|
.pf .pf-agd-capabilities {
|
|
1799
1812
|
display: flex;
|
|
@@ -2000,6 +2013,15 @@
|
|
|
2000
2013
|
color: var(--danger-fg, #DC2626);
|
|
2001
2014
|
border-color: var(--danger-border, #FECACA);
|
|
2002
2015
|
}
|
|
2016
|
+
/* Has-unseen DOT (no count): a small round indicator replacing the old number badge. */
|
|
2017
|
+
.pf .pf-agd-change-badge--dot,
|
|
2018
|
+
.pf .pf-agd-tab-badge--dot {
|
|
2019
|
+
min-width: 8px;
|
|
2020
|
+
width: 8px;
|
|
2021
|
+
height: 8px;
|
|
2022
|
+
padding: 0;
|
|
2023
|
+
border-radius: 50%;
|
|
2024
|
+
}
|
|
2003
2025
|
|
|
2004
2026
|
/* ── Board legend (filter pills), capability summary, inline misc (2026-06-10 round) ── */
|
|
2005
2027
|
.pf .pf-agd-board-legend { display: flex; gap: 0.4rem; flex-wrap: wrap; margin-bottom: 0.6rem; }
|
|
@@ -308,9 +308,57 @@
|
|
|
308
308
|
}
|
|
309
309
|
.inbox-track-banner-txt { flex: 1; }
|
|
310
310
|
|
|
311
|
+
/* A "reply ready" suggested-reply shown as a dashed draft bubble with approve/reject. */
|
|
312
|
+
.inbox-bubble--draft {
|
|
313
|
+
border: 1px dashed var(--accent-border) !important;
|
|
314
|
+
background: var(--accent-subtle) !important;
|
|
315
|
+
}
|
|
316
|
+
.inbox-draft-label { font-size: 11px; font-weight: 600; color: var(--accent); margin-bottom: 4px; }
|
|
317
|
+
.inbox-draft-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; margin-top: 8px; }
|
|
318
|
+
|
|
311
319
|
.inbox-track-form { display: flex; flex-direction: column; gap: 10px; }
|
|
312
320
|
.inbox-track-hint { color: var(--text-dim); font-size: 13px; margin: 0; }
|
|
313
321
|
.inbox-form-row { display: flex; flex-direction: column; gap: 4px; }
|
|
314
322
|
.inbox-form-label { font-size: 12px; color: var(--text-dim); }
|
|
315
323
|
.inbox-form-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
|
|
316
|
-
.inbox-track-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 6px; }
|
|
324
|
+
.inbox-track-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 6px; align-items: center; }
|
|
325
|
+
.inbox-track-classify { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 32px 16px; text-align: center; }
|
|
326
|
+
.inbox-track-classify-step { font-weight: 600; }
|
|
327
|
+
.inbox-track-classify-sub { font-size: 13px; color: var(--text-dim); }
|
|
328
|
+
.inbox-track-content { resize: vertical; font-family: inherit; }
|
|
329
|
+
|
|
330
|
+
/* Spinner shown on the create button while a tracked response is being created. */
|
|
331
|
+
.inbox-spinner {
|
|
332
|
+
display: inline-block; width: 12px; height: 12px; vertical-align: -1px;
|
|
333
|
+
border: 2px solid var(--border); border-top-color: var(--accent);
|
|
334
|
+
border-radius: var(--radius-full); animation: inbox-spin 0.7s linear infinite;
|
|
335
|
+
}
|
|
336
|
+
@keyframes inbox-spin { to { transform: rotate(360deg); } }
|
|
337
|
+
|
|
338
|
+
/* Per-message "is tracked" badge + the tracked-responses dashboard. */
|
|
339
|
+
.inbox-head-actions { display: flex; align-items: center; gap: 8px; }
|
|
340
|
+
.btn-outline--active { border-color: var(--accent); color: var(--accent); }
|
|
341
|
+
.inbox-track-badge {
|
|
342
|
+
display: inline-flex; align-items: center; gap: 3px;
|
|
343
|
+
font-size: 11px; padding: 1px 7px; border-radius: var(--radius-full);
|
|
344
|
+
border: 1px solid var(--border); color: var(--text-dim); white-space: nowrap;
|
|
345
|
+
}
|
|
346
|
+
.inbox-track-badge--watch { border-color: var(--accent-border); color: var(--accent); }
|
|
347
|
+
.inbox-track-badge--ready { border-color: var(--accent-border); color: var(--accent); background: var(--accent-subtle); }
|
|
348
|
+
.inbox-track-badge--done { border-color: var(--border); color: var(--text-dim); }
|
|
349
|
+
.inbox-track-badge--err { border-color: var(--danger); color: var(--danger); }
|
|
350
|
+
|
|
351
|
+
.inbox-tracked-list { display: flex; flex-direction: column; gap: 8px; padding: 12px; overflow-y: auto; }
|
|
352
|
+
.inbox-tracked-row {
|
|
353
|
+
display: flex; align-items: center; justify-content: space-between; gap: 12px;
|
|
354
|
+
padding: 10px 12px; border: 1px solid var(--card-border); border-radius: var(--radius-sm);
|
|
355
|
+
background: var(--card-bg);
|
|
356
|
+
}
|
|
357
|
+
.inbox-tracked-main { min-width: 0; flex: 1; }
|
|
358
|
+
.inbox-tracked-line1 { display: flex; align-items: center; gap: 8px; }
|
|
359
|
+
.inbox-tracked-name { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
360
|
+
.inbox-tracked-sub { font-size: 12px; color: var(--text-dim); margin-top: 3px; }
|
|
361
|
+
.inbox-tracked-sub code { font-size: 11px; background: var(--card-bg-alt); padding: 1px 5px; border-radius: var(--radius-xs); }
|
|
362
|
+
.inbox-tracked-err { color: var(--danger); }
|
|
363
|
+
.inbox-tracked-actions { display: flex; gap: 6px; flex-shrink: 0; }
|
|
364
|
+
.inbox-tracked-done { color: var(--text-dim); font-size: 12px; padding: 8px 6px 2px; border-top: 1px solid var(--border); margin-top: 4px; }
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* wallet, memory, agents, extensions, packages, knowledge, generator, and
|
|
5
5
|
* edit panels. Consumes theme.css tokens so it flips with dark/light mode.
|
|
6
6
|
* @version-history
|
|
7
|
+
* v2.6.0 — 2026-06-22 — Scalable Memory tab: .pf-mem-quota* (storage-usage bar), .pf-mem-size
|
|
8
|
+
* (value-size column), .mem-tools-bar/.mem-import-group (server search + export/import row),
|
|
9
|
+
* .mem-group-actions (hover search/delete on group headers), .mem-search-summary.
|
|
7
10
|
* v2.5.0 — 2026-06-16 — Grouped workspace nav: .pj-org-groups/.pj-org-group/.pj-org-group-cap
|
|
8
11
|
* (clickable group caption, -static variant)/.pj-org-group-tabs cluster the tab row, with a
|
|
9
12
|
* vertical divider (border-left) between groups; stacked-group content .pj-group-view/
|
|
@@ -273,6 +276,23 @@
|
|
|
273
276
|
.pf .mem-vis{font-size:.7rem}
|
|
274
277
|
.pf .shield-icon{font-size:.85rem;cursor:pointer;opacity:.6;transition:opacity .2s}
|
|
275
278
|
.pf .shield-icon:hover{opacity:1}
|
|
279
|
+
/* ── Scalable Memory tab (2026-06-22): storage bar, size column, tools bar, group actions ── */
|
|
280
|
+
.pf .pf-mem-quota{margin:.25rem 0 .6rem}
|
|
281
|
+
.pf .pf-mem-quota-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}
|
|
282
|
+
.pf .pf-mem-quota-bar{height:6px;border-radius:999px;background:var(--bg-dim);overflow:hidden}
|
|
283
|
+
.pf .pf-mem-quota-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .3s}
|
|
284
|
+
.pf .pf-mem-quota-fill--danger{background:var(--danger)}
|
|
285
|
+
.pf .pf-mem-size{font-size:.68rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}
|
|
286
|
+
/* Data-management tools grouped in their own bordered panel, above the search/sort rows */
|
|
287
|
+
.pf .mem-tools-section{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.5rem .75rem;margin:.25rem 0 .6rem;background:var(--bg-surface,var(--bg-dim));border:1px solid var(--border);border-radius:8px}
|
|
288
|
+
.pf .mem-tools-label{font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim)}
|
|
289
|
+
.pf .mem-tools-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
|
|
290
|
+
.pf .mem-import-group{display:inline-flex;align-items:center;gap:.35rem}
|
|
291
|
+
.pf .mem-bottom-bar{gap:.75rem}
|
|
292
|
+
.pf .mem-bottom-bar .mem-new-btn{margin-left:auto}
|
|
293
|
+
.pf .mem-group-actions{margin-left:auto;display:inline-flex;align-items:center;gap:.15rem;opacity:0;transition:opacity .15s}
|
|
294
|
+
.pf .mem-group-header:hover .mem-group-actions{opacity:1}
|
|
295
|
+
.pf .mem-search-summary{display:flex;justify-content:space-between;align-items:center;padding:.35rem .2rem;border-bottom:1px solid var(--border);margin-bottom:.25rem}
|
|
276
296
|
.pf .key-rules-box{background:var(--bg-surface);border:1px solid rgba(139,92,246,.3);border-radius:8px;padding:.75rem;margin-top:.75rem;margin-bottom:.5rem}
|
|
277
297
|
.pf .mem-detail{background:rgba(0,0,0,.04);border:1px solid rgba(232,86,74,.1);border-radius:8px;padding:1rem;margin-top:.5rem;font-size:.85rem}
|
|
278
298
|
.pf .mem-detail pre{white-space:pre-wrap;word-break:break-all;font-family:monospace;color:var(--text,#1A1A2E);font-size:.8rem}
|
|
@@ -2152,10 +2172,14 @@
|
|
|
2152
2172
|
.pj-item .btn-ghost { background: var(--card); box-shadow: var(--shadow-sm); }
|
|
2153
2173
|
.pj-item .btn-ghost:hover { background: var(--bg-surface); border-color: var(--text-muted); }
|
|
2154
2174
|
.pj-item-text { flex: 1; font-size: 0.9rem; }
|
|
2155
|
-
|
|
2175
|
+
/* Each record is its own card with air around it, so stacked records read as separate units. */
|
|
2176
|
+
.pj-rec { border: 1px solid var(--border); background: var(--card); border-radius: 8px; padding: 0.4rem 0.7rem; margin: 0.5rem 0; }
|
|
2156
2177
|
.pj-rec-title { flex: 1; text-align: left; background: none; border: none; cursor: pointer; font-size: 0.9rem; color: var(--text); padding: 0; }
|
|
2157
2178
|
.pj-rec-title:hover { color: var(--accent); }
|
|
2158
|
-
.pj-rec-fields { margin: 0.
|
|
2179
|
+
.pj-rec-fields { margin: 0.4rem 0 0.2rem; padding: 0.5rem 0.7rem; border-top: 1px solid var(--border); background: var(--bg-dim); border-radius: 6px; }
|
|
2180
|
+
/* Inline editor — replaces the field view in the SAME card while editing (one editor at a time). */
|
|
2181
|
+
.pj-rec-edit { margin: 0.4rem 0 0.2rem; padding: 0.5rem 0.7rem; border-top: 1px solid var(--border); background: var(--bg-dim); border-radius: 6px; }
|
|
2182
|
+
.pj-rec-edit-new { border-top: none; }
|
|
2159
2183
|
/* Comment thread on a workspace object (record/document) */
|
|
2160
2184
|
.pj-comments { margin: 0.5rem 0 0.25rem; padding-top: 0.5rem; border-top: 1px solid var(--border); }
|
|
2161
2185
|
.pj-comment { padding: 0.4rem 0.5rem; margin: 0.3rem 0; background: var(--surface); border: 1px solid var(--border); border-radius: 6px; }
|
|
@@ -2165,14 +2189,45 @@
|
|
|
2165
2189
|
.pj-comment-actions { display: flex; gap: 0.3rem; }
|
|
2166
2190
|
.pj-comment-compose { display: flex; flex-direction: column; gap: 0.35rem; margin-top: 0.5rem; }
|
|
2167
2191
|
.pj-comment-compose textarea { resize: vertical; }
|
|
2168
|
-
/*
|
|
2169
|
-
|
|
2170
|
-
.pj-rec-
|
|
2171
|
-
.pj-rec-
|
|
2172
|
-
.pj-rec-
|
|
2173
|
-
.pj-rec-
|
|
2192
|
+
/* Record fields: label ON TOP (small, muted), value below at full width, LEFT-aligned and wrapping
|
|
2193
|
+
— natural left-to-right reading (was a right-aligned single line that ran off and didn't wrap). */
|
|
2194
|
+
.pj-rec-field { margin: 0 0 0.6rem; }
|
|
2195
|
+
.pj-rec-field:last-child { margin-bottom: 0; }
|
|
2196
|
+
.pj-rec-field-label { font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.02em; color: var(--muted); margin-bottom: 0.12rem; }
|
|
2197
|
+
.pj-rec-field-val { font-size: 0.88rem; color: var(--text); text-align: left; overflow-wrap: anywhere; }
|
|
2198
|
+
.pj-rec-field-text { white-space: pre-wrap; }
|
|
2199
|
+
.pj-rec-field-list { margin: 0.1rem 0 0; padding-left: 1.1rem; }
|
|
2200
|
+
.pj-rec-field-list li { margin: 0.1rem 0; }
|
|
2201
|
+
.pj-rec-json { margin: 0.1rem 0 0; padding: 0.4rem 0.55rem; background: var(--surface); border: 1px solid var(--border); border-radius: 6px; font-size: 0.78rem; white-space: pre-wrap; overflow-wrap: anywhere; max-height: 18rem; overflow: auto; }
|
|
2202
|
+
/* Markdown inside a record field — tighten the first/last margins so it sits flush in the field. */
|
|
2203
|
+
.pj-rec-md .md-body { font-size: 0.88rem; line-height: 1.5; }
|
|
2204
|
+
.pj-rec-md .md-body > :first-child { margin-top: 0; }
|
|
2205
|
+
.pj-rec-md .md-body > :last-child { margin-bottom: 0; }
|
|
2174
2206
|
.pj-rec-empty { font-size: 0.82rem; padding: 0.2rem 0; }
|
|
2175
2207
|
.pj-empty { color: var(--muted); font-size: 0.85rem; padding: 0.2rem 0; }
|
|
2208
|
+
|
|
2209
|
+
/* ── In-context content search (Kerros 1): filter tabs to matches + grouped result list ── */
|
|
2210
|
+
.pj-ws-searchbar { display: flex; align-items: center; gap: 0.5rem; margin: 0.4rem 0 0.6rem; }
|
|
2211
|
+
.pj-ws-searchbar .search-bar { flex: 1; }
|
|
2212
|
+
.pj-org-tab-match { background: var(--accent); color: #fff; }
|
|
2213
|
+
.pj-search-results { margin-top: 0.4rem; }
|
|
2214
|
+
.pj-search-group { margin: 0 0 0.9rem; }
|
|
2215
|
+
.pj-search-group-head { display: flex; align-items: center; gap: 0.4rem; font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; color: var(--text-dim); margin: 0 0 0.35rem; padding-bottom: 0.25rem; border-bottom: 1px solid var(--border); }
|
|
2216
|
+
.pj-search-hit { display: flex; flex-direction: column; gap: 0.15rem; width: 100%; text-align: left; background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 0.5rem 0.7rem; margin: 0.35rem 0; cursor: pointer; }
|
|
2217
|
+
.pj-search-hit:hover { border-color: var(--accent); background: var(--bg-dim); }
|
|
2218
|
+
.pj-search-hit-title { font-size: 0.9rem; font-weight: 600; color: var(--text); }
|
|
2219
|
+
.pj-search-hit-snippet { font-size: 0.8rem; color: var(--muted); overflow-wrap: anywhere; }
|
|
2220
|
+
|
|
2221
|
+
/* ── Global command palette (Cmd-K, Kerros 2) ── */
|
|
2222
|
+
.cmdk { display: flex; flex-direction: column; gap: 0.4rem; min-width: min(92vw, 40rem); }
|
|
2223
|
+
.cmdk-hint { font-size: 0.72rem; text-align: right; }
|
|
2224
|
+
.cmdk-list { max-height: 50vh; overflow: auto; margin-top: 0.2rem; }
|
|
2225
|
+
.cmdk-group { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--muted); margin: 0.6rem 0 0.2rem; }
|
|
2226
|
+
.cmdk-item { display: flex; flex-direction: column; gap: 0.1rem; width: 100%; text-align: left; background: none; border: 1px solid transparent; border-radius: 8px; padding: 0.45rem 0.6rem; cursor: pointer; color: var(--text); }
|
|
2227
|
+
.cmdk-item.is-sel, .cmdk-item:hover { background: var(--bg-dim); border-color: var(--border); }
|
|
2228
|
+
.cmdk-item-label { font-size: 0.9rem; font-weight: 600; }
|
|
2229
|
+
.cmdk-item-sub { font-size: 0.75rem; color: var(--muted); }
|
|
2230
|
+
.cmdk-item-snippet { font-size: 0.76rem; color: var(--text-dim); overflow-wrap: anywhere; max-height: 2.6em; overflow: hidden; }
|
|
2176
2231
|
.pj-decision { font-size: 0.85rem; color: var(--muted); }
|
|
2177
2232
|
.pj-field { display: flex; flex-direction: column; gap: 0.2rem; margin-bottom: 0.35rem; }
|
|
2178
2233
|
.pj-field > span { font-size: 0.75rem; color: var(--muted); }
|
|
@@ -2543,6 +2598,48 @@
|
|
|
2543
2598
|
.pj-struct-body .md-body strong { font-weight: 600; }
|
|
2544
2599
|
.pj-struct-body .md-body em { color: var(--muted); font-style: normal; }
|
|
2545
2600
|
|
|
2601
|
+
/* ── README panel (free-form description, Osa A) ── */
|
|
2602
|
+
.pj-readme { margin: 0.4rem 0 0.9rem; padding: 0.85rem 1rem; background: var(--card); border: 1px solid var(--border); border-radius: 10px; }
|
|
2603
|
+
.pj-readme-empty { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; justify-content: space-between; }
|
|
2604
|
+
.pj-readme-bar { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; margin-bottom: 0.5rem; }
|
|
2605
|
+
.pj-readme-actions { display: inline-flex; gap: 0.4rem; flex-wrap: wrap; }
|
|
2606
|
+
.pj-readme-body .md-body { font-size: 0.9rem; color: var(--text); line-height: 1.55; }
|
|
2607
|
+
.pj-readme-body .md-body > :first-child { margin-top: 0; }
|
|
2608
|
+
.pj-readme-textarea { width: 100%; font-family: var(--font-mono, monospace); font-size: 0.82rem; line-height: 1.5; resize: vertical; }
|
|
2609
|
+
|
|
2610
|
+
/* ── Interactive mindmap (Osa C) — reuses .of-mapwrap--clickable cursor/hover from offers.css ── */
|
|
2611
|
+
.pj-mindmap { margin: 0.4rem 0 0.9rem; }
|
|
2612
|
+
.pj-mindmap-body { margin-top: 0.4rem; padding: 0.75rem 0.9rem; background: var(--card); border: 1px solid var(--border); border-radius: 10px; }
|
|
2613
|
+
.pj-mindmap-opts { display: flex; flex-wrap: wrap; align-items: center; gap: 0.9rem; margin-bottom: 0.6rem; }
|
|
2614
|
+
.pj-mm-opt { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.8rem; color: var(--text-dim); }
|
|
2615
|
+
.pj-mm-opt select { width: auto; }
|
|
2616
|
+
.pj-mm-check { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.8rem; color: var(--text-dim); cursor: pointer; }
|
|
2617
|
+
.pj-mindmap-canvas { overflow: auto; max-height: 36rem; }
|
|
2618
|
+
.pj-mindmap-canvas .node, .pj-mindmap-canvas .mindmap-node { cursor: pointer; }
|
|
2619
|
+
.pj-mindmap-canvas .node:hover, .pj-mindmap-canvas .mindmap-node:hover { opacity: 0.82; }
|
|
2620
|
+
.pj-mindmap-hint { margin-top: 0.4rem; }
|
|
2621
|
+
/* Mindmap heatmap: `:::heatN` attaches the class to the node; colour its shape from theme vars
|
|
2622
|
+
(flowchart modes colour via Mermaid classDef with the same theme-derived values). */
|
|
2623
|
+
.pj-mindmap-canvas .heat1 rect, .pj-mindmap-canvas .heat1 path, .pj-mindmap-canvas .heat1 circle { fill: var(--success-bg); stroke: var(--success-fg); }
|
|
2624
|
+
.pj-mindmap-canvas .heat2 rect, .pj-mindmap-canvas .heat2 path, .pj-mindmap-canvas .heat2 circle { fill: var(--warn-bg); stroke: var(--warn-fg); }
|
|
2625
|
+
.pj-mindmap-canvas .heat3 rect, .pj-mindmap-canvas .heat3 path, .pj-mindmap-canvas .heat3 circle { fill: var(--danger-bg); stroke: var(--danger-fg); }
|
|
2626
|
+
|
|
2627
|
+
/* ── Structure timeline / development (Osa D) ── */
|
|
2628
|
+
.pj-timeline { margin: 0.4rem 0 0.9rem; }
|
|
2629
|
+
.pj-timeline-body { margin-top: 0.4rem; padding: 0.75rem 0.9rem; background: var(--card); border: 1px solid var(--border); border-radius: 10px; }
|
|
2630
|
+
.pj-timeline-diagram { overflow: auto; max-height: 22rem; margin-bottom: 0.8rem; padding-bottom: 0.6rem; border-bottom: 1px solid var(--border); }
|
|
2631
|
+
.pj-timeline-grid { display: grid; grid-template-columns: minmax(14rem, 22rem) 1fr; gap: 1rem; align-items: start; }
|
|
2632
|
+
.pj-timeline-list { list-style: none; margin: 0; padding: 0; max-height: 30rem; overflow: auto; }
|
|
2633
|
+
.pj-timeline-item { margin: 0; }
|
|
2634
|
+
.pj-timeline-entry { display: flex; flex-direction: column; gap: 0.1rem; width: 100%; text-align: left; background: none; border: none; border-left: 2px solid var(--border); padding: 0.4rem 0.6rem; cursor: pointer; color: var(--text); }
|
|
2635
|
+
.pj-timeline-entry:hover { background: var(--bg-dim); }
|
|
2636
|
+
.pj-timeline-item.is-active .pj-timeline-entry { border-left-color: var(--accent); background: var(--bg-dim); }
|
|
2637
|
+
.pj-timeline-date { font-size: 0.75rem; color: var(--muted); }
|
|
2638
|
+
.pj-timeline-event { font-size: 0.84rem; }
|
|
2639
|
+
.pj-timeline-counts { font-size: 0.72rem; }
|
|
2640
|
+
.pj-timeline-map { overflow: auto; max-height: 30rem; }
|
|
2641
|
+
@media (max-width: 720px) { .pj-timeline-grid { grid-template-columns: 1fr; } }
|
|
2642
|
+
|
|
2546
2643
|
/* ── Workspace renew (phase 2): header actions, review banner, add-space tab ── */
|
|
2547
2644
|
.pj-ws-head-actions { margin-left: auto; display: flex; gap: 0.4rem; align-items: center; }
|
|
2548
2645
|
.pj-ws-banner { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; border: 1px solid var(--border); border-left: 3px solid var(--warn, var(--accent)); border-radius: 10px; background: var(--card); padding: 0.55rem 0.75rem; margin: 0.6rem 0 0.2rem; }
|
|
@@ -70,7 +70,13 @@ export function refreshAll() {
|
|
|
70
70
|
function bindLive() {
|
|
71
71
|
if (liveBound) return;
|
|
72
72
|
liveBound = true;
|
|
73
|
-
|
|
73
|
+
// Refresh presence only when the 'presence' domain actually changed (or on a legacy
|
|
74
|
+
// "everything changed" payload), not on every unrelated live update.
|
|
75
|
+
window.addEventListener('aimeat-live-update', (e) => {
|
|
76
|
+
const d = /** @type {CustomEvent} */ (e).detail?.domains;
|
|
77
|
+
if (d && !d.has('presence')) return;
|
|
78
|
+
refreshAll();
|
|
79
|
+
});
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
/**
|
|
@@ -4,9 +4,16 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { apiGet, apiPost, apiDelete, api } from '/js/api.js';
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
/**
|
|
8
|
+
* List agents owned by the given owner. Returns array.
|
|
9
|
+
* @param {string} [owner] filter to this owner
|
|
10
|
+
* @param {{ include?: string }} [opts] `include:'stats'` attaches a per-agent `stats` projection
|
|
11
|
+
* (task/message counts + latest timestamps + active_tasks + onboarding) in ONE request,
|
|
12
|
+
* replacing the old N+1 per-agent fan-out.
|
|
13
|
+
*/
|
|
14
|
+
export async function listAgents(owner, opts = {}) {
|
|
15
|
+
const qs = opts.include ? `?include=${encodeURIComponent(opts.include)}` : '';
|
|
16
|
+
const data = await apiGet(`/v1/agents${qs}`);
|
|
10
17
|
const list = data?.data?.agents || data?.data || [];
|
|
11
18
|
return owner ? list.filter(a => a.owner === owner) : list;
|
|
12
19
|
}
|
|
@@ -334,7 +334,7 @@ function awaitTask(agentName, taskId, onStatus) {
|
|
|
334
334
|
if (st === 'failed' || st === 'stalled') { settled = true; cleanup(); reject(new Error('agent ' + st)); return; }
|
|
335
335
|
if (Date.now() > deadline) { settled = true; cleanup(); reject(new Error('TIMEOUT')); }
|
|
336
336
|
}
|
|
337
|
-
const onLive = () => check();
|
|
337
|
+
const onLive = (e) => { const d = e.detail?.domains; if (d && !d.has('agent-tasks')) return; check(); };
|
|
338
338
|
const timer = setInterval(check, 5000);
|
|
339
339
|
window.addEventListener('aimeat-live-update', onLive);
|
|
340
340
|
check();
|