@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,131 @@
1
+ /**
2
+ * Package-private commit/push operation orchestration for GitContext.
3
+ */
4
+ export function isLeaseRejection(error) {
5
+ const e = error;
6
+ const text = [e.stderr, e.stdout, e.message]
7
+ .map((v) => (v == null ? '' : String(v)))
8
+ .join('\n');
9
+ return text.includes('stale info') || text.includes('remote ref updated since checkout');
10
+ }
11
+ function leaseErrorMessage(branch, error) {
12
+ const e = error;
13
+ return (`force-with-lease push rejected for branch "${branch}": the remote was moved ` +
14
+ `underneath ADW — the origin has commits ADW has never seen and must not be ` +
15
+ `auto-resumed into the same push. ` +
16
+ `Manual remedy: git fetch && git log origin/${branch} — if the local tip ` +
17
+ `is correct, push manually with: git push --force-with-lease origin ${branch}. ` +
18
+ `Original error: ${String(e.stderr ?? e.message ?? error)}`);
19
+ }
20
+ function pathspecSuffix(excludePaths) {
21
+ if (!excludePaths || excludePaths.length === 0)
22
+ return '';
23
+ const tokens = excludePaths.map(p => `':(exclude)${p}'`).join(' ');
24
+ return ` -- '.' ${tokens}`;
25
+ }
26
+ /**
27
+ * Returns the subset of `paths` that are already gitignored in `cwd`. `git check-ignore`
28
+ * exits non-zero when none of the given paths are ignored, which the injected runner
29
+ * surfaces as a throw — treat that (and any other failure) as "nothing ignored" so the
30
+ * filter can never behave worse than passing every path through unfiltered.
31
+ */
32
+ function gitignoredSubset(run, cwd, paths) {
33
+ if (paths.length === 0)
34
+ return new Set();
35
+ const tokens = paths.map(p => `'${p}'`).join(' ');
36
+ try {
37
+ const output = run(`git check-ignore ${tokens}`, cwd);
38
+ return new Set(output.split('\n').map(line => line.trim()).filter(Boolean));
39
+ }
40
+ catch {
41
+ return new Set();
42
+ }
43
+ }
44
+ /**
45
+ * Filters `excludePaths` down to the paths that are safe to name in an `:(exclude)`
46
+ * pathspec — i.e. not already gitignored. Naming an already-ignored path in an explicit
47
+ * pathspec promotes `git add -A` to an explicit-pathspec add, which git then rejects
48
+ * with exit 1 ("paths are ignored"). Dropping those entries is a no-op for what gets
49
+ * staged (`git add -A` already skips ignored files) and removes the crash.
50
+ */
51
+ function committableExcludePaths(run, cwd, excludePaths) {
52
+ if (!excludePaths || excludePaths.length === 0)
53
+ return [];
54
+ const ignored = gitignoredSubset(run, cwd, excludePaths);
55
+ return excludePaths.filter(p => !ignored.has(p));
56
+ }
57
+ function commitChanges(run, message, cwd, opts) {
58
+ const suffix = pathspecSuffix(committableExcludePaths(run, cwd, opts?.excludePaths));
59
+ const status = run(`git status --porcelain${suffix}`, cwd);
60
+ if (!status.trim())
61
+ return false;
62
+ run(`git add -A${suffix}`, cwd);
63
+ run(`git commit -m "${message.replace(/"/g, '\\"')}"`, cwd);
64
+ return true;
65
+ }
66
+ /**
67
+ * Removes `paths` from the index/working tree and, only if that staged something
68
+ * for those exact pathspecs, commits scoped to `paths` — unrelated staged/dirty
69
+ * state elsewhere in the tree is left untouched. `--ignore-unmatch` keeps the
70
+ * removal idempotent when a path is already absent from the index.
71
+ */
72
+ function removeAndCommitPaths(run, paths, message, cwd) {
73
+ if (paths.length === 0)
74
+ return false;
75
+ const tokens = paths.map(p => `'${p}'`).join(' ');
76
+ run(`git rm -f --ignore-unmatch -- ${tokens}`, cwd);
77
+ const status = run(`git status --porcelain -- ${tokens}`, cwd);
78
+ if (!status.trim())
79
+ return false;
80
+ run(`git commit -m "${message.replace(/"/g, '\\"')}" -- ${tokens}`, cwd);
81
+ return true;
82
+ }
83
+ /**
84
+ * Stages and commits `paths` scoped to exactly those pathspecs — the modify
85
+ * counterpart to `removeAndCommitPaths`. Only commits if `git status --porcelain`
86
+ * scoped to `paths` reports something staged for them; unrelated dirty state
87
+ * elsewhere in the tree is never touched (no `git add -A`).
88
+ */
89
+ function addAndCommitPaths(run, paths, message, cwd) {
90
+ if (paths.length === 0)
91
+ return false;
92
+ const tokens = paths.map(p => `'${p}'`).join(' ');
93
+ run(`git add -- ${tokens}`, cwd);
94
+ const status = run(`git status --porcelain -- ${tokens}`, cwd);
95
+ if (!status.trim())
96
+ return false;
97
+ run(`git commit -m "${message.replace(/"/g, '\\"')}" -- ${tokens}`, cwd);
98
+ return true;
99
+ }
100
+ function pushBranch(run, branch, cwd) {
101
+ try {
102
+ run(`git fetch origin "${branch}"`, cwd);
103
+ }
104
+ catch {
105
+ // first push — no remote ref yet, proceed
106
+ }
107
+ try {
108
+ run(`git push --force-with-lease --force-if-includes -u origin "${branch}"`, cwd);
109
+ }
110
+ catch (error) {
111
+ if (isLeaseRejection(error)) {
112
+ throw new Error(leaseErrorMessage(branch, error));
113
+ }
114
+ throw error;
115
+ }
116
+ }
117
+ function getHeadTreeHash(run, cwd) {
118
+ return run('git rev-parse "HEAD^{tree}"', cwd);
119
+ }
120
+ function hasUncommittedChanges(run, cwd) {
121
+ return run('git status --porcelain', cwd).trim().length > 0;
122
+ }
123
+ export const commitOps = {
124
+ commitChanges,
125
+ removeAndCommitPaths,
126
+ addAndCommitPaths,
127
+ pushBranch,
128
+ getHeadTreeHash,
129
+ hasUncommittedChanges,
130
+ };
131
+ //# sourceMappingURL=commitOps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitOps.js","sourceRoot":"","sources":["../../src/git/commitOps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Default logger port (PRD story 17) — every level to stdout, matching the
3
+ * host logger's single-stream behaviour so piped-output ordering is preserved
4
+ * for callers that inject no logger of their own.
5
+ */
6
+ import type { Logger } from './types.js';
7
+ export declare const consoleLogger: Logger;
8
+ //# sourceMappingURL=consoleLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consoleLogger.d.ts","sourceRoot":"","sources":["../../src/git/consoleLogger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,aAAa,EAAE,MAE3B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Default logger port (PRD story 17) — every level to stdout, matching the
3
+ * host logger's single-stream behaviour so piped-output ordering is preserved
4
+ * for callers that inject no logger of their own.
5
+ */
6
+ export const consoleLogger = (message) => {
7
+ console.log(message);
8
+ };
9
+ //# sourceMappingURL=consoleLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consoleLogger.js","sourceRoot":"","sources":["../../src/git/consoleLogger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAW,CAAC,OAAO,EAAE,EAAE;IAC/C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * GitContext deep module — the single authority for "which repo's filesystem."
3
+ *
4
+ * A GitContext is constructed from a mandatory identity (owner, repo, selfHost,
5
+ * tokenProvider, gitIdentity) plus injected config (frameworkRepoRoot, targetReposDir).
6
+ * Base-path resolution lives only in the constructor — no optional base path,
7
+ * no cwd fallback. Incomplete identity is a hard construction error.
8
+ *
9
+ * Every git operation — and every forge adapter built on this package — is
10
+ * routed through `exec()`, the package's public, forge-neutral executor — the
11
+ * single spawn site, single env merge, single cwd resolution and single
12
+ * ENOENT-rewrap `catch` in the package. `exec()` knows nothing about what a
13
+ * command means: no forge semantics, no token selection, no `--repo`
14
+ * awareness.
15
+ *
16
+ * A private classifier chooses the working-directory CLASS and assembles the
17
+ * credential env, then delegates to `exec()`:
18
+ * - #run() — git commands and workspace-scoped operations. Resolves to the
19
+ * context base path (or an explicit worktree path when
20
+ * supplied).
21
+ * Forge adapters build their own classifier on top of the same primitives —
22
+ * one resolves to the injected framework repo root (`ExecWorkingDirectory`'s
23
+ * `frameworkRoot` class) for commands whose repository identity travels in
24
+ * the command string, so a repo-independent command can run without the
25
+ * target workspace ever having been cloned.
26
+ *
27
+ * `#run` assembles its credential environment through the **TokenProvider
28
+ * port** (`#credentials`, see `types.ts`), asked once per command and never
29
+ * cached by the core, plus git identity — merged into the child environment
30
+ * without ever mutating process.env. It declares only a forge-neutral
31
+ * `CredentialPurpose`; the provider decides which credential answers it.
32
+ * Identity validation probes the provider once at construction and discards
33
+ * the result — see `assertCompleteIdentity`.
34
+ *
35
+ * A spawn failure caused by a missing working directory (basePath or an
36
+ * explicit worktree path that has never been cloned/created on this host)
37
+ * is rewrapped inside `exec()` into an error naming the path and repository
38
+ * identity, preserving `code: 'ENOENT'`; every other failure propagates
39
+ * verbatim.
40
+ *
41
+ * Worktree-operation logging arrives through an injected `Logger` port
42
+ * (`deps.logger`), defaulting to `consoleLogger` — so the package carries no
43
+ * dependency on the host application's logger (PRD story 17).
44
+ */
45
+ import type { GitContextOptions, GitContextDeps, ExecOptions, CredentialPurpose } from './types.js';
46
+ import { type WorktreeForIssueResult } from './worktreeQueryOps.js';
47
+ import { type WorktreeRegistration } from './worktreeProbeOps.js';
48
+ import type { LogSinceOptions } from './gitReadOps.js';
49
+ export declare class GitContext {
50
+ #private;
51
+ constructor(options: GitContextOptions, deps?: GitContextDeps);
52
+ get basePath(): string;
53
+ get owner(): string;
54
+ get repo(): string;
55
+ get selfHost(): boolean;
56
+ worktreePathFor(branch: string): string;
57
+ /**
58
+ * Assembles a command's environment overlay. The credential is resolved
59
+ * through the TokenProvider port on **every call** — never captured at
60
+ * construction — so a long-running orchestrator's agent-subprocess call
61
+ * sites (buildPhase.ts, documentPhase.ts, reviewPhase.ts, prPhase.ts,
62
+ * prReviewPhase.ts, scenarioFixPhase.ts, promotionRotAdvisory.ts) each get a
63
+ * freshly-resolved credential per invocation. The credential is spread
64
+ * before the GIT_* identity assignments so a hostile or misbehaving
65
+ * provider can never displace the context's git identity; both are spread
66
+ * after `base`, preserving existing precedence for call sites that pass an
67
+ * overlay base.
68
+ */
69
+ commandEnv(base?: NodeJS.ProcessEnv, purpose?: CredentialPurpose): NodeJS.ProcessEnv;
70
+ /**
71
+ * The package's public, forge-neutral executor — the single spawn site.
72
+ * Every git/gh operation in this class, and every future forge adapter
73
+ * built on this package, reaches a child process through here.
74
+ *
75
+ * `command` is the FIRST POSITIONAL parameter by contract, not a field on
76
+ * `options`: `adws/checkGitGhGuard.ts`'s `git-gh-shellout` rule only
77
+ * inspects a call's first argument, so an options-object form would
78
+ * silently disable that guard for every consumer of this method.
79
+ *
80
+ * `options.cwd` is a working-directory CLASS, never a bare path, and there
81
+ * is no `process.cwd()` fallback — see `ExecWorkingDirectory`.
82
+ * `options.env` is a per-command credential/identity overlay merged over
83
+ * the inherited process environment; `process.env` itself is never
84
+ * mutated. `options.input`, when supplied, is piped to the child's stdin.
85
+ *
86
+ * Returns stdout, trimmed — every existing call site depends on this.
87
+ * A spawn failure caused by a missing working directory is rewrapped into
88
+ * an actionable error naming the path and repository identity, preserving
89
+ * `code: 'ENOENT'`; every other failure (including an ENOENT whose cwd
90
+ * genuinely exists) propagates verbatim.
91
+ *
92
+ * Deliberately forge-neutral: no credential-purpose parameter, no token
93
+ * selection, no forge vocabulary anywhere in this signature.
94
+ */
95
+ exec(command: string, options: ExecOptions): string;
96
+ getCurrentBranch(worktreePath?: string): string;
97
+ mergeLatestFromDefaultBranch(defaultBranch: string, worktreePath: string): void;
98
+ fetchAndResetToRemote(defaultBranch: string, worktreePath: string): void;
99
+ deleteLocalBranch(branch: string, worktreePath?: string): boolean;
100
+ deleteRemoteBranch(branch: string, worktreePath?: string): boolean;
101
+ commitChanges(message: string, worktreePath: string, opts?: {
102
+ excludePaths?: readonly string[];
103
+ }): boolean;
104
+ removeAndCommitPaths(paths: readonly string[], message: string, worktreePath: string): boolean;
105
+ addAndCommitPaths(paths: readonly string[], message: string, worktreePath: string): boolean;
106
+ pushBranch(branch: string, worktreePath: string): void;
107
+ getHeadTreeHash(worktreePath: string): string;
108
+ hasUncommittedChanges(worktreePath: string): boolean;
109
+ resetWorktree(worktreePath: string, branch: string): void;
110
+ createWorktree(branchName: string, baseBranch?: string): string;
111
+ createWorktreeForNewBranch(branchName: string, baseBranch?: string): string;
112
+ ensureWorktree(branchName: string, baseBranch?: string): string;
113
+ getWorktreeForBranch(branchName: string): string | null;
114
+ listWorktrees(): string[];
115
+ findWorktreeForIssue(prefixes: readonly string[], issueNumber: number): WorktreeForIssueResult | null;
116
+ removeWorktree(branchName: string): boolean;
117
+ removeWorktreesForIssue(issueNumber: number): number;
118
+ copyEnvToWorktree(worktreePath: string): void;
119
+ remoteUrl(cwd?: string): string;
120
+ remotes(cwd?: string): string[];
121
+ gitConfigUser(cwd?: string): {
122
+ name: string | null;
123
+ email: string | null;
124
+ };
125
+ resolveGitDir(worktreePath: string): string | null;
126
+ currentBranchSymbolic(worktreePath: string): string | null;
127
+ worktreeRegistration(worktreePath: string): WorktreeRegistration;
128
+ worktreeBranches(cwd?: string): string[];
129
+ localBranches(cwd?: string): string[];
130
+ mainRepoPath(cwd?: string): string;
131
+ fetchRemote(branch: string, cwd: string): void;
132
+ mergeBranch(ref: string, cwd: string, opts?: {
133
+ noCommit?: boolean;
134
+ noFf?: boolean;
135
+ noEdit?: boolean;
136
+ }): void;
137
+ abortMerge(cwd: string): void;
138
+ lsRemote(branch: string, cwd?: string): string;
139
+ addDetachedWorktree(worktreePath: string, ref: string, cwd: string): void;
140
+ commitAllowEmpty(message: string, cwd: string): void;
141
+ pushHeadToBranch(branch: string, cwd: string): void;
142
+ removeDetachedWorktree(worktreePath: string, cwd: string): void;
143
+ lsFiles(cwd: string, prefix?: string): string[];
144
+ headShort(cwd?: string): string;
145
+ diff(range: string, cwd: string): string;
146
+ log(branchName: string, cwd?: string): string;
147
+ show(ref: string, filePath: string, cwd?: string): string;
148
+ logSince(opts: LogSinceOptions, cwd?: string): string;
149
+ }
150
+ //# sourceMappingURL=gitContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitContext.d.ts","sourceRoot":"","sources":["../../src/git/gitContext.ts"],"names":[],"mappings":"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"}