@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProviderConfig } from './types.js';
|
|
1
|
+
import type { ProviderConfig, OrgRole } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Builds the child-process env for one agent session.
|
|
4
4
|
* Default (no provider block) = subscription: remove the API key var so the
|
|
@@ -6,4 +6,32 @@ import type { ProviderConfig } from './types.js';
|
|
|
6
6
|
* Never stores secrets in org JSON — only env var NAMES.
|
|
7
7
|
*/
|
|
8
8
|
export declare function resolveProviderEnv(cfg: ProviderConfig | undefined, parentEnv?: Record<string, string | undefined>): Record<string, string>;
|
|
9
|
+
/** One entry of `agents.providers` as written by `monomind providers configure`. */
|
|
10
|
+
export interface ConfiguredProviderEntry {
|
|
11
|
+
name: string;
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
model?: string;
|
|
14
|
+
baseUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Look up a named provider from the project config (`agents.providers`,
|
|
17
|
+
* written by `monomind providers configure`). Fresh disk read — the daemon is
|
|
18
|
+
* long-lived and a cached config would miss keys configured after start. */
|
|
19
|
+
export declare function lookupConfiguredProvider(name: string, searchFrom?: string): ConfiguredProviderEntry | undefined;
|
|
20
|
+
/** Effective provider config for a role. Precedence:
|
|
21
|
+
* 1. explicit role-level `provider` block (unchanged behaviour),
|
|
22
|
+
* 2. `adapter_config.provider` — a named provider resolved from
|
|
23
|
+
* `monomind providers configure` (baseUrl+apiKey → base-url kind,
|
|
24
|
+
* apiKey only → api-key kind),
|
|
25
|
+
* 3. none (subscription login).
|
|
26
|
+
*
|
|
27
|
+
* `defaultModel` carries the named provider's configured default model so
|
|
28
|
+
* roles without an explicit adapter_config.model still get a sensible one.
|
|
29
|
+
* Throws with an actionable message when the named provider is missing or
|
|
30
|
+
* carries neither key nor endpoint — before this, the reference was silently
|
|
31
|
+
* stripped by the schema and the run died ten minutes later with an opaque
|
|
32
|
+
* "issue with the selected model" from the engine. */
|
|
33
|
+
export declare function resolveRoleProvider(role: Pick<OrgRole, 'provider' | 'adapter_config'>, searchFrom?: string): {
|
|
34
|
+
cfg?: ProviderConfig;
|
|
35
|
+
defaultModel?: string;
|
|
36
|
+
};
|
|
9
37
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/orgrt/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/orgrt/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAK1D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,GAAG,SAAS,EAC/B,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAC1D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+ExB;AAED,oFAAoF;AACpF,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;6EAE6E;AAC7E,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,MAAsB,GACjC,uBAAuB,GAAG,SAAS,CAerC;AAED;;;;;;;;;;;;uDAYuD;AACvD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAAC,EAClD,UAAU,GAAE,MAAsB,GACjC;IAAE,GAAG,CAAC,EAAE,cAAc,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAuBjD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { configManager } from '../services/config-file-manager.js';
|
|
1
2
|
const KEY_VAR = ['ANTHROPIC', 'API', 'KEY'].join('_');
|
|
2
3
|
/**
|
|
3
4
|
* Builds the child-process env for one agent session.
|
|
@@ -19,7 +20,8 @@ export function resolveProviderEnv(cfg, parentEnv = process.env) {
|
|
|
19
20
|
break;
|
|
20
21
|
case 'api-key': {
|
|
21
22
|
const name = cfg?.apiKeyEnv ?? KEY_VAR;
|
|
22
|
-
|
|
23
|
+
// Direct value (named-provider config) takes precedence over the env var.
|
|
24
|
+
const key = cfg?.apiKey ?? parentEnv[name];
|
|
23
25
|
if (!key)
|
|
24
26
|
throw new Error(`provider api-key: env var ${name} is not set`);
|
|
25
27
|
env[KEY_VAR] = key;
|
|
@@ -31,7 +33,11 @@ export function resolveProviderEnv(cfg, parentEnv = process.env) {
|
|
|
31
33
|
throw new Error('provider base-url: baseUrl is required');
|
|
32
34
|
env.ANTHROPIC_BASE_URL = cfg.baseUrl;
|
|
33
35
|
delete env[KEY_VAR];
|
|
34
|
-
|
|
36
|
+
// Direct value (named-provider config) first, then the named env var.
|
|
37
|
+
if (cfg.authToken) {
|
|
38
|
+
env.ANTHROPIC_AUTH_TOKEN = cfg.authToken;
|
|
39
|
+
}
|
|
40
|
+
else if (cfg.authTokenEnv) {
|
|
35
41
|
const tok = parentEnv[cfg.authTokenEnv];
|
|
36
42
|
if (!tok)
|
|
37
43
|
throw new Error(`provider base-url: env var ${cfg.authTokenEnv} is not set`);
|
|
@@ -96,4 +102,58 @@ export function resolveProviderEnv(cfg, parentEnv = process.env) {
|
|
|
96
102
|
}
|
|
97
103
|
return env;
|
|
98
104
|
}
|
|
105
|
+
/** Look up a named provider from the project config (`agents.providers`,
|
|
106
|
+
* written by `monomind providers configure`). Fresh disk read — the daemon is
|
|
107
|
+
* long-lived and a cached config would miss keys configured after start. */
|
|
108
|
+
export function lookupConfiguredProvider(name, searchFrom = process.cwd()) {
|
|
109
|
+
if (!name)
|
|
110
|
+
return undefined;
|
|
111
|
+
const config = configManager.load(searchFrom);
|
|
112
|
+
const agents = (config?.agents ?? {});
|
|
113
|
+
const providers = (agents.providers ?? []);
|
|
114
|
+
const entry = providers.find((p) => typeof p.name === 'string' && p.name.toLowerCase() === name.toLowerCase());
|
|
115
|
+
if (!entry)
|
|
116
|
+
return undefined;
|
|
117
|
+
return {
|
|
118
|
+
name: entry.name,
|
|
119
|
+
apiKey: typeof entry.apiKey === 'string' ? entry.apiKey : undefined,
|
|
120
|
+
model: typeof entry.model === 'string' ? entry.model : undefined,
|
|
121
|
+
baseUrl: typeof entry.baseUrl === 'string' ? entry.baseUrl : undefined,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/** Effective provider config for a role. Precedence:
|
|
125
|
+
* 1. explicit role-level `provider` block (unchanged behaviour),
|
|
126
|
+
* 2. `adapter_config.provider` — a named provider resolved from
|
|
127
|
+
* `monomind providers configure` (baseUrl+apiKey → base-url kind,
|
|
128
|
+
* apiKey only → api-key kind),
|
|
129
|
+
* 3. none (subscription login).
|
|
130
|
+
*
|
|
131
|
+
* `defaultModel` carries the named provider's configured default model so
|
|
132
|
+
* roles without an explicit adapter_config.model still get a sensible one.
|
|
133
|
+
* Throws with an actionable message when the named provider is missing or
|
|
134
|
+
* carries neither key nor endpoint — before this, the reference was silently
|
|
135
|
+
* stripped by the schema and the run died ten minutes later with an opaque
|
|
136
|
+
* "issue with the selected model" from the engine. */
|
|
137
|
+
export function resolveRoleProvider(role, searchFrom = process.cwd()) {
|
|
138
|
+
if (role.provider)
|
|
139
|
+
return { cfg: role.provider };
|
|
140
|
+
const name = role.adapter_config?.provider;
|
|
141
|
+
if (!name)
|
|
142
|
+
return {};
|
|
143
|
+
const entry = lookupConfiguredProvider(name, searchFrom);
|
|
144
|
+
const hint = `run: monomind providers configure -p ${name} -k <api-key> -e <endpoint-url>`;
|
|
145
|
+
if (!entry) {
|
|
146
|
+
throw new Error(`adapter_config.provider "${name}" is not configured in this project (${hint})`);
|
|
147
|
+
}
|
|
148
|
+
if (entry.baseUrl && entry.apiKey) {
|
|
149
|
+
return {
|
|
150
|
+
cfg: { kind: 'base-url', baseUrl: entry.baseUrl, authToken: entry.apiKey },
|
|
151
|
+
defaultModel: entry.model,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
if (entry.apiKey) {
|
|
155
|
+
return { cfg: { kind: 'api-key', apiKey: entry.apiKey }, defaultModel: entry.model };
|
|
156
|
+
}
|
|
157
|
+
throw new Error(`provider "${name}" has neither an API key nor an endpoint configured (${hint})`);
|
|
158
|
+
}
|
|
99
159
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/orgrt/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/orgrt/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { AgentRunner, AgentRunArgs, AgentMessage } from './agent-runner.js';
|
|
2
|
+
interface QwenRpcContentBlock {
|
|
3
|
+
type: string;
|
|
4
|
+
text?: string;
|
|
5
|
+
thinking?: string;
|
|
6
|
+
}
|
|
7
|
+
interface QwenRpcMessage {
|
|
8
|
+
content?: QwenRpcContentBlock[];
|
|
9
|
+
}
|
|
10
|
+
/** Pure, transport-independent JSONL line decoder — same shape as
|
|
11
|
+
* pi-rpc-runner.ts's JsonlDecoder. Exported for unit testing without a
|
|
12
|
+
* real subprocess. */
|
|
13
|
+
export declare class QwenJsonlDecoder {
|
|
14
|
+
private buf;
|
|
15
|
+
feed(chunk: string): Record<string, unknown>[];
|
|
16
|
+
}
|
|
17
|
+
/** Encode a client→server `user` message as one LF-terminated JSON line —
|
|
18
|
+
* the plain-string content form (see file header for why the
|
|
19
|
+
* content-block-array form isn't used). Exported for unit testing the
|
|
20
|
+
* exact wire format. */
|
|
21
|
+
export declare function encodeQwenRpcUserMessage(text: string): string;
|
|
22
|
+
/** Extract assistant-visible text from an `assistant` event's
|
|
23
|
+
* `message.content` array. `thinking` blocks are dropped (internal
|
|
24
|
+
* reasoning, not meant for the bus). Exported for unit testing against
|
|
25
|
+
* fixture content arrays. */
|
|
26
|
+
export declare function extractQwenRpcText(message: QwenRpcMessage): string;
|
|
27
|
+
/** The subset of a spawned child process this runner needs — same
|
|
28
|
+
* duck-typed seam as pi-rpc-runner.ts's PiRpcProcess, so tests can supply
|
|
29
|
+
* a fake implementation to exercise the full turn-completion state
|
|
30
|
+
* machine without a real `qwen` binary. */
|
|
31
|
+
export interface QwenRpcProcess {
|
|
32
|
+
stdin: {
|
|
33
|
+
write(data: string): void;
|
|
34
|
+
} | null;
|
|
35
|
+
stdout: {
|
|
36
|
+
on(event: 'data', cb: (chunk: Buffer) => void): void;
|
|
37
|
+
} | null;
|
|
38
|
+
stderr: {
|
|
39
|
+
on(event: 'data', cb: (chunk: Buffer) => void): void;
|
|
40
|
+
} | null;
|
|
41
|
+
on(event: 'close', cb: (code: number | null) => void): void;
|
|
42
|
+
on(event: 'error', cb: (err: Error) => void): void;
|
|
43
|
+
kill(signal?: string): void;
|
|
44
|
+
}
|
|
45
|
+
export type SpawnQwenRpc = (bin: string, args: string[], opts: {
|
|
46
|
+
cwd: string;
|
|
47
|
+
env: Record<string, string | undefined>;
|
|
48
|
+
}) => QwenRpcProcess;
|
|
49
|
+
export declare class QwenRpcAgentRunner implements AgentRunner {
|
|
50
|
+
private qwenBin?;
|
|
51
|
+
private spawnFn;
|
|
52
|
+
constructor(qwenBin?: string | undefined, spawnFn?: SpawnQwenRpc);
|
|
53
|
+
run(args: AgentRunArgs): AsyncIterable<AgentMessage>;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=qwen-rpc-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen-rpc-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/qwen-rpc-runner.ts"],"names":[],"mappings":"AA+EA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQjF,UAAU,mBAAmB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAAE;AACjF,UAAU,cAAc;IAAG,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAAE;AAE7D;;uBAEuB;AACvB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAM;IACjB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAW7C;CACF;AAED;;;yBAGyB;AACzB,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;8BAG8B;AAC9B,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAKlE;AAED;;;4CAG4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,EAAE;QAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,MAAM,EAAE;QAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAE,KAAK,cAAc,CAAC;AAK3I,qBAAa,kBAAmB,YAAW,WAAW;IACxC,OAAO,CAAC,OAAO,CAAC;IAAU,OAAO,CAAC,OAAO;IAArD,YAAoB,OAAO,CAAC,EAAE,MAAM,YAAA,EAAU,OAAO,GAAE,YAAkC,EAAI;IAEtF,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAgN1D;CACF"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
// packages/@monomind/cli/src/orgrt/qwen-rpc-runner.ts
|
|
2
|
+
/**
|
|
3
|
+
* QwenRpcAgentRunner — AgentRunner impl backed by the Qwen Code CLI's
|
|
4
|
+
* bidirectional `--input-format stream-json --output-format stream-json`
|
|
5
|
+
* mode (session-lifetime), instead of the default QwenAgentRunner
|
|
6
|
+
* (qwen-runner.ts), which spawns a fresh `qwen -p "<prompt>"` process per
|
|
7
|
+
* mailbox turn.
|
|
8
|
+
*
|
|
9
|
+
* OPT-IN, not the default. Select via role/org `runtime: 'qwen-rpc'`.
|
|
10
|
+
* Prefer plain `runtime: 'qwen'` (QwenAgentRunner) unless you specifically
|
|
11
|
+
* want the benefit this buys: the subprocess stays alive for the WHOLE
|
|
12
|
+
* mailbox session, so conversational context carries naturally (no
|
|
13
|
+
* `--resume <sessionId>` round-trip per turn) and there's no per-turn
|
|
14
|
+
* spawn/bootstrap cost.
|
|
15
|
+
*
|
|
16
|
+
* Protocol — LIVE-VERIFIED against qwen-code v0.21.13 (issue #182). The
|
|
17
|
+
* flag exists but is hidden from `qwen --help`; found by reading the
|
|
18
|
+
* bundled minified source (`packages/cli`'s yargs config,
|
|
19
|
+
* `.option("input-format", { choices: ["text","stream-json"] })`) and
|
|
20
|
+
* confirmed the exact message schema from the CLI's own bundled source
|
|
21
|
+
* (`packages/cli/src/nonInteractive/types.ts`, compiled into
|
|
22
|
+
* `chunks/session-*.js`) — the `isCLIUserMessage`/`extractUserMessageText`
|
|
23
|
+
* predicates there define the client→server shape literally, not from
|
|
24
|
+
* prose docs. Then confirmed LIVE: sent both message forms below on the
|
|
25
|
+
* same persistent subprocess against a z.ai/GLM-5.3 backend — both
|
|
26
|
+
* answered correctly, on the SAME session_id, proving session-lifetime
|
|
27
|
+
* persistence:
|
|
28
|
+
*
|
|
29
|
+
* Client → server (this runner sends):
|
|
30
|
+
* {"type":"user","message":{"content":"<text>"}}
|
|
31
|
+
* (a content-block-array form is also accepted —
|
|
32
|
+
* {"type":"user","message":{"content":[{"type":"text","text":"..."}]}}
|
|
33
|
+
* — but the plain-string form is simpler and was used for all live
|
|
34
|
+
* verification, so this runner sticks to it)
|
|
35
|
+
*
|
|
36
|
+
* Server → client (same vocabulary as QwenAgentRunner's per-spawn
|
|
37
|
+
* stream-json, confirmed identical live under RPC mode too):
|
|
38
|
+
* {"type":"system","subtype":"init","session_id":"...",...}
|
|
39
|
+
* {"type":"assistant","session_id":"...",
|
|
40
|
+
* "message":{"content":[{"type":"text","text":"..."},
|
|
41
|
+
* {"type":"thinking","thinking":"..."}]}}
|
|
42
|
+
* {"type":"result","subtype":"success"|"error","session_id":"...",
|
|
43
|
+
* "usage":{"input_tokens":N,"output_tokens":N,...},
|
|
44
|
+
* "error":{"message":"..."}|"<string>"}
|
|
45
|
+
* `result` is a single-fire-per-turn completion signal — confirmed live
|
|
46
|
+
* (same as the non-RPC QwenAgentRunner already relies on for its
|
|
47
|
+
* per-spawn invocations). A `system`/`init` event was also observed
|
|
48
|
+
* re-emitted at the start of a SECOND turn on the same subprocess — not
|
|
49
|
+
* treated as a new-session signal here, since session_id stayed
|
|
50
|
+
* identical across it in the live test.
|
|
51
|
+
*
|
|
52
|
+
* NOT verified live: a turn where qwen runs multiple of its OWN native
|
|
53
|
+
* tools (read/edit/bash) in sequence before responding — same class of gap
|
|
54
|
+
* pi-rpc-runner.ts disclosed for pi before its own live verification
|
|
55
|
+
* confirmed a single fire-once completion signal there too. `result`
|
|
56
|
+
* firing exactly once per submitted `user` message (not once per internal
|
|
57
|
+
* tool-use cycle) is inferred by symmetry with the non-RPC QwenAgentRunner
|
|
58
|
+
* (which already treats `result` this way across a `-p` invocation that
|
|
59
|
+
* CAN involve multiple internal tool calls) rather than independently
|
|
60
|
+
* re-confirmed here. Revalidate if this runner ends a turn early or hangs
|
|
61
|
+
* on a heavily tool-call-heavy prompt; fall back to plain `runtime: 'qwen'`
|
|
62
|
+
* if it misbehaves.
|
|
63
|
+
*
|
|
64
|
+
* Auth: inherited from the CLI's own login flow — same as QwenAgentRunner.
|
|
65
|
+
* No env vars set here. (Live verification against a custom
|
|
66
|
+
* OpenAI-compatible backend needed `--auth-type openai` plus
|
|
67
|
+
* `OPENAI_API_KEY`/`OPENAI_BASE_URL`/`OPENAI_MODEL` env vars, per
|
|
68
|
+
* qwen-runner.ts's own header — not something this runner forces, since a
|
|
69
|
+
* real deployment's own qwen config/subscription should already be set up
|
|
70
|
+
* the way its operator wants.)
|
|
71
|
+
*
|
|
72
|
+
* Org tools (org_send, knowledge_search, ask_human, …) — FENCE PROTOCOL:
|
|
73
|
+
* Qwen's own native tools (read/edit/bash) execute autonomously inside
|
|
74
|
+
* qwen itself and never reach this runner — only org tools ride the
|
|
75
|
+
* shared tool-fence protocol (tool-fence.ts), extracted from assistant
|
|
76
|
+
* text collected before `result` and fed back as a new `user` message in
|
|
77
|
+
* the SAME session.
|
|
78
|
+
*/
|
|
79
|
+
import { spawn } from 'node:child_process';
|
|
80
|
+
import { buildToolProtocol, parseToolCalls, executeToolCall, formatToolResults, MAX_TOOL_ROUNDS, TOOL_CALL_RE } from './tool-fence.js';
|
|
81
|
+
/** Upper bound on how long a single turn's wait for `result` may run before
|
|
82
|
+
* the mid-session silence watchdog (below) considers qwen wedged. */
|
|
83
|
+
const SETTLE_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
|
|
84
|
+
const STARTUP_GRACE_MS = 45_000;
|
|
85
|
+
/** Pure, transport-independent JSONL line decoder — same shape as
|
|
86
|
+
* pi-rpc-runner.ts's JsonlDecoder. Exported for unit testing without a
|
|
87
|
+
* real subprocess. */
|
|
88
|
+
export class QwenJsonlDecoder {
|
|
89
|
+
buf = '';
|
|
90
|
+
feed(chunk) {
|
|
91
|
+
this.buf += chunk;
|
|
92
|
+
const parts = this.buf.split('\n');
|
|
93
|
+
this.buf = parts.pop() ?? '';
|
|
94
|
+
const out = [];
|
|
95
|
+
for (const line of parts) {
|
|
96
|
+
const trimmed = line.trim();
|
|
97
|
+
if (!trimmed)
|
|
98
|
+
continue;
|
|
99
|
+
try {
|
|
100
|
+
out.push(JSON.parse(trimmed));
|
|
101
|
+
}
|
|
102
|
+
catch { /* skip malformed line */ }
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Encode a client→server `user` message as one LF-terminated JSON line —
|
|
108
|
+
* the plain-string content form (see file header for why the
|
|
109
|
+
* content-block-array form isn't used). Exported for unit testing the
|
|
110
|
+
* exact wire format. */
|
|
111
|
+
export function encodeQwenRpcUserMessage(text) {
|
|
112
|
+
return JSON.stringify({ type: 'user', message: { content: text } }) + '\n';
|
|
113
|
+
}
|
|
114
|
+
/** Extract assistant-visible text from an `assistant` event's
|
|
115
|
+
* `message.content` array. `thinking` blocks are dropped (internal
|
|
116
|
+
* reasoning, not meant for the bus). Exported for unit testing against
|
|
117
|
+
* fixture content arrays. */
|
|
118
|
+
export function extractQwenRpcText(message) {
|
|
119
|
+
return (message.content ?? [])
|
|
120
|
+
.filter((b) => b.type === 'text' && typeof b.text === 'string')
|
|
121
|
+
.map((b) => b.text)
|
|
122
|
+
.join('\n');
|
|
123
|
+
}
|
|
124
|
+
const defaultSpawnQwenRpc = (bin, args, opts) => spawn(bin, args, { cwd: opts.cwd, env: opts.env, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
125
|
+
export class QwenRpcAgentRunner {
|
|
126
|
+
qwenBin;
|
|
127
|
+
spawnFn;
|
|
128
|
+
constructor(qwenBin, spawnFn = defaultSpawnQwenRpc) {
|
|
129
|
+
this.qwenBin = qwenBin;
|
|
130
|
+
this.spawnFn = spawnFn;
|
|
131
|
+
}
|
|
132
|
+
async *run(args) {
|
|
133
|
+
const bin = this.qwenBin || process.env.QWEN_CLI_BIN || 'qwen';
|
|
134
|
+
const cliArgs = ['--input-format', 'stream-json', '--output-format', 'stream-json', '--yolo'];
|
|
135
|
+
if (args.model)
|
|
136
|
+
cliArgs.push('-m', args.model);
|
|
137
|
+
const child = this.spawnFn(bin, cliArgs, {
|
|
138
|
+
cwd: args.cwd,
|
|
139
|
+
env: { ...process.env, ...args.env },
|
|
140
|
+
});
|
|
141
|
+
let stderrTail = '';
|
|
142
|
+
child.stderr?.on('data', (c) => { stderrTail = (stderrTail + c.toString()).slice(-4000); });
|
|
143
|
+
const decoder = new QwenJsonlDecoder();
|
|
144
|
+
const eventQueue = [];
|
|
145
|
+
const waiters = [];
|
|
146
|
+
let closed = false;
|
|
147
|
+
let closeCode = null;
|
|
148
|
+
let lastEventAt = Date.now();
|
|
149
|
+
const pushEvents = (evs) => {
|
|
150
|
+
for (const ev of evs) {
|
|
151
|
+
const waiter = waiters.shift();
|
|
152
|
+
if (waiter)
|
|
153
|
+
waiter(ev);
|
|
154
|
+
else
|
|
155
|
+
eventQueue.push(ev);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
child.stdout?.on('data', (c) => { lastEventAt = Date.now(); pushEvents(decoder.feed(c.toString())); });
|
|
159
|
+
let processExited = false;
|
|
160
|
+
child.on('close', (code) => { closed = true; processExited = true; closeCode = code; pushEvents([{ type: '__closed__', code }]); });
|
|
161
|
+
child.on('error', (err) => { closed = true; pushEvents([{ type: '__error__', error: err }]); });
|
|
162
|
+
const nextEvent = () => {
|
|
163
|
+
const queued = eventQueue.shift();
|
|
164
|
+
if (queued)
|
|
165
|
+
return Promise.resolve(queued);
|
|
166
|
+
if (closed)
|
|
167
|
+
return Promise.resolve({ type: '__closed__', code: closeCode });
|
|
168
|
+
return new Promise((resolve) => waiters.push(resolve));
|
|
169
|
+
};
|
|
170
|
+
const send = (text) => {
|
|
171
|
+
child.stdin?.write(encodeQwenRpcUserMessage(text));
|
|
172
|
+
};
|
|
173
|
+
const KILL_GRACE_MS = 5000;
|
|
174
|
+
let killTimer;
|
|
175
|
+
const killChild = () => {
|
|
176
|
+
try {
|
|
177
|
+
child.kill('SIGTERM');
|
|
178
|
+
}
|
|
179
|
+
catch { /* already gone */ }
|
|
180
|
+
killTimer = setTimeout(() => { try {
|
|
181
|
+
child.kill('SIGKILL');
|
|
182
|
+
}
|
|
183
|
+
catch { /* already gone */ } }, KILL_GRACE_MS);
|
|
184
|
+
killTimer.unref?.();
|
|
185
|
+
};
|
|
186
|
+
let sawAnyEvent = false;
|
|
187
|
+
let hangTimer = setTimeout(() => {
|
|
188
|
+
if (!sawAnyEvent) {
|
|
189
|
+
closed = true;
|
|
190
|
+
killChild();
|
|
191
|
+
pushEvents([{ type: '__hang__' }]);
|
|
192
|
+
}
|
|
193
|
+
}, STARTUP_GRACE_MS);
|
|
194
|
+
const disarmHang = () => { if (!sawAnyEvent) {
|
|
195
|
+
sawAnyEvent = true;
|
|
196
|
+
if (hangTimer) {
|
|
197
|
+
clearTimeout(hangTimer);
|
|
198
|
+
hangTimer = undefined;
|
|
199
|
+
}
|
|
200
|
+
} };
|
|
201
|
+
// Rolling watchdog — same rationale/pause logic as pi-rpc-runner.ts:
|
|
202
|
+
// paused whenever an org tool call is in flight (ask_human can
|
|
203
|
+
// legitimately block far longer than the silence window) or there's no
|
|
204
|
+
// turn in flight at all (idling on the role's own mailbox is normal).
|
|
205
|
+
let toolCallInFlight = false;
|
|
206
|
+
let turnInFlight = false;
|
|
207
|
+
const MID_SESSION_SILENCE_MS = SETTLE_TIMEOUT_MS;
|
|
208
|
+
const silenceWatchdog = setInterval(() => {
|
|
209
|
+
if (closed || toolCallInFlight || !turnInFlight)
|
|
210
|
+
return;
|
|
211
|
+
if (Date.now() - lastEventAt > MID_SESSION_SILENCE_MS) {
|
|
212
|
+
closed = true;
|
|
213
|
+
killChild();
|
|
214
|
+
pushEvents([{ type: '__hang__' }]);
|
|
215
|
+
}
|
|
216
|
+
}, 30_000);
|
|
217
|
+
silenceWatchdog.unref?.();
|
|
218
|
+
let sessionId;
|
|
219
|
+
try {
|
|
220
|
+
let first = true;
|
|
221
|
+
for await (const p of args.prompt) {
|
|
222
|
+
const text = typeof p === 'string' ? p : (p?.message?.content ?? String(p ?? ''));
|
|
223
|
+
let nextMessage = first ? `${args.systemPrompt}${buildToolProtocol(args.tools)}\n\n---\n\n${text}` : text;
|
|
224
|
+
first = false;
|
|
225
|
+
let turnInputTokens = 0;
|
|
226
|
+
let turnOutputTokens = 0;
|
|
227
|
+
let round = 0;
|
|
228
|
+
turnInFlight = true;
|
|
229
|
+
try {
|
|
230
|
+
turnLoop: for (;;) {
|
|
231
|
+
send(nextMessage);
|
|
232
|
+
const collectedText = [];
|
|
233
|
+
let sawResult = false;
|
|
234
|
+
let resultError;
|
|
235
|
+
for (;;) {
|
|
236
|
+
const ev = await nextEvent();
|
|
237
|
+
disarmHang();
|
|
238
|
+
const kind = ev.type;
|
|
239
|
+
if (kind === '__closed__' || kind === '__error__' || kind === '__hang__') {
|
|
240
|
+
if (kind === '__error__') {
|
|
241
|
+
throw ev.error;
|
|
242
|
+
}
|
|
243
|
+
const hangSuspected = kind === '__hang__';
|
|
244
|
+
throw new Error(hangSuspected
|
|
245
|
+
? `QwenRpcAgentRunner: qwen produced no output within ${STARTUP_GRACE_MS / 1000}s and was killed. ` +
|
|
246
|
+
'This usually means it is stuck on a prompt headless mode has no way to answer. Run `qwen` ' +
|
|
247
|
+
`once manually in a real terminal in this project to check, then retry.${stderrTail ? `\nstderr: ${stderrTail.slice(-500)}` : ''}`
|
|
248
|
+
: `QwenRpcAgentRunner: qwen rpc process ended unexpectedly (${kind})` +
|
|
249
|
+
(stderrTail ? `\nstderr: ${stderrTail.slice(-500)}` : ''));
|
|
250
|
+
}
|
|
251
|
+
const evSessionId = ev.session_id;
|
|
252
|
+
if (evSessionId)
|
|
253
|
+
sessionId = evSessionId;
|
|
254
|
+
if (kind === 'assistant') {
|
|
255
|
+
const message = ev.message;
|
|
256
|
+
if (message) {
|
|
257
|
+
const t = extractQwenRpcText(message);
|
|
258
|
+
if (t)
|
|
259
|
+
collectedText.push(t);
|
|
260
|
+
}
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
if (kind === 'result') {
|
|
264
|
+
sawResult = true;
|
|
265
|
+
const usage = ev.usage;
|
|
266
|
+
if (usage) {
|
|
267
|
+
turnInputTokens += usage.input_tokens ?? 0;
|
|
268
|
+
turnOutputTokens += usage.output_tokens ?? 0;
|
|
269
|
+
}
|
|
270
|
+
if (ev.subtype === 'error') {
|
|
271
|
+
const err = ev.error;
|
|
272
|
+
resultError = typeof err === 'string' ? err : err?.message ?? 'qwen result: error';
|
|
273
|
+
}
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
// system/init and anything else — drained and ignored.
|
|
277
|
+
}
|
|
278
|
+
if (resultError) {
|
|
279
|
+
throw new Error(`QwenRpcAgentRunner: qwen turn failed: ${resultError}` + (stderrTail ? `\nstderr: ${stderrTail.slice(-500)}` : ''));
|
|
280
|
+
}
|
|
281
|
+
if (!sawResult)
|
|
282
|
+
break turnLoop; // process closed before result — nothing to extract this round
|
|
283
|
+
const rawText = collectedText.join('\n');
|
|
284
|
+
const visibleText = rawText.replace(TOOL_CALL_RE, '').trim();
|
|
285
|
+
if (visibleText)
|
|
286
|
+
yield { type: 'assistant', session_id: sessionId, text: visibleText };
|
|
287
|
+
const malformed = [];
|
|
288
|
+
const calls = parseToolCalls([rawText], (raw, err) => malformed.push(`[monomind] ignored malformed tool_call fence (${err}): ${raw.slice(0, 200)}`));
|
|
289
|
+
for (const note of malformed)
|
|
290
|
+
yield { type: 'assistant', session_id: sessionId, text: note };
|
|
291
|
+
if (calls.length === 0)
|
|
292
|
+
break turnLoop;
|
|
293
|
+
round += 1;
|
|
294
|
+
if (round > MAX_TOOL_ROUNDS) {
|
|
295
|
+
yield { type: 'assistant', session_id: sessionId, text: `[monomind] tool-call round cap (${MAX_TOOL_ROUNDS}) reached — dropping ${calls.length} pending tool call(s)` };
|
|
296
|
+
break turnLoop;
|
|
297
|
+
}
|
|
298
|
+
toolCallInFlight = true;
|
|
299
|
+
const results = [];
|
|
300
|
+
try {
|
|
301
|
+
for (const call of calls)
|
|
302
|
+
results.push(await executeToolCall(args.tools, call, args.canUseTool));
|
|
303
|
+
}
|
|
304
|
+
finally {
|
|
305
|
+
toolCallInFlight = false;
|
|
306
|
+
lastEventAt = Date.now();
|
|
307
|
+
}
|
|
308
|
+
nextMessage = formatToolResults(calls, results);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
finally {
|
|
312
|
+
turnInFlight = false;
|
|
313
|
+
}
|
|
314
|
+
yield {
|
|
315
|
+
type: 'result',
|
|
316
|
+
session_id: sessionId,
|
|
317
|
+
subtype: 'success',
|
|
318
|
+
input_tokens: turnInputTokens,
|
|
319
|
+
output_tokens: turnOutputTokens,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
catch (err) {
|
|
324
|
+
if (err.code === 'ENOENT') {
|
|
325
|
+
throw new Error('QwenRpcAgentRunner requires the Qwen Code CLI (qwen) on PATH. ' +
|
|
326
|
+
'Install it: npm install -g @qwen-code/qwen-code, then run `qwen` once ' +
|
|
327
|
+
'to authenticate. Or unset the runtime to use Claude.');
|
|
328
|
+
}
|
|
329
|
+
throw err;
|
|
330
|
+
}
|
|
331
|
+
finally {
|
|
332
|
+
if (hangTimer)
|
|
333
|
+
clearTimeout(hangTimer);
|
|
334
|
+
clearInterval(silenceWatchdog);
|
|
335
|
+
if (processExited) {
|
|
336
|
+
if (killTimer)
|
|
337
|
+
clearTimeout(killTimer);
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
if (!killTimer)
|
|
341
|
+
killChild();
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=qwen-rpc-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qwen-rpc-runner.js","sourceRoot":"","sources":["../../../src/orgrt/qwen-rpc-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/qwen-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"qwen-runner.d.ts","sourceRoot":"","sources":["../../../src/orgrt/qwen-runner.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAyCjF;4EAC4E;AAC5E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;IAChD,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACpH,CAoCA;AAED,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,OAAO,CAAC;IAA5B,YAAoB,OAAO,CAAC,EAAE,MAAM,YAAA,EAAI;IAEjC,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAsF1D;IAED,OAAO,CAAC,OAAO;CAgGhB"}
|
|
@@ -12,14 +12,18 @@
|
|
|
12
12
|
* Org tools — FENCE PROTOCOL: same approach as the other subprocess runners
|
|
13
13
|
* (see tool-fence.ts).
|
|
14
14
|
*
|
|
15
|
-
* Subprocess protocol —
|
|
16
|
-
*
|
|
15
|
+
* Subprocess protocol — LIVE-VERIFIED against qwen-code v0.21.13 (issue
|
|
16
|
+
* #182 investigation; z.ai/GLM-5.3 as the OpenAI-compatible backend, `qwen
|
|
17
|
+
* --auth-type openai` + `OPENAI_API_KEY`/`OPENAI_BASE_URL`/`OPENAI_MODEL`):
|
|
17
18
|
* - Invocation: `qwen -p "<prompt>" --output-format stream-json --yolo
|
|
18
19
|
* [-m <model>] [--resume <sessionId> | --continue]`
|
|
19
|
-
* - stream-json emits one JSON object per line;
|
|
20
|
+
* - stream-json emits one JSON object per line; CONFIRMED shape (the
|
|
21
|
+
* public docs' `usage.tokens.{input,output}` nesting does NOT match
|
|
22
|
+
* live output — real usage fields are flat):
|
|
20
23
|
* { type: 'system'|'assistant'|'result', subtype, uuid, session_id,
|
|
21
24
|
* role: 'assistant',
|
|
22
|
-
* message: { content: [{type:'text', text}],
|
|
25
|
+
* message: { content: [{type:'text', text}],
|
|
26
|
+
* usage: { input_tokens, output_tokens, cache_read_input_tokens, total_tokens } } }
|
|
23
27
|
* - Session continuity: `--resume [sessionId]` resumes a specific session,
|
|
24
28
|
* `--continue` resumes the most recent one; `session_id` is carried on
|
|
25
29
|
* every event.
|
|
@@ -65,10 +69,9 @@ export function parseQwenEvents(lines) {
|
|
|
65
69
|
rawTexts.push(text);
|
|
66
70
|
}
|
|
67
71
|
if (ev.type === 'result') {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
outputTokens = tokens.output ?? 0;
|
|
72
|
+
if (ev.usage) {
|
|
73
|
+
inputTokens = ev.usage.input_tokens ?? 0;
|
|
74
|
+
outputTokens = ev.usage.output_tokens ?? 0;
|
|
72
75
|
}
|
|
73
76
|
if (ev.subtype === 'error') {
|
|
74
77
|
error = typeof ev.error === 'string' ? ev.error : ev.error?.message ?? 'qwen result: error';
|