@kitman-sh/sdk 0.10.69 → 0.10.71
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/build/index.js +2 -2
- package/dist/{chunk-abjq7rp4.js → chunk-stw541tr.js} +330 -280
- package/dist/{chunk-8z4xvm69.js → chunk-w2f4s9v2.js} +14 -2
- package/dist/loop/index.js +3 -1
- package/dist/program/index.js +2 -2
- package/package.json +1 -1
- package/types/packages/core/src/change-request-review.d.ts +8 -0
- package/types/packages/core/src/index.d.ts +1 -0
- package/types/packages/core/src/loop.d.ts +80 -0
- package/types/packages/core/src/my-teams.d.ts +56 -0
- package/types/packages/core/src/run-display.d.ts +5 -1
- package/types/packages/core/src/test-report.d.ts +38 -0
- package/types/packages/core/src/work-unit.d.ts +72 -0
- package/types/packages/live/src/rpc/runner-client.d.ts +40 -0
- package/types/packages/live/src/rpc/runner-group.d.ts +307 -239
- package/types/packages/sdk/src/loop/activities.d.ts +31 -0
- package/types/packages/sdk/src/loop/evidence.d.ts +17 -1
- package/types/packages/sdk/src/loop/steps.d.ts +4 -0
- package/types/packages/sdk/src/loop/test-loop.d.ts +9 -0
|
@@ -1861,6 +1861,12 @@ var RunWaiting = Schema12.Union([
|
|
|
1861
1861
|
name: Schema12.String.check(Schema12.isMinLength(1)),
|
|
1862
1862
|
verificationId: Id
|
|
1863
1863
|
}),
|
|
1864
|
+
Schema12.Struct({
|
|
1865
|
+
kind: Schema12.Literal("claim"),
|
|
1866
|
+
name: Schema12.String.check(Schema12.isMinLength(1)),
|
|
1867
|
+
resource: Schema12.String.check(Schema12.isMinLength(1)),
|
|
1868
|
+
holder: Schema12.optionalKey(Schema12.Struct({ runId: Id, loopId: Schema12.String }))
|
|
1869
|
+
}),
|
|
1864
1870
|
Schema12.Struct({
|
|
1865
1871
|
kind: Schema12.Literal("queue"),
|
|
1866
1872
|
name: Schema12.String.check(Schema12.isMinLength(1)),
|
|
@@ -1882,6 +1888,8 @@ var RunEvidence = Schema12.Struct({
|
|
|
1882
1888
|
durationMs: Schema12.Int.check(Schema12.isGreaterThanOrEqualTo(0)),
|
|
1883
1889
|
outputTail: Schema12.String,
|
|
1884
1890
|
fileIds: Schema12.optionalKey(Schema12.Array(Schema12.String)),
|
|
1891
|
+
skippedSinceBaseline: Schema12.optionalKey(Schema12.Array(Schema12.String)),
|
|
1892
|
+
newNotRun: Schema12.optionalKey(Schema12.Array(Schema12.String)),
|
|
1885
1893
|
recordedAt: Timestamp
|
|
1886
1894
|
});
|
|
1887
1895
|
var ApprovedVerification = Schema12.Struct({
|
|
@@ -2734,7 +2742,9 @@ var EvidenceCheck2 = Schema16.Struct({
|
|
|
2734
2742
|
durationMs: Schema16.Finite,
|
|
2735
2743
|
evidenceId: Schema16.String,
|
|
2736
2744
|
outputTail: Schema16.optionalKey(Schema16.String),
|
|
2737
|
-
suggested: Schema16.optionalKey(Schema16.Boolean)
|
|
2745
|
+
suggested: Schema16.optionalKey(Schema16.Boolean),
|
|
2746
|
+
skippedSinceBaseline: Schema16.optionalKey(Schema16.Array(Schema16.String)),
|
|
2747
|
+
newNotRun: Schema16.optionalKey(Schema16.Array(Schema16.String))
|
|
2738
2748
|
});
|
|
2739
2749
|
var VerifyResult2 = Schema16.Struct({
|
|
2740
2750
|
revision: Schema16.String,
|
|
@@ -2756,6 +2766,16 @@ var OutcomeTable2 = {
|
|
|
2756
2766
|
var verdict = (reasons) => reasons.length === 0 ? { settled: true } : { settled: false, reasons };
|
|
2757
2767
|
var missing = (side) => `No verification evidence for the ${side}`;
|
|
2758
2768
|
var failsOn2 = (side, name, tree) => `${name} fails on the ${side} tree ${tree}`;
|
|
2769
|
+
var shownTests = 10;
|
|
2770
|
+
var testList = (tests) => [...tests.slice(0, shownTests), ...tests.length > shownTests ? [`and ${tests.length - shownTests} more`] : []].join("; ");
|
|
2771
|
+
var testsNotRunReasons2 = (result) => result.checks.flatMap((check) => [
|
|
2772
|
+
...check.newNotRun === undefined || check.newNotRun.length === 0 ? [] : [
|
|
2773
|
+
`${check.name} skipped ${check.newNotRun.length} new test${check.newNotRun.length === 1 ? "" : "s"} on the tree ${result.tree}, so verify never ran them: ${testList(check.newNotRun)}`
|
|
2774
|
+
],
|
|
2775
|
+
...check.skippedSinceBaseline === undefined || check.skippedSinceBaseline.length === 0 ? [] : [
|
|
2776
|
+
`${check.name} skipped ${check.skippedSinceBaseline.length} test${check.skippedSinceBaseline.length === 1 ? "" : "s"} on the tree ${result.tree} that ran on the baseline: ${testList(check.skippedSinceBaseline)}`
|
|
2777
|
+
]
|
|
2778
|
+
]);
|
|
2759
2779
|
var allPass = (side, result) => {
|
|
2760
2780
|
if (result === undefined)
|
|
2761
2781
|
return [missing(side)];
|
|
@@ -2798,6 +2818,11 @@ var scopeReasons = (scope) => {
|
|
|
2798
2818
|
return scope.unmet.length === 0 ? ["Review found the scope unmet"] : scope.unmet.map((item) => `Review found the scope unmet: ${item}`);
|
|
2799
2819
|
};
|
|
2800
2820
|
var evidenceGate2 = (input) => {
|
|
2821
|
+
const gated = outcomeGate(input);
|
|
2822
|
+
const notRun = input.outcome === "investigation" || input.head === undefined ? [] : testsNotRunReasons2(input.head);
|
|
2823
|
+
return verdict([...gated.settled ? [] : gated.reasons, ...notRun]);
|
|
2824
|
+
};
|
|
2825
|
+
var outcomeGate = (input) => {
|
|
2801
2826
|
switch (input.outcome) {
|
|
2802
2827
|
case "feature":
|
|
2803
2828
|
return verdict([...allPass("head", input.head), ...scopeReasons(input.review)]);
|
|
@@ -3243,7 +3268,10 @@ var PipelineStatus2 = Schema19.Struct({
|
|
|
3243
3268
|
source: Schema19.Literals(["forge", "reported"]),
|
|
3244
3269
|
jobs: Schema19.Array(PipelineJob2),
|
|
3245
3270
|
readAt: Schema19.optionalKey(Schema19.String),
|
|
3246
|
-
runnerChecks: Schema19.optionalKey(Schema19.Array(Schema19.String))
|
|
3271
|
+
runnerChecks: Schema19.optionalKey(Schema19.Array(Schema19.String)),
|
|
3272
|
+
approved: Schema19.optionalKey(Schema19.String),
|
|
3273
|
+
repository: Schema19.optionalKey(Schema19.String),
|
|
3274
|
+
target: Schema19.optionalKey(Schema19.Struct({ branch: Schema19.String, head: Schema19.String, jobs: Schema19.Array(PipelineJob2) }))
|
|
3247
3275
|
});
|
|
3248
3276
|
var ReviewThread2 = Schema19.Struct({
|
|
3249
3277
|
id: Schema19.String,
|
|
@@ -3475,7 +3503,7 @@ import * as Exit3 from "effect/Exit";
|
|
|
3475
3503
|
import * as Layer from "effect/Layer";
|
|
3476
3504
|
import * as Option2 from "effect/Option";
|
|
3477
3505
|
import * as Record12 from "effect/Record";
|
|
3478
|
-
import * as
|
|
3506
|
+
import * as Schema28 from "effect/Schema";
|
|
3479
3507
|
import { DurableDeferred as DurableDeferred4, Workflow, WorkflowEngine } from "effect/workflow";
|
|
3480
3508
|
|
|
3481
3509
|
// packages/core/src/resource-claim.ts
|
|
@@ -3552,8 +3580,8 @@ var letGo2 = (name, held) => takeStep2(name, "let_go", "claim", Effect6.gen(func
|
|
|
3552
3580
|
}));
|
|
3553
3581
|
|
|
3554
3582
|
// packages/core/src/work-unit.ts
|
|
3555
|
-
import * as
|
|
3556
|
-
import * as
|
|
3583
|
+
import * as Schema26 from "effect/Schema";
|
|
3584
|
+
import * as Struct24 from "effect/Struct";
|
|
3557
3585
|
|
|
3558
3586
|
// packages/core/src/repo-binding.ts
|
|
3559
3587
|
import * as Schema22 from "effect/Schema";
|
|
@@ -3652,303 +3680,325 @@ var NetworkHostQuery = Schema23.Struct({
|
|
|
3652
3680
|
repoBindingId: Schema23.optionalKey(Id)
|
|
3653
3681
|
});
|
|
3654
3682
|
|
|
3655
|
-
// packages/core/src/
|
|
3683
|
+
// packages/core/src/test-report.ts
|
|
3656
3684
|
import * as Schema24 from "effect/Schema";
|
|
3657
|
-
var
|
|
3658
|
-
var
|
|
3659
|
-
var
|
|
3660
|
-
var
|
|
3661
|
-
|
|
3685
|
+
var maxSkippedTests = 1e4;
|
|
3686
|
+
var maxRanDigests = 1e5;
|
|
3687
|
+
var TestId = Schema24.String.check(Schema24.isMinLength(1), Schema24.isMaxLength(1000));
|
|
3688
|
+
var CheckTests = Schema24.Struct({
|
|
3689
|
+
reports: Schema24.Int.check(Schema24.isGreaterThanOrEqualTo(0)),
|
|
3690
|
+
passed: Schema24.Int.check(Schema24.isGreaterThanOrEqualTo(0)),
|
|
3691
|
+
failed: Schema24.Int.check(Schema24.isGreaterThanOrEqualTo(0)),
|
|
3692
|
+
skipped: Schema24.Int.check(Schema24.isGreaterThanOrEqualTo(0)),
|
|
3693
|
+
skippedTests: Schema24.Array(TestId).check(Schema24.isMaxLength(maxSkippedTests)),
|
|
3694
|
+
ranDigests: Schema24.Array(Schema24.String.check(Schema24.isMaxLength(16))).check(Schema24.isMaxLength(maxRanDigests))
|
|
3695
|
+
});
|
|
3696
|
+
var entities = new Map([
|
|
3697
|
+
["amp", "&"],
|
|
3698
|
+
["lt", "<"],
|
|
3699
|
+
["gt", ">"],
|
|
3700
|
+
["quot", '"'],
|
|
3701
|
+
["apos", "'"]
|
|
3702
|
+
]);
|
|
3703
|
+
|
|
3704
|
+
// packages/core/src/secret.ts
|
|
3705
|
+
import * as Schema25 from "effect/Schema";
|
|
3706
|
+
var SecretName2 = Schema25.String.check(Schema25.isPattern(new RegExp("^[A-Za-z_][A-Za-z0-9_]*$", "u")), Schema25.isMinLength(1), Schema25.isMaxLength(128));
|
|
3707
|
+
var SecretScope = Schema25.Union([Schema25.Literal("workspace"), Schema25.Literal("team")]);
|
|
3708
|
+
var SecretHost = Schema25.String.check(Schema25.isPattern(new RegExp("^(\\*\\.)?[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*(?::[0-9]{1,5})?$", "u")), Schema25.isMaxLength(260));
|
|
3709
|
+
var SecretHosts = Schema25.Array(SecretHost).check(Schema25.isMaxLength(32));
|
|
3710
|
+
var SecretSummary = Schema25.Struct({
|
|
3662
3711
|
name: SecretName2,
|
|
3663
3712
|
scope: SecretScope,
|
|
3664
|
-
teamId:
|
|
3713
|
+
teamId: Schema25.optionalKey(Id),
|
|
3665
3714
|
hosts: SecretHosts,
|
|
3666
3715
|
setByActorType: ActorType,
|
|
3667
|
-
setByActorId:
|
|
3716
|
+
setByActorId: Schema25.String,
|
|
3668
3717
|
setAt: Timestamp
|
|
3669
3718
|
});
|
|
3670
|
-
var SecretList =
|
|
3671
|
-
var SecretSet =
|
|
3672
|
-
value:
|
|
3673
|
-
teamId:
|
|
3674
|
-
hosts:
|
|
3719
|
+
var SecretList = Schema25.Struct({ items: Schema25.Array(SecretSummary) });
|
|
3720
|
+
var SecretSet = Schema25.Struct({
|
|
3721
|
+
value: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(65536)),
|
|
3722
|
+
teamId: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1))),
|
|
3723
|
+
hosts: Schema25.optionalKey(SecretHosts)
|
|
3675
3724
|
});
|
|
3676
|
-
var SecretScopeQuery =
|
|
3725
|
+
var SecretScopeQuery = Schema25.Struct({ teamId: Schema25.optionalKey(Id) });
|
|
3677
3726
|
|
|
3678
3727
|
// packages/core/src/work-unit.ts
|
|
3679
|
-
var WorkUnitLease =
|
|
3728
|
+
var WorkUnitLease = Schema26.Struct({
|
|
3680
3729
|
leaseOwnerId: Id,
|
|
3681
3730
|
runnerReplicaId: Id,
|
|
3682
3731
|
leaseId: Id,
|
|
3683
|
-
attempt:
|
|
3684
|
-
fencingToken:
|
|
3685
|
-
capacitySlot:
|
|
3732
|
+
attempt: Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(1)),
|
|
3733
|
+
fencingToken: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240), Schema26.isPattern(new RegExp("^[A-Za-z0-9._:-]+$", "u"))),
|
|
3734
|
+
capacitySlot: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3686
3735
|
leaseExpiresAt: Timestamp,
|
|
3687
3736
|
lastHeartbeatAt: Timestamp
|
|
3688
3737
|
});
|
|
3689
|
-
var WorkUnitLeaseProjection =
|
|
3690
|
-
var WorkUnitRepoBinding =
|
|
3738
|
+
var WorkUnitLeaseProjection = Schema26.Struct(Struct24.map(WorkUnitLease.fields, Schema26.optionalKey));
|
|
3739
|
+
var WorkUnitRepoBinding = Schema26.Struct({
|
|
3691
3740
|
id: Id,
|
|
3692
3741
|
provider: RepoBindingProvider,
|
|
3693
|
-
host:
|
|
3694
|
-
owner:
|
|
3695
|
-
name:
|
|
3696
|
-
repositoryUrl:
|
|
3697
|
-
pathPrefix:
|
|
3698
|
-
defaultTargetBranch:
|
|
3699
|
-
expectedBranch:
|
|
3700
|
-
expectedCommitSha:
|
|
3701
|
-
});
|
|
3702
|
-
var WorkUnitLeaseInput =
|
|
3742
|
+
host: Schema26.String.check(Schema26.isMinLength(1)),
|
|
3743
|
+
owner: Schema26.String.check(Schema26.isMinLength(1)),
|
|
3744
|
+
name: Schema26.String.check(Schema26.isMinLength(1)),
|
|
3745
|
+
repositoryUrl: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1))),
|
|
3746
|
+
pathPrefix: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1))),
|
|
3747
|
+
defaultTargetBranch: Schema26.String.check(Schema26.isMinLength(1)),
|
|
3748
|
+
expectedBranch: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1))),
|
|
3749
|
+
expectedCommitSha: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1)))
|
|
3750
|
+
});
|
|
3751
|
+
var WorkUnitLeaseInput = Schema26.Struct({
|
|
3703
3752
|
leaseOwnerId: Id,
|
|
3704
3753
|
runnerReplicaId: Id,
|
|
3705
3754
|
leaseId: Id,
|
|
3706
|
-
attempt:
|
|
3707
|
-
fencingToken:
|
|
3708
|
-
capacitySlot:
|
|
3709
|
-
});
|
|
3710
|
-
var WorkUnitStatus =
|
|
3711
|
-
|
|
3712
|
-
|
|
3713
|
-
|
|
3714
|
-
|
|
3715
|
-
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3755
|
+
attempt: Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(1)),
|
|
3756
|
+
fencingToken: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240), Schema26.isPattern(new RegExp("^[A-Za-z0-9._:-]+$", "u"))),
|
|
3757
|
+
capacitySlot: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240))
|
|
3758
|
+
});
|
|
3759
|
+
var WorkUnitStatus = Schema26.Union([
|
|
3760
|
+
Schema26.Literal("pending"),
|
|
3761
|
+
Schema26.Literal("claimed"),
|
|
3762
|
+
Schema26.Literal("running"),
|
|
3763
|
+
Schema26.Literal("waiting"),
|
|
3764
|
+
Schema26.Literal("blocked"),
|
|
3765
|
+
Schema26.Literal("completed"),
|
|
3766
|
+
Schema26.Literal("failed"),
|
|
3767
|
+
Schema26.Literal("canceled"),
|
|
3768
|
+
Schema26.Literal("expired")
|
|
3720
3769
|
]);
|
|
3721
|
-
var LoopCheckout =
|
|
3722
|
-
var StorageOrigin =
|
|
3723
|
-
var SecretDestination =
|
|
3770
|
+
var LoopCheckout = Schema26.Union([Schema26.Literal("none"), Schema26.Literal("read"), Schema26.Literal("write")]);
|
|
3771
|
+
var StorageOrigin = Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(2048)));
|
|
3772
|
+
var SecretDestination = Schema26.Struct({
|
|
3724
3773
|
scope: SecretScope,
|
|
3725
3774
|
hosts: SecretHosts,
|
|
3726
|
-
version:
|
|
3775
|
+
version: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(128))
|
|
3727
3776
|
});
|
|
3728
|
-
var AgentStepWorkUnit =
|
|
3729
|
-
kind:
|
|
3777
|
+
var AgentStepWorkUnit = Schema26.Struct({
|
|
3778
|
+
kind: Schema26.Literal("agent_step"),
|
|
3730
3779
|
id: Id,
|
|
3731
|
-
teamId:
|
|
3780
|
+
teamId: Schema26.optionalKey(Id),
|
|
3732
3781
|
runId: Id,
|
|
3733
|
-
stepKey:
|
|
3734
|
-
attempt:
|
|
3782
|
+
stepKey: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3783
|
+
attempt: Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(1)),
|
|
3735
3784
|
lease: WorkUnitLease,
|
|
3736
|
-
deadlineAt:
|
|
3785
|
+
deadlineAt: Schema26.optionalKey(Timestamp),
|
|
3737
3786
|
brief: StepBrief,
|
|
3738
|
-
stepCredential:
|
|
3787
|
+
stepCredential: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(512)),
|
|
3739
3788
|
checkout: LoopCheckout,
|
|
3740
|
-
repoBinding:
|
|
3741
|
-
branch:
|
|
3742
|
-
baseRevision:
|
|
3743
|
-
network:
|
|
3744
|
-
hosts:
|
|
3745
|
-
sandbox:
|
|
3746
|
-
secrets:
|
|
3747
|
-
secretDestinations:
|
|
3748
|
-
runBaseRevision:
|
|
3749
|
-
mergeTarget:
|
|
3750
|
-
resumeNotes:
|
|
3751
|
-
transcriptSequence:
|
|
3789
|
+
repoBinding: Schema26.optionalKey(WorkUnitRepoBinding),
|
|
3790
|
+
branch: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1))),
|
|
3791
|
+
baseRevision: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1))),
|
|
3792
|
+
network: Schema26.optionalKey(AgentSandboxNetwork),
|
|
3793
|
+
hosts: Schema26.optionalKey(Schema26.Array(NetworkHost)),
|
|
3794
|
+
sandbox: Schema26.optionalKey(Schema26.Literal("docker")),
|
|
3795
|
+
secrets: Schema26.optionalKey(Schema26.Record(Schema26.String, Schema26.String)),
|
|
3796
|
+
secretDestinations: Schema26.optionalKey(Schema26.Record(Schema26.String, SecretDestination)),
|
|
3797
|
+
runBaseRevision: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1))),
|
|
3798
|
+
mergeTarget: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1))),
|
|
3799
|
+
resumeNotes: Schema26.optionalKey(Schema26.Array(Schema26.String)),
|
|
3800
|
+
transcriptSequence: Schema26.optionalKey(Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(1))),
|
|
3752
3801
|
storageOrigin: StorageOrigin
|
|
3753
3802
|
});
|
|
3754
|
-
var RunJournal =
|
|
3755
|
-
activities:
|
|
3756
|
-
deferreds:
|
|
3803
|
+
var RunJournal = Schema26.Struct({
|
|
3804
|
+
activities: Schema26.Record(Schema26.String, Schema26.Unknown),
|
|
3805
|
+
deferreds: Schema26.Record(Schema26.String, Schema26.Unknown)
|
|
3757
3806
|
});
|
|
3758
|
-
var OrchestrationWorkUnit =
|
|
3759
|
-
kind:
|
|
3807
|
+
var OrchestrationWorkUnit = Schema26.Struct({
|
|
3808
|
+
kind: Schema26.Literal("orchestration"),
|
|
3760
3809
|
id: Id,
|
|
3761
|
-
teamId:
|
|
3810
|
+
teamId: Schema26.optionalKey(Id),
|
|
3762
3811
|
runId: Id,
|
|
3763
|
-
loopDigest:
|
|
3764
|
-
input:
|
|
3765
|
-
granted:
|
|
3812
|
+
loopDigest: Schema26.String.check(Schema26.isMinLength(64), Schema26.isMaxLength(64), Schema26.isPattern(new RegExp("^[a-f0-9]{64}$", "u"))),
|
|
3813
|
+
input: Schema26.Unknown,
|
|
3814
|
+
granted: Schema26.Array(Schema26.String),
|
|
3766
3815
|
lease: WorkUnitLease,
|
|
3767
3816
|
journal: RunJournal,
|
|
3768
|
-
network:
|
|
3817
|
+
network: Schema26.optionalKey(AgentSandboxNetwork),
|
|
3769
3818
|
storageOrigin: StorageOrigin,
|
|
3770
|
-
program:
|
|
3771
|
-
loopId:
|
|
3772
|
-
credential:
|
|
3819
|
+
program: Schema26.Struct({
|
|
3820
|
+
loopId: Schema26.String.check(Schema26.isMinLength(1)),
|
|
3821
|
+
credential: Schema26.String.check(Schema26.isMinLength(1))
|
|
3773
3822
|
})
|
|
3774
3823
|
});
|
|
3775
|
-
var ProgramWorkUnit = OrchestrationWorkUnit.mapFields(
|
|
3776
|
-
var CheckName2 =
|
|
3777
|
-
var ApprovedCheck =
|
|
3824
|
+
var ProgramWorkUnit = OrchestrationWorkUnit.mapFields(Struct24.omit(["program"]));
|
|
3825
|
+
var CheckName2 = Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(120), Schema26.isPattern(new RegExp("^[A-Za-z0-9][A-Za-z0-9._:-]*$", "u")));
|
|
3826
|
+
var ApprovedCheck = Schema26.Struct({
|
|
3778
3827
|
name: CheckName2,
|
|
3779
|
-
command:
|
|
3780
|
-
workingDirectory:
|
|
3781
|
-
suggested:
|
|
3828
|
+
command: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(2000)),
|
|
3829
|
+
workingDirectory: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(500))),
|
|
3830
|
+
suggested: Schema26.optionalKey(Schema26.Boolean)
|
|
3782
3831
|
});
|
|
3783
|
-
var RepositoryCheck =
|
|
3832
|
+
var RepositoryCheck = Schema26.Struct({
|
|
3784
3833
|
...ApprovedCheck.fields,
|
|
3785
|
-
pipeline:
|
|
3786
|
-
});
|
|
3787
|
-
var MetricName =
|
|
3788
|
-
var MeasurePlan2 =
|
|
3789
|
-
command:
|
|
3790
|
-
prepare:
|
|
3791
|
-
workingDirectory:
|
|
3792
|
-
warmup:
|
|
3793
|
-
metrics:
|
|
3834
|
+
pipeline: Schema26.optionalKey(Schema26.Boolean)
|
|
3835
|
+
});
|
|
3836
|
+
var MetricName = Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(80), Schema26.isPattern(new RegExp("^[A-Za-z0-9][A-Za-z0-9._:-]*$", "u")));
|
|
3837
|
+
var MeasurePlan2 = Schema26.Struct({
|
|
3838
|
+
command: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(2000)),
|
|
3839
|
+
prepare: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(2000))),
|
|
3840
|
+
workingDirectory: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(500))),
|
|
3841
|
+
warmup: Schema26.optionalKey(Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(0), Schema26.isLessThanOrEqualTo(10))),
|
|
3842
|
+
metrics: Schema26.Array(Schema26.Struct({
|
|
3794
3843
|
name: MetricName,
|
|
3795
|
-
direction:
|
|
3796
|
-
role:
|
|
3797
|
-
lowVariance:
|
|
3798
|
-
})).check(
|
|
3844
|
+
direction: Schema26.Literals(["lower", "higher"]),
|
|
3845
|
+
role: Schema26.Literals(["primary", "guardrail"]),
|
|
3846
|
+
lowVariance: Schema26.optionalKey(Schema26.Boolean)
|
|
3847
|
+
})).check(Schema26.isMinLength(1), Schema26.isMaxLength(20))
|
|
3799
3848
|
});
|
|
3800
|
-
var MeasureSpec =
|
|
3801
|
-
base:
|
|
3849
|
+
var MeasureSpec = Schema26.Struct({
|
|
3850
|
+
base: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3802
3851
|
plan: MeasurePlan2,
|
|
3803
|
-
samples:
|
|
3804
|
-
calibrate:
|
|
3852
|
+
samples: Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(1), Schema26.isLessThanOrEqualTo(50)),
|
|
3853
|
+
calibrate: Schema26.Boolean
|
|
3805
3854
|
});
|
|
3806
|
-
var MeasureSample =
|
|
3807
|
-
var MeasureSamples =
|
|
3808
|
-
var MeasureEvidence =
|
|
3855
|
+
var MeasureSample = Schema26.Record(MetricName, Schema26.Finite);
|
|
3856
|
+
var MeasureSamples = Schema26.Array(MeasureSample).check(Schema26.isMaxLength(50));
|
|
3857
|
+
var MeasureEvidence = Schema26.Struct({
|
|
3809
3858
|
base: MeasureSamples,
|
|
3810
3859
|
head: MeasureSamples,
|
|
3811
|
-
baseAgain:
|
|
3860
|
+
baseAgain: Schema26.optionalKey(MeasureSamples)
|
|
3812
3861
|
});
|
|
3813
|
-
var VerificationWorkUnit =
|
|
3814
|
-
kind:
|
|
3862
|
+
var VerificationWorkUnit = Schema26.Struct({
|
|
3863
|
+
kind: Schema26.Literal("verification"),
|
|
3815
3864
|
id: Id,
|
|
3816
|
-
teamId:
|
|
3865
|
+
teamId: Schema26.optionalKey(Id),
|
|
3817
3866
|
runId: Id,
|
|
3818
|
-
stepKey:
|
|
3867
|
+
stepKey: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3819
3868
|
lease: WorkUnitLease,
|
|
3820
3869
|
repoBinding: WorkUnitRepoBinding,
|
|
3821
|
-
revision:
|
|
3822
|
-
baseline:
|
|
3823
|
-
checks:
|
|
3824
|
-
measure:
|
|
3825
|
-
hosts:
|
|
3870
|
+
revision: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3871
|
+
baseline: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(300))),
|
|
3872
|
+
checks: Schema26.Array(RepositoryCheck).check(Schema26.isMaxLength(50)),
|
|
3873
|
+
measure: Schema26.optionalKey(MeasureSpec),
|
|
3874
|
+
hosts: Schema26.optionalKey(Schema26.Array(NetworkHost)),
|
|
3826
3875
|
storageOrigin: StorageOrigin
|
|
3827
3876
|
});
|
|
3828
|
-
var WorkUnit =
|
|
3829
|
-
var WorkUnitClaimResult =
|
|
3830
|
-
var WorkUnitClaimInput =
|
|
3831
|
-
teamId:
|
|
3877
|
+
var WorkUnit = Schema26.Union([OrchestrationWorkUnit, AgentStepWorkUnit, VerificationWorkUnit]);
|
|
3878
|
+
var WorkUnitClaimResult = Schema26.Struct({ workUnit: Schema26.optionalKey(WorkUnit) });
|
|
3879
|
+
var WorkUnitClaimInput = Schema26.Struct({
|
|
3880
|
+
teamId: Schema26.optionalKey(Id),
|
|
3832
3881
|
runnerReplicaId: Id,
|
|
3833
|
-
capacitySlot:
|
|
3834
|
-
idempotencyKey:
|
|
3835
|
-
leaseDurationSeconds:
|
|
3882
|
+
capacitySlot: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3883
|
+
idempotencyKey: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3884
|
+
leaseDurationSeconds: Schema26.optionalKey(Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(1), Schema26.isLessThanOrEqualTo(3600)))
|
|
3836
3885
|
});
|
|
3837
|
-
var WorkUnitHeartbeatInput =
|
|
3886
|
+
var WorkUnitHeartbeatInput = Schema26.Struct({
|
|
3838
3887
|
workUnitId: Id,
|
|
3839
3888
|
lease: WorkUnitLeaseInput,
|
|
3840
|
-
leaseDurationSeconds:
|
|
3841
|
-
secrets:
|
|
3889
|
+
leaseDurationSeconds: Schema26.optionalKey(Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(1), Schema26.isLessThanOrEqualTo(3600))),
|
|
3890
|
+
secrets: Schema26.optionalKey(Schema26.Array(Schema26.Struct({ name: SecretName2, version: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(128)) })).check(Schema26.isMaxLength(256)))
|
|
3842
3891
|
});
|
|
3843
|
-
var WorkUnitHeartbeatResult =
|
|
3844
|
-
settled:
|
|
3845
|
-
outputSubmitted:
|
|
3846
|
-
outputMerged:
|
|
3847
|
-
questionOpen:
|
|
3848
|
-
revokedSecrets:
|
|
3892
|
+
var WorkUnitHeartbeatResult = Schema26.Struct({
|
|
3893
|
+
settled: Schema26.Boolean,
|
|
3894
|
+
outputSubmitted: Schema26.optionalKey(Schema26.Boolean),
|
|
3895
|
+
outputMerged: Schema26.optionalKey(Schema26.Boolean),
|
|
3896
|
+
questionOpen: Schema26.optionalKey(Schema26.Boolean),
|
|
3897
|
+
revokedSecrets: Schema26.optionalKey(Schema26.Array(SecretName2))
|
|
3849
3898
|
});
|
|
3850
|
-
var WorkUnitReleaseInput =
|
|
3899
|
+
var WorkUnitReleaseInput = Schema26.Struct({
|
|
3851
3900
|
workUnitId: Id,
|
|
3852
3901
|
lease: WorkUnitLeaseInput,
|
|
3853
|
-
crashed:
|
|
3854
|
-
});
|
|
3855
|
-
var CheckEvidence =
|
|
3856
|
-
name:
|
|
3857
|
-
command:
|
|
3858
|
-
status:
|
|
3859
|
-
exitCode:
|
|
3860
|
-
durationMs:
|
|
3861
|
-
outputTail:
|
|
3862
|
-
fileIds:
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3902
|
+
crashed: Schema26.optionalKey(Schema26.Struct({ reason: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(500)) }))
|
|
3903
|
+
});
|
|
3904
|
+
var CheckEvidence = Schema26.Struct({
|
|
3905
|
+
name: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(120)),
|
|
3906
|
+
command: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(2000)),
|
|
3907
|
+
status: Schema26.Union([Schema26.Literal("passed"), Schema26.Literal("failed")]),
|
|
3908
|
+
exitCode: Schema26.optionalKey(Schema26.Int),
|
|
3909
|
+
durationMs: Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(0)),
|
|
3910
|
+
outputTail: Schema26.String.check(Schema26.isMaxLength(8000)),
|
|
3911
|
+
fileIds: Schema26.optionalKey(Schema26.Array(Schema26.String).check(Schema26.isMaxLength(51))),
|
|
3912
|
+
tests: Schema26.optionalKey(CheckTests)
|
|
3913
|
+
});
|
|
3914
|
+
var TreeEvidence = Schema26.Struct({
|
|
3915
|
+
revision: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3916
|
+
tree: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(120)),
|
|
3917
|
+
checks: Schema26.Array(CheckEvidence).check(Schema26.isMaxLength(50))
|
|
3918
|
+
});
|
|
3919
|
+
var VerificationEvidence = Schema26.Struct({
|
|
3870
3920
|
head: TreeEvidence,
|
|
3871
|
-
baseline:
|
|
3872
|
-
measurement:
|
|
3873
|
-
});
|
|
3874
|
-
var BoundaryChange =
|
|
3875
|
-
kind:
|
|
3876
|
-
changedPaths:
|
|
3877
|
-
omittedPaths:
|
|
3878
|
-
files:
|
|
3879
|
-
path:
|
|
3880
|
-
excerpt:
|
|
3881
|
-
redacted:
|
|
3882
|
-
truncated:
|
|
3883
|
-
})).check(
|
|
3884
|
-
truncated:
|
|
3921
|
+
baseline: Schema26.optionalKey(TreeEvidence),
|
|
3922
|
+
measurement: Schema26.optionalKey(MeasureEvidence)
|
|
3923
|
+
});
|
|
3924
|
+
var BoundaryChange = Schema26.Struct({
|
|
3925
|
+
kind: Schema26.Literal("change"),
|
|
3926
|
+
changedPaths: Schema26.Array(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(4096))).check(Schema26.isMaxLength(1000)),
|
|
3927
|
+
omittedPaths: Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(0)),
|
|
3928
|
+
files: Schema26.Array(Schema26.Struct({
|
|
3929
|
+
path: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(4096)),
|
|
3930
|
+
excerpt: Schema26.String.check(Schema26.isMaxLength(250000)),
|
|
3931
|
+
redacted: Schema26.Boolean,
|
|
3932
|
+
truncated: Schema26.Boolean
|
|
3933
|
+
})).check(Schema26.isMaxLength(20)),
|
|
3934
|
+
truncated: Schema26.Boolean
|
|
3885
3935
|
});
|
|
3886
3936
|
var catchUpPathLimit = 200;
|
|
3887
|
-
var CatchUpPaths =
|
|
3888
|
-
var Revision =
|
|
3889
|
-
var CatchUp =
|
|
3937
|
+
var CatchUpPaths = Schema26.Array(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(1000))).check(Schema26.isMaxLength(catchUpPathLimit));
|
|
3938
|
+
var Revision = Schema26.String.check(Schema26.isPattern(/^[0-9a-f]{40,64}$/));
|
|
3939
|
+
var CatchUp = Schema26.Struct({
|
|
3890
3940
|
from: Revision,
|
|
3891
3941
|
head: Revision,
|
|
3892
3942
|
conflicted: CatchUpPaths,
|
|
3893
3943
|
rewritten: CatchUpPaths,
|
|
3894
3944
|
changed: CatchUpPaths,
|
|
3895
|
-
truncated:
|
|
3896
|
-
});
|
|
3897
|
-
var HarnessHold =
|
|
3898
|
-
reason:
|
|
3899
|
-
until:
|
|
3900
|
-
scope:
|
|
3901
|
-
});
|
|
3902
|
-
var StepRestart =
|
|
3903
|
-
var WorkUnitOutcome =
|
|
3904
|
-
status:
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
3908
|
-
|
|
3945
|
+
truncated: Schema26.Boolean
|
|
3946
|
+
});
|
|
3947
|
+
var HarnessHold = Schema26.Struct({
|
|
3948
|
+
reason: Schema26.Literals(HarnessHoldReasons),
|
|
3949
|
+
until: Schema26.optionalKey(Timestamp),
|
|
3950
|
+
scope: Schema26.optionalKey(Schema26.Literal("step"))
|
|
3951
|
+
});
|
|
3952
|
+
var StepRestart = Schema26.Struct({ reason: Schema26.Literal("login_revoked") });
|
|
3953
|
+
var WorkUnitOutcome = Schema26.Struct({
|
|
3954
|
+
status: Schema26.Union([
|
|
3955
|
+
Schema26.Literal("completed"),
|
|
3956
|
+
Schema26.Literal("failed"),
|
|
3957
|
+
Schema26.Literal("blocked"),
|
|
3958
|
+
Schema26.Literal("canceled")
|
|
3909
3959
|
]),
|
|
3910
|
-
result:
|
|
3911
|
-
revision:
|
|
3912
|
-
evidence:
|
|
3913
|
-
boundary:
|
|
3914
|
-
catchUp:
|
|
3915
|
-
harnessHold:
|
|
3916
|
-
restart:
|
|
3917
|
-
failureSummary:
|
|
3918
|
-
});
|
|
3919
|
-
var WorkUnitCompletion =
|
|
3960
|
+
result: Schema26.optionalKey(LoopStepOutput),
|
|
3961
|
+
revision: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(120))),
|
|
3962
|
+
evidence: Schema26.optionalKey(VerificationEvidence),
|
|
3963
|
+
boundary: Schema26.optionalKey(BoundaryChange),
|
|
3964
|
+
catchUp: Schema26.optionalKey(CatchUp),
|
|
3965
|
+
harnessHold: Schema26.optionalKey(HarnessHold),
|
|
3966
|
+
restart: Schema26.optionalKey(StepRestart),
|
|
3967
|
+
failureSummary: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(4000)))
|
|
3968
|
+
});
|
|
3969
|
+
var WorkUnitCompletion = Schema26.Struct({
|
|
3920
3970
|
workUnitId: Id,
|
|
3921
3971
|
lease: WorkUnitLeaseInput,
|
|
3922
|
-
idempotencyKey:
|
|
3972
|
+
idempotencyKey: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
|
|
3923
3973
|
outcome: WorkUnitOutcome
|
|
3924
3974
|
});
|
|
3925
3975
|
|
|
3926
3976
|
// packages/sdk/src/loop/measure.ts
|
|
3927
3977
|
import * as Effect7 from "effect/Effect";
|
|
3928
|
-
import * as
|
|
3978
|
+
import * as Schema27 from "effect/Schema";
|
|
3929
3979
|
import { DurableDeferred as DurableDeferred3 } from "effect/workflow";
|
|
3930
|
-
var MetricStats2 =
|
|
3931
|
-
samples:
|
|
3932
|
-
median:
|
|
3933
|
-
mean:
|
|
3934
|
-
min:
|
|
3935
|
-
max:
|
|
3936
|
-
stdev:
|
|
3937
|
-
});
|
|
3938
|
-
var MeasureVerdict2 =
|
|
3939
|
-
var Measurement2 =
|
|
3980
|
+
var MetricStats2 = Schema27.Struct({
|
|
3981
|
+
samples: Schema27.Finite,
|
|
3982
|
+
median: Schema27.Finite,
|
|
3983
|
+
mean: Schema27.Finite,
|
|
3984
|
+
min: Schema27.Finite,
|
|
3985
|
+
max: Schema27.Finite,
|
|
3986
|
+
stdev: Schema27.Finite
|
|
3987
|
+
});
|
|
3988
|
+
var MeasureVerdict2 = Schema27.Literals(["gain", "no_gain", "guardrail_regressed", "too_noisy"]);
|
|
3989
|
+
var Measurement2 = Schema27.Struct({
|
|
3940
3990
|
verdict: MeasureVerdict2,
|
|
3941
|
-
reason:
|
|
3942
|
-
metrics:
|
|
3943
|
-
name:
|
|
3944
|
-
role:
|
|
3945
|
-
direction:
|
|
3991
|
+
reason: Schema27.String,
|
|
3992
|
+
metrics: Schema27.Array(Schema27.Struct({
|
|
3993
|
+
name: Schema27.String,
|
|
3994
|
+
role: Schema27.Literals(["primary", "guardrail"]),
|
|
3995
|
+
direction: Schema27.Literals(["lower", "higher"]),
|
|
3946
3996
|
base: MetricStats2,
|
|
3947
3997
|
head: MetricStats2,
|
|
3948
|
-
change:
|
|
3949
|
-
noise:
|
|
3998
|
+
change: Schema27.Finite,
|
|
3999
|
+
noise: Schema27.Finite
|
|
3950
4000
|
})),
|
|
3951
|
-
suggestion:
|
|
4001
|
+
suggestion: Schema27.optional(Schema27.String),
|
|
3952
4002
|
evidence: MeasureEvidence
|
|
3953
4003
|
});
|
|
3954
4004
|
var measureDeferred2 = (step) => DurableDeferred3.make(`measure/${step}`, { success: MeasureEvidence, error: StepFailed2 });
|
|
@@ -4046,9 +4096,9 @@ var measure2 = (name, request) => takeStep2(name, "measure", "measure", Effect7.
|
|
|
4046
4096
|
}));
|
|
4047
4097
|
|
|
4048
4098
|
// packages/sdk/src/loop/test-loop.ts
|
|
4049
|
-
var LoopJournal2 =
|
|
4050
|
-
activities:
|
|
4051
|
-
deferreds:
|
|
4099
|
+
var LoopJournal2 = Schema28.Struct({
|
|
4100
|
+
activities: Schema28.Record(Schema28.String, Schema28.Json),
|
|
4101
|
+
deferreds: Schema28.Record(Schema28.String, Schema28.Json)
|
|
4052
4102
|
});
|
|
4053
4103
|
|
|
4054
4104
|
class ScriptedFailure2 extends Data2.TaggedClass("ScriptedFailure") {
|
|
@@ -4102,7 +4152,7 @@ var defaultActivities = {
|
|
|
4102
4152
|
draftUpdate: { run: (_, step) => Effect8.succeed({ id: `draft-${step}` }) }
|
|
4103
4153
|
};
|
|
4104
4154
|
var withoutServices = (effect) => Effect8.orDie(Effect8.provide(effect, Context3.empty()));
|
|
4105
|
-
var deferredExit = (deferred) =>
|
|
4155
|
+
var deferredExit = (deferred) => Schema28.Exit(Schema28.toCodecJson(deferred.successSchema), Schema28.toCodecJson(deferred.errorSchema), Schema28.toCodecJson(Schema28.Defect()));
|
|
4106
4156
|
var journaled = (engine, journal, ran) => ({
|
|
4107
4157
|
...engine,
|
|
4108
4158
|
activityExecute: (activity, attempt) => Effect8.gen(function* () {
|
|
@@ -4110,22 +4160,22 @@ var journaled = (engine, journal, ran) => ({
|
|
|
4110
4160
|
const recorded = journal.activities[key];
|
|
4111
4161
|
if (recorded !== undefined)
|
|
4112
4162
|
return new Workflow.Complete({
|
|
4113
|
-
exit: yield* withoutServices(
|
|
4163
|
+
exit: yield* withoutServices(Schema28.decodeEffect(Schema28.toCodecJson(activity.exitSchema))(recorded))
|
|
4114
4164
|
});
|
|
4115
4165
|
const result = yield* engine.activityExecute(activity, attempt);
|
|
4116
4166
|
if (result instanceof Workflow.Complete) {
|
|
4117
4167
|
ran.push(activity.name);
|
|
4118
|
-
journal.activities[key] = yield* withoutServices(
|
|
4168
|
+
journal.activities[key] = yield* withoutServices(Schema28.encodeEffect(Schema28.toCodecJson(activity.exitSchema))(result.exit));
|
|
4119
4169
|
}
|
|
4120
4170
|
return result;
|
|
4121
4171
|
}),
|
|
4122
4172
|
deferredResult: (deferred) => Effect8.gen(function* () {
|
|
4123
4173
|
const recorded = journal.deferreds[deferred.name];
|
|
4124
4174
|
if (recorded !== undefined)
|
|
4125
|
-
return Option2.some(yield* withoutServices(
|
|
4175
|
+
return Option2.some(yield* withoutServices(Schema28.decodeEffect(Schema28.toCodecJson(deferredExit(deferred)))(recorded)));
|
|
4126
4176
|
const result = yield* engine.deferredResult(deferred);
|
|
4127
4177
|
if (Option2.isSome(result))
|
|
4128
|
-
journal.deferreds[deferred.name] = yield* withoutServices(
|
|
4178
|
+
journal.deferreds[deferred.name] = yield* withoutServices(Schema28.encodeEffect(Schema28.toCodecJson(deferredExit(deferred)))(result.value));
|
|
4129
4179
|
return result;
|
|
4130
4180
|
})
|
|
4131
4181
|
});
|
|
@@ -4157,7 +4207,7 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
|
|
|
4157
4207
|
});
|
|
4158
4208
|
return resolve(eventDeferred2(launch.step), launch.token, event === undefined ? Exit3.fail(new WaitTimedOut2({ step: launch.step, event: launch.event })) : Exit3.succeed(event));
|
|
4159
4209
|
},
|
|
4160
|
-
claimResource: (launch) => launch.action === "let_go" ? resolve(letGoDeferred2(launch.step), launch.token, Exit3.succeed(null)) : resolve(claimDeferred2(launch.step), launch.token, Exit3.succeed(script.claims?.[launch.step] ?? { status: "granted", resource: launch.resource })),
|
|
4210
|
+
claimResource: (launch) => Effect8.flatMap(script.claimed?.({ step: launch.step, resource: launch.resource, action: launch.action }) ?? Effect8.undefined, (settled) => launch.action === "let_go" ? resolve(letGoDeferred2(launch.step), launch.token, Exit3.succeed(null)) : resolve(claimDeferred2(launch.step), launch.token, Exit3.succeed(settled ?? script.claims?.[launch.step] ?? { status: "granted", resource: launch.resource }))),
|
|
4161
4211
|
startVerification: (launch) => {
|
|
4162
4212
|
const scripted = script.verifications?.[launch.step];
|
|
4163
4213
|
if (launch.measure === undefined)
|
|
@@ -4190,13 +4240,13 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
|
|
|
4190
4240
|
};
|
|
4191
4241
|
};
|
|
4192
4242
|
var loopWorkflow2 = (loop) => Workflow.make(`kitman-loop/${loop.id}`, {
|
|
4193
|
-
payload: { input:
|
|
4243
|
+
payload: { input: Schema28.Json },
|
|
4194
4244
|
idempotencyKey: () => loop.id,
|
|
4195
4245
|
success: loop.output,
|
|
4196
|
-
error:
|
|
4246
|
+
error: Schema28.declare((_error) => true)
|
|
4197
4247
|
});
|
|
4198
4248
|
var executeLoop2 = (loop, runtime) => ({ input }) => Effect8.gen(function* () {
|
|
4199
|
-
const decoded = yield*
|
|
4249
|
+
const decoded = yield* Schema28.decodeEffect(Schema28.toCodecJson(loop.input))(input).pipe(Effect8.mapError((error) => new InputInvalid2({ loop: loop.id, message: error.message })));
|
|
4200
4250
|
const run = LoopRun2.of({
|
|
4201
4251
|
loop: loop.id,
|
|
4202
4252
|
agents: loop.agents,
|
|
@@ -4244,22 +4294,22 @@ var testLoop2 = (loop, script) => {
|
|
|
4244
4294
|
}).pipe(Effect8.provide(workflow.toLayer(execute).pipe(Layer.provideMerge(WorkflowEngine.layerMemory))));
|
|
4245
4295
|
};
|
|
4246
4296
|
// packages/sdk/src/loop/review.ts
|
|
4247
|
-
import * as
|
|
4248
|
-
var Severity2 =
|
|
4249
|
-
var Finding2 =
|
|
4297
|
+
import * as Schema29 from "effect/Schema";
|
|
4298
|
+
var Severity2 = Schema29.Literals(["blocker", "major", "minor"]);
|
|
4299
|
+
var Finding2 = Schema29.Struct({
|
|
4250
4300
|
severity: Severity2,
|
|
4251
|
-
file:
|
|
4252
|
-
line:
|
|
4253
|
-
detail:
|
|
4301
|
+
file: Schema29.String,
|
|
4302
|
+
line: Schema29.Int,
|
|
4303
|
+
detail: Schema29.String
|
|
4254
4304
|
});
|
|
4255
|
-
var MergedFinding2 =
|
|
4256
|
-
id:
|
|
4305
|
+
var MergedFinding2 = Schema29.Struct({
|
|
4306
|
+
id: Schema29.String,
|
|
4257
4307
|
...Finding2.fields,
|
|
4258
|
-
seats:
|
|
4308
|
+
seats: Schema29.Array(Schema29.String)
|
|
4259
4309
|
});
|
|
4260
|
-
var Rebuttal2 =
|
|
4261
|
-
var RebuttalVerdict2 =
|
|
4262
|
-
var ScopeJudgement2 =
|
|
4310
|
+
var Rebuttal2 = Schema29.Struct({ findingId: Schema29.String, reason: Schema29.String });
|
|
4311
|
+
var RebuttalVerdict2 = Schema29.Struct({ findingId: Schema29.String, accepted: Schema29.Boolean });
|
|
4312
|
+
var ScopeJudgement2 = Schema29.Struct({ met: Schema29.Boolean, unmet: Schema29.Array(Schema29.String) });
|
|
4263
4313
|
var rank = { blocker: 0, major: 1, minor: 2 };
|
|
4264
4314
|
var isBlocking2 = (finding) => finding.severity !== "minor";
|
|
4265
4315
|
var mergeFindings2 = (bySeat) => {
|
|
@@ -4317,11 +4367,11 @@ import * as Cause2 from "effect/Cause";
|
|
|
4317
4367
|
import * as Effect9 from "effect/Effect";
|
|
4318
4368
|
import * as Exit5 from "effect/Exit";
|
|
4319
4369
|
import * as Predicate3 from "effect/Predicate";
|
|
4320
|
-
import * as
|
|
4321
|
-
class CheckFailed2 extends
|
|
4322
|
-
loop:
|
|
4323
|
-
check:
|
|
4324
|
-
reason:
|
|
4370
|
+
import * as Schema30 from "effect/Schema";
|
|
4371
|
+
class CheckFailed2 extends Schema30.TaggedError()("CheckFailed", {
|
|
4372
|
+
loop: Schema30.String,
|
|
4373
|
+
check: Schema30.String,
|
|
4374
|
+
reason: Schema30.String
|
|
4325
4375
|
}) {
|
|
4326
4376
|
get detail() {
|
|
4327
4377
|
return `Check "${this.check}": ${this.reason}`;
|
|
@@ -4331,10 +4381,10 @@ class CheckFailed2 extends Schema29.TaggedError()("CheckFailed", {
|
|
|
4331
4381
|
}
|
|
4332
4382
|
}
|
|
4333
4383
|
|
|
4334
|
-
class StepNamedTwice2 extends
|
|
4335
|
-
loop:
|
|
4336
|
-
check:
|
|
4337
|
-
step:
|
|
4384
|
+
class StepNamedTwice2 extends Schema30.TaggedError()("StepNamedTwice", {
|
|
4385
|
+
loop: Schema30.String,
|
|
4386
|
+
check: Schema30.String,
|
|
4387
|
+
step: Schema30.String
|
|
4338
4388
|
}) {
|
|
4339
4389
|
get detail() {
|
|
4340
4390
|
return `Check "${this.check}": Step "${this.step}" is named twice`;
|
|
@@ -4344,12 +4394,12 @@ class StepNamedTwice2 extends Schema29.TaggedError()("StepNamedTwice", {
|
|
|
4344
4394
|
}
|
|
4345
4395
|
}
|
|
4346
4396
|
|
|
4347
|
-
class ReplayDiverged2 extends
|
|
4348
|
-
loop:
|
|
4349
|
-
check:
|
|
4350
|
-
first:
|
|
4351
|
-
replay:
|
|
4352
|
-
rerun:
|
|
4397
|
+
class ReplayDiverged2 extends Schema30.TaggedError()("ReplayDiverged", {
|
|
4398
|
+
loop: Schema30.String,
|
|
4399
|
+
check: Schema30.String,
|
|
4400
|
+
first: Schema30.Array(Schema30.String),
|
|
4401
|
+
replay: Schema30.Array(Schema30.String),
|
|
4402
|
+
rerun: Schema30.Array(Schema30.String)
|
|
4353
4403
|
}) {
|
|
4354
4404
|
get detail() {
|
|
4355
4405
|
const steps = (names) => names.join(", ") || "no Steps";
|
|
@@ -4359,7 +4409,7 @@ class ReplayDiverged2 extends Schema29.TaggedError()("ReplayDiverged", {
|
|
|
4359
4409
|
return `Loop "${this.loop}": ${this.detail}`;
|
|
4360
4410
|
}
|
|
4361
4411
|
}
|
|
4362
|
-
var LoopCheckError2 =
|
|
4412
|
+
var LoopCheckError2 = Schema30.Union([CheckFailed2, StepNamedTwice2, ReplayDiverged2]);
|
|
4363
4413
|
var checkLoop2 = (loop, check) => Effect9.gen(function* () {
|
|
4364
4414
|
const first = yield* testLoop2(loop, check.script);
|
|
4365
4415
|
if (Exit5.isFailure(first.result)) {
|
|
@@ -4386,21 +4436,21 @@ var checkLoop2 = (loop, check) => Effect9.gen(function* () {
|
|
|
4386
4436
|
// packages/sdk/src/loop/config.ts
|
|
4387
4437
|
var defineKit2 = (config) => ({ ...config, loops: config.loops ?? [] });
|
|
4388
4438
|
// packages/sdk/src/loop/sync.ts
|
|
4389
|
-
import * as
|
|
4390
|
-
var UpToDate =
|
|
4391
|
-
var Conflict =
|
|
4392
|
-
status:
|
|
4393
|
-
files:
|
|
4394
|
-
reason:
|
|
4439
|
+
import * as Schema31 from "effect/Schema";
|
|
4440
|
+
var UpToDate = Schema31.Struct({ status: Schema31.Literal("up_to_date") });
|
|
4441
|
+
var Conflict = Schema31.Struct({
|
|
4442
|
+
status: Schema31.Literal("conflict"),
|
|
4443
|
+
files: Schema31.NonEmptyArray(Schema31.String),
|
|
4444
|
+
reason: Schema31.String
|
|
4395
4445
|
});
|
|
4396
4446
|
var merged = {
|
|
4397
|
-
status:
|
|
4398
|
-
settled:
|
|
4447
|
+
status: Schema31.Literal("merged"),
|
|
4448
|
+
settled: Schema31.Array(Schema31.String)
|
|
4399
4449
|
};
|
|
4400
|
-
var SyncAnswer =
|
|
4401
|
-
var BaseSync2 =
|
|
4450
|
+
var SyncAnswer = Schema31.Union([UpToDate, Schema31.Struct(merged), Conflict]);
|
|
4451
|
+
var BaseSync2 = Schema31.Union([
|
|
4402
4452
|
UpToDate,
|
|
4403
|
-
|
|
4453
|
+
Schema31.Struct({ ...merged, catchUp: Schema31.optionalKey(CatchUp) }),
|
|
4404
4454
|
Conflict
|
|
4405
4455
|
]);
|
|
4406
4456
|
var afterMerge = "One thing comes before any answer of merged, a clean merge included, and stopping above means stopping after it: before you answer merged, do what the repository's agent instructions say to do once the target branch is merged in, such as regenerating this branch's database migrations on top of the target's. Leave what that changes in the workspace: Kitman commits it.";
|
|
@@ -4421,17 +4471,17 @@ var syncBase2 = (name, options) => agentWorkAs2(syncDeferred2, name, {
|
|
|
4421
4471
|
mergeTarget: options.target ?? "HEAD"
|
|
4422
4472
|
});
|
|
4423
4473
|
// packages/sdk/src/loop/continuing.ts
|
|
4424
|
-
import * as
|
|
4425
|
-
var Continuing2 =
|
|
4426
|
-
changeRequestId:
|
|
4427
|
-
number:
|
|
4428
|
-
url:
|
|
4429
|
-
branch:
|
|
4430
|
-
targetBranch:
|
|
4431
|
-
revision:
|
|
4432
|
-
lastRunId:
|
|
4433
|
-
lastRunStatus:
|
|
4434
|
-
lastRunSummary:
|
|
4474
|
+
import * as Schema32 from "effect/Schema";
|
|
4475
|
+
var Continuing2 = Schema32.Struct({
|
|
4476
|
+
changeRequestId: Schema32.String,
|
|
4477
|
+
number: Schema32.String,
|
|
4478
|
+
url: Schema32.String,
|
|
4479
|
+
branch: Schema32.String,
|
|
4480
|
+
targetBranch: Schema32.String,
|
|
4481
|
+
revision: Schema32.optional(Schema32.String),
|
|
4482
|
+
lastRunId: Schema32.optional(Schema32.String),
|
|
4483
|
+
lastRunStatus: Schema32.optional(Schema32.String),
|
|
4484
|
+
lastRunSummary: Schema32.optional(Schema32.String)
|
|
4435
4485
|
});
|
|
4436
4486
|
var continuingBrief2 = (continuing) => [
|
|
4437
4487
|
`This continues the work on ${continuing.branch}, whose ChangeRequest is ${continuing.url}. Build on what is there; do not start over.`,
|
|
@@ -4444,4 +4494,4 @@ var continuingBrief2 = (continuing) => [
|
|
|
4444
4494
|
"The ChangeRequest's description lists what was left unsettled; settle those first."
|
|
4445
4495
|
].join(`
|
|
4446
4496
|
`);
|
|
4447
|
-
export { Numeric, isWholeNumber, guard, Id, Timestamp, canonicalJson, KitDigest, LoopCapabilities2, LoopManifest, AgentDeclaration, KitDeclarations, LoopOutcome2, capabilitiesOf2, defineLoop2, ManifestInvalid2, jsonSchemaOf2, loopManifest2, questionAdvice, EvidenceCheck2, VerifyResult2, OutcomeTable2, failsOn2, evidenceGate2, StepFailed2, OutputInvalid2, QuestionRefused2, WaitTimedOut2, ChangeRequestClosed2, ChildFailed2, CapabilityDenied2, DuplicateStep2, InputInvalid2, LoopEvent2, LoopRun2, LoopHost2, agentDeferredNamed2, agentWorkDeferred2, syncDeferred2, answerDeferred2, childDeferred2, eventDeferred2, verifyDeferred2, takeStep2, launch2, agentWork2, agentWorkAs2, agentWorkOnce2, ask2, call2, waitFor2, verify2, suggestVerification2, PlanTicket2, PlanTickets2, BlockingCycle2, planWaves2, ChangeRequestRequest2, ChangeRequestResult2, WriteBackMilestones2, WriteBackRequest2, RunFile2, FileRequest2, ArtifactRequest2, ArtifactResult2, NoteRequest2, CreateTasksRequest2, CreateTasksResult2, AlertTaskRequest2, AlertTaskResult2, IntegrationBranchRequest2, IntegrationBranch2, MergeChangeRequestRequest2, MergeResult2, ApproveChangeRequestRequest2, ApproveChangeRequestResult2, CloseChangeRequestRequest2, CloseChangeRequestResult2, RerunPipelineRequest2, RerunPipelineResult2, ReportPipelineRequest2, ReportPipelineResult2, CommentRequest2, ReleaseRequest2, ReleaseResult2, ChangeRequestReadRequest2, PipelineJob2, PipelineStatus2, ReviewThread2, ReviewThreads2, OpenChangeRequestsRequest2, OpenChangeRequest2, OpenChangeRequests2, OwnChangeRequest2, OwnChangeRequests2, TranscriptPoint2, TranscriptsRequest2, TranscriptsResult2, ProposeRequest2, ProposeResult2, ProjectActivityRequest2, ProjectActivityResult2, DraftUpdateRequest2, DraftUpdateResult2, ChangeRequestActivity2, WriteBackActivity2, ArtifactActivity2, FileActivity2, NoteActivity2, CommentActivity2, CreateTasksActivity2, AlertTaskActivity2, IntegrationBranchActivity2, MergeChangeRequestActivity2, ReleaseActivity2, TranscriptsActivity2, ProposeActivity2, ProjectActivityActivity2, DraftUpdateActivity2, ChangeRequestReadActivity2, changeRequest2, writeBack2, artifact2, file2, note2, comment2, createTasks2, alertTask2, integrationBranch2, mergeChangeRequest2, approveChangeRequest2, closeChangeRequest2, pipelineMoved2, rerunPipeline2, reportPipeline2, release2, transcripts2, propose2, projectActivity2, pipelineStatus2, reviewThreads2, openChangeRequests2, ownChangeRequests2, draftUpdate2, ResourceName, ClaimResult2, claimDeferred2, letGoDeferred2, claim2, letGo2, WorkUnitRepoBinding, ProgramWorkUnit, CheckName2, ApprovedCheck, MeasurePlan2, WorkUnitClaimResult, WorkUnitClaimInput, WorkUnitHeartbeatInput, WorkUnitHeartbeatResult, WorkUnitReleaseInput, WorkUnitCompletion, MetricStats2, MeasureVerdict2, Measurement2, measureDeferred2, noiseFloor2, judgeMeasurement2, measure2, LoopJournal2, ScriptedFailure2, scriptedFailure2, loopWorkflow2, executeLoop2, testLoop2, Severity2, Finding2, MergedFinding2, Rebuttal2, RebuttalVerdict2, ScopeJudgement2, isBlocking2, mergeFindings2, splitDisputed2, settleRound2, rallyStop2, CheckFailed2, StepNamedTwice2, ReplayDiverged2, LoopCheckError2, checkLoop2, defineKit2, BaseSync2, syncBase2, Continuing2, continuingBrief2 };
|
|
4497
|
+
export { Numeric, isWholeNumber, guard, Id, Timestamp, canonicalJson, KitDigest, LoopCapabilities2, LoopManifest, AgentDeclaration, KitDeclarations, LoopOutcome2, capabilitiesOf2, defineLoop2, ManifestInvalid2, jsonSchemaOf2, loopManifest2, questionAdvice, EvidenceCheck2, VerifyResult2, OutcomeTable2, failsOn2, testsNotRunReasons2, evidenceGate2, StepFailed2, OutputInvalid2, QuestionRefused2, WaitTimedOut2, ChangeRequestClosed2, ChildFailed2, CapabilityDenied2, DuplicateStep2, InputInvalid2, LoopEvent2, LoopRun2, LoopHost2, agentDeferredNamed2, agentWorkDeferred2, syncDeferred2, answerDeferred2, childDeferred2, eventDeferred2, verifyDeferred2, takeStep2, launch2, agentWork2, agentWorkAs2, agentWorkOnce2, ask2, call2, waitFor2, verify2, suggestVerification2, PlanTicket2, PlanTickets2, BlockingCycle2, planWaves2, ChangeRequestRequest2, ChangeRequestResult2, WriteBackMilestones2, WriteBackRequest2, RunFile2, FileRequest2, ArtifactRequest2, ArtifactResult2, NoteRequest2, CreateTasksRequest2, CreateTasksResult2, AlertTaskRequest2, AlertTaskResult2, IntegrationBranchRequest2, IntegrationBranch2, MergeChangeRequestRequest2, MergeResult2, ApproveChangeRequestRequest2, ApproveChangeRequestResult2, CloseChangeRequestRequest2, CloseChangeRequestResult2, RerunPipelineRequest2, RerunPipelineResult2, ReportPipelineRequest2, ReportPipelineResult2, CommentRequest2, ReleaseRequest2, ReleaseResult2, ChangeRequestReadRequest2, PipelineJob2, PipelineStatus2, ReviewThread2, ReviewThreads2, OpenChangeRequestsRequest2, OpenChangeRequest2, OpenChangeRequests2, OwnChangeRequest2, OwnChangeRequests2, TranscriptPoint2, TranscriptsRequest2, TranscriptsResult2, ProposeRequest2, ProposeResult2, ProjectActivityRequest2, ProjectActivityResult2, DraftUpdateRequest2, DraftUpdateResult2, ChangeRequestActivity2, WriteBackActivity2, ArtifactActivity2, FileActivity2, NoteActivity2, CommentActivity2, CreateTasksActivity2, AlertTaskActivity2, IntegrationBranchActivity2, MergeChangeRequestActivity2, ReleaseActivity2, TranscriptsActivity2, ProposeActivity2, ProjectActivityActivity2, DraftUpdateActivity2, ChangeRequestReadActivity2, changeRequest2, writeBack2, artifact2, file2, note2, comment2, createTasks2, alertTask2, integrationBranch2, mergeChangeRequest2, approveChangeRequest2, closeChangeRequest2, pipelineMoved2, rerunPipeline2, reportPipeline2, release2, transcripts2, propose2, projectActivity2, pipelineStatus2, reviewThreads2, openChangeRequests2, ownChangeRequests2, draftUpdate2, ResourceName, ClaimResult2, claimDeferred2, letGoDeferred2, claim2, letGo2, WorkUnitRepoBinding, ProgramWorkUnit, CheckName2, ApprovedCheck, MeasurePlan2, WorkUnitClaimResult, WorkUnitClaimInput, WorkUnitHeartbeatInput, WorkUnitHeartbeatResult, WorkUnitReleaseInput, WorkUnitCompletion, MetricStats2, MeasureVerdict2, Measurement2, measureDeferred2, noiseFloor2, judgeMeasurement2, measure2, LoopJournal2, ScriptedFailure2, scriptedFailure2, loopWorkflow2, executeLoop2, testLoop2, Severity2, Finding2, MergedFinding2, Rebuttal2, RebuttalVerdict2, ScopeJudgement2, isBlocking2, mergeFindings2, splitDisputed2, settleRound2, rallyStop2, CheckFailed2, StepNamedTwice2, ReplayDiverged2, LoopCheckError2, checkLoop2, defineKit2, BaseSync2, syncBase2, Continuing2, continuingBrief2 };
|