mindweave 3.4.1 → 3.4.2

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 (72) hide show
  1. package/README.md +26 -3
  2. package/dist/cli/App.js +52 -8
  3. package/dist/cli/App.js.map +1 -1
  4. package/dist/cli/commands.js +1 -0
  5. package/dist/cli/commands.js.map +1 -1
  6. package/dist/cli/components/ToolLine.js +5 -3
  7. package/dist/cli/components/ToolLine.js.map +1 -1
  8. package/dist/cli/components/WorkGroup.js +82 -64
  9. package/dist/cli/components/WorkGroup.js.map +1 -1
  10. package/dist/cli/startupArgs.js +24 -4
  11. package/dist/cli/startupArgs.js.map +1 -1
  12. package/dist/cli/transcript.js +14 -0
  13. package/dist/cli/transcript.js.map +1 -1
  14. package/dist/cli/workLines.js +40 -0
  15. package/dist/cli/workLines.js.map +1 -1
  16. package/dist/core/turnRunner.js +35 -23
  17. package/dist/core/turnRunner.js.map +1 -1
  18. package/dist/dynamo/contextWindow.js +28 -36
  19. package/dist/dynamo/contextWindow.js.map +1 -1
  20. package/dist/dynamo/engine.js +51 -9
  21. package/dist/dynamo/engine.js.map +1 -1
  22. package/dist/dynamo/guard.js +1 -1
  23. package/dist/dynamo/guard.js.map +1 -1
  24. package/dist/dynamo/prompt.js +1 -1
  25. package/dist/headless/args.js +82 -0
  26. package/dist/headless/args.js.map +1 -0
  27. package/dist/headless/main.js +87 -0
  28. package/dist/headless/main.js.map +1 -0
  29. package/dist/headless/output.js +150 -0
  30. package/dist/headless/output.js.map +1 -0
  31. package/dist/headless/run.js +188 -0
  32. package/dist/headless/run.js.map +1 -0
  33. package/dist/index.js +8 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/main.js +5 -0
  36. package/dist/main.js.map +1 -1
  37. package/dist/memory/compaction.js +94 -2
  38. package/dist/memory/compaction.js.map +1 -1
  39. package/dist/memory/rewind.js +10 -6
  40. package/dist/memory/rewind.js.map +1 -1
  41. package/dist/memory/session.js +2 -2
  42. package/dist/memory/session.js.map +1 -1
  43. package/dist/memory/sessionMemory.js +270 -69
  44. package/dist/memory/sessionMemory.js.map +1 -1
  45. package/dist/memory/types.js.map +1 -1
  46. package/dist/project/context.js +34 -6
  47. package/dist/project/context.js.map +1 -1
  48. package/dist/tools/coauthor.js +154 -0
  49. package/dist/tools/coauthor.js.map +1 -0
  50. package/dist/tools/codeIntel.js +38 -10
  51. package/dist/tools/codeIntel.js.map +1 -1
  52. package/dist/tools/docOutline.js +250 -0
  53. package/dist/tools/docOutline.js.map +1 -0
  54. package/dist/tools/editRipple.js +29 -2
  55. package/dist/tools/editRipple.js.map +1 -1
  56. package/dist/tools/emptyResult.js +24 -0
  57. package/dist/tools/emptyResult.js.map +1 -0
  58. package/dist/tools/glob.js +11 -2
  59. package/dist/tools/glob.js.map +1 -1
  60. package/dist/tools/grep.js +4 -3
  61. package/dist/tools/grep.js.map +1 -1
  62. package/dist/tools/missingPath.js +90 -0
  63. package/dist/tools/missingPath.js.map +1 -0
  64. package/dist/tools/readFile.js +3 -1
  65. package/dist/tools/readFile.js.map +1 -1
  66. package/dist/tools/rebuildDetail.js +9 -5
  67. package/dist/tools/rebuildDetail.js.map +1 -1
  68. package/dist/tools/runCommand.js +5 -1
  69. package/dist/tools/runCommand.js.map +1 -1
  70. package/dist/tools/webSearch.js +3 -1
  71. package/dist/tools/webSearch.js.map +1 -1
  72. package/package.json +2 -2
@@ -0,0 +1,154 @@
1
+ /**
2
+ * coauthor.ts — the "Co-authored-by: mwcode" line on commits the agent makes.
3
+ *
4
+ * Only a commit the AGENT runs through `run_command` gets it. A commit the person types (`!git commit`) never
5
+ * does, and neither does one the agent has not been allowed to credit: the first time the agent commits in a
6
+ * project it asks once, and the answer is remembered for that project (or for every project, if the person said
7
+ * so). After that there is no question. Where nobody can be asked (a headless run, a sub-agent) there is no
8
+ * question either, and the line is added only when the person already said yes.
9
+ *
10
+ * The line goes in with git's own `--trailer` option, so it lands in the trailer block whatever else the message
11
+ * holds, and it works with `-m`, `-F` and `--amend`. The command is rewritten only when its text can be read
12
+ * with certainty: the places `git commit` appears in the parsed command and in the raw text have to agree,
13
+ * so a `git commit` inside a quoted string is never touched.
14
+ */
15
+ import { execFile } from "node:child_process";
16
+ import { promises as fs } from "node:fs";
17
+ import { join } from "node:path";
18
+ import { governanceDir } from "../governor/index.js";
19
+ import { verbOf } from "./commandParse.js";
20
+ /** The line, as it appears at the end of a commit message. The address is the account's private GitHub address. */
21
+ export const CO_AUTHOR_LINE = "Co-authored-by: mwcode <344669505+mwcode-agent@users.noreply.github.com>";
22
+ /** What identifies the line inside a command, so one that already carries it is left alone. */
23
+ const MARK = "mwcode-agent@users.noreply.github.com";
24
+ const FILE = "coauthor.json";
25
+ export const YES_PROJECT = "Yes, for this project";
26
+ export const YES_ALL = "Yes, for all my projects";
27
+ export const NO_PROJECT = "No, not in this project";
28
+ export const COAUTHOR_QUESTION = "Credit mwcode as a co-author on the commits I make?";
29
+ export const COAUTHOR_DETAIL = `It adds one line to the end of each commit message I make:\n${CO_AUTHOR_LINE}\n` +
30
+ "Commits you make yourself never get it. You will not be asked again in this project; /coauthor changes it.";
31
+ async function readFile(dir) {
32
+ try {
33
+ const raw = JSON.parse(await fs.readFile(join(dir, FILE), "utf8"));
34
+ return typeof raw.credit === "boolean" ? raw.credit : null;
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ /** The answer in force for a project: its own, else the one for all projects, else none yet. */
41
+ export async function coauthorSetting(cwd) {
42
+ const project = await readFile(governanceDir(cwd, "project"));
43
+ if (project !== null)
44
+ return { credit: project, from: "project" };
45
+ const global = await readFile(governanceDir(cwd, "global"));
46
+ return global === null ? null : { credit: global, from: "global" };
47
+ }
48
+ /** Record an answer for one scope, or (null) forget it so the next commit asks again. */
49
+ export async function setCoauthor(cwd, scope, credit) {
50
+ const dir = governanceDir(cwd, scope);
51
+ const file = join(dir, FILE);
52
+ if (credit === null) {
53
+ await fs.rm(file, { force: true });
54
+ return;
55
+ }
56
+ await fs.mkdir(dir, { recursive: true });
57
+ await fs.writeFile(file, JSON.stringify({ credit }, null, 2), "utf8");
58
+ }
59
+ /** Git's global options that take the next word as their value. */
60
+ const OPTIONS_WITH_VALUE = new Set(["-C", "-c", "--git-dir", "--work-tree", "--namespace", "--exec-path"]);
61
+ /** Whether this simple command is `git commit`, past git's own options (`git -C dir commit`). */
62
+ function isGitCommit(words) {
63
+ for (let i = 1; i < words.length; i++) {
64
+ const w = words[i];
65
+ if (OPTIONS_WITH_VALUE.has(w)) {
66
+ i++;
67
+ continue;
68
+ }
69
+ if (w.startsWith("-"))
70
+ continue;
71
+ return w === "commit";
72
+ }
73
+ return false;
74
+ }
75
+ /** How many real `git commit` commands the parsed text runs. */
76
+ export function countGitCommits(parsed) {
77
+ return parsed.commands.filter((c) => verbOf(c) === "git" && isGitCommit(c.words)).length;
78
+ }
79
+ /** `git`, git's own options, then `commit`, in the raw text. Each option is one word or an option with its value. */
80
+ const COMMIT_IN_TEXT = /\bgit(?:\.exe)?(?:\s+(?:-C|-c)\s+(?:"[^"]*"|'[^']*'|\S+)|\s+--?[A-Za-z][\w-]*(?:=(?:"[^"]*"|'[^']*'|\S+))?)*\s+commit(?=\s|$|;|&|\|)/gi;
81
+ /**
82
+ * The command with the trailer added to every `git commit` in it, or null when that cannot be done with
83
+ * certainty: the raw text and the parsed command must find the same number of commits, so a `git commit` inside
84
+ * a string, or an option this does not read, leaves the command exactly as written.
85
+ */
86
+ export function addTrailer(command, parsed) {
87
+ const real = countGitCommits(parsed);
88
+ if (real === 0 || parsed.unreadable)
89
+ return null;
90
+ const found = command.match(COMMIT_IN_TEXT)?.length ?? 0;
91
+ if (found !== real)
92
+ return null;
93
+ return command.replace(COMMIT_IN_TEXT, (m) => `${m} --trailer "${CO_AUTHOR_LINE}"`);
94
+ }
95
+ /** `--trailer` arrived in git 2.32. */
96
+ let trailerSupport;
97
+ export function gitSupportsTrailer() {
98
+ trailerSupport ??= new Promise((resolve) => {
99
+ execFile("git", ["--version"], { timeout: 5000, windowsHide: true }, (error, stdout) => {
100
+ const m = /(\d+)\.(\d+)/.exec(String(stdout));
101
+ if (error || !m)
102
+ return resolve(false);
103
+ const major = Number(m[1]);
104
+ const minor = Number(m[2]);
105
+ resolve(major > 2 || (major === 2 && minor >= 32));
106
+ });
107
+ });
108
+ return trailerSupport;
109
+ }
110
+ /** For tests: forget the cached git version. */
111
+ export function resetGitVersionForTests() {
112
+ trailerSupport = undefined;
113
+ }
114
+ /**
115
+ * The command to run: the same text, with the trailer added when the agent is committing and the project has
116
+ * said yes. Asks once when it has not been asked. Anything unclear leaves the command unchanged.
117
+ */
118
+ export async function withCoauthor(command, parsed, ctx) {
119
+ // The person's own commands are theirs. A commit that already carries the line needs nothing.
120
+ if (ctx.userInitiated || command.includes(MARK))
121
+ return command;
122
+ if (countGitCommits(parsed) === 0)
123
+ return command;
124
+ const root = ctx.governance?.forbidden.root ?? ctx.cwd;
125
+ let setting = await coauthorSetting(root);
126
+ if (!setting) {
127
+ // Nobody to ask (a headless run, a sub-agent): no question, and no credit until the person has said yes.
128
+ if (!ctx.requestApproval)
129
+ return command;
130
+ const choice = await ctx.requestApproval(COAUTHOR_QUESTION, [YES_PROJECT, YES_ALL, NO_PROJECT], COAUTHOR_DETAIL);
131
+ if (choice === YES_PROJECT) {
132
+ await setCoauthor(root, "project", true);
133
+ setting = { credit: true, from: "project" };
134
+ }
135
+ else if (choice === YES_ALL) {
136
+ await setCoauthor(root, "global", true);
137
+ setting = { credit: true, from: "global" };
138
+ }
139
+ else if (choice === NO_PROJECT) {
140
+ await setCoauthor(root, "project", false);
141
+ return command;
142
+ }
143
+ else {
144
+ // Dismissed, or an answer that is none of the options: not an answer. Commit without the line, ask next time.
145
+ return command;
146
+ }
147
+ }
148
+ if (!setting.credit)
149
+ return command;
150
+ if (!(await gitSupportsTrailer()))
151
+ return command;
152
+ return addTrailer(command, parsed) ?? command;
153
+ }
154
+ //# sourceMappingURL=coauthor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coauthor.js","sourceRoot":"","sources":["../../src/tools/coauthor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAsB,MAAM,mBAAmB,CAAC;AAG/D,mHAAmH;AACnH,MAAM,CAAC,MAAM,cAAc,GAAG,0EAA0E,CAAC;AAEzG,+FAA+F;AAC/F,MAAM,IAAI,GAAG,uCAAuC,CAAC;AAErD,MAAM,IAAI,GAAG,eAAe,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAC;AACnD,MAAM,CAAC,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAEpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,qDAAqD,CAAC;AACvF,MAAM,CAAC,MAAM,eAAe,GAC1B,+DAA+D,cAAc,IAAI;IACjF,4GAA4G,CAAC;AAQ/G,KAAK,UAAU,QAAQ,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAyB,CAAC;QAC3F,OAAO,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAClE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5D,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACrE,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,KAAsB,EAAE,MAAsB;IAC3F,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IACD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,mEAAmE;AACnE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;AAE3G,iGAAiG;AACjG,SAAS,WAAW,CAAC,KAAe;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACpB,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAChC,OAAO,CAAC,KAAK,QAAQ,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,eAAe,CAAC,MAAqB;IACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3F,CAAC;AAED,qHAAqH;AACrH,MAAM,cAAc,GAClB,wIAAwI,CAAC;AAE3I;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,MAAqB;IAC/D,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,cAAc,GAAG,CAAC,CAAC;AACtF,CAAC;AAED,uCAAuC;AACvC,IAAI,cAA4C,CAAC;AAEjD,MAAM,UAAU,kBAAkB;IAChC,cAAc,KAAK,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QAClD,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACrF,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,CAAC,CAAC;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,uBAAuB;IACrC,cAAc,GAAG,SAAS,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,MAAqB,EAAE,GAAgB;IACzF,8FAA8F;IAC9F,IAAI,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAChE,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAElD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;IACvD,IAAI,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,yGAAyG;QACzG,IAAI,CAAC,GAAG,CAAC,eAAe;YAAE,OAAO,OAAO,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC;QACjH,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3B,MAAM,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACzC,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9C,CAAC;aAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC7C,CAAC;aAAM,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1C,OAAO,OAAO,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,8GAA8G;YAC9G,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,kBAAkB,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,OAAO,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC;AAChD,CAAC"}
@@ -16,6 +16,23 @@ import { excludedFromSearch, guardedPathReason } from "./guard.js";
16
16
  import { isSupported } from "../alternator/chassis/treesitter.js";
17
17
  import { isMarkupSupported } from "../alternator/chassis/markup.js";
18
18
  import { fail, failQuietly } from "./results.js";
19
+ import { DOC_MAX_BYTES, docOutline, isDocFile } from "./docOutline.js";
20
+ /** Documents and data files outlined when a folder is: how many, and how many entries each. */
21
+ const DIR_DOC_CAP = 12;
22
+ const DIR_DOC_ENTRIES = 12;
23
+ /** The outline lines of one document or data file, or null when it is not one, is too large, or cannot be read. */
24
+ async function docLines(abs, limit) {
25
+ if (!isDocFile(abs))
26
+ return null;
27
+ try {
28
+ if ((await fs.stat(abs)).size > DOC_MAX_BYTES)
29
+ return null;
30
+ return docOutline(abs, await fs.readFile(abs, "utf8"), limit);
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
19
36
  const DIR_FILE_CAP = 40;
20
37
  const REF_CAP = 100;
21
38
  function indexingNote(ctx) {
@@ -42,9 +59,8 @@ const outlineDef = {
42
59
  "unfamiliar area, and it costs one call. " +
43
60
  `A directory outline covers at most ${DIR_FILE_CAP} files, so for anything larger ` +
44
61
  "treat it as a sample and narrow to a subfolder. Files with no symbols are left out. " +
45
- "Works on HTML and CSS too: it lists a page's sections and ids, and a stylesheet's " +
46
- "selectors, with line numbers, so you can navigate a big page instead of reading it " +
47
- "top to bottom.",
62
+ "Works on HTML, CSS, markdown, JSON, YAML, TOML and CSV too: sections, selectors, " +
63
+ "headings and keys with line numbers, so you can navigate a big file without reading it.",
48
64
  parameters: {
49
65
  type: "object",
50
66
  additionalProperties: false,
@@ -68,11 +84,17 @@ const outlineDef = {
68
84
  return fail(`path not found: ${rawPath}`);
69
85
  }
70
86
  const groups = [];
87
+ const docGroups = [];
88
+ let moreDocs = 0;
71
89
  let rollup = "";
72
90
  let dirTruncated = null;
73
91
  if (stat.isFile()) {
74
92
  const entries = await (chassisForPath(ctx, abs)?.outline(abs) ?? Promise.resolve([]));
75
- groups.push({ file: abs, entries });
93
+ const lines = entries.length === 0 ? await docLines(abs) : null;
94
+ if (lines)
95
+ docGroups.push({ file: abs, lines });
96
+ else
97
+ groups.push({ file: abs, entries });
76
98
  }
77
99
  else {
78
100
  // A directory: lead with a folder rollup (counts, central symbols, deps).
@@ -98,13 +120,19 @@ const outlineDef = {
98
120
  if (entries.length)
99
121
  groups.push({ file: f.abs, entries });
100
122
  }
123
+ // The folder's documents and data files after its code: headings and keys, a few per file.
124
+ const docs = files.filter((f) => !excludedFromSearch(f.abs) && isDocFile(f.abs));
125
+ for (const f of docs.slice(0, DIR_DOC_CAP)) {
126
+ const lines = await docLines(f.abs, DIR_DOC_ENTRIES);
127
+ if (lines)
128
+ docGroups.push({ file: f.abs, lines });
129
+ }
130
+ moreDocs = Math.max(0, docs.length - DIR_DOC_CAP);
101
131
  }
102
- const outlineBody = groups
103
- .map((g) => {
104
- const header = relativize(ctx, g.file);
105
- return `${header}\n${renderOutlineEntries(g.entries).join("\n")}`;
106
- })
107
- .join("\n\n");
132
+ const outlineBody = [
133
+ ...groups.map((g) => `${relativize(ctx, g.file)}\n${renderOutlineEntries(g.entries).join("\n")}`),
134
+ ...docGroups.map((g) => `${relativize(ctx, g.file)}\n${g.lines.join("\n")}`),
135
+ ].join("\n\n") + (moreDocs ? `\n\n(${moreDocs} more document and data files not outlined)` : "");
108
136
  const truncNote = dirTruncated
109
137
  ? `\n\n(outlined ${dirTruncated.shown} of ${dirTruncated.total} files — this is a ` +
110
138
  `sample, not the whole folder; narrow to a subfolder to see the rest)`
@@ -1 +1 @@
1
- {"version":3,"file":"codeIntel.js","sourceRoot":"","sources":["../../src/tools/codeIntel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codeIntel.js","sourceRoot":"","sources":["../../src/tools/codeIntel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * docOutline.ts — the outline of a file that is not code: markdown headings, and the keys of JSON, YAML, TOML and
3
+ * ini files, with line numbers.
4
+ *
5
+ * `outline` knew code, HTML and stylesheets. For everything else the only way to orient in a file was to read it,
6
+ * which is the expensive habit the tool exists to prevent. This is read straight from the text on demand rather
7
+ * than put in the code graph: a heading or a key such as `name` is not a symbol, and indexing them would make
8
+ * every definition lookup for a common word answer with every package.json in the repo.
9
+ *
10
+ * Pure text in, lines out. A file it cannot read the shape of gives null, and the caller says nothing about it.
11
+ */
12
+ import { extname } from "node:path";
13
+ /** Largest file read to outline. Past it a file's shape is not something to list line by line. */
14
+ export const DOC_MAX_BYTES = 512 * 1024;
15
+ /** Entries shown for one file. */
16
+ export const DOC_MAX_ENTRIES = 80;
17
+ const KINDS = {
18
+ ".md": "markdown", ".markdown": "markdown", ".mdx": "markdown",
19
+ ".json": "json", ".jsonc": "json",
20
+ ".yaml": "yaml", ".yml": "yaml",
21
+ ".toml": "toml", ".ini": "toml", ".cfg": "toml",
22
+ ".csv": "csv", ".tsv": "csv",
23
+ };
24
+ /** Lock files and generated manifests: huge, and a list of their keys says nothing. */
25
+ const SKIP_NAME = /(^|[\\/])(package-lock\.json|npm-shrinkwrap\.json|yarn\.lock|pnpm-lock\.yaml|composer\.lock|Cargo\.lock|poetry\.lock)$/i;
26
+ /** Whether this path is a file the outline can read the shape of. */
27
+ export function isDocFile(path) {
28
+ return extname(path).toLowerCase() in KINDS && !SKIP_NAME.test(path);
29
+ }
30
+ const row = (line, indent, text) => ` ${String(line).padStart(4)} ${" ".repeat(indent)}${text}`;
31
+ const clip = (s, n = 48) => (s.length > n ? `${s.slice(0, n - 1)}…` : s);
32
+ /** The outline of `text` as printable lines, or null when the file type is not one it reads. */
33
+ export function docOutline(path, text, limit = DOC_MAX_ENTRIES) {
34
+ const kind = KINDS[extname(path).toLowerCase()];
35
+ if (!kind || SKIP_NAME.test(path))
36
+ return null;
37
+ const lines = kind === "markdown" ? markdown(text)
38
+ : kind === "json" ? json(text)
39
+ : kind === "yaml" ? yaml(text)
40
+ : kind === "toml" ? toml(text)
41
+ : csv(text);
42
+ if (lines.length === 0)
43
+ return null;
44
+ if (lines.length <= limit)
45
+ return lines;
46
+ return [...lines.slice(0, limit), ` … ${lines.length - limit} more entries`];
47
+ }
48
+ function markdown(text) {
49
+ const out = [];
50
+ let fence = null;
51
+ text.split(/\r?\n/).forEach((raw, i) => {
52
+ const f = /^\s{0,3}(`{3,}|~{3,})/.exec(raw);
53
+ if (f) {
54
+ if (fence === null)
55
+ fence = f[1][0];
56
+ else if (f[1][0] === fence)
57
+ fence = null;
58
+ return;
59
+ }
60
+ if (fence !== null)
61
+ return;
62
+ const h = /^(#{1,6})\s+(.+?)\s*#*\s*$/.exec(raw);
63
+ if (h)
64
+ out.push(row(i + 1, h[1].length - 1, `${h[1]} ${clip(h[2], 80)}`));
65
+ });
66
+ return out;
67
+ }
68
+ /** Keys down to the second level of a JSON document, each with what its value is. Reads JSON with comments too. */
69
+ function json(text) {
70
+ const recs = [];
71
+ const stack = [];
72
+ let line = 1;
73
+ let pendingKey = null;
74
+ let lastRec = null;
75
+ const n = text.length;
76
+ const top = () => stack[stack.length - 1];
77
+ const countValue = () => {
78
+ const t = top();
79
+ if (t && !t.seen) {
80
+ t.seen = true;
81
+ t.items = 1;
82
+ }
83
+ };
84
+ // Only keys of objects nested in objects are listed: an array of records would repeat its keys once per element.
85
+ const listed = () => stack.length >= 1 && stack.length <= 2 && stack.every((f) => f.type === "{");
86
+ for (let i = 0; i < n; i++) {
87
+ const c = text[i];
88
+ if (c === "\n") {
89
+ line++;
90
+ continue;
91
+ }
92
+ if (c === " " || c === "\t" || c === "\r")
93
+ continue;
94
+ if (c === "/" && text[i + 1] === "/") {
95
+ while (i < n && text[i] !== "\n")
96
+ i++;
97
+ i--;
98
+ continue;
99
+ }
100
+ if (c === "/" && text[i + 1] === "*") {
101
+ i += 2;
102
+ while (i < n && !(text[i] === "*" && text[i + 1] === "/")) {
103
+ if (text[i] === "\n")
104
+ line++;
105
+ i++;
106
+ }
107
+ i++;
108
+ continue;
109
+ }
110
+ if (c === '"') {
111
+ const start = i;
112
+ i++;
113
+ while (i < n && text[i] !== '"') {
114
+ if (text[i] === "\\")
115
+ i++;
116
+ if (text[i] === "\n")
117
+ line++;
118
+ i++;
119
+ }
120
+ const lit = text.slice(start + 1, i);
121
+ let j = i + 1;
122
+ while (j < n && (text[j] === " " || text[j] === "\t" || text[j] === "\r" || text[j] === "\n"))
123
+ j++;
124
+ const t = top();
125
+ if (text[j] === ":" && t?.type === "{") {
126
+ pendingKey = { line, name: lit };
127
+ if (!t.seen) {
128
+ t.seen = true;
129
+ t.items = 1;
130
+ }
131
+ if (listed()) {
132
+ const rec = { text: "", line, indent: stack.length - 1, name: lit };
133
+ recs.push(rec);
134
+ lastRec = rec;
135
+ }
136
+ else
137
+ lastRec = null;
138
+ i = j; // past the colon
139
+ // a scalar value: preview it
140
+ let k = i + 1;
141
+ while (k < n && (text[k] === " " || text[k] === "\t"))
142
+ k++;
143
+ if (lastRec && text[k] !== "{" && text[k] !== "[") {
144
+ let e = k;
145
+ if (text[k] === '"') {
146
+ e = k + 1;
147
+ while (e < n && text[e] !== '"') {
148
+ if (text[e] === "\\")
149
+ e++;
150
+ e++;
151
+ }
152
+ e++;
153
+ }
154
+ else
155
+ while (e < n && !",}\n\r".includes(text[e]))
156
+ e++;
157
+ lastRec.text = `${lit}: ${clip(text.slice(k, e).trim())}`;
158
+ }
159
+ }
160
+ else
161
+ countValue();
162
+ continue;
163
+ }
164
+ if (c === "{" || c === "[") {
165
+ const rec = pendingKey && listed() ? lastRec : null;
166
+ pendingKey = null;
167
+ countValue();
168
+ stack.push({ type: c, items: 0, seen: false, rec });
169
+ continue;
170
+ }
171
+ if (c === "}" || c === "]") {
172
+ const f = stack.pop();
173
+ if (f?.rec)
174
+ f.rec.text = `${f.rec.name}: ${c === "}" ? `{${f.items} key${f.items === 1 ? "" : "s"}}` : `[${f.items} item${f.items === 1 ? "" : "s"}]`}`;
175
+ continue;
176
+ }
177
+ if (c === ",") {
178
+ const t = top();
179
+ if (t)
180
+ t.items++;
181
+ pendingKey = null;
182
+ continue;
183
+ }
184
+ // a bare scalar (number, true, false, null)
185
+ countValue();
186
+ while (i + 1 < n && !",}] \t\r\n".includes(text[i + 1]))
187
+ i++;
188
+ }
189
+ return recs.filter((r) => r.text).map((r) => row(r.line, r.indent, r.text));
190
+ }
191
+ /** Top-level keys and their direct children in a YAML file, with a preview of a plain value. */
192
+ function yaml(text) {
193
+ const out = [];
194
+ let block = -1; // indent of a block scalar's key: its lines are text, not keys
195
+ let child = -1; // indent of the keys one level below the current top-level key
196
+ text.split(/\r?\n/).forEach((raw, i) => {
197
+ if (!raw.trim() || /^\s*#/.test(raw) || /^---|^\.\.\./.test(raw))
198
+ return;
199
+ const indent = raw.length - raw.trimStart().length;
200
+ if (block >= 0) {
201
+ if (indent > block)
202
+ return;
203
+ block = -1;
204
+ }
205
+ const m = /^(\s*)(?:-\s+)?("[^"]+"|'[^']+'|[^\s:#][^:#]*?):(?:\s+(.*))?$/.exec(raw);
206
+ if (!m)
207
+ return;
208
+ // The second level is whatever indent the first nested key under a top-level key uses; anything deeper is left out.
209
+ if (indent === 0)
210
+ child = -1;
211
+ else if (child < 0)
212
+ child = indent;
213
+ const depth = indent === 0 ? 0 : indent === child ? 1 : 2;
214
+ if (depth > 1)
215
+ return;
216
+ const value = (m[3] ?? "").replace(/\s+#.*$/, "").trim();
217
+ if (/^[|>][+-]?\d*$/.test(value))
218
+ block = indent;
219
+ const shown = value && !/^[|>]/.test(value) ? `: ${clip(value)}` : ":";
220
+ out.push(row(i + 1, depth, `${m[2].replace(/^["']|["']$/g, "")}${shown}`));
221
+ });
222
+ return out;
223
+ }
224
+ /** Tables (`[a.b]`, `[[c]]`) and the keys before the first one, for TOML and ini files. */
225
+ function toml(text) {
226
+ const out = [];
227
+ let inTable = false;
228
+ text.split(/\r?\n/).forEach((raw, i) => {
229
+ const t = /^\s*(\[\[?[^\]]+\]\]?)\s*(?:#.*)?$/.exec(raw);
230
+ if (t) {
231
+ inTable = true;
232
+ out.push(row(i + 1, 0, t[1]));
233
+ return;
234
+ }
235
+ if (inTable || /^\s*[#;]/.test(raw))
236
+ return;
237
+ const k = /^\s*([A-Za-z0-9_.\-"']+)\s*[=:]\s*(.*)$/.exec(raw);
238
+ if (k)
239
+ out.push(row(i + 1, 0, `${k[1]}: ${clip(k[2].trim())}`));
240
+ });
241
+ return out;
242
+ }
243
+ /** A table's header row and how many rows follow. */
244
+ function csv(text) {
245
+ const rows = text.split(/\r?\n/).filter((l) => l.length > 0);
246
+ if (rows.length === 0)
247
+ return [];
248
+ return [row(1, 0, `columns: ${clip(rows[0], 120)}`), row(1, 0, `${rows.length - 1} row${rows.length === 2 ? "" : "s"}`)];
249
+ }
250
+ //# sourceMappingURL=docOutline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docOutline.js","sourceRoot":"","sources":["../../src/tools/docOutline.ts"],"names":[],"mappings":"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"}
@@ -107,10 +107,36 @@ export function formatRippleNote(diags, editedSet, label) {
107
107
  `was already there before your edit, say so rather than silently fixing unrelated ` +
108
108
  `code.]\n${lines.join("\n")}${more}`);
109
109
  }
110
+ /** Source files a language server could check, so an edit to one that nothing checked is worth saying so about.
111
+ * Prose, data and markup are not here: nothing is expected to check those, and a note on every one would be noise. */
112
+ const CHECKABLE = /\.(?:tsx?|jsx?|mjs|cjs|py|go|rs|java|kt|c|h|cc|cpp|hpp|cs|rb|php|swift|dart|lua|zig)$/i;
113
+ /** The extensions already reported as unchecked, per session: said once, not after every edit. */
114
+ const toldUnchecked = new WeakMap();
115
+ /**
116
+ * The note for edited source files that no language server covers, or "" when there is none to give.
117
+ *
118
+ * Silence after an edit is two different things: the check ran and found nothing, or no check ran at all. The
119
+ * first cannot be claimed as an all-clear, but the second can be stated, and a model that is not told it
120
+ * believes nothing is watching its edits or, worse, that something is and found them fine.
121
+ */
122
+ export function uncheckedNote(ctx, edited, label) {
123
+ const told = toldUnchecked.get(ctx) ?? new Set();
124
+ const fresh = edited.filter((abs) => CHECKABLE.test(abs) && !chassisForPath(ctx, abs) && !told.has(abs.slice(abs.lastIndexOf(".")).toLowerCase()));
125
+ if (fresh.length === 0)
126
+ return "";
127
+ for (const abs of fresh)
128
+ told.add(abs.slice(abs.lastIndexOf(".")).toLowerCase());
129
+ toldUnchecked.set(ctx, told);
130
+ const names = fresh.slice(0, 3).map(label).join(", ");
131
+ return (`[Automatic check after your edit: no language server covers ${names}${fresh.length > 3 ? " and others" : ""}, ` +
132
+ `so nothing was checked and no errors were looked for. Run the project's own build, type check or tests to find out ` +
133
+ `whether the edit broke anything. This is said once per file type in a session.]`);
134
+ }
110
135
  /**
111
136
  * The whole pass: what did this round edit, what does that reach, and is anything broken.
112
137
  *
113
- * Returns "" whenever there is nothing to say — no edits, no chassis, no diagnostics.
138
+ * Returns "" whenever there is nothing to say — no edits, no diagnostics, and no edited source file left unchecked
139
+ * for want of a server that has not been mentioned yet.
114
140
  * Never throws: this runs inside the turn loop and a failure here must cost the user
115
141
  * nothing more than the check itself.
116
142
  */
@@ -132,7 +158,8 @@ export async function rippleCheck(ctx, results, resolve) {
132
158
  // One unreachable server must not lose the diagnostics from the others.
133
159
  }
134
160
  }));
135
- return formatRippleNote(all, new Set(edited), (abs) => relativize(ctx, abs));
161
+ const label = (abs) => relativize(ctx, abs);
162
+ return formatRippleNote(all, new Set(edited), label) || uncheckedNote(ctx, edited, label);
136
163
  }
137
164
  catch {
138
165
  return "";
@@ -1 +1 @@
1
- {"version":3,"file":"editRipple.js","sourceRoot":"","sources":["../../src/tools/editRipple.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editRipple.js","sourceRoot":"","sources":["../../src/tools/editRipple.ts"],"names":[],"mappings":"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"}