@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,272 @@
|
|
|
1
|
+
// packages/@monomind/cli/src/commands/org-observe-logs.ts
|
|
2
|
+
//
|
|
3
|
+
// `monomind org logs | watch | events` — formatted, per-role and NDJSON
|
|
4
|
+
// tails of a run's bus events.
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { formatEvent } from '../orgrt/reporting.js';
|
|
8
|
+
import { ORG_DIR } from '../orgrt/types.js';
|
|
9
|
+
import { output } from '../output.js';
|
|
10
|
+
import { orgJson, printOrgJson, resolveRun } from './org-observe-shared.js';
|
|
11
|
+
const log = (text) => {
|
|
12
|
+
console.log(text);
|
|
13
|
+
};
|
|
14
|
+
/** `org logs <name> [--run id] [--role r] [--filter-tool t] [--filter-role r] [--tools-only] [--audit-filter allow|deny] [--follow]` — formatted bus.jsonl tail. */
|
|
15
|
+
export const logsAction = async (ctx, name) => {
|
|
16
|
+
const run = resolveRun(ctx.cwd, name, ctx.flags.run);
|
|
17
|
+
if (!run)
|
|
18
|
+
return {
|
|
19
|
+
success: false,
|
|
20
|
+
message: `no runs found for org ${name} — start one with: monomind org run ${name}`,
|
|
21
|
+
};
|
|
22
|
+
const file = join(ctx.cwd, ORG_DIR, name, run, 'bus.jsonl');
|
|
23
|
+
const roleFilter = typeof ctx.flags.role === 'string' ? ctx.flags.role : null;
|
|
24
|
+
const filterTool = typeof ctx.flags['filter-tool'] === 'string' ? ctx.flags['filter-tool'] : null;
|
|
25
|
+
const filterRole = typeof ctx.flags['filter-role'] === 'string' ? ctx.flags['filter-role'] : null;
|
|
26
|
+
const auditFilter = typeof ctx.flags['audit-filter'] === 'string' ? ctx.flags['audit-filter'] : null;
|
|
27
|
+
const toolsOnly = ctx.flags['tools-only'] === true;
|
|
28
|
+
// Protocol JSON mode: full filtered event array, no live tail (§7.2 — the
|
|
29
|
+
// streaming form is `org events --ndjson --follow`).
|
|
30
|
+
if (orgJson(ctx)) {
|
|
31
|
+
if (ctx.flags.follow === true)
|
|
32
|
+
return { success: false, message: 'json output cannot --follow — use: org events --ndjson' };
|
|
33
|
+
const items = [];
|
|
34
|
+
const accept = (e) => (!toolsOnly || e.type === 'tool') &&
|
|
35
|
+
(!roleFilter || e.from === roleFilter || e.to === roleFilter) &&
|
|
36
|
+
(!filterTool || e.tool === filterTool) &&
|
|
37
|
+
(!filterRole || e.from === filterRole) &&
|
|
38
|
+
(!auditFilter || e.type !== 'tool' || e.decision === auditFilter);
|
|
39
|
+
if (existsSync(file)) {
|
|
40
|
+
for (const line of readFileSync(file, 'utf8').split('\n').filter(Boolean)) {
|
|
41
|
+
try {
|
|
42
|
+
const e = JSON.parse(line);
|
|
43
|
+
if (accept(e))
|
|
44
|
+
items.push(e);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
/* skip corrupt interior lines — same policy as the tail drain */
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return printOrgJson({ v: 1, org: name, run, items });
|
|
52
|
+
}
|
|
53
|
+
const show = (e) => {
|
|
54
|
+
if (toolsOnly && e.type !== 'tool')
|
|
55
|
+
return;
|
|
56
|
+
if (roleFilter && e.from !== roleFilter && e.to !== roleFilter)
|
|
57
|
+
return;
|
|
58
|
+
if (filterTool && e.tool !== filterTool)
|
|
59
|
+
return;
|
|
60
|
+
if (filterRole && e.from !== filterRole)
|
|
61
|
+
return;
|
|
62
|
+
if (auditFilter && e.type === 'tool' && e.decision !== auditFilter)
|
|
63
|
+
return;
|
|
64
|
+
log(formatEvent(e));
|
|
65
|
+
};
|
|
66
|
+
log(output.info(`org ${name} — ${run}${roleFilter ? ` (role: ${roleFilter})` : ''}${filterTool ? ` (tool: ${filterTool})` : ''}${filterRole ? ` (filter-role: ${filterRole})` : ''}${auditFilter ? ` (audit-filter: ${auditFilter})` : ''}`));
|
|
67
|
+
let seenLines = 0;
|
|
68
|
+
const drain = () => {
|
|
69
|
+
if (!existsSync(file))
|
|
70
|
+
return;
|
|
71
|
+
const lines = readFileSync(file, 'utf8').split('\n').filter(Boolean);
|
|
72
|
+
for (let i = seenLines; i < lines.length; i++) {
|
|
73
|
+
try {
|
|
74
|
+
show(JSON.parse(lines[i]));
|
|
75
|
+
seenLines = i + 1;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Only the FINAL line can be a partial mid-append write worth
|
|
79
|
+
// retrying; a corrupt interior line would otherwise stall the tail
|
|
80
|
+
// forever — skip it and keep going.
|
|
81
|
+
if (i === lines.length - 1)
|
|
82
|
+
break;
|
|
83
|
+
seenLines = i + 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
drain();
|
|
88
|
+
if (ctx.flags.follow !== true)
|
|
89
|
+
return { success: true };
|
|
90
|
+
log(output.info('following — Ctrl-C to stop'));
|
|
91
|
+
await new Promise((resolve) => {
|
|
92
|
+
const iv = setInterval(drain, 500);
|
|
93
|
+
process.once('SIGINT', () => {
|
|
94
|
+
clearInterval(iv);
|
|
95
|
+
resolve();
|
|
96
|
+
});
|
|
97
|
+
process.once('SIGTERM', () => {
|
|
98
|
+
clearInterval(iv);
|
|
99
|
+
resolve();
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
return { success: true };
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* `org watch <name> <role> [--verbose] [--stats]` — live-tail one role's
|
|
106
|
+
* assistant chat text.
|
|
107
|
+
*
|
|
108
|
+
* Every runner (Claude included — this isn't specific to the subprocess CLI
|
|
109
|
+
* runners) funnels through session.ts's shared message loop, which emits
|
|
110
|
+
* each assistant-text chunk onto the bus as a `chat` event. This command is
|
|
111
|
+
* just `logsAction` pre-filtered to that event type + role and formatted as
|
|
112
|
+
* a plain transcript instead of the full annotated event line — a friendlier
|
|
113
|
+
* front door onto infrastructure that already exists and already covers
|
|
114
|
+
* every runtime uniformly. For the fuller event stream (tool calls, audit
|
|
115
|
+
* decisions) use `org logs <name> --role <role> --follow` directly.
|
|
116
|
+
*
|
|
117
|
+
* --verbose additionally interleaves that role's `status` events (session
|
|
118
|
+
* start/end, restart/crash/backoff, state changes) into the transcript, so
|
|
119
|
+
* a human watching sees WHY a role went quiet instead of just silence.
|
|
120
|
+
* --stats prints a running token/cost line off that role's `usage` events
|
|
121
|
+
* (emitted per turn by session.ts, same as --verbose: already-existing bus
|
|
122
|
+
* data, no new instrumentation).
|
|
123
|
+
*/
|
|
124
|
+
export const watchAction = async (ctx, name) => {
|
|
125
|
+
const role = ctx.args[1];
|
|
126
|
+
if (!role)
|
|
127
|
+
return { success: false, message: 'usage: monomind org watch <org> <role>' };
|
|
128
|
+
const run = resolveRun(ctx.cwd, name, ctx.flags.run);
|
|
129
|
+
if (!run)
|
|
130
|
+
return {
|
|
131
|
+
success: false,
|
|
132
|
+
message: `no runs found for org ${name} — start one with: monomind org run ${name}`,
|
|
133
|
+
};
|
|
134
|
+
const file = join(ctx.cwd, ORG_DIR, name, run, 'bus.jsonl');
|
|
135
|
+
const verbose = ctx.flags.verbose === true;
|
|
136
|
+
const stats = ctx.flags.stats === true;
|
|
137
|
+
let totalTokens = 0;
|
|
138
|
+
let totalCostUsd = 0;
|
|
139
|
+
const show = (e) => {
|
|
140
|
+
if (e.from !== role)
|
|
141
|
+
return;
|
|
142
|
+
if (e.type === 'chat') {
|
|
143
|
+
log(`${output.info(`${role}:`)} ${e.msg ?? ''}`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (verbose && e.type === 'status') {
|
|
147
|
+
log(output.warning(`[${e.reason ?? 'status'}] ${e.msg ?? ''}`));
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (stats && e.type === 'usage') {
|
|
151
|
+
const tokens = typeof e.data?.tokens === 'number' ? e.data.tokens : 0;
|
|
152
|
+
const costDelta = typeof e.data?.cost_usd === 'number' ? e.data.cost_usd : 0;
|
|
153
|
+
totalTokens += tokens;
|
|
154
|
+
totalCostUsd += costDelta;
|
|
155
|
+
log(output.info(`[stats] +${tokens} tokens (total ${totalTokens}) · +$${costDelta.toFixed(4)} (total $${totalCostUsd.toFixed(4)})`));
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
log(output.info(`watching ${name}/${role} — ${run} (Ctrl-C to stop; org logs ${name} --role ${role} --follow for the full event stream)`));
|
|
159
|
+
let seenLines = 0;
|
|
160
|
+
const drain = () => {
|
|
161
|
+
if (!existsSync(file))
|
|
162
|
+
return;
|
|
163
|
+
const lines = readFileSync(file, 'utf8').split('\n').filter(Boolean);
|
|
164
|
+
for (let i = seenLines; i < lines.length; i++) {
|
|
165
|
+
try {
|
|
166
|
+
show(JSON.parse(lines[i]));
|
|
167
|
+
seenLines = i + 1;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
if (i === lines.length - 1)
|
|
171
|
+
break; // only the final line may be a mid-append partial write
|
|
172
|
+
seenLines = i + 1;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
drain();
|
|
177
|
+
if (ctx.flags.follow === false)
|
|
178
|
+
return { success: true }; // --follow=false opts out of the default live tail
|
|
179
|
+
await new Promise((resolve) => {
|
|
180
|
+
const iv = setInterval(drain, 500);
|
|
181
|
+
process.once('SIGINT', () => {
|
|
182
|
+
clearInterval(iv);
|
|
183
|
+
resolve();
|
|
184
|
+
});
|
|
185
|
+
process.once('SIGTERM', () => {
|
|
186
|
+
clearInterval(iv);
|
|
187
|
+
resolve();
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
return { success: true };
|
|
191
|
+
};
|
|
192
|
+
// ─── org events — the only genuinely new org command (plan D12) ─────────────
|
|
193
|
+
/** Resolve a `--since` cursor: an event id (skip everything at/before it) or
|
|
194
|
+
* an ISO-8601 timestamp (skip older events). Returns null when unusable. */
|
|
195
|
+
function parseSinceCursor(raw) {
|
|
196
|
+
if (typeof raw !== 'string' || !raw)
|
|
197
|
+
return null;
|
|
198
|
+
if (/^run-[A-Za-z0-9-]+/.test(raw))
|
|
199
|
+
return { id: raw };
|
|
200
|
+
const ts = Date.parse(raw);
|
|
201
|
+
return Number.isFinite(ts) ? { iso: raw } : null;
|
|
202
|
+
}
|
|
203
|
+
/** `org events <name> [--run id] [--follow] [--since <eventId|iso>] [--ndjson]`
|
|
204
|
+
* — live tail of a run's bus.jsonl as NDJSON, one BusEvent per line
|
|
205
|
+
* (protocol §7.3). This is the machine streaming surface; `org logs` stays
|
|
206
|
+
* the human one. NDJSON is the only output mode (--ndjson accepted for
|
|
207
|
+
* spec symmetry). */
|
|
208
|
+
export const eventsAction = async (ctx, name) => {
|
|
209
|
+
const run = resolveRun(ctx.cwd, name, ctx.flags.run);
|
|
210
|
+
if (!run)
|
|
211
|
+
return {
|
|
212
|
+
success: false,
|
|
213
|
+
message: `no runs found for org ${name} — start one with: monomind org run ${name}`,
|
|
214
|
+
};
|
|
215
|
+
const file = join(ctx.cwd, ORG_DIR, name, run, 'bus.jsonl');
|
|
216
|
+
const since = parseSinceCursor(ctx.flags.since);
|
|
217
|
+
let skippedPastId = !since?.id; // true = no id cursor, nothing to skip
|
|
218
|
+
let seenLines = 0;
|
|
219
|
+
const emitLine = (line) => {
|
|
220
|
+
let e;
|
|
221
|
+
try {
|
|
222
|
+
e = JSON.parse(line);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return; // corrupt interior line — skip, same policy as logsAction
|
|
226
|
+
}
|
|
227
|
+
if (since?.id) {
|
|
228
|
+
if (!skippedPastId) {
|
|
229
|
+
if (e.id === since.id)
|
|
230
|
+
skippedPastId = true;
|
|
231
|
+
return; // everything strictly before the cursor is replay-suppressed
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (since?.iso && Date.parse(since.iso) && new Date(e.ts).getTime() < Date.parse(since.iso))
|
|
235
|
+
return;
|
|
236
|
+
process.stdout.write(`${JSON.stringify(e)}\n`);
|
|
237
|
+
};
|
|
238
|
+
const drain = () => {
|
|
239
|
+
if (!existsSync(file))
|
|
240
|
+
return;
|
|
241
|
+
const lines = readFileSync(file, 'utf8').split('\n').filter(Boolean);
|
|
242
|
+
for (let i = seenLines; i < lines.length; i++) {
|
|
243
|
+
// Only the FINAL line can be a partial mid-append write worth retrying.
|
|
244
|
+
if (i === lines.length - 1) {
|
|
245
|
+
try {
|
|
246
|
+
JSON.parse(lines[i]);
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
emitLine(lines[i]);
|
|
253
|
+
seenLines = i + 1;
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
drain();
|
|
257
|
+
if (ctx.flags.follow !== true)
|
|
258
|
+
return { success: true };
|
|
259
|
+
await new Promise((resolve) => {
|
|
260
|
+
const iv = setInterval(drain, 500);
|
|
261
|
+
process.once('SIGINT', () => {
|
|
262
|
+
clearInterval(iv);
|
|
263
|
+
resolve();
|
|
264
|
+
});
|
|
265
|
+
process.once('SIGTERM', () => {
|
|
266
|
+
clearInterval(iv);
|
|
267
|
+
resolve();
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
return { success: true };
|
|
271
|
+
};
|
|
272
|
+
//# sourceMappingURL=org-observe-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-observe-logs.js","sourceRoot":"","sources":["../../../src/commands/org-observe-logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CommandContext, CommandResult } from '../types.js';
|
|
2
|
+
/** `org questions <name> [--all]` — list pending (or all) ask_human questions. */
|
|
3
|
+
export declare const questionsAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
|
|
4
|
+
/** `org answer <name> <question-id> <answer...>` — answer a pending ask_human question.
|
|
5
|
+
* Delivers live via the hosting daemon's /api/answer-question when the org is running
|
|
6
|
+
* (broker lookup); otherwise records the answer and queues it for the next run. */
|
|
7
|
+
export declare const answerAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
|
|
8
|
+
//# sourceMappingURL=org-observe-questions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-observe-questions.d.ts","sourceRoot":"","sources":["../../../src/commands/org-observe-questions.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0CjE,kFAAkF;AAClF,eAAO,MAAM,eAAe,QACrB,cAAc,QACb,MAAM,KACX,OAAO,CAAC,aAAa,CAoCvB,CAAC;AAEF;;oFAEoF;AACpF,eAAO,MAAM,YAAY,QAAe,cAAc,QAAQ,MAAM,KAAG,OAAO,CAAC,aAAa,CAyJ3F,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
// packages/@monomind/cli/src/commands/org-observe-questions.ts
|
|
2
|
+
//
|
|
3
|
+
// `monomind org questions | answer` — pending ask_human questions and
|
|
4
|
+
// their live-or-queued answers.
|
|
5
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { utcDateMinute } from '../orgrt/reporting.js';
|
|
8
|
+
import { ORG_DIR } from '../orgrt/types.js';
|
|
9
|
+
import { output } from '../output.js';
|
|
10
|
+
import { orgJson, printOrgJson, resolverFlag } from './org-observe-shared.js';
|
|
11
|
+
const log = (text) => {
|
|
12
|
+
console.log(text);
|
|
13
|
+
};
|
|
14
|
+
/** Read questions.json. A MISSING file legitimately means "no questions" → [].
|
|
15
|
+
* Any other failure (unreadable, malformed — e.g. a partial daemon write) THROWS:
|
|
16
|
+
* answerAction rewrites this file from what this returns, so silently coercing a
|
|
17
|
+
* failed read to [] would atomically replace every recorded question with one. */
|
|
18
|
+
const readQuestions = (cwd, name) => {
|
|
19
|
+
const path = join(cwd, ORG_DIR, name, 'questions.json');
|
|
20
|
+
let raw;
|
|
21
|
+
try {
|
|
22
|
+
raw = readFileSync(path, 'utf8');
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
if (err.code === 'ENOENT')
|
|
26
|
+
return [];
|
|
27
|
+
throw new Error(`cannot read ${path}: ${err instanceof Error ? err.message : String(err)}`);
|
|
28
|
+
}
|
|
29
|
+
let parsed;
|
|
30
|
+
try {
|
|
31
|
+
parsed = JSON.parse(raw);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
throw new Error(`${path} is not valid JSON (${err instanceof Error ? err.message : String(err)})`);
|
|
35
|
+
}
|
|
36
|
+
if (parsed?.questions === undefined || parsed.questions === null)
|
|
37
|
+
return [];
|
|
38
|
+
if (!Array.isArray(parsed.questions))
|
|
39
|
+
throw new Error(`${path}: "questions" is not an array`);
|
|
40
|
+
return parsed.questions;
|
|
41
|
+
};
|
|
42
|
+
/** `org questions <name> [--all]` — list pending (or all) ask_human questions. */
|
|
43
|
+
export const questionsAction = async (ctx, name) => {
|
|
44
|
+
let all;
|
|
45
|
+
try {
|
|
46
|
+
all = readQuestions(ctx.cwd, name);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
log(output.error(`Cannot read questions for org ${name}: ${err instanceof Error ? err.message : String(err)}`));
|
|
50
|
+
return { success: false, message: 'questions.json unreadable' };
|
|
51
|
+
}
|
|
52
|
+
const shown = ctx.flags.all === true ? all : all.filter((q) => q.answer === null);
|
|
53
|
+
if (orgJson(ctx))
|
|
54
|
+
return printOrgJson({ v: 1, org: name, items: shown });
|
|
55
|
+
if (!shown.length) {
|
|
56
|
+
log(output.info(all.length
|
|
57
|
+
? `No pending questions for org ${name} (${all.length} answered — use --all).`
|
|
58
|
+
: `No questions recorded for org ${name}.`));
|
|
59
|
+
return { success: true };
|
|
60
|
+
}
|
|
61
|
+
for (const q of shown) {
|
|
62
|
+
const when = utcDateMinute(q.ts);
|
|
63
|
+
log(output.info(`${q.answer === null ? '❓' : '✓'} [${q.questionId}] ${when} ${q.role}: ${q.question}`));
|
|
64
|
+
if (q.answer !== null)
|
|
65
|
+
log(output.info(` ↳ ${q.answer}`));
|
|
66
|
+
}
|
|
67
|
+
if (shown.some((q) => q.answer === null))
|
|
68
|
+
log(output.info(`\nAnswer with: monomind org answer ${name} <question-id> "your answer"`));
|
|
69
|
+
return { success: true };
|
|
70
|
+
};
|
|
71
|
+
/** `org answer <name> <question-id> <answer...>` — answer a pending ask_human question.
|
|
72
|
+
* Delivers live via the hosting daemon's /api/answer-question when the org is running
|
|
73
|
+
* (broker lookup); otherwise records the answer and queues it for the next run. */
|
|
74
|
+
export const answerAction = async (ctx, name) => {
|
|
75
|
+
const questionId = ctx.args[1];
|
|
76
|
+
const answer = ctx.args.slice(2).join(' ').trim();
|
|
77
|
+
if (!questionId || !answer)
|
|
78
|
+
return {
|
|
79
|
+
success: false,
|
|
80
|
+
message: `usage: monomind org answer ${name} <question-id> "answer text"`,
|
|
81
|
+
};
|
|
82
|
+
let questions;
|
|
83
|
+
try {
|
|
84
|
+
questions = readQuestions(ctx.cwd, name);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
log(output.error(`Cannot read questions for org ${name}: ${err instanceof Error ? err.message : String(err)}`));
|
|
88
|
+
return { success: false, message: 'questions.json unreadable — answer not recorded' };
|
|
89
|
+
}
|
|
90
|
+
const q = questions.find((x) => x.questionId === questionId);
|
|
91
|
+
if (!q) {
|
|
92
|
+
log(output.error(`Question "${questionId}" not found for org ${name} — list with: monomind org questions ${name}`));
|
|
93
|
+
return { success: false, message: 'question not found' };
|
|
94
|
+
}
|
|
95
|
+
if (q.answer !== null)
|
|
96
|
+
return { success: false, message: `question "${questionId}" was already answered` };
|
|
97
|
+
const byFlag = await resolverFlag(ctx);
|
|
98
|
+
if (!byFlag.ok)
|
|
99
|
+
return { success: false, message: byFlag.message };
|
|
100
|
+
const resolvedBy = byFlag.by;
|
|
101
|
+
// Live path: the hosting daemon updates questions.json and pushes into the role's mailbox.
|
|
102
|
+
// SEC: answering a role's question is a human decision — authenticate with
|
|
103
|
+
// the operator credential, not the agent-facing one in the broker entry.
|
|
104
|
+
const { lookupOrg, readOperatorCredential } = await import('../orgrt/broker.js');
|
|
105
|
+
const remote = lookupOrg(name);
|
|
106
|
+
if (remote) {
|
|
107
|
+
const cred = readOperatorCredential(name);
|
|
108
|
+
try {
|
|
109
|
+
const res = await fetch(`${remote.url}/api/answer-question`, {
|
|
110
|
+
method: 'POST',
|
|
111
|
+
headers: {
|
|
112
|
+
'Content-Type': 'application/json',
|
|
113
|
+
...(cred ? { 'x-monomind-cred': cred } : {}),
|
|
114
|
+
},
|
|
115
|
+
body: JSON.stringify({ org: name, role: q.role, questionId, answer, resolvedBy }),
|
|
116
|
+
signal: AbortSignal.timeout(10_000),
|
|
117
|
+
});
|
|
118
|
+
const data = (await res.json().catch(() => ({})));
|
|
119
|
+
if (res.ok && data.ok) {
|
|
120
|
+
if (orgJson(ctx))
|
|
121
|
+
return printOrgJson({
|
|
122
|
+
v: 1,
|
|
123
|
+
org: name,
|
|
124
|
+
question_id: questionId,
|
|
125
|
+
role: q.role,
|
|
126
|
+
delivery: 'live',
|
|
127
|
+
answered: true,
|
|
128
|
+
resolvedBy,
|
|
129
|
+
});
|
|
130
|
+
log(output.success(`Answer delivered to ${name}:${q.role} (live).`));
|
|
131
|
+
return { success: true };
|
|
132
|
+
}
|
|
133
|
+
log(output.warning(`Live delivery rejected (${data.error ?? res.status}) — falling back to offline queue.`));
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
log(output.warning(`Hosting daemon unreachable (${err instanceof Error ? err.message : 'error'}) — falling back to offline queue.`));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Offline path: mirror daemon.answerQuestion's org-not-running branch.
|
|
140
|
+
// RE-READ and merge by questionId just before writing — the pre-fetch
|
|
141
|
+
// snapshot can be up to 10s stale (live-delivery timeout), and rewriting
|
|
142
|
+
// from it would delete questions the daemon appended meanwhile and revert
|
|
143
|
+
// answers it recorded (atomic rename prevents torn writes, not lost updates).
|
|
144
|
+
// A FAILED re-read must abort the write: rewriting from [] would atomically
|
|
145
|
+
// rename a single-question file over every other recorded question.
|
|
146
|
+
let fresh;
|
|
147
|
+
try {
|
|
148
|
+
fresh = readQuestions(ctx.cwd, name);
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
log(output.error(`Refusing to rewrite questions.json — ${err instanceof Error ? err.message : String(err)}`));
|
|
152
|
+
log(output.warning(`The answer was NOT recorded. Fix or restore ${join(ctx.cwd, ORG_DIR, name, 'questions.json')}, then retry.`));
|
|
153
|
+
return { success: false, message: 'questions.json unreadable — answer not recorded' };
|
|
154
|
+
}
|
|
155
|
+
const freshQ = fresh.find((x) => x.questionId === questionId);
|
|
156
|
+
if (freshQ && freshQ.answer !== null) {
|
|
157
|
+
return {
|
|
158
|
+
success: false,
|
|
159
|
+
message: `question "${questionId}" was answered while this command was running`,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
// Queue BEFORE marking answered (same rule as daemon.answerQuestion): if the
|
|
163
|
+
// append fails, the question must stay pending and answerable. Marking first meant
|
|
164
|
+
// a failed queueMessage recorded the answer as delivered while nothing was queued,
|
|
165
|
+
// and the `already answered` guard then rejected every retry.
|
|
166
|
+
const { queueMessage } = await import('../orgrt/inbox.js');
|
|
167
|
+
try {
|
|
168
|
+
queueMessage(ctx.cwd, name, {
|
|
169
|
+
fromQualified: 'human',
|
|
170
|
+
toRole: q.role,
|
|
171
|
+
subject: `answer:${questionId}`,
|
|
172
|
+
body: `question: ${q.question}\n\nanswer: ${answer}`,
|
|
173
|
+
ts: Date.now(),
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
log(output.error(`Could not queue the answer for ${name}:${q.role} (${err instanceof Error ? err.message : String(err)}) — answer NOT recorded, retry it.`));
|
|
178
|
+
return { success: false, message: 'queueing failed — answer not recorded' };
|
|
179
|
+
}
|
|
180
|
+
const merged = fresh.some((x) => x.questionId === questionId)
|
|
181
|
+
? fresh.map((x) => x.questionId === questionId ? { ...x, answer, answeredAt: Date.now(), resolvedBy } : x)
|
|
182
|
+
: [...fresh, { ...q, answer, answeredAt: Date.now(), resolvedBy }];
|
|
183
|
+
const dest = join(ctx.cwd, ORG_DIR, name, 'questions.json');
|
|
184
|
+
const tmp = `${dest}.${process.pid}.tmp`;
|
|
185
|
+
writeFileSync(tmp, JSON.stringify({ questions: merged }, null, 2));
|
|
186
|
+
const { renameSync } = await import('node:fs');
|
|
187
|
+
renameSync(tmp, dest);
|
|
188
|
+
if (orgJson(ctx))
|
|
189
|
+
return printOrgJson({
|
|
190
|
+
v: 1,
|
|
191
|
+
org: name,
|
|
192
|
+
question_id: questionId,
|
|
193
|
+
role: q.role,
|
|
194
|
+
delivery: 'queued',
|
|
195
|
+
answered: true,
|
|
196
|
+
resolvedBy,
|
|
197
|
+
});
|
|
198
|
+
log(output.success(`Answer recorded — ${name}:${q.role} receives it when the org next runs.`));
|
|
199
|
+
return { success: true };
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=org-observe-questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-observe-questions.js","sourceRoot":"","sources":["../../../src/commands/org-observe-questions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CommandContext, CommandResult } from '../types.js';
|
|
2
|
+
/** `org report <name> [--run id] [--all] [--by-role] [--format mermaid]` — summarize a run (or list run history). */
|
|
3
|
+
export declare const reportAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
|
|
4
|
+
/** `org costs <name> [--run id]` — show per-role cost tracking from runtime.json */
|
|
5
|
+
export declare const costsAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
|
|
6
|
+
/** `org flow <name> [--run id]` — export org flow as Mermaid diagram */
|
|
7
|
+
export declare const flowAction: (ctx: CommandContext, name: string) => Promise<CommandResult>;
|
|
8
|
+
//# sourceMappingURL=org-observe-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-observe-report.d.ts","sourceRoot":"","sources":["../../../src/commands/org-observe-report.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOjE,qHAAqH;AACrH,eAAO,MAAM,YAAY,QAAe,cAAc,QAAQ,MAAM,KAAG,OAAO,CAAC,aAAa,CAwP3F,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,WAAW,QAAe,cAAc,QAAQ,MAAM,KAAG,OAAO,CAAC,aAAa,CAgI1F,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,UAAU,QAAe,cAAc,QAAQ,MAAM,KAAG,OAAO,CAAC,aAAa,CA6DzF,CAAC"}
|