redlinegate 0.0.1 → 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/README.md +23 -7
- package/dist/bin/redline.js +338 -43
- package/dist/bin/redline.js.map +1 -1
- package/dist/commands/init.js +353 -34
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/remove.js +43 -1
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/status.js +94 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/verify.js +82 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/config/redline-json.js +63 -2
- package/dist/config/redline-json.js.map +1 -1
- package/dist/core/git.js +50 -3
- package/dist/core/git.js.map +1 -1
- package/dist/core/version.js +6 -0
- package/dist/core/version.js.map +1 -1
- package/dist/detect/existing.js +151 -0
- package/dist/detect/existing.js.map +1 -0
- package/dist/detect/setup.js +200 -0
- package/dist/detect/setup.js.map +1 -0
- package/dist/detect/stack.js +56 -17
- package/dist/detect/stack.js.map +1 -1
- package/dist/exempt/parse.js +8 -1
- package/dist/exempt/parse.js.map +1 -1
- package/dist/metrics/options.js +0 -9
- package/dist/metrics/options.js.map +1 -1
- package/dist/platforms/azure/install.js +9 -9
- package/dist/platforms/azure/install.js.map +1 -1
- package/dist/platforms/azure/verify.js +10 -2
- package/dist/platforms/azure/verify.js.map +1 -1
- package/dist/platforms/github/install.js +192 -26
- package/dist/platforms/github/install.js.map +1 -1
- package/dist/platforms/github/preflight.js +63 -0
- package/dist/platforms/github/preflight.js.map +1 -0
- package/dist/platforms/github/vendor.js +81 -0
- package/dist/platforms/github/vendor.js.map +1 -0
- package/dist/platforms/github/verify.js +79 -7
- package/dist/platforms/github/verify.js.map +1 -1
- package/dist/platforms/types.js +8 -0
- package/dist/platforms/types.js.map +1 -1
- package/dist/policy/diff.js +26 -9
- package/dist/policy/diff.js.map +1 -1
- package/dist/render/contexts.js +39 -0
- package/dist/render/contexts.js.map +1 -0
- package/dist/render/profile.js +44 -10
- package/dist/render/profile.js.map +1 -1
- package/dist/render/standards.js +10 -1
- package/dist/render/standards.js.map +1 -1
- package/dist/render/vendors.js +14 -53
- package/dist/render/vendors.js.map +1 -1
- package/dist/rules/catalogue.js +127 -0
- package/dist/rules/catalogue.js.map +1 -0
- package/dist/ui/facts.js +111 -0
- package/dist/ui/facts.js.map +1 -0
- package/dist/ui/prompt.js +330 -0
- package/dist/ui/prompt.js.map +1 -0
- package/dist/ui/report.js +214 -0
- package/dist/ui/report.js.map +1 -0
- package/dist/ui/tty.js +576 -0
- package/dist/ui/tty.js.map +1 -0
- package/dist/ui/wizard.js +293 -0
- package/dist/ui/wizard.js.map +1 -0
- package/dist/verify/remote.js +33 -0
- package/dist/verify/remote.js.map +1 -1
- package/package.json +13 -1
- package/platforms/azure/gate-template-github.yml +152 -0
- package/platforms/azure/gate-template.yml +59 -6
- package/scripts/check-pins.mjs +84 -1
- package/scripts/fetch-stars.mjs +92 -0
- package/scripts/lib/rules.d.mts +18 -0
- package/scripts/publish-local.mjs +183 -0
- package/standards/contexts/speckit.md +22 -0
- package/standards/contexts/tmf.md +25 -0
- package/standards/manifest.json +78 -7
- package/standards/stacks/angular.md +57 -0
- package/standards/stacks/dom.md +61 -0
- package/standards/stacks/svelte.md +45 -0
- package/standards/stacks/vue.md +54 -0
- package/templates/redline.yml +9 -9
- package/workflows/dashboard.yml +1 -1
- package/workflows/redline-collect.yml +1 -1
- package/workflows/redline-gate.yml +38 -7
- package/workflows/seed-canary.yml +2 -2
- package/workflows/weekly-digest.yml +1 -1
- package/scripts/measure-context.mjs +0 -101
|
@@ -76,19 +76,43 @@ function parsePullRequestHeadSha(body) {
|
|
|
76
76
|
}
|
|
77
77
|
return head['sha'];
|
|
78
78
|
}
|
|
79
|
+
// Distinct names. GitHub returns one check run per ATTEMPT on the head SHA, so
|
|
80
|
+
// a re-run or a re-trigger adds another entry under the same name — three gate
|
|
81
|
+
// re-triggers reported 21 entries for 9 checks. On the default advisory install
|
|
82
|
+
// nothing is required yet and this list is the whole assertion: a human reads it
|
|
83
|
+
// to see whether the gate reported at all. A list that repeats itself is the one
|
|
84
|
+
// thing that stops being read.
|
|
79
85
|
function parseCheckRunNames(body) {
|
|
80
86
|
if (!isNonNullObject(body) || !Array.isArray(body['check_runs'])) {
|
|
81
87
|
throw hostShapeError('a check-runs list');
|
|
82
88
|
}
|
|
83
|
-
|
|
89
|
+
const names = body['check_runs'].map((run) => {
|
|
84
90
|
if (!isNonNullObject(run) || typeof run['name'] !== 'string') {
|
|
85
91
|
throw hostShapeError('a check run');
|
|
86
92
|
}
|
|
87
93
|
return run['name'];
|
|
88
94
|
});
|
|
95
|
+
return [...new Set(names)];
|
|
89
96
|
}
|
|
90
97
|
// null means GitHub did not report the block at all, which is not the same
|
|
91
98
|
// thing as reporting it empty — see readSecurityState.
|
|
99
|
+
// One line per distinct problem, not per offending line: a CODEOWNERS naming
|
|
100
|
+
// one unknown team across ten paths is one thing wrong, and printing it ten
|
|
101
|
+
// times buries it. GitHub's own `suggestion` is the remedy, so it is kept.
|
|
102
|
+
function parseCodeownersProblems(body) {
|
|
103
|
+
if (!isNonNullObject(body) || !Array.isArray(body['errors'])) {
|
|
104
|
+
throw hostShapeError('a CODEOWNERS errors list');
|
|
105
|
+
}
|
|
106
|
+
const seen = new Set();
|
|
107
|
+
for (const error of body['errors']) {
|
|
108
|
+
if (!isNonNullObject(error))
|
|
109
|
+
throw hostShapeError('a CODEOWNERS error');
|
|
110
|
+
const kind = typeof error['kind'] === 'string' ? error['kind'] : 'problem';
|
|
111
|
+
const suggestion = typeof error['suggestion'] === 'string' ? error['suggestion'] : null;
|
|
112
|
+
seen.add(suggestion === null ? kind : `${kind} — ${suggestion}`);
|
|
113
|
+
}
|
|
114
|
+
return [...seen];
|
|
115
|
+
}
|
|
92
116
|
function parseSecurityAnalysisStatuses(body) {
|
|
93
117
|
if (!isNonNullObject(body))
|
|
94
118
|
throw hostShapeError('a repository');
|
|
@@ -143,7 +167,21 @@ const AGGREGATE_JOB = REQUIRED_CHECK.slice(REQUIRED_CHECK.indexOf(CHECK_SEPARATO
|
|
|
143
167
|
// message that admits it could not tell is honest, a fabricated job name is
|
|
144
168
|
// not.
|
|
145
169
|
const KEY = /^\s*(?:(["'])([\w.-]+)\1|([\w.-]+))\s*:(.*)$/;
|
|
146
|
-
|
|
170
|
+
// Both gate sources. An org caller carries
|
|
171
|
+
// `<org>/.github/.github/workflows/redline-gate.yml@main`; a local one carries
|
|
172
|
+
// `./.github/workflows/redline-gate.yml` and can carry no `@ref`, because a
|
|
173
|
+
// local reusable workflow is always resolved at the caller's own commit.
|
|
174
|
+
//
|
|
175
|
+
// Requiring the `@` read every locally-sourced repository as a caller whose job
|
|
176
|
+
// id had been edited away — `verify` called the gate broken on repositories
|
|
177
|
+
// where it was working, which is the one direction this check must never fail
|
|
178
|
+
// in, because it is the check that tells a real outage from a slow run.
|
|
179
|
+
const USES_THE_GATE = /^\s*uses:\s*["']?(?:\S*redline-gate\.yml@|\.\/\S*redline-gate\.yml\s*$)/;
|
|
180
|
+
// The one local path Redline writes, matched exactly rather than taken from
|
|
181
|
+
// whatever the caller says. `remove` deletes what this returns, and a caller is
|
|
182
|
+
// a file anybody can edit: resolving an arbitrary `./…` out of it would let a
|
|
183
|
+
// hand-edited workflow name any path in the repository as the thing to delete.
|
|
184
|
+
const LOCAL_GATE_REF = /^\s*uses:\s*["']?\.\/(\.github\/workflows\/redline-gate\.yml)["']?\s*$/m;
|
|
147
185
|
const indentOf = (line) => line.length - line.trimStart().length;
|
|
148
186
|
const skippable = (line) => line.trim() === '' || line.trimStart().startsWith('#');
|
|
149
187
|
const keyName = (line) => {
|
|
@@ -223,12 +261,13 @@ export function callerJobId(body) {
|
|
|
223
261
|
export function machineryFromBody(body) {
|
|
224
262
|
const base = { path: CALLER_WORKFLOW, expected: REQUIRED_CHECK };
|
|
225
263
|
if (body === null)
|
|
226
|
-
return { ...base, present: false, publishes: null };
|
|
264
|
+
return { ...base, present: false, publishes: null, vendored: null };
|
|
227
265
|
const jobId = triggersOnPullRequest(body) ? callerJobId(body) : null;
|
|
228
266
|
return {
|
|
229
267
|
...base,
|
|
230
268
|
present: true,
|
|
231
269
|
publishes: jobId === null ? null : `${jobId}${CHECK_SEPARATOR}${AGGREGATE_JOB}`,
|
|
270
|
+
vendored: LOCAL_GATE_REF.exec(body)?.[1] ?? null,
|
|
232
271
|
};
|
|
233
272
|
}
|
|
234
273
|
export function createGitHubVerify(client) {
|
|
@@ -298,6 +337,18 @@ export function createGitHubVerify(client) {
|
|
|
298
337
|
assertOk(runs.status, runsPath);
|
|
299
338
|
return parseCheckRunNames(runs.body);
|
|
300
339
|
},
|
|
340
|
+
async readCodeownersProblems(ref, at) {
|
|
341
|
+
const path = at === undefined
|
|
342
|
+
? `${repoPath(ref)}/codeowners/errors`
|
|
343
|
+
: `${repoPath(ref)}/codeowners/errors?ref=${encodeURIComponent(at)}`;
|
|
344
|
+
const res = await client.rest('GET', path);
|
|
345
|
+
// 404 is "no CODEOWNERS file here", which is a real answer and not a
|
|
346
|
+
// failure — a repository that deselected review-ownership has none.
|
|
347
|
+
if (res.status === 404)
|
|
348
|
+
return null;
|
|
349
|
+
assertOk(res.status, path);
|
|
350
|
+
return parseCodeownersProblems(res.body);
|
|
351
|
+
},
|
|
301
352
|
async readSecurityState(ref) {
|
|
302
353
|
const path = repoPath(ref);
|
|
303
354
|
const repo = await client.rest('GET', path);
|
|
@@ -319,8 +370,29 @@ export function createGitHubVerify(client) {
|
|
|
319
370
|
// present but not enabled -> denied, as before.
|
|
320
371
|
const statuses = parseSecurityAnalysisStatuses(repo.body);
|
|
321
372
|
const invisible = statuses === null;
|
|
322
|
-
|
|
323
|
-
|
|
373
|
+
// Three answers, not two. GitHub includes a key in a VISIBLE
|
|
374
|
+
// security_and_analysis block only when the feature exists on this
|
|
375
|
+
// repository's plan: present-and-not-enabled means "you have it and it
|
|
376
|
+
// is off", while an omitted key means "this plan does not have it at
|
|
377
|
+
// all". Collapsing the second into `denied` is what made `redline init`
|
|
378
|
+
// and `redline verify` disagree about the same three settings on the
|
|
379
|
+
// same repository — init reported `unsupported (not available on this
|
|
380
|
+
// repository)` from its write's 404, verify reported `FAIL disabled`
|
|
381
|
+
// from the absent key, and the operator was told to go and enable
|
|
382
|
+
// something no administrator of that repository can enable.
|
|
383
|
+
const stateFor = (key) => {
|
|
384
|
+
if (invisible)
|
|
385
|
+
return 'unknown';
|
|
386
|
+
const status = statuses[key];
|
|
387
|
+
if (status === undefined)
|
|
388
|
+
return 'unsupported';
|
|
389
|
+
return status === 'enabled' ? 'applied' : 'denied';
|
|
390
|
+
};
|
|
391
|
+
const noteFor = (key) => {
|
|
392
|
+
if (invisible)
|
|
393
|
+
return ' (not visible to this token)';
|
|
394
|
+
return statuses[key] === undefined ? ' (not available on this repository)' : '';
|
|
395
|
+
};
|
|
324
396
|
// Dependabot alerts live on their own endpoint, and it answers with a
|
|
325
397
|
// status rather than a body: 204 enabled, 404 disabled (the repository
|
|
326
398
|
// read above already proved the repository itself resolves, so a 404
|
|
@@ -340,12 +412,12 @@ export function createGitHubVerify(client) {
|
|
|
340
412
|
{
|
|
341
413
|
capability: 'secret-scanning',
|
|
342
414
|
status: stateFor('secret_scanning'),
|
|
343
|
-
detail: `secret scanning${
|
|
415
|
+
detail: `secret scanning${noteFor('secret_scanning')}`,
|
|
344
416
|
},
|
|
345
417
|
{
|
|
346
418
|
capability: 'push-protection',
|
|
347
419
|
status: stateFor('secret_scanning_push_protection'),
|
|
348
|
-
detail: `secret scanning push protection${
|
|
420
|
+
detail: `secret scanning push protection${noteFor('secret_scanning_push_protection')}`,
|
|
349
421
|
},
|
|
350
422
|
{
|
|
351
423
|
capability: 'dependency-alerts',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../cli/platforms/github/verify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../cli/platforms/github/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/platforms/types.js
CHANGED
|
@@ -21,4 +21,12 @@ export const ADMIN_CAPABILITIES = [
|
|
|
21
21
|
export function isPending(outcome) {
|
|
22
22
|
return outcome.status === 'denied';
|
|
23
23
|
}
|
|
24
|
+
export const GATE_PIPELINES = ['github-actions', 'azure-pipelines'];
|
|
25
|
+
export function isGatePipeline(value) {
|
|
26
|
+
return GATE_PIPELINES.includes(value);
|
|
27
|
+
}
|
|
28
|
+
export const GATE_SOURCES = ['org', 'local'];
|
|
29
|
+
export function isGateSource(value) {
|
|
30
|
+
return GATE_SOURCES.includes(value);
|
|
31
|
+
}
|
|
24
32
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../cli/platforms/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAC;AAGlD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;IACd,eAAe;IACf,QAAQ;IACR,kBAAkB;IAClB,2EAA2E;IAC3E,uEAAuE;IACvE,yEAAyE;IACzE,kCAAkC;IAClC,MAAM;CACE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../cli/platforms/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAC;AAGlD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;IACd,eAAe;IACf,QAAQ;IACR,kBAAkB;IAClB,2EAA2E;IAC3E,uEAAuE;IACvE,yEAAyE;IACzE,kCAAkC;IAClC,MAAM;CACE,CAAC;AAmCX,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,qEAAqE;AACrE,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,OAA0B;IAClD,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC;AACrC,CAAC;AASD,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AAE7F,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAQ,cAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,CAAU,CAAC;AAGtD,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAQ,YAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/policy/diff.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
// the lines this change ADDED, with their file and line number.
|
|
3
|
-
//
|
|
4
|
-
// Added lines only, and that is a rule not an optimisation. `core/unrelated-change`
|
|
5
|
-
// and the "what NOT to flag" section both say the same thing — existing patterns a
|
|
6
|
-
// pull request merely touches are not this pull request's problem. A checker that
|
|
7
|
-
// read whole files would flag every `var` in a legacy file the author renamed, and
|
|
8
|
-
// the author would be right to ignore it, and then to ignore the next one too.
|
|
1
|
+
import { BEGIN_PREFIX, END } from "../render/markers.js";
|
|
9
2
|
// `b/` OR `/dev/null`: the prefixed form is a real destination path, the second
|
|
10
3
|
// is a deletion. Matching only the prefixed form left `+++ /dev/null` falling
|
|
11
4
|
// through to the added-line branch below, where it became a phantom line of
|
|
@@ -17,12 +10,14 @@ export function parseDiff(diff) {
|
|
|
17
10
|
const added = [];
|
|
18
11
|
let file = null;
|
|
19
12
|
let line = 0;
|
|
13
|
+
let generated = false;
|
|
20
14
|
for (const raw of diff.split('\n')) {
|
|
21
15
|
const header = FILE_HEADER.exec(raw);
|
|
22
16
|
if (header) {
|
|
23
17
|
// A deletion has no destination path, so nothing after it is an addition
|
|
24
18
|
// until the next file header.
|
|
25
19
|
file = header[2] ? null : (header[1] ?? null);
|
|
20
|
+
generated = false;
|
|
26
21
|
continue;
|
|
27
22
|
}
|
|
28
23
|
const hunk = HUNK.exec(raw);
|
|
@@ -32,8 +27,27 @@ export function parseDiff(diff) {
|
|
|
32
27
|
}
|
|
33
28
|
if (file === null)
|
|
34
29
|
continue;
|
|
30
|
+
// Lines inside a REDLINE block are Redline's own output, not this author's
|
|
31
|
+
// code, and they are not reviewable as code. The rendered standards quote
|
|
32
|
+
// the exact constructs the checks hunt for — `@ts-ignore`, `TODO` — so a
|
|
33
|
+
// checker that read them reported each rule as a violation of itself, and
|
|
34
|
+
// every `redline init` pull request opened with BLOCKER findings against
|
|
35
|
+
// the block Redline had just written. Same failure the parseInt pattern
|
|
36
|
+
// above already had once: a checker flagging its own source.
|
|
37
|
+
//
|
|
38
|
+
// Context lines drive the state as well as added ones, so a hunk that opens
|
|
39
|
+
// an existing block without adding its marker is still recognised as inside
|
|
40
|
+
// it. A hunk that begins deeper inside a block than its context reaches
|
|
41
|
+
// cannot be — the marker is simply not in the diff — which is why the
|
|
42
|
+
// markers are matched at all rather than the whole file being skipped by
|
|
43
|
+
// name: what is in the diff is decided correctly, and what is not stays as
|
|
44
|
+
// it was.
|
|
45
|
+
const body = raw.startsWith('+') || raw.startsWith(' ') ? raw.slice(1).trimStart() : null;
|
|
46
|
+
if (body !== null && body.startsWith(BEGIN_PREFIX))
|
|
47
|
+
generated = true;
|
|
35
48
|
if (raw.startsWith('+')) {
|
|
36
|
-
|
|
49
|
+
if (!generated)
|
|
50
|
+
added.push({ file, line, text: raw.slice(1) });
|
|
37
51
|
line += 1;
|
|
38
52
|
}
|
|
39
53
|
else if (raw.startsWith('-')) {
|
|
@@ -43,6 +57,9 @@ export function parseDiff(diff) {
|
|
|
43
57
|
else if (raw.startsWith(' ') || raw === '') {
|
|
44
58
|
line += 1;
|
|
45
59
|
}
|
|
60
|
+
// Closed after the line is counted: the END marker is itself generated.
|
|
61
|
+
if (body !== null && body.startsWith(END))
|
|
62
|
+
generated = false;
|
|
46
63
|
// Everything else — `diff --git`, `index`, `\ No newline` — is metadata.
|
|
47
64
|
}
|
|
48
65
|
return added;
|
package/dist/policy/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../cli/policy/diff.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../cli/policy/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAmBzD,gFAAgF;AAChF,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,8CAA8C;AAC9C,MAAM,WAAW,GAAG,oCAAoC,CAAC;AACzD,MAAM,IAAI,GAAG,uCAAuC,CAAC;AAErD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,yEAAyE;YACzE,8BAA8B;YAC9B,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YAC9C,SAAS,GAAG,KAAK,CAAC;YAClB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAE5B,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,wEAAwE;QACxE,6DAA6D;QAC7D,EAAE;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,2EAA2E;QAC3E,UAAU;QACV,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,SAAS,GAAG,IAAI,CAAC;QAErE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,wDAAwD;YACxD,SAAS;QACX,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;QAED,wEAAwE;QACxE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,GAAG,KAAK,CAAC;QAC7D,yEAAyE;IAC3E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
export const CONTEXTS = [
|
|
4
|
+
{ key: 'speckit', file: 'standards/contexts/speckit.md', label: 'spec-driven development' },
|
|
5
|
+
{ key: 'tmf', file: 'standards/contexts/tmf.md', label: 'TM Forum' },
|
|
6
|
+
];
|
|
7
|
+
/**
|
|
8
|
+
* The bodies of the selected context sections, in the order declared above.
|
|
9
|
+
*
|
|
10
|
+
* A selected context whose file is missing is skipped rather than fatal: the
|
|
11
|
+
* standards package and the CLI version a repository, and a repository that
|
|
12
|
+
* recorded a context an older package does not carry must still render.
|
|
13
|
+
*/
|
|
14
|
+
export function loadContexts(root, selected) {
|
|
15
|
+
const bodies = [];
|
|
16
|
+
for (const context of CONTEXTS) {
|
|
17
|
+
if (!selected.includes(context.key))
|
|
18
|
+
continue;
|
|
19
|
+
const path = join(root, context.file);
|
|
20
|
+
if (!existsSync(path))
|
|
21
|
+
continue;
|
|
22
|
+
bodies.push(readFileSync(path, 'utf8').trim());
|
|
23
|
+
}
|
|
24
|
+
return bodies;
|
|
25
|
+
}
|
|
26
|
+
// Spec Kit is a separate tool with its own installer, its own templates and its
|
|
27
|
+
// own versioning. Redline neither creates nor edits its files — reproducing that
|
|
28
|
+
// scaffold would drift from the real one the day it changed — so a repository
|
|
29
|
+
// that already runs it keeps what it has, and Redline drops its own section
|
|
30
|
+
// rather than adding a second account of how the repository works.
|
|
31
|
+
const SPEC_KIT_MARKERS = ['.specify', '.github/prompts/speckit.constitution.prompt.md'];
|
|
32
|
+
export function detectSpecKit(cwd) {
|
|
33
|
+
for (const marker of SPEC_KIT_MARKERS) {
|
|
34
|
+
if (existsSync(join(cwd, marker)))
|
|
35
|
+
return marker;
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=contexts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../cli/render/contexts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAmBjC,MAAM,CAAC,MAAM,QAAQ,GAA8B;IACjD,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,yBAAyB,EAAE;IAC3F,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,UAAU,EAAE;CACrE,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,QAA2B;IACpE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,SAAS;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,iFAAiF;AACjF,8EAA8E;AAC9E,4EAA4E;AAC5E,mEAAmE;AACnE,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,gDAAgD,CAAC,CAAC;AAExF,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/render/profile.js
CHANGED
|
@@ -1,23 +1,57 @@
|
|
|
1
1
|
import { RedlineError } from "../core/errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve one profile, or several, into the stacks they render.
|
|
4
|
+
*
|
|
5
|
+
* A profile is a named bundle of stacks, and plenty of repositories are more
|
|
6
|
+
* than one bundle: a React application with its own Terraform beside it is
|
|
7
|
+
* `web,infra` and was previously forced to pick the half that fitted worst.
|
|
8
|
+
* So `name` may be a comma-separated list, and the result is the union.
|
|
9
|
+
*
|
|
10
|
+
* This deliberately needs no change to `.redline.json`: `profile` stays a
|
|
11
|
+
* single string there, it just may now read `infra,web`. Every reader already
|
|
12
|
+
* hands that string straight back to this function — `managedPaths`, `render`,
|
|
13
|
+
* `review`'s scope, `remove`'s plan — so nothing else has to learn a new shape,
|
|
14
|
+
* and a config written by an older CLI resolves exactly as it did.
|
|
15
|
+
*
|
|
16
|
+
* The recorded name is SORTED and de-duplicated. `web,infra` and `infra,web`
|
|
17
|
+
* name the same repository and must produce the same artifacts, or
|
|
18
|
+
* `redline verify`'s artifacts-current finding would flap between two runs that
|
|
19
|
+
* chose the same thing in a different order.
|
|
20
|
+
*/
|
|
2
21
|
export function resolveProfile(manifest, name) {
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
22
|
+
const requested = name
|
|
23
|
+
.split(',')
|
|
24
|
+
.map((part) => part.trim())
|
|
25
|
+
.filter((part) => part !== '');
|
|
26
|
+
if (requested.length === 0) {
|
|
27
|
+
throw new RedlineError('usage', `no profile given. Known: ${Object.keys(manifest.profiles).join(', ')}`, 'name one, or several separated by commas: --profile web,infra');
|
|
8
28
|
}
|
|
29
|
+
const keys = [];
|
|
30
|
+
for (const part of requested) {
|
|
31
|
+
const key = manifest.profileAliases[part] ?? part;
|
|
32
|
+
if (!manifest.profiles[key]) {
|
|
33
|
+
throw new RedlineError('usage', `unknown profile "${part}". Known: ${Object.keys(manifest.profiles).join(', ')} ` +
|
|
34
|
+
`(aliases: ${Object.keys(manifest.profileAliases).join(', ')})`);
|
|
35
|
+
}
|
|
36
|
+
if (!keys.includes(key))
|
|
37
|
+
keys.push(key);
|
|
38
|
+
}
|
|
39
|
+
keys.sort();
|
|
9
40
|
const out = [];
|
|
10
|
-
const visit = (id) => {
|
|
41
|
+
const visit = (id, from) => {
|
|
11
42
|
const stack = manifest.stacks[id];
|
|
12
43
|
if (!stack) {
|
|
13
|
-
throw new RedlineError('usage', `profile "${
|
|
44
|
+
throw new RedlineError('usage', `profile "${from}" references unknown stack "${id}"`);
|
|
14
45
|
}
|
|
15
46
|
for (const parent of stack.extends ?? [])
|
|
16
|
-
visit(parent);
|
|
47
|
+
visit(parent, from);
|
|
17
48
|
if (!out.includes(id))
|
|
18
49
|
out.push(id);
|
|
19
50
|
};
|
|
20
|
-
|
|
21
|
-
|
|
51
|
+
for (const key of keys) {
|
|
52
|
+
for (const id of manifest.profiles[key])
|
|
53
|
+
visit(id, key);
|
|
54
|
+
}
|
|
55
|
+
return { profile: keys.join(','), stacks: out };
|
|
22
56
|
}
|
|
23
57
|
//# sourceMappingURL=profile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../cli/render/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,IAAY;IAC7D,MAAM,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../cli/render/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,IAAY;IAC7D,MAAM,SAAS,GAAG,IAAI;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACjC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,4BAA4B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvE,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,YAAY,CACpB,OAAO,EACP,oBAAoB,IAAI,aAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC/E,aAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;IAEZ,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,IAAY,EAAQ,EAAE;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,YAAY,IAAI,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;YAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAE;YAAE,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAClD,CAAC"}
|
package/dist/render/standards.js
CHANGED
|
@@ -4,6 +4,7 @@ import { loadManifest } from "./manifest.js";
|
|
|
4
4
|
import { resolveProfile } from "./profile.js";
|
|
5
5
|
import { END, findBlock, wrapBlock } from "./markers.js";
|
|
6
6
|
import { readLocalRules, VENDORS } from "./vendors.js";
|
|
7
|
+
import { loadContexts } from "./contexts.js";
|
|
7
8
|
import { RedlineError } from "../core/errors.js";
|
|
8
9
|
// The rest of a shared file once its Redline block is cut out, or `null` when
|
|
9
10
|
// nothing survives but whitespace, so the caller deletes the file rather than
|
|
@@ -58,6 +59,7 @@ export function render(opts) {
|
|
|
58
59
|
root,
|
|
59
60
|
profile: resolved.profile,
|
|
60
61
|
stacks: resolved.stacks,
|
|
62
|
+
contexts: loadContexts(opts.root, opts.contexts ?? []),
|
|
61
63
|
local: readLocalRules(out),
|
|
62
64
|
};
|
|
63
65
|
const planned = new Map();
|
|
@@ -86,6 +88,13 @@ export function render(opts) {
|
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
}
|
|
91
|
+
// A path another SELECTED vendor plans is not deselected, whatever an
|
|
92
|
+
// unselected renderer thinks. Two vendors can legitimately own one file —
|
|
93
|
+
// `codex` and `agents` both render AGENTS.md, because AGENTS.md is what Codex
|
|
94
|
+
// reads — and without this, selecting one of them queues the other's identical
|
|
95
|
+
// path for stripping and deletes the file that was just written.
|
|
96
|
+
const stillWritten = new Set(planned.keys());
|
|
97
|
+
const deselected = deselectedMergeFiles.filter((path) => !stillWritten.has(path));
|
|
89
98
|
const written = [];
|
|
90
99
|
const removed = [];
|
|
91
100
|
const staleWritten = [];
|
|
@@ -107,7 +116,7 @@ export function render(opts) {
|
|
|
107
116
|
// Deselected vendors' shared files: strip the block, deleting the file
|
|
108
117
|
// outright when nothing else is left. Always a removal, never a write — a
|
|
109
118
|
// deselect is not content Redline is choosing to keep.
|
|
110
|
-
for (const relPath of
|
|
119
|
+
for (const relPath of deselected) {
|
|
111
120
|
const target = join(out, relPath);
|
|
112
121
|
if (!existsSync(target))
|
|
113
122
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards.js","sourceRoot":"","sources":["../../cli/render/standards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAqC,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"standards.js","sourceRoot":"","sources":["../../cli/render/standards.ts"],"names":[],"mappings":"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"}
|
package/dist/render/vendors.js
CHANGED
|
@@ -22,7 +22,11 @@ export const LOCAL_HEADING = '# Repository-local rules';
|
|
|
22
22
|
export function localSection(local) {
|
|
23
23
|
return `---\n\n${LOCAL_HEADING}\n\n${PRECEDENCE}\n\n${local}`;
|
|
24
24
|
}
|
|
25
|
-
const
|
|
25
|
+
const withContexts = (ctx, body) => ctx.contexts.length === 0 ? body : `${body}\n\n---\n\n${ctx.contexts.join('\n\n---\n\n')}`;
|
|
26
|
+
const withLocal = (ctx, body) => {
|
|
27
|
+
const withOrgContext = withContexts(ctx, body);
|
|
28
|
+
return ctx.local === null ? withOrgContext : `${withOrgContext}\n\n${localSection(ctx.local)}`;
|
|
29
|
+
};
|
|
26
30
|
// A REDLINE marker line and an unclosed code fence are the two shapes in a
|
|
27
31
|
// human's markdown that reach markers.ts as structure rather than as prose: the
|
|
28
32
|
// first makes a second marker pair, which wrapBlock refuses, and the second
|
|
@@ -143,57 +147,14 @@ const cursor = (ctx) => {
|
|
|
143
147
|
prune: [{ dir: '.cursor/rules', matches: (f) => f.startsWith(PREFIX) && f.endsWith('.mdc') }],
|
|
144
148
|
};
|
|
145
149
|
};
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
// The asymmetry this closes. Copilot receives .github/instructions/redline-*.md
|
|
149
|
-
// with applyTo globs — conditional, per-stack loading. Claude receives
|
|
150
|
-
// CLAUDE.md -> @AGENTS.md: the entire composed standard, every turn, for the life
|
|
151
|
-
// of every session. On a twelve-stack profile that is most of a context window
|
|
152
|
-
// spent on rules for languages the repository is not currently editing.
|
|
153
|
-
//
|
|
154
|
-
// Two constraints from the roadmap, both load-bearing:
|
|
150
|
+
// OpenAI Codex reads AGENTS.md — the same file the `agents` vendor writes.
|
|
155
151
|
//
|
|
156
|
-
//
|
|
157
|
-
//
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
//
|
|
161
|
-
//
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
// stack, its file extensions and its globs. That is the whole mechanism.
|
|
165
|
-
const skillDescription = (title, globs) => {
|
|
166
|
-
const extensions = [...new Set(globs.map((g) => g.slice(g.lastIndexOf('.'))).filter((e) => e.startsWith('.')))];
|
|
167
|
-
const suffix = extensions.length > 0 ? ` Covers ${extensions.join(', ')} files.` : '';
|
|
168
|
-
return (`Redline engineering standards for ${title}. Use when writing, editing or reviewing ` +
|
|
169
|
-
`${title} code in this repository — before proposing a change, not after.${suffix}`);
|
|
170
|
-
};
|
|
171
|
-
const skills = (ctx) => {
|
|
172
|
-
const files = new Map();
|
|
173
|
-
// Core always loads: it carries the output contract and the security floor,
|
|
174
|
-
// and it is not stack-scoped. Splitting it per stack would duplicate it twelve
|
|
175
|
-
// times and let a repository end up with none of it.
|
|
176
|
-
files.set(`.claude/skills/${PREFIX}core/SKILL.md`, {
|
|
177
|
-
localRules: true,
|
|
178
|
-
body: `---\nname: ${PREFIX}core\ndescription: >-\n Redline core engineering standards — the severity output contract, security,\n` +
|
|
179
|
-
` type safety, error handling and scope discipline. Use when writing, editing or\n` +
|
|
180
|
-
` reviewing any code in this repository.\n---\n\n` +
|
|
181
|
-
withLocal(ctx, `${header(ctx, ctx.stacks)}\n\n${read(ctx.root, ctx.manifest.core.source)}`),
|
|
182
|
-
});
|
|
183
|
-
for (const id of ctx.stacks) {
|
|
184
|
-
const stack = ctx.manifest.stacks[id];
|
|
185
|
-
files.set(`.claude/skills/${PREFIX}${id}/SKILL.md`, {
|
|
186
|
-
body: `---\nname: ${PREFIX}${id}\ndescription: >-\n ${skillDescription(stack.title, stack.globs)}\n---\n\n` +
|
|
187
|
-
`${header(ctx, [id])}\n\n${stackBody(ctx, id)}\n\n_Applies to: ${stack.globs.map((g) => `\`${g}\``).join(', ')}_`,
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
return {
|
|
191
|
-
files,
|
|
192
|
-
// A stack leaving the profile must take its skill with it, or a repository
|
|
193
|
-
// keeps loading rules for a language it no longer has. The directory shape
|
|
194
|
-
// means pruning matches on the directory name, not the file.
|
|
195
|
-
prune: [{ dir: '.claude/skills', matches: (f) => f.startsWith(PREFIX), directories: true }],
|
|
196
|
-
};
|
|
197
|
-
};
|
|
198
|
-
export const VENDORS = { copilot, agents, claude, cursor, skills };
|
|
152
|
+
// It is a separate vendor id because an operator looking for Codex has to be
|
|
153
|
+
// able to find it by name, and "it is covered by the one called agents" is not
|
|
154
|
+
// something a menu can say. It is the SAME renderer because inventing a
|
|
155
|
+
// Codex-specific path would put the rules somewhere nothing reads them: a file
|
|
156
|
+
// only Redline believes in is worse than no file. Selecting both writes
|
|
157
|
+
// AGENTS.md once, with identical content either way.
|
|
158
|
+
const codex = (ctx) => agents(ctx);
|
|
159
|
+
export const VENDORS = { copilot, agents, codex, claude, cursor };
|
|
199
160
|
//# sourceMappingURL=vendors.js.map
|