@monoes/monomindcli 2.9.23 → 2.9.25
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/dist/src/agents/registry-builder.d.ts.map +1 -1
- package/dist/src/agents/registry-builder.js +8 -9
- package/dist/src/agents/registry-builder.js.map +1 -1
- package/dist/src/autopilot-state.js +6 -6
- package/dist/src/autopilot-state.js.map +1 -1
- package/dist/src/browser/action-builder/analyzer.d.ts.map +1 -1
- package/dist/src/browser/action-builder/analyzer.js +6 -6
- package/dist/src/browser/action-builder/analyzer.js.map +1 -1
- package/dist/src/browser/action-builder/types.d.ts.map +1 -1
- package/dist/src/browser/adapters/gemini.d.ts.map +1 -1
- package/dist/src/browser/adapters/index.d.ts.map +1 -1
- package/dist/src/browser/adapters/index.js +2 -2
- package/dist/src/browser/adapters/index.js.map +1 -1
- package/dist/src/browser/adapters/instagram.d.ts.map +1 -1
- package/dist/src/browser/adapters/linkedin.d.ts.map +1 -1
- package/dist/src/browser/adapters/linkedin.js +9 -1
- package/dist/src/browser/adapters/linkedin.js.map +1 -1
- package/dist/src/browser/adapters/x.d.ts.map +1 -1
- package/dist/src/browser/adapters/x.js +14 -2
- package/dist/src/browser/adapters/x.js.map +1 -1
- package/dist/src/browser/dashboard/server.d.ts.map +1 -1
- package/dist/src/browser/dashboard/server.js +22 -12
- package/dist/src/browser/dashboard/server.js.map +1 -1
- package/dist/src/browser/dashboard/ui.html +3 -3
- package/dist/src/browser/workflow/engine.d.ts +1 -1
- package/dist/src/browser/workflow/engine.d.ts.map +1 -1
- package/dist/src/browser/workflow/engine.js +74 -25
- package/dist/src/browser/workflow/engine.js.map +1 -1
- package/dist/src/browser/workflow/store.d.ts +1 -1
- package/dist/src/browser/workflow/store.d.ts.map +1 -1
- package/dist/src/browser/workflow/store.js +54 -26
- package/dist/src/browser/workflow/store.js.map +1 -1
- package/dist/src/browser/workflow/types.d.ts.map +1 -1
- package/dist/src/capabilities/cap-code.d.ts.map +1 -1
- package/dist/src/capabilities/cap-code.js.map +1 -1
- package/dist/src/capabilities/cap-data.d.ts.map +1 -1
- package/dist/src/capabilities/cap-data.js +28 -8
- package/dist/src/capabilities/cap-data.js.map +1 -1
- package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
- package/dist/src/capabilities/cap-documents.js +93 -22
- package/dist/src/capabilities/cap-documents.js.map +1 -1
- package/dist/src/capabilities/cap-graph.d.ts.map +1 -1
- package/dist/src/capabilities/cap-graph.js +3 -3
- package/dist/src/capabilities/cap-graph.js.map +1 -1
- package/dist/src/capabilities/cap-media.d.ts.map +1 -1
- package/dist/src/capabilities/cap-media.js +1 -1
- package/dist/src/capabilities/cap-media.js.map +1 -1
- package/dist/src/capabilities/cap-timeline.d.ts.map +1 -1
- package/dist/src/capabilities/cap-timeline.js +33 -7
- package/dist/src/capabilities/cap-timeline.js.map +1 -1
- package/dist/src/capabilities/index.d.ts +5 -5
- package/dist/src/capabilities/index.d.ts.map +1 -1
- package/dist/src/capabilities/index.js +5 -5
- package/dist/src/capabilities/index.js.map +1 -1
- package/dist/src/capabilities/manager.d.ts.map +1 -1
- package/dist/src/capabilities/manager.js +6 -6
- package/dist/src/capabilities/manager.js.map +1 -1
- package/dist/src/capabilities/scanner.d.ts.map +1 -1
- package/dist/src/capabilities/scanner.js +103 -14
- package/dist/src/capabilities/scanner.js.map +1 -1
- package/dist/src/commands/agent-lifecycle.d.ts.map +1 -1
- package/dist/src/commands/agent-lifecycle.js +116 -32
- 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 +72 -19
- package/dist/src/commands/agent-ops.js.map +1 -1
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +11 -3
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze-ast.d.ts.map +1 -1
- package/dist/src/commands/analyze-ast.js +41 -16
- package/dist/src/commands/analyze-ast.js.map +1 -1
- package/dist/src/commands/analyze-diff.d.ts.map +1 -1
- package/dist/src/commands/analyze-diff.js +147 -35
- package/dist/src/commands/analyze-diff.js.map +1 -1
- package/dist/src/commands/analyze-imports.d.ts.map +1 -1
- package/dist/src/commands/analyze-imports.js +59 -16
- 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 +48 -20
- package/dist/src/commands/analyze-symbols.js.map +1 -1
- package/dist/src/commands/analyze.d.ts.map +1 -1
- package/dist/src/commands/analyze.js +30 -14
- 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 +2 -2
- package/dist/src/commands/autopilot.js.map +1 -1
- package/dist/src/commands/browse-action.d.ts.map +1 -1
- package/dist/src/commands/browse-action.js +65 -17
- package/dist/src/commands/browse-action.js.map +1 -1
- package/dist/src/commands/browse-platform.d.ts.map +1 -1
- package/dist/src/commands/browse-platform.js +13 -10
- package/dist/src/commands/browse-platform.js.map +1 -1
- package/dist/src/commands/browse-workflow.d.ts.map +1 -1
- package/dist/src/commands/browse-workflow.js +54 -20
- package/dist/src/commands/browse-workflow.js.map +1 -1
- package/dist/src/commands/browse.js +2 -2
- package/dist/src/commands/browse.js.map +1 -1
- package/dist/src/commands/cleanup.d.ts.map +1 -1
- package/dist/src/commands/cleanup.js +111 -47
- 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 +34 -20
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +90 -49
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/crash-reporting.d.ts.map +1 -1
- package/dist/src/commands/crash-reporting.js +10 -4
- package/dist/src/commands/crash-reporting.js.map +1 -1
- package/dist/src/commands/design-detect.d.ts.map +1 -1
- package/dist/src/commands/design-detect.js +33 -12
- package/dist/src/commands/design-detect.js.map +1 -1
- package/dist/src/commands/design-palette.d.ts.map +1 -1
- package/dist/src/commands/design-palette.js +770 -380
- package/dist/src/commands/design-palette.js.map +1 -1
- package/dist/src/commands/doc.d.ts.map +1 -1
- package/dist/src/commands/doc.js +272 -60
- package/dist/src/commands/doc.js.map +1 -1
- package/dist/src/commands/doctor-env-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-env-checks.js +130 -31
- package/dist/src/commands/doctor-env-checks.js.map +1 -1
- package/dist/src/commands/doctor-monoes-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-monoes-checks.js +20 -7
- package/dist/src/commands/doctor-monoes-checks.js.map +1 -1
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +442 -112
- 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 +132 -59
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/download-embeddings.d.ts.map +1 -1
- package/dist/src/commands/download-embeddings.js +1 -1
- package/dist/src/commands/download-embeddings.js.map +1 -1
- package/dist/src/commands/events.d.ts.map +1 -1
- package/dist/src/commands/events.js +5 -2
- package/dist/src/commands/events.js.map +1 -1
- package/dist/src/commands/guidance.d.ts.map +1 -1
- package/dist/src/commands/guidance.js +38 -14
- package/dist/src/commands/guidance.js.map +1 -1
- package/dist/src/commands/hooks-core-commands.d.ts.map +1 -1
- package/dist/src/commands/hooks-core-commands.js +71 -44
- package/dist/src/commands/hooks-core-commands.js.map +1 -1
- package/dist/src/commands/hooks-coverage-commands.d.ts +1 -2
- package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -1
- package/dist/src/commands/hooks-coverage-commands.js +140 -58
- package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
- package/dist/src/commands/hooks-coverage-gaps.d.ts.map +1 -1
- package/dist/src/commands/hooks-coverage-gaps.js +74 -36
- package/dist/src/commands/hooks-coverage-gaps.js.map +1 -1
- package/dist/src/commands/hooks-coverage-routing.d.ts.map +1 -1
- package/dist/src/commands/hooks-coverage-routing.js +139 -66
- package/dist/src/commands/hooks-coverage-routing.js.map +1 -1
- package/dist/src/commands/hooks-coverage-utils.d.ts.map +1 -1
- package/dist/src/commands/hooks-coverage-utils.js +27 -8
- package/dist/src/commands/hooks-coverage-utils.js.map +1 -1
- package/dist/src/commands/hooks-extended-commands.d.ts.map +1 -1
- package/dist/src/commands/hooks-extended-commands.js +86 -21
- package/dist/src/commands/hooks-extended-commands.js.map +1 -1
- package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -1
- package/dist/src/commands/hooks-routing-commands.js +174 -82
- 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 +96 -61
- package/dist/src/commands/hooks-workers.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +6 -6
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/init-subcommands.d.ts.map +1 -1
- package/dist/src/commands/init-subcommands.js +12 -5
- package/dist/src/commands/init-subcommands.js.map +1 -1
- package/dist/src/commands/init-upgrade.d.ts.map +1 -1
- package/dist/src/commands/init-upgrade.js +46 -23
- package/dist/src/commands/init-upgrade.js.map +1 -1
- package/dist/src/commands/init-wizard.d.ts.map +1 -1
- package/dist/src/commands/init-wizard.js +161 -36
- 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 +132 -47
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +128 -84
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory-admin.d.ts.map +1 -1
- package/dist/src/commands/memory-admin.js +67 -48
- package/dist/src/commands/memory-admin.js.map +1 -1
- package/dist/src/commands/memory-crud.d.ts.map +1 -1
- package/dist/src/commands/memory-crud.js +65 -41
- package/dist/src/commands/memory-crud.js.map +1 -1
- package/dist/src/commands/memory-list.d.ts.map +1 -1
- package/dist/src/commands/memory-list.js +6 -6
- package/dist/src/commands/memory-list.js.map +1 -1
- package/dist/src/commands/memory-transfer.d.ts.map +1 -1
- package/dist/src/commands/memory-transfer.js +46 -23
- package/dist/src/commands/memory-transfer.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +63 -35
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/monograph.d.ts.map +1 -1
- package/dist/src/commands/monograph.js +170 -57
- package/dist/src/commands/monograph.js.map +1 -1
- package/dist/src/commands/monoswarm.d.ts.map +1 -1
- package/dist/src/commands/monoswarm.js +11 -19
- package/dist/src/commands/monoswarm.js.map +1 -1
- package/dist/src/commands/neural-core.d.ts.map +1 -1
- package/dist/src/commands/neural-core.js +114 -31
- 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 +67 -22
- package/dist/src/commands/neural-optimize.js.map +1 -1
- package/dist/src/commands/neural-registry.d.ts.map +1 -1
- package/dist/src/commands/neural-registry.js +50 -14
- package/dist/src/commands/neural-registry.js.map +1 -1
- package/dist/src/commands/org-observe.d.ts.map +1 -1
- package/dist/src/commands/org-observe.js +180 -92
- package/dist/src/commands/org-observe.js.map +1 -1
- package/dist/src/commands/org-visualize.d.ts.map +1 -1
- package/dist/src/commands/org-visualize.js +10 -5
- package/dist/src/commands/org-visualize.js.map +1 -1
- package/dist/src/commands/org.d.ts +1 -1
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +580 -188
- 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 +200 -54
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/platforms.d.ts +1 -1
- package/dist/src/commands/platforms.d.ts.map +1 -1
- package/dist/src/commands/platforms.js +89 -49
- package/dist/src/commands/platforms.js.map +1 -1
- package/dist/src/commands/providers.d.ts.map +1 -1
- package/dist/src/commands/providers.js +31 -18
- package/dist/src/commands/providers.js.map +1 -1
- package/dist/src/commands/report-crash.d.ts.map +1 -1
- package/dist/src/commands/report-crash.js +17 -5
- package/dist/src/commands/report-crash.js.map +1 -1
- package/dist/src/commands/route.d.ts.map +1 -1
- package/dist/src/commands/route.js +123 -41
- package/dist/src/commands/route.js.map +1 -1
- package/dist/src/commands/search-universal.d.ts +1 -1
- package/dist/src/commands/search-universal.d.ts.map +1 -1
- package/dist/src/commands/search-universal.js +29 -14
- package/dist/src/commands/search-universal.js.map +1 -1
- package/dist/src/commands/security-cve.d.ts.map +1 -1
- package/dist/src/commands/security-cve.js +75 -34
- package/dist/src/commands/security-cve.js.map +1 -1
- package/dist/src/commands/security-misc.d.ts.map +1 -1
- package/dist/src/commands/security-misc.js +173 -43
- package/dist/src/commands/security-misc.js.map +1 -1
- package/dist/src/commands/security-scan.d.ts +1 -1
- package/dist/src/commands/security-scan.d.ts.map +1 -1
- package/dist/src/commands/security-scan.js +135 -39
- package/dist/src/commands/security-scan.js.map +1 -1
- package/dist/src/commands/security.d.ts.map +1 -1
- package/dist/src/commands/security.js +9 -2
- package/dist/src/commands/security.js.map +1 -1
- package/dist/src/commands/session.d.ts.map +1 -1
- package/dist/src/commands/session.js +81 -75
- package/dist/src/commands/session.js.map +1 -1
- package/dist/src/commands/start.d.ts.map +1 -1
- package/dist/src/commands/start.js +43 -34
- 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 +88 -75
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/task.d.ts.map +1 -1
- package/dist/src/commands/task.js +115 -84
- package/dist/src/commands/task.js.map +1 -1
- package/dist/src/commands/tokens.d.ts.map +1 -1
- package/dist/src/commands/tokens.js +64 -28
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +3 -5
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/consensus/audit-writer.d.ts +5 -0
- package/dist/src/consensus/audit-writer.d.ts.map +1 -1
- package/dist/src/consensus/audit-writer.js +18 -10
- package/dist/src/consensus/audit-writer.js.map +1 -1
- package/dist/src/consensus/tally.d.ts.map +1 -1
- package/dist/src/consensus/tally.js +2 -2
- package/dist/src/consensus/tally.js.map +1 -1
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +41 -35
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +22 -7
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/codex-generator.d.ts +7 -1
- package/dist/src/init/codex-generator.d.ts.map +1 -1
- package/dist/src/init/codex-generator.js +114 -1
- package/dist/src/init/codex-generator.js.map +1 -1
- package/dist/src/init/copy-assets.d.ts.map +1 -1
- package/dist/src/init/copy-assets.js +13 -12
- package/dist/src/init/copy-assets.js.map +1 -1
- package/dist/src/init/executor.d.ts +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +49 -29
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/geminimd-generator.d.ts +1 -1
- package/dist/src/init/geminimd-generator.d.ts.map +1 -1
- package/dist/src/init/geminimd-generator.js +2 -2
- package/dist/src/init/geminimd-generator.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +6 -6
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/index.d.ts +8 -8
- package/dist/src/init/index.d.ts.map +1 -1
- package/dist/src/init/index.js +9 -9
- package/dist/src/init/index.js.map +1 -1
- package/dist/src/init/kimi-generator.d.ts +1 -1
- package/dist/src/init/kimi-generator.d.ts.map +1 -1
- package/dist/src/init/kimi-generator.js +34 -28
- package/dist/src/init/kimi-generator.js.map +1 -1
- package/dist/src/init/mcp-generator.d.ts.map +1 -1
- package/dist/src/init/mcp-generator.js +3 -11
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/opencode-generator.d.ts.map +1 -1
- package/dist/src/init/opencode-generator.js +33 -20
- 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 +2 -5
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/shared-instructions-generator.d.ts.map +1 -1
- package/dist/src/init/shared-instructions-generator.js +124 -76
- package/dist/src/init/shared-instructions-generator.js.map +1 -1
- package/dist/src/init/shared.d.ts.map +1 -1
- package/dist/src/init/shared.js +23 -18
- package/dist/src/init/shared.js.map +1 -1
- package/dist/src/init/types.js +2 -2
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/init/upgrade.d.ts.map +1 -1
- package/dist/src/init/upgrade.js +19 -17
- package/dist/src/init/upgrade.js.map +1 -1
- package/dist/src/init/write-antigravity.d.ts.map +1 -1
- package/dist/src/init/write-antigravity.js +15 -7
- package/dist/src/init/write-antigravity.js.map +1 -1
- package/dist/src/init/write-capabilities.d.ts.map +1 -1
- package/dist/src/init/write-capabilities.js +3 -3
- package/dist/src/init/write-capabilities.js.map +1 -1
- package/dist/src/init/write-claude.d.ts.map +1 -1
- package/dist/src/init/write-claude.js +18 -14
- package/dist/src/init/write-claude.js.map +1 -1
- package/dist/src/init/write-codex.d.ts.map +1 -1
- package/dist/src/init/write-codex.js +76 -7
- package/dist/src/init/write-codex.js.map +1 -1
- package/dist/src/init/write-kimicode.d.ts.map +1 -1
- package/dist/src/init/write-kimicode.js +10 -6
- package/dist/src/init/write-kimicode.js.map +1 -1
- package/dist/src/init/write-opencode.d.ts.map +1 -1
- package/dist/src/init/write-opencode.js +4 -4
- package/dist/src/init/write-opencode.js.map +1 -1
- package/dist/src/init/write-runtime-config.d.ts.map +1 -1
- package/dist/src/init/write-runtime-config.js +20 -19
- package/dist/src/init/write-runtime-config.js.map +1 -1
- package/dist/src/init/write-sample-org.js +1 -1
- package/dist/src/init/write-sample-org.js.map +1 -1
- package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
- package/dist/src/knowledge/document-pipeline.js +144 -48
- package/dist/src/knowledge/document-pipeline.js.map +1 -1
- package/dist/src/knowledge/eval/corpus.d.ts.map +1 -1
- package/dist/src/knowledge/eval/corpus.js +18 -9
- package/dist/src/knowledge/eval/corpus.js.map +1 -1
- package/dist/src/knowledge/eval/golden-set.d.ts.map +1 -1
- package/dist/src/knowledge/eval/golden-set.js +4286 -136
- package/dist/src/knowledge/eval/golden-set.js.map +1 -1
- package/dist/src/knowledge/eval/harness.d.ts +2 -2
- package/dist/src/knowledge/eval/harness.d.ts.map +1 -1
- package/dist/src/knowledge/eval/harness.js +163 -70
- package/dist/src/knowledge/eval/harness.js.map +1 -1
- package/dist/src/knowledge/eval/metrics.d.ts.map +1 -1
- package/dist/src/knowledge/eval/metrics.js +25 -18
- package/dist/src/knowledge/eval/metrics.js.map +1 -1
- package/dist/src/knowledge/eval/model-presence.d.ts.map +1 -1
- package/dist/src/knowledge/eval/model-presence.js +40 -14
- package/dist/src/knowledge/eval/model-presence.js.map +1 -1
- package/dist/src/knowledge/eval/network-guard.d.ts.map +1 -1
- package/dist/src/knowledge/eval/network-guard.js +22 -10
- package/dist/src/knowledge/eval/network-guard.js.map +1 -1
- package/dist/src/knowledge/eval/retrievers.d.ts.map +1 -1
- package/dist/src/knowledge/eval/retrievers.js +14 -10
- package/dist/src/knowledge/eval/retrievers.js.map +1 -1
- package/dist/src/knowledge/eval/signals.d.ts.map +1 -1
- package/dist/src/knowledge/eval/signals.js +54 -18
- package/dist/src/knowledge/eval/signals.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +69 -33
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts +1 -9
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +19 -42
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +84 -49
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.js +34 -17
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/auto-install.d.ts.map +1 -1
- package/dist/src/mcp-tools/auto-install.js +3 -3
- package/dist/src/mcp-tools/auto-install.js.map +1 -1
- package/dist/src/mcp-tools/autopilot-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/autopilot-tools.js +29 -9
- package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +119 -37
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/claims-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/claims-tools.js +100 -44
- package/dist/src/mcp-tools/claims-tools.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +36 -15
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +34 -23
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/github-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/github-tools.js +200 -43
- package/dist/src/mcp-tools/github-tools.js.map +1 -1
- package/dist/src/mcp-tools/graphify-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/graphify-tools.js +2 -2
- package/dist/src/mcp-tools/graphify-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 +449 -93
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-embedding.d.ts +0 -6
- package/dist/src/mcp-tools/hooks-embedding.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-embedding.js +170 -59
- package/dist/src/mcp-tools/hooks-embedding.js.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.d.ts +0 -8
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.js +9 -17
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +16 -15
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +2 -2
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +18 -18
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +18 -18
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/knowledge-tools.js +88 -28
- package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +156 -39
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/monodesign-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monodesign-tools.js +63 -22
- package/dist/src/mcp-tools/monodesign-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/agent-history-tools.js +22 -9
- package/dist/src/mcp-tools/monograph/agent-history-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/build-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/build-tools.js +37 -16
- package/dist/src/mcp-tools/monograph/build-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/group-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/group-tools.js +57 -20
- package/dist/src/mcp-tools/monograph/group-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/health-tools.js +13 -7
- package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/impact-tools.js +6 -6
- package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/index.js +8 -8
- package/dist/src/mcp-tools/monograph/index.js.map +1 -1
- package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/query-tools.js +131 -56
- package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/shared.js +42 -22
- package/dist/src/mcp-tools/monograph/shared.js.map +1 -1
- package/dist/src/mcp-tools/monograph/visualize-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph/visualize-tools.js +87 -36
- package/dist/src/mcp-tools/monograph/visualize-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph-compat.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-compat.js +25 -14
- package/dist/src/mcp-tools/monograph-compat.js.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.d.ts +1 -1
- package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.js +1 -1
- package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
- package/dist/src/mcp-tools/monomind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monomind-tools.js +1 -1
- package/dist/src/mcp-tools/monomind-tools.js.map +1 -1
- package/dist/src/mcp-tools/monoswarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monoswarm-tools.js +217 -81
- package/dist/src/mcp-tools/monoswarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +280 -83
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts.map +1 -1
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js +9 -4
- package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.js.map +1 -1
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +1 -1
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +36 -14
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -1
- package/dist/src/mcp-tools/quality-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/quality-tools.js.map +1 -1
- package/dist/src/mcp-tools/request-tracker.d.ts.map +1 -1
- package/dist/src/mcp-tools/request-tracker.js +2 -1
- package/dist/src/mcp-tools/request-tracker.js.map +1 -1
- package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/security-tools.js +117 -53
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +22 -13
- package/dist/src/mcp-tools/session-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 +7 -7
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +59 -22
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +43 -16
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +2 -1
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/mcp-tools/types.d.ts +1 -1
- package/dist/src/mcp-tools/types.d.ts.map +1 -1
- package/dist/src/mcp-tools/types.js +1 -1
- package/dist/src/mcp-tools/types.js.map +1 -1
- package/dist/src/memory/bm25-index.d.ts.map +1 -1
- package/dist/src/memory/bm25-index.js.map +1 -1
- package/dist/src/memory/embedding-operations.d.ts.map +1 -1
- package/dist/src/memory/embedding-operations.js +23 -19
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +31 -27
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/hnsw-operations.d.ts +1 -1
- package/dist/src/memory/hnsw-operations.d.ts.map +1 -1
- package/dist/src/memory/hnsw-operations.js +5 -6
- package/dist/src/memory/hnsw-operations.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +122 -84
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +7 -7
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-crud.d.ts +1 -1
- package/dist/src/memory/memory-crud.d.ts.map +1 -1
- package/dist/src/memory/memory-crud.js +82 -47
- package/dist/src/memory/memory-crud.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +7 -7
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +38 -34
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-kg.d.ts.map +1 -1
- package/dist/src/memory/memory-kg.js +173 -41
- package/dist/src/memory/memory-kg.js.map +1 -1
- package/dist/src/memory/memory-migrations.d.ts.map +1 -1
- package/dist/src/memory/memory-migrations.js +11 -7
- package/dist/src/memory/memory-migrations.js.map +1 -1
- package/dist/src/memory/memory-read.d.ts.map +1 -1
- package/dist/src/memory/memory-read.js +45 -21
- package/dist/src/memory/memory-read.js.map +1 -1
- package/dist/src/memory/query-router.d.ts.map +1 -1
- package/dist/src/memory/query-router.js +29 -12
- package/dist/src/memory/query-router.js.map +1 -1
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
- package/dist/src/memory/sona-optimizer.js +163 -41
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/memory/text-tokens.d.ts.map +1 -1
- package/dist/src/memory/text-tokens.js +78 -8
- package/dist/src/memory/text-tokens.js.map +1 -1
- package/dist/src/monovector/command-outcomes.d.ts.map +1 -1
- package/dist/src/monovector/command-outcomes.js +23 -8
- package/dist/src/monovector/command-outcomes.js.map +1 -1
- package/dist/src/monovector/coverage-router.d.ts.map +1 -1
- package/dist/src/monovector/coverage-router.js +29 -14
- package/dist/src/monovector/coverage-router.js.map +1 -1
- package/dist/src/monovector/coverage-tools.d.ts.map +1 -1
- package/dist/src/monovector/coverage-tools.js +21 -6
- package/dist/src/monovector/coverage-tools.js.map +1 -1
- package/dist/src/monovector/diff-classifier.d.ts +1 -1
- package/dist/src/monovector/diff-classifier.d.ts.map +1 -1
- package/dist/src/monovector/diff-classifier.js +100 -45
- package/dist/src/monovector/diff-classifier.js.map +1 -1
- package/dist/src/monovector/index.d.ts +3 -4
- package/dist/src/monovector/index.d.ts.map +1 -1
- package/dist/src/monovector/index.js +18 -6
- package/dist/src/monovector/index.js.map +1 -1
- package/dist/src/monovector/init-state.d.ts.map +1 -1
- package/dist/src/monovector/init-state.js +15 -5
- package/dist/src/monovector/init-state.js.map +1 -1
- package/dist/src/monovector/model-outcomes.js +2 -2
- package/dist/src/monovector/model-outcomes.js.map +1 -1
- package/dist/src/monovector/route-outcomes.d.ts.map +1 -1
- package/dist/src/monovector/route-outcomes.js +40 -21
- package/dist/src/monovector/route-outcomes.js.map +1 -1
- package/dist/src/observability/replay-reader.d.ts.map +1 -1
- package/dist/src/observability/replay-reader.js +6 -8
- package/dist/src/observability/replay-reader.js.map +1 -1
- package/dist/src/orgrt/agent-runner.d.ts +1 -1
- package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
- package/dist/src/orgrt/agent-runner.js +1 -1
- package/dist/src/orgrt/agent-runner.js.map +1 -1
- package/dist/src/orgrt/antigravity-runner.d.ts +1 -1
- package/dist/src/orgrt/antigravity-runner.d.ts.map +1 -1
- package/dist/src/orgrt/antigravity-runner.js +46 -17
- 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 +24 -8
- package/dist/src/orgrt/approvals.js.map +1 -1
- package/dist/src/orgrt/broker.d.ts.map +1 -1
- package/dist/src/orgrt/broker.js +11 -4
- package/dist/src/orgrt/broker.js.map +1 -1
- package/dist/src/orgrt/bus.d.ts.map +1 -1
- package/dist/src/orgrt/bus.js +28 -15
- package/dist/src/orgrt/bus.js.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.d.ts +1 -1
- package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.js +36 -19
- package/dist/src/orgrt/checkpoint-ops.js.map +1 -1
- package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint.js +3 -1
- package/dist/src/orgrt/checkpoint.js.map +1 -1
- package/dist/src/orgrt/codex-runner.d.ts +1 -1
- package/dist/src/orgrt/codex-runner.d.ts.map +1 -1
- package/dist/src/orgrt/codex-runner.js +45 -18
- package/dist/src/orgrt/codex-runner.js.map +1 -1
- package/dist/src/orgrt/copilot-runner.d.ts +1 -1
- package/dist/src/orgrt/copilot-runner.d.ts.map +1 -1
- package/dist/src/orgrt/copilot-runner.js +48 -16
- 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 +213 -41
- package/dist/src/orgrt/cross-org.js.map +1 -1
- package/dist/src/orgrt/crush-runner.d.ts +1 -1
- package/dist/src/orgrt/crush-runner.d.ts.map +1 -1
- package/dist/src/orgrt/crush-runner.js +51 -17
- package/dist/src/orgrt/crush-runner.js.map +1 -1
- package/dist/src/orgrt/daemon.d.ts +5 -6
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +55 -47
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/decisions.d.ts +2 -2
- package/dist/src/orgrt/decisions.d.ts.map +1 -1
- package/dist/src/orgrt/decisions.js +83 -34
- package/dist/src/orgrt/decisions.js.map +1 -1
- package/dist/src/orgrt/fence.d.ts +2 -2
- package/dist/src/orgrt/fence.d.ts.map +1 -1
- package/dist/src/orgrt/fence.js +13 -5
- package/dist/src/orgrt/fence.js.map +1 -1
- package/dist/src/orgrt/forwarder.js +1 -1
- package/dist/src/orgrt/forwarder.js.map +1 -1
- package/dist/src/orgrt/grok-runner.d.ts +1 -1
- package/dist/src/orgrt/grok-runner.d.ts.map +1 -1
- package/dist/src/orgrt/grok-runner.js +36 -16
- package/dist/src/orgrt/grok-runner.js.map +1 -1
- package/dist/src/orgrt/inbox.d.ts.map +1 -1
- package/dist/src/orgrt/inbox.js +5 -3
- package/dist/src/orgrt/inbox.js.map +1 -1
- package/dist/src/orgrt/kimicode-runner.d.ts +1 -1
- package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/kimicode-runner.js +40 -15
- package/dist/src/orgrt/kimicode-runner.js.map +1 -1
- package/dist/src/orgrt/mailbox.d.ts.map +1 -1
- package/dist/src/orgrt/mailbox.js +15 -5
- package/dist/src/orgrt/mailbox.js.map +1 -1
- package/dist/src/orgrt/migrate.d.ts.map +1 -1
- package/dist/src/orgrt/migrate.js +38 -25
- package/dist/src/orgrt/migrate.js.map +1 -1
- package/dist/src/orgrt/opencode-runner.d.ts +1 -1
- package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/opencode-runner.js +16 -5
- package/dist/src/orgrt/opencode-runner.js.map +1 -1
- package/dist/src/orgrt/org-memory.d.ts +2 -2
- package/dist/src/orgrt/org-memory.d.ts.map +1 -1
- package/dist/src/orgrt/org-memory.js +66 -26
- package/dist/src/orgrt/org-memory.js.map +1 -1
- package/dist/src/orgrt/pi-rpc-runner.d.ts +1 -1
- package/dist/src/orgrt/pi-rpc-runner.d.ts.map +1 -1
- package/dist/src/orgrt/pi-rpc-runner.js +60 -25
- package/dist/src/orgrt/pi-rpc-runner.js.map +1 -1
- package/dist/src/orgrt/pi-runner.d.ts +1 -1
- package/dist/src/orgrt/pi-runner.d.ts.map +1 -1
- package/dist/src/orgrt/pi-runner.js +35 -16
- package/dist/src/orgrt/pi-runner.js.map +1 -1
- package/dist/src/orgrt/policy.d.ts.map +1 -1
- package/dist/src/orgrt/policy.js +65 -20
- package/dist/src/orgrt/policy.js.map +1 -1
- package/dist/src/orgrt/prechecks.d.ts.map +1 -1
- package/dist/src/orgrt/prechecks.js +9 -4
- package/dist/src/orgrt/prechecks.js.map +1 -1
- package/dist/src/orgrt/provider.d.ts +1 -1
- package/dist/src/orgrt/provider.d.ts.map +1 -1
- package/dist/src/orgrt/provider.js.map +1 -1
- package/dist/src/orgrt/questions.d.ts.map +1 -1
- package/dist/src/orgrt/questions.js +34 -10
- package/dist/src/orgrt/questions.js.map +1 -1
- package/dist/src/orgrt/qwen-rpc-runner.d.ts +1 -1
- package/dist/src/orgrt/qwen-rpc-runner.d.ts.map +1 -1
- package/dist/src/orgrt/qwen-rpc-runner.js +61 -26
- package/dist/src/orgrt/qwen-rpc-runner.js.map +1 -1
- package/dist/src/orgrt/qwen-runner.d.ts +1 -1
- package/dist/src/orgrt/qwen-runner.d.ts.map +1 -1
- package/dist/src/orgrt/qwen-runner.js +31 -15
- package/dist/src/orgrt/qwen-runner.js.map +1 -1
- package/dist/src/orgrt/remote.js +1 -1
- package/dist/src/orgrt/remote.js.map +1 -1
- package/dist/src/orgrt/reporting.d.ts.map +1 -1
- package/dist/src/orgrt/reporting.js +61 -27
- package/dist/src/orgrt/reporting.js.map +1 -1
- package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -1
- package/dist/src/orgrt/scheduler-integration.js +57 -20
- package/dist/src/orgrt/scheduler-integration.js.map +1 -1
- package/dist/src/orgrt/scheduler.d.ts.map +1 -1
- package/dist/src/orgrt/scheduler.js +7 -3
- package/dist/src/orgrt/scheduler.js.map +1 -1
- package/dist/src/orgrt/server.js +1 -1
- package/dist/src/orgrt/server.js.map +1 -1
- package/dist/src/orgrt/session.d.ts +3 -3
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +165 -66
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/state-detector.d.ts.map +1 -1
- package/dist/src/orgrt/state-detector.js +6 -2
- package/dist/src/orgrt/state-detector.js.map +1 -1
- package/dist/src/orgrt/task-dag.d.ts.map +1 -1
- package/dist/src/orgrt/task-dag.js +22 -12
- package/dist/src/orgrt/task-dag.js.map +1 -1
- package/dist/src/orgrt/templates.d.ts.map +1 -1
- package/dist/src/orgrt/templates.js +198 -36
- package/dist/src/orgrt/templates.js.map +1 -1
- package/dist/src/orgrt/test-loop.d.ts.map +1 -1
- package/dist/src/orgrt/test-loop.js +61 -34
- 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 +6 -3
- package/dist/src/orgrt/tool-fence.js.map +1 -1
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +148 -38
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/orgrt/usage-proxy.d.ts +20 -0
- package/dist/src/orgrt/usage-proxy.d.ts.map +1 -1
- package/dist/src/orgrt/usage-proxy.js +25 -15
- package/dist/src/orgrt/usage-proxy.js.map +1 -1
- package/dist/src/orgrt/vercel-providers.d.ts.map +1 -1
- package/dist/src/orgrt/vercel-providers.js +11 -1
- package/dist/src/orgrt/vercel-providers.js.map +1 -1
- package/dist/src/orgrt/vercel-runner.d.ts +1 -1
- package/dist/src/orgrt/vercel-runner.d.ts.map +1 -1
- package/dist/src/orgrt/vercel-runner.js +3 -5
- package/dist/src/orgrt/vercel-runner.js.map +1 -1
- package/dist/src/orgrt/vercel-session-store.d.ts +14 -0
- package/dist/src/orgrt/vercel-session-store.d.ts.map +1 -1
- package/dist/src/orgrt/vercel-session-store.js +3 -3
- package/dist/src/orgrt/vercel-session-store.js.map +1 -1
- package/dist/src/orgrt/visualization.js +3 -4
- package/dist/src/orgrt/visualization.js.map +1 -1
- package/dist/src/output.d.ts +1 -1
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +68 -39
- package/dist/src/output.js.map +1 -1
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +35 -24
- package/dist/src/parser.js.map +1 -1
- package/dist/src/pricing/model-pricing.d.ts.map +1 -1
- package/dist/src/pricing/model-pricing.js +3 -3
- package/dist/src/pricing/model-pricing.js.map +1 -1
- package/dist/src/prompt.d.ts +2 -2
- package/dist/src/prompt.d.ts.map +1 -1
- package/dist/src/prompt.js +49 -41
- package/dist/src/prompt.js.map +1 -1
- package/dist/src/routing/embedder.d.ts.map +1 -1
- package/dist/src/routing/embedder.js +0 -0
- package/dist/src/routing/embedder.js.map +1 -1
- package/dist/src/routing/llm-caller.d.ts.map +1 -1
- package/dist/src/routing/llm-caller.js +27 -8
- package/dist/src/routing/llm-caller.js.map +1 -1
- package/dist/src/routing/model-download.d.ts.map +1 -1
- package/dist/src/routing/model-download.js +3 -3
- package/dist/src/routing/model-download.js.map +1 -1
- package/dist/src/routing/route-layer-factory.d.ts.map +1 -1
- package/dist/src/routing/route-layer-factory.js +22 -14
- package/dist/src/routing/route-layer-factory.js.map +1 -1
- package/dist/src/security/audit-log.d.ts.map +1 -1
- package/dist/src/security/audit-log.js +9 -5
- package/dist/src/security/audit-log.js.map +1 -1
- package/dist/src/services/config-file-manager.d.ts.map +1 -1
- package/dist/src/services/config-file-manager.js +40 -15
- package/dist/src/services/config-file-manager.js.map +1 -1
- package/dist/src/services/crash-reporter.d.ts.map +1 -1
- package/dist/src/services/crash-reporter.js +44 -16
- package/dist/src/services/crash-reporter.js.map +1 -1
- package/dist/src/suggest.d.ts +1 -1
- package/dist/src/suggest.d.ts.map +1 -1
- package/dist/src/suggest.js +57 -56
- package/dist/src/suggest.js.map +1 -1
- package/dist/src/sync/checker.d.ts.map +1 -1
- package/dist/src/sync/checker.js +7 -8
- package/dist/src/sync/checker.js.map +1 -1
- package/dist/src/transfer/anonymization/index.js +2 -2
- package/dist/src/transfer/anonymization/index.js.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/ui/collector.mjs +270 -150
- package/dist/src/ui/dashboard.html +731 -732
- package/dist/src/ui/data/agent-avatars.html +3 -3
- package/dist/src/ui/data/agent-avatars.json +1 -1
- package/dist/src/ui/markdown.js +243 -62
- package/dist/src/ui/mastermind-diagram-fallback.html +29 -29
- package/dist/src/ui/orgs-files.js +99 -46
- package/dist/src/ui/orgs.html +54 -54
- package/dist/src/ui/routes-monograph.mjs +918 -246
- package/dist/src/ui/routes-org.mjs +4237 -2415
- package/dist/src/ui/server.mjs +103 -94
- package/dist/src/update/checker.d.ts.map +1 -1
- package/dist/src/update/checker.js +17 -12
- package/dist/src/update/checker.js.map +1 -1
- package/dist/src/update/executor.d.ts +2 -2
- package/dist/src/update/executor.d.ts.map +1 -1
- package/dist/src/update/executor.js +21 -11
- package/dist/src/update/executor.js.map +1 -1
- package/dist/src/update/index.d.ts +6 -6
- package/dist/src/update/index.d.ts.map +1 -1
- package/dist/src/update/index.js +9 -9
- package/dist/src/update/index.js.map +1 -1
- package/dist/src/update/rate-limiter.d.ts.map +1 -1
- package/dist/src/update/rate-limiter.js +11 -7
- package/dist/src/update/rate-limiter.js.map +1 -1
- package/dist/src/update/validator.d.ts.map +1 -1
- package/dist/src/update/validator.js +8 -12
- package/dist/src/update/validator.js.map +1 -1
- package/dist/src/utils/cosine-similarity.d.ts.map +1 -1
- package/dist/src/utils/cosine-similarity.js.map +1 -1
- package/dist/src/utils/input-guards.d.ts +1 -1
- package/dist/src/utils/input-guards.d.ts.map +1 -1
- package/dist/src/utils/input-guards.js +24 -9
- package/dist/src/utils/input-guards.js.map +1 -1
- package/dist/src/utils/json-file.d.ts.map +1 -1
- package/dist/src/utils/json-file.js +3 -3
- package/dist/src/utils/json-file.js.map +1 -1
- package/dist/src/utils/parse-jsonl.d.ts.map +1 -1
- package/dist/src/utils/parse-jsonl.js +1 -3
- package/dist/src/utils/parse-jsonl.js.map +1 -1
- package/dist/src/utils/paths.d.ts.map +1 -1
- package/dist/src/utils/paths.js +2 -2
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/redaction.d.ts.map +1 -1
- package/dist/src/utils/redaction.js +1 -1
- package/dist/src/utils/redaction.js.map +1 -1
- package/dist/src/utils/resource-governor.d.ts.map +1 -1
- package/dist/src/utils/resource-governor.js +38 -14
- package/dist/src/utils/resource-governor.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
package/dist/src/commands/org.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
// packages/@monomind/cli/src/commands/org.ts
|
|
2
|
-
import { readFileSync, writeFileSync, existsSync, unlinkSync, rmSync, readdirSync, mkdirSync } from 'node:fs';
|
|
3
|
-
import { join, resolve, dirname } from 'node:path';
|
|
4
|
-
import { homedir } from 'node:os';
|
|
5
2
|
import { createHash } from 'node:crypto';
|
|
6
|
-
import {
|
|
3
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { dirname, join, resolve } from 'node:path';
|
|
7
6
|
import { OrgDaemon } from '../orgrt/daemon.js';
|
|
8
|
-
import { resolveModel } from '../orgrt/session.js';
|
|
9
|
-
import { startOrgServer } from '../orgrt/server.js';
|
|
10
|
-
import { ORG_DIR, OrgDefSchema } from '../orgrt/types.js';
|
|
11
7
|
import { migrateOrgFile } from '../orgrt/migrate.js';
|
|
12
8
|
import { readHistory, readRunEvents, summarizeRun } from '../orgrt/reporting.js';
|
|
9
|
+
import { startOrgServer } from '../orgrt/server.js';
|
|
10
|
+
import { resolveModel } from '../orgrt/session.js';
|
|
11
|
+
import { ORG_DIR, OrgDefSchema } from '../orgrt/types.js';
|
|
12
|
+
import { output } from '../output.js';
|
|
13
13
|
import { MODEL_PRICING } from '../pricing/model-pricing.js';
|
|
14
|
-
const log = (text) => {
|
|
14
|
+
const log = (text) => {
|
|
15
|
+
console.log(text);
|
|
16
|
+
};
|
|
15
17
|
/** Org names are used to build filesystem paths under .monomind/orgs — reject
|
|
16
18
|
* anything that isn't a plain identifier to prevent path traversal (e.g.
|
|
17
19
|
* `monomind org stop '../../../../tmp/x'`). */
|
|
@@ -31,19 +33,37 @@ export function validateOrgName(name) {
|
|
|
31
33
|
* exclude them when discovering real org configs) and deleteAction (which
|
|
32
34
|
* must remove all of them when deleting an org). */
|
|
33
35
|
const ORG_ARTIFACT_SUFFIXES = [
|
|
34
|
-
'-state',
|
|
35
|
-
'-
|
|
36
|
-
'-
|
|
37
|
-
'-
|
|
36
|
+
'-state',
|
|
37
|
+
'-goals',
|
|
38
|
+
'-threads',
|
|
39
|
+
'-activity',
|
|
40
|
+
'-approvals',
|
|
41
|
+
'-members',
|
|
42
|
+
'-secrets',
|
|
43
|
+
'-budgets',
|
|
44
|
+
'-routines',
|
|
45
|
+
'-issues',
|
|
46
|
+
'-projects',
|
|
47
|
+
'-workspaces',
|
|
48
|
+
'-worktrees',
|
|
49
|
+
'-environments',
|
|
50
|
+
'-plugins',
|
|
51
|
+
'-adapters',
|
|
52
|
+
'-join-requests',
|
|
53
|
+
'-bootstrap',
|
|
54
|
+
'-project-workspaces',
|
|
55
|
+
'-approval-comments',
|
|
56
|
+
'-skills',
|
|
38
57
|
];
|
|
39
58
|
export function listOrgConfigFiles(orgsDir) {
|
|
40
59
|
// endsWith, not includes: substring matching hid legitimate orgs whose NAME
|
|
41
60
|
// merely contains an artifact suffix anywhere (e.g. "state-machine.json",
|
|
42
61
|
// "issues-triage.json") — and anything hidden here is also invisible to
|
|
43
62
|
// run/list/serve while `org delete <sibling>` would still remove its files.
|
|
44
|
-
return readdirSync(orgsDir)
|
|
45
|
-
|
|
46
|
-
|
|
63
|
+
return readdirSync(orgsDir).filter((f) => f.endsWith('.json') &&
|
|
64
|
+
!f.startsWith('._') &&
|
|
65
|
+
!f.endsWith('.v1.json') &&
|
|
66
|
+
!ORG_ARTIFACT_SUFFIXES.some((suf) => f.endsWith(`${suf}.json`)));
|
|
47
67
|
}
|
|
48
68
|
/** Remove a lingering stopfile so a fresh `org run` doesn't self-terminate. */
|
|
49
69
|
export const clearStopfile = (cwd, name) => {
|
|
@@ -91,22 +111,24 @@ const runAction = async (ctx) => {
|
|
|
91
111
|
// plain `as string` cast would let that array flow straight into the org's
|
|
92
112
|
// goal and get stringified as "a,b" with no warning. Checked before any
|
|
93
113
|
// side effects (starting the xdeliver listener) run.
|
|
94
|
-
const taskFlag = ctx.flags
|
|
114
|
+
const taskFlag = ctx.flags.task;
|
|
95
115
|
if (Array.isArray(taskFlag))
|
|
96
116
|
return { success: false, message: '--task was passed more than once — pass it exactly once' };
|
|
97
117
|
// Fail before any side effects (inbox server) when the org doesn't exist.
|
|
98
118
|
const orgsDir = join(ctx.cwd, ORG_DIR);
|
|
99
119
|
if (!existsSync(join(orgsDir, `${name}.json`))) {
|
|
100
|
-
const known = existsSync(orgsDir)
|
|
120
|
+
const known = existsSync(orgsDir)
|
|
121
|
+
? listOrgConfigFiles(orgsDir).map((f) => f.replace(/\.json$/, ''))
|
|
122
|
+
: [];
|
|
101
123
|
log(output.error(`Org not found: ${name}${known.length ? ` — available: ${known.join(', ')}` : ' — create one with /mastermind:createorg'}`));
|
|
102
124
|
return { success: false, message: 'org not found' };
|
|
103
125
|
}
|
|
104
|
-
if (ctx.flags
|
|
126
|
+
if (ctx.flags.dryRun === true) {
|
|
105
127
|
// Validate + preview each role's actual briefing without spawning sessions.
|
|
106
128
|
try {
|
|
107
129
|
const def = OrgDefSchema.parse(JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8')));
|
|
108
130
|
const { buildRolePrompt } = await import('../orgrt/session.js');
|
|
109
|
-
const roster = def.roles.map(r => r.id);
|
|
131
|
+
const roster = def.roles.map((r) => r.id);
|
|
110
132
|
const perRole = Math.floor((def.run_config.budget_tokens ?? 1_000_000) / def.roles.length);
|
|
111
133
|
// Same KG entity glossary the live daemon injects — the preview must
|
|
112
134
|
// match what sessions actually receive.
|
|
@@ -161,14 +183,23 @@ const runAction = async (ctx) => {
|
|
|
161
183
|
log(output.dim(` watch it with: monomind org logs ${name} --follow`));
|
|
162
184
|
return { success: true, message: 'start requested' };
|
|
163
185
|
}
|
|
164
|
-
const crossProcess = ctx.flags
|
|
186
|
+
const crossProcess = ctx.flags.crossProcess !== false;
|
|
165
187
|
// P1-1: v1 deprecation warning. Detect v1-shaped configs and warn.
|
|
166
188
|
// Gate on MONOMIND_V1_LEGACY=off to refuse v1 orgs entirely (patch-versioning-
|
|
167
189
|
// compliant mechanism — no minor bump needed).
|
|
168
|
-
const V1_ORG_KEYS = [
|
|
190
|
+
const V1_ORG_KEYS = [
|
|
191
|
+
'topology',
|
|
192
|
+
'consensus',
|
|
193
|
+
'strategy',
|
|
194
|
+
'board_id',
|
|
195
|
+
'todo_col_id',
|
|
196
|
+
'doing_col_id',
|
|
197
|
+
'done_col_id',
|
|
198
|
+
'loop',
|
|
199
|
+
];
|
|
169
200
|
try {
|
|
170
201
|
const rawCfg = JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8'));
|
|
171
|
-
const isV1 = V1_ORG_KEYS.some(k => k in rawCfg);
|
|
202
|
+
const isV1 = V1_ORG_KEYS.some((k) => k in rawCfg);
|
|
172
203
|
if (isV1) {
|
|
173
204
|
const v1Legacy = process.env.MONOMIND_V1_LEGACY;
|
|
174
205
|
if (v1Legacy === 'off') {
|
|
@@ -180,7 +211,9 @@ const runAction = async (ctx) => {
|
|
|
180
211
|
log(output.dim(` To silence: run "monomind org migrate ${name}". To block v1 orgs: set MONOMIND_V1_LEGACY=off.`));
|
|
181
212
|
}
|
|
182
213
|
}
|
|
183
|
-
catch {
|
|
214
|
+
catch {
|
|
215
|
+
/* config parse errors surface below in cost estimate or daemon.startOrg */
|
|
216
|
+
}
|
|
184
217
|
// P0-17: Upfront cost estimate. `org run` and `/mastermind:autodev` spend real
|
|
185
218
|
// provider tokens. Print an estimate before sessions start; honor --budget-usd
|
|
186
219
|
// as a hard stop and --yes to skip the confirmation prompt. Rates are defaults
|
|
@@ -200,20 +233,29 @@ const runAction = async (ctx) => {
|
|
|
200
233
|
// Models absent from MODEL_PRICING (not yet in the canonical pricing table).
|
|
201
234
|
const EXTRA_MODEL_RATE_PER_1M = {
|
|
202
235
|
'gpt-4': 10,
|
|
203
|
-
'glm-5.2': 2,
|
|
204
|
-
'
|
|
205
|
-
'
|
|
206
|
-
'
|
|
236
|
+
'glm-5.2': 2,
|
|
237
|
+
'glm-4': 2,
|
|
238
|
+
'kimi-latest': 3,
|
|
239
|
+
'kimi-k2': 3,
|
|
240
|
+
'kimi-code/k3': 3,
|
|
241
|
+
'kimi-code/k3-256k': 3,
|
|
242
|
+
'gemini-3.1-pro': 8,
|
|
243
|
+
'gemini-3.6-flash-high': 1,
|
|
244
|
+
'gpt-5.6-terra': 10,
|
|
245
|
+
'gpt-5.5': 10,
|
|
246
|
+
};
|
|
247
|
+
const MODEL_RATE_PER_1M = {
|
|
248
|
+
...EXTRA_MODEL_RATE_PER_1M,
|
|
249
|
+
...DERIVED_RATE_PER_1M,
|
|
207
250
|
};
|
|
208
|
-
const MODEL_RATE_PER_1M = { ...EXTRA_MODEL_RATE_PER_1M, ...DERIVED_RATE_PER_1M };
|
|
209
251
|
const DEFAULT_RATE_PER_1M = 10;
|
|
210
252
|
const AVG_TOKENS_PER_TURN = 2000;
|
|
211
|
-
const budgetUsd = ctx.flags
|
|
212
|
-
const skipConfirm = ctx.flags
|
|
253
|
+
const budgetUsd = ctx.flags.budgetUsd;
|
|
254
|
+
const skipConfirm = ctx.flags.yes === true;
|
|
213
255
|
// User-editable rate overrides: ~/.monomind/rates.json, e.g.
|
|
214
256
|
// { "claude-opus-5": 90, "my-custom-model": 5 }
|
|
215
257
|
const ratesPath = join(homedir(), '.monomind', 'rates.json');
|
|
216
|
-
|
|
258
|
+
const userRates = {};
|
|
217
259
|
let ratesFileUsed = false;
|
|
218
260
|
try {
|
|
219
261
|
const parsed = JSON.parse(readFileSync(ratesPath, 'utf8'));
|
|
@@ -225,7 +267,9 @@ const runAction = async (ctx) => {
|
|
|
225
267
|
ratesFileUsed = Object.keys(userRates).length > 0;
|
|
226
268
|
}
|
|
227
269
|
}
|
|
228
|
-
catch {
|
|
270
|
+
catch {
|
|
271
|
+
/* no rates.json (or invalid) — hardcoded defaults only */
|
|
272
|
+
}
|
|
229
273
|
try {
|
|
230
274
|
const def = OrgDefSchema.parse(JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8')));
|
|
231
275
|
const defaultMaxTurns = def.run_config.max_turns_per_message ?? 30;
|
|
@@ -233,7 +277,7 @@ const runAction = async (ctx) => {
|
|
|
233
277
|
// the schema default is effectively unlimited (DEFAULT_MAX_TURNS_PER_MESSAGE),
|
|
234
278
|
// which would balloon the upfront figure into meaninglessness.
|
|
235
279
|
const ESTIMATE_TURNS_CAP = 30;
|
|
236
|
-
let
|
|
280
|
+
let _totalTokens = 0;
|
|
237
281
|
const perRoleRows = def.roles.map((r) => {
|
|
238
282
|
// Mirror the actual runtime's model resolution (session.ts resolveModel)
|
|
239
283
|
// instead of a hardcoded 'claude-sonnet-5' fallback — otherwise every
|
|
@@ -243,7 +287,7 @@ const runAction = async (ctx) => {
|
|
|
243
287
|
const rate = userRates[model] ?? MODEL_RATE_PER_1M[model] ?? DEFAULT_RATE_PER_1M;
|
|
244
288
|
const roleTurns = Math.min(r.max_turns_per_message ?? defaultMaxTurns, ESTIMATE_TURNS_CAP);
|
|
245
289
|
const tokens = roleTurns * AVG_TOKENS_PER_TURN;
|
|
246
|
-
|
|
290
|
+
_totalTokens += tokens;
|
|
247
291
|
return { id: r.id, model, tokens, cost: (tokens * rate) / 1_000_000 };
|
|
248
292
|
});
|
|
249
293
|
const estimate = perRoleRows.reduce((s, r) => s + r.cost, 0);
|
|
@@ -260,7 +304,10 @@ const runAction = async (ctx) => {
|
|
|
260
304
|
}
|
|
261
305
|
if (!skipConfirm && process.stdin.isTTY) {
|
|
262
306
|
const { confirm } = await import('../prompt.js');
|
|
263
|
-
const ok = await confirm({
|
|
307
|
+
const ok = await confirm({
|
|
308
|
+
message: `Start ${def.roles.length}-role org? This will spend real provider tokens.`,
|
|
309
|
+
default: true,
|
|
310
|
+
});
|
|
264
311
|
if (!ok) {
|
|
265
312
|
log(output.dim('Aborted — no tokens spent.'));
|
|
266
313
|
return { success: false, message: 'user declined cost-estimate prompt' };
|
|
@@ -274,7 +321,7 @@ const runAction = async (ctx) => {
|
|
|
274
321
|
log(output.dim(`(cost estimate skipped: ${err instanceof Error ? err.message : String(err)})`));
|
|
275
322
|
}
|
|
276
323
|
}
|
|
277
|
-
const resumeFlag = ctx.flags
|
|
324
|
+
const resumeFlag = ctx.flags.resume === true;
|
|
278
325
|
const daemon = new OrgDaemon(ctx.cwd, { crossProcess });
|
|
279
326
|
let srv;
|
|
280
327
|
if (crossProcess) {
|
|
@@ -288,10 +335,13 @@ const runAction = async (ctx) => {
|
|
|
288
335
|
catch (err) {
|
|
289
336
|
// Don't leave the inbox server holding the event loop open on a failed start.
|
|
290
337
|
srv?.close();
|
|
291
|
-
await daemon.stopAll().catch(() => {
|
|
338
|
+
await daemon.stopAll().catch(() => {
|
|
339
|
+
/* nothing started */
|
|
340
|
+
});
|
|
292
341
|
const detail = err instanceof Error ? err.message : String(err);
|
|
293
342
|
const hint = err instanceof Error && err.name === 'ZodError'
|
|
294
|
-
? ` — run "monomind org validate ${name}" for details`
|
|
343
|
+
? ` — run "monomind org validate ${name}" for details`
|
|
344
|
+
: '';
|
|
295
345
|
log(output.error(`Could not start org ${name}: ${detail}${hint}`));
|
|
296
346
|
return { success: false, message: 'org start failed' };
|
|
297
347
|
}
|
|
@@ -308,7 +358,9 @@ const runAction = async (ctx) => {
|
|
|
308
358
|
try {
|
|
309
359
|
console.error('[org run] uncaughtException:', err);
|
|
310
360
|
}
|
|
311
|
-
catch {
|
|
361
|
+
catch {
|
|
362
|
+
/* stderr gone */
|
|
363
|
+
}
|
|
312
364
|
daemon.persistCrashStateAll(`uncaughtException: ${err instanceof Error ? err.message : String(err)}`);
|
|
313
365
|
process.exit(1);
|
|
314
366
|
});
|
|
@@ -316,7 +368,9 @@ const runAction = async (ctx) => {
|
|
|
316
368
|
try {
|
|
317
369
|
console.error('[org run] unhandledRejection:', err);
|
|
318
370
|
}
|
|
319
|
-
catch {
|
|
371
|
+
catch {
|
|
372
|
+
/* stderr gone */
|
|
373
|
+
}
|
|
320
374
|
daemon.persistCrashStateAll(`unhandledRejection: ${err instanceof Error ? err.message : String(err)}`);
|
|
321
375
|
process.exit(1);
|
|
322
376
|
});
|
|
@@ -345,7 +399,9 @@ const runAction = async (ctx) => {
|
|
|
345
399
|
stdio: 'ignore',
|
|
346
400
|
});
|
|
347
401
|
}
|
|
348
|
-
catch {
|
|
402
|
+
catch {
|
|
403
|
+
/* best-effort — fall through to whatever control.json already has */
|
|
404
|
+
}
|
|
349
405
|
}
|
|
350
406
|
if (existsSync(controlPath)) {
|
|
351
407
|
try {
|
|
@@ -353,7 +409,9 @@ const runAction = async (ctx) => {
|
|
|
353
409
|
const dashUrl = ctl.url || (ctl.port ? `http://localhost:${ctl.port}` : 'http://localhost:4242');
|
|
354
410
|
log(output.dim(` Dashboard: ${dashUrl}`));
|
|
355
411
|
}
|
|
356
|
-
catch {
|
|
412
|
+
catch {
|
|
413
|
+
/* non-critical */
|
|
414
|
+
}
|
|
357
415
|
}
|
|
358
416
|
else if (existsSync(controlStartPath)) {
|
|
359
417
|
// control-start.cjs ran above (spawnSync'd synchronously with a 5s cap)
|
|
@@ -377,7 +435,7 @@ const runAction = async (ctx) => {
|
|
|
377
435
|
// successful action regardless of how the run itself ended — capture that
|
|
378
436
|
// BEFORE clearStopfile() below wipes the file, so it isn't lost.
|
|
379
437
|
let stoppedManually = false;
|
|
380
|
-
await new Promise(resolvePromise => {
|
|
438
|
+
await new Promise((resolvePromise) => {
|
|
381
439
|
const iv = setInterval(() => {
|
|
382
440
|
if (existsSync(stopfile)) {
|
|
383
441
|
stoppedManually = true;
|
|
@@ -389,8 +447,14 @@ const runAction = async (ctx) => {
|
|
|
389
447
|
resolvePromise();
|
|
390
448
|
}
|
|
391
449
|
}, 2000);
|
|
392
|
-
process.once('SIGINT', () => {
|
|
393
|
-
|
|
450
|
+
process.once('SIGINT', () => {
|
|
451
|
+
clearInterval(iv);
|
|
452
|
+
resolvePromise();
|
|
453
|
+
});
|
|
454
|
+
process.once('SIGTERM', () => {
|
|
455
|
+
clearInterval(iv);
|
|
456
|
+
resolvePromise();
|
|
457
|
+
});
|
|
394
458
|
});
|
|
395
459
|
clearStopfile(ctx.cwd, name);
|
|
396
460
|
await daemon.stopAll();
|
|
@@ -407,7 +471,9 @@ const runAction = async (ctx) => {
|
|
|
407
471
|
try {
|
|
408
472
|
final = JSON.parse(readFileSync(join(ctx.cwd, ORG_DIR, name, 'runtime.json'), 'utf8'));
|
|
409
473
|
}
|
|
410
|
-
catch {
|
|
474
|
+
catch {
|
|
475
|
+
/* best-effort — falls through to the non-clean-stop case below */
|
|
476
|
+
}
|
|
411
477
|
return runOutcomeResult(name, final);
|
|
412
478
|
};
|
|
413
479
|
/** Decides `org run`'s exit-code-bearing CommandResult from the run's final
|
|
@@ -422,7 +488,11 @@ export function runOutcomeResult(name, final) {
|
|
|
422
488
|
return { success: true, message: `org ${name} completed` };
|
|
423
489
|
}
|
|
424
490
|
if (final.status === 'crashed') {
|
|
425
|
-
return {
|
|
491
|
+
return {
|
|
492
|
+
success: false,
|
|
493
|
+
message: `org ${name} crashed: ${final.error ?? 'unknown error'}`,
|
|
494
|
+
exitCode: 1,
|
|
495
|
+
};
|
|
426
496
|
}
|
|
427
497
|
return {
|
|
428
498
|
success: false,
|
|
@@ -459,7 +529,9 @@ const stopAction = async (ctx) => {
|
|
|
459
529
|
try {
|
|
460
530
|
rt = JSON.parse(readFileSync(join(ctx.cwd, ORG_DIR, name, 'runtime.json'), 'utf8'));
|
|
461
531
|
}
|
|
462
|
-
catch {
|
|
532
|
+
catch {
|
|
533
|
+
/* never run */
|
|
534
|
+
}
|
|
463
535
|
if (rt?.status !== 'running') {
|
|
464
536
|
log(output.warning(`Org "${name}" is not running (runtime state: ${rt?.status ?? 'never run'}) — nothing to stop.`));
|
|
465
537
|
return { success: false, message: 'org not running' };
|
|
@@ -539,12 +611,16 @@ const statusAction = async (ctx) => {
|
|
|
539
611
|
}
|
|
540
612
|
}
|
|
541
613
|
const orgDir = join(ctx.cwd, ORG_DIR);
|
|
542
|
-
const targets = name
|
|
543
|
-
?
|
|
544
|
-
:
|
|
614
|
+
const targets = name
|
|
615
|
+
? [name]
|
|
616
|
+
: existsSync(orgDir)
|
|
617
|
+
? listOrgConfigFiles(orgDir).map((f) => f.replace(/\.json$/, ''))
|
|
618
|
+
: [];
|
|
545
619
|
for (const t of targets) {
|
|
546
620
|
const rt = join(orgDir, t, 'runtime.json');
|
|
547
|
-
let state = {
|
|
621
|
+
let state = {
|
|
622
|
+
status: 'never run',
|
|
623
|
+
};
|
|
548
624
|
if (existsSync(rt)) {
|
|
549
625
|
try {
|
|
550
626
|
state = JSON.parse(readFileSync(rt, 'utf8'));
|
|
@@ -557,24 +633,29 @@ const statusAction = async (ctx) => {
|
|
|
557
633
|
// A "running" record whose pid is gone means the daemon died without its
|
|
558
634
|
// stopOrg cleanup — surface that instead of reporting it as still running.
|
|
559
635
|
if ((state.status === 'running' || state.status === 'crashed') && state.pid) {
|
|
560
|
-
const pidGone = state.status === 'crashed' ||
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
636
|
+
const pidGone = state.status === 'crashed' ||
|
|
637
|
+
(() => {
|
|
638
|
+
try {
|
|
639
|
+
process.kill(state.pid, 0);
|
|
640
|
+
return false;
|
|
641
|
+
}
|
|
642
|
+
catch {
|
|
643
|
+
return true;
|
|
644
|
+
}
|
|
645
|
+
})();
|
|
569
646
|
if (pidGone) {
|
|
570
647
|
let heartbeatHint = '';
|
|
571
648
|
try {
|
|
572
649
|
const hb = JSON.parse(readFileSync(join(ctx.cwd, '.monomind', 'serve-heartbeat.json'), 'utf8'));
|
|
573
650
|
heartbeatHint = ` (last heartbeat: ${hb.updatedAt})`;
|
|
574
651
|
}
|
|
575
|
-
catch {
|
|
652
|
+
catch {
|
|
653
|
+
/* no heartbeat file — daemon predates this change or was already cleaned up */
|
|
654
|
+
}
|
|
576
655
|
const closedBy = state.closedBy;
|
|
577
|
-
const label = closedBy === 'crash-handler'
|
|
656
|
+
const label = closedBy === 'crash-handler'
|
|
657
|
+
? 'crashed (caught by crash handler)'
|
|
658
|
+
: `crashed (runtime.json says ${state.status} but pid ${state.pid} is gone)`;
|
|
578
659
|
log(output.warning(`${t}: ${label}${heartbeatHint}${state.run ? ` — run ${state.run}` : ''} — close it out with "monomind org mark-complete ${t}"`));
|
|
579
660
|
continue;
|
|
580
661
|
}
|
|
@@ -601,7 +682,7 @@ const statusAction = async (ctx) => {
|
|
|
601
682
|
const quietMs = Date.now() - lastTs;
|
|
602
683
|
const quietStr = fmtDuration(quietMs);
|
|
603
684
|
const toolCalls = Object.values(summary.roles).reduce((a, r) => a + r.toolsAllowed + r.toolsDenied, 0);
|
|
604
|
-
const rolesUp = Object.keys(summary.roles).filter(r => r !== '(system)').length;
|
|
685
|
+
const rolesUp = Object.keys(summary.roles).filter((r) => r !== '(system)').length;
|
|
605
686
|
log(` elapsed: ${elapsedStr} | events: ${summary.events} | messages: ${summary.messages} | tools: ${toolCalls}`);
|
|
606
687
|
log(` roles active: ${rolesUp} | tokens: ${fmtNum(summary.totalTokens)} | cost: $${summary.totalCostUsd.toFixed(2)}`);
|
|
607
688
|
log(` quiet since: ${new Date(lastTs).toISOString().slice(11, 19)} (${quietStr} ago)`);
|
|
@@ -610,7 +691,7 @@ const statusAction = async (ctx) => {
|
|
|
610
691
|
}
|
|
611
692
|
// Previous cycle comparison from history
|
|
612
693
|
const history = readHistory(ctx.cwd, t);
|
|
613
|
-
const prev = history.filter(h => h.run !== state.run).at(-1);
|
|
694
|
+
const prev = history.filter((h) => h.run !== state.run).at(-1);
|
|
614
695
|
if (prev) {
|
|
615
696
|
const dur = prev.durationMs !== null ? fmtDuration(prev.durationMs) : '?';
|
|
616
697
|
const outcome = prev.outcome?.status ?? (prev.crashes.length ? 'crashed' : 'completed');
|
|
@@ -674,7 +755,9 @@ export const pollReloadfiles = async (cwd, daemon) => {
|
|
|
674
755
|
try {
|
|
675
756
|
unlinkSync(reloadFile);
|
|
676
757
|
}
|
|
677
|
-
catch {
|
|
758
|
+
catch {
|
|
759
|
+
/* already gone */
|
|
760
|
+
}
|
|
678
761
|
try {
|
|
679
762
|
const result = daemon.reloadOrgDef(name);
|
|
680
763
|
const parts = [];
|
|
@@ -726,11 +809,15 @@ export const pollRunfiles = async (cwd, daemon) => {
|
|
|
726
809
|
if (typeof body.task === 'string' && body.task.trim())
|
|
727
810
|
task = body.task;
|
|
728
811
|
}
|
|
729
|
-
catch {
|
|
812
|
+
catch {
|
|
813
|
+
/* bare/empty runfile — start with the org's own goal */
|
|
814
|
+
}
|
|
730
815
|
try {
|
|
731
816
|
unlinkSync(runfile);
|
|
732
817
|
}
|
|
733
|
-
catch {
|
|
818
|
+
catch {
|
|
819
|
+
/* already gone */
|
|
820
|
+
}
|
|
734
821
|
if (daemon.listRunning().includes(name))
|
|
735
822
|
continue; // already running — request satisfied
|
|
736
823
|
log(output.info(`org ${name}: run requested — starting now${task ? ' (with task)' : ''}`));
|
|
@@ -761,7 +848,9 @@ export const pollRunfiles = async (cwd, daemon) => {
|
|
|
761
848
|
*/
|
|
762
849
|
const supervisorAction = async (ctx) => {
|
|
763
850
|
const cwd = resolve(ctx.cwd || process.cwd());
|
|
764
|
-
const requested = String(ctx.flags.format ?? '')
|
|
851
|
+
const requested = String(ctx.flags.format ?? '')
|
|
852
|
+
.trim()
|
|
853
|
+
.toLowerCase();
|
|
765
854
|
const format = requested || (process.platform === 'darwin' ? 'launchd' : 'systemd');
|
|
766
855
|
if (format !== 'launchd' && format !== 'systemd') {
|
|
767
856
|
log(output.error(`Unknown --format "${requested}" — expected launchd or systemd.`));
|
|
@@ -849,7 +938,7 @@ WantedBy=default.target
|
|
|
849
938
|
return { success: true, message: `${format} unit emitted` };
|
|
850
939
|
};
|
|
851
940
|
const serveAction = async (ctx) => {
|
|
852
|
-
const crossProcess = ctx.flags
|
|
941
|
+
const crossProcess = ctx.flags.crossProcess !== false;
|
|
853
942
|
const daemon = new OrgDaemon(ctx.cwd, { crossProcess });
|
|
854
943
|
let srv;
|
|
855
944
|
if (crossProcess) {
|
|
@@ -862,13 +951,21 @@ const serveAction = async (ctx) => {
|
|
|
862
951
|
try {
|
|
863
952
|
console.error(`[org serve] ${label}:`, err);
|
|
864
953
|
}
|
|
865
|
-
catch {
|
|
954
|
+
catch {
|
|
955
|
+
/* stderr gone */
|
|
956
|
+
}
|
|
866
957
|
daemon.persistCrashStateAll(`${label}: ${err instanceof Error ? err.message : String(err)}`);
|
|
867
958
|
daemon.clearHeartbeat();
|
|
868
959
|
process.exitCode = 1;
|
|
869
960
|
};
|
|
870
|
-
process.on('uncaughtException', (err) => {
|
|
871
|
-
|
|
961
|
+
process.on('uncaughtException', (err) => {
|
|
962
|
+
crashExit('uncaughtException', err);
|
|
963
|
+
process.exit(1);
|
|
964
|
+
});
|
|
965
|
+
process.on('unhandledRejection', (err) => {
|
|
966
|
+
crashExit('unhandledRejection', err);
|
|
967
|
+
process.exit(1);
|
|
968
|
+
});
|
|
872
969
|
// Termination diagnostics (#45). The two handlers above only cover errors
|
|
873
970
|
// raised *inside* the daemon. A report of the daemon vanishing after hours
|
|
874
971
|
// had a log holding nothing but its startup lines, because the ways a daemon
|
|
@@ -892,7 +989,9 @@ const serveAction = async (ctx) => {
|
|
|
892
989
|
try {
|
|
893
990
|
console.error(`[org serve] shutting down: ${reason}`);
|
|
894
991
|
}
|
|
895
|
-
catch {
|
|
992
|
+
catch {
|
|
993
|
+
/* stderr gone */
|
|
994
|
+
}
|
|
896
995
|
};
|
|
897
996
|
for (const sig of ['SIGTERM', 'SIGINT', 'SIGHUP']) {
|
|
898
997
|
process.on(sig, () => {
|
|
@@ -901,7 +1000,9 @@ const serveAction = async (ctx) => {
|
|
|
901
1000
|
daemon.persistCrashStateAll();
|
|
902
1001
|
daemon.clearHeartbeat();
|
|
903
1002
|
}
|
|
904
|
-
catch {
|
|
1003
|
+
catch {
|
|
1004
|
+
/* best effort */
|
|
1005
|
+
}
|
|
905
1006
|
// A daemon holds ref'd timers, so it will not drain on its own; an
|
|
906
1007
|
// explicit exit is required here and is the intended signal semantics.
|
|
907
1008
|
process.exit(sig === 'SIGTERM' || sig === 'SIGINT' ? 0 : 1);
|
|
@@ -915,7 +1016,9 @@ const serveAction = async (ctx) => {
|
|
|
915
1016
|
// Heartbeat: write every 30s so `org status` can tell "alive but busy" from
|
|
916
1017
|
// "daemon gone" without relying on pid liveness alone.
|
|
917
1018
|
daemon.writeHeartbeat();
|
|
918
|
-
const heartbeatInterval = setInterval(() => {
|
|
1019
|
+
const heartbeatInterval = setInterval(() => {
|
|
1020
|
+
daemon.writeHeartbeat();
|
|
1021
|
+
}, 30_000);
|
|
919
1022
|
heartbeatInterval.unref?.();
|
|
920
1023
|
log(output.info('org daemon serving — Ctrl-C to stop'));
|
|
921
1024
|
// schedule orgs whose definition declares an interval (e.g. "15m", "2h")
|
|
@@ -933,7 +1036,7 @@ const serveAction = async (ctx) => {
|
|
|
933
1036
|
const { runPrechecks } = await import('../orgrt/prechecks.js');
|
|
934
1037
|
const { ok, results } = await runPrechecks(checks, ctx.cwd);
|
|
935
1038
|
if (!ok) {
|
|
936
|
-
const failed = results.find(r => !r.passed);
|
|
1039
|
+
const failed = results.find((r) => !r.passed);
|
|
937
1040
|
log(output.warning(`org ${name}: precheck "${failed?.name}" failed — skipping scheduled run`));
|
|
938
1041
|
if (failed?.output)
|
|
939
1042
|
log(output.warning(` ${failed.output.slice(0, 200)}`));
|
|
@@ -960,9 +1063,10 @@ const serveAction = async (ctx) => {
|
|
|
960
1063
|
// (idempotent — it resolves `done` and flushes).
|
|
961
1064
|
const org = daemon.getOrg(name);
|
|
962
1065
|
const allDone = org
|
|
963
|
-
? Promise.allSettled([...org.agents.values()].map(a => a.done))
|
|
1066
|
+
? Promise.allSettled([...org.agents.values()].map((a) => a.done))
|
|
964
1067
|
: Promise.resolve([]);
|
|
965
|
-
const maxRun = org?.def
|
|
1068
|
+
const maxRun = org?.def
|
|
1069
|
+
?.run_config?.max_run;
|
|
966
1070
|
// Default to the full interval. The old `min(interval, 10min)` clamp
|
|
967
1071
|
// silently guillotined every org that didn't set max_run: real cycles
|
|
968
1072
|
// here run 75-93 minutes, so a 2h-scheduled org was being force-stopped
|
|
@@ -974,10 +1078,13 @@ const serveAction = async (ctx) => {
|
|
|
974
1078
|
// Set run_config.max_run to bound it tighter — or looser.
|
|
975
1079
|
const maxMs = parseSchedule(maxRun) ?? intervalMs;
|
|
976
1080
|
let timer;
|
|
977
|
-
await Promise.race([
|
|
1081
|
+
await Promise.race([
|
|
1082
|
+
allDone,
|
|
1083
|
+
new Promise((r) => {
|
|
978
1084
|
timer = setTimeout(r, maxMs);
|
|
979
1085
|
timer.unref?.();
|
|
980
|
-
})
|
|
1086
|
+
}),
|
|
1087
|
+
]);
|
|
981
1088
|
if (timer)
|
|
982
1089
|
clearTimeout(timer);
|
|
983
1090
|
}
|
|
@@ -989,7 +1096,9 @@ const serveAction = async (ctx) => {
|
|
|
989
1096
|
// bound threw that work away; a minute is enough to finish an edit or a
|
|
990
1097
|
// test run and flush, and still well inside any sane interval.
|
|
991
1098
|
if (startedHere) {
|
|
992
|
-
await daemon
|
|
1099
|
+
await daemon
|
|
1100
|
+
.stopOrg(name, { drainMs: 60_000 })
|
|
1101
|
+
.catch((err) => console.error(`org ${name}: stop failed:`, err));
|
|
993
1102
|
}
|
|
994
1103
|
}
|
|
995
1104
|
});
|
|
@@ -1021,13 +1130,22 @@ const serveAction = async (ctx) => {
|
|
|
1021
1130
|
}
|
|
1022
1131
|
}
|
|
1023
1132
|
}
|
|
1024
|
-
const stopPoll = setInterval(() => {
|
|
1133
|
+
const stopPoll = setInterval(() => {
|
|
1134
|
+
void pollStopfiles(ctx.cwd, daemon);
|
|
1135
|
+
}, 2000);
|
|
1025
1136
|
stopPoll.unref?.();
|
|
1026
|
-
const runPoll = setInterval(() => {
|
|
1137
|
+
const runPoll = setInterval(() => {
|
|
1138
|
+
void pollRunfiles(ctx.cwd, daemon);
|
|
1139
|
+
}, 2000);
|
|
1027
1140
|
runPoll.unref?.();
|
|
1028
|
-
const reloadPoll = setInterval(() => {
|
|
1141
|
+
const reloadPoll = setInterval(() => {
|
|
1142
|
+
void pollReloadfiles(ctx.cwd, daemon);
|
|
1143
|
+
}, 2000);
|
|
1029
1144
|
reloadPoll.unref?.();
|
|
1030
|
-
await new Promise(
|
|
1145
|
+
await new Promise((r) => {
|
|
1146
|
+
process.once('SIGINT', () => r());
|
|
1147
|
+
process.once('SIGTERM', () => r());
|
|
1148
|
+
});
|
|
1031
1149
|
clearInterval(stopPoll);
|
|
1032
1150
|
clearInterval(runPoll);
|
|
1033
1151
|
clearInterval(reloadPoll);
|
|
@@ -1041,9 +1159,9 @@ const serveAction = async (ctx) => {
|
|
|
1041
1159
|
const testLoopAction = async (ctx) => {
|
|
1042
1160
|
// non-literal specifier: test-loop.ts lands in a later task; keeps tsc clean until then
|
|
1043
1161
|
const testLoopModule = '../orgrt/test-loop.js';
|
|
1044
|
-
const { runTestLoop } = await import(testLoopModule);
|
|
1045
|
-
const n = Number(ctx.flags
|
|
1046
|
-
const scenario = typeof ctx.flags
|
|
1162
|
+
const { runTestLoop } = (await import(testLoopModule));
|
|
1163
|
+
const n = Number(ctx.flags.times ?? ctx.flags.n ?? 5);
|
|
1164
|
+
const scenario = typeof ctx.flags.scenario === 'string' ? ctx.flags.scenario : undefined;
|
|
1047
1165
|
const report = await runTestLoop(ctx.cwd, n, scenario);
|
|
1048
1166
|
log(output.info(report.summary));
|
|
1049
1167
|
return { success: report.failed === 0, message: report.summary };
|
|
@@ -1083,9 +1201,12 @@ const listAction = async (ctx) => {
|
|
|
1083
1201
|
}
|
|
1084
1202
|
}
|
|
1085
1203
|
}
|
|
1086
|
-
catch {
|
|
1204
|
+
catch {
|
|
1205
|
+
/* no runtime state yet */
|
|
1206
|
+
}
|
|
1087
1207
|
const goal = typeof def.goal === 'string' && def.goal
|
|
1088
|
-
? ` — ${def.goal.length > 60 ? `${def.goal.slice(0, 57)}...` : def.goal}`
|
|
1208
|
+
? ` — ${def.goal.length > 60 ? `${def.goal.slice(0, 57)}...` : def.goal}`
|
|
1209
|
+
: '';
|
|
1089
1210
|
detail = ` (${roles} role${roles === 1 ? '' : 's'}, ${sched}, ${status})${goal}`;
|
|
1090
1211
|
}
|
|
1091
1212
|
catch {
|
|
@@ -1105,7 +1226,7 @@ const deleteAction = async (ctx) => {
|
|
|
1105
1226
|
log(output.error(`Invalid org name: ${orgName}`));
|
|
1106
1227
|
return { success: false, message: 'invalid org name' };
|
|
1107
1228
|
}
|
|
1108
|
-
const confirmed = ctx.flags
|
|
1229
|
+
const confirmed = ctx.flags.yes === true || ctx.args.includes('--yes') || ctx.args.includes('-y');
|
|
1109
1230
|
if (!confirmed) {
|
|
1110
1231
|
log(output.warning(`This will permanently delete org "${orgName}" and all its data.`));
|
|
1111
1232
|
log(output.warning('Pass --yes to confirm.'));
|
|
@@ -1118,7 +1239,7 @@ const deleteAction = async (ctx) => {
|
|
|
1118
1239
|
log(output.error(`Org not found: ${orgName}`));
|
|
1119
1240
|
return { success: false, message: 'org not found' };
|
|
1120
1241
|
}
|
|
1121
|
-
if (isOrgRunning(cwd, orgName) && ctx.flags
|
|
1242
|
+
if (isOrgRunning(cwd, orgName) && ctx.flags.force !== true) {
|
|
1122
1243
|
log(output.error(`Org "${orgName}" is currently running — stop it first (monomind org stop ${orgName}) or pass --force.`));
|
|
1123
1244
|
return { success: false, message: 'org is running' };
|
|
1124
1245
|
}
|
|
@@ -1132,27 +1253,37 @@ const deleteAction = async (ctx) => {
|
|
|
1132
1253
|
removed++;
|
|
1133
1254
|
}
|
|
1134
1255
|
}
|
|
1135
|
-
catch {
|
|
1256
|
+
catch {
|
|
1257
|
+
/* ignore */
|
|
1258
|
+
}
|
|
1136
1259
|
}
|
|
1137
1260
|
}
|
|
1138
1261
|
try {
|
|
1139
1262
|
unlinkSync(join(orgsDir, '.stops', `${orgName}.stop`));
|
|
1140
1263
|
}
|
|
1141
|
-
catch {
|
|
1264
|
+
catch {
|
|
1265
|
+
/* ignore */
|
|
1266
|
+
}
|
|
1142
1267
|
const orgSubDir = join(orgsDir, orgName);
|
|
1143
1268
|
try {
|
|
1144
1269
|
if (existsSync(orgSubDir))
|
|
1145
1270
|
rmSync(orgSubDir, { recursive: true, force: true });
|
|
1146
1271
|
}
|
|
1147
|
-
catch {
|
|
1272
|
+
catch {
|
|
1273
|
+
/* ignore */
|
|
1274
|
+
}
|
|
1148
1275
|
try {
|
|
1149
1276
|
unlinkSync(join(cwd, '.monomind', 'loops', `${orgName}.md`));
|
|
1150
1277
|
}
|
|
1151
|
-
catch {
|
|
1278
|
+
catch {
|
|
1279
|
+
/* ignore */
|
|
1280
|
+
}
|
|
1152
1281
|
try {
|
|
1153
1282
|
unlinkSync(join(orgsDir, `${orgName}-run.md`));
|
|
1154
1283
|
}
|
|
1155
|
-
catch {
|
|
1284
|
+
catch {
|
|
1285
|
+
/* ignore */
|
|
1286
|
+
}
|
|
1156
1287
|
log(output.success(`Org "${orgName}" deleted (${removed} file(s) removed).`));
|
|
1157
1288
|
return { success: true };
|
|
1158
1289
|
};
|
|
@@ -1170,7 +1301,11 @@ const clearStaleRuntime = (cwd, name) => {
|
|
|
1170
1301
|
rt = JSON.parse(readFileSync(rtPath, 'utf8'));
|
|
1171
1302
|
}
|
|
1172
1303
|
catch (err) {
|
|
1173
|
-
return {
|
|
1304
|
+
return {
|
|
1305
|
+
cleared: false,
|
|
1306
|
+
reason: 'unreadable',
|
|
1307
|
+
detail: err instanceof Error ? err.message : String(err),
|
|
1308
|
+
};
|
|
1174
1309
|
}
|
|
1175
1310
|
if (rt.status !== 'running' && rt.status !== 'crashed')
|
|
1176
1311
|
return { cleared: false, reason: 'not-running' };
|
|
@@ -1179,11 +1314,19 @@ const clearStaleRuntime = (cwd, name) => {
|
|
|
1179
1314
|
process.kill(rt.pid, 0);
|
|
1180
1315
|
return { cleared: false, reason: 'alive', detail: String(rt.pid) };
|
|
1181
1316
|
}
|
|
1182
|
-
catch {
|
|
1317
|
+
catch {
|
|
1318
|
+
/* pid is gone — this is exactly the stale case mark-complete exists for */
|
|
1319
|
+
}
|
|
1183
1320
|
}
|
|
1184
1321
|
// Same shape stopOrg's persistState() writes, so every reader (org status,
|
|
1185
1322
|
// isOrgRunning, the mastermind-org* skills' jq checks) sees a stopped org.
|
|
1186
|
-
writeFileSync(rtPath, JSON.stringify({
|
|
1323
|
+
writeFileSync(rtPath, JSON.stringify({
|
|
1324
|
+
status: 'stopped',
|
|
1325
|
+
run: rt.run,
|
|
1326
|
+
pid: rt.pid,
|
|
1327
|
+
updated: new Date().toISOString(),
|
|
1328
|
+
closedBy: 'mark-complete',
|
|
1329
|
+
}, null, 2));
|
|
1187
1330
|
return { cleared: true, run: rt.run };
|
|
1188
1331
|
};
|
|
1189
1332
|
const markCompleteAction = async (ctx) => {
|
|
@@ -1198,7 +1341,9 @@ const markCompleteAction = async (ctx) => {
|
|
|
1198
1341
|
// 0 — a typo looked like a successful cleanup.
|
|
1199
1342
|
const orgsDir = join(cwd, ORG_DIR);
|
|
1200
1343
|
if (!existsSync(join(orgsDir, `${orgName}.json`))) {
|
|
1201
|
-
const known = existsSync(orgsDir)
|
|
1344
|
+
const known = existsSync(orgsDir)
|
|
1345
|
+
? listOrgConfigFiles(orgsDir).map((f) => f.replace(/\.json$/, ''))
|
|
1346
|
+
: [];
|
|
1202
1347
|
log(output.error(`Org not found: ${orgName}${known.length ? ` — available: ${known.join(', ')}` : ''}`));
|
|
1203
1348
|
return { success: false, message: 'org not found' };
|
|
1204
1349
|
}
|
|
@@ -1223,14 +1368,18 @@ const markCompleteAction = async (ctx) => {
|
|
|
1223
1368
|
if (ctl.url)
|
|
1224
1369
|
ctrlUrl = ctl.url;
|
|
1225
1370
|
}
|
|
1226
|
-
catch {
|
|
1371
|
+
catch {
|
|
1372
|
+
/* default */
|
|
1373
|
+
}
|
|
1227
1374
|
try {
|
|
1228
1375
|
// All dashboard /api routes are auth-gated — attach the local session token.
|
|
1229
1376
|
let auth = '';
|
|
1230
1377
|
try {
|
|
1231
1378
|
auth = readFileSync(join(cwd, '.monomind', 'dashboard-token'), 'utf8').trim();
|
|
1232
1379
|
}
|
|
1233
|
-
catch {
|
|
1380
|
+
catch {
|
|
1381
|
+
/* server may be pre-auth */
|
|
1382
|
+
}
|
|
1234
1383
|
// Bounded. Updating the dashboard is best-effort — the local state has
|
|
1235
1384
|
// already been cleared by this point — but the fetch had no timeout, so a
|
|
1236
1385
|
// dashboard that holds the port without answering (a wedged build from an
|
|
@@ -1296,27 +1445,69 @@ export const orgCommand = {
|
|
|
1296
1445
|
description: 'SDK-based org runtime — run agent organizations as a controlled daemon',
|
|
1297
1446
|
subcommands: [
|
|
1298
1447
|
{
|
|
1299
|
-
name: 'run',
|
|
1448
|
+
name: 'run',
|
|
1449
|
+
description: 'Start an org (foreground daemon)',
|
|
1300
1450
|
options: [
|
|
1301
1451
|
{ name: 'task', description: 'Override the org goal for this run', type: 'string' },
|
|
1302
|
-
{
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1452
|
+
{
|
|
1453
|
+
name: 'resume',
|
|
1454
|
+
description: 'Resume an org run from its persisted checkpoint instead of starting fresh',
|
|
1455
|
+
type: 'boolean',
|
|
1456
|
+
},
|
|
1457
|
+
{
|
|
1458
|
+
name: 'cross-process',
|
|
1459
|
+
description: 'Discover and message orgs hosted by other monomind processes on this machine (default true)',
|
|
1460
|
+
type: 'boolean',
|
|
1461
|
+
default: true,
|
|
1462
|
+
},
|
|
1463
|
+
{
|
|
1464
|
+
name: 'dry-run',
|
|
1465
|
+
description: "Validate and print each role's briefing without starting any agent sessions",
|
|
1466
|
+
type: 'boolean',
|
|
1467
|
+
},
|
|
1468
|
+
{
|
|
1469
|
+
name: 'budget-usd',
|
|
1470
|
+
description: 'Hard-stop the run if the upfront cost estimate exceeds this USD value (e.g. --budget-usd 5)',
|
|
1471
|
+
type: 'number',
|
|
1472
|
+
},
|
|
1473
|
+
{
|
|
1474
|
+
name: 'yes',
|
|
1475
|
+
short: 'y',
|
|
1476
|
+
description: 'Skip the interactive cost-estimate confirmation prompt',
|
|
1477
|
+
type: 'boolean',
|
|
1478
|
+
},
|
|
1479
|
+
],
|
|
1480
|
+
examples: [
|
|
1481
|
+
{
|
|
1482
|
+
command: 'monomind org run growth --task "weekly report"',
|
|
1483
|
+
description: 'Run the growth org once with a task',
|
|
1484
|
+
},
|
|
1307
1485
|
],
|
|
1308
|
-
examples: [{ command: 'monomind org run growth --task "weekly report"', description: 'Run the growth org once with a task' }],
|
|
1309
1486
|
action: runAction,
|
|
1310
1487
|
},
|
|
1311
1488
|
{ name: 'stop', description: 'Request a running org daemon to stop', action: stopAction },
|
|
1312
|
-
{
|
|
1489
|
+
{
|
|
1490
|
+
name: 'pause',
|
|
1491
|
+
description: 'Pause an org — current turns finish, no new cycles start',
|
|
1492
|
+
action: pauseAction,
|
|
1493
|
+
},
|
|
1313
1494
|
{ name: 'resume', description: 'Resume a paused org', action: resumeAction },
|
|
1314
|
-
{
|
|
1495
|
+
{
|
|
1496
|
+
name: 'reload',
|
|
1497
|
+
description: 'Hot-reload an org definition without stopping sessions',
|
|
1498
|
+
action: reloadAction,
|
|
1499
|
+
},
|
|
1315
1500
|
{ name: 'status', description: 'Show runtime state of orgs', action: statusAction },
|
|
1316
1501
|
{
|
|
1317
|
-
name: 'serve',
|
|
1502
|
+
name: 'serve',
|
|
1503
|
+
description: 'Start the daemon server only (hosts scheduled orgs)',
|
|
1318
1504
|
options: [
|
|
1319
|
-
{
|
|
1505
|
+
{
|
|
1506
|
+
name: 'cross-process',
|
|
1507
|
+
description: 'Discover and message orgs hosted by other monomind processes on this machine (default true)',
|
|
1508
|
+
type: 'boolean',
|
|
1509
|
+
default: true,
|
|
1510
|
+
},
|
|
1320
1511
|
],
|
|
1321
1512
|
action: serveAction,
|
|
1322
1513
|
},
|
|
@@ -1325,32 +1516,57 @@ export const orgCommand = {
|
|
|
1325
1516
|
description: 'Print (or --install) a launchd/systemd unit that keeps `org serve` running',
|
|
1326
1517
|
options: [
|
|
1327
1518
|
{ name: 'format', description: 'launchd or systemd (default: platform)', type: 'string' },
|
|
1328
|
-
{
|
|
1519
|
+
{
|
|
1520
|
+
name: 'install',
|
|
1521
|
+
description: 'Write the unit into the per-user location',
|
|
1522
|
+
type: 'boolean',
|
|
1523
|
+
},
|
|
1329
1524
|
],
|
|
1330
1525
|
action: supervisorAction,
|
|
1331
1526
|
},
|
|
1332
1527
|
{
|
|
1333
|
-
name: 'test-loop',
|
|
1528
|
+
name: 'test-loop',
|
|
1529
|
+
description: 'Run the org e2e verification loop N times',
|
|
1334
1530
|
options: [
|
|
1335
1531
|
{ name: 'times', short: 'n', description: 'Iterations', type: 'number', default: 5 },
|
|
1336
|
-
{
|
|
1532
|
+
{
|
|
1533
|
+
name: 'scenario',
|
|
1534
|
+
description: 'Run a declarative scenario file (.monomind/scenarios/<file>) instead of the built-in fixture — structural dry-run only',
|
|
1535
|
+
type: 'string',
|
|
1536
|
+
},
|
|
1337
1537
|
],
|
|
1338
1538
|
action: testLoopAction,
|
|
1339
1539
|
},
|
|
1340
1540
|
{
|
|
1341
|
-
name: 'logs',
|
|
1541
|
+
name: 'logs',
|
|
1542
|
+
description: 'Show (or follow) the formatted event log of an org run',
|
|
1342
1543
|
options: [
|
|
1343
1544
|
{ name: 'run', description: 'Run id (default: latest)', type: 'string' },
|
|
1344
1545
|
{ name: 'role', description: 'Only events from/to this role', type: 'string' },
|
|
1345
|
-
{
|
|
1546
|
+
{
|
|
1547
|
+
name: 'filter-tool',
|
|
1548
|
+
description: 'Filter events by tool name (e.g., Write, Edit)',
|
|
1549
|
+
type: 'string',
|
|
1550
|
+
},
|
|
1346
1551
|
{ name: 'filter-role', description: 'Filter events by role ID', type: 'string' },
|
|
1347
|
-
{
|
|
1348
|
-
|
|
1552
|
+
{
|
|
1553
|
+
name: 'tools-only',
|
|
1554
|
+
description: 'Show only tool events (exclude messages/status/audit)',
|
|
1555
|
+
type: 'boolean',
|
|
1556
|
+
},
|
|
1557
|
+
{
|
|
1558
|
+
name: 'audit-filter',
|
|
1559
|
+
description: 'Filter audit events by decision (allow|deny)',
|
|
1560
|
+
type: 'string',
|
|
1561
|
+
},
|
|
1349
1562
|
{ name: 'follow', short: 'f', description: 'Keep tailing until Ctrl-C', type: 'boolean' },
|
|
1350
1563
|
],
|
|
1351
1564
|
examples: [
|
|
1352
1565
|
{ command: 'monomind org logs growth --follow', description: 'Live-tail the latest run' },
|
|
1353
|
-
{
|
|
1566
|
+
{
|
|
1567
|
+
command: 'monomind org logs growth --tools-only',
|
|
1568
|
+
description: 'Show only tool call events',
|
|
1569
|
+
},
|
|
1354
1570
|
],
|
|
1355
1571
|
action: async (ctx) => {
|
|
1356
1572
|
const v = validateOrgName(ctx.args[0]);
|
|
@@ -1361,16 +1577,36 @@ export const orgCommand = {
|
|
|
1361
1577
|
},
|
|
1362
1578
|
},
|
|
1363
1579
|
{
|
|
1364
|
-
name: 'watch',
|
|
1580
|
+
name: 'watch',
|
|
1581
|
+
description: "Live-tail one role's assistant chat text (any runtime) — a filtered, friendlier `logs --follow`",
|
|
1365
1582
|
options: [
|
|
1366
1583
|
{ name: 'run', description: 'Run id (default: latest)', type: 'string' },
|
|
1367
|
-
{
|
|
1368
|
-
|
|
1369
|
-
|
|
1584
|
+
{
|
|
1585
|
+
name: 'follow',
|
|
1586
|
+
description: 'Set --follow=false to print current output once and exit instead of live-tailing',
|
|
1587
|
+
type: 'boolean',
|
|
1588
|
+
default: true,
|
|
1589
|
+
},
|
|
1590
|
+
{
|
|
1591
|
+
name: 'verbose',
|
|
1592
|
+
description: 'Also interleave status events (restart/crash/state-change) into the transcript',
|
|
1593
|
+
type: 'boolean',
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
name: 'stats',
|
|
1597
|
+
description: 'Print a running token/cost line as usage events arrive',
|
|
1598
|
+
type: 'boolean',
|
|
1599
|
+
},
|
|
1370
1600
|
],
|
|
1371
1601
|
examples: [
|
|
1372
|
-
{
|
|
1373
|
-
|
|
1602
|
+
{
|
|
1603
|
+
command: 'monomind org watch growth researcher',
|
|
1604
|
+
description: "Watch the researcher role's live output",
|
|
1605
|
+
},
|
|
1606
|
+
{
|
|
1607
|
+
command: 'monomind org watch growth researcher --verbose --stats',
|
|
1608
|
+
description: 'Also show restarts/crashes and a running token/cost total',
|
|
1609
|
+
},
|
|
1374
1610
|
],
|
|
1375
1611
|
action: async (ctx) => {
|
|
1376
1612
|
const v = validateOrgName(ctx.args[0]);
|
|
@@ -1381,16 +1617,23 @@ export const orgCommand = {
|
|
|
1381
1617
|
},
|
|
1382
1618
|
},
|
|
1383
1619
|
{
|
|
1384
|
-
name: 'report',
|
|
1620
|
+
name: 'report',
|
|
1621
|
+
description: 'Summarize an org run: outcome, per-role activity, tokens, assets, crashes',
|
|
1385
1622
|
options: [
|
|
1386
1623
|
{ name: 'run', description: 'Run id (default: latest)', type: 'string' },
|
|
1387
1624
|
{ name: 'all', description: 'List all recorded runs from history', type: 'boolean' },
|
|
1388
1625
|
{ name: 'by-role', description: 'Show per-role cost breakdown', type: 'boolean' },
|
|
1389
1626
|
{ name: 'audit', description: 'Show tool audit trail', type: 'boolean' },
|
|
1390
|
-
{
|
|
1627
|
+
{
|
|
1628
|
+
name: 'tool',
|
|
1629
|
+
description: 'Filter tool audit by tool name (with --audit)',
|
|
1630
|
+
type: 'string',
|
|
1631
|
+
},
|
|
1391
1632
|
{ name: 'format', description: 'Output format (mermaid for flowchart)', type: 'string' },
|
|
1392
1633
|
],
|
|
1393
|
-
examples: [
|
|
1634
|
+
examples: [
|
|
1635
|
+
{ command: 'monomind org report growth', description: 'Report on the latest run' },
|
|
1636
|
+
],
|
|
1394
1637
|
action: async (ctx) => {
|
|
1395
1638
|
const v = validateOrgName(ctx.args[0]);
|
|
1396
1639
|
if (!v.ok)
|
|
@@ -1400,11 +1643,18 @@ export const orgCommand = {
|
|
|
1400
1643
|
},
|
|
1401
1644
|
},
|
|
1402
1645
|
{
|
|
1403
|
-
name: 'memory',
|
|
1646
|
+
name: 'memory',
|
|
1647
|
+
description: "Inspect an org's cross-run memory and knowledge graph (stats | search <query> | rules | rollback <run-ref>)",
|
|
1404
1648
|
examples: [
|
|
1405
1649
|
{ command: 'monomind org memory growth stats', description: 'KG size and namespaces' },
|
|
1406
|
-
{
|
|
1407
|
-
|
|
1650
|
+
{
|
|
1651
|
+
command: 'monomind org memory growth search "launch checklist"',
|
|
1652
|
+
description: 'Search org memory + KG',
|
|
1653
|
+
},
|
|
1654
|
+
{
|
|
1655
|
+
command: 'monomind org memory growth rollback run:m4x2',
|
|
1656
|
+
description: 'Delete everything one run wrote to the KG',
|
|
1657
|
+
},
|
|
1408
1658
|
],
|
|
1409
1659
|
action: async (ctx) => {
|
|
1410
1660
|
const v = validateOrgName(ctx.args[0]);
|
|
@@ -1418,7 +1668,9 @@ export const orgCommand = {
|
|
|
1418
1668
|
try {
|
|
1419
1669
|
if (sub === 'stats') {
|
|
1420
1670
|
const [stats, glossary, backend] = await Promise.all([
|
|
1421
|
-
kg.kgStats({ dbPath }),
|
|
1671
|
+
kg.kgStats({ dbPath }),
|
|
1672
|
+
kg.kgGlossary({ dbPath, limit: 15 }),
|
|
1673
|
+
bridge.bridgeGetBackendStats(dbPath),
|
|
1422
1674
|
]);
|
|
1423
1675
|
log(output.info(`Knowledge graph: ${stats.nodes} entities, ${stats.edges} relations, ${stats.rules} rules`));
|
|
1424
1676
|
if (glossary.length)
|
|
@@ -1426,21 +1678,33 @@ export const orgCommand = {
|
|
|
1426
1678
|
const byNs = backend?.entriesByNamespace ?? {};
|
|
1427
1679
|
for (const [ns, count] of Object.entries(byNs))
|
|
1428
1680
|
log(output.info(` ${ns}: ${count} entries`));
|
|
1429
|
-
return {
|
|
1681
|
+
return {
|
|
1682
|
+
success: true,
|
|
1683
|
+
message: 'org memory stats',
|
|
1684
|
+
data: { ...stats, namespaces: byNs },
|
|
1685
|
+
};
|
|
1430
1686
|
}
|
|
1431
1687
|
if (sub === 'search') {
|
|
1432
1688
|
const q = ctx.args.slice(2).join(' ');
|
|
1433
1689
|
if (!q)
|
|
1434
1690
|
return { success: false, message: 'usage: org memory <org> search <query>' };
|
|
1435
1691
|
const [mem, graph] = await Promise.all([
|
|
1436
|
-
bridge.bridgeSearchEntries({
|
|
1692
|
+
bridge.bridgeSearchEntries({
|
|
1693
|
+
query: q,
|
|
1694
|
+
namespace: `org:${v.name}`,
|
|
1695
|
+
limit: 5,
|
|
1696
|
+
dbPath,
|
|
1697
|
+
}),
|
|
1437
1698
|
kg.kgSearch({ query: q, dbPath, limit: 8 }),
|
|
1438
1699
|
]);
|
|
1439
1700
|
for (const r of mem?.results ?? [])
|
|
1440
1701
|
log(output.info(`[${r.score.toFixed(2)}] ${r.key}: ${r.content.slice(0, 160)}`));
|
|
1441
1702
|
if (graph.context)
|
|
1442
1703
|
log(output.info(`\nKnowledge graph:\n${graph.context}`));
|
|
1443
|
-
return {
|
|
1704
|
+
return {
|
|
1705
|
+
success: true,
|
|
1706
|
+
message: `${(mem?.results ?? []).length} memories, ${graph.triplets.length} triplets`,
|
|
1707
|
+
};
|
|
1444
1708
|
}
|
|
1445
1709
|
if (sub === 'rules') {
|
|
1446
1710
|
const rules = await kg.kgListRules({ dbPath, limit: 50 });
|
|
@@ -1451,26 +1715,36 @@ export const orgCommand = {
|
|
|
1451
1715
|
if (sub === 'rollback') {
|
|
1452
1716
|
const ref = ctx.args[2];
|
|
1453
1717
|
if (!ref)
|
|
1454
|
-
return {
|
|
1718
|
+
return {
|
|
1719
|
+
success: false,
|
|
1720
|
+
message: 'usage: org memory <org> rollback <origin-ref> (e.g. run:m4x2)',
|
|
1721
|
+
};
|
|
1455
1722
|
const res = await kg.kgRollback({ originRef: ref, dbPath });
|
|
1456
1723
|
log(output.info(`Rolled back ${ref}: ${res.deleted} deleted, ${res.retained} retained (shared with other origins)`));
|
|
1457
1724
|
return { success: res.success, message: `rollback ${ref}`, data: res };
|
|
1458
1725
|
}
|
|
1459
|
-
return {
|
|
1726
|
+
return {
|
|
1727
|
+
success: false,
|
|
1728
|
+
message: `unknown subcommand "${sub}" — use stats | search | rules | rollback`,
|
|
1729
|
+
};
|
|
1460
1730
|
}
|
|
1461
1731
|
finally {
|
|
1462
|
-
await bridge.shutdownBridge().catch(() => {
|
|
1732
|
+
await bridge.shutdownBridge().catch(() => {
|
|
1733
|
+
/* best effort */
|
|
1734
|
+
});
|
|
1463
1735
|
}
|
|
1464
1736
|
},
|
|
1465
1737
|
},
|
|
1466
1738
|
{
|
|
1467
|
-
name: 'costs',
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
],
|
|
1739
|
+
name: 'costs',
|
|
1740
|
+
description: 'Show per-role cost tracking from runtime.json',
|
|
1741
|
+
options: [{ name: 'run', description: 'Run ID (defaults to latest)', type: 'string' }],
|
|
1471
1742
|
examples: [
|
|
1472
1743
|
{ command: 'monomind org costs growth', description: 'Show cost breakdown for latest run' },
|
|
1473
|
-
{
|
|
1744
|
+
{
|
|
1745
|
+
command: 'monomind org costs growth --run run-20240130-123456',
|
|
1746
|
+
description: 'Show cost breakdown for specific run',
|
|
1747
|
+
},
|
|
1474
1748
|
],
|
|
1475
1749
|
action: async (ctx) => {
|
|
1476
1750
|
const v = validateOrgName(ctx.args[0]);
|
|
@@ -1481,15 +1755,29 @@ export const orgCommand = {
|
|
|
1481
1755
|
},
|
|
1482
1756
|
},
|
|
1483
1757
|
{
|
|
1484
|
-
name: 'inbox',
|
|
1758
|
+
name: 'inbox',
|
|
1759
|
+
description: 'Deliver an inbound cross-org message (live to a running org, queued to inbox.jsonl otherwise) — remote.ts shells out to this over SSH',
|
|
1485
1760
|
options: [
|
|
1486
|
-
{
|
|
1487
|
-
|
|
1488
|
-
|
|
1761
|
+
{
|
|
1762
|
+
name: 'json',
|
|
1763
|
+
description: 'JSON payload: {"from":"orgA:role","subject":"...","body":"..."}',
|
|
1764
|
+
type: 'string',
|
|
1765
|
+
},
|
|
1766
|
+
{ name: 'to', description: "Target role (default: the org's coordinator)", type: 'string' },
|
|
1767
|
+
{
|
|
1768
|
+
name: 'from',
|
|
1769
|
+
description: 'Sender, qualified "org:role" (alternative to --json)',
|
|
1770
|
+
type: 'string',
|
|
1771
|
+
},
|
|
1489
1772
|
{ name: 'subject', description: 'Subject (alternative to --json)', type: 'string' },
|
|
1490
1773
|
{ name: 'body', description: 'Body (alternative to --json)', type: 'string' },
|
|
1491
1774
|
],
|
|
1492
|
-
examples: [
|
|
1775
|
+
examples: [
|
|
1776
|
+
{
|
|
1777
|
+
command: 'monomind org inbox growth --json \'{"from":"sales:boss","subject":"leads","body":"..."}\'',
|
|
1778
|
+
description: 'Deliver a message to the growth org',
|
|
1779
|
+
},
|
|
1780
|
+
],
|
|
1493
1781
|
action: async (ctx) => {
|
|
1494
1782
|
const v = validateOrgName(ctx.args[0]);
|
|
1495
1783
|
if (!v.ok)
|
|
@@ -1499,9 +1787,15 @@ export const orgCommand = {
|
|
|
1499
1787
|
},
|
|
1500
1788
|
},
|
|
1501
1789
|
{
|
|
1502
|
-
name: 'flow',
|
|
1790
|
+
name: 'flow',
|
|
1791
|
+
description: 'Export org flow as Mermaid diagram',
|
|
1503
1792
|
options: [{ name: 'run', description: 'Run ID (defaults to latest)', type: 'string' }],
|
|
1504
|
-
examples: [
|
|
1793
|
+
examples: [
|
|
1794
|
+
{
|
|
1795
|
+
command: 'monomind org flow growth --run run-20250130120000',
|
|
1796
|
+
description: 'Export Mermaid flowchart',
|
|
1797
|
+
},
|
|
1798
|
+
],
|
|
1505
1799
|
action: async (ctx) => {
|
|
1506
1800
|
const v = validateOrgName(ctx.args[0]);
|
|
1507
1801
|
if (!v.ok)
|
|
@@ -1511,9 +1805,12 @@ export const orgCommand = {
|
|
|
1511
1805
|
},
|
|
1512
1806
|
},
|
|
1513
1807
|
{
|
|
1514
|
-
name: 'questions',
|
|
1808
|
+
name: 'questions',
|
|
1809
|
+
description: "List pending ask_human questions from an org's agents",
|
|
1515
1810
|
options: [{ name: 'all', description: 'Include answered questions', type: 'boolean' }],
|
|
1516
|
-
examples: [
|
|
1811
|
+
examples: [
|
|
1812
|
+
{ command: 'monomind org questions growth', description: 'Show unanswered questions' },
|
|
1813
|
+
],
|
|
1517
1814
|
action: async (ctx) => {
|
|
1518
1815
|
const v = validateOrgName(ctx.args[0]);
|
|
1519
1816
|
if (!v.ok)
|
|
@@ -1523,8 +1820,14 @@ export const orgCommand = {
|
|
|
1523
1820
|
},
|
|
1524
1821
|
},
|
|
1525
1822
|
{
|
|
1526
|
-
name: 'answer',
|
|
1527
|
-
|
|
1823
|
+
name: 'answer',
|
|
1824
|
+
description: 'Answer a pending ask_human question (live if the org is running, queued otherwise)',
|
|
1825
|
+
examples: [
|
|
1826
|
+
{
|
|
1827
|
+
command: 'monomind org answer growth q-123-ab "yes, ship it"',
|
|
1828
|
+
description: 'Answer question q-123-ab',
|
|
1829
|
+
},
|
|
1830
|
+
],
|
|
1528
1831
|
action: async (ctx) => {
|
|
1529
1832
|
const v = validateOrgName(ctx.args[0]);
|
|
1530
1833
|
if (!v.ok)
|
|
@@ -1534,8 +1837,14 @@ export const orgCommand = {
|
|
|
1534
1837
|
},
|
|
1535
1838
|
},
|
|
1536
1839
|
{
|
|
1537
|
-
name: 'approve',
|
|
1538
|
-
|
|
1840
|
+
name: 'approve',
|
|
1841
|
+
description: 'Approve a pending tool/action approval',
|
|
1842
|
+
examples: [
|
|
1843
|
+
{
|
|
1844
|
+
command: 'monomind org approve growth coder "Bash"',
|
|
1845
|
+
description: 'Approve Bash tool for coder role',
|
|
1846
|
+
},
|
|
1847
|
+
],
|
|
1539
1848
|
action: async (ctx) => {
|
|
1540
1849
|
const v = validateOrgName(ctx.args[0]);
|
|
1541
1850
|
if (!v.ok)
|
|
@@ -1545,8 +1854,14 @@ export const orgCommand = {
|
|
|
1545
1854
|
},
|
|
1546
1855
|
},
|
|
1547
1856
|
{
|
|
1548
|
-
name: 'deny',
|
|
1549
|
-
|
|
1857
|
+
name: 'deny',
|
|
1858
|
+
description: 'Deny a pending tool/action approval',
|
|
1859
|
+
examples: [
|
|
1860
|
+
{
|
|
1861
|
+
command: 'monomind org deny growth coder "Bash"',
|
|
1862
|
+
description: 'Deny Bash tool for coder role',
|
|
1863
|
+
},
|
|
1864
|
+
],
|
|
1550
1865
|
action: async (ctx) => {
|
|
1551
1866
|
const v = validateOrgName(ctx.args[0]);
|
|
1552
1867
|
if (!v.ok)
|
|
@@ -1556,7 +1871,8 @@ export const orgCommand = {
|
|
|
1556
1871
|
},
|
|
1557
1872
|
},
|
|
1558
1873
|
{
|
|
1559
|
-
name: 'gates',
|
|
1874
|
+
name: 'gates',
|
|
1875
|
+
description: "List decision gates from an org's agents",
|
|
1560
1876
|
options: [{ name: 'all', description: 'Include resolved gates', type: 'boolean' }],
|
|
1561
1877
|
examples: [
|
|
1562
1878
|
{ command: 'monomind org gates growth', description: 'Show pending gates' },
|
|
@@ -1571,8 +1887,14 @@ export const orgCommand = {
|
|
|
1571
1887
|
},
|
|
1572
1888
|
},
|
|
1573
1889
|
{
|
|
1574
|
-
name: 'gate-approve',
|
|
1575
|
-
|
|
1890
|
+
name: 'gate-approve',
|
|
1891
|
+
description: 'Approve a pending decision gate',
|
|
1892
|
+
examples: [
|
|
1893
|
+
{
|
|
1894
|
+
command: 'monomind org gate-approve growth gate-123-ab "ship it"',
|
|
1895
|
+
description: 'Approve gate with resolution',
|
|
1896
|
+
},
|
|
1897
|
+
],
|
|
1576
1898
|
action: async (ctx) => {
|
|
1577
1899
|
const v = validateOrgName(ctx.args[0]);
|
|
1578
1900
|
if (!v.ok)
|
|
@@ -1582,8 +1904,14 @@ export const orgCommand = {
|
|
|
1582
1904
|
},
|
|
1583
1905
|
},
|
|
1584
1906
|
{
|
|
1585
|
-
name: 'gate-reject',
|
|
1586
|
-
|
|
1907
|
+
name: 'gate-reject',
|
|
1908
|
+
description: 'Reject a pending decision gate',
|
|
1909
|
+
examples: [
|
|
1910
|
+
{
|
|
1911
|
+
command: 'monomind org gate-reject growth gate-123-ab "not ready"',
|
|
1912
|
+
description: 'Reject gate with reason',
|
|
1913
|
+
},
|
|
1914
|
+
],
|
|
1587
1915
|
action: async (ctx) => {
|
|
1588
1916
|
const v = validateOrgName(ctx.args[0]);
|
|
1589
1917
|
if (!v.ok)
|
|
@@ -1593,8 +1921,14 @@ export const orgCommand = {
|
|
|
1593
1921
|
},
|
|
1594
1922
|
},
|
|
1595
1923
|
{
|
|
1596
|
-
name: 'replay',
|
|
1597
|
-
|
|
1924
|
+
name: 'replay',
|
|
1925
|
+
description: 'Time-travel debugging: replay a run\'s bus events (does not resume live execution — use "org run --resume" for that)',
|
|
1926
|
+
examples: [
|
|
1927
|
+
{
|
|
1928
|
+
command: 'monomind org replay growth run-20250130120000-abc',
|
|
1929
|
+
description: "Replay a checkpoint's events for inspection",
|
|
1930
|
+
},
|
|
1931
|
+
],
|
|
1598
1932
|
action: async (ctx) => {
|
|
1599
1933
|
const v = validateOrgName(ctx.args[0]);
|
|
1600
1934
|
if (!v.ok)
|
|
@@ -1604,8 +1938,14 @@ export const orgCommand = {
|
|
|
1604
1938
|
},
|
|
1605
1939
|
},
|
|
1606
1940
|
{
|
|
1607
|
-
name: 'resume-from',
|
|
1608
|
-
|
|
1941
|
+
name: 'resume-from',
|
|
1942
|
+
description: "Resume live execution from the org's persisted checkpoint (restores mailbox/policy/session state; subject to TTL and checksum validation)",
|
|
1943
|
+
examples: [
|
|
1944
|
+
{
|
|
1945
|
+
command: 'monomind org resume-from growth',
|
|
1946
|
+
description: 'Resume growth from its last checkpoint',
|
|
1947
|
+
},
|
|
1948
|
+
],
|
|
1609
1949
|
action: async (ctx) => {
|
|
1610
1950
|
const v = validateOrgName(ctx.args[0]);
|
|
1611
1951
|
if (!v.ok)
|
|
@@ -1615,8 +1955,14 @@ export const orgCommand = {
|
|
|
1615
1955
|
},
|
|
1616
1956
|
},
|
|
1617
1957
|
{
|
|
1618
|
-
name: 'branch',
|
|
1619
|
-
|
|
1958
|
+
name: 'branch',
|
|
1959
|
+
description: "Snapshot a run's event log for replay",
|
|
1960
|
+
examples: [
|
|
1961
|
+
{
|
|
1962
|
+
command: 'monomind org branch growth run-20250130 abc-branch',
|
|
1963
|
+
description: "Snapshot a run's checkpoint into a new run for replay",
|
|
1964
|
+
},
|
|
1965
|
+
],
|
|
1620
1966
|
action: async (ctx) => {
|
|
1621
1967
|
const v = validateOrgName(ctx.args[0]);
|
|
1622
1968
|
if (!v.ok)
|
|
@@ -1626,8 +1972,14 @@ export const orgCommand = {
|
|
|
1626
1972
|
},
|
|
1627
1973
|
},
|
|
1628
1974
|
{
|
|
1629
|
-
name: 'decisions',
|
|
1630
|
-
|
|
1975
|
+
name: 'decisions',
|
|
1976
|
+
description: 'Show Rifft-style decision traces',
|
|
1977
|
+
examples: [
|
|
1978
|
+
{
|
|
1979
|
+
command: 'monomind org decisions growth --run run-20250130',
|
|
1980
|
+
description: 'Show decision traces',
|
|
1981
|
+
},
|
|
1982
|
+
],
|
|
1631
1983
|
action: async (ctx) => {
|
|
1632
1984
|
const v = validateOrgName(ctx.args[0]);
|
|
1633
1985
|
if (!v.ok)
|
|
@@ -1637,15 +1989,34 @@ export const orgCommand = {
|
|
|
1637
1989
|
},
|
|
1638
1990
|
},
|
|
1639
1991
|
{
|
|
1640
|
-
name: 'create',
|
|
1992
|
+
name: 'create',
|
|
1993
|
+
description: 'Scaffold an org config from a starter template',
|
|
1641
1994
|
options: [
|
|
1642
|
-
{
|
|
1643
|
-
|
|
1995
|
+
{
|
|
1996
|
+
name: 'template',
|
|
1997
|
+
description: 'content-team | dev-team | research-pod | kg-extraction | advisor-orchestrator',
|
|
1998
|
+
type: 'string',
|
|
1999
|
+
},
|
|
2000
|
+
{
|
|
2001
|
+
name: 'goal',
|
|
2002
|
+
description: "Org goal (defaults to the template's placeholder)",
|
|
2003
|
+
type: 'string',
|
|
2004
|
+
},
|
|
1644
2005
|
{ name: 'schedule', description: 'Daemon schedule, e.g. 30m or 2h', type: 'string' },
|
|
1645
2006
|
{ name: 'force', description: 'Overwrite an existing org config', type: 'boolean' },
|
|
1646
|
-
{
|
|
2007
|
+
{
|
|
2008
|
+
name: 'yes',
|
|
2009
|
+
short: 'y',
|
|
2010
|
+
description: 'Skip the per-role model confirmation prompt (TTY only)',
|
|
2011
|
+
type: 'boolean',
|
|
2012
|
+
},
|
|
2013
|
+
],
|
|
2014
|
+
examples: [
|
|
2015
|
+
{
|
|
2016
|
+
command: 'monomind org create blog --template content-team --goal "3 posts/week"',
|
|
2017
|
+
description: 'Create a content org',
|
|
2018
|
+
},
|
|
1647
2019
|
],
|
|
1648
|
-
examples: [{ command: 'monomind org create blog --template content-team --goal "3 posts/week"', description: 'Create a content org' }],
|
|
1649
2020
|
action: async (ctx) => {
|
|
1650
2021
|
const v = validateOrgName(ctx.args[0]);
|
|
1651
2022
|
if (!v.ok)
|
|
@@ -1655,10 +2026,14 @@ export const orgCommand = {
|
|
|
1655
2026
|
},
|
|
1656
2027
|
},
|
|
1657
2028
|
{
|
|
1658
|
-
name: 'validate',
|
|
2029
|
+
name: 'validate',
|
|
2030
|
+
description: 'Validate org config(s) against the runtime schema and structural invariants',
|
|
1659
2031
|
examples: [
|
|
1660
2032
|
{ command: 'monomind org validate growth', description: 'Validate one org config' },
|
|
1661
|
-
{
|
|
2033
|
+
{
|
|
2034
|
+
command: 'monomind org validate',
|
|
2035
|
+
description: 'Validate every org config in the project',
|
|
2036
|
+
},
|
|
1662
2037
|
],
|
|
1663
2038
|
action: async (ctx) => {
|
|
1664
2039
|
const { validateAction } = await import('./org-observe.js');
|
|
@@ -1666,22 +2041,39 @@ export const orgCommand = {
|
|
|
1666
2041
|
},
|
|
1667
2042
|
},
|
|
1668
2043
|
{
|
|
1669
|
-
name: 'migrate',
|
|
1670
|
-
|
|
2044
|
+
name: 'migrate',
|
|
2045
|
+
description: 'Convert a v1 org config (topology/board/loop) to the v2 daemon shape',
|
|
2046
|
+
examples: [
|
|
2047
|
+
{
|
|
2048
|
+
command: 'monomind org migrate growth',
|
|
2049
|
+
description: 'Migrate one org; original saved as growth.v1.json',
|
|
2050
|
+
},
|
|
2051
|
+
],
|
|
1671
2052
|
action: migrateAction,
|
|
1672
2053
|
},
|
|
1673
2054
|
{ name: 'list', description: 'List all orgs in the current project', action: listAction },
|
|
1674
2055
|
{
|
|
1675
|
-
name: 'delete',
|
|
2056
|
+
name: 'delete',
|
|
2057
|
+
description: 'Delete an org and all its data',
|
|
1676
2058
|
options: [
|
|
1677
2059
|
{ name: 'yes', short: 'y', description: 'Skip confirmation', type: 'boolean' },
|
|
1678
|
-
{
|
|
2060
|
+
{
|
|
2061
|
+
name: 'force',
|
|
2062
|
+
description: 'Delete even if the org appears to be running',
|
|
2063
|
+
type: 'boolean',
|
|
2064
|
+
},
|
|
1679
2065
|
],
|
|
1680
2066
|
action: deleteAction,
|
|
1681
2067
|
},
|
|
1682
|
-
{
|
|
2068
|
+
{
|
|
2069
|
+
name: 'mark-complete',
|
|
2070
|
+
description: 'Manually close a stale/crashed run',
|
|
2071
|
+
action: markCompleteAction,
|
|
2072
|
+
},
|
|
2073
|
+
],
|
|
2074
|
+
examples: [
|
|
2075
|
+
{ command: 'monomind org run my-org', description: 'Run an org under full daemon control' },
|
|
1683
2076
|
],
|
|
1684
|
-
examples: [{ command: 'monomind org run my-org', description: 'Run an org under full daemon control' }],
|
|
1685
2077
|
action: async () => {
|
|
1686
2078
|
// index.ts's dispatcher never prints result.message on a failed action —
|
|
1687
2079
|
// it only exits with result.exitCode — so this must log itself or bare
|