@taliesinb/mash 0.0.0-stage → 0.1.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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +275 -2
  3. package/bin/mash.ts +253 -0
  4. package/dist/bin/mash.d.ts +39 -0
  5. package/dist/bin/mash.d.ts.map +1 -0
  6. package/dist/bin/mash.js +281 -0
  7. package/dist/bin/mash.js.map +1 -0
  8. package/dist/src/analysis/analyze.d.ts +97 -0
  9. package/dist/src/analysis/analyze.d.ts.map +1 -0
  10. package/dist/src/analysis/analyze.js +1406 -0
  11. package/dist/src/analysis/analyze.js.map +1 -0
  12. package/dist/src/analysis/fs.d.ts +39 -0
  13. package/dist/src/analysis/fs.d.ts.map +1 -0
  14. package/dist/src/analysis/fs.js +117 -0
  15. package/dist/src/analysis/fs.js.map +1 -0
  16. package/dist/src/analysis/outputs.d.ts +16 -0
  17. package/dist/src/analysis/outputs.d.ts.map +1 -0
  18. package/dist/src/analysis/outputs.js +277 -0
  19. package/dist/src/analysis/outputs.js.map +1 -0
  20. package/dist/src/analysis/value.d.ts +76 -0
  21. package/dist/src/analysis/value.d.ts.map +1 -0
  22. package/dist/src/analysis/value.js +248 -0
  23. package/dist/src/analysis/value.js.map +1 -0
  24. package/dist/src/behaviors/defs/core.d.ts +15 -0
  25. package/dist/src/behaviors/defs/core.d.ts.map +1 -0
  26. package/dist/src/behaviors/defs/core.js +1084 -0
  27. package/dist/src/behaviors/defs/core.js.map +1 -0
  28. package/dist/src/behaviors/defs/devtools.d.ts +9 -0
  29. package/dist/src/behaviors/defs/devtools.d.ts.map +1 -0
  30. package/dist/src/behaviors/defs/devtools.js +432 -0
  31. package/dist/src/behaviors/defs/devtools.js.map +1 -0
  32. package/dist/src/behaviors/defs/macos.d.ts +12 -0
  33. package/dist/src/behaviors/defs/macos.d.ts.map +1 -0
  34. package/dist/src/behaviors/defs/macos.js +454 -0
  35. package/dist/src/behaviors/defs/macos.js.map +1 -0
  36. package/dist/src/behaviors/defs/tools.d.ts +9 -0
  37. package/dist/src/behaviors/defs/tools.d.ts.map +1 -0
  38. package/dist/src/behaviors/defs/tools.js +639 -0
  39. package/dist/src/behaviors/defs/tools.js.map +1 -0
  40. package/dist/src/behaviors/dsl.d.ts +95 -0
  41. package/dist/src/behaviors/dsl.d.ts.map +1 -0
  42. package/dist/src/behaviors/dsl.js +267 -0
  43. package/dist/src/behaviors/dsl.js.map +1 -0
  44. package/dist/src/behaviors/index.d.ts +12 -0
  45. package/dist/src/behaviors/index.d.ts.map +1 -0
  46. package/dist/src/behaviors/index.js +18 -0
  47. package/dist/src/behaviors/index.js.map +1 -0
  48. package/dist/src/behaviors/registry.d.ts +45 -0
  49. package/dist/src/behaviors/registry.d.ts.map +1 -0
  50. package/dist/src/behaviors/registry.js +266 -0
  51. package/dist/src/behaviors/registry.js.map +1 -0
  52. package/dist/src/behaviors/roles.d.ts +29 -0
  53. package/dist/src/behaviors/roles.d.ts.map +1 -0
  54. package/dist/src/behaviors/roles.js +198 -0
  55. package/dist/src/behaviors/roles.js.map +1 -0
  56. package/dist/src/behaviors/types.d.ts +120 -0
  57. package/dist/src/behaviors/types.d.ts.map +1 -0
  58. package/dist/src/behaviors/types.js +12 -0
  59. package/dist/src/behaviors/types.js.map +1 -0
  60. package/dist/src/index.d.ts +27 -0
  61. package/dist/src/index.d.ts.map +1 -0
  62. package/dist/src/index.js +24 -0
  63. package/dist/src/index.js.map +1 -0
  64. package/dist/src/integrations/deepsea.d.ts +121 -0
  65. package/dist/src/integrations/deepsea.d.ts.map +1 -0
  66. package/dist/src/integrations/deepsea.js +199 -0
  67. package/dist/src/integrations/deepsea.js.map +1 -0
  68. package/dist/src/machine.d.ts +139 -0
  69. package/dist/src/machine.d.ts.map +1 -0
  70. package/dist/src/machine.js +400 -0
  71. package/dist/src/machine.js.map +1 -0
  72. package/dist/src/parser/ast.d.ts +369 -0
  73. package/dist/src/parser/ast.d.ts.map +1 -0
  74. package/dist/src/parser/ast.js +17 -0
  75. package/dist/src/parser/ast.js.map +1 -0
  76. package/dist/src/parser/parser.d.ts +48 -0
  77. package/dist/src/parser/parser.d.ts.map +1 -0
  78. package/dist/src/parser/parser.js +1950 -0
  79. package/dist/src/parser/parser.js.map +1 -0
  80. package/dist/src/policy/effects.d.ts +86 -0
  81. package/dist/src/policy/effects.d.ts.map +1 -0
  82. package/dist/src/policy/effects.js +53 -0
  83. package/dist/src/policy/effects.js.map +1 -0
  84. package/dist/src/policy/policy.d.ts +130 -0
  85. package/dist/src/policy/policy.d.ts.map +1 -0
  86. package/dist/src/policy/policy.js +532 -0
  87. package/dist/src/policy/policy.js.map +1 -0
  88. package/dist/src/printer/doc.d.ts +151 -0
  89. package/dist/src/printer/doc.d.ts.map +1 -0
  90. package/dist/src/printer/doc.js +409 -0
  91. package/dist/src/printer/doc.js.map +1 -0
  92. package/dist/src/printer/highlight.d.ts +53 -0
  93. package/dist/src/printer/highlight.d.ts.map +1 -0
  94. package/dist/src/printer/highlight.js +339 -0
  95. package/dist/src/printer/highlight.js.map +1 -0
  96. package/dist/src/printer/html.d.ts +72 -0
  97. package/dist/src/printer/html.d.ts.map +1 -0
  98. package/dist/src/printer/html.js +423 -0
  99. package/dist/src/printer/html.js.map +1 -0
  100. package/dist/src/printer/print.d.ts +63 -0
  101. package/dist/src/printer/print.d.ts.map +1 -0
  102. package/dist/src/printer/print.js +484 -0
  103. package/dist/src/printer/print.js.map +1 -0
  104. package/dist/src/printer/summary.d.ts +50 -0
  105. package/dist/src/printer/summary.d.ts.map +1 -0
  106. package/dist/src/printer/summary.js +621 -0
  107. package/dist/src/printer/summary.js.map +1 -0
  108. package/dist/src/trace/events.d.ts +183 -0
  109. package/dist/src/trace/events.d.ts.map +1 -0
  110. package/dist/src/trace/events.js +9 -0
  111. package/dist/src/trace/events.js.map +1 -0
  112. package/dist/src/trace/progress.d.ts +58 -0
  113. package/dist/src/trace/progress.d.ts.map +1 -0
  114. package/dist/src/trace/progress.js +83 -0
  115. package/dist/src/trace/progress.js.map +1 -0
  116. package/dist/src/vm/arith.d.ts +29 -0
  117. package/dist/src/vm/arith.d.ts.map +1 -0
  118. package/dist/src/vm/arith.js +258 -0
  119. package/dist/src/vm/arith.js.map +1 -0
  120. package/dist/src/vm/builtins.d.ts +31 -0
  121. package/dist/src/vm/builtins.d.ts.map +1 -0
  122. package/dist/src/vm/builtins.js +1773 -0
  123. package/dist/src/vm/builtins.js.map +1 -0
  124. package/dist/src/vm/emulate.d.ts +75 -0
  125. package/dist/src/vm/emulate.d.ts.map +1 -0
  126. package/dist/src/vm/emulate.js +380 -0
  127. package/dist/src/vm/emulate.js.map +1 -0
  128. package/dist/src/vm/expand.d.ts +68 -0
  129. package/dist/src/vm/expand.d.ts.map +1 -0
  130. package/dist/src/vm/expand.js +744 -0
  131. package/dist/src/vm/expand.js.map +1 -0
  132. package/dist/src/vm/external.d.ts +34 -0
  133. package/dist/src/vm/external.d.ts.map +1 -0
  134. package/dist/src/vm/external.js +228 -0
  135. package/dist/src/vm/external.js.map +1 -0
  136. package/dist/src/vm/fifo.d.ts +66 -0
  137. package/dist/src/vm/fifo.d.ts.map +1 -0
  138. package/dist/src/vm/fifo.js +232 -0
  139. package/dist/src/vm/fifo.js.map +1 -0
  140. package/dist/src/vm/interp.d.ts +209 -0
  141. package/dist/src/vm/interp.d.ts.map +1 -0
  142. package/dist/src/vm/interp.js +1641 -0
  143. package/dist/src/vm/interp.js.map +1 -0
  144. package/dist/src/vm/io.d.ts +180 -0
  145. package/dist/src/vm/io.d.ts.map +1 -0
  146. package/dist/src/vm/io.js +502 -0
  147. package/dist/src/vm/io.js.map +1 -0
  148. package/dist/src/vm/pattern.d.ts +46 -0
  149. package/dist/src/vm/pattern.d.ts.map +1 -0
  150. package/dist/src/vm/pattern.js +498 -0
  151. package/dist/src/vm/pattern.js.map +1 -0
  152. package/dist/src/vm/proc.d.ts +94 -0
  153. package/dist/src/vm/proc.d.ts.map +1 -0
  154. package/dist/src/vm/proc.js +130 -0
  155. package/dist/src/vm/proc.js.map +1 -0
  156. package/dist/src/vm/state.d.ts +104 -0
  157. package/dist/src/vm/state.d.ts.map +1 -0
  158. package/dist/src/vm/state.js +233 -0
  159. package/dist/src/vm/state.js.map +1 -0
  160. package/dist/src/vm/test.d.ts +11 -0
  161. package/dist/src/vm/test.d.ts.map +1 -0
  162. package/dist/src/vm/test.js +277 -0
  163. package/dist/src/vm/test.js.map +1 -0
  164. package/package.json +63 -4
  165. package/src/analysis/analyze.ts +1395 -0
  166. package/src/analysis/fs.ts +121 -0
  167. package/src/analysis/outputs.ts +242 -0
  168. package/src/analysis/value.ts +264 -0
  169. package/src/behaviors/defs/core.ts +970 -0
  170. package/src/behaviors/defs/devtools.ts +400 -0
  171. package/src/behaviors/defs/macos.ts +426 -0
  172. package/src/behaviors/defs/tools.ts +596 -0
  173. package/src/behaviors/dsl.ts +293 -0
  174. package/src/behaviors/index.ts +19 -0
  175. package/src/behaviors/registry.ts +261 -0
  176. package/src/behaviors/roles.ts +187 -0
  177. package/src/behaviors/types.ts +127 -0
  178. package/src/index.ts +27 -0
  179. package/src/integrations/deepsea.ts +259 -0
  180. package/src/machine.ts +483 -0
  181. package/src/parser/ast.ts +472 -0
  182. package/src/parser/parser.ts +1826 -0
  183. package/src/policy/effects.ts +102 -0
  184. package/src/policy/policy.ts +578 -0
  185. package/src/printer/doc.ts +454 -0
  186. package/src/printer/highlight.ts +283 -0
  187. package/src/printer/html.ts +441 -0
  188. package/src/printer/print.ts +528 -0
  189. package/src/printer/summary.ts +601 -0
  190. package/src/trace/events.ts +102 -0
  191. package/src/trace/progress.ts +119 -0
  192. package/src/vm/arith.ts +236 -0
  193. package/src/vm/builtins.ts +1590 -0
  194. package/src/vm/emulate.ts +337 -0
  195. package/src/vm/expand.ts +721 -0
  196. package/src/vm/external.ts +265 -0
  197. package/src/vm/fifo.ts +226 -0
  198. package/src/vm/interp.ts +1623 -0
  199. package/src/vm/io.ts +570 -0
  200. package/src/vm/pattern.ts +477 -0
  201. package/src/vm/proc.ts +147 -0
  202. package/src/vm/state.ts +267 -0
  203. package/src/vm/test.ts +253 -0
@@ -0,0 +1,432 @@
1
+ /**
2
+ * Behavior definitions for developer tools: git, package managers,
3
+ * interpreters and build tools. Interpreters and build tools run arbitrary
4
+ * code, so they report `unknown` effects (and `complete: false`) — the OS
5
+ * sandbox stays responsible for confining them.
6
+ */
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import { concat, concrete, hole, known, knownPrefix } from "../../analysis/value.js";
10
+ const args = (inv) => inv.argv.slice(1);
11
+ /** Find the directory containing `marker` at or above `dir` (only for concrete paths). */
12
+ function findUp(dir, marker) {
13
+ let cur = dir;
14
+ for (;;) {
15
+ if (fs.existsSync(path.join(cur, marker)))
16
+ return cur;
17
+ const parent = path.dirname(cur);
18
+ if (parent === cur)
19
+ return undefined;
20
+ cur = parent;
21
+ }
22
+ }
23
+ const GIT_READ = new Set([
24
+ 'status', 'log', 'diff', 'show', 'rev-parse', 'ls-files', 'ls-tree', 'blame', 'grep', 'describe', 'shortlog', 'reflog',
25
+ 'cat-file', 'symbolic-ref', 'for-each-ref', 'merge-base', 'name-rev', 'rev-list', 'help', 'version', 'check-ignore',
26
+ 'whatchanged', 'count-objects', 'show-ref', 'var', 'verify-commit', 'difftool', 'range-diff', 'annotate', 'cherry',
27
+ 'diff-tree', 'diff-index', 'diff-files', 'fsck', 'show-branch', 'check-attr', 'check-ref-format', 'check-mailmap', 'verify-pack',
28
+ 'verify-tag', 'patch-id', 'get-tar-commit-id', 'column', 'fmt-merge-msg', 'stripspace', 'interpret-trailers', 'show-index',
29
+ ]);
30
+ const GIT_WRITE = new Set([
31
+ 'add', 'commit', 'checkout', 'switch', 'restore', 'reset', 'rm', 'mv', 'merge', 'rebase', 'cherry-pick', 'revert', 'stash',
32
+ 'init', 'apply', 'am', 'gc', 'update-index', 'notes', 'clean', 'worktree', 'prune', 'repack', 'update-ref', 'mergetool',
33
+ 'bisect', 'sparse-checkout', 'format-patch', 'commit-tree', 'read-tree', 'write-tree', 'hash-object', 'replace', 'restore',
34
+ 'maintenance', 'lfs',
35
+ ]);
36
+ const GIT_NETWORK = new Set(['fetch', 'pull', 'push', 'ls-remote', 'clone', 'submodule', 'remote']);
37
+ const GIT_NESTED = new Set(['stash', 'remote', 'worktree', 'submodule', 'bisect', 'notes', 'lfs', 'sparse-checkout', 'maintenance', 'reflog']);
38
+ /** Subcommands that read stdin (patches, object lists, messages): never cut off from it. */
39
+ const GIT_STDIN = new Set(['apply', 'am', 'hash-object', 'patch-id', 'stripspace', 'interpret-trailers', 'fmt-merge-msg', 'mktree', 'mailinfo', 'mailsplit', 'fast-import', 'pack-objects', 'unpack-objects', 'index-pack', 'credential', 'cat-file', 'update-index']);
40
+ function gitBehavior() {
41
+ return {
42
+ names: ['git'],
43
+ summary: 'version control',
44
+ analyze(inv, h) {
45
+ const r = analyzeGit(inv, h);
46
+ if (r.readsStdin === false) {
47
+ const a = args(inv).map((x) => concrete(x));
48
+ const sub = a.find((x) => x !== undefined && !x.startsWith('-'));
49
+ if ((sub && GIT_STDIN.has(sub)) || a.includes('--stdin') || a.includes('-') || a.includes('--batch') || a.includes('--batch-check'))
50
+ return { ...r, readsStdin: 'maybe' };
51
+ }
52
+ return r;
53
+ },
54
+ };
55
+ }
56
+ function analyzeGit(inv, h) {
57
+ {
58
+ {
59
+ const a = args(inv);
60
+ let cwd = inv.cwd;
61
+ let i = 0;
62
+ for (; i < a.length; i++) {
63
+ const s = concrete(a[i]);
64
+ if (s === undefined)
65
+ return { effects: [{ kind: 'unknown', detail: 'git with unknown arguments' }], complete: false, readsStdin: false };
66
+ if (s === '-C') {
67
+ const d = a[++i];
68
+ if (d)
69
+ cwd = h.resolve(d);
70
+ continue;
71
+ }
72
+ if (s === '-c' || s === '--git-dir' || s === '--work-tree' || s === '--namespace') {
73
+ i++;
74
+ continue;
75
+ }
76
+ if (s.startsWith('-'))
77
+ continue;
78
+ break;
79
+ }
80
+ const sub = concrete(a[i] ?? known('')) ?? '';
81
+ if (a[i])
82
+ h.role(a[i], 'subcommand');
83
+ // second-level subcommands: `git stash pop`, `git remote add`, `git worktree list`
84
+ if (GIT_NESTED.has(sub)) {
85
+ const next = a.slice(i + 1).find((x) => !knownPrefix(x).startsWith('-'));
86
+ if (next && /^[a-z][a-z-]*$/.test(concrete(next) ?? ''))
87
+ h.role(next, 'subcommand');
88
+ }
89
+ const rest = a.slice(i + 1);
90
+ const cwdStr = concrete(cwd);
91
+ const root = cwdStr ? findUp(cwdStr, '.git') : undefined;
92
+ const repo = root ? known(root) : cwdStr ? hole('path', 'git repository root') : hole('path', 'git repository root');
93
+ const effects = [];
94
+ const restOps = rest.filter((r) => !knownPrefix(r).startsWith('-'));
95
+ const hasFlag = (...f) => rest.some((r) => f.includes(concrete(r) ?? ''));
96
+ if (sub === '' || sub === '--version' || sub === 'version' || sub === 'help')
97
+ return { effects: [], readsStdin: false };
98
+ if (sub === 'config') {
99
+ const write = !hasFlag('--get', '--get-all', '--list', '-l', '--get-regexp', '--show-origin') && restOps.length >= 2;
100
+ if (hasFlag('--global'))
101
+ effects.push({ kind: write ? 'write' : 'read', path: { alts: [[...(h.home()?.alts[0] ?? ['~']), '/.gitconfig']] } });
102
+ else
103
+ effects.push({ kind: write ? 'write' : 'read', path: { alts: [[...repo.alts[0], '/.git/config']] } });
104
+ return { effects, readsStdin: false };
105
+ }
106
+ if (sub === 'branch' || sub === 'tag') {
107
+ const write = hasFlag('-d', '-D', '-m', '-M', '-c', '-C', '-a', '-s', '-f', '--delete', '--move', '--copy', '--set-upstream-to', '-u') || (restOps.length > 0 && !hasFlag('--list', '-l', '--contains', '--merged', '--no-merged', '--points-at'));
108
+ effects.push({ kind: write ? 'write' : 'read', path: repo, recursive: true });
109
+ return { effects, readsStdin: false };
110
+ }
111
+ if (sub === 'stash' && (restOps.length === 0 ? false : ['list', 'show'].includes(concrete(restOps[0]) ?? ''))) {
112
+ return { effects: [{ kind: 'read', path: repo, recursive: true }], readsStdin: false };
113
+ }
114
+ if (sub === 'remote' && !['add', 'remove', 'rm', 'rename', 'set-url', 'set-head', 'prune', 'update'].includes(concrete(restOps[0] ?? known('')) ?? '')) {
115
+ return { effects: [{ kind: 'read', path: repo, recursive: true }], readsStdin: false };
116
+ }
117
+ if (sub === 'merge-tree') {
118
+ // --write-tree (the default in modern git) stores the merged trees as objects
119
+ effects.push({ kind: 'read', path: repo, recursive: true });
120
+ if (!hasFlag('--trivial-merge'))
121
+ effects.push({ kind: 'write', path: { alts: [[...repo.alts[0], '/.git']] }, recursive: true, maybe: true });
122
+ return { effects, readsStdin: hasFlag('--stdin') };
123
+ }
124
+ if (sub === 'archive' || sub === 'bundle') {
125
+ effects.push({ kind: 'read', path: repo, recursive: true });
126
+ if (sub === 'archive') {
127
+ if (hasFlag('--remote') || rest.some((r) => knownPrefix(r).startsWith('--remote=')))
128
+ effects.push({ kind: 'network', detail: 'git archive --remote' });
129
+ for (let j = 0; j < rest.length; j++) {
130
+ const s = concrete(rest[j]) ?? '';
131
+ if ((s === '-o' || s === '--output') && rest[j + 1])
132
+ effects.push({ kind: 'write', path: h.resolve(rest[j + 1]) });
133
+ else if (s.startsWith('--output='))
134
+ effects.push({ kind: 'write', path: h.resolve(known(s.slice('--output='.length))) });
135
+ }
136
+ return { effects, readsStdin: false };
137
+ }
138
+ const verb = concrete(restOps[0] ?? known('')) ?? '';
139
+ const file = restOps[1];
140
+ if (verb === 'create' && file && concrete(file) !== '-')
141
+ effects.push({ kind: 'write', path: h.resolve(file) });
142
+ else if ((verb === 'verify' || verb === 'list-heads') && file)
143
+ effects.push({ kind: 'read', path: h.resolve(file) });
144
+ else if (verb === 'unbundle')
145
+ effects.push({ kind: 'write', path: repo, recursive: true });
146
+ else if (verb !== 'create')
147
+ return { effects: [...effects, { kind: 'unknown', detail: `git bundle ${verb}` }], readsStdin: 'maybe', complete: false };
148
+ return { effects, readsStdin: verb === 'unbundle' };
149
+ }
150
+ if (sub === 'filter-branch' || sub === 'credential' || sub === 'filter-repo') {
151
+ // filters and credential helpers are shell commands
152
+ return { effects: [{ kind: 'write', path: repo, recursive: true }, { kind: 'unknown', detail: `git ${sub} runs commands` }], readsStdin: 'maybe', complete: false };
153
+ }
154
+ if (GIT_READ.has(sub)) {
155
+ effects.push({ kind: 'read', path: repo, recursive: true });
156
+ return { effects, readsStdin: false, stdout: sub === 'rev-parse' && hasFlag('--show-toplevel') ? { type: 'path', value: root ? known(root) : undefined } : undefined };
157
+ }
158
+ if (sub === 'clone') {
159
+ const cp = h.parseArgs(rest, {
160
+ short: 'lsqvn', shortWithArg: 'bojcu',
161
+ long: { depth: true, branch: '=b', origin: '=o', config: '=c', reference: true, 'reference-if-able': true, 'separate-git-dir': true, 'upload-pack': '=u', template: true, filter: true, jobs: '=j', 'shallow-since': true, 'shallow-exclude': true, 'bundle-uri': true, 'server-option': true, 'ref-format': true, recursive: false, 'recurse-submodules': true, 'single-branch': false, 'no-single-branch': false, 'no-tags': false, 'shallow-submodules': false, bare: false, mirror: false, quiet: false, verbose: false, progress: false, 'no-checkout': false, local: false, shared: false, dissociate: false, sparse: false, 'also-filter-submodules': false, 'remote-submodules': false, 'no-hardlinks': false, 'no-reject-shallow': false, 'reject-shallow': false },
162
+ });
163
+ const [url, dir] = cp.operands;
164
+ const dest = dir ? h.resolve(dir) : { alts: cwd.alts.map((c) => [...c, '/', hole('filename', 'repository name').alts[0][0]]) };
165
+ if (url)
166
+ effects.push({ kind: 'network', target: url, detail: 'git clone' });
167
+ effects.push({ kind: 'write', path: dest, recursive: true });
168
+ const sep = cp.flags.get('separate-git-dir');
169
+ if (sep && sep !== true)
170
+ effects.push({ kind: 'write', path: h.resolve(sep), recursive: true });
171
+ // --upload-pack runs a command
172
+ return { effects, readsStdin: false, complete: cp.unknownFlags.length === 0 && !cp.flags.has('u') };
173
+ }
174
+ if (sub === 'init') {
175
+ effects.push({ kind: 'write', path: restOps[0] ? h.resolve(restOps[0]) : cwd, recursive: true });
176
+ return { effects, readsStdin: false };
177
+ }
178
+ if (GIT_NETWORK.has(sub)) {
179
+ effects.push({ kind: 'network', detail: `git ${sub}` });
180
+ if (sub !== 'push' && sub !== 'ls-remote')
181
+ effects.push({ kind: 'write', path: repo, recursive: true });
182
+ else
183
+ effects.push({ kind: 'read', path: repo, recursive: true });
184
+ if (sub === 'push')
185
+ effects.push({ kind: 'write', path: { alts: [[...repo.alts[0], '/.git']] }, recursive: true });
186
+ return { effects, readsStdin: false };
187
+ }
188
+ if (GIT_WRITE.has(sub)) {
189
+ effects.push({ kind: 'write', path: repo, recursive: true });
190
+ if (sub === 'clean' && (hasFlag('-f', '-ff', '-fd', '-fdx', '-df', '-xdf', '--force')))
191
+ effects.push({ kind: 'delete', path: cwd, recursive: true });
192
+ // `--fixup=<commit>` needs no message (`--fixup=amend:`/`reword:` open an editor)
193
+ const fixup = rest.some((r) => /^--fixup=(?!amend:|reword:)./.test(concrete(r) ?? ''));
194
+ if (sub === 'commit' && !fixup && !hasFlag('-m', '-F', '--message', '--file', '-C', '--no-edit') && !rest.some((r) => /^-[a-zA-Z]*m|^--(message|file|reuse-message)=/.test(knownPrefix(r)))) {
195
+ effects.push({ kind: 'unknown', detail: 'git commit may open an editor' });
196
+ return { effects, readsStdin: false, complete: false };
197
+ }
198
+ return { effects, readsStdin: false };
199
+ }
200
+ return { effects: [{ kind: 'read', path: repo, recursive: true }, { kind: 'unknown', detail: `git ${sub}` }], complete: false, readsStdin: 'maybe' };
201
+ }
202
+ }
203
+ }
204
+ const PM_INSTALL = new Set(['install', 'i', 'ci', 'add', 'remove', 'rm', 'uninstall', 'un', 'update', 'up', 'upgrade', 'link', 'unlink', 'prune', 'dedupe', 'rebuild', 'import']);
205
+ const PM_READ = new Set(['ls', 'list', 'view', 'info', 'show', 'outdated', 'why', 'explain', 'audit', 'search', 'config', 'get', 'root', 'bin', 'prefix', 'whoami', 'help', '-v', '--version', 'version', '-h', '--help', 'doctor', 'licenses']);
206
+ function packageManager() {
207
+ return {
208
+ names: ['npm', 'pnpm', 'yarn', 'bun', 'npx', 'pnpx', 'bunx', 'uvx'],
209
+ summary: 'JavaScript package managers',
210
+ analyze(inv, h) {
211
+ const a = args(inv);
212
+ if (inv.name === 'npx' || inv.name === 'pnpx' || inv.name === 'bunx' || inv.name === 'uvx') {
213
+ // npx [-y] [-p pkg] <binary> args…: the binary is analyzed like any command
214
+ let j = 0;
215
+ for (; j < a.length; j++) {
216
+ const s = concrete(a[j]);
217
+ if (s === undefined || !s.startsWith('-'))
218
+ break;
219
+ if (['-p', '--package', '--from', '--with', '--python', '--with-requirements', '--index-url', '--index'].includes(s))
220
+ j++;
221
+ }
222
+ const net = { kind: 'network', detail: `${inv.name} may download packages` };
223
+ if (j >= a.length || concrete(a[j]) === undefined)
224
+ return { effects: [net, { kind: 'unknown', detail: `${inv.name} runs package binaries` }], complete: false, readsStdin: 'maybe' };
225
+ const sub = h.subcommand(a.slice(j));
226
+ return { ...sub, effects: [net, ...sub.effects], complete: false };
227
+ }
228
+ let i = 0;
229
+ let dir = inv.cwd;
230
+ for (; i < a.length; i++) {
231
+ const s = concrete(a[i]);
232
+ if (s === undefined)
233
+ break;
234
+ if (s === '-C' || s === '--dir' || s === '--prefix' || s === '--cwd') {
235
+ const d = a[++i];
236
+ if (d)
237
+ dir = h.resolve(d);
238
+ continue;
239
+ }
240
+ if (s === '--filter' || s === '-F' || s === '-w' || s === '--workspace') {
241
+ i++;
242
+ continue;
243
+ }
244
+ if (s.startsWith('-') && !PM_READ.has(s))
245
+ continue;
246
+ break;
247
+ }
248
+ const sub = concrete(a[i] ?? known('')) ?? (a[i] ? '?' : '');
249
+ if (a[i] && sub !== '?' && !sub.startsWith('-')) {
250
+ h.role(a[i], 'subcommand');
251
+ // `npm run build`, `pnpm exec tsc`: the script or binary is a subcommand too
252
+ if (['run', 'run-script', 'exec', 'x', 'dlx'].includes(sub) && a[i + 1] && !knownPrefix(a[i + 1]).startsWith('-'))
253
+ h.role(a[i + 1], 'subcommand');
254
+ }
255
+ const global = a.some((x) => ['-g', '--global'].includes(concrete(x) ?? ''));
256
+ if (PM_READ.has(sub))
257
+ return { effects: [{ kind: 'read', path: dir, recursive: true, maybe: true }, ...(sub === 'view' || sub === 'info' || sub === 'outdated' || sub === 'audit' || sub === 'search' ? [{ kind: 'network', detail: `${inv.name} ${sub}` }] : [])], readsStdin: false };
258
+ if (PM_INSTALL.has(sub) || (sub === '' && inv.name !== 'npm')) {
259
+ const effects = [
260
+ { kind: 'network', detail: `${inv.name} ${sub || 'install'}` },
261
+ { kind: 'write', path: global ? hole('path', 'global package directory') : dir, recursive: true },
262
+ { kind: 'unknown', detail: 'install scripts may run arbitrary code' },
263
+ ];
264
+ return { effects, readsStdin: false, complete: false };
265
+ }
266
+ // run / exec / test / start / custom scripts
267
+ return { effects: [{ kind: 'read', path: dir, recursive: true, maybe: true }, { kind: 'unknown', detail: `${inv.name} ${sub} runs project scripts` }], readsStdin: 'maybe', complete: false };
268
+ },
269
+ };
270
+ }
271
+ function interpreter(names, codeFlags, argFlags) {
272
+ return {
273
+ names,
274
+ summary: 'language interpreter',
275
+ analyze(inv, h) {
276
+ const a = args(inv);
277
+ for (let i = 0; i < a.length; i++) {
278
+ const s = concrete(a[i]);
279
+ if (s === undefined)
280
+ break;
281
+ if (s === '--version' || s === '-V' || s === '-version' || (s === '-v' && names.includes('node')))
282
+ return { effects: [], readsStdin: false };
283
+ if (codeFlags.includes(s)) {
284
+ if (a[i + 1])
285
+ h.role(a[i + 1], 'code');
286
+ return { effects: [{ kind: 'unknown', detail: `${inv.name} ${s} runs inline code` }], readsStdin: 'maybe', complete: false };
287
+ }
288
+ if (s === '-m' && names.includes('python3')) {
289
+ const mod = concrete(a[i + 1] ?? known('')) ?? '';
290
+ // `python3 -m pip install x`: the module and its first operand read as subcommands
291
+ if (a[i + 1])
292
+ h.role(a[i + 1], 'subcommand');
293
+ const op = a.slice(i + 2).find((x) => !knownPrefix(x).startsWith('-'));
294
+ if (op && mod === 'pip' && /^[a-z][a-z-]*$/.test(concrete(op) ?? ''))
295
+ h.role(op, 'subcommand');
296
+ if (mod === 'pip') {
297
+ const sub = concrete(a[i + 2] ?? known('')) ?? '';
298
+ if (['install', 'uninstall', 'download', 'wheel'].includes(sub))
299
+ return { effects: [{ kind: 'network', detail: 'pip' }, { kind: 'write', path: hole('path', 'python site-packages') }, { kind: 'unknown', detail: 'package build scripts' }], complete: false, readsStdin: false };
300
+ return { effects: [{ kind: 'read', path: hole('path', 'python site-packages') }], readsStdin: false };
301
+ }
302
+ if (mod === 'venv') {
303
+ const d = a.slice(i + 2).find((x) => !knownPrefix(x).startsWith('-'));
304
+ return { effects: d ? [{ kind: 'write', path: h.resolve(d), recursive: true }] : [], readsStdin: false };
305
+ }
306
+ if (mod === 'json.tool')
307
+ return { effects: a.slice(i + 2).filter((x) => !knownPrefix(x).startsWith('-')).map((f) => ({ kind: 'read', path: h.resolve(f) })), readsStdin: true };
308
+ return { effects: [{ kind: 'unknown', detail: `python module ${mod}` }], readsStdin: 'maybe', complete: false };
309
+ }
310
+ if (argFlags.includes(s)) {
311
+ i++;
312
+ continue;
313
+ }
314
+ if (s.startsWith('-'))
315
+ continue;
316
+ if (s === '-')
317
+ break;
318
+ return { effects: [{ kind: 'read', path: h.resolve(a[i]) }, { kind: 'unknown', detail: `runs script ${s}` }], readsStdin: 'maybe', complete: false };
319
+ }
320
+ return { effects: [{ kind: 'unknown', detail: `${inv.name} reads a program from stdin` }], readsStdin: true, complete: false };
321
+ },
322
+ };
323
+ }
324
+ function buildTool(names) {
325
+ return {
326
+ names,
327
+ summary: 'build tool',
328
+ analyze(inv, h) {
329
+ const a = args(inv);
330
+ if (a.some((x) => ['--version', '-v', 'version', '--help'].includes(concrete(x) ?? '')) && a.length === 1)
331
+ return { effects: [], readsStdin: false };
332
+ let dir = inv.cwd;
333
+ for (let i = 0; i < a.length; i++)
334
+ if (['-C', '--directory'].includes(concrete(a[i]) ?? '') && a[i + 1])
335
+ dir = h.resolve(a[i + 1]);
336
+ return { effects: [{ kind: 'read', path: dir, recursive: true, maybe: true }, { kind: 'write', path: dir, recursive: true, maybe: true }, { kind: 'unknown', detail: `${inv.name} runs build recipes` }], readsStdin: false, complete: false };
337
+ },
338
+ };
339
+ }
340
+ function systemPackageManager(names, roots) {
341
+ return {
342
+ names,
343
+ summary: 'system package manager',
344
+ analyze(inv) {
345
+ const sub = concrete(args(inv).find((x) => !knownPrefix(x).startsWith('-')) ?? known('')) ?? '';
346
+ if (['install', 'upgrade', 'remove', 'uninstall', 'reinstall', 'update', 'tap', 'link', 'unlink', 'cleanup', 'autoremove', 'purge'].includes(sub)) {
347
+ return { effects: [{ kind: 'network', detail: `${inv.name} ${sub}` }, ...roots.map((r) => ({ kind: 'write', path: known(r), recursive: true }))], readsStdin: false };
348
+ }
349
+ return { effects: roots.map((r) => ({ kind: 'read', path: known(r), recursive: true })), readsStdin: false };
350
+ },
351
+ };
352
+ }
353
+ /** Where CLIs keep their credentials (relative to HOME), and the subcommands that print them. */
354
+ const CREDENTIAL_STORES = {
355
+ gh: { stores: ['.config/gh'], secret: /^auth (token|status)/ },
356
+ glab: { stores: ['.config/glab-cli'], secret: /^(auth status|config get token)/ },
357
+ aws: { stores: ['.aws'], secret: /^(configure (get|list|export-credentials)|sts get-session-token|ecr get-login-password|ecr-public get-login-password|codeartifact get-authorization-token)/ },
358
+ gcloud: { stores: ['.config/gcloud'], secret: /^(auth (print-access-token|print-identity-token|application-default print-access-token)|config config-helper)/ },
359
+ az: { stores: ['.azure'], secret: /^account get-access-token/ },
360
+ kubectl: { stores: ['.kube'], secret: /^config view/ },
361
+ helm: { stores: ['.kube'], secret: /(?!)/ },
362
+ docker: { stores: ['.docker/config.json'], secret: /^(login|logout|credential)/ },
363
+ podman: { stores: ['.docker/config.json'], secret: /^(login|logout)/ },
364
+ heroku: { stores: ['.netrc'], secret: /^(auth:token|auth token)/ },
365
+ op: { stores: ['.config/op'], secret: /^(read|inject|item get|document get|run|signin|account get)/ },
366
+ doctl: { stores: ['.config/doctl'], secret: /^auth/ },
367
+ vault: { stores: ['.vault-token'], secret: /^(read|kv get|token lookup|print token|login)/ },
368
+ terraform: { stores: ['.terraform.d/credentials.tfrc.json'], secret: /^login/ },
369
+ tofu: { stores: ['.terraform.d/credentials.tfrc.json'], secret: /^login/ },
370
+ };
371
+ export const devtoolBehaviors = [
372
+ gitBehavior(),
373
+ packageManager(),
374
+ interpreter(['python', 'python3', 'python2'], ['-c'], ['-W', '-X', '-Q']),
375
+ interpreter(['node', 'deno', 'tsx', 'ts-node'], ['-e', '--eval', '-p', '--print'], ['-r', '--require', '--import', '--loader']),
376
+ interpreter(['ruby'], ['-e'], ['-r', '-I']),
377
+ interpreter(['perl'], ['-e', '-E'], ['-I', '-M']),
378
+ interpreter(['php'], ['-r'], ['-d']),
379
+ interpreter(['java', 'kotlin', 'scala', 'groovy', 'jshell'], [], ['-cp', '-classpath', '--class-path', '-p', '--module-path', '-jar', '-D']),
380
+ interpreter(['lua', 'luajit', 'Rscript', 'julia'], ['-e', '--eval'], ['-l']),
381
+ buildTool(['make', 'gmake', 'cmake', 'ninja', 'cargo', 'go', 'mvn', 'gradle', 'gradlew', 'bazel', 'xcodebuild', 'swift', 'rustc', 'gcc', 'cc', 'clang', 'g++', 'clang++', 'tsc', 'vite', 'webpack', 'esbuild', 'vitest', 'jest', 'pytest', 'tox', 'swiftc', 'zig', 'ld', 'javac', 'kotlinc', 'svelte-check', 'svelte-kit', 'next', 'nuxt', 'astro', 'rollup', 'parcel', 'turbo', 'nx', 'playwright', 'mocha', 'ava', 'eslint', 'prettier', 'stylelint', 'xcodegen', 'tuist', 'bundle', 'rake', 'mix', 'dotnet', 'sbt', 'lein', 'stack', 'cabal', 'ghc', 'dune', 'nim', 'crystal', 'meson', 'scons', 'just', 'task']),
382
+ systemPackageManager(['brew'], ['/opt/homebrew', '/usr/local']),
383
+ systemPackageManager(['apt', 'apt-get', 'dpkg', 'yum', 'dnf', 'apk', 'pacman', 'zypper'], ['/usr', '/var/lib', '/etc']),
384
+ {
385
+ names: ['pip', 'pip3', 'uv', 'pipx', 'poetry', 'conda'],
386
+ summary: 'Python package managers',
387
+ analyze(inv, h) {
388
+ const sub = concrete(args(inv).find((x) => !knownPrefix(x).startsWith('-')) ?? known('')) ?? '';
389
+ if (['install', 'uninstall', 'add', 'remove', 'sync', 'lock', 'update', 'upgrade', 'download', 'venv', 'create'].includes(sub)) {
390
+ return { effects: [{ kind: 'network', detail: `${inv.name} ${sub}` }, { kind: 'write', path: inv.name === 'pip' || inv.name === 'pip3' ? hole('path', 'python site-packages') : inv.cwd, recursive: true }, { kind: 'unknown', detail: 'package build scripts' }], complete: false, readsStdin: false };
391
+ }
392
+ if (['run', 'exec', 'shell'].includes(sub))
393
+ return { effects: [{ kind: 'unknown', detail: `${inv.name} ${sub}` }], complete: false, readsStdin: 'maybe' };
394
+ return { effects: [{ kind: 'read', path: inv.cwd, recursive: true }], readsStdin: false };
395
+ },
396
+ },
397
+ {
398
+ names: ['docker', 'podman', 'container', 'docker-compose', 'kubectl', 'helm', 'terraform', 'tofu', 'pulumi', 'gcloud', 'aws', 'az', 'gh', 'glab', 'vercel', 'fly', 'flyctl', 'heroku', 'wrangler', 'firebase', 'supabase', 'stripe', 'op', 'doctl', 'vault'],
399
+ summary: 'cloud / container CLIs',
400
+ analyze(inv, h) {
401
+ const a = args(inv);
402
+ const sub = concrete(a.find((x) => !knownPrefix(x).startsWith('-')) ?? known('')) ?? '';
403
+ if (a.length === 1 && ['--version', '-v', 'version', 'help', '--help', '-h'].includes(concrete(a[0]) ?? ''))
404
+ return { effects: [], readsStdin: false };
405
+ const effects = [{ kind: 'network', detail: `${inv.name} ${sub}` }];
406
+ // the credential store: read by (nearly) every call, definitely by the commands that print secrets
407
+ const cred = CREDENTIAL_STORES[inv.name];
408
+ if (cred) {
409
+ const words = a.map((x) => concrete(x) ?? '?').filter((w) => !w.startsWith('-')).join(' ');
410
+ const secret = cred.secret.test(words);
411
+ for (const store of cred.stores) {
412
+ const path = store.startsWith('/') ? known(store) : concat(h.home() ?? known('~'), known('/' + store));
413
+ effects.push({ kind: 'read', path, recursive: true, ...(secret ? {} : { maybe: true }) });
414
+ }
415
+ }
416
+ effects.push({ kind: 'unknown', detail: `${inv.name} ${sub} acts on remote or container state` });
417
+ return { effects, complete: false, readsStdin: 'maybe' };
418
+ },
419
+ },
420
+ {
421
+ names: ['open', 'xdg-open', 'osascript', 'say', 'pbcopy', 'pbpaste', 'systemctl', 'afplay', 'shortcuts', 'automator'],
422
+ summary: 'desktop / system integration',
423
+ analyze(inv) {
424
+ if (inv.name === 'pbpaste' || inv.name === 'say')
425
+ return { effects: [], readsStdin: inv.name === 'say' };
426
+ if (inv.name === 'pbcopy')
427
+ return { effects: [{ kind: 'process', detail: 'writes the clipboard' }], readsStdin: true };
428
+ return { effects: [{ kind: 'unknown', detail: `${inv.name} acts outside the shell` }], complete: false, readsStdin: false };
429
+ },
430
+ },
431
+ ];
432
+ //# sourceMappingURL=devtools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools.js","sourceRoot":"","sources":["../../../../src/behaviors/defs/devtools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Behavior definitions for macOS system tools (most also describe their BSD
3
+ * or Linux namesakes well enough): preferences and property lists, launchd,
4
+ * code signing, network configuration, Spotlight, disk images, diagnostics.
5
+ *
6
+ * Query forms are modeled precisely; forms that change system state the
7
+ * policy has no vocabulary for (network settings, services, firewall) are
8
+ * `unknown` with `complete: false`.
9
+ */
10
+ import type { Behavior } from '../types.ts';
11
+ export declare const macosBehaviors: Behavior[];
12
+ //# sourceMappingURL=macos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macos.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/defs/macos.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,aAAa,CAAA;AAwZxE,eAAO,MAAM,cAAc,EAAE,QAAQ,EAGpC,CAAA"}