reflection-check 0.0.2 → 0.0.3
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/dist/cli.js +11 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts +2 -1
- package/dist/commands/doctor.js +109 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.js +59 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/run.js +1 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/update.js +5 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/contracts/browser/browser-contract.d.ts +2 -1
- package/dist/contracts/browser/browser-contract.js +2 -1
- package/dist/contracts/browser/browser-contract.js.map +1 -1
- package/dist/contracts/browser/route-runner.d.ts +6 -0
- package/dist/contracts/browser/route-runner.js +42 -1
- package/dist/contracts/browser/route-runner.js.map +1 -1
- package/dist/core/config.d.ts +8 -0
- package/dist/core/config.js +11 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/report-schema.d.ts +11 -10
- package/dist/core/report-schema.js +47 -1
- package/dist/core/report-schema.js.map +1 -1
- package/docs/agent-workflows.md +13 -5
- package/docs/browser-contract.md +31 -0
- package/docs/ci.md +11 -1
- package/docs/configuration.md +26 -0
- package/docs/getting-started.md +17 -3
- package/docs/plans/reflection-dogfood-feedback-implementation-guide.md +100 -86
- package/docs/validation-process.md +16 -7
- package/package.json +1 -1
|
@@ -27,8 +27,8 @@ export declare const ReportStatusSchema: z.ZodEnum<{
|
|
|
27
27
|
"pass-with-review": "pass-with-review";
|
|
28
28
|
}>;
|
|
29
29
|
export declare const ArtifactTypeSchema: z.ZodEnum<{
|
|
30
|
-
report: "report";
|
|
31
30
|
screenshot: "screenshot";
|
|
31
|
+
report: "report";
|
|
32
32
|
image: "image";
|
|
33
33
|
"visual-diff": "visual-diff";
|
|
34
34
|
trace: "trace";
|
|
@@ -37,8 +37,8 @@ export declare const ArtifactTypeSchema: z.ZodEnum<{
|
|
|
37
37
|
metadata: "metadata";
|
|
38
38
|
}>;
|
|
39
39
|
export declare const ArtifactRoleSchema: z.ZodEnum<{
|
|
40
|
-
trace: "trace";
|
|
41
40
|
expected: "expected";
|
|
41
|
+
trace: "trace";
|
|
42
42
|
evidence: "evidence";
|
|
43
43
|
actual: "actual";
|
|
44
44
|
diff: "diff";
|
|
@@ -46,8 +46,8 @@ export declare const ArtifactRoleSchema: z.ZodEnum<{
|
|
|
46
46
|
}>;
|
|
47
47
|
export declare const ArtifactRefSchema: z.ZodObject<{
|
|
48
48
|
type: z.ZodEnum<{
|
|
49
|
-
report: "report";
|
|
50
49
|
screenshot: "screenshot";
|
|
50
|
+
report: "report";
|
|
51
51
|
image: "image";
|
|
52
52
|
"visual-diff": "visual-diff";
|
|
53
53
|
trace: "trace";
|
|
@@ -56,8 +56,8 @@ export declare const ArtifactRefSchema: z.ZodObject<{
|
|
|
56
56
|
metadata: "metadata";
|
|
57
57
|
}>;
|
|
58
58
|
role: z.ZodOptional<z.ZodEnum<{
|
|
59
|
-
trace: "trace";
|
|
60
59
|
expected: "expected";
|
|
60
|
+
trace: "trace";
|
|
61
61
|
evidence: "evidence";
|
|
62
62
|
actual: "actual";
|
|
63
63
|
diff: "diff";
|
|
@@ -93,8 +93,8 @@ export declare const CheckResultSchema: z.ZodObject<{
|
|
|
93
93
|
details: z.ZodOptional<z.ZodString>;
|
|
94
94
|
artifacts: z.ZodArray<z.ZodObject<{
|
|
95
95
|
type: z.ZodEnum<{
|
|
96
|
-
report: "report";
|
|
97
96
|
screenshot: "screenshot";
|
|
97
|
+
report: "report";
|
|
98
98
|
image: "image";
|
|
99
99
|
"visual-diff": "visual-diff";
|
|
100
100
|
trace: "trace";
|
|
@@ -103,8 +103,8 @@ export declare const CheckResultSchema: z.ZodObject<{
|
|
|
103
103
|
metadata: "metadata";
|
|
104
104
|
}>;
|
|
105
105
|
role: z.ZodOptional<z.ZodEnum<{
|
|
106
|
-
trace: "trace";
|
|
107
106
|
expected: "expected";
|
|
107
|
+
trace: "trace";
|
|
108
108
|
evidence: "evidence";
|
|
109
109
|
actual: "actual";
|
|
110
110
|
diff: "diff";
|
|
@@ -183,8 +183,8 @@ export declare const ReflectionReportSchema: z.ZodObject<{
|
|
|
183
183
|
details: z.ZodOptional<z.ZodString>;
|
|
184
184
|
artifacts: z.ZodArray<z.ZodObject<{
|
|
185
185
|
type: z.ZodEnum<{
|
|
186
|
-
report: "report";
|
|
187
186
|
screenshot: "screenshot";
|
|
187
|
+
report: "report";
|
|
188
188
|
image: "image";
|
|
189
189
|
"visual-diff": "visual-diff";
|
|
190
190
|
trace: "trace";
|
|
@@ -193,8 +193,8 @@ export declare const ReflectionReportSchema: z.ZodObject<{
|
|
|
193
193
|
metadata: "metadata";
|
|
194
194
|
}>;
|
|
195
195
|
role: z.ZodOptional<z.ZodEnum<{
|
|
196
|
-
trace: "trace";
|
|
197
196
|
expected: "expected";
|
|
197
|
+
trace: "trace";
|
|
198
198
|
evidence: "evidence";
|
|
199
199
|
actual: "actual";
|
|
200
200
|
diff: "diff";
|
|
@@ -209,8 +209,8 @@ export declare const ReflectionReportSchema: z.ZodObject<{
|
|
|
209
209
|
}, z.core.$strip>>;
|
|
210
210
|
artifacts: z.ZodArray<z.ZodObject<{
|
|
211
211
|
type: z.ZodEnum<{
|
|
212
|
-
report: "report";
|
|
213
212
|
screenshot: "screenshot";
|
|
213
|
+
report: "report";
|
|
214
214
|
image: "image";
|
|
215
215
|
"visual-diff": "visual-diff";
|
|
216
216
|
trace: "trace";
|
|
@@ -219,8 +219,8 @@ export declare const ReflectionReportSchema: z.ZodObject<{
|
|
|
219
219
|
metadata: "metadata";
|
|
220
220
|
}>;
|
|
221
221
|
role: z.ZodOptional<z.ZodEnum<{
|
|
222
|
-
trace: "trace";
|
|
223
222
|
expected: "expected";
|
|
223
|
+
trace: "trace";
|
|
224
224
|
evidence: "evidence";
|
|
225
225
|
actual: "actual";
|
|
226
226
|
diff: "diff";
|
|
@@ -247,6 +247,7 @@ export type SuggestedNextStep = z.output<typeof SuggestedNextStepSchema>;
|
|
|
247
247
|
export declare function summarizeChecks(checks: CheckResult[]): ReportSummary;
|
|
248
248
|
export declare function deriveReportStatus(checks: CheckResult[]): ReportStatus;
|
|
249
249
|
export declare function deriveExitCode(status: ReportStatus): ExitCode;
|
|
250
|
+
export declare function deriveSuggestedNextSteps(checks: CheckResult[]): SuggestedNextStep[];
|
|
250
251
|
export declare function validateReport(report: unknown): ReflectionReport;
|
|
251
252
|
export declare function createReport(input: {
|
|
252
253
|
runId: string;
|
|
@@ -83,6 +83,45 @@ export function deriveExitCode(status) {
|
|
|
83
83
|
}
|
|
84
84
|
return ExitCode.Success;
|
|
85
85
|
}
|
|
86
|
+
export function deriveSuggestedNextSteps(checks) {
|
|
87
|
+
const blockingFailures = checks.filter((check) => check.severity === 'blocking' && (check.status === 'fail' || check.status === 'error'));
|
|
88
|
+
if (blockingFailures.length > 0) {
|
|
89
|
+
return [
|
|
90
|
+
{
|
|
91
|
+
kind: 'fix',
|
|
92
|
+
summary: `Fix blocking checks before updating baselines: ${formatCheckList(blockingFailures)}.`
|
|
93
|
+
}
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
const missingBaselines = checks.filter((check) => check.suite === 'visual' && check.severity === 'review' && check.metadata.classification === 'missing-baseline');
|
|
97
|
+
if (missingBaselines.length > 0) {
|
|
98
|
+
return [
|
|
99
|
+
{
|
|
100
|
+
kind: 'baseline',
|
|
101
|
+
summary: 'Review actual screenshots for missing baselines, then run `reflection update --dry-run --case <caseId> --from-run latest` for intentional first baselines.'
|
|
102
|
+
}
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
const visualReviewItems = checks.filter((check) => check.suite === 'visual' && check.severity === 'review' && (check.status === 'warn' || check.status === 'fail'));
|
|
106
|
+
if (visualReviewItems.length > 0) {
|
|
107
|
+
return [
|
|
108
|
+
{
|
|
109
|
+
kind: 'review',
|
|
110
|
+
summary: 'Inspect review-only visual artifacts, then run `reflection update --dry-run --case <caseId> --from-run latest` for intentional route visual changes.'
|
|
111
|
+
}
|
|
112
|
+
];
|
|
113
|
+
}
|
|
114
|
+
const reviewItems = checks.filter((check) => check.severity === 'review' && (check.status === 'warn' || check.status === 'fail'));
|
|
115
|
+
if (reviewItems.length > 0) {
|
|
116
|
+
return [
|
|
117
|
+
{
|
|
118
|
+
kind: 'review',
|
|
119
|
+
summary: `Inspect review-only checks: ${formatCheckList(reviewItems)}.`
|
|
120
|
+
}
|
|
121
|
+
];
|
|
122
|
+
}
|
|
123
|
+
return [{ kind: 'pass', summary: 'No action required; expand route or visual coverage when useful.' }];
|
|
124
|
+
}
|
|
86
125
|
export function validateReport(report) {
|
|
87
126
|
const parsed = ReflectionReportSchema.safeParse(report);
|
|
88
127
|
if (!parsed.success) {
|
|
@@ -106,7 +145,14 @@ export function createReport(input) {
|
|
|
106
145
|
summary: summarizeChecks(input.checks),
|
|
107
146
|
checks: input.checks,
|
|
108
147
|
artifacts: input.artifacts ?? [],
|
|
109
|
-
suggestedNextSteps: input.suggestedNextSteps ??
|
|
148
|
+
suggestedNextSteps: input.suggestedNextSteps ?? deriveSuggestedNextSteps(input.checks)
|
|
110
149
|
});
|
|
111
150
|
}
|
|
151
|
+
function formatCheckList(checks) {
|
|
152
|
+
const ids = checks.map((check) => check.id);
|
|
153
|
+
if (ids.length <= 3) {
|
|
154
|
+
return ids.join(', ');
|
|
155
|
+
}
|
|
156
|
+
return `${ids.slice(0, 3).join(', ')} and ${ids.length - 3} more`;
|
|
157
|
+
}
|
|
112
158
|
//# sourceMappingURL=report-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-schema.js","sourceRoot":"","sources":["../../src/core/report-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"report-schema.js","sourceRoot":"","sources":["../../src/core/report-schema.ts"],"names":[],"mappings":"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"}
|
package/docs/agent-workflows.md
CHANGED
|
@@ -7,21 +7,29 @@ Reflection is meant to give agents an evidence gate for rendered UI work. Agents
|
|
|
7
7
|
Before claiming frontend work is complete:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
reflection doctor
|
|
10
|
+
reflection doctor --config reflection.config.ts
|
|
11
11
|
reflection run --config reflection.config.ts --mode smoke
|
|
12
12
|
reflection review --json
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
`reflection doctor`
|
|
15
|
+
`reflection doctor --config` validates config loading/schema, summarizes enabled contracts and server settings, checks local runtime readiness, and remains read-only.
|
|
16
16
|
|
|
17
17
|
If the project uses a non-default config path or report root, pass it explicitly:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
reflection doctor
|
|
20
|
+
reflection doctor --config path/to/reflection.config.ts
|
|
21
21
|
reflection run --config path/to/reflection.config.ts --mode smoke --report-dir .reflection
|
|
22
22
|
reflection review --report-dir .reflection --json
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
For first-time setup discovery, agents may run the read-only preview:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
reflection init --dry-run --preset vite-react
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The init command currently previews proposed config and scripts only. Do not assume it wrote files, and do not run any future write mode without explicit human approval.
|
|
32
|
+
|
|
25
33
|
## How to interpret review JSON
|
|
26
34
|
|
|
27
35
|
Treat the review summary as the handoff contract:
|
|
@@ -100,7 +108,7 @@ Use Reflection as the UI evidence gate before claiming frontend work is complete
|
|
|
100
108
|
Run:
|
|
101
109
|
|
|
102
110
|
```bash
|
|
103
|
-
reflection doctor
|
|
111
|
+
reflection doctor --config reflection.config.ts
|
|
104
112
|
reflection run --config reflection.config.ts --mode smoke
|
|
105
113
|
reflection review --json
|
|
106
114
|
```
|
|
@@ -121,7 +129,7 @@ Full protocol: `docs/validation-process.md`.
|
|
|
121
129
|
CI should run Reflection and upload artifacts, but never update baselines:
|
|
122
130
|
|
|
123
131
|
```bash
|
|
124
|
-
reflection doctor
|
|
132
|
+
reflection doctor --config reflection.config.ts
|
|
125
133
|
reflection run --ci --config reflection.config.ts --mode smoke
|
|
126
134
|
reflection review --report-dir artifacts/reflection --json
|
|
127
135
|
```
|
package/docs/browser-contract.md
CHANGED
|
@@ -30,12 +30,22 @@ browser: {
|
|
|
30
30
|
reuseExisting: true,
|
|
31
31
|
timeoutMs: 60_000
|
|
32
32
|
},
|
|
33
|
+
setup: {
|
|
34
|
+
localStorage: {
|
|
35
|
+
'reflection:test-mode': 'enabled'
|
|
36
|
+
}
|
|
37
|
+
},
|
|
33
38
|
maskSelectors: ['[data-reflection-mask]'],
|
|
34
39
|
routes: [
|
|
35
40
|
{
|
|
36
41
|
id: 'login',
|
|
37
42
|
path: '/login',
|
|
38
43
|
viewports: ['desktop', 'mobile'],
|
|
44
|
+
setup: {
|
|
45
|
+
sessionStorage: {
|
|
46
|
+
'reflection:login-state': 'ready'
|
|
47
|
+
}
|
|
48
|
+
},
|
|
39
49
|
expects: [
|
|
40
50
|
{ role: 'heading', name: 'Login' },
|
|
41
51
|
{ label: 'Email' },
|
|
@@ -51,6 +61,27 @@ browser: {
|
|
|
51
61
|
}
|
|
52
62
|
```
|
|
53
63
|
|
|
64
|
+
## Route setup for authenticated fixtures
|
|
65
|
+
|
|
66
|
+
Use `setup.localStorage` and `setup.sessionStorage` to seed non-secret test state before Reflection navigates to a route:
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
routes: [
|
|
70
|
+
{
|
|
71
|
+
id: 'authenticated-home',
|
|
72
|
+
path: '/',
|
|
73
|
+
setup: {
|
|
74
|
+
localStorage: {
|
|
75
|
+
'reflection:test-user': 'fixture-user'
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
expects: [{ text: 'Welcome fixture-user' }]
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Browser-level setup applies to every route, and route-level setup extends or overrides it. Reflection records only setup key names in metadata so reports show that setup ran without logging values. Keep real credentials and production session values out of committed config; prefer test-mode auth or mock fixture tokens.
|
|
84
|
+
|
|
54
85
|
## Expectations
|
|
55
86
|
|
|
56
87
|
| Expectation | Use for |
|
package/docs/ci.md
CHANGED
|
@@ -4,8 +4,18 @@ Reflection is designed to be safe in CI: runs create evidence artifacts, but the
|
|
|
4
4
|
|
|
5
5
|
## Recommended command
|
|
6
6
|
|
|
7
|
+
Install Reflection in the consuming repository:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add -D reflection-check
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Then run the CI evidence loop:
|
|
14
|
+
|
|
7
15
|
```bash
|
|
16
|
+
reflection doctor --config reflection.config.ts
|
|
8
17
|
reflection run --ci --config reflection.config.ts --mode smoke
|
|
18
|
+
reflection review --report-dir artifacts/reflection --json
|
|
9
19
|
```
|
|
10
20
|
|
|
11
21
|
When `--ci` is enabled and `--report-dir` is not provided, Reflection writes artifacts to:
|
|
@@ -41,4 +51,4 @@ artifacts/reflection/runs/latest
|
|
|
41
51
|
|
|
42
52
|
## GitHub Actions example
|
|
43
53
|
|
|
44
|
-
See `.github/workflows/reflection.yml` for a repo-owned example that installs dependencies, builds Reflection, runs `reflection run --ci`,
|
|
54
|
+
See `.github/workflows/reflection.yml` for a repo-owned example that installs dependencies, builds Reflection, runs `reflection run --ci`, reviews `artifacts/reflection`, and uploads the report root for inspection.
|
package/docs/configuration.md
CHANGED
|
@@ -59,6 +59,11 @@ browser: {
|
|
|
59
59
|
reuseExisting: true,
|
|
60
60
|
timeoutMs: 60_000
|
|
61
61
|
},
|
|
62
|
+
setup: {
|
|
63
|
+
localStorage: {
|
|
64
|
+
'reflection:test-mode': 'enabled'
|
|
65
|
+
}
|
|
66
|
+
},
|
|
62
67
|
maskSelectors: ['[data-reflection-mask]'],
|
|
63
68
|
routes: [
|
|
64
69
|
{
|
|
@@ -66,6 +71,11 @@ browser: {
|
|
|
66
71
|
name: 'Home route',
|
|
67
72
|
path: '/',
|
|
68
73
|
viewports: ['desktop', 'mobile'],
|
|
74
|
+
setup: {
|
|
75
|
+
sessionStorage: {
|
|
76
|
+
'reflection:route-state': 'ready'
|
|
77
|
+
}
|
|
78
|
+
},
|
|
69
79
|
expects: [
|
|
70
80
|
{ role: 'heading', name: 'Home' },
|
|
71
81
|
{ noHorizontalOverflow: true },
|
|
@@ -96,10 +106,26 @@ Browser fields:
|
|
|
96
106
|
| `blocking` | Defaults to `true`; route assertion failures are blocking unless configured otherwise by current runner behavior. |
|
|
97
107
|
| `baseUrl` | Absolute URL used to visit route paths. |
|
|
98
108
|
| `server` | Optional managed server. If omitted, Reflection assumes `baseUrl` is already reachable. |
|
|
109
|
+
| `setup` | Optional browser-level storage setup applied before route navigation. Values are not written to report metadata. |
|
|
99
110
|
| `maskSelectors` | Selectors masked in browser screenshots. |
|
|
100
111
|
| `routes` | Route assertions executed in `smoke` and `full` modes. |
|
|
101
112
|
| `visualSmoke` | Route screenshot baseline comparisons driven from successful browser screenshots. |
|
|
102
113
|
|
|
114
|
+
Route setup fields:
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
setup: {
|
|
118
|
+
localStorage: {
|
|
119
|
+
'reflection:test-user': 'fixture-user'
|
|
120
|
+
},
|
|
121
|
+
sessionStorage: {
|
|
122
|
+
'reflection:test-session': 'fixture-session'
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Browser-level setup applies to every route. Route-level setup extends or overrides browser-level keys for that route. Reflection records only storage key names in metadata, never storage values. Use this for non-secret test-mode state, mock auth, or local fixture tokens. Do not commit real credentials or production session values in config.
|
|
128
|
+
|
|
103
129
|
Supported browser expectations:
|
|
104
130
|
|
|
105
131
|
```ts
|
package/docs/getting-started.md
CHANGED
|
@@ -20,6 +20,14 @@ pnpm exec reflection doctor
|
|
|
20
20
|
|
|
21
21
|
The package install exposes both `reflection` and `reflection-check` binaries. The docs use `reflection` as the primary command.
|
|
22
22
|
|
|
23
|
+
You can preview the setup Reflection would suggest without writing files:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pnpm exec reflection init --dry-run --preset vite-react
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
`init --dry-run` prints proposed install commands, config, and script guidance. It is read-only; creating or updating files still happens manually.
|
|
30
|
+
|
|
23
31
|
For local tarball testing before a registry publish, create and install a packed artifact instead.
|
|
24
32
|
|
|
25
33
|
From the Reflection repository:
|
|
@@ -84,18 +92,24 @@ reflection run --config reflection.config.ts --mode smoke
|
|
|
84
92
|
reflection review --latest
|
|
85
93
|
```
|
|
86
94
|
|
|
95
|
+
Pass the config to `doctor` when you want a read-only preflight of the consuming repository setup:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
reflection doctor --config reflection.config.ts
|
|
99
|
+
```
|
|
100
|
+
|
|
87
101
|
During Reflection development, use the built CLI:
|
|
88
102
|
|
|
89
103
|
```bash
|
|
90
104
|
pnpm build
|
|
91
|
-
node dist/cli.js doctor
|
|
105
|
+
node dist/cli.js doctor --config examples/basic-react/reflection.config.ts
|
|
92
106
|
node dist/cli.js run --config examples/basic-react/reflection.config.ts --mode smoke
|
|
93
107
|
node dist/cli.js review --latest
|
|
94
108
|
```
|
|
95
109
|
|
|
96
110
|
`reflection run` writes reports and artifacts under `.reflection/runs/<run-id>/` by default.
|
|
97
111
|
|
|
98
|
-
`reflection doctor`
|
|
112
|
+
`reflection doctor --config` validates that the config can be loaded, summarizes enabled contracts and server settings, checks local runtime readiness, and does not start servers or mutate baselines. Use `--check-server` when you explicitly want it to probe the configured server `readyUrl` without starting the server.
|
|
99
113
|
|
|
100
114
|
Important files:
|
|
101
115
|
|
|
@@ -147,7 +161,7 @@ Use Reflection as the UI evidence gate before claiming frontend work is complete
|
|
|
147
161
|
Run:
|
|
148
162
|
|
|
149
163
|
```bash
|
|
150
|
-
reflection doctor
|
|
164
|
+
reflection doctor --config reflection.config.ts
|
|
151
165
|
reflection run --config reflection.config.ts --mode smoke
|
|
152
166
|
reflection review --json
|
|
153
167
|
```
|