@registrystack/client 0.41.0 → 0.42.0

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.
@@ -23,14 +23,7 @@ export interface CaseworkClientConfig {
23
23
  maxMutationRetries?: SafeInteger | null
24
24
  }
25
25
 
26
- export type InboxView = 'mine' | 'my-teams' | 'team-holdings' | 'overdue' | 'completed-by-me'
27
- export type OccurrenceKind = 'review' | 'application'
28
- export type OccurrenceState = 'open' | 'claimed' | 'waiting-applicant' | 'waiting-application' | 'synchronizing' | 'completed' | 'superseded' | 'cancelled'
29
- export type OperationName = string
30
- export type AttemptState = 'pending' | 'uncertain' | 'completed' | 'refused'
31
26
  export type PageStatus = 'complete' | 'budget-exhausted' | 'source-unavailable'
32
- export type HistoryKind = 'observed' | 'opened' | 'claimed' | 'assigned' | 'delegated' | 'caseload-moved' | 'clock-reminder' | 'clock-step-applied' | 'clock-recomputed' | 'released' | 'draft-saved' | 'attempt-reserved' | 'attempt-uncertain' | 'action-completed' | 'attempt-settled' | 'superseded' | 'completed'
33
-
34
27
  export interface IssuerPrincipal { issuer: string; subject: string }
35
28
  export type TaskGrantBounds = { type: 'evidence'; requirement: string } | { type: 'breg'; permissions: ReadonlyArray<TaskPermission> } | { type: 'scheduling'; permissions: ReadonlyArray<SchedulingTaskPermission> }
36
29
  export interface TaskPermission { collection: string; operations: ReadonlyArray<string> }
@@ -45,7 +38,7 @@ export interface TaskTemplatePreview {
45
38
  /** Omitted for the existing immediate mode. */
46
39
  authorizationMode?: TaskAuthorizationMode
47
40
  }
48
- export interface TaskTemplatePreviews { itemRevision: SafeInteger; templates: ReadonlyArray<TaskTemplatePreview> }
41
+ export interface TaskTemplatePreviews { taskRevision: SafeInteger; templates: ReadonlyArray<TaskTemplatePreview> }
49
42
  /** Grant metadata deliberately excludes stored subject values. */
50
43
  export interface TaskGrantView {
51
44
  id: string; templateId: string; templateVersion: string; agent: IssuerPrincipal; client: string; resource: string; scopes: ReadonlyArray<string>; purpose: string
@@ -64,50 +57,7 @@ export interface TaskGrantStatusDetails {
64
57
  export interface TaskGrantStatus { active: boolean; grant?: TaskGrantStatusDetails }
65
58
 
66
59
  export interface DirectoryMember { issuer: string; subject: string; displayName?: string | null }
67
- export interface SubjectRef { sourceId: string; kind: string; id: string }
68
- export interface SourceBinding {
69
- sourceRevision: string
70
- version: string
71
- integrity?: string
72
- generation: string
73
- }
74
- export type CaseworkActionName = 'claim' | 'release' | OperationName
75
- export interface CaseworkAction { operation: CaseworkActionName; href: string; ifMatch: string }
76
- export interface CorrectionRoutingCopy {
77
- sourceBinding: SourceBinding
78
- reason?: string
79
- flaggedFields: ReadonlyArray<string>
80
- }
81
- export interface WorkItemRouting {
82
- ruleId?: string
83
- because?: string
84
- policyDigest?: string
85
- }
86
- export interface WorkItem {
87
- itemId: string
88
- subject: SubjectRef
89
- occurrenceKind: OccurrenceKind
90
- stage?: string
91
- binding: SourceBinding
92
- bindingReference: string
93
- displayReference?: string
94
- state: OccurrenceState
95
- queueId: string
96
- holder?: IssuerPrincipal
97
- heldSince?: string
98
- assignment?: AssignmentContext
99
- revision: SafeInteger
100
- firstObservedAt: string
101
- passiveDueAt?: string
102
- updatedAt: string
103
- actions: ReadonlyArray<CaseworkAction>
104
- routingCopy?: CorrectionRoutingCopy
105
- routing?: WorkItemRouting
106
- clockOccurrences?: ReadonlyArray<ClockOccurrenceView>
107
- liveAttempt?: AttemptStatus
108
- }
109
60
  export interface Page<T> { items: ReadonlyArray<T>; nextCursor?: string; status: PageStatus }
110
- export interface WorkItemPage extends Page<WorkItem> { servedQueues: ReadonlyArray<string> }
111
61
  export type DirectoryTargetPurpose = 'assignment' | 'absence-person' | 'absence-cover'
112
62
  export type DirectoryTargetsQuery = {
113
63
  cursor?: string
@@ -118,138 +68,29 @@ export type DirectoryTargetsQuery = {
118
68
  | { purpose: 'absence-cover'; queue?: never; personIssuer: string; personSubject: string }
119
69
  )
120
70
  export type DirectoryTargetPage = Page<DirectoryMember>
121
- export type ListWorkItemsQuery = {
122
- view: InboxView
123
- sort?: InboxSort
124
- queue?: string
125
- cursor?: string
126
- limit?: SafeInteger
127
- } & (
128
- | { sourceId: string; subjectKind: string; subjectId: string; reference?: never }
129
- | { reference: string; sourceId?: never; subjectKind?: never; subjectId?: never }
130
- | { reference?: never; sourceId?: never; subjectKind?: never; subjectId?: never }
131
- )
132
- export type InboxSort = 'due' | 'age' | 'type'
133
- export interface NextWorkItemQuery { queue?: string; cursor?: string }
134
- export interface SaveDraftRequest {
135
- binding: SourceBinding
136
- reason: string
137
- flaggedFields?: ReadonlyArray<string>
138
- }
139
- export interface Draft {
140
- itemId: string
141
- author: IssuerPrincipal
142
- binding: SourceBinding
143
- reason: string
144
- flaggedFields: ReadonlyArray<string>
145
- revision: SafeInteger
146
- updatedAt: string
147
- }
148
- export interface DraftResponse { draft: Draft }
149
- export interface DecideRequest {
150
- displayedBinding: SourceBinding
151
- operation: OperationName
152
- reason?: string
153
- flaggedFields?: ReadonlyArray<string>
154
- }
155
71
  /** The Registry-Source-Profile header selects the source profile; the body is empty. */
156
- export type RecoverAttemptRequest = Record<string, never>
157
- export interface SourceReceipt {
158
- sourceRevision: string
159
- resultingState: string
160
- binding: SourceBinding
161
- actorReference?: string
162
- metadata: Readonly<Record<string, string>>
163
- }
164
- export interface AttemptStatus {
165
- attemptId: string
166
- itemId: string
167
- state: AttemptState
168
- itemRevision: SafeInteger
169
- operation: OperationName
170
- createdAt: string
171
- receipt?: SourceReceipt
172
- }
173
- export interface MutationResponse { item: WorkItem; attempt?: AttemptStatus }
174
- export interface HistoryEntryBase {
175
- eventId: string
176
- itemId: string
177
- itemRevision: SafeInteger
178
- kind: HistoryKind
179
- occurredAt: string
180
- actor?: IssuerPrincipal
181
- profileId: string
182
- }
183
- export interface AttemptReservedHistoryEntry extends HistoryEntryBase {
184
- kind: 'attempt-reserved'
185
- detail: JsonObject & { attemptId: string; bindingReference: string; operation: OperationName }
186
- }
187
- /**
188
- * An attempt-uncertain detail takes one of three shapes: recovery left the
189
- * attempt uncertain, the source definitively refused it, or an operator marked
190
- * an expired pending attempt uncertain. reason is the original decision reason.
191
- */
192
- export type AttemptUncertainHistoryDetail = JsonObject & {
193
- attemptId: string
194
- bindingReference: string
195
- operation: OperationName
196
- reason?: string
197
- } & (
198
- | { sourceRevision?: string | null; definitivelyRefused?: never; operatorReason?: never }
199
- | { definitivelyRefused: true; operatorReason?: never }
200
- | { operatorReason: string; decidedBy: string; originalActor: IssuerPrincipal; originalProfileId: string; definitivelyRefused?: never }
201
- )
202
- export interface AttemptUncertainHistoryEntry extends HistoryEntryBase {
203
- kind: 'attempt-uncertain'
204
- detail: AttemptUncertainHistoryDetail
205
- }
206
- export interface ActionCompletedHistoryEntry extends HistoryEntryBase {
207
- kind: 'action-completed'
208
- detail: JsonObject & { attemptId: string; bindingReference: string; sourceRevision: string; sourceReceipt: SourceReceipt }
209
- }
210
- export interface AttemptSettledHistoryEntry extends HistoryEntryBase {
211
- kind: 'attempt-settled'
212
- detail: JsonObject & { attemptId: string; bindingReference: string; operation: OperationName; outcome: 'applied' | 'not-applied'; reason: string; decidedBy: string }
213
- }
214
- export interface OtherHistoryEntry extends HistoryEntryBase {
215
- kind: Exclude<HistoryKind, 'attempt-reserved' | 'attempt-uncertain' | 'action-completed' | 'attempt-settled'>
216
- detail: JsonValue
217
- }
218
- export type HistoryEntry = AttemptReservedHistoryEntry | AttemptUncertainHistoryEntry | ActionCompletedHistoryEntry | AttemptSettledHistoryEntry | OtherHistoryEntry
219
- export interface HoldingSummary {
220
- principal: IssuerPrincipal
221
- queueId: string
222
- activeItems: SafeInteger
223
- overdueItems: SafeInteger
224
- }
225
72
  export interface QueueRecord { id: string; label: string }
226
- export interface PassiveTargetPolicy { id: string; after: { elapsed: string } }
227
73
  export type RoutingPredicate = { equals: JsonValue } | { oneOf: ReadonlyArray<JsonValue> }
228
- export interface RoutingCondition { activity?: 'review' | 'apply'; stage?: string; fields?: Readonly<Record<string, RoutingPredicate>> }
74
+ export interface RoutingCondition { stage?: string; fields?: Readonly<Record<string, RoutingPredicate>> }
229
75
  export interface RoutingRule { id: string; because: string; when: RoutingCondition; queue: string }
230
- export interface DisplayReferencePolicy { field: string }
231
- export interface SourceRequestPolicy { entity: string; queue: string; projection?: ReadonlyArray<string>; routing?: ReadonlyArray<RoutingRule>; displayReference?: DisplayReferencePolicy; clock?: string; target?: PassiveTargetPolicy }
232
76
  export type WorkingWeekday = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday'
233
77
  export interface CalendarPolicy { id: string; timezone: string; workingWeekdays: ReadonlyArray<WorkingWeekday>; holidaySet: string }
234
- export interface ClockReminder { id: string; workingDaysBefore: SafeInteger }
78
+ export interface WorkingDays { workingDays: SafeInteger }
79
+ export interface ClockReminder { id: string; before: WorkingDays }
80
+ export type ElapsedDuration = { minutes: SafeInteger } | { hours: SafeInteger } | { days: SafeInteger }
235
81
  export interface ClockStep { id: string; because: string; at: 'due'; action: { reassign: { queue: string } } }
236
82
  export type ClockPolicy = {
237
- type: 'subject'; id: string; anchor: 'first-submitted-at'; completeOn: 'review-completed'; after: { elapsed: string }; pauseWhile: ReadonlyArray<'awaiting-applicant'>
83
+ type: 'subject'; id: string; anchor: { type: 'request-accepted' }; after: ElapsedDuration
238
84
  } | {
239
- type: 'activity'; id: string; anchor: 'stage-entered-at'; calendar: string; after: { workingDays: SafeInteger }; dueTime: string;
240
- atRisk?: { workingDaysBefore: SafeInteger }; reminders?: ReadonlyArray<ClockReminder>; steps?: ReadonlyArray<ClockStep>
241
- }
242
- export interface SourcePolicy {
243
- id: string
244
- adapter: string
245
- description: string
246
- requests: ReadonlyArray<SourceRequestPolicy>
85
+ type: 'stage'; id: string; anchor: { type: 'stage-entered' }; calendar: string; after: WorkingDays; dueTime: string;
86
+ atRisk?: { before: WorkingDays }; reminders?: ReadonlyArray<ClockReminder>; steps?: ReadonlyArray<ClockStep>
247
87
  }
248
88
  export interface Description {
249
89
  projectId: string
250
90
  policyVersion: string
251
91
  queues: ReadonlyArray<QueueRecord>
252
- sources: ReadonlyArray<SourcePolicy>
92
+ reviewPolicies: ReadonlyArray<ReviewPolicy>
93
+ contextProviders: ReadonlyArray<ReviewContextProviderPolicy>
253
94
  calendars: ReadonlyArray<CalendarPolicy>
254
95
  clocks: ReadonlyArray<ClockPolicy>
255
96
  }
@@ -266,21 +107,20 @@ export interface AbsenceInput { person: IssuerPrincipal; from: string; until: st
266
107
  export interface AbsenceRecord extends AbsenceInput { absenceId: string; revision: SafeInteger }
267
108
  export interface AbsencesQuery { cursor?: string; limit?: SafeInteger }
268
109
  export interface AbsenceList { directoryRevision: SafeInteger; items: ReadonlyArray<AbsenceRecord>; nextCursor?: string }
269
- export interface AssignmentContext { owner?: IssuerPrincipal; assignedBy?: IssuerPrincipal; absenceIds: ReadonlyArray<string>; staffingDiagnostic?: 'no-cover-available' }
110
+ export type StaffingDiagnostic = 'no-cover-available' | 'insufficient-distinct-approvers'
270
111
  export interface AssignmentRequest { assignee: IssuerPrincipal; reason?: string }
271
112
  export interface DelegateRequest { delegate: IssuerPrincipal; reason?: string }
272
- export interface CaseloadMoveRequest { from: IssuerPrincipal; to: IssuerPrincipal; queueId?: string; reason: string }
273
- export interface CaseloadItemSelection { itemId: string; expectedRevision: SafeInteger }
274
- export interface CaseloadApplyRequest { movement: CaseloadMoveRequest; items: ReadonlyArray<CaseloadItemSelection> }
275
- export interface CaseloadPreviewQuery { cursor?: string; limit?: SafeInteger }
276
- export interface CaseloadItemResult { itemId: string; result: 'moved' | 'not-visible' | 'not-eligible' | 'attempt-in-progress' | 'conflict'; revision?: SafeInteger }
113
+ export interface ReviewCaseloadMoveRequest { from: IssuerPrincipal; to: IssuerPrincipal; queue?: string; reason: string }
114
+ export interface ReviewCaseloadTask { taskId: Uuid; revision: SafeInteger }
115
+ export interface ReviewCaseloadPreview { previewId: Uuid; directoryRevision: SafeInteger; tasks: ReadonlyArray<ReviewCaseloadTask>; expiresAt: string }
116
+ export interface ReviewCaseloadApplyRequest { previewId: Uuid }
117
+ export interface ReviewCaseloadResult { moved: ReadonlyArray<ReviewCaseloadTask> }
277
118
  export interface BootstrapDirectoryRequest {
278
119
  teamId: string
279
120
  staff: ReadonlyArray<IssuerPrincipal>
280
121
  supervisors: ReadonlyArray<IssuerPrincipal>
281
122
  queueId: string
282
123
  }
283
- export interface HoldingsQuery { cursor?: string; limit?: SafeInteger }
284
124
  export interface CaseworkOutcome<T> { kind: 'complete'; value: T; traceId: string }
285
125
 
286
126
  export type KnownCaseworkProblemCode =
@@ -303,12 +143,13 @@ export type KnownCaseworkProblemCode =
303
143
  | 'request.limit-out-of-range'
304
144
  | 'request.method-not-allowed'
305
145
  | 'request.not-found'
306
- | 'request.reason-unsupported'
307
- | 'request.source-rejected'
308
146
  | 'request.unprocessable'
309
147
  | 'request.unsupported-media-type'
148
+ | 'review.distinct-approver-required'
310
149
  | 'review.initiator-excluded'
311
150
  | 'review.initiator-required'
151
+ | 'review.query-too-broad'
152
+ | 'review.policy-mismatch'
312
153
  | 'review.result-expired'
313
154
  | 'review.submission-conflict'
314
155
  | 'review.task-not-held'
@@ -317,21 +158,16 @@ export type KnownCaseworkProblemCode =
317
158
  | 'source-profile.not-applicable'
318
159
  | 'source-profile.required'
319
160
  | 'source.bad-gateway'
320
- | 'source.not-found'
321
- | 'source.record-missing'
322
- | 'source.reviewer-not-authorized'
323
- | 'source.signature-invalid'
324
- | 'work-item.already-claimed'
325
- | 'work-item.not-holder'
326
- | 'work-item.not-offered'
327
- | 'work-item.not-visible'
328
- | 'work-item.proposal-changed'
329
- | 'work-item.recovery-pending'
330
- | 'work-item.source-unavailable'
331
- | 'work-item.superseded'
161
+ | 'source.version-mismatch'
162
+ | 'source.version-unavailable'
332
163
  export type CaseworkProblemCode = KnownCaseworkProblemCode | (string & {})
333
164
  export type CaseworkProtocolFailure = 'header-bounds' | 'trace-context' | 'media-type' | 'body' | 'problem' | 'status' | 'protocol'
334
165
 
166
+ export interface ReviewTaskGrantReadOptions {
167
+ taskId: Uuid
168
+ sourceProfile?: string | null
169
+ }
170
+
335
171
  export class CaseworkClientError extends Error {
336
172
  readonly kind: 'configuration' | 'invalid-request' | 'transport' | 'problem' | 'protocol'
337
173
  /**
@@ -351,53 +187,40 @@ export class CaseworkClientError extends Error {
351
187
  readonly detail?: string
352
188
  readonly status?: SafeInteger
353
189
  readonly traceId?: string
354
- readonly originalAttemptId?: string
355
190
  readonly validation?: {
356
191
  readonly path: string
357
- readonly reason: 'kind-not-allowed' | 'reference-invalid' | 'object-required' | 'maximum-bytes-exceeded' | 'maximum-depth-exceeded' | 'schema-mismatch' | 'outcome-not-declared' | 'reason-required' | 'text-invalid' | 'result-not-declared' | 'result-required' | 'field-not-declared' | 'constraint-invalid' | 'constraint-violated'
192
+ readonly reason: 'policy-not-allowed' | 'reference-invalid' | 'object-required' | 'maximum-bytes-exceeded' | 'maximum-depth-exceeded' | 'schema-mismatch' | 'outcome-not-declared' | 'reason-required' | 'text-invalid' | 'result-not-declared' | 'result-required' | 'field-not-declared' | 'constraint-invalid' | 'constraint-violated' | 'public-reason-required' | 'public-reason-not-declared' | 'approval-outcome-differs'
193
+ /** Outcome identifiers the review policy declares for the requested settlement when an outcome is refused; empty otherwise. */
194
+ readonly allowed: ReadonlyArray<string>
358
195
  }
359
196
  readonly transportKind?: string
360
197
  readonly protocolFailure?: CaseworkProtocolFailure
361
198
  }
362
199
 
363
- export type ClockRuntimeState = 'running' | 'paused' | 'completed' | 'cancelled' | 'verification-pending' | 'source-facts-missing'
200
+ export type ClockRuntimeState = 'running' | 'completed' | 'cancelled' | 'verification-pending' | 'source-facts-missing'
364
201
  export type ClockNextEffect =
365
202
  | { kind: 'reminder'; id: string; at: string }
366
203
  | { kind: 'reassign'; id: string; at: string; because: string; queueId: string }
367
- export interface ClockOccurrenceView {
368
- clockOccurrenceId: string
369
- subject: SubjectRef
370
- clockId: string
371
- state: ClockRuntimeState
372
- policyDigest: string
373
- calculationGeneration: SafeInteger
374
- recomputeGeneration: SafeInteger
375
- anchorAt?: string
376
- startedAt?: string
377
- dueAt?: string
378
- atRiskAt?: string
379
- completedAt?: string
380
- nextEffect?: ClockNextEffect
381
- upcomingEffects?: ReadonlyArray<ClockNextEffect>
382
- }
383
204
  export interface HolidaySetDocument { holidaySet: string; revision: SafeInteger; dates: ReadonlyArray<string> }
384
205
  export interface HolidaySetRevisionInput { document: HolidaySetDocument }
385
- export interface ClockRecomputeRequest { clockId: string; holidaySet: string; holidayRevision: SafeInteger }
386
- export interface ClockRecomputeChange { clockOccurrenceId: string; itemId: string; expectedCalculationGeneration: SafeInteger; oldDueAt: string; proposedDueAt: string }
387
- export interface ClockRecomputePreview { previewId: string; clockId: string; holidaySet: string; holidayRevision: SafeInteger; expiresAt: string; changes: ReadonlyArray<ClockRecomputeChange> }
388
- export interface ClockRecomputeApplyRequest { previewId: string }
389
- export interface ClockRecomputeResult { previewId: string; appliedOccurrences: ReadonlyArray<string> }
206
+ export interface ReviewClockRecomputeRequest { taskIds: ReadonlyArray<Uuid> }
207
+ export interface ReviewClockRecomputeTask { taskId: Uuid; revision: SafeInteger; deadlineAt?: string }
208
+ export interface ReviewClockRecomputePreview { previewId: Uuid; directoryRevision: SafeInteger; tasks: ReadonlyArray<ReviewClockRecomputeTask>; expiresAt: string }
209
+ export interface ReviewClockRecomputeApplyRequest { previewId: Uuid }
210
+ export interface ReviewClockRecomputeResult { tasks: ReadonlyArray<ReviewClockRecomputeTask> }
390
211
 
391
212
  export type ContentDigest = `sha256:${string}`
392
- export interface ReviewSubjectBinding { source: string; type: string; id: string; version: string; digest: ContentDigest }
393
- export interface ReviewPolicyBinding { id: string; version: string; digest: ContentDigest }
213
+ export interface SubjectBinding { source: string; type: string; id: string; version: string; digest: ContentDigest }
214
+ export interface PolicyBinding { id: string; version: string; digest: ContentDigest }
215
+ /** Select the current admitted policy by ID, or require one complete exact pin. */
216
+ export type PolicySelection = { id: string; version?: never; digest?: never } | PolicyBinding
394
217
  export interface HumanIdentity { issuer: string; subject: string }
395
218
  export type ReviewContext =
396
- | { strategy: 'submitted'; snapshot: Readonly<Record<string, JsonValue>> }
397
- | { strategy: 'source'; binding: { reference: string } }
219
+ | { mode: 'submitted'; snapshot: Readonly<Record<string, JsonValue>> }
220
+ | { mode: 'current-source'; binding: { reference: string } }
398
221
  export interface ReviewCreateRequest {
399
- kind: string
400
- subject: ReviewSubjectBinding
222
+ policy: PolicySelection
223
+ subject: SubjectBinding
401
224
  requesterReference: string
402
225
  initiator?: HumanIdentity
403
226
  context: ReviewContext
@@ -405,8 +228,8 @@ export interface ReviewCreateRequest {
405
228
  }
406
229
  export interface ReviewRequestAccepted {
407
230
  requestId: Uuid
408
- subject: ReviewSubjectBinding
409
- policy: ReviewPolicyBinding
231
+ subject: SubjectBinding
232
+ policy: PolicyBinding
410
233
  submissionDigest: ContentDigest
411
234
  }
412
235
  export type ReviewRequestLifecycle = 'reviewing' | 'approved' | 'rejected' | 'changes-requested' | 'answered' | 'cancelled' | 'superseded'
@@ -422,6 +245,7 @@ export interface ReviewResult extends ReviewRequestAccepted {
422
245
  resultId: Uuid
423
246
  status: ReviewResultStatus
424
247
  outcome?: string
248
+ publicReason?: string
425
249
  result?: JsonObject
426
250
  completedAt: string
427
251
  availableUntil: string
@@ -431,22 +255,27 @@ export type ReviewResultOutcome =
431
255
  | { kind: 'pending' | 'concealed_or_unknown' | 'expired'; value: null; traceId: string }
432
256
  export interface ReviewResultFeedEntry { eventId: Uuid; requestId: Uuid; resultId: Uuid; completedAt: string }
433
257
  export interface ReviewResultFeedPage { items: ReadonlyArray<ReviewResultFeedEntry>; nextCursor?: Uuid }
434
- export interface ReviewCancelRequest { subject: ReviewSubjectBinding; reason: string }
258
+ export interface ReviewCancelRequest { subject: SubjectBinding; reason: string }
435
259
  export type ReviewCancelResponse =
436
260
  | { outcome: 'cancelled'; result: ReviewResult }
437
261
  | { outcome: 'already-terminal'; result: ReviewResult }
438
262
  export interface ReviewPageQuery { cursor?: Uuid; limit?: SafeInteger }
439
263
  export type ReviewTaskOwnership = 'assigned-to-me' | 'unclaimed'
440
- export interface ReviewTaskQuery extends ReviewPageQuery { queue?: string; ownership?: ReviewTaskOwnership }
264
+ export type ReviewTaskSort = 'due' | 'subject' | 'reference'
265
+ export interface ReviewStaffingPageQuery { queue?: string; ownership?: ReviewTaskOwnership; reference?: string; sort?: ReviewTaskSort; cursor?: Uuid; limit?: SafeInteger }
266
+ /** A subject selector is absent or names every component of its immutable binding. */
267
+ export type ReviewStaffingQuery = ReviewStaffingPageQuery & (
268
+ | { subjectSource?: never; subjectType?: never; subjectId?: never; subjectVersion?: never; subjectDigest?: never }
269
+ | { subjectSource: string; subjectType: string; subjectId: string; subjectVersion: string; subjectDigest: ContentDigest }
270
+ )
441
271
  export interface SupervisoryReviewTaskQuery extends ReviewPageQuery { queue?: string; requestId?: Uuid }
442
272
  export interface OwnReviewDecisionQuery extends ReviewPageQuery { queue?: string }
443
- export interface WorkItemHistoryQuery { cursor?: string; limit?: SafeInteger }
444
- export type ReviewerTaskState = 'open' | { held: { holder: IssuerPrincipal } } | 'decided'
273
+ export type ReviewTaskState = 'open' | { held: { holder: IssuerPrincipal } } | 'decided'
445
274
  export type ReviewDecisionType = 'approve' | 'reject' | 'changes-requested' | 'answer'
446
275
  export interface ReviewDecisionReceipt {
447
- policy: ReviewPolicyBinding
276
+ policy: PolicyBinding
448
277
  decision: ReviewDecisionType
449
- outcome?: string
278
+ outcome: string
450
279
  outcomeLabel?: string
451
280
  decidedAt: string
452
281
  }
@@ -458,7 +287,12 @@ export interface OwnReviewDecision {
458
287
  decisionReceipt: ReviewDecisionReceipt
459
288
  }
460
289
  export interface OwnReviewDecisionPage { items: ReadonlyArray<OwnReviewDecision>; nextCursor?: Uuid; status: PageStatus }
461
- export interface ReviewerTask {
290
+ export interface ReviewTask {
291
+ subject: SubjectBinding
292
+ requesterReference: string
293
+ deadlineAt?: string | null
294
+ createdAt: string
295
+ displayReference?: string
462
296
  taskId: Uuid
463
297
  requestId: Uuid
464
298
  stageIndex: SafeInteger
@@ -466,11 +300,12 @@ export interface ReviewerTask {
466
300
  queue: string
467
301
  revision: SafeInteger
468
302
  eligibleProfiles: ReadonlyArray<string>
469
- state: ReviewerTaskState
303
+ state: ReviewTaskState
304
+ staffingDiagnostic?: StaffingDiagnostic
470
305
  decidedByCaller?: boolean
471
306
  decisionReceipt?: ReviewDecisionReceipt
472
307
  }
473
- export interface ReviewTaskPage { items: ReadonlyArray<ReviewerTask>; nextCursor?: Uuid; status: PageStatus }
308
+ export interface ReviewTaskPage { items: ReadonlyArray<ReviewTask>; nextCursor?: Uuid; status: PageStatus }
474
309
  export type SupervisoryReviewTaskState = 'open' | 'held' | 'decided'
475
310
  export interface SupervisoryReviewTask {
476
311
  taskId: Uuid
@@ -478,21 +313,22 @@ export interface SupervisoryReviewTask {
478
313
  queue: string
479
314
  revision: SafeInteger
480
315
  state: SupervisoryReviewTaskState
316
+ staffingDiagnostic?: StaffingDiagnostic
481
317
  accountabilityEventId?: Uuid
482
318
  }
483
319
  export interface SupervisoryReviewTaskPage { items: ReadonlyArray<SupervisoryReviewTask>; nextCursor?: Uuid; status: PageStatus }
484
320
  export type ReviewSourceBindingStatus = 'current' | 'binding-changed'
485
- export interface ReviewSourceProjection { binding: SourceBinding; displayReference?: string; display: Readonly<Record<string, JsonValue>> }
321
+ export interface ReviewSourceProjection { binding: SubjectBinding; displayReference?: string; display: Readonly<Record<string, JsonValue>> }
486
322
  export type ReviewTaskContextData =
487
- | { strategy: 'submitted'; snapshot: Readonly<Record<string, JsonValue>> }
488
- | { strategy: 'source'; reference: string; bindingStatus: ReviewSourceBindingStatus; projection?: ReviewSourceProjection }
323
+ | { mode: 'submitted'; snapshot: Readonly<Record<string, JsonValue>> }
324
+ | { mode: 'current-source'; reference: string; bindingStatus: ReviewSourceBindingStatus; projection?: ReviewSourceProjection }
489
325
  export interface ReviewTaskContext {
490
326
  taskId: Uuid
491
327
  requestId: Uuid
492
- subject: ReviewSubjectBinding
328
+ subject: SubjectBinding
493
329
  requesterReference: string
494
- policy: ReviewPolicyBinding
495
- policySnapshot: ReviewKindPolicySnapshot
330
+ policy: PolicyBinding
331
+ policyClosure: ReviewPolicyClosure
496
332
  resultConstraints?: JsonObject
497
333
  context: ReviewTaskContextData
498
334
  }
@@ -504,7 +340,7 @@ export interface ReviewClockOccurrence {
504
340
  clockId: string
505
341
  requestId: Uuid
506
342
  correlation: ReviewClockCorrelation
507
- state: 'running' | 'paused' | 'completed' | 'cancelled' | 'source-facts-missing'
343
+ state: 'running' | 'completed' | 'cancelled' | 'source-facts-missing'
508
344
  policyDigest: ContentDigest
509
345
  anchorAt: string
510
346
  dueAt?: string
@@ -513,10 +349,11 @@ export interface ReviewClockOccurrence {
513
349
  }
514
350
  export interface ReviewTaskDraftInput { body: JsonValue }
515
351
  export interface ReviewTaskDraft { taskId: Uuid; author: IssuerPrincipal; body: JsonValue; revision: SafeInteger; updatedAt: string }
516
- export type ReviewerDecision =
517
- | { type: 'approve' }
518
- | { type: 'reject' | 'changes-requested' | 'answer'; outcome: string; reason?: string | null; result?: JsonObject | null }
519
- export interface ReviewTaskDecisionRequest { decision: ReviewerDecision }
352
+ export type DecisionKind =
353
+ | { type: 'approve'; outcome: string; publicReason?: string | null }
354
+ | { type: 'reject' | 'changes-requested' | 'answer'; outcome: string; reason?: string | null; publicReason?: string | null; result?: JsonObject | null }
355
+ export interface Decision { taskId: Uuid; requestId: Uuid; stageId: string; reviewer: IssuerPrincipal; profileId: string; decision: DecisionKind }
356
+ export interface ReviewTaskDecisionRequest { decision: DecisionKind }
520
357
  export type ReviewHistoryAudience = 'reviewers' | 'requester'
521
358
  export interface ReviewNoteRequest { audience: ReviewHistoryAudience; note: string }
522
359
  export interface ReviewHistoryEntry { eventId: Uuid; requestId: Uuid; taskId?: Uuid; kind: string; actorRef?: string; detail: JsonValue; occurredAt: string }
@@ -528,19 +365,29 @@ export interface ReviewAccountabilityRecord {
528
365
  decisionReceipt?: ReviewDecisionReceipt
529
366
  }
530
367
  export interface ReviewStagePolicy { id: string; queue: string; decidingProfiles: ReadonlyArray<string>; requiredApprovals: SafeInteger; excludeInitiator?: boolean; excludePreviousStageReviewers?: boolean }
531
- export interface ReviewRetentionPolicy { terminalDays: SafeInteger; accountabilityDays: SafeInteger }
532
- export interface ReviewKindPolicySnapshot {
533
- identity: ReviewPolicyBinding
368
+ export interface ReviewRetentionPolicy { terminalRetentionDays: SafeInteger; accountabilityRetentionDays: SafeInteger }
369
+ export interface ReviewContextContract { id: string; revision: ContentDigest; schemaDigest: ContentDigest }
370
+ export type ReviewContextPolicy = { mode: 'submitted' } | { mode: 'current-source'; provider: string; contract: ReviewContextContract }
371
+ export type ReviewContextCapability = 'human-display' | 'service-status' | 'task-grant-context' | 'routing-context'
372
+ export interface ReviewContextProviderPolicy { id: string; capabilities: ReadonlyArray<ReviewContextCapability>; sourceNamespace: string; deploymentRef: string; serviceProfiles?: Partial<Record<ReviewContextCapability, string>> }
373
+ export interface ReviewPolicy { id: string; version: string; purpose: 'approval' | 'answer'; context: ReviewContextPolicy; routing?: ReadonlyArray<RoutingRule>; stages: ReadonlyArray<ReviewStagePolicy>; clocks?: ReadonlyArray<string>; retention: ReviewRetentionPolicy; displaySchema: JsonValue; resultSchema?: JsonValue; outcomes?: ReadonlyArray<{ id: string; label: string; settlement: 'approved' | 'rejected' | 'changes-requested' | 'answered'; reasonRequired: boolean; publicReason: 'required' | 'optional' | 'none'; resultRequired?: boolean }> }
374
+ export interface ReviewPolicyClosure {
375
+ identity: PolicyBinding
534
376
  purpose: 'approval' | 'answer'
535
- contextStrategy: 'submitted' | 'source'
377
+ context: ReviewContextPolicy
378
+ routing?: ReadonlyArray<RoutingRule>
379
+ dependencies: JsonObject
536
380
  stages: ReadonlyArray<ReviewStagePolicy>
537
381
  clocks?: ReadonlyArray<string>
538
382
  retention: ReviewRetentionPolicy
539
383
  displaySchema: JsonValue
540
384
  resultSchema?: JsonValue
541
- outcomes?: ReadonlyArray<{ id: string; label: string; settlement: 'rejected' | 'changes-requested' | 'answered'; reasonRequired: boolean; resultRequired?: boolean }>
385
+ outcomes?: ReadonlyArray<{ id: string; label: string; settlement: 'approved' | 'rejected' | 'changes-requested' | 'answered'; reasonRequired: boolean; publicReason: 'required' | 'optional' | 'none'; resultRequired?: boolean }>
542
386
  }
543
387
 
388
+ /** Compute the canonical producer submission digest locally, without I/O. */
389
+ export function submissionDigest(producer: string, sourceNamespace: string, request: ReviewCreateRequest): ContentDigest
390
+
544
391
  export class CaseworkClient {
545
392
  constructor(config: CaseworkClientConfig)
546
393
  description(token: string, profile: string): Promise<CaseworkOutcome<Description>>
@@ -549,21 +396,22 @@ export class CaseworkClient {
549
396
  reviewResult(token: string, profile: string, accepted: ReviewRequestAccepted): Promise<ReviewResultOutcome>
550
397
  reviewResults(token: string, profile: string, query?: ReviewPageQuery | null): Promise<CaseworkOutcome<ReviewResultFeedPage>>
551
398
  cancelReviewRequest(token: string, profile: string, accepted: ReviewRequestAccepted, idempotencyKey: string, request: ReviewCancelRequest): Promise<CaseworkOutcome<ReviewCancelResponse>>
552
- reviewKinds(token: string, profile: string): Promise<CaseworkOutcome<ReadonlyArray<ReviewKindPolicySnapshot>>>
553
- reviewKind(token: string, profile: string, kindId: string): Promise<CaseworkOutcome<ReviewKindPolicySnapshot>>
554
- reviewTasks(token: string, profile: string, query?: ReviewTaskQuery | null, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewTaskPage>>
399
+ reviewPolicies(token: string, profile: string): Promise<CaseworkOutcome<ReadonlyArray<ReviewPolicyClosure>>>
400
+ reviewPolicy(token: string, profile: string, policyId: string): Promise<CaseworkOutcome<ReviewPolicyClosure>>
401
+ nextReviewTask(token: string, profile: string, query?: ReviewStaffingQuery | null, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewTask | null>>
402
+ reviewTasks(token: string, profile: string, query?: ReviewStaffingQuery | null, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewTaskPage>>
555
403
  supervisoryReviewTasks(token: string, profile: string, query?: SupervisoryReviewTaskQuery | null, sourceProfile?: string | null): Promise<CaseworkOutcome<SupervisoryReviewTaskPage>>
556
404
  ownReviewDecisions(token: string, profile: string, query?: OwnReviewDecisionQuery | null, sourceProfile?: string | null): Promise<CaseworkOutcome<OwnReviewDecisionPage>>
557
- reviewTask(token: string, profile: string, taskId: Uuid, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewerTask>>
405
+ reviewTask(token: string, profile: string, taskId: Uuid, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewTask>>
558
406
  reviewTaskContext(token: string, profile: string, taskId: Uuid, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewTaskContext>>
559
- previewReviewTaskTemplates(token: string, profile: string, sourceProfile: string, taskId: Uuid): Promise<CaseworkOutcome<TaskTemplatePreviews>>
560
- listReviewTaskGrants(token: string, profile: string, sourceProfile: string, taskId: Uuid): Promise<CaseworkOutcome<TaskGrantList>>
561
- approveReviewTaskGrant(token: string, profile: string, sourceProfile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, approval: TaskApprovalRequest): Promise<CaseworkOutcome<TaskGrantView>>
407
+ previewReviewTaskTemplates(token: string, profile: string, options: ReviewTaskGrantReadOptions): Promise<CaseworkOutcome<TaskTemplatePreviews>>
408
+ listReviewTaskGrants(token: string, profile: string, options: ReviewTaskGrantReadOptions): Promise<CaseworkOutcome<TaskGrantList>>
409
+ approveReviewTaskGrant(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, approval: TaskApprovalRequest, sourceProfile?: string | null): Promise<CaseworkOutcome<TaskGrantView>>
562
410
  revokeReviewTaskGrant(token: string, profile: string, taskId: Uuid, grantId: string): Promise<CaseworkOutcome<TaskGrantRevocation>>
563
- claimReviewTask(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewerTask>>
564
- releaseReviewTask(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string): Promise<CaseworkOutcome<ReviewerTask>>
565
- assignReviewTask(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, request: AssignmentRequest, sourceProfile?: string): Promise<CaseworkOutcome<ReviewerTask>>
566
- delegateReviewTask(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, request: DelegateRequest, sourceProfile?: string): Promise<CaseworkOutcome<ReviewerTask>>
411
+ claimReviewTask(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewTask>>
412
+ releaseReviewTask(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string): Promise<CaseworkOutcome<ReviewTask>>
413
+ assignReviewTask(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, request: AssignmentRequest, sourceProfile?: string): Promise<CaseworkOutcome<ReviewTask>>
414
+ delegateReviewTask(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, request: DelegateRequest, sourceProfile?: string): Promise<CaseworkOutcome<ReviewTask>>
567
415
  reviewTaskDraft(token: string, profile: string, taskId: Uuid, sourceProfile?: string): Promise<CaseworkOutcome<ReviewTaskDraft | null>>
568
416
  saveReviewTaskDraft(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, draft: ReviewTaskDraftInput, sourceProfile?: string): Promise<CaseworkOutcome<ReviewTaskDraft>>
569
417
  deleteReviewTaskDraft(token: string, profile: string, taskId: Uuid, expectedRevision: SafeInteger, idempotencyKey: string, sourceProfile?: string): Promise<CaseworkOutcome<null>>
@@ -572,42 +420,23 @@ export class CaseworkClient {
572
420
  addReviewNote(token: string, profile: string, requestId: Uuid, idempotencyKey: string, note: ReviewNoteRequest, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewHistoryEntry>>
573
421
  reviewClocks(token: string, profile: string, requestId: Uuid, sourceProfile?: string | null): Promise<CaseworkOutcome<ReadonlyArray<ReviewClockOccurrence>>>
574
422
  reviewAccountability(token: string, profile: string, eventId: Uuid): Promise<CaseworkOutcome<ReviewAccountabilityRecord>>
575
- listWorkItems(token: string, profile: string, sourceProfile: string, query: ListWorkItemsQuery): Promise<CaseworkOutcome<WorkItemPage>>
576
- nextWorkItem(token: string, profile: string, sourceProfile: string, query?: NextWorkItemQuery | null): Promise<CaseworkOutcome<WorkItemPage>>
577
- getWorkItem(token: string, profile: string, sourceProfile: string, itemId: string): Promise<CaseworkOutcome<WorkItem>>
578
- previewTaskTemplates(token: string, profile: string, sourceProfile: string, itemId: string): Promise<CaseworkOutcome<TaskTemplatePreviews>>
579
- listTaskGrants(token: string, profile: string, sourceProfile: string, itemId: string): Promise<CaseworkOutcome<TaskGrantList>>
580
- approveTaskGrant(token: string, profile: string, sourceProfile: string, itemId: string, expectedRevision: SafeInteger, idempotencyKey: string, approval: TaskApprovalRequest): Promise<CaseworkOutcome<TaskGrantView>>
581
- revokeTaskGrant(token: string, profile: string, sourceProfile: string, itemId: string, grantId: string): Promise<CaseworkOutcome<TaskGrantRevocation>>
582
423
  taskAssertion(token: string, grantId: string): Promise<CaseworkOutcome<TaskAssertionResponse>>
583
424
  /** Exact empty-POST authority route for the shared remote exchange provider. */
584
425
  taskAssertionEndpoint(grantId: string): string
585
426
  taskGrantStatus(token: string, grantId: string): Promise<CaseworkOutcome<TaskGrantStatus>>
586
- claimWorkItem(token: string, profile: string, sourceProfile: string, action: CaseworkAction, idempotencyKey: string): Promise<CaseworkOutcome<MutationResponse>>
587
- releaseWorkItem(token: string, profile: string, sourceProfile: string, action: CaseworkAction, idempotencyKey: string): Promise<CaseworkOutcome<MutationResponse>>
588
- getDraft(token: string, profile: string, sourceProfile: string, itemId: string): Promise<CaseworkOutcome<DraftResponse>>
589
- saveDraft(token: string, profile: string, sourceProfile: string, itemId: string, expectedRevision: SafeInteger, idempotencyKey: string, draft: SaveDraftRequest): Promise<CaseworkOutcome<DraftResponse>>
590
- deleteDraft(token: string, profile: string, sourceProfile: string, itemId: string, expectedRevision: SafeInteger, idempotencyKey: string): Promise<CaseworkOutcome<null>>
591
- decideWorkItem(token: string, profile: string, sourceProfile: string, action: CaseworkAction, idempotencyKey: string, decision: DecideRequest): Promise<CaseworkOutcome<MutationResponse>>
592
- recoverDecision(token: string, profile: string, sourceProfile: string, itemId: string, attemptId: string, recovery: RecoverAttemptRequest): Promise<CaseworkOutcome<MutationResponse>>
593
- recoverDecisionByKey(token: string, profile: string, sourceProfile: string, itemId: string, idempotencyKey: string, recovery: RecoverAttemptRequest): Promise<CaseworkOutcome<MutationResponse>>
594
- workItemHistory(token: string, profile: string, sourceProfile: string, itemId: string, query?: WorkItemHistoryQuery | null): Promise<CaseworkOutcome<Page<HistoryEntry>>>
595
- holdings(token: string, profile: string, sourceProfile: string, query?: HoldingsQuery | null): Promise<CaseworkOutcome<Page<HoldingSummary>>>
427
+ reviewTaskHoldings(token: string, profile: string, query?: ReviewStaffingQuery | null, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewTaskPage>>
596
428
  directory(token: string, profile: string): Promise<CaseworkOutcome<DirectoryResponse>>
597
429
  directoryTargets(token: string, profile: string, query: DirectoryTargetsQuery): Promise<CaseworkOutcome<DirectoryTargetPage>>
598
430
  bootstrapDirectory(token: string, profile: string, expectedRevision: SafeInteger, idempotencyKey: string, request: BootstrapDirectoryRequest): Promise<CaseworkOutcome<DirectoryResponse>>
599
431
  updateDirectoryTeam(token: string, profile: string, teamId: string, expectedRevision: SafeInteger, idempotencyKey: string, request: DirectoryTeamUpdateRequest): Promise<CaseworkOutcome<DirectoryResponse>>
600
- workItemClocks(token: string, profile: string, sourceProfile: string, itemId: string): Promise<CaseworkOutcome<ReadonlyArray<ClockOccurrenceView>>>
601
432
  holidayRevision(token: string, profile: string, holidaySet: string, revision: SafeInteger): Promise<CaseworkOutcome<HolidaySetDocument>>
602
433
  createHolidayRevision(token: string, profile: string, idempotencyKey: string, request: HolidaySetRevisionInput): Promise<CaseworkOutcome<HolidaySetDocument>>
603
- previewClockRecompute(token: string, profile: string, request: ClockRecomputeRequest): Promise<CaseworkOutcome<ClockRecomputePreview>>
604
- applyClockRecompute(token: string, profile: string, idempotencyKey: string, request: ClockRecomputeApplyRequest): Promise<CaseworkOutcome<ClockRecomputeResult>>
434
+ previewClockRecompute(token: string, profile: string, request: ReviewClockRecomputeRequest): Promise<CaseworkOutcome<ReviewClockRecomputePreview>>
435
+ applyClockRecompute(token: string, profile: string, idempotencyKey: string, request: ReviewClockRecomputeApplyRequest): Promise<CaseworkOutcome<ReviewClockRecomputeResult>>
605
436
  absences(token: string, profile: string, query?: AbsencesQuery | null): Promise<CaseworkOutcome<AbsenceList>>
606
437
  createAbsence(token: string, profile: string, expectedRevision: SafeInteger, idempotencyKey: string, request: AbsenceInput): Promise<CaseworkOutcome<AbsenceRecord>>
607
438
  updateAbsence(token: string, profile: string, absenceId: string, expectedRevision: SafeInteger, idempotencyKey: string, request: AbsenceInput): Promise<CaseworkOutcome<AbsenceRecord>>
608
439
  deleteAbsence(token: string, profile: string, absenceId: string, expectedRevision: SafeInteger, idempotencyKey: string): Promise<CaseworkOutcome<null>>
609
- assignWorkItem(token: string, profile: string, itemId: string, expectedRevision: SafeInteger, idempotencyKey: string, request: AssignmentRequest, sourceProfile?: string | null): Promise<CaseworkOutcome<MutationResponse>>
610
- delegateWorkItem(token: string, profile: string, itemId: string, expectedRevision: SafeInteger, idempotencyKey: string, request: DelegateRequest, sourceProfile?: string | null): Promise<CaseworkOutcome<MutationResponse>>
611
- previewCaseloadMove(token: string, profile: string, movement: CaseloadMoveRequest, query?: CaseloadPreviewQuery | null, sourceProfile?: string | null): Promise<CaseworkOutcome<Page<WorkItem>>>
612
- applyCaseloadMove(token: string, profile: string, idempotencyKey: string, request: CaseloadApplyRequest, sourceProfile?: string | null): Promise<CaseworkOutcome<ReadonlyArray<CaseloadItemResult>>>
440
+ previewCaseloadMove(token: string, profile: string, movement: ReviewCaseloadMoveRequest, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewCaseloadPreview>>
441
+ applyCaseloadMove(token: string, profile: string, idempotencyKey: string, request: ReviewCaseloadApplyRequest, sourceProfile?: string | null): Promise<CaseworkOutcome<ReviewCaseloadResult>>
613
442
  }