@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
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
4
|
+
import { inspectProject } from './project-kit-inspection.js';
|
|
5
|
+
import { ensureProjectDirectory, projectLocalPath, projectRoot, ProjectKitError, readProjectFile } from './project-kit-paths.js';
|
|
6
|
+
import { WORKFLOW_TARGETS } from './workflow-skills.js';
|
|
7
|
+
import { matchesFileIdentity } from './file-identity.js';
|
|
8
|
+
export { inspectProject } from './project-kit-inspection.js';
|
|
9
|
+
export { ensureProjectDirectory, projectLocalPath, projectRoot, ProjectKitError } from './project-kit-paths.js';
|
|
10
|
+
const MAX_INPUT = 8000;
|
|
11
|
+
export const MAX_PROJECT_SKILL_BYTES = 64 * 1024;
|
|
12
|
+
export const PROJECT_SKILL_RECEIPT_DIR = '.shadow-brain/project-kit-skills';
|
|
13
|
+
const MAX_SKILL = MAX_PROJECT_SKILL_BYTES;
|
|
14
|
+
const RECEIPT_DIR = PROJECT_SKILL_RECEIPT_DIR;
|
|
15
|
+
const HASH_PATTERN = /^[a-f0-9]{64}$/u;
|
|
16
|
+
const NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
|
|
17
|
+
const RESERVED_NAME = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])$/iu;
|
|
18
|
+
const CONTROL = /[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/u;
|
|
19
|
+
function sha(value) {
|
|
20
|
+
return createHash('sha256').update(value).digest('hex');
|
|
21
|
+
}
|
|
22
|
+
function inputText(value, label) {
|
|
23
|
+
if (typeof value !== 'string' || value.length > MAX_INPUT || CONTROL.test(value)) {
|
|
24
|
+
throw new TypeError(label + ' must be text of at most 8000 characters without control codes.');
|
|
25
|
+
}
|
|
26
|
+
return value.replace(/\r\n?/g, '\n').trim();
|
|
27
|
+
}
|
|
28
|
+
function inputs(params, project) {
|
|
29
|
+
if (!params || typeof params !== 'object' || Array.isArray(params) ||
|
|
30
|
+
Object.keys(params).some(key => !['requirement', 'target', 'name', 'knowledge'].includes(key))) {
|
|
31
|
+
throw new TypeError('Provide a requirement, target, and optional name and knowledge.');
|
|
32
|
+
}
|
|
33
|
+
const requirement = inputText(params.requirement, 'Requirement');
|
|
34
|
+
if (!requirement)
|
|
35
|
+
throw new TypeError('Provide a nonempty requirement.');
|
|
36
|
+
if (typeof params.target !== 'string' || !Object.hasOwn(WORKFLOW_TARGETS, params.target))
|
|
37
|
+
throw new TypeError('Choose a supported skill target.');
|
|
38
|
+
const task = requirement.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 46).replace(/-$/g, '') || 'project-task';
|
|
39
|
+
const name = params.name ?? task + '-' + sha(project.projectId + '\0' + requirement).slice(0, 10);
|
|
40
|
+
if (typeof name !== 'string' || name.length > 63 || !NAME_PATTERN.test(name) || RESERVED_NAME.test(name)) {
|
|
41
|
+
throw new TypeError('Skill name must be 1 to 63 lowercase letters, digits, or hyphen-separated words.');
|
|
42
|
+
}
|
|
43
|
+
const raw = params.knowledge ?? '';
|
|
44
|
+
if (Array.isArray(raw) && raw.length > 100)
|
|
45
|
+
throw new TypeError('Provide at most 100 knowledge notes.');
|
|
46
|
+
const knowledge = Array.isArray(raw) ? raw.map(note => inputText(note, 'Knowledge')).filter(Boolean).join('\n\n') : inputText(raw, 'Knowledge');
|
|
47
|
+
if (knowledge.length > MAX_INPUT)
|
|
48
|
+
throw new TypeError('Combined knowledge must be at most 8000 characters.');
|
|
49
|
+
return { requirement, target: params.target, name, knowledge };
|
|
50
|
+
}
|
|
51
|
+
function quote(text) {
|
|
52
|
+
return text.split('\n').map(line => '> ' + line).join('\n');
|
|
53
|
+
}
|
|
54
|
+
function inline(value) {
|
|
55
|
+
return value.replace(/[\\`*_{}\[\]()<>#!|~]/g, '\\$&');
|
|
56
|
+
}
|
|
57
|
+
function renderSkill(profile, selected) {
|
|
58
|
+
const { requirement, name, knowledge } = selected;
|
|
59
|
+
const trigger = requirement.replace(/\s+/g, ' ').slice(0, 150);
|
|
60
|
+
const rows = [
|
|
61
|
+
'---',
|
|
62
|
+
'name: ' + JSON.stringify(name),
|
|
63
|
+
'description: ' + JSON.stringify('Use for this project task: ' + trigger),
|
|
64
|
+
'---',
|
|
65
|
+
'',
|
|
66
|
+
'# ' + name,
|
|
67
|
+
'',
|
|
68
|
+
'Use this skill within the selected project. Follow current user instructions and applicable project rules first. Recheck saved observations when the project changes.',
|
|
69
|
+
'',
|
|
70
|
+
'## Requirement supplied by the user',
|
|
71
|
+
'',
|
|
72
|
+
quote(requirement),
|
|
73
|
+
...(knowledge ? ['', '## Project knowledge supplied by the user', '', quote(knowledge)] : []),
|
|
74
|
+
'',
|
|
75
|
+
'## Observed project markers',
|
|
76
|
+
'',
|
|
77
|
+
...(profile.evidence.length ? profile.evidence.slice(0, 16).map(item => '- ' + inline(item.path) + ' indicates ' + item.signals.map(inline).join(', ') + '.') :
|
|
78
|
+
['- The bounded inspection found no recognized project markers. Confirm the stack before choosing a verification command.']),
|
|
79
|
+
'',
|
|
80
|
+
'## Work and verify',
|
|
81
|
+
'',
|
|
82
|
+
'1. Confirm the requested result, the affected project files, and any current constraints.',
|
|
83
|
+
'2. Use the supplied requirement and project knowledge as task context. Verify evidence before relying on it.',
|
|
84
|
+
'3. Make the requested change and inspect it through the normal project entry point.',
|
|
85
|
+
'4. Run the relevant declared checks after confirming they still apply and review the actual result.',
|
|
86
|
+
'',
|
|
87
|
+
...(profile.checks.length ? ['Declared checks observed in project manifests. Use each check from the directory containing its source.',
|
|
88
|
+
...profile.checks.slice(0, 12).map(item => '- ' + inline(item.label) + ' uses `' + item.command + '` from ' + inline(item.source) + '.')] :
|
|
89
|
+
['The bounded inspection found no recognized declared checks. Use the project’s current verification procedure.']),
|
|
90
|
+
'',
|
|
91
|
+
'If the project exposes `project_feedback`, report a memory ID and observed outcome only when a check or the user’s feedback supports the rating. Describe the evidence and uncertainty. Retrieval rank and successful tool execution alone do not establish a useful or correct memory.',
|
|
92
|
+
'',
|
|
93
|
+
'## Shared session handoffs',
|
|
94
|
+
'',
|
|
95
|
+
'For work the user wants shared, use `session_open` or call `session_resume` with the request copied from the project portal. Record meaningful milestones and a final checkpoint with `session_record`. Save verified progress, remaining steps, and evidence labels. Keep source material quoted and exclude unrelated chat text, credentials, and private reasoning.',
|
|
96
|
+
'',
|
|
97
|
+
];
|
|
98
|
+
return rows.join('\n');
|
|
99
|
+
}
|
|
100
|
+
function receiptPath(relative) {
|
|
101
|
+
return RECEIPT_DIR + '/' + sha(relative) + '.json';
|
|
102
|
+
}
|
|
103
|
+
function readReceipt(profile, relative) {
|
|
104
|
+
const bytes = readProjectFile(profile.root, receiptPath(relative), 4096);
|
|
105
|
+
if (!bytes)
|
|
106
|
+
return undefined;
|
|
107
|
+
try {
|
|
108
|
+
const receipt = JSON.parse(bytes.toString('utf8'));
|
|
109
|
+
if (receipt?.schemaVersion === 1 && receipt.projectId === profile.projectId && receipt.relativePath === relative && HASH_PATTERN.test(receipt.sha256)) {
|
|
110
|
+
return { receipt, bytes };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch { /* Invalid ownership data cannot establish ownership. */ }
|
|
114
|
+
throw new ProjectKitError('PROJECT_KIT_CONFLICT', 'The project skill ownership receipt is invalid.');
|
|
115
|
+
}
|
|
116
|
+
function destinationState(profile, relativePath, content) {
|
|
117
|
+
const file = { relativePath, content };
|
|
118
|
+
try {
|
|
119
|
+
const filename = projectLocalPath(profile.root, relativePath);
|
|
120
|
+
const existing = fs.lstatSync(filename, { throwIfNoEntry: false });
|
|
121
|
+
const ownership = readReceipt(profile, relativePath);
|
|
122
|
+
if (ownership && fs.lstatSync(projectLocalPath(profile.root, receiptPath(relativePath).replace(/\.json$/u, '.lifecycle.json')), { throwIfNoEntry: false })) {
|
|
123
|
+
return { ...file, status: 'conflict', reason: 'A managed skill lifecycle operation is pending. Review it in Setup before regenerating the skill.' };
|
|
124
|
+
}
|
|
125
|
+
if (!existing && !ownership)
|
|
126
|
+
return { ...file, status: 'create' };
|
|
127
|
+
if (!existing || !ownership) {
|
|
128
|
+
return { ...file, status: 'conflict', reason: existing ? 'An existing file is outside Project Kit ownership.' : 'The previously owned skill file is missing.' };
|
|
129
|
+
}
|
|
130
|
+
const bytes = readProjectFile(profile.root, relativePath, MAX_SKILL);
|
|
131
|
+
if (!bytes)
|
|
132
|
+
return { ...file, status: 'conflict', reason: 'The skill file changed during preview.' };
|
|
133
|
+
const existingHash = sha(bytes);
|
|
134
|
+
if (existingHash !== ownership.receipt.sha256)
|
|
135
|
+
return { ...file, existingHash, status: 'conflict', reason: 'The owned skill was edited after its last application.' };
|
|
136
|
+
return { ...file, existingHash, status: existingHash === sha(content) ? 'unchanged' : 'update' };
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (!(error instanceof ProjectKitError))
|
|
140
|
+
throw error;
|
|
141
|
+
return { ...file, status: 'conflict', reason: error.message };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/** Produce a read-only, root-bound preview. Existing unowned skill bytes are never read. */
|
|
145
|
+
export function planProjectSkill(root, params) {
|
|
146
|
+
const profile = inspectProject(root);
|
|
147
|
+
const selected = inputs(params, profile);
|
|
148
|
+
const relative = WORKFLOW_TARGETS[selected.target].skillRoot + '/' + selected.name + '/SKILL.md';
|
|
149
|
+
const content = renderSkill(profile, selected);
|
|
150
|
+
const file = destinationState(profile, relative, content);
|
|
151
|
+
const { projectId, root: projectDirectory, stack, packageManagers, evidence, checks } = profile;
|
|
152
|
+
const planHash = sha(JSON.stringify({ schemaVersion: 1, projectId, root: projectDirectory, stack, packageManagers, evidence, checks, ...selected, file }));
|
|
153
|
+
return { projectId: profile.projectId, profile, requirement: selected.requirement, target: selected.target,
|
|
154
|
+
name: selected.name, files: [file], planHash, warnings: [...profile.warnings] };
|
|
155
|
+
}
|
|
156
|
+
export function replaceProjectFile(root, relative, content, expectedHash) {
|
|
157
|
+
const filename = projectLocalPath(root, relative);
|
|
158
|
+
const temporary = filename + '.' + randomUUID() + '.tmp';
|
|
159
|
+
const fd = fs.openSync(temporary, 'wx', 0o600);
|
|
160
|
+
try {
|
|
161
|
+
try {
|
|
162
|
+
fs.writeFileSync(fd, content);
|
|
163
|
+
fs.fsyncSync(fd);
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
fs.closeSync(fd);
|
|
167
|
+
}
|
|
168
|
+
projectLocalPath(root, relative);
|
|
169
|
+
if (expectedHash) {
|
|
170
|
+
const before = readProjectFile(root, relative, MAX_SKILL);
|
|
171
|
+
if (!before || sha(before) !== expectedHash)
|
|
172
|
+
throw new ProjectKitError('PROJECT_KIT_STALE_PLAN', 'A managed file changed during application.');
|
|
173
|
+
fs.renameSync(temporary, filename);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Linking a prepared sibling creates the destination exclusively without clobbering an intervening file.
|
|
177
|
+
fs.linkSync(temporary, filename);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
finally {
|
|
181
|
+
try {
|
|
182
|
+
fs.unlinkSync(temporary);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error.code !== 'ENOENT')
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
function assertPlan(plan, expectedPlanHash) {
|
|
191
|
+
if (plan.files[0].status === 'conflict') {
|
|
192
|
+
throw new ProjectKitError('PROJECT_KIT_CONFLICT', plan.files[0].reason ?? 'The skill has a destination conflict.');
|
|
193
|
+
}
|
|
194
|
+
if (plan.planHash !== expectedPlanHash) {
|
|
195
|
+
throw new ProjectKitError('PROJECT_KIT_STALE_PLAN', 'The project skill preview changed. Create a new preview before applying.');
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/** Rebuild the reviewed preview under a project-local write lock, then save only its managed skill and receipt. */
|
|
199
|
+
export async function applyProjectSkill(root, params, expectedPlanHash) {
|
|
200
|
+
if (typeof expectedPlanHash !== 'string' || !HASH_PATTERN.test(expectedPlanHash))
|
|
201
|
+
throw new TypeError('A current project skill plan hash is required.');
|
|
202
|
+
const initial = planProjectSkill(root, params);
|
|
203
|
+
assertPlan(initial, expectedPlanHash);
|
|
204
|
+
const canonical = projectRoot(initial.profile.root);
|
|
205
|
+
const result = (status) => ({
|
|
206
|
+
projectId: initial.projectId, planHash: initial.planHash, files: [{ relativePath: initial.files[0].relativePath, status }], warnings: initial.warnings,
|
|
207
|
+
});
|
|
208
|
+
if (initial.files[0].status === 'unchanged')
|
|
209
|
+
return result('unchanged');
|
|
210
|
+
return withProjectSkillWriteLock(canonical, () => {
|
|
211
|
+
const plan = planProjectSkill(canonical, params);
|
|
212
|
+
assertPlan(plan, expectedPlanHash);
|
|
213
|
+
const file = plan.files[0];
|
|
214
|
+
ensureProjectDirectory(canonical, path.posix.dirname(file.relativePath));
|
|
215
|
+
const prior = file.existingHash ? readProjectFile(canonical, file.relativePath, MAX_SKILL) : undefined;
|
|
216
|
+
const receipt = readReceipt(plan.profile, file.relativePath);
|
|
217
|
+
if (file.existingHash !== receipt?.receipt.sha256) {
|
|
218
|
+
throw new ProjectKitError('PROJECT_KIT_STALE_PLAN', 'The project skill ownership changed during application.');
|
|
219
|
+
}
|
|
220
|
+
const newHash = sha(file.content);
|
|
221
|
+
const next = { schemaVersion: 1, projectId: plan.projectId, relativePath: file.relativePath, sha256: newHash };
|
|
222
|
+
try {
|
|
223
|
+
replaceProjectFile(canonical, file.relativePath, file.content, file.existingHash);
|
|
224
|
+
try {
|
|
225
|
+
replaceProjectFile(canonical, receiptPath(file.relativePath), JSON.stringify(next) + '\n', receipt ? sha(receipt.bytes) : undefined);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
const written = readProjectFile(canonical, file.relativePath, MAX_SKILL);
|
|
229
|
+
if (written && sha(written) === newHash) {
|
|
230
|
+
if (prior)
|
|
231
|
+
replaceProjectFile(canonical, file.relativePath, prior, newHash);
|
|
232
|
+
else
|
|
233
|
+
fs.unlinkSync(projectLocalPath(canonical, file.relativePath));
|
|
234
|
+
}
|
|
235
|
+
throw error;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
if (error instanceof ProjectKitError)
|
|
240
|
+
throw error;
|
|
241
|
+
throw new ProjectKitError('PROJECT_KIT_WRITE_FAILED', 'Could not save the project skill and ownership receipt.');
|
|
242
|
+
}
|
|
243
|
+
return result(file.status === 'create' ? 'created' : 'updated');
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
export function withProjectSkillWriteLock(canonical, mutate) {
|
|
247
|
+
const lockDirectory = ensureProjectDirectory(canonical, RECEIPT_DIR);
|
|
248
|
+
const lock = path.join(lockDirectory, 'write.lock');
|
|
249
|
+
let fd;
|
|
250
|
+
try {
|
|
251
|
+
fd = fs.openSync(lock, 'wx', 0o600);
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
if (error.code !== 'EEXIST')
|
|
255
|
+
throw new ProjectKitError('PROJECT_KIT_WRITE_FAILED', 'Could not acquire the project skill write lock.');
|
|
256
|
+
if (!clearAbandonedSkillLock(lock))
|
|
257
|
+
throw new ProjectKitError('PROJECT_KIT_CONFLICT', 'Another Project Kit write is in progress.');
|
|
258
|
+
try {
|
|
259
|
+
fd = fs.openSync(lock, 'wx', 0o600);
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
throw new ProjectKitError('PROJECT_KIT_CONFLICT', 'Project Kit could not reacquire the interrupted write lock. Retry.');
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
const owner = fs.fstatSync(fd, { bigint: true });
|
|
266
|
+
try {
|
|
267
|
+
fs.writeFileSync(fd, JSON.stringify({ kind: 'project-kit-lock', pid: process.pid }));
|
|
268
|
+
fs.fsyncSync(fd);
|
|
269
|
+
return mutate();
|
|
270
|
+
}
|
|
271
|
+
finally {
|
|
272
|
+
fs.closeSync(fd);
|
|
273
|
+
const current = fs.lstatSync(lock, { throwIfNoEntry: false, bigint: true });
|
|
274
|
+
if (matchesFileIdentity(lock, owner, current))
|
|
275
|
+
fs.unlinkSync(lock);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function clearAbandonedSkillLock(filename) {
|
|
279
|
+
let fd;
|
|
280
|
+
try {
|
|
281
|
+
const before = fs.lstatSync(filename, { bigint: true, throwIfNoEntry: false });
|
|
282
|
+
if (!before?.isFile() || before.isSymbolicLink() || before.nlink !== 1n || before.size > 128n)
|
|
283
|
+
return false;
|
|
284
|
+
fd = fs.openSync(filename, fs.constants.O_RDONLY | (fs.constants.O_NOFOLLOW ?? 0));
|
|
285
|
+
const owner = fs.fstatSync(fd, { bigint: true });
|
|
286
|
+
if (!matchesFileIdentity(filename, owner, before))
|
|
287
|
+
return false;
|
|
288
|
+
const bytes = Buffer.alloc(129);
|
|
289
|
+
const count = fs.readSync(fd, bytes, 0, bytes.length, 0);
|
|
290
|
+
if (BigInt(count) !== owner.size)
|
|
291
|
+
return false;
|
|
292
|
+
const value = JSON.parse(bytes.subarray(0, count).toString('utf8'));
|
|
293
|
+
if (value?.kind !== 'project-kit-lock' || !Number.isSafeInteger(value.pid) || value.pid < 1 || value.pid > 0x7fffffff)
|
|
294
|
+
return false;
|
|
295
|
+
try {
|
|
296
|
+
process.kill(value.pid, 0);
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
if (error.code !== 'ESRCH')
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
fs.closeSync(fd);
|
|
304
|
+
fd = undefined;
|
|
305
|
+
const current = fs.lstatSync(filename, { bigint: true, throwIfNoEntry: false });
|
|
306
|
+
if (!matchesFileIdentity(filename, owner, current))
|
|
307
|
+
return false;
|
|
308
|
+
fs.unlinkSync(filename);
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
finally {
|
|
315
|
+
if (fd !== undefined)
|
|
316
|
+
fs.closeSync(fd);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
//# sourceMappingURL=project-kit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-kit.js","sourceRoot":"","sources":["../../src/brain/project-kit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { GlobalBrain } from './global-brain.js';
|
|
2
|
+
export interface ProjectKnowledgeInput {
|
|
3
|
+
title: string;
|
|
4
|
+
content: string;
|
|
5
|
+
category?: string;
|
|
6
|
+
source?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Explicit project-local paths only; never consults the default global store. */
|
|
9
|
+
export declare function projectStorage(directory: string): {
|
|
10
|
+
root: string;
|
|
11
|
+
projectId: string;
|
|
12
|
+
projectName: string;
|
|
13
|
+
storagePath: string;
|
|
14
|
+
settingsPath: string;
|
|
15
|
+
annotationsPath: string;
|
|
16
|
+
journalPath: string;
|
|
17
|
+
feedbackPath: string;
|
|
18
|
+
};
|
|
19
|
+
/** Identify an explicit project store even when Windows launch paths use different spellings. */
|
|
20
|
+
export declare function resolveProjectStore(directory: string, dbPath: string | undefined): ReturnType<typeof projectStorage> | undefined;
|
|
21
|
+
export declare function requireProjectStore(directory: string, brain: GlobalBrain): {
|
|
22
|
+
root: string;
|
|
23
|
+
projectId: string;
|
|
24
|
+
projectName: string;
|
|
25
|
+
storagePath: string;
|
|
26
|
+
settingsPath: string;
|
|
27
|
+
annotationsPath: string;
|
|
28
|
+
journalPath: string;
|
|
29
|
+
feedbackPath: string;
|
|
30
|
+
};
|
|
31
|
+
export declare function parseProjectKnowledge(input: unknown): ProjectKnowledgeInput;
|
|
32
|
+
/** Only explicit user knowledge. Source references are labels and are never opened. */
|
|
33
|
+
export declare function addProjectKnowledge(directory: string, brain: GlobalBrain, input: unknown): Promise<{
|
|
34
|
+
ok: true;
|
|
35
|
+
memoryId: string;
|
|
36
|
+
projectId: string;
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=project-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-memory.d.ts","sourceRoot":"","sources":["../../src/brain/project-memory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,WAAW,qBAAqB;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AAE7G,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM;;;;;;;;;EAY/C;AAED,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,GAAG,SAAS,CAWhI;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;;;;;;;;;EAIxE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAY3E;AAED,uFAAuF;AACvF,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO;;;;GAY9F"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import { GlobalBrain } from './global-brain.js';
|
|
4
|
+
import { projectRoot, projectLocalPath } from './project-kit.js';
|
|
5
|
+
/** Explicit project-local paths only; never consults the default global store. */
|
|
6
|
+
export function projectStorage(directory) {
|
|
7
|
+
const root = projectRoot(directory);
|
|
8
|
+
const storagePath = projectLocalPath(root, '.shadow-brain/project-memory.json');
|
|
9
|
+
const settingsPath = projectLocalPath(root, '.shadow-brain/feature-settings.json');
|
|
10
|
+
const annotationsPath = projectLocalPath(root, '.shadow-brain/memory-annotations.json');
|
|
11
|
+
const journalPath = projectLocalPath(root, '.shadow-brain/activity-journal.json');
|
|
12
|
+
const feedbackPath = projectLocalPath(root, '.shadow-brain/memory-feedback.json');
|
|
13
|
+
for (const filename of [storagePath, settingsPath, annotationsPath, journalPath, feedbackPath]) {
|
|
14
|
+
const stat = fs.lstatSync(filename, { throwIfNoEntry: false });
|
|
15
|
+
if (stat && (!stat.isFile() || stat.nlink !== 1))
|
|
16
|
+
throw new Error('Project storage paths must be ordinary unlinked files.');
|
|
17
|
+
}
|
|
18
|
+
return { root, projectId: GlobalBrain.projectIdFor(root), projectName: path.basename(root), storagePath, settingsPath, annotationsPath, journalPath, feedbackPath };
|
|
19
|
+
}
|
|
20
|
+
/** Identify an explicit project store even when Windows launch paths use different spellings. */
|
|
21
|
+
export function resolveProjectStore(directory, dbPath) {
|
|
22
|
+
if (!dbPath)
|
|
23
|
+
return undefined;
|
|
24
|
+
const absolute = path.resolve(dbPath);
|
|
25
|
+
const parent = path.dirname(absolute);
|
|
26
|
+
if (path.relative(path.join(parent, 'project-memory.json'), absolute) ||
|
|
27
|
+
path.relative(path.join(path.dirname(parent), '.shadow-brain'), parent))
|
|
28
|
+
return undefined;
|
|
29
|
+
// Validate the supplied project ancestor before using its canonical spelling. The store and its directory can be absent.
|
|
30
|
+
const requestedRoot = projectRoot(path.dirname(parent));
|
|
31
|
+
const local = projectStorage(directory);
|
|
32
|
+
if (path.relative(local.root, requestedRoot))
|
|
33
|
+
throw new TypeError('The explicit project store must belong to the selected project.');
|
|
34
|
+
return local;
|
|
35
|
+
}
|
|
36
|
+
export function requireProjectStore(directory, brain) {
|
|
37
|
+
const store = projectStorage(directory);
|
|
38
|
+
if (path.resolve(brain.dbPath) !== store.storagePath)
|
|
39
|
+
throw new Error('Project Kit requires its project-local store. Start shadow-brain project workspace in this project, or use its generated MCP recipe.');
|
|
40
|
+
return store;
|
|
41
|
+
}
|
|
42
|
+
export function parseProjectKnowledge(input) {
|
|
43
|
+
if (!input || typeof input !== 'object' || Array.isArray(input))
|
|
44
|
+
throw new TypeError('Knowledge must be an object.');
|
|
45
|
+
const value = input;
|
|
46
|
+
if (Object.keys(value).some(key => !['title', 'content', 'category', 'source'].includes(key)))
|
|
47
|
+
throw new TypeError('Unknown knowledge field.');
|
|
48
|
+
const title = value.title;
|
|
49
|
+
const content = value.content;
|
|
50
|
+
if (typeof title !== 'string' || !title.trim() || title.length > 160 || /[\u0000-\u001f\u007f]/.test(title))
|
|
51
|
+
throw new TypeError('Use a single-line title from 1 to 160 characters.');
|
|
52
|
+
if (typeof content !== 'string' || !content.trim() || content.length > 8000 || content.includes('\0'))
|
|
53
|
+
throw new TypeError('Knowledge content must contain 1 to 8000 characters without null bytes.');
|
|
54
|
+
if (value.category !== undefined && (typeof value.category !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9 _.-]{0,63}$/.test(value.category.trim())))
|
|
55
|
+
throw new TypeError('Use a category from 1 to 64 plain characters.');
|
|
56
|
+
if (value.source !== undefined && (typeof value.source !== 'string' || value.source.length > 500 || /[\u0000-\u001f\u007f]/.test(value.source)))
|
|
57
|
+
throw new TypeError('A source reference must be at most 500 characters without control characters.');
|
|
58
|
+
return { title: title.trim(), content, ...(value.category ? { category: value.category.trim() } : {}),
|
|
59
|
+
...(value.source && value.source.trim() ? { source: value.source.trim() } : {}) };
|
|
60
|
+
}
|
|
61
|
+
/** Only explicit user knowledge. Source references are labels and are never opened. */
|
|
62
|
+
export async function addProjectKnowledge(directory, brain, input) {
|
|
63
|
+
const knowledge = parseProjectKnowledge(input);
|
|
64
|
+
const store = requireProjectStore(directory, brain);
|
|
65
|
+
await brain.init();
|
|
66
|
+
brain.refresh();
|
|
67
|
+
if (brain.getStorageHealth().lastError)
|
|
68
|
+
throw new Error('Project memory could not be read; no knowledge was added.');
|
|
69
|
+
const memoryId = brain.writeSync({ projectId: store.projectId, projectName: store.projectName,
|
|
70
|
+
agentTool: 'user', category: knowledge.category ?? 'knowledge', content: knowledge.title + '\n' + knowledge.content,
|
|
71
|
+
importance: 0.7, metadata: { origin: 'project-kit-user', inputKind: 'explicit-knowledge', title: knowledge.title,
|
|
72
|
+
...(knowledge.source ? { sources: [knowledge.source] } : {}) } });
|
|
73
|
+
await brain.sync();
|
|
74
|
+
return { ok: true, memoryId, projectId: store.projectId };
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=project-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-memory.js","sourceRoot":"","sources":["../../src/brain/project-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GlobalBrain } from './global-brain.js';
|
|
2
|
+
import type { ContextAssemblyOptions } from './context-assembly.js';
|
|
3
|
+
import type { MemoryAnnotationSnapshot } from './memory-annotations.js';
|
|
4
|
+
import { type ProjectPolicy } from './project-policy.js';
|
|
5
|
+
export declare function hiddenProjectMemories(root: string, brain: GlobalBrain, projectId: string, policy: ProjectPolicy): ReadonlySet<string>;
|
|
6
|
+
export declare function withoutHiddenAnnotations(annotations: MemoryAnnotationSnapshot, hidden: ReadonlySet<string>): MemoryAnnotationSnapshot;
|
|
7
|
+
export declare function enforceProjectContext(root: string, brain: GlobalBrain, policy: ProjectPolicy, options: ContextAssemblyOptions): ContextAssemblyOptions;
|
|
8
|
+
//# sourceMappingURL=project-policy-delivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-policy-delivery.d.ts","sourceRoot":"","sources":["../../src/brain/project-policy-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAAuD,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE9G,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAiBrI;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,wBAAwB,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,wBAAwB,CAMrI;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,GAAG,sBAAsB,CAKtJ"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ProjectSessions } from './project-sessions.js';
|
|
2
|
+
import { disabledChatKeys, hiddenChatSessions, nativeChatKey } from './project-policy.js';
|
|
3
|
+
export function hiddenProjectMemories(root, brain, projectId, policy) {
|
|
4
|
+
const keys = disabledChatKeys(policy);
|
|
5
|
+
if (!keys.size)
|
|
6
|
+
return new Set();
|
|
7
|
+
const sessions = new ProjectSessions(root, brain).list().sessions;
|
|
8
|
+
const hiddenSessions = hiddenChatSessions(policy, sessions);
|
|
9
|
+
const hidden = new Set();
|
|
10
|
+
for (const memory of brain.contextEntries({ projectId })) {
|
|
11
|
+
const meta = brain.getEntry(memory.id)?.metadata;
|
|
12
|
+
if (!meta)
|
|
13
|
+
continue;
|
|
14
|
+
const source = typeof meta.sourceId === 'string' && keys.has('source:' + meta.sourceId);
|
|
15
|
+
const session = [meta.originSessionId, meta.sessionId].some(value => typeof value === 'string' &&
|
|
16
|
+
(keys.has('session:' + value) || hiddenSessions.has(value)));
|
|
17
|
+
const native = typeof meta.nativeTool === 'string' && typeof meta.nativeSessionId === 'string' &&
|
|
18
|
+
keys.has(nativeChatKey(meta.nativeTool, meta.nativeSessionId));
|
|
19
|
+
if (source || session || native)
|
|
20
|
+
hidden.add(memory.id);
|
|
21
|
+
}
|
|
22
|
+
return hidden;
|
|
23
|
+
}
|
|
24
|
+
export function withoutHiddenAnnotations(annotations, hidden) {
|
|
25
|
+
if (!hidden.size)
|
|
26
|
+
return annotations;
|
|
27
|
+
return { ...annotations,
|
|
28
|
+
reviews: Object.fromEntries(Object.entries(annotations.reviews).filter(([id]) => !hidden.has(id))),
|
|
29
|
+
links: annotations.links.filter(link => !hidden.has(link.fromId) && !hidden.has(link.toId)),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function enforceProjectContext(root, brain, policy, options) {
|
|
33
|
+
const hidden = options.features?.contextAssembly === false ? new Set() : hiddenProjectMemories(root, brain, options.projectId, policy);
|
|
34
|
+
return { ...options, tokenBudget: Math.min(options.tokenBudget ?? 2000, policy.context.maxTokens),
|
|
35
|
+
maxEntries: Math.min(options.maxEntries ?? 12, policy.context.maxEntries), includeCrossProject: false,
|
|
36
|
+
excludeIds: hidden, policy: { revision: policy.revision, ...policy.context, hiddenMemories: hidden.size } };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=project-policy-delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-policy-delivery.js","sourceRoot":"","sources":["../../src/brain/project-policy-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { SessionRecord } from './project-session-contract.js';
|
|
3
|
+
export declare const PROJECT_CONTEXT_LIMITS: Readonly<{
|
|
4
|
+
maxTokens: 12000;
|
|
5
|
+
maxEntries: 30;
|
|
6
|
+
}>;
|
|
7
|
+
declare const role: z.ZodEnum<{
|
|
8
|
+
lead: "lead";
|
|
9
|
+
worker: "worker";
|
|
10
|
+
observer: "observer";
|
|
11
|
+
}>;
|
|
12
|
+
declare const policy: z.ZodObject<{
|
|
13
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
14
|
+
projectId: z.ZodString;
|
|
15
|
+
revision: z.ZodNumber;
|
|
16
|
+
updatedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
17
|
+
context: z.ZodObject<{
|
|
18
|
+
maxTokens: z.ZodNumber;
|
|
19
|
+
maxEntries: z.ZodNumber;
|
|
20
|
+
}, z.core.$strict>;
|
|
21
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
22
|
+
tool: z.ZodString;
|
|
23
|
+
enabled: z.ZodBoolean;
|
|
24
|
+
}, z.core.$strict>>;
|
|
25
|
+
chats: z.ZodArray<z.ZodObject<{
|
|
26
|
+
key: z.ZodString;
|
|
27
|
+
shareContext: z.ZodBoolean;
|
|
28
|
+
}, z.core.$strict>>;
|
|
29
|
+
roles: z.ZodArray<z.ZodObject<{
|
|
30
|
+
sessionId: z.ZodString;
|
|
31
|
+
role: z.ZodEnum<{
|
|
32
|
+
lead: "lead";
|
|
33
|
+
worker: "worker";
|
|
34
|
+
observer: "observer";
|
|
35
|
+
}>;
|
|
36
|
+
}, z.core.$strict>>;
|
|
37
|
+
}, z.core.$strict>;
|
|
38
|
+
export declare const projectPolicyCommand: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
39
|
+
kind: z.ZodLiteral<"set-context-limits">;
|
|
40
|
+
context: z.ZodObject<{
|
|
41
|
+
maxTokens: z.ZodNumber;
|
|
42
|
+
maxEntries: z.ZodNumber;
|
|
43
|
+
}, z.core.$strict>;
|
|
44
|
+
expectedRevision: z.ZodNumber;
|
|
45
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
46
|
+
kind: z.ZodLiteral<"set-tool-participation">;
|
|
47
|
+
tool: z.ZodString;
|
|
48
|
+
enabled: z.ZodBoolean;
|
|
49
|
+
expectedRevision: z.ZodNumber;
|
|
50
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
51
|
+
kind: z.ZodLiteral<"set-chat-sharing">;
|
|
52
|
+
sessionId: z.ZodString;
|
|
53
|
+
shareContext: z.ZodBoolean;
|
|
54
|
+
expectedRevision: z.ZodNumber;
|
|
55
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
56
|
+
kind: z.ZodLiteral<"set-session-role">;
|
|
57
|
+
sessionId: z.ZodString;
|
|
58
|
+
role: z.ZodNullable<z.ZodEnum<{
|
|
59
|
+
lead: "lead";
|
|
60
|
+
worker: "worker";
|
|
61
|
+
observer: "observer";
|
|
62
|
+
}>>;
|
|
63
|
+
expectedRevision: z.ZodNumber;
|
|
64
|
+
}, z.core.$strict>], "kind">;
|
|
65
|
+
export type ProjectPolicy = z.infer<typeof policy>;
|
|
66
|
+
export type ProjectPolicyCommand = z.infer<typeof projectPolicyCommand>;
|
|
67
|
+
export type ProjectSessionRole = z.infer<typeof role>;
|
|
68
|
+
export declare class ProjectPolicyError extends Error {
|
|
69
|
+
readonly code: string;
|
|
70
|
+
readonly status: number;
|
|
71
|
+
constructor(code: string, message: string, status: number);
|
|
72
|
+
}
|
|
73
|
+
export declare const toolPolicyLabel: (tool: string) => string;
|
|
74
|
+
export declare function toolParticipates(snapshot: ProjectPolicy, tool: string): boolean;
|
|
75
|
+
export declare function nativeChatKey(tool: string, sessionId: string): string;
|
|
76
|
+
type SessionIdentity = Pick<SessionRecord, 'id' | 'native' | 'sourceId' | 'resumedFrom' | 'parentSessionId'>;
|
|
77
|
+
export declare function projectChatKey(session: SessionIdentity): string;
|
|
78
|
+
export declare function disabledChatKeys(snapshot: ProjectPolicy): Set<string>;
|
|
79
|
+
export declare function hiddenChatSessions(snapshot: ProjectPolicy, sessions: readonly SessionIdentity[]): Set<string>;
|
|
80
|
+
export declare class ProjectPolicyStore {
|
|
81
|
+
private readonly root;
|
|
82
|
+
private readonly projectId;
|
|
83
|
+
constructor(root: string, projectId: string);
|
|
84
|
+
get(): ProjectPolicy;
|
|
85
|
+
update(input: ProjectPolicyCommand, session?: SessionIdentity): Promise<ProjectPolicy>;
|
|
86
|
+
}
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=project-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-policy.d.ts","sourceRoot":"","sources":["../../src/brain/project-policy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AASnE,eAAO,MAAM,sBAAsB;;;EAAuD,CAAC;AAK3F,QAAA,MAAM,IAAI;;;;EAAyC,CAAC;AAGpD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;kBAMV,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;4BAK/B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACxE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACtD,qBAAa,kBAAmB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAmB,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAtD,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM;CAC5E;AA8BD,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,WAA8B,CAAC;AAC3E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/E;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAErE;AACD,KAAK,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,iBAAiB,CAAC,CAAC;AAC7G,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAI/D;AACD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAErE;AACD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAa7G;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAU,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAxC,IAAI,EAAE,MAAM,EAAmB,SAAS,EAAE,MAAM;IAE7E,GAAG,IAAI,aAAa;IAoCd,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;CAgE7F"}
|