@stackbilt/cli 0.1.10 → 0.1.12
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 +24 -11
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +47 -10
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/init.d.ts +12 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +234 -42
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +165 -2
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +1 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/why.d.ts +1 -0
- package/dist/commands/why.d.ts.map +1 -0
- package/dist/commands/why.js +39 -3
- package/dist/commands/why.js.map +1 -0
- package/dist/config.d.ts +12 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +40 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -101,14 +101,23 @@ Explains the adoption case in plain terms (problem, what Charter enforces, expec
|
|
|
101
101
|
|
|
102
102
|
Bootstrap `.charter/` with config, patterns, and policies. Optionally generates a GitHub Actions workflow.
|
|
103
103
|
This is the command that applies Charter governance into a repository.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
charter setup --ci github --yes
|
|
107
|
+
charter setup --detect-only
|
|
108
|
+
charter setup --preset frontend
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
For mixed repos (for example Worker backend + React frontend under `client/`), prefer:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
charter setup --detect-only
|
|
115
|
+
charter setup --preset fullstack --ci github --yes
|
|
116
|
+
```
|
|
104
117
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
### `charter init`
|
|
110
|
-
|
|
111
|
-
Scaffold `.charter/` config templates only.
|
|
118
|
+
### `charter init`
|
|
119
|
+
|
|
120
|
+
Scaffold `.charter/` config templates only. Supports `--preset worker|frontend|backend|fullstack`.
|
|
112
121
|
|
|
113
122
|
### `charter doctor`
|
|
114
123
|
|
|
@@ -130,9 +139,9 @@ Scan files against blessed-stack patterns in `.charter/patterns/*.json`.
|
|
|
130
139
|
charter drift --path ./src --ci
|
|
131
140
|
```
|
|
132
141
|
|
|
133
|
-
### `charter audit`
|
|
134
|
-
|
|
135
|
-
Generate a governance audit report covering trailers, risk, and
|
|
142
|
+
### `charter audit`
|
|
143
|
+
|
|
144
|
+
Generate a governance audit report covering trailers, risk, drift, and policy-section coverage quality.
|
|
136
145
|
|
|
137
146
|
### `charter classify`
|
|
138
147
|
|
|
@@ -149,7 +158,11 @@ charter classify "update button color"
|
|
|
149
158
|
| `--config <path>` | Path to `.charter/` directory | `.charter/` |
|
|
150
159
|
| `--format <mode>` | Output: `text` or `json` | `text` |
|
|
151
160
|
| `--ci` | CI mode: exit non-zero on WARN or FAIL | off |
|
|
152
|
-
| `--yes` | Auto-accept safe setup overwrites | off |
|
|
161
|
+
| `--yes` | Auto-accept safe setup overwrites | off |
|
|
162
|
+
|
|
163
|
+
Setup-only options:
|
|
164
|
+
- `--preset <worker|frontend|backend|fullstack>`: override auto-detected preset
|
|
165
|
+
- `--detect-only`: print stack detection result and selected preset without writing files
|
|
153
166
|
|
|
154
167
|
## Exit Codes
|
|
155
168
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAoD3C,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBvE"}
|
package/dist/commands/audit.js
CHANGED
|
@@ -42,6 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.auditCommand = auditCommand;
|
|
43
43
|
const node_child_process_1 = require("node:child_process");
|
|
44
44
|
const fs = __importStar(require("node:fs"));
|
|
45
|
+
const path = __importStar(require("node:path"));
|
|
45
46
|
const index_1 = require("../index");
|
|
46
47
|
const config_1 = require("../config");
|
|
47
48
|
const git_1 = require("@stackbilt/git");
|
|
@@ -49,7 +50,7 @@ const git_2 = require("@stackbilt/git");
|
|
|
49
50
|
async function auditCommand(options) {
|
|
50
51
|
const config = (0, config_1.loadConfig)(options.configPath);
|
|
51
52
|
const patterns = (0, config_1.loadPatterns)(options.configPath);
|
|
52
|
-
const report = generateAuditReport(config.project, options.configPath, patterns);
|
|
53
|
+
const report = generateAuditReport(config, config.project, options.configPath, patterns);
|
|
53
54
|
if (options.format === 'json') {
|
|
54
55
|
console.log(JSON.stringify(report, null, 2));
|
|
55
56
|
}
|
|
@@ -61,7 +62,7 @@ async function auditCommand(options) {
|
|
|
61
62
|
}
|
|
62
63
|
return index_1.EXIT_CODE.SUCCESS;
|
|
63
64
|
}
|
|
64
|
-
function generateAuditReport(projectName, configPath, patterns) {
|
|
65
|
+
function generateAuditReport(config, projectName, configPath, patterns) {
|
|
65
66
|
const commits = getRecentCommits(50);
|
|
66
67
|
const parsed = (0, git_1.parseAllTrailers)(commits);
|
|
67
68
|
const linkedCommits = new Set();
|
|
@@ -87,14 +88,15 @@ function generateAuditReport(projectName, configPath, patterns) {
|
|
|
87
88
|
const policyFiles = fs.existsSync(policiesDir)
|
|
88
89
|
? fs.readdirSync(policiesDir).filter((f) => f.endsWith('.md'))
|
|
89
90
|
: [];
|
|
91
|
+
const policyCoverage = evaluatePolicyCoverage(config, policiesDir, policyFiles);
|
|
90
92
|
const trailerScore = Math.min(100, coveragePercent * 1.5);
|
|
91
93
|
const patternScore = Math.min(100, activePatterns.length * 20);
|
|
92
|
-
const policyScore =
|
|
94
|
+
const policyScore = policyCoverage.coveragePercent;
|
|
93
95
|
const overall = Math.round((trailerScore * 0.5) + (patternScore * 0.3) + (policyScore * 0.2));
|
|
94
96
|
const scoreInputs = {
|
|
95
97
|
coveragePercent,
|
|
96
98
|
activePatterns: activePatterns.length,
|
|
97
|
-
|
|
99
|
+
missingSections: policyCoverage.missingSections,
|
|
98
100
|
};
|
|
99
101
|
return {
|
|
100
102
|
project: projectName,
|
|
@@ -115,6 +117,9 @@ function generateAuditReport(projectName, configPath, patterns) {
|
|
|
115
117
|
},
|
|
116
118
|
policies: {
|
|
117
119
|
files: policyFiles,
|
|
120
|
+
coveragePercent: policyCoverage.coveragePercent,
|
|
121
|
+
matchedSections: policyCoverage.matchedSections,
|
|
122
|
+
missingSections: policyCoverage.missingSections,
|
|
118
123
|
},
|
|
119
124
|
score: {
|
|
120
125
|
overall,
|
|
@@ -126,7 +131,7 @@ function generateAuditReport(projectName, configPath, patterns) {
|
|
|
126
131
|
criteria: {
|
|
127
132
|
trailerCoverage: 'coverage_percent * 1.5 (max 100). 67%+ coverage earns full points.',
|
|
128
133
|
patternDefinitions: 'active_pattern_count * 20 (max 100). 5+ active patterns earns full points.',
|
|
129
|
-
policyDocumentation: '
|
|
134
|
+
policyDocumentation: 'policy section coverage percent from config.audit.policyCoverage.requiredSections (max 100).',
|
|
130
135
|
},
|
|
131
136
|
recommendations: getRecommendations(scoreInputs),
|
|
132
137
|
},
|
|
@@ -153,6 +158,8 @@ function printReport(report) {
|
|
|
153
158
|
console.log('');
|
|
154
159
|
console.log(' Policy Documentation');
|
|
155
160
|
console.log(` Policy files: ${report.policies.files.length}`);
|
|
161
|
+
console.log(` Coverage: ${report.policies.coveragePercent}%`);
|
|
162
|
+
console.log(` Missing sections: ${report.policies.missingSections.length}`);
|
|
156
163
|
for (const file of report.policies.files) {
|
|
157
164
|
console.log(` - ${file}`);
|
|
158
165
|
}
|
|
@@ -233,13 +240,43 @@ function getRecommendations(inputs) {
|
|
|
233
240
|
else {
|
|
234
241
|
recommendations.push('Pattern definitions are at full-score threshold.');
|
|
235
242
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
recommendations.push(`Add ${missingPolicies} policy markdown file(s) in .charter/policies/ to reach full policy score (target: 3 policy files).`);
|
|
243
|
+
if (inputs.missingSections.length > 0) {
|
|
244
|
+
recommendations.push(`Add missing policy coverage sections: ${inputs.missingSections.join(', ')}.`);
|
|
239
245
|
}
|
|
240
246
|
else {
|
|
241
|
-
recommendations.push('Policy documentation is at full-score threshold.');
|
|
247
|
+
recommendations.push('Policy documentation coverage is at full-score threshold.');
|
|
242
248
|
}
|
|
243
249
|
return recommendations;
|
|
244
250
|
}
|
|
245
|
-
|
|
251
|
+
function evaluatePolicyCoverage(config, policiesDir, policyFiles) {
|
|
252
|
+
const required = config.audit.policyCoverage.requiredSections || [];
|
|
253
|
+
if (!config.audit.policyCoverage.enabled || required.length === 0) {
|
|
254
|
+
return {
|
|
255
|
+
coveragePercent: 100,
|
|
256
|
+
matchedSections: [],
|
|
257
|
+
missingSections: [],
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
const normalizedContent = policyFiles
|
|
261
|
+
.map((f) => fs.readFileSync(path.join(policiesDir, f), 'utf-8'))
|
|
262
|
+
.join('\n')
|
|
263
|
+
.toLowerCase();
|
|
264
|
+
const matchedSections = [];
|
|
265
|
+
const missingSections = [];
|
|
266
|
+
for (const section of required) {
|
|
267
|
+
const matches = section.match?.some((token) => normalizedContent.includes(token.toLowerCase())) || false;
|
|
268
|
+
if (matches) {
|
|
269
|
+
matchedSections.push(section.title);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
missingSections.push(section.title);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
const coveragePercent = Math.round((matchedSections.length / required.length) * 100);
|
|
276
|
+
return {
|
|
277
|
+
coveragePercent,
|
|
278
|
+
matchedSections,
|
|
279
|
+
missingSections,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -4,12 +4,23 @@
|
|
|
4
4
|
* Scaffolds the .charter/ directory with default config and example patterns.
|
|
5
5
|
*/
|
|
6
6
|
import type { CLIOptions } from '../index';
|
|
7
|
+
export type StackPreset = 'worker' | 'frontend' | 'backend' | 'fullstack';
|
|
7
8
|
interface InitResult {
|
|
8
9
|
created: boolean;
|
|
9
10
|
configPath: string;
|
|
10
11
|
files: string[];
|
|
11
12
|
}
|
|
13
|
+
interface InitializeOptions {
|
|
14
|
+
projectName?: string;
|
|
15
|
+
preset?: StackPreset;
|
|
16
|
+
features?: {
|
|
17
|
+
cloudflare?: boolean;
|
|
18
|
+
hono?: boolean;
|
|
19
|
+
react?: boolean;
|
|
20
|
+
vite?: boolean;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
12
23
|
export declare function initCommand(options: CLIOptions, args?: string[]): Promise<number>;
|
|
13
|
-
export declare function initializeCharter(configDir: string, force: boolean): InitResult;
|
|
24
|
+
export declare function initializeCharter(configDir: string, force: boolean, initOptions?: InitializeOptions): InitResult;
|
|
14
25
|
export {};
|
|
15
26
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAsL1E,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B3F;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,GAAE,iBAAsB,GAAG,UAAU,CAuCpH"}
|
package/dist/commands/init.js
CHANGED
|
@@ -44,30 +44,188 @@ const fs = __importStar(require("node:fs"));
|
|
|
44
44
|
const path = __importStar(require("node:path"));
|
|
45
45
|
const index_1 = require("../index");
|
|
46
46
|
const config_1 = require("../config");
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
47
|
+
const PATTERN_TEMPLATES = {
|
|
48
|
+
worker: [
|
|
49
|
+
{
|
|
50
|
+
name: 'Edge Compute',
|
|
51
|
+
category: 'COMPUTE',
|
|
52
|
+
blessed_solution: 'Cloudflare Workers for edge compute',
|
|
53
|
+
rationale: 'Low-latency runtime close to users',
|
|
54
|
+
anti_patterns: 'Avoid express/fastify for new edge services',
|
|
55
|
+
status: 'ACTIVE',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Edge Data',
|
|
59
|
+
category: 'DATA',
|
|
60
|
+
blessed_solution: 'Cloudflare D1 for transactional edge data',
|
|
61
|
+
rationale: 'Co-located data with worker runtime',
|
|
62
|
+
anti_patterns: 'Avoid direct pg/mysql clients in edge handlers',
|
|
63
|
+
status: 'ACTIVE',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'Queue Processing',
|
|
67
|
+
category: 'ASYNC',
|
|
68
|
+
blessed_solution: 'Cloudflare Queues for asynchronous workloads',
|
|
69
|
+
rationale: 'Durable retries for non-request work',
|
|
70
|
+
anti_patterns: 'Avoid long-running synchronous request chains',
|
|
71
|
+
status: 'ACTIVE',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'Edge Security',
|
|
75
|
+
category: 'SECURITY',
|
|
76
|
+
blessed_solution: 'Token-based auth with scoped service bindings',
|
|
77
|
+
rationale: 'Limits blast radius across edge services',
|
|
78
|
+
anti_patterns: 'Avoid shared hardcoded secrets across handlers',
|
|
79
|
+
status: 'ACTIVE',
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
frontend: [
|
|
83
|
+
{
|
|
84
|
+
name: 'Frontend Runtime',
|
|
85
|
+
category: 'COMPUTE',
|
|
86
|
+
blessed_solution: 'React/Vite or Next.js for UI runtime',
|
|
87
|
+
rationale: 'Stable frontend delivery and ecosystem support',
|
|
88
|
+
anti_patterns: 'Avoid ad-hoc SPA bootstraps without build pipeline',
|
|
89
|
+
status: 'ACTIVE',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'State Management',
|
|
93
|
+
category: 'INTEGRATION',
|
|
94
|
+
blessed_solution: 'Centralized client state (Zustand/Redux)',
|
|
95
|
+
rationale: 'Predictable UI state transitions',
|
|
96
|
+
anti_patterns: 'Avoid deeply nested ad-hoc local state trees',
|
|
97
|
+
status: 'ACTIVE',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: 'API Contract Layer',
|
|
101
|
+
category: 'INTEGRATION',
|
|
102
|
+
blessed_solution: 'Typed API client boundary module',
|
|
103
|
+
rationale: 'Prevents request shape drift across pages',
|
|
104
|
+
anti_patterns: 'Avoid raw fetch calls scattered across components',
|
|
105
|
+
status: 'ACTIVE',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: 'Frontend Security',
|
|
109
|
+
category: 'SECURITY',
|
|
110
|
+
blessed_solution: 'HTTP-only session + CSRF-aware mutation flows',
|
|
111
|
+
rationale: 'Mitigates token leakage and unsafe writes',
|
|
112
|
+
anti_patterns: 'Avoid storing auth tokens in localStorage',
|
|
113
|
+
status: 'ACTIVE',
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
backend: [
|
|
117
|
+
{
|
|
118
|
+
name: 'Service Runtime',
|
|
119
|
+
category: 'COMPUTE',
|
|
120
|
+
blessed_solution: 'Node service runtime with typed request boundaries',
|
|
121
|
+
rationale: 'Operationally stable API execution model',
|
|
122
|
+
anti_patterns: 'Avoid implicit any/unknown request payload parsing',
|
|
123
|
+
status: 'ACTIVE',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'Data Access Layer',
|
|
127
|
+
category: 'DATA',
|
|
128
|
+
blessed_solution: 'Repository/service abstraction around DB operations',
|
|
129
|
+
rationale: 'Centralizes schema and migration safety',
|
|
130
|
+
anti_patterns: 'Avoid direct SQL calls spread across handlers',
|
|
131
|
+
status: 'ACTIVE',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'Async Jobs',
|
|
135
|
+
category: 'ASYNC',
|
|
136
|
+
blessed_solution: 'Queue-backed workers for retries and background work',
|
|
137
|
+
rationale: 'Improves resilience of non-critical tasks',
|
|
138
|
+
anti_patterns: 'Avoid blocking API requests on batch/background tasks',
|
|
139
|
+
status: 'ACTIVE',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'API Security',
|
|
143
|
+
category: 'SECURITY',
|
|
144
|
+
blessed_solution: 'Scoped auth middleware and service-level authorization',
|
|
145
|
+
rationale: 'Consistent access control across endpoints',
|
|
146
|
+
anti_patterns: 'Avoid route-specific ad-hoc authorization logic',
|
|
147
|
+
status: 'ACTIVE',
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
fullstack: [
|
|
151
|
+
{
|
|
152
|
+
name: 'App Runtime Split',
|
|
153
|
+
category: 'COMPUTE',
|
|
154
|
+
blessed_solution: 'Frontend app plus API service/edge runtime split',
|
|
155
|
+
rationale: 'Clear ownership between UI and backend concerns',
|
|
156
|
+
anti_patterns: 'Avoid coupling frontend state logic directly to DB models',
|
|
157
|
+
status: 'ACTIVE',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: 'Primary Data Store',
|
|
161
|
+
category: 'DATA',
|
|
162
|
+
blessed_solution: 'Single primary transactional data layer with migrations',
|
|
163
|
+
rationale: 'Consistent source of truth for read/write paths',
|
|
164
|
+
anti_patterns: 'Avoid duplicating write sources across multiple stores',
|
|
165
|
+
status: 'ACTIVE',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: 'API Integration Boundary',
|
|
169
|
+
category: 'INTEGRATION',
|
|
170
|
+
blessed_solution: 'Typed API client/server contracts',
|
|
171
|
+
rationale: 'Reduces interface drift between frontend and backend',
|
|
172
|
+
anti_patterns: 'Avoid undocumented cross-layer payload assumptions',
|
|
173
|
+
status: 'ACTIVE',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'Background Processing',
|
|
177
|
+
category: 'ASYNC',
|
|
178
|
+
blessed_solution: 'Queue/job model for notifications and batch workflows',
|
|
179
|
+
rationale: 'Protects user-facing latency from long-running tasks',
|
|
180
|
+
anti_patterns: 'Avoid synchronous execution of retry-prone integrations',
|
|
181
|
+
status: 'ACTIVE',
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
name: 'Security Baseline',
|
|
185
|
+
category: 'SECURITY',
|
|
186
|
+
blessed_solution: 'Centralized authn/authz and secret management policy',
|
|
187
|
+
rationale: 'Consistent controls across frontend/backend surfaces',
|
|
188
|
+
anti_patterns: 'Avoid mixed auth patterns across services and clients',
|
|
189
|
+
status: 'ACTIVE',
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
};
|
|
193
|
+
const DEFAULT_POLICY_CONTENT = `# Governance Policy
|
|
194
|
+
|
|
195
|
+
## Commit Trailers
|
|
196
|
+
|
|
197
|
+
High-risk commits (migrations, handlers, services) should include:
|
|
198
|
+
|
|
199
|
+
\`\`\`
|
|
200
|
+
Governed-By: <ADR-ID or ledger entry reference>
|
|
201
|
+
Resolves-Request: <governance request ID>
|
|
202
|
+
\`\`\`
|
|
203
|
+
|
|
204
|
+
## Change Classification
|
|
205
|
+
|
|
206
|
+
Changes are classified as:
|
|
207
|
+
- **SURFACE**: Docs, comments, naming - no code logic
|
|
208
|
+
- **LOCAL**: Single service, contained impact
|
|
209
|
+
- **CROSS_CUTTING**: Multiple services, data model, API contracts
|
|
210
|
+
|
|
211
|
+
## Exception Path
|
|
212
|
+
|
|
213
|
+
Use documented exception requests when policy cannot be applied directly.
|
|
214
|
+
Capture waiver reason, approver, and expiration.
|
|
215
|
+
|
|
216
|
+
## Escalation & Approval
|
|
217
|
+
|
|
218
|
+
Cross-cutting changes require architectural review before merge.
|
|
219
|
+
Escalate ambiguous or high-risk decisions for explicit approval.
|
|
220
|
+
`;
|
|
65
221
|
const GITIGNORE_CONTENT = `# Charter local state
|
|
66
222
|
.cache/
|
|
67
223
|
`;
|
|
68
224
|
async function initCommand(options, args = []) {
|
|
69
225
|
const force = options.yes || args.includes('--force');
|
|
70
|
-
const
|
|
226
|
+
const presetFlag = getFlag(args, '--preset');
|
|
227
|
+
const preset = isValidPreset(presetFlag) ? presetFlag : undefined;
|
|
228
|
+
const result = initializeCharter(options.configPath, force, { preset });
|
|
71
229
|
if (options.format === 'json') {
|
|
72
230
|
console.log(JSON.stringify(result, null, 2));
|
|
73
231
|
return index_1.EXIT_CODE.SUCCESS;
|
|
@@ -90,7 +248,7 @@ async function initCommand(options, args = []) {
|
|
|
90
248
|
console.log(' 3. Run: charter validate');
|
|
91
249
|
return index_1.EXIT_CODE.SUCCESS;
|
|
92
250
|
}
|
|
93
|
-
function initializeCharter(configDir, force) {
|
|
251
|
+
function initializeCharter(configDir, force, initOptions = {}) {
|
|
94
252
|
const configFile = path.join(configDir, 'config.json');
|
|
95
253
|
const exists = fs.existsSync(configFile);
|
|
96
254
|
if (exists && !force) {
|
|
@@ -104,28 +262,11 @@ function initializeCharter(configDir, force) {
|
|
|
104
262
|
for (const dir of dirs) {
|
|
105
263
|
fs.mkdirSync(dir, { recursive: true });
|
|
106
264
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
fs.writeFileSync(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
High-risk commits (migrations, handlers, services) should include:
|
|
114
|
-
|
|
115
|
-
\`\`\`
|
|
116
|
-
Governed-By: <ADR-ID or ledger entry reference>
|
|
117
|
-
Resolves-Request: <governance request ID>
|
|
118
|
-
\`\`\`
|
|
119
|
-
|
|
120
|
-
## Change Classification
|
|
121
|
-
|
|
122
|
-
Changes are classified as:
|
|
123
|
-
- **SURFACE**: Docs, comments, naming - no code logic
|
|
124
|
-
- **LOCAL**: Single service, contained impact
|
|
125
|
-
- **CROSS_CUTTING**: Multiple services, data model, API contracts
|
|
126
|
-
|
|
127
|
-
Cross-cutting changes require architectural review before merge.
|
|
128
|
-
`);
|
|
265
|
+
const selectedPreset = initOptions.preset || 'fullstack';
|
|
266
|
+
const patterns = buildPatternTemplate(selectedPreset, initOptions.features);
|
|
267
|
+
fs.writeFileSync(configFile, (0, config_1.getDefaultConfigJSON)(initOptions.projectName) + '\n');
|
|
268
|
+
fs.writeFileSync(path.join(configDir, 'patterns', 'blessed-stack.json'), JSON.stringify(patterns, null, 2) + '\n');
|
|
269
|
+
fs.writeFileSync(path.join(configDir, 'policies', 'governance.md'), DEFAULT_POLICY_CONTENT);
|
|
129
270
|
fs.writeFileSync(path.join(configDir, '.gitignore'), GITIGNORE_CONTENT);
|
|
130
271
|
return {
|
|
131
272
|
created: true,
|
|
@@ -138,4 +279,55 @@ Cross-cutting changes require architectural review before merge.
|
|
|
138
279
|
],
|
|
139
280
|
};
|
|
140
281
|
}
|
|
282
|
+
function isValidPreset(value) {
|
|
283
|
+
return value === 'worker' || value === 'frontend' || value === 'backend' || value === 'fullstack';
|
|
284
|
+
}
|
|
285
|
+
function getFlag(args, flag) {
|
|
286
|
+
const idx = args.indexOf(flag);
|
|
287
|
+
if (idx !== -1 && idx + 1 < args.length) {
|
|
288
|
+
return args[idx + 1];
|
|
289
|
+
}
|
|
290
|
+
return undefined;
|
|
291
|
+
}
|
|
292
|
+
function buildPatternTemplate(preset, features) {
|
|
293
|
+
const base = JSON.parse(JSON.stringify(PATTERN_TEMPLATES[preset]));
|
|
294
|
+
if (!features) {
|
|
295
|
+
return base;
|
|
296
|
+
}
|
|
297
|
+
if (features.cloudflare) {
|
|
298
|
+
base.unshift({
|
|
299
|
+
name: 'Cloudflare Worker Runtime',
|
|
300
|
+
category: 'COMPUTE',
|
|
301
|
+
blessed_solution: 'Cloudflare Workers + Wrangler deployment workflow',
|
|
302
|
+
rationale: 'Cloudflare-native edge execution for APIs and middleware',
|
|
303
|
+
anti_patterns: 'Avoid mixing non-edge runtime assumptions into worker handlers',
|
|
304
|
+
status: 'ACTIVE',
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
if (features.hono) {
|
|
308
|
+
base.unshift({
|
|
309
|
+
name: 'Hono API Layer',
|
|
310
|
+
category: 'INTEGRATION',
|
|
311
|
+
blessed_solution: 'Hono route composition for worker/backend APIs',
|
|
312
|
+
rationale: 'Typed lightweight router aligned to edge/server runtimes',
|
|
313
|
+
anti_patterns: 'Avoid ad-hoc route registration patterns per handler file',
|
|
314
|
+
status: 'ACTIVE',
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
if (features.react || features.vite) {
|
|
318
|
+
base.unshift({
|
|
319
|
+
name: 'React/Vite Frontend Baseline',
|
|
320
|
+
category: 'COMPUTE',
|
|
321
|
+
blessed_solution: 'React + Vite build/runtime conventions',
|
|
322
|
+
rationale: 'Fast dev feedback and predictable frontend artifact generation',
|
|
323
|
+
anti_patterns: 'Avoid mixed frontend build toolchains in the same app',
|
|
324
|
+
status: 'ACTIVE',
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
const dedup = new Map();
|
|
328
|
+
for (const pattern of base) {
|
|
329
|
+
dedup.set(pattern.name, pattern);
|
|
330
|
+
}
|
|
331
|
+
return [...dedup.values()];
|
|
332
|
+
}
|
|
141
333
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA0E3C,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6GvF"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -83,13 +83,61 @@ jobs:
|
|
|
83
83
|
`;
|
|
84
84
|
async function setupCommand(options, args) {
|
|
85
85
|
const ciMode = getFlag(args, '--ci');
|
|
86
|
+
const presetFlag = getFlag(args, '--preset');
|
|
87
|
+
const detectOnly = args.includes('--detect-only');
|
|
86
88
|
if (ciMode && ciMode !== 'github') {
|
|
87
89
|
throw new index_1.CLIError(`Unsupported CI target: ${ciMode}. Supported: github`);
|
|
88
90
|
}
|
|
89
|
-
|
|
91
|
+
if (presetFlag && !isValidPreset(presetFlag)) {
|
|
92
|
+
throw new index_1.CLIError(`Invalid --preset value: ${presetFlag}. Use worker|frontend|backend|fullstack.`);
|
|
93
|
+
}
|
|
94
|
+
const detection = detectStack();
|
|
95
|
+
const selectedPreset = isValidPreset(presetFlag) ? presetFlag : detection.suggestedPreset;
|
|
96
|
+
const inferenceMode = presetFlag
|
|
97
|
+
? 'preset-override'
|
|
98
|
+
: detection.confidence === 'LOW'
|
|
99
|
+
? 'fallback-conservative'
|
|
100
|
+
: 'auto';
|
|
101
|
+
if (detectOnly) {
|
|
102
|
+
if (options.format === 'json') {
|
|
103
|
+
console.log(JSON.stringify({
|
|
104
|
+
detected: detection,
|
|
105
|
+
selectedPreset,
|
|
106
|
+
inferenceMode,
|
|
107
|
+
}, null, 2));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log('');
|
|
111
|
+
console.log(' Stack detection result');
|
|
112
|
+
console.log(` Runtime: ${detection.runtime.join(', ') || 'none detected'}`);
|
|
113
|
+
console.log(` Frameworks: ${detection.frameworks.join(', ') || 'none detected'}`);
|
|
114
|
+
console.log(` State: ${detection.state.join(', ') || 'none detected'}`);
|
|
115
|
+
console.log(` Confidence: ${detection.confidence}`);
|
|
116
|
+
console.log(` Selected preset: ${selectedPreset} (${inferenceMode})`);
|
|
117
|
+
if (detection.mixedStack) {
|
|
118
|
+
console.log(' Mixed stack detected (frontend + backend/worker). Recommended preset: fullstack');
|
|
119
|
+
console.log(' Example: charter setup --preset fullstack --ci github --yes');
|
|
120
|
+
}
|
|
121
|
+
console.log('');
|
|
122
|
+
}
|
|
123
|
+
return index_2.EXIT_CODE.SUCCESS;
|
|
124
|
+
}
|
|
125
|
+
const initResult = (0, init_1.initializeCharter)(options.configPath, options.yes || args.includes('--force'), {
|
|
126
|
+
preset: selectedPreset,
|
|
127
|
+
projectName: inferProjectName(),
|
|
128
|
+
features: {
|
|
129
|
+
cloudflare: detection.signals.hasCloudflare,
|
|
130
|
+
hono: detection.signals.hasHono,
|
|
131
|
+
react: detection.signals.hasReact,
|
|
132
|
+
vite: detection.signals.hasVite,
|
|
133
|
+
},
|
|
134
|
+
});
|
|
90
135
|
const result = {
|
|
91
136
|
configPath: options.configPath,
|
|
92
137
|
initialized: initResult.created,
|
|
138
|
+
detected: detection,
|
|
139
|
+
selectedPreset,
|
|
140
|
+
inferenceMode,
|
|
93
141
|
workflow: {
|
|
94
142
|
mode: ciMode === 'github' ? 'github' : 'none',
|
|
95
143
|
},
|
|
@@ -110,6 +158,12 @@ async function setupCommand(options, args) {
|
|
|
110
158
|
console.log(' Governance guardrails are now active for this repo.');
|
|
111
159
|
console.log(` Baseline path: ${result.configPath}`);
|
|
112
160
|
console.log(` Baseline created: ${result.initialized ? 'yes' : 'already present'}`);
|
|
161
|
+
console.log(` Stack preset: ${result.selectedPreset} (${result.inferenceMode})`);
|
|
162
|
+
console.log(` Detection confidence: ${result.detected.confidence}`);
|
|
163
|
+
if (result.detected.mixedStack) {
|
|
164
|
+
console.log(' Mixed stack detected (frontend + backend/worker).');
|
|
165
|
+
console.log(' Recommendation: use --preset fullstack when frontend exists under client/ or apps/web.');
|
|
166
|
+
}
|
|
113
167
|
if (result.workflow.mode === 'github') {
|
|
114
168
|
console.log(` CI policy gate: ${result.workflow.created ? 'enabled' : 'already present'} (${result.workflow.path})`);
|
|
115
169
|
}
|
|
@@ -125,6 +179,112 @@ async function setupCommand(options, args) {
|
|
|
125
179
|
console.log(' 3. charter audit --format text');
|
|
126
180
|
return index_2.EXIT_CODE.SUCCESS;
|
|
127
181
|
}
|
|
182
|
+
function detectStack() {
|
|
183
|
+
const pkg = loadPackageJson();
|
|
184
|
+
if (!pkg) {
|
|
185
|
+
return {
|
|
186
|
+
runtime: [],
|
|
187
|
+
frameworks: [],
|
|
188
|
+
state: [],
|
|
189
|
+
signals: {
|
|
190
|
+
hasFrontend: false,
|
|
191
|
+
hasBackend: false,
|
|
192
|
+
hasWorker: false,
|
|
193
|
+
hasCloudflare: false,
|
|
194
|
+
hasHono: false,
|
|
195
|
+
hasReact: false,
|
|
196
|
+
hasVite: false,
|
|
197
|
+
},
|
|
198
|
+
mixedStack: false,
|
|
199
|
+
confidence: 'LOW',
|
|
200
|
+
suggestedPreset: 'fullstack',
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
const depNames = new Set([
|
|
204
|
+
...Object.keys(pkg.dependencies || {}),
|
|
205
|
+
...Object.keys(pkg.devDependencies || {}),
|
|
206
|
+
]);
|
|
207
|
+
const hasFrontendDep = hasAny(depNames, ['next', 'react', 'vite', 'vue', '@angular/core', 'svelte']);
|
|
208
|
+
const hasFrontendPathSignals = hasAnyPath(['client', 'frontend', 'apps/web', 'web']);
|
|
209
|
+
const hasFrontend = hasFrontendDep || hasFrontendPathSignals;
|
|
210
|
+
const hasBackend = hasAny(depNames, ['express', 'fastify', 'nestjs', '@nestjs/core', 'koa', 'hono']);
|
|
211
|
+
const hasWorker = hasAny(depNames, ['wrangler', '@cloudflare/workers-types']);
|
|
212
|
+
const hasCloudflare = hasAny(depNames, ['wrangler', '@cloudflare/workers-types']);
|
|
213
|
+
const hasHono = hasAny(depNames, ['hono']);
|
|
214
|
+
const hasReact = hasAny(depNames, ['react']);
|
|
215
|
+
const hasVite = hasAny(depNames, ['vite']);
|
|
216
|
+
const mixedStack = hasFrontend && (hasBackend || hasWorker);
|
|
217
|
+
const frameworks = [];
|
|
218
|
+
const runtime = [];
|
|
219
|
+
const state = [];
|
|
220
|
+
if (hasFrontendDep) {
|
|
221
|
+
frameworks.push(...pick(depNames, ['next', 'react', 'vite', 'vue', '@angular/core', 'svelte']));
|
|
222
|
+
}
|
|
223
|
+
if (hasBackend) {
|
|
224
|
+
frameworks.push(...pick(depNames, ['express', 'fastify', 'nestjs', '@nestjs/core', 'koa', 'hono']));
|
|
225
|
+
}
|
|
226
|
+
if (hasWorker) {
|
|
227
|
+
runtime.push('edge-worker');
|
|
228
|
+
}
|
|
229
|
+
if (pkg.engines?.node || hasAny(depNames, ['typescript', 'ts-node', 'express', 'fastify', 'next'])) {
|
|
230
|
+
runtime.push('node');
|
|
231
|
+
}
|
|
232
|
+
if (hasAny(depNames, ['zustand', 'redux', '@reduxjs/toolkit', 'mobx', 'xstate'])) {
|
|
233
|
+
state.push(...pick(depNames, ['zustand', 'redux', '@reduxjs/toolkit', 'mobx', 'xstate']));
|
|
234
|
+
}
|
|
235
|
+
const signals = {
|
|
236
|
+
hasFrontend,
|
|
237
|
+
hasBackend,
|
|
238
|
+
hasWorker,
|
|
239
|
+
hasCloudflare,
|
|
240
|
+
hasHono,
|
|
241
|
+
hasReact,
|
|
242
|
+
hasVite,
|
|
243
|
+
};
|
|
244
|
+
if (mixedStack) {
|
|
245
|
+
return { runtime, frameworks, state, signals, mixedStack: true, confidence: 'HIGH', suggestedPreset: 'fullstack' };
|
|
246
|
+
}
|
|
247
|
+
if (hasWorker && !hasFrontend && !hasBackend) {
|
|
248
|
+
return { runtime, frameworks, state, signals, mixedStack: false, confidence: 'HIGH', suggestedPreset: 'worker' };
|
|
249
|
+
}
|
|
250
|
+
if (hasFrontend) {
|
|
251
|
+
return { runtime, frameworks, state, signals, mixedStack: false, confidence: 'HIGH', suggestedPreset: 'frontend' };
|
|
252
|
+
}
|
|
253
|
+
if (hasBackend) {
|
|
254
|
+
return { runtime, frameworks, state, signals, mixedStack: false, confidence: 'HIGH', suggestedPreset: 'backend' };
|
|
255
|
+
}
|
|
256
|
+
if (runtime.length > 0 || state.length > 0) {
|
|
257
|
+
return { runtime, frameworks, state, signals, mixedStack: false, confidence: 'MEDIUM', suggestedPreset: 'fullstack' };
|
|
258
|
+
}
|
|
259
|
+
return { runtime, frameworks, state, signals, mixedStack: false, confidence: 'LOW', suggestedPreset: 'fullstack' };
|
|
260
|
+
}
|
|
261
|
+
function loadPackageJson() {
|
|
262
|
+
const packageJsonPath = path.resolve('package.json');
|
|
263
|
+
if (!fs.existsSync(packageJsonPath))
|
|
264
|
+
return null;
|
|
265
|
+
try {
|
|
266
|
+
return JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
function inferProjectName() {
|
|
273
|
+
const pkg = loadPackageJson();
|
|
274
|
+
if (pkg?.name && pkg.name.trim().length > 0) {
|
|
275
|
+
return pkg.name.trim();
|
|
276
|
+
}
|
|
277
|
+
return path.basename(process.cwd());
|
|
278
|
+
}
|
|
279
|
+
function hasAny(set, candidates) {
|
|
280
|
+
return candidates.some((c) => set.has(c));
|
|
281
|
+
}
|
|
282
|
+
function hasAnyPath(paths) {
|
|
283
|
+
return paths.some((p) => fs.existsSync(path.resolve(p)));
|
|
284
|
+
}
|
|
285
|
+
function pick(set, candidates) {
|
|
286
|
+
return candidates.filter((c) => set.has(c));
|
|
287
|
+
}
|
|
128
288
|
function writeFileIfMissing(targetPath, content, force) {
|
|
129
289
|
const absolute = path.resolve(targetPath);
|
|
130
290
|
const exists = fs.existsSync(absolute);
|
|
@@ -142,4 +302,7 @@ function getFlag(args, flag) {
|
|
|
142
302
|
}
|
|
143
303
|
return undefined;
|
|
144
304
|
}
|
|
145
|
-
|
|
305
|
+
function isValidPreset(value) {
|
|
306
|
+
return value === 'worker' || value === 'frontend' || value === 'backend' || value === 'fullstack';
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EH,oCA6GC;AAzLD,4CAA8B;AAC9B,gDAAkC;AAElC,oCAAoC;AACpC,oCAAqC;AACrC,iCAA6D;AAE7D,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCvB,CAAC;AAiCK,KAAK,UAAU,YAAY,CAAC,OAAmB,EAAE,IAAc;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAElD,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,gBAAQ,CAAC,0BAA0B,MAAM,qBAAqB,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,UAAU,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,gBAAQ,CAAC,2BAA2B,UAAU,0CAA0C,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;IAChC,MAAM,cAAc,GAAgB,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC;IACvG,MAAM,aAAa,GAAG,UAAU;QAC9B,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,KAAK;YAC9B,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,MAAM,CAAC;IAEb,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,QAAQ,EAAE,SAAS;gBACnB,cAAc;gBACd,aAAa;aACd,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,sBAAsB,cAAc,KAAK,aAAa,GAAG,CAAC,CAAC;YACvE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;gBACjG,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,iBAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,wBAAiB,EAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAChG,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,gBAAgB,EAAE;QAC/B,QAAQ,EAAE;YACR,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,aAAa;YAC3C,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;YAC/B,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ;YACjC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;SAChC;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAgB;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,UAAU,CAAC,OAAO;QAC/B,QAAQ,EAAE,SAAS;QACnB,cAAc;QACd,aAAa;QACb,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;SAC9C;KACF,CAAC;IAEF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3G,MAAM,CAAC,QAAQ,GAAG;YAChB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,YAAY;YAClB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,iBAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,cAAc,KAAK,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;IAC1G,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACxH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,OAAO,iBAAS,CAAC,OAAO,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;YACT,OAAO,EAAE;gBACP,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,KAAK;gBACjB,SAAS,EAAE,KAAK;gBAChB,aAAa,EAAE,KAAK;gBACpB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,KAAK;aACf;YACD,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,WAAW;SAC7B,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS;QAC/B,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QACtC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;KAC1C,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrG,MAAM,sBAAsB,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,cAAc,IAAI,sBAAsB,CAAC;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACrG,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAE9E,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,WAAW,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,cAAc,EAAE,CAAC;QACnB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,OAAO,GAAG;QACd,WAAW;QACX,UAAU;QACV,SAAS;QACT,aAAa;QACb,OAAO;QACP,QAAQ;QACR,OAAO;KACR,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;IACrH,CAAC;IACD,IAAI,SAAS,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;IACnH,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;IACrH,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;IACpH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;IACxH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;AACrH,CAAC;AAED,SAAS,eAAe;IAMtB,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,MAAM,CAAC,GAAgB,EAAE,UAAoB;IACpD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CAAC,KAAe;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,IAAI,CAAC,GAAgB,EAAE,UAAoB;IAClD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB,EAAE,OAAe,EAAE,KAAc;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,IAAc,EAAE,IAAY;IAC3C,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,SAAS,aAAa,CAAC,KAAyB;IAC9C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,WAAW,CAAC;AACpG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAqB3C,wBAAsB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqD1F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/why.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"why.d.ts","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAc3C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B5E;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCrE"}
|
package/dist/commands/why.js
CHANGED
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.quickstartCommand = quickstartCommand;
|
|
4
37
|
exports.whyCommand = whyCommand;
|
|
5
38
|
const node_child_process_1 = require("node:child_process");
|
|
6
|
-
const fs = require("node:fs");
|
|
7
|
-
const path = require("node:path");
|
|
39
|
+
const fs = __importStar(require("node:fs"));
|
|
40
|
+
const path = __importStar(require("node:path"));
|
|
8
41
|
const index_1 = require("../index");
|
|
9
42
|
const git_1 = require("@stackbilt/git");
|
|
10
43
|
async function quickstartCommand(options) {
|
|
@@ -144,7 +177,9 @@ function getRecentCommits(count) {
|
|
|
144
177
|
};
|
|
145
178
|
}
|
|
146
179
|
else if (line.trim() && current) {
|
|
147
|
-
current.files_changed
|
|
180
|
+
if (current.files_changed) {
|
|
181
|
+
current.files_changed.push(line.trim());
|
|
182
|
+
}
|
|
148
183
|
}
|
|
149
184
|
}
|
|
150
185
|
if (current)
|
|
@@ -166,3 +201,4 @@ function hasCommits() {
|
|
|
166
201
|
return false;
|
|
167
202
|
}
|
|
168
203
|
}
|
|
204
|
+
//# sourceMappingURL=why.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -41,6 +41,17 @@ export interface CharterConfig {
|
|
|
41
41
|
/** Post PR comments (requires GitHub token) */
|
|
42
42
|
postComments: boolean;
|
|
43
43
|
};
|
|
44
|
+
/** Audit scoring behavior */
|
|
45
|
+
audit: {
|
|
46
|
+
policyCoverage: {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
requiredSections: Array<{
|
|
49
|
+
id: string;
|
|
50
|
+
title: string;
|
|
51
|
+
match: string[];
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
44
55
|
}
|
|
45
56
|
declare const DEFAULT_CONFIG: CharterConfig;
|
|
46
57
|
/**
|
|
@@ -55,6 +66,6 @@ export declare function loadPatterns(configPath: string): Pattern[];
|
|
|
55
66
|
/**
|
|
56
67
|
* Get the default config as JSON string (for init command).
|
|
57
68
|
*/
|
|
58
|
-
export declare function getDefaultConfigJSON(): string;
|
|
69
|
+
export declare function getDefaultConfigJSON(projectName?: string): string;
|
|
59
70
|
export { DEFAULT_CONFIG };
|
|
60
71
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMhD,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,GAAG,EAAE;QACH,wDAAwD;QACxD,eAAe,EAAE,OAAO,CAAC;QACzB,qEAAqE;QACrE,gBAAgB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;KAC7C,CAAC;IAEF,8BAA8B;IAC9B,KAAK,EAAE;QACL,4BAA4B;QAC5B,OAAO,EAAE,OAAO,CAAC;QACjB,4CAA4C;QAC5C,QAAQ,EAAE,MAAM,CAAC;QACjB,oCAAoC;QACpC,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,oCAAoC;QACpC,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IAEF,0BAA0B;IAC1B,UAAU,EAAE;QACV,oDAAoD;QACpD,kBAAkB,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC;KACtD,CAAC;IAEF,kBAAkB;IAClB,EAAE,EAAE;QACF,mDAAmD;QACnD,UAAU,EAAE,OAAO,CAAC;QACpB,+CAA+C;QAC/C,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AAED,QAAA,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMhD,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,GAAG,EAAE;QACH,wDAAwD;QACxD,eAAe,EAAE,OAAO,CAAC;QACzB,qEAAqE;QACrE,gBAAgB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;KAC7C,CAAC;IAEF,8BAA8B;IAC9B,KAAK,EAAE;QACL,4BAA4B;QAC5B,OAAO,EAAE,OAAO,CAAC;QACjB,4CAA4C;QAC5C,QAAQ,EAAE,MAAM,CAAC;QACjB,oCAAoC;QACpC,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,oCAAoC;QACpC,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IAEF,0BAA0B;IAC1B,UAAU,EAAE;QACV,oDAAoD;QACpD,kBAAkB,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC;KACtD,CAAC;IAEF,kBAAkB;IAClB,EAAE,EAAE;QACF,mDAAmD;QACnD,UAAU,EAAE,OAAO,CAAC;QACpB,+CAA+C;QAC/C,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IAEF,6BAA6B;IAC7B,KAAK,EAAE;QACL,cAAc,EAAE;YACd,OAAO,EAAE,OAAO,CAAC;YACjB,gBAAgB,EAAE,KAAK,CAAC;gBACtB,EAAE,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,MAAM,EAAE,CAAC;aACjB,CAAC,CAAC;SACJ,CAAC;KACH,CAAC;CACH;AAED,QAAA,MAAM,cAAc,EAAE,aA+CrB,CAAC;AAMF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CA8B5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,EAAE,CAsC1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -66,6 +66,33 @@ const DEFAULT_CONFIG = {
|
|
|
66
66
|
failOnWarn: false,
|
|
67
67
|
postComments: false,
|
|
68
68
|
},
|
|
69
|
+
audit: {
|
|
70
|
+
policyCoverage: {
|
|
71
|
+
enabled: true,
|
|
72
|
+
requiredSections: [
|
|
73
|
+
{
|
|
74
|
+
id: 'commit_trailers',
|
|
75
|
+
title: 'Commit Trailers',
|
|
76
|
+
match: ['commit trailers', 'governed-by', 'resolves-request'],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: 'change_classification',
|
|
80
|
+
title: 'Change Classification',
|
|
81
|
+
match: ['change classification', 'surface', 'local', 'cross_cutting'],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'exception_path',
|
|
85
|
+
title: 'Exception Path',
|
|
86
|
+
match: ['exception', 'waiver', 'override'],
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: 'escalation_approval',
|
|
90
|
+
title: 'Escalation & Approval',
|
|
91
|
+
match: ['escalation', 'approval', 'architectural review'],
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
},
|
|
69
96
|
};
|
|
70
97
|
exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
|
|
71
98
|
// ============================================================================
|
|
@@ -91,6 +118,13 @@ function loadConfig(configPath) {
|
|
|
91
118
|
drift: { ...DEFAULT_CONFIG.drift, ...parsed.drift },
|
|
92
119
|
validation: { ...DEFAULT_CONFIG.validation, ...parsed.validation },
|
|
93
120
|
ci: { ...DEFAULT_CONFIG.ci, ...parsed.ci },
|
|
121
|
+
audit: {
|
|
122
|
+
policyCoverage: {
|
|
123
|
+
...DEFAULT_CONFIG.audit.policyCoverage,
|
|
124
|
+
...(parsed.audit?.policyCoverage || {}),
|
|
125
|
+
requiredSections: parsed.audit?.policyCoverage?.requiredSections || DEFAULT_CONFIG.audit.policyCoverage.requiredSections,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
94
128
|
};
|
|
95
129
|
}
|
|
96
130
|
catch (err) {
|
|
@@ -139,7 +173,11 @@ function loadPatterns(configPath) {
|
|
|
139
173
|
/**
|
|
140
174
|
* Get the default config as JSON string (for init command).
|
|
141
175
|
*/
|
|
142
|
-
function getDefaultConfigJSON() {
|
|
143
|
-
|
|
176
|
+
function getDefaultConfigJSON(projectName) {
|
|
177
|
+
const config = {
|
|
178
|
+
...DEFAULT_CONFIG,
|
|
179
|
+
project: projectName || DEFAULT_CONFIG.project,
|
|
180
|
+
};
|
|
181
|
+
return JSON.stringify(config, null, 2);
|
|
144
182
|
}
|
|
145
183
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.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;AAyCH,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,CAkDzD"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
* Config-driven governance checks that run locally and in CI.
|
|
6
6
|
* Zero cloud dependency - works fully offline.
|
|
7
7
|
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
12
|
exports.CLIError = exports.EXIT_CODE = void 0;
|
|
10
13
|
exports.run = run;
|
|
@@ -16,15 +19,17 @@ const audit_1 = require("./commands/audit");
|
|
|
16
19
|
const drift_1 = require("./commands/drift");
|
|
17
20
|
const classify_1 = require("./commands/classify");
|
|
18
21
|
const why_1 = require("./commands/why");
|
|
19
|
-
const package_json_1 = require("../package.json");
|
|
20
|
-
const CLI_VERSION = package_json_1.version;
|
|
22
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
23
|
+
const CLI_VERSION = package_json_1.default.version;
|
|
21
24
|
const HELP = `
|
|
22
25
|
charter - repo-level governance toolkit
|
|
23
26
|
|
|
24
27
|
Usage:
|
|
25
28
|
charter Show immediate governance value + risk snapshot
|
|
26
|
-
charter setup [--ci github]
|
|
27
|
-
|
|
29
|
+
charter setup [--ci github] [--preset <worker|frontend|backend|fullstack>] [--detect-only]
|
|
30
|
+
Bootstrap .charter/ and optional CI workflow
|
|
31
|
+
charter init [--preset <worker|frontend|backend|fullstack>]
|
|
32
|
+
Scaffold .charter/ config directory
|
|
28
33
|
charter validate Validate git commits for governance trailers
|
|
29
34
|
charter audit Generate governance audit report
|
|
30
35
|
charter drift [--path <dir>] Scan files for pattern drift
|
|
@@ -39,6 +44,8 @@ Options:
|
|
|
39
44
|
--format <type> Output format: text, json (default: text)
|
|
40
45
|
--ci CI mode: exit non-zero on WARN or FAIL
|
|
41
46
|
--yes Auto-accept safe setup overwrites
|
|
47
|
+
--preset <name> Stack preset: worker, frontend, backend, fullstack
|
|
48
|
+
--detect-only Setup only: print detected stack/preset and exit
|
|
42
49
|
`;
|
|
43
50
|
exports.EXIT_CODE = {
|
|
44
51
|
SUCCESS: 0,
|
|
@@ -106,4 +113,4 @@ function getFlag(args, flag) {
|
|
|
106
113
|
}
|
|
107
114
|
return undefined;
|
|
108
115
|
}
|
|
109
|
-
//# sourceMappingURL=index.js.map
|
|
116
|
+
//# 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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"}
|