cdalkit 0.1.5 → 0.1.6
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/dist/cli.js +36 -24
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -81,9 +81,22 @@ var auditCommand = defineCommand({
|
|
|
81
81
|
|
|
82
82
|
// src/commands/codegen.ts
|
|
83
83
|
import { runCodegen } from "@cdal/core";
|
|
84
|
-
import { policies, requirements, stateMachine } from "@cdal/kinds";
|
|
85
84
|
import { defineCommand as defineCommand2 } from "citty";
|
|
86
85
|
import pc2 from "picocolors";
|
|
86
|
+
|
|
87
|
+
// src/kinds.ts
|
|
88
|
+
import { loadConfig } from "@cdal/core";
|
|
89
|
+
import { policies, requirements, stateMachine } from "@cdal/kinds";
|
|
90
|
+
async function resolveCommandKinds(cwd = process.cwd()) {
|
|
91
|
+
const { config } = await loadConfig(cwd);
|
|
92
|
+
const configured = (config.kinds ?? []).filter(
|
|
93
|
+
(kind) => typeof kind.load === "function"
|
|
94
|
+
);
|
|
95
|
+
if (configured.length > 0) return configured;
|
|
96
|
+
return [requirements(), stateMachine(), policies()];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// src/commands/codegen.ts
|
|
87
100
|
var codegenCommand = defineCommand2({
|
|
88
101
|
meta: {
|
|
89
102
|
name: "codegen",
|
|
@@ -102,11 +115,11 @@ var codegenCommand = defineCommand2({
|
|
|
102
115
|
},
|
|
103
116
|
async run({ args }) {
|
|
104
117
|
try {
|
|
105
|
-
const
|
|
118
|
+
const kinds = await resolveCommandKinds();
|
|
106
119
|
const res = await runCodegen({
|
|
107
120
|
contractsDir: args.dir,
|
|
108
121
|
check: Boolean(args.check),
|
|
109
|
-
kinds
|
|
122
|
+
kinds
|
|
110
123
|
});
|
|
111
124
|
if (args.check) {
|
|
112
125
|
if (!res.drift) {
|
|
@@ -144,7 +157,7 @@ import { spawnSync } from "child_process";
|
|
|
144
157
|
import { existsSync, readFileSync } from "fs";
|
|
145
158
|
import { join } from "path";
|
|
146
159
|
import { syncAdapters } from "@cdal/adapters";
|
|
147
|
-
import { loadConfig, runCodegen as runCodegen2 } from "@cdal/core";
|
|
160
|
+
import { loadConfig as loadConfig2, runCodegen as runCodegen2 } from "@cdal/core";
|
|
148
161
|
import { defineCommand as defineCommand3 } from "citty";
|
|
149
162
|
import pc3 from "picocolors";
|
|
150
163
|
function inspectClaudeHooks(settings) {
|
|
@@ -322,7 +335,7 @@ var doctorCommand = defineCommand3({
|
|
|
322
335
|
console.log(pc3.bold(pc3.cyan("\n\u{1FA7A} Running CDAL Diagnostic Doctor...\n")));
|
|
323
336
|
let resolvedConfig = null;
|
|
324
337
|
try {
|
|
325
|
-
const loaded = await
|
|
338
|
+
const loaded = await loadConfig2(args.config || cwd);
|
|
326
339
|
resolvedConfig = loaded.config;
|
|
327
340
|
} catch (err) {
|
|
328
341
|
console.error(pc3.red(`\u26A0\uFE0F Configuration error: ${String(err)}`));
|
|
@@ -381,7 +394,7 @@ var doctorCommand = defineCommand3({
|
|
|
381
394
|
// src/commands/hook.ts
|
|
382
395
|
import fs from "fs";
|
|
383
396
|
import { executeHook } from "@cdal/adapters";
|
|
384
|
-
import { loadConfig as
|
|
397
|
+
import { loadConfig as loadConfig3 } from "@cdal/core";
|
|
385
398
|
import { defineCommand as defineCommand4 } from "citty";
|
|
386
399
|
var VALID_HOOKS = /* @__PURE__ */ new Set([
|
|
387
400
|
"guard-paths",
|
|
@@ -431,7 +444,7 @@ var hookCommand = defineCommand4({
|
|
|
431
444
|
} catch {
|
|
432
445
|
}
|
|
433
446
|
const cwd = process.cwd();
|
|
434
|
-
const { config } = await
|
|
447
|
+
const { config } = await loadConfig3(args.config);
|
|
435
448
|
const result = await executeHook(hookName, rawPayload, {
|
|
436
449
|
cwd,
|
|
437
450
|
config,
|
|
@@ -596,7 +609,7 @@ export default defineConfig({
|
|
|
596
609
|
});
|
|
597
610
|
|
|
598
611
|
// src/commands/phase.ts
|
|
599
|
-
import { checkPhase, loadConfig as
|
|
612
|
+
import { checkPhase, loadConfig as loadConfig4 } from "@cdal/core";
|
|
600
613
|
import { defineCommand as defineCommand6 } from "citty";
|
|
601
614
|
import pc5 from "picocolors";
|
|
602
615
|
var phaseCommand = defineCommand6({
|
|
@@ -632,7 +645,7 @@ var phaseCommand = defineCommand6({
|
|
|
632
645
|
}
|
|
633
646
|
const phase = rawPhase;
|
|
634
647
|
const cwd = process.cwd();
|
|
635
|
-
const { config: resolvedConfig } = await
|
|
648
|
+
const { config: resolvedConfig } = await loadConfig4(args.config);
|
|
636
649
|
const result = checkPhase(phase, {
|
|
637
650
|
cwd,
|
|
638
651
|
base: args.base,
|
|
@@ -893,7 +906,7 @@ var proCommand = defineCommand7({
|
|
|
893
906
|
});
|
|
894
907
|
|
|
895
908
|
// src/commands/selftest.ts
|
|
896
|
-
import { loadConfig as
|
|
909
|
+
import { loadConfig as loadConfig5, runSelftest } from "@cdal/core";
|
|
897
910
|
import { defineCommand as defineCommand8 } from "citty";
|
|
898
911
|
import pc7 from "picocolors";
|
|
899
912
|
var selftestCommand = defineCommand8({
|
|
@@ -914,7 +927,7 @@ var selftestCommand = defineCommand8({
|
|
|
914
927
|
},
|
|
915
928
|
async run({ args }) {
|
|
916
929
|
const cwd = process.cwd();
|
|
917
|
-
const { config: resolvedConfig } = await
|
|
930
|
+
const { config: resolvedConfig } = await loadConfig5(args.config);
|
|
918
931
|
if (!args.json) {
|
|
919
932
|
console.log(pc7.bold(pc7.cyan("\n cdal selftest \u2014 mutation testing of quality gates")));
|
|
920
933
|
console.log(
|
|
@@ -992,7 +1005,7 @@ var selftestCommand = defineCommand8({
|
|
|
992
1005
|
|
|
993
1006
|
// src/commands/sync.ts
|
|
994
1007
|
import { syncAdapters as syncAdapters3 } from "@cdal/adapters";
|
|
995
|
-
import { loadConfig as
|
|
1008
|
+
import { loadConfig as loadConfig6 } from "@cdal/core";
|
|
996
1009
|
import { defineCommand as defineCommand9 } from "citty";
|
|
997
1010
|
import pc8 from "picocolors";
|
|
998
1011
|
var syncCommand = defineCommand9({
|
|
@@ -1018,7 +1031,7 @@ var syncCommand = defineCommand9({
|
|
|
1018
1031
|
async run({ args }) {
|
|
1019
1032
|
try {
|
|
1020
1033
|
const cwd = args.cwd || process.cwd();
|
|
1021
|
-
const { config } = await
|
|
1034
|
+
const { config } = await loadConfig6(args.config || cwd);
|
|
1022
1035
|
const res = syncAdapters3({
|
|
1023
1036
|
cwd,
|
|
1024
1037
|
config,
|
|
@@ -1081,7 +1094,7 @@ import { pathToFileURL } from "url";
|
|
|
1081
1094
|
import {
|
|
1082
1095
|
formatTraceMarkdown,
|
|
1083
1096
|
formatTraceText,
|
|
1084
|
-
loadConfig as
|
|
1097
|
+
loadConfig as loadConfig7,
|
|
1085
1098
|
scanTrace
|
|
1086
1099
|
} from "@cdal/core";
|
|
1087
1100
|
import { defineCommand as defineCommand10 } from "citty";
|
|
@@ -1118,24 +1131,24 @@ var traceCommand = defineCommand10({
|
|
|
1118
1131
|
},
|
|
1119
1132
|
async run({ args }) {
|
|
1120
1133
|
const cwd = process.cwd();
|
|
1121
|
-
const { config: resolvedConfig } = await
|
|
1134
|
+
const { config: resolvedConfig } = await loadConfig7(args.config);
|
|
1122
1135
|
const contractsDir = resolvedConfig?.contractsDir ?? "contracts";
|
|
1123
1136
|
const reqContractPath = path.resolve(cwd, contractsDir, "requirements.contract.mjs");
|
|
1124
|
-
let
|
|
1137
|
+
let requirements2 = [];
|
|
1125
1138
|
try {
|
|
1126
1139
|
const imported = await import(pathToFileURL(reqContractPath).href);
|
|
1127
|
-
|
|
1140
|
+
requirements2 = imported.REQUIREMENTS || imported.default?.REQUIREMENTS || imported.default || [];
|
|
1128
1141
|
} catch (err) {
|
|
1129
1142
|
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
1130
1143
|
console.error(pc9.red(`Failed to load requirements from "${reqContractPath}": ${errorMsg}`));
|
|
1131
1144
|
process.exit(1);
|
|
1132
1145
|
}
|
|
1133
|
-
if (!Array.isArray(
|
|
1146
|
+
if (!Array.isArray(requirements2) || requirements2.length === 0) {
|
|
1134
1147
|
console.warn(pc9.yellow(`No requirements found in "${reqContractPath}".`));
|
|
1135
1148
|
if (args.enforce) process.exit(1);
|
|
1136
1149
|
return;
|
|
1137
1150
|
}
|
|
1138
|
-
const report = scanTrace(
|
|
1151
|
+
const report = scanTrace(requirements2, {
|
|
1139
1152
|
cwd,
|
|
1140
1153
|
resultsFile: args.results
|
|
1141
1154
|
});
|
|
@@ -1154,7 +1167,6 @@ var traceCommand = defineCommand10({
|
|
|
1154
1167
|
|
|
1155
1168
|
// src/commands/validate.ts
|
|
1156
1169
|
import { formatFindingsText, runValidation } from "@cdal/core";
|
|
1157
|
-
import { policies as policies2, requirements as requirements2, stateMachine as stateMachine2 } from "@cdal/kinds";
|
|
1158
1170
|
import { defineCommand as defineCommand11 } from "citty";
|
|
1159
1171
|
import pc10 from "picocolors";
|
|
1160
1172
|
var validateCommand = defineCommand11({
|
|
@@ -1180,11 +1192,11 @@ var validateCommand = defineCommand11({
|
|
|
1180
1192
|
},
|
|
1181
1193
|
async run({ args }) {
|
|
1182
1194
|
try {
|
|
1183
|
-
const
|
|
1195
|
+
const kinds = await resolveCommandKinds();
|
|
1184
1196
|
const report = await runValidation({
|
|
1185
1197
|
contractsDir: args.dir,
|
|
1186
1198
|
strict: Boolean(args.strict),
|
|
1187
|
-
kinds
|
|
1199
|
+
kinds
|
|
1188
1200
|
});
|
|
1189
1201
|
if (args.json) {
|
|
1190
1202
|
console.log(JSON.stringify(report, null, 2));
|
|
@@ -1209,7 +1221,7 @@ var validateCommand = defineCommand11({
|
|
|
1209
1221
|
|
|
1210
1222
|
// src/commands/verify.ts
|
|
1211
1223
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
1212
|
-
import { loadConfig as
|
|
1224
|
+
import { loadConfig as loadConfig8 } from "@cdal/core";
|
|
1213
1225
|
import { defineCommand as defineCommand12 } from "citty";
|
|
1214
1226
|
import pc11 from "picocolors";
|
|
1215
1227
|
var verifyCommand = defineCommand12({
|
|
@@ -1244,7 +1256,7 @@ var verifyCommand = defineCommand12({
|
|
|
1244
1256
|
},
|
|
1245
1257
|
async run({ args }) {
|
|
1246
1258
|
const cwd = args.cwd || process.cwd();
|
|
1247
|
-
const { config } = await
|
|
1259
|
+
const { config } = await loadConfig8(args.config || cwd);
|
|
1248
1260
|
let steps = [...config.verify];
|
|
1249
1261
|
if (args.fast) {
|
|
1250
1262
|
steps = steps.filter(
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +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/pro.ts","../src/pro/install.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 { createRequire } from 'node:module';\nimport { 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 { proCommand } from './commands/pro.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\n// Read the version from package.json so `--version` always matches the published package.\nconst { version } = createRequire(import.meta.url)('../package.json') as { version: string };\n\nconst main = defineCommand({\n meta: {\n name: 'cdal',\n version,\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 pro: proCommand,\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\n/**\n * Claude Code only runs hooks declared as matcher groups with typed handlers:\n * { matcher, hooks: [{ type: 'command', command }] }. A `command` placed\n * directly on the group is silently ignored.\n */\nfunction inspectClaudeHooks(settings: {\n hooks?: Record<string, unknown>;\n}): 'ok' | 'legacy-format' | 'missing' {\n const groups = settings.hooks?.PreToolUse;\n if (!Array.isArray(groups)) return 'missing';\n let legacy = false;\n for (const group of groups as Array<Record<string, unknown>>) {\n if (typeof group.command === 'string' && /cdal(kit)? hook/.test(group.command)) legacy = true;\n const handlers = Array.isArray(group.hooks)\n ? (group.hooks as Array<Record<string, unknown>>)\n : [];\n for (const handler of handlers) {\n if (\n handler.type === 'command' &&\n typeof handler.command === 'string' &&\n /cdal(kit)? hook guard-paths/.test(handler.command)\n ) {\n return 'ok';\n }\n }\n }\n return legacy ? 'legacy-format' : 'missing';\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 settings = JSON.parse(readFileSync(settingsPath, 'utf8')) as {\n hooks?: Record<string, unknown>;\n };\n const wiring = inspectClaudeHooks(settings);\n if (wiring === 'ok') {\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:\n wiring === 'legacy-format'\n ? '.claude/settings.json uses a hook format Claude Code ignores, so the CDAL gates never run'\n : '.claude/settings.json exists but does not wire the CDAL guard-paths hook',\n recommendation: 'Run `npx cdalkit sync` to regenerate the hook wiring.',\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 { execFileSync } from 'node:child_process';\nimport { existsSync, mkdtempSync, rmSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { join, resolve } from 'node:path';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\nimport { ProInstallError, installPro } from '../pro/install.js';\n\nexport const PRO_REPOSITORY_URL = 'https://github.com/cdalkit/cdal-pro.git';\n\n/** Clones a git source into a temp directory; local directories are used as-is. */\nfunction resolveSource(from: string): { dir: string; cleanup: () => void } {\n const local = resolve(from);\n if (existsSync(local)) return { dir: local, cleanup: () => {} };\n\n const dir = mkdtempSync(join(tmpdir(), 'cdal-pro-'));\n const cleanup = () => rmSync(dir, { recursive: true, force: true });\n try {\n execFileSync('git', ['clone', '--depth', '1', '--quiet', from, dir], {\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n } catch {\n cleanup();\n throw new ProInstallError(\n `Could not clone ${from}.\\n CDAL Pro is delivered as a private GitHub repository: accept the invitation sent after your purchase, make sure git can access GitHub as that account, then run this command again.`,\n );\n }\n return { dir, cleanup };\n}\n\nconst installCommand = defineCommand({\n meta: {\n name: 'install',\n description: 'Install CDAL Pro content (agent roles, templates, presets) into this project',\n },\n args: {\n from: {\n type: 'string',\n description: 'Local copy or git URL of the cdal-pro repository',\n default: PRO_REPOSITORY_URL,\n },\n cwd: {\n type: 'string',\n description: 'Project directory to install into',\n default: '.',\n },\n force: {\n type: 'boolean',\n description: 'Overwrite files that already exist in the project',\n default: false,\n },\n dryRun: {\n type: 'boolean',\n description: 'Show what would be installed without writing anything',\n default: false,\n },\n },\n run({ args }) {\n let source: { dir: string; cleanup: () => void } | undefined;\n try {\n source = resolveSource(args.from);\n const result = installPro({\n sourceDir: source.dir,\n targetDir: resolve(args.cwd),\n force: args.force,\n dryRun: args.dryRun,\n });\n\n const verb = args.dryRun ? 'Would install' : 'Installed';\n console.log(pc.green(`✔ ${verb} ${result.name} ${result.version}`));\n console.log(` ${result.written.length} file(s) ${args.dryRun ? 'to write' : 'written'}`);\n if (result.skipped.length > 0) {\n console.log(\n pc.yellow(\n ` ${result.skipped.length} existing file(s) kept — rerun with --force to overwrite:`,\n ),\n );\n for (const file of result.skipped) console.log(pc.dim(` ${file}`));\n }\n if (!args.dryRun) {\n console.log(pc.dim(' Run `npx cdalkit sync` to wire the new roles into your runtimes.'));\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(pc.red(`✖ ${message}`));\n process.exit(1);\n } finally {\n source?.cleanup();\n }\n },\n});\n\nexport const proCommand = defineCommand({\n meta: {\n name: 'pro',\n description: 'CDAL Pro: install licensed agent roles, templates and presets',\n },\n subCommands: {\n install: installCommand,\n },\n});\n","import {\n copyFileSync,\n existsSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n statSync,\n writeFileSync,\n} from 'node:fs';\nimport { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';\n\nexport const PRO_MANIFEST_FILE = 'pro.manifest.json';\nexport const PRO_RECORD_FILE = '.cdal/pro.json';\n\n// Files carrying these markers were generated by `cdalkit sync`/`init` and can be regenerated,\n// so Pro content may replace them; anything else in the project is user-owned.\nconst GENERATED_MARKERS = ['CDAL GENERATED', 'GENERATED by cdal sync'];\n\nfunction isGeneratedFile(path: string): boolean {\n const content = readFileSync(path, 'utf8');\n return GENERATED_MARKERS.some((marker) => content.includes(marker));\n}\n\nexport class ProInstallError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ProInstallError';\n }\n}\n\nexport interface ProManifest {\n name: string;\n version: string;\n install: Array<{ from: string; to: string }>;\n}\n\nexport interface ProInstallOptions {\n /** Directory containing pro.manifest.json (a clone of cdal-pro or a local copy). */\n sourceDir: string;\n /** Project root to install into. */\n targetDir: string;\n /** Overwrite files that already exist in the project. */\n force?: boolean;\n /** Report what would be written without touching the project. */\n dryRun?: boolean;\n}\n\nexport interface ProInstallResult {\n name: string;\n version: string;\n /** Project-relative paths written (or, in dry-run mode, that would be written). */\n written: string[];\n /** Project-relative paths left untouched because they already exist. */\n skipped: string[];\n}\n\nfunction toPosix(path: string): string {\n return path.split(sep).join('/');\n}\n\n/** Resolves `rel` under `root`, refusing absolute paths and anything that escapes `root`. */\nfunction resolveInside(root: string, rel: string, label: string): string {\n if (typeof rel !== 'string' || rel.length === 0 || isAbsolute(rel)) {\n throw new ProInstallError(`Invalid ${label} path in ${PRO_MANIFEST_FILE}: \"${rel}\"`);\n }\n const full = resolve(root, rel);\n const fromRoot = relative(root, full);\n if (fromRoot.startsWith('..') || isAbsolute(fromRoot)) {\n throw new ProInstallError(`${label} path \"${rel}\" escapes its directory`);\n }\n return full;\n}\n\nexport function readProManifest(sourceDir: string): ProManifest {\n const manifestPath = join(sourceDir, PRO_MANIFEST_FILE);\n if (!existsSync(manifestPath)) {\n throw new ProInstallError(`No ${PRO_MANIFEST_FILE} found in ${sourceDir}`);\n }\n let manifest: ProManifest;\n try {\n manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) as ProManifest;\n } catch (err) {\n throw new ProInstallError(\n `${PRO_MANIFEST_FILE} is not valid JSON: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n if (!manifest.name || !manifest.version || !Array.isArray(manifest.install)) {\n throw new ProInstallError(`${PRO_MANIFEST_FILE} must define name, version and install[]`);\n }\n return manifest;\n}\n\nfunction listFiles(dir: string): string[] {\n const files: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n const full = join(dir, entry.name);\n if (entry.isDirectory()) files.push(...listFiles(full));\n else if (entry.isFile()) files.push(full);\n }\n return files;\n}\n\nexport function installPro(options: ProInstallOptions): ProInstallResult {\n const sourceDir = resolve(options.sourceDir);\n const targetDir = resolve(options.targetDir);\n const manifest = readProManifest(sourceDir);\n\n // Resolve every mapping before writing anything, so a bad entry aborts cleanly.\n const plan: Array<{ src: string; dest: string; rel: string }> = [];\n for (const mapping of manifest.install) {\n const from = resolveInside(sourceDir, mapping.from, 'from');\n const to = resolveInside(targetDir, mapping.to, 'to');\n if (!existsSync(from)) {\n throw new ProInstallError(`Manifest source \"${mapping.from}\" does not exist`);\n }\n const sources = statSync(from).isDirectory() ? listFiles(from) : [from];\n for (const src of sources) {\n const dest = statSync(from).isDirectory() ? join(to, relative(from, src)) : to;\n plan.push({ src, dest, rel: toPosix(relative(targetDir, dest)) });\n }\n }\n\n const written: string[] = [];\n const skipped: string[] = [];\n for (const { src, dest, rel } of plan) {\n if (existsSync(dest) && !options.force && !isGeneratedFile(dest)) {\n skipped.push(rel);\n continue;\n }\n written.push(rel);\n if (!options.dryRun) {\n mkdirSync(dirname(dest), { recursive: true });\n copyFileSync(src, dest);\n }\n }\n\n if (!options.dryRun) {\n const recordPath = join(targetDir, PRO_RECORD_FILE);\n mkdirSync(dirname(recordPath), { recursive: true });\n writeFileSync(\n recordPath,\n `${JSON.stringify(\n {\n name: manifest.name,\n version: manifest.version,\n installedAt: new Date().toISOString(),\n files: plan.map((p) => p.rel).sort(),\n },\n null,\n 2,\n )}\\n`,\n 'utf8',\n );\n }\n\n return { name: manifest.name, version: manifest.version, written, skipped };\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(\n '\\nRun `npx cdalkit sync` to synchronize runtime files with cdal.config.mjs.',\n ),\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 if (res.preservedFiles.length > 0) {\n console.log(\n pc.dim(\n ` ${res.preservedFiles.length} file(s) marked cdal:preserve were left untouched.`,\n ),\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","existsSync","join","resolve","defineCommand","pc","existsSync","mkdirSync","readFileSync","writeFileSync","join","resolve","path","resolve","existsSync","join","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"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/commands/audit.ts","../src/commands/codegen.ts","../src/kinds.ts","../src/commands/doctor.ts","../src/commands/hook.ts","../src/commands/init.ts","../src/commands/phase.ts","../src/commands/pro.ts","../src/pro/install.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 { createRequire } from 'node:module';\nimport { 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 { proCommand } from './commands/pro.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\n// Read the version from package.json so `--version` always matches the published package.\nconst { version } = createRequire(import.meta.url)('../package.json') as { version: string };\n\nconst main = defineCommand({\n meta: {\n name: 'cdal',\n version,\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 pro: proCommand,\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 { defineCommand } from 'citty';\nimport pc from 'picocolors';\nimport { resolveCommandKinds } from '../kinds.js';\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 kinds = await resolveCommandKinds();\n\n const res = await runCodegen({\n contractsDir: args.dir,\n check: Boolean(args.check),\n kinds,\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 { type ContractKind, loadConfig } from '@cdal/core';\nimport { policies, requirements, stateMachine } from '@cdal/kinds';\n\n/**\n * Contract kinds for validate/codegen: the ones registered in cdal.config.mjs\n * (built-in, CDAL Pro or custom), or the built-in kinds when the config registers none.\n */\nexport async function resolveCommandKinds(cwd: string = process.cwd()): Promise<ContractKind[]> {\n const { config } = await loadConfig(cwd);\n const configured = (config.kinds ?? []).filter(\n (kind): kind is ContractKind => typeof (kind as Partial<ContractKind>).load === 'function',\n );\n if (configured.length > 0) return configured;\n return [requirements(), stateMachine(), policies()] as ContractKind[];\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\n/**\n * Claude Code only runs hooks declared as matcher groups with typed handlers:\n * { matcher, hooks: [{ type: 'command', command }] }. A `command` placed\n * directly on the group is silently ignored.\n */\nfunction inspectClaudeHooks(settings: {\n hooks?: Record<string, unknown>;\n}): 'ok' | 'legacy-format' | 'missing' {\n const groups = settings.hooks?.PreToolUse;\n if (!Array.isArray(groups)) return 'missing';\n let legacy = false;\n for (const group of groups as Array<Record<string, unknown>>) {\n if (typeof group.command === 'string' && /cdal(kit)? hook/.test(group.command)) legacy = true;\n const handlers = Array.isArray(group.hooks)\n ? (group.hooks as Array<Record<string, unknown>>)\n : [];\n for (const handler of handlers) {\n if (\n handler.type === 'command' &&\n typeof handler.command === 'string' &&\n /cdal(kit)? hook guard-paths/.test(handler.command)\n ) {\n return 'ok';\n }\n }\n }\n return legacy ? 'legacy-format' : 'missing';\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 settings = JSON.parse(readFileSync(settingsPath, 'utf8')) as {\n hooks?: Record<string, unknown>;\n };\n const wiring = inspectClaudeHooks(settings);\n if (wiring === 'ok') {\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:\n wiring === 'legacy-format'\n ? '.claude/settings.json uses a hook format Claude Code ignores, so the CDAL gates never run'\n : '.claude/settings.json exists but does not wire the CDAL guard-paths hook',\n recommendation: 'Run `npx cdalkit sync` to regenerate the hook wiring.',\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 { execFileSync } from 'node:child_process';\nimport { existsSync, mkdtempSync, rmSync } from 'node:fs';\nimport { tmpdir } from 'node:os';\nimport { join, resolve } from 'node:path';\nimport { defineCommand } from 'citty';\nimport pc from 'picocolors';\nimport { ProInstallError, installPro } from '../pro/install.js';\n\nexport const PRO_REPOSITORY_URL = 'https://github.com/cdalkit/cdal-pro.git';\n\n/** Clones a git source into a temp directory; local directories are used as-is. */\nfunction resolveSource(from: string): { dir: string; cleanup: () => void } {\n const local = resolve(from);\n if (existsSync(local)) return { dir: local, cleanup: () => {} };\n\n const dir = mkdtempSync(join(tmpdir(), 'cdal-pro-'));\n const cleanup = () => rmSync(dir, { recursive: true, force: true });\n try {\n execFileSync('git', ['clone', '--depth', '1', '--quiet', from, dir], {\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n } catch {\n cleanup();\n throw new ProInstallError(\n `Could not clone ${from}.\\n CDAL Pro is delivered as a private GitHub repository: accept the invitation sent after your purchase, make sure git can access GitHub as that account, then run this command again.`,\n );\n }\n return { dir, cleanup };\n}\n\nconst installCommand = defineCommand({\n meta: {\n name: 'install',\n description: 'Install CDAL Pro content (agent roles, templates, presets) into this project',\n },\n args: {\n from: {\n type: 'string',\n description: 'Local copy or git URL of the cdal-pro repository',\n default: PRO_REPOSITORY_URL,\n },\n cwd: {\n type: 'string',\n description: 'Project directory to install into',\n default: '.',\n },\n force: {\n type: 'boolean',\n description: 'Overwrite files that already exist in the project',\n default: false,\n },\n dryRun: {\n type: 'boolean',\n description: 'Show what would be installed without writing anything',\n default: false,\n },\n },\n run({ args }) {\n let source: { dir: string; cleanup: () => void } | undefined;\n try {\n source = resolveSource(args.from);\n const result = installPro({\n sourceDir: source.dir,\n targetDir: resolve(args.cwd),\n force: args.force,\n dryRun: args.dryRun,\n });\n\n const verb = args.dryRun ? 'Would install' : 'Installed';\n console.log(pc.green(`✔ ${verb} ${result.name} ${result.version}`));\n console.log(` ${result.written.length} file(s) ${args.dryRun ? 'to write' : 'written'}`);\n if (result.skipped.length > 0) {\n console.log(\n pc.yellow(\n ` ${result.skipped.length} existing file(s) kept — rerun with --force to overwrite:`,\n ),\n );\n for (const file of result.skipped) console.log(pc.dim(` ${file}`));\n }\n if (!args.dryRun) {\n console.log(pc.dim(' Run `npx cdalkit sync` to wire the new roles into your runtimes.'));\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n console.error(pc.red(`✖ ${message}`));\n process.exit(1);\n } finally {\n source?.cleanup();\n }\n },\n});\n\nexport const proCommand = defineCommand({\n meta: {\n name: 'pro',\n description: 'CDAL Pro: install licensed agent roles, templates and presets',\n },\n subCommands: {\n install: installCommand,\n },\n});\n","import {\n copyFileSync,\n existsSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n statSync,\n writeFileSync,\n} from 'node:fs';\nimport { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';\n\nexport const PRO_MANIFEST_FILE = 'pro.manifest.json';\nexport const PRO_RECORD_FILE = '.cdal/pro.json';\n\n// Files carrying these markers were generated by `cdalkit sync`/`init` and can be regenerated,\n// so Pro content may replace them; anything else in the project is user-owned.\nconst GENERATED_MARKERS = ['CDAL GENERATED', 'GENERATED by cdal sync'];\n\nfunction isGeneratedFile(path: string): boolean {\n const content = readFileSync(path, 'utf8');\n return GENERATED_MARKERS.some((marker) => content.includes(marker));\n}\n\nexport class ProInstallError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ProInstallError';\n }\n}\n\nexport interface ProManifest {\n name: string;\n version: string;\n install: Array<{ from: string; to: string }>;\n}\n\nexport interface ProInstallOptions {\n /** Directory containing pro.manifest.json (a clone of cdal-pro or a local copy). */\n sourceDir: string;\n /** Project root to install into. */\n targetDir: string;\n /** Overwrite files that already exist in the project. */\n force?: boolean;\n /** Report what would be written without touching the project. */\n dryRun?: boolean;\n}\n\nexport interface ProInstallResult {\n name: string;\n version: string;\n /** Project-relative paths written (or, in dry-run mode, that would be written). */\n written: string[];\n /** Project-relative paths left untouched because they already exist. */\n skipped: string[];\n}\n\nfunction toPosix(path: string): string {\n return path.split(sep).join('/');\n}\n\n/** Resolves `rel` under `root`, refusing absolute paths and anything that escapes `root`. */\nfunction resolveInside(root: string, rel: string, label: string): string {\n if (typeof rel !== 'string' || rel.length === 0 || isAbsolute(rel)) {\n throw new ProInstallError(`Invalid ${label} path in ${PRO_MANIFEST_FILE}: \"${rel}\"`);\n }\n const full = resolve(root, rel);\n const fromRoot = relative(root, full);\n if (fromRoot.startsWith('..') || isAbsolute(fromRoot)) {\n throw new ProInstallError(`${label} path \"${rel}\" escapes its directory`);\n }\n return full;\n}\n\nexport function readProManifest(sourceDir: string): ProManifest {\n const manifestPath = join(sourceDir, PRO_MANIFEST_FILE);\n if (!existsSync(manifestPath)) {\n throw new ProInstallError(`No ${PRO_MANIFEST_FILE} found in ${sourceDir}`);\n }\n let manifest: ProManifest;\n try {\n manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) as ProManifest;\n } catch (err) {\n throw new ProInstallError(\n `${PRO_MANIFEST_FILE} is not valid JSON: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n if (!manifest.name || !manifest.version || !Array.isArray(manifest.install)) {\n throw new ProInstallError(`${PRO_MANIFEST_FILE} must define name, version and install[]`);\n }\n return manifest;\n}\n\nfunction listFiles(dir: string): string[] {\n const files: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n const full = join(dir, entry.name);\n if (entry.isDirectory()) files.push(...listFiles(full));\n else if (entry.isFile()) files.push(full);\n }\n return files;\n}\n\nexport function installPro(options: ProInstallOptions): ProInstallResult {\n const sourceDir = resolve(options.sourceDir);\n const targetDir = resolve(options.targetDir);\n const manifest = readProManifest(sourceDir);\n\n // Resolve every mapping before writing anything, so a bad entry aborts cleanly.\n const plan: Array<{ src: string; dest: string; rel: string }> = [];\n for (const mapping of manifest.install) {\n const from = resolveInside(sourceDir, mapping.from, 'from');\n const to = resolveInside(targetDir, mapping.to, 'to');\n if (!existsSync(from)) {\n throw new ProInstallError(`Manifest source \"${mapping.from}\" does not exist`);\n }\n const sources = statSync(from).isDirectory() ? listFiles(from) : [from];\n for (const src of sources) {\n const dest = statSync(from).isDirectory() ? join(to, relative(from, src)) : to;\n plan.push({ src, dest, rel: toPosix(relative(targetDir, dest)) });\n }\n }\n\n const written: string[] = [];\n const skipped: string[] = [];\n for (const { src, dest, rel } of plan) {\n if (existsSync(dest) && !options.force && !isGeneratedFile(dest)) {\n skipped.push(rel);\n continue;\n }\n written.push(rel);\n if (!options.dryRun) {\n mkdirSync(dirname(dest), { recursive: true });\n copyFileSync(src, dest);\n }\n }\n\n if (!options.dryRun) {\n const recordPath = join(targetDir, PRO_RECORD_FILE);\n mkdirSync(dirname(recordPath), { recursive: true });\n writeFileSync(\n recordPath,\n `${JSON.stringify(\n {\n name: manifest.name,\n version: manifest.version,\n installedAt: new Date().toISOString(),\n files: plan.map((p) => p.rel).sort(),\n },\n null,\n 2,\n )}\\n`,\n 'utf8',\n );\n }\n\n return { name: manifest.name, version: manifest.version, written, skipped };\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(\n '\\nRun `npx cdalkit sync` to synchronize runtime files with cdal.config.mjs.',\n ),\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 if (res.preservedFiles.length > 0) {\n console.log(\n pc.dim(\n ` ${res.preservedFiles.length} file(s) marked cdal:preserve were left untouched.`,\n ),\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 { defineCommand } from 'citty';\nimport pc from 'picocolors';\nimport { resolveCommandKinds } from '../kinds.js';\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 const kinds = await resolveCommandKinds();\n\n const report = await runValidation({\n contractsDir: args.dir,\n strict: Boolean(args.strict),\n kinds,\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","defineCommand","pc","loadConfig","runCodegen","defineCommand","pc","loadConfig","defineCommand","existsSync","readFileSync","writeFileSync","join","syncAdapters","defineCommand","pc","loadConfig","defineCommand","pc","existsSync","join","resolve","defineCommand","pc","existsSync","mkdirSync","readFileSync","writeFileSync","join","resolve","path","resolve","existsSync","join","defineCommand","pc","loadConfig","defineCommand","pc","syncAdapters","loadConfig","defineCommand","pc","loadConfig","defineCommand","pc","requirements","defineCommand","pc","defineCommand","pc","spawnSync","loadConfig","defineCommand","pc","defineCommand","pc","defineCommand"]}
|