git-steps
Import
Section titled “Import”import * as api from "@fungi.computer/agar/git-steps";Exports
Section titled “Exports”| Kind | Export | Description |
|---|---|---|
| class | GitStepMaterialError | Permanent continuation failure: background owners settle their lane instead of retrying it. |
| type alias | GitStepMaterial | Facet-owned immutable material, split into individually bounded rows. |
| type alias | GitStepSql | Existing facet SQLite owner; no transaction or scheduler is introduced here. |
| type alias | GitStep | Durable checkpoint, suitable for a Watchdog payload and fresh-frame re-admission. |
| type alias | GitStepOperation | Caller-owned operation; begin fixes the timestamp and stores file bytes outside the checkpoint. |
| type alias | GitStepOutcome | Final Git outcome; oversize material refuses before any receive-pack. |
| type alias | GitStepResult | One step either checkpoints, settles, or yields before transport. |
| type alias | GitStepPorts | Per-frame transport plus the existing facet’s durable material owner. |
| constant | gitStepSchema | Strict, JSON-only continuation grammar; material and authority are not stored in it. |
| function | sqliteGitStepMaterial() | One-MiB material rows; exact replays are idempotent, conflicting material refuses. |
| function | memoryGitStepMaterial() | Volatile foreground driver material; background callers use the facet owner. |
| function | begin() | Prepare immutable request material before atomically enqueueing the first checkpoint. |
| function | runStep() | Execute one fresh-admitted frame; the caller persists next and its successor job atomically. |
| function | dropMaterial() | Drop material only after the owner has durably recorded the terminal outcome. |
GitStepMaterialErrorclass
Section titled “GitStepMaterialError”Permanent continuation failure: background owners settle their lane instead of retrying it.
Extends
Section titled “Extends”Error
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new GitStepMaterialError(code): GitStepMaterialError;Construct the canonical permanent continuation error.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
code |
| "unavailable" | "conflict" | "digest_mismatch" | "atomic_unavailable" | "push_refused" |
Permanent continuation failure reason. |
Returns
Section titled “Returns”Overrides
Section titled “Overrides”Error.constructor;Properties
Section titled “Properties”readonly code: | "unavailable" | "conflict" | "digest_mismatch" | "atomic_unavailable" | "push_refused";Invalid material, unavailable atomic support, or an exhausted unchanged-head push refusal.
GitStepMaterialtype alias
Section titled “GitStepMaterial”type GitStepMaterial = Readonly<{ put: Promise<void>; read: Promise<Uint8Array<ArrayBufferLike>>; drop: Promise<void>;}>;Facet-owned immutable material, split into individually bounded rows.
GitStepSqltype alias
Section titled “GitStepSql”type GitStepSql = Readonly<{ exec: { toArray: readonly Readonly< Record<string, string | number | ArrayBuffer | null> >[]; };}>;Existing facet SQLite owner; no transaction or scheduler is introduced here.
GitSteptype alias
Section titled “GitStep”type GitStep = z.output<typeof gitStepSchema>;Durable checkpoint, suitable for a Watchdog payload and fresh-frame re-admission.
GitStepOperationtype alias
Section titled “GitStepOperation”type GitStepOperation = | Readonly<{ kind: "commit"; requestKey: string; request: CommitFilesRequest; tags?: readonly Readonly<{ ref: string; expected: string | null; }>[]; timestamp?: number; }> | Readonly<{ kind: "merge"; requestKey: string; request: MergeBranchRequest; timestamp?: number; }>;Caller-owned operation; begin fixes the timestamp and stores file bytes outside the checkpoint.
GitStepOutcometype alias
Section titled “GitStepOutcome”type GitStepOutcome = | GitWriteOutcome | GitMergeOutcome | Readonly<{ kind: "too_large"; }>;Final Git outcome; oversize material refuses before any receive-pack.
GitStepResulttype alias
Section titled “GitStepResult”type GitStepResult = | Readonly<{ next: GitStep; }> | Readonly<{ done: GitStepOutcome; }> | Readonly<{ yield: true; }>;One step either checkpoints, settles, or yields before transport.
GitStepPortstype alias
Section titled “GitStepPorts”type GitStepPorts = Readonly<{ git: GitCommitStore; material: GitStepMaterial;}>;Per-frame transport plus the existing facet’s durable material owner.
gitStepSchemaconstant
Section titled “gitStepSchema”const gitStepSchema: ZodDiscriminatedUnion<[ZodObject<{ key: ZodString; timestamp: ZodNumber; operation: ZodDiscriminatedUnion<[ZodObject<{ kind: ZodLiteral<"commit">; request: ZodObject<{ repository: ZodString; branch: ZodString; expectedHead: ZodNullable<...>; startFrom: ZodOptional<...>; message: ZodString; author: ZodObject<..., ...>; }, $strict>; changesDigest: ZodCustomStringFormat<"sha256_hex">; tags: ZodArray<ZodObject<{ ref: ...; expected: ...; }, $strict>>; }, $strict>, ZodObject<{ kind: ZodLiteral<"merge">; request: ZodObject<{ target: ZodString; source: ZodString; branch: ZodString; sourceBranch: ZodString; expectedSource: ZodString; expectedTarget: ZodOptional<...>; behind: ZodOptional<...>; message: ZodString; author: ZodObject<..., ...>; }, $strict>; }, $strict>], "kind">; phase: ZodLiteral<"fetch-base">; base: ZodNullable<ZodString>;}, $strict>, ZodObject<{ key: ZodString; timestamp: ZodNumber; operation: ZodDiscriminatedUnion<[ZodObject<{ kind: ZodLiteral<"commit">; request: ZodObject<{ repository: ZodString; branch: ZodString; expectedHead: ZodNullable<...>; startFrom: ZodOptional<...>; message: ZodString; author: ZodObject<..., ...>; }, $strict>; changesDigest: ZodCustomStringFormat<"sha256_hex">; tags: ZodArray<ZodObject<{ ref: ...; expected: ...; }, $strict>>; }, $strict>, ZodObject<{ kind: ZodLiteral<"merge">; request: ZodObject<{ target: ZodString; source: ZodString; branch: ZodString; sourceBranch: ZodString; expectedSource: ZodString; expectedTarget: ZodOptional<...>; behind: ZodOptional<...>; message: ZodString; author: ZodObject<..., ...>; }, $strict>; }, $strict>], "kind">; phase: ZodLiteral<"too-large">;}, $strict>, ZodObject<{ key: ZodString; timestamp: ZodNumber; operation: ZodDiscriminatedUnion<[ZodObject<{ kind: ZodLiteral<"commit">; request: ZodObject<{ repository: ZodString; branch: ZodString; expectedHead: ZodNullable<...>; startFrom: ZodOptional<...>; message: ZodString; author: ZodObject<..., ...>; }, $strict>; changesDigest: ZodCustomStringFormat<"sha256_hex">; tags: ZodArray<ZodObject<{ ref: ...; expected: ...; }, $strict>>; }, $strict>, ZodObject<{ kind: ZodLiteral<"merge">; request: ZodObject<{ target: ZodString; source: ZodString; branch: ZodString; sourceBranch: ZodString; expectedSource: ZodString; expectedTarget: ZodOptional<...>; behind: ZodOptional<...>; message: ZodString; author: ZodObject<..., ...>; }, $strict>; }, $strict>], "kind">; phase: ZodLiteral<"inspect-base">;}, $strict>], "phase">;Strict, JSON-only continuation grammar; material and authority are not stored in it.
sqliteGitStepMaterial()function
Section titled “sqliteGitStepMaterial()”function sqliteGitStepMaterial(sql): GitStepMaterial;One-MiB material rows; exact replays are idempotent, conflicting material refuses.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
sql |
GitStepSql |
Returns
Section titled “Returns”memoryGitStepMaterial()function
Section titled “memoryGitStepMaterial()”function memoryGitStepMaterial(): GitStepMaterial;Volatile foreground driver material; background callers use the facet owner.
Returns
Section titled “Returns”begin()function
Section titled “begin()”function begin( input, material,): Promise< | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-base"; base: string | null; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "too-large"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-base"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-source"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-source"; target?: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-target"; sourceDigest: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-target"; sourceDigest: string; target: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "inspect-merge-push"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "inspect-atomic"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "push"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "confirm"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "confirm-ancestry"; head: string; }>;Prepare immutable request material before atomically enqueueing the first checkpoint.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
input |
GitStepOperation |
material |
GitStepMaterial |
Returns
Section titled “Returns”Promise< | { key: string; timestamp: number; operation: | {
kind: "commit"; request: { repository: string; branch: string;
expectedHead: string | null; startFrom?: string; message: string;
author: { name: string; email: string; }; }; changesDigest:
string; tags: object[]; } | { kind: "merge"; request: {
target: string; source: string; branch: string; sourceBranch:
string; expectedSource: string; expectedTarget?: string; behind?:
number; message: string; author: { name: string; email: string;
}; }; }; phase: "fetch-base"; base: string | null; } | { key:
string; timestamp: number; operation: | { kind: "commit";
request: { repository: string; branch: string; expectedHead:
string | null; startFrom?: string; message: string; author: {
name: string; email: string; }; }; changesDigest: string; tags:
object[]; } | { kind: "merge"; request: { target: string;
source: string; branch: string; sourceBranch: string;
expectedSource: string; expectedTarget?: string; behind?: number;
message: string; author: { name: string; email: string; }; };
}; phase: "too-large"; } | { key: string; timestamp: number;
operation: | { kind: "commit"; request: { repository: string;
branch: string; expectedHead: string | null; startFrom?: string;
message: string; author: { name: string; email: string; }; };
changesDigest: string; tags: object[]; } | { kind: "merge";
request: { target: string; source: string; branch: string;
sourceBranch: string; expectedSource: string; expectedTarget?:
string; behind?: number; message: string; author: { name:
string; email: string; }; }; }; phase: "inspect-base"; } | {
key: string; timestamp: number; operation: | { kind: "commit";
request: { repository: string; branch: string; expectedHead:
string | null; startFrom?: string; message: string; author: {
name: string; email: string; }; }; changesDigest: string; tags:
object[]; } | { kind: "merge"; request: { target: string;
source: string; branch: string; sourceBranch: string;
expectedSource: string; expectedTarget?: string; behind?: number;
message: string; author: { name: string; email: string; }; };
}; phase: "inspect-source"; } | { key: string; timestamp:
number; operation: | { kind: "commit"; request: { repository:
string; branch: string; expectedHead: string | null; startFrom?:
string; message: string; author: { name: string; email: string;
}; }; changesDigest: string; tags: object[]; } | { kind:
"merge"; request: { target: string; source: string; branch:
string; sourceBranch: string; expectedSource: string;
expectedTarget?: string; behind?: number; message: string; author:
{ name: string; email: string; }; }; }; phase: "fetch-source";
target?: string; } | { key: string; timestamp: number;
operation: | { kind: "commit"; request: { repository: string;
branch: string; expectedHead: string | null; startFrom?: string;
message: string; author: { name: string; email: string; }; };
changesDigest: string; tags: object[]; } | { kind: "merge";
request: { target: string; source: string; branch: string;
sourceBranch: string; expectedSource: string; expectedTarget?:
string; behind?: number; message: string; author: { name:
string; email: string; }; }; }; phase: "inspect-target";
sourceDigest: string; } | { key: string; timestamp: number;
operation: | { kind: "commit"; request: { repository: string;
branch: string; expectedHead: string | null; startFrom?: string;
message: string; author: { name: string; email: string; }; };
changesDigest: string; tags: object[]; } | { kind: "merge";
request: { target: string; source: string; branch: string;
sourceBranch: string; expectedSource: string; expectedTarget?:
string; behind?: number; message: string; author: { name:
string; email: string; }; }; }; phase: "fetch-target";
sourceDigest: string; target: string; } | { key: string;
timestamp: number; operation: | { kind: "commit"; request: {
repository: string; branch: string; expectedHead: string | null;
startFrom?: string; message: string; author: { name: string;
email: string; }; }; changesDigest: string; tags: object[]; } |
{ kind: "merge"; request: { target: string; source: string;
branch: string; sourceBranch: string; expectedSource: string;
expectedTarget?: string; behind?: number; message: string; author:
{ name: string; email: string; }; }; }; old: string | null;
built: string; packDigest: string; attempt: number; pushBefore?:
string | null; atomic?: true; phase: "inspect-merge-push"; } | {
key: string; timestamp: number; operation: | { kind: "commit";
request: { repository: string; branch: string; expectedHead:
string | null; startFrom?: string; message: string; author: {
name: string; email: string; }; }; changesDigest: string; tags:
object[]; } | { kind: "merge"; request: { target: string;
source: string; branch: string; sourceBranch: string;
expectedSource: string; expectedTarget?: string; behind?: number;
message: string; author: { name: string; email: string; }; };
}; old: string | null; built: string; packDigest: string;
attempt: number; pushBefore?: string | null; atomic?: true;
phase: "inspect-atomic"; } | { key: string; timestamp: number;
operation: | { kind: "commit"; request: { repository: string;
branch: string; expectedHead: string | null; startFrom?: string;
message: string; author: { name: string; email: string; }; };
changesDigest: string; tags: object[]; } | { kind: "merge";
request: { target: string; source: string; branch: string;
sourceBranch: string; expectedSource: string; expectedTarget?:
string; behind?: number; message: string; author: { name:
string; email: string; }; }; }; old: string | null; built:
string; packDigest: string; attempt: number; pushBefore?: string
| null; atomic?: true; phase: "push"; } | { key: string;
timestamp: number; operation: | { kind: "commit"; request: {
repository: string; branch: string; expectedHead: string | null;
startFrom?: string; message: string; author: { name: string;
email: string; }; }; changesDigest: string; tags: object[]; } |
{ kind: "merge"; request: { target: string; source: string;
branch: string; sourceBranch: string; expectedSource: string;
expectedTarget?: string; behind?: number; message: string; author:
{ name: string; email: string; }; }; }; old: string | null;
built: string; packDigest: string; attempt: number; pushBefore?:
string | null; atomic?: true; phase: "confirm"; } | { key:
string; timestamp: number; operation: | { kind: "commit";
request: { repository: string; branch: string; expectedHead:
string | null; startFrom?: string; message: string; author: {
name: string; email: string; }; }; changesDigest: string; tags:
object[]; } | { kind: "merge"; request: { target: string;
source: string; branch: string; sourceBranch: string;
expectedSource: string; expectedTarget?: string; behind?: number;
message: string; author: { name: string; email: string; }; };
}; old: string | null; built: string; packDigest: string;
attempt: number; pushBefore?: string | null; atomic?: true;
phase: "confirm-ancestry"; head: string; }>
runStep()function
Section titled “runStep()”function runStep(raw, ports, signal): Promise<GitStepResult>;Execute one fresh-admitted frame; the caller persists next and its successor job atomically.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
raw |
| { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-base"; base: string | null; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "too-large"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-base"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-source"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-source"; target?: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-target"; sourceDigest: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-target"; sourceDigest: string; target: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "inspect-merge-push"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "inspect-atomic"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "push"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "confirm"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "confirm-ancestry"; head: string; } |
ports |
GitStepPorts |
signal |
AbortSignal |
Returns
Section titled “Returns”Promise<GitStepResult>
dropMaterial()function
Section titled “dropMaterial()”function dropMaterial(step, material): Promise<void>;Drop material only after the owner has durably recorded the terminal outcome.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
step |
| { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-base"; base: string | null; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "too-large"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-base"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-source"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-source"; target?: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "inspect-target"; sourceDigest: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; phase: "fetch-target"; sourceDigest: string; target: string; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "inspect-merge-push"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "inspect-atomic"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "push"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "confirm"; } | { key: string; timestamp: number; operation: | { kind: "commit"; request: { repository: string; branch: string; expectedHead: string | null; startFrom?: string; message: string; author: { name: string; email: string; }; }; changesDigest: string; tags: object[]; } | { kind: "merge"; request: { target: string; source: string; branch: string; sourceBranch: string; expectedSource: string; expectedTarget?: string; behind?: number; message: string; author: { name: string; email: string; }; }; }; old: string | null; built: string; packDigest: string; attempt: number; pushBefore?: string | null; atomic?: true; phase: "confirm-ancestry"; head: string; } |
material |
GitStepMaterial |
Returns
Section titled “Returns”Promise<void>