@nanonets/graft 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +9 -4
  2. package/dist/app/history.d.ts +36 -1
  3. package/dist/app/history.d.ts.map +1 -1
  4. package/dist/app/history.js +75 -22
  5. package/dist/app/history.js.map +1 -1
  6. package/dist/app/sources.d.ts +13 -0
  7. package/dist/app/sources.d.ts.map +1 -1
  8. package/dist/app/sources.js +129 -1
  9. package/dist/app/sources.js.map +1 -1
  10. package/dist/ask/ask.js +1 -1
  11. package/dist/brain/claude-md.d.ts +61 -0
  12. package/dist/brain/claude-md.d.ts.map +1 -0
  13. package/dist/brain/claude-md.js +171 -0
  14. package/dist/brain/claude-md.js.map +1 -0
  15. package/dist/brain/connect.d.ts +3 -3
  16. package/dist/brain/connect.js +7 -7
  17. package/dist/brain/context-files.d.ts +79 -0
  18. package/dist/brain/context-files.d.ts.map +1 -0
  19. package/dist/brain/context-files.js +245 -0
  20. package/dist/brain/context-files.js.map +1 -0
  21. package/dist/brain/link.d.ts +18 -1
  22. package/dist/brain/link.d.ts.map +1 -1
  23. package/dist/brain/link.js +22 -1
  24. package/dist/brain/link.js.map +1 -1
  25. package/dist/brain/pull.d.ts +17 -0
  26. package/dist/brain/pull.d.ts.map +1 -0
  27. package/dist/brain/pull.js +172 -0
  28. package/dist/brain/pull.js.map +1 -0
  29. package/dist/brain/push.d.ts +86 -3
  30. package/dist/brain/push.d.ts.map +1 -1
  31. package/dist/brain/push.js +149 -36
  32. package/dist/brain/push.js.map +1 -1
  33. package/dist/brain/signup.d.ts +46 -2
  34. package/dist/brain/signup.d.ts.map +1 -1
  35. package/dist/brain/signup.js +103 -13
  36. package/dist/brain/signup.js.map +1 -1
  37. package/dist/brain/upload.d.ts +61 -0
  38. package/dist/brain/upload.d.ts.map +1 -0
  39. package/dist/brain/upload.js +210 -0
  40. package/dist/brain/upload.js.map +1 -0
  41. package/dist/brain/watch.d.ts +77 -4
  42. package/dist/brain/watch.d.ts.map +1 -1
  43. package/dist/brain/watch.js +263 -39
  44. package/dist/brain/watch.js.map +1 -1
  45. package/dist/claude/build-progress.d.ts +29 -0
  46. package/dist/claude/build-progress.d.ts.map +1 -0
  47. package/dist/claude/build-progress.js +76 -0
  48. package/dist/claude/build-progress.js.map +1 -0
  49. package/dist/claude/init.d.ts.map +1 -1
  50. package/dist/claude/init.js +3 -1
  51. package/dist/claude/init.js.map +1 -1
  52. package/dist/cli-picker.d.ts +17 -2
  53. package/dist/cli-picker.d.ts.map +1 -1
  54. package/dist/cli-picker.js +103 -22
  55. package/dist/cli-picker.js.map +1 -1
  56. package/dist/cli.js +462 -123
  57. package/dist/cli.js.map +1 -1
  58. package/dist/legacy-args.d.ts +12 -0
  59. package/dist/legacy-args.d.ts.map +1 -0
  60. package/dist/legacy-args.js +31 -0
  61. package/dist/legacy-args.js.map +1 -0
  62. package/dist/telemetry/contract.d.ts +17 -4
  63. package/dist/telemetry/contract.d.ts.map +1 -1
  64. package/dist/telemetry/contract.js +25 -7
  65. package/dist/telemetry/contract.js.map +1 -1
  66. package/dist/upkeep.d.ts +1 -1
  67. package/dist/upkeep.js +1 -1
  68. package/dist/util/spinner.d.ts +15 -0
  69. package/dist/util/spinner.d.ts.map +1 -0
  70. package/dist/util/spinner.js +52 -0
  71. package/dist/util/spinner.js.map +1 -0
  72. package/dist/util/state.d.ts +8 -0
  73. package/dist/util/state.d.ts.map +1 -1
  74. package/dist/util/state.js.map +1 -1
  75. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/brain/link.ts"],"names":[],"mappings":"AAsBA,uEAAuE;AACvE,eAAO,MAAM,YAAY,QAAqB,CAAC;AAE/C;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAgB,CAAC;AAEhD,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB;;;iEAG6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gCAAgC;AAChC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAStD;AAED;;;;;;;mEAOmE;AACnE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAG5D;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAE7D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,SAAa,GAAG,OAAO,CAIhF;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,IAAI,CAIpE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAElD;AAeD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CA4B7B"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/brain/link.ts"],"names":[],"mappings":"AAsBA,uEAAuE;AACvE,eAAO,MAAM,YAAY,QAAqB,CAAC;AAE/C;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAgB,CAAC;AAEhD,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB;;;iEAG6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gCAAgC;AAChC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAStD;AAED;;;;;;;mEAOmE;AACnE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAG5D;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAE7D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,SAAa,GAAG,OAAO,CAIhF;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,IAAI,CAIpE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAElD;AAED,wEAAwE;AACxE,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;yDACyD;AACzD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,aAAa,GAAG,IAAI,CAIrH;AAED;4CAC4C;AAC5C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAG5E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAeD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CA4B7B"}
@@ -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 });
@@ -101,6 +101,27 @@ export function markRulesChecked(dir, now = Date.now()) {
101
101
  export function baseUrlFor(link) {
102
102
  return (process.env.GRAFT_BRAIN_URL || link.baseUrl || DEFAULT_BRAIN_BASE_URL).replace(/\/+$/, '');
103
103
  }
104
+ /** The API host before there is a link to read one from: signing up. */
105
+ export function apiBaseUrl() {
106
+ return (process.env.GRAFT_BRAIN_URL || DEFAULT_BRAIN_BASE_URL).replace(/\/+$/, '');
107
+ }
108
+ /** The sign-up waiting on repo `dir`, or null when there is none or it is too
109
+ * old to claim, or it was for a different repository. */
110
+ export function readPendingSignup(dir, repo, maxAgeMs, now = Date.now()) {
111
+ const p = readBuildConfig(dir)?.pendingSignup;
112
+ if (!p?.state || p.repo !== repo || !(now - p.createdAt < maxAgeMs))
113
+ return null;
114
+ return p;
115
+ }
116
+ /** Save the sign-up an agent-run push just started. Git-ignored like the link,
117
+ * because the state claims a read token. */
118
+ export function writePendingSignup(dir, pending) {
119
+ patchBuildConfig(dir, { pendingSignup: pending });
120
+ ensureGitignored(dir, join(dir, BUILD_CONFIG_DIR), LINK_NOTE);
121
+ }
122
+ export function clearPendingSignup(dir) {
123
+ patchBuildConfig(dir, { pendingSignup: undefined });
124
+ }
104
125
  /** Timeout for one rules fetch. Short: `ask` must never block on this. */
105
126
  const FETCH_TIMEOUT_MS = 5000;
106
127
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/brain/link.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/brain/link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type ConnectResult } from "./connect.js";
2
+ import type { BrainLink } from "./link.js";
3
+ export interface PullOptions {
4
+ home: string;
5
+ /** The agents this repo is wired for; empty means no choice was recorded. */
6
+ wired: string[];
7
+ dryRun?: boolean;
8
+ fetchImpl?: typeof fetch;
9
+ write?: (line: string) => void;
10
+ }
11
+ /** The rules line: how many, and which files they are in. */
12
+ export declare function rulesLine(repo: string, res: ConnectResult): string | null;
13
+ /**
14
+ * Run the pull. Returns the exit code; every line goes through `write`.
15
+ */
16
+ export declare function runTrailPull(repo: string, link: BrainLink, opts: PullOptions): Promise<number>;
17
+ //# sourceMappingURL=pull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/brain/pull.ts"],"names":[],"mappings":"AAYA,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAahE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAK3C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAQD,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CASzE;AAgCD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAiHpG"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * `graft trail pull`: one command for both things a trail hands this repo.
3
+ *
4
+ * First the rules, refreshed into graft's own blocks in the agent files (what
5
+ * `graft trail pull` always did). Then every change accepted in Trail, for every
6
+ * context file the picked agents read — the root CLAUDE.md (what `graft
7
+ * claude-md pull` did, and still does, as an alias of this), and then AGENTS.md,
8
+ * folder CLAUDE.md files, Cursor rules and skills when Trail serves them.
9
+ *
10
+ * Files for agents that were not picked are neither listed nor written.
11
+ */
12
+ import { isAbsolute, relative } from "node:path";
13
+ import { connectBrain } from "./connect.js";
14
+ import { fetchAcceptedChanges, markApplied } from "./claude-md.js";
15
+ import { changeSummary, fetchContextFiles, kindForPath, markContextFilesApplied, planContextFile, readByWired, writePlannedFile, } from "./context-files.js";
16
+ import { reviewUrl } from "./signup.js";
17
+ import { CONTEXT_FILE_KINDS, countBucket } from "../telemetry/contract.js";
18
+ import { track } from "../telemetry/track.js";
19
+ /** Repo-relative, forward slashes, for printing. */
20
+ function show(repo, path) {
21
+ const rel = isAbsolute(path) ? relative(repo, path) : path;
22
+ return rel.split("\\").join("/");
23
+ }
24
+ /** The rules line: how many, and which files they are in. */
25
+ export function rulesLine(repo, res) {
26
+ if (res.warning)
27
+ return `⚠ ${res.warning}`;
28
+ if (res.ruleCount === 0)
29
+ return "· the trail has no rules yet — run graft trail push to read this repo into it";
30
+ const n = res.ruleCount.toLocaleString("en-US");
31
+ const where = res.writes.map((w) => show(repo, w.path)).join(", ");
32
+ const rules = `${n} rule${res.ruleCount === 1 ? "" : "s"}`;
33
+ if (!where)
34
+ return `✓ ${rules} pulled · no instruction file to write them into — graft ask still carries them`;
35
+ if (res.writes.every((w) => w.action === "unchanged"))
36
+ return `✓ rules already current · ${n} in ${where}`;
37
+ return `✓ ${rules} refreshed in ${where}`;
38
+ }
39
+ /**
40
+ * The `trail_pulled` event for one pull. Only the outcome, which kinds of file
41
+ * were written, and bucketed counts leave the machine — see TELEMETRY.md.
42
+ */
43
+ function trackPull(repo, home, outcome, planned = []) {
44
+ const wrote = planned.filter((p) => p.plan.status && p.plan.written.length > 0);
45
+ const kinds = [...new Set(wrote.map((p) => p.kind))]
46
+ .filter((k) => CONTEXT_FILE_KINDS.includes(k))
47
+ .sort()
48
+ .join(",");
49
+ track("trail_pulled", {
50
+ outcome,
51
+ kinds,
52
+ files_bucket: countBucket(wrote.length),
53
+ changes_bucket: countBucket(wrote.reduce((n, p) => n + p.plan.written.length, 0)),
54
+ skipped_bucket: countBucket(planned.reduce((n, p) => n + p.plan.skipped.length, 0)),
55
+ }, { repo, home });
56
+ }
57
+ /**
58
+ * Run the pull. Returns the exit code; every line goes through `write`.
59
+ */
60
+ export async function runTrailPull(repo, link, opts) {
61
+ const write = opts.write ?? ((l) => console.error(l));
62
+ const fetchImpl = opts.fetchImpl ?? fetch;
63
+ let code = 0;
64
+ // 1. The rules. Skipped on a dry run, which writes nothing at all.
65
+ if (!opts.dryRun) {
66
+ const res = await connectBrain(repo, link, {
67
+ home: opts.home,
68
+ ids: opts.wired.length > 0 ? opts.wired : undefined,
69
+ fetchImpl,
70
+ });
71
+ const line = rulesLine(repo, res);
72
+ if (line)
73
+ write(line);
74
+ if (res.warning)
75
+ code = 1;
76
+ }
77
+ // 2. Accepted changes: the root CLAUDE.md, then every other context file.
78
+ const planned = [];
79
+ let accepted = 0;
80
+ const md = await fetchAcceptedChanges(link, fetchImpl);
81
+ if ("error" in md) {
82
+ if (!md.unsupported) {
83
+ write(`✗ ${md.error}`);
84
+ code = 1;
85
+ }
86
+ }
87
+ else if (md.changes.length > 0) {
88
+ const file = { kind: kindForPath(md.path || "CLAUDE.md"), path: md.path || "CLAUDE.md", changes: md.changes };
89
+ if (readByWired(file.kind, opts.wired)) {
90
+ accepted += file.changes.length;
91
+ planned.push({ plan: planContextFile(repo, file), source: "claude-md", kind: file.kind });
92
+ }
93
+ }
94
+ const ctx = await fetchContextFiles(link, fetchImpl);
95
+ if ("error" in ctx) {
96
+ write(`✗ ${ctx.error}`);
97
+ code = 1;
98
+ }
99
+ else if (!("unsupported" in ctx)) {
100
+ for (const file of ctx.files) {
101
+ if (file.changes.length === 0 || !readByWired(file.kind, opts.wired))
102
+ continue;
103
+ accepted += file.changes.length;
104
+ planned.push({ plan: planContextFile(repo, file), source: "context-files", kind: file.kind });
105
+ }
106
+ }
107
+ if (accepted === 0) {
108
+ if (code === 0) {
109
+ write("· nothing accepted in Trail yet — review:");
110
+ write(` ${reviewUrl(link.brainId)}`);
111
+ }
112
+ trackPull(repo, opts.home, code === 0 ? "nothing_accepted" : "error");
113
+ return code;
114
+ }
115
+ const writing = planned.filter((p) => p.plan.status);
116
+ const changes = writing.reduce((n, p) => n + p.plan.written.length, 0);
117
+ if (writing.length > 0) {
118
+ write(`✓ ${opts.dryRun ? "would write" : "wrote"} ${changes} accepted change${changes === 1 ? "" : "s"}`);
119
+ const width = Math.max(30, ...writing.map((p) => p.plan.path.length)) + 2;
120
+ for (const { plan } of writing) {
121
+ const summary = changeSummary(plan.written);
122
+ write(` ${plan.status} ${summary ? plan.path.padEnd(width) : plan.path}${summary}`.trimEnd());
123
+ }
124
+ }
125
+ else if (planned.some((p) => p.plan.present.length > 0)) {
126
+ write("✓ every accepted change is already in these files");
127
+ }
128
+ for (const { plan } of planned) {
129
+ for (const s of plan.skipped) {
130
+ const what = s.change.kind === "edit" || s.change.kind === "add" ? `${changeSummary([s.change])} in ${plan.path}` : plan.path;
131
+ write(`⚠ skipped ${what} — ${s.why}; edit it in Trail, then pull again`);
132
+ code = 1;
133
+ }
134
+ }
135
+ if (opts.dryRun) {
136
+ write("· dry run — nothing written, and Trail was not told");
137
+ trackPull(repo, opts.home, "dry_run", planned);
138
+ return code;
139
+ }
140
+ for (const { plan } of writing) {
141
+ try {
142
+ writePlannedFile(repo, plan);
143
+ }
144
+ catch (e) {
145
+ write(`✗ could not write ${plan.path}: ${e instanceof Error ? e.message : e}`);
146
+ // Nothing from a file that was not written is reported as applied.
147
+ plan.written = [];
148
+ plan.present = [];
149
+ code = 1;
150
+ }
151
+ }
152
+ // Written now or already there: either way Trail should stop listing it.
153
+ const done = (source) => planned.filter((p) => p.source === source).flatMap((p) => [...p.plan.written, ...p.plan.present].map((c) => c.id));
154
+ const told = (await markApplied(link, done("claude-md"), fetchImpl)) && (await markContextFilesApplied(link, done("context-files"), fetchImpl));
155
+ if (!told)
156
+ write("⚠ could not tell Trail which changes were written; it may still list them");
157
+ if (writing.length > 0)
158
+ write("· review with git diff, then commit");
159
+ const anyWritten = planned.some((p) => p.plan.status && p.plan.written.length > 0);
160
+ const anyPresent = planned.some((p) => p.plan.present.length > 0);
161
+ const anySkipped = planned.some((p) => p.plan.skipped.length > 0);
162
+ const outcome = anyWritten
163
+ ? "written"
164
+ : anyPresent
165
+ ? "already_present"
166
+ : anySkipped
167
+ ? "skipped"
168
+ : "error";
169
+ trackPull(repo, opts.home, outcome, planned);
170
+ return code;
171
+ }
172
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/brain/pull.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { type RepoDigest } from "../app/history.js";
1
+ import { type HistoryThread, type RepoDigest, type ThreadReadCache } from "../app/history.js";
2
2
  import type { GraphV1 } from "../graph/types.js";
3
3
  import { type BrainLink } from "./link.js";
4
+ import { type UploadCaps, type UploadOptions } from "./upload.js";
4
5
  /** What a local ingest read, for the caller to print. */
5
6
  export interface PushResult {
6
7
  jobId: string;
@@ -37,6 +38,16 @@ export interface ExpectedRepo {
37
38
  slug: string;
38
39
  status: string;
39
40
  brainName: string;
41
+ /** Rules the trail already holds; 0 before its first build. */
42
+ ruleCount: number;
43
+ /** The brain accepts an early upload (see pushEarlyDigest). */
44
+ earlyUpload: boolean;
45
+ /** POST /repo takes a gzipped body (`gzip_upload`). */
46
+ gzipUpload: boolean;
47
+ /** The chunked /repo/uploads routes exist (`chunked_upload`). */
48
+ chunkedUpload: boolean;
49
+ /** GET /events streams the build (`events`). */
50
+ events: boolean;
40
51
  }
41
52
  /**
42
53
  * The repository this brain expects, or null when it expects none.
@@ -47,24 +58,96 @@ export interface ExpectedRepo {
47
58
  * afterwards — the rules simply describe someone else's codebase — so the round
48
59
  * trip is worth it.
49
60
  *
61
+ * The same read says what the server can take: gzip, chunks, a live event
62
+ * stream. Every flag defaults to off, so an older Trail gets exactly the
63
+ * requests it always did.
64
+ *
50
65
  * Null on any failure, which keeps an older brain (or an unreachable one)
51
66
  * working exactly as it did before this check existed.
52
67
  */
53
68
  export declare function fetchExpectedRepo(link: BrainLink, fetchImpl?: typeof fetch): Promise<ExpectedRepo | null>;
69
+ /** The upload capabilities an expected-repo read advertised. */
70
+ export declare function uploadCaps(expected: ExpectedRepo | null): UploadCaps;
54
71
  /** Whether two repo slugs name the same repository. GitHub is case-insensitive. */
55
72
  export declare function sameRepo(a: string, b: string): boolean;
73
+ /** How many of the newest pull requests and commits the early upload carries —
74
+ * what Trail's quick CLAUDE.md pass reads, and no more. */
75
+ export declare const EARLY_THREADS = 30;
76
+ export declare const EARLY_COMMITS = 80;
77
+ /**
78
+ * What one push reads once and shares between its early and full digests: the
79
+ * repository's identity, the GitHub token, whether it is private, and every
80
+ * request already made to GitHub for its pull requests.
81
+ */
82
+ export interface PushContext {
83
+ owner: string;
84
+ name: string;
85
+ token: string | null;
86
+ fetchImpl: typeof fetch;
87
+ headSha: string;
88
+ branch: string;
89
+ /** Asked once, when first needed. */
90
+ isPrivate: () => Promise<boolean>;
91
+ threads: ThreadReadCache;
92
+ }
93
+ /** The shared context for a push from `root`, or null without a GitHub origin. */
94
+ export declare function pushContext(root: string, opts?: {
95
+ fetchImpl?: typeof fetch;
96
+ }): PushContext | null;
97
+ /**
98
+ * The early upload: the instruction files, the newest pull requests and the
99
+ * newest commits, read before the rest of the history.
100
+ *
101
+ * Reading the history is most of a push's wait — up to 200 pull requests at two
102
+ * GitHub calls each — and Trail's first CLAUDE.md suggestions need none of it
103
+ * beyond the newest few. Sent first, they start while the full read is still
104
+ * going here, and the full upload that follows mines as before.
105
+ *
106
+ * Only the newest commits are read here, not the thousand the full read takes,
107
+ * so nothing but these few requests stands between the push starting and Trail
108
+ * starting. The pull requests go through the shared cache, so the full read
109
+ * asks GitHub for none of them again — not even one still in flight.
110
+ *
111
+ * Null when there is nothing worth sending early.
112
+ */
113
+ export declare function buildEarlyDigest(root: string, opts?: {
114
+ fetchImpl?: typeof fetch;
115
+ context?: PushContext;
116
+ }): Promise<{
117
+ digest: RepoDigest;
118
+ threads: HistoryThread[];
119
+ } | null>;
120
+ /**
121
+ * The agents this repo is wired for — what `graft init` recorded plus what is on
122
+ * disk, the same set `graft trail pull` filters by — so Trail can show only the
123
+ * context files those agents read. Empty before the first init; Trail then
124
+ * shows every kind.
125
+ */
126
+ export declare function pickedAgents(root: string): string[];
127
+ /** Send the early upload. Best-effort: false on any failure, and the full
128
+ * upload still does everything. Gzipped when the server takes it. */
129
+ export declare function pushEarlyDigest(link: BrainLink, digest: RepoDigest, fetchImpl?: typeof fetch, opts?: {
130
+ gzip?: boolean;
131
+ }): Promise<boolean>;
56
132
  /** Build the digest for the checkout at `root`. Reads nothing but text. */
57
133
  export declare function buildLocalDigest(root: string, graph: GraphV1 | null, opts?: {
58
134
  autoApprove?: boolean;
59
135
  fetchImpl?: typeof fetch;
136
+ knownThreads?: HistoryThread[];
137
+ context?: PushContext;
60
138
  }): Promise<{
61
139
  digest: RepoDigest;
62
140
  warning?: string;
63
141
  } | {
64
142
  error: string;
65
143
  }>;
66
- /** Send a digest to the brain and return the job to poll. */
67
- export declare function pushDigest(link: BrainLink, digest: RepoDigest, fetchImpl?: typeof fetch): Promise<{
144
+ /**
145
+ * Send a digest to the brain and return the job to poll.
146
+ *
147
+ * Chunked and gzipped when the server advertises both, gzipped in one POST when
148
+ * it advertises only gzip, and today's plain POST otherwise.
149
+ */
150
+ export declare function pushDigest(link: BrainLink, digest: RepoDigest, fetchImpl?: typeof fetch, caps?: UploadCaps, opts?: Omit<UploadOptions, "fetchImpl">): Promise<{
68
151
  jobId: string;
69
152
  } | {
70
153
  error: 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":"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"}