@dxos/plugin-github 0.7.4 → 0.13.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 (628) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +784 -0
  3. package/dist/lib/GitHubCapabilities.mjs +10 -0
  4. package/dist/lib/GitHubCapabilities.mjs.map +1 -0
  5. package/dist/lib/GitHubEvents.mjs +15 -0
  6. package/dist/lib/GitHubEvents.mjs.map +1 -0
  7. package/dist/lib/GitHubOperation.mjs +358 -0
  8. package/dist/lib/GitHubOperation.mjs.map +1 -0
  9. package/dist/lib/GitHubPlugin.mjs +16 -0
  10. package/dist/lib/GitHubPlugin.mjs.map +1 -0
  11. package/dist/lib/Walkthrough.mjs +59 -0
  12. package/dist/lib/Walkthrough.mjs.map +1 -0
  13. package/dist/lib/capabilities.browser.mjs +54 -0
  14. package/dist/lib/capabilities.browser.mjs.map +1 -0
  15. package/dist/lib/capabilities.mjs +54 -0
  16. package/dist/lib/capabilities.mjs.map +1 -0
  17. package/dist/lib/capabilities.node.mjs +30 -0
  18. package/dist/lib/capabilities.node.mjs.map +1 -0
  19. package/dist/lib/capabilities.tauri.mjs +54 -0
  20. package/dist/lib/capabilities.tauri.mjs.map +1 -0
  21. package/dist/lib/capabilities.workerd.mjs +30 -0
  22. package/dist/lib/capabilities.workerd.mjs.map +1 -0
  23. package/dist/lib/chunk-ImportPullRequestDialog.mjs +116 -0
  24. package/dist/lib/chunk-ImportPullRequestDialog.mjs.map +1 -0
  25. package/dist/lib/chunk-PLUGIN.mjs +6 -0
  26. package/dist/lib/chunk-PLUGIN.mjs.map +1 -0
  27. package/dist/lib/chunk-PullRequestArticle.mjs +1486 -0
  28. package/dist/lib/chunk-PullRequestArticle.mjs.map +1 -0
  29. package/dist/lib/chunk-PullRequestArticle2.mjs +2 -0
  30. package/dist/lib/chunk-PullRequestCardMenu.mjs +123 -0
  31. package/dist/lib/chunk-PullRequestCardMenu.mjs.map +1 -0
  32. package/dist/lib/chunk-PullRequestsArticle.mjs +594 -0
  33. package/dist/lib/chunk-PullRequestsArticle.mjs.map +1 -0
  34. package/dist/lib/chunk-WalkthroughArticle.mjs +26 -0
  35. package/dist/lib/chunk-WalkthroughArticle.mjs.map +1 -0
  36. package/dist/lib/chunk-add-pull-request-comment.mjs +19 -0
  37. package/dist/lib/chunk-add-pull-request-comment.mjs.map +1 -0
  38. package/dist/lib/chunk-add-pull-request-review-comment.mjs +25 -0
  39. package/dist/lib/chunk-add-pull-request-review-comment.mjs.map +1 -0
  40. package/dist/lib/chunk-app-graph-builder.mjs +39 -0
  41. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  42. package/dist/lib/chunk-connector.mjs +70 -0
  43. package/dist/lib/chunk-connector.mjs.map +1 -0
  44. package/dist/lib/chunk-constants.mjs +11 -0
  45. package/dist/lib/chunk-constants.mjs.map +1 -0
  46. package/dist/lib/chunk-errors.mjs +29 -0
  47. package/dist/lib/chunk-errors.mjs.map +1 -0
  48. package/dist/lib/chunk-generate-walkthrough.mjs +86 -0
  49. package/dist/lib/chunk-generate-walkthrough.mjs.map +1 -0
  50. package/dist/lib/chunk-generate.mjs +719 -0
  51. package/dist/lib/chunk-generate.mjs.map +1 -0
  52. package/dist/lib/chunk-get-pull-request-diff.mjs +25 -0
  53. package/dist/lib/chunk-get-pull-request-diff.mjs.map +1 -0
  54. package/dist/lib/chunk-get-pull-request-status.mjs +29 -0
  55. package/dist/lib/chunk-get-pull-request-status.mjs.map +1 -0
  56. package/dist/lib/chunk-get-repositories.mjs +32 -0
  57. package/dist/lib/chunk-get-repositories.mjs.map +1 -0
  58. package/dist/lib/chunk-github-api.mjs +375 -0
  59. package/dist/lib/chunk-github-api.mjs.map +1 -0
  60. package/dist/lib/chunk-github-link.mjs +59 -0
  61. package/dist/lib/chunk-github-link.mjs.map +1 -0
  62. package/dist/lib/chunk-import-pull-request-from-snapshot.mjs +25 -0
  63. package/dist/lib/chunk-import-pull-request-from-snapshot.mjs.map +1 -0
  64. package/dist/lib/chunk-import-pull-request.mjs +96 -0
  65. package/dist/lib/chunk-import-pull-request.mjs.map +1 -0
  66. package/dist/lib/chunk-link-resolver.mjs +109 -0
  67. package/dist/lib/chunk-link-resolver.mjs.map +1 -0
  68. package/dist/lib/chunk-markdown-extension.mjs +92 -0
  69. package/dist/lib/chunk-markdown-extension.mjs.map +1 -0
  70. package/dist/lib/chunk-materialize-target.mjs +36 -0
  71. package/dist/lib/chunk-materialize-target.mjs.map +1 -0
  72. package/dist/lib/chunk-operation-handler.mjs +12 -0
  73. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  74. package/dist/lib/chunk-page-action.mjs +22 -0
  75. package/dist/lib/chunk-page-action.mjs.map +1 -0
  76. package/dist/lib/chunk-pull-request.mjs +58 -0
  77. package/dist/lib/chunk-pull-request.mjs.map +1 -0
  78. package/dist/lib/chunk-pull-request2.mjs +110 -0
  79. package/dist/lib/chunk-pull-request2.mjs.map +1 -0
  80. package/dist/lib/chunk-react-surface.mjs +233 -0
  81. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  82. package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
  83. package/dist/lib/chunk-schema.mjs +15 -0
  84. package/dist/lib/chunk-schema.mjs.map +1 -0
  85. package/dist/lib/chunk-skill-definition.mjs +10 -0
  86. package/dist/lib/chunk-skill-definition.mjs.map +1 -0
  87. package/dist/lib/chunk-submit-pull-request-approval.mjs +56 -0
  88. package/dist/lib/chunk-submit-pull-request-approval.mjs.map +1 -0
  89. package/dist/lib/chunk-sync-pull-request.mjs +24 -0
  90. package/dist/lib/chunk-sync-pull-request.mjs.map +1 -0
  91. package/dist/lib/chunk-sync.mjs +481 -0
  92. package/dist/lib/chunk-sync.mjs.map +1 -0
  93. package/dist/lib/chunk-useOpenObject.mjs +43 -0
  94. package/dist/lib/chunk-useOpenObject.mjs.map +1 -0
  95. package/dist/lib/extensions.mjs +132 -0
  96. package/dist/lib/extensions.mjs.map +1 -0
  97. package/dist/lib/index.mjs +4 -0
  98. package/dist/lib/meta.mjs +47 -0
  99. package/dist/lib/meta.mjs.map +1 -0
  100. package/dist/lib/ns/Extensions.mjs +18 -0
  101. package/dist/lib/ns/Extensions.mjs.map +1 -0
  102. package/dist/lib/operations.mjs +22 -0
  103. package/dist/lib/operations.mjs.map +1 -0
  104. package/dist/lib/plugin.mjs +9 -0
  105. package/dist/lib/plugin.mjs.map +1 -0
  106. package/dist/lib/skills.mjs +44 -0
  107. package/dist/lib/skills.mjs.map +1 -0
  108. package/dist/lib/testing.mjs +189 -0
  109. package/dist/lib/testing.mjs.map +1 -0
  110. package/dist/lib/translations.mjs +136 -0
  111. package/dist/lib/translations.mjs.map +1 -0
  112. package/dist/lib/types.mjs +5 -0
  113. package/dist/types/dx.config.d.ts +28 -0
  114. package/dist/types/dx.config.d.ts.map +1 -0
  115. package/dist/types/src/Extensions.d.ts +2 -0
  116. package/dist/types/src/Extensions.d.ts.map +1 -0
  117. package/dist/types/src/GitHubPlugin.d.ts +37 -0
  118. package/dist/types/src/GitHubPlugin.d.ts.map +1 -0
  119. package/dist/types/src/GitHubPlugin.workerd.test.d.ts +2 -0
  120. package/dist/types/src/GitHubPlugin.workerd.test.d.ts.map +1 -0
  121. package/dist/types/src/approval.d.ts +21 -0
  122. package/dist/types/src/approval.d.ts.map +1 -0
  123. package/dist/types/src/approval.test.d.ts +2 -0
  124. package/dist/types/src/approval.test.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/app-graph-builder.d.ts +9 -0
  126. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/connector.d.ts +17 -0
  128. package/dist/types/src/capabilities/connector.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/gen/browser.d.ts +13 -0
  130. package/dist/types/src/capabilities/gen/browser.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/gen/node.d.ts +13 -0
  132. package/dist/types/src/capabilities/gen/node.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/gen/tauri.d.ts +13 -0
  134. package/dist/types/src/capabilities/gen/tauri.d.ts.map +1 -0
  135. package/dist/types/src/capabilities/gen/workerd.d.ts +13 -0
  136. package/dist/types/src/capabilities/gen/workerd.d.ts.map +1 -0
  137. package/dist/types/src/capabilities/index.d.ts +13 -0
  138. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  139. package/dist/types/src/capabilities/link-resolver.d.ts +10 -0
  140. package/dist/types/src/capabilities/link-resolver.d.ts.map +1 -0
  141. package/dist/types/src/capabilities/markdown-extension.d.ts +14 -0
  142. package/dist/types/src/capabilities/markdown-extension.d.ts.map +1 -0
  143. package/dist/types/src/capabilities/operation-handler.d.ts +5 -0
  144. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  145. package/dist/types/src/capabilities/page-action.d.ts +5 -0
  146. package/dist/types/src/capabilities/page-action.d.ts.map +1 -0
  147. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  148. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  149. package/dist/types/src/capabilities/schema.d.ts +12 -0
  150. package/dist/types/src/capabilities/schema.d.ts.map +1 -0
  151. package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
  152. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
  153. package/dist/types/src/cards/GitHubCard.d.ts +11 -0
  154. package/dist/types/src/cards/GitHubCard.d.ts.map +1 -0
  155. package/dist/types/src/cards/GitHubCard.stories.d.ts +45 -0
  156. package/dist/types/src/cards/GitHubCard.stories.d.ts.map +1 -0
  157. package/dist/types/src/cards/PullRequestCard.d.ts +9 -0
  158. package/dist/types/src/cards/PullRequestCard.d.ts.map +1 -0
  159. package/dist/types/src/cards/index.d.ts +3 -0
  160. package/dist/types/src/cards/index.d.ts.map +1 -0
  161. package/dist/types/src/components/CommentComposer/CommentComposer.d.ts +30 -0
  162. package/dist/types/src/components/CommentComposer/CommentComposer.d.ts.map +1 -0
  163. package/dist/types/src/components/CommentComposer/index.d.ts +2 -0
  164. package/dist/types/src/components/CommentComposer/index.d.ts.map +1 -0
  165. package/dist/types/src/components/PullRequestFiles/DiffStat.d.ts +8 -0
  166. package/dist/types/src/components/PullRequestFiles/DiffStat.d.ts.map +1 -0
  167. package/dist/types/src/components/PullRequestFiles/FileTree.d.ts +17 -0
  168. package/dist/types/src/components/PullRequestFiles/FileTree.d.ts.map +1 -0
  169. package/dist/types/src/components/PullRequestFiles/PullRequestFiles.d.ts +23 -0
  170. package/dist/types/src/components/PullRequestFiles/PullRequestFiles.d.ts.map +1 -0
  171. package/dist/types/src/components/PullRequestFiles/files.d.ts +39 -0
  172. package/dist/types/src/components/PullRequestFiles/files.d.ts.map +1 -0
  173. package/dist/types/src/components/PullRequestFiles/files.test.d.ts +2 -0
  174. package/dist/types/src/components/PullRequestFiles/files.test.d.ts.map +1 -0
  175. package/dist/types/src/components/PullRequestFiles/index.d.ts +5 -0
  176. package/dist/types/src/components/PullRequestFiles/index.d.ts.map +1 -0
  177. package/dist/types/src/components/PullRequestOverview/ArtifactPill.d.ts +21 -0
  178. package/dist/types/src/components/PullRequestOverview/ArtifactPill.d.ts.map +1 -0
  179. package/dist/types/src/components/PullRequestOverview/CheckRunList.d.ts +15 -0
  180. package/dist/types/src/components/PullRequestOverview/CheckRunList.d.ts.map +1 -0
  181. package/dist/types/src/components/PullRequestOverview/PullRequestDetails.d.ts +10 -0
  182. package/dist/types/src/components/PullRequestOverview/PullRequestDetails.d.ts.map +1 -0
  183. package/dist/types/src/components/PullRequestOverview/PullRequestOverview.d.ts +16 -0
  184. package/dist/types/src/components/PullRequestOverview/PullRequestOverview.d.ts.map +1 -0
  185. package/dist/types/src/components/PullRequestOverview/RelatedCards.d.ts +28 -0
  186. package/dist/types/src/components/PullRequestOverview/RelatedCards.d.ts.map +1 -0
  187. package/dist/types/src/components/PullRequestOverview/index.d.ts +6 -0
  188. package/dist/types/src/components/PullRequestOverview/index.d.ts.map +1 -0
  189. package/dist/types/src/components/PullRequestStatus/PullRequestStatus.d.ts +20 -0
  190. package/dist/types/src/components/PullRequestStatus/PullRequestStatus.d.ts.map +1 -0
  191. package/dist/types/src/components/PullRequestStatus/index.d.ts +2 -0
  192. package/dist/types/src/components/PullRequestStatus/index.d.ts.map +1 -0
  193. package/dist/types/src/components/WalkthroughView/WalkthroughView.d.ts +18 -0
  194. package/dist/types/src/components/WalkthroughView/WalkthroughView.d.ts.map +1 -0
  195. package/dist/types/src/components/WalkthroughView/extensions.d.ts +16 -0
  196. package/dist/types/src/components/WalkthroughView/extensions.d.ts.map +1 -0
  197. package/dist/types/src/components/WalkthroughView/index.d.ts +3 -0
  198. package/dist/types/src/components/WalkthroughView/index.d.ts.map +1 -0
  199. package/dist/types/src/components/index.d.ts +5 -8
  200. package/dist/types/src/components/index.d.ts.map +1 -1
  201. package/dist/types/src/constants.d.ts +7 -0
  202. package/dist/types/src/constants.d.ts.map +1 -0
  203. package/dist/types/src/containers/ImportPullRequestDialog/ImportPullRequestDialog.d.ts +6 -0
  204. package/dist/types/src/containers/ImportPullRequestDialog/ImportPullRequestDialog.d.ts.map +1 -0
  205. package/dist/types/src/containers/ImportPullRequestDialog/index.d.ts +3 -0
  206. package/dist/types/src/containers/ImportPullRequestDialog/index.d.ts.map +1 -0
  207. package/dist/types/src/containers/PullRequestArticle/PullRequestArticle.d.ts +15 -0
  208. package/dist/types/src/containers/PullRequestArticle/PullRequestArticle.d.ts.map +1 -0
  209. package/dist/types/src/containers/PullRequestArticle/failure.d.ts +10 -0
  210. package/dist/types/src/containers/PullRequestArticle/failure.d.ts.map +1 -0
  211. package/dist/types/src/containers/PullRequestArticle/failure.test.d.ts +2 -0
  212. package/dist/types/src/containers/PullRequestArticle/failure.test.d.ts.map +1 -0
  213. package/dist/types/src/containers/PullRequestArticle/index.d.ts +2 -0
  214. package/dist/types/src/containers/PullRequestArticle/index.d.ts.map +1 -0
  215. package/dist/types/src/containers/PullRequestCardMenu/PullRequestCardMenu.d.ts +14 -0
  216. package/dist/types/src/containers/PullRequestCardMenu/PullRequestCardMenu.d.ts.map +1 -0
  217. package/dist/types/src/containers/PullRequestCardMenu/index.d.ts +2 -0
  218. package/dist/types/src/containers/PullRequestCardMenu/index.d.ts.map +1 -0
  219. package/dist/types/src/containers/PullRequestsArticle/PullRequestsArticle.d.ts +13 -0
  220. package/dist/types/src/containers/PullRequestsArticle/PullRequestsArticle.d.ts.map +1 -0
  221. package/dist/types/src/containers/PullRequestsArticle/arrange.d.ts +44 -0
  222. package/dist/types/src/containers/PullRequestsArticle/arrange.d.ts.map +1 -0
  223. package/dist/types/src/containers/PullRequestsArticle/arrange.test.d.ts +2 -0
  224. package/dist/types/src/containers/PullRequestsArticle/arrange.test.d.ts.map +1 -0
  225. package/dist/types/src/containers/PullRequestsArticle/format.d.ts +3 -0
  226. package/dist/types/src/containers/PullRequestsArticle/format.d.ts.map +1 -0
  227. package/dist/types/src/containers/PullRequestsArticle/index.d.ts +2 -0
  228. package/dist/types/src/containers/PullRequestsArticle/index.d.ts.map +1 -0
  229. package/dist/types/src/containers/WalkthroughArticle/WalkthroughArticle.d.ts +13 -0
  230. package/dist/types/src/containers/WalkthroughArticle/WalkthroughArticle.d.ts.map +1 -0
  231. package/dist/types/src/containers/WalkthroughArticle/index.d.ts +2 -0
  232. package/dist/types/src/containers/WalkthroughArticle/index.d.ts.map +1 -0
  233. package/dist/types/src/containers/index.d.ts +7 -0
  234. package/dist/types/src/containers/index.d.ts.map +1 -0
  235. package/dist/types/src/errors.d.ts +157 -0
  236. package/dist/types/src/errors.d.ts.map +1 -0
  237. package/dist/types/src/extensions/index.d.ts +3 -0
  238. package/dist/types/src/extensions/index.d.ts.map +1 -0
  239. package/dist/types/src/extensions/links.d.ts +21 -0
  240. package/dist/types/src/extensions/links.d.ts.map +1 -0
  241. package/dist/types/src/extensions/links.test.d.ts +2 -0
  242. package/dist/types/src/extensions/links.test.d.ts.map +1 -0
  243. package/dist/types/src/extensions/references.d.ts +23 -0
  244. package/dist/types/src/extensions/references.d.ts.map +1 -0
  245. package/dist/types/src/extensions/references.test.d.ts +2 -0
  246. package/dist/types/src/extensions/references.test.d.ts.map +1 -0
  247. package/dist/types/src/github-link.d.ts +29 -0
  248. package/dist/types/src/github-link.d.ts.map +1 -0
  249. package/dist/types/src/hooks/index.d.ts +5 -2
  250. package/dist/types/src/hooks/index.d.ts.map +1 -1
  251. package/dist/types/src/hooks/useOpenObject.d.ts +9 -0
  252. package/dist/types/src/hooks/useOpenObject.d.ts.map +1 -0
  253. package/dist/types/src/hooks/usePullRequestChecks.d.ts +10 -0
  254. package/dist/types/src/hooks/usePullRequestChecks.d.ts.map +1 -0
  255. package/dist/types/src/hooks/usePullRequestDiff.d.ts +12 -0
  256. package/dist/types/src/hooks/usePullRequestDiff.d.ts.map +1 -0
  257. package/dist/types/src/hooks/usePullRequestFiles.d.ts +22 -0
  258. package/dist/types/src/hooks/usePullRequestFiles.d.ts.map +1 -0
  259. package/dist/types/src/hooks/useSyncPullRequest.d.ts +10 -0
  260. package/dist/types/src/hooks/useSyncPullRequest.d.ts.map +1 -0
  261. package/dist/types/src/index.d.ts +3 -3
  262. package/dist/types/src/index.d.ts.map +1 -1
  263. package/dist/types/src/meta.d.ts +34 -11
  264. package/dist/types/src/meta.d.ts.map +1 -1
  265. package/dist/types/src/operations/add-pull-request-comment.d.ts +5 -0
  266. package/dist/types/src/operations/add-pull-request-comment.d.ts.map +1 -0
  267. package/dist/types/src/operations/add-pull-request-review-comment.d.ts +5 -0
  268. package/dist/types/src/operations/add-pull-request-review-comment.d.ts.map +1 -0
  269. package/dist/types/src/operations/generate-walkthrough.d.ts +11 -0
  270. package/dist/types/src/operations/generate-walkthrough.d.ts.map +1 -0
  271. package/dist/types/src/operations/get-pull-request-diff.d.ts +5 -0
  272. package/dist/types/src/operations/get-pull-request-diff.d.ts.map +1 -0
  273. package/dist/types/src/operations/get-pull-request-status.d.ts +5 -0
  274. package/dist/types/src/operations/get-pull-request-status.d.ts.map +1 -0
  275. package/dist/types/src/operations/get-repositories.d.ts +13 -0
  276. package/dist/types/src/operations/get-repositories.d.ts.map +1 -0
  277. package/dist/types/src/operations/import-pull-request-from-snapshot.d.ts +12 -0
  278. package/dist/types/src/operations/import-pull-request-from-snapshot.d.ts.map +1 -0
  279. package/dist/types/src/operations/import-pull-request.d.ts +63 -0
  280. package/dist/types/src/operations/import-pull-request.d.ts.map +1 -0
  281. package/dist/types/src/operations/import-pull-request.test.d.ts +2 -0
  282. package/dist/types/src/operations/import-pull-request.test.d.ts.map +1 -0
  283. package/dist/types/src/operations/index.d.ts +3 -0
  284. package/dist/types/src/operations/index.d.ts.map +1 -0
  285. package/dist/types/src/operations/materialize-target.d.ts +12 -0
  286. package/dist/types/src/operations/materialize-target.d.ts.map +1 -0
  287. package/dist/types/src/operations/pull-request.d.ts +48 -0
  288. package/dist/types/src/operations/pull-request.d.ts.map +1 -0
  289. package/dist/types/src/operations/pull-request.test.d.ts +2 -0
  290. package/dist/types/src/operations/pull-request.test.d.ts.map +1 -0
  291. package/dist/types/src/operations/submit-pull-request-approval.d.ts +5 -0
  292. package/dist/types/src/operations/submit-pull-request-approval.d.ts.map +1 -0
  293. package/dist/types/src/operations/sync-pull-request.d.ts +5 -0
  294. package/dist/types/src/operations/sync-pull-request.d.ts.map +1 -0
  295. package/dist/types/src/operations/sync.d.ts +123 -0
  296. package/dist/types/src/operations/sync.d.ts.map +1 -0
  297. package/dist/types/src/operations/sync.test.d.ts +2 -0
  298. package/dist/types/src/operations/sync.test.d.ts.map +1 -0
  299. package/dist/types/src/plugin.d.ts +4 -0
  300. package/dist/types/src/plugin.d.ts.map +1 -0
  301. package/dist/types/src/plugin.test.d.ts +2 -0
  302. package/dist/types/src/plugin.test.d.ts.map +1 -0
  303. package/dist/types/src/pull-request-body.d.ts +37 -0
  304. package/dist/types/src/pull-request-body.d.ts.map +1 -0
  305. package/dist/types/src/pull-request-body.test.d.ts +2 -0
  306. package/dist/types/src/pull-request-body.test.d.ts.map +1 -0
  307. package/dist/types/src/pull-request.d.ts +28 -0
  308. package/dist/types/src/pull-request.d.ts.map +1 -0
  309. package/dist/types/src/pull-request.test.d.ts +2 -0
  310. package/dist/types/src/pull-request.test.d.ts.map +1 -0
  311. package/dist/types/src/services/github-api.d.ts +332 -0
  312. package/dist/types/src/services/github-api.d.ts.map +1 -0
  313. package/dist/types/src/services/index.d.ts +2 -0
  314. package/dist/types/src/services/index.d.ts.map +1 -0
  315. package/dist/types/src/skills/GitHubSkill.d.ts +12 -0
  316. package/dist/types/src/skills/GitHubSkill.d.ts.map +1 -0
  317. package/dist/types/src/skills/index.d.ts +2 -0
  318. package/dist/types/src/skills/index.d.ts.map +1 -0
  319. package/dist/types/src/stories/Generate.stories.d.ts +27 -0
  320. package/dist/types/src/stories/Generate.stories.d.ts.map +1 -0
  321. package/dist/types/src/stories/Links.stories.d.ts +23 -0
  322. package/dist/types/src/stories/Links.stories.d.ts.map +1 -0
  323. package/dist/types/src/stories/PullRequestArticle.stories.d.ts +359 -0
  324. package/dist/types/src/stories/PullRequestArticle.stories.d.ts.map +1 -0
  325. package/dist/types/src/stories/PullRequestFiles.stories.d.ts +365 -0
  326. package/dist/types/src/stories/PullRequestFiles.stories.d.ts.map +1 -0
  327. package/dist/types/src/stories/PullRequestOverview.stories.d.ts +367 -0
  328. package/dist/types/src/stories/PullRequestOverview.stories.d.ts.map +1 -0
  329. package/dist/types/src/stories/PullRequestsArticle.stories.d.ts +357 -0
  330. package/dist/types/src/stories/PullRequestsArticle.stories.d.ts.map +1 -0
  331. package/dist/types/src/stories/Walkthrough.stories.d.ts +380 -0
  332. package/dist/types/src/stories/Walkthrough.stories.d.ts.map +1 -0
  333. package/dist/types/src/stories/github.d.ts +23 -0
  334. package/dist/types/src/stories/github.d.ts.map +1 -0
  335. package/dist/types/src/stories/github.test.d.ts +2 -0
  336. package/dist/types/src/stories/github.test.d.ts.map +1 -0
  337. package/dist/types/src/stories/walkthrough-fixture.d.ts +8 -0
  338. package/dist/types/src/stories/walkthrough-fixture.d.ts.map +1 -0
  339. package/dist/types/src/testing/fixtures.d.ts +14 -0
  340. package/dist/types/src/testing/fixtures.d.ts.map +1 -0
  341. package/dist/types/src/testing/index.d.ts +4 -0
  342. package/dist/types/src/testing/index.d.ts.map +1 -0
  343. package/dist/types/src/testing/plugin.d.ts +4 -0
  344. package/dist/types/src/testing/plugin.d.ts.map +1 -0
  345. package/dist/types/src/testing/pull-request-13348.d.ts +6 -0
  346. package/dist/types/src/testing/pull-request-13348.d.ts.map +1 -0
  347. package/dist/types/src/translations.d.ts +339 -53
  348. package/dist/types/src/translations.d.ts.map +1 -1
  349. package/dist/types/src/types/GitHubCapabilities.d.ts +13 -0
  350. package/dist/types/src/types/GitHubCapabilities.d.ts.map +1 -0
  351. package/dist/types/src/types/GitHubEvents.d.ts +8 -0
  352. package/dist/types/src/types/GitHubEvents.d.ts.map +1 -0
  353. package/dist/types/src/types/GitHubOperation.d.ts +270 -0
  354. package/dist/types/src/types/GitHubOperation.d.ts.map +1 -0
  355. package/dist/types/src/types/PullRequestsView.d.ts +35 -0
  356. package/dist/types/src/types/PullRequestsView.d.ts.map +1 -0
  357. package/dist/types/src/types/Walkthrough.d.ts +31 -0
  358. package/dist/types/src/types/Walkthrough.d.ts.map +1 -0
  359. package/dist/types/src/types/Walkthrough.test.d.ts +2 -0
  360. package/dist/types/src/types/Walkthrough.test.d.ts.map +1 -0
  361. package/dist/types/src/types/index.d.ts +5 -0
  362. package/dist/types/src/types/index.d.ts.map +1 -0
  363. package/dist/types/src/walkthrough/fill.d.ts +28 -0
  364. package/dist/types/src/walkthrough/fill.d.ts.map +1 -0
  365. package/dist/types/src/walkthrough/fill.test.d.ts +2 -0
  366. package/dist/types/src/walkthrough/fill.test.d.ts.map +1 -0
  367. package/dist/types/src/walkthrough/generate.d.ts +67 -0
  368. package/dist/types/src/walkthrough/generate.d.ts.map +1 -0
  369. package/dist/types/src/walkthrough/generate.test.d.ts +2 -0
  370. package/dist/types/src/walkthrough/generate.test.d.ts.map +1 -0
  371. package/dist/types/src/walkthrough/generated.d.ts +20 -0
  372. package/dist/types/src/walkthrough/generated.d.ts.map +1 -0
  373. package/dist/types/src/walkthrough/generated.test.d.ts +2 -0
  374. package/dist/types/src/walkthrough/generated.test.d.ts.map +1 -0
  375. package/dist/types/src/walkthrough/headings.d.ts +8 -0
  376. package/dist/types/src/walkthrough/headings.d.ts.map +1 -0
  377. package/dist/types/src/walkthrough/headings.test.d.ts +2 -0
  378. package/dist/types/src/walkthrough/headings.test.d.ts.map +1 -0
  379. package/dist/types/src/walkthrough/index.d.ts +9 -0
  380. package/dist/types/src/walkthrough/index.d.ts.map +1 -0
  381. package/dist/types/src/walkthrough/patch.d.ts +48 -0
  382. package/dist/types/src/walkthrough/patch.d.ts.map +1 -0
  383. package/dist/types/src/walkthrough/plan.d.ts +55 -0
  384. package/dist/types/src/walkthrough/plan.d.ts.map +1 -0
  385. package/dist/types/src/walkthrough/plan.test.d.ts +2 -0
  386. package/dist/types/src/walkthrough/plan.test.d.ts.map +1 -0
  387. package/dist/types/src/walkthrough/prompt.d.ts +33 -0
  388. package/dist/types/src/walkthrough/prompt.d.ts.map +1 -0
  389. package/dist/types/src/walkthrough/prompt.test.d.ts +2 -0
  390. package/dist/types/src/walkthrough/prompt.test.d.ts.map +1 -0
  391. package/dist/types/src/walkthrough/score.d.ts +43 -0
  392. package/dist/types/src/walkthrough/score.d.ts.map +1 -0
  393. package/dist/types/src/walkthrough/score.test.d.ts +2 -0
  394. package/dist/types/src/walkthrough/score.test.d.ts.map +1 -0
  395. package/dist/types/tsconfig.tsbuildinfo +1 -0
  396. package/dx.config.ts +39 -0
  397. package/package.json +167 -48
  398. package/src/Extensions.ts +7 -0
  399. package/src/GitHubPlugin.ts +15 -0
  400. package/src/GitHubPlugin.workerd.test.ts +23 -0
  401. package/src/approval.test.ts +40 -0
  402. package/src/approval.ts +39 -0
  403. package/src/capabilities/app-graph-builder.ts +47 -0
  404. package/src/capabilities/connector.ts +95 -0
  405. package/src/capabilities/gen/browser.ts +82 -0
  406. package/src/capabilities/gen/node.ts +43 -0
  407. package/src/capabilities/gen/tauri.ts +82 -0
  408. package/src/capabilities/gen/workerd.ts +43 -0
  409. package/src/capabilities/index.ts +71 -0
  410. package/src/capabilities/link-resolver.ts +137 -0
  411. package/src/capabilities/markdown-extension.ts +146 -0
  412. package/src/capabilities/operation-handler.ts +16 -0
  413. package/src/capabilities/page-action.ts +32 -0
  414. package/src/capabilities/react-surface.ts +98 -0
  415. package/src/capabilities/schema.ts +16 -0
  416. package/src/capabilities/skill-definition.ts +14 -0
  417. package/src/cards/GitHubCard.stories.tsx +165 -0
  418. package/src/cards/GitHubCard.tsx +93 -0
  419. package/src/cards/PullRequestCard.tsx +23 -0
  420. package/src/cards/index.ts +6 -0
  421. package/src/components/CommentComposer/CommentComposer.tsx +109 -0
  422. package/src/components/CommentComposer/index.ts +5 -0
  423. package/src/components/PullRequestFiles/DiffStat.tsx +15 -0
  424. package/src/components/PullRequestFiles/FileTree.tsx +102 -0
  425. package/src/components/PullRequestFiles/PullRequestFiles.tsx +87 -0
  426. package/src/components/PullRequestFiles/files.test.ts +59 -0
  427. package/src/components/PullRequestFiles/files.ts +115 -0
  428. package/src/components/PullRequestFiles/index.ts +8 -0
  429. package/src/components/PullRequestOverview/ArtifactPill.tsx +82 -0
  430. package/src/components/PullRequestOverview/CheckRunList.tsx +120 -0
  431. package/src/components/PullRequestOverview/PullRequestDetails.tsx +15 -0
  432. package/src/components/PullRequestOverview/PullRequestOverview.tsx +110 -0
  433. package/src/components/PullRequestOverview/RelatedCards.tsx +147 -0
  434. package/src/components/PullRequestOverview/index.ts +9 -0
  435. package/src/components/PullRequestStatus/PullRequestStatus.tsx +81 -0
  436. package/src/components/PullRequestStatus/index.ts +5 -0
  437. package/src/components/WalkthroughView/WalkthroughView.tsx +62 -0
  438. package/src/components/WalkthroughView/extensions.ts +53 -0
  439. package/src/components/WalkthroughView/index.ts +6 -0
  440. package/src/components/index.ts +6 -9
  441. package/src/constants.ts +12 -0
  442. package/src/containers/ImportPullRequestDialog/ImportPullRequestDialog.tsx +160 -0
  443. package/src/containers/ImportPullRequestDialog/index.ts +7 -0
  444. package/src/containers/PullRequestArticle/PullRequestArticle.tsx +573 -0
  445. package/src/containers/PullRequestArticle/failure.test.ts +42 -0
  446. package/src/containers/PullRequestArticle/failure.ts +16 -0
  447. package/src/containers/PullRequestArticle/index.ts +5 -0
  448. package/src/containers/PullRequestCardMenu/PullRequestCardMenu.tsx +134 -0
  449. package/src/containers/PullRequestCardMenu/index.ts +5 -0
  450. package/src/containers/PullRequestsArticle/PullRequestsArticle.tsx +361 -0
  451. package/src/containers/PullRequestsArticle/arrange.test.ts +122 -0
  452. package/src/containers/PullRequestsArticle/arrange.ts +245 -0
  453. package/src/containers/PullRequestsArticle/format.ts +31 -0
  454. package/src/containers/PullRequestsArticle/index.ts +5 -0
  455. package/src/containers/WalkthroughArticle/WalkthroughArticle.tsx +31 -0
  456. package/src/containers/WalkthroughArticle/index.ts +5 -0
  457. package/src/containers/index.ts +11 -0
  458. package/src/errors.ts +61 -0
  459. package/src/extensions/index.ts +6 -0
  460. package/src/extensions/links.test.ts +133 -0
  461. package/src/extensions/links.ts +91 -0
  462. package/src/extensions/references.test.ts +83 -0
  463. package/src/extensions/references.ts +100 -0
  464. package/src/github-link.ts +70 -0
  465. package/src/hooks/index.ts +6 -3
  466. package/src/hooks/useOpenObject.ts +48 -0
  467. package/src/hooks/usePullRequestChecks.ts +81 -0
  468. package/src/hooks/usePullRequestDiff.ts +57 -0
  469. package/src/hooks/usePullRequestFiles.ts +98 -0
  470. package/src/hooks/useSyncPullRequest.ts +51 -0
  471. package/src/index.ts +4 -6
  472. package/src/meta.ts +8 -13
  473. package/src/operations/add-pull-request-comment.ts +31 -0
  474. package/src/operations/add-pull-request-review-comment.ts +32 -0
  475. package/src/operations/generate-walkthrough.ts +124 -0
  476. package/src/operations/get-pull-request-diff.ts +37 -0
  477. package/src/operations/get-pull-request-status.ts +44 -0
  478. package/src/operations/get-repositories.ts +53 -0
  479. package/src/operations/import-pull-request-from-snapshot.ts +48 -0
  480. package/src/operations/import-pull-request.test.ts +151 -0
  481. package/src/operations/import-pull-request.ts +141 -0
  482. package/src/operations/index.ts +29 -0
  483. package/src/operations/materialize-target.ts +60 -0
  484. package/src/operations/pull-request.test.ts +120 -0
  485. package/src/operations/pull-request.ts +141 -0
  486. package/src/operations/submit-pull-request-approval.ts +41 -0
  487. package/src/operations/sync-pull-request.ts +37 -0
  488. package/src/operations/sync.test.ts +453 -0
  489. package/src/operations/sync.ts +807 -0
  490. package/src/plugin.test.ts +40 -0
  491. package/src/plugin.ts +37 -0
  492. package/src/pull-request-body.test.ts +61 -0
  493. package/src/pull-request-body.ts +144 -0
  494. package/src/pull-request.test.ts +67 -0
  495. package/src/pull-request.ts +80 -0
  496. package/src/services/github-api.ts +735 -0
  497. package/src/services/index.ts +5 -0
  498. package/src/skills/GitHubSkill.ts +46 -0
  499. package/src/skills/index.ts +5 -0
  500. package/src/stories/Generate.stories.tsx +152 -0
  501. package/src/stories/Links.stories.tsx +153 -0
  502. package/src/stories/PullRequestArticle.stories.tsx +107 -0
  503. package/src/stories/PullRequestFiles.stories.tsx +69 -0
  504. package/src/stories/PullRequestOverview.stories.tsx +113 -0
  505. package/src/stories/PullRequestsArticle.stories.tsx +170 -0
  506. package/src/stories/Walkthrough.stories.tsx +110 -0
  507. package/src/stories/github.test.ts +65 -0
  508. package/src/stories/github.ts +70 -0
  509. package/src/stories/walkthrough-fixture.ts +115 -0
  510. package/src/testing/fixtures.ts +99 -0
  511. package/src/testing/index.ts +7 -0
  512. package/src/testing/plugin.ts +25 -0
  513. package/src/testing/pull-request-13348.ts +104 -0
  514. package/src/testing/pull-request-13363.patch +2981 -0
  515. package/src/translations.ts +135 -63
  516. package/src/types/GitHubCapabilities.ts +27 -0
  517. package/src/types/GitHubEvents.ts +16 -0
  518. package/src/types/GitHubOperation.ts +371 -0
  519. package/src/types/PullRequestsView.ts +45 -0
  520. package/src/types/Walkthrough.test.ts +75 -0
  521. package/src/types/Walkthrough.ts +66 -0
  522. package/src/types/index.ts +8 -0
  523. package/src/vite-env.d.ts +15 -0
  524. package/src/walkthrough/fill.test.ts +337 -0
  525. package/src/walkthrough/fill.ts +246 -0
  526. package/src/walkthrough/generate.test.ts +219 -0
  527. package/src/walkthrough/generate.ts +248 -0
  528. package/src/walkthrough/generated.test.ts +70 -0
  529. package/src/walkthrough/generated.ts +70 -0
  530. package/src/walkthrough/headings.test.ts +40 -0
  531. package/src/walkthrough/headings.ts +39 -0
  532. package/src/walkthrough/index.ts +12 -0
  533. package/src/walkthrough/patch.ts +154 -0
  534. package/src/walkthrough/plan.test.ts +178 -0
  535. package/src/walkthrough/plan.ts +251 -0
  536. package/src/walkthrough/prompt.test.ts +100 -0
  537. package/src/walkthrough/prompt.ts +147 -0
  538. package/src/walkthrough/score.test.ts +272 -0
  539. package/src/walkthrough/score.ts +430 -0
  540. package/README.md +0 -15
  541. package/dist/lib/browser/chunk-S4MPSBA5.mjs +0 -21
  542. package/dist/lib/browser/chunk-S4MPSBA5.mjs.map +0 -7
  543. package/dist/lib/browser/index.css +0 -7
  544. package/dist/lib/browser/index.css.map +0 -7
  545. package/dist/lib/browser/index.mjs +0 -1535
  546. package/dist/lib/browser/index.mjs.map +0 -7
  547. package/dist/lib/browser/meta.json +0 -1
  548. package/dist/lib/browser/meta.mjs +0 -11
  549. package/dist/lib/browser/meta.mjs.map +0 -7
  550. package/dist/types/src/GithubPlugin.d.ts +0 -4
  551. package/dist/types/src/GithubPlugin.d.ts.map +0 -1
  552. package/dist/types/src/components/EmbeddedMain/EmbeddedMain.d.ts +0 -4
  553. package/dist/types/src/components/EmbeddedMain/EmbeddedMain.d.ts.map +0 -1
  554. package/dist/types/src/components/EmbeddedMain/GfmPreview.d.ts +0 -9
  555. package/dist/types/src/components/EmbeddedMain/GfmPreview.d.ts.map +0 -1
  556. package/dist/types/src/components/EmbeddedMain/index.d.ts +0 -2
  557. package/dist/types/src/components/EmbeddedMain/index.d.ts.map +0 -1
  558. package/dist/types/src/components/ExportDialog.d.ts +0 -8
  559. package/dist/types/src/components/ExportDialog.d.ts.map +0 -1
  560. package/dist/types/src/components/GithubApiProviders/GitHubSettings.d.ts +0 -3
  561. package/dist/types/src/components/GithubApiProviders/GitHubSettings.d.ts.map +0 -1
  562. package/dist/types/src/components/GithubApiProviders/OctokitProvider.d.ts +0 -15
  563. package/dist/types/src/components/GithubApiProviders/OctokitProvider.d.ts.map +0 -1
  564. package/dist/types/src/components/GithubApiProviders/index.d.ts +0 -3
  565. package/dist/types/src/components/GithubApiProviders/index.d.ts.map +0 -1
  566. package/dist/types/src/components/GithubEchoResolverProviders/DocumentTreeItem.d.ts +0 -6
  567. package/dist/types/src/components/GithubEchoResolverProviders/DocumentTreeItem.d.ts.map +0 -1
  568. package/dist/types/src/components/GithubEchoResolverProviders/ResolverContext.d.ts +0 -7
  569. package/dist/types/src/components/GithubEchoResolverProviders/ResolverContext.d.ts.map +0 -1
  570. package/dist/types/src/components/GithubEchoResolverProviders/ResolverDialog.d.ts +0 -6
  571. package/dist/types/src/components/GithubEchoResolverProviders/ResolverDialog.d.ts.map +0 -1
  572. package/dist/types/src/components/GithubEchoResolverProviders/ResolverProps.d.ts +0 -16
  573. package/dist/types/src/components/GithubEchoResolverProviders/ResolverProps.d.ts.map +0 -1
  574. package/dist/types/src/components/GithubEchoResolverProviders/ResolverTree.d.ts +0 -3
  575. package/dist/types/src/components/GithubEchoResolverProviders/ResolverTree.d.ts.map +0 -1
  576. package/dist/types/src/components/GithubEchoResolverProviders/SpacePickerTreeItem.d.ts +0 -11
  577. package/dist/types/src/components/GithubEchoResolverProviders/SpacePickerTreeItem.d.ts.map +0 -1
  578. package/dist/types/src/components/GithubEchoResolverProviders/index.d.ts +0 -3
  579. package/dist/types/src/components/GithubEchoResolverProviders/index.d.ts.map +0 -1
  580. package/dist/types/src/components/GithubEchoResolverProviders/spaceResolvers.d.ts +0 -6
  581. package/dist/types/src/components/GithubEchoResolverProviders/spaceResolvers.d.ts.map +0 -1
  582. package/dist/types/src/components/ImportDialog.d.ts +0 -7
  583. package/dist/types/src/components/ImportDialog.d.ts.map +0 -1
  584. package/dist/types/src/components/Issue.d.ts +0 -5
  585. package/dist/types/src/components/Issue.d.ts.map +0 -1
  586. package/dist/types/src/components/Loading/Loading.d.ts +0 -15
  587. package/dist/types/src/components/Loading/Loading.d.ts.map +0 -1
  588. package/dist/types/src/components/Loading/Loading.stories.d.ts +0 -40
  589. package/dist/types/src/components/Loading/Loading.stories.d.ts.map +0 -1
  590. package/dist/types/src/components/Loading/index.d.ts +0 -2
  591. package/dist/types/src/components/Loading/index.d.ts.map +0 -1
  592. package/dist/types/src/components/MarkdownActions.d.ts +0 -7
  593. package/dist/types/src/components/MarkdownActions.d.ts.map +0 -1
  594. package/dist/types/src/components/UrlDialog.d.ts +0 -6
  595. package/dist/types/src/components/UrlDialog.d.ts.map +0 -1
  596. package/dist/types/src/hooks/useDocGhId.d.ts +0 -6
  597. package/dist/types/src/hooks/useDocGhId.d.ts.map +0 -1
  598. package/dist/types/src/hooks/useGhIdFromUrl.d.ts +0 -2
  599. package/dist/types/src/hooks/useGhIdFromUrl.d.ts.map +0 -1
  600. package/dist/types/src/types.d.ts +0 -30
  601. package/dist/types/src/types.d.ts.map +0 -1
  602. package/src/GithubPlugin.tsx +0 -127
  603. package/src/components/EmbeddedMain/EmbeddedMain.tsx +0 -294
  604. package/src/components/EmbeddedMain/GfmPreview.tsx +0 -110
  605. package/src/components/EmbeddedMain/embedded.css +0 -3
  606. package/src/components/EmbeddedMain/index.ts +0 -5
  607. package/src/components/ExportDialog.tsx +0 -157
  608. package/src/components/GithubApiProviders/GitHubSettings.tsx +0 -72
  609. package/src/components/GithubApiProviders/OctokitProvider.tsx +0 -60
  610. package/src/components/GithubApiProviders/index.ts +0 -6
  611. package/src/components/GithubEchoResolverProviders/DocumentTreeItem.tsx +0 -26
  612. package/src/components/GithubEchoResolverProviders/ResolverContext.tsx +0 -137
  613. package/src/components/GithubEchoResolverProviders/ResolverDialog.tsx +0 -34
  614. package/src/components/GithubEchoResolverProviders/ResolverProps.ts +0 -23
  615. package/src/components/GithubEchoResolverProviders/ResolverTree.tsx +0 -86
  616. package/src/components/GithubEchoResolverProviders/SpacePickerTreeItem.tsx +0 -105
  617. package/src/components/GithubEchoResolverProviders/index.ts +0 -6
  618. package/src/components/GithubEchoResolverProviders/spaceResolvers.ts +0 -86
  619. package/src/components/ImportDialog.tsx +0 -72
  620. package/src/components/Issue.tsx +0 -62
  621. package/src/components/Loading/Loading.stories.tsx +0 -32
  622. package/src/components/Loading/Loading.tsx +0 -70
  623. package/src/components/Loading/index.ts +0 -5
  624. package/src/components/MarkdownActions.tsx +0 -136
  625. package/src/components/UrlDialog.tsx +0 -52
  626. package/src/hooks/useDocGhId.ts +0 -38
  627. package/src/hooks/useGhIdFromUrl.ts +0 -26
  628. package/src/types.ts +0 -51
@@ -0,0 +1,430 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { isGeneratedFile } from './generated.ts';
6
+ import { type PatchFile, parsePatch } from './patch.ts';
7
+
8
+ /**
9
+ * One graded dimension.
10
+ *
11
+ * `evidence` carries the offending excerpts rather than a count alone, because a score a human
12
+ * cannot attribute to a line is a number nobody acts on.
13
+ */
14
+ export type Dimension = {
15
+ name: string;
16
+ /** Clamped to [0, 1]; 1 is the behaviour the prompt asks for. */
17
+ score: number;
18
+ /** What the score was computed over, so a 0.9 on a two-sentence body is not read as a pass. */
19
+ sampled: number;
20
+ evidence: string[];
21
+ };
22
+
23
+ export type WalkthroughScore = {
24
+ correctness: Dimension[];
25
+ readability: Dimension[];
26
+ };
27
+
28
+ /** Words that mark generated prose rather than writing; see `.agents/skills/readable-prose`. */
29
+ export const SLOP_WORDS = [
30
+ 'additionally',
31
+ 'crucial',
32
+ 'delve',
33
+ 'enduring',
34
+ 'enhance',
35
+ 'fostering',
36
+ 'garner',
37
+ 'groundbreaking',
38
+ 'interplay',
39
+ 'intricate',
40
+ 'leverage',
41
+ 'pivotal',
42
+ 'robust',
43
+ 'seamless',
44
+ 'showcase',
45
+ 'tapestry',
46
+ 'testament',
47
+ 'underscore',
48
+ 'utilize',
49
+ 'vibrant',
50
+ ];
51
+
52
+ /** Fancy ways to say "is" or "has", which cost a reader a beat and say nothing. */
53
+ export const SLOP_PHRASES = [
54
+ 'serves as',
55
+ 'stands as',
56
+ 'boasts',
57
+ 'it is important to note',
58
+ 'in order to',
59
+ 'due to the fact that',
60
+ 'not just',
61
+ 'a wide range of',
62
+ 'plays a key role',
63
+ ];
64
+
65
+ /** Sentences longer than this force the reader to backtrack, so they are graded against. */
66
+ const MAX_SENTENCE_WORDS = 30;
67
+
68
+ /** A fence is worth roughly a paragraph; far less prose than this is a diff dump with headings. */
69
+ const MIN_WORDS_PER_FENCE = 25;
70
+
71
+ const clamp = (value: number): number => Math.min(1, Math.max(0, value));
72
+
73
+ /** A ratio over nothing is a pass by default, which would score an empty body perfect. */
74
+ const ratio = (good: number, total: number): number => (total === 0 ? 1 : clamp(good / total));
75
+
76
+ /** Body with every fenced block removed, so prose metrics never grade the diff itself. */
77
+ /**
78
+ * The document without its appendix.
79
+ *
80
+ * `fillWalkthrough` appends every unclaimed hunk under `## Also changed`, so a stored walkthrough
81
+ * contains a fence for every hunk in the patch. Counting those would score full coverage for a
82
+ * document that described nothing.
83
+ */
84
+ export const withoutAppendix = (body: string): string => body.split(/^## Also changed\s*$/m)[0];
85
+
86
+ /**
87
+ * A fenced block: opener, info line, body, and a closer of at least as many of the same marker with
88
+ * nothing but whitespace after it. Shared by {@link proseOf} and the fence reader so the two never
89
+ * disagree about where a block ends — ` ```text ` opens a block, it does not close one.
90
+ */
91
+ const FENCE = /^( {0,3})(`{3,}|~{3,})([^\n]*)\n([\s\S]*?)^[ \t]*\2\2*[ \t]*$/gm;
92
+
93
+ export const proseOf = (body: string): string => body.replace(new RegExp(FENCE.source, 'gm'), '');
94
+
95
+ const sentencesOf = (prose: string): string[] =>
96
+ prose
97
+ .replace(/^#+ .*$/gm, '') // Headings are not sentences and are allowed to be fragments.
98
+ .split(/(?<=[.!?])\s+/)
99
+ .map((sentence) => sentence.trim())
100
+ .filter((sentence) => sentence.length > 0);
101
+
102
+ const wordsOf = (text: string): string[] => text.split(/\s+/).filter((word) => /[a-z]/i.test(word));
103
+
104
+ /**
105
+ * Fences the model emitted, by path — the same shape {@link fillWalkthrough} reads, parsed again
106
+ * here so scoring an already-filled body and scoring raw model output give the same answer.
107
+ */
108
+ const fencesOf = (body: string): { file?: string; lines?: string; empty: boolean; contents: string }[] => {
109
+ const pattern = new RegExp(FENCE.source, 'gm');
110
+ const fences: { file?: string; lines?: string; empty: boolean; contents: string }[] = [];
111
+ let match: RegExpExecArray | null;
112
+ while ((match = pattern.exec(body))) {
113
+ const [, , , info, contents] = match;
114
+ if (!/^[ \t]*diff\b/.test(info)) {
115
+ continue;
116
+ }
117
+ const file = info.match(/\bfile=(?:"([^"]*)"|'([^']*)'|(\S+))/);
118
+ fences.push({
119
+ file: file?.[1] ?? file?.[2] ?? file?.[3],
120
+ lines: info.match(/\blines=(\S+)/)?.[1],
121
+ empty: contents.trim().length === 0,
122
+ contents,
123
+ });
124
+ }
125
+
126
+ return fences;
127
+ };
128
+
129
+ /**
130
+ * A `lines=` that names no hunk of the file it points at: inverted (`394-224`), or simply wrong.
131
+ *
132
+ * {@link fillWalkthrough} falls back to the whole file rather than emitting an empty chunk, so the
133
+ * reader sees code and never learns the prose was pointing somewhere else. Only the score says so.
134
+ */
135
+ const badRanges = (
136
+ fences: { file?: string; lines?: string }[],
137
+ files: Map<string, { hunks: { afterStart: number; afterEnd: number }[] }>,
138
+ ): string[] =>
139
+ fences.flatMap((fence) => {
140
+ const { file: path, lines } = fence;
141
+ const file = path ? files.get(path) : undefined;
142
+ if (!file || !lines) {
143
+ return [];
144
+ }
145
+ const named = `${path} lines=${lines}`;
146
+ const range = lines.match(/^(\d+)(?:\s*[-–]\s*(\d+))?$/);
147
+ if (!range) {
148
+ return [named];
149
+ }
150
+ const start = Number(range[1]);
151
+ const end = range[2] === undefined ? start : Number(range[2]);
152
+ const hit = end >= start && file.hunks.some((hunk) => hunk.afterStart <= end && hunk.afterEnd >= start);
153
+ return hit ? [] : [named];
154
+ });
155
+
156
+ /**
157
+ * Inline-code tokens in the prose that name something in the code: a path, an identifier, a
158
+ * constant. Grounding them in the patch is the cheapest hallucination check there is — a
159
+ * walkthrough that cites a symbol the change never touches is wrong in the way reviewers hate most.
160
+ */
161
+ const citationsOf = (prose: string): string[] => {
162
+ const cited = [...prose.matchAll(/`([^`\n]{2,80})`/g)].map((match) => match[1].trim());
163
+ // A prose word in backticks (`force`, `null`) is not a citation to check; a path, a call or a
164
+ // multi-word identifier is.
165
+ return cited.filter((token) => /[./]|[a-z][A-Z]|_|\(\)/.test(token));
166
+ };
167
+
168
+ /**
169
+ * Numbers the prose asserts: a timeout, an interval, a count. Each one is a factual claim about the
170
+ * system, and a model with no source for it invents a plausible value — the failure a reviewer is
171
+ * least able to catch, because the number reads as evidence.
172
+ */
173
+ const numbersOf = (prose: string): string[] =>
174
+ [...prose.replace(/`[^`\n]*`/g, '').matchAll(/(?<![\w.#])\d[\d_,.]*/g)]
175
+ // A sentence-final digit takes the full stop with it, and "5." grounds against nothing.
176
+ .map((match) => match[0].replace(/[.,]+$/, ''));
177
+
178
+ /**
179
+ * Numeric literals the patch contains, separators stripped and scaled by a thousand both ways.
180
+ *
181
+ * A constant reads `10_000` in the code and "10 seconds" in the prose, so a plain substring test
182
+ * calls a grounded number invented — which is the worst way for this dimension to be wrong, because
183
+ * it teaches the model to drop the detail that made the walkthrough worth reading.
184
+ */
185
+ const patchNumbers = (patch: string): Set<string> => {
186
+ const numbers = new Set<string>();
187
+ for (const match of patch.replace(/[_,]/g, '').matchAll(/\d+(?:\.\d+)?/g)) {
188
+ const value = Number(match[0]);
189
+ numbers.add(match[0]);
190
+ numbers.add(String(value));
191
+ numbers.add(String(value * 1000));
192
+ numbers.add(String(value / 1000));
193
+ }
194
+
195
+ return numbers;
196
+ };
197
+
198
+ /** A hunk header's trailing section text, without the `@@ -a,b +c,d @@` coordinates. */
199
+ const sectionOf = (header: string): string => header.replace(/^@@+[^@]*@@+/, '');
200
+
201
+ /** Everything the diff says, for grounding citations. Paths included, since prose cites them. */
202
+ const patchText = (patch: string): string =>
203
+ parsePatch(patch)
204
+ // The `@@` header's trailing section text is code context too, and a constant that sits there
205
+ // rather than on a context line would otherwise make its own value look invented. The range
206
+ // coordinates are dropped with it: a hunk starting at line 250 must not ground "250
207
+ // milliseconds" in the prose.
208
+ .map((file) => [file.path, ...file.hunks.flatMap((hunk) => [sectionOf(hunk.header), ...hunk.lines])].join('\n'))
209
+ .join('\n');
210
+
211
+ /**
212
+ * Hunks the document points at, over the hunks worth pointing at.
213
+ *
214
+ * Derived from the fences rather than from `fillWalkthrough`, so a stored walkthrough — whose
215
+ * fences already carry their code — scores the same as the model output it was built from.
216
+ */
217
+ const coverage = (
218
+ files: Map<string, PatchFile>,
219
+ fences: { file?: string; lines?: string }[],
220
+ ): { claimedHunks: number; signalHunks: number; uncoveredFiles: string[] } => {
221
+ const claimed = new Set<string>();
222
+ for (const fence of fences) {
223
+ const file = fence.file ? files.get(fence.file) : undefined;
224
+ if (!file || isGeneratedFile(file)) {
225
+ continue;
226
+ }
227
+ const range = fence.lines?.match(/^(\d+)(?:\s*[-–]\s*(\d+))?$/);
228
+ const start = range ? Number(range[1]) : undefined;
229
+ const end = range ? (range[2] === undefined ? Number(range[1]) : Number(range[2])) : undefined;
230
+ file.hunks.forEach((hunk, index) => {
231
+ // No range claims the whole file, which is what the fence renders.
232
+ const hit = start === undefined || end === undefined || (hunk.afterStart <= end && hunk.afterEnd >= start);
233
+ if (hit) {
234
+ claimed.add(`${file.path}#${index}`);
235
+ }
236
+ });
237
+ }
238
+
239
+ const signal = [...files.values()].filter((file) => !isGeneratedFile(file));
240
+ const uncoveredFiles = signal
241
+ .map((file) => ({
242
+ path: file.path,
243
+ missing: file.hunks.filter((_, index) => !claimed.has(`${file.path}#${index}`)).length,
244
+ }))
245
+ .filter((file) => file.missing > 0)
246
+ .map((file) => `${file.path} (${file.missing})`);
247
+
248
+ return {
249
+ claimedHunks: claimed.size,
250
+ signalHunks: signal.reduce((count, file) => count + file.hunks.length, 0),
251
+ uncoveredFiles,
252
+ };
253
+ };
254
+
255
+ /**
256
+ * Grades a walkthrough against the patch it describes.
257
+ *
258
+ * Deterministic on purpose: these are the checks that need no model, run on every generation, and
259
+ * bound what an LLM judge is then asked (see `docs/WALKTHROUGH-EVALS.md`). Correctness dimensions
260
+ * ask whether the document lies; readability dimensions ask what it costs to read.
261
+ */
262
+ export const scoreWalkthrough = (body: string, patch: string): WalkthroughScore => {
263
+ const narrated = withoutAppendix(body);
264
+ const fences = fencesOf(narrated);
265
+ const prose = proseOf(narrated);
266
+ const sentences = sentencesOf(prose);
267
+ const words = wordsOf(prose);
268
+ const files = new Map(parsePatch(patch).map((file) => [file.path, file]));
269
+ const paths = new Set(files.keys());
270
+ const code = patchText(patch);
271
+
272
+ const { claimedHunks, signalHunks, uncoveredFiles } = coverage(files, fences);
273
+ const unresolvedFences = fences.filter((fence) => !fence.file || !paths.has(fence.file));
274
+ // A filled fence carries its OWN file's lines; an invented one does not. Per file rather than
275
+ // over the whole patch, because a fence for one file carrying another's lines is exactly the
276
+ // transcription this grades — and it points the reader at the wrong code.
277
+ const linesByFile = new Map(
278
+ [...files].map(([path, file]) => [
279
+ path,
280
+ new Set(
281
+ file.hunks
282
+ .flatMap((hunk) => [hunk.header, ...hunk.lines])
283
+ .map((line) => line.trim())
284
+ .filter((line) => line.length > 0),
285
+ ),
286
+ ]),
287
+ );
288
+ const invented = fences.filter((fence) => {
289
+ if (fence.empty) {
290
+ return false;
291
+ }
292
+ const own = fence.file ? linesByFile.get(fence.file) : undefined;
293
+ const written = fence.contents
294
+ .split('\n')
295
+ .map((line) => line.trim())
296
+ .filter((line) => line.length > 0);
297
+ return !own || written.some((line) => !own.has(line));
298
+ });
299
+ const generatedFences = fences
300
+ .map((fence) => fence.file)
301
+ // Resolved through the patch so a binary the extension does not announce — caught only by
302
+ // git's own marker — is graded the same as a lockfile.
303
+ .filter((path): path is string => {
304
+ const file = path ? files.get(path) : undefined;
305
+ return !!file && isGeneratedFile(file);
306
+ });
307
+ const invalidRanges = badRanges(fences, files);
308
+ const citations = citationsOf(prose);
309
+ const ungrounded = citations.filter((token) => !code.includes(token.replace(/\(\)$/, '')));
310
+ const numbers = numbersOf(prose);
311
+ const grounded = patchNumbers(code);
312
+ const inventedNumbers = numbers.filter((number) => !grounded.has(number.replace(/[_,]/g, '')));
313
+ const longSentences = sentences.filter((sentence) => wordsOf(sentence).length > MAX_SENTENCE_WORDS);
314
+ const slopHits = [...SLOP_WORDS, ...SLOP_PHRASES].filter((term) =>
315
+ new RegExp(`\\b${term.replace(/ /g, '\\s+')}\\b`, 'i').test(prose),
316
+ );
317
+ // A bold label that only restates the line it introduces; the tell is the colon, not the bold.
318
+ const inlineHeaders = prose.match(/^\s*[-*]?\s*\*\*[^*\n]{1,40}(?::\*\*|\*\*:)/gm) ?? [];
319
+ const headings = prose.match(/^#{1,6} .*$/gm) ?? [];
320
+ const titleCased = headings.filter((heading) => {
321
+ const rest = heading.replace(/^#+ \S+ ?/, '');
322
+ // A capitalised word naming something in the code is the code's spelling, not title case:
323
+ // "Declare Database.Service on RemoveObjects" is a sentence, and flagging it teaches the model
324
+ // to rename the symbol.
325
+ const capitalised = wordsOf(rest).filter(
326
+ (word) => /^[A-Z][a-z]/.test(word) && !code.includes(word.replace(/[^\w.]/g, '')),
327
+ );
328
+ return capitalised.length >= 2;
329
+ });
330
+
331
+ return {
332
+ correctness: [
333
+ {
334
+ name: 'fences-resolve',
335
+ score: ratio(fences.length - unresolvedFences.length, fences.length),
336
+ sampled: fences.length,
337
+ evidence: unresolvedFences.map((fence) => fence.file ?? '(a fence with no file)'),
338
+ },
339
+ {
340
+ name: 'fences-authentic',
341
+ // Content inside a fence is either the patch's own lines, spliced in by `fillWalkthrough`,
342
+ // or the model transcribing a diff from memory — which gets lines subtly wrong and makes
343
+ // the reader see the change twice, once wrongly.
344
+ score: ratio(fences.length - invented.length, fences.length),
345
+ sampled: fences.length,
346
+ evidence: invented.map((fence) => fence.file ?? '(a fence with no file)'),
347
+ },
348
+ {
349
+ name: 'hunk-coverage',
350
+ score: ratio(claimedHunks, signalHunks),
351
+ sampled: signalHunks,
352
+ evidence: uncoveredFiles,
353
+ },
354
+ {
355
+ name: 'generated-ignored',
356
+ // A fence on a lockfile or a binary spends the reader's attention on machine output, and
357
+ // the appendix already names those files.
358
+ score: ratio(fences.length - generatedFences.length, fences.length),
359
+ sampled: fences.length,
360
+ evidence: generatedFences,
361
+ },
362
+ {
363
+ name: 'ranges-valid',
364
+ score: ratio(fences.length - invalidRanges.length, fences.length),
365
+ sampled: fences.length,
366
+ evidence: invalidRanges,
367
+ },
368
+ {
369
+ name: 'numbers-grounded',
370
+ score: ratio(numbers.length - inventedNumbers.length, numbers.length),
371
+ sampled: numbers.length,
372
+ evidence: inventedNumbers,
373
+ },
374
+ {
375
+ name: 'citations-grounded',
376
+ score: ratio(citations.length - ungrounded.length, citations.length),
377
+ sampled: citations.length,
378
+ evidence: ungrounded,
379
+ },
380
+ {
381
+ name: 'structure',
382
+ // One H1 naming the change, then sections: the shape the prompt asks for, and the shape the
383
+ // reader navigates by.
384
+ score:
385
+ (narrated.match(/^# .+$/gm)?.length === 1 ? 0.5 : 0) +
386
+ ((narrated.match(/^## .+$/gm)?.length ?? 0) > 0 ? 0.5 : 0),
387
+ sampled: 1,
388
+ evidence: headings.slice(0, 5),
389
+ },
390
+ ],
391
+ readability: [
392
+ {
393
+ name: 'sentence-length',
394
+ score: ratio(sentences.length - longSentences.length, sentences.length),
395
+ sampled: sentences.length,
396
+ evidence: longSentences.slice(0, 5),
397
+ },
398
+ {
399
+ name: 'slop-free',
400
+ // Scaled by length: one tell in a long document is a slip, five in a short one is the voice.
401
+ score: clamp(1 - (slopHits.length * 200) / Math.max(words.length, 200)),
402
+ sampled: words.length,
403
+ evidence: slopHits,
404
+ },
405
+ {
406
+ name: 'no-inline-headers',
407
+ score: clamp(1 - inlineHeaders.length / Math.max(headings.length + inlineHeaders.length, 1)),
408
+ sampled: inlineHeaders.length + headings.length,
409
+ evidence: inlineHeaders.slice(0, 5),
410
+ },
411
+ {
412
+ name: 'sentence-case-headings',
413
+ score: ratio(headings.length - titleCased.length, headings.length),
414
+ sampled: headings.length,
415
+ evidence: titleCased,
416
+ },
417
+ {
418
+ name: 'prose-density',
419
+ // Neither a diff dump with headings nor an essay: every fence earns a paragraph of why.
420
+ score: fences.length === 0 ? 0 : clamp(words.length / (fences.length * MIN_WORDS_PER_FENCE)),
421
+ sampled: fences.length,
422
+ evidence: [`${words.length} words of prose over ${fences.length} fences`],
423
+ },
424
+ ],
425
+ };
426
+ };
427
+
428
+ /** Mean of a set of dimensions, which is what an eval reports as the row's mark. */
429
+ export const meanScore = (dimensions: Dimension[]): number =>
430
+ dimensions.length === 0 ? 0 : dimensions.reduce((total, dimension) => total + dimension.score, 0) / dimensions.length;
package/README.md DELETED
@@ -1,15 +0,0 @@
1
- # @dxos/plugin-github
2
-
3
- Surface plugin for integrating with Github.
4
-
5
- ## DXOS Resources
6
-
7
- - [Website](https://dxos.org)
8
- - [Developer Documentation](https://docs.dxos.org)
9
- - Talk to us on [Discord](https://dxos.org/discord)
10
-
11
- ## Contributions
12
-
13
- Your ideas, issues, and code are most welcome. Please take a look at our [community code of conduct](https://github.com/dxos/dxos/blob/main/CODE_OF_CONDUCT.md), the [issue guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-issues), and the [PR contribution guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-prs).
14
-
15
- License: [MIT](./LICENSE) Copyright 2023 © DXOS
@@ -1,21 +0,0 @@
1
- // packages/plugins/experimental/plugin-github/src/meta.ts
2
- var GITHUB_PLUGIN = "dxos.org/plugin/github";
3
- var GITHUB_PLUGIN_SHORT_ID = "github";
4
- var meta_default = {
5
- id: GITHUB_PLUGIN,
6
- shortId: GITHUB_PLUGIN_SHORT_ID,
7
- name: "GitHub",
8
- description: "GitHub integration.",
9
- icon: "ph--github-logo--regular",
10
- source: "https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-github",
11
- tags: [
12
- "experimental"
13
- ]
14
- };
15
-
16
- export {
17
- GITHUB_PLUGIN,
18
- GITHUB_PLUGIN_SHORT_ID,
19
- meta_default
20
- };
21
- //# sourceMappingURL=chunk-S4MPSBA5.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const GITHUB_PLUGIN = 'dxos.org/plugin/github';\nexport const GITHUB_PLUGIN_SHORT_ID = 'github';\n\nexport default {\n id: GITHUB_PLUGIN,\n shortId: GITHUB_PLUGIN_SHORT_ID,\n name: 'GitHub',\n description: 'GitHub integration.',\n icon: 'ph--github-logo--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-github',\n tags: ['experimental'],\n} satisfies PluginMeta;\n"],
5
- "mappings": ";AAMO,IAAMA,gBAAgB;AACtB,IAAMC,yBAAyB;AAEtC,IAAA,eAAe;EACbC,IAAIF;EACJG,SAASF;EACTG,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;AACT;",
6
- "names": ["GITHUB_PLUGIN", "GITHUB_PLUGIN_SHORT_ID", "id", "shortId", "name", "description", "icon", "source", "tags"]
7
- }
@@ -1,7 +0,0 @@
1
- /* packages/plugins/experimental/plugin-github/src/components/EmbeddedMain/embedded.css */
2
- html,
3
- body,
4
- #root {
5
- height: 100%;
6
- }
7
- /*# sourceMappingURL=index.css.map */
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/EmbeddedMain/embedded.css"],
4
- "sourcesContent": ["html, body, #root {\n height: 100%;\n}\n"],
5
- "mappings": ";AAAA;AAAM;AAAM,CAAC;AACX,UAAQ;AACV;",
6
- "names": []
7
- }