@50arms/plugin-sdk 0.0.0-stage → 0.2.51
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.
- package/README.md +119 -2
- package/dist/card-kit.d.ts +1935 -0
- package/dist/cli.js +6091 -0
- package/dist/publish.d.ts +246 -0
- package/dist/publish.js +6066 -0
- package/dist/vite.d.ts +133 -0
- package/dist/vite.js +303 -0
- package/dist/widgets.d.ts +142 -0
- package/dist/widgets.js +14 -0
- package/package.json +81 -4
|
@@ -0,0 +1,1935 @@
|
|
|
1
|
+
declare module "@danxbot/card-kit@1" {
|
|
2
|
+
import { PagedWindow, SortValue } from '@50arms/ui';
|
|
3
|
+
import * as react from 'react';
|
|
4
|
+
import { ReactNode, ComponentProps } from 'react';
|
|
5
|
+
export { Link, useNavigate } from 'react-router';
|
|
6
|
+
|
|
7
|
+
const BOARD_ID: unique symbol;
|
|
8
|
+
const CARD_ID: unique symbol;
|
|
9
|
+
type BoardId = number & {
|
|
10
|
+
readonly [BOARD_ID]: true;
|
|
11
|
+
};
|
|
12
|
+
type CardId = number & {
|
|
13
|
+
readonly [CARD_ID]: true;
|
|
14
|
+
};
|
|
15
|
+
type CardRef = string;
|
|
16
|
+
const BOARD_REF_NUM: unique symbol;
|
|
17
|
+
const PLAN_REF_NUM: unique symbol;
|
|
18
|
+
type BoardRefNum = number & {
|
|
19
|
+
readonly [BOARD_REF_NUM]: true;
|
|
20
|
+
};
|
|
21
|
+
type PlanRefNum = number & {
|
|
22
|
+
readonly [PLAN_REF_NUM]: true;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
interface ViaKey {
|
|
26
|
+
id: number;
|
|
27
|
+
name: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
type CardTypeKey = string;
|
|
31
|
+
type MirrorProviderId = "trello" | "slack" | "asana";
|
|
32
|
+
type SourceOrigin = "danxbot" | MirrorProviderId | "";
|
|
33
|
+
interface RepoProfileCopy {
|
|
34
|
+
shipped: string;
|
|
35
|
+
repo: string;
|
|
36
|
+
}
|
|
37
|
+
type ProfileNameId = string;
|
|
38
|
+
type ProfileName = StatusReason | ProfileNameMessage;
|
|
39
|
+
|
|
40
|
+
type ListType$1 = "and" | "or" | "semicolon";
|
|
41
|
+
interface ListValue<Item> {
|
|
42
|
+
list: readonly Item[];
|
|
43
|
+
type?: ListType$1;
|
|
44
|
+
}
|
|
45
|
+
type StatusReasonId = string;
|
|
46
|
+
type StatusReasonValues = Record<string, string | number | boolean | null | StatusReason | ProfileNameMessage | StatusReasonSentences | StatusReasonLines | StatusReasonList>;
|
|
47
|
+
interface ProfileNameMessage {
|
|
48
|
+
id: ProfileNameId;
|
|
49
|
+
values: StatusReasonValues;
|
|
50
|
+
}
|
|
51
|
+
type StatusReasonList = ListValue<string | number | StatusReason | ProfileNameMessage>;
|
|
52
|
+
interface StatusReasonLines {
|
|
53
|
+
lines: StatusReason[];
|
|
54
|
+
}
|
|
55
|
+
interface StatusReasonSentences {
|
|
56
|
+
sentences: StatusReason[];
|
|
57
|
+
}
|
|
58
|
+
interface StatusReason {
|
|
59
|
+
id: StatusReasonId;
|
|
60
|
+
values: StatusReasonValues;
|
|
61
|
+
}
|
|
62
|
+
type PacingLimit = "five_hour" | "weekly" | "spend";
|
|
63
|
+
type ProvenanceSourceKind = "card" | "comment" | "session_thread" | "problem" | "url";
|
|
64
|
+
type ProvenancePartyKind = "person" | "agent";
|
|
65
|
+
type ResourceType = "plan" | "problem" | "issue" | "plan_record" | "plan_section" | "design" | "decision";
|
|
66
|
+
interface ResourceRef {
|
|
67
|
+
type: ResourceType;
|
|
68
|
+
id: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
type IssueStatus$1 = "Review" | "ToDo" | "In Progress" | "Backlog" | "Done" | "Cancelled";
|
|
72
|
+
type EffortLevelName = "min" | "very_low" | "low" | "medium" | "high" | "very_high" | "max";
|
|
73
|
+
type IssueProblemType = "design" | "question" | "action" | "decision_review";
|
|
74
|
+
type DecisionOutcome = "answered" | "rejected";
|
|
75
|
+
type IssueDependencyKind = "depends_on" | "conflict_on";
|
|
76
|
+
type IssueDispatchKind = "work" | "triage" | "recovery" | "flesh-out" | "chat" | "main-sync-repair" | "worktree-maintenance" | "manual" | "landing" | `gate-${string}`;
|
|
77
|
+
type IssueAssignmentMode = "automated" | "manual";
|
|
78
|
+
type StartCommitError = "no_repo" | "not_github_repo" | "no_token" | "github_refused" | "github_unreachable" | "unreadable_tip" | "unexpected";
|
|
79
|
+
interface IssueV2 {
|
|
80
|
+
id: CardId;
|
|
81
|
+
ref: CardRef;
|
|
82
|
+
rev: number;
|
|
83
|
+
board_id: BoardId;
|
|
84
|
+
schema_version: number;
|
|
85
|
+
type: CardTypeKey;
|
|
86
|
+
title: string;
|
|
87
|
+
description: string;
|
|
88
|
+
summary: string | null;
|
|
89
|
+
pull_request_url: string | null;
|
|
90
|
+
start_commit_sha: string | null;
|
|
91
|
+
start_commit_at: string | null;
|
|
92
|
+
start_commit_error: StartCommitError | null;
|
|
93
|
+
start_commit_error_detail: string | null;
|
|
94
|
+
parent_id: CardId | null;
|
|
95
|
+
parent_ref: CardRef | null;
|
|
96
|
+
effort_level: EffortLevelName;
|
|
97
|
+
downward_rung: EffortLevelName | null;
|
|
98
|
+
source_type: string;
|
|
99
|
+
list_id: string | null;
|
|
100
|
+
assigned_agent: string | null;
|
|
101
|
+
priority: number;
|
|
102
|
+
created_at: string;
|
|
103
|
+
updated_at: string;
|
|
104
|
+
deleted_at: string | null;
|
|
105
|
+
ready_at: string | null;
|
|
106
|
+
started_at: string | null;
|
|
107
|
+
completed_at: string | null;
|
|
108
|
+
cancelled_at: string | null;
|
|
109
|
+
archived_at: string | null;
|
|
110
|
+
wake_at: string | null;
|
|
111
|
+
wake_action: "ready" | "review" | null;
|
|
112
|
+
dispatch_id: string | null;
|
|
113
|
+
dispatch_started_at: string | null;
|
|
114
|
+
dispatch_kind: IssueDispatchKind | null;
|
|
115
|
+
assignment_mode: IssueAssignmentMode;
|
|
116
|
+
card_branch: string | null;
|
|
117
|
+
last_commit_sha: string | null;
|
|
118
|
+
card_branch_retired_at: string | null;
|
|
119
|
+
card_branch_retired_reason: string | null;
|
|
120
|
+
card_branch_retired_by: string | null;
|
|
121
|
+
chat_session_uuid: string | null;
|
|
122
|
+
slack_session_uuid: string | null;
|
|
123
|
+
blocked_at: string | null;
|
|
124
|
+
blocked_reason: string | null;
|
|
125
|
+
blocked_by: string | null;
|
|
126
|
+
blocked_via_key_id: number | null;
|
|
127
|
+
blocked_via_key_name: string | null;
|
|
128
|
+
blocked_team_agent_id: number | null;
|
|
129
|
+
open_problem_count: number;
|
|
130
|
+
triage_ice_total: number | null;
|
|
131
|
+
triage_ice_i: number | null;
|
|
132
|
+
triage_ice_c: number | null;
|
|
133
|
+
triage_ice_e: number | null;
|
|
134
|
+
triage_confidence: number | null;
|
|
135
|
+
triage_last_status: string;
|
|
136
|
+
triage_last_explain: string;
|
|
137
|
+
terminal_derived: boolean;
|
|
138
|
+
in_progress_derived: boolean;
|
|
139
|
+
dispatchable_derived: boolean;
|
|
140
|
+
triage_enabled: boolean;
|
|
141
|
+
content_hash: string;
|
|
142
|
+
}
|
|
143
|
+
interface IssueDisplayV2 extends IssueV2 {
|
|
144
|
+
status_derived: IssueStatus$1;
|
|
145
|
+
}
|
|
146
|
+
interface CommentResourceTag {
|
|
147
|
+
tag: string;
|
|
148
|
+
resource_type: ResourceType | null;
|
|
149
|
+
resource_id: string | null;
|
|
150
|
+
}
|
|
151
|
+
interface AuthorV2 {
|
|
152
|
+
name: string;
|
|
153
|
+
kind: "agent" | "person";
|
|
154
|
+
avatar_url: string | null;
|
|
155
|
+
reason: StatusReason | null;
|
|
156
|
+
team_agent_id: number | null;
|
|
157
|
+
}
|
|
158
|
+
type CommentReplyStateName = "sent" | "seen" | "responded";
|
|
159
|
+
type CommentRecipientV2 = {
|
|
160
|
+
kind: "agent";
|
|
161
|
+
by: AuthorV2;
|
|
162
|
+
reachability: CommentReachabilityV2;
|
|
163
|
+
} | {
|
|
164
|
+
kind: "none";
|
|
165
|
+
waiting_on: {
|
|
166
|
+
kind: "plan";
|
|
167
|
+
id: PlanRefNum;
|
|
168
|
+
ref: string;
|
|
169
|
+
name: string;
|
|
170
|
+
} | {
|
|
171
|
+
kind: "card";
|
|
172
|
+
id: string;
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
type CommentReachabilityV2 = {
|
|
176
|
+
state: "listening";
|
|
177
|
+
} | {
|
|
178
|
+
state: "busy";
|
|
179
|
+
} | {
|
|
180
|
+
state: "compacting";
|
|
181
|
+
since: string;
|
|
182
|
+
} | {
|
|
183
|
+
state: "listener_down";
|
|
184
|
+
} | {
|
|
185
|
+
state: "paused_by_agent";
|
|
186
|
+
reason: string;
|
|
187
|
+
} | {
|
|
188
|
+
state: "usage_limit";
|
|
189
|
+
limit: PacingLimit;
|
|
190
|
+
until: string;
|
|
191
|
+
};
|
|
192
|
+
type ReplyRecipientV2 = {
|
|
193
|
+
kind: "agent";
|
|
194
|
+
by: AuthorV2;
|
|
195
|
+
} | Extract<CommentRecipientV2, {
|
|
196
|
+
kind: "none";
|
|
197
|
+
}>;
|
|
198
|
+
interface CommentReplyStateV2 {
|
|
199
|
+
state: CommentReplyStateName;
|
|
200
|
+
recipient: ReplyRecipientV2;
|
|
201
|
+
reply_comment_id: number | null;
|
|
202
|
+
}
|
|
203
|
+
type ChecklistItemStatus$1 = "incomplete" | "failing" | "passing" | "cancelled" | "deferred";
|
|
204
|
+
interface ChecklistV2 {
|
|
205
|
+
id: number;
|
|
206
|
+
issue_id: CardId;
|
|
207
|
+
ordinal: number;
|
|
208
|
+
name: string;
|
|
209
|
+
created_at: string;
|
|
210
|
+
updated_at: string;
|
|
211
|
+
deleted_at: string | null;
|
|
212
|
+
}
|
|
213
|
+
interface ChecklistItemV2 {
|
|
214
|
+
id: number;
|
|
215
|
+
checklist_id: number;
|
|
216
|
+
ordinal: number;
|
|
217
|
+
label: string;
|
|
218
|
+
detail: string;
|
|
219
|
+
status: ChecklistItemStatus$1;
|
|
220
|
+
created_at: string;
|
|
221
|
+
updated_at: string;
|
|
222
|
+
deleted_at: string | null;
|
|
223
|
+
}
|
|
224
|
+
interface ChecklistWithItemsV2 extends ChecklistV2 {
|
|
225
|
+
items: ChecklistItemV2[];
|
|
226
|
+
}
|
|
227
|
+
type ThumbnailStatus = "ready" | "not_image" | "failed" | "pending";
|
|
228
|
+
interface IssueAttachmentV2 {
|
|
229
|
+
id: number;
|
|
230
|
+
issue_id: CardId;
|
|
231
|
+
source_type: string;
|
|
232
|
+
external_id: string;
|
|
233
|
+
url: string;
|
|
234
|
+
filename: string;
|
|
235
|
+
mime: string;
|
|
236
|
+
is_primary: boolean;
|
|
237
|
+
thumbnail_status: ThumbnailStatus;
|
|
238
|
+
thumbnail_url: string | null;
|
|
239
|
+
thumbnail_error: string | null;
|
|
240
|
+
created_at: string;
|
|
241
|
+
updated_at: string;
|
|
242
|
+
deleted_at: string | null;
|
|
243
|
+
}
|
|
244
|
+
type QualityGateStatus = "pending" | "pass" | "fail" | "skipped";
|
|
245
|
+
type GateRoundReviewerKind = "session" | "dispatch" | "person";
|
|
246
|
+
type GateRoundVerdict = "pass" | "fail" | "retry" | "skipped";
|
|
247
|
+
interface GateRoundV2 {
|
|
248
|
+
id: number;
|
|
249
|
+
number: number;
|
|
250
|
+
reviewed_ref: string | null;
|
|
251
|
+
reviewer_kind: GateRoundReviewerKind;
|
|
252
|
+
reviewer_name: string;
|
|
253
|
+
by: AuthorV2;
|
|
254
|
+
via_key: {
|
|
255
|
+
id: number;
|
|
256
|
+
name: string;
|
|
257
|
+
} | null;
|
|
258
|
+
reviewer_dispatch_id: string | null;
|
|
259
|
+
review_grade: EffortLevelName | null;
|
|
260
|
+
model: string | null;
|
|
261
|
+
effort: string | null;
|
|
262
|
+
verdict: GateRoundVerdict;
|
|
263
|
+
summary: string;
|
|
264
|
+
recorded_at: string;
|
|
265
|
+
}
|
|
266
|
+
interface ProvenanceRecordV2 {
|
|
267
|
+
id: number;
|
|
268
|
+
quote: string | null;
|
|
269
|
+
reasoning: string | null;
|
|
270
|
+
source: ProvenanceSourceV2 | null;
|
|
271
|
+
recorded_by: AuthorV2;
|
|
272
|
+
recorded_at: string;
|
|
273
|
+
}
|
|
274
|
+
interface ProvenanceSourceV2 {
|
|
275
|
+
kind: ProvenanceSourceKind;
|
|
276
|
+
ref: string;
|
|
277
|
+
card_id: CardRef | null;
|
|
278
|
+
author: AuthorV2 | null;
|
|
279
|
+
at: string | null;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
type QualityGatePhase = "plan" | "code";
|
|
283
|
+
type ControlValue = boolean | string;
|
|
284
|
+
type WorkMarkResourceType = "plan" | "problem" | "issue" | "plan_record" | "plan_section" | "design" | "decision";
|
|
285
|
+
interface WorkMarkResource extends ResourceRef {
|
|
286
|
+
type: WorkMarkResourceType;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
type ControlSource = "card" | "plan" | "board" | "team" | "system";
|
|
290
|
+
interface ControlFallback {
|
|
291
|
+
readonly value: ControlValue;
|
|
292
|
+
readonly source: Exclude<ControlSource, "card">;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
type ActorKind = "person" | "system" | "dispatch_agent" | "worker" | "agent_profile" | "plan_session" | "unresolved";
|
|
296
|
+
interface ActorRef {
|
|
297
|
+
kind: ActorKind;
|
|
298
|
+
name: string;
|
|
299
|
+
reason: StatusReason | ProfileName | null;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
type DocsPromotionStatus = "running" | "drafted" | "failed" | "landing" | "landed" | "superseded" | "waiting";
|
|
303
|
+
|
|
304
|
+
type DocsLandStage = "direct" | "resolving" | "needs_person" | "pull_request";
|
|
305
|
+
|
|
306
|
+
type DocsLandWorker = {
|
|
307
|
+
kind: "dispatch";
|
|
308
|
+
dispatch_id: string;
|
|
309
|
+
} | {
|
|
310
|
+
kind: "session";
|
|
311
|
+
session_id: string;
|
|
312
|
+
plan_id: PlanRefNum;
|
|
313
|
+
};
|
|
314
|
+
interface DocsLandWire {
|
|
315
|
+
land_stage: DocsLandStage | null;
|
|
316
|
+
land_conflict_files: string[] | null;
|
|
317
|
+
land_reason: string | null;
|
|
318
|
+
land_worker: DocsLandWorker | null;
|
|
319
|
+
land_problem_ref_num: number | null;
|
|
320
|
+
land_pull_request_url: string | null;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
interface DocsReviewView extends DocsLandWire {
|
|
324
|
+
plan_id: PlanRefNum;
|
|
325
|
+
repo_name: string;
|
|
326
|
+
attempt: number;
|
|
327
|
+
status: DocsPromotionStatus;
|
|
328
|
+
summary: string;
|
|
329
|
+
head_sha: string;
|
|
330
|
+
change_counts: {
|
|
331
|
+
added: number;
|
|
332
|
+
changed: number;
|
|
333
|
+
removed: number;
|
|
334
|
+
} | null;
|
|
335
|
+
landed_sha: string | null;
|
|
336
|
+
failure_reason: string | null;
|
|
337
|
+
waiting_board_id: BoardRefNum | null;
|
|
338
|
+
approve_solution_id: number;
|
|
339
|
+
withdraw_solution_id: number;
|
|
340
|
+
compare_url: string | null;
|
|
341
|
+
updated_at: string;
|
|
342
|
+
}
|
|
343
|
+
type DecisionRecordKind = "design" | "business_rule" | "architecture" | "other";
|
|
344
|
+
type DecisionRecordAction = "created" | "changed" | "deleted" | "restored";
|
|
345
|
+
type DecisionMadeBy = "agent" | "human";
|
|
346
|
+
type DecisionApprovalAction = "approve" | "unapprove";
|
|
347
|
+
|
|
348
|
+
interface DecisionApprovalState {
|
|
349
|
+
approved: boolean;
|
|
350
|
+
by_user_id: number | null;
|
|
351
|
+
by_name: string | null;
|
|
352
|
+
at: string | null;
|
|
353
|
+
}
|
|
354
|
+
interface DecisionRecordPage {
|
|
355
|
+
offset: number;
|
|
356
|
+
target_found: boolean | null;
|
|
357
|
+
}
|
|
358
|
+
type BrowserCheckStatus = "checked" | "not_checked" | "not_recorded";
|
|
359
|
+
|
|
360
|
+
type ListType = "archived" | "review" | "ready" | "in_progress" | "completed" | "cancelled";
|
|
361
|
+
|
|
362
|
+
interface DesignOptionGroup {
|
|
363
|
+
key: string;
|
|
364
|
+
label: string;
|
|
365
|
+
options: string[];
|
|
366
|
+
multiple: boolean;
|
|
367
|
+
recommended: string[];
|
|
368
|
+
}
|
|
369
|
+
type OptionSelection = Record<string, string[]>;
|
|
370
|
+
|
|
371
|
+
interface SolutionContent {
|
|
372
|
+
title: string;
|
|
373
|
+
body: string;
|
|
374
|
+
pro: string;
|
|
375
|
+
con: string;
|
|
376
|
+
recommended: boolean;
|
|
377
|
+
}
|
|
378
|
+
type DecisionReviewChoiceKind = "accept" | "revert" | "restore" | "reject";
|
|
379
|
+
|
|
380
|
+
interface V2CopyComment {
|
|
381
|
+
author: string;
|
|
382
|
+
text: string;
|
|
383
|
+
metadata: unknown | null;
|
|
384
|
+
answers_decision: V2CopyDecisionRef | null;
|
|
385
|
+
tags: V2CopyCommentTag[];
|
|
386
|
+
team_agent: string | null;
|
|
387
|
+
author_email: string | null;
|
|
388
|
+
created_at: string;
|
|
389
|
+
updated_at: string;
|
|
390
|
+
}
|
|
391
|
+
interface V2CopyDecisionRef {
|
|
392
|
+
problem: number;
|
|
393
|
+
decision: number;
|
|
394
|
+
}
|
|
395
|
+
type V2CopyCommentTag = {
|
|
396
|
+
kind: "problem";
|
|
397
|
+
index: number;
|
|
398
|
+
} | {
|
|
399
|
+
kind: "design";
|
|
400
|
+
index: number;
|
|
401
|
+
} | {
|
|
402
|
+
kind: "decision";
|
|
403
|
+
index: number;
|
|
404
|
+
} | {
|
|
405
|
+
kind: "label";
|
|
406
|
+
text: string;
|
|
407
|
+
};
|
|
408
|
+
interface V2CopyBlobRef {
|
|
409
|
+
sha256: string;
|
|
410
|
+
size: number;
|
|
411
|
+
}
|
|
412
|
+
interface V2CopyAttachment {
|
|
413
|
+
filename: string;
|
|
414
|
+
primary: boolean;
|
|
415
|
+
created_at: string;
|
|
416
|
+
updated_at: string;
|
|
417
|
+
blob: V2CopyBlobRef;
|
|
418
|
+
}
|
|
419
|
+
interface V2CopyDesignRevision {
|
|
420
|
+
revision_no: number;
|
|
421
|
+
target: string;
|
|
422
|
+
design_dir: string;
|
|
423
|
+
source_files: {
|
|
424
|
+
path: string;
|
|
425
|
+
content: string;
|
|
426
|
+
}[];
|
|
427
|
+
option_groups: DesignOptionGroup[];
|
|
428
|
+
checklist: string[];
|
|
429
|
+
browser_check: BrowserCheckStatus;
|
|
430
|
+
browser_check_note: string;
|
|
431
|
+
built_from_commit: string;
|
|
432
|
+
note: string;
|
|
433
|
+
created_by: string;
|
|
434
|
+
created_at: string;
|
|
435
|
+
bundle: {
|
|
436
|
+
blob: V2CopyBlobRef;
|
|
437
|
+
} | null;
|
|
438
|
+
screenshot: {
|
|
439
|
+
blob: V2CopyBlobRef;
|
|
440
|
+
} | null;
|
|
441
|
+
}
|
|
442
|
+
interface V2CopyDesignDecision {
|
|
443
|
+
revision_no: number;
|
|
444
|
+
outcome: DesignDecisionOutcome;
|
|
445
|
+
note: string | null;
|
|
446
|
+
decided_by: string;
|
|
447
|
+
created_at: string;
|
|
448
|
+
retracted_at: string | null;
|
|
449
|
+
options: OptionSelection | null;
|
|
450
|
+
}
|
|
451
|
+
interface V2CopyDesign {
|
|
452
|
+
ref_num: number;
|
|
453
|
+
design_no: number;
|
|
454
|
+
title: string;
|
|
455
|
+
created_by: string;
|
|
456
|
+
created_at: string;
|
|
457
|
+
archived_at: string | null;
|
|
458
|
+
revisions: V2CopyDesignRevision[];
|
|
459
|
+
decisions: V2CopyDesignDecision[];
|
|
460
|
+
}
|
|
461
|
+
interface V2CopyControlOverride {
|
|
462
|
+
key: string;
|
|
463
|
+
value: unknown;
|
|
464
|
+
}
|
|
465
|
+
interface V2CopyAgentNote {
|
|
466
|
+
author: string;
|
|
467
|
+
text: string;
|
|
468
|
+
team_agent: string | null;
|
|
469
|
+
metadata: Record<string, unknown> | null;
|
|
470
|
+
ordinal: number;
|
|
471
|
+
created_at: string;
|
|
472
|
+
updated_at: string;
|
|
473
|
+
}
|
|
474
|
+
interface V2CopyDecisionApproval {
|
|
475
|
+
action: DecisionApprovalAction;
|
|
476
|
+
by_email: string | null;
|
|
477
|
+
by_name: string;
|
|
478
|
+
at: string;
|
|
479
|
+
}
|
|
480
|
+
interface V2CopyDecisionVersion {
|
|
481
|
+
version_no: number;
|
|
482
|
+
action: DecisionRecordAction;
|
|
483
|
+
title: string;
|
|
484
|
+
text: string;
|
|
485
|
+
kind: DecisionRecordKind;
|
|
486
|
+
impact: number;
|
|
487
|
+
confidence: number;
|
|
488
|
+
made_by: DecisionMadeBy;
|
|
489
|
+
made_by_email: string | null;
|
|
490
|
+
made_by_name: string | null;
|
|
491
|
+
made_by_team_agent: string | null;
|
|
492
|
+
provenance: V2CopyProvenanceRecord[];
|
|
493
|
+
author: string;
|
|
494
|
+
team_agent: string | null;
|
|
495
|
+
created_at: string;
|
|
496
|
+
approvals: V2CopyDecisionApproval[];
|
|
497
|
+
}
|
|
498
|
+
interface V2CopyDecisionRecord {
|
|
499
|
+
ref_num: number;
|
|
500
|
+
versions: V2CopyDecisionVersion[];
|
|
501
|
+
}
|
|
502
|
+
interface V2CopyAc {
|
|
503
|
+
title: string;
|
|
504
|
+
checked: boolean;
|
|
505
|
+
}
|
|
506
|
+
interface V2CopyChecklist {
|
|
507
|
+
name: string;
|
|
508
|
+
items: V2CopyChecklistItem[];
|
|
509
|
+
}
|
|
510
|
+
interface V2CopyChecklistItem {
|
|
511
|
+
label: string;
|
|
512
|
+
detail: string;
|
|
513
|
+
status: ChecklistItemStatus$1;
|
|
514
|
+
}
|
|
515
|
+
interface V2CopyDependency {
|
|
516
|
+
kind: IssueDependencyKind;
|
|
517
|
+
target_id: string;
|
|
518
|
+
reason: string;
|
|
519
|
+
}
|
|
520
|
+
interface V2CopyRetro {
|
|
521
|
+
good: string;
|
|
522
|
+
bad: string;
|
|
523
|
+
correctable_danxbot_problem: boolean;
|
|
524
|
+
correctable_danxbot_problem_description: string;
|
|
525
|
+
action_item_ids: string[];
|
|
526
|
+
commits: {
|
|
527
|
+
sha: string;
|
|
528
|
+
subject: string;
|
|
529
|
+
}[];
|
|
530
|
+
tests: V2CopyRetroTest[];
|
|
531
|
+
}
|
|
532
|
+
interface V2CopyRetroTest {
|
|
533
|
+
name: string;
|
|
534
|
+
kind: "group" | "e2e";
|
|
535
|
+
num_tests: number;
|
|
536
|
+
num_assertions: number | null;
|
|
537
|
+
num_passing_tests: number;
|
|
538
|
+
num_passing_assertions: number | null;
|
|
539
|
+
duration_ms: number;
|
|
540
|
+
}
|
|
541
|
+
interface V2CopyMirror {
|
|
542
|
+
target_type: MirrorProviderId;
|
|
543
|
+
target_ref: string;
|
|
544
|
+
target_url: string;
|
|
545
|
+
source_ref: string;
|
|
546
|
+
}
|
|
547
|
+
type SourceMirrorLocation = Record<MirrorProviderId, string | null>;
|
|
548
|
+
interface V2CopyQualityGate {
|
|
549
|
+
gate: string;
|
|
550
|
+
decision_note: string;
|
|
551
|
+
status: QualityGateStatus;
|
|
552
|
+
message: string;
|
|
553
|
+
completed_at: string | null;
|
|
554
|
+
budget_started_at: string;
|
|
555
|
+
rounds: V2CopyGateRound[];
|
|
556
|
+
reviewed_ref: string | null;
|
|
557
|
+
decided_by: string | null;
|
|
558
|
+
owed: boolean;
|
|
559
|
+
}
|
|
560
|
+
type V2CopyGateRound = Omit<GateRoundV2, "id" | "by" | "via_key">;
|
|
561
|
+
interface V2CopySolution extends SolutionContent {
|
|
562
|
+
removed: boolean;
|
|
563
|
+
design_index: number | null;
|
|
564
|
+
decision_choice: V2CopyDecisionChoice | null;
|
|
565
|
+
steps: V2CopyStep[];
|
|
566
|
+
}
|
|
567
|
+
interface V2CopyDecisionChoice {
|
|
568
|
+
kind: DecisionReviewChoiceKind;
|
|
569
|
+
version_no: number;
|
|
570
|
+
}
|
|
571
|
+
interface V2CopyDecisionReview {
|
|
572
|
+
record_index: number;
|
|
573
|
+
answered_version_no: number | null;
|
|
574
|
+
}
|
|
575
|
+
interface V2CopyStep {
|
|
576
|
+
title: string;
|
|
577
|
+
description: string | null;
|
|
578
|
+
steps: V2CopyStep[];
|
|
579
|
+
}
|
|
580
|
+
interface V2CopyDecision {
|
|
581
|
+
solution_index: number | null;
|
|
582
|
+
outcome: DecisionOutcome;
|
|
583
|
+
freeform: string | null;
|
|
584
|
+
note: string | null;
|
|
585
|
+
decided_by: string;
|
|
586
|
+
decided_at: string;
|
|
587
|
+
retracted_at: string | null;
|
|
588
|
+
provenance: V2CopyProvenanceRecord | null;
|
|
589
|
+
}
|
|
590
|
+
interface V2CopyProvenanceParty {
|
|
591
|
+
kind: ProvenancePartyKind;
|
|
592
|
+
email: string | null;
|
|
593
|
+
team_agent: string | null;
|
|
594
|
+
name: string;
|
|
595
|
+
}
|
|
596
|
+
interface V2CopyProvenanceSource {
|
|
597
|
+
kind: ProvenanceSourceKind;
|
|
598
|
+
ref: string;
|
|
599
|
+
comment_index: number | null;
|
|
600
|
+
problem_index: number | null;
|
|
601
|
+
card_linked: boolean;
|
|
602
|
+
author: V2CopyProvenanceParty | null;
|
|
603
|
+
at: string | null;
|
|
604
|
+
}
|
|
605
|
+
interface V2CopyProvenanceRecord {
|
|
606
|
+
quote: string | null;
|
|
607
|
+
reasoning: string | null;
|
|
608
|
+
source: V2CopyProvenanceSource | null;
|
|
609
|
+
recorded_by: V2CopyProvenanceParty;
|
|
610
|
+
recorded_at: string;
|
|
611
|
+
}
|
|
612
|
+
interface V2CopyProblem {
|
|
613
|
+
ref_num: number;
|
|
614
|
+
statement: string;
|
|
615
|
+
context: string | null;
|
|
616
|
+
type: IssueProblemType;
|
|
617
|
+
summary: string | null;
|
|
618
|
+
design_element: string | null;
|
|
619
|
+
decision_review: V2CopyDecisionReview | null;
|
|
620
|
+
removed: boolean;
|
|
621
|
+
solutions: V2CopySolution[];
|
|
622
|
+
decisions: V2CopyDecision[];
|
|
623
|
+
}
|
|
624
|
+
interface V2CopyIssue {
|
|
625
|
+
id: string;
|
|
626
|
+
parent_id: string | null;
|
|
627
|
+
type: CardTypeKey;
|
|
628
|
+
title: string;
|
|
629
|
+
description: string;
|
|
630
|
+
summary: string | null;
|
|
631
|
+
priority: number;
|
|
632
|
+
effort_level: EffortLevelName | null;
|
|
633
|
+
assigned_agent: string | null;
|
|
634
|
+
ready_at: string | null;
|
|
635
|
+
completed_at: string | null;
|
|
636
|
+
cancelled_at: string | null;
|
|
637
|
+
archived_at: string | null;
|
|
638
|
+
blocked_at: string | null;
|
|
639
|
+
blocked_reason: string | null;
|
|
640
|
+
ac: V2CopyAc[];
|
|
641
|
+
checklists: V2CopyChecklist[];
|
|
642
|
+
comments: V2CopyComment[];
|
|
643
|
+
agent_notes: V2CopyAgentNote[];
|
|
644
|
+
decision_records: V2CopyDecisionRecord[];
|
|
645
|
+
created_tags: V2CopyCommentTag[];
|
|
646
|
+
dependencies: V2CopyDependency[];
|
|
647
|
+
retro: V2CopyRetro | null;
|
|
648
|
+
mirrors: V2CopyMirror[];
|
|
649
|
+
quality_gates: V2CopyQualityGate[];
|
|
650
|
+
problems: V2CopyProblem[];
|
|
651
|
+
triage_enabled: boolean;
|
|
652
|
+
attachments: V2CopyAttachment[];
|
|
653
|
+
designs: V2CopyDesign[];
|
|
654
|
+
list_name: string | null;
|
|
655
|
+
list_type: ListType | null;
|
|
656
|
+
control_overrides: V2CopyControlOverride[];
|
|
657
|
+
unknown_fields: V2CopyUnknownField[];
|
|
658
|
+
}
|
|
659
|
+
interface V2CopyUnknownField {
|
|
660
|
+
path: string;
|
|
661
|
+
value: unknown;
|
|
662
|
+
}
|
|
663
|
+
interface V2CopyPayload {
|
|
664
|
+
schema_version: number;
|
|
665
|
+
issues: V2CopyIssue[];
|
|
666
|
+
source_mirror_location: SourceMirrorLocation;
|
|
667
|
+
blobs: Record<string, string>;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
interface HolderAgentPause {
|
|
671
|
+
reason: string;
|
|
672
|
+
since: string;
|
|
673
|
+
until: string;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
interface AgentIdentity {
|
|
677
|
+
id: number;
|
|
678
|
+
name: string;
|
|
679
|
+
avatar_url: string | null;
|
|
680
|
+
}
|
|
681
|
+
type AssignedAgentKind = "person" | "session" | "worker" | "label";
|
|
682
|
+
|
|
683
|
+
interface UsageTokenCounts {
|
|
684
|
+
input: number;
|
|
685
|
+
output: number;
|
|
686
|
+
cacheRead: number;
|
|
687
|
+
cacheWrite: number;
|
|
688
|
+
}
|
|
689
|
+
interface UsageSlice {
|
|
690
|
+
tokens: UsageTokenCounts;
|
|
691
|
+
costUsd: number;
|
|
692
|
+
}
|
|
693
|
+
interface UsageTotals extends UsageTokenCounts {
|
|
694
|
+
cacheWrite5m: number;
|
|
695
|
+
cacheWrite1h: number;
|
|
696
|
+
cacheWriteUnsplit: number;
|
|
697
|
+
}
|
|
698
|
+
interface UsageModelRow extends UsageSlice {
|
|
699
|
+
model: string | null;
|
|
700
|
+
}
|
|
701
|
+
type UsageKind = "work" | "operator-session" | `gate:${string}` | "triage" | "maintenance" | "chat" | "other";
|
|
702
|
+
interface UsageKindRow extends UsageSlice {
|
|
703
|
+
kind: UsageKind;
|
|
704
|
+
label: string;
|
|
705
|
+
}
|
|
706
|
+
type UsageSubagentTypeKey = "main" | "unknown" | "unattributed" | `agent:${string}`;
|
|
707
|
+
interface UsageSubagentTypeRow extends UsageSlice {
|
|
708
|
+
key: UsageSubagentTypeKey;
|
|
709
|
+
label: string;
|
|
710
|
+
sourceCount: number;
|
|
711
|
+
}
|
|
712
|
+
interface UsageTiming {
|
|
713
|
+
apiMs: number;
|
|
714
|
+
agentMs: number;
|
|
715
|
+
linesAdded: number;
|
|
716
|
+
linesRemoved: number;
|
|
717
|
+
}
|
|
718
|
+
interface UsageActivity {
|
|
719
|
+
activeMinutes: number;
|
|
720
|
+
agentMinutes: number;
|
|
721
|
+
tokens: number;
|
|
722
|
+
costUsd: number;
|
|
723
|
+
tokensPerMinute: number;
|
|
724
|
+
measuredSince: number;
|
|
725
|
+
}
|
|
726
|
+
interface UsageSummary {
|
|
727
|
+
totals: UsageTotals;
|
|
728
|
+
costUsd: number;
|
|
729
|
+
byModel: UsageModelRow[];
|
|
730
|
+
byKind: UsageKindRow[];
|
|
731
|
+
bySubagentType: UsageSubagentTypeRow[];
|
|
732
|
+
dispatchCount: number;
|
|
733
|
+
operatorAttributionSince: number | null;
|
|
734
|
+
timing: UsageTiming;
|
|
735
|
+
timingMeasuredSince: number | null;
|
|
736
|
+
activity: UsageActivity | null;
|
|
737
|
+
}
|
|
738
|
+
type UsageErrorCode = "unattributable_dispatch" | "usage_inconsistent";
|
|
739
|
+
interface UsageError {
|
|
740
|
+
error: {
|
|
741
|
+
code: UsageErrorCode;
|
|
742
|
+
message: string;
|
|
743
|
+
dispatchId: string;
|
|
744
|
+
};
|
|
745
|
+
}
|
|
746
|
+
type CardUsage = UsageSummary | UsageError | null;
|
|
747
|
+
interface DesignSourceFile {
|
|
748
|
+
path: string;
|
|
749
|
+
content: string;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
interface CommentTagOption extends CommentResourceTag {
|
|
753
|
+
name: string | null;
|
|
754
|
+
card_id: CardRef | null;
|
|
755
|
+
}
|
|
756
|
+
interface RelationPageView {
|
|
757
|
+
readonly limit: number;
|
|
758
|
+
readonly total: number;
|
|
759
|
+
readonly next_cursor: string | null;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
interface DescendantNeedsYouView {
|
|
763
|
+
readonly card_id: CardRef;
|
|
764
|
+
readonly card_title: string;
|
|
765
|
+
readonly card_status: string;
|
|
766
|
+
readonly problems: readonly {
|
|
767
|
+
readonly ref_num: number;
|
|
768
|
+
readonly type: IssueProblemType;
|
|
769
|
+
readonly statement: string;
|
|
770
|
+
readonly created_at: string;
|
|
771
|
+
}[];
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
interface ReadinessBlocker {
|
|
775
|
+
worker_id: string;
|
|
776
|
+
incomplete_count: number;
|
|
777
|
+
items: {
|
|
778
|
+
id: string;
|
|
779
|
+
label: string;
|
|
780
|
+
label_message: StatusReason;
|
|
781
|
+
reason: string;
|
|
782
|
+
reason_message: StatusReason;
|
|
783
|
+
status: string;
|
|
784
|
+
}[];
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
type DispatchKeyRefusal = {
|
|
788
|
+
reason: "role_exceeds_owner";
|
|
789
|
+
missingPermissions: readonly string[];
|
|
790
|
+
} | {
|
|
791
|
+
reason: "owner_terms_not_accepted";
|
|
792
|
+
} | {
|
|
793
|
+
reason: "owner_not_member";
|
|
794
|
+
} | {
|
|
795
|
+
reason: "profile_role_missing";
|
|
796
|
+
};
|
|
797
|
+
|
|
798
|
+
interface DispatchKeyBlocker {
|
|
799
|
+
worker_id: string;
|
|
800
|
+
owner_user_id: number;
|
|
801
|
+
owner_username: string;
|
|
802
|
+
reason: DispatchKeyRefusal["reason"];
|
|
803
|
+
detail: string;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
type PreGateHold = {
|
|
807
|
+
kind: "awaiting_person";
|
|
808
|
+
} | {
|
|
809
|
+
kind: "repo_designs_setting_up";
|
|
810
|
+
plan: {
|
|
811
|
+
id: number;
|
|
812
|
+
name: string;
|
|
813
|
+
};
|
|
814
|
+
} | {
|
|
815
|
+
kind: "repo_designs_off";
|
|
816
|
+
} | {
|
|
817
|
+
kind: "board_needs_repo";
|
|
818
|
+
} | {
|
|
819
|
+
kind: "decided_by_person";
|
|
820
|
+
gate: string;
|
|
821
|
+
decided_by: string;
|
|
822
|
+
};
|
|
823
|
+
|
|
824
|
+
type PickerRouting = "gate" | "queued" | "not_queued" | "skip" | "terminal_or_container";
|
|
825
|
+
interface DispatchableExplainView {
|
|
826
|
+
id: CardRef;
|
|
827
|
+
dispatchable: boolean;
|
|
828
|
+
self_dispatchable: boolean;
|
|
829
|
+
ancestor_blocked: boolean;
|
|
830
|
+
next_pre_gate: string | null;
|
|
831
|
+
pre_gate_hold: PreGateHold | null;
|
|
832
|
+
pre_gate_hold_reason: StatusReason | null;
|
|
833
|
+
blocking_gates: {
|
|
834
|
+
gate: string;
|
|
835
|
+
detail: string;
|
|
836
|
+
}[];
|
|
837
|
+
picker_routing: PickerRouting;
|
|
838
|
+
dispatch_key_blockers: DispatchKeyBlocker[];
|
|
839
|
+
worker_readiness_blockers: ReadinessBlocker[];
|
|
840
|
+
agent_wait: StatusReason | null;
|
|
841
|
+
}
|
|
842
|
+
interface BuildGradeView {
|
|
843
|
+
readonly grade: string;
|
|
844
|
+
readonly model: string;
|
|
845
|
+
readonly effort: string;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
type IssueStatus = "Review" | "ToDo" | "In Progress" | "Backlog" | "Done" | "Cancelled";
|
|
849
|
+
interface InheritedBlockedViewV2 {
|
|
850
|
+
id: string;
|
|
851
|
+
reason: string;
|
|
852
|
+
}
|
|
853
|
+
interface WaitingOnViewV2 {
|
|
854
|
+
by: string[];
|
|
855
|
+
reason: string;
|
|
856
|
+
timestamp: string;
|
|
857
|
+
}
|
|
858
|
+
interface DependencyPullRequestViewV2 {
|
|
859
|
+
pull_request_url: string;
|
|
860
|
+
merged: boolean;
|
|
861
|
+
holding: boolean;
|
|
862
|
+
branch: string | null;
|
|
863
|
+
}
|
|
864
|
+
interface ConflictEntryViewV2 {
|
|
865
|
+
id: string;
|
|
866
|
+
reason: string;
|
|
867
|
+
}
|
|
868
|
+
interface IceViewV2 {
|
|
869
|
+
total: number | null;
|
|
870
|
+
i: number | null;
|
|
871
|
+
c: number | null;
|
|
872
|
+
e: number | null;
|
|
873
|
+
}
|
|
874
|
+
interface TriageHistoryEntryViewV2 {
|
|
875
|
+
timestamp: string;
|
|
876
|
+
status: string;
|
|
877
|
+
explain: string;
|
|
878
|
+
ice: IceViewV2;
|
|
879
|
+
confidence: number | null;
|
|
880
|
+
}
|
|
881
|
+
interface TriageViewV2 {
|
|
882
|
+
last_status: string;
|
|
883
|
+
last_explain: string;
|
|
884
|
+
ice: IceViewV2;
|
|
885
|
+
confidence: number | null;
|
|
886
|
+
history: TriageHistoryEntryViewV2[];
|
|
887
|
+
}
|
|
888
|
+
interface RetroTestViewV2 {
|
|
889
|
+
name: string;
|
|
890
|
+
kind: "group" | "e2e";
|
|
891
|
+
num_tests: number;
|
|
892
|
+
num_assertions: number | null;
|
|
893
|
+
num_passing_tests: number;
|
|
894
|
+
num_passing_assertions: number | null;
|
|
895
|
+
duration_ms: number;
|
|
896
|
+
}
|
|
897
|
+
interface RetroViewV2 {
|
|
898
|
+
good: string;
|
|
899
|
+
bad: string;
|
|
900
|
+
correctable_danxbot_problem: boolean;
|
|
901
|
+
correctable_danxbot_problem_description: string;
|
|
902
|
+
action_item_ids: string[];
|
|
903
|
+
commits: string[];
|
|
904
|
+
tests: RetroTestViewV2[];
|
|
905
|
+
commit_url_base?: string | null;
|
|
906
|
+
}
|
|
907
|
+
interface AttachmentViewV2 {
|
|
908
|
+
id: number;
|
|
909
|
+
source: SourceOrigin;
|
|
910
|
+
url: string;
|
|
911
|
+
filename: string;
|
|
912
|
+
mime: string;
|
|
913
|
+
is_primary: boolean;
|
|
914
|
+
thumbnail_status: ThumbnailStatus;
|
|
915
|
+
thumbnail_url: string | null;
|
|
916
|
+
thumbnail_error: string | null;
|
|
917
|
+
created_at: string;
|
|
918
|
+
}
|
|
919
|
+
interface AttachmentPreviewV2 {
|
|
920
|
+
id: number;
|
|
921
|
+
url: string;
|
|
922
|
+
thumbnail_url: string | null;
|
|
923
|
+
filename: string;
|
|
924
|
+
mime: string;
|
|
925
|
+
}
|
|
926
|
+
interface AcItemViewV2 {
|
|
927
|
+
check_item_id: string;
|
|
928
|
+
title: string;
|
|
929
|
+
checked: boolean;
|
|
930
|
+
}
|
|
931
|
+
type ChecklistItemStatus = "incomplete" | "failing" | "passing" | "cancelled" | "deferred";
|
|
932
|
+
interface ChecklistItemView {
|
|
933
|
+
id: number;
|
|
934
|
+
label: string;
|
|
935
|
+
detail: string;
|
|
936
|
+
status: ChecklistItemStatus;
|
|
937
|
+
}
|
|
938
|
+
interface ChecklistView {
|
|
939
|
+
id: number;
|
|
940
|
+
name: string;
|
|
941
|
+
items: ChecklistItemView[];
|
|
942
|
+
}
|
|
943
|
+
type DesignDecisionOutcome = "rejected" | "approved" | "changes_requested";
|
|
944
|
+
interface ChecklistHistoryViewV2 {
|
|
945
|
+
action: "create" | "rename" | "remove" | "add_item" | "update_item" | "remove_item";
|
|
946
|
+
checklist: string;
|
|
947
|
+
item: string | null;
|
|
948
|
+
changed: "status" | "label" | "detail" | null;
|
|
949
|
+
}
|
|
950
|
+
interface LatestWorkDispatchViewV2 {
|
|
951
|
+
dispatch_id: string;
|
|
952
|
+
started_at_ms: number;
|
|
953
|
+
completed_at_ms: number | null;
|
|
954
|
+
status: string;
|
|
955
|
+
usage_input: number;
|
|
956
|
+
usage_output: number;
|
|
957
|
+
assigned_worker_id: string | null;
|
|
958
|
+
}
|
|
959
|
+
interface ChildAssignmentViewV2 {
|
|
960
|
+
agent: string;
|
|
961
|
+
agent_repo_copy: RepoProfileCopy | null;
|
|
962
|
+
issue_id: string;
|
|
963
|
+
issue_title: string;
|
|
964
|
+
}
|
|
965
|
+
type IssueViewV2 = {
|
|
966
|
+
comments?: undefined | (Array<{
|
|
967
|
+
id: string;
|
|
968
|
+
rev: number;
|
|
969
|
+
author: string;
|
|
970
|
+
by: AuthorV2;
|
|
971
|
+
timestamp: string;
|
|
972
|
+
text: string;
|
|
973
|
+
updated_at: string;
|
|
974
|
+
origin: "" | "trello" | "slack" | "asana" | "danxbot";
|
|
975
|
+
via_key?: undefined | null | ViaKey;
|
|
976
|
+
metadata?: unknown;
|
|
977
|
+
answers_decision_id?: undefined | null | number;
|
|
978
|
+
tags: Array<{ kind: "problem"; ref: number; } | { kind: "design"; ref: number; } | { kind: "decision"; ref: number; }>;
|
|
979
|
+
resource_tags: Array<CommentResourceTag>;
|
|
980
|
+
reply_to_comment_id: null | number;
|
|
981
|
+
reply_phase: null | "ack" | "reply";
|
|
982
|
+
reply_state: null | CommentReplyStateV2;
|
|
983
|
+
}>);
|
|
984
|
+
checklists?: undefined | Array<ChecklistView>;
|
|
985
|
+
attachments?: undefined | (Array<{
|
|
986
|
+
id: number;
|
|
987
|
+
source: "" | "trello" | "slack" | "asana" | "danxbot";
|
|
988
|
+
url: string;
|
|
989
|
+
filename: string;
|
|
990
|
+
mime: string;
|
|
991
|
+
is_primary: boolean;
|
|
992
|
+
thumbnail_status: "ready" | "not_image" | "failed" | "pending";
|
|
993
|
+
thumbnail_url: null | string;
|
|
994
|
+
thumbnail_error: null | string;
|
|
995
|
+
created_at: string;
|
|
996
|
+
}>);
|
|
997
|
+
triage?: undefined | TriageViewV2;
|
|
998
|
+
title: string;
|
|
999
|
+
description?: undefined | string;
|
|
1000
|
+
status: "Cancelled" | "Review" | "ToDo" | "In Progress" | "Backlog" | "Done";
|
|
1001
|
+
type: string;
|
|
1002
|
+
priority: number;
|
|
1003
|
+
id: string;
|
|
1004
|
+
parent_id: null | string;
|
|
1005
|
+
rev: number;
|
|
1006
|
+
created_at: number;
|
|
1007
|
+
updated_at: number;
|
|
1008
|
+
assigned_agent: null | string;
|
|
1009
|
+
content_hash: string;
|
|
1010
|
+
retro?: undefined | RetroViewV2;
|
|
1011
|
+
stored_row?: undefined | IssueDisplayV2;
|
|
1012
|
+
stored_checklists?: undefined | Array<ChecklistWithItemsV2>;
|
|
1013
|
+
stored_attachments?: undefined | Array<IssueAttachmentV2>;
|
|
1014
|
+
retro_commit_shas?: undefined | Array<string>;
|
|
1015
|
+
code_gates?: undefined | Array<CodeGateStatus>;
|
|
1016
|
+
deleted_at?: undefined | null | number;
|
|
1017
|
+
dispatchable_derived?: undefined | false | true;
|
|
1018
|
+
blocked?: undefined | null | { at: string; reason: string; by: AuthorV2 | null; };
|
|
1019
|
+
board_id?: undefined | BoardRefNum;
|
|
1020
|
+
ready_at?: undefined | null | string;
|
|
1021
|
+
archived_at?: undefined | null | string;
|
|
1022
|
+
completed_at?: undefined | null | string;
|
|
1023
|
+
cancelled_at?: undefined | null | string;
|
|
1024
|
+
wake_at?: undefined | null | string;
|
|
1025
|
+
wake_action?: undefined | null | "review" | "ready";
|
|
1026
|
+
assigned_agent_name?: undefined | null | string;
|
|
1027
|
+
assigned_agent_team_agent?: undefined | null | AgentIdentity;
|
|
1028
|
+
resolved_list_id?: undefined | string;
|
|
1029
|
+
list_name?: undefined | string;
|
|
1030
|
+
list_color?: undefined | null | string;
|
|
1031
|
+
list_emoji?: undefined | null | string;
|
|
1032
|
+
refs?: undefined | Array<CardRefViewV2>;
|
|
1033
|
+
parent_title?: undefined | null | string;
|
|
1034
|
+
parent_type?: undefined | null | string;
|
|
1035
|
+
parent_created_at?: undefined | null | number;
|
|
1036
|
+
parent_updated_at?: undefined | null | number;
|
|
1037
|
+
parent_blocked?: undefined | null | false | true;
|
|
1038
|
+
parent_open_problem_count?: undefined | null | number;
|
|
1039
|
+
projection_error?: undefined | null | string;
|
|
1040
|
+
summary?: undefined | null | string;
|
|
1041
|
+
pull_request_url?: undefined | null | string;
|
|
1042
|
+
start_commit?: undefined | null | { at: string; sha: string | null; error: "no_repo" | "not_github_repo" | "no_token" | "github_refused" | "github_unreachable" | "unreadable_tip" | "unexpected" | null; error_detail: string | null; };
|
|
1043
|
+
problem_total?: undefined | number;
|
|
1044
|
+
decision_record_total?: undefined | number;
|
|
1045
|
+
decision_record_page?: undefined | DecisionRecordPage;
|
|
1046
|
+
decision_record_approved_total?: undefined | number;
|
|
1047
|
+
lane_header?: undefined | false | true;
|
|
1048
|
+
design_count?: undefined | number;
|
|
1049
|
+
open_action_count?: undefined | number;
|
|
1050
|
+
open_problem_count?: undefined | number;
|
|
1051
|
+
ac?: undefined | Array<AcItemViewV2>;
|
|
1052
|
+
triage_enabled?: undefined | false | true;
|
|
1053
|
+
dispatch?: undefined | null | { started_at: string | null; };
|
|
1054
|
+
dispatch_kind?: undefined | null | "work" | "triage" | "recovery" | "flesh-out" | "chat" | "main-sync-repair" | "worktree-maintenance" | "manual" | "landing" | `gate-${string}`;
|
|
1055
|
+
assignment_mode?: undefined | "manual" | "automated";
|
|
1056
|
+
assigned_agent_kind?: undefined | null | "person" | "session" | "worker" | "label";
|
|
1057
|
+
assigned_agent_pause?: undefined | null | HolderAgentPause;
|
|
1058
|
+
assigned_agent_repo_copy?: undefined | null | RepoProfileCopy;
|
|
1059
|
+
latest_work_dispatch?: undefined | null | LatestWorkDispatchViewV2;
|
|
1060
|
+
usage?: undefined | null | UsageSummary | UsageError;
|
|
1061
|
+
effort_level?: undefined | "min" | "very_low" | "low" | "medium" | "high" | "very_high" | "max";
|
|
1062
|
+
build_grade?: undefined | BuildGradeView;
|
|
1063
|
+
downward_rung?: undefined | null | "min" | "very_low" | "low" | "medium" | "high" | "very_high" | "max";
|
|
1064
|
+
waiting_on_gate?: undefined | null | WaitingOnViewV2;
|
|
1065
|
+
waiting_on_dep_ids?: undefined | Record<string, number>;
|
|
1066
|
+
dependency_pull_requests?: undefined | Record<string, DependencyPullRequestViewV2>;
|
|
1067
|
+
conflict_on?: undefined | Array<ConflictEntryViewV2>;
|
|
1068
|
+
conflict_on_reverse?: undefined | Array<ConflictEntryViewV2>;
|
|
1069
|
+
conflict_on_partners?: undefined | Record<string, { status: IssueStatus; title: string; }>;
|
|
1070
|
+
conflict_dep_ids?: undefined | Record<string, number>;
|
|
1071
|
+
conflict_on_active_count?: undefined | number;
|
|
1072
|
+
children?: undefined | Array<string>;
|
|
1073
|
+
descendant_ids?: undefined | Array<string>;
|
|
1074
|
+
descendant_needs_you?: undefined | Array<DescendantNeedsYouView>;
|
|
1075
|
+
blocked_descendants?: undefined | Array<InheritedBlockedViewV2>;
|
|
1076
|
+
child_assignments?: undefined | Array<ChildAssignmentViewV2>;
|
|
1077
|
+
ac_total?: undefined | number;
|
|
1078
|
+
ac_done?: undefined | number;
|
|
1079
|
+
ac_items?: undefined | (Array<{ title: string; status: "incomplete" | "failing" | "passing" | "cancelled" | "deferred"; }>);
|
|
1080
|
+
comments_count?: undefined | number;
|
|
1081
|
+
unread_comments_count?: undefined | number;
|
|
1082
|
+
unread_decision_comment_counts?: undefined | Record<string, number>;
|
|
1083
|
+
agent_notes_count?: undefined | number;
|
|
1084
|
+
comment_recipient?: undefined | { kind: "agent"; by: AuthorV2; reachability: CommentReachabilityV2; } | { kind: "none"; waiting_on: { kind: "plan"; id: PlanRefNum; ref: string; name: string; } | { kind: "card"; id: string; }; };
|
|
1085
|
+
comment_tags?: undefined | Array<CommentTagOption>;
|
|
1086
|
+
has_retro?: undefined | false | true;
|
|
1087
|
+
primary_attachment?: undefined | null | AttachmentPreviewV2;
|
|
1088
|
+
in_progress_derived?: undefined | false | true;
|
|
1089
|
+
waiting_on?: undefined | false | true;
|
|
1090
|
+
waiting_on_reason?: undefined | null | string;
|
|
1091
|
+
waiting_on_by?: undefined | Array<string>;
|
|
1092
|
+
triage_ice_total?: undefined | null | number;
|
|
1093
|
+
triage_ice_i?: undefined | null | number;
|
|
1094
|
+
triage_ice_c?: undefined | null | number;
|
|
1095
|
+
triage_ice_e?: undefined | null | number;
|
|
1096
|
+
triage_confidence?: undefined | null | number;
|
|
1097
|
+
triage_last_explain?: undefined | string;
|
|
1098
|
+
triage_last_status?: undefined | string;
|
|
1099
|
+
triage_last_decision_at?: undefined | null | string;
|
|
1100
|
+
next_pre_gate?: undefined | null | string;
|
|
1101
|
+
dispatchable_explain?: undefined | DispatchableExplainView;
|
|
1102
|
+
copy_payload?: undefined | V2CopyPayload;
|
|
1103
|
+
copy_issue?: undefined | V2CopyIssue;
|
|
1104
|
+
agent_notes?: undefined | (Array<{
|
|
1105
|
+
id: string;
|
|
1106
|
+
author: string;
|
|
1107
|
+
by: AuthorV2;
|
|
1108
|
+
via_key: null | ViaKey;
|
|
1109
|
+
timestamp: string;
|
|
1110
|
+
updated_at: string;
|
|
1111
|
+
text: string;
|
|
1112
|
+
metadata: unknown;
|
|
1113
|
+
}>);
|
|
1114
|
+
decision_records?: undefined | (Array<{
|
|
1115
|
+
action: "created" | "changed" | "deleted" | "restored";
|
|
1116
|
+
title: string;
|
|
1117
|
+
kind: "design" | "business_rule" | "architecture" | "other";
|
|
1118
|
+
made_by: "agent" | "human";
|
|
1119
|
+
approved: boolean;
|
|
1120
|
+
impact: number;
|
|
1121
|
+
confidence: number;
|
|
1122
|
+
rev: number;
|
|
1123
|
+
created_at: string;
|
|
1124
|
+
updated_at: string;
|
|
1125
|
+
deleted_at: null | string;
|
|
1126
|
+
author: string;
|
|
1127
|
+
by: AuthorV2;
|
|
1128
|
+
text: string;
|
|
1129
|
+
via_key: null | ViaKey;
|
|
1130
|
+
ref: string;
|
|
1131
|
+
ref_num: number;
|
|
1132
|
+
current_version: number;
|
|
1133
|
+
approval: DecisionApprovalState;
|
|
1134
|
+
record_created_at: string;
|
|
1135
|
+
made_by_user_id: null | number;
|
|
1136
|
+
made_by_name: null | string;
|
|
1137
|
+
made_by_author: AuthorV2;
|
|
1138
|
+
made_by_is_writer: boolean;
|
|
1139
|
+
provenance: Array<ProvenanceRecordV2>;
|
|
1140
|
+
comment_count: number;
|
|
1141
|
+
unread_comment_count: number;
|
|
1142
|
+
versions?: undefined | (Array<{
|
|
1143
|
+
action: "created" | "changed" | "deleted" | "restored";
|
|
1144
|
+
title: string;
|
|
1145
|
+
kind: "design" | "business_rule" | "architecture" | "other";
|
|
1146
|
+
made_by: "agent" | "human";
|
|
1147
|
+
impact: number;
|
|
1148
|
+
confidence: number;
|
|
1149
|
+
id: number;
|
|
1150
|
+
created_at: string;
|
|
1151
|
+
author: string;
|
|
1152
|
+
by: AuthorV2;
|
|
1153
|
+
text: string;
|
|
1154
|
+
via_key: null | ViaKey;
|
|
1155
|
+
ref: string;
|
|
1156
|
+
approval: DecisionApprovalState;
|
|
1157
|
+
made_by_user_id: null | number;
|
|
1158
|
+
made_by_name: null | string;
|
|
1159
|
+
made_by_author: AuthorV2;
|
|
1160
|
+
made_by_is_writer: boolean;
|
|
1161
|
+
provenance: Array<ProvenanceRecordV2>;
|
|
1162
|
+
version_no: number;
|
|
1163
|
+
}>);
|
|
1164
|
+
approvals?: undefined | (Array<{
|
|
1165
|
+
action: "approve" | "unapprove";
|
|
1166
|
+
at: string;
|
|
1167
|
+
id: number;
|
|
1168
|
+
ref: string;
|
|
1169
|
+
version_no: number;
|
|
1170
|
+
by_user_id: null | number;
|
|
1171
|
+
by_name: string;
|
|
1172
|
+
}>);
|
|
1173
|
+
}>);
|
|
1174
|
+
decision_record_versions?: undefined | (Array<{
|
|
1175
|
+
action: "created" | "changed" | "deleted" | "restored";
|
|
1176
|
+
title: string;
|
|
1177
|
+
kind: "design" | "business_rule" | "architecture" | "other";
|
|
1178
|
+
made_by: "agent" | "human";
|
|
1179
|
+
impact: number;
|
|
1180
|
+
confidence: number;
|
|
1181
|
+
id: number;
|
|
1182
|
+
created_at: string;
|
|
1183
|
+
author: string;
|
|
1184
|
+
by: AuthorV2;
|
|
1185
|
+
text: string;
|
|
1186
|
+
via_key: null | ViaKey;
|
|
1187
|
+
ref: string;
|
|
1188
|
+
approval: DecisionApprovalState;
|
|
1189
|
+
made_by_user_id: null | number;
|
|
1190
|
+
made_by_name: null | string;
|
|
1191
|
+
made_by_author: AuthorV2;
|
|
1192
|
+
made_by_is_writer: boolean;
|
|
1193
|
+
provenance: Array<ProvenanceRecordV2>;
|
|
1194
|
+
version_no: number;
|
|
1195
|
+
}>);
|
|
1196
|
+
decision_record_approvals?: undefined | (Array<{
|
|
1197
|
+
action: "approve" | "unapprove";
|
|
1198
|
+
at: string;
|
|
1199
|
+
id: number;
|
|
1200
|
+
ref: string;
|
|
1201
|
+
version_no: number;
|
|
1202
|
+
by_user_id: null | number;
|
|
1203
|
+
by_name: string;
|
|
1204
|
+
}>);
|
|
1205
|
+
work_marks?: undefined | Array<{
|
|
1206
|
+
id: number;
|
|
1207
|
+
via_key_id: number;
|
|
1208
|
+
resource: WorkMarkResource;
|
|
1209
|
+
note: string;
|
|
1210
|
+
by: AuthorV2;
|
|
1211
|
+
started_at: string;
|
|
1212
|
+
expires_at: string;
|
|
1213
|
+
}>;
|
|
1214
|
+
designs?: undefined | (Array<{
|
|
1215
|
+
ref_num: number;
|
|
1216
|
+
design_no: number;
|
|
1217
|
+
title: string;
|
|
1218
|
+
created_by: string;
|
|
1219
|
+
created_at: string;
|
|
1220
|
+
archived_at: null | string;
|
|
1221
|
+
review_state: "rejected" | "approved" | "awaiting_review" | "changes_requested";
|
|
1222
|
+
revision_count: number;
|
|
1223
|
+
latest_revision_no: number;
|
|
1224
|
+
chosen_options: null | OptionSelection;
|
|
1225
|
+
comment_count?: undefined | number;
|
|
1226
|
+
unread_comment_count?: undefined | number;
|
|
1227
|
+
revisions?: undefined | (Array<{
|
|
1228
|
+
revision_no: number;
|
|
1229
|
+
target: string;
|
|
1230
|
+
design_dir: string;
|
|
1231
|
+
built_from_commit: string;
|
|
1232
|
+
note: string;
|
|
1233
|
+
created_by: string;
|
|
1234
|
+
created_by_ref: ActorRef;
|
|
1235
|
+
created_at: string;
|
|
1236
|
+
bundle_bytes: null | number;
|
|
1237
|
+
bundle_available: boolean;
|
|
1238
|
+
screenshot_available: boolean;
|
|
1239
|
+
option_groups: Array<DesignOptionGroup>;
|
|
1240
|
+
checklist: Array<string>;
|
|
1241
|
+
browser_check: "checked" | "not_checked" | "not_recorded";
|
|
1242
|
+
browser_check_note: string;
|
|
1243
|
+
source_files?: undefined | Array<DesignSourceFile>;
|
|
1244
|
+
}>);
|
|
1245
|
+
decisions?: undefined | (Array<{
|
|
1246
|
+
decision_id: number;
|
|
1247
|
+
revision_no: number;
|
|
1248
|
+
outcome: "rejected" | "approved" | "changes_requested";
|
|
1249
|
+
note: null | string;
|
|
1250
|
+
decided_by: string;
|
|
1251
|
+
decided_by_ref: ActorRef;
|
|
1252
|
+
created_at: string;
|
|
1253
|
+
options: null | OptionSelection;
|
|
1254
|
+
}>);
|
|
1255
|
+
}>);
|
|
1256
|
+
pull_request_reviews?: undefined | (Array<{
|
|
1257
|
+
id: number;
|
|
1258
|
+
kind: "comment" | "review" | "thread";
|
|
1259
|
+
author_login: string;
|
|
1260
|
+
state: null | "approved" | "changes_requested" | "commented" | "dismissed";
|
|
1261
|
+
body: string;
|
|
1262
|
+
html_url: string;
|
|
1263
|
+
path: null | string;
|
|
1264
|
+
line: null | number;
|
|
1265
|
+
resolved: null | false | true;
|
|
1266
|
+
occurred_at: string;
|
|
1267
|
+
}>);
|
|
1268
|
+
code_review_items?: undefined | Array<{
|
|
1269
|
+
gate_name: string;
|
|
1270
|
+
title: string;
|
|
1271
|
+
description: string;
|
|
1272
|
+
status: string;
|
|
1273
|
+
reasoning: string;
|
|
1274
|
+
}>;
|
|
1275
|
+
children_detail?: undefined | (Array<{
|
|
1276
|
+
status: "Cancelled" | "Review" | "ToDo" | "In Progress" | "Backlog" | "Done";
|
|
1277
|
+
type: undefined | string;
|
|
1278
|
+
priority: undefined | number;
|
|
1279
|
+
name: string;
|
|
1280
|
+
id: string;
|
|
1281
|
+
blocked: boolean;
|
|
1282
|
+
summary: undefined | null | string;
|
|
1283
|
+
open_problem_count: number;
|
|
1284
|
+
waiting_on: boolean;
|
|
1285
|
+
waiting_on_by_card: boolean;
|
|
1286
|
+
waiting_on_ids: Array<string>;
|
|
1287
|
+
conflict_on_ids: Array<string>;
|
|
1288
|
+
board_id: BoardRefNum;
|
|
1289
|
+
}>);
|
|
1290
|
+
plans?: undefined | Array<{
|
|
1291
|
+
id: PlanRefNum;
|
|
1292
|
+
ref: string;
|
|
1293
|
+
name: string;
|
|
1294
|
+
}>;
|
|
1295
|
+
mirrors?: undefined | (Array<{
|
|
1296
|
+
target_type: "trello" | "slack" | "asana";
|
|
1297
|
+
target_url: string;
|
|
1298
|
+
sync_state: "synced" | "out_of_sync" | "error" | "dead" | "unavailable" | "diverged";
|
|
1299
|
+
dead_reason: "" | "deleted" | "archived";
|
|
1300
|
+
source_ref: string;
|
|
1301
|
+
last_error: null | StatusReason;
|
|
1302
|
+
owed: Array<"comments" | "checklists" | "attachments" | "title" | "description" | "status" | "type" | "priority" | "parent_child" | "dependencies" | "card_create" | "card_delete">;
|
|
1303
|
+
description_unreadable: boolean;
|
|
1304
|
+
target_ref: string;
|
|
1305
|
+
target_label: string;
|
|
1306
|
+
last_synced_at: number;
|
|
1307
|
+
logo_url: string;
|
|
1308
|
+
}>);
|
|
1309
|
+
history?: undefined | (Array<{
|
|
1310
|
+
id: string;
|
|
1311
|
+
timestamp: string;
|
|
1312
|
+
actor: string;
|
|
1313
|
+
actor_ref: ActorRef;
|
|
1314
|
+
via_key: undefined | null | ViaKey;
|
|
1315
|
+
event: "created" | "blocked" | "activity" | "status_change" | "unblocked" | "field_change" | "dependency_added" | "dependency_removed" | "conflict_added" | "conflict_removed";
|
|
1316
|
+
label: undefined | StatusReason;
|
|
1317
|
+
from: undefined | "Cancelled" | "Review" | "ToDo" | "In Progress" | "Backlog" | "Done";
|
|
1318
|
+
to: undefined | "Cancelled" | "Review" | "ToDo" | "In Progress" | "Backlog" | "Done";
|
|
1319
|
+
note: undefined | string;
|
|
1320
|
+
field: undefined | string;
|
|
1321
|
+
value_before: undefined | null | string;
|
|
1322
|
+
value_after: undefined | null | string;
|
|
1323
|
+
target: undefined | string;
|
|
1324
|
+
checklist: undefined | ChecklistHistoryViewV2;
|
|
1325
|
+
}>);
|
|
1326
|
+
controls?: undefined | (Array<{
|
|
1327
|
+
key: string;
|
|
1328
|
+
scope: "board" | "team" | "plan" | "card";
|
|
1329
|
+
scope_id: string;
|
|
1330
|
+
value: null | string | false | true;
|
|
1331
|
+
source: "board" | "team" | "plan" | "card" | "system" | "inherit";
|
|
1332
|
+
base_hash: string;
|
|
1333
|
+
kind: "boolean" | "enum" | "branch" | "markdown" | "seconds";
|
|
1334
|
+
options: null | Array<string>;
|
|
1335
|
+
description: string;
|
|
1336
|
+
system_default: string | false | true;
|
|
1337
|
+
fallback: null | ControlFallback;
|
|
1338
|
+
overridable: boolean;
|
|
1339
|
+
default_changed: boolean;
|
|
1340
|
+
}>);
|
|
1341
|
+
comments_page?: undefined | RelationPageView;
|
|
1342
|
+
agent_notes_page?: undefined | RelationPageView;
|
|
1343
|
+
decision_record_versions_page?: undefined | RelationPageView;
|
|
1344
|
+
decision_record_approvals_page?: undefined | RelationPageView;
|
|
1345
|
+
history_page?: undefined | RelationPageView;
|
|
1346
|
+
problems?: undefined | Array<ProblemViewV2>;
|
|
1347
|
+
subtree?: undefined | Array<IssueViewV2>;
|
|
1348
|
+
quality_gates?: undefined | Array<QualityGateChipV2> | Array<QualityGateViewV2>;
|
|
1349
|
+
};
|
|
1350
|
+
interface QualityGateChipV2 {
|
|
1351
|
+
gate: string;
|
|
1352
|
+
phase: QualityGatePhase;
|
|
1353
|
+
status: "pending" | "pass" | "fail" | "skipped";
|
|
1354
|
+
}
|
|
1355
|
+
type QualityGateViewV2 = {
|
|
1356
|
+
gate: string;
|
|
1357
|
+
decision_note: string;
|
|
1358
|
+
status: "pending" | "pass" | "fail" | "skipped";
|
|
1359
|
+
completed_at: null | string;
|
|
1360
|
+
message: string;
|
|
1361
|
+
reviewed_ref: null | string;
|
|
1362
|
+
decided_by: null | string;
|
|
1363
|
+
budget_started_at: string;
|
|
1364
|
+
rounds: Array<GateRoundV2>;
|
|
1365
|
+
phase: "plan" | "code";
|
|
1366
|
+
};
|
|
1367
|
+
type ProblemViewV2 = {
|
|
1368
|
+
type: "design" | "question" | "action" | "decision_review";
|
|
1369
|
+
open: boolean;
|
|
1370
|
+
ordinal: number;
|
|
1371
|
+
created_at: string;
|
|
1372
|
+
updated_at: string;
|
|
1373
|
+
content_hash: string;
|
|
1374
|
+
summary: null | string;
|
|
1375
|
+
ref_num: number;
|
|
1376
|
+
comment_count: number;
|
|
1377
|
+
unread_comment_count: number;
|
|
1378
|
+
decisions: Array<{
|
|
1379
|
+
id: number;
|
|
1380
|
+
solution_id: null | number;
|
|
1381
|
+
solution_title: null | string;
|
|
1382
|
+
outcome: "answered" | "rejected";
|
|
1383
|
+
freeform: null | string;
|
|
1384
|
+
note: null | string;
|
|
1385
|
+
decided_by: string;
|
|
1386
|
+
decided_by_ref: ActorRef;
|
|
1387
|
+
decided_at: string;
|
|
1388
|
+
retracted_at: null | string;
|
|
1389
|
+
relayed_by_session: null | string;
|
|
1390
|
+
provenance: null | ProvenanceRecordV2;
|
|
1391
|
+
content_hash: string;
|
|
1392
|
+
}>;
|
|
1393
|
+
issue_id: string;
|
|
1394
|
+
feedback_consent: boolean;
|
|
1395
|
+
choice_locked: boolean;
|
|
1396
|
+
docs_review: null | DocsReviewView;
|
|
1397
|
+
docs_land: boolean;
|
|
1398
|
+
needs_person: boolean;
|
|
1399
|
+
statement: string;
|
|
1400
|
+
context: null | string;
|
|
1401
|
+
design_element: null | string;
|
|
1402
|
+
solutions: Array<SolutionViewV2>;
|
|
1403
|
+
decision_review?: undefined | (Array<{
|
|
1404
|
+
problem_ref_num: number;
|
|
1405
|
+
record_ref: string;
|
|
1406
|
+
answered_version_no: null | number;
|
|
1407
|
+
choices: Array<{ solution_id: number; kind: DecisionReviewChoiceKind; version_no: number; title: string; }>;
|
|
1408
|
+
versions?: undefined | (Array<{
|
|
1409
|
+
action: "created" | "changed" | "deleted" | "restored";
|
|
1410
|
+
title: string;
|
|
1411
|
+
kind: "design" | "business_rule" | "architecture" | "other";
|
|
1412
|
+
made_by: "agent" | "human";
|
|
1413
|
+
impact: number;
|
|
1414
|
+
confidence: number;
|
|
1415
|
+
id: number;
|
|
1416
|
+
created_at: string;
|
|
1417
|
+
author: string;
|
|
1418
|
+
by: AuthorV2;
|
|
1419
|
+
text: string;
|
|
1420
|
+
via_key: null | ViaKey;
|
|
1421
|
+
ref: string;
|
|
1422
|
+
approval: DecisionApprovalState;
|
|
1423
|
+
made_by_user_id: null | number;
|
|
1424
|
+
made_by_name: null | string;
|
|
1425
|
+
made_by_author: AuthorV2;
|
|
1426
|
+
made_by_is_writer: boolean;
|
|
1427
|
+
provenance: Array<ProvenanceRecordV2>;
|
|
1428
|
+
version_no: number;
|
|
1429
|
+
}>);
|
|
1430
|
+
}>);
|
|
1431
|
+
};
|
|
1432
|
+
type SolutionViewV2 = {
|
|
1433
|
+
title: string;
|
|
1434
|
+
id: number;
|
|
1435
|
+
content_hash: string;
|
|
1436
|
+
body: string;
|
|
1437
|
+
steps_hash: string;
|
|
1438
|
+
steps: Array<{
|
|
1439
|
+
id: number;
|
|
1440
|
+
solution_id: number;
|
|
1441
|
+
parent_step_id: null | number;
|
|
1442
|
+
label: string;
|
|
1443
|
+
title: string;
|
|
1444
|
+
description: null | string;
|
|
1445
|
+
content_hash: string;
|
|
1446
|
+
checked_at: null | string;
|
|
1447
|
+
checked_by: null | string;
|
|
1448
|
+
steps: Array<SolutionStepViewV2>;
|
|
1449
|
+
}>;
|
|
1450
|
+
removed: boolean;
|
|
1451
|
+
pro: string;
|
|
1452
|
+
con: string;
|
|
1453
|
+
recommended: boolean;
|
|
1454
|
+
design?: undefined | (Array<{
|
|
1455
|
+
ref_num: number;
|
|
1456
|
+
design_no: number;
|
|
1457
|
+
title: string;
|
|
1458
|
+
created_by: string;
|
|
1459
|
+
created_at: string;
|
|
1460
|
+
archived_at: null | string;
|
|
1461
|
+
review_state: "rejected" | "approved" | "awaiting_review" | "changes_requested";
|
|
1462
|
+
revision_count: number;
|
|
1463
|
+
latest_revision_no: number;
|
|
1464
|
+
chosen_options: null | OptionSelection;
|
|
1465
|
+
comment_count?: undefined | number;
|
|
1466
|
+
unread_comment_count?: undefined | number;
|
|
1467
|
+
revisions?: undefined | (Array<{
|
|
1468
|
+
revision_no: number;
|
|
1469
|
+
target: string;
|
|
1470
|
+
design_dir: string;
|
|
1471
|
+
built_from_commit: string;
|
|
1472
|
+
note: string;
|
|
1473
|
+
created_by: string;
|
|
1474
|
+
created_by_ref: ActorRef;
|
|
1475
|
+
created_at: string;
|
|
1476
|
+
bundle_bytes: null | number;
|
|
1477
|
+
bundle_available: boolean;
|
|
1478
|
+
screenshot_available: boolean;
|
|
1479
|
+
option_groups: Array<DesignOptionGroup>;
|
|
1480
|
+
checklist: Array<string>;
|
|
1481
|
+
browser_check: "checked" | "not_checked" | "not_recorded";
|
|
1482
|
+
browser_check_note: string;
|
|
1483
|
+
source_files?: undefined | Array<DesignSourceFile>;
|
|
1484
|
+
}>);
|
|
1485
|
+
decisions?: undefined | (Array<{
|
|
1486
|
+
decision_id: number;
|
|
1487
|
+
revision_no: number;
|
|
1488
|
+
outcome: "rejected" | "approved" | "changes_requested";
|
|
1489
|
+
note: null | string;
|
|
1490
|
+
decided_by: string;
|
|
1491
|
+
decided_by_ref: ActorRef;
|
|
1492
|
+
created_at: string;
|
|
1493
|
+
options: null | OptionSelection;
|
|
1494
|
+
}>);
|
|
1495
|
+
}>);
|
|
1496
|
+
};
|
|
1497
|
+
interface SolutionStepViewV2 {
|
|
1498
|
+
id: number;
|
|
1499
|
+
solution_id: number;
|
|
1500
|
+
parent_step_id: number | null;
|
|
1501
|
+
label: string;
|
|
1502
|
+
title: string;
|
|
1503
|
+
description: string | null;
|
|
1504
|
+
content_hash: string;
|
|
1505
|
+
checked_at: string | null;
|
|
1506
|
+
checked_by: string | null;
|
|
1507
|
+
steps: SolutionStepViewV2[];
|
|
1508
|
+
}
|
|
1509
|
+
interface DecisionViewV2 {
|
|
1510
|
+
id: number;
|
|
1511
|
+
solution_id: number | null;
|
|
1512
|
+
solution_title: string | null;
|
|
1513
|
+
outcome: DecisionOutcome;
|
|
1514
|
+
freeform: string | null;
|
|
1515
|
+
note: string | null;
|
|
1516
|
+
decided_by: string;
|
|
1517
|
+
decided_by_ref: ActorRef;
|
|
1518
|
+
decided_at: string;
|
|
1519
|
+
retracted_at: string | null;
|
|
1520
|
+
relayed_by_session: string | null;
|
|
1521
|
+
provenance: ProvenanceRecordV2 | null;
|
|
1522
|
+
content_hash: string;
|
|
1523
|
+
}
|
|
1524
|
+
interface CardRefViewV2 {
|
|
1525
|
+
source: "danxbot" | MirrorProviderId;
|
|
1526
|
+
ref: string;
|
|
1527
|
+
url: string;
|
|
1528
|
+
}
|
|
1529
|
+
|
|
1530
|
+
interface CodeGateStatus {
|
|
1531
|
+
gate: string;
|
|
1532
|
+
status: QualityGateStatus;
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
type ConnectionState = "connecting" | "connected" | "disconnected";
|
|
1536
|
+
interface LiveQueryResult<T> {
|
|
1537
|
+
data: T | null;
|
|
1538
|
+
loading: boolean;
|
|
1539
|
+
refreshing?: boolean;
|
|
1540
|
+
error: Error | null;
|
|
1541
|
+
connection: ConnectionState;
|
|
1542
|
+
refetch: () => void;
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
function useIssueDetail(id: string): LiveQueryResult<IssueViewV2>;
|
|
1546
|
+
|
|
1547
|
+
type TransitionAction = "ready" | "unready" | "pickup" | "rollback_pickup" | "gate_release" | "gate_repin" | "claim_repin" | "landing_hold" | "complete" | "cancel" | "block" | "unblock" | "archive" | "snooze" | "coerce" | "reopen";
|
|
1548
|
+
|
|
1549
|
+
interface ChildProgress {
|
|
1550
|
+
done: number;
|
|
1551
|
+
total: number;
|
|
1552
|
+
}
|
|
1553
|
+
interface CardStatusPresentation {
|
|
1554
|
+
label: string;
|
|
1555
|
+
icon: string;
|
|
1556
|
+
reason: string | null;
|
|
1557
|
+
live: boolean;
|
|
1558
|
+
isContainer: boolean;
|
|
1559
|
+
childProgress: ChildProgress | null;
|
|
1560
|
+
}
|
|
1561
|
+
type SnoozePresentation = {
|
|
1562
|
+
active: false;
|
|
1563
|
+
} | {
|
|
1564
|
+
active: true;
|
|
1565
|
+
wakeAt: string;
|
|
1566
|
+
wakeAction: "ready" | "review";
|
|
1567
|
+
};
|
|
1568
|
+
interface GateBreakdownEntry {
|
|
1569
|
+
gate: string;
|
|
1570
|
+
label: string;
|
|
1571
|
+
status: GateVerdict;
|
|
1572
|
+
}
|
|
1573
|
+
const defaultNewCardPriority: () => number;
|
|
1574
|
+
type GateVerdict = QualityGateViewV2["status"];
|
|
1575
|
+
|
|
1576
|
+
type LifecycleAction = Extract<TransitionAction, "ready" | "unready" | "complete" | "cancel" | "reopen">;
|
|
1577
|
+
|
|
1578
|
+
interface CardEditPatch {
|
|
1579
|
+
title?: string;
|
|
1580
|
+
description?: string;
|
|
1581
|
+
summary?: string | null;
|
|
1582
|
+
pull_request_url?: string | null;
|
|
1583
|
+
priority?: number;
|
|
1584
|
+
type?: CardTypeKey;
|
|
1585
|
+
parent_id?: string | null;
|
|
1586
|
+
effort_level?: EffortLevelName;
|
|
1587
|
+
content_hash?: string;
|
|
1588
|
+
}
|
|
1589
|
+
function editCard(id: string, patch: CardEditPatch): Promise<void>;
|
|
1590
|
+
function transitionCard(id: string, action: LifecycleAction | "unblock" | "archive"): Promise<void>;
|
|
1591
|
+
type PriorityPlacement = {
|
|
1592
|
+
side: "after" | "before";
|
|
1593
|
+
id: string;
|
|
1594
|
+
} | {
|
|
1595
|
+
edge: "top" | "bottom";
|
|
1596
|
+
};
|
|
1597
|
+
interface DetachedDispatch {
|
|
1598
|
+
dispatchId: string;
|
|
1599
|
+
stop: "requested" | "unreachable";
|
|
1600
|
+
}
|
|
1601
|
+
type ProblemCard = Pick<IssueViewV2, "id"> & Partial<Pick<IssueViewV2, "problems" | "open_problem_count">>;
|
|
1602
|
+
|
|
1603
|
+
interface LaneMoveRequest {
|
|
1604
|
+
issueId: string;
|
|
1605
|
+
lane: IssueStatus$1;
|
|
1606
|
+
placement: PriorityPlacement | null;
|
|
1607
|
+
}
|
|
1608
|
+
type BoardMoveResult = {
|
|
1609
|
+
ok: true;
|
|
1610
|
+
reason: null;
|
|
1611
|
+
updatedAt: number;
|
|
1612
|
+
detachedDispatch: DetachedDispatch | null;
|
|
1613
|
+
} | {
|
|
1614
|
+
ok: false;
|
|
1615
|
+
reason: string;
|
|
1616
|
+
updatedAt: null;
|
|
1617
|
+
};
|
|
1618
|
+
|
|
1619
|
+
interface CardMutation {
|
|
1620
|
+
pending: string | null;
|
|
1621
|
+
run: (key: string, failureTitle: string, op: () => Promise<void>) => Promise<boolean>;
|
|
1622
|
+
}
|
|
1623
|
+
function useCardMutation(): CardMutation;
|
|
1624
|
+
|
|
1625
|
+
type PlanWire = number | {
|
|
1626
|
+
name: string;
|
|
1627
|
+
} | null;
|
|
1628
|
+
|
|
1629
|
+
interface NewCardInput {
|
|
1630
|
+
board: BoardRefNum;
|
|
1631
|
+
type: CardTypeKey;
|
|
1632
|
+
title: string;
|
|
1633
|
+
priority: number;
|
|
1634
|
+
plan: PlanWire;
|
|
1635
|
+
description: string;
|
|
1636
|
+
}
|
|
1637
|
+
function createCard(input: NewCardInput): Promise<string>;
|
|
1638
|
+
type HideableLane = "Cancelled" | "Backlog";
|
|
1639
|
+
interface LaneVisibility {
|
|
1640
|
+
isShown: (lane: IssueStatus$1) => boolean;
|
|
1641
|
+
setShown: (lane: HideableLane, shown: boolean) => void;
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1644
|
+
type LaneSortField = "title" | "id" | "priority" | "updated_at" | "created_at";
|
|
1645
|
+
type LaneSort = SortValue<LaneSortField>;
|
|
1646
|
+
type LaneSorts = Readonly<Record<IssueStatus$1, LaneSort>>;
|
|
1647
|
+
interface LaneSortState {
|
|
1648
|
+
readonly sorts: LaneSorts;
|
|
1649
|
+
readonly setSort: (lane: IssueStatus$1, sort: LaneSort) => void;
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
type BoardScope = {
|
|
1653
|
+
readonly kind: "board";
|
|
1654
|
+
readonly board: BoardRefNum;
|
|
1655
|
+
readonly boards: readonly BoardRefNum[];
|
|
1656
|
+
} | {
|
|
1657
|
+
readonly kind: "plan";
|
|
1658
|
+
readonly planId: number;
|
|
1659
|
+
readonly boards: readonly BoardRefNum[];
|
|
1660
|
+
};
|
|
1661
|
+
type BoardLaneWindows = Readonly<Record<IssueStatus$1, PagedWindow<IssueViewV2>>>;
|
|
1662
|
+
type LaneLeafTotals = Readonly<Record<IssueStatus$1, number | null>>;
|
|
1663
|
+
interface BoardLaneState {
|
|
1664
|
+
readonly scope: BoardScope;
|
|
1665
|
+
readonly windows: BoardLaneWindows;
|
|
1666
|
+
readonly leafTotals: LaneLeafTotals;
|
|
1667
|
+
readonly visibility: LaneVisibility;
|
|
1668
|
+
readonly sorts: LaneSorts;
|
|
1669
|
+
readonly setSort: LaneSortState["setSort"];
|
|
1670
|
+
readonly openCount: number | null;
|
|
1671
|
+
}
|
|
1672
|
+
function useBoardLaneState(scope: BoardScope): BoardLaneState;
|
|
1673
|
+
|
|
1674
|
+
function useCardsOfType(scope: BoardScope, type: string): LiveQueryResult<readonly IssueViewV2[]>;
|
|
1675
|
+
|
|
1676
|
+
function boardCardPath(cardId: string): string;
|
|
1677
|
+
function planCardPath(planId: number, cardId: string, planSearch?: string): string;
|
|
1678
|
+
function planPathFromCard(planId: number, cardSearch?: string): string;
|
|
1679
|
+
|
|
1680
|
+
function CardLink({ id, className, onNavigate }: {
|
|
1681
|
+
id: string;
|
|
1682
|
+
className?: string;
|
|
1683
|
+
onNavigate?: () => void;
|
|
1684
|
+
}): react.JSX.Element;
|
|
1685
|
+
|
|
1686
|
+
function EditableTitle({ card }: {
|
|
1687
|
+
card: IssueViewV2;
|
|
1688
|
+
}): react.JSX.Element;
|
|
1689
|
+
|
|
1690
|
+
function EditableSummary({ card }: {
|
|
1691
|
+
card: IssueViewV2;
|
|
1692
|
+
}): react.JSX.Element;
|
|
1693
|
+
|
|
1694
|
+
function EditableContext({ card }: {
|
|
1695
|
+
card: IssueViewV2;
|
|
1696
|
+
}): react.JSX.Element;
|
|
1697
|
+
|
|
1698
|
+
function ChecklistsSection({ card, mutation }: {
|
|
1699
|
+
card: IssueViewV2;
|
|
1700
|
+
mutation: CardMutation;
|
|
1701
|
+
}): react.JSX.Element;
|
|
1702
|
+
|
|
1703
|
+
interface ProblemAttention {
|
|
1704
|
+
problem: ProblemViewV2;
|
|
1705
|
+
solutions: SolutionViewV2[];
|
|
1706
|
+
removedSolutionIds: ReadonlySet<number>;
|
|
1707
|
+
decisions: DecisionViewV2[];
|
|
1708
|
+
choiceLocked: boolean;
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
function ProblemsSection$1({ card, problems, canAnswer, designGatePending, mutation, }: {
|
|
1712
|
+
card: ProblemCard;
|
|
1713
|
+
problems: ProblemAttention[];
|
|
1714
|
+
canAnswer: boolean;
|
|
1715
|
+
designGatePending: boolean;
|
|
1716
|
+
mutation: CardMutation;
|
|
1717
|
+
}): react.JSX.Element;
|
|
1718
|
+
|
|
1719
|
+
function ProblemsSection({ cardId, ...rest }: {
|
|
1720
|
+
cardId: IssueViewV2["id"];
|
|
1721
|
+
} & Omit<ComponentProps<typeof ProblemsSection$1>, "card">): react.JSX.Element;
|
|
1722
|
+
|
|
1723
|
+
function DependenciesSection({ card, mutation }: {
|
|
1724
|
+
card: IssueViewV2;
|
|
1725
|
+
mutation: CardMutation;
|
|
1726
|
+
}): react.JSX.Element;
|
|
1727
|
+
|
|
1728
|
+
function ChildrenSection({ card }: {
|
|
1729
|
+
card: IssueViewV2;
|
|
1730
|
+
}): react.JSX.Element;
|
|
1731
|
+
|
|
1732
|
+
function ParentField({ card, mutation }: {
|
|
1733
|
+
card: IssueViewV2;
|
|
1734
|
+
mutation: CardMutation;
|
|
1735
|
+
}): react.JSX.Element;
|
|
1736
|
+
|
|
1737
|
+
function PlansField({ card, mutation }: {
|
|
1738
|
+
card: IssueViewV2;
|
|
1739
|
+
mutation: CardMutation;
|
|
1740
|
+
}): react.JSX.Element;
|
|
1741
|
+
|
|
1742
|
+
function GatesSection({ card }: {
|
|
1743
|
+
card: IssueViewV2;
|
|
1744
|
+
}): react.JSX.Element;
|
|
1745
|
+
|
|
1746
|
+
interface ActivityProps {
|
|
1747
|
+
card: IssueViewV2;
|
|
1748
|
+
mutation: CardMutation;
|
|
1749
|
+
onFocusProblem?: (problemRefNum: number) => void;
|
|
1750
|
+
}
|
|
1751
|
+
function ActivityTab(props: ActivityProps): react.JSX.Element;
|
|
1752
|
+
|
|
1753
|
+
type ShownAttachment = AttachmentViewV2 & {
|
|
1754
|
+
pending: boolean;
|
|
1755
|
+
};
|
|
1756
|
+
interface AttachmentActions {
|
|
1757
|
+
attachments: ShownAttachment[];
|
|
1758
|
+
add: (files: readonly File[]) => void;
|
|
1759
|
+
replace: (id: number, file: File) => void;
|
|
1760
|
+
rename: (id: number, filename: string) => void;
|
|
1761
|
+
setCover: (id: number) => void;
|
|
1762
|
+
remove: (id: number) => void;
|
|
1763
|
+
}
|
|
1764
|
+
function useAttachmentActions(card: Pick<IssueViewV2, "id" | "attachments">): AttachmentActions;
|
|
1765
|
+
|
|
1766
|
+
interface AttachmentViewer {
|
|
1767
|
+
open: (attachmentId: number) => void;
|
|
1768
|
+
element: ReactNode;
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
function AttachmentsTab({ cardId, actions, viewer, }: {
|
|
1772
|
+
cardId: string;
|
|
1773
|
+
actions: AttachmentActions;
|
|
1774
|
+
viewer: AttachmentViewer;
|
|
1775
|
+
}): react.JSX.Element;
|
|
1776
|
+
|
|
1777
|
+
function RetroTab({ retro }: {
|
|
1778
|
+
retro: RetroViewV2;
|
|
1779
|
+
}): react.JSX.Element;
|
|
1780
|
+
|
|
1781
|
+
interface AttentionZoneProps {
|
|
1782
|
+
card: IssueViewV2;
|
|
1783
|
+
mutation: CardMutation;
|
|
1784
|
+
}
|
|
1785
|
+
function AttentionZone({ card, mutation }: AttentionZoneProps): react.JSX.Element;
|
|
1786
|
+
|
|
1787
|
+
interface CardActionsMenuProps {
|
|
1788
|
+
card: IssueViewV2;
|
|
1789
|
+
mutation: CardMutation;
|
|
1790
|
+
}
|
|
1791
|
+
function CardActionsMenu({ card, mutation }: CardActionsMenuProps): react.JSX.Element;
|
|
1792
|
+
|
|
1793
|
+
interface WorkStateInput {
|
|
1794
|
+
terminal: boolean;
|
|
1795
|
+
container: boolean;
|
|
1796
|
+
assignedAgent: string | null;
|
|
1797
|
+
assignedAgentName: string | null;
|
|
1798
|
+
assignedAgentTeamAgent: {
|
|
1799
|
+
id: number;
|
|
1800
|
+
name: string;
|
|
1801
|
+
avatar_url: string | null;
|
|
1802
|
+
} | null;
|
|
1803
|
+
assignedAgentKind: AssignedAgentKind | null;
|
|
1804
|
+
assignedAgentRepoCopy: RepoProfileCopy | null;
|
|
1805
|
+
assignedAgentPause: HolderAgentPause | null;
|
|
1806
|
+
heldSince: string | null;
|
|
1807
|
+
blocked: {
|
|
1808
|
+
reason: string;
|
|
1809
|
+
by: AuthorV2 | null;
|
|
1810
|
+
at: string;
|
|
1811
|
+
} | null;
|
|
1812
|
+
waitingOn: readonly string[];
|
|
1813
|
+
conflictIds: readonly string[];
|
|
1814
|
+
conflictActive: number;
|
|
1815
|
+
}
|
|
1816
|
+
|
|
1817
|
+
interface WorkStateControlProps {
|
|
1818
|
+
cardId: string;
|
|
1819
|
+
input: WorkStateInput;
|
|
1820
|
+
size?: "sm" | "2xs";
|
|
1821
|
+
onOpenHold?: () => void;
|
|
1822
|
+
onOpenDependencies?: () => void;
|
|
1823
|
+
assignee?: boolean;
|
|
1824
|
+
}
|
|
1825
|
+
function WorkStateControl({ cardId, input, size, onOpenHold, onOpenDependencies, assignee }: WorkStateControlProps): react.JSX.Element | null;
|
|
1826
|
+
|
|
1827
|
+
interface ControlProps {
|
|
1828
|
+
card: IssueViewV2;
|
|
1829
|
+
mutation: CardMutation;
|
|
1830
|
+
}
|
|
1831
|
+
function PriorityControl({ card, mutation }: ControlProps): react.JSX.Element;
|
|
1832
|
+
function EffortControl({ card, mutation }: ControlProps): react.JSX.Element;
|
|
1833
|
+
function TypeControl({ card, mutation }: ControlProps): react.JSX.Element;
|
|
1834
|
+
function StatusControl({ card, mutation }: ControlProps): react.JSX.Element;
|
|
1835
|
+
|
|
1836
|
+
interface StandardCardPageProps {
|
|
1837
|
+
card: IssueViewV2;
|
|
1838
|
+
mutation: CardMutation;
|
|
1839
|
+
}
|
|
1840
|
+
function StandardCardPage({ card, mutation }: StandardCardPageProps): react.JSX.Element;
|
|
1841
|
+
|
|
1842
|
+
interface CardFaceAc {
|
|
1843
|
+
total: number;
|
|
1844
|
+
byStatus: Record<ChecklistItemStatus, number>;
|
|
1845
|
+
items?: NonNullable<IssueViewV2["ac_items"]>;
|
|
1846
|
+
}
|
|
1847
|
+
interface CardFaceModel {
|
|
1848
|
+
id: string;
|
|
1849
|
+
title: string;
|
|
1850
|
+
type: CardTypeKey;
|
|
1851
|
+
priority: number;
|
|
1852
|
+
statusName: IssueStatus$1;
|
|
1853
|
+
status: CardStatusPresentation;
|
|
1854
|
+
list: CardFaceList | null;
|
|
1855
|
+
to: string;
|
|
1856
|
+
parent: {
|
|
1857
|
+
id: string;
|
|
1858
|
+
title: string | null;
|
|
1859
|
+
to: string;
|
|
1860
|
+
} | null;
|
|
1861
|
+
needsHuman: {
|
|
1862
|
+
questions: number;
|
|
1863
|
+
actions: number;
|
|
1864
|
+
};
|
|
1865
|
+
work: WorkStateInput;
|
|
1866
|
+
snooze: SnoozePresentation;
|
|
1867
|
+
effort: EffortLevelName | null;
|
|
1868
|
+
planGates: readonly GateBreakdownEntry[];
|
|
1869
|
+
codeGates: readonly GateBreakdownEntry[];
|
|
1870
|
+
ac: CardFaceAc;
|
|
1871
|
+
commentsCount: number;
|
|
1872
|
+
unreadCommentsCount: number;
|
|
1873
|
+
hasRetro: boolean;
|
|
1874
|
+
onPullRequest: boolean;
|
|
1875
|
+
childrenCount: number;
|
|
1876
|
+
childrenDetail?: NonNullable<IssueViewV2["children_detail"]>;
|
|
1877
|
+
triage: {
|
|
1878
|
+
lastDecisionAt: string | null;
|
|
1879
|
+
confidence: number | null;
|
|
1880
|
+
iceTotal: number | null;
|
|
1881
|
+
iceI: number | null;
|
|
1882
|
+
iceC: number | null;
|
|
1883
|
+
iceE: number | null;
|
|
1884
|
+
};
|
|
1885
|
+
agent: {
|
|
1886
|
+
childAssignments: readonly ChildAssignmentViewV2[];
|
|
1887
|
+
dispatchKind?: IssueDispatchKind | null;
|
|
1888
|
+
latestWorkDispatch: LatestWorkDispatchViewV2 | null;
|
|
1889
|
+
};
|
|
1890
|
+
usage: CardUsage;
|
|
1891
|
+
createdAt: string | number;
|
|
1892
|
+
updatedAt: string | number;
|
|
1893
|
+
}
|
|
1894
|
+
type CardFaceList = {
|
|
1895
|
+
name: string;
|
|
1896
|
+
id: string;
|
|
1897
|
+
color: string;
|
|
1898
|
+
emoji: string;
|
|
1899
|
+
};
|
|
1900
|
+
|
|
1901
|
+
type CardFaceStatusMark = {
|
|
1902
|
+
kind: "labelled";
|
|
1903
|
+
} | {
|
|
1904
|
+
kind: "lane";
|
|
1905
|
+
laneListId: string | null;
|
|
1906
|
+
};
|
|
1907
|
+
interface CardFaceProps {
|
|
1908
|
+
card: CardFaceModel;
|
|
1909
|
+
renderTitle: (props: {
|
|
1910
|
+
className: string;
|
|
1911
|
+
describedBy: string;
|
|
1912
|
+
}) => ReactNode;
|
|
1913
|
+
trailing?: ReactNode;
|
|
1914
|
+
statusMark: CardFaceStatusMark;
|
|
1915
|
+
cover?: ReactNode;
|
|
1916
|
+
inParentBox?: boolean;
|
|
1917
|
+
}
|
|
1918
|
+
function CardFace({ card, renderTitle, trailing, statusMark, cover, inParentBox }: CardFaceProps): react.JSX.Element;
|
|
1919
|
+
|
|
1920
|
+
function CardBoard({ state, cardPath, }: {
|
|
1921
|
+
state: BoardLaneState;
|
|
1922
|
+
cardPath?: (cardId: string) => string;
|
|
1923
|
+
}): react.JSX.Element;
|
|
1924
|
+
|
|
1925
|
+
type CardViewProps = StandardCardPageProps;
|
|
1926
|
+
interface CardListViewProps {
|
|
1927
|
+
readonly scope: BoardScope;
|
|
1928
|
+
readonly cardPath: (cardId: string) => string;
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
function requestBoardMove(req: LaneMoveRequest): Promise<BoardMoveResult>;
|
|
1932
|
+
|
|
1933
|
+
export { ActivityTab, AttachmentsTab, AttentionZone, CardActionsMenu, CardBoard, CardFace, CardLink, ChecklistsSection, ChildrenSection, DependenciesSection, EditableContext, EditableSummary, EditableTitle, EffortControl, GatesSection, ParentField, PlansField, PriorityControl, ProblemsSection, RetroTab, StandardCardPage, StatusControl, TypeControl, WorkStateControl, boardCardPath, createCard, defaultNewCardPriority, editCard, planCardPath, planPathFromCard, requestBoardMove, transitionCard, useAttachmentActions, useBoardLaneState, useIssueDetail as useCard, useCardMutation, useCardsOfType };
|
|
1934
|
+
export type { AttachmentActions, BoardLaneState, BoardMoveResult, BoardScope, CardEditPatch, CardFaceProps, CardListViewProps, CardMutation, CardViewProps, IssueViewV2, LaneMoveRequest, LiveQueryResult, NewCardInput, StandardCardPageProps };
|
|
1935
|
+
}
|