atabey 0.0.12 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATABEY.md +45 -499
- package/PRIVACY.md +161 -0
- package/README.md +553 -88
- package/bin/validate-al-registry.js +4 -4
- package/dist/framework-mcp/src/index.js +914 -62
- package/dist/framework-mcp/src/index.js.map +1 -1
- package/dist/framework-mcp/src/tools/compliance/mask_pii.d.ts +17 -0
- package/dist/framework-mcp/src/tools/compliance/mask_pii.js +56 -0
- package/dist/framework-mcp/src/tools/compliance/mask_pii.js.map +1 -0
- package/dist/framework-mcp/src/tools/definitions.js +24 -1
- package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/run_tests.js +25 -0
- package/dist/framework-mcp/src/tools/framework/run_tests.js.map +1 -1
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.d.ts +19 -0
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +138 -0
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js.map +1 -0
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.d.ts +8 -0
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +91 -0
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js.map +1 -0
- package/dist/framework-mcp/src/tools/index.d.ts +1 -1
- package/dist/framework-mcp/src/tools/index.js +34 -20
- package/dist/framework-mcp/src/tools/index.js.map +1 -1
- package/dist/framework-mcp/src/tools/messaging/approve_operation.d.ts +22 -0
- package/dist/framework-mcp/src/tools/messaging/approve_operation.js +81 -0
- package/dist/framework-mcp/src/tools/messaging/approve_operation.js.map +1 -0
- package/dist/framework-mcp/src/tools/messaging/ask_human.d.ts +15 -0
- package/dist/framework-mcp/src/tools/messaging/ask_human.js +89 -20
- package/dist/framework-mcp/src/tools/messaging/ask_human.js.map +1 -1
- package/dist/framework-mcp/src/tools/observability/check_ports.js +3 -1
- package/dist/framework-mcp/src/tools/observability/check_ports.js.map +1 -1
- package/dist/framework-mcp/src/tools/quality/analyze_code_quality.d.ts +11 -0
- package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +115 -0
- package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js.map +1 -0
- package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.d.ts +11 -0
- package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +135 -0
- package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js.map +1 -0
- package/dist/framework-mcp/src/tools/schemas.d.ts +90 -15
- package/dist/framework-mcp/src/tools/schemas.js +32 -7
- package/dist/framework-mcp/src/tools/schemas.js.map +1 -1
- package/dist/framework-mcp/src/tools/shell/run_command.js +12 -2
- package/dist/framework-mcp/src/tools/shell/run_command.js.map +1 -1
- package/dist/framework-mcp/src/tools/types.d.ts +11 -105
- package/dist/framework-mcp/src/tools/types.js +1 -0
- package/dist/framework-mcp/src/tools/types.js.map +1 -1
- package/dist/framework-mcp/src/utils/auth.d.ts +36 -0
- package/dist/framework-mcp/src/utils/auth.js +79 -0
- package/dist/framework-mcp/src/utils/auth.js.map +1 -0
- package/dist/framework-mcp/src/utils/auto-rollback.d.ts +71 -0
- package/dist/framework-mcp/src/utils/auto-rollback.js +266 -0
- package/dist/framework-mcp/src/utils/auto-rollback.js.map +1 -0
- package/dist/framework-mcp/src/utils/compliance.js +12 -4
- package/dist/framework-mcp/src/utils/compliance.js.map +1 -1
- package/dist/framework-mcp/src/utils/context-optimizer.d.ts +69 -0
- package/dist/framework-mcp/src/utils/context-optimizer.js +157 -0
- package/dist/framework-mcp/src/utils/context-optimizer.js.map +1 -0
- package/dist/framework-mcp/src/utils/discipline.d.ts +68 -0
- package/dist/framework-mcp/src/utils/discipline.js +218 -0
- package/dist/framework-mcp/src/utils/discipline.js.map +1 -0
- package/dist/framework-mcp/src/utils/finops.d.ts +143 -0
- package/dist/framework-mcp/src/utils/finops.js +326 -0
- package/dist/framework-mcp/src/utils/finops.js.map +1 -0
- package/dist/framework-mcp/src/utils/human-in-loop.d.ts +95 -0
- package/dist/framework-mcp/src/utils/human-in-loop.js +216 -0
- package/dist/framework-mcp/src/utils/human-in-loop.js.map +1 -0
- package/dist/framework-mcp/src/utils/license-scanner.d.ts +71 -0
- package/dist/framework-mcp/src/utils/license-scanner.js +284 -0
- package/dist/framework-mcp/src/utils/license-scanner.js.map +1 -0
- package/dist/framework-mcp/src/utils/loop-detector.d.ts +105 -0
- package/dist/framework-mcp/src/utils/loop-detector.js +362 -0
- package/dist/framework-mcp/src/utils/loop-detector.js.map +1 -0
- package/dist/framework-mcp/src/utils/quality.d.ts +19 -0
- package/dist/framework-mcp/src/utils/quality.js +124 -0
- package/dist/framework-mcp/src/utils/quality.js.map +1 -0
- package/dist/framework-mcp/src/utils/rules-engine.d.ts +78 -0
- package/dist/framework-mcp/src/utils/rules-engine.js +232 -0
- package/dist/framework-mcp/src/utils/rules-engine.js.map +1 -0
- package/dist/framework-mcp/src/utils/silent-router.d.ts +47 -0
- package/dist/framework-mcp/src/utils/silent-router.js +129 -0
- package/dist/framework-mcp/src/utils/silent-router.js.map +1 -0
- package/dist/framework-mcp/src/utils/storage.d.ts +1 -0
- package/dist/framework-mcp/src/utils/storage.js +2 -2
- package/dist/framework-mcp/src/utils/storage.js.map +1 -1
- package/dist/framework-mcp/src/utils/telemetry-streamer.d.ts +133 -0
- package/dist/framework-mcp/src/utils/telemetry-streamer.js +397 -0
- package/dist/framework-mcp/src/utils/telemetry-streamer.js.map +1 -0
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +2 -2
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +1 -1
- package/dist/framework-mcp/tests/tools/framework/run_tests.test.d.ts +1 -0
- package/dist/framework-mcp/tests/tools/framework/run_tests.test.js +49 -0
- package/dist/framework-mcp/tests/tools/framework/run_tests.test.js.map +1 -0
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +14 -5
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +1 -1
- package/dist/framework-mcp/tests/tools/observability/check_ports.test.d.ts +1 -0
- package/dist/framework-mcp/tests/tools/observability/check_ports.test.js +30 -0
- package/dist/framework-mcp/tests/tools/observability/check_ports.test.js.map +1 -0
- package/dist/framework-mcp/tests/tools/shell/run_command.test.js +7 -0
- package/dist/framework-mcp/tests/tools/shell/run_command.test.js.map +1 -1
- package/dist/framework-mcp/tests/utils/auto-rollback.test.d.ts +7 -0
- package/dist/framework-mcp/tests/utils/auto-rollback.test.js +178 -0
- package/dist/framework-mcp/tests/utils/auto-rollback.test.js.map +1 -0
- package/dist/framework-mcp/tests/utils/context-optimizer.test.d.ts +1 -0
- package/dist/framework-mcp/tests/utils/context-optimizer.test.js +62 -0
- package/dist/framework-mcp/tests/utils/context-optimizer.test.js.map +1 -0
- package/dist/framework-mcp/tests/utils/finops.test.d.ts +7 -0
- package/dist/framework-mcp/tests/utils/finops.test.js +157 -0
- package/dist/framework-mcp/tests/utils/finops.test.js.map +1 -0
- package/dist/framework-mcp/tests/utils/human-in-loop.test.d.ts +1 -0
- package/dist/framework-mcp/tests/utils/human-in-loop.test.js +59 -0
- package/dist/framework-mcp/tests/utils/human-in-loop.test.js.map +1 -0
- package/dist/framework-mcp/tests/utils/license-scanner.test.d.ts +7 -0
- package/dist/framework-mcp/tests/utils/license-scanner.test.js +131 -0
- package/dist/framework-mcp/tests/utils/license-scanner.test.js.map +1 -0
- package/dist/framework-mcp/tests/utils/loop-detector.test.d.ts +7 -0
- package/dist/framework-mcp/tests/utils/loop-detector.test.js +204 -0
- package/dist/framework-mcp/tests/utils/loop-detector.test.js.map +1 -0
- package/dist/framework-mcp/tests/utils/rules-engine.test.d.ts +1 -0
- package/dist/framework-mcp/tests/utils/rules-engine.test.js +106 -0
- package/dist/framework-mcp/tests/utils/rules-engine.test.js.map +1 -0
- package/dist/framework-mcp/tests/utils/telemetry-streamer.test.d.ts +7 -0
- package/dist/framework-mcp/tests/utils/telemetry-streamer.test.js +201 -0
- package/dist/framework-mcp/tests/utils/telemetry-streamer.test.js.map +1 -0
- package/dist/src/cli/commands/check.js +18 -3
- package/dist/src/cli/commands/check.js.map +1 -1
- package/dist/src/cli/commands/dashboard.d.ts +1 -1
- package/dist/src/cli/commands/dashboard.js +343 -96
- package/dist/src/cli/commands/dashboard.js.map +1 -1
- package/dist/src/cli/commands/gateway.d.ts +1 -0
- package/dist/src/cli/commands/gateway.js +172 -0
- package/dist/src/cli/commands/gateway.js.map +1 -0
- package/dist/src/cli/commands/init/create-agent.js +3 -3
- package/dist/src/cli/commands/init/create-agent.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-core.d.ts +3 -1
- package/dist/src/cli/commands/init/scaffold-core.js +17 -2
- package/dist/src/cli/commands/init/scaffold-core.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-ops.js +2 -2
- package/dist/src/cli/commands/init/scaffold-ops.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-standards.js +13 -1
- package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -1
- package/dist/src/cli/commands/init.d.ts +6 -0
- package/dist/src/cli/commands/init.js +163 -25
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/mcp.d.ts +7 -0
- package/dist/src/cli/commands/mcp.js +45 -22
- package/dist/src/cli/commands/mcp.js.map +1 -1
- package/dist/src/cli/commands/orchestrate.d.ts +8 -7
- package/dist/src/cli/commands/orchestrate.js +2 -1
- package/dist/src/cli/commands/orchestrate.js.map +1 -1
- package/dist/src/cli/commands/quickstart.d.ts +5 -5
- package/dist/src/cli/commands/quickstart.js +30 -42
- package/dist/src/cli/commands/quickstart.js.map +1 -1
- package/dist/src/cli/index.js +228 -317
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/platforms/core.d.ts +12 -0
- package/dist/src/cli/platforms/core.js +73 -0
- package/dist/src/cli/platforms/core.js.map +1 -0
- package/dist/src/cli/platforms/index.d.ts +5 -0
- package/dist/src/cli/platforms/index.js +6 -0
- package/dist/src/cli/platforms/index.js.map +1 -0
- package/dist/src/cli/platforms/paths.d.ts +15 -0
- package/dist/src/cli/platforms/paths.js +102 -0
- package/dist/src/cli/platforms/paths.js.map +1 -0
- package/dist/src/cli/platforms/scaffold.d.ts +2 -0
- package/dist/src/cli/platforms/scaffold.js +73 -0
- package/dist/src/cli/platforms/scaffold.js.map +1 -0
- package/dist/src/cli/platforms/utils.d.ts +4 -0
- package/dist/src/cli/platforms/utils.js +76 -0
- package/dist/src/cli/platforms/utils.js.map +1 -0
- package/dist/src/cli/shims.js +11 -11
- package/dist/src/cli/utils/fs.d.ts +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/pkg.js +2 -3
- package/dist/src/cli/utils/pkg.js.map +1 -1
- package/dist/src/cli/utils/quality.d.ts +10 -0
- package/dist/src/cli/utils/quality.js +10 -0
- package/dist/src/cli/utils/quality.js.map +1 -0
- package/dist/src/modules/agents/definitions.d.ts +2 -2
- package/dist/src/modules/agents/definitions.js +104 -63
- package/dist/src/modules/agents/definitions.js.map +1 -1
- package/dist/src/modules/agents/registry/manager.js +6 -1
- package/dist/src/modules/agents/registry/manager.js.map +1 -1
- package/dist/src/modules/contracts/api.d.ts +178 -0
- package/dist/src/modules/contracts/api.js +56 -0
- package/dist/src/modules/contracts/api.js.map +1 -0
- package/dist/src/modules/contracts/index.d.ts +5 -0
- package/dist/src/modules/contracts/index.js +6 -0
- package/dist/src/modules/contracts/index.js.map +1 -0
- package/dist/src/modules/engines/agent-executor.d.ts +25 -30
- package/dist/src/modules/engines/agent-executor.js +133 -73
- package/dist/src/modules/engines/agent-executor.js.map +1 -1
- package/dist/src/modules/engines/agent-loop.d.ts +34 -0
- package/dist/src/modules/engines/agent-loop.js +102 -0
- package/dist/src/modules/engines/agent-loop.js.map +1 -0
- package/dist/src/modules/engines/evaluation-engine.js +2 -2
- package/dist/src/modules/engines/evaluation-engine.js.map +1 -1
- package/dist/src/modules/engines/quality-gate.d.ts +16 -8
- package/dist/src/modules/engines/quality-gate.js +42 -34
- package/dist/src/modules/engines/quality-gate.js.map +1 -1
- package/dist/src/modules/engines/routing-engine.d.ts +21 -28
- package/dist/src/modules/engines/routing-engine.js +83 -50
- package/dist/src/modules/engines/routing-engine.js.map +1 -1
- package/dist/src/modules/gateway/circuit-breaker.d.ts +40 -0
- package/dist/src/modules/gateway/circuit-breaker.js +163 -0
- package/dist/src/modules/gateway/circuit-breaker.js.map +1 -0
- package/dist/src/modules/gateway/cost-tracker.d.ts +60 -0
- package/dist/src/modules/gateway/cost-tracker.js +198 -0
- package/dist/src/modules/gateway/cost-tracker.js.map +1 -0
- package/dist/src/modules/gateway/gateway.d.ts +72 -0
- package/dist/src/modules/gateway/gateway.js +243 -0
- package/dist/src/modules/gateway/gateway.js.map +1 -0
- package/dist/src/modules/gateway/index.d.ts +19 -0
- package/dist/src/modules/gateway/index.js +19 -0
- package/dist/src/modules/gateway/index.js.map +1 -0
- package/dist/src/modules/gateway/load-balancer.d.ts +86 -0
- package/dist/src/modules/gateway/load-balancer.js +230 -0
- package/dist/src/modules/gateway/load-balancer.js.map +1 -0
- package/dist/src/modules/gateway/providers/anthropic.d.ts +14 -0
- package/dist/src/modules/gateway/providers/anthropic.js +169 -0
- package/dist/src/modules/gateway/providers/anthropic.js.map +1 -0
- package/dist/src/modules/gateway/providers/base.d.ts +38 -0
- package/dist/src/modules/gateway/providers/base.js +42 -0
- package/dist/src/modules/gateway/providers/base.js.map +1 -0
- package/dist/src/modules/gateway/providers/google.d.ts +18 -0
- package/dist/src/modules/gateway/providers/google.js +176 -0
- package/dist/src/modules/gateway/providers/google.js.map +1 -0
- package/dist/src/modules/gateway/providers/grok.d.ts +14 -0
- package/dist/src/modules/gateway/providers/grok.js +166 -0
- package/dist/src/modules/gateway/providers/grok.js.map +1 -0
- package/dist/src/modules/gateway/providers/index.d.ts +21 -0
- package/dist/src/modules/gateway/providers/index.js +38 -0
- package/dist/src/modules/gateway/providers/index.js.map +1 -0
- package/dist/src/modules/gateway/providers/ollama.d.ts +23 -0
- package/dist/src/modules/gateway/providers/ollama.js +187 -0
- package/dist/src/modules/gateway/providers/ollama.js.map +1 -0
- package/dist/src/modules/gateway/providers/openai.d.ts +14 -0
- package/dist/src/modules/gateway/providers/openai.js +170 -0
- package/dist/src/modules/gateway/providers/openai.js.map +1 -0
- package/dist/src/modules/gateway/rate-limiter.d.ts +41 -0
- package/dist/src/modules/gateway/rate-limiter.js +119 -0
- package/dist/src/modules/gateway/rate-limiter.js.map +1 -0
- package/dist/src/modules/gateway/types.d.ts +114 -0
- package/dist/src/modules/gateway/types.js +8 -0
- package/dist/src/modules/gateway/types.js.map +1 -0
- package/dist/src/modules/memory/core.d.ts +4 -12
- package/dist/src/modules/memory/core.js +10 -17
- package/dist/src/modules/memory/core.js.map +1 -1
- package/dist/src/modules/memory/embedding.d.ts +28 -0
- package/dist/src/modules/memory/embedding.js +131 -0
- package/dist/src/modules/memory/embedding.js.map +1 -0
- package/dist/src/modules/providers/definitions.d.ts +9 -0
- package/dist/src/modules/providers/definitions.js +141 -0
- package/dist/src/modules/providers/definitions.js.map +1 -0
- package/dist/src/modules/providers/registry.d.ts +12 -0
- package/dist/src/modules/providers/registry.js +19 -0
- package/dist/src/modules/providers/registry.js.map +1 -0
- package/dist/src/modules/providers/shared.d.ts +1 -0
- package/dist/src/modules/providers/shared.js +105 -0
- package/dist/src/modules/providers/shared.js.map +1 -0
- package/dist/src/modules/providers/types.d.ts +14 -0
- package/dist/src/modules/providers/types.js +2 -0
- package/dist/src/modules/providers/types.js.map +1 -0
- package/dist/src/modules/skills/adapter-skills.d.ts +68 -0
- package/dist/src/modules/skills/adapter-skills.js +450 -0
- package/dist/src/modules/skills/adapter-skills.js.map +1 -0
- package/dist/src/shared/audit.d.ts +105 -0
- package/dist/src/shared/audit.js +221 -0
- package/dist/src/shared/audit.js.map +1 -0
- package/dist/src/shared/fs.js +4 -2
- package/dist/src/shared/fs.js.map +1 -1
- package/dist/src/shared/lock.d.ts +82 -0
- package/dist/src/shared/lock.js +160 -0
- package/dist/src/shared/lock.js.map +1 -0
- package/dist/src/shared/logger.d.ts +2 -0
- package/dist/src/shared/logger.js +15 -5
- package/dist/src/shared/logger.js.map +1 -1
- package/dist/src/shared/pii.d.ts +69 -0
- package/dist/src/shared/pii.js +213 -0
- package/dist/src/shared/pii.js.map +1 -0
- package/dist/src/shared/retention.d.ts +63 -0
- package/dist/src/shared/retention.js +171 -0
- package/dist/src/shared/retention.js.map +1 -0
- package/dist/src/shared/storage.d.ts +22 -1
- package/dist/src/shared/storage.js +49 -7
- package/dist/src/shared/storage.js.map +1 -1
- package/dist/tests/adapter.test.js +1 -1
- package/dist/tests/adapter.test.js.map +1 -1
- package/dist/tests/adapters/paths.test.js +4 -4
- package/dist/tests/adapters/paths.test.js.map +1 -1
- package/dist/tests/cli/commands/dashboard-coverage.test.d.ts +1 -0
- package/dist/tests/cli/commands/dashboard-coverage.test.js +88 -0
- package/dist/tests/cli/commands/dashboard-coverage.test.js.map +1 -0
- package/dist/tests/cli/init/adapter_init.test.js +4 -5
- package/dist/tests/cli/init/adapter_init.test.js.map +1 -1
- package/dist/tests/cli/init/unified_init.test.js +5 -7
- package/dist/tests/cli/init/unified_init.test.js.map +1 -1
- package/dist/tests/embedding.test.d.ts +1 -0
- package/dist/tests/embedding.test.js +82 -0
- package/dist/tests/embedding.test.js.map +1 -0
- package/dist/tests/engines/evaluation-engine.test.d.ts +1 -0
- package/dist/tests/engines/evaluation-engine.test.js +71 -0
- package/dist/tests/engines/evaluation-engine.test.js.map +1 -0
- package/dist/tests/engines/planning-engine.test.d.ts +1 -0
- package/dist/tests/engines/planning-engine.test.js +100 -0
- package/dist/tests/engines/planning-engine.test.js.map +1 -0
- package/dist/tests/engines/quality-gate.test.d.ts +1 -0
- package/dist/tests/engines/quality-gate.test.js +59 -0
- package/dist/tests/engines/quality-gate.test.js.map +1 -0
- package/dist/tests/engines/risk-engine.test.d.ts +1 -0
- package/dist/tests/engines/risk-engine.test.js +80 -0
- package/dist/tests/engines/risk-engine.test.js.map +1 -0
- package/dist/tests/engines/routing-engine.test.d.ts +1 -0
- package/dist/tests/engines/routing-engine.test.js +78 -0
- package/dist/tests/engines/routing-engine.test.js.map +1 -0
- package/dist/tests/integration/agent_flow.test.js +14 -8
- package/dist/tests/integration/agent_flow.test.js.map +1 -1
- package/dist/tests/integration/hermes_locking.test.js +1 -0
- package/dist/tests/integration/hermes_locking.test.js.map +1 -1
- package/dist/tests/modules/adapters/adapters.test.js +2 -2
- package/dist/tests/modules/adapters/adapters.test.js.map +1 -1
- package/dist/tests/modules/contracts/contracts.test.d.ts +1 -0
- package/dist/tests/modules/contracts/contracts.test.js +73 -0
- package/dist/tests/modules/contracts/contracts.test.js.map +1 -0
- package/dist/tests/modules/engines/agent-executor.test.js +30 -23
- package/dist/tests/modules/engines/agent-executor.test.js.map +1 -1
- package/dist/tests/modules/gateway/circuit-breaker.test.d.ts +1 -0
- package/dist/tests/modules/gateway/circuit-breaker.test.js +124 -0
- package/dist/tests/modules/gateway/circuit-breaker.test.js.map +1 -0
- package/dist/tests/modules/gateway/cost-tracker.test.d.ts +1 -0
- package/dist/tests/modules/gateway/cost-tracker.test.js +93 -0
- package/dist/tests/modules/gateway/cost-tracker.test.js.map +1 -0
- package/dist/tests/modules/gateway/load-balancer.test.d.ts +1 -0
- package/dist/tests/modules/gateway/load-balancer.test.js +70 -0
- package/dist/tests/modules/gateway/load-balancer.test.js.map +1 -0
- package/dist/tests/modules/gateway/rate-limiter.test.d.ts +1 -0
- package/dist/tests/modules/gateway/rate-limiter.test.js +62 -0
- package/dist/tests/modules/gateway/rate-limiter.test.js.map +1 -0
- package/dist/tests/orchestrator-dependencies.test.js +23 -6
- package/dist/tests/orchestrator-dependencies.test.js.map +1 -1
- package/dist/tests/shared/audit.test.d.ts +1 -0
- package/dist/tests/shared/audit.test.js +53 -0
- package/dist/tests/shared/audit.test.js.map +1 -0
- package/dist/tests/shared/lock.test.d.ts +1 -0
- package/dist/tests/shared/lock.test.js +95 -0
- package/dist/tests/shared/lock.test.js.map +1 -0
- package/dist/tests/shared/pii.test.d.ts +1 -0
- package/dist/tests/shared/pii.test.js +183 -0
- package/dist/tests/shared/pii.test.js.map +1 -0
- package/dist/tests/storage-operations.test.d.ts +1 -0
- package/dist/tests/storage-operations.test.js +116 -0
- package/dist/tests/storage-operations.test.js.map +1 -0
- package/framework-mcp/README.md +596 -77
- package/framework-mcp/dist/dashboard/assets/index-B2mYld0c.js +1221 -0
- package/framework-mcp/dist/dashboard/index.html +15 -0
- package/framework-mcp/dist/framework-mcp/src/index.js +914 -62
- package/framework-mcp/dist/framework-mcp/src/tools/compliance/mask_pii.js +55 -0
- package/framework-mcp/dist/framework-mcp/src/tools/definitions.js +24 -1
- package/framework-mcp/dist/framework-mcp/src/tools/framework/run_tests.js +25 -0
- package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +137 -0
- package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +90 -0
- package/framework-mcp/dist/framework-mcp/src/tools/index.js +34 -20
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/approve_operation.js +80 -0
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/ask_human.js +89 -20
- package/framework-mcp/dist/framework-mcp/src/tools/observability/check_ports.js +3 -1
- package/framework-mcp/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +114 -0
- package/framework-mcp/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +134 -0
- package/framework-mcp/dist/framework-mcp/src/tools/schemas.js +32 -7
- package/framework-mcp/dist/framework-mcp/src/tools/shell/run_command.js +12 -2
- package/framework-mcp/dist/framework-mcp/src/tools/types.js +1 -0
- package/framework-mcp/dist/framework-mcp/src/utils/auth.js +78 -0
- package/framework-mcp/dist/framework-mcp/src/utils/auto-rollback.js +265 -0
- package/framework-mcp/dist/framework-mcp/src/utils/compliance.js +12 -4
- package/framework-mcp/dist/framework-mcp/src/utils/context-optimizer.js +156 -0
- package/framework-mcp/dist/framework-mcp/src/utils/discipline.js +217 -0
- package/framework-mcp/dist/framework-mcp/src/utils/finops.js +325 -0
- package/framework-mcp/dist/framework-mcp/src/utils/human-in-loop.js +215 -0
- package/framework-mcp/dist/framework-mcp/src/utils/license-scanner.js +283 -0
- package/framework-mcp/dist/framework-mcp/src/utils/loop-detector.js +361 -0
- package/framework-mcp/dist/framework-mcp/src/utils/quality.js +123 -0
- package/framework-mcp/dist/framework-mcp/src/utils/rules-engine.js +231 -0
- package/framework-mcp/dist/framework-mcp/src/utils/silent-router.js +128 -0
- package/framework-mcp/dist/framework-mcp/src/utils/storage.js +2 -2
- package/framework-mcp/dist/framework-mcp/src/utils/telemetry-streamer.js +396 -0
- package/framework-mcp/dist/src/cli/platforms/core.js +72 -0
- package/framework-mcp/dist/src/cli/platforms/index.js +5 -0
- package/framework-mcp/dist/src/cli/platforms/paths.js +101 -0
- package/framework-mcp/dist/src/cli/platforms/scaffold.js +72 -0
- package/framework-mcp/dist/src/cli/platforms/utils.js +75 -0
- package/framework-mcp/dist/src/cli/utils/claude.js +57 -0
- package/framework-mcp/dist/src/cli/utils/compliance.js +12 -0
- package/framework-mcp/dist/src/cli/utils/fs.js +138 -0
- package/framework-mcp/dist/src/cli/utils/pkg.js +282 -0
- package/framework-mcp/dist/src/cli/utils/quality.js +9 -0
- package/framework-mcp/dist/src/modules/agents/definitions.js +563 -0
- package/framework-mcp/dist/src/modules/agents/registry/analyst.js +39 -0
- package/framework-mcp/dist/src/modules/agents/registry/architect.js +42 -0
- package/framework-mcp/dist/src/modules/agents/registry/backend.js +50 -0
- package/framework-mcp/dist/src/modules/agents/registry/database.js +45 -0
- package/framework-mcp/dist/src/modules/agents/registry/devops.js +45 -0
- package/framework-mcp/dist/src/modules/agents/registry/explorer.js +37 -0
- package/framework-mcp/dist/src/modules/agents/registry/frontend.js +52 -0
- package/framework-mcp/dist/src/modules/agents/registry/git.js +36 -0
- package/framework-mcp/dist/src/modules/agents/registry/manager.js +64 -0
- package/framework-mcp/dist/src/modules/agents/registry/mobile.js +41 -0
- package/framework-mcp/dist/src/modules/agents/registry/native.js +41 -0
- package/framework-mcp/dist/src/modules/agents/registry/quality.js +43 -0
- package/framework-mcp/dist/src/modules/agents/registry/security.js +42 -0
- package/framework-mcp/dist/src/modules/agents/types.js +1 -0
- package/framework-mcp/dist/src/modules/engines/quality-gate.js +92 -0
- package/framework-mcp/dist/src/modules/engines/risk-engine.js +105 -0
- package/framework-mcp/dist/src/modules/engines/routing-engine.js +408 -0
- package/framework-mcp/dist/src/modules/engines/types.js +1 -0
- package/framework-mcp/dist/src/modules/memory/core.js +10 -17
- package/framework-mcp/dist/src/modules/memory/embedding.js +130 -0
- package/framework-mcp/dist/src/modules/providers/definitions.js +140 -0
- package/framework-mcp/dist/src/modules/providers/registry.js +18 -0
- package/framework-mcp/dist/src/modules/providers/shared.js +104 -0
- package/framework-mcp/dist/src/modules/providers/types.js +1 -0
- package/framework-mcp/dist/src/modules/skills/adapter-skills.js +449 -0
- package/framework-mcp/dist/src/modules/skills/definitions.js +70 -0
- package/framework-mcp/dist/src/shared/audit.js +220 -0
- package/framework-mcp/dist/src/shared/errors.js +68 -0
- package/framework-mcp/dist/src/shared/fs.js +4 -2
- package/framework-mcp/dist/src/shared/lock.js +159 -0
- package/framework-mcp/dist/src/shared/logger.js +15 -5
- package/framework-mcp/dist/src/shared/pii.js +212 -0
- package/framework-mcp/dist/src/shared/retention.js +170 -0
- package/framework-mcp/dist/src/shared/storage.js +49 -7
- package/framework-mcp/dist/src/shared/string.js +29 -0
- package/framework-mcp/package.json +8 -2
- package/mcp.json +11 -6
- package/package.json +22 -9
- package/templates/full/ATABEY_FULL.md +515 -0
|
@@ -1,35 +1,39 @@
|
|
|
1
|
+
import { handleMaskPII } from "./compliance/mask_pii.js";
|
|
2
|
+
import { handleAcquireLock, handleReleaseLock } from "./control_plane/locking.js";
|
|
3
|
+
import { handleRegisterAgent } from "./control_plane/registry.js";
|
|
1
4
|
import { TOOLS } from "./definitions.js";
|
|
2
|
-
import { handleReadFile } from "./file_system/read_file.js";
|
|
3
|
-
import { handleWriteFile } from "./file_system/write_file.js";
|
|
4
|
-
import { handleReplaceText } from "./file_system/replace_text.js";
|
|
5
5
|
import { handleBatchSurgicalEdit } from "./file_system/batch_surgical_edit.js";
|
|
6
6
|
import { handlePatchFile } from "./file_system/patch_file.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { handleGetProjectMap } from "./search/get_map.js";
|
|
11
|
-
import { handleGetFrameworkStatus } from "./framework/get_status.js";
|
|
12
|
-
import { handleUpdateProjectMemory } from "./framework/update_memory.js";
|
|
7
|
+
import { handleReadFile } from "./file_system/read_file.js";
|
|
8
|
+
import { handleReplaceText } from "./file_system/replace_text.js";
|
|
9
|
+
import { handleWriteFile } from "./file_system/write_file.js";
|
|
13
10
|
import { handleAuditDependencies } from "./framework/audit_deps.js";
|
|
14
|
-
import {
|
|
15
|
-
import { handleGetSystemHealth } from "./observability/get_health.js";
|
|
16
|
-
import { handleCheckPorts } from "./observability/check_ports.js";
|
|
11
|
+
import { handleGetFrameworkStatus } from "./framework/get_status.js";
|
|
17
12
|
import { handleOrchestrateLoop } from "./framework/orchestrate.js";
|
|
13
|
+
import { handleRunTests } from "./framework/run_tests.js";
|
|
18
14
|
import { handleSubmitPlan } from "./framework/submit_plan.js";
|
|
19
15
|
import { handleUpdateContractHash } from "./framework/update_contract_hash.js";
|
|
20
|
-
import {
|
|
16
|
+
import { handleUpdateProjectMemory } from "./framework/update_memory.js";
|
|
17
|
+
import { handleDeleteKnowledge } from "./memory/delete_knowledge.js";
|
|
21
18
|
import { handleGetMemoryInsights } from "./memory/get_insights.js";
|
|
22
|
-
import {
|
|
19
|
+
import { handleReadProjectMemory } from "./memory/read_memory.js";
|
|
23
20
|
import { handleSearchKnowledge } from "./memory/search_knowledge.js";
|
|
24
|
-
import {
|
|
25
|
-
import { handleSendAgentMessage } from "./messaging/send_message.js";
|
|
26
|
-
import { handleLogAgentAction } from "./messaging/log_action.js";
|
|
21
|
+
import { handleStoreKnowledge } from "./memory/store_knowledge.js";
|
|
27
22
|
import { handleAskHuman } from "./messaging/ask_human.js";
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
23
|
+
import { handleApproveOperation } from "./messaging/approve_operation.js";
|
|
24
|
+
import { handleLogAgentAction } from "./messaging/log_action.js";
|
|
25
|
+
import { handleSendAgentMessage } from "./messaging/send_message.js";
|
|
26
|
+
import { handleCheckPorts } from "./observability/check_ports.js";
|
|
27
|
+
import { handleGetSystemHealth } from "./observability/get_health.js";
|
|
28
|
+
import { handleAnalyzeCodeQuality } from "./quality/analyze_code_quality.js";
|
|
29
|
+
import { handleCheckArchitectureCompliance } from "./quality/check_architecture_compliance.js";
|
|
31
30
|
import { handleCheckLint } from "./quality/check_lint.js";
|
|
32
31
|
import * as schemas from "./schemas.js";
|
|
32
|
+
import { handleGetProjectGaps } from "./search/get_gaps.js";
|
|
33
|
+
import { handleGetProjectMap } from "./search/get_map.js";
|
|
34
|
+
import { handleGrepSearch } from "./search/grep_search.js";
|
|
35
|
+
import { handleListDir } from "./search/list_dir.js";
|
|
36
|
+
import { handleRunCommand } from "./shell/run_command.js";
|
|
33
37
|
// Map of tool names to their handler functions
|
|
34
38
|
const bind = (fn) => {
|
|
35
39
|
return (root, args) => fn(root, args);
|
|
@@ -61,12 +65,16 @@ export const toolHandlers = {
|
|
|
61
65
|
send_agent_message: bind(handleSendAgentMessage),
|
|
62
66
|
log_agent_action: bind(handleLogAgentAction),
|
|
63
67
|
ask_human: bind(handleAskHuman),
|
|
68
|
+
approve_operation: bind(handleApproveOperation),
|
|
64
69
|
update_contract_hash: bind(handleUpdateContractHash),
|
|
65
70
|
acquire_lock: bind(handleAcquireLock),
|
|
66
71
|
release_lock: bind(handleReleaseLock),
|
|
67
72
|
register_agent: bind(handleRegisterAgent),
|
|
68
73
|
run_shell_command: bind(handleRunCommand),
|
|
69
74
|
check_lint: bind(handleCheckLint),
|
|
75
|
+
analyze_code_quality: bind(handleAnalyzeCodeQuality),
|
|
76
|
+
check_architecture_compliance: bind(handleCheckArchitectureCompliance),
|
|
77
|
+
mask_pii: bind(handleMaskPII),
|
|
70
78
|
};
|
|
71
79
|
// Map of tool names to their Zod validation schemas
|
|
72
80
|
export const toolSchemas = {
|
|
@@ -107,6 +115,12 @@ export const toolSchemas = {
|
|
|
107
115
|
send_agent_message: schemas.SendAgentMessageSchema,
|
|
108
116
|
log_agent_action: schemas.LogAgentActionSchema,
|
|
109
117
|
ask_human: schemas.AskHumanSchema,
|
|
118
|
+
approve_operation: schemas.ApproveOperationSchema,
|
|
119
|
+
// Code Quality
|
|
120
|
+
analyze_code_quality: schemas.AnalyzeCodeQualitySchema,
|
|
121
|
+
check_architecture_compliance: schemas.CheckArchitectureComplianceSchema,
|
|
122
|
+
// PII / Compliance
|
|
123
|
+
mask_pii: schemas.MaskPIISchema,
|
|
110
124
|
};
|
|
111
125
|
export { TOOLS };
|
|
112
126
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../framework-mcp/src/tools/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../framework-mcp/src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ToolResult } from "../types.js";
|
|
2
|
+
interface ApproveOperationArgs {
|
|
3
|
+
action: "approve" | "reject" | "list";
|
|
4
|
+
traceId?: string;
|
|
5
|
+
reason?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* ─── APPROVE OPERATION — In-Chat Risk Gate ──────────────────────────
|
|
9
|
+
*
|
|
10
|
+
* AI CLI kullanımında "atabey approve <traceId>" CLI komutu çalıştırmak mümkün
|
|
11
|
+
* değildir — chat'e yazılan şey CLI komutu olarak değil mesaj olarak işlenir.
|
|
12
|
+
*
|
|
13
|
+
* Bu tool, risk gate approval flow'unu doğrudan MCP tool çağrısına taşır:
|
|
14
|
+
*
|
|
15
|
+
* 1. Atabey yüksek riskli bir operasyonu bloklar
|
|
16
|
+
* 2. Geliştiriciye: "approve_operation tool'unu çağır" der
|
|
17
|
+
* 3. AI bu tool'u çağırır → operasyon onaylanır/reddedilir
|
|
18
|
+
*
|
|
19
|
+
* Geliştirici terminale geçmek zorunda kalmaz.
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleApproveOperation(_root: string, args: ApproveOperationArgs): Promise<ToolResult>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { approveOperation, rejectOperation, getPendingApprovals } from "../../utils/human-in-loop.js";
|
|
2
|
+
/**
|
|
3
|
+
* ─── APPROVE OPERATION — In-Chat Risk Gate ──────────────────────────
|
|
4
|
+
*
|
|
5
|
+
* AI CLI kullanımında "atabey approve <traceId>" CLI komutu çalıştırmak mümkün
|
|
6
|
+
* değildir — chat'e yazılan şey CLI komutu olarak değil mesaj olarak işlenir.
|
|
7
|
+
*
|
|
8
|
+
* Bu tool, risk gate approval flow'unu doğrudan MCP tool çağrısına taşır:
|
|
9
|
+
*
|
|
10
|
+
* 1. Atabey yüksek riskli bir operasyonu bloklar
|
|
11
|
+
* 2. Geliştiriciye: "approve_operation tool'unu çağır" der
|
|
12
|
+
* 3. AI bu tool'u çağırır → operasyon onaylanır/reddedilir
|
|
13
|
+
*
|
|
14
|
+
* Geliştirici terminale geçmek zorunda kalmaz.
|
|
15
|
+
*/
|
|
16
|
+
export async function handleApproveOperation(_root, args) {
|
|
17
|
+
const { action, traceId, reason } = args;
|
|
18
|
+
// LIST: Bekleyen approval'ları göster
|
|
19
|
+
if (action === "list") {
|
|
20
|
+
const pending = getPendingApprovals();
|
|
21
|
+
if (pending.length === 0) {
|
|
22
|
+
return {
|
|
23
|
+
content: [{ type: "text", text: "[APPROVALS] No pending operations waiting for approval." }],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const lines = [
|
|
27
|
+
`[APPROVALS] ${pending.length} pending operation(s):\n`,
|
|
28
|
+
...pending.map(req => [
|
|
29
|
+
" ─────────────────────────────────────",
|
|
30
|
+
` Trace ID: ${req.traceId}`,
|
|
31
|
+
` Tool: ${req.toolName}`,
|
|
32
|
+
` Agent: ${req.agent}`,
|
|
33
|
+
` Risk Score: ${req.riskScore}/100 (${req.riskLevel})`,
|
|
34
|
+
` Reason: ${req.reason}`,
|
|
35
|
+
` Expires: ${new Date(req.expiresAt).toISOString()}`,
|
|
36
|
+
].join("\n")),
|
|
37
|
+
"",
|
|
38
|
+
"To approve: call approve_operation with action=\"approve\" and traceId=\"<id>\"",
|
|
39
|
+
"To reject: call approve_operation with action=\"reject\" and traceId=\"<id>\"",
|
|
40
|
+
];
|
|
41
|
+
return {
|
|
42
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// APPROVE or REJECT: traceId zorunlu
|
|
46
|
+
if (!traceId) {
|
|
47
|
+
return {
|
|
48
|
+
isError: true,
|
|
49
|
+
content: [{ type: "text", text: `[ERROR] traceId is required for "${action}" action.` }],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (action === "approve") {
|
|
53
|
+
const result = approveOperation(traceId);
|
|
54
|
+
return {
|
|
55
|
+
content: [{
|
|
56
|
+
type: "text",
|
|
57
|
+
text: result.success
|
|
58
|
+
? `[APPROVED] ✅ ${result.message}\nYou may retry the blocked operation now.`
|
|
59
|
+
: `[ERROR] ${result.message}`,
|
|
60
|
+
}],
|
|
61
|
+
isError: !result.success,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (action === "reject") {
|
|
65
|
+
const result = rejectOperation(traceId);
|
|
66
|
+
return {
|
|
67
|
+
content: [{
|
|
68
|
+
type: "text",
|
|
69
|
+
text: result.success
|
|
70
|
+
? `[REJECTED] ⛔ ${result.message}${reason ? `\nReason: ${reason}` : ""}`
|
|
71
|
+
: `[ERROR] ${result.message}`,
|
|
72
|
+
}],
|
|
73
|
+
isError: !result.success,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
isError: true,
|
|
78
|
+
content: [{ type: "text", text: `[ERROR] Unknown action: "${String(action)}". Use "approve", "reject", or "list".` }],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=approve_operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approve_operation.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/messaging/approve_operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { ToolResult } from "../types.js";
|
|
2
2
|
interface AskHumanArgs {
|
|
3
3
|
question: string;
|
|
4
|
+
timeoutSeconds?: number;
|
|
4
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* ─── ASK HUMAN — File Bridge ─────────────────────────────────────────
|
|
8
|
+
*
|
|
9
|
+
* AI CLI'lar (Claude Code, Gemini CLI) MCP server'ı stdio subprocess olarak
|
|
10
|
+
* başlatır. Bu subprocess'te stdin isTTY=false olur (MCP JSON-RPC için kullanılır).
|
|
11
|
+
*
|
|
12
|
+
* Çözüm: File-based Q&A bridge.
|
|
13
|
+
* 1. Soru → .atabey/hitl/question.txt dosyasına yazılır
|
|
14
|
+
* 2. Geliştirici `atabey hitl` komutuyla cevap girer
|
|
15
|
+
* 3. Cevap → .atabey/hitl/answer.txt dosyasına yazılır
|
|
16
|
+
* 4. Bu handler cevabı okur ve AI'ya döner
|
|
17
|
+
*
|
|
18
|
+
* Dashboard: /api/approvals endpoint'i üzerinden web dashboard'dan da cevaplanabilir.
|
|
19
|
+
*/
|
|
5
20
|
export declare function handleAskHuman(root: string, args: AskHumanArgs): Promise<ToolResult>;
|
|
6
21
|
export {};
|
|
@@ -1,30 +1,99 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
/**
|
|
4
|
+
* ─── ASK HUMAN — File Bridge ─────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* AI CLI'lar (Claude Code, Gemini CLI) MCP server'ı stdio subprocess olarak
|
|
7
|
+
* başlatır. Bu subprocess'te stdin isTTY=false olur (MCP JSON-RPC için kullanılır).
|
|
8
|
+
*
|
|
9
|
+
* Çözüm: File-based Q&A bridge.
|
|
10
|
+
* 1. Soru → .atabey/hitl/question.txt dosyasına yazılır
|
|
11
|
+
* 2. Geliştirici `atabey hitl` komutuyla cevap girer
|
|
12
|
+
* 3. Cevap → .atabey/hitl/answer.txt dosyasına yazılır
|
|
13
|
+
* 4. Bu handler cevabı okur ve AI'ya döner
|
|
14
|
+
*
|
|
15
|
+
* Dashboard: /api/approvals endpoint'i üzerinden web dashboard'dan da cevaplanabilir.
|
|
16
|
+
*/
|
|
2
17
|
export async function handleAskHuman(root, args) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
18
|
+
const timeoutSeconds = args.timeoutSeconds ?? 120;
|
|
19
|
+
const hitlDir = path.join(root, ".atabey", "hitl");
|
|
20
|
+
const questionFile = path.join(hitlDir, "question.txt");
|
|
21
|
+
const answerFile = path.join(hitlDir, "answer.txt");
|
|
6
22
|
try {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
// Ensure hitl directory exists
|
|
24
|
+
fs.mkdirSync(hitlDir, { recursive: true });
|
|
25
|
+
// Clear any stale answer file
|
|
26
|
+
if (fs.existsSync(answerFile)) {
|
|
27
|
+
fs.unlinkSync(answerFile);
|
|
28
|
+
}
|
|
29
|
+
// Write the question with metadata
|
|
30
|
+
const questionPayload = JSON.stringify({
|
|
31
|
+
timestamp: new Date().toISOString(),
|
|
32
|
+
question: args.question,
|
|
33
|
+
timeoutAt: new Date(Date.now() + timeoutSeconds * 1000).toISOString(),
|
|
34
|
+
}, null, 2);
|
|
35
|
+
fs.writeFileSync(questionFile, questionPayload);
|
|
36
|
+
// Write human-readable prompt file alongside
|
|
37
|
+
fs.writeFileSync(path.join(hitlDir, "PENDING.txt"), [
|
|
38
|
+
"═══════════════════════════════════════════════════",
|
|
39
|
+
" [ATABEY] AGENT WAITING FOR YOUR ANSWER",
|
|
40
|
+
"═══════════════════════════════════════════════════",
|
|
41
|
+
"",
|
|
42
|
+
`QUESTION: ${args.question}`,
|
|
43
|
+
"",
|
|
44
|
+
"To answer, run in your terminal:",
|
|
45
|
+
" atabey hitl answer \"your answer here\"",
|
|
46
|
+
"",
|
|
47
|
+
"Or use the dashboard: http://localhost:5858",
|
|
48
|
+
"═══════════════════════════════════════════════════",
|
|
49
|
+
].join("\n"));
|
|
50
|
+
process.stderr.write(`[HITL] Question written to ${questionFile}\n`);
|
|
51
|
+
process.stderr.write("[HITL] Run: atabey hitl answer \"your answer\"\n");
|
|
52
|
+
// Poll for answer file
|
|
53
|
+
const pollIntervalMs = 1000;
|
|
54
|
+
const maxAttempts = timeoutSeconds;
|
|
55
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
56
|
+
await new Promise(resolve => setTimeout(resolve, pollIntervalMs));
|
|
57
|
+
if (fs.existsSync(answerFile)) {
|
|
58
|
+
const answer = fs.readFileSync(answerFile, "utf8").trim();
|
|
59
|
+
// Clean up
|
|
60
|
+
try {
|
|
61
|
+
fs.unlinkSync(questionFile);
|
|
62
|
+
fs.unlinkSync(answerFile);
|
|
63
|
+
const pendingFile = path.join(hitlDir, "PENDING.txt");
|
|
64
|
+
if (fs.existsSync(pendingFile))
|
|
65
|
+
fs.unlinkSync(pendingFile);
|
|
66
|
+
}
|
|
67
|
+
catch { /* cleanup is best-effort */ }
|
|
68
|
+
process.stderr.write("[HITL] Answer received.\n");
|
|
69
|
+
return {
|
|
70
|
+
content: [{ type: "text", text: `[HUMAN RESPONSE] ${answer}` }],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Timeout — clean up question file
|
|
75
|
+
try {
|
|
76
|
+
if (fs.existsSync(questionFile))
|
|
77
|
+
fs.unlinkSync(questionFile);
|
|
78
|
+
const pendingFile = path.join(hitlDir, "PENDING.txt");
|
|
79
|
+
if (fs.existsSync(pendingFile))
|
|
80
|
+
fs.unlinkSync(pendingFile);
|
|
81
|
+
}
|
|
82
|
+
catch { /* cleanup is best-effort */ }
|
|
83
|
+
return {
|
|
84
|
+
content: [{
|
|
85
|
+
type: "text",
|
|
86
|
+
text: `[HITL TIMEOUT] No answer received within ${timeoutSeconds}s.\n` +
|
|
87
|
+
`Question was: "${args.question}"\n` +
|
|
88
|
+
"To answer pending questions, run: atabey hitl answer \"your answer\"",
|
|
89
|
+
}],
|
|
90
|
+
};
|
|
22
91
|
}
|
|
23
92
|
catch (error) {
|
|
24
93
|
const message = error instanceof Error ? error.message : String(error);
|
|
25
94
|
return {
|
|
26
95
|
isError: true,
|
|
27
|
-
content: [{ type: "text", text: `[ERROR]
|
|
96
|
+
content: [{ type: "text", text: `[ERROR] ask_human failed: ${message}` }],
|
|
28
97
|
};
|
|
29
98
|
}
|
|
30
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask_human.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/messaging/ask_human.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ask_human.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/messaging/ask_human.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAkB;IACjE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEpD,IAAI,CAAC;QACD,+BAA+B;QAC/B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,8BAA8B;QAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAED,mCAAmC;QACnC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;SACxE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEZ,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAEhD,6CAA6C;QAC7C,EAAE,CAAC,aAAa,CACZ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC;YACI,qDAAqD;YACrD,yCAAyC;YACzC,qDAAqD;YACrD,EAAE;YACF,aAAa,IAAI,CAAC,QAAQ,EAAE;YAC5B,EAAE;YACF,kCAAkC;YAClC,2CAA2C;YAC3C,EAAE;YACF,6CAA6C;YAC7C,qDAAqD;SACxD,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,YAAY,IAAI,CAAC,CAAC;QACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAEzE,uBAAuB;QACvB,MAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,MAAM,WAAW,GAAG,cAAc,CAAC;QAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YAElE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE1D,WAAW;gBACX,IAAI,CAAC;oBACD,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBAC5B,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;oBACtD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;wBAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC/D,CAAC;gBAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;gBAExC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAClD,OAAO;oBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,EAAE,EAAE,CAAC;iBAClE,CAAC;YACN,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACtD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;QAExC,OAAO;YACH,OAAO,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,4CAA4C,cAAc,MAAM;wBAClE,kBAAkB,IAAI,CAAC,QAAQ,KAAK;wBACpC,sEAAsE;iBAC7E,CAAC;SACL,CAAC;IAEN,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACH,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,OAAO,EAAE,EAAE,CAAC;SAC5E,CAAC;IACN,CAAC;AACL,CAAC"}
|
|
@@ -3,7 +3,9 @@ import { execSync } from "child_process";
|
|
|
3
3
|
* Checks for active network ports and their status.
|
|
4
4
|
*/
|
|
5
5
|
export function handleCheckPorts(projectRoot, args) {
|
|
6
|
-
const
|
|
6
|
+
const rawFilter = args.filter || "";
|
|
7
|
+
// Sanitize filter to prevent command injection (allow only alphanumeric, dots, colons, dashes, underscores)
|
|
8
|
+
const filter = rawFilter.replace(/[^a-zA-Z0-9.:_-]/g, "");
|
|
7
9
|
try {
|
|
8
10
|
// Using 'lsof -i -P -n' to list open files and network connections
|
|
9
11
|
// Note: may require permissions or behave differently on non-Unix systems
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check_ports.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/observability/check_ports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,IAA0B;IAC5E,MAAM,
|
|
1
|
+
{"version":3,"file":"check_ports.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/observability/check_ports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,IAA0B;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACpC,4GAA4G;IAC5G,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC;QACD,mEAAmE;QACnE,0EAA0E;QAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;YACxC,CAAC,CAAC,oCAAoC,MAAM,CAAC,CAAC,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3E,CAAC,CAAC,+BAA+B,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAExE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvD,OAAO;YACH,OAAO,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,2CAA2C,MAAM,IAAI,kDAAkD,EAAE;iBAClH,CAAC;SACL,CAAC;IACN,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACV,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0FAA0F,EAAE,CAAC;SAChI,CAAC;IACN,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AnalyzeCodeQualityArgs } from "../schemas.js";
|
|
2
|
+
import { ToolResult } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Code quality analysis tool for Atabey MCP.
|
|
5
|
+
*
|
|
6
|
+
* Performs three checks on the provided source code:
|
|
7
|
+
* - TypeScript type checking (checkTypes)
|
|
8
|
+
* - Lint checking (checkLint)
|
|
9
|
+
* - Code complexity analysis (checkComplexity)
|
|
10
|
+
*/
|
|
11
|
+
export declare function handleAnalyzeCodeQuality(projectRoot: string, args: AnalyzeCodeQualityArgs): ToolResult;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { analyzePathQuality } from "../../utils/quality.js";
|
|
5
|
+
/**
|
|
6
|
+
* Code quality analysis tool for Atabey MCP.
|
|
7
|
+
*
|
|
8
|
+
* Performs three checks on the provided source code:
|
|
9
|
+
* - TypeScript type checking (checkTypes)
|
|
10
|
+
* - Lint checking (checkLint)
|
|
11
|
+
* - Code complexity analysis (checkComplexity)
|
|
12
|
+
*/
|
|
13
|
+
export function handleAnalyzeCodeQuality(projectRoot, args) {
|
|
14
|
+
// Validate path parameter to prevent command injection
|
|
15
|
+
if (!/^[a-zA-Z0-9_./-]+$/.test(args.path)) {
|
|
16
|
+
return {
|
|
17
|
+
isError: true,
|
|
18
|
+
content: [{ type: "text", text: `[ERROR] Invalid path characters detected: ${args.path}` }]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const targetPath = path.resolve(projectRoot, args.path);
|
|
22
|
+
if (!fs.existsSync(targetPath)) {
|
|
23
|
+
return {
|
|
24
|
+
isError: true,
|
|
25
|
+
content: [{ type: "text", text: `[ERROR] Path does not exist: ${args.path}` }]
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const results = ["# Code Quality Analysis Report", "", `**Target:** ${args.path}`, `**Timestamp:** ${new Date().toISOString()}`, ""];
|
|
29
|
+
let hasErrors = false;
|
|
30
|
+
// 1. TypeScript Type Check
|
|
31
|
+
if (args.checkTypes !== false) {
|
|
32
|
+
try {
|
|
33
|
+
execSync("npx tsc --noEmit", {
|
|
34
|
+
cwd: projectRoot,
|
|
35
|
+
stdio: "pipe",
|
|
36
|
+
timeout: 30000,
|
|
37
|
+
encoding: "utf8"
|
|
38
|
+
});
|
|
39
|
+
results.push("## ✅ TypeScript Check: PASSED");
|
|
40
|
+
results.push("No type errors found.");
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
hasErrors = true;
|
|
44
|
+
const error = err;
|
|
45
|
+
const stderr = error.stderr || error.stdout || error.message || "Unknown error";
|
|
46
|
+
results.push("## ❌ TypeScript Check: FAILED");
|
|
47
|
+
results.push("```");
|
|
48
|
+
results.push(stderr.substring(0, 2000));
|
|
49
|
+
results.push("```");
|
|
50
|
+
}
|
|
51
|
+
results.push("");
|
|
52
|
+
}
|
|
53
|
+
// 2. Lint Check
|
|
54
|
+
if (args.checkLint !== false) {
|
|
55
|
+
try {
|
|
56
|
+
const lintOutput = execSync("npx eslint --format compact " + args.path, {
|
|
57
|
+
cwd: projectRoot,
|
|
58
|
+
stdio: "pipe",
|
|
59
|
+
timeout: 30000,
|
|
60
|
+
encoding: "utf8"
|
|
61
|
+
});
|
|
62
|
+
const lintStr = lintOutput.trim();
|
|
63
|
+
if (lintStr) {
|
|
64
|
+
results.push("## ⚠️ Lint Check: ISSUES FOUND");
|
|
65
|
+
results.push("```");
|
|
66
|
+
results.push(lintStr.substring(0, 2000));
|
|
67
|
+
results.push("```");
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
results.push("## ✅ Lint Check: PASSED");
|
|
71
|
+
results.push("No lint issues found.");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
const error = err;
|
|
76
|
+
const stderr = error.stderr || error.stdout || error.message || "Unknown error";
|
|
77
|
+
// ESLint returns non-zero exit code when issues are found
|
|
78
|
+
if (stderr.includes("ESLint")) {
|
|
79
|
+
results.push("## ❌ Lint Check: FAILED");
|
|
80
|
+
results.push("```");
|
|
81
|
+
results.push(stderr.substring(0, 2000));
|
|
82
|
+
results.push("```");
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
results.push("## ✅ Lint Check: PASSED (no ESLint config)");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
results.push("");
|
|
89
|
+
}
|
|
90
|
+
// 3. Code Complexity Check (basic heuristic)
|
|
91
|
+
if (args.checkComplexity !== false) {
|
|
92
|
+
const qualityResult = analyzePathQuality(projectRoot, args.path);
|
|
93
|
+
const complexityIssues = qualityResult.issues.filter(issue => issue.type === "complexity");
|
|
94
|
+
if (complexityIssues.length > 0) {
|
|
95
|
+
hasErrors = true;
|
|
96
|
+
results.push(`## ⚠️ Code Complexity Issues (${complexityIssues.length})`);
|
|
97
|
+
complexityIssues.forEach(issue => {
|
|
98
|
+
results.push(`- ${issue.file}:${issue.line} — ${issue.message}`);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
results.push("## ✅ Code Complexity: OK");
|
|
103
|
+
results.push("No complexity issues found.");
|
|
104
|
+
}
|
|
105
|
+
results.push("");
|
|
106
|
+
}
|
|
107
|
+
// Summary
|
|
108
|
+
results.push("---");
|
|
109
|
+
results.push(`**Overall Status:** ${hasErrors ? "⚠️ Issues Found" : "✅ All Checks Passed"}`);
|
|
110
|
+
return {
|
|
111
|
+
content: [{ type: "text", text: results.join("\n") }],
|
|
112
|
+
isError: hasErrors
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=analyze_code_quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze_code_quality.js","sourceRoot":"","sources":["../../../../../framework-mcp/src/tools/quality/analyze_code_quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CheckArchitectureComplianceArgs } from "../schemas.js";
|
|
2
|
+
import { ToolResult } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* [TOOL] check_architecture_compliance
|
|
5
|
+
*
|
|
6
|
+
* Checks architectural compliance for code at the specified path:
|
|
7
|
+
* - Controller/Service/Repository layer separation
|
|
8
|
+
* - Import rules (controller → service → repository)
|
|
9
|
+
* - Circular dependencies
|
|
10
|
+
*/
|
|
11
|
+
export declare function handleCheckArchitectureCompliance(projectRoot: string, args: CheckArchitectureComplianceArgs): ToolResult;
|