sourcemonkey 0.0.0-stage → 0.5.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 (367) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +87 -2
  3. package/dist/bytes.js +37 -0
  4. package/dist/channel-placeholder.js +5 -0
  5. package/dist/collection-scan.js +17 -0
  6. package/dist/collections.html +353 -0
  7. package/dist/compare.html +358 -0
  8. package/dist/composed-source.js +205 -0
  9. package/dist/connect-prompt.html +47 -0
  10. package/dist/debug/icons.html +211 -0
  11. package/dist/debug/storage.html +163 -0
  12. package/dist/debug-log.js +75 -0
  13. package/dist/diagnostic-location.js +64 -0
  14. package/dist/eval-hook.js +308 -0
  15. package/dist/extension/background.js +5263 -0
  16. package/dist/extension/channel.js +133 -0
  17. package/dist/extension/code-links.js +187 -0
  18. package/dist/extension/code-tabs.js +460 -0
  19. package/dist/extension/collection-dialog.js +619 -0
  20. package/dist/extension/collection-display.js +322 -0
  21. package/dist/extension/collections.js +2905 -0
  22. package/dist/extension/compare.js +867 -0
  23. package/dist/extension/concurrency.js +186 -0
  24. package/dist/extension/connect-grants.js +109 -0
  25. package/dist/extension/connect-prompt-page.js +70 -0
  26. package/dist/extension/connect-prompt.js +266 -0
  27. package/dist/extension/copy-button.js +63 -0
  28. package/dist/extension/copy-dialog.js +502 -0
  29. package/dist/extension/copy-preference.js +66 -0
  30. package/dist/extension/debug/icons.js +203 -0
  31. package/dist/extension/debug/storage.js +365 -0
  32. package/dist/extension/deep-link.js +77 -0
  33. package/dist/extension/delete-dialog.js +432 -0
  34. package/dist/extension/delete-icon.js +40 -0
  35. package/dist/extension/details-tooltips.js +66 -0
  36. package/dist/extension/directories.js +679 -0
  37. package/dist/extension/export-backup.js +407 -0
  38. package/dist/extension/export-dialog.js +142 -0
  39. package/dist/extension/file-access.js +74 -0
  40. package/dist/extension/file-changes.js +346 -0
  41. package/dist/extension/frame-info.js +85 -0
  42. package/dist/extension/github-provider.js +336 -0
  43. package/dist/extension/glyph.js +84 -0
  44. package/dist/extension/gm-bindings.js +601 -0
  45. package/dist/extension/gm-download.js +419 -0
  46. package/dist/extension/gm-menu.js +228 -0
  47. package/dist/extension/gm-notification.js +141 -0
  48. package/dist/extension/gm-originator-map.js +23 -0
  49. package/dist/extension/gm-tab-data.js +121 -0
  50. package/dist/extension/gm-tab.js +160 -0
  51. package/dist/extension/gm-url-change.js +111 -0
  52. package/dist/extension/gm-url-scheme.js +27 -0
  53. package/dist/extension/gm-values.js +176 -0
  54. package/dist/extension/gm-window-control.js +104 -0
  55. package/dist/extension/gm-xhr-headers.js +333 -0
  56. package/dist/extension/gm-xhr.js +584 -0
  57. package/dist/extension/injector.js +3145 -0
  58. package/dist/extension/install-capture.js +277 -0
  59. package/dist/extension/line-diff.js +233 -0
  60. package/dist/extension/local-copy.js +560 -0
  61. package/dist/extension/local-delete.js +276 -0
  62. package/dist/extension/location-kinds.js +108 -0
  63. package/dist/extension/log-format.js +158 -0
  64. package/dist/extension/managed-changes.js +361 -0
  65. package/dist/extension/managed-items.js +57 -0
  66. package/dist/extension/match-index.js +375 -0
  67. package/dist/extension/missing-scripts.js +66 -0
  68. package/dist/extension/more-menu.js +109 -0
  69. package/dist/extension/move-dialog.js +197 -0
  70. package/dist/extension/offscreen.js +37 -0
  71. package/dist/extension/options.js +504 -0
  72. package/dist/extension/page-heading.js +170 -0
  73. package/dist/extension/page-links.js +199 -0
  74. package/dist/extension/parse-check-client.js +70 -0
  75. package/dist/extension/parse-check.js +161 -0
  76. package/dist/extension/parse-sandbox-host.js +172 -0
  77. package/dist/extension/parse-sandbox.js +175 -0
  78. package/dist/extension/popup-commands-open.js +41 -0
  79. package/dist/extension/popup-view.js +387 -0
  80. package/dist/extension/popup.js +703 -0
  81. package/dist/extension/prism-userscript.js +53 -0
  82. package/dist/extension/refresh-error.js +136 -0
  83. package/dist/extension/refresh-targets.js +160 -0
  84. package/dist/extension/related-versions.js +1144 -0
  85. package/dist/extension/resize-observer-loop.js +19 -0
  86. package/dist/extension/row-cache.js +387 -0
  87. package/dist/extension/script-blobs.js +413 -0
  88. package/dist/extension/script-details.js +658 -0
  89. package/dist/extension/script-enablement.js +285 -0
  90. package/dist/extension/script-identity.js +310 -0
  91. package/dist/extension/script-keys.js +54 -0
  92. package/dist/extension/script-log-id.js +155 -0
  93. package/dist/extension/script-log.js +290 -0
  94. package/dist/extension/script-rejection.js +104 -0
  95. package/dist/extension/script-sites.js +158 -0
  96. package/dist/extension/script-store.js +3507 -0
  97. package/dist/extension/script-updater.js +991 -0
  98. package/dist/extension/script-url-hash.js +61 -0
  99. package/dist/extension/select-all.js +37 -0
  100. package/dist/extension/select-open-guard.js +90 -0
  101. package/dist/extension/site-icon.js +1261 -0
  102. package/dist/extension/sm-dev-link.js +302 -0
  103. package/dist/extension/solo-click.js +58 -0
  104. package/dist/extension/sticky-numbers.js +188 -0
  105. package/dist/extension/storage-breakdown.js +253 -0
  106. package/dist/extension/storage-scan.js +86 -0
  107. package/dist/extension/storage-usage.js +194 -0
  108. package/dist/extension/structural-keys.js +29 -0
  109. package/dist/extension/sw-teardown.js +36 -0
  110. package/dist/extension/tab-status.js +403 -0
  111. package/dist/extension/toolbar-summary.js +105 -0
  112. package/dist/extension/user-scripts-access.js +43 -0
  113. package/dist/extension/userscript.js +3672 -0
  114. package/dist/extension/value-store.js +204 -0
  115. package/dist/extension/version-probe-fetch.js +68 -0
  116. package/dist/extension/worker-client.js +109 -0
  117. package/dist/extension/worker-ops.js +171 -0
  118. package/dist/extension/zip-writer.js +24 -0
  119. package/dist/external-files.js +878 -0
  120. package/dist/file-loader.js +436 -0
  121. package/dist/file-locations.js +439 -0
  122. package/dist/generated-wrappers.js +5 -0
  123. package/dist/github-auth.js +148 -0
  124. package/dist/github-urls.js +46 -0
  125. package/dist/gm-api-catalog.js +217 -0
  126. package/dist/gm-connect.js +273 -0
  127. package/dist/gm-xhr-types.js +5 -0
  128. package/dist/http-read.js +142 -0
  129. package/dist/icons/icon-128.png +0 -0
  130. package/dist/icons/icon-16.png +0 -0
  131. package/dist/icons/icon-48.png +0 -0
  132. package/dist/local-file-overrides.js +558 -0
  133. package/dist/manifest.json +38 -0
  134. package/dist/markup-response.js +126 -0
  135. package/dist/match-targets.js +305 -0
  136. package/dist/menu-captions.js +22 -0
  137. package/dist/offscreen.html +39 -0
  138. package/dist/options.html +197 -0
  139. package/dist/parse-check-protocol.js +51 -0
  140. package/dist/parse-location.js +171 -0
  141. package/dist/parse-sandbox.html +56 -0
  142. package/dist/phase-timing.js +155 -0
  143. package/dist/popup.html +197 -0
  144. package/dist/public-suffixes.js +6957 -0
  145. package/dist/run-context.js +31 -0
  146. package/dist/runtime-messages.js +34 -0
  147. package/dist/sandboxed-page.js +35 -0
  148. package/dist/script-build.js +787 -0
  149. package/dist/script-display.js +383 -0
  150. package/dist/script-icon.js +43 -0
  151. package/dist/script-links.js +204 -0
  152. package/dist/script-source-url.js +214 -0
  153. package/dist/script-world.js +65 -0
  154. package/dist/sm-dev-protocol.js +84 -0
  155. package/dist/source-map.js +177 -0
  156. package/dist/stack-link.js +138 -0
  157. package/dist/styles.css +825 -0
  158. package/dist/unsafe-window-use.js +229 -0
  159. package/dist/url-match.js +734 -0
  160. package/dist/userscript-header.js +248 -0
  161. package/dist/userscript.html +1165 -0
  162. package/dist/vendor/fflate.LICENSE +21 -0
  163. package/dist/vendor/fflate.js +2692 -0
  164. package/dist/vendor/prism/prism-line-numbers.css +1 -0
  165. package/dist/vendor/prism/prism-line-numbers.js +1 -0
  166. package/dist/vendor/prism/prism.css +1 -0
  167. package/dist/vendor/prism/prism.js +1946 -0
  168. package/dist/version-compare.js +141 -0
  169. package/dist/version-probe.js +120 -0
  170. package/lib/build-info.json +1 -0
  171. package/lib/bytes.d.ts +3 -0
  172. package/lib/bytes.js +37 -0
  173. package/lib/channel-placeholder.d.ts +1 -0
  174. package/lib/channel-placeholder.js +5 -0
  175. package/lib/collection-scan.d.ts +8 -0
  176. package/lib/collection-scan.js +17 -0
  177. package/lib/composed-source.d.ts +28 -0
  178. package/lib/composed-source.js +205 -0
  179. package/lib/debug-log.d.ts +9 -0
  180. package/lib/debug-log.js +75 -0
  181. package/lib/diagnostic-location.d.ts +8 -0
  182. package/lib/diagnostic-location.js +64 -0
  183. package/lib/eval-hook.d.ts +34 -0
  184. package/lib/eval-hook.js +308 -0
  185. package/lib/external-files.d.ts +111 -0
  186. package/lib/external-files.js +878 -0
  187. package/lib/file-loader.d.ts +48 -0
  188. package/lib/file-loader.js +436 -0
  189. package/lib/file-locations.d.ts +44 -0
  190. package/lib/file-locations.js +439 -0
  191. package/lib/generated-wrappers.d.ts +11 -0
  192. package/lib/generated-wrappers.js +5 -0
  193. package/lib/github-auth.d.ts +12 -0
  194. package/lib/github-auth.js +148 -0
  195. package/lib/github-urls.d.ts +1 -0
  196. package/lib/github-urls.js +46 -0
  197. package/lib/gm-api-catalog.d.ts +24 -0
  198. package/lib/gm-api-catalog.js +217 -0
  199. package/lib/gm-connect.d.ts +34 -0
  200. package/lib/gm-connect.js +273 -0
  201. package/lib/gm-xhr-types.d.ts +68 -0
  202. package/lib/gm-xhr-types.js +5 -0
  203. package/lib/harness/browser-extensions.d.ts +73 -0
  204. package/lib/harness/browser-extensions.js +285 -0
  205. package/lib/harness/browser-lang.d.ts +20 -0
  206. package/lib/harness/browser-lang.js +86 -0
  207. package/lib/harness/browser-launch.d.ts +14 -0
  208. package/lib/harness/browser-launch.js +184 -0
  209. package/lib/harness/checks.d.ts +110 -0
  210. package/lib/harness/checks.js +321 -0
  211. package/lib/harness/cli.d.ts +2 -0
  212. package/lib/harness/cli.js +2259 -0
  213. package/lib/harness/command-args.d.ts +91 -0
  214. package/lib/harness/command-args.js +369 -0
  215. package/lib/harness/command-lines.d.ts +80 -0
  216. package/lib/harness/command-lines.js +180 -0
  217. package/lib/harness/command-list.d.ts +206 -0
  218. package/lib/harness/command-list.js +1475 -0
  219. package/lib/harness/console-commands.d.ts +463 -0
  220. package/lib/harness/console-commands.js +3216 -0
  221. package/lib/harness/download-watch.d.ts +21 -0
  222. package/lib/harness/download-watch.js +156 -0
  223. package/lib/harness/extension-backend.d.ts +41 -0
  224. package/lib/harness/extension-backend.js +100 -0
  225. package/lib/harness/extension-host.d.ts +112 -0
  226. package/lib/harness/extension-host.js +552 -0
  227. package/lib/harness/extension-launch.d.ts +67 -0
  228. package/lib/harness/extension-launch.js +285 -0
  229. package/lib/harness/extension-link.d.ts +315 -0
  230. package/lib/harness/extension-link.js +607 -0
  231. package/lib/harness/external-manager.d.ts +146 -0
  232. package/lib/harness/external-manager.js +414 -0
  233. package/lib/harness/fixture.d.ts +165 -0
  234. package/lib/harness/fixture.js +461 -0
  235. package/lib/harness/frame-sessions.d.ts +71 -0
  236. package/lib/harness/frame-sessions.js +248 -0
  237. package/lib/harness/frames.d.ts +68 -0
  238. package/lib/harness/frames.js +216 -0
  239. package/lib/harness/help-format.d.ts +17 -0
  240. package/lib/harness/help-format.js +127 -0
  241. package/lib/harness/host.d.ts +352 -0
  242. package/lib/harness/host.js +423 -0
  243. package/lib/harness/index.d.ts +8 -0
  244. package/lib/harness/index.js +10 -0
  245. package/lib/harness/input-file.d.ts +18 -0
  246. package/lib/harness/input-file.js +61 -0
  247. package/lib/harness/json-output.d.ts +565 -0
  248. package/lib/harness/json-output.js +71 -0
  249. package/lib/harness/manager-actions.d.ts +21 -0
  250. package/lib/harness/manager-actions.js +129 -0
  251. package/lib/harness/manager-commands.d.ts +142 -0
  252. package/lib/harness/manager-commands.js +1196 -0
  253. package/lib/harness/manager-fetch.d.ts +33 -0
  254. package/lib/harness/manager-fetch.js +239 -0
  255. package/lib/harness/managers.d.ts +24 -0
  256. package/lib/harness/managers.js +27 -0
  257. package/lib/harness/output-style.d.ts +125 -0
  258. package/lib/harness/output-style.js +322 -0
  259. package/lib/harness/page-commands.d.ts +134 -0
  260. package/lib/harness/page-commands.js +1141 -0
  261. package/lib/harness/page-output.d.ts +67 -0
  262. package/lib/harness/page-output.js +139 -0
  263. package/lib/harness/page-watch.d.ts +171 -0
  264. package/lib/harness/page-watch.js +607 -0
  265. package/lib/harness/parse-check-node.d.ts +3 -0
  266. package/lib/harness/parse-check-node.js +132 -0
  267. package/lib/harness/path-args.d.ts +22 -0
  268. package/lib/harness/path-args.js +148 -0
  269. package/lib/harness/playwright-chromium.d.ts +16 -0
  270. package/lib/harness/playwright-chromium.js +86 -0
  271. package/lib/harness/prepare.d.ts +168 -0
  272. package/lib/harness/prepare.js +364 -0
  273. package/lib/harness/prompt-editor.d.ts +17 -0
  274. package/lib/harness/prompt-editor.js +354 -0
  275. package/lib/harness/prompt-history.d.ts +13 -0
  276. package/lib/harness/prompt-history.js +89 -0
  277. package/lib/harness/rebuild-advice.d.ts +6 -0
  278. package/lib/harness/rebuild-advice.js +39 -0
  279. package/lib/harness/run-log.d.ts +47 -0
  280. package/lib/harness/run-log.js +140 -0
  281. package/lib/harness/run-logs.d.ts +132 -0
  282. package/lib/harness/run-logs.js +241 -0
  283. package/lib/harness/run.d.ts +194 -0
  284. package/lib/harness/run.js +1973 -0
  285. package/lib/harness/runs.d.ts +229 -0
  286. package/lib/harness/runs.js +726 -0
  287. package/lib/harness/save-html.d.ts +39 -0
  288. package/lib/harness/save-html.js +89 -0
  289. package/lib/harness/saved-pages.d.ts +120 -0
  290. package/lib/harness/saved-pages.js +275 -0
  291. package/lib/harness/script-mark.d.ts +17 -0
  292. package/lib/harness/script-mark.js +56 -0
  293. package/lib/harness/snapshot.d.ts +143 -0
  294. package/lib/harness/snapshot.js +474 -0
  295. package/lib/harness/stuck-tabs.d.ts +19 -0
  296. package/lib/harness/stuck-tabs.js +131 -0
  297. package/lib/harness/tab-refs.d.ts +20 -0
  298. package/lib/harness/tab-refs.js +80 -0
  299. package/lib/harness/tampermonkey.d.ts +71 -0
  300. package/lib/harness/tampermonkey.js +356 -0
  301. package/lib/harness/tm-ids.d.ts +18 -0
  302. package/lib/harness/tm-ids.js +88 -0
  303. package/lib/harness/violentmonkey.d.ts +34 -0
  304. package/lib/harness/violentmonkey.js +162 -0
  305. package/lib/harness/wait.d.ts +77 -0
  306. package/lib/harness/wait.js +458 -0
  307. package/lib/http-read.d.ts +30 -0
  308. package/lib/http-read.js +142 -0
  309. package/lib/local-file-overrides.d.ts +35 -0
  310. package/lib/local-file-overrides.js +558 -0
  311. package/lib/manifest.json +38 -0
  312. package/lib/markup-response.d.ts +11 -0
  313. package/lib/markup-response.js +126 -0
  314. package/lib/match-targets.d.ts +18 -0
  315. package/lib/match-targets.js +305 -0
  316. package/lib/menu-captions.d.ts +1 -0
  317. package/lib/menu-captions.js +22 -0
  318. package/lib/parse-check-protocol.d.ts +27 -0
  319. package/lib/parse-check-protocol.js +51 -0
  320. package/lib/parse-location.d.ts +12 -0
  321. package/lib/parse-location.js +171 -0
  322. package/lib/phase-timing.d.ts +12 -0
  323. package/lib/phase-timing.js +155 -0
  324. package/lib/public-suffixes.d.ts +1 -0
  325. package/lib/public-suffixes.js +6957 -0
  326. package/lib/run-context.d.ts +2 -0
  327. package/lib/run-context.js +31 -0
  328. package/lib/runtime-messages.d.ts +10 -0
  329. package/lib/runtime-messages.js +34 -0
  330. package/lib/sandboxed-page.d.ts +5 -0
  331. package/lib/sandboxed-page.js +35 -0
  332. package/lib/script-build.d.ts +111 -0
  333. package/lib/script-build.js +787 -0
  334. package/lib/script-display.d.ts +51 -0
  335. package/lib/script-display.js +383 -0
  336. package/lib/script-icon.d.ts +16 -0
  337. package/lib/script-icon.js +43 -0
  338. package/lib/script-links.d.ts +24 -0
  339. package/lib/script-links.js +204 -0
  340. package/lib/script-source-url.d.ts +8 -0
  341. package/lib/script-source-url.js +214 -0
  342. package/lib/script-world.d.ts +6 -0
  343. package/lib/script-world.js +65 -0
  344. package/lib/sm-dev-protocol.d.ts +251 -0
  345. package/lib/sm-dev-protocol.js +84 -0
  346. package/lib/source-map.d.ts +32 -0
  347. package/lib/source-map.js +177 -0
  348. package/lib/stack-link.d.ts +15 -0
  349. package/lib/stack-link.js +138 -0
  350. package/lib/unsafe-window-use.d.ts +1 -0
  351. package/lib/unsafe-window-use.js +229 -0
  352. package/lib/url-match.d.ts +40 -0
  353. package/lib/url-match.js +734 -0
  354. package/lib/userscript-header.d.ts +33 -0
  355. package/lib/userscript-header.js +248 -0
  356. package/lib/version-compare.d.ts +6 -0
  357. package/lib/version-compare.js +141 -0
  358. package/lib/version-probe.d.ts +17 -0
  359. package/lib/version-probe.js +120 -0
  360. package/package.json +55 -3
  361. package/skills/SourceMonkey-dev/SKILL.md +868 -0
  362. package/skills/SourceMonkey-dev/references/cdp.md +293 -0
  363. package/skills/SourceMonkey-dev/references/commands.md +297 -0
  364. package/skills/SourceMonkey-dev/references/other-managers.md +63 -0
  365. package/skills/SourceMonkey-dev/references/specs.md +46 -0
  366. package/skills/SourceMonkey-friction/SKILL.md +103 -0
  367. package/skills/SourceMonkey-friction/references/template.md +59 -0
@@ -0,0 +1,229 @@
1
+ import { type LogSource } from './run-logs.js';
2
+ import { type ManagerName } from './managers.js';
3
+ /** What `sm-dev list` shows for a run, as its record file holds it. */
4
+ export interface RunRecord {
5
+ id: string;
6
+ pid: number;
7
+ /** When it started, in epoch milliseconds. */
8
+ started: number;
9
+ /** The browser's CDP endpoint (`launched` from an older sm-dev). */
10
+ browser: string;
11
+ /** A browser the run launched, which closes when the run ends. */
12
+ owned?: boolean;
13
+ /** A browser without a window. */
14
+ headless?: boolean;
15
+ /** The loaded scripts' full paths. `list` shows their file names. */
16
+ scripts: string[];
17
+ /** How many tabs it controls, where it keeps count. */
18
+ tabs?: number;
19
+ /** Started by `start --detach`, and so replaced by the next one. */
20
+ detached?: boolean;
21
+ /** The run's log file (see run-log.ts). */
22
+ log?: string;
23
+ /** The userscript manager it works with (`--manager`), when not SourceMonkey. */
24
+ manager?: ManagerName;
25
+ }
26
+ /**
27
+ * Who the runs belong to, in the directory and pipe names, so two
28
+ * users on one machine neither see nor clash with each other's runs:
29
+ * the user name, kept to characters a file name can take. The uid when
30
+ * there is no name: `os.userInfo()` throws for a uid with no passwd
31
+ * entry, as in a container run with `--user`.
32
+ */
33
+ export declare function owner(): string;
34
+ /** Where `start` records the tabs it opened, for a later run to reuse. */
35
+ export declare function runTabsPath(): string;
36
+ /**
37
+ * A typed run id in its usual form (`d2` is `D2`, `D02` is `D2`), or
38
+ * null if it isn't one. Named ones are taken as typed.
39
+ */
40
+ export declare function runIdOf(typed: string): string | null;
41
+ export declare function processAlive(pid: number): boolean;
42
+ /**
43
+ * The directory for sm-dev's state across runs, made private to its
44
+ * user: the runs' records and sockets, and `start`'s tab records. Created
45
+ * when missing.
46
+ */
47
+ export declare function ownRunsDir(): Promise<string>;
48
+ /**
49
+ * The directory, checked before anything in it is trusted, or null
50
+ * when there is none yet. In a shared temp directory another user could
51
+ * have made it first, or be able to write in it, and then plant records
52
+ * whose pids `stop` would signal; such a directory is refused.
53
+ */
54
+ export declare function checkRunsDir(): Promise<string | null>;
55
+ /**
56
+ * `dir`, or null when it doesn't exist; refused when another user owns
57
+ * it or can write in it. `what` names it in the message (`runs`, `log`).
58
+ */
59
+ export declare function checkPrivateDir(dir: string, what: string): Promise<string | null>;
60
+ /** Where a client's command came from: its command line, piped input, or its prompt. */
61
+ export type CommandSource = 'arg' | 'stdin' | 'prompt';
62
+ /** How a command came: the sender's directory and words, and its connection. */
63
+ export interface SentCommand {
64
+ /** Where the files the command names are. */
65
+ cwd?: string;
66
+ /** The words as the sender's shell gave them. */
67
+ words?: string[];
68
+ /** Where the sender got it. `prompt`: typed by a person, rather than scripted. */
69
+ source: CommandSource;
70
+ /** The sending client's process id, as its hello gave it. */
71
+ pid?: number;
72
+ /** The connection gets the run's whole stream already (see `RunClient`). */
73
+ follows?: boolean;
74
+ /** The sender's global --json: commands with a JSON form print it. */
75
+ json?: boolean;
76
+ }
77
+ /**
78
+ * What a run does with a command a client sent: `reply` receives its
79
+ * output, until the returned promise settles with its exit code. `hold`
80
+ * keeps the connection open, and `reply` receiving, until the run
81
+ * closes it, as `stop` does so the sender sees the run end.
82
+ */
83
+ export type SentLineHandler = (line: string, reply: (line: string) => void, sent: SentCommand) => Promise<number | 'hold'>;
84
+ /** A run's handlers for its connections. */
85
+ export interface RunHandlers {
86
+ command: SentLineHandler;
87
+ /**
88
+ * A connection that asked for the run's stream: `reply` receives each
89
+ * line the run prints from now on, until the returned function is
90
+ * called. `logSources`: the log sources it asked to see, in place of
91
+ * the run's own.
92
+ */
93
+ follow: (reply: (line: string) => void, logSources?: ReadonlySet<LogSource>) => () => void;
94
+ }
95
+ /** A run's end of the registry: its record file and its socket. */
96
+ export declare class RunControl {
97
+ private record;
98
+ private readonly server;
99
+ private readonly sockets;
100
+ private writes;
101
+ private closed;
102
+ private constructor();
103
+ /**
104
+ * Takes the run's id, registers it and starts listening. Throws when
105
+ * that fails; the run goes on without, but can't be reached from
106
+ * another shell.
107
+ */
108
+ static open(fields: Omit<RunRecord, 'id'>, handle: RunHandlers, wanted?: string): Promise<RunControl>;
109
+ get id(): string;
110
+ /** Records changed scripts or tabs, for `sm-dev list`. */
111
+ update(changes: Partial<Pick<RunRecord, 'scripts' | 'tabs'>>): Promise<void>;
112
+ /** Unregisters the run, and ends every connection still open. */
113
+ close(): Promise<void>;
114
+ /**
115
+ * A client's connection: JSON messages, a line each. The first may be
116
+ * `{"hello": {"follow": true, "pid": 123, "logSources": ["sm", ...], "markup": true}}`:
117
+ * the run's whole stream, of those log sources if given, which client
118
+ * it is, and that it takes lines with markup (output-style.ts), which
119
+ * others get as plain text. Then commands, `{"line": ..., "cwd": ...,
120
+ * "words": [...], "source": "arg"}`, each
121
+ * answered with its output and then a `COMMAND_DONE` line with its
122
+ * exit code before the next is taken.
123
+ */
124
+ private serve;
125
+ }
126
+ /**
127
+ * The runs active now, oldest first. A record whose process has gone
128
+ * (killed, or its machine rebooted), or whose socket nothing listens on
129
+ * (its pid reused since), is deleted on the way.
130
+ */
131
+ export declare function liveRuns(): Promise<RunRecord[]>;
132
+ /**
133
+ * The start of the line a run sends after each command's output, with
134
+ * its exit code after it, for the client to take rather than print.
135
+ * Starts with a NUL, which no line of output does.
136
+ */
137
+ export declare const COMMAND_DONE = "\0sm-dev:done";
138
+ /** A connection's failure when the run has ended, or was never there. */
139
+ export declare class RunGoneError extends Error {
140
+ }
141
+ /**
142
+ * A client's connection to a run, which it sends its commands over, one
143
+ * at a time. `follow`: also receive everything the run prints from now
144
+ * on, between commands too, as a person watching the run would. Output
145
+ * goes to `out` as it arrives, in the order the run printed it.
146
+ */
147
+ export declare class RunClient {
148
+ readonly id: string;
149
+ private readonly socket;
150
+ private readonly out;
151
+ private buffered;
152
+ private pending;
153
+ private closedBy;
154
+ /** Settles once the connection has closed, from either end. */
155
+ readonly ended: Promise<void>;
156
+ private end;
157
+ private constructor();
158
+ /**
159
+ * Connects to run `id`, passing each line it sends to `out`. `markup`:
160
+ * lines come with their markup (output-style.ts), for an `out` that
161
+ * paints them; otherwise as plain text.
162
+ */
163
+ static open(id: string, out: (line: string) => void, { follow, logSources, markup }?: {
164
+ follow?: boolean;
165
+ logSources?: ReadonlySet<LogSource>;
166
+ markup?: boolean;
167
+ }): Promise<RunClient>;
168
+ /** Whether the connection is still open. */
169
+ get open(): boolean;
170
+ /**
171
+ * Sends one command (one line, or a {{ block's several), and
172
+ * resolves to its exit code once it is done. `words`: the sender's own,
173
+ * as its shell gave them. `rewrite`: changes each line that arrives
174
+ * while it runs.
175
+ */
176
+ send(line: string, { words, source, json, rewrite }?: {
177
+ words?: string[];
178
+ source?: CommandSource;
179
+ json?: boolean;
180
+ rewrite?: (line: string) => string;
181
+ }): Promise<number>;
182
+ /**
183
+ * Closes the connection; the run goes on. `force`: at once, not
184
+ * waiting for the run to take the last of it, for a client done
185
+ * waiting. A run that doesn't answer is let go after a moment anyway.
186
+ */
187
+ close({ force }?: {
188
+ force?: boolean | undefined;
189
+ }): Promise<void>;
190
+ private take;
191
+ }
192
+ /**
193
+ * Sends one command to a run over a connection of its own, passing each
194
+ * line of its output to `out` as it arrives, and resolves to its exit
195
+ * code. `signal` drops the connection, for a sender done waiting.
196
+ * `markup`: lines come with their markup, for an `out` that paints them.
197
+ */
198
+ export declare function sendLine(id: string, line: string, out: (line: string) => void, signal?: AbortSignal, words?: string[], markup?: boolean): Promise<number>;
199
+ /**
200
+ * Ends a run as its `stop` would, passing on what it prints as it ends.
201
+ * One that doesn't answer, or doesn't finish ending in time, is sent
202
+ * SIGTERM: it ends one that never got the `stop` as Ctrl-C would, and
203
+ * kills one stuck ending. A run found to have ended already is never
204
+ * signalled, since its pid may be another process's by now. Resolves to
205
+ * whether the run has gone. `markup`: as for sendLine.
206
+ */
207
+ export declare function stopRun(record: RunRecord, out: (line: string) => void, markup?: boolean): Promise<boolean>;
208
+ /**
209
+ * `sm-dev list`'s table: a heading row, then a row per run, in aligned
210
+ * columns. Scripts are listed by file name, the first few and a count
211
+ * of the rest, so the total shows without a column of its own. `-` is
212
+ * none, or no tab count for a run that keeps none. `markup`: lines
213
+ * marked up for color (output-style.ts), for printing; otherwise plain,
214
+ * as an error message needs them.
215
+ */
216
+ export declare function runTable(records: RunRecord[], now?: number, { markup }?: {
217
+ markup?: boolean;
218
+ }): string[];
219
+ /**
220
+ * A run's browser as `list` shows it: `127.0.0.1:9233`, with
221
+ * `(owned, headless)` after it when so. `status` words it as a
222
+ * sentence (see `browserSentence`).
223
+ */
224
+ export declare function browserLabel(r: Pick<RunRecord, 'browser' | 'owned' | 'headless'>): string;
225
+ /**
226
+ * A run's browser as `status` says it: `connected to owned headless
227
+ * browser 127.0.0.1:9233`. `how` changes the first words (`launched`).
228
+ */
229
+ export declare function browserSentence(r: Pick<RunRecord, 'browser' | 'owned' | 'headless'>, how?: string): string;