atabey 0.0.11 → 0.0.13
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 +52 -249
- package/PRIVACY.md +161 -0
- package/README.md +355 -140
- package/bin/completion.sh +30 -0
- package/bin/{validate-agent-army.js → validate-al-registry.js} +6 -6
- package/dist/framework-mcp/src/index.js +14 -2
- package/dist/framework-mcp/src/index.js.map +1 -1
- package/dist/framework-mcp/src/resources/index.js +5 -5
- package/dist/framework-mcp/src/resources/index.js.map +1 -1
- package/dist/framework-mcp/src/tools/control_plane/locking.d.ts +1 -1
- package/dist/framework-mcp/src/tools/control_plane/locking.js +11 -9
- package/dist/framework-mcp/src/tools/control_plane/locking.js.map +1 -1
- package/dist/framework-mcp/src/tools/definitions.d.ts +5 -0
- package/dist/framework-mcp/src/tools/definitions.js +116 -241
- package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +4 -4
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/read_file.js +1 -1
- package/dist/framework-mcp/src/tools/file_system/replace_text.js +3 -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 +4 -4
- package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/audit_deps.js +1 -1
- package/dist/framework-mcp/src/tools/framework/audit_deps.js.map +1 -1
- package/dist/framework-mcp/src/tools/framework/submit_plan.d.ts +4 -3
- package/dist/framework-mcp/src/tools/framework/submit_plan.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 +2 -0
- package/dist/framework-mcp/src/tools/index.js +81 -17
- package/dist/framework-mcp/src/tools/index.js.map +1 -1
- package/dist/framework-mcp/src/tools/memory/delete_knowledge.d.ts +8 -0
- package/dist/framework-mcp/src/tools/memory/delete_knowledge.js +29 -0
- package/dist/framework-mcp/src/tools/memory/delete_knowledge.js.map +1 -0
- package/dist/framework-mcp/src/tools/memory/read_memory.js +1 -1
- package/dist/framework-mcp/src/tools/memory/read_memory.js.map +1 -1
- package/dist/framework-mcp/src/tools/memory/search_knowledge.d.ts +8 -0
- package/dist/framework-mcp/src/tools/memory/search_knowledge.js +49 -0
- package/dist/framework-mcp/src/tools/memory/search_knowledge.js.map +1 -0
- package/dist/framework-mcp/src/tools/memory/store_knowledge.d.ts +10 -0
- package/dist/framework-mcp/src/tools/memory/store_knowledge.js +31 -0
- package/dist/framework-mcp/src/tools/memory/store_knowledge.js.map +1 -0
- package/dist/framework-mcp/src/tools/messaging/ask_human.d.ts +6 -0
- package/dist/framework-mcp/src/tools/messaging/ask_human.js +31 -0
- package/dist/framework-mcp/src/tools/messaging/ask_human.js.map +1 -0
- 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/observability/get_health.js +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 +166 -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 +439 -0
- package/dist/framework-mcp/src/tools/schemas.js +183 -0
- package/dist/framework-mcp/src/tools/schemas.js.map +1 -0
- package/dist/framework-mcp/src/tools/search/get_map.js +2 -2
- package/dist/framework-mcp/src/tools/search/get_map.js.map +1 -1
- package/dist/framework-mcp/src/tools/search/grep_search.js +10 -7
- package/dist/framework-mcp/src/tools/search/grep_search.js.map +1 -1
- package/dist/framework-mcp/src/tools/shell/run_command.js +72 -7
- package/dist/framework-mcp/src/tools/shell/run_command.js.map +1 -1
- package/dist/framework-mcp/src/tools/types.d.ts +10 -9
- package/dist/framework-mcp/src/utils/compliance.d.ts +10 -0
- package/dist/framework-mcp/src/utils/compliance.js +102 -41
- package/dist/framework-mcp/src/utils/compliance.js.map +1 -1
- package/dist/framework-mcp/src/utils/fs.d.ts +10 -7
- package/dist/framework-mcp/src/utils/fs.js +10 -7
- package/dist/framework-mcp/src/utils/fs.js.map +1 -1
- package/dist/framework-mcp/src/utils/types.d.ts +8 -0
- package/dist/framework-mcp/src/utils/types.js +4 -0
- package/dist/framework-mcp/src/utils/types.js.map +1 -1
- package/dist/framework-mcp/src/utils/zod-to-mcp.d.ts +10 -0
- package/dist/framework-mcp/src/utils/zod-to-mcp.js +80 -0
- package/dist/framework-mcp/src/utils/zod-to-mcp.js.map +1 -0
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +4 -4
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +1 -1
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +17 -16
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +1 -1
- package/dist/src/cli/adapters/core.js +2 -1
- package/dist/src/cli/adapters/core.js.map +1 -1
- package/dist/src/cli/adapters/scaffold.js +2 -1
- package/dist/src/cli/adapters/scaffold.js.map +1 -1
- package/dist/src/cli/commands/check.js +17 -17
- package/dist/src/cli/commands/check.js.map +1 -1
- package/dist/src/cli/commands/compliance.d.ts +5 -1
- package/dist/src/cli/commands/compliance.js +34 -42
- package/dist/src/cli/commands/compliance.js.map +1 -1
- package/dist/src/cli/commands/contract.js +6 -5
- package/dist/src/cli/commands/contract.js.map +1 -1
- package/dist/src/cli/commands/coverage.d.ts +1 -0
- package/dist/src/cli/commands/coverage.js +121 -0
- package/dist/src/cli/commands/coverage.js.map +1 -0
- package/dist/src/cli/commands/dashboard.d.ts +1 -1
- package/dist/src/cli/commands/dashboard.js +479 -39
- package/dist/src/cli/commands/dashboard.js.map +1 -1
- package/dist/src/cli/commands/explorer.js +8 -7
- package/dist/src/cli/commands/explorer.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/git.js +8 -9
- package/dist/src/cli/commands/git.js.map +1 -1
- package/dist/src/cli/commands/index-codebase.d.ts +4 -0
- package/dist/src/cli/commands/index-codebase.js +52 -0
- package/dist/src/cli/commands/index-codebase.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 +1 -1
- package/dist/src/cli/commands/init/scaffold-core.js +7 -6
- package/dist/src/cli/commands/init/scaffold-core.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-docs.js +4 -3
- package/dist/src/cli/commands/init/scaffold-docs.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-ops.js +3 -3
- package/dist/src/cli/commands/init/scaffold-ops.js.map +1 -1
- package/dist/src/cli/commands/init/scaffold-standards.js +11 -7
- package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -1
- package/dist/src/cli/commands/init.d.ts +2 -0
- package/dist/src/cli/commands/init.js +127 -45
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/knowledge.js +5 -32
- package/dist/src/cli/commands/knowledge.js.map +1 -1
- package/dist/src/cli/commands/lint.js +5 -4
- package/dist/src/cli/commands/lint.js.map +1 -1
- package/dist/src/cli/commands/mcp.d.ts +11 -0
- package/dist/src/cli/commands/mcp.js +130 -0
- package/dist/src/cli/commands/mcp.js.map +1 -0
- package/dist/src/cli/commands/orchestrate.d.ts +10 -9
- package/dist/src/cli/commands/orchestrate.js +132 -66
- package/dist/src/cli/commands/orchestrate.js.map +1 -1
- package/dist/src/cli/commands/plan.js +16 -14
- package/dist/src/cli/commands/plan.js.map +1 -1
- package/dist/src/cli/commands/quickstart.d.ts +9 -0
- package/dist/src/cli/commands/quickstart.js +72 -0
- package/dist/src/cli/commands/quickstart.js.map +1 -0
- package/dist/src/cli/commands/script.js +6 -5
- package/dist/src/cli/commands/script.js.map +1 -1
- package/dist/src/cli/commands/security.js +5 -8
- package/dist/src/cli/commands/security.js.map +1 -1
- package/dist/src/cli/commands/status.js +23 -19
- package/dist/src/cli/commands/status.js.map +1 -1
- package/dist/src/cli/commands/trace.d.ts +2 -0
- package/dist/src/cli/commands/trace.js +59 -61
- package/dist/src/cli/commands/trace.js.map +1 -1
- package/dist/src/cli/index.js +236 -294
- 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 +5 -5
- package/dist/src/cli/utils/claude.js +2 -1
- package/dist/src/cli/utils/claude.js.map +1 -1
- package/dist/src/cli/utils/compliance.d.ts +10 -9
- package/dist/src/cli/utils/compliance.js +10 -171
- package/dist/src/cli/utils/compliance.js.map +1 -1
- package/dist/src/cli/utils/fs.d.ts +3 -3
- package/dist/src/cli/utils/fs.js +8 -7
- package/dist/src/cli/utils/fs.js.map +1 -1
- package/dist/src/cli/utils/i18n.d.ts +5 -0
- package/dist/src/cli/utils/i18n.js +5 -0
- package/dist/src/cli/utils/i18n.js.map +1 -1
- package/dist/src/cli/utils/memory.js +9 -6
- package/dist/src/cli/utils/memory.js.map +1 -1
- package/dist/src/cli/utils/pkg.js +8 -7
- package/dist/src/cli/utils/pkg.js.map +1 -1
- package/dist/src/cli/utils/schemas.d.ts +4 -4
- package/dist/src/cli/utils/ui.d.ts +23 -0
- package/dist/src/cli/utils/ui.js +42 -0
- package/dist/src/cli/utils/ui.js.map +1 -1
- package/dist/src/contracts/tasks.d.ts +4 -4
- package/dist/src/dashboard/src/hooks/useApi.d.ts +18 -0
- package/dist/src/dashboard/src/hooks/useApi.js +47 -0
- package/dist/src/dashboard/src/hooks/useApi.js.map +1 -0
- package/dist/src/dashboard/src/hooks/useSSE.d.ts +12 -0
- package/dist/src/dashboard/src/hooks/useSSE.js +60 -0
- package/dist/src/dashboard/src/hooks/useSSE.js.map +1 -0
- package/dist/src/modules/adapters/shared.js +3 -3
- package/dist/src/modules/adapters/shared.js.map +1 -1
- package/dist/src/modules/agents/definitions.d.ts +5 -13
- package/dist/src/modules/agents/definitions.js +179 -78
- package/dist/src/modules/agents/definitions.js.map +1 -1
- package/dist/src/modules/agents/registry/analyst.js +2 -1
- package/dist/src/modules/agents/registry/analyst.js.map +1 -1
- package/dist/src/modules/agents/registry/architect.js +1 -0
- package/dist/src/modules/agents/registry/architect.js.map +1 -1
- package/dist/src/modules/agents/registry/backend.js +8 -6
- package/dist/src/modules/agents/registry/backend.js.map +1 -1
- package/dist/src/modules/agents/registry/database.js.map +1 -1
- package/dist/src/modules/agents/registry/devops.js.map +1 -1
- package/dist/src/modules/agents/registry/explorer.js +2 -0
- package/dist/src/modules/agents/registry/explorer.js.map +1 -1
- package/dist/src/modules/agents/registry/frontend.js +8 -6
- package/dist/src/modules/agents/registry/frontend.js.map +1 -1
- package/dist/src/modules/agents/registry/git.js.map +1 -1
- package/dist/src/modules/agents/registry/manager.js +11 -4
- package/dist/src/modules/agents/registry/manager.js.map +1 -1
- package/dist/src/modules/agents/registry/mobile.js +7 -5
- package/dist/src/modules/agents/registry/mobile.js.map +1 -1
- package/dist/src/modules/agents/registry/native.js +7 -5
- package/dist/src/modules/agents/registry/native.js.map +1 -1
- package/dist/src/modules/agents/registry/quality.js +11 -8
- package/dist/src/modules/agents/registry/quality.js.map +1 -1
- package/dist/src/modules/agents/registry/security.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 +50 -0
- package/dist/src/modules/engines/agent-executor.js +188 -0
- package/dist/src/modules/engines/agent-executor.js.map +1 -0
- package/dist/src/modules/engines/health-engine.d.ts +7 -1
- package/dist/src/modules/engines/health-engine.js +85 -8
- package/dist/src/modules/engines/health-engine.js.map +1 -1
- package/dist/src/modules/engines/planning-engine.d.ts +1 -1
- package/dist/src/modules/engines/planning-engine.js +5 -4
- package/dist/src/modules/engines/planning-engine.js.map +1 -1
- package/dist/src/modules/engines/quality-gate.d.ts +23 -0
- package/dist/src/modules/engines/quality-gate.js +85 -0
- package/dist/src/modules/engines/quality-gate.js.map +1 -0
- package/dist/src/modules/engines/risk-engine.js +6 -6
- package/dist/src/modules/engines/risk-engine.js.map +1 -1
- package/dist/src/modules/engines/routing-engine.d.ts +59 -1
- package/dist/src/modules/engines/routing-engine.js +353 -25
- package/dist/src/modules/engines/routing-engine.js.map +1 -1
- package/dist/src/modules/engines/types.d.ts +7 -3
- 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 +55 -0
- package/dist/src/modules/gateway/cost-tracker.js +127 -0
- package/dist/src/modules/gateway/cost-tracker.js.map +1 -0
- package/dist/src/modules/gateway/gateway.d.ts +68 -0
- package/dist/src/modules/gateway/gateway.js +235 -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 +42 -0
- package/dist/src/modules/memory/core.js +100 -0
- package/dist/src/modules/memory/core.js.map +1 -0
- 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/memory/types.d.ts +18 -0
- package/dist/src/modules/memory/types.js +2 -0
- package/dist/src/modules/memory/types.js.map +1 -0
- package/dist/src/modules/memory/vector-store.d.ts +13 -0
- package/dist/src/modules/memory/vector-store.js +75 -0
- package/dist/src/modules/memory/vector-store.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 +220 -0
- package/dist/src/shared/audit.js.map +1 -0
- package/dist/src/shared/constants.d.ts +11 -11
- package/dist/src/shared/constants.js +3 -3
- package/dist/src/shared/constants.js.map +1 -1
- 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 +37 -0
- package/dist/src/shared/pii.js +122 -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 +13 -11
- package/dist/src/shared/storage.js +18 -14
- package/dist/src/shared/storage.js.map +1 -1
- package/dist/src/shared/string.d.ts +1 -0
- package/dist/src/shared/string.js +30 -0
- package/dist/src/shared/string.js.map +1 -0
- package/dist/src/shared/types.d.ts +8 -0
- package/dist/src/shared/types.js +4 -0
- package/dist/src/shared/types.js.map +1 -1
- package/dist/tests/adapter.test.js +3 -2
- 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/check.test.d.ts +1 -0
- package/dist/tests/cli/commands/check.test.js +9 -0
- package/dist/tests/cli/commands/check.test.js.map +1 -0
- package/dist/tests/cli/commands/coverage.test.d.ts +1 -0
- package/dist/tests/cli/commands/coverage.test.js +9 -0
- package/dist/tests/cli/commands/coverage.test.js.map +1 -0
- 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/commands/exports.test.d.ts +1 -0
- package/dist/tests/cli/commands/exports.test.js +61 -0
- package/dist/tests/cli/commands/exports.test.js.map +1 -0
- package/dist/tests/cli/commands/lint.test.d.ts +1 -0
- package/dist/tests/cli/commands/lint.test.js +9 -0
- package/dist/tests/cli/commands/lint.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/core-memory.test.d.ts +1 -0
- package/dist/tests/core-memory.test.js +78 -0
- package/dist/tests/core-memory.test.js.map +1 -0
- package/dist/tests/dashboard.test.d.ts +1 -0
- package/dist/tests/dashboard.test.js +116 -0
- package/dist/tests/dashboard.test.js.map +1 -0
- package/dist/tests/fs-utils.test.js +5 -5
- package/dist/tests/fs-utils.test.js.map +1 -1
- package/dist/tests/integration/agent_flow.test.js +24 -10
- package/dist/tests/integration/agent_flow.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.d.ts +1 -0
- package/dist/tests/modules/engines/agent-executor.test.js +61 -0
- package/dist/tests/modules/engines/agent-executor.test.js.map +1 -0
- package/dist/tests/modules/engines/evaluation-engine.test.d.ts +1 -0
- package/dist/tests/modules/engines/evaluation-engine.test.js +45 -0
- package/dist/tests/modules/engines/evaluation-engine.test.js.map +1 -0
- package/dist/tests/modules/engines/health-engine.test.d.ts +1 -0
- package/dist/tests/modules/engines/health-engine.test.js +56 -0
- package/dist/tests/modules/engines/health-engine.test.js.map +1 -0
- package/dist/tests/modules/engines/planning-engine.test.d.ts +1 -0
- package/dist/tests/modules/engines/planning-engine.test.js +75 -0
- package/dist/tests/modules/engines/planning-engine.test.js.map +1 -0
- package/dist/tests/modules/engines/risk-engine.test.d.ts +1 -0
- package/dist/tests/modules/engines/risk-engine.test.js +61 -0
- package/dist/tests/modules/engines/risk-engine.test.js.map +1 -0
- package/dist/tests/modules/engines/routing-engine.test.d.ts +1 -0
- package/dist/tests/modules/engines/routing-engine.test.js +56 -0
- package/dist/tests/modules/engines/routing-engine.test.js.map +1 -0
- 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 +74 -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/modules/memory/vector-store.test.d.ts +1 -0
- package/dist/tests/modules/memory/vector-store.test.js +109 -0
- package/dist/tests/modules/memory/vector-store.test.js.map +1 -0
- package/dist/tests/orchestrator-dependencies.test.js +40 -22
- package/dist/tests/orchestrator-dependencies.test.js.map +1 -1
- package/dist/tests/planning-engine.test.js +9 -8
- package/dist/tests/planning-engine.test.js.map +1 -1
- package/dist/tests/risk-engine.test.d.ts +1 -0
- package/dist/tests/risk-engine.test.js +44 -0
- package/dist/tests/risk-engine.test.js.map +1 -0
- 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/status-cost.test.js +15 -24
- package/dist/tests/status-cost.test.js.map +1 -1
- package/dist/tests/status.test.js +16 -17
- package/dist/tests/status.test.js.map +1 -1
- 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/dist/tests/trace-replay.test.js +34 -40
- package/dist/tests/trace-replay.test.js.map +1 -1
- package/dist/ui/assets/index-B-d2ejS8.js +519 -0
- package/dist/ui/assets/index-CyXywq5G.css +1 -0
- package/dist/ui/index.html +2 -2
- package/dist/vitest.config.js +5 -5
- package/dist/vitest.config.js.map +1 -1
- package/framework-mcp/README.md +339 -25
- package/framework-mcp/dist/dashboard/assets/index-BAPGLiWE.js +267 -0
- package/framework-mcp/dist/dashboard/index.html +15 -0
- package/framework-mcp/dist/framework-mcp/src/constants.js +64 -0
- package/framework-mcp/dist/framework-mcp/src/index.js +156 -0
- package/framework-mcp/dist/framework-mcp/src/resources/index.js +58 -0
- package/framework-mcp/dist/framework-mcp/src/tools/control_plane/locking.js +84 -0
- package/framework-mcp/dist/framework-mcp/src/tools/control_plane/registry.js +35 -0
- package/framework-mcp/dist/framework-mcp/src/tools/definitions.js +197 -0
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +64 -0
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/patch_file.js +34 -0
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/read_file.js +51 -0
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/replace_text.js +50 -0
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/write_file.js +55 -0
- package/framework-mcp/dist/framework-mcp/src/tools/framework/audit_deps.js +41 -0
- package/framework-mcp/dist/framework-mcp/src/tools/framework/get_status.js +5 -0
- package/framework-mcp/dist/framework-mcp/src/tools/framework/orchestrate.js +5 -0
- package/framework-mcp/dist/framework-mcp/src/tools/framework/run_tests.js +27 -0
- package/framework-mcp/dist/framework-mcp/src/tools/framework/submit_plan.js +13 -0
- package/framework-mcp/dist/framework-mcp/src/tools/framework/update_contract_hash.js +5 -0
- package/framework-mcp/dist/framework-mcp/src/tools/framework/update_memory.js +8 -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 +126 -0
- package/framework-mcp/dist/framework-mcp/src/tools/memory/delete_knowledge.js +28 -0
- package/framework-mcp/dist/framework-mcp/src/tools/memory/get_insights.js +22 -0
- package/framework-mcp/dist/framework-mcp/src/tools/memory/read_memory.js +28 -0
- package/framework-mcp/dist/framework-mcp/src/tools/memory/search_knowledge.js +48 -0
- package/framework-mcp/dist/framework-mcp/src/tools/memory/store_knowledge.js +30 -0
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/ask_human.js +30 -0
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/log_action.js +22 -0
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/send_message.js +94 -0
- package/framework-mcp/dist/framework-mcp/src/tools/observability/check_ports.js +26 -0
- package/framework-mcp/dist/framework-mcp/src/tools/observability/get_health.js +19 -0
- package/framework-mcp/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +165 -0
- package/framework-mcp/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +134 -0
- package/framework-mcp/dist/framework-mcp/src/tools/quality/check_lint.js +30 -0
- package/framework-mcp/dist/framework-mcp/src/tools/schemas.js +182 -0
- package/framework-mcp/dist/framework-mcp/src/tools/search/get_gaps.js +48 -0
- package/framework-mcp/dist/framework-mcp/src/tools/search/get_map.js +43 -0
- package/framework-mcp/dist/framework-mcp/src/tools/search/grep_search.js +78 -0
- package/framework-mcp/dist/framework-mcp/src/tools/search/list_dir.js +28 -0
- package/framework-mcp/dist/framework-mcp/src/tools/shell/run_command.js +121 -0
- package/framework-mcp/dist/framework-mcp/src/tools/types.js +1 -0
- package/framework-mcp/dist/framework-mcp/src/utils/cli.js +59 -0
- package/framework-mcp/dist/framework-mcp/src/utils/compliance.js +292 -0
- package/framework-mcp/dist/framework-mcp/src/utils/errors.js +68 -0
- package/framework-mcp/dist/framework-mcp/src/utils/fs.js +47 -0
- package/framework-mcp/dist/framework-mcp/src/utils/memory.js +74 -0
- package/framework-mcp/dist/framework-mcp/src/utils/metrics.js +56 -0
- package/framework-mcp/dist/framework-mcp/src/utils/permissions.js +71 -0
- package/framework-mcp/dist/framework-mcp/src/utils/security.js +60 -0
- package/framework-mcp/dist/framework-mcp/src/utils/storage.js +207 -0
- package/framework-mcp/dist/framework-mcp/src/utils/types.js +16 -0
- package/framework-mcp/dist/framework-mcp/src/utils/zod-to-mcp.js +79 -0
- package/framework-mcp/dist/index.js +14 -2
- package/framework-mcp/dist/src/cli/utils/memory.js +279 -0
- package/framework-mcp/dist/src/cli/utils/time.js +27 -0
- package/framework-mcp/dist/src/cli/utils/ui.js +100 -0
- package/framework-mcp/dist/src/modules/memory/core.js +99 -0
- package/framework-mcp/dist/src/modules/memory/embedding.js +130 -0
- package/framework-mcp/dist/src/modules/memory/types.js +1 -0
- package/framework-mcp/dist/src/modules/memory/vector-store.js +74 -0
- package/framework-mcp/dist/src/shared/constants.js +187 -0
- package/framework-mcp/dist/src/shared/fs.js +53 -0
- package/framework-mcp/dist/src/shared/logger.js +126 -0
- package/framework-mcp/dist/src/shared/pii.js +121 -0
- package/framework-mcp/dist/src/shared/storage.js +211 -0
- package/framework-mcp/dist/src/shared/types.js +16 -0
- package/framework-mcp/dist/tools/definitions.js +79 -247
- package/framework-mcp/dist/tools/index.js +37 -0
- package/framework-mcp/dist/tools/schemas.js +133 -0
- package/framework-mcp/dist/utils/types.js +4 -0
- package/framework-mcp/dist/utils/zod-to-mcp.js +77 -0
- package/framework-mcp/package.json +2 -2
- package/mcp.json +5 -4
- package/package.json +19 -17
- package/templates/full/ATABEY_FULL.md +515 -0
- package/templates/standards/crud-governance.md +1 -1
- package/templates/standards/logging-and-secrets.md +1 -1
- package/templates/standards/performance-standards.md +2 -2
- package/templates/standards/quality-standards.md +1 -1
- package/dist/ui/assets/index-Bkt7APzu.css +0 -1
- package/dist/ui/assets/index-CeX-06mI.js +0 -49
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { appendFile, ensureDir } from "./fs.js";
|
|
4
|
+
import { containsPII, maskObject, maskText } from "./pii.js";
|
|
5
|
+
export var LogLevel;
|
|
6
|
+
(function (LogLevel) {
|
|
7
|
+
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
8
|
+
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
9
|
+
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
10
|
+
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
11
|
+
LogLevel[LogLevel["FATAL"] = 4] = "FATAL";
|
|
12
|
+
})(LogLevel || (LogLevel = {}));
|
|
13
|
+
export class EnterpriseLogger {
|
|
14
|
+
config;
|
|
15
|
+
static instance;
|
|
16
|
+
constructor() {
|
|
17
|
+
const isProd = process.env.NODE_ENV === "production";
|
|
18
|
+
this.config = {
|
|
19
|
+
minLevel: isProd ? LogLevel.INFO : LogLevel.DEBUG,
|
|
20
|
+
enableColors: !isProd,
|
|
21
|
+
jsonFormat: isProd,
|
|
22
|
+
enablePiiMasking: true, // KVKK: PII masking ON by default
|
|
23
|
+
piiWarning: true,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
static getInstance() {
|
|
27
|
+
if (!EnterpriseLogger.instance) {
|
|
28
|
+
EnterpriseLogger.instance = new EnterpriseLogger();
|
|
29
|
+
}
|
|
30
|
+
return EnterpriseLogger.instance;
|
|
31
|
+
}
|
|
32
|
+
configure(config) {
|
|
33
|
+
this.config = { ...this.config, ...config };
|
|
34
|
+
if (this.config.logFile) {
|
|
35
|
+
try {
|
|
36
|
+
ensureDir(path.dirname(this.config.logFile));
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
// Directly write to stderr — using console here would be circular
|
|
40
|
+
process.stderr.write(`[Logger] Failed to create log directory: ${err}\n`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
formatMessage(level, message, meta) {
|
|
45
|
+
const timestamp = new Date().toISOString();
|
|
46
|
+
const pid = process.pid;
|
|
47
|
+
// [KVKK] PII masking — mask sensitive data before logging
|
|
48
|
+
const safeMessage = this.config.enablePiiMasking ? maskText(message) : message;
|
|
49
|
+
const safeMeta = this.config.enablePiiMasking && meta ? maskObject(meta) : meta;
|
|
50
|
+
// [KVKK] Warn if PII detected in production
|
|
51
|
+
if (this.config.piiWarning && (containsPII(message) || (meta && containsPII(JSON.stringify(meta))))) {
|
|
52
|
+
process.stderr.write(`[PII WARNING] Potential PII detected in log at ${timestamp}\n`);
|
|
53
|
+
}
|
|
54
|
+
if (this.config.jsonFormat) {
|
|
55
|
+
return JSON.stringify({
|
|
56
|
+
timestamp,
|
|
57
|
+
level: LogLevel[level],
|
|
58
|
+
pid,
|
|
59
|
+
message: safeMessage,
|
|
60
|
+
meta: safeMeta,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const levelName = LogLevel[level].padEnd(5);
|
|
64
|
+
let coloredLevel = levelName;
|
|
65
|
+
if (this.config.enableColors) {
|
|
66
|
+
switch (level) {
|
|
67
|
+
case LogLevel.DEBUG:
|
|
68
|
+
coloredLevel = chalk.blue(levelName);
|
|
69
|
+
break;
|
|
70
|
+
case LogLevel.INFO:
|
|
71
|
+
coloredLevel = chalk.green(levelName);
|
|
72
|
+
break;
|
|
73
|
+
case LogLevel.WARN:
|
|
74
|
+
coloredLevel = chalk.yellow(levelName);
|
|
75
|
+
break;
|
|
76
|
+
case LogLevel.ERROR:
|
|
77
|
+
coloredLevel = chalk.red(levelName);
|
|
78
|
+
break;
|
|
79
|
+
case LogLevel.FATAL:
|
|
80
|
+
coloredLevel = chalk.bgRed.white.bold(levelName);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const metaStr = safeMeta ? ` | Meta: ${JSON.stringify(safeMeta)}` : "";
|
|
85
|
+
return `[${timestamp}] [PID:${pid}] [${coloredLevel}]: ${safeMessage}${metaStr}`;
|
|
86
|
+
}
|
|
87
|
+
log(level, message, meta) {
|
|
88
|
+
if (level < this.config.minLevel)
|
|
89
|
+
return;
|
|
90
|
+
const formatted = this.formatMessage(level, message, meta);
|
|
91
|
+
// Route to stderr for ERROR/FATAL, stdout otherwise.
|
|
92
|
+
// Using process.write directly here is intentional — this IS the logger.
|
|
93
|
+
if (level >= LogLevel.ERROR) {
|
|
94
|
+
process.stderr.write(formatted + "\n");
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
process.stdout.write(formatted + "\n");
|
|
98
|
+
}
|
|
99
|
+
// Output to file if configured
|
|
100
|
+
if (this.config.logFile) {
|
|
101
|
+
try {
|
|
102
|
+
appendFile(this.config.logFile, formatted + "\n");
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
// Directly write to stderr — using console here would be circular
|
|
106
|
+
process.stderr.write(`[Logger] Failed to write to log file: ${err}\n`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
debug(message, meta) {
|
|
111
|
+
this.log(LogLevel.DEBUG, message, meta);
|
|
112
|
+
}
|
|
113
|
+
info(message, meta) {
|
|
114
|
+
this.log(LogLevel.INFO, message, meta);
|
|
115
|
+
}
|
|
116
|
+
warn(message, meta) {
|
|
117
|
+
this.log(LogLevel.WARN, message, meta);
|
|
118
|
+
}
|
|
119
|
+
error(message, meta) {
|
|
120
|
+
this.log(LogLevel.ERROR, message, meta);
|
|
121
|
+
}
|
|
122
|
+
fatal(message, meta) {
|
|
123
|
+
this.log(LogLevel.FATAL, message, meta);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export const logger = EnterpriseLogger.getInstance();
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [PII] Personally Identifiable Information Masking Service
|
|
3
|
+
*
|
|
4
|
+
* Detects and masks sensitive data in compliance with KVKK/GDPR.
|
|
5
|
+
* Used in audit log, logger, and storage layers.
|
|
6
|
+
*
|
|
7
|
+
* Supported patterns:
|
|
8
|
+
* - Email addresses
|
|
9
|
+
* - Phone numbers
|
|
10
|
+
* - TC Identification number
|
|
11
|
+
* - API keys / tokens
|
|
12
|
+
* - IP addresses
|
|
13
|
+
* - Credit card numbers
|
|
14
|
+
* - Custom names (optional)
|
|
15
|
+
*/
|
|
16
|
+
// Sensitive patterns to detect and mask
|
|
17
|
+
const SENSITIVE_PATTERNS = [
|
|
18
|
+
// Email
|
|
19
|
+
{ pattern: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, replacement: "***@***" },
|
|
20
|
+
// Phone (international and Turkish)
|
|
21
|
+
{ pattern: /(\+90|0)?\s?[0-9]{3}\s?[0-9]{3}\s?[0-9]{2}\s?[0-9]{2}/g, replacement: "***-***-****" },
|
|
22
|
+
// TC Kimlik (11 digits starting with 1-9)
|
|
23
|
+
{ pattern: /\b[1-9][0-9]{10}\b/g, replacement: "***********" },
|
|
24
|
+
// API keys (common formats: sk-..., pk-..., xai-..., etc.)
|
|
25
|
+
{ pattern: /\b(sk-[a-zA-Z0-9]{20,}|pk-[a-zA-Z0-9]{20,}|xai-[a-zA-Z0-9]{20,}|AIza[0-9A-Za-z_-]{35}|ghp_[a-zA-Z0-9]{36,}|gho_[a-zA-Z0-9]{36,})\b/g, replacement: "***-REDACTED-***" },
|
|
26
|
+
// Bearer tokens in Authorization headers
|
|
27
|
+
{ pattern: /Bearer\s+[a-zA-Z0-9._-]+/g, replacement: "Bearer ***-REDACTED-***" },
|
|
28
|
+
// IP addresses
|
|
29
|
+
{ pattern: /\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b/g, replacement: "***.***.***.***" },
|
|
30
|
+
// Credit card (16 digits, optional spaces/dashes)
|
|
31
|
+
{ pattern: /\b(?:\d[ -]*?){13,16}\b/g, replacement: "****-****-****-****" },
|
|
32
|
+
// JWT tokens
|
|
33
|
+
{ pattern: /eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+/g, replacement: "***-JWT-REDACTED-***" },
|
|
34
|
+
// Password fields in JSON
|
|
35
|
+
{ pattern: /"(password|passwd|secret|api_key|apiKey|apikey)"\s*:\s*"[^"]+"/gi, replacement: "\"$1\": \"***-REDACTED-***\"" },
|
|
36
|
+
];
|
|
37
|
+
// Fields that are considered sensitive and should always be redacted in structured data
|
|
38
|
+
const SENSITIVE_FIELDS = [
|
|
39
|
+
"password", "passwd", "secret", "apiKey", "api_key", "apikey",
|
|
40
|
+
"token", "accessToken", "refreshToken", "authToken",
|
|
41
|
+
"authorization", "Authorization",
|
|
42
|
+
"email", "phone", "phoneNumber", "telephone",
|
|
43
|
+
"creditCard", "cvv", "ssn", "tcKimlik", "identityNumber",
|
|
44
|
+
"ipAddress",
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Mask sensitive data in a text string.
|
|
48
|
+
*/
|
|
49
|
+
export function maskText(text) {
|
|
50
|
+
if (!text || typeof text !== "string")
|
|
51
|
+
return text;
|
|
52
|
+
let masked = text;
|
|
53
|
+
for (const { pattern, replacement } of SENSITIVE_PATTERNS) {
|
|
54
|
+
masked = masked.replace(pattern, replacement);
|
|
55
|
+
}
|
|
56
|
+
return masked;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Recursively mask sensitive fields in an object.
|
|
60
|
+
* Returns a new object with sensitive values redacted.
|
|
61
|
+
*/
|
|
62
|
+
export function maskObject(obj, depth = 0) {
|
|
63
|
+
if (depth > 10)
|
|
64
|
+
return obj; // Prevent infinite recursion
|
|
65
|
+
if (obj === null || obj === undefined)
|
|
66
|
+
return obj;
|
|
67
|
+
if (typeof obj === "string")
|
|
68
|
+
return maskText(obj);
|
|
69
|
+
if (typeof obj !== "object")
|
|
70
|
+
return obj;
|
|
71
|
+
if (Array.isArray(obj)) {
|
|
72
|
+
return obj.map(item => maskObject(item, depth + 1));
|
|
73
|
+
}
|
|
74
|
+
const result = {};
|
|
75
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
76
|
+
// Check if the key itself is a sensitive field
|
|
77
|
+
if (SENSITIVE_FIELDS.includes(key)) {
|
|
78
|
+
result[key] = typeof value === "string" ? "***-REDACTED-***" : maskObject(value, depth + 1);
|
|
79
|
+
}
|
|
80
|
+
else if (typeof value === "string") {
|
|
81
|
+
result[key] = maskText(value);
|
|
82
|
+
}
|
|
83
|
+
else if (typeof value === "object") {
|
|
84
|
+
result[key] = maskObject(value, depth + 1);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
result[key] = value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if a string contains potential PII.
|
|
94
|
+
* Useful for warning before sending data to external APIs.
|
|
95
|
+
*/
|
|
96
|
+
export function containsPII(text) {
|
|
97
|
+
for (const { pattern } of SENSITIVE_PATTERNS) {
|
|
98
|
+
if (pattern.test(text))
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Classify a piece of data based on content analysis.
|
|
105
|
+
*/
|
|
106
|
+
export function classifyData(text) {
|
|
107
|
+
if (!text)
|
|
108
|
+
return "public";
|
|
109
|
+
// Check for highly sensitive data
|
|
110
|
+
if (/\b(sk-[a-zA-Z0-9]{20,}|Bearer\s+|eyJ[a-zA-Z0-9_-]+\.)/.test(text) ||
|
|
111
|
+
/\b[1-9][0-9]{10}\b/.test(text) ||
|
|
112
|
+
/"(password|secret|apiKey)"/i.test(text)) {
|
|
113
|
+
return "restricted";
|
|
114
|
+
}
|
|
115
|
+
// Check for moderately sensitive data
|
|
116
|
+
if (/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/.test(text) ||
|
|
117
|
+
/(\+90|0)?\s?[0-9]{3}\s?[0-9]{3}\s?[0-9]{2}\s?[0-9]{2}/.test(text)) {
|
|
118
|
+
return "confidential";
|
|
119
|
+
}
|
|
120
|
+
return "internal";
|
|
121
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import Database from "better-sqlite3";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { getFrameworkDir } from "../cli/utils/memory.js";
|
|
5
|
+
import { logger } from "./logger.js";
|
|
6
|
+
import { asAgentID, asLogID, asMessageID, asTaskID } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* [DB] Atabey Storage Engine
|
|
9
|
+
* Central SQLite database for enterprise-scale agent state management.
|
|
10
|
+
*/
|
|
11
|
+
export class AtabeyStorage {
|
|
12
|
+
static db = null;
|
|
13
|
+
static getDB() {
|
|
14
|
+
if (!this.db) {
|
|
15
|
+
const frameworkDir = getFrameworkDir();
|
|
16
|
+
if (!fs.existsSync(frameworkDir)) {
|
|
17
|
+
fs.mkdirSync(frameworkDir, { recursive: true });
|
|
18
|
+
}
|
|
19
|
+
const dbPath = path.join(frameworkDir, "atabey.db");
|
|
20
|
+
this.db = new Database(dbPath);
|
|
21
|
+
this.initializeSchema();
|
|
22
|
+
}
|
|
23
|
+
return this.db;
|
|
24
|
+
}
|
|
25
|
+
static initializeSchema() {
|
|
26
|
+
const db = this.db;
|
|
27
|
+
// Agents Table
|
|
28
|
+
db.exec(`
|
|
29
|
+
CREATE TABLE IF NOT EXISTS agents (
|
|
30
|
+
name TEXT PRIMARY KEY,
|
|
31
|
+
state TEXT DEFAULT 'READY',
|
|
32
|
+
task TEXT DEFAULT 'Idle',
|
|
33
|
+
last_updated DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
34
|
+
)
|
|
35
|
+
`);
|
|
36
|
+
// Messages (Hermes) Table
|
|
37
|
+
db.exec(`
|
|
38
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
39
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
40
|
+
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
41
|
+
sender TEXT,
|
|
42
|
+
receiver TEXT,
|
|
43
|
+
category TEXT,
|
|
44
|
+
content TEXT,
|
|
45
|
+
trace_id TEXT,
|
|
46
|
+
parent_id TEXT,
|
|
47
|
+
status TEXT DEFAULT 'PENDING',
|
|
48
|
+
priority TEXT DEFAULT 'NORMAL',
|
|
49
|
+
requires_approval BOOLEAN DEFAULT 0
|
|
50
|
+
)
|
|
51
|
+
`);
|
|
52
|
+
// Tasks Table
|
|
53
|
+
db.exec(`
|
|
54
|
+
CREATE TABLE IF NOT EXISTS tasks (
|
|
55
|
+
id TEXT PRIMARY KEY,
|
|
56
|
+
trace_id TEXT,
|
|
57
|
+
description TEXT,
|
|
58
|
+
agent TEXT,
|
|
59
|
+
status TEXT DEFAULT 'PENDING',
|
|
60
|
+
priority TEXT DEFAULT 'NORMAL',
|
|
61
|
+
dependencies TEXT, -- JSON Array
|
|
62
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
63
|
+
)
|
|
64
|
+
`);
|
|
65
|
+
// Logs Table
|
|
66
|
+
db.exec(`
|
|
67
|
+
CREATE TABLE IF NOT EXISTS logs (
|
|
68
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
69
|
+
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
70
|
+
agent TEXT,
|
|
71
|
+
action TEXT,
|
|
72
|
+
trace_id TEXT,
|
|
73
|
+
status TEXT,
|
|
74
|
+
summary TEXT,
|
|
75
|
+
findings TEXT
|
|
76
|
+
)
|
|
77
|
+
`);
|
|
78
|
+
// Metadata (State) Table
|
|
79
|
+
db.exec(`
|
|
80
|
+
CREATE TABLE IF NOT EXISTS metadata (
|
|
81
|
+
key TEXT PRIMARY KEY,
|
|
82
|
+
value TEXT
|
|
83
|
+
)
|
|
84
|
+
`);
|
|
85
|
+
}
|
|
86
|
+
// --- Agent Operations ---
|
|
87
|
+
static updateAgentStatus(name, state, task, lastUpdated) {
|
|
88
|
+
const db = this.getDB();
|
|
89
|
+
const cleanName = name.replace("@", "");
|
|
90
|
+
const timestamp = lastUpdated || new Date().toISOString();
|
|
91
|
+
db.prepare(`
|
|
92
|
+
INSERT INTO agents (name, state, task, last_updated)
|
|
93
|
+
VALUES (?, ?, ?, ?)
|
|
94
|
+
ON CONFLICT(name) DO UPDATE SET
|
|
95
|
+
state = excluded.state,
|
|
96
|
+
task = excluded.task,
|
|
97
|
+
last_updated = excluded.last_updated
|
|
98
|
+
`).run(cleanName, state, task, timestamp);
|
|
99
|
+
}
|
|
100
|
+
static getAllAgents() {
|
|
101
|
+
return this.getDB().prepare("SELECT * FROM agents").all();
|
|
102
|
+
}
|
|
103
|
+
// --- Message Operations ---
|
|
104
|
+
static saveMessage(msg) {
|
|
105
|
+
const db = this.getDB();
|
|
106
|
+
db.prepare(`
|
|
107
|
+
INSERT INTO messages (sender, receiver, category, content, trace_id, parent_id, status, priority, requires_approval)
|
|
108
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
109
|
+
`).run(msg.from, msg.to, msg.category, msg.content, msg.traceId, msg.parentId || null, msg.status || "PENDING", msg.priority || "NORMAL", msg.requiresApproval ? 1 : 0);
|
|
110
|
+
}
|
|
111
|
+
static getPendingMessages() {
|
|
112
|
+
const rows = this.getDB().prepare("SELECT * FROM messages WHERE status IN ('PENDING', 'APPROVED') ORDER BY priority DESC, timestamp ASC").all();
|
|
113
|
+
return rows.map(r => ({
|
|
114
|
+
id: asMessageID(r.id),
|
|
115
|
+
timestamp: r.timestamp,
|
|
116
|
+
from: asAgentID(r.sender),
|
|
117
|
+
to: asAgentID(r.receiver),
|
|
118
|
+
category: r.category,
|
|
119
|
+
content: r.content,
|
|
120
|
+
traceId: r.trace_id,
|
|
121
|
+
parentId: r.parent_id ? asTaskID(r.parent_id) : undefined,
|
|
122
|
+
status: r.status,
|
|
123
|
+
priority: r.priority,
|
|
124
|
+
requiresApproval: r.requires_approval === 1
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
static updateMessageStatus(id, status) {
|
|
128
|
+
this.getDB().prepare("UPDATE messages SET status = ? WHERE id = ?").run(status, id);
|
|
129
|
+
}
|
|
130
|
+
// --- Task Operations ---
|
|
131
|
+
static saveTask(task) {
|
|
132
|
+
const db = this.getDB();
|
|
133
|
+
db.prepare(`
|
|
134
|
+
INSERT INTO tasks (id, trace_id, description, agent, status, priority, dependencies)
|
|
135
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
136
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
137
|
+
status = excluded.status,
|
|
138
|
+
description = excluded.description
|
|
139
|
+
`).run(task.id, task.traceId, task.description, task.agent, task.status, task.priority, JSON.stringify(task.dependencies || []));
|
|
140
|
+
}
|
|
141
|
+
static getTasks(traceId) {
|
|
142
|
+
const db = this.getDB();
|
|
143
|
+
let rows;
|
|
144
|
+
if (traceId) {
|
|
145
|
+
rows = db.prepare("SELECT * FROM tasks WHERE trace_id = ?").all(traceId);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
rows = db.prepare("SELECT * FROM tasks").all();
|
|
149
|
+
}
|
|
150
|
+
return rows.map(r => {
|
|
151
|
+
let deps = [];
|
|
152
|
+
try {
|
|
153
|
+
const parsed = JSON.parse(r.dependencies || "[]");
|
|
154
|
+
// Handle cases where dependencies might be double-stringified or are raw JSON strings
|
|
155
|
+
deps = Array.isArray(parsed) ? parsed : JSON.parse(parsed);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
logger.warn("Failed to parse task dependencies, using empty array", err);
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
id: asTaskID(r.id),
|
|
162
|
+
traceId: r.trace_id,
|
|
163
|
+
description: r.description,
|
|
164
|
+
agent: asAgentID(r.agent),
|
|
165
|
+
status: r.status,
|
|
166
|
+
priority: r.priority,
|
|
167
|
+
dependencies: deps
|
|
168
|
+
};
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
static getLogs(agentName) {
|
|
172
|
+
const db = this.getDB();
|
|
173
|
+
let rows;
|
|
174
|
+
const cleanName = agentName ? agentName.replace("@", "") : undefined;
|
|
175
|
+
if (cleanName) {
|
|
176
|
+
rows = db.prepare("SELECT * FROM logs WHERE agent = ? ORDER BY timestamp DESC").all(cleanName);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
rows = db.prepare("SELECT * FROM logs ORDER BY timestamp DESC").all();
|
|
180
|
+
}
|
|
181
|
+
return rows.map(r => ({
|
|
182
|
+
id: asLogID(r.id),
|
|
183
|
+
timestamp: r.timestamp,
|
|
184
|
+
agent: asAgentID(r.agent),
|
|
185
|
+
action: r.action,
|
|
186
|
+
trace_id: r.trace_id || undefined,
|
|
187
|
+
status: r.status,
|
|
188
|
+
summary: r.summary,
|
|
189
|
+
findings: r.findings || undefined
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
// --- Metadata Operations ---
|
|
193
|
+
static setMetadata(key, value) {
|
|
194
|
+
this.getDB().prepare(`
|
|
195
|
+
INSERT INTO metadata (key, value) VALUES (?, ?)
|
|
196
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value
|
|
197
|
+
`).run(key, value);
|
|
198
|
+
}
|
|
199
|
+
static getMetadata(key) {
|
|
200
|
+
const row = this.getDB().prepare("SELECT value FROM metadata WHERE key = ?").get(key);
|
|
201
|
+
return row ? row.value : null;
|
|
202
|
+
}
|
|
203
|
+
static reset() {
|
|
204
|
+
if (this.db) {
|
|
205
|
+
this.db.close();
|
|
206
|
+
this.db = null;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/** @deprecated Use AtabeyStorage instead. Kept for backward compatibility. */
|
|
211
|
+
export const Storage = AtabeyStorage;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Atabey Framework — Internal Branded Types
|
|
3
|
+
* Used to enforce absolute type safety within the core orchestration logic.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Casts a raw string to a Branded Type.
|
|
7
|
+
* Use this only at the boundaries of the system.
|
|
8
|
+
*/
|
|
9
|
+
export function asTraceID(val) { return val; }
|
|
10
|
+
export function asAgentID(val) { return val; }
|
|
11
|
+
export function asPhaseID(val) { return val; }
|
|
12
|
+
export function asProjectPath(val) { return val; }
|
|
13
|
+
export function asMessageID(val) { return val; }
|
|
14
|
+
export function asTaskID(val) { return val; }
|
|
15
|
+
export function asLogID(val) { return val; }
|
|
16
|
+
export function asPlanID(val) { return val; }
|