ctxr-cli 0.23.0 → 0.25.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 (197) hide show
  1. package/README.md +65 -5
  2. package/dist/commands/graph-diff.d.ts +33 -0
  3. package/dist/commands/graph-diff.d.ts.map +1 -0
  4. package/dist/commands/graph-diff.js +52 -0
  5. package/dist/commands/graph-diff.js.map +1 -0
  6. package/dist/commands/land.d.ts +50 -0
  7. package/dist/commands/land.d.ts.map +1 -0
  8. package/dist/commands/land.js +414 -0
  9. package/dist/commands/land.js.map +1 -0
  10. package/dist/commands/publish-check.d.ts +6 -0
  11. package/dist/commands/publish-check.d.ts.map +1 -1
  12. package/dist/commands/publish-check.js +78 -3
  13. package/dist/commands/publish-check.js.map +1 -1
  14. package/dist/commands/publish-gather.d.ts.map +1 -1
  15. package/dist/commands/publish-gather.js +4 -1
  16. package/dist/commands/publish-gather.js.map +1 -1
  17. package/dist/commands/publish-new.d.ts +5 -0
  18. package/dist/commands/publish-new.d.ts.map +1 -1
  19. package/dist/commands/publish-new.js +30 -10
  20. package/dist/commands/publish-new.js.map +1 -1
  21. package/dist/commands/publish-stamp.d.ts +32 -0
  22. package/dist/commands/publish-stamp.d.ts.map +1 -0
  23. package/dist/commands/publish-stamp.js +78 -0
  24. package/dist/commands/publish-stamp.js.map +1 -0
  25. package/dist/commands/publish-urls.d.ts +13 -0
  26. package/dist/commands/publish-urls.d.ts.map +1 -1
  27. package/dist/commands/publish-urls.js +23 -6
  28. package/dist/commands/publish-urls.js.map +1 -1
  29. package/dist/commands/review-list.d.ts +34 -0
  30. package/dist/commands/review-list.d.ts.map +1 -0
  31. package/dist/commands/review-list.js +49 -0
  32. package/dist/commands/review-list.js.map +1 -0
  33. package/dist/commands/serve.d.ts +3 -6
  34. package/dist/commands/serve.d.ts.map +1 -1
  35. package/dist/commands/serve.js +106 -9
  36. package/dist/commands/serve.js.map +1 -1
  37. package/dist/config/schema.d.ts +40 -0
  38. package/dist/config/schema.d.ts.map +1 -1
  39. package/dist/config/schema.js +39 -0
  40. package/dist/config/schema.js.map +1 -1
  41. package/dist/core/approval/decision.d.ts +73 -0
  42. package/dist/core/approval/decision.d.ts.map +1 -0
  43. package/dist/core/approval/decision.js +166 -0
  44. package/dist/core/approval/decision.js.map +1 -0
  45. package/dist/core/approval/file-diff.d.ts +32 -0
  46. package/dist/core/approval/file-diff.d.ts.map +1 -0
  47. package/dist/core/approval/file-diff.js +83 -0
  48. package/dist/core/approval/file-diff.js.map +1 -0
  49. package/dist/core/approval/identity.d.ts +34 -0
  50. package/dist/core/approval/identity.d.ts.map +1 -0
  51. package/dist/core/approval/identity.js +105 -0
  52. package/dist/core/approval/identity.js.map +1 -0
  53. package/dist/core/approval/landing-record.d.ts +17 -0
  54. package/dist/core/approval/landing-record.d.ts.map +1 -0
  55. package/dist/core/approval/landing-record.js +30 -0
  56. package/dist/core/approval/landing-record.js.map +1 -0
  57. package/dist/core/approval/resolver.d.ts +15 -0
  58. package/dist/core/approval/resolver.d.ts.map +1 -0
  59. package/dist/core/approval/resolver.js +41 -0
  60. package/dist/core/approval/resolver.js.map +1 -0
  61. package/dist/core/approval/sessions.d.ts +36 -0
  62. package/dist/core/approval/sessions.d.ts.map +1 -0
  63. package/dist/core/approval/sessions.js +76 -0
  64. package/dist/core/approval/sessions.js.map +1 -0
  65. package/dist/core/browse/approve.d.ts +45 -0
  66. package/dist/core/browse/approve.d.ts.map +1 -0
  67. package/dist/core/browse/approve.js +239 -0
  68. package/dist/core/browse/approve.js.map +1 -0
  69. package/dist/core/browse/diagram-assets.d.ts +15 -0
  70. package/dist/core/browse/diagram-assets.d.ts.map +1 -0
  71. package/dist/core/browse/diagram-assets.js +35 -0
  72. package/dist/core/browse/diagram-assets.js.map +1 -0
  73. package/dist/core/browse/page-url.d.ts +22 -0
  74. package/dist/core/browse/page-url.d.ts.map +1 -1
  75. package/dist/core/browse/page-url.js +31 -0
  76. package/dist/core/browse/page-url.js.map +1 -1
  77. package/dist/core/browse/render.d.ts +10 -1
  78. package/dist/core/browse/render.d.ts.map +1 -1
  79. package/dist/core/browse/render.js +23 -1
  80. package/dist/core/browse/render.js.map +1 -1
  81. package/dist/core/browse/review.d.ts +21 -0
  82. package/dist/core/browse/review.d.ts.map +1 -0
  83. package/dist/core/browse/review.js +52 -0
  84. package/dist/core/browse/review.js.map +1 -0
  85. package/dist/core/browse/templates.d.ts +4 -1
  86. package/dist/core/browse/templates.d.ts.map +1 -1
  87. package/dist/core/browse/templates.js +18 -2
  88. package/dist/core/browse/templates.js.map +1 -1
  89. package/dist/core/checks/organize-checks.d.ts +17 -0
  90. package/dist/core/checks/organize-checks.d.ts.map +1 -1
  91. package/dist/core/checks/organize-checks.js +116 -0
  92. package/dist/core/checks/organize-checks.js.map +1 -1
  93. package/dist/core/errors.d.ts +67 -0
  94. package/dist/core/errors.d.ts.map +1 -1
  95. package/dist/core/errors.js +160 -0
  96. package/dist/core/errors.js.map +1 -1
  97. package/dist/core/forge/credentials.d.ts +69 -0
  98. package/dist/core/forge/credentials.d.ts.map +1 -0
  99. package/dist/core/forge/credentials.js +197 -0
  100. package/dist/core/forge/credentials.js.map +1 -0
  101. package/dist/core/forge/github.d.ts +73 -0
  102. package/dist/core/forge/github.d.ts.map +1 -0
  103. package/dist/core/forge/github.js +101 -0
  104. package/dist/core/forge/github.js.map +1 -0
  105. package/dist/core/git/exec.d.ts +25 -0
  106. package/dist/core/git/exec.d.ts.map +1 -1
  107. package/dist/core/git/exec.js +100 -2
  108. package/dist/core/git/exec.js.map +1 -1
  109. package/dist/core/graph/diff-block.d.ts +6 -0
  110. package/dist/core/graph/diff-block.d.ts.map +1 -0
  111. package/dist/core/graph/diff-block.js +63 -0
  112. package/dist/core/graph/diff-block.js.map +1 -0
  113. package/dist/core/graph/diff-document.d.ts +38 -0
  114. package/dist/core/graph/diff-document.d.ts.map +1 -0
  115. package/dist/core/graph/diff-document.js +117 -0
  116. package/dist/core/graph/diff-document.js.map +1 -0
  117. package/dist/core/graph/diff.d.ts +123 -0
  118. package/dist/core/graph/diff.d.ts.map +1 -0
  119. package/dist/core/graph/diff.js +253 -0
  120. package/dist/core/graph/diff.js.map +1 -0
  121. package/dist/core/graph/tree.d.ts +24 -0
  122. package/dist/core/graph/tree.d.ts.map +1 -0
  123. package/dist/core/graph/tree.js +45 -0
  124. package/dist/core/graph/tree.js.map +1 -0
  125. package/dist/core/notes/list.d.ts +10 -0
  126. package/dist/core/notes/list.d.ts.map +1 -1
  127. package/dist/core/notes/list.js +35 -12
  128. package/dist/core/notes/list.js.map +1 -1
  129. package/dist/core/publish/filing.d.ts +12 -12
  130. package/dist/core/publish/filing.d.ts.map +1 -1
  131. package/dist/core/publish/filing.js +20 -18
  132. package/dist/core/publish/filing.js.map +1 -1
  133. package/dist/core/publish/lifespan.d.ts +37 -0
  134. package/dist/core/publish/lifespan.d.ts.map +1 -0
  135. package/dist/core/publish/lifespan.js +59 -0
  136. package/dist/core/publish/lifespan.js.map +1 -0
  137. package/dist/core/publish/represents.d.ts +72 -0
  138. package/dist/core/publish/represents.d.ts.map +1 -0
  139. package/dist/core/publish/represents.js +83 -0
  140. package/dist/core/publish/represents.js.map +1 -0
  141. package/dist/run.d.ts.map +1 -1
  142. package/dist/run.js +60 -4
  143. package/dist/run.js.map +1 -1
  144. package/dist/version.d.ts +1 -1
  145. package/dist/version.js +1 -1
  146. package/package.json +2 -1
  147. package/templates/approve/approve-button.md +1 -0
  148. package/templates/approve/author-heading.md +1 -0
  149. package/templates/approve/author-note.md +1 -0
  150. package/templates/approve/comment-label.md +1 -0
  151. package/templates/approve/comment-required.md +1 -0
  152. package/templates/approve/commits-heading.md +1 -0
  153. package/templates/approve/decision-heading.md +1 -0
  154. package/templates/approve/decision-note.md +1 -0
  155. package/templates/approve/diff-binary.md +1 -0
  156. package/templates/approve/diff-empty.md +1 -0
  157. package/templates/approve/diff-heading.md +1 -0
  158. package/templates/approve/facts-heading.md +1 -0
  159. package/templates/approve/forge-unreachable.md +1 -0
  160. package/templates/approve/github-app-manifest.json +15 -0
  161. package/templates/approve/head-missing.md +1 -0
  162. package/templates/approve/index-empty.md +1 -0
  163. package/templates/approve/index-heading.md +1 -0
  164. package/templates/approve/index-intro.md +1 -0
  165. package/templates/approve/landed.md +1 -0
  166. package/templates/approve/moved-head.md +1 -0
  167. package/templates/approve/no-pull.md +1 -0
  168. package/templates/approve/not-open.md +1 -0
  169. package/templates/approve/pages-heading.md +1 -0
  170. package/templates/approve/pages-note.md +1 -0
  171. package/templates/approve/record-failed.md +1 -0
  172. package/templates/approve/request-changes-button.md +1 -0
  173. package/templates/approve/state-line.md +1 -0
  174. package/templates/conventions/baseline-conventions.md +6 -0
  175. package/templates/graph/knowledge-changes/archived-item.md +1 -0
  176. package/templates/graph/knowledge-changes/archived.md +1 -0
  177. package/templates/graph/knowledge-changes/bare-route.md +2 -0
  178. package/templates/graph/knowledge-changes/block.md +10 -0
  179. package/templates/graph/knowledge-changes/counts.md +1 -0
  180. package/templates/graph/knowledge-changes/dangling-item.md +1 -0
  181. package/templates/graph/knowledge-changes/dangling.md +1 -0
  182. package/templates/graph/knowledge-changes/empty.md +1 -0
  183. package/templates/graph/knowledge-changes/reason-ambiguous.md +1 -0
  184. package/templates/graph/knowledge-changes/reason-not_found.md +1 -0
  185. package/templates/graph/knowledge-changes/review.md +4 -0
  186. package/templates/graph/review/moved-head.md +1 -0
  187. package/templates/land/resolver.md +12 -0
  188. package/templates/serve/diagrams.mjs +136 -0
  189. package/templates/serve/shell.html +1 -1
  190. package/templates/serve/style.css +90 -0
  191. package/templates/skills/ctxr-land.md +37 -31
  192. package/templates/skills/ctxr-organize-audit.md +19 -0
  193. package/templates/skills/ctxr-publish.md +100 -45
  194. package/templates/skills/ctxr-second-opinion/run.mjs +28 -17
  195. package/templates/skills/ctxr-second-opinion.md +19 -14
  196. package/templates/skills/ctxr-session-lifecycle.md +9 -0
  197. package/templates/skills/ctxr-submit.md +28 -17
@@ -521,6 +521,61 @@ export class PublishPageNotFoundError extends ContextureError {
521
521
  });
522
522
  }
523
523
  }
524
+ /**
525
+ * two-kinds-of-published-page D2: the `disposable` segment has exactly one way
526
+ * in — `ctxr publish new --disposable` — so a slug spelled into it is refused.
527
+ */
528
+ export class PublishDisposableSegmentReservedError extends ContextureError {
529
+ constructor(slug) {
530
+ super(ExitCode.Usage, {
531
+ code: 'publish.disposable_segment_reserved',
532
+ severity: 'error',
533
+ message: `"${slug}" begins with "disposable/", a segment reserved for disposable pages — scaffold one with "ctxr publish new --disposable <name>", which supplies the date.`,
534
+ subject: slug,
535
+ });
536
+ }
537
+ }
538
+ /**
539
+ * two-kinds-of-published-page D2: a disposable page's name is one segment, and
540
+ * its date is the command's to stamp — never the caller's.
541
+ */
542
+ export class PublishDisposableNameError extends ContextureError {
543
+ constructor(name, reason) {
544
+ super(ExitCode.Usage, {
545
+ code: 'publish.disposable_name',
546
+ severity: 'error',
547
+ message: reason === 'dated'
548
+ ? `"${name}" begins with a date — "ctxr publish new --disposable" supplies today's date itself; give the name alone.`
549
+ : `"${name}" is not a single folder name — a disposable page sits directly under "disposable/", with no grouping folders.`,
550
+ subject: name,
551
+ details: { reason },
552
+ });
553
+ }
554
+ }
555
+ /**
556
+ * two-kinds-of-published-page D5: `ctxr publish stamp` records a permanent
557
+ * page's represented-note hash, and refuses — writing nothing — a page it
558
+ * cannot stamp.
559
+ */
560
+ export class PublishStampRefusedError extends ContextureError {
561
+ constructor(relativePath, reason, detail = '') {
562
+ const why = {
563
+ disposable: 'it is a disposable page, which is frozen and never stamped',
564
+ 'not-a-page': 'it is not a page under the configured publish path',
565
+ 'no-readme': 'it has no sibling README',
566
+ 'no-link': 'its README links no note',
567
+ 'not-found': `its README's first wikilink names "${detail}", which no note in the store carries`,
568
+ ambiguous: `its README's first wikilink resolves to more than one note: ${detail}`,
569
+ };
570
+ super(ExitCode.Usage, {
571
+ code: 'publish.stamp_refused',
572
+ severity: 'error',
573
+ message: `"${relativePath}" was not stamped: ${why[reason]}.`,
574
+ subject: relativePath,
575
+ details: { reason },
576
+ });
577
+ }
578
+ }
524
579
  /**
525
580
  * write-lifecycle spec: a session label that normalizes to nothing is refused
526
581
  * rather than dropped — dropping it would hand back a session named nothing like
@@ -570,4 +625,109 @@ export class SessionWorktreeRefusedError extends ContextureError {
570
625
  });
571
626
  }
572
627
  }
628
+ /** review-the-knowledge-diff: the base of a graph diff is never assumed, so a range with no `--since` names nothing to compare. */
629
+ export class GraphDiffSinceRequiredError extends ContextureError {
630
+ constructor() {
631
+ super(ExitCode.Usage, {
632
+ code: 'graph.diff_since_required',
633
+ severity: 'error',
634
+ message: '"ctxr graph diff" requires --since <ref>.',
635
+ });
636
+ }
637
+ }
638
+ /** review-the-knowledge-diff: `--since` or `--until` names something that is not a commit here. */
639
+ export class GraphDiffRefNotFoundError extends ContextureError {
640
+ constructor(flag, ref) {
641
+ super(ExitCode.Usage, {
642
+ code: 'graph.diff_ref_not_found',
643
+ severity: 'error',
644
+ message: `${flag} "${ref}" does not resolve to a commit.`,
645
+ subject: ref,
646
+ details: { flag, ref },
647
+ });
648
+ }
649
+ }
650
+ /** review-the-knowledge-diff: two refs whose histories never meet have no merge base to compare against. */
651
+ export class GraphDiffNoMergeBaseError extends ContextureError {
652
+ constructor(since, head) {
653
+ super(ExitCode.Usage, {
654
+ code: 'graph.diff_no_merge_base',
655
+ severity: 'error',
656
+ message: `"${since}" and "${head}" share no merge base, so there is no base side to compare.`,
657
+ details: { since, head },
658
+ });
659
+ }
660
+ }
661
+ /**
662
+ * review-the-knowledge-diff (D9): `--format` names one of a fixed set of
663
+ * forms, and `markdown` is the whole output with no envelope, so it cannot
664
+ * be combined with `--json`.
665
+ */
666
+ export class GraphDiffFormatError extends ContextureError {
667
+ constructor(given, accepted, withJson) {
668
+ super(ExitCode.Usage, {
669
+ code: 'graph.diff_format',
670
+ severity: 'error',
671
+ message: withJson
672
+ ? '"--format markdown" is the whole output and has no envelope, so it cannot be combined with --json.'
673
+ : `--format "${given}" is not one of: ${accepted.join(', ')}.`,
674
+ details: { given, accepted: [...accepted], json: withJson },
675
+ });
676
+ }
677
+ }
678
+ /** change-approval spec: the review and landing commands read decisions only a store that declares change approval has. */
679
+ export class ChangeApprovalNotDeclaredError extends ContextureError {
680
+ constructor(command) {
681
+ super(ExitCode.Usage, {
682
+ code: 'change_approval.not_declared',
683
+ severity: 'error',
684
+ message: `"${command}" reads page decisions, and this store declares no change_approval block in contexture.yaml.`,
685
+ });
686
+ }
687
+ }
688
+ /** change-approval spec: an unreachable forge is reported as such, never as every pull request awaiting a decision. */
689
+ export class ForgeUnreachableError extends ContextureError {
690
+ constructor(detail) {
691
+ super(ExitCode.Usage, {
692
+ code: 'forge.unreachable',
693
+ severity: 'error',
694
+ message: `The forge could not be reached through "gh": ${detail}`,
695
+ details: { detail },
696
+ });
697
+ }
698
+ }
699
+ /** change-approval spec (design.md D4): serve records decisions only as the identity the store names. */
700
+ export class RecordingLoginMismatchError extends ContextureError {
701
+ constructor(expected, actual) {
702
+ super(ExitCode.Usage, {
703
+ code: 'change_approval.recording_login_mismatch',
704
+ severity: 'error',
705
+ message: `change_approval.recording_login is "${expected}", but the forge credential this process holds authenticates as "${actual}".`,
706
+ details: { expected, actual },
707
+ });
708
+ }
709
+ }
710
+ /** write-lifecycle spec: a refusal before any side effect — the default branch as head, a pull request that is not open, an unknown target. */
711
+ export class LandRefusedError extends ContextureError {
712
+ constructor(reason, message, details = {}) {
713
+ super(ExitCode.Usage, { code: `land.${reason}`, severity: 'error', message, details });
714
+ }
715
+ }
716
+ /** write-lifecycle spec: `--pending` lands only recorded approvals, so `--confirm` cannot ride along. */
717
+ export class LandFlagsError extends ContextureError {
718
+ constructor(message) {
719
+ super(ExitCode.Usage, { code: 'land.flags', severity: 'error', message });
720
+ }
721
+ }
722
+ /** change-approval spec (github-app-recording-identity): a GitHub App credential that is incomplete, ambiguous, unreadable, or refused. */
723
+ export class ForgeCredentialsError extends ContextureError {
724
+ constructor(message, variables) {
725
+ super(ExitCode.Usage, {
726
+ code: 'forge.credentials',
727
+ severity: 'error',
728
+ message,
729
+ details: { variables: [...variables] },
730
+ });
731
+ }
732
+ }
573
733
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { type KeyObject } from 'node:crypto';
2
+ import type { GitRunner } from '../git/exec.js';
3
+ /**
4
+ * github-app-recording-identity (design.md D3): the one place every
5
+ * forge-using command gets its credential from. `gh` is `gh`'s own credential
6
+ * (`GH_TOKEN` or its credential file), as before. `github-app` is a GitHub App
7
+ * owned by whoever runs the store, minting installation tokens from the App's
8
+ * private key. `broker` is reserved for a hosted contexture App that would hold
9
+ * the key centrally; nothing selects it yet, and adding it is one more provider
10
+ * behind these same methods.
11
+ */
12
+ export type CredentialKind = 'gh' | 'github-app' | 'broker';
13
+ export interface ForgeCredentials {
14
+ kind: CredentialKind;
15
+ /** The environment for the next `gh` call — the caller's own, with `GH_TOKEN` set to a fresh token in App mode. */
16
+ env(): Promise<Readonly<Record<string, string | undefined>>>;
17
+ /** The App's bot login (`<slug>[bot]`); null for `gh`, whose login the forge client asks `gh` for. */
18
+ botLogin(): Promise<string | null>;
19
+ /** A token for git's transport (design.md D4); null when git keeps whatever credential it has. */
20
+ gitToken(): Promise<string | null>;
21
+ }
22
+ export declare const APP_ID_VAR = "CONTEXTURE_GITHUB_APP_ID";
23
+ export declare const APP_KEY_FILE_VAR = "CONTEXTURE_GITHUB_APP_PRIVATE_KEY_FILE";
24
+ export declare const APP_KEY_VAR = "CONTEXTURE_GITHUB_APP_PRIVATE_KEY";
25
+ /** `owner/repo`, when the store's `origin` is not a github.com URL this module can read — a mirror, a proxy, a test server. */
26
+ export declare const APP_REPOSITORY_VAR = "CONTEXTURE_GITHUB_REPOSITORY";
27
+ /** The API base; github.com's unless a GitHub-compatible test server is named. */
28
+ export declare const API_URL_VAR = "CONTEXTURE_GITHUB_API_URL";
29
+ type Env = Readonly<Record<string, string | undefined>>;
30
+ export type FetchLike = (url: string, init: {
31
+ method?: string;
32
+ headers: Record<string, string>;
33
+ }) => Promise<{
34
+ ok: boolean;
35
+ status: number;
36
+ json(): Promise<unknown>;
37
+ text(): Promise<string>;
38
+ }>;
39
+ export interface ResolveOptions {
40
+ env: Env;
41
+ git: GitRunner;
42
+ /** A directory inside the store's repository, for reading `origin`. */
43
+ cwd: string;
44
+ fetch?: FetchLike;
45
+ now?: () => Date;
46
+ }
47
+ /** The credential source a command's forge calls go through, resolved from the command's own environment. */
48
+ export declare function credentialsFor(env: {
49
+ env: Env;
50
+ git: GitRunner;
51
+ now(): Date;
52
+ }, cwd: string): Promise<ForgeCredentials>;
53
+ export declare function ghCredentials(env: Env): ForgeCredentials;
54
+ /**
55
+ * change-approval spec ("The recording identity may be a GitHub App with
56
+ * credentials from the environment only"): App mode when the App ID and exactly
57
+ * one key source are set, `gh` mode when none of them is, and a refusal for
58
+ * anything in between — never a guessed precedence (design.md D1).
59
+ */
60
+ export declare function resolveForgeCredentials(opts: ResolveOptions): Promise<ForgeCredentials>;
61
+ /** design.md D3: RS256, `iat` backdated 60 s for clock skew, `exp` nine minutes out (GitHub allows ten). */
62
+ export declare function appAssertion(appId: string, key: KeyObject, now: Date): string;
63
+ /**
64
+ * design.md D2: `owner/repo` from a github.com remote, https or ssh, with or
65
+ * without `.git`. Anything else is not something App mode can address.
66
+ */
67
+ export declare function githubRepositoryOf(remoteUrl: string): string | null;
68
+ export {};
69
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../src/core/forge/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAGrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,mHAAmH;IACnH,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7D,sGAAsG;IACtG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnC,kGAAkG;IAClG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,UAAU,6BAA6B,CAAC;AACrD,eAAO,MAAM,gBAAgB,2CAA2C,CAAC;AACzE,eAAO,MAAM,WAAW,sCAAsC,CAAC;AAC/D,+HAA+H;AAC/H,eAAO,MAAM,kBAAkB,iCAAiC,CAAC;AACjE,kFAAkF;AAClF,eAAO,MAAM,WAAW,8BAA8B,CAAC;AAMvD,KAAK,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG,CACtB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KACvD,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAEjG,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,SAAS,CAAC;IACf,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,6GAA6G;AAC7G,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,IAAI,IAAI,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAErH;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,gBAAgB,CAOxD;AAID;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4C7F;AAED,4GAA4G;AAC5G,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAQ7E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWnE"}
@@ -0,0 +1,197 @@
1
+ import { createPrivateKey, sign } from 'node:crypto';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { ForgeCredentialsError } from '../errors.js';
4
+ export const APP_ID_VAR = 'CONTEXTURE_GITHUB_APP_ID';
5
+ export const APP_KEY_FILE_VAR = 'CONTEXTURE_GITHUB_APP_PRIVATE_KEY_FILE';
6
+ export const APP_KEY_VAR = 'CONTEXTURE_GITHUB_APP_PRIVATE_KEY';
7
+ /** `owner/repo`, when the store's `origin` is not a github.com URL this module can read — a mirror, a proxy, a test server. */
8
+ export const APP_REPOSITORY_VAR = 'CONTEXTURE_GITHUB_REPOSITORY';
9
+ /** The API base; github.com's unless a GitHub-compatible test server is named. */
10
+ export const API_URL_VAR = 'CONTEXTURE_GITHUB_API_URL';
11
+ const DEFAULT_API_URL = 'https://api.github.com';
12
+ /** design.md D3: a token is replaced once less than this much of its life remains. */
13
+ const REFRESH_MARGIN_MS = 5 * 60 * 1000;
14
+ /** The credential source a command's forge calls go through, resolved from the command's own environment. */
15
+ export function credentialsFor(env, cwd) {
16
+ return resolveForgeCredentials({ env: env.env, git: env.git, cwd, now: () => env.now() });
17
+ }
18
+ export function ghCredentials(env) {
19
+ return {
20
+ kind: 'gh',
21
+ env: async () => env,
22
+ botLogin: async () => null,
23
+ gitToken: async () => null,
24
+ };
25
+ }
26
+ const set = (value) => value !== undefined && value !== '';
27
+ /**
28
+ * change-approval spec ("The recording identity may be a GitHub App with
29
+ * credentials from the environment only"): App mode when the App ID and exactly
30
+ * one key source are set, `gh` mode when none of them is, and a refusal for
31
+ * anything in between — never a guessed precedence (design.md D1).
32
+ */
33
+ export async function resolveForgeCredentials(opts) {
34
+ const appId = opts.env[APP_ID_VAR];
35
+ const keyFile = opts.env[APP_KEY_FILE_VAR];
36
+ const keyText = opts.env[APP_KEY_VAR];
37
+ if (!set(appId) && !set(keyFile) && !set(keyText))
38
+ return ghCredentials(opts.env);
39
+ if (set(keyFile) && set(keyText)) {
40
+ throw new ForgeCredentialsError(`Both ${APP_KEY_FILE_VAR} and ${APP_KEY_VAR} are set; set one of them.`, [APP_KEY_FILE_VAR, APP_KEY_VAR]);
41
+ }
42
+ if (!set(appId))
43
+ throw new ForgeCredentialsError(`A GitHub App private key is set, but ${APP_ID_VAR} is not.`, [APP_ID_VAR]);
44
+ if (!set(keyFile) && !set(keyText)) {
45
+ throw new ForgeCredentialsError(`${APP_ID_VAR} is set, but neither ${APP_KEY_FILE_VAR} nor ${APP_KEY_VAR} is.`, [APP_KEY_FILE_VAR, APP_KEY_VAR]);
46
+ }
47
+ if (/\s/.test(appId))
48
+ throw new ForgeCredentialsError(`${APP_ID_VAR} must be the App's ID or client ID.`, [APP_ID_VAR]);
49
+ let pem;
50
+ if (set(keyFile)) {
51
+ try {
52
+ pem = await readFile(keyFile, 'utf8');
53
+ }
54
+ catch (err) {
55
+ throw new ForgeCredentialsError(`${APP_KEY_FILE_VAR} names "${keyFile}", which cannot be read (${err.code ?? 'error'}).`, [APP_KEY_FILE_VAR]);
56
+ }
57
+ }
58
+ else {
59
+ pem = keyText;
60
+ }
61
+ let key;
62
+ try {
63
+ key = createPrivateKey(pem);
64
+ }
65
+ catch {
66
+ throw new ForgeCredentialsError('The GitHub App private key is not a readable PEM private key.', [set(keyFile) ? APP_KEY_FILE_VAR : APP_KEY_VAR]);
67
+ }
68
+ if (key.asymmetricKeyType !== 'rsa') {
69
+ throw new ForgeCredentialsError('The GitHub App private key must be an RSA key, as GitHub generates.', [set(keyFile) ? APP_KEY_FILE_VAR : APP_KEY_VAR]);
70
+ }
71
+ return createAppCredentials({
72
+ appId,
73
+ key,
74
+ env: opts.env,
75
+ git: opts.git,
76
+ cwd: opts.cwd,
77
+ fetch: opts.fetch ?? ((url, init) => fetch(url, init)),
78
+ now: opts.now ?? (() => new Date()),
79
+ });
80
+ }
81
+ /** design.md D3: RS256, `iat` backdated 60 s for clock skew, `exp` nine minutes out (GitHub allows ten). */
82
+ export function appAssertion(appId, key, now) {
83
+ const seconds = Math.floor(now.getTime() / 1000);
84
+ const encode = (value) => Buffer.from(JSON.stringify(value)).toString('base64url');
85
+ const header = encode({ alg: 'RS256', typ: 'JWT' });
86
+ // A numeric App ID goes in as a number; a client ID ("Iv1…") as the string it is. GitHub accepts either.
87
+ const payload = encode({ iat: seconds - 60, exp: seconds + 9 * 60, iss: /^\d+$/.test(appId) ? Number(appId) : appId });
88
+ const signature = sign('sha256', Buffer.from(`${header}.${payload}`), key).toString('base64url');
89
+ return `${header}.${payload}.${signature}`;
90
+ }
91
+ /**
92
+ * design.md D2: `owner/repo` from a github.com remote, https or ssh, with or
93
+ * without `.git`. Anything else is not something App mode can address.
94
+ */
95
+ export function githubRepositoryOf(remoteUrl) {
96
+ const patterns = [
97
+ /^https:\/\/(?:[^@/]+@)?github\.com\/([^/]+)\/([^/]+?)(?:\.git)?\/?$/,
98
+ /^ssh:\/\/git@github\.com(?::\d+)?\/([^/]+)\/([^/]+?)(?:\.git)?\/?$/,
99
+ /^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?\/?$/,
100
+ ];
101
+ for (const pattern of patterns) {
102
+ const match = pattern.exec(remoteUrl.trim());
103
+ if (match !== null)
104
+ return `${match[1]}/${match[2]}`;
105
+ }
106
+ return null;
107
+ }
108
+ function createAppCredentials(inputs) {
109
+ const apiUrl = (inputs.env[API_URL_VAR] || DEFAULT_API_URL).replace(/\/+$/, '');
110
+ let cached = null;
111
+ let inFlight = null;
112
+ let slug = null;
113
+ async function appCall(method, route) {
114
+ const response = await inputs.fetch(`${apiUrl}${route}`, {
115
+ method,
116
+ headers: {
117
+ Authorization: `Bearer ${appAssertion(inputs.appId, inputs.key, inputs.now())}`,
118
+ Accept: 'application/vnd.github+json',
119
+ 'X-GitHub-Api-Version': '2022-11-28',
120
+ 'User-Agent': 'ctxr',
121
+ },
122
+ });
123
+ if (response.ok)
124
+ return response.json();
125
+ const detail = (await response.text().catch(() => '')).slice(0, 300);
126
+ return { __status: response.status, __detail: detail };
127
+ }
128
+ function failed(value) {
129
+ if (typeof value === 'object' && value !== null && '__status' in value) {
130
+ const v = value;
131
+ return { status: v.__status, detail: v.__detail };
132
+ }
133
+ return null;
134
+ }
135
+ async function repository() {
136
+ const explicit = inputs.env[APP_REPOSITORY_VAR];
137
+ if (set(explicit)) {
138
+ if (!/^[^/\s]+\/[^/\s]+$/.test(explicit))
139
+ throw new ForgeCredentialsError(`${APP_REPOSITORY_VAR} must be "owner/repo".`, [APP_REPOSITORY_VAR]);
140
+ return explicit;
141
+ }
142
+ const remote = await inputs.git.run(['remote', 'get-url', 'origin'], { cwd: inputs.cwd, allowFailure: true });
143
+ const repo = remote.exitCode === 0 ? githubRepositoryOf(remote.stdout) : null;
144
+ if (repo === null) {
145
+ throw new ForgeCredentialsError(`GitHub App mode needs a github.com "origin" remote, and this store's is "${remote.stdout.trim() || 'not set'}". Set ${APP_REPOSITORY_VAR} to name the repository.`, [APP_REPOSITORY_VAR]);
146
+ }
147
+ return repo;
148
+ }
149
+ async function mint() {
150
+ const repo = await repository();
151
+ const installation = await appCall('GET', `/repos/${repo}/installation`);
152
+ const missing = failed(installation);
153
+ if (missing !== null) {
154
+ if (missing.status === 404) {
155
+ throw new ForgeCredentialsError(`GitHub App ${inputs.appId} is not installed on ${repo}. Install it on that repository.`, [APP_ID_VAR]);
156
+ }
157
+ throw new ForgeCredentialsError(`GitHub refused GitHub App ${inputs.appId} (HTTP ${missing.status}): ${missing.detail}`, [APP_ID_VAR]);
158
+ }
159
+ const id = installation.id;
160
+ const issued = await appCall('POST', `/app/installations/${id}/access_tokens`);
161
+ const refused = failed(issued);
162
+ if (refused !== null) {
163
+ throw new ForgeCredentialsError(`GitHub would not issue an installation token for ${repo} (HTTP ${refused.status}): ${refused.detail}`, [APP_ID_VAR]);
164
+ }
165
+ const { token, expires_at: expiresAt } = issued;
166
+ cached = { token, expiresAt: Date.parse(expiresAt) };
167
+ return token;
168
+ }
169
+ /** design.md D3: reuse while at least five minutes remain; one refresh in flight, however many callers ask. */
170
+ async function token() {
171
+ if (cached !== null && cached.expiresAt - inputs.now().getTime() >= REFRESH_MARGIN_MS)
172
+ return cached.token;
173
+ inFlight ??= mint().finally(() => {
174
+ inFlight = null;
175
+ });
176
+ return inFlight;
177
+ }
178
+ return {
179
+ kind: 'github-app',
180
+ async env() {
181
+ return { ...inputs.env, GH_TOKEN: await token() };
182
+ },
183
+ async botLogin() {
184
+ if (slug === null) {
185
+ const app = await appCall('GET', '/app');
186
+ const refused = failed(app);
187
+ if (refused !== null) {
188
+ throw new ForgeCredentialsError(`GitHub refused GitHub App ${inputs.appId}'s signed assertion (HTTP ${refused.status}): ${refused.detail}`, [APP_ID_VAR]);
189
+ }
190
+ slug = app.slug;
191
+ }
192
+ return `${slug}[bot]`;
193
+ },
194
+ gitToken: token,
195
+ };
196
+ }
197
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/core/forge/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { CredentialKind, ForgeCredentials } from './credentials.js';
2
+ /**
3
+ * approve-from-the-review-page (design.md D10): the forge, read and written
4
+ * through `gh api` — the only module that spawns `gh`. Core code rather than
5
+ * a revived `forge` adapter kind: there is one forge, and
6
+ * session-keeps-only-what-git-cannot-do removed the seam for a second.
7
+ *
8
+ * `{owner}` and `{repo}` are `gh`'s own placeholders, filled from the
9
+ * repository `cwd` sits in, so no remote URL is parsed here. `gh` reads its
10
+ * credential (`GH_TOKEN`, or its own credential file) from the process that
11
+ * runs it; nothing here touches a token.
12
+ */
13
+ export interface PullRequest {
14
+ number: number;
15
+ state: 'open' | 'closed';
16
+ merged: boolean;
17
+ title: string;
18
+ body: string;
19
+ url: string;
20
+ author: string;
21
+ headRef: string;
22
+ headSha: string;
23
+ baseRef: string;
24
+ /** null while the forge is still computing it. */
25
+ mergeable: boolean | null;
26
+ mergeCommitSha: string | null;
27
+ }
28
+ export interface Review {
29
+ author: string;
30
+ state: string;
31
+ body: string;
32
+ commitId: string | null;
33
+ submittedAt: string | null;
34
+ }
35
+ export interface IssueComment {
36
+ author: string;
37
+ body: string;
38
+ createdAt: string;
39
+ }
40
+ export type ReviewEvent = 'APPROVE' | 'REQUEST_CHANGES' | 'COMMENT';
41
+ export type MergeMethod = 'squash' | 'merge' | 'rebase';
42
+ export interface ForgeClient {
43
+ /** The credential kind behind every call — reported by commands, never the credential itself. */
44
+ credential: CredentialKind;
45
+ login(): Promise<string>;
46
+ pull(number: number): Promise<PullRequest>;
47
+ openPulls(): Promise<PullRequest[]>;
48
+ reviews(number: number): Promise<Review[]>;
49
+ comments(number: number): Promise<IssueComment[]>;
50
+ createReview(number: number, input: {
51
+ event: ReviewEvent;
52
+ body: string;
53
+ commitId: string;
54
+ }): Promise<void>;
55
+ createComment(number: number, body: string): Promise<void>;
56
+ merge(number: number, input: {
57
+ method: MergeMethod;
58
+ sha: string;
59
+ }): Promise<void>;
60
+ }
61
+ /** A `gh api` call that did not succeed. `status` is the HTTP status when `gh` reported one. */
62
+ export declare class ForgeRequestError extends Error {
63
+ readonly status: number | null;
64
+ constructor(endpoint: string, status: number | null, detail: string);
65
+ }
66
+ /**
67
+ * `credentials` supplies the environment of every `gh` call: the caller's own
68
+ * for `gh`'s credential, or with `GH_TOKEN` set to a fresh installation token
69
+ * for a GitHub App (github-app-recording-identity D3) — fetched per call, so a
70
+ * long-running server never uses an expired one.
71
+ */
72
+ export declare function createGhForgeClient(cwd: string, credentials: ForgeCredentials): ForgeClient;
73
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/core/forge/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIzE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,iGAAiG;IACjG,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAClD,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3G,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AAED,gGAAgG;AAChG,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAIlE;CACF;AAkCD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,GAAG,WAAW,CAuE3F"}