sweetlink 0.2.0 → 0.2.1

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 (229) hide show
  1. package/CHANGELOG.md +6 -2
  2. package/LICENSE +1 -1
  3. package/README.md +6 -6
  4. package/dist/daemon/src/codename.d.ts.map +1 -1
  5. package/dist/daemon/src/codename.js +11 -11
  6. package/dist/daemon/src/codename.js.map +1 -1
  7. package/dist/daemon/src/index.d.ts +1 -1
  8. package/dist/daemon/src/index.js +131 -122
  9. package/dist/daemon/src/index.js.map +1 -1
  10. package/dist/shared/src/env.d.ts.map +1 -1
  11. package/dist/shared/src/env.js +12 -12
  12. package/dist/shared/src/env.js.map +1 -1
  13. package/dist/shared/src/index.d.ts +30 -30
  14. package/dist/shared/src/index.d.ts.map +1 -1
  15. package/dist/shared/src/index.js +17 -17
  16. package/dist/shared/src/index.js.map +1 -1
  17. package/dist/shared/src/node.d.ts +1 -1
  18. package/dist/shared/src/node.d.ts.map +1 -1
  19. package/dist/shared/src/node.js +18 -18
  20. package/dist/shared/src/node.js.map +1 -1
  21. package/dist/src/codex.d.ts +1 -1
  22. package/dist/src/codex.js +19 -19
  23. package/dist/src/codex.js.map +1 -1
  24. package/dist/src/commands/click.d.ts +1 -1
  25. package/dist/src/commands/click.d.ts.map +1 -1
  26. package/dist/src/commands/click.js +32 -24
  27. package/dist/src/commands/click.js.map +1 -1
  28. package/dist/src/commands/run-js.d.ts +1 -1
  29. package/dist/src/commands/run-js.d.ts.map +1 -1
  30. package/dist/src/commands/run-js.js +10 -10
  31. package/dist/src/commands/run-js.js.map +1 -1
  32. package/dist/src/commands/trust-ca.d.ts +1 -1
  33. package/dist/src/commands/trust-ca.js +15 -15
  34. package/dist/src/core/config-file.d.ts.map +1 -1
  35. package/dist/src/core/config-file.js +49 -41
  36. package/dist/src/core/config-file.js.map +1 -1
  37. package/dist/src/core/config.d.ts +2 -2
  38. package/dist/src/core/config.d.ts.map +1 -1
  39. package/dist/src/core/config.js +22 -18
  40. package/dist/src/core/config.js.map +1 -1
  41. package/dist/src/core/dev-bootstrap.d.ts +1 -1
  42. package/dist/src/core/dev-bootstrap.d.ts.map +1 -1
  43. package/dist/src/core/dev-bootstrap.js +12 -12
  44. package/dist/src/core/dev-bootstrap.js.map +1 -1
  45. package/dist/src/core/env.d.ts +1 -1
  46. package/dist/src/core/env.d.ts.map +1 -1
  47. package/dist/src/core/env.js +3 -3
  48. package/dist/src/core/env.js.map +1 -1
  49. package/dist/src/devtools-registry.d.ts.map +1 -1
  50. package/dist/src/devtools-registry.js +48 -46
  51. package/dist/src/devtools-registry.js.map +1 -1
  52. package/dist/src/env.d.ts +1 -1
  53. package/dist/src/env.js +1 -1
  54. package/dist/src/http.d.ts.map +1 -1
  55. package/dist/src/http.js +7 -6
  56. package/dist/src/http.js.map +1 -1
  57. package/dist/src/index.d.ts +7 -7
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +399 -367
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/runtime/browser/client.d.ts +3 -3
  62. package/dist/src/runtime/browser/client.d.ts.map +1 -1
  63. package/dist/src/runtime/browser/client.js +79 -72
  64. package/dist/src/runtime/browser/client.js.map +1 -1
  65. package/dist/src/runtime/browser/commands/index.d.ts +2 -2
  66. package/dist/src/runtime/browser/commands/index.js +17 -17
  67. package/dist/src/runtime/browser/commands/index.js.map +1 -1
  68. package/dist/src/runtime/browser/dom-to-image-loader.d.ts.map +1 -1
  69. package/dist/src/runtime/browser/dom-to-image-loader.js +7 -7
  70. package/dist/src/runtime/browser/dom-to-image-loader.js.map +1 -1
  71. package/dist/src/runtime/browser/index.d.ts +3 -3
  72. package/dist/src/runtime/browser/index.js +2 -2
  73. package/dist/src/runtime/browser/module-loader.js +2 -2
  74. package/dist/src/runtime/browser/screenshot/hooks.d.ts +5 -5
  75. package/dist/src/runtime/browser/screenshot/hooks.d.ts.map +1 -1
  76. package/dist/src/runtime/browser/screenshot/hooks.js +32 -29
  77. package/dist/src/runtime/browser/screenshot/hooks.js.map +1 -1
  78. package/dist/src/runtime/browser/screenshot/index.d.ts +3 -3
  79. package/dist/src/runtime/browser/screenshot/index.d.ts.map +1 -1
  80. package/dist/src/runtime/browser/screenshot/index.js +17 -15
  81. package/dist/src/runtime/browser/screenshot/index.js.map +1 -1
  82. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.d.ts +1 -1
  83. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.js +13 -13
  84. package/dist/src/runtime/browser/screenshot/renderers/dom-to-image.js.map +1 -1
  85. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.d.ts +1 -1
  86. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.d.ts.map +1 -1
  87. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.js +24 -24
  88. package/dist/src/runtime/browser/screenshot/renderers/html2canvas.js.map +1 -1
  89. package/dist/src/runtime/browser/screenshot/targets.d.ts +2 -2
  90. package/dist/src/runtime/browser/screenshot/targets.js +9 -9
  91. package/dist/src/runtime/browser/screenshot/utils.d.ts +1 -1
  92. package/dist/src/runtime/browser/screenshot/utils.d.ts.map +1 -1
  93. package/dist/src/runtime/browser/screenshot/utils.js +73 -71
  94. package/dist/src/runtime/browser/screenshot/utils.js.map +1 -1
  95. package/dist/src/runtime/browser/selector-discovery.d.ts +1 -1
  96. package/dist/src/runtime/browser/selector-discovery.d.ts.map +1 -1
  97. package/dist/src/runtime/browser/selector-discovery.js +24 -22
  98. package/dist/src/runtime/browser/selector-discovery.js.map +1 -1
  99. package/dist/src/runtime/browser/storage/session-storage.d.ts +1 -1
  100. package/dist/src/runtime/browser/storage/session-storage.d.ts.map +1 -1
  101. package/dist/src/runtime/browser/storage/session-storage.js +12 -10
  102. package/dist/src/runtime/browser/storage/session-storage.js.map +1 -1
  103. package/dist/src/runtime/browser/types.d.ts +7 -7
  104. package/dist/src/runtime/browser/types.js +1 -1
  105. package/dist/src/runtime/browser/utils/console.d.ts +1 -1
  106. package/dist/src/runtime/browser/utils/console.js +16 -16
  107. package/dist/src/runtime/browser/utils/console.js.map +1 -1
  108. package/dist/src/runtime/browser/utils/environment.js +2 -2
  109. package/dist/src/runtime/browser/utils/errors.d.ts.map +1 -1
  110. package/dist/src/runtime/browser/utils/errors.js +11 -11
  111. package/dist/src/runtime/browser/utils/number.d.ts.map +1 -1
  112. package/dist/src/runtime/browser/utils/number.js.map +1 -1
  113. package/dist/src/runtime/browser/utils/object.d.ts.map +1 -1
  114. package/dist/src/runtime/browser/utils/object.js +2 -2
  115. package/dist/src/runtime/browser/utils/object.js.map +1 -1
  116. package/dist/src/runtime/browser/utils/sanitize.js +2 -2
  117. package/dist/src/runtime/browser/utils/time.d.ts.map +1 -1
  118. package/dist/src/runtime/browser/utils/time.js +1 -1
  119. package/dist/src/runtime/chrome/cookies.d.ts +4 -4
  120. package/dist/src/runtime/chrome/cookies.d.ts.map +1 -1
  121. package/dist/src/runtime/chrome/cookies.js +31 -31
  122. package/dist/src/runtime/chrome/cookies.js.map +1 -1
  123. package/dist/src/runtime/chrome/deep-link.d.ts +1 -1
  124. package/dist/src/runtime/chrome/deep-link.d.ts.map +1 -1
  125. package/dist/src/runtime/chrome/deep-link.js +46 -36
  126. package/dist/src/runtime/chrome/deep-link.js.map +1 -1
  127. package/dist/src/runtime/chrome/diagnostics.d.ts.map +1 -1
  128. package/dist/src/runtime/chrome/diagnostics.js +13 -11
  129. package/dist/src/runtime/chrome/diagnostics.js.map +1 -1
  130. package/dist/src/runtime/chrome/focus.d.ts.map +1 -1
  131. package/dist/src/runtime/chrome/focus.js +5 -5
  132. package/dist/src/runtime/chrome/focus.js.map +1 -1
  133. package/dist/src/runtime/chrome/launch.d.ts.map +1 -1
  134. package/dist/src/runtime/chrome/launch.js +30 -30
  135. package/dist/src/runtime/chrome/launch.js.map +1 -1
  136. package/dist/src/runtime/chrome/puppeteer.d.ts +2 -2
  137. package/dist/src/runtime/chrome/puppeteer.d.ts.map +1 -1
  138. package/dist/src/runtime/chrome/puppeteer.js +16 -11
  139. package/dist/src/runtime/chrome/puppeteer.js.map +1 -1
  140. package/dist/src/runtime/chrome/reuse.d.ts.map +1 -1
  141. package/dist/src/runtime/chrome/reuse.js +38 -35
  142. package/dist/src/runtime/chrome/reuse.js.map +1 -1
  143. package/dist/src/runtime/chrome/session.d.ts +1 -1
  144. package/dist/src/runtime/chrome/session.d.ts.map +1 -1
  145. package/dist/src/runtime/chrome/session.js +12 -10
  146. package/dist/src/runtime/chrome/session.js.map +1 -1
  147. package/dist/src/runtime/chrome.d.ts +8 -8
  148. package/dist/src/runtime/chrome.js +8 -8
  149. package/dist/src/runtime/cookies.d.ts +1 -16
  150. package/dist/src/runtime/cookies.d.ts.map +1 -1
  151. package/dist/src/runtime/cookies.js +175 -286
  152. package/dist/src/runtime/cookies.js.map +1 -1
  153. package/dist/src/runtime/devstack.d.ts +1 -1
  154. package/dist/src/runtime/devstack.d.ts.map +1 -1
  155. package/dist/src/runtime/devstack.js +31 -28
  156. package/dist/src/runtime/devstack.js.map +1 -1
  157. package/dist/src/runtime/devtools/background.js +22 -22
  158. package/dist/src/runtime/devtools/cdp.d.ts +3 -3
  159. package/dist/src/runtime/devtools/cdp.d.ts.map +1 -1
  160. package/dist/src/runtime/devtools/cdp.js +59 -55
  161. package/dist/src/runtime/devtools/cdp.js.map +1 -1
  162. package/dist/src/runtime/devtools/config.d.ts.map +1 -1
  163. package/dist/src/runtime/devtools/config.js +15 -15
  164. package/dist/src/runtime/devtools/config.js.map +1 -1
  165. package/dist/src/runtime/devtools/constants.d.ts.map +1 -1
  166. package/dist/src/runtime/devtools/constants.js +18 -10
  167. package/dist/src/runtime/devtools/constants.js.map +1 -1
  168. package/dist/src/runtime/devtools/diagnostics.d.ts +4 -4
  169. package/dist/src/runtime/devtools/diagnostics.d.ts.map +1 -1
  170. package/dist/src/runtime/devtools/diagnostics.js +40 -38
  171. package/dist/src/runtime/devtools/diagnostics.js.map +1 -1
  172. package/dist/src/runtime/devtools/oauth.d.ts +1 -1
  173. package/dist/src/runtime/devtools/oauth.d.ts.map +1 -1
  174. package/dist/src/runtime/devtools/oauth.js +35 -28
  175. package/dist/src/runtime/devtools/oauth.js.map +1 -1
  176. package/dist/src/runtime/devtools/types.d.ts +3 -3
  177. package/dist/src/runtime/devtools/types.d.ts.map +1 -1
  178. package/dist/src/runtime/devtools.d.ts +7 -7
  179. package/dist/src/runtime/devtools.js +7 -7
  180. package/dist/src/runtime/next-devtools.d.ts.map +1 -1
  181. package/dist/src/runtime/next-devtools.js +12 -12
  182. package/dist/src/runtime/next-devtools.js.map +1 -1
  183. package/dist/src/runtime/screenshot.d.ts +9 -9
  184. package/dist/src/runtime/screenshot.d.ts.map +1 -1
  185. package/dist/src/runtime/screenshot.js +65 -46
  186. package/dist/src/runtime/screenshot.js.map +1 -1
  187. package/dist/src/runtime/scripts.d.ts +1 -1
  188. package/dist/src/runtime/scripts.d.ts.map +1 -1
  189. package/dist/src/runtime/scripts.js +28 -28
  190. package/dist/src/runtime/scripts.js.map +1 -1
  191. package/dist/src/runtime/session.d.ts +6 -6
  192. package/dist/src/runtime/session.d.ts.map +1 -1
  193. package/dist/src/runtime/session.js +35 -35
  194. package/dist/src/runtime/session.js.map +1 -1
  195. package/dist/src/runtime/smoke.d.ts +3 -3
  196. package/dist/src/runtime/smoke.d.ts.map +1 -1
  197. package/dist/src/runtime/smoke.js +85 -79
  198. package/dist/src/runtime/smoke.js.map +1 -1
  199. package/dist/src/runtime/url.d.ts +2 -2
  200. package/dist/src/runtime/url.d.ts.map +1 -1
  201. package/dist/src/runtime/url.js +20 -20
  202. package/dist/src/runtime/url.js.map +1 -1
  203. package/dist/src/screenshot-hooks.d.ts +1 -1
  204. package/dist/src/screenshot-hooks.d.ts.map +1 -1
  205. package/dist/src/screenshot-hooks.js +12 -12
  206. package/dist/src/screenshot-hooks.js.map +1 -1
  207. package/dist/src/shared/env.d.ts.map +1 -1
  208. package/dist/src/shared/env.js +11 -11
  209. package/dist/src/shared/env.js.map +1 -1
  210. package/dist/src/shared/index.d.ts +30 -30
  211. package/dist/src/shared/index.d.ts.map +1 -1
  212. package/dist/src/shared/index.js +17 -17
  213. package/dist/src/shared/index.js.map +1 -1
  214. package/dist/src/shared/node.d.ts +1 -1
  215. package/dist/src/shared/node.d.ts.map +1 -1
  216. package/dist/src/shared/node.js +18 -18
  217. package/dist/src/shared/node.js.map +1 -1
  218. package/dist/src/token.d.ts +1 -1
  219. package/dist/src/token.d.ts.map +1 -1
  220. package/dist/src/token.js +16 -16
  221. package/dist/src/token.js.map +1 -1
  222. package/dist/src/types.d.ts +1 -1
  223. package/dist/src/util/app-label.js +4 -4
  224. package/dist/src/util/errors.d.ts.map +1 -1
  225. package/dist/src/util/errors.js +12 -10
  226. package/dist/src/util/errors.js.map +1 -1
  227. package/dist/src/util/path.js +2 -2
  228. package/dist/src/util/regex.js +4 -4
  229. package/package.json +45 -39
package/dist/src/codex.js CHANGED
@@ -1,18 +1,18 @@
1
- import { spawn } from 'node:child_process';
2
- import { describeAppForPrompt } from './util/app-label.js';
3
- import { extractEventMessage, isErrnoException } from './util/errors.js';
4
- const CODEX_ARGS = ['exec', '--yolo', '--skip-git-repo-check'];
1
+ import { spawn } from "node:child_process";
2
+ import { describeAppForPrompt } from "./util/app-label.js";
3
+ import { extractEventMessage, isErrnoException } from "./util/errors.js";
4
+ const CODEX_ARGS = ["exec", "--yolo", "--skip-git-repo-check"];
5
5
  /** Invokes the Codex CLI with optional stdin. */
6
6
  async function runCodexExec(args, options = {}) {
7
7
  const stdio = options.stdin
8
- ? ['pipe', 'inherit', 'inherit']
9
- : ['inherit', 'inherit', 'inherit'];
10
- const child = spawn('codex', [...CODEX_ARGS, ...args], { stdio });
8
+ ? ["pipe", "inherit", "inherit"]
9
+ : ["inherit", "inherit", "inherit"];
10
+ const child = spawn("codex", [...CODEX_ARGS, ...args], { stdio });
11
11
  return await new Promise((resolve, reject) => {
12
- child.once('error', (error) => reject(error));
13
- child.once('close', (code) => resolve(code ?? 0));
12
+ child.once("error", (error) => reject(error));
13
+ child.once("close", (code) => resolve(code ?? 0));
14
14
  if (options.stdin) {
15
- const payload = options.stdin.endsWith('\n') ? options.stdin : `${options.stdin}\n`;
15
+ const payload = options.stdin.endsWith("\n") ? options.stdin : `${options.stdin}\n`;
16
16
  child.stdin?.write(payload);
17
17
  child.stdin?.end();
18
18
  }
@@ -20,8 +20,8 @@ async function runCodexExec(args, options = {}) {
20
20
  }
21
21
  /** Asks Codex about a screenshot file. */
22
22
  export function runCodexImagePrompt(imagePath, prompt) {
23
- const payload = prompt.endsWith('\n') ? prompt : `${prompt}\n`;
24
- return runCodexExec(['-i', imagePath, '-'], { stdin: payload });
23
+ const payload = prompt.endsWith("\n") ? prompt : `${prompt}\n`;
24
+ return runCodexExec(["-i", imagePath, "-"], { stdin: payload });
25
25
  }
26
26
  /** Asks Codex about a text payload. */
27
27
  export function runCodexTextPrompt(prompt) {
@@ -36,15 +36,15 @@ export async function analyzeConsoleWithCodex(selector, prompt, events, options
36
36
  const lines = events.length > 0
37
37
  ? events.map((event) => {
38
38
  const timestamp = new Date(event.timestamp ?? Date.now()).toLocaleTimeString();
39
- const args = Array.isArray(event.args) ? event.args.map(String).join(' ') : '';
40
- const suffix = args.length > 0 ? `: ${args}` : '';
39
+ const args = Array.isArray(event.args) ? event.args.map(String).join(" ") : "";
40
+ const suffix = args.length > 0 ? `: ${args}` : "";
41
41
  return `[${timestamp}] ${event.level}${suffix}`;
42
42
  })
43
- : ['(no console events were captured after the click)'];
43
+ : ["(no console events were captured after the click)"];
44
44
  const appDescription = describeAppForPrompt(options.appLabel);
45
45
  const combinedPrompt = `You are analyzing console output from ${appDescription} immediately after triggering a click on selector "${selector}". ` +
46
- 'Review the log lines below (most recent last) and answer the agent’s question.\n\n' +
47
- `Console output:\n${lines.join('\n')}\n\nQuestion: ${question}`;
46
+ "Review the log lines below (most recent last) and answer the agent’s question.\n\n" +
47
+ `Console output:\n${lines.join("\n")}\n\nQuestion: ${question}`;
48
48
  if (!options.silent) {
49
49
  console.log(`Asking Codex about console output after ${selector}: ${question}`);
50
50
  }
@@ -58,8 +58,8 @@ export async function analyzeConsoleWithCodex(selector, prompt, events, options
58
58
  }
59
59
  catch (error) {
60
60
  const message = extractEventMessage(error);
61
- const missing = isErrnoException(error) && error.code === 'ENOENT';
62
- const prefix = missing ? 'Codex CLI not found' : `Codex CLI failed: ${message}`;
61
+ const missing = isErrnoException(error) && error.code === "ENOENT";
62
+ const prefix = missing ? "Codex CLI not found" : `Codex CLI failed: ${message}`;
63
63
  console.warn(missing ? `${prefix}; install it or add it to $PATH to use --prompt.` : prefix);
64
64
  return false;
65
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC;AAE/D,iDAAiD;AACjD,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,OAAO,GAAuB,EAAE;IAC1E,MAAM,KAAK,GAA0B,OAAO,CAAC,KAAK;QAChD,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;QAChC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC;YACpF,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,MAAc;IACnE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IAC/D,OAAO,YAAY,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,MAAc,EACd,MAA8B,EAC9B,OAAO,GAA4C,EAAE;IAErD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,GAAG,CAAC;QACf,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC;YAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC;QAClD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,cAAc,GAClB,yCAAyC,cAAc,sDAAsD,QAAQ,KAAK;QAC1H,oFAAoF;QACpF,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC;IAClE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,2CAA2C,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,4BAA4B,QAAQ,GAAG,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QACnE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,OAAO,EAAE,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,kDAAkD,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC7F,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { Command } from 'commander';
1
+ import type { Command } from "commander";
2
2
  export declare function registerClickCommand(program: Command): void;
3
3
  //# sourceMappingURL=click.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../../src/commands/click.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C3D"}
1
+ {"version":3,"file":"click.d.ts","sourceRoot":"","sources":["../../../src/commands/click.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwD3D"}
@@ -1,27 +1,27 @@
1
- import { analyzeConsoleWithCodex } from '../codex.js';
2
- import { resolveConfig } from '../core/config.js';
3
- import { readCommandOptions } from '../core/env.js';
4
- import { sweetLinkDebug } from '../env.js';
5
- import { renderCommandResult } from '../runtime/scripts.js';
6
- import { buildClickScript, executeRunScriptCommand, fetchConsoleEvents, resolvePromptOption, resolveSessionIdFromHint, } from '../runtime/session.js';
7
- import { extractEventMessage } from '../util/errors.js';
8
- import { delay } from '../util/time.js';
1
+ import { analyzeConsoleWithCodex } from "../codex.js";
2
+ import { resolveConfig } from "../core/config.js";
3
+ import { readCommandOptions } from "../core/env.js";
4
+ import { sweetLinkDebug } from "../env.js";
5
+ import { renderCommandResult } from "../runtime/scripts.js";
6
+ import { buildClickScript, executeRunScriptCommand, fetchConsoleEvents, resolvePromptOption, resolveSessionIdFromHint, } from "../runtime/session.js";
7
+ import { extractEventMessage } from "../util/errors.js";
8
+ import { delay } from "../util/time.js";
9
9
  const POST_CLICK_CONSOLE_LIMIT = 20;
10
10
  export function registerClickCommand(program) {
11
11
  program
12
- .command('click <sessionId>')
13
- .description('Dispatch a click event on a selector inside a SweetLink session')
14
- .requiredOption('-s, --selector <selector>', 'CSS selector to click')
15
- .option('--no-scroll', 'Skip scrolling the element into view before clicking', false)
16
- .option('--no-bubbles', 'Dispatch the click event without bubbling', false)
17
- .option('-t, --timeout <ms>', 'Command timeout in milliseconds (default 15_000)', Number, 15_000)
18
- .option('--prompt <prompt>', 'Send console output after the click to Codex for analysis')
19
- .addOption(program.createOption('--question <prompt>').hideHelp())
12
+ .command("click <sessionId>")
13
+ .description("Dispatch a click event on a selector inside a SweetLink session")
14
+ .requiredOption("-s, --selector <selector>", "CSS selector to click")
15
+ .option("--no-scroll", "Skip scrolling the element into view before clicking")
16
+ .option("--no-bubbles", "Dispatch the click event without bubbling")
17
+ .option("-t, --timeout <ms>", "Command timeout in milliseconds (default 15_000)", Number, 15_000)
18
+ .option("--prompt <prompt>", "Send console output after the click to Codex for analysis")
19
+ .addOption(program.createOption("--question <prompt>").hideHelp())
20
20
  .action(async function (sessionId) {
21
21
  const options = readCommandOptions(this);
22
22
  const selector = options.selector?.trim();
23
23
  if (!selector) {
24
- throw new Error('A --selector value is required for sweetlink click');
24
+ throw new Error("A --selector value is required for sweetlink click");
25
25
  }
26
26
  const prompt = resolvePromptOption(options);
27
27
  const config = resolveConfig(this);
@@ -32,7 +32,9 @@ export function registerClickCommand(program) {
32
32
  scrollIntoView: options.scroll !== false,
33
33
  bubbles: options.bubbles !== false,
34
34
  });
35
- const timeoutMs = typeof options.timeout === 'number' && Number.isFinite(options.timeout) ? options.timeout : 15_000;
35
+ const timeoutMs = typeof options.timeout === "number" && Number.isFinite(options.timeout)
36
+ ? options.timeout
37
+ : 15_000;
36
38
  const result = await executeRunScriptCommand(config, {
37
39
  sessionId: resolvedSessionId,
38
40
  code: script,
@@ -40,7 +42,13 @@ export function registerClickCommand(program) {
40
42
  });
41
43
  renderCommandResult(result);
42
44
  await delay(250);
43
- await reportConsoleAfterClick({ config, sessionId: resolvedSessionId, baselineIds, prompt, selector });
45
+ await reportConsoleAfterClick({
46
+ config,
47
+ sessionId: resolvedSessionId,
48
+ baselineIds,
49
+ prompt,
50
+ selector,
51
+ });
44
52
  });
45
53
  }
46
54
  async function fetchBaselineConsoleIds(config, sessionId) {
@@ -50,7 +58,7 @@ async function fetchBaselineConsoleIds(config, sessionId) {
50
58
  }
51
59
  catch (error) {
52
60
  if (sweetLinkDebug) {
53
- console.warn('Failed to fetch baseline console events before click.', error);
61
+ console.warn("Failed to fetch baseline console events before click.", error);
54
62
  }
55
63
  return null;
56
64
  }
@@ -72,22 +80,22 @@ async function reportConsoleAfterClick(params) {
72
80
  }
73
81
  }
74
82
  if (recent.length > 0) {
75
- console.log(`Console after click (${recent.length} event${recent.length === 1 ? '' : 's'}):`);
83
+ console.log(`Console after click (${recent.length} event${recent.length === 1 ? "" : "s"}):`);
76
84
  for (const event of recent) {
77
85
  const timestamp = new Date(event.timestamp ?? Date.now()).toLocaleTimeString();
78
86
  console.log(` [${timestamp}] ${event.level}:`, ...event.args);
79
87
  }
80
88
  const dropped = newEvents.length - recent.length;
81
89
  if (dropped > 0) {
82
- console.log(` … ${dropped} more event${dropped === 1 ? '' : 's'} omitted`);
90
+ console.log(` … ${dropped} more event${dropped === 1 ? "" : "s"} omitted`);
83
91
  }
84
92
  }
85
93
  else if (params.prompt) {
86
- console.log('Console after click: no new events captured.');
94
+ console.log("Console after click: no new events captured.");
87
95
  }
88
96
  }
89
97
  catch (error) {
90
- console.warn('Unable to fetch console events after click:', extractEventMessage(error));
98
+ console.warn("Unable to fetch console events after click:", extractEventMessage(error));
91
99
  }
92
100
  }
93
101
  //# sourceMappingURL=click.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"click.js","sourceRoot":"","sources":["../../../src/commands/click.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"click.js","sourceRoot":"","sources":["../../../src/commands/click.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Command } from 'commander';
1
+ import type { Command } from "commander";
2
2
  /** Registers the `sweetlink run-js` command. */
3
3
  export declare function registerRunJsCommand(program: Command): void;
4
4
  //# sourceMappingURL=run-js.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-js.d.ts","sourceRoot":"","sources":["../../../src/commands/run-js.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,gDAAgD;AAChD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuB3D"}
1
+ {"version":3,"file":"run-js.d.ts","sourceRoot":"","sources":["../../../src/commands/run-js.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,gDAAgD;AAChD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4B3D"}
@@ -1,16 +1,16 @@
1
- import { resolveConfig } from '../core/config.js';
2
- import { readCommandOptions } from '../core/env.js';
3
- import { renderCommandResult, resolveScript } from '../runtime/scripts.js';
4
- import { executeRunScriptCommand, resolveSessionIdFromHint } from '../runtime/session.js';
1
+ import { resolveConfig } from "../core/config.js";
2
+ import { readCommandOptions } from "../core/env.js";
3
+ import { renderCommandResult, resolveScript } from "../runtime/scripts.js";
4
+ import { executeRunScriptCommand, resolveSessionIdFromHint } from "../runtime/session.js";
5
5
  /** Registers the `sweetlink run-js` command. */
6
6
  export function registerRunJsCommand(program) {
7
7
  program
8
- .command('run-js <sessionId> [inline...]')
9
- .description('Execute JavaScript inside a SweetLink session')
10
- .option('-c, --code <code...>', 'Inline JavaScript to execute')
11
- .option('-f, --file <path>', 'Path to a file containing JavaScript')
12
- .option('--capture-console', 'Return console output from the page context', false)
13
- .option('-t, --timeout <ms>', 'Command timeout in milliseconds (default 15_000)', Number, 15_000)
8
+ .command("run-js <sessionId> [inline...]")
9
+ .description("Execute JavaScript inside a SweetLink session")
10
+ .option("-c, --code <code...>", "Inline JavaScript to execute")
11
+ .option("-f, --file <path>", "Path to a file containing JavaScript")
12
+ .option("--capture-console", "Return console output from the page context", false)
13
+ .option("-t, --timeout <ms>", "Command timeout in milliseconds (default 15_000)", Number, 15_000)
14
14
  .action(async function (sessionId, inline) {
15
15
  const options = readCommandOptions(this);
16
16
  const code = await resolveScript(options, inline);
@@ -1 +1 @@
1
- {"version":3,"file":"run-js.js","sourceRoot":"","sources":["../../../src/commands/run-js.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAqB,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE1F,gDAAgD;AAChD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,gCAAgC,CAAC;SACzC,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;SAC9D,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;SACnE,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,EAAE,KAAK,CAAC;SACjF,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,EAAE,MAAM,EAAE,MAAM,CAAC;SAChG,MAAM,CAAC,KAAK,WAA0B,SAAiB,EAAE,MAA4B;QACpF,MAAM,OAAO,GAAG,kBAAkB,CAAe,IAAI,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE;YACnD,SAAS,EAAE,iBAAiB;YAC5B,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,OAAO;YAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;QAEH,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"run-js.js","sourceRoot":"","sources":["../../../src/commands/run-js.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAqB,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE1F,gDAAgD;AAChD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,gCAAgC,CAAC;SACzC,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;SAC9D,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;SACnE,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,EAAE,KAAK,CAAC;SACjF,MAAM,CACL,oBAAoB,EACpB,kDAAkD,EAClD,MAAM,EACN,MAAM,CACP;SACA,MAAM,CAAC,KAAK,WAA0B,SAAiB,EAAE,MAA4B;QACpF,MAAM,OAAO,GAAG,kBAAkB,CAAe,IAAI,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,iBAAiB,GAAG,MAAM,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE;YACnD,SAAS,EAAE,iBAAiB;YAC5B,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,OAAO;YAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;QAEH,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { Command } from 'commander';
1
+ import type { Command } from "commander";
2
2
  export declare function registerTrustCaCommand(program: Command): void;
3
3
  //# sourceMappingURL=trust-ca.d.ts.map
@@ -1,8 +1,8 @@
1
- import { spawn } from 'node:child_process';
2
- import { access } from 'node:fs/promises';
3
- import path from 'node:path';
4
- const DEFAULT_MKCERT_PATH = 'mkcert';
5
- const MKCERT_INSTALL_ARGS = ['-install'];
1
+ import { spawn } from "node:child_process";
2
+ import { access } from "node:fs/promises";
3
+ import path from "node:path";
4
+ const DEFAULT_MKCERT_PATH = "mkcert";
5
+ const MKCERT_INSTALL_ARGS = ["-install"];
6
6
  async function resolveMkcertBinary(candidate) {
7
7
  const bin = candidate?.trim() ?? DEFAULT_MKCERT_PATH;
8
8
  if (path.isAbsolute(bin)) {
@@ -13,31 +13,31 @@ async function resolveMkcertBinary(candidate) {
13
13
  }
14
14
  export function registerTrustCaCommand(program) {
15
15
  program
16
- .command('trust-ca')
16
+ .command("trust-ca")
17
17
  .description([
18
- 'Install or refresh the SweetLink TLS certificate.',
19
- 'Runs `mkcert -install` so browsers and the daemon share the same trusted CA.',
20
- ].join(' '))
21
- .option('--mkcert <path>', 'Explicit path to the mkcert binary')
18
+ "Install or refresh the SweetLink TLS certificate.",
19
+ "Runs `mkcert -install` so browsers and the daemon share the same trusted CA.",
20
+ ].join(" "))
21
+ .option("--mkcert <path>", "Explicit path to the mkcert binary")
22
22
  .action(async (options) => {
23
23
  const mkcertBinary = await resolveMkcertBinary(options.mkcert);
24
24
  await new Promise((resolve, reject) => {
25
25
  const child = spawn(mkcertBinary, MKCERT_INSTALL_ARGS, {
26
- stdio: 'inherit',
26
+ stdio: "inherit",
27
27
  });
28
- child.on('exit', (code) => {
28
+ child.on("exit", (code) => {
29
29
  if (code === 0) {
30
30
  resolve();
31
31
  return;
32
32
  }
33
- reject(new Error(`mkcert exited with code ${code ?? 'unknown'}. Ensure mkcert is installed (https://github.com/FiloSottile/mkcert) and rerun this command.`));
33
+ reject(new Error(`mkcert exited with code ${code ?? "unknown"}. Ensure mkcert is installed (https://github.com/FiloSottile/mkcert) and rerun this command.`));
34
34
  });
35
- child.on('error', (error) => {
35
+ child.on("error", (error) => {
36
36
  reject(new Error(`Unable to execute mkcert at "${mkcertBinary}": ${error instanceof Error ? error.message : String(error)}`));
37
37
  });
38
38
  });
39
39
  // eslint-disable-next-line no-console -- CLI feedback for operators
40
- console.log('✅ SweetLink certificate installed. Reload https://localhost:4455 in your browser to trust the daemon.');
40
+ console.log("✅ SweetLink certificate installed. Reload https://localhost:4455 in your browser to trust the daemon.");
41
41
  });
42
42
  }
43
43
  //# sourceMappingURL=trust-ca.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../../src/core/config-file.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,cAAc,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC1C,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAMD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,wBAAgB,uBAAuB,IAAI,YAAY,CA0BtD"}
1
+ {"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../../src/core/config-file.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,cAAc,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC1C,YAAY,CAAC,EAAE,2BAA2B,CAAC;IAC3C,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,SAAS,CAAC,EAAE,wBAAwB,CAAC;IACrC,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAMD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,wBAAgB,uBAAuB,IAAI,YAAY,CA0BtD"}
@@ -1,8 +1,8 @@
1
- import { existsSync, readFileSync } from 'node:fs';
2
- import path from 'node:path';
3
- import { compact } from 'es-toolkit';
4
- import { TRAILING_SLASH_PATTERN } from '../util/regex.js';
5
- const CONFIG_BASENAMES = ['sweetlink.json', 'sweetlink.config.json'];
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { compact } from "es-toolkit";
4
+ import { TRAILING_SLASH_PATTERN } from "../util/regex.js";
5
+ const CONFIG_BASENAMES = ["sweetlink.json", "sweetlink.config.json"];
6
6
  let cachedConfig = null;
7
7
  export function resetSweetLinkFileConfigCache() {
8
8
  cachedConfig = null;
@@ -17,7 +17,7 @@ export function loadSweetLinkFileConfig() {
17
17
  return cachedConfig;
18
18
  }
19
19
  try {
20
- const raw = readFileSync(resolvedPath, 'utf8');
20
+ const raw = readFileSync(resolvedPath, "utf8");
21
21
  const parsed = JSON.parse(raw);
22
22
  const baseDirectory = path.dirname(resolvedPath);
23
23
  const config = normalizeConfig(parsed, baseDirectory);
@@ -49,37 +49,37 @@ function findConfigPath(initialDirectory) {
49
49
  }
50
50
  function normalizeConfig(raw, baseDirectory) {
51
51
  const config = {};
52
- if (typeof raw.appLabel === 'string') {
52
+ if (typeof raw.appLabel === "string") {
53
53
  const trimmed = raw.appLabel.trim();
54
54
  if (trimmed.length > 0) {
55
55
  config.appLabel = trimmed;
56
56
  }
57
57
  }
58
- if (typeof raw.appUrl === 'string') {
58
+ if (typeof raw.appUrl === "string") {
59
59
  const trimmed = raw.appUrl.trim();
60
60
  if (trimmed.length > 0) {
61
61
  config.appUrl = trimmed;
62
62
  }
63
63
  }
64
- if (typeof raw.prodUrl === 'string') {
64
+ if (typeof raw.prodUrl === "string") {
65
65
  const trimmed = raw.prodUrl.trim();
66
66
  if (trimmed.length > 0) {
67
67
  config.prodUrl = trimmed;
68
68
  }
69
69
  }
70
- if (typeof raw.daemonUrl === 'string') {
70
+ if (typeof raw.daemonUrl === "string") {
71
71
  const trimmed = raw.daemonUrl.trim();
72
72
  if (trimmed.length > 0) {
73
73
  config.daemonUrl = trimmed;
74
74
  }
75
75
  }
76
- if (typeof raw.adminKey === 'string') {
76
+ if (typeof raw.adminKey === "string") {
77
77
  const trimmed = raw.adminKey.trim();
78
78
  if (trimmed.length > 0) {
79
79
  config.adminKey = trimmed;
80
80
  }
81
81
  }
82
- if (typeof raw.port === 'number' && Number.isFinite(raw.port) && raw.port > 0) {
82
+ if (typeof raw.port === "number" && Number.isFinite(raw.port) && raw.port > 0) {
83
83
  config.port = Math.floor(raw.port);
84
84
  }
85
85
  const cookieMappings = normalizeCookieMappingsSection(raw.cookieMappings);
@@ -106,7 +106,7 @@ function normalizeConfig(raw, baseDirectory) {
106
106
  if (servers.length > 0) {
107
107
  config.servers = servers;
108
108
  }
109
- if (typeof raw.oauthScript === 'string') {
109
+ if (typeof raw.oauthScript === "string") {
110
110
  const trimmed = raw.oauthScript.trim();
111
111
  if (trimmed.length > 0) {
112
112
  const resolved = resolveConfigPath(trimmed, baseDirectory);
@@ -123,7 +123,7 @@ function resolveConfigPath(candidate, baseDirectory) {
123
123
  return path.resolve(base, candidate);
124
124
  }
125
125
  function normalizeStringArray(value) {
126
- if (typeof value === 'string') {
126
+ if (typeof value === "string") {
127
127
  const trimmed = value.trim();
128
128
  return trimmed.length > 0 ? [trimmed] : [];
129
129
  }
@@ -131,7 +131,7 @@ function normalizeStringArray(value) {
131
131
  return [];
132
132
  }
133
133
  return compact(value.map((item) => {
134
- if (typeof item !== 'string') {
134
+ if (typeof item !== "string") {
135
135
  return null;
136
136
  }
137
137
  const trimmed = item.trim();
@@ -139,14 +139,14 @@ function normalizeStringArray(value) {
139
139
  }));
140
140
  }
141
141
  function normalizeOptionalString(value) {
142
- if (typeof value !== 'string') {
142
+ if (typeof value !== "string") {
143
143
  return null;
144
144
  }
145
145
  const trimmed = value.trim();
146
146
  return trimmed.length > 0 ? trimmed : null;
147
147
  }
148
148
  function normalizeDevBootstrapSection(value) {
149
- if (!value || typeof value !== 'object') {
149
+ if (!value || typeof value !== "object") {
150
150
  return null;
151
151
  }
152
152
  if (Array.isArray(value)) {
@@ -159,18 +159,24 @@ function normalizeDevBootstrapSection(value) {
159
159
  if (!(endpoint || loginPath)) {
160
160
  return null;
161
161
  }
162
- return { endpoint: endpoint ?? undefined, loginPath: loginPath ?? undefined, redirectParam: redirectParam ?? undefined };
162
+ return {
163
+ endpoint: endpoint ?? undefined,
164
+ loginPath: loginPath ?? undefined,
165
+ redirectParam: redirectParam ?? undefined,
166
+ };
163
167
  }
164
168
  function normalizeCookieMappingsSection(value) {
165
169
  if (!Array.isArray(value)) {
166
170
  return [];
167
171
  }
168
172
  return compact(value.map((entry) => {
169
- if (!entry || typeof entry !== 'object') {
173
+ if (!entry || typeof entry !== "object") {
170
174
  return null;
171
175
  }
172
- const hostsRaw = normalizeStringArray(entry.hosts ?? entry.match);
173
- const originsRaw = normalizeStringArray(entry.origins ?? entry.include);
176
+ const hostsRaw = normalizeStringArray(entry.hosts ??
177
+ entry.match);
178
+ const originsRaw = normalizeStringArray(entry.origins ??
179
+ entry.include);
174
180
  if (hostsRaw.length === 0 || originsRaw.length === 0) {
175
181
  return null;
176
182
  }
@@ -181,19 +187,19 @@ function normalizeCookieMappingsSection(value) {
181
187
  }));
182
188
  }
183
189
  function normalizeHealthChecksSection(value) {
184
- if (!value || typeof value !== 'object') {
190
+ if (!value || typeof value !== "object") {
185
191
  return null;
186
192
  }
187
193
  const paths = normalizeStringArray(value.paths ?? value.path);
188
194
  return paths.length > 0 ? { paths } : null;
189
195
  }
190
196
  function normalizeSmokeRoutesSection(value) {
191
- if (!value || typeof value !== 'object') {
197
+ if (!value || typeof value !== "object") {
192
198
  return null;
193
199
  }
194
200
  const defaults = normalizeStringArray(value.defaults);
195
201
  const rawPresets = value.presets;
196
- const normalizedPresets = rawPresets && typeof rawPresets === 'object'
202
+ const normalizedPresets = rawPresets && typeof rawPresets === "object"
197
203
  ? Object.fromEntries(compact(Object.entries(rawPresets).map(([key, routeList]) => {
198
204
  const routes = normalizeStringArray(routeList);
199
205
  return routes.length > 0 ? [key, routes] : null;
@@ -215,25 +221,27 @@ function normalizeServersSection(value, baseDirectory) {
215
221
  return [];
216
222
  }
217
223
  return compact(value.map((entry) => {
218
- if (!entry || typeof entry !== 'object') {
224
+ if (!entry || typeof entry !== "object") {
219
225
  return null;
220
226
  }
221
227
  const record = entry;
222
- const envCandidate = typeof record.env === 'string' ? record.env.trim() : '';
228
+ const envCandidate = typeof record.env === "string" ? record.env.trim() : "";
223
229
  if (!envCandidate) {
224
230
  return null;
225
231
  }
226
232
  const startCommand = normalizeCommandArray(record.start);
227
233
  const checkCommand = normalizeCommandArray(record.check);
228
234
  const timeoutMs = normalizeTimeout(record.timeoutMs);
229
- const cwdRaw = typeof record.cwd === 'string' ? record.cwd.trim() : '';
230
- const cwdResolved = cwdRaw.length > 0 ? resolveConfigPath(cwdRaw, baseDirectory) : (baseDirectory ?? process.cwd());
235
+ const cwdRaw = typeof record.cwd === "string" ? record.cwd.trim() : "";
236
+ const cwdResolved = cwdRaw.length > 0
237
+ ? resolveConfigPath(cwdRaw, baseDirectory)
238
+ : (baseDirectory ?? process.cwd());
231
239
  return {
232
240
  env: envCandidate,
233
241
  ...(startCommand ? { start: startCommand } : {}),
234
242
  ...(checkCommand ? { check: checkCommand } : {}),
235
243
  ...(cwdResolved ? { cwd: cwdResolved } : {}),
236
- ...(typeof timeoutMs === 'number' ? { timeoutMs } : {}),
244
+ ...(typeof timeoutMs === "number" ? { timeoutMs } : {}),
237
245
  };
238
246
  }));
239
247
  }
@@ -241,18 +249,18 @@ function normalizeCommandArray(value) {
241
249
  if (!value) {
242
250
  return null;
243
251
  }
244
- if (typeof value === 'string') {
252
+ if (typeof value === "string") {
245
253
  const trimmed = value.trim();
246
254
  if (trimmed.length === 0) {
247
255
  return null;
248
256
  }
249
- return ['sh', '-c', trimmed];
257
+ return ["sh", "-c", trimmed];
250
258
  }
251
259
  if (!Array.isArray(value)) {
252
260
  return null;
253
261
  }
254
262
  const command = compact(value.map((item) => {
255
- if (typeof item !== 'string') {
263
+ if (typeof item !== "string") {
256
264
  return null;
257
265
  }
258
266
  const trimmed = item.trim();
@@ -261,10 +269,10 @@ function normalizeCommandArray(value) {
261
269
  return command.length > 0 ? command : null;
262
270
  }
263
271
  function normalizeTimeout(value) {
264
- if (typeof value === 'number' && Number.isFinite(value) && value > 0) {
272
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) {
265
273
  return Math.floor(value);
266
274
  }
267
- if (typeof value === 'string') {
275
+ if (typeof value === "string") {
268
276
  const parsed = Number.parseInt(value, 10);
269
277
  if (Number.isFinite(parsed) && parsed > 0) {
270
278
  return parsed;
@@ -273,21 +281,21 @@ function normalizeTimeout(value) {
273
281
  return null;
274
282
  }
275
283
  function canonicalizeRedirectPath(value) {
276
- if (typeof value !== 'string') {
284
+ if (typeof value !== "string") {
277
285
  return null;
278
286
  }
279
287
  let normalized = value.trim();
280
- if (!normalized.startsWith('/')) {
288
+ if (!normalized.startsWith("/")) {
281
289
  normalized = `/${normalized}`;
282
290
  }
283
- normalized = normalized.replace(TRAILING_SLASH_PATTERN, '');
291
+ normalized = normalized.replace(TRAILING_SLASH_PATTERN, "");
284
292
  if (!normalized) {
285
- return '/';
293
+ return "/";
286
294
  }
287
- return normalized || '/';
295
+ return normalized || "/";
288
296
  }
289
297
  function normalizeRedirectsSection(value) {
290
- if (!value || typeof value !== 'object') {
298
+ if (!value || typeof value !== "object") {
291
299
  return;
292
300
  }
293
301
  const entries = Object.entries(value);
@@ -296,7 +304,7 @@ function normalizeRedirectsSection(value) {
296
304
  }
297
305
  const redirects = {};
298
306
  for (const [rawSource, rawTarget] of entries) {
299
- if (typeof rawSource !== 'string' || typeof rawTarget !== 'string') {
307
+ if (typeof rawSource !== "string" || typeof rawTarget !== "string") {
300
308
  continue;
301
309
  }
302
310
  const sourcePath = canonicalizeRedirectPath(rawSource);