@ai-dossier/cli 0.82.0 → 0.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -6
- package/dist/batch-compose.d.ts +35 -7
- package/dist/batch-compose.d.ts.map +1 -1
- package/dist/batch-compose.js +82 -12
- package/dist/batch-compose.js.map +1 -1
- package/dist/batch-readiness.d.ts +51 -0
- package/dist/batch-readiness.d.ts.map +1 -0
- package/dist/batch-readiness.js +187 -0
- package/dist/batch-readiness.js.map +1 -0
- package/dist/commands/batch.d.ts +11 -0
- package/dist/commands/batch.d.ts.map +1 -1
- package/dist/commands/batch.js +110 -9
- package/dist/commands/batch.js.map +1 -1
- package/dist/prescreen.d.ts +12 -2
- package/dist/prescreen.d.ts.map +1 -1
- package/dist/prescreen.js +186 -34
- package/dist/prescreen.js.map +1 -1
- package/dist/workspace-layout.d.ts +57 -0
- package/dist/workspace-layout.d.ts.map +1 -0
- package/dist/workspace-layout.js +192 -0
- package/dist/workspace-layout.js.map +1 -0
- package/package.json +1 -1
package/dist/prescreen.js
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
* text-keyword approximation of the risk-floor/new-package/deploy-pipeline rules, rule-9 open
|
|
10
10
|
* dependencies, and — when a plan:v1 artifact is already on the issue — the path-based risk
|
|
11
11
|
* floor and the >8-files rule). Everything it does not catch (rule 2 beyond the `migration`
|
|
12
|
-
* keyword, rule
|
|
13
|
-
* a plan artifact
|
|
12
|
+
* keyword, rule 5 file count without a plan artifact, rule 6 predicted diff (no diff signal at
|
|
13
|
+
* all: a plan:v1 artifact carries predicted files only), rule 7 hard rollback, rule 8
|
|
14
|
+
* visual/browser review, rule 10 confidence) falls through to the classifier's own bounded
|
|
14
15
|
* mechanical-tier pass, which is the intended safety net — not a gap this module needs to close.
|
|
15
16
|
*
|
|
16
17
|
* v2 (#772): two outputs. `verdict: full` only for the EXCLUDING checks;
|
|
@@ -25,6 +26,10 @@
|
|
|
25
26
|
* hard-block label and a rule-9 open dependency. Rule 8 (visual/browser) stays excluding, but
|
|
26
27
|
* this module never detected it — the classifier's model pass does.
|
|
27
28
|
*
|
|
29
|
+
* v5-in-behaviour (#784, contract still `prescreen:v4`): the text floor also masks negated mentions,
|
|
30
|
+
* unquoted file/path/workflow names and other word senses (`maskFloorFalsePositives`), so a
|
|
31
|
+
* false-positive class no longer spends a scarce review=full slot.
|
|
32
|
+
*
|
|
28
33
|
* Pure and dependency-free (no `gh`, network, or fs), same discipline as `plan-artifact.ts` and
|
|
29
34
|
* `runstate.ts` — unit-testable directly. Subprocess access (fetching the issue, resolving
|
|
30
35
|
* dependency state, filtering by submitted set) lives in the command layer (`commands/classify.ts`).
|
|
@@ -33,6 +38,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
33
38
|
exports.LEGACY_EXCLUDING_CHECKS = exports.EXCLUDING_CHECKS = exports.PRESCREEN_SCHEMA = exports.MAX_DEPENDENCY_REFS = exports.TEXT_FLOOR_PATTERNS = void 0;
|
|
34
39
|
exports.stripQuotedSpans = stripQuotedSpans;
|
|
35
40
|
exports.stripReferenceMaterial = stripReferenceMaterial;
|
|
41
|
+
exports.maskFloorFalsePositives = maskFloorFalsePositives;
|
|
36
42
|
exports.floorScanText = floorScanText;
|
|
37
43
|
exports.extractDependencyRefs = extractDependencyRefs;
|
|
38
44
|
exports.prescreenIssue = prescreenIssue;
|
|
@@ -58,6 +64,37 @@ function wordMatch(text, keywords) {
|
|
|
58
64
|
}
|
|
59
65
|
return null;
|
|
60
66
|
}
|
|
67
|
+
const RULE1_KEYWORDS = [
|
|
68
|
+
'authentication',
|
|
69
|
+
'authorization',
|
|
70
|
+
'oauth',
|
|
71
|
+
'sso',
|
|
72
|
+
'payment',
|
|
73
|
+
'payments',
|
|
74
|
+
'billing',
|
|
75
|
+
'invoice',
|
|
76
|
+
'invoices',
|
|
77
|
+
'checkout',
|
|
78
|
+
'stripe',
|
|
79
|
+
'migration',
|
|
80
|
+
'migrations',
|
|
81
|
+
'security',
|
|
82
|
+
'crypto',
|
|
83
|
+
'secret',
|
|
84
|
+
'secrets',
|
|
85
|
+
'credential',
|
|
86
|
+
'credentials',
|
|
87
|
+
'terraform',
|
|
88
|
+
];
|
|
89
|
+
const RULE3_KEYWORDS = ['new package', 'new workspace', 'monorepo package'];
|
|
90
|
+
const RULE4_KEYWORDS = [
|
|
91
|
+
'deploy',
|
|
92
|
+
'deployment',
|
|
93
|
+
'ci/cd',
|
|
94
|
+
'cicd',
|
|
95
|
+
'release pipeline',
|
|
96
|
+
'rollback pipeline',
|
|
97
|
+
];
|
|
61
98
|
exports.TEXT_FLOOR_PATTERNS = [
|
|
62
99
|
{
|
|
63
100
|
// Deliberately NOT the bare words "auth"/"login"/"logout"/"schema"/"infra"/"infrastructure":
|
|
@@ -69,45 +106,24 @@ exports.TEXT_FLOOR_PATTERNS = [
|
|
|
69
106
|
// RFC-0001 rule 1 "infra/terraform" area names. Also approximates rule 2 (schema/data
|
|
70
107
|
// migration) via "migration"/"migrations" — a rough approximation, not full rule-2 coverage.
|
|
71
108
|
name: 'rule1-risk-floor-area',
|
|
72
|
-
match: (t) => wordMatch(t,
|
|
73
|
-
'authentication',
|
|
74
|
-
'authorization',
|
|
75
|
-
'oauth',
|
|
76
|
-
'sso',
|
|
77
|
-
'payment',
|
|
78
|
-
'payments',
|
|
79
|
-
'billing',
|
|
80
|
-
'invoice',
|
|
81
|
-
'invoices',
|
|
82
|
-
'checkout',
|
|
83
|
-
'stripe',
|
|
84
|
-
'migration',
|
|
85
|
-
'migrations',
|
|
86
|
-
'security',
|
|
87
|
-
'crypto',
|
|
88
|
-
'secret',
|
|
89
|
-
'secrets',
|
|
90
|
-
'credential',
|
|
91
|
-
'credentials',
|
|
92
|
-
'terraform',
|
|
93
|
-
]),
|
|
109
|
+
match: (t) => wordMatch(t, RULE1_KEYWORDS),
|
|
94
110
|
},
|
|
95
111
|
{
|
|
96
112
|
name: 'rule3-new-package-workspace',
|
|
97
|
-
match: (t) => wordMatch(t,
|
|
113
|
+
match: (t) => wordMatch(t, RULE3_KEYWORDS),
|
|
98
114
|
},
|
|
99
115
|
{
|
|
100
116
|
name: 'rule4-deploy-pipeline',
|
|
101
|
-
match: (t) => wordMatch(t,
|
|
102
|
-
'deploy',
|
|
103
|
-
'deployment',
|
|
104
|
-
'ci/cd',
|
|
105
|
-
'cicd',
|
|
106
|
-
'release pipeline',
|
|
107
|
-
'rollback pipeline',
|
|
108
|
-
]),
|
|
117
|
+
match: (t) => wordMatch(t, RULE4_KEYWORDS),
|
|
109
118
|
},
|
|
110
119
|
];
|
|
120
|
+
/** A whole string that is exactly one floor keyword. */
|
|
121
|
+
const FLOOR_KEYWORD_EXACT_RE = new RegExp(`^(?:${[...RULE1_KEYWORDS, ...RULE3_KEYWORDS, ...RULE4_KEYWORDS].map(phrase).join('|')})$`, 'i');
|
|
122
|
+
/** Every text-floor keyword, longest first so a phrase wins over a word it contains. */
|
|
123
|
+
const FLOOR_KEYWORD_RE = new RegExp(`\\b(?:${[...RULE1_KEYWORDS, ...RULE3_KEYWORDS, ...RULE4_KEYWORDS]
|
|
124
|
+
.sort((a, b) => b.length - a.length)
|
|
125
|
+
.map(phrase)
|
|
126
|
+
.join('|')})\\b`, 'gi');
|
|
111
127
|
/**
|
|
112
128
|
* Longest quoted span stripped before keyword matching — a bound so a body full
|
|
113
129
|
* of unbalanced quotes cannot make one span swallow the whole text and blank
|
|
@@ -300,13 +316,149 @@ function stripReferenceMaterial(body) {
|
|
|
300
316
|
}
|
|
301
317
|
return out.join('\n');
|
|
302
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* #784: text-floor false-positive classes a deterministic scan CAN separate from the change
|
|
321
|
+
* surface. Measured on 57 hand-labelled text-floor hits (#772): 24 false positives — 5 negated
|
|
322
|
+
* mentions, 4 unquoted file/spec/workflow names, 3 other word senses (the other 12 are incidental
|
|
323
|
+
* mentions, out of reach here). Each mask blanks (same length) only the offending span, never the
|
|
324
|
+
* whole issue: an issue that ALSO names a floor keyword outside any masked span still fires.
|
|
325
|
+
*
|
|
326
|
+
* Every mask is deliberately narrower than its FP class, because the cost is asymmetric: a lost
|
|
327
|
+
* true positive lets a risky change into a `review=light` slot. "Is missing / not required" is how
|
|
328
|
+
* security bugs are WRITTEN ("reachable without authentication", "no CSRF protection on
|
|
329
|
+
* checkout"), so a risk-area keyword is only ever masked by an explicit SCOPE disclaimer
|
|
330
|
+
* ("no billing changes", "we're not doing OAuth", "explicitly dropped"), never by a bare `no`/`without`.
|
|
331
|
+
* A file or directory whose name IS the keyword (`secrets.yml`, `db/migrations/`) names the surface
|
|
332
|
+
* and stays scanned.
|
|
333
|
+
*/
|
|
334
|
+
/** Filename with a code/config/doc extension, unquoted: `legacy-billing.routes.ts`, `deploy.yml`. */
|
|
335
|
+
const FILE_TOKEN_RE = /[\w@~./-]{1,80}\.(?:tsx?|jsx?|mjs|cjs|json|ya?ml|md|mdx|sh|py|toml|sql|css|html|tf|go|rs)\b/gi;
|
|
336
|
+
/** Path with two or more `/` (`packages/frontend/src/x`); a single slash is not enough — `ci/cd` is a keyword. */
|
|
337
|
+
const PATH_TOKEN_RE = /[\w@~.-]{0,40}(?:\/[\w@~.-]{1,40}){2,}\/?/g;
|
|
338
|
+
/** Directory names that ARE a risk surface: a path through one keeps being scanned. */
|
|
339
|
+
const SURFACE_SEGMENTS = new Set([
|
|
340
|
+
'migration',
|
|
341
|
+
'migrations',
|
|
342
|
+
'secret',
|
|
343
|
+
'secrets',
|
|
344
|
+
'credential',
|
|
345
|
+
'credentials',
|
|
346
|
+
'terraform',
|
|
347
|
+
]);
|
|
348
|
+
/** A test/spec file is never the risk surface even when its stem names one (`billing-banners.spec.ts`). */
|
|
349
|
+
const TEST_FILE_RE = /\.(?:spec|test)\.[a-z]+$/i;
|
|
350
|
+
/** True when a masked-candidate file token still names a floor surface: a whole dot-segment of its basename is a keyword (`secrets.yml`, `Stripe.js`, `credentials.yml.enc`). */
|
|
351
|
+
function fileTokenNamesSurface(token) {
|
|
352
|
+
const base = token.slice(token.lastIndexOf('/') + 1);
|
|
353
|
+
if (TEST_FILE_RE.test(base))
|
|
354
|
+
return false;
|
|
355
|
+
return base.split('.').some((seg) => FLOOR_KEYWORD_EXACT_RE.test(seg));
|
|
356
|
+
}
|
|
357
|
+
function maskFileToken(token) {
|
|
358
|
+
return fileTokenNamesSurface(token) ? token : blank(token);
|
|
359
|
+
}
|
|
360
|
+
function maskPathToken(token) {
|
|
361
|
+
const segments = token.toLowerCase().split('/');
|
|
362
|
+
return segments.some((seg) => SURFACE_SEGMENTS.has(seg)) ? token : blank(token);
|
|
363
|
+
}
|
|
364
|
+
/** A comma list of 3+ short items. */
|
|
365
|
+
const NAME_LIST_RE = /[\w-]{1,40}(?:[ \t]*,[ \t]*[\w-]{1,40}){2,}/g;
|
|
366
|
+
const KEBAB_ITEM_RE = /^[a-z0-9]+(?:-[a-z0-9]+)+$/i;
|
|
367
|
+
/**
|
|
368
|
+
* A list of workflow/job/route names (`cost-audit, deploy, docker-image-build`): blanked only when
|
|
369
|
+
* at least three items, and at least half, are kebab-case names. A mixed list ("user-profile,
|
|
370
|
+
* admin-panel, billing, migrations") is a scope enumeration and stays scanned.
|
|
371
|
+
*/
|
|
372
|
+
function maskNameList(list) {
|
|
373
|
+
const items = list.split(',');
|
|
374
|
+
const kebab = items.filter((i) => KEBAB_ITEM_RE.test(i.trim())).length;
|
|
375
|
+
return kebab >= 3 && kebab * 2 >= items.length ? blank(list) : list;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Other senses of a floor word: git's checkout, a repo checkout, financial security types, the
|
|
379
|
+
* `Authorization:` header line, `crypto.randomUUID()`. Narrow on purpose — "the Authorization
|
|
380
|
+
* header is logged in plaintext", "crypto.randomBytes for session tokens" and "every checkout
|
|
381
|
+
* charges the card twice" are real findings and stay scanned.
|
|
382
|
+
*/
|
|
383
|
+
const WORD_SENSE_RES = [
|
|
384
|
+
/\b(?:git|gh(?:\s+pr)?|actions\/)\s*checkout\b/gi,
|
|
385
|
+
/\b(?:fresh|clean|shallow)\s+checkout\b/gi,
|
|
386
|
+
/\b(?:on|in|from)\s+(?:any|every|each)\s+(?:git\s+)?checkout\b/gi,
|
|
387
|
+
/\bsecurity\s+(?:types?|classes|prices?|symbols?|master)\b/gi,
|
|
388
|
+
/\bcrypto\.randomUUID\b/gi,
|
|
389
|
+
/\bAuthorization\s*:/gi,
|
|
390
|
+
/\bheaders?\s*:\s*Authorization\b/gi,
|
|
391
|
+
];
|
|
392
|
+
const blank = (m) => ' '.repeat(m.length);
|
|
393
|
+
/**
|
|
394
|
+
* Keywords that are CHANGE TYPES an issue routinely disclaims ("no migration needed", "not a
|
|
395
|
+
* deploy change"): full negation rules apply. Every other floor keyword is a RISK AREA, masked
|
|
396
|
+
* only by an explicit scope disclaimer (see {@link SCOPE_DISCLAIMER_BEFORE_RES}, {@link NEGATED_AFTER_RE}).
|
|
397
|
+
*/
|
|
398
|
+
const CHANGE_TYPE_KEYWORD_RE = new RegExp(`^(?:${[...RULE3_KEYWORDS, ...RULE4_KEYWORDS, 'migration', 'migrations'].map(phrase).join('|')})$`, 'i');
|
|
399
|
+
/**
|
|
400
|
+
* Negators in front of a CHANGE-TYPE keyword: `no`, `zero`, `without`, `not a/an/the/any` as
|
|
401
|
+
* standalone words (a hyphen never counts: "zero-downtime deployment", "non-breaking migration"
|
|
402
|
+
* are real work), up to two words between ("no data migration", "no schema, data migration").
|
|
403
|
+
* Bare `not` ("not working after deploy") and `no longer` do not qualify.
|
|
404
|
+
*/
|
|
405
|
+
const NEGATED_BEFORE_RES = [
|
|
406
|
+
/(?:^|[^\w-])(?:no(?!\s+(?:longer|more)\b)|zero|without|not\s+(?:a|an|the|any))\s+(?:[\w-]+(?:,|\s+(?:or|and|nor))?\s+){0,2}$/i,
|
|
407
|
+
/,\s*not\s+$/i,
|
|
408
|
+
];
|
|
409
|
+
/** A change-type negation only counts when the keyword ENDS its noun phrase: a list separator, `or`/`and`, `(`, or a scope noun. */
|
|
410
|
+
const NEGATOR_TARGET_END_RE = /^(?:\s*(?:[,.;!?()\n]|$)|\s+(?:or|and|nor)\b|\s+(?:needed|required|changes?|risks?|impacts?|work|concerns?|steps?|involved|implications?|effects?)\b)/i;
|
|
411
|
+
/**
|
|
412
|
+
* Explicit scope disclaimers before ANY floor keyword: "we're not doing OAuth", "this PR is not
|
|
413
|
+
* adding auth", and — for risk areas — a bare `no`/`without` only when a SCOPE noun follows the
|
|
414
|
+
* keyword ("no billing changes", "no schema, billing or auth changes", "no security impact").
|
|
415
|
+
*/
|
|
416
|
+
const SCOPE_DISCLAIMER_BEFORE_RES = [
|
|
417
|
+
/(?:^|[^\w-])(?:we(?:'re|\s+are)?\s+not|we\s+won'?t|this\s+(?:issue|pr|change)\s+(?:does\s+not|doesn'?t|is\s+not))\s+(?:doing|building|adding|using|supporting|touching|changing|do|build|add|use|support|touch|change)\s+(?:[\w-]+\s+){0,2}$/i,
|
|
418
|
+
];
|
|
419
|
+
const RISK_NEGATOR_BEFORE_RE = /(?:^|[^\w-])(?:no(?!\s+(?:longer|more)\b)|zero|without)\s+(?:[\w-]+(?:,|\s+(?:or|and|nor))?\s+){0,2}$/i;
|
|
420
|
+
const SCOPE_NOUN_AFTER_RE = /^(?:\s*(?:,|\s(?:or|and|nor))\s*[\w-]+){0,3}\s+(?:changes?|risks?|impacts?|work|concerns?|implications?|effects?|needed|required)\b/i;
|
|
421
|
+
/** A scope disclaimer AFTER the keyword within two words: "OAuth approach explicitly dropped", "billing is out of scope". */
|
|
422
|
+
const NEGATED_AFTER_RE = /^(?:\s+[\w/-]+){0,2}\s+(?:(?:is|are|was|were)\s+)?(?:explicitly\s+)?(?:dropped|descoped|out\s+of\s+scope|ruled\s+out)\b/i;
|
|
423
|
+
/** "not needed / not required" after a CHANGE-TYPE keyword only ("migration not required"); after a risk area it is a bug report. */
|
|
424
|
+
const CHANGE_TYPE_NOT_NEEDED_AFTER_RE = /^(?:\s+[\w/-]+){0,1}\s+(?:is\s+)?not\s+(?:needed|required|in\s+scope|applicable)\b/i;
|
|
425
|
+
/** Longest text scanned either side of a keyword when looking for a negation. */
|
|
426
|
+
const NEGATION_WINDOW = 60;
|
|
427
|
+
/** Blank every floor keyword occurrence that carries an explicit scope disclaimer. */
|
|
428
|
+
function maskNegatedMentions(text) {
|
|
429
|
+
return text.replace(FLOOR_KEYWORD_RE, (match, offset, whole) => {
|
|
430
|
+
const before = whole.slice(Math.max(0, offset - NEGATION_WINDOW), offset);
|
|
431
|
+
const clauseBefore = before.slice(Math.max(...['.', ';', '!', '?', '\n'].map((c) => before.lastIndexOf(c))) + 1);
|
|
432
|
+
const after = whole.slice(offset + match.length, offset + match.length + NEGATION_WINDOW);
|
|
433
|
+
const changeType = CHANGE_TYPE_KEYWORD_RE.test(match);
|
|
434
|
+
const negated = SCOPE_DISCLAIMER_BEFORE_RES.some((re) => re.test(clauseBefore)) ||
|
|
435
|
+
NEGATED_AFTER_RE.test(after) ||
|
|
436
|
+
(changeType &&
|
|
437
|
+
((NEGATED_BEFORE_RES.some((re) => re.test(clauseBefore)) &&
|
|
438
|
+
NEGATOR_TARGET_END_RE.test(after)) ||
|
|
439
|
+
CHANGE_TYPE_NOT_NEEDED_AFTER_RE.test(after))) ||
|
|
440
|
+
(!changeType && RISK_NEGATOR_BEFORE_RE.test(clauseBefore) && SCOPE_NOUN_AFTER_RE.test(after));
|
|
441
|
+
return negated ? blank(match) : match;
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* #784: blank the false-positive spans of {@link stripQuotedSpans}' unquoted cousins — file/spec/
|
|
446
|
+
* workflow names, other word senses, and scope-disclaimed mentions — before the text floor runs.
|
|
447
|
+
*/
|
|
448
|
+
function maskFloorFalsePositives(text) {
|
|
449
|
+
let out = text.replace(FILE_TOKEN_RE, maskFileToken).replace(PATH_TOKEN_RE, maskPathToken);
|
|
450
|
+
out = out.replace(NAME_LIST_RE, maskNameList);
|
|
451
|
+
for (const re of WORD_SENSE_RES)
|
|
452
|
+
out = out.replace(re, blank);
|
|
453
|
+
return maskNegatedMentions(out);
|
|
454
|
+
}
|
|
303
455
|
/**
|
|
304
456
|
* The exact text the text floor scans (#772): title + section/provenance-filtered body + label
|
|
305
457
|
* names, with quoted spans blanked (#627). Exported so measurement tooling
|
|
306
458
|
* (`scripts/prescreen-backlog-measure.mjs`) and tests see precisely what the rule sees.
|
|
307
459
|
*/
|
|
308
460
|
function floorScanText(title, body, labels) {
|
|
309
|
-
return stripQuotedSpans(`${title}\n${stripReferenceMaterial(body)}\n${labels.join(' ')}`);
|
|
461
|
+
return maskFloorFalsePositives(stripQuotedSpans(`${title}\n${stripReferenceMaterial(body)}\n${labels.join(' ')}`));
|
|
310
462
|
}
|
|
311
463
|
/** `Depends on #N` references resolved per issue; each costs a `gh` call downstream (command layer), same rationale as `MAX_ISSUE_SELECTION` (`issue-selection.ts`). */
|
|
312
464
|
exports.MAX_DEPENDENCY_REFS = 32;
|
package/dist/prescreen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prescreen.js","sourceRoot":"","sources":["../src/prescreen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prescreen.js","sourceRoot":"","sources":["../src/prescreen.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;;;AA6IH,4CAIC;AAgID,wDAyCC;AAiKD,0DAKC;AAOD,sCAIC;AAaD,sDAYC;AA0GD,wCAgDC;AA5pBD,2DAAyD;AACzD,mDAAgD;AAUhD,mGAAmG;AACnG,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,4HAA4H;AAC5H,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,QAA2B;IAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,cAAc,GAAG;IACrB,gBAAgB;IAChB,eAAe;IACf,OAAO;IACP,KAAK;IACL,SAAS;IACT,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,aAAa;IACb,WAAW;CACH,CAAC;AACX,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,kBAAkB,CAAU,CAAC;AACrF,MAAM,cAAc,GAAG;IACrB,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,MAAM;IACN,kBAAkB;IAClB,mBAAmB;CACX,CAAC;AAEE,QAAA,mBAAmB,GAAgC;IAC9D;QACE,6FAA6F;QAC7F,4FAA4F;QAC5F,2FAA2F;QAC3F,iFAAiF;QACjF,2FAA2F;QAC3F,6FAA6F;QAC7F,sFAAsF;QACtF,6FAA6F;QAC7F,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;KAC3C;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;KAC3C;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;KAC3C;CACF,CAAC;AAEF,wDAAwD;AACxD,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAC1F,GAAG,CACJ,CAAC;AAEF,wFAAwF;AACxF,MAAM,gBAAgB,GAAG,IAAI,MAAM,CACjC,SAAS,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC;KAC/D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;KACnC,GAAG,CAAC,MAAM,CAAC;KACX,IAAI,CAAC,GAAG,CAAC,MAAM,EAClB,IAAI,CACL,CAAC;AAEF;;;;GAIG;AACH,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,MAAM,CAAC,cAAc,eAAe,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;SAChE,OAAO,CAAC,IAAI,MAAM,CAAC,gBAAgB,eAAe,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,0BAA0B,GAC9B,+HAA+H,CAAC;AAElI;;;GAGG;AACH,MAAM,UAAU,GAAG,yCAAyC,CAAC;AAE7D,mGAAmG;AACnG,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AAEvC,iHAAiH;AACjH,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEjD,2GAA2G;AAC3G,SAAS,gBAAgB,CAAC,IAAY;IACpC,0FAA0F;IAC1F,gDAAgD;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAAE,GAAG,EAAE,CAAC;IAC3E,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AAEzF,gGAAgG;AAChG,SAAS,WAAW,CAAC,OAA0B;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,oBAAoB,GAAG;IAC3B,UAAU;IACV,cAAc;IACd,WAAW;IACX,SAAS;IACT,OAAO;IACP,MAAM;IACN,UAAU;IACV,aAAa;CACL,CAAC;AACX,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAClC,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACrF,GAAG,CACJ,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG;IACvB,UAAU;IACV,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;IACb,iBAAiB;IACjB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,aAAa;CACL,CAAC;AACX,MAAM,oBAAoB,GAAG,IAAI,MAAM,CACrC,oBAAoB,WAAW,CAAC,gBAAgB,CAAC,yCAAyC,EAC1F,IAAI,CACL,CAAC;AAEF;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,SAAS,GAAG,IAAI;SACnB,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC;SAC/C,OAAO,CAAC,0BAA0B,EAAE,GAAG,CAAC;SACxC,OAAO,CAAC,oCAAoC,EAAE,GAAG,CAAC;SAClD,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;IAC5D,OAAO,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,6EAA6E;IAC7E,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,OAAO,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAChC,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACb,SAAS,CAAC,wDAAwD;YACpE,CAAC;YACD,SAAS,GAAG,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7E,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC;YACT,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AAEH,qGAAqG;AACrG,MAAM,aAAa,GACjB,+FAA+F,CAAC;AAElG,kHAAkH;AAClH,MAAM,aAAa,GAAG,4CAA4C,CAAC;AAEnE,uFAAuF;AACvF,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IACpD,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,aAAa;IACb,WAAW;CACZ,CAAC,CAAC;AAEH,2GAA2G;AAC3G,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD,iLAAiL;AACjL,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,sCAAsC;AACtC,MAAM,YAAY,GAAG,8CAA8C,CAAC;AACpE,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAEpD;;;;GAIG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACvE,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,cAAc,GAAsB;IACxC,iDAAiD;IACjD,0CAA0C;IAC1C,iEAAiE;IACjE,6DAA6D;IAC7D,0BAA0B;IAC1B,uBAAuB;IACvB,oCAAoC;CACrC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAClG,GAAG,CACJ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,kBAAkB,GAAsB;IAC5C,+HAA+H;IAC/H,cAAc;CACf,CAAC;AAEF,oIAAoI;AACpI,MAAM,qBAAqB,GACzB,wJAAwJ,CAAC;AAE3J;;;;GAIG;AACH,MAAM,2BAA2B,GAAsB;IACrD,+OAA+O;CAChP,CAAC;AACF,MAAM,sBAAsB,GAC1B,wGAAwG,CAAC;AAC3G,MAAM,mBAAmB,GACvB,sIAAsI,CAAC;AAEzI,6HAA6H;AAC7H,MAAM,gBAAgB,GACpB,0HAA0H,CAAC;AAC7H,qIAAqI;AACrI,MAAM,+BAA+B,GACnC,qFAAqF,CAAC;AAExF,iFAAiF;AACjF,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,sFAAsF;AACtF,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAc,EAAE,KAAa,EAAE,EAAE;QAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAC9E,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,OAAO,GACX,2BAA2B,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/D,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,CAAC,UAAU;gBACT,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACtD,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAClC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,UAAU,IAAI,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,IAAY;IAClD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC3F,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9C,KAAK,MAAM,EAAE,IAAI,cAAc;QAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAa,EAAE,IAAY,EAAE,MAAyB;IAClF,OAAO,uBAAuB,CAC5B,gBAAgB,CAAC,GAAG,KAAK,KAAK,sBAAsB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CACnF,CAAC;AACJ,CAAC;AAED,wKAAwK;AAC3J,QAAA,mBAAmB,GAAG,EAAE,CAAC;AAEtC,0GAA0G;AAC1G,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAE9C;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,IAAI,2BAAmB;YAAE,MAAM;QAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAuBD;;;;;;;;;;GAUG;AACU,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAE/C;;;;;GAKG;AACU,QAAA,gBAAgB,GAA0C,IAAI,GAAG,CAAC;IAC7E,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;AAEH;;;;GAIG;AACU,QAAA,uBAAuB,GAA0C,IAAI,GAAG,CAAC;IACpF,YAAY;IACZ,YAAY;CACb,CAAC,CAAC;AAmBH,2FAA2F;AAC3F,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,0NAA0N;AAC1N,mIAAmI;AACnI,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AACzD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,mMAAmM;AACnM,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,OAAO,GAAG,KAAK;SAClB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAC;IACV,OAAO,OAAO,CAAC,MAAM,GAAG,mBAAmB;QACzC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG;QAC7C,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAqB;IAClD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,MAAM,cAAc,GAAG,IAAA,sCAAkB,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE,6BAA6B,QAAQ,CAAC,cAAc,CAAC,IAAI;SACnE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClE,KAAK,MAAM,OAAO,IAAI,2BAAmB,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE,4BAA4B,OAAO,CAAC,IAAI,gBAAgB,GAAG,KAAK;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,IAAA,6BAAa,EAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,mBAAmB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,4BAA4B;SACpG,CAAC,CAAC;IACL,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,oBAAoB,cAAc,CAAC,MAAM,aAAa,mBAAmB,sBAAsB;SACzG,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,eAAe,GAAG,wEAAwE;SACpG,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;QAClF,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;QAC7C,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace layout of a target repo, read from its own workspace config (#801) instead of guessed
|
|
3
|
+
* from path shapes. `batch compose` ranks backfill by "shares a workspace package"; the old path
|
|
4
|
+
* heuristic (`…/packages/<x>/…` → `packages/<x>`, else the first path segment) collapsed every path
|
|
5
|
+
* outside `packages/` on imboard's nested layout (`main/packages/…`, `main/scripts/…`) into a
|
|
6
|
+
* pseudo-package `main` that nearly every issue "shared".
|
|
7
|
+
*
|
|
8
|
+
* Pure and dependency-light (only `yaml`): no `gh`, network or fs. The command layer supplies a
|
|
9
|
+
* {@link WorkspaceFileReader} over `gh api repos/<r>/contents/…` (target repo not local) or the
|
|
10
|
+
* local checkout, so discovery is unit-testable with an in-memory reader.
|
|
11
|
+
*/
|
|
12
|
+
/** One workspace root: where a package manager's workspace config lives and the globs it declares. */
|
|
13
|
+
export interface WorkspaceRoot {
|
|
14
|
+
/** Repo-relative directory holding the config; `''` when it is the repo root, `'main'` on imboard. */
|
|
15
|
+
prefix: string;
|
|
16
|
+
/** Config file the globs came from (`pnpm-workspace.yaml`, `package.json`, `lerna.json`). */
|
|
17
|
+
file: string;
|
|
18
|
+
/** Include globs, e.g. `packages/*`. */
|
|
19
|
+
globs: string[];
|
|
20
|
+
/** `!`-negated globs, without the `!`. */
|
|
21
|
+
excludes: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface WorkspaceLayout {
|
|
24
|
+
roots: WorkspaceRoot[];
|
|
25
|
+
}
|
|
26
|
+
/** Config files probed in each candidate directory, in precedence order. */
|
|
27
|
+
declare const CONFIG_FILES: readonly ["pnpm-workspace.yaml", "package.json", "lerna.json"];
|
|
28
|
+
/** Read side of discovery; every method returns null when the thing does not exist or cannot be read. */
|
|
29
|
+
export interface WorkspaceFileReader {
|
|
30
|
+
/** Top-level directory names of the repo (no files). */
|
|
31
|
+
topLevelDirs(): string[] | null;
|
|
32
|
+
/** Text of a repo-relative file, or null when absent/unreadable. */
|
|
33
|
+
readFile(path: string): string | null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Workspace patterns declared by one config file's text, or null when it declares none.
|
|
37
|
+
* `package.json` accepts both `workspaces: [...]` and the Yarn `workspaces: { packages: [...] }` shape.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseWorkspaceConfig(file: (typeof CONFIG_FILES)[number], text: string): {
|
|
40
|
+
globs: string[];
|
|
41
|
+
excludes: string[];
|
|
42
|
+
} | null;
|
|
43
|
+
/**
|
|
44
|
+
* Find the workspace root(s) of a repo: the repo root when it declares workspaces, otherwise each
|
|
45
|
+
* top-level directory that does (imboard's `main/`). Null when no config is found anywhere — the
|
|
46
|
+
* caller then falls back to path heuristics and says so.
|
|
47
|
+
*/
|
|
48
|
+
export declare function discoverWorkspaceLayout(reader: WorkspaceFileReader): WorkspaceLayout | null;
|
|
49
|
+
/**
|
|
50
|
+
* The declared workspace package a repo-relative path belongs to, or null when it is outside every
|
|
51
|
+
* declared workspace (root scripts, docs, CI — deliberately NOT a pseudo-package). A path may name
|
|
52
|
+
* the workspace root's directory (`main/packages/x/…`) or omit it (`packages/x/…`, how issue text
|
|
53
|
+
* usually spells it). With more than one root the package is prefixed with its root's directory.
|
|
54
|
+
*/
|
|
55
|
+
export declare function packageOfPath(path: string, layout: WorkspaceLayout): string | null;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=workspace-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-layout.d.ts","sourceRoot":"","sources":["../src/workspace-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,sGAAsG;AACtG,MAAM,WAAW,aAAa;IAC5B,sGAAsG;IACtG,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,4EAA4E;AAC5E,QAAA,MAAM,YAAY,gEAAiE,CAAC;AAuBpF,yGAAyG;AACzG,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,YAAY,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACvC;AAmBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAehD;AAYD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,GAAG,eAAe,GAAG,IAAI,CAS3F;AAsDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAqBlF"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workspace layout of a target repo, read from its own workspace config (#801) instead of guessed
|
|
4
|
+
* from path shapes. `batch compose` ranks backfill by "shares a workspace package"; the old path
|
|
5
|
+
* heuristic (`…/packages/<x>/…` → `packages/<x>`, else the first path segment) collapsed every path
|
|
6
|
+
* outside `packages/` on imboard's nested layout (`main/packages/…`, `main/scripts/…`) into a
|
|
7
|
+
* pseudo-package `main` that nearly every issue "shared".
|
|
8
|
+
*
|
|
9
|
+
* Pure and dependency-light (only `yaml`): no `gh`, network or fs. The command layer supplies a
|
|
10
|
+
* {@link WorkspaceFileReader} over `gh api repos/<r>/contents/…` (target repo not local) or the
|
|
11
|
+
* local checkout, so discovery is unit-testable with an in-memory reader.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.parseWorkspaceConfig = parseWorkspaceConfig;
|
|
15
|
+
exports.discoverWorkspaceLayout = discoverWorkspaceLayout;
|
|
16
|
+
exports.packageOfPath = packageOfPath;
|
|
17
|
+
const yaml_1 = require("yaml");
|
|
18
|
+
/** Config files probed in each candidate directory, in precedence order. */
|
|
19
|
+
const CONFIG_FILES = ['pnpm-workspace.yaml', 'package.json', 'lerna.json'];
|
|
20
|
+
/** Top-level directories never probed for a nested workspace root — docs/tooling, not code roots. */
|
|
21
|
+
const SKIP_DIRS = new Set([
|
|
22
|
+
'node_modules',
|
|
23
|
+
'docs',
|
|
24
|
+
'doc',
|
|
25
|
+
'scripts',
|
|
26
|
+
'test',
|
|
27
|
+
'tests',
|
|
28
|
+
'examples',
|
|
29
|
+
'vendor',
|
|
30
|
+
'dist',
|
|
31
|
+
'build',
|
|
32
|
+
'terraform',
|
|
33
|
+
'infra',
|
|
34
|
+
]);
|
|
35
|
+
/** Nested roots probed at most (each costs up to three `gh api` reads: pnpm, package.json, lerna). */
|
|
36
|
+
const MAX_PROBED_DIRS = 8;
|
|
37
|
+
/** Globs kept per root — the config is untrusted-ish network text, keep the output bounded. */
|
|
38
|
+
const MAX_GLOBS = 64;
|
|
39
|
+
/** Split declared patterns into includes and `!` excludes; drops non-strings, blanks, and `./` prefixes. */
|
|
40
|
+
function toPatterns(value) {
|
|
41
|
+
if (!Array.isArray(value))
|
|
42
|
+
return null;
|
|
43
|
+
const globs = [];
|
|
44
|
+
const excludes = [];
|
|
45
|
+
for (const raw of value) {
|
|
46
|
+
if (typeof raw !== 'string')
|
|
47
|
+
continue;
|
|
48
|
+
const trimmed = raw.trim().replace(/^\.\//, '').replace(/\/+$/, '');
|
|
49
|
+
if (trimmed === '' || trimmed === '!')
|
|
50
|
+
continue;
|
|
51
|
+
if (trimmed.startsWith('!'))
|
|
52
|
+
excludes.push(trimmed.slice(1).replace(/^\.\//, ''));
|
|
53
|
+
else
|
|
54
|
+
globs.push(trimmed);
|
|
55
|
+
}
|
|
56
|
+
return globs.length > 0
|
|
57
|
+
? { globs: globs.slice(0, MAX_GLOBS), excludes: excludes.slice(0, MAX_GLOBS) }
|
|
58
|
+
: null;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Workspace patterns declared by one config file's text, or null when it declares none.
|
|
62
|
+
* `package.json` accepts both `workspaces: [...]` and the Yarn `workspaces: { packages: [...] }` shape.
|
|
63
|
+
*/
|
|
64
|
+
function parseWorkspaceConfig(file, text) {
|
|
65
|
+
try {
|
|
66
|
+
if (file === 'pnpm-workspace.yaml') {
|
|
67
|
+
const doc = (0, yaml_1.parse)(text);
|
|
68
|
+
return toPatterns(doc?.packages);
|
|
69
|
+
}
|
|
70
|
+
const doc = JSON.parse(text);
|
|
71
|
+
if (file === 'lerna.json')
|
|
72
|
+
return toPatterns(doc?.packages);
|
|
73
|
+
const ws = doc?.workspaces;
|
|
74
|
+
return toPatterns(Array.isArray(ws) ? ws : ws?.packages);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function probeRoot(prefix, reader) {
|
|
81
|
+
for (const file of CONFIG_FILES) {
|
|
82
|
+
const text = reader.readFile(prefix === '' ? file : `${prefix}/${file}`);
|
|
83
|
+
if (text === null)
|
|
84
|
+
continue;
|
|
85
|
+
const patterns = parseWorkspaceConfig(file, text);
|
|
86
|
+
if (patterns !== null)
|
|
87
|
+
return { prefix, file, ...patterns };
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Find the workspace root(s) of a repo: the repo root when it declares workspaces, otherwise each
|
|
93
|
+
* top-level directory that does (imboard's `main/`). Null when no config is found anywhere — the
|
|
94
|
+
* caller then falls back to path heuristics and says so.
|
|
95
|
+
*/
|
|
96
|
+
function discoverWorkspaceLayout(reader) {
|
|
97
|
+
const root = probeRoot('', reader);
|
|
98
|
+
if (root !== null)
|
|
99
|
+
return { roots: [root] };
|
|
100
|
+
const dirs = (reader.topLevelDirs() ?? [])
|
|
101
|
+
.filter((d) => !d.startsWith('.') && !SKIP_DIRS.has(d))
|
|
102
|
+
.sort()
|
|
103
|
+
.slice(0, MAX_PROBED_DIRS);
|
|
104
|
+
const roots = dirs.map((d) => probeRoot(d, reader)).filter((r) => r !== null);
|
|
105
|
+
return roots.length > 0 ? { roots } : null;
|
|
106
|
+
}
|
|
107
|
+
// --- path → package ----------------------------------------------------------------------------
|
|
108
|
+
/** One glob segment as a regex: `*` matches within the segment, everything else literally. */
|
|
109
|
+
function segmentMatches(pattern, segment) {
|
|
110
|
+
if (pattern === segment)
|
|
111
|
+
return true;
|
|
112
|
+
if (!pattern.includes('*'))
|
|
113
|
+
return false;
|
|
114
|
+
const re = pattern
|
|
115
|
+
.split('*')
|
|
116
|
+
.map((part) => part.replace(/[.+?^${}()|[\]\\]/g, '\\$&'))
|
|
117
|
+
.join('[^/]*');
|
|
118
|
+
return new RegExp(`^${re}$`).test(segment);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Number of leading path segments a glob claims as the package directory, or null when the path
|
|
122
|
+
* is not under it. A trailing `**` claims the first segment beneath its literal prefix; a `**`
|
|
123
|
+
* elsewhere is treated as `*` (package dirs are one level per pattern segment).
|
|
124
|
+
*/
|
|
125
|
+
function globMatch(glob, segments) {
|
|
126
|
+
const parts = glob.split('/').filter((p) => p !== '');
|
|
127
|
+
let claimed = 0;
|
|
128
|
+
for (let i = 0; i < parts.length; i++) {
|
|
129
|
+
if (i >= segments.length)
|
|
130
|
+
return null;
|
|
131
|
+
if (parts[i] === '**') {
|
|
132
|
+
if (i === parts.length - 1)
|
|
133
|
+
return segments.length > i ? i + 1 : null;
|
|
134
|
+
claimed = i + 1;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (!segmentMatches(parts[i], segments[i]))
|
|
138
|
+
return null;
|
|
139
|
+
claimed = i + 1;
|
|
140
|
+
}
|
|
141
|
+
return claimed;
|
|
142
|
+
}
|
|
143
|
+
/** A trailing segment that looks like a file, so `packages/README.md` is not read as package `README.md`. */
|
|
144
|
+
const FILE_LIKE_RE = /\.[A-Za-z0-9]{1,6}$/;
|
|
145
|
+
function packageDirIn(root, relative) {
|
|
146
|
+
let best = null;
|
|
147
|
+
for (const glob of root.globs) {
|
|
148
|
+
const n = globMatch(glob, relative);
|
|
149
|
+
if (n === null || (n === relative.length && FILE_LIKE_RE.test(relative[n - 1])))
|
|
150
|
+
continue;
|
|
151
|
+
if (best === null || n > best)
|
|
152
|
+
best = n;
|
|
153
|
+
}
|
|
154
|
+
if (best === null)
|
|
155
|
+
return null;
|
|
156
|
+
const dir = relative.slice(0, best);
|
|
157
|
+
for (const glob of root.excludes) {
|
|
158
|
+
if (globMatch(glob, dir) === dir.length)
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
return dir.join('/');
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* The declared workspace package a repo-relative path belongs to, or null when it is outside every
|
|
165
|
+
* declared workspace (root scripts, docs, CI — deliberately NOT a pseudo-package). A path may name
|
|
166
|
+
* the workspace root's directory (`main/packages/x/…`) or omit it (`packages/x/…`, how issue text
|
|
167
|
+
* usually spells it). With more than one root the package is prefixed with its root's directory.
|
|
168
|
+
*/
|
|
169
|
+
function packageOfPath(path, layout) {
|
|
170
|
+
const segments = path
|
|
171
|
+
.replace(/^\.\//, '')
|
|
172
|
+
.split('/')
|
|
173
|
+
.filter((s) => s !== '');
|
|
174
|
+
const qualify = (root, dir) => layout.roots.length > 1 && root.prefix !== '' ? `${root.prefix}/${dir}` : dir;
|
|
175
|
+
// Pass 1: a root whose directory the path names. This wins outright, so root ORDER never
|
|
176
|
+
// matters (`main/packages/x` is `main`'s, even when another root's glob would also match it).
|
|
177
|
+
for (const root of layout.roots) {
|
|
178
|
+
const prefixSegments = root.prefix === '' ? [] : root.prefix.split('/');
|
|
179
|
+
if (prefixSegments.length === 0 || !prefixSegments.every((p, i) => segments[i] === p))
|
|
180
|
+
continue;
|
|
181
|
+
const dir = packageDirIn(root, segments.slice(prefixSegments.length));
|
|
182
|
+
if (dir !== null)
|
|
183
|
+
return qualify(root, dir);
|
|
184
|
+
}
|
|
185
|
+
// Pass 2: a root-relative spelling (`packages/x/…`, how issue text usually writes it). Ambiguous
|
|
186
|
+
// across roots (`a` and `b` both declare `packages/*`) means unknown, not "the first root".
|
|
187
|
+
const hits = layout.roots
|
|
188
|
+
.map((root) => [root, packageDirIn(root, segments)])
|
|
189
|
+
.filter((h) => h[1] !== null);
|
|
190
|
+
return hits.length === 1 ? qualify(hits[0][0], hits[0][1]) : null;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=workspace-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-layout.js","sourceRoot":"","sources":["../src/workspace-layout.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAyEH,oDAkBC;AAiBD,0DASC;AA4DD,sCAqBC;AApMD,+BAA0C;AAkB1C,4EAA4E;AAC5E,MAAM,YAAY,GAAG,CAAC,qBAAqB,EAAE,cAAc,EAAE,YAAY,CAAU,CAAC;AAEpF,qGAAqG;AACrG,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,cAAc;IACd,MAAM;IACN,KAAK;IACL,SAAS;IACT,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,MAAM;IACN,OAAO;IACP,WAAW;IACX,OAAO;CACR,CAAC,CAAC;AAEH,sGAAsG;AACtG,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,+FAA+F;AAC/F,MAAM,SAAS,GAAG,EAAE,CAAC;AAUrB,4GAA4G;AAC5G,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,SAAS;QACtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG;YAAE,SAAS;QAChD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;;YAC7E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;QACrB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE;QAC9E,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,IAAmC,EACnC,IAAY;IAEZ,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAA,YAAS,EAAC,IAAI,CAAkC,CAAC;YAC7D,OAAO,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwD,CAAC;QACpF,IAAI,IAAI,KAAK,YAAY;YAAE,OAAO,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC;QAC3B,OAAO,UAAU,CACf,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,EAAyC,EAAE,QAAQ,CAC9E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,MAAc,EAAE,MAA2B;IAC5D,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;QACzE,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAC5B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,MAA2B;IACjE,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACtD,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAClG,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,kGAAkG;AAElG,8FAA8F;AAC9F,SAAS,cAAc,CAAC,OAAe,EAAE,OAAe;IACtD,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,EAAE,GAAG,OAAO;SACf,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;SACzD,IAAI,CAAC,OAAO,CAAC,CAAC;IACjB,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,QAAkB;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6GAA6G;AAC7G,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAE3C,SAAS,YAAY,CAAC,IAAmB,EAAE,QAAkB;IAC3D,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1F,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,MAAuB;IACjE,MAAM,QAAQ,GAAG,IAAI;SAClB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,CAAC,IAAmB,EAAE,GAAW,EAAE,EAAE,CACnD,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAChF,yFAAyF;IACzF,8FAA8F;IAC9F,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAE,SAAS;QAChG,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,iGAAiG;IACjG,4FAA4F;IAC5F,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAU,CAAC;SAC5D,MAAM,CAAC,CAAC,CAAC,EAAyC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-dossier/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.83.0",
|
|
4
4
|
"description": "Create, verify, sign, publish, and run dossiers — portable, signed, versioned skills for any LLM tool. The dossier ⇄ Claude Code skill bridge (install-skill / skill-export).",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|