@50arms/plugin-sdk 0.2.51 → 0.2.54

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.
@@ -1,7 +1,7 @@
1
1
  declare module "@danxbot/card-kit@1" {
2
2
  import { PagedWindow, SortValue } from '@50arms/ui';
3
3
  import * as react from 'react';
4
- import { ReactNode, ComponentProps } from 'react';
4
+ import { ReactNode } from 'react';
5
5
  export { Link, useNavigate } from 'react-router';
6
6
 
7
7
  const BOARD_ID: unique symbol;
@@ -67,225 +67,15 @@ declare module "@danxbot/card-kit@1" {
67
67
  type: ResourceType;
68
68
  id: string;
69
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;
70
+ type RiskScore = "R0" | "R1" | "R2" | "R3" | "R4";
284
71
  type WorkMarkResourceType = "plan" | "problem" | "issue" | "plan_record" | "plan_section" | "design" | "decision";
285
72
  interface WorkMarkResource extends ResourceRef {
286
73
  type: WorkMarkResourceType;
287
74
  }
288
75
 
76
+ type QualityGatePhase = "plan" | "code";
77
+ type ControlValue = boolean | string;
78
+
289
79
  type ControlSource = "card" | "plan" | "board" | "team" | "system";
290
80
  interface ControlFallback {
291
81
  readonly value: ControlValue;
@@ -379,15 +169,21 @@ declare module "@danxbot/card-kit@1" {
379
169
 
380
170
  interface V2CopyComment {
381
171
  author: string;
382
- text: string;
172
+ messages: string[];
173
+ reduced_text: string | null;
383
174
  metadata: unknown | null;
384
175
  answers_decision: V2CopyDecisionRef | null;
385
176
  tags: V2CopyCommentTag[];
177
+ sign_off: V2CopySignOff | null;
386
178
  team_agent: string | null;
387
179
  author_email: string | null;
388
180
  created_at: string;
389
181
  updated_at: string;
390
182
  }
183
+ interface V2CopySignOff {
184
+ kind: "design";
185
+ action: DesignDecisionOutcome;
186
+ }
391
187
  interface V2CopyDecisionRef {
392
188
  problem: number;
393
189
  decision: number;
@@ -442,7 +238,7 @@ declare module "@danxbot/card-kit@1" {
442
238
  interface V2CopyDesignDecision {
443
239
  revision_no: number;
444
240
  outcome: DesignDecisionOutcome;
445
- note: string | null;
241
+ comment: number;
446
242
  decided_by: string;
447
243
  created_at: string;
448
244
  retracted_at: string | null;
@@ -510,7 +306,7 @@ declare module "@danxbot/card-kit@1" {
510
306
  interface V2CopyChecklistItem {
511
307
  label: string;
512
308
  detail: string;
513
- status: ChecklistItemStatus$1;
309
+ status: ChecklistItemStatus;
514
310
  }
515
311
  interface V2CopyDependency {
516
312
  kind: IssueDependencyKind;
@@ -749,6 +545,29 @@ declare module "@danxbot/card-kit@1" {
749
545
  content: string;
750
546
  }
751
547
 
548
+ type PreGateHold = {
549
+ kind: "awaiting_person";
550
+ } | {
551
+ kind: "repo_designs_setting_up";
552
+ plan: {
553
+ id: number;
554
+ name: string;
555
+ };
556
+ } | {
557
+ kind: "repo_designs_off";
558
+ } | {
559
+ kind: "board_needs_repo";
560
+ } | {
561
+ kind: "decided_by_person";
562
+ gate: string;
563
+ decided_by: string;
564
+ };
565
+
566
+ interface CodeGateStatus {
567
+ gate: string;
568
+ status: QualityGateStatus;
569
+ }
570
+
752
571
  interface CommentTagOption extends CommentResourceTag {
753
572
  name: string | null;
754
573
  card_id: CardRef | null;
@@ -771,6 +590,16 @@ declare module "@danxbot/card-kit@1" {
771
590
  }[];
772
591
  }
773
592
 
593
+ type ConnectionState = "connecting" | "connected" | "disconnected";
594
+ interface LiveQueryResult<T> {
595
+ data: T | null;
596
+ loading: boolean;
597
+ refreshing?: boolean;
598
+ error: Error | null;
599
+ connection: ConnectionState;
600
+ refetch: () => void;
601
+ }
602
+
774
603
  interface ReadinessBlocker {
775
604
  worker_id: string;
776
605
  incomplete_count: number;
@@ -795,32 +624,14 @@ declare module "@danxbot/card-kit@1" {
795
624
  reason: "profile_role_missing";
796
625
  };
797
626
 
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
-
627
+ interface DispatchKeyBlocker {
628
+ worker_id: string;
629
+ owner_user_id: number;
630
+ owner_username: string;
631
+ reason: DispatchKeyRefusal["reason"];
632
+ detail: string;
633
+ }
634
+
824
635
  type PickerRouting = "gate" | "queued" | "not_queued" | "skip" | "terminal_or_container";
825
636
  interface DispatchableExplainView {
826
637
  id: CardRef;
@@ -844,8 +655,6 @@ declare module "@danxbot/card-kit@1" {
844
655
  readonly model: string;
845
656
  readonly effort: string;
846
657
  }
847
-
848
- type IssueStatus = "Review" | "ToDo" | "In Progress" | "Backlog" | "Done" | "Cancelled";
849
658
  interface InheritedBlockedViewV2 {
850
659
  id: string;
851
660
  reason: string;
@@ -928,19 +737,19 @@ declare module "@danxbot/card-kit@1" {
928
737
  title: string;
929
738
  checked: boolean;
930
739
  }
931
- type ChecklistItemStatus = "incomplete" | "failing" | "passing" | "cancelled" | "deferred";
740
+ type ChecklistItemStatus$1 = "incomplete" | "failing" | "passing" | "cancelled" | "deferred";
932
741
  interface ChecklistItemView {
933
742
  id: number;
934
743
  label: string;
935
744
  detail: string;
936
- status: ChecklistItemStatus;
745
+ status: ChecklistItemStatus$1;
937
746
  }
938
747
  interface ChecklistView {
939
748
  id: number;
940
749
  name: string;
941
750
  items: ChecklistItemView[];
942
751
  }
943
- type DesignDecisionOutcome = "rejected" | "approved" | "changes_requested";
752
+ type DesignDecisionOutcome = "approved" | "changes_requested" | "rejected";
944
753
  interface ChecklistHistoryViewV2 {
945
754
  action: "create" | "rename" | "remove" | "add_item" | "update_item" | "remove_item";
946
755
  checklist: string;
@@ -969,12 +778,17 @@ declare module "@danxbot/card-kit@1" {
969
778
  author: string;
970
779
  by: AuthorV2;
971
780
  timestamp: string;
781
+ messages: Array<string>;
972
782
  text: string;
783
+ reduced?: undefined | true;
784
+ reduced_text?: undefined | null | string;
785
+ reply_to_removed?: undefined | true;
973
786
  updated_at: string;
974
787
  origin: "" | "trello" | "slack" | "asana" | "danxbot";
975
788
  via_key?: undefined | null | ViaKey;
976
789
  metadata?: unknown;
977
790
  answers_decision_id?: undefined | null | number;
791
+ sign_off?: undefined | null | CommentSignOffViewV2;
978
792
  tags: Array<{ kind: "problem"; ref: number; } | { kind: "design"; ref: number; } | { kind: "decision"; ref: number; }>;
979
793
  resource_tags: Array<CommentResourceTag>;
980
794
  reply_to_comment_id: null | number;
@@ -994,7 +808,6 @@ declare module "@danxbot/card-kit@1" {
994
808
  thumbnail_error: null | string;
995
809
  created_at: string;
996
810
  }>);
997
- triage?: undefined | TriageViewV2;
998
811
  title: string;
999
812
  description?: undefined | string;
1000
813
  status: "Cancelled" | "Review" | "ToDo" | "In Progress" | "Backlog" | "Done";
@@ -1039,6 +852,9 @@ declare module "@danxbot/card-kit@1" {
1039
852
  projection_error?: undefined | null | string;
1040
853
  summary?: undefined | null | string;
1041
854
  pull_request_url?: undefined | null | string;
855
+ risk_score?: undefined | null | "R0" | "R1" | "R2" | "R3" | "R4";
856
+ risk_reason?: undefined | null | string;
857
+ risk_raise_reason?: undefined | null | string;
1042
858
  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
859
  problem_total?: undefined | number;
1044
860
  decision_record_total?: undefined | number;
@@ -1049,6 +865,7 @@ declare module "@danxbot/card-kit@1" {
1049
865
  open_action_count?: undefined | number;
1050
866
  open_problem_count?: undefined | number;
1051
867
  ac?: undefined | Array<AcItemViewV2>;
868
+ triage?: undefined | TriageViewV2;
1052
869
  triage_enabled?: undefined | false | true;
1053
870
  dispatch?: undefined | null | { started_at: string | null; };
1054
871
  dispatch_kind?: undefined | null | "work" | "triage" | "recovery" | "flesh-out" | "chat" | "main-sync-repair" | "worktree-maintenance" | "manual" | "landing" | `gate-${string}`;
@@ -1112,9 +929,9 @@ declare module "@danxbot/card-kit@1" {
1112
929
  metadata: unknown;
1113
930
  }>);
1114
931
  decision_records?: undefined | (Array<{
1115
- action: "created" | "changed" | "deleted" | "restored";
1116
932
  title: string;
1117
933
  kind: "design" | "business_rule" | "architecture" | "other";
934
+ action: "created" | "changed" | "deleted" | "restored";
1118
935
  made_by: "agent" | "human";
1119
936
  approved: boolean;
1120
937
  impact: number;
@@ -1140,9 +957,9 @@ declare module "@danxbot/card-kit@1" {
1140
957
  comment_count: number;
1141
958
  unread_comment_count: number;
1142
959
  versions?: undefined | (Array<{
1143
- action: "created" | "changed" | "deleted" | "restored";
1144
960
  title: string;
1145
961
  kind: "design" | "business_rule" | "architecture" | "other";
962
+ action: "created" | "changed" | "deleted" | "restored";
1146
963
  made_by: "agent" | "human";
1147
964
  impact: number;
1148
965
  confidence: number;
@@ -1162,8 +979,8 @@ declare module "@danxbot/card-kit@1" {
1162
979
  version_no: number;
1163
980
  }>);
1164
981
  approvals?: undefined | (Array<{
1165
- action: "approve" | "unapprove";
1166
982
  at: string;
983
+ action: "approve" | "unapprove";
1167
984
  id: number;
1168
985
  ref: string;
1169
986
  version_no: number;
@@ -1172,9 +989,9 @@ declare module "@danxbot/card-kit@1" {
1172
989
  }>);
1173
990
  }>);
1174
991
  decision_record_versions?: undefined | (Array<{
1175
- action: "created" | "changed" | "deleted" | "restored";
1176
992
  title: string;
1177
993
  kind: "design" | "business_rule" | "architecture" | "other";
994
+ action: "created" | "changed" | "deleted" | "restored";
1178
995
  made_by: "agent" | "human";
1179
996
  impact: number;
1180
997
  confidence: number;
@@ -1194,8 +1011,8 @@ declare module "@danxbot/card-kit@1" {
1194
1011
  version_no: number;
1195
1012
  }>);
1196
1013
  decision_record_approvals?: undefined | (Array<{
1197
- action: "approve" | "unapprove";
1198
1014
  at: string;
1015
+ action: "approve" | "unapprove";
1199
1016
  id: number;
1200
1017
  ref: string;
1201
1018
  version_no: number;
@@ -1218,7 +1035,7 @@ declare module "@danxbot/card-kit@1" {
1218
1035
  created_by: string;
1219
1036
  created_at: string;
1220
1037
  archived_at: null | string;
1221
- review_state: "rejected" | "approved" | "awaiting_review" | "changes_requested";
1038
+ review_state: "approved" | "awaiting_review" | "changes_requested" | "rejected";
1222
1039
  revision_count: number;
1223
1040
  latest_revision_no: number;
1224
1041
  chosen_options: null | OptionSelection;
@@ -1245,8 +1062,9 @@ declare module "@danxbot/card-kit@1" {
1245
1062
  decisions?: undefined | (Array<{
1246
1063
  decision_id: number;
1247
1064
  revision_no: number;
1248
- outcome: "rejected" | "approved" | "changes_requested";
1065
+ outcome: "approved" | "changes_requested" | "rejected";
1249
1066
  note: null | string;
1067
+ comment_id: number;
1250
1068
  decided_by: string;
1251
1069
  decided_by_ref: ActorRef;
1252
1070
  created_at: string;
@@ -1274,12 +1092,12 @@ declare module "@danxbot/card-kit@1" {
1274
1092
  }>;
1275
1093
  children_detail?: undefined | (Array<{
1276
1094
  status: "Cancelled" | "Review" | "ToDo" | "In Progress" | "Backlog" | "Done";
1277
- type: undefined | string;
1278
- priority: undefined | number;
1095
+ type: string;
1096
+ priority: number;
1279
1097
  name: string;
1280
1098
  id: string;
1281
1099
  blocked: boolean;
1282
- summary: undefined | null | string;
1100
+ summary: null | string;
1283
1101
  open_problem_count: number;
1284
1102
  waiting_on: boolean;
1285
1103
  waiting_on_by_card: boolean;
@@ -1330,7 +1148,7 @@ declare module "@danxbot/card-kit@1" {
1330
1148
  value: null | string | false | true;
1331
1149
  source: "board" | "team" | "plan" | "card" | "system" | "inherit";
1332
1150
  base_hash: string;
1333
- kind: "boolean" | "enum" | "branch" | "markdown" | "seconds";
1151
+ kind: "boolean" | "enum" | "branch" | "markdown" | "seconds" | "months";
1334
1152
  options: null | Array<string>;
1335
1153
  description: string;
1336
1154
  system_default: string | false | true;
@@ -1379,7 +1197,7 @@ declare module "@danxbot/card-kit@1" {
1379
1197
  id: number;
1380
1198
  solution_id: null | number;
1381
1199
  solution_title: null | string;
1382
- outcome: "answered" | "rejected";
1200
+ outcome: "rejected" | "answered";
1383
1201
  freeform: null | string;
1384
1202
  note: null | string;
1385
1203
  decided_by: string;
@@ -1406,9 +1224,9 @@ declare module "@danxbot/card-kit@1" {
1406
1224
  answered_version_no: null | number;
1407
1225
  choices: Array<{ solution_id: number; kind: DecisionReviewChoiceKind; version_no: number; title: string; }>;
1408
1226
  versions?: undefined | (Array<{
1409
- action: "created" | "changed" | "deleted" | "restored";
1410
1227
  title: string;
1411
1228
  kind: "design" | "business_rule" | "architecture" | "other";
1229
+ action: "created" | "changed" | "deleted" | "restored";
1412
1230
  made_by: "agent" | "human";
1413
1231
  impact: number;
1414
1232
  confidence: number;
@@ -1458,7 +1276,7 @@ declare module "@danxbot/card-kit@1" {
1458
1276
  created_by: string;
1459
1277
  created_at: string;
1460
1278
  archived_at: null | string;
1461
- review_state: "rejected" | "approved" | "awaiting_review" | "changes_requested";
1279
+ review_state: "approved" | "awaiting_review" | "changes_requested" | "rejected";
1462
1280
  revision_count: number;
1463
1281
  latest_revision_no: number;
1464
1282
  chosen_options: null | OptionSelection;
@@ -1485,8 +1303,9 @@ declare module "@danxbot/card-kit@1" {
1485
1303
  decisions?: undefined | (Array<{
1486
1304
  decision_id: number;
1487
1305
  revision_no: number;
1488
- outcome: "rejected" | "approved" | "changes_requested";
1306
+ outcome: "approved" | "changes_requested" | "rejected";
1489
1307
  note: null | string;
1308
+ comment_id: number;
1490
1309
  decided_by: string;
1491
1310
  decided_by_ref: ActorRef;
1492
1311
  created_at: string;
@@ -1527,19 +1346,229 @@ declare module "@danxbot/card-kit@1" {
1527
1346
  url: string;
1528
1347
  }
1529
1348
 
1530
- interface CodeGateStatus {
1531
- gate: string;
1532
- status: QualityGateStatus;
1349
+ type IssueStatus = "Review" | "ToDo" | "In Progress" | "Backlog" | "Done" | "Cancelled";
1350
+ type EffortLevelName = "min" | "very_low" | "low" | "medium" | "high" | "very_high" | "max";
1351
+ type IssueProblemType = "design" | "question" | "action" | "decision_review";
1352
+ type DecisionOutcome = "rejected" | "answered";
1353
+ type IssueDependencyKind = "depends_on" | "conflict_on";
1354
+ type IssueDispatchKind = "work" | "triage" | "recovery" | "flesh-out" | "chat" | "main-sync-repair" | "worktree-maintenance" | "manual" | "landing" | `gate-${string}`;
1355
+ type IssueAssignmentMode = "automated" | "manual";
1356
+ type StartCommitError = "no_repo" | "not_github_repo" | "no_token" | "github_refused" | "github_unreachable" | "unreadable_tip" | "unexpected";
1357
+ interface IssueV2 {
1358
+ id: CardId;
1359
+ ref: CardRef;
1360
+ rev: number;
1361
+ board_id: BoardId;
1362
+ schema_version: number;
1363
+ type: CardTypeKey;
1364
+ title: string;
1365
+ description: string;
1366
+ summary: string | null;
1367
+ pull_request_url: string | null;
1368
+ risk_score: RiskScore | null;
1369
+ risk_reason: string | null;
1370
+ risk_raise_reason: string | null;
1371
+ start_commit_sha: string | null;
1372
+ start_commit_at: string | null;
1373
+ start_commit_error: StartCommitError | null;
1374
+ start_commit_error_detail: string | null;
1375
+ parent_id: CardId | null;
1376
+ parent_ref: CardRef | null;
1377
+ effort_level: EffortLevelName;
1378
+ downward_rung: EffortLevelName | null;
1379
+ source_type: string;
1380
+ list_id: string | null;
1381
+ assigned_agent: string | null;
1382
+ priority: number;
1383
+ created_at: string;
1384
+ updated_at: string;
1385
+ deleted_at: string | null;
1386
+ ready_at: string | null;
1387
+ started_at: string | null;
1388
+ completed_at: string | null;
1389
+ cancelled_at: string | null;
1390
+ archived_at: string | null;
1391
+ wake_at: string | null;
1392
+ wake_action: "ready" | "review" | null;
1393
+ dispatch_id: string | null;
1394
+ dispatch_started_at: string | null;
1395
+ dispatch_kind: IssueDispatchKind | null;
1396
+ assignment_mode: IssueAssignmentMode;
1397
+ card_branch: string | null;
1398
+ last_commit_sha: string | null;
1399
+ card_branch_retired_at: string | null;
1400
+ card_branch_retired_reason: string | null;
1401
+ card_branch_retired_by: string | null;
1402
+ chat_session_uuid: string | null;
1403
+ slack_session_uuid: string | null;
1404
+ blocked_at: string | null;
1405
+ blocked_reason: string | null;
1406
+ blocked_by: string | null;
1407
+ blocked_via_key_id: number | null;
1408
+ blocked_via_key_name: string | null;
1409
+ blocked_team_agent_id: number | null;
1410
+ open_problem_count: number;
1411
+ triage_ice_total: number | null;
1412
+ triage_ice_i: number | null;
1413
+ triage_ice_c: number | null;
1414
+ triage_ice_e: number | null;
1415
+ triage_confidence: number | null;
1416
+ triage_last_status: string;
1417
+ triage_last_explain: string;
1418
+ terminal_derived: boolean;
1419
+ in_progress_derived: boolean;
1420
+ dispatchable_derived: boolean;
1421
+ triage_enabled: boolean;
1422
+ content_hash: string;
1533
1423
  }
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;
1424
+ interface IssueDisplayV2 extends IssueV2 {
1425
+ status_derived: IssueStatus;
1426
+ }
1427
+ interface CommentResourceTag {
1428
+ tag: string;
1429
+ resource_type: ResourceType | null;
1430
+ resource_id: string | null;
1431
+ }
1432
+ interface AuthorV2 {
1433
+ name: string;
1434
+ kind: "agent" | "person";
1435
+ avatar_url: string | null;
1436
+ reason: StatusReason | null;
1437
+ team_agent_id: number | null;
1438
+ }
1439
+ interface CommentSignOffV2 {
1440
+ kind: "design";
1441
+ action: DesignDecisionOutcome;
1442
+ }
1443
+ interface SignOffPicksV2 {
1444
+ groups: DesignOptionGroup[];
1445
+ selection: OptionSelection;
1446
+ }
1447
+ interface CommentSignOffViewV2 extends CommentSignOffV2 {
1448
+ picks: SignOffPicksV2 | null;
1449
+ }
1450
+ type CommentReplyStateName = "sent" | "seen" | "responded";
1451
+ type CommentRecipientV2 = {
1452
+ kind: "agent";
1453
+ by: AuthorV2;
1454
+ reachability: CommentReachabilityV2;
1455
+ } | {
1456
+ kind: "none";
1457
+ waiting_on: {
1458
+ kind: "plan";
1459
+ id: PlanRefNum;
1460
+ ref: string;
1461
+ name: string;
1462
+ } | {
1463
+ kind: "card";
1464
+ id: string;
1465
+ };
1466
+ };
1467
+ type CommentReachabilityV2 = {
1468
+ state: "listening";
1469
+ } | {
1470
+ state: "busy";
1471
+ } | {
1472
+ state: "compacting";
1473
+ since: string;
1474
+ } | {
1475
+ state: "listener_down";
1476
+ } | {
1477
+ state: "paused_by_agent";
1478
+ reason: string;
1479
+ } | {
1480
+ state: "usage_limit";
1481
+ limit: PacingLimit;
1482
+ until: string;
1483
+ };
1484
+ type ReplyRecipientV2 = {
1485
+ kind: "agent";
1486
+ by: AuthorV2;
1487
+ } | Extract<CommentRecipientV2, {
1488
+ kind: "none";
1489
+ }>;
1490
+ interface CommentReplyStateV2 {
1491
+ state: CommentReplyStateName;
1492
+ recipient: ReplyRecipientV2;
1493
+ reply_comment_id: number | null;
1494
+ }
1495
+ type ChecklistItemStatus = "incomplete" | "failing" | "passing" | "cancelled" | "deferred";
1496
+ interface ChecklistV2 {
1497
+ id: number;
1498
+ issue_id: CardId;
1499
+ ordinal: number;
1500
+ name: string;
1501
+ created_at: string;
1502
+ updated_at: string;
1503
+ deleted_at: string | null;
1504
+ }
1505
+ interface ChecklistItemV2 {
1506
+ id: number;
1507
+ checklist_id: number;
1508
+ ordinal: number;
1509
+ label: string;
1510
+ detail: string;
1511
+ status: ChecklistItemStatus;
1512
+ created_at: string;
1513
+ updated_at: string;
1514
+ deleted_at: string | null;
1515
+ }
1516
+ interface ChecklistWithItemsV2 extends ChecklistV2 {
1517
+ items: ChecklistItemV2[];
1518
+ }
1519
+ type ThumbnailStatus = "ready" | "not_image" | "failed" | "pending";
1520
+ interface IssueAttachmentV2 {
1521
+ id: number;
1522
+ issue_id: CardId;
1523
+ source_type: string;
1524
+ external_id: string;
1525
+ url: string;
1526
+ filename: string;
1527
+ mime: string;
1528
+ is_primary: boolean;
1529
+ thumbnail_status: ThumbnailStatus;
1530
+ thumbnail_url: string | null;
1531
+ thumbnail_error: string | null;
1532
+ created_at: string;
1533
+ updated_at: string;
1534
+ deleted_at: string | null;
1535
+ }
1536
+ type QualityGateStatus = "pending" | "pass" | "fail" | "skipped";
1537
+ type GateRoundReviewerKind = "session" | "dispatch" | "person";
1538
+ type GateRoundVerdict = "pass" | "fail" | "retry" | "skipped";
1539
+ interface GateRoundV2 {
1540
+ id: number;
1541
+ number: number;
1542
+ reviewed_ref: string | null;
1543
+ reviewer_kind: GateRoundReviewerKind;
1544
+ reviewer_name: string;
1545
+ by: AuthorV2;
1546
+ via_key: {
1547
+ id: number;
1548
+ name: string;
1549
+ } | null;
1550
+ reviewer_dispatch_id: string | null;
1551
+ review_grade: EffortLevelName | null;
1552
+ model: string | null;
1553
+ effort: string | null;
1554
+ verdict: GateRoundVerdict;
1555
+ summary: string;
1556
+ recorded_at: string;
1557
+ }
1558
+ interface ProvenanceRecordV2 {
1559
+ id: number;
1560
+ quote: string | null;
1561
+ reasoning: string | null;
1562
+ source: ProvenanceSourceV2 | null;
1563
+ recorded_by: AuthorV2;
1564
+ recorded_at: string;
1565
+ }
1566
+ interface ProvenanceSourceV2 {
1567
+ kind: ProvenanceSourceKind;
1568
+ ref: string;
1569
+ card_id: CardRef | null;
1570
+ author: AuthorV2 | null;
1571
+ at: string | null;
1543
1572
  }
1544
1573
 
1545
1574
  function useIssueDetail(id: string): LiveQueryResult<IssueViewV2>;
@@ -1602,7 +1631,7 @@ declare module "@danxbot/card-kit@1" {
1602
1631
 
1603
1632
  interface LaneMoveRequest {
1604
1633
  issueId: string;
1605
- lane: IssueStatus$1;
1634
+ lane: IssueStatus;
1606
1635
  placement: PriorityPlacement | null;
1607
1636
  }
1608
1637
  type BoardMoveResult = {
@@ -1637,16 +1666,16 @@ declare module "@danxbot/card-kit@1" {
1637
1666
  function createCard(input: NewCardInput): Promise<string>;
1638
1667
  type HideableLane = "Cancelled" | "Backlog";
1639
1668
  interface LaneVisibility {
1640
- isShown: (lane: IssueStatus$1) => boolean;
1669
+ isShown: (lane: IssueStatus) => boolean;
1641
1670
  setShown: (lane: HideableLane, shown: boolean) => void;
1642
1671
  }
1643
1672
 
1644
1673
  type LaneSortField = "title" | "id" | "priority" | "updated_at" | "created_at";
1645
1674
  type LaneSort = SortValue<LaneSortField>;
1646
- type LaneSorts = Readonly<Record<IssueStatus$1, LaneSort>>;
1675
+ type LaneSorts = Readonly<Record<IssueStatus, LaneSort>>;
1647
1676
  interface LaneSortState {
1648
1677
  readonly sorts: LaneSorts;
1649
- readonly setSort: (lane: IssueStatus$1, sort: LaneSort) => void;
1678
+ readonly setSort: (lane: IssueStatus, sort: LaneSort) => void;
1650
1679
  }
1651
1680
 
1652
1681
  type BoardScope = {
@@ -1658,8 +1687,8 @@ declare module "@danxbot/card-kit@1" {
1658
1687
  readonly planId: number;
1659
1688
  readonly boards: readonly BoardRefNum[];
1660
1689
  };
1661
- type BoardLaneWindows = Readonly<Record<IssueStatus$1, PagedWindow<IssueViewV2>>>;
1662
- type LaneLeafTotals = Readonly<Record<IssueStatus$1, number | null>>;
1690
+ type BoardLaneWindows = Readonly<Record<IssueStatus, PagedWindow<IssueViewV2>>>;
1691
+ type LaneLeafTotals = Readonly<Record<IssueStatus, number | null>>;
1663
1692
  interface BoardLaneState {
1664
1693
  readonly scope: BoardScope;
1665
1694
  readonly windows: BoardLaneWindows;
@@ -1708,17 +1737,17 @@ declare module "@danxbot/card-kit@1" {
1708
1737
  choiceLocked: boolean;
1709
1738
  }
1710
1739
 
1711
- function ProblemsSection$1({ card, problems, canAnswer, designGatePending, mutation, }: {
1740
+ interface ProblemsSectionProps {
1712
1741
  card: ProblemCard;
1713
1742
  problems: ProblemAttention[];
1714
1743
  canAnswer: boolean;
1715
1744
  designGatePending: boolean;
1716
1745
  mutation: CardMutation;
1717
- }): react.JSX.Element;
1746
+ }
1718
1747
 
1719
1748
  function ProblemsSection({ cardId, ...rest }: {
1720
1749
  cardId: IssueViewV2["id"];
1721
- } & Omit<ComponentProps<typeof ProblemsSection$1>, "card">): react.JSX.Element;
1750
+ } & Omit<ProblemsSectionProps, "card">): react.JSX.Element;
1722
1751
 
1723
1752
  function DependenciesSection({ card, mutation }: {
1724
1753
  card: IssueViewV2;
@@ -1841,7 +1870,7 @@ declare module "@danxbot/card-kit@1" {
1841
1870
 
1842
1871
  interface CardFaceAc {
1843
1872
  total: number;
1844
- byStatus: Record<ChecklistItemStatus, number>;
1873
+ byStatus: Record<ChecklistItemStatus$1, number>;
1845
1874
  items?: NonNullable<IssueViewV2["ac_items"]>;
1846
1875
  }
1847
1876
  interface CardFaceModel {
@@ -1849,7 +1878,7 @@ declare module "@danxbot/card-kit@1" {
1849
1878
  title: string;
1850
1879
  type: CardTypeKey;
1851
1880
  priority: number;
1852
- statusName: IssueStatus$1;
1881
+ statusName: IssueStatus;
1853
1882
  status: CardStatusPresentation;
1854
1883
  list: CardFaceList | null;
1855
1884
  to: string;
@@ -1899,8 +1928,6 @@ declare module "@danxbot/card-kit@1" {
1899
1928
  };
1900
1929
 
1901
1930
  type CardFaceStatusMark = {
1902
- kind: "labelled";
1903
- } | {
1904
1931
  kind: "lane";
1905
1932
  laneListId: string | null;
1906
1933
  };
@@ -1911,7 +1938,7 @@ declare module "@danxbot/card-kit@1" {
1911
1938
  describedBy: string;
1912
1939
  }) => ReactNode;
1913
1940
  trailing?: ReactNode;
1914
- statusMark: CardFaceStatusMark;
1941
+ statusMark?: CardFaceStatusMark;
1915
1942
  cover?: ReactNode;
1916
1943
  inParentBox?: boolean;
1917
1944
  }
package/dist/cli.js CHANGED
@@ -5891,7 +5891,7 @@ var CARD_KIT_LIBRARY = "@danxbot/card-kit";
5891
5891
  var PLUGIN_RUNTIME_LIBRARIES = [
5892
5892
  { name: "react", major: 19 },
5893
5893
  { name: "react-dom", major: 19 },
5894
- { name: "@50arms/ui", major: 35 },
5894
+ { name: "@50arms/ui", major: 36 },
5895
5895
  { name: CARD_KIT_LIBRARY, major: CARD_KIT_MAJOR }
5896
5896
  ];
5897
5897
  var PLUGIN_RUNTIME_SPECIFIERS = [
package/dist/publish.js CHANGED
@@ -5886,7 +5886,7 @@ var CARD_KIT_LIBRARY = "@danxbot/card-kit";
5886
5886
  var PLUGIN_RUNTIME_LIBRARIES = [
5887
5887
  { name: "react", major: 19 },
5888
5888
  { name: "react-dom", major: 19 },
5889
- { name: "@50arms/ui", major: 35 },
5889
+ { name: "@50arms/ui", major: 36 },
5890
5890
  { name: CARD_KIT_LIBRARY, major: CARD_KIT_MAJOR }
5891
5891
  ];
5892
5892
  var PLUGIN_RUNTIME_SPECIFIERS = [
package/dist/vite.js CHANGED
@@ -4,7 +4,7 @@ var CARD_KIT_LIBRARY = "@danxbot/card-kit";
4
4
  var PLUGIN_RUNTIME_LIBRARIES = [
5
5
  { name: "react", major: 19 },
6
6
  { name: "react-dom", major: 19 },
7
- { name: "@50arms/ui", major: 35 },
7
+ { name: "@50arms/ui", major: 36 },
8
8
  { name: CARD_KIT_LIBRARY, major: CARD_KIT_MAJOR }
9
9
  ];
10
10
  var PLUGIN_RUNTIME_SPECIFIERS = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@50arms/plugin-sdk",
3
- "version": "0.2.51",
3
+ "version": "0.2.54",
4
4
  "description": "SDK for building 50 Arms plugins (DX-5170): the card kit's type declarations, the Widget declaration kit, a Vite preset that builds a plugin against the app's shared runtime and writes its manifest, and the danx-plugin CLI.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -37,7 +37,7 @@
37
37
  "node": ">=20"
38
38
  },
39
39
  "peerDependencies": {
40
- "@50arms/ui": "^35.1.0",
40
+ "@50arms/ui": "^35.1.0 || ^36.0.0",
41
41
  "@types/react": "^19.0.0",
42
42
  "react": "^19.0.0",
43
43
  "react-router": "^7.0.0",
@@ -50,7 +50,7 @@
50
50
  "test": "vitest run"
51
51
  },
52
52
  "devDependencies": {
53
- "@50arms/ui": "35.1.0",
53
+ "@50arms/ui": "36.1.0",
54
54
  "@types/node": "^22.0.0",
55
55
  "@types/react": "^19.2.2",
56
56
  "esbuild": "^0.25.0",