ctxr-cli 0.1.0 → 0.2.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 (175) hide show
  1. package/dist/adapters/forge/github.d.ts +4 -1
  2. package/dist/adapters/forge/github.d.ts.map +1 -1
  3. package/dist/adapters/forge/github.js +41 -1
  4. package/dist/adapters/forge/github.js.map +1 -1
  5. package/dist/adapters/forge/types.d.ts +23 -0
  6. package/dist/adapters/forge/types.d.ts.map +1 -1
  7. package/dist/adapters/types.d.ts.map +1 -1
  8. package/dist/adapters/types.js +2 -1
  9. package/dist/adapters/types.js.map +1 -1
  10. package/dist/commands/check.d.ts +12 -4
  11. package/dist/commands/check.d.ts.map +1 -1
  12. package/dist/commands/check.js +28 -1
  13. package/dist/commands/check.js.map +1 -1
  14. package/dist/commands/entry-append.d.ts +25 -0
  15. package/dist/commands/entry-append.d.ts.map +1 -0
  16. package/dist/commands/entry-append.js +39 -0
  17. package/dist/commands/entry-append.js.map +1 -0
  18. package/dist/commands/graph-build.d.ts +5 -0
  19. package/dist/commands/graph-build.d.ts.map +1 -1
  20. package/dist/commands/graph-build.js +8 -5
  21. package/dist/commands/graph-build.js.map +1 -1
  22. package/dist/commands/graph-query.d.ts +15 -0
  23. package/dist/commands/graph-query.d.ts.map +1 -1
  24. package/dist/commands/graph-query.js +12 -2
  25. package/dist/commands/graph-query.js.map +1 -1
  26. package/dist/commands/identity.d.ts +24 -0
  27. package/dist/commands/identity.d.ts.map +1 -0
  28. package/dist/commands/identity.js +35 -0
  29. package/dist/commands/identity.js.map +1 -0
  30. package/dist/commands/init.d.ts.map +1 -1
  31. package/dist/commands/init.js +7 -7
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/commands/rollup-stale.d.ts +18 -0
  34. package/dist/commands/rollup-stale.d.ts.map +1 -0
  35. package/dist/commands/rollup-stale.js +35 -0
  36. package/dist/commands/rollup-stale.js.map +1 -0
  37. package/dist/commands/rollup-write.d.ts +9 -1
  38. package/dist/commands/rollup-write.d.ts.map +1 -1
  39. package/dist/commands/rollup-write.js +17 -2
  40. package/dist/commands/rollup-write.js.map +1 -1
  41. package/dist/commands/session-capture.d.ts +25 -0
  42. package/dist/commands/session-capture.d.ts.map +1 -0
  43. package/dist/commands/session-capture.js +119 -0
  44. package/dist/commands/session-capture.js.map +1 -0
  45. package/dist/commands/session-land.d.ts +45 -0
  46. package/dist/commands/session-land.d.ts.map +1 -0
  47. package/dist/commands/session-land.js +140 -0
  48. package/dist/commands/session-land.js.map +1 -0
  49. package/dist/commands/session-list.d.ts.map +1 -1
  50. package/dist/commands/session-list.js +3 -2
  51. package/dist/commands/session-list.js.map +1 -1
  52. package/dist/commands/session-reap.d.ts.map +1 -1
  53. package/dist/commands/session-reap.js +3 -2
  54. package/dist/commands/session-reap.js.map +1 -1
  55. package/dist/commands/session-submit.d.ts +2 -0
  56. package/dist/commands/session-submit.d.ts.map +1 -1
  57. package/dist/commands/session-submit.js +6 -2
  58. package/dist/commands/session-submit.js.map +1 -1
  59. package/dist/commands/source-add-alt.d.ts +20 -0
  60. package/dist/commands/source-add-alt.d.ts.map +1 -0
  61. package/dist/commands/source-add-alt.js +48 -0
  62. package/dist/commands/source-add-alt.js.map +1 -0
  63. package/dist/commands/source-check.js +1 -1
  64. package/dist/commands/source-check.js.map +1 -1
  65. package/dist/commands/source-stamp.d.ts +24 -0
  66. package/dist/commands/source-stamp.d.ts.map +1 -0
  67. package/dist/commands/source-stamp.js +46 -0
  68. package/dist/commands/source-stamp.js.map +1 -0
  69. package/dist/commands/verify.js +2 -2
  70. package/dist/commands/verify.js.map +1 -1
  71. package/dist/config/defaults.d.ts +13 -0
  72. package/dist/config/defaults.d.ts.map +1 -1
  73. package/dist/config/defaults.js +13 -0
  74. package/dist/config/defaults.js.map +1 -1
  75. package/dist/config/schema.d.ts +31 -0
  76. package/dist/config/schema.d.ts.map +1 -1
  77. package/dist/config/schema.js +42 -0
  78. package/dist/config/schema.js.map +1 -1
  79. package/dist/core/agents-doc.d.ts.map +1 -1
  80. package/dist/core/agents-doc.js +3 -1
  81. package/dist/core/agents-doc.js.map +1 -1
  82. package/dist/core/checks/disclosure-checks.d.ts +4 -0
  83. package/dist/core/checks/disclosure-checks.d.ts.map +1 -0
  84. package/dist/core/checks/disclosure-checks.js +24 -0
  85. package/dist/core/checks/disclosure-checks.js.map +1 -0
  86. package/dist/core/checks/identity-checks.d.ts +6 -1
  87. package/dist/core/checks/identity-checks.d.ts.map +1 -1
  88. package/dist/core/checks/identity-checks.js +23 -19
  89. package/dist/core/checks/identity-checks.js.map +1 -1
  90. package/dist/core/checks/integrity-checks.js +2 -2
  91. package/dist/core/checks/integrity-checks.js.map +1 -1
  92. package/dist/core/checks/manifest.d.ts.map +1 -1
  93. package/dist/core/checks/manifest.js +2 -0
  94. package/dist/core/checks/manifest.js.map +1 -1
  95. package/dist/core/checks/organize-checks.d.ts +2 -0
  96. package/dist/core/checks/organize-checks.d.ts.map +1 -1
  97. package/dist/core/checks/organize-checks.js +24 -1
  98. package/dist/core/checks/organize-checks.js.map +1 -1
  99. package/dist/core/checks/write-lifecycle-checks.d.ts +4 -1
  100. package/dist/core/checks/write-lifecycle-checks.d.ts.map +1 -1
  101. package/dist/core/checks/write-lifecycle-checks.js +18 -2
  102. package/dist/core/checks/write-lifecycle-checks.js.map +1 -1
  103. package/dist/core/disclosure/leak-scan.d.ts +19 -0
  104. package/dist/core/disclosure/leak-scan.d.ts.map +1 -0
  105. package/dist/core/disclosure/leak-scan.js +31 -0
  106. package/dist/core/disclosure/leak-scan.js.map +1 -0
  107. package/dist/core/errors.d.ts +40 -0
  108. package/dist/core/errors.d.ts.map +1 -1
  109. package/dist/core/errors.js +128 -0
  110. package/dist/core/errors.js.map +1 -1
  111. package/dist/core/fs/fenced-region.d.ts +9 -0
  112. package/dist/core/fs/fenced-region.d.ts.map +1 -1
  113. package/dist/core/fs/fenced-region.js +40 -0
  114. package/dist/core/fs/fenced-region.js.map +1 -1
  115. package/dist/core/git/repo.d.ts +2 -0
  116. package/dist/core/git/repo.d.ts.map +1 -1
  117. package/dist/core/git/repo.js +4 -0
  118. package/dist/core/git/repo.js.map +1 -1
  119. package/dist/core/graph/document.d.ts +26 -0
  120. package/dist/core/graph/document.d.ts.map +1 -0
  121. package/dist/core/graph/document.js +67 -0
  122. package/dist/core/graph/document.js.map +1 -0
  123. package/dist/core/graph/model.d.ts +44 -2
  124. package/dist/core/graph/model.d.ts.map +1 -1
  125. package/dist/core/graph/model.js +65 -6
  126. package/dist/core/graph/model.js.map +1 -1
  127. package/dist/core/graph/persist.d.ts +4 -0
  128. package/dist/core/graph/persist.d.ts.map +1 -1
  129. package/dist/core/graph/persist.js +10 -0
  130. package/dist/core/graph/persist.js.map +1 -1
  131. package/dist/core/graph/query.d.ts +24 -0
  132. package/dist/core/graph/query.d.ts.map +1 -1
  133. package/dist/core/graph/query.js +45 -2
  134. package/dist/core/graph/query.js.map +1 -1
  135. package/dist/core/identity.d.ts +36 -4
  136. package/dist/core/identity.d.ts.map +1 -1
  137. package/dist/core/identity.js +119 -12
  138. package/dist/core/identity.js.map +1 -1
  139. package/dist/core/ingest/canonical-url.d.ts +11 -0
  140. package/dist/core/ingest/canonical-url.d.ts.map +1 -0
  141. package/dist/core/ingest/canonical-url.js +27 -0
  142. package/dist/core/ingest/canonical-url.js.map +1 -0
  143. package/dist/core/ingest/identity.d.ts +2 -0
  144. package/dist/core/ingest/identity.d.ts.map +1 -1
  145. package/dist/core/ingest/identity.js +2 -0
  146. package/dist/core/ingest/identity.js.map +1 -1
  147. package/dist/core/ingest/model.d.ts +9 -2
  148. package/dist/core/ingest/model.d.ts.map +1 -1
  149. package/dist/core/ingest/model.js +32 -3
  150. package/dist/core/ingest/model.js.map +1 -1
  151. package/dist/core/procedures.d.ts +32 -12
  152. package/dist/core/procedures.d.ts.map +1 -1
  153. package/dist/core/procedures.js +613 -75
  154. package/dist/core/procedures.js.map +1 -1
  155. package/dist/core/rollup.d.ts +29 -0
  156. package/dist/core/rollup.d.ts.map +1 -0
  157. package/dist/core/rollup.js +60 -0
  158. package/dist/core/rollup.js.map +1 -0
  159. package/dist/core/session.d.ts +14 -0
  160. package/dist/core/session.d.ts.map +1 -1
  161. package/dist/core/session.js +19 -0
  162. package/dist/core/session.js.map +1 -1
  163. package/dist/core/write-lifecycle/path-gate.d.ts +20 -0
  164. package/dist/core/write-lifecycle/path-gate.d.ts.map +1 -0
  165. package/dist/core/write-lifecycle/path-gate.js +90 -0
  166. package/dist/core/write-lifecycle/path-gate.js.map +1 -0
  167. package/dist/prompt/inquirer-prompter.d.ts.map +1 -1
  168. package/dist/prompt/inquirer-prompter.js +4 -1
  169. package/dist/prompt/inquirer-prompter.js.map +1 -1
  170. package/dist/prompt/prompter.d.ts +9 -0
  171. package/dist/prompt/prompter.d.ts.map +1 -1
  172. package/dist/run.d.ts.map +1 -1
  173. package/dist/run.js +149 -4
  174. package/dist/run.js.map +1 -1
  175. package/package.json +1 -1
@@ -1,4 +1,7 @@
1
- import type { ForgeAdapter } from './types.js';
1
+ import type { ForgeAdapter, PullRequestLifecycleState, PullRequestMergeability } from './types.js';
2
+ /** GitHub's own vocabulary, normalized to the adapter interface's small unions — kept pure and exported so tests exercise the mapping without a subprocess. */
3
+ export declare function mapPullRequestState(ghState: string): PullRequestLifecycleState;
4
+ export declare function mapMergeability(ghMergeable: string): PullRequestMergeability;
2
5
  /**
3
6
  * The reference forge adapter, shelling out to `gh` (same tool, same
4
7
  * pattern as `git` itself) rather than a token-based REST client — simpler
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/adapters/forge/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,YA6BhC,CAAC"}
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"}
@@ -2,6 +2,31 @@ import { execFile } from 'node:child_process';
2
2
  import { promisify } from 'node:util';
3
3
  const execFileAsync = promisify(execFile);
4
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
+ }
5
30
  /**
6
31
  * The reference forge adapter, shelling out to `gh` (same tool, same
7
32
  * pattern as `git` itself) rather than a token-based REST client — simpler
@@ -11,7 +36,7 @@ const PR_NUMBER_RE = /\/pull\/(\d+)/;
11
36
  export const githubForgeAdapter = {
12
37
  id: 'github',
13
38
  kind: 'forge',
14
- interfaceVersion: 1,
39
+ interfaceVersion: 2,
15
40
  async isAvailable(cwd) {
16
41
  try {
17
42
  // `gh auth status` alone only proves SOME host has stored credentials —
@@ -32,5 +57,20 @@ export const githubForgeAdapter = {
32
57
  const match = PR_NUMBER_RE.exec(url);
33
58
  return { url, number: match?.[1] ? Number(match[1]) : null };
34
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
+ },
35
75
  };
36
76
  //# sourceMappingURL=github.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/adapters/forge/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,YAAY,GAAG,eAAe,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,OAAO;IACb,gBAAgB,EAAE,CAAC;IAEnB,KAAK,CAAC,WAAW,CAAC,GAAG;QACnB,IAAI,CAAC;YACH,wEAAwE;YACxE,oEAAoE;YACpE,gEAAgE;YAChE,gEAAgE;YAChE,mDAAmD;YACnD,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAK;QACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CACpC,IAAI,EACJ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAClH,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CACnB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/adapters/forge/github.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,31 @@ export interface OpenPullRequestResult {
16
16
  url: string;
17
17
  number: number | null;
18
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
+ */
19
39
  export interface ForgeAdapter extends Adapter<'forge'> {
20
40
  isAvailable(cwd: string): Promise<boolean>;
21
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>;
22
45
  }
23
46
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
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,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;CAC9E"}
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 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,OAAO,CAAC;AAEhF,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAC1D,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAI3E,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,oBAAoB,CAAC;IAC7E,oGAAoG;IACpG,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,kFAAkF;IAClF,gBAAgB,CAAC,EAAE;QACjB,iEAAiE;QACjE,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,MAAM,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpE,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,oBAAoB,CAAC;IAC7E,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,oBAAoB,EAAE,wBAAwB,CAAC;IAC/C,oBAAoB,EAAE,wBAAwB,CAAC;IAC/C,KAAK,EAAE,OAAO,kBAAkB,EAAE,YAAY,CAAC;CAChD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,OAAO,CAAC;AAEhF,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAC1D,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAK3E,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,oBAAoB,CAAC;IAC7E,oGAAoG;IACpG,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,kFAAkF;IAClF,gBAAgB,CAAC,EAAE;QACjB,iEAAiE;QACjE,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,MAAM,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpE,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,oBAAoB,CAAC;IAC7E,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,oBAAoB,EAAE,wBAAwB,CAAC;IAC/C,oBAAoB,EAAE,wBAAwB,CAAC;IAC/C,KAAK,EAAE,OAAO,kBAAkB,EAAE,YAAY,CAAC;CAChD"}
@@ -7,6 +7,7 @@
7
7
  export const SUPPORTED_ADAPTER_INTERFACE_VERSION = {
8
8
  'harness-generation': 1,
9
9
  'identity-injection': 1,
10
- forge: 1,
10
+ // session-submit-and-land spec (D5): pullRequest/mergePullRequest joined the forge interface at v2.
11
+ forge: 2,
11
12
  };
12
13
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAkBA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAgC;IAC9E,oBAAoB,EAAE,CAAC;IACvB,oBAAoB,EAAE,CAAC;IACvB,KAAK,EAAE,CAAC;CACT,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAkBA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAgC;IAC9E,oBAAoB,EAAE,CAAC;IACvB,oBAAoB,EAAE,CAAC;IACvB,oGAAoG;IACpG,KAAK,EAAE,CAAC;CACT,CAAC"}
@@ -1,22 +1,30 @@
1
1
  import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
2
  import type { DisclosureRung, DisclosureVerdict } from '../core/disclosure/model.js';
3
+ import { type LeakFinding } from '../core/disclosure/leak-scan.js';
3
4
  import type { RunEnv } from '../core/env.js';
4
5
  import type { Store } from '../core/store.js';
5
6
  export declare const requires: CommandRequires;
6
7
  export interface CheckFlags {
7
8
  path: string;
8
- audience: string;
9
+ audience?: string;
10
+ scan?: boolean;
9
11
  }
10
12
  export interface CheckData {
11
13
  path: string;
12
- audience: string;
13
- verdict: DisclosureVerdict;
14
- rung: DisclosureRung;
14
+ audience?: string;
15
+ verdict?: DisclosureVerdict;
16
+ rung?: DisclosureRung;
17
+ leaks?: LeakFinding[];
15
18
  }
16
19
  /**
17
20
  * disclosure-policy spec: the tri-state ALLOW/DENY/ASK verdict, each with
18
21
  * its own documented exit code (cli-contract's reserved 4/5), printing the
19
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).
20
28
  */
21
29
  export declare function execute(env: RunEnv, store: Store, flags: CheckFlags): Promise<CommandOutcome<CheckData>>;
22
30
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
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,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,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;CACtB;AAaD;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAsB9G"}
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,6 +1,7 @@
1
1
  import path from 'node:path';
2
2
  import { evaluateDisclosure } from '../core/disclosure/model.js';
3
- import { NoteNotFoundError } from '../core/errors.js';
3
+ import { scanNoteForLeaks } from '../core/disclosure/leak-scan.js';
4
+ import { CheckAudienceRequiredError, NoteNotFoundError } from '../core/errors.js';
4
5
  import { ExitCode } from '../core/exit-codes.js';
5
6
  import { parseNote } from '../core/notes/parse.js';
6
7
  export const requires = { store: 'required' };
@@ -17,6 +18,11 @@ function toStoreRelativePath(env, store, givenPath) {
17
18
  * disclosure-policy spec: the tri-state ALLOW/DENY/ASK verdict, each with
18
19
  * its own documented exit code (cli-contract's reserved 4/5), printing the
19
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).
20
26
  */
21
27
  export async function execute(env, store, flags) {
22
28
  const relativePath = toStoreRelativePath(env, store, flags.path);
@@ -30,6 +36,27 @@ export async function execute(env, store, flags) {
30
36
  throw new NoteNotFoundError(relativePath);
31
37
  throw err;
32
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
+ }
33
60
  const { verdict, rung } = evaluateDisclosure(store.config, note, flags.audience);
34
61
  return {
35
62
  exitCode: VERDICT_EXIT_CODE[verdict],
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAc/D,MAAM,iBAAiB,GAAsC;IAC3D,KAAK,EAAE,QAAQ,CAAC,EAAE;IAClB,IAAI,EAAE,QAAQ,CAAC,cAAc;IAC7B,GAAG,EAAE,QAAQ,CAAC,aAAa;CAC5B,CAAC;AAEF,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;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY,EAAE,KAAiB;IACxE,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;IAEzD,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAChG,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEjF,OAAO;QACL,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAa;QAChD,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QACrE,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,GAAG,YAAY,kBAAkB,KAAK,CAAC,QAAQ,MAAM,OAAO,CAAC,WAAW,EAAE,WAAW,IAAI,GAAG;QAC1G,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
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 EntryAppendFlags {
6
+ path: string;
7
+ region: string;
8
+ text: string;
9
+ }
10
+ export interface EntryAppendData {
11
+ path: string;
12
+ region: string;
13
+ lines: number;
14
+ }
15
+ /**
16
+ * context-store spec (D1): the one structured-write primitive many audited
17
+ * procedures reduce to — "append a line into a known block and keep
18
+ * everything else intact." Uses the same `contexture:<region>` marker-fence
19
+ * primitive every other generated region uses, so a mismatched marker pair
20
+ * aborts with zero bytes written, exactly like everywhere else, and
21
+ * `ctxr-derived-artifacts`'s "never hand-edit inside a fence" rule applies
22
+ * to this region too.
23
+ */
24
+ export declare function execute(env: RunEnv, store: Store, flags: EntryAppendFlags): Promise<CommandOutcome<EntryAppendData>>;
25
+ //# sourceMappingURL=entry-append.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-append.d.ts","sourceRoot":"","sources":["../../src/commands/entry-append.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,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,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAOD;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAmB1C"}
@@ -0,0 +1,39 @@
1
+ import { existsSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { NoteNotFoundError } from '../core/errors.js';
4
+ import { ExitCode } from '../core/exit-codes.js';
5
+ import { readFencedRegionFromFile, upsertFencedRegionInFile } from '../core/fs/fenced-region.js';
6
+ import { htmlCommentFence } from '../core/markers.js';
7
+ export const requires = { store: 'required' };
8
+ function toStoreRelativePath(env, store, givenPath) {
9
+ const absolute = path.isAbsolute(givenPath) ? givenPath : path.resolve(env.cwd, givenPath);
10
+ return path.relative(store.root, absolute).split(path.sep).join('/');
11
+ }
12
+ /**
13
+ * context-store spec (D1): the one structured-write primitive many audited
14
+ * procedures reduce to — "append a line into a known block and keep
15
+ * everything else intact." Uses the same `contexture:<region>` marker-fence
16
+ * primitive every other generated region uses, so a mismatched marker pair
17
+ * aborts with zero bytes written, exactly like everywhere else, and
18
+ * `ctxr-derived-artifacts`'s "never hand-edit inside a fence" rule applies
19
+ * to this region too.
20
+ */
21
+ export async function execute(env, store, flags) {
22
+ const relativePath = toStoreRelativePath(env, store, flags.path);
23
+ const absolutePath = path.join(store.root, relativePath);
24
+ if (!existsSync(absolutePath))
25
+ throw new NoteNotFoundError(relativePath);
26
+ const fence = htmlCommentFence(flags.region);
27
+ const existingLines = await readFencedRegionFromFile(absolutePath, fence);
28
+ const newLines = [...existingLines, flags.text];
29
+ await upsertFencedRegionInFile(absolutePath, fence, newLines);
30
+ return {
31
+ exitCode: ExitCode.Ok,
32
+ data: { path: relativePath, region: flags.region, lines: newLines.length },
33
+ findings: [],
34
+ humanSummary: `Appended to region "${flags.region}" in "${relativePath}" (${newLines.length} line(s)).`,
35
+ storeRoot: store.root,
36
+ schemaVersion: store.config.schema_version,
37
+ };
38
+ }
39
+ //# sourceMappingURL=entry-append.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-append.js","sourceRoot":"","sources":["../../src/commands/entry-append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAc/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;;;;;;;;GAQG;AACH,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,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEzE,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,wBAAwB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,wBAAwB,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE9D,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE;QAC1E,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,uBAAuB,KAAK,CAAC,MAAM,SAAS,YAAY,MAAM,QAAQ,CAAC,MAAM,YAAY;QACvG,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
2
  import { type GraphBuildResult } from '../core/graph/model.js';
3
+ import { type GraphDocumentSummary } from '../core/graph/document.js';
3
4
  import { type PerNoteRecord } from '../core/records.js';
4
5
  import type { Store } from '../core/store.js';
5
6
  export declare const requires: CommandRequires;
@@ -10,6 +11,10 @@ export interface GraphBuildData {
10
11
  nodeCount: number;
11
12
  edgeCount: number;
12
13
  dangling: GraphBuildResult['dangling'];
14
+ /** graph-context-document spec: where the human-readable render went, and what each section holds. */
15
+ document: {
16
+ path: string;
17
+ } & GraphDocumentSummary;
13
18
  records?: PerNoteRecord[];
14
19
  }
15
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"graph-build.d.ts","sourceRoot":"","sources":["../../src/commands/graph-build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGpF,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAuBhH"}
1
+ {"version":3,"file":"graph-build.d.ts","sourceRoot":"","sources":["../../src/commands/graph-build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EAA0C,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAG3F,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvC,sGAAsG;IACtG,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB,CAAC;IAClD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAyBhH"}
@@ -1,6 +1,7 @@
1
1
  import { ExitCode } from '../core/exit-codes.js';
2
- import { buildGraphFromNotes } from '../core/graph/model.js';
3
- import { writeGraph } from '../core/graph/persist.js';
2
+ import { buildGraphFromNotes, graphBuildOptions } from '../core/graph/model.js';
3
+ import { renderGraphDocument } from '../core/graph/document.js';
4
+ import { GRAPH_DOCUMENT_RELATIVE_PATH, writeGraph, writeGraphDocument } from '../core/graph/persist.js';
4
5
  import { listNotes } from '../core/notes/list.js';
5
6
  import { buildPerNoteRecords } from '../core/records.js';
6
7
  export const requires = { store: 'required' };
@@ -14,8 +15,10 @@ export const requires = { store: 'required' };
14
15
  */
15
16
  export async function execute(store, flags = {}) {
16
17
  const notes = await listNotes(store.root, store.config);
17
- const graph = buildGraphFromNotes(notes);
18
+ const graph = buildGraphFromNotes(notes, graphBuildOptions(store.config));
18
19
  await writeGraph(store, graph);
20
+ const { text, summary } = renderGraphDocument(graph, store.config.retrieval.graph);
21
+ await writeGraphDocument(store, text);
19
22
  const records = flags.emitRecords ? await buildPerNoteRecords(store) : undefined;
20
23
  const findings = graph.dangling.map((d) => ({
21
24
  code: 'graph.dangling_link',
@@ -26,9 +29,9 @@ export async function execute(store, flags = {}) {
26
29
  }));
27
30
  return {
28
31
  exitCode: ExitCode.Ok,
29
- data: { nodeCount: graph.nodes.length, edgeCount: graph.edges.length, dangling: graph.dangling, records },
32
+ data: { nodeCount: graph.nodes.length, edgeCount: graph.edges.length, dangling: graph.dangling, document: { path: GRAPH_DOCUMENT_RELATIVE_PATH, ...summary }, records },
30
33
  findings,
31
- humanSummary: `Graph built: ${graph.nodes.length} node(s), ${graph.edges.length} edge(s), ${graph.dangling.length} dangling link(s).`,
34
+ humanSummary: `Graph built: ${graph.nodes.length} node(s), ${graph.edges.length} edge(s) (${summary.typedLinks} typed), ${graph.dangling.length} dangling link(s); ${summary.clusters} cluster(s), ${summary.bridges} bridge(s), ${summary.orphans} orphan(s) → ${GRAPH_DOCUMENT_RELATIVE_PATH}.`,
32
35
  storeRoot: store.root,
33
36
  schemaVersion: store.config.schema_version,
34
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"graph-build.js","sourceRoot":"","sources":["../../src/commands/graph-build.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAyB,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,oBAAoB,CAAC;AAG7E,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAa/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAY,EAAE,KAAK,GAAoB,EAAE;IACrE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAE/B,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjF,MAAM,QAAQ,GAAc,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,SAAkB;QAC5B,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,WAAW,GAAG;QACjJ,OAAO,EAAE,CAAC,CAAC,IAAI;QACf,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KAChD,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE;QACzG,QAAQ;QACR,YAAY,EAAE,gBAAgB,KAAK,CAAC,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,QAAQ,CAAC,MAAM,oBAAoB;QACrI,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"graph-build.js","sourceRoot":"","sources":["../../src/commands/graph-build.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAyB,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,mBAAmB,EAA6B,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACxG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,oBAAoB,CAAC;AAG7E,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAe/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAY,EAAE,KAAK,GAAoB,EAAE;IACrE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnF,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjF,MAAM,QAAQ,GAAc,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,SAAkB;QAC5B,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,WAAW,GAAG;QACjJ,OAAO,EAAE,CAAC,CAAC,IAAI;QACf,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KAChD,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE;QACvK,QAAQ;QACR,YAAY,EAAE,gBAAgB,KAAK,CAAC,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,KAAK,CAAC,MAAM,aAAa,OAAO,CAAC,UAAU,YAAY,KAAK,CAAC,QAAQ,CAAC,MAAM,sBAAsB,OAAO,CAAC,QAAQ,gBAAgB,OAAO,CAAC,OAAO,eAAe,OAAO,CAAC,OAAO,gBAAgB,4BAA4B,GAAG;QACjS,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
2
  import type { Direction, HubEntry } from '../core/graph/query.js';
3
+ import { type BridgeEntry, type ClusterEntry } from '../core/graph/query.js';
3
4
  import type { GraphBuildResult } from '../core/graph/model.js';
4
5
  import type { Store } from '../core/store.js';
5
6
  export declare const requires: CommandRequires;
@@ -7,6 +8,7 @@ export interface NeighborsFlags {
7
8
  node: string;
8
9
  depth?: number;
9
10
  direction?: Direction;
11
+ type?: string;
10
12
  as?: string;
11
13
  }
12
14
  export declare function executeNeighbors(store: Store, flags: NeighborsFlags): Promise<CommandOutcome<{
@@ -38,4 +40,17 @@ export interface OrphansFlags {
38
40
  export declare function executeOrphans(store: Store, flags?: OrphansFlags): Promise<CommandOutcome<{
39
41
  orphans: string[];
40
42
  }>>;
43
+ export interface ClustersFlags {
44
+ as?: string;
45
+ }
46
+ export declare function executeClusters(store: Store, flags?: ClustersFlags): Promise<CommandOutcome<{
47
+ clusters: ClusterEntry[];
48
+ }>>;
49
+ export interface BridgesFlags {
50
+ top?: number;
51
+ as?: string;
52
+ }
53
+ export declare function executeBridges(store: Store, flags?: BridgesFlags): Promise<CommandOutcome<{
54
+ bridges: BridgeEntry[];
55
+ }>>;
41
56
  //# sourceMappingURL=graph-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph-query.d.ts","sourceRoot":"","sources":["../../src/commands/graph-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AA6B/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,cAAc,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC,CAKlD;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,cAAc,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,CAUpD;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAKnH;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,CAAC,CAIpH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,YAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC,CAI3H"}
1
+ {"version":3,"file":"graph-query.d.ts","sourceRoot":"","sources":["../../src/commands/graph-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAQL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AA6B/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,cAAc,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC,CAKlD;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,cAAc,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,CAUpD;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAKnH;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,CAAC,CAIpH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,YAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC,CAI3H;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,KAAK,EACZ,KAAK,GAAE,aAAkB,GACxB,OAAO,CAAC,cAAc,CAAC;IAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAAC,CAIvD;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,KAAK,EACZ,KAAK,GAAE,YAAiB,GACvB,OAAO,CAAC,cAAc,CAAC;IAAE,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CAAC,CAIrD"}
@@ -1,6 +1,6 @@
1
1
  import { GraphNodeNotFoundError, GraphNotBuiltError } from '../core/errors.js';
2
2
  import { ExitCode } from '../core/exit-codes.js';
3
- import { hubs, neighbors, orphans, shortestPath, subgraph } from '../core/graph/query.js';
3
+ import { bridges, clusters, hubs, neighbors, orphans, shortestPath, subgraph, } from '../core/graph/query.js';
4
4
  import { readGraph } from '../core/graph/persist.js';
5
5
  import { filterGraphByAudience } from '../core/graph/visibility-filter.js';
6
6
  export const requires = { store: 'required' };
@@ -33,7 +33,7 @@ function outcome(store, data, humanSummary) {
33
33
  export async function executeNeighbors(store, flags) {
34
34
  const graph = await loadGraph(store, flags.as);
35
35
  assertNode(graph, flags.node);
36
- const result = neighbors(graph, flags.node, { depth: flags.depth, direction: flags.direction });
36
+ const result = neighbors(graph, flags.node, { depth: flags.depth, direction: flags.direction, type: flags.type });
37
37
  return outcome(store, { neighbors: result }, `${result.length} neighbor(s) of "${flags.node}".`);
38
38
  }
39
39
  export async function executePath(store, flags) {
@@ -60,4 +60,14 @@ export async function executeOrphans(store, flags = {}) {
60
60
  const result = orphans(graph);
61
61
  return outcome(store, { orphans: result }, `${result.length} orphan node(s) (no links in or out).`);
62
62
  }
63
+ export async function executeClusters(store, flags = {}) {
64
+ const graph = await loadGraph(store, flags.as);
65
+ const result = clusters(graph);
66
+ return outcome(store, { clusters: result }, `${result.length} cluster(s).`);
67
+ }
68
+ export async function executeBridges(store, flags = {}) {
69
+ const graph = await loadGraph(store, flags.as);
70
+ const result = bridges(graph, flags.top ?? store.config.retrieval.graph.bridge_top);
71
+ return outcome(store, { bridges: result }, `Top ${result.length} bridge(s) by distinct clusters linked into.`);
72
+ }
63
73
  //# sourceMappingURL=graph-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph-query.js","sourceRoot":"","sources":["../../src/commands/graph-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-query.js","sourceRoot":"","sources":["../../src/commands/graph-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import type { Store } from '../core/store.js';
3
+ export declare const requires: CommandRequires;
4
+ export interface IdentityEditData {
5
+ path: string;
6
+ entries: number;
7
+ }
8
+ export interface IdentityAddFlags {
9
+ file: string;
10
+ text: string;
11
+ }
12
+ export declare function executeAdd(store: Store, flags: IdentityAddFlags): Promise<CommandOutcome<IdentityEditData>>;
13
+ export interface IdentityReplaceFlags {
14
+ file: string;
15
+ match: string;
16
+ text: string;
17
+ }
18
+ export declare function executeReplace(store: Store, flags: IdentityReplaceFlags): Promise<CommandOutcome<IdentityEditData>>;
19
+ export interface IdentityRemoveFlags {
20
+ file: string;
21
+ match: string;
22
+ }
23
+ export declare function executeRemove(store: Store, flags: IdentityRemoveFlags): Promise<CommandOutcome<IdentityEditData>>;
24
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/commands/identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAU1E,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;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAmBD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAIjH;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAIzH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAIvH"}
@@ -0,0 +1,35 @@
1
+ import { ExitCode } from '../core/exit-codes.js';
2
+ import { UnknownIdentityRoleError } from '../core/errors.js';
3
+ import { addIdentityEntry, IDENTITY_ROLES, removeIdentityEntry, replaceIdentityEntry, } from '../core/identity.js';
4
+ export const requires = { store: 'required' };
5
+ function checkRole(role) {
6
+ if (!IDENTITY_ROLES.includes(role)) {
7
+ throw new UnknownIdentityRoleError(role, IDENTITY_ROLES);
8
+ }
9
+ }
10
+ function outcome(store, result, humanSummary) {
11
+ return {
12
+ exitCode: ExitCode.Ok,
13
+ data: result,
14
+ findings: [],
15
+ humanSummary,
16
+ storeRoot: store.root,
17
+ schemaVersion: store.config.schema_version,
18
+ };
19
+ }
20
+ export async function executeAdd(store, flags) {
21
+ checkRole(flags.file);
22
+ const result = await addIdentityEntry(store.root, store.config, flags.file, flags.text);
23
+ return outcome(store, result, `Added an entry to "${result.path}" (${result.entries} total).`);
24
+ }
25
+ export async function executeReplace(store, flags) {
26
+ checkRole(flags.file);
27
+ const result = await replaceIdentityEntry(store.root, store.config, flags.file, flags.match, flags.text);
28
+ return outcome(store, result, `Replaced the entry matching "${flags.match}" in "${result.path}" (${result.entries} total).`);
29
+ }
30
+ export async function executeRemove(store, flags) {
31
+ checkRole(flags.file);
32
+ const result = await removeIdentityEntry(store.root, store.config, flags.file, flags.match);
33
+ return outcome(store, result, `Removed the entry matching "${flags.match}" from "${result.path}" (${result.entries} total).`);
34
+ }
35
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/commands/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAO/D,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAE,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,wBAAwB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAY,EAAE,MAAyC,EAAE,YAAoB;IAC5F,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,EAAE;QACZ,YAAY;QACZ,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAY,EAAE,KAAuB;IACpE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACxF,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AACjG,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAY,EAAE,KAA2B;IAC5E,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzG,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,gCAAgC,KAAK,CAAC,KAAK,SAAS,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAC/H,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAY,EAAE,KAA0B;IAC1E,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5F,OAAO,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,+BAA+B,KAAK,CAAC,KAAK,WAAW,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAChI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAsB1E,OAAO,EAAmE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAchI,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgB5D,eAAO,MAAM,QAAQ,EAAE,eAAqC,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE;QAAE,kBAAkB,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3F,wFAAwF;IACxF,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IACpE,cAAc,EAAE,MAAM,CAAC;CACxB;AAwMD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAY9F"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA0B1E,OAAO,EAAmE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAchI,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgB5D,eAAO,MAAM,QAAQ,EAAE,eAAqC,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE;QAAE,kBAAkB,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3F,wFAAwF;IACxF,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IACpE,cAAc,EAAE,MAAM,CAAC;CACxB;AAwMD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAY9F"}