@monoes/monomindcli 2.9.22 → 2.9.23
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/.claude/agents/consensus/quorum-manager.md +35 -54
- package/.claude/agents/core/coordinator.md +14 -18
- package/.claude/agents/core/researcher.md +1 -1
- package/.claude/agents/github/issue-tracker.md +3 -3
- package/.claude/agents/github/{code-review-swarm.md → monoswarm-code-review.md} +1 -1
- package/.claude/agents/github/{swarm-issue.md → monoswarm-issue.md} +1 -1
- package/.claude/agents/github/{multi-repo-swarm.md → monoswarm-multi-repo.md} +1 -1
- package/.claude/agents/github/{swarm-pr.md → monoswarm-pr.md} +1 -1
- package/.claude/agents/github/pr-manager.md +1 -1
- package/.claude/agents/github/release-manager.md +1 -1
- package/.claude/agents/github/repo-architect.md +1 -1
- package/.claude/agents/github/sync-coordinator.md +4 -4
- package/.claude/agents/{hive-mind → monoswarm}/collective-intelligence-coordinator.md +9 -16
- package/.claude/agents/{swarm → monoswarm}/mesh-coordinator.md +19 -24
- package/.claude/agents/{hive-mind/swarm-memory-manager.md → monoswarm/monoswarm-memory-manager.md} +1 -1
- package/.claude/agents/templates/{coordinator-swarm-init.md → coordinator-monoswarm-init.md} +1 -1
- package/.claude/agents/testing/{tdd-london-swarm.md → tdd-london-monoswarm.md} +2 -2
- package/.claude/commands/agents/agent-coordination.md +3 -3
- package/.claude/commands/agents/agent-types.md +1 -1
- package/.claude/commands/automation/self-healing.md +1 -1
- package/.claude/commands/automation/smart-spawn.md +1 -1
- package/.claude/commands/coordination/README.md +1 -1
- package/.claude/commands/coordination/{swarm-init.md → monoswarm-init.md} +2 -2
- package/.claude/commands/coordination/task-orchestrate.md +4 -4
- package/.claude/commands/github/README.md +1 -1
- package/.claude/commands/github/issue-tracker.md +2 -2
- package/.claude/commands/github/pr-manager.md +1 -1
- package/.claude/commands/github/release-manager.md +1 -1
- package/.claude/commands/github/repo-architect.md +1 -1
- package/.claude/commands/github/sync-coordinator.md +2 -2
- package/.claude/commands/hooks/README.md +1 -2
- package/.claude/commands/hooks/overview.md +1 -2
- package/.claude/commands/hooks/setup.md +0 -3
- package/.claude/commands/mastermind/createtask.md +2 -2
- package/.claude/commands/mastermind/do.md +3 -3
- package/.claude/commands/mastermind/help.md +2 -2
- package/.claude/commands/mastermind/ideate.md +1 -1
- package/.claude/commands/mastermind/improve.md +1 -1
- package/.claude/commands/mastermind/memory.md +2 -2
- package/.claude/commands/mastermind/{swarm.md → monoswarm.md} +13 -26
- package/.claude/commands/mastermind/topology.md +1 -1
- package/.claude/commands/memory/README.md +2 -2
- package/.claude/commands/memory/memory-search.md +1 -1
- package/.claude/commands/monoswarm/README.md +59 -0
- package/.claude/commands/monoswarm/consensus.md +61 -0
- package/.claude/commands/monoswarm/init.md +68 -0
- package/.claude/commands/monoswarm/memory.md +55 -0
- package/.claude/commands/monoswarm/monoswarm.md +139 -0
- package/.claude/commands/{swarm → monoswarm}/research.md +2 -2
- package/.claude/commands/monoswarm/spawn.md +49 -0
- package/.claude/commands/monoswarm/status.md +48 -0
- package/.claude/commands/monoswarm/stop.md +46 -0
- package/.claude/commands/optimization/auto-topology.md +9 -9
- package/.claude/commands/stream-chain/run.md +1 -1
- package/.claude/commands/workflows/development.md +1 -1
- package/.claude/commands/workflows/research.md +2 -2
- package/.claude/helpers/audit-log-writer.cjs +72 -0
- package/.claude/helpers/control-start.cjs +84 -26
- package/.claude/helpers/handlers/agent-start-handler.cjs +5 -5
- package/.claude/helpers/handlers/gates-handler.cjs +31 -10
- package/.claude/helpers/handlers/session-restore-handler.cjs +1 -1
- package/.claude/helpers/handlers/task-handler.cjs +4 -4
- package/.claude/helpers/skill-registry.json +4718 -3669
- package/.claude/helpers/statusline.cjs +21 -21
- package/.claude/helpers/token-tracker.cjs +0 -6
- package/.claude/settings.json +2 -3
- package/.claude/skills/hooks-automation/SKILL.md +5 -5
- package/.claude/skills/mastermind-protocol/SKILL.md +3 -3
- package/.claude/skills/memory-toolkit/SKILL.md +2 -2
- package/.claude/skills/{swarm-orchestration → monoswarm}/SKILL.md +106 -42
- package/.claude/skills/specialagent/SKILL.md +1 -1
- package/README.md +31 -12
- package/dist/src/autopilot-state.d.ts +0 -16
- package/dist/src/autopilot-state.d.ts.map +1 -1
- package/dist/src/autopilot-state.js +0 -15
- package/dist/src/autopilot-state.js.map +1 -1
- package/dist/src/browser/dashboard/server.js +3 -3
- package/dist/src/browser/dashboard/server.js.map +1 -1
- package/dist/src/browser/dashboard/ui.html +2 -2
- package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
- package/dist/src/capabilities/cap-documents.js +49 -38
- package/dist/src/capabilities/cap-documents.js.map +1 -1
- package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
- package/dist/src/commands/agent-lifecycle.js +4 -9
- package/dist/src/commands/agent-lifecycle.js.map +1 -1
- package/dist/src/commands/agent-ops.d.ts.map +1 -1
- package/dist/src/commands/agent-ops.js +37 -24
- package/dist/src/commands/agent-ops.js.map +1 -1
- package/dist/src/commands/analyze-ast.d.ts +1 -1
- package/dist/src/commands/analyze-ast.d.ts.map +1 -1
- package/dist/src/commands/analyze-ast.js +8 -27
- package/dist/src/commands/analyze-ast.js.map +1 -1
- package/dist/src/commands/analyze-imports.d.ts.map +1 -1
- package/dist/src/commands/analyze-imports.js +18 -17
- package/dist/src/commands/analyze-imports.js.map +1 -1
- package/dist/src/commands/analyze-symbols.d.ts.map +1 -1
- package/dist/src/commands/analyze-symbols.js +10 -24
- package/dist/src/commands/analyze-symbols.js.map +1 -1
- package/dist/src/commands/analyze.d.ts +19 -6
- package/dist/src/commands/analyze.d.ts.map +1 -1
- package/dist/src/commands/analyze.js +61 -15
- package/dist/src/commands/analyze.js.map +1 -1
- package/dist/src/commands/autopilot.d.ts.map +1 -1
- package/dist/src/commands/autopilot.js +4 -89
- package/dist/src/commands/autopilot.js.map +1 -1
- package/dist/src/commands/browse.d.ts +1 -1
- package/dist/src/commands/cleanup.d.ts.map +1 -1
- package/dist/src/commands/cleanup.js +4 -2
- package/dist/src/commands/cleanup.js.map +1 -1
- package/dist/src/commands/completions.d.ts.map +1 -1
- package/dist/src/commands/completions.js +0 -1
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/config.js +7 -7
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/doctor-project-checks.d.ts +7 -0
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +37 -5
- package/dist/src/commands/doctor-project-checks.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +9 -3
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/hooks-routing-commands.d.ts +1 -2
- package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -1
- package/dist/src/commands/hooks-routing-commands.js +1 -101
- package/dist/src/commands/hooks-routing-commands.js.map +1 -1
- package/dist/src/commands/hooks-workers.d.ts.map +1 -1
- package/dist/src/commands/hooks-workers.js +19 -71
- package/dist/src/commands/hooks-workers.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +4 -7
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +1 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +2 -2
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init-subcommands.d.ts.map +1 -1
- package/dist/src/commands/init-subcommands.js +4 -0
- package/dist/src/commands/init-subcommands.js.map +1 -1
- package/dist/src/commands/init-wizard.d.ts.map +1 -1
- package/dist/src/commands/init-wizard.js +0 -8
- package/dist/src/commands/init-wizard.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +53 -23
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/mcp.d.ts +1 -0
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +111 -60
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory-crud.d.ts.map +1 -1
- package/dist/src/commands/memory-crud.js +33 -20
- package/dist/src/commands/memory-crud.js.map +1 -1
- package/dist/src/commands/monoswarm.d.ts +8 -0
- package/dist/src/commands/monoswarm.d.ts.map +1 -0
- package/dist/src/commands/{swarm.js → monoswarm.js} +83 -297
- package/dist/src/commands/monoswarm.js.map +1 -0
- package/dist/src/commands/neural-core.d.ts.map +1 -1
- package/dist/src/commands/neural-core.js +9 -1
- package/dist/src/commands/neural-core.js.map +1 -1
- package/dist/src/commands/neural-optimize.d.ts.map +1 -1
- package/dist/src/commands/neural-optimize.js +30 -110
- package/dist/src/commands/neural-optimize.js.map +1 -1
- package/dist/src/commands/neural-registry.d.ts +1 -2
- package/dist/src/commands/neural-registry.d.ts.map +1 -1
- package/dist/src/commands/neural-registry.js +21 -168
- package/dist/src/commands/neural-registry.js.map +1 -1
- package/dist/src/commands/org-observe.d.ts +13 -3
- package/dist/src/commands/org-observe.d.ts.map +1 -1
- package/dist/src/commands/org-observe.js +134 -45
- package/dist/src/commands/org-observe.js.map +1 -1
- package/dist/src/commands/org.d.ts +14 -0
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +98 -20
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/commands/performance.d.ts.map +1 -1
- package/dist/src/commands/performance.js +38 -31
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/security-misc.d.ts.map +1 -1
- package/dist/src/commands/security-misc.js +220 -90
- package/dist/src/commands/security-misc.js.map +1 -1
- package/dist/src/commands/security-scan.d.ts +13 -0
- package/dist/src/commands/security-scan.d.ts.map +1 -1
- package/dist/src/commands/security-scan.js +96 -27
- package/dist/src/commands/security-scan.js.map +1 -1
- package/dist/src/commands/security.js +1 -1
- package/dist/src/commands/security.js.map +1 -1
- package/dist/src/commands/start.d.ts.map +1 -1
- package/dist/src/commands/start.js +17 -96
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +72 -64
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/tokens.d.ts.map +1 -1
- package/dist/src/commands/tokens.js +4 -5
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/consensus/audit-writer.d.ts +2 -2
- package/dist/src/consensus/audit-writer.d.ts.map +1 -1
- package/dist/src/consensus/audit-writer.js +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -10
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +32 -31
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/codex-generator.d.ts +10 -0
- package/dist/src/init/codex-generator.d.ts.map +1 -0
- package/dist/src/init/codex-generator.js +67 -0
- package/dist/src/init/codex-generator.js.map +1 -0
- package/dist/src/init/copy-assets.d.ts.map +1 -1
- package/dist/src/init/copy-assets.js +4 -8
- package/dist/src/init/copy-assets.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +9 -2
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.js +1 -1
- package/dist/src/init/index.d.ts +1 -0
- package/dist/src/init/index.d.ts.map +1 -1
- package/dist/src/init/index.js +1 -0
- package/dist/src/init/index.js.map +1 -1
- package/dist/src/init/opencode-generator.js +2 -2
- package/dist/src/init/opencode-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +1 -2
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/shared.d.ts.map +1 -1
- package/dist/src/init/shared.js +3 -7
- package/dist/src/init/shared.js.map +1 -1
- package/dist/src/init/statusline-generator.js +19 -19
- package/dist/src/init/types.d.ts +9 -10
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +8 -6
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/init/upgrade.js +5 -5
- package/dist/src/init/upgrade.js.map +1 -1
- package/dist/src/init/write-capabilities.d.ts.map +1 -1
- package/dist/src/init/write-capabilities.js +36 -49
- package/dist/src/init/write-capabilities.js.map +1 -1
- package/dist/src/init/write-claude.js +1 -1
- package/dist/src/init/write-claude.js.map +1 -1
- package/dist/src/init/write-codex.d.ts +4 -0
- package/dist/src/init/write-codex.d.ts.map +1 -0
- package/dist/src/init/write-codex.js +57 -0
- package/dist/src/init/write-codex.js.map +1 -0
- package/dist/src/init/write-runtime-config.d.ts.map +1 -1
- package/dist/src/init/write-runtime-config.js +4 -5
- package/dist/src/init/write-runtime-config.js.map +1 -1
- package/dist/src/knowledge/eval/golden-set.js +15 -15
- package/dist/src/knowledge/eval/golden-set.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +1 -2
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.js +1 -1
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +3 -3
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/autopilot-tools.d.ts +1 -1
- package/dist/src/mcp-tools/autopilot-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/autopilot-tools.js +4 -62
- package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.js +21 -31
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.d.ts +0 -1
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.js +56 -103
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.d.ts +1 -2
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +78 -152
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +2 -4
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +1 -2
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +1 -2
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +10 -10
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/query-tools.js +9 -9
- package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -1
- package/dist/src/mcp-tools/monoswarm-tools.d.ts +17 -0
- package/dist/src/mcp-tools/monoswarm-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monoswarm-tools.js +1153 -0
- package/dist/src/mcp-tools/monoswarm-tools.js.map +1 -0
- package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +32 -25
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +30 -13
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts +8 -12
- package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +9 -13
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/memory/embedding-operations.d.ts.map +1 -1
- package/dist/src/memory/embedding-operations.js +0 -37
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/hnsw-operations.d.ts +14 -74
- package/dist/src/memory/hnsw-operations.d.ts.map +1 -1
- package/dist/src/memory/hnsw-operations.js +22 -262
- package/dist/src/memory/hnsw-operations.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts +2 -2
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +8 -7
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +24 -24
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +33 -34
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-crud.d.ts.map +1 -1
- package/dist/src/memory/memory-crud.js +0 -20
- package/dist/src/memory/memory-crud.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +2 -3
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +2 -3
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-read.d.ts.map +1 -1
- package/dist/src/memory/memory-read.js +5 -14
- package/dist/src/memory/memory-read.js.map +1 -1
- package/dist/src/memory/sona-optimizer.d.ts +1 -1
- package/dist/src/memory/sona-optimizer.js +1 -1
- package/dist/src/monovector/model-outcomes.d.ts +25 -0
- package/dist/src/monovector/model-outcomes.d.ts.map +1 -0
- package/dist/src/monovector/model-outcomes.js +113 -0
- package/dist/src/monovector/model-outcomes.js.map +1 -0
- package/dist/src/orgrt/agent-runner.d.ts +8 -2
- package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
- package/dist/src/orgrt/agent-runner.js.map +1 -1
- package/dist/src/orgrt/antigravity-runner.d.ts +25 -2
- package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
- package/dist/src/orgrt/antigravity-runner.js +265 -124
- package/dist/src/orgrt/antigravity-runner.js.map +1 -1
- package/dist/src/orgrt/approvals.d.ts.map +1 -1
- package/dist/src/orgrt/approvals.js +8 -0
- package/dist/src/orgrt/approvals.js.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.d.ts +10 -16
- package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.js +12 -18
- package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
- package/dist/src/orgrt/checkpoint.d.ts +12 -1
- package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint.js +19 -3
- package/dist/src/orgrt/checkpoint.js.map +1 -1
- package/dist/src/orgrt/codex-runner.d.ts +26 -2
- package/dist/src/orgrt/codex-runner.d.ts.map +1 -1
- package/dist/src/orgrt/codex-runner.js +359 -128
- package/dist/src/orgrt/codex-runner.js.map +1 -1
- package/dist/src/orgrt/copilot-runner.d.ts.map +1 -1
- package/dist/src/orgrt/copilot-runner.js +12 -2
- package/dist/src/orgrt/copilot-runner.js.map +1 -1
- package/dist/src/orgrt/cross-org.d.ts.map +1 -1
- package/dist/src/orgrt/cross-org.js +11 -0
- package/dist/src/orgrt/cross-org.js.map +1 -1
- package/dist/src/orgrt/crush-runner.d.ts +4 -1
- package/dist/src/orgrt/crush-runner.d.ts.map +1 -1
- package/dist/src/orgrt/crush-runner.js +42 -30
- package/dist/src/orgrt/crush-runner.js.map +1 -1
- package/dist/src/orgrt/daemon.d.ts +38 -25
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +150 -28
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/decisions.d.ts +1 -0
- package/dist/src/orgrt/decisions.d.ts.map +1 -1
- package/dist/src/orgrt/decisions.js +20 -0
- package/dist/src/orgrt/decisions.js.map +1 -1
- package/dist/src/orgrt/grok-runner.d.ts.map +1 -1
- package/dist/src/orgrt/grok-runner.js +39 -14
- package/dist/src/orgrt/grok-runner.js.map +1 -1
- package/dist/src/orgrt/kimicode-runner.d.ts +53 -7
- package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/kimicode-runner.js +246 -144
- package/dist/src/orgrt/kimicode-runner.js.map +1 -1
- package/dist/src/orgrt/mailbox.d.ts +26 -1
- package/dist/src/orgrt/mailbox.d.ts.map +1 -1
- package/dist/src/orgrt/mailbox.js +74 -2
- package/dist/src/orgrt/mailbox.js.map +1 -1
- package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -1
- package/dist/src/orgrt/pi-rpc-runner.js +76 -91
- package/dist/src/orgrt/pi-rpc-runner.js.map +1 -1
- package/dist/src/orgrt/policy.d.ts +11 -0
- package/dist/src/orgrt/policy.d.ts.map +1 -1
- package/dist/src/orgrt/policy.js +25 -2
- package/dist/src/orgrt/policy.js.map +1 -1
- package/dist/src/orgrt/provider.d.ts +29 -1
- package/dist/src/orgrt/provider.d.ts.map +1 -1
- package/dist/src/orgrt/provider.js +62 -2
- package/dist/src/orgrt/provider.js.map +1 -1
- package/dist/src/orgrt/qwen-rpc-runner.d.ts +56 -0
- package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -0
- package/dist/src/orgrt/qwen-rpc-runner.js +346 -0
- package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -0
- package/dist/src/orgrt/qwen-runner.d.ts.map +1 -1
- package/dist/src/orgrt/qwen-runner.js +11 -8
- package/dist/src/orgrt/qwen-runner.js.map +1 -1
- package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
- package/dist/src/orgrt/scheduler-integration.js +7 -0
- package/dist/src/orgrt/scheduler-integration.js.map +1 -1
- package/dist/src/orgrt/session.d.ts +29 -1
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +87 -18
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/task-dag.d.ts +29 -1
- package/dist/src/orgrt/task-dag.d.ts.map +1 -1
- package/dist/src/orgrt/task-dag.js +54 -0
- package/dist/src/orgrt/task-dag.js.map +1 -1
- package/dist/src/orgrt/test-loop.d.ts.map +1 -1
- package/dist/src/orgrt/test-loop.js +86 -9
- package/dist/src/orgrt/test-loop.js.map +1 -1
- package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
- package/dist/src/orgrt/tool-fence.js +15 -0
- package/dist/src/orgrt/tool-fence.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +32 -1
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +47 -4
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/pricing/model-pricing.d.ts.map +1 -1
- package/dist/src/pricing/model-pricing.js +0 -4
- package/dist/src/pricing/model-pricing.js.map +1 -1
- package/dist/src/security/audit-log.d.ts +47 -0
- package/dist/src/security/audit-log.d.ts.map +1 -0
- package/dist/src/security/audit-log.js +84 -0
- package/dist/src/security/audit-log.js.map +1 -0
- package/dist/src/services/config-file-manager.d.ts +2 -2
- package/dist/src/services/config-file-manager.d.ts.map +1 -1
- package/dist/src/services/config-file-manager.js +6 -7
- package/dist/src/services/config-file-manager.js.map +1 -1
- package/dist/src/suggest.d.ts.map +1 -1
- package/dist/src/suggest.js +4 -5
- package/dist/src/suggest.js.map +1 -1
- package/dist/src/transfer/anonymization/index.d.ts +1 -1
- package/dist/src/transfer/anonymization/index.js +1 -1
- package/dist/src/types.d.ts +3 -3
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/ui/collector.mjs +9 -13
- package/dist/src/ui/dashboard.html +30 -10
- package/dist/src/ui/data/agent-avatars.html +0 -12
- package/dist/src/ui/data/agent-avatars.json +10 -26
- package/dist/src/ui/routes-org.mjs +59 -16
- package/dist/src/ui/server.mjs +50 -23
- package/dist/src/utils/json-file.d.ts +12 -0
- package/dist/src/utils/json-file.d.ts.map +1 -1
- package/dist/src/utils/json-file.js +11 -0
- package/dist/src/utils/json-file.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/.claude/agents/consensus/crdt-synchronizer.md +0 -977
- package/.claude/commands/hive-mind/README.md +0 -42
- package/.claude/commands/hive-mind/hive-mind-consensus.md +0 -72
- package/.claude/commands/hive-mind/hive-mind-init.md +0 -68
- package/.claude/commands/hive-mind/hive-mind-memory.md +0 -73
- package/.claude/commands/hive-mind/hive-mind-spawn.md +0 -82
- package/.claude/commands/hive-mind/hive-mind-status.md +0 -56
- package/.claude/commands/hive-mind/hive-mind-stop.md +0 -55
- package/.claude/commands/hive-mind/hive-mind.md +0 -87
- package/.claude/commands/swarm/README.md +0 -40
- package/.claude/commands/swarm/swarm.md +0 -79
- package/.claude/skills/hive-mind-advanced/SKILL.md +0 -347
- package/.claude/skills/swarm-advanced/SKILL.md +0 -936
- package/dist/src/commands/swarm.d.ts +0 -8
- package/dist/src/commands/swarm.d.ts.map +0 -1
- package/dist/src/commands/swarm.js.map +0 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -17
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +0 -1239
- package/dist/src/mcp-tools/hive-mind-tools.js.map +0 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts +0 -9
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +0 -1
- package/dist/src/mcp-tools/swarm-tools.js +0 -411
- package/dist/src/mcp-tools/swarm-tools.js.map +0 -1
- package/dist/src/ui/data/avatars/crdt-synchronizer.svg +0 -53
- package/dist/src/ui/data/avatars/gossip-coordinator.svg +0 -54
- package/scripts/deploy-ipfs-node.sh +0 -153
- package/scripts/setup-ipfs-registry.md +0 -365
- /package/.claude/agents/{hive-mind → monoswarm}/scout-explorer.md +0 -0
- /package/.claude/agents/{hive-mind → monoswarm}/worker-specialist.md +0 -0
- /package/.claude/commands/{swarm → monoswarm}/analysis.md +0 -0
- /package/.claude/commands/{swarm → monoswarm}/development.md +0 -0
- /package/.claude/commands/{swarm → monoswarm}/examples.md +0 -0
- /package/.claude/commands/{swarm → monoswarm}/maintenance.md +0 -0
- /package/.claude/commands/{swarm → monoswarm}/optimization.md +0 -0
- /package/.claude/commands/{swarm → monoswarm}/testing.md +0 -0
- /package/dist/src/ui/data/avatars/{code-review-swarm.svg → monoswarm-code-review.svg} +0 -0
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
{
|
|
102
102
|
"id": "hierarchical-coord",
|
|
103
103
|
"label": "Hierarchical Coord.",
|
|
104
|
-
"category": "
|
|
104
|
+
"category": "monoswarm",
|
|
105
105
|
"icon": "🏛️",
|
|
106
106
|
"file": "avatars/hierarchical-coord.svg",
|
|
107
107
|
"index": 12
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
{
|
|
110
110
|
"id": "mesh-coordinator",
|
|
111
111
|
"label": "Mesh Coordinator",
|
|
112
|
-
"category": "
|
|
112
|
+
"category": "monoswarm",
|
|
113
113
|
"icon": "🕸️",
|
|
114
114
|
"file": "avatars/mesh-coordinator.svg",
|
|
115
115
|
"index": 13
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
{
|
|
118
118
|
"id": "adaptive-coordinator",
|
|
119
119
|
"label": "Adaptive Coordinator",
|
|
120
|
-
"category": "
|
|
120
|
+
"category": "monoswarm",
|
|
121
121
|
"icon": "🔄",
|
|
122
122
|
"file": "avatars/adaptive-coordinator.svg",
|
|
123
123
|
"index": 14
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
{
|
|
126
126
|
"id": "collective-coord",
|
|
127
127
|
"label": "Collective Intel.",
|
|
128
|
-
"category": "
|
|
128
|
+
"category": "monoswarm",
|
|
129
129
|
"icon": "🧠",
|
|
130
130
|
"file": "avatars/collective-coord.svg",
|
|
131
131
|
"index": 15
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
{
|
|
134
134
|
"id": "queen-coordinator",
|
|
135
135
|
"label": "Queen Coordinator",
|
|
136
|
-
"category": "
|
|
136
|
+
"category": "monoswarm",
|
|
137
137
|
"icon": "👑",
|
|
138
138
|
"file": "avatars/queen-coordinator.svg",
|
|
139
139
|
"index": 16
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
{
|
|
142
142
|
"id": "worker-specialist",
|
|
143
143
|
"label": "Worker Specialist",
|
|
144
|
-
"category": "
|
|
144
|
+
"category": "monoswarm",
|
|
145
145
|
"icon": "⚙️",
|
|
146
146
|
"file": "avatars/worker-specialist.svg",
|
|
147
147
|
"index": 17
|
|
@@ -162,22 +162,6 @@
|
|
|
162
162
|
"file": "avatars/raft-manager.svg",
|
|
163
163
|
"index": 19
|
|
164
164
|
},
|
|
165
|
-
{
|
|
166
|
-
"id": "gossip-coordinator",
|
|
167
|
-
"label": "Gossip Coordinator",
|
|
168
|
-
"category": "consensus",
|
|
169
|
-
"icon": "💬",
|
|
170
|
-
"file": "avatars/gossip-coordinator.svg",
|
|
171
|
-
"index": 20
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
"id": "crdt-synchronizer",
|
|
175
|
-
"label": "CRDT Synchronizer",
|
|
176
|
-
"category": "consensus",
|
|
177
|
-
"icon": "🔗",
|
|
178
|
-
"file": "avatars/crdt-synchronizer.svg",
|
|
179
|
-
"index": 21
|
|
180
|
-
},
|
|
181
165
|
{
|
|
182
166
|
"id": "quorum-manager",
|
|
183
167
|
"label": "Quorum Manager",
|
|
@@ -251,11 +235,11 @@
|
|
|
251
235
|
"index": 30
|
|
252
236
|
},
|
|
253
237
|
{
|
|
254
|
-
"id": "code-review
|
|
255
|
-
"label": "Code Review
|
|
238
|
+
"id": "monoswarm-code-review",
|
|
239
|
+
"label": "Monoswarm Code Review",
|
|
256
240
|
"category": "github",
|
|
257
241
|
"icon": "👁️",
|
|
258
|
-
"file": "avatars/code-review
|
|
242
|
+
"file": "avatars/monoswarm-code-review.svg",
|
|
259
243
|
"index": 31
|
|
260
244
|
},
|
|
261
245
|
{
|
|
@@ -949,7 +933,7 @@
|
|
|
949
933
|
{
|
|
950
934
|
"id": "scout-explorer",
|
|
951
935
|
"label": "Scout Explorer",
|
|
952
|
-
"category": "
|
|
936
|
+
"category": "monoswarm",
|
|
953
937
|
"icon": "🧭",
|
|
954
938
|
"file": "avatars/scout-explorer.svg",
|
|
955
939
|
"index": 118
|
|
@@ -230,8 +230,11 @@ if (req.method === 'GET' && /^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/activity$/i.
|
|
|
230
230
|
if (cfg) {
|
|
231
231
|
const createdMs = cfg.created_at ? Date.parse(cfg.created_at) : null;
|
|
232
232
|
if (createdMs) events.push({ type: 'org:create', ts: createdMs, msg: String(cfg.goal || 'Org created').slice(0, 80) });
|
|
233
|
-
|
|
234
|
-
|
|
233
|
+
// Roles are defined atomically at org creation — there is no per-role
|
|
234
|
+
// timestamp in the config, so every role:defined event uses the org's
|
|
235
|
+
// real created_at instead of a fabricated per-index offset.
|
|
236
|
+
(cfg.roles || []).forEach((r) => {
|
|
237
|
+
events.push({ type: 'role:defined', ts: createdMs, role: r.title || r.id, msg: r.agent_type || '' });
|
|
235
238
|
});
|
|
236
239
|
}
|
|
237
240
|
const goals = readJ(path.join(orgsDir, `${orgName}-goals.json`));
|
|
@@ -308,10 +311,30 @@ if (req.method === 'GET' && /^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/adapters$/i.
|
|
|
308
311
|
let defaultAdapter = 'claude-sonnet-4-6';
|
|
309
312
|
try { defaultAdapter = JSON.parse(fs.readFileSync(orgFile, 'utf8'))?.run_config?.ceo_adapter || defaultAdapter; } catch(_) {}
|
|
310
313
|
res.writeHead(200, { 'Content-Type': 'application/json', ...(corsOrigin ? { 'Access-Control-Allow-Origin': corsOrigin } : {}) });
|
|
314
|
+
// This list mirrors the runtimes orgrt/daemon.ts actually registers
|
|
315
|
+
// (resolveRunner()'s if-chain + the ClaudeAgentRunner default it falls
|
|
316
|
+
// through to) rather than an independent, hand-maintained catalog — a
|
|
317
|
+
// standalone 'gemini-local' entry used to be advertised here even
|
|
318
|
+
// though no runner is ever registered for it (autoRuntimeFromProvider
|
|
319
|
+
// has no 'gemini' case, so a role requesting it silently falls back to
|
|
320
|
+
// Claude — see daemon.ts#startOrg's fail-fast warning). Gemini is only
|
|
321
|
+
// actually reachable via the 'vercel' runtime (vendor: 'google') or via
|
|
322
|
+
// 'antigravity' (Google-account CLI), both listed below. 'http' maps to
|
|
323
|
+
// provider.kind === 'base-url' (ANTHROPIC_BASE_URL + optional auth
|
|
324
|
+
// token) — a real, usable path, not disabled.
|
|
311
325
|
res.end(JSON.stringify({ default_adapter: defaultAdapter, adapters: [
|
|
312
326
|
{ type: 'claude-local', label: 'Claude (local CLI)', source: 'built-in', disabled: false, modelsCount: 3 },
|
|
313
|
-
{ type: '
|
|
314
|
-
{ type: '
|
|
327
|
+
{ type: 'codex-local', label: 'Codex CLI', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
328
|
+
{ type: 'antigravity', label: 'Antigravity (Google CLI)', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
329
|
+
{ type: 'grok', label: 'Grok CLI', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
330
|
+
{ type: 'qwen', label: 'Qwen CLI', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
331
|
+
{ type: 'crush', label: 'Crush CLI', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
332
|
+
{ type: 'copilot', label: 'GitHub Copilot CLI', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
333
|
+
{ type: 'pi', label: 'Pi CLI', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
334
|
+
{ type: 'opencode', label: 'OpenCode CLI', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
335
|
+
{ type: 'kimicode', label: 'KimiCode CLI', source: 'built-in', disabled: false, modelsCount: 1 },
|
|
336
|
+
{ type: 'vercel', label: 'Vercel AI SDK (multi-vendor, incl. Gemini/OpenAI)', source: 'built-in', disabled: false, modelsCount: 14 },
|
|
337
|
+
{ type: 'http', label: 'Custom HTTP (base-url provider)', source: 'built-in', disabled: false, modelsCount: 0 },
|
|
315
338
|
]}));
|
|
316
339
|
return true;
|
|
317
340
|
}
|
|
@@ -1135,13 +1158,29 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
|
|
|
1135
1158
|
total_cost_usd: s.total_cost_usd || 0,
|
|
1136
1159
|
}));
|
|
1137
1160
|
} catch(_) {}
|
|
1138
|
-
// Scan org run jsonl files for
|
|
1161
|
+
// Scan org run jsonl files for usage events (fallback when state.json has no token data).
|
|
1162
|
+
// Two event-type variants show up here in practice and must BOTH be matched, each with its
|
|
1163
|
+
// own field mapping — matching only one silently drops real v2 cost data from the UI:
|
|
1164
|
+
// - 'agent:usage': flattened { role, tokens_in, tokens_out, cost_usd } (legacy/direct writers).
|
|
1165
|
+
// - 'org:usage': orgrt's actual forwarded shape (attachForwarder's translate() default case
|
|
1166
|
+
// for a raw OrgBus 'usage' event) — { from, data: { tokens, cost_usd } }. orgrt never emits
|
|
1167
|
+
// 'agent:usage' itself, so scanning for that alone means this fallback never fires for real runs.
|
|
1139
1168
|
const _hasTokenData = agents.some(a => a.tokens_in > 0 || a.tokens_out > 0 || a.total_cost_usd > 0);
|
|
1140
1169
|
if (!_hasTokenData) {
|
|
1141
1170
|
try {
|
|
1142
1171
|
const _runsDir = path.join(base, orgName, 'runs');
|
|
1143
1172
|
if (fs.existsSync(_runsDir)) {
|
|
1144
1173
|
const _usageByRole = {};
|
|
1174
|
+
const _bump = (role, tokensIn, tokensOut, tokensTotal, costUsd) => {
|
|
1175
|
+
if (!role) return;
|
|
1176
|
+
role = String(role).trim();
|
|
1177
|
+
if (!role) return;
|
|
1178
|
+
if (!_usageByRole[role]) _usageByRole[role] = { tokens_in: 0, tokens_out: 0, tokens_used: 0, total_cost_usd: 0 };
|
|
1179
|
+
_usageByRole[role].tokens_in += tokensIn;
|
|
1180
|
+
_usageByRole[role].tokens_out += tokensOut;
|
|
1181
|
+
_usageByRole[role].tokens_used += tokensIn + tokensOut + tokensTotal;
|
|
1182
|
+
_usageByRole[role].total_cost_usd += costUsd;
|
|
1183
|
+
};
|
|
1145
1184
|
for (const f of fs.readdirSync(_runsDir)) {
|
|
1146
1185
|
if (!f.endsWith('.jsonl') || f.startsWith('._')) continue;
|
|
1147
1186
|
const lines = fs.readFileSync(path.join(_runsDir, f), 'utf8').split('\n').filter(Boolean);
|
|
@@ -1149,11 +1188,9 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
|
|
|
1149
1188
|
try {
|
|
1150
1189
|
const ev = JSON.parse(l);
|
|
1151
1190
|
if (ev.type === 'agent:usage' && ev.role) {
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
_usageByRole[role].tokens_out += Number(ev.tokens_out) || 0;
|
|
1156
|
-
_usageByRole[role].total_cost_usd += Number(ev.cost_usd) || 0;
|
|
1191
|
+
_bump(ev.role, Number(ev.tokens_in) || 0, Number(ev.tokens_out) || 0, 0, Number(ev.cost_usd) || 0);
|
|
1192
|
+
} else if (ev.type === 'org:usage' && ev.from) {
|
|
1193
|
+
_bump(ev.from, 0, 0, Number(ev.data?.tokens) || 0, Number(ev.data?.cost_usd) || 0);
|
|
1157
1194
|
}
|
|
1158
1195
|
} catch(_) {}
|
|
1159
1196
|
}
|
|
@@ -1162,7 +1199,13 @@ if (req.method === 'GET' && url.match(/^\/api\/org\/[a-z0-9][a-z0-9_-]{0,63}\/bu
|
|
|
1162
1199
|
// Merge usage into agents list; preserve role titles
|
|
1163
1200
|
agents = agents.map(a => {
|
|
1164
1201
|
const u = _usageByRole[a.id] || {};
|
|
1165
|
-
return {
|
|
1202
|
+
return {
|
|
1203
|
+
...a,
|
|
1204
|
+
tokens_in: u.tokens_in || 0,
|
|
1205
|
+
tokens_out: u.tokens_out || 0,
|
|
1206
|
+
tokens_used: u.tokens_used || ((u.tokens_in || 0) + (u.tokens_out || 0)),
|
|
1207
|
+
total_cost_usd: u.total_cost_usd || 0,
|
|
1208
|
+
};
|
|
1166
1209
|
});
|
|
1167
1210
|
// Add any roles that appeared in events but aren't in config
|
|
1168
1211
|
for (const [role, u] of Object.entries(_usageByRole)) {
|
|
@@ -2198,21 +2241,21 @@ if (req.method === 'POST' && url === '/api/knowledge/search') {
|
|
|
2198
2241
|
return true;
|
|
2199
2242
|
}
|
|
2200
2243
|
|
|
2201
|
-
// GET /api/mastermind/metrics — aggregate system metrics from token-summary and
|
|
2244
|
+
// GET /api/mastermind/metrics — aggregate system metrics from token-summary and monoswarm-activity
|
|
2202
2245
|
if (req.method === 'GET' && url === '/api/mastermind/metrics') {
|
|
2203
2246
|
try {
|
|
2204
2247
|
const base = path.join(ctx.projectDir || process.cwd(), '.monomind', 'metrics');
|
|
2205
|
-
let tokens = {},
|
|
2248
|
+
let tokens = {}, monoswarm = {}, events = [];
|
|
2206
2249
|
try { tokens = JSON.parse(fs.readFileSync(path.join(base, 'token-summary.json'), 'utf8')); } catch(_) {}
|
|
2207
|
-
try {
|
|
2250
|
+
try { monoswarm = JSON.parse(fs.readFileSync(path.join(base, 'monoswarm-activity.json'), 'utf8')); } catch(_) {}
|
|
2208
2251
|
try {
|
|
2209
2252
|
const evPath = path.join(ctx.projectDir || process.cwd(), 'data', 'mastermind-events.jsonl');
|
|
2210
2253
|
const lines = fs.readFileSync(evPath, 'utf8').split('\n').filter(l => l.trim()).slice(-20);
|
|
2211
2254
|
events = lines.map(l => { try { return JSON.parse(l); } catch(_) { return null; } }).filter(Boolean);
|
|
2212
2255
|
} catch(_) {}
|
|
2213
2256
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
2214
|
-
res.end(JSON.stringify({ tokens,
|
|
2215
|
-
} catch(_) { res.writeHead(500); res.end('{"tokens":{},"
|
|
2257
|
+
res.end(JSON.stringify({ tokens, monoswarm, recentEvents: events }));
|
|
2258
|
+
} catch(_) { res.writeHead(500); res.end('{"tokens":{},"monoswarm":{},"recentEvents":[]}'); }
|
|
2216
2259
|
return true;
|
|
2217
2260
|
}
|
|
2218
2261
|
|
package/dist/src/ui/server.mjs
CHANGED
|
@@ -43,10 +43,7 @@ const buildDocsState = new Map();
|
|
|
43
43
|
|
|
44
44
|
// Pricing per token (mirrors token-tracker.cjs FALLBACK_PRICING)
|
|
45
45
|
const _SJ_PRICING = {
|
|
46
|
-
'claude-fable-5': { in: 10e-6, out: 50e-6, cw: 12.5e-6, cr: 1e-6 },
|
|
47
|
-
'claude-mythos-5': { in: 10e-6, out: 50e-6, cw: 12.5e-6, cr: 1e-6 },
|
|
48
46
|
'claude-opus-5': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
|
|
49
|
-
'claude-opus-4-8': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
|
|
50
47
|
'claude-opus-4-7': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
|
|
51
48
|
'claude-opus-4-6': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
|
|
52
49
|
'claude-opus-4-5': { in: 5e-6, out: 25e-6, cw: 6.25e-6, cr: 0.5e-6 },
|
|
@@ -873,6 +870,15 @@ function bindServer(server, port) {
|
|
|
873
870
|
const _slugPathCache = new Map();
|
|
874
871
|
const _MAX_SLUG_CACHE = 200;
|
|
875
872
|
|
|
873
|
+
// Inverse of resolveSlugToPath: absolute path -> ~/.claude/projects/<slug>
|
|
874
|
+
// dir name. Claude Code's slug replaces every path separator AND the
|
|
875
|
+
// Windows drive-letter colon with '-' (e.g. "C:\Users\x" -> "C--Users-x")
|
|
876
|
+
// — replacing only '/' leaves Windows paths (all-backslash) completely
|
|
877
|
+
// untouched, so every dir= lookup 404s and every project shows 0 sessions.
|
|
878
|
+
function pathToSlug(d) {
|
|
879
|
+
return String(d).replace(/[\\/:]/g, '-');
|
|
880
|
+
}
|
|
881
|
+
|
|
876
882
|
function resolveSlugToPath(slug, projDir) {
|
|
877
883
|
if (_slugPathCache.has(slug)) return _slugPathCache.get(slug);
|
|
878
884
|
const resolved = _resolveSlugToPathUncached(slug, projDir);
|
|
@@ -924,7 +930,10 @@ function _resolveSlugToPathUncached(slug, projDir) {
|
|
|
924
930
|
.find((l) => l.includes('"cwd"'));
|
|
925
931
|
if (line) {
|
|
926
932
|
const m = line.match(/"cwd"\s*:\s*"([^"]+)"/);
|
|
927
|
-
|
|
933
|
+
// m[1] is the raw JSON-escaped text between the quotes (e.g. a
|
|
934
|
+
// Windows path's backslashes still escaped as \\) — unescape it
|
|
935
|
+
// properly instead of returning the escaped literal.
|
|
936
|
+
if (m?.[1]) { try { return JSON.parse(`"${m[1]}"`); } catch { return m[1]; } }
|
|
928
937
|
}
|
|
929
938
|
} catch {}
|
|
930
939
|
}
|
|
@@ -1278,10 +1287,19 @@ export async function startServer({
|
|
|
1278
1287
|
fs.mkdirSync(_runDir, { recursive: true });
|
|
1279
1288
|
await appendToFile(path.join(_runDir, `${_rid}.jsonl`), JSON.stringify(event) + '\n');
|
|
1280
1289
|
_insertRunEvent(event, 'http');
|
|
1281
|
-
//
|
|
1282
|
-
|
|
1290
|
+
// Usage accumulation — persist per-role token/cost data to state.json (accumulated
|
|
1291
|
+
// across runs). Real producers emit two distinct shapes and both must be handled:
|
|
1292
|
+
// - 'agent:usage': flattened { role, tokens_in, tokens_out, cost_usd } (legacy/direct).
|
|
1293
|
+
// - 'org:usage': orgrt's actual forwarded shape (attachForwarder's translate(), the
|
|
1294
|
+
// default case for a raw OrgBus 'usage' event) — { from, data: { tokens, cost_usd } }.
|
|
1295
|
+
// orgrt never emits 'agent:usage' itself, so without this branch real v2 cost data
|
|
1296
|
+
// never reaches state.json even though the UI displays it as if it did.
|
|
1297
|
+
const _usageRole = event.type === 'agent:usage' ? event.role
|
|
1298
|
+
: event.type === 'org:usage' ? event.from
|
|
1299
|
+
: null;
|
|
1300
|
+
if (_usageRole) {
|
|
1283
1301
|
try {
|
|
1284
|
-
const _arole = String(
|
|
1302
|
+
const _arole = String(_usageRole).trim();
|
|
1285
1303
|
if (
|
|
1286
1304
|
_arole.length > 0 &&
|
|
1287
1305
|
_arole.length <= 64 &&
|
|
@@ -1294,11 +1312,20 @@ export async function startServer({
|
|
|
1294
1312
|
} catch (_e) {}
|
|
1295
1313
|
if (!_st.agents) _st.agents = {};
|
|
1296
1314
|
const _ex = _st.agents[_arole] || {};
|
|
1315
|
+
const _tokensIn = event.type === 'agent:usage' ? (Number(event.tokens_in) || 0) : 0;
|
|
1316
|
+
const _tokensOut = event.type === 'agent:usage' ? (Number(event.tokens_out) || 0) : 0;
|
|
1317
|
+
// 'org:usage' carries a single total (data.tokens), not an in/out split —
|
|
1318
|
+
// counted toward tokens_used so the budget total still reflects it honestly.
|
|
1319
|
+
const _tokensTotal = event.type === 'org:usage' ? (Number(event.data?.tokens) || 0) : 0;
|
|
1320
|
+
const _costUsd = event.type === 'agent:usage'
|
|
1321
|
+
? (Number(event.cost_usd) || 0)
|
|
1322
|
+
: (Number(event.data?.cost_usd) || 0);
|
|
1297
1323
|
_st.agents[_arole] = {
|
|
1298
1324
|
..._ex,
|
|
1299
|
-
tokens_in: (_ex.tokens_in || 0) +
|
|
1300
|
-
tokens_out: (_ex.tokens_out || 0) +
|
|
1301
|
-
|
|
1325
|
+
tokens_in: (_ex.tokens_in || 0) + _tokensIn,
|
|
1326
|
+
tokens_out: (_ex.tokens_out || 0) + _tokensOut,
|
|
1327
|
+
tokens_used: (_ex.tokens_used || 0) + _tokensIn + _tokensOut + _tokensTotal,
|
|
1328
|
+
total_cost_usd: (_ex.total_cost_usd || 0) + _costUsd,
|
|
1302
1329
|
lastUpdated: event.ts,
|
|
1303
1330
|
};
|
|
1304
1331
|
fs.writeFileSync(_stateFile, JSON.stringify(_st, null, 2));
|
|
@@ -1989,7 +2016,7 @@ export async function startServer({
|
|
|
1989
2016
|
const qs = new URL(req.url, 'http://localhost').searchParams;
|
|
1990
2017
|
const dir = qs.get('dir') || projectDir || process.cwd();
|
|
1991
2018
|
const d = path.resolve(dir || process.cwd());
|
|
1992
|
-
const slug = d
|
|
2019
|
+
const slug = pathToSlug(d);
|
|
1993
2020
|
const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
|
|
1994
2021
|
|
|
1995
2022
|
let sessionFiles = [];
|
|
@@ -2162,7 +2189,7 @@ export async function startServer({
|
|
|
2162
2189
|
}
|
|
2163
2190
|
try {
|
|
2164
2191
|
const d = path.resolve(dir || process.cwd());
|
|
2165
|
-
const slug = d
|
|
2192
|
+
const slug = pathToSlug(d);
|
|
2166
2193
|
const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
|
|
2167
2194
|
let sessionFiles = [];
|
|
2168
2195
|
try {
|
|
@@ -2236,7 +2263,7 @@ export async function startServer({
|
|
|
2236
2263
|
const dir = qs.get('dir') || projectDir || process.cwd();
|
|
2237
2264
|
const limit = Math.min(parseInt(qs.get('limit') || '50', 10), 200);
|
|
2238
2265
|
const d = path.resolve(dir || process.cwd());
|
|
2239
|
-
const slug = d
|
|
2266
|
+
const slug = pathToSlug(d);
|
|
2240
2267
|
const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
|
|
2241
2268
|
let sessionFiles = [];
|
|
2242
2269
|
try {
|
|
@@ -2327,7 +2354,7 @@ export async function startServer({
|
|
|
2327
2354
|
const qs = new URL(req.url, 'http://localhost').searchParams;
|
|
2328
2355
|
const dir = qs.get('dir') || projectDir || process.cwd();
|
|
2329
2356
|
const d = path.resolve(dir || process.cwd());
|
|
2330
|
-
const slug = d
|
|
2357
|
+
const slug = pathToSlug(d);
|
|
2331
2358
|
const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
|
|
2332
2359
|
let sessionFiles = [];
|
|
2333
2360
|
try {
|
|
@@ -2401,7 +2428,7 @@ export async function startServer({
|
|
|
2401
2428
|
const qs = new URL(req.url, 'http://localhost').searchParams;
|
|
2402
2429
|
const dir = qs.get('dir') || projectDir || process.cwd();
|
|
2403
2430
|
const d = path.resolve(dir || process.cwd());
|
|
2404
|
-
const slug = d
|
|
2431
|
+
const slug = pathToSlug(d);
|
|
2405
2432
|
const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
|
|
2406
2433
|
let sessionFiles = [];
|
|
2407
2434
|
try {
|
|
@@ -2554,7 +2581,7 @@ export async function startServer({
|
|
|
2554
2581
|
const projDir = path.join(projectsBase, slug);
|
|
2555
2582
|
const projPath = resolveSlugToPath(slug, projDir);
|
|
2556
2583
|
const name =
|
|
2557
|
-
|
|
2584
|
+
path.basename(projPath) ||
|
|
2558
2585
|
slug.split('-').filter(Boolean).pop() ||
|
|
2559
2586
|
slug;
|
|
2560
2587
|
let sessionCount = 0;
|
|
@@ -2925,7 +2952,7 @@ export async function startServer({
|
|
|
2925
2952
|
const dir = qs.get('dir') || projectDir || process.cwd();
|
|
2926
2953
|
const d = path.resolve(dir || process.cwd());
|
|
2927
2954
|
const homeDir = os.homedir();
|
|
2928
|
-
const slug = d
|
|
2955
|
+
const slug = pathToSlug(d);
|
|
2929
2956
|
const memDir = path.join(homeDir, '.claude', 'projects', slug, 'memory');
|
|
2930
2957
|
|
|
2931
2958
|
let files = [];
|
|
@@ -3027,7 +3054,7 @@ export async function startServer({
|
|
|
3027
3054
|
try {
|
|
3028
3055
|
const qs = new URL(req.url, 'http://localhost').searchParams;
|
|
3029
3056
|
const d = path.resolve(qs.get('dir') || projectDir || process.cwd());
|
|
3030
|
-
const slug = d
|
|
3057
|
+
const slug = pathToSlug(d);
|
|
3031
3058
|
const memDir = path.join(os.homedir(), '.claude', 'projects', slug, 'memory');
|
|
3032
3059
|
const { filename, content } = JSON.parse(body);
|
|
3033
3060
|
if (
|
|
@@ -3075,7 +3102,7 @@ export async function startServer({
|
|
|
3075
3102
|
try {
|
|
3076
3103
|
const qs = new URL(req.url, 'http://localhost').searchParams;
|
|
3077
3104
|
const d = path.resolve(qs.get('dir') || projectDir || process.cwd());
|
|
3078
|
-
const slug = d
|
|
3105
|
+
const slug = pathToSlug(d);
|
|
3079
3106
|
const memDir = path.join(os.homedir(), '.claude', 'projects', slug, 'memory');
|
|
3080
3107
|
const { filename } = JSON.parse(body);
|
|
3081
3108
|
if (
|
|
@@ -3146,7 +3173,7 @@ export async function startServer({
|
|
|
3146
3173
|
try {
|
|
3147
3174
|
const qs = new URL(req.url, 'http://localhost').searchParams;
|
|
3148
3175
|
const d = path.resolve(qs.get('dir') || projectDir || process.cwd());
|
|
3149
|
-
const slug = d
|
|
3176
|
+
const slug = pathToSlug(d);
|
|
3150
3177
|
const memDir = path.join(os.homedir(), '.claude', 'projects', slug, 'memory');
|
|
3151
3178
|
|
|
3152
3179
|
let total = 0,
|
|
@@ -3452,7 +3479,7 @@ export async function startServer({
|
|
|
3452
3479
|
// Try to extract ScheduleWakeup context from session JSONL
|
|
3453
3480
|
let loopEntry = null;
|
|
3454
3481
|
try {
|
|
3455
|
-
const escaped = cwd
|
|
3482
|
+
const escaped = pathToSlug(cwd);
|
|
3456
3483
|
const sessionFile = path.join(
|
|
3457
3484
|
os.homedir(),
|
|
3458
3485
|
'.claude',
|
|
@@ -3681,7 +3708,7 @@ export async function startServer({
|
|
|
3681
3708
|
// match against every filename when sessionId is a very long string.
|
|
3682
3709
|
const _rawSessId = qs.get('id') || '';
|
|
3683
3710
|
const sessionId = _rawSessId.slice(0, 256);
|
|
3684
|
-
const slug = d
|
|
3711
|
+
const slug = pathToSlug(d);
|
|
3685
3712
|
const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
|
|
3686
3713
|
try {
|
|
3687
3714
|
const files = fs
|
|
@@ -3753,7 +3780,7 @@ export async function startServer({
|
|
|
3753
3780
|
if (req.method === 'GET' && url.startsWith('/api/events-stream')) {
|
|
3754
3781
|
const qs = new URL(req.url, 'http://localhost').searchParams;
|
|
3755
3782
|
const d = path.resolve(qs.get('dir') || projectDir || process.cwd());
|
|
3756
|
-
const slug = d
|
|
3783
|
+
const slug = pathToSlug(d);
|
|
3757
3784
|
const projectClaudeDir = path.join(os.homedir(), '.claude', 'projects', slug);
|
|
3758
3785
|
res.writeHead(200, {
|
|
3759
3786
|
'Content-Type': 'text/event-stream',
|
|
@@ -41,4 +41,16 @@ export declare function readJsonStoreOrNull<T>(filePath: string, emptyDefault: T
|
|
|
41
41
|
* collisions), then renames into place. Ensures the directory exists.
|
|
42
42
|
*/
|
|
43
43
|
export declare function writeJsonFileAtomic(filePath: string, data: unknown, pretty?: boolean): void;
|
|
44
|
+
/**
|
|
45
|
+
* Merge `incoming` records into `existing` by `id`, keeping existing records
|
|
46
|
+
* in place and appending only the ones not already present. Shared by
|
|
47
|
+
* `hooks intelligence import` (file pattern import) and `hooks transfer`
|
|
48
|
+
* (cross-project pattern transfer) so both use one dedupe rule.
|
|
49
|
+
*/
|
|
50
|
+
export declare function mergeRecordsById<T extends {
|
|
51
|
+
id: string;
|
|
52
|
+
}>(existing: T[], incoming: T[]): {
|
|
53
|
+
merged: T[];
|
|
54
|
+
added: T[];
|
|
55
|
+
};
|
|
44
56
|
//# sourceMappingURL=json-file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,EACX,QAAQ,SAAmB,GAC1B,CAAC,CAUH;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,CAAC,GAAG,IAAI,CAWV;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,UAAO,GACZ,IAAI,CASN"}
|
|
1
|
+
{"version":3,"file":"json-file.d.ts","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,EACX,QAAQ,SAAmB,GAC1B,CAAC,CAUH;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,SAAmB,GAC1B,CAAC,GAAG,IAAI,CAWV;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,UAAO,GACZ,IAAI,CASN;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACvD,QAAQ,EAAE,CAAC,EAAE,EACb,QAAQ,EAAE,CAAC,EAAE,GACZ;IAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,CAAA;CAAE,CAI7B"}
|
|
@@ -81,4 +81,15 @@ export function writeJsonFileAtomic(filePath, data, pretty = true) {
|
|
|
81
81
|
writeFileSync(tmp, content, 'utf-8');
|
|
82
82
|
renameSync(tmp, filePath);
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Merge `incoming` records into `existing` by `id`, keeping existing records
|
|
86
|
+
* in place and appending only the ones not already present. Shared by
|
|
87
|
+
* `hooks intelligence import` (file pattern import) and `hooks transfer`
|
|
88
|
+
* (cross-project pattern transfer) so both use one dedupe rule.
|
|
89
|
+
*/
|
|
90
|
+
export function mergeRecordsById(existing, incoming) {
|
|
91
|
+
const existingIds = new Set(existing.map((r) => r.id));
|
|
92
|
+
const added = incoming.filter((r) => !existingIds.has(r.id));
|
|
93
|
+
return { merged: [...existing, ...added], added };
|
|
94
|
+
}
|
|
84
95
|
//# sourceMappingURL=json-file.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAQ,MAAM,MAAM,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,QAAW,EACX,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAE3B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,YAAe,EACf,KAAa,EACb,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAE3B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,YAAY,CAAC;QAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAM,CAAC;QAChE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QACnH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,mDAAmD,EAAE,CAAC,CAAC,CAAC;QACpI,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,IAAa,EACb,MAAM,GAAG,IAAI;IAEb,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAC3D,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../src/utils/json-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAQ,MAAM,MAAM,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,QAAW,EACX,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAE3B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,YAAe,EACf,KAAa,EACb,QAAQ,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;IAE3B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,YAAY,CAAC;QAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAM,CAAC;QAChE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QACnH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,mDAAmD,EAAE,CAAC,CAAC,CAAC;QACpI,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,IAAa,EACb,MAAM,GAAG,IAAI;IAEb,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAC3D,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAa,EACb,QAAa;IAEb,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AACpD,CAAC"}
|