@danxbot/plugin-sdk 0.2.28 → 0.2.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,15 @@ declare module "@danxbot/card-kit@1" {
4
4
  import { ReactNode } from 'react';
5
5
  export { Link, useNavigate } from 'react-router';
6
6
 
7
+ interface DesignOptionGroup {
8
+ key: string;
9
+ label: string;
10
+ options: string[];
11
+ multiple: boolean;
12
+ recommended: string[];
13
+ }
14
+ type OptionSelection = Record<string, string[]>;
15
+
7
16
  type CardTypeKey = string;
8
17
  interface RepoProfileCopy {
9
18
  shipped: string;
@@ -34,10 +43,11 @@ declare module "@danxbot/card-kit@1" {
34
43
  id: StatusReasonId;
35
44
  values: StatusReasonValues;
36
45
  }
46
+ type PacingLimit = "five_hour" | "weekly" | "spend";
37
47
 
38
48
  type IssueStatus$1 = "Review" | "ToDo" | "In Progress" | "Backlog" | "Done" | "Cancelled";
39
49
  type EffortLevelName = "min" | "very_low" | "low" | "medium" | "high" | "very_high" | "max";
40
- type IssueAuthoredProblemType = "question" | "action";
50
+ type IssueProblemType = "question" | "action" | "design";
41
51
  type DecisionOutcome = "answered" | "rejected";
42
52
  type IssueDependencyKind = "depends_on" | "conflict_on";
43
53
  type IssueDispatchKind = "work" | "triage" | "recovery" | "flesh-out" | "chat" | "main-sync-repair" | "worktree-maintenance" | "manual" | "landing" | `gate-${string}`;
@@ -102,7 +112,6 @@ declare module "@danxbot/card-kit@1" {
102
112
  status_derived: IssueStatus$1;
103
113
  in_progress_derived: boolean;
104
114
  dispatchable_derived: boolean;
105
- self_dispatchable_derived: boolean;
106
115
  triage_enabled: boolean;
107
116
  content_hash: string;
108
117
  }
@@ -117,6 +126,7 @@ declare module "@danxbot/card-kit@1" {
117
126
  type CommentRecipientV2 = {
118
127
  kind: "agent";
119
128
  by: AuthorV2;
129
+ reachability: CommentReachabilityV2;
120
130
  } | {
121
131
  kind: "none";
122
132
  waiting_on: {
@@ -128,9 +138,32 @@ declare module "@danxbot/card-kit@1" {
128
138
  id: string;
129
139
  };
130
140
  };
141
+ type CommentReachabilityV2 = {
142
+ state: "listening";
143
+ } | {
144
+ state: "busy";
145
+ } | {
146
+ state: "compacting";
147
+ since: string;
148
+ } | {
149
+ state: "listener_down";
150
+ } | {
151
+ state: "paused_by_agent";
152
+ reason: string;
153
+ } | {
154
+ state: "usage_limit";
155
+ limit: PacingLimit;
156
+ until: string;
157
+ };
158
+ type ReplyRecipientV2 = {
159
+ kind: "agent";
160
+ by: AuthorV2;
161
+ } | Extract<CommentRecipientV2, {
162
+ kind: "none";
163
+ }>;
131
164
  interface CommentReplyStateV2 {
132
165
  state: CommentReplyStateName;
133
- recipient: CommentRecipientV2;
166
+ recipient: ReplyRecipientV2;
134
167
  reply_comment_id: number | null;
135
168
  }
136
169
  type ChecklistItemStatus$1 = "incomplete" | "failing" | "passing" | "cancelled" | "deferred";
@@ -199,6 +232,229 @@ declare module "@danxbot/card-kit@1" {
199
232
  reason: StatusReason | ProfileName | null;
200
233
  }
201
234
 
235
+ type ListType = "archived" | "review" | "ready" | "in_progress" | "completed" | "cancelled";
236
+
237
+ interface SolutionContent {
238
+ title: string;
239
+ body: string;
240
+ pro: string;
241
+ con: string;
242
+ recommended: boolean;
243
+ }
244
+
245
+ interface V2CopyComment {
246
+ author: string;
247
+ text: string;
248
+ metadata: unknown | null;
249
+ answers_decision: V2CopyDecisionRef | null;
250
+ tags: V2CopyCommentTag[];
251
+ team_agent: string | null;
252
+ author_email: string | null;
253
+ created_at: string;
254
+ updated_at: string;
255
+ }
256
+ interface V2CopyDecisionRef {
257
+ problem: number;
258
+ decision: number;
259
+ }
260
+ type V2CopyCommentTag = {
261
+ kind: "problem";
262
+ index: number;
263
+ } | {
264
+ kind: "design";
265
+ index: number;
266
+ };
267
+ interface V2CopyBlobRef {
268
+ sha256: string;
269
+ size: number;
270
+ }
271
+ interface V2CopyAttachment {
272
+ filename: string;
273
+ primary: boolean;
274
+ created_at: string;
275
+ updated_at: string;
276
+ blob: V2CopyBlobRef;
277
+ }
278
+ interface V2CopyDesignRevision {
279
+ revision_no: number;
280
+ target: string;
281
+ design_dir: string;
282
+ source_files: {
283
+ path: string;
284
+ content: string;
285
+ }[];
286
+ option_groups: DesignOptionGroup[];
287
+ built_from_commit: string;
288
+ note: string;
289
+ created_by: string;
290
+ created_at: string;
291
+ bundle: {
292
+ blob: V2CopyBlobRef;
293
+ } | null;
294
+ screenshot: {
295
+ blob: V2CopyBlobRef;
296
+ } | null;
297
+ }
298
+ interface V2CopyDesignDecision {
299
+ revision_no: number;
300
+ outcome: DesignDecisionOutcome;
301
+ note: string | null;
302
+ decided_by: string;
303
+ created_at: string;
304
+ retracted_at: string | null;
305
+ options: OptionSelection | null;
306
+ }
307
+ interface V2CopyDesign {
308
+ design_no: number;
309
+ title: string;
310
+ created_by: string;
311
+ created_at: string;
312
+ revisions: V2CopyDesignRevision[];
313
+ decisions: V2CopyDesignDecision[];
314
+ }
315
+ interface V2CopyControlOverride {
316
+ key: string;
317
+ value: unknown;
318
+ }
319
+ interface V2CopyAgentNote {
320
+ author: string;
321
+ text: string;
322
+ team_agent: string | null;
323
+ metadata: Record<string, unknown> | null;
324
+ ordinal: number;
325
+ created_at: string;
326
+ updated_at: string;
327
+ }
328
+ interface V2CopyAc {
329
+ title: string;
330
+ checked: boolean;
331
+ }
332
+ interface V2CopyChecklist {
333
+ name: string;
334
+ items: V2CopyChecklistItem[];
335
+ }
336
+ interface V2CopyChecklistItem {
337
+ label: string;
338
+ detail: string;
339
+ status: ChecklistItemStatus$1;
340
+ }
341
+ interface V2CopyDependency {
342
+ kind: IssueDependencyKind;
343
+ target_id: string;
344
+ reason: string;
345
+ }
346
+ interface V2CopyRetro {
347
+ good: string;
348
+ bad: string;
349
+ correctable_danxbot_problem: boolean;
350
+ correctable_danxbot_problem_description: string;
351
+ action_item_ids: string[];
352
+ commits: {
353
+ sha: string;
354
+ subject: string;
355
+ }[];
356
+ tests: V2CopyRetroTest[];
357
+ }
358
+ interface V2CopyRetroTest {
359
+ name: string;
360
+ kind: "group" | "e2e";
361
+ num_tests: number;
362
+ num_assertions: number | null;
363
+ num_passing_tests: number;
364
+ num_passing_assertions: number | null;
365
+ duration_ms: number;
366
+ }
367
+ interface V2CopyMirror {
368
+ target_type: MirrorProviderId;
369
+ target_ref: string;
370
+ target_url: string;
371
+ source_ref: string;
372
+ }
373
+ type SourceMirrorLocation = Record<MirrorProviderId, string | null>;
374
+ interface V2CopyQualityGate {
375
+ gate: string;
376
+ decision_note: string;
377
+ effort_level: EffortLevelName | null;
378
+ status: QualityGateStatus;
379
+ message: string;
380
+ completed_at: string | null;
381
+ attempts: number;
382
+ reviewed_ref: string | null;
383
+ decided_by: string | null;
384
+ owed: boolean;
385
+ }
386
+ interface V2CopySolution extends SolutionContent {
387
+ removed: boolean;
388
+ design_index: number | null;
389
+ steps: V2CopyStep[];
390
+ }
391
+ interface V2CopyStep {
392
+ title: string;
393
+ description: string | null;
394
+ steps: V2CopyStep[];
395
+ }
396
+ interface V2CopyDecision {
397
+ solution_index: number | null;
398
+ outcome: DecisionOutcome;
399
+ freeform: string | null;
400
+ note: string | null;
401
+ decided_by: string;
402
+ decided_at: string;
403
+ retracted_at: string | null;
404
+ }
405
+ interface V2CopyProblem {
406
+ statement: string;
407
+ context: string | null;
408
+ type: IssueProblemType;
409
+ summary: string | null;
410
+ removed: boolean;
411
+ solutions: V2CopySolution[];
412
+ decisions: V2CopyDecision[];
413
+ }
414
+ interface V2CopyIssue {
415
+ id: string;
416
+ parent_id: string | null;
417
+ type: CardTypeKey;
418
+ title: string;
419
+ description: string;
420
+ summary: string | null;
421
+ priority: number;
422
+ effort_level: EffortLevelName | null;
423
+ assigned_agent: string | null;
424
+ ready_at: string | null;
425
+ completed_at: string | null;
426
+ cancelled_at: string | null;
427
+ archived_at: string | null;
428
+ blocked_at: string | null;
429
+ blocked_reason: string | null;
430
+ ac: V2CopyAc[];
431
+ checklists: V2CopyChecklist[];
432
+ comments: V2CopyComment[];
433
+ agent_notes: V2CopyAgentNote[];
434
+ dependencies: V2CopyDependency[];
435
+ retro: V2CopyRetro | null;
436
+ mirrors: V2CopyMirror[];
437
+ quality_gates: V2CopyQualityGate[];
438
+ problems: V2CopyProblem[];
439
+ triage_enabled: boolean;
440
+ attachments: V2CopyAttachment[];
441
+ designs: V2CopyDesign[];
442
+ list_name: string | null;
443
+ list_type: ListType | null;
444
+ control_overrides: V2CopyControlOverride[];
445
+ unknown_fields: V2CopyUnknownField[];
446
+ }
447
+ interface V2CopyUnknownField {
448
+ path: string;
449
+ value: unknown;
450
+ }
451
+ interface V2CopyPayload {
452
+ schema_version: number;
453
+ issues: V2CopyIssue[];
454
+ source_mirror_location: SourceMirrorLocation;
455
+ blobs: Record<string, string>;
456
+ }
457
+
202
458
  interface HolderAgentPause {
203
459
  reason: string;
204
460
  since: string;
@@ -247,6 +503,14 @@ declare module "@danxbot/card-kit@1" {
247
503
  linesAdded: number;
248
504
  linesRemoved: number;
249
505
  }
506
+ interface UsageActivity {
507
+ activeMinutes: number;
508
+ agentMinutes: number;
509
+ tokens: number;
510
+ costUsd: number;
511
+ tokensPerMinute: number;
512
+ measuredSince: number;
513
+ }
250
514
  interface UsageSummary {
251
515
  totals: UsageTotals;
252
516
  costUsd: number;
@@ -257,6 +521,7 @@ declare module "@danxbot/card-kit@1" {
257
521
  operatorAttributionSince: number | null;
258
522
  timing: UsageTiming;
259
523
  timingMeasuredSince: number | null;
524
+ activity: UsageActivity | null;
260
525
  }
261
526
  type UsageErrorCode = "unattributable_dispatch" | "usage_inconsistent";
262
527
  interface UsageError {
@@ -339,7 +604,7 @@ declare module "@danxbot/card-kit@1" {
339
604
  detail: string;
340
605
  }
341
606
 
342
- type PickerRouting = "gate" | "work" | "orchestrated" | "skip" | "terminal_or_container";
607
+ type PickerRouting = "gate" | "queued" | "not_queued" | "skip" | "terminal_or_container";
343
608
  interface DispatchableExplainView {
344
609
  id: string;
345
610
  dispatchable: boolean;
@@ -359,148 +624,6 @@ declare module "@danxbot/card-kit@1" {
359
624
  agent_wait: StatusReason | null;
360
625
  }
361
626
 
362
- interface SolutionContent {
363
- title: string;
364
- body: string;
365
- pro: string;
366
- con: string;
367
- recommended: boolean;
368
- }
369
-
370
- interface V2CopyComment {
371
- author: string;
372
- text: string;
373
- }
374
- interface V2CopyAgentNote {
375
- author: string;
376
- text: string;
377
- metadata: Record<string, unknown> | null;
378
- ordinal: number;
379
- created_at: string;
380
- updated_at: string;
381
- }
382
- interface V2CopyAc {
383
- title: string;
384
- checked: boolean;
385
- }
386
- interface V2CopyChecklist {
387
- name: string;
388
- items: V2CopyChecklistItem[];
389
- }
390
- interface V2CopyChecklistItem {
391
- label: string;
392
- detail: string;
393
- status: ChecklistItemStatus$1;
394
- }
395
- interface V2CopyDependency {
396
- kind: IssueDependencyKind;
397
- target_id: string;
398
- reason: string;
399
- }
400
- interface V2CopyRetro {
401
- good: string;
402
- bad: string;
403
- correctable_danxbot_problem: boolean;
404
- correctable_danxbot_problem_description: string;
405
- action_item_ids: string[];
406
- commits: {
407
- sha: string;
408
- subject: string;
409
- }[];
410
- tests: V2CopyRetroTest[];
411
- }
412
- interface V2CopyRetroTest {
413
- name: string;
414
- kind: "group" | "e2e";
415
- num_tests: number;
416
- num_assertions: number | null;
417
- num_passing_tests: number;
418
- num_passing_assertions: number | null;
419
- duration_ms: number;
420
- }
421
- interface V2CopyMirror {
422
- target_type: MirrorProviderId;
423
- target_ref: string;
424
- target_url: string;
425
- source_ref: string;
426
- }
427
- type SourceMirrorLocation = Record<MirrorProviderId, string | null>;
428
- interface V2CopyQualityGate {
429
- gate: string;
430
- decision_note: string;
431
- effort_level: EffortLevelName | null;
432
- status: QualityGateStatus;
433
- message: string;
434
- completed_at: string | null;
435
- attempts: number;
436
- reviewed_ref: string | null;
437
- decided_by: string | null;
438
- }
439
- interface V2CopySolution extends SolutionContent {
440
- removed: boolean;
441
- steps: V2CopyStep[];
442
- }
443
- interface V2CopyStep {
444
- title: string;
445
- description: string | null;
446
- steps: V2CopyStep[];
447
- }
448
- interface V2CopyDecision {
449
- solution_index: number | null;
450
- outcome: DecisionOutcome;
451
- freeform: string | null;
452
- note: string | null;
453
- decided_by: string;
454
- decided_at: string;
455
- retracted_at: string | null;
456
- }
457
- interface V2CopyProblem {
458
- statement: string;
459
- context: string | null;
460
- type: IssueAuthoredProblemType;
461
- summary: string | null;
462
- removed: boolean;
463
- solutions: V2CopySolution[];
464
- decisions: V2CopyDecision[];
465
- }
466
- interface V2CopyIssue {
467
- id: string;
468
- parent_id: string | null;
469
- type: CardTypeKey;
470
- title: string;
471
- description: string;
472
- summary: string | null;
473
- priority: number;
474
- effort_level: EffortLevelName | null;
475
- assigned_agent: string | null;
476
- ready_at: string | null;
477
- completed_at: string | null;
478
- cancelled_at: string | null;
479
- archived_at: string | null;
480
- blocked_at: string | null;
481
- blocked_reason: string | null;
482
- ac: V2CopyAc[];
483
- checklists: V2CopyChecklist[];
484
- comments: V2CopyComment[];
485
- agent_notes: V2CopyAgentNote[];
486
- dependencies: V2CopyDependency[];
487
- retro: V2CopyRetro | null;
488
- mirrors: V2CopyMirror[];
489
- quality_gates: V2CopyQualityGate[];
490
- problems: V2CopyProblem[];
491
- triage_enabled: boolean;
492
- unknown_fields: V2CopyUnknownField[];
493
- }
494
- interface V2CopyUnknownField {
495
- path: string;
496
- value: unknown;
497
- }
498
- interface V2CopyPayload {
499
- schema_version: number;
500
- issues: V2CopyIssue[];
501
- source_mirror_location: SourceMirrorLocation;
502
- }
503
-
504
627
  type IssueStatus = "Review" | "ToDo" | "In Progress" | "Backlog" | "Done" | "Cancelled";
505
628
  interface InheritedBlockedViewV2 {
506
629
  id: string;
@@ -590,6 +713,7 @@ declare module "@danxbot/card-kit@1" {
590
713
  name: string;
591
714
  items: ChecklistItemView[];
592
715
  }
716
+ type DesignDecisionOutcome = "rejected" | "changes_requested" | "approved";
593
717
  interface ChecklistHistoryViewV2 {
594
718
  action: "create" | "rename" | "remove" | "add_item" | "update_item" | "remove_item";
595
719
  checklist: string;
@@ -720,6 +844,7 @@ declare module "@danxbot/card-kit@1" {
720
844
  ac_items?: undefined | (Array<{ title: string; status: "incomplete" | "failing" | "passing" | "cancelled" | "deferred"; }>);
721
845
  comments_count?: undefined | number;
722
846
  agent_notes_count?: undefined | number;
847
+ comment_recipient?: undefined | { kind: "agent"; by: AuthorV2; reachability: CommentReachabilityV2; } | { kind: "none"; waiting_on: { kind: "plan"; id: number; name: string; } | { kind: "card"; id: string; }; };
723
848
  has_retro?: undefined | false | true;
724
849
  primary_attachment?: undefined | null | AttachmentPreviewV2;
725
850
  in_progress_derived?: undefined | false | true;
@@ -758,6 +883,7 @@ declare module "@danxbot/card-kit@1" {
758
883
  review_state: "rejected" | "awaiting_review" | "changes_requested" | "approved";
759
884
  revision_count: number;
760
885
  latest_revision_no: number;
886
+ chosen_options: null | OptionSelection;
761
887
  revisions?: undefined | (Array<{
762
888
  revision_no: number;
763
889
  target: string;
@@ -770,6 +896,7 @@ declare module "@danxbot/card-kit@1" {
770
896
  bundle_bytes: null | number;
771
897
  bundle_available: boolean;
772
898
  screenshot_available: boolean;
899
+ option_groups: Array<DesignOptionGroup>;
773
900
  source_files?: undefined | Array<DesignSourceFile>;
774
901
  }>);
775
902
  decisions?: undefined | (Array<{
@@ -780,6 +907,7 @@ declare module "@danxbot/card-kit@1" {
780
907
  decided_by: string;
781
908
  decided_by_ref: ActorRef;
782
909
  created_at: string;
910
+ options: null | OptionSelection;
783
911
  }>);
784
912
  }>);
785
913
  pull_request_reviews?: undefined | (Array<{
@@ -952,6 +1080,7 @@ declare module "@danxbot/card-kit@1" {
952
1080
  review_state: "rejected" | "awaiting_review" | "changes_requested" | "approved";
953
1081
  revision_count: number;
954
1082
  latest_revision_no: number;
1083
+ chosen_options: null | OptionSelection;
955
1084
  revisions?: undefined | (Array<{
956
1085
  revision_no: number;
957
1086
  target: string;
@@ -964,6 +1093,7 @@ declare module "@danxbot/card-kit@1" {
964
1093
  bundle_bytes: null | number;
965
1094
  bundle_available: boolean;
966
1095
  screenshot_available: boolean;
1096
+ option_groups: Array<DesignOptionGroup>;
967
1097
  source_files?: undefined | Array<DesignSourceFile>;
968
1098
  }>);
969
1099
  decisions?: undefined | (Array<{
@@ -974,6 +1104,7 @@ declare module "@danxbot/card-kit@1" {
974
1104
  decided_by: string;
975
1105
  decided_by_ref: ActorRef;
976
1106
  created_at: string;
1107
+ options: null | OptionSelection;
977
1108
  }>);
978
1109
  }>);
979
1110
  };
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: "@danxbot/ui", major: 27 },
5894
+ { name: "@danxbot/ui", major: 28 },
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: "@danxbot/ui", major: 27 },
5889
+ { name: "@danxbot/ui", major: 28 },
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: "@danxbot/ui", major: 27 },
7
+ { name: "@danxbot/ui", major: 28 },
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": "@danxbot/plugin-sdk",
3
- "version": "0.2.28",
3
+ "version": "0.2.30",
4
4
  "description": "SDK for building 50 Arms card-type plugins (DX-5170): the card kit's type declarations, 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",
@@ -33,7 +33,7 @@
33
33
  "node": ">=20"
34
34
  },
35
35
  "peerDependencies": {
36
- "@danxbot/ui": "^27.0.0",
36
+ "@danxbot/ui": "^28.0.0",
37
37
  "@types/react": "^19.0.0",
38
38
  "react": "^19.0.0",
39
39
  "react-router": "^7.0.0",
@@ -46,7 +46,7 @@
46
46
  "test": "vitest run"
47
47
  },
48
48
  "devDependencies": {
49
- "@danxbot/ui": "27.46.0",
49
+ "@danxbot/ui": "28.0.0",
50
50
  "@types/node": "^22.0.0",
51
51
  "@types/react": "^19.2.2",
52
52
  "esbuild": "^0.25.0",