@monoes/monomindcli 2.8.4 → 2.9.1
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/helpers/auto-memory-hook.mjs +0 -0
- package/.claude/helpers/handlers/route-handler.cjs +12 -0
- package/.claude/helpers/handlers/session-restore-handler.cjs +28 -7
- package/.claude/helpers/hook-handler.cjs +0 -0
- package/.claude/helpers/utils/micro-agents.cjs +22 -0
- package/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +11 -6
- package/.claude/skills/monodesign/scripts/live-inject.mjs +20 -7
- package/.claude/skills/monodesign/scripts/live-server.mjs +38 -2
- package/LICENSE +191 -0
- package/README.md +8 -6
- package/dist/src/browser/dashboard/server.d.ts +5 -0
- package/dist/src/browser/dashboard/server.d.ts.map +1 -1
- package/dist/src/browser/dashboard/server.js +59 -4
- package/dist/src/browser/dashboard/server.js.map +1 -1
- package/dist/src/browser/dashboard/ui.html +18 -8
- package/dist/src/browser/workflow/store.d.ts.map +1 -1
- package/dist/src/browser/workflow/store.js +3 -2
- package/dist/src/browser/workflow/store.js.map +1 -1
- package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
- package/dist/src/capabilities/cap-documents.js +14 -9
- package/dist/src/capabilities/cap-documents.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +22 -18
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/download-embeddings.d.ts +8 -0
- package/dist/src/commands/download-embeddings.d.ts.map +1 -0
- package/dist/src/commands/download-embeddings.js +34 -0
- package/dist/src/commands/download-embeddings.js.map +1 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +14 -0
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +4 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init-wizard.js +1 -1
- package/dist/src/commands/init-wizard.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +48 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/monograph.d.ts.map +1 -1
- package/dist/src/commands/monograph.js +35 -1
- package/dist/src/commands/monograph.js.map +1 -1
- package/dist/src/commands/org-observe.d.ts +10 -0
- package/dist/src/commands/org-observe.d.ts.map +1 -1
- package/dist/src/commands/org-observe.js +195 -31
- package/dist/src/commands/org-observe.js.map +1 -1
- package/dist/src/commands/org.d.ts +1 -0
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +139 -3
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/commands/route.d.ts +1 -9
- package/dist/src/commands/route.d.ts.map +1 -1
- package/dist/src/commands/route.js +42 -65
- package/dist/src/commands/route.js.map +1 -1
- package/dist/src/commands/security-cve.d.ts.map +1 -1
- package/dist/src/commands/security-cve.js +2 -1
- package/dist/src/commands/security-cve.js.map +1 -1
- package/dist/src/index.d.ts +0 -10
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -15
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/copy-assets.d.ts +17 -0
- package/dist/src/init/copy-assets.d.ts.map +1 -0
- package/dist/src/init/copy-assets.js +271 -0
- package/dist/src/init/copy-assets.js.map +1 -0
- package/dist/src/init/executor.d.ts +2 -30
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +56 -2493
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +9 -0
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +0 -4
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/shared.d.ts +112 -0
- package/dist/src/init/shared.d.ts.map +1 -0
- package/dist/src/init/shared.js +475 -0
- package/dist/src/init/shared.js.map +1 -0
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +37 -0
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +1 -1
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/upgrade.d.ts +34 -0
- package/dist/src/init/upgrade.d.ts.map +1 -0
- package/dist/src/init/upgrade.js +477 -0
- package/dist/src/init/upgrade.js.map +1 -0
- package/dist/src/init/write-antigravity.d.ts +13 -0
- package/dist/src/init/write-antigravity.d.ts.map +1 -0
- package/dist/src/init/write-antigravity.js +117 -0
- package/dist/src/init/write-antigravity.js.map +1 -0
- package/dist/src/init/write-capabilities.d.ts +9 -0
- package/dist/src/init/write-capabilities.d.ts.map +1 -0
- package/dist/src/init/write-capabilities.js +392 -0
- package/dist/src/init/write-capabilities.js.map +1 -0
- package/dist/src/init/write-claude.d.ts +25 -0
- package/dist/src/init/write-claude.d.ts.map +1 -0
- package/dist/src/init/write-claude.js +279 -0
- package/dist/src/init/write-claude.js.map +1 -0
- package/dist/src/init/write-kimicode.d.ts +19 -0
- package/dist/src/init/write-kimicode.d.ts.map +1 -0
- package/dist/src/init/write-kimicode.js +223 -0
- package/dist/src/init/write-kimicode.js.map +1 -0
- package/dist/src/init/write-opencode.d.ts +14 -0
- package/dist/src/init/write-opencode.d.ts.map +1 -0
- package/dist/src/init/write-opencode.js +130 -0
- package/dist/src/init/write-opencode.js.map +1 -0
- package/dist/src/init/write-runtime-config.d.ts +14 -0
- package/dist/src/init/write-runtime-config.d.ts.map +1 -0
- package/dist/src/init/write-runtime-config.js +214 -0
- package/dist/src/init/write-runtime-config.js.map +1 -0
- package/dist/src/init/write-sample-org.d.ts +9 -0
- package/dist/src/init/write-sample-org.d.ts.map +1 -0
- package/dist/src/init/write-sample-org.js +39 -0
- package/dist/src/init/write-sample-org.js.map +1 -0
- package/dist/src/knowledge/eval/golden-set.js +1 -1
- package/dist/src/knowledge/eval/golden-set.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.js +2 -25
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/auto-install.d.ts.map +1 -1
- package/dist/src/mcp-tools/auto-install.js +2 -1
- package/dist/src/mcp-tools/auto-install.js.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +26 -0
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +2 -37
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts +5 -0
- package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/agent-history-tools.js +177 -0
- package/dist/src/mcp-tools/monograph/agent-history-tools.js.map +1 -0
- package/dist/src/mcp-tools/monograph/build-tools.d.ts +9 -0
- package/dist/src/mcp-tools/monograph/build-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/build-tools.js +299 -0
- package/dist/src/mcp-tools/monograph/build-tools.js.map +1 -0
- package/dist/src/mcp-tools/monograph/group-tools.d.ts +10 -0
- package/dist/src/mcp-tools/monograph/group-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/group-tools.js +225 -0
- package/dist/src/mcp-tools/monograph/group-tools.js.map +1 -0
- package/dist/src/mcp-tools/monograph/health-tools.d.ts +6 -0
- package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/health-tools.js +113 -0
- package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -0
- package/dist/src/mcp-tools/monograph/impact-tools.d.ts +9 -0
- package/dist/src/mcp-tools/monograph/impact-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/impact-tools.js +532 -0
- package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -0
- package/dist/src/mcp-tools/monograph/index.d.ts +10 -0
- package/dist/src/mcp-tools/monograph/index.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/index.js +73 -0
- package/dist/src/mcp-tools/monograph/index.js.map +1 -0
- package/dist/src/mcp-tools/monograph/query-tools.d.ts +11 -0
- package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/query-tools.js +500 -0
- package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -0
- package/dist/src/mcp-tools/monograph/shared.d.ts +64 -0
- package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/shared.js +215 -0
- package/dist/src/mcp-tools/monograph/shared.js.map +1 -0
- package/dist/src/mcp-tools/monograph/visualize-tools.d.ts +10 -0
- package/dist/src/mcp-tools/monograph/visualize-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monograph/visualize-tools.js +382 -0
- package/dist/src/mcp-tools/monograph/visualize-tools.js.map +1 -0
- package/dist/src/mcp-tools/monograph-tools.d.ts +4 -23
- package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.js +4 -2439
- package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
- package/dist/src/mcp-tools/monomind-tools.d.ts +8 -0
- package/dist/src/mcp-tools/monomind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monomind-tools.js +13 -1
- package/dist/src/mcp-tools/monomind-tools.js.map +1 -1
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +31 -2
- package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +31 -1
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/types.d.ts +8 -27
- package/dist/src/mcp-tools/types.d.ts.map +1 -1
- package/dist/src/mcp-tools/types.js +9 -91
- package/dist/src/mcp-tools/types.js.map +1 -1
- package/dist/src/memory/file-permissions.d.ts +15 -0
- package/dist/src/memory/file-permissions.d.ts.map +1 -0
- package/dist/src/memory/file-permissions.js +25 -0
- package/dist/src/memory/file-permissions.js.map +1 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +94 -34
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-crud.d.ts.map +1 -1
- package/dist/src/memory/memory-crud.js +298 -275
- package/dist/src/memory/memory-crud.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +2 -4
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +53 -76
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-migrations.d.ts +1 -14
- package/dist/src/memory/memory-migrations.d.ts.map +1 -1
- package/dist/src/memory/memory-migrations.js +52 -105
- package/dist/src/memory/memory-migrations.js.map +1 -1
- package/dist/src/memory/sona-optimizer.d.ts +1 -1
- package/dist/src/memory/sona-optimizer.js +1 -1
- package/dist/src/monovector/index.d.ts +16 -19
- package/dist/src/monovector/index.d.ts.map +1 -1
- package/dist/src/monovector/index.js +50 -8
- package/dist/src/monovector/index.js.map +1 -1
- package/dist/src/orgrt/approvals.d.ts +16 -0
- package/dist/src/orgrt/approvals.d.ts.map +1 -0
- package/dist/src/orgrt/approvals.js +72 -0
- package/dist/src/orgrt/approvals.js.map +1 -0
- package/dist/src/orgrt/bus.d.ts.map +1 -1
- package/dist/src/orgrt/bus.js +21 -0
- package/dist/src/orgrt/bus.js.map +1 -1
- package/dist/src/orgrt/checkpoint-ops.d.ts +19 -0
- package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -0
- package/dist/src/orgrt/checkpoint-ops.js +219 -0
- package/dist/src/orgrt/checkpoint-ops.js.map +1 -0
- package/dist/src/orgrt/checkpoint.d.ts +33 -1
- package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
- package/dist/src/orgrt/checkpoint.js +50 -6
- package/dist/src/orgrt/checkpoint.js.map +1 -1
- package/dist/src/orgrt/cross-org.d.ts +32 -0
- package/dist/src/orgrt/cross-org.d.ts.map +1 -0
- package/dist/src/orgrt/cross-org.js +256 -0
- package/dist/src/orgrt/cross-org.js.map +1 -0
- package/dist/src/orgrt/daemon.d.ts +131 -157
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +356 -966
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/decisions.d.ts +33 -0
- package/dist/src/orgrt/decisions.d.ts.map +1 -0
- package/dist/src/orgrt/decisions.js +169 -0
- package/dist/src/orgrt/decisions.js.map +1 -0
- package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/kimicode-runner.js +5 -1
- package/dist/src/orgrt/kimicode-runner.js.map +1 -1
- package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
- package/dist/src/orgrt/opencode-runner.js +10 -2
- package/dist/src/orgrt/opencode-runner.js.map +1 -1
- package/dist/src/orgrt/org-memory.d.ts +45 -0
- package/dist/src/orgrt/org-memory.d.ts.map +1 -0
- package/dist/src/orgrt/org-memory.js +220 -0
- package/dist/src/orgrt/org-memory.js.map +1 -0
- package/dist/src/orgrt/policy.d.ts +4 -0
- package/dist/src/orgrt/policy.d.ts.map +1 -1
- package/dist/src/orgrt/policy.js +13 -1
- package/dist/src/orgrt/policy.js.map +1 -1
- package/dist/src/orgrt/prechecks.d.ts +15 -0
- package/dist/src/orgrt/prechecks.d.ts.map +1 -0
- package/dist/src/orgrt/prechecks.js +21 -0
- package/dist/src/orgrt/prechecks.js.map +1 -0
- package/dist/src/orgrt/questions.d.ts +39 -0
- package/dist/src/orgrt/questions.d.ts.map +1 -0
- package/dist/src/orgrt/questions.js +135 -0
- package/dist/src/orgrt/questions.js.map +1 -0
- package/dist/src/orgrt/remote.d.ts +25 -0
- package/dist/src/orgrt/remote.d.ts.map +1 -0
- package/dist/src/orgrt/remote.js +73 -0
- package/dist/src/orgrt/remote.js.map +1 -0
- package/dist/src/orgrt/scheduler-integration.d.ts +19 -0
- package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -0
- package/dist/src/orgrt/scheduler-integration.js +90 -0
- package/dist/src/orgrt/scheduler-integration.js.map +1 -0
- package/dist/src/orgrt/server.d.ts.map +1 -1
- package/dist/src/orgrt/server.js +70 -2
- package/dist/src/orgrt/server.js.map +1 -1
- package/dist/src/orgrt/session.d.ts +30 -1
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +184 -53
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/state-detector.d.ts +19 -0
- package/dist/src/orgrt/state-detector.d.ts.map +1 -0
- package/dist/src/orgrt/state-detector.js +59 -0
- package/dist/src/orgrt/state-detector.js.map +1 -0
- package/dist/src/orgrt/task-dag.d.ts +27 -0
- package/dist/src/orgrt/task-dag.d.ts.map +1 -0
- package/dist/src/orgrt/task-dag.js +100 -0
- package/dist/src/orgrt/task-dag.js.map +1 -0
- package/dist/src/orgrt/tool-fence.d.ts +7 -4
- package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
- package/dist/src/orgrt/tool-fence.js +47 -6
- package/dist/src/orgrt/tool-fence.js.map +1 -1
- package/dist/src/orgrt/types.d.ts +57 -2
- package/dist/src/orgrt/types.d.ts.map +1 -1
- package/dist/src/orgrt/types.js +34 -3
- package/dist/src/orgrt/types.js.map +1 -1
- package/dist/src/routing/model-download.d.ts +49 -0
- package/dist/src/routing/model-download.d.ts.map +1 -0
- package/dist/src/routing/model-download.js +106 -0
- package/dist/src/routing/model-download.js.map +1 -0
- package/dist/src/services/crash-reporter.d.ts +5 -0
- package/dist/src/services/crash-reporter.d.ts.map +1 -1
- package/dist/src/services/crash-reporter.js +49 -0
- package/dist/src/services/crash-reporter.js.map +1 -1
- package/dist/src/transfer/anonymization/index.d.ts +18 -15
- package/dist/src/transfer/anonymization/index.d.ts.map +1 -1
- package/dist/src/transfer/anonymization/index.js +7 -119
- package/dist/src/transfer/anonymization/index.js.map +1 -1
- package/dist/src/ui/dashboard.html +606 -7
- package/dist/src/ui/orgs.html +7 -1
- package/dist/src/ui/routes-monograph.mjs +6 -0
- package/dist/src/ui/server.mjs +327 -7
- package/dist/src/update/checker.d.ts.map +1 -1
- package/dist/src/update/checker.js +2 -1
- package/dist/src/update/checker.js.map +1 -1
- package/dist/src/update/executor.d.ts.map +1 -1
- package/dist/src/update/executor.js +7 -3
- package/dist/src/update/executor.js.map +1 -1
- package/dist/src/update/index.d.ts +0 -1
- package/dist/src/update/index.d.ts.map +1 -1
- package/dist/src/update/index.js +5 -24
- package/dist/src/update/index.js.map +1 -1
- package/dist/src/utils/db-mutex.d.ts +11 -0
- package/dist/src/utils/db-mutex.d.ts.map +1 -0
- package/dist/src/utils/db-mutex.js +23 -0
- package/dist/src/utils/db-mutex.js.map +1 -0
- package/dist/src/utils/input-guards.d.ts +23 -0
- package/dist/src/utils/input-guards.d.ts.map +1 -1
- package/dist/src/utils/input-guards.js +72 -0
- package/dist/src/utils/input-guards.js.map +1 -1
- package/dist/src/utils/npm-command.d.ts +10 -0
- package/dist/src/utils/npm-command.d.ts.map +1 -0
- package/dist/src/utils/npm-command.js +12 -0
- package/dist/src/utils/npm-command.js.map +1 -0
- package/dist/src/utils/paths.d.ts +28 -0
- package/dist/src/utils/paths.d.ts.map +1 -0
- package/dist/src/utils/paths.js +108 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -17
- package/scripts/download-embedding-model.mjs +97 -0
- package/scripts/publish.sh +0 -0
- package/scripts/sync-claude-assets.sh +0 -0
- package/dist/src/production/circuit-breaker.d.ts +0 -121
- package/dist/src/production/circuit-breaker.d.ts.map +0 -1
- package/dist/src/production/circuit-breaker.js +0 -262
- package/dist/src/production/circuit-breaker.js.map +0 -1
- package/dist/src/production/error-handler.d.ts +0 -119
- package/dist/src/production/error-handler.d.ts.map +0 -1
- package/dist/src/production/error-handler.js +0 -324
- package/dist/src/production/error-handler.js.map +0 -1
- package/dist/src/production/index.d.ts +0 -6
- package/dist/src/production/index.d.ts.map +0 -1
- package/dist/src/production/index.js +0 -6
- package/dist/src/production/index.js.map +0 -1
- package/dist/src/production/monitoring.d.ts +0 -181
- package/dist/src/production/monitoring.d.ts.map +0 -1
- package/dist/src/production/monitoring.js +0 -375
- package/dist/src/production/monitoring.js.map +0 -1
- package/dist/src/production/rate-limiter.d.ts +0 -125
- package/dist/src/production/rate-limiter.d.ts.map +0 -1
- package/dist/src/production/rate-limiter.js +0 -218
- package/dist/src/production/rate-limiter.js.map +0 -1
- package/dist/src/production/retry.d.ts +0 -48
- package/dist/src/production/retry.d.ts.map +0 -1
- package/dist/src/production/retry.js +0 -189
- package/dist/src/production/retry.js.map +0 -1
- package/dist/src/transfer/types.d.ts +0 -245
- package/dist/src/transfer/types.d.ts.map +0 -1
- package/dist/src/transfer/types.js +0 -6
- package/dist/src/transfer/types.js.map +0 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opencode artifact writers.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { generateOpencodeJson, generateAgentsMd, generateHooksPlugin, generateStatusCommand, convertAgentMd, convertCommandMd, convertSkillMd, opencodeCommandFilename } from './opencode-generator.js';
|
|
7
|
+
import { atomicWriteFile, walkMdFiles, isLikelyUserFile, extractFmName, } from './shared.js';
|
|
8
|
+
/**
|
|
9
|
+
* Write opencode artifacts. ADDITIVE — only invoked when
|
|
10
|
+
* `components.opencode` is set. Never touches .claude/ or .gemini/.
|
|
11
|
+
*
|
|
12
|
+
* Tier 1: opencode.json (MCP server + permissions + instructions).
|
|
13
|
+
* Tier 2 (added next): AGENTS.md + .opencode/{agent,command,skills}/ converted
|
|
14
|
+
* from the Claude tree.
|
|
15
|
+
*/
|
|
16
|
+
export async function writeOpencodeFiles(targetDir, options, result) {
|
|
17
|
+
// opencode.json — write only if absent (or --force). Never clobber a user's
|
|
18
|
+
// hand-written config; mirror writeGeminiFiles' skip-if-exists policy.
|
|
19
|
+
const opencodeJsonPath = path.join(targetDir, 'opencode.json');
|
|
20
|
+
if (!fs.existsSync(opencodeJsonPath) || options.force) {
|
|
21
|
+
atomicWriteFile(opencodeJsonPath, generateOpencodeJson(options));
|
|
22
|
+
result.created.files.push('opencode.json');
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
result.skipped.push('opencode.json');
|
|
26
|
+
}
|
|
27
|
+
// AGENTS.md — opencode's instructions file (CLAUDE.md equivalent).
|
|
28
|
+
const agentsMdPath = path.join(targetDir, 'AGENTS.md');
|
|
29
|
+
if (!fs.existsSync(agentsMdPath) || options.force) {
|
|
30
|
+
atomicWriteFile(agentsMdPath, generateAgentsMd());
|
|
31
|
+
result.created.files.push('AGENTS.md');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
result.skipped.push('AGENTS.md');
|
|
35
|
+
}
|
|
36
|
+
// Hook-shim plugin (Tier 3) — bridges monomind's gate handlers into
|
|
37
|
+
// opencode's tool.execute.before. .opencode/plugins/ (plural) per opencode docs.
|
|
38
|
+
const pluginDir = path.join(targetDir, '.opencode', 'plugins');
|
|
39
|
+
const pluginPath = path.join(pluginDir, 'monomind-hooks.ts');
|
|
40
|
+
if (!fs.existsSync(pluginPath) || options.force) {
|
|
41
|
+
fs.mkdirSync(pluginDir, { recursive: true });
|
|
42
|
+
atomicWriteFile(pluginPath, generateHooksPlugin());
|
|
43
|
+
result.created.files.push('.opencode/plugins/monomind-hooks.ts');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
result.skipped.push('.opencode/plugins/monomind-hooks.ts');
|
|
47
|
+
}
|
|
48
|
+
// /monomind-status command — the opencode equivalent of the Claude Code
|
|
49
|
+
// statusline (opencode has no custom statusbar UI). Runs statusline.cjs
|
|
50
|
+
// unchanged and reports a formatted summary.
|
|
51
|
+
const statusCmdPath = path.join(targetDir, '.opencode', 'command', 'monomind-status.md');
|
|
52
|
+
if (!fs.existsSync(statusCmdPath) || options.force) {
|
|
53
|
+
fs.mkdirSync(path.dirname(statusCmdPath), { recursive: true });
|
|
54
|
+
atomicWriteFile(statusCmdPath, generateStatusCommand());
|
|
55
|
+
result.created.files.push('.opencode/command/monomind-status.md');
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
result.skipped.push('.opencode/command/monomind-status.md');
|
|
59
|
+
}
|
|
60
|
+
// Convert the .claude/{agents,commands,skills} tree that copyAgents/Skills/
|
|
61
|
+
// Commands just wrote into opencode shape. Reading from the target .claude/
|
|
62
|
+
// dir (not the package source) means only the user's selected subset is
|
|
63
|
+
// converted, and we never re-implement the MAP filtering logic.
|
|
64
|
+
const claudeDir = path.join(targetDir, '.claude');
|
|
65
|
+
let agentCount = 0, commandCount = 0, skillCount = 0;
|
|
66
|
+
const seenAgents = new Set();
|
|
67
|
+
// Agents → .opencode/agent/<name>.md (flattened, deduped by name)
|
|
68
|
+
const srcAgents = path.join(claudeDir, 'agents');
|
|
69
|
+
if (fs.existsSync(srcAgents)) {
|
|
70
|
+
const destAgents = path.join(targetDir, '.opencode', 'agent');
|
|
71
|
+
for (const rel of walkMdFiles(srcAgents)) {
|
|
72
|
+
const abs = path.join(srcAgents, rel);
|
|
73
|
+
if (!isLikelyUserFile(rel))
|
|
74
|
+
continue; // skip READMEs etc.
|
|
75
|
+
const src = fs.readFileSync(abs, 'utf-8');
|
|
76
|
+
const fallback = path.basename(rel, '.md');
|
|
77
|
+
const converted = convertAgentMd(src, fallback);
|
|
78
|
+
const name = extractFmName(converted) || fallback;
|
|
79
|
+
if (seenAgents.has(name))
|
|
80
|
+
continue;
|
|
81
|
+
seenAgents.add(name);
|
|
82
|
+
fs.mkdirSync(destAgents, { recursive: true });
|
|
83
|
+
atomicWriteFile(path.join(destAgents, `${name}.md`), converted);
|
|
84
|
+
agentCount++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Commands → .opencode/command/<category>-<name>.md (namespace preserved)
|
|
88
|
+
const srcCommands = path.join(claudeDir, 'commands');
|
|
89
|
+
if (fs.existsSync(srcCommands)) {
|
|
90
|
+
const destCommands = path.join(targetDir, '.opencode', 'command');
|
|
91
|
+
for (const rel of walkMdFiles(srcCommands)) {
|
|
92
|
+
const abs = path.join(srcCommands, rel);
|
|
93
|
+
if (!isLikelyUserFile(rel))
|
|
94
|
+
continue;
|
|
95
|
+
const segs = rel.split(path.sep);
|
|
96
|
+
const category = segs.length > 1 ? segs[0] : 'monomind';
|
|
97
|
+
const fileBase = path.basename(rel, '.md');
|
|
98
|
+
const src = fs.readFileSync(abs, 'utf-8');
|
|
99
|
+
const converted = convertCommandMd(src, category, fileBase);
|
|
100
|
+
fs.mkdirSync(destCommands, { recursive: true });
|
|
101
|
+
atomicWriteFile(path.join(destCommands, opencodeCommandFilename(category, fileBase)), converted);
|
|
102
|
+
commandCount++;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Skills → .opencode/skills/<name>/SKILL.md (same shape)
|
|
106
|
+
const srcSkills = path.join(claudeDir, 'skills');
|
|
107
|
+
if (fs.existsSync(srcSkills)) {
|
|
108
|
+
for (const rel of walkMdFiles(srcSkills)) {
|
|
109
|
+
// rel looks like "<skillName>/SKILL.md"
|
|
110
|
+
const segs = rel.split(path.sep);
|
|
111
|
+
if (segs.length < 2 || segs[segs.length - 1] !== 'SKILL.md')
|
|
112
|
+
continue;
|
|
113
|
+
const skillName = segs[0];
|
|
114
|
+
const abs = path.join(srcSkills, rel);
|
|
115
|
+
const src = fs.readFileSync(abs, 'utf-8');
|
|
116
|
+
const converted = convertSkillMd(src, skillName);
|
|
117
|
+
const destDir = path.join(targetDir, '.opencode', 'skills', skillName);
|
|
118
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
119
|
+
atomicWriteFile(path.join(destDir, 'SKILL.md'), converted);
|
|
120
|
+
skillCount++;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (agentCount)
|
|
124
|
+
result.created.files.push(`.opencode/agent/ (${agentCount} agents)`);
|
|
125
|
+
if (commandCount)
|
|
126
|
+
result.created.files.push(`.opencode/command/ (${commandCount} commands)`);
|
|
127
|
+
if (skillCount)
|
|
128
|
+
result.created.files.push(`.opencode/skills/ (${skillCount} skills)`);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=write-opencode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-opencode.js","sourceRoot":"","sources":["../../../src/init/write-opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime configuration writers: .monomind/config.yaml, initial metrics files.
|
|
3
|
+
*/
|
|
4
|
+
import type { InitOptions, InitResult } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Write runtime configuration (.monomind/)
|
|
7
|
+
*/
|
|
8
|
+
export declare function writeRuntimeConfig(targetDir: string, options: InitOptions, result: InitResult): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Write initial metrics files for statusline
|
|
11
|
+
* Creates baseline data so statusline shows meaningful state instead of all zeros
|
|
12
|
+
*/
|
|
13
|
+
export declare function writeInitialMetrics(targetDir: string, options: InitOptions, result: InitResult): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=write-runtime-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-runtime-config.d.ts","sourceRoot":"","sources":["../../../src/init/write-runtime-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI1D;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CAuGf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CA0Gf"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime configuration writers: .monomind/config.yaml, initial metrics files.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { atomicWriteFile, MAX_EXEC_FILE_BYTES } from './shared.js';
|
|
7
|
+
import { writeCapabilitiesDoc } from './write-capabilities.js';
|
|
8
|
+
/**
|
|
9
|
+
* Write runtime configuration (.monomind/)
|
|
10
|
+
*/
|
|
11
|
+
export async function writeRuntimeConfig(targetDir, options, result) {
|
|
12
|
+
const configPath = path.join(targetDir, '.monomind', 'config.yaml');
|
|
13
|
+
if (fs.existsSync(configPath) && !options.force) {
|
|
14
|
+
result.skipped.push('.monomind/config.yaml');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const config = `# Monomind Runtime Configuration
|
|
18
|
+
# Generated: ${new Date().toISOString()}
|
|
19
|
+
|
|
20
|
+
version: "3.0.0"
|
|
21
|
+
|
|
22
|
+
swarm:
|
|
23
|
+
topology: ${options.runtime.topology}
|
|
24
|
+
maxAgents: ${options.runtime.maxAgents}
|
|
25
|
+
autoScale: true
|
|
26
|
+
coordinationStrategy: consensus
|
|
27
|
+
|
|
28
|
+
memory:
|
|
29
|
+
backend: ${options.runtime.memoryBackend}
|
|
30
|
+
enableHNSW: ${options.runtime.enableHNSW}
|
|
31
|
+
persistPath: .monomind/data
|
|
32
|
+
cacheSize: 100
|
|
33
|
+
# ADR-049: Self-Learning Memory
|
|
34
|
+
learningBridge:
|
|
35
|
+
enabled: ${options.runtime.enableLearningBridge ?? options.runtime.enableNeural}
|
|
36
|
+
confidenceDecayRate: 0.005
|
|
37
|
+
accessBoostAmount: 0.03
|
|
38
|
+
consolidationThreshold: 10
|
|
39
|
+
agentScopes:
|
|
40
|
+
enabled: ${options.runtime.enableAgentScopes ?? true}
|
|
41
|
+
defaultScope: project
|
|
42
|
+
|
|
43
|
+
neural:
|
|
44
|
+
enabled: ${options.runtime.enableNeural}
|
|
45
|
+
modelPath: .monomind/neural
|
|
46
|
+
|
|
47
|
+
hooks:
|
|
48
|
+
enabled: true
|
|
49
|
+
autoExecute: true
|
|
50
|
+
|
|
51
|
+
mcp:
|
|
52
|
+
autoStart: ${options.mcp.autoStart}
|
|
53
|
+
port: ${options.mcp.port}
|
|
54
|
+
`;
|
|
55
|
+
atomicWriteFile(configPath, config);
|
|
56
|
+
result.created.files.push('.monomind/config.yaml');
|
|
57
|
+
// Write .monomind/.gitignore — commit config/knowledge/metrics, exclude sensitive data
|
|
58
|
+
const gitignorePath = path.join(targetDir, '.monomind', '.gitignore');
|
|
59
|
+
const gitignore = `# Monomind — exclude files that may contain secrets or sensitive prompt data
|
|
60
|
+
# Sessions contain conversation history (prompts, code snippets, user data)
|
|
61
|
+
sessions/
|
|
62
|
+
# Security scan results may expose vulnerability details
|
|
63
|
+
security/
|
|
64
|
+
# Temporary and machine-specific files
|
|
65
|
+
*.tmp
|
|
66
|
+
*.log
|
|
67
|
+
daemon.pid
|
|
68
|
+
# Never commit credentials or keys
|
|
69
|
+
*.key
|
|
70
|
+
*.token
|
|
71
|
+
*.secret
|
|
72
|
+
.env
|
|
73
|
+
`;
|
|
74
|
+
if (!fs.existsSync(gitignorePath) || options.force) {
|
|
75
|
+
atomicWriteFile(gitignorePath, gitignore);
|
|
76
|
+
result.created.files.push('.monomind/.gitignore');
|
|
77
|
+
}
|
|
78
|
+
// Ensure the project-level .gitignore does NOT blanket-ignore .monomind/
|
|
79
|
+
// A blanket ignore prevents config, metrics, and knowledge graph from being committed.
|
|
80
|
+
// We remove any bare `.monomind/` or `**/.monomind/` lines and add specific excludes instead.
|
|
81
|
+
const projectGitignorePath = path.join(targetDir, '.gitignore');
|
|
82
|
+
if (fs.existsSync(projectGitignorePath) && fs.statSync(projectGitignorePath).size <= MAX_EXEC_FILE_BYTES) {
|
|
83
|
+
const existing = fs.readFileSync(projectGitignorePath, 'utf-8');
|
|
84
|
+
const blanketPattern = /^(\*\*\/)?\.monomind\/?\s*$/gm;
|
|
85
|
+
if (blanketPattern.test(existing)) {
|
|
86
|
+
const fixed = existing
|
|
87
|
+
.split('\n')
|
|
88
|
+
.filter(line => !/^(\*\*\/)?\.monomind\/?\s*$/.test(line))
|
|
89
|
+
.join('\n');
|
|
90
|
+
const specificExcludes = [
|
|
91
|
+
'# monomind runtime — exclude sensitive and machine-specific data',
|
|
92
|
+
'.monomind/sessions/',
|
|
93
|
+
'.monomind/security/',
|
|
94
|
+
'.monomind/*.tmp',
|
|
95
|
+
'.monomind/*.log',
|
|
96
|
+
'.monomind/daemon.pid',
|
|
97
|
+
'.monomind/*.db',
|
|
98
|
+
'.monomind/*.db-wal',
|
|
99
|
+
'.monomind/*.db-shm',
|
|
100
|
+
].join('\n');
|
|
101
|
+
atomicWriteFile(projectGitignorePath, fixed.trimEnd() + '\n' + specificExcludes + '\n');
|
|
102
|
+
result.updated.push('.gitignore (replaced blanket .monomind/ ignore with specific excludes)');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Write CAPABILITIES.md with full system overview
|
|
106
|
+
await writeCapabilitiesDoc(targetDir, options, result);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Write initial metrics files for statusline
|
|
110
|
+
* Creates baseline data so statusline shows meaningful state instead of all zeros
|
|
111
|
+
*/
|
|
112
|
+
export async function writeInitialMetrics(targetDir, options, result) {
|
|
113
|
+
const metricsDir = path.join(targetDir, '.monomind', 'metrics');
|
|
114
|
+
const learningDir = path.join(targetDir, '.monomind', 'learning');
|
|
115
|
+
const securityDir = path.join(targetDir, '.monomind', 'security');
|
|
116
|
+
// Ensure directories exist
|
|
117
|
+
for (const dir of [metricsDir, learningDir, securityDir]) {
|
|
118
|
+
if (!fs.existsSync(dir)) {
|
|
119
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Create initial v1-progress.json
|
|
123
|
+
const progressPath = path.join(metricsDir, 'v1-progress.json');
|
|
124
|
+
if (!fs.existsSync(progressPath) || options.force) {
|
|
125
|
+
const progress = {
|
|
126
|
+
version: '3.0.0',
|
|
127
|
+
initialized: new Date().toISOString(),
|
|
128
|
+
domains: {
|
|
129
|
+
completed: 0,
|
|
130
|
+
total: 5,
|
|
131
|
+
status: 'INITIALIZING'
|
|
132
|
+
},
|
|
133
|
+
ddd: {
|
|
134
|
+
progress: 0,
|
|
135
|
+
modules: 0,
|
|
136
|
+
totalFiles: 0,
|
|
137
|
+
totalLines: 0
|
|
138
|
+
},
|
|
139
|
+
swarm: {
|
|
140
|
+
activeAgents: 0,
|
|
141
|
+
maxAgents: options.runtime.maxAgents,
|
|
142
|
+
topology: options.runtime.topology
|
|
143
|
+
},
|
|
144
|
+
learning: {
|
|
145
|
+
status: 'READY',
|
|
146
|
+
patternsLearned: 0,
|
|
147
|
+
sessionsCompleted: 0
|
|
148
|
+
},
|
|
149
|
+
_note: 'Metrics will update as you use Monomind (workers refresh at session start).'
|
|
150
|
+
};
|
|
151
|
+
atomicWriteFile(progressPath, JSON.stringify(progress, null, 2));
|
|
152
|
+
result.created.files.push('.monomind/metrics/v1-progress.json');
|
|
153
|
+
}
|
|
154
|
+
// Create initial swarm-activity.json
|
|
155
|
+
const activityPath = path.join(metricsDir, 'swarm-activity.json');
|
|
156
|
+
if (!fs.existsSync(activityPath) || options.force) {
|
|
157
|
+
const activity = {
|
|
158
|
+
timestamp: new Date().toISOString(),
|
|
159
|
+
processes: {
|
|
160
|
+
mcp_server: 0,
|
|
161
|
+
estimated_agents: 0
|
|
162
|
+
},
|
|
163
|
+
swarm: {
|
|
164
|
+
active: false,
|
|
165
|
+
agent_count: 0,
|
|
166
|
+
coordination_active: false
|
|
167
|
+
},
|
|
168
|
+
integration: {
|
|
169
|
+
mcp_active: false
|
|
170
|
+
},
|
|
171
|
+
_initialized: true
|
|
172
|
+
};
|
|
173
|
+
atomicWriteFile(activityPath, JSON.stringify(activity, null, 2));
|
|
174
|
+
result.created.files.push('.monomind/metrics/swarm-activity.json');
|
|
175
|
+
}
|
|
176
|
+
// Create initial learning.json
|
|
177
|
+
const learningPath = path.join(metricsDir, 'learning.json');
|
|
178
|
+
if (!fs.existsSync(learningPath) || options.force) {
|
|
179
|
+
const learning = {
|
|
180
|
+
initialized: new Date().toISOString(),
|
|
181
|
+
routing: {
|
|
182
|
+
accuracy: 0,
|
|
183
|
+
decisions: 0
|
|
184
|
+
},
|
|
185
|
+
patterns: {
|
|
186
|
+
shortTerm: 0,
|
|
187
|
+
longTerm: 0,
|
|
188
|
+
quality: 0
|
|
189
|
+
},
|
|
190
|
+
sessions: {
|
|
191
|
+
total: 0,
|
|
192
|
+
current: null
|
|
193
|
+
},
|
|
194
|
+
_note: 'Intelligence grows as you use Monomind'
|
|
195
|
+
};
|
|
196
|
+
atomicWriteFile(learningPath, JSON.stringify(learning, null, 2));
|
|
197
|
+
result.created.files.push('.monomind/metrics/learning.json');
|
|
198
|
+
}
|
|
199
|
+
// Create initial audit-status.json
|
|
200
|
+
const auditPath = path.join(securityDir, 'audit-status.json');
|
|
201
|
+
if (!fs.existsSync(auditPath) || options.force) {
|
|
202
|
+
const audit = {
|
|
203
|
+
initialized: new Date().toISOString(),
|
|
204
|
+
status: 'PENDING',
|
|
205
|
+
cvesFixed: 0,
|
|
206
|
+
totalCves: 3,
|
|
207
|
+
lastScan: null,
|
|
208
|
+
_note: 'Run: npx monomind@latest security scan'
|
|
209
|
+
};
|
|
210
|
+
atomicWriteFile(auditPath, JSON.stringify(audit, null, 2));
|
|
211
|
+
result.created.files.push('.monomind/security/audit-status.json');
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=write-runtime-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-runtime-config.js","sourceRoot":"","sources":["../../../src/init/write-runtime-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write `.monomind/orgs/sample-team.json` if it does not already exist.
|
|
3
|
+
*
|
|
4
|
+
* @param targetDir project root init is running against
|
|
5
|
+
* @returns true if the file was written, false if it already existed
|
|
6
|
+
* (so the caller can record skipped vs. updated in the InitResult)
|
|
7
|
+
*/
|
|
8
|
+
export declare function writeSampleOrg(targetDir: string): boolean;
|
|
9
|
+
//# sourceMappingURL=write-sample-org.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-sample-org.d.ts","sourceRoot":"","sources":["../../../src/init/write-sample-org.ts"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYzD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C5 — Emit a runnable sample org on `monomind init`.
|
|
3
|
+
*
|
|
4
|
+
* The README has always told users to "see `.monomind/orgs/sample-team.json`
|
|
5
|
+
* in a fresh `monomind init`" — but no such file was ever written, and the
|
|
6
|
+
* real templates (`content-team` / `dev-team` / `research-pod`) lived behind
|
|
7
|
+
* `org create --template`, which the README never mentioned.
|
|
8
|
+
*
|
|
9
|
+
* This module bridges that gap. It derives the sample from the existing
|
|
10
|
+
* schema-validated `content-team` template, so the user gets a file that
|
|
11
|
+
* runs immediately: `monomind org run sample-team`.
|
|
12
|
+
*
|
|
13
|
+
* Re-running init does NOT overwrite the user's edits — if the file already
|
|
14
|
+
* exists we leave it alone (matches the convention used for CAPABILITIES.md
|
|
15
|
+
* and other generated docs).
|
|
16
|
+
*/
|
|
17
|
+
import fs from 'node:fs';
|
|
18
|
+
import path from 'node:path';
|
|
19
|
+
import { buildFromTemplate } from '../orgrt/templates.js';
|
|
20
|
+
/**
|
|
21
|
+
* Write `.monomind/orgs/sample-team.json` if it does not already exist.
|
|
22
|
+
*
|
|
23
|
+
* @param targetDir project root init is running against
|
|
24
|
+
* @returns true if the file was written, false if it already existed
|
|
25
|
+
* (so the caller can record skipped vs. updated in the InitResult)
|
|
26
|
+
*/
|
|
27
|
+
export function writeSampleOrg(targetDir) {
|
|
28
|
+
const orgsDir = path.join(targetDir, '.monomind', 'orgs');
|
|
29
|
+
const samplePath = path.join(orgsDir, 'sample-team.json');
|
|
30
|
+
if (fs.existsSync(samplePath))
|
|
31
|
+
return false;
|
|
32
|
+
const org = buildFromTemplate('content-team', 'sample-team');
|
|
33
|
+
if (!org)
|
|
34
|
+
return false;
|
|
35
|
+
fs.mkdirSync(orgsDir, { recursive: true });
|
|
36
|
+
fs.writeFileSync(samplePath, JSON.stringify(org, null, 2) + '\n', 'utf-8');
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=write-sample-org.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-sample-org.js","sourceRoot":"","sources":["../../../src/init/write-sample-org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE1D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,GAAG,GAAG,iBAAiB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC;AACd,CAAC"}
|