@kitman-sh/sdk 0.10.81 → 0.10.83

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.
@@ -4,7 +4,7 @@ import {
4
4
  KitDigest,
5
5
  AgentDeclaration,
6
6
  KitDeclarations
7
- } from "../chunk-9ff7wyqt.js";
7
+ } from "../chunk-cqknxyv9.js";
8
8
  import {
9
9
  digestSha256,
10
10
  digestSha512,
@@ -13,7 +13,7 @@ import {
13
13
  RunnerRpcProtocolVersion,
14
14
  describeFlag2,
15
15
  Described2
16
- } from "../chunk-hrwq77a0.js";
16
+ } from "../chunk-3pz068kn.js";
17
17
 
18
18
  // packages/core/src/json.ts
19
19
  import * as Schema from "effect/Schema";
@@ -22,6 +22,7 @@ import {
22
22
  ProgramWorkUnit,
23
23
  ApprovedCheck,
24
24
  MeasurePlan2,
25
+ ResolveSpec,
25
26
  WorkUnitClaimResult,
26
27
  WorkUnitClaimInput,
27
28
  WorkUnitHeartbeatInput,
@@ -29,11 +30,12 @@ import {
29
30
  WorkUnitReleaseInput,
30
31
  WorkUnitCompletion,
31
32
  measureDeferred2,
33
+ resolveDeferred2,
32
34
  loopWorkflow2,
33
35
  executeLoop2,
34
36
  LoopCheckError2,
35
37
  checkLoop2
36
- } from "./chunk-9ff7wyqt.js";
38
+ } from "./chunk-cqknxyv9.js";
37
39
  // packages/core/src/agent-environment.ts
38
40
  import * as Schema from "effect/Schema";
39
41
  var AgentEnvironmentPolicy = Schema.Union([Schema.Literal("recommended"), Schema.Literal("required")]);
@@ -916,7 +918,8 @@ class RunnerCapabilityRpcs extends RpcGroup.make(Rpc.make("PutQuestion", {
916
918
  plan: MeasurePlan2,
917
919
  samples: Schema7.Int,
918
920
  calibrate: Schema7.Boolean
919
- }))
921
+ })),
922
+ resolve: Schema7.optionalKey(ResolveSpec)
920
923
  },
921
924
  success: Schema7.Struct({ verificationId: Schema7.String }),
922
925
  error: RunnerRpcError
@@ -1057,6 +1060,7 @@ class RunnerCapabilityRpcs extends RpcGroup.make(Rpc.make("PutQuestion", {
1057
1060
  runnerChecks: Schema7.optionalKey(Schema7.Array(Schema7.String)),
1058
1061
  approved: Schema7.optionalKey(Schema7.String),
1059
1062
  repository: Schema7.optionalKey(Schema7.String),
1063
+ targetBranch: Schema7.optionalKey(Schema7.String),
1060
1064
  conflicts: Schema7.optionalKey(Schema7.Boolean),
1061
1065
  needsRebase: Schema7.optionalKey(Schema7.Boolean),
1062
1066
  target: Schema7.optionalKey(Schema7.Struct({
@@ -1417,12 +1421,13 @@ var runnerHost = (capabilities) => ({
1417
1421
  })).pipe(Effect2.asVoid),
1418
1422
  startVerification: (launch) => requested2(launch.step, capabilities.startVerification({
1419
1423
  step: launch.step,
1420
- deferredName: (launch.measure === undefined ? verifyDeferred2 : measureDeferred2)(launch.step).name,
1424
+ deferredName: (launch.resolve !== undefined ? resolveDeferred2 : launch.measure === undefined ? verifyDeferred2 : measureDeferred2)(launch.step).name,
1421
1425
  ...launch.revision === undefined ? undefined : { revision: launch.revision },
1422
1426
  ...launch.checks === undefined ? undefined : { checks: launch.checks },
1423
1427
  ...launch.suggested === undefined ? undefined : { suggested: launch.suggested },
1424
1428
  ...launch.rerunFailed === undefined ? undefined : { rerunFailed: launch.rerunFailed },
1425
- ...launch.measure === undefined ? undefined : { measure: launch.measure }
1429
+ ...launch.measure === undefined ? undefined : { measure: launch.measure },
1430
+ ...launch.resolve === undefined ? undefined : { resolve: launch.resolve }
1426
1431
  })).pipe(Effect2.asVoid),
1427
1432
  startAgentWork: (launch) => requested2(launch.step, capabilities.startAgentStep({
1428
1433
  step: launch.step,
@@ -1648,7 +1653,8 @@ var rpcProgramPorts2 = (rpc, work) => {
1648
1653
  ...verification.checks === undefined ? undefined : { checks: [...verification.checks] },
1649
1654
  ...verification.suggested === undefined ? undefined : { suggested: [...verification.suggested] },
1650
1655
  ...verification.rerunFailed === undefined ? undefined : { rerunFailed: verification.rerunFailed },
1651
- ...verification.measure === undefined ? undefined : { measure: verification.measure }
1656
+ ...verification.measure === undefined ? undefined : { measure: verification.measure },
1657
+ ...verification.resolve === undefined ? undefined : { resolve: { revisions: [...verification.resolve.revisions] } }
1652
1658
  }),
1653
1659
  startAgentStep: ({ secrets, ...step }) => rpc.startAgentStep({ lease, ...step, ...secrets === undefined ? undefined : { secrets: [...secrets] } }),
1654
1660
  awaitEvent: (wait) => rpc.awaitEvent({ lease, ...wait }),
@@ -3379,6 +3379,7 @@ var PipelineStatus2 = Schema20.Struct({
3379
3379
  runnerChecks: Schema20.optionalKey(Schema20.Array(Schema20.String)),
3380
3380
  approved: Schema20.optionalKey(Schema20.String),
3381
3381
  repository: Schema20.optionalKey(Schema20.String),
3382
+ targetBranch: Schema20.optionalKey(Schema20.String),
3382
3383
  conflicts: Schema20.optionalKey(Schema20.Boolean),
3383
3384
  needsRebase: Schema20.optionalKey(Schema20.Boolean),
3384
3385
  target: Schema20.optionalKey(Schema20.Struct({ branch: Schema20.String, head: Schema20.String, jobs: Schema20.Array(PipelineJob2) }))
@@ -3608,13 +3609,13 @@ var draftUpdate2 = (name, request) => hostActivity(name, "draft_update", "draft_
3608
3609
  import * as ConfigProvider from "effect/ConfigProvider";
3609
3610
  import * as Context3 from "effect/Context";
3610
3611
  import * as Data2 from "effect/Data";
3611
- import * as Effect8 from "effect/Effect";
3612
+ import * as Effect9 from "effect/Effect";
3612
3613
  import * as Exit3 from "effect/Exit";
3613
3614
  import * as Layer from "effect/Layer";
3614
3615
  import * as Option2 from "effect/Option";
3615
3616
  import * as Record12 from "effect/Record";
3616
3617
  import * as Schema28 from "effect/Schema";
3617
- import { DurableDeferred as DurableDeferred4, Workflow, WorkflowEngine } from "effect/workflow";
3618
+ import { DurableDeferred as DurableDeferred5, Workflow, WorkflowEngine } from "effect/workflow";
3618
3619
 
3619
3620
  // packages/core/src/resource-claim.ts
3620
3621
  import * as Schema21 from "effect/Schema";
@@ -3946,6 +3947,12 @@ var MeasureEvidence = Schema26.Struct({
3946
3947
  head: MeasureSamples,
3947
3948
  baseAgain: Schema26.optionalKey(MeasureSamples)
3948
3949
  });
3950
+ var ResolveSpec = Schema26.Struct({
3951
+ revisions: Schema26.Array(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(240))).check(Schema26.isMinLength(1), Schema26.isMaxLength(10))
3952
+ });
3953
+ var ResolvedRevisions2 = Schema26.Struct({
3954
+ commits: Schema26.Array(Schema26.String.check(Schema26.isPattern(new RegExp("^[0-9a-f]{40}([0-9a-f]{24})?$", "u"))))
3955
+ });
3949
3956
  var VerificationWorkUnit = Schema26.Struct({
3950
3957
  kind: Schema26.Literal("verification"),
3951
3958
  id: Id,
@@ -3958,6 +3965,7 @@ var VerificationWorkUnit = Schema26.Struct({
3958
3965
  baseline: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(300))),
3959
3966
  checks: Schema26.Array(RepositoryCheck).check(Schema26.isMaxLength(50)),
3960
3967
  measure: Schema26.optionalKey(MeasureSpec),
3968
+ resolve: Schema26.optionalKey(ResolveSpec),
3961
3969
  hosts: Schema26.optionalKey(Schema26.Array(NetworkHost)),
3962
3970
  storageOrigin: StorageOrigin
3963
3971
  });
@@ -4006,7 +4014,8 @@ var TreeEvidence = Schema26.Struct({
4006
4014
  var VerificationEvidence = Schema26.Struct({
4007
4015
  head: TreeEvidence,
4008
4016
  baseline: Schema26.optionalKey(TreeEvidence),
4009
- measurement: Schema26.optionalKey(MeasureEvidence)
4017
+ measurement: Schema26.optionalKey(MeasureEvidence),
4018
+ resolved: Schema26.optionalKey(ResolvedRevisions2)
4010
4019
  });
4011
4020
  var BoundaryChange = Schema26.Struct({
4012
4021
  kind: Schema26.Literal("change"),
@@ -4049,6 +4058,7 @@ var WorkUnitOutcome = Schema26.Struct({
4049
4058
  evidence: Schema26.optionalKey(VerificationEvidence),
4050
4059
  boundary: Schema26.optionalKey(BoundaryChange),
4051
4060
  catchUp: Schema26.optionalKey(CatchUp),
4061
+ syncedTarget: Schema26.optionalKey(Revision),
4052
4062
  harnessHold: Schema26.optionalKey(HarnessHold),
4053
4063
  restart: Schema26.optionalKey(StepRestart),
4054
4064
  failureSummary: Schema26.optionalKey(Schema26.String.check(Schema26.isMinLength(1), Schema26.isMaxLength(4000)))
@@ -4182,6 +4192,16 @@ var measure2 = (name, request) => takeStep2(name, "measure", "measure", Effect7.
4182
4192
  });
4183
4193
  }));
4184
4194
 
4195
+ // packages/sdk/src/loop/resolve.ts
4196
+ import * as Effect8 from "effect/Effect";
4197
+ import { DurableDeferred as DurableDeferred4 } from "effect/workflow";
4198
+ var resolveDeferred2 = (step) => DurableDeferred4.make(`resolve/${step}`, { success: ResolvedRevisions2, error: StepFailed2 });
4199
+ var resolveRevisions2 = (name, revisions) => takeStep2(name, "verify", "verify", Effect8.gen(function* () {
4200
+ const deferred = resolveDeferred2(name);
4201
+ yield* launch2(deferred, (host, token) => host.startVerification({ step: name, resolve: { revisions }, token }));
4202
+ return (yield* DurableDeferred4.await(deferred)).commits;
4203
+ }));
4204
+
4185
4205
  // packages/sdk/src/loop/test-loop.ts
4186
4206
  var LoopJournal2 = Schema28.Struct({
4187
4207
  activities: Schema28.Record(Schema28.String, Schema28.Json),
@@ -4193,56 +4213,56 @@ class ScriptedFailure2 extends Data2.TaggedClass("ScriptedFailure") {
4193
4213
  var scriptedFailure2 = (reason) => new ScriptedFailure2({ reason });
4194
4214
  var defaultActivities = {
4195
4215
  changeRequest: {
4196
- run: () => Effect8.succeed({ id: "change-request-1", number: "1", url: "test://change-requests/1" })
4216
+ run: () => Effect9.succeed({ id: "change-request-1", number: "1", url: "test://change-requests/1" })
4197
4217
  },
4198
- writeBack: { run: () => Effect8.void },
4199
- artifact: { run: (request) => Effect8.succeed({ artifactId: request.title }) },
4200
- file: { run: (_request, step) => Effect8.succeed({ id: `file-${step}` }) },
4201
- note: { run: () => Effect8.void },
4202
- comment: { run: () => Effect8.void },
4218
+ writeBack: { run: () => Effect9.void },
4219
+ artifact: { run: (request) => Effect9.succeed({ artifactId: request.title }) },
4220
+ file: { run: (_request, step) => Effect9.succeed({ id: `file-${step}` }) },
4221
+ note: { run: () => Effect9.void },
4222
+ comment: { run: () => Effect9.void },
4203
4223
  createTasks: {
4204
- run: (request) => Effect8.succeed({ tasks: request.tickets.map((ticket) => ({ key: ticket.key, taskId: `task-${ticket.key}` })) })
4224
+ run: (request) => Effect9.succeed({ tasks: request.tickets.map((ticket) => ({ key: ticket.key, taskId: `task-${ticket.key}` })) })
4205
4225
  },
4206
- alertTask: { run: () => Effect8.succeed({ taskId: "task-alert", created: true }) },
4226
+ alertTask: { run: () => Effect9.succeed({ taskId: "task-alert", created: true }) },
4207
4227
  integrationBranch: {
4208
- run: (request) => Effect8.succeed({
4228
+ run: (request) => Effect9.succeed({
4209
4229
  repoBindingId: request.repoBindingId ?? "repo",
4210
4230
  branch: "kitman/run/integration",
4211
4231
  revision: "integration-head"
4212
4232
  })
4213
4233
  },
4214
4234
  mergeChangeRequest: {
4215
- run: (request) => Effect8.succeed({ status: "merged", revision: `merged-${request.changeRequestId}` }),
4216
- close: () => Effect8.succeed({ closed: true }),
4217
- rerun: () => Effect8.succeed({ head: "head", pipelines: 1 }),
4218
- report: () => Effect8.succeed({ head: "head", status: "success" }),
4219
- approve: (request) => Effect8.succeed({ approved: true, reviewId: `review-${request.changeRequestId}` })
4235
+ run: (request) => Effect9.succeed({ status: "merged", revision: `merged-${request.changeRequestId}` }),
4236
+ close: () => Effect9.succeed({ closed: true }),
4237
+ rerun: () => Effect9.succeed({ head: "head", pipelines: 1 }),
4238
+ report: () => Effect9.succeed({ head: "head", status: "success" }),
4239
+ approve: (request) => Effect9.succeed({ approved: true, reviewId: `review-${request.changeRequestId}` })
4220
4240
  },
4221
4241
  release: {
4222
- run: (request) => Effect8.succeed({
4242
+ run: (request) => Effect9.succeed({
4223
4243
  tag: request.tag,
4224
4244
  revision: request.revision ?? "base-head",
4225
4245
  url: `test://releases/${request.tag}`
4226
4246
  })
4227
4247
  },
4228
- transcripts: { run: () => Effect8.succeed({ runs: [] }) },
4248
+ transcripts: { run: () => Effect9.succeed({ runs: [] }) },
4229
4249
  changeRequestRead: {
4230
- pipeline: () => Effect8.succeed({ head: "head", status: "success", source: "forge", jobs: [] }),
4231
- reviewThreads: () => Effect8.succeed({ threads: [] }),
4232
- opened: () => Effect8.succeed({ changeRequests: [] }),
4233
- own: () => Effect8.succeed({ changeRequests: [] })
4250
+ pipeline: () => Effect9.succeed({ head: "head", status: "success", source: "forge", jobs: [], targetBranch: "main" }),
4251
+ reviewThreads: () => Effect9.succeed({ threads: [] }),
4252
+ opened: () => Effect9.succeed({ changeRequests: [] }),
4253
+ own: () => Effect9.succeed({ changeRequests: [] })
4234
4254
  },
4235
- propose: { run: (request, step) => Effect8.succeed({ kind: request.kind, id: `${request.kind}-${step}` }) },
4255
+ propose: { run: (request, step) => Effect9.succeed({ kind: request.kind, id: `${request.kind}-${step}` }) },
4236
4256
  projectActivity: {
4237
- run: (request) => Effect8.succeed({ project: { id: request.projectId, name: request.projectId }, runs: [], taskChanges: [] })
4257
+ run: (request) => Effect9.succeed({ project: { id: request.projectId, name: request.projectId }, runs: [], taskChanges: [] })
4238
4258
  },
4239
- draftUpdate: { run: (_, step) => Effect8.succeed({ id: `draft-${step}` }) }
4259
+ draftUpdate: { run: (_, step) => Effect9.succeed({ id: `draft-${step}` }) }
4240
4260
  };
4241
- var withoutServices = (effect) => Effect8.orDie(Effect8.provide(effect, Context3.empty()));
4261
+ var withoutServices = (effect) => Effect9.orDie(Effect9.provide(effect, Context3.empty()));
4242
4262
  var deferredExit = (deferred) => Schema28.Exit(Schema28.toCodecJson(deferred.successSchema), Schema28.toCodecJson(deferred.errorSchema), Schema28.toCodecJson(Schema28.Defect()));
4243
4263
  var journaled = (engine, journal, ran) => ({
4244
4264
  ...engine,
4245
- activityExecute: (activity, attempt) => Effect8.gen(function* () {
4265
+ activityExecute: (activity, attempt) => Effect9.gen(function* () {
4246
4266
  const key = `${activity.name}/${attempt}`;
4247
4267
  const recorded = journal.activities[key];
4248
4268
  if (recorded !== undefined)
@@ -4256,7 +4276,7 @@ var journaled = (engine, journal, ran) => ({
4256
4276
  }
4257
4277
  return result;
4258
4278
  }),
4259
- deferredResult: (deferred) => Effect8.gen(function* () {
4279
+ deferredResult: (deferred) => Effect9.gen(function* () {
4260
4280
  const recorded = journal.deferreds[deferred.name];
4261
4281
  if (recorded !== undefined)
4262
4282
  return Option2.some(yield* withoutServices(Schema28.decodeEffect(Schema28.toCodecJson(deferredExit(deferred)))(recorded)));
@@ -4268,12 +4288,13 @@ var journaled = (engine, journal, ran) => ({
4268
4288
  });
4269
4289
  var scriptedExit = (scripted, failure) => scripted === undefined ? Exit3.fail(failure("nothing was scripted for this Step")) : scripted instanceof ScriptedFailure2 ? Exit3.fail(failure(scripted.reason)) : Exit3.succeed(scripted);
4270
4290
  var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyLaunches) => {
4271
- const resolve = (deferred, token, exit) => DurableDeferred4.done(deferred, { token, exit }).pipe(Effect8.provideService(WorkflowEngine.WorkflowEngine, engine));
4291
+ const resolve = (deferred, token, exit) => DurableDeferred5.done(deferred, { token, exit }).pipe(Effect9.provideService(WorkflowEngine.WorkflowEngine, engine));
4272
4292
  return {
4273
- startAgentWork: (launch) => Effect8.andThen(Effect8.sync(() => agentLaunches.push({
4293
+ startAgentWork: (launch) => Effect9.andThen(Effect9.sync(() => agentLaunches.push({
4274
4294
  step: launch.step,
4275
4295
  agent: launch.agent,
4276
4296
  prompt: launch.prompt,
4297
+ output: launch.output,
4277
4298
  ...launch.skill === undefined ? undefined : { skill: launch.skill },
4278
4299
  ...launch.secrets === undefined ? undefined : { secrets: launch.secrets },
4279
4300
  ...launch.mergeTarget === undefined ? undefined : { mergeTarget: launch.mergeTarget }
@@ -4284,7 +4305,7 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
4284
4305
  const answer = script.answers?.[launch.step] ?? auto ?? (attended ? undefined : launch.default);
4285
4306
  return resolve(answerDeferred2(launch.step), launch.token, answer === undefined ? Exit3.fail(new StepFailed2({ step: launch.step, reason: "no answer was scripted" })) : Exit3.succeed(answer));
4286
4307
  },
4287
- admitChild: (launch) => Effect8.andThen(Effect8.sync(() => childLaunches.push({
4308
+ admitChild: (launch) => Effect9.andThen(Effect9.sync(() => childLaunches.push({
4288
4309
  step: launch.step,
4289
4310
  loop: launch.loop,
4290
4311
  input: launch.input,
@@ -4301,9 +4322,17 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
4301
4322
  });
4302
4323
  return resolve(eventDeferred2(launch.step), launch.token, event === undefined ? Exit3.fail(new WaitTimedOut2({ step: launch.step, event: launch.event })) : Exit3.succeed(event));
4303
4324
  },
4304
- 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 }))),
4325
+ claimResource: (launch) => Effect9.flatMap(script.claimed?.({ step: launch.step, resource: launch.resource, action: launch.action }) ?? Effect9.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 }))),
4305
4326
  startVerification: (launch) => {
4306
4327
  const scripted = script.verifications?.[launch.step];
4328
+ if (launch.resolve !== undefined) {
4329
+ const commits = launch.resolve.revisions.map((revision) => {
4330
+ const scriptedCommit = script.commits?.[revision];
4331
+ return scriptedCommit === undefined ? madeUpCommit(revision) : scriptedCommit;
4332
+ });
4333
+ const unnamed = launch.resolve.revisions.filter((_, index) => commits[index] === null);
4334
+ return resolve(resolveDeferred2(launch.step), launch.token, unnamed.length > 0 ? Exit3.fail(new StepFailed2({ step: launch.step, reason: `No commit named ${unnamed.join(", ")}` })) : Exit3.succeed({ commits: commits.filter((commit) => commit !== null) }));
4335
+ }
4307
4336
  if (launch.measure === undefined)
4308
4337
  verifyLaunches.push({
4309
4338
  step: launch.step,
@@ -4333,14 +4362,26 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
4333
4362
  }
4334
4363
  };
4335
4364
  };
4365
+ var fullSha = /^[0-9a-f]{40}$/u;
4366
+ var madeUpCommit = (revision) => {
4367
+ if (fullSha.test(revision))
4368
+ return revision;
4369
+ const word = (seed) => {
4370
+ let hash = seed;
4371
+ for (const char of revision)
4372
+ hash = Math.imul(hash ^ char.charCodeAt(0), 16777619) >>> 0;
4373
+ return hash.toString(16).padStart(8, "0");
4374
+ };
4375
+ return [2166136261, 16777619, 1540483477, 668265263, 374761393].map(word).join("");
4376
+ };
4336
4377
  var loopWorkflow2 = (loop) => Workflow.make(`kitman-loop/${loop.id}`, {
4337
4378
  payload: { input: Schema28.Json },
4338
4379
  idempotencyKey: () => loop.id,
4339
4380
  success: loop.output,
4340
4381
  error: Schema28.declare((_error) => true)
4341
4382
  });
4342
- var executeLoop2 = (loop, runtime) => ({ input }) => Effect8.gen(function* () {
4343
- const decoded = yield* Schema28.decodeEffect(Schema28.toCodecJson(loop.input))(input).pipe(Effect8.mapError((error) => new InputInvalid2({ loop: loop.id, message: error.message })));
4383
+ var executeLoop2 = (loop, runtime) => ({ input }) => Effect9.gen(function* () {
4384
+ const decoded = yield* Schema28.decodeEffect(Schema28.toCodecJson(loop.input))(input).pipe(Effect9.mapError((error) => new InputInvalid2({ loop: loop.id, message: error.message })));
4344
4385
  const run = LoopRun2.of({
4345
4386
  loop: loop.id,
4346
4387
  agents: loop.agents,
@@ -4350,7 +4391,7 @@ var executeLoop2 = (loop, runtime) => ({ input }) => Effect8.gen(function* () {
4350
4391
  steps: []
4351
4392
  });
4352
4393
  runtime.onRun?.(run);
4353
- return yield* loop.run(decoded).pipe(Effect8.provideService(LoopRun2, run), Effect8.provideService(LoopHost2, runtime.host), Effect8.provideService(ChangeRequestActivity2, runtime.activities.changeRequest), Effect8.provideService(WriteBackActivity2, runtime.activities.writeBack), Effect8.provideService(ArtifactActivity2, runtime.activities.artifact), Effect8.provideService(FileActivity2, runtime.activities.file), Effect8.provideService(NoteActivity2, runtime.activities.note), Effect8.provideService(CommentActivity2, runtime.activities.comment), Effect8.provideService(CreateTasksActivity2, runtime.activities.createTasks), Effect8.provideService(AlertTaskActivity2, runtime.activities.alertTask), Effect8.provideService(IntegrationBranchActivity2, runtime.activities.integrationBranch), Effect8.provideService(MergeChangeRequestActivity2, runtime.activities.mergeChangeRequest), Effect8.provideService(ReleaseActivity2, runtime.activities.release), Effect8.provideService(TranscriptsActivity2, runtime.activities.transcripts), Effect8.provideService(ChangeRequestReadActivity2, runtime.activities.changeRequestRead), Effect8.provideService(ProposeActivity2, runtime.activities.propose), Effect8.provideService(ProjectActivityActivity2, runtime.activities.projectActivity), Effect8.provideService(DraftUpdateActivity2, runtime.activities.draftUpdate));
4394
+ return yield* loop.run(decoded).pipe(Effect9.provideService(LoopRun2, run), Effect9.provideService(LoopHost2, runtime.host), Effect9.provideService(ChangeRequestActivity2, runtime.activities.changeRequest), Effect9.provideService(WriteBackActivity2, runtime.activities.writeBack), Effect9.provideService(ArtifactActivity2, runtime.activities.artifact), Effect9.provideService(FileActivity2, runtime.activities.file), Effect9.provideService(NoteActivity2, runtime.activities.note), Effect9.provideService(CommentActivity2, runtime.activities.comment), Effect9.provideService(CreateTasksActivity2, runtime.activities.createTasks), Effect9.provideService(AlertTaskActivity2, runtime.activities.alertTask), Effect9.provideService(IntegrationBranchActivity2, runtime.activities.integrationBranch), Effect9.provideService(MergeChangeRequestActivity2, runtime.activities.mergeChangeRequest), Effect9.provideService(ReleaseActivity2, runtime.activities.release), Effect9.provideService(TranscriptsActivity2, runtime.activities.transcripts), Effect9.provideService(ChangeRequestReadActivity2, runtime.activities.changeRequestRead), Effect9.provideService(ProposeActivity2, runtime.activities.propose), Effect9.provideService(ProjectActivityActivity2, runtime.activities.projectActivity), Effect9.provideService(DraftUpdateActivity2, runtime.activities.draftUpdate));
4354
4395
  });
4355
4396
  var testLoop2 = (loop, script) => {
4356
4397
  const journal = {
@@ -4371,7 +4412,7 @@ var testLoop2 = (loop, script) => {
4371
4412
  ...overrides[key]
4372
4413
  }));
4373
4414
  const workflow = loopWorkflow2(loop);
4374
- const execute = (payload) => Effect8.gen(function* () {
4415
+ const execute = (payload) => Effect9.gen(function* () {
4375
4416
  const engine = yield* WorkflowEngine.WorkflowEngine;
4376
4417
  return yield* executeLoop2(loop, {
4377
4418
  host: scriptedHost(script, engine, agentLaunches, childLaunches, waits, verifyLaunches),
@@ -4380,12 +4421,12 @@ var testLoop2 = (loop, script) => {
4380
4421
  onRun: (run) => {
4381
4422
  latestSteps = run.steps;
4382
4423
  }
4383
- })(payload).pipe(Effect8.provideService(WorkflowEngine.WorkflowEngine, journaled(engine, journal, ran)));
4424
+ })(payload).pipe(Effect9.provideService(WorkflowEngine.WorkflowEngine, journaled(engine, journal, ran)));
4384
4425
  });
4385
- return Effect8.gen(function* () {
4386
- const result = yield* Effect8.exit(workflow.execute({ input: script.input }).pipe(Effect8.provideService(ConfigProvider.ConfigProvider, ConfigProvider.fromUnknown(script.secrets ?? {}))));
4426
+ return Effect9.gen(function* () {
4427
+ const result = yield* Effect9.exit(workflow.execute({ input: script.input }).pipe(Effect9.provideService(ConfigProvider.ConfigProvider, ConfigProvider.fromUnknown(script.secrets ?? {}))));
4387
4428
  return { result, steps: latestSteps, journal, activities: ran, agentLaunches, childLaunches, waits, verifyLaunches };
4388
- }).pipe(Effect8.provide(workflow.toLayer(execute).pipe(Layer.provideMerge(WorkflowEngine.layerMemory))));
4429
+ }).pipe(Effect9.provide(workflow.toLayer(execute).pipe(Layer.provideMerge(WorkflowEngine.layerMemory))));
4389
4430
  };
4390
4431
  // packages/sdk/src/loop/review.ts
4391
4432
  import * as Schema29 from "effect/Schema";
@@ -4458,7 +4499,7 @@ var rallyStop2 = (input) => {
4458
4499
  var sameIds = (left, right) => left.length === right.length && left.every((id) => right.includes(id));
4459
4500
  // packages/sdk/src/loop/check.ts
4460
4501
  import * as Cause2 from "effect/Cause";
4461
- import * as Effect9 from "effect/Effect";
4502
+ import * as Effect10 from "effect/Effect";
4462
4503
  import * as Exit5 from "effect/Exit";
4463
4504
  import * as Predicate3 from "effect/Predicate";
4464
4505
  import * as Schema30 from "effect/Schema";
@@ -4504,7 +4545,7 @@ class ReplayDiverged2 extends Schema30.TaggedError()("ReplayDiverged", {
4504
4545
  }
4505
4546
  }
4506
4547
  var LoopCheckError2 = Schema30.Union([CheckFailed2, StepNamedTwice2, ReplayDiverged2]);
4507
- var checkLoop2 = (loop, check) => Effect9.gen(function* () {
4548
+ var checkLoop2 = (loop, check) => Effect10.gen(function* () {
4508
4549
  const first = yield* testLoop2(loop, check.script);
4509
4550
  if (Exit5.isFailure(first.result)) {
4510
4551
  const error = Cause2.squash(first.result.cause);
@@ -4542,10 +4583,11 @@ var merged = {
4542
4583
  settled: Schema31.Array(Schema31.String)
4543
4584
  };
4544
4585
  var SyncAnswer = Schema31.Union([UpToDate, Schema31.Struct(merged), Conflict]);
4586
+ var reported = { base: Schema31.optionalKey(Schema31.String) };
4545
4587
  var BaseSync2 = Schema31.Union([
4546
- UpToDate,
4547
- Schema31.Struct({ ...merged, catchUp: Schema31.optionalKey(CatchUp) }),
4548
- Conflict
4588
+ Schema31.Struct({ ...UpToDate.fields, ...reported }),
4589
+ Schema31.Struct({ ...merged, catchUp: Schema31.optionalKey(CatchUp), ...reported }),
4590
+ Schema31.Struct({ ...Conflict.fields, ...reported })
4549
4591
  ]);
4550
4592
  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.";
4551
4593
  var prompt = (target) => [
@@ -4588,4 +4630,4 @@ var continuingBrief2 = (continuing) => [
4588
4630
  "The ChangeRequest's description lists what was left unsettled; settle those first."
4589
4631
  ].join(`
4590
4632
  `);
4591
- export { Numeric, isWholeNumber, guard, Id, Timestamp, canonicalJson, KitDigest, unansweredQuestionReason2, isUnansweredQuestion2, 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 };
4633
+ export { Numeric, isWholeNumber, guard, Id, Timestamp, canonicalJson, KitDigest, unansweredQuestionReason2, isUnansweredQuestion2, 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, ResolveSpec, ResolvedRevisions2, WorkUnitClaimResult, WorkUnitClaimInput, WorkUnitHeartbeatInput, WorkUnitHeartbeatResult, WorkUnitReleaseInput, WorkUnitCompletion, MetricStats2, MeasureVerdict2, Measurement2, measureDeferred2, noiseFloor2, judgeMeasurement2, measure2, resolveDeferred2, resolveRevisions2, 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 };
@@ -142,6 +142,7 @@ import {
142
142
  letGo2,
143
143
  CheckName2,
144
144
  MeasurePlan2,
145
+ ResolvedRevisions2,
145
146
  MetricStats2,
146
147
  MeasureVerdict2,
147
148
  Measurement2,
@@ -149,6 +150,8 @@ import {
149
150
  noiseFloor2,
150
151
  judgeMeasurement2,
151
152
  measure2,
153
+ resolveDeferred2,
154
+ resolveRevisions2,
152
155
  LoopJournal2,
153
156
  ScriptedFailure2,
154
157
  scriptedFailure2,
@@ -176,7 +179,7 @@ import {
176
179
  syncBase2,
177
180
  Continuing2,
178
181
  continuingBrief2
179
- } from "../chunk-9ff7wyqt.js";
182
+ } from "../chunk-cqknxyv9.js";
180
183
  export {
181
184
  AlertTaskActivity2 as AlertTaskActivity,
182
185
  AlertTaskRequest2 as AlertTaskRequest,
@@ -265,6 +268,7 @@ export {
265
268
  ReportPipelineResult2 as ReportPipelineResult,
266
269
  RerunPipelineRequest2 as RerunPipelineRequest,
267
270
  RerunPipelineResult2 as RerunPipelineResult,
271
+ ResolvedRevisions2 as ResolvedRevisions,
268
272
  ReviewThread2 as ReviewThread,
269
273
  ReviewThreads2 as ReviewThreads,
270
274
  RunFile2 as RunFile,
@@ -338,6 +342,8 @@ export {
338
342
  release2 as release,
339
343
  reportPipeline2 as reportPipeline,
340
344
  rerunPipeline2 as rerunPipeline,
345
+ resolveDeferred2 as resolveDeferred,
346
+ resolveRevisions2 as resolveRevisions,
341
347
  reviewThreads2 as reviewThreads,
342
348
  scriptedFailure2 as scriptedFailure,
343
349
  settleRound2 as settleRound,
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import"../chunk-9ff7wyqt.js";
2
+ import"../chunk-cqknxyv9.js";
3
3
  import {
4
4
  JournalWriteFailed2,
5
5
  refusedStep2,
@@ -17,7 +17,7 @@ import {
17
17
  networkGuard2,
18
18
  carriedKits2,
19
19
  runKit2
20
- } from "../chunk-hrwq77a0.js";
20
+ } from "../chunk-3pz068kn.js";
21
21
  export {
22
22
  Described2 as Described,
23
23
  JournalWriteFailed2 as JournalWriteFailed,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitman-sh/sdk",
3
- "version": "0.10.81",
3
+ "version": "0.10.83",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "exports": {
@@ -150,6 +150,8 @@ export declare const RunnerCapabilities: Schema.Struct<{
150
150
  }>>;
151
151
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
152
152
  readonly measure: Schema.optionalKey<Schema.Boolean>;
153
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
154
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
153
155
  }>;
154
156
  export declare const Runner: Schema.Struct<{
155
157
  readonly id: Schema.String;
@@ -261,6 +263,8 @@ export declare const Runner: Schema.Struct<{
261
263
  }>>;
262
264
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
263
265
  readonly measure: Schema.optionalKey<Schema.Boolean>;
266
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
267
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
264
268
  }>;
265
269
  /** The owner's choice of default Harness; `capabilities.defaultHarness` is the one in effect. */
266
270
  readonly preferredHarness: Schema.optionalKey<Schema.Literals<readonly ["pi", "claude", "codex"]>>;
@@ -603,6 +607,8 @@ export declare const RunnerCreate: Schema.Struct<{
603
607
  }>>;
604
608
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
605
609
  readonly measure: Schema.optionalKey<Schema.Boolean>;
610
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
611
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
606
612
  }>>;
607
613
  readonly labels: Schema.optionalKey<Schema.$Array<Schema.String>>;
608
614
  }>;
@@ -720,6 +726,8 @@ export declare const RunnerRegistrationResult: Schema.Struct<{
720
726
  }>>;
721
727
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
722
728
  readonly measure: Schema.optionalKey<Schema.Boolean>;
729
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
730
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
723
731
  }>;
724
732
  /** The owner's choice of default Harness; `capabilities.defaultHarness` is the one in effect. */
725
733
  readonly preferredHarness: Schema.optionalKey<Schema.Literals<readonly ["pi", "claude", "codex"]>>;
@@ -833,6 +841,8 @@ export declare const RunnerHeartbeatInput: Schema.Struct<{
833
841
  }>>;
834
842
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
835
843
  readonly measure: Schema.optionalKey<Schema.Boolean>;
844
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
845
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
836
846
  }>>;
837
847
  readonly labels: Schema.optionalKey<Schema.$Array<Schema.String>>;
838
848
  }>;
@@ -912,6 +922,8 @@ export declare const RunnerCapabilitiesUpdate: Schema.Struct<{
912
922
  }>>;
913
923
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
914
924
  readonly measure: Schema.optionalKey<Schema.Boolean>;
925
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
926
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
915
927
  }>;
916
928
  readonly labels: Schema.optionalKey<Schema.$Array<Schema.String>>;
917
929
  }>;
@@ -1604,6 +1616,8 @@ export declare const RunnerOperationsOverview: Schema.Struct<{
1604
1616
  }>>;
1605
1617
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
1606
1618
  readonly measure: Schema.optionalKey<Schema.Boolean>;
1619
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
1620
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
1607
1621
  }>;
1608
1622
  /** The owner's choice of default Harness; `capabilities.defaultHarness` is the one in effect. */
1609
1623
  readonly preferredHarness: Schema.optionalKey<Schema.Literals<readonly ["pi", "claude", "codex"]>>;
@@ -1834,6 +1848,8 @@ export declare const RunnerOperationsLiveSnapshot: Schema.Struct<{
1834
1848
  }>>;
1835
1849
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
1836
1850
  readonly measure: Schema.optionalKey<Schema.Boolean>;
1851
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
1852
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
1837
1853
  }>;
1838
1854
  /** The owner's choice of default Harness; `capabilities.defaultHarness` is the one in effect. */
1839
1855
  readonly preferredHarness: Schema.optionalKey<Schema.Literals<readonly ["pi", "claude", "codex"]>>;
@@ -2635,6 +2651,8 @@ export declare const RunnerList: Schema.Struct<{
2635
2651
  }>>;
2636
2652
  /** It benchmarks a verification's measure; a Runner without it is offered none, as one from before measures was. */
2637
2653
  readonly measure: Schema.optionalKey<Schema.Boolean>;
2654
+ /** It resolves a verification's revisions to commits; a Runner without it is offered none. */
2655
+ readonly resolve: Schema.optionalKey<Schema.Boolean>;
2638
2656
  }>;
2639
2657
  /** The owner's choice of default Harness; `capabilities.defaultHarness` is the one in effect. */
2640
2658
  readonly preferredHarness: Schema.optionalKey<Schema.Literals<readonly ["pi", "claude", "codex"]>>;
@@ -48,8 +48,7 @@ export declare function programStepContext(input: {
48
48
  readonly steering?: readonly string[];
49
49
  }): string | undefined;
50
50
  /**
51
- * The skill the Step runs, then the program's prompt, then the Kitman tools every Step has: its trail for a retry,
52
- * asking, files and skills.
51
+ * The skill the Step runs, then the program's prompt, then the Kitman tools every Step has: asking, files and skills.
53
52
  */
54
53
  export declare const programStepInstruction: (prompt: string, options?: {
55
54
  readonly missingSkills?: readonly string[];