ctxr-cli 0.3.0 → 0.4.1

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 (117) hide show
  1. package/dist/adapters/harness/claude-code.d.ts +0 -6
  2. package/dist/adapters/harness/claude-code.d.ts.map +1 -1
  3. package/dist/adapters/harness/claude-code.js +44 -25
  4. package/dist/adapters/harness/claude-code.js.map +1 -1
  5. package/dist/adapters/types.d.ts +28 -9
  6. package/dist/adapters/types.d.ts.map +1 -1
  7. package/dist/commands/adapters-generate.d.ts.map +1 -1
  8. package/dist/commands/adapters-generate.js +16 -7
  9. package/dist/commands/adapters-generate.js.map +1 -1
  10. package/dist/commands/adapters-write-gate.d.ts +20 -0
  11. package/dist/commands/adapters-write-gate.d.ts.map +1 -0
  12. package/dist/commands/adapters-write-gate.js +77 -0
  13. package/dist/commands/adapters-write-gate.js.map +1 -0
  14. package/dist/commands/init.d.ts.map +1 -1
  15. package/dist/commands/init.js +7 -7
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/rollup-stale.d.ts.map +1 -1
  18. package/dist/commands/rollup-stale.js +1 -1
  19. package/dist/commands/rollup-stale.js.map +1 -1
  20. package/dist/commands/session-land.d.ts.map +1 -1
  21. package/dist/commands/session-land.js +55 -24
  22. package/dist/commands/session-land.js.map +1 -1
  23. package/dist/commands/session-reap.d.ts.map +1 -1
  24. package/dist/commands/session-reap.js +4 -0
  25. package/dist/commands/session-reap.js.map +1 -1
  26. package/dist/commands/verify.js +17 -17
  27. package/dist/commands/verify.js.map +1 -1
  28. package/dist/config/defaults.d.ts +4 -2
  29. package/dist/config/defaults.d.ts.map +1 -1
  30. package/dist/config/defaults.js +4 -2
  31. package/dist/config/defaults.js.map +1 -1
  32. package/dist/config/schema.d.ts +20 -4
  33. package/dist/config/schema.d.ts.map +1 -1
  34. package/dist/config/schema.js +53 -4
  35. package/dist/config/schema.js.map +1 -1
  36. package/dist/core/agents-doc.d.ts +13 -9
  37. package/dist/core/agents-doc.d.ts.map +1 -1
  38. package/dist/core/agents-doc.js +69 -107
  39. package/dist/core/agents-doc.js.map +1 -1
  40. package/dist/core/checks/integrity-checks.d.ts +14 -0
  41. package/dist/core/checks/integrity-checks.d.ts.map +1 -1
  42. package/dist/core/checks/integrity-checks.js +77 -1
  43. package/dist/core/checks/integrity-checks.js.map +1 -1
  44. package/dist/core/conventions.d.ts +1 -1
  45. package/dist/core/errors.d.ts +9 -0
  46. package/dist/core/errors.d.ts.map +1 -1
  47. package/dist/core/errors.js +18 -1
  48. package/dist/core/errors.js.map +1 -1
  49. package/dist/core/git/repo.d.ts +10 -0
  50. package/dist/core/git/repo.d.ts.map +1 -1
  51. package/dist/core/git/repo.js +28 -0
  52. package/dist/core/git/repo.js.map +1 -1
  53. package/dist/core/git/worktree.d.ts +8 -0
  54. package/dist/core/git/worktree.d.ts.map +1 -1
  55. package/dist/core/git/worktree.js +11 -0
  56. package/dist/core/git/worktree.js.map +1 -1
  57. package/dist/core/hooks.d.ts +10 -0
  58. package/dist/core/hooks.d.ts.map +1 -1
  59. package/dist/core/hooks.js +37 -10
  60. package/dist/core/hooks.js.map +1 -1
  61. package/dist/core/json-config-merge.d.ts +26 -2
  62. package/dist/core/json-config-merge.d.ts.map +1 -1
  63. package/dist/core/json-config-merge.js +61 -7
  64. package/dist/core/json-config-merge.js.map +1 -1
  65. package/dist/core/markers.d.ts +7 -0
  66. package/dist/core/markers.d.ts.map +1 -1
  67. package/dist/core/markers.js +9 -0
  68. package/dist/core/markers.js.map +1 -1
  69. package/dist/core/migrations/registry.d.ts.map +1 -1
  70. package/dist/core/migrations/registry.js +2 -1
  71. package/dist/core/migrations/registry.js.map +1 -1
  72. package/dist/core/migrations/rename-procedures-path.d.ts +17 -0
  73. package/dist/core/migrations/rename-procedures-path.d.ts.map +1 -0
  74. package/dist/core/migrations/rename-procedures-path.js +45 -0
  75. package/dist/core/migrations/rename-procedures-path.js.map +1 -0
  76. package/dist/core/notes/list.d.ts.map +1 -1
  77. package/dist/core/notes/list.js +9 -5
  78. package/dist/core/notes/list.js.map +1 -1
  79. package/dist/core/reconcile.js +2 -2
  80. package/dist/core/reconcile.js.map +1 -1
  81. package/dist/core/rollup.d.ts +25 -2
  82. package/dist/core/rollup.d.ts.map +1 -1
  83. package/dist/core/rollup.js +51 -5
  84. package/dist/core/rollup.js.map +1 -1
  85. package/dist/core/{procedures.d.ts → skills.d.ts} +12 -12
  86. package/dist/core/skills.d.ts.map +1 -0
  87. package/dist/core/{procedures.js → skills.js} +55 -41
  88. package/dist/core/skills.js.map +1 -0
  89. package/dist/core/templates.d.ts +20 -0
  90. package/dist/core/templates.d.ts.map +1 -0
  91. package/dist/core/templates.js +68 -0
  92. package/dist/core/templates.js.map +1 -0
  93. package/dist/core/write-lifecycle/path-gate.d.ts +28 -0
  94. package/dist/core/write-lifecycle/path-gate.d.ts.map +1 -1
  95. package/dist/core/write-lifecycle/path-gate.js +78 -22
  96. package/dist/core/write-lifecycle/path-gate.js.map +1 -1
  97. package/dist/run.d.ts.map +1 -1
  98. package/dist/run.js +12 -1
  99. package/dist/run.js.map +1 -1
  100. package/dist/version.d.ts +1 -1
  101. package/dist/version.js +1 -1
  102. package/package.json +1 -1
  103. package/templates/agents/canonical.md +26 -0
  104. package/templates/agents/capture-and-ingest.md +17 -0
  105. package/templates/agents/placement-no-layers.md +5 -0
  106. package/templates/agents/placement.md +7 -0
  107. package/templates/agents/retrieval-leg-routing.md +14 -0
  108. package/templates/agents/store-conventions-empty.md +7 -0
  109. package/templates/agents/store-conventions.md +7 -0
  110. package/templates/hooks/claude-code-write-gate.sh +15 -0
  111. package/templates/skills/ctxr-connection-finding.md +1 -1
  112. package/templates/skills/ctxr-ingest-orchestration.md +1 -1
  113. package/templates/skills/ctxr-land.md +11 -6
  114. package/templates/skills/ctxr-mission.md +36 -0
  115. package/templates/skills/ctxr-session-lifecycle.md +1 -2
  116. package/dist/core/procedures.d.ts.map +0 -1
  117. package/dist/core/procedures.js.map +0 -1
@@ -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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"}
@@ -31,6 +31,16 @@ export type ToplevelStatus = {
31
31
  export declare function findToplevel(git: GitRunner, cwd: string): Promise<ToplevelStatus>;
32
32
  /** context-store spec: every non-init command refuses to operate on a root not inside a git repo. */
33
33
  export declare function isInsideGitRepo(git: GitRunner, cwd: string): Promise<boolean>;
34
+ /**
35
+ * Whether `root` is itself a linked worktree's checkout, as opposed to a
36
+ * repository's main working tree (or no git checkout at all) — detected the
37
+ * same way git itself distinguishes them, without a subprocess: in the main
38
+ * working tree `.git` is a directory; in a linked worktree it is a text file
39
+ * whose content starts with `gitdir: `. Synchronous and fs-only (no
40
+ * `GitRunner`) because write-lifecycle/path-gate.ts's `isWriteInScope` calls
41
+ * this on every gated tool call and has no git runner of its own to spare.
42
+ */
43
+ export declare function isLinkedWorktreeRoot(root: string): boolean;
34
44
  /**
35
45
  * Whether git has an explicit author identity available, from either source
36
46
  * it actually uses at commit time: `GIT_AUTHOR_*`/`GIT_COMMITTER_*`
@@ -1 +1 @@
1
- {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../src/core/git/repo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,mGAAmG;AACnG,wBAAsB,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAQvF;AAED,qGAAqG;AACrG,wBAAsB,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGnF;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxE;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,wIAAwI;AACxI,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErG;AAED,6FAA6F;AAC7F,wBAAsB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnG;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpF;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnG;AAED,+LAA+L;AAC/L,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGnG;AAED,8FAA8F;AAC9F,wBAAsB,cAAc,CAClC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,iHAAiH;AACjH,wBAAsB,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9G;AAED,2GAA2G;AAC3G,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtF"}
1
+ {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../src/core/git/repo.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { readFileSync, statSync } from 'node:fs';
1
2
  import path from 'node:path';
2
3
  /** Distinguishes "root is already a repo", "root is inside another repo", and "no repo at all". */
3
4
  export async function findToplevel(git, cwd) {
@@ -15,6 +16,33 @@ export async function isInsideGitRepo(git, cwd) {
15
16
  const result = await git.run(['rev-parse', '--is-inside-work-tree'], { cwd, allowFailure: true });
16
17
  return result.exitCode === 0 && result.stdout.trim() === 'true';
17
18
  }
19
+ /**
20
+ * Whether `root` is itself a linked worktree's checkout, as opposed to a
21
+ * repository's main working tree (or no git checkout at all) — detected the
22
+ * same way git itself distinguishes them, without a subprocess: in the main
23
+ * working tree `.git` is a directory; in a linked worktree it is a text file
24
+ * whose content starts with `gitdir: `. Synchronous and fs-only (no
25
+ * `GitRunner`) because write-lifecycle/path-gate.ts's `isWriteInScope` calls
26
+ * this on every gated tool call and has no git runner of its own to spare.
27
+ */
28
+ export function isLinkedWorktreeRoot(root) {
29
+ const gitPath = path.join(root, '.git');
30
+ let stat;
31
+ try {
32
+ stat = statSync(gitPath);
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ if (!stat.isFile())
38
+ return false;
39
+ try {
40
+ return readFileSync(gitPath, 'utf8').trimStart().startsWith('gitdir:');
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ }
18
46
  /**
19
47
  * Whether git has an explicit author identity available, from either source
20
48
  * it actually uses at commit time: `GIT_AUTHOR_*`/`GIT_COMMITTER_*`
@@ -1 +1 @@
1
- {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/core/git/repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/core/git/repo.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,12 @@ export interface WorktreeInfo {
26
26
  /** Parses `git worktree list --porcelain`'s block format (blocks separated by a blank line). */
27
27
  export declare function parseWorktreeList(porcelain: string): WorktreeInfo[];
28
28
  export declare function listWorktrees(git: GitRunner, cwd: string): Promise<WorktreeInfo[]>;
29
+ /**
30
+ * The store's canonical clone: git lists the repository's MAIN worktree first
31
+ * in `worktree list --porcelain`, so the first entry is it, whichever linked
32
+ * worktree the command was invoked from. Falls back to the passed cwd when the
33
+ * list is empty rather than throwing — a repository with no linked worktrees
34
+ * then behaves exactly as a caller that never asked.
35
+ */
36
+ export declare function mainWorktreePath(git: GitRunner, cwd: string): Promise<string>;
29
37
  //# sourceMappingURL=worktree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/core/git/worktree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAI9F;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAGlH;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBnE;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGxF"}
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/core/git/worktree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAI9F;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAGlH;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBnE;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGxF;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnF"}
@@ -58,4 +58,15 @@ export async function listWorktrees(git, cwd) {
58
58
  const result = await git.run(['worktree', 'list', '--porcelain'], { cwd });
59
59
  return parseWorktreeList(result.stdout);
60
60
  }
61
+ /**
62
+ * The store's canonical clone: git lists the repository's MAIN worktree first
63
+ * in `worktree list --porcelain`, so the first entry is it, whichever linked
64
+ * worktree the command was invoked from. Falls back to the passed cwd when the
65
+ * list is empty rather than throwing — a repository with no linked worktrees
66
+ * then behaves exactly as a caller that never asked.
67
+ */
68
+ export async function mainWorktreePath(git, cwd) {
69
+ const worktrees = await listWorktrees(git, cwd);
70
+ return worktrees[0]?.path ?? cwd;
71
+ }
61
72
  //# sourceMappingURL=worktree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/core/git/worktree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/core/git/worktree.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,16 @@ export interface HookInstallResult {
22
22
  * generated-region writer in the system.
23
23
  */
24
24
  export declare function installHooks(root: string, defaultBranch: string): Promise<HookInstallResult>;
25
+ /**
26
+ * A harness adapter's own generated hook script (e.g. Claude Code's
27
+ * PreToolUse write-gate) — same idempotent render+chmod discipline as git
28
+ * hooks, without assuming git-hook-specific substitutions or the
29
+ * `.githooks` directory. `substitutions` are applied as literal
30
+ * find-and-replace, the same convention `renderHook` uses.
31
+ */
32
+ export declare function installTemplatedHookScript(root: string, relativeTargetPath: string, templateFileName: string, substitutions: Readonly<Record<string, string>>): Promise<{
33
+ changed: boolean;
34
+ }>;
25
35
  export declare function configureHooksPath(git: GitRunner, cwd: string): Promise<void>;
26
36
  export declare function getConfiguredHooksPath(git: GitRunner, cwd: string): Promise<string | undefined>;
27
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAQD,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,YAAY,GAAG,UAAU,CAAC;IACpC,gBAAgB,EAAE,eAAe,GAAG,aAAa,CAAC;CACnD;AAcD,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsBlG;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAKrG;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAc7F"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAQD,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,YAAY,GAAG,UAAU,CAAC;IACpC,gBAAgB,EAAE,eAAe,GAAG,aAAa,CAAC;CACnD;AAmCD,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAclG;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC9C,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAM/B;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAKrG;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAc7F"}
@@ -26,6 +26,28 @@ async function renderHook(spec, defaultBranch) {
26
26
  .replaceAll('__CONTEXTURE_BIN__', resolveOwnBinPath())
27
27
  .replaceAll('__DEFAULT_BRANCH__', defaultBranch);
28
28
  }
29
+ /**
30
+ * The idempotent render+chmod discipline every generated executable script
31
+ * in this store shares: write only when the rendered content actually
32
+ * differs, so a second run with the same inputs touches neither mtime nor
33
+ * disk. `installHooks` and `installTemplatedHookScript` both funnel through
34
+ * this — one write path, never duplicated.
35
+ */
36
+ async function writeRenderedScript(targetPath, rendered) {
37
+ let existing;
38
+ try {
39
+ existing = await readFile(targetPath, 'utf8');
40
+ }
41
+ catch {
42
+ existing = undefined;
43
+ }
44
+ if (existing === rendered)
45
+ return false;
46
+ await mkdir(path.dirname(targetPath), { recursive: true });
47
+ await writeFileAtomic(targetPath, rendered);
48
+ await chmod(targetPath, 0o755);
49
+ return true;
50
+ }
29
51
  /**
30
52
  * Idempotent: a hook whose rendered content already matches what's on disk
31
53
  * is left untouched (no rewrite, no mtime churn), matching every other
@@ -38,21 +60,26 @@ export async function installHooks(root, defaultBranch) {
38
60
  for (const spec of HOOK_SPECS) {
39
61
  const rendered = await renderHook(spec, defaultBranch);
40
62
  const targetPath = path.join(hooksDir, spec.fileName);
41
- let existing;
42
- try {
43
- existing = await readFile(targetPath, 'utf8');
44
- }
45
- catch {
46
- existing = undefined;
47
- }
48
- if (existing !== rendered) {
49
- await writeFileAtomic(targetPath, rendered);
50
- await chmod(targetPath, 0o755);
63
+ if (await writeRenderedScript(targetPath, rendered)) {
51
64
  changed.push(`${HOOKS_DIR_NAME}/${spec.fileName}`);
52
65
  }
53
66
  }
54
67
  return { changed, hooksDir };
55
68
  }
69
+ /**
70
+ * A harness adapter's own generated hook script (e.g. Claude Code's
71
+ * PreToolUse write-gate) — same idempotent render+chmod discipline as git
72
+ * hooks, without assuming git-hook-specific substitutions or the
73
+ * `.githooks` directory. `substitutions` are applied as literal
74
+ * find-and-replace, the same convention `renderHook` uses.
75
+ */
76
+ export async function installTemplatedHookScript(root, relativeTargetPath, templateFileName, substitutions) {
77
+ const templateText = await readFile(path.join(templatesDir(), templateFileName), 'utf8');
78
+ const rendered = Object.entries(substitutions).reduce((text, [k, v]) => text.replaceAll(k, v), templateText);
79
+ const targetPath = path.join(root, relativeTargetPath);
80
+ const changed = await writeRenderedScript(targetPath, rendered);
81
+ return { changed };
82
+ }
56
83
  export async function configureHooksPath(git, cwd) {
57
84
  await git.run(['config', 'core.hooksPath', HOOKS_DIR_NAME], { cwd });
58
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/core/hooks.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,37 @@
1
+ /** A Claude Code hook-config entry, e.g. one `hooks.PreToolUse[]` element. */
2
+ export interface HookMatcherEntry {
3
+ matcher: string;
4
+ hooks: readonly {
5
+ type: string;
6
+ command: string;
7
+ [key: string]: unknown;
8
+ }[];
9
+ [key: string]: unknown;
10
+ }
11
+ export type MergeListValue = readonly string[] | readonly HookMatcherEntry[];
12
+ export type MergePatch = Readonly<Record<string, Readonly<Record<string, MergeListValue>>>>;
13
+ export type RemovePatch = Readonly<Record<string, Readonly<Record<string, readonly string[]>>>>;
1
14
  /**
2
15
  * A structured-JSON counterpart to the marker-fenced text writer (context-
3
16
  * store spec's generated-region convention): JSON has no comment syntax to
4
17
  * carry a fence marker in, so a harness permission config (task 8.4) is
5
- * merged by array union instead — contexture's own rules are appended only
18
+ * merged by list union instead — contexture's own rules are appended only
6
19
  * if not already present, so a hand-added rule survives untouched and a
7
20
  * second run with the same rule set is a true no-op (byte-identical file,
8
21
  * no write at all).
22
+ *
23
+ * Two list shapes are supported: a string list (permission rules), unioned
24
+ * and, when `options.remove` names entries a previous release emitted, first
25
+ * pruned of exact matches (never a predicate sweep — that would also catch a
26
+ * hand-added rule of the same shape); and a hook-matcher-entry list, upserted
27
+ * by `mergeHookEntries` above. A list key that empties out because removal
28
+ * took its last entry is dropped entirely, so a migrated store converges to
29
+ * the same shape as a freshly generated one; a list key that was already an
30
+ * empty array on disk, untouched by removal, is left as `[]`.
9
31
  */
10
- export declare function mergeJsonArrayLists(filePath: string, patch: Readonly<Record<string, Readonly<Record<string, readonly string[]>>>>): Promise<{
32
+ export declare function mergeJsonArrayLists(filePath: string, patch: MergePatch, options?: {
33
+ remove?: RemovePatch;
34
+ }): Promise<{
11
35
  changed: boolean;
12
36
  }>;
13
37
  //# sourceMappingURL=json-config-merge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-config-merge.d.ts","sourceRoot":"","sources":["../../src/core/json-config-merge.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAC3E,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA8B/B"}
1
+ {"version":3,"file":"json-config-merge.d.ts","sourceRoot":"","sources":["../../src/core/json-config-merge.ts"],"names":[],"mappings":"AAKA,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EAAE,CAAC;IAC5E,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,gBAAgB,EAAE,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAuBhG;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACjC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA4D/B"}
@@ -2,16 +2,44 @@ import { readFile } from 'node:fs/promises';
2
2
  import { mkdir } from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { writeFileAtomic } from './fs/atomic.js';
5
+ function isHookEntryList(value) {
6
+ return value.length > 0 && typeof value[0] === 'object' && value[0] !== null;
7
+ }
8
+ /**
9
+ * Upserts each incoming hook-matcher entry into the existing list, matched
10
+ * by its own `hooks[0].command` (the path to contexture's generated
11
+ * script): replaced in place when found, so regeneration is idempotent,
12
+ * appended otherwise. Any entry with a different command — an operator's
13
+ * own hook — is left untouched.
14
+ */
15
+ function mergeHookEntries(existing, incoming) {
16
+ let result = [...existing];
17
+ for (const entry of incoming) {
18
+ const command = entry.hooks[0]?.command;
19
+ const index = result.findIndex((candidate) => candidate.hooks?.[0]?.command === command);
20
+ result = index === -1 ? [...result, entry] : result.map((candidate, i) => (i === index ? entry : candidate));
21
+ }
22
+ return result;
23
+ }
5
24
  /**
6
25
  * A structured-JSON counterpart to the marker-fenced text writer (context-
7
26
  * store spec's generated-region convention): JSON has no comment syntax to
8
27
  * carry a fence marker in, so a harness permission config (task 8.4) is
9
- * merged by array union instead — contexture's own rules are appended only
28
+ * merged by list union instead — contexture's own rules are appended only
10
29
  * if not already present, so a hand-added rule survives untouched and a
11
30
  * second run with the same rule set is a true no-op (byte-identical file,
12
31
  * no write at all).
32
+ *
33
+ * Two list shapes are supported: a string list (permission rules), unioned
34
+ * and, when `options.remove` names entries a previous release emitted, first
35
+ * pruned of exact matches (never a predicate sweep — that would also catch a
36
+ * hand-added rule of the same shape); and a hook-matcher-entry list, upserted
37
+ * by `mergeHookEntries` above. A list key that empties out because removal
38
+ * took its last entry is dropped entirely, so a migrated store converges to
39
+ * the same shape as a freshly generated one; a list key that was already an
40
+ * empty array on disk, untouched by removal, is left as `[]`.
13
41
  */
14
- export async function mergeJsonArrayLists(filePath, patch) {
42
+ export async function mergeJsonArrayLists(filePath, patch, options) {
15
43
  let existing = {};
16
44
  try {
17
45
  existing = JSON.parse(await readFile(filePath, 'utf8'));
@@ -22,13 +50,39 @@ export async function mergeJsonArrayLists(filePath, patch) {
22
50
  }
23
51
  const before = JSON.stringify(existing);
24
52
  const merged = { ...existing };
25
- for (const [topKey, sections] of Object.entries(patch)) {
53
+ const removePatch = options?.remove ?? {};
54
+ const topKeys = new Set([...Object.keys(patch), ...Object.keys(removePatch)]);
55
+ for (const topKey of topKeys) {
56
+ const sections = patch[topKey] ?? {};
57
+ const removeSections = removePatch[topKey] ?? {};
26
58
  const existingTop = merged[topKey] ?? {};
27
59
  const mergedTop = { ...existingTop };
28
- for (const [listKey, newValues] of Object.entries(sections)) {
29
- const existingList = Array.isArray(existingTop[listKey]) ? existingTop[listKey] : [];
30
- const additions = newValues.filter((v) => !existingList.includes(v));
31
- mergedTop[listKey] = [...existingList, ...additions];
60
+ const listKeys = new Set([...Object.keys(sections), ...Object.keys(removeSections)]);
61
+ for (const listKey of listKeys) {
62
+ const newValues = sections[listKey] ?? [];
63
+ const toRemove = removeSections[listKey] ?? [];
64
+ const existingRaw = existingTop[listKey];
65
+ const existingListPresent = Array.isArray(existingRaw);
66
+ const existingList = existingListPresent ? existingRaw : [];
67
+ if (isHookEntryList(newValues) || (existingList.length > 0 && typeof existingList[0] === 'object')) {
68
+ mergedTop[listKey] = mergeHookEntries(existingList, newValues);
69
+ continue;
70
+ }
71
+ const existingStrings = existingList;
72
+ const removedCount = existingStrings.filter((v) => toRemove.includes(v)).length;
73
+ const afterRemoval = existingStrings.filter((v) => !toRemove.includes(v));
74
+ const additions = newValues.filter((v) => !afterRemoval.includes(v));
75
+ const result = [...afterRemoval, ...additions];
76
+ if (result.length === 0) {
77
+ if (removedCount > 0) {
78
+ delete mergedTop[listKey];
79
+ }
80
+ else if (existingListPresent && existingStrings.length === 0) {
81
+ mergedTop[listKey] = [];
82
+ }
83
+ continue;
84
+ }
85
+ mergedTop[listKey] = result;
32
86
  }
33
87
  merged[topKey] = mergedTop;
34
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"json-config-merge.js","sourceRoot":"","sources":["../../src/core/json-config-merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,KAA4E;IAE5E,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA4B,CAAC;IACrF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,MAAM,GAA4B,EAAE,GAAG,QAAQ,EAAE,CAAC;IAExD,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,WAAW,GAAI,MAAM,CAAC,MAAM,CAAyC,IAAI,EAAE,CAAC;QAClF,MAAM,SAAS,GAA4B,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9D,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAE,WAAW,CAAC,OAAO,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,eAAe,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"json-config-merge.js","sourceRoot":"","sources":["../../src/core/json-config-merge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAajD,SAAS,eAAe,CAAC,KAAqB;IAC5C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAC/E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,QAAqC,EAAE,QAAqC;IACpG,IAAI,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;QACzF,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/G,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,KAAiB,EACjB,OAAkC;IAElC,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA4B,CAAC;IACrF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,MAAM,GAA4B,EAAE,GAAG,QAAQ,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE9E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,WAAW,GAAI,MAAM,CAAC,MAAM,CAAyC,IAAI,EAAE,CAAC;QAClF,MAAM,SAAS,GAA4B,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAErF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACvD,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAE,WAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;YAE3E,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACnG,SAAS,CAAC,OAAO,CAAC,GAAG,gBAAgB,CAAC,YAAkC,EAAE,SAAwC,CAAC,CAAC;gBACpH,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,YAAwB,CAAC;YACjD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAChF,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,SAAS,GAAI,SAA+B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC;YAE/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC;qBAAM,IAAI,mBAAmB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/D,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC1B,CAAC;gBACD,SAAS;YACX,CAAC;YACD,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,eAAe,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -14,4 +14,11 @@ export declare function commentFence(regionName: string): Fence;
14
14
  export declare const DERIVED_GITIGNORE_FENCE: Fence;
15
15
  /** HTML-comment-style fence, used by markdown files (catalog sections, notes) so the markers render sensibly. */
16
16
  export declare function htmlCommentFence(regionName: string): Fence;
17
+ /**
18
+ * A harness-generation adapter's own fenced region within its entry file
19
+ * (`adapters-generate.ts`) — shared with the `adapters.harness_entry_no_duplicate_convention_text`
20
+ * doctor check (`integrity-checks.ts`), which needs the identical fence to
21
+ * find the same boundary from the other side (everything OUTSIDE it).
22
+ */
23
+ export declare function harnessEntryFence(adapterId: string): Fence;
17
24
  //# sourceMappingURL=markers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/core/markers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAKtD;AAED,eAAO,MAAM,uBAAuB,EAAE,KAA+B,CAAC;AAEtE,iHAAiH;AACjH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAK1D"}
1
+ {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/core/markers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAKtD;AAED,eAAO,MAAM,uBAAuB,EAAE,KAA+B,CAAC;AAEtE,iHAAiH;AACjH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAK1D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAE1D"}
@@ -13,4 +13,13 @@ export function htmlCommentFence(regionName) {
13
13
  end: `<!-- <<< contexture:${regionName} <<< -->`,
14
14
  };
15
15
  }
16
+ /**
17
+ * A harness-generation adapter's own fenced region within its entry file
18
+ * (`adapters-generate.ts`) — shared with the `adapters.harness_entry_no_duplicate_convention_text`
19
+ * doctor check (`integrity-checks.ts`), which needs the identical fence to
20
+ * find the same boundary from the other side (everything OUTSIDE it).
21
+ */
22
+ export function harnessEntryFence(adapterId) {
23
+ return htmlCommentFence(`adapter:${adapterId}:harness-entry`);
24
+ }
16
25
  //# sourceMappingURL=markers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/core/markers.ts"],"names":[],"mappings":"AAYA,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO;QACL,KAAK,EAAE,oBAAoB,UAAU,8BAA8B;QACnE,GAAG,EAAE,oBAAoB,UAAU,MAAM;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAU,YAAY,CAAC,SAAS,CAAC,CAAC;AAEtE,iHAAiH;AACjH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,OAAO;QACL,KAAK,EAAE,uBAAuB,UAAU,kCAAkC;QAC1E,GAAG,EAAE,uBAAuB,UAAU,UAAU;KACjD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/core/markers.ts"],"names":[],"mappings":"AAYA,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO;QACL,KAAK,EAAE,oBAAoB,UAAU,8BAA8B;QACnE,GAAG,EAAE,oBAAoB,UAAU,MAAM;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAU,YAAY,CAAC,SAAS,CAAC,CAAC;AAEtE,iHAAiH;AACjH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,OAAO;QACL,KAAK,EAAE,uBAAuB,UAAU,kCAAkC;QAC1E,GAAG,EAAE,uBAAuB,UAAU,UAAU;KACjD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,gBAAgB,CAAC,WAAW,SAAS,gBAAgB,CAAC,CAAC;AAChE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,gHAAgH;AAChH,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAAqC,CAAC;AAEjF,qHAAqH;AACrH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAElE"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,gHAAgH;AAChH,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAAoE,CAAC;AAEhH,qHAAqH;AACrH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAElE"}
@@ -1,6 +1,7 @@
1
+ import { renameProceduresPathMigration } from './rename-procedures-path.js';
1
2
  import { renameVisibilityFieldMigration } from './rename-visibility-field.js';
2
3
  /** Every migration contexture ships, in ascending fromVersion order. Later phases append here, nothing else. */
3
- export const MIGRATIONS = [renameVisibilityFieldMigration];
4
+ export const MIGRATIONS = [renameVisibilityFieldMigration, renameProceduresPathMigration];
4
5
  /** Every migration a store currently at `fromVersion` still needs to reach the CLI's supported version, in order. */
5
6
  export function pendingMigrations(fromVersion) {
6
7
  return MIGRATIONS.filter((m) => m.fromVersion >= fromVersion).slice().sort((a, b) => a.fromVersion - b.fromVersion);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAG9E,gHAAgH;AAChH,MAAM,CAAC,MAAM,UAAU,GAAyB,CAAC,8BAA8B,CAAC,CAAC;AAEjF,qHAAqH;AACrH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;AACtH,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/migrations/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAG9E,gHAAgH;AAChH,MAAM,CAAC,MAAM,UAAU,GAAyB,CAAC,8BAA8B,EAAE,6BAA6B,CAAC,CAAC;AAEhH,qHAAqH;AACrH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;AACtH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Migration } from './types.js';
2
+ /**
3
+ * rename-procedures-to-skills (design.md D2): a single-delta migration —
4
+ * unlike the visibility-field rename, no note frontmatter is touched, since
5
+ * only the config key's spelling changes, never any store file's location
6
+ * (DEFAULT_SKILLS_PATH is already DEFAULT_PROCEDURES_PATH's old value).
7
+ *
8
+ * Pending-ness is `store.config.schema_version < 3`, NOT the presence or
9
+ * absence of `store.config.harness.skills_path` — that field is populated
10
+ * by HarnessSchema's fallback transform even on an unmigrated v2 store (so
11
+ * every command keeps working before `ctxr migrate` runs), which means its
12
+ * presence can never distinguish "already migrated" from "not yet
13
+ * migrated." `schema_version` is the one signal the fallback doesn't mask,
14
+ * and this migration is the only thing that ever sets it to 3.
15
+ */
16
+ export declare const renameProceduresPathMigration: Migration;
17
+ //# sourceMappingURL=rename-procedures-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-procedures-path.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/rename-procedures-path.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAO5D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAwB3C,CAAC"}
@@ -0,0 +1,45 @@
1
+ import path from 'node:path';
2
+ import { readConfig } from '../../config/load.js';
3
+ import { renderStoreConfig } from '../../config/render.js';
4
+ import { writeFileAtomic } from '../fs/atomic.js';
5
+ const CONFIG_DELTA = {
6
+ path: 'contexture.yaml',
7
+ description: 'rename harness.procedures_path to harness.skills_path and set schema_version to 3',
8
+ };
9
+ /**
10
+ * rename-procedures-to-skills (design.md D2): a single-delta migration —
11
+ * unlike the visibility-field rename, no note frontmatter is touched, since
12
+ * only the config key's spelling changes, never any store file's location
13
+ * (DEFAULT_SKILLS_PATH is already DEFAULT_PROCEDURES_PATH's old value).
14
+ *
15
+ * Pending-ness is `store.config.schema_version < 3`, NOT the presence or
16
+ * absence of `store.config.harness.skills_path` — that field is populated
17
+ * by HarnessSchema's fallback transform even on an unmigrated v2 store (so
18
+ * every command keeps working before `ctxr migrate` runs), which means its
19
+ * presence can never distinguish "already migrated" from "not yet
20
+ * migrated." `schema_version` is the one signal the fallback doesn't mask,
21
+ * and this migration is the only thing that ever sets it to 3.
22
+ */
23
+ export const renameProceduresPathMigration = {
24
+ id: '0003-rename-procedures-path-to-skills-path',
25
+ fromVersion: 2,
26
+ toVersion: 3,
27
+ description: 'Rename the harness.procedures_path config key to harness.skills_path, and bump schema_version to 3.',
28
+ async plan(store) {
29
+ return store.config.schema_version < 3 ? [CONFIG_DELTA] : [];
30
+ },
31
+ async apply(store) {
32
+ if (store.config.schema_version >= 3)
33
+ return [];
34
+ const configPath = path.join(store.root, 'contexture.yaml');
35
+ // readConfig() already resolves harness.skills_path via HarnessSchema's
36
+ // fallback (from procedures_path if that's all the file has), so
37
+ // currentConfig.harness carries no procedures_path key at all —
38
+ // rendering it below writes only skills_path to disk.
39
+ const currentConfig = await readConfig(store.root);
40
+ const nextConfig = { ...currentConfig, schema_version: 3 };
41
+ await writeFileAtomic(configPath, renderStoreConfig(nextConfig));
42
+ return [CONFIG_DELTA];
43
+ },
44
+ };
45
+ //# sourceMappingURL=rename-procedures-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-procedures-path.js","sourceRoot":"","sources":["../../../src/core/migrations/rename-procedures-path.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,YAAY,GAAmB;IACnC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,mFAAmF;CACjG,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAc;IACtD,EAAE,EAAE,4CAA4C;IAChD,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,qGAAqG;IAElH,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,OAAO,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAK;QACf,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC5D,wEAAwE;QACxE,iEAAiE;QACjE,gEAAgE;QAChE,sDAAsD;QACtD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,EAAE,GAAG,aAAa,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;QAC3D,MAAM,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjE,OAAO,CAAC,YAAY,CAAC,CAAC;IACxB,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/core/notes/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,IAAI;IACnB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;CACd;AAkCD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAUjE;AAkCD,wGAAwG;AACxG,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAO9G"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/core/notes/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,IAAI;IACnB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;CACd;AAsCD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAUjE;AAkCD,wGAAwG;AACxG,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAO9G"}