@kitman-sh/sdk 0.10.82 → 0.10.84

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.
Files changed (79) hide show
  1. package/dist/build/index.js +2 -2
  2. package/dist/{chunk-fc5r66fq.js → chunk-3pz068kn.js} +11 -5
  3. package/dist/{chunk-0f530caz.js → chunk-cqknxyv9.js} +88 -47
  4. package/dist/loop/index.js +7 -1
  5. package/dist/program/index.js +2 -2
  6. package/package.json +1 -1
  7. package/types/packages/core/src/a2a.d.ts +577 -0
  8. package/types/packages/core/src/agent-capabilities.d.ts +1434 -0
  9. package/types/packages/core/src/agent-launch-snapshot.d.ts +44 -0
  10. package/types/packages/core/src/approval-queue.d.ts +126 -0
  11. package/types/packages/core/src/audit.d.ts +52 -0
  12. package/types/packages/core/src/change-delivery.d.ts +39 -0
  13. package/types/packages/core/src/change-request-review.d.ts +361 -0
  14. package/types/packages/core/src/change-request.d.ts +288 -0
  15. package/types/packages/core/src/connection.d.ts +33 -0
  16. package/types/packages/core/src/context-feedback.d.ts +89 -0
  17. package/types/packages/core/src/data-lifecycle.d.ts +195 -0
  18. package/types/packages/core/src/decision.d.ts +48 -0
  19. package/types/packages/core/src/delivery-operation.d.ts +125 -0
  20. package/types/packages/core/src/delivery-policy.d.ts +174 -0
  21. package/types/packages/core/src/enterprise-forge.d.ts +19 -0
  22. package/types/packages/core/src/epic-delivery.d.ts +38 -0
  23. package/types/packages/core/src/external-effect.d.ts +313 -0
  24. package/types/packages/core/src/fix-flow.d.ts +149 -0
  25. package/types/packages/core/src/following.d.ts +59 -0
  26. package/types/packages/core/src/github-delivery-fixtures.d.ts +28 -0
  27. package/types/packages/core/src/github-delivery.d.ts +78 -0
  28. package/types/packages/core/src/gitlab-delivery-fixtures.d.ts +26 -0
  29. package/types/packages/core/src/gitlab-delivery.d.ts +76 -0
  30. package/types/packages/core/src/global-search.d.ts +42 -0
  31. package/types/packages/core/src/id.d.ts +1 -0
  32. package/types/packages/core/src/integration.d.ts +276 -0
  33. package/types/packages/core/src/intent.d.ts +260 -0
  34. package/types/packages/core/src/kit-install.d.ts +130 -0
  35. package/types/packages/core/src/live.d.ts +8231 -0
  36. package/types/packages/core/src/marketplace.d.ts +168 -0
  37. package/types/packages/core/src/me.d.ts +31 -0
  38. package/types/packages/core/src/memory.d.ts +93 -0
  39. package/types/packages/core/src/my-teams.d.ts +1599 -0
  40. package/types/packages/core/src/notification.d.ts +250 -0
  41. package/types/packages/core/src/observability.d.ts +175 -0
  42. package/types/packages/core/src/owner.d.ts +15 -0
  43. package/types/packages/core/src/personal-development-profile.d.ts +11 -0
  44. package/types/packages/core/src/platform-release.d.ts +60 -0
  45. package/types/packages/core/src/program-credential.d.ts +10 -0
  46. package/types/packages/core/src/provider-safe-text.d.ts +2 -0
  47. package/types/packages/core/src/push.d.ts +68 -0
  48. package/types/packages/core/src/run-display.d.ts +22 -0
  49. package/types/packages/core/src/run-file.d.ts +190 -0
  50. package/types/packages/core/src/run-graph.d.ts +67 -0
  51. package/types/packages/core/src/run-journal.d.ts +28 -0
  52. package/types/packages/core/src/run-launch.d.ts +82 -0
  53. package/types/packages/core/src/runner-eligibility.d.ts +62 -0
  54. package/types/packages/core/src/runner-routing.d.ts +11 -0
  55. package/types/packages/core/src/runner-trust.d.ts +67 -0
  56. package/types/packages/core/src/runner.d.ts +4076 -0
  57. package/types/packages/core/src/scope-directory.d.ts +100 -0
  58. package/types/packages/core/src/session.d.ts +90 -0
  59. package/types/packages/core/src/step-brief.d.ts +70 -0
  60. package/types/packages/core/src/storage.d.ts +49 -0
  61. package/types/packages/core/src/sync-kit.d.ts +595 -0
  62. package/types/packages/core/src/task-detail.d.ts +511 -0
  63. package/types/packages/core/src/task-execution-record.d.ts +620 -0
  64. package/types/packages/core/src/task-key.d.ts +9 -0
  65. package/types/packages/core/src/task.d.ts +588 -0
  66. package/types/packages/core/src/team-context.d.ts +43 -0
  67. package/types/packages/core/src/transcript.d.ts +250 -0
  68. package/types/packages/core/src/trust-panel.d.ts +27 -0
  69. package/types/packages/core/src/work-unit.d.ts +33 -1
  70. package/types/packages/core/src/workspace.d.ts +167 -0
  71. package/types/packages/live/src/rpc/runner-client.d.ts +15 -0
  72. package/types/packages/live/src/rpc/runner-group.d.ts +1699 -1670
  73. package/types/packages/sdk/src/loop/activities.d.ts +3 -0
  74. package/types/packages/sdk/src/loop/index.d.ts +1 -0
  75. package/types/packages/sdk/src/loop/resolve.d.ts +13 -0
  76. package/types/packages/sdk/src/loop/steps.d.ts +5 -0
  77. package/types/packages/sdk/src/loop/sync.d.ts +8 -1
  78. package/types/packages/sdk/src/loop/test-loop.d.ts +7 -0
  79. package/types/packages/sdk/src/program/engine.d.ts +2 -1
@@ -4,7 +4,7 @@ import {
4
4
  KitDigest,
5
5
  AgentDeclaration,
6
6
  KitDeclarations
7
- } from "../chunk-0f530caz.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-fc5r66fq.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-0f530caz.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,9 +4288,9 @@ 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,
@@ -4285,7 +4305,7 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
4285
4305
  const answer = script.answers?.[launch.step] ?? auto ?? (attended ? undefined : launch.default);
4286
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));
4287
4307
  },
4288
- admitChild: (launch) => Effect8.andThen(Effect8.sync(() => childLaunches.push({
4308
+ admitChild: (launch) => Effect9.andThen(Effect9.sync(() => childLaunches.push({
4289
4309
  step: launch.step,
4290
4310
  loop: launch.loop,
4291
4311
  input: launch.input,
@@ -4302,9 +4322,17 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
4302
4322
  });
4303
4323
  return resolve(eventDeferred2(launch.step), launch.token, event === undefined ? Exit3.fail(new WaitTimedOut2({ step: launch.step, event: launch.event })) : Exit3.succeed(event));
4304
4324
  },
4305
- 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 }))),
4306
4326
  startVerification: (launch) => {
4307
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
+ }
4308
4336
  if (launch.measure === undefined)
4309
4337
  verifyLaunches.push({
4310
4338
  step: launch.step,
@@ -4334,14 +4362,26 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
4334
4362
  }
4335
4363
  };
4336
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
+ };
4337
4377
  var loopWorkflow2 = (loop) => Workflow.make(`kitman-loop/${loop.id}`, {
4338
4378
  payload: { input: Schema28.Json },
4339
4379
  idempotencyKey: () => loop.id,
4340
4380
  success: loop.output,
4341
4381
  error: Schema28.declare((_error) => true)
4342
4382
  });
4343
- var executeLoop2 = (loop, runtime) => ({ input }) => Effect8.gen(function* () {
4344
- 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 })));
4345
4385
  const run = LoopRun2.of({
4346
4386
  loop: loop.id,
4347
4387
  agents: loop.agents,
@@ -4351,7 +4391,7 @@ var executeLoop2 = (loop, runtime) => ({ input }) => Effect8.gen(function* () {
4351
4391
  steps: []
4352
4392
  });
4353
4393
  runtime.onRun?.(run);
4354
- 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));
4355
4395
  });
4356
4396
  var testLoop2 = (loop, script) => {
4357
4397
  const journal = {
@@ -4372,7 +4412,7 @@ var testLoop2 = (loop, script) => {
4372
4412
  ...overrides[key]
4373
4413
  }));
4374
4414
  const workflow = loopWorkflow2(loop);
4375
- const execute = (payload) => Effect8.gen(function* () {
4415
+ const execute = (payload) => Effect9.gen(function* () {
4376
4416
  const engine = yield* WorkflowEngine.WorkflowEngine;
4377
4417
  return yield* executeLoop2(loop, {
4378
4418
  host: scriptedHost(script, engine, agentLaunches, childLaunches, waits, verifyLaunches),
@@ -4381,12 +4421,12 @@ var testLoop2 = (loop, script) => {
4381
4421
  onRun: (run) => {
4382
4422
  latestSteps = run.steps;
4383
4423
  }
4384
- })(payload).pipe(Effect8.provideService(WorkflowEngine.WorkflowEngine, journaled(engine, journal, ran)));
4424
+ })(payload).pipe(Effect9.provideService(WorkflowEngine.WorkflowEngine, journaled(engine, journal, ran)));
4385
4425
  });
4386
- return Effect8.gen(function* () {
4387
- 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 ?? {}))));
4388
4428
  return { result, steps: latestSteps, journal, activities: ran, agentLaunches, childLaunches, waits, verifyLaunches };
4389
- }).pipe(Effect8.provide(workflow.toLayer(execute).pipe(Layer.provideMerge(WorkflowEngine.layerMemory))));
4429
+ }).pipe(Effect9.provide(workflow.toLayer(execute).pipe(Layer.provideMerge(WorkflowEngine.layerMemory))));
4390
4430
  };
4391
4431
  // packages/sdk/src/loop/review.ts
4392
4432
  import * as Schema29 from "effect/Schema";
@@ -4459,7 +4499,7 @@ var rallyStop2 = (input) => {
4459
4499
  var sameIds = (left, right) => left.length === right.length && left.every((id) => right.includes(id));
4460
4500
  // packages/sdk/src/loop/check.ts
4461
4501
  import * as Cause2 from "effect/Cause";
4462
- import * as Effect9 from "effect/Effect";
4502
+ import * as Effect10 from "effect/Effect";
4463
4503
  import * as Exit5 from "effect/Exit";
4464
4504
  import * as Predicate3 from "effect/Predicate";
4465
4505
  import * as Schema30 from "effect/Schema";
@@ -4505,7 +4545,7 @@ class ReplayDiverged2 extends Schema30.TaggedError()("ReplayDiverged", {
4505
4545
  }
4506
4546
  }
4507
4547
  var LoopCheckError2 = Schema30.Union([CheckFailed2, StepNamedTwice2, ReplayDiverged2]);
4508
- var checkLoop2 = (loop, check) => Effect9.gen(function* () {
4548
+ var checkLoop2 = (loop, check) => Effect10.gen(function* () {
4509
4549
  const first = yield* testLoop2(loop, check.script);
4510
4550
  if (Exit5.isFailure(first.result)) {
4511
4551
  const error = Cause2.squash(first.result.cause);
@@ -4543,10 +4583,11 @@ var merged = {
4543
4583
  settled: Schema31.Array(Schema31.String)
4544
4584
  };
4545
4585
  var SyncAnswer = Schema31.Union([UpToDate, Schema31.Struct(merged), Conflict]);
4586
+ var reported = { base: Schema31.optionalKey(Schema31.String) };
4546
4587
  var BaseSync2 = Schema31.Union([
4547
- UpToDate,
4548
- Schema31.Struct({ ...merged, catchUp: Schema31.optionalKey(CatchUp) }),
4549
- Conflict
4588
+ Schema31.Struct({ ...UpToDate.fields, ...reported }),
4589
+ Schema31.Struct({ ...merged, catchUp: Schema31.optionalKey(CatchUp), ...reported }),
4590
+ Schema31.Struct({ ...Conflict.fields, ...reported })
4550
4591
  ]);
4551
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.";
4552
4593
  var prompt = (target) => [
@@ -4589,4 +4630,4 @@ var continuingBrief2 = (continuing) => [
4589
4630
  "The ChangeRequest's description lists what was left unsettled; settle those first."
4590
4631
  ].join(`
4591
4632
  `);
4592
- 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-0f530caz.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-0f530caz.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-fc5r66fq.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.82",
3
+ "version": "0.10.84",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "exports": {