@deepseek-ai/dsh-experimental-client-ui-forge 0.2.2-alpha.2 → 0.2.2-alpha.3

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.
@@ -14,6 +14,51 @@ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_para
14
14
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_parameter_0$schema$value ??= z.string())
15
15
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_result$schema$value
16
16
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_result$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_result$schema$value ??= z.void())
17
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_0$schema$value
18
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_0$schema$value ??= z.string())
19
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_1$schema$value
20
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_1$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_1$schema$value ??= z.string())
21
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_2$schema$value
22
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_2$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_2$schema$value ??= z.string())
23
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_result$schema$value
24
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_result$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_result$schema$value ??= z.object({
25
+ 'ref': z.object({
26
+ 'repository': z.object({
27
+ 'forge': z.string().readonly().describe('Provider family that serves the repository, such as `github`.'),
28
+ 'host': z.string().readonly().describe('Lowercase host name, such as `github.com`.'),
29
+ 'owner': z.string().readonly().describe('Owner or namespace path as the host spells it.'),
30
+ 'name': z.string().readonly().describe('Repository name as the host spells it.'),
31
+ }).readonly().describe('Repository that holds the change request.'),
32
+ 'number': z.number().readonly().describe('Host-assigned change request number.'),
33
+ }).readonly().describe('Change request the snapshot describes.'),
34
+ 'url': z.string().readonly().describe('Web page of the change request.'),
35
+ 'title': z.string().readonly().describe('Title as the author wrote it.'),
36
+ 'state': z.union([z.literal("open"), z.literal("closed"), z.literal("merged")]).readonly().describe('Lifecycle state.'),
37
+ 'draft': z.boolean().readonly().describe('Whether the author marked the change request as a draft.'),
38
+ 'author': z.union([z.literal(null), z.string()]).readonly().describe('Author login, or null when the host hides it.'),
39
+ 'headBranch': z.string().readonly().describe('Branch that carries the proposed commits.'),
40
+ 'headSha': z.string().readonly().describe('Commit object name at the head of the change request.'),
41
+ 'baseBranch': z.string().readonly().describe('Branch the change request merges into.'),
42
+ 'additions': z.number().readonly().describe('Lines the change request adds.'),
43
+ 'deletions': z.number().readonly().describe('Lines the change request deletes.'),
44
+ 'mergeability': z.union([z.literal("unknown"), z.literal("mergeable"), z.literal("conflicting")]).readonly().describe('Merge conflict status; `unknown` while the host computes it.'),
45
+ 'mergeReady': z.boolean().readonly().describe('Whether the host would merge the change request now for the signed-in user: open, not a draft, and meeting the base branch\'s merge rules.'),
46
+ 'mergeMethods': z.array(z.union([z.literal("merge"), z.literal("squash"), z.literal("rebase")])).readonly().describe('Merge methods the repository accepts, the signed-in user\'s usual one first.'),
47
+ 'reviewDecision': z.union([z.literal("none"), z.literal("approved"), z.literal("changes-requested"), z.literal("review-required")]).readonly().describe('Aggregate review outcome.'),
48
+ 'checks': z.array(z.object({
49
+ 'name': z.string().readonly().describe('Check name as the host displays it.'),
50
+ 'state': z.union([z.literal("cancelled"), z.literal("pending"), z.literal("neutral"), z.literal("success"), z.literal("failure"), z.literal("skipped")]).readonly().describe('Normalized check outcome.'),
51
+ 'url': z.union([z.literal(null), z.string()]).readonly().describe('Web page for the check, or null when the host reports none.'),
52
+ 'workflow': z.union([z.literal(null), z.string()]).readonly().describe('Workflow that produced the check, or null when the host reports none.'),
53
+ 'startedAt': z.union([z.literal(null), z.string()]).readonly().describe('ISO 8601 time the check started, or null before it starts and when the host reports none.'),
54
+ 'completedAt': z.union([z.literal(null), z.string()]).readonly().describe('ISO 8601 time the check completed, or null while it runs and when the host reports none.'),
55
+ })).readonly().describe('Checks on the head commit in host order.'),
56
+ 'checksRollup': z.union([z.literal("pending"), z.literal("success"), z.literal("none"), z.literal("failure")]).readonly().describe('Combined check outcome.'),
57
+ 'checksTruncated': z.boolean().readonly().describe('Whether the host reported more checks than `checks` contains.'),
58
+ 'unresolvedThreads': z.number().readonly().describe('Number of review threads that are not resolved.'),
59
+ 'updatedAt': z.string().readonly().describe('ISO 8601 time of the host\'s last update to the change request.'),
60
+ 'closedAt': z.union([z.literal(null), z.string()]).readonly().describe('ISO 8601 time the change request was merged or closed, or null while it is open.'),
61
+ }))
17
62
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestDiff_parameter_0$schema$value
18
63
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestDiff_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestDiff_parameter_0$schema$value ??= z.string())
19
64
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestDiff_parameter_1$schema$value
@@ -349,6 +394,43 @@ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_parame
349
394
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_parameter_0$schema$value ??= z.string())
350
395
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_result$schema$value
351
396
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_result$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_result$schema$value ??= z.void())
397
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_0$schema$value
398
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_0$schema$value ??= z.string())
399
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_1$schema$value
400
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_1$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_1$schema$value ??= z.string())
401
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_2$schema$value
402
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_2$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_2$schema$value ??= z.union([z.object({
403
+ 'headSha': z.string().readonly().describe('Commit the user reviewed; providers must check it before writing and address that commit explicitly.'),
404
+ 'kind': z.literal("comment").readonly(),
405
+ 'comment': z.object({
406
+ 'path': z.string().readonly(),
407
+ 'side': z.union([z.literal("L"), z.literal("R")]).readonly(),
408
+ 'startLine': z.number().readonly(),
409
+ 'endLine': z.number().readonly(),
410
+ 'body': z.string().readonly(),
411
+ }).readonly(),
412
+ }), z.object({
413
+ 'headSha': z.string().readonly().describe('Commit the user reviewed; providers must check it before writing and address that commit explicitly.'),
414
+ 'kind': z.literal("review").readonly(),
415
+ 'event': z.union([z.literal("comment"), z.literal("approve"), z.literal("request-changes")]).readonly(),
416
+ 'body': z.string().readonly(),
417
+ 'comments': z.array(z.object({
418
+ 'path': z.string().readonly(),
419
+ 'side': z.union([z.literal("L"), z.literal("R")]).readonly(),
420
+ 'startLine': z.number().readonly(),
421
+ 'endLine': z.number().readonly(),
422
+ 'body': z.string().readonly(),
423
+ })).readonly(),
424
+ })]))
425
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_result$schema$value
426
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_result$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_result$schema$value ??= z.union([z.object({
427
+ 'ok': z.literal(true).readonly(),
428
+ 'url': z.string().readonly(),
429
+ }), z.object({
430
+ 'ok': z.literal(false).readonly(),
431
+ 'code': z.union([z.literal("failed"), z.literal("unknown"), z.literal("unsupported"), z.literal("stale")]).readonly(),
432
+ 'message': z.string().readonly(),
433
+ })]))
352
434
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_track_parameter_0$schema$value
353
435
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_track_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_track_parameter_0$schema$value ??= z.string())
354
436
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_track_parameter_1$schema$value
@@ -359,6 +441,12 @@ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_branches_parameter_
359
441
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_branches_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_branches_parameter_0_strict$schema$value ??= z.string())
360
442
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_parameter_0_strict$schema$value
361
443
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_parameter_0_strict$schema$value ??= z.string())
444
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_0_strict$schema$value
445
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_0_strict$schema$value ??= z.string())
446
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_1_strict$schema$value
447
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_1_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_1_strict$schema$value ??= z.string())
448
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_2_strict$schema$value
449
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_2_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_2_strict$schema$value ??= z.string())
362
450
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestDiff_parameter_0_strict$schema$value
363
451
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestDiff_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestDiff_parameter_0_strict$schema$value ??= z.string())
364
452
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestDiff_parameter_1_strict$schema$value
@@ -429,6 +517,34 @@ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_retryWorktree_param
429
517
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_retryWorktree_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_retryWorktree_parameter_0_strict$schema$value ??= z.string())
430
518
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_parameter_0_strict$schema$value
431
519
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_parameter_0_strict$schema$value ??= z.string())
520
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_0_strict$schema$value
521
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_0_strict$schema$value ??= z.string())
522
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_1_strict$schema$value
523
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_1_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_1_strict$schema$value ??= z.string())
524
+ let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_2_strict$schema$value
525
+ const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_2_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_2_strict$schema$value ??= z.union([z.strictObject({
526
+ 'headSha': z.string().readonly().describe('Commit the user reviewed; providers must check it before writing and address that commit explicitly.'),
527
+ 'kind': z.literal("comment").readonly(),
528
+ 'comment': z.strictObject({
529
+ 'path': z.string().readonly(),
530
+ 'side': z.union([z.literal("L"), z.literal("R")]).readonly(),
531
+ 'startLine': z.number().readonly(),
532
+ 'endLine': z.number().readonly(),
533
+ 'body': z.string().readonly(),
534
+ }).readonly(),
535
+ }), z.strictObject({
536
+ 'headSha': z.string().readonly().describe('Commit the user reviewed; providers must check it before writing and address that commit explicitly.'),
537
+ 'kind': z.literal("review").readonly(),
538
+ 'event': z.union([z.literal("comment"), z.literal("approve"), z.literal("request-changes")]).readonly(),
539
+ 'body': z.string().readonly(),
540
+ 'comments': z.array(z.strictObject({
541
+ 'path': z.string().readonly(),
542
+ 'side': z.union([z.literal("L"), z.literal("R")]).readonly(),
543
+ 'startLine': z.number().readonly(),
544
+ 'endLine': z.number().readonly(),
545
+ 'body': z.string().readonly(),
546
+ })).readonly(),
547
+ })]))
432
548
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_track_parameter_0_strict$schema$value
433
549
  const _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_track_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_track_parameter_0_strict$schema$value ??= z.string())
434
550
  let _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_track_parameter_1_strict$schema$value
@@ -504,7 +620,76 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
504
620
  create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_cancelWorktree_result$schema,
505
621
  jsonSchemaError: 'typert tool schema: unsupported void value',
506
622
  },
507
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":407,"column":9},
623
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":449,"column":9},
624
+ },
625
+ 'forgePanel/changeRequestChecks': {
626
+ service: 'forgePanel',
627
+ description: 'Load complete checks for the change request whose list the user opened.',
628
+ invocation: { kind: 'direct' },
629
+ parameters: [
630
+ {
631
+ name: 'session',
632
+ wire: 'sessionId',
633
+ description: 'Session retaining the visible binding.',
634
+ source: 'lookup',
635
+ lookup: 'session',
636
+ codec: {
637
+ mode: 'strict',
638
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
639
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_0$schema,
640
+ jsonSchema: {"type":"string"},
641
+ },
642
+ strictCodec: {
643
+ mode: 'strict',
644
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
645
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_0_strict$schema,
646
+ jsonSchema: {"type":"string"},
647
+ },
648
+ },
649
+ {
650
+ name: 'url',
651
+ description: 'binding URL.',
652
+ source: 'json',
653
+ codec: {
654
+ mode: 'strict',
655
+ typeSymbol: '@deepseek-ai/dsh-experimental-client-ui-forge#forgePanel/changeRequestChecks:url',
656
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_1$schema,
657
+ jsonSchema: {"type":"string"},
658
+ },
659
+ strictCodec: {
660
+ mode: 'strict',
661
+ typeSymbol: '@deepseek-ai/dsh-experimental-client-ui-forge#forgePanel/changeRequestChecks:url',
662
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_1_strict$schema,
663
+ jsonSchema: {"type":"string"},
664
+ },
665
+ },
666
+ {
667
+ name: 'headSha',
668
+ description: 'commit displayed by the card; a different head rejects the result.',
669
+ source: 'json',
670
+ codec: {
671
+ mode: 'strict',
672
+ typeSymbol: '@deepseek-ai/dsh-experimental-client-ui-forge#forgePanel/changeRequestChecks:headSha',
673
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_2$schema,
674
+ jsonSchema: {"type":"string"},
675
+ },
676
+ strictCodec: {
677
+ mode: 'strict',
678
+ typeSymbol: '@deepseek-ai/dsh-experimental-client-ui-forge#forgePanel/changeRequestChecks:headSha',
679
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_parameter_2_strict$schema,
680
+ jsonSchema: {"type":"string"},
681
+ },
682
+ },
683
+ ],
684
+ cancellation: { parameter: 'signal' },
685
+ result: {
686
+ mode: 'strict',
687
+ typeSymbol: '@deepseek-ai/dsh-experimental-forge/types#ChangeRequestSnapshot',
688
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_changeRequestChecks_result$schema,
689
+ description: 'the complete snapshot at the displayed head.',
690
+ jsonSchema: {"type":"object","properties":{"ref":{"type":"object","properties":{"repository":{"type":"object","properties":{"forge":{"type":"string","description":"Provider family that serves the repository, such as `github`."},"host":{"type":"string","description":"Lowercase host name, such as `github.com`."},"owner":{"type":"string","description":"Owner or namespace path as the host spells it."},"name":{"type":"string","description":"Repository name as the host spells it."}},"required":["forge","host","owner","name"],"additionalProperties":true,"description":"Repository that holds the change request."},"number":{"type":"number","description":"Host-assigned change request number."}},"required":["repository","number"],"additionalProperties":true,"description":"Change request the snapshot describes."},"url":{"type":"string","description":"Web page of the change request."},"title":{"type":"string","description":"Title as the author wrote it."},"state":{"type":"string","enum":["open","closed","merged"],"description":"Lifecycle state."},"draft":{"type":"boolean","description":"Whether the author marked the change request as a draft."},"author":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Author login, or null when the host hides it."},"headBranch":{"type":"string","description":"Branch that carries the proposed commits."},"headSha":{"type":"string","description":"Commit object name at the head of the change request."},"baseBranch":{"type":"string","description":"Branch the change request merges into."},"additions":{"type":"number","description":"Lines the change request adds."},"deletions":{"type":"number","description":"Lines the change request deletes."},"mergeability":{"type":"string","enum":["unknown","mergeable","conflicting"],"description":"Merge conflict status; `unknown` while the host computes it."},"mergeReady":{"type":"boolean","description":"Whether the host would merge the change request now for the signed-in user: open, not a draft, and meeting the base branch's merge rules."},"mergeMethods":{"type":"array","items":{"type":"string","enum":["merge","squash","rebase"]},"description":"Merge methods the repository accepts, the signed-in user's usual one first."},"reviewDecision":{"type":"string","enum":["none","approved","changes-requested","review-required"],"description":"Aggregate review outcome."},"checks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Check name as the host displays it."},"state":{"type":"string","enum":["cancelled","pending","neutral","success","failure","skipped"],"description":"Normalized check outcome."},"url":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Web page for the check, or null when the host reports none."},"workflow":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Workflow that produced the check, or null when the host reports none."},"startedAt":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"ISO 8601 time the check started, or null before it starts and when the host reports none."},"completedAt":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"ISO 8601 time the check completed, or null while it runs and when the host reports none."}},"required":["name","state","url","workflow","startedAt","completedAt"],"additionalProperties":true},"description":"Checks on the head commit in host order."},"checksRollup":{"type":"string","enum":["pending","success","none","failure"],"description":"Combined check outcome."},"checksTruncated":{"type":"boolean","description":"Whether the host reported more checks than `checks` contains."},"unresolvedThreads":{"type":"number","description":"Number of review threads that are not resolved."},"updatedAt":{"type":"string","description":"ISO 8601 time of the host's last update to the change request."},"closedAt":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"ISO 8601 time the change request was merged or closed, or null while it is open."}},"required":["ref","url","title","state","draft","author","headBranch","headSha","baseBranch","additions","deletions","mergeability","mergeReady","mergeMethods","reviewDecision","checks","checksRollup","checksTruncated","unresolvedThreads","updatedAt","closedAt"],"additionalProperties":true},
691
+ },
692
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":285,"column":9},
508
693
  },
509
694
  'forgePanel/changeRequestDiff': {
510
695
  service: 'forgePanel',
@@ -556,7 +741,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
556
741
  description: 'the files, the head commit, each file\'s web page, and the commits the checkout has beyond the head.',
557
742
  jsonSchemaError: 'typert tool schema: selected dictionaries require string keys and unconstrained JSON values',
558
743
  },
559
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":287,"column":9},
744
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":308,"column":9},
560
745
  },
561
746
  'forgePanel/changeRequestStates': {
562
747
  service: 'forgePanel',
@@ -659,7 +844,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
659
844
  description: 'the text.',
660
845
  jsonSchema: {"type":"string"},
661
846
  },
662
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":331,"column":9},
847
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":352,"column":9},
663
848
  },
664
849
  'forgePanel/continueInProject': {
665
850
  service: 'forgePanel',
@@ -693,7 +878,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
693
878
  create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_continueInProject_result$schema,
694
879
  jsonSchemaError: 'typert tool schema: unsupported void value',
695
880
  },
696
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":488,"column":9},
881
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":530,"column":9},
697
882
  },
698
883
  'forgePanel/dismiss': {
699
884
  service: 'forgePanel',
@@ -784,7 +969,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
784
969
  },
785
970
  'forgePanel/localDiff': {
786
971
  service: 'forgePanel',
787
- description: 'Read the changes one scope covers in the checkout of the Session\'s current directory, with Git confined to the Session\'s read-only sandbox.',
972
+ description: 'Read the changes one scope covers in the checkout of the Session\'s current directory, with Git using the Session\'s sandbox policy.',
788
973
  invocation: { kind: 'direct' },
789
974
  parameters: [
790
975
  {
@@ -832,7 +1017,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
832
1017
  description: 'the files, the base of the `branch` scope, and the untracked files left out.',
833
1018
  jsonSchema: {"type":"object","properties":{"base":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Ref or abbreviated commit the `branch` scope compares with, such as `origin/master`; null for other scopes."},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the repository root after the change, or before it for a deleted file."},"previousPath":{"oneOf":[{"type":"null","const":null},{"type":"string"}],"description":"Path before a rename, else null."},"status":{"type":"string","enum":["deleted","added","modified","renamed"],"description":"How the file changed."},"binary":{"type":"boolean","description":"Whether the content is binary, which carries no hunks."},"oversized":{"type":"boolean","description":"Whether an untracked file exceeds `maxDiffBytes`, so it carries no hunks."},"untracked":{"type":"boolean","description":"Whether Git does not track the file yet; only local diffs list such files."},"additions":{"type":"number","description":"Lines added."},"deletions":{"type":"number","description":"Lines deleted."},"hunks":{"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"number","description":"First old line the hunk covers, or the old line it comes before when it covers none."},"oldLines":{"type":"number","description":"Old lines the hunk covers."},"newStart":{"type":"number","description":"First new line the hunk covers, or the new line it comes before when it covers none."},"newLines":{"type":"number","description":"New lines the hunk covers."},"lines":{"type":"array","items":{"type":"string"},"description":"Lines in patch form: a leading space for context, `+` for added, `-` for deleted, and `\\` for a missing final newline."}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":true},"description":"Hunks in file order; none for a binary file or a change of mode or name only."}},"required":["path","previousPath","status","binary","oversized","untracked","additions","deletions","hunks"],"additionalProperties":true},"description":"Changed files in Git's path order, untracked files last."},"omitted":{"type":"number","description":"Untracked files left out beyond `maxUntrackedFiles`."}},"required":["base","files","omitted"],"additionalProperties":true},
834
1019
  },
835
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":245,"column":9},
1020
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":246,"column":9},
836
1021
  },
837
1022
  'forgePanel/localText': {
838
1023
  service: 'forgePanel',
@@ -901,7 +1086,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
901
1086
  description: 'the text.',
902
1087
  jsonSchema: {"type":"string"},
903
1088
  },
904
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":267,"column":9},
1089
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":268,"column":9},
905
1090
  },
906
1091
  'forgePanel/markReady': {
907
1092
  service: 'forgePanel',
@@ -952,7 +1137,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
952
1137
  create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_markReady_result$schema,
953
1138
  jsonSchemaError: 'typert tool schema: unsupported void value',
954
1139
  },
955
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":348,"column":9},
1140
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":390,"column":9},
956
1141
  },
957
1142
  'forgePanel/merge': {
958
1143
  service: 'forgePanel',
@@ -1037,7 +1222,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
1037
1222
  create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_merge_result$schema,
1038
1223
  jsonSchemaError: 'typert tool schema: unsupported void value',
1039
1224
  },
1040
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":367,"column":9},
1225
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":409,"column":9},
1041
1226
  },
1042
1227
  'forgePanel/refresh': {
1043
1228
  service: 'forgePanel',
@@ -1123,7 +1308,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
1123
1308
  create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_requestWorktree_result$schema,
1124
1309
  jsonSchemaError: 'typert tool schema: unsupported void value',
1125
1310
  },
1126
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":388,"column":9},
1311
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":430,"column":9},
1127
1312
  },
1128
1313
  'forgePanel/restoreWorktree': {
1129
1314
  service: 'forgePanel',
@@ -1157,7 +1342,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
1157
1342
  create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_restoreWorktree_result$schema,
1158
1343
  jsonSchemaError: 'typert tool schema: unsupported void value',
1159
1344
  },
1160
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":457,"column":9},
1345
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":499,"column":9},
1161
1346
  },
1162
1347
  'forgePanel/retryWorktree': {
1163
1348
  service: 'forgePanel',
@@ -1191,7 +1376,7 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
1191
1376
  create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_retryWorktree_result$schema,
1192
1377
  jsonSchemaError: 'typert tool schema: unsupported void value',
1193
1378
  },
1194
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":436,"column":9},
1379
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":478,"column":9},
1195
1380
  },
1196
1381
  'forgePanel/stopCreation': {
1197
1382
  service: 'forgePanel',
@@ -1225,7 +1410,76 @@ export const TYPERT_REMOTE = createTypertRemoteInfo({
1225
1410
  create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_stopCreation_result$schema,
1226
1411
  jsonSchemaError: 'typert tool schema: unsupported void value',
1227
1412
  },
1228
- sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":423,"column":9},
1413
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":465,"column":9},
1414
+ },
1415
+ 'forgePanel/submitReview': {
1416
+ service: 'forgePanel',
1417
+ description: 'Publish a line comment or completed review for a visible Session binding.',
1418
+ invocation: { kind: 'direct' },
1419
+ parameters: [
1420
+ {
1421
+ name: 'session',
1422
+ wire: 'sessionId',
1423
+ description: 'Session retaining the change request.',
1424
+ source: 'lookup',
1425
+ lookup: 'session',
1426
+ codec: {
1427
+ mode: 'strict',
1428
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
1429
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_0$schema,
1430
+ jsonSchema: {"type":"string"},
1431
+ },
1432
+ strictCodec: {
1433
+ mode: 'strict',
1434
+ typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
1435
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_0_strict$schema,
1436
+ jsonSchema: {"type":"string"},
1437
+ },
1438
+ },
1439
+ {
1440
+ name: 'url',
1441
+ description: 'visible binding URL.',
1442
+ source: 'json',
1443
+ codec: {
1444
+ mode: 'strict',
1445
+ typeSymbol: '@deepseek-ai/dsh-experimental-client-ui-forge#forgePanel/submitReview:url',
1446
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_1$schema,
1447
+ jsonSchema: {"type":"string"},
1448
+ },
1449
+ strictCodec: {
1450
+ mode: 'strict',
1451
+ typeSymbol: '@deepseek-ai/dsh-experimental-client-ui-forge#forgePanel/submitReview:url',
1452
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_1_strict$schema,
1453
+ jsonSchema: {"type":"string"},
1454
+ },
1455
+ },
1456
+ {
1457
+ name: 'request',
1458
+ description: 'reviewed head, ranges, plain text, and explicit review decision.',
1459
+ source: 'json',
1460
+ codec: {
1461
+ mode: 'strict',
1462
+ typeSymbol: '@deepseek-ai/dsh-experimental-forge/types#ForgeReviewRequest',
1463
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_2$schema,
1464
+ jsonSchema: {"oneOf":[{"type":"object","properties":{"headSha":{"type":"string","description":"Commit the user reviewed; providers must check it before writing and address that commit explicitly."},"kind":{"type":"string","const":"comment"},"comment":{"type":"object","properties":{"path":{"type":"string"},"side":{"type":"string","enum":["L","R"]},"startLine":{"type":"number"},"endLine":{"type":"number"},"body":{"type":"string"}},"required":["path","side","startLine","endLine","body"],"additionalProperties":true}},"required":["headSha","kind","comment"],"additionalProperties":true},{"type":"object","properties":{"headSha":{"type":"string","description":"Commit the user reviewed; providers must check it before writing and address that commit explicitly."},"kind":{"type":"string","const":"review"},"event":{"type":"string","enum":["comment","approve","request-changes"]},"body":{"type":"string"},"comments":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"side":{"type":"string","enum":["L","R"]},"startLine":{"type":"number"},"endLine":{"type":"number"},"body":{"type":"string"}},"required":["path","side","startLine","endLine","body"],"additionalProperties":true}}},"required":["headSha","kind","event","body","comments"],"additionalProperties":true}]},
1465
+ },
1466
+ strictCodec: {
1467
+ mode: 'strict',
1468
+ typeSymbol: '@deepseek-ai/dsh-experimental-forge/types#ForgeReviewRequest',
1469
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_parameter_2_strict$schema,
1470
+ jsonSchema: {"oneOf":[{"type":"object","properties":{"headSha":{"type":"string","description":"Commit the user reviewed; providers must check it before writing and address that commit explicitly."},"kind":{"type":"string","const":"comment"},"comment":{"type":"object","properties":{"path":{"type":"string"},"side":{"type":"string","enum":["L","R"]},"startLine":{"type":"number"},"endLine":{"type":"number"},"body":{"type":"string"}},"required":["path","side","startLine","endLine","body"],"additionalProperties":false}},"required":["headSha","kind","comment"],"additionalProperties":false},{"type":"object","properties":{"headSha":{"type":"string","description":"Commit the user reviewed; providers must check it before writing and address that commit explicitly."},"kind":{"type":"string","const":"review"},"event":{"type":"string","enum":["comment","approve","request-changes"]},"body":{"type":"string"},"comments":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"side":{"type":"string","enum":["L","R"]},"startLine":{"type":"number"},"endLine":{"type":"number"},"body":{"type":"string"}},"required":["path","side","startLine","endLine","body"],"additionalProperties":false}}},"required":["headSha","kind","event","body","comments"],"additionalProperties":false}]},
1471
+ },
1472
+ },
1473
+ ],
1474
+ cancellation: { parameter: 'signal' },
1475
+ result: {
1476
+ mode: 'strict',
1477
+ typeSymbol: '@deepseek-ai/dsh-experimental-forge/types#ForgeReviewResult',
1478
+ create: _deepseek_ai_dsh_experimental_client_ui_forge_forgePanel_submitReview_result$schema,
1479
+ description: 'confirmed publication or a typed failure; unknown outcomes require reconciliation on the host.',
1480
+ jsonSchema: {"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":true},"url":{"type":"string"}},"required":["ok","url"],"additionalProperties":true},{"type":"object","properties":{"ok":{"type":"boolean","const":false},"code":{"type":"string","enum":["failed","unknown","unsupported","stale"]},"message":{"type":"string"}},"required":["ok","code","message"],"additionalProperties":true}]},
1481
+ },
1482
+ sourceLocation: {"file":"packages/experimental/client-ui-forge/src/index.ts","line":368,"column":9},
1229
1483
  },
1230
1484
  'forgePanel/track': {
1231
1485
  service: 'forgePanel',
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { type ReactNode } from 'react';
8
8
  import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
9
- import type { MergeRequest } from '@deepseek-ai/dsh-experimental-forge/types';
9
+ import type { ChangeRequestSnapshot, MergeRequest } from '@deepseek-ai/dsh-experimental-forge/types';
10
10
  import type { ForgePanelChangeRequest } from '../types.ts';
11
11
  import type { NS } from './locales.ts';
12
12
  type Translate = PropsLocale<typeof NS>['t'];
@@ -24,6 +24,8 @@ export interface ChangeRequestActions {
24
24
  readonly markReady?: ((entry: ForgePanelChangeRequest) => Promise<void>) | undefined;
25
25
  /** Merge the change request as `request` describes; settles once the outcome is reported. */
26
26
  readonly merge?: ((entry: ForgePanelChangeRequest, request: MergeRequest) => Promise<void>) | undefined;
27
+ /** Load complete check details independently of polling; cancellation follows the open list. */
28
+ readonly readChecks?: ((url: string, headSha: string, signal: AbortSignal) => Promise<ChangeRequestSnapshot>) | undefined;
27
29
  /** Open the changes view of the change request. */
28
30
  readonly viewChanges?: ((entry: ForgePanelChangeRequest) => void) | undefined;
29
31
  }
@@ -0,0 +1,36 @@
1
+ /** Changed-file navigation shared by the toolbar menu and wide diff pane, with a disclosure column on every row. */
2
+ import { type ReactNode } from 'react';
3
+ import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
4
+ import type { ForgeDiffFile } from '../types.ts';
5
+ import type { NS } from './locales.ts';
6
+ /** Viewing choices remain owned by the changes tab while either navigation surface is hidden. */
7
+ export interface ChangedFilesState {
8
+ readonly query: string;
9
+ readonly collapsed: Readonly<Record<string, boolean>>;
10
+ readonly selected: string | null;
11
+ }
12
+ /** Data and actions of the changed-file navigator. */
13
+ export interface ChangedFilesProps extends PropsLocale<typeof NS> {
14
+ readonly files: readonly ForgeDiffFile[];
15
+ readonly state: ChangedFilesState;
16
+ readonly filter: (query: string) => void;
17
+ readonly toggle: (path: string) => void;
18
+ readonly jump: (path: string) => void;
19
+ /** A menu row participates in the shared menu's keyboard walk. */
20
+ readonly menu?: boolean;
21
+ }
22
+ /**
23
+ * Render searchable directory navigation without reading file contents.
24
+ * @param props - changed files, per-tab choices, navigation actions, and localized copy.
25
+ * @returns the search field and matching branches.
26
+ */
27
+ export declare function ChangedFiles(props: ChangedFilesProps): ReactNode;
28
+ /**
29
+ * Open directory navigation through the existing files toolbar entry.
30
+ * @param props - navigator data and whether its owning tab is visible.
31
+ * @returns the toolbar entry and its portalled menu.
32
+ */
33
+ export declare function ChangedFilesMenu({ visible, ...props }: ChangedFilesProps & {
34
+ readonly visible: boolean;
35
+ }): ReactNode;
36
+ //# sourceMappingURL=ChangedFiles.d.ts.map
@@ -8,13 +8,23 @@
8
8
  */
9
9
  import { type ReactNode } from 'react';
10
10
  import type { HostObservable, InjectFace, PropsLocale, PropsRuntime, PropsStore } from '@deepseek-ai/dsh-client-ui-slots';
11
+ import type { SidebarRightTabInfo } from '@deepseek-ai/dsh-client-ui-sidebar-right/client';
11
12
  import type { RemoteResult } from '@deepseek-ai/dsh-typert-protocol';
12
13
  import type { ForgeChangeRequestDiff, ForgeLocalDiff, ForgeLocalScope } from '../types.ts';
14
+ import type { ForgeReviewRequest, ForgeReviewResult } from '@deepseek-ai/dsh-experimental-forge/types';
15
+ import { type ReviewQueue } from './review-queue.ts';
16
+ import type { ReviewSelection } from './review.ts';
13
17
  import type { createChangesStore } from './changes-store.ts';
14
18
  import type { ForgePanelKey, NS } from './locales.ts';
15
19
  import type { PanelSnapshot } from './source.ts';
16
20
  /** Business face of the changes tab body. */
17
21
  export interface ChangesTabInjected {
22
+ /** Append a frozen comment to the main input without submitting it. */
23
+ readonly addReviewToInput: (selection: ReviewSelection) => boolean;
24
+ /** Records retained across Session switches and cleared when this tab occurrence closes. */
25
+ readonly reviewQueue: (tab: Pick<SidebarRightTabInfo['tab'], 'id' | 'signal'>) => ReviewQueue;
26
+ /** Publish one comment or a completed review; never retries mutations. */
27
+ readonly submitReview: (url: string, request: ForgeReviewRequest) => Promise<RemoteResult<ForgeReviewResult>>;
18
28
  /** Panel source while visible; the renderer releases the subscription for an inactive key. */
19
29
  readonly keyedHooks: {
20
30
  readonly panel: (visibility: string) => HostObservable<PanelSnapshot> | undefined;
@@ -45,5 +55,5 @@ export type ChangesTabProps = Pick<PropsRuntime<'sidebar.right.pane.tab'>, 'useT
45
55
  * @param props - tab information, the tab's choices, the panel snapshot hook, reads and actions, and copy.
46
56
  * @returns the view body.
47
57
  */
48
- export declare function ChangesTab({ useTabInfo, sessionId, useStore, actions, usePanel, reconnect, localDiff, localText, changeRequestDiff, changeRequestText, openLink, copyPath, createChangeRequest, report, t, }: ChangesTabProps): ReactNode;
58
+ export declare function ChangesTab({ useTabInfo, sessionId, useStore, actions, usePanel, reconnect, localDiff, localText, changeRequestDiff, changeRequestText, openLink, copyPath, createChangeRequest, addReviewToInput, reviewQueue, submitReview, report, t, }: ChangesTabProps): ReactNode;
49
59
  //# sourceMappingURL=ChangesTab.d.ts.map
@@ -6,6 +6,7 @@
6
6
  import { type ReactNode } from 'react';
7
7
  import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
8
8
  import type { ForgeDiffFile } from '../types.ts';
9
+ import { type ReviewActions } from './ReviewComposer.tsx';
9
10
  import type { ForgePanelKey, NS } from './locales.ts';
10
11
  type Translate = PropsLocale<typeof NS>['t'];
11
12
  /** One action of a file's menu. */
@@ -21,6 +22,8 @@ export type DiffFileText = readonly string[] | 'loading' | undefined;
21
22
  export interface DiffFileProps {
22
23
  /** Whether the owning tab is visible and may show temporary menus. */
23
24
  readonly visible: boolean;
25
+ /** Comment destinations and the source being reviewed. */
26
+ readonly review?: ReviewActions;
24
27
  /** The file and its hunks. */
25
28
  readonly file: ForgeDiffFile;
26
29
  /** Whether the section shows its lines. */
@@ -49,8 +52,6 @@ export interface DiffFileProps {
49
52
  readonly tooltip: string;
50
53
  /** Rows of the file's menu. */
51
54
  readonly actions: readonly DiffFileAction[];
52
- /** Copy the repository-relative path from the file header. */
53
- readonly onCopyPath: () => void;
54
55
  /** Receives the section element, which scrolling to the file targets. */
55
56
  readonly sectionRef: (element: HTMLElement | null) => void;
56
57
  /** Forge panel copy. */
@@ -0,0 +1,15 @@
1
+ /** Resizable file navigation; width belongs to the mounted tab and survives hiding the pane. */
2
+ import { type ReactNode } from 'react';
3
+ import { type ChangedFilesProps } from './ChangedFiles.tsx';
4
+ /** Placement of a tab's file navigator; hiding it retains its viewing choices. */
5
+ export type FileTreePosition = 'right' | 'left' | 'hidden';
6
+ /**
7
+ * Render a keyboard- and pointer-resizable tree beside the diff.
8
+ * @param props - tree rows, pane position, and the toggle's controlled element id.
9
+ * @returns the bounded pane and its resize separator.
10
+ */
11
+ export declare function FileTreePane({ position, id, ...props }: ChangedFilesProps & {
12
+ readonly position: FileTreePosition;
13
+ readonly id: string;
14
+ }): ReactNode;
15
+ //# sourceMappingURL=FileTreePane.d.ts.map
@@ -4,6 +4,7 @@ import type { HostObservable, InjectFace, PropsLocale, PropsRuntime } from '@dee
4
4
  import type { RemoteHostFacts } from '@deepseek-ai/dsh-api-remotes/client';
5
5
  import type { MergeRequest } from '@deepseek-ai/dsh-experimental-forge/types';
6
6
  import type { ForgePanelChangeRequest } from '../types.ts';
7
+ import { type ChangeRequestActions } from './ChangeRequestCard.tsx';
7
8
  import type { NS } from './locales.ts';
8
9
  import type { PanelSnapshot } from './source.ts';
9
10
  /** Business face of the tab body. */
@@ -27,6 +28,8 @@ export interface ForgeTabInjected {
27
28
  readonly markReady: (entry: ForgePanelChangeRequest) => Promise<void>;
28
29
  /** Merge a change request as `request` describes; settles once the outcome is reported. */
29
30
  readonly merge: (entry: ForgePanelChangeRequest, request: MergeRequest) => Promise<void>;
31
+ /** Read the complete checks of an opened change request. */
32
+ readonly readChecks: NonNullable<ChangeRequestActions['readChecks']>;
30
33
  /** Check the removed worktree of the Session out again, reporting the outcome. */
31
34
  readonly restore: () => void;
32
35
  /** Open a URL outside the app. */
@@ -43,12 +46,12 @@ export interface ForgeTabInjected {
43
46
  /** Full props of the tab body. */
44
47
  export type ForgeTabProps = Pick<PropsRuntime<'sidebar.right.pane.tab'>, 'useTabInfo' | 'sessionId'> & InjectFace<ForgeTabInjected> & PropsLocale<typeof NS>;
45
48
  /**
46
- * Render the forge tab of one Session. The local changes card shows while the
47
- * `branch` scope changes files and no open change request has the checked-out
48
- * branch as its head. The only open change request starts expanded; once the
49
+ * Render the forge tab of one Session. The local changes card shows whenever
50
+ * the `branch` scope changes files, independently of bound change requests.
51
+ * The only open change request starts expanded; once the
49
52
  * user expands or collapses a card, the panel keeps that choice across later updates.
50
53
  * @param props - tab information, panel snapshot and Host facts hooks, actions, and copy.
51
54
  * @returns the tab body.
52
55
  */
53
- export declare function ForgeTab({ useTabInfo, sessionId, usePanel, useHost, useLocale, reconnect, refresh, remove, markReady, merge, restore, openLink, copyText, copyPath, reportVisible, createChangeRequest, t, }: ForgeTabProps): ReactNode;
56
+ export declare function ForgeTab({ useTabInfo, sessionId, usePanel, useHost, useLocale, reconnect, refresh, remove, markReady, merge, readChecks, restore, openLink, copyText, copyPath, reportVisible, createChangeRequest, t, }: ForgeTabProps): ReactNode;
54
57
  //# sourceMappingURL=ForgeTab.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /**
2
- * The panel card of the checkout's changes before a change request carries
3
- * them: the files the `branch` scope changes, their size, which opens the
4
- * changes view, and the action that asks the Agent for a change request.
2
+ * The panel card of the checkout's `branch` scope changes, independent of
3
+ * change request bindings: file counts and paths open the local changes view,
4
+ * and an optional action asks the Agent for a change request.
5
5
  */
6
6
  import { type ReactNode } from 'react';
7
7
  import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';