@humanbased/crosscheck 1.3.0-beta.90 → 1.3.0-beta.92
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 +2 -1
- package/dist/__tests__/adoption.test.d.ts +2 -0
- package/dist/__tests__/adoption.test.d.ts.map +1 -0
- package/dist/__tests__/adoption.test.js +175 -0
- package/dist/__tests__/adoption.test.js.map +1 -0
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/adoption.d.ts +6 -0
- package/dist/commands/adoption.d.ts.map +1 -0
- package/dist/commands/adoption.js +132 -0
- package/dist/commands/adoption.js.map +1 -0
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +30 -3
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +1 -0
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +4 -0
- package/dist/commands/watch.js.map +1 -1
- package/dist/github/webhook.d.ts +1 -0
- package/dist/github/webhook.d.ts.map +1 -1
- package/dist/github/webhook.js.map +1 -1
- package/dist/lib/adoption.d.ts +64 -0
- package/dist/lib/adoption.d.ts.map +1 -0
- package/dist/lib/adoption.js +165 -0
- package/dist/lib/adoption.js.map +1 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +17 -1
- package/dist/lib/runner.js.map +1 -1
- package/docs/metrics.md +115 -0
- package/docs/trust.md +159 -0
- package/get-started.md +62 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -179,7 +179,7 @@ Full walkthrough: **[docs/linear-identity.md](./docs/linear-identity.md)**.
|
|
|
179
179
|
| `crosscheck alter <repo>` | Set a per-repo pipeline depth |
|
|
180
180
|
| `crosscheck detect-step <pr>` | Show step history and the next step to run |
|
|
181
181
|
| `crosscheck linear-test [issue]` | Dry-run Linear write-back |
|
|
182
|
-
| `crosscheck diagnose` / `optimize` / `impact` / `issue` | Analyse logs, tune config, report value, file tickets |
|
|
182
|
+
| `crosscheck diagnose` / `optimize` / `impact` / `adoption` / `issue` | Analyse logs, tune config, report value, report usage, file tickets |
|
|
183
183
|
|
|
184
184
|
Multi-PR forms work where sensible — comma lists, bare numbers, and ranges:
|
|
185
185
|
|
|
@@ -334,6 +334,7 @@ Deployment mode decides scope: `personal` monitors your own repos and reviews on
|
|
|
334
334
|
| | |
|
|
335
335
|
|---|---|
|
|
336
336
|
| **[get-started.md](./get-started.md)** | Full setup guide — prerequisites, every flag, complete config reference, FAQ |
|
|
337
|
+
| **[docs/trust.md](./docs/trust.md)** | What leaves your machine, which GitHub permissions are needed, what Crosscheck can and cannot change, and how to try it read-only first |
|
|
337
338
|
| **[docs/dynamic-thoroughness.md](./docs/dynamic-thoroughness.md)** | How Crosscheck picks a model and effort per PR — and the 400-PR census behind it |
|
|
338
339
|
| **[docs/linear-identity.md](./docs/linear-identity.md)** | Linear write-back and the attribution ladder |
|
|
339
340
|
| **[docs/linear-identity-contract.md](./docs/linear-identity-contract.md)** | The identity contract, as a spec for other tools |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adoption.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/adoption.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { buildAdoptionReport, firstRunFailures, isoWeekMonday, percentile, prOpenToVerdictMs, } from '../lib/adoption.js';
|
|
3
|
+
const PERIOD = { from: '2026-07-01', to: '2026-07-14', log_files: 2 };
|
|
4
|
+
function line(event, fields = {}) {
|
|
5
|
+
return { ts: '2026-07-08T10:00:00.000Z', event, ...fields };
|
|
6
|
+
}
|
|
7
|
+
describe('prOpenToVerdictMs', () => {
|
|
8
|
+
const opened = '2026-07-08T09:00:00.000Z';
|
|
9
|
+
const now = Date.parse('2026-07-08T10:30:00.000Z');
|
|
10
|
+
it('measures from PR open to the moment the verdict is posted', () => {
|
|
11
|
+
expect(prOpenToVerdictMs(opened, 'APPROVE', now)).toBe(90 * 60 * 1000);
|
|
12
|
+
});
|
|
13
|
+
it('returns undefined when the review produced no verdict', () => {
|
|
14
|
+
expect(prOpenToVerdictMs(opened, null, now)).toBeUndefined();
|
|
15
|
+
});
|
|
16
|
+
it('returns undefined when the PR event carried no open time', () => {
|
|
17
|
+
expect(prOpenToVerdictMs(undefined, 'BLOCK', now)).toBeUndefined();
|
|
18
|
+
});
|
|
19
|
+
it('returns undefined for an unparseable timestamp rather than NaN', () => {
|
|
20
|
+
expect(prOpenToVerdictMs('last Tuesday', 'BLOCK', now)).toBeUndefined();
|
|
21
|
+
});
|
|
22
|
+
it('drops a negative elapsed time from clock skew instead of reporting it', () => {
|
|
23
|
+
expect(prOpenToVerdictMs('2026-07-08T11:00:00.000Z', 'APPROVE', now)).toBeUndefined();
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('isoWeekMonday', () => {
|
|
27
|
+
it('maps a mid-week timestamp to that week Monday', () => {
|
|
28
|
+
expect(isoWeekMonday('2026-07-08T10:00:00.000Z')).toBe('2026-07-06');
|
|
29
|
+
});
|
|
30
|
+
it('maps Sunday back to the Monday that started its week', () => {
|
|
31
|
+
expect(isoWeekMonday('2026-07-12T23:59:00.000Z')).toBe('2026-07-06');
|
|
32
|
+
});
|
|
33
|
+
it('returns null for an unparseable timestamp', () => {
|
|
34
|
+
expect(isoWeekMonday('not-a-date')).toBeNull();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('percentile', () => {
|
|
38
|
+
it('returns a value that actually occurred in the sample', () => {
|
|
39
|
+
const sorted = [10, 20, 30, 40, 50];
|
|
40
|
+
expect(percentile(sorted, 0.5)).toBe(30);
|
|
41
|
+
expect(percentile(sorted, 0.9)).toBe(50);
|
|
42
|
+
});
|
|
43
|
+
it('returns 0 for an empty sample', () => {
|
|
44
|
+
expect(percentile([], 0.5)).toBe(0);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('buildAdoptionReport', () => {
|
|
48
|
+
it('counts the activation funnel and treats a missing completion as abandonment', () => {
|
|
49
|
+
const report = buildAdoptionReport([
|
|
50
|
+
line('onboard_started'),
|
|
51
|
+
line('onboard_completed', { outcome: 'completed' }),
|
|
52
|
+
line('onboard_started'),
|
|
53
|
+
line('onboard_completed', { outcome: 'abandoned' }),
|
|
54
|
+
line('onboard_started'),
|
|
55
|
+
], PERIOD);
|
|
56
|
+
expect(report.onboarding).toEqual({ started: 3, completed: 1, abandoned: 2 });
|
|
57
|
+
});
|
|
58
|
+
it('separates rechecks from initial reviews via step_type', () => {
|
|
59
|
+
const report = buildAdoptionReport([
|
|
60
|
+
line('review_complete', { repo: 'acme/web', step_type: 'review', verdict: 'BLOCK' }),
|
|
61
|
+
line('review_complete', { repo: 'acme/web', step_type: 'recheck', verdict: 'APPROVE' }),
|
|
62
|
+
], PERIOD);
|
|
63
|
+
expect(report.activity.reviews_completed).toBe(2);
|
|
64
|
+
expect(report.activity.rechecks_completed).toBe(1);
|
|
65
|
+
});
|
|
66
|
+
it('counts distinct repos, not reviews, as active repos', () => {
|
|
67
|
+
const report = buildAdoptionReport([
|
|
68
|
+
line('review_complete', { repo: 'acme/web', verdict: 'APPROVE' }),
|
|
69
|
+
line('review_complete', { repo: 'acme/web', verdict: 'BLOCK' }),
|
|
70
|
+
line('review_complete', { repo: 'acme/api', verdict: 'APPROVE' }),
|
|
71
|
+
], PERIOD);
|
|
72
|
+
expect(report.activity.active_repos).toBe(2);
|
|
73
|
+
expect(report.weekly).toEqual([{ week: '2026-07-06', active_repos: 2, reviews: 3 }]);
|
|
74
|
+
});
|
|
75
|
+
it('buckets weekly activity by ISO week', () => {
|
|
76
|
+
const report = buildAdoptionReport([
|
|
77
|
+
line('review_complete', { ts: '2026-07-08T10:00:00.000Z', repo: 'acme/web', verdict: 'APPROVE' }),
|
|
78
|
+
line('review_complete', { ts: '2026-07-15T10:00:00.000Z', repo: 'acme/api', verdict: 'APPROVE' }),
|
|
79
|
+
], PERIOD);
|
|
80
|
+
expect(report.weekly.map(w => w.week)).toEqual(['2026-07-06', '2026-07-13']);
|
|
81
|
+
});
|
|
82
|
+
it('counts a fix only when it changed files', () => {
|
|
83
|
+
const report = buildAdoptionReport([
|
|
84
|
+
line('fix_complete', { applied_count: 3 }),
|
|
85
|
+
line('fix_complete', { applied_count: 0 }),
|
|
86
|
+
line('fix_complete', {}),
|
|
87
|
+
], PERIOD);
|
|
88
|
+
expect(report.activity.fixes_applied).toBe(1);
|
|
89
|
+
});
|
|
90
|
+
it('summarises open-to-verdict latency and reports what could not be measured', () => {
|
|
91
|
+
const minute = 60_000;
|
|
92
|
+
const report = buildAdoptionReport([
|
|
93
|
+
line('review_complete', { repo: 'acme/web', verdict: 'APPROVE', open_to_verdict_ms: 10 * minute }),
|
|
94
|
+
line('review_complete', { repo: 'acme/web', verdict: 'BLOCK', open_to_verdict_ms: 30 * minute }),
|
|
95
|
+
line('review_complete', { repo: 'acme/web', verdict: 'APPROVE', open_to_verdict_ms: 120 * minute }),
|
|
96
|
+
line('review_complete', { repo: 'acme/web', verdict: 'APPROVE' }),
|
|
97
|
+
], PERIOD);
|
|
98
|
+
expect(report.open_to_verdict.count).toBe(3);
|
|
99
|
+
expect(report.open_to_verdict.p50_ms).toBe(30 * minute);
|
|
100
|
+
expect(report.open_to_verdict.max_ms).toBe(120 * minute);
|
|
101
|
+
expect(report.open_to_verdict.unmeasured).toBe(1);
|
|
102
|
+
});
|
|
103
|
+
it('does not count a verdictless review as unmeasured latency', () => {
|
|
104
|
+
const report = buildAdoptionReport([
|
|
105
|
+
line('review_complete', { repo: 'acme/web' }),
|
|
106
|
+
], PERIOD);
|
|
107
|
+
expect(report.open_to_verdict.unmeasured).toBe(0);
|
|
108
|
+
});
|
|
109
|
+
it('counts blocking findings from their own event', () => {
|
|
110
|
+
const report = buildAdoptionReport([
|
|
111
|
+
line('blocking_finding_posted', { repo: 'acme/web', verdict: 'BLOCK' }),
|
|
112
|
+
line('blocking_finding_posted', { repo: 'acme/api', verdict: 'NEEDS WORK' }),
|
|
113
|
+
], PERIOD);
|
|
114
|
+
expect(report.activity.blocking_findings_posted).toBe(2);
|
|
115
|
+
});
|
|
116
|
+
it('reports an empty shape rather than throwing on no logs', () => {
|
|
117
|
+
const report = buildAdoptionReport([], PERIOD);
|
|
118
|
+
expect(report.activity.reviews_completed).toBe(0);
|
|
119
|
+
expect(report.weekly).toEqual([]);
|
|
120
|
+
expect(report.open_to_verdict).toEqual({ count: 0, p50_ms: 0, p90_ms: 0, max_ms: 0, unmeasured: 0 });
|
|
121
|
+
expect(report.first_run_failures).toEqual({});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe('firstRunFailures', () => {
|
|
125
|
+
it('attributes a session that never reached a verdict to its first error', () => {
|
|
126
|
+
const failures = firstRunFailures([
|
|
127
|
+
line('session_start', { command: 'run' }),
|
|
128
|
+
line('error', { category: 'auth' }),
|
|
129
|
+
line('error', { category: 'network' }),
|
|
130
|
+
line('session_end'),
|
|
131
|
+
]);
|
|
132
|
+
expect(failures).toEqual({ auth: 1 });
|
|
133
|
+
});
|
|
134
|
+
it('ignores errors in a session that did complete a review', () => {
|
|
135
|
+
const failures = firstRunFailures([
|
|
136
|
+
line('session_start', { command: 'watch' }),
|
|
137
|
+
line('review_complete', { repo: 'acme/web', verdict: 'APPROVE' }),
|
|
138
|
+
line('error', { category: 'rate_limit' }),
|
|
139
|
+
line('session_end'),
|
|
140
|
+
]);
|
|
141
|
+
expect(failures).toEqual({});
|
|
142
|
+
});
|
|
143
|
+
it('keeps sessions separate when one fails and the next succeeds', () => {
|
|
144
|
+
const failures = firstRunFailures([
|
|
145
|
+
line('session_start', { command: 'run' }),
|
|
146
|
+
line('error', { category: 'auth' }),
|
|
147
|
+
line('session_end'),
|
|
148
|
+
line('session_start', { command: 'run' }),
|
|
149
|
+
line('review_complete', { repo: 'acme/web', verdict: 'BLOCK' }),
|
|
150
|
+
line('session_end'),
|
|
151
|
+
]);
|
|
152
|
+
expect(failures).toEqual({ auth: 1 });
|
|
153
|
+
});
|
|
154
|
+
it('counts a session that crashed without a session_end', () => {
|
|
155
|
+
const failures = firstRunFailures([
|
|
156
|
+
line('session_start', { command: 'watch' }),
|
|
157
|
+
line('error', { category: 'timeout' }),
|
|
158
|
+
]);
|
|
159
|
+
expect(failures).toEqual({ timeout: 1 });
|
|
160
|
+
});
|
|
161
|
+
it('labels an uncategorised error rather than dropping it', () => {
|
|
162
|
+
const failures = firstRunFailures([
|
|
163
|
+
line('session_start', { command: 'run' }),
|
|
164
|
+
line('error', {}),
|
|
165
|
+
]);
|
|
166
|
+
expect(failures).toEqual({ unknown: 1 });
|
|
167
|
+
});
|
|
168
|
+
it('still attributes errors in logs written before session events existed', () => {
|
|
169
|
+
const failures = firstRunFailures([
|
|
170
|
+
line('error', { category: 'git' }),
|
|
171
|
+
]);
|
|
172
|
+
expect(failures).toEqual({ git: 1 });
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=adoption.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adoption.test.js","sourceRoot":"","sources":["../../src/__tests__/adoption.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -14,6 +14,7 @@ import { runStatus } from './commands/status.js';
|
|
|
14
14
|
import { runDiagnose } from './commands/diagnose.js';
|
|
15
15
|
import { runOptimize } from './commands/optimize.js';
|
|
16
16
|
import { runImpact } from './commands/impact.js';
|
|
17
|
+
import { runAdoption } from './commands/adoption.js';
|
|
17
18
|
import { runIssue } from './commands/issue.js';
|
|
18
19
|
import { runRunSpec, runRecheckSpec, runFixSpec, runResolveSpec } from './commands/run.js';
|
|
19
20
|
import { runDetectStep } from './commands/detect-step.js';
|
|
@@ -246,6 +247,13 @@ program
|
|
|
246
247
|
.option('--money', 'include a rough monetary estimate')
|
|
247
248
|
.option('-c, --config <path>', 'config file path')
|
|
248
249
|
.action((opts) => void runImpact(opts));
|
|
250
|
+
program
|
|
251
|
+
.command('adoption')
|
|
252
|
+
.description('Report activation, usage, weekly active repos, PR-open-to-verdict latency, and first-run failures from local logs')
|
|
253
|
+
.option('--json', 'output full report as JSON')
|
|
254
|
+
.option('--since <date>', 'only analyze logs from this date onward (YYYY-MM-DD)')
|
|
255
|
+
.option('-c, --config <path>', 'config file path')
|
|
256
|
+
.action((opts) => void runAdoption(opts));
|
|
249
257
|
program
|
|
250
258
|
.command('issue')
|
|
251
259
|
.description('Detect errors in recent logs, draft a GitHub issue with AI, and submit after confirmation')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAoB,MAAM,mBAAmB,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACzD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAA;AAE/G,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AAChF,MAAM,WAAW,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAA;AAE5D,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;IACzC,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAClF,CAAC;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,OAAO,EAAE,CAAC,CAAA;AAuB5B,SAAS,iBAAiB,CAAC,GAAY;IACrC,OAAO,GAAG;SACP,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,yBAAyB,EAAE,2CAA2C,CAAC;SAC9E,MAAM,CAAC,kBAAkB,EAAE,sDAAsD,CAAC;SAClF,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;SAClF,MAAM,CAAC,WAAW,EAAE,8CAA8C,CAAC;SACnE,MAAM,CAAC,SAAS,EAAE,kEAAkE,CAAC;SACrF,MAAM,CAAC,cAAc,EAAE,+EAA+E,CAAC;SACvG,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;SAC5D,MAAM,CAAC,sBAAsB,EAAE,+CAA+C,CAAC;SAC/E,MAAM,CAAC,cAAc,EAAE,8EAA8E,CAAC;SACtG,MAAM,CAAC,kBAAkB,EAAE,sEAAsE,CAAC;SAClG,MAAM,CAAC,cAAc,EAAE,wDAAwD,CAAC;SAChF,MAAM,CAAC,gBAAgB,EAAE,mEAAmE,CAAC;SAC7F,SAAS,CAAC,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAE,iCAAiC;AAC9F,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAkB;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IACrG,uFAAuF;IACvF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAA;IAC1D,MAAM,OAAO,GAAI,IAAI,CAAC,OAAiE,IAAI,KAAK,CAAA;IAChG,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACrH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/E,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;QAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,SAAS;QACT,SAAS;QACT,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACpE,OAAO;QACP,UAAU;QACV,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS;KACV,CAAA;AACH,CAAC;AAED,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;KAC1D,MAAM,CAAC,CAAC,IAAyB,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAE9D,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;KAC1D,MAAM,CAAC,WAAW,EAAE,4CAA4C,CAAC;KACjE,MAAM,CAAC,YAAY,EAAE,0DAA0D,CAAC;KAChF,MAAM,CAAC,QAAQ,EAAE,sDAAsD,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,wEAAwE,CAAC;KACjG,MAAM,CAAC,CAAC,IAAmG,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AAEzI,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,KAAK,CAAC,gBAAgB,CAAC;KACvB,WAAW,CAAC,uFAAuF,CAAC;KACpG,MAAM,CAAC,gBAAgB,EAAE,gFAAgF,CAAC;KAC1G,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;KACnD,MAAM,CAAC,SAAS,EAAE,6DAA6D,CAAC;KAChF,MAAM,CAAC,QAAQ,EAAE,4DAA4D,CAAC;KAC9E,MAAM,CAAC,CAAC,IAAY,EAAE,IAA+E,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAElI,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,YAAY,EAAE,2DAA2D,CAAC;KACjF,MAAM,CAAC,QAAQ,EAAE,uDAAuD,CAAC;KACzE,MAAM,CAAC,eAAe,EAAE,uDAAuD,CAAC;KAChF,MAAM,CAAC,iBAAiB,EAAE,kFAAkF,EAAE,UAAU,CAAC;KACzH,MAAM,CAAC,aAAa,EAAE,+FAA+F,CAAC;KACtH,MAAM,CAAC,gBAAgB,EAAE,4FAA4F,CAAC;KACtH,MAAM,CAAC,CAAC,IAAwH,EAAE,EAAE,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAE5J,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,0IAA0I,CAAC;KACvJ,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,yBAAyB,EAAE,qEAAqE,CAAC;KACxG,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;KACnD,MAAM,CAAC,kBAAkB,EAAE,sEAAsE,CAAC;KAClG,MAAM,CAAC,cAAc,EAAE,wDAAwD,CAAC;KAChF,MAAM,CAAC,gBAAgB,EAAE,mEAAmE,CAAC;KAC7F,MAAM,CAAC,CAAC,MAAgB,EAAE,IAAiI,EAAE,EAAE;IAC9J,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACrH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/E,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAA;AAC3J,CAAC,CAAC,CAAA;AAEJ,iBAAiB,CACf,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,2LAA2L,CAAC,CAC5M;KACE,MAAM,CAAC,gBAAgB,EAAE,gEAAgE,CAAC;KAC1F,MAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC;KACnE,MAAM,CAAC,2BAA2B,EAAE,8DAA8D,CAAC;KACnG,MAAM,CAAC,CAAC,MAAgB,EAAE,IAAkB,EAAE,EAAE;IAC/C,6EAA6E;IAC7E,iEAAiE;IACjE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnG,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAA;YAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,KAAK,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3D,CAAC,CAAC,CAAA;AAEJ,iBAAiB,CACf,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,gJAAgJ,CAAC,CACjK,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,IAAkB,EAAE,EAAE,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEjH,iBAAiB,CACf,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,wIAAwI,CAAC,CACzJ,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,IAAkB,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE7G,iBAAiB,CACf,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,2IAA2I,CAAC,CAC5J,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,IAAkB,EAAE,EAAE,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAEjH,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,6EAA6E,CAAC;KAC1F,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC;KACvC,MAAM,CAAC,CAAC,KAAa,EAAE,IAAyC,EAAE,EAAE,CAAC,KAAK,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AAExG,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,iGAAiG,CAAC;KAC9G,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,iBAAiB,EAAE,2DAA2D,CAAC;KACtF,MAAM,CAAC,gBAAgB,EAAE,wDAAwD,CAAC;KAClF,MAAM,CAAC,qBAAqB,EAAE,iDAAiD,CAAC;KAChF,MAAM,CAAC,CAAC,KAAyB,EAAE,IAA4E,EAAE,EAAE;IAClH,6EAA6E;IAC7E,4DAA4D;IAC5D,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAChD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAA;QACxC,2EAA2E;QAC3E,2EAA2E;QAC3E,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/F,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,QAAQ,EAAE,yCAAyC,CAAC;KAC3D,MAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC;KACnD,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,EAAE,KAAK,CAAC;KACtE,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACpD,MAAM,CAAC,CAAC,IAA8E,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAEjH,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC;KACnD,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,EAAE,KAAK,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;KAClE,MAAM,CAAC,SAAS,EAAE,yEAAyE,CAAC;KAC5F,MAAM,CAAC,cAAc,EAAE,sFAAsF,CAAC;KAC9G,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;KAC5D,MAAM,CAAC,sBAAsB,EAAE,gGAAgG,CAAC;KAChI,MAAM,CAAC,kBAAkB,EAAE,gGAAgG,CAAC;KAC5H,MAAM,CAAC,cAAc,EAAE,8CAA8C,CAAC;KACtE,MAAM,CAAC,gBAAgB,EAAE,yDAAyD,CAAC;KACnF,MAAM,CAAC,CAAC,IAAiN,EAAE,EAAE;IAC5N,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IACrG,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;QAC1D,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/E,KAAK,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,CAAC,IAAyB,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAErE,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4BAA4B,CAAC;KACzC,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;AAE3D,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,2FAA2F,CAAC;KACxG,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CAAC,gBAAgB,EAAE,sDAAsD,CAAC;KAChF,MAAM,CAAC,YAAY,EAAE,kFAAkF,CAAC;KACxG,MAAM,CAAC,CAAC,IAAqD,EAAE,EAAE,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AAE5F,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,SAAS,EAAE,kFAAkF,CAAC;KACrG,MAAM,CAAC,WAAW,EAAE,8CAA8C,CAAC;KACnE,MAAM,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;KACpE,MAAM,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,CAAC,IAA4F,EAAE,EAAE,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AAEnI,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8EAA8E,CAAC;KAC3F,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CAAC,gBAAgB,EAAE,sDAAsD,CAAC;KAChF,MAAM,CAAC,SAAS,EAAE,mCAAmC,CAAC;KACtD,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,CAAC,IAA0E,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AAE/G,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2FAA2F,CAAC;KACxG,MAAM,CAAC,gBAAgB,EAAE,2EAA2E,CAAC;KACrG,MAAM,CAAC,WAAW,EAAE,oCAAoC,CAAC;KACzD,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,iBAAiB,EAAE,+FAA+F,CAAC;KAC1H,MAAM,CAAC,cAAc,EAAE,+FAA+F,CAAC;KACvH,MAAM,CAAC,CAAC,IAAwH,EAAE,EAAE,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAE5J,OAAO,CAAC,KAAK,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adoption.d.ts","sourceRoot":"","sources":["../../src/commands/adoption.ts"],"names":[],"mappings":"AAyHA,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1G"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, existsSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { loadConfig } from '../config/loader.js';
|
|
5
|
+
import { getLogDir } from '../lib/logger.js';
|
|
6
|
+
import { buildAdoptionReport } from '../lib/adoption.js';
|
|
7
|
+
function readLogLines(sinceDate) {
|
|
8
|
+
const logDir = getLogDir();
|
|
9
|
+
if (!existsSync(logDir))
|
|
10
|
+
return { files: [], lines: [] };
|
|
11
|
+
const files = readdirSync(logDir)
|
|
12
|
+
.filter(f => f.endsWith('.ndjson'))
|
|
13
|
+
.sort()
|
|
14
|
+
.filter(f => !sinceDate || f.replace('.ndjson', '') >= sinceDate)
|
|
15
|
+
.map(f => join(logDir, f));
|
|
16
|
+
const lines = [];
|
|
17
|
+
for (const file of files) {
|
|
18
|
+
for (const line of readFileSync(file, 'utf8').split('\n')) {
|
|
19
|
+
if (!line.trim())
|
|
20
|
+
continue;
|
|
21
|
+
try {
|
|
22
|
+
const parsed = JSON.parse(line);
|
|
23
|
+
if (parsed !== null && typeof parsed === 'object')
|
|
24
|
+
lines.push(parsed);
|
|
25
|
+
}
|
|
26
|
+
catch { /* skip malformed */ }
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return { files, lines };
|
|
30
|
+
}
|
|
31
|
+
function humanDuration(ms) {
|
|
32
|
+
if (ms <= 0)
|
|
33
|
+
return '—';
|
|
34
|
+
const minutes = ms / 60_000;
|
|
35
|
+
if (minutes < 60)
|
|
36
|
+
return `${Math.round(minutes)}m`;
|
|
37
|
+
const hours = minutes / 60;
|
|
38
|
+
if (hours < 48)
|
|
39
|
+
return `${Math.round(hours * 10) / 10}h`;
|
|
40
|
+
return `${Math.round(hours / 24)}d`;
|
|
41
|
+
}
|
|
42
|
+
function renderBar(value, max, width = 16) {
|
|
43
|
+
if (max === 0 || value === 0)
|
|
44
|
+
return '';
|
|
45
|
+
return '█'.repeat(Math.max(1, Math.round((value / max) * width)));
|
|
46
|
+
}
|
|
47
|
+
function formatReport(report, retentionDays) {
|
|
48
|
+
const sep = chalk.dim('─'.repeat(50));
|
|
49
|
+
const periodLabel = report.period.from === 'N/A'
|
|
50
|
+
? 'no data'
|
|
51
|
+
: `${report.period.from} → ${report.period.to}`;
|
|
52
|
+
console.log(chalk.bold('\ncrosscheck adoption') + chalk.dim(` (${periodLabel})\n`));
|
|
53
|
+
if (report.activity.reviews_completed === 0 && report.onboarding.started === 0) {
|
|
54
|
+
console.log(chalk.yellow(' No activity in the retained log window.'));
|
|
55
|
+
console.log(chalk.dim(` Logging is ${retentionDays}d; run a review or check logs.enabled in config.\n`));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
console.log(chalk.dim(' Activation'));
|
|
59
|
+
console.log(` ${sep}`);
|
|
60
|
+
console.log(` ${'onboard started'.padEnd(26)} ${report.onboarding.started}`);
|
|
61
|
+
console.log(` ${'onboard completed'.padEnd(26)} ${chalk.green(String(report.onboarding.completed))}`);
|
|
62
|
+
if (report.onboarding.abandoned > 0) {
|
|
63
|
+
console.log(` ${'abandoned'.padEnd(26)} ${chalk.yellow(String(report.onboarding.abandoned))}`);
|
|
64
|
+
}
|
|
65
|
+
console.log();
|
|
66
|
+
const a = report.activity;
|
|
67
|
+
console.log(chalk.dim(' Usage'));
|
|
68
|
+
console.log(` ${sep}`);
|
|
69
|
+
console.log(` ${'reviews started'.padEnd(26)} ${a.reviews_started}`);
|
|
70
|
+
console.log(` ${'reviews completed'.padEnd(26)} ${a.reviews_completed}`);
|
|
71
|
+
console.log(` ${'rechecks completed'.padEnd(26)} ${a.rechecks_completed}`);
|
|
72
|
+
console.log(` ${'blocking findings posted'.padEnd(26)} ${chalk.yellow(String(a.blocking_findings_posted))}`);
|
|
73
|
+
console.log(` ${'fixes applied'.padEnd(26)} ${a.fixes_applied}`);
|
|
74
|
+
console.log(` ${'active repos'.padEnd(26)} ${a.active_repos}`);
|
|
75
|
+
// A zero that means "this event did not exist when those reviews ran" reads
|
|
76
|
+
// exactly like a zero that means "it never happened". Say which it is.
|
|
77
|
+
if (a.reviews_completed > 0 && a.blocking_findings_posted === 0) {
|
|
78
|
+
console.log(` ${chalk.dim('ⓘ blocking-finding and latency events are recorded from this version on — reviews logged')}`);
|
|
79
|
+
console.log(` ${chalk.dim(' by an older version carry neither, and read as 0 here until new activity accumulates')}`);
|
|
80
|
+
}
|
|
81
|
+
console.log();
|
|
82
|
+
const weeks = report.weekly.slice(-12);
|
|
83
|
+
if (weeks.length >= 2) {
|
|
84
|
+
console.log(chalk.dim(' Weekly active repos'));
|
|
85
|
+
console.log(` ${sep}`);
|
|
86
|
+
const max = Math.max(...weeks.map(w => w.active_repos));
|
|
87
|
+
for (const w of weeks) {
|
|
88
|
+
const bar = renderBar(w.active_repos, max).padEnd(18);
|
|
89
|
+
console.log(` ${w.week} ${chalk.cyan(bar)} ${String(w.active_repos).padStart(3)} repos ${chalk.dim(`${w.reviews} reviews`)}`);
|
|
90
|
+
}
|
|
91
|
+
console.log();
|
|
92
|
+
}
|
|
93
|
+
const l = report.open_to_verdict;
|
|
94
|
+
if (l.count > 0) {
|
|
95
|
+
console.log(chalk.dim(' PR open → verdict'));
|
|
96
|
+
console.log(` ${sep}`);
|
|
97
|
+
console.log(` ${'median'.padEnd(26)} ${humanDuration(l.p50_ms)}`);
|
|
98
|
+
console.log(` ${'p90'.padEnd(26)} ${humanDuration(l.p90_ms)}`);
|
|
99
|
+
console.log(` ${'slowest'.padEnd(26)} ${humanDuration(l.max_ms)}`);
|
|
100
|
+
console.log(` ${chalk.dim(`measured on ${l.count} verdict${l.count === 1 ? '' : 's'}`)}`);
|
|
101
|
+
if (l.unmeasured > 0) {
|
|
102
|
+
console.log(` ${chalk.dim(`ⓘ ${l.unmeasured} verdict${l.unmeasured === 1 ? '' : 's'} had no PR open time in the event — excluded`)}`);
|
|
103
|
+
}
|
|
104
|
+
console.log();
|
|
105
|
+
}
|
|
106
|
+
const failures = Object.entries(report.first_run_failures).sort(([, a2], [, b2]) => b2 - a2);
|
|
107
|
+
if (failures.length > 0) {
|
|
108
|
+
console.log(chalk.dim(' First-run failures') + chalk.dim(' (sessions that never reached a verdict)'));
|
|
109
|
+
console.log(` ${sep}`);
|
|
110
|
+
for (const [category, count] of failures) {
|
|
111
|
+
console.log(` ${category.padEnd(26)} ${chalk.red(String(count))}`);
|
|
112
|
+
}
|
|
113
|
+
console.log();
|
|
114
|
+
}
|
|
115
|
+
console.log(` ${chalk.dim(`ⓘ derived from local logs only (${retentionDays}d retention) — nothing is transmitted. See docs/metrics.md`)}`);
|
|
116
|
+
console.log();
|
|
117
|
+
}
|
|
118
|
+
export async function runAdoption(opts) {
|
|
119
|
+
const config = loadConfig(opts.config);
|
|
120
|
+
const { files, lines } = readLogLines(opts.since);
|
|
121
|
+
const report = buildAdoptionReport(lines, {
|
|
122
|
+
from: files[0]?.split('/').at(-1)?.replace('.ndjson', '') ?? 'N/A',
|
|
123
|
+
to: files.at(-1)?.split('/').at(-1)?.replace('.ndjson', '') ?? 'N/A',
|
|
124
|
+
log_files: files.length,
|
|
125
|
+
});
|
|
126
|
+
if (opts.json) {
|
|
127
|
+
console.log(JSON.stringify(report, null, 2));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
formatReport(report, config.logs.retention_days);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=adoption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adoption.js","sourceRoot":"","sources":["../../src/commands/adoption.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAQD,KAAK,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,oBAAoB,CAAA;AAEzE,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,cAAc,GAAG,eAAe,CAAA;IACtC,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAQD,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBT,CAAA;AAEV,KAAK,WAAW,GAAG,MAAM,OAAO,aAAa,CAAA;AA4J7C,MAAM,WAAW,kBAAkB;IACjC,0FAA0F;IAC1F,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAOrG;AA0DD,wBAAgB,mBAAmB,CAAC,WAAW,GAAE,MAAuC,GAAG,cAAc,CAgBxG;AAED,wBAAgB,4BAA4B,CAAC,WAAW,GAAE,MAAuC,GAAG,OAAO,CAO1G;AA4ED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,oBAAoB,CAAA;IAC9C,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAQD,wBAAsB,YAAY,CAChC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,EAC9E,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,cAAc,CAAC,CAkBzB;AAkED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,UAAU,GAAG,MAAM,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,YAAY,EAAE,gBAAgB,CAAA;IAC9B,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACzC,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,OAAO,GAAG,OAAO,CAAA;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,EAAE,cAAc,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;IACxB,aAAa,EAAE,eAAe,GAAG,MAAM,CAAA;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,KAAK,GAAG,OAAO,CAAA;IAC9B,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAwDD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,gBAAgB,EAC3B,WAAW,SAAiC,GAC3C,IAAI,CA2NN;AAED,wBAAsB,UAAU,CAAC,IAAI,GAAE,WAAgB,iBA6dtD"}
|
package/dist/commands/onboard.js
CHANGED
|
@@ -12,6 +12,8 @@ import { execSync } from 'child_process';
|
|
|
12
12
|
import { promptRepoPicker, promptSinglePicker } from '../lib/repo-picker.js';
|
|
13
13
|
import { DEFAULT_REVIEW_INSTRUCTIONS, DEFAULT_FIX_INSTRUCTIONS, DEFAULT_RECHECK_INSTRUCTIONS, DEFAULT_CONFLICT_RESOLVE_INSTRUCTIONS } from '../lib/workflow.js';
|
|
14
14
|
import { formatRepoWorkflowSteps, readRepoWorkflowStepTypes } from '../lib/repo-workflow.js';
|
|
15
|
+
import { initLogger, log as fileLog } from '../lib/logger.js';
|
|
16
|
+
import { LogsConfigSchema } from '../config/schema.js';
|
|
15
17
|
import { BUNDLED_SKILL_RECOMMENDATIONS, findCompetingSkill, loadSkillCatalog, RECOMMENDED_SKILL_NAMES, } from '../skills/catalog.js';
|
|
16
18
|
// Effort settings and display hints per quality tier.
|
|
17
19
|
//
|
|
@@ -686,19 +688,35 @@ export async function runOnboard(opts = {}) {
|
|
|
686
688
|
console.error(chalk.dim('Run crosscheck init and edit crosscheck.config.yml manually.'));
|
|
687
689
|
process.exit(1);
|
|
688
690
|
}
|
|
691
|
+
// Onboard runs before a config exists on a fresh install, so it initialises
|
|
692
|
+
// logging from the schema defaults (enabled, local files only) unless an
|
|
693
|
+
// existing config already opted out or set a custom retention — otherwise
|
|
694
|
+
// re-running onboard on an existing `logs.enabled: false` install would start
|
|
695
|
+
// writing logs again, and could delete logs older than the default retention.
|
|
696
|
+
const preOnboardConfigPath = opts.config ?? resolveConfigPath() ?? join(homedir(), '.crosscheck', 'config.yml');
|
|
697
|
+
const preOnboardConfig = existsSync(preOnboardConfigPath) ? loadConfig(preOnboardConfigPath) : null;
|
|
698
|
+
initLogger(preOnboardConfig?.logs ?? LogsConfigSchema.parse({}));
|
|
699
|
+
fileLog({ level: 'info', event: 'onboard_started', command: 'onboard' });
|
|
700
|
+
// Every path out of onboard reports an outcome, so `started` minus `completed`
|
|
701
|
+
// is the abandonment count rather than a number that also absorbs crashes.
|
|
702
|
+
const onboardAbandoned = (stage) => {
|
|
703
|
+
fileLog({ level: 'info', event: 'onboard_completed', command: 'onboard', outcome: 'abandoned', stage });
|
|
704
|
+
};
|
|
689
705
|
console.log(chalk.bold('\ncrosscheck onboard\n'));
|
|
690
706
|
// ── Step 1: Auth check ─────────────────────────────────────────────────────
|
|
691
707
|
console.log(chalk.bold('Step 1 — environment check'));
|
|
692
708
|
console.log(chalk.dim(' Confirms the CLIs and auth crosscheck needs before it writes anything.'));
|
|
693
709
|
const env = await checkEnv();
|
|
694
|
-
if (!env.ok)
|
|
710
|
+
if (!env.ok) {
|
|
711
|
+
onboardAbandoned('environment_check');
|
|
695
712
|
process.exit(1);
|
|
713
|
+
}
|
|
696
714
|
console.log();
|
|
697
715
|
// ── Step 2: Deployment mode ────────────────────────────────────────────────
|
|
698
716
|
console.log(chalk.bold('Step 2 — who you review for'));
|
|
699
717
|
console.log(chalk.dim(' Personal reviews only PRs you author. Team reviews every author in the org.'));
|
|
700
|
-
const configPath =
|
|
701
|
-
const existingConfig =
|
|
718
|
+
const configPath = preOnboardConfigPath;
|
|
719
|
+
const existingConfig = preOnboardConfig;
|
|
702
720
|
// Parsed config always carries a `tier` and a `mode` (schema defaults), so
|
|
703
721
|
// read the raw file to tell an explicit choice from a pre-`mode` config.
|
|
704
722
|
const rawQuality = (() => {
|
|
@@ -752,6 +770,7 @@ export async function runOnboard(opts = {}) {
|
|
|
752
770
|
}
|
|
753
771
|
catch (err) {
|
|
754
772
|
console.error(chalk.red(err instanceof Error ? err.message : String(err)));
|
|
773
|
+
onboardAbandoned('github_token');
|
|
755
774
|
process.exit(1);
|
|
756
775
|
}
|
|
757
776
|
const login = detectGitHubLogin() ?? '';
|
|
@@ -1048,6 +1067,7 @@ export async function runOnboard(opts = {}) {
|
|
|
1048
1067
|
const confirm = await ask(` Write to config? [Y/n]: `);
|
|
1049
1068
|
if (confirm.toLowerCase() === 'n') {
|
|
1050
1069
|
console.log(chalk.dim(' Aborted — no changes written.'));
|
|
1070
|
+
onboardAbandoned('config_write_declined');
|
|
1051
1071
|
return;
|
|
1052
1072
|
}
|
|
1053
1073
|
}
|
|
@@ -1079,6 +1099,13 @@ export async function runOnboard(opts = {}) {
|
|
|
1079
1099
|
console.log(chalk.dim(` keeping existing workflow at ${globalWorkflowPath}`));
|
|
1080
1100
|
}
|
|
1081
1101
|
console.log();
|
|
1102
|
+
fileLog({
|
|
1103
|
+
level: 'info', event: 'onboard_completed', command: 'onboard', outcome: 'completed',
|
|
1104
|
+
// Shape of the setup, never its contents: counts, not repo or org names.
|
|
1105
|
+
deployment, repos: selectedRepos.length, orgs: selectedOrgs.length,
|
|
1106
|
+
quality_tier: qualityTier, quality_mode: qualityMode, pipeline: pipelinePreset,
|
|
1107
|
+
tunnel: tunnelBackend, linear: linear !== null,
|
|
1108
|
+
});
|
|
1082
1109
|
// ── Next step hint ─────────────────────────────────────────────────────────
|
|
1083
1110
|
console.log(chalk.dim(' Run crosscheck watch to start monitoring.'));
|
|
1084
1111
|
const alterExample = selectedRepos[0] ?? 'owner/repo';
|