@paysdoc/devplatform 1.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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +122 -0
  3. package/dist/git/bootstrapIdentity.d.ts +50 -0
  4. package/dist/git/bootstrapIdentity.d.ts.map +1 -0
  5. package/dist/git/bootstrapIdentity.js +72 -0
  6. package/dist/git/bootstrapIdentity.js.map +1 -0
  7. package/dist/git/branchOps.d.ts +27 -0
  8. package/dist/git/branchOps.d.ts.map +1 -0
  9. package/dist/git/branchOps.js +91 -0
  10. package/dist/git/branchOps.js.map +1 -0
  11. package/dist/git/claimOps.d.ts +40 -0
  12. package/dist/git/claimOps.d.ts.map +1 -0
  13. package/dist/git/claimOps.js +44 -0
  14. package/dist/git/claimOps.js.map +1 -0
  15. package/dist/git/commitOps.d.ts +35 -0
  16. package/dist/git/commitOps.d.ts.map +1 -0
  17. package/dist/git/commitOps.js +131 -0
  18. package/dist/git/commitOps.js.map +1 -0
  19. package/dist/git/consoleLogger.d.ts +8 -0
  20. package/dist/git/consoleLogger.d.ts.map +1 -0
  21. package/dist/git/consoleLogger.js +9 -0
  22. package/dist/git/consoleLogger.js.map +1 -0
  23. package/dist/git/gitContext.d.ts +150 -0
  24. package/dist/git/gitContext.d.ts.map +1 -0
  25. package/dist/git/gitContext.js +405 -0
  26. package/dist/git/gitContext.js.map +1 -0
  27. package/dist/git/gitReadOps.d.ts +33 -0
  28. package/dist/git/gitReadOps.d.ts.map +1 -0
  29. package/dist/git/gitReadOps.js +38 -0
  30. package/dist/git/gitReadOps.js.map +1 -0
  31. package/dist/git/index.d.ts +49 -0
  32. package/dist/git/index.d.ts.map +1 -0
  33. package/dist/git/index.js +44 -0
  34. package/dist/git/index.js.map +1 -0
  35. package/dist/git/processCleanup.d.ts +7 -0
  36. package/dist/git/processCleanup.d.ts.map +1 -0
  37. package/dist/git/processCleanup.js +45 -0
  38. package/dist/git/processCleanup.js.map +1 -0
  39. package/dist/git/remoteOps.d.ts +25 -0
  40. package/dist/git/remoteOps.d.ts.map +1 -0
  41. package/dist/git/remoteOps.js +30 -0
  42. package/dist/git/remoteOps.js.map +1 -0
  43. package/dist/git/repoWorkspace.d.ts +72 -0
  44. package/dist/git/repoWorkspace.d.ts.map +1 -0
  45. package/dist/git/repoWorkspace.js +85 -0
  46. package/dist/git/repoWorkspace.js.map +1 -0
  47. package/dist/git/types.d.ts +182 -0
  48. package/dist/git/types.d.ts.map +1 -0
  49. package/dist/git/types.js +10 -0
  50. package/dist/git/types.js.map +1 -0
  51. package/dist/git/workingDirectoryGuard.d.ts +39 -0
  52. package/dist/git/workingDirectoryGuard.d.ts.map +1 -0
  53. package/dist/git/workingDirectoryGuard.js +53 -0
  54. package/dist/git/workingDirectoryGuard.js.map +1 -0
  55. package/dist/git/worktreeCreateOps.d.ts +45 -0
  56. package/dist/git/worktreeCreateOps.d.ts.map +1 -0
  57. package/dist/git/worktreeCreateOps.js +208 -0
  58. package/dist/git/worktreeCreateOps.js.map +1 -0
  59. package/dist/git/worktreeProbeOps.d.ts +17 -0
  60. package/dist/git/worktreeProbeOps.d.ts.map +1 -0
  61. package/dist/git/worktreeProbeOps.js +66 -0
  62. package/dist/git/worktreeProbeOps.js.map +1 -0
  63. package/dist/git/worktreeQueryOps.d.ts +45 -0
  64. package/dist/git/worktreeQueryOps.d.ts.map +1 -0
  65. package/dist/git/worktreeQueryOps.js +129 -0
  66. package/dist/git/worktreeQueryOps.js.map +1 -0
  67. package/dist/git/worktreeRemoveOps.d.ts +27 -0
  68. package/dist/git/worktreeRemoveOps.d.ts.map +1 -0
  69. package/dist/git/worktreeRemoveOps.js +132 -0
  70. package/dist/git/worktreeRemoveOps.js.map +1 -0
  71. package/dist/git/worktreeResetOps.d.ts +18 -0
  72. package/dist/git/worktreeResetOps.d.ts.map +1 -0
  73. package/dist/git/worktreeResetOps.js +68 -0
  74. package/dist/git/worktreeResetOps.js.map +1 -0
  75. package/dist/index.d.ts +13 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +13 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/providers/forgeProviders.d.ts +72 -0
  80. package/dist/providers/forgeProviders.d.ts.map +1 -0
  81. package/dist/providers/forgeProviders.js +112 -0
  82. package/dist/providers/forgeProviders.js.map +1 -0
  83. package/dist/providers/github/appAuth.d.ts +70 -0
  84. package/dist/providers/github/appAuth.d.ts.map +1 -0
  85. package/dist/providers/github/appAuth.js +243 -0
  86. package/dist/providers/github/appAuth.js.map +1 -0
  87. package/dist/providers/github/cloneUrl.d.ts +12 -0
  88. package/dist/providers/github/cloneUrl.d.ts.map +1 -0
  89. package/dist/providers/github/cloneUrl.js +20 -0
  90. package/dist/providers/github/cloneUrl.js.map +1 -0
  91. package/dist/providers/github/commands/boardCommands.d.ts +22 -0
  92. package/dist/providers/github/commands/boardCommands.d.ts.map +1 -0
  93. package/dist/providers/github/commands/boardCommands.js +66 -0
  94. package/dist/providers/github/commands/boardCommands.js.map +1 -0
  95. package/dist/providers/github/commands/issueCommands.d.ts +21 -0
  96. package/dist/providers/github/commands/issueCommands.d.ts.map +1 -0
  97. package/dist/providers/github/commands/issueCommands.js +50 -0
  98. package/dist/providers/github/commands/issueCommands.js.map +1 -0
  99. package/dist/providers/github/commands/labelCommands.d.ts +3 -0
  100. package/dist/providers/github/commands/labelCommands.d.ts.map +1 -0
  101. package/dist/providers/github/commands/labelCommands.js +8 -0
  102. package/dist/providers/github/commands/labelCommands.js.map +1 -0
  103. package/dist/providers/github/commands/prCommands.d.ts +14 -0
  104. package/dist/providers/github/commands/prCommands.d.ts.map +1 -0
  105. package/dist/providers/github/commands/prCommands.js +46 -0
  106. package/dist/providers/github/commands/prCommands.js.map +1 -0
  107. package/dist/providers/github/commands/secretCommands.d.ts +2 -0
  108. package/dist/providers/github/commands/secretCommands.d.ts.map +1 -0
  109. package/dist/providers/github/commands/secretCommands.js +5 -0
  110. package/dist/providers/github/commands/secretCommands.js.map +1 -0
  111. package/dist/providers/github/contextBinding.d.ts +11 -0
  112. package/dist/providers/github/contextBinding.d.ts.map +1 -0
  113. package/dist/providers/github/contextBinding.js +15 -0
  114. package/dist/providers/github/contextBinding.js.map +1 -0
  115. package/dist/providers/github/domain/issue.d.ts +94 -0
  116. package/dist/providers/github/domain/issue.d.ts.map +1 -0
  117. package/dist/providers/github/domain/issue.js +7 -0
  118. package/dist/providers/github/domain/issue.js.map +1 -0
  119. package/dist/providers/github/domain/pullRequest.d.ts +55 -0
  120. package/dist/providers/github/domain/pullRequest.d.ts.map +1 -0
  121. package/dist/providers/github/domain/pullRequest.js +9 -0
  122. package/dist/providers/github/domain/pullRequest.js.map +1 -0
  123. package/dist/providers/github/ghAuthToken.d.ts +28 -0
  124. package/dist/providers/github/ghAuthToken.d.ts.map +1 -0
  125. package/dist/providers/github/ghAuthToken.js +39 -0
  126. package/dist/providers/github/ghAuthToken.js.map +1 -0
  127. package/dist/providers/github/ghCommandRunner.d.ts +20 -0
  128. package/dist/providers/github/ghCommandRunner.d.ts.map +1 -0
  129. package/dist/providers/github/ghCommandRunner.js +21 -0
  130. package/dist/providers/github/ghCommandRunner.js.map +1 -0
  131. package/dist/providers/github/ghIssueApi.d.ts +29 -0
  132. package/dist/providers/github/ghIssueApi.d.ts.map +1 -0
  133. package/dist/providers/github/ghIssueApi.js +37 -0
  134. package/dist/providers/github/ghIssueApi.js.map +1 -0
  135. package/dist/providers/github/ghIssueParsers.d.ts +28 -0
  136. package/dist/providers/github/ghIssueParsers.d.ts.map +1 -0
  137. package/dist/providers/github/ghIssueParsers.js +105 -0
  138. package/dist/providers/github/ghIssueParsers.js.map +1 -0
  139. package/dist/providers/github/ghPrApi.d.ts +27 -0
  140. package/dist/providers/github/ghPrApi.d.ts.map +1 -0
  141. package/dist/providers/github/ghPrApi.js +32 -0
  142. package/dist/providers/github/ghPrApi.js.map +1 -0
  143. package/dist/providers/github/ghPrParsers.d.ts +57 -0
  144. package/dist/providers/github/ghPrParsers.d.ts.map +1 -0
  145. package/dist/providers/github/ghPrParsers.js +135 -0
  146. package/dist/providers/github/ghPrParsers.js.map +1 -0
  147. package/dist/providers/github/ghRepoApi.d.ts +33 -0
  148. package/dist/providers/github/ghRepoApi.d.ts.map +1 -0
  149. package/dist/providers/github/ghRepoApi.js +89 -0
  150. package/dist/providers/github/ghRepoApi.js.map +1 -0
  151. package/dist/providers/github/githubBoardManager.d.ts +39 -0
  152. package/dist/providers/github/githubBoardManager.d.ts.map +1 -0
  153. package/dist/providers/github/githubBoardManager.js +166 -0
  154. package/dist/providers/github/githubBoardManager.js.map +1 -0
  155. package/dist/providers/github/githubCodeHost.d.ts +73 -0
  156. package/dist/providers/github/githubCodeHost.d.ts.map +1 -0
  157. package/dist/providers/github/githubCodeHost.js +217 -0
  158. package/dist/providers/github/githubCodeHost.js.map +1 -0
  159. package/dist/providers/github/githubIdentity.d.ts +51 -0
  160. package/dist/providers/github/githubIdentity.d.ts.map +1 -0
  161. package/dist/providers/github/githubIdentity.js +110 -0
  162. package/dist/providers/github/githubIdentity.js.map +1 -0
  163. package/dist/providers/github/githubIssueTracker.d.ts +69 -0
  164. package/dist/providers/github/githubIssueTracker.d.ts.map +1 -0
  165. package/dist/providers/github/githubIssueTracker.js +209 -0
  166. package/dist/providers/github/githubIssueTracker.js.map +1 -0
  167. package/dist/providers/github/githubTokenProvider.d.ts +41 -0
  168. package/dist/providers/github/githubTokenProvider.d.ts.map +1 -0
  169. package/dist/providers/github/githubTokenProvider.js +51 -0
  170. package/dist/providers/github/githubTokenProvider.js.map +1 -0
  171. package/dist/providers/github/index.d.ts +10 -0
  172. package/dist/providers/github/index.d.ts.map +1 -0
  173. package/dist/providers/github/index.js +5 -0
  174. package/dist/providers/github/index.js.map +1 -0
  175. package/dist/providers/github/mappers.d.ts +40 -0
  176. package/dist/providers/github/mappers.d.ts.map +1 -0
  177. package/dist/providers/github/mappers.js +103 -0
  178. package/dist/providers/github/mappers.js.map +1 -0
  179. package/dist/providers/github/tokenResolver.d.ts +37 -0
  180. package/dist/providers/github/tokenResolver.d.ts.map +1 -0
  181. package/dist/providers/github/tokenResolver.js +43 -0
  182. package/dist/providers/github/tokenResolver.js.map +1 -0
  183. package/dist/providers/gitlab/gitlabApiClient.d.ts +45 -0
  184. package/dist/providers/gitlab/gitlabApiClient.d.ts.map +1 -0
  185. package/dist/providers/gitlab/gitlabApiClient.js +95 -0
  186. package/dist/providers/gitlab/gitlabApiClient.js.map +1 -0
  187. package/dist/providers/gitlab/gitlabBoardManager.d.ts +11 -0
  188. package/dist/providers/gitlab/gitlabBoardManager.d.ts.map +1 -0
  189. package/dist/providers/gitlab/gitlabBoardManager.js +27 -0
  190. package/dist/providers/gitlab/gitlabBoardManager.js.map +1 -0
  191. package/dist/providers/gitlab/gitlabCodeHost.d.ts +49 -0
  192. package/dist/providers/gitlab/gitlabCodeHost.d.ts.map +1 -0
  193. package/dist/providers/gitlab/gitlabCodeHost.js +109 -0
  194. package/dist/providers/gitlab/gitlabCodeHost.js.map +1 -0
  195. package/dist/providers/gitlab/gitlabTypes.d.ts +46 -0
  196. package/dist/providers/gitlab/gitlabTypes.d.ts.map +1 -0
  197. package/dist/providers/gitlab/gitlabTypes.js +6 -0
  198. package/dist/providers/gitlab/gitlabTypes.js.map +1 -0
  199. package/dist/providers/gitlab/index.d.ts +5 -0
  200. package/dist/providers/gitlab/index.d.ts.map +1 -0
  201. package/dist/providers/gitlab/index.js +4 -0
  202. package/dist/providers/gitlab/index.js.map +1 -0
  203. package/dist/providers/gitlab/mappers.d.ts +26 -0
  204. package/dist/providers/gitlab/mappers.d.ts.map +1 -0
  205. package/dist/providers/gitlab/mappers.js +63 -0
  206. package/dist/providers/gitlab/mappers.js.map +1 -0
  207. package/dist/providers/index.d.ts +7 -0
  208. package/dist/providers/index.d.ts.map +1 -0
  209. package/dist/providers/index.js +7 -0
  210. package/dist/providers/index.js.map +1 -0
  211. package/dist/providers/jira/adfConverter.d.ts +32 -0
  212. package/dist/providers/jira/adfConverter.d.ts.map +1 -0
  213. package/dist/providers/jira/adfConverter.js +144 -0
  214. package/dist/providers/jira/adfConverter.js.map +1 -0
  215. package/dist/providers/jira/index.d.ts +8 -0
  216. package/dist/providers/jira/index.d.ts.map +1 -0
  217. package/dist/providers/jira/index.js +5 -0
  218. package/dist/providers/jira/index.js.map +1 -0
  219. package/dist/providers/jira/jiraApiClient.d.ts +42 -0
  220. package/dist/providers/jira/jiraApiClient.d.ts.map +1 -0
  221. package/dist/providers/jira/jiraApiClient.js +84 -0
  222. package/dist/providers/jira/jiraApiClient.js.map +1 -0
  223. package/dist/providers/jira/jiraBoardManager.d.ts +11 -0
  224. package/dist/providers/jira/jiraBoardManager.d.ts.map +1 -0
  225. package/dist/providers/jira/jiraBoardManager.js +27 -0
  226. package/dist/providers/jira/jiraBoardManager.js.map +1 -0
  227. package/dist/providers/jira/jiraIssueTracker.d.ts +53 -0
  228. package/dist/providers/jira/jiraIssueTracker.d.ts.map +1 -0
  229. package/dist/providers/jira/jiraIssueTracker.js +231 -0
  230. package/dist/providers/jira/jiraIssueTracker.js.map +1 -0
  231. package/dist/providers/jira/jiraTypes.d.ts +61 -0
  232. package/dist/providers/jira/jiraTypes.d.ts.map +1 -0
  233. package/dist/providers/jira/jiraTypes.js +6 -0
  234. package/dist/providers/jira/jiraTypes.js.map +1 -0
  235. package/dist/providers/types.d.ts +271 -0
  236. package/dist/providers/types.d.ts.map +1 -0
  237. package/dist/providers/types.js +52 -0
  238. package/dist/providers/types.js.map +1 -0
  239. package/dist/providers/workspaceValidation.d.ts +18 -0
  240. package/dist/providers/workspaceValidation.d.ts.map +1 -0
  241. package/dist/providers/workspaceValidation.js +37 -0
  242. package/dist/providers/workspaceValidation.js.map +1 -0
  243. package/package.json +66 -0
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Package-private worktree remove ops for GitContext.
3
+ * Injects runner, fs, a logger port, and killProcesses for testability.
4
+ */
5
+ import * as path from 'path';
6
+ import { killProcessesInDirectory } from './processCleanup.js';
7
+ function parseWorktreeBranches(run, baseCwd) {
8
+ const output = run('git worktree list --porcelain', baseCwd);
9
+ const lines = output.split('\n');
10
+ const result = new Map();
11
+ let currentPath = null;
12
+ for (const line of lines) {
13
+ if (line.startsWith('worktree ')) {
14
+ currentPath = line.substring('worktree '.length);
15
+ }
16
+ else if (line.startsWith('branch ') && currentPath?.includes('.worktrees/')) {
17
+ const branchName = line.substring('branch '.length).replace('refs/heads/', '');
18
+ result.set(currentPath, branchName);
19
+ }
20
+ else if (line === '') {
21
+ currentPath = null;
22
+ }
23
+ }
24
+ return result;
25
+ }
26
+ function pruneAndRmWorktreeDir(run, fs, log, worktreePath, branchName, baseCwd, killProcs, deleteLocalBranchFn) {
27
+ if (!fs.existsSync(worktreePath)) {
28
+ log(`Worktree for branch '${branchName}' does not exist at ${worktreePath}`, 'info');
29
+ return false;
30
+ }
31
+ try {
32
+ killProcs(worktreePath);
33
+ run('git worktree prune', baseCwd);
34
+ fs.rmSync(worktreePath, { recursive: true, force: true });
35
+ log(`Removed orphaned worktree directory at ${worktreePath}`, 'info');
36
+ deleteLocalBranchFn(branchName);
37
+ return true;
38
+ }
39
+ catch (cleanupError) {
40
+ log(`Failed to cleanup worktree directory at ${worktreePath}: ${cleanupError}`, 'error');
41
+ return false;
42
+ }
43
+ }
44
+ /**
45
+ * Removes a worktree for the given branch. Falls back to prune + rmSync on failure.
46
+ */
47
+ function removeWorktree(run, fs, log, worktreePath, branchName, deleteLocalBranchFn, baseCwd, killProcs = killProcessesInDirectory) {
48
+ killProcs(worktreePath);
49
+ try {
50
+ run(`git worktree remove "${worktreePath}" --force`, baseCwd);
51
+ log(`Removed worktree for branch '${branchName}' at ${worktreePath}`, 'success');
52
+ deleteLocalBranchFn(branchName);
53
+ return true;
54
+ }
55
+ catch {
56
+ return pruneAndRmWorktreeDir(run, fs, log, worktreePath, branchName, baseCwd, killProcs, deleteLocalBranchFn);
57
+ }
58
+ }
59
+ function rmOrphanedWorktreeDir(fs, log, wtPath, branchName, removeError, deleteLocalBranchFn) {
60
+ if (!fs.existsSync(wtPath)) {
61
+ log(`Failed to remove worktree at ${wtPath}: ${removeError}`, 'error');
62
+ return false;
63
+ }
64
+ try {
65
+ fs.rmSync(wtPath, { recursive: true, force: true });
66
+ log(`Removed orphaned worktree directory at ${wtPath}`, 'info');
67
+ if (branchName)
68
+ deleteLocalBranchFn(branchName);
69
+ return true;
70
+ }
71
+ catch (cleanupError) {
72
+ log(`Failed to cleanup worktree directory at ${wtPath}: ${cleanupError}`, 'error');
73
+ return false;
74
+ }
75
+ }
76
+ function removeOneWorktree(run, fs, log, wtPath, branchName, baseCwd, killProcs, deleteLocalBranchFn) {
77
+ killProcs(wtPath);
78
+ try {
79
+ run(`git worktree remove "${wtPath}" --force`, baseCwd);
80
+ log(`Removed worktree at ${wtPath}`, 'success');
81
+ if (branchName)
82
+ deleteLocalBranchFn(branchName);
83
+ return true;
84
+ }
85
+ catch (error) {
86
+ return rmOrphanedWorktreeDir(fs, log, wtPath, branchName, error, deleteLocalBranchFn);
87
+ }
88
+ }
89
+ /**
90
+ * Removes all worktrees matching the given issue number.
91
+ */
92
+ function removeWorktreesForIssue(run, fs, log, baseCwd, issueNumber, deleteLocalBranchFn, killProcs = killProcessesInDirectory) {
93
+ try {
94
+ const output = run('git worktree list --porcelain', baseCwd);
95
+ const worktrees = [];
96
+ for (const line of output.split('\n')) {
97
+ if (line.startsWith('worktree ')) {
98
+ const wtPath = line.substring('worktree '.length);
99
+ if (wtPath.includes('.worktrees'))
100
+ worktrees.push(wtPath);
101
+ }
102
+ }
103
+ const pattern = new RegExp(`-issue-${issueNumber}-`);
104
+ const matching = worktrees.filter((wtPath) => pattern.test(path.basename(wtPath)));
105
+ if (matching.length === 0) {
106
+ log(`No worktrees found matching issue #${issueNumber}`, 'info');
107
+ return 0;
108
+ }
109
+ log(`Found ${matching.length} worktree(s) matching issue #${issueNumber}`, 'info');
110
+ const worktreeBranches = parseWorktreeBranches(run, baseCwd);
111
+ let removedCount = 0;
112
+ for (const wtPath of matching) {
113
+ const branchName = worktreeBranches.get(wtPath);
114
+ if (removeOneWorktree(run, fs, log, wtPath, branchName, baseCwd, killProcs, deleteLocalBranchFn)) {
115
+ removedCount += 1;
116
+ }
117
+ }
118
+ try {
119
+ run('git worktree prune', baseCwd);
120
+ }
121
+ catch (pruneError) {
122
+ log(`Failed to prune worktrees: ${pruneError}`, 'error');
123
+ }
124
+ log(`Removed ${removedCount} worktree(s) for issue #${issueNumber}`, 'success');
125
+ return removedCount;
126
+ }
127
+ catch {
128
+ return 0;
129
+ }
130
+ }
131
+ export const worktreeRemoveOps = { removeWorktree, removeWorktreesForIssue };
132
+ //# sourceMappingURL=worktreeRemoveOps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktreeRemoveOps.js","sourceRoot":"","sources":["../../src/git/worktreeRemoveOps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Package-private takeover-reset orchestration for GitContext.
3
+ * Injects both the runner and fs functions for testability.
4
+ */
5
+ type Runner = (command: string, cwd: string) => string;
6
+ interface FsDeps {
7
+ existsSync: (p: string) => boolean;
8
+ rmSync: (p: string, opts?: {
9
+ force?: boolean;
10
+ recursive?: boolean;
11
+ }) => void;
12
+ }
13
+ declare function resetWorktree(run: Runner, fs: FsDeps, worktreePath: string, branch: string): void;
14
+ export declare const worktreeResetOps: {
15
+ resetWorktree: typeof resetWorktree;
16
+ };
17
+ export {};
18
+ //# sourceMappingURL=worktreeResetOps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktreeResetOps.d.ts","sourceRoot":"","sources":["../../src/git/worktreeResetOps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,KAAK,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAEvD,UAAU,MAAM;IACd,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9E;AAqCD,iBAAS,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAoB1F;AAED,eAAO,MAAM,gBAAgB;;CAAoB,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Package-private takeover-reset orchestration for GitContext.
3
+ * Injects both the runner and fs functions for testability.
4
+ */
5
+ import * as path from 'path';
6
+ function resolveGitDir(run, worktreePath) {
7
+ const raw = run('git rev-parse --git-dir', worktreePath);
8
+ return path.isAbsolute(raw) ? raw : path.resolve(worktreePath, raw);
9
+ }
10
+ function abortMerge(run, fs, worktreePath, gitDir) {
11
+ const mergeHead = path.join(gitDir, 'MERGE_HEAD');
12
+ if (!fs.existsSync(mergeHead))
13
+ return;
14
+ try {
15
+ run('git merge --abort', worktreePath);
16
+ return;
17
+ }
18
+ catch {
19
+ // fallback to fs removal
20
+ }
21
+ fs.rmSync(mergeHead, { force: true });
22
+ const mergeMsg = path.join(gitDir, 'MERGE_MSG');
23
+ const mergeMode = path.join(gitDir, 'MERGE_MODE');
24
+ if (fs.existsSync(mergeMsg))
25
+ fs.rmSync(mergeMsg, { force: true });
26
+ if (fs.existsSync(mergeMode))
27
+ fs.rmSync(mergeMode, { force: true });
28
+ }
29
+ function abortRebase(run, fs, worktreePath, gitDir) {
30
+ const rebaseApply = path.join(gitDir, 'rebase-apply');
31
+ const rebaseMerge = path.join(gitDir, 'rebase-merge');
32
+ if (!fs.existsSync(rebaseApply) && !fs.existsSync(rebaseMerge))
33
+ return;
34
+ try {
35
+ run('git rebase --abort', worktreePath);
36
+ return;
37
+ }
38
+ catch {
39
+ // fallback to fs removal
40
+ }
41
+ fs.rmSync(rebaseApply, { recursive: true, force: true });
42
+ fs.rmSync(rebaseMerge, { recursive: true, force: true });
43
+ }
44
+ function resetWorktree(run, fs, worktreePath, branch) {
45
+ const gitDir = resolveGitDir(run, worktreePath);
46
+ abortMerge(run, fs, worktreePath, gitDir);
47
+ abortRebase(run, fs, worktreePath, gitDir);
48
+ try {
49
+ run(`git fetch origin "${branch}"`, worktreePath);
50
+ }
51
+ catch (error) {
52
+ throw new Error(`Failed to fetch origin/${branch} in ${worktreePath}: ${error}`);
53
+ }
54
+ try {
55
+ run(`git reset --hard "origin/${branch}"`, worktreePath);
56
+ }
57
+ catch (error) {
58
+ throw new Error(`Failed to reset to origin/${branch} in ${worktreePath}: ${error}`);
59
+ }
60
+ try {
61
+ run('git clean -fdx', worktreePath);
62
+ }
63
+ catch (error) {
64
+ throw new Error(`Failed to clean worktree ${worktreePath}: ${error}`);
65
+ }
66
+ }
67
+ export const worktreeResetOps = { resetWorktree };
68
+ //# sourceMappingURL=worktreeResetOps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktreeResetOps.js","sourceRoot":"","sources":["../../src/git/worktreeResetOps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Root package entry point — forge ports and domain model only.
3
+ *
4
+ * This is the platform-agnostic vocabulary shared by every adapter: the
5
+ * `IssueTracker`/`CodeHost`/`BoardManager` ports, the `Platform`/
6
+ * `RepoIdentifier`/`Issue`/`PullRequest`/`BoardStatus` domain types, and the
7
+ * `BoundProviders`/`RepoContext` assembly shapes. It carries no adapter code
8
+ * and no `forgeProviders` assembly function — those live behind
9
+ * `"./providers"`. The forge-neutral git/worktree core lives behind
10
+ * `"./git"`. An import-graph test guards this separation.
11
+ */
12
+ export * from './providers/types.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Root package entry point — forge ports and domain model only.
3
+ *
4
+ * This is the platform-agnostic vocabulary shared by every adapter: the
5
+ * `IssueTracker`/`CodeHost`/`BoardManager` ports, the `Platform`/
6
+ * `RepoIdentifier`/`Issue`/`PullRequest`/`BoardStatus` domain types, and the
7
+ * `BoundProviders`/`RepoContext` assembly shapes. It carries no adapter code
8
+ * and no `forgeProviders` assembly function — those live behind
9
+ * `"./providers"`. The forge-neutral git/worktree core lives behind
10
+ * `"./git"`. An import-graph test guards this separation.
11
+ */
12
+ export * from './providers/types.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * forgeProviders() — the provider package's one public assembly function,
3
+ * and the library's entry point at 1.0.0 (frozen after HITL review).
4
+ *
5
+ * One identity in, every returned provider bound to it. Refuses — before
6
+ * constructing anything — an identity that fails `validateRepoIdentifier`, a
7
+ * `tokenProvider` that does not implement the port, a `gitContext` bound to
8
+ * another repository (naming both), and an unknown or wrong-port forge name
9
+ * (`UnknownForgeError`, naming the value and the port). The board manager is
10
+ * present only for a GitHub code host and omitted — never a refusing stub —
11
+ * otherwise.
12
+ *
13
+ * The consumer parses its own configuration into a `ForgeSelection`;
14
+ * `tokenProvider` is the credential port the consumer built `gitContext`
15
+ * with, declared on the contract so a later adapter that authenticates
16
+ * through the port needs no signature change. Imports only the executor,
17
+ * the ports and this package's own adapters — never `adws/core`,
18
+ * `adws/types`, `adws/github` or `adws/forge`; reads no file and no
19
+ * environment variable.
20
+ */
21
+ import type { GitContext, Logger, TokenProvider } from '../git/index.js';
22
+ import { type BoundProviders, type RepoIdentifier } from './types.js';
23
+ import { type GitHubIssueTrackerDeps } from './github/githubIssueTracker.js';
24
+ import { type GitHubCodeHostDeps } from './github/githubCodeHost.js';
25
+ import type { GitLabConfig } from './gitlab/gitlabApiClient.js';
26
+ import { type JiraConfig } from './jira/jiraIssueTracker.js';
27
+ export declare const CODE_HOST_FORGES: readonly ["github", "gitlab"];
28
+ export declare const ISSUE_TRACKER_FORGES: readonly ["github", "jira"];
29
+ export type CodeHostForge = (typeof CODE_HOST_FORGES)[number];
30
+ export type IssueTrackerForge = (typeof ISSUE_TRACKER_FORGES)[number];
31
+ export type ForgeName = CodeHostForge | IssueTrackerForge;
32
+ /** Runtime guard for JS consumers and config-derived strings — `CodeHostForge` is a compile-time-only guarantee. */
33
+ export declare function isCodeHostForge(value: string): value is CodeHostForge;
34
+ /** Runtime guard for JS consumers and config-derived strings — `IssueTrackerForge` is a compile-time-only guarantee. */
35
+ export declare function isIssueTrackerForge(value: string): value is IssueTrackerForge;
36
+ export interface ForgeSelection {
37
+ readonly codeHost: CodeHostForge;
38
+ readonly issueTracker: IssueTrackerForge;
39
+ }
40
+ /** ADW-shaped GitHub seams a consumer may inject — Slack/label/approval behaviour the library itself never learns about. */
41
+ export interface GitHubForgeDeps {
42
+ readonly onStatusMoved?: GitHubIssueTrackerDeps['onStatusMoved'];
43
+ readonly resolveLabelDefinition?: GitHubIssueTrackerDeps['resolveLabelDefinition'];
44
+ readonly canApprovePullRequests?: GitHubCodeHostDeps['canApprovePullRequests'];
45
+ }
46
+ export interface ForgeProviderDeps {
47
+ readonly logger?: Logger;
48
+ readonly github?: GitHubForgeDeps;
49
+ /** Required when `forge.codeHost === 'gitlab'`. */
50
+ readonly gitlab?: GitLabConfig;
51
+ /** Required when `forge.issueTracker === 'jira'`. */
52
+ readonly jira?: JiraConfig;
53
+ }
54
+ export interface ForgeProvidersOptions {
55
+ readonly forge: ForgeSelection;
56
+ readonly identity: RepoIdentifier;
57
+ readonly tokenProvider: TokenProvider;
58
+ readonly gitContext: GitContext;
59
+ readonly deps?: ForgeProviderDeps;
60
+ }
61
+ /** Thrown by {@link forgeProviders} for a forge name outside the closed union for its port. */
62
+ export declare class UnknownForgeError extends Error {
63
+ constructor(value: string, port: 'code host' | 'issue tracker', allowed: readonly string[]);
64
+ }
65
+ /**
66
+ * Builds the one bound provider set for `identity`. Guard clauses run in
67
+ * order — identity, token provider, context binding, then both forge names
68
+ * — entirely before any adapter is constructed, so a refusal never leaves a
69
+ * partially-built set and never issues a command.
70
+ */
71
+ export declare function forgeProviders(options: ForgeProvidersOptions): BoundProviders;
72
+ //# sourceMappingURL=forgeProviders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgeProviders.d.ts","sourceRoot":"","sources":["../../src/providers/forgeProviders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAqB,KAAK,cAAc,EAAoC,KAAK,cAAc,EAA0B,MAAM,YAAY,CAAC;AAEnJ,OAAO,EAA4B,KAAK,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACvG,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAG3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMrF,eAAO,MAAM,gBAAgB,+BAAgC,CAAC;AAC9D,eAAO,MAAM,oBAAoB,6BAA8B,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE1D,oHAAoH;AACpH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wHAAwH;AACxH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE7E;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;CAC1C;AAED,4HAA4H;AAC5H,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;IACjE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,wBAAwB,CAAC,CAAC;IACnF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,+FAA+F;AAC/F,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,eAAe,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE;CAI3F;AAiDD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAmB7E"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * forgeProviders() — the provider package's one public assembly function,
3
+ * and the library's entry point at 1.0.0 (frozen after HITL review).
4
+ *
5
+ * One identity in, every returned provider bound to it. Refuses — before
6
+ * constructing anything — an identity that fails `validateRepoIdentifier`, a
7
+ * `tokenProvider` that does not implement the port, a `gitContext` bound to
8
+ * another repository (naming both), and an unknown or wrong-port forge name
9
+ * (`UnknownForgeError`, naming the value and the port). The board manager is
10
+ * present only for a GitHub code host and omitted — never a refusing stub —
11
+ * otherwise.
12
+ *
13
+ * The consumer parses its own configuration into a `ForgeSelection`;
14
+ * `tokenProvider` is the credential port the consumer built `gitContext`
15
+ * with, declared on the contract so a later adapter that authenticates
16
+ * through the port needs no signature change. Imports only the executor,
17
+ * the ports and this package's own adapters — never `adws/core`,
18
+ * `adws/types`, `adws/github` or `adws/forge`; reads no file and no
19
+ * environment variable.
20
+ */
21
+ import { validateRepoIdentifier } from './types.js';
22
+ import { assertContextBoundTo } from './github/contextBinding.js';
23
+ import { createGitHubIssueTracker } from './github/githubIssueTracker.js';
24
+ import { createGitHubCodeHost } from './github/githubCodeHost.js';
25
+ import { createGitHubBoardManager } from './github/githubBoardManager.js';
26
+ import { createGitLabCodeHost } from './gitlab/gitlabCodeHost.js';
27
+ import { createJiraIssueTracker } from './jira/jiraIssueTracker.js';
28
+ // ---------------------------------------------------------------------------
29
+ // The closed forge unions — one per port
30
+ // ---------------------------------------------------------------------------
31
+ export const CODE_HOST_FORGES = ['github', 'gitlab'];
32
+ export const ISSUE_TRACKER_FORGES = ['github', 'jira'];
33
+ /** Runtime guard for JS consumers and config-derived strings — `CodeHostForge` is a compile-time-only guarantee. */
34
+ export function isCodeHostForge(value) {
35
+ return CODE_HOST_FORGES.includes(value);
36
+ }
37
+ /** Runtime guard for JS consumers and config-derived strings — `IssueTrackerForge` is a compile-time-only guarantee. */
38
+ export function isIssueTrackerForge(value) {
39
+ return ISSUE_TRACKER_FORGES.includes(value);
40
+ }
41
+ /** Thrown by {@link forgeProviders} for a forge name outside the closed union for its port. */
42
+ export class UnknownForgeError extends Error {
43
+ constructor(value, port, allowed) {
44
+ super(`forgeProviders: unknown ${port} forge "${value}" (expected one of: ${allowed.join(', ')})`);
45
+ this.name = 'UnknownForgeError';
46
+ }
47
+ }
48
+ function assertTokenProvider(tokenProvider) {
49
+ if (typeof tokenProvider?.credentialEnv !== 'function') {
50
+ throw new Error('forgeProviders: tokenProvider must implement credentialEnv(request)');
51
+ }
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // Per-port builders — one small named function each, no default-to-GitHub fallback
55
+ // ---------------------------------------------------------------------------
56
+ function buildIssueTracker(forgeName, gitContext, identity, deps) {
57
+ if (forgeName === 'github') {
58
+ return createGitHubIssueTracker(gitContext, identity, {
59
+ logger: deps.logger,
60
+ onStatusMoved: deps.github?.onStatusMoved,
61
+ resolveLabelDefinition: deps.github?.resolveLabelDefinition,
62
+ });
63
+ }
64
+ if (!deps.jira) {
65
+ throw new Error('forgeProviders: issue tracker "jira" needs deps.jira (JiraConfig)');
66
+ }
67
+ return createJiraIssueTracker(deps.jira, { logger: deps.logger });
68
+ }
69
+ function buildCodeHost(forgeName, gitContext, identity, deps) {
70
+ if (forgeName === 'github') {
71
+ return createGitHubCodeHost(gitContext, identity, {
72
+ logger: deps.logger,
73
+ canApprovePullRequests: deps.github?.canApprovePullRequests,
74
+ });
75
+ }
76
+ if (!deps.gitlab) {
77
+ throw new Error('forgeProviders: code host "gitlab" needs deps.gitlab (GitLabConfig)');
78
+ }
79
+ return createGitLabCodeHost(identity, deps.gitlab, { logger: deps.logger });
80
+ }
81
+ /** GitHub is the only code host with board support; every other selection omits the member — never a refusing stub. */
82
+ function buildBoardManager(forgeName, gitContext, identity, deps) {
83
+ if (forgeName !== 'github')
84
+ return undefined;
85
+ return createGitHubBoardManager(gitContext, identity, { logger: deps.logger });
86
+ }
87
+ // ---------------------------------------------------------------------------
88
+ // The assembly function
89
+ // ---------------------------------------------------------------------------
90
+ /**
91
+ * Builds the one bound provider set for `identity`. Guard clauses run in
92
+ * order — identity, token provider, context binding, then both forge names
93
+ * — entirely before any adapter is constructed, so a refusal never leaves a
94
+ * partially-built set and never issues a command.
95
+ */
96
+ export function forgeProviders(options) {
97
+ const { forge, identity, tokenProvider, gitContext, deps = {} } = options;
98
+ validateRepoIdentifier(identity);
99
+ assertTokenProvider(tokenProvider);
100
+ assertContextBoundTo(gitContext, identity, 'forgeProviders');
101
+ if (!isIssueTrackerForge(forge.issueTracker)) {
102
+ throw new UnknownForgeError(forge.issueTracker, 'issue tracker', ISSUE_TRACKER_FORGES);
103
+ }
104
+ if (!isCodeHostForge(forge.codeHost)) {
105
+ throw new UnknownForgeError(forge.codeHost, 'code host', CODE_HOST_FORGES);
106
+ }
107
+ const issueTracker = buildIssueTracker(forge.issueTracker, gitContext, identity, deps);
108
+ const codeHost = buildCodeHost(forge.codeHost, gitContext, identity, deps);
109
+ const boardManager = buildBoardManager(forge.codeHost, gitContext, identity, deps);
110
+ return Object.freeze({ issueTracker, codeHost, boardManager });
111
+ }
112
+ //# sourceMappingURL=forgeProviders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgeProviders.js","sourceRoot":"","sources":["../../src/providers/forgeProviders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * GitHub App token mint — GitHub forge adapter (issue #792; originally
3
+ * absorbed into the gitContext package by issue #700).
4
+ *
5
+ * This module is structurally exempt from the git/gh guard
6
+ * (adws/providers/github/ is skipped by directory). It owns the JWT dance and
7
+ * installation-token exchange; callers should route through
8
+ * resolveContextToken for veracity.
9
+ *
10
+ * Configuration is INJECTED, never read from process.env — see
11
+ * {@link GitHubAppConfig}. The ADW wiring shim (adws/github/githubAppAuth.ts)
12
+ * is the sole site that reads GITHUB_APP_ID/GITHUB_APP_SLUG/
13
+ * GITHUB_APP_PRIVATE_KEY_PATH and passes them in as a value.
14
+ *
15
+ * No ADW-global imports. The log seam defaults to a no-op to keep the package
16
+ * standalone-reusable.
17
+ *
18
+ * The bearer credential travels to curl over its `--config` stdin channel —
19
+ * never as a command-line argument — so it cannot appear in a thrown
20
+ * `execFileSync` error or in the process table (issue #780).
21
+ */
22
+ /** Injected GitHub App identity and signing-key path. Any missing field means "not configured". */
23
+ export interface GitHubAppConfig {
24
+ readonly appId?: string;
25
+ readonly appSlug?: string;
26
+ readonly privateKeyPath?: string;
27
+ }
28
+ /** Runs curl with the given argv, delivering the request description on stdin. */
29
+ export type RunCurl = (args: readonly string[], stdinConfig: string) => string;
30
+ export interface AppAuthDeps {
31
+ /** Overrides the GitHub API origin. Defaults to GITHUB_API_BASE_URL. */
32
+ apiBaseUrl?: string;
33
+ /** Overrides the curl runner. Production uses execFileSync. */
34
+ runCurl?: RunCurl;
35
+ }
36
+ /** Production GitHub API origin. Overridable via AppAuthDeps.apiBaseUrl for hermetic testing. */
37
+ export declare const GITHUB_API_BASE_URL = "https://api.github.com";
38
+ /** Returns true if the injected GitHub App configuration is complete. */
39
+ export declare function isGitHubAppConfigured(config: GitHubAppConfig): boolean;
40
+ /**
41
+ * Returns a valid GitHub App installation token for the given repo,
42
+ * refreshing if needed. Throws if the App is not installed on owner/repo.
43
+ *
44
+ * Assumes `isGitHubAppConfigured(config)` was checked first, exactly as
45
+ * before configuration was injected — but fails with a named error rather
46
+ * than a `TypeError` from `fs.readFileSync(undefined)` if it was not.
47
+ */
48
+ export declare function getInstallationToken(config: GitHubAppConfig, owner: string, repo: string, deps?: AppAuthDeps): string;
49
+ /** Clears both module-level caches. Test-only — production never needs to reset them. */
50
+ export declare function clearAppAuthCaches(): void;
51
+ /** Rewrites any `Bearer <token>` fragment to `Bearer [REDACTED]`. Final net over untrusted text (curl stderr, GitHub error bodies) — the credential is already structurally absent by construction. */
52
+ export declare function redactBearerTokens(text: string): string;
53
+ export interface GitHubApiRequest {
54
+ jwt: string;
55
+ url: string;
56
+ method: 'GET' | 'POST';
57
+ /** Human-readable phrase for failure messages, e.g. "installation lookup". */
58
+ operation: string;
59
+ /** Identity echoed in failure messages, e.g. "acme/webapp" or "installation 4711". */
60
+ subject: string;
61
+ }
62
+ /** Builds a curl `--config` payload carrying the URL, headers (including the bearer credential) and method — never a command-line argument. */
63
+ export declare function buildCurlConfig(request: GitHubApiRequest): string;
64
+ /** Composes the sanitized failure shape the issue asks for: `GitHub App <operation> failed for <subject>: <detail>`. */
65
+ export declare function describeApiFailure(input: {
66
+ operation: string;
67
+ subject: string;
68
+ detail: string;
69
+ }): string;
70
+ //# sourceMappingURL=appAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appAuth.d.ts","sourceRoot":"","sources":["../../../src/providers/github/appAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAmBD,kFAAkF;AAClF,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;AAE/E,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAM5D,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAEtE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,MAAM,CAwBzH;AAED,yFAAyF;AACzF,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAYD,uMAAuM;AACvM,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,+IAA+I;AAC/I,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAcjE;AAED,wHAAwH;AACxH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAExG"}