@mgiles/perk 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +67 -57
  2. package/extension/adapters/planAdapterPlannotator.ts +27 -41
  3. package/extension/adapters/planAdapterTombell.ts +15 -28
  4. package/extension/adapters/todoAdapterJuicesharp.ts +10 -13
  5. package/extension/checkpoints/checkpoints.ts +21 -13
  6. package/extension/doors/address.ts +6 -5
  7. package/extension/doors/askUser.ts +12 -8
  8. package/extension/doors/ciExecutor.ts +23 -15
  9. package/extension/doors/hunkHandoff.ts +202 -0
  10. package/extension/doors/land.ts +33 -10
  11. package/extension/doors/learn.ts +240 -34
  12. package/extension/doors/learnFactory.ts +144 -0
  13. package/extension/doors/lifecycleGates.ts +2 -1
  14. package/extension/doors/plannotatorHandoff.ts +509 -0
  15. package/extension/doors/prReview.ts +22 -37
  16. package/extension/doors/prReviewBrowser.ts +341 -0
  17. package/extension/doors/prReviewTerminal.ts +267 -0
  18. package/extension/doors/ready.ts +2 -1
  19. package/extension/doors/selfcheck.ts +240 -6
  20. package/extension/doors/submit.ts +37 -19
  21. package/extension/doors/submitPrReview.ts +408 -0
  22. package/extension/factories/implementHere.ts +116 -0
  23. package/extension/factories/objective.ts +17 -6
  24. package/extension/factories/objectiveAuthor.ts +15 -32
  25. package/extension/factories/objectiveDraft.ts +1 -1
  26. package/extension/factories/objectivePlan.ts +16 -34
  27. package/extension/factories/objectiveSave.ts +7 -17
  28. package/extension/factories/planMode.ts +24 -38
  29. package/extension/factories/planReview.ts +291 -177
  30. package/extension/factories/planSave.ts +23 -8
  31. package/extension/index.ts +117 -20
  32. package/extension/substrate/bindingDelivery.ts +32 -10
  33. package/extension/substrate/bindings.ts +4 -2
  34. package/extension/substrate/cache.ts +36 -9
  35. package/extension/substrate/clipboard.ts +81 -0
  36. package/extension/substrate/command.ts +25 -0
  37. package/extension/substrate/config.ts +98 -76
  38. package/extension/substrate/consoleCapture.ts +90 -0
  39. package/extension/substrate/git.ts +77 -0
  40. package/extension/substrate/miniJinja.ts +480 -0
  41. package/extension/substrate/paths.ts +38 -0
  42. package/extension/substrate/prompts.ts +15 -24
  43. package/extension/substrate/providers.ts +62 -8
  44. package/extension/substrate/sessionData.ts +1 -1
  45. package/extension/substrate/sessionPointers.ts +184 -0
  46. package/extension/substrate/structuredOutput.ts +3 -1
  47. package/extension/substrate/terminalLaunch.ts +178 -0
  48. package/extension/substrate/toolGating.ts +332 -73
  49. package/extension/substrate/toolParams.ts +7 -0
  50. package/extension/substrate/workflowState.ts +54 -2
  51. package/extension/surfaces/footerProvider.ts +8 -4
  52. package/extension/surfaces/surfaces.ts +338 -13
  53. package/extension/vendor/btw/btw.ts +10 -0
  54. package/extension/worker/readOnlySession.ts +19 -6
  55. package/extension/worker/worker.ts +187 -31
  56. package/extension/workerMain.ts +14 -13
  57. package/package.json +3 -7
  58. package/prompts/README.md +56 -5
  59. package/prompts/_fixtures/cases.yaml +52 -131
  60. package/prompts/_fixtures/golden/cond_elif-a.txt +3 -0
  61. package/prompts/_fixtures/golden/cond_elif-b.txt +3 -0
  62. package/prompts/_fixtures/golden/cond_elif-c.txt +3 -0
  63. package/prompts/_fixtures/golden/cond_if-false.txt +3 -0
  64. package/prompts/_fixtures/golden/cond_if-true.txt +3 -0
  65. package/prompts/_fixtures/golden/cond_ops-1.txt +3 -0
  66. package/prompts/_fixtures/golden/cond_ops-2.txt +3 -0
  67. package/prompts/_fixtures/golden/no_trailing_nl.txt +2 -0
  68. package/prompts/_fixtures/golden/trailing_nl.txt +2 -0
  69. package/prompts/_fixtures/golden/trim_block.txt +3 -0
  70. package/prompts/_fixtures/golden/trim_inline.txt +1 -0
  71. package/prompts/_fixtures/live.yaml +396 -0
  72. package/prompts/_fixtures/templates/cond_elif.md +9 -0
  73. package/prompts/_fixtures/templates/cond_if.md +7 -0
  74. package/prompts/_fixtures/templates/cond_ops.md +3 -0
  75. package/prompts/_fixtures/templates/no_trailing_nl.md +2 -0
  76. package/prompts/_fixtures/templates/trailing_nl.md +2 -0
  77. package/prompts/_fixtures/templates/trim_block.md +5 -0
  78. package/prompts/_fixtures/templates/trim_inline.md +1 -0
  79. package/prompts/contexts/adapters/juicesharp-todo.md +7 -0
  80. package/prompts/contexts/adapters/plannotator-objective.md +7 -0
  81. package/prompts/contexts/adapters/plannotator-plan.md +6 -0
  82. package/prompts/contexts/adapters/tombell-plan.md +17 -0
  83. package/prompts/contexts/objective-authoring.md +20 -0
  84. package/prompts/contexts/plan-authoring.md +24 -0
  85. package/prompts/contexts/read-only.md +10 -0
  86. package/prompts/stages/conflict-resolution.md +4 -0
  87. package/prompts/stages/learn-code.md +8 -0
  88. package/prompts/stages/learn-docs.md +7 -6
  89. package/prompts/stages/learn-orchestrate.md +6 -0
  90. package/prompts/stages/learn.md +1 -1
  91. package/prompts/stages/objective-author/adopt.md +12 -0
  92. package/prompts/stages/objective-author/file.md +9 -0
  93. package/prompts/stages/objective-author/seed.md +9 -0
  94. package/prompts/stages/objective-plan/guidance.md +1 -1
  95. package/prompts/stages/objective-plan/seed.md +3 -2
  96. package/prompts/stages/objective-reconcile.md +7 -0
  97. package/prompts/stages/objective-replan.md +14 -0
  98. package/prompts/stages/objective-save.md +9 -0
  99. package/prompts/stages/plan-from/adopt.md +10 -0
  100. package/prompts/stages/plan-from/file.md +9 -0
  101. package/prompts/stages/pr-review-browser/active.md +11 -0
  102. package/prompts/stages/pr-review-browser/foreign.md +11 -0
  103. package/prompts/stages/pr-review-terminal/active.md +12 -0
  104. package/prompts/stages/pr-review-terminal/foreign.md +13 -0
  105. package/prompts/stages/pr-review-terminal/local.md +4 -0
  106. package/prompts/stages/pr-review.md +6 -0
  107. package/prompts/stages/replan.md +13 -0
  108. package/prompts/stages/skills/create-from.md +15 -0
  109. package/prompts/stages/skills/create.md +9 -0
  110. package/prompts/stages/skills/refine.md +9 -0
  111. package/shared/README.md +23 -13
  112. package/shared/bindings.yaml +22 -2
  113. package/shared/contracts-history.md +191 -0
  114. package/shared/contracts.md +2258 -1638
  115. package/shared/providers.yaml +8 -1
  116. package/shared/registry.yaml +10 -11
  117. package/shared/schemas/contracts/bindings.schema.json +38 -0
  118. package/shared/schemas/contracts/providers.schema.json +89 -0
  119. package/shared/schemas/contracts/registry.schema.json +98 -0
  120. package/shared/schemas/inputs/handoff-arg.schema.json +6 -0
  121. package/shared/schemas/inputs/resolve-threads-batch.schema.json +37 -0
  122. package/shared/schemas/inputs/review-post-batch.schema.json +84 -0
  123. package/shared/schemas/inputs/review-submit-batch.schema.json +66 -0
  124. package/shared/schemas/inputs/structured-roadmap-node.schema.json +102 -0
  125. package/shared/schemas/outputs/doctor-report.schema.json +236 -0
  126. package/shared/schemas/outputs/init-report.schema.json +419 -0
  127. package/shared/schemas/outputs/learn-capture.schema.json +90 -0
  128. package/shared/schemas/outputs/learn-skip.schema.json +59 -0
  129. package/shared/schemas/outputs/plan-save.schema.json +209 -0
  130. package/shared/schemas/outputs/pr-feedback.schema.json +334 -0
  131. package/shared/schemas/outputs/pr-land.schema.json +187 -0
  132. package/shared/schemas/outputs/pr-ready.schema.json +75 -0
  133. package/shared/schemas/outputs/pr-review-checkout.schema.json +69 -0
  134. package/shared/schemas/outputs/pr-review-cleanup.schema.json +54 -0
  135. package/shared/schemas/outputs/pr-review-context.schema.json +86 -0
  136. package/shared/schemas/outputs/pr-review-submit.schema.json +64 -0
  137. package/shared/schemas/outputs/pr-submit.schema.json +147 -0
  138. package/extension/doors/learnDocs.ts +0 -99
  139. package/prompts/_fixtures/golden/address-action-model.txt +0 -10
  140. package/prompts/_fixtures/golden/address-action.txt +0 -10
  141. package/prompts/_fixtures/golden/address-preview-model.txt +0 -6
  142. package/prompts/_fixtures/golden/address-preview.txt +0 -6
  143. package/prompts/_fixtures/golden/implement-github.txt +0 -8
  144. package/prompts/_fixtures/golden/learn-docs.txt +0 -8
  145. package/prompts/_fixtures/golden/learn-github.txt +0 -11
  146. package/prompts/_fixtures/golden/learn-linear.txt +0 -11
  147. package/prompts/_fixtures/golden/learn-no-ref.txt +0 -8
  148. package/prompts/_fixtures/golden/learn-other.txt +0 -8
  149. package/prompts/_fixtures/golden/objective-plan-guidance-linear.txt +0 -8
  150. package/prompts/_fixtures/golden/objective-plan-guidance.txt +0 -8
  151. package/prompts/_fixtures/golden/objective-plan-seed-linear.txt +0 -20
  152. package/prompts/_fixtures/golden/objective-plan-seed.txt +0 -15
  153. package/prompts/_fixtures/golden/objective-read-linear-nourl.txt +0 -1
  154. package/prompts/_fixtures/golden/objective-read-linear.txt +0 -1
  155. package/prompts/_fixtures/golden/plan-read-github.txt +0 -1
  156. package/prompts/_fixtures/golden/plan-read-linear.txt +0 -1
  157. package/prompts/_fixtures/golden/plan-read-other.txt +0 -1
@@ -0,0 +1,90 @@
1
+ {
2
+ "$defs": {
3
+ "LearnIssueOut": {
4
+ "additionalProperties": false,
5
+ "description": "The serialization boundary of the picked :class:`issue_backend.IssueRef` subset\n(field order load-bearing).",
6
+ "properties": {
7
+ "id": {
8
+ "title": "Id",
9
+ "type": "string"
10
+ },
11
+ "url": {
12
+ "title": "Url",
13
+ "type": "string"
14
+ },
15
+ "existed": {
16
+ "title": "Existed",
17
+ "type": "boolean"
18
+ }
19
+ },
20
+ "required": [
21
+ "id",
22
+ "url",
23
+ "existed"
24
+ ],
25
+ "title": "LearnIssueOut",
26
+ "type": "object"
27
+ }
28
+ },
29
+ "additionalProperties": false,
30
+ "description": "The ``--json`` serialization boundary of :class:`LearnCaptureResult` (order load-bearing).",
31
+ "properties": {
32
+ "success": {
33
+ "title": "Success",
34
+ "type": "boolean"
35
+ },
36
+ "error_type": {
37
+ "anyOf": [
38
+ {
39
+ "type": "string"
40
+ },
41
+ {
42
+ "type": "null"
43
+ }
44
+ ],
45
+ "title": "Error Type"
46
+ },
47
+ "message": {
48
+ "anyOf": [
49
+ {
50
+ "type": "string"
51
+ },
52
+ {
53
+ "type": "null"
54
+ }
55
+ ],
56
+ "title": "Message"
57
+ },
58
+ "learn_issue": {
59
+ "$ref": "#/$defs/LearnIssueOut"
60
+ },
61
+ "plan_issue": {
62
+ "title": "Plan Issue",
63
+ "type": "string"
64
+ },
65
+ "commented": {
66
+ "title": "Commented",
67
+ "type": "boolean"
68
+ },
69
+ "pending_cleared": {
70
+ "title": "Pending Cleared",
71
+ "type": "boolean"
72
+ },
73
+ "dry_run": {
74
+ "title": "Dry Run",
75
+ "type": "boolean"
76
+ }
77
+ },
78
+ "required": [
79
+ "success",
80
+ "error_type",
81
+ "message",
82
+ "learn_issue",
83
+ "plan_issue",
84
+ "commented",
85
+ "pending_cleared",
86
+ "dry_run"
87
+ ],
88
+ "title": "LearnCaptureOut",
89
+ "type": "object"
90
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "additionalProperties": false,
3
+ "description": "The ``--json`` serialization boundary of :class:`LearnSkipResult` (order load-bearing).",
4
+ "properties": {
5
+ "success": {
6
+ "title": "Success",
7
+ "type": "boolean"
8
+ },
9
+ "error_type": {
10
+ "anyOf": [
11
+ {
12
+ "type": "string"
13
+ },
14
+ {
15
+ "type": "null"
16
+ }
17
+ ],
18
+ "title": "Error Type"
19
+ },
20
+ "message": {
21
+ "anyOf": [
22
+ {
23
+ "type": "string"
24
+ },
25
+ {
26
+ "type": "null"
27
+ }
28
+ ],
29
+ "title": "Message"
30
+ },
31
+ "plan_issue": {
32
+ "title": "Plan Issue",
33
+ "type": "string"
34
+ },
35
+ "learn_state": {
36
+ "title": "Learn State",
37
+ "type": "string"
38
+ },
39
+ "pending_cleared": {
40
+ "title": "Pending Cleared",
41
+ "type": "boolean"
42
+ },
43
+ "dry_run": {
44
+ "title": "Dry Run",
45
+ "type": "boolean"
46
+ }
47
+ },
48
+ "required": [
49
+ "success",
50
+ "error_type",
51
+ "message",
52
+ "plan_issue",
53
+ "learn_state",
54
+ "pending_cleared",
55
+ "dry_run"
56
+ ],
57
+ "title": "LearnSkipOut",
58
+ "type": "object"
59
+ }
@@ -0,0 +1,209 @@
1
+ {
2
+ "$defs": {
3
+ "IssueOut": {
4
+ "additionalProperties": false,
5
+ "description": "The serialization boundary of the picked :class:`issue_backend.IssueRef` subset\n(field order load-bearing).",
6
+ "properties": {
7
+ "id": {
8
+ "title": "Id",
9
+ "type": "string"
10
+ },
11
+ "url": {
12
+ "title": "Url",
13
+ "type": "string"
14
+ },
15
+ "existed": {
16
+ "title": "Existed",
17
+ "type": "boolean"
18
+ }
19
+ },
20
+ "required": [
21
+ "id",
22
+ "url",
23
+ "existed"
24
+ ],
25
+ "title": "IssueOut",
26
+ "type": "object"
27
+ },
28
+ "ObjectiveNodeLinkOut": {
29
+ "additionalProperties": false,
30
+ "description": "The serialization boundary of :class:`ObjectiveNodeLink` (field order load-bearing).",
31
+ "properties": {
32
+ "linked": {
33
+ "title": "Linked",
34
+ "type": "boolean"
35
+ },
36
+ "node": {
37
+ "title": "Node",
38
+ "type": "string"
39
+ },
40
+ "status": {
41
+ "anyOf": [
42
+ {
43
+ "type": "string"
44
+ },
45
+ {
46
+ "type": "null"
47
+ }
48
+ ],
49
+ "title": "Status"
50
+ },
51
+ "error": {
52
+ "anyOf": [
53
+ {
54
+ "type": "string"
55
+ },
56
+ {
57
+ "type": "null"
58
+ }
59
+ ],
60
+ "title": "Error"
61
+ }
62
+ },
63
+ "required": [
64
+ "linked",
65
+ "node",
66
+ "status",
67
+ "error"
68
+ ],
69
+ "title": "ObjectiveNodeLinkOut",
70
+ "type": "object"
71
+ },
72
+ "PlanRefOut": {
73
+ "additionalProperties": false,
74
+ "description": "The ``cache.plan-ref`` / ``--json`` serialization boundary (the OUTPUT edge of\n:class:`PlanRef`).\n\nField declaration order is load-bearing \u2014 see :class:`PlanHeaderOut`.",
75
+ "properties": {
76
+ "provider": {
77
+ "title": "Provider",
78
+ "type": "string"
79
+ },
80
+ "pr_id": {
81
+ "title": "Pr Id",
82
+ "type": "string"
83
+ },
84
+ "url": {
85
+ "title": "Url",
86
+ "type": "string"
87
+ },
88
+ "labels": {
89
+ "items": {
90
+ "type": "string"
91
+ },
92
+ "title": "Labels",
93
+ "type": "array"
94
+ },
95
+ "objective_id": {
96
+ "anyOf": [
97
+ {
98
+ "type": "string"
99
+ },
100
+ {
101
+ "type": "null"
102
+ }
103
+ ],
104
+ "default": null,
105
+ "title": "Objective Id"
106
+ },
107
+ "consumed_learn": {
108
+ "default": [],
109
+ "items": {
110
+ "type": "string"
111
+ },
112
+ "title": "Consumed Learn",
113
+ "type": "array"
114
+ },
115
+ "base": {
116
+ "anyOf": [
117
+ {
118
+ "type": "string"
119
+ },
120
+ {
121
+ "type": "null"
122
+ }
123
+ ],
124
+ "default": null,
125
+ "title": "Base"
126
+ }
127
+ },
128
+ "required": [
129
+ "provider",
130
+ "pr_id",
131
+ "url",
132
+ "labels"
133
+ ],
134
+ "title": "PlanRefOut",
135
+ "type": "object"
136
+ }
137
+ },
138
+ "additionalProperties": false,
139
+ "description": "The ``--json`` serialization boundary of :class:`PlanSaveResult` (order load-bearing).",
140
+ "properties": {
141
+ "success": {
142
+ "title": "Success",
143
+ "type": "boolean"
144
+ },
145
+ "error_type": {
146
+ "anyOf": [
147
+ {
148
+ "type": "string"
149
+ },
150
+ {
151
+ "type": "null"
152
+ }
153
+ ],
154
+ "title": "Error Type"
155
+ },
156
+ "message": {
157
+ "anyOf": [
158
+ {
159
+ "type": "string"
160
+ },
161
+ {
162
+ "type": "null"
163
+ }
164
+ ],
165
+ "title": "Message"
166
+ },
167
+ "issue": {
168
+ "$ref": "#/$defs/IssueOut"
169
+ },
170
+ "plan_ref": {
171
+ "$ref": "#/$defs/PlanRefOut"
172
+ },
173
+ "cached": {
174
+ "title": "Cached",
175
+ "type": "boolean"
176
+ },
177
+ "updated": {
178
+ "title": "Updated",
179
+ "type": "boolean"
180
+ },
181
+ "objective_node": {
182
+ "anyOf": [
183
+ {
184
+ "$ref": "#/$defs/ObjectiveNodeLinkOut"
185
+ },
186
+ {
187
+ "type": "null"
188
+ }
189
+ ]
190
+ },
191
+ "dry_run": {
192
+ "title": "Dry Run",
193
+ "type": "boolean"
194
+ }
195
+ },
196
+ "required": [
197
+ "success",
198
+ "error_type",
199
+ "message",
200
+ "issue",
201
+ "plan_ref",
202
+ "cached",
203
+ "updated",
204
+ "objective_node",
205
+ "dry_run"
206
+ ],
207
+ "title": "PlanSaveOut",
208
+ "type": "object"
209
+ }
@@ -0,0 +1,334 @@
1
+ {
2
+ "$defs": {
3
+ "DiscussionCommentOut": {
4
+ "additionalProperties": false,
5
+ "description": "The serialization boundary of one :class:`github.DiscussionComment`\n(field order load-bearing).",
6
+ "properties": {
7
+ "comment_id": {
8
+ "title": "Comment Id",
9
+ "type": "integer"
10
+ },
11
+ "body": {
12
+ "title": "Body",
13
+ "type": "string"
14
+ },
15
+ "author": {
16
+ "anyOf": [
17
+ {
18
+ "type": "string"
19
+ },
20
+ {
21
+ "type": "null"
22
+ }
23
+ ],
24
+ "title": "Author"
25
+ },
26
+ "created_at": {
27
+ "anyOf": [
28
+ {
29
+ "type": "string"
30
+ },
31
+ {
32
+ "type": "null"
33
+ }
34
+ ],
35
+ "title": "Created At"
36
+ }
37
+ },
38
+ "required": [
39
+ "comment_id",
40
+ "body",
41
+ "author",
42
+ "created_at"
43
+ ],
44
+ "title": "DiscussionCommentOut",
45
+ "type": "object"
46
+ },
47
+ "FeedbackCommentOut": {
48
+ "additionalProperties": false,
49
+ "description": "The serialization boundary of one :class:`github.ReviewComment` (order load-bearing).",
50
+ "properties": {
51
+ "comment_id": {
52
+ "anyOf": [
53
+ {
54
+ "type": "integer"
55
+ },
56
+ {
57
+ "type": "null"
58
+ }
59
+ ],
60
+ "title": "Comment Id"
61
+ },
62
+ "body": {
63
+ "title": "Body",
64
+ "type": "string"
65
+ },
66
+ "author": {
67
+ "anyOf": [
68
+ {
69
+ "type": "string"
70
+ },
71
+ {
72
+ "type": "null"
73
+ }
74
+ ],
75
+ "title": "Author"
76
+ },
77
+ "path": {
78
+ "anyOf": [
79
+ {
80
+ "type": "string"
81
+ },
82
+ {
83
+ "type": "null"
84
+ }
85
+ ],
86
+ "title": "Path"
87
+ },
88
+ "line": {
89
+ "anyOf": [
90
+ {
91
+ "type": "integer"
92
+ },
93
+ {
94
+ "type": "null"
95
+ }
96
+ ],
97
+ "title": "Line"
98
+ },
99
+ "created_at": {
100
+ "anyOf": [
101
+ {
102
+ "type": "string"
103
+ },
104
+ {
105
+ "type": "null"
106
+ }
107
+ ],
108
+ "title": "Created At"
109
+ }
110
+ },
111
+ "required": [
112
+ "comment_id",
113
+ "body",
114
+ "author",
115
+ "path",
116
+ "line",
117
+ "created_at"
118
+ ],
119
+ "title": "FeedbackCommentOut",
120
+ "type": "object"
121
+ },
122
+ "FeedbackCountsOut": {
123
+ "additionalProperties": false,
124
+ "description": "The computed feedback tally (field order load-bearing).",
125
+ "properties": {
126
+ "review_threads": {
127
+ "title": "Review Threads",
128
+ "type": "integer"
129
+ },
130
+ "unresolved_threads": {
131
+ "title": "Unresolved Threads",
132
+ "type": "integer"
133
+ },
134
+ "discussion_comments": {
135
+ "title": "Discussion Comments",
136
+ "type": "integer"
137
+ },
138
+ "reviews": {
139
+ "title": "Reviews",
140
+ "type": "integer"
141
+ }
142
+ },
143
+ "required": [
144
+ "review_threads",
145
+ "unresolved_threads",
146
+ "discussion_comments",
147
+ "reviews"
148
+ ],
149
+ "title": "FeedbackCountsOut",
150
+ "type": "object"
151
+ },
152
+ "FeedbackReviewOut": {
153
+ "additionalProperties": false,
154
+ "description": "The serialization boundary of one :class:`github.Review` (field order load-bearing).",
155
+ "properties": {
156
+ "review_id": {
157
+ "title": "Review Id",
158
+ "type": "string"
159
+ },
160
+ "author": {
161
+ "anyOf": [
162
+ {
163
+ "type": "string"
164
+ },
165
+ {
166
+ "type": "null"
167
+ }
168
+ ],
169
+ "title": "Author"
170
+ },
171
+ "body": {
172
+ "title": "Body",
173
+ "type": "string"
174
+ },
175
+ "state": {
176
+ "title": "State",
177
+ "type": "string"
178
+ },
179
+ "submitted_at": {
180
+ "anyOf": [
181
+ {
182
+ "type": "string"
183
+ },
184
+ {
185
+ "type": "null"
186
+ }
187
+ ],
188
+ "title": "Submitted At"
189
+ }
190
+ },
191
+ "required": [
192
+ "review_id",
193
+ "author",
194
+ "body",
195
+ "state",
196
+ "submitted_at"
197
+ ],
198
+ "title": "FeedbackReviewOut",
199
+ "type": "object"
200
+ },
201
+ "FeedbackThreadOut": {
202
+ "additionalProperties": false,
203
+ "description": "The serialization boundary of one :class:`github.ReviewThread` (field order load-bearing).",
204
+ "properties": {
205
+ "thread_id": {
206
+ "title": "Thread Id",
207
+ "type": "string"
208
+ },
209
+ "is_resolved": {
210
+ "title": "Is Resolved",
211
+ "type": "boolean"
212
+ },
213
+ "is_outdated": {
214
+ "title": "Is Outdated",
215
+ "type": "boolean"
216
+ },
217
+ "path": {
218
+ "anyOf": [
219
+ {
220
+ "type": "string"
221
+ },
222
+ {
223
+ "type": "null"
224
+ }
225
+ ],
226
+ "title": "Path"
227
+ },
228
+ "line": {
229
+ "anyOf": [
230
+ {
231
+ "type": "integer"
232
+ },
233
+ {
234
+ "type": "null"
235
+ }
236
+ ],
237
+ "title": "Line"
238
+ },
239
+ "comments": {
240
+ "items": {
241
+ "$ref": "#/$defs/FeedbackCommentOut"
242
+ },
243
+ "title": "Comments",
244
+ "type": "array"
245
+ }
246
+ },
247
+ "required": [
248
+ "thread_id",
249
+ "is_resolved",
250
+ "is_outdated",
251
+ "path",
252
+ "line",
253
+ "comments"
254
+ ],
255
+ "title": "FeedbackThreadOut",
256
+ "type": "object"
257
+ }
258
+ },
259
+ "additionalProperties": false,
260
+ "description": "The ``--json`` serialization boundary of :class:`PrFeedbackResult` (order\nload-bearing). ``pr`` maps from the domain ``pr_number``.",
261
+ "properties": {
262
+ "success": {
263
+ "title": "Success",
264
+ "type": "boolean"
265
+ },
266
+ "error_type": {
267
+ "anyOf": [
268
+ {
269
+ "type": "string"
270
+ },
271
+ {
272
+ "type": "null"
273
+ }
274
+ ],
275
+ "title": "Error Type"
276
+ },
277
+ "message": {
278
+ "anyOf": [
279
+ {
280
+ "type": "string"
281
+ },
282
+ {
283
+ "type": "null"
284
+ }
285
+ ],
286
+ "title": "Message"
287
+ },
288
+ "branch": {
289
+ "title": "Branch",
290
+ "type": "string"
291
+ },
292
+ "pr": {
293
+ "title": "Pr",
294
+ "type": "integer"
295
+ },
296
+ "review_threads": {
297
+ "items": {
298
+ "$ref": "#/$defs/FeedbackThreadOut"
299
+ },
300
+ "title": "Review Threads",
301
+ "type": "array"
302
+ },
303
+ "discussion_comments": {
304
+ "items": {
305
+ "$ref": "#/$defs/DiscussionCommentOut"
306
+ },
307
+ "title": "Discussion Comments",
308
+ "type": "array"
309
+ },
310
+ "reviews": {
311
+ "items": {
312
+ "$ref": "#/$defs/FeedbackReviewOut"
313
+ },
314
+ "title": "Reviews",
315
+ "type": "array"
316
+ },
317
+ "counts": {
318
+ "$ref": "#/$defs/FeedbackCountsOut"
319
+ }
320
+ },
321
+ "required": [
322
+ "success",
323
+ "error_type",
324
+ "message",
325
+ "branch",
326
+ "pr",
327
+ "review_threads",
328
+ "discussion_comments",
329
+ "reviews",
330
+ "counts"
331
+ ],
332
+ "title": "PrFeedbackOut",
333
+ "type": "object"
334
+ }