@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.
@@ -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 Schema27 from "effect/Schema";
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 Schema25 from "effect/Schema";
3556
- import * as Struct23 from "effect/Struct";
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/secret.ts
3683
+ // packages/core/src/test-report.ts
3656
3684
  import * as Schema24 from "effect/Schema";
3657
- var SecretName2 = Schema24.String.check(Schema24.isPattern(new RegExp("^[A-Za-z_][A-Za-z0-9_]*$", "u")), Schema24.isMinLength(1), Schema24.isMaxLength(128));
3658
- var SecretScope = Schema24.Union([Schema24.Literal("workspace"), Schema24.Literal("team")]);
3659
- var SecretHost = Schema24.String.check(Schema24.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")), Schema24.isMaxLength(260));
3660
- var SecretHosts = Schema24.Array(SecretHost).check(Schema24.isMaxLength(32));
3661
- var SecretSummary = Schema24.Struct({
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: Schema24.optionalKey(Id),
3713
+ teamId: Schema25.optionalKey(Id),
3665
3714
  hosts: SecretHosts,
3666
3715
  setByActorType: ActorType,
3667
- setByActorId: Schema24.String,
3716
+ setByActorId: Schema25.String,
3668
3717
  setAt: Timestamp
3669
3718
  });
3670
- var SecretList = Schema24.Struct({ items: Schema24.Array(SecretSummary) });
3671
- var SecretSet = Schema24.Struct({
3672
- value: Schema24.String.check(Schema24.isMinLength(1), Schema24.isMaxLength(65536)),
3673
- teamId: Schema24.optionalKey(Schema24.String.check(Schema24.isMinLength(1))),
3674
- hosts: Schema24.optionalKey(SecretHosts)
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 = Schema24.Struct({ teamId: Schema24.optionalKey(Id) });
3725
+ var SecretScopeQuery = Schema25.Struct({ teamId: Schema25.optionalKey(Id) });
3677
3726
 
3678
3727
  // packages/core/src/work-unit.ts
3679
- var WorkUnitLease = Schema25.Struct({
3728
+ var WorkUnitLease = Schema26.Struct({
3680
3729
  leaseOwnerId: Id,
3681
3730
  runnerReplicaId: Id,
3682
3731
  leaseId: Id,
3683
- attempt: Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(1)),
3684
- fencingToken: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240), Schema25.isPattern(new RegExp("^[A-Za-z0-9._:-]+$", "u"))),
3685
- capacitySlot: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
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 = Schema25.Struct(Struct23.map(WorkUnitLease.fields, Schema25.optionalKey));
3690
- var WorkUnitRepoBinding = Schema25.Struct({
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: Schema25.String.check(Schema25.isMinLength(1)),
3694
- owner: Schema25.String.check(Schema25.isMinLength(1)),
3695
- name: Schema25.String.check(Schema25.isMinLength(1)),
3696
- repositoryUrl: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1))),
3697
- pathPrefix: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1))),
3698
- defaultTargetBranch: Schema25.String.check(Schema25.isMinLength(1)),
3699
- expectedBranch: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1))),
3700
- expectedCommitSha: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1)))
3701
- });
3702
- var WorkUnitLeaseInput = Schema25.Struct({
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: Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(1)),
3707
- fencingToken: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240), Schema25.isPattern(new RegExp("^[A-Za-z0-9._:-]+$", "u"))),
3708
- capacitySlot: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240))
3709
- });
3710
- var WorkUnitStatus = Schema25.Union([
3711
- Schema25.Literal("pending"),
3712
- Schema25.Literal("claimed"),
3713
- Schema25.Literal("running"),
3714
- Schema25.Literal("waiting"),
3715
- Schema25.Literal("blocked"),
3716
- Schema25.Literal("completed"),
3717
- Schema25.Literal("failed"),
3718
- Schema25.Literal("canceled"),
3719
- Schema25.Literal("expired")
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 = Schema25.Union([Schema25.Literal("none"), Schema25.Literal("read"), Schema25.Literal("write")]);
3722
- var StorageOrigin = Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(2048)));
3723
- var SecretDestination = Schema25.Struct({
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: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(128))
3775
+ version: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(128))
3727
3776
  });
3728
- var AgentStepWorkUnit = Schema25.Struct({
3729
- kind: Schema25.Literal("agent_step"),
3777
+ var AgentStepWorkUnit = Schema26.Struct({
3778
+ kind: Schema26.Literal("agent_step"),
3730
3779
  id: Id,
3731
- teamId: Schema25.optionalKey(Id),
3780
+ teamId: Schema26.optionalKey(Id),
3732
3781
  runId: Id,
3733
- stepKey: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
3734
- attempt: Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(1)),
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: Schema25.optionalKey(Timestamp),
3785
+ deadlineAt: Schema26.optionalKey(Timestamp),
3737
3786
  brief: StepBrief,
3738
- stepCredential: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(512)),
3787
+ stepCredential: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(512)),
3739
3788
  checkout: LoopCheckout,
3740
- repoBinding: Schema25.optionalKey(WorkUnitRepoBinding),
3741
- branch: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1))),
3742
- baseRevision: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1))),
3743
- network: Schema25.optionalKey(AgentSandboxNetwork),
3744
- hosts: Schema25.optionalKey(Schema25.Array(NetworkHost)),
3745
- sandbox: Schema25.optionalKey(Schema25.Literal("docker")),
3746
- secrets: Schema25.optionalKey(Schema25.Record(Schema25.String, Schema25.String)),
3747
- secretDestinations: Schema25.optionalKey(Schema25.Record(Schema25.String, SecretDestination)),
3748
- runBaseRevision: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1))),
3749
- mergeTarget: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1))),
3750
- resumeNotes: Schema25.optionalKey(Schema25.Array(Schema25.String)),
3751
- transcriptSequence: Schema25.optionalKey(Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(1))),
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 = Schema25.Struct({
3755
- activities: Schema25.Record(Schema25.String, Schema25.Unknown),
3756
- deferreds: Schema25.Record(Schema25.String, Schema25.Unknown)
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 = Schema25.Struct({
3759
- kind: Schema25.Literal("orchestration"),
3807
+ var OrchestrationWorkUnit = Schema26.Struct({
3808
+ kind: Schema26.Literal("orchestration"),
3760
3809
  id: Id,
3761
- teamId: Schema25.optionalKey(Id),
3810
+ teamId: Schema26.optionalKey(Id),
3762
3811
  runId: Id,
3763
- loopDigest: Schema25.String.check(Schema25.isMinLength(64), Schema25.isMaxLength(64), Schema25.isPattern(new RegExp("^[a-f0-9]{64}$", "u"))),
3764
- input: Schema25.Unknown,
3765
- granted: Schema25.Array(Schema25.String),
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: Schema25.optionalKey(AgentSandboxNetwork),
3817
+ network: Schema26.optionalKey(AgentSandboxNetwork),
3769
3818
  storageOrigin: StorageOrigin,
3770
- program: Schema25.Struct({
3771
- loopId: Schema25.String.check(Schema25.isMinLength(1)),
3772
- credential: Schema25.String.check(Schema25.isMinLength(1))
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(Struct23.omit(["program"]));
3776
- var CheckName2 = Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(120), Schema25.isPattern(new RegExp("^[A-Za-z0-9][A-Za-z0-9._:-]*$", "u")));
3777
- var ApprovedCheck = Schema25.Struct({
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: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(2000)),
3780
- workingDirectory: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(500))),
3781
- suggested: Schema25.optionalKey(Schema25.Boolean)
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 = Schema25.Struct({
3832
+ var RepositoryCheck = Schema26.Struct({
3784
3833
  ...ApprovedCheck.fields,
3785
- pipeline: Schema25.optionalKey(Schema25.Boolean)
3786
- });
3787
- var MetricName = Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(80), Schema25.isPattern(new RegExp("^[A-Za-z0-9][A-Za-z0-9._:-]*$", "u")));
3788
- var MeasurePlan2 = Schema25.Struct({
3789
- command: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(2000)),
3790
- prepare: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(2000))),
3791
- workingDirectory: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(500))),
3792
- warmup: Schema25.optionalKey(Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(0), Schema25.isLessThanOrEqualTo(10))),
3793
- metrics: Schema25.Array(Schema25.Struct({
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: Schema25.Literals(["lower", "higher"]),
3796
- role: Schema25.Literals(["primary", "guardrail"]),
3797
- lowVariance: Schema25.optionalKey(Schema25.Boolean)
3798
- })).check(Schema25.isMinLength(1), Schema25.isMaxLength(20))
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 = Schema25.Struct({
3801
- base: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
3849
+ var MeasureSpec = Schema26.Struct({
3850
+ base: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
3802
3851
  plan: MeasurePlan2,
3803
- samples: Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(1), Schema25.isLessThanOrEqualTo(50)),
3804
- calibrate: Schema25.Boolean
3852
+ samples: Schema26.Int.check(Schema26.isGreaterThanOrEqualTo(1), Schema26.isLessThanOrEqualTo(50)),
3853
+ calibrate: Schema26.Boolean
3805
3854
  });
3806
- var MeasureSample = Schema25.Record(MetricName, Schema25.Finite);
3807
- var MeasureSamples = Schema25.Array(MeasureSample).check(Schema25.isMaxLength(50));
3808
- var MeasureEvidence = Schema25.Struct({
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: Schema25.optionalKey(MeasureSamples)
3860
+ baseAgain: Schema26.optionalKey(MeasureSamples)
3812
3861
  });
3813
- var VerificationWorkUnit = Schema25.Struct({
3814
- kind: Schema25.Literal("verification"),
3862
+ var VerificationWorkUnit = Schema26.Struct({
3863
+ kind: Schema26.Literal("verification"),
3815
3864
  id: Id,
3816
- teamId: Schema25.optionalKey(Id),
3865
+ teamId: Schema26.optionalKey(Id),
3817
3866
  runId: Id,
3818
- stepKey: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
3867
+ stepKey: Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240)),
3819
3868
  lease: WorkUnitLease,
3820
3869
  repoBinding: WorkUnitRepoBinding,
3821
- revision: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
3822
- baseline: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(300))),
3823
- checks: Schema25.Array(RepositoryCheck).check(Schema25.isMaxLength(50)),
3824
- measure: Schema25.optionalKey(MeasureSpec),
3825
- hosts: Schema25.optionalKey(Schema25.Array(NetworkHost)),
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 = Schema25.Union([OrchestrationWorkUnit, AgentStepWorkUnit, VerificationWorkUnit]);
3829
- var WorkUnitClaimResult = Schema25.Struct({ workUnit: Schema25.optionalKey(WorkUnit) });
3830
- var WorkUnitClaimInput = Schema25.Struct({
3831
- teamId: Schema25.optionalKey(Id),
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: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
3834
- idempotencyKey: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
3835
- leaseDurationSeconds: Schema25.optionalKey(Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(1), Schema25.isLessThanOrEqualTo(3600)))
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 = Schema25.Struct({
3886
+ var WorkUnitHeartbeatInput = Schema26.Struct({
3838
3887
  workUnitId: Id,
3839
3888
  lease: WorkUnitLeaseInput,
3840
- leaseDurationSeconds: Schema25.optionalKey(Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(1), Schema25.isLessThanOrEqualTo(3600))),
3841
- secrets: Schema25.optionalKey(Schema25.Array(Schema25.Struct({ name: SecretName2, version: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(128)) })).check(Schema25.isMaxLength(256)))
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 = Schema25.Struct({
3844
- settled: Schema25.Boolean,
3845
- outputSubmitted: Schema25.optionalKey(Schema25.Boolean),
3846
- outputMerged: Schema25.optionalKey(Schema25.Boolean),
3847
- questionOpen: Schema25.optionalKey(Schema25.Boolean),
3848
- revokedSecrets: Schema25.optionalKey(Schema25.Array(SecretName2))
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 = Schema25.Struct({
3899
+ var WorkUnitReleaseInput = Schema26.Struct({
3851
3900
  workUnitId: Id,
3852
3901
  lease: WorkUnitLeaseInput,
3853
- crashed: Schema25.optionalKey(Schema25.Struct({ reason: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(500)) }))
3854
- });
3855
- var CheckEvidence = Schema25.Struct({
3856
- name: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(120)),
3857
- command: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(2000)),
3858
- status: Schema25.Union([Schema25.Literal("passed"), Schema25.Literal("failed")]),
3859
- exitCode: Schema25.optionalKey(Schema25.Int),
3860
- durationMs: Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(0)),
3861
- outputTail: Schema25.String.check(Schema25.isMaxLength(8000)),
3862
- fileIds: Schema25.optionalKey(Schema25.Array(Schema25.String).check(Schema25.isMaxLength(51)))
3863
- });
3864
- var TreeEvidence = Schema25.Struct({
3865
- revision: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
3866
- tree: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(120)),
3867
- checks: Schema25.Array(CheckEvidence).check(Schema25.isMaxLength(50))
3868
- });
3869
- var VerificationEvidence = Schema25.Struct({
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: Schema25.optionalKey(TreeEvidence),
3872
- measurement: Schema25.optionalKey(MeasureEvidence)
3873
- });
3874
- var BoundaryChange = Schema25.Struct({
3875
- kind: Schema25.Literal("change"),
3876
- changedPaths: Schema25.Array(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(4096))).check(Schema25.isMaxLength(1000)),
3877
- omittedPaths: Schema25.Int.check(Schema25.isGreaterThanOrEqualTo(0)),
3878
- files: Schema25.Array(Schema25.Struct({
3879
- path: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(4096)),
3880
- excerpt: Schema25.String.check(Schema25.isMaxLength(250000)),
3881
- redacted: Schema25.Boolean,
3882
- truncated: Schema25.Boolean
3883
- })).check(Schema25.isMaxLength(20)),
3884
- truncated: Schema25.Boolean
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 = Schema25.Array(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(1000))).check(Schema25.isMaxLength(catchUpPathLimit));
3888
- var Revision = Schema25.String.check(Schema25.isPattern(/^[0-9a-f]{40,64}$/));
3889
- var CatchUp = Schema25.Struct({
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: Schema25.Boolean
3896
- });
3897
- var HarnessHold = Schema25.Struct({
3898
- reason: Schema25.Literals(HarnessHoldReasons),
3899
- until: Schema25.optionalKey(Timestamp),
3900
- scope: Schema25.optionalKey(Schema25.Literal("step"))
3901
- });
3902
- var StepRestart = Schema25.Struct({ reason: Schema25.Literal("login_revoked") });
3903
- var WorkUnitOutcome = Schema25.Struct({
3904
- status: Schema25.Union([
3905
- Schema25.Literal("completed"),
3906
- Schema25.Literal("failed"),
3907
- Schema25.Literal("blocked"),
3908
- Schema25.Literal("canceled")
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: Schema25.optionalKey(LoopStepOutput),
3911
- revision: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(120))),
3912
- evidence: Schema25.optionalKey(VerificationEvidence),
3913
- boundary: Schema25.optionalKey(BoundaryChange),
3914
- catchUp: Schema25.optionalKey(CatchUp),
3915
- harnessHold: Schema25.optionalKey(HarnessHold),
3916
- restart: Schema25.optionalKey(StepRestart),
3917
- failureSummary: Schema25.optionalKey(Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(4000)))
3918
- });
3919
- var WorkUnitCompletion = Schema25.Struct({
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: Schema25.String.check(Schema25.isMinLength(1), Schema25.isMaxLength(240)),
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 Schema26 from "effect/Schema";
3978
+ import * as Schema27 from "effect/Schema";
3929
3979
  import { DurableDeferred as DurableDeferred3 } from "effect/workflow";
3930
- var MetricStats2 = Schema26.Struct({
3931
- samples: Schema26.Finite,
3932
- median: Schema26.Finite,
3933
- mean: Schema26.Finite,
3934
- min: Schema26.Finite,
3935
- max: Schema26.Finite,
3936
- stdev: Schema26.Finite
3937
- });
3938
- var MeasureVerdict2 = Schema26.Literals(["gain", "no_gain", "guardrail_regressed", "too_noisy"]);
3939
- var Measurement2 = Schema26.Struct({
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: Schema26.String,
3942
- metrics: Schema26.Array(Schema26.Struct({
3943
- name: Schema26.String,
3944
- role: Schema26.Literals(["primary", "guardrail"]),
3945
- direction: Schema26.Literals(["lower", "higher"]),
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: Schema26.Finite,
3949
- noise: Schema26.Finite
3998
+ change: Schema27.Finite,
3999
+ noise: Schema27.Finite
3950
4000
  })),
3951
- suggestion: Schema26.optional(Schema26.String),
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 = Schema27.Struct({
4050
- activities: Schema27.Record(Schema27.String, Schema27.Json),
4051
- deferreds: Schema27.Record(Schema27.String, Schema27.Json)
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) => Schema27.Exit(Schema27.toCodecJson(deferred.successSchema), Schema27.toCodecJson(deferred.errorSchema), Schema27.toCodecJson(Schema27.Defect()));
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(Schema27.decodeEffect(Schema27.toCodecJson(activity.exitSchema))(recorded))
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(Schema27.encodeEffect(Schema27.toCodecJson(activity.exitSchema))(result.exit));
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(Schema27.decodeEffect(Schema27.toCodecJson(deferredExit(deferred)))(recorded)));
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(Schema27.encodeEffect(Schema27.toCodecJson(deferredExit(deferred)))(result.value));
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: Schema27.Json },
4243
+ payload: { input: Schema28.Json },
4194
4244
  idempotencyKey: () => loop.id,
4195
4245
  success: loop.output,
4196
- error: Schema27.declare((_error) => true)
4246
+ error: Schema28.declare((_error) => true)
4197
4247
  });
4198
4248
  var executeLoop2 = (loop, runtime) => ({ input }) => Effect8.gen(function* () {
4199
- const decoded = yield* Schema27.decodeEffect(Schema27.toCodecJson(loop.input))(input).pipe(Effect8.mapError((error) => new InputInvalid2({ loop: loop.id, message: error.message })));
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 Schema28 from "effect/Schema";
4248
- var Severity2 = Schema28.Literals(["blocker", "major", "minor"]);
4249
- var Finding2 = Schema28.Struct({
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: Schema28.String,
4252
- line: Schema28.Int,
4253
- detail: Schema28.String
4301
+ file: Schema29.String,
4302
+ line: Schema29.Int,
4303
+ detail: Schema29.String
4254
4304
  });
4255
- var MergedFinding2 = Schema28.Struct({
4256
- id: Schema28.String,
4305
+ var MergedFinding2 = Schema29.Struct({
4306
+ id: Schema29.String,
4257
4307
  ...Finding2.fields,
4258
- seats: Schema28.Array(Schema28.String)
4308
+ seats: Schema29.Array(Schema29.String)
4259
4309
  });
4260
- var Rebuttal2 = Schema28.Struct({ findingId: Schema28.String, reason: Schema28.String });
4261
- var RebuttalVerdict2 = Schema28.Struct({ findingId: Schema28.String, accepted: Schema28.Boolean });
4262
- var ScopeJudgement2 = Schema28.Struct({ met: Schema28.Boolean, unmet: Schema28.Array(Schema28.String) });
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 Schema29 from "effect/Schema";
4321
- class CheckFailed2 extends Schema29.TaggedError()("CheckFailed", {
4322
- loop: Schema29.String,
4323
- check: Schema29.String,
4324
- reason: Schema29.String
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 Schema29.TaggedError()("StepNamedTwice", {
4335
- loop: Schema29.String,
4336
- check: Schema29.String,
4337
- step: Schema29.String
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 Schema29.TaggedError()("ReplayDiverged", {
4348
- loop: Schema29.String,
4349
- check: Schema29.String,
4350
- first: Schema29.Array(Schema29.String),
4351
- replay: Schema29.Array(Schema29.String),
4352
- rerun: Schema29.Array(Schema29.String)
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 = Schema29.Union([CheckFailed2, StepNamedTwice2, ReplayDiverged2]);
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 Schema30 from "effect/Schema";
4390
- var UpToDate = Schema30.Struct({ status: Schema30.Literal("up_to_date") });
4391
- var Conflict = Schema30.Struct({
4392
- status: Schema30.Literal("conflict"),
4393
- files: Schema30.NonEmptyArray(Schema30.String),
4394
- reason: Schema30.String
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: Schema30.Literal("merged"),
4398
- settled: Schema30.Array(Schema30.String)
4447
+ status: Schema31.Literal("merged"),
4448
+ settled: Schema31.Array(Schema31.String)
4399
4449
  };
4400
- var SyncAnswer = Schema30.Union([UpToDate, Schema30.Struct(merged), Conflict]);
4401
- var BaseSync2 = Schema30.Union([
4450
+ var SyncAnswer = Schema31.Union([UpToDate, Schema31.Struct(merged), Conflict]);
4451
+ var BaseSync2 = Schema31.Union([
4402
4452
  UpToDate,
4403
- Schema30.Struct({ ...merged, catchUp: Schema30.optionalKey(CatchUp) }),
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 Schema31 from "effect/Schema";
4425
- var Continuing2 = Schema31.Struct({
4426
- changeRequestId: Schema31.String,
4427
- number: Schema31.String,
4428
- url: Schema31.String,
4429
- branch: Schema31.String,
4430
- targetBranch: Schema31.String,
4431
- revision: Schema31.optional(Schema31.String),
4432
- lastRunId: Schema31.optional(Schema31.String),
4433
- lastRunStatus: Schema31.optional(Schema31.String),
4434
- lastRunSummary: Schema31.optional(Schema31.String)
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 };