@zenalexa/unicli 0.224.0 → 0.225.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 (170) hide show
  1. package/AGENTS.md +5 -5
  2. package/README.md +92 -92
  3. package/README.zh-CN.md +69 -69
  4. package/dist/adapters/marxists-cn/archive.d.ts +61 -0
  5. package/dist/adapters/marxists-cn/archive.d.ts.map +1 -0
  6. package/dist/adapters/marxists-cn/archive.js +861 -0
  7. package/dist/adapters/marxists-cn/archive.js.map +1 -0
  8. package/dist/adapters/twitter/lists-extra.d.ts +17 -1
  9. package/dist/adapters/twitter/lists-extra.d.ts.map +1 -1
  10. package/dist/adapters/twitter/lists-extra.js +123 -21
  11. package/dist/adapters/twitter/lists-extra.js.map +1 -1
  12. package/dist/adapters/twitter/post.js +1 -0
  13. package/dist/adapters/twitter/post.js.map +1 -1
  14. package/dist/adapters/twitter/thread.d.ts +13 -1
  15. package/dist/adapters/twitter/thread.d.ts.map +1 -1
  16. package/dist/adapters/twitter/thread.js +76 -33
  17. package/dist/adapters/twitter/thread.js.map +1 -1
  18. package/dist/adapters/xueqiu/extra.js +2 -2
  19. package/dist/adapters/xueqiu/extra.js.map +1 -1
  20. package/dist/browser/cdp-client.d.ts +10 -0
  21. package/dist/browser/cdp-client.d.ts.map +1 -1
  22. package/dist/browser/cdp-client.js +21 -0
  23. package/dist/browser/cdp-client.js.map +1 -1
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +4 -3
  26. package/dist/cli.js.map +1 -1
  27. package/dist/commands/architecture.d.ts +3 -1
  28. package/dist/commands/architecture.d.ts.map +1 -1
  29. package/dist/commands/architecture.js +13 -5
  30. package/dist/commands/architecture.js.map +1 -1
  31. package/dist/commands/delivery.d.ts.map +1 -1
  32. package/dist/commands/delivery.js.map +1 -1
  33. package/dist/commands/describe.d.ts.map +1 -1
  34. package/dist/commands/describe.js +104 -9
  35. package/dist/commands/describe.js.map +1 -1
  36. package/dist/commands/dispatch.d.ts.map +1 -1
  37. package/dist/commands/dispatch.js +3 -13
  38. package/dist/commands/dispatch.js.map +1 -1
  39. package/dist/commands/do.d.ts +2 -1
  40. package/dist/commands/do.d.ts.map +1 -1
  41. package/dist/commands/do.js +43 -4
  42. package/dist/commands/do.js.map +1 -1
  43. package/dist/commands/social.d.ts.map +1 -1
  44. package/dist/commands/social.js +3 -13
  45. package/dist/commands/social.js.map +1 -1
  46. package/dist/core/architecture-tree.d.ts +26 -6
  47. package/dist/core/architecture-tree.d.ts.map +1 -1
  48. package/dist/core/architecture-tree.js +184 -40
  49. package/dist/core/architecture-tree.js.map +1 -1
  50. package/dist/core/capability-matrix.d.ts +63 -0
  51. package/dist/core/capability-matrix.d.ts.map +1 -0
  52. package/dist/core/capability-matrix.js +316 -0
  53. package/dist/core/capability-matrix.js.map +1 -0
  54. package/dist/core/command-contract-lint.d.ts.map +1 -1
  55. package/dist/core/command-contract-lint.js +3 -1
  56. package/dist/core/command-contract-lint.js.map +1 -1
  57. package/dist/core/command-contract.d.ts +10 -3
  58. package/dist/core/command-contract.d.ts.map +1 -1
  59. package/dist/core/command-contract.js +87 -5
  60. package/dist/core/command-contract.js.map +1 -1
  61. package/dist/discovery/aliases.d.ts.map +1 -1
  62. package/dist/discovery/aliases.js +93 -0
  63. package/dist/discovery/aliases.js.map +1 -1
  64. package/dist/discovery/core-catalog.d.ts +1 -0
  65. package/dist/discovery/core-catalog.d.ts.map +1 -1
  66. package/dist/discovery/core-catalog.js +22 -5
  67. package/dist/discovery/core-catalog.js.map +1 -1
  68. package/dist/discovery/intents.d.ts.map +1 -1
  69. package/dist/discovery/intents.js +124 -0
  70. package/dist/discovery/intents.js.map +1 -1
  71. package/dist/engine/cascade.d.ts.map +1 -1
  72. package/dist/engine/cascade.js +21 -25
  73. package/dist/engine/cascade.js.map +1 -1
  74. package/dist/engine/chromium-cookies.d.ts +27 -0
  75. package/dist/engine/chromium-cookies.d.ts.map +1 -1
  76. package/dist/engine/chromium-cookies.js +53 -14
  77. package/dist/engine/chromium-cookies.js.map +1 -1
  78. package/dist/engine/cookie-capture.d.ts +30 -0
  79. package/dist/engine/cookie-capture.d.ts.map +1 -0
  80. package/dist/engine/cookie-capture.js +104 -0
  81. package/dist/engine/cookie-capture.js.map +1 -0
  82. package/dist/engine/cookie-extractor.d.ts.map +1 -1
  83. package/dist/engine/cookie-extractor.js +4 -12
  84. package/dist/engine/cookie-extractor.js.map +1 -1
  85. package/dist/engine/cookie-refresh.d.ts +59 -8
  86. package/dist/engine/cookie-refresh.d.ts.map +1 -1
  87. package/dist/engine/cookie-refresh.js +80 -58
  88. package/dist/engine/cookie-refresh.js.map +1 -1
  89. package/dist/engine/cookie-source.d.ts +110 -0
  90. package/dist/engine/cookie-source.d.ts.map +1 -0
  91. package/dist/engine/cookie-source.js +207 -0
  92. package/dist/engine/cookie-source.js.map +1 -0
  93. package/dist/engine/cookies.d.ts +37 -25
  94. package/dist/engine/cookies.d.ts.map +1 -1
  95. package/dist/engine/cookies.js +58 -157
  96. package/dist/engine/cookies.js.map +1 -1
  97. package/dist/engine/delivery/index.d.ts +2 -1
  98. package/dist/engine/delivery/index.d.ts.map +1 -1
  99. package/dist/engine/delivery/index.js +2 -1
  100. package/dist/engine/delivery/index.js.map +1 -1
  101. package/dist/engine/delivery/spec.d.ts +44 -0
  102. package/dist/engine/delivery/spec.d.ts.map +1 -0
  103. package/dist/engine/delivery/spec.js +82 -0
  104. package/dist/engine/delivery/spec.js.map +1 -0
  105. package/dist/engine/executor.d.ts +17 -6
  106. package/dist/engine/executor.d.ts.map +1 -1
  107. package/dist/engine/executor.js +131 -68
  108. package/dist/engine/executor.js.map +1 -1
  109. package/dist/engine/runtime.d.ts.map +1 -1
  110. package/dist/engine/runtime.js +9 -4
  111. package/dist/engine/runtime.js.map +1 -1
  112. package/dist/engine/step-observer.d.ts +62 -0
  113. package/dist/engine/step-observer.d.ts.map +1 -0
  114. package/dist/engine/step-observer.js +38 -0
  115. package/dist/engine/step-observer.js.map +1 -0
  116. package/dist/engine/steps/browser-helpers.d.ts.map +1 -1
  117. package/dist/engine/steps/browser-helpers.js +2 -8
  118. package/dist/engine/steps/browser-helpers.js.map +1 -1
  119. package/dist/engine/steps/fetch-text.d.ts.map +1 -1
  120. package/dist/engine/steps/fetch-text.js +106 -33
  121. package/dist/engine/steps/fetch-text.js.map +1 -1
  122. package/dist/engine/steps/fetch.d.ts +20 -0
  123. package/dist/engine/steps/fetch.d.ts.map +1 -1
  124. package/dist/engine/steps/fetch.js.map +1 -1
  125. package/dist/engine/steps/index.d.ts +2 -0
  126. package/dist/engine/steps/index.d.ts.map +1 -1
  127. package/dist/engine/steps/index.js +2 -0
  128. package/dist/engine/steps/index.js.map +1 -1
  129. package/dist/engine/steps/split-text.d.ts +26 -0
  130. package/dist/engine/steps/split-text.d.ts.map +1 -0
  131. package/dist/engine/steps/split-text.js +89 -0
  132. package/dist/engine/steps/split-text.js.map +1 -0
  133. package/dist/engine/steps/to-entries.d.ts +9 -0
  134. package/dist/engine/steps/to-entries.d.ts.map +1 -0
  135. package/dist/engine/steps/to-entries.js +27 -0
  136. package/dist/engine/steps/to-entries.js.map +1 -0
  137. package/dist/engine/text-normalize.d.ts +14 -0
  138. package/dist/engine/text-normalize.d.ts.map +1 -1
  139. package/dist/engine/text-normalize.js +64 -0
  140. package/dist/engine/text-normalize.js.map +1 -1
  141. package/dist/fast-path/handlers/discovery.d.ts.map +1 -1
  142. package/dist/fast-path/handlers/discovery.js +7 -7
  143. package/dist/fast-path/handlers/discovery.js.map +1 -1
  144. package/dist/manifest-compact.txt +3 -3
  145. package/dist/manifest.json +493 -3
  146. package/dist/mcp/tools.js +1 -1
  147. package/dist/mcp/tools.js.map +1 -1
  148. package/dist/output/auth-guidance.d.ts +17 -3
  149. package/dist/output/auth-guidance.d.ts.map +1 -1
  150. package/dist/output/auth-guidance.js +27 -3
  151. package/dist/output/auth-guidance.js.map +1 -1
  152. package/dist/output/error-map.d.ts.map +1 -1
  153. package/dist/output/error-map.js +4 -0
  154. package/dist/output/error-map.js.map +1 -1
  155. package/package.json +2 -2
  156. package/server.json +2 -2
  157. package/skills/unicli/SKILL.md +1 -1
  158. package/skills/unicli-claude-code/SKILL.md +1 -1
  159. package/skills/unicli-hermes/SKILL.md +1 -1
  160. package/src/adapters/12306/price.yaml +91 -0
  161. package/src/adapters/12306/stations.yaml +52 -0
  162. package/src/adapters/12306/trains.yaml +129 -0
  163. package/src/adapters/marxists-cn/archive.test.ts +173 -0
  164. package/src/adapters/marxists-cn/archive.ts +1049 -0
  165. package/src/adapters/twitter/lists-extra.test.ts +115 -0
  166. package/src/adapters/twitter/lists-extra.ts +146 -26
  167. package/src/adapters/twitter/post.ts +1 -0
  168. package/src/adapters/twitter/thread.test.ts +25 -1
  169. package/src/adapters/twitter/thread.ts +99 -47
  170. package/src/adapters/xueqiu/extra.ts +5 -2
@@ -7,45 +7,33 @@
7
7
  * Probe mechanism: make a test fetch with each strategy,
8
8
  * first valid (non-error, non-empty) response wins.
9
9
  */
10
- import { loadCookies, formatCookieHeader } from "./cookies.js";
10
+ import { acquireCookies, formatCookieHeader } from "./cookies.js";
11
11
  import { USER_AGENT } from "../constants.js";
12
12
  /** Strategy probe order — auto-probeable strategies only */
13
13
  const CASCADE_ORDER = ["public", "cookie", "header"];
14
14
  /** Cache of resolved strategies per site */
15
15
  const strategyCache = new Map();
16
16
  /**
17
- * Build headers for a given strategy.
17
+ * Build headers for a given strategy from already-acquired cookies. Pure: the
18
+ * caller owns cookie acquisition so the disk/browser/CDP read happens once per
19
+ * probe instead of once per buildHeaders call.
18
20
  */
19
- function buildHeaders(strategy, site) {
21
+ function buildHeaders(strategy, cookies) {
20
22
  const headers = {
21
23
  "User-Agent": USER_AGENT,
22
24
  Accept: "application/json",
23
25
  };
24
- if (strategy === "public") {
26
+ if (strategy === "public" || !cookies) {
25
27
  return headers;
26
28
  }
27
- if (strategy === "cookie" || strategy === "header") {
28
- const cookies = loadCookies(site);
29
- if (cookies) {
30
- headers["Cookie"] = formatCookieHeader(cookies);
31
- }
32
- }
29
+ headers["Cookie"] = formatCookieHeader(cookies);
33
30
  if (strategy === "header") {
34
31
  // Extract CSRF token from cookies — common patterns
35
- const cookies = loadCookies(site);
36
- if (cookies) {
37
- const csrfKeys = [
38
- "ct0",
39
- "csrf_token",
40
- "_csrf",
41
- "x-csrf-token",
42
- "bili_jct",
43
- ];
44
- for (const key of csrfKeys) {
45
- if (cookies[key]) {
46
- headers["X-Csrf-Token"] = cookies[key];
47
- break;
48
- }
32
+ const csrfKeys = ["ct0", "csrf_token", "_csrf", "x-csrf-token", "bili_jct"];
33
+ for (const key of csrfKeys) {
34
+ if (cookies[key]) {
35
+ headers["X-Csrf-Token"] = cookies[key];
36
+ break;
49
37
  }
50
38
  }
51
39
  }
@@ -58,7 +46,15 @@ async function probeStrategy(url, strategy, site) {
58
46
  const confidence = 1.0 -
59
47
  CASCADE_ORDER.indexOf(strategy) * 0.1;
60
48
  try {
61
- const headers = buildHeaders(strategy, site);
49
+ // Public needs no auth; for cookie/header acquire across disk → browser → CDP
50
+ // so a logged-in Chrome session is reused even when no cookie file exists yet.
51
+ let cookies = null;
52
+ if (strategy !== "public") {
53
+ const outcome = await acquireCookies(site);
54
+ if (outcome.status === "loaded")
55
+ cookies = outcome.cookies;
56
+ }
57
+ const headers = buildHeaders(strategy, cookies);
62
58
  const resp = await fetch(url, {
63
59
  headers,
64
60
  signal: AbortSignal.timeout(5000),
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../src/engine/cascade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cascade.js","sourceRoot":"","sources":["../../src/engine/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,4DAA4D;AAC5D,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAE9D,4CAA4C;AAC5C,MAAM,aAAa,GAAG,IAAI,GAAG,EAG1B,CAAC;AAQJ;;;;GAIG;AACH,SAAS,YAAY,CACnB,QAAgB,EAChB,OAAsC;IAEtC,MAAM,OAAO,GAA2B;QACtC,YAAY,EAAE,UAAU;QACxB,MAAM,EAAE,kBAAkB;KAC3B,CAAC;IAEF,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,oDAAoD;QACpD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QAC5E,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,GAAW,EACX,QAAgB,EAChB,IAAY;IAEZ,MAAM,UAAU,GACd,GAAG;QACH,aAAa,CAAC,OAAO,CAAC,QAA0C,CAAC,GAAG,GAAG,CAAC;IAE1E,IAAI,CAAC;QACH,8EAA8E;QAC9E,+EAA+E;QAC/E,IAAI,OAAO,GAAkC,IAAI,CAAC;QAClD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7D,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC5B,OAAO;YACP,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC9B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClD,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YACzD,8CAA8C;YAC9C,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACrD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAClD,CAAC;YACD,mBAAmB;YACnB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAClD,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;QAC9D,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,QAAgB;IAEhB,oBAAoB;IACpB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG;gBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;YACF,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClC,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAiB;IACzD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IACnC,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
@@ -34,11 +34,38 @@ export declare function resolveCookieDb(browser: BrowserId, profile?: string): {
34
34
  userDataRoot: string;
35
35
  platform: Platform;
36
36
  };
37
+ export interface RawCookieRow {
38
+ host: string;
39
+ name: string;
40
+ encrypted: Buffer;
41
+ plain: string;
42
+ path: string;
43
+ expires: number;
44
+ isSecure: number;
45
+ isHttpOnly: number;
46
+ }
37
47
  /**
38
48
  * Read all cookies for a domain from a browser's local DB.
39
49
  * Returns full structured rows for callers that want secure/httpOnly metadata.
40
50
  */
41
51
  export declare function readCookies(opts: ReadOptions): CookieRow[];
52
+ /**
53
+ * Decode raw cookie rows into typed CookieRows, tolerant of individual rows
54
+ * that cannot be decrypted (e.g. a single Chrome v20 App-Bound-Encryption row).
55
+ *
56
+ * Resilience contract (the reason this is a separate, tested function):
57
+ * - a plain (unencrypted) row never calls `decrypt`;
58
+ * - an encrypted row that throws is SKIPPED, not fatal — one bad row must not
59
+ * wipe the whole cookie set (the prior `.map()` threw on the first failure,
60
+ * and the caller swallowed it → all cookies silently vanished);
61
+ * - BUT if every encrypted row fails AND nothing else survived, we THROW a
62
+ * typed ChromiumCookieError instead of returning [] — so "decryption is
63
+ * broken (likely v20)" is never silently indistinguishable from "no cookies".
64
+ *
65
+ * `decrypt` is injected so the resilience logic is unit-testable without a real
66
+ * keystore.
67
+ */
68
+ export declare function decodeCookieRows(rows: RawCookieRow[], decrypt: (encrypted: Buffer) => string): CookieRow[];
42
69
  /**
43
70
  * Convenience: read cookies for a domain and flatten to a name→value record,
44
71
  * matching the shape that engine/cookies.ts already passes to fetch headers.
@@ -1 +1 @@
1
- {"version":3,"file":"chromium-cookies.d.ts","sourceRoot":"","sources":["../../src/engine/chromium-cookies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,KAAK,QAAQ,GACd,MAAM,gCAAgC,CAAC;AA6FxC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,EAAE,CA+BzD;AAkBD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,MAAM,GACf;IACD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAmCA;AAuID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,EAAE,CAmC1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM7E;AAED,kEAAkE;AAClE,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAOlC,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,EAAE,CAWrD"}
1
+ {"version":3,"file":"chromium-cookies.d.ts","sourceRoot":"","sources":["../../src/engine/chromium-cookies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,KAAK,QAAQ,GACd,MAAM,gCAAgC,CAAC;AA6FxC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,EAAE,CA+BzD;AAkBD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,MAAM,GACf;IACD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAmCA;AAsCD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAwFD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,EAAE,CAqB1D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAAE,EACpB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GACrC,SAAS,EAAE,CA0Cb;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM7E;AAED,kEAAkE;AAClE,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAOlC,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,EAAE,CAWrD"}
@@ -299,25 +299,64 @@ export function readCookies(opts) {
299
299
  const snap = snapshotDb(dbPath);
300
300
  try {
301
301
  const rows = readRowsForDomain(snap.dbPath, opts.domain);
302
- return rows.map((r) => {
303
- const value = r.encrypted.length > 0
304
- ? decryptValue(r.encrypted, key, platform)
305
- : r.plain;
306
- return {
307
- host: r.host,
308
- name: r.name,
309
- value,
310
- path: r.path,
311
- expires: r.expires,
312
- secure: r.isSecure === 1,
313
- httpOnly: r.isHttpOnly === 1,
314
- };
315
- });
302
+ return decodeCookieRows(rows, (enc) => decryptValue(enc, key, platform));
316
303
  }
317
304
  finally {
318
305
  snap.cleanup();
319
306
  }
320
307
  }
308
+ /**
309
+ * Decode raw cookie rows into typed CookieRows, tolerant of individual rows
310
+ * that cannot be decrypted (e.g. a single Chrome v20 App-Bound-Encryption row).
311
+ *
312
+ * Resilience contract (the reason this is a separate, tested function):
313
+ * - a plain (unencrypted) row never calls `decrypt`;
314
+ * - an encrypted row that throws is SKIPPED, not fatal — one bad row must not
315
+ * wipe the whole cookie set (the prior `.map()` threw on the first failure,
316
+ * and the caller swallowed it → all cookies silently vanished);
317
+ * - BUT if every encrypted row fails AND nothing else survived, we THROW a
318
+ * typed ChromiumCookieError instead of returning [] — so "decryption is
319
+ * broken (likely v20)" is never silently indistinguishable from "no cookies".
320
+ *
321
+ * `decrypt` is injected so the resilience logic is unit-testable without a real
322
+ * keystore.
323
+ */
324
+ export function decodeCookieRows(rows, decrypt) {
325
+ const out = [];
326
+ let encryptedTotal = 0;
327
+ let encryptedFailed = 0;
328
+ for (const r of rows) {
329
+ let value;
330
+ if (r.encrypted.length > 0) {
331
+ encryptedTotal += 1;
332
+ try {
333
+ value = decrypt(r.encrypted);
334
+ }
335
+ catch {
336
+ encryptedFailed += 1;
337
+ continue;
338
+ }
339
+ }
340
+ else {
341
+ value = r.plain;
342
+ }
343
+ out.push({
344
+ host: r.host,
345
+ name: r.name,
346
+ value,
347
+ path: r.path,
348
+ expires: r.expires,
349
+ secure: r.isSecure === 1,
350
+ httpOnly: r.isHttpOnly === 1,
351
+ });
352
+ }
353
+ if (encryptedTotal > 0 &&
354
+ encryptedFailed === encryptedTotal &&
355
+ out.length === 0) {
356
+ throw new ChromiumCookieError("encryption_unsupported", `all ${encryptedTotal} encrypted cookie rows failed to decrypt (likely Chrome v20 App-Bound Encryption)`, "Start Chrome with --remote-debugging-port to use the CDP path, or run: unicli auth import <site>");
357
+ }
358
+ return out;
359
+ }
321
360
  /**
322
361
  * Convenience: read cookies for a domain and flatten to a name→value record,
323
362
  * matching the shape that engine/cookies.ts already passes to fetch headers.
@@ -1 +1 @@
1
- {"version":3,"file":"chromium-cookies.js","sourceRoot":"","sources":["../../src/engine/chromium-cookies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chromium-cookies.js","sourceRoot":"","sources":["../../src/engine/chromium-cookies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Parse an array of raw `Set-Cookie` header lines into a `name → value` map.
3
+ * Only the leading `name=value` pair of each line is kept; cookie attributes
4
+ * (Path, Domain, HttpOnly, …) after the first `;` are intentionally dropped —
5
+ * we re-send the pair on same-host requests and do not honor attribute scoping
6
+ * beyond the host check performed by the caller.
7
+ */
8
+ export declare function parseSetCookiePairs(lines: string[]): Record<string, string>;
9
+ /**
10
+ * Merge captured cookie pairs onto an existing `Cookie` request header.
11
+ * Existing cookies are preserved; a captured cookie of the same name wins and
12
+ * moves to the end. Returns the original header unchanged when nothing was
13
+ * captured.
14
+ */
15
+ export declare function mergeCookieHeader(existing: string | undefined, captured: Record<string, string>): string;
16
+ /**
17
+ * Conservative same-host check for cookie capture. Returns true only when the
18
+ * final response URL shares a registrable domain with the original request URL.
19
+ *
20
+ * Limitation (stated honestly): without a Public Suffix List we approximate the
21
+ * registrable domain as the last two dot-labels. This is correct for
22
+ * single-label TLDs (12306.cn, example.com) and ERRS ON THE SIDE OF REJECTION
23
+ * for multi-label eTLDs (foo.co.uk vs bar.co.uk both reduce to "co.uk" → would
24
+ * be treated as same; to avoid the FALSE-ACCEPT that introduces, we additionally
25
+ * require the full hostnames to be equal OR one to be a dot-suffix of the other).
26
+ * Rejecting is safe (cookies simply are not captured); false-accept would leak
27
+ * cookies, which we must not do.
28
+ */
29
+ export declare function sameRegistrableHost(requestUrl: string, finalUrl: string): boolean;
30
+ //# sourceMappingURL=cookie-capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-capture.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-capture.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAuBR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAmBT"}
@@ -0,0 +1,104 @@
1
+ //! @owner src::engine::cookie_capture
2
+ //! @does Parses response Set-Cookie headers and merges them into a request Cookie header, with same-host scoping
3
+ //! @needs none (pure string/URL logic)
4
+ //! @feeds ./steps/fetch-text, ./steps/fetch (capture_cookies option)
5
+ //! @breaks never throws; unparseable input yields conservative (empty / false) results
6
+ //! @invariants capture is host-scoped; a cross-site final URL never contributes cookies
7
+ //! @side-effects none (pure)
8
+ //! @perf O(n) over the Set-Cookie line count
9
+ //! @concurrency pure; safe to call concurrently
10
+ //! @test tests/unit/engine/cookie-capture.test.ts
11
+ //! @stability stable
12
+ //! @since 2026-05-30
13
+ /**
14
+ * Parse an array of raw `Set-Cookie` header lines into a `name → value` map.
15
+ * Only the leading `name=value` pair of each line is kept; cookie attributes
16
+ * (Path, Domain, HttpOnly, …) after the first `;` are intentionally dropped —
17
+ * we re-send the pair on same-host requests and do not honor attribute scoping
18
+ * beyond the host check performed by the caller.
19
+ */
20
+ export function parseSetCookiePairs(lines) {
21
+ const out = {};
22
+ for (const line of lines) {
23
+ const head = line.split(";", 1)[0]?.trim() ?? "";
24
+ const eq = head.indexOf("=");
25
+ if (eq <= 0)
26
+ continue;
27
+ const name = head.slice(0, eq).trim();
28
+ const value = head.slice(eq + 1).trim();
29
+ if (name)
30
+ out[name] = value;
31
+ }
32
+ return out;
33
+ }
34
+ /**
35
+ * Merge captured cookie pairs onto an existing `Cookie` request header.
36
+ * Existing cookies are preserved; a captured cookie of the same name wins and
37
+ * moves to the end. Returns the original header unchanged when nothing was
38
+ * captured.
39
+ */
40
+ export function mergeCookieHeader(existing, captured) {
41
+ const capturedNames = Object.keys(captured);
42
+ if (capturedNames.length === 0)
43
+ return existing ?? "";
44
+ const pairs = new Map();
45
+ if (existing) {
46
+ for (const part of existing.split(";")) {
47
+ const seg = part.trim();
48
+ if (!seg)
49
+ continue;
50
+ const eq = seg.indexOf("=");
51
+ if (eq <= 0)
52
+ continue;
53
+ pairs.set(seg.slice(0, eq).trim(), seg.slice(eq + 1).trim());
54
+ }
55
+ }
56
+ // Drop survivors that a captured cookie overrides, so captured wins and
57
+ // appears at the end in capture order.
58
+ for (const name of capturedNames) {
59
+ pairs.delete(name);
60
+ }
61
+ const merged = [];
62
+ for (const [name, value] of pairs)
63
+ merged.push(`${name}=${value}`);
64
+ for (const name of capturedNames)
65
+ merged.push(`${name}=${captured[name]}`);
66
+ return merged.join("; ");
67
+ }
68
+ /**
69
+ * Conservative same-host check for cookie capture. Returns true only when the
70
+ * final response URL shares a registrable domain with the original request URL.
71
+ *
72
+ * Limitation (stated honestly): without a Public Suffix List we approximate the
73
+ * registrable domain as the last two dot-labels. This is correct for
74
+ * single-label TLDs (12306.cn, example.com) and ERRS ON THE SIDE OF REJECTION
75
+ * for multi-label eTLDs (foo.co.uk vs bar.co.uk both reduce to "co.uk" → would
76
+ * be treated as same; to avoid the FALSE-ACCEPT that introduces, we additionally
77
+ * require the full hostnames to be equal OR one to be a dot-suffix of the other).
78
+ * Rejecting is safe (cookies simply are not captured); false-accept would leak
79
+ * cookies, which we must not do.
80
+ */
81
+ export function sameRegistrableHost(requestUrl, finalUrl) {
82
+ let reqHost;
83
+ let finHost;
84
+ try {
85
+ reqHost = new URL(requestUrl).hostname.toLowerCase();
86
+ finHost = new URL(finalUrl).hostname.toLowerCase();
87
+ }
88
+ catch {
89
+ return false;
90
+ }
91
+ if (!reqHost || !finHost)
92
+ return false;
93
+ if (reqHost === finHost)
94
+ return true;
95
+ // Accept a subdomain relationship on the same registrable domain only when
96
+ // one host is a dot-suffix of the other (www.12306.cn ↔ kyfw.12306.cn share
97
+ // the suffix 12306.cn, and one is not a suffix of the other), so we compare
98
+ // the last-two-labels registrable domain AND require it to be non-trivial.
99
+ const reg = (h) => h.split(".").slice(-2).join(".");
100
+ const reqReg = reg(reqHost);
101
+ const finReg = reg(finHost);
102
+ return reqReg.length > 0 && reqReg === finReg;
103
+ }
104
+ //# sourceMappingURL=cookie-capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-capture.js","sourceRoot":"","sources":["../../src/engine/cookie-capture.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cookie-extractor.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA+BjC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAaR"}
1
+ {"version":3,"file":"cookie-extractor.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwBjC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAWR"}
@@ -8,22 +8,15 @@
8
8
  */
9
9
  import { writeFileSync, mkdirSync } from "node:fs";
10
10
  import { join } from "node:path";
11
+ import { cookieDir } from "./cookie-source.js";
11
12
  /**
12
13
  * Extract cookies for a domain from a running Chrome instance.
13
14
  * Connects to Chrome's CDP debug port, calls Network.getCookies,
14
15
  * and returns cookies as a flat key-value record.
15
16
  */
16
17
  export async function extractCookiesViaCDP(domain, port) {
17
- const { CDPClient } = await import("../browser/cdp-client.js");
18
- const rawPort = process.env.UNICLI_CDP_PORT;
19
- let cdpPort = port ?? 9222;
20
- if (!port && rawPort) {
21
- const p = parseInt(rawPort, 10);
22
- if (!Number.isInteger(p) || p < 1 || p > 65535) {
23
- throw new Error(`Invalid UNICLI_CDP_PORT: "${rawPort}"`);
24
- }
25
- cdpPort = p;
26
- }
18
+ const { CDPClient, resolveCdpPort } = await import("../browser/cdp-client.js");
19
+ const cdpPort = resolveCdpPort(port);
27
20
  const client = await CDPClient.connectToChrome(cdpPort);
28
21
  try {
29
22
  const { cookies } = (await client.send("Network.getCookies", {
@@ -52,8 +45,7 @@ export function saveCookies(site, cookies) {
52
45
  if (!/^[a-zA-Z0-9._-]+$/.test(site)) {
53
46
  throw new Error(`Invalid site name: "${site}" — only alphanumeric, dot, dash, underscore allowed`);
54
47
  }
55
- const dir = process.env.UNICLI_COOKIE_DIR ??
56
- join(process.env.HOME ?? "~", ".unicli", "cookies");
48
+ const dir = cookieDir();
57
49
  mkdirSync(dir, { recursive: true });
58
50
  const filePath = join(dir, `${site}.json`);
59
51
  writeFileSync(filePath, JSON.stringify(cookies, null, 2), "utf-8");
@@ -1 +1 @@
1
- {"version":3,"file":"cookie-extractor.js","sourceRoot":"","sources":["../../src/engine/cookie-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAYjC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,IAAa;IAEb,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,GAAG,CAAC,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC3D,IAAI,EAAE;gBACJ,WAAW,MAAM,EAAE;gBACnB,eAAe,MAAM,EAAE;gBACvB,UAAU,MAAM,EAAE;gBAClB,cAAc,MAAM,EAAE;aACvB;SACF,CAAC,CAA6B,CAAC;QAEhC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,OAA+B;IAE/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,sDAAsD,CAClF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"cookie-extractor.js","sourceRoot":"","sources":["../../src/engine/cookie-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAY/C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,IAAa;IAEb,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GACjC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC3D,IAAI,EAAE;gBACJ,WAAW,MAAM,EAAE;gBACnB,eAAe,MAAM,EAAE;gBACvB,UAAU,MAAM,EAAE;gBAClB,cAAc,MAAM,EAAE;aACvB;SACF,CAAC,CAA6B,CAAC;QAEhC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,OAA+B;IAE/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,sDAAsD,CAClF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,13 +1,64 @@
1
1
  /**
2
- * Smart Cookie Refresh — automatically refresh expired cookies via CDP.
3
- *
4
- * When an adapter gets a 401/403, this module attempts to navigate Chrome
5
- * to the site's main page (refreshing the session), extract fresh cookies
6
- * via CDP, and write them to the cookie file for subsequent requests.
2
+ * @owner src::engine::cookie-refresh
3
+ * @does Refreshes a site's login session by navigating Chrome to it over
4
+ * CDP and re-reading cookies, surfacing the real cause of a miss
5
+ * (no browser / no cookies / error) instead of a bare boolean.
6
+ * @needs ./cookie-extractor (saveCookies), ../browser/page (lazy),
7
+ * ../browser/cdp-client (resolveCdpPort, lazy)
8
+ * @feeds src::engine::runtime (maybeRefreshCookies — the auto 401/403 path)
9
+ * @breaks never throws — every failure becomes a typed SessionRefreshOutcome
10
+ * @invariants navigation (page.goto) happens BEFORE reading cookies so the live
11
+ * server session is rebuilt; this is the navigate-then-read refresh,
12
+ * deliberately distinct from cookies.ts acquireCookies(skipDisk)
13
+ * which is a pure DB/CDP read with no navigation
14
+ * @side-effects connects to Chrome via CDP, navigates a page, persists cookies to disk
15
+ * @concurrency stateless; the page is opened and closed within one call
16
+ * @test tests/unit/engine/cookie-refresh.test.ts
17
+ * @stability stable
18
+ * @since 2026-05-30
19
+ */
20
+ /** The slice of a live browser page a session refresh needs. */
21
+ export interface PageSession {
22
+ goto(url: string, opts: {
23
+ settleMs: number;
24
+ }): Promise<void>;
25
+ cookies(): Promise<Record<string, string>>;
26
+ close(): Promise<void>;
27
+ }
28
+ /** Injectable IO so the refresh policy is testable without Chrome or a network. */
29
+ export interface SessionRefreshDeps {
30
+ connect(port: number): Promise<PageSession>;
31
+ persist(site: string, cookies: Record<string, string>): void;
32
+ }
33
+ /**
34
+ * Typed result of a refresh attempt. Names WHY a refresh did not happen instead
35
+ * of collapsing connect failure, an empty cookie jar, and unexpected errors all
36
+ * to `false` (the old behavior, which left runtime.ts unable to tell the agent
37
+ * what actually went wrong).
7
38
  */
39
+ export type SessionRefreshOutcome = {
40
+ status: "refreshed";
41
+ site: string;
42
+ cookieCount: number;
43
+ } | {
44
+ status: "no-browser";
45
+ detail: string;
46
+ } | {
47
+ status: "no-cookies";
48
+ detail: string;
49
+ } | {
50
+ status: "error";
51
+ detail: string;
52
+ };
53
+ export declare const defaultSessionRefreshDeps: SessionRefreshDeps;
8
54
  /**
9
- * Attempt to refresh cookies for a site by navigating Chrome to it.
10
- * Returns true if cookies were refreshed, false if not possible.
55
+ * Attempt to refresh cookies for a site by navigating Chrome to it and reading
56
+ * the resulting session cookies. Returns a typed outcome; never throws.
57
+ *
58
+ * Persistence goes through the canonical writer (saveCookies) so the on-disk
59
+ * format always matches what the loaders expect ({name: value}); hand-rolling
60
+ * the write here once emitted an array format the loaders silently rejected,
61
+ * leaving the adapter unauthenticated after a "successful" refresh.
11
62
  */
12
- export declare function refreshCookies(site: string, domain?: string): Promise<boolean>;
63
+ export declare function refreshCookies(site: string, domain?: string, deps?: SessionRefreshDeps): Promise<SessionRefreshOutcome>;
13
64
  //# sourceMappingURL=cookie-refresh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookie-refresh.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CA4DlB"}
1
+ {"version":3,"file":"cookie-refresh.d.ts","sourceRoot":"","sources":["../../src/engine/cookie-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC9D;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAOxC,eAAO,MAAM,yBAAyB,EAAE,kBAGvC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,GAAE,kBAA8C,GACnD,OAAO,CAAC,qBAAqB,CAAC,CAuDhC"}