@monoes/monomindcli 2.16.12 → 2.16.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/core/coder.md +1 -1
- package/.claude/agents/engineering/engineering-devops-automator.md +1 -1
- package/.claude/agents/github/repo-architect.md +1 -1
- package/.claude/agents/testing/production-validator.md +1 -1
- package/.claude/agents/testing/testing-tool-evaluator.md +1 -1
- package/.claude/commands/github/pr-manager.md +1 -1
- package/.claude/helpers/pick-rank.cjs +34 -4
- package/.claude/skills/monolean-audit/SKILL.md +1 -1
- package/README.md +1 -1
- package/dist/src/commands/cleanup-data.d.ts +30 -0
- package/dist/src/commands/cleanup-data.d.ts.map +1 -0
- package/dist/src/commands/cleanup-data.js +138 -0
- package/dist/src/commands/cleanup-data.js.map +1 -0
- package/dist/src/commands/cleanup-scratch.d.ts +43 -0
- package/dist/src/commands/cleanup-scratch.d.ts.map +1 -0
- package/dist/src/commands/cleanup-scratch.js +125 -0
- package/dist/src/commands/cleanup-scratch.js.map +1 -0
- package/dist/src/commands/cleanup.d.ts +2 -39
- package/dist/src/commands/cleanup.d.ts.map +1 -1
- package/dist/src/commands/cleanup.js +5 -247
- package/dist/src/commands/cleanup.js.map +1 -1
- package/dist/src/commands/doctor-gitignore-checks.d.ts +10 -0
- package/dist/src/commands/doctor-gitignore-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-gitignore-checks.js +141 -0
- package/dist/src/commands/doctor-gitignore-checks.js.map +1 -0
- package/dist/src/commands/doctor-helpers-checks.d.ts +10 -0
- package/dist/src/commands/doctor-helpers-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-helpers-checks.js +292 -0
- package/dist/src/commands/doctor-helpers-checks.js.map +1 -0
- package/dist/src/commands/doctor-memory-checks.d.ts +47 -0
- package/dist/src/commands/doctor-memory-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-memory-checks.js +298 -0
- package/dist/src/commands/doctor-memory-checks.js.map +1 -0
- package/dist/src/commands/doctor-monograph-checks.d.ts +9 -0
- package/dist/src/commands/doctor-monograph-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-monograph-checks.js +331 -0
- package/dist/src/commands/doctor-monograph-checks.js.map +1 -0
- package/dist/src/commands/doctor-project-checks.d.ts +7 -66
- package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
- package/dist/src/commands/doctor-project-checks.js +10 -1331
- package/dist/src/commands/doctor-project-checks.js.map +1 -1
- package/dist/src/commands/doctor-routing-checks.d.ts +10 -0
- package/dist/src/commands/doctor-routing-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-routing-checks.js +194 -0
- package/dist/src/commands/doctor-routing-checks.js.map +1 -0
- package/dist/src/commands/doctor-worker-checks.d.ts +17 -0
- package/dist/src/commands/doctor-worker-checks.d.ts.map +1 -0
- package/dist/src/commands/doctor-worker-checks.js +122 -0
- package/dist/src/commands/doctor-worker-checks.js.map +1 -0
- package/dist/src/commands/hooks-routing-commands.js +1 -1
- package/dist/src/commands/hooks-routing-commands.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +6 -15
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/org-control.d.ts +117 -0
- package/dist/src/commands/org-control.d.ts.map +1 -0
- package/dist/src/commands/org-control.js +274 -0
- package/dist/src/commands/org-control.js.map +1 -0
- package/dist/src/commands/org-lifecycle.d.ts +7 -0
- package/dist/src/commands/org-lifecycle.d.ts.map +1 -0
- package/dist/src/commands/org-lifecycle.js +298 -0
- package/dist/src/commands/org-lifecycle.js.map +1 -0
- package/dist/src/commands/org-manage.d.ts +7 -0
- package/dist/src/commands/org-manage.d.ts.map +1 -0
- package/dist/src/commands/org-manage.js +357 -0
- package/dist/src/commands/org-manage.js.map +1 -0
- package/dist/src/commands/org-memory-command.d.ts +3 -0
- package/dist/src/commands/org-memory-command.d.ts.map +1 -0
- package/dist/src/commands/org-memory-command.js +178 -0
- package/dist/src/commands/org-memory-command.js.map +1 -0
- package/dist/src/commands/org-observe-approvals.d.ts +8 -0
- package/dist/src/commands/org-observe-approvals.d.ts.map +1 -0
- package/dist/src/commands/org-observe-approvals.js +211 -0
- package/dist/src/commands/org-observe-approvals.js.map +1 -0
- package/dist/src/commands/org-observe-checkpoint.d.ts +26 -0
- package/dist/src/commands/org-observe-checkpoint.d.ts.map +1 -0
- package/dist/src/commands/org-observe-checkpoint.js +180 -0
- package/dist/src/commands/org-observe-checkpoint.js.map +1 -0
- package/dist/src/commands/org-observe-config.d.ts +8 -0
- package/dist/src/commands/org-observe-config.d.ts.map +1 -0
- package/dist/src/commands/org-observe-config.js +160 -0
- package/dist/src/commands/org-observe-config.js.map +1 -0
- package/dist/src/commands/org-observe-gates.d.ts +4 -0
- package/dist/src/commands/org-observe-gates.d.ts.map +1 -0
- package/dist/src/commands/org-observe-gates.js +182 -0
- package/dist/src/commands/org-observe-gates.js.map +1 -0
- package/dist/src/commands/org-observe-inbox.d.ts +18 -0
- package/dist/src/commands/org-observe-inbox.d.ts.map +1 -0
- package/dist/src/commands/org-observe-inbox.js +154 -0
- package/dist/src/commands/org-observe-inbox.js.map +1 -0
- package/dist/src/commands/org-observe-logs.d.ts +31 -0
- package/dist/src/commands/org-observe-logs.d.ts.map +1 -0
- package/dist/src/commands/org-observe-logs.js +272 -0
- package/dist/src/commands/org-observe-logs.js.map +1 -0
- package/dist/src/commands/org-observe-questions.d.ts +8 -0
- package/dist/src/commands/org-observe-questions.d.ts.map +1 -0
- package/dist/src/commands/org-observe-questions.js +201 -0
- package/dist/src/commands/org-observe-questions.js.map +1 -0
- package/dist/src/commands/org-observe-report.d.ts +8 -0
- package/dist/src/commands/org-observe-report.d.ts.map +1 -0
- package/dist/src/commands/org-observe-report.js +366 -0
- package/dist/src/commands/org-observe-report.js.map +1 -0
- package/dist/src/commands/org-observe-shared.d.ts +20 -0
- package/dist/src/commands/org-observe-shared.d.ts.map +1 -0
- package/dist/src/commands/org-observe-shared.js +55 -0
- package/dist/src/commands/org-observe-shared.js.map +1 -0
- package/dist/src/commands/org-observe.d.ts +9 -101
- package/dist/src/commands/org-observe.d.ts.map +1 -1
- package/dist/src/commands/org-observe.js +12 -1675
- package/dist/src/commands/org-observe.js.map +1 -1
- package/dist/src/commands/org-poll.d.ts +57 -0
- package/dist/src/commands/org-poll.d.ts.map +1 -0
- package/dist/src/commands/org-poll.js +194 -0
- package/dist/src/commands/org-poll.js.map +1 -0
- package/dist/src/commands/org-run.d.ts +3 -0
- package/dist/src/commands/org-run.d.ts.map +1 -0
- package/dist/src/commands/org-run.js +449 -0
- package/dist/src/commands/org-run.js.map +1 -0
- package/dist/src/commands/org-serve.d.ts +19 -0
- package/dist/src/commands/org-serve.d.ts.map +1 -0
- package/dist/src/commands/org-serve.js +395 -0
- package/dist/src/commands/org-serve.js.map +1 -0
- package/dist/src/commands/org-subcommands-config.d.ts +8 -0
- package/dist/src/commands/org-subcommands-config.d.ts.map +1 -0
- package/dist/src/commands/org-subcommands-config.js +93 -0
- package/dist/src/commands/org-subcommands-config.js.map +1 -0
- package/dist/src/commands/org-subcommands-hil.d.ts +11 -0
- package/dist/src/commands/org-subcommands-hil.d.ts.map +1 -0
- package/dist/src/commands/org-subcommands-hil.js +216 -0
- package/dist/src/commands/org-subcommands-hil.js.map +1 -0
- package/dist/src/commands/org-subcommands-observe.d.ts +12 -0
- package/dist/src/commands/org-subcommands-observe.d.ts.map +1 -0
- package/dist/src/commands/org-subcommands-observe.js +249 -0
- package/dist/src/commands/org-subcommands-observe.js.map +1 -0
- package/dist/src/commands/org-subcommands-runtime.d.ts +12 -0
- package/dist/src/commands/org-subcommands-runtime.d.ts.map +1 -0
- package/dist/src/commands/org-subcommands-runtime.js +163 -0
- package/dist/src/commands/org-subcommands-runtime.js.map +1 -0
- package/dist/src/commands/org.d.ts +3 -151
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +43 -2735
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/never-commit.d.ts +3 -3
- package/dist/src/init/types.d.ts +1 -1
- package/dist/src/init/types.js +1 -1
- package/dist/src/knowledge/document-store.js +1 -1
- package/dist/src/knowledge/document-store.js.map +1 -1
- package/dist/src/mcp-tools/hooks-edit-command.d.ts +10 -0
- package/dist/src/mcp-tools/hooks-edit-command.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-edit-command.js +247 -0
- package/dist/src/mcp-tools/hooks-edit-command.js.map +1 -0
- package/dist/src/mcp-tools/hooks-learning.d.ts +9 -0
- package/dist/src/mcp-tools/hooks-learning.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-learning.js +408 -0
- package/dist/src/mcp-tools/hooks-learning.js.map +1 -0
- package/dist/src/mcp-tools/hooks-metrics-list.d.ts +8 -0
- package/dist/src/mcp-tools/hooks-metrics-list.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-metrics-list.js +205 -0
- package/dist/src/mcp-tools/hooks-metrics-list.js.map +1 -0
- package/dist/src/mcp-tools/hooks-route.d.ts +12 -0
- package/dist/src/mcp-tools/hooks-route.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-route.js +251 -0
- package/dist/src/mcp-tools/hooks-route.js.map +1 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts +6 -27
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +6 -1727
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/hooks-session.d.ts +9 -0
- package/dist/src/mcp-tools/hooks-session.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-session.js +243 -0
- package/dist/src/mcp-tools/hooks-session.js.map +1 -0
- package/dist/src/mcp-tools/hooks-task.d.ts +17 -0
- package/dist/src/mcp-tools/hooks-task.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-task.js +427 -0
- package/dist/src/mcp-tools/hooks-task.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts +2 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +2 -1
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +1 -1
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/memory/bm25-index.d.ts +2 -2
- package/dist/src/memory/bm25-index.js +2 -2
- package/dist/src/memory/embedding-operations.js +2 -2
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/entity-name-key.d.ts +1 -1
- package/dist/src/memory/entity-name-key.js +1 -1
- package/dist/src/memory/hnsw-operations.d.ts +1 -1
- package/dist/src/memory/hnsw-operations.js +1 -1
- package/dist/src/memory/memory-bridge-backend.d.ts +43 -0
- package/dist/src/memory/memory-bridge-backend.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-backend.js +363 -0
- package/dist/src/memory/memory-bridge-backend.js.map +1 -0
- package/dist/src/memory/memory-bridge-core.d.ts +42 -0
- package/dist/src/memory/memory-bridge-core.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-core.js +126 -0
- package/dist/src/memory/memory-bridge-core.js.map +1 -0
- package/dist/src/memory/memory-bridge-entries.d.ts +131 -0
- package/dist/src/memory/memory-bridge-entries.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-entries.js +227 -0
- package/dist/src/memory/memory-bridge-entries.js.map +1 -0
- package/dist/src/memory/memory-bridge-feedback.d.ts +60 -0
- package/dist/src/memory/memory-bridge-feedback.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-feedback.js +118 -0
- package/dist/src/memory/memory-bridge-feedback.js.map +1 -0
- package/dist/src/memory/memory-bridge-paths.d.ts +123 -0
- package/dist/src/memory/memory-bridge-paths.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-paths.js +335 -0
- package/dist/src/memory/memory-bridge-paths.js.map +1 -0
- package/dist/src/memory/memory-bridge-search.d.ts +48 -0
- package/dist/src/memory/memory-bridge-search.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-search.js +383 -0
- package/dist/src/memory/memory-bridge-search.js.map +1 -0
- package/dist/src/memory/memory-bridge-sessions.d.ts +38 -0
- package/dist/src/memory/memory-bridge-sessions.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-sessions.js +109 -0
- package/dist/src/memory/memory-bridge-sessions.js.map +1 -0
- package/dist/src/memory/memory-bridge-store.d.ts +58 -0
- package/dist/src/memory/memory-bridge-store.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge-store.js +201 -0
- package/dist/src/memory/memory-bridge-store.js.map +1 -0
- package/dist/src/memory/memory-bridge.d.ts +10 -438
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +14 -1787
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-kg-claims.d.ts +52 -0
- package/dist/src/memory/memory-kg-claims.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-claims.js +99 -0
- package/dist/src/memory/memory-kg-claims.js.map +1 -0
- package/dist/src/memory/memory-kg-index.d.ts +86 -0
- package/dist/src/memory/memory-kg-index.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-index.js +256 -0
- package/dist/src/memory/memory-kg-index.js.map +1 -0
- package/dist/src/memory/memory-kg-ingest.d.ts +44 -0
- package/dist/src/memory/memory-kg-ingest.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-ingest.js +361 -0
- package/dist/src/memory/memory-kg-ingest.js.map +1 -0
- package/dist/src/memory/memory-kg-model.d.ts +168 -0
- package/dist/src/memory/memory-kg-model.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-model.js +158 -0
- package/dist/src/memory/memory-kg-model.js.map +1 -0
- package/dist/src/memory/memory-kg-names.d.ts +64 -0
- package/dist/src/memory/memory-kg-names.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-names.js +187 -0
- package/dist/src/memory/memory-kg-names.js.map +1 -0
- package/dist/src/memory/memory-kg-promote.d.ts +79 -0
- package/dist/src/memory/memory-kg-promote.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-promote.js +248 -0
- package/dist/src/memory/memory-kg-promote.js.map +1 -0
- package/dist/src/memory/memory-kg-rebuild.d.ts +77 -0
- package/dist/src/memory/memory-kg-rebuild.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-rebuild.js +299 -0
- package/dist/src/memory/memory-kg-rebuild.js.map +1 -0
- package/dist/src/memory/memory-kg-rollback.d.ts +47 -0
- package/dist/src/memory/memory-kg-rollback.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-rollback.js +193 -0
- package/dist/src/memory/memory-kg-rollback.js.map +1 -0
- package/dist/src/memory/memory-kg-rules.d.ts +64 -0
- package/dist/src/memory/memory-kg-rules.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-rules.js +251 -0
- package/dist/src/memory/memory-kg-rules.js.map +1 -0
- package/dist/src/memory/memory-kg-scan.d.ts +118 -0
- package/dist/src/memory/memory-kg-scan.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-scan.js +209 -0
- package/dist/src/memory/memory-kg-scan.js.map +1 -0
- package/dist/src/memory/memory-kg-search.d.ts +80 -0
- package/dist/src/memory/memory-kg-search.d.ts.map +1 -0
- package/dist/src/memory/memory-kg-search.js +239 -0
- package/dist/src/memory/memory-kg-search.js.map +1 -0
- package/dist/src/memory/memory-kg.d.ts +19 -547
- package/dist/src/memory/memory-kg.d.ts.map +1 -1
- package/dist/src/memory/memory-kg.js +10 -2389
- package/dist/src/memory/memory-kg.js.map +1 -1
- package/dist/src/orgrt/daemon-types.d.ts +196 -0
- package/dist/src/orgrt/daemon-types.d.ts.map +1 -0
- package/dist/src/orgrt/daemon-types.js +38 -0
- package/dist/src/orgrt/daemon-types.js.map +1 -0
- package/dist/src/orgrt/daemon.d.ts +70 -300
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +41 -2536
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/idle-watchdog.d.ts +39 -0
- package/dist/src/orgrt/idle-watchdog.d.ts.map +1 -0
- package/dist/src/orgrt/idle-watchdog.js +289 -0
- package/dist/src/orgrt/idle-watchdog.js.map +1 -0
- package/dist/src/orgrt/org-reload.d.ts +7 -0
- package/dist/src/orgrt/org-reload.d.ts.map +1 -0
- package/dist/src/orgrt/org-reload.js +111 -0
- package/dist/src/orgrt/org-reload.js.map +1 -0
- package/dist/src/orgrt/org-start-steps.d.ts +21 -0
- package/dist/src/orgrt/org-start-steps.d.ts.map +1 -0
- package/dist/src/orgrt/org-start-steps.js +305 -0
- package/dist/src/orgrt/org-start-steps.js.map +1 -0
- package/dist/src/orgrt/org-start.d.ts +7 -0
- package/dist/src/orgrt/org-start.d.ts.map +1 -0
- package/dist/src/orgrt/org-start.js +435 -0
- package/dist/src/orgrt/org-start.js.map +1 -0
- package/dist/src/orgrt/org-state-file.d.ts +8 -0
- package/dist/src/orgrt/org-state-file.d.ts.map +1 -0
- package/dist/src/orgrt/org-state-file.js +116 -0
- package/dist/src/orgrt/org-state-file.js.map +1 -0
- package/dist/src/orgrt/org-stop.d.ts +6 -0
- package/dist/src/orgrt/org-stop.d.ts.map +1 -0
- package/dist/src/orgrt/org-stop.js +332 -0
- package/dist/src/orgrt/org-stop.js.map +1 -0
- package/dist/src/orgrt/org-tools.d.ts +11 -0
- package/dist/src/orgrt/org-tools.d.ts.map +1 -0
- package/dist/src/orgrt/org-tools.js +305 -0
- package/dist/src/orgrt/org-tools.js.map +1 -0
- package/dist/src/orgrt/role-incarnation.d.ts +18 -0
- package/dist/src/orgrt/role-incarnation.d.ts.map +1 -0
- package/dist/src/orgrt/role-incarnation.js +374 -0
- package/dist/src/orgrt/role-incarnation.js.map +1 -0
- package/dist/src/orgrt/role-respawn.d.ts +7 -0
- package/dist/src/orgrt/role-respawn.d.ts.map +1 -0
- package/dist/src/orgrt/role-respawn.js +318 -0
- package/dist/src/orgrt/role-respawn.js.map +1 -0
- package/dist/src/orgrt/role-session-opts.d.ts +389 -0
- package/dist/src/orgrt/role-session-opts.d.ts.map +1 -0
- package/dist/src/orgrt/role-session-opts.js +289 -0
- package/dist/src/orgrt/role-session-opts.js.map +1 -0
- package/dist/src/orgrt/runner-resolve.d.ts +43 -0
- package/dist/src/orgrt/runner-resolve.d.ts.map +1 -0
- package/dist/src/orgrt/runner-resolve.js +77 -0
- package/dist/src/orgrt/runner-resolve.js.map +1 -0
- package/dist/src/orgrt/session-gate.d.ts +34 -0
- package/dist/src/orgrt/session-gate.d.ts.map +1 -0
- package/dist/src/orgrt/session-gate.js +74 -0
- package/dist/src/orgrt/session-gate.js.map +1 -0
- package/dist/src/orgrt/session-prompt.d.ts +31 -0
- package/dist/src/orgrt/session-prompt.d.ts.map +1 -0
- package/dist/src/orgrt/session-prompt.js +115 -0
- package/dist/src/orgrt/session-prompt.js.map +1 -0
- package/dist/src/orgrt/session-run.d.ts +18 -0
- package/dist/src/orgrt/session-run.d.ts.map +1 -0
- package/dist/src/orgrt/session-run.js +429 -0
- package/dist/src/orgrt/session-run.js.map +1 -0
- package/dist/src/orgrt/session-stream.d.ts +21 -0
- package/dist/src/orgrt/session-stream.d.ts.map +1 -0
- package/dist/src/orgrt/session-stream.js +173 -0
- package/dist/src/orgrt/session-stream.js.map +1 -0
- package/dist/src/orgrt/session-types.d.ts +219 -0
- package/dist/src/orgrt/session-types.d.ts.map +1 -0
- package/dist/src/orgrt/session-types.js +2 -0
- package/dist/src/orgrt/session-types.js.map +1 -0
- package/dist/src/orgrt/session-usage.d.ts +29 -0
- package/dist/src/orgrt/session-usage.d.ts.map +1 -0
- package/dist/src/orgrt/session-usage.js +64 -0
- package/dist/src/orgrt/session-usage.js.map +1 -0
- package/dist/src/orgrt/session.d.ts +5 -281
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +8 -1117
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/ui/org-hil.mjs +1 -1
- package/dist/src/ui/routes-org-agents.mjs +318 -0
- package/dist/src/ui/routes-org-approvals.mjs +133 -0
- package/dist/src/ui/routes-org-config.mjs +459 -0
- package/dist/src/ui/routes-org-control.mjs +300 -0
- package/dist/src/ui/routes-org-files.mjs +172 -0
- package/dist/src/ui/routes-org-helpers.mjs +84 -0
- package/dist/src/ui/routes-org-knowledge.mjs +262 -0
- package/dist/src/ui/routes-org-lifecycle.mjs +224 -0
- package/dist/src/ui/routes-org-live.mjs +278 -0
- package/dist/src/ui/routes-org-mastermind.mjs +346 -0
- package/dist/src/ui/routes-org-planning.mjs +398 -0
- package/dist/src/ui/routes-org-runs.mjs +430 -0
- package/dist/src/ui/routes-org-status.mjs +342 -0
- package/dist/src/ui/routes-org-workflows.mjs +212 -0
- package/dist/src/ui/routes-org.mjs +26 -3847
- package/dist/src/ui/server.mjs +1 -1
- package/dist/src/utils/native-error.d.ts +1 -1
- package/dist/src/utils/native-error.js +1 -1
- package/dist/src/utils/paths.d.ts +2 -1
- package/dist/src/utils/paths.d.ts.map +1 -1
- package/dist/src/utils/paths.js +2 -1
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/org-skills/adversarial-reviewer/SKILL.md +1 -1
- package/org-skills/board-deck-builder/SKILL.md +1 -1
- package/org-skills/code-reviewer/SKILL.md +1 -1
- package/org-skills/debugging-wizard/SKILL.md +1 -1
- package/org-skills/scientific-thinking-literature-review/SKILL.md +1 -1
- package/org-skills/scientific-thinking-scholar-evaluation/SKILL.md +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
// packages/@monomind/cli/src/commands/org-run.ts
|
|
2
|
+
//
|
|
3
|
+
// `monomind org run` — start an org as a foreground daemon.
|
|
4
|
+
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { resolveOrgDefBlueprints } from '../catalog/blueprints.js';
|
|
8
|
+
import { approvalPendingNotice, parseAutoApproveFlag } from '../orgrt/approvals.js';
|
|
9
|
+
import { resolveRoleCostTier } from '../orgrt/cost-tier.js';
|
|
10
|
+
import { OrgDaemon } from '../orgrt/daemon.js';
|
|
11
|
+
import { readRunEvents } from '../orgrt/reporting.js';
|
|
12
|
+
import { startOrgServer } from '../orgrt/server.js';
|
|
13
|
+
import { resolveModel } from '../orgrt/session.js';
|
|
14
|
+
import { ORG_DIR, OrgDefSchema } from '../orgrt/types.js';
|
|
15
|
+
import { output } from '../output.js';
|
|
16
|
+
import { MODEL_PRICING } from '../pricing/model-pricing.js';
|
|
17
|
+
import { clearReloadfile, clearStopfile, listOrgConfigFiles, liveServeDaemonPid, validateOrgName, } from './org-control.js';
|
|
18
|
+
import { runOutcomeResult, runtimeState, waitForRunEnd, } from './org-poll.js';
|
|
19
|
+
import { runEndLine } from './org-run-end.js';
|
|
20
|
+
const log = (text) => {
|
|
21
|
+
console.log(text);
|
|
22
|
+
};
|
|
23
|
+
export const runAction = async (ctx) => {
|
|
24
|
+
// Org runs skip local embeddings entirely — on some machines
|
|
25
|
+
// @huggingface/transformers' native ONNX runtime crashes the whole
|
|
26
|
+
// process (a libc++abi terminate, not a catchable JS error) the moment
|
|
27
|
+
// any memory/KG lookup tries to load its model. A crashed unattended org
|
|
28
|
+
// run is much worse than one that falls back to keyword-only memory
|
|
29
|
+
// search — see the matching guards in memory-bridge.ts/embedding-operations.ts.
|
|
30
|
+
// The embedding-model crash above has a sibling: loadReranker() in
|
|
31
|
+
// memory-bridge.ts loads a SEPARATE cross-encoder model
|
|
32
|
+
// (cross-encoder/ettin-reranker-32m-v1, its own tokenizer architecture)
|
|
33
|
+
// for search-result reranking, independent of the embedder guard above —
|
|
34
|
+
// reranking runs on (query, passage) text pairs directly, so it can
|
|
35
|
+
// still fire and hit the same native crash even with embeddings off.
|
|
36
|
+
// disableLocalModels() turns off both, for THIS process only. It used to be
|
|
37
|
+
// MONOMIND_NO_LOCAL_EMBEDDINGS=1 / MONOMIND_RERANKER=0 on process.env, which
|
|
38
|
+
// every role's CLI and every command a role ran inherited — so a role's own
|
|
39
|
+
// `monomind memory search` silently fell back to keyword-only (#249).
|
|
40
|
+
const { disableLocalModels } = await import('../memory/memory-bridge.js');
|
|
41
|
+
disableLocalModels();
|
|
42
|
+
if (!ctx.args[0])
|
|
43
|
+
return { success: false, message: 'org name required: monomind org run <name> [--task "..."]' };
|
|
44
|
+
const validated = validateOrgName(ctx.args[0]);
|
|
45
|
+
if (!validated.ok)
|
|
46
|
+
return validated.result;
|
|
47
|
+
const name = validated.name;
|
|
48
|
+
// A repeated --task flag is promoted to an array by the parser (deliberate,
|
|
49
|
+
// documented behavior elsewhere — repeats never silently drop a value); a
|
|
50
|
+
// plain `as string` cast would let that array flow straight into the org's
|
|
51
|
+
// goal and get stringified as "a,b" with no warning. Checked before any
|
|
52
|
+
// side effects (starting the xdeliver listener) run.
|
|
53
|
+
const taskFlag = ctx.flags.task;
|
|
54
|
+
if (Array.isArray(taskFlag))
|
|
55
|
+
return { success: false, message: '--task was passed more than once — pass it exactly once' };
|
|
56
|
+
const autoApprove = parseAutoApproveFlag(ctx.flags.autoApprove);
|
|
57
|
+
if ('error' in autoApprove)
|
|
58
|
+
return { success: false, message: autoApprove.error };
|
|
59
|
+
// Fail before any side effects (inbox server) when the org doesn't exist.
|
|
60
|
+
const orgsDir = join(ctx.cwd, ORG_DIR);
|
|
61
|
+
if (!existsSync(join(orgsDir, `${name}.json`))) {
|
|
62
|
+
const known = existsSync(orgsDir)
|
|
63
|
+
? listOrgConfigFiles(orgsDir).map((f) => f.replace(/\.json$/, ''))
|
|
64
|
+
: [];
|
|
65
|
+
log(output.error(`Org not found: ${name}${known.length ? ` — available: ${known.join(', ')}` : ' — create one with /mastermind:createorg'}`));
|
|
66
|
+
return { success: false, message: 'org not found' };
|
|
67
|
+
}
|
|
68
|
+
if (ctx.flags.dryRun === true) {
|
|
69
|
+
// Validate + preview each role's actual briefing without spawning sessions.
|
|
70
|
+
try {
|
|
71
|
+
const parsedDef = OrgDefSchema.parse(JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8')));
|
|
72
|
+
const bp = resolveOrgDefBlueprints(parsedDef, ctx.cwd);
|
|
73
|
+
for (const n of bp.notes)
|
|
74
|
+
log(output.info(n));
|
|
75
|
+
if (bp.errors.length)
|
|
76
|
+
throw new Error(bp.errors.join('; '));
|
|
77
|
+
const def = bp.def;
|
|
78
|
+
const { buildRolePrompt, resolveRoleExtraGuidance } = await import('../orgrt/session.js');
|
|
79
|
+
const { agentRoles, endpointBriefingLines } = await import('../orgrt/endpoint-roles.js');
|
|
80
|
+
const { expandRolePromptVars, promptVarsFor } = await import('../orgrt/prompt-vars.js');
|
|
81
|
+
const roster = def.roles.map((r) => r.id);
|
|
82
|
+
// M2: endpoint roles get no session, so no briefing and no budget share.
|
|
83
|
+
const sessionRoles = agentRoles(def.roles);
|
|
84
|
+
const bossId = (sessionRoles.find((r) => r.type === 'boss' || r.reports_to === null) ?? sessionRoles[0])?.id;
|
|
85
|
+
const perRole = Math.floor((def.run_config.budget_tokens ?? 1_000_000) / Math.max(1, sessionRoles.length));
|
|
86
|
+
// Same KG entity glossary the live daemon injects — the preview must
|
|
87
|
+
// match what sessions actually receive.
|
|
88
|
+
const glossary = await (async () => {
|
|
89
|
+
try {
|
|
90
|
+
const kg = await import('../memory/memory-kg.js');
|
|
91
|
+
const { orgKgScope } = await import('../orgrt/org-memory.js');
|
|
92
|
+
return await kg.kgGlossary({
|
|
93
|
+
dbPath: join(process.cwd(), '.monomind', 'org-memory'),
|
|
94
|
+
scope: orgKgScope(name),
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
})();
|
|
101
|
+
log(output.info(`DRY RUN — org ${name}: ${sessionRoles.length} roles, ${perRole} tokens each, goal: ${taskFlag ?? def.goal}`));
|
|
102
|
+
for (const role of sessionRoles) {
|
|
103
|
+
log(output.info(`\n─── ${role.id} (${role.title || role.type})${role.adapter_config?.model ? ` [${role.adapter_config.model}]` : ''} ───`));
|
|
104
|
+
log(buildRolePrompt(
|
|
105
|
+
// Same org root the live daemon uses (new OrgDaemon(ctx.cwd)).
|
|
106
|
+
expandRolePromptVars(role, promptVarsFor(ctx.cwd)), { name: def.name, goal: taskFlag ?? def.goal }, roster, glossary, resolveRoleExtraGuidance(role, ctx.cwd), role.id === bossId ? endpointBriefingLines(def) : undefined));
|
|
107
|
+
}
|
|
108
|
+
return { success: true, message: 'dry run complete — no sessions started' };
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
log(output.error(`Config invalid: ${err instanceof Error ? err.message : String(err)}`));
|
|
112
|
+
return { success: false, message: 'invalid org config' };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// A live `org serve` daemon already owns this project's orgs. Starting our
|
|
116
|
+
// own here would put two processes on one runtime.json and one broker lease,
|
|
117
|
+
// so hand the request to the daemon via its runfile instead of racing it.
|
|
118
|
+
const serveOwner = liveServeDaemonPid(ctx.cwd);
|
|
119
|
+
if (serveOwner != null) {
|
|
120
|
+
// The runfile carries only the task; the serve daemon would drop the list.
|
|
121
|
+
if (autoApprove.tools.length)
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
message: `--auto-approve cannot be handed to the running "org serve" daemon (pid ${serveOwner}) — set the roles' policy.autoApproveTools instead`,
|
|
125
|
+
};
|
|
126
|
+
mkdirSync(join(orgsDir, name), { recursive: true });
|
|
127
|
+
// The task rides along in the runfile. Dropping it here would have made
|
|
128
|
+
// `org run <name> --task "..."` silently start a generic cycle — the flag
|
|
129
|
+
// accepted, the instruction discarded.
|
|
130
|
+
const runfile = join(orgsDir, name, 'run');
|
|
131
|
+
writeFileSync(runfile, JSON.stringify({ ts: Date.now(), task: taskFlag ?? null }), 'utf8');
|
|
132
|
+
// Ack: the serve daemon's runfile poll consumes (deletes) the file within
|
|
133
|
+
// one tick (~2s). The liveness check above is racy — a pid can die or be
|
|
134
|
+
// recycled between the check and the poll, leaving a runfile nobody reads
|
|
135
|
+
// while we report success. Verify consumption; on timeout, retract the
|
|
136
|
+
// runfile and fail loudly instead of losing the run.
|
|
137
|
+
const deadline = Date.now() + 15_000;
|
|
138
|
+
while (Date.now() < deadline && existsSync(runfile)) {
|
|
139
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
140
|
+
}
|
|
141
|
+
if (existsSync(runfile)) {
|
|
142
|
+
rmSync(runfile, { force: true });
|
|
143
|
+
log(output.error(`org ${name}: serve daemon (pid ${serveOwner}) did not pick up the run within 15s — it is dead or wedged.`));
|
|
144
|
+
log(output.info(`Remove the stale heartbeat (.monomind/serve-heartbeat.json) and retry, or start a fresh daemon with: monomind org serve`));
|
|
145
|
+
return { success: false, message: 'serve daemon did not acknowledge the run request' };
|
|
146
|
+
}
|
|
147
|
+
log(output.info(`org ${name}: start requested from the serve daemon (pid ${serveOwner}) — acknowledged`));
|
|
148
|
+
log(output.dim(` watch it with: monomind org logs ${name} --follow`));
|
|
149
|
+
return { success: true, message: 'start requested' };
|
|
150
|
+
}
|
|
151
|
+
const crossProcess = ctx.flags.crossProcess !== false;
|
|
152
|
+
// P1-1: v1 deprecation warning. Detect v1-shaped configs and warn.
|
|
153
|
+
// Gate on MONOMIND_V1_LEGACY=off to refuse v1 orgs entirely (patch-versioning-
|
|
154
|
+
// compliant mechanism — no minor bump needed).
|
|
155
|
+
const V1_ORG_KEYS = [
|
|
156
|
+
'topology',
|
|
157
|
+
'consensus',
|
|
158
|
+
'strategy',
|
|
159
|
+
'board_id',
|
|
160
|
+
'todo_col_id',
|
|
161
|
+
'doing_col_id',
|
|
162
|
+
'done_col_id',
|
|
163
|
+
'loop',
|
|
164
|
+
];
|
|
165
|
+
try {
|
|
166
|
+
const rawCfg = JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8'));
|
|
167
|
+
const isV1 = V1_ORG_KEYS.some((k) => k in rawCfg);
|
|
168
|
+
if (isV1) {
|
|
169
|
+
const v1Legacy = process.env.MONOMIND_V1_LEGACY;
|
|
170
|
+
if (v1Legacy === 'off') {
|
|
171
|
+
log(output.error(`Org "${name}" uses the v1 config format, but MONOMIND_V1_LEGACY=off.`));
|
|
172
|
+
log(output.info(`Run "monomind org migrate ${name}" to upgrade to v2, or unset MONOMIND_V1_LEGACY to proceed anyway.`));
|
|
173
|
+
return { success: false, message: 'v1 org blocked by MONOMIND_V1_LEGACY=off' };
|
|
174
|
+
}
|
|
175
|
+
log(output.warning(`Org "${name}" uses the v1 config format (deprecated). It will be auto-migrated in-memory.`));
|
|
176
|
+
log(output.dim(` To silence: run "monomind org migrate ${name}". To block v1 orgs: set MONOMIND_V1_LEGACY=off.`));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
/* config parse errors surface below in cost estimate or daemon.startOrg */
|
|
181
|
+
}
|
|
182
|
+
// P0-17: Upfront cost estimate. `org run` and `/mastermind:autodev` spend real
|
|
183
|
+
// provider tokens. Print an estimate before sessions start; honor --budget-usd
|
|
184
|
+
// as a hard stop and --yes to skip the confirmation prompt. Rates are defaults
|
|
185
|
+
// (per 1M tokens, blended estimate, Aug 2026); override via the model id.
|
|
186
|
+
//
|
|
187
|
+
// No provider Usage API is queried (that needs Admin/Org API credentials most
|
|
188
|
+
// users won't have configured) — rates are derived from the canonical
|
|
189
|
+
// MODEL_PRICING table (src/pricing/model-pricing.ts), using each model's
|
|
190
|
+
// output-token price as the blended per-1M estimate (output tokens dominate
|
|
191
|
+
// role-turn cost). Models not yet tracked in that table (third-party/non-
|
|
192
|
+
// Anthropic providers) fall back to the manually maintained EXTRA table
|
|
193
|
+
// below. A user-editable ~/.monomind/rates.json override, when present,
|
|
194
|
+
// takes precedence over both. Either way this is static data, not a live
|
|
195
|
+
// query, so a "stale rates" warning is always shown to make that
|
|
196
|
+
// limitation visible rather than implying live pricing.
|
|
197
|
+
const DERIVED_RATE_PER_1M = Object.fromEntries(Object.entries(MODEL_PRICING).map(([model, price]) => [model, price.out * 1_000_000]));
|
|
198
|
+
// Models absent from MODEL_PRICING (not yet in the canonical pricing table).
|
|
199
|
+
const EXTRA_MODEL_RATE_PER_1M = {
|
|
200
|
+
'gpt-4': 10,
|
|
201
|
+
'glm-5.2': 2,
|
|
202
|
+
'glm-4': 2,
|
|
203
|
+
'kimi-latest': 3,
|
|
204
|
+
'kimi-k2': 3,
|
|
205
|
+
'kimi-code/k3': 3,
|
|
206
|
+
'kimi-code/k3-256k': 3,
|
|
207
|
+
'gemini-3.1-pro': 8,
|
|
208
|
+
'gemini-3.6-flash-high': 1,
|
|
209
|
+
'gpt-5.6-terra': 10,
|
|
210
|
+
'gpt-5.5': 10,
|
|
211
|
+
};
|
|
212
|
+
const MODEL_RATE_PER_1M = {
|
|
213
|
+
...EXTRA_MODEL_RATE_PER_1M,
|
|
214
|
+
...DERIVED_RATE_PER_1M,
|
|
215
|
+
};
|
|
216
|
+
const DEFAULT_RATE_PER_1M = 10;
|
|
217
|
+
const AVG_TOKENS_PER_TURN = 2000;
|
|
218
|
+
const budgetUsd = ctx.flags.budgetUsd;
|
|
219
|
+
const skipConfirm = ctx.flags.yes === true;
|
|
220
|
+
// User-editable rate overrides: ~/.monomind/rates.json, e.g.
|
|
221
|
+
// { "claude-opus-5": 90, "my-custom-model": 5 }
|
|
222
|
+
const ratesPath = join(homedir(), '.monomind', 'rates.json');
|
|
223
|
+
const userRates = {};
|
|
224
|
+
let ratesFileUsed = false;
|
|
225
|
+
try {
|
|
226
|
+
const parsed = JSON.parse(readFileSync(ratesPath, 'utf8'));
|
|
227
|
+
if (parsed && typeof parsed === 'object') {
|
|
228
|
+
for (const [k, v] of Object.entries(parsed)) {
|
|
229
|
+
if (typeof v === 'number')
|
|
230
|
+
userRates[k] = v;
|
|
231
|
+
}
|
|
232
|
+
ratesFileUsed = Object.keys(userRates).length > 0;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
/* no rates.json (or invalid) — hardcoded defaults only */
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
const def = OrgDefSchema.parse(JSON.parse(readFileSync(join(orgsDir, `${name}.json`), 'utf8')));
|
|
240
|
+
const defaultMaxTurns = def.run_config.max_turns_per_message ?? 30;
|
|
241
|
+
// Estimate against a realistic planning ceiling, NOT the runtime limit —
|
|
242
|
+
// the schema default is effectively unlimited (DEFAULT_MAX_TURNS_PER_MESSAGE),
|
|
243
|
+
// which would balloon the upfront figure into meaninglessness.
|
|
244
|
+
const ESTIMATE_TURNS_CAP = 30;
|
|
245
|
+
let _totalTokens = 0;
|
|
246
|
+
const perRoleRows = def.roles.map((r) => {
|
|
247
|
+
// Mirror the actual runtime's model resolution (session.ts resolveModel)
|
|
248
|
+
// instead of a hardcoded 'claude-sonnet-5' fallback — otherwise every
|
|
249
|
+
// role without an explicit adapter_config.model (kimicode, antigravity,
|
|
250
|
+
// vercel roles relying on their runtime default) is mislabeled here.
|
|
251
|
+
// ADR-O001 D8: fold the role's cost tier in, at the same precedence the
|
|
252
|
+
// runtime uses (explicit model > tier > runtime/vendor default) — an
|
|
253
|
+
// estimate that ignored the tier would quote the untiered price of a run
|
|
254
|
+
// that is about to cost ~3x less.
|
|
255
|
+
const model = String(r.adapter_config?.model ??
|
|
256
|
+
resolveRoleCostTier({ role: r, def })?.model ??
|
|
257
|
+
resolveModel(r, r.runtime ?? def.runtime, r.provider?.vendor));
|
|
258
|
+
const rate = userRates[model] ?? MODEL_RATE_PER_1M[model] ?? DEFAULT_RATE_PER_1M;
|
|
259
|
+
const roleTurns = Math.min(r.max_turns_per_message ?? defaultMaxTurns, ESTIMATE_TURNS_CAP);
|
|
260
|
+
const tokens = roleTurns * AVG_TOKENS_PER_TURN;
|
|
261
|
+
_totalTokens += tokens;
|
|
262
|
+
return { id: r.id, model, tokens, cost: (tokens * rate) / 1_000_000 };
|
|
263
|
+
});
|
|
264
|
+
const estimate = perRoleRows.reduce((s, r) => s + r.cost, 0);
|
|
265
|
+
log(output.bold('\nCost estimate'));
|
|
266
|
+
log(output.dim(` (roles × max_turns × ~${AVG_TOKENS_PER_TURN} tokens/turn × model rate; estimated at ≤${ESTIMATE_TURNS_CAP} turns/message — the runtime default is effectively unlimited; ${ratesFileUsed ? `rates.json overrides + ` : ''}static defaults, will vary with real usage)`));
|
|
267
|
+
log(output.warning(` ⚠ stale rates: no live provider pricing lookup — ${ratesFileUsed ? `using ~/.monomind/rates.json + ` : ''}hardcoded table (edit ~/.monomind/rates.json to override)`));
|
|
268
|
+
for (const r of perRoleRows) {
|
|
269
|
+
log(` ${r.id.padEnd(20)} ${r.model.padEnd(22)} ~$${r.cost.toFixed(2)}`);
|
|
270
|
+
}
|
|
271
|
+
log(` ${output.bold('Total estimate:'.padEnd(28))} ~$${estimate.toFixed(2)}`);
|
|
272
|
+
if (budgetUsd != null && estimate > budgetUsd) {
|
|
273
|
+
log(output.error(`Estimate $${estimate.toFixed(2)} exceeds --budget-usd $${budgetUsd}. Aborting before any tokens are spent.`));
|
|
274
|
+
return { success: false, message: 'cost estimate exceeded --budget-usd' };
|
|
275
|
+
}
|
|
276
|
+
if (!skipConfirm && process.stdin.isTTY) {
|
|
277
|
+
const { confirm } = await import('../prompt.js');
|
|
278
|
+
const ok = await confirm({
|
|
279
|
+
message: `Start ${def.roles.length}-role org? This will spend real provider tokens.`,
|
|
280
|
+
default: true,
|
|
281
|
+
});
|
|
282
|
+
if (!ok) {
|
|
283
|
+
log(output.dim('Aborted — no tokens spent.'));
|
|
284
|
+
return { success: false, message: 'user declined cost-estimate prompt' };
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch (err) {
|
|
289
|
+
// If the config can't be parsed here, daemon.startOrg below will surface a
|
|
290
|
+
// proper error. Don't double-report — just skip the estimate.
|
|
291
|
+
if (process.env.DEBUG || process.env.MONOMIND_DEBUG) {
|
|
292
|
+
log(output.dim(`(cost estimate skipped: ${err instanceof Error ? err.message : String(err)})`));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
const resumeFlag = ctx.flags.resume === true;
|
|
296
|
+
const daemon = new OrgDaemon(ctx.cwd, { crossProcess });
|
|
297
|
+
let srv;
|
|
298
|
+
if (crossProcess) {
|
|
299
|
+
srv = await startOrgServer(daemon, 0);
|
|
300
|
+
daemon.setInboxUrl(`http://127.0.0.1:${srv.port}`, srv.operatorCredential);
|
|
301
|
+
}
|
|
302
|
+
let running;
|
|
303
|
+
try {
|
|
304
|
+
running = await daemon.startOrg(name, taskFlag, {
|
|
305
|
+
resume: resumeFlag,
|
|
306
|
+
autoApprove: autoApprove.tools,
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
// Don't leave the inbox server holding the event loop open on a failed start.
|
|
311
|
+
srv?.close();
|
|
312
|
+
await daemon.stopAll().catch(() => {
|
|
313
|
+
/* nothing started */
|
|
314
|
+
});
|
|
315
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
316
|
+
const hint = err instanceof Error && err.name === 'ZodError'
|
|
317
|
+
? ` — run "monomind org validate ${name}" for details`
|
|
318
|
+
: '';
|
|
319
|
+
log(output.error(`Could not start org ${name}: ${detail}${hint}`));
|
|
320
|
+
return { success: false, message: 'org start failed' };
|
|
321
|
+
}
|
|
322
|
+
log(output.info(`org ${name} running (${running.def.roles.length} agents, run ${running.run}) — Ctrl-C or "monomind org stop ${name}" to stop`));
|
|
323
|
+
// #345: a role waiting on a tool approval is otherwise silent in this log.
|
|
324
|
+
running.bus.subscribe((e) => {
|
|
325
|
+
const notice = approvalPendingNotice(name, e);
|
|
326
|
+
if (notice)
|
|
327
|
+
log(output.warning(notice));
|
|
328
|
+
});
|
|
329
|
+
// The run log's last line: outcome, wall time, total cost (every exit path
|
|
330
|
+
// below, crash handlers included), so a detached run's log has an ending.
|
|
331
|
+
const startedAt = Date.now();
|
|
332
|
+
const printRunEnd = (final, how) => {
|
|
333
|
+
try {
|
|
334
|
+
const events = readRunEvents(ctx.cwd, name, running.run);
|
|
335
|
+
const wallMs = Date.now() - startedAt;
|
|
336
|
+
log(output.info(runEndLine({ name, run: running.run, wallMs, final, events, ...how })));
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
/* best-effort — never mask the run's real exit */
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
// #206 follow-up: without this, an uncaught error in this process left
|
|
343
|
+
// runtime.json's status stuck at 'running' (finishStop never runs), and
|
|
344
|
+
// runOutcomeResult's status === 'crashed' branch — the one meant to
|
|
345
|
+
// surface *why* the run failed — could never actually fire for `org run`,
|
|
346
|
+
// since nothing here ever wrote 'crashed'. Mirrors serveAction's
|
|
347
|
+
// crashExit, but deliberately does NOT touch SIGINT/SIGTERM — those are
|
|
348
|
+
// already handled by the wait loop below as a graceful stop, and
|
|
349
|
+
// registering a second, competing handler here would race it.
|
|
350
|
+
process.on('uncaughtException', (err) => {
|
|
351
|
+
try {
|
|
352
|
+
console.error('[org run] uncaughtException:', err);
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
/* stderr gone */
|
|
356
|
+
}
|
|
357
|
+
const error = `uncaughtException: ${err instanceof Error ? err.message : String(err)}`;
|
|
358
|
+
daemon.persistCrashStateAll(error);
|
|
359
|
+
printRunEnd({ status: 'crashed', error }, {});
|
|
360
|
+
process.exit(1);
|
|
361
|
+
});
|
|
362
|
+
process.on('unhandledRejection', (err) => {
|
|
363
|
+
try {
|
|
364
|
+
console.error('[org run] unhandledRejection:', err);
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
/* stderr gone */
|
|
368
|
+
}
|
|
369
|
+
const error = `unhandledRejection: ${err instanceof Error ? err.message : String(err)}`;
|
|
370
|
+
daemon.persistCrashStateAll(error);
|
|
371
|
+
printRunEnd({ status: 'crashed', error }, {});
|
|
372
|
+
process.exit(1);
|
|
373
|
+
});
|
|
374
|
+
// P1-12: Print the dashboard URL so CLI users know where to look.
|
|
375
|
+
// The dashboard is normally spawned by a Claude Code SessionStart hook
|
|
376
|
+
// (.claude/helpers/control-start.cjs) — but `org run` doesn't require
|
|
377
|
+
// Claude Code, and even when the hook exists it only fires once at
|
|
378
|
+
// session start, not per org run. If control.json is stale (points at a
|
|
379
|
+
// dead pid, a server rooted in a different project, or one that no longer
|
|
380
|
+
// accepts our dashboard-token — the exact case control-start.cjs's own
|
|
381
|
+
// "already running" check now self-heals, see its staleAuth handling),
|
|
382
|
+
// `org run` used to just print whatever URL was on file with zero
|
|
383
|
+
// verification. Actively (re)run the same control-start.cjs the hook
|
|
384
|
+
// uses, from this project's own .claude/helpers/ if it's been set up
|
|
385
|
+
// (monomind init), so a stale/dead/mismatched dashboard gets healed on
|
|
386
|
+
// every org run instead of silently trusting old state.
|
|
387
|
+
const controlPath = join(ctx.cwd, '.monomind', 'control.json');
|
|
388
|
+
const controlStartPath = join(ctx.cwd, '.claude', 'helpers', 'control-start.cjs');
|
|
389
|
+
if (existsSync(controlStartPath)) {
|
|
390
|
+
try {
|
|
391
|
+
const { spawnSync } = await import('node:child_process');
|
|
392
|
+
spawnSync(process.execPath, [controlStartPath], {
|
|
393
|
+
cwd: ctx.cwd,
|
|
394
|
+
env: { ...process.env, CLAUDE_PROJECT_DIR: ctx.cwd, MONOMIND_HOOK_QUIET: '1' },
|
|
395
|
+
timeout: 5000,
|
|
396
|
+
stdio: 'ignore',
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
catch {
|
|
400
|
+
/* best-effort — fall through to whatever control.json already has */
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
if (existsSync(controlPath)) {
|
|
404
|
+
try {
|
|
405
|
+
const ctl = JSON.parse(readFileSync(controlPath, 'utf8'));
|
|
406
|
+
const dashUrl = ctl.url || (ctl.port ? `http://localhost:${ctl.port}` : 'http://localhost:4242');
|
|
407
|
+
log(output.dim(` Dashboard: ${dashUrl}`));
|
|
408
|
+
}
|
|
409
|
+
catch {
|
|
410
|
+
/* non-critical */
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
else if (existsSync(controlStartPath)) {
|
|
414
|
+
// control-start.cjs ran above (spawnSync'd synchronously with a 5s cap)
|
|
415
|
+
// but control.json still doesn't exist — its own confirm-mode child is
|
|
416
|
+
// still working in the background (npx cold-resolve etc., #142/#144)
|
|
417
|
+
// rather than having failed outright. Point at the default port; the
|
|
418
|
+
// confirm process will correct control.json once it lands.
|
|
419
|
+
log(output.dim(' Dashboard: http://localhost:4242 (starting — check back in a few seconds if unreachable)'));
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
log(output.dim(' Dashboard: run `monomind init` to set up .claude/helpers/, then re-run to launch it automatically'));
|
|
423
|
+
}
|
|
424
|
+
// stopfile poll lets `org stop` work from another terminal; the daemon can
|
|
425
|
+
// also stop the org itself (boss called org_complete, or the idle watchdog
|
|
426
|
+
// fired) — detect that via getOrg() so the CLI exits instead of polling a
|
|
427
|
+
// stopfile forever after a finished run. Clear any stale stop or reload
|
|
428
|
+
// request from a previous run before polling.
|
|
429
|
+
clearStopfile(ctx.cwd, name);
|
|
430
|
+
clearReloadfile(ctx.cwd, name);
|
|
431
|
+
// #206: a human explicitly running `monomind org stop` is a deliberate,
|
|
432
|
+
// successful action regardless of how the run itself ended — capture that
|
|
433
|
+
// BEFORE clearStopfile() below wipes the file, so it isn't lost.
|
|
434
|
+
const { stoppedManually, signal } = await waitForRunEnd(ctx.cwd, name, daemon);
|
|
435
|
+
clearStopfile(ctx.cwd, name);
|
|
436
|
+
await daemon.stopAll();
|
|
437
|
+
srv?.close();
|
|
438
|
+
printRunEnd(runtimeState(ctx.cwd, name), { stoppedManually, signal });
|
|
439
|
+
if (stoppedManually)
|
|
440
|
+
return { success: true, message: `org ${name} stopped` };
|
|
441
|
+
// #206: 'org run' used to exit 0 unconditionally here — a crashed or
|
|
442
|
+
// watchdog-stopped run was indistinguishable from a completed one to any
|
|
443
|
+
// script or supervisor (launchd/systemd) driving off the exit code. Re-read
|
|
444
|
+
// the daemon's final record (same runtime.json pattern isOrgRunning/
|
|
445
|
+
// statusAction already use below) and only report success for a run that
|
|
446
|
+
// actually finished its goal via org_complete.
|
|
447
|
+
return runOutcomeResult(name, runtimeState(ctx.cwd, name));
|
|
448
|
+
};
|
|
449
|
+
//# sourceMappingURL=org-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-run.js","sourceRoot":"","sources":["../../../src/commands/org-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CommandContext, CommandResult } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Emit a supervisor unit for `org serve`.
|
|
4
|
+
*
|
|
5
|
+
* Why this is an EXTERNAL supervisor and not an `--supervise` flag: the daemon
|
|
6
|
+
* already logs every death it can observe — signals, uncaught exceptions,
|
|
7
|
+
* unhandled rejections, and the event loop draining. The one death it cannot
|
|
8
|
+
* observe is SIGKILL, which is what the OOM killer sends, and which is the
|
|
9
|
+
* suspected cause of the reported disappearance (its org logs showed repeated
|
|
10
|
+
* low-memory warnings). No in-process handler survives SIGKILL, so a daemon
|
|
11
|
+
* that restarts itself is theatre for exactly the case that matters. Only
|
|
12
|
+
* something outside the process can bring it back.
|
|
13
|
+
*
|
|
14
|
+
* launchd and systemd both already do this well, so this generates a correct
|
|
15
|
+
* unit rather than reimplementing them.
|
|
16
|
+
*/
|
|
17
|
+
export declare const supervisorAction: (ctx: CommandContext) => Promise<CommandResult>;
|
|
18
|
+
export declare const serveAction: (ctx: CommandContext) => Promise<CommandResult>;
|
|
19
|
+
//# sourceMappingURL=org-serve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-serve.d.ts","sourceRoot":"","sources":["../../../src/commands/org-serve.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,QAAe,cAAc,KAAG,OAAO,CAAC,aAAa,CA4GjF,CAAC;AAEF,eAAO,MAAM,WAAW,QAAe,cAAc,KAAG,OAAO,CAAC,aAAa,CA2S5E,CAAC"}
|