@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,454 @@
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 { concat, concrete, hole, known, knownPrefix } from "../../analysis/value.js";
11
+ import { define } from "../dsl.js";
12
+ const args = (inv) => inv.argv.slice(1);
13
+ const isDash = (v) => concrete(v) === '-';
14
+ const QUERY = { anyFlags: true, operands: 'arg*', stdin: false };
15
+ const opaque = (detail) => ({ anyFlags: true, operands: 'arg*', opaque: detail, stdin: 'maybe' });
16
+ /** Commands that only print system information. */
17
+ function info(names, summary) {
18
+ return { names, summary, analyze: () => ({ effects: [], readsStdin: false }) };
19
+ }
20
+ /** A tool whose first word decides: query words are read-only, others change system state. */
21
+ function queryOrChange(names, summary, query, change) {
22
+ return {
23
+ names,
24
+ summary,
25
+ analyze(inv, h) {
26
+ const a = args(inv);
27
+ const first = a.find((x) => knownPrefix(x) !== '' && !/^-(n|v|q)$/.test(concrete(x) ?? ''));
28
+ const w = first === undefined ? '' : concrete(first);
29
+ if (w === undefined)
30
+ return { effects: [{ kind: 'unknown', detail: `${inv.name} with unknown arguments` }], readsStdin: false, complete: false };
31
+ if (first && /^[a-z]/.test(w))
32
+ h.role(first, 'subcommand');
33
+ if (query.test(w))
34
+ return { effects: [], readsStdin: false };
35
+ return { effects: [{ kind: 'unknown', detail: `${inv.name} ${w}: ${change}` }], readsStdin: false, complete: false };
36
+ },
37
+ };
38
+ }
39
+ const home = (h, rest) => concat(h.home() ?? known('~'), known(rest));
40
+ // ---------------------------------------------------------------------------
41
+ // preferences and property lists
42
+ // ---------------------------------------------------------------------------
43
+ /** defaults [-currentHost | -host H] VERB [DOMAIN] …; a domain may be a plist path. */
44
+ const defaults = {
45
+ names: ['defaults'],
46
+ summary: 'user preferences',
47
+ analyze(inv, h) {
48
+ const a = [...args(inv)];
49
+ while (a.length > 0 && /^-(currentHost|host)$/.test(concrete(a[0]) ?? ''))
50
+ a.splice(0, concrete(a[0]) === '-host' ? 2 : 1);
51
+ const verb = concrete(a[0] ?? known('')) ?? '?';
52
+ if (a[0])
53
+ h.role(a[0], 'subcommand');
54
+ const rest = a.slice(1).filter((x) => !/^-(g|globalDomain|app)$/.test(concrete(x) ?? ''));
55
+ const domain = rest[0];
56
+ const prefs = home(h, '/Library/Preferences');
57
+ // a domain given as a path names that plist (without .plist)
58
+ const target = () => {
59
+ if (!domain || !/^[/~.]/.test(knownPrefix(domain)))
60
+ return prefs;
61
+ const s = concrete(domain);
62
+ return s !== undefined && !s.endsWith('.plist') ? h.resolve(known(s + '.plist')) : h.resolve(domain);
63
+ };
64
+ const isPrefs = (v) => v === prefs;
65
+ if (/^(read|read-type|find|domains|help)$/.test(verb)) {
66
+ const t = target();
67
+ return { effects: [{ kind: 'read', path: t, ...(isPrefs(t) ? { recursive: true } : {}) }], readsStdin: false };
68
+ }
69
+ if (verb === 'export') {
70
+ const t = target();
71
+ const out = rest[1];
72
+ const effects = [{ kind: 'read', path: t, ...(isPrefs(t) ? { recursive: true } : {}) }];
73
+ if (out && !isDash(out))
74
+ effects.push({ kind: 'write', path: h.resolve(out) });
75
+ return { effects, readsStdin: false };
76
+ }
77
+ if (/^(write|delete|rename|import)$/.test(verb)) {
78
+ const t = target();
79
+ const effects = [{ kind: 'write', path: t, ...(isPrefs(t) ? { recursive: true } : {}) }];
80
+ if (verb === 'import' && rest[1]) {
81
+ if (isDash(rest[1]))
82
+ return { effects, readsStdin: true };
83
+ effects.push({ kind: 'read', path: h.resolve(rest[1]) });
84
+ }
85
+ return { effects, readsStdin: false };
86
+ }
87
+ return { effects: [{ kind: 'unknown', detail: `defaults ${verb}` }], readsStdin: false, complete: false };
88
+ },
89
+ };
90
+ /** plutil: -p/-lint/-type read; -convert/-extract/-insert/-replace/-remove rewrite in place unless -o. */
91
+ const PLUTIL_MODES = { '-p': 0, '-lint': 0, '-help': 0, '-type': 1, '-convert': 1, '-extract': 2, '-insert': 3, '-replace': 3, '-remove': 1, '-create': 1 };
92
+ const plutil = {
93
+ names: ['plutil'],
94
+ summary: 'property list utility',
95
+ analyze(inv, h) {
96
+ const a = args(inv);
97
+ let mode = '-lint';
98
+ let out;
99
+ let ext;
100
+ const files = [];
101
+ let complete = true;
102
+ for (let i = 0; i < a.length; i++) {
103
+ const s = concrete(a[i]);
104
+ if (s === undefined) {
105
+ files.push(a[i]);
106
+ continue;
107
+ }
108
+ if (s in PLUTIL_MODES) {
109
+ mode = s;
110
+ // `-insert KEY -TYPE VALUE`, `-extract KEYPATH FMT`, `-convert FMT`
111
+ i += PLUTIL_MODES[s];
112
+ continue;
113
+ }
114
+ if (s === '-o')
115
+ out = a[++i];
116
+ else if (s === '-e')
117
+ ext = a[++i];
118
+ else if (s === '-s' || s === '-r' || s === '-n' || s === '--' || s === '-x' || s === '-json' || s === '-xml1' || s === '-binary1' || s === '-raw' || s === '-expect') {
119
+ if (s === '-expect')
120
+ i++;
121
+ }
122
+ else if (s.startsWith('-') && s !== '-')
123
+ complete = false;
124
+ else
125
+ files.push(a[i]);
126
+ }
127
+ const effects = [];
128
+ let readsStdin = false;
129
+ for (const f of files) {
130
+ if (isDash(f))
131
+ readsStdin = true;
132
+ else
133
+ effects.push({ kind: 'read', path: h.resolve(f) });
134
+ }
135
+ if (!['-p', '-lint', '-help', '-type'].includes(mode)) {
136
+ if (out) {
137
+ if (!isDash(out))
138
+ effects.push({ kind: 'write', path: h.resolve(out) });
139
+ }
140
+ else if (ext) {
141
+ for (const f of files)
142
+ if (!isDash(f))
143
+ effects.push({ kind: 'write', path: concat(h.resolve(f), known('.'), ext) });
144
+ }
145
+ else
146
+ for (const f of files)
147
+ if (!isDash(f))
148
+ effects.push({ kind: 'write', path: h.resolve(f) });
149
+ }
150
+ return { effects, readsStdin, complete };
151
+ },
152
+ };
153
+ /** PlistBuddy [-x] [-c CMD]... FILE */
154
+ const plistBuddy = {
155
+ names: ['PlistBuddy'],
156
+ summary: 'edit property lists',
157
+ analyze(inv, h) {
158
+ const a = args(inv);
159
+ const cmds = [];
160
+ let file;
161
+ for (let i = 0; i < a.length; i++) {
162
+ const s = concrete(a[i]);
163
+ if (s === '-c') {
164
+ if (a[i + 1])
165
+ h.role(a[i + 1], 'code');
166
+ cmds.push(a[++i]);
167
+ }
168
+ else if (s === '-x' || s === '-h')
169
+ continue;
170
+ else
171
+ file = a[i];
172
+ }
173
+ if (!file)
174
+ return { effects: [], readsStdin: false };
175
+ const path = h.resolve(file);
176
+ if (cmds.length === 0)
177
+ return { effects: [{ kind: 'read', path }, { kind: 'write', path, maybe: true }, { kind: 'unknown', detail: 'interactive PlistBuddy commands' }], readsStdin: true, complete: false };
178
+ const effects = [{ kind: 'read', path }];
179
+ let complete = true;
180
+ let writes = false;
181
+ for (const c of cmds) {
182
+ const t = c ? concrete(c) : undefined;
183
+ if (t === undefined) {
184
+ complete = false;
185
+ writes = true;
186
+ continue;
187
+ }
188
+ const verb = t.trim().split(/\s+/)[0]?.toLowerCase() ?? '';
189
+ if (verb === 'print' || verb === 'help' || verb === 'exit')
190
+ continue;
191
+ if (verb === 'merge' || verb === 'import')
192
+ complete = false; // reads another file
193
+ writes = true;
194
+ }
195
+ if (writes)
196
+ effects.push({ kind: 'write', path, ...(complete ? {} : { maybe: true }) });
197
+ return { effects, readsStdin: false, complete };
198
+ },
199
+ };
200
+ // ---------------------------------------------------------------------------
201
+ // launchd, Xcode, signing
202
+ // ---------------------------------------------------------------------------
203
+ const launchctl = queryOrChange(['launchctl'], 'launchd services', /^(print|print-cache|print-disabled|list|blame|procinfo|hostinfo|examine|dumpstate|dumpjpcategory|managerpid|manageruid|managername|getenv|version|help|error|resolveport|plist)$/, 'starts, stops or configures services');
204
+ const xcodeSelect = define({
205
+ names: ['xcode-select'], summary: 'active developer directory',
206
+ spec: { short: 'hpvr', shortWithArg: 's', long: { help: false, 'print-path': false, version: false, switch: '=s', reset: '=r', install: false } },
207
+ stdin: false, stdout: { type: 'path' },
208
+ when: { 's|r|install': { opaque: 'xcode-select changes the developer directory or installs tools' } },
209
+ });
210
+ /** xcrun [--sdk X] [--toolchain X] TOOL ARGS… | --find TOOL | --show-sdk-*. */
211
+ const xcrun = {
212
+ names: ['xcrun'],
213
+ summary: 'run or locate developer tools',
214
+ analyze(inv, h) {
215
+ const a = args(inv);
216
+ let i = 0;
217
+ for (; i < a.length; i++) {
218
+ const s = concrete(a[i]);
219
+ if (s === undefined)
220
+ return { effects: [{ kind: 'unknown', detail: 'xcrun with unknown arguments' }], readsStdin: 'maybe', complete: false };
221
+ if (s === '--sdk' || s === '-sdk' || s === '--toolchain' || s === '-toolchain') {
222
+ i++;
223
+ continue;
224
+ }
225
+ if (/^-(-)?(find|f)$/.test(s) || /^--show-sdk-|^--show-toolchain|^-(-)?(version|help|h|kill-cache|k)$/.test(s))
226
+ return { effects: [], readsStdin: false, stdout: { type: 'path' } };
227
+ if (/^-(-)?(log|verbose|no-cache|l|v|n|r|run)$/.test(s))
228
+ continue;
229
+ break;
230
+ }
231
+ if (i >= a.length)
232
+ return { effects: [], readsStdin: false };
233
+ return h.subcommand(a.slice(i));
234
+ },
235
+ };
236
+ /** codesign: -s/--sign rewrites the operands; -v/-d/--verify/--display read them. */
237
+ const codesign = define({
238
+ names: ['codesign'], summary: 'code signing',
239
+ spec: { short: 'dvfhRoV', shortWithArg: 'siPr', long: { sign: '=s', verify: false, display: false, deep: false, strict: true, force: false, verbose: true, identifier: '=i', entitlements: true, options: true, timestamp: true, 'preserve-metadata': true, keychain: true, requirements: '=r', remove: false, 'remove-signature': false, xml: false, der: false, 'check-notarization': false, 'generate-entitlement-der': false, 'all-architectures': false, prefix: true, 'test-requirement': true, detached: true, bundle: true, file: false, extract: true } },
240
+ operands: 'read*', stdin: false, flags: { entitlements: 'write' },
241
+ when: { 's|remove-signature|remove': { operands: 'write*', flags: { entitlements: 'read', keychain: 'read' } } },
242
+ });
243
+ const spctl = queryOrChange(['spctl'], 'Gatekeeper assessments', /^(-a|--assess|--status|-s|--test|-t|--list|--help|-h)$/, 'changes the Gatekeeper policy');
244
+ const security = {
245
+ names: ['security'],
246
+ summary: 'keychains and certificates',
247
+ analyze(inv, h) {
248
+ const a = args(inv);
249
+ const sub = concrete(a.find((x) => !knownPrefix(x).startsWith('-')) ?? known('')) ?? '?';
250
+ const keychains = home(h, '/Library/Keychains');
251
+ if (/^(find-|dump-|list-|show-|verify-cert$|error$|help$)/.test(sub) || (sub === 'cms' && a.some((x) => concrete(x) === '-D'))) {
252
+ const effects = [{ kind: 'read', path: keychains, recursive: true }, { kind: 'read', path: known('/Library/Keychains'), recursive: true, maybe: true }];
253
+ if (sub === 'cms')
254
+ for (let i = 0; i < a.length; i++)
255
+ if (concrete(a[i]) === '-i' && a[i + 1])
256
+ effects.push({ kind: 'read', path: h.resolve(a[i + 1]) });
257
+ return { effects, readsStdin: sub === 'cms' && !a.some((x) => concrete(x) === '-i') };
258
+ }
259
+ return { effects: [{ kind: 'write', path: keychains, recursive: true, maybe: true }, { kind: 'unknown', detail: `security ${sub}` }], readsStdin: 'maybe', complete: false };
260
+ },
261
+ };
262
+ // ---------------------------------------------------------------------------
263
+ // network
264
+ // ---------------------------------------------------------------------------
265
+ const networkTools = [
266
+ queryOrChange(['ipconfig'], 'network interfaces (macOS)', /^(getifaddr|getoption|getpacket|getsummary|getv6packet|ifcount|getiflist|getra|waitall|help)$/, 'changes interface configuration'),
267
+ {
268
+ names: ['ifconfig'],
269
+ summary: 'network interfaces',
270
+ analyze(inv) {
271
+ // `ifconfig`, `ifconfig -a`, `ifconfig -l`, `ifconfig en0`: queries; more words configure the interface
272
+ const ops = args(inv).filter((x) => !/^-[aludLmvrC]+$/.test(concrete(x) ?? ''));
273
+ if (ops.length <= 1)
274
+ return { effects: [], readsStdin: false };
275
+ return { effects: [{ kind: 'unknown', detail: 'ifconfig configures an interface' }], readsStdin: false, complete: false };
276
+ },
277
+ },
278
+ {
279
+ names: ['arp', 'ndp'],
280
+ summary: 'address resolution tables',
281
+ analyze(inv) {
282
+ const a = args(inv).map((x) => concrete(x));
283
+ if (a.some((x) => x === undefined || /^-[a-zA-Z]*[dsSf]/.test(x)))
284
+ return { effects: [{ kind: 'unknown', detail: `${inv.name} changes the table` }], readsStdin: false, complete: false };
285
+ return { effects: [], readsStdin: false };
286
+ },
287
+ },
288
+ queryOrChange(['route'], 'routing tables', /^(get|monitor|show|-n)$/, 'changes routes'),
289
+ queryOrChange(['scutil'], 'system configuration', /^(--dns|--proxy|--nwi|--get|-r|-w)$/, 'changes the system configuration'),
290
+ queryOrChange(['networksetup'], 'network settings', /^-(get|list|print|version|help|isBluetooth|show)/, 'changes network settings'),
291
+ queryOrChange(['socketfilterfw'], 'application firewall', /^--(get|list)/, 'changes the firewall'),
292
+ {
293
+ names: ['dscacheutil'],
294
+ summary: 'directory service cache',
295
+ analyze: (inv) => ({ effects: args(inv).some((x) => concrete(x) === '-flushcache') ? [{ kind: 'process', detail: 'flush the DNS cache' }] : [], readsStdin: false }),
296
+ },
297
+ define({ names: ['dns-sd', 'mDNS'], summary: 'Bonjour browsing and registration', anyFlags: true, operands: 'arg*', stdin: false, effects: [{ kind: 'network', detail: 'multicast DNS' }] }),
298
+ define({ names: ['mtr', 'whois'], summary: 'network diagnostics', anyFlags: true, operands: 'url arg*', stdin: false }),
299
+ ];
300
+ // ---------------------------------------------------------------------------
301
+ // system state and diagnostics
302
+ // ---------------------------------------------------------------------------
303
+ const systemTools = [
304
+ info(['system_profiler', 'ioreg', 'lsappinfo', 'footprint', 'vmmap', 'heap', 'leaks', 'fs_usage', 'powermetrics', 'nettop', 'csrutil', 'kextstat', 'machine'], 'print system or process information'),
305
+ define({
306
+ names: ['sysctl'], summary: 'kernel state',
307
+ spec: { short: 'abdehiNnoqxAX', shortWithArg: 'f' }, operands: 'arg*', stdin: false,
308
+ // `name=value` and -w set kernel parameters
309
+ extra: (r, { operands, p }) => (p.flags.has('w') || operands.some((o) => knownPrefix(o).includes('=') || concrete(o) === undefined) ? { ...r, effects: [...r.effects, { kind: 'unknown', detail: 'sysctl sets kernel parameters' }], complete: false } : r),
310
+ }),
311
+ define({
312
+ names: ['memory_pressure'], summary: 'memory pressure', spec: { short: 'Q', shortWithArg: 'lSps' }, stdin: false,
313
+ when: { S: { opaque: 'memory_pressure -S simulates memory pressure' } },
314
+ }),
315
+ queryOrChange(['pmset'], 'power management', /^-g$/, 'changes power settings'),
316
+ queryOrChange(['tmutil'], 'Time Machine', /^(listbackups|latestbackup|status|destinationinfo|isexcluded|machinedirectory|listlocalsnapshots|listlocalsnapshotdates|compare|calculatedrift|uniquesize|version|help|verifychecksums)$/, 'changes backups or their settings'),
317
+ queryOrChange(['diskutil'], 'disks and volumes', /^(list|info|information|activity|listFilesystems|apfs|cs|appleRAID|verifyVolume|verifyDisk|image)$/, 'changes disks or volumes'),
318
+ queryOrChange(['hdiutil'], 'disk images', /^(info|imageinfo|verify|checksum|isencrypted|plugins|help|pmap)$/, 'mounts or creates disk images'),
319
+ queryOrChange(['log'], 'unified logging', /^(show|stream|stats|help)$/, 'changes logging configuration or collects archives'),
320
+ queryOrChange(['lsregister'], 'Launch Services database', /^-(dump|h|help)$/, 'changes the Launch Services database'),
321
+ {
322
+ names: ['sample', 'spindump'],
323
+ summary: 'sample a process',
324
+ analyze(inv, h) {
325
+ // writes the report to -file PATH, else into /tmp
326
+ const a = args(inv);
327
+ const i = a.findIndex((x) => concrete(x) === '-file' || concrete(x) === '-o');
328
+ const out = i >= 0 && a[i + 1] ? h.resolve(a[i + 1]) : concat(known('/tmp/'), hole('filename', 'sample report'));
329
+ return { effects: [{ kind: 'write', path: out }], readsStdin: false };
330
+ },
331
+ },
332
+ ];
333
+ // ---------------------------------------------------------------------------
334
+ // files, Spotlight, images, screen
335
+ // ---------------------------------------------------------------------------
336
+ const mdfind = {
337
+ names: ['mdfind'],
338
+ summary: 'Spotlight search',
339
+ analyze(inv, h) {
340
+ const a = args(inv);
341
+ const effects = [];
342
+ let complete = true;
343
+ for (let i = 0; i < a.length; i++) {
344
+ const s = concrete(a[i]);
345
+ if (s === '-onlyin' && a[i + 1]) {
346
+ h.role(a[i + 1], 'dir');
347
+ effects.push({ kind: 'read', path: h.resolve(a[++i]), recursive: true });
348
+ }
349
+ else if (s === '-name' || s === '-attr' || s === '-s') {
350
+ if (a[i + 1])
351
+ h.role(a[i + 1], 'pattern');
352
+ i++;
353
+ }
354
+ else if (s === '-live' || s === '-count' || s === '-0' || s === '-literal' || s === '-interpret' || s === '-reprint')
355
+ continue;
356
+ else if (s !== undefined && s.startsWith('-'))
357
+ complete = false;
358
+ else
359
+ h.role(a[i], 'pattern');
360
+ }
361
+ // names (not contents) of matching files anywhere in the index
362
+ if (!effects.length)
363
+ effects.push({ kind: 'read', path: known('/'), recursive: true, maybe: true });
364
+ return { effects, readsStdin: false, complete, stdout: { type: 'path', lines: true } };
365
+ },
366
+ };
367
+ const mdls = define({
368
+ names: ['mdls'], summary: 'Spotlight metadata',
369
+ spec: { longSingle: true, long: { name: true, raw: false, nullMarker: true, plist: true, r: false } },
370
+ operands: 'read*', flags: { plist: 'write' }, stdin: false,
371
+ });
372
+ /** sips: queries (-g) read; anything else rewrites the images, or writes --out. */
373
+ const SIPS_QUERY = new Set(['g', 'getProperty', '1', 'oneLine', 'h', 'help', 'H', 'helpProperties', 'v', 'version', 'debug']);
374
+ const sips = define({
375
+ names: ['sips'], summary: 'image processing (macOS)',
376
+ spec: {
377
+ short: '1hHv', shortWithArg: 'gsdrfcpzZioeEmMxj', arity: { s: 2, c: 2, p: 2, z: 2, M: 2 },
378
+ long: { getProperty: '=g', setProperty: '=s', deleteProperty: '=d', rotate: '=r', flip: '=f', cropToHeightWidth: '=c', padToHeightWidth: '=p', resampleHeightWidth: '=z', resampleHeightWidthMax: '=Z', resampleWidth: true, resampleHeight: true, cropOffset: 2, padColor: true, addIcon: '=i', out: '=o', embedProfile: '=e', embedProfileIfNone: '=E', matchTo: '=m', matchToWithIntent: '=M', extractProfile: '=x', extractTag: 2, js: '=j', oneLine: '=1', help: '=h', helpProperties: '=H', version: '=v', debug: false, optimizeColorForSharing: false, verifyColor: false, deleteColorManagementProperties: false, setColorManagementPropertiesFromFile: true },
379
+ },
380
+ operands: 'read*', stdin: false, flags: { e: 'read', E: 'read', m: 'read', x: 'write', extractTag: 'write' },
381
+ extra: (r, { h, p, operands }) => {
382
+ if (p.flags.has('j'))
383
+ return { ...r, effects: [...r.effects, { kind: 'unknown', detail: 'sips runs a JavaScript file' }], complete: false };
384
+ const modifies = [...p.flags.keys()].some((k) => !SIPS_QUERY.has(k) && !['e', 'E', 'm', 'M', 'x', 'extractTag', 'o'].includes(k)) || ['e', 'E', 'm', 'M'].some((k) => p.flags.has(k));
385
+ if (!modifies)
386
+ return r;
387
+ const out = p.flags.get('o');
388
+ const writes = out && out !== true
389
+ ? [{ kind: 'write', path: h.resolve(out), ...(operands.length > 1 ? { recursive: true } : {}) }]
390
+ : operands.map((o) => ({ kind: 'write', path: h.resolve(o) }));
391
+ if (out && out !== true && operands.length > 1)
392
+ h.role(out, 'dir');
393
+ return { ...r, effects: [...r.effects, ...writes] };
394
+ },
395
+ });
396
+ const screencapture = define({
397
+ names: ['screencapture'], summary: 'screenshots (macOS)',
398
+ spec: { short: 'cCdimMoPswWxSaUuvkgbBIrpGJ', shortWithArg: 'RtTlDVBGJf' },
399
+ operands: 'write*', stdin: false,
400
+ when: { c: { operands: 'arg*' }, 'M|P': { effects: [{ kind: 'process', detail: 'opens the capture in an app' }] } },
401
+ });
402
+ const qlmanage = define({
403
+ names: ['qlmanage'], summary: 'Quick Look', spec: { short: 'pthmrxi', shortWithArg: 'osgc', long: {} },
404
+ operands: 'read*', stdin: false, flags: { o: 'write:dir' },
405
+ when: { p: { opaque: 'qlmanage -p opens a preview window' }, r: { effects: [{ kind: 'process', detail: 'resets Quick Look' }] } },
406
+ });
407
+ /** Chrome / Chromium: --headless with an output flag renders a page; anything else is the GUI browser. */
408
+ const chrome = {
409
+ names: ['Google Chrome', 'google-chrome', 'google-chrome-stable', 'chromium', 'chromium-browser', 'chrome', 'Chromium', 'Google Chrome Canary', 'Microsoft Edge', 'Brave Browser'],
410
+ summary: 'web browser',
411
+ analyze(inv, h) {
412
+ const a = args(inv);
413
+ const opt = (name) => {
414
+ for (const x of a) {
415
+ const s = concrete(x);
416
+ if (s === `--${name}`)
417
+ return true;
418
+ if (s?.startsWith(`--${name}=`))
419
+ return known(s.slice(name.length + 3));
420
+ }
421
+ return undefined;
422
+ };
423
+ if (opt('version') || opt('help'))
424
+ return { effects: [], readsStdin: false };
425
+ const headless = opt('headless') !== undefined;
426
+ const effects = [{ kind: 'network', detail: inv.name, maybe: true }];
427
+ const shot = opt('screenshot');
428
+ const pdf = opt('print-to-pdf');
429
+ const profile = opt('user-data-dir');
430
+ effects.push(profile && profile !== true
431
+ ? { kind: 'write', path: h.resolve(profile), recursive: true }
432
+ : { kind: 'write', path: home(h, process.platform === 'darwin' ? '/Library/Application Support' : '/.config'), recursive: true, maybe: true });
433
+ if (shot)
434
+ effects.push({ kind: 'write', path: shot === true ? concat(inv.cwd, known('/screenshot.png')) : h.resolve(shot) });
435
+ if (pdf)
436
+ effects.push({ kind: 'write', path: pdf === true ? concat(inv.cwd, known('/output.pdf')) : h.resolve(pdf) });
437
+ for (const x of a) {
438
+ const s = concrete(x);
439
+ if (s !== undefined && !s.startsWith('-') && !/^[a-z]+:/.test(s))
440
+ effects.push({ kind: 'read', path: h.resolve(x) });
441
+ if (s?.startsWith('file://'))
442
+ effects.push({ kind: 'read', path: known(decodeURIComponent(s.slice(7))) });
443
+ }
444
+ const outputOnly = headless && (shot || pdf || opt('dump-dom'));
445
+ if (!outputOnly)
446
+ effects.push({ kind: 'unknown', detail: `${inv.name} runs a browser` });
447
+ return { effects, readsStdin: false, complete: !!outputOnly && !opt('remote-debugging-port') && !opt('remote-debugging-pipe') };
448
+ },
449
+ };
450
+ export const macosBehaviors = [
451
+ defaults, plutil, plistBuddy, launchctl, xcodeSelect, xcrun, codesign, spctl, security,
452
+ ...networkTools, ...systemTools, mdfind, mdls, sips, screencapture, qlmanage, chrome,
453
+ ];
454
+ //# sourceMappingURL=macos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macos.js","sourceRoot":"","sources":["../../../../src/behaviors/defs/macos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Behavior definitions for common command-line tools beyond coreutils:
3
+ * databases, document and media tools, downloaders, crypto, and local
4
+ * service CLIs. Most are table definitions (see ../dsl.ts); tools whose
5
+ * argument syntax the table cannot express (ffmpeg, sqlite3) are written out.
6
+ */
7
+ import type { Behavior } from '../types.ts';
8
+ export declare const toolBehaviors: Behavior[];
9
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/defs/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAA;AAqkBvD,eAAO,MAAM,aAAa,EAAE,QAAQ,EAEnC,CAAA"}