@codeledger/cli 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/artifacts/summary.d.ts +6 -0
  2. package/dist/artifacts/summary.d.ts.map +1 -0
  3. package/dist/artifacts/summary.js +49 -0
  4. package/dist/artifacts/summary.js.map +1 -0
  5. package/dist/commands/activate.d.ts.map +1 -1
  6. package/dist/commands/activate.js +64 -23
  7. package/dist/commands/activate.js.map +1 -1
  8. package/dist/commands/bundle.d.ts.map +1 -1
  9. package/dist/commands/bundle.js +28 -5
  10. package/dist/commands/bundle.js.map +1 -1
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +10 -12
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/intent.d.ts.map +1 -1
  15. package/dist/commands/intent.js +17 -2
  16. package/dist/commands/intent.js.map +1 -1
  17. package/dist/commands/manifest.d.ts +8 -0
  18. package/dist/commands/manifest.d.ts.map +1 -0
  19. package/dist/commands/manifest.js +144 -0
  20. package/dist/commands/manifest.js.map +1 -0
  21. package/dist/commands/policy.d.ts +8 -0
  22. package/dist/commands/policy.d.ts.map +1 -0
  23. package/dist/commands/policy.js +27 -0
  24. package/dist/commands/policy.js.map +1 -0
  25. package/dist/commands/progress-check.d.ts +14 -0
  26. package/dist/commands/progress-check.d.ts.map +1 -0
  27. package/dist/commands/progress-check.js +153 -0
  28. package/dist/commands/progress-check.js.map +1 -0
  29. package/dist/commands/review-coverage.d.ts +12 -0
  30. package/dist/commands/review-coverage.d.ts.map +1 -0
  31. package/dist/commands/review-coverage.js +142 -0
  32. package/dist/commands/review-coverage.js.map +1 -0
  33. package/dist/commands/review-gate.d.ts +12 -0
  34. package/dist/commands/review-gate.d.ts.map +1 -0
  35. package/dist/commands/review-gate.js +130 -0
  36. package/dist/commands/review-gate.js.map +1 -0
  37. package/dist/commands/session-summary.d.ts.map +1 -1
  38. package/dist/commands/session-summary.js +39 -5
  39. package/dist/commands/session-summary.js.map +1 -1
  40. package/dist/commands/setup-ci.d.ts +9 -0
  41. package/dist/commands/setup-ci.d.ts.map +1 -0
  42. package/dist/commands/setup-ci.js +139 -0
  43. package/dist/commands/setup-ci.js.map +1 -0
  44. package/dist/commands/sign-manifest.d.ts +8 -0
  45. package/dist/commands/sign-manifest.d.ts.map +1 -0
  46. package/dist/commands/sign-manifest.js +58 -0
  47. package/dist/commands/sign-manifest.js.map +1 -0
  48. package/dist/commands/vendor.d.ts +20 -0
  49. package/dist/commands/vendor.d.ts.map +1 -0
  50. package/dist/commands/vendor.js +157 -0
  51. package/dist/commands/vendor.js.map +1 -0
  52. package/dist/commands/verify.d.ts +13 -0
  53. package/dist/commands/verify.d.ts.map +1 -0
  54. package/dist/commands/verify.js +288 -0
  55. package/dist/commands/verify.js.map +1 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +98 -2
  58. package/dist/index.js.map +1 -1
  59. package/dist/integrations/github-actions.d.ts +17 -0
  60. package/dist/integrations/github-actions.d.ts.map +1 -0
  61. package/dist/integrations/github-actions.js +64 -0
  62. package/dist/integrations/github-actions.js.map +1 -0
  63. package/dist/manifest/build.d.ts +19 -0
  64. package/dist/manifest/build.d.ts.map +1 -0
  65. package/dist/manifest/build.js +82 -0
  66. package/dist/manifest/build.js.map +1 -0
  67. package/dist/manifest/schema.d.ts +2 -0
  68. package/dist/manifest/schema.d.ts.map +1 -0
  69. package/dist/manifest/schema.js +2 -0
  70. package/dist/manifest/schema.js.map +1 -0
  71. package/dist/manifest/write.d.ts +13 -0
  72. package/dist/manifest/write.d.ts.map +1 -0
  73. package/dist/manifest/write.js +69 -0
  74. package/dist/manifest/write.js.map +1 -0
  75. package/dist/policy/load.d.ts +21 -0
  76. package/dist/policy/load.d.ts.map +1 -0
  77. package/dist/policy/load.js +63 -0
  78. package/dist/policy/load.js.map +1 -0
  79. package/dist/policy/resolve.d.ts +18 -0
  80. package/dist/policy/resolve.d.ts.map +1 -0
  81. package/dist/policy/resolve.js +86 -0
  82. package/dist/policy/resolve.js.map +1 -0
  83. package/dist/policy/schema.d.ts +22 -0
  84. package/dist/policy/schema.d.ts.map +1 -0
  85. package/dist/policy/schema.js +82 -0
  86. package/dist/policy/schema.js.map +1 -0
  87. package/dist/session-paths.d.ts +6 -0
  88. package/dist/session-paths.d.ts.map +1 -1
  89. package/dist/session-paths.js +12 -0
  90. package/dist/session-paths.js.map +1 -1
  91. package/dist/signing/canonicalize.d.ts +17 -0
  92. package/dist/signing/canonicalize.d.ts.map +1 -0
  93. package/dist/signing/canonicalize.js +50 -0
  94. package/dist/signing/canonicalize.js.map +1 -0
  95. package/dist/signing/hmac.d.ts +8 -0
  96. package/dist/signing/hmac.d.ts.map +1 -0
  97. package/dist/signing/hmac.js +16 -0
  98. package/dist/signing/hmac.js.map +1 -0
  99. package/dist/signing/signer.d.ts +16 -0
  100. package/dist/signing/signer.d.ts.map +1 -0
  101. package/dist/signing/signer.js +2 -0
  102. package/dist/signing/signer.js.map +1 -0
  103. package/dist/templates/claude-md.d.ts.map +1 -1
  104. package/dist/templates/claude-md.js +61 -3
  105. package/dist/templates/claude-md.js.map +1 -1
  106. package/dist/templates/config.d.ts.map +1 -1
  107. package/dist/templates/config.js +3 -0
  108. package/dist/templates/config.js.map +1 -1
  109. package/dist/templates/hooks.d.ts.map +1 -1
  110. package/dist/templates/hooks.js +35 -2
  111. package/dist/templates/hooks.js.map +1 -1
  112. package/dist/verify/evaluate.d.ts +10 -0
  113. package/dist/verify/evaluate.d.ts.map +1 -0
  114. package/dist/verify/evaluate.js +117 -0
  115. package/dist/verify/evaluate.js.map +1 -0
  116. package/dist/verify/policy-snapshot.d.ts +7 -0
  117. package/dist/verify/policy-snapshot.d.ts.map +1 -0
  118. package/dist/verify/policy-snapshot.js +36 -0
  119. package/dist/verify/policy-snapshot.js.map +1 -0
  120. package/dist/verify/report.d.ts +11 -0
  121. package/dist/verify/report.d.ts.map +1 -0
  122. package/dist/verify/report.js +64 -0
  123. package/dist/verify/report.js.map +1 -0
  124. package/package.json +10 -10
@@ -0,0 +1,58 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
2
+ import { dirname } from 'node:path';
3
+ import { canonicalize } from '../signing/canonicalize.js';
4
+ import { createHmacSigner } from '../signing/hmac.js';
5
+ /**
6
+ * `codeledger sign-manifest --in <manifest.json> --out <signed.json>`
7
+ *
8
+ * Sign a context manifest with HMAC-SHA256 using CODELEDGER_SIGNING_SECRET.
9
+ * Signature covers the canonicalized payload only.
10
+ */
11
+ export async function runSignManifest(_cwd, flags) {
12
+ const inPath = flags['in'];
13
+ if (!inPath) {
14
+ console.error('--in is required. Usage: codeledger sign-manifest --in <manifest.json> --out <signed.json>');
15
+ process.exit(1);
16
+ }
17
+ if (!existsSync(inPath)) {
18
+ console.error(`Input file not found: ${inPath}`);
19
+ process.exit(2);
20
+ }
21
+ const outPath = flags['out'];
22
+ if (!outPath) {
23
+ console.error('--out is required. Usage: codeledger sign-manifest --in <manifest.json> --out <signed.json>');
24
+ process.exit(1);
25
+ }
26
+ const secret = process.env['CODELEDGER_SIGNING_SECRET'];
27
+ if (!secret) {
28
+ console.error('CODELEDGER_SIGNING_SECRET environment variable is not set. Cannot sign manifest.');
29
+ process.exit(2);
30
+ }
31
+ // Read manifest payload
32
+ let payload;
33
+ try {
34
+ payload = JSON.parse(readFileSync(inPath, 'utf-8'));
35
+ }
36
+ catch {
37
+ console.error(`Failed to parse manifest file: ${inPath}`);
38
+ process.exit(2);
39
+ }
40
+ // Canonicalize and sign
41
+ const canonical = canonicalize(payload);
42
+ const signer = createHmacSigner(secret);
43
+ const signatureValue = await signer.sign(Buffer.from(canonical, 'utf-8'));
44
+ // Build signed wrapper
45
+ const signed = {
46
+ schema_version: 'mustang/signed-manifest/v1',
47
+ payload,
48
+ signature: {
49
+ alg: signer.alg,
50
+ value: signatureValue,
51
+ key_id: signer.keyId,
52
+ },
53
+ };
54
+ mkdirSync(dirname(outPath), { recursive: true });
55
+ writeFileSync(outPath, JSON.stringify(signed, null, 2) + '\n');
56
+ console.log(`Signed manifest written to ${outPath}`);
57
+ }
58
+ //# sourceMappingURL=sign-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign-manifest.js","sourceRoot":"","sources":["../../src/commands/sign-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,KAA6B;IAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;QAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAC;QAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,IAAI,OAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAsB,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1E,uBAAuB;IACvB,MAAM,MAAM,GAAqB;QAC/B,cAAc,EAAE,4BAA4B;QAC5C,OAAO;QACP,SAAS,EAAE;YACT,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM,CAAC,KAAK;SACrB;KACF,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `codeledger vendor [--target <dir>]`
3
+ *
4
+ * Copies the standalone CLI bundle into a target repo so that CodeLedger
5
+ * works in cloud/web environments (e.g., Claude Code browser sessions)
6
+ * without needing npm install.
7
+ *
8
+ * What it does:
9
+ * 1. Builds the standalone CLI if not already built
10
+ * 2. Copies it to <target>/.codeledger/bin/codeledger-standalone.cjs
11
+ * 3. Writes a wrapper script at <target>/.codeledger/bin/codeledger
12
+ * 4. Updates the target's .claude/hooks.json to find the vendored CLI
13
+ * 5. Adds .codeledger/bin/ to .gitignore exceptions so it's committed
14
+ *
15
+ * The vendored CLI is a single ~260KB file with no native dependencies.
16
+ * Benchmark commands (run, compare) require a full install; all other
17
+ * commands work normally.
18
+ */
19
+ export declare function runVendor(cwd: string, flags: Record<string, string>): Promise<void>;
20
+ //# sourceMappingURL=vendor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.d.ts","sourceRoot":"","sources":["../../src/commands/vendor.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
@@ -0,0 +1,157 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, copyFileSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { execSync } from 'node:child_process';
4
+ import { CLI_VERSION } from '../version.js';
5
+ /**
6
+ * `codeledger vendor [--target <dir>]`
7
+ *
8
+ * Copies the standalone CLI bundle into a target repo so that CodeLedger
9
+ * works in cloud/web environments (e.g., Claude Code browser sessions)
10
+ * without needing npm install.
11
+ *
12
+ * What it does:
13
+ * 1. Builds the standalone CLI if not already built
14
+ * 2. Copies it to <target>/.codeledger/bin/codeledger-standalone.cjs
15
+ * 3. Writes a wrapper script at <target>/.codeledger/bin/codeledger
16
+ * 4. Updates the target's .claude/hooks.json to find the vendored CLI
17
+ * 5. Adds .codeledger/bin/ to .gitignore exceptions so it's committed
18
+ *
19
+ * The vendored CLI is a single ~260KB file with no native dependencies.
20
+ * Benchmark commands (run, compare) require a full install; all other
21
+ * commands work normally.
22
+ */
23
+ export async function runVendor(cwd, flags) {
24
+ const target = flags['target'] ? resolve(flags['target']) : cwd;
25
+ console.log(`CodeLedger v${CLI_VERSION} — Vendor standalone CLI\n`);
26
+ // Step 1: Find or build the standalone bundle
27
+ const standalonePath = findStandaloneBuild(cwd);
28
+ if (!standalonePath) {
29
+ console.error('Standalone CLI not found. Build it first:');
30
+ console.error(' node scripts/build-standalone.mjs');
31
+ process.exit(1);
32
+ }
33
+ const standaloneSize = (readFileSync(standalonePath).length / 1024).toFixed(1);
34
+ console.log(` Source: ${standalonePath} (${standaloneSize} KB)`);
35
+ // Step 2: Copy to target
36
+ const targetBinDir = join(target, '.codeledger', 'bin');
37
+ mkdirSync(targetBinDir, { recursive: true });
38
+ const targetBundlePath = join(targetBinDir, 'codeledger-standalone.cjs');
39
+ copyFileSync(standalonePath, targetBundlePath);
40
+ console.log(` Copied to: ${targetBundlePath}`);
41
+ // Step 3: Write a shell wrapper for convenience
42
+ const wrapperPath = join(targetBinDir, 'codeledger');
43
+ writeFileSync(wrapperPath, [
44
+ '#!/usr/bin/env bash',
45
+ '# CodeLedger vendored CLI wrapper — auto-generated by codeledger vendor',
46
+ 'SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"',
47
+ 'exec node "$SCRIPT_DIR/codeledger-standalone.cjs" "$@"',
48
+ '',
49
+ ].join('\n'), { mode: 0o755 });
50
+ console.log(` Wrapper: ${wrapperPath}`);
51
+ // Step 4: Ensure .codeledger/bin/ is NOT gitignored
52
+ // (.codeledger/ is normally in .gitignore, but we need bin/ to be committed)
53
+ ensureBinNotIgnored(target);
54
+ // Step 5: Update hooks if they exist
55
+ updateHooksForVendor(target);
56
+ console.log(`\n Done! The vendored CLI is ready.`);
57
+ console.log(` It will be found by hooks at: .codeledger/bin/codeledger-standalone.cjs`);
58
+ console.log(`\n Next: commit the vendored files so they're available in cloud environments:`);
59
+ console.log(` git add .codeledger/bin/ .gitignore`);
60
+ console.log(` git commit -m "chore: vendor codeledger CLI for cloud environments"`);
61
+ }
62
+ /**
63
+ * Find the standalone build, checking multiple possible locations.
64
+ */
65
+ function findStandaloneBuild(cwd) {
66
+ const candidates = [
67
+ join(cwd, 'packages', 'cli', 'bin', 'codeledger-standalone.cjs'),
68
+ join(cwd, '..', 'codeledger-blackbox', 'packages', 'cli', 'bin', 'codeledger-standalone.cjs'),
69
+ ];
70
+ for (const p of candidates) {
71
+ if (existsSync(p))
72
+ return p;
73
+ }
74
+ // Try to build it if we're in the codeledger-blackbox repo
75
+ const buildScript = join(cwd, 'scripts', 'build-standalone.mjs');
76
+ if (existsSync(buildScript)) {
77
+ console.log(' Building standalone CLI...');
78
+ try {
79
+ execSync('node scripts/build-standalone.mjs', {
80
+ cwd,
81
+ encoding: 'utf-8',
82
+ timeout: 30000,
83
+ stdio: ['pipe', 'pipe', 'pipe'],
84
+ });
85
+ const built = join(cwd, 'packages', 'cli', 'bin', 'codeledger-standalone.cjs');
86
+ if (existsSync(built))
87
+ return built;
88
+ }
89
+ catch {
90
+ // Fall through to error
91
+ }
92
+ }
93
+ return null;
94
+ }
95
+ /**
96
+ * Add a .gitignore exception so .codeledger/bin/ is committed.
97
+ * The pattern is: first ignore .codeledger/, then un-ignore .codeledger/bin/.
98
+ */
99
+ function ensureBinNotIgnored(target) {
100
+ const gitignorePath = join(target, '.gitignore');
101
+ if (!existsSync(gitignorePath))
102
+ return;
103
+ const content = readFileSync(gitignorePath, 'utf-8');
104
+ const lines = content.split('\n');
105
+ // Check if the exception already exists
106
+ if (lines.some((l) => l.trim() === '!.codeledger/bin/')) {
107
+ console.log(` .gitignore: already has !.codeledger/bin/ exception`);
108
+ return;
109
+ }
110
+ // Find the .codeledger/ ignore line and add the exception after it
111
+ const clIdx = lines.findIndex((l) => l.trim() === '.codeledger/');
112
+ if (clIdx !== -1) {
113
+ lines.splice(clIdx + 1, 0, '!.codeledger/bin/');
114
+ writeFileSync(gitignorePath, lines.join('\n'));
115
+ console.log(` .gitignore: added !.codeledger/bin/ exception`);
116
+ }
117
+ else {
118
+ // .codeledger/ isn't in gitignore — just append both lines
119
+ const suffix = content.endsWith('\n') ? '' : '\n';
120
+ writeFileSync(gitignorePath, content + suffix + '.codeledger/\n!.codeledger/bin/\n');
121
+ console.log(` .gitignore: added .codeledger/ and !.codeledger/bin/`);
122
+ }
123
+ }
124
+ /**
125
+ * Update .claude/hooks.json to add the vendored CLI as a resolution fallback.
126
+ * Adds `.codeledger/bin/codeledger-standalone.cjs` as the first check.
127
+ */
128
+ function updateHooksForVendor(target) {
129
+ const hooksPath = join(target, '.claude', 'hooks.json');
130
+ if (!existsSync(hooksPath)) {
131
+ console.log(` Hooks: no .claude/hooks.json found — skipped`);
132
+ return;
133
+ }
134
+ let content = readFileSync(hooksPath, 'utf-8');
135
+ // The resolution preamble sets CL_CMD by checking multiple locations.
136
+ // Add the vendored path as the FIRST check (highest priority).
137
+ const vendorCheck = 'if [ -f ".codeledger/bin/codeledger-standalone.cjs" ]; then CL_CMD="node .codeledger/bin/codeledger-standalone.cjs";';
138
+ if (content.includes('.codeledger/bin/codeledger-standalone.cjs')) {
139
+ console.log(` Hooks: already has vendored CLI fallback`);
140
+ return;
141
+ }
142
+ // Replace the CL_CMD="" initialization to start with the vendor check
143
+ const oldInit = 'CL_CMD=\\"\\"; if command -v codeledger';
144
+ const newInit = `CL_CMD=\\"\\"; ${vendorCheck} elif command -v codeledger`;
145
+ if (content.includes(oldInit)) {
146
+ content = content.replace(new RegExp(escapeRegex(oldInit), 'g'), newInit);
147
+ writeFileSync(hooksPath, content);
148
+ console.log(` Hooks: added vendored CLI as first resolution fallback`);
149
+ }
150
+ else {
151
+ console.log(` Hooks: could not find resolution preamble — update manually`);
152
+ }
153
+ }
154
+ function escapeRegex(s) {
155
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
156
+ }
157
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../src/commands/vendor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `codeledger verify --task "..." [--policy-root <dir>] [--artifacts-dir <dir>]`
3
+ *
4
+ * CI enforcement bridge: build bundle → compute confidence/drift → resolve policy
5
+ * → evaluate violations → emit report + manifest + policy snapshot.
6
+ *
7
+ * Exit codes:
8
+ * 0 = pass (or observe/warn mode with violations)
9
+ * 1 = policy fail (block mode + violations)
10
+ * 2 = internal error
11
+ */
12
+ export declare function runVerify(cwd: string, flags: Record<string, string>): Promise<void>;
13
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AA8BA;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CA6Mf"}
@@ -0,0 +1,288 @@
1
+ import { readFileSync, existsSync, writeFileSync, mkdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { execSync } from 'node:child_process';
4
+ import { buildBundleViaEngine } from '@codeledger/core-engine';
5
+ import { buildRepoIndex } from '@codeledger/repo';
6
+ import { intentHash as computeIntentHash, intentNorm as norm, intentNormArr as normArr, } from '@codeledger/selector';
7
+ import { buildManifest } from '../manifest/build.js';
8
+ import { writeManifest } from '../manifest/write.js';
9
+ import { resolvePolicy } from '../policy/resolve.js';
10
+ import { evaluatePolicy } from '../verify/evaluate.js';
11
+ import { buildVerifyReport } from '../verify/report.js';
12
+ import { writePolicySnapshot } from '../verify/policy-snapshot.js';
13
+ import { canonicalize } from '../signing/canonicalize.js';
14
+ import { createHmacSigner } from '../signing/hmac.js';
15
+ import { buildChecksSummary } from '../artifacts/summary.js';
16
+ import { isGitHubActions, emitAnnotations, writeStepSummary } from '../integrations/github-actions.js';
17
+ import { CLI_VERSION } from '../version.js';
18
+ /**
19
+ * `codeledger verify --task "..." [--policy-root <dir>] [--artifacts-dir <dir>]`
20
+ *
21
+ * CI enforcement bridge: build bundle → compute confidence/drift → resolve policy
22
+ * → evaluate violations → emit report + manifest + policy snapshot.
23
+ *
24
+ * Exit codes:
25
+ * 0 = pass (or observe/warn mode with violations)
26
+ * 1 = policy fail (block mode + violations)
27
+ * 2 = internal error
28
+ */
29
+ export async function runVerify(cwd, flags) {
30
+ const task = flags['task'];
31
+ if (!task) {
32
+ console.error('--task is required. Usage: codeledger verify --task "your task description" [--policy-root <dir>]');
33
+ process.exit(2);
34
+ }
35
+ // Validate git repo
36
+ if (!existsSync(join(cwd, '.git'))) {
37
+ console.error('Not a git repository. codeledger verify requires a git repo.');
38
+ process.exit(2);
39
+ }
40
+ // Load config
41
+ const configPath = join(cwd, '.codeledger', 'config.json');
42
+ if (!existsSync(configPath)) {
43
+ console.error('No .codeledger/config.json found. Run "codeledger init" first.');
44
+ process.exit(2);
45
+ }
46
+ let config;
47
+ try {
48
+ config = JSON.parse(readFileSync(configPath, 'utf-8'));
49
+ }
50
+ catch {
51
+ console.error('Failed to parse .codeledger/config.json. Check for syntax errors.');
52
+ process.exit(2);
53
+ }
54
+ // Resolve policy (may throw on malformed JSON → exit 2)
55
+ let policy;
56
+ try {
57
+ policy = resolvePolicy({
58
+ cwd,
59
+ policyRoot: flags['policy-root'],
60
+ });
61
+ }
62
+ catch (err) {
63
+ console.error(err.message);
64
+ process.exit(2);
65
+ }
66
+ // Ensure repo index
67
+ const indexPath = join(cwd, config.workspace.cache_dir, 'repo-index.json');
68
+ if (!existsSync(indexPath)) {
69
+ buildRepoIndex({
70
+ root: cwd,
71
+ repoConfig: config.repo,
72
+ outputPath: indexPath,
73
+ log: () => { },
74
+ });
75
+ }
76
+ let repoIndex;
77
+ try {
78
+ repoIndex = JSON.parse(readFileSync(indexPath, 'utf-8'));
79
+ }
80
+ catch {
81
+ console.error('Failed to parse repo index. Try running "codeledger scan" to rebuild it.');
82
+ process.exit(2);
83
+ }
84
+ // Build bundle using existing engine
85
+ let bundle;
86
+ try {
87
+ bundle = await buildBundleViaEngine({
88
+ taskText: task,
89
+ repoIndex,
90
+ selectorConfig: config.selector,
91
+ budget: config.selector.default_budget,
92
+ explain: false,
93
+ indexPath,
94
+ });
95
+ }
96
+ catch (err) {
97
+ console.error(`Bundle engine error: ${err.message}`);
98
+ process.exit(2);
99
+ }
100
+ // Compute intent hash
101
+ const contract = {
102
+ version: 1,
103
+ objective: task,
104
+ deliverable: null,
105
+ scope_in: [],
106
+ scope_out: [],
107
+ constraints: [],
108
+ acceptance_criteria: [],
109
+ risk_flags: [],
110
+ repo_paths_in_scope: [],
111
+ timestamp: '',
112
+ };
113
+ const intentHashValue = computeIntentHash(contract);
114
+ const normalizedIntent = {
115
+ acceptance_criteria: normArr(contract.acceptance_criteria),
116
+ constraints: normArr(contract.constraints),
117
+ deliverable: contract.deliverable ? norm(contract.deliverable) : null,
118
+ objective: norm(contract.objective),
119
+ repo_paths_in_scope: normArr(contract.repo_paths_in_scope),
120
+ risk_flags: normArr(contract.risk_flags),
121
+ scope_in: normArr(contract.scope_in),
122
+ scope_out: normArr(contract.scope_out),
123
+ version: contract.version,
124
+ };
125
+ // Determine artifacts directory
126
+ const commitSha = getCommitSha(cwd);
127
+ const artifactsBase = flags['artifacts-dir'] ?? join(cwd, '.codeledger', 'artifacts');
128
+ const sha = commitSha ?? 'unknown';
129
+ const artifactsDir = join(artifactsBase, sha);
130
+ mkdirSync(artifactsDir, { recursive: true });
131
+ // Compute drift from previous manifest (if exists)
132
+ const driftScore = computeDriftFromBaseline(artifactsBase, intentHashValue);
133
+ // Build manifest (Phase 1 — unchanged, no policy fields)
134
+ const repoName = getRepoName(cwd);
135
+ const manifest = buildManifest({
136
+ bundle,
137
+ repoRoot: cwd,
138
+ repoName,
139
+ commitSha,
140
+ codeledgerVersion: CLI_VERSION,
141
+ intentNormalized: normalizedIntent,
142
+ intentHash: intentHashValue,
143
+ driftScore,
144
+ });
145
+ // Load optional coverage attestation
146
+ let coverageAttestation;
147
+ const coverageAttestationPath = flags['coverage-attestation'];
148
+ if (coverageAttestationPath && existsSync(coverageAttestationPath)) {
149
+ try {
150
+ coverageAttestation = JSON.parse(readFileSync(coverageAttestationPath, 'utf-8'));
151
+ }
152
+ catch {
153
+ console.error(`Warning: Failed to parse coverage attestation at ${coverageAttestationPath}`);
154
+ }
155
+ }
156
+ // Evaluate policy violations
157
+ const violations = evaluatePolicy(manifest, policy, coverageAttestation);
158
+ // Build verify report
159
+ const report = buildVerifyReport({
160
+ manifest,
161
+ policy,
162
+ violations,
163
+ codeledgerVersion: CLI_VERSION,
164
+ });
165
+ // Write all artifacts
166
+ const manifestPath = join(artifactsDir, 'context-manifest.json');
167
+ writeManifest(manifest, manifestPath);
168
+ const reportPath = join(artifactsDir, 'verify-report.json');
169
+ writeFileSync(reportPath, JSON.stringify(report, null, 2) + '\n');
170
+ const snapshotPath = join(artifactsDir, 'policy-snapshot.json');
171
+ writePolicySnapshot(policy, snapshotPath);
172
+ // Optionally sign manifest if secret is present
173
+ const secret = process.env['CODELEDGER_SIGNING_SECRET'];
174
+ if (secret) {
175
+ const signedPath = join(artifactsDir, 'signed-context-manifest.json');
176
+ const canonical = canonicalize(manifest);
177
+ const signer = createHmacSigner(secret);
178
+ const signatureValue = await signer.sign(Buffer.from(canonical, 'utf-8'));
179
+ const signed = {
180
+ schema_version: 'mustang/signed-manifest/v1',
181
+ payload: manifest,
182
+ signature: {
183
+ alg: signer.alg,
184
+ value: signatureValue,
185
+ key_id: signer.keyId,
186
+ },
187
+ };
188
+ writeFileSync(signedPath, JSON.stringify(signed, null, 2) + '\n');
189
+ }
190
+ // Write checks-summary.txt (Phase 5)
191
+ const summaryText = buildChecksSummary(report);
192
+ writeFileSync(join(artifactsDir, 'checks-summary.txt'), summaryText);
193
+ // GitHub Actions annotations (Phase 5)
194
+ if (isGitHubActions()) {
195
+ if (violations.length > 0) {
196
+ emitAnnotations(report);
197
+ }
198
+ writeStepSummary(report, summaryText);
199
+ }
200
+ // Mode-specific output
201
+ if (policy.mode === 'warn' && violations.length > 0) {
202
+ for (const v of violations) {
203
+ console.error(`Warning: [${v.code}] ${v.message}`);
204
+ }
205
+ }
206
+ // Summary
207
+ const status = report.decision.passed ? 'PASS' : 'FAIL';
208
+ console.log(`Verify: ${status} (${policy.mode} mode, ${violations.length} violation(s))`);
209
+ console.log(`Artifacts: ${artifactsDir}`);
210
+ // Exit code based on mode
211
+ if (!report.decision.passed) {
212
+ process.exit(1);
213
+ }
214
+ }
215
+ function getRepoName(cwd) {
216
+ try {
217
+ const url = execSync('git remote get-url origin', {
218
+ cwd,
219
+ encoding: 'utf-8',
220
+ stdio: ['pipe', 'pipe', 'pipe'],
221
+ }).trim();
222
+ const parts = url.replace(/\.git$/, '').split('/');
223
+ return parts[parts.length - 1] ?? 'unknown';
224
+ }
225
+ catch {
226
+ const parts = cwd.replace(/\/$/, '').split('/');
227
+ return parts[parts.length - 1] ?? 'unknown';
228
+ }
229
+ }
230
+ function getCommitSha(cwd) {
231
+ try {
232
+ return execSync('git rev-parse HEAD', {
233
+ cwd,
234
+ encoding: 'utf-8',
235
+ stdio: ['pipe', 'pipe', 'pipe'],
236
+ }).trim();
237
+ }
238
+ catch {
239
+ return null;
240
+ }
241
+ }
242
+ /**
243
+ * Compute drift from the most recent baseline manifest in the artifacts directory.
244
+ * If no previous manifest exists, drift is 0.0 (first run).
245
+ */
246
+ function computeDriftFromBaseline(artifactsBase, currentIntentHash) {
247
+ if (!existsSync(artifactsBase))
248
+ return 0.0;
249
+ // Walk artifact subdirectories to find the most recent context-manifest.json
250
+ // (by directory name, which is a commit sha)
251
+ try {
252
+ const { readdirSync, statSync } = require('node:fs');
253
+ const entries = readdirSync(artifactsBase);
254
+ let latestManifest = null;
255
+ let latestMtime = 0;
256
+ for (const entry of entries) {
257
+ const manifestPath = join(artifactsBase, entry, 'context-manifest.json');
258
+ if (existsSync(manifestPath)) {
259
+ const mtime = statSync(manifestPath).mtimeMs;
260
+ if (mtime > latestMtime) {
261
+ try {
262
+ const content = readFileSync(manifestPath, 'utf-8');
263
+ const parsed = JSON.parse(content);
264
+ if (parsed.intent?.intent_hash) {
265
+ latestManifest = parsed;
266
+ latestMtime = mtime;
267
+ }
268
+ }
269
+ catch {
270
+ // Skip malformed files
271
+ }
272
+ }
273
+ }
274
+ }
275
+ if (!latestManifest)
276
+ return 0.0;
277
+ if (latestManifest.intent.intent_hash === currentIntentHash)
278
+ return 0.0;
279
+ // Different intent hash — basic drift detection
280
+ // Full drift would require the original TaskContractV1; for CI we use a
281
+ // simple binary: same hash = 0, different hash = a moderate drift signal
282
+ return 0.3;
283
+ }
284
+ catch {
285
+ return 0.0;
286
+ }
287
+ }
288
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA6BA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBhE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAsCA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBhE"}