atabey 0.0.23 → 0.0.26
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 +5 -0
- package/dist/atabey/src/cli/commands/dashboard.js +20 -19
- package/dist/atabey/src/cli/commands/dashboard.js.map +1 -1
- package/dist/atabey/src/cli/commands/init/scaffold-core.js +10 -1
- package/dist/atabey/src/cli/commands/init/scaffold-core.js.map +1 -1
- package/dist/atabey/src/cli/commands/init/scaffold-docs.js +2 -2
- package/dist/atabey/src/cli/commands/init/scaffold-docs.js.map +1 -1
- package/dist/atabey/src/cli/commands/init/scaffold-standards.js +1 -1
- package/dist/atabey/src/cli/commands/init.js +12 -18
- package/dist/atabey/src/cli/commands/init.js.map +1 -1
- package/dist/atabey/src/cli/commands/mcp.js +1 -1
- package/dist/atabey/src/cli/commands/mcp.js.map +1 -1
- package/dist/atabey/src/cli/commands/orchestrate.d.ts +8 -8
- package/dist/atabey/src/cli/index.js +50 -3
- package/dist/atabey/src/cli/index.js.map +1 -1
- package/dist/atabey/src/cli/utils/config-schema.d.ts +19 -19
- package/dist/atabey/src/cli/utils/i18n.d.ts +9 -4
- package/dist/atabey/src/cli/utils/i18n.js +26 -31
- package/dist/atabey/src/cli/utils/i18n.js.map +1 -1
- package/dist/atabey/src/cli/utils/pkg.js +1 -0
- package/dist/atabey/src/cli/utils/pkg.js.map +1 -1
- package/dist/atabey/src/cli/utils/schemas.d.ts +6 -6
- package/dist/atabey/src/cli/utils/validate-registry.js +5 -4
- package/dist/atabey/src/cli/utils/validate-registry.js.map +1 -1
- package/dist/atabey/src/contracts/tasks.d.ts +4 -4
- package/dist/atabey/src/modules/agents/registry/manager.js +1 -1
- package/dist/atabey/src/modules/agents/registry/security.js +1 -1
- package/dist/atabey/src/modules/agents/registry/security.js.map +1 -1
- package/dist/atabey/src/modules/contracts/api.d.ts +6 -6
- package/dist/atabey/src/modules/engines/agent-executor.js +82 -47
- package/dist/atabey/src/modules/engines/agent-executor.js.map +1 -1
- package/dist/atabey/src/modules/engines/agent-loop.d.ts +5 -2
- package/dist/atabey/src/modules/engines/agent-loop.js +39 -13
- package/dist/atabey/src/modules/engines/agent-loop.js.map +1 -1
- package/dist/atabey/src/modules/engines/file-lock.d.ts +18 -8
- package/dist/atabey/src/modules/engines/file-lock.js +95 -101
- package/dist/atabey/src/modules/engines/file-lock.js.map +1 -1
- package/dist/atabey/src/modules/engines/policy-engine.js +5 -3
- package/dist/atabey/src/modules/engines/policy-engine.js.map +1 -1
- package/dist/atabey/src/modules/engines/routing-engine.d.ts +3 -0
- package/dist/atabey/src/modules/engines/routing-engine.js +14 -4
- package/dist/atabey/src/modules/engines/routing-engine.js.map +1 -1
- package/dist/atabey/src/modules/engines/sandbox.d.ts +31 -0
- package/dist/atabey/src/modules/engines/sandbox.js +57 -0
- package/dist/atabey/src/modules/engines/sandbox.js.map +1 -0
- package/dist/atabey/src/modules/engines/worker-pool.d.ts +8 -0
- package/dist/atabey/src/modules/engines/worker-pool.js +9 -0
- package/dist/atabey/src/modules/engines/worker-pool.js.map +1 -0
- package/dist/atabey/src/modules/engines/worker-script.d.ts +8 -0
- package/dist/atabey/src/modules/engines/worker-script.js +99 -0
- package/dist/atabey/src/modules/engines/worker-script.js.map +1 -0
- package/dist/atabey/src/modules/memory/core.js +1 -1
- package/dist/atabey/src/modules/memory/core.js.map +1 -1
- package/dist/atabey/src/shared/file-lock.d.ts +1 -0
- package/dist/atabey/src/shared/file-lock.js +2 -0
- package/dist/atabey/src/shared/file-lock.js.map +1 -0
- package/dist/atabey/src/shared/job-queue.d.ts +1 -0
- package/dist/atabey/src/shared/job-queue.js +2 -0
- package/dist/atabey/src/shared/job-queue.js.map +1 -0
- package/dist/atabey/src/shared/resilience.d.ts +1 -0
- package/dist/atabey/src/shared/resilience.js +2 -0
- package/dist/atabey/src/shared/resilience.js.map +1 -0
- package/dist/atabey/src/shared/sandbox-runtime.d.ts +1 -0
- package/dist/atabey/src/shared/sandbox-runtime.js +2 -0
- package/dist/atabey/src/shared/sandbox-runtime.js.map +1 -0
- package/dist/atabey/src/shared/sandbox.d.ts +1 -0
- package/dist/atabey/src/shared/sandbox.js +2 -0
- package/dist/atabey/src/shared/sandbox.js.map +1 -0
- package/dist/atabey/src/shared/storage.d.ts +8 -0
- package/dist/atabey/src/shared/storage.js +51 -40
- package/dist/atabey/src/shared/storage.js.map +1 -1
- package/dist/atabey/src/shared/worker-pool.d.ts +1 -0
- package/dist/atabey/src/shared/worker-pool.js +2 -0
- package/dist/atabey/src/shared/worker-pool.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js +114 -5
- package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/loop-detector.d.ts +1 -0
- package/dist/atabey-mcp/src/mcp/utils/loop-detector.js +57 -6
- package/dist/atabey-mcp/src/mcp/utils/loop-detector.js.map +1 -1
- package/dist/atabey-mcp/src/shared/storage.d.ts +9 -0
- package/dist/atabey-mcp/src/shared/storage.js +51 -0
- package/dist/atabey-mcp/src/shared/storage.js.map +1 -1
- package/dist/shared/src/audit-chain.d.ts +51 -0
- package/dist/shared/src/audit-chain.js +85 -0
- package/dist/shared/src/audit-chain.js.map +1 -0
- package/dist/shared/src/audit.d.ts +8 -0
- package/dist/shared/src/audit.js +82 -18
- package/dist/shared/src/audit.js.map +1 -1
- package/dist/shared/src/file-lock.d.ts +85 -0
- package/dist/shared/src/file-lock.js +246 -0
- package/dist/shared/src/file-lock.js.map +1 -0
- package/dist/shared/src/index.d.ts +9 -0
- package/dist/shared/src/index.js +9 -0
- package/dist/shared/src/index.js.map +1 -1
- package/dist/shared/src/job-queue.d.ts +53 -0
- package/dist/shared/src/job-queue.js +127 -0
- package/dist/shared/src/job-queue.js.map +1 -0
- package/dist/shared/src/policy-gate.d.ts +42 -0
- package/dist/shared/src/policy-gate.js +148 -0
- package/dist/shared/src/policy-gate.js.map +1 -0
- package/dist/shared/src/resilience.d.ts +84 -0
- package/dist/shared/src/resilience.js +217 -0
- package/dist/shared/src/resilience.js.map +1 -0
- package/dist/shared/src/sandbox-fs.d.ts +28 -0
- package/dist/shared/src/sandbox-fs.js +148 -0
- package/dist/shared/src/sandbox-fs.js.map +1 -0
- package/dist/shared/src/sandbox-runtime.d.ts +85 -0
- package/dist/shared/src/sandbox-runtime.js +250 -0
- package/dist/shared/src/sandbox-runtime.js.map +1 -0
- package/dist/shared/src/sandbox.d.ts +54 -0
- package/dist/shared/src/sandbox.js +179 -0
- package/dist/shared/src/sandbox.js.map +1 -0
- package/dist/shared/src/worker-pool.d.ts +52 -0
- package/dist/shared/src/worker-pool.js +210 -0
- package/dist/shared/src/worker-pool.js.map +1 -0
- package/dist/shared/src/worker-thread.d.ts +21 -0
- package/dist/shared/src/worker-thread.js +67 -0
- package/dist/shared/src/worker-thread.js.map +1 -0
- package/dist/src/cli/commands/approve.d.ts +1 -0
- package/dist/src/cli/commands/approve.js +64 -0
- package/dist/src/cli/commands/approve.js.map +1 -0
- package/dist/src/cli/commands/check.d.ts +1 -0
- package/dist/src/cli/commands/check.js +339 -0
- package/dist/src/cli/commands/check.js.map +1 -0
- package/dist/src/cli/commands/compliance.d.ts +5 -0
- package/dist/src/cli/commands/compliance.js +43 -0
- package/dist/src/cli/commands/compliance.js.map +1 -0
- package/dist/src/cli/commands/contract.d.ts +10 -0
- package/dist/src/cli/commands/contract.js +52 -0
- package/dist/src/cli/commands/contract.js.map +1 -0
- 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 +5 -0
- package/dist/src/cli/commands/dashboard.js +753 -0
- package/dist/src/cli/commands/dashboard.js.map +1 -0
- package/dist/src/cli/commands/explorer.d.ts +2 -0
- package/dist/src/cli/commands/explorer.js +44 -0
- package/dist/src/cli/commands/explorer.js.map +1 -0
- package/dist/src/cli/commands/git.d.ts +2 -0
- package/dist/src/cli/commands/git.js +40 -0
- package/dist/src/cli/commands/git.js.map +1 -0
- package/dist/src/cli/commands/index-codebase.d.ts +4 -0
- package/dist/src/cli/commands/index-codebase.js +63 -0
- package/dist/src/cli/commands/index-codebase.js.map +1 -0
- package/dist/src/cli/commands/init/create-agent.d.ts +4 -0
- package/dist/src/cli/commands/init/create-agent.js +59 -0
- package/dist/src/cli/commands/init/create-agent.js.map +1 -0
- package/dist/src/cli/commands/init/scaffold-core.d.ts +13 -0
- package/dist/src/cli/commands/init/scaffold-core.js +188 -0
- package/dist/src/cli/commands/init/scaffold-core.js.map +1 -0
- package/dist/src/cli/commands/init/scaffold-docs.d.ts +4 -0
- package/dist/src/cli/commands/init/scaffold-docs.js +36 -0
- package/dist/src/cli/commands/init/scaffold-docs.js.map +1 -0
- package/dist/src/cli/commands/init/scaffold-ops.d.ts +1 -0
- package/dist/src/cli/commands/init/scaffold-ops.js +81 -0
- package/dist/src/cli/commands/init/scaffold-ops.js.map +1 -0
- package/dist/src/cli/commands/init/scaffold-standards.d.ts +2 -0
- package/dist/src/cli/commands/init/scaffold-standards.js +84 -0
- package/dist/src/cli/commands/init/scaffold-standards.js.map +1 -0
- package/dist/src/cli/commands/init.d.ts +11 -0
- package/dist/src/cli/commands/init.js +371 -0
- package/dist/src/cli/commands/init.js.map +1 -0
- package/dist/src/cli/commands/knowledge.d.ts +2 -0
- package/dist/src/cli/commands/knowledge.js +16 -0
- package/dist/src/cli/commands/knowledge.js.map +1 -0
- package/dist/src/cli/commands/lint.d.ts +4 -0
- package/dist/src/cli/commands/lint.js +24 -0
- package/dist/src/cli/commands/lint.js.map +1 -0
- package/dist/src/cli/commands/log.d.ts +10 -0
- package/dist/src/cli/commands/log.js +14 -0
- package/dist/src/cli/commands/log.js.map +1 -0
- package/dist/src/cli/commands/mcp.d.ts +11 -0
- package/dist/src/cli/commands/mcp.js +128 -0
- package/dist/src/cli/commands/mcp.js.map +1 -0
- package/dist/src/cli/commands/memory.d.ts +1 -0
- package/dist/src/cli/commands/memory.js +5 -0
- package/dist/src/cli/commands/memory.js.map +1 -0
- package/dist/src/cli/commands/orchestrate.d.ts +62 -0
- package/dist/src/cli/commands/orchestrate.js +263 -0
- package/dist/src/cli/commands/orchestrate.js.map +1 -0
- package/dist/src/cli/commands/plan.d.ts +11 -0
- package/dist/src/cli/commands/plan.js +120 -0
- package/dist/src/cli/commands/plan.js.map +1 -0
- package/dist/src/cli/commands/quickstart.d.ts +9 -0
- package/dist/src/cli/commands/quickstart.js +60 -0
- package/dist/src/cli/commands/quickstart.js.map +1 -0
- package/dist/src/cli/commands/script.d.ts +1 -0
- package/dist/src/cli/commands/script.js +28 -0
- package/dist/src/cli/commands/script.js.map +1 -0
- package/dist/src/cli/commands/security.d.ts +1 -0
- package/dist/src/cli/commands/security.js +34 -0
- package/dist/src/cli/commands/security.js.map +1 -0
- package/dist/src/cli/commands/status.d.ts +4 -0
- package/dist/src/cli/commands/status.js +122 -0
- package/dist/src/cli/commands/status.js.map +1 -0
- package/dist/src/cli/commands/trace.d.ts +10 -0
- package/dist/src/cli/commands/trace.js +108 -0
- package/dist/src/cli/commands/trace.js.map +1 -0
- package/dist/src/cli/index.d.ts +2 -0
- package/dist/src/cli/index.js +289 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/platforms/core.d.ts +16 -0
- package/dist/src/cli/platforms/core.js +77 -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.d.ts +1 -0
- package/dist/src/cli/shims.js +67 -0
- package/dist/src/cli/shims.js.map +1 -0
- package/dist/src/cli/utils/claude.d.ts +8 -0
- package/dist/src/cli/utils/claude.js +58 -0
- package/dist/src/cli/utils/claude.js.map +1 -0
- package/dist/src/cli/utils/compliance.d.ts +42 -0
- package/dist/src/cli/utils/compliance.js +150 -0
- package/dist/src/cli/utils/compliance.js.map +1 -0
- package/dist/src/cli/utils/config-schema.d.ts +256 -0
- package/dist/src/cli/utils/config-schema.js +67 -0
- package/dist/src/cli/utils/config-schema.js.map +1 -0
- package/dist/src/cli/utils/fs.d.ts +10 -0
- package/dist/src/cli/utils/fs.js +139 -0
- package/dist/src/cli/utils/fs.js.map +1 -0
- package/dist/src/cli/utils/i18n.d.ts +21 -0
- package/dist/src/cli/utils/i18n.js +36 -0
- package/dist/src/cli/utils/i18n.js.map +1 -0
- package/dist/src/cli/utils/memory.d.ts +45 -0
- package/dist/src/cli/utils/memory.js +339 -0
- package/dist/src/cli/utils/memory.js.map +1 -0
- package/dist/src/cli/utils/pkg.d.ts +42 -0
- package/dist/src/cli/utils/pkg.js +281 -0
- package/dist/src/cli/utils/pkg.js.map +1 -0
- package/dist/src/cli/utils/quality.d.ts +25 -0
- package/dist/src/cli/utils/quality.js +61 -0
- package/dist/src/cli/utils/quality.js.map +1 -0
- package/dist/src/cli/utils/schemas.d.ts +49 -0
- package/dist/src/cli/utils/schemas.js +20 -0
- package/dist/src/cli/utils/schemas.js.map +1 -0
- package/dist/src/cli/utils/string.d.ts +7 -0
- package/dist/src/cli/utils/string.js +50 -0
- package/dist/src/cli/utils/string.js.map +1 -0
- package/dist/src/cli/utils/time.d.ts +2 -0
- package/dist/src/cli/utils/time.js +28 -0
- package/dist/src/cli/utils/time.js.map +1 -0
- package/dist/src/cli/utils/ui.d.ts +53 -0
- package/dist/src/cli/utils/ui.js +101 -0
- package/dist/src/cli/utils/ui.js.map +1 -0
- package/dist/src/cli/utils/validate-registry.d.ts +4 -0
- package/dist/src/cli/utils/validate-registry.js +130 -0
- package/dist/src/cli/utils/validate-registry.js.map +1 -0
- package/dist/src/contracts/index.d.ts +1 -0
- package/dist/src/contracts/index.js +2 -0
- package/dist/src/contracts/index.js.map +1 -0
- package/dist/src/contracts/tasks.d.ts +44 -0
- package/dist/src/contracts/tasks.js +21 -0
- package/dist/src/contracts/tasks.js.map +1 -0
- package/dist/src/modules/agents/definitions.d.ts +26 -0
- package/dist/src/modules/agents/definitions.js +559 -0
- package/dist/src/modules/agents/definitions.js.map +1 -0
- package/dist/src/modules/agents/registry/analyst.d.ts +2 -0
- package/dist/src/modules/agents/registry/analyst.js +40 -0
- package/dist/src/modules/agents/registry/analyst.js.map +1 -0
- package/dist/src/modules/agents/registry/architect.d.ts +2 -0
- package/dist/src/modules/agents/registry/architect.js +43 -0
- package/dist/src/modules/agents/registry/architect.js.map +1 -0
- package/dist/src/modules/agents/registry/backend.d.ts +2 -0
- package/dist/src/modules/agents/registry/backend.js +51 -0
- package/dist/src/modules/agents/registry/backend.js.map +1 -0
- package/dist/src/modules/agents/registry/database.d.ts +2 -0
- package/dist/src/modules/agents/registry/database.js +46 -0
- package/dist/src/modules/agents/registry/database.js.map +1 -0
- package/dist/src/modules/agents/registry/devops.d.ts +2 -0
- package/dist/src/modules/agents/registry/devops.js +46 -0
- package/dist/src/modules/agents/registry/devops.js.map +1 -0
- package/dist/src/modules/agents/registry/explorer.d.ts +2 -0
- package/dist/src/modules/agents/registry/explorer.js +38 -0
- package/dist/src/modules/agents/registry/explorer.js.map +1 -0
- package/dist/src/modules/agents/registry/frontend.d.ts +2 -0
- package/dist/src/modules/agents/registry/frontend.js +53 -0
- package/dist/src/modules/agents/registry/frontend.js.map +1 -0
- package/dist/src/modules/agents/registry/git.d.ts +2 -0
- package/dist/src/modules/agents/registry/git.js +37 -0
- package/dist/src/modules/agents/registry/git.js.map +1 -0
- package/dist/src/modules/agents/registry/manager.d.ts +2 -0
- package/dist/src/modules/agents/registry/manager.js +65 -0
- package/dist/src/modules/agents/registry/manager.js.map +1 -0
- package/dist/src/modules/agents/registry/mobile.d.ts +2 -0
- package/dist/src/modules/agents/registry/mobile.js +42 -0
- package/dist/src/modules/agents/registry/mobile.js.map +1 -0
- package/dist/src/modules/agents/registry/native.d.ts +2 -0
- package/dist/src/modules/agents/registry/native.js +42 -0
- package/dist/src/modules/agents/registry/native.js.map +1 -0
- package/dist/src/modules/agents/registry/quality.d.ts +2 -0
- package/dist/src/modules/agents/registry/quality.js +44 -0
- package/dist/src/modules/agents/registry/quality.js.map +1 -0
- package/dist/src/modules/agents/registry/security.d.ts +2 -0
- package/dist/src/modules/agents/registry/security.js +43 -0
- package/dist/src/modules/agents/registry/security.js.map +1 -0
- package/dist/src/modules/agents/types.d.ts +33 -0
- package/dist/src/modules/agents/types.js +2 -0
- package/dist/src/modules/agents/types.js.map +1 -0
- 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 +46 -0
- package/dist/src/modules/engines/agent-executor.js +241 -0
- package/dist/src/modules/engines/agent-executor.js.map +1 -0
- 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/contract-engine.d.ts +46 -0
- package/dist/src/modules/engines/contract-engine.js +116 -0
- package/dist/src/modules/engines/contract-engine.js.map +1 -0
- package/dist/src/modules/engines/crud-governance.d.ts +66 -0
- package/dist/src/modules/engines/crud-governance.js +219 -0
- package/dist/src/modules/engines/crud-governance.js.map +1 -0
- package/dist/src/modules/engines/discovery-engine.d.ts +42 -0
- package/dist/src/modules/engines/discovery-engine.js +161 -0
- package/dist/src/modules/engines/discovery-engine.js.map +1 -0
- package/dist/src/modules/engines/evaluation-engine.d.ts +18 -0
- package/dist/src/modules/engines/evaluation-engine.js +171 -0
- package/dist/src/modules/engines/evaluation-engine.js.map +1 -0
- package/dist/src/modules/engines/file-lock.d.ts +41 -0
- package/dist/src/modules/engines/file-lock.js +168 -0
- package/dist/src/modules/engines/file-lock.js.map +1 -0
- package/dist/src/modules/engines/health-engine.d.ts +22 -0
- package/dist/src/modules/engines/health-engine.js +127 -0
- package/dist/src/modules/engines/health-engine.js.map +1 -0
- package/dist/src/modules/engines/phase-engine.d.ts +82 -0
- package/dist/src/modules/engines/phase-engine.js +211 -0
- package/dist/src/modules/engines/phase-engine.js.map +1 -0
- package/dist/src/modules/engines/planning-engine.d.ts +25 -0
- package/dist/src/modules/engines/planning-engine.js +80 -0
- package/dist/src/modules/engines/planning-engine.js.map +1 -0
- package/dist/src/modules/engines/policy-engine.d.ts +63 -0
- package/dist/src/modules/engines/policy-engine.js +186 -0
- package/dist/src/modules/engines/policy-engine.js.map +1 -0
- package/dist/src/modules/engines/quality-gate.d.ts +31 -0
- package/dist/src/modules/engines/quality-gate.js +95 -0
- package/dist/src/modules/engines/quality-gate.js.map +1 -0
- package/dist/src/modules/engines/risk-engine.d.ts +34 -0
- package/dist/src/modules/engines/risk-engine.js +201 -0
- package/dist/src/modules/engines/risk-engine.js.map +1 -0
- package/dist/src/modules/engines/routing-engine.d.ts +96 -0
- package/dist/src/modules/engines/routing-engine.js +505 -0
- package/dist/src/modules/engines/routing-engine.js.map +1 -0
- package/dist/src/modules/engines/session-engine.d.ts +68 -0
- package/dist/src/modules/engines/session-engine.js +141 -0
- package/dist/src/modules/engines/session-engine.js.map +1 -0
- package/dist/src/modules/engines/types.d.ts +51 -0
- package/dist/src/modules/engines/types.js +2 -0
- package/dist/src/modules/engines/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/llm-provider.d.ts +87 -0
- package/dist/src/modules/providers/llm-provider.js +242 -0
- package/dist/src/modules/providers/llm-provider.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 +104 -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 +70 -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/modules/skills/definitions.d.ts +48 -0
- package/dist/src/modules/skills/definitions.js +71 -0
- package/dist/src/modules/skills/definitions.js.map +1 -0
- package/dist/src/shared/audit.d.ts +1 -0
- package/dist/src/shared/audit.js +2 -0
- package/dist/src/shared/audit.js.map +1 -0
- package/dist/src/shared/constants.d.ts +1 -0
- package/dist/src/shared/constants.js +2 -0
- package/dist/src/shared/constants.js.map +1 -0
- package/dist/src/shared/errors.d.ts +1 -0
- package/dist/src/shared/errors.js +2 -0
- package/dist/src/shared/errors.js.map +1 -0
- package/dist/src/shared/fs.d.ts +1 -0
- package/dist/src/shared/fs.js +2 -0
- package/dist/src/shared/fs.js.map +1 -0
- package/dist/src/shared/lock.d.ts +1 -0
- package/dist/src/shared/lock.js +2 -0
- package/dist/src/shared/lock.js.map +1 -0
- package/dist/src/shared/logger.d.ts +1 -0
- package/dist/src/shared/logger.js +2 -0
- package/dist/src/shared/logger.js.map +1 -0
- package/dist/src/shared/pii.d.ts +1 -0
- package/dist/src/shared/pii.js +2 -0
- package/dist/src/shared/pii.js.map +1 -0
- package/dist/src/shared/retention.d.ts +1 -0
- package/dist/src/shared/retention.js +2 -0
- package/dist/src/shared/retention.js.map +1 -0
- package/dist/src/shared/storage.d.ts +141 -0
- package/dist/src/shared/storage.js +332 -0
- package/dist/src/shared/storage.js.map +1 -0
- package/dist/src/shared/string.d.ts +1 -0
- package/dist/src/shared/string.js +2 -0
- package/dist/src/shared/string.js.map +1 -0
- package/dist/src/shared/types.d.ts +1 -0
- package/dist/src/shared/types.js +2 -0
- package/dist/src/shared/types.js.map +1 -0
- package/package.json +4 -6
- package/templates/full/ATABEY_FULL.md +2 -0
- package/templates/prompts/new-feature-recipe.md +1 -1
- package/templates/standards/architecture-standards.md +1 -1
- package/templates/standards/governance-standards.md +3 -3
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { PlanningEngine } from "../../modules/engines/planning-engine.js";
|
|
4
|
+
import { RoutingEngine } from "../../modules/engines/routing-engine.js";
|
|
5
|
+
import { Storage } from "../../shared/storage.js";
|
|
6
|
+
import { asAgentID, asTaskID, asTraceID } from "../../shared/types.js";
|
|
7
|
+
import { generateULID } from "../utils/time.js";
|
|
8
|
+
import { UI } from "../utils/ui.js";
|
|
9
|
+
import { sendMessage } from "./orchestrate.js";
|
|
10
|
+
/**
|
|
11
|
+
* Submits a structured plan (DAG) to the framework.
|
|
12
|
+
*/
|
|
13
|
+
export async function submitPlanCommand(tasks) {
|
|
14
|
+
const traceId = asTraceID(generateULID());
|
|
15
|
+
const plan = PlanningEngine.createPlan(tasks);
|
|
16
|
+
const validation = PlanningEngine.validatePlan(plan);
|
|
17
|
+
if (!validation.valid) {
|
|
18
|
+
UI.error("Invalid Plan Submission:");
|
|
19
|
+
validation.errors.forEach((e) => UI.error(` - ${e}`));
|
|
20
|
+
process.exit(64);
|
|
21
|
+
}
|
|
22
|
+
UI.intent("Dynamic Task Planner", `Processing plan with ${plan.tasks.length} tasks (Plan Trace: ${traceId})`);
|
|
23
|
+
// Save plan metadata to SQLite
|
|
24
|
+
Storage.setMetadata(`plan_${traceId}`, JSON.stringify(plan));
|
|
25
|
+
for (const task of plan.tasks) {
|
|
26
|
+
const taskData = {
|
|
27
|
+
id: asTaskID(task.id),
|
|
28
|
+
traceId,
|
|
29
|
+
description: task.task,
|
|
30
|
+
agent: asAgentID(task.agent),
|
|
31
|
+
priority: "NORMAL",
|
|
32
|
+
status: "PENDING",
|
|
33
|
+
dependencies: task.dependencies || []
|
|
34
|
+
};
|
|
35
|
+
Storage.saveTask(taskData);
|
|
36
|
+
// Queue as a delegated message in SQLite
|
|
37
|
+
await sendMessage({
|
|
38
|
+
from: "@manager",
|
|
39
|
+
to: task.agent,
|
|
40
|
+
category: "DELEGATION",
|
|
41
|
+
content: JSON.stringify({ task: task.task, traceId }),
|
|
42
|
+
traceId,
|
|
43
|
+
parentId: task.id,
|
|
44
|
+
priority: "NORMAL",
|
|
45
|
+
dependencies: task.dependencies || []
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
UI.success(`[OK] Dynamic plan submitted and queued: ${plan.tasks.length} tasks.`);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Reads ALL markdown files from the docs/ directory and creates
|
|
52
|
+
* planning tasks from them. Agents will use this to understand
|
|
53
|
+
* project requirements and generate code accordingly.
|
|
54
|
+
*/
|
|
55
|
+
export async function planCommand() {
|
|
56
|
+
const projectRoot = process.cwd();
|
|
57
|
+
const docsDir = path.join(projectRoot, "docs");
|
|
58
|
+
if (!fs.existsSync(docsDir)) {
|
|
59
|
+
UI.error("Docs directory not found at docs/");
|
|
60
|
+
UI.info("TIP: Create a docs/ folder with your project requirements in .md files.");
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const entries = fs.readdirSync(docsDir, { withFileTypes: true });
|
|
64
|
+
const mdFiles = entries.filter(e => e.isFile() && e.name.endsWith(".md"));
|
|
65
|
+
if (mdFiles.length === 0) {
|
|
66
|
+
UI.warning("No markdown files found in docs/ directory.");
|
|
67
|
+
UI.info("TIP: Add .md files to docs/ with your project requirements.");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
UI.intent("Planning Engine", `Reading ${mdFiles.length} document(s) from docs/...`);
|
|
71
|
+
let totalTasks = 0;
|
|
72
|
+
for (const file of mdFiles) {
|
|
73
|
+
const filePath = path.join(docsDir, file.name);
|
|
74
|
+
const content = fs.readFileSync(filePath, "utf8");
|
|
75
|
+
const traceId = asTraceID(generateULID());
|
|
76
|
+
UI.success(`[FILE] docs/${file.name} (Trace: ${traceId})`);
|
|
77
|
+
// Extract checklist items and create sequential task chain
|
|
78
|
+
const taskRegex = /- \[ \]\s+(.+)/g;
|
|
79
|
+
let taskMatch;
|
|
80
|
+
let taskCount = 0;
|
|
81
|
+
let lastTaskId = null;
|
|
82
|
+
while ((taskMatch = taskRegex.exec(content)) !== null) {
|
|
83
|
+
const taskText = taskMatch[1].trim();
|
|
84
|
+
if (taskText.length >= 3) {
|
|
85
|
+
taskCount++;
|
|
86
|
+
totalTasks++;
|
|
87
|
+
// Smart routing via RoutingEngine
|
|
88
|
+
const routingResult = RoutingEngine.resolveWithDetails(taskText);
|
|
89
|
+
const targetAgent = routingResult.agent;
|
|
90
|
+
process.stdout.write(` [AGENT] ${targetAgent} (confidence: ${routingResult.confidence}, score: ${routingResult.score})\n`);
|
|
91
|
+
const subTaskId = generateULID();
|
|
92
|
+
const taskData = {
|
|
93
|
+
id: asTaskID(subTaskId),
|
|
94
|
+
traceId,
|
|
95
|
+
description: taskText,
|
|
96
|
+
agent: asAgentID(targetAgent),
|
|
97
|
+
priority: "NORMAL",
|
|
98
|
+
status: "PENDING",
|
|
99
|
+
dependencies: lastTaskId ? [lastTaskId] : []
|
|
100
|
+
};
|
|
101
|
+
Storage.saveTask(taskData);
|
|
102
|
+
// Queue as a delegated message
|
|
103
|
+
await sendMessage({
|
|
104
|
+
from: "@manager",
|
|
105
|
+
to: targetAgent,
|
|
106
|
+
category: "DELEGATION",
|
|
107
|
+
content: JSON.stringify({ task: taskText, traceId }),
|
|
108
|
+
traceId,
|
|
109
|
+
parentId: subTaskId,
|
|
110
|
+
priority: "NORMAL",
|
|
111
|
+
dependencies: lastTaskId ? [lastTaskId] : []
|
|
112
|
+
});
|
|
113
|
+
lastTaskId = subTaskId;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
process.stdout.write(` [LIST] Actionable tasks detected: ${taskCount}\n`);
|
|
117
|
+
}
|
|
118
|
+
UI.success(`\n[OK] Planning complete: ${totalTasks} tasks identified.`);
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [START] Atabey Quickstart — creates a working example project in seconds
|
|
3
|
+
*
|
|
4
|
+
* Sets up a ready-to-use demo project for the user:
|
|
5
|
+
* - docs/ folder with example tasks
|
|
6
|
+
* - Sample task list
|
|
7
|
+
* - Ready-to-execute plan
|
|
8
|
+
*/
|
|
9
|
+
export declare function quickstartCommand(): Promise<void>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { writeTextFile } from "../../shared/fs.js";
|
|
4
|
+
import { UI } from "../utils/ui.js";
|
|
5
|
+
/**
|
|
6
|
+
* [START] Atabey Quickstart — creates a working example project in seconds
|
|
7
|
+
*
|
|
8
|
+
* Sets up a ready-to-use demo project for the user:
|
|
9
|
+
* - docs/ folder with example tasks
|
|
10
|
+
* - Sample task list
|
|
11
|
+
* - Ready-to-execute plan
|
|
12
|
+
*/
|
|
13
|
+
export async function quickstartCommand() {
|
|
14
|
+
const projectRoot = process.cwd();
|
|
15
|
+
const docsDir = path.join(projectRoot, "docs");
|
|
16
|
+
const exampleTaskFile = path.join(docsDir, "quickstart-tasks.md");
|
|
17
|
+
UI.intent("[Atabey Quickstart]", "Creating example project in 10 seconds...");
|
|
18
|
+
// 1. Create docs/ directory
|
|
19
|
+
if (!fs.existsSync(docsDir)) {
|
|
20
|
+
fs.mkdirSync(docsDir, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
// 2. Create example task file
|
|
23
|
+
const exampleContent = `# 🚀 Quickstart Tasks — Atabey Order
|
|
24
|
+
|
|
25
|
+
This is an example task list to demonstrate how Atabey distributes and validates tasks.
|
|
26
|
+
|
|
27
|
+
## [BACKEND] Backend Tasks
|
|
28
|
+
|
|
29
|
+
- [ ] Create user login service with JWT authentication
|
|
30
|
+
- [ ] Write Vitest unit tests for the login service
|
|
31
|
+
|
|
32
|
+
## [FRONTEND] Frontend Tasks
|
|
33
|
+
|
|
34
|
+
- [ ] Create responsive login page using atomic components
|
|
35
|
+
- [ ] Connect login page to backend API
|
|
36
|
+
|
|
37
|
+
## [MOBILE] Mobile Tasks
|
|
38
|
+
|
|
39
|
+
- [ ] Create user profile page with React Native
|
|
40
|
+
- [ ] Implement offline-first architecture
|
|
41
|
+
|
|
42
|
+
## [QA] Quality Tasks
|
|
43
|
+
|
|
44
|
+
- [ ] Audit all code for compliance and lint errors
|
|
45
|
+
`;
|
|
46
|
+
writeTextFile(exampleTaskFile, exampleContent);
|
|
47
|
+
UI.success(`[OK] docs/quickstart-tasks.md created (${exampleContent.split("\n").length} lines)`);
|
|
48
|
+
// 3. Show user instructions
|
|
49
|
+
process.stdout.write("\n [Task List]:\n");
|
|
50
|
+
process.stdout.write(" -----------------------------------------\n");
|
|
51
|
+
process.stdout.write(" 1. atabey init -> Initialize the project\n");
|
|
52
|
+
process.stdout.write(" 2. atabey plan -> Auto-distribute tasks\n");
|
|
53
|
+
process.stdout.write(" 3. atabey orchestrate -> Start orchestration\n");
|
|
54
|
+
process.stdout.write(" 4. atabey dashboard -> Open web panel\n");
|
|
55
|
+
process.stdout.write("\n [Tip]: To call individual agents:\n");
|
|
56
|
+
process.stdout.write(" atabey @backend \"Create user login service\"\n");
|
|
57
|
+
process.stdout.write("\n");
|
|
58
|
+
UI.success("[OK] Quickstart ready! You can start immediately.");
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=quickstart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../../src/cli/commands/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAElE,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC,CAAC;IAE9E,4BAA4B;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,8BAA8B;IAC9B,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB1B,CAAC;IAEE,aAAa,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IAC/C,EAAE,CAAC,OAAO,CAAC,0CAA0C,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC;IAEjG,4BAA4B;IAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runScriptCommand(script: string, projectPath: string): Promise<void>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import cp from "child_process";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { UI } from "../utils/ui.js";
|
|
5
|
+
const targetDir = process.cwd();
|
|
6
|
+
export async function runScriptCommand(script, projectPath) {
|
|
7
|
+
const fullPath = path.join(targetDir, projectPath);
|
|
8
|
+
if (!fs.existsSync(fullPath)) {
|
|
9
|
+
UI.error(`Project path not found: ${projectPath}`);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
UI.info(`Running 'npm run ${script}' in ${projectPath}...`);
|
|
13
|
+
try {
|
|
14
|
+
// shell: false prevents shell injection attacks
|
|
15
|
+
// script name is validated (no spaces, no special chars)
|
|
16
|
+
const sanitizedScript = script.replace(/[^a-zA-Z0-9_-]/g, "");
|
|
17
|
+
if (sanitizedScript !== script) {
|
|
18
|
+
UI.error(`Invalid script name: "${script}". Use only letters, numbers, hyphens, and underscores.`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
cp.spawnSync("npm", ["run", sanitizedScript], { cwd: fullPath, stdio: "inherit", shell: false });
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
const message = e instanceof Error ? e.message : "Unknown error";
|
|
25
|
+
UI.error(`Failed to run script: ${message}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.js","sourceRoot":"","sources":["../../../../src/cli/commands/script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,WAAmB;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,KAAK,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;QACnD,OAAO;IACX,CAAC;IACD,EAAE,CAAC,IAAI,CAAC,oBAAoB,MAAM,QAAQ,WAAW,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC;QACD,gDAAgD;QAChD,yDAAyD;QACzD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;YAC7B,EAAE,CAAC,KAAK,CAAC,yBAAyB,MAAM,yDAAyD,CAAC,CAAC;YACnG,OAAO;QACX,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACrG,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACjE,EAAE,CAAC,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function securityAuditCommand(targetPath: string): Promise<void>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { collectFiles } from "../utils/fs.js";
|
|
4
|
+
import { UI } from "../utils/ui.js";
|
|
5
|
+
const targetDir = process.cwd();
|
|
6
|
+
export async function securityAuditCommand(targetPath) {
|
|
7
|
+
UI.info(`Running Advanced Security Audit on: ${targetPath}...`);
|
|
8
|
+
const scanRules = [
|
|
9
|
+
{ pattern: /sql`/, message: "Potential Raw SQL usage detected", severity: "HIGH" },
|
|
10
|
+
{ pattern: /(password|secret|api_?key)\s*[:=]\s*['"][^'"]+['"]/i, message: "Potential hardcoded secret detected", severity: "CRITICAL" },
|
|
11
|
+
{ pattern: /:\s*any(?!\w)/, message: "Usage of 'any' type detected", severity: "MEDIUM" },
|
|
12
|
+
{ pattern: /\.innerHTML\s*=/, message: "Unsafe innerHTML assignment detected", severity: "MEDIUM" },
|
|
13
|
+
];
|
|
14
|
+
const issues = [];
|
|
15
|
+
const files = collectFiles(path.join(targetDir, targetPath), [".ts", ".tsx", ".js", ".jsx"]);
|
|
16
|
+
files.forEach((f) => {
|
|
17
|
+
const content = fs.readFileSync(f, "utf8");
|
|
18
|
+
const lines = content.split("\n");
|
|
19
|
+
lines.forEach((line, i) => {
|
|
20
|
+
scanRules.forEach((rule) => {
|
|
21
|
+
if (rule.pattern.test(line)) {
|
|
22
|
+
issues.push(`[${rule.severity}] ${rule.message} in ${path.relative(targetDir, f)}:${i + 1}`);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
if (issues.length === 0) {
|
|
28
|
+
UI.success("No security issues detected.");
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
issues.forEach((issue) => process.stdout.write(`[WARN] ${issue}\n`));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../src/cli/commands/security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAkB;IACzD,EAAE,CAAC,IAAI,CAAC,uCAAuC,UAAU,KAAK,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG;QACd,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE;QAClF,EAAE,OAAO,EAAE,qDAAqD,EAAE,OAAO,EAAE,qCAAqC,EAAE,QAAQ,EAAE,UAAU,EAAE;QACxI,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,QAAQ,EAAE;QACzF,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,sCAAsC,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACtG,CAAC;IACF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACtB,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjG,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { logger } from "../../shared/logger.js";
|
|
5
|
+
import { getFrameworkDir, listTasks, readState, readStatus } from "../utils/memory.js";
|
|
6
|
+
import { UI } from "../utils/ui.js";
|
|
7
|
+
/**
|
|
8
|
+
* Print the current framework status.
|
|
9
|
+
*/
|
|
10
|
+
export async function statusCommand() {
|
|
11
|
+
const state = readState();
|
|
12
|
+
const tasks = listTasks();
|
|
13
|
+
const agentStatuses = readStatus();
|
|
14
|
+
const frameworkDir = getFrameworkDir();
|
|
15
|
+
if (!state) {
|
|
16
|
+
UI.error("Memory state not found. Please run 'init' first.");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
UI.info("--- PROJECT STATUS ---");
|
|
20
|
+
UI.info(`Phase: ${state.phase}`);
|
|
21
|
+
UI.info(`Trace ID: ${state.traceId}`);
|
|
22
|
+
UI.info(`Manager: ${state.managerState}`);
|
|
23
|
+
// --- Health Engine Integration ---
|
|
24
|
+
try {
|
|
25
|
+
const { HealthEngine } = await import("../../modules/engines/health-engine.js");
|
|
26
|
+
const health = HealthEngine.getHealth();
|
|
27
|
+
if (health) {
|
|
28
|
+
let healthColor = chalk.green;
|
|
29
|
+
if (health.score < 50)
|
|
30
|
+
healthColor = chalk.red;
|
|
31
|
+
else if (health.score < 80)
|
|
32
|
+
healthColor = chalk.yellow;
|
|
33
|
+
UI.info(`Project Health: ${healthColor(health.score + "%")} (Quality: ${health.codeQuality} | Security: ${health.security})`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
logger.debug("Health engine not initialized or compiled yet", err);
|
|
38
|
+
}
|
|
39
|
+
// Read Agent Status from Storage
|
|
40
|
+
UI.info("Atabey AL Status (Agent States & Performance):");
|
|
41
|
+
const { Storage } = await import("../../shared/storage.js");
|
|
42
|
+
for (const [agentName, info] of Object.entries(agentStatuses)) {
|
|
43
|
+
const { state, task } = info;
|
|
44
|
+
let coloredState = state;
|
|
45
|
+
if (state === "READY")
|
|
46
|
+
coloredState = chalk.green(state);
|
|
47
|
+
else if (state === "EXECUTING")
|
|
48
|
+
coloredState = chalk.yellow(state);
|
|
49
|
+
else if (state === "BLOCKED" || state === "TIMEOUT")
|
|
50
|
+
coloredState = chalk.red(state);
|
|
51
|
+
else if (state === "WAITING")
|
|
52
|
+
coloredState = chalk.cyan(state);
|
|
53
|
+
// Calculate Success Rate from SQLite logs
|
|
54
|
+
let successRateStr = "";
|
|
55
|
+
const logs = Storage.getLogs(agentName);
|
|
56
|
+
const total = logs.length;
|
|
57
|
+
if (total > 0) {
|
|
58
|
+
const successCount = logs.filter(l => l.status === "SUCCESS").length;
|
|
59
|
+
const rate = (successCount / total) * 100;
|
|
60
|
+
successRateStr = ` | Success Rate: ${rate.toFixed(1)}% (${successCount}/${total})`;
|
|
61
|
+
}
|
|
62
|
+
process.stdout.write(` ${chalk.bold(agentName.padEnd(12))} : [${coloredState}] - ${task}${successRateStr}\n`);
|
|
63
|
+
}
|
|
64
|
+
if (tasks.length > 0) {
|
|
65
|
+
UI.info("Active Tasks:");
|
|
66
|
+
tasks.forEach((t) => {
|
|
67
|
+
const agent = t.agent.startsWith("@") ? t.agent : `@${t.agent}`;
|
|
68
|
+
process.stdout.write(` - [${t.priority}] ${t.status}: ${t.description} (${agent})\n`);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const metricsPath = path.join(frameworkDir, "observability", "metrics.json");
|
|
72
|
+
if (fs.existsSync(metricsPath)) {
|
|
73
|
+
try {
|
|
74
|
+
const rawMetrics = fs.readFileSync(metricsPath, "utf8");
|
|
75
|
+
const metrics = JSON.parse(rawMetrics);
|
|
76
|
+
let totalTokens = 0;
|
|
77
|
+
const agentTokens = {};
|
|
78
|
+
const now = new Date();
|
|
79
|
+
const sevenDaysAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
|
|
80
|
+
let weeklyTokens = 0;
|
|
81
|
+
const weeklyAgentTokens = {};
|
|
82
|
+
metrics.forEach(m => {
|
|
83
|
+
totalTokens += m.estimatedTokens;
|
|
84
|
+
const name = m.agent.startsWith("@") ? m.agent : `@${m.agent}`;
|
|
85
|
+
agentTokens[name] = (agentTokens[name] || 0) + m.estimatedTokens;
|
|
86
|
+
// Track weekly tokens if entry falls within last 7 days
|
|
87
|
+
const entryDate = m.timestamp ? new Date(m.timestamp) : now;
|
|
88
|
+
if (entryDate >= sevenDaysAgo) {
|
|
89
|
+
weeklyTokens += m.estimatedTokens;
|
|
90
|
+
weeklyAgentTokens[name] = (weeklyAgentTokens[name] || 0) + m.estimatedTokens;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
// Assume $5.00 per 1M tokens average pricing
|
|
94
|
+
const estimatedCost = (totalTokens / 1_000_000) * 5.00;
|
|
95
|
+
const estimatedWeeklyCost = (weeklyTokens / 1_000_000) * 5.00;
|
|
96
|
+
UI.info("OBSERVABILITY & COST DASHBOARD");
|
|
97
|
+
UI.info(`Total Estimated Tokens: ${totalTokens.toLocaleString()}`);
|
|
98
|
+
UI.info(`Total Estimated LLM Cost: $${estimatedCost.toFixed(4)}`);
|
|
99
|
+
UI.info(`Weekly Estimated Tokens (Last 7 days): ${weeklyTokens.toLocaleString()}`);
|
|
100
|
+
UI.info(`Weekly Estimated LLM Cost (Last 7 days): $${estimatedWeeklyCost.toFixed(4)}`);
|
|
101
|
+
if (Object.keys(agentTokens).length > 0) {
|
|
102
|
+
UI.info("Cost Distribution per Agent (Total):");
|
|
103
|
+
Object.entries(agentTokens).forEach(([agent, tokens]) => {
|
|
104
|
+
const agentCost = (tokens / 1_000_000) * 5.00;
|
|
105
|
+
process.stdout.write(` ${chalk.bold(agent.padEnd(12))} : ${tokens.toLocaleString()} tokens ($${agentCost.toFixed(4)})\n`);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (Object.keys(weeklyAgentTokens).length > 0) {
|
|
109
|
+
UI.info("Cost Distribution per Agent (Weekly - Last 7 days):");
|
|
110
|
+
Object.entries(weeklyAgentTokens).forEach(([agent, tokens]) => {
|
|
111
|
+
const agentCost = (tokens / 1_000_000) * 5.00;
|
|
112
|
+
process.stdout.write(` ${chalk.bold(agent.padEnd(12))} : ${tokens.toLocaleString()} tokens ($${agentCost.toFixed(4)})\n`);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
logger.debug("Failed to read metrics file", err);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
UI.divider();
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a new Trace ID and add it to project memory.
|
|
3
|
+
* Uses ULID format: 26-char Crockford Base32 (10 chars timestamp + 16 chars random)
|
|
4
|
+
*/
|
|
5
|
+
export declare function traceNewCommand(description: string, agent?: string, priority?: string): Promise<string | void>;
|
|
6
|
+
/**
|
|
7
|
+
* Replay the chronological message exchanges of a specific Trace ID.
|
|
8
|
+
* Reads from SQLite messages table instead of filesystem.
|
|
9
|
+
*/
|
|
10
|
+
export declare function traceReplayCommand(traceId: string): Promise<void>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { logger } from "../../shared/logger.js";
|
|
2
|
+
import { Storage } from "../../shared/storage.js";
|
|
3
|
+
import { stripMarkdownCodeBlocks } from "../../shared/string.js";
|
|
4
|
+
import { generateULID, getFrameworkDir, updateDocumentStore } from "../utils/memory.js";
|
|
5
|
+
import { normalizeAgentName, normalizePriority, sanitizeInput } from "../utils/string.js";
|
|
6
|
+
import { UI } from "../utils/ui.js";
|
|
7
|
+
/**
|
|
8
|
+
* Generate a new Trace ID and add it to project memory.
|
|
9
|
+
* Uses ULID format: 26-char Crockford Base32 (10 chars timestamp + 16 chars random)
|
|
10
|
+
*/
|
|
11
|
+
export async function traceNewCommand(description, agent = "manager", priority = "P2") {
|
|
12
|
+
const traceId = generateULID();
|
|
13
|
+
const safeDescription = sanitizeInput(description);
|
|
14
|
+
const safeAgent = normalizeAgentName(agent);
|
|
15
|
+
const safePriority = normalizePriority(priority);
|
|
16
|
+
const frameworkDir = getFrameworkDir();
|
|
17
|
+
// --- Document Store Write (SQLite) ---
|
|
18
|
+
updateDocumentStore("task", {
|
|
19
|
+
traceId,
|
|
20
|
+
description: safeDescription,
|
|
21
|
+
agent: safeAgent,
|
|
22
|
+
priority: safePriority,
|
|
23
|
+
status: "IN_PROGRESS",
|
|
24
|
+
createdAt: new Date().toISOString()
|
|
25
|
+
}, traceId, frameworkDir);
|
|
26
|
+
// ----------------------------
|
|
27
|
+
// Update active trace in metadata
|
|
28
|
+
Storage.setMetadata("traceId", traceId);
|
|
29
|
+
logger.info(`New Trace ID created: ${traceId}`);
|
|
30
|
+
UI.success(`New Trace ID created: ${traceId}`);
|
|
31
|
+
UI.intent("TASK", `Added to task list: ${description}`);
|
|
32
|
+
return traceId;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Replay the chronological message exchanges of a specific Trace ID.
|
|
36
|
+
* Reads from SQLite messages table instead of filesystem.
|
|
37
|
+
*/
|
|
38
|
+
export async function traceReplayCommand(traceId) {
|
|
39
|
+
const { UI } = await import("../utils/ui.js");
|
|
40
|
+
UI.intent("Trace Replay Engine", `Searching logs for Trace ID: ${traceId}...`);
|
|
41
|
+
const events = [];
|
|
42
|
+
// Read from SQLite messages table
|
|
43
|
+
try {
|
|
44
|
+
const db = Storage.getDB();
|
|
45
|
+
const rows = db.prepare("SELECT timestamp, sender, receiver, category, content, priority FROM messages WHERE trace_id = ? ORDER BY timestamp ASC").all(traceId);
|
|
46
|
+
for (const row of rows) {
|
|
47
|
+
events.push({
|
|
48
|
+
timestamp: row.timestamp,
|
|
49
|
+
from: row.sender,
|
|
50
|
+
to: row.receiver,
|
|
51
|
+
category: row.category,
|
|
52
|
+
content: row.content,
|
|
53
|
+
priority: row.priority,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
logger.debug("Failed to read from SQLite messages", err);
|
|
59
|
+
}
|
|
60
|
+
// Also read from logs table for agent actions
|
|
61
|
+
try {
|
|
62
|
+
const logs = Storage.getLogs();
|
|
63
|
+
for (const log of logs) {
|
|
64
|
+
if (log.trace_id === traceId) {
|
|
65
|
+
events.push({
|
|
66
|
+
timestamp: log.timestamp,
|
|
67
|
+
from: log.agent,
|
|
68
|
+
to: "@manager",
|
|
69
|
+
category: "ACTION",
|
|
70
|
+
content: log.summary,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
logger.debug("Failed to read from SQLite logs", err);
|
|
77
|
+
}
|
|
78
|
+
if (events.length === 0) {
|
|
79
|
+
UI.warning(`No message exchanges found for Trace ID: ${traceId}`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Sort chronologically by timestamp
|
|
83
|
+
events.sort((a, b) => Date.parse(a.timestamp) - Date.parse(b.timestamp));
|
|
84
|
+
const separatorLine = "=".repeat(80);
|
|
85
|
+
process.stdout.write(`\n${separatorLine}\n`);
|
|
86
|
+
process.stdout.write(`[TRACE TIMELINE REPLAY] ID: ${traceId}\n`);
|
|
87
|
+
process.stdout.write(`${separatorLine}\n`);
|
|
88
|
+
events.forEach(evt => {
|
|
89
|
+
const timeStr = new Date(evt.timestamp).toLocaleTimeString();
|
|
90
|
+
process.stdout.write(`[${timeStr}] ${evt.from} ➔ ${evt.to} [${evt.category}]\n`);
|
|
91
|
+
try {
|
|
92
|
+
const cleanedContent = stripMarkdownCodeBlocks(evt.content);
|
|
93
|
+
const parsed = JSON.parse(cleanedContent);
|
|
94
|
+
if (parsed.task) {
|
|
95
|
+
process.stdout.write(` 💬 Task: ${parsed.task}\n`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
process.stdout.write(` 💬 Content: ${evt.content.substring(0, 200)}\n`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
process.stdout.write(` 💬 Content: ${evt.content.substring(0, 200)}\n`);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
process.stdout.write(`${separatorLine}\n`);
|
|
106
|
+
UI.success(`Trace replay completed (${events.length} events).`);
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../../src/cli/commands/trace.ts"],"names":[],"mappings":"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"}
|