@monoes/monomindcli 2.9.21 → 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-createorg/SKILL.md +26 -3
- 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/events.d.ts +9 -0
- package/dist/src/commands/events.d.ts.map +1 -0
- package/dist/src/commands/events.js +89 -0
- package/dist/src/commands/events.js.map +1 -0
- 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 +2 -2
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +4 -3
- 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 +34 -3
- package/dist/src/commands/org-observe.d.ts.map +1 -1
- package/dist/src/commands/org-observe.js +213 -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 +118 -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 +16 -1
- package/dist/src/orgrt/approvals.d.ts.map +1 -1
- package/dist/src/orgrt/approvals.js +47 -2
- 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 +14 -0
- package/dist/src/orgrt/copilot-runner.d.ts.map +1 -0
- package/dist/src/orgrt/copilot-runner.js +260 -0
- package/dist/src/orgrt/copilot-runner.js.map +1 -0
- 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 +27 -0
- package/dist/src/orgrt/crush-runner.d.ts.map +1 -0
- package/dist/src/orgrt/crush-runner.js +263 -0
- package/dist/src/orgrt/crush-runner.js.map +1 -0
- package/dist/src/orgrt/daemon.d.ts +68 -16
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +212 -29
- 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 +18 -0
- package/dist/src/orgrt/grok-runner.d.ts.map +1 -0
- package/dist/src/orgrt/grok-runner.js +348 -0
- package/dist/src/orgrt/grok-runner.js.map +1 -0
- 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 +68 -0
- package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -0
- package/dist/src/orgrt/pi-rpc-runner.js +385 -0
- package/dist/src/orgrt/pi-rpc-runner.js.map +1 -0
- package/dist/src/orgrt/pi-runner.d.ts +16 -0
- package/dist/src/orgrt/pi-runner.d.ts.map +1 -0
- package/dist/src/orgrt/pi-runner.js +264 -0
- package/dist/src/orgrt/pi-runner.js.map +1 -0
- 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 +18 -0
- package/dist/src/orgrt/qwen-runner.d.ts.map +1 -0
- package/dist/src/orgrt/qwen-runner.js +270 -0
- package/dist/src/orgrt/qwen-runner.js.map +1 -0
- 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 +50 -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/orgrt/usage-proxy.d.ts +32 -0
- package/dist/src/orgrt/usage-proxy.d.ts.map +1 -0
- package/dist/src/orgrt/usage-proxy.js +226 -0
- package/dist/src/orgrt/usage-proxy.js.map +1 -0
- 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 +93 -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/orgs.html +8 -1
- package/dist/src/ui/routes-org.mjs +85 -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 +5 -5
- 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
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
// packages/@monomind/cli/src/orgrt/grok-runner.ts
|
|
2
|
+
/**
|
|
3
|
+
* GrokAgentRunner — AgentRunner impl backed by the Grok Build CLI (`grok`,
|
|
4
|
+
* xAI's agentic coding CLI: https://docs.x.ai/build/cli).
|
|
5
|
+
*
|
|
6
|
+
* Architectural pattern: SAME as CodexAgentRunner/KimiCodeAgentRunner — spawn
|
|
7
|
+
* the vendor's CLI binary, parse its NDJSON stream, normalize to
|
|
8
|
+
* AgentMessage. No SDK dependency.
|
|
9
|
+
*
|
|
10
|
+
* Auth: inherited from the CLI's own login flow (subscription/API key
|
|
11
|
+
* managed by `grok` itself). No env vars set by this runner.
|
|
12
|
+
*
|
|
13
|
+
* Org tools (org_send, knowledge_search, ask_human, …) — FENCE PROTOCOL:
|
|
14
|
+
* Same approach as codex/kimi/opencode. Tools are rendered INTO the first
|
|
15
|
+
* prompt; the model emits ```tool_call fences; this runner parses them out
|
|
16
|
+
* of the assistant text, executes the real OrgToolDef handlers in-process
|
|
17
|
+
* (gated through canUseTool), and feeds results back as the next prompt.
|
|
18
|
+
*
|
|
19
|
+
* Subprocess protocol — per public docs (docs.x.ai/build/cli/reference),
|
|
20
|
+
* PARTIALLY byte-verified against a live v1.0.5 install (`npm install -g
|
|
21
|
+
* @xai-official/grok`; see #178). CONFIRMED LIVE: the flag was wrong — this
|
|
22
|
+
* runner used to pass `--format json`, which grok rejects outright
|
|
23
|
+
* ("unexpected argument '--format' found" — no such flag exists). Fixed to
|
|
24
|
+
* `--output-format json`, confirmed correct by getting past argument
|
|
25
|
+
* parsing straight to an auth error ("Not signed in") with no XAI_API_KEY
|
|
26
|
+
* available to test further.
|
|
27
|
+
*
|
|
28
|
+
* STILL UNVERIFIED (no XAI_API_KEY in the environment this fix was made
|
|
29
|
+
* in): grok's `--output-format` has FOUR documented values — `plain`,
|
|
30
|
+
* `json`, `streaming-json` (NDJSON of native ACP session updates), and
|
|
31
|
+
* `streaming-messages-json` (NDJSON in the Anthropic Messages API wire
|
|
32
|
+
* format). This runner uses plain `json`, but `parseGrokEvents()` parses
|
|
33
|
+
* stdout as one-JSON-object-per-line (NDJSON) — worth checking live
|
|
34
|
+
* whether `json` actually emits NDJSON, or a single (possibly
|
|
35
|
+
* multi-line-formatted) JSON blob that would break the line-based parser.
|
|
36
|
+
* If it's the latter, `streaming-messages-json` looks like the better fit
|
|
37
|
+
* (NDJSON, and a documented wire format this codebase already knows how to
|
|
38
|
+
* parse elsewhere) — untested, flagging rather than guessing. The exact
|
|
39
|
+
* NDJSON event field names for whichever format is correct were STILL not
|
|
40
|
+
* available at fix time, so parseGrokEvents() tolerates several plausible
|
|
41
|
+
* shapes (codex-style `item.type === 'agent_message'`, a flat `role:
|
|
42
|
+
* 'assistant'` shape, and a flat `type: 'assistant'`/`'message'` shape)
|
|
43
|
+
* rather than committing to one. Verify against a real XAI_API_KEY and
|
|
44
|
+
* tighten this parser if the real shape differs — a wrong guess here fails
|
|
45
|
+
* closed (no text extracted, not a crash), which is what the "no known
|
|
46
|
+
* shape matched" path is for.
|
|
47
|
+
* - Invocation: `grok -p "<prompt>" --output-format json [--model X] [--cwd Y]
|
|
48
|
+
* [--always-approve] [-r <sessionId> | -c]`
|
|
49
|
+
* - Session continuity: `-r/--resume [<id>]` resumes a specific session,
|
|
50
|
+
* `-c/--continue` resumes the most recent one. Session id is captured
|
|
51
|
+
* from any event carrying `session_id` / `sessionId` / `thread_id`.
|
|
52
|
+
* - stderr is human diagnostics; buffered and surfaced on non-zero exit.
|
|
53
|
+
*/
|
|
54
|
+
import { spawn } from 'node:child_process';
|
|
55
|
+
import { buildToolProtocol, parseToolCalls, executeToolCall, formatToolResults, MAX_TOOL_ROUNDS, TOOL_CALL_RE } from './tool-fence.js';
|
|
56
|
+
const TURN_TIMEOUT_MS = 2 * 60 * 60 * 1000; // 2 hours, matching the other subprocess runners
|
|
57
|
+
/** Distinct from TURN_TIMEOUT_MS: catches a hung first-run interactive prompt
|
|
58
|
+
* (trust/telemetry gate) fast instead of waiting out the full turn timeout.
|
|
59
|
+
* Fires only if the process has produced ZERO stdout by this point — any
|
|
60
|
+
* output at all disarms it, since a slow model response is not a hang. */
|
|
61
|
+
const STARTUP_GRACE_MS = 45_000;
|
|
62
|
+
/** Pull a session/thread id out of a parsed event, tolerating the field-name
|
|
63
|
+
* variants different CLI versions/backends tend to use. */
|
|
64
|
+
function extractSessionId(ev) {
|
|
65
|
+
for (const key of ['session_id', 'sessionId', 'thread_id', 'threadId']) {
|
|
66
|
+
const v = ev[key];
|
|
67
|
+
if (typeof v === 'string' && v)
|
|
68
|
+
return v;
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
/** Pull assistant-visible text out of a parsed event, tolerating the shape
|
|
73
|
+
* variants documented (or plausible) for `grok --output-format json`:
|
|
74
|
+
* - codex-style: { type: 'item.completed', item: { type: 'agent_message', text } }
|
|
75
|
+
* - flat role shape: { role: 'assistant', content: '...' | [{type:'text',text}] }
|
|
76
|
+
* - flat type shape: { type: 'assistant' | 'message', text: '...' } */
|
|
77
|
+
function extractText(ev) {
|
|
78
|
+
const item = ev.item;
|
|
79
|
+
if (item && (item.type === 'agent_message' || item.type === 'message') && typeof item.text === 'string') {
|
|
80
|
+
return item.text;
|
|
81
|
+
}
|
|
82
|
+
if (ev.role === 'assistant') {
|
|
83
|
+
const content = ev.content;
|
|
84
|
+
if (typeof content === 'string')
|
|
85
|
+
return content;
|
|
86
|
+
if (Array.isArray(content)) {
|
|
87
|
+
return content
|
|
88
|
+
.filter((b) => !!b && typeof b === 'object' && b.type === 'text')
|
|
89
|
+
.map((b) => b.text)
|
|
90
|
+
.join('\n');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if ((ev.type === 'assistant' || ev.type === 'message') && typeof ev.text === 'string') {
|
|
94
|
+
return ev.text;
|
|
95
|
+
}
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
/** Pull usage totals out of a parsed event, tolerating openai-ish
|
|
99
|
+
* (prompt_tokens/completion_tokens) and codex-ish (input_tokens/output_tokens)
|
|
100
|
+
* field names. */
|
|
101
|
+
function extractUsage(ev) {
|
|
102
|
+
const usage = ev.usage;
|
|
103
|
+
if (!usage)
|
|
104
|
+
return undefined;
|
|
105
|
+
const input = usage.input_tokens ?? usage.prompt_tokens;
|
|
106
|
+
const output = usage.output_tokens ?? usage.completion_tokens;
|
|
107
|
+
if (typeof input === 'number' || typeof output === 'number') {
|
|
108
|
+
return { input: typeof input === 'number' ? input : 0, output: typeof output === 'number' ? output : 0 };
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
/** Pure NDJSON parser — exported so it can be unit tested against fixture
|
|
113
|
+
* lines without spawning the real CLI (see grok-runner.test.ts). */
|
|
114
|
+
export function parseGrokEvents(lines) {
|
|
115
|
+
const rawTexts = [];
|
|
116
|
+
let sessionId;
|
|
117
|
+
let inputTokens = 0;
|
|
118
|
+
let outputTokens = 0;
|
|
119
|
+
let error;
|
|
120
|
+
for (const line of lines) {
|
|
121
|
+
const trimmed = line.trim();
|
|
122
|
+
if (!trimmed || !trimmed.startsWith('{'))
|
|
123
|
+
continue;
|
|
124
|
+
let ev;
|
|
125
|
+
try {
|
|
126
|
+
ev = JSON.parse(trimmed);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const sid = extractSessionId(ev);
|
|
132
|
+
if (sid)
|
|
133
|
+
sessionId = sid;
|
|
134
|
+
const text = extractText(ev);
|
|
135
|
+
if (text)
|
|
136
|
+
rawTexts.push(text);
|
|
137
|
+
const usage = extractUsage(ev);
|
|
138
|
+
if (usage) {
|
|
139
|
+
inputTokens = usage.input;
|
|
140
|
+
outputTokens = usage.output;
|
|
141
|
+
}
|
|
142
|
+
if (ev.type === 'error' || ev.type === 'turn.failed') {
|
|
143
|
+
const errMsg = ev.error?.message ?? ev.message;
|
|
144
|
+
if (typeof errMsg === 'string')
|
|
145
|
+
error = errMsg;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const texts = rawTexts.map((t) => t.replace(TOOL_CALL_RE, '').trim());
|
|
149
|
+
return { texts, rawTexts, sessionId, inputTokens, outputTokens, error };
|
|
150
|
+
}
|
|
151
|
+
export class GrokAgentRunner {
|
|
152
|
+
grokBin;
|
|
153
|
+
constructor(grokBin) {
|
|
154
|
+
this.grokBin = grokBin;
|
|
155
|
+
}
|
|
156
|
+
async *run(args) {
|
|
157
|
+
const bin = this.grokBin || process.env.GROK_CLI_BIN || 'grok';
|
|
158
|
+
let sessionId = args.resume;
|
|
159
|
+
try {
|
|
160
|
+
for await (const p of args.prompt) {
|
|
161
|
+
const text = typeof p === 'string' ? p : (p?.message?.content ?? String(p ?? ''));
|
|
162
|
+
let nextPrompt = text;
|
|
163
|
+
let turnInputTokens = 0;
|
|
164
|
+
let turnOutputTokens = 0;
|
|
165
|
+
for (let round = 0; round <= MAX_TOOL_ROUNDS; round++) {
|
|
166
|
+
// Gated on !sessionId alone, NOT `round === 0 && !sessionId` — if
|
|
167
|
+
// a session id never gets parsed out of grok's output (a real
|
|
168
|
+
// risk, per this file's header: the exact event shape is a
|
|
169
|
+
// documented guess), every round after the first would otherwise
|
|
170
|
+
// spawn a completely fresh, contextless grok invocation carrying
|
|
171
|
+
// only the tool-result text — no system prompt, no session to
|
|
172
|
+
// resume. Once a session id IS captured, --resume takes over and
|
|
173
|
+
// this stops re-sending the system prompt.
|
|
174
|
+
const promptWithSystem = !sessionId
|
|
175
|
+
? `${args.systemPrompt}${buildToolProtocol(args.tools)}\n\n---\n\n${nextPrompt}`
|
|
176
|
+
: nextPrompt;
|
|
177
|
+
const outcome = await this.runTurn(bin, promptWithSystem, sessionId, args);
|
|
178
|
+
if (outcome.sessionId)
|
|
179
|
+
sessionId = outcome.sessionId;
|
|
180
|
+
if (outcome.hangSuspected) {
|
|
181
|
+
throw new Error(`GrokAgentRunner: grok produced no output within ${STARTUP_GRACE_MS / 1000}s and was killed. ` +
|
|
182
|
+
'This usually means it is stuck on a first-run interactive prompt (trust/telemetry gate) ' +
|
|
183
|
+
'that headless mode has no way to answer. Run `grok` once manually in a real terminal in ' +
|
|
184
|
+
`this project to accept any prompts, then retry.${outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''}`);
|
|
185
|
+
}
|
|
186
|
+
if (outcome.exitCode !== 0 || outcome.error) {
|
|
187
|
+
throw new Error(`GrokAgentRunner: grok failed (exit ${outcome.exitCode})` +
|
|
188
|
+
(outcome.timedOut ? ` — killed after exceeding the ${TURN_TIMEOUT_MS / 3_600_000}h turn timeout` : '') +
|
|
189
|
+
(outcome.error ? `: ${outcome.error}` : '') +
|
|
190
|
+
(outcome.stderrTail ? `\nstderr: ${outcome.stderrTail.slice(-500)}` : ''));
|
|
191
|
+
}
|
|
192
|
+
for (const t of outcome.texts) {
|
|
193
|
+
if (t.trim())
|
|
194
|
+
yield { type: 'assistant', session_id: sessionId, text: t };
|
|
195
|
+
}
|
|
196
|
+
turnInputTokens += outcome.inputTokens;
|
|
197
|
+
turnOutputTokens += outcome.outputTokens;
|
|
198
|
+
const malformed = [];
|
|
199
|
+
const calls = parseToolCalls(outcome.rawTexts, (raw, err) => malformed.push(`[monomind] ignored malformed tool_call fence (${err}): ${raw.slice(0, 200)}`));
|
|
200
|
+
for (const note of malformed)
|
|
201
|
+
yield { type: 'assistant', session_id: sessionId, text: note };
|
|
202
|
+
if (calls.length === 0)
|
|
203
|
+
break;
|
|
204
|
+
if (round === MAX_TOOL_ROUNDS) {
|
|
205
|
+
yield {
|
|
206
|
+
type: 'assistant', session_id: sessionId,
|
|
207
|
+
text: `[monomind] tool-call round cap (${MAX_TOOL_ROUNDS}) reached — dropping ${calls.length} pending tool call(s)`,
|
|
208
|
+
};
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
const results = [];
|
|
212
|
+
for (const call of calls)
|
|
213
|
+
results.push(await executeToolCall(args.tools, call, args.canUseTool));
|
|
214
|
+
nextPrompt = formatToolResults(calls, results);
|
|
215
|
+
}
|
|
216
|
+
yield {
|
|
217
|
+
type: 'result',
|
|
218
|
+
session_id: sessionId,
|
|
219
|
+
subtype: 'success',
|
|
220
|
+
input_tokens: turnInputTokens,
|
|
221
|
+
output_tokens: turnOutputTokens,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
if (err.code === 'ENOENT') {
|
|
227
|
+
throw new Error('GrokAgentRunner requires the Grok Build CLI (grok) on PATH. ' +
|
|
228
|
+
'Install it per https://docs.x.ai/build/cli, then log in. ' +
|
|
229
|
+
'Or unset the runtime to use Claude.');
|
|
230
|
+
}
|
|
231
|
+
throw err;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
runTurn(bin, prompt, sessionId, args) {
|
|
235
|
+
return new Promise((resolve, reject) => {
|
|
236
|
+
// --output-format, not --format: confirmed against a live v1.0.5
|
|
237
|
+
// install (`npm install -g @xai-official/grok`) — `--format` doesn't
|
|
238
|
+
// exist ("unexpected argument '--format' found") and would have made
|
|
239
|
+
// every single invocation fail before even reaching auth. Confirmed
|
|
240
|
+
// the corrected flag is right: with it, the same invocation (no
|
|
241
|
+
// XAI_API_KEY available to test past this point) gets to a "Not
|
|
242
|
+
// signed in" auth error instead of a flag-parsing error, proving the
|
|
243
|
+
// flag itself is now accepted. See #178.
|
|
244
|
+
const cliArgs = ['-p', prompt, '--output-format', 'json', '--always-approve'];
|
|
245
|
+
if (args.model)
|
|
246
|
+
cliArgs.push('--model', args.model);
|
|
247
|
+
cliArgs.push('--cwd', args.cwd);
|
|
248
|
+
if (sessionId)
|
|
249
|
+
cliArgs.push('--resume', sessionId);
|
|
250
|
+
const child = spawn(bin, cliArgs, {
|
|
251
|
+
cwd: args.cwd,
|
|
252
|
+
env: { ...process.env, ...args.env },
|
|
253
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
254
|
+
});
|
|
255
|
+
let stderrTail = '';
|
|
256
|
+
child.stderr?.on('data', (c) => { stderrTail = (stderrTail + c.toString()).slice(-4000); });
|
|
257
|
+
let sawOutput = false;
|
|
258
|
+
let timedOut = false;
|
|
259
|
+
let hangSuspected = false;
|
|
260
|
+
const KILL_GRACE_MS = 5000;
|
|
261
|
+
let killTimer;
|
|
262
|
+
const timer = setTimeout(() => {
|
|
263
|
+
timedOut = true;
|
|
264
|
+
child.kill('SIGTERM');
|
|
265
|
+
killTimer = setTimeout(() => { try {
|
|
266
|
+
child.kill('SIGKILL');
|
|
267
|
+
}
|
|
268
|
+
catch { /* already gone */ } }, KILL_GRACE_MS);
|
|
269
|
+
killTimer.unref?.();
|
|
270
|
+
}, TURN_TIMEOUT_MS);
|
|
271
|
+
// See STARTUP_GRACE_MS — disarmed by the first stdout chunk below.
|
|
272
|
+
let hangTimer = setTimeout(() => {
|
|
273
|
+
hangSuspected = true;
|
|
274
|
+
child.kill('SIGTERM');
|
|
275
|
+
killTimer = setTimeout(() => { try {
|
|
276
|
+
child.kill('SIGKILL');
|
|
277
|
+
}
|
|
278
|
+
catch { /* already gone */ } }, KILL_GRACE_MS);
|
|
279
|
+
killTimer.unref?.();
|
|
280
|
+
}, STARTUP_GRACE_MS);
|
|
281
|
+
const exitPromise = new Promise((res, rej) => {
|
|
282
|
+
child.on('error', rej);
|
|
283
|
+
child.on('close', (code) => res(code ?? 1));
|
|
284
|
+
});
|
|
285
|
+
exitPromise.catch(() => { });
|
|
286
|
+
const readLines = (async () => {
|
|
287
|
+
const lines = [];
|
|
288
|
+
let buf = '';
|
|
289
|
+
for await (const chunk of child.stdout) {
|
|
290
|
+
if (!sawOutput) {
|
|
291
|
+
sawOutput = true;
|
|
292
|
+
if (hangTimer) {
|
|
293
|
+
clearTimeout(hangTimer);
|
|
294
|
+
hangTimer = undefined;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
buf += chunk.toString();
|
|
298
|
+
const parts = buf.split('\n');
|
|
299
|
+
buf = parts.pop() ?? '';
|
|
300
|
+
lines.push(...parts);
|
|
301
|
+
}
|
|
302
|
+
if (buf.trim())
|
|
303
|
+
lines.push(buf);
|
|
304
|
+
return lines;
|
|
305
|
+
})();
|
|
306
|
+
// Timer cleanup lives in a top-level .finally() (not nested inside a
|
|
307
|
+
// success-path .then()) so it runs on EITHER path — a stdout stream
|
|
308
|
+
// error would otherwise skip straight to reject() and leave the
|
|
309
|
+
// TURN_TIMEOUT_MS/hangTimer/killTimer timers running past the
|
|
310
|
+
// process's actual lifetime.
|
|
311
|
+
Promise.all([readLines, exitPromise])
|
|
312
|
+
.then(([lines, exitCode]) => {
|
|
313
|
+
const parsed = parseGrokEvents(lines);
|
|
314
|
+
resolve({
|
|
315
|
+
texts: parsed.texts,
|
|
316
|
+
rawTexts: parsed.rawTexts,
|
|
317
|
+
sessionId: parsed.sessionId ?? sessionId,
|
|
318
|
+
exitCode,
|
|
319
|
+
stderrTail,
|
|
320
|
+
timedOut,
|
|
321
|
+
hangSuspected,
|
|
322
|
+
inputTokens: parsed.inputTokens,
|
|
323
|
+
outputTokens: parsed.outputTokens,
|
|
324
|
+
error: parsed.error,
|
|
325
|
+
});
|
|
326
|
+
}, (err) => {
|
|
327
|
+
// A stdout stream error (the reject path) means the process is
|
|
328
|
+
// still ALIVE and unmanaged — none of the timeout/hang timers
|
|
329
|
+
// would have fired to kill it. Without this, that error would
|
|
330
|
+
// orphan the child. child.kill() on an already-dead process is a
|
|
331
|
+
// documented no-op, so this is safe on every path.
|
|
332
|
+
try {
|
|
333
|
+
child.kill('SIGTERM');
|
|
334
|
+
}
|
|
335
|
+
catch { /* already gone */ }
|
|
336
|
+
reject(err);
|
|
337
|
+
})
|
|
338
|
+
.finally(() => {
|
|
339
|
+
clearTimeout(timer);
|
|
340
|
+
if (hangTimer)
|
|
341
|
+
clearTimeout(hangTimer);
|
|
342
|
+
if (killTimer)
|
|
343
|
+
clearTimeout(killTimer);
|
|
344
|
+
});
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
//# sourceMappingURL=grok-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-runner.js","sourceRoot":"","sources":["../../../src/orgrt/grok-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,23 @@
|
|
|
15
15
|
* ARG ORDER MATTERS: the prompt must immediately follow `-p` — flags in
|
|
16
16
|
* between are consumed as the prompt text.
|
|
17
17
|
*
|
|
18
|
+
* Streaming / liveness — WHY INCREMENTAL:
|
|
19
|
+
* Kimi turns routinely run 10-20+ minutes when the model chains many
|
|
20
|
+
* internal tool calls (observed: 45+ steps in one turn). session.ts races
|
|
21
|
+
* the FIRST pull from this runner against a 4-minute silent-stream
|
|
22
|
+
* watchdog, so buffering stdout until process exit (the original design)
|
|
23
|
+
* meant any turn longer than 4 minutes yielded zero messages in time —
|
|
24
|
+
* abort, retry, kill, circuit breaker, stalled org. This runner therefore
|
|
25
|
+
* parses stdout LINE BY LINE as data arrives: a liveness `tool_use`
|
|
26
|
+
* message is yielded the moment the subprocess spawns (deterministically
|
|
27
|
+
* winning the first-pull race regardless of model-thinking latency),
|
|
28
|
+
* assistant text is yielded as each event lands, and kimi's own
|
|
29
|
+
* {"role":"tool",...} progress events are forwarded as `tool_use`
|
|
30
|
+
* liveness messages so the StateDetector/idle watchdog see a working
|
|
31
|
+
* agent throughout the turn. Tool_call fences are still collected from
|
|
32
|
+
* the raw texts and parsed at end of turn (fence parsing needs the
|
|
33
|
+
* complete text).
|
|
34
|
+
*
|
|
18
35
|
* Org tools (org_send, knowledge_search, ask_human, …) — FENCE PROTOCOL:
|
|
19
36
|
* kimi's tool surface can only be extended via MCP servers or plugins, both
|
|
20
37
|
* loaded by the CLI itself, not by an external caller per-turn. Instead the
|
|
@@ -49,8 +66,15 @@ export declare class KimiCodeAgentRunner implements AgentRunner {
|
|
|
49
66
|
private emptySkillsDir;
|
|
50
67
|
constructor(kimiBin?: string | undefined);
|
|
51
68
|
run(args: AgentRunArgs): AsyncIterable<AgentMessage>;
|
|
52
|
-
/**
|
|
53
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Run one `kimi -p` invocation and stream its stream-json output
|
|
71
|
+
* INCREMENTALLY: each parsed event is yielded as soon as its line arrives
|
|
72
|
+
* on stdout (see the header's "Streaming / liveness" note for why buffering
|
|
73
|
+
* until process exit was a bug). End-of-turn facts (exit code, stderr tail,
|
|
74
|
+
* final session id, timeout flag) are written into `outcome`, which the
|
|
75
|
+
* caller reads after this generator completes.
|
|
76
|
+
*/
|
|
77
|
+
private streamTurn;
|
|
54
78
|
/**
|
|
55
79
|
* Sum usage.record entries in the session's wire.jsonl written at or after
|
|
56
80
|
* `since` (the round's start time). Timestamp filtering (not line offsets)
|
|
@@ -62,16 +86,38 @@ export declare class KimiCodeAgentRunner implements AgentRunner {
|
|
|
62
86
|
private readUsageDelta;
|
|
63
87
|
}
|
|
64
88
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
89
|
+
* One parsed kimi stream-json event, normalized for incremental streaming.
|
|
90
|
+
* - 'assistant': rawText is the full assistant text (fences intact) for
|
|
91
|
+
* end-of-turn tool-call parsing; text is the fence-stripped prose,
|
|
92
|
+
* present only when non-empty.
|
|
93
|
+
* - 'tool': kimi's own tool activity ({"role":"tool",...}) — forwarded
|
|
94
|
+
* by run() as a `tool_use` liveness AgentMessage (see header).
|
|
95
|
+
* - 'meta': any other event that only carries a session id.
|
|
96
|
+
*/
|
|
97
|
+
export interface KimiStreamEvent {
|
|
98
|
+
kind: 'assistant' | 'tool' | 'meta';
|
|
99
|
+
text?: string;
|
|
100
|
+
rawText?: string;
|
|
101
|
+
toolName?: string;
|
|
102
|
+
sessionId?: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Parse ONE kimi stream-json line into a normalized event (null for blank,
|
|
106
|
+
* non-JSON, or content-free lines). Exported for unit tests — this encodes
|
|
107
|
+
* the wire format verified against kimi 0.29.2, and a CLI format change
|
|
108
|
+
* should fail loudly in CI, not silently starve an org at runtime.
|
|
69
109
|
*
|
|
70
110
|
* Real shapes (verified):
|
|
71
111
|
* {"role":"assistant","content":"..."} — reply text
|
|
72
112
|
* {"role":"assistant","content":[{"type":"text",...}]} — block form
|
|
73
113
|
* {"role":"meta","type":"session.resume_hint",session_id} — resume hint
|
|
74
|
-
* {"role":"tool"
|
|
114
|
+
* {"role":"tool","content":"Bash(ls ...)"} — tool progress
|
|
115
|
+
*/
|
|
116
|
+
export declare function parseStreamJsonLine(line: string): KimiStreamEvent | null;
|
|
117
|
+
/**
|
|
118
|
+
* Parse kimi stream-json lines into normalized texts + session id.
|
|
119
|
+
* Batch convenience wrapper over parseStreamJsonLine, kept for callers/tests
|
|
120
|
+
* that parse a completed turn's output; the runner itself streams per line.
|
|
75
121
|
*/
|
|
76
122
|
export declare function parseStreamJsonLines(lines: string[]): {
|
|
77
123
|
texts: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kimicode-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/kimicode-runner.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"kimicode-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/kimicode-runner.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAcjF,qBAAa,mBAAoB,YAAW,WAAW;IAGzC,OAAO,CAAC,OAAO,CAAC;IAF5B,OAAO,CAAC,cAAc,CAAM;IAE5B,YAAoB,OAAO,CAAC,EAAE,MAAM,YAAA,EAAI;IAEjC,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CA+H1D;IAED;;;;;;;OAOG;YACY,UAAU;IA4HzB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;CAwBvB;AAeD;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAkCxE;AAeD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAejH;AA6BD,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAElE,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAKjE"}
|