@stackbilt/cli 0.4.2 → 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 (82) hide show
  1. package/README.md +17 -1
  2. package/dist/__tests__/adf-metrics.test.d.ts +2 -0
  3. package/dist/__tests__/adf-metrics.test.d.ts.map +1 -0
  4. package/dist/__tests__/adf-metrics.test.js +117 -0
  5. package/dist/__tests__/adf-metrics.test.js.map +1 -0
  6. package/dist/__tests__/git-helpers.test.d.ts +2 -0
  7. package/dist/__tests__/git-helpers.test.d.ts.map +1 -0
  8. package/dist/__tests__/git-helpers.test.js +136 -0
  9. package/dist/__tests__/git-helpers.test.js.map +1 -0
  10. package/dist/__tests__/telemetry.test.d.ts +2 -0
  11. package/dist/__tests__/telemetry.test.d.ts.map +1 -0
  12. package/dist/__tests__/telemetry.test.js +119 -0
  13. package/dist/__tests__/telemetry.test.js.map +1 -0
  14. package/dist/commands/adf-bundle.d.ts.map +1 -1
  15. package/dist/commands/adf-bundle.js +5 -15
  16. package/dist/commands/adf-bundle.js.map +1 -1
  17. package/dist/commands/adf-evidence.d.ts.map +1 -1
  18. package/dist/commands/adf-evidence.js +57 -50
  19. package/dist/commands/adf-evidence.js.map +1 -1
  20. package/dist/commands/adf-metrics.d.ts +8 -0
  21. package/dist/commands/adf-metrics.d.ts.map +1 -0
  22. package/dist/commands/adf-metrics.js +242 -0
  23. package/dist/commands/adf-metrics.js.map +1 -0
  24. package/dist/commands/adf-migrate.d.ts +17 -0
  25. package/dist/commands/adf-migrate.d.ts.map +1 -1
  26. package/dist/commands/adf-migrate.js +36 -14
  27. package/dist/commands/adf-migrate.js.map +1 -1
  28. package/dist/commands/adf-sync.d.ts.map +1 -1
  29. package/dist/commands/adf-sync.js +2 -8
  30. package/dist/commands/adf-sync.js.map +1 -1
  31. package/dist/commands/adf.d.ts +5 -0
  32. package/dist/commands/adf.d.ts.map +1 -1
  33. package/dist/commands/adf.js +118 -82
  34. package/dist/commands/adf.js.map +1 -1
  35. package/dist/commands/audit.d.ts.map +1 -1
  36. package/dist/commands/audit.js +19 -87
  37. package/dist/commands/audit.js.map +1 -1
  38. package/dist/commands/bootstrap.d.ts.map +1 -1
  39. package/dist/commands/bootstrap.js +160 -52
  40. package/dist/commands/bootstrap.js.map +1 -1
  41. package/dist/commands/doctor.d.ts.map +1 -1
  42. package/dist/commands/doctor.js +4 -15
  43. package/dist/commands/doctor.js.map +1 -1
  44. package/dist/commands/drift.d.ts.map +1 -1
  45. package/dist/commands/drift.js +2 -8
  46. package/dist/commands/drift.js.map +1 -1
  47. package/dist/commands/hook.d.ts.map +1 -1
  48. package/dist/commands/hook.js +4 -14
  49. package/dist/commands/hook.js.map +1 -1
  50. package/dist/commands/init.d.ts +1 -1
  51. package/dist/commands/init.d.ts.map +1 -1
  52. package/dist/commands/init.js +29 -9
  53. package/dist/commands/init.js.map +1 -1
  54. package/dist/commands/setup.d.ts.map +1 -1
  55. package/dist/commands/setup.js +34 -11
  56. package/dist/commands/setup.js.map +1 -1
  57. package/dist/commands/telemetry.d.ts +8 -0
  58. package/dist/commands/telemetry.d.ts.map +1 -0
  59. package/dist/commands/telemetry.js +184 -0
  60. package/dist/commands/telemetry.js.map +1 -0
  61. package/dist/commands/validate.d.ts.map +1 -1
  62. package/dist/commands/validate.js +11 -97
  63. package/dist/commands/validate.js.map +1 -1
  64. package/dist/commands/why.d.ts.map +1 -1
  65. package/dist/commands/why.js +7 -76
  66. package/dist/commands/why.js.map +1 -1
  67. package/dist/flags.d.ts +20 -0
  68. package/dist/flags.d.ts.map +1 -0
  69. package/dist/flags.js +76 -0
  70. package/dist/flags.js.map +1 -0
  71. package/dist/git-helpers.d.ts +36 -0
  72. package/dist/git-helpers.d.ts.map +1 -0
  73. package/dist/git-helpers.js +146 -0
  74. package/dist/git-helpers.js.map +1 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +94 -54
  77. package/dist/index.js.map +1 -1
  78. package/dist/telemetry.d.ts +29 -0
  79. package/dist/telemetry.d.ts.map +1 -0
  80. package/dist/telemetry.js +88 -0
  81. package/dist/telemetry.js.map +1 -0
  82. package/package.json +8 -8
@@ -35,11 +35,11 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.quickstartCommand = quickstartCommand;
37
37
  exports.whyCommand = whyCommand;
38
- const node_child_process_1 = require("node:child_process");
39
38
  const fs = __importStar(require("node:fs"));
40
39
  const path = __importStar(require("node:path"));
41
40
  const index_1 = require("../index");
42
41
  const git_1 = require("@stackbilt/git");
42
+ const git_helpers_1 = require("../git-helpers");
43
43
  async function quickstartCommand(options) {
44
44
  const snapshot = getSnapshot(options.configPath);
45
45
  if (options.format === 'json') {
@@ -105,7 +105,7 @@ async function whyCommand(options) {
105
105
  return index_1.EXIT_CODE.SUCCESS;
106
106
  }
107
107
  function getSnapshot(configPath) {
108
- const inGitRepo = isGitRepo();
108
+ const inGitRepo = (0, git_helpers_1.isGitRepo)();
109
109
  const hasBaseline = fs.existsSync(path.join(configPath, 'config.json'));
110
110
  if (!inGitRepo) {
111
111
  return {
@@ -117,7 +117,7 @@ function getSnapshot(configPath) {
117
117
  nextAction: 'Run this inside a git repository, then run: charter setup --ci github',
118
118
  };
119
119
  }
120
- const commits = hasCommits() ? getRecentCommits(20) : [];
120
+ const commits = (0, git_helpers_1.hasCommits)() ? getRecentCommits(20) : [];
121
121
  const parsed = (0, git_1.parseAllTrailers)(commits);
122
122
  const linked = new Set();
123
123
  for (const t of parsed.governedBy)
@@ -145,29 +145,12 @@ function getSnapshot(configPath) {
145
145
  nextAction,
146
146
  };
147
147
  }
148
- function isGitRepo() {
149
- try {
150
- (0, node_child_process_1.execFileSync)('git', ['rev-parse', '--is-inside-work-tree'], { stdio: 'ignore' });
151
- return true;
152
- }
153
- catch {
154
- return false;
155
- }
156
- }
157
148
  function getRecentCommits(count) {
158
149
  try {
159
- const metadataLog = (0, node_child_process_1.execFileSync)('git', ['log', `-${count}`, '--format=%H%x1f%an%x1f%aI%x1f%B%x1e'], {
160
- encoding: 'utf-8',
161
- maxBuffer: 10 * 1024 * 1024,
162
- stdio: ['ignore', 'pipe', 'ignore'],
163
- });
164
- const filesLog = (0, node_child_process_1.execFileSync)('git', ['log', `-${count}`, '--name-only', '--format=%H'], {
165
- encoding: 'utf-8',
166
- maxBuffer: 10 * 1024 * 1024,
167
- stdio: ['ignore', 'pipe', 'ignore'],
168
- });
169
- const filesBySha = parseChangedFilesByCommit(filesLog);
170
- return parseCommitMetadata(metadataLog).map((commit) => ({
150
+ const metadataLog = (0, git_helpers_1.runGit)(['log', `-${count}`, '--format=%H%x1f%an%x1f%aI%x1f%B%x1e']);
151
+ const filesLog = (0, git_helpers_1.runGit)(['log', `-${count}`, '--name-only', '--format=%H']);
152
+ const filesBySha = (0, git_helpers_1.parseChangedFilesByCommit)(filesLog);
153
+ return (0, git_helpers_1.parseCommitMetadata)(metadataLog).map((commit) => ({
171
154
  ...commit,
172
155
  files_changed: filesBySha.get(commit.sha) || [],
173
156
  }));
@@ -176,56 +159,4 @@ function getRecentCommits(count) {
176
159
  return [];
177
160
  }
178
161
  }
179
- function parseCommitMetadata(logOutput) {
180
- const commits = [];
181
- for (const rawRecord of logOutput.split('\x1e')) {
182
- const record = rawRecord.trim();
183
- if (!record)
184
- continue;
185
- const [sha = '', author = '', timestamp = '', ...messageParts] = record.split('\x1f');
186
- if (!sha)
187
- continue;
188
- commits.push({
189
- sha: sha.trim(),
190
- author: author.trim(),
191
- timestamp: timestamp.trim(),
192
- message: messageParts.join('\x1f').replace(/\r\n/g, '\n').replace(/\n+$/, ''),
193
- });
194
- }
195
- return commits;
196
- }
197
- function parseChangedFilesByCommit(logOutput) {
198
- const filesBySha = new Map();
199
- let currentSha = '';
200
- for (const rawLine of logOutput.split(/\r?\n/)) {
201
- const line = rawLine.trim();
202
- if (!line)
203
- continue;
204
- if (/^[a-f0-9]{40}$/i.test(line)) {
205
- currentSha = line;
206
- if (!filesBySha.has(currentSha)) {
207
- filesBySha.set(currentSha, []);
208
- }
209
- continue;
210
- }
211
- if (!currentSha)
212
- continue;
213
- const files = filesBySha.get(currentSha);
214
- if (!files || files.includes(line))
215
- continue;
216
- files.push(line);
217
- }
218
- return filesBySha;
219
- }
220
- function hasCommits() {
221
- try {
222
- (0, node_child_process_1.execFileSync)('git', ['rev-parse', '--verify', 'HEAD'], {
223
- stdio: 'ignore',
224
- });
225
- return true;
226
- }
227
- catch {
228
- return false;
229
- }
230
- }
231
162
  //# sourceMappingURL=why.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared CLI flag helpers.
3
+ *
4
+ * Centralized utilities for parsing positional flags and reading
5
+ * flag-referenced files from CLI argument arrays.
6
+ */
7
+ /**
8
+ * Extract a named flag's value from an argument array.
9
+ * Returns the string following `flag`, or undefined if not present.
10
+ */
11
+ export declare function getFlag(args: string[], flag: string): string | undefined;
12
+ /**
13
+ * Read a file referenced by a flag value, throwing CLIError if missing.
14
+ */
15
+ export declare function readFlagFile(filePath: string, flagName: string): string;
16
+ /**
17
+ * Tokenize a task prompt into keywords for ADF module resolution.
18
+ */
19
+ export declare function tokenizeTask(task: string): string[];
20
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKnD"}
package/dist/flags.js ADDED
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * Shared CLI flag helpers.
4
+ *
5
+ * Centralized utilities for parsing positional flags and reading
6
+ * flag-referenced files from CLI argument arrays.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.getFlag = getFlag;
43
+ exports.readFlagFile = readFlagFile;
44
+ exports.tokenizeTask = tokenizeTask;
45
+ const fs = __importStar(require("node:fs"));
46
+ const index_1 = require("./index");
47
+ /**
48
+ * Extract a named flag's value from an argument array.
49
+ * Returns the string following `flag`, or undefined if not present.
50
+ */
51
+ function getFlag(args, flag) {
52
+ const idx = args.indexOf(flag);
53
+ if (idx !== -1 && idx + 1 < args.length) {
54
+ return args[idx + 1];
55
+ }
56
+ return undefined;
57
+ }
58
+ /**
59
+ * Read a file referenced by a flag value, throwing CLIError if missing.
60
+ */
61
+ function readFlagFile(filePath, flagName) {
62
+ if (!fs.existsSync(filePath)) {
63
+ throw new index_1.CLIError(`File not found for ${flagName}: ${filePath}`);
64
+ }
65
+ return fs.readFileSync(filePath, 'utf-8');
66
+ }
67
+ /**
68
+ * Tokenize a task prompt into keywords for ADF module resolution.
69
+ */
70
+ function tokenizeTask(task) {
71
+ return task
72
+ .split(/[\s,;:()[\]{}]+/)
73
+ .filter(w => w.length > 1)
74
+ .map(w => w.replace(/[^a-zA-Z0-9]/g, ''));
75
+ }
76
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,0BAMC;AAKD,oCAKC;AAKD,oCAKC;AAjCD,4CAA8B;AAC9B,mCAAmC;AAEnC;;;GAGG;AACH,SAAgB,OAAO,CAAC,IAAc,EAAE,IAAY;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,QAAgB,EAAE,QAAgB;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,gBAAQ,CAAC,sBAAsB,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI;SACR,KAAK,CAAC,iBAAiB,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Shared git invocation helpers.
3
+ *
4
+ * Centralizes all child-process git calls behind a single `runGit()` that
5
+ * uses `shell: true` for cross-platform PATH resolution (fixes WSL, CMD,
6
+ * PowerShell parity — see ADX-005 F2).
7
+ */
8
+ import type { GitCommit } from '@stackbilt/types';
9
+ /**
10
+ * Run a git command and return its stdout.
11
+ *
12
+ * Uses `shell: true` so that the OS shell resolves the `git` binary via
13
+ * PATH. This is the key cross-platform fix: `execFileSync` *without* a
14
+ * shell can fail on WSL/Windows when git lives in a PATH entry the Node
15
+ * process doesn't see directly.
16
+ */
17
+ export declare function runGit(args: string[]): string;
18
+ /** Returns `true` when the current working directory is inside a git work tree. */
19
+ export declare function isGitRepo(): boolean;
20
+ /** Returns `true` when the repository has at least one commit (HEAD exists). */
21
+ export declare function hasCommits(): boolean;
22
+ /** Extract a human-readable message from a git child-process error. */
23
+ export declare function getGitErrorMessage(error: unknown): string;
24
+ /**
25
+ * Parse `git log --format=%H%x1f%an%x1f%aI%x1f%B%x1e` output into commit
26
+ * metadata (without file lists).
27
+ */
28
+ export declare function parseCommitMetadata(logOutput: string): Array<Omit<GitCommit, 'files_changed'>>;
29
+ /**
30
+ * Parse `git log --name-only --format=%H` output into a Map of SHA → changed
31
+ * file paths.
32
+ */
33
+ export declare function parseChangedFilesByCommit(logOutput: string): Map<string, string[]>;
34
+ /** Return a short recent-commits range like `HEAD~5..HEAD`. */
35
+ export declare function getRecentCommitRange(): string;
36
+ //# sourceMappingURL=git-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-helpers.d.ts","sourceRoot":"","sources":["../src/git-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAO7C;AAED,mFAAmF;AACnF,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED,gFAAgF;AAChF,wBAAgB,UAAU,IAAI,OAAO,CAOpC;AAMD,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiBzD;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAmB9F;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAuBlF;AAMD,+DAA+D;AAC/D,wBAAgB,oBAAoB,IAAI,MAAM,CAW7C"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ /**
3
+ * Shared git invocation helpers.
4
+ *
5
+ * Centralizes all child-process git calls behind a single `runGit()` that
6
+ * uses `shell: true` for cross-platform PATH resolution (fixes WSL, CMD,
7
+ * PowerShell parity — see ADX-005 F2).
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.runGit = runGit;
11
+ exports.isGitRepo = isGitRepo;
12
+ exports.hasCommits = hasCommits;
13
+ exports.getGitErrorMessage = getGitErrorMessage;
14
+ exports.parseCommitMetadata = parseCommitMetadata;
15
+ exports.parseChangedFilesByCommit = parseChangedFilesByCommit;
16
+ exports.getRecentCommitRange = getRecentCommitRange;
17
+ const node_child_process_1 = require("node:child_process");
18
+ // ---------------------------------------------------------------------------
19
+ // Core git invocation
20
+ // ---------------------------------------------------------------------------
21
+ /**
22
+ * Run a git command and return its stdout.
23
+ *
24
+ * Uses `shell: true` so that the OS shell resolves the `git` binary via
25
+ * PATH. This is the key cross-platform fix: `execFileSync` *without* a
26
+ * shell can fail on WSL/Windows when git lives in a PATH entry the Node
27
+ * process doesn't see directly.
28
+ */
29
+ function runGit(args) {
30
+ return (0, node_child_process_1.execFileSync)('git', args, {
31
+ encoding: 'utf-8',
32
+ stdio: ['ignore', 'pipe', 'pipe'],
33
+ maxBuffer: 10 * 1024 * 1024,
34
+ shell: true,
35
+ });
36
+ }
37
+ /** Returns `true` when the current working directory is inside a git work tree. */
38
+ function isGitRepo() {
39
+ try {
40
+ runGit(['rev-parse', '--is-inside-work-tree']);
41
+ return true;
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ /** Returns `true` when the repository has at least one commit (HEAD exists). */
48
+ function hasCommits() {
49
+ try {
50
+ runGit(['rev-parse', '--verify', 'HEAD']);
51
+ return true;
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ // ---------------------------------------------------------------------------
58
+ // Error formatting
59
+ // ---------------------------------------------------------------------------
60
+ /** Extract a human-readable message from a git child-process error. */
61
+ function getGitErrorMessage(error) {
62
+ const fallback = 'Unknown git error.';
63
+ if (!(error instanceof Error))
64
+ return fallback;
65
+ const execError = error;
66
+ if (execError.stderr) {
67
+ const stderr = execError.stderr.toString().trim();
68
+ if (stderr.length > 0) {
69
+ return stderr;
70
+ }
71
+ }
72
+ if (execError.message) {
73
+ return execError.message.trim();
74
+ }
75
+ return fallback;
76
+ }
77
+ // ---------------------------------------------------------------------------
78
+ // Commit log parsing (shared by audit, validate, why)
79
+ // ---------------------------------------------------------------------------
80
+ /**
81
+ * Parse `git log --format=%H%x1f%an%x1f%aI%x1f%B%x1e` output into commit
82
+ * metadata (without file lists).
83
+ */
84
+ function parseCommitMetadata(logOutput) {
85
+ const commits = [];
86
+ for (const rawRecord of logOutput.split('\x1e')) {
87
+ const record = rawRecord.trim();
88
+ if (!record)
89
+ continue;
90
+ const [sha = '', author = '', timestamp = '', ...messageParts] = record.split('\x1f');
91
+ if (!sha)
92
+ continue;
93
+ commits.push({
94
+ sha: sha.trim(),
95
+ author: author.trim(),
96
+ timestamp: timestamp.trim(),
97
+ message: messageParts.join('\x1f').replace(/\r\n/g, '\n').replace(/\n+$/, ''),
98
+ });
99
+ }
100
+ return commits;
101
+ }
102
+ /**
103
+ * Parse `git log --name-only --format=%H` output into a Map of SHA → changed
104
+ * file paths.
105
+ */
106
+ function parseChangedFilesByCommit(logOutput) {
107
+ const filesBySha = new Map();
108
+ let currentSha = '';
109
+ for (const rawLine of logOutput.split(/\r?\n/)) {
110
+ const line = rawLine.trim();
111
+ if (!line)
112
+ continue;
113
+ if (/^[a-f0-9]{40}$/i.test(line)) {
114
+ currentSha = line;
115
+ if (!filesBySha.has(currentSha)) {
116
+ filesBySha.set(currentSha, []);
117
+ }
118
+ continue;
119
+ }
120
+ if (!currentSha)
121
+ continue;
122
+ const files = filesBySha.get(currentSha);
123
+ if (!files || files.includes(line))
124
+ continue;
125
+ files.push(line);
126
+ }
127
+ return filesBySha;
128
+ }
129
+ // ---------------------------------------------------------------------------
130
+ // Commit range helpers (shared by audit, validate)
131
+ // ---------------------------------------------------------------------------
132
+ /** Return a short recent-commits range like `HEAD~5..HEAD`. */
133
+ function getRecentCommitRange() {
134
+ try {
135
+ const count = Number.parseInt(runGit(['rev-list', '--count', 'HEAD']).trim(), 10);
136
+ if (!Number.isFinite(count) || count <= 1) {
137
+ return 'HEAD';
138
+ }
139
+ const span = Math.min(5, count - 1);
140
+ return `HEAD~${span}..HEAD`;
141
+ }
142
+ catch {
143
+ return 'HEAD';
144
+ }
145
+ }
146
+ //# sourceMappingURL=git-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-helpers.js","sourceRoot":"","sources":["../src/git-helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuDH,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;gBADhC,OAAO,EAAE,MAAM,EACC,QAAQ,GAAE,MAAgC;CAK7D;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwDzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2DH,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;gBADhC,OAAO,EAAE,MAAM,EACC,QAAQ,GAAE,MAAgC;CAK7D;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqGzD"}
package/dist/index.js CHANGED
@@ -22,6 +22,9 @@ const why_1 = require("./commands/why");
22
22
  const hook_1 = require("./commands/hook");
23
23
  const adf_1 = require("./commands/adf");
24
24
  const bootstrap_1 = require("./commands/bootstrap");
25
+ const telemetry_1 = require("./commands/telemetry");
26
+ const telemetry_2 = require("./telemetry");
27
+ const flags_1 = require("./flags");
25
28
  const package_json_1 = __importDefault(require("../package.json"));
26
29
  const CLI_VERSION = package_json_1.default.version;
27
30
  const HELP = `
@@ -45,7 +48,8 @@ Usage:
45
48
  Install git commit-msg hook for trailer normalization
46
49
  charter hook install --pre-commit [--force]
47
50
  Install git pre-commit hook for ADF evidence gate
48
- charter adf <subcommand> ADF context format tools (init, fmt, patch, create, bundle, sync, evidence, migrate)
51
+ charter adf <subcommand> ADF context format tools (init, fmt, patch, create, bundle, sync, evidence, migrate, metrics)
52
+ charter telemetry report Local telemetry summary (passive CLI observability)
49
53
  charter why Explain why teams adopt Charter and expected ROI
50
54
  charter doctor [--adf-only] Check CLI + config health (or ADF-only wiring checks)
51
55
  charter --help Show this help
@@ -76,61 +80,97 @@ class CLIError extends Error {
76
80
  }
77
81
  exports.CLIError = CLIError;
78
82
  async function run(args) {
79
- if (args.includes('--help') || args.includes('-h')) {
80
- console.log(HELP);
81
- return exports.EXIT_CODE.SUCCESS;
82
- }
83
- if (args.includes('--version') || args.includes('-v')) {
84
- console.log(`charter v${CLI_VERSION}`);
85
- return exports.EXIT_CODE.SUCCESS;
86
- }
87
- const format = getFlag(args, '--format') || 'text';
88
- if (format !== 'text' && format !== 'json') {
89
- throw new CLIError(`Invalid --format value: ${format}. Use text or json.`);
90
- }
91
- const options = {
92
- configPath: getFlag(args, '--config') || '.charter',
93
- format,
94
- ciMode: args.includes('--ci'),
95
- yes: args.includes('--yes'),
83
+ const start = Date.now();
84
+ const configPath = (0, flags_1.getFlag)(args, '--config') || '.charter';
85
+ const rawFormat = (0, flags_1.getFlag)(args, '--format') || 'text';
86
+ const ciMode = args.includes('--ci');
87
+ const yes = args.includes('--yes');
88
+ const writeTelemetry = (exitCode, errorName) => {
89
+ (0, telemetry_2.recordTelemetryEvent)(configPath, {
90
+ args,
91
+ format: rawFormat,
92
+ ciMode,
93
+ durationMs: Date.now() - start,
94
+ exitCode,
95
+ errorName,
96
+ });
96
97
  };
97
- if (args.length === 0 || args[0].startsWith('-')) {
98
- return (0, why_1.quickstartCommand)(options);
98
+ try {
99
+ if (args.includes('--help') || args.includes('-h')) {
100
+ console.log(HELP);
101
+ writeTelemetry(exports.EXIT_CODE.SUCCESS);
102
+ return exports.EXIT_CODE.SUCCESS;
103
+ }
104
+ if (args.includes('--version') || args.includes('-v')) {
105
+ console.log(`charter v${CLI_VERSION}`);
106
+ writeTelemetry(exports.EXIT_CODE.SUCCESS);
107
+ return exports.EXIT_CODE.SUCCESS;
108
+ }
109
+ if (rawFormat !== 'text' && rawFormat !== 'json') {
110
+ throw new CLIError(`Invalid --format value: ${rawFormat}. Use text or json.`);
111
+ }
112
+ const options = {
113
+ configPath,
114
+ format: rawFormat,
115
+ ciMode,
116
+ yes,
117
+ };
118
+ let exitCode;
119
+ if (args.length === 0 || args[0].startsWith('-')) {
120
+ exitCode = await (0, why_1.quickstartCommand)(options);
121
+ writeTelemetry(exitCode);
122
+ return exitCode;
123
+ }
124
+ const command = args[0];
125
+ const restArgs = args.slice(1);
126
+ switch (command) {
127
+ case 'bootstrap':
128
+ exitCode = await (0, bootstrap_1.bootstrapCommand)(options, restArgs);
129
+ break;
130
+ case 'setup':
131
+ exitCode = await (0, setup_1.setupCommand)(options, restArgs);
132
+ break;
133
+ case 'init':
134
+ exitCode = await (0, init_1.initCommand)(options, restArgs);
135
+ break;
136
+ case 'validate':
137
+ exitCode = await (0, validate_1.validateCommand)(options, restArgs);
138
+ break;
139
+ case 'audit':
140
+ exitCode = await (0, audit_1.auditCommand)(options, restArgs);
141
+ break;
142
+ case 'drift':
143
+ exitCode = await (0, drift_1.driftCommand)(options, restArgs);
144
+ break;
145
+ case 'classify':
146
+ exitCode = await (0, classify_1.classifyCommand)(options, restArgs);
147
+ break;
148
+ case 'why':
149
+ exitCode = await (0, why_1.whyCommand)(options);
150
+ break;
151
+ case 'doctor':
152
+ exitCode = await (0, doctor_1.doctorCommand)(options, restArgs);
153
+ break;
154
+ case 'hook':
155
+ exitCode = await (0, hook_1.hookCommand)(options, restArgs);
156
+ break;
157
+ case 'adf':
158
+ exitCode = await (0, adf_1.adfCommand)(options, restArgs);
159
+ break;
160
+ case 'telemetry':
161
+ exitCode = await (0, telemetry_1.telemetryCommand)(options, restArgs);
162
+ break;
163
+ default:
164
+ throw new CLIError(`Unknown command: ${command}\n${HELP}`);
165
+ }
166
+ writeTelemetry(exitCode);
167
+ return exitCode;
99
168
  }
100
- const command = args[0];
101
- const restArgs = args.slice(1);
102
- switch (command) {
103
- case 'bootstrap':
104
- return (0, bootstrap_1.bootstrapCommand)(options, restArgs);
105
- case 'setup':
106
- return (0, setup_1.setupCommand)(options, restArgs);
107
- case 'init':
108
- return (0, init_1.initCommand)(options, restArgs);
109
- case 'validate':
110
- return (0, validate_1.validateCommand)(options, restArgs);
111
- case 'audit':
112
- return (0, audit_1.auditCommand)(options, restArgs);
113
- case 'drift':
114
- return (0, drift_1.driftCommand)(options, restArgs);
115
- case 'classify':
116
- return (0, classify_1.classifyCommand)(options, restArgs);
117
- case 'why':
118
- return (0, why_1.whyCommand)(options);
119
- case 'doctor':
120
- return (0, doctor_1.doctorCommand)(options, restArgs);
121
- case 'hook':
122
- return (0, hook_1.hookCommand)(options, restArgs);
123
- case 'adf':
124
- return (0, adf_1.adfCommand)(options, restArgs);
125
- default:
126
- throw new CLIError(`Unknown command: ${command}\n${HELP}`);
127
- }
128
- }
129
- function getFlag(args, flag) {
130
- const idx = args.indexOf(flag);
131
- if (idx !== -1 && idx + 1 < args.length) {
132
- return args[idx + 1];
169
+ catch (err) {
170
+ const exitCode = err instanceof CLIError ? err.exitCode : exports.EXIT_CODE.RUNTIME_ERROR;
171
+ const errorName = err instanceof Error ? err.name : 'UnknownError';
172
+ writeTelemetry(exitCode, errorName);
173
+ throw err;
133
174
  }
134
- return undefined;
135
175
  }
136
176
  //# sourceMappingURL=index.js.map
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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"}