atabey 0.0.17 → 0.0.19
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/README.md +257 -0
- package/bin/cli.js +14 -2
- package/dist/atabey/src/cli/commands/check.js +2 -3
- package/dist/atabey/src/cli/commands/check.js.map +1 -1
- package/dist/atabey/src/cli/commands/explorer.js.map +1 -1
- package/dist/atabey/src/cli/commands/index-codebase.js +13 -2
- package/dist/atabey/src/cli/commands/index-codebase.js.map +1 -1
- package/dist/atabey/src/cli/commands/init/scaffold-core.js +22 -0
- package/dist/atabey/src/cli/commands/init/scaffold-core.js.map +1 -1
- package/dist/atabey/src/cli/commands/orchestrate.d.ts +11 -10
- package/dist/atabey/src/cli/commands/orchestrate.js +49 -24
- package/dist/atabey/src/cli/commands/orchestrate.js.map +1 -1
- package/dist/atabey/src/cli/index.js +7 -0
- package/dist/atabey/src/cli/index.js.map +1 -1
- package/dist/atabey/src/cli/utils/config-schema.d.ts +28 -0
- package/dist/atabey/src/cli/utils/config-schema.js +6 -1
- package/dist/atabey/src/cli/utils/config-schema.js.map +1 -1
- package/dist/atabey/src/cli/utils/memory.js +26 -0
- package/dist/atabey/src/cli/utils/memory.js.map +1 -1
- package/dist/atabey/src/cli/utils/quality.js +2 -7
- package/dist/atabey/src/cli/utils/quality.js.map +1 -1
- package/dist/atabey/src/cli/utils/schemas.d.ts +8 -8
- package/dist/atabey/src/contracts/tasks.d.ts +6 -6
- package/dist/atabey/src/modules/agents/definitions.js +9 -14
- package/dist/atabey/src/modules/agents/definitions.js.map +1 -1
- package/dist/atabey/src/modules/agents/registry/manager.js +1 -1
- package/dist/atabey/src/modules/agents/registry/manager.js.map +1 -1
- package/dist/atabey/src/modules/engines/crud-governance.d.ts +4 -2
- package/dist/atabey/src/modules/engines/crud-governance.js +41 -6
- package/dist/atabey/src/modules/engines/crud-governance.js.map +1 -1
- package/dist/atabey/src/modules/skills/adapter-skills.d.ts +2 -0
- package/dist/atabey/src/modules/skills/adapter-skills.js.map +1 -1
- package/dist/atabey/src/shared/audit.d.ts +1 -105
- package/dist/atabey/src/shared/audit.js +1 -220
- package/dist/atabey/src/shared/audit.js.map +1 -1
- package/dist/atabey/src/shared/constants.d.ts +1 -120
- package/dist/atabey/src/shared/constants.js +1 -187
- package/dist/atabey/src/shared/constants.js.map +1 -1
- package/dist/atabey/src/shared/errors.d.ts +1 -46
- package/dist/atabey/src/shared/errors.js +1 -68
- package/dist/atabey/src/shared/errors.js.map +1 -1
- package/dist/atabey/src/shared/fs.d.ts +1 -9
- package/dist/atabey/src/shared/fs.js +1 -53
- package/dist/atabey/src/shared/fs.js.map +1 -1
- package/dist/atabey/src/shared/lock.d.ts +1 -82
- package/dist/atabey/src/shared/lock.js +1 -159
- package/dist/atabey/src/shared/lock.js.map +1 -1
- package/dist/atabey/src/shared/logger.d.ts +1 -30
- package/dist/atabey/src/shared/logger.js +1 -126
- package/dist/atabey/src/shared/logger.js.map +1 -1
- package/dist/atabey/src/shared/pii.d.ts +1 -69
- package/dist/atabey/src/shared/pii.js +1 -212
- package/dist/atabey/src/shared/pii.js.map +1 -1
- package/dist/atabey/src/shared/retention.d.ts +1 -63
- package/dist/atabey/src/shared/retention.js +1 -170
- package/dist/atabey/src/shared/retention.js.map +1 -1
- package/dist/atabey/src/shared/storage.js +7 -3
- package/dist/atabey/src/shared/storage.js.map +1 -1
- package/dist/atabey/src/shared/string.d.ts +1 -1
- package/dist/atabey/src/shared/string.js +1 -29
- package/dist/atabey/src/shared/string.js.map +1 -1
- package/dist/atabey/src/shared/types.d.ts +1 -27
- package/dist/atabey/src/shared/types.js +1 -16
- package/dist/atabey/src/shared/types.js.map +1 -1
- package/dist/atabey-mcp/src/mcp/utils/context-optimizer.js +1 -1
- package/dist/atabey-mcp/src/mcp/utils/context-optimizer.js.map +1 -1
- package/dist/atabey-mcp/src/shared/logger.d.ts +1 -30
- package/dist/atabey-mcp/src/shared/logger.js +1 -126
- package/dist/atabey-mcp/src/shared/logger.js.map +1 -1
- package/dist/atabey-mcp/src/shared/pii.d.ts +1 -69
- package/dist/atabey-mcp/src/shared/pii.js +1 -212
- package/dist/atabey-mcp/src/shared/pii.js.map +1 -1
- package/dist/atabey-mcp/src/shared/storage.js +3 -1
- package/dist/atabey-mcp/src/shared/storage.js.map +1 -1
- package/dist/atabey-mcp/src/shared/types.d.ts +1 -27
- package/dist/atabey-mcp/src/shared/types.js +1 -16
- package/dist/atabey-mcp/src/shared/types.js.map +1 -1
- package/dist/{src/shared → shared/src}/audit.js +8 -8
- package/dist/shared/src/audit.js.map +1 -0
- package/dist/shared/src/constants.js.map +1 -0
- package/dist/shared/src/database.d.ts +5 -0
- package/dist/shared/src/database.js +13 -0
- package/dist/shared/src/database.js.map +1 -0
- package/dist/shared/src/errors.js.map +1 -0
- package/dist/shared/src/fs.js.map +1 -0
- package/dist/shared/src/index.d.ts +11 -0
- package/dist/shared/src/index.js +12 -0
- package/dist/shared/src/index.js.map +1 -0
- package/dist/{src/shared → shared/src}/lock.js +22 -26
- package/dist/shared/src/lock.js.map +1 -0
- package/dist/shared/src/logger.js.map +1 -0
- package/dist/{src/shared → shared/src}/pii.js +4 -1
- package/dist/shared/src/pii.js.map +1 -0
- package/dist/{src/shared → shared/src}/retention.js +6 -6
- package/dist/shared/src/retention.js.map +1 -0
- package/dist/shared/src/string.js.map +1 -0
- package/dist/shared/src/types.js.map +1 -0
- package/package.json +7 -2
- package/dist/atabey-mcp/src/mcp/utils/quality.d.ts +0 -19
- package/dist/atabey-mcp/src/mcp/utils/quality.js +0 -125
- package/dist/atabey-mcp/src/mcp/utils/quality.js.map +0 -1
- package/dist/atabey-mcp/src/shared/fs.js.map +0 -1
- package/dist/src/cli/commands/approve.d.ts +0 -1
- package/dist/src/cli/commands/approve.js +0 -64
- package/dist/src/cli/commands/approve.js.map +0 -1
- package/dist/src/cli/commands/check.d.ts +0 -1
- package/dist/src/cli/commands/check.js +0 -197
- package/dist/src/cli/commands/check.js.map +0 -1
- package/dist/src/cli/commands/compliance.d.ts +0 -5
- package/dist/src/cli/commands/compliance.js +0 -43
- package/dist/src/cli/commands/compliance.js.map +0 -1
- package/dist/src/cli/commands/contract.d.ts +0 -10
- package/dist/src/cli/commands/contract.js +0 -52
- package/dist/src/cli/commands/contract.js.map +0 -1
- package/dist/src/cli/commands/coverage.d.ts +0 -1
- package/dist/src/cli/commands/coverage.js +0 -121
- package/dist/src/cli/commands/coverage.js.map +0 -1
- package/dist/src/cli/commands/dashboard.d.ts +0 -5
- package/dist/src/cli/commands/dashboard.js +0 -753
- package/dist/src/cli/commands/dashboard.js.map +0 -1
- package/dist/src/cli/commands/explorer.d.ts +0 -2
- package/dist/src/cli/commands/explorer.js +0 -44
- package/dist/src/cli/commands/explorer.js.map +0 -1
- package/dist/src/cli/commands/git.d.ts +0 -2
- package/dist/src/cli/commands/git.js +0 -40
- package/dist/src/cli/commands/git.js.map +0 -1
- package/dist/src/cli/commands/index-codebase.d.ts +0 -4
- package/dist/src/cli/commands/index-codebase.js +0 -52
- package/dist/src/cli/commands/index-codebase.js.map +0 -1
- package/dist/src/cli/commands/init/create-agent.d.ts +0 -4
- package/dist/src/cli/commands/init/create-agent.js +0 -59
- package/dist/src/cli/commands/init/create-agent.js.map +0 -1
- package/dist/src/cli/commands/init/scaffold-core.d.ts +0 -13
- package/dist/src/cli/commands/init/scaffold-core.js +0 -129
- package/dist/src/cli/commands/init/scaffold-core.js.map +0 -1
- package/dist/src/cli/commands/init/scaffold-docs.d.ts +0 -4
- package/dist/src/cli/commands/init/scaffold-docs.js +0 -36
- package/dist/src/cli/commands/init/scaffold-docs.js.map +0 -1
- package/dist/src/cli/commands/init/scaffold-ops.d.ts +0 -1
- package/dist/src/cli/commands/init/scaffold-ops.js +0 -81
- package/dist/src/cli/commands/init/scaffold-ops.js.map +0 -1
- package/dist/src/cli/commands/init/scaffold-standards.d.ts +0 -2
- package/dist/src/cli/commands/init/scaffold-standards.js +0 -84
- package/dist/src/cli/commands/init/scaffold-standards.js.map +0 -1
- package/dist/src/cli/commands/init.d.ts +0 -11
- package/dist/src/cli/commands/init.js +0 -362
- package/dist/src/cli/commands/init.js.map +0 -1
- package/dist/src/cli/commands/knowledge.d.ts +0 -2
- package/dist/src/cli/commands/knowledge.js +0 -16
- package/dist/src/cli/commands/knowledge.js.map +0 -1
- package/dist/src/cli/commands/lint.d.ts +0 -4
- package/dist/src/cli/commands/lint.js +0 -24
- package/dist/src/cli/commands/lint.js.map +0 -1
- package/dist/src/cli/commands/log.d.ts +0 -10
- package/dist/src/cli/commands/log.js +0 -14
- package/dist/src/cli/commands/log.js.map +0 -1
- package/dist/src/cli/commands/mcp.d.ts +0 -11
- package/dist/src/cli/commands/mcp.js +0 -132
- package/dist/src/cli/commands/mcp.js.map +0 -1
- package/dist/src/cli/commands/memory.d.ts +0 -1
- package/dist/src/cli/commands/memory.js +0 -5
- package/dist/src/cli/commands/memory.js.map +0 -1
- package/dist/src/cli/commands/orchestrate.d.ts +0 -61
- package/dist/src/cli/commands/orchestrate.js +0 -238
- package/dist/src/cli/commands/orchestrate.js.map +0 -1
- package/dist/src/cli/commands/plan.d.ts +0 -11
- package/dist/src/cli/commands/plan.js +0 -120
- package/dist/src/cli/commands/plan.js.map +0 -1
- package/dist/src/cli/commands/quickstart.d.ts +0 -9
- package/dist/src/cli/commands/quickstart.js +0 -60
- package/dist/src/cli/commands/quickstart.js.map +0 -1
- package/dist/src/cli/commands/script.d.ts +0 -1
- package/dist/src/cli/commands/script.js +0 -28
- package/dist/src/cli/commands/script.js.map +0 -1
- package/dist/src/cli/commands/security.d.ts +0 -1
- package/dist/src/cli/commands/security.js +0 -34
- package/dist/src/cli/commands/security.js.map +0 -1
- package/dist/src/cli/commands/status.d.ts +0 -4
- package/dist/src/cli/commands/status.js +0 -122
- package/dist/src/cli/commands/status.js.map +0 -1
- package/dist/src/cli/commands/trace.d.ts +0 -10
- package/dist/src/cli/commands/trace.js +0 -108
- package/dist/src/cli/commands/trace.js.map +0 -1
- package/dist/src/cli/index.d.ts +0 -2
- package/dist/src/cli/index.js +0 -282
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/platforms/core.d.ts +0 -12
- package/dist/src/cli/platforms/core.js +0 -73
- package/dist/src/cli/platforms/core.js.map +0 -1
- package/dist/src/cli/platforms/index.d.ts +0 -5
- package/dist/src/cli/platforms/index.js +0 -6
- package/dist/src/cli/platforms/index.js.map +0 -1
- package/dist/src/cli/platforms/paths.d.ts +0 -15
- package/dist/src/cli/platforms/paths.js +0 -102
- package/dist/src/cli/platforms/paths.js.map +0 -1
- package/dist/src/cli/platforms/scaffold.d.ts +0 -2
- package/dist/src/cli/platforms/scaffold.js +0 -73
- package/dist/src/cli/platforms/scaffold.js.map +0 -1
- package/dist/src/cli/platforms/utils.d.ts +0 -4
- package/dist/src/cli/platforms/utils.js +0 -76
- package/dist/src/cli/platforms/utils.js.map +0 -1
- package/dist/src/cli/shims.d.ts +0 -1
- package/dist/src/cli/shims.js +0 -67
- package/dist/src/cli/shims.js.map +0 -1
- package/dist/src/cli/utils/claude.d.ts +0 -8
- package/dist/src/cli/utils/claude.js +0 -58
- package/dist/src/cli/utils/claude.js.map +0 -1
- package/dist/src/cli/utils/compliance.d.ts +0 -42
- package/dist/src/cli/utils/compliance.js +0 -150
- package/dist/src/cli/utils/compliance.js.map +0 -1
- package/dist/src/cli/utils/config-schema.d.ts +0 -139
- package/dist/src/cli/utils/config-schema.js +0 -43
- package/dist/src/cli/utils/config-schema.js.map +0 -1
- package/dist/src/cli/utils/fs.d.ts +0 -10
- package/dist/src/cli/utils/fs.js +0 -139
- package/dist/src/cli/utils/fs.js.map +0 -1
- package/dist/src/cli/utils/i18n.d.ts +0 -21
- package/dist/src/cli/utils/i18n.js +0 -36
- package/dist/src/cli/utils/i18n.js.map +0 -1
- package/dist/src/cli/utils/memory.d.ts +0 -39
- package/dist/src/cli/utils/memory.js +0 -281
- package/dist/src/cli/utils/memory.js.map +0 -1
- package/dist/src/cli/utils/pkg.d.ts +0 -43
- package/dist/src/cli/utils/pkg.js +0 -283
- package/dist/src/cli/utils/pkg.js.map +0 -1
- package/dist/src/cli/utils/quality.d.ts +0 -8
- package/dist/src/cli/utils/quality.js +0 -8
- package/dist/src/cli/utils/quality.js.map +0 -1
- package/dist/src/cli/utils/schemas.d.ts +0 -49
- package/dist/src/cli/utils/schemas.js +0 -20
- package/dist/src/cli/utils/schemas.js.map +0 -1
- package/dist/src/cli/utils/string.d.ts +0 -7
- package/dist/src/cli/utils/string.js +0 -50
- package/dist/src/cli/utils/string.js.map +0 -1
- package/dist/src/cli/utils/time.d.ts +0 -2
- package/dist/src/cli/utils/time.js +0 -28
- package/dist/src/cli/utils/time.js.map +0 -1
- package/dist/src/cli/utils/ui.d.ts +0 -53
- package/dist/src/cli/utils/ui.js +0 -101
- package/dist/src/cli/utils/ui.js.map +0 -1
- package/dist/src/contracts/index.d.ts +0 -1
- package/dist/src/contracts/index.js +0 -2
- package/dist/src/contracts/index.js.map +0 -1
- package/dist/src/contracts/tasks.d.ts +0 -44
- package/dist/src/contracts/tasks.js +0 -21
- package/dist/src/contracts/tasks.js.map +0 -1
- package/dist/src/modules/agents/definitions.d.ts +0 -26
- package/dist/src/modules/agents/definitions.js +0 -564
- package/dist/src/modules/agents/definitions.js.map +0 -1
- package/dist/src/modules/agents/registry/analyst.d.ts +0 -2
- package/dist/src/modules/agents/registry/analyst.js +0 -40
- package/dist/src/modules/agents/registry/analyst.js.map +0 -1
- package/dist/src/modules/agents/registry/architect.d.ts +0 -2
- package/dist/src/modules/agents/registry/architect.js +0 -43
- package/dist/src/modules/agents/registry/architect.js.map +0 -1
- package/dist/src/modules/agents/registry/backend.d.ts +0 -2
- package/dist/src/modules/agents/registry/backend.js +0 -51
- package/dist/src/modules/agents/registry/backend.js.map +0 -1
- package/dist/src/modules/agents/registry/database.d.ts +0 -2
- package/dist/src/modules/agents/registry/database.js +0 -46
- package/dist/src/modules/agents/registry/database.js.map +0 -1
- package/dist/src/modules/agents/registry/devops.d.ts +0 -2
- package/dist/src/modules/agents/registry/devops.js +0 -46
- package/dist/src/modules/agents/registry/devops.js.map +0 -1
- package/dist/src/modules/agents/registry/explorer.d.ts +0 -2
- package/dist/src/modules/agents/registry/explorer.js +0 -38
- package/dist/src/modules/agents/registry/explorer.js.map +0 -1
- package/dist/src/modules/agents/registry/frontend.d.ts +0 -2
- package/dist/src/modules/agents/registry/frontend.js +0 -53
- package/dist/src/modules/agents/registry/frontend.js.map +0 -1
- package/dist/src/modules/agents/registry/git.d.ts +0 -2
- package/dist/src/modules/agents/registry/git.js +0 -37
- package/dist/src/modules/agents/registry/git.js.map +0 -1
- package/dist/src/modules/agents/registry/manager.d.ts +0 -2
- package/dist/src/modules/agents/registry/manager.js +0 -65
- package/dist/src/modules/agents/registry/manager.js.map +0 -1
- package/dist/src/modules/agents/registry/mobile.d.ts +0 -2
- package/dist/src/modules/agents/registry/mobile.js +0 -42
- package/dist/src/modules/agents/registry/mobile.js.map +0 -1
- package/dist/src/modules/agents/registry/native.d.ts +0 -2
- package/dist/src/modules/agents/registry/native.js +0 -42
- package/dist/src/modules/agents/registry/native.js.map +0 -1
- package/dist/src/modules/agents/registry/quality.d.ts +0 -2
- package/dist/src/modules/agents/registry/quality.js +0 -44
- package/dist/src/modules/agents/registry/quality.js.map +0 -1
- package/dist/src/modules/agents/registry/security.d.ts +0 -2
- package/dist/src/modules/agents/registry/security.js +0 -43
- package/dist/src/modules/agents/registry/security.js.map +0 -1
- package/dist/src/modules/agents/types.d.ts +0 -33
- package/dist/src/modules/agents/types.js +0 -2
- package/dist/src/modules/agents/types.js.map +0 -1
- package/dist/src/modules/contracts/api.d.ts +0 -178
- package/dist/src/modules/contracts/api.js +0 -56
- package/dist/src/modules/contracts/api.js.map +0 -1
- package/dist/src/modules/contracts/index.d.ts +0 -5
- package/dist/src/modules/contracts/index.js +0 -6
- package/dist/src/modules/contracts/index.js.map +0 -1
- package/dist/src/modules/engines/agent-executor.d.ts +0 -46
- package/dist/src/modules/engines/agent-executor.js +0 -241
- package/dist/src/modules/engines/agent-executor.js.map +0 -1
- package/dist/src/modules/engines/agent-loop.d.ts +0 -34
- package/dist/src/modules/engines/agent-loop.js +0 -102
- package/dist/src/modules/engines/agent-loop.js.map +0 -1
- package/dist/src/modules/engines/contract-engine.d.ts +0 -46
- package/dist/src/modules/engines/contract-engine.js +0 -116
- package/dist/src/modules/engines/contract-engine.js.map +0 -1
- package/dist/src/modules/engines/crud-governance.d.ts +0 -64
- package/dist/src/modules/engines/crud-governance.js +0 -184
- package/dist/src/modules/engines/crud-governance.js.map +0 -1
- package/dist/src/modules/engines/discovery-engine.d.ts +0 -42
- package/dist/src/modules/engines/discovery-engine.js +0 -161
- package/dist/src/modules/engines/discovery-engine.js.map +0 -1
- package/dist/src/modules/engines/evaluation-engine.d.ts +0 -18
- package/dist/src/modules/engines/evaluation-engine.js +0 -171
- package/dist/src/modules/engines/evaluation-engine.js.map +0 -1
- package/dist/src/modules/engines/file-lock.d.ts +0 -41
- package/dist/src/modules/engines/file-lock.js +0 -168
- package/dist/src/modules/engines/file-lock.js.map +0 -1
- package/dist/src/modules/engines/health-engine.d.ts +0 -22
- package/dist/src/modules/engines/health-engine.js +0 -127
- package/dist/src/modules/engines/health-engine.js.map +0 -1
- package/dist/src/modules/engines/phase-engine.d.ts +0 -82
- package/dist/src/modules/engines/phase-engine.js +0 -211
- package/dist/src/modules/engines/phase-engine.js.map +0 -1
- package/dist/src/modules/engines/planning-engine.d.ts +0 -25
- package/dist/src/modules/engines/planning-engine.js +0 -80
- package/dist/src/modules/engines/planning-engine.js.map +0 -1
- package/dist/src/modules/engines/policy-engine.d.ts +0 -63
- package/dist/src/modules/engines/policy-engine.js +0 -186
- package/dist/src/modules/engines/policy-engine.js.map +0 -1
- package/dist/src/modules/engines/quality-gate.d.ts +0 -31
- package/dist/src/modules/engines/quality-gate.js +0 -95
- package/dist/src/modules/engines/quality-gate.js.map +0 -1
- package/dist/src/modules/engines/risk-engine.d.ts +0 -34
- package/dist/src/modules/engines/risk-engine.js +0 -201
- package/dist/src/modules/engines/risk-engine.js.map +0 -1
- package/dist/src/modules/engines/routing-engine.d.ts +0 -96
- package/dist/src/modules/engines/routing-engine.js +0 -505
- package/dist/src/modules/engines/routing-engine.js.map +0 -1
- package/dist/src/modules/engines/session-engine.d.ts +0 -68
- package/dist/src/modules/engines/session-engine.js +0 -141
- package/dist/src/modules/engines/session-engine.js.map +0 -1
- package/dist/src/modules/engines/types.d.ts +0 -51
- package/dist/src/modules/engines/types.js +0 -2
- package/dist/src/modules/engines/types.js.map +0 -1
- package/dist/src/modules/memory/core.d.ts +0 -42
- package/dist/src/modules/memory/core.js +0 -100
- package/dist/src/modules/memory/core.js.map +0 -1
- package/dist/src/modules/memory/embedding.d.ts +0 -28
- package/dist/src/modules/memory/embedding.js +0 -131
- package/dist/src/modules/memory/embedding.js.map +0 -1
- package/dist/src/modules/memory/types.d.ts +0 -18
- package/dist/src/modules/memory/types.js +0 -2
- package/dist/src/modules/memory/types.js.map +0 -1
- package/dist/src/modules/memory/vector-store.d.ts +0 -13
- package/dist/src/modules/memory/vector-store.js +0 -75
- package/dist/src/modules/memory/vector-store.js.map +0 -1
- package/dist/src/modules/providers/definitions.d.ts +0 -9
- package/dist/src/modules/providers/definitions.js +0 -141
- package/dist/src/modules/providers/definitions.js.map +0 -1
- package/dist/src/modules/providers/llm-provider.d.ts +0 -87
- package/dist/src/modules/providers/llm-provider.js +0 -242
- package/dist/src/modules/providers/llm-provider.js.map +0 -1
- package/dist/src/modules/providers/registry.d.ts +0 -12
- package/dist/src/modules/providers/registry.js +0 -19
- package/dist/src/modules/providers/registry.js.map +0 -1
- package/dist/src/modules/providers/shared.d.ts +0 -1
- package/dist/src/modules/providers/shared.js +0 -104
- package/dist/src/modules/providers/shared.js.map +0 -1
- package/dist/src/modules/providers/types.d.ts +0 -14
- package/dist/src/modules/providers/types.js +0 -2
- package/dist/src/modules/providers/types.js.map +0 -1
- package/dist/src/modules/skills/adapter-skills.d.ts +0 -68
- package/dist/src/modules/skills/adapter-skills.js +0 -450
- package/dist/src/modules/skills/adapter-skills.js.map +0 -1
- package/dist/src/modules/skills/definitions.d.ts +0 -48
- package/dist/src/modules/skills/definitions.js +0 -71
- package/dist/src/modules/skills/definitions.js.map +0 -1
- package/dist/src/shared/audit.js.map +0 -1
- package/dist/src/shared/constants.js.map +0 -1
- package/dist/src/shared/errors.js.map +0 -1
- package/dist/src/shared/fs.d.ts +0 -9
- package/dist/src/shared/fs.js +0 -54
- package/dist/src/shared/fs.js.map +0 -1
- package/dist/src/shared/lock.js.map +0 -1
- package/dist/src/shared/logger.js.map +0 -1
- package/dist/src/shared/pii.js.map +0 -1
- package/dist/src/shared/retention.js.map +0 -1
- package/dist/src/shared/storage.d.ts +0 -141
- package/dist/src/shared/storage.js +0 -326
- package/dist/src/shared/storage.js.map +0 -1
- package/dist/src/shared/string.js.map +0 -1
- package/dist/src/shared/types.js.map +0 -1
- package/dist/tests/adapter.test.d.ts +0 -1
- package/dist/tests/adapter.test.js +0 -130
- package/dist/tests/adapter.test.js.map +0 -1
- package/dist/tests/adapters/paths.test.d.ts +0 -1
- package/dist/tests/adapters/paths.test.js +0 -63
- package/dist/tests/adapters/paths.test.js.map +0 -1
- package/dist/tests/agent-memory-v2.test.d.ts +0 -1
- package/dist/tests/agent-memory-v2.test.js +0 -68
- package/dist/tests/agent-memory-v2.test.js.map +0 -1
- package/dist/tests/agents-definitions.test.d.ts +0 -1
- package/dist/tests/agents-definitions.test.js +0 -103
- package/dist/tests/agents-definitions.test.js.map +0 -1
- package/dist/tests/approve.test.d.ts +0 -1
- package/dist/tests/approve.test.js +0 -52
- package/dist/tests/approve.test.js.map +0 -1
- package/dist/tests/cli/commands/check.test.d.ts +0 -1
- package/dist/tests/cli/commands/check.test.js +0 -9
- package/dist/tests/cli/commands/check.test.js.map +0 -1
- package/dist/tests/cli/commands/coverage.test.d.ts +0 -1
- package/dist/tests/cli/commands/coverage.test.js +0 -9
- package/dist/tests/cli/commands/coverage.test.js.map +0 -1
- package/dist/tests/cli/commands/dashboard-coverage.test.d.ts +0 -1
- package/dist/tests/cli/commands/dashboard-coverage.test.js +0 -90
- package/dist/tests/cli/commands/dashboard-coverage.test.js.map +0 -1
- package/dist/tests/cli/commands/exports.test.d.ts +0 -1
- package/dist/tests/cli/commands/exports.test.js +0 -61
- package/dist/tests/cli/commands/exports.test.js.map +0 -1
- package/dist/tests/cli/commands/lint.test.d.ts +0 -1
- package/dist/tests/cli/commands/lint.test.js +0 -9
- package/dist/tests/cli/commands/lint.test.js.map +0 -1
- package/dist/tests/cli/init/adapter_init.test.d.ts +0 -1
- package/dist/tests/cli/init/adapter_init.test.js +0 -49
- package/dist/tests/cli/init/adapter_init.test.js.map +0 -1
- package/dist/tests/cli/init/unified_init.test.d.ts +0 -1
- package/dist/tests/cli/init/unified_init.test.js +0 -56
- package/dist/tests/cli/init/unified_init.test.js.map +0 -1
- package/dist/tests/core-memory.test.d.ts +0 -1
- package/dist/tests/core-memory.test.js +0 -78
- package/dist/tests/core-memory.test.js.map +0 -1
- package/dist/tests/embedding.test.d.ts +0 -1
- package/dist/tests/embedding.test.js +0 -82
- package/dist/tests/embedding.test.js.map +0 -1
- package/dist/tests/engines/evaluation-engine.test.d.ts +0 -1
- package/dist/tests/engines/evaluation-engine.test.js +0 -71
- package/dist/tests/engines/evaluation-engine.test.js.map +0 -1
- package/dist/tests/engines/planning-engine.test.d.ts +0 -1
- package/dist/tests/engines/planning-engine.test.js +0 -100
- package/dist/tests/engines/planning-engine.test.js.map +0 -1
- package/dist/tests/engines/quality-gate.test.d.ts +0 -1
- package/dist/tests/engines/quality-gate.test.js +0 -59
- package/dist/tests/engines/quality-gate.test.js.map +0 -1
- package/dist/tests/engines/risk-engine.test.d.ts +0 -1
- package/dist/tests/engines/risk-engine.test.js +0 -80
- package/dist/tests/engines/risk-engine.test.js.map +0 -1
- package/dist/tests/engines/routing-engine.test.d.ts +0 -1
- package/dist/tests/engines/routing-engine.test.js +0 -78
- package/dist/tests/engines/routing-engine.test.js.map +0 -1
- package/dist/tests/errors.test.d.ts +0 -1
- package/dist/tests/errors.test.js +0 -64
- package/dist/tests/errors.test.js.map +0 -1
- package/dist/tests/fs-utils.test.d.ts +0 -1
- package/dist/tests/fs-utils.test.js +0 -101
- package/dist/tests/fs-utils.test.js.map +0 -1
- package/dist/tests/integration/agent_flow.test.d.ts +0 -1
- package/dist/tests/integration/agent_flow.test.js +0 -69
- package/dist/tests/integration/agent_flow.test.js.map +0 -1
- package/dist/tests/integration/hermes_locking.test.d.ts +0 -1
- package/dist/tests/integration/hermes_locking.test.js +0 -62
- package/dist/tests/integration/hermes_locking.test.js.map +0 -1
- package/dist/tests/logger.test.d.ts +0 -1
- package/dist/tests/logger.test.js +0 -81
- package/dist/tests/logger.test.js.map +0 -1
- package/dist/tests/memory-utils.test.d.ts +0 -1
- package/dist/tests/memory-utils.test.js +0 -59
- package/dist/tests/memory-utils.test.js.map +0 -1
- package/dist/tests/modules/adapters/adapters.test.d.ts +0 -1
- package/dist/tests/modules/adapters/adapters.test.js +0 -30
- package/dist/tests/modules/adapters/adapters.test.js.map +0 -1
- package/dist/tests/modules/contracts/contracts.test.d.ts +0 -1
- package/dist/tests/modules/contracts/contracts.test.js +0 -73
- package/dist/tests/modules/contracts/contracts.test.js.map +0 -1
- package/dist/tests/modules/engines/agent-executor.test.d.ts +0 -1
- package/dist/tests/modules/engines/agent-executor.test.js +0 -61
- package/dist/tests/modules/engines/agent-executor.test.js.map +0 -1
- package/dist/tests/modules/engines/evaluation-engine.test.d.ts +0 -1
- package/dist/tests/modules/engines/evaluation-engine.test.js +0 -45
- package/dist/tests/modules/engines/evaluation-engine.test.js.map +0 -1
- package/dist/tests/modules/engines/health-engine.test.d.ts +0 -1
- package/dist/tests/modules/engines/health-engine.test.js +0 -56
- package/dist/tests/modules/engines/health-engine.test.js.map +0 -1
- package/dist/tests/modules/engines/planning-engine.test.d.ts +0 -1
- package/dist/tests/modules/engines/planning-engine.test.js +0 -75
- package/dist/tests/modules/engines/planning-engine.test.js.map +0 -1
- package/dist/tests/modules/engines/risk-engine.test.d.ts +0 -1
- package/dist/tests/modules/engines/risk-engine.test.js +0 -61
- package/dist/tests/modules/engines/risk-engine.test.js.map +0 -1
- package/dist/tests/modules/engines/routing-engine.test.d.ts +0 -1
- package/dist/tests/modules/engines/routing-engine.test.js +0 -56
- package/dist/tests/modules/engines/routing-engine.test.js.map +0 -1
- package/dist/tests/modules/memory/vector-store.test.d.ts +0 -1
- package/dist/tests/modules/memory/vector-store.test.js +0 -109
- package/dist/tests/modules/memory/vector-store.test.js.map +0 -1
- package/dist/tests/orchestrate.test.d.ts +0 -1
- package/dist/tests/orchestrate.test.js +0 -71
- package/dist/tests/orchestrate.test.js.map +0 -1
- package/dist/tests/orchestrator-dependencies.test.d.ts +0 -1
- package/dist/tests/orchestrator-dependencies.test.js +0 -70
- package/dist/tests/orchestrator-dependencies.test.js.map +0 -1
- package/dist/tests/plan.test.d.ts +0 -1
- package/dist/tests/plan.test.js +0 -63
- package/dist/tests/plan.test.js.map +0 -1
- package/dist/tests/shared/audit.test.d.ts +0 -1
- package/dist/tests/shared/audit.test.js +0 -53
- package/dist/tests/shared/audit.test.js.map +0 -1
- package/dist/tests/shared/constants.test.d.ts +0 -1
- package/dist/tests/shared/constants.test.js +0 -17
- package/dist/tests/shared/constants.test.js.map +0 -1
- package/dist/tests/shared/lock.test.d.ts +0 -1
- package/dist/tests/shared/lock.test.js +0 -95
- package/dist/tests/shared/lock.test.js.map +0 -1
- package/dist/tests/shared/pii.test.d.ts +0 -1
- package/dist/tests/shared/pii.test.js +0 -183
- package/dist/tests/shared/pii.test.js.map +0 -1
- package/dist/tests/skills-definitions.test.d.ts +0 -1
- package/dist/tests/skills-definitions.test.js +0 -34
- package/dist/tests/skills-definitions.test.js.map +0 -1
- package/dist/tests/status-cost.test.d.ts +0 -1
- package/dist/tests/status-cost.test.js +0 -47
- package/dist/tests/status-cost.test.js.map +0 -1
- package/dist/tests/status.test.d.ts +0 -1
- package/dist/tests/status.test.js +0 -49
- package/dist/tests/status.test.js.map +0 -1
- package/dist/tests/storage-operations.test.d.ts +0 -1
- package/dist/tests/storage-operations.test.js +0 -143
- package/dist/tests/storage-operations.test.js.map +0 -1
- package/dist/tests/string.test.d.ts +0 -1
- package/dist/tests/string.test.js +0 -89
- package/dist/tests/string.test.js.map +0 -1
- package/dist/tests/time.test.d.ts +0 -1
- package/dist/tests/time.test.js +0 -48
- package/dist/tests/time.test.js.map +0 -1
- package/dist/tests/trace-replay.test.d.ts +0 -1
- package/dist/tests/trace-replay.test.js +0 -59
- package/dist/tests/trace-replay.test.js.map +0 -1
- package/dist/tests/trace.test.d.ts +0 -1
- package/dist/tests/trace.test.js +0 -35
- package/dist/tests/trace.test.js.map +0 -1
- /package/dist/{src/shared → shared/src}/audit.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/constants.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/constants.js +0 -0
- /package/dist/{src/shared → shared/src}/errors.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/errors.js +0 -0
- /package/dist/{atabey-mcp/src/shared → shared/src}/fs.d.ts +0 -0
- /package/dist/{atabey-mcp/src/shared → shared/src}/fs.js +0 -0
- /package/dist/{src/shared → shared/src}/lock.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/logger.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/logger.js +0 -0
- /package/dist/{src/shared → shared/src}/pii.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/retention.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/string.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/string.js +0 -0
- /package/dist/{src/shared → shared/src}/types.d.ts +0 -0
- /package/dist/{src/shared → shared/src}/types.js +0 -0
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import os from "os";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
5
|
-
import { CoreMemory } from "../src/modules/memory/core.js";
|
|
6
|
-
import { Storage } from "../src/shared/storage.js";
|
|
7
|
-
describe("CoreMemory", () => {
|
|
8
|
-
let testDbDir;
|
|
9
|
-
beforeAll(async () => {
|
|
10
|
-
// Use a temporary test database
|
|
11
|
-
testDbDir = fs.mkdtempSync(path.join(os.tmpdir(), "atabey-core-memory-test-"));
|
|
12
|
-
process.env.ATABEY_TEST_DIR = testDbDir;
|
|
13
|
-
await CoreMemory.init();
|
|
14
|
-
});
|
|
15
|
-
afterAll(() => {
|
|
16
|
-
delete process.env.ATABEY_TEST_DIR;
|
|
17
|
-
Storage.reset();
|
|
18
|
-
try {
|
|
19
|
-
fs.rmSync(testDbDir, { recursive: true, force: true });
|
|
20
|
-
}
|
|
21
|
-
catch { /* ignore */ }
|
|
22
|
-
});
|
|
23
|
-
it("should store and recall information", async () => {
|
|
24
|
-
const content = "The project uses Vitest for testing and TypeScript for coding.";
|
|
25
|
-
const id = await CoreMemory.remember({
|
|
26
|
-
content,
|
|
27
|
-
category: "ARCHITECTURE",
|
|
28
|
-
tags: ["test", "ts"]
|
|
29
|
-
});
|
|
30
|
-
expect(id).toBeDefined();
|
|
31
|
-
const results = await CoreMemory.recall("How is testing handled?", {
|
|
32
|
-
category: "ARCHITECTURE",
|
|
33
|
-
limit: 1
|
|
34
|
-
});
|
|
35
|
-
expect(results.length).toBe(1);
|
|
36
|
-
expect(results[0].entry.content).toBe(content);
|
|
37
|
-
// TF-IDF embedding produces positive similarity for relevant content
|
|
38
|
-
expect(results[0].score).toBeGreaterThan(0);
|
|
39
|
-
expect(results[0].score).toBeLessThanOrEqual(1);
|
|
40
|
-
});
|
|
41
|
-
it("should filter by category", async () => {
|
|
42
|
-
await CoreMemory.remember({
|
|
43
|
-
content: "Rule 1: No any type.",
|
|
44
|
-
category: "RULE"
|
|
45
|
-
});
|
|
46
|
-
const results = await CoreMemory.recall("any type", {
|
|
47
|
-
category: "ARCHITECTURE" // Searching in wrong category
|
|
48
|
-
});
|
|
49
|
-
expect(results.length).toBe(1);
|
|
50
|
-
expect(results[0].entry.metadata.category).toBe("ARCHITECTURE");
|
|
51
|
-
expect(results[0].entry.content).not.toContain("Rule 1");
|
|
52
|
-
});
|
|
53
|
-
it("should generate consistent embedding for similar texts", async () => {
|
|
54
|
-
const text1 = "backend API endpoint for user authentication";
|
|
55
|
-
const text2 = "user login API authentication service";
|
|
56
|
-
const text3 = "frontend button color and styling";
|
|
57
|
-
const vec1 = CoreMemory.generateEmbedding(text1);
|
|
58
|
-
const vec2 = CoreMemory.generateEmbedding(text2);
|
|
59
|
-
const vec3 = CoreMemory.generateEmbedding(text3);
|
|
60
|
-
// Similar texts should have higher cosine similarity than dissimilar ones
|
|
61
|
-
const sim12 = cosineSimilarity(vec1, vec2);
|
|
62
|
-
const sim13 = cosineSimilarity(vec1, vec3);
|
|
63
|
-
expect(sim12).toBeGreaterThan(sim13);
|
|
64
|
-
expect(vec1.length).toBe(384);
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
function cosineSimilarity(vecA, vecB) {
|
|
68
|
-
let dotProduct = 0;
|
|
69
|
-
let normA = 0;
|
|
70
|
-
let normB = 0;
|
|
71
|
-
for (let i = 0; i < vecA.length; i++) {
|
|
72
|
-
dotProduct += vecA[i] * vecB[i];
|
|
73
|
-
normA += vecA[i] * vecA[i];
|
|
74
|
-
normB += vecB[i] * vecB[i];
|
|
75
|
-
}
|
|
76
|
-
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=core-memory.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-memory.test.js","sourceRoot":"","sources":["../../tests/core-memory.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { generateEmbedding, generateEmbeddings, isOpenAIEmbedding } from "../src/modules/memory/embedding.js";
|
|
3
|
-
describe("Embedding Service", () => {
|
|
4
|
-
const originalEnv = process.env;
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
process.env = { ...originalEnv };
|
|
7
|
-
vi.stubGlobal("fetch", vi.fn());
|
|
8
|
-
});
|
|
9
|
-
afterEach(() => {
|
|
10
|
-
process.env = originalEnv;
|
|
11
|
-
vi.unstubAllGlobals();
|
|
12
|
-
vi.restoreAllMocks();
|
|
13
|
-
});
|
|
14
|
-
it("should correctly identify OpenAI embeddings by dimension", () => {
|
|
15
|
-
const openAIVector = new Array(1536).fill(0.1);
|
|
16
|
-
const tfidfVector = new Array(384).fill(0.1);
|
|
17
|
-
const invalidVector = new Array(100).fill(0.1);
|
|
18
|
-
expect(isOpenAIEmbedding(openAIVector)).toBe(true);
|
|
19
|
-
expect(isOpenAIEmbedding(tfidfVector)).toBe(false);
|
|
20
|
-
expect(isOpenAIEmbedding(invalidVector)).toBe(false);
|
|
21
|
-
});
|
|
22
|
-
it("should fallback to TF-IDF (padded to 1536) when no API key is provided", async () => {
|
|
23
|
-
delete process.env.OPENAI_API_KEY;
|
|
24
|
-
const text = "sample query text";
|
|
25
|
-
const vector = await generateEmbedding(text);
|
|
26
|
-
expect(vector).toBeDefined();
|
|
27
|
-
expect(vector.length).toBe(1536);
|
|
28
|
-
// Padded part (dimensions 384 to 1535) should be all 0
|
|
29
|
-
const paddedPart = vector.slice(384);
|
|
30
|
-
expect(paddedPart.every(val => val === 0)).toBe(true);
|
|
31
|
-
});
|
|
32
|
-
it("should use OpenAI API when API key is set and call succeeds", async () => {
|
|
33
|
-
process.env.OPENAI_API_KEY = "sk-test-key-12345";
|
|
34
|
-
const mockEmbedding = new Array(1536).fill(0.5);
|
|
35
|
-
const mockFetch = vi.mocked(fetch).mockResolvedValue({
|
|
36
|
-
ok: true,
|
|
37
|
-
status: 200,
|
|
38
|
-
json: async () => ({
|
|
39
|
-
data: [{ embedding: mockEmbedding }]
|
|
40
|
-
})
|
|
41
|
-
});
|
|
42
|
-
const vector = await generateEmbedding("hello world");
|
|
43
|
-
expect(mockFetch).toHaveBeenCalled();
|
|
44
|
-
expect(vector).toEqual(mockEmbedding);
|
|
45
|
-
});
|
|
46
|
-
it("should fallback to TF-IDF when OpenAI API call fails", async () => {
|
|
47
|
-
process.env.OPENAI_API_KEY = "sk-test-key-12345";
|
|
48
|
-
// Mock API failure
|
|
49
|
-
const mockFetch = vi.mocked(fetch).mockResolvedValue({
|
|
50
|
-
ok: false,
|
|
51
|
-
status: 500,
|
|
52
|
-
json: async () => ({ error: "Internal Server Error" })
|
|
53
|
-
});
|
|
54
|
-
const vector = await generateEmbedding("hello world");
|
|
55
|
-
expect(mockFetch).toHaveBeenCalled();
|
|
56
|
-
expect(vector.length).toBe(1536);
|
|
57
|
-
// Should have fallen back to TF-IDF (first 384 dimensions contain non-zero data, rest are 0)
|
|
58
|
-
const paddedPart = vector.slice(384);
|
|
59
|
-
expect(paddedPart.every(val => val === 0)).toBe(true);
|
|
60
|
-
});
|
|
61
|
-
it("should support batch embedding generation", async () => {
|
|
62
|
-
process.env.OPENAI_API_KEY = "sk-test-key-12345";
|
|
63
|
-
const mockEmbeddings = [
|
|
64
|
-
new Array(1536).fill(0.1),
|
|
65
|
-
new Array(1536).fill(0.2)
|
|
66
|
-
];
|
|
67
|
-
const mockFetch = vi.mocked(fetch).mockResolvedValue({
|
|
68
|
-
ok: true,
|
|
69
|
-
status: 200,
|
|
70
|
-
json: async () => ({
|
|
71
|
-
data: [
|
|
72
|
-
{ embedding: mockEmbeddings[0] },
|
|
73
|
-
{ embedding: mockEmbeddings[1] }
|
|
74
|
-
]
|
|
75
|
-
})
|
|
76
|
-
});
|
|
77
|
-
const vectors = await generateEmbeddings(["doc1", "doc2"]);
|
|
78
|
-
expect(mockFetch).toHaveBeenCalled();
|
|
79
|
-
expect(vectors).toEqual(mockEmbeddings);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
//# sourceMappingURL=embedding.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embedding.test.js","sourceRoot":"","sources":["../../tests/embedding.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import * as memoryUtils from "../../src/cli/utils/memory.js";
|
|
3
|
-
import { EvaluationEngine } from "../../src/modules/engines/evaluation-engine.js";
|
|
4
|
-
import * as fsUtils from "../../src/shared/fs.js";
|
|
5
|
-
// Mock fs to prevent real command execution
|
|
6
|
-
vi.mock("fs", () => ({
|
|
7
|
-
default: {
|
|
8
|
-
existsSync: vi.fn().mockReturnValue(false),
|
|
9
|
-
readFileSync: vi.fn().mockReturnValue(""),
|
|
10
|
-
writeFileSync: vi.fn(),
|
|
11
|
-
mkdirSync: vi.fn(),
|
|
12
|
-
readdirSync: vi.fn().mockReturnValue([]),
|
|
13
|
-
statSync: vi.fn(),
|
|
14
|
-
},
|
|
15
|
-
existsSync: vi.fn().mockReturnValue(false),
|
|
16
|
-
readFileSync: vi.fn().mockReturnValue(""),
|
|
17
|
-
writeFileSync: vi.fn(),
|
|
18
|
-
mkdirSync: vi.fn(),
|
|
19
|
-
readdirSync: vi.fn().mockReturnValue([]),
|
|
20
|
-
statSync: vi.fn(),
|
|
21
|
-
}));
|
|
22
|
-
describe("EvaluationEngine", () => {
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
vi.spyOn(memoryUtils, "getFrameworkDir").mockReturnValue("/tmp/test-atabey");
|
|
25
|
-
vi.spyOn(fsUtils, "ensureDir").mockImplementation(() => { });
|
|
26
|
-
vi.spyOn(fsUtils, "writeTextFile").mockImplementation(() => { });
|
|
27
|
-
vi.spyOn(fsUtils, "appendFile").mockImplementation(() => { });
|
|
28
|
-
vi.spyOn(fsUtils, "runCommandQuiet").mockImplementation(() => { });
|
|
29
|
-
});
|
|
30
|
-
describe("evaluateTask", () => {
|
|
31
|
-
it("should return an EvaluationResult with correct structure", () => {
|
|
32
|
-
const result = EvaluationEngine.evaluateTask("T-001", "@backend", 1000);
|
|
33
|
-
expect(result).toHaveProperty("traceId");
|
|
34
|
-
expect(result).toHaveProperty("agent");
|
|
35
|
-
expect(result).toHaveProperty("score");
|
|
36
|
-
expect(result).toHaveProperty("metrics");
|
|
37
|
-
expect(result).toHaveProperty("durationMs");
|
|
38
|
-
expect(result).toHaveProperty("timestamp");
|
|
39
|
-
});
|
|
40
|
-
it("should set agent name without @ prefix", () => {
|
|
41
|
-
const result = EvaluationEngine.evaluateTask("T-001", "@backend", 1000);
|
|
42
|
-
expect(result.agent).toBe("backend");
|
|
43
|
-
});
|
|
44
|
-
it("should return a score between 0 and 100", () => {
|
|
45
|
-
const result = EvaluationEngine.evaluateTask("T-001", "@backend", 1000);
|
|
46
|
-
expect(result.score).toBeGreaterThanOrEqual(0);
|
|
47
|
-
expect(result.score).toBeLessThanOrEqual(100);
|
|
48
|
-
});
|
|
49
|
-
it("should record durationMs correctly", () => {
|
|
50
|
-
const result = EvaluationEngine.evaluateTask("T-001", "@backend", 5000);
|
|
51
|
-
expect(result.durationMs).toBe(5000);
|
|
52
|
-
});
|
|
53
|
-
it("should have metrics object with all required fields", () => {
|
|
54
|
-
const result = EvaluationEngine.evaluateTask("T-001", "@backend", 1000);
|
|
55
|
-
expect(result.metrics).toHaveProperty("compilation");
|
|
56
|
-
expect(result.metrics).toHaveProperty("lint");
|
|
57
|
-
expect(result.metrics).toHaveProperty("tests");
|
|
58
|
-
expect(result.metrics).toHaveProperty("compliance");
|
|
59
|
-
});
|
|
60
|
-
it("should penalize long-running tasks", () => {
|
|
61
|
-
const fastResult = EvaluationEngine.evaluateTask("T-001", "@backend", 1000);
|
|
62
|
-
const slowResult = EvaluationEngine.evaluateTask("T-002", "@backend", 130000);
|
|
63
|
-
expect(slowResult.score).toBeLessThanOrEqual(fastResult.score);
|
|
64
|
-
});
|
|
65
|
-
it("should handle different agent names", () => {
|
|
66
|
-
const result = EvaluationEngine.evaluateTask("T-003", "@frontend", 2000);
|
|
67
|
-
expect(result.agent).toBe("frontend");
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
//# sourceMappingURL=evaluation-engine.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation-engine.test.js","sourceRoot":"","sources":["../../../tests/engines/evaluation-engine.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAElD,4CAA4C;AAC5C,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE;QACL,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;QAC1C,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;QACzC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;QAClB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;QACxC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;KACpB;IACD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;IAC1C,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;IACzC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;IAClB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;IACxC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;CACpB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,UAAU,CAAC,GAAG,EAAE;QACZ,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QAC7E,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5D,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAChE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7D,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAChE,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC1C,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAC9E,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { PlanningEngine } from "../../src/modules/engines/planning-engine.js";
|
|
3
|
-
describe("PlanningEngine", () => {
|
|
4
|
-
describe("createPlan", () => {
|
|
5
|
-
it("should create a plan with valid structure", () => {
|
|
6
|
-
const plan = PlanningEngine.createPlan([
|
|
7
|
-
{ task: "Create login API", agent: "@backend" },
|
|
8
|
-
{ task: "Create login page", agent: "@frontend" },
|
|
9
|
-
]);
|
|
10
|
-
expect(plan).toHaveProperty("planId");
|
|
11
|
-
expect(plan).toHaveProperty("tasks");
|
|
12
|
-
expect(plan.tasks).toHaveLength(2);
|
|
13
|
-
});
|
|
14
|
-
it("should assign planId as a non-empty string", () => {
|
|
15
|
-
const plan = PlanningEngine.createPlan([
|
|
16
|
-
{ task: "Test task" },
|
|
17
|
-
]);
|
|
18
|
-
expect(plan.planId).toBeTruthy();
|
|
19
|
-
expect(typeof plan.planId).toBe("string");
|
|
20
|
-
});
|
|
21
|
-
it("should auto-assign agent via RoutingEngine if not provided", () => {
|
|
22
|
-
const plan = PlanningEngine.createPlan([
|
|
23
|
-
{ task: "Create a backend REST API" },
|
|
24
|
-
]);
|
|
25
|
-
expect(plan.tasks[0].agent).toBeTruthy();
|
|
26
|
-
});
|
|
27
|
-
it("should use provided task IDs", () => {
|
|
28
|
-
const plan = PlanningEngine.createPlan([
|
|
29
|
-
{ id: "TASK_01", task: "Test", agent: "@backend" },
|
|
30
|
-
]);
|
|
31
|
-
expect(plan.tasks[0].id).toBe("TASK_01");
|
|
32
|
-
});
|
|
33
|
-
it("should auto-generate task IDs if not provided", () => {
|
|
34
|
-
const plan = PlanningEngine.createPlan([
|
|
35
|
-
{ task: "Test", agent: "@backend" },
|
|
36
|
-
{ task: "Test 2", agent: "@frontend" },
|
|
37
|
-
]);
|
|
38
|
-
expect(plan.tasks[0].id).toBeTruthy();
|
|
39
|
-
expect(plan.tasks[1].id).toBeTruthy();
|
|
40
|
-
});
|
|
41
|
-
it("should include dependencies if provided", () => {
|
|
42
|
-
const plan = PlanningEngine.createPlan([
|
|
43
|
-
{ id: "TASK_01", task: "Setup DB", agent: "@backend" },
|
|
44
|
-
{ id: "TASK_02", task: "Create API", agent: "@backend", dependencies: ["TASK_01"] },
|
|
45
|
-
]);
|
|
46
|
-
expect(plan.tasks[1].dependencies).toContain("TASK_01");
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
describe("validatePlan", () => {
|
|
50
|
-
it("should validate a correct plan", () => {
|
|
51
|
-
const plan = PlanningEngine.createPlan([
|
|
52
|
-
{ id: "TASK_01", task: "Setup DB", agent: "@backend" },
|
|
53
|
-
{ id: "TASK_02", task: "Create API", agent: "@backend", dependencies: ["TASK_01"] },
|
|
54
|
-
]);
|
|
55
|
-
const result = PlanningEngine.validatePlan(plan);
|
|
56
|
-
expect(result.valid).toBe(true);
|
|
57
|
-
expect(result.errors).toHaveLength(0);
|
|
58
|
-
});
|
|
59
|
-
it("should detect non-existent dependencies", () => {
|
|
60
|
-
const plan = PlanningEngine.createPlan([
|
|
61
|
-
{ id: "TASK_01", task: "Create API", agent: "@backend", dependencies: ["TASK_99"] },
|
|
62
|
-
]);
|
|
63
|
-
const result = PlanningEngine.validatePlan(plan);
|
|
64
|
-
expect(result.valid).toBe(false);
|
|
65
|
-
expect(result.errors.some(e => e.includes("non-existent"))).toBe(true);
|
|
66
|
-
});
|
|
67
|
-
it("should detect self-dependency", () => {
|
|
68
|
-
// Manually create a plan with self-dependency
|
|
69
|
-
const manualPlan = {
|
|
70
|
-
planId: "PLAN_TEST",
|
|
71
|
-
tasks: [
|
|
72
|
-
{ id: "TASK_01", agent: "@backend", task: "Task", dependencies: ["TASK_01"] },
|
|
73
|
-
],
|
|
74
|
-
};
|
|
75
|
-
const result = PlanningEngine.validatePlan(manualPlan);
|
|
76
|
-
expect(result.valid).toBe(false);
|
|
77
|
-
expect(result.errors.some(e => e.includes("cannot depend on itself"))).toBe(true);
|
|
78
|
-
});
|
|
79
|
-
it("should detect circular dependencies", () => {
|
|
80
|
-
const circularPlan = {
|
|
81
|
-
planId: "PLAN_CIRCULAR",
|
|
82
|
-
tasks: [
|
|
83
|
-
{ id: "TASK_01", agent: "@backend", task: "Task 1", dependencies: ["TASK_02"] },
|
|
84
|
-
{ id: "TASK_02", agent: "@backend", task: "Task 2", dependencies: ["TASK_01"] },
|
|
85
|
-
],
|
|
86
|
-
};
|
|
87
|
-
const result = PlanningEngine.validatePlan(circularPlan);
|
|
88
|
-
expect(result.valid).toBe(false);
|
|
89
|
-
expect(result.errors.some(e => e.includes("Circular"))).toBe(true);
|
|
90
|
-
});
|
|
91
|
-
it("should validate a single task plan with no dependencies", () => {
|
|
92
|
-
const plan = PlanningEngine.createPlan([
|
|
93
|
-
{ id: "TASK_01", task: "Single task", agent: "@backend" },
|
|
94
|
-
]);
|
|
95
|
-
const result = PlanningEngine.validatePlan(plan);
|
|
96
|
-
expect(result.valid).toBe(true);
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
//# sourceMappingURL=planning-engine.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"planning-engine.test.js","sourceRoot":"","sources":["../../../tests/engines/planning-engine.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { QualityGate } from "../../src/modules/engines/quality-gate.js";
|
|
3
|
-
describe("QualityGate", () => {
|
|
4
|
-
const originalEnv = process.env;
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
vi.resetModules();
|
|
7
|
-
process.env = { ...originalEnv, VITEST: "true" };
|
|
8
|
-
});
|
|
9
|
-
afterEach(() => {
|
|
10
|
-
process.env = originalEnv;
|
|
11
|
-
});
|
|
12
|
-
describe("check", () => {
|
|
13
|
-
it("should pass valid output", async () => {
|
|
14
|
-
const result = await QualityGate.check("@backend", "function add(a: number, b: number): number { return a + b; }", "Create an add function");
|
|
15
|
-
expect(result.passed).toBe(true);
|
|
16
|
-
expect(result.reason).toContain("passed");
|
|
17
|
-
});
|
|
18
|
-
it("should fail empty output", async () => {
|
|
19
|
-
const result = await QualityGate.check("@backend", "", "Do something");
|
|
20
|
-
expect(result.passed).toBe(false);
|
|
21
|
-
expect(result.reason).toContain("empty");
|
|
22
|
-
});
|
|
23
|
-
it("should fail short output", async () => {
|
|
24
|
-
const result = await QualityGate.check("@backend", "short", "Do something");
|
|
25
|
-
expect(result.passed).toBe(false);
|
|
26
|
-
expect(result.reason).toContain("short");
|
|
27
|
-
});
|
|
28
|
-
it("should fail output containing ERROR", async () => {
|
|
29
|
-
const result = await QualityGate.check("@backend", "This is a long enough output but contains ERROR in it", "Do something");
|
|
30
|
-
expect(result.passed).toBe(false);
|
|
31
|
-
expect(result.reason).toContain("ERROR");
|
|
32
|
-
});
|
|
33
|
-
it("should fail output containing FAILED", async () => {
|
|
34
|
-
const result = await QualityGate.check("@backend", "This is a long enough output but the task FAILED", "Do something");
|
|
35
|
-
expect(result.passed).toBe(false);
|
|
36
|
-
expect(result.reason).toContain("FAILED");
|
|
37
|
-
});
|
|
38
|
-
it("should fail output containing TIMEOUT", async () => {
|
|
39
|
-
const result = await QualityGate.check("@backend", "This is a long enough output but it TIMEOUT", "Do something");
|
|
40
|
-
expect(result.passed).toBe(false);
|
|
41
|
-
expect(result.reason).toContain("TIMEOUT");
|
|
42
|
-
});
|
|
43
|
-
it("should fail output with `any` type violation", async () => {
|
|
44
|
-
const result = await QualityGate.check("@backend", "function process(data: any): any { return data; }", "Create a process function");
|
|
45
|
-
expect(result.passed).toBe(false);
|
|
46
|
-
expect(result.reason).toContain("any");
|
|
47
|
-
});
|
|
48
|
-
it("should pass output with proper TypeScript types", async () => {
|
|
49
|
-
const result = await QualityGate.check("@backend", "function process(data: string): Record<string, unknown> { return { result: data }; }", "Create a process function");
|
|
50
|
-
expect(result.passed).toBe(true);
|
|
51
|
-
});
|
|
52
|
-
it("should handle CRASHED indicator", async () => {
|
|
53
|
-
const result = await QualityGate.check("@backend", "The application CRASHED during execution of this long enough output", "Run application");
|
|
54
|
-
expect(result.passed).toBe(false);
|
|
55
|
-
expect(result.reason).toContain("CRASHED");
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=quality-gate.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-gate.test.js","sourceRoot":"","sources":["../../../tests/engines/quality-gate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { RiskEngine } from "../../src/modules/engines/risk-engine.js";
|
|
3
|
-
describe("RiskEngine", () => {
|
|
4
|
-
describe("assessTaskRisk", () => {
|
|
5
|
-
it("should return LOW risk for safe tasks", () => {
|
|
6
|
-
const result = RiskEngine.assessTaskRisk("Create a new user endpoint");
|
|
7
|
-
expect(result.severity).toBe("LOW");
|
|
8
|
-
expect(result.requiresApproval).toBe(false);
|
|
9
|
-
expect(result.totalScore).toBeLessThan(20);
|
|
10
|
-
});
|
|
11
|
-
it("should detect DELETE keyword as high risk", () => {
|
|
12
|
-
const result = RiskEngine.assessTaskRisk("Delete all records from the users table");
|
|
13
|
-
expect(result.factors.some(f => f.factor.includes("delete"))).toBe(true);
|
|
14
|
-
expect(result.totalScore).toBeGreaterThanOrEqual(40);
|
|
15
|
-
});
|
|
16
|
-
it("should detect DROP keyword as high risk", () => {
|
|
17
|
-
const result = RiskEngine.assessTaskRisk("DROP the old table");
|
|
18
|
-
expect(result.factors.some(f => f.factor.includes("drop"))).toBe(true);
|
|
19
|
-
});
|
|
20
|
-
it("should detect TRUNCATE keyword as high risk", () => {
|
|
21
|
-
const result = RiskEngine.assessTaskRisk("TRUNCATE the logs table");
|
|
22
|
-
expect(result.factors.some(f => f.factor.includes("truncate"))).toBe(true);
|
|
23
|
-
});
|
|
24
|
-
it("should detect rm -rf as high risk", () => {
|
|
25
|
-
const result = RiskEngine.assessTaskRisk("Run rm -rf / to clean up");
|
|
26
|
-
expect(result.factors.some(f => f.factor.includes("rm -rf"))).toBe(true);
|
|
27
|
-
expect(result.severity).toBe("HIGH");
|
|
28
|
-
});
|
|
29
|
-
it("should detect sensitive paths in task", () => {
|
|
30
|
-
const result = RiskEngine.assessTaskRisk("Modify the .env configuration file");
|
|
31
|
-
expect(result.factors.some(f => f.factor.includes(".env"))).toBe(true);
|
|
32
|
-
});
|
|
33
|
-
it("should require approval for score >= 60", () => {
|
|
34
|
-
const result = RiskEngine.assessTaskRisk("Delete all records, DROP the table, and purge the cache");
|
|
35
|
-
expect(result.requiresApproval).toBe(true);
|
|
36
|
-
expect(result.totalScore).toBeGreaterThanOrEqual(60);
|
|
37
|
-
});
|
|
38
|
-
it("should add complexity risk for long tasks", () => {
|
|
39
|
-
const longTask = "a".repeat(301);
|
|
40
|
-
const result = RiskEngine.assessTaskRisk(longTask);
|
|
41
|
-
expect(result.factors.some(f => f.factor.includes("Complexity"))).toBe(true);
|
|
42
|
-
});
|
|
43
|
-
it("should not exceed max score of 100", () => {
|
|
44
|
-
const result = RiskEngine.assessTaskRisk("delete drop truncate rm -rf purge format force");
|
|
45
|
-
expect(result.totalScore).toBeLessThanOrEqual(100);
|
|
46
|
-
});
|
|
47
|
-
it("should detect PURGE keyword", () => {
|
|
48
|
-
const result = RiskEngine.assessTaskRisk("Purge all old records");
|
|
49
|
-
expect(result.factors.some(f => f.factor.includes("purge"))).toBe(true);
|
|
50
|
-
});
|
|
51
|
-
it("should detect FORCE keyword", () => {
|
|
52
|
-
const result = RiskEngine.assessTaskRisk("Force delete the directory");
|
|
53
|
-
expect(result.factors.some(f => f.factor.includes("force"))).toBe(true);
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
describe("assessChangeRisk", () => {
|
|
57
|
-
it("should assess write operations as higher risk", () => {
|
|
58
|
-
const result = RiskEngine.assessChangeRisk("src/file.ts", "write");
|
|
59
|
-
expect(result.factors.some(f => f.factor.includes("write"))).toBe(true);
|
|
60
|
-
});
|
|
61
|
-
it("should assess replace operations as lower risk", () => {
|
|
62
|
-
const writeResult = RiskEngine.assessChangeRisk("src/file.ts", "write");
|
|
63
|
-
const replaceResult = RiskEngine.assessChangeRisk("src/file.ts", "replace");
|
|
64
|
-
expect(writeResult.totalScore).toBeGreaterThan(replaceResult.totalScore);
|
|
65
|
-
});
|
|
66
|
-
it("should detect sensitive file paths", () => {
|
|
67
|
-
const result = RiskEngine.assessChangeRisk(".env", "write");
|
|
68
|
-
expect(result.factors.some(f => f.factor.includes(".env"))).toBe(true);
|
|
69
|
-
});
|
|
70
|
-
it("should detect config file changes", () => {
|
|
71
|
-
const result = RiskEngine.assessChangeRisk("src/config/database.ts", "write");
|
|
72
|
-
expect(result.factors.some(f => f.factor.includes("config"))).toBe(true);
|
|
73
|
-
});
|
|
74
|
-
it("should detect atabey framework file changes", () => {
|
|
75
|
-
const result = RiskEngine.assessChangeRisk(".atabey/config.json", "write");
|
|
76
|
-
expect(result.factors.some(f => f.factor.includes("atabey"))).toBe(true);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
//# sourceMappingURL=risk-engine.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"risk-engine.test.js","sourceRoot":"","sources":["../../../tests/engines/risk-engine.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import * as memoryUtils from "../../src/cli/utils/memory.js";
|
|
3
|
-
import { RoutingEngine } from "../../src/modules/engines/routing-engine.js";
|
|
4
|
-
describe("RoutingEngine", () => {
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
vi.spyOn(memoryUtils, "getFrameworkDir").mockReturnValue("/tmp/test-atabey");
|
|
7
|
-
});
|
|
8
|
-
describe("resolveAgent", () => {
|
|
9
|
-
it("should route backend tasks to @backend", () => {
|
|
10
|
-
const agent = RoutingEngine.resolveAgent("Create a REST API for user management with CRUD operations");
|
|
11
|
-
expect(agent).toBe("@backend");
|
|
12
|
-
});
|
|
13
|
-
it("should route frontend tasks to @frontend", () => {
|
|
14
|
-
const agent = RoutingEngine.resolveAgent("Build a React login page with Tailwind CSS");
|
|
15
|
-
expect(agent).toBe("@frontend");
|
|
16
|
-
});
|
|
17
|
-
it("should route security tasks to @security", () => {
|
|
18
|
-
const agent = RoutingEngine.resolveAgent("Audit the authentication middleware for vulnerabilities");
|
|
19
|
-
expect(agent).toBe("@security");
|
|
20
|
-
});
|
|
21
|
-
it("should route database tasks to @database", () => {
|
|
22
|
-
const agent = RoutingEngine.resolveAgent("Create a migration for the users table");
|
|
23
|
-
expect(agent).toBe("@database");
|
|
24
|
-
});
|
|
25
|
-
it("should route devops tasks to @devops", () => {
|
|
26
|
-
const agent = RoutingEngine.resolveAgent("Set up Docker and CI/CD pipeline");
|
|
27
|
-
expect(agent).toBe("@devops");
|
|
28
|
-
});
|
|
29
|
-
it("should route mobile tasks to @mobile", () => {
|
|
30
|
-
const agent = RoutingEngine.resolveAgent("Build a React Native screen for user profile");
|
|
31
|
-
// TF-IDF may route to @frontend due to "React" keyword weight
|
|
32
|
-
expect(["@mobile", "@frontend"]).toContain(agent);
|
|
33
|
-
});
|
|
34
|
-
it("should route architecture tasks to @architect", () => {
|
|
35
|
-
const agent = RoutingEngine.resolveAgent("Design the system architecture for microservices");
|
|
36
|
-
expect(agent).toBe("@architect");
|
|
37
|
-
});
|
|
38
|
-
it("should default to @backend for unknown tasks", () => {
|
|
39
|
-
const agent = RoutingEngine.resolveAgent("Do something random");
|
|
40
|
-
// TF-IDF may route to various agents based on keyword matching
|
|
41
|
-
expect(agent).toBeTruthy();
|
|
42
|
-
expect(agent.startsWith("@")).toBe(true);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
describe("resolveWithDetails", () => {
|
|
46
|
-
it("should return routing details with score and confidence", () => {
|
|
47
|
-
const result = RoutingEngine.resolveWithDetails("Create a Node.js backend API");
|
|
48
|
-
expect(result).toHaveProperty("agent");
|
|
49
|
-
expect(result).toHaveProperty("score");
|
|
50
|
-
expect(result).toHaveProperty("confidence");
|
|
51
|
-
expect(result).toHaveProperty("reasoning");
|
|
52
|
-
expect(result).toHaveProperty("subTasks");
|
|
53
|
-
expect(["high", "medium", "low"]).toContain(result.confidence);
|
|
54
|
-
});
|
|
55
|
-
it("should return subtasks array", () => {
|
|
56
|
-
const result = RoutingEngine.resolveWithDetails("Build a React frontend");
|
|
57
|
-
expect(Array.isArray(result.subTasks)).toBe(true);
|
|
58
|
-
expect(result.subTasks.length).toBeGreaterThan(0);
|
|
59
|
-
});
|
|
60
|
-
it("should return high confidence for clear backend tasks", () => {
|
|
61
|
-
const result = RoutingEngine.resolveWithDetails("Create a backend API endpoint for user authentication with JWT tokens and database queries");
|
|
62
|
-
expect(result.confidence).toBe("high");
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe("planTask", () => {
|
|
66
|
-
it("should return a structured plan array", () => {
|
|
67
|
-
const plan = RoutingEngine.planTask("Create login page");
|
|
68
|
-
expect(Array.isArray(plan)).toBe(true);
|
|
69
|
-
expect(plan.length).toBeGreaterThan(0);
|
|
70
|
-
expect(plan[0]).toContain("Task:");
|
|
71
|
-
});
|
|
72
|
-
it("should include subtask steps in the plan", () => {
|
|
73
|
-
const plan = RoutingEngine.planTask("Create a database migration");
|
|
74
|
-
expect(plan.some(line => line.includes("Subtasks"))).toBe(true);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
//# sourceMappingURL=routing-engine.test.js.map
|