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
|
@@ -2,7 +2,51 @@ import fs from "fs";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { generateULID } from "../utils/time.js";
|
|
4
4
|
import { UI } from "../utils/ui.js";
|
|
5
|
-
import {
|
|
5
|
+
import { RoutingEngine } from "../../modules/engines/routing-engine.js";
|
|
6
|
+
import { PlanningEngine } from "../../modules/engines/planning-engine.js";
|
|
7
|
+
import { sendMessage } from "./orchestrate.js";
|
|
8
|
+
import { Storage } from "../../shared/storage.js";
|
|
9
|
+
import { asTraceID } from "../../shared/types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Submits a structured plan (DAG) to the framework.
|
|
12
|
+
*/
|
|
13
|
+
export async function submitPlanCommand(tasks) {
|
|
14
|
+
const traceId = asTraceID(generateULID());
|
|
15
|
+
const plan = PlanningEngine.createPlan(tasks);
|
|
16
|
+
const validation = PlanningEngine.validatePlan(plan);
|
|
17
|
+
if (!validation.valid) {
|
|
18
|
+
UI.error("Invalid Plan Submission:");
|
|
19
|
+
validation.errors.forEach((e) => UI.error(` - ${e}`));
|
|
20
|
+
process.exit(64);
|
|
21
|
+
}
|
|
22
|
+
UI.intent("Dynamic Task Planner", `Processing plan with ${plan.tasks.length} tasks (Plan Trace: ${traceId})`);
|
|
23
|
+
// Save plan metadata to SQLite
|
|
24
|
+
Storage.setMetadata(`plan_${traceId}`, JSON.stringify(plan));
|
|
25
|
+
for (const task of plan.tasks) {
|
|
26
|
+
const taskData = {
|
|
27
|
+
id: task.id,
|
|
28
|
+
traceId,
|
|
29
|
+
description: task.task,
|
|
30
|
+
agent: task.agent,
|
|
31
|
+
priority: "NORMAL",
|
|
32
|
+
status: "PENDING",
|
|
33
|
+
dependencies: task.dependencies || []
|
|
34
|
+
};
|
|
35
|
+
Storage.saveTask(taskData);
|
|
36
|
+
// Queue as a delegated message in SQLite
|
|
37
|
+
await sendMessage({
|
|
38
|
+
from: "@manager",
|
|
39
|
+
to: task.agent,
|
|
40
|
+
category: "DELEGATION",
|
|
41
|
+
content: JSON.stringify({ task: task.task, traceId }),
|
|
42
|
+
traceId,
|
|
43
|
+
parentId: task.id,
|
|
44
|
+
priority: "NORMAL",
|
|
45
|
+
dependencies: task.dependencies || []
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
UI.success(`[OK] Dynamic plan submitted and queued: ${plan.tasks.length} tasks.`);
|
|
49
|
+
}
|
|
6
50
|
/**
|
|
7
51
|
* Reads ALL markdown files from the docs/ directory and creates
|
|
8
52
|
* planning tasks from them. Agents will use this to understand
|
|
@@ -13,85 +57,62 @@ export async function planCommand() {
|
|
|
13
57
|
const docsDir = path.join(projectRoot, "docs");
|
|
14
58
|
if (!fs.existsSync(docsDir)) {
|
|
15
59
|
UI.error("Docs directory not found at docs/");
|
|
16
|
-
console.warn("
|
|
60
|
+
console.warn("[TIP] Create a docs/ folder with your project requirements in .md files.");
|
|
17
61
|
return;
|
|
18
62
|
}
|
|
19
63
|
const entries = fs.readdirSync(docsDir, { withFileTypes: true });
|
|
20
64
|
const mdFiles = entries.filter(e => e.isFile() && e.name.endsWith(".md"));
|
|
21
65
|
if (mdFiles.length === 0) {
|
|
22
66
|
UI.warning("No markdown files found in docs/ directory.");
|
|
23
|
-
console.warn("
|
|
67
|
+
console.warn("[TIP] Add .md files to docs/ with your project requirements.");
|
|
24
68
|
return;
|
|
25
69
|
}
|
|
26
70
|
UI.intent("Planning Engine", `Reading ${mdFiles.length} document(s) from docs/...`);
|
|
27
|
-
// Discover available template standards
|
|
28
|
-
const templatesDir = path.join(projectRoot, "templates");
|
|
29
|
-
const standards = [];
|
|
30
|
-
if (fs.existsSync(templatesDir)) {
|
|
31
|
-
const templateFiles = fs.readdirSync(templatesDir);
|
|
32
|
-
standards.push(...templateFiles.filter(f => f.endsWith("-standards.md")).map(f => `templates/${f}`));
|
|
33
|
-
if (standards.length > 0) {
|
|
34
|
-
UI.success(`Found ${standards.length} standard templates available for code generation.`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
71
|
let totalTasks = 0;
|
|
38
72
|
for (const file of mdFiles) {
|
|
39
73
|
const filePath = path.join(docsDir, file.name);
|
|
40
74
|
const content = fs.readFileSync(filePath, "utf8");
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
console.warn(` Content preview: ${content.substring(0, 200).replace(/\n/g, " ")}...`);
|
|
45
|
-
// Extract headings as task descriptions
|
|
46
|
-
const headingRegex = /^#{2,4}\s+(.+)$/gm;
|
|
47
|
-
let headingCount = 0;
|
|
48
|
-
while (headingRegex.exec(content) !== null) {
|
|
49
|
-
headingCount++;
|
|
50
|
-
totalTasks++;
|
|
51
|
-
}
|
|
52
|
-
// Extract checklist items
|
|
75
|
+
const traceId = asTraceID(generateULID());
|
|
76
|
+
UI.success(`π docs/${file.name} (Trace: ${traceId})`);
|
|
77
|
+
// Extract checklist items and create sequential task chain
|
|
53
78
|
const taskRegex = /- \[ \]\s+(.+)/g;
|
|
54
79
|
let taskMatch;
|
|
55
80
|
let taskCount = 0;
|
|
81
|
+
let lastTaskId = null;
|
|
56
82
|
while ((taskMatch = taskRegex.exec(content)) !== null) {
|
|
57
|
-
|
|
83
|
+
const taskText = taskMatch[1].trim();
|
|
84
|
+
if (taskText.length >= 3) {
|
|
58
85
|
taskCount++;
|
|
59
86
|
totalTasks++;
|
|
87
|
+
// Capability routing via RoutingEngine
|
|
88
|
+
const targetAgent = RoutingEngine.resolveAgent(taskText);
|
|
89
|
+
const subTaskId = generateULID();
|
|
90
|
+
const taskData = {
|
|
91
|
+
id: subTaskId,
|
|
92
|
+
traceId,
|
|
93
|
+
description: taskText,
|
|
94
|
+
agent: targetAgent,
|
|
95
|
+
priority: "NORMAL",
|
|
96
|
+
status: "PENDING",
|
|
97
|
+
dependencies: lastTaskId ? [lastTaskId] : []
|
|
98
|
+
};
|
|
99
|
+
Storage.saveTask(taskData);
|
|
100
|
+
// Queue as a delegated message
|
|
101
|
+
await sendMessage({
|
|
102
|
+
from: "@manager",
|
|
103
|
+
to: targetAgent,
|
|
104
|
+
category: "DELEGATION",
|
|
105
|
+
content: JSON.stringify({ task: taskText, traceId }),
|
|
106
|
+
traceId,
|
|
107
|
+
parentId: subTaskId,
|
|
108
|
+
priority: "NORMAL",
|
|
109
|
+
dependencies: lastTaskId ? [lastTaskId] : []
|
|
110
|
+
});
|
|
111
|
+
lastTaskId = subTaskId;
|
|
60
112
|
}
|
|
61
113
|
}
|
|
62
|
-
console.warn(` π
|
|
63
|
-
// Store in project memory-compatible format
|
|
64
|
-
const memoryDir = path.join(projectRoot, ".atabey", "memory", "tasks");
|
|
65
|
-
if (!fs.existsSync(memoryDir)) {
|
|
66
|
-
fs.mkdirSync(memoryDir, { recursive: true });
|
|
67
|
-
}
|
|
68
|
-
const taskFile = path.join(memoryDir, `${traceId}.json`);
|
|
69
|
-
const taskData = {
|
|
70
|
-
traceId,
|
|
71
|
-
source: `docs/${file.name}`,
|
|
72
|
-
description: `Process requirements from docs/${file.name}`,
|
|
73
|
-
status: "PENDING",
|
|
74
|
-
createdAt: new Date().toISOString(),
|
|
75
|
-
standards,
|
|
76
|
-
headings: headingCount,
|
|
77
|
-
tasks: taskCount,
|
|
78
|
-
preview: content.substring(0, 500),
|
|
79
|
-
};
|
|
80
|
-
writeJsonFile(taskFile, taskData);
|
|
81
|
-
}
|
|
82
|
-
// Log available standards
|
|
83
|
-
if (standards.length > 0) {
|
|
84
|
-
console.warn("");
|
|
85
|
-
UI.divider();
|
|
86
|
-
console.warn("π Available Enterprise Standards:");
|
|
87
|
-
standards.forEach(s => console.warn(` - ${s}`));
|
|
88
|
-
UI.divider();
|
|
114
|
+
console.warn(` π Actionable tasks detected: ${taskCount}`);
|
|
89
115
|
}
|
|
90
|
-
UI.success(`\n
|
|
91
|
-
console.warn("\nπ Next steps:");
|
|
92
|
-
console.warn(" 1. Run 'atabey status' to see project state");
|
|
93
|
-
console.warn(" 2. AI agents (Claude, Gemini, Grok, etc.) will read docs/ and templates/");
|
|
94
|
-
console.warn(" 3. Agents generate enterprise-standard code based on requirements");
|
|
95
|
-
console.warn(" 4. Use @agent delegation for specific tasks: atabey @backend \"...\"");
|
|
116
|
+
UI.success(`\n[OK] Planning complete: ${totalTasks} tasks identified.`);
|
|
96
117
|
}
|
|
97
118
|
//# sourceMappingURL=plan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,16 +5,16 @@ const targetDir = process.cwd(); // Assuming targetDir is process.cwd() in the C
|
|
|
5
5
|
export async function runScriptCommand(script, projectPath) {
|
|
6
6
|
const fullPath = path.join(targetDir, projectPath);
|
|
7
7
|
if (!fs.existsSync(fullPath)) {
|
|
8
|
-
console.warn(
|
|
8
|
+
console.warn(`[ERROR] Project path not found: ${projectPath}`);
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
|
-
console.warn(
|
|
11
|
+
console.warn(`[START] Running 'npm run ${script}' in ${projectPath}...`);
|
|
12
12
|
try {
|
|
13
13
|
cp.spawnSync("npm", ["run", script], { cwd: fullPath, stdio: "inherit", shell: true });
|
|
14
14
|
}
|
|
15
15
|
catch (e) {
|
|
16
16
|
const message = e instanceof Error ? e.message : "Unknown error";
|
|
17
|
-
console.warn(
|
|
17
|
+
console.warn(`[ERROR] Failed to run script: ${message}`);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
//# sourceMappingURL=script.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script.js","sourceRoot":"","sources":["../../../../src/cli/commands/script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,eAAe,CAAC;AAE/B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,yDAAyD;AAE1F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,WAAmB;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"script.js","sourceRoot":"","sources":["../../../../src/cli/commands/script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,eAAe,CAAC;AAE/B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,yDAAyD;AAE1F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,WAAmB;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;QAC/D,OAAO;IACX,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,4BAA4B,MAAM,QAAQ,WAAW,KAAK,CAAC,CAAC;IACzE,IAAI,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;AACL,CAAC"}
|
|
@@ -28,10 +28,10 @@ export async function securityAuditCommand(targetPath) {
|
|
|
28
28
|
});
|
|
29
29
|
});
|
|
30
30
|
if (issues.length === 0) {
|
|
31
|
-
console.warn("
|
|
31
|
+
console.warn("[OK] No security issues detected.");
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
|
-
issues.forEach((issue) => console.warn(
|
|
34
|
+
issues.forEach((issue) => console.warn(`[WARN] ${issue}`));
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=security.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../src/cli/commands/security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAkB;IACzD,OAAO,CAAC,IAAI,CAAC,0CAA0C,UAAU,KAAK,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG;QACd,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE;QAClF;YACI,OAAO,EAAE,qDAAqD;YAC9D,OAAO,EAAE,qCAAqC;YAC9C,QAAQ,EAAE,UAAU;SACvB;QACD,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,QAAQ,EAAE;QACzF,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,sCAAsC,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACtG,CAAC;IACF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACtB,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjG,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../src/cli/commands/security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAkB;IACzD,OAAO,CAAC,IAAI,CAAC,0CAA0C,UAAU,KAAK,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG;QACd,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE;QAClF;YACI,OAAO,EAAE,qDAAqD;YAC9D,OAAO,EAAE,qCAAqC;YAC9C,QAAQ,EAAE,UAAU;SACvB;QACD,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,QAAQ,EAAE;QACzF,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,sCAAsC,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACtG,CAAC;IACF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACtB,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjG,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { getFrameworkDir, listTasks, readState, readStatus } from "../utils/memory.js";
|
|
3
5
|
/**
|
|
4
6
|
* Print the current framework status.
|
|
5
7
|
*/
|
|
@@ -7,16 +9,34 @@ export async function statusCommand() {
|
|
|
7
9
|
const state = readState();
|
|
8
10
|
const tasks = listTasks();
|
|
9
11
|
const agentStatuses = readStatus();
|
|
12
|
+
const frameworkDir = getFrameworkDir();
|
|
10
13
|
if (!state) {
|
|
11
|
-
console.error("
|
|
14
|
+
console.error("[ERROR] Error: Memory state not found. Please run 'init' first.");
|
|
12
15
|
return;
|
|
13
16
|
}
|
|
14
|
-
console.warn("\n
|
|
17
|
+
console.warn("\n[DATA] --- PROJECT STATUS ---");
|
|
15
18
|
console.warn(`πΉ Phase: ${state.phase}`);
|
|
16
19
|
console.warn(`π Trace ID: ${state.traceId}`);
|
|
17
|
-
console.warn(
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
+
console.warn(`[AI] Manager: ${state.managerState}`);
|
|
21
|
+
// --- Health Engine Integration ---
|
|
22
|
+
try {
|
|
23
|
+
const { HealthEngine } = await import("../../modules/engines/health-engine.js");
|
|
24
|
+
const health = HealthEngine.getHealth();
|
|
25
|
+
if (health) {
|
|
26
|
+
let healthColor = chalk.green;
|
|
27
|
+
if (health.score < 50)
|
|
28
|
+
healthColor = chalk.red;
|
|
29
|
+
else if (health.score < 80)
|
|
30
|
+
healthColor = chalk.yellow;
|
|
31
|
+
console.warn(`β€οΈ Project Health: ${healthColor(health.score + "%")} (Quality: ${health.codeQuality} | Security: ${health.security})`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Health engine not initialized or compiled yet
|
|
36
|
+
}
|
|
37
|
+
// Read Agent Status from Storage
|
|
38
|
+
console.warn("\n[ATABEY] Atabey Army Status (Agent States & Performance):");
|
|
39
|
+
const { Storage } = await import("../../shared/storage.js");
|
|
20
40
|
for (const [agentName, info] of Object.entries(agentStatuses)) {
|
|
21
41
|
const { state, task } = info;
|
|
22
42
|
let coloredState = state;
|
|
@@ -28,14 +48,51 @@ export async function statusCommand() {
|
|
|
28
48
|
coloredState = chalk.red(state);
|
|
29
49
|
else if (state === "WAITING")
|
|
30
50
|
coloredState = chalk.cyan(state);
|
|
31
|
-
|
|
51
|
+
// Calculate Success Rate from SQLite logs
|
|
52
|
+
let successRateStr = "";
|
|
53
|
+
const logs = Storage.getLogs(agentName);
|
|
54
|
+
const total = logs.length;
|
|
55
|
+
if (total > 0) {
|
|
56
|
+
const successCount = logs.filter(l => l.status === "SUCCESS").length;
|
|
57
|
+
const rate = (successCount / total) * 100;
|
|
58
|
+
successRateStr = ` | Success Rate: ${rate.toFixed(1)}% (${successCount}/${total})`;
|
|
59
|
+
}
|
|
60
|
+
console.warn(` ${chalk.bold(agentName.padEnd(12))} : [${coloredState}] - ${task}${successRateStr}`);
|
|
32
61
|
}
|
|
33
62
|
if (tasks.length > 0) {
|
|
34
63
|
console.warn("\nπ Active Tasks:");
|
|
35
64
|
tasks.forEach((t) => {
|
|
36
|
-
|
|
65
|
+
const agent = t.agent.startsWith("@") ? t.agent : `@${t.agent}`;
|
|
66
|
+
console.warn(` - [${t.priority}] ${t.status}: ${t.description} (${agent})`);
|
|
37
67
|
});
|
|
38
68
|
}
|
|
69
|
+
const metricsPath = path.join(frameworkDir, "observability", "metrics.json");
|
|
70
|
+
if (fs.existsSync(metricsPath)) {
|
|
71
|
+
try {
|
|
72
|
+
const rawMetrics = fs.readFileSync(metricsPath, "utf8");
|
|
73
|
+
const metrics = JSON.parse(rawMetrics);
|
|
74
|
+
let totalTokens = 0;
|
|
75
|
+
const agentTokens = {};
|
|
76
|
+
metrics.forEach(m => {
|
|
77
|
+
totalTokens += m.estimatedTokens;
|
|
78
|
+
const name = m.agent.startsWith("@") ? m.agent : `@${m.agent}`;
|
|
79
|
+
agentTokens[name] = (agentTokens[name] || 0) + m.estimatedTokens;
|
|
80
|
+
});
|
|
81
|
+
// Assume $5.00 per 1M tokens average pricing
|
|
82
|
+
const estimatedCost = (totalTokens / 1_000_000) * 5.00;
|
|
83
|
+
console.warn("\nπΈ --- OBSERVABILITY & COST DASHBOARD ---");
|
|
84
|
+
console.warn(`π³ Total Estimated Tokens: ${totalTokens.toLocaleString()}`);
|
|
85
|
+
console.warn(`π² Total Estimated LLM Cost: $${estimatedCost.toFixed(4)}`);
|
|
86
|
+
if (Object.keys(agentTokens).length > 0) {
|
|
87
|
+
console.warn("\n[COST] Cost Distribution per Agent:");
|
|
88
|
+
Object.entries(agentTokens).forEach(([agent, tokens]) => {
|
|
89
|
+
const agentCost = (tokens / 1_000_000) * 5.00;
|
|
90
|
+
console.warn(` ${chalk.bold(agent.padEnd(12))} : ${tokens.toLocaleString()} tokens ($${agentCost.toFixed(4)})`);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch { /* ignore metrics read errors */ }
|
|
95
|
+
}
|
|
39
96
|
console.warn("\n-----------------------\n");
|
|
40
97
|
}
|
|
41
98
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,3 +2,7 @@
|
|
|
2
2
|
* Generate a new Trace ID and add it to project memory.
|
|
3
3
|
*/
|
|
4
4
|
export declare function traceNewCommand(description: string, agent?: string, priority?: string): Promise<string | void>;
|
|
5
|
+
/**
|
|
6
|
+
* Replay the chronological message exchanges of a specific Trace ID.
|
|
7
|
+
*/
|
|
8
|
+
export declare function traceReplayCommand(traceId: string): Promise<void>;
|
|
@@ -20,10 +20,91 @@ export async function traceNewCommand(description, agent = "manager", priority =
|
|
|
20
20
|
createdAt: new Date().toISOString()
|
|
21
21
|
}, traceId, frameworkDir);
|
|
22
22
|
// ----------------------------
|
|
23
|
-
console.warn(`
|
|
24
|
-
β
New Trace ID created: ${traceId}`);
|
|
23
|
+
console.warn(`[OK] New Trace ID created: ${traceId}`);
|
|
25
24
|
console.warn(`π Added to task list: ${description}
|
|
26
25
|
`);
|
|
27
26
|
return traceId;
|
|
28
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Replay the chronological message exchanges of a specific Trace ID.
|
|
30
|
+
*/
|
|
31
|
+
export async function traceReplayCommand(traceId) {
|
|
32
|
+
const fs = await import("fs");
|
|
33
|
+
const path = await import("path");
|
|
34
|
+
const { UI } = await import("../utils/ui.js");
|
|
35
|
+
const frameworkDir = getFrameworkDir();
|
|
36
|
+
const archiveDir = path.join(frameworkDir, "messages", "archive");
|
|
37
|
+
UI.intent("Trace Replay Engine", `Searching archive logs for Trace ID: ${traceId}...`);
|
|
38
|
+
const events = [];
|
|
39
|
+
// Scan messages/ folder for active/pending messages
|
|
40
|
+
const messagesDir = path.join(frameworkDir, "messages");
|
|
41
|
+
if (fs.existsSync(messagesDir)) {
|
|
42
|
+
const files = fs.readdirSync(messagesDir).filter(f => f.endsWith(".json"));
|
|
43
|
+
files.forEach(file => {
|
|
44
|
+
try {
|
|
45
|
+
const filePath = path.join(messagesDir, file);
|
|
46
|
+
const content = fs.readFileSync(filePath, "utf8").trim();
|
|
47
|
+
if (!content)
|
|
48
|
+
return;
|
|
49
|
+
content.split("\n").forEach(line => {
|
|
50
|
+
if (!line.trim())
|
|
51
|
+
return;
|
|
52
|
+
const msg = JSON.parse(line);
|
|
53
|
+
if (msg.traceId === traceId) {
|
|
54
|
+
events.push(msg);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch { /* ignore */ }
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// Scan messages/archive/ folder for processed messages
|
|
62
|
+
if (fs.existsSync(archiveDir)) {
|
|
63
|
+
const files = fs.readdirSync(archiveDir).filter(f => f.endsWith(".json"));
|
|
64
|
+
files.forEach(file => {
|
|
65
|
+
try {
|
|
66
|
+
const filePath = path.join(archiveDir, file);
|
|
67
|
+
const content = fs.readFileSync(filePath, "utf8").trim();
|
|
68
|
+
if (!content)
|
|
69
|
+
return;
|
|
70
|
+
content.split("\n").forEach(line => {
|
|
71
|
+
if (!line.trim())
|
|
72
|
+
return;
|
|
73
|
+
const msg = JSON.parse(line);
|
|
74
|
+
if (msg.traceId === traceId) {
|
|
75
|
+
events.push(msg);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch { /* ignore */ }
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (events.length === 0) {
|
|
83
|
+
UI.warning(`No message exchanges found for Trace ID: ${traceId}`);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// Sort chronologically by timestamp
|
|
87
|
+
events.sort((a, b) => Date.parse(a.timestamp) - Date.parse(b.timestamp));
|
|
88
|
+
console.warn("\n================================================================================");
|
|
89
|
+
console.warn(`πΊοΈ TRACE TIMELINE REPLAY: ${traceId}`);
|
|
90
|
+
console.warn("================================================================================");
|
|
91
|
+
events.forEach(evt => {
|
|
92
|
+
const timeStr = new Date(evt.timestamp).toLocaleTimeString();
|
|
93
|
+
console.warn(`\n[${timeStr}] ${evt.from} β ${evt.to} [${evt.category}]`);
|
|
94
|
+
try {
|
|
95
|
+
const parsed = JSON.parse(evt.content);
|
|
96
|
+
if (parsed.task) {
|
|
97
|
+
console.warn(` π¬ Task: ${parsed.task}`);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
console.warn(` π¬ Content: ${evt.content}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
console.warn(` π¬ Content: ${evt.content}`);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
console.warn("\n================================================================================");
|
|
108
|
+
UI.success("Trace replay completed.");
|
|
109
|
+
}
|
|
29
110
|
//# sourceMappingURL=trace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../../src/cli/commands/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE1F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB,EAAE,KAAK,GAAG,SAAS,EAAE,QAAQ,GAAG,IAAI;IACzF,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM;IAEN,+BAA+B;IAC/B,mBAAmB,CAAC,MAAM,EAAE;QACxB,OAAO;QACP,WAAW,EAAE,eAAe;QAC5B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1B,+BAA+B;IAE/B,OAAO,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../../src/cli/commands/trace.ts"],"names":[],"mappings":"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"}
|