@intentius/chant 0.46.0 → 0.49.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/dist/audit/core.d.ts +21 -3
- package/dist/audit/core.d.ts.map +1 -1
- package/dist/audit/discover.d.ts +3 -2
- package/dist/audit/discover.d.ts.map +1 -1
- package/dist/audit/rules-doc.d.ts.map +1 -1
- package/dist/build.d.ts +3 -3
- package/dist/build.d.ts.map +1 -1
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/handlers/lifecycle.d.ts +1 -1
- package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
- package/dist/cli/mcp/resource-handlers.d.ts.map +1 -1
- package/dist/cli/mcp/tools/explain.d.ts +6 -0
- package/dist/cli/mcp/tools/explain.d.ts.map +1 -1
- package/dist/cli/plugins.d.ts +1 -1
- package/dist/cli/plugins.d.ts.map +1 -1
- package/dist/cli/reporters/stylish.d.ts +15 -1
- package/dist/cli/reporters/stylish.d.ts.map +1 -1
- package/dist/components/auto-release.d.ts +4 -0
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/starter-plugin.d.ts +2 -0
- package/dist/components/starter-plugin.d.ts.map +1 -1
- package/dist/components/verbs/ensure-secret.d.ts +50 -0
- package/dist/components/verbs/ensure-secret.d.ts.map +1 -0
- package/dist/components/verbs/index.d.ts +8 -0
- package/dist/components/verbs/index.d.ts.map +1 -1
- package/dist/components/verbs/r2-sync.d.ts +76 -0
- package/dist/components/verbs/r2-sync.d.ts.map +1 -0
- package/dist/components/verbs/wrangler.d.ts +108 -0
- package/dist/components/verbs/wrangler.d.ts.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/deep-observation.d.ts +14 -0
- package/dist/deep-observation.d.ts.map +1 -1
- package/dist/effect-receipt.d.ts +177 -0
- package/dist/effect-receipt.d.ts.map +1 -0
- package/dist/fold/subset.d.ts +15 -2
- package/dist/fold/subset.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/lexicon.d.ts +44 -3
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/change-set.d.ts +33 -5
- package/dist/lifecycle/change-set.d.ts.map +1 -1
- package/dist/lifecycle/index.d.ts +2 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/observation-baseline.d.ts +21 -3
- package/dist/lifecycle/observation-baseline.d.ts.map +1 -1
- package/dist/lifecycle/receipt-plan.d.ts +62 -0
- package/dist/lifecycle/receipt-plan.d.ts.map +1 -0
- package/dist/lifecycle/release-ledger.d.ts +20 -0
- package/dist/lifecycle/release-ledger.d.ts.map +1 -1
- package/dist/lifecycle/teardown.d.ts +6 -4
- package/dist/lifecycle/teardown.d.ts.map +1 -1
- package/dist/lifecycle/unobserved-gate.d.ts +67 -0
- package/dist/lifecycle/unobserved-gate.d.ts.map +1 -0
- package/dist/lint/knowledge-checks.d.ts +48 -0
- package/dist/lint/knowledge-checks.d.ts.map +1 -0
- package/dist/lint/output-checks.d.ts +5 -0
- package/dist/lint/output-checks.d.ts.map +1 -0
- package/dist/lint/pipeline-change-gate.d.ts +101 -0
- package/dist/lint/pipeline-change-gate.d.ts.map +1 -0
- package/dist/lint/post-synth.d.ts +12 -0
- package/dist/lint/post-synth.d.ts.map +1 -1
- package/dist/lint/receipt-checks.d.ts +9 -0
- package/dist/lint/receipt-checks.d.ts.map +1 -0
- package/dist/lint/rules/cor022-receipt-leaf.d.ts +13 -0
- package/dist/lint/rules/cor022-receipt-leaf.d.ts.map +1 -0
- package/dist/lint/rules/cor024-receipt-secret-pointer.d.ts +3 -0
- package/dist/lint/rules/cor024-receipt-secret-pointer.d.ts.map +1 -0
- package/dist/lint/rules/evl001-non-literal-expression.d.ts.map +1 -1
- package/dist/lint/rules/index.d.ts +3 -1
- package/dist/lint/rules/index.d.ts.map +1 -1
- package/dist/okf-read.d.ts +78 -0
- package/dist/okf-read.d.ts.map +1 -0
- package/dist/op/builders.d.ts +98 -1
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/index.d.ts +4 -2
- package/dist/op/index.d.ts.map +1 -1
- package/dist/op/local-executor.d.ts +2 -1
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/receipt-store.d.ts +138 -0
- package/dist/op/receipt-store.d.ts.map +1 -0
- package/dist/op/types.d.ts +31 -1
- package/dist/op/types.d.ts.map +1 -1
- package/dist/secret-materialization.d.ts +138 -0
- package/dist/secret-materialization.d.ts.map +1 -0
- package/dist/secret-provenance.d.ts +218 -0
- package/dist/secret-provenance.d.ts.map +1 -0
- package/dist/serializer.d.ts +11 -0
- package/dist/serializer.d.ts.map +1 -1
- package/dist/yaml.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/audit/core.test.ts +57 -0
- package/src/audit/core.ts +0 -0
- package/src/audit/detect-bundle.test.ts +1 -1
- package/src/audit/discover.test.ts +24 -0
- package/src/audit/discover.ts +11 -2
- package/src/audit/rules-doc.ts +11 -1
- package/src/build.test.ts +41 -0
- package/src/build.ts +34 -6
- package/src/cli/commands/__fixtures__/audit-fountain/agents/fleet.yaml +27 -0
- package/src/cli/commands/__fixtures__/audit-fountain/k8s/deploy.yaml +16 -0
- package/src/cli/commands/__fixtures__/audit-fountain-clean/fleet.yaml +20 -0
- package/src/cli/commands/audit.test.ts +53 -0
- package/src/cli/commands/audit.ts +1 -1
- package/src/cli/commands/build.test.ts +80 -0
- package/src/cli/commands/build.ts +106 -8
- package/src/cli/commands/lint.ts +15 -3
- package/src/cli/handlers/explain.test.ts +70 -1
- package/src/cli/handlers/graph.ts +2 -2
- package/src/cli/handlers/lifecycle.test.ts +115 -1
- package/src/cli/handlers/lifecycle.ts +84 -11
- package/src/cli/mcp/resource-handlers.ts +38 -1
- package/src/cli/mcp/server.test.ts +58 -1
- package/src/cli/mcp/tools/explain.ts +51 -2
- package/src/cli/plugins.ts +4 -2
- package/src/cli/reporters/stylish.test.ts +154 -0
- package/src/cli/reporters/stylish.ts +154 -33
- package/src/components/auto-release.ts +6 -0
- package/src/components/registry.test.ts +7 -2
- package/src/components/starter-plugin.ts +17 -0
- package/src/components/verbs/ensure-secret.test.ts +130 -0
- package/src/components/verbs/ensure-secret.ts +79 -0
- package/src/components/verbs/index.ts +8 -0
- package/src/components/verbs/r2-sync.test.ts +107 -0
- package/src/components/verbs/r2-sync.ts +124 -0
- package/src/components/verbs/wrangler.test.ts +170 -0
- package/src/components/verbs/wrangler.ts +241 -0
- package/src/config.test.ts +15 -0
- package/src/config.ts +30 -0
- package/src/deep-observation.test.ts +19 -0
- package/src/deep-observation.ts +17 -0
- package/src/effect-receipt-exclusion.test.ts +190 -0
- package/src/effect-receipt.test.ts +419 -0
- package/src/effect-receipt.ts +412 -0
- package/src/fold/subset.test.ts +26 -0
- package/src/fold/subset.ts +45 -19
- package/src/index.ts +4 -0
- package/src/lexicon.ts +48 -3
- package/src/lifecycle/change-set.ts +46 -7
- package/src/lifecycle/index.ts +2 -0
- package/src/lifecycle/observation-baseline.test.ts +46 -0
- package/src/lifecycle/observation-baseline.ts +33 -1
- package/src/lifecycle/receipt-plan.test.ts +250 -0
- package/src/lifecycle/receipt-plan.ts +249 -0
- package/src/lifecycle/release-ledger.ts +20 -0
- package/src/lifecycle/teardown.test.ts +31 -0
- package/src/lifecycle/teardown.ts +6 -4
- package/src/lifecycle/unobserved-gate.test.ts +109 -0
- package/src/lifecycle/unobserved-gate.ts +102 -0
- package/src/lint/knowledge-checks.test.ts +80 -0
- package/src/lint/knowledge-checks.ts +74 -0
- package/src/lint/output-checks.test.ts +85 -0
- package/src/lint/output-checks.ts +99 -0
- package/src/lint/pipeline-change-gate.test.ts +144 -0
- package/src/lint/pipeline-change-gate.ts +153 -0
- package/src/lint/post-synth.ts +15 -0
- package/src/lint/receipt-checks.test.ts +101 -0
- package/src/lint/receipt-checks.ts +93 -0
- package/src/lint/rules/cor022-receipt-leaf.test.ts +116 -0
- package/src/lint/rules/cor022-receipt-leaf.ts +130 -0
- package/src/lint/rules/cor024-receipt-secret-pointer.test.ts +121 -0
- package/src/lint/rules/cor024-receipt-secret-pointer.ts +218 -0
- package/src/lint/rules/evl001-non-literal-expression.test.ts +27 -0
- package/src/lint/rules/evl001-non-literal-expression.ts +8 -1
- package/src/lint/rules/index.ts +7 -1
- package/src/okf-read.test.ts +149 -0
- package/src/okf-read.ts +197 -0
- package/src/op/builders.ts +139 -1
- package/src/op/effect-step.test.ts +311 -0
- package/src/op/index.ts +10 -3
- package/src/op/local-executor.ts +172 -25
- package/src/op/op.test.ts +25 -2
- package/src/op/receipt-store.ts +211 -0
- package/src/op/types.ts +33 -1
- package/src/secret-materialization.test.ts +199 -0
- package/src/secret-materialization.ts +235 -0
- package/src/secret-provenance.test.ts +388 -0
- package/src/secret-provenance.ts +475 -0
- package/src/serializer.ts +12 -0
- package/src/yaml.test.ts +88 -0
- package/src/yaml.ts +76 -6
package/dist/audit/core.d.ts
CHANGED
|
@@ -12,11 +12,16 @@
|
|
|
12
12
|
* only see one file at a time here; that is acceptable because the security
|
|
13
13
|
* tier is per-document.
|
|
14
14
|
*
|
|
15
|
-
* Checks that read `ctx.entities` instead of `ctx.outputs` will not
|
|
16
|
-
* audited YAML — the security tier is YAML-based, so this is by
|
|
15
|
+
* Checks that read `ctx.entities` instead of `ctx.outputs` normally will not
|
|
16
|
+
* fire on audited YAML — the security tier is YAML-based, so this is by
|
|
17
|
+
* design. The exception is a lexicon that ships `auditEntities` (#1567):
|
|
18
|
+
* its classified files are parsed back into the entity graph (parse-to-graph),
|
|
19
|
+
* so the same graph-reading checks that fire on `chant build` fire on the
|
|
20
|
+
* audit too, with no output-reading rule variants to drift.
|
|
17
21
|
*/
|
|
18
22
|
import type { Severity } from "../lint/rule.js";
|
|
19
23
|
import type { PostSynthCheck } from "../lint/post-synth.js";
|
|
24
|
+
import type { Declarable } from "../declarable.js";
|
|
20
25
|
/**
|
|
21
26
|
* The lexicon whose post-synth checks run against an audited file. Any lexicon
|
|
22
27
|
* name is accepted — `defaultChecksProvider` loads the plugin by name — so a
|
|
@@ -24,7 +29,7 @@ import type { PostSynthCheck } from "../lint/post-synth.js";
|
|
|
24
29
|
* ones with built-in content detection (see `discover.ts`), kept here only for
|
|
25
30
|
* editor autocomplete; `(string & {})` keeps the union open.
|
|
26
31
|
*/
|
|
27
|
-
export type AuditLexicon = "github" | "gitlab" | "forgejo" | "k8s" | "docker" | "aws" | "azure" | "gcp" | "helm" | (string & {});
|
|
32
|
+
export type AuditLexicon = "github" | "gitlab" | "forgejo" | "k8s" | "docker" | "aws" | "azure" | "gcp" | "helm" | "fountain" | (string & {});
|
|
28
33
|
/** A single CI file to audit. */
|
|
29
34
|
export interface AuditInput {
|
|
30
35
|
/** Path used to tag findings (e.g. ".github/workflows/ci.yml"). */
|
|
@@ -56,6 +61,18 @@ export interface AuditFinding {
|
|
|
56
61
|
* unit-tested without loading real lexicon packages.
|
|
57
62
|
*/
|
|
58
63
|
export type ChecksProvider = (lexicon: AuditLexicon) => Promise<PostSynthCheck[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Parse one classified file's content into the lexicon's entity graph — the
|
|
66
|
+
* parse-to-graph half of the audit (#1567). The returned map is what
|
|
67
|
+
* `ctx.entities` holds during a build, so entity-reading checks run unchanged.
|
|
68
|
+
*/
|
|
69
|
+
export type EntitiesParser = (content: string) => Map<string, Declarable>;
|
|
70
|
+
/**
|
|
71
|
+
* Resolve the entities parser for a lexicon (its plugin's `auditEntities`,
|
|
72
|
+
* when it ships one). Injectable so the core can be unit-tested without
|
|
73
|
+
* loading real lexicon packages.
|
|
74
|
+
*/
|
|
75
|
+
export type EntitiesProvider = (lexicon: AuditLexicon) => Promise<EntitiesParser | undefined>;
|
|
59
76
|
/**
|
|
60
77
|
* Default provider: load the lexicon plugin(s) and return their post-synth
|
|
61
78
|
* checks. Forgejo workflows are GitHub-dialect YAML, so the GitHub security
|
|
@@ -70,6 +87,7 @@ export declare class MissingLexiconError extends Error {
|
|
|
70
87
|
*/
|
|
71
88
|
export declare function auditFiles(inputs: AuditInput[], opts?: {
|
|
72
89
|
checksProvider?: ChecksProvider;
|
|
90
|
+
entitiesProvider?: EntitiesProvider;
|
|
73
91
|
}): Promise<AuditFinding[]>;
|
|
74
92
|
/** Label for findings that span more than one file (e.g. duplicate names). */
|
|
75
93
|
export declare const CROSS_FILE = "(cross-file)";
|
package/dist/audit/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/audit/core.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/audit/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,oBAAoB,CAAC;AAG3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,KAAK,GACL,QAAQ,GACR,KAAK,GACL,OAAO,GACP,KAAK,GACL,MAAM,GACN,UAAU,GACV,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;AAElF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;AAa9F;;;;GAIG;AACH,qEAAqE;AACrE,qBAAa,mBAAoB,SAAQ,KAAK;CAAG;AA0DjD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,UAAU,EAAE,EACpB,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CAAO,GAClF,OAAO,CAAC,YAAY,EAAE,CAAC,CAqBzB;AAED,8EAA8E;AAC9E,eAAO,MAAM,UAAU,iBAAiB,CAAC"}
|
package/dist/audit/discover.d.ts
CHANGED
|
@@ -22,14 +22,15 @@
|
|
|
22
22
|
* - Helm charts are a directory BUNDLE keyed by `Chart.yaml`; the helm checks
|
|
23
23
|
* read `output.files`, so the whole chart is one AuditInput.
|
|
24
24
|
* - k8s `detectTemplate` matches any `apiVersion`+`kind`, including GCP Config
|
|
25
|
-
* Connector (`cnrm.cloud.google.com`) resources
|
|
25
|
+
* Connector (`cnrm.cloud.google.com`) resources and fountain
|
|
26
|
+
* (`fountain.dev/v1`) manifests, so gcp and fountain must be tried first.
|
|
26
27
|
* - aws/azure checks `JSON.parse` their input, so YAML/templated content is
|
|
27
28
|
* normalized to a JSON string here.
|
|
28
29
|
*/
|
|
29
30
|
import type { LexiconPlugin } from "../lexicon.js";
|
|
30
31
|
import type { AuditInput, AuditLexicon } from "./core.js";
|
|
31
32
|
/** Lexicons the auditor knows how to detect and run checks for. */
|
|
32
|
-
export declare const AUDIT_LEXICONS: readonly ["github", "gitlab", "forgejo", "k8s", "docker", "aws", "azure", "gcp", "helm"];
|
|
33
|
+
export declare const AUDIT_LEXICONS: readonly ["github", "gitlab", "forgejo", "k8s", "docker", "aws", "azure", "gcp", "helm", "fountain"];
|
|
33
34
|
/**
|
|
34
35
|
* Load the plugins used for detection. Each is loaded in isolation (no
|
|
35
36
|
* cross-lexicon conflict aggregation — detection only reads `detectTemplate`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/audit/discover.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/audit/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEvD,mEAAmE;AACnE,eAAO,MAAM,cAAc,sGAAuG,CAAC;AAEnI;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,GAAE,SAAS,MAAM,EAAmB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAe1G;AA2JD,wGAAwG;AACxG,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;CAC7C;AAUD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAErD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAiBzF;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAehH;AA0BD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAiCtF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAEvF;AAED,4GAA4G;AAC5G,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAiB1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-doc.d.ts","sourceRoot":"","sources":["../../src/audit/rules-doc.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"rules-doc.d.ts","sourceRoot":"","sources":["../../src/audit/rules-doc.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmCH;;;;;;GAMG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAqB5D"}
|
package/dist/build.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Declarable } from "./declarable.js";
|
|
|
2
2
|
import type { Serializer, SerializerResult } from "./serializer.js";
|
|
3
3
|
import type { OwnershipMarker } from "./ownership.js";
|
|
4
4
|
import type { BuildError } from "./errors.js";
|
|
5
|
-
import type { IntrinsicDef,
|
|
5
|
+
import type { IntrinsicDef, BuildRootContributor } from "./lexicon.js";
|
|
6
6
|
import type { BuildParamProvenance } from "./provenance.js";
|
|
7
7
|
import { DiscoveryError } from "./errors.js";
|
|
8
8
|
import { LexiconOutput } from "./lexicon-output.js";
|
|
@@ -135,7 +135,7 @@ export interface BuildOptions {
|
|
|
135
135
|
* binaries); a contributed name colliding with a discovered entity is a
|
|
136
136
|
* build error, never a silent overwrite.
|
|
137
137
|
*/
|
|
138
|
-
buildRoots?:
|
|
138
|
+
buildRoots?: BuildRootContributor[];
|
|
139
139
|
}
|
|
140
140
|
export interface BuildResult {
|
|
141
141
|
/** Map of lexicon name to serialized output (string or multi-file result) */
|
|
@@ -225,7 +225,7 @@ export interface BuildRootMergeResult {
|
|
|
225
225
|
* vocabulary (`BuildErrorClass` in `build()`, the CLI's `formatError` on the
|
|
226
226
|
* graph paths).
|
|
227
227
|
*/
|
|
228
|
-
export declare function mergeBuildRootEntities(entities: Map<string, Declarable>, contributors: ReadonlyArray<
|
|
228
|
+
export declare function mergeBuildRootEntities(entities: Map<string, Declarable>, contributors: ReadonlyArray<BuildRootContributor>): Promise<BuildRootMergeResult>;
|
|
229
229
|
/**
|
|
230
230
|
* Builds a lexicon specification by discovering entities, sorting them
|
|
231
231
|
* topologically, and serializing them using the lexicon serializers.
|
package/dist/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBnD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,2CAA2C;IAC3C,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAoB/C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2JAA2J;IAC3J,WAAW,CAAC,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;CACjE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAwlB9E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAMrF;AAiDD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAIlD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAItD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GACxC,MAAM,IAAI,CAmCZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/lint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAW,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/lint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAW,MAAM,iBAAiB,CAAC;AAqBzE;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAW5D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAmBhC;AAgED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,uBAAuB;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,oBAAoB;IACpB,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,qCAAqC;IACrC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAoPD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA0K3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAIxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GACtC,MAAM,IAAI,CAiCZ"}
|
|
@@ -38,7 +38,7 @@ export declare function runLifecyclePlan(ctx: CommandContext): Promise<number>;
|
|
|
38
38
|
* with the requested env identity. Stateless — live markers only, no build, no
|
|
39
39
|
* snapshot. Without `--yes` nothing is deleted; with it the planned set is
|
|
40
40
|
* executed per lexicon with one bounded retry pass over failures, and every
|
|
41
|
-
* candidate's outcome is reported (deleted / failed / not-prunable / skipped —
|
|
41
|
+
* candidate's outcome is reported (deleted / failed / not-prunable / retained / skipped —
|
|
42
42
|
* never silence). A production-like environment name additionally requires an
|
|
43
43
|
* interactive confirmation, or `--confirm-prod` non-interactively.
|
|
44
44
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/lifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/lifecycle.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAqDlD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAyH/E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C3E;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B/E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAmL3E;AA+kBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAyN3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA2L/E;AAsBD;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB1E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAM9E;AAkBD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA+C/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-handlers.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/resource-handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resource-handlers.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/resource-handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AASlD,KAAK,mBAAmB,GAAG;IAAE,UAAU,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAE9F;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,EAiDvD,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAChD;IAAE,SAAS,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAMrC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAChD,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAS9C;AAMD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC,CAgLlB"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/** One bound concept as surfaced in an explain knowledge section — the trio the #1867 design calls for, not the full {@link OkfConcept}. */
|
|
2
|
+
export interface ExplainKnowledgeEntry {
|
|
3
|
+
type: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
path: string;
|
|
6
|
+
}
|
|
1
7
|
/**
|
|
2
8
|
* Explain tool definition for MCP
|
|
3
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/explain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/tools/explain.ts"],"names":[],"mappings":"AAMA,4IAA4I;AAC5I,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;CAkBvB,CAAC;AAEF;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuJrF"}
|
package/dist/cli/plugins.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export declare function resolveLexiconVersions(lexiconNames: readonly string[]):
|
|
|
33
33
|
* CLI uses for `intrinsics`. Plugins without the hook contribute nothing;
|
|
34
34
|
* an empty array is the common case and `build()` treats it as absent.
|
|
35
35
|
*/
|
|
36
|
-
export declare function collectBuildRootContributors(plugins: readonly LexiconPlugin[] | undefined, config: Record<string, unknown>, projectRoot: string): Array<
|
|
36
|
+
export declare function collectBuildRootContributors(plugins: readonly LexiconPlugin[] | undefined, config: Record<string, unknown>, projectRoot: string): Array<import("../lexicon.js").BuildRootContributor>;
|
|
37
37
|
/**
|
|
38
38
|
* Load plugins for all detected lexicon names.
|
|
39
39
|
* Calls `init()` on each plugin if present.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/cli/plugins.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAKjE;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6B5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+B9F;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,WAAW,EAAE,MAAM,GAClB,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/cli/plugins.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAKjE;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6B5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+B9F;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,WAAW,EAAE,MAAM,GAClB,KAAK,CAAC,OAAO,YAAY,EAAE,oBAAoB,CAAC,CAMlD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA6BlF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnF"}
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import type { LintDiagnostic, LintRule } from "../../lint/rule.js";
|
|
2
|
+
import type { OkfBundle } from "../../okf-read.js";
|
|
2
3
|
/**
|
|
3
4
|
* Format diagnostics in stylish format (similar to ESLint)
|
|
4
5
|
* Groups by file, shows severity, message, and rule ID
|
|
6
|
+
*
|
|
7
|
+
* @param diagnostics - Active (non-suppressed) diagnostics
|
|
8
|
+
* @param suppressed - Suppressed diagnostics with optional reason (optional). When
|
|
9
|
+
* present and non-empty, a "Suppressed" section is appended (#1866, design #1059)
|
|
10
|
+
* below the active diagnostics, mirroring SARIF's `suppressed` param on
|
|
11
|
+
* {@link formatSarif} rather than changing what "diagnostics" means here.
|
|
12
|
+
* @param bundle - The project's loaded OKF knowledge bundle (`../../okf-read`'s
|
|
13
|
+
* `loadOkfBundle`), used to resolve `okf:` citations in suppression reasons.
|
|
14
|
+
* Omitted (or a bundle with no matching concept) falls back to printing the
|
|
15
|
+
* raw reason with a warning — this never affects suppression itself, only
|
|
16
|
+
* how a cited reason renders.
|
|
5
17
|
*/
|
|
6
|
-
export declare function formatStylish(diagnostics: LintDiagnostic[]
|
|
18
|
+
export declare function formatStylish(diagnostics: LintDiagnostic[], suppressed?: Array<LintDiagnostic & {
|
|
19
|
+
reason?: string;
|
|
20
|
+
}>, bundle?: OkfBundle): string;
|
|
7
21
|
/**
|
|
8
22
|
* Format the summary line
|
|
9
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stylish.d.ts","sourceRoot":"","sources":["../../../src/cli/reporters/stylish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAY,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"stylish.d.ts","sourceRoot":"","sources":["../../../src/cli/reporters/stylish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAY,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAgChD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,cAAc,EAAE,EAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACxD,MAAM,CAAC,EAAE,SAAS,GACjB,MAAM,CAiER;AAmGD;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAiB9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,CAEhE;AAkDD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,cAAc,EAAE,EAC7B,KAAK,CAAC,EAAE,QAAQ,EAAE,EAClB,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACxD,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CA0CR"}
|
|
@@ -50,6 +50,10 @@ export interface AutoReleaseRunInfo {
|
|
|
50
50
|
digest?: string;
|
|
51
51
|
/** Orchestrator run identifier — a Temporal `runId`, or a locally generated id for the local executor (mirrors `runComponentsReleaseRecord`'s `--run-id` default). */
|
|
52
52
|
runId: string;
|
|
53
|
+
/** The bypassed capability-profile divergences, when the caller deliberately overrode a deploy-time profile assertion (chant #1244) — recorded verbatim as the release record's `profileOverride`. */
|
|
54
|
+
profileOverride?: string;
|
|
55
|
+
/** The deploy's input-side digest, when `digest` is a rendered-content identity (a pinned helm deploy, chant #1242) — recorded as the release record's `inputDigest` so ledger queries can still join on inputs across clusters whose bytes legitimately differ. */
|
|
56
|
+
inputDigest?: string;
|
|
53
57
|
}
|
|
54
58
|
/** Opt-out + field-override knobs for auto-release recording, threaded from CLI flags/config (#597: "opt-out-able (flag/config), documented default"). */
|
|
55
59
|
export interface AutoReleaseOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-release.d.ts","sourceRoot":"","sources":["../../src/components/auto-release.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAkD,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAkBjD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,GAAG,SAAS,CAShF;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GAChE,MAAM,GAAG,SAAS,CAQpB;AAED,8KAA8K;AAC9K,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,oBAAoB,GACpB,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GACzD;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,wHAAwH;AACxH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,yLAAyL;IACzL,OAAO,EAAE,OAAO,CAAC;IACjB,2LAA2L;IAC3L,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,+MAA+M;IAC/M,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sKAAsK;IACtK,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-release.d.ts","sourceRoot":"","sources":["../../src/components/auto-release.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAkD,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAkBjD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,GAAG,SAAS,CAShF;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GAChE,MAAM,GAAG,SAAS,CAQpB;AAED,8KAA8K;AAC9K,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,oBAAoB,GACpB,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GACzD;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,wHAAwH;AACxH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,yLAAyL;IACzL,OAAO,EAAE,OAAO,CAAC;IACjB,2LAA2L;IAC3L,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,+MAA+M;IAC/M,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sKAAsK;IACtK,KAAK,EAAE,MAAM,CAAC;IACd,sMAAsM;IACtM,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oQAAoQ;IACpQ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,0JAA0J;AAC1J,MAAM,WAAW,kBAAkB;IACjC,iIAAiI;IACjI,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sHAAsH;IACtH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qIAAqI;IACrI,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,kBAAkB,EACvB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAkD5B"}
|
|
@@ -40,7 +40,9 @@ export declare const STARTER_VERB_FAMILIES: {
|
|
|
40
40
|
readonly supplyChainSecurity: readonly ["sign", "attest-provenance", "verify"];
|
|
41
41
|
readonly supplyChainPolicy: readonly ["scan-vulnerabilities", "vuln-gate"];
|
|
42
42
|
readonly waitVerify: readonly ["wait-cluster-healthy", "wait-endpoint", "health-gate"];
|
|
43
|
+
readonly secrets: readonly ["ensure-secret"];
|
|
43
44
|
readonly escapeHatch: readonly ["shell"];
|
|
45
|
+
readonly cloudflare: readonly ["wrangler-deploy", "wrangler-versions-promote", "r2-sync"];
|
|
44
46
|
};
|
|
45
47
|
/**
|
|
46
48
|
* The built-in capability plugin carrying the entire Phase 1 starter verb
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"starter-plugin.d.ts","sourceRoot":"","sources":["../../src/components/starter-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"starter-plugin.d.ts","sourceRoot":"","sources":["../../src/components/starter-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAsBH,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE/E;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;CAsBxB,CAAC;AA+BX;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAUrC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* secrets family — `ensure-secret` (#1829, epic #1365 decision 3). The
|
|
3
|
+
* capability surface over the one generated-once materialization engine
|
|
4
|
+
* (../../secret-materialization.ts); the op step builder `ensureSecret(...)`
|
|
5
|
+
* (../../op/builders.ts) is the other surface over the same engine.
|
|
6
|
+
*
|
|
7
|
+
* Contract (read-then-write): present means done. The verb never mints over
|
|
8
|
+
* an existing value and never rotates implicitly; an existing secret that
|
|
9
|
+
* does not match the declared key-set/metadata stops the apply with a
|
|
10
|
+
* `SecretContractMismatchError` naming key names and metadata keys — never
|
|
11
|
+
* values. There is no safe undo for minting a secret others may already have
|
|
12
|
+
* consumed, and un-creating it would destroy the only copy of the material —
|
|
13
|
+
* so `rollbackPolicy: "needs-opt-out"`: COMP003 requires a component using
|
|
14
|
+
* this verb to acknowledge the compensation gap explicitly.
|
|
15
|
+
*
|
|
16
|
+
* The store adapter is per-provider (#1830 is the k8s row). Core registers a
|
|
17
|
+
* typed stub; a provider builds the real capability with
|
|
18
|
+
* {@link createEnsureSecretCapability}.
|
|
19
|
+
*/
|
|
20
|
+
import type { Capability } from "../capability.js";
|
|
21
|
+
import { type EnsureSecretOutcome, type SecretMaterialGenerator, type SecretStoreAdapter } from "../../secret-materialization.js";
|
|
22
|
+
export interface EnsureSecretInput {
|
|
23
|
+
/** The secret's name as the store knows it. */
|
|
24
|
+
name: string;
|
|
25
|
+
/** The declared key-set. Creation mints one value per key; verification compares names only. */
|
|
26
|
+
keys: string[];
|
|
27
|
+
/** Declared metadata an existing secret must carry. Mismatches are reported by KEY. */
|
|
28
|
+
metadata?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
/** Names only — no field of the output can carry material. */
|
|
31
|
+
export type EnsureSecretOutput = EnsureSecretOutcome;
|
|
32
|
+
/**
|
|
33
|
+
* Build the real `ensure-secret` capability over a provider's
|
|
34
|
+
* {@link SecretStoreAdapter}. The generator seam defaults to 32 CSPRNG bytes
|
|
35
|
+
* per key; the material it mints flows straight through the adapter to the
|
|
36
|
+
* store and is never returned, logged, or retained (see
|
|
37
|
+
* ../../secret-materialization.ts).
|
|
38
|
+
*/
|
|
39
|
+
export declare function createEnsureSecretCapability(deps: {
|
|
40
|
+
store: SecretStoreAdapter;
|
|
41
|
+
generator?: SecretMaterialGenerator;
|
|
42
|
+
}): Capability<EnsureSecretInput, EnsureSecretOutput>;
|
|
43
|
+
/**
|
|
44
|
+
* The starter-set registration: fully typed, correct `rollbackPolicy` for
|
|
45
|
+
* COMP003, but no store adapter — running it throws
|
|
46
|
+
* `CapabilityNotImplementedError` until a provider row (#1830, k8s) wires a
|
|
47
|
+
* real adapter via {@link createEnsureSecretCapability}.
|
|
48
|
+
*/
|
|
49
|
+
export declare const ensureSecretCapability: Capability<EnsureSecretInput, EnsureSecretOutput>;
|
|
50
|
+
//# sourceMappingURL=ensure-secret.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-secret.d.ts","sourceRoot":"","sources":["../../../src/components/verbs/ensure-secret.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,gGAAgG;IAChG,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,8DAA8D;AAC9D,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC,GAAG,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAYpD;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,CAMpF,CAAC"}
|
|
@@ -26,6 +26,11 @@
|
|
|
26
26
|
* `ProvenanceLink` material. `verify` (#622, ./verify.ts) is the matching
|
|
27
27
|
* deploy-time gate — `cosign verify`/`verify-attestation` against a
|
|
28
28
|
* configured identity policy, mirroring ../../lint/policy.ts's `policyGate`.
|
|
29
|
+
* `wrangler-deploy`/`wrangler-versions-promote` (#1293, epic #1296,
|
|
30
|
+
* ./wrangler.ts) and `r2-sync` (#1293, ./r2-sync.ts) are the Cloudflare
|
|
31
|
+
* Workers apply leaves — real implementations over the same injectable
|
|
32
|
+
* `ProcessRunner` `sign` uses, shelling to `wrangler`/`rclone` rather than an
|
|
33
|
+
* AWS-shaped SDK client.
|
|
29
34
|
*/
|
|
30
35
|
export * from "./build-archive.js";
|
|
31
36
|
export * from "./build.js";
|
|
@@ -38,12 +43,15 @@ export * from "./component-bom.js";
|
|
|
38
43
|
export * from "./reproducibility.js";
|
|
39
44
|
export * from "./sign.js";
|
|
40
45
|
export * from "./verify.js";
|
|
46
|
+
export * from "./wrangler.js";
|
|
47
|
+
export * from "./r2-sync.js";
|
|
41
48
|
export * from "./vuln-scan.js";
|
|
42
49
|
export * from "./vex.js";
|
|
43
50
|
export * from "./license-policy.js";
|
|
44
51
|
export * from "./vuln-gate.js";
|
|
45
52
|
export * from "./wait-verify.js";
|
|
46
53
|
export * from "./shell.js";
|
|
54
|
+
export * from "./ensure-secret.js";
|
|
47
55
|
export * from "./cloud-executor.js";
|
|
48
56
|
export * from "./process-runner.js";
|
|
49
57
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/verbs/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/verbs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `r2-sync` — bulk object upload to a Cloudflare R2 bucket (chant #1293,
|
|
3
|
+
* epic #1296), the direct analogue of `s3-sync`
|
|
4
|
+
* (lexicons/aws/src/components/apply.ts): same input shape (`from`/`to`/
|
|
5
|
+
* `delete`), same mutating-no-native-rollback disposition
|
|
6
|
+
* (`rollbackPolicy: "needs-opt-out"`, ../../lint/rules/comp/comp003-mutating-no-rollback.ts),
|
|
7
|
+
* learnable as the same idea per #1293's own verification bullet. See
|
|
8
|
+
* ./wrangler.ts's module doc for why this lives in core rather than a
|
|
9
|
+
* cloudflare lexicon.
|
|
10
|
+
*
|
|
11
|
+
* R2 has no first-party bulk-sync CLI the way S3 has `aws s3 sync`, but its
|
|
12
|
+
* API is S3-compatible, so it takes any S3-compatible sync tool — this wraps
|
|
13
|
+
* `rclone` (its `sync`/`copy` distinguish "mirror, deleting extras" from
|
|
14
|
+
* "upload only" exactly the way `s3-sync`'s `delete` flag does) through the
|
|
15
|
+
* same injectable `ProcessRunner` (./process-runner.ts) `./sign.ts` and
|
|
16
|
+
* `./wrangler.ts` use. No live `rclone`, no network, ever, in a test run —
|
|
17
|
+
* every test substitutes `MockProcessRunner`.
|
|
18
|
+
*/
|
|
19
|
+
import type { Capability } from "../capability.js";
|
|
20
|
+
import { type ProcessRunner } from "./process-runner.js";
|
|
21
|
+
/** Thrown when `R2SyncInput.to` is not an `r2://bucket[/prefix]` URI. */
|
|
22
|
+
export declare class R2SyncInvalidDestinationError extends Error {
|
|
23
|
+
readonly to: string;
|
|
24
|
+
constructor(to: string);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Translate an `r2://bucket/prefix` destination to rclone's `<remote>:<path>`
|
|
28
|
+
* form. `remote` is the name of an rclone remote already configured against
|
|
29
|
+
* R2's S3-compatible endpoint (`<account-id>.r2.cloudflarestorage.com`) —
|
|
30
|
+
* out of this capability's scope the same way `s3-sync` doesn't configure
|
|
31
|
+
* AWS credentials; default `"r2"` is the conventional alias. Exported for
|
|
32
|
+
* tests, mirroring ./sign.ts's `buildSignArgs`.
|
|
33
|
+
*/
|
|
34
|
+
export declare function toRcloneDest(to: string, remote?: string): string;
|
|
35
|
+
export interface R2SyncInput {
|
|
36
|
+
/** Local path, or archive-relative path, to sync from. */
|
|
37
|
+
from: string;
|
|
38
|
+
/** Destination bucket URI, `"r2://bucket/prefix"` — mirrors `s3-sync`'s `S3SyncInput.to` shape. */
|
|
39
|
+
to: string;
|
|
40
|
+
/** Delete destination keys not present in the source. Default: false. */
|
|
41
|
+
delete?: boolean;
|
|
42
|
+
/** rclone remote name pointed at R2. Default: `"r2"`. */
|
|
43
|
+
remote?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface R2SyncOutput {
|
|
46
|
+
/** Number of objects uploaded (new or changed). */
|
|
47
|
+
uploaded: number;
|
|
48
|
+
/** Number of objects deleted (only possible when `delete: true`). */
|
|
49
|
+
deleted: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Build the `rclone` invocation for `input`. `rclone sync` deletes
|
|
53
|
+
* destination-only files by default (matching `s3-sync`'s opt-in `delete:
|
|
54
|
+
* true`); `rclone copy` never deletes (matching the `s3-sync` default) — so
|
|
55
|
+
* the verb dispatches on `input.delete` rather than passing a `--delete`
|
|
56
|
+
* flag rclone doesn't have. `-v` gives the per-file action lines
|
|
57
|
+
* `parseRcloneStats` reads. Exported for tests, mirroring ./sign.ts's
|
|
58
|
+
* `buildSignArgs`.
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildR2SyncArgs(input: R2SyncInput): string;
|
|
61
|
+
/** Count uploaded/deleted objects out of `rclone -v`'s stdout. Exported for tests. */
|
|
62
|
+
export declare function parseRcloneStats(stdout: string): R2SyncOutput;
|
|
63
|
+
/**
|
|
64
|
+
* Bulk-sync a directory of objects to an R2 bucket via `rclone`
|
|
65
|
+
* (endpoint-aware only through the rclone remote's own config — this
|
|
66
|
+
* capability never touches R2 credentials directly). Mutating, no native
|
|
67
|
+
* undo (an overwritten or deleted object is gone), so — like `s3-sync` —
|
|
68
|
+
* `rollbackPolicy: "needs-opt-out"`: COMP003 requires the component to
|
|
69
|
+
* acknowledge the compensation gap explicitly (a `noRollback` reason, a
|
|
70
|
+
* component-level `rollback` phase, or a sibling `rollback-previous`/
|
|
71
|
+
* `snapshot-before` step).
|
|
72
|
+
*/
|
|
73
|
+
export declare function createR2SyncCapability(processRunner?: ProcessRunner): Capability<R2SyncInput, R2SyncOutput>;
|
|
74
|
+
/** Default `r2-sync` capability, backed by the real `ProcessRunner`. */
|
|
75
|
+
export declare const r2SyncCapability: Capability<R2SyncInput, R2SyncOutput>;
|
|
76
|
+
//# sourceMappingURL=r2-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2-sync.d.ts","sourceRoot":"","sources":["../../../src/components/verbs/r2-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAO5F,yEAAyE;AACzE,qBAAa,6BAA8B,SAAQ,KAAK;aAC1B,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM;CAMvC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,SAAO,GAAG,MAAM,CAK9D;AAED,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAI1D;AAQD,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAI7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,GAAE,aAAsC,GACpD,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAUvC;AAED,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,WAAW,EAAE,YAAY,CAA4B,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `wrangler-deploy` / `wrangler-versions-promote` — the Cloudflare Workers
|
|
3
|
+
* apply leaves (chant #1293, epic #1296). The epic cedes the Workers plane
|
|
4
|
+
* entirely to `wrangler` (first-party, schema-backed, already owns the
|
|
5
|
+
* config format, bindings model, local dev, and deploy) — these two verbs
|
|
6
|
+
* are a typed wrapper over that CLI, not a reimplementation of it.
|
|
7
|
+
*
|
|
8
|
+
* Placement: core, not a cloudflare lexicon. #1293's own analysis weighed
|
|
9
|
+
* three options — core (generic verb, fastest, costs a little conceptual
|
|
10
|
+
* tidiness since `wrangler-deploy` shells a specific vendor CLI), a
|
|
11
|
+
* capability-only cloudflare lexicon (the "correct" home, but `LexiconPlugin`
|
|
12
|
+
* tier-1 completeness — serializer, lint rules, post-synth, LSP, examples,
|
|
13
|
+
* docs — is heavy ceremony for three verbs and no resource types), or
|
|
14
|
+
* generalizing to a `cli-deploy` verb parameterised by tool (tempting, but
|
|
15
|
+
* premature and it re-opens the verb set the bounded-primitives thesis
|
|
16
|
+
* depends on staying closed). Core wins on the same precedent `sign`/
|
|
17
|
+
* `attest-provenance` (./sign.ts) already set: a specific vendor CLI
|
|
18
|
+
* (`cosign`) shelled out through the injectable `ProcessRunner`
|
|
19
|
+
* (./process-runner.ts), no cloud-specific SDK client needed the way AWS's
|
|
20
|
+
* `CloudExecutor` (./cloud-executor.ts) models CloudFormation/ECS/Lambda.
|
|
21
|
+
* `wrangler` fits that exact shape. Revisit if/when the zone-plane lexicon
|
|
22
|
+
* (#1294) lands and gives these three verbs a natural cloudflare-owned home.
|
|
23
|
+
*
|
|
24
|
+
* `wrangler-versions-promote` is also the direct evidence for #1296's
|
|
25
|
+
* "three new verbs cover a whole new cloud" claim: Cloudflare's native
|
|
26
|
+
* Worker version rollback maps onto the existing `RollbackPolicy: "native"`
|
|
27
|
+
* (../capability.ts) with no compensation code to hand-write — both verbs
|
|
28
|
+
* here declare a `rollback` (auto-derived "native" per ../capability.ts's
|
|
29
|
+
* `Capability.rollbackPolicy` doc) that re-promotes to whichever version was
|
|
30
|
+
* live before the step ran, the same best-effort captured-previous-state
|
|
31
|
+
* pattern lexicons/aws/src/components/apply.ts's `lambda-deploy` uses for
|
|
32
|
+
* its alias rollback.
|
|
33
|
+
*
|
|
34
|
+
* No real Cloudflare control-plane emulator exists yet (#1295, epic #1296),
|
|
35
|
+
* so — like ./sign.ts — every real path here shells out through the
|
|
36
|
+
* injectable `ProcessRunner` and every test substitutes `MockProcessRunner`
|
|
37
|
+
* (./__tests__/mock-process-runner.ts): no live `wrangler`, no network, ever,
|
|
38
|
+
* in a test run. CI coverage is plan-shape/invocation-shape assertions only,
|
|
39
|
+
* per #1293's own "Verification" section.
|
|
40
|
+
*/
|
|
41
|
+
import type { Capability } from "../capability.js";
|
|
42
|
+
import { type ProcessRunner } from "./process-runner.js";
|
|
43
|
+
/** Thrown when `wrangler deploy`'s stdout carries no parseable Version ID — fail-closed rather than returning a capability output downstream steps (`wrangler-versions-promote`, wired via `"@Deploy.versionId"`) would silently receive as `undefined`. */
|
|
44
|
+
export declare class WranglerVersionIdNotFoundError extends Error {
|
|
45
|
+
readonly stdout: string;
|
|
46
|
+
constructor(stdout: string);
|
|
47
|
+
}
|
|
48
|
+
/** Extract the deployed Worker version id from `wrangler deploy`'s stdout. Exported so tests can assert on it directly, mirroring ./sign.ts's `buildSignArgs`. */
|
|
49
|
+
export declare function parseWranglerVersionId(stdout: string): string;
|
|
50
|
+
export interface WranglerDeployInput {
|
|
51
|
+
/** Path to the Worker's `wrangler.jsonc`/`wrangler.toml`. */
|
|
52
|
+
config: string;
|
|
53
|
+
/** Named environment within the config (`wrangler deploy --env <env>`). */
|
|
54
|
+
env?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface WranglerDeployOutput {
|
|
57
|
+
/** The version id wrangler assigned this deploy — wire into `wrangler-versions-promote` (e.g. `"@Deploy.versionId"`). */
|
|
58
|
+
versionId: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Deploy a Worker from a `wrangler.jsonc`/`wrangler.toml` via `wrangler
|
|
62
|
+
* deploy`, and return the version id it published — the analogue of
|
|
63
|
+
* `lambda-deploy` (../../lexicons/aws/src/components/apply.ts) for the
|
|
64
|
+
* Workers plane.
|
|
65
|
+
*
|
|
66
|
+
* Rollback: `wrangler-versions-promote` back to whichever version was live
|
|
67
|
+
* before this step ran (captured up front via `wrangler versions list`, the
|
|
68
|
+
* same best-effort captured-previous pattern `lambda-deploy` uses for its
|
|
69
|
+
* alias). A no-op on a first deploy — nothing was live to restore.
|
|
70
|
+
*/
|
|
71
|
+
export declare function createWranglerDeployCapability(processRunner?: ProcessRunner): Capability<WranglerDeployInput, WranglerDeployOutput>;
|
|
72
|
+
/** Default `wrangler-deploy` capability, backed by the real `ProcessRunner`. */
|
|
73
|
+
export declare const wranglerDeployCapability: Capability<WranglerDeployInput, WranglerDeployOutput>;
|
|
74
|
+
export interface WranglerVersionsPromoteInput {
|
|
75
|
+
/** Path to the Worker's `wrangler.jsonc`/`wrangler.toml`. */
|
|
76
|
+
config: string;
|
|
77
|
+
/** Version id to promote — typically wired from a prior `wrangler-deploy` step (`"@Deploy.versionId"`) or a prior version id when this step composes as an explicit rollback. */
|
|
78
|
+
versionId: string;
|
|
79
|
+
/** Traffic percentage to route to `versionId`. Default: 100 (full promote/rollback). Below 100 is the gradual-deployment lever. */
|
|
80
|
+
percentage?: number;
|
|
81
|
+
/** Named environment within the config (`wrangler versions deploy --env <env>`). */
|
|
82
|
+
env?: string;
|
|
83
|
+
}
|
|
84
|
+
export interface WranglerVersionsPromoteOutput {
|
|
85
|
+
/** The version id that was promoted. */
|
|
86
|
+
versionId: string;
|
|
87
|
+
/** The traffic percentage actually routed to it. */
|
|
88
|
+
percentage: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Promote a Worker version to (some percentage of) live traffic via
|
|
92
|
+
* `wrangler versions deploy <version-id>@<percentage> --yes` — both the
|
|
93
|
+
* gradual-deployment lever (`percentage` < 100) and, at `percentage: 100`,
|
|
94
|
+
* the rollback mechanism: Cloudflare's native version rollback is a promote
|
|
95
|
+
* to a prior version id, not a redeploy, so this same verb composes as the
|
|
96
|
+
* explicit compensation step a component wires up (#1293's "verification"
|
|
97
|
+
* example: forced failure after `wrangler-deploy` -> `wrangler-versions-promote`
|
|
98
|
+
* back to the prior version, no hand-written compensation needed).
|
|
99
|
+
*
|
|
100
|
+
* Also declares its own `rollback` (native, no `rollbackPolicy` override
|
|
101
|
+
* needed — see ../capability.ts): re-promotes to whichever version was live
|
|
102
|
+
* before *this* promote call, for the case where the promote step itself is
|
|
103
|
+
* composed directly (not just as `wrangler-deploy`'s compensation).
|
|
104
|
+
*/
|
|
105
|
+
export declare function createWranglerVersionsPromoteCapability(processRunner?: ProcessRunner): Capability<WranglerVersionsPromoteInput, WranglerVersionsPromoteOutput>;
|
|
106
|
+
/** Default `wrangler-versions-promote` capability, backed by the real `ProcessRunner`. */
|
|
107
|
+
export declare const wranglerVersionsPromoteCapability: Capability<WranglerVersionsPromoteInput, WranglerVersionsPromoteOutput>;
|
|
108
|
+
//# sourceMappingURL=wrangler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrangler.d.ts","sourceRoot":"","sources":["../../../src/components/verbs/wrangler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA2B5F,4PAA4P;AAC5P,qBAAa,8BAA+B,SAAQ,KAAK;aAC3B,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAI3C;AASD,kKAAkK;AAClK,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI7D;AA8BD,MAAM,WAAW,mBAAmB;IAClC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,yHAAyH;IACzH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,aAAa,GAAE,aAAsC,GACpD,UAAU,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAuBvD;AAED,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,EAAE,UAAU,CAAC,mBAAmB,EAAE,oBAAoB,CACzD,CAAC;AAInC,MAAM,WAAW,4BAA4B;IAC3C,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,iLAAiL;IACjL,SAAS,EAAE,MAAM,CAAC;IAClB,mIAAmI;IACnI,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,6BAA6B;IAC5C,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uCAAuC,CACrD,aAAa,GAAE,aAAsC,GACpD,UAAU,CAAC,4BAA4B,EAAE,6BAA6B,CAAC,CAwBzE;AAED,0FAA0F;AAC1F,eAAO,MAAM,iCAAiC,EAAE,UAAU,CACxD,4BAA4B,EAC5B,6BAA6B,CACc,CAAC"}
|