cdalkit 0.0.0-stage β 0.1.0
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/LICENSE +176 -0
- package/README.md +35 -2
- package/bin/cdal.mjs +4 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +1147 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/package.json +61 -3
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/commands/audit.ts","../src/commands/codegen.ts","../src/commands/doctor.ts","../src/commands/hook.ts","../src/commands/init.ts","../src/commands/phase.ts","../src/commands/selftest.ts","../src/commands/sync.ts","../src/commands/trace.ts","../src/commands/validate.ts","../src/commands/verify.ts","../src/commands/window.ts"],"sourcesContent":["import { runMain as cittyRunMain, defineCommand } from 'citty';\nimport { auditCommand } from './commands/audit.js';\nimport { codegenCommand } from './commands/codegen.js';\nimport { doctorCommand } from './commands/doctor.js';\nimport { hookCommand } from './commands/hook.js';\nimport { initCommand } from './commands/init.js';\nimport { phaseCommand } from './commands/phase.js';\nimport { selftestCommand } from './commands/selftest.js';\nimport { syncCommand } from './commands/sync.js';\nimport { traceCommand } from './commands/trace.js';\nimport { validateCommand } from './commands/validate.js';\nimport { verifyCommand } from './commands/verify.js';\nimport { windowCommand } from './commands/window.js';\n\nconst main = defineCommand({\n meta: {\n name: 'cdal',\n version: '0.1.0',\n description: 'Contract-Driven Agentic Loop (CDAL) Quality Gates & Audit CLI',\n },\n subCommands: {\n init: initCommand,\n validate: validateCommand,\n codegen: codegenCommand,\n window: windowCommand,\n trace: traceCommand,\n phase: phaseCommand,\n selftest: selftestCommand,\n sync: syncCommand,\n verify: verifyCommand,\n doctor: doctorCommand,\n hook: hookCommand,\n audit: auditCommand,\n },\n});\n\nexport function runMain() {\n cittyRunMain(main);\n}\n","import { writeFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { renderHtmlReport, renderTerminalReport, runAudit } from '@cdal/audit';\nimport type { AuditLanguage } from '@cdal/audit';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const auditCommand = defineCommand({\n meta: {\n name: 'audit',\n description:\n 'Audit repository for AI agent hygiene, type silencing, test isolation and gates (100% offline)',\n },\n args: {\n path: {\n type: 'positional',\n description: 'Path to repository root to audit',\n required: false,\n default: '.',\n },\n html: {\n type: 'string',\n description: 'Path to save standalone single-file HTML report (e.g. audit-report.html)',\n required: false,\n },\n json: {\n type: 'boolean',\n description: 'Output machine-readable JSON report (schema: audit.v1)',\n default: false,\n },\n lang: {\n type: 'string',\n description: 'Report language (en or pl)',\n default: 'en',\n },\n failUnder: {\n type: 'string',\n description: 'Exit with code 1 if audit score is below this threshold (0-100)',\n required: false,\n },\n },\n async run({ args }) {\n const targetDir = resolve(args.path || '.');\n const lang = (args.lang === 'pl' ? 'pl' : 'en') as AuditLanguage;\n\n if (!args.json) {\n console.log(pc.bold(pc.cyan('\\nπ Running CDAL Repository AI Hygiene Audit...\\n')));\n }\n\n const report = await runAudit({\n cwd: targetDir,\n lang,\n });\n\n if (args.html) {\n const htmlContent = renderHtmlReport(report, lang);\n const outPath = resolve(args.html);\n writeFileSync(outPath, htmlContent, 'utf8');\n if (!args.json) {\n console.log(pc.green(` β Wygenerowano raport HTML: ${outPath}`));\n }\n }\n\n if (args.json) {\n console.log(JSON.stringify(report, null, 2));\n } else {\n console.log(renderTerminalReport(report, lang));\n }\n\n if (args.failUnder) {\n const threshold = Number.parseInt(args.failUnder, 10);\n if (!Number.isNaN(threshold) && report.score < threshold) {\n console.error(\n pc.red(\n `\\nβ Audit score ${report.score} is below threshold ${threshold}. Failing quality gate.`,\n ),\n );\n process.exit(1);\n }\n }\n },\n});\n","import { runCodegen } from '@cdal/core';\nimport { policies, requirements, stateMachine } from '@cdal/kinds';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const codegenCommand = defineCommand({\n meta: {\n name: 'codegen',\n description:\n 'Emit TypeScript types and documentation from contracts (with --check drift detection)',\n },\n args: {\n check: {\n type: 'boolean',\n description: 'Check for drift between contracts and generated files without modifying disk',\n default: false,\n },\n dir: {\n type: 'string',\n description: 'Custom path to contracts directory',\n },\n },\n async run({ args }) {\n try {\n const defaultKinds = [requirements(), stateMachine(), policies()];\n\n const res = await runCodegen({\n contractsDir: args.dir,\n check: Boolean(args.check),\n kinds: defaultKinds,\n });\n\n if (args.check) {\n if (!res.drift) {\n console.log(pc.green('β
Codegen check: all generated files are in sync byte-for-byte.'));\n } else {\n console.error(pc.red('β Codegen check failed: drift detected in generated files:'));\n for (const f of res.files) {\n if (f.status === 'drift') {\n console.error(pc.red(` - [DRIFT] ${f.path} (${f.fullPath})`));\n } else if (f.status === 'missing') {\n console.error(pc.red(` - [MISSING] ${f.path} (${f.fullPath})`));\n }\n }\n console.error(\n pc.yellow('\\nRun `cdal codegen` to synchronize generated files with contracts.'),\n );\n process.exit(1);\n }\n } else {\n console.log(pc.green(`β
Emitted ${res.files.length} contract artifact(s):`));\n for (const f of res.files) {\n console.log(pc.cyan(` - ${f.path} -> ${f.fullPath}`));\n }\n }\n } catch (err: unknown) {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(pc.red(`β Fatal error during codegen: ${msg}`));\n process.exit(1);\n }\n },\n});\n","import { spawnSync } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { syncAdapters } from '@cdal/adapters';\nimport { type ContractKind, type ResolvedCdalConfig, loadConfig, runCodegen } from '@cdal/core';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport interface DoctorCheckResult {\n name: string;\n status: 'ok' | 'warn' | 'error';\n message: string;\n recommendation?: string;\n}\n\nexport function runDoctorChecks(\n cwd: string,\n customConfig?: string,\n): {\n checks: DoctorCheckResult[];\n healthy: boolean;\n} {\n const checks: DoctorCheckResult[] = [];\n\n // 1. Node version check (requires >= 20.9.0)\n const nodeVer = process.version;\n const match = /^v(\\d+)\\.(\\d+)\\./.exec(nodeVer);\n const major = match?.[1] ? Number.parseInt(match[1], 10) : 0;\n const minor = match?.[2] ? Number.parseInt(match[2], 10) : 0;\n\n if (major > 20 || (major === 20 && minor >= 9)) {\n checks.push({\n name: 'Node.js Runtime',\n status: 'ok',\n message: `Node ${nodeVer} satisfies engines.node >= 20.9.0 LTS`,\n });\n } else {\n checks.push({\n name: 'Node.js Runtime',\n status: 'error',\n message: `Current Node ${nodeVer} is below required >= 20.9.0`,\n recommendation: 'Upgrade Node.js to Node 22 LTS or Node 20.9+.',\n });\n }\n\n // 2. Git installation and repository check\n const gitVersionRes = spawnSync('git', ['--version'], { encoding: 'utf8' });\n if (gitVersionRes.status !== 0) {\n checks.push({\n name: 'Git Binary',\n status: 'error',\n message: 'git binary is not available in PATH',\n recommendation: 'Install Git or add it to PATH.',\n });\n } else {\n checks.push({\n name: 'Git Binary',\n status: 'ok',\n message: `Git is available (${gitVersionRes.stdout.trim()})`,\n });\n\n const gitRepoRes = spawnSync('git', ['rev-parse', '--is-inside-work-tree'], {\n cwd,\n encoding: 'utf8',\n });\n if (gitRepoRes.status !== 0) {\n checks.push({\n name: 'Git Repository',\n status: 'error',\n message: 'Current directory is not inside a git working tree',\n recommendation: 'Initialize git with `git init`.',\n });\n } else {\n checks.push({\n name: 'Git Repository',\n status: 'ok',\n message: 'Inside active git working tree',\n });\n }\n }\n\n // 3. Configuration check\n let configObj: ResolvedCdalConfig | null = null;\n try {\n const loaded = loadConfigSync(cwd, customConfig);\n configObj = loaded.config;\n checks.push({\n name: 'Configuration',\n status: 'ok',\n message: `Configuration loaded cleanly (${loaded.filepath ? loaded.filepath : 'default config'})`,\n });\n } catch (err: unknown) {\n const msg = err instanceof Error ? err.message : String(err);\n checks.push({\n name: 'Configuration',\n status: 'error',\n message: `Failed to load cdal.config.mjs: ${msg}`,\n recommendation: 'Run `cdal init` or fix configuration errors.',\n });\n }\n\n // 4. Hook wiring check in .claude/settings.json\n const settingsPath = join(cwd, '.claude/settings.json');\n if (existsSync(settingsPath)) {\n try {\n const settingsContent = readFileSync(settingsPath, 'utf8');\n if (settingsContent.includes('cdal hook')) {\n checks.push({\n name: 'Claude Code Hooks',\n status: 'ok',\n message: '.claude/settings.json correctly wires CDAL pre-tool hooks',\n });\n } else {\n checks.push({\n name: 'Claude Code Hooks',\n status: 'warn',\n message: '.claude/settings.json exists but does not call `cdal hook`',\n recommendation: 'Run `cdal sync` to wire quality gate hooks.',\n });\n }\n } catch {\n checks.push({\n name: 'Claude Code Hooks',\n status: 'warn',\n message: 'Could not read .claude/settings.json',\n });\n }\n } else {\n checks.push({\n name: 'Claude Code Hooks',\n status: 'warn',\n message: 'No .claude/settings.json found in workspace',\n recommendation: 'Run `cdal init` or `cdal sync` to generate hook wiring.',\n });\n }\n\n // 5. Adapter drift check\n if (configObj) {\n try {\n const syncRes = syncAdapters({ cwd, config: configObj, check: true });\n if (syncRes.inSync) {\n checks.push({\n name: 'Runtime Adapters Sync',\n status: 'ok',\n message: `All ${syncRes.totalFiles} adapter file(s) are in sync without drift`,\n });\n } else {\n checks.push({\n name: 'Runtime Adapters Sync',\n status: 'error',\n message: `${syncRes.driftedFiles.length} adapter file(s) drifted from configuration: ${syncRes.driftedFiles.join(', ')}`,\n recommendation: 'Run `cdal sync` to synchronize runtime files.',\n });\n }\n } catch (err: unknown) {\n checks.push({\n name: 'Runtime Adapters Sync',\n status: 'warn',\n message: `Could not check adapter sync: ${String(err)}`,\n });\n }\n }\n\n const healthy = checks.every((c) => c.status !== 'error');\n return { checks, healthy };\n}\n\nfunction loadConfigSync(cwd: string, customConfig?: string) {\n const configPath = customConfig || join(cwd, 'cdal.config.mjs');\n if (existsSync(configPath)) {\n return { config: null, filepath: configPath };\n }\n return { config: null, filepath: null };\n}\n\nexport const doctorCommand = defineCommand({\n meta: {\n name: 'doctor',\n description:\n 'Diagnose CDAL installation, environment health, hook wiring, and configuration drift',\n },\n args: {\n config: {\n type: 'string',\n description: 'Path to cdal.config.mjs',\n },\n cwd: {\n type: 'string',\n description: 'Working directory path',\n },\n },\n async run({ args }) {\n const cwd = args.cwd || process.cwd();\n console.log(pc.bold(pc.cyan('\\nπ©Ί Running CDAL Diagnostic Doctor...\\n')));\n\n let resolvedConfig: ResolvedCdalConfig | null = null;\n try {\n const loaded = await loadConfig(args.config || cwd);\n resolvedConfig = loaded.config;\n } catch (err: unknown) {\n console.error(pc.red(`β οΈ Configuration error: ${String(err)}`));\n }\n\n const { checks, healthy } = runDoctorChecks(cwd, args.config);\n\n // If we loaded config, also test runCodegen drift\n if (resolvedConfig) {\n try {\n const codegenRes = await runCodegen({\n contractsDir: resolvedConfig.contractsDir,\n kinds: resolvedConfig.kinds as unknown as ContractKind<unknown>[],\n check: true,\n });\n if (!codegenRes.drift) {\n checks.push({\n name: 'Contract Codegen Sync',\n status: 'ok',\n message: 'Generated contract artifacts match contracts byte-for-byte',\n });\n } else {\n checks.push({\n name: 'Contract Codegen Sync',\n status: 'error',\n message: 'Generated contract code drifted from contract sources',\n recommendation: 'Run `cdal codegen` to regenerate artifacts.',\n });\n }\n } catch {\n // ignore codegen errors in doctor if contractsDir empty\n }\n }\n\n for (const check of checks) {\n if (check.status === 'ok') {\n console.log(pc.green(` β [OK] ${pc.bold(check.name)}: ${check.message}`));\n } else if (check.status === 'warn') {\n console.log(pc.yellow(` β οΈ [WARN] ${pc.bold(check.name)}: ${check.message}`));\n if (check.recommendation) {\n console.log(pc.dim(` Recommendation: ${check.recommendation}`));\n }\n } else {\n console.log(pc.red(` β [FAIL] ${pc.bold(check.name)}: ${check.message}`));\n if (check.recommendation) {\n console.log(pc.yellow(` Recommendation: ${check.recommendation}`));\n }\n }\n }\n\n if (healthy) {\n console.log(\n pc.bold(pc.green('\\nβ
Doctor report: Environment and CDAL quality gates are healthy!\\n')),\n );\n } else {\n console.log(pc.bold(pc.red('\\nβ Doctor report: Some critical diagnostic checks failed.\\n')));\n process.exit(1);\n }\n },\n});\n","import fs from 'node:fs';\nimport { type HookName, executeHook } from '@cdal/adapters';\nimport { loadConfig } from '@cdal/core';\nimport { defineCommand } from 'citty';\n\nconst VALID_HOOKS = new Set([\n 'guard-paths',\n 'guard-forbidden',\n 'guard-bash',\n 'session-context',\n 'log-subagent',\n]);\n\nexport const hookCommand = defineCommand({\n meta: {\n name: 'hook',\n description: 'Entrypoint for agent runtime hooks (Claude Code, Antigravity, etc.)',\n },\n args: {\n name: {\n type: 'positional',\n description:\n 'Hook name to execute: guard-paths, guard-forbidden, guard-bash, session-context, log-subagent',\n required: true,\n },\n role: {\n type: 'positional',\n description: 'Fallback agent role name if not specified in hook payload',\n required: false,\n },\n runtime: {\n type: 'string',\n description: 'Target runtime adapter (claude-code, antigravity)',\n default: 'claude-code',\n },\n config: {\n type: 'string',\n description: 'Path to cdal.config.mjs',\n },\n },\n async run({ args }) {\n const hookName = args.name as HookName;\n if (!VALID_HOOKS.has(hookName)) {\n process.stderr.write(\n `Unknown hook name \"${hookName}\". Valid hooks: ${Array.from(VALID_HOOKS).join(', ')}\\n`,\n );\n process.exit(1);\n }\n\n let rawPayload = '';\n try {\n rawPayload = fs.readFileSync(0, 'utf8');\n } catch {\n // stdin was not piped or not accessible\n }\n\n const cwd = process.cwd();\n const { config } = await loadConfig(args.config);\n\n const result = await executeHook(hookName, rawPayload, {\n cwd,\n config,\n fallbackRole: args.role,\n runtime: args.runtime as 'claude-code' | 'antigravity' | 'generic',\n });\n\n if (result.stdout) {\n process.stdout.write(`${result.stdout}\\n`);\n }\n\n if (result.stderr) {\n process.stderr.write(result.stderr);\n }\n\n process.exit(result.exitCode);\n },\n});\n","import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { syncAdapters } from '@cdal/adapters';\nimport { resolveConfig } from '@cdal/core';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const initCommand = defineCommand({\n meta: {\n name: 'init',\n description:\n 'Initialize CDAL quality gates, starter contracts, and runtime adapters in the repository',\n },\n args: {\n yes: {\n type: 'boolean',\n description: 'Accept default recommendations non-interactively',\n alias: 'y',\n default: false,\n },\n preset: {\n type: 'string',\n description: 'Preset configuration to apply (e.g. typescript-strict, nextjs, node-service)',\n default: 'typescript-strict',\n },\n runtime: {\n type: 'string',\n description: 'Comma-separated runtimes to enable (claude-code, agents-md, antigravity)',\n default: 'claude-code,agents-md',\n },\n cwd: {\n type: 'string',\n description: 'Target directory to initialize',\n },\n },\n async run({ args }) {\n const cwd = args.cwd || process.cwd();\n console.log(pc.bold(pc.cyan('\\nπ Initializing Contract-Driven Agentic Loop (CDAL)...\\n')));\n\n const preset = args.preset || 'typescript-strict';\n const rawRuntimes = (args.runtime || 'claude-code,agents-md')\n .split(',')\n .map((r) => r.trim())\n .filter(Boolean);\n\n // 1. Create contracts directory and sample contract if missing\n const contractsDir = join(cwd, 'contracts');\n if (!existsSync(contractsDir)) {\n mkdirSync(contractsDir, { recursive: true });\n }\n\n const sampleContractPath = join(contractsDir, 'requirements.contract.mjs');\n if (!existsSync(sampleContractPath)) {\n const sampleContractContent = `// @origin: cdal init\nexport const REQUIREMENTS = [\n {\n id: 'REQ-CORE-INIT-1',\n statement: 'System must initialize workspace with contract-driven quality gates.',\n acceptance: [\n 'cdal validate succeeds without errors',\n 'Test cases are marked with @REQ tags',\n ],\n status: 'ACTIVE',\n priority: 'CRITICAL',\n },\n];\n`;\n writeFileSync(sampleContractPath, sampleContractContent, 'utf8');\n console.log(\n pc.green(` β Created starter contract: ${pc.bold('contracts/requirements.contract.mjs')}`),\n );\n }\n\n // 2. Create cdal.config.mjs if missing\n const configPath = join(cwd, 'cdal.config.mjs');\n if (!existsSync(configPath)) {\n const runtimesFormatted = rawRuntimes.map((r) => `'${r}'`).join(', ');\n const configContent = `import { defineConfig } from '@cdal/core';\nimport { policies, requirements, stateMachine } from '@cdal/kinds';\n\nexport default defineConfig({\n contractsDir: 'contracts',\n generated: {\n ts: 'src/generated/contracts',\n docs: 'docs/generated',\n },\n kinds: [requirements(), stateMachine(), policies()],\n presets: ['${preset}'],\n runtimes: [${runtimesFormatted}],\n verify: [\n 'cdal validate --strict',\n 'cdal codegen --check',\n 'cdal trace --enforce',\n 'cdal selftest',\n ],\n});\n`;\n writeFileSync(configPath, configContent, 'utf8');\n console.log(pc.green(` β Created configuration: ${pc.bold('cdal.config.mjs')}`));\n } else {\n console.log(\n pc.dim(' βΉ cdal.config.mjs already exists (preserving existing configuration).'),\n );\n }\n\n // 3. Update package.json scripts if package.json exists\n const pkgPath = join(cwd, 'package.json');\n if (existsSync(pkgPath)) {\n try {\n const pkgRaw = readFileSync(pkgPath, 'utf8');\n const pkg = JSON.parse(pkgRaw);\n pkg.scripts = pkg.scripts || {};\n let updated = false;\n\n if (!pkg.scripts.verify) {\n pkg.scripts.verify = 'cdal verify';\n updated = true;\n }\n if (!pkg.scripts.selftest) {\n pkg.scripts.selftest = 'cdal selftest';\n updated = true;\n }\n if (!pkg.scripts.trace) {\n pkg.scripts.trace = 'cdal trace';\n updated = true;\n }\n\n if (updated) {\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8');\n console.log(\n pc.green(` β Added verify/selftest/trace scripts to ${pc.bold('package.json')}`),\n );\n }\n } catch {\n console.log(pc.yellow(' β οΈ Could not update package.json scripts automatically.'));\n }\n }\n\n // 4. Synchronize adapter files across selected runtimes\n const resolvedConfig = resolveConfig({\n presets: [preset],\n runtimes: rawRuntimes,\n });\n\n const syncRes = syncAdapters({\n cwd,\n config: resolvedConfig,\n check: false,\n });\n\n console.log(\n pc.green(\n ` β Generated ${syncRes.updatedFiles.length} runtime adapter file(s) across [${rawRuntimes.join(', ')}].`,\n ),\n );\n\n console.log(pc.bold(pc.green('\\nπ CDAL initialized successfully!')));\n console.log(pc.cyan('Next steps:'));\n console.log(pc.dim(' 1. Review contracts in contracts/*.contract.mjs'));\n console.log(pc.dim(' 2. Run `npx cdalkit doctor` to verify environment health'));\n console.log(pc.dim(' 3. Run `npx cdalkit verify` to test the loop gate\\n'));\n },\n});\n","import { type PhaseType, checkPhase, loadConfig } from '@cdal/core';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const phaseCommand = defineCommand({\n meta: {\n name: 'phase',\n description: 'Verify git diff against active loop phase (contract, red, green)',\n },\n args: {\n phase: {\n type: 'positional',\n description: 'Phase to verify: contract, red, green',\n required: true,\n },\n base: {\n type: 'string',\n description: 'Base git reference to compare against (e.g. main or origin/main)',\n },\n json: {\n type: 'boolean',\n description: 'Output as JSON payload',\n default: false,\n },\n config: {\n type: 'string',\n description: 'Path to cdal.config.mjs',\n },\n },\n async run({ args }) {\n const rawPhase = (args.phase || '').toLowerCase();\n if (!['contract', 'red', 'green'].includes(rawPhase)) {\n console.error(pc.red(`Invalid phase \"${rawPhase}\". Valid phases are: contract, red, green.`));\n process.exit(2);\n }\n const phase = rawPhase as PhaseType;\n\n const cwd = process.cwd();\n const { config: resolvedConfig } = await loadConfig(args.config);\n\n const result = checkPhase(phase, {\n cwd,\n base: args.base,\n protectedPaths: resolvedConfig?.protectedPaths,\n });\n\n if (args.json) {\n console.log(JSON.stringify(result, null, 2));\n process.exit(result.ok ? 0 : 1);\n }\n\n console.log(pc.bold(`\\n Phase: ${result.label}`));\n console.log(` Modified files in diff: ${result.files.length}\\n`);\n\n if (result.violations.length === 0) {\n if (result.files.length === 0) {\n if (phase === 'red') {\n console.log(\n pc.yellow(\n ' β No changes found in working tree. Phase RED requires at least one test.',\n ),\n );\n process.exit(1);\n }\n console.log(pc.dim(' No changes found in working tree.'));\n process.exit(0);\n }\n console.log(pc.green(' β All changes are within active phase scopes.'));\n process.exit(0);\n }\n\n console.log(\n pc.red(` β ${result.violations.length} file(s) outside of permitted phase scope:\\n`),\n );\n for (const v of result.violations) {\n console.log(` - ${v}`);\n }\n console.log(pc.dim(`\\n ${result.why}\\n`));\n process.exit(1);\n },\n});\n","import { loadConfig, runSelftest } from '@cdal/core';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const selftestCommand = defineCommand({\n meta: {\n name: 'selftest',\n description: 'Run mutation testing on contract invariant rules and content guardrails',\n },\n args: {\n json: {\n type: 'boolean',\n description: 'Output as JSON payload (selftest.v1)',\n default: false,\n },\n config: {\n type: 'string',\n description: 'Path to cdal.config.mjs',\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n const { config: resolvedConfig } = await loadConfig(args.config);\n\n if (!args.json) {\n console.log(pc.bold(pc.cyan('\\n cdal selftest β mutation testing of quality gates')));\n console.log(\n pc.dim(' Testing whether validator and guardrails actually fire red when violated\\n'),\n );\n }\n\n const report = await runSelftest({\n cwd,\n config: resolvedConfig,\n });\n\n if (args.json) {\n console.log(JSON.stringify(report, null, 2));\n process.exit(report.ok ? 0 : 1);\n }\n\n // Display mutation results\n if (report.mutationResults.length > 0) {\n console.log(\n pc.bold(\n ` Contract Invariant Mutations (${report.mutationsPassed}/${report.mutationsTotal}):`,\n ),\n );\n for (const m of report.mutationResults) {\n if (m.passed) {\n console.log(\n ` ${pc.green('β')} ${pc.cyan(m.rule.padEnd(26))} detected in ${pc.dim(m.file)}`,\n );\n } else {\n console.log(\n ` ${pc.red('β')} ${pc.red(m.rule.padEnd(26))} ${pc.bold('MISSED')}: ${m.error ?? 'rule dead'}`,\n );\n }\n }\n console.log('');\n }\n\n // Display content probe results\n if (report.probeResults.length > 0) {\n console.log(\n pc.bold(` Forbidden Content Probes (${report.probesPassed}/${report.probesTotal}):`),\n );\n for (const p of report.probeResults) {\n const action = p.fires ? 'detected' : 'allowed';\n if (p.passed) {\n console.log(\n ` ${pc.green('β')} ${pc.cyan(p.rule.padEnd(30))} ${pc.green(action)}: ${p.desc}`,\n );\n } else {\n console.log(\n ` ${pc.red('β')} ${pc.red(p.rule.padEnd(30))} ${pc.bold('FAILED')}: ${p.error ?? 'unexpected behavior'}`,\n );\n }\n }\n console.log('');\n }\n\n // Summary\n console.log(\n pc.bold(\n ` Summary: ${report.mutationsPassed}/${report.mutationsTotal} contract rules verified via mutation.`,\n ),\n );\n console.log(\n pc.bold(\n ` ${report.probesPassed}/${report.probesTotal} content guardrail probes verified.\\n`,\n ),\n );\n\n if (report.failures.length > 0) {\n console.log(pc.bold(pc.red(' CRITICAL GATE FAILURES:')));\n for (const f of report.failures) {\n console.log(` - ${pc.red(f)}`);\n }\n console.log('');\n process.exit(1);\n }\n\n console.log(pc.green(pc.bold(' β Every quality gate rule is verified active and firing.\\n')));\n process.exit(0);\n },\n});\n","import { syncAdapters } from '@cdal/adapters';\nimport { loadConfig } from '@cdal/core';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const syncCommand = defineCommand({\n meta: {\n name: 'sync',\n description:\n 'Synchronize agent definitions, commands, hooks and rules across configured runtimes (with --check drift detection)',\n },\n args: {\n check: {\n type: 'boolean',\n description:\n 'Check for drift between cdal.config.mjs and runtime files without modifying disk',\n default: false,\n },\n config: {\n type: 'string',\n description: 'Custom path to cdal.config.mjs',\n },\n cwd: {\n type: 'string',\n description: 'Working directory path',\n },\n },\n async run({ args }) {\n try {\n const cwd = args.cwd || process.cwd();\n const { config } = await loadConfig(args.config || cwd);\n\n const res = syncAdapters({\n cwd,\n config,\n check: Boolean(args.check),\n });\n\n if (args.check) {\n if (res.inSync) {\n console.log(\n pc.green(\n `β
Sync check passed: all ${res.totalFiles} adapter file(s) are in sync across [${config.runtimes.join(', ')}].`,\n ),\n );\n } else {\n console.error(\n pc.red(\n `β Sync check failed: ${res.driftedFiles.length} adapter file(s) drifted from configuration:`,\n ),\n );\n for (const file of res.driftedFiles) {\n console.error(pc.red(` - [DRIFT] ${file}`));\n }\n console.error(\n pc.yellow('\\nRun `cdal sync` to synchronize runtime files with cdal.config.mjs.'),\n );\n process.exit(1);\n }\n } else {\n console.log(\n pc.green(\n `β
Synchronized ${res.updatedFiles.length} adapter file(s) across [${config.runtimes.join(', ')}]:`,\n ),\n );\n for (const file of res.updatedFiles) {\n console.log(pc.cyan(` - ${file}`));\n }\n if (res.updatedFiles.length === 0) {\n console.log(pc.dim(' (All files were already up-to-date)'));\n }\n }\n } catch (err: unknown) {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(pc.red(`β Fatal error during sync: ${msg}`));\n process.exit(1);\n }\n },\n});\n","import path from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport {\n type TraceRequirement,\n formatTraceMarkdown,\n formatTraceText,\n loadConfig,\n scanTrace,\n} from '@cdal/core';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const traceCommand = defineCommand({\n meta: {\n name: 'trace',\n description: 'Inspect requirement-to-test traceability matrix (@REQ tags)',\n },\n args: {\n enforce: {\n type: 'boolean',\n description:\n 'Exit with code 1 if any implementing/done requirement lacks tests, tests fail, or unknown @REQ tags exist',\n default: false,\n },\n markdown: {\n type: 'boolean',\n description: 'Output as Markdown table ready for pull request description',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output as structured JSON (trace.v1)',\n default: false,\n },\n results: {\n type: 'string',\n description: 'Path to test execution JSON results file (vitest or playwright json reporter)',\n },\n config: {\n type: 'string',\n description: 'Path to cdal.config.mjs',\n },\n },\n async run({ args }) {\n const cwd = process.cwd();\n const { config: resolvedConfig } = await loadConfig(args.config);\n\n const contractsDir = resolvedConfig?.contractsDir ?? 'contracts';\n const reqContractPath = path.resolve(cwd, contractsDir, 'requirements.contract.mjs');\n\n let requirements: TraceRequirement[] = [];\n try {\n const imported = await import(pathToFileURL(reqContractPath).href);\n requirements = (imported.REQUIREMENTS ||\n imported.default?.REQUIREMENTS ||\n imported.default ||\n []) as TraceRequirement[];\n } catch (err: unknown) {\n const errorMsg = err instanceof Error ? err.message : String(err);\n console.error(pc.red(`Failed to load requirements from \"${reqContractPath}\": ${errorMsg}`));\n process.exit(1);\n }\n\n if (!Array.isArray(requirements) || requirements.length === 0) {\n console.warn(pc.yellow(`No requirements found in \"${reqContractPath}\".`));\n if (args.enforce) process.exit(1);\n return;\n }\n\n const report = scanTrace(requirements, {\n cwd,\n resultsFile: args.results,\n });\n\n if (args.json) {\n console.log(JSON.stringify(report, null, 2));\n } else if (args.markdown) {\n console.log(formatTraceMarkdown(report));\n } else {\n console.log(formatTraceText(report));\n }\n\n if (args.enforce && !report.ok) {\n process.exit(1);\n }\n },\n});\n","import { formatFindingsText, runValidation } from '@cdal/core';\nimport { policies, requirements, stateMachine } from '@cdal/kinds';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const validateCommand = defineCommand({\n meta: {\n name: 'validate',\n description: 'Validate contract invariants across all registered contract kinds',\n },\n args: {\n strict: {\n type: 'boolean',\n description: 'Treat warnings as failures (exit 1)',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output findings using machine-readable findings.v1 JSON schema',\n default: false,\n },\n dir: {\n type: 'string',\n description: 'Custom path to contracts directory',\n },\n },\n async run({ args }) {\n try {\n // Register standard OSS kinds by default\n const defaultKinds = [requirements(), stateMachine(), policies()];\n\n const report = await runValidation({\n contractsDir: args.dir,\n strict: Boolean(args.strict),\n kinds: defaultKinds,\n });\n\n if (args.json) {\n console.log(JSON.stringify(report, null, 2));\n } else {\n const text = formatFindingsText(report, Boolean(args.strict));\n if (report.valid) {\n console.log(pc.green(text));\n } else {\n console.error(pc.red(text));\n }\n }\n\n if (!report.valid) {\n process.exit(1);\n }\n } catch (err: unknown) {\n const msg = err instanceof Error ? err.message : String(err);\n console.error(pc.red(`β Fatal error during contract validation: ${msg}`));\n process.exit(1);\n }\n },\n});\n","import { spawnSync } from 'node:child_process';\nimport { loadConfig } from '@cdal/core';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const verifyCommand = defineCommand({\n meta: {\n name: 'verify',\n description: 'Run deterministic CDAL verification pipeline defined in configuration',\n },\n args: {\n fast: {\n type: 'boolean',\n description: 'Run fast subset of verification steps (contract checks & selftest)',\n default: false,\n },\n full: {\n type: 'boolean',\n description: 'Force execution of all verification steps',\n default: false,\n },\n clean: {\n type: 'boolean',\n description: 'Clear temporary caches before running verification',\n default: false,\n },\n config: {\n type: 'string',\n description: 'Path to cdal.config.mjs',\n },\n cwd: {\n type: 'string',\n description: 'Working directory path',\n },\n },\n async run({ args }) {\n const cwd = args.cwd || process.cwd();\n const { config } = await loadConfig(args.config || cwd);\n\n let steps = [...config.verify];\n\n if (args.fast) {\n // In fast mode, run contract validation, codegen drift check, and selftest\n steps = steps.filter(\n (s) =>\n s.includes('validate') ||\n s.includes('codegen') ||\n s.includes('selftest') ||\n s.includes('typecheck'),\n );\n if (steps.length === 0) {\n steps = [config.verify[0] ?? 'cdal validate --strict'];\n }\n }\n\n console.log(\n pc.bold(pc.cyan(`\\nβ‘ Running CDAL Verification Pipeline (${steps.length} step(s))...\\n`)),\n );\n\n for (let i = 0; i < steps.length; i++) {\n const step = steps[i];\n if (!step) continue;\n console.log(pc.bold(pc.blue(`[${i + 1}/${steps.length}] βΆ ${step}`)));\n\n const start = Date.now();\n const res = spawnSync(step, {\n cwd,\n shell: true,\n stdio: 'inherit',\n });\n const duration = Date.now() - start;\n\n if (res.status !== 0) {\n console.error(\n pc.bold(\n pc.red(\n `\\nβ Verification failed at step: \"${step}\" (exit code ${res.status ?? 1}, took ${duration}ms)`,\n ),\n ),\n );\n process.exit(res.status ?? 1);\n }\n\n console.log(pc.green(` β Step passed in ${duration}ms\\n`));\n }\n\n console.log(\n pc.bold(\n pc.green(`β
Full verification pipeline succeeded (${steps.length} step(s) passed).`),\n ),\n );\n },\n});\n","import { closeContractWindow, getContractWindowStatus, openContractWindow } from '@cdal/core';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\n\nexport const windowCommand = defineCommand({\n meta: {\n name: 'window',\n description: 'Manage contract window for protected path modifications',\n },\n args: {\n action: {\n type: 'positional',\n description: 'Action to perform: open, close, status',\n required: true,\n },\n ticket: {\n type: 'positional',\n description: 'Ticket or reason ID (required for open)',\n required: false,\n },\n duration: {\n type: 'string',\n description: 'Window duration in minutes (default: 60)',\n default: '60',\n },\n },\n run({ args }) {\n const action = args.action.toLowerCase();\n\n if (action === 'open') {\n const ticket = args.ticket;\n if (!ticket) {\n console.error(\n pc.red(\n 'Error: \"cdal window open\" requires a ticket or work order argument. Example: cdal window open WO-123',\n ),\n );\n process.exit(1);\n }\n const durationMinutes = Number.parseInt(args.duration, 10) || 60;\n const status = openContractWindow(ticket, { durationMinutes });\n console.log(pc.green(`β Contract window opened for ticket: ${pc.bold(status.ticket)}`));\n console.log(pc.dim(` Expires at: ${status.expiresAt}`));\n return;\n }\n\n if (action === 'close') {\n closeContractWindow();\n console.log(pc.green('β Contract window closed. Protected paths are locked.'));\n return;\n }\n\n if (action === 'status') {\n const status = getContractWindowStatus();\n if (status.open) {\n console.log(pc.green(`Contract window is ${pc.bold('OPEN')}`));\n console.log(` Ticket: ${status.ticket ?? 'none'}`);\n console.log(` Opened at: ${status.openedAt ?? 'unknown'}`);\n console.log(` Expires at: ${status.expiresAt ?? 'unknown'}`);\n } else {\n console.log(pc.yellow(`Contract window is ${pc.bold('CLOSED')}`));\n }\n return;\n }\n\n console.error(pc.red(`Unknown action \"${action}\". Available actions: open, close, status`));\n process.exit(1);\n },\n});\n"],"mappings":"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","names":["defineCommand","defineCommand","pc","runCodegen","defineCommand","pc","loadConfig","defineCommand","existsSync","readFileSync","writeFileSync","join","syncAdapters","defineCommand","pc","loadConfig","defineCommand","pc","loadConfig","defineCommand","pc","syncAdapters","loadConfig","defineCommand","pc","loadConfig","defineCommand","pc","requirements","policies","requirements","stateMachine","defineCommand","pc","spawnSync","loadConfig","defineCommand","pc","defineCommand","pc","defineCommand"]}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * cdal CLI package exports\n */\n\nexport * from '@cdal/core';\nexport * from '@cdal/kinds';\nexport * from '@cdal/adapters';\nexport * from '@cdal/audit';\n"],"mappings":";AAIA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,64 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cdalkit",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Command-line interface and hook router for CDAL (Contract-Driven Agentic Loop)",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"author": "MichaΕ Sznurowski",
|
|
7
|
+
"homepage": "https://cdal-henna.vercel.app",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"ai",
|
|
10
|
+
"agents",
|
|
11
|
+
"claude-code",
|
|
12
|
+
"cursor",
|
|
13
|
+
"windsurf",
|
|
14
|
+
"antigravity",
|
|
15
|
+
"quality-gates",
|
|
16
|
+
"contracts",
|
|
17
|
+
"testing",
|
|
18
|
+
"vibecoding"
|
|
19
|
+
],
|
|
20
|
+
"type": "module",
|
|
21
|
+
"bin": {
|
|
22
|
+
"cdal": "./bin/cdal.mjs",
|
|
23
|
+
"cdalkit": "./bin/cdal.mjs"
|
|
24
|
+
},
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"module": "./dist/index.js",
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"import": "./dist/index.js",
|
|
31
|
+
"types": "./dist/index.d.ts"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
"bin"
|
|
37
|
+
],
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@clack/prompts": "^0.9.1",
|
|
40
|
+
"citty": "^0.1.6",
|
|
41
|
+
"picocolors": "^1.1.1",
|
|
42
|
+
"tinyglobby": "^0.2.10",
|
|
43
|
+
"@cdal/adapters": "0.1.0",
|
|
44
|
+
"@cdal/audit": "0.1.0",
|
|
45
|
+
"@cdal/core": "0.1.0",
|
|
46
|
+
"@cdal/kinds": "0.1.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"tsup": "^8.3.6",
|
|
50
|
+
"typescript": "^5.7.3",
|
|
51
|
+
"vitest": "^3.0.5"
|
|
52
|
+
},
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=20.9.0"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "tsup",
|
|
61
|
+
"typecheck": "tsc --noEmit",
|
|
62
|
+
"test": "vitest run"
|
|
63
|
+
}
|
|
6
64
|
}
|