atabey 0.0.6 → 0.0.8
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/ATABEY.md +4 -4
- package/README.md +35 -33
- package/bin/cli.js +2 -2
- package/bin/validate-agent-army.js +6 -6
- package/dist/framework-mcp/src/constants.js +1 -1
- package/dist/framework-mcp/src/constants.js.map +1 -1
- package/dist/framework-mcp/src/index.js +29 -5
- package/dist/framework-mcp/src/index.js.map +1 -1
- package/dist/framework-mcp/src/resources/index.d.ts +10 -0
- package/dist/framework-mcp/src/resources/index.js +59 -0
- package/dist/framework-mcp/src/resources/index.js.map +1 -0
- package/dist/framework-mcp/src/tools/control_plane/locking.js +3 -3
- package/dist/framework-mcp/src/tools/control_plane/locking.js.map +1 -1
- package/dist/framework-mcp/src/tools/control_plane/registry.js +3 -2
- package/dist/framework-mcp/src/tools/control_plane/registry.js.map +1 -1
- package/dist/framework-mcp/src/tools/definitions.js +33 -1
- package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.d.ts +1 -1
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +8 -3
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/patch_file.d.ts +1 -1
- package/dist/framework-mcp/src/tools/file_system/patch_file.js +8 -3
- package/dist/framework-mcp/src/tools/file_system/patch_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/read_file.js +3 -3
- package/dist/framework-mcp/src/tools/file_system/read_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/replace_text.d.ts +1 -1
- package/dist/framework-mcp/src/tools/file_system/replace_text.js +8 -3
- package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +1 -1
- package/dist/framework-mcp/src/tools/file_system/write_file.js +10 -5
- package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/audit_deps.js +2 -2
- package/dist/framework-mcp/src/tools/framework/audit_deps.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/run_tests.js +2 -2
- package/dist/framework-mcp/src/tools/framework/run_tests.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/submit_plan.d.ts +10 -0
- package/dist/framework-mcp/src/tools/framework/submit_plan.js +14 -0
- package/dist/framework-mcp/src/tools/framework/submit_plan.js.map +1 -0
- package/dist/framework-mcp/src/tools/framework/update_memory.js +1 -1
- package/dist/framework-mcp/src/tools/framework/update_memory.js.map +1 -1
- package/dist/framework-mcp/src/tools/index.js +2 -0
- package/dist/framework-mcp/src/tools/index.js.map +1 -1
- package/dist/framework-mcp/src/tools/memory/get_insights.js +1 -1
- package/dist/framework-mcp/src/tools/memory/get_insights.js.map +1 -1
- package/dist/framework-mcp/src/tools/messaging/log_action.js +1 -1
- package/dist/framework-mcp/src/tools/messaging/log_action.js.map +1 -1
- package/dist/framework-mcp/src/tools/messaging/send_message.js +5 -5
- package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -1
- package/dist/framework-mcp/src/tools/observability/check_ports.js +1 -1
- package/dist/framework-mcp/src/tools/observability/check_ports.js.map +1 -1
- package/dist/framework-mcp/src/tools/quality/check_lint.js +2 -2
- package/dist/framework-mcp/src/tools/quality/check_lint.js.map +1 -1
- package/dist/framework-mcp/src/tools/search/get_gaps.js +1 -1
- package/dist/framework-mcp/src/tools/search/get_gaps.js.map +1 -1
- package/dist/framework-mcp/src/tools/search/grep_search.js +3 -3
- package/dist/framework-mcp/src/tools/search/grep_search.js.map +1 -1
- package/dist/framework-mcp/src/tools/types.d.ts +1 -0
- package/dist/framework-mcp/src/utils/compliance.d.ts +6 -0
- package/dist/framework-mcp/src/utils/compliance.js +158 -5
- package/dist/framework-mcp/src/utils/compliance.js.map +1 -1
- package/dist/framework-mcp/src/utils/permissions.d.ts +12 -0
- package/dist/framework-mcp/src/utils/permissions.js +72 -0
- package/dist/framework-mcp/src/utils/permissions.js.map +1 -0
- package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.d.ts +1 -0
- package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.js +84 -0
- package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.js.map +1 -0
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +31 -31
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +1 -1
- package/dist/framework-mcp/tests/tools/file_system/permissions.test.d.ts +1 -0
- package/dist/framework-mcp/tests/tools/file_system/permissions.test.js +92 -0
- package/dist/framework-mcp/tests/tools/file_system/permissions.test.js.map +1 -0
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +5 -5
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +1 -1
- package/dist/src/cli/adapters/core.js +13 -20
- package/dist/src/cli/adapters/core.js.map +1 -1
- package/dist/src/cli/adapters/scaffold.js +2 -2
- package/dist/src/cli/adapters/scaffold.js.map +1 -1
- package/dist/src/cli/commands/check.js +5 -3
- package/dist/src/cli/commands/check.js.map +1 -1
- package/dist/src/cli/commands/compliance.js +2 -2
- package/dist/src/cli/commands/compliance.js.map +1 -1
- package/dist/src/cli/commands/contract.js +2 -2
- package/dist/src/cli/commands/contract.js.map +1 -1
- package/dist/src/cli/commands/dashboard.d.ts +5 -0
- package/dist/src/cli/commands/dashboard.js +124 -0
- package/dist/src/cli/commands/dashboard.js.map +1 -0
- package/dist/src/cli/commands/explorer.js +3 -3
- package/dist/src/cli/commands/explorer.js.map +1 -1
- package/dist/src/cli/commands/git.js +3 -3
- package/dist/src/cli/commands/git.js.map +1 -1
- package/dist/src/cli/commands/init/create-agent.d.ts +4 -0
- package/dist/src/cli/commands/init/create-agent.js +59 -0
- package/dist/src/cli/commands/init/create-agent.js.map +1 -0
- package/dist/src/cli/commands/init/scaffold-core.d.ts +1 -0
- package/dist/src/cli/commands/init/scaffold-core.js +11 -7
- package/dist/src/cli/commands/init/scaffold-core.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-docs.d.ts +1 -0
- package/dist/src/cli/commands/init/scaffold-docs.js +4 -6
- package/dist/src/cli/commands/init/scaffold-docs.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-ops.js +4 -4
- package/dist/src/cli/commands/init/scaffold-ops.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-standards.js +10 -8
- package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -1
- package/dist/src/cli/commands/init.js +26 -10
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/knowledge.js +3 -3
- package/dist/src/cli/commands/knowledge.js.map +1 -1
- package/dist/src/cli/commands/lint.js +2 -2
- package/dist/src/cli/commands/lint.js.map +1 -1
- package/dist/src/cli/commands/log.js +6 -28
- package/dist/src/cli/commands/log.js.map +1 -1
- package/dist/src/cli/commands/orchestrate.d.ts +10 -17
- package/dist/src/cli/commands/orchestrate.js +92 -341
- package/dist/src/cli/commands/orchestrate.js.map +1 -1
- package/dist/src/cli/commands/plan.d.ts +5 -0
- package/dist/src/cli/commands/plan.js +80 -59
- package/dist/src/cli/commands/plan.js.map +1 -1
- package/dist/src/cli/commands/script.js +3 -3
- package/dist/src/cli/commands/script.js.map +1 -1
- package/dist/src/cli/commands/security.js +2 -2
- package/dist/src/cli/commands/security.js.map +1 -1
- package/dist/src/cli/commands/status.js +65 -8
- package/dist/src/cli/commands/status.js.map +1 -1
- package/dist/src/cli/commands/trace.d.ts +4 -0
- package/dist/src/cli/commands/trace.js +83 -2
- package/dist/src/cli/commands/trace.js.map +1 -1
- package/dist/src/cli/index.js +68 -18
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/shims.js +14 -14
- package/dist/src/cli/utils/claude.js +1 -1
- package/dist/src/cli/utils/claude.js.map +1 -1
- package/dist/src/cli/utils/compliance.js +7 -1
- package/dist/src/cli/utils/compliance.js.map +1 -1
- package/dist/src/cli/utils/fs.js +1 -1
- package/dist/src/cli/utils/fs.js.map +1 -1
- package/dist/src/cli/utils/i18n.d.ts +1 -0
- package/dist/src/cli/utils/i18n.js +2 -0
- package/dist/src/cli/utils/i18n.js.map +1 -1
- package/dist/src/cli/utils/memory.d.ts +12 -3
- package/dist/src/cli/utils/memory.js +39 -31
- package/dist/src/cli/utils/memory.js.map +1 -1
- package/dist/src/cli/utils/pkg.js +2 -2
- package/dist/src/cli/utils/pkg.js.map +1 -1
- package/dist/src/cli/utils/schemas.d.ts +8 -8
- package/dist/src/cli/utils/ui.js +4 -4
- package/dist/src/cli/utils/ui.js.map +1 -1
- package/dist/src/contracts/tasks.d.ts +2 -2
- package/dist/src/dashboard/vite.config.d.ts +2 -0
- package/dist/src/dashboard/vite.config.js +16 -0
- package/dist/src/dashboard/vite.config.js.map +1 -0
- package/dist/src/modules/adapters/definitions.js +10 -10
- package/dist/src/modules/adapters/definitions.js.map +1 -1
- package/dist/src/modules/adapters/shared.js +4 -4
- package/dist/src/modules/adapters/shared.js.map +1 -1
- package/dist/src/modules/agents/definitions.d.ts +19 -0
- package/dist/src/modules/agents/definitions.js +74 -21
- package/dist/src/modules/agents/definitions.js.map +1 -1
- package/dist/src/modules/agents/registry/backend.js +8 -0
- package/dist/src/modules/agents/registry/backend.js.map +1 -1
- package/dist/src/modules/agents/registry/database.js +7 -0
- package/dist/src/modules/agents/registry/database.js.map +1 -1
- package/dist/src/modules/agents/registry/devops.js +6 -0
- package/dist/src/modules/agents/registry/devops.js.map +1 -1
- package/dist/src/modules/agents/registry/frontend.js +8 -0
- package/dist/src/modules/agents/registry/frontend.js.map +1 -1
- package/dist/src/modules/agents/registry/security.js +6 -0
- package/dist/src/modules/agents/registry/security.js.map +1 -1
- package/dist/src/modules/agents/types.d.ts +2 -0
- package/dist/src/modules/engines/evaluation-engine.d.ts +11 -0
- package/dist/src/modules/engines/evaluation-engine.js +103 -0
- package/dist/src/modules/engines/evaluation-engine.js.map +1 -0
- package/dist/src/modules/engines/health-engine.d.ts +16 -0
- package/dist/src/modules/engines/health-engine.js +50 -0
- package/dist/src/modules/engines/health-engine.js.map +1 -0
- package/dist/src/modules/engines/planning-engine.d.ts +25 -0
- package/dist/src/modules/engines/planning-engine.js +79 -0
- package/dist/src/modules/engines/planning-engine.js.map +1 -0
- package/dist/src/modules/engines/risk-engine.d.ts +18 -0
- package/dist/src/modules/engines/risk-engine.js +106 -0
- package/dist/src/modules/engines/risk-engine.js.map +1 -0
- package/dist/src/modules/engines/routing-engine.d.ts +11 -0
- package/dist/src/modules/engines/routing-engine.js +74 -0
- package/dist/src/modules/engines/routing-engine.js.map +1 -0
- package/dist/src/modules/engines/types.d.ts +47 -0
- package/dist/src/modules/engines/types.js +2 -0
- package/dist/src/modules/engines/types.js.map +1 -0
- package/dist/src/shared/constants.d.ts +6 -2
- package/dist/src/shared/constants.js +5 -1
- package/dist/src/shared/constants.js.map +1 -1
- package/dist/src/shared/fs.d.ts +1 -0
- package/dist/src/shared/fs.js +4 -0
- package/dist/src/shared/fs.js.map +1 -1
- package/dist/src/shared/storage.d.ts +60 -0
- package/dist/src/shared/storage.js +208 -0
- package/dist/src/shared/storage.js.map +1 -0
- package/dist/tests/adapter.test.js +3 -2
- package/dist/tests/adapter.test.js.map +1 -1
- package/dist/tests/agent-memory-v2.test.d.ts +1 -0
- package/dist/tests/agent-memory-v2.test.js +68 -0
- package/dist/tests/agent-memory-v2.test.js.map +1 -0
- package/dist/tests/agents-definitions.test.js +42 -0
- package/dist/tests/agents-definitions.test.js.map +1 -1
- package/dist/tests/integration/hermes_locking.test.js +7 -10
- package/dist/tests/integration/hermes_locking.test.js.map +1 -1
- package/dist/tests/orchestrate.test.js +5 -1
- package/dist/tests/orchestrate.test.js.map +1 -1
- package/dist/tests/orchestrator-dependencies.test.d.ts +1 -0
- package/dist/tests/orchestrator-dependencies.test.js +52 -0
- package/dist/tests/orchestrator-dependencies.test.js.map +1 -0
- package/dist/tests/plan.test.d.ts +1 -0
- package/dist/tests/plan.test.js +63 -0
- package/dist/tests/plan.test.js.map +1 -0
- package/dist/tests/planning-engine.test.d.ts +1 -0
- package/dist/tests/planning-engine.test.js +50 -0
- package/dist/tests/planning-engine.test.js.map +1 -0
- package/dist/tests/status-cost.test.d.ts +1 -0
- package/dist/tests/status-cost.test.js +54 -0
- package/dist/tests/status-cost.test.js.map +1 -0
- package/dist/tests/status.test.js +8 -7
- package/dist/tests/status.test.js.map +1 -1
- package/dist/tests/trace-replay.test.d.ts +1 -0
- package/dist/tests/trace-replay.test.js +65 -0
- package/dist/tests/trace-replay.test.js.map +1 -0
- package/dist/tests/trace.test.js +14 -7
- package/dist/tests/trace.test.js.map +1 -1
- package/dist/ui/assets/index-Bkt7APzu.css +1 -0
- package/dist/ui/assets/index-CeX-06mI.js +49 -0
- package/dist/ui/index.html +14 -0
- package/framework-mcp/dist/constants.js +1 -1
- package/framework-mcp/{src/constants.ts → dist/framework-mcp/src/constants.js} +4 -18
- package/framework-mcp/{src/index.ts → dist/framework-mcp/src/index.js} +52 -53
- package/framework-mcp/dist/framework-mcp/src/resources/index.js +58 -0
- package/framework-mcp/{src/tools/control_plane/locking.ts → dist/framework-mcp/src/tools/control_plane/locking.js} +14 -21
- package/framework-mcp/{src/tools/control_plane/registry.ts → dist/framework-mcp/src/tools/control_plane/registry.js} +8 -11
- package/framework-mcp/{src/tools/definitions.ts → dist/framework-mcp/src/tools/definitions.js} +35 -5
- package/framework-mcp/{src/tools/file_system/batch_surgical_edit.ts → dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js} +16 -31
- package/framework-mcp/{src/tools/file_system/patch_file.ts → dist/framework-mcp/src/tools/file_system/patch_file.js} +9 -14
- package/framework-mcp/{src/tools/file_system/read_file.ts → dist/framework-mcp/src/tools/file_system/read_file.js} +9 -16
- package/framework-mcp/{src/tools/file_system/replace_text.ts → dist/framework-mcp/src/tools/file_system/replace_text.js} +13 -17
- package/framework-mcp/{src/tools/file_system/write_file.ts → dist/framework-mcp/src/tools/file_system/write_file.js} +14 -16
- package/framework-mcp/{src/tools/framework/audit_deps.ts → dist/framework-mcp/src/tools/framework/audit_deps.js} +9 -17
- package/framework-mcp/{src/tools/framework/get_status.ts → dist/framework-mcp/src/tools/framework/get_status.js} +1 -3
- package/framework-mcp/{src/tools/framework/orchestrate.ts → dist/framework-mcp/src/tools/framework/orchestrate.js} +1 -3
- package/framework-mcp/{src/tools/framework/run_tests.ts → dist/framework-mcp/src/tools/framework/run_tests.js} +9 -12
- package/framework-mcp/dist/framework-mcp/src/tools/framework/submit_plan.js +13 -0
- package/framework-mcp/{src/tools/framework/update_contract_hash.ts → dist/framework-mcp/src/tools/framework/update_contract_hash.js} +1 -3
- package/framework-mcp/{src/tools/framework/update_memory.ts → dist/framework-mcp/src/tools/framework/update_memory.js} +2 -4
- package/framework-mcp/{src/tools/index.ts → dist/framework-mcp/src/tools/index.js} +5 -7
- package/framework-mcp/{src/tools/memory/get_insights.ts → dist/framework-mcp/src/tools/memory/get_insights.js} +4 -11
- package/framework-mcp/{src/tools/memory/read_memory.ts → dist/framework-mcp/src/tools/memory/read_memory.js} +3 -6
- package/framework-mcp/{src/tools/messaging/log_action.ts → dist/framework-mcp/src/tools/messaging/log_action.js} +2 -8
- package/framework-mcp/{src/tools/messaging/send_message.ts → dist/framework-mcp/src/tools/messaging/send_message.js} +19 -22
- package/framework-mcp/{src/tools/observability/check_ports.ts → dist/framework-mcp/src/tools/observability/check_ports.js} +6 -10
- package/framework-mcp/{src/tools/observability/get_health.ts → dist/framework-mcp/src/tools/observability/get_health.js} +1 -6
- package/framework-mcp/{src/tools/quality/check_lint.ts → dist/framework-mcp/src/tools/quality/check_lint.js} +3 -9
- package/framework-mcp/{src/tools/search/get_gaps.ts → dist/framework-mcp/src/tools/search/get_gaps.js} +12 -18
- package/framework-mcp/{src/tools/search/get_map.ts → dist/framework-mcp/src/tools/search/get_map.js} +14 -19
- package/framework-mcp/{src/tools/search/grep_search.ts → dist/framework-mcp/src/tools/search/grep_search.js} +26 -26
- package/framework-mcp/{src/tools/search/list_dir.ts → dist/framework-mcp/src/tools/search/list_dir.js} +4 -10
- package/framework-mcp/{src/tools/shell/run_command.ts → dist/framework-mcp/src/tools/shell/run_command.js} +1 -11
- package/framework-mcp/dist/framework-mcp/src/tools/types.js +1 -0
- package/framework-mcp/{src/utils/cli.ts → dist/framework-mcp/src/utils/cli.js} +25 -19
- package/framework-mcp/dist/framework-mcp/src/utils/compliance.js +231 -0
- package/framework-mcp/{src/utils/fs.ts → dist/framework-mcp/src/utils/fs.js} +9 -10
- package/framework-mcp/{src/utils/metrics.ts → dist/framework-mcp/src/utils/metrics.js} +11 -28
- package/framework-mcp/dist/framework-mcp/src/utils/permissions.js +71 -0
- package/framework-mcp/{src/utils/security.ts → dist/framework-mcp/src/utils/security.js} +9 -15
- package/framework-mcp/dist/index.js +29 -5
- package/framework-mcp/dist/resources/index.js +58 -0
- package/{src/cli/adapters/core.ts → framework-mcp/dist/src/cli/adapters/core.js} +21 -41
- package/{src/cli/adapters/index.ts → framework-mcp/dist/src/cli/adapters/index.js} +1 -1
- package/{src/cli/adapters/paths.ts → framework-mcp/dist/src/cli/adapters/paths.js} +19 -53
- package/{src/cli/adapters/scaffold.ts → framework-mcp/dist/src/cli/adapters/scaffold.js} +18 -42
- package/{src/cli/adapters/utils.ts → framework-mcp/dist/src/cli/adapters/utils.js} +19 -31
- package/{src/cli/commands/approve.ts → framework-mcp/dist/src/cli/commands/approve.js} +15 -25
- package/{src/cli/commands/check.ts → framework-mcp/dist/src/cli/commands/check.js} +36 -43
- package/{src/cli/commands/compliance.ts → framework-mcp/dist/src/cli/commands/compliance.js} +10 -15
- package/{src/cli/commands/contract.ts → framework-mcp/dist/src/cli/commands/contract.js} +13 -31
- package/framework-mcp/dist/src/cli/commands/dashboard.js +123 -0
- package/{src/cli/commands/explorer.ts → framework-mcp/dist/src/cli/commands/explorer.js} +14 -17
- package/{src/cli/commands/git.ts → framework-mcp/dist/src/cli/commands/git.js} +15 -14
- package/framework-mcp/dist/src/cli/commands/init/create-agent.js +58 -0
- package/{src/cli/commands/init/scaffold-core.ts → framework-mcp/dist/src/cli/commands/init/scaffold-core.js} +35 -59
- package/framework-mcp/dist/src/cli/commands/init/scaffold-docs.js +34 -0
- package/{src/cli/commands/init/scaffold-ops.ts → framework-mcp/dist/src/cli/commands/init/scaffold-ops.js} +19 -22
- package/{src/cli/commands/init/scaffold-standards.ts → framework-mcp/dist/src/cli/commands/init/scaffold-standards.js} +20 -20
- package/{src/cli/commands/init.ts → framework-mcp/dist/src/cli/commands/init.js} +51 -77
- package/{src/cli/commands/knowledge.ts → framework-mcp/dist/src/cli/commands/knowledge.js} +9 -11
- package/{src/cli/commands/lint.ts → framework-mcp/dist/src/cli/commands/lint.js} +5 -6
- package/framework-mcp/dist/src/cli/commands/log.js +10 -0
- package/{src/cli/commands/memory.ts → framework-mcp/dist/src/cli/commands/memory.js} +1 -3
- package/framework-mcp/dist/src/cli/commands/orchestrate.js +159 -0
- package/framework-mcp/dist/src/cli/commands/plan.js +117 -0
- package/{src/cli/commands/script.ts → framework-mcp/dist/src/cli/commands/script.js} +6 -7
- package/{src/cli/commands/security.ts → framework-mcp/dist/src/cli/commands/security.js} +6 -8
- package/framework-mcp/dist/src/cli/commands/status.js +97 -0
- package/framework-mcp/dist/src/cli/commands/trace.js +109 -0
- package/{src/cli/index.ts → framework-mcp/dist/src/cli/index.js} +80 -64
- package/{src/cli/shims.ts → framework-mcp/dist/src/cli/shims.js} +15 -15
- package/{src/cli/utils/claude.ts → framework-mcp/dist/src/cli/utils/claude.js} +8 -15
- package/{src/cli/utils/compliance.ts → framework-mcp/dist/src/cli/utils/compliance.js} +18 -36
- package/{src/cli/utils/config-schema.ts → framework-mcp/dist/src/cli/utils/config-schema.js} +0 -6
- package/{src/cli/utils/fs.ts → framework-mcp/dist/src/cli/utils/fs.js} +34 -67
- package/{src/cli/utils/i18n.ts → framework-mcp/dist/src/cli/utils/i18n.js} +3 -17
- package/{src/cli/utils/memory.ts → framework-mcp/dist/src/cli/utils/memory.js} +87 -114
- package/{src/cli/utils/pkg.ts → framework-mcp/dist/src/cli/utils/pkg.js} +120 -155
- package/{src/cli/utils/schemas.ts → framework-mcp/dist/src/cli/utils/schemas.js} +0 -3
- package/{src/cli/utils/string.ts → framework-mcp/dist/src/cli/utils/string.js} +18 -24
- package/{src/cli/utils/time.ts → framework-mcp/dist/src/cli/utils/time.js} +4 -4
- package/{src/cli/utils/ui.ts → framework-mcp/dist/src/cli/utils/ui.js} +9 -17
- package/{src/contracts/tasks.ts → framework-mcp/dist/src/contracts/tasks.js} +0 -6
- package/framework-mcp/dist/src/dashboard/vite.config.js +15 -0
- package/framework-mcp/dist/src/modules/adapters/definitions.js +140 -0
- package/framework-mcp/dist/src/modules/adapters/registry.js +18 -0
- package/{src/modules/adapters/shared.ts → framework-mcp/dist/src/modules/adapters/shared.js} +9 -25
- package/framework-mcp/dist/src/modules/adapters/types.js +1 -0
- package/{src/modules/agents/definitions.ts → framework-mcp/dist/src/modules/agents/definitions.js} +158 -161
- package/{src/modules/agents/registry/analyst.ts → framework-mcp/dist/src/modules/agents/registry/analyst.js} +9 -14
- package/{src/modules/agents/registry/architect.ts → framework-mcp/dist/src/modules/agents/registry/architect.js} +9 -14
- package/{src/modules/agents/registry/backend.ts → framework-mcp/dist/src/modules/agents/registry/backend.js} +16 -13
- package/{src/modules/agents/registry/database.ts → framework-mcp/dist/src/modules/agents/registry/database.js} +16 -14
- package/{src/modules/agents/registry/devops.ts → framework-mcp/dist/src/modules/agents/registry/devops.js} +15 -14
- package/{src/modules/agents/registry/explorer.ts → framework-mcp/dist/src/modules/agents/registry/explorer.js} +9 -14
- package/{src/modules/agents/registry/frontend.ts → framework-mcp/dist/src/modules/agents/registry/frontend.js} +17 -14
- package/{src/modules/agents/registry/git.ts → framework-mcp/dist/src/modules/agents/registry/git.js} +9 -14
- package/{src/modules/agents/registry/manager.ts → framework-mcp/dist/src/modules/agents/registry/manager.js} +10 -15
- package/{src/modules/agents/registry/mobile.ts → framework-mcp/dist/src/modules/agents/registry/mobile.js} +9 -14
- package/{src/modules/agents/registry/native.ts → framework-mcp/dist/src/modules/agents/registry/native.js} +9 -14
- package/{src/modules/agents/registry/quality.ts → framework-mcp/dist/src/modules/agents/registry/quality.js} +9 -14
- package/{src/modules/agents/registry/security.ts → framework-mcp/dist/src/modules/agents/registry/security.js} +15 -14
- package/framework-mcp/dist/src/modules/agents/types.js +1 -0
- package/framework-mcp/dist/src/modules/engines/evaluation-engine.js +102 -0
- package/framework-mcp/dist/src/modules/engines/health-engine.js +49 -0
- package/framework-mcp/dist/src/modules/engines/planning-engine.js +78 -0
- package/framework-mcp/dist/src/modules/engines/risk-engine.js +105 -0
- package/framework-mcp/dist/src/modules/engines/routing-engine.js +73 -0
- package/framework-mcp/dist/src/modules/engines/types.js +1 -0
- package/{src/modules/skills/definitions.ts → framework-mcp/dist/src/modules/skills/definitions.js} +0 -1
- package/{src/shared/constants.ts → framework-mcp/dist/src/shared/constants.js} +40 -71
- package/{src/shared/errors.ts → framework-mcp/dist/src/shared/errors.js} +10 -17
- package/{src/shared/fs.ts → framework-mcp/dist/src/shared/fs.js} +14 -13
- package/{src/shared/logger.ts → framework-mcp/dist/src/shared/logger.js} +28 -51
- package/framework-mcp/dist/src/shared/storage.js +207 -0
- package/framework-mcp/dist/src/shared/types.js +12 -0
- package/framework-mcp/dist/tools/control_plane/locking.js +3 -3
- package/framework-mcp/dist/tools/control_plane/registry.js +3 -2
- package/framework-mcp/dist/tools/definitions.js +33 -1
- package/framework-mcp/dist/tools/file_system/batch_surgical_edit.js +8 -3
- package/framework-mcp/dist/tools/file_system/patch_file.js +8 -3
- package/framework-mcp/dist/tools/file_system/read_file.js +3 -3
- package/framework-mcp/dist/tools/file_system/replace_text.js +8 -3
- package/framework-mcp/dist/tools/file_system/write_file.js +10 -5
- package/framework-mcp/dist/tools/framework/audit_deps.js +2 -2
- package/framework-mcp/dist/tools/framework/run_tests.js +2 -2
- package/framework-mcp/dist/tools/framework/submit_plan.js +13 -0
- package/framework-mcp/dist/tools/framework/update_memory.js +1 -1
- package/framework-mcp/dist/tools/index.js +2 -0
- package/framework-mcp/dist/tools/memory/get_insights.js +1 -1
- package/framework-mcp/dist/tools/messaging/log_action.js +1 -1
- package/framework-mcp/dist/tools/messaging/send_message.js +5 -5
- package/framework-mcp/dist/tools/observability/check_ports.js +1 -1
- package/framework-mcp/dist/tools/quality/check_lint.js +2 -2
- package/framework-mcp/dist/tools/search/get_gaps.js +1 -1
- package/framework-mcp/dist/tools/search/grep_search.js +3 -3
- package/framework-mcp/dist/utils/compliance.js +158 -5
- package/framework-mcp/dist/utils/permissions.js +71 -0
- package/framework-mcp/package.json +7 -1
- package/mcp.json +1 -1
- package/package.json +10 -6
- package/templates/prompts/contract-design-recipe.md +1 -1
- package/templates/prompts/db-management-recipe.md +3 -3
- package/templates/prompts/deployment-recipe.md +3 -3
- package/templates/prompts/performance-optimization-recipe.md +3 -3
- package/templates/prompts/pull-request-template.md +2 -2
- package/templates/prompts/security-audit-recipe.md +3 -3
- package/templates/standards/crud-governance.md +1 -1
- package/templates/standards/deployment-standards.md +1 -1
- package/templates/standards/governance-standards.md +1 -1
- package/templates/standards/llm-governance.md +1 -1
- package/templates/standards/nextjs-standards.md +13 -0
- package/templates/standards/observability-standards.md +1 -1
- package/templates/standards/security-audit-standards.md +1 -1
- package/templates/standards/security-standards.md +1 -1
- package/templates/standards/testing-standards.md +1 -1
- package/templates/standards/vite-standards.md +13 -0
- package/framework-mcp/package-lock.json +0 -1191
- package/framework-mcp/src/declarations.d.ts +0 -17
- package/framework-mcp/src/tools/types.ts +0 -89
- package/framework-mcp/src/utils/compliance.ts +0 -95
- package/framework-mcp/tests/tools/file_system/file_system_tools.test.ts +0 -212
- package/framework-mcp/tests/tools/messaging/send_message.test.ts +0 -136
- package/framework-mcp/tests/tools/quality/check_lint.test.ts +0 -46
- package/framework-mcp/tests/tools/shell/run_command.test.ts +0 -55
- package/framework-mcp/tsconfig.json +0 -14
- package/src/cli/commands/init/scaffold-docs.ts +0 -44
- package/src/cli/commands/log.ts +0 -37
- package/src/cli/commands/orchestrate.ts +0 -450
- package/src/cli/commands/plan.ts +0 -113
- package/src/cli/commands/status.ts +0 -44
- package/src/cli/commands/trace.ts +0 -31
- package/src/modules/adapters/definitions.ts +0 -171
- package/src/modules/adapters/registry.ts +0 -27
- package/src/modules/adapters/types.ts +0 -16
- package/src/modules/agents/types.ts +0 -37
- package/src/schema/agent-lifecycle-schema.json +0 -59
- package/src/shared/types.ts +0 -20
- /package/{src/contracts/index.ts → framework-mcp/dist/src/contracts/index.js} +0 -0
|
@@ -1,30 +1,22 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
|
-
import {
|
|
4
|
-
remapFrameworkContent,
|
|
5
|
-
type AdapterConfig,
|
|
6
|
-
type AdapterId,
|
|
7
|
-
ADAPTERS
|
|
8
|
-
} from "../../adapters/index.js";
|
|
3
|
+
import { remapFrameworkContent, ADAPTERS } from "../../adapters/index.js";
|
|
9
4
|
import { SHIM_TEMPLATES } from "../../shims.js";
|
|
10
5
|
import { writeJsonFile, writeTextFile } from "../../utils/fs.js";
|
|
11
6
|
import { getPackageRoot, getPackageVersion } from "../../utils/pkg.js";
|
|
12
7
|
import { ALL_AGENTS } from "../../../modules/agents/definitions.js";
|
|
13
|
-
|
|
14
|
-
import { TRANSLATIONS, type SupportedLanguage } from "../../utils/i18n.js";
|
|
15
|
-
|
|
8
|
+
import { TRANSLATIONS } from "../../utils/i18n.js";
|
|
16
9
|
const FRAMEWORK_NAME = "Agent Atabey";
|
|
17
|
-
|
|
18
10
|
const COLOR_PALETTES = {
|
|
19
11
|
"Modern Blue": { primary: "#0ea5e9", secondary: "#64748b", accent: "#f43f5e" },
|
|
20
12
|
"Enterprise Slate": { primary: "#334155", secondary: "#94a3b8", accent: "#10b981" },
|
|
21
13
|
"Deep Purple": { primary: "#8b5cf6", secondary: "#d8b4fe", accent: "#f59e0b" }
|
|
22
14
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
export function scaffoldConstitution(targetDir, frameworkDir, adapterId, dryRun, language = "tr") {
|
|
16
|
+
if (dryRun)
|
|
17
|
+
return;
|
|
26
18
|
const t = TRANSLATIONS[language];
|
|
27
|
-
let content = `#
|
|
19
|
+
let content = `# [ATABEY] ${t.constitution_title}\n\nDiscipline and Order.`;
|
|
28
20
|
let readSuccess = false;
|
|
29
21
|
try {
|
|
30
22
|
const templatePath = path.join(getPackageRoot(), "ATABEY.md");
|
|
@@ -32,36 +24,29 @@ export function scaffoldConstitution(targetDir: string, frameworkDir: string, ad
|
|
|
32
24
|
content = fs.readFileSync(templatePath, "utf8");
|
|
33
25
|
readSuccess = true;
|
|
34
26
|
}
|
|
35
|
-
}
|
|
36
|
-
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
console.warn(`[WARN] Failed to read global constitution template: ${e}`);
|
|
37
30
|
}
|
|
38
31
|
content = remapFrameworkContent(content, frameworkDir, adapterId);
|
|
39
32
|
const destPath = path.join(targetDir, frameworkDir, "ATABEY.md");
|
|
40
33
|
writeTextFile(destPath, content);
|
|
41
|
-
|
|
42
|
-
console.warn(`✅ Constitution file created inside: ${frameworkDir}/ATABEY.md${readSuccess ? "" : " (default template)"}`);
|
|
34
|
+
console.warn(`[OK] Constitution file created inside: ${frameworkDir}/ATABEY.md${readSuccess ? "" : " (default template)"}`);
|
|
43
35
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
fDir: string,
|
|
48
|
-
adapter: AdapterConfig,
|
|
49
|
-
dryRun: boolean,
|
|
50
|
-
selectedPalette: string,
|
|
51
|
-
options?: { unified?: boolean; adapters?: string[]; backendLanguage?: string; language?: SupportedLanguage }
|
|
52
|
-
) {
|
|
53
|
-
if (dryRun) return;
|
|
36
|
+
export function scaffoldFrameworkConfigs(targetDir, fDir, adapter, dryRun, selectedPalette, options) {
|
|
37
|
+
if (dryRun)
|
|
38
|
+
return;
|
|
54
39
|
const frameworkDir = path.join(targetDir, fDir);
|
|
55
|
-
const palette = COLOR_PALETTES[selectedPalette
|
|
40
|
+
const palette = COLOR_PALETTES[selectedPalette] || COLOR_PALETTES["Modern Blue"];
|
|
56
41
|
const language = options?.language || "tr";
|
|
57
42
|
const t = TRANSLATIONS[language];
|
|
58
|
-
|
|
59
43
|
const config = {
|
|
60
44
|
name: FRAMEWORK_NAME,
|
|
61
45
|
version: getPackageVersion(),
|
|
62
46
|
unified: options?.unified || false,
|
|
63
47
|
adapters: options?.adapters || [adapter.id],
|
|
64
48
|
backendLanguage: options?.backendLanguage || "Node.js (TypeScript)",
|
|
49
|
+
frontendFramework: options?.frontendFramework || "Vite (React)",
|
|
65
50
|
language: language,
|
|
66
51
|
theme: {
|
|
67
52
|
palette: selectedPalette,
|
|
@@ -69,67 +54,58 @@ export function scaffoldFrameworkConfigs(
|
|
|
69
54
|
}
|
|
70
55
|
};
|
|
71
56
|
writeJsonFile(path.join(frameworkDir, "config.json"), config, dryRun);
|
|
72
|
-
|
|
73
57
|
// Scaffold shared-facts.json in memory-graph
|
|
74
58
|
const graphDir = path.join(frameworkDir, "memory-graph");
|
|
75
|
-
if (!fs.existsSync(graphDir))
|
|
59
|
+
if (!fs.existsSync(graphDir))
|
|
60
|
+
fs.mkdirSync(graphDir, { recursive: true });
|
|
76
61
|
const sharedFactsPath = path.join(graphDir, "shared-facts.json");
|
|
77
62
|
if (!fs.existsSync(sharedFactsPath)) {
|
|
78
63
|
writeJsonFile(sharedFactsPath, {
|
|
79
64
|
project: FRAMEWORK_NAME,
|
|
80
65
|
initializedAt: new Date().toISOString(),
|
|
81
|
-
stack: [
|
|
66
|
+
stack: [
|
|
67
|
+
options?.backendLanguage || "Node.js (TypeScript)",
|
|
68
|
+
options?.frontendFramework || "Vite (React)"
|
|
69
|
+
],
|
|
82
70
|
language: language,
|
|
83
71
|
policies: []
|
|
84
72
|
}, dryRun);
|
|
85
73
|
}
|
|
86
|
-
|
|
87
|
-
let statusContent = `# 🎖️ ${t.status_title}\n\n| Agent | State | Active Task | Last Updated | Notes | Extra | Backup |\n|---|---|---|---|---|---|---|\n`;
|
|
88
|
-
|
|
74
|
+
let statusContent = `# [ATABEY] ${t.status_title}\n\n| Agent | State | Active Task | Last Updated | Notes | Extra | Backup |\n|---|---|---|---|---|---|---|\n`;
|
|
89
75
|
const activeAgents = ALL_AGENTS;
|
|
90
|
-
|
|
91
|
-
const initialStatusJson: Record<string, { state: string; task: string; lastUpdated: string }> = {};
|
|
76
|
+
const initialStatusJson = {};
|
|
92
77
|
const now = new Date().toISOString();
|
|
93
|
-
|
|
94
78
|
for (const ag of activeAgents) {
|
|
95
79
|
statusContent += "| @" + ag.name + " | " + t.agent_ready + " | Idle | - | - | - | - |\n";
|
|
96
80
|
initialStatusJson[ag.name] = { state: "READY", task: "Idle", lastUpdated: now };
|
|
97
81
|
}
|
|
98
82
|
writeTextFile(path.join(frameworkDir, "STATUS.md"), statusContent);
|
|
99
|
-
|
|
100
83
|
// Populate initial status.json
|
|
101
84
|
const statusJsonPath = path.join(frameworkDir, "memory", "status.json");
|
|
102
|
-
if (!fs.existsSync(path.join(frameworkDir, "memory")))
|
|
85
|
+
if (!fs.existsSync(path.join(frameworkDir, "memory")))
|
|
86
|
+
fs.mkdirSync(path.join(frameworkDir, "memory"), { recursive: true });
|
|
103
87
|
writeJsonFile(statusJsonPath, initialStatusJson, dryRun);
|
|
104
88
|
}
|
|
105
|
-
|
|
106
|
-
export function scaffoldShims(
|
|
107
|
-
projectRoot: string,
|
|
108
|
-
coreDir: string,
|
|
109
|
-
adapterId: AdapterId,
|
|
110
|
-
adapter: AdapterConfig,
|
|
111
|
-
dryRun: boolean,
|
|
112
|
-
unified: boolean = false
|
|
113
|
-
) {
|
|
89
|
+
export function scaffoldShims(projectRoot, coreDir, adapterId, adapter, dryRun, unified = false) {
|
|
114
90
|
for (const [name, content] of Object.entries(SHIM_TEMPLATES)) {
|
|
115
91
|
// Normalize: "antigravity-cli" template key needs exact match or prefix match
|
|
116
92
|
const isSelectedAdapter = name === adapterId ||
|
|
117
93
|
name.toLowerCase() === adapterId.split("-")[0].toLowerCase();
|
|
118
|
-
|
|
119
94
|
if (unified || isSelectedAdapter) {
|
|
120
95
|
const shimContent = remapFrameworkContent(content, coreDir, adapterId);
|
|
121
96
|
// In unified mode, each adapter writes its OWN shimFile name.
|
|
122
97
|
// In single-adapter mode, use selected adapter's shimFile.
|
|
123
|
-
const shimAdapter = ADAPTERS[name
|
|
98
|
+
const shimAdapter = ADAPTERS[name] || adapter;
|
|
124
99
|
const shimFileName = (unified && !isSelectedAdapter)
|
|
125
|
-
? (shimAdapter.shimFile || `${name.toUpperCase()}.md`)
|
|
126
|
-
: (adapter.shimFile || `${name.toUpperCase()}.md`);
|
|
127
|
-
|
|
128
|
-
|
|
100
|
+
? (shimAdapter.shimFile || `${name.toUpperCase()}.md`) // each adapter's own file
|
|
101
|
+
: (adapter.shimFile || `${name.toUpperCase()}.md`); // selected adapter's file
|
|
102
|
+
if (!dryRun)
|
|
103
|
+
writeTextFile(path.join(projectRoot, shimFileName), shimContent);
|
|
129
104
|
if (isSelectedAdapter) {
|
|
130
|
-
console.warn(
|
|
131
|
-
}
|
|
132
|
-
|
|
105
|
+
console.warn(`[OK] Platform shim created: ${shimFileName}`);
|
|
106
|
+
}
|
|
107
|
+
else if (unified) {
|
|
108
|
+
console.warn(`[OK] Unified platform shim added: ${shimFileName}`);
|
|
133
109
|
}
|
|
134
110
|
}
|
|
135
111
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { writeTextFile } from "../../utils/fs.js";
|
|
4
|
+
import { getPackageRoot } from "../../utils/pkg.js";
|
|
5
|
+
import { logger } from "../../../shared/logger.js";
|
|
6
|
+
export function scaffoldProjectDocs(projectRoot, options, dryRun) {
|
|
7
|
+
if (dryRun)
|
|
8
|
+
return;
|
|
9
|
+
const docsDir = path.join(projectRoot, "docs");
|
|
10
|
+
if (!fs.existsSync(docsDir))
|
|
11
|
+
fs.mkdirSync(docsDir, { recursive: true });
|
|
12
|
+
// Scaffold tech-stack.md with dynamic content
|
|
13
|
+
const techStackPath = path.join(docsDir, "tech-stack.md");
|
|
14
|
+
let techStackContent = "";
|
|
15
|
+
try {
|
|
16
|
+
const templatePath = path.join(getPackageRoot(), "docs/tech-stack.md");
|
|
17
|
+
if (fs.existsSync(templatePath)) {
|
|
18
|
+
techStackContent = fs.readFileSync(templatePath, "utf8");
|
|
19
|
+
// Replace the backend language in the template
|
|
20
|
+
const lang = options.backendLanguage;
|
|
21
|
+
const frontend = options.frontendFramework || "Vite (React)";
|
|
22
|
+
techStackContent = techStackContent.replace(/\| \*\*Geliştirme Ortamı\*\* \| .* \|/, `| **Geliştirme Ortamı** | ${lang} |`);
|
|
23
|
+
techStackContent = techStackContent.replace(/\| \*\*Frontend Altyapısı\*\* \| .* \|/, `| **Frontend Altyapısı** | ${frontend} |`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
logger.debug("Failed to read tech-stack.md template", e);
|
|
28
|
+
}
|
|
29
|
+
if (!techStackContent) {
|
|
30
|
+
techStackContent = `# 🛠️ Project Tech Stack\n\n- **Backend Language:** ${options.backendLanguage}\n- **Frontend Framework:** ${options.frontendFramework || "Vite (React)"}\n`;
|
|
31
|
+
}
|
|
32
|
+
writeTextFile(techStackPath, techStackContent);
|
|
33
|
+
console.warn(`[OK] Project documentation updated: docs/tech-stack.md (Backend: ${options.backendLanguage}, Frontend: ${options.frontendFramework || "Vite (React)"})`);
|
|
34
|
+
}
|
|
@@ -3,14 +3,13 @@ import path from "path";
|
|
|
3
3
|
import { writeJsonFile, writeTextFile } from "../../utils/fs.js";
|
|
4
4
|
import { getPackageRoot } from "../../utils/pkg.js";
|
|
5
5
|
import { logger } from "../../../shared/logger.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
export function scaffoldOps(frameworkDir, dryRun) {
|
|
7
|
+
if (dryRun)
|
|
8
|
+
return;
|
|
10
9
|
// Scaffold Prompt Recipes
|
|
11
10
|
const promptsPath = path.join(frameworkDir, "prompts");
|
|
12
|
-
if (!fs.existsSync(promptsPath))
|
|
13
|
-
|
|
11
|
+
if (!fs.existsSync(promptsPath))
|
|
12
|
+
fs.mkdirSync(promptsPath, { recursive: true });
|
|
14
13
|
const recipes = [
|
|
15
14
|
{ file: "refactoring-recipe.md", template: "templates/prompts/refactoring-recipe.md" },
|
|
16
15
|
{ file: "bug-fix-recipe.md", template: "templates/prompts/bug-fix-recipe.md" },
|
|
@@ -21,7 +20,6 @@ export function scaffoldOps(frameworkDir: string, dryRun: boolean) {
|
|
|
21
20
|
{ file: "deployment-recipe.md", template: "templates/prompts/deployment-recipe.md" },
|
|
22
21
|
{ file: "contract-design-recipe.md", template: "templates/prompts/contract-design-recipe.md" }
|
|
23
22
|
];
|
|
24
|
-
|
|
25
23
|
for (const recipe of recipes) {
|
|
26
24
|
try {
|
|
27
25
|
const fullTemplatePath = path.join(getPackageRoot(), recipe.template);
|
|
@@ -29,11 +27,11 @@ export function scaffoldOps(frameworkDir: string, dryRun: boolean) {
|
|
|
29
27
|
const content = fs.readFileSync(fullTemplatePath, "utf8");
|
|
30
28
|
writeTextFile(path.join(promptsPath, recipe.file), content);
|
|
31
29
|
}
|
|
32
|
-
}
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
33
32
|
logger.debug(`Failed to scaffold prompt recipe: ${recipe.file}`, e);
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
|
-
|
|
37
35
|
// Scaffold cli-commands.json
|
|
38
36
|
const cliCommands = {
|
|
39
37
|
commands: {
|
|
@@ -47,37 +45,36 @@ export function scaffoldOps(frameworkDir: string, dryRun: boolean) {
|
|
|
47
45
|
}
|
|
48
46
|
};
|
|
49
47
|
writeJsonFile(path.join(frameworkDir, "cli-commands.json"), cliCommands, dryRun);
|
|
50
|
-
|
|
51
48
|
// Scaffold router/routing_rules.md
|
|
52
49
|
const routerDir = path.join(frameworkDir, "router");
|
|
53
|
-
if (!fs.existsSync(routerDir))
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
if (!fs.existsSync(routerDir))
|
|
51
|
+
fs.mkdirSync(routerDir, { recursive: true });
|
|
52
|
+
writeTextFile(path.join(routerDir, "routing_rules.md"), "# [SIGNAL] Agent Atabey — Natural Language & Event Router\n\nRouting engine protocols defined here.");
|
|
56
53
|
// Scaffold registry/agent_registry.md
|
|
57
54
|
const registryDir = path.join(frameworkDir, "registry");
|
|
58
|
-
if (!fs.existsSync(registryDir))
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
if (!fs.existsSync(registryDir))
|
|
56
|
+
fs.mkdirSync(registryDir, { recursive: true });
|
|
57
|
+
writeTextFile(path.join(registryDir, "agent_registry.md"), "# [ATABEY] Agent Atabey — Army Registry\n\nList of active agents.");
|
|
61
58
|
// Scaffold observability files
|
|
62
59
|
const obsDir = path.join(frameworkDir, "observability");
|
|
63
|
-
if (!fs.existsSync(obsDir))
|
|
64
|
-
|
|
60
|
+
if (!fs.existsSync(obsDir))
|
|
61
|
+
fs.mkdirSync(obsDir, { recursive: true });
|
|
62
|
+
writeTextFile(path.join(obsDir, "audit_log.md"), "# [ATABEY] Agent Atabey — Audit Log\n\n| Timestamp | Agent | Action | Trace ID | Status |\n|---|---|---|---|---|\n");
|
|
65
63
|
writeJsonFile(path.join(obsDir, "metrics.json"), []);
|
|
66
|
-
|
|
67
64
|
// Scaffold .env.example
|
|
68
65
|
const envExamplePath = path.join(process.cwd(), ".env.example");
|
|
69
66
|
if (!fs.existsSync(envExamplePath)) {
|
|
70
67
|
writeTextFile(envExamplePath, "# Agent Atabey - Environment Variables\n\n# Core Settings\nPORT=5858\nNODE_ENV=development\n\n# AI Platform Keys (Fill these in your local .env)\nGEMINI_API_KEY=\nCLAUDE_API_KEY=\nGROK_API_KEY=\n");
|
|
71
68
|
}
|
|
72
|
-
|
|
73
69
|
// Scaffold rules
|
|
74
70
|
const rulesDir = path.join(frameworkDir, "rules");
|
|
75
|
-
if (!fs.existsSync(rulesDir))
|
|
71
|
+
if (!fs.existsSync(rulesDir))
|
|
72
|
+
fs.mkdirSync(rulesDir, { recursive: true });
|
|
76
73
|
writeTextFile(path.join(rulesDir, "global_rules.mdc"), `---
|
|
77
74
|
description: Global Rules for Agent Atabey Army
|
|
78
75
|
globs: **/*
|
|
79
76
|
---
|
|
80
77
|
|
|
81
|
-
#
|
|
78
|
+
# [ATABEY] Agent Atabey — Global Army Rules
|
|
82
79
|
`);
|
|
83
80
|
}
|
|
@@ -3,24 +3,23 @@ import path from "path";
|
|
|
3
3
|
import { ensureDir, writeTextFile } from "../../utils/fs.js";
|
|
4
4
|
import { getPackageRoot } from "../../utils/pkg.js";
|
|
5
5
|
import { CORE_SKILLS } from "../../../modules/skills/definitions.js";
|
|
6
|
-
|
|
7
6
|
const FRAMEWORK_NAME = "Agent Atabey";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export function scaffoldSkills(skillsBaseDir, dryRun) {
|
|
8
|
+
if (dryRun)
|
|
9
|
+
return;
|
|
11
10
|
ensureDir(skillsBaseDir, dryRun);
|
|
12
11
|
for (const [key, skill] of Object.entries(CORE_SKILLS)) {
|
|
13
|
-
const mdContent = `# 🛠️ ${FRAMEWORK_NAME} Skill — ${skill.name}\n\n${skill.description}\n\n## 🔌 Associated Tools\n${skill.tools.map(t => `- \`${t}\``).join("\n")}\n\n##
|
|
12
|
+
const mdContent = `# 🛠️ ${FRAMEWORK_NAME} Skill — ${skill.name}\n\n${skill.description}\n\n## 🔌 Associated Tools\n${skill.tools.map(t => `- \`${t}\``).join("\n")}\n\n## [SECURITY] Core Mandates\n${skill.mandates.join("\n")}\n`;
|
|
14
13
|
writeTextFile(path.join(skillsBaseDir, `${key.toLowerCase()}.md`), mdContent);
|
|
15
14
|
}
|
|
16
15
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
export function scaffoldStandards(frameworkDir, dryRun) {
|
|
17
|
+
if (dryRun)
|
|
18
|
+
return;
|
|
20
19
|
const knowledgePath = path.join(frameworkDir, "knowledge");
|
|
21
|
-
if (!fs.existsSync(knowledgePath))
|
|
22
|
-
|
|
23
|
-
const eslintStandardsContent = `#
|
|
20
|
+
if (!fs.existsSync(knowledgePath))
|
|
21
|
+
fs.mkdirSync(knowledgePath, { recursive: true });
|
|
22
|
+
const eslintStandardsContent = `# [ATABEY] Agent Atabey — ESLint Standards
|
|
24
23
|
|
|
25
24
|
This document outlines the strict ESLint coding standards for Agent Atabey projects.
|
|
26
25
|
|
|
@@ -32,28 +31,28 @@ This document outlines the strict ESLint coding standards for Agent Atabey proje
|
|
|
32
31
|
- **Unused Variables:** Warning on unused variables unless prefixed with an underscore (\`_\`).
|
|
33
32
|
`;
|
|
34
33
|
writeTextFile(path.join(knowledgePath, "eslint-standards.md"), eslintStandardsContent);
|
|
35
|
-
|
|
36
34
|
const standards = [
|
|
37
35
|
// ── Supreme Governance (required by @manager, @security, @architect) ──────
|
|
38
|
-
{ file: "governance-standards.md", template: "templates/standards/governance-standards.md", default: "#
|
|
36
|
+
{ file: "governance-standards.md", template: "templates/standards/governance-standards.md", default: "# [ATABEY] Agent Atabey — Governance & Nizam Standards" },
|
|
39
37
|
// ── Core Engineering Standards ────────────────────────────────────────────
|
|
40
|
-
{ file: "crud-governance.md", template: "templates/standards/crud-governance.md", default: "#
|
|
38
|
+
{ file: "crud-governance.md", template: "templates/standards/crud-governance.md", default: "# [GOV] Corporate CRUD and Governance Standards" },
|
|
41
39
|
{ file: "architecture-standards.md", template: "templates/standards/architecture-standards.md", default: "# 📐 Corporate Architecture Standards" },
|
|
42
40
|
{ file: "frontend-standards.md", template: "templates/standards/frontend-standards.md", default: "# 🎨 Corporate Frontend Standards" },
|
|
41
|
+
{ file: "vite-standards.md", template: "templates/standards/vite-standards.md", default: "# ⚡ Corporate Vite Standards" },
|
|
42
|
+
{ file: "nextjs-standards.md", template: "templates/standards/nextjs-standards.md", default: "# ⚛️ Corporate Next.js Standards" },
|
|
43
43
|
{ file: "tailwind-standards.md", template: "templates/standards/tailwind-standards.md", default: "# 🌊 Corporate Tailwind Standards" },
|
|
44
44
|
{ file: "mobile-standards.md", template: "templates/standards/mobile-standards.md", default: "# 📱 Corporate Mobile Standards" },
|
|
45
|
-
{ file: "security-standards.md", template: "templates/standards/security-standards.md", default: "#
|
|
45
|
+
{ file: "security-standards.md", template: "templates/standards/security-standards.md", default: "# [SECURITY] Corporate Security Standards" },
|
|
46
46
|
{ file: "quality-standards.md", template: "templates/standards/quality-standards.md", default: "# ⚖️ Corporate Code Quality Standards" },
|
|
47
47
|
{ file: "logging-and-secrets.md", template: "templates/standards/logging-and-secrets.md", default: "# 🪵 Corporate Logging Standards" },
|
|
48
|
-
{ file: "testing-standards.md", template: "templates/standards/testing-standards.md", default: "#
|
|
48
|
+
{ file: "testing-standards.md", template: "templates/standards/testing-standards.md", default: "# [SKILL] Corporate Testing Standards" },
|
|
49
49
|
{ file: "i18n-standards.md", template: "templates/standards/i18n-standards.md", default: "# 🌐 Corporate i18n Standards" },
|
|
50
|
-
{ file: "llm-governance.md", template: "templates/standards/llm-governance.md", default: "#
|
|
50
|
+
{ file: "llm-governance.md", template: "templates/standards/llm-governance.md", default: "# [AI] LLM Governance Standards" },
|
|
51
51
|
{ file: "observability-standards.md", template: "templates/standards/observability-standards.md", default: "# 📈 Corporate Observability Standards" },
|
|
52
|
-
{ file: "deployment-standards.md", template: "templates/standards/deployment-standards.md", default: "#
|
|
52
|
+
{ file: "deployment-standards.md", template: "templates/standards/deployment-standards.md", default: "# [START] Corporate Deployment Standards" },
|
|
53
53
|
{ file: "performance-standards.md", template: "templates/standards/performance-standards.md", default: "# ⚡ Corporate Performance Standards" },
|
|
54
54
|
{ file: "security-audit-standards.md", template: "templates/standards/security-audit-standards.md", default: "# 🔍 Corporate Security Audit Standards" }
|
|
55
55
|
];
|
|
56
|
-
|
|
57
56
|
for (const std of standards) {
|
|
58
57
|
let content = std.default;
|
|
59
58
|
try {
|
|
@@ -61,7 +60,8 @@ This document outlines the strict ESLint coding standards for Agent Atabey proje
|
|
|
61
60
|
if (fs.existsSync(fullTemplatePath)) {
|
|
62
61
|
content = fs.readFileSync(fullTemplatePath, "utf8");
|
|
63
62
|
}
|
|
64
|
-
}
|
|
63
|
+
}
|
|
64
|
+
catch { /* fallback to default */ }
|
|
65
65
|
writeTextFile(path.join(knowledgePath, std.file), content);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -1,37 +1,17 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import readline from "readline";
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
resolveAdapter,
|
|
6
|
-
runAdapterPostInit,
|
|
7
|
-
scaffoldAgents,
|
|
8
|
-
resolveAgentsDir,
|
|
9
|
-
mirrorUnifiedAgentsToNative,
|
|
10
|
-
ADAPTER_IDS,
|
|
11
|
-
type AdapterId,
|
|
12
|
-
} from "../adapters/index.js";
|
|
3
|
+
import { resolveAdapter, runAdapterPostInit, scaffoldAgents, resolveAgentsDir, mirrorUnifiedAgentsToNative, ADAPTER_IDS, } from "../adapters/index.js";
|
|
13
4
|
import { ensureDir } from "../utils/fs.js";
|
|
14
5
|
import { initializeMemory, getConfiguredPaths } from "../utils/memory.js";
|
|
15
|
-
import { getPackageVersion } from "../utils/pkg.js";
|
|
6
|
+
import { getPackageVersion, getPackageRoot, mergePackageJson } from "../utils/pkg.js";
|
|
16
7
|
import { UI } from "../utils/ui.js";
|
|
17
|
-
|
|
18
8
|
import { ALL_AGENTS } from "../../modules/agents/definitions.js";
|
|
19
|
-
import {
|
|
20
|
-
|
|
21
|
-
scaffoldFrameworkConfigs,
|
|
22
|
-
scaffoldShims
|
|
23
|
-
} from "./init/scaffold-core.js";
|
|
24
|
-
import {
|
|
25
|
-
scaffoldSkills,
|
|
26
|
-
scaffoldStandards
|
|
27
|
-
} from "./init/scaffold-standards.js";
|
|
9
|
+
import { scaffoldConstitution, scaffoldFrameworkConfigs, scaffoldShims } from "./init/scaffold-core.js";
|
|
10
|
+
import { scaffoldSkills, scaffoldStandards } from "./init/scaffold-standards.js";
|
|
28
11
|
import { scaffoldOps } from "./init/scaffold-ops.js";
|
|
29
12
|
import { scaffoldProjectDocs } from "./init/scaffold-docs.js";
|
|
30
|
-
|
|
31
|
-
import { TRANSLATIONS, type SupportedLanguage } from "../utils/i18n.js";
|
|
32
|
-
|
|
13
|
+
import { TRANSLATIONS } from "../utils/i18n.js";
|
|
33
14
|
const FRAMEWORK_NAME = "Agent Atabey";
|
|
34
|
-
|
|
35
15
|
const FRAMEWORK_SUBDIRS = [
|
|
36
16
|
"agents",
|
|
37
17
|
"skills",
|
|
@@ -43,151 +23,145 @@ const FRAMEWORK_SUBDIRS = [
|
|
|
43
23
|
"observability",
|
|
44
24
|
"rules",
|
|
45
25
|
];
|
|
46
|
-
|
|
47
|
-
async function runInteractiveInit(): Promise<{ selectedDirs: string[], selectedAgents: string[], selectedPalette: string, backendLanguage: string, language: SupportedLanguage }> {
|
|
26
|
+
async function runInteractiveInit() {
|
|
48
27
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
49
|
-
const question = (query
|
|
50
|
-
|
|
28
|
+
const question = (query) => new Promise((resolve) => rl.question(query, resolve));
|
|
51
29
|
try {
|
|
52
30
|
console.warn("\n🌐 Select Framework Language / Dil Seçimi:");
|
|
53
31
|
console.warn("1. Türkçe");
|
|
54
32
|
console.warn("2. English");
|
|
55
33
|
const langInput = await question("\nSelect (1-2) or Enter for 'tr': ");
|
|
56
|
-
const language
|
|
34
|
+
const language = langInput.trim() === "2" ? "en" : "tr";
|
|
57
35
|
const t = TRANSLATIONS[language];
|
|
58
|
-
|
|
59
|
-
console.warn(`\n🚀 ${t.welcome}`);
|
|
60
|
-
|
|
36
|
+
console.warn(`\n[START] ${t.welcome}`);
|
|
61
37
|
console.warn(`\n${t.select_backend}:`);
|
|
62
38
|
const languages = ["Node.js (TypeScript)", "Go", "Java (Spring Boot)", "Python (FastAPI)", ".NET"];
|
|
63
39
|
languages.forEach((l, i) => console.warn(`${i + 1}. ${l}`));
|
|
64
40
|
const bLangInput = await question("\nSelect (1-5) or Enter for \"Node.js\": ");
|
|
65
41
|
const backendLanguage = languages[parseInt(bLangInput.trim()) - 1] || "Node.js (TypeScript)";
|
|
66
|
-
|
|
42
|
+
console.warn(`\n${t.select_frontend}:`);
|
|
43
|
+
const frontendFrameworks = ["Vite (React)", "Next.js (App Router)", "Vanilla HTML/JS"];
|
|
44
|
+
frontendFrameworks.forEach((f, i) => console.warn(`${i + 1}. ${f}`));
|
|
45
|
+
const fFrameInput = await question("\nSelect (1-3) or Enter for \"Vite (React)\": ");
|
|
46
|
+
const frontendFramework = frontendFrameworks[parseInt(fFrameInput.trim()) - 1] || "Vite (React)";
|
|
67
47
|
console.warn("\nAvailable Framework Directories:");
|
|
68
48
|
FRAMEWORK_SUBDIRS.forEach((d, i) => console.warn(`${i + 1}. ${d}`));
|
|
69
49
|
const dirInput = await question(`\n${t.select_dirs} `);
|
|
70
50
|
const selectedDirs = dirInput ? dirInput.split(",").map(n => FRAMEWORK_SUBDIRS[parseInt(n.trim()) - 1]).filter(Boolean) : [...FRAMEWORK_SUBDIRS];
|
|
71
|
-
|
|
72
51
|
console.warn("\nAvailable Core Agents:");
|
|
73
52
|
ALL_AGENTS.forEach((a, i) => console.warn(`${i + 1}. ${a.name}`));
|
|
74
53
|
const agentInput = await question(`\n${t.select_agents} `);
|
|
75
54
|
const selectedAgents = agentInput ? agentInput.split(",").map(n => ALL_AGENTS[parseInt(n.trim()) - 1].name).filter(Boolean) : ALL_AGENTS.map(a => a.name);
|
|
76
|
-
|
|
77
55
|
console.warn("\nAvailable Color Palettes:");
|
|
78
56
|
const palettes = ["Modern Blue", "Enterprise Slate", "Deep Purple"];
|
|
79
57
|
palettes.forEach((p, i) => console.warn(`${i + 1}. ${p}`));
|
|
80
58
|
const palInput = await question(`\n${t.select_palette} `);
|
|
81
59
|
const selectedPalette = palettes[parseInt(palInput.trim()) - 1] || "Modern Blue";
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
60
|
+
return { selectedDirs, selectedAgents, selectedPalette, backendLanguage, frontendFramework, language };
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
rl.close();
|
|
64
|
+
}
|
|
85
65
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const adapterId = (adapterName || "gemini") as AdapterId;
|
|
66
|
+
export async function initCommand(adapterName, options) {
|
|
67
|
+
const adapterId = (adapterName || "gemini");
|
|
89
68
|
const adapter = resolveAdapter(adapterId);
|
|
90
|
-
|
|
91
69
|
if (!adapter) {
|
|
92
70
|
UI.error(`Unknown adapter: ${adapterId}`);
|
|
93
71
|
process.exit(1);
|
|
94
72
|
}
|
|
95
|
-
|
|
96
73
|
const projectRoot = process.cwd();
|
|
97
74
|
const isUnified = options.unified || false;
|
|
98
|
-
|
|
99
75
|
// STRICT ISOLATION STRATEGY
|
|
100
76
|
const coreDir = ".atabey"; // Pure Memory & Knowledge
|
|
101
77
|
const aiToolDir = isUnified ? ".agents" : adapter.frameworkDir; // Pure Agents & Skills
|
|
102
|
-
|
|
103
78
|
const dryRun = options.dryRun || false;
|
|
104
79
|
const forceYes = options.yes || false;
|
|
105
|
-
|
|
106
80
|
UI.intent("Atabey Initialization", `Bootstrapping ${FRAMEWORK_NAME} (v${getPackageVersion()}) with ${adapterId} adapter...`);
|
|
107
|
-
|
|
108
|
-
let
|
|
109
|
-
let
|
|
110
|
-
let
|
|
111
|
-
let
|
|
112
|
-
let language
|
|
113
|
-
|
|
81
|
+
let selectedDirs;
|
|
82
|
+
let selectedAgents;
|
|
83
|
+
let selectedPalette;
|
|
84
|
+
let backendLanguage;
|
|
85
|
+
let frontendFramework;
|
|
86
|
+
let language;
|
|
114
87
|
if (forceYes) {
|
|
115
88
|
selectedDirs = ["knowledge", "prompts", "memory", "router", "registry", "observability", "rules"];
|
|
116
89
|
selectedAgents = ALL_AGENTS.map(a => a.name);
|
|
117
90
|
selectedPalette = "Modern Blue";
|
|
118
91
|
backendLanguage = "Node.js (TypeScript)";
|
|
92
|
+
frontendFramework = "Vite (React)";
|
|
119
93
|
language = "tr";
|
|
120
|
-
UI.success("Non-interactive mode: Using default configurations (Language: tr, Backend: Node.js).");
|
|
121
|
-
}
|
|
94
|
+
UI.success("Non-interactive mode: Using default configurations (Language: tr, Backend: Node.js, Frontend: Vite).");
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
122
97
|
const result = await runInteractiveInit();
|
|
123
98
|
selectedDirs = result.selectedDirs.filter(d => d !== "agents" && d !== "skills");
|
|
124
99
|
selectedAgents = result.selectedAgents;
|
|
125
100
|
selectedPalette = result.selectedPalette;
|
|
126
101
|
backendLanguage = result.backendLanguage;
|
|
102
|
+
frontendFramework = result.frontendFramework;
|
|
127
103
|
language = result.language;
|
|
128
104
|
}
|
|
129
|
-
|
|
130
105
|
const t = TRANSLATIONS[language];
|
|
131
|
-
|
|
132
106
|
ensureDir(path.join(projectRoot, coreDir), dryRun);
|
|
133
107
|
selectedDirs.forEach(dir => {
|
|
134
108
|
ensureDir(path.join(projectRoot, coreDir, dir), dryRun);
|
|
135
109
|
});
|
|
136
|
-
|
|
137
110
|
ensureDir(path.join(projectRoot, aiToolDir), dryRun);
|
|
138
111
|
if (adapter.nestedDirs) {
|
|
139
112
|
adapter.nestedDirs.forEach(dir => ensureDir(path.join(projectRoot, aiToolDir, dir), dryRun));
|
|
140
113
|
}
|
|
141
|
-
|
|
142
114
|
scaffoldConstitution(projectRoot, coreDir, adapterId, dryRun, language);
|
|
143
115
|
scaffoldFrameworkConfigs(projectRoot, coreDir, adapter, dryRun, selectedPalette, {
|
|
144
116
|
unified: isUnified,
|
|
145
117
|
adapters: isUnified ? [...ADAPTER_IDS] : [adapterId],
|
|
146
118
|
backendLanguage,
|
|
119
|
+
frontendFramework,
|
|
147
120
|
language
|
|
148
121
|
});
|
|
149
|
-
|
|
150
122
|
scaffoldStandards(path.join(projectRoot, coreDir), dryRun);
|
|
151
|
-
|
|
152
123
|
const pathsMap = getConfiguredPaths();
|
|
153
|
-
|
|
154
124
|
if (isUnified) {
|
|
155
125
|
// Scaffold ALL agents for ALL adapters under unified hub
|
|
156
126
|
for (const id of ADAPTER_IDS) {
|
|
157
|
-
const adapterId = id
|
|
127
|
+
const adapterId = id;
|
|
158
128
|
const dest = resolveAgentsDir(adapterId, true, aiToolDir);
|
|
159
129
|
scaffoldAgents(projectRoot, adapterId, dryRun, selectedAgents, dest.agentsDir, dest.agentsExt, pathsMap, backendLanguage, language);
|
|
160
|
-
if (!dryRun)
|
|
130
|
+
if (!dryRun)
|
|
131
|
+
mirrorUnifiedAgentsToNative(projectRoot, adapterId);
|
|
161
132
|
}
|
|
162
|
-
UI.success(
|
|
163
|
-
}
|
|
133
|
+
UI.success(`[OK] Scaffolding complete for all adapters under ${aiToolDir}/ with native mirrors.`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
164
136
|
// Standard single-adapter scaffold
|
|
165
137
|
const dest = resolveAgentsDir(adapterId, false);
|
|
166
138
|
scaffoldAgents(projectRoot, adapterId, dryRun, selectedAgents, dest.agentsDir, dest.agentsExt, pathsMap, backendLanguage, language);
|
|
167
|
-
UI.success(
|
|
139
|
+
UI.success(`[OK] Generated agent definitions under ${dest.agentsDir}/`);
|
|
168
140
|
}
|
|
169
|
-
|
|
170
141
|
const skillsBaseDir = path.join(projectRoot, aiToolDir, "skills");
|
|
171
142
|
scaffoldSkills(skillsBaseDir, dryRun);
|
|
172
143
|
scaffoldOps(path.join(projectRoot, coreDir), dryRun);
|
|
173
|
-
scaffoldProjectDocs(projectRoot, { backendLanguage }, dryRun);
|
|
144
|
+
scaffoldProjectDocs(projectRoot, { backendLanguage, frontendFramework }, dryRun);
|
|
174
145
|
scaffoldShims(projectRoot, coreDir, adapterId, adapter, dryRun, isUnified);
|
|
175
|
-
|
|
176
146
|
// Initialize runtime directories
|
|
177
147
|
if (!dryRun) {
|
|
178
148
|
ensureDir(path.join(projectRoot, coreDir, "messages"));
|
|
179
149
|
ensureDir(path.join(projectRoot, coreDir, "logs"));
|
|
180
150
|
ensureDir(path.join(projectRoot, coreDir, "memory-graph"));
|
|
181
151
|
}
|
|
182
|
-
|
|
183
152
|
initializeMemory(path.join(projectRoot, coreDir), dryRun);
|
|
153
|
+
// Scaffolding package.json
|
|
154
|
+
if (!dryRun) {
|
|
155
|
+
const pkgJsonPath = path.join(projectRoot, "package.json");
|
|
156
|
+
const sourcePkgPath = path.join(getPackageRoot(), "package.json");
|
|
157
|
+
mergePackageJson(pkgJsonPath, sourcePkgPath);
|
|
158
|
+
}
|
|
184
159
|
runAdapterPostInit(adapter, projectRoot);
|
|
185
|
-
|
|
186
|
-
UI.success(`\n🚀 ${FRAMEWORK_NAME} (v${getPackageVersion()}) ${t.init_success}`);
|
|
160
|
+
UI.success(`\n[START] ${FRAMEWORK_NAME} (v${getPackageVersion()}) ${t.init_success}`);
|
|
187
161
|
console.warn(`\n- Brain & Memory Hub (Protected): ${coreDir}/`);
|
|
188
162
|
console.warn(`- AI Agent Commands (Active): ${aiToolDir}/`);
|
|
189
163
|
console.warn(`\n${t.next_steps}`);
|
|
190
|
-
console.warn(" 1. Run '
|
|
191
|
-
console.warn(
|
|
164
|
+
console.warn(" 1. Run 'npm install' (or pnpm/yarn) to install dependencies.");
|
|
165
|
+
console.warn(" 2. Run 'atabey status' to verify the environment.");
|
|
166
|
+
console.warn(` 3. Open ${adapterId === "claude" ? "Claude Desktop" : "your AI Assistant"} and start commanding the Army.`);
|
|
192
167
|
}
|
|
193
|
-
|