@kitman-sh/sdk 0.10.75 → 0.10.77

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-08qcgk73.js";
7
+ } from "../chunk-g7x3s4x6.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-epczfxnt.js";
16
+ } from "../chunk-3qttynnn.js";
17
17
 
18
18
  // packages/core/src/json.ts
19
19
  import * as Schema from "effect/Schema";
@@ -33,7 +33,7 @@ import {
33
33
  executeLoop2,
34
34
  LoopCheckError2,
35
35
  checkLoop2
36
- } from "./chunk-08qcgk73.js";
36
+ } from "./chunk-g7x3s4x6.js";
37
37
  // packages/core/src/agent-environment.ts
38
38
  import * as Schema from "effect/Schema";
39
39
  var AgentEnvironmentPolicy = Schema.Union([Schema.Literal("recommended"), Schema.Literal("required")]);
@@ -880,6 +880,7 @@ class RunnerCapabilityRpcs extends RpcGroup.make(Rpc.make("PutQuestion", {
880
880
  verification: Schema7.optional(SuggestedVerification),
881
881
  default: Schema7.optional(Schema7.String),
882
882
  auto: Schema7.optional(Schema7.String),
883
+ unattendedAuto: Schema7.optional(Schema7.String),
883
884
  timeoutMillis: Schema7.optional(Schema7.Finite),
884
885
  deferredName: Schema7.String
885
886
  },
@@ -950,6 +951,7 @@ class RunnerCapabilityRpcs extends RpcGroup.make(Rpc.make("PutQuestion", {
950
951
  step: Schema7.String,
951
952
  loop: Schema7.String,
952
953
  input: Schema7.Json,
954
+ constraints: Schema7.optional(Schema7.Array(Schema7.String)),
953
955
  deferredName: Schema7.String
954
956
  },
955
957
  success: Schema7.Struct({ runId: Schema7.String }),
@@ -971,7 +973,8 @@ class RunnerCapabilityRpcs extends RpcGroup.make(Rpc.make("PutQuestion", {
971
973
  lease: ProgramLease,
972
974
  step: Schema7.String,
973
975
  text: Schema7.String,
974
- artifactId: Schema7.optional(Schema7.String)
976
+ artifactId: Schema7.optional(Schema7.String),
977
+ kind: Schema7.optional(Schema7.Literals(["note", "blocker"]))
975
978
  },
976
979
  error: RunnerRpcError
977
980
  }), Rpc.make("PerformHostEffect", {
@@ -1407,6 +1410,7 @@ var runnerHost = (capabilities) => ({
1407
1410
  ...launch.verification === undefined ? undefined : { verification: launch.verification },
1408
1411
  ...launch.default === undefined ? undefined : { default: launch.default },
1409
1412
  ...launch.auto === undefined ? undefined : { auto: launch.auto },
1413
+ ...launch.unattendedAuto === undefined ? undefined : { unattendedAuto: launch.unattendedAuto },
1410
1414
  ...launch.timeoutMillis === undefined ? undefined : { timeoutMillis: launch.timeoutMillis }
1411
1415
  })).pipe(Effect2.asVoid),
1412
1416
  startVerification: (launch) => requested2(launch.step, capabilities.startVerification({
@@ -1434,6 +1438,7 @@ var runnerHost = (capabilities) => ({
1434
1438
  step: launch.step,
1435
1439
  loop: launch.loop,
1436
1440
  input: launch.input,
1441
+ ...launch.constraints === undefined ? undefined : { constraints: launch.constraints },
1437
1442
  deferredName: childDeferred2(launch.step).name
1438
1443
  })).pipe(Effect2.asVoid),
1439
1444
  claimResource: (launch) => requested2(launch.step, capabilities.claimResource({
@@ -1630,6 +1635,7 @@ var rpcProgramPorts2 = (rpc, work) => {
1630
1635
  ...question.verification === undefined ? undefined : { verification: question.verification },
1631
1636
  ...question.default === undefined ? undefined : { default: question.default },
1632
1637
  ...question.auto === undefined ? undefined : { auto: question.auto },
1638
+ ...question.unattendedAuto === undefined ? undefined : { unattendedAuto: question.unattendedAuto },
1633
1639
  ...question.timeoutMillis === undefined ? undefined : { timeoutMillis: question.timeoutMillis }
1634
1640
  }),
1635
1641
  startVerification: (verification) => rpc.startVerification({
@@ -1645,7 +1651,11 @@ var rpcProgramPorts2 = (rpc, work) => {
1645
1651
  startAgentStep: ({ secrets, ...step }) => rpc.startAgentStep({ lease, ...step, ...secrets === undefined ? undefined : { secrets: [...secrets] } }),
1646
1652
  awaitEvent: (wait) => rpc.awaitEvent({ lease, ...wait }),
1647
1653
  claimResource: (claim) => rpc.claimResource({ lease, ...claim }),
1648
- admitChild: (child) => rpc.admitChild({ lease, ...child }),
1654
+ admitChild: ({ constraints, ...child }) => rpc.admitChild({
1655
+ lease,
1656
+ ...child,
1657
+ ...constraints === undefined ? undefined : { constraints: [...constraints] }
1658
+ }),
1649
1659
  storeArtifact: ({ fileIds, ...artifact }) => rpc.storeArtifact({ lease, ...artifact, ...fileIds === undefined ? undefined : { fileIds: [...fileIds] } }),
1650
1660
  ...rpcRunFiles2(rpc, lease),
1651
1661
  recordNote: (note) => rpc.recordNote({ lease, ...note }),
@@ -3006,6 +3006,8 @@ var ask2 = (name, question) => takeStep2(name, "ask", "ask", Effect3.gen(functio
3006
3006
  return yield* new QuestionRefused2({ step: name, answer: fallback, options });
3007
3007
  if (question.auto !== undefined && options !== undefined && !options.includes(question.auto))
3008
3008
  return yield* new QuestionRefused2({ step: name, answer: question.auto, options });
3009
+ if (question.unattendedAuto !== undefined && options !== undefined && !options.includes(question.unattendedAuto))
3010
+ return yield* new QuestionRefused2({ step: name, answer: question.unattendedAuto, options });
3009
3011
  yield* launch2(deferred, (host, token) => host.putQuestion({
3010
3012
  step: name,
3011
3013
  prompt: question.prompt,
@@ -3013,6 +3015,7 @@ var ask2 = (name, question) => takeStep2(name, "ask", "ask", Effect3.gen(functio
3013
3015
  ...advice,
3014
3016
  ...fallback === undefined ? undefined : { default: fallback },
3015
3017
  ...question.auto === undefined ? undefined : { auto: question.auto },
3018
+ ...question.unattendedAuto === undefined ? undefined : { unattendedAuto: question.unattendedAuto },
3016
3019
  ...question.timeout === undefined ? undefined : { timeoutMillis: Duration.toMillis(Duration.fromInputUnsafe(question.timeout)) },
3017
3020
  token
3018
3021
  }));
@@ -3025,10 +3028,17 @@ var ask2 = (name, question) => takeStep2(name, "ask", "ask", Effect3.gen(functio
3025
3028
  return yield* new QuestionRefused2({ step: name, answer, options });
3026
3029
  return offeredAnswer;
3027
3030
  }));
3028
- var call2 = (name, loop, input) => takeStep2(name, "call", "call", Effect3.gen(function* () {
3031
+ var call2 = (name, loop, input, options) => takeStep2(name, "call", "call", Effect3.gen(function* () {
3029
3032
  const deferred = childDeferred2(name);
3030
3033
  const encoded = yield* toJson(name, loop.input, input);
3031
- yield* launch2(deferred, (host, token) => host.admitChild({ step: name, loop: loop.id, input: encoded, token }));
3034
+ const constraints = options?.constraints ?? [];
3035
+ yield* launch2(deferred, (host, token) => host.admitChild({
3036
+ step: name,
3037
+ loop: loop.id,
3038
+ input: encoded,
3039
+ ...constraints.length === 0 ? undefined : { constraints },
3040
+ token
3041
+ }));
3032
3042
  const result = yield* DurableDeferred.await(deferred);
3033
3043
  return yield* Schema17.decodeEffect(Schema17.toCodecJson(loop.output))(result).pipe(Effect3.mapError((error) => new ChildFailed2({ step: name, loop: loop.id, reason: error.message })));
3034
3044
  }));
@@ -3171,7 +3181,11 @@ var ArtifactRequest2 = Schema19.Struct({
3171
3181
  files: Schema19.optional(Schema19.Array(RunFile2))
3172
3182
  });
3173
3183
  var ArtifactResult2 = Schema19.Struct({ artifactId: Schema19.String });
3174
- var NoteRequest2 = Schema19.Struct({ text: Schema19.String, artifactId: Schema19.optional(Schema19.String) });
3184
+ var NoteRequest2 = Schema19.Struct({
3185
+ text: Schema19.String,
3186
+ artifactId: Schema19.optional(Schema19.String),
3187
+ kind: Schema19.optional(Schema19.Literals(["note", "blocker"]))
3188
+ });
3175
3189
  var CreateTasksRequest2 = Schema19.Struct({
3176
3190
  tickets: Schema19.Array(PlanTicket2),
3177
3191
  projectId: Schema19.optionalKey(Schema19.String)
@@ -4197,10 +4211,17 @@ var scriptedHost = (script, engine, agentLaunches, childLaunches, waits, verifyL
4197
4211
  ...launch.mergeTarget === undefined ? undefined : { mergeTarget: launch.mergeTarget }
4198
4212
  })), resolve(agentDeferredNamed2(launch.deferredName), launch.token, scriptedExit(script.outputs?.[launch.step], (reason) => new StepFailed2({ step: launch.step, reason })))),
4199
4213
  putQuestion: (launch) => {
4200
- const answer = script.answers?.[launch.step] ?? (script.fullAuto === true ? launch.auto : undefined) ?? launch.default;
4214
+ const attended = script.attended === true;
4215
+ const auto = script.fullAuto === true ? launch.auto ?? (attended ? undefined : launch.unattendedAuto) : undefined;
4216
+ const answer = script.answers?.[launch.step] ?? auto ?? (attended ? undefined : launch.default);
4201
4217
  return resolve(answerDeferred2(launch.step), launch.token, answer === undefined ? Exit3.fail(new StepFailed2({ step: launch.step, reason: "no answer was scripted" })) : Exit3.succeed(answer));
4202
4218
  },
4203
- admitChild: (launch) => Effect8.andThen(Effect8.sync(() => childLaunches.push({ step: launch.step, loop: launch.loop, input: launch.input })), resolve(childDeferred2(launch.step), launch.token, scriptedExit(script.children?.[launch.step], (reason) => new ChildFailed2({ step: launch.step, loop: launch.loop, reason })))),
4219
+ admitChild: (launch) => Effect8.andThen(Effect8.sync(() => childLaunches.push({
4220
+ step: launch.step,
4221
+ loop: launch.loop,
4222
+ input: launch.input,
4223
+ ...launch.constraints === undefined ? undefined : { constraints: launch.constraints }
4224
+ })), resolve(childDeferred2(launch.step), launch.token, scriptedExit(script.children?.[launch.step], (reason) => new ChildFailed2({ step: launch.step, loop: launch.loop, reason })))),
4204
4225
  awaitEvent: (launch) => {
4205
4226
  const event = script.events?.[launch.step];
4206
4227
  waits.push({
@@ -174,7 +174,7 @@ import {
174
174
  syncBase2,
175
175
  Continuing2,
176
176
  continuingBrief2
177
- } from "../chunk-08qcgk73.js";
177
+ } from "../chunk-g7x3s4x6.js";
178
178
  export {
179
179
  AlertTaskActivity2 as AlertTaskActivity,
180
180
  AlertTaskRequest2 as AlertTaskRequest,
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import"../chunk-08qcgk73.js";
2
+ import"../chunk-g7x3s4x6.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-epczfxnt.js";
20
+ } from "../chunk-3qttynnn.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.75",
3
+ "version": "0.10.77",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "exports": {
@@ -1156,6 +1156,7 @@ export declare const makeProgramRpcClient: (options: ConnectionOptions) => Effec
1156
1156
  } | undefined;
1157
1157
  readonly default?: string | undefined;
1158
1158
  readonly auto?: string | undefined;
1159
+ readonly unattendedAuto?: string | undefined;
1159
1160
  readonly timeoutMillis?: number | undefined;
1160
1161
  readonly deferredName: string;
1161
1162
  }, options?: {
@@ -1324,6 +1325,7 @@ export declare const makeProgramRpcClient: (options: ConnectionOptions) => Effec
1324
1325
  readonly step: string;
1325
1326
  readonly loop: string;
1326
1327
  readonly input: unknown;
1328
+ readonly constraints?: readonly string[] | undefined;
1327
1329
  readonly deferredName: string;
1328
1330
  }, options?: {
1329
1331
  readonly headers?: import("effect/http/Headers").Input | undefined;
@@ -1534,6 +1536,7 @@ export declare const makeProgramRpcClient: (options: ConnectionOptions) => Effec
1534
1536
  readonly step: string;
1535
1537
  readonly text: string;
1536
1538
  readonly artifactId?: string | undefined;
1539
+ readonly kind?: "blocker" | "note" | undefined;
1537
1540
  }, options?: {
1538
1541
  readonly headers?: import("effect/http/Headers").Input | undefined;
1539
1542
  readonly context?: import("effect/Context").Context<never> | undefined;
@@ -754,6 +754,8 @@ declare const RunnerCapabilityRpcs_base: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild",
754
754
  step: Schema.String;
755
755
  loop: Schema.String;
756
756
  input: Schema.Codec<Schema.Json, Schema.Json, never, never>;
757
+ /** Constraints the Child Run's Intent starts with besides its parent's. */
758
+ constraints: Schema.optional<Schema.$Array<Schema.String>>;
757
759
  deferredName: Schema.String;
758
760
  }>, Schema.Struct<{
759
761
  readonly runId: Schema.String;
@@ -1143,6 +1145,8 @@ declare const RunnerCapabilityRpcs_base: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild",
1143
1145
  default: Schema.optional<Schema.String>;
1144
1146
  /** Taken at once when the Run's Team delivers in full auto. */
1145
1147
  auto: Schema.optional<Schema.String>;
1148
+ /** Taken at once when the Run's Team delivers in full auto and nobody attends the Run. */
1149
+ unattendedAuto: Schema.optional<Schema.String>;
1146
1150
  timeoutMillis: Schema.optional<Schema.Finite>;
1147
1151
  deferredName: Schema.String;
1148
1152
  }>, Schema.Struct<{
@@ -1226,6 +1230,8 @@ declare const RunnerCapabilityRpcs_base: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild",
1226
1230
  step: Schema.String;
1227
1231
  text: Schema.String;
1228
1232
  artifactId: Schema.optional<Schema.String>;
1233
+ /** A `blocker` records what the Task waits on; a note when left out. */
1234
+ kind: Schema.optional<Schema.Literals<readonly ["note", "blocker"]>>;
1229
1235
  }>, Schema.Void, typeof RunnerRpcError, typeof RunnerAuthentication, never> | Rpc.Rpc<"ReportPipeline", Schema.Struct<{
1230
1236
  lease: Schema.Struct<{
1231
1237
  readonly workUnitId: Schema.String;
@@ -1479,6 +1485,8 @@ export declare const ProgramRpcs: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild", Schema
1479
1485
  step: Schema.String;
1480
1486
  loop: Schema.String;
1481
1487
  input: Schema.Codec<Schema.Json, Schema.Json, never, never>;
1488
+ /** Constraints the Child Run's Intent starts with besides its parent's. */
1489
+ constraints: Schema.optional<Schema.$Array<Schema.String>>;
1482
1490
  deferredName: Schema.String;
1483
1491
  }>, Schema.Struct<{
1484
1492
  readonly runId: Schema.String;
@@ -1967,6 +1975,8 @@ export declare const ProgramRpcs: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild", Schema
1967
1975
  default: Schema.optional<Schema.String>;
1968
1976
  /** Taken at once when the Run's Team delivers in full auto. */
1969
1977
  auto: Schema.optional<Schema.String>;
1978
+ /** Taken at once when the Run's Team delivers in full auto and nobody attends the Run. */
1979
+ unattendedAuto: Schema.optional<Schema.String>;
1970
1980
  timeoutMillis: Schema.optional<Schema.Finite>;
1971
1981
  deferredName: Schema.String;
1972
1982
  }>, Schema.Struct<{
@@ -2063,6 +2073,8 @@ export declare const ProgramRpcs: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild", Schema
2063
2073
  step: Schema.String;
2064
2074
  text: Schema.String;
2065
2075
  artifactId: Schema.optional<Schema.String>;
2076
+ /** A `blocker` records what the Task waits on; a note when left out. */
2077
+ kind: Schema.optional<Schema.Literals<readonly ["note", "blocker"]>>;
2066
2078
  }>, Schema.Void, typeof RunnerRpcError, typeof RunnerAuthentication, never> | Rpc.Rpc<"ReportPipeline", Schema.Struct<{
2067
2079
  lease: Schema.Struct<{
2068
2080
  readonly workUnitId: Schema.String;
@@ -2262,6 +2274,8 @@ export declare const RunnerRpcs: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild", Schema.
2262
2274
  step: Schema.String;
2263
2275
  loop: Schema.String;
2264
2276
  input: Schema.Codec<Schema.Json, Schema.Json, never, never>;
2277
+ /** Constraints the Child Run's Intent starts with besides its parent's. */
2278
+ constraints: Schema.optional<Schema.$Array<Schema.String>>;
2265
2279
  deferredName: Schema.String;
2266
2280
  }>, Schema.Struct<{
2267
2281
  readonly runId: Schema.String;
@@ -3203,6 +3217,8 @@ export declare const RunnerRpcs: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild", Schema.
3203
3217
  default: Schema.optional<Schema.String>;
3204
3218
  /** Taken at once when the Run's Team delivers in full auto. */
3205
3219
  auto: Schema.optional<Schema.String>;
3220
+ /** Taken at once when the Run's Team delivers in full auto and nobody attends the Run. */
3221
+ unattendedAuto: Schema.optional<Schema.String>;
3206
3222
  timeoutMillis: Schema.optional<Schema.Finite>;
3207
3223
  deferredName: Schema.String;
3208
3224
  }>, Schema.Struct<{
@@ -3299,6 +3315,8 @@ export declare const RunnerRpcs: RpcGroup.RpcGroup<Rpc.Rpc<"AdmitChild", Schema.
3299
3315
  step: Schema.String;
3300
3316
  text: Schema.String;
3301
3317
  artifactId: Schema.optional<Schema.String>;
3318
+ /** A `blocker` records what the Task waits on; a note when left out. */
3319
+ kind: Schema.optional<Schema.Literals<readonly ["note", "blocker"]>>;
3302
3320
  }>, Schema.Void, typeof RunnerRpcError, typeof RunnerAuthentication, never> | Rpc.Rpc<"Release", Schema.Struct<{
3303
3321
  readonly workUnitId: Schema.String;
3304
3322
  readonly lease: Schema.Struct<{
@@ -50,10 +50,11 @@ export declare const ArtifactRequest: Schema.Struct<{
50
50
  export declare const ArtifactResult: Schema.Struct<{
51
51
  readonly artifactId: Schema.String;
52
52
  }>;
53
- /** A thread entry on the Run's Task; given an artifact, it links to it. */
53
+ /** A thread entry on the Run's Task; given an artifact, it links to it. A `blocker` records what the Task waits on. */
54
54
  export declare const NoteRequest: Schema.Struct<{
55
55
  readonly text: Schema.String;
56
56
  readonly artifactId: Schema.optional<Schema.String>;
57
+ readonly kind: Schema.optional<Schema.Literals<readonly ["note", "blocker"]>>;
57
58
  }>;
58
59
  export declare const CreateTasksRequest: Schema.Struct<{
59
60
  readonly tickets: Schema.$Array<Schema.Struct<{
@@ -134,6 +134,8 @@ export type QuestionLaunch = Launch & QuestionAdvice & {
134
134
  readonly default?: string;
135
135
  /** Taken at once, with nobody asked, when the Run's Team delivers in full auto. */
136
136
  readonly auto?: string;
137
+ /** Taken at once, with nobody asked, when the Run's Team delivers in full auto and nobody attends the Run. */
138
+ readonly unattendedAuto?: string;
137
139
  readonly timeoutMillis?: number;
138
140
  /** Approving the Question approves this verification. */
139
141
  readonly verification?: SuggestedVerification;
@@ -163,6 +165,8 @@ export type ClaimLaunch = Launch & {
163
165
  export type ChildLaunch = Launch & {
164
166
  readonly loop: string;
165
167
  readonly input: Schema.Json;
168
+ /** Constraints the Child Run's Intent starts with besides its parent's, spelled as a person spells one. */
169
+ readonly constraints?: readonly string[];
166
170
  };
167
171
  /** An Event that settles a wait besides its own, with its own filter and `since`. */
168
172
  export type OtherEvent = {
@@ -263,6 +267,11 @@ type Fallback<Value extends string> = {
263
267
  * full-auto Team has handed to the Loop, such as merging a change its Review passed.
264
268
  */
265
269
  readonly auto?: Value;
270
+ /**
271
+ * The answer Kitman takes at once, asking nobody, when the Run's Team delivers in full auto and nobody attends the
272
+ * Run, as when full auto started it. A Run a person started still asks them.
273
+ */
274
+ readonly unattendedAuto?: Value;
266
275
  };
267
276
  /** The answer the Loop would pick and why, in one or two sentences. */
268
277
  type Recommended<Value extends string> = {
@@ -288,8 +297,13 @@ type Question<Options extends readonly QuestionOption[]> = ({
288
297
  * an option can carry a short `description` of its trade-off, and every Question recommends an answer and says why.
289
298
  */
290
299
  export declare const ask: <const Options extends readonly QuestionOption[]>(name: string, question: Question<Options>) => Effect.Effect<OptionValue<Options[number]>, CapabilityDenied | DuplicateStep | QuestionRefused | StepFailed, LoopHost | LoopRun | import("effect/workflow/WorkflowEngine").WorkflowEngine | import("effect/workflow/WorkflowEngine").WorkflowInstance>;
291
- /** Starts a Child Run of `loop`, a Loop or its id and schemas, and awaits its output. */
292
- export declare const call: <In, Out>(name: string, loop: Pick<LoopDefinition<In, Out, unknown>, 'id' | 'input' | 'output'>, input: In) => Effect.Effect<Out, CapabilityDenied | ChildFailed | DuplicateStep | StepFailed, LoopHost | LoopRun | import("effect/workflow/WorkflowEngine").WorkflowEngine | import("effect/workflow/WorkflowEngine").WorkflowInstance>;
300
+ /**
301
+ * Starts a Child Run of `loop`, a Loop or its id and schemas, and awaits its output. Its Intent carries its parent's
302
+ * constraints and any in `options.constraints`.
303
+ */
304
+ export declare const call: <In, Out>(name: string, loop: Pick<LoopDefinition<In, Out, unknown>, 'id' | 'input' | 'output'>, input: In, options?: {
305
+ readonly constraints?: readonly string[];
306
+ }) => Effect.Effect<Out, CapabilityDenied | ChildFailed | DuplicateStep | StepFailed, LoopHost | LoopRun | import("effect/workflow/WorkflowEngine").WorkflowEngine | import("effect/workflow/WorkflowEngine").WorkflowInstance>;
293
307
  /**
294
308
  * Waits for an Event matching `filter`, which is data the control plane matches. A wait on a ChangeRequest's Event
295
309
  * fails with ChangeRequestClosed once that ChangeRequest is closed or merged, rather than waiting out its timeout.
@@ -54,6 +54,11 @@ export type TestLoopScript = {
54
54
  };
55
55
  /** Runs as a full-auto Team's Run: an unscripted Question with a full-auto answer takes it. */
56
56
  readonly fullAuto?: boolean;
57
+ /**
58
+ * Runs as a Run a person started: an unscripted Question takes only its `auto` answer, and otherwise waits for them,
59
+ * which fails its Step here since no time passes. Unattended by default.
60
+ */
61
+ readonly attended?: boolean;
57
62
  readonly children?: {
58
63
  readonly [step: string]: Scripted;
59
64
  };
@@ -127,6 +132,7 @@ type ChildLaunchRecord = {
127
132
  readonly step: string;
128
133
  readonly loop: string;
129
134
  readonly input: Schema.Json;
135
+ readonly constraints?: readonly string[];
130
136
  };
131
137
  /** The workflow a Loop's program runs as; a Run is one execution of it. */
132
138
  export declare const loopWorkflow: <In, Out, E>(loop: LoopDefinition<In, Out, E>) => Workflow.Workflow<`kitman-loop/${string}`, Schema.Struct<{
@@ -43,6 +43,7 @@ export type ProgramCapabilities = {
43
43
  readonly verification?: SuggestedVerification;
44
44
  readonly default?: string;
45
45
  readonly auto?: string;
46
+ readonly unattendedAuto?: string;
46
47
  readonly timeoutMillis?: number;
47
48
  readonly deferredName: string;
48
49
  }) => Effect.Effect<{
@@ -92,6 +93,7 @@ export type ProgramCapabilities = {
92
93
  readonly step: string;
93
94
  readonly loop: string;
94
95
  readonly input: Schema.Json;
96
+ readonly constraints?: readonly string[];
95
97
  readonly deferredName: string;
96
98
  }) => Effect.Effect<{
97
99
  readonly runId: string;
@@ -132,6 +134,7 @@ export type ProgramCapabilities = {
132
134
  readonly step: string;
133
135
  readonly text: string;
134
136
  readonly artifactId?: string | undefined;
137
+ readonly kind?: 'note' | 'blocker' | undefined;
135
138
  }) => Effect.Effect<void, Error>;
136
139
  readonly performHostEffect: (request: {
137
140
  readonly step: string;