@monoes/monomindcli 2.8.3 → 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/design-palette.d.ts +5 -0
- package/dist/src/commands/design-palette.d.ts.map +1 -1
- package/dist/src/commands/design-palette.js +8 -5
- package/dist/src/commands/design-palette.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/geminimd-generator.js +2 -2
- 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/kimi-generator.js +3 -3
- package/dist/src/init/kimi-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-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +7 -3
- package/dist/src/mcp-client.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/monodesign-tools.d.ts +19 -0
- package/dist/src/mcp-tools/monodesign-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/monodesign-tools.js +233 -0
- package/dist/src/mcp-tools/monodesign-tools.js.map +1 -0
- 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,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code file writers: settings.json, .mcp.json, helpers, statusline, CLAUDE.md.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { generateSettingsJson } from './settings-generator.js';
|
|
7
|
+
import { generateMCPJson } from './mcp-generator.js';
|
|
8
|
+
import { generateStatuslineScript } from './statusline-generator.js';
|
|
9
|
+
import { INIT_FALLBACK_HELPERS, } from './helpers-generator.js';
|
|
10
|
+
import { generateClaudeMd } from './claudemd-generator.js';
|
|
11
|
+
import { atomicWriteFile, findSourceHelpersDir, findSourceClaudeDir, MAX_EXEC_FILE_BYTES, } from './shared.js';
|
|
12
|
+
/**
|
|
13
|
+
* Write settings.json
|
|
14
|
+
*/
|
|
15
|
+
export async function writeSettings(targetDir, options, result) {
|
|
16
|
+
const settingsPath = path.join(targetDir, '.claude', 'settings.json');
|
|
17
|
+
const generated = JSON.parse(generateSettingsJson(options));
|
|
18
|
+
if (fs.existsSync(settingsPath) && !options.force && fs.statSync(settingsPath).size <= MAX_EXEC_FILE_BYTES) {
|
|
19
|
+
// Merge hooks/env/permissions into existing settings instead of skipping
|
|
20
|
+
try {
|
|
21
|
+
const existing = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
|
|
22
|
+
let merged = false;
|
|
23
|
+
// Merge hooks (the critical missing piece — #1484)
|
|
24
|
+
if (generated.hooks && !existing.hooks) {
|
|
25
|
+
existing.hooks = generated.hooks;
|
|
26
|
+
merged = true;
|
|
27
|
+
}
|
|
28
|
+
// Merge env vars (for CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS etc.)
|
|
29
|
+
if (generated.env) {
|
|
30
|
+
existing.env = { ...(existing.env || {}), ...generated.env };
|
|
31
|
+
merged = true;
|
|
32
|
+
}
|
|
33
|
+
// Merge permissions (add monomind allow rules)
|
|
34
|
+
if (generated.permissions?.allow) {
|
|
35
|
+
const existingAllow = existing.permissions?.allow || [];
|
|
36
|
+
const newRules = generated.permissions.allow.filter((r) => !existingAllow.includes(r));
|
|
37
|
+
if (newRules.length > 0) {
|
|
38
|
+
existing.permissions = existing.permissions || {};
|
|
39
|
+
existing.permissions.allow = [...existingAllow, ...newRules];
|
|
40
|
+
merged = true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (merged) {
|
|
44
|
+
atomicWriteFile(settingsPath, JSON.stringify(existing, null, 2));
|
|
45
|
+
result.created.files.push('.claude/settings.json (merged hooks)');
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
result.skipped.push('.claude/settings.json');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
// Existing file is corrupt — overwrite
|
|
53
|
+
if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
|
|
54
|
+
console.error('[writeSettings] existing settings.json unparseable, overwriting with generated defaults:', e);
|
|
55
|
+
atomicWriteFile(settingsPath, JSON.stringify(generated, null, 2));
|
|
56
|
+
result.created.files.push('.claude/settings.json');
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
atomicWriteFile(settingsPath, JSON.stringify(generated, null, 2));
|
|
61
|
+
result.created.files.push('.claude/settings.json');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Write .mcp.json
|
|
65
|
+
*/
|
|
66
|
+
export async function writeMCPConfig(targetDir, options, result) {
|
|
67
|
+
const mcpPath = path.join(targetDir, '.mcp.json');
|
|
68
|
+
if (fs.existsSync(mcpPath) && !options.force) {
|
|
69
|
+
result.skipped.push('.mcp.json');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const content = generateMCPJson(options);
|
|
73
|
+
atomicWriteFile(mcpPath, content);
|
|
74
|
+
result.created.files.push('.mcp.json');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Write helper scripts
|
|
78
|
+
*/
|
|
79
|
+
export async function writeHelpers(targetDir, options, result) {
|
|
80
|
+
const helpersDir = path.join(targetDir, '.claude', 'helpers');
|
|
81
|
+
// Find source helpers directory (works for npm package and local dev)
|
|
82
|
+
const sourceHelpersDir = findSourceHelpersDir(options.sourceBaseDir);
|
|
83
|
+
// Try to copy existing helpers from source first (recursive — includes utils/ and handlers/)
|
|
84
|
+
if (sourceHelpersDir && fs.existsSync(sourceHelpersDir)) {
|
|
85
|
+
const copyRecursive = (srcDir, destDir, relBase) => {
|
|
86
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
87
|
+
for (const entry of fs.readdirSync(srcDir, { withFileTypes: true })) {
|
|
88
|
+
// Skip exFAT/macOS AppleDouble junk files (e.g. "._foo.cjs").
|
|
89
|
+
if (entry.name.startsWith('._'))
|
|
90
|
+
continue;
|
|
91
|
+
const srcPath = path.join(srcDir, entry.name);
|
|
92
|
+
const destPath = path.join(destDir, entry.name);
|
|
93
|
+
const relPath = relBase ? `${relBase}/${entry.name}` : entry.name;
|
|
94
|
+
if (entry.isDirectory()) {
|
|
95
|
+
copyRecursive(srcPath, destPath, relPath);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
if (!fs.existsSync(destPath) || options.force) {
|
|
99
|
+
fs.copyFileSync(srcPath, destPath);
|
|
100
|
+
if (entry.name.endsWith('.sh') || entry.name.endsWith('.mjs')) {
|
|
101
|
+
fs.chmodSync(destPath, '755');
|
|
102
|
+
}
|
|
103
|
+
result.created.files.push(`.claude/helpers/${relPath}`);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
result.skipped.push(`.claude/helpers/${relPath}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
copyRecursive(sourceHelpersDir, helpersDir, '');
|
|
112
|
+
const geminiHelpersDir = path.join(targetDir, '.gemini', 'helpers');
|
|
113
|
+
copyRecursive(sourceHelpersDir, geminiHelpersDir, '');
|
|
114
|
+
}
|
|
115
|
+
// Always run the fallback generator too — it only fills in files still missing
|
|
116
|
+
// after the source copy above (it no-ops on anything the copy already wrote).
|
|
117
|
+
// Without this, a source dir that's present but incomplete (e.g. missing
|
|
118
|
+
// auto-memory-hook.mjs) silently ships a project wired to hooks that reference
|
|
119
|
+
// a file that was never installed.
|
|
120
|
+
const helpers = Object.fromEntries(Object.entries(INIT_FALLBACK_HELPERS).map(([name, generate]) => [name, generate()]));
|
|
121
|
+
for (const [name, content] of Object.entries(helpers)) {
|
|
122
|
+
const filePath = path.join(helpersDir, name);
|
|
123
|
+
// If the source dir has this file, copyRecursive above already applied
|
|
124
|
+
// the correct (force-aware) copy — never let this generated fallback
|
|
125
|
+
// clobber it with a bare-bones stub. Only step in when source truly
|
|
126
|
+
// doesn't have the file, regardless of `force`.
|
|
127
|
+
const inSource = !!(sourceHelpersDir && fs.existsSync(path.join(sourceHelpersDir, name)));
|
|
128
|
+
if (inSource)
|
|
129
|
+
continue;
|
|
130
|
+
if (!fs.existsSync(filePath) || options.force) {
|
|
131
|
+
atomicWriteFile(filePath, content);
|
|
132
|
+
// Make shell scripts executable
|
|
133
|
+
if (!name.endsWith('.js')) {
|
|
134
|
+
fs.chmodSync(filePath, '755');
|
|
135
|
+
}
|
|
136
|
+
result.created.files.push(`.claude/helpers/${name}`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
result.skipped.push(`.claude/helpers/${name}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Write statusline configuration
|
|
145
|
+
*/
|
|
146
|
+
export async function writeStatusline(targetDir, options, result) {
|
|
147
|
+
const claudeDir = path.join(targetDir, '.claude');
|
|
148
|
+
const helpersDir = path.join(targetDir, '.claude', 'helpers');
|
|
149
|
+
// Find source .claude directory (works for npm package and local dev)
|
|
150
|
+
const sourceClaudeDir = findSourceClaudeDir(options.sourceBaseDir);
|
|
151
|
+
// Try to copy existing advanced statusline files from source
|
|
152
|
+
const advancedStatuslineFiles = [
|
|
153
|
+
{ src: 'statusline.sh', dest: 'statusline.sh', dir: claudeDir },
|
|
154
|
+
{ src: 'statusline.mjs', dest: 'statusline.mjs', dir: claudeDir },
|
|
155
|
+
];
|
|
156
|
+
if (sourceClaudeDir) {
|
|
157
|
+
for (const file of advancedStatuslineFiles) {
|
|
158
|
+
const sourcePath = path.join(sourceClaudeDir, file.src);
|
|
159
|
+
const destPath = path.join(file.dir, file.dest);
|
|
160
|
+
if (fs.existsSync(sourcePath)) {
|
|
161
|
+
if (!fs.existsSync(destPath) || options.force) {
|
|
162
|
+
fs.copyFileSync(sourcePath, destPath);
|
|
163
|
+
// Make shell scripts and mjs executable
|
|
164
|
+
if (file.src.endsWith('.sh') || file.src.endsWith('.mjs')) {
|
|
165
|
+
fs.chmodSync(destPath, '755');
|
|
166
|
+
}
|
|
167
|
+
result.created.files.push(`.claude/${file.dest}`);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
result.skipped.push(`.claude/${file.dest}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// ALWAYS generate statusline.cjs — the generated version includes
|
|
176
|
+
// vectors/size, tests, ADRs, hooks, and integration stats that the
|
|
177
|
+
// pre-installed static copy in the npm package lacks.
|
|
178
|
+
// This must overwrite any copy from writeHelpers() which copies the legacy file.
|
|
179
|
+
const statuslineScript = generateStatuslineScript(options);
|
|
180
|
+
const statuslinePath = path.join(helpersDir, 'statusline.cjs');
|
|
181
|
+
atomicWriteFile(statuslinePath, statuslineScript);
|
|
182
|
+
result.created.files.push('.claude/helpers/statusline.cjs');
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Write CLAUDE.md with swarm guidance
|
|
186
|
+
*/
|
|
187
|
+
export async function writeClaudeMd(targetDir, options, result) {
|
|
188
|
+
const claudeMdPath = path.join(targetDir, 'CLAUDE.md');
|
|
189
|
+
if (fs.existsSync(claudeMdPath) && !options.force) {
|
|
190
|
+
result.skipped.push('CLAUDE.md');
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
// Determine template: explicit option > infer from components > 'standard'
|
|
194
|
+
const inferredTemplate = (!options.components.commands && !options.components.agents) ? 'minimal' : undefined;
|
|
195
|
+
const content = generateClaudeMd(options, inferredTemplate);
|
|
196
|
+
atomicWriteFile(claudeMdPath, content);
|
|
197
|
+
result.created.files.push('CLAUDE.md');
|
|
198
|
+
}
|
|
199
|
+
// Also write/append global ~/.claude/CLAUDE.md so monomind tools are used automatically (#1497)
|
|
200
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
201
|
+
if (homeDir) {
|
|
202
|
+
const globalClaudeDir = path.join(homeDir, '.claude');
|
|
203
|
+
const globalClaudeMd = path.join(globalClaudeDir, 'CLAUDE.md');
|
|
204
|
+
const monomindBlock = [
|
|
205
|
+
'',
|
|
206
|
+
'# Monomind Integration (auto-generated by monomind init)',
|
|
207
|
+
'When working on multi-file tasks or complex features, use ToolSearch to find and invoke monomind MCP tools.',
|
|
208
|
+
'Key tools: memory_store, memory_search, hooks_route, swarm_init, agent_spawn.',
|
|
209
|
+
'**Code navigation**: ALWAYS call `mcp__monomind__monograph_query` BEFORE grep/rg/find for code exploration — it returns file path + line number from a pre-built knowledge graph. Call `mcp__monomind__monograph_suggest` with a task description for multi-file tasks. Only fall back to grep if monograph returns 0 results or the DB is not built.',
|
|
210
|
+
'Check system-reminder tags for [INTELLIGENCE] pattern suggestions and [MONOGRAPH] context before starting work.',
|
|
211
|
+
'',
|
|
212
|
+
].join('\n');
|
|
213
|
+
try {
|
|
214
|
+
if (!fs.existsSync(globalClaudeDir)) {
|
|
215
|
+
fs.mkdirSync(globalClaudeDir, { recursive: true });
|
|
216
|
+
}
|
|
217
|
+
if (fs.existsSync(globalClaudeMd) && fs.statSync(globalClaudeMd).size <= MAX_EXEC_FILE_BYTES) {
|
|
218
|
+
const existing = fs.readFileSync(globalClaudeMd, 'utf-8');
|
|
219
|
+
if (!existing.includes('Monomind Integration')) {
|
|
220
|
+
fs.appendFileSync(globalClaudeMd, monomindBlock);
|
|
221
|
+
result.created.files.push('~/.claude/CLAUDE.md (appended monomind block)');
|
|
222
|
+
}
|
|
223
|
+
else if (!existing.includes('monograph_query')) {
|
|
224
|
+
// Upgrade existing block to include monograph instructions
|
|
225
|
+
const updated = existing.replace(/# Monomind Integration[^\n]*\n(?:(?!^#).+\n)*/m, monomindBlock.trimStart() + '\n');
|
|
226
|
+
atomicWriteFile(globalClaudeMd, updated);
|
|
227
|
+
result.created.files.push('~/.claude/CLAUDE.md (upgraded monomind block)');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
atomicWriteFile(globalClaudeMd, monomindBlock.trimStart());
|
|
232
|
+
result.created.files.push('~/.claude/CLAUDE.md');
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch (e) {
|
|
236
|
+
// Non-critical — global CLAUDE.md is best-effort
|
|
237
|
+
if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
|
|
238
|
+
console.error('[writeClaudeMd] failed to write/append ~/.claude/CLAUDE.md:', e);
|
|
239
|
+
}
|
|
240
|
+
// Also inject the token-display hook into ~/.claude/settings.json
|
|
241
|
+
const globalSettingsPath = path.join(globalClaudeDir, 'settings.json');
|
|
242
|
+
try {
|
|
243
|
+
if (!fs.existsSync(globalClaudeDir)) {
|
|
244
|
+
fs.mkdirSync(globalClaudeDir, { recursive: true });
|
|
245
|
+
}
|
|
246
|
+
let globalSettings = {};
|
|
247
|
+
if (fs.existsSync(globalSettingsPath) && fs.statSync(globalSettingsPath).size <= MAX_EXEC_FILE_BYTES) {
|
|
248
|
+
try {
|
|
249
|
+
globalSettings = JSON.parse(fs.readFileSync(globalSettingsPath, 'utf-8'));
|
|
250
|
+
}
|
|
251
|
+
catch (e) {
|
|
252
|
+
// malformed JSON — start fresh
|
|
253
|
+
if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
|
|
254
|
+
console.error('[writeClaudeMd] ~/.claude/settings.json unparseable, starting fresh:', e);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Inject SessionStart token hook if not already present
|
|
258
|
+
const hooks = globalSettings.hooks ?? {};
|
|
259
|
+
const sessionStartHooks = hooks['SessionStart'] ?? [];
|
|
260
|
+
const tokenHookCommand = 'npx --yes monomind@latest tokens today';
|
|
261
|
+
const alreadyPresent = sessionStartHooks.some(entry => Array.isArray(entry.hooks) && entry.hooks.some(h => h.command === tokenHookCommand));
|
|
262
|
+
if (!alreadyPresent) {
|
|
263
|
+
sessionStartHooks.push({
|
|
264
|
+
hooks: [{ type: 'command', command: tokenHookCommand, timeout: 10000 }],
|
|
265
|
+
});
|
|
266
|
+
hooks['SessionStart'] = sessionStartHooks;
|
|
267
|
+
globalSettings.hooks = hooks;
|
|
268
|
+
atomicWriteFile(globalSettingsPath, JSON.stringify(globalSettings, null, 2));
|
|
269
|
+
result.created.files.push('~/.claude/settings.json (added token hook)');
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch (e) {
|
|
273
|
+
// Non-critical — global settings hook is best-effort
|
|
274
|
+
if (process.env.DEBUG || process.env.MONOMIND_DEBUG)
|
|
275
|
+
console.error('[writeClaudeMd] failed to inject token hook into ~/.claude/settings.json:', e);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=write-claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-claude.js","sourceRoot":"","sources":["../../../src/init/write-claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kimi Code artifact writers.
|
|
3
|
+
*/
|
|
4
|
+
import type { InitOptions, InitResult } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Write Kimi Code artifacts. ADDITIVE — only invoked when
|
|
7
|
+
* `components.kimicode` is set. Never touches .claude/, .gemini/, .opencode/.
|
|
8
|
+
*
|
|
9
|
+
* Tier 1: .kimi-code/mcp.json (merged, never clobbered), AGENTS.md (skip-if-exists),
|
|
10
|
+
* .kimi-code/{agents,skills}/ converted from the Claude tree.
|
|
11
|
+
* Tier 2: .kimi-code/plugin/hooks/monomind-gate.mjs — stdin/exit-code bridge into
|
|
12
|
+
* the existing .claude/helpers gate handlers (kimi has no project-level
|
|
13
|
+
* hooks, so enforcement only activates via the Tier 3 plugin).
|
|
14
|
+
* Tier 3: .kimi-code/plugin/kimi.plugin.json + commands/ — installable via
|
|
15
|
+
* `/plugins install ./.kimi-code/plugin` for /monomind:* slash commands
|
|
16
|
+
* and auto-wired hooks.
|
|
17
|
+
*/
|
|
18
|
+
export declare function writeKimiFiles(targetDir: string, options: InitOptions, result: InitResult): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=write-kimicode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-kimicode.d.ts","sourceRoot":"","sources":["../../../src/init/write-kimicode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS1D;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CAkMf"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kimi Code artifact writers.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { generateKimiMcpJson, mergeKimiMcpJson, generateKimiAgentsMd, generateKimiGateScript, generateKimiPluginManifest, generateKimiStatuslineSh, mergeKimiTuiTomlStatusline, convertKimiAgentMd, convertKimiSkillMd, convertKimiCommandToFlowSkill, convertKimiPluginCommandMd, kimiCommandFilename } from './kimi-generator.js';
|
|
7
|
+
import { atomicWriteFile, walkMdFiles, isLikelyUserFile, extractFmName, } from './shared.js';
|
|
8
|
+
/**
|
|
9
|
+
* Write Kimi Code artifacts. ADDITIVE — only invoked when
|
|
10
|
+
* `components.kimicode` is set. Never touches .claude/, .gemini/, .opencode/.
|
|
11
|
+
*
|
|
12
|
+
* Tier 1: .kimi-code/mcp.json (merged, never clobbered), AGENTS.md (skip-if-exists),
|
|
13
|
+
* .kimi-code/{agents,skills}/ converted from the Claude tree.
|
|
14
|
+
* Tier 2: .kimi-code/plugin/hooks/monomind-gate.mjs — stdin/exit-code bridge into
|
|
15
|
+
* the existing .claude/helpers gate handlers (kimi has no project-level
|
|
16
|
+
* hooks, so enforcement only activates via the Tier 3 plugin).
|
|
17
|
+
* Tier 3: .kimi-code/plugin/kimi.plugin.json + commands/ — installable via
|
|
18
|
+
* `/plugins install ./.kimi-code/plugin` for /monomind:* slash commands
|
|
19
|
+
* and auto-wired hooks.
|
|
20
|
+
*/
|
|
21
|
+
export async function writeKimiFiles(targetDir, options, result) {
|
|
22
|
+
const kimiDir = path.join(targetDir, '.kimi-code');
|
|
23
|
+
// .kimi-code/mcp.json — MERGE the monomind server into an existing file;
|
|
24
|
+
// never clobber the user's other servers. Even --force merges (it refreshes
|
|
25
|
+
// the monomind entry only) — a full overwrite would destroy unrelated
|
|
26
|
+
// servers the user configured. Unparseable existing file → skip.
|
|
27
|
+
const mcpJsonPath = path.join(kimiDir, 'mcp.json');
|
|
28
|
+
if (!fs.existsSync(mcpJsonPath)) {
|
|
29
|
+
fs.mkdirSync(kimiDir, { recursive: true });
|
|
30
|
+
atomicWriteFile(mcpJsonPath, generateKimiMcpJson(options));
|
|
31
|
+
result.created.files.push('.kimi-code/mcp.json');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const current = fs.readFileSync(mcpJsonPath, 'utf-8');
|
|
35
|
+
const merged = mergeKimiMcpJson(current, options);
|
|
36
|
+
if (merged === null) {
|
|
37
|
+
result.skipped.push('.kimi-code/mcp.json (unparseable — not touched)');
|
|
38
|
+
}
|
|
39
|
+
else if (merged !== current) {
|
|
40
|
+
atomicWriteFile(mcpJsonPath, merged);
|
|
41
|
+
result.updated.push('.kimi-code/mcp.json (merged monomind server)');
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
result.skipped.push('.kimi-code/mcp.json');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// AGENTS.md — kimi's workspace instructions file. Skip-if-exists, ALWAYS:
|
|
48
|
+
// the opencode target or a hand-written file may already provide one, and
|
|
49
|
+
// under --force the two generators would otherwise flip the file depending
|
|
50
|
+
// on write order. Users who want regeneration delete the file first —
|
|
51
|
+
// same never-clobber spirit as the mcp.json merge above.
|
|
52
|
+
const agentsMdPath = path.join(targetDir, 'AGENTS.md');
|
|
53
|
+
if (!fs.existsSync(agentsMdPath)) {
|
|
54
|
+
atomicWriteFile(agentsMdPath, generateKimiAgentsMd());
|
|
55
|
+
result.created.files.push('AGENTS.md');
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
result.skipped.push('AGENTS.md');
|
|
59
|
+
}
|
|
60
|
+
// Convert the .claude/{agents,commands,skills} tree that copyAgents/Skills/
|
|
61
|
+
// Commands just wrote into kimi shape — same approach as writeOpencodeFiles:
|
|
62
|
+
// reading from the target .claude/ dir means only the user's selected subset
|
|
63
|
+
// is converted.
|
|
64
|
+
const claudeDir = path.join(targetDir, '.claude');
|
|
65
|
+
let agentCount = 0, commandCount = 0, skillCount = 0;
|
|
66
|
+
const seenAgents = new Set();
|
|
67
|
+
// Agents → .kimi-code/agents/<name>.md (flattened, deduped by name)
|
|
68
|
+
const srcAgents = path.join(claudeDir, 'agents');
|
|
69
|
+
if (fs.existsSync(srcAgents)) {
|
|
70
|
+
const destAgents = path.join(kimiDir, 'agents');
|
|
71
|
+
for (const rel of walkMdFiles(srcAgents)) {
|
|
72
|
+
const abs = path.join(srcAgents, rel);
|
|
73
|
+
if (!isLikelyUserFile(rel))
|
|
74
|
+
continue;
|
|
75
|
+
const src = fs.readFileSync(abs, 'utf-8');
|
|
76
|
+
const fallback = path.basename(rel, '.md');
|
|
77
|
+
const converted = convertKimiAgentMd(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
|
+
// Skills → .kimi-code/skills/<name>/SKILL.md (same shape).
|
|
88
|
+
// Track the directory names written here so command flow-skills below never
|
|
89
|
+
// overwrite a REAL skill that happens to share the <category>-<name> slug
|
|
90
|
+
// (e.g. a skill dir "mastermind-debug" vs a command "mastermind/debug.md").
|
|
91
|
+
const writtenSkillDirs = new Set();
|
|
92
|
+
const srcSkills = path.join(claudeDir, 'skills');
|
|
93
|
+
if (fs.existsSync(srcSkills)) {
|
|
94
|
+
for (const rel of walkMdFiles(srcSkills)) {
|
|
95
|
+
const segs = rel.split(path.sep);
|
|
96
|
+
if (segs.length < 2 || segs[segs.length - 1] !== 'SKILL.md')
|
|
97
|
+
continue;
|
|
98
|
+
const skillName = segs[0];
|
|
99
|
+
const abs = path.join(srcSkills, rel);
|
|
100
|
+
const src = fs.readFileSync(abs, 'utf-8');
|
|
101
|
+
const converted = convertKimiSkillMd(src, skillName);
|
|
102
|
+
const destDir = path.join(kimiDir, 'skills', skillName);
|
|
103
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
104
|
+
atomicWriteFile(path.join(destDir, 'SKILL.md'), converted);
|
|
105
|
+
writtenSkillDirs.add(skillName);
|
|
106
|
+
skillCount++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Commands → TWO outputs from the same source pass:
|
|
110
|
+
// (a) .kimi-code/skills/<cat>-<name>/SKILL.md as type:flow skills — the only
|
|
111
|
+
// project-level invocable-command mechanism kimi has (/skill:<name>).
|
|
112
|
+
// (b) .kimi-code/plugin/commands/<cat>-<name>.md for the Tier 3 plugin
|
|
113
|
+
// (/monomind:<name> slash commands once installed).
|
|
114
|
+
const srcCommands = path.join(claudeDir, 'commands');
|
|
115
|
+
const pluginDir = path.join(kimiDir, 'plugin');
|
|
116
|
+
// Always create plugin/commands/ — the manifest declares ./commands/ and a
|
|
117
|
+
// missing path surfaces as a plugin diagnostic in kimi (e.g. --skip-claude
|
|
118
|
+
// runs where no commands were converted).
|
|
119
|
+
const destPluginCommands = path.join(pluginDir, 'commands');
|
|
120
|
+
fs.mkdirSync(destPluginCommands, { recursive: true });
|
|
121
|
+
if (fs.existsSync(srcCommands)) {
|
|
122
|
+
for (const rel of walkMdFiles(srcCommands)) {
|
|
123
|
+
const abs = path.join(srcCommands, rel);
|
|
124
|
+
if (!isLikelyUserFile(rel))
|
|
125
|
+
continue;
|
|
126
|
+
const segs = rel.split(path.sep);
|
|
127
|
+
const category = segs.length > 1 ? segs[0] : 'monomind';
|
|
128
|
+
const fileBase = path.basename(rel, '.md');
|
|
129
|
+
const src = fs.readFileSync(abs, 'utf-8');
|
|
130
|
+
// (a) flow skill — skipped when a real skill already owns this directory
|
|
131
|
+
// name (real skills win; the plugin command below still provides the
|
|
132
|
+
// command under /monomind:<name>).
|
|
133
|
+
const flowSkill = convertKimiCommandToFlowSkill(src, category, fileBase);
|
|
134
|
+
const flowName = extractFmName(flowSkill) || `${category}-${fileBase}`;
|
|
135
|
+
if (writtenSkillDirs.has(flowName)) {
|
|
136
|
+
result.skipped.push(`.kimi-code/skills/${flowName}/ (command flow-skill conflicts with a real skill — plugin command kept)`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const flowDir = path.join(kimiDir, 'skills', flowName);
|
|
140
|
+
fs.mkdirSync(flowDir, { recursive: true });
|
|
141
|
+
atomicWriteFile(path.join(flowDir, 'SKILL.md'), flowSkill);
|
|
142
|
+
writtenSkillDirs.add(flowName);
|
|
143
|
+
skillCount++;
|
|
144
|
+
}
|
|
145
|
+
// (b) plugin command
|
|
146
|
+
const pluginCmd = convertKimiPluginCommandMd(src, category, fileBase);
|
|
147
|
+
fs.mkdirSync(destPluginCommands, { recursive: true });
|
|
148
|
+
atomicWriteFile(path.join(destPluginCommands, kimiCommandFilename(category, fileBase)), pluginCmd);
|
|
149
|
+
commandCount++;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Tier 2: hook gate bridge script.
|
|
153
|
+
const hooksDir = path.join(pluginDir, 'hooks');
|
|
154
|
+
const gatePath = path.join(hooksDir, 'monomind-gate.mjs');
|
|
155
|
+
if (!fs.existsSync(gatePath) || options.force) {
|
|
156
|
+
fs.mkdirSync(hooksDir, { recursive: true });
|
|
157
|
+
atomicWriteFile(gatePath, generateKimiGateScript());
|
|
158
|
+
result.created.files.push('.kimi-code/plugin/hooks/monomind-gate.mjs');
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
result.skipped.push('.kimi-code/plugin/hooks/monomind-gate.mjs');
|
|
162
|
+
}
|
|
163
|
+
// Tier 3: plugin manifest.
|
|
164
|
+
const manifestPath = path.join(pluginDir, 'kimi.plugin.json');
|
|
165
|
+
if (!fs.existsSync(manifestPath) || options.force) {
|
|
166
|
+
fs.mkdirSync(pluginDir, { recursive: true });
|
|
167
|
+
atomicWriteFile(manifestPath, generateKimiPluginManifest(options));
|
|
168
|
+
result.created.files.push('.kimi-code/plugin/kimi.plugin.json');
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
result.skipped.push('.kimi-code/plugin/kimi.plugin.json');
|
|
172
|
+
}
|
|
173
|
+
if (agentCount)
|
|
174
|
+
result.created.files.push(`.kimi-code/agents/ (${agentCount} agents)`);
|
|
175
|
+
if (skillCount)
|
|
176
|
+
result.created.files.push(`.kimi-code/skills/ (${skillCount} skills)`);
|
|
177
|
+
if (commandCount)
|
|
178
|
+
result.created.files.push(`.kimi-code/plugin/commands/ (${commandCount} commands)`);
|
|
179
|
+
// Statusline — the footer under kimi's chatbox. Lives in the USER's
|
|
180
|
+
// ~/.kimi-code/ (kimi has no project-level statusline config), gated on
|
|
181
|
+
// that directory already existing (i.e. the user actually runs kimi —
|
|
182
|
+
// init must not create global state for non-kimi users). The tui.toml
|
|
183
|
+
// merge never clobbers an existing [status_line].command.
|
|
184
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
185
|
+
if (homeDir) {
|
|
186
|
+
const kimiHome = path.join(homeDir, '.kimi-code');
|
|
187
|
+
if (fs.existsSync(kimiHome)) {
|
|
188
|
+
try {
|
|
189
|
+
const statuslineShPath = path.join(kimiHome, 'statusline.sh');
|
|
190
|
+
if (!fs.existsSync(statuslineShPath) || options.force) {
|
|
191
|
+
atomicWriteFile(statuslineShPath, generateKimiStatuslineSh());
|
|
192
|
+
try {
|
|
193
|
+
fs.chmodSync(statuslineShPath, 0o755);
|
|
194
|
+
}
|
|
195
|
+
catch { /* ignore on Windows */ }
|
|
196
|
+
result.created.files.push('~/.kimi-code/statusline.sh');
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
result.skipped.push('~/.kimi-code/statusline.sh');
|
|
200
|
+
}
|
|
201
|
+
const tuiTomlPath = path.join(kimiHome, 'tui.toml');
|
|
202
|
+
const relCommand = '~/.kimi-code/statusline.sh';
|
|
203
|
+
const existingToml = fs.existsSync(tuiTomlPath) ? fs.readFileSync(tuiTomlPath, 'utf-8') : '';
|
|
204
|
+
const mergedToml = mergeKimiTuiTomlStatusline(existingToml, relCommand);
|
|
205
|
+
if (mergedToml !== existingToml) {
|
|
206
|
+
atomicWriteFile(tuiTomlPath, mergedToml);
|
|
207
|
+
result.created.files.push('~/.kimi-code/tui.toml ([status_line].command wired)');
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
result.skipped.push('~/.kimi-code/tui.toml (status_line.command already set)');
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (e) {
|
|
214
|
+
// Best-effort, like the agy global settings — a statusline failure
|
|
215
|
+
// must never fail init.
|
|
216
|
+
if (process.env.DEBUG || process.env.MONOMIND_DEBUG) {
|
|
217
|
+
console.error('[writeKimiFiles] failed to wire kimi statusline:', e);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=write-kimicode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-kimicode.js","sourceRoot":"","sources":["../../../src/init/write-kimicode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opencode artifact writers.
|
|
3
|
+
*/
|
|
4
|
+
import type { InitOptions, InitResult } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Write opencode artifacts. ADDITIVE — only invoked when
|
|
7
|
+
* `components.opencode` is set. Never touches .claude/ or .gemini/.
|
|
8
|
+
*
|
|
9
|
+
* Tier 1: opencode.json (MCP server + permissions + instructions).
|
|
10
|
+
* Tier 2 (added next): AGENTS.md + .opencode/{agent,command,skills}/ converted
|
|
11
|
+
* from the Claude tree.
|
|
12
|
+
*/
|
|
13
|
+
export declare function writeOpencodeFiles(targetDir: string, options: InitOptions, result: InitResult): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=write-opencode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-opencode.d.ts","sourceRoot":"","sources":["../../../src/init/write-opencode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS1D;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Gf"}
|