@nanonets/graft 0.19.0 → 0.20.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.
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
  <img src="https://img.shields.io/badge/License-MIT-20C997?style=for-the-badge" />
18
18
  <a href="TELEMETRY.md"><img src="https://img.shields.io/badge/telemetry-anonymous%2C%20opt--out-546FFF?style=for-the-badge" /></a>
19
19
  <a href="https://scorecard.dev/viewer/?uri=github.com/NanoNets/Graft"><img src="https://img.shields.io/ossf-scorecard/github.com/NanoNets/Graft?style=for-the-badge&label=openssf%20scorecard" /></a>
20
- <a href="https://app.trailhq.com/get-started?step=pick"><img src="https://img.shields.io/badge/Trail%20Brain-try%20it-E5484D?style=for-the-badge&logoColor=white" /></a>
20
+ <a href="https://app.trailhq.com/get-started?step=repo"><img src="https://img.shields.io/badge/Trail-try%20it-E5484D?style=for-the-badge&logoColor=white" /></a>
21
21
  </p>
22
22
 
23
23
  ### Up to **4× cheaper** and **3× faster**, with better or no loss of correctness.
@@ -32,12 +32,17 @@
32
32
  </div>
33
33
 
34
34
  <p align="center">
35
- <b>This works beyond code too.</b><br/>
36
- A living skill file that learns from every task and gets sharper the more your team works.
35
+ <b>Stop repeating yourself to your coding agent.</b><br/>
36
+ You correct it, and by the next session it has forgotten. Trail manages your CLAUDE.md and AGENTS.md so it doesn't.
37
37
  </p>
38
38
 
39
39
  <p align="center">
40
- <a href="https://app.trailhq.com/get-started?step=pick"><img src="https://img.shields.io/badge/Try%20Trail%20Brain%20%E2%86%92-E5484D?style=for-the-badge" alt="Try Trail Brain" height="34"/></a>
40
+ &bull;&nbsp; Every correction you make becomes a rule your agent keeps.<br/>
41
+ &bull;&nbsp; The ones that can't break get a hook that blocks it, not a note it ignores.
42
+ </p>
43
+
44
+ <p align="center">
45
+ <a href="https://app.trailhq.com/get-started?step=repo"><img src="https://img.shields.io/badge/Try%20it%20on%20your%20repo%20%E2%86%92-E5484D?style=for-the-badge" alt="Try it on your repo" height="34"/></a>
41
46
  </p>
42
47
 
43
48
  <p align="center">
@@ -87,7 +87,7 @@ export declare function readCommits(root: string, max?: number): HistoryCommit[]
87
87
  * Bot comments are dropped. A CI bot posting a coverage table is the single
88
88
  * largest source of text in a busy repo's threads and it establishes nothing.
89
89
  */
90
- export declare function readThreads(owner: string, repo: string, token: string, fetchImpl: Fetch, api?: string, max?: number): Promise<HistoryThread[]>;
90
+ export declare function readThreads(owner: string, repo: string, token: string, fetchImpl: Fetch, api?: string, max?: number, known?: ReadonlyMap<number, HistoryThread>): Promise<HistoryThread[]>;
91
91
  /**
92
92
  * Exported symbols from the graph, with the body hash that makes an anchored
93
93
  * rule self-invalidating.
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/app/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/app/history.ts"],"names":[],"mappings":"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"}
@@ -93,7 +93,10 @@ const THREAD_FETCH_CONCURRENCY = 8;
93
93
  * Bot comments are dropped. A CI bot posting a coverage table is the single
94
94
  * largest source of text in a busy repo's threads and it establishes nothing.
95
95
  */
96
- export async function readThreads(owner, repo, token, fetchImpl, api = "https://api.github.com", max = MAX_THREADS) {
96
+ export async function readThreads(owner, repo, token, fetchImpl, api = "https://api.github.com", max = MAX_THREADS,
97
+ // Threads already read (the early upload's newest ones), reused rather than
98
+ // fetched a second time.
99
+ known = new Map()) {
97
100
  const headers = ghHeaders(token);
98
101
  const pulls = [];
99
102
  // 100 per page, up to the cap. Sorted by GitHub as most-recently-updated,
@@ -116,6 +119,9 @@ export async function readThreads(owner, repo, token, fetchImpl, api = "https://
116
119
  for (let i = 0; i < candidates.length; i += THREAD_FETCH_CONCURRENCY) {
117
120
  const slice = candidates.slice(i, i + THREAD_FETCH_CONCURRENCY);
118
121
  const fetched = await Promise.all(slice.map(async (p) => {
122
+ const seen = known.get(p.number);
123
+ if (seen)
124
+ return seen;
119
125
  const [issueComments, reviewComments] = await Promise.all([
120
126
  readComments(`${api}/repos/${owner}/${repo}/issues/${p.number}/comments`, headers, fetchImpl),
121
127
  readComments(`${api}/repos/${owner}/${repo}/pulls/${p.number}/comments`, headers, fetchImpl),
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/app/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AAsDtD;mEACmE;AACnE,MAAM,GAAG,GAAG,MAAM,CAAC;AACnB,MAAM,KAAK,GAAG,MAAM,CAAC;AAErB;gEACgE;AAChE,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B,iDAAiD;AACjD,SAAS,GAAG,CAAC,IAAY,EAAE,IAAc;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,EAAE;QACpE,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;KAC5B,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjF,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAG,GAAG,WAAW;IACzD,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;QACpB,KAAK;QACL,aAAa;QACb,WAAW;QACX,IAAI;QACJ,MAAM,CAAC,GAAG,CAAC;QACX,YAAY,GAAG,EAAE;QACjB,aAAa;KACd,CAAC,CAAC;IACH,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,SAAS;QAC7B,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,IAAI;aACf,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3B,0EAA0E;QAC1E,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,SAAS;QAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E;AAC7E,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B;;oDAEoD;AACpD,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAenC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,IAAY,EACZ,KAAa,EACb,SAAgB,EAChB,GAAG,GAAG,wBAAwB,EAC9B,GAAG,GAAG,WAAW;IAEjB,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,0EAA0E;IAC1E,6EAA6E;IAC7E,0EAA0E;IAC1E,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9E,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,GAAG,GAAG,UAAU,KAAK,IAAI,IAAI,qEAAqE,IAAI,EAAE,EACxG,EAAE,OAAO,EAAE,CACZ,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QACvD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0C,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE3H,uEAAuE;IACvE,8EAA8E;IAC9E,yCAAyC;IACzC,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACpB,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxD,YAAY,CAAC,GAAG,GAAG,UAAU,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,MAAM,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC;gBAC7F,YAAY,CAAC,GAAG,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,CAAC,MAAM,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC;aAC7F,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,cAAc,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvC,OAAO;gBACL,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC3B,QAAQ,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC3C,QAAQ;aACe,CAAC;QAC5B,CAAC,CAAC,CACH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,kCAAkC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qDAAqD;AACrD,KAAK,UAAU,YAAY,CACzB,GAAW,EACX,OAA+B,EAC/B,SAAgB;IAEhB,MAAM,GAAG,GAA2C,EAAE,CAAC;IACvD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,GAAG,sBAAsB,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM;QACnB,IAAI,KAAoB,CAAC;QACzB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkB,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QACvD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK;gBAAE,SAAS;YACrC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM;IAChC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iFAAiF;AACjF,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAqB,EAAE,GAAG,GAAG,WAAW;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,KAAK;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;SAC/C,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,WAAW,EAAE,CAAC,CAAC,SAAS;KACzB,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAW3B;IACC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,wEAAwE;YACxE,6EAA6E;YAC7E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SAClE,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,QAAQ;YACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,MAAkB,EAClB,SAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE;QAC3G,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,UAAU,EAAE;YACrC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;SAC3B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAC7B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/app/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AAsDtD;mEACmE;AACnE,MAAM,GAAG,GAAG,MAAM,CAAC;AACnB,MAAM,KAAK,GAAG,MAAM,CAAC;AAErB;gEACgE;AAChE,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B,iDAAiD;AACjD,SAAS,GAAG,CAAC,IAAY,EAAE,IAAc;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,EAAE;QACpE,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;KAC5B,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjF,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAG,GAAG,WAAW;IACzD,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;QACpB,KAAK;QACL,aAAa;QACb,WAAW;QACX,IAAI;QACJ,MAAM,CAAC,GAAG,CAAC;QACX,YAAY,GAAG,EAAE;QACjB,aAAa;KACd,CAAC,CAAC;IACH,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,SAAS;QAC7B,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,IAAI;aACf,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3B,0EAA0E;QAC1E,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,SAAS;QAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E;AAC7E,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B;;oDAEoD;AACpD,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAenC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,IAAY,EACZ,KAAa,EACb,SAAgB,EAChB,GAAG,GAAG,wBAAwB,EAC9B,GAAG,GAAG,WAAW;AACjB,4EAA4E;AAC5E,yBAAyB;AACzB,QAA4C,IAAI,GAAG,EAAE;IAErD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,0EAA0E;IAC1E,6EAA6E;IAC7E,0EAA0E;IAC1E,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9E,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,GAAG,GAAG,UAAU,KAAK,IAAI,IAAI,qEAAqE,IAAI,EAAE,EACxG,EAAE,OAAO,EAAE,CACZ,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QACvD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0C,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE3H,uEAAuE;IACvE,8EAA8E;IAC9E,yCAAyC;IACzC,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YACtB,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxD,YAAY,CAAC,GAAG,GAAG,UAAU,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,MAAM,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC;gBAC7F,YAAY,CAAC,GAAG,GAAG,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,CAAC,MAAM,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC;aAC7F,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,cAAc,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvC,OAAO;gBACL,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC3B,QAAQ,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC3C,QAAQ;aACe,CAAC;QAC5B,CAAC,CAAC,CACH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,kCAAkC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qDAAqD;AACrD,KAAK,UAAU,YAAY,CACzB,GAAW,EACX,OAA+B,EAC/B,SAAgB;IAEhB,MAAM,GAAG,GAA2C,EAAE,CAAC;IACvD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,GAAG,sBAAsB,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM;QACnB,IAAI,KAAoB,CAAC;QACzB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkB,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QACvD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK;gBAAE,SAAS;YACrC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM;IAChC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iFAAiF;AACjF,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAqB,EAAE,GAAG,GAAG,WAAW;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,KAAK;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;SAC/C,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,WAAW,EAAE,CAAC,CAAC,SAAS;KACzB,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAW3B;IACC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,wEAAwE;YACxE,6EAA6E;YAC7E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SAClE,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,QAAQ;YACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,MAAkB,EAClB,SAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE;QAC3G,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,UAAU,EAAE;YACrC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;SAC3B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAC7B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;AAChD,CAAC"}
package/dist/ask/ask.js CHANGED
@@ -1094,7 +1094,7 @@ export function ask(dir, query, opts = {}) {
1094
1094
  result.saved = baselineFor(result.hits, corpus.graph);
1095
1095
  // What the team decided about the code this pack just inlined. Read from the
1096
1096
  // local cache only — `ask` is on the agent's hot path and must never wait on
1097
- // the network; `graft brain pull` and `init` are what refresh it.
1097
+ // the network; `graft trail pull` and `init` are what refresh it.
1098
1098
  const applied = attachBrainRules(root, result.hits, corpus.graph);
1099
1099
  if (applied.length)
1100
1100
  result.rules = applied;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * `graft claude-md pull`: write the CLAUDE.md changes accepted in Trail into
3
+ * this checkout's instruction file.
4
+ *
5
+ * Trail compares the repository's CLAUDE.md with what its history says and
6
+ * suggests edits and new sections; a person accepts some of them on the brain's
7
+ * CLAUDE.md page. This fetches the accepted ones, applies them to the local
8
+ * file, and tells Trail which it wrote so the page stops listing them.
9
+ *
10
+ * The file is edited line by line, never regenerated, so everything a change
11
+ * does not touch comes back byte for byte. An edit whose text is no longer in
12
+ * its section means the local file has moved on since Trail read it; that
13
+ * change is reported and left, never guessed at. Same rules as Trail's own
14
+ * ComposeClaudeMd, which is what the page's preview shows.
15
+ */
16
+ import { type BrainLink } from "./link.js";
17
+ /** One accepted change, as Trail sends it. */
18
+ export interface ClaudeMdChange {
19
+ id: string;
20
+ kind: "edit" | "add";
21
+ /** edit: the section it rewrites. add: the new section's heading. */
22
+ heading: string;
23
+ /** add: the section it goes after; "" = end of file. */
24
+ after_heading?: string;
25
+ /** edit: the text to replace; "" = append to the section. */
26
+ find?: string;
27
+ text: string;
28
+ reason?: string;
29
+ }
30
+ export interface ClaudeMdPull {
31
+ /** The file Trail read, e.g. "CLAUDE.md"; "" when the repo had none. */
32
+ path: string;
33
+ head_sha: string;
34
+ changes: ClaudeMdChange[];
35
+ }
36
+ export interface ApplyResult {
37
+ text: string;
38
+ /** Written by this pull. */
39
+ written: ClaudeMdChange[];
40
+ /** Already in the file (committed by someone else): nothing to write. */
41
+ present: ClaudeMdChange[];
42
+ /** Could not be placed; the file was left as it is for these. */
43
+ skipped: Array<{
44
+ change: ClaudeMdChange;
45
+ why: string;
46
+ }>;
47
+ }
48
+ /** GET /api/public/brains/:id/claude-md — the accepted changes. */
49
+ export declare function fetchAcceptedChanges(link: BrainLink, fetchImpl?: typeof fetch): Promise<ClaudeMdPull | {
50
+ error: string;
51
+ }>;
52
+ /** POST /api/public/brains/:id/claude-md/applied — what this pull wrote. */
53
+ export declare function markApplied(link: BrainLink, ids: string[], fetchImpl?: typeof fetch): Promise<boolean>;
54
+ /**
55
+ * Apply accepted changes to the file's text. Pure: reads nothing, writes
56
+ * nothing, so the command and the tests share it.
57
+ */
58
+ export declare function applyChanges(original: string, changes: ClaudeMdChange[]): ApplyResult;
59
+ //# sourceMappingURL=claude-md.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/brain/claude-md.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEvD,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,yEAAyE;IACzE,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,iEAAiE;IACjE,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAED,mEAAmE;AACnE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB3C;AAED,4EAA4E;AAC5E,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBnH;AAgDD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,WAAW,CAgErF"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * `graft claude-md pull`: write the CLAUDE.md changes accepted in Trail into
3
+ * this checkout's instruction file.
4
+ *
5
+ * Trail compares the repository's CLAUDE.md with what its history says and
6
+ * suggests edits and new sections; a person accepts some of them on the brain's
7
+ * CLAUDE.md page. This fetches the accepted ones, applies them to the local
8
+ * file, and tells Trail which it wrote so the page stops listing them.
9
+ *
10
+ * The file is edited line by line, never regenerated, so everything a change
11
+ * does not touch comes back byte for byte. An edit whose text is no longer in
12
+ * its section means the local file has moved on since Trail read it; that
13
+ * change is reported and left, never guessed at. Same rules as Trail's own
14
+ * ComposeClaudeMd, which is what the page's preview shows.
15
+ */
16
+ import { baseUrlFor } from "./link.js";
17
+ /** GET /api/public/brains/:id/claude-md — the accepted changes. */
18
+ export async function fetchAcceptedChanges(link, fetchImpl = fetch) {
19
+ const url = `${baseUrlFor(link)}/api/public/brains/${encodeURIComponent(link.brainId)}/claude-md`;
20
+ try {
21
+ const res = await fetchImpl(url, {
22
+ headers: { authorization: `Bearer ${link.token}`, accept: "application/json" },
23
+ signal: AbortSignal.timeout(15_000),
24
+ });
25
+ const body = await res.text();
26
+ if (res.status === 404 || res.status === 503) {
27
+ return { error: "this brain has no CLAUDE.md suggestions yet — its Trail may be older than the feature" };
28
+ }
29
+ if (!res.ok)
30
+ return { error: `Trail refused the pull: ${res.status} ${body.slice(0, 200)}` };
31
+ const parsed = JSON.parse(body);
32
+ return { path: parsed.path ?? "", head_sha: parsed.head_sha ?? "", changes: parsed.changes ?? [] };
33
+ }
34
+ catch (e) {
35
+ return { error: `could not reach Trail: ${e instanceof Error ? e.message : e}` };
36
+ }
37
+ }
38
+ /** POST /api/public/brains/:id/claude-md/applied — what this pull wrote. */
39
+ export async function markApplied(link, ids, fetchImpl = fetch) {
40
+ if (ids.length === 0)
41
+ return true;
42
+ const url = `${baseUrlFor(link)}/api/public/brains/${encodeURIComponent(link.brainId)}/claude-md/applied`;
43
+ try {
44
+ // Trail takes at most 100 per request.
45
+ for (let i = 0; i < ids.length; i += 100) {
46
+ const res = await fetchImpl(url, {
47
+ method: "POST",
48
+ headers: {
49
+ authorization: `Bearer ${link.token}`,
50
+ "content-type": "application/json",
51
+ accept: "application/json",
52
+ },
53
+ body: JSON.stringify({ ids: ids.slice(i, i + 100) }),
54
+ signal: AbortSignal.timeout(15_000),
55
+ });
56
+ if (!res.ok)
57
+ return false;
58
+ }
59
+ return true;
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }
65
+ const HEADING = /^(#{1,6})\s+(.+?)\s*#*\s*$/;
66
+ /** Every ATX heading outside code fences, with the lines it owns. */
67
+ function sectionsOf(lines) {
68
+ const heads = [];
69
+ let fence = false;
70
+ lines.forEach((ln, i) => {
71
+ const t = ln.trim();
72
+ if (t.startsWith("```") || t.startsWith("~~~")) {
73
+ fence = !fence;
74
+ return;
75
+ }
76
+ if (fence)
77
+ return;
78
+ const m = HEADING.exec(ln);
79
+ if (m)
80
+ heads.push({ line: i, level: m[1].length, title: m[2].trim() });
81
+ });
82
+ return heads.map((h, i) => {
83
+ let end = lines.length;
84
+ for (let j = i + 1; j < heads.length; j++) {
85
+ if (heads[j].level <= h.level) {
86
+ end = heads[j].line;
87
+ break;
88
+ }
89
+ }
90
+ return { title: h.title, level: h.level, head: h.line, end };
91
+ });
92
+ }
93
+ const norm = (s) => s.trim().toLowerCase();
94
+ /** Trim the blank lines a section ends with, so appended text sits under its content. */
95
+ function lastContentLine(lines, s) {
96
+ let i = s.end;
97
+ while (i > s.head + 1 && lines[i - 1].trim() === "")
98
+ i--;
99
+ return i;
100
+ }
101
+ /**
102
+ * Apply accepted changes to the file's text. Pure: reads nothing, writes
103
+ * nothing, so the command and the tests share it.
104
+ */
105
+ export function applyChanges(original, changes) {
106
+ const crlf = original.includes("\r\n");
107
+ let lines = original.replace(/\r\n/g, "\n").split("\n");
108
+ const out = { text: original, written: [], present: [], skipped: [] };
109
+ // Edits first, against headings that exist; then additions, which may go
110
+ // after a section an edit just touched.
111
+ const ordered = [...changes.filter((c) => c.kind === "edit"), ...changes.filter((c) => c.kind === "add")];
112
+ for (const c of ordered) {
113
+ const sections = sectionsOf(lines);
114
+ if (c.kind === "edit") {
115
+ const s = sections.find((x) => norm(x.title) === norm(c.heading));
116
+ if (!s) {
117
+ out.skipped.push({ change: c, why: `no “${c.heading}” section in the file` });
118
+ continue;
119
+ }
120
+ const body = lines.slice(s.head + 1, s.end).join("\n");
121
+ const text = c.text.replace(/\r\n/g, "\n");
122
+ const find = (c.find ?? "").replace(/\r\n/g, "\n");
123
+ if (text.trim() && body.includes(text.trim())) {
124
+ out.present.push(c);
125
+ continue;
126
+ }
127
+ if (!find) {
128
+ const at = lastContentLine(lines, s);
129
+ lines = [...lines.slice(0, at), ...text.trimEnd().split("\n"), ...lines.slice(at)];
130
+ out.written.push(c);
131
+ continue;
132
+ }
133
+ const idx = body.indexOf(find);
134
+ if (idx < 0) {
135
+ out.skipped.push({ change: c, why: `the text it rewrites is no longer in “${c.heading}”` });
136
+ continue;
137
+ }
138
+ const next = body.slice(0, idx) + text + body.slice(idx + find.length);
139
+ lines = [...lines.slice(0, s.head + 1), ...next.split("\n"), ...lines.slice(s.end)];
140
+ out.written.push(c);
141
+ continue;
142
+ }
143
+ // add
144
+ if (sections.some((x) => norm(x.title) === norm(c.heading))) {
145
+ out.present.push(c);
146
+ continue;
147
+ }
148
+ const block = [`## ${c.heading.trim()}`, "", ...c.text.replace(/\r\n/g, "\n").trim().split("\n")];
149
+ const after = c.after_heading ? sections.find((x) => norm(x.title) === norm(c.after_heading)) : undefined;
150
+ if (after) {
151
+ const at = lastContentLine(lines, after);
152
+ // A blank line either side, whatever the file had there.
153
+ const tail = lines.slice(at);
154
+ lines = [...lines.slice(0, at), "", ...block, ...(tail.length > 0 && tail[0].trim() !== "" ? [""] : []), ...tail];
155
+ }
156
+ else {
157
+ while (lines.length > 0 && lines[lines.length - 1].trim() === "")
158
+ lines.pop();
159
+ lines = lines.length > 0 ? [...lines, "", ...block] : block;
160
+ lines.push("");
161
+ }
162
+ out.written.push(c);
163
+ }
164
+ let text = lines.join("\n");
165
+ if (out.written.length > 0 && !text.endsWith("\n"))
166
+ text += "\n";
167
+ out.text = out.written.length > 0 ? (crlf ? text.replace(/\n/g, "\r\n") : text) : original;
168
+ return out;
169
+ }
170
+ //# sourceMappingURL=claude-md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/brain/claude-md.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  import { type BrainLink, type BrainRule } from './link.js';
6
6
  import { type BrainWrite } from './wire.js';
7
7
  /**
8
- * Parse the `--brain` value.
8
+ * Parse the `--trail` value.
9
9
  *
10
10
  * The onboarding page hands over one string so there is one thing to copy. Two
11
11
  * accepted shapes:
@@ -33,7 +33,7 @@ export interface ConnectResult {
33
33
  *
34
34
  * The link is stored even when the pull fails. That is deliberate: a token
35
35
  * typed correctly against a brain that is momentarily unreachable should not
36
- * have to be pasted again — `graft brain pull` retries, and `ask` degrades to
36
+ * have to be pasted again — `graft trail pull` retries, and `ask` degrades to
37
37
  * the code-only answer meanwhile.
38
38
  */
39
39
  export declare function connectBrain(repo: string, link: BrainLink, opts?: {
@@ -50,7 +50,7 @@ export declare function pullBrain(repo: string, opts: {
50
50
  ids?: string[];
51
51
  fetchImpl?: typeof fetch;
52
52
  }): Promise<ConnectResult | null>;
53
- /** The linked brain and its cached rule set, for `graft brain status`. */
53
+ /** The linked brain and its cached rule set, for `graft trail status`. */
54
54
  export declare function brainStatus(repo: string): {
55
55
  link: BrainLink | null;
56
56
  rules: BrainRule[];
@@ -6,7 +6,7 @@ import { readLink, writeLink, fetchRules, writeRulesCache, readRulesCache, } fro
6
6
  import { writeBrainSections } from './wire.js';
7
7
  import { basename } from 'node:path';
8
8
  /**
9
- * Parse the `--brain` value.
9
+ * Parse the `--trail` value.
10
10
  *
11
11
  * The onboarding page hands over one string so there is one thing to copy. Two
12
12
  * accepted shapes:
@@ -21,19 +21,19 @@ import { basename } from 'node:path';
21
21
  export function parseBrainArg(value) {
22
22
  const raw = value.trim();
23
23
  if (!raw)
24
- return { error: 'empty --brain value' };
24
+ return { error: 'empty --trail value' };
25
25
  const cut = raw.indexOf(':');
26
26
  if (cut > 0) {
27
27
  const brainId = raw.slice(0, cut).trim();
28
28
  const token = raw.slice(cut + 1).trim();
29
29
  if (!brainId || !token)
30
- return { error: 'expected --brain <brainId>:<token>' };
30
+ return { error: 'expected --trail <brainId>:<token>' };
31
31
  return { brainId, token };
32
32
  }
33
33
  const envToken = process.env.GRAFT_BRAIN_TOKEN;
34
34
  if (!envToken) {
35
35
  return {
36
- error: 'expected --brain <brainId>:<token>, or a bare brain id with the token in GRAFT_BRAIN_TOKEN',
36
+ error: 'expected --trail <brainId>:<token>, or a bare brain id with the token in GRAFT_BRAIN_TOKEN',
37
37
  };
38
38
  }
39
39
  return { brainId: raw, token: envToken };
@@ -43,7 +43,7 @@ export function parseBrainArg(value) {
43
43
  *
44
44
  * The link is stored even when the pull fails. That is deliberate: a token
45
45
  * typed correctly against a brain that is momentarily unreachable should not
46
- * have to be pasted again — `graft brain pull` retries, and `ask` degrades to
46
+ * have to be pasted again — `graft trail pull` retries, and `ask` degrades to
47
47
  * the code-only answer meanwhile.
48
48
  */
49
49
  export async function connectBrain(repo, link, opts = { home: '' }) {
@@ -54,7 +54,7 @@ export async function connectBrain(repo, link, opts = { home: '' }) {
54
54
  linked: true,
55
55
  ruleCount: 0,
56
56
  writes: [],
57
- warning: 'could not reach the brain to pull its rules — the link is saved; run `graft brain pull` to retry',
57
+ warning: 'could not reach the brain to pull its rules — the link is saved; run `graft trail pull` to retry',
58
58
  };
59
59
  }
60
60
  writeRulesCache(repo, { brainId: link.brainId, fetchedAt: Date.now(), rules });
@@ -71,7 +71,7 @@ export async function pullBrain(repo, opts) {
71
71
  return null;
72
72
  return connectBrain(repo, link, opts);
73
73
  }
74
- /** The linked brain and its cached rule set, for `graft brain status`. */
74
+ /** The linked brain and its cached rule set, for `graft trail status`. */
75
75
  export function brainStatus(repo) {
76
76
  const link = readLink(repo);
77
77
  const cache = readRulesCache(repo);
@@ -54,7 +54,7 @@ export declare function readLink(dir: string): BrainLink | null;
54
54
  * token — which is exactly why this is also where it gets ignored. The comment
55
55
  * on {@link BrainLink} has claimed `.graft/` was "git-ignored" since the day it
56
56
  * was written, and nothing ever made it true: `ensureGitignored` only ever ran
57
- * for the graph cache. Every repository anyone ran `graft brain connect` in was
57
+ * for the graph cache. Every repository anyone ran `graft trail connect` in was
58
58
  * therefore one `git add -A` away from publishing a credential. */
59
59
  export declare function writeLink(dir: string, link: BrainLink): void;
60
60
  /** Forget the link for repo `dir`. Leaves the cached rules for `uninstall` to remove. */
@@ -54,7 +54,7 @@ export function readLink(dir) {
54
54
  * token — which is exactly why this is also where it gets ignored. The comment
55
55
  * on {@link BrainLink} has claimed `.graft/` was "git-ignored" since the day it
56
56
  * was written, and nothing ever made it true: `ensureGitignored` only ever ran
57
- * for the graph cache. Every repository anyone ran `graft brain connect` in was
57
+ * for the graph cache. Every repository anyone ran `graft trail connect` in was
58
58
  * therefore one `git add -A` away from publishing a credential. */
59
59
  export function writeLink(dir, link) {
60
60
  patchBuildConfig(dir, { brain: link });
@@ -1,4 +1,4 @@
1
- import { type RepoDigest } from "../app/history.js";
1
+ import { type HistoryThread, type RepoDigest } from "../app/history.js";
2
2
  import type { GraphV1 } from "../graph/types.js";
3
3
  import { type BrainLink } from "./link.js";
4
4
  /** What a local ingest read, for the caller to print. */
@@ -37,6 +37,8 @@ export interface ExpectedRepo {
37
37
  slug: string;
38
38
  status: string;
39
39
  brainName: string;
40
+ /** The brain accepts an early upload (see pushEarlyDigest). */
41
+ earlyUpload: boolean;
40
42
  }
41
43
  /**
42
44
  * The repository this brain expects, or null when it expects none.
@@ -53,10 +55,36 @@ export interface ExpectedRepo {
53
55
  export declare function fetchExpectedRepo(link: BrainLink, fetchImpl?: typeof fetch): Promise<ExpectedRepo | null>;
54
56
  /** Whether two repo slugs name the same repository. GitHub is case-insensitive. */
55
57
  export declare function sameRepo(a: string, b: string): boolean;
58
+ /** How many of the newest pull requests and commits the early upload carries —
59
+ * what Trail's quick CLAUDE.md pass reads, and no more. */
60
+ export declare const EARLY_THREADS = 30;
61
+ export declare const EARLY_COMMITS = 80;
62
+ /**
63
+ * The early upload: the instruction files, the newest pull requests and the
64
+ * newest commits, read before the rest of the history.
65
+ *
66
+ * Reading the history is most of a push's wait — up to 200 pull requests at two
67
+ * GitHub calls each — and Trail's first CLAUDE.md suggestions need none of it
68
+ * beyond the newest few. Sent first, they start while the full read is still
69
+ * going here, and the full upload that follows mines as before.
70
+ *
71
+ * Returns the threads it read, so the full read reuses them instead of asking
72
+ * GitHub twice. Null when there is nothing worth sending early.
73
+ */
74
+ export declare function buildEarlyDigest(root: string, opts?: {
75
+ fetchImpl?: typeof fetch;
76
+ }): Promise<{
77
+ digest: RepoDigest;
78
+ threads: HistoryThread[];
79
+ } | null>;
80
+ /** Send the early upload. Best-effort: false on any failure, and the full
81
+ * upload still does everything. */
82
+ export declare function pushEarlyDigest(link: BrainLink, digest: RepoDigest, fetchImpl?: typeof fetch): Promise<boolean>;
56
83
  /** Build the digest for the checkout at `root`. Reads nothing but text. */
57
84
  export declare function buildLocalDigest(root: string, graph: GraphV1 | null, opts?: {
58
85
  autoApprove?: boolean;
59
86
  fetchImpl?: typeof fetch;
87
+ knownThreads?: HistoryThread[];
60
88
  }): Promise<{
61
89
  digest: RepoDigest;
62
90
  warning?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/brain/push.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAY3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEvD,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMpF;AAQD;;;;;;;GAOG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAM3C;AAgBD,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAatH;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,2EAA2E;AAC3E,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GAAG,IAAI,EACrB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAC7D,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoDvE;AAED,6DAA6D;AAC7D,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,UAAU,EAClB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhD"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/brain/push.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAY3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEvD,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMpF;AAQD;;;;;;;GAOG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAM3C;AAgBD,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsBtH;AAED,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;2DAC2D;AAC3D,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GACtC,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA6BlE;AAED;mCACmC;AACnC,wBAAsB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB5H;AAED,2EAA2E;AAC3E,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GAAG,IAAI,EACrB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,aAAa,EAAE,CAAA;CAAO,GAC7F,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAqDvE;AAED,6DAA6D;AAC7D,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,UAAU,EAClB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhD"}