atabey 0.0.16 → 0.0.18
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 +174 -699
- package/dist/atabey/src/cli/commands/approve.d.ts +1 -0
- package/dist/atabey/src/cli/commands/approve.js +64 -0
- package/dist/atabey/src/cli/commands/approve.js.map +1 -0
- package/dist/atabey/src/cli/commands/check.d.ts +1 -0
- package/dist/atabey/src/cli/commands/check.js +197 -0
- package/dist/atabey/src/cli/commands/check.js.map +1 -0
- package/dist/atabey/src/cli/commands/compliance.d.ts +5 -0
- package/dist/atabey/src/cli/commands/compliance.js +43 -0
- package/dist/atabey/src/cli/commands/compliance.js.map +1 -0
- package/dist/atabey/src/cli/commands/contract.d.ts +10 -0
- package/dist/atabey/src/cli/commands/contract.js +52 -0
- package/dist/atabey/src/cli/commands/contract.js.map +1 -0
- package/dist/atabey/src/cli/commands/coverage.d.ts +1 -0
- package/dist/atabey/src/cli/commands/coverage.js +121 -0
- package/dist/atabey/src/cli/commands/coverage.js.map +1 -0
- package/dist/atabey/src/cli/commands/dashboard.d.ts +5 -0
- package/dist/atabey/src/cli/commands/dashboard.js +753 -0
- package/dist/atabey/src/cli/commands/dashboard.js.map +1 -0
- package/dist/atabey/src/cli/commands/explorer.d.ts +2 -0
- package/dist/atabey/src/cli/commands/explorer.js +44 -0
- package/dist/atabey/src/cli/commands/explorer.js.map +1 -0
- package/dist/atabey/src/cli/commands/git.d.ts +2 -0
- package/dist/atabey/src/cli/commands/git.js +40 -0
- package/dist/atabey/src/cli/commands/git.js.map +1 -0
- package/dist/atabey/src/cli/commands/index-codebase.d.ts +4 -0
- package/dist/atabey/src/cli/commands/index-codebase.js +52 -0
- package/dist/atabey/src/cli/commands/index-codebase.js.map +1 -0
- package/dist/atabey/src/cli/commands/init/create-agent.d.ts +4 -0
- package/dist/atabey/src/cli/commands/init/create-agent.js +59 -0
- package/dist/atabey/src/cli/commands/init/create-agent.js.map +1 -0
- package/dist/atabey/src/cli/commands/init/scaffold-core.d.ts +13 -0
- package/dist/atabey/src/cli/commands/init/scaffold-core.js +129 -0
- package/dist/atabey/src/cli/commands/init/scaffold-core.js.map +1 -0
- package/dist/atabey/src/cli/commands/init/scaffold-docs.d.ts +4 -0
- package/dist/atabey/src/cli/commands/init/scaffold-docs.js +36 -0
- package/dist/atabey/src/cli/commands/init/scaffold-docs.js.map +1 -0
- package/dist/atabey/src/cli/commands/init/scaffold-ops.d.ts +1 -0
- package/dist/atabey/src/cli/commands/init/scaffold-ops.js +81 -0
- package/dist/atabey/src/cli/commands/init/scaffold-ops.js.map +1 -0
- package/dist/atabey/src/cli/commands/init/scaffold-standards.d.ts +2 -0
- package/dist/atabey/src/cli/commands/init/scaffold-standards.js +84 -0
- package/dist/atabey/src/cli/commands/init/scaffold-standards.js.map +1 -0
- package/dist/atabey/src/cli/commands/init.d.ts +11 -0
- package/dist/atabey/src/cli/commands/init.js +362 -0
- package/dist/atabey/src/cli/commands/init.js.map +1 -0
- package/dist/atabey/src/cli/commands/knowledge.d.ts +2 -0
- package/dist/atabey/src/cli/commands/knowledge.js +16 -0
- package/dist/atabey/src/cli/commands/knowledge.js.map +1 -0
- package/dist/atabey/src/cli/commands/lint.d.ts +4 -0
- package/dist/atabey/src/cli/commands/lint.js +24 -0
- package/dist/atabey/src/cli/commands/lint.js.map +1 -0
- package/dist/atabey/src/cli/commands/log.d.ts +10 -0
- package/dist/atabey/src/cli/commands/log.js +14 -0
- package/dist/atabey/src/cli/commands/log.js.map +1 -0
- package/dist/atabey/src/cli/commands/mcp.d.ts +11 -0
- package/dist/atabey/src/cli/commands/mcp.js +132 -0
- package/dist/atabey/src/cli/commands/mcp.js.map +1 -0
- package/dist/atabey/src/cli/commands/memory.d.ts +1 -0
- package/dist/atabey/src/cli/commands/memory.js +5 -0
- package/dist/atabey/src/cli/commands/memory.js.map +1 -0
- package/dist/atabey/src/cli/commands/orchestrate.d.ts +61 -0
- package/dist/atabey/src/cli/commands/orchestrate.js +238 -0
- package/dist/atabey/src/cli/commands/orchestrate.js.map +1 -0
- package/dist/atabey/src/cli/commands/plan.d.ts +11 -0
- package/dist/atabey/src/cli/commands/plan.js +120 -0
- package/dist/atabey/src/cli/commands/plan.js.map +1 -0
- package/dist/atabey/src/cli/commands/quickstart.d.ts +9 -0
- package/dist/atabey/src/cli/commands/quickstart.js +60 -0
- package/dist/atabey/src/cli/commands/quickstart.js.map +1 -0
- package/dist/atabey/src/cli/commands/script.d.ts +1 -0
- package/dist/atabey/src/cli/commands/script.js +28 -0
- package/dist/atabey/src/cli/commands/script.js.map +1 -0
- package/dist/atabey/src/cli/commands/security.d.ts +1 -0
- package/dist/atabey/src/cli/commands/security.js +34 -0
- package/dist/atabey/src/cli/commands/security.js.map +1 -0
- package/dist/atabey/src/cli/commands/status.d.ts +4 -0
- package/dist/atabey/src/cli/commands/status.js +122 -0
- package/dist/atabey/src/cli/commands/status.js.map +1 -0
- package/dist/atabey/src/cli/commands/trace.d.ts +10 -0
- package/dist/atabey/src/cli/commands/trace.js +108 -0
- package/dist/atabey/src/cli/commands/trace.js.map +1 -0
- package/dist/atabey/src/cli/index.js +282 -0
- package/dist/atabey/src/cli/index.js.map +1 -0
- package/dist/atabey/src/cli/platforms/core.d.ts +12 -0
- package/dist/atabey/src/cli/platforms/core.js +73 -0
- package/dist/atabey/src/cli/platforms/core.js.map +1 -0
- package/dist/atabey/src/cli/platforms/index.d.ts +5 -0
- package/dist/atabey/src/cli/platforms/index.js +6 -0
- package/dist/atabey/src/cli/platforms/index.js.map +1 -0
- package/dist/atabey/src/cli/platforms/paths.d.ts +15 -0
- package/dist/atabey/src/cli/platforms/paths.js +102 -0
- package/dist/atabey/src/cli/platforms/paths.js.map +1 -0
- package/dist/atabey/src/cli/platforms/scaffold.d.ts +2 -0
- package/dist/atabey/src/cli/platforms/scaffold.js +73 -0
- package/dist/atabey/src/cli/platforms/scaffold.js.map +1 -0
- package/dist/atabey/src/cli/platforms/utils.d.ts +4 -0
- package/dist/atabey/src/cli/platforms/utils.js.map +1 -0
- package/dist/atabey/src/cli/shims.d.ts +1 -0
- package/dist/atabey/src/cli/shims.js +67 -0
- package/dist/atabey/src/cli/shims.js.map +1 -0
- package/dist/atabey/src/cli/utils/claude.d.ts +8 -0
- package/dist/atabey/src/cli/utils/claude.js +58 -0
- package/dist/atabey/src/cli/utils/claude.js.map +1 -0
- package/dist/atabey/src/cli/utils/compliance.d.ts +42 -0
- package/dist/atabey/src/cli/utils/compliance.js +150 -0
- package/dist/atabey/src/cli/utils/compliance.js.map +1 -0
- package/dist/atabey/src/cli/utils/config-schema.d.ts +139 -0
- package/dist/atabey/src/cli/utils/config-schema.js +43 -0
- package/dist/atabey/src/cli/utils/config-schema.js.map +1 -0
- package/dist/atabey/src/cli/utils/fs.d.ts +10 -0
- package/dist/atabey/src/cli/utils/fs.js +139 -0
- package/dist/atabey/src/cli/utils/fs.js.map +1 -0
- package/dist/atabey/src/cli/utils/i18n.d.ts +21 -0
- package/dist/atabey/src/cli/utils/i18n.js +36 -0
- package/dist/atabey/src/cli/utils/i18n.js.map +1 -0
- package/dist/atabey/src/cli/utils/memory.d.ts +39 -0
- package/dist/atabey/src/cli/utils/memory.js +281 -0
- package/dist/atabey/src/cli/utils/memory.js.map +1 -0
- package/dist/atabey/src/cli/utils/pkg.d.ts +43 -0
- package/dist/atabey/src/cli/utils/pkg.js +283 -0
- package/dist/atabey/src/cli/utils/pkg.js.map +1 -0
- package/dist/atabey/src/cli/utils/quality.d.ts +25 -0
- package/dist/atabey/src/cli/utils/quality.js +66 -0
- package/dist/atabey/src/cli/utils/quality.js.map +1 -0
- package/dist/atabey/src/cli/utils/schemas.d.ts +49 -0
- package/dist/atabey/src/cli/utils/schemas.js +20 -0
- package/dist/atabey/src/cli/utils/schemas.js.map +1 -0
- package/dist/atabey/src/cli/utils/string.d.ts +7 -0
- package/dist/atabey/src/cli/utils/string.js +50 -0
- package/dist/atabey/src/cli/utils/string.js.map +1 -0
- package/dist/atabey/src/cli/utils/time.d.ts +2 -0
- package/dist/atabey/src/cli/utils/time.js +28 -0
- package/dist/atabey/src/cli/utils/time.js.map +1 -0
- package/dist/atabey/src/cli/utils/ui.d.ts +53 -0
- package/dist/atabey/src/cli/utils/ui.js +101 -0
- package/dist/atabey/src/cli/utils/ui.js.map +1 -0
- package/dist/atabey/src/contracts/index.d.ts +1 -0
- package/dist/atabey/src/contracts/index.js +2 -0
- package/dist/atabey/src/contracts/index.js.map +1 -0
- package/dist/atabey/src/contracts/tasks.d.ts +44 -0
- package/dist/atabey/src/contracts/tasks.js +21 -0
- package/dist/atabey/src/contracts/tasks.js.map +1 -0
- package/dist/atabey/src/modules/agents/definitions.d.ts +26 -0
- package/dist/atabey/src/modules/agents/definitions.js +564 -0
- package/dist/atabey/src/modules/agents/definitions.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/analyst.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/analyst.js +40 -0
- package/dist/atabey/src/modules/agents/registry/analyst.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/architect.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/architect.js +43 -0
- package/dist/atabey/src/modules/agents/registry/architect.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/backend.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/backend.js +51 -0
- package/dist/atabey/src/modules/agents/registry/backend.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/database.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/database.js +46 -0
- package/dist/atabey/src/modules/agents/registry/database.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/devops.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/devops.js +46 -0
- package/dist/atabey/src/modules/agents/registry/devops.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/explorer.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/explorer.js +38 -0
- package/dist/atabey/src/modules/agents/registry/explorer.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/frontend.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/frontend.js +53 -0
- package/dist/atabey/src/modules/agents/registry/frontend.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/git.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/git.js +37 -0
- package/dist/atabey/src/modules/agents/registry/git.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/manager.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/manager.js +65 -0
- package/dist/atabey/src/modules/agents/registry/manager.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/mobile.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/mobile.js +42 -0
- package/dist/atabey/src/modules/agents/registry/mobile.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/native.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/native.js +42 -0
- package/dist/atabey/src/modules/agents/registry/native.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/quality.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/quality.js +44 -0
- package/dist/atabey/src/modules/agents/registry/quality.js.map +1 -0
- package/dist/atabey/src/modules/agents/registry/security.d.ts +2 -0
- package/dist/atabey/src/modules/agents/registry/security.js +43 -0
- package/dist/atabey/src/modules/agents/registry/security.js.map +1 -0
- package/dist/atabey/src/modules/agents/types.d.ts +33 -0
- package/dist/atabey/src/modules/agents/types.js +2 -0
- package/dist/atabey/src/modules/agents/types.js.map +1 -0
- package/dist/atabey/src/modules/contracts/api.d.ts +178 -0
- package/dist/atabey/src/modules/contracts/api.js +56 -0
- package/dist/atabey/src/modules/contracts/api.js.map +1 -0
- package/dist/atabey/src/modules/contracts/index.d.ts +5 -0
- package/dist/atabey/src/modules/contracts/index.js +6 -0
- package/dist/atabey/src/modules/contracts/index.js.map +1 -0
- package/dist/atabey/src/modules/engines/agent-executor.d.ts +46 -0
- package/dist/atabey/src/modules/engines/agent-executor.js +241 -0
- package/dist/atabey/src/modules/engines/agent-executor.js.map +1 -0
- package/dist/atabey/src/modules/engines/agent-loop.d.ts +34 -0
- package/dist/atabey/src/modules/engines/agent-loop.js +102 -0
- package/dist/atabey/src/modules/engines/agent-loop.js.map +1 -0
- package/dist/atabey/src/modules/engines/contract-engine.d.ts +46 -0
- package/dist/atabey/src/modules/engines/contract-engine.js +116 -0
- package/dist/atabey/src/modules/engines/contract-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/crud-governance.d.ts +64 -0
- package/dist/atabey/src/modules/engines/crud-governance.js +184 -0
- package/dist/atabey/src/modules/engines/crud-governance.js.map +1 -0
- package/dist/atabey/src/modules/engines/discovery-engine.d.ts +42 -0
- package/dist/atabey/src/modules/engines/discovery-engine.js +161 -0
- package/dist/atabey/src/modules/engines/discovery-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/evaluation-engine.d.ts +18 -0
- package/dist/atabey/src/modules/engines/evaluation-engine.js +171 -0
- package/dist/atabey/src/modules/engines/evaluation-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/file-lock.d.ts +41 -0
- package/dist/atabey/src/modules/engines/file-lock.js +168 -0
- package/dist/atabey/src/modules/engines/file-lock.js.map +1 -0
- package/dist/atabey/src/modules/engines/health-engine.d.ts +22 -0
- package/dist/atabey/src/modules/engines/health-engine.js +127 -0
- package/dist/atabey/src/modules/engines/health-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/phase-engine.d.ts +82 -0
- package/dist/atabey/src/modules/engines/phase-engine.js +211 -0
- package/dist/atabey/src/modules/engines/phase-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/planning-engine.d.ts +25 -0
- package/dist/atabey/src/modules/engines/planning-engine.js +80 -0
- package/dist/atabey/src/modules/engines/planning-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/policy-engine.d.ts +63 -0
- package/dist/atabey/src/modules/engines/policy-engine.js +186 -0
- package/dist/atabey/src/modules/engines/policy-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/quality-gate.d.ts +31 -0
- package/dist/atabey/src/modules/engines/quality-gate.js +95 -0
- package/dist/atabey/src/modules/engines/quality-gate.js.map +1 -0
- package/dist/atabey/src/modules/engines/risk-engine.d.ts +34 -0
- package/dist/atabey/src/modules/engines/risk-engine.js +201 -0
- package/dist/atabey/src/modules/engines/risk-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/routing-engine.d.ts +96 -0
- package/dist/atabey/src/modules/engines/routing-engine.js +505 -0
- package/dist/atabey/src/modules/engines/routing-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/session-engine.d.ts +68 -0
- package/dist/atabey/src/modules/engines/session-engine.js +141 -0
- package/dist/atabey/src/modules/engines/session-engine.js.map +1 -0
- package/dist/atabey/src/modules/engines/types.d.ts +51 -0
- package/dist/atabey/src/modules/engines/types.js +2 -0
- package/dist/atabey/src/modules/engines/types.js.map +1 -0
- package/dist/atabey/src/modules/memory/core.d.ts +42 -0
- package/dist/atabey/src/modules/memory/core.js +100 -0
- package/dist/atabey/src/modules/memory/core.js.map +1 -0
- package/dist/atabey/src/modules/memory/embedding.d.ts +28 -0
- package/dist/atabey/src/modules/memory/embedding.js +131 -0
- package/dist/atabey/src/modules/memory/embedding.js.map +1 -0
- package/dist/atabey/src/modules/memory/types.d.ts +18 -0
- package/dist/atabey/src/modules/memory/types.js +2 -0
- package/dist/atabey/src/modules/memory/types.js.map +1 -0
- package/dist/atabey/src/modules/memory/vector-store.d.ts +13 -0
- package/dist/atabey/src/modules/memory/vector-store.js +75 -0
- package/dist/atabey/src/modules/memory/vector-store.js.map +1 -0
- package/dist/atabey/src/modules/providers/definitions.js.map +1 -0
- package/dist/atabey/src/modules/providers/llm-provider.d.ts +87 -0
- package/dist/atabey/src/modules/providers/llm-provider.js +242 -0
- package/dist/atabey/src/modules/providers/llm-provider.js.map +1 -0
- package/dist/atabey/src/modules/providers/registry.js.map +1 -0
- package/dist/atabey/src/modules/providers/shared.js +104 -0
- package/dist/atabey/src/modules/providers/shared.js.map +1 -0
- package/dist/atabey/src/modules/providers/types.js.map +1 -0
- package/dist/atabey/src/modules/skills/adapter-skills.d.ts +68 -0
- package/dist/atabey/src/modules/skills/adapter-skills.js +450 -0
- package/dist/atabey/src/modules/skills/adapter-skills.js.map +1 -0
- package/dist/atabey/src/modules/skills/definitions.d.ts +48 -0
- package/dist/atabey/src/modules/skills/definitions.js +71 -0
- package/dist/atabey/src/modules/skills/definitions.js.map +1 -0
- package/dist/atabey/src/shared/audit.d.ts +105 -0
- package/dist/atabey/src/shared/audit.js +221 -0
- package/dist/atabey/src/shared/audit.js.map +1 -0
- package/dist/atabey/src/shared/constants.d.ts +120 -0
- package/dist/atabey/src/shared/constants.js +188 -0
- package/dist/atabey/src/shared/constants.js.map +1 -0
- package/dist/atabey/src/shared/errors.js.map +1 -0
- package/dist/atabey/src/shared/fs.d.ts +9 -0
- package/dist/atabey/src/shared/fs.js +54 -0
- package/dist/atabey/src/shared/fs.js.map +1 -0
- package/dist/atabey/src/shared/lock.d.ts +82 -0
- package/dist/atabey/src/shared/lock.js +160 -0
- package/dist/atabey/src/shared/lock.js.map +1 -0
- package/dist/atabey/src/shared/logger.d.ts +30 -0
- package/dist/atabey/src/shared/logger.js +127 -0
- package/dist/atabey/src/shared/logger.js.map +1 -0
- package/dist/atabey/src/shared/pii.d.ts +69 -0
- package/dist/atabey/src/shared/pii.js +213 -0
- package/dist/atabey/src/shared/pii.js.map +1 -0
- package/dist/atabey/src/shared/retention.d.ts +63 -0
- package/dist/atabey/src/shared/retention.js +171 -0
- package/dist/atabey/src/shared/retention.js.map +1 -0
- package/dist/atabey/src/shared/storage.d.ts +141 -0
- package/dist/atabey/src/shared/storage.js +326 -0
- package/dist/atabey/src/shared/storage.js.map +1 -0
- package/dist/atabey/src/shared/string.d.ts +1 -0
- package/dist/atabey/src/shared/string.js +30 -0
- package/dist/atabey/src/shared/string.js.map +1 -0
- package/dist/atabey/src/shared/types.d.ts +27 -0
- package/dist/atabey/src/shared/types.js +17 -0
- package/dist/atabey/src/shared/types.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/auth.d.ts +40 -0
- package/dist/atabey-mcp/src/mcp/utils/auth.js +154 -0
- package/dist/atabey-mcp/src/mcp/utils/auth.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/auto-rollback.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/context-optimizer.d.ts +110 -0
- package/dist/atabey-mcp/src/mcp/utils/context-optimizer.js +391 -0
- package/dist/atabey-mcp/src/mcp/utils/context-optimizer.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/discipline.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/finops.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/license-scanner.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/loop-detector.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/memory.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/quality.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/rules-engine.js.map +1 -0
- package/dist/atabey-mcp/src/mcp/utils/telemetry-streamer.js +397 -0
- package/dist/atabey-mcp/src/mcp/utils/telemetry-streamer.js.map +1 -0
- package/dist/atabey-mcp/src/shared/fs.d.ts +9 -0
- package/dist/atabey-mcp/src/shared/fs.js +54 -0
- package/dist/atabey-mcp/src/shared/fs.js.map +1 -0
- package/dist/atabey-mcp/src/shared/logger.d.ts +30 -0
- package/dist/atabey-mcp/src/shared/logger.js +127 -0
- package/dist/atabey-mcp/src/shared/logger.js.map +1 -0
- package/dist/atabey-mcp/src/shared/pii.d.ts +69 -0
- package/dist/atabey-mcp/src/shared/pii.js +213 -0
- package/dist/atabey-mcp/src/shared/pii.js.map +1 -0
- package/dist/atabey-mcp/src/shared/storage.d.ts +167 -0
- package/dist/atabey-mcp/src/shared/storage.js +293 -0
- package/dist/atabey-mcp/src/shared/storage.js.map +1 -0
- package/dist/atabey-mcp/src/shared/types.js.map +1 -0
- package/dist/src/cli/commands/check.js +1 -1
- package/dist/src/cli/commands/check.js.map +1 -1
- package/dist/src/cli/commands/dashboard.js +19 -19
- package/dist/src/cli/commands/dashboard.js.map +1 -1
- package/dist/src/cli/commands/mcp.js +3 -3
- package/dist/src/cli/commands/mcp.js.map +1 -1
- package/dist/src/cli/commands/orchestrate.d.ts +4 -4
- package/dist/src/cli/utils/compliance.d.ts +37 -7
- package/dist/src/cli/utils/compliance.js +144 -7
- package/dist/src/cli/utils/compliance.js.map +1 -1
- package/dist/src/cli/utils/pkg.js +1 -1
- package/dist/src/cli/utils/pkg.js.map +1 -1
- package/dist/src/cli/utils/quality.d.ts +4 -6
- package/dist/src/cli/utils/quality.js +3 -5
- package/dist/src/cli/utils/quality.js.map +1 -1
- package/dist/src/cli/utils/schemas.d.ts +2 -2
- package/dist/src/contracts/tasks.d.ts +2 -2
- package/dist/src/modules/contracts/api.d.ts +6 -6
- 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 +64 -0
- package/dist/src/modules/engines/crud-governance.js +184 -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/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/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/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/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/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/shared/constants.d.ts +1 -1
- package/dist/src/shared/constants.js +1 -1
- package/dist/src/shared/constants.js.map +1 -1
- package/package.json +12 -54
- package/LICENSE +0 -672
- package/dist/framework-mcp/src/constants.d.ts +0 -47
- package/dist/framework-mcp/src/constants.js +0 -65
- package/dist/framework-mcp/src/constants.js.map +0 -1
- package/dist/framework-mcp/src/index.js +0 -1141
- package/dist/framework-mcp/src/index.js.map +0 -1
- package/dist/framework-mcp/src/resources/index.d.ts +0 -10
- package/dist/framework-mcp/src/resources/index.js +0 -59
- package/dist/framework-mcp/src/resources/index.js.map +0 -1
- package/dist/framework-mcp/src/tools/compliance/mask_pii.d.ts +0 -17
- package/dist/framework-mcp/src/tools/compliance/mask_pii.js +0 -56
- package/dist/framework-mcp/src/tools/compliance/mask_pii.js.map +0 -1
- package/dist/framework-mcp/src/tools/control_plane/locking.d.ts +0 -9
- package/dist/framework-mcp/src/tools/control_plane/locking.js +0 -85
- package/dist/framework-mcp/src/tools/control_plane/locking.js.map +0 -1
- package/dist/framework-mcp/src/tools/control_plane/registry.d.ts +0 -6
- package/dist/framework-mcp/src/tools/control_plane/registry.js +0 -84
- package/dist/framework-mcp/src/tools/control_plane/registry.js.map +0 -1
- package/dist/framework-mcp/src/tools/definitions.d.ts +0 -7
- package/dist/framework-mcp/src/tools/definitions.js +0 -199
- package/dist/framework-mcp/src/tools/definitions.js.map +0 -1
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.d.ts +0 -5
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +0 -65
- package/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js.map +0 -1
- package/dist/framework-mcp/src/tools/file_system/patch_file.d.ts +0 -2
- package/dist/framework-mcp/src/tools/file_system/patch_file.js +0 -35
- package/dist/framework-mcp/src/tools/file_system/patch_file.js.map +0 -1
- package/dist/framework-mcp/src/tools/file_system/read_file.d.ts +0 -2
- package/dist/framework-mcp/src/tools/file_system/read_file.js +0 -57
- package/dist/framework-mcp/src/tools/file_system/read_file.js.map +0 -1
- package/dist/framework-mcp/src/tools/file_system/replace_text.d.ts +0 -2
- package/dist/framework-mcp/src/tools/file_system/replace_text.js +0 -51
- package/dist/framework-mcp/src/tools/file_system/replace_text.js.map +0 -1
- package/dist/framework-mcp/src/tools/file_system/write_file.d.ts +0 -2
- package/dist/framework-mcp/src/tools/file_system/write_file.js +0 -56
- package/dist/framework-mcp/src/tools/file_system/write_file.js.map +0 -1
- package/dist/framework-mcp/src/tools/framework/audit_deps.d.ts +0 -6
- package/dist/framework-mcp/src/tools/framework/audit_deps.js +0 -42
- package/dist/framework-mcp/src/tools/framework/audit_deps.js.map +0 -1
- package/dist/framework-mcp/src/tools/framework/get_status.d.ts +0 -2
- package/dist/framework-mcp/src/tools/framework/get_status.js +0 -6
- package/dist/framework-mcp/src/tools/framework/get_status.js.map +0 -1
- package/dist/framework-mcp/src/tools/framework/orchestrate.d.ts +0 -2
- package/dist/framework-mcp/src/tools/framework/orchestrate.js +0 -6
- package/dist/framework-mcp/src/tools/framework/orchestrate.js.map +0 -1
- package/dist/framework-mcp/src/tools/framework/run_tests.d.ts +0 -5
- package/dist/framework-mcp/src/tools/framework/run_tests.js +0 -53
- package/dist/framework-mcp/src/tools/framework/run_tests.js.map +0 -1
- package/dist/framework-mcp/src/tools/framework/submit_plan.d.ts +0 -11
- package/dist/framework-mcp/src/tools/framework/submit_plan.js +0 -14
- package/dist/framework-mcp/src/tools/framework/submit_plan.js.map +0 -1
- package/dist/framework-mcp/src/tools/framework/update_contract_hash.d.ts +0 -2
- package/dist/framework-mcp/src/tools/framework/update_contract_hash.js +0 -6
- package/dist/framework-mcp/src/tools/framework/update_contract_hash.js.map +0 -1
- package/dist/framework-mcp/src/tools/framework/update_memory.d.ts +0 -2
- package/dist/framework-mcp/src/tools/framework/update_memory.js +0 -9
- package/dist/framework-mcp/src/tools/framework/update_memory.js.map +0 -1
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.d.ts +0 -19
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +0 -138
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js.map +0 -1
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.d.ts +0 -8
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +0 -91
- package/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js.map +0 -1
- package/dist/framework-mcp/src/tools/index.d.ts +0 -6
- package/dist/framework-mcp/src/tools/index.js +0 -126
- package/dist/framework-mcp/src/tools/index.js.map +0 -1
- package/dist/framework-mcp/src/tools/memory/delete_knowledge.d.ts +0 -8
- package/dist/framework-mcp/src/tools/memory/delete_knowledge.js +0 -29
- package/dist/framework-mcp/src/tools/memory/delete_knowledge.js.map +0 -1
- package/dist/framework-mcp/src/tools/memory/get_insights.d.ts +0 -6
- package/dist/framework-mcp/src/tools/memory/get_insights.js +0 -23
- package/dist/framework-mcp/src/tools/memory/get_insights.js.map +0 -1
- package/dist/framework-mcp/src/tools/memory/read_memory.d.ts +0 -6
- package/dist/framework-mcp/src/tools/memory/read_memory.js +0 -29
- package/dist/framework-mcp/src/tools/memory/read_memory.js.map +0 -1
- package/dist/framework-mcp/src/tools/memory/search_knowledge.d.ts +0 -8
- package/dist/framework-mcp/src/tools/memory/search_knowledge.js +0 -49
- package/dist/framework-mcp/src/tools/memory/search_knowledge.js.map +0 -1
- package/dist/framework-mcp/src/tools/memory/store_knowledge.d.ts +0 -10
- package/dist/framework-mcp/src/tools/memory/store_knowledge.js +0 -31
- package/dist/framework-mcp/src/tools/memory/store_knowledge.js.map +0 -1
- package/dist/framework-mcp/src/tools/messaging/approve_operation.d.ts +0 -24
- package/dist/framework-mcp/src/tools/messaging/approve_operation.js +0 -81
- package/dist/framework-mcp/src/tools/messaging/approve_operation.js.map +0 -1
- package/dist/framework-mcp/src/tools/messaging/ask_human.d.ts +0 -21
- package/dist/framework-mcp/src/tools/messaging/ask_human.js +0 -100
- package/dist/framework-mcp/src/tools/messaging/ask_human.js.map +0 -1
- package/dist/framework-mcp/src/tools/messaging/log_action.d.ts +0 -2
- package/dist/framework-mcp/src/tools/messaging/log_action.js +0 -23
- package/dist/framework-mcp/src/tools/messaging/log_action.js.map +0 -1
- package/dist/framework-mcp/src/tools/messaging/send_message.d.ts +0 -2
- package/dist/framework-mcp/src/tools/messaging/send_message.js +0 -111
- package/dist/framework-mcp/src/tools/messaging/send_message.js.map +0 -1
- package/dist/framework-mcp/src/tools/observability/check_ports.d.ts +0 -6
- package/dist/framework-mcp/src/tools/observability/check_ports.js +0 -43
- package/dist/framework-mcp/src/tools/observability/check_ports.js.map +0 -1
- package/dist/framework-mcp/src/tools/observability/get_health.d.ts +0 -5
- package/dist/framework-mcp/src/tools/observability/get_health.js +0 -20
- package/dist/framework-mcp/src/tools/observability/get_health.js.map +0 -1
- package/dist/framework-mcp/src/tools/quality/analyze_code_quality.d.ts +0 -11
- package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +0 -115
- package/dist/framework-mcp/src/tools/quality/analyze_code_quality.js.map +0 -1
- package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.d.ts +0 -11
- package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +0 -135
- package/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js.map +0 -1
- package/dist/framework-mcp/src/tools/quality/check_lint.d.ts +0 -5
- package/dist/framework-mcp/src/tools/quality/check_lint.js +0 -31
- package/dist/framework-mcp/src/tools/quality/check_lint.js.map +0 -1
- package/dist/framework-mcp/src/tools/schemas.d.ts +0 -434
- package/dist/framework-mcp/src/tools/schemas.js +0 -179
- package/dist/framework-mcp/src/tools/schemas.js.map +0 -1
- package/dist/framework-mcp/src/tools/search/get_gaps.d.ts +0 -6
- package/dist/framework-mcp/src/tools/search/get_gaps.js +0 -49
- package/dist/framework-mcp/src/tools/search/get_gaps.js.map +0 -1
- package/dist/framework-mcp/src/tools/search/get_map.d.ts +0 -6
- package/dist/framework-mcp/src/tools/search/get_map.js +0 -44
- package/dist/framework-mcp/src/tools/search/get_map.js.map +0 -1
- package/dist/framework-mcp/src/tools/search/grep_search.d.ts +0 -5
- package/dist/framework-mcp/src/tools/search/grep_search.js +0 -86
- package/dist/framework-mcp/src/tools/search/grep_search.js.map +0 -1
- package/dist/framework-mcp/src/tools/search/list_dir.d.ts +0 -5
- package/dist/framework-mcp/src/tools/search/list_dir.js +0 -32
- package/dist/framework-mcp/src/tools/search/list_dir.js.map +0 -1
- package/dist/framework-mcp/src/tools/shell/run_command.d.ts +0 -2
- package/dist/framework-mcp/src/tools/shell/run_command.js +0 -224
- package/dist/framework-mcp/src/tools/shell/run_command.js.map +0 -1
- package/dist/framework-mcp/src/tools/types.d.ts +0 -28
- package/dist/framework-mcp/src/tools/types.js +0 -3
- package/dist/framework-mcp/src/tools/types.js.map +0 -1
- package/dist/framework-mcp/src/utils/auth.d.ts +0 -60
- package/dist/framework-mcp/src/utils/auth.js +0 -146
- package/dist/framework-mcp/src/utils/auth.js.map +0 -1
- package/dist/framework-mcp/src/utils/auto-rollback.js.map +0 -1
- package/dist/framework-mcp/src/utils/cli.d.ts +0 -16
- package/dist/framework-mcp/src/utils/cli.js +0 -60
- package/dist/framework-mcp/src/utils/cli.js.map +0 -1
- package/dist/framework-mcp/src/utils/compliance.d.ts +0 -21
- package/dist/framework-mcp/src/utils/compliance.js +0 -333
- package/dist/framework-mcp/src/utils/compliance.js.map +0 -1
- package/dist/framework-mcp/src/utils/context-optimizer.d.ts +0 -69
- package/dist/framework-mcp/src/utils/context-optimizer.js +0 -157
- package/dist/framework-mcp/src/utils/context-optimizer.js.map +0 -1
- package/dist/framework-mcp/src/utils/discipline.js.map +0 -1
- package/dist/framework-mcp/src/utils/errors.js.map +0 -1
- package/dist/framework-mcp/src/utils/finops.js.map +0 -1
- package/dist/framework-mcp/src/utils/fs.d.ts +0 -19
- package/dist/framework-mcp/src/utils/fs.js +0 -48
- package/dist/framework-mcp/src/utils/fs.js.map +0 -1
- package/dist/framework-mcp/src/utils/human-in-loop.d.ts +0 -128
- package/dist/framework-mcp/src/utils/human-in-loop.js +0 -320
- package/dist/framework-mcp/src/utils/human-in-loop.js.map +0 -1
- package/dist/framework-mcp/src/utils/license-scanner.js.map +0 -1
- package/dist/framework-mcp/src/utils/loop-detector.js.map +0 -1
- package/dist/framework-mcp/src/utils/memory.js.map +0 -1
- package/dist/framework-mcp/src/utils/metrics.d.ts +0 -30
- package/dist/framework-mcp/src/utils/metrics.js +0 -57
- package/dist/framework-mcp/src/utils/metrics.js.map +0 -1
- package/dist/framework-mcp/src/utils/permissions.d.ts +0 -76
- package/dist/framework-mcp/src/utils/permissions.js +0 -208
- package/dist/framework-mcp/src/utils/permissions.js.map +0 -1
- package/dist/framework-mcp/src/utils/prompt-injection.d.ts +0 -20
- package/dist/framework-mcp/src/utils/prompt-injection.js +0 -64
- package/dist/framework-mcp/src/utils/prompt-injection.js.map +0 -1
- package/dist/framework-mcp/src/utils/quality.js.map +0 -1
- package/dist/framework-mcp/src/utils/rules-engine.js.map +0 -1
- package/dist/framework-mcp/src/utils/security.d.ts +0 -10
- package/dist/framework-mcp/src/utils/security.js +0 -61
- package/dist/framework-mcp/src/utils/security.js.map +0 -1
- package/dist/framework-mcp/src/utils/silent-router.d.ts +0 -49
- package/dist/framework-mcp/src/utils/silent-router.js +0 -155
- package/dist/framework-mcp/src/utils/silent-router.js.map +0 -1
- package/dist/framework-mcp/src/utils/storage.d.ts +0 -61
- package/dist/framework-mcp/src/utils/storage.js +0 -208
- package/dist/framework-mcp/src/utils/storage.js.map +0 -1
- package/dist/framework-mcp/src/utils/telemetry-streamer.js +0 -397
- package/dist/framework-mcp/src/utils/telemetry-streamer.js.map +0 -1
- package/dist/framework-mcp/src/utils/types.js.map +0 -1
- package/dist/framework-mcp/src/utils/zod-to-mcp.d.ts +0 -10
- package/dist/framework-mcp/src/utils/zod-to-mcp.js +0 -80
- package/dist/framework-mcp/src/utils/zod-to-mcp.js.map +0 -1
- package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.d.ts +0 -1
- package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.js +0 -84
- package/dist/framework-mcp/tests/tools/file_system/compliance-risk.test.js.map +0 -1
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.d.ts +0 -1
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js +0 -192
- package/dist/framework-mcp/tests/tools/file_system/file_system_tools.test.js.map +0 -1
- package/dist/framework-mcp/tests/tools/file_system/permissions.test.d.ts +0 -1
- package/dist/framework-mcp/tests/tools/file_system/permissions.test.js +0 -195
- package/dist/framework-mcp/tests/tools/file_system/permissions.test.js.map +0 -1
- package/dist/framework-mcp/tests/tools/framework/run_tests.test.d.ts +0 -1
- package/dist/framework-mcp/tests/tools/framework/run_tests.test.js +0 -49
- package/dist/framework-mcp/tests/tools/framework/run_tests.test.js.map +0 -1
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.d.ts +0 -1
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js +0 -131
- package/dist/framework-mcp/tests/tools/messaging/send_message.test.js.map +0 -1
- package/dist/framework-mcp/tests/tools/observability/check_ports.test.d.ts +0 -1
- package/dist/framework-mcp/tests/tools/observability/check_ports.test.js +0 -44
- package/dist/framework-mcp/tests/tools/observability/check_ports.test.js.map +0 -1
- package/dist/framework-mcp/tests/tools/quality/check_lint.test.d.ts +0 -1
- package/dist/framework-mcp/tests/tools/quality/check_lint.test.js +0 -36
- package/dist/framework-mcp/tests/tools/quality/check_lint.test.js.map +0 -1
- package/dist/framework-mcp/tests/tools/shell/run_command.test.d.ts +0 -1
- package/dist/framework-mcp/tests/tools/shell/run_command.test.js +0 -73
- package/dist/framework-mcp/tests/tools/shell/run_command.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/auto-rollback.test.d.ts +0 -7
- package/dist/framework-mcp/tests/utils/auto-rollback.test.js +0 -178
- package/dist/framework-mcp/tests/utils/auto-rollback.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/context-optimizer.test.d.ts +0 -1
- package/dist/framework-mcp/tests/utils/context-optimizer.test.js +0 -62
- package/dist/framework-mcp/tests/utils/context-optimizer.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/finops.test.d.ts +0 -7
- package/dist/framework-mcp/tests/utils/finops.test.js +0 -157
- package/dist/framework-mcp/tests/utils/finops.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/human-in-loop.test.d.ts +0 -1
- package/dist/framework-mcp/tests/utils/human-in-loop.test.js +0 -207
- package/dist/framework-mcp/tests/utils/human-in-loop.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/license-scanner.test.d.ts +0 -7
- package/dist/framework-mcp/tests/utils/license-scanner.test.js +0 -131
- package/dist/framework-mcp/tests/utils/license-scanner.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/loop-detector.test.d.ts +0 -7
- package/dist/framework-mcp/tests/utils/loop-detector.test.js +0 -202
- package/dist/framework-mcp/tests/utils/loop-detector.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/prompt-injection.test.d.ts +0 -1
- package/dist/framework-mcp/tests/utils/prompt-injection.test.js +0 -43
- package/dist/framework-mcp/tests/utils/prompt-injection.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/rules-engine.test.d.ts +0 -1
- package/dist/framework-mcp/tests/utils/rules-engine.test.js +0 -106
- package/dist/framework-mcp/tests/utils/rules-engine.test.js.map +0 -1
- package/dist/framework-mcp/tests/utils/telemetry-streamer.test.d.ts +0 -7
- package/dist/framework-mcp/tests/utils/telemetry-streamer.test.js +0 -201
- package/dist/framework-mcp/tests/utils/telemetry-streamer.test.js.map +0 -1
- package/dist/src/cli/adapters/core.d.ts +0 -12
- package/dist/src/cli/adapters/core.js +0 -73
- package/dist/src/cli/adapters/core.js.map +0 -1
- package/dist/src/cli/adapters/index.d.ts +0 -5
- package/dist/src/cli/adapters/index.js +0 -6
- package/dist/src/cli/adapters/index.js.map +0 -1
- package/dist/src/cli/adapters/paths.d.ts +0 -15
- package/dist/src/cli/adapters/paths.js +0 -102
- package/dist/src/cli/adapters/paths.js.map +0 -1
- package/dist/src/cli/adapters/scaffold.d.ts +0 -2
- package/dist/src/cli/adapters/scaffold.js +0 -73
- package/dist/src/cli/adapters/scaffold.js.map +0 -1
- package/dist/src/cli/adapters/utils.d.ts +0 -4
- package/dist/src/cli/adapters/utils.js.map +0 -1
- package/dist/src/cli/commands/gateway.d.ts +0 -1
- package/dist/src/cli/commands/gateway.js +0 -172
- package/dist/src/cli/commands/gateway.js.map +0 -1
- package/dist/src/dashboard/src/hooks/useApi.d.ts +0 -18
- package/dist/src/dashboard/src/hooks/useApi.js +0 -47
- package/dist/src/dashboard/src/hooks/useApi.js.map +0 -1
- package/dist/src/dashboard/src/hooks/useSSE.d.ts +0 -12
- package/dist/src/dashboard/src/hooks/useSSE.js +0 -60
- package/dist/src/dashboard/src/hooks/useSSE.js.map +0 -1
- package/dist/src/dashboard/vite.config.d.ts +0 -2
- package/dist/src/dashboard/vite.config.js +0 -16
- package/dist/src/dashboard/vite.config.js.map +0 -1
- package/dist/src/modules/adapters/definitions.js.map +0 -1
- package/dist/src/modules/adapters/registry.js.map +0 -1
- package/dist/src/modules/adapters/shared.js +0 -105
- package/dist/src/modules/adapters/shared.js.map +0 -1
- package/dist/src/modules/adapters/types.js.map +0 -1
- package/dist/src/modules/gateway/circuit-breaker.d.ts +0 -40
- package/dist/src/modules/gateway/circuit-breaker.js +0 -163
- package/dist/src/modules/gateway/circuit-breaker.js.map +0 -1
- package/dist/src/modules/gateway/cost-tracker.d.ts +0 -60
- package/dist/src/modules/gateway/cost-tracker.js +0 -198
- package/dist/src/modules/gateway/cost-tracker.js.map +0 -1
- package/dist/src/modules/gateway/gateway.d.ts +0 -72
- package/dist/src/modules/gateway/gateway.js +0 -243
- package/dist/src/modules/gateway/gateway.js.map +0 -1
- package/dist/src/modules/gateway/index.d.ts +0 -19
- package/dist/src/modules/gateway/index.js +0 -19
- package/dist/src/modules/gateway/index.js.map +0 -1
- package/dist/src/modules/gateway/load-balancer.d.ts +0 -86
- package/dist/src/modules/gateway/load-balancer.js +0 -230
- package/dist/src/modules/gateway/load-balancer.js.map +0 -1
- package/dist/src/modules/gateway/providers/anthropic.d.ts +0 -14
- package/dist/src/modules/gateway/providers/anthropic.js +0 -169
- package/dist/src/modules/gateway/providers/anthropic.js.map +0 -1
- package/dist/src/modules/gateway/providers/base.d.ts +0 -38
- package/dist/src/modules/gateway/providers/base.js +0 -42
- package/dist/src/modules/gateway/providers/base.js.map +0 -1
- package/dist/src/modules/gateway/providers/google.d.ts +0 -18
- package/dist/src/modules/gateway/providers/google.js +0 -176
- package/dist/src/modules/gateway/providers/google.js.map +0 -1
- package/dist/src/modules/gateway/providers/grok.d.ts +0 -14
- package/dist/src/modules/gateway/providers/grok.js +0 -166
- package/dist/src/modules/gateway/providers/grok.js.map +0 -1
- package/dist/src/modules/gateway/providers/index.d.ts +0 -21
- package/dist/src/modules/gateway/providers/index.js +0 -38
- package/dist/src/modules/gateway/providers/index.js.map +0 -1
- package/dist/src/modules/gateway/providers/ollama.d.ts +0 -23
- package/dist/src/modules/gateway/providers/ollama.js +0 -187
- package/dist/src/modules/gateway/providers/ollama.js.map +0 -1
- package/dist/src/modules/gateway/providers/openai.d.ts +0 -14
- package/dist/src/modules/gateway/providers/openai.js +0 -170
- package/dist/src/modules/gateway/providers/openai.js.map +0 -1
- package/dist/src/modules/gateway/rate-limiter.d.ts +0 -41
- package/dist/src/modules/gateway/rate-limiter.js +0 -119
- package/dist/src/modules/gateway/rate-limiter.js.map +0 -1
- package/dist/src/modules/gateway/types.d.ts +0 -114
- package/dist/src/modules/gateway/types.js +0 -8
- package/dist/src/modules/gateway/types.js.map +0 -1
- package/dist/tests/dashboard.test.d.ts +0 -1
- package/dist/tests/dashboard.test.js +0 -116
- package/dist/tests/dashboard.test.js.map +0 -1
- package/dist/tests/modules/gateway/circuit-breaker.test.d.ts +0 -1
- package/dist/tests/modules/gateway/circuit-breaker.test.js +0 -124
- package/dist/tests/modules/gateway/circuit-breaker.test.js.map +0 -1
- package/dist/tests/modules/gateway/cost-tracker.test.d.ts +0 -1
- package/dist/tests/modules/gateway/cost-tracker.test.js +0 -93
- package/dist/tests/modules/gateway/cost-tracker.test.js.map +0 -1
- package/dist/tests/modules/gateway/load-balancer.test.d.ts +0 -1
- package/dist/tests/modules/gateway/load-balancer.test.js +0 -70
- package/dist/tests/modules/gateway/load-balancer.test.js.map +0 -1
- package/dist/tests/modules/gateway/rate-limiter.test.d.ts +0 -1
- package/dist/tests/modules/gateway/rate-limiter.test.js +0 -62
- package/dist/tests/modules/gateway/rate-limiter.test.js.map +0 -1
- package/dist/tests/planning-engine.test.d.ts +0 -1
- package/dist/tests/planning-engine.test.js +0 -51
- package/dist/tests/planning-engine.test.js.map +0 -1
- package/dist/tests/risk-engine.test.d.ts +0 -1
- package/dist/tests/risk-engine.test.js +0 -44
- package/dist/tests/risk-engine.test.js.map +0 -1
- package/dist/ui/assets/index-B-d2ejS8.js +0 -519
- package/dist/ui/assets/index-CyXywq5G.css +0 -1
- package/dist/ui/index.html +0 -14
- package/dist/vitest.config.d.ts +0 -2
- package/dist/vitest.config.js +0 -22
- package/dist/vitest.config.js.map +0 -1
- package/framework-mcp/README.md +0 -620
- package/framework-mcp/dist/constants.js +0 -64
- package/framework-mcp/dist/dashboard/assets/index-B-Eu7_J9.js +0 -1260
- package/framework-mcp/dist/dashboard/index.html +0 -15
- package/framework-mcp/dist/framework-mcp/src/constants.js +0 -64
- package/framework-mcp/dist/framework-mcp/src/index.js +0 -1140
- package/framework-mcp/dist/framework-mcp/src/resources/index.js +0 -58
- package/framework-mcp/dist/framework-mcp/src/tools/compliance/mask_pii.js +0 -55
- package/framework-mcp/dist/framework-mcp/src/tools/control_plane/locking.js +0 -84
- package/framework-mcp/dist/framework-mcp/src/tools/control_plane/registry.js +0 -83
- package/framework-mcp/dist/framework-mcp/src/tools/definitions.js +0 -198
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/batch_surgical_edit.js +0 -64
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/patch_file.js +0 -34
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/read_file.js +0 -56
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/replace_text.js +0 -50
- package/framework-mcp/dist/framework-mcp/src/tools/file_system/write_file.js +0 -55
- package/framework-mcp/dist/framework-mcp/src/tools/framework/audit_deps.js +0 -41
- package/framework-mcp/dist/framework-mcp/src/tools/framework/get_status.js +0 -5
- package/framework-mcp/dist/framework-mcp/src/tools/framework/orchestrate.js +0 -5
- package/framework-mcp/dist/framework-mcp/src/tools/framework/run_tests.js +0 -52
- package/framework-mcp/dist/framework-mcp/src/tools/framework/submit_plan.js +0 -13
- package/framework-mcp/dist/framework-mcp/src/tools/framework/update_contract_hash.js +0 -5
- package/framework-mcp/dist/framework-mcp/src/tools/framework/update_memory.js +0 -8
- package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_query.js +0 -137
- package/framework-mcp/dist/framework-mcp/src/tools/gateway/llm_gateway_status.js +0 -90
- package/framework-mcp/dist/framework-mcp/src/tools/index.js +0 -125
- package/framework-mcp/dist/framework-mcp/src/tools/memory/delete_knowledge.js +0 -28
- package/framework-mcp/dist/framework-mcp/src/tools/memory/get_insights.js +0 -22
- package/framework-mcp/dist/framework-mcp/src/tools/memory/read_memory.js +0 -28
- package/framework-mcp/dist/framework-mcp/src/tools/memory/search_knowledge.js +0 -48
- package/framework-mcp/dist/framework-mcp/src/tools/memory/store_knowledge.js +0 -30
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/approve_operation.js +0 -80
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/ask_human.js +0 -99
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/log_action.js +0 -22
- package/framework-mcp/dist/framework-mcp/src/tools/messaging/send_message.js +0 -110
- package/framework-mcp/dist/framework-mcp/src/tools/observability/check_ports.js +0 -42
- package/framework-mcp/dist/framework-mcp/src/tools/observability/get_health.js +0 -19
- package/framework-mcp/dist/framework-mcp/src/tools/quality/analyze_code_quality.js +0 -114
- package/framework-mcp/dist/framework-mcp/src/tools/quality/check_architecture_compliance.js +0 -134
- package/framework-mcp/dist/framework-mcp/src/tools/quality/check_lint.js +0 -30
- package/framework-mcp/dist/framework-mcp/src/tools/schemas.js +0 -178
- package/framework-mcp/dist/framework-mcp/src/tools/search/get_gaps.js +0 -48
- package/framework-mcp/dist/framework-mcp/src/tools/search/get_map.js +0 -43
- package/framework-mcp/dist/framework-mcp/src/tools/search/grep_search.js +0 -85
- package/framework-mcp/dist/framework-mcp/src/tools/search/list_dir.js +0 -31
- package/framework-mcp/dist/framework-mcp/src/tools/shell/run_command.js +0 -223
- package/framework-mcp/dist/framework-mcp/src/tools/types.js +0 -2
- package/framework-mcp/dist/framework-mcp/src/utils/auth.js +0 -145
- package/framework-mcp/dist/framework-mcp/src/utils/auto-rollback.js +0 -265
- package/framework-mcp/dist/framework-mcp/src/utils/cli.js +0 -59
- package/framework-mcp/dist/framework-mcp/src/utils/compliance.js +0 -332
- package/framework-mcp/dist/framework-mcp/src/utils/context-optimizer.js +0 -156
- package/framework-mcp/dist/framework-mcp/src/utils/discipline.js +0 -256
- package/framework-mcp/dist/framework-mcp/src/utils/errors.js +0 -68
- package/framework-mcp/dist/framework-mcp/src/utils/finops.js +0 -325
- package/framework-mcp/dist/framework-mcp/src/utils/fs.js +0 -47
- package/framework-mcp/dist/framework-mcp/src/utils/human-in-loop.js +0 -319
- package/framework-mcp/dist/framework-mcp/src/utils/license-scanner.js +0 -283
- package/framework-mcp/dist/framework-mcp/src/utils/loop-detector.js +0 -361
- package/framework-mcp/dist/framework-mcp/src/utils/memory.js +0 -74
- package/framework-mcp/dist/framework-mcp/src/utils/metrics.js +0 -56
- package/framework-mcp/dist/framework-mcp/src/utils/permissions.js +0 -207
- package/framework-mcp/dist/framework-mcp/src/utils/prompt-injection.js +0 -63
- package/framework-mcp/dist/framework-mcp/src/utils/quality.js +0 -124
- package/framework-mcp/dist/framework-mcp/src/utils/rules-engine.js +0 -231
- package/framework-mcp/dist/framework-mcp/src/utils/security.js +0 -60
- package/framework-mcp/dist/framework-mcp/src/utils/silent-router.js +0 -154
- package/framework-mcp/dist/framework-mcp/src/utils/storage.js +0 -207
- package/framework-mcp/dist/framework-mcp/src/utils/telemetry-streamer.js +0 -396
- package/framework-mcp/dist/framework-mcp/src/utils/types.js +0 -16
- package/framework-mcp/dist/framework-mcp/src/utils/zod-to-mcp.js +0 -79
- package/framework-mcp/dist/index.js +0 -156
- package/framework-mcp/dist/resources/index.js +0 -58
- package/framework-mcp/dist/src/cli/platforms/core.js +0 -72
- package/framework-mcp/dist/src/cli/platforms/index.js +0 -5
- package/framework-mcp/dist/src/cli/platforms/paths.js +0 -101
- package/framework-mcp/dist/src/cli/platforms/scaffold.js +0 -72
- package/framework-mcp/dist/src/cli/platforms/utils.js +0 -75
- package/framework-mcp/dist/src/cli/utils/claude.js +0 -57
- package/framework-mcp/dist/src/cli/utils/compliance.js +0 -12
- package/framework-mcp/dist/src/cli/utils/fs.js +0 -138
- package/framework-mcp/dist/src/cli/utils/memory.js +0 -280
- package/framework-mcp/dist/src/cli/utils/pkg.js +0 -282
- package/framework-mcp/dist/src/cli/utils/quality.js +0 -9
- package/framework-mcp/dist/src/cli/utils/time.js +0 -27
- package/framework-mcp/dist/src/cli/utils/ui.js +0 -100
- package/framework-mcp/dist/src/modules/agents/definitions.js +0 -563
- package/framework-mcp/dist/src/modules/agents/registry/analyst.js +0 -39
- package/framework-mcp/dist/src/modules/agents/registry/architect.js +0 -42
- package/framework-mcp/dist/src/modules/agents/registry/backend.js +0 -50
- package/framework-mcp/dist/src/modules/agents/registry/database.js +0 -45
- package/framework-mcp/dist/src/modules/agents/registry/devops.js +0 -45
- package/framework-mcp/dist/src/modules/agents/registry/explorer.js +0 -37
- package/framework-mcp/dist/src/modules/agents/registry/frontend.js +0 -52
- package/framework-mcp/dist/src/modules/agents/registry/git.js +0 -36
- package/framework-mcp/dist/src/modules/agents/registry/manager.js +0 -64
- package/framework-mcp/dist/src/modules/agents/registry/mobile.js +0 -41
- package/framework-mcp/dist/src/modules/agents/registry/native.js +0 -41
- package/framework-mcp/dist/src/modules/agents/registry/quality.js +0 -43
- package/framework-mcp/dist/src/modules/agents/registry/security.js +0 -42
- package/framework-mcp/dist/src/modules/agents/types.js +0 -1
- package/framework-mcp/dist/src/modules/engines/evaluation-engine.js +0 -170
- package/framework-mcp/dist/src/modules/engines/quality-gate.js +0 -94
- package/framework-mcp/dist/src/modules/engines/risk-engine.js +0 -200
- package/framework-mcp/dist/src/modules/engines/routing-engine.js +0 -504
- package/framework-mcp/dist/src/modules/engines/types.js +0 -1
- package/framework-mcp/dist/src/modules/memory/core.js +0 -99
- package/framework-mcp/dist/src/modules/memory/embedding.js +0 -130
- package/framework-mcp/dist/src/modules/memory/types.js +0 -1
- package/framework-mcp/dist/src/modules/memory/vector-store.js +0 -74
- package/framework-mcp/dist/src/modules/providers/definitions.js +0 -140
- package/framework-mcp/dist/src/modules/providers/registry.js +0 -18
- package/framework-mcp/dist/src/modules/providers/shared.js +0 -103
- package/framework-mcp/dist/src/modules/providers/types.js +0 -1
- package/framework-mcp/dist/src/modules/skills/adapter-skills.js +0 -449
- package/framework-mcp/dist/src/modules/skills/definitions.js +0 -70
- package/framework-mcp/dist/src/shared/audit.js +0 -220
- package/framework-mcp/dist/src/shared/constants.js +0 -187
- package/framework-mcp/dist/src/shared/errors.js +0 -68
- package/framework-mcp/dist/src/shared/fs.js +0 -53
- package/framework-mcp/dist/src/shared/lock.js +0 -159
- package/framework-mcp/dist/src/shared/logger.js +0 -126
- package/framework-mcp/dist/src/shared/pii.js +0 -212
- package/framework-mcp/dist/src/shared/retention.js +0 -170
- package/framework-mcp/dist/src/shared/storage.js +0 -325
- package/framework-mcp/dist/src/shared/string.js +0 -29
- package/framework-mcp/dist/src/shared/types.js +0 -16
- package/framework-mcp/dist/tools/control_plane/locking.js +0 -82
- package/framework-mcp/dist/tools/control_plane/registry.js +0 -35
- package/framework-mcp/dist/tools/definitions.js +0 -154
- package/framework-mcp/dist/tools/file_system/batch_surgical_edit.js +0 -64
- package/framework-mcp/dist/tools/file_system/patch_file.js +0 -34
- package/framework-mcp/dist/tools/file_system/read_file.js +0 -51
- package/framework-mcp/dist/tools/file_system/replace_text.js +0 -50
- package/framework-mcp/dist/tools/file_system/write_file.js +0 -55
- package/framework-mcp/dist/tools/framework/audit_deps.js +0 -41
- package/framework-mcp/dist/tools/framework/get_status.js +0 -5
- package/framework-mcp/dist/tools/framework/orchestrate.js +0 -5
- package/framework-mcp/dist/tools/framework/run_tests.js +0 -27
- package/framework-mcp/dist/tools/framework/submit_plan.js +0 -13
- package/framework-mcp/dist/tools/framework/update_contract_hash.js +0 -5
- package/framework-mcp/dist/tools/framework/update_memory.js +0 -8
- package/framework-mcp/dist/tools/index.js +0 -99
- package/framework-mcp/dist/tools/memory/get_insights.js +0 -22
- package/framework-mcp/dist/tools/memory/read_memory.js +0 -28
- package/framework-mcp/dist/tools/messaging/log_action.js +0 -22
- package/framework-mcp/dist/tools/messaging/send_message.js +0 -94
- package/framework-mcp/dist/tools/observability/check_ports.js +0 -26
- package/framework-mcp/dist/tools/observability/get_health.js +0 -19
- package/framework-mcp/dist/tools/quality/check_lint.js +0 -30
- package/framework-mcp/dist/tools/schemas.js +0 -133
- package/framework-mcp/dist/tools/search/get_gaps.js +0 -48
- package/framework-mcp/dist/tools/search/get_map.js +0 -43
- package/framework-mcp/dist/tools/search/grep_search.js +0 -75
- package/framework-mcp/dist/tools/search/list_dir.js +0 -28
- package/framework-mcp/dist/tools/shell/run_command.js +0 -56
- package/framework-mcp/dist/tools/types.js +0 -1
- package/framework-mcp/dist/utils/cli.js +0 -59
- package/framework-mcp/dist/utils/compliance.js +0 -231
- package/framework-mcp/dist/utils/errors.js +0 -68
- package/framework-mcp/dist/utils/fs.js +0 -44
- package/framework-mcp/dist/utils/memory.js +0 -74
- package/framework-mcp/dist/utils/metrics.js +0 -56
- package/framework-mcp/dist/utils/permissions.js +0 -71
- package/framework-mcp/dist/utils/security.js +0 -60
- package/framework-mcp/dist/utils/storage.js +0 -207
- package/framework-mcp/dist/utils/types.js +0 -16
- package/framework-mcp/dist/utils/zod-to-mcp.js +0 -77
- package/framework-mcp/package.json +0 -46
- package/mcp.json +0 -20
- /package/dist/{framework-mcp/src → atabey/src/cli}/index.d.ts +0 -0
- /package/dist/{src/cli/adapters → atabey/src/cli/platforms}/utils.js +0 -0
- /package/dist/{src/modules/adapters → atabey/src/modules/providers}/definitions.d.ts +0 -0
- /package/dist/{src/modules/adapters → atabey/src/modules/providers}/definitions.js +0 -0
- /package/dist/{src/modules/adapters → atabey/src/modules/providers}/registry.d.ts +0 -0
- /package/dist/{src/modules/adapters → atabey/src/modules/providers}/registry.js +0 -0
- /package/dist/{src/modules/adapters → atabey/src/modules/providers}/shared.d.ts +0 -0
- /package/dist/{src/modules/adapters → atabey/src/modules/providers}/types.d.ts +0 -0
- /package/dist/{src/modules/adapters → atabey/src/modules/providers}/types.js +0 -0
- /package/dist/{framework-mcp/src/utils → atabey/src/shared}/errors.d.ts +0 -0
- /package/dist/{framework-mcp/src/utils → atabey/src/shared}/errors.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/auto-rollback.d.ts +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/auto-rollback.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/discipline.d.ts +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/discipline.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/finops.d.ts +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/finops.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/license-scanner.d.ts +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/license-scanner.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/loop-detector.d.ts +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/loop-detector.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/memory.d.ts +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/memory.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/quality.d.ts +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/quality.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/rules-engine.d.ts +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/rules-engine.js +0 -0
- /package/dist/{framework-mcp/src → atabey-mcp/src/mcp}/utils/telemetry-streamer.d.ts +0 -0
- /package/dist/{framework-mcp/src/utils → atabey-mcp/src/shared}/types.d.ts +0 -0
- /package/dist/{framework-mcp/src/utils → atabey-mcp/src/shared}/types.js +0 -0
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import fs from "fs";
|
|
2
|
-
import path from "path";
|
|
3
|
-
/**
|
|
4
|
-
* Ensures directory existence.
|
|
5
|
-
*/
|
|
6
|
-
export function ensureDir(dirPath) {
|
|
7
|
-
if (!fs.existsSync(dirPath)) {
|
|
8
|
-
fs.mkdirSync(dirPath, { recursive: true });
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Atomically writes a text file.
|
|
13
|
-
* Uses a temp file + rename pattern to prevent partial writes.
|
|
14
|
-
* Compatible with src/shared/fs.ts writeTextFile API.
|
|
15
|
-
*/
|
|
16
|
-
export function writeTextFile(filePath, content) {
|
|
17
|
-
const dir = path.dirname(filePath);
|
|
18
|
-
ensureDir(dir);
|
|
19
|
-
const tempPath = `${filePath}.${Math.random().toString(36).slice(2, 9)}.tmp`;
|
|
20
|
-
const finalContent = content.endsWith("\n") ? content : `${content}\n`;
|
|
21
|
-
try {
|
|
22
|
-
fs.writeFileSync(tempPath, finalContent, "utf8");
|
|
23
|
-
fs.renameSync(tempPath, filePath);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
if (fs.existsSync(tempPath)) {
|
|
27
|
-
try {
|
|
28
|
-
fs.unlinkSync(tempPath);
|
|
29
|
-
}
|
|
30
|
-
catch { /* ignore */ }
|
|
31
|
-
}
|
|
32
|
-
throw err;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/** @deprecated Use writeTextFile instead */
|
|
36
|
-
export const writeTextFileAtomic = writeTextFile;
|
|
37
|
-
/**
|
|
38
|
-
* Appends content to a file. Creates parent directories if missing.
|
|
39
|
-
* Compatible with src/shared/fs.ts appendFile API.
|
|
40
|
-
*/
|
|
41
|
-
export function appendFile(filePath, content) {
|
|
42
|
-
const dir = path.dirname(filePath);
|
|
43
|
-
ensureDir(dir);
|
|
44
|
-
fs.appendFileSync(filePath, content, "utf8");
|
|
45
|
-
}
|
|
46
|
-
/** @deprecated Use appendFile instead */
|
|
47
|
-
export const appendFileSafe = appendFile;
|
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ─── HUMAN-IN-THE-LOOP (In-CLI Approval) ──────────────────────────
|
|
3
|
-
*
|
|
4
|
-
* Allows risk-gated approvals without the developer leaving their AI CLI chat.
|
|
5
|
-
*
|
|
6
|
-
* Key Innovation: Instead of forcing developers to switch to a web dashboard
|
|
7
|
-
* or another terminal, approval requests are sent as MCP notifications into
|
|
8
|
-
* the developer's existing chat interface.
|
|
9
|
-
*
|
|
10
|
-
* Flow:
|
|
11
|
-
* 1. Tool call triggers risk detection
|
|
12
|
-
* 2. If risk >= threshold, tool is blocked with a structured error
|
|
13
|
-
* 3. Error message includes the traceId and approval command
|
|
14
|
-
* 4. Developer types "atabey approve <traceId>" in the same chat
|
|
15
|
-
* 5. Hermes message status updates → retry succeeds
|
|
16
|
-
*
|
|
17
|
-
* Risk Levels:
|
|
18
|
-
* - LOW (0-30): Silent pass (no approval needed)
|
|
19
|
-
* - MEDIUM (31-59): Stealth warning to stderr only
|
|
20
|
-
* - HIGH (60-100): Blocked until approval
|
|
21
|
-
*/
|
|
22
|
-
import { AtabeyStorage } from "../../../src/shared/storage.js";
|
|
23
|
-
import { asAgentID, asTraceID } from "../../../src/shared/types.js";
|
|
24
|
-
// ─── Configuration ────────────────────────────────────────────────
|
|
25
|
-
const CONFIG = {
|
|
26
|
-
/** Risk threshold for blocking (0-100) */
|
|
27
|
-
HIGH_RISK_THRESHOLD: parseInt(process.env.MCP_HIGH_RISK_THRESHOLD || "60", 10),
|
|
28
|
-
/** Risk threshold for medium warning */
|
|
29
|
-
MEDIUM_RISK_THRESHOLD: parseInt(process.env.MCP_MEDIUM_RISK_THRESHOLD || "30", 10),
|
|
30
|
-
/** Auto-approve low risk operations */
|
|
31
|
-
AUTO_APPROVE_LOW_RISK: process.env.MCP_AUTO_APPROVE_LOW_RISK !== "false",
|
|
32
|
-
/** Approval timeout in seconds */
|
|
33
|
-
APPROVAL_TIMEOUT_SECONDS: parseInt(process.env.MCP_APPROVAL_TIMEOUT || "300", 10), // 5 min
|
|
34
|
-
/**
|
|
35
|
-
* Minimum risk score requiring Lead/Admin approval (legacy compat).
|
|
36
|
-
* Superseded by ROLE_RISK_MAP below — kept for backward compatibility with env var.
|
|
37
|
-
*/
|
|
38
|
-
RBAC_HIGH_RISK_THRESHOLD: parseInt(process.env.MCP_RBAC_HIGH_RISK_THRESHOLD || "80", 10),
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* Maximum risk score each role is allowed to approve.
|
|
42
|
-
* A role can approve any operation with riskScore <= its max.
|
|
43
|
-
* Override via MCP_RBAC_ROLE_* env vars.
|
|
44
|
-
*
|
|
45
|
-
* junior → cannot approve anything (max = -1)
|
|
46
|
-
* developer → can approve MEDIUM risk (0–59)
|
|
47
|
-
* lead → can approve HIGH risk (0–79)
|
|
48
|
-
* admin → can approve any risk (0–100)
|
|
49
|
-
*/
|
|
50
|
-
export const ROLE_RISK_MAP = {
|
|
51
|
-
admin: parseInt(process.env.MCP_RBAC_ROLE_ADMIN || "100", 10),
|
|
52
|
-
lead: parseInt(process.env.MCP_RBAC_ROLE_LEAD || "79", 10),
|
|
53
|
-
developer: parseInt(process.env.MCP_RBAC_ROLE_DEVELOPER || "59", 10),
|
|
54
|
-
junior: parseInt(process.env.MCP_RBAC_ROLE_JUNIOR || "-1", 10), // cannot approve
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Returns the minimum role required to approve an operation at the given risk score.
|
|
58
|
-
*/
|
|
59
|
-
export function getMinimumRoleForScore(riskScore) {
|
|
60
|
-
if (riskScore <= ROLE_RISK_MAP.developer)
|
|
61
|
-
return "developer";
|
|
62
|
-
if (riskScore <= ROLE_RISK_MAP.lead)
|
|
63
|
-
return "lead";
|
|
64
|
-
return "admin";
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Reads the active user role from environment only.
|
|
68
|
-
* AI-supplied userRole arguments are NOT trusted.
|
|
69
|
-
*/
|
|
70
|
-
function getActiveUserRole() {
|
|
71
|
-
const envRole = process.env.MCP_USER_ROLE?.trim().toLowerCase();
|
|
72
|
-
if (envRole === "admin" || envRole === "lead" || envRole === "developer" || envRole === "junior") {
|
|
73
|
-
return envRole;
|
|
74
|
-
}
|
|
75
|
-
return "junior"; // safest default
|
|
76
|
-
}
|
|
77
|
-
// ─── Active Approval Requests ─────────────────────────────────────
|
|
78
|
-
const activeApprovals = new Map();
|
|
79
|
-
/**
|
|
80
|
-
* Determine risk level from risk score.
|
|
81
|
-
*/
|
|
82
|
-
export function getRiskLevel(score) {
|
|
83
|
-
if (score >= CONFIG.HIGH_RISK_THRESHOLD)
|
|
84
|
-
return "HIGH";
|
|
85
|
-
if (score >= CONFIG.MEDIUM_RISK_THRESHOLD)
|
|
86
|
-
return "MEDIUM";
|
|
87
|
-
return "LOW";
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Create an approval request for a high-risk operation.
|
|
91
|
-
* Returns the approval request and a message for the AI/developer.
|
|
92
|
-
*/
|
|
93
|
-
function generatePasscode() {
|
|
94
|
-
const chars = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
|
|
95
|
-
let code = "";
|
|
96
|
-
for (let i = 0; i < 5; i++) {
|
|
97
|
-
code += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
98
|
-
}
|
|
99
|
-
return code;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Create an approval request for a high-risk operation.
|
|
103
|
-
* Returns the approval request and a message for the AI/developer.
|
|
104
|
-
*/
|
|
105
|
-
export function createApprovalRequest(traceId, toolName, agent, riskScore, reason, args) {
|
|
106
|
-
const now = Date.now();
|
|
107
|
-
const passcode = generatePasscode();
|
|
108
|
-
const request = {
|
|
109
|
-
traceId,
|
|
110
|
-
toolName,
|
|
111
|
-
agent,
|
|
112
|
-
riskScore,
|
|
113
|
-
riskLevel: getRiskLevel(riskScore),
|
|
114
|
-
reason,
|
|
115
|
-
args,
|
|
116
|
-
createdAt: now,
|
|
117
|
-
expiresAt: now + CONFIG.APPROVAL_TIMEOUT_SECONDS * 1000,
|
|
118
|
-
status: "PENDING",
|
|
119
|
-
passcode,
|
|
120
|
-
};
|
|
121
|
-
activeApprovals.set(traceId, request);
|
|
122
|
-
// Print passcode to stderr so the human developer sees it but AI cannot access it
|
|
123
|
-
process.stderr.write(`\n[ATABEY SECURITY GATES] APPROVAL PASSCODE FOR TRACE ${traceId}: ${passcode}\n\n`);
|
|
124
|
-
// Create a Hermes approval message
|
|
125
|
-
AtabeyStorage.saveMessage({
|
|
126
|
-
from: asAgentID(agent),
|
|
127
|
-
to: asAgentID("@manager"),
|
|
128
|
-
category: "ALERT",
|
|
129
|
-
content: JSON.stringify({
|
|
130
|
-
type: "APPROVAL_REQUIRED",
|
|
131
|
-
traceId,
|
|
132
|
-
tool: toolName,
|
|
133
|
-
riskScore,
|
|
134
|
-
reason,
|
|
135
|
-
}),
|
|
136
|
-
traceId: asTraceID(traceId),
|
|
137
|
-
timestamp: new Date().toISOString(),
|
|
138
|
-
status: "PENDING",
|
|
139
|
-
priority: "HIGH",
|
|
140
|
-
requiresApproval: true,
|
|
141
|
-
});
|
|
142
|
-
// Build the in-chat approval message
|
|
143
|
-
// This is what the developer sees in their AI CLI chat
|
|
144
|
-
const message = [
|
|
145
|
-
`[RISK GATE] Operation blocked: ${reason}`,
|
|
146
|
-
"",
|
|
147
|
-
` Tool: ${toolName}`,
|
|
148
|
-
` Agent: ${agent}`,
|
|
149
|
-
` Risk Score: ${riskScore}/100 (${request.riskLevel})`,
|
|
150
|
-
` Trace ID: ${traceId}`,
|
|
151
|
-
"",
|
|
152
|
-
"─── IN-CHAT APPROVAL ────────────────────────────────────────",
|
|
153
|
-
"This is a high-risk operation. To prevent autonomous bypass,",
|
|
154
|
-
"Atabey has printed a 5-character PASSCODE to your terminal's stderr.",
|
|
155
|
-
"",
|
|
156
|
-
"Ask the user for the passcode, then call the approve_operation tool:",
|
|
157
|
-
` approve_operation { "action": "approve", "traceId": "${traceId}", "passcode": "<passcode_from_user>" }`,
|
|
158
|
-
"─────────────────────────────────────────────────────────────",
|
|
159
|
-
"",
|
|
160
|
-
`Alternative: Run 'atabey approve ${traceId}' in your local terminal.`,
|
|
161
|
-
].join("\n");
|
|
162
|
-
return { request, message };
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Check if an operation should be blocked based on risk score.
|
|
166
|
-
* Returns:
|
|
167
|
-
* - null if allowed (LOW risk or auto-approved)
|
|
168
|
-
* - { blocked: true, message } if blocked (HIGH risk)
|
|
169
|
-
* - { blocked: false, warning } if warning only (MEDIUM risk)
|
|
170
|
-
*/
|
|
171
|
-
export function checkRiskGate(traceId, toolName, agent, riskScore, reason, args) {
|
|
172
|
-
const level = getRiskLevel(riskScore);
|
|
173
|
-
// LOW risk: always pass
|
|
174
|
-
if (level === "LOW") {
|
|
175
|
-
return null;
|
|
176
|
-
}
|
|
177
|
-
// MEDIUM risk: warning only
|
|
178
|
-
if (level === "MEDIUM") {
|
|
179
|
-
return {
|
|
180
|
-
blocked: false,
|
|
181
|
-
message: null,
|
|
182
|
-
warning: `[RISK WARNING] ${reason} (risk: ${riskScore}/100). Monitor this operation.`,
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
// HIGH risk: block and create approval request
|
|
186
|
-
const { message } = createApprovalRequest(traceId, toolName, agent, riskScore, reason, args);
|
|
187
|
-
return {
|
|
188
|
-
blocked: true,
|
|
189
|
-
message,
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Check if an approval request exists and is still valid.
|
|
194
|
-
*/
|
|
195
|
-
export function getApprovalStatus(traceId) {
|
|
196
|
-
const request = activeApprovals.get(traceId);
|
|
197
|
-
if (!request)
|
|
198
|
-
return null;
|
|
199
|
-
// Check if expired
|
|
200
|
-
if (Date.now() > request.expiresAt) {
|
|
201
|
-
request.status = "EXPIRED";
|
|
202
|
-
return request;
|
|
203
|
-
}
|
|
204
|
-
return request;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Approve a pending operation.
|
|
208
|
-
*
|
|
209
|
-
* RBAC enforcement (AI Governance layer):
|
|
210
|
-
* - Role is read from process.env.MCP_USER_ROLE ONLY.
|
|
211
|
-
* - The userRole parameter is accepted for API compatibility but completely IGNORED.
|
|
212
|
-
* This prevents AI agents (Claude Code, Gemini, Cursor) from escalating privilege
|
|
213
|
-
* by passing {userRole: "admin"} in the tool call arguments.
|
|
214
|
-
* - The passcode printed to stderr is the second factor — AI cannot read stderr.
|
|
215
|
-
*/
|
|
216
|
-
export function approveOperation(traceId, passcode, _userRoleIgnored // kept for API compat — value is intentionally ignored
|
|
217
|
-
) {
|
|
218
|
-
const request = activeApprovals.get(traceId);
|
|
219
|
-
if (!request) {
|
|
220
|
-
return { success: false, message: `No pending approval found for trace: ${traceId}` };
|
|
221
|
-
}
|
|
222
|
-
if (request.status !== "PENDING") {
|
|
223
|
-
return { success: false, message: `Approval for ${traceId} is already ${request.status}` };
|
|
224
|
-
}
|
|
225
|
-
// ── RBAC Check ──────────────────────────────────────────────────────────
|
|
226
|
-
// Role is read exclusively from the environment — not from the tool argument.
|
|
227
|
-
// This ensures Claude Code, Gemini CLI, Cursor, or any MCP client cannot
|
|
228
|
-
// escalate privilege by injecting a role in the tool args.
|
|
229
|
-
const role = getActiveUserRole();
|
|
230
|
-
const maxApprovable = ROLE_RISK_MAP[role];
|
|
231
|
-
if (request.riskScore <= maxApprovable) {
|
|
232
|
-
// Role is allowed — proceed to passcode check
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
const requiredRole = getMinimumRoleForScore(request.riskScore);
|
|
236
|
-
return {
|
|
237
|
-
success: false,
|
|
238
|
-
message: `[RBAC] Approval denied: Risk score ${request.riskScore}/100 requires at least '${requiredRole}' role. ` +
|
|
239
|
-
`Current role: '${role}' (max approvable: ${maxApprovable}). ` +
|
|
240
|
-
"Set MCP_USER_ROLE env var to a role with sufficient authority."
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
// ── End RBAC Check ──────────────────────────────────────────────────────
|
|
244
|
-
// Passcode second-factor (printed to stderr — AI cannot intercept)
|
|
245
|
-
if (request.passcode && (!passcode || passcode.trim().toUpperCase() !== request.passcode)) {
|
|
246
|
-
return { success: false, message: "Invalid or missing approval passcode. Verify the passcode printed to stderr." };
|
|
247
|
-
}
|
|
248
|
-
request.status = "APPROVED";
|
|
249
|
-
// Update Hermes message status
|
|
250
|
-
const messages = AtabeyStorage.getPendingMessages();
|
|
251
|
-
const pendingMsgs = messages.filter(m => m.traceId === traceId && m.category === "ALERT" && m.status === "PENDING");
|
|
252
|
-
for (const msg of pendingMsgs) {
|
|
253
|
-
if (msg.id !== undefined) {
|
|
254
|
-
AtabeyStorage.updateMessageStatus(msg.id, "APPROVED");
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
return { success: true, message: `Operation ${traceId} approved by '${role}'. You may retry.` };
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Reject a pending operation.
|
|
261
|
-
*
|
|
262
|
-
* RBAC: junior-role users cannot reject HIGH/CRITICAL operations.
|
|
263
|
-
* This prevents rogue or misconfigured recon agents from killing
|
|
264
|
-
* manager-delegated critical operations.
|
|
265
|
-
*/
|
|
266
|
-
export function rejectOperation(traceId, _userRoleIgnored // kept for API compat — value intentionally ignored
|
|
267
|
-
) {
|
|
268
|
-
const request = activeApprovals.get(traceId);
|
|
269
|
-
if (!request) {
|
|
270
|
-
return { success: false, message: `No pending approval found for trace: ${traceId}` };
|
|
271
|
-
}
|
|
272
|
-
if (request.status !== "PENDING") {
|
|
273
|
-
return { success: false, message: `Approval for ${traceId} is already ${request.status}` };
|
|
274
|
-
}
|
|
275
|
-
// RBAC: reject also requires minimum role for HIGH+ operations
|
|
276
|
-
const role = getActiveUserRole();
|
|
277
|
-
const canReject = !(role === "junior" && request.riskScore >= CONFIG.HIGH_RISK_THRESHOLD);
|
|
278
|
-
if (!canReject) {
|
|
279
|
-
return {
|
|
280
|
-
success: false,
|
|
281
|
-
message: `[RBAC] Reject denied: Risk score ${request.riskScore}/100 operations cannot be rejected by '${role}'. ` +
|
|
282
|
-
"Minimum role required to reject is 'developer'. Set MCP_USER_ROLE env var."
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
request.status = "REJECTED";
|
|
286
|
-
// Update Hermes message status
|
|
287
|
-
const messages = AtabeyStorage.getPendingMessages();
|
|
288
|
-
const pendingMsgs = messages.filter(m => m.traceId === traceId && m.category === "ALERT" && m.status === "PENDING");
|
|
289
|
-
for (const msg of pendingMsgs) {
|
|
290
|
-
if (msg.id !== undefined) {
|
|
291
|
-
AtabeyStorage.updateMessageStatus(msg.id, "REJECTED");
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
return { success: true, message: `Operation ${traceId} rejected by '${role}'.` };
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* Get all pending approval requests.
|
|
298
|
-
*/
|
|
299
|
-
export function getPendingApprovals() {
|
|
300
|
-
const now = Date.now();
|
|
301
|
-
const pending = [];
|
|
302
|
-
// Clean expired
|
|
303
|
-
for (const [, request] of activeApprovals) {
|
|
304
|
-
if (request.status === "PENDING" && now > request.expiresAt) {
|
|
305
|
-
request.status = "EXPIRED";
|
|
306
|
-
}
|
|
307
|
-
if (request.status === "PENDING") {
|
|
308
|
-
pending.push(request);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
return pending;
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Get HITL config.
|
|
315
|
-
*/
|
|
316
|
-
export function getHumanInLoopConfig() {
|
|
317
|
-
return { ...CONFIG };
|
|
318
|
-
}
|
|
319
|
-
export { CONFIG as HumanInLoopConfig };
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ─── LICENSE / COPYRIGHT SCANNER ──────────────────────────────────
|
|
3
|
-
*
|
|
4
|
-
* Detects restrictive license blocks in AI-generated code before
|
|
5
|
-
* it reaches the developer's project. Prevents GPL, AGPL, and other
|
|
6
|
-
* copyleft license violations at the MCP middleware layer.
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Recognizes SPDX license identifiers
|
|
10
|
-
* - Detects known open-source license headers (GPL, AGPL, LGPL, MPL)
|
|
11
|
-
* - Checks against corporate allowlist/blocklist
|
|
12
|
-
* - Source code similarity detection for known OSS snippets
|
|
13
|
-
* - Warning vs. blocking based on license severity
|
|
14
|
-
*
|
|
15
|
-
* License Severity:
|
|
16
|
-
* CRITICAL: GPL-3.0, AGPL-3.0 (copyleft, automatic blocking)
|
|
17
|
-
* HIGH: GPL-2.0, LGPL-3.0, MPL-2.0 (file-level copyleft)
|
|
18
|
-
* MEDIUM: MIT, Apache-2.0, BSD (permissive, allowed with attribution)
|
|
19
|
-
* LOW: CC0, Unlicense (public domain, no restrictions)
|
|
20
|
-
*/
|
|
21
|
-
import path from "path";
|
|
22
|
-
// ─── Configuration ────────────────────────────────────────────────
|
|
23
|
-
const CONFIG = {
|
|
24
|
-
/** Enable license scanning */
|
|
25
|
-
ENABLED: process.env.ATABEY_LICENSE_SCAN !== "false",
|
|
26
|
-
/** Automatically block copyleft licenses */
|
|
27
|
-
BLOCK_COPYLEFT: process.env.ATABEY_BLOCK_COPYLEFT !== "false",
|
|
28
|
-
/** SPDX blocklist – these licenses are automatically blocked */
|
|
29
|
-
BLOCKLIST: (process.env.ATABEY_LICENSE_BLOCKLIST || "GPL-3.0,AGPL-3.0,GPL-2.0").split(",").map(l => l.trim()),
|
|
30
|
-
/** SPDX allowlist – these licenses are always allowed */
|
|
31
|
-
ALLOWLIST: (process.env.ATABEY_LICENSE_ALLOWLIST || "MIT,Apache-2.0,BSD-2-Clause,BSD-3-Clause,ISC,CC0-1.0,Unlicense").split(",").map(l => l.trim()),
|
|
32
|
-
/** Detect known OSS snippets by hash (requires snippet database) */
|
|
33
|
-
ENABLE_SNIPPET_DETECTION: process.env.ATABEY_LICENSE_SNIPPET_CHECK === "true",
|
|
34
|
-
/** Path to snippet hash database */
|
|
35
|
-
SNIPPET_DB_PATH: process.env.ATABEY_SNIPPET_DB_PATH || "",
|
|
36
|
-
};
|
|
37
|
-
const SPDX_LICENSES = {
|
|
38
|
-
// Critical – Copyleft
|
|
39
|
-
"GPL-3.0": { name: "GNU General Public License v3.0", severity: "CRITICAL", copyleft: true, requiresAttribution: true },
|
|
40
|
-
"GPL-3.0-only": { name: "GNU General Public License v3.0 only", severity: "CRITICAL", copyleft: true, requiresAttribution: true },
|
|
41
|
-
"GPL-3.0-or-later": { name: "GNU General Public License v3.0 or later", severity: "CRITICAL", copyleft: true, requiresAttribution: true },
|
|
42
|
-
"AGPL-3.0": { name: "GNU Affero General Public License v3.0", severity: "CRITICAL", copyleft: true, requiresAttribution: true },
|
|
43
|
-
"AGPL-3.0-only": { name: "GNU Affero General Public License v3.0 only", severity: "CRITICAL", copyleft: true, requiresAttribution: true },
|
|
44
|
-
"SSPL-1.0": { name: "Server Side Public License v1", severity: "CRITICAL", copyleft: true, requiresAttribution: true },
|
|
45
|
-
// High – File-level copyleft
|
|
46
|
-
"GPL-2.0": { name: "GNU General Public License v2.0", severity: "HIGH", copyleft: true, requiresAttribution: true },
|
|
47
|
-
"GPL-2.0-only": { name: "GNU General Public License v2.0 only", severity: "HIGH", copyleft: true, requiresAttribution: true },
|
|
48
|
-
"LGPL-3.0": { name: "GNU Lesser General Public License v3.0", severity: "HIGH", copyleft: true, requiresAttribution: true },
|
|
49
|
-
"LGPL-3.0-only": { name: "GNU Lesser General Public License v3.0 only", severity: "HIGH", copyleft: true, requiresAttribution: true },
|
|
50
|
-
"MPL-2.0": { name: "Mozilla Public License 2.0", severity: "HIGH", copyleft: true, requiresAttribution: true },
|
|
51
|
-
"EUPL-1.2": { name: "European Union Public License 1.2", severity: "HIGH", copyleft: true, requiresAttribution: true },
|
|
52
|
-
// Medium – Permissive
|
|
53
|
-
"MIT": { name: "MIT License", severity: "MEDIUM", copyleft: false, requiresAttribution: true },
|
|
54
|
-
"Apache-2.0": { name: "Apache License 2.0", severity: "MEDIUM", copyleft: false, requiresAttribution: true },
|
|
55
|
-
"BSD-2-Clause": { name: "BSD 2-Clause License", severity: "MEDIUM", copyleft: false, requiresAttribution: true },
|
|
56
|
-
"BSD-3-Clause": { name: "BSD 3-Clause License", severity: "MEDIUM", copyleft: false, requiresAttribution: true },
|
|
57
|
-
"ISC": { name: "ISC License", severity: "MEDIUM", copyleft: false, requiresAttribution: true },
|
|
58
|
-
// Low – Public domain
|
|
59
|
-
"CC0-1.0": { name: "Creative Commons Zero v1.0", severity: "LOW", copyleft: false, requiresAttribution: false },
|
|
60
|
-
"Unlicense": { name: "The Unlicense", severity: "LOW", copyleft: false, requiresAttribution: false },
|
|
61
|
-
};
|
|
62
|
-
// ─── License Header Patterns ──────────────────────────────────────
|
|
63
|
-
const LICENSE_HEADER_PATTERNS = [
|
|
64
|
-
{
|
|
65
|
-
name: "GNU General Public License v3.0",
|
|
66
|
-
spdxId: "GPL-3.0",
|
|
67
|
-
patterns: [
|
|
68
|
-
/GNU GENERAL PUBLIC LICENSE[\s\S]*Version 3/i,
|
|
69
|
-
/GNU General Public License v3/i,
|
|
70
|
-
/GPL-3\.0/,
|
|
71
|
-
],
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
name: "GNU Affero General Public License v3.0",
|
|
75
|
-
spdxId: "AGPL-3.0",
|
|
76
|
-
patterns: [
|
|
77
|
-
/GNU AFFERO GENERAL PUBLIC LICENSE/i,
|
|
78
|
-
/Affero General Public License/i,
|
|
79
|
-
/AGPL-3\.0/,
|
|
80
|
-
],
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
name: "GNU General Public License v2.0",
|
|
84
|
-
spdxId: "GPL-2.0",
|
|
85
|
-
patterns: [
|
|
86
|
-
/GNU GENERAL PUBLIC LICENSE[\s\S]*Version 2/i,
|
|
87
|
-
/GNU General Public License v2/i,
|
|
88
|
-
/GPL-2\.0/,
|
|
89
|
-
],
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
name: "MIT License",
|
|
93
|
-
spdxId: "MIT",
|
|
94
|
-
patterns: [
|
|
95
|
-
/MIT License/i,
|
|
96
|
-
/Permission is hereby granted, free of charge, to any person obtaining a copy/i,
|
|
97
|
-
],
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
name: "Apache License 2.0",
|
|
101
|
-
spdxId: "Apache-2.0",
|
|
102
|
-
patterns: [
|
|
103
|
-
/Apache License[\s\S]*Version 2\.0/i,
|
|
104
|
-
/Licensed under the Apache License, Version 2\.0/i,
|
|
105
|
-
/Apache-2\.0/,
|
|
106
|
-
],
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
name: "BSD 2-Clause License",
|
|
110
|
-
spdxId: "BSD-2-Clause",
|
|
111
|
-
patterns: [
|
|
112
|
-
/BSD 2-Clause/i,
|
|
113
|
-
/Redistributions of source code must retain the above copyright notice/i,
|
|
114
|
-
],
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
name: "BSD 3-Clause License",
|
|
118
|
-
spdxId: "BSD-3-Clause",
|
|
119
|
-
patterns: [
|
|
120
|
-
/BSD 3-Clause/i,
|
|
121
|
-
/BSD-3-Clause/,
|
|
122
|
-
/Neither the name of/i,
|
|
123
|
-
],
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
name: "Mozilla Public License 2.0",
|
|
127
|
-
spdxId: "MPL-2.0",
|
|
128
|
-
patterns: [
|
|
129
|
-
/Mozilla Public License/i,
|
|
130
|
-
/MPL-2\.0/,
|
|
131
|
-
],
|
|
132
|
-
},
|
|
133
|
-
];
|
|
134
|
-
// ─── Scanner Implementation ───────────────────────────────────────
|
|
135
|
-
/**
|
|
136
|
-
* Scan code content for license violations.
|
|
137
|
-
* Returns array of license matches found in the content.
|
|
138
|
-
*/
|
|
139
|
-
export function scanForLicenses(filePath, content) {
|
|
140
|
-
if (!CONFIG.ENABLED)
|
|
141
|
-
return [];
|
|
142
|
-
const ext = path.extname(filePath).toLowerCase();
|
|
143
|
-
// Only scan source files
|
|
144
|
-
if (![".ts", ".tsx", ".js", ".jsx", ".py", ".go", ".java", ".rb", ".php", ".c", ".cpp", ".h", ".hpp", ".rs", ".swift", ".kt"].includes(ext)) {
|
|
145
|
-
return [];
|
|
146
|
-
}
|
|
147
|
-
const matches = [];
|
|
148
|
-
const lines = content.split("\n");
|
|
149
|
-
// 1. Check for SPDX identifiers (e.g., `SPDX-License-Identifier: MIT`)
|
|
150
|
-
const spdxRegex = /SPDX-License-Identifier:\s*([^\s\n]+)/gi;
|
|
151
|
-
let spdxMatch;
|
|
152
|
-
while ((spdxMatch = spdxRegex.exec(content)) !== null) {
|
|
153
|
-
const spdxId = spdxMatch[1].trim();
|
|
154
|
-
const lineNo = getLineNumber(content, spdxMatch.index);
|
|
155
|
-
const licenseInfo = SPDX_LICENSES[spdxId];
|
|
156
|
-
if (licenseInfo) {
|
|
157
|
-
const blocked = CONFIG.BLOCKLIST.includes(spdxId) && CONFIG.BLOCK_COPYLEFT;
|
|
158
|
-
matches.push({
|
|
159
|
-
license: licenseInfo.name,
|
|
160
|
-
severity: licenseInfo.severity,
|
|
161
|
-
spdxId,
|
|
162
|
-
source: "spdx",
|
|
163
|
-
line: lineNo,
|
|
164
|
-
snippet: spdxMatch[0].substring(0, 80),
|
|
165
|
-
blocked,
|
|
166
|
-
requiresAttribution: licenseInfo.requiresAttribution,
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
// Unknown SPDX identifier
|
|
171
|
-
matches.push({
|
|
172
|
-
license: `Unknown (${spdxId})`,
|
|
173
|
-
severity: "UNKNOWN",
|
|
174
|
-
spdxId,
|
|
175
|
-
source: "spdx",
|
|
176
|
-
line: lineNo,
|
|
177
|
-
snippet: spdxMatch[0].substring(0, 80),
|
|
178
|
-
blocked: CONFIG.BLOCK_COPYLEFT,
|
|
179
|
-
requiresAttribution: true,
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
// 2. Check for license header patterns in the first 50 lines
|
|
184
|
-
const headerRegion = lines.slice(0, 50).join("\n");
|
|
185
|
-
for (const header of LICENSE_HEADER_PATTERNS) {
|
|
186
|
-
for (const pattern of header.patterns) {
|
|
187
|
-
const headerMatch = headerRegion.match(pattern);
|
|
188
|
-
if (headerMatch) {
|
|
189
|
-
const lineNo = getLineNumber(headerRegion, headerMatch.index);
|
|
190
|
-
const licenseInfo = SPDX_LICENSES[header.spdxId] || {
|
|
191
|
-
name: header.name,
|
|
192
|
-
severity: "UNKNOWN",
|
|
193
|
-
copyleft: true,
|
|
194
|
-
requiresAttribution: true,
|
|
195
|
-
};
|
|
196
|
-
const blocked = CONFIG.BLOCKLIST.includes(header.spdxId) && CONFIG.BLOCK_COPYLEFT;
|
|
197
|
-
// Avoid duplicates from SPDX check
|
|
198
|
-
if (!matches.some(m => m.spdxId === header.spdxId && m.source === "header")) {
|
|
199
|
-
matches.push({
|
|
200
|
-
license: header.name,
|
|
201
|
-
severity: licenseInfo.severity,
|
|
202
|
-
spdxId: header.spdxId,
|
|
203
|
-
source: "header",
|
|
204
|
-
line: lineNo,
|
|
205
|
-
snippet: headerMatch[0].substring(0, 80),
|
|
206
|
-
blocked,
|
|
207
|
-
requiresAttribution: licenseInfo.requiresAttribution,
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
break;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return matches;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Validate content for license compliance before allowing file write.
|
|
218
|
-
* Returns error message if blocked, null if allowed.
|
|
219
|
-
*/
|
|
220
|
-
export function validateLicenseCompliance(filePath, content) {
|
|
221
|
-
const matches = scanForLicenses(filePath, content);
|
|
222
|
-
if (matches.length === 0)
|
|
223
|
-
return null;
|
|
224
|
-
// Check for blocked licenses
|
|
225
|
-
const blocked = matches.filter(m => m.blocked);
|
|
226
|
-
if (blocked.length > 0) {
|
|
227
|
-
const details = blocked.map(m => ` Line ${m.line}: ${m.license} (${m.spdxId}) [${m.severity}]`).join("\n");
|
|
228
|
-
return [
|
|
229
|
-
"[LICENSE] ⛔ Copyleft license detected – operation blocked",
|
|
230
|
-
"",
|
|
231
|
-
"The generated code contains copyleft-licensed content that",
|
|
232
|
-
"is incompatible with corporate IP policies:",
|
|
233
|
-
"",
|
|
234
|
-
details,
|
|
235
|
-
"",
|
|
236
|
-
`Blocked licenses: ${CONFIG.BLOCKLIST.join(", ")}`,
|
|
237
|
-
`Allowed licenses: ${CONFIG.ALLOWLIST.join(", ")}`,
|
|
238
|
-
"",
|
|
239
|
-
"Please rewrite this code without using copyleft-licensed sources.",
|
|
240
|
-
].join("\n");
|
|
241
|
-
}
|
|
242
|
-
// Check for licenses requiring attribution
|
|
243
|
-
const needsAttribution = matches.filter(m => m.requiresAttribution);
|
|
244
|
-
if (needsAttribution.length > 0) {
|
|
245
|
-
const details = needsAttribution.map(m => ` ${m.license} (${m.spdxId}) – found at line ${m.line}`).join("\n");
|
|
246
|
-
process.stderr.write(`[LICENSE] ⚠️ Attribution required for:\n${details}\n`);
|
|
247
|
-
// Don't block, just warn
|
|
248
|
-
}
|
|
249
|
-
return null;
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Get the severity summary of a set of license matches.
|
|
253
|
-
*/
|
|
254
|
-
export function getLicenseSeveritySummary(matches) {
|
|
255
|
-
let highestSeverity = "LOW";
|
|
256
|
-
const severityOrder = ["CRITICAL", "HIGH", "MEDIUM", "LOW", "UNKNOWN"];
|
|
257
|
-
const uniqueLicenses = new Set();
|
|
258
|
-
for (const match of matches) {
|
|
259
|
-
uniqueLicenses.add(match.spdxId);
|
|
260
|
-
const currentIdx = severityOrder.indexOf(match.severity);
|
|
261
|
-
const highestIdx = severityOrder.indexOf(highestSeverity);
|
|
262
|
-
if (currentIdx < highestIdx || highestIdx === -1) {
|
|
263
|
-
highestSeverity = match.severity;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
return {
|
|
267
|
-
hasBlocked: matches.some(m => m.blocked),
|
|
268
|
-
highestSeverity,
|
|
269
|
-
requiresAttribution: matches.some(m => m.requiresAttribution),
|
|
270
|
-
uniqueLicenses: Array.from(uniqueLicenses),
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Get scanner config.
|
|
275
|
-
*/
|
|
276
|
-
export function getLicenseScannerConfig() {
|
|
277
|
-
return { ...CONFIG };
|
|
278
|
-
}
|
|
279
|
-
// ─── Helper ───────────────────────────────────────────────────────
|
|
280
|
-
function getLineNumber(content, index) {
|
|
281
|
-
return content.substring(0, index).split("\n").length;
|
|
282
|
-
}
|
|
283
|
-
export { CONFIG as LicenseScannerConfig };
|