ctxr-cli 0.5.0 → 0.7.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 (289) hide show
  1. package/dist/adapter.d.ts +0 -1
  2. package/dist/adapter.d.ts.map +1 -1
  3. package/dist/adapter.js.map +1 -1
  4. package/dist/adapters/builtin/index.d.ts.map +1 -1
  5. package/dist/adapters/builtin/index.js +2 -2
  6. package/dist/adapters/builtin/index.js.map +1 -1
  7. package/dist/adapters/harness/claude-code.d.ts.map +1 -1
  8. package/dist/adapters/harness/claude-code.js +30 -14
  9. package/dist/adapters/harness/claude-code.js.map +1 -1
  10. package/dist/adapters/harness/hermes-agent.d.ts +9 -0
  11. package/dist/adapters/harness/hermes-agent.d.ts.map +1 -0
  12. package/dist/adapters/harness/hermes-agent.js +13 -0
  13. package/dist/adapters/harness/hermes-agent.js.map +1 -0
  14. package/dist/adapters/types.d.ts +38 -18
  15. package/dist/adapters/types.d.ts.map +1 -1
  16. package/dist/adapters/types.js +3 -3
  17. package/dist/adapters/types.js.map +1 -1
  18. package/dist/commands/adapters-generate.d.ts +4 -2
  19. package/dist/commands/adapters-generate.d.ts.map +1 -1
  20. package/dist/commands/adapters-generate.js +14 -6
  21. package/dist/commands/adapters-generate.js.map +1 -1
  22. package/dist/commands/archive.d.ts +6 -4
  23. package/dist/commands/archive.d.ts.map +1 -1
  24. package/dist/commands/archive.js +7 -5
  25. package/dist/commands/archive.js.map +1 -1
  26. package/dist/commands/catalog-show.d.ts +0 -1
  27. package/dist/commands/catalog-show.d.ts.map +1 -1
  28. package/dist/commands/catalog-show.js +1 -1
  29. package/dist/commands/catalog-show.js.map +1 -1
  30. package/dist/commands/graph-query.d.ts +2 -11
  31. package/dist/commands/graph-query.d.ts.map +1 -1
  32. package/dist/commands/graph-query.js +11 -14
  33. package/dist/commands/graph-query.js.map +1 -1
  34. package/dist/commands/init.d.ts +2 -0
  35. package/dist/commands/init.d.ts.map +1 -1
  36. package/dist/commands/init.js +82 -21
  37. package/dist/commands/init.js.map +1 -1
  38. package/dist/commands/publish-check.d.ts +23 -0
  39. package/dist/commands/publish-check.d.ts.map +1 -0
  40. package/dist/commands/publish-check.js +112 -0
  41. package/dist/commands/publish-check.js.map +1 -0
  42. package/dist/commands/publish-gather.d.ts +27 -0
  43. package/dist/commands/publish-gather.d.ts.map +1 -0
  44. package/dist/commands/publish-gather.js +73 -0
  45. package/dist/commands/publish-gather.js.map +1 -0
  46. package/dist/commands/publish-new.d.ts +19 -0
  47. package/dist/commands/publish-new.d.ts.map +1 -0
  48. package/dist/commands/publish-new.js +108 -0
  49. package/dist/commands/publish-new.js.map +1 -0
  50. package/dist/commands/serve.d.ts +32 -0
  51. package/dist/commands/serve.d.ts.map +1 -0
  52. package/dist/commands/serve.js +151 -0
  53. package/dist/commands/serve.js.map +1 -0
  54. package/dist/commands/session-capture.d.ts.map +1 -1
  55. package/dist/commands/session-capture.js +0 -2
  56. package/dist/commands/session-capture.js.map +1 -1
  57. package/dist/commands/update.js +3 -3
  58. package/dist/commands/update.js.map +1 -1
  59. package/dist/config/defaults.d.ts +49 -44
  60. package/dist/config/defaults.d.ts.map +1 -1
  61. package/dist/config/defaults.js +49 -47
  62. package/dist/config/defaults.js.map +1 -1
  63. package/dist/config/schema.d.ts +53 -52
  64. package/dist/config/schema.d.ts.map +1 -1
  65. package/dist/config/schema.js +84 -62
  66. package/dist/config/schema.js.map +1 -1
  67. package/dist/core/agents-doc.d.ts +9 -0
  68. package/dist/core/agents-doc.d.ts.map +1 -1
  69. package/dist/core/agents-doc.js +31 -16
  70. package/dist/core/agents-doc.js.map +1 -1
  71. package/dist/core/browse/link-resolver.d.ts +12 -0
  72. package/dist/core/browse/link-resolver.d.ts.map +1 -0
  73. package/dist/core/browse/link-resolver.js +12 -0
  74. package/dist/core/browse/link-resolver.js.map +1 -0
  75. package/dist/core/browse/nav.d.ts +10 -0
  76. package/dist/core/browse/nav.d.ts.map +1 -0
  77. package/dist/core/browse/nav.js +101 -0
  78. package/dist/core/browse/nav.js.map +1 -0
  79. package/dist/core/browse/render.d.ts +5 -0
  80. package/dist/core/browse/render.d.ts.map +1 -0
  81. package/dist/core/browse/render.js +66 -0
  82. package/dist/core/browse/render.js.map +1 -0
  83. package/dist/core/browse/routes.d.ts +40 -0
  84. package/dist/core/browse/routes.d.ts.map +1 -0
  85. package/dist/core/browse/routes.js +68 -0
  86. package/dist/core/browse/routes.js.map +1 -0
  87. package/dist/core/browse/templates.d.ts +13 -0
  88. package/dist/core/browse/templates.d.ts.map +1 -0
  89. package/dist/core/browse/templates.js +39 -0
  90. package/dist/core/browse/templates.js.map +1 -0
  91. package/dist/core/browse/tree.d.ts +33 -0
  92. package/dist/core/browse/tree.d.ts.map +1 -0
  93. package/dist/core/browse/tree.js +53 -0
  94. package/dist/core/browse/tree.js.map +1 -0
  95. package/dist/core/catalog/build.d.ts +1 -1
  96. package/dist/core/catalog/build.d.ts.map +1 -1
  97. package/dist/core/catalog/build.js +1 -2
  98. package/dist/core/catalog/build.js.map +1 -1
  99. package/dist/core/catalog/model.d.ts +2 -0
  100. package/dist/core/catalog/model.d.ts.map +1 -1
  101. package/dist/core/catalog/model.js +2 -1
  102. package/dist/core/catalog/model.js.map +1 -1
  103. package/dist/core/checks/integrity-checks.d.ts +18 -2
  104. package/dist/core/checks/integrity-checks.d.ts.map +1 -1
  105. package/dist/core/checks/integrity-checks.js +55 -10
  106. package/dist/core/checks/integrity-checks.js.map +1 -1
  107. package/dist/core/checks/manifest.d.ts.map +1 -1
  108. package/dist/core/checks/manifest.js +0 -5
  109. package/dist/core/checks/manifest.js.map +1 -1
  110. package/dist/core/checks/organize-checks.d.ts +10 -3
  111. package/dist/core/checks/organize-checks.d.ts.map +1 -1
  112. package/dist/core/checks/organize-checks.js +14 -5
  113. package/dist/core/checks/organize-checks.js.map +1 -1
  114. package/dist/core/checks/types.d.ts +1 -1
  115. package/dist/core/convention-doc.d.ts +21 -19
  116. package/dist/core/convention-doc.d.ts.map +1 -1
  117. package/dist/core/convention-doc.js +48 -62
  118. package/dist/core/convention-doc.js.map +1 -1
  119. package/dist/core/conventions.d.ts +2 -2
  120. package/dist/core/conventions.js +2 -2
  121. package/dist/core/errors.d.ts +31 -44
  122. package/dist/core/errors.d.ts.map +1 -1
  123. package/dist/core/errors.js +81 -128
  124. package/dist/core/errors.js.map +1 -1
  125. package/dist/core/exit-codes.d.ts +7 -5
  126. package/dist/core/exit-codes.d.ts.map +1 -1
  127. package/dist/core/exit-codes.js +7 -5
  128. package/dist/core/exit-codes.js.map +1 -1
  129. package/dist/core/git/repo.d.ts +0 -6
  130. package/dist/core/git/repo.d.ts.map +1 -1
  131. package/dist/core/git/repo.js +0 -13
  132. package/dist/core/git/repo.js.map +1 -1
  133. package/dist/core/git/worktree.d.ts +4 -7
  134. package/dist/core/git/worktree.d.ts.map +1 -1
  135. package/dist/core/git/worktree.js +4 -10
  136. package/dist/core/git/worktree.js.map +1 -1
  137. package/dist/core/graph/model.d.ts +14 -0
  138. package/dist/core/graph/model.d.ts.map +1 -1
  139. package/dist/core/graph/model.js +30 -14
  140. package/dist/core/graph/model.js.map +1 -1
  141. package/dist/core/harness/bridge.d.ts +30 -0
  142. package/dist/core/harness/bridge.d.ts.map +1 -0
  143. package/dist/core/harness/bridge.js +178 -0
  144. package/dist/core/harness/bridge.js.map +1 -0
  145. package/dist/core/ingest/identity.d.ts +4 -4
  146. package/dist/core/ingest/identity.js +4 -4
  147. package/dist/core/json-config-merge.d.ts.map +1 -1
  148. package/dist/core/json-config-merge.js +30 -7
  149. package/dist/core/json-config-merge.js.map +1 -1
  150. package/dist/core/migrations/add-explanation-craft-skill.d.ts +26 -0
  151. package/dist/core/migrations/add-explanation-craft-skill.d.ts.map +1 -0
  152. package/dist/core/migrations/add-explanation-craft-skill.js +94 -0
  153. package/dist/core/migrations/add-explanation-craft-skill.js.map +1 -0
  154. package/dist/core/migrations/archive-destination-from-taxonomy.d.ts +35 -0
  155. package/dist/core/migrations/archive-destination-from-taxonomy.d.ts.map +1 -0
  156. package/dist/core/migrations/archive-destination-from-taxonomy.js +109 -0
  157. package/dist/core/migrations/archive-destination-from-taxonomy.js.map +1 -0
  158. package/dist/core/migrations/drop-access-axes.d.ts +24 -0
  159. package/dist/core/migrations/drop-access-axes.d.ts.map +1 -0
  160. package/dist/core/migrations/drop-access-axes.js +54 -0
  161. package/dist/core/migrations/drop-access-axes.js.map +1 -0
  162. package/dist/core/migrations/drop-forge-and-workspaces-external.d.ts +19 -0
  163. package/dist/core/migrations/drop-forge-and-workspaces-external.d.ts.map +1 -0
  164. package/dist/core/migrations/drop-forge-and-workspaces-external.js +49 -0
  165. package/dist/core/migrations/drop-forge-and-workspaces-external.js.map +1 -0
  166. package/dist/core/migrations/registry.d.ts +11 -1
  167. package/dist/core/migrations/registry.d.ts.map +1 -1
  168. package/dist/core/migrations/registry.js +19 -3
  169. package/dist/core/migrations/registry.js.map +1 -1
  170. package/dist/core/notes/list.d.ts +1 -12
  171. package/dist/core/notes/list.d.ts.map +1 -1
  172. package/dist/core/notes/list.js +5 -1
  173. package/dist/core/notes/list.js.map +1 -1
  174. package/dist/core/publish/script-check.d.ts +12 -0
  175. package/dist/core/publish/script-check.d.ts.map +1 -0
  176. package/dist/core/publish/script-check.js +39 -0
  177. package/dist/core/publish/script-check.js.map +1 -0
  178. package/dist/core/reconcile.d.ts +3 -0
  179. package/dist/core/reconcile.d.ts.map +1 -1
  180. package/dist/core/reconcile.js +15 -5
  181. package/dist/core/reconcile.js.map +1 -1
  182. package/dist/core/records.d.ts +4 -5
  183. package/dist/core/records.d.ts.map +1 -1
  184. package/dist/core/records.js +0 -2
  185. package/dist/core/records.js.map +1 -1
  186. package/dist/core/session.d.ts +9 -9
  187. package/dist/core/session.js +9 -9
  188. package/dist/core/skills.d.ts +42 -0
  189. package/dist/core/skills.d.ts.map +1 -1
  190. package/dist/core/skills.js +159 -31
  191. package/dist/core/skills.js.map +1 -1
  192. package/dist/core/write-lifecycle/path-gate.d.ts.map +1 -1
  193. package/dist/core/write-lifecycle/path-gate.js +4 -2
  194. package/dist/core/write-lifecycle/path-gate.js.map +1 -1
  195. package/dist/prompt/inquirer-prompter.d.ts.map +1 -1
  196. package/dist/prompt/inquirer-prompter.js +11 -1
  197. package/dist/prompt/inquirer-prompter.js.map +1 -1
  198. package/dist/prompt/prompter.d.ts +16 -0
  199. package/dist/prompt/prompter.d.ts.map +1 -1
  200. package/dist/run.d.ts.map +1 -1
  201. package/dist/run.js +69 -101
  202. package/dist/run.js.map +1 -1
  203. package/dist/taxonomy/profiles.d.ts +11 -0
  204. package/dist/taxonomy/profiles.d.ts.map +1 -1
  205. package/dist/taxonomy/profiles.js +1 -0
  206. package/dist/taxonomy/profiles.js.map +1 -1
  207. package/dist/version.d.ts +1 -1
  208. package/dist/version.js +1 -1
  209. package/package.json +3 -1
  210. package/templates/agents/canonical.md +1 -3
  211. package/templates/conventions/baseline-conventions.md +27 -0
  212. package/templates/conventions/{custom-convention-seed.md → house-conventions-seed.md} +15 -2
  213. package/templates/hooks/pre-push.sh +1 -1
  214. package/templates/serve/shell.html +18 -0
  215. package/templates/serve/style.css +163 -0
  216. package/templates/skills/ctxr-land.md +32 -18
  217. package/templates/skills/ctxr-organize-audit.md +2 -10
  218. package/templates/skills/ctxr-placement.md +6 -24
  219. package/templates/skills/ctxr-publish.md +84 -0
  220. package/templates/skills/ctxr-session-capture.md +43 -3
  221. package/templates/skills/ctxr-session-lifecycle.md +20 -1
  222. package/templates/skills/ctxr-submit.md +15 -11
  223. package/templates/vendor/eli5/LICENSE.txt +21 -0
  224. package/templates/vendor/eli5/SKILL.md +116 -0
  225. package/templates/vendor/eli5/provenance.json +8 -0
  226. package/templates/vendor/frontend-design/LICENSE.txt +177 -0
  227. package/templates/vendor/frontend-design/SKILL.md +55 -0
  228. package/templates/vendor/frontend-design/provenance.json +7 -0
  229. package/dist/adapters/forge/github.d.ts +0 -12
  230. package/dist/adapters/forge/github.d.ts.map +0 -1
  231. package/dist/adapters/forge/github.js +0 -76
  232. package/dist/adapters/forge/github.js.map +0 -1
  233. package/dist/adapters/forge/types.d.ts +0 -46
  234. package/dist/adapters/forge/types.d.ts.map +0 -1
  235. package/dist/adapters/forge/types.js +0 -2
  236. package/dist/adapters/forge/types.js.map +0 -1
  237. package/dist/commands/check.d.ts +0 -30
  238. package/dist/commands/check.d.ts.map +0 -1
  239. package/dist/commands/check.js +0 -70
  240. package/dist/commands/check.js.map +0 -1
  241. package/dist/commands/note-resolve.d.ts +0 -14
  242. package/dist/commands/note-resolve.d.ts.map +0 -1
  243. package/dist/commands/note-resolve.js +0 -24
  244. package/dist/commands/note-resolve.js.map +0 -1
  245. package/dist/commands/session-abandon.d.ts +0 -13
  246. package/dist/commands/session-abandon.d.ts.map +0 -1
  247. package/dist/commands/session-abandon.js +0 -22
  248. package/dist/commands/session-abandon.js.map +0 -1
  249. package/dist/commands/session-land.d.ts +0 -45
  250. package/dist/commands/session-land.d.ts.map +0 -1
  251. package/dist/commands/session-land.js +0 -171
  252. package/dist/commands/session-land.js.map +0 -1
  253. package/dist/commands/session-reap.d.ts +0 -22
  254. package/dist/commands/session-reap.d.ts.map +0 -1
  255. package/dist/commands/session-reap.js +0 -52
  256. package/dist/commands/session-reap.js.map +0 -1
  257. package/dist/commands/session-submit.d.ts +0 -29
  258. package/dist/commands/session-submit.d.ts.map +0 -1
  259. package/dist/commands/session-submit.js +0 -72
  260. package/dist/commands/session-submit.js.map +0 -1
  261. package/dist/core/checks/disclosure-checks.d.ts +0 -4
  262. package/dist/core/checks/disclosure-checks.d.ts.map +0 -1
  263. package/dist/core/checks/disclosure-checks.js +0 -24
  264. package/dist/core/checks/disclosure-checks.js.map +0 -1
  265. package/dist/core/disclosure/leak-scan.d.ts +0 -19
  266. package/dist/core/disclosure/leak-scan.d.ts.map +0 -1
  267. package/dist/core/disclosure/leak-scan.js +0 -31
  268. package/dist/core/disclosure/leak-scan.js.map +0 -1
  269. package/dist/core/disclosure/model.d.ts +0 -18
  270. package/dist/core/disclosure/model.d.ts.map +0 -1
  271. package/dist/core/disclosure/model.js +0 -45
  272. package/dist/core/disclosure/model.js.map +0 -1
  273. package/dist/core/graph/visibility-filter.d.ts +0 -13
  274. package/dist/core/graph/visibility-filter.d.ts.map +0 -1
  275. package/dist/core/graph/visibility-filter.js +0 -26
  276. package/dist/core/graph/visibility-filter.js.map +0 -1
  277. package/dist/core/migrations/rename-visibility-field.d.ts +0 -3
  278. package/dist/core/migrations/rename-visibility-field.d.ts.map +0 -1
  279. package/dist/core/migrations/rename-visibility-field.js +0 -62
  280. package/dist/core/migrations/rename-visibility-field.js.map +0 -1
  281. package/dist/core/notes/checks.d.ts +0 -20
  282. package/dist/core/notes/checks.d.ts.map +0 -1
  283. package/dist/core/notes/checks.js +0 -58
  284. package/dist/core/notes/checks.js.map +0 -1
  285. package/dist/core/notes/visibility.d.ts +0 -26
  286. package/dist/core/notes/visibility.d.ts.map +0 -1
  287. package/dist/core/notes/visibility.js +0 -41
  288. package/dist/core/notes/visibility.js.map +0 -1
  289. package/templates/conventions/baseline-convention.md +0 -60
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/adapters/forge/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,uBAAuB,EAAoB,MAAM,YAAY,CAAC;AAMrH,+JAA+J;AAC/J,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAW9E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB,CAW5E;AAWD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAkDhC,CAAC"}
@@ -1,76 +0,0 @@
1
- import { execFile } from 'node:child_process';
2
- import { promisify } from 'node:util';
3
- const execFileAsync = promisify(execFile);
4
- const PR_NUMBER_RE = /\/pull\/(\d+)/;
5
- /** GitHub's own vocabulary, normalized to the adapter interface's small unions — kept pure and exported so tests exercise the mapping without a subprocess. */
6
- export function mapPullRequestState(ghState) {
7
- switch (ghState) {
8
- case 'OPEN':
9
- return 'open';
10
- case 'MERGED':
11
- return 'merged';
12
- case 'CLOSED':
13
- return 'closed';
14
- default:
15
- throw new Error(`Internal error: unrecognized GitHub pull request state "${ghState}".`);
16
- }
17
- }
18
- export function mapMergeability(ghMergeable) {
19
- switch (ghMergeable) {
20
- case 'MERGEABLE':
21
- return 'mergeable';
22
- case 'CONFLICTING':
23
- return 'conflicting';
24
- case 'UNKNOWN':
25
- return 'unknown';
26
- default:
27
- throw new Error(`Internal error: unrecognized GitHub mergeable status "${ghMergeable}".`);
28
- }
29
- }
30
- /**
31
- * The reference forge adapter, shelling out to `gh` (same tool, same
32
- * pattern as `git` itself) rather than a token-based REST client — simpler
33
- * to implement correctly, and consistent with how every other git-adjacent
34
- * operation in this codebase is invoked.
35
- */
36
- export const githubForgeAdapter = {
37
- id: 'github',
38
- kind: 'forge',
39
- interfaceVersion: 2,
40
- async isAvailable(cwd) {
41
- try {
42
- // `gh auth status` alone only proves SOME host has stored credentials —
43
- // it says nothing about whether THIS repo's remote is even a GitHub
44
- // remote. `gh repo view` fails unless the current repo's remote
45
- // resolves to a real, reachable GitHub repository, which is the
46
- // actual question `session submit` needs answered.
47
- await execFileAsync('gh', ['repo', 'view'], { cwd });
48
- return true;
49
- }
50
- catch {
51
- return false;
52
- }
53
- },
54
- async openPullRequest(input) {
55
- const { stdout } = await execFileAsync('gh', ['pr', 'create', '--head', input.branch, '--base', input.baseBranch, '--title', input.title, '--body', input.body], { cwd: input.cwd });
56
- const url = stdout.trim();
57
- const match = PR_NUMBER_RE.exec(url);
58
- return { url, number: match?.[1] ? Number(match[1]) : null };
59
- },
60
- async pullRequest(cwd, ref) {
61
- const { stdout } = await execFileAsync('gh', ['pr', 'view', ref, '--json', 'number,url,title,state,mergeable,headRefName'], { cwd });
62
- const data = JSON.parse(stdout);
63
- return {
64
- number: data.number,
65
- url: data.url,
66
- title: data.title,
67
- state: mapPullRequestState(data.state),
68
- mergeable: mapMergeability(data.mergeable),
69
- headBranch: data.headRefName,
70
- };
71
- },
72
- async mergePullRequest(cwd, number, method) {
73
- await execFileAsync('gh', ['pr', 'merge', String(number), `--${method}`], { cwd });
74
- },
75
- };
76
- //# sourceMappingURL=github.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/adapters/forge/github.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import type { Adapter } from '../types.js';
2
- /**
3
- * write-lifecycle/adapters spec: the forge adapter interface — one of the
4
- * three v1 adapter kinds. `isAvailable` is what lets `session submit`
5
- * degrade to manual-PR instructions rather than failing when no forge is
6
- * configured or reachable.
7
- */
8
- export interface OpenPullRequestInput {
9
- cwd: string;
10
- branch: string;
11
- baseBranch: string;
12
- title: string;
13
- body: string;
14
- }
15
- export interface OpenPullRequestResult {
16
- url: string;
17
- number: number | null;
18
- }
19
- /** session-submit-and-land spec (D5): the forge's own vocabulary, normalized to one small union per axis. */
20
- export type PullRequestLifecycleState = 'open' | 'merged' | 'closed';
21
- export type PullRequestMergeability = 'mergeable' | 'conflicting' | 'unknown';
22
- export type MergeMethod = 'squash' | 'merge' | 'rebase';
23
- export interface PullRequestState {
24
- number: number;
25
- url: string;
26
- title: string;
27
- state: PullRequestLifecycleState;
28
- mergeable: PullRequestMergeability;
29
- headBranch: string;
30
- }
31
- /**
32
- * session-submit-and-land spec (D5): interface version 2 — `pullRequest`
33
- * and `mergePullRequest` join availability and pull-request opening, so
34
- * `ctxr session land` can read a pull request's state and merge it. A v1
35
- * forge adapter (this interface's prior shape) cannot land; the adapters
36
- * capability's compatibility check reports that mismatch before any session
37
- * command relies on it.
38
- */
39
- export interface ForgeAdapter extends Adapter<'forge'> {
40
- isAvailable(cwd: string): Promise<boolean>;
41
- openPullRequest(input: OpenPullRequestInput): Promise<OpenPullRequestResult>;
42
- /** `ref` is a branch name or a pull-request number as a string; either resolves the same pull request. */
43
- pullRequest(cwd: string, ref: string): Promise<PullRequestState>;
44
- mergePullRequest(cwd: string, number: number, method: MergeMethod): Promise<void>;
45
- }
46
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/forge/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,6GAA6G;AAC7G,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACrE,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAE9E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,yBAAyB,CAAC;IACjC,SAAS,EAAE,uBAAuB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,OAAO,CAAC;IACpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7E,0GAA0G;IAC1G,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjE,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/forge/types.ts"],"names":[],"mappings":""}
@@ -1,30 +0,0 @@
1
- import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
- import type { DisclosureRung, DisclosureVerdict } from '../core/disclosure/model.js';
3
- import { type LeakFinding } from '../core/disclosure/leak-scan.js';
4
- import type { RunEnv } from '../core/env.js';
5
- import type { Store } from '../core/store.js';
6
- export declare const requires: CommandRequires;
7
- export interface CheckFlags {
8
- path: string;
9
- audience?: string;
10
- scan?: boolean;
11
- }
12
- export interface CheckData {
13
- path: string;
14
- audience?: string;
15
- verdict?: DisclosureVerdict;
16
- rung?: DisclosureRung;
17
- leaks?: LeakFinding[];
18
- }
19
- /**
20
- * disclosure-policy spec: the tri-state ALLOW/DENY/ASK verdict, each with
21
- * its own documented exit code (cli-contract's reserved 4/5), printing the
22
- * rung that produced it so a script or a human can see WHY, not just WHAT.
23
- *
24
- * store-primitives-from-migration-audit spec (D3): `--scan` is a second,
25
- * independent mode — the same leak scan `ctxr lint` runs, for one note —
26
- * and does not require `--audience` (a leak isn't about one requesting
27
- * audience; it's about every configured marker context at once).
28
- */
29
- export declare function execute(env: RunEnv, store: Store, flags: CheckFlags): Promise<CommandOutcome<CheckData>>;
30
- //# sourceMappingURL=check.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErF,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAaD;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CA6C9G"}
@@ -1,70 +0,0 @@
1
- import path from 'node:path';
2
- import { evaluateDisclosure } from '../core/disclosure/model.js';
3
- import { scanNoteForLeaks } from '../core/disclosure/leak-scan.js';
4
- import { CheckAudienceRequiredError, NoteNotFoundError } from '../core/errors.js';
5
- import { ExitCode } from '../core/exit-codes.js';
6
- import { parseNote } from '../core/notes/parse.js';
7
- export const requires = { store: 'required' };
8
- const VERDICT_EXIT_CODE = {
9
- allow: ExitCode.Ok,
10
- deny: ExitCode.DisclosureDeny,
11
- ask: ExitCode.DisclosureAsk,
12
- };
13
- function toStoreRelativePath(env, store, givenPath) {
14
- const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
15
- return path.relative(store.root, absolute).split(path.sep).join('/');
16
- }
17
- /**
18
- * disclosure-policy spec: the tri-state ALLOW/DENY/ASK verdict, each with
19
- * its own documented exit code (cli-contract's reserved 4/5), printing the
20
- * rung that produced it so a script or a human can see WHY, not just WHAT.
21
- *
22
- * store-primitives-from-migration-audit spec (D3): `--scan` is a second,
23
- * independent mode — the same leak scan `ctxr lint` runs, for one note —
24
- * and does not require `--audience` (a leak isn't about one requesting
25
- * audience; it's about every configured marker context at once).
26
- */
27
- export async function execute(env, store, flags) {
28
- const relativePath = toStoreRelativePath(env, store, flags.path);
29
- const absolutePath = path.join(store.root, relativePath);
30
- let note;
31
- try {
32
- note = await parseNote(absolutePath, relativePath);
33
- }
34
- catch (err) {
35
- if (err.code === 'ENOENT')
36
- throw new NoteNotFoundError(relativePath);
37
- throw err;
38
- }
39
- if (flags.scan) {
40
- const leaks = scanNoteForLeaks(store.config, note);
41
- const findings = leaks.map((leak) => ({
42
- code: 'disclosure.leak',
43
- severity: 'warning',
44
- message: `"${leak.path}" matches a marker for context "${leak.context}", which cannot see this note: "${leak.matchedText}".`,
45
- subject: leak.path,
46
- details: { context: leak.context, pattern: leak.pattern, matchedText: leak.matchedText },
47
- }));
48
- return {
49
- exitCode: leaks.length > 0 ? ExitCode.CheckFailed : ExitCode.Ok,
50
- data: { path: relativePath, leaks },
51
- findings,
52
- humanSummary: leaks.length > 0 ? `${relativePath}: ${leaks.length} leak(s) found.` : `${relativePath}: no leaks found.`,
53
- storeRoot: store.root,
54
- schemaVersion: store.config.schema_version,
55
- };
56
- }
57
- if (!flags.audience) {
58
- throw new CheckAudienceRequiredError();
59
- }
60
- const { verdict, rung } = evaluateDisclosure(store.config, note, flags.audience);
61
- return {
62
- exitCode: VERDICT_EXIT_CODE[verdict],
63
- data: { path: relativePath, audience: flags.audience, verdict, rung },
64
- findings: [],
65
- humanSummary: `${relativePath} for audience "${flags.audience}": ${verdict.toUpperCase()} (rung: ${rung})`,
66
- storeRoot: store.root,
67
- schemaVersion: store.config.schema_version,
68
- };
69
- }
70
- //# sourceMappingURL=check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
- import type { RunEnv } from '../core/env.js';
3
- import type { Store } from '../core/store.js';
4
- export declare const requires: CommandRequires;
5
- export interface NoteResolveFlags {
6
- path: string;
7
- }
8
- export interface NoteResolveData {
9
- path: string;
10
- visibility: string;
11
- reason: string;
12
- }
13
- export declare function execute(env: RunEnv, store: Store, flags: NoteResolveFlags): Promise<CommandOutcome<NoteResolveData>>;
14
- //# sourceMappingURL=note-resolve.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"note-resolve.d.ts","sourceRoot":"","sources":["../../src/commands/note-resolve.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAc1C"}
@@ -1,24 +0,0 @@
1
- import path from 'node:path';
2
- import { ExitCode } from '../core/exit-codes.js';
3
- import { parseNote } from '../core/notes/parse.js';
4
- import { resolveVisibility } from '../core/notes/visibility.js';
5
- export const requires = { store: 'required' };
6
- function toStoreRelativePath(env, store, givenPath) {
7
- const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
8
- return path.relative(store.root, absolute).split(path.sep).join('/');
9
- }
10
- export async function execute(env, store, flags) {
11
- const relativePath = toStoreRelativePath(env, store, flags.path);
12
- const absolutePath = path.join(store.root, relativePath);
13
- const note = await parseNote(absolutePath, relativePath);
14
- const resolution = resolveVisibility(store.config, note);
15
- return {
16
- exitCode: ExitCode.Ok,
17
- data: { path: relativePath, visibility: resolution.value, reason: resolution.reason },
18
- findings: [],
19
- humanSummary: `${relativePath}: ${resolution.value} (${resolution.reason})`,
20
- storeRoot: store.root,
21
- schemaVersion: store.config.schema_version,
22
- };
23
- }
24
- //# sourceMappingURL=note-resolve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"note-resolve.js","sourceRoot":"","sources":["../../src/commands/note-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAY/D,SAAS,mBAAmB,CAAC,GAAW,EAAE,KAAY,EAAE,SAAiB;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAW,EACX,KAAY,EACZ,KAAuB;IAEvB,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEzD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;QACrF,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,GAAG,YAAY,KAAK,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM,GAAG;QAC3E,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
@@ -1,13 +0,0 @@
1
- import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
- import type { RunEnv } from '../core/env.js';
3
- import type { Store } from '../core/store.js';
4
- export declare const requires: CommandRequires;
5
- export interface SessionAbandonFlags {
6
- branch: string;
7
- }
8
- export interface SessionAbandonData {
9
- branch: string;
10
- worktree: string;
11
- }
12
- export declare function execute(env: RunEnv, store: Store, flags: SessionAbandonFlags): Promise<CommandOutcome<SessionAbandonData>>;
13
- //# sourceMappingURL=session-abandon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-abandon.d.ts","sourceRoot":"","sources":["../../src/commands/session-abandon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAkB7C"}
@@ -1,22 +0,0 @@
1
- import { SessionNotFoundError } from '../core/errors.js';
2
- import { ExitCode } from '../core/exit-codes.js';
3
- import { deleteBranch, listWorktrees, removeWorktree } from '../core/git/worktree.js';
4
- export const requires = { store: 'required' };
5
- export async function execute(env, store, flags) {
6
- const worktrees = await listWorktrees(env.git, store.root);
7
- const match = worktrees.find((w) => w.branch === flags.branch);
8
- if (!match) {
9
- throw new SessionNotFoundError(flags.branch);
10
- }
11
- await removeWorktree(env.git, store.root, match.path, { force: true });
12
- await deleteBranch(env.git, store.root, flags.branch, { force: true });
13
- return {
14
- exitCode: ExitCode.Ok,
15
- data: { branch: flags.branch, worktree: match.path },
16
- findings: [],
17
- humanSummary: `Abandoned session "${flags.branch}" and removed its worktree.`,
18
- storeRoot: store.root,
19
- schemaVersion: store.config.schema_version,
20
- };
21
- }
22
- //# sourceMappingURL=session-abandon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-abandon.js","sourceRoot":"","sources":["../../src/commands/session-abandon.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGtF,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAW/D,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAW,EACX,KAAY,EACZ,KAA0B;IAE1B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;QACpD,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,sBAAsB,KAAK,CAAC,MAAM,6BAA6B;QAC7E,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
@@ -1,45 +0,0 @@
1
- import type { MergeMethod } from '../adapters/forge/types.js';
2
- import type { Adapter } from '../adapters/types.js';
3
- import type { CommandOutcome, CommandRequires } from '../core/command.js';
4
- import { type RunEnv } from '../core/env.js';
5
- import type { Store } from '../core/store.js';
6
- export declare const requires: CommandRequires;
7
- export interface SessionLandFlags {
8
- pr?: number;
9
- branch?: string;
10
- yes?: boolean;
11
- mergeMethod?: MergeMethod;
12
- reap?: boolean;
13
- }
14
- export interface SyncOutcome {
15
- attempted: boolean;
16
- synced: boolean;
17
- reason?: string;
18
- }
19
- export interface ReapOutcome {
20
- attempted: boolean;
21
- reaped: boolean;
22
- reason?: string;
23
- }
24
- export interface SessionLandData {
25
- branch: string;
26
- pr: {
27
- number: number;
28
- url: string;
29
- title: string;
30
- state: string;
31
- mergeable: string;
32
- };
33
- gate: 'confirmed' | 'declined' | 'not_required';
34
- merged: boolean;
35
- sync: SyncOutcome;
36
- reap: ReapOutcome;
37
- }
38
- /**
39
- * session-submit-and-land spec (D1): every step re-reads live state (the
40
- * pull request's state, the root checkout's branch, the worktree list), so
41
- * a retry after a partial failure is just running the command again — it
42
- * naturally skips whatever already happened rather than replaying it.
43
- */
44
- export declare function execute(env: RunEnv, store: Store, flags: SessionLandFlags, registry?: readonly Adapter[]): Promise<CommandOutcome<SessionLandData>>;
45
- //# sourceMappingURL=session-land.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-land.d.ts","sourceRoot":"","sources":["../../src/commands/session-land.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAe5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACrF,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,gBAAgB,EACvB,QAAQ,GAAE,SAAS,OAAO,EAAqB,GAC9C,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAwE1C"}
@@ -1,171 +0,0 @@
1
- import path from 'node:path';
2
- import { configuredAdapters } from '../adapters/registry.js';
3
- import { BUILTIN_ADAPTERS } from '../adapters/builtin/index.js';
4
- import { isInteractive } from '../core/env.js';
5
- import { MergeNotConfirmedError, NoForgeConfiguredError, PullRequestClosedError, PullRequestHeadMismatchError, PullRequestNotMergeableError, SessionLandConsentRequiredError, SessionLandOnDefaultBranchError, } from '../core/errors.js';
6
- import { ExitCode } from '../core/exit-codes.js';
7
- import { currentBranch } from '../core/git/repo.js';
8
- import { fetchOrigin, listWorktrees, mainWorktreePath, removeWorktree, deleteBranch, hasRemote } from '../core/git/worktree.js';
9
- import { isWorkingTreeClean } from '../core/git/repo.js';
10
- import { isSessionBranch, isSessionWorktreePath } from '../core/session.js';
11
- export const requires = { store: 'required' };
12
- /**
13
- * session-submit-and-land spec (D1): every step re-reads live state (the
14
- * pull request's state, the root checkout's branch, the worktree list), so
15
- * a retry after a partial failure is just running the command again — it
16
- * naturally skips whatever already happened rather than replaying it.
17
- */
18
- export async function execute(env, store, flags, registry = BUILTIN_ADAPTERS) {
19
- // D1 / the non-interactive-consent scenario: fails before reading or
20
- // changing anything on the forge — checked first, before any git or
21
- // network call at all.
22
- if (!flags.yes && !isInteractive(env)) {
23
- throw new SessionLandConsentRequiredError();
24
- }
25
- const defaultBranch = store.config.git.default_branch;
26
- // The target comes from exactly one source: --branch names it outright,
27
- // --pr defers to the pull request's head branch, and with neither it is the
28
- // branch checked out where the command was invoked. Only the first two are
29
- // knowable without the forge, so only they can be refused before contacting it.
30
- const requested = flags.branch ?? (flags.pr === undefined ? await currentBranch(env.git, store.root) : undefined);
31
- if (requested === defaultBranch) {
32
- throw new SessionLandOnDefaultBranchError(requested);
33
- }
34
- const [forgeAdapter] = configuredAdapters(store.config, 'forge', registry);
35
- if (!forgeAdapter || !(await forgeAdapter.isAvailable(store.root))) {
36
- throw new NoForgeConfiguredError();
37
- }
38
- const ref = flags.pr !== undefined ? String(flags.pr) : requested;
39
- let pr = await forgeAdapter.pullRequest(store.root, ref);
40
- if (requested === undefined) {
41
- // The target IS the head branch, so there is nothing to mismatch — but the
42
- // default branch is still refused, now on the branch the forge reported.
43
- if (pr.headBranch === defaultBranch) {
44
- throw new SessionLandOnDefaultBranchError(pr.headBranch);
45
- }
46
- }
47
- else if (pr.headBranch !== requested) {
48
- throw new PullRequestHeadMismatchError(requested, pr.headBranch);
49
- }
50
- const branch = requested ?? pr.headBranch;
51
- let merged = pr.state === 'merged';
52
- let gate = 'not_required';
53
- if (pr.state === 'closed') {
54
- throw new PullRequestClosedError(pr.number);
55
- }
56
- if (pr.state === 'open') {
57
- if (pr.mergeable === 'unknown') {
58
- pr = await forgeAdapter.pullRequest(store.root, ref); // D1: re-query once before stopping
59
- }
60
- if (pr.mergeable === 'conflicting' || pr.mergeable === 'unknown') {
61
- throw new PullRequestNotMergeableError(pr.number, pr.mergeable);
62
- }
63
- // pr.mergeable === 'mergeable' from here on.
64
- const confirmed = flags.yes ? true : await env.prompter.confirm({ message: gateMessage(pr) });
65
- gate = confirmed ? 'confirmed' : 'declined';
66
- if (!confirmed) {
67
- return outcome(store, branch, pr, gate, false, { attempted: false, synced: false }, { attempted: false, reaped: false });
68
- }
69
- await forgeAdapter.mergePullRequest(store.root, pr.number, flags.mergeMethod ?? 'squash');
70
- const after = await forgeAdapter.pullRequest(store.root, ref);
71
- if (after.state !== 'merged') {
72
- throw new MergeNotConfirmedError(pr.number);
73
- }
74
- pr = after;
75
- merged = true;
76
- }
77
- const clone = await mainWorktreePath(env.git, store.root);
78
- const sync = await syncCanonicalClone(env, clone, defaultBranch);
79
- const reap = await reapWorktree(env, store, clone, branch, flags.reap ?? false);
80
- return outcome(store, branch, pr, gate, merged, sync, reap);
81
- }
82
- function gateMessage(pr) {
83
- return `PR #${pr.number} "${pr.title}" (${pr.url}) — OPEN, MERGEABLE. Merge?`;
84
- }
85
- /**
86
- * D2: fast-forward only, in the store's canonical clone — the checkout the
87
- * default branch lives in, whichever checkout the command was invoked from
88
- * (a session worktree, most often). Never checked out, reset, or discarded.
89
- */
90
- async function syncCanonicalClone(env, clone, defaultBranch) {
91
- const branch = await currentBranch(env.git, clone);
92
- if (branch !== defaultBranch) {
93
- return { attempted: false, synced: false, reason: `the canonical clone (${clone}) is not on the default branch` };
94
- }
95
- if (!(await hasRemote(env.git, clone))) {
96
- return { attempted: false, synced: false, reason: 'no remote configured' };
97
- }
98
- const fetched = await fetchOrigin(env.git, clone, defaultBranch);
99
- if (!fetched) {
100
- return { attempted: true, synced: false, reason: 'fetch failed' };
101
- }
102
- const merge = await env.git.run(['merge', '--ff-only', `origin/${defaultBranch}`], { cwd: clone, allowFailure: true });
103
- if (merge.exitCode !== 0) {
104
- return { attempted: true, synced: false, reason: 'cannot fast-forward (diverged from origin)' };
105
- }
106
- return { attempted: true, synced: true };
107
- }
108
- /** D3: opt-in, and scoped to a worktree `session start` made — never the one this command is currently running from. */
109
- async function reapWorktree(env, store, clone, branch, requested) {
110
- if (!requested) {
111
- return { attempted: false, reaped: false, reason: 'pass --reap, or run `ctxr session reap`' };
112
- }
113
- const worktrees = await listWorktrees(env.git, clone);
114
- const target = worktrees.find((w) => w.branch === branch);
115
- if (!target) {
116
- return { attempted: true, reaped: false, reason: 'no worktree found for this branch' };
117
- }
118
- if (!isSessionBranch(store.config, branch) && !isSessionWorktreePath(store.config, target.path)) {
119
- return { attempted: true, reaped: false, reason: 'not a session worktree' };
120
- }
121
- // The hazard is the INVOKING directory, not the resolved store root: removing
122
- // the worktree this process stands in pulls the caller's cwd out from under it.
123
- if (isInside(env.cwd, target.path)) {
124
- return {
125
- attempted: true,
126
- reaped: false,
127
- reason: `cannot remove the worktree this command is running from; re-run from the canonical clone (${clone}), or run \`ctxr session reap\` there`,
128
- };
129
- }
130
- if (!(await isWorkingTreeClean(env.git, target.path))) {
131
- return { attempted: true, reaped: false, reason: 'worktree has uncommitted changes' };
132
- }
133
- await removeWorktree(env.git, clone, target.path);
134
- await deleteBranch(env.git, clone, branch);
135
- return { attempted: true, reaped: true };
136
- }
137
- /** True when `dir` IS `parent` or lies anywhere beneath it. */
138
- function isInside(dir, parent) {
139
- const resolved = path.resolve(dir);
140
- const root = path.resolve(parent);
141
- return resolved === root || resolved.startsWith(root + path.sep);
142
- }
143
- /** A step that did not happen names why, whether or not it was attempted — `attempted` stays on the JSON outcome for callers that distinguish the two. */
144
- function stepSummary(done, reason) {
145
- if (done)
146
- return 'ok';
147
- return reason ? `skipped: ${reason}` : 'not attempted';
148
- }
149
- function outcome(store, branch, pr, gate, merged, sync, reap) {
150
- const summary = gate === 'declined'
151
- ? `Merge declined for PR #${pr.number}; nothing landed.`
152
- : `PR #${pr.number} ${merged ? 'merged' : 'not merged'}` +
153
- `; sync ${stepSummary(sync.synced, sync.reason)}` +
154
- `; reap ${stepSummary(reap.reaped, reap.reason)}.`;
155
- return {
156
- exitCode: ExitCode.Ok,
157
- data: {
158
- branch,
159
- pr: { number: pr.number, url: pr.url, title: pr.title, state: pr.state, mergeable: pr.mergeable },
160
- gate,
161
- merged,
162
- sync,
163
- reap,
164
- },
165
- findings: [],
166
- humanSummary: summary,
167
- storeRoot: store.root,
168
- schemaVersion: store.config.schema_version,
169
- };
170
- }
171
- //# sourceMappingURL=session-land.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-land.js","sourceRoot":"","sources":["../../src/commands/session-land.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAChI,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAG5E,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AA+B/D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAW,EACX,KAAY,EACZ,KAAuB,EACvB,QAAQ,GAAuB,gBAAgB;IAE/C,qEAAqE;IACrE,oEAAoE;IACpE,uBAAuB;IACvB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,+BAA+B,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IACtD,wEAAwE;IACxE,4EAA4E;IAC5E,2EAA2E;IAC3E,gFAAgF;IAChF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClH,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,MAAM,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3E,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,sBAAsB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,SAAoB,CAAC;IAC9E,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,2EAA2E;QAC3E,yEAAyE;QACzE,IAAI,EAAE,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;YACpC,MAAM,IAAI,+BAA+B,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;SAAM,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,4BAA4B,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC;IAE1C,IAAI,MAAM,GAAG,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC;IACnC,IAAI,IAAI,GAA4B,cAAc,CAAC;IAEnD,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,sBAAsB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC/B,EAAE,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,oCAAoC;QAC5F,CAAC;QACD,IAAI,EAAE,CAAC,SAAS,KAAK,aAAa,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjE,MAAM,IAAI,4BAA4B,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QAClE,CAAC;QAED,6CAA6C;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9F,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3H,CAAC;QAED,MAAM,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC;QAC1F,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,sBAAsB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QACD,EAAE,GAAG,KAAK,CAAC;QACX,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;IAEhF,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,WAAW,CAAC,EAAoB;IACvC,OAAO,OAAO,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,GAAG,6BAA6B,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,KAAa,EAAE,aAAqB;IACjF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,KAAK,gCAAgC,EAAE,CAAC;IACpH,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAC7E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IACjE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,aAAa,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACvH,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,wHAAwH;AACxH,KAAK,UAAU,YAAY,CACzB,GAAW,EACX,KAAY,EACZ,KAAa,EACb,MAAc,EACd,SAAkB;IAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;IAChG,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAC9E,CAAC;IACD,8EAA8E;IAC9E,gFAAgF;IAChF,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,6FAA6F,KAAK,uCAAuC;SAClJ,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,+DAA+D;AAC/D,SAAS,QAAQ,CAAC,GAAW,EAAE,MAAc;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,CAAC;AAED,0JAA0J;AAC1J,SAAS,WAAW,CAAC,IAAa,EAAE,MAAe;IACjD,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;AACzD,CAAC;AAED,SAAS,OAAO,CACd,KAAY,EACZ,MAAc,EACd,EAAoB,EACpB,IAA6B,EAC7B,MAAe,EACf,IAAiB,EACjB,IAAiB;IAEjB,MAAM,OAAO,GACX,IAAI,KAAK,UAAU;QACjB,CAAC,CAAC,0BAA0B,EAAE,CAAC,MAAM,mBAAmB;QACxD,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE;YACtD,UAAU,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YACjD,UAAU,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE;YACJ,MAAM;YACN,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE;YACjG,IAAI;YACJ,MAAM;YACN,IAAI;YACJ,IAAI;SACL;QACD,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,OAAO;QACrB,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
- import type { RunEnv } from '../core/env.js';
3
- import type { Store } from '../core/store.js';
4
- export declare const requires: CommandRequires;
5
- export interface ReapOutcome {
6
- branch: string;
7
- worktree: string;
8
- reason: string;
9
- }
10
- export interface SessionReapData {
11
- reaped: ReapOutcome[];
12
- skipped: ReapOutcome[];
13
- }
14
- /**
15
- * write-lifecycle spec: reclaims session worktrees whose branch has been
16
- * merged into the default branch and whose tree is clean — never a branch
17
- * with unmerged commits, never a dirty worktree. This removes the
18
- * concurrency race entirely rather than hardening against it: a
19
- * conservative reap that only ever touches provably-safe sessions.
20
- */
21
- export declare function execute(env: RunEnv, store: Store): Promise<CommandOutcome<SessionReapData>>;
22
- //# sourceMappingURL=session-reap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-reap.d.ts","sourceRoot":"","sources":["../../src/commands/session-reap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAM7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAiDjG"}