@theihtisham/agent-shadow-brain 7.2.0 → 7.22.1
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/CHANGELOG.md +482 -427
- package/README.md +202 -68
- package/dist/activity-cli.d.ts +3 -0
- package/dist/activity-cli.d.ts.map +1 -0
- package/dist/activity-cli.js +78 -0
- package/dist/activity-cli.js.map +1 -0
- package/dist/adapters/index.d.ts +2 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +3 -2
- package/dist/adapters/index.js.map +1 -1
- package/dist/brain/activity-journal.d.ts +82 -0
- package/dist/brain/activity-journal.d.ts.map +1 -0
- package/dist/brain/activity-journal.js +315 -0
- package/dist/brain/activity-journal.js.map +1 -0
- package/dist/brain/activity-reporting.d.ts +14 -0
- package/dist/brain/activity-reporting.d.ts.map +1 -0
- package/dist/brain/activity-reporting.js +17 -0
- package/dist/brain/activity-reporting.js.map +1 -0
- package/dist/brain/auto-update.js +1 -1
- package/dist/brain/auto-update.js.map +1 -1
- package/dist/brain/brain-portability.js +1 -1
- package/dist/brain/brain-portability.js.map +1 -1
- package/dist/brain/client-config.d.ts +19 -0
- package/dist/brain/client-config.d.ts.map +1 -0
- package/dist/brain/client-config.js +40 -0
- package/dist/brain/client-config.js.map +1 -0
- package/dist/brain/client-integrations.d.ts +63 -0
- package/dist/brain/client-integrations.d.ts.map +1 -0
- package/dist/brain/client-integrations.js +79 -0
- package/dist/brain/client-integrations.js.map +1 -0
- package/dist/brain/context-assembly.d.ts +41 -5
- package/dist/brain/context-assembly.d.ts.map +1 -1
- package/dist/brain/context-assembly.js +366 -35
- package/dist/brain/context-assembly.js.map +1 -1
- package/dist/brain/context-efficiency.d.ts +48 -0
- package/dist/brain/context-efficiency.d.ts.map +1 -0
- package/dist/brain/context-efficiency.js +34 -0
- package/dist/brain/context-efficiency.js.map +1 -0
- package/dist/brain/context-request.d.ts +4 -0
- package/dist/brain/context-request.d.ts.map +1 -0
- package/dist/brain/context-request.js +24 -0
- package/dist/brain/context-request.js.map +1 -0
- package/dist/brain/context-retrieval.d.ts +88 -0
- package/dist/brain/context-retrieval.d.ts.map +1 -0
- package/dist/brain/context-retrieval.js +301 -0
- package/dist/brain/context-retrieval.js.map +1 -0
- package/dist/brain/feature-settings.d.ts +10 -0
- package/dist/brain/feature-settings.d.ts.map +1 -1
- package/dist/brain/feature-settings.js +18 -2
- package/dist/brain/feature-settings.js.map +1 -1
- package/dist/brain/file-identity.d.ts +4 -0
- package/dist/brain/file-identity.d.ts.map +1 -0
- package/dist/brain/file-identity.js +27 -0
- package/dist/brain/file-identity.js.map +1 -0
- package/dist/brain/global-brain.d.ts +18 -2
- package/dist/brain/global-brain.d.ts.map +1 -1
- package/dist/brain/global-brain.js +75 -7
- package/dist/brain/global-brain.js.map +1 -1
- package/dist/brain/managed-project-skills.d.ts +48 -0
- package/dist/brain/managed-project-skills.d.ts.map +1 -0
- package/dist/brain/managed-project-skills.js +230 -0
- package/dist/brain/managed-project-skills.js.map +1 -0
- package/dist/brain/mcp-presence.d.ts +50 -0
- package/dist/brain/mcp-presence.d.ts.map +1 -0
- package/dist/brain/mcp-presence.js +214 -0
- package/dist/brain/mcp-presence.js.map +1 -0
- package/dist/brain/mcp-server.d.ts +40 -1
- package/dist/brain/mcp-server.d.ts.map +1 -1
- package/dist/brain/mcp-server.js +506 -52
- package/dist/brain/mcp-server.js.map +1 -1
- package/dist/brain/mcp-stdio.d.ts +12 -0
- package/dist/brain/mcp-stdio.d.ts.map +1 -0
- package/dist/brain/mcp-stdio.js +158 -0
- package/dist/brain/mcp-stdio.js.map +1 -0
- package/dist/brain/memory-annotations.d.ts +99 -0
- package/dist/brain/memory-annotations.d.ts.map +1 -0
- package/dist/brain/memory-annotations.js +402 -0
- package/dist/brain/memory-annotations.js.map +1 -0
- package/dist/brain/memory-graph.d.ts.map +1 -1
- package/dist/brain/memory-graph.js +12 -23
- package/dist/brain/memory-graph.js.map +1 -1
- package/dist/brain/memory-inspection.d.ts +73 -0
- package/dist/brain/memory-inspection.d.ts.map +1 -0
- package/dist/brain/memory-inspection.js +131 -0
- package/dist/brain/memory-inspection.js.map +1 -0
- package/dist/brain/memory-mcp-content.d.ts +46 -0
- package/dist/brain/memory-mcp-content.d.ts.map +1 -0
- package/dist/brain/memory-mcp-content.js +95 -0
- package/dist/brain/memory-mcp-content.js.map +1 -0
- package/dist/brain/memory-sources.d.ts +8 -0
- package/dist/brain/memory-sources.d.ts.map +1 -0
- package/dist/brain/memory-sources.js +27 -0
- package/dist/brain/memory-sources.js.map +1 -0
- package/dist/brain/model-registry.d.ts +4 -5
- package/dist/brain/model-registry.d.ts.map +1 -1
- package/dist/brain/model-registry.js +22 -207
- package/dist/brain/model-registry.js.map +1 -1
- package/dist/brain/model-usage.d.ts +66 -0
- package/dist/brain/model-usage.d.ts.map +1 -0
- package/dist/brain/model-usage.js +246 -0
- package/dist/brain/model-usage.js.map +1 -0
- package/dist/brain/native-codex.d.ts +105 -0
- package/dist/brain/native-codex.d.ts.map +1 -0
- package/dist/brain/native-codex.js +292 -0
- package/dist/brain/native-codex.js.map +1 -0
- package/dist/brain/native-session-import.d.ts +56 -0
- package/dist/brain/native-session-import.d.ts.map +1 -0
- package/dist/brain/native-session-import.js +307 -0
- package/dist/brain/native-session-import.js.map +1 -0
- package/dist/brain/orchestrator.js +1 -1
- package/dist/brain/orchestrator.js.map +1 -1
- package/dist/brain/project-feedback.d.ts +63 -0
- package/dist/brain/project-feedback.d.ts.map +1 -0
- package/dist/brain/project-feedback.js +300 -0
- package/dist/brain/project-feedback.js.map +1 -0
- package/dist/brain/project-hub-contract.d.ts +332 -0
- package/dist/brain/project-hub-contract.d.ts.map +1 -0
- package/dist/brain/project-hub-contract.js +57 -0
- package/dist/brain/project-hub-contract.js.map +1 -0
- package/dist/brain/project-hub-mcp.d.ts +182 -0
- package/dist/brain/project-hub-mcp.d.ts.map +1 -0
- package/dist/brain/project-hub-mcp.js +46 -0
- package/dist/brain/project-hub-mcp.js.map +1 -0
- package/dist/brain/project-hub-pdf-worker.d.ts +13 -0
- package/dist/brain/project-hub-pdf-worker.d.ts.map +1 -0
- package/dist/brain/project-hub-pdf-worker.js +84 -0
- package/dist/brain/project-hub-pdf-worker.js.map +1 -0
- package/dist/brain/project-hub-store.d.ts +50 -0
- package/dist/brain/project-hub-store.d.ts.map +1 -0
- package/dist/brain/project-hub-store.js +257 -0
- package/dist/brain/project-hub-store.js.map +1 -0
- package/dist/brain/project-hub.d.ts +132 -0
- package/dist/brain/project-hub.d.ts.map +1 -0
- package/dist/brain/project-hub.js +403 -0
- package/dist/brain/project-hub.js.map +1 -0
- package/dist/brain/project-kit-inspection.d.ts +28 -0
- package/dist/brain/project-kit-inspection.d.ts.map +1 -0
- package/dist/brain/project-kit-inspection.js +200 -0
- package/dist/brain/project-kit-inspection.js.map +1 -0
- package/dist/brain/project-kit-paths.d.ts +13 -0
- package/dist/brain/project-kit-paths.d.ts.map +1 -0
- package/dist/brain/project-kit-paths.js +141 -0
- package/dist/brain/project-kit-paths.js.map +1 -0
- package/dist/brain/project-kit.d.ts +51 -0
- package/dist/brain/project-kit.d.ts.map +1 -0
- package/dist/brain/project-kit.js +319 -0
- package/dist/brain/project-kit.js.map +1 -0
- package/dist/brain/project-memory.d.ts +38 -0
- package/dist/brain/project-memory.d.ts.map +1 -0
- package/dist/brain/project-memory.js +76 -0
- package/dist/brain/project-memory.js.map +1 -0
- package/dist/brain/project-policy-delivery.d.ts +8 -0
- package/dist/brain/project-policy-delivery.d.ts.map +1 -0
- package/dist/brain/project-policy-delivery.js +38 -0
- package/dist/brain/project-policy-delivery.js.map +1 -0
- package/dist/brain/project-policy.d.ts +88 -0
- package/dist/brain/project-policy.d.ts.map +1 -0
- package/dist/brain/project-policy.js +267 -0
- package/dist/brain/project-policy.js.map +1 -0
- package/dist/brain/project-session-contract.d.ts +180 -0
- package/dist/brain/project-session-contract.d.ts.map +1 -0
- package/dist/brain/project-session-contract.js +50 -0
- package/dist/brain/project-session-contract.js.map +1 -0
- package/dist/brain/project-session-mcp.d.ts +145 -0
- package/dist/brain/project-session-mcp.d.ts.map +1 -0
- package/dist/brain/project-session-mcp.js +58 -0
- package/dist/brain/project-session-mcp.js.map +1 -0
- package/dist/brain/project-sessions.d.ts +97 -0
- package/dist/brain/project-sessions.d.ts.map +1 -0
- package/dist/brain/project-sessions.js +223 -0
- package/dist/brain/project-sessions.js.map +1 -0
- package/dist/brain/project-source-contract.d.ts +109 -0
- package/dist/brain/project-source-contract.d.ts.map +1 -0
- package/dist/brain/project-source-contract.js +2 -0
- package/dist/brain/project-source-contract.js.map +1 -0
- package/dist/brain/project-source-intake.d.ts +26 -0
- package/dist/brain/project-source-intake.d.ts.map +1 -0
- package/dist/brain/project-source-intake.js +457 -0
- package/dist/brain/project-source-intake.js.map +1 -0
- package/dist/brain/subconscious.d.ts +3 -1
- package/dist/brain/subconscious.d.ts.map +1 -1
- package/dist/brain/subconscious.js +8 -3
- package/dist/brain/subconscious.js.map +1 -1
- package/dist/brain/workflow-skills.d.ts +5 -5
- package/dist/brain/workflow-skills.d.ts.map +1 -1
- package/dist/brain/workflow-skills.js +3 -2
- package/dist/brain/workflow-skills.js.map +1 -1
- package/dist/cli.js +37 -3
- package/dist/cli.js.map +1 -1
- package/dist/context-cli.d.ts.map +1 -1
- package/dist/context-cli.js +49 -7
- package/dist/context-cli.js.map +1 -1
- package/dist/curation-cli.d.ts +4 -0
- package/dist/curation-cli.d.ts.map +1 -0
- package/dist/curation-cli.js +118 -0
- package/dist/curation-cli.js.map +1 -0
- package/dist/dashboard/brain-hub-actions.d.ts +2 -0
- package/dist/dashboard/brain-hub-actions.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-actions.js +234 -0
- package/dist/dashboard/brain-hub-actions.js.map +1 -0
- package/dist/dashboard/brain-hub-agent-dock.d.ts +2 -0
- package/dist/dashboard/brain-hub-agent-dock.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-agent-dock.js +255 -0
- package/dist/dashboard/brain-hub-agent-dock.js.map +1 -0
- package/dist/dashboard/brain-hub-brand-icons.d.ts +2 -0
- package/dist/dashboard/brain-hub-brand-icons.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-brand-icons.js +9 -0
- package/dist/dashboard/brain-hub-brand-icons.js.map +1 -0
- package/dist/dashboard/brain-hub-client.d.ts +2 -0
- package/dist/dashboard/brain-hub-client.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-client.js +435 -0
- package/dist/dashboard/brain-hub-client.js.map +1 -0
- package/dist/dashboard/brain-hub-context.d.ts +2 -0
- package/dist/dashboard/brain-hub-context.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-context.js +37 -0
- package/dist/dashboard/brain-hub-context.js.map +1 -0
- package/dist/dashboard/brain-hub-controls.d.ts +2 -0
- package/dist/dashboard/brain-hub-controls.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-controls.js +63 -0
- package/dist/dashboard/brain-hub-controls.js.map +1 -0
- package/dist/dashboard/brain-hub-exchanges.d.ts +2 -0
- package/dist/dashboard/brain-hub-exchanges.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-exchanges.js +82 -0
- package/dist/dashboard/brain-hub-exchanges.js.map +1 -0
- package/dist/dashboard/brain-hub-graph.d.ts +2 -0
- package/dist/dashboard/brain-hub-graph.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-graph.js +338 -0
- package/dist/dashboard/brain-hub-graph.js.map +1 -0
- package/dist/dashboard/brain-hub-html.d.ts +2 -0
- package/dist/dashboard/brain-hub-html.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-html.js +85 -0
- package/dist/dashboard/brain-hub-html.js.map +1 -0
- package/dist/dashboard/brain-hub-knowledge.d.ts +2 -0
- package/dist/dashboard/brain-hub-knowledge.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-knowledge.js +33 -0
- package/dist/dashboard/brain-hub-knowledge.js.map +1 -0
- package/dist/dashboard/brain-hub-live.d.ts +2 -0
- package/dist/dashboard/brain-hub-live.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-live.js +151 -0
- package/dist/dashboard/brain-hub-live.js.map +1 -0
- package/dist/dashboard/brain-hub-managed-skills.d.ts +2 -0
- package/dist/dashboard/brain-hub-managed-skills.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-managed-skills.js +20 -0
- package/dist/dashboard/brain-hub-managed-skills.js.map +1 -0
- package/dist/dashboard/brain-hub-native.d.ts +2 -0
- package/dist/dashboard/brain-hub-native.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-native.js +44 -0
- package/dist/dashboard/brain-hub-native.js.map +1 -0
- package/dist/dashboard/brain-hub-project-views.d.ts +2 -0
- package/dist/dashboard/brain-hub-project-views.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-project-views.js +80 -0
- package/dist/dashboard/brain-hub-project-views.js.map +1 -0
- package/dist/dashboard/brain-hub-sessions.d.ts +2 -0
- package/dist/dashboard/brain-hub-sessions.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-sessions.js +40 -0
- package/dist/dashboard/brain-hub-sessions.js.map +1 -0
- package/dist/dashboard/brain-hub-usage.d.ts +2 -0
- package/dist/dashboard/brain-hub-usage.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-usage.js +28 -0
- package/dist/dashboard/brain-hub-usage.js.map +1 -0
- package/dist/dashboard/brain-hub-views.d.ts +2 -0
- package/dist/dashboard/brain-hub-views.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-views.js +155 -0
- package/dist/dashboard/brain-hub-views.js.map +1 -0
- package/dist/dashboard/demo-workspace.d.ts +11 -0
- package/dist/dashboard/demo-workspace.d.ts.map +1 -0
- package/dist/dashboard/demo-workspace.js +178 -0
- package/dist/dashboard/demo-workspace.js.map +1 -0
- package/dist/dashboard/live-workspace-html.d.ts +2 -0
- package/dist/dashboard/live-workspace-html.d.ts.map +1 -0
- package/dist/dashboard/live-workspace-html.js +1042 -0
- package/dist/dashboard/live-workspace-html.js.map +1 -0
- package/dist/dashboard/managed-project-skills-api.d.ts +29 -0
- package/dist/dashboard/managed-project-skills-api.d.ts.map +1 -0
- package/dist/dashboard/managed-project-skills-api.js +28 -0
- package/dist/dashboard/managed-project-skills-api.js.map +1 -0
- package/dist/dashboard/native-codex-api.d.ts +83 -0
- package/dist/dashboard/native-codex-api.d.ts.map +1 -0
- package/dist/dashboard/native-codex-api.js +91 -0
- package/dist/dashboard/native-codex-api.js.map +1 -0
- package/dist/dashboard/project-feedback-html.d.ts +5 -0
- package/dist/dashboard/project-feedback-html.d.ts.map +1 -0
- package/dist/dashboard/project-feedback-html.js +216 -0
- package/dist/dashboard/project-feedback-html.js.map +1 -0
- package/dist/dashboard/project-file-watch.d.ts +46 -0
- package/dist/dashboard/project-file-watch.d.ts.map +1 -0
- package/dist/dashboard/project-file-watch.js +221 -0
- package/dist/dashboard/project-file-watch.js.map +1 -0
- package/dist/dashboard/project-hub-api.d.ts +5 -0
- package/dist/dashboard/project-hub-api.d.ts.map +1 -0
- package/dist/dashboard/project-hub-api.js +121 -0
- package/dist/dashboard/project-hub-api.js.map +1 -0
- package/dist/dashboard/project-kit-html.d.ts +4 -0
- package/dist/dashboard/project-kit-html.d.ts.map +1 -0
- package/dist/dashboard/project-kit-html.js +359 -0
- package/dist/dashboard/project-kit-html.js.map +1 -0
- package/dist/dashboard/project-live-stream.d.ts +33 -0
- package/dist/dashboard/project-live-stream.d.ts.map +1 -0
- package/dist/dashboard/project-live-stream.js +233 -0
- package/dist/dashboard/project-live-stream.js.map +1 -0
- package/dist/dashboard/project-policy-api.d.ts +37 -0
- package/dist/dashboard/project-policy-api.d.ts.map +1 -0
- package/dist/dashboard/project-policy-api.js +31 -0
- package/dist/dashboard/project-policy-api.js.map +1 -0
- package/dist/dashboard/project-session-api.d.ts +28 -0
- package/dist/dashboard/project-session-api.d.ts.map +1 -0
- package/dist/dashboard/project-session-api.js +84 -0
- package/dist/dashboard/project-session-api.js.map +1 -0
- package/dist/dashboard/project-source-api.d.ts +11 -0
- package/dist/dashboard/project-source-api.d.ts.map +1 -0
- package/dist/dashboard/project-source-api.js +67 -0
- package/dist/dashboard/project-source-api.js.map +1 -0
- package/dist/dashboard/project-workspace.d.ts +16 -0
- package/dist/dashboard/project-workspace.d.ts.map +1 -0
- package/dist/dashboard/project-workspace.js +124 -0
- package/dist/dashboard/project-workspace.js.map +1 -0
- package/dist/dashboard/server.d.ts +1 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +99 -42
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts.map +1 -1
- package/dist/dashboard/v6-dashboard-html.js +39 -87
- package/dist/dashboard/v6-dashboard-html.js.map +1 -1
- package/dist/dashboard/workspace-api.d.ts +12 -0
- package/dist/dashboard/workspace-api.d.ts.map +1 -1
- package/dist/dashboard/workspace-api.js +359 -41
- package/dist/dashboard/workspace-api.js.map +1 -1
- package/dist/dashboard/workspace-html.d.ts.map +1 -1
- package/dist/dashboard/workspace-html.js +2535 -1552
- package/dist/dashboard/workspace-html.js.map +1 -1
- package/dist/dashboard/workspace-status.d.ts +53 -0
- package/dist/dashboard/workspace-status.d.ts.map +1 -0
- package/dist/dashboard/workspace-status.js +23 -0
- package/dist/dashboard/workspace-status.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/integration-cli.d.ts +3 -0
- package/dist/integration-cli.d.ts.map +1 -0
- package/dist/integration-cli.js +16 -0
- package/dist/integration-cli.js.map +1 -0
- package/dist/project-cli.d.ts +3 -0
- package/dist/project-cli.d.ts.map +1 -0
- package/dist/project-cli.js +100 -0
- package/dist/project-cli.js.map +1 -0
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/BRAND_ASSETS.md +36 -0
- package/docs/COMPARISON.md +22 -0
- package/docs/COMPONENTS.md +66 -0
- package/docs/CONTEXT_LAB.md +79 -0
- package/docs/FEATURES_AND_LIMITS.md +29 -0
- package/docs/INTEGRATIONS.md +70 -0
- package/docs/LEARNING.md +46 -0
- package/docs/PROJECT_KIT.md +98 -0
- package/docs/QUICKSTART.md +62 -0
- package/docs/README.md +36 -0
- package/docs/ROADMAP-v7.md +147 -0
- package/docs/SESSIONS.md +77 -0
- package/docs/SHARING.md +13 -0
- package/docs/SHOWCASE.md +87 -0
- package/docs/SOURCE_INTAKE.md +33 -0
- package/docs/STATS.md +21 -0
- package/docs/TROUBLESHOOTING.md +42 -0
- package/docs/UPGRADE_PLAN_v7.0.0.md +203 -0
- package/docs/VIRAL-PLAYBOOK.md +259 -0
- package/docs/VISUAL_GUIDE_v7.1.4.md +70 -0
- package/docs/VISUAL_GUIDE_v7.22.0.md +73 -0
- package/docs/WORKFLOW_INTEGRATION.md +125 -105
- package/docs/WORKSPACE.md +63 -70
- package/docs/assets/7.1.4-collaboration-design-preview.png +0 -0
- package/docs/assets/7.1.4-comparison.png +0 -0
- package/docs/assets/7.1.4-context-lab.png +0 -0
- package/docs/assets/7.1.4-control-room-dense-preview.png +0 -0
- package/docs/assets/7.1.4-control-room-focus-preview.png +0 -0
- package/docs/assets/7.1.4-features.png +0 -0
- package/docs/assets/7.1.4-graph.png +0 -0
- package/docs/assets/7.1.4-hub-control-room.png +0 -0
- package/docs/assets/7.1.4-hub-empty.png +0 -0
- package/docs/assets/7.1.4-hub-knowledge.png +0 -0
- package/docs/assets/7.1.4-hub-learning.png +0 -0
- package/docs/assets/7.1.4-hub-mobile.png +0 -0
- package/docs/assets/7.1.4-hub-public-docs-source.png +0 -0
- package/docs/assets/7.1.4-hub-public-docs.gif +0 -0
- package/docs/assets/7.1.4-hub-public-docs.png +0 -0
- package/docs/assets/7.1.4-hub-setup.png +0 -0
- package/docs/assets/7.1.4-hub-walkthrough.gif +0 -0
- package/docs/assets/7.1.4-integrations.png +0 -0
- package/docs/assets/7.1.4-knowledge-design-preview.png +0 -0
- package/docs/assets/7.1.4-learning-design-preview.png +0 -0
- package/docs/assets/7.1.4-learning.png +0 -0
- package/docs/assets/7.1.4-live.png +0 -0
- package/docs/assets/7.1.4-memory-review.png +0 -0
- package/docs/assets/7.1.4-mobile.png +0 -0
- package/docs/assets/7.1.4-models-design-preview.png +0 -0
- package/docs/assets/7.1.4-outcome-ranking.png +0 -0
- package/docs/assets/7.1.4-overview.png +0 -0
- package/docs/assets/7.1.4-project-kit.png +0 -0
- package/docs/assets/7.1.4-project-skill-preview.png +0 -0
- package/docs/assets/7.1.4-replay.png +0 -0
- package/docs/assets/7.1.4-setup-design-preview.png +0 -0
- package/docs/assets/7.1.4-usage-design-preview.png +0 -0
- package/docs/assets/7.22.0-agent-dock-mobile.png +0 -0
- package/docs/assets/7.22.0-agent-dock.gif +0 -0
- package/docs/assets/7.22.0-agent-dock.png +0 -0
- package/docs/assets/7.22.0-hub-exchange.png +0 -0
- package/docs/assets/7.22.0-hub-exchanges.gif +0 -0
- package/docs/assets/7.22.0-hub-graph.png +0 -0
- package/docs/assets/7.22.0-hub-mobile-empty.png +0 -0
- package/docs/assets/7.22.0-managed-skills.png +0 -0
- package/docs/assets/7.22.0-plain-evidence.png +0 -0
- package/docs/assets/7.22.0-project-controls.png +0 -0
- package/docs/assets/7.22.0-sessions.png +0 -0
- package/docs/assets/7.22.0-teach-brain.png +0 -0
- package/docs/assets/context-v7.1.3.png +0 -0
- package/docs/assets/features-v7.1.3.png +0 -0
- package/docs/assets/graph-v7.1.3.png +0 -0
- package/docs/assets/integrations-v7.1.3.png +0 -0
- package/docs/assets/live-v7.1.3.png +0 -0
- package/docs/assets/live-v7.1.4.gif +0 -0
- package/docs/assets/memory-detail-v7.1.3.png +0 -0
- package/docs/assets/overview-v7.1.3.png +0 -0
- package/docs/evaluation/CONTEXT_EVALUATION_v7.1.4.json +1818 -0
- package/docs/evaluation/CONTEXT_EVALUATION_v7.1.4.md +36 -0
- package/docs/launch/COMPONENT_MAP_v7.1.4.md +307 -0
- package/docs/launch/PROJECT_KIT_PLAN_v7.1.4.md +110 -0
- package/docs/launch/PROJECT_LEARNING_PLAN_v7.1.4.md +63 -0
- package/docs/launch/RELEASE_ACCEPTANCE_v7.22.0.md +48 -0
- package/docs/launch/RELEASE_CHECKLIST_v7.0.0.md +24 -24
- package/docs/launch/RELEASE_NOTES_v7.0.0.md +44 -44
- package/docs/launch/RELEASE_NOTES_v7.1.0.md +32 -32
- package/docs/launch/RELEASE_NOTES_v7.1.3.md +40 -0
- package/docs/launch/RELEASE_NOTES_v7.1.4.md +30 -0
- package/docs/launch/RELEASE_NOTES_v7.2.0.md +24 -24
- package/docs/launch/RELEASE_NOTES_v7.22.0.md +53 -0
- package/docs/launch/RELEASE_NOTES_v7.22.1.md +11 -0
- package/docs/launch/RESEARCH_AND_PLAN_v7.1.4.md +255 -0
- package/docs/launch/RESEARCH_AND_PLAN_v7.22.0.md +672 -0
- package/package.json +139 -111
- package/skills/shadow-debug/SKILL.md +16 -16
- package/skills/shadow-implement/SKILL.md +16 -16
- package/skills/shadow-release/SKILL.md +16 -16
- package/skills/shadow-research/SKILL.md +14 -12
- package/skills/shadow-review/SKILL.md +14 -14
- package/skills/shadow-workflow/SKILL.md +39 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-cli.d.ts","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"context-cli.d.ts","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwE9D"}
|
package/dist/context-cli.js
CHANGED
|
@@ -3,6 +3,13 @@ import * as path from 'node:path';
|
|
|
3
3
|
import { getGlobalBrain, GlobalBrain } from './brain/global-brain.js';
|
|
4
4
|
import { assembleContext } from './brain/context-assembly.js';
|
|
5
5
|
import { FeatureSettingsStore, FEATURE_DEFINITIONS } from './brain/feature-settings.js';
|
|
6
|
+
import { memoryAnnotationsFor } from './brain/memory-annotations.js';
|
|
7
|
+
import { parseContextRequest } from './brain/context-request.js';
|
|
8
|
+
import { inspectMemoryHealth } from './brain/memory-inspection.js';
|
|
9
|
+
import { ProjectFeedbackStore } from './brain/project-feedback.js';
|
|
10
|
+
import { resolveProjectStore } from './brain/project-memory.js';
|
|
11
|
+
import { ProjectPolicyStore } from './brain/project-policy.js';
|
|
12
|
+
import { enforceProjectContext } from './brain/project-policy-delivery.js';
|
|
6
13
|
export function registerContextCommands(program) {
|
|
7
14
|
program.command('context-pack').description('Build a bounded, explained project context pack without model calls')
|
|
8
15
|
.argument('[query]', 'Current task or search terms', '')
|
|
@@ -11,22 +18,36 @@ export function registerContextCommands(program) {
|
|
|
11
18
|
.option('--db <path>', 'Explicit memory-store path')
|
|
12
19
|
.option('--settings <path>', 'Explicit feature-settings file')
|
|
13
20
|
.option('--token-budget <number>', 'Approximate token budget, including the rendered context', '2000')
|
|
21
|
+
.option('--max-entries <number>', 'Maximum selected memories, 1 to 30')
|
|
14
22
|
.option('--cross-project', 'Request broader context when the feature is enabled')
|
|
23
|
+
.option('--profile <name>', 'Retrieval profile: legacy or adaptive', 'legacy')
|
|
24
|
+
.option('--no-related', 'Disable recorded one-hop expansion in adaptive retrieval')
|
|
15
25
|
.option('--json', 'Print entries, exclusions, reasons, and budget as JSON')
|
|
16
26
|
.action(async (query, opts) => {
|
|
17
27
|
const tokenBudget = Number(opts.tokenBudget);
|
|
18
28
|
if (!Number.isSafeInteger(tokenBudget) || tokenBudget < 0 || tokenBudget > 12000)
|
|
19
29
|
throw new TypeError('Token budget must be an integer from 0 to 12000.');
|
|
20
|
-
const
|
|
30
|
+
const local = resolveProjectStore(opts.project, opts.db);
|
|
31
|
+
const request = parseContextRequest({ projectId: opts.projectId ?? local?.projectId ?? GlobalBrain.projectIdFor(path.resolve(opts.project)),
|
|
32
|
+
query, tokenBudget, maxEntries: opts.maxEntries === undefined ? undefined : Number(opts.maxEntries),
|
|
33
|
+
includeCrossProject: !!opts.crossProject, profile: opts.profile, expandRelated: opts.related });
|
|
34
|
+
if (local && (request.projectId !== local.projectId || request.includeCrossProject)) {
|
|
35
|
+
throw new TypeError('This memory store is pinned to its local project.');
|
|
36
|
+
}
|
|
37
|
+
const dbPath = local?.storagePath ?? (opts.db ? path.resolve(opts.db) : undefined);
|
|
38
|
+
const brain = getGlobalBrain(dbPath ? { dbPath } : undefined);
|
|
39
|
+
const settings = new FeatureSettingsStore({ filePath: opts.settings ?? local?.settingsPath ?? (dbPath ? path.join(path.dirname(dbPath), 'feature-settings.json') : undefined) });
|
|
21
40
|
const features = settings.get().features;
|
|
22
|
-
const brain = getGlobalBrain(opts.db ? { dbPath: path.resolve(opts.db) } : undefined);
|
|
23
41
|
try {
|
|
24
42
|
if (features.contextAssembly)
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
43
|
+
brain.refresh();
|
|
44
|
+
const options = {
|
|
45
|
+
...request, features,
|
|
46
|
+
feedback: features.contextAssembly && local && request.profile === 'adaptive' ? new ProjectFeedbackStore(local.root, brain).get() : undefined,
|
|
47
|
+
annotations: features.contextAssembly ? memoryAnnotationsFor(brain).get() : undefined,
|
|
48
|
+
};
|
|
49
|
+
const pack = assembleContext(brain, local
|
|
50
|
+
? enforceProjectContext(local.root, brain, new ProjectPolicyStore(local.root, local.projectId).get(), options) : options);
|
|
30
51
|
if (opts.json)
|
|
31
52
|
console.log(JSON.stringify(pack, null, 2));
|
|
32
53
|
else {
|
|
@@ -39,6 +60,27 @@ export function registerContextCommands(program) {
|
|
|
39
60
|
await brain.shutdown();
|
|
40
61
|
}
|
|
41
62
|
});
|
|
63
|
+
program.command('memory-health').description('Inspect scoped source, review, duplication, age, and relationship attention hints without model calls')
|
|
64
|
+
.option('--project <directory>', 'Project directory', process.cwd())
|
|
65
|
+
.option('--project-id <id>', 'Use an existing memory project ID directly')
|
|
66
|
+
.option('--db <path>', 'Explicit memory-store path')
|
|
67
|
+
.option('--limit <number>', 'Maximum attention items, 1 to 100', '30')
|
|
68
|
+
.action(async (opts) => {
|
|
69
|
+
const local = resolveProjectStore(opts.project, opts.db);
|
|
70
|
+
if (local && opts.projectId && opts.projectId !== local.projectId)
|
|
71
|
+
throw new TypeError('This memory store is pinned to its local project.');
|
|
72
|
+
const dbPath = local?.storagePath ?? (opts.db ? path.resolve(opts.db) : undefined);
|
|
73
|
+
const brain = getGlobalBrain(dbPath ? { dbPath } : undefined);
|
|
74
|
+
try {
|
|
75
|
+
brain.refresh();
|
|
76
|
+
console.log(JSON.stringify(inspectMemoryHealth(brain, memoryAnnotationsFor(brain).get(), {
|
|
77
|
+
projectId: opts.projectId ?? local?.projectId ?? GlobalBrain.projectIdFor(path.resolve(opts.project)), limit: Number(opts.limit),
|
|
78
|
+
}), null, 2));
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
await brain.shutdown();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
42
84
|
const features = new Command('features').description('Inspect or change the dedicated runtime feature controls');
|
|
43
85
|
features.command('list').option('--settings <path>', 'Explicit feature-settings file').action((opts) => {
|
|
44
86
|
console.log(JSON.stringify({ ...new FeatureSettingsStore({ filePath: opts.settings }).get(), definitions: FEATURE_DEFINITIONS }, null, 2));
|
package/dist/context-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-cli.js","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"context-cli.js","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curation-cli.d.ts","sourceRoot":"","sources":["../src/curation-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsE/D"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { getGlobalBrain } from './brain/global-brain.js';
|
|
4
|
+
import { MemoryAnnotationsError, MemoryAnnotationsStore, memoryAnnotationsFor, memoryState, } from './brain/memory-annotations.js';
|
|
5
|
+
import { normalizeMemorySources } from './brain/memory-sources.js';
|
|
6
|
+
function scoped(command) {
|
|
7
|
+
return command
|
|
8
|
+
.requiredOption('--project-id <id>', 'Existing memory project ID')
|
|
9
|
+
.option('--db <path>', 'Explicit memory-store path')
|
|
10
|
+
.option('--annotations <path>', 'Explicit annotation-store path');
|
|
11
|
+
}
|
|
12
|
+
function change(command) {
|
|
13
|
+
return scoped(command).option('--revision <number>', 'Require this annotation revision before writing');
|
|
14
|
+
}
|
|
15
|
+
function expectedRevision(value) {
|
|
16
|
+
if (value === undefined)
|
|
17
|
+
return undefined;
|
|
18
|
+
if (!/^\d+$/.test(value) || !Number.isSafeInteger(Number(value))) {
|
|
19
|
+
throw new TypeError('Annotation revision must be a nonnegative integer.');
|
|
20
|
+
}
|
|
21
|
+
return Number(value);
|
|
22
|
+
}
|
|
23
|
+
function requireScope(projectId) {
|
|
24
|
+
if (!projectId.trim() || projectId !== projectId.trim())
|
|
25
|
+
throw new TypeError('Provide a nonempty project ID.');
|
|
26
|
+
}
|
|
27
|
+
async function runCuration(opts, perform) {
|
|
28
|
+
requireScope(opts.projectId);
|
|
29
|
+
const brain = getGlobalBrain(opts.db ? { dbPath: path.resolve(opts.db) } : undefined);
|
|
30
|
+
try {
|
|
31
|
+
await brain.init();
|
|
32
|
+
const store = opts.annotations
|
|
33
|
+
? new MemoryAnnotationsStore({ filePath: opts.annotations, resolveMemory: id => brain.getEntry(id) })
|
|
34
|
+
: memoryAnnotationsFor(brain);
|
|
35
|
+
console.log(JSON.stringify(await perform(brain, store), null, 2));
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
await brain.shutdown();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function isMemoryEvent(event, projectId, memoryId) {
|
|
42
|
+
if (event.projectId !== projectId)
|
|
43
|
+
return false;
|
|
44
|
+
return event.command.kind === 'review'
|
|
45
|
+
? event.command.memoryId === memoryId
|
|
46
|
+
: event.relation?.fromId === memoryId || event.relation?.toId === memoryId;
|
|
47
|
+
}
|
|
48
|
+
/** Register project-scoped curation commands without initializing local services. */
|
|
49
|
+
export function registerCurationCommands(program) {
|
|
50
|
+
const curate = new Command('curate').description('Review stored memories and record explicit project relations');
|
|
51
|
+
scoped(curate.command('show').description('Inspect one memory, its sources, and its review history'))
|
|
52
|
+
.argument('<memory-id>')
|
|
53
|
+
.action((id, opts) => runCuration(opts, (brain, store) => {
|
|
54
|
+
const memory = brain.getEntry(id);
|
|
55
|
+
if (!memory || memory.projectId !== opts.projectId) {
|
|
56
|
+
throw new MemoryAnnotationsError('ANNOTATIONS_NOT_FOUND', 'Memory was not found in the selected project.');
|
|
57
|
+
}
|
|
58
|
+
const { projectId, projectName, agentTool, category, content, createdAt, metadata } = memory;
|
|
59
|
+
const snapshot = store.get();
|
|
60
|
+
const review = snapshot.reviews[id];
|
|
61
|
+
const links = snapshot.links.filter(link => link.projectId === projectId && (link.fromId === id || link.toId === id))
|
|
62
|
+
.map(link => {
|
|
63
|
+
const otherId = link.fromId === id ? link.toId : link.fromId;
|
|
64
|
+
return { ...link, otherId, otherAvailable: brain.getEntry(otherId)?.projectId === projectId };
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
id, projectId, projectName, agentTool, category, content, createdAt,
|
|
68
|
+
sources: normalizeMemorySources(metadata),
|
|
69
|
+
state: memoryState(snapshot, projectId, id),
|
|
70
|
+
review: review?.projectId === projectId ? review : null,
|
|
71
|
+
links,
|
|
72
|
+
history: snapshot.history.filter(event => isMemoryEvent(event, projectId, id)),
|
|
73
|
+
revision: snapshot.revision,
|
|
74
|
+
};
|
|
75
|
+
}));
|
|
76
|
+
change(curate.command('review').description('Set a manual review state for a memory'))
|
|
77
|
+
.argument('<memory-id>')
|
|
78
|
+
.argument('<state>', 'active, archived, or contested')
|
|
79
|
+
.option('--note <text>', 'Optional review note')
|
|
80
|
+
.action((memoryId, state, opts) => {
|
|
81
|
+
const revision = expectedRevision(opts.revision);
|
|
82
|
+
return runCuration(opts, async (_brain, store) => {
|
|
83
|
+
const snapshot = await store.update({ kind: 'review', projectId: opts.projectId, memoryId, state, note: opts.note }, revision);
|
|
84
|
+
return {
|
|
85
|
+
memoryId, projectId: opts.projectId, revision: snapshot.revision, updatedAt: snapshot.updatedAt,
|
|
86
|
+
state: memoryState(snapshot, opts.projectId, memoryId), review: snapshot.reviews[memoryId],
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
change(curate.command('link').description('Record a relation between memories in one project'))
|
|
91
|
+
.argument('<from-id>')
|
|
92
|
+
.argument('<to-id>')
|
|
93
|
+
.argument('<type>', 'related, supports, contradicts, or supersedes')
|
|
94
|
+
.option('--note <text>', 'Optional relation note')
|
|
95
|
+
.action((fromId, toId, type, opts) => {
|
|
96
|
+
const revision = expectedRevision(opts.revision);
|
|
97
|
+
return runCuration(opts, async (_brain, store) => {
|
|
98
|
+
const snapshot = await store.update({ kind: 'link', projectId: opts.projectId, fromId, toId, type, note: opts.note }, revision);
|
|
99
|
+
return { projectId: opts.projectId, revision: snapshot.revision, updatedAt: snapshot.updatedAt,
|
|
100
|
+
link: snapshot.history[snapshot.history.length - 1].relation };
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
change(curate.command('unlink').description('Remove an explicit relation and retain its audit event'))
|
|
104
|
+
.argument('<link-id>')
|
|
105
|
+
.action((linkId, opts) => {
|
|
106
|
+
const revision = expectedRevision(opts.revision);
|
|
107
|
+
return runCuration(opts, async (_brain, store) => {
|
|
108
|
+
const before = store.get();
|
|
109
|
+
const link = before.links.find(item => item.id === linkId && item.projectId === opts.projectId);
|
|
110
|
+
if (!link)
|
|
111
|
+
throw new MemoryAnnotationsError('ANNOTATIONS_NOT_FOUND', 'Memory relation was not found in the selected project.');
|
|
112
|
+
const snapshot = await store.update({ kind: 'unlink', linkId }, revision ?? before.revision);
|
|
113
|
+
return { projectId: opts.projectId, revision: snapshot.revision, updatedAt: snapshot.updatedAt, linkId };
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
program.addCommand(curate);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=curation-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curation-cli.js","sourceRoot":"","sources":["../src/curation-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-actions.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-actions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,QAwO7B,CAAC"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
export const BRAIN_HUB_ACTIONS = String.raw `
|
|
2
|
+
async function roomWrite(input){
|
|
3
|
+
if(!state.room)throw new Error('Select a room first.');
|
|
4
|
+
state.room=await hubWrite('hub/rooms/'+encodeURIComponent(state.room.room.id)+'/actions',input);
|
|
5
|
+
}
|
|
6
|
+
async function lessonWrite(id,input){
|
|
7
|
+
const {lesson}=await hubWrite('hub/lessons/'+encodeURIComponent(id)+'/actions',input);
|
|
8
|
+
if(lesson)state.hub={...state.hub,lessons:arr(state.hub?.lessons).map(item=>item.id===id?lesson:item)};
|
|
9
|
+
return afterSave(refreshHub,...(input.kind!=='evaluate'?[refreshGraph]:[]));
|
|
10
|
+
}
|
|
11
|
+
async function inspectApprovedMemory(id){
|
|
12
|
+
state.graph=await api('graph'+projectQuery({limit:graphMemoryLimit,memory:id}));
|
|
13
|
+
openView('overview');
|
|
14
|
+
await chooseMemory('memory:'+id);
|
|
15
|
+
}
|
|
16
|
+
function handleClick(event){
|
|
17
|
+
const button=event.target.closest('button');
|
|
18
|
+
if(!button||button.disabled)return;
|
|
19
|
+
const data=button.dataset;
|
|
20
|
+
if(handleAgentDock(button))return;
|
|
21
|
+
if(data.policyTool){void mutation(()=>saveProjectPolicy({kind:'set-tool-participation',tool:data.policyTool,enabled:data.enabled==='true'}),button,'Tool participation saved.');return;}
|
|
22
|
+
if(data.policyChat){void mutation(()=>saveProjectPolicy({kind:'set-chat-sharing',sessionId:data.policyChat,shareContext:data.enabled==='true'}),button,'Conversation sharing saved.');return;}
|
|
23
|
+
if(data.view){openView(data.view);return;}
|
|
24
|
+
if(data.project){
|
|
25
|
+
if(!state.pending&&data.project!==state.project){state.project=data.project;resetScope();render();void refresh(true);}
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if(data.node){void chooseMemory(data.node);return;}
|
|
29
|
+
if(data.graphMemory){void focusGraphMemory(data.graphMemory,data.graphProject);return;}
|
|
30
|
+
if(data.graphFilter){filterGraph(data.graphFilter);return;}
|
|
31
|
+
if(data.inspect){state.inspector=data.inspect;renderInspector();$('inspector').querySelector('[data-inspect="'+data.inspect+'"]')?.focus({preventScroll:true});return;}
|
|
32
|
+
if(data.event){
|
|
33
|
+
setReplay(state.events.findIndex(item=>item.id===data.event));
|
|
34
|
+
const replacement=[...(button.closest('#graph-exchanges')?$('graph-exchanges'):button.closest('#timeline')?$('timeline'):button.closest('#trace-list')?$('trace-list'):$('inspector'))?.querySelectorAll('[data-event]')??[]]
|
|
35
|
+
.find(item=>item.dataset.event===data.event);
|
|
36
|
+
(replacement??$('inspector')?.querySelector('[data-inspect=event]'))?.focus({preventScroll:true});
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if(data.nativeThread){void mutation(async()=>{invalidateNativeRequest();state.nativeThreadCursor=null;state.nativeThread=await api('sessions/codex/threads/'+encodeURIComponent(data.nativeThread),{timeoutMs:15000});nativeTimer=setTimeout(()=>void refreshNativeChats(),10000);},button,'Original history page opened.');return;}
|
|
40
|
+
if(data.session){void mutation(async()=>{state.sessionBefore=null;state.sessionCheckpoint=null;state.session=await api('sessions/'+data.session);},button,'Conversation opened.');return;}
|
|
41
|
+
if(data.source){void mutation(async()=>{state.source=(await api('sources/'+encodeURIComponent(data.source))).source;},button,'Source opened.');return;}
|
|
42
|
+
if(data.document){void mutation(()=>loadDocuments(data.document),button,'Document opened.');return;}
|
|
43
|
+
if(data.page){state.docPage=Number(data.page);render();return;}
|
|
44
|
+
if(data.room){void mutation(()=>loadRoom(data.room),button,'Room opened.');return;}
|
|
45
|
+
if(data.feature){
|
|
46
|
+
if(!state.features||featureLimit(data.feature))return;
|
|
47
|
+
const feature=data.feature;
|
|
48
|
+
void mutation(async()=>{
|
|
49
|
+
state.features=await api('features',json({patch:{[feature]:!state.features.features[feature]},expectedRevision:state.features.revision}));
|
|
50
|
+
if(feature==='liveActivity'||feature==='activityRecording'){
|
|
51
|
+
if(!state.features.features.liveActivity){state.live=false;state.events=[];state.replayId=null;state.replayExpired=false;state.cursor=undefined;state.journalId=undefined;}
|
|
52
|
+
else state.live=true;
|
|
53
|
+
void refresh();
|
|
54
|
+
}
|
|
55
|
+
},button,'Feature setting saved.');return;
|
|
56
|
+
}
|
|
57
|
+
if(data.roomAction){
|
|
58
|
+
const kind=data.roomAction;
|
|
59
|
+
const payload=kind==='ack-message'||kind==='ack-artifact'?{kind:'ack',targetType:kind.slice(4),targetId:data.id,...(data.sha256?{sha256:data.sha256}:{})}:
|
|
60
|
+
kind==='accept'?{kind,artifactId:data.id}:{kind,taskId:data.id,revision:Number(data.revision)};
|
|
61
|
+
void mutation(()=>roomWrite(payload),button);return;
|
|
62
|
+
}
|
|
63
|
+
if(data.lessonAction){void mutation(()=>lessonWrite(data.id,{kind:data.lessonAction}),button);return;}
|
|
64
|
+
if(data.lessonFrom){state.lessonFrom=data.lessonFrom;openView('learning');return;}
|
|
65
|
+
if(!data.action)return;
|
|
66
|
+
if(data.action.startsWith('copy-')){
|
|
67
|
+
if(data.action==='copy-pack'&&local){
|
|
68
|
+
const pack=state.context;
|
|
69
|
+
if(!pack?.markdown)return;
|
|
70
|
+
void api('project-policy').then(result=>{
|
|
71
|
+
installPolicy(result);
|
|
72
|
+
if(state.context!==pack){render(true);status('Project controls changed. Build a fresh context pack.',true);return;}
|
|
73
|
+
return clipboard(pack.markdown);
|
|
74
|
+
}).catch(failure=>status(failure.message,true));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const host=arr(state.integrations?.agents).find(item=>item.id===data.host);
|
|
78
|
+
const current=displayEvent();
|
|
79
|
+
const checkpoint=arr(state.session?.checkpoints).find(item=>item.id===data.checkpoint);
|
|
80
|
+
const copies={
|
|
81
|
+
'copy-resume':checkpoint?JSON.stringify({tool:'session_resume',arguments:{sessionId:state.session.session.id,checkpointId:checkpoint.id,sha256:checkpoint.sha256,key:crypto.randomUUID()}},null,2):null,
|
|
82
|
+
'copy-host':host?.config?.content,'copy-command':host?.command,'copy-diagnostics':state.integrations?.diagnostics,
|
|
83
|
+
'copy-project-command':'shadow-brain project workspace .','copy-pack':state.context?.markdown,
|
|
84
|
+
'copy-memory':state.memory?.memory?.content??arr(state.graph?.nodes).find(node=>node.id===state.picked)?.snippet,
|
|
85
|
+
'copy-event':current?JSON.stringify(current,null,2):null,
|
|
86
|
+
};
|
|
87
|
+
void clipboard(copies[data.action]).catch(failure=>status(failure.message,true));return;
|
|
88
|
+
}
|
|
89
|
+
switch(data.action){
|
|
90
|
+
case 'managed-skill-preview':void mutation(async()=>{state.managedSkillPlan=await api('managed-skills/preview',json({id:data.id,action:data.kind}));},button,'Review the exact skill paths before applying.');break;
|
|
91
|
+
case 'managed-skill-cancel':state.managedSkillPlan=null;render(true);break;
|
|
92
|
+
case 'managed-skill-apply':void mutation(async()=>{const plan=state.managedSkillPlan;if(!plan||arr(plan.conflicts).length)return;
|
|
93
|
+
const result=await api('managed-skills/apply',json({id:plan.skill.id,action:plan.action,planHash:plan.planHash}));
|
|
94
|
+
state.managedSkillPlan=null;state.managedSkills=await api('managed-skills');delete state.errors.managedSkills;
|
|
95
|
+
return 'Managed skill '+result.finalState+'. '+result.hostRefreshNote;},button);break;
|
|
96
|
+
case 'download-example':{
|
|
97
|
+
const examples={
|
|
98
|
+
knowledge:{schemaVersion:1,kind:'knowledge',title:'Project notes',records:[{title:'Build command',content:'Run the build before release.',source:'README.md'}]},
|
|
99
|
+
transcript:{schemaVersion:1,kind:'transcript',title:'Review discussion',messages:[{role:'user',content:'Preserve Unicode.'},{role:'assistant',content:'The proposed constraint is to preserve Unicode.'}]},
|
|
100
|
+
simple:{messages:[{role:'user',content:'Preserve Unicode.'}]}
|
|
101
|
+
};
|
|
102
|
+
if(!Object.hasOwn(examples,data.example))break;
|
|
103
|
+
const url=URL.createObjectURL(new Blob([JSON.stringify(examples[data.example],null,2)+'\n'],{type:'application/json'}));
|
|
104
|
+
const link=document.createElement('a');link.href=url;link.download='shadow-brain-'+data.example+'-example.json';link.click();setTimeout(()=>URL.revokeObjectURL(url),1000);break;
|
|
105
|
+
}
|
|
106
|
+
case 'native-connect':void mutation(async()=>{invalidateNativeRequest();state.nativeConnection=await api('sessions/codex/connect',{...json({}),timeoutMs:30000});await refreshNativeChats(true);},button,'Read-only native connection opened.');break;
|
|
107
|
+
case 'native-disconnect':void mutation(async()=>{invalidateNativeRequest();nativeReload=false;state.nativeConnection=await api('sessions/codex/disconnect',json({}));state.nativeThreads=null;state.nativeThread=null;state.nativeListCursor=null;state.nativeThreadCursor=null;},button,'Native connection closed.');break;
|
|
108
|
+
case 'native-refresh':void refreshNativeChats(true);break;
|
|
109
|
+
case 'native-archive':invalidateNativeRequest();state.nativeArchived=!state.nativeArchived;state.nativeListCursor=null;state.nativeThreads=null;state.nativeThread=null;state.nativeThreadCursor=null;void refreshNativeChats(true);break;
|
|
110
|
+
case 'native-next':invalidateNativeRequest();state.nativeListCursor=data.cursor;state.nativeThread=null;state.nativeThreadCursor=null;void refreshNativeChats(true);break;
|
|
111
|
+
case 'native-first':invalidateNativeRequest();state.nativeListCursor=null;state.nativeThread=null;state.nativeThreadCursor=null;void refreshNativeChats(true);break;
|
|
112
|
+
case 'native-earlier':void mutation(async()=>{invalidateNativeRequest();state.nativeThreadCursor=data.cursor;state.nativeThread=await api('sessions/codex/threads/'+encodeURIComponent(state.nativeThread.thread.id)+'?cursor='+encodeURIComponent(data.cursor),{timeoutMs:15000});nativeTimer=setTimeout(()=>void refreshNativeChats(),10000);},button,'Earlier original history opened.');break;
|
|
113
|
+
case 'native-import':void mutation(async()=>{const result=await hubWrite('sessions/codex/threads/'+encodeURIComponent(state.nativeThread.thread.id)+'/import',{sha256:state.nativeThread.sha256,...(state.nativeThreadCursor?{cursor:state.nativeThreadCursor}:{})});state.session=result;state.sessionBefore=null;state.sessionCheckpoint=null;await refreshSessions();},button,'Original history page saved as a project snapshot.');break;
|
|
114
|
+
case 'session-checkpoint-open':void mutation(async()=>{state.sessionCheckpoint=(await api('sessions/'+state.session.session.id+'/checkpoints/'+data.checkpoint)).checkpoint;},button,'Checkpoint opened.');break;
|
|
115
|
+
case 'session-policy':state.policySelection=data.sessionPolicy;openView('setup');break;
|
|
116
|
+
case 'session-older':void mutation(async()=>{state.sessionBefore=data.before;await refreshSessions();},button,'Earlier messages loaded.');break;
|
|
117
|
+
case 'session-latest':void mutation(async()=>{state.sessionBefore=null;await refreshSessions();},button,'Latest messages loaded.');break;
|
|
118
|
+
case 'session-status':void mutation(async()=>{state.session=await hubWrite('sessions/'+state.session.session.id+'/actions',{kind:'status',status:data.status,expectedRevision:state.session.session.revision});await refreshSessions();},button,'Reported status saved.');break;
|
|
119
|
+
case 'session-resume':void mutation(async()=>{const cp=arr(state.session.checkpoints).find(item=>item.id===data.checkpoint);if(!cp)throw new Error('Choose a saved checkpoint.');state.sessionBefore=null;state.sessionCheckpoint=null;state.session=await hubWrite('sessions/'+state.session.session.id+'/resume',{checkpointId:cp.id,sha256:cp.sha256});await refreshSessions();},button,'New portal session created from this checkpoint.');break;
|
|
120
|
+
case 'import-session':void mutation(async()=>{if(!state.source)throw new Error('Choose a reviewed transcript.');state.session=await hubWrite('sessions/import',{sourceId:state.source.id});openView('sessions');await refreshSessions();},button,'Reviewed conversation snapshot opened.');break;
|
|
121
|
+
case 'source-evidence':void mutation(async()=>{state.evidence=await api('memory-evidence?'+new URLSearchParams({memoryId:data.memory}));if(state.view!=='knowledge')openView('knowledge');},button,'Source checked.');break;
|
|
122
|
+
case 'close-evidence':state.evidence=null;render(true);break;
|
|
123
|
+
case 'toggle-feedback':void mutation(async()=>{state.feedback=await api('project-feedback',json({kind:'toggle',enabled:!state.feedback.enabled,expectedRevision:state.feedback.revision}));},button,'Learning preference saved.');break;
|
|
124
|
+
case 'remove-feedback':void mutation(async()=>{state.feedback=await api('project-feedback',json({kind:'remove',id:data.feedback,expectedRevision:state.feedback.revision}));},button,'Feedback removed.');break;
|
|
125
|
+
case 'refresh':void refresh(true);break;
|
|
126
|
+
case 'refresh-room':void mutation(async()=>{await refreshHub();if(state.room)await loadRoom(state.room.room.id);},button,'Room refreshed.');break;
|
|
127
|
+
case 'graph':case 'trace':
|
|
128
|
+
state.graphMode=data.action;state.listing=false;state.pulseIds=[];render();$('main').querySelector('[data-action="'+data.action+'"]')?.focus();break;
|
|
129
|
+
case 'node-list':{
|
|
130
|
+
state.listing=!state.listing;button.setAttribute('aria-expanded',String(state.listing));
|
|
131
|
+
const target=$('node-list');target.hidden=!state.listing;syncGraphControls();drawGraph();if(state.listing)$('graph-search')?.focus();break;
|
|
132
|
+
}
|
|
133
|
+
case 'clear-graph-search':void findGraphMemories('');$('graph-search')?.focus();break;
|
|
134
|
+
case 'graph-zoom-in':if(button.getAttribute('aria-disabled')!=='true')zoomGraph(1);break;
|
|
135
|
+
case 'graph-zoom-out':if(button.getAttribute('aria-disabled')!=='true')zoomGraph(-1);break;
|
|
136
|
+
case 'graph-fit':zoomGraph('fit');break;
|
|
137
|
+
case 'clear-focus':state.focus=false;renderInspector();drawGraph();$('main').querySelector('[data-action=graph]')?.focus({preventScroll:true});break;
|
|
138
|
+
case 'pause':state.motionPaused=!state.motionPaused;state.pulseIds=[];updateOverviewLive();break;
|
|
139
|
+
case 'inspect-latest':state.inspector='event';renderInspector();break;
|
|
140
|
+
case 'live':state.replayId=null;state.replayExpired=false;renderChrome();updateOverviewLive();$('replay')?.focus({preventScroll:true});break;
|
|
141
|
+
case 'open-memory':void inspectApprovedMemory(data.memory).catch(failure=>status(failure.message,true));break;
|
|
142
|
+
case 'apply-skill':void mutation(async()=>{
|
|
143
|
+
if(!state.skill?.planHash||!state.skillInput)throw new Error('Preview a project skill before applying it.');
|
|
144
|
+
state.skill={...await api('project-skill-apply',json({...state.skillInput,expectedPlanHash:state.skill.planHash})),applied:true};
|
|
145
|
+
},button,'Reviewed project skill applied.');break;
|
|
146
|
+
case 'review-page':void mutation(async()=>{
|
|
147
|
+
const id=state.documents?.document?.id;
|
|
148
|
+
if(!id)throw new Error('Choose a document page first.');
|
|
149
|
+
state.documents=await hubWrite('hub/documents/'+encodeURIComponent(id)+'/review',{page:state.docPage,decision:data.decision});
|
|
150
|
+
return afterSave(refreshHub,refreshGraph);
|
|
151
|
+
},button,data.decision==='approve'?'Page approved and added to project memory.':'Page rejected.');break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function handleSubmit(event){
|
|
155
|
+
const target=event.target;
|
|
156
|
+
if(target.id==='graph-find-form'){
|
|
157
|
+
event.preventDefault();
|
|
158
|
+
void findGraphMemories(field(new FormData(target),'query'));return;
|
|
159
|
+
}
|
|
160
|
+
const kind=target.dataset.form;
|
|
161
|
+
if(!kind)return;
|
|
162
|
+
event.preventDefault();
|
|
163
|
+
const form=new FormData(target,event.submitter),button=event.submitter;
|
|
164
|
+
const tasks={
|
|
165
|
+
'policy-context':()=>saveProjectPolicy({kind:'set-context-limits',context:{maxTokens:Number(form.get('maxTokens')),maxEntries:Number(form.get('maxEntries'))}}),
|
|
166
|
+
'policy-role':()=>saveProjectPolicy({kind:'set-session-role',sessionId:target.dataset.id,role:field(form,'role')||null}),
|
|
167
|
+
'native-export':async()=>{const file=form.get('export');if(!(file instanceof File)||!file.size)throw new Error('Choose a native export.');if(file.size>2*1024*1024)throw new Error('Choose an export smaller than 2 MiB.');const query=new URLSearchParams({tool:field(form,'tool'),name:file.name,key:crypto.randomUUID()});state.session=await api('sessions/native?'+query,{method:'POST',body:file,headers:{'Content-Type':file.name.endsWith('.zip')?'application/zip':'application/octet-stream'},timeoutMs:15000});state.sessionBefore=null;state.sessionCheckpoint=null;await refreshSessions();},
|
|
168
|
+
'session-open':async()=>{state.sessionBefore=null;state.sessionCheckpoint=null;state.session=await hubWrite('sessions',{title:field(form,'title'),goal:field(form,'goal')});await refreshSessions();},
|
|
169
|
+
'session-note':async()=>{state.session=await hubWrite('sessions/'+state.session.session.id+'/actions',{kind:'message',role:'note',text:field(form,'text'),expectedRevision:state.session.session.revision});await refreshSessions();},
|
|
170
|
+
'session-checkpoint':async()=>{const input={kind:'checkpoint',summary:field(form,'summary'),expectedRevision:state.session.session.revision};for(const name of ['decisions','completed','nextSteps','evidence'])input[name]=field(form,name).split(/\r?\n/).map(item=>item.trim()).filter(Boolean);state.session=await hubWrite('sessions/'+state.session.session.id+'/actions',input);await refreshSessions();},
|
|
171
|
+
teach:async()=>{
|
|
172
|
+
state.teachDraft=field(form,'text');
|
|
173
|
+
const save=form.get('mode')==='save';
|
|
174
|
+
state.source=(await api(save?'sources/remember':'sources?name=My-notes.txt',{method:'POST',body:state.teachDraft,headers:{'Content-Type':'text/plain'},timeoutMs:30000})).source;
|
|
175
|
+
await afterSave(async()=>{state.sources=await api('sources');},...(save?[refreshGraph]:[]));
|
|
176
|
+
},
|
|
177
|
+
'source-upload':async()=>{
|
|
178
|
+
const file=form.get('source');if(!(file instanceof File)||!file.size)throw new Error('Choose a text, Markdown or JSON file.');
|
|
179
|
+
if(file.size>1024*1024)throw new Error('Choose a file smaller than 1 MiB.');
|
|
180
|
+
state.source=(await api('sources?'+new URLSearchParams({name:file.name}),{method:'POST',body:file,headers:{'Content-Type':file.name.toLowerCase().endsWith('.json')?'application/json':'text/plain'}})).source;
|
|
181
|
+
state.sources=await api('sources');
|
|
182
|
+
},
|
|
183
|
+
'source-review':async()=>{
|
|
184
|
+
if(!state.source)throw new Error('Choose a source first.');
|
|
185
|
+
const decision=field(form,'decision');
|
|
186
|
+
const input={itemId:target.dataset.item,decision,...(decision==='approve'?{title:field(form,'title'),text:field(form,'text'),category:field(form,'category')}: {})};
|
|
187
|
+
state.source=(await hubWrite('sources/'+state.source.id+'/review',input)).source;
|
|
188
|
+
return afterSave(async()=>{state.sources=await api('sources');},refreshGraph);
|
|
189
|
+
},
|
|
190
|
+
feedback:async()=>{
|
|
191
|
+
state.feedback=await api('project-feedback',json({kind:'upsert',memoryId:field(form,'memoryId'),task:field(form,'task'),rating:field(form,'rating'),reason:field(form,'reason'),expectedRevision:state.feedback.revision}));
|
|
192
|
+
},
|
|
193
|
+
context:async()=>{
|
|
194
|
+
const input={projectId:state.project,query:field(form,'query'),tokenBudget:Number(form.get('tokenBudget')),profile:field(form,'profile'),expandRelated:form.has('expandRelated')};
|
|
195
|
+
state.contextInput=input;
|
|
196
|
+
if(form.get('compare')==='yes'){state.comparison=await api('context-compare',json(input));state.context=state.comparison[input.profile];}
|
|
197
|
+
else {state.context=await api('context',json(input));state.comparison=null;}
|
|
198
|
+
},
|
|
199
|
+
upload:async()=>{
|
|
200
|
+
const pdf=form.get('pdf');
|
|
201
|
+
if(!(pdf instanceof File)||!pdf.size)throw new Error('Choose a PDF to upload.');
|
|
202
|
+
if(state.hub?.limits?.pdfBytes&&pdf.size>state.hub.limits.pdfBytes)throw new Error('The PDF exceeds this workspace’s upload limit.');
|
|
203
|
+
state.documents=await api('hub/documents?'+new URLSearchParams({name:pdf.name}),{method:'POST',body:pdf,headers:{'Content-Type':'application/pdf'},timeoutMs:30000});
|
|
204
|
+
state.docPage=arr(state.documents.pages)[0]?.page??1;
|
|
205
|
+
return afterSave(refreshHub);
|
|
206
|
+
},
|
|
207
|
+
knowledge:async()=>{
|
|
208
|
+
const input={title:field(form,'title'),content:field(form,'content')};
|
|
209
|
+
const source=field(form,'source');if(source)input.source=source;
|
|
210
|
+
await api('project-knowledge',json(input));return afterSave(refreshGraph);
|
|
211
|
+
},
|
|
212
|
+
skill:async()=>{
|
|
213
|
+
const input={requirement:field(form,'requirement'),target:field(form,'target')};
|
|
214
|
+
const name=field(form,'name'),knowledge=field(form,'knowledge');
|
|
215
|
+
if(name)input.name=name;if(knowledge)input.knowledge=knowledge;
|
|
216
|
+
state.skill=await api('project-skill-preview',json(input));state.skillInput=input;
|
|
217
|
+
},
|
|
218
|
+
room:async()=>{state.room=await hubWrite('hub/rooms',{goal:field(form,'goal')});return afterSave(refreshHub);},
|
|
219
|
+
message:async()=>{const replyTo=field(form,'replyTo');await roomWrite({kind:'message',type:field(form,'type'),text:field(form,'text'),...(replyTo?{replyTo}:{})});},
|
|
220
|
+
task:()=>roomWrite({kind:'task',title:field(form,'title')}),
|
|
221
|
+
artifact:async()=>{
|
|
222
|
+
const taskId=field(form,'taskId'),task=arr(state.room?.tasks).find(item=>item.id===taskId);
|
|
223
|
+
if(!task)throw new Error('Choose a claimed task.');
|
|
224
|
+
await roomWrite({kind:'artifact',taskId,revision:task.revision,path:field(form,'path')});
|
|
225
|
+
},
|
|
226
|
+
outcome:()=>{const artifactId=field(form,'artifactId');return roomWrite({kind:'outcome',taskId:field(form,'taskId'),result:field(form,'result'),check:field(form,'check'),evidence:field(form,'evidence'),...(artifactId?{artifactId}:{})});},
|
|
227
|
+
lesson:async()=>{const {lesson}=await hubWrite('hub/lessons',{outcomeId:field(form,'outcomeId'),title:field(form,'title'),text:field(form,'text')});if(lesson)state.hub={...state.hub,lessons:[...arr(state.hub?.lessons),lesson]};state.lessonFrom=null;return afterSave(refreshHub);},
|
|
228
|
+
evaluate:()=>lessonWrite(target.dataset.id,{kind:'evaluate',baseline:form.has('baseline'),candidate:form.has('candidate'),control:form.has('control'),evidence:field(form,'evidence')}),
|
|
229
|
+
};
|
|
230
|
+
const operation=tasks[kind];
|
|
231
|
+
if(operation)void mutation(operation,button,kind==='teach'?(form.get('mode')==='save'?'Added to project memory. Try a related question in Context.':'Notes organized. Review each part before saving.'):kind==='source-upload'?'Source ready for review.':kind==='source-review'?'Review saved.':kind==='upload'?'PDF intake recorded.':kind==='context'?'Context pack assembled.':'Saved.');
|
|
232
|
+
}
|
|
233
|
+
`;
|
|
234
|
+
//# sourceMappingURL=brain-hub-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-actions.js","sourceRoot":"","sources":["../../src/dashboard/brain-hub-actions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwO1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-agent-dock.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-agent-dock.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,QA4PhC,CAAC"}
|