@stackbilt/cli 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -5
- package/dist/__tests__/adf-metrics.test.d.ts +2 -0
- package/dist/__tests__/adf-metrics.test.d.ts.map +1 -0
- package/dist/__tests__/adf-metrics.test.js +117 -0
- package/dist/__tests__/adf-metrics.test.js.map +1 -0
- package/dist/__tests__/git-helpers.test.d.ts +2 -0
- package/dist/__tests__/git-helpers.test.d.ts.map +1 -0
- package/dist/__tests__/git-helpers.test.js +136 -0
- package/dist/__tests__/git-helpers.test.js.map +1 -0
- package/dist/__tests__/setup.test.d.ts +2 -0
- package/dist/__tests__/setup.test.d.ts.map +1 -0
- package/dist/__tests__/setup.test.js +74 -0
- package/dist/__tests__/setup.test.js.map +1 -0
- package/dist/__tests__/telemetry.test.d.ts +2 -0
- package/dist/__tests__/telemetry.test.d.ts.map +1 -0
- package/dist/__tests__/telemetry.test.js +119 -0
- package/dist/__tests__/telemetry.test.js.map +1 -0
- package/dist/commands/adf-bundle.d.ts.map +1 -1
- package/dist/commands/adf-bundle.js +37 -17
- package/dist/commands/adf-bundle.js.map +1 -1
- package/dist/commands/adf-evidence.d.ts.map +1 -1
- package/dist/commands/adf-evidence.js +57 -19
- package/dist/commands/adf-evidence.js.map +1 -1
- package/dist/commands/adf-metrics.d.ts +8 -0
- package/dist/commands/adf-metrics.d.ts.map +1 -0
- package/dist/commands/adf-metrics.js +242 -0
- package/dist/commands/adf-metrics.js.map +1 -0
- package/dist/commands/adf-migrate.js +16 -13
- package/dist/commands/adf-migrate.js.map +1 -1
- package/dist/commands/adf-sync.d.ts.map +1 -1
- package/dist/commands/adf-sync.js +22 -12
- package/dist/commands/adf-sync.js.map +1 -1
- package/dist/commands/adf.d.ts +4 -0
- package/dist/commands/adf.d.ts.map +1 -1
- package/dist/commands/adf.js +232 -83
- package/dist/commands/adf.js.map +1 -1
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +19 -87
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/bootstrap.d.ts.map +1 -1
- package/dist/commands/bootstrap.js +32 -33
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +66 -41
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/drift.d.ts.map +1 -1
- package/dist/commands/drift.js +2 -8
- package/dist/commands/drift.js.map +1 -1
- package/dist/commands/hook.d.ts.map +1 -1
- package/dist/commands/hook.js +23 -21
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +38 -9
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/telemetry.d.ts +8 -0
- package/dist/commands/telemetry.d.ts.map +1 -0
- package/dist/commands/telemetry.js +184 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +11 -97
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/why.d.ts.map +1 -1
- package/dist/commands/why.js +7 -76
- package/dist/commands/why.js.map +1 -1
- package/dist/flags.d.ts +20 -0
- package/dist/flags.d.ts.map +1 -0
- package/dist/flags.js +76 -0
- package/dist/flags.js.map +1 -0
- package/dist/git-helpers.d.ts +36 -0
- package/dist/git-helpers.d.ts.map +1 -0
- package/dist/git-helpers.js +146 -0
- package/dist/git-helpers.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +95 -55
- package/dist/index.js.map +1 -1
- package/dist/telemetry.d.ts +29 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +88 -0
- package/dist/telemetry.js.map +1 -0
- package/package.json +8 -8
|
@@ -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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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
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,9 +48,10 @@ 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, 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
|
-
charter doctor
|
|
54
|
+
charter doctor [--adf-only] Check CLI + config health (or ADF-only wiring checks)
|
|
51
55
|
charter --help Show this help
|
|
52
56
|
charter --version Show version
|
|
53
57
|
|
|
@@ -76,61 +80,97 @@ class CLIError extends Error {
|
|
|
76
80
|
}
|
|
77
81
|
exports.CLIError = CLIError;
|
|
78
82
|
async function run(args) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
98
|
-
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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);
|
|
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":";AAAA;;;;;GAKG;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI telemetry (local-first, append-only).
|
|
3
|
+
*
|
|
4
|
+
* Writes command execution metadata to .charter/telemetry/events.ndjson
|
|
5
|
+
* with no prompt/content capture.
|
|
6
|
+
*/
|
|
7
|
+
export interface CliTelemetryEvent {
|
|
8
|
+
version: 1;
|
|
9
|
+
timestamp: string;
|
|
10
|
+
commandPath: string;
|
|
11
|
+
flags: string[];
|
|
12
|
+
format: string;
|
|
13
|
+
ciMode: boolean;
|
|
14
|
+
durationMs: number;
|
|
15
|
+
exitCode: number;
|
|
16
|
+
success: boolean;
|
|
17
|
+
errorName?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface RecordEventInput {
|
|
20
|
+
args: string[];
|
|
21
|
+
format: string;
|
|
22
|
+
ciMode: boolean;
|
|
23
|
+
durationMs: number;
|
|
24
|
+
exitCode: number;
|
|
25
|
+
errorName?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function recordTelemetryEvent(configPath: string, input: RecordEventInput): void;
|
|
28
|
+
export declare function inferCommandPath(args: string[]): string;
|
|
29
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAuBtF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAUvD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI telemetry (local-first, append-only).
|
|
4
|
+
*
|
|
5
|
+
* Writes command execution metadata to .charter/telemetry/events.ndjson
|
|
6
|
+
* with no prompt/content capture.
|
|
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.recordTelemetryEvent = recordTelemetryEvent;
|
|
43
|
+
exports.inferCommandPath = inferCommandPath;
|
|
44
|
+
const fs = __importStar(require("node:fs"));
|
|
45
|
+
const path = __importStar(require("node:path"));
|
|
46
|
+
function recordTelemetryEvent(configPath, input) {
|
|
47
|
+
try {
|
|
48
|
+
const telemetryDir = path.join(configPath, 'telemetry');
|
|
49
|
+
const telemetryFile = path.join(telemetryDir, 'events.ndjson');
|
|
50
|
+
fs.mkdirSync(telemetryDir, { recursive: true });
|
|
51
|
+
const event = {
|
|
52
|
+
version: 1,
|
|
53
|
+
timestamp: new Date().toISOString(),
|
|
54
|
+
commandPath: inferCommandPath(input.args),
|
|
55
|
+
flags: extractFlagNames(input.args),
|
|
56
|
+
format: input.format,
|
|
57
|
+
ciMode: input.ciMode,
|
|
58
|
+
durationMs: input.durationMs,
|
|
59
|
+
exitCode: input.exitCode,
|
|
60
|
+
success: input.exitCode === 0,
|
|
61
|
+
errorName: input.errorName,
|
|
62
|
+
};
|
|
63
|
+
fs.appendFileSync(telemetryFile, `${JSON.stringify(event)}\n`);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Telemetry is best-effort and must never block command execution.
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function inferCommandPath(args) {
|
|
70
|
+
if (args.length === 0 || args[0].startsWith('-')) {
|
|
71
|
+
return 'quickstart';
|
|
72
|
+
}
|
|
73
|
+
const command = args[0];
|
|
74
|
+
if ((command === 'adf' || command === 'hook' || command === 'telemetry') && args[1] && !args[1].startsWith('-')) {
|
|
75
|
+
return `${command}.${args[1]}`;
|
|
76
|
+
}
|
|
77
|
+
return command;
|
|
78
|
+
}
|
|
79
|
+
function extractFlagNames(args) {
|
|
80
|
+
const flags = [];
|
|
81
|
+
for (const arg of args) {
|
|
82
|
+
if (arg.startsWith('-')) {
|
|
83
|
+
flags.push(arg);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return [...new Set(flags)];
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BH,oDAuBC;AAED,4CAUC;AA5DD,4CAA8B;AAC9B,gDAAkC;AAwBlC,SAAgB,oBAAoB,CAAC,UAAkB,EAAE,KAAuB;IAC9E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAC/D,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAsB;YAC/B,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;YACzC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;YACnC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC;YAC7B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;QAEF,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAc;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChH,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackbilt/cli",
|
|
3
3
|
"sideEffects": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.0",
|
|
5
5
|
"description": "Charter CLI — repo-level governance checks",
|
|
6
6
|
"bin": {
|
|
7
7
|
"charter": "./dist/bin.js"
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@stackbilt/
|
|
39
|
-
"@stackbilt/
|
|
40
|
-
"@stackbilt/
|
|
41
|
-
"@stackbilt/
|
|
42
|
-
"@stackbilt/
|
|
43
|
-
"@stackbilt/
|
|
44
|
-
"@stackbilt/
|
|
38
|
+
"@stackbilt/core": "^0.5.0",
|
|
39
|
+
"@stackbilt/git": "^0.5.0",
|
|
40
|
+
"@stackbilt/classify": "^0.5.0",
|
|
41
|
+
"@stackbilt/types": "^0.5.0",
|
|
42
|
+
"@stackbilt/drift": "^0.5.0",
|
|
43
|
+
"@stackbilt/adf": "^0.5.0",
|
|
44
|
+
"@stackbilt/validate": "^0.5.0"
|
|
45
45
|
},
|
|
46
46
|
"license": "Apache-2.0",
|
|
47
47
|
"scripts": {
|