@intentius/chant 0.124.24 → 0.124.26
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/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +4 -2
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +4 -2
- package/dist/cli/handlers/approve.d.ts.map +1 -1
- package/dist/cli/handlers/approve.js +39 -4
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +21 -7
- package/dist/cli/mcp/workspace-tools.d.ts +3 -3
- package/dist/cli/mcp/workspace-tools.d.ts.map +1 -1
- package/dist/cli/mcp/workspace-tools.js +27 -4
- package/dist/effect-receipt.d.ts +13 -0
- package/dist/effect-receipt.d.ts.map +1 -1
- package/dist/effect-receipt.js +19 -0
- package/dist/gate-decision.d.ts +1 -1
- package/dist/gate-decision.d.ts.map +1 -1
- package/dist/gate-decision.js +1 -1
- package/dist/lexicon-module.d.ts +7 -1
- package/dist/lexicon-module.d.ts.map +1 -1
- package/dist/lexicon-module.js +7 -2
- package/dist/lifecycle/gate-audit.d.ts +7 -1
- package/dist/lifecycle/gate-audit.d.ts.map +1 -1
- package/dist/lifecycle/gate-audit.js +40 -3
- package/dist/lifecycle/gate-checkpoint.d.ts +78 -0
- package/dist/lifecycle/gate-checkpoint.d.ts.map +1 -0
- package/dist/lifecycle/gate-checkpoint.js +103 -0
- package/dist/lifecycle/gate-ledger.d.ts +41 -0
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +18 -0
- package/dist/lifecycle/receipt-plan.d.ts.map +1 -1
- package/dist/lifecycle/receipt-plan.js +4 -2
- package/dist/lifecycle/run-ledger.d.ts +2 -0
- package/dist/lifecycle/run-ledger.d.ts.map +1 -1
- package/dist/lifecycle/run-ledger.js +2 -0
- package/dist/lint/rules/op/index.d.ts +6 -2
- package/dist/lint/rules/op/index.d.ts.map +1 -1
- package/dist/lint/rules/op/index.js +7 -3
- package/dist/lint/rules/op/ops016-gate-resume.d.ts +14 -0
- package/dist/lint/rules/op/ops016-gate-resume.d.ts.map +1 -0
- package/dist/lint/rules/op/ops016-gate-resume.js +31 -0
- package/dist/lint/rules/op/ops017-gate-alias.d.ts +30 -0
- package/dist/lint/rules/op/ops017-gate-alias.d.ts.map +1 -0
- package/dist/lint/rules/op/ops017-gate-alias.js +67 -0
- package/dist/op/activity-contract.d.ts +14 -0
- package/dist/op/activity-contract.d.ts.map +1 -1
- package/dist/op/activity-contract.js +16 -0
- package/dist/op/builders.d.ts +7 -0
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/builders.js +13 -0
- package/dist/op/gate-alias.d.ts +57 -0
- package/dist/op/gate-alias.d.ts.map +1 -0
- package/dist/op/gate-alias.js +127 -0
- package/dist/op/gate-checkpoint.d.ts +123 -0
- package/dist/op/gate-checkpoint.d.ts.map +1 -0
- package/dist/op/gate-checkpoint.js +280 -0
- package/dist/op/gate.d.ts +54 -2
- package/dist/op/gate.d.ts.map +1 -1
- package/dist/op/gate.js +142 -1
- package/dist/op/index.d.ts +4 -1
- package/dist/op/index.d.ts.map +1 -1
- package/dist/op/index.js +2 -1
- package/dist/op/local-executor.d.ts +57 -2
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-executor.js +200 -11
- package/dist/op/local-output.d.ts.map +1 -1
- package/dist/op/local-output.js +20 -2
- package/dist/op/op-ir.d.ts +4 -0
- package/dist/op/op-ir.d.ts.map +1 -1
- package/dist/op/op-ir.js +4 -0
- package/dist/op/receipt-store.d.ts +5 -0
- package/dist/op/receipt-store.d.ts.map +1 -1
- package/dist/op/receipt-store.js +4 -3
- package/dist/op/runtime.d.ts +15 -0
- package/dist/op/runtime.d.ts.map +1 -1
- package/dist/op/runtimes/local.d.ts.map +1 -1
- package/dist/op/runtimes/local.js +5 -0
- package/dist/op/step-output-ref.d.ts +26 -18
- package/dist/op/step-output-ref.d.ts.map +1 -1
- package/dist/op/step-output-ref.js +86 -63
- package/dist/op/types.d.ts +31 -0
- package/dist/op/types.d.ts.map +1 -1
- package/dist/wave-runtime.mjs +223 -221
- package/dist/workspace/agent-cli.d.ts.map +1 -1
- package/dist/workspace/agent-cli.js +3 -0
- package/dist/workspace/conformance/__writer_fixture__/answers/answer.schema.json +16 -1
- package/dist/workspace/conformance/writer.js +1 -1
- package/dist/workspace/decide.d.ts +51 -9
- package/dist/workspace/decide.d.ts.map +1 -1
- package/dist/workspace/decide.js +125 -14
- package/dist/workspace/lineage-upgrade.d.ts.map +1 -1
- package/dist/workspace/lineage-upgrade.js +20 -11
- package/dist/workspace/point-answer.schema.json +16 -1
- package/dist/workspace/points-cli.d.ts +5 -3
- package/dist/workspace/points-cli.d.ts.map +1 -1
- package/dist/workspace/points-cli.js +16 -7
- package/dist/workspace/points-write.schema.json +39 -4
- package/dist/workspace/points.schema.json +42 -3
- package/dist/workspace/reason-codes.d.ts +2 -1
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/reason-codes.js +2 -1
- package/dist/workspace/records-cli.d.ts +12 -2
- package/dist/workspace/records-cli.d.ts.map +1 -1
- package/dist/workspace/records-cli.js +27 -7
- package/dist/workspace/records-write.d.ts.map +1 -1
- package/dist/workspace/records-write.js +2 -3
- package/dist/workspace/records.d.ts +10 -4
- package/dist/workspace/records.d.ts.map +1 -1
- package/dist/workspace/records.js +16 -3
- package/dist/workspace/records.schema.json +2 -1
- package/dist/workspace/trust/gate-seal.d.ts +32 -1
- package/dist/workspace/trust/gate-seal.d.ts.map +1 -1
- package/dist/workspace/trust/gate-seal.js +41 -2
- package/dist/workspace/trust/seal.d.ts +1 -1
- package/dist/workspace/trust/seal.d.ts.map +1 -1
- package/dist/workspace/trust/seal.js +1 -1
- package/dist/workspace/trust/verify-cli.d.ts.map +1 -1
- package/dist/workspace/trust/verify-cli.js +2 -1
- package/dist/workspace/trust/verify.d.ts +22 -0
- package/dist/workspace/trust/verify.d.ts.map +1 -1
- package/dist/workspace/trust/verify.js +94 -14
- package/dist/workspace/write-scope.d.ts +3 -1
- package/dist/workspace/write-scope.d.ts.map +1 -1
- package/dist/workspace/write-scope.js +11 -4
- package/package.json +1 -1
- package/src/cli/commands/build.ts +9 -2
- package/src/cli/commands/lint.ts +4 -2
- package/src/cli/compiled-cli.e2e.test.ts +45 -1
- package/src/cli/handlers/approve.ts +46 -4
- package/src/cli/handlers/operator.test.ts +91 -0
- package/src/cli/main.test.ts +10 -0
- package/src/cli/main.ts +21 -7
- package/src/cli/mcp/workspace-tools.e2e.test.ts +1 -1
- package/src/cli/mcp/workspace-tools.ts +27 -4
- package/src/effect-receipt.ts +22 -0
- package/src/gate-decision.ts +2 -0
- package/src/lexicon-module.ts +9 -2
- package/src/lifecycle/gate-audit.ts +41 -4
- package/src/lifecycle/gate-checkpoint.test.ts +128 -0
- package/src/lifecycle/gate-checkpoint.ts +133 -0
- package/src/lifecycle/gate-ledger.ts +61 -0
- package/src/lifecycle/receipt-plan.test.ts +9 -0
- package/src/lifecycle/receipt-plan.ts +4 -1
- package/src/lifecycle/run-ledger.ts +4 -0
- package/src/lint/rules/op/index.ts +9 -3
- package/src/lint/rules/op/ops016-gate-resume.test.ts +53 -0
- package/src/lint/rules/op/ops016-gate-resume.ts +48 -0
- package/src/lint/rules/op/ops017-gate-alias.test.ts +85 -0
- package/src/lint/rules/op/ops017-gate-alias.ts +89 -0
- package/src/op/activity-contract.ts +22 -1
- package/src/op/builders.ts +21 -1
- package/src/op/effect-step.test.ts +95 -1
- package/src/op/gate-alias.e2e.test.ts +78 -0
- package/src/op/gate-alias.test.ts +350 -0
- package/src/op/gate-alias.ts +137 -0
- package/src/op/gate-checkpoint.test.ts +284 -0
- package/src/op/gate-checkpoint.ts +322 -0
- package/src/op/gate.ts +198 -4
- package/src/op/index.ts +4 -1
- package/src/op/local-executor.test.ts +65 -0
- package/src/op/local-executor.ts +248 -12
- package/src/op/local-output.ts +18 -2
- package/src/op/op-ir.test.ts +25 -0
- package/src/op/op-ir.ts +8 -0
- package/src/op/receipt-store.ts +13 -3
- package/src/op/runtime.ts +8 -0
- package/src/op/runtimes/local.ts +5 -0
- package/src/op/step-output-ref.test.ts +68 -24
- package/src/op/step-output-ref.ts +85 -65
- package/src/op/types.ts +32 -0
- package/src/workspace/agent-cli.ts +2 -0
- package/src/workspace/conformance/__writer_fixture__/answers/answer.schema.json +16 -1
- package/src/workspace/conformance/writer.ts +1 -1
- package/src/workspace/decide.test.ts +87 -3
- package/src/workspace/decide.ts +142 -17
- package/src/workspace/lineage-upgrade.test.ts +21 -0
- package/src/workspace/lineage-upgrade.ts +19 -11
- package/src/workspace/point-answer.schema.json +16 -1
- package/src/workspace/points-cli.ts +16 -8
- package/src/workspace/points-write.schema.json +39 -4
- package/src/workspace/points.schema.json +42 -3
- package/src/workspace/reason-codes.ts +2 -1
- package/src/workspace/record-assets.test.ts +14 -0
- package/src/workspace/records-cli.ts +28 -7
- package/src/workspace/records-write-commands.e2e.test.ts +32 -0
- package/src/workspace/records-write.ts +2 -3
- package/src/workspace/records.schema.json +2 -1
- package/src/workspace/records.ts +17 -4
- package/src/workspace/trust/gate-seal.test.ts +29 -2
- package/src/workspace/trust/gate-seal.ts +46 -2
- package/src/workspace/trust/seal.ts +1 -1
- package/src/workspace/trust/trust.test.ts +105 -0
- package/src/workspace/trust/verify-cli.ts +2 -1
- package/src/workspace/trust/verify.ts +106 -13
- package/src/workspace/write-scope.test.ts +18 -0
- package/src/workspace/write-scope.ts +16 -5
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { gateStepsOf, validateGateAliases } from "../../../op/gate-alias.js";
|
|
2
|
+
import { findWorkspaceRoot } from "../../../project-root.js";
|
|
3
|
+
import { isOpEntity } from "./support.js";
|
|
4
|
+
/** The Op configs among a build's entities, each with its entity key and lexicon. */
|
|
5
|
+
function opsOf(entities) {
|
|
6
|
+
const ops = [];
|
|
7
|
+
for (const [entityKey, entity] of entities) {
|
|
8
|
+
if (!isOpEntity(entity))
|
|
9
|
+
continue;
|
|
10
|
+
const rec = entity;
|
|
11
|
+
const props = (entity.props ?? {});
|
|
12
|
+
if (typeof props.name !== "string" || !Array.isArray(props.phases))
|
|
13
|
+
continue;
|
|
14
|
+
ops.push({ entityKey, ...(typeof rec.lexicon === "string" ? { lexicon: rec.lexicon } : {}), config: props });
|
|
15
|
+
}
|
|
16
|
+
return ops;
|
|
17
|
+
}
|
|
18
|
+
const hasAliases = (ops) => ops.some(({ config }) => gateStepsOf(config).some(({ step }) => step.aliases !== undefined));
|
|
19
|
+
/**
|
|
20
|
+
* The gates the workspace around `projectDir` names under `identity.gates`,
|
|
21
|
+
* each with its class (null for any signer), for OPS017. Undefined when no
|
|
22
|
+
* Op among `entities` has aliases, outside a workspace, or when the
|
|
23
|
+
* declaration can't be read, which `chant workspace check` reports. The
|
|
24
|
+
* workspace modules load only past the first two checks, so a level-0
|
|
25
|
+
* build loads none.
|
|
26
|
+
*/
|
|
27
|
+
export async function workspaceIdentityGates(projectDir, entities) {
|
|
28
|
+
if (!hasAliases(opsOf(entities)))
|
|
29
|
+
return undefined;
|
|
30
|
+
const found = findWorkspaceRoot(projectDir);
|
|
31
|
+
if (!found)
|
|
32
|
+
return undefined;
|
|
33
|
+
try {
|
|
34
|
+
const { readDeclaration } = await import("../../../workspace/declaration.js");
|
|
35
|
+
const { workingTree } = await import("../../../workspace/tree.js");
|
|
36
|
+
const gates = readDeclaration(workingTree(found.dir)).identity?.gates ?? {};
|
|
37
|
+
return new Map(Object.values(gates).map((g) => [g.gate, g.class]));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** OPS017, judging `identity.gates` by `identityGates` when given. */
|
|
44
|
+
export function ops017Check(identityGates) {
|
|
45
|
+
return {
|
|
46
|
+
id: "OPS017",
|
|
47
|
+
description: "A gate's aliases need a plan and no decision point, must not name a gate that still exists or another gate's alias, and keep any identity.gates rule an alias had",
|
|
48
|
+
check(ctx) {
|
|
49
|
+
const ops = opsOf(ctx.entities);
|
|
50
|
+
if (!hasAliases(ops))
|
|
51
|
+
return [];
|
|
52
|
+
const byName = new Map(ops.map((o) => [o.config.name, o]));
|
|
53
|
+
return validateGateAliases(ops.map((o) => o.config), identityGates).map((issue) => {
|
|
54
|
+
const op = byName.get(issue.opName);
|
|
55
|
+
return {
|
|
56
|
+
checkId: "OPS017",
|
|
57
|
+
severity: "error",
|
|
58
|
+
message: `Op "${issue.opName}", phase "${issue.phase}", gate:${issue.gate}: ${issue.message}`,
|
|
59
|
+
...(op ? { entity: op.entityKey } : {}),
|
|
60
|
+
...(op?.lexicon ? { lexicon: op.lexicon } : {}),
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/** OPS017 without the workspace's identity rules. */
|
|
67
|
+
export const ops017 = ops017Check();
|
|
@@ -83,10 +83,24 @@ export interface ActivityContract<Args = unknown, Return = unknown> {
|
|
|
83
83
|
* stack members internally) simply declares none.
|
|
84
84
|
*/
|
|
85
85
|
entities?: string[];
|
|
86
|
+
/**
|
|
87
|
+
* What the activity returns that is secret (#3947): `true` for the whole
|
|
88
|
+
* return value, or the names of its top-level fields that are. A gate that
|
|
89
|
+
* resumes never stores a secret output in its checkpoint, so a gate whose
|
|
90
|
+
* later steps reference one doesn't resume, and OPS016 says so at build.
|
|
91
|
+
*/
|
|
92
|
+
secret?: true | string[];
|
|
86
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Whether a reference into `contract`'s return value at `path` reads a value
|
|
96
|
+
* the contract marks secret (#3947). A whole-value reference reads every
|
|
97
|
+
* field, so it is secret when any field is.
|
|
98
|
+
*/
|
|
99
|
+
export declare function readsSecretOutput(contract: Pick<ActivityContract, "secret"> | undefined, path?: string): boolean;
|
|
87
100
|
/** Declare an activity contract. */
|
|
88
101
|
export declare function activityContract<ArgsSchema extends z.ZodTypeAny, ReturnSchema extends z.ZodTypeAny = never>(name: string, args: ArgsSchema, returns?: ReturnSchema, opts?: {
|
|
89
102
|
entities?: string[];
|
|
103
|
+
secret?: true | string[];
|
|
90
104
|
}): ActivityContract<z.infer<ArgsSchema>, ReturnSchema extends z.ZodTypeAny ? z.infer<ReturnSchema> : unknown>;
|
|
91
105
|
/** Structural guard for a value produced by {@link activityContract}. */
|
|
92
106
|
export declare function isActivityContract(value: unknown): value is ActivityContract;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-contract.d.ts","sourceRoot":"","sources":["../../src/op/activity-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAiD,MAAM,SAAS,CAAC;AAGvF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,0GAAyB,CAAC;AAE9D,QAAA,MAAM,cAAc,eAA0C,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB,CAAC,IAAI,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IAChE,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"activity-contract.d.ts","sourceRoot":"","sources":["../../src/op/activity-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,21 @@ import { ACTIVITY_PROFILE_NAMES, stepTimeoutProblem } from "./activity-profiles.
|
|
|
47
47
|
*/
|
|
48
48
|
export const KNOWN_ACTIVITY_PROFILES = ACTIVITY_PROFILE_NAMES;
|
|
49
49
|
const CONTRACT_BRAND = Symbol.for("chant.op.activityContract");
|
|
50
|
+
/**
|
|
51
|
+
* Whether a reference into `contract`'s return value at `path` reads a value
|
|
52
|
+
* the contract marks secret (#3947). A whole-value reference reads every
|
|
53
|
+
* field, so it is secret when any field is.
|
|
54
|
+
*/
|
|
55
|
+
export function readsSecretOutput(contract, path) {
|
|
56
|
+
const secret = contract?.secret;
|
|
57
|
+
if (secret === undefined)
|
|
58
|
+
return false;
|
|
59
|
+
if (secret === true)
|
|
60
|
+
return true;
|
|
61
|
+
if (!path)
|
|
62
|
+
return secret.length > 0;
|
|
63
|
+
return secret.includes(path.split(".")[0]);
|
|
64
|
+
}
|
|
50
65
|
/** Declare an activity contract. */
|
|
51
66
|
export function activityContract(name, args, returns, opts) {
|
|
52
67
|
return {
|
|
@@ -55,6 +70,7 @@ export function activityContract(name, args, returns, opts) {
|
|
|
55
70
|
args,
|
|
56
71
|
...(returns ? { returns } : {}),
|
|
57
72
|
...(opts?.entities && opts.entities.length > 0 ? { entities: opts.entities } : {}),
|
|
73
|
+
...(opts?.secret === true || (Array.isArray(opts?.secret) && opts.secret.length > 0) ? { secret: opts.secret } : {}),
|
|
58
74
|
};
|
|
59
75
|
}
|
|
60
76
|
/** Structural guard for a value produced by {@link activityContract}. */
|
package/dist/op/builders.d.ts
CHANGED
|
@@ -83,6 +83,11 @@ export declare function activity(fn: string, args?: Record<string, unknown>, opt
|
|
|
83
83
|
* The point's deciders and quorum decide, `chant workspace points answer`
|
|
84
84
|
* answers an open question, and the run passes on the answer. See
|
|
85
85
|
* {@link GateStep.point}.
|
|
86
|
+
*
|
|
87
|
+
* Pass `aliases` to keep the approvals recorded under the gate's old names
|
|
88
|
+
* after an Op is restructured (#3949): `gate("approve-tier-1", { plan:
|
|
89
|
+
* plan.out.planDigest, aliases: [{ op: "upgrade-tier-1", gate: "approve" }] })`.
|
|
90
|
+
* A gate with aliases must bind a plan. See {@link GateStep.aliases}.
|
|
86
91
|
*/
|
|
87
92
|
export declare function gate(name: string, opts?: {
|
|
88
93
|
timeout?: string;
|
|
@@ -90,6 +95,8 @@ export declare function gate(name: string, opts?: {
|
|
|
90
95
|
plan?: GateStep["plan"];
|
|
91
96
|
approval?: GateStep["approval"];
|
|
92
97
|
point?: GateStep["point"];
|
|
98
|
+
resume?: boolean;
|
|
99
|
+
aliases?: GateStep["aliases"];
|
|
93
100
|
}): GateStep;
|
|
94
101
|
/**
|
|
95
102
|
* Wrap nested steps in read-compare-run-write over an effect receipt (#1834,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/op/builders.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/op/builders.ts"],"names":[],"mappings":"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"}
|
package/dist/op/builders.js
CHANGED
|
@@ -5,6 +5,7 @@ import { isEffectReceipt } from "../effect-receipt.js";
|
|
|
5
5
|
import { receiptCheckInput } from "./receipt-store.js";
|
|
6
6
|
import { gateApprovalProblems } from "./gate-approval.js";
|
|
7
7
|
import { gatePointProblems } from "./gate-point.js";
|
|
8
|
+
import { gateAliasProblems } from "./gate-alias.js";
|
|
8
9
|
import { makeOutProxy, stepOutput } from "./step-output-ref.js";
|
|
9
10
|
import { isValidCronExpression, cronSyntaxMessage } from "./cron.js";
|
|
10
11
|
// ── Core builders ─────────────────────────────────────────────────────────────
|
|
@@ -96,6 +97,11 @@ export function activity(fn, args, opts) {
|
|
|
96
97
|
* The point's deciders and quorum decide, `chant workspace points answer`
|
|
97
98
|
* answers an open question, and the run passes on the answer. See
|
|
98
99
|
* {@link GateStep.point}.
|
|
100
|
+
*
|
|
101
|
+
* Pass `aliases` to keep the approvals recorded under the gate's old names
|
|
102
|
+
* after an Op is restructured (#3949): `gate("approve-tier-1", { plan:
|
|
103
|
+
* plan.out.planDigest, aliases: [{ op: "upgrade-tier-1", gate: "approve" }] })`.
|
|
104
|
+
* A gate with aliases must bind a plan. See {@link GateStep.aliases}.
|
|
99
105
|
*/
|
|
100
106
|
export function gate(name, opts) {
|
|
101
107
|
if (opts?.approval !== undefined) {
|
|
@@ -108,6 +114,11 @@ export function gate(name, opts) {
|
|
|
108
114
|
if (problems.length > 0)
|
|
109
115
|
throw new Error(`gate(${JSON.stringify(name)}): ${problems[0]}`);
|
|
110
116
|
}
|
|
117
|
+
if (opts?.aliases !== undefined) {
|
|
118
|
+
const problems = gateAliasProblems(opts.aliases, { plan: opts.plan, point: opts.point });
|
|
119
|
+
if (problems.length > 0)
|
|
120
|
+
throw new Error(`gate(${JSON.stringify(name)}): ${problems[0]}`);
|
|
121
|
+
}
|
|
111
122
|
return {
|
|
112
123
|
kind: "gate",
|
|
113
124
|
gate: name,
|
|
@@ -116,6 +127,8 @@ export function gate(name, opts) {
|
|
|
116
127
|
...(opts?.plan !== undefined ? { plan: opts.plan } : {}),
|
|
117
128
|
...(opts?.approval !== undefined ? { approval: opts.approval } : {}),
|
|
118
129
|
...(opts?.point !== undefined ? { point: opts.point } : {}),
|
|
130
|
+
...(opts?.resume ? { resume: true } : {}),
|
|
131
|
+
...(opts?.aliases !== undefined && opts.aliases.length > 0 ? { aliases: opts.aliases.map((a) => ({ ...(a.op !== undefined ? { op: a.op } : {}), gate: a.gate })) } : {}),
|
|
119
132
|
};
|
|
120
133
|
}
|
|
121
134
|
/**
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gate aliases (#3949, epic #3946): the names a gate had before its Op was
|
|
3
|
+
* restructured, so the approvals already on the ledger under them still
|
|
4
|
+
* count.
|
|
5
|
+
*
|
|
6
|
+
* A gate's identity is its name and its Op's: the ledger is per Op
|
|
7
|
+
* (`_gates/<op>.jsonl`) and every decision filters by gate. Merging three
|
|
8
|
+
* per-tier Ops into one wave-driven Op renames every gate and orphans the
|
|
9
|
+
* approvals recorded under the old names. A gate declares those names as
|
|
10
|
+
* `aliases: [{ op?, gate }]`, `op` defaulting to its own Op.
|
|
11
|
+
*
|
|
12
|
+
* `evaluateGate` (`./gate.ts`) decides which approvals an alias admits, and
|
|
13
|
+
* writes each one it counts again under the new name with `carriedFrom`
|
|
14
|
+
* naming the line it came from. This module holds the parts that read only
|
|
15
|
+
* the Op's config: where its gates are, what an alias resolves to, what the
|
|
16
|
+
* builder and OPS017 refuse, and which gate aliases an old name, which
|
|
17
|
+
* `chant approve` asks before it records an approval under that name.
|
|
18
|
+
*/
|
|
19
|
+
import type { GateAlias, GateStep, OpConfig } from "./types.js";
|
|
20
|
+
/** An alias with its Op filled in. */
|
|
21
|
+
export interface ResolvedGateAlias {
|
|
22
|
+
op: string;
|
|
23
|
+
gate: string;
|
|
24
|
+
}
|
|
25
|
+
/** Every gate step of `config`, main phases first, then `onFailure`, inside effects too, with the phase it sits in. */
|
|
26
|
+
export declare function gateStepsOf(config: Pick<OpConfig, "phases" | "onFailure">): Array<{
|
|
27
|
+
phase: string;
|
|
28
|
+
step: GateStep;
|
|
29
|
+
}>;
|
|
30
|
+
/** A gate's aliases with each `op` filled in from `op`, the gate's own Op. */
|
|
31
|
+
export declare function resolveGateAliases(step: Pick<GateStep, "aliases">, op: string): ResolvedGateAlias[];
|
|
32
|
+
/** Why a gate's `aliases` can't stand on the step itself, one line each. The builder throws the first. */
|
|
33
|
+
export declare function gateAliasProblems(aliases: readonly GateAlias[], step: Pick<GateStep, "plan" | "point">): string[];
|
|
34
|
+
/** The gate of `ops` whose aliases include `op`/`gate`, or undefined when none does. */
|
|
35
|
+
export declare function aliasingGate(ops: Iterable<Pick<OpConfig, "name" | "phases" | "onFailure"> | undefined>, op: string, gate: string): {
|
|
36
|
+
op: string;
|
|
37
|
+
gate: string;
|
|
38
|
+
} | undefined;
|
|
39
|
+
/** One OPS017 finding: the Op, phase and gate it is about, and what is wrong. */
|
|
40
|
+
export interface GateAliasIssue {
|
|
41
|
+
opName: string;
|
|
42
|
+
phase: string;
|
|
43
|
+
gate: string;
|
|
44
|
+
message: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* OPS017's check (#3949) over every Op in a build. An alias must stand on a
|
|
48
|
+
* gate bound to a plan that asks no decision point, must not name a gate
|
|
49
|
+
* that still exists, must not name the gate itself, and must not be claimed
|
|
50
|
+
* by two gates, since an approval would then be carried twice. When the
|
|
51
|
+
* workspace's `identity.gates` names an alias, the new gate must be named
|
|
52
|
+
* too, with the alias's class when it has one: `identityGates` maps each
|
|
53
|
+
* gate the declaration names to its class (null for any signer). Absent,
|
|
54
|
+
* outside a workspace, that part is skipped.
|
|
55
|
+
*/
|
|
56
|
+
export declare function validateGateAliases(ops: ReadonlyArray<Pick<OpConfig, "name" | "phases" | "onFailure">>, identityGates?: ReadonlyMap<string, string | null>): GateAliasIssue[];
|
|
57
|
+
//# sourceMappingURL=gate-alias.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-alias.d.ts","sourceRoot":"","sources":["../../src/op/gate-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAkB,MAAM,SAAS,CAAC;AAG7E,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uHAAuH;AACvH,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAQpH;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAEnG;AAED,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,EAAE,CAkBjH;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAC1B,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC,EAC1E,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACX;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAQ1C;AAED,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,EACnE,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GACjD,cAAc,EAAE,CAmClB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gate aliases (#3949, epic #3946): the names a gate had before its Op was
|
|
3
|
+
* restructured, so the approvals already on the ledger under them still
|
|
4
|
+
* count.
|
|
5
|
+
*
|
|
6
|
+
* A gate's identity is its name and its Op's: the ledger is per Op
|
|
7
|
+
* (`_gates/<op>.jsonl`) and every decision filters by gate. Merging three
|
|
8
|
+
* per-tier Ops into one wave-driven Op renames every gate and orphans the
|
|
9
|
+
* approvals recorded under the old names. A gate declares those names as
|
|
10
|
+
* `aliases: [{ op?, gate }]`, `op` defaulting to its own Op.
|
|
11
|
+
*
|
|
12
|
+
* `evaluateGate` (`./gate.ts`) decides which approvals an alias admits, and
|
|
13
|
+
* writes each one it counts again under the new name with `carriedFrom`
|
|
14
|
+
* naming the line it came from. This module holds the parts that read only
|
|
15
|
+
* the Op's config: where its gates are, what an alias resolves to, what the
|
|
16
|
+
* builder and OPS017 refuse, and which gate aliases an old name, which
|
|
17
|
+
* `chant approve` asks before it records an approval under that name.
|
|
18
|
+
*/
|
|
19
|
+
import { gateName } from "./gate-name.js";
|
|
20
|
+
/** Every gate step of `config`, main phases first, then `onFailure`, inside effects too, with the phase it sits in. */
|
|
21
|
+
export function gateStepsOf(config) {
|
|
22
|
+
const out = [];
|
|
23
|
+
const visit = (phase, step) => {
|
|
24
|
+
if (step.kind === "gate")
|
|
25
|
+
out.push({ phase, step });
|
|
26
|
+
else if (step.kind === "effect")
|
|
27
|
+
for (const nested of step.steps)
|
|
28
|
+
visit(phase, nested);
|
|
29
|
+
};
|
|
30
|
+
for (const phase of [...config.phases, ...(config.onFailure ?? [])])
|
|
31
|
+
for (const step of phase.steps)
|
|
32
|
+
visit(phase.name, step);
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
/** A gate's aliases with each `op` filled in from `op`, the gate's own Op. */
|
|
36
|
+
export function resolveGateAliases(step, op) {
|
|
37
|
+
return (step.aliases ?? []).map((a) => ({ op: a.op ?? op, gate: a.gate }));
|
|
38
|
+
}
|
|
39
|
+
/** Why a gate's `aliases` can't stand on the step itself, one line each. The builder throws the first. */
|
|
40
|
+
export function gateAliasProblems(aliases, step) {
|
|
41
|
+
const problems = [];
|
|
42
|
+
if (step.plan === undefined) {
|
|
43
|
+
problems.push("aliases need a plan: an alias admits only approvals of the plan this run planned, and a gate with no plan has none");
|
|
44
|
+
}
|
|
45
|
+
if (step.point !== undefined)
|
|
46
|
+
problems.push("a gate that asks a decision point can't take aliases");
|
|
47
|
+
const seen = new Set();
|
|
48
|
+
for (const a of aliases) {
|
|
49
|
+
if (typeof a?.gate !== "string" || a.gate === "") {
|
|
50
|
+
problems.push("each alias names a gate");
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (a.op !== undefined && (typeof a.op !== "string" || a.op === ""))
|
|
54
|
+
problems.push(`alias ${JSON.stringify(a.gate)} names an empty op`);
|
|
55
|
+
const key = `${a.op ?? ""}/${a.gate}`;
|
|
56
|
+
if (seen.has(key))
|
|
57
|
+
problems.push(`alias ${a.op ? `${a.op}/` : ""}${a.gate} is listed twice`);
|
|
58
|
+
seen.add(key);
|
|
59
|
+
}
|
|
60
|
+
return problems;
|
|
61
|
+
}
|
|
62
|
+
/** The gate of `ops` whose aliases include `op`/`gate`, or undefined when none does. */
|
|
63
|
+
export function aliasingGate(ops, op, gate) {
|
|
64
|
+
for (const config of ops) {
|
|
65
|
+
if (!config || !Array.isArray(config.phases))
|
|
66
|
+
continue;
|
|
67
|
+
for (const { step } of gateStepsOf(config)) {
|
|
68
|
+
if (resolveGateAliases(step, config.name).some((a) => a.op === op && a.gate === gate))
|
|
69
|
+
return { op: config.name, gate: gateName(step) };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* OPS017's check (#3949) over every Op in a build. An alias must stand on a
|
|
76
|
+
* gate bound to a plan that asks no decision point, must not name a gate
|
|
77
|
+
* that still exists, must not name the gate itself, and must not be claimed
|
|
78
|
+
* by two gates, since an approval would then be carried twice. When the
|
|
79
|
+
* workspace's `identity.gates` names an alias, the new gate must be named
|
|
80
|
+
* too, with the alias's class when it has one: `identityGates` maps each
|
|
81
|
+
* gate the declaration names to its class (null for any signer). Absent,
|
|
82
|
+
* outside a workspace, that part is skipped.
|
|
83
|
+
*/
|
|
84
|
+
export function validateGateAliases(ops, identityGates) {
|
|
85
|
+
const issues = [];
|
|
86
|
+
const existing = new Set();
|
|
87
|
+
for (const config of ops)
|
|
88
|
+
for (const { step } of gateStepsOf(config))
|
|
89
|
+
existing.add(`${config.name}/${gateName(step)}`);
|
|
90
|
+
const claimed = new Map();
|
|
91
|
+
for (const config of ops) {
|
|
92
|
+
for (const { phase, step } of gateStepsOf(config)) {
|
|
93
|
+
if (step.aliases === undefined)
|
|
94
|
+
continue;
|
|
95
|
+
const name = gateName(step);
|
|
96
|
+
const issue = (message) => issues.push({ opName: config.name, phase, gate: name, message });
|
|
97
|
+
for (const problem of gateAliasProblems(step.aliases, step))
|
|
98
|
+
issue(problem);
|
|
99
|
+
for (const alias of resolveGateAliases(step, config.name)) {
|
|
100
|
+
if (alias.gate === "")
|
|
101
|
+
continue;
|
|
102
|
+
const key = `${alias.op}/${alias.gate}`;
|
|
103
|
+
if (alias.op === config.name && alias.gate === name) {
|
|
104
|
+
issue(`alias ${key} is the gate's own name`);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (existing.has(key))
|
|
108
|
+
issue(`alias ${key} is still a gate; remove that gate, or this alias, so one approval doesn't answer two gates`);
|
|
109
|
+
const owner = claimed.get(key);
|
|
110
|
+
if (owner !== undefined && owner !== `${config.name}/${name}`)
|
|
111
|
+
issue(`alias ${key} is also an alias of ${owner}, so its approvals would be carried twice`);
|
|
112
|
+
else
|
|
113
|
+
claimed.set(key, `${config.name}/${name}`);
|
|
114
|
+
if (identityGates?.has(alias.gate)) {
|
|
115
|
+
const want = identityGates.get(alias.gate) ?? null;
|
|
116
|
+
if (!identityGates.has(name)) {
|
|
117
|
+
issue(`identity.gates names its alias ${alias.gate}, so gate ${name} needs an identity.gates entry too, or approvals that needed a seal would count without one`);
|
|
118
|
+
}
|
|
119
|
+
else if (want !== null && identityGates.get(name) !== want) {
|
|
120
|
+
issue(`identity.gates.${alias.gate} needs class ${want}, and identity.gates.${name} needs ${identityGates.get(name) ?? "any signer"}; the gate must keep its alias's class`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return issues;
|
|
127
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resuming a run at an approved gate (#3947, epic #3946).
|
|
3
|
+
*
|
|
4
|
+
* Before this, a run that stopped at a gate kept nothing but its record:
|
|
5
|
+
* after `chant approve`, the next `chant run <op>` began again at the first
|
|
6
|
+
* phase and recomputed every step before the gate, so a value could not be
|
|
7
|
+
* carried across a gate with `stepOutput`. A gate with `resume: true` keeps
|
|
8
|
+
* the outputs the steps after it need, and the next run starts at the gate.
|
|
9
|
+
*
|
|
10
|
+
* Stopping. The run works out which outputs cross the gate from the Op's own
|
|
11
|
+
* references ({@link resumeGatesOf}): an output of a step before the gate
|
|
12
|
+
* that a step at or after it references, in the main phases, `onFailure` or
|
|
13
|
+
* the gate's own `approval` context. It writes them to a checkpoint
|
|
14
|
+
* (`../lifecycle/gate-checkpoint.ts`) and puts the checkpoint's digest on
|
|
15
|
+
* the pending fact. An output an activity contract marks secret is never
|
|
16
|
+
* stored, and the gate then doesn't resume ({@link checkpointBlocked}).
|
|
17
|
+
*
|
|
18
|
+
* Resuming. {@link decideGateResume} picks the last resume gate whose
|
|
19
|
+
* standing pending fact carries a checkpoint and has an approval that copied
|
|
20
|
+
* it. It resumes there only when the fact hasn't expired, the checkpoint file
|
|
21
|
+
* matches the digest the approver saw and names the fact's run, and this run
|
|
22
|
+
* is at the same commit and environment. Any failed check starts the run at
|
|
23
|
+
* the first phase and the reason is reported. The executor then re-runs the
|
|
24
|
+
* step that produced the gate's `plan`, and starts at the first phase if the
|
|
25
|
+
* digest moved, so live drift between the approval and the apply is still
|
|
26
|
+
* caught (`./local-executor.ts`).
|
|
27
|
+
*/
|
|
28
|
+
import type { ActivityStep, GateStep, OpConfig } from "./types.js";
|
|
29
|
+
import { type StepOutputRef } from "./step-output-ref.js";
|
|
30
|
+
import { type ActivityContract, type ActivityContractIssue } from "./activity-contract.js";
|
|
31
|
+
import type { GateLedgerPort } from "./gate.js";
|
|
32
|
+
import { type PendingGateRecord } from "../lifecycle/gate-ledger.js";
|
|
33
|
+
import { type GateCheckpoint } from "../lifecycle/gate-checkpoint.js";
|
|
34
|
+
/** A top-level activity step of a main phase, where it sits. */
|
|
35
|
+
interface Producer {
|
|
36
|
+
step: ActivityStep;
|
|
37
|
+
phaseIndex: number;
|
|
38
|
+
stepIndex: number;
|
|
39
|
+
}
|
|
40
|
+
/** A gate that resumes, and what resuming at it needs. */
|
|
41
|
+
export interface ResumeGate {
|
|
42
|
+
step: GateStep;
|
|
43
|
+
name: string;
|
|
44
|
+
phaseIndex: number;
|
|
45
|
+
/** The gate's index among its phase's steps. */
|
|
46
|
+
stepIndex: number;
|
|
47
|
+
/** The step the gate's `plan` names, which a resumed run runs again. Absent when the plan is a literal or there is none. */
|
|
48
|
+
planStep?: Producer;
|
|
49
|
+
/** Ids of the steps before the gate whose outputs the checkpoint stores, in authored order. The plan step is not among them. */
|
|
50
|
+
stored: string[];
|
|
51
|
+
/** The references that read a stored output, for the secret check. */
|
|
52
|
+
crossing: StepOutputRef[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The gates of `config` that resume, at the top of a main phase, in authored
|
|
56
|
+
* order, each with the outputs a checkpoint at it stores. A gate that asks a
|
|
57
|
+
* decision point, or one in an Op with a `workLease`, is left out: OPS016
|
|
58
|
+
* refuses both, and a run treats them as gates that don't resume.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resumeGatesOf(config: Pick<OpConfig, "phases" | "onFailure" | "workLease">): ResumeGate[];
|
|
61
|
+
/**
|
|
62
|
+
* Why a checkpoint at `gate` can't hold what the steps after it read, or
|
|
63
|
+
* undefined when it can (#3947): a reference to an output the producer's
|
|
64
|
+
* contract marks secret. Secret outputs are never stored.
|
|
65
|
+
*/
|
|
66
|
+
export declare function checkpointBlocked(config: Pick<OpConfig, "phases">, gate: ResumeGate, contracts: ReadonlyMap<string, Pick<ActivityContract, "secret">> | undefined): string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* OPS016's check (#3947): what is wrong with the gates of `config` that set
|
|
69
|
+
* `resume`. A gate that resumes must sit at the top of a main phase, must not
|
|
70
|
+
* ask a decision point, must not be in an Op with a `workLease`, must name a
|
|
71
|
+
* plan step that runs before it when its plan is a reference, and must not
|
|
72
|
+
* need a secret output after it.
|
|
73
|
+
*/
|
|
74
|
+
export declare function validateGateResume(config: Pick<OpConfig, "name" | "phases" | "onFailure" | "workLease">, contracts?: ReadonlyMap<string, ActivityContract>): ActivityContractIssue[];
|
|
75
|
+
/**
|
|
76
|
+
* Build the checkpoint a run stores when it stops at `gate`, or say why it
|
|
77
|
+
* stores none: a secret output, an unknown commit, a run id that can't name
|
|
78
|
+
* a file, or an output JSON can't hold.
|
|
79
|
+
*/
|
|
80
|
+
export declare function buildGateCheckpoint(config: Pick<OpConfig, "name" | "phases">, gate: ResumeGate, input: {
|
|
81
|
+
runId: string;
|
|
82
|
+
commit: string | undefined;
|
|
83
|
+
environment?: string;
|
|
84
|
+
planDigest?: string;
|
|
85
|
+
outputs: ReadonlyMap<string, unknown>;
|
|
86
|
+
contracts?: ReadonlyMap<string, Pick<ActivityContract, "secret">>;
|
|
87
|
+
}): {
|
|
88
|
+
checkpoint: GateCheckpoint;
|
|
89
|
+
} | {
|
|
90
|
+
blocked: string;
|
|
91
|
+
};
|
|
92
|
+
/** What {@link decideGateResume} found. */
|
|
93
|
+
export type GateResumeDecision = {
|
|
94
|
+
kind: "none";
|
|
95
|
+
} | {
|
|
96
|
+
kind: "refused";
|
|
97
|
+
gate: string;
|
|
98
|
+
reason: string;
|
|
99
|
+
} | {
|
|
100
|
+
kind: "resume";
|
|
101
|
+
gate: ResumeGate;
|
|
102
|
+
checkpoint: GateCheckpoint;
|
|
103
|
+
digest: string;
|
|
104
|
+
pending: PendingGateRecord;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Decide whether this run resumes, and at which gate. The last resume gate
|
|
108
|
+
* whose standing pending fact carries a checkpoint, and which an approval
|
|
109
|
+
* recorded since then copied, is the candidate. Approved gates are tried
|
|
110
|
+
* from the last one back, so a run that resumed at one gate and stopped at a
|
|
111
|
+
* later one resumes at the later one next time.
|
|
112
|
+
*
|
|
113
|
+
* Reads the gate ledger and the checkpoint file and writes nothing. A gate
|
|
114
|
+
* with no checkpoint, or none an approval copied, is not a candidate: the run
|
|
115
|
+
* starts at the first phase as before, and says nothing.
|
|
116
|
+
*/
|
|
117
|
+
export declare function decideGateResume(port: GateLedgerPort, config: Pick<OpConfig, "name" | "phases" | "onFailure" | "workLease">, input: {
|
|
118
|
+
now: string;
|
|
119
|
+
commit: string | undefined;
|
|
120
|
+
environment?: string;
|
|
121
|
+
}): Promise<GateResumeDecision>;
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=gate-checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-checkpoint.d.ts","sourceRoot":"","sources":["../../src/op/gate-checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAkB,MAAM,SAAS,CAAC;AAEhF,OAAO,EAA0C,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE/F,OAAO,EAAqB,KAAK,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAA2C,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG3G,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,gEAAgE;AAChE,UAAU,QAAQ;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,4HAA4H;IAC5H,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gIAAgI;IAChI,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sEAAsE;IACtE,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAiCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,UAAU,EAAE,CAuCxG;AAUD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAChC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,GAAG,SAAS,GAC3E,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC,EACrE,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAChD,qBAAqB,EAAE,CAwBzB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,EACzC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;CACnE,GACA;IAAE,UAAU,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBtD;AAED,2CAA2C;AAC3C,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEjH;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC,EACrE,KAAK,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACvE,OAAO,CAAC,kBAAkB,CAAC,CAoD7B"}
|