@codeledger/cli 0.2.1 → 0.5.1

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 (137) 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 +155 -19
  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/checkpoint.d.ts +26 -0
  12. package/dist/commands/checkpoint.d.ts.map +1 -0
  13. package/dist/commands/checkpoint.js +382 -0
  14. package/dist/commands/checkpoint.js.map +1 -0
  15. package/dist/commands/cowork-snapshot.d.ts.map +1 -1
  16. package/dist/commands/cowork-snapshot.js +3 -2
  17. package/dist/commands/cowork-snapshot.js.map +1 -1
  18. package/dist/commands/doctor.d.ts +9 -0
  19. package/dist/commands/doctor.d.ts.map +1 -0
  20. package/dist/commands/doctor.js +169 -0
  21. package/dist/commands/doctor.js.map +1 -0
  22. package/dist/commands/init.d.ts.map +1 -1
  23. package/dist/commands/init.js +46 -12
  24. package/dist/commands/init.js.map +1 -1
  25. package/dist/commands/intent.d.ts +37 -0
  26. package/dist/commands/intent.d.ts.map +1 -0
  27. package/dist/commands/intent.js +408 -0
  28. package/dist/commands/intent.js.map +1 -0
  29. package/dist/commands/manifest.d.ts +8 -0
  30. package/dist/commands/manifest.d.ts.map +1 -0
  31. package/dist/commands/manifest.js +144 -0
  32. package/dist/commands/manifest.js.map +1 -0
  33. package/dist/commands/policy.d.ts +8 -0
  34. package/dist/commands/policy.d.ts.map +1 -0
  35. package/dist/commands/policy.js +27 -0
  36. package/dist/commands/policy.js.map +1 -0
  37. package/dist/commands/refine.d.ts.map +1 -1
  38. package/dist/commands/refine.js +16 -0
  39. package/dist/commands/refine.js.map +1 -1
  40. package/dist/commands/review-coverage.d.ts +12 -0
  41. package/dist/commands/review-coverage.d.ts.map +1 -0
  42. package/dist/commands/review-coverage.js +142 -0
  43. package/dist/commands/review-coverage.js.map +1 -0
  44. package/dist/commands/review-gate.d.ts +12 -0
  45. package/dist/commands/review-gate.d.ts.map +1 -0
  46. package/dist/commands/review-gate.js +130 -0
  47. package/dist/commands/review-gate.js.map +1 -0
  48. package/dist/commands/session-cleanup.js +1 -0
  49. package/dist/commands/session-cleanup.js.map +1 -1
  50. package/dist/commands/session-progress.d.ts.map +1 -1
  51. package/dist/commands/session-progress.js +29 -1
  52. package/dist/commands/session-progress.js.map +1 -1
  53. package/dist/commands/session-summary.d.ts.map +1 -1
  54. package/dist/commands/session-summary.js +620 -37
  55. package/dist/commands/session-summary.js.map +1 -1
  56. package/dist/commands/setup-ci.d.ts +9 -0
  57. package/dist/commands/setup-ci.d.ts.map +1 -0
  58. package/dist/commands/setup-ci.js +139 -0
  59. package/dist/commands/setup-ci.js.map +1 -0
  60. package/dist/commands/shared-summary.d.ts +15 -0
  61. package/dist/commands/shared-summary.d.ts.map +1 -0
  62. package/dist/commands/shared-summary.js +194 -0
  63. package/dist/commands/shared-summary.js.map +1 -0
  64. package/dist/commands/sign-manifest.d.ts +8 -0
  65. package/dist/commands/sign-manifest.d.ts.map +1 -0
  66. package/dist/commands/sign-manifest.js +58 -0
  67. package/dist/commands/sign-manifest.js.map +1 -0
  68. package/dist/commands/verify.d.ts +13 -0
  69. package/dist/commands/verify.d.ts.map +1 -0
  70. package/dist/commands/verify.js +288 -0
  71. package/dist/commands/verify.js.map +1 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +153 -2
  74. package/dist/index.js.map +1 -1
  75. package/dist/integrations/github-actions.d.ts +17 -0
  76. package/dist/integrations/github-actions.d.ts.map +1 -0
  77. package/dist/integrations/github-actions.js +64 -0
  78. package/dist/integrations/github-actions.js.map +1 -0
  79. package/dist/manifest/build.d.ts +19 -0
  80. package/dist/manifest/build.d.ts.map +1 -0
  81. package/dist/manifest/build.js +82 -0
  82. package/dist/manifest/build.js.map +1 -0
  83. package/dist/manifest/schema.d.ts +2 -0
  84. package/dist/manifest/schema.d.ts.map +1 -0
  85. package/dist/manifest/schema.js +2 -0
  86. package/dist/manifest/schema.js.map +1 -0
  87. package/dist/manifest/write.d.ts +13 -0
  88. package/dist/manifest/write.d.ts.map +1 -0
  89. package/dist/manifest/write.js +69 -0
  90. package/dist/manifest/write.js.map +1 -0
  91. package/dist/policy/load.d.ts +21 -0
  92. package/dist/policy/load.d.ts.map +1 -0
  93. package/dist/policy/load.js +63 -0
  94. package/dist/policy/load.js.map +1 -0
  95. package/dist/policy/resolve.d.ts +18 -0
  96. package/dist/policy/resolve.d.ts.map +1 -0
  97. package/dist/policy/resolve.js +86 -0
  98. package/dist/policy/resolve.js.map +1 -0
  99. package/dist/policy/schema.d.ts +22 -0
  100. package/dist/policy/schema.d.ts.map +1 -0
  101. package/dist/policy/schema.js +82 -0
  102. package/dist/policy/schema.js.map +1 -0
  103. package/dist/session-paths.d.ts +8 -0
  104. package/dist/session-paths.d.ts.map +1 -1
  105. package/dist/session-paths.js +16 -0
  106. package/dist/session-paths.js.map +1 -1
  107. package/dist/signing/canonicalize.d.ts +17 -0
  108. package/dist/signing/canonicalize.d.ts.map +1 -0
  109. package/dist/signing/canonicalize.js +50 -0
  110. package/dist/signing/canonicalize.js.map +1 -0
  111. package/dist/signing/hmac.d.ts +8 -0
  112. package/dist/signing/hmac.d.ts.map +1 -0
  113. package/dist/signing/hmac.js +16 -0
  114. package/dist/signing/hmac.js.map +1 -0
  115. package/dist/signing/signer.d.ts +16 -0
  116. package/dist/signing/signer.d.ts.map +1 -0
  117. package/dist/signing/signer.js +2 -0
  118. package/dist/signing/signer.js.map +1 -0
  119. package/dist/templates/claude-md.d.ts.map +1 -1
  120. package/dist/templates/claude-md.js +9 -2
  121. package/dist/templates/claude-md.js.map +1 -1
  122. package/dist/templates/config.d.ts.map +1 -1
  123. package/dist/templates/config.js +48 -10
  124. package/dist/templates/config.js.map +1 -1
  125. package/dist/verify/evaluate.d.ts +10 -0
  126. package/dist/verify/evaluate.d.ts.map +1 -0
  127. package/dist/verify/evaluate.js +117 -0
  128. package/dist/verify/evaluate.js.map +1 -0
  129. package/dist/verify/policy-snapshot.d.ts +7 -0
  130. package/dist/verify/policy-snapshot.d.ts.map +1 -0
  131. package/dist/verify/policy-snapshot.js +36 -0
  132. package/dist/verify/policy-snapshot.js.map +1 -0
  133. package/dist/verify/report.d.ts +11 -0
  134. package/dist/verify/report.d.ts.map +1 -0
  135. package/dist/verify/report.js +64 -0
  136. package/dist/verify/report.js.map +1 -0
  137. package/package.json +10 -10
@@ -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":";AAyBA,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":";AAoCA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBhE"}
package/dist/index.js CHANGED
@@ -17,6 +17,17 @@ import { runCoworkStart } from './commands/cowork-start.js';
17
17
  import { runCoworkRefresh } from './commands/cowork-refresh.js';
18
18
  import { runCoworkSnapshot } from './commands/cowork-snapshot.js';
19
19
  import { runCoworkStop } from './commands/cowork-stop.js';
20
+ import { runDoctor } from './commands/doctor.js';
21
+ import { runCheckpoint } from './commands/checkpoint.js';
22
+ import { runSharedSummary } from './commands/shared-summary.js';
23
+ import { runIntent } from './commands/intent.js';
24
+ import { runManifest } from './commands/manifest.js';
25
+ import { runSignManifest } from './commands/sign-manifest.js';
26
+ import { runPolicy } from './commands/policy.js';
27
+ import { runVerify } from './commands/verify.js';
28
+ import { runSetupCi } from './commands/setup-ci.js';
29
+ import { runReviewCoverage } from './commands/review-coverage.js';
30
+ import { runReviewGate } from './commands/review-gate.js';
20
31
  import { CLI_VERSION } from './version.js';
21
32
  const args = process.argv.slice(2);
22
33
  const command = args[0];
@@ -27,7 +38,7 @@ export function parseArgs(argv) {
27
38
  if (arg.startsWith('--')) {
28
39
  const key = arg.slice(2);
29
40
  const next = argv[i + 1];
30
- if (next && !next.startsWith('--')) {
41
+ if (next !== undefined && !next.startsWith('--')) {
31
42
  result[key] = next;
32
43
  i++;
33
44
  }
@@ -38,10 +49,47 @@ export function parseArgs(argv) {
38
49
  }
39
50
  return result;
40
51
  }
52
+ // Known flags per command for unknown flag warnings (Fix 2.3)
53
+ const KNOWN_FLAGS = {
54
+ activate: new Set(['task', 'scope', 'branch-aware', 'continue', 'near-misses', 'blast-radius', 'expand', 'layer-order', 'explain', 'budget', 'max-files', 'session', 'quiet', 'stale-after', 'mode', 'coverage-threshold']),
55
+ bundle: new Set(['task', 'json', 'scope', 'near-misses', 'blast-radius', 'explain', 'expand', 'layer-order', 'budget', 'max-files']),
56
+ refine: new Set(['learned', 'drop', 'add-keywords', 'budget', 'max-files', 'session']),
57
+ 'session-summary': new Set(['session', 'quiet', 'final']),
58
+ 'session-progress': new Set(['session', 'quiet']),
59
+ checkpoint: new Set(['session', 'quiet', 'id']),
60
+ intent: new Set(['objective', 'deliverable', 'scope-in', 'scope-out', 'constraint', 'accept', 'risk', 'paths', 'session', 'as-baseline']),
61
+ manifest: new Set(['task', 'out', 'artifacts-dir']),
62
+ 'sign-manifest': new Set(['in', 'out']),
63
+ policy: new Set(['print', 'policy-root']),
64
+ 'setup-ci': new Set(['mode', 'output']),
65
+ verify: new Set(['task', 'policy-root', 'artifacts-dir', 'coverage-attestation']),
66
+ init: new Set(['force']),
67
+ 'review-coverage': new Set(['session']),
68
+ 'review-gate': new Set(['session']),
69
+ };
70
+ function warnUnknownFlags(command, flags) {
71
+ const known = KNOWN_FLAGS[command];
72
+ if (!known)
73
+ return;
74
+ for (const key of Object.keys(flags)) {
75
+ if (key === '_sub')
76
+ continue; // internal
77
+ if (!known.has(key)) {
78
+ // Check for close matches (common typos: plural/singular)
79
+ let hint = '';
80
+ const singular = key.endsWith('s') ? key.slice(0, -1) : key + 's';
81
+ if (known.has(singular)) {
82
+ hint = ` Did you mean "--${singular}"?`;
83
+ }
84
+ console.error(`Warning: Unknown flag "--${key}" ignored.${hint}`);
85
+ }
86
+ }
87
+ }
41
88
  async function main() {
42
89
  switch (command) {
43
90
  case 'init': {
44
91
  const initFlags = parseArgs(args.slice(1));
92
+ warnUnknownFlags('init', initFlags);
45
93
  await runInit(process.cwd(), initFlags);
46
94
  break;
47
95
  }
@@ -50,11 +98,13 @@ async function main() {
50
98
  break;
51
99
  case 'bundle': {
52
100
  const flags = parseArgs(args.slice(1));
101
+ warnUnknownFlags('bundle', flags);
53
102
  await runBundle(process.cwd(), flags);
54
103
  break;
55
104
  }
56
105
  case 'activate': {
57
106
  const activateFlags = parseArgs(args.slice(1));
107
+ warnUnknownFlags('activate', activateFlags);
58
108
  await runActivate(process.cwd(), activateFlags);
59
109
  break;
60
110
  }
@@ -70,11 +120,13 @@ async function main() {
70
120
  }
71
121
  case 'session-summary': {
72
122
  const summaryFlags = parseArgs(args.slice(1));
123
+ warnUnknownFlags('session-summary', summaryFlags);
73
124
  await runSessionSummary(process.cwd(), summaryFlags);
74
125
  break;
75
126
  }
76
127
  case 'session-progress': {
77
128
  const progressFlags = parseArgs(args.slice(1));
129
+ warnUnknownFlags('session-progress', progressFlags);
78
130
  await runSessionProgress(process.cwd(), progressFlags);
79
131
  break;
80
132
  }
@@ -95,6 +147,7 @@ async function main() {
95
147
  }
96
148
  case 'refine': {
97
149
  const refineFlags = parseArgs(args.slice(1));
150
+ warnUnknownFlags('refine', refineFlags);
98
151
  await runRefine(process.cwd(), refineFlags);
99
152
  break;
100
153
  }
@@ -126,6 +179,76 @@ async function main() {
126
179
  await runCoworkStop(process.cwd(), coworkStopFlags);
127
180
  break;
128
181
  }
182
+ case 'doctor':
183
+ await runDoctor(process.cwd());
184
+ break;
185
+ case 'checkpoint': {
186
+ const checkpointFlags = parseArgs(args.slice(2));
187
+ // First positional arg after 'checkpoint' is the subcommand
188
+ checkpointFlags['_sub'] = args[1] ?? 'create';
189
+ // Capture positional checkpoint ID: `checkpoint restore cp-abc123`
190
+ if (args[2] && !args[2].startsWith('--')) {
191
+ checkpointFlags['id'] = args[2];
192
+ }
193
+ warnUnknownFlags('checkpoint', checkpointFlags);
194
+ await runCheckpoint(process.cwd(), checkpointFlags);
195
+ break;
196
+ }
197
+ case 'shared-summary': {
198
+ const sharedSummaryFlags = parseArgs(args.slice(1));
199
+ await runSharedSummary(process.cwd(), sharedSummaryFlags);
200
+ break;
201
+ }
202
+ case 'manifest': {
203
+ const manifestFlags = parseArgs(args.slice(1));
204
+ warnUnknownFlags('manifest', manifestFlags);
205
+ await runManifest(process.cwd(), manifestFlags);
206
+ break;
207
+ }
208
+ case 'sign-manifest': {
209
+ const signFlags = parseArgs(args.slice(1));
210
+ warnUnknownFlags('sign-manifest', signFlags);
211
+ await runSignManifest(process.cwd(), signFlags);
212
+ break;
213
+ }
214
+ case 'policy': {
215
+ const policyFlags = parseArgs(args.slice(1));
216
+ warnUnknownFlags('policy', policyFlags);
217
+ await runPolicy(process.cwd(), policyFlags);
218
+ break;
219
+ }
220
+ case 'verify': {
221
+ const verifyFlags = parseArgs(args.slice(1));
222
+ warnUnknownFlags('verify', verifyFlags);
223
+ await runVerify(process.cwd(), verifyFlags);
224
+ break;
225
+ }
226
+ case 'setup-ci': {
227
+ const setupCiFlags = parseArgs(args.slice(1));
228
+ warnUnknownFlags('setup-ci', setupCiFlags);
229
+ await runSetupCi(process.cwd(), setupCiFlags);
230
+ break;
231
+ }
232
+ case 'intent': {
233
+ const intentFlags = parseArgs(args.slice(2));
234
+ // First positional arg after 'intent' is the subcommand
235
+ intentFlags['_sub'] = args[1] ?? 'show';
236
+ warnUnknownFlags('intent', intentFlags);
237
+ await runIntent(process.cwd(), intentFlags);
238
+ break;
239
+ }
240
+ case 'review-coverage': {
241
+ const rcFlags = parseArgs(args.slice(1));
242
+ warnUnknownFlags('review-coverage', rcFlags);
243
+ await runReviewCoverage(process.cwd(), rcFlags);
244
+ break;
245
+ }
246
+ case 'review-gate': {
247
+ const rgFlags = parseArgs(args.slice(1));
248
+ warnUnknownFlags('review-gate', rgFlags);
249
+ await runReviewGate(process.cwd(), rgFlags);
250
+ break;
251
+ }
129
252
  case 'version':
130
253
  case '--version':
131
254
  case '-v':
@@ -158,7 +281,7 @@ Commands:
158
281
  activate [--task ".."] Scan-if-stale + bundle + write active-bundle.md
159
282
  [--scope "p1,p2"] [--branch-aware] [--continue]
160
283
  [--near-misses] [--blast-radius] [--expand] [--layer-order]
161
- [--explain]
284
+ [--explain] [--mode edit|review] [--coverage-threshold 0.90]
162
285
  Without --task: scan-only (warms index, no bundle)
163
286
  refine --learned "..." Re-score bundle mid-session with new context
164
287
  [--drop "f1,f2"] [--add-keywords "k1,k2"]
@@ -166,11 +289,39 @@ Commands:
166
289
  compare --scenario A/B comparison: with vs without CodeLedger context
167
290
  session-progress Write progress snapshot to .codeledger/session-progress.md
168
291
  session-summary Show session-end value recap (bundle recall, token savings)
292
+ [--final] Show per-task breakdown for multi-task sessions
169
293
  session-init Initialize a new session (returns session ID)
170
294
  session-cleanup Clean up a session's state files and registry entry
171
295
  sessions List active sessions and file overlaps
172
296
  share [--format ..] Generate shareable result snippet (twitter|linkedin|markdown)
173
297
  clean Remove orphaned worktrees from previous crashed runs
298
+ doctor Integration health check (config, hooks, index, ledger)
299
+ checkpoint [create|restore|list]
300
+ Save/restore incremental session checkpoints
301
+ [--session <id>] [--id <checkpoint-id>]
302
+ shared-summary Cross-session summary (all active agents, overlaps, hotspots)
303
+ [--all] (include stopped sessions)
304
+ manifest --task "..." Generate deterministic context manifest (evidence payload)
305
+ [--out <path>] [--artifacts-dir <dir>]
306
+ sign-manifest Sign a manifest with HMAC-SHA256 (tamper evidence)
307
+ --in <manifest.json> --out <signed.json>
308
+ policy --print Show resolved policy for current repo
309
+ [--policy-root <dir>]
310
+ verify --task "..." CI enforcement: evaluate policy, emit artifacts, return exit code
311
+ [--policy-root <dir>] [--artifacts-dir <dir>]
312
+ setup-ci Generate GitHub Actions workflow + policy for CI integration
313
+ [--mode observe|warn|block] [--output <dir>]
314
+ intent [init|show|set|ack]
315
+ Intent governance (deterministic drift detection)
316
+ init: --objective "..." [--constraint "..."] [--scope-in "..."]
317
+ set: --objective|--constraint|--scope-in|--scope-out "..."
318
+ ack: [--as-baseline] acknowledge intent drift
319
+
320
+ Review Coverage (Sentinel):
321
+ review-coverage Check current review coverage mid-session
322
+ [--session <id>]
323
+ review-gate Gatekeeper check (called by hook, not manually)
324
+ [--session <id>]
174
325
 
175
326
  Cowork (Knowledge Mode):
176
327
  cowork-start Scan workspace + generate context bundle for Cowork
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { VerifyReportV1 } from '@codeledger/types';
2
+ /**
3
+ * Detect if running inside GitHub Actions.
4
+ */
5
+ export declare function isGitHubActions(): boolean;
6
+ /**
7
+ * Emit GitHub Actions annotations for violations.
8
+ *
9
+ * - DENY_PATH_MATCH → ::error file=<path>,line=1:: (annotates the file)
10
+ * - All other codes → ::error:: (no file reference, aggregate metric)
11
+ */
12
+ export declare function emitAnnotations(report: VerifyReportV1): void;
13
+ /**
14
+ * Write a step summary to $GITHUB_STEP_SUMMARY as markdown.
15
+ */
16
+ export declare function writeStepSummary(report: VerifyReportV1, _summaryText: string): void;
17
+ //# sourceMappingURL=github-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-actions.d.ts","sourceRoot":"","sources":["../../src/integrations/github-actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAQ5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CA0CnF"}