@nanonets/graft 0.23.0 → 0.24.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 (287) hide show
  1. package/README.md +4 -4
  2. package/dist/ai/crux.d.ts +31 -3
  3. package/dist/ai/crux.d.ts.map +1 -1
  4. package/dist/ai/crux.js +88 -10
  5. package/dist/ai/crux.js.map +1 -1
  6. package/dist/ai/llm/openai.d.ts +101 -0
  7. package/dist/ai/llm/openai.d.ts.map +1 -1
  8. package/dist/ai/llm/openai.js +396 -6
  9. package/dist/ai/llm/openai.js.map +1 -1
  10. package/dist/ai/llm/recover-tool.d.ts +2 -0
  11. package/dist/ai/llm/recover-tool.d.ts.map +1 -1
  12. package/dist/ai/llm/recover-tool.js +1 -1
  13. package/dist/ai/llm/recover-tool.js.map +1 -1
  14. package/dist/ai/synthesize.d.ts.map +1 -1
  15. package/dist/ai/synthesize.js +100 -1
  16. package/dist/ai/synthesize.js.map +1 -1
  17. package/dist/claude/format.d.ts +21 -0
  18. package/dist/claude/format.d.ts.map +1 -1
  19. package/dist/claude/format.js +46 -1
  20. package/dist/claude/format.js.map +1 -1
  21. package/dist/claude/hooks.d.ts +5 -9
  22. package/dist/claude/hooks.d.ts.map +1 -1
  23. package/dist/claude/hooks.js +71 -58
  24. package/dist/claude/hooks.js.map +1 -1
  25. package/dist/claude/init.js +3 -3
  26. package/dist/claude/init.js.map +1 -1
  27. package/dist/claude/note-signals.d.ts +28 -0
  28. package/dist/claude/note-signals.d.ts.map +1 -0
  29. package/dist/claude/note-signals.js +325 -0
  30. package/dist/claude/note-signals.js.map +1 -0
  31. package/dist/claude/shim-template.d.ts.map +1 -1
  32. package/dist/claude/shim-template.js +17 -6
  33. package/dist/claude/shim-template.js.map +1 -1
  34. package/dist/claude/skill-template.d.ts.map +1 -1
  35. package/dist/claude/skill-template.js +49 -18
  36. package/dist/claude/skill-template.js.map +1 -1
  37. package/dist/claude/state.d.ts +4 -3
  38. package/dist/claude/state.d.ts.map +1 -1
  39. package/dist/claude/state.js.map +1 -1
  40. package/dist/claude/sync-run.js +1 -1
  41. package/dist/claude/sync-run.js.map +1 -1
  42. package/dist/cli-picker.d.ts +12 -5
  43. package/dist/cli-picker.d.ts.map +1 -1
  44. package/dist/cli-picker.js +24 -8
  45. package/dist/cli-picker.js.map +1 -1
  46. package/dist/cli.d.ts +2 -0
  47. package/dist/cli.d.ts.map +1 -1
  48. package/dist/cli.js +149 -43
  49. package/dist/cli.js.map +1 -1
  50. package/dist/context/batches.d.ts +29 -0
  51. package/dist/context/batches.d.ts.map +1 -0
  52. package/dist/context/batches.js +130 -0
  53. package/dist/context/batches.js.map +1 -0
  54. package/dist/context/build.d.ts +7 -2
  55. package/dist/context/build.d.ts.map +1 -1
  56. package/dist/context/build.js +84 -50
  57. package/dist/context/build.js.map +1 -1
  58. package/dist/context/node-file.d.ts.map +1 -1
  59. package/dist/context/node-file.js +41 -4
  60. package/dist/context/node-file.js.map +1 -1
  61. package/dist/engine.d.ts +2 -0
  62. package/dist/engine.d.ts.map +1 -1
  63. package/dist/engine.js +1 -0
  64. package/dist/engine.js.map +1 -1
  65. package/dist/graph/cards.d.ts.map +1 -1
  66. package/dist/graph/cards.js +9 -4
  67. package/dist/graph/cards.js.map +1 -1
  68. package/dist/graph/enrich.d.ts.map +1 -1
  69. package/dist/graph/enrich.js +8 -3
  70. package/dist/graph/enrich.js.map +1 -1
  71. package/dist/graph/generic.d.ts.map +1 -1
  72. package/dist/graph/generic.js +207 -6
  73. package/dist/graph/generic.js.map +1 -1
  74. package/dist/graph/lsp/client.d.ts +18 -0
  75. package/dist/graph/lsp/client.d.ts.map +1 -1
  76. package/dist/graph/lsp/client.js +40 -2
  77. package/dist/graph/lsp/client.js.map +1 -1
  78. package/dist/graph/lsp/enrich.d.ts.map +1 -1
  79. package/dist/graph/lsp/enrich.js +9 -1
  80. package/dist/graph/lsp/enrich.js.map +1 -1
  81. package/dist/graph/lsp/registry.d.ts +7 -0
  82. package/dist/graph/lsp/registry.d.ts.map +1 -1
  83. package/dist/graph/lsp/registry.js +27 -2
  84. package/dist/graph/lsp/registry.js.map +1 -1
  85. package/dist/graph/queries/gleam.scm +51 -0
  86. package/dist/graph/resolve.d.ts.map +1 -1
  87. package/dist/graph/resolve.js +65 -3
  88. package/dist/graph/resolve.js.map +1 -1
  89. package/dist/graph/workspace-cli.d.ts +2 -0
  90. package/dist/graph/workspace-cli.d.ts.map +1 -1
  91. package/dist/graph/workspace-cli.js +1 -1
  92. package/dist/graph/workspace-cli.js.map +1 -1
  93. package/dist/init-guard.d.ts +11 -0
  94. package/dist/init-guard.d.ts.map +1 -0
  95. package/dist/init-guard.js +21 -0
  96. package/dist/init-guard.js.map +1 -0
  97. package/dist/mcp/tools.d.ts.map +1 -1
  98. package/dist/mcp/tools.js +2 -1
  99. package/dist/mcp/tools.js.map +1 -1
  100. package/dist/notes/branches.d.ts +7 -1
  101. package/dist/notes/branches.d.ts.map +1 -1
  102. package/dist/notes/branches.js +31 -3
  103. package/dist/notes/branches.js.map +1 -1
  104. package/dist/notes/cold-start.d.ts +12 -2
  105. package/dist/notes/cold-start.d.ts.map +1 -1
  106. package/dist/notes/cold-start.js +46 -5
  107. package/dist/notes/cold-start.js.map +1 -1
  108. package/dist/notes/credit.d.ts +37 -0
  109. package/dist/notes/credit.d.ts.map +1 -0
  110. package/dist/notes/credit.js +78 -0
  111. package/dist/notes/credit.js.map +1 -0
  112. package/dist/notes/find-notes.d.ts +17 -0
  113. package/dist/notes/find-notes.d.ts.map +1 -0
  114. package/dist/notes/find-notes.js +48 -0
  115. package/dist/notes/find-notes.js.map +1 -0
  116. package/dist/notes/flatten.d.ts +31 -0
  117. package/dist/notes/flatten.d.ts.map +1 -0
  118. package/dist/notes/flatten.js +73 -0
  119. package/dist/notes/flatten.js.map +1 -0
  120. package/dist/notes/git-facts.d.ts +7 -1
  121. package/dist/notes/git-facts.d.ts.map +1 -1
  122. package/dist/notes/git-facts.js +12 -2
  123. package/dist/notes/git-facts.js.map +1 -1
  124. package/dist/notes/home.d.ts +24 -6
  125. package/dist/notes/home.d.ts.map +1 -1
  126. package/dist/notes/home.js +82 -15
  127. package/dist/notes/home.js.map +1 -1
  128. package/dist/notes/learning-fields.d.ts +102 -0
  129. package/dist/notes/learning-fields.d.ts.map +1 -0
  130. package/dist/notes/learning-fields.js +214 -0
  131. package/dist/notes/learning-fields.js.map +1 -0
  132. package/dist/notes/memory-notes.d.ts +71 -0
  133. package/dist/notes/memory-notes.d.ts.map +1 -0
  134. package/dist/notes/memory-notes.js +239 -0
  135. package/dist/notes/memory-notes.js.map +1 -0
  136. package/dist/notes/note-gate.d.ts +42 -0
  137. package/dist/notes/note-gate.d.ts.map +1 -0
  138. package/dist/notes/note-gate.js +181 -0
  139. package/dist/notes/note-gate.js.map +1 -0
  140. package/dist/notes/notes.d.ts +29 -77
  141. package/dist/notes/notes.d.ts.map +1 -1
  142. package/dist/notes/notes.js +69 -228
  143. package/dist/notes/notes.js.map +1 -1
  144. package/dist/notes/pr-reviews.d.ts +35 -7
  145. package/dist/notes/pr-reviews.d.ts.map +1 -1
  146. package/dist/notes/pr-reviews.js +156 -46
  147. package/dist/notes/pr-reviews.js.map +1 -1
  148. package/dist/notes/secrets.d.ts +28 -0
  149. package/dist/notes/secrets.d.ts.map +1 -0
  150. package/dist/notes/secrets.js +362 -0
  151. package/dist/notes/secrets.js.map +1 -0
  152. package/dist/notes/session-cost.d.ts +2 -0
  153. package/dist/notes/session-cost.d.ts.map +1 -1
  154. package/dist/notes/session-cost.js +8 -3
  155. package/dist/notes/session-cost.js.map +1 -1
  156. package/dist/notes/targets.d.ts +37 -0
  157. package/dist/notes/targets.d.ts.map +1 -0
  158. package/dist/notes/targets.js +108 -0
  159. package/dist/notes/targets.js.map +1 -0
  160. package/dist/notes/team-check.d.ts +22 -0
  161. package/dist/notes/team-check.d.ts.map +1 -0
  162. package/dist/notes/team-check.js +130 -0
  163. package/dist/notes/team-check.js.map +1 -0
  164. package/dist/notes/trail-home.d.ts +3 -0
  165. package/dist/notes/trail-home.d.ts.map +1 -0
  166. package/dist/notes/trail-home.js +12 -0
  167. package/dist/notes/trail-home.js.map +1 -0
  168. package/dist/search/grep-cli.d.ts +5 -2
  169. package/dist/search/grep-cli.d.ts.map +1 -1
  170. package/dist/search/grep-cli.js +11 -4
  171. package/dist/search/grep-cli.js.map +1 -1
  172. package/dist/search/ignored-code.d.ts +9 -0
  173. package/dist/search/ignored-code.d.ts.map +1 -0
  174. package/dist/search/ignored-code.js +73 -0
  175. package/dist/search/ignored-code.js.map +1 -0
  176. package/dist/skills/answers-prompt.d.ts +13 -0
  177. package/dist/skills/answers-prompt.d.ts.map +1 -0
  178. package/dist/skills/answers-prompt.js +83 -0
  179. package/dist/skills/answers-prompt.js.map +1 -0
  180. package/dist/skills/never-save.d.ts +5 -0
  181. package/dist/skills/never-save.d.ts.map +1 -0
  182. package/dist/skills/never-save.js +158 -0
  183. package/dist/skills/never-save.js.map +1 -0
  184. package/dist/skills/params.d.ts +39 -0
  185. package/dist/skills/params.d.ts.map +1 -0
  186. package/dist/skills/params.js +275 -0
  187. package/dist/skills/params.js.map +1 -0
  188. package/dist/skills/ran-less.d.ts +5 -0
  189. package/dist/skills/ran-less.d.ts.map +1 -0
  190. package/dist/skills/ran-less.js +51 -0
  191. package/dist/skills/ran-less.js.map +1 -0
  192. package/dist/skills/risk-delta.d.ts +32 -0
  193. package/dist/skills/risk-delta.d.ts.map +1 -0
  194. package/dist/skills/risk-delta.js +56 -0
  195. package/dist/skills/risk-delta.js.map +1 -0
  196. package/dist/skills/risk.d.ts +73 -0
  197. package/dist/skills/risk.d.ts.map +1 -0
  198. package/dist/skills/risk.js +396 -0
  199. package/dist/skills/risk.js.map +1 -0
  200. package/dist/skills/types.d.ts +422 -0
  201. package/dist/skills/types.d.ts.map +1 -0
  202. package/dist/skills/types.js +2 -0
  203. package/dist/skills/types.js.map +1 -0
  204. package/dist/telemetry/contract.d.ts.map +1 -1
  205. package/dist/telemetry/contract.js +8 -6
  206. package/dist/telemetry/contract.js.map +1 -1
  207. package/dist/telemetry/notice.d.ts.map +1 -1
  208. package/dist/telemetry/notice.js +3 -1
  209. package/dist/telemetry/notice.js.map +1 -1
  210. package/dist/trace/check-reads.d.ts +36 -0
  211. package/dist/trace/check-reads.d.ts.map +1 -0
  212. package/dist/trace/check-reads.js +57 -0
  213. package/dist/trace/check-reads.js.map +1 -0
  214. package/dist/trace/host.d.ts +40 -0
  215. package/dist/trace/host.d.ts.map +1 -0
  216. package/dist/trace/host.js +84 -0
  217. package/dist/trace/host.js.map +1 -0
  218. package/dist/trace/redact.d.ts +8 -0
  219. package/dist/trace/redact.d.ts.map +1 -0
  220. package/dist/trace/redact.js +63 -0
  221. package/dist/trace/redact.js.map +1 -0
  222. package/dist/trace/seen-cache.d.ts +9 -0
  223. package/dist/trace/seen-cache.d.ts.map +1 -0
  224. package/dist/trace/seen-cache.js +46 -0
  225. package/dist/trace/seen-cache.js.map +1 -0
  226. package/dist/trace/shell-scan.d.ts +52 -0
  227. package/dist/trace/shell-scan.d.ts.map +1 -0
  228. package/dist/trace/shell-scan.js +318 -0
  229. package/dist/trace/shell-scan.js.map +1 -0
  230. package/dist/trace/shell-words.d.ts +91 -0
  231. package/dist/trace/shell-words.d.ts.map +1 -0
  232. package/dist/trace/shell-words.js +558 -0
  233. package/dist/trace/shell-words.js.map +1 -0
  234. package/dist/trace/shell.d.ts +91 -0
  235. package/dist/trace/shell.d.ts.map +1 -0
  236. package/dist/trace/shell.js +435 -0
  237. package/dist/trace/shell.js.map +1 -0
  238. package/dist/trace/state.d.ts +27 -0
  239. package/dist/trace/state.d.ts.map +1 -0
  240. package/dist/trace/state.js +98 -0
  241. package/dist/trace/state.js.map +1 -0
  242. package/dist/trace/tamper-code.d.ts +9 -0
  243. package/dist/trace/tamper-code.d.ts.map +1 -0
  244. package/dist/trace/tamper-code.js +174 -0
  245. package/dist/trace/tamper-code.js.map +1 -0
  246. package/dist/trace/tamper-git.d.ts +12 -0
  247. package/dist/trace/tamper-git.d.ts.map +1 -0
  248. package/dist/trace/tamper-git.js +77 -0
  249. package/dist/trace/tamper-git.js.map +1 -0
  250. package/dist/trace/types.d.ts +477 -0
  251. package/dist/trace/types.d.ts.map +1 -0
  252. package/dist/trace/types.js +12 -0
  253. package/dist/trace/types.js.map +1 -0
  254. package/dist/trace/walls-glob.d.ts +11 -0
  255. package/dist/trace/walls-glob.d.ts.map +1 -0
  256. package/dist/trace/walls-glob.js +264 -0
  257. package/dist/trace/walls-glob.js.map +1 -0
  258. package/dist/trace/walls-quoted.d.ts +25 -0
  259. package/dist/trace/walls-quoted.d.ts.map +1 -0
  260. package/dist/trace/walls-quoted.js +81 -0
  261. package/dist/trace/walls-quoted.js.map +1 -0
  262. package/dist/upkeep.d.ts +1 -1
  263. package/dist/upkeep.d.ts.map +1 -1
  264. package/dist/upkeep.js +4 -1
  265. package/dist/upkeep.js.map +1 -1
  266. package/dist/util/actions-folder.d.ts +2 -0
  267. package/dist/util/actions-folder.d.ts.map +1 -0
  268. package/dist/util/actions-folder.js +9 -0
  269. package/dist/util/actions-folder.js.map +1 -0
  270. package/dist/util/front-matter.d.ts +31 -4
  271. package/dist/util/front-matter.d.ts.map +1 -1
  272. package/dist/util/front-matter.js +95 -3
  273. package/dist/util/front-matter.js.map +1 -1
  274. package/dist/util/private-file.d.ts +14 -0
  275. package/dist/util/private-file.d.ts.map +1 -0
  276. package/dist/util/private-file.js +82 -0
  277. package/dist/util/private-file.js.map +1 -0
  278. package/dist/util/private-fs.d.ts +25 -0
  279. package/dist/util/private-fs.d.ts.map +1 -0
  280. package/dist/util/private-fs.js +253 -0
  281. package/dist/util/private-fs.js.map +1 -0
  282. package/dist/util/state.d.ts.map +1 -1
  283. package/dist/util/state.js +3 -0
  284. package/dist/util/state.js.map +1 -1
  285. package/dist/viewer/app.js +2 -2
  286. package/package.json +5 -5
  287. package/scripts/run-tests.mjs +14 -2
@@ -0,0 +1,318 @@
1
+ /**
2
+ * The lexer under `shell.ts`: one pass over a command that finds its
3
+ * top-level segments the way the shell would. Quotes, `$'…'`, `$(…)`,
4
+ * `$((…))`, backticks, `${…}`, `(…)` subshells, `{ …; }` groups, `[[ … ]]`,
5
+ * comments, and loops and ifs (when asked) are opaque; a heredoc body is
6
+ * skipped as text and, at the top level, belongs to the segment whose line
7
+ * opened it. Ranges into the original text are returned, so callers can cut
8
+ * a command without retyping any of it.
9
+ *
10
+ * The PreToolUse fast path loads this file through `shell.ts`: it imports
11
+ * nothing.
12
+ */
13
+ export const OPEN_KW = new Set(['for', 'while', 'until', 'if', 'case', 'select']);
14
+ const CLOSE_KW = new Set(['done', 'fi', 'esac']);
15
+ const MID_KW = new Set(['do', 'then', 'else', 'elif', '!']);
16
+ const HEREDOC_OPEN = /^<<([-~]?)[ \t]*(?:'([^'\n]*)'|"([^"\n]*)"|\\?([^\s;&|<>()'"`]+))/;
17
+ /**
18
+ * The one scanner. `compounds`: a loop or an if is one segment (false splits
19
+ * inside them, to look at what they run).
20
+ */
21
+ export function scan(s, compounds = true) {
22
+ const segs = [];
23
+ const keep = [];
24
+ const stack = [];
25
+ const pending = [];
26
+ let cur = null;
27
+ let compound = 0;
28
+ let cmdStart = true;
29
+ let sawNl = false;
30
+ let heredoc = false;
31
+ let newline = false;
32
+ const close = (sep, nl) => {
33
+ if (!cur)
34
+ return;
35
+ cur.sep = sep;
36
+ cur.nl = nl;
37
+ segs.push(cur);
38
+ cur = null;
39
+ };
40
+ for (let i = 0; i < s.length; i++) {
41
+ const c = s[i];
42
+ const ctx = stack.length ? stack[stack.length - 1] : '';
43
+ if (c === '\n' && ctx !== '"' && ctx !== '`') {
44
+ const atTop = ctx === '' && compound === 0;
45
+ if (atTop)
46
+ close(';', true);
47
+ sawNl = true;
48
+ cmdStart = true;
49
+ if (!pending.length)
50
+ continue;
51
+ heredoc = true;
52
+ let j = i + 1;
53
+ let last = i;
54
+ for (const h of pending) {
55
+ const bodyStart = j;
56
+ let end = s.length;
57
+ while (j < s.length) {
58
+ const nl = s.indexOf('\n', j);
59
+ const lineEnd = nl < 0 ? s.length : nl;
60
+ const line = s.slice(j, lineEnd);
61
+ // <<- strips leading tabs only, as bash and zsh do.
62
+ if ((h.strip ? line.replace(/^\t+/, '') : line).replace(/\r$/, '') === h.delim) {
63
+ end = lineEnd;
64
+ break;
65
+ }
66
+ j = nl < 0 ? s.length : nl + 1;
67
+ }
68
+ if (atTop && h.owner !== null)
69
+ (segs[h.owner] ?? cur)?.bodies.push([bodyStart, end]);
70
+ last = end;
71
+ j = end + 1;
72
+ }
73
+ if (atTop)
74
+ keep.push([i, last]);
75
+ pending.length = 0;
76
+ i = last - 1;
77
+ continue;
78
+ }
79
+ if (c === ' ' || c === '\t' || c === '\r')
80
+ continue;
81
+ if (ctx === '') {
82
+ let sep = null;
83
+ let len = 1;
84
+ if (c === '&' && s[i + 1] === '&') {
85
+ sep = '&&';
86
+ len = 2;
87
+ }
88
+ else if (c === '|' && s[i + 1] === '|') {
89
+ sep = '||';
90
+ len = 2;
91
+ }
92
+ else if (c === '|' && s[i - 1] !== '>') {
93
+ sep = '|';
94
+ len = s[i + 1] === '&' ? 2 : 1;
95
+ }
96
+ else if (c === ';') {
97
+ sep = ';';
98
+ len = s[i + 1] === ';' ? 2 : 1;
99
+ }
100
+ else if (c === '&' && s[i + 1] !== '>' && s[i - 1] !== '>' && s[i - 1] !== '<')
101
+ sep = '&';
102
+ if (sep !== null) {
103
+ if (compound === 0)
104
+ close(sep, false);
105
+ i += len - 1;
106
+ cmdStart = true;
107
+ continue;
108
+ }
109
+ }
110
+ if (sawNl)
111
+ newline = true;
112
+ if (!cur)
113
+ cur = { start: i, end: i, sep: '', nl: false, bodies: [], group: null };
114
+ const seg = cur;
115
+ const was = cmdStart;
116
+ cmdStart = false;
117
+ if (ctx === '"') {
118
+ if (c === '\\')
119
+ i++;
120
+ else if (c === '"')
121
+ stack.pop();
122
+ else if (c === '`')
123
+ stack.push('`');
124
+ else if (c === '$' && s[i + 1] === '(') {
125
+ stack.push(s[i + 2] === '(' ? 'A' : '(');
126
+ i += s[i + 2] === '(' ? 2 : 1;
127
+ }
128
+ else if (c === '$' && s[i + 1] === '{') {
129
+ stack.push('$');
130
+ i++;
131
+ }
132
+ seg.end = i + 1;
133
+ continue;
134
+ }
135
+ if (c === '\\') {
136
+ i++;
137
+ }
138
+ else if (c === "'") {
139
+ const q = s.indexOf("'", i + 1);
140
+ i = q < 0 ? s.length - 1 : q;
141
+ }
142
+ else if (c === '$' && s[i + 1] === "'") {
143
+ let j = i + 2;
144
+ while (j < s.length && s[j] !== "'")
145
+ j += s[j] === '\\' ? 2 : 1;
146
+ i = Math.min(j, s.length - 1);
147
+ }
148
+ else if (c === '"') {
149
+ stack.push('"');
150
+ }
151
+ else if (c === '`') {
152
+ if (ctx === '`')
153
+ stack.pop();
154
+ else
155
+ stack.push('`');
156
+ }
157
+ else if (c === '$' && s[i + 1] === '(' && s[i + 2] === '(') {
158
+ stack.push('A');
159
+ i += 2;
160
+ }
161
+ else if (c === '$' && s[i + 1] === '(') {
162
+ stack.push('(');
163
+ i++;
164
+ }
165
+ else if (c === '$' && s[i + 1] === '{') {
166
+ stack.push('$');
167
+ i++;
168
+ }
169
+ else if (c === '(') {
170
+ if (stack.length === 0 && seg.start === i)
171
+ seg.group = { open: i, close: -1 };
172
+ stack.push('(');
173
+ cmdStart = true;
174
+ }
175
+ else if (c === ')') {
176
+ if (ctx === 'A' && s[i + 1] === ')') {
177
+ stack.pop();
178
+ i++;
179
+ }
180
+ else if (ctx === '(')
181
+ stack.pop();
182
+ if (stack.length === 0 && seg.group && seg.group.close < 0)
183
+ seg.group.close = i;
184
+ }
185
+ else if (c === '{' && was && /\s/.test(s[i + 1] ?? '')) {
186
+ if (stack.length === 0 && seg.start === i)
187
+ seg.group = { open: i, close: -1 };
188
+ stack.push('{');
189
+ cmdStart = true;
190
+ }
191
+ else if (c === '}' && (ctx === '$' || (ctx === '{' && /[\s;&]/.test(s[i - 1] ?? '')))) {
192
+ stack.pop();
193
+ if (stack.length === 0 && seg.group && seg.group.close < 0)
194
+ seg.group.close = i;
195
+ }
196
+ else if (c === '[' && s[i + 1] === '[' && was && /\s/.test(s[i + 2] ?? '')) {
197
+ stack.push('[');
198
+ i++;
199
+ }
200
+ else if (c === ']' && s[i + 1] === ']' && ctx === '[') {
201
+ stack.pop();
202
+ i++;
203
+ }
204
+ else if (c === '#' && (i === 0 || /[\s;&|(]/.test(s[i - 1])) && ctx !== 'A' && ctx !== '$') {
205
+ const nl = s.indexOf('\n', i);
206
+ i = (nl < 0 ? s.length : nl) - 1;
207
+ }
208
+ else if (c === '<' && s[i + 1] === '<' && s[i + 2] !== '<' && s[i - 1] !== '<' && ctx !== 'A' && ctx !== '[') {
209
+ const m = HEREDOC_OPEN.exec(s.slice(i));
210
+ if (m) {
211
+ pending.push({ delim: m[2] ?? m[3] ?? m[4], strip: m[1] !== '', owner: stack.length === 0 && compound === 0 ? segs.length : null });
212
+ i += m[0].length - 1;
213
+ }
214
+ else
215
+ i++;
216
+ }
217
+ else if (stack.length === 0 && was) {
218
+ // A keyword only counts where a command starts.
219
+ const word = /^(?:[a-z]+|!)/.exec(s.slice(i, i + 7))?.[0] ?? '';
220
+ const kw = word && /^[\s;&|)]|^$/.test(s[i + word.length] ?? '') ? word : '';
221
+ if (compounds && OPEN_KW.has(kw)) {
222
+ compound++;
223
+ cmdStart = true;
224
+ i += kw.length - 1;
225
+ }
226
+ else if (compounds && compound > 0 && CLOSE_KW.has(kw)) {
227
+ compound--;
228
+ i += kw.length - 1;
229
+ }
230
+ else if (MID_KW.has(kw)) {
231
+ cmdStart = true;
232
+ i += kw.length - 1;
233
+ }
234
+ }
235
+ seg.end = Math.min(i + 1, s.length);
236
+ }
237
+ close('', false);
238
+ const last = segs[segs.length - 1];
239
+ if (last && last.sep !== '&')
240
+ last.sep = '';
241
+ return { segs, heredoc, newline, keep };
242
+ }
243
+ /** A piece's head text plus its detached heredoc bodies. */
244
+ export function pieceText(s, p) {
245
+ return [s.slice(p.start, p.end), ...p.bodies.map(([a, b]) => s.slice(a, b))].join('\n');
246
+ }
247
+ /**
248
+ * `s` with `ranges` removed, except what `keep` protects (heredoc bodies and
249
+ * the newline before them), trimmed.
250
+ */
251
+ export function cut(s, ranges, keep) {
252
+ const drop = new Uint8Array(s.length);
253
+ for (const [a, b] of ranges)
254
+ for (let i = Math.max(0, a); i < Math.min(b, s.length); i++)
255
+ drop[i] = 1;
256
+ for (const [a, b] of keep)
257
+ for (let i = Math.max(0, a); i <= Math.min(b, s.length - 1); i++)
258
+ drop[i] = 0;
259
+ let out = '';
260
+ for (let i = 0; i < s.length; i++)
261
+ if (!drop[i])
262
+ out += s[i];
263
+ return out.trim();
264
+ }
265
+ /** Words of one segment's head, split on unquoted spaces; quotes kept; a `#` comment is not a word. */
266
+ export function words(text) {
267
+ const out = [];
268
+ let i = 0;
269
+ while (i < text.length) {
270
+ // A backslash-newline joins lines: space between words.
271
+ while (i < text.length && (/\s/.test(text[i]) || (text[i] === '\\' && text[i + 1] === '\n')))
272
+ i += text[i] === '\\' ? 2 : 1;
273
+ if (i >= text.length)
274
+ break;
275
+ if (text[i] === "#") {
276
+ const nl = text.indexOf("\n", i);
277
+ if (nl < 0)
278
+ break;
279
+ i = nl;
280
+ continue;
281
+ }
282
+ const start = i;
283
+ let depth = 0;
284
+ for (; i < text.length; i++) {
285
+ const c = text[i];
286
+ if (c === '\\' && text[i + 1] === '\n' && depth === 0)
287
+ break;
288
+ if (c === '\\') {
289
+ i++;
290
+ continue;
291
+ }
292
+ if (c === "'") {
293
+ const q = text.indexOf("'", i + 1);
294
+ i = q < 0 ? text.length : q;
295
+ continue;
296
+ }
297
+ if (c === '"') {
298
+ let j = i + 1;
299
+ while (j < text.length && text[j] !== '"')
300
+ j += text[j] === '\\' ? 2 : 1;
301
+ i = j;
302
+ continue;
303
+ }
304
+ if (c === '(' || c === '{')
305
+ depth++;
306
+ else if ((c === ')' || c === '}') && depth > 0)
307
+ depth--;
308
+ else if (depth === 0 && /\s/.test(c))
309
+ break;
310
+ }
311
+ out.push(text.slice(start, i));
312
+ }
313
+ return out;
314
+ }
315
+ export const unquote = (w) => w.replace(/^(['"])([\s\S]*)\1$/, '$2');
316
+ export const base = (w) => unquote(w).replace(/\/+$/, '').split('/').pop() ?? '';
317
+ export const ASSIGN = /^[A-Za-z_][A-Za-z0-9_]*=/;
318
+ //# sourceMappingURL=shell-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-scan.js","sourceRoot":"","sources":["../../src/trace/shell-scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * What a simple command runs, under `shell.ts`: the program word after env
3
+ * prefixes and wrappers (`time`, `nice`, `nohup`, `command`, `env`, `sudo`,
4
+ * `timeout`, `script -q /dev/null`), two words for a runner (`git push`,
5
+ * `npm run`), and every simple command inside subshells, groups and loops.
6
+ *
7
+ * Nesting is read to a fixed depth: a command nested deeper than any real
8
+ * one gets the safe answer (no program, a step) instead of a stack overflow.
9
+ *
10
+ * The PreToolUse fast path loads this file through `shell.ts`: its only
11
+ * import is the lexer, which imports nothing.
12
+ */
13
+ import type { CallKind } from './types.js';
14
+ import { type Piece } from './shell-scan.js';
15
+ /** Deeper than any real command: past it, a reader gives its safe answer. */
16
+ export declare const MAX_DEPTH = 24;
17
+ export declare const RUNNERS: ReadonlySet<string>;
18
+ /** cd export source . echo printf sleep true false pwd clear set unset alias wait */
19
+ export declare const PLUMBING: ReadonlySet<string>;
20
+ export declare const shellOnly: (prog: string) => boolean;
21
+ /** Flags that take the next word as their value, per runner. */
22
+ export declare const VALUE_FLAGS: Record<string, ReadonlySet<string>>;
23
+ /** The words after `timeout [options] DURATION`, or null when `w` doesn't start that way. One pass over the words. */
24
+ export declare function afterTimeout(w: string[]): string[] | null;
25
+ /** The program words of one simple command: env prefixes and wrappers (time, nice, command, nohup, env, sudo, timeout, script -q /dev/null, !) gone. */
26
+ export declare function programWords(head: string): string[];
27
+ /** `bash -c 'script'` (also sh, zsh, dash, `-lc`, `-ec`): the script, unquoted; else null. */
28
+ export declare function shellScript(w: string[]): string | null;
29
+ /** A top-level `>`, `>>`, `&>`, `N>` or `>|` into a file other than /dev/null (quoted text and comments are not redirects). */
30
+ export declare function writesFile(head: string): boolean;
31
+ /** Interpreters whose program can come inline (`-e`, `-c`) or from a heredoc. */
32
+ export declare const INTERPRETERS: RegExp;
33
+ /**
34
+ * D51, D58 e: what an interpreter's script does. One line that starts a program is a step
35
+ * (`node -e "require('./scripts/release.js')"`); any other script is work when it writes files, starts
36
+ * programs or sends to the network, and a look when it only reads or prints (a GET that prints is a look). A script over several lines
37
+ * (a heredoc, a multi-line `-e`) is never a step: no one can run it from a skill line.
38
+ */
39
+ export declare function scriptKind(code: string, prog?: string): CallKind;
40
+ /** The code of `node -e CODE`, `python3 -c CODE`, `perl -ne CODE`, `php -r CODE`, `deno eval CODE` (unquoted); else null. */
41
+ export declare function inlineScript(w: string[]): string | null;
42
+ /** An interpreter fed its program by a heredoc (`python3 - <<'EOF'`, `node <<EOF`), not data for a script file. */
43
+ export declare function heredocInterpreter(w: string[]): string | null;
44
+ /** A loop or if, as the simple commands it runs (headers and closing words gone). */
45
+ export declare function keywordFree(text: string): string[];
46
+ export declare const stripKeywords: (text: string) => string;
47
+ /** The text inside a piece that is a subshell or group. */
48
+ export declare const groupInner: (s: string, p: Piece) => string;
49
+ /** The first segment's program that isn't plumbing (else the first plumbing one). */
50
+ export declare function programOfText(text: string, depth?: number): {
51
+ prog: string | null;
52
+ plumbing: boolean;
53
+ };
54
+ /** Every simple command in `cmd`, in order: subshells, groups, loops and ifs opened up; heredoc bodies left out. */
55
+ export declare function simpleCommands(cmd: string, depth?: number): string[];
56
+ /** One simple command with its env prefixes and wrappers (time, nice, command, nohup, env, sudo, timeout, script -q /dev/null, !) dropped. */
57
+ export declare function bareCommand(simple: string): string;
58
+ /** Whether one simple command that carries the text (or reads it from a pipe) leaves it unrun. */
59
+ type Quiet = <T>(head: string, bodies: string[], hitOf: (text: string) => T | null) => boolean;
60
+ /**
61
+ * D89: where a word the agent may not run (`skills on`) sits in `cmd`.
62
+ * `hitOf` says whether a piece of text carries it. Returns the hit of the
63
+ * first simple command that runs it: the program or a word the shell splits
64
+ * on its own (after `;`, `&&`, `|`, a wrapper, a renamed binary, a
65
+ * variable), text given to a shell or an interpreter (`sh -c`, `eval`,
66
+ * `| sh`, `python -c`, a heredoc into a shell), a substitution inside the
67
+ * quotes, or anything a carrying command pipes into that isn't itself a
68
+ * text program. Null when it sits only inside quoted arguments of text
69
+ * programs (grep, rg, ag, git commit/log/grep, echo, printf, sed, awk
70
+ * patterns, cat) or in a `$(cat <<'EOF' …)` body. `whole` is the answer
71
+ * when no single command carries it, or past `MAX_DEPTH`. Linear: one scan
72
+ * per nesting level.
73
+ */
74
+ export declare function quotedTextHit<T>(cmd: string, hitOf: (text: string) => T | null, whole: T, depth?: number, quiet?: Quiet): T | null;
75
+ /**
76
+ * D116 item 2: one simple command that only reads the files it names (grep, sed without -i or `e`, cat, a pager,
77
+ * head, tail, wc, git log/show/diff), with no substitution, no copy to a file and no flag that runs a program.
78
+ * Given to `quotedTextHit` as its `quiet`, a name sits unrun as such a command's argument or in what it reads.
79
+ */
80
+ export declare function readsFiles<T>(head: string, bodies: string[], _hitOf: (text: string) => T | null): boolean;
81
+ /**
82
+ * fix-lab5: one simple command that names a Trail hook script and leaves it unrun, as `quotedTextHit`'s quiet for the
83
+ * hook-script guard. A read (readsFiles); deleting it or a stale copy (`rm`), an existence test, `node --check`, git
84
+ * bookkeeping (add, checkout, commit …); code an interpreter is given that only edits text naming it (a python
85
+ * heredoc that rewrites a source file); a heredoc written to another file (`cat >> notes.md <<EOF`). Never when the
86
+ * shell substitutes something, a file is written to the hook (`cat > trail-hooks.cjs <<EOF`), or the code loads it or
87
+ * hands it to a child process. `hookNamed` is how the guard names one (risk.ts HOOK_SCRIPT).
88
+ */
89
+ export declare function hookUnrun<T>(head: string, bodies: string[], hitOf: (text: string) => T | null, hookNamed: (text: string) => boolean): boolean;
90
+ export {};
91
+ //# sourceMappingURL=shell-words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-words.d.ts","sourceRoot":"","sources":["../../src/trace/shell-words.ts"],"names":[],"mappings":"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"}