clud-bug 0.7.0-rc.21 → 0.7.0-rc.23
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/data/canonical-v1.json +39 -34
- package/data/rulesets/baseline.json +29 -0
- package/data/rulesets/clud-bug.json +39 -0
- package/data/rulesets/public-guard.json +29 -0
- package/data/rulesets/skdd.json +42 -0
- package/dist/cli/configure-github.d.ts +13 -4
- package/dist/cli/configure-github.d.ts.map +1 -1
- package/dist/cli/configure-github.js +73 -27
- package/dist/cli/configure-github.js.map +1 -1
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +5 -1
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +33 -10
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/post-check-run.d.ts +2 -0
- package/dist/cli/post-check-run.d.ts.map +1 -1
- package/dist/cli/post-check-run.js +124 -5
- package/dist/cli/post-check-run.js.map +1 -1
- package/dist/cli/review-prompt.d.ts +11 -1
- package/dist/cli/review-prompt.d.ts.map +1 -1
- package/dist/cli/review-prompt.js +141 -37
- package/dist/cli/review-prompt.js.map +1 -1
- package/dist/core/check-verdict.d.ts +1 -1
- package/dist/core/check-verdict.d.ts.map +1 -1
- package/dist/core/check-verdict.js +14 -1
- package/dist/core/check-verdict.js.map +1 -1
- package/dist/core/configure-github.d.ts +184 -119
- package/dist/core/configure-github.d.ts.map +1 -1
- package/dist/core/configure-github.js +407 -209
- package/dist/core/configure-github.js.map +1 -1
- package/dist/core/index.d.ts +4 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +12 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/invariants.d.ts +46 -0
- package/dist/core/invariants.d.ts.map +1 -0
- package/dist/core/invariants.js +96 -0
- package/dist/core/invariants.js.map +1 -0
- package/dist/core/notary-bundle.d.ts +95 -0
- package/dist/core/notary-bundle.d.ts.map +1 -0
- package/dist/core/notary-bundle.js +129 -0
- package/dist/core/notary-bundle.js.map +1 -0
- package/dist/core/notary-validate.d.ts +86 -0
- package/dist/core/notary-validate.d.ts.map +1 -0
- package/dist/core/notary-validate.js +270 -0
- package/dist/core/notary-validate.js.map +1 -0
- package/dist/core/prompt-builder.js +2 -2
- package/dist/core/review-schema-zod.d.ts +48 -0
- package/dist/core/review-schema-zod.d.ts.map +1 -1
- package/dist/core/review-schema-zod.js +5 -0
- package/dist/core/review-schema-zod.js.map +1 -1
- package/dist/core/review-schema.d.ts +3 -0
- package/dist/core/review-schema.d.ts.map +1 -1
- package/dist/core/review-schema.js +9 -0
- package/dist/core/review-schema.js.map +1 -1
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/package.json +1 -1
- package/src/cli/configure-github.ts +108 -31
- package/src/cli/hooks.ts +5 -1
- package/src/cli/main.ts +32 -10
- package/src/cli/post-check-run.ts +149 -5
- package/src/cli/review-prompt.ts +162 -36
- package/src/core/check-verdict.ts +14 -2
- package/src/core/configure-github.ts +591 -349
- package/src/core/index.ts +46 -0
- package/src/core/invariants.ts +123 -0
- package/src/core/notary-bundle.ts +196 -0
- package/src/core/notary-validate.ts +343 -0
- package/src/core/prompt-builder.ts +2 -2
- package/src/core/review-schema-zod.ts +5 -0
- package/src/core/review-schema.ts +12 -0
- package/src/core/version.ts +1 -1
- package/templates/skills/design/designing-elite-ui.md +57 -0
- package/templates/workflow-py.yml.tmpl +1 -1
- package/templates/workflow-ts.yml.tmpl +1 -1
- package/templates/workflow.yml.tmpl +1 -1
package/data/canonical-v1.json
CHANGED
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$comment": "
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"check-derived-docs",
|
|
12
|
-
"check-links",
|
|
13
|
-
"test"
|
|
14
|
-
]
|
|
15
|
-
},
|
|
16
|
-
"required_pull_request_reviews": {
|
|
17
|
-
"required_approving_review_count": 1,
|
|
18
|
-
"dismiss_stale_reviews": false,
|
|
19
|
-
"require_code_owner_reviews": false
|
|
20
|
-
},
|
|
21
|
-
"required_conversation_resolution": true,
|
|
22
|
-
"enforce_admins": false,
|
|
23
|
-
"allow_force_pushes": false,
|
|
24
|
-
"allow_deletions": false,
|
|
25
|
-
"required_linear_history": false,
|
|
26
|
-
"allow_auto_merge": true,
|
|
27
|
-
"delete_branch_on_merge": true,
|
|
28
|
-
"squash_merge_commit_title": "PR_TITLE",
|
|
29
|
-
"squash_merge_commit_message": "PR_BODY"
|
|
2
|
+
"$comment": "BACK-COMPAT ALIAS of data/rulesets/skdd.json — retained for the stable external fetch path (older tooling + docs link to `data/canonical-v1.json`). The runtime loader no longer reads this file: `loadCanonicalV1()` now resolves the `skdd` preset from data/rulesets/skdd.json. Keep this in sync with rulesets/skdd.json (a CI drift-check is a follow-up). Vendored from reporulez (canonical source).",
|
|
3
|
+
"name": "reporulez-default",
|
|
4
|
+
"target": "branch",
|
|
5
|
+
"enforcement": "active",
|
|
6
|
+
"conditions": {
|
|
7
|
+
"ref_name": {
|
|
8
|
+
"include": ["~DEFAULT_BRANCH"],
|
|
9
|
+
"exclude": []
|
|
10
|
+
}
|
|
30
11
|
},
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
12
|
+
"bypass_actors": [],
|
|
13
|
+
"rules": [
|
|
14
|
+
{ "type": "deletion" },
|
|
15
|
+
{ "type": "non_fast_forward" },
|
|
16
|
+
{ "type": "required_linear_history" },
|
|
17
|
+
{
|
|
18
|
+
"type": "pull_request",
|
|
19
|
+
"parameters": {
|
|
20
|
+
"required_approving_review_count": 0,
|
|
21
|
+
"require_code_owner_review": false,
|
|
22
|
+
"require_last_push_approval": false,
|
|
23
|
+
"required_review_thread_resolution": true,
|
|
24
|
+
"dismiss_stale_reviews_on_push": true,
|
|
25
|
+
"allowed_merge_methods": ["squash"]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "required_status_checks",
|
|
30
|
+
"parameters": {
|
|
31
|
+
"strict_required_status_checks_policy": true,
|
|
32
|
+
"do_not_enforce_on_create": false,
|
|
33
|
+
"required_status_checks": [
|
|
34
|
+
{ "context": "clud-bug-review" },
|
|
35
|
+
{ "context": "check-derived-docs" },
|
|
36
|
+
{ "context": "check-decisions" },
|
|
37
|
+
{ "context": "check-links" }
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
]
|
|
37
42
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "VENDORED from reporulez (canonical source): https://raw.githubusercontent.com/thrillmade/reporulez/main/rulesets/baseline.json. Do NOT hand-edit — a CI drift-check against upstream is a follow-up. Applied by `clud-bug configure-github <owner>/<repo> --preset baseline`. Consumers ignore $-prefixed keys. baseline = structural hygiene only (no required checks): no deletions / no force-push / linear history / squash-only, thread resolution required, 0 approvals.",
|
|
3
|
+
"name": "reporulez-default",
|
|
4
|
+
"target": "branch",
|
|
5
|
+
"enforcement": "active",
|
|
6
|
+
"conditions": {
|
|
7
|
+
"ref_name": {
|
|
8
|
+
"include": ["~DEFAULT_BRANCH"],
|
|
9
|
+
"exclude": []
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"bypass_actors": [],
|
|
13
|
+
"rules": [
|
|
14
|
+
{ "type": "deletion" },
|
|
15
|
+
{ "type": "non_fast_forward" },
|
|
16
|
+
{ "type": "required_linear_history" },
|
|
17
|
+
{
|
|
18
|
+
"type": "pull_request",
|
|
19
|
+
"parameters": {
|
|
20
|
+
"required_approving_review_count": 0,
|
|
21
|
+
"require_code_owner_review": false,
|
|
22
|
+
"require_last_push_approval": false,
|
|
23
|
+
"required_review_thread_resolution": true,
|
|
24
|
+
"dismiss_stale_reviews_on_push": true,
|
|
25
|
+
"allowed_merge_methods": ["squash"]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "VENDORED from reporulez (canonical source): https://raw.githubusercontent.com/thrillmade/reporulez/main/rulesets/clud-bug.json. Do NOT hand-edit — a CI drift-check against upstream is a follow-up. Applied by `clud-bug configure-github <owner>/<repo> --preset clud-bug`. Consumers ignore $-prefixed keys. clud-bug = baseline + a single required `clud-bug-review` status check (the review gate) for repos that run the bot but not the full SkDD derived-docs suite.",
|
|
3
|
+
"name": "reporulez-default",
|
|
4
|
+
"target": "branch",
|
|
5
|
+
"enforcement": "active",
|
|
6
|
+
"conditions": {
|
|
7
|
+
"ref_name": {
|
|
8
|
+
"include": ["~DEFAULT_BRANCH"],
|
|
9
|
+
"exclude": []
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"bypass_actors": [],
|
|
13
|
+
"rules": [
|
|
14
|
+
{ "type": "deletion" },
|
|
15
|
+
{ "type": "non_fast_forward" },
|
|
16
|
+
{ "type": "required_linear_history" },
|
|
17
|
+
{
|
|
18
|
+
"type": "pull_request",
|
|
19
|
+
"parameters": {
|
|
20
|
+
"required_approving_review_count": 0,
|
|
21
|
+
"require_code_owner_review": false,
|
|
22
|
+
"require_last_push_approval": false,
|
|
23
|
+
"required_review_thread_resolution": true,
|
|
24
|
+
"dismiss_stale_reviews_on_push": true,
|
|
25
|
+
"allowed_merge_methods": ["squash"]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "required_status_checks",
|
|
30
|
+
"parameters": {
|
|
31
|
+
"strict_required_status_checks_policy": true,
|
|
32
|
+
"do_not_enforce_on_create": false,
|
|
33
|
+
"required_status_checks": [
|
|
34
|
+
{ "context": "clud-bug-review" }
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "VENDORED from reporulez (canonical source): https://raw.githubusercontent.com/thrillmade/reporulez/main/rulesets/public-guard.json. Do NOT hand-edit — a CI drift-check against upstream is a follow-up. Applied by `clud-bug configure-github <owner>/<repo> --preset public-guard`. Consumers ignore $-prefixed keys. public-guard = stricter posture for public repos with external contributors: 1 required approval, code-owner review, require-last-push approval. No CI-check rule (repos add their own via reporulez --extra-check).",
|
|
3
|
+
"name": "reporulez-default",
|
|
4
|
+
"target": "branch",
|
|
5
|
+
"enforcement": "active",
|
|
6
|
+
"conditions": {
|
|
7
|
+
"ref_name": {
|
|
8
|
+
"include": ["~DEFAULT_BRANCH"],
|
|
9
|
+
"exclude": []
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"bypass_actors": [],
|
|
13
|
+
"rules": [
|
|
14
|
+
{ "type": "deletion" },
|
|
15
|
+
{ "type": "non_fast_forward" },
|
|
16
|
+
{ "type": "required_linear_history" },
|
|
17
|
+
{
|
|
18
|
+
"type": "pull_request",
|
|
19
|
+
"parameters": {
|
|
20
|
+
"required_approving_review_count": 1,
|
|
21
|
+
"require_code_owner_review": true,
|
|
22
|
+
"require_last_push_approval": true,
|
|
23
|
+
"required_review_thread_resolution": true,
|
|
24
|
+
"dismiss_stale_reviews_on_push": true,
|
|
25
|
+
"allowed_merge_methods": ["squash"]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "VENDORED from reporulez (canonical source): https://raw.githubusercontent.com/thrillmade/reporulez/main/rulesets/skdd.json. Do NOT hand-edit — a CI drift-check against upstream is a follow-up. Applied by `clud-bug configure-github <owner>/<repo>` (default preset) and the App's auto-setup. Consumers ignore $-prefixed keys. skdd = clud-bug + the SkDD derived-docs checks (check-derived-docs / check-decisions / check-links). This is clud-bug's DEFAULT preset.",
|
|
3
|
+
"name": "reporulez-default",
|
|
4
|
+
"target": "branch",
|
|
5
|
+
"enforcement": "active",
|
|
6
|
+
"conditions": {
|
|
7
|
+
"ref_name": {
|
|
8
|
+
"include": ["~DEFAULT_BRANCH"],
|
|
9
|
+
"exclude": []
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"bypass_actors": [],
|
|
13
|
+
"rules": [
|
|
14
|
+
{ "type": "deletion" },
|
|
15
|
+
{ "type": "non_fast_forward" },
|
|
16
|
+
{ "type": "required_linear_history" },
|
|
17
|
+
{
|
|
18
|
+
"type": "pull_request",
|
|
19
|
+
"parameters": {
|
|
20
|
+
"required_approving_review_count": 0,
|
|
21
|
+
"require_code_owner_review": false,
|
|
22
|
+
"require_last_push_approval": false,
|
|
23
|
+
"required_review_thread_resolution": true,
|
|
24
|
+
"dismiss_stale_reviews_on_push": true,
|
|
25
|
+
"allowed_merge_methods": ["squash"]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "required_status_checks",
|
|
30
|
+
"parameters": {
|
|
31
|
+
"strict_required_status_checks_policy": true,
|
|
32
|
+
"do_not_enforce_on_create": false,
|
|
33
|
+
"required_status_checks": [
|
|
34
|
+
{ "context": "clud-bug-review" },
|
|
35
|
+
{ "context": "check-derived-docs" },
|
|
36
|
+
{ "context": "check-decisions" },
|
|
37
|
+
{ "context": "check-links" }
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { loadCanonicalV1, type OctokitLike } from '../core/configure-github.js';
|
|
1
|
+
import { loadCanonicalV1, loadPreset, type OctokitLike, type PresetName } from '../core/configure-github.js';
|
|
2
2
|
export interface RunConfigureGithubOptions {
|
|
3
3
|
/** "owner/repo" target — required. */
|
|
4
4
|
target?: string | null;
|
|
5
|
+
/**
|
|
6
|
+
* Ruleset preset: baseline · clud-bug · skdd · public-guard.
|
|
7
|
+
* Defaults to `skdd`. Invalid values exit 2 (usage error).
|
|
8
|
+
*/
|
|
9
|
+
preset?: string;
|
|
5
10
|
/** Target branch (default `main`). */
|
|
6
11
|
branch?: string;
|
|
7
12
|
/** Render diff only; skip PATCH calls. */
|
|
@@ -23,6 +28,8 @@ export interface RunConfigureGithubOptions {
|
|
|
23
28
|
export interface ConfigureSummary {
|
|
24
29
|
owner: string;
|
|
25
30
|
repo: string;
|
|
31
|
+
/** The preset applied (baseline · clud-bug · skdd · public-guard). */
|
|
32
|
+
preset?: string;
|
|
26
33
|
/** True when the repo already matches canonical-v1 (idempotent no-op). */
|
|
27
34
|
alreadyCanonical: boolean;
|
|
28
35
|
/** True when this was a --dry-run (no PATCH calls made). */
|
|
@@ -51,8 +58,10 @@ export declare function runConfigureGithub(options: RunConfigureGithubOptions):
|
|
|
51
58
|
*/
|
|
52
59
|
export declare function ghCliOctokit(token: string): OctokitLike;
|
|
53
60
|
/**
|
|
54
|
-
* Re-exported so callers can preload
|
|
55
|
-
* flag in future).
|
|
61
|
+
* Re-exported so callers can preload a ruleset (e.g. for a `--show-ruleset`
|
|
62
|
+
* flag in future). `loadCanonicalV1` resolves the default (skdd) preset;
|
|
63
|
+
* `loadPreset(name)` picks a specific variant.
|
|
56
64
|
*/
|
|
57
|
-
export { loadCanonicalV1 };
|
|
65
|
+
export { loadCanonicalV1, loadPreset };
|
|
66
|
+
export type { PresetName };
|
|
58
67
|
//# sourceMappingURL=configure-github.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure-github.d.ts","sourceRoot":"","sources":["../../src/cli/configure-github.ts"],"names":[],"mappings":"AAwBA,OAAO,EAEL,eAAe,EACf,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"configure-github.d.ts","sourceRoot":"","sources":["../../src/cli/configure-github.ts"],"names":[],"mappings":"AAwBA,OAAO,EAEL,eAAe,EACf,UAAU,EAIV,KAAK,WAAW,EAEhB,KAAK,UAAU,EAChB,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,yBAAyB;IACxC,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5C,yEAAyE;IACzE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,CAAC;IAChD,qCAAqC;IACrC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,qCAAqC;IACrC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAiCD,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4DAA4D;IAC5D,MAAM,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAiBvF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAmGjB;AAkBD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAkIvD;AAOD;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -21,14 +21,23 @@
|
|
|
21
21
|
//
|
|
22
22
|
// If neither produces a token, exits 1 with a recovery message.
|
|
23
23
|
import { spawn, spawnSync } from 'node:child_process';
|
|
24
|
-
import { applyCanonicalRuleset, loadCanonicalV1, } from '../core/configure-github.js';
|
|
25
|
-
const HELP = `clud-bug configure-github —
|
|
24
|
+
import { applyCanonicalRuleset, loadCanonicalV1, loadPreset, isPresetName, DEFAULT_PRESET, PRESET_NAMES, } from '../core/configure-github.js';
|
|
25
|
+
const HELP = `clud-bug configure-github — one-stop repo setup (conveniences + SPEC §7 ruleset).
|
|
26
26
|
|
|
27
27
|
Usage:
|
|
28
28
|
clud-bug configure-github <owner>/<repo> [options]
|
|
29
29
|
|
|
30
|
+
Applies, in order, for the selected preset:
|
|
31
|
+
1. Repo conveniences (ALL presets): squash-only merges, auto-merge +
|
|
32
|
+
delete-branch-on-merge on, PR title/body as the squash commit message.
|
|
33
|
+
2. The canonical branch ruleset for the chosen preset.
|
|
34
|
+
|
|
30
35
|
Options:
|
|
31
|
-
--
|
|
36
|
+
--preset <name> Ruleset preset: baseline | clud-bug | skdd | public-guard.
|
|
37
|
+
Default: skdd. (baseline = structural only; clud-bug adds
|
|
38
|
+
the clud-bug-review gate; skdd adds SkDD derived-docs
|
|
39
|
+
checks; public-guard = 1 approval + code-owner.)
|
|
40
|
+
--dry-run Compute diff and print it, but do NOT create/update anything.
|
|
32
41
|
--branch <name> Target branch (default: main).
|
|
33
42
|
--quiet,-q Suppress progress chatter; emit only the final summary.
|
|
34
43
|
--json Emit the status payload as JSON (machine consumption).
|
|
@@ -40,7 +49,7 @@ Auth (resolved in order):
|
|
|
40
49
|
|
|
41
50
|
Exit codes:
|
|
42
51
|
0 success or already-canonical
|
|
43
|
-
1 auth missing,
|
|
52
|
+
1 auth missing, ruleset write error, or unrecoverable transport failure
|
|
44
53
|
2 CLI usage error (missing target, bad flag)
|
|
45
54
|
`;
|
|
46
55
|
/**
|
|
@@ -49,18 +58,20 @@ Exit codes:
|
|
|
49
58
|
* consumption, key-colon-value for humans.
|
|
50
59
|
*/
|
|
51
60
|
export function formatConfigureSummary(summary, json) {
|
|
52
|
-
const { owner, repo, alreadyCanonical, dryRun, changes } = summary;
|
|
61
|
+
const { owner, repo, preset, alreadyCanonical, dryRun, changes } = summary;
|
|
53
62
|
if (json) {
|
|
54
|
-
return (JSON.stringify({ owner, repo, alreadyCanonical, rulesetVersion: '
|
|
63
|
+
return (JSON.stringify({ owner, repo, preset, alreadyCanonical, rulesetVersion: 'v2', dryRun, changes }) + '\n');
|
|
55
64
|
}
|
|
65
|
+
const presetTag = preset ? ` preset: ${preset}` : '';
|
|
66
|
+
const presetParen = preset ? ` (${preset})` : '';
|
|
56
67
|
if (alreadyCanonical) {
|
|
57
|
-
return `ok configure-github: owner: ${owner} repo: ${repo} alreadyCanonical: true rulesetVersion:
|
|
68
|
+
return `ok configure-github: owner: ${owner} repo: ${repo}${presetTag} alreadyCanonical: true rulesetVersion: v2\n`;
|
|
58
69
|
}
|
|
59
70
|
const plural = changes === 1 ? '' : 's';
|
|
60
71
|
if (dryRun) {
|
|
61
|
-
return `ok configure-github: dry-run on ${owner}/${repo} — ${changes} change${plural} pending\n`;
|
|
72
|
+
return `ok configure-github: dry-run on ${owner}/${repo}${presetParen} — ${changes} change${plural} pending\n`;
|
|
62
73
|
}
|
|
63
|
-
return `ok configure-github: ${owner}/${repo} converged to canonical-v1 (${changes} change${plural})\n`;
|
|
74
|
+
return `ok configure-github: ${owner}/${repo} converged to canonical-v1${presetParen} (${changes} change${plural})\n`;
|
|
64
75
|
}
|
|
65
76
|
/**
|
|
66
77
|
* Entry point — wired into `clud-bug.js` dispatch. Returns a Node-style
|
|
@@ -69,7 +80,7 @@ export function formatConfigureSummary(summary, json) {
|
|
|
69
80
|
* without taking down the harness.
|
|
70
81
|
*/
|
|
71
82
|
export async function runConfigureGithub(options) {
|
|
72
|
-
const { target, branch = 'main', dryRun = false, quiet = false, json = false, resolveToken = defaultResolveToken, octokitFactory = ghCliOctokit, stdout = (msg) => process.stdout.write(msg), stderr = (msg) => process.stderr.write(msg), } = options;
|
|
83
|
+
const { target, preset: presetOpt, branch = 'main', dryRun = false, quiet = false, json = false, resolveToken = defaultResolveToken, octokitFactory = ghCliOctokit, stdout = (msg) => process.stdout.write(msg), stderr = (msg) => process.stderr.write(msg), } = options;
|
|
73
84
|
if (!target) {
|
|
74
85
|
stderr(HELP);
|
|
75
86
|
return 2;
|
|
@@ -80,6 +91,12 @@ export async function runConfigureGithub(options) {
|
|
|
80
91
|
return 2;
|
|
81
92
|
}
|
|
82
93
|
const [, owner, repo] = match;
|
|
94
|
+
// Resolve + validate the preset (usage error before any network call).
|
|
95
|
+
const preset = presetOpt ?? DEFAULT_PRESET;
|
|
96
|
+
if (!isPresetName(preset)) {
|
|
97
|
+
stderr(`clud-bug configure-github: unknown preset "${preset}" (valid: ${PRESET_NAMES.join(', ')}).\n`);
|
|
98
|
+
return 2;
|
|
99
|
+
}
|
|
83
100
|
const token = await resolveToken();
|
|
84
101
|
if (!token) {
|
|
85
102
|
stderr('clud-bug configure-github: no GitHub token found.\n' +
|
|
@@ -87,7 +104,7 @@ export async function runConfigureGithub(options) {
|
|
|
87
104
|
return 1;
|
|
88
105
|
}
|
|
89
106
|
if (!quiet) {
|
|
90
|
-
stdout(`\u{1F41B} configure-github: applying
|
|
107
|
+
stdout(`\u{1F41B} configure-github: applying "${preset}" preset (conveniences + ruleset) to ${owner}/${repo} (branch=${branch})\n`);
|
|
91
108
|
}
|
|
92
109
|
// Single-call orchestration: the CLI previously called
|
|
93
110
|
// applyCanonicalRuleset twice in apply mode (dry-run first to display the
|
|
@@ -108,17 +125,18 @@ export async function runConfigureGithub(options) {
|
|
|
108
125
|
owner,
|
|
109
126
|
repo,
|
|
110
127
|
branch,
|
|
128
|
+
preset,
|
|
111
129
|
dryRun,
|
|
112
130
|
});
|
|
113
131
|
}
|
|
114
132
|
catch (err) {
|
|
115
|
-
stderr(`clud-bug configure-github: ${dryRun ? 'failed to read current state' : '
|
|
133
|
+
stderr(`clud-bug configure-github: ${dryRun ? 'failed to read current state' : 'ruleset write failed'}: ${stringifyError(err)}\n`);
|
|
116
134
|
return 1;
|
|
117
135
|
}
|
|
118
136
|
if (result.alreadyCanonical) {
|
|
119
137
|
if (!quiet)
|
|
120
138
|
stdout(' No changes — repo already matches canonical-v1.\n');
|
|
121
|
-
stdout(formatConfigureSummary({ owner, repo, alreadyCanonical: true, dryRun, changes: 0 }, json));
|
|
139
|
+
stdout(formatConfigureSummary({ owner, repo, preset, alreadyCanonical: true, dryRun, changes: 0 }, json));
|
|
122
140
|
return 0;
|
|
123
141
|
}
|
|
124
142
|
if (!quiet) {
|
|
@@ -128,10 +146,10 @@ export async function runConfigureGithub(options) {
|
|
|
128
146
|
stdout(` - ${c}\n`);
|
|
129
147
|
}
|
|
130
148
|
if (dryRun) {
|
|
131
|
-
stdout(formatConfigureSummary({ owner, repo, alreadyCanonical: false, dryRun: true, changes: result.changes.length }, json));
|
|
149
|
+
stdout(formatConfigureSummary({ owner, repo, preset, alreadyCanonical: false, dryRun: true, changes: result.changes.length }, json));
|
|
132
150
|
return 0;
|
|
133
151
|
}
|
|
134
|
-
stdout(formatConfigureSummary({ owner, repo, alreadyCanonical: false, dryRun: false, changes: result.changes.length }, json));
|
|
152
|
+
stdout(formatConfigureSummary({ owner, repo, preset, alreadyCanonical: false, dryRun: false, changes: result.changes.length }, json));
|
|
135
153
|
return 0;
|
|
136
154
|
}
|
|
137
155
|
/**
|
|
@@ -168,9 +186,9 @@ export function ghCliOctokit(token) {
|
|
|
168
186
|
args.push('--input', '-');
|
|
169
187
|
}
|
|
170
188
|
args.push(path);
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
//
|
|
189
|
+
// Pin the rulesets API media type; the wrapping error carries the
|
|
190
|
+
// parsed HTTP status (from `HTTP NNN` in gh's stderr) so transport
|
|
191
|
+
// failures surface with a real status code, not a shell hint.
|
|
174
192
|
args.push('-H', 'Accept: application/vnd.github+json');
|
|
175
193
|
const child = spawn('gh', args, {
|
|
176
194
|
env,
|
|
@@ -212,16 +230,43 @@ export function ghCliOctokit(token) {
|
|
|
212
230
|
}
|
|
213
231
|
return {
|
|
214
232
|
repos: {
|
|
215
|
-
async
|
|
216
|
-
|
|
217
|
-
|
|
233
|
+
async getRepoRulesets({ owner, repo, includes_parents }) {
|
|
234
|
+
// `?per_page=100` (not `--paginate`) to grab all rulesets in one
|
|
235
|
+
// call — a repo realistically has a handful, and --paginate emits
|
|
236
|
+
// multiple concatenated JSON arrays that our single JSON.parse can't
|
|
237
|
+
// consume (see the v0.6.30 --paginate → ?per_page=100 decision).
|
|
238
|
+
const parents = includes_parents === undefined ? false : includes_parents;
|
|
239
|
+
const data = await ghApi('GET', `/repos/${owner}/${repo}/rulesets?per_page=100&includes_parents=${parents}`);
|
|
240
|
+
return {
|
|
241
|
+
data: (Array.isArray(data) ? data : []),
|
|
242
|
+
};
|
|
243
|
+
},
|
|
244
|
+
async getRepoRuleset({ owner, repo, ruleset_id }) {
|
|
245
|
+
const data = await ghApi('GET', `/repos/${owner}/${repo}/rulesets/${ruleset_id}`);
|
|
246
|
+
return {
|
|
247
|
+
data: data,
|
|
248
|
+
};
|
|
249
|
+
},
|
|
250
|
+
async createRepoRuleset({ owner, repo, ...body }) {
|
|
251
|
+
const data = await ghApi('POST', `/repos/${owner}/${repo}/rulesets`, body);
|
|
252
|
+
return {
|
|
253
|
+
data: data,
|
|
254
|
+
};
|
|
218
255
|
},
|
|
219
|
-
async
|
|
220
|
-
|
|
256
|
+
async updateRepoRuleset({ owner, repo, ruleset_id, ...body }) {
|
|
257
|
+
const data = await ghApi('PUT', `/repos/${owner}/${repo}/rulesets/${ruleset_id}`, body);
|
|
258
|
+
return {
|
|
259
|
+
data: data,
|
|
260
|
+
};
|
|
221
261
|
},
|
|
262
|
+
// Repo-level conveniences (universal hygiene): GET the repo settings,
|
|
263
|
+
// PATCH the drifted merge/branch-cleanup fields. Restored alongside the
|
|
264
|
+
// ruleset applier so `configure-github` is the one-stop setup command.
|
|
222
265
|
async get({ owner, repo }) {
|
|
223
266
|
const data = await ghApi('GET', `/repos/${owner}/${repo}`);
|
|
224
|
-
return {
|
|
267
|
+
return {
|
|
268
|
+
data: data,
|
|
269
|
+
};
|
|
225
270
|
},
|
|
226
271
|
async update({ owner, repo, ...rest }) {
|
|
227
272
|
return ghApi('PATCH', `/repos/${owner}/${repo}`, rest);
|
|
@@ -235,8 +280,9 @@ function stringifyError(err) {
|
|
|
235
280
|
return String(err);
|
|
236
281
|
}
|
|
237
282
|
/**
|
|
238
|
-
* Re-exported so callers can preload
|
|
239
|
-
* flag in future).
|
|
283
|
+
* Re-exported so callers can preload a ruleset (e.g. for a `--show-ruleset`
|
|
284
|
+
* flag in future). `loadCanonicalV1` resolves the default (skdd) preset;
|
|
285
|
+
* `loadPreset(name)` picks a specific variant.
|
|
240
286
|
*/
|
|
241
|
-
export { loadCanonicalV1 };
|
|
287
|
+
export { loadCanonicalV1, loadPreset };
|
|
242
288
|
//# sourceMappingURL=configure-github.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure-github.js","sourceRoot":"","sources":["../../src/cli/configure-github.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,8CAA8C;AAC9C,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,uEAAuE;AACvE,kEAAkE;AAClE,sEAAsE;AACtE,gDAAgD;AAChD,EAAE;AACF,SAAS;AACT,EAAE;AACF,6CAA6C;AAC7C,uDAAuD;AACvD,8DAA8D;AAC9D,EAAE;AACF,eAAe;AACf,EAAE;AACF,sEAAsE;AACtE,uDAAuD;AACvD,EAAE;AACF,gEAAgE;AAEhE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,qBAAqB,EACrB,eAAe,
|
|
1
|
+
{"version":3,"file":"configure-github.js","sourceRoot":"","sources":["../../src/cli/configure-github.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAkBA;sDACsD;AACtD,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAe,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAkBA;sDACsD;AACtD,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAe,GAAG,MAAM,CAoCrE;AAED,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvC;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CActE;AAcD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAwBvF"}
|
package/dist/cli/hooks.js
CHANGED
|
@@ -55,7 +55,11 @@ export function buildCommitReviewCommand(pin = 'next') {
|
|
|
55
55
|
`if [ -n "$ev" ]; then case "$ev" in *'git commit'*|*'logmind log'*) ;; *) exit 0 ;; esac; fi`,
|
|
56
56
|
`sha=$(git rev-parse HEAD 2>/dev/null) || exit 0`,
|
|
57
57
|
`gitdir=$(git rev-parse --git-dir 2>/dev/null) || exit 0`,
|
|
58
|
-
|
|
58
|
+
// Pure LOOP-GUARD, not an attestation (§10.3.3): records only that the recipe
|
|
59
|
+
// was already SURFACED for this SHA (avoids a re-review on an amend / double
|
|
60
|
+
// fire). It never means "reviewed" and never yields a green check — the only
|
|
61
|
+
// authoritative "reviewed" state is the notary-issued `clud-bug-review` check.
|
|
62
|
+
`marker="$gitdir/clud-bug-hook-fired"`,
|
|
59
63
|
`[ "$(cat "$marker" 2>/dev/null)" = "$sha" ] && exit 0`,
|
|
60
64
|
// H4 — one retry on a transient npx/network blip (a stale lock, a slow
|
|
61
65
|
// registry) before giving up, so a hiccup doesn't silently skip the review.
|
package/dist/cli/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,6DAA6D;AAC7D,EAAE;AACF,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,iFAAiF;AACjF,8EAA8E;AAC9E,2EAA2E;AAC3E,iFAAiF;AACjF,iFAAiF;AACjF,gFAAgF;AAChF,8EAA8E;AAC9E,2BAA2B;AAE3B;sDACsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc,MAAM;IAC3D,OAAO;QACL,6EAA6E;QAC7E,0EAA0E;QAC1E,6EAA6E;QAC7E,KAAK,oBAAoB,0DAA0D;QACnF,iFAAiF;QACjF,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,2EAA2E;QAC3E,uBAAuB;QACvB,8FAA8F;QAC9F,iDAAiD;QACjD,yDAAyD;QACzD,
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,6DAA6D;AAC7D,EAAE;AACF,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,iFAAiF;AACjF,8EAA8E;AAC9E,2EAA2E;AAC3E,iFAAiF;AACjF,iFAAiF;AACjF,gFAAgF;AAChF,8EAA8E;AAC9E,2BAA2B;AAE3B;sDACsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc,MAAM;IAC3D,OAAO;QACL,6EAA6E;QAC7E,0EAA0E;QAC1E,6EAA6E;QAC7E,KAAK,oBAAoB,0DAA0D;QACnF,iFAAiF;QACjF,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,2EAA2E;QAC3E,uBAAuB;QACvB,8FAA8F;QAC9F,iDAAiD;QACjD,yDAAyD;QACzD,8EAA8E;QAC9E,6EAA6E;QAC7E,6EAA6E;QAC7E,+EAA+E;QAC/E,sCAAsC;QACtC,uDAAuD;QACvD,uEAAuE;QACvE,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,oDAAoD;QACpD,yBAAyB,GAAG,yDAAyD;QACrF,4DAA4D,GAAG,6DAA6D;QAC5H,8EAA8E;QAC9E,6EAA6E;QAC7E,kEAAkE;QAClE,kHAAkH;QAClH,oDAAoD;QACpD,kOAAkO;QAClO,QAAQ;KACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,CAAC;IACjG,OAAO;QACL,OAAO,EAAE,MAAM;QACf,KAAK,EAAE;YACL,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE;YACrC,0EAA0E;YAC1E,sEAAsE;YACtE,0EAA0E;YAC1E,qEAAqE;YACrE,2EAA2E;YAC3E,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,qBAAqB,EAAE;SACvC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,CAAsC;IACvD,2EAA2E;IAC3E,2EAA2E;IAC3E,4BAA4B;IAC5B,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAmC;IAC/D,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAiB,EAAE,OAAe;IACrE,MAAM,IAAI,GACR,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAI,QAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,KAAK,GAAuC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;IAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5E,8EAA8E;IAC9E,8EAA8E;IAC9E,eAAe;IACf,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAuB,EAAE,CAAC;IAC5C,MAAM,kBAAkB,GAAmC,EAAE,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK;gBAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GACZ,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpG,KAAK,CAAC,WAAW,GAAG,CAAC,GAAG,YAAY,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAoSA,iBAAe,IAAI,kBAyClB;AA0gED,OAAO,EAAE,IAAI,EAAE,CAAC"}
|