@zenalexa/unicli 0.224.1 → 0.225.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 (256) 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/_electron/desktop-shared.d.ts.map +1 -1
  5. package/dist/adapters/_electron/desktop-shared.js +2 -1
  6. package/dist/adapters/_electron/desktop-shared.js.map +1 -1
  7. package/dist/adapters/_electron/shared.d.ts +6 -0
  8. package/dist/adapters/_electron/shared.d.ts.map +1 -1
  9. package/dist/adapters/_electron/shared.js +9 -0
  10. package/dist/adapters/_electron/shared.js.map +1 -1
  11. package/dist/adapters/antigravity/extra.js +4 -1
  12. package/dist/adapters/antigravity/extra.js.map +1 -1
  13. package/dist/adapters/chatwise/extra.js +4 -1
  14. package/dist/adapters/chatwise/extra.js.map +1 -1
  15. package/dist/adapters/codex/codex.js +3 -1
  16. package/dist/adapters/codex/codex.js.map +1 -1
  17. package/dist/adapters/codex/extra.js +4 -1
  18. package/dist/adapters/codex/extra.js.map +1 -1
  19. package/dist/adapters/codex/projects.d.ts.map +1 -1
  20. package/dist/adapters/codex/projects.js +3 -1
  21. package/dist/adapters/codex/projects.js.map +1 -1
  22. package/dist/adapters/cursor/cursor.js +6 -1
  23. package/dist/adapters/cursor/cursor.js.map +1 -1
  24. package/dist/adapters/discord-app/discord-app.js +10 -1
  25. package/dist/adapters/discord-app/discord-app.js.map +1 -1
  26. package/dist/adapters/notion-app/notion-app.js +11 -1
  27. package/dist/adapters/notion-app/notion-app.js.map +1 -1
  28. package/dist/adapters/spotify/api.js +36 -6
  29. package/dist/adapters/spotify/api.js.map +1 -1
  30. package/dist/adapters/xiaohongshu/browser-state.d.ts +2 -1
  31. package/dist/adapters/xiaohongshu/browser-state.d.ts.map +1 -1
  32. package/dist/adapters/xiaohongshu/browser-state.js +56 -2
  33. package/dist/adapters/xiaohongshu/browser-state.js.map +1 -1
  34. package/dist/adapters/xiaohongshu/feed.d.ts +24 -0
  35. package/dist/adapters/xiaohongshu/feed.d.ts.map +1 -0
  36. package/dist/adapters/xiaohongshu/feed.js +82 -0
  37. package/dist/adapters/xiaohongshu/feed.js.map +1 -0
  38. package/dist/adapters/xueqiu/extra.js +2 -2
  39. package/dist/adapters/xueqiu/extra.js.map +1 -1
  40. package/dist/browser/cdp-client.d.ts +15 -1
  41. package/dist/browser/cdp-client.d.ts.map +1 -1
  42. package/dist/browser/cdp-client.js +45 -16
  43. package/dist/browser/cdp-client.js.map +1 -1
  44. package/dist/browser/daemon.js +29 -7
  45. package/dist/browser/daemon.js.map +1 -1
  46. package/dist/browser/launcher.d.ts.map +1 -1
  47. package/dist/browser/launcher.js +22 -8
  48. package/dist/browser/launcher.js.map +1 -1
  49. package/dist/browser/local-profiles.d.ts +2 -0
  50. package/dist/browser/local-profiles.d.ts.map +1 -1
  51. package/dist/browser/local-profiles.js +42 -2
  52. package/dist/browser/local-profiles.js.map +1 -1
  53. package/dist/browser/page.d.ts +2 -2
  54. package/dist/browser/page.d.ts.map +1 -1
  55. package/dist/browser/page.js +2 -2
  56. package/dist/browser/page.js.map +1 -1
  57. package/dist/browser/protocol.d.ts +7 -0
  58. package/dist/browser/protocol.d.ts.map +1 -1
  59. package/dist/browser/protocol.js +5 -0
  60. package/dist/browser/protocol.js.map +1 -1
  61. package/dist/cli.d.ts.map +1 -1
  62. package/dist/cli.js +4 -3
  63. package/dist/cli.js.map +1 -1
  64. package/dist/commands/architecture.d.ts +3 -1
  65. package/dist/commands/architecture.d.ts.map +1 -1
  66. package/dist/commands/architecture.js +13 -5
  67. package/dist/commands/architecture.js.map +1 -1
  68. package/dist/commands/browser/index.d.ts.map +1 -1
  69. package/dist/commands/browser/index.js +26 -4
  70. package/dist/commands/browser/index.js.map +1 -1
  71. package/dist/commands/delivery.d.ts.map +1 -1
  72. package/dist/commands/delivery.js.map +1 -1
  73. package/dist/commands/describe.d.ts.map +1 -1
  74. package/dist/commands/describe.js +104 -9
  75. package/dist/commands/describe.js.map +1 -1
  76. package/dist/commands/dispatch.d.ts.map +1 -1
  77. package/dist/commands/dispatch.js +3 -13
  78. package/dist/commands/dispatch.js.map +1 -1
  79. package/dist/commands/do.d.ts +16 -13
  80. package/dist/commands/do.d.ts.map +1 -1
  81. package/dist/commands/do.js +72 -18
  82. package/dist/commands/do.js.map +1 -1
  83. package/dist/commands/social.d.ts.map +1 -1
  84. package/dist/commands/social.js +3 -13
  85. package/dist/commands/social.js.map +1 -1
  86. package/dist/core/architecture-tree.d.ts +26 -6
  87. package/dist/core/architecture-tree.d.ts.map +1 -1
  88. package/dist/core/architecture-tree.js +184 -40
  89. package/dist/core/architecture-tree.js.map +1 -1
  90. package/dist/core/capability-matrix.d.ts +63 -0
  91. package/dist/core/capability-matrix.d.ts.map +1 -0
  92. package/dist/core/capability-matrix.js +316 -0
  93. package/dist/core/capability-matrix.js.map +1 -0
  94. package/dist/core/command-contract-lint.d.ts.map +1 -1
  95. package/dist/core/command-contract-lint.js +3 -1
  96. package/dist/core/command-contract-lint.js.map +1 -1
  97. package/dist/core/command-contract.d.ts +10 -3
  98. package/dist/core/command-contract.d.ts.map +1 -1
  99. package/dist/core/command-contract.js +87 -5
  100. package/dist/core/command-contract.js.map +1 -1
  101. package/dist/discovery/aliases.d.ts.map +1 -1
  102. package/dist/discovery/aliases.js +26 -0
  103. package/dist/discovery/aliases.js.map +1 -1
  104. package/dist/discovery/core-catalog.d.ts +1 -0
  105. package/dist/discovery/core-catalog.d.ts.map +1 -1
  106. package/dist/discovery/core-catalog.js +22 -5
  107. package/dist/discovery/core-catalog.js.map +1 -1
  108. package/dist/discovery/intents.d.ts +31 -4
  109. package/dist/discovery/intents.d.ts.map +1 -1
  110. package/dist/discovery/intents.js +166 -3
  111. package/dist/discovery/intents.js.map +1 -1
  112. package/dist/discovery/loader.d.ts.map +1 -1
  113. package/dist/discovery/loader.js +3 -0
  114. package/dist/discovery/loader.js.map +1 -1
  115. package/dist/discovery/search.d.ts.map +1 -1
  116. package/dist/discovery/search.js +10 -1
  117. package/dist/discovery/search.js.map +1 -1
  118. package/dist/engine/cascade.d.ts.map +1 -1
  119. package/dist/engine/cascade.js +21 -25
  120. package/dist/engine/cascade.js.map +1 -1
  121. package/dist/engine/chromium-cookies.d.ts +27 -0
  122. package/dist/engine/chromium-cookies.d.ts.map +1 -1
  123. package/dist/engine/chromium-cookies.js +53 -14
  124. package/dist/engine/chromium-cookies.js.map +1 -1
  125. package/dist/engine/cookie-capture.d.ts +30 -0
  126. package/dist/engine/cookie-capture.d.ts.map +1 -0
  127. package/dist/engine/cookie-capture.js +104 -0
  128. package/dist/engine/cookie-capture.js.map +1 -0
  129. package/dist/engine/cookie-extractor.d.ts.map +1 -1
  130. package/dist/engine/cookie-extractor.js +4 -12
  131. package/dist/engine/cookie-extractor.js.map +1 -1
  132. package/dist/engine/cookie-refresh.d.ts +59 -8
  133. package/dist/engine/cookie-refresh.d.ts.map +1 -1
  134. package/dist/engine/cookie-refresh.js +80 -58
  135. package/dist/engine/cookie-refresh.js.map +1 -1
  136. package/dist/engine/cookie-source.d.ts +110 -0
  137. package/dist/engine/cookie-source.d.ts.map +1 -0
  138. package/dist/engine/cookie-source.js +207 -0
  139. package/dist/engine/cookie-source.js.map +1 -0
  140. package/dist/engine/cookies.d.ts +37 -25
  141. package/dist/engine/cookies.d.ts.map +1 -1
  142. package/dist/engine/cookies.js +58 -157
  143. package/dist/engine/cookies.js.map +1 -1
  144. package/dist/engine/delivery/index.d.ts +2 -1
  145. package/dist/engine/delivery/index.d.ts.map +1 -1
  146. package/dist/engine/delivery/index.js +2 -1
  147. package/dist/engine/delivery/index.js.map +1 -1
  148. package/dist/engine/delivery/spec.d.ts +44 -0
  149. package/dist/engine/delivery/spec.d.ts.map +1 -0
  150. package/dist/engine/delivery/spec.js +82 -0
  151. package/dist/engine/delivery/spec.js.map +1 -0
  152. package/dist/engine/executor.d.ts +17 -6
  153. package/dist/engine/executor.d.ts.map +1 -1
  154. package/dist/engine/executor.js +131 -68
  155. package/dist/engine/executor.js.map +1 -1
  156. package/dist/engine/kernel/stages.d.ts.map +1 -1
  157. package/dist/engine/kernel/stages.js +14 -4
  158. package/dist/engine/kernel/stages.js.map +1 -1
  159. package/dist/engine/objective/catalog.d.ts +23 -0
  160. package/dist/engine/objective/catalog.d.ts.map +1 -0
  161. package/dist/engine/objective/catalog.js +42 -0
  162. package/dist/engine/objective/catalog.js.map +1 -0
  163. package/dist/engine/objective/delivery.d.ts +18 -0
  164. package/dist/engine/objective/delivery.d.ts.map +1 -0
  165. package/dist/engine/objective/delivery.js +64 -0
  166. package/dist/engine/objective/delivery.js.map +1 -0
  167. package/dist/engine/objective/index.d.ts +20 -0
  168. package/dist/engine/objective/index.d.ts.map +1 -0
  169. package/dist/engine/objective/index.js +20 -0
  170. package/dist/engine/objective/index.js.map +1 -0
  171. package/dist/engine/objective/media-playback.d.ts +17 -0
  172. package/dist/engine/objective/media-playback.d.ts.map +1 -0
  173. package/dist/engine/objective/media-playback.js +186 -0
  174. package/dist/engine/objective/media-playback.js.map +1 -0
  175. package/dist/engine/objective/output.d.ts +20 -0
  176. package/dist/engine/objective/output.d.ts.map +1 -0
  177. package/dist/engine/objective/output.js +88 -0
  178. package/dist/engine/objective/output.js.map +1 -0
  179. package/dist/engine/objective/planner.d.ts +17 -0
  180. package/dist/engine/objective/planner.d.ts.map +1 -0
  181. package/dist/engine/objective/planner.js +60 -0
  182. package/dist/engine/objective/planner.js.map +1 -0
  183. package/dist/engine/objective/types.d.ts +66 -0
  184. package/dist/engine/objective/types.d.ts.map +1 -0
  185. package/dist/engine/objective/types.js +16 -0
  186. package/dist/engine/objective/types.js.map +1 -0
  187. package/dist/engine/runtime.d.ts.map +1 -1
  188. package/dist/engine/runtime.js +9 -4
  189. package/dist/engine/runtime.js.map +1 -1
  190. package/dist/engine/step-observer.d.ts +62 -0
  191. package/dist/engine/step-observer.d.ts.map +1 -0
  192. package/dist/engine/step-observer.js +38 -0
  193. package/dist/engine/step-observer.js.map +1 -0
  194. package/dist/engine/steps/browser-helpers.d.ts.map +1 -1
  195. package/dist/engine/steps/browser-helpers.js +36 -8
  196. package/dist/engine/steps/browser-helpers.js.map +1 -1
  197. package/dist/engine/steps/fetch-text.d.ts.map +1 -1
  198. package/dist/engine/steps/fetch-text.js +106 -33
  199. package/dist/engine/steps/fetch-text.js.map +1 -1
  200. package/dist/engine/steps/fetch.d.ts +20 -0
  201. package/dist/engine/steps/fetch.d.ts.map +1 -1
  202. package/dist/engine/steps/fetch.js.map +1 -1
  203. package/dist/engine/steps/index.d.ts +2 -0
  204. package/dist/engine/steps/index.d.ts.map +1 -1
  205. package/dist/engine/steps/index.js +2 -0
  206. package/dist/engine/steps/index.js.map +1 -1
  207. package/dist/engine/steps/split-text.d.ts +26 -0
  208. package/dist/engine/steps/split-text.d.ts.map +1 -0
  209. package/dist/engine/steps/split-text.js +89 -0
  210. package/dist/engine/steps/split-text.js.map +1 -0
  211. package/dist/engine/steps/to-entries.d.ts +9 -0
  212. package/dist/engine/steps/to-entries.d.ts.map +1 -0
  213. package/dist/engine/steps/to-entries.js +27 -0
  214. package/dist/engine/steps/to-entries.js.map +1 -0
  215. package/dist/fast-path/handlers/discovery.d.ts.map +1 -1
  216. package/dist/fast-path/handlers/discovery.js +7 -7
  217. package/dist/fast-path/handlers/discovery.js.map +1 -1
  218. package/dist/manifest-compact.txt +3 -2
  219. package/dist/manifest.json +183 -17
  220. package/dist/mcp/tools.js +1 -1
  221. package/dist/mcp/tools.js.map +1 -1
  222. package/dist/output/auth-guidance.d.ts +17 -3
  223. package/dist/output/auth-guidance.d.ts.map +1 -1
  224. package/dist/output/auth-guidance.js +27 -3
  225. package/dist/output/auth-guidance.js.map +1 -1
  226. package/dist/output/error-map.d.ts.map +1 -1
  227. package/dist/output/error-map.js +4 -0
  228. package/dist/output/error-map.js.map +1 -1
  229. package/package.json +4 -2
  230. package/server.json +2 -2
  231. package/skills/unicli/SKILL.md +1 -1
  232. package/skills/unicli-claude-code/SKILL.md +1 -1
  233. package/skills/unicli-hermes/SKILL.md +1 -1
  234. package/src/adapters/12306/price.yaml +91 -0
  235. package/src/adapters/12306/stations.yaml +52 -0
  236. package/src/adapters/12306/trains.yaml +129 -0
  237. package/src/adapters/_electron/desktop-shared.ts +5 -1
  238. package/src/adapters/_electron/shared.ts +15 -0
  239. package/src/adapters/antigravity/extra.ts +10 -1
  240. package/src/adapters/chatwise/extra.ts +10 -1
  241. package/src/adapters/codex/codex.ts +6 -0
  242. package/src/adapters/codex/extra.ts +10 -1
  243. package/src/adapters/codex/projects.ts +9 -1
  244. package/src/adapters/cursor/cursor.ts +9 -0
  245. package/src/adapters/discord-app/discord-app.ts +16 -1
  246. package/src/adapters/macos/brightness.yaml +6 -3
  247. package/src/adapters/macos/calendar-list.yaml +9 -11
  248. package/src/adapters/macos/calendar-today.yaml +1 -1
  249. package/src/adapters/macos/safari-url.yaml +8 -4
  250. package/src/adapters/maoyan/hot.yaml +1 -1
  251. package/src/adapters/notion-app/notion-app.ts +17 -1
  252. package/src/adapters/spotify/api.ts +54 -8
  253. package/src/adapters/weibo/trending.yaml +2 -0
  254. package/src/adapters/xiaohongshu/browser-state.ts +59 -2
  255. package/src/adapters/xiaohongshu/feed.ts +103 -0
  256. package/src/adapters/xueqiu/extra.ts +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @owner src/engine/delivery/spec.ts
3
+ * @does Builds explicit delivery operator spec templates from executable command matches.
4
+ * @needs src/engine/delivery/types.ts, src/types.ts
5
+ * @feeds src/commands/do.ts, src/commands/delivery.ts, tests/unit/delivery-cli.test.ts
6
+ * @breaks Bad template IDs or strategy kinds make do-to-delivery handoff ambiguous or non-executable.
7
+ * @invariants generated specs contain no attempts or runs; execution remains owned by delivery.run.
8
+ * @side-effects none
9
+ * @perf O(command metadata size).
10
+ * @concurrency pure and reentrant.
11
+ * @test tests/unit/commands/do.test.ts, tests/unit/delivery-cli.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-31
14
+ */
15
+ import type { AdapterType, TargetSurface } from "../../types.js";
16
+ import type { DeliveryAttempt, DeliveryObjective, DeliveryStrategy } from "./types.js";
17
+ import type { RunId } from "../session/types.js";
18
+ export interface DeliveryRunRef {
19
+ run_id: RunId;
20
+ strategy_id: string;
21
+ id?: string;
22
+ ordinal?: number;
23
+ }
24
+ export interface DeliveryOperatorSpec {
25
+ objective: DeliveryObjective;
26
+ strategies: DeliveryStrategy[];
27
+ attempts: DeliveryAttempt[];
28
+ runs: DeliveryRunRef[];
29
+ recorded_at?: string;
30
+ }
31
+ export interface DeliverySpecCommandMatch {
32
+ intent: string;
33
+ site: string;
34
+ command: string;
35
+ description?: string;
36
+ args?: Record<string, unknown>;
37
+ adapter_path?: string;
38
+ verify_command?: string;
39
+ adapter_type?: AdapterType | string;
40
+ target_surface?: TargetSurface | string;
41
+ uses_browser?: boolean;
42
+ }
43
+ export declare function buildDeliveryOperatorSpecTemplate(match: DeliverySpecCommandMatch): DeliveryOperatorSpec;
44
+ //# sourceMappingURL=spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../../src/engine/delivery/spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EAEf,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAOjD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,wBAAwB,GAC9B,oBAAoB,CA6BtB"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @owner src/engine/delivery/spec.ts
3
+ * @does Builds explicit delivery operator spec templates from executable command matches.
4
+ * @needs src/engine/delivery/types.ts, src/types.ts
5
+ * @feeds src/commands/do.ts, src/commands/delivery.ts, tests/unit/delivery-cli.test.ts
6
+ * @breaks Bad template IDs or strategy kinds make do-to-delivery handoff ambiguous or non-executable.
7
+ * @invariants generated specs contain no attempts or runs; execution remains owned by delivery.run.
8
+ * @side-effects none
9
+ * @perf O(command metadata size).
10
+ * @concurrency pure and reentrant.
11
+ * @test tests/unit/commands/do.test.ts, tests/unit/delivery-cli.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-31
14
+ */
15
+ const DEFAULT_TEMPLATE_GATES = [
16
+ { kind: "run_completed" },
17
+ { kind: "required_evidence_type", evidence_type: "result-envelope" },
18
+ ];
19
+ export function buildDeliveryOperatorSpecTemplate(match) {
20
+ const site = match.site.trim();
21
+ const command = match.command.trim();
22
+ const objectiveId = `deliver-${slugPart(site)}-${slugPart(command)}`;
23
+ const strategyKind = strategyKindForMatch(match);
24
+ const strategyId = `${strategyKind}-${slugPart(site)}-${slugPart(command)}`;
25
+ const strategy = {
26
+ id: strategyId,
27
+ kind: strategyKind,
28
+ label: strategyLabel(match, site, command),
29
+ priority: 10,
30
+ command: `${site}.${command}`,
31
+ ...(hasEntries(match.args) ? { args: match.args } : {}),
32
+ ...(nonEmpty(match.adapter_path)
33
+ ? { adapter_path: match.adapter_path }
34
+ : {}),
35
+ verify_command: match.verify_command ?? `unicli test ${site} ${command}`,
36
+ };
37
+ return {
38
+ objective: {
39
+ id: objectiveId,
40
+ goal: nonEmpty(match.intent) ?? `Run ${site}.${command}`,
41
+ evidence_gates: DEFAULT_TEMPLATE_GATES,
42
+ },
43
+ strategies: [strategy],
44
+ attempts: [],
45
+ runs: [],
46
+ };
47
+ }
48
+ function strategyKindForMatch(match) {
49
+ if (match.uses_browser === true || match.adapter_type === "browser") {
50
+ return "browser";
51
+ }
52
+ if (match.target_surface === "desktop" || match.adapter_type === "desktop") {
53
+ return "desktop";
54
+ }
55
+ if (match.target_surface === "system" ||
56
+ match.adapter_type === "bridge" ||
57
+ match.adapter_type === "service") {
58
+ return "local";
59
+ }
60
+ return "adapter";
61
+ }
62
+ function strategyLabel(match, site, command) {
63
+ const description = nonEmpty(match.description);
64
+ return description
65
+ ? `Run ${site}.${command}: ${description}`
66
+ : `Run ${site}.${command}`;
67
+ }
68
+ function hasEntries(value) {
69
+ return value !== undefined && Object.keys(value).length > 0;
70
+ }
71
+ function nonEmpty(value) {
72
+ const trimmed = value?.trim();
73
+ return trimmed ? trimmed : undefined;
74
+ }
75
+ function slugPart(value) {
76
+ return (value
77
+ .trim()
78
+ .toLowerCase()
79
+ .replace(/[^a-z0-9]+/g, "-")
80
+ .replace(/^-+|-+$/g, "") || "command");
81
+ }
82
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/engine/delivery/spec.ts"],"names":[],"mappings":"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"}
@@ -4,17 +4,21 @@
4
4
  * Dispatches pipeline steps through `step-registry`. Per-step bodies live
5
5
  * in `steps/*.ts` and self-register on import. This file owns:
6
6
  * - PipelineError shape
7
- * - `executeStep` dispatch (registry → visual/ax bus → plugin registry)
7
+ * - `executeStep` dispatch (registry → visual/ax bus → plugin registry);
8
+ * an unrecognized action raises a typed `unknown_action` PipelineError
9
+ * - `buildPipelineError` — single shaping point for step-failure envelopes
8
10
  * - `runPipeline` orchestration (cookies, retry, fallback, auto-fix,
9
- * diagnostic, cookie refresh, temp-dir cleanup)
11
+ * diagnostic, cookie refresh, temp-dir cleanup, per-step observation)
10
12
  *
11
- * Per-step recovery helpers live in `runtime.ts`.
13
+ * Per-step recovery helpers live in `runtime.ts`. The per-step observation
14
+ * record + sink contract live in `step-observer.ts`.
12
15
  */
13
16
  import type { PipelineStep } from "../types.js";
14
17
  import type { BrowserSessionPreference } from "../types.js";
15
18
  import type { BrowserPage } from "../browser/page.js";
16
19
  import { getBus, buildTransportCtx, _resetTransportBusForTests } from "../transport/bus.js";
17
20
  import type { ArgSource, ResolvedArgs } from "./args.js";
21
+ import { type StepObserver } from "./step-observer.js";
18
22
  import "./steps/index.js";
19
23
  export { assertSafeRequestUrl } from "./ssrf.js";
20
24
  export { getBus, buildTransportCtx, _resetTransportBusForTests };
@@ -44,6 +48,13 @@ export interface PipelineOptions {
44
48
  trace_id?: string;
45
49
  /** Browser transport preference declared by a browser command. */
46
50
  browserSession?: BrowserSessionPreference;
51
+ /**
52
+ * Optional sink for per-step observations. When provided, runPipeline emits
53
+ * one observation per executed step (timing + output shape on success,
54
+ * errorType + message on failure). Additive side channel — never alters the
55
+ * result/error envelope. Undefined = zero overhead (the default).
56
+ */
57
+ observer?: StepObserver;
47
58
  }
48
59
  export type PipelineContext = {
49
60
  data: unknown;
@@ -74,7 +85,7 @@ export declare class PipelineError extends Error {
74
85
  step: number;
75
86
  action: string;
76
87
  config: unknown;
77
- errorType: "http_error" | "selector_miss" | "empty_result" | "parse_error" | "network_error" | "timeout" | "expression_error" | "assertion_failed" | "permission_denied" | "stale_ref" | "ambiguous" | "ref_not_found";
88
+ errorType: "http_error" | "selector_miss" | "empty_result" | "parse_error" | "network_error" | "timeout" | "expression_error" | "assertion_failed" | "permission_denied" | "stale_ref" | "ambiguous" | "ref_not_found" | "unknown_action";
78
89
  url?: string;
79
90
  statusCode?: number;
80
91
  responsePreview?: string;
@@ -86,7 +97,7 @@ export declare class PipelineError extends Error {
86
97
  step: number;
87
98
  action: string;
88
99
  config: unknown;
89
- errorType: "http_error" | "selector_miss" | "empty_result" | "parse_error" | "network_error" | "timeout" | "expression_error" | "assertion_failed" | "permission_denied" | "stale_ref" | "ambiguous" | "ref_not_found";
100
+ errorType: "http_error" | "selector_miss" | "empty_result" | "parse_error" | "network_error" | "timeout" | "expression_error" | "assertion_failed" | "permission_denied" | "stale_ref" | "ambiguous" | "ref_not_found" | "unknown_action";
90
101
  url?: string;
91
102
  statusCode?: number;
92
103
  responsePreview?: string;
@@ -100,7 +111,7 @@ export declare class PipelineError extends Error {
100
111
  step: number;
101
112
  action: string;
102
113
  config: unknown;
103
- errorType: "http_error" | "selector_miss" | "empty_result" | "parse_error" | "network_error" | "timeout" | "expression_error" | "assertion_failed" | "permission_denied" | "stale_ref" | "ambiguous" | "ref_not_found";
114
+ errorType: "http_error" | "selector_miss" | "empty_result" | "parse_error" | "network_error" | "timeout" | "expression_error" | "assertion_failed" | "permission_denied" | "stale_ref" | "ambiguous" | "ref_not_found" | "unknown_action";
104
115
  url?: string;
105
116
  statusCode?: number;
106
117
  responsePreview?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/engine/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/engine/executor.ts"],"names":[],"mappings":"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"}
@@ -4,20 +4,25 @@
4
4
  * Dispatches pipeline steps through `step-registry`. Per-step bodies live
5
5
  * in `steps/*.ts` and self-register on import. This file owns:
6
6
  * - PipelineError shape
7
- * - `executeStep` dispatch (registry → visual/ax bus → plugin registry)
7
+ * - `executeStep` dispatch (registry → visual/ax bus → plugin registry);
8
+ * an unrecognized action raises a typed `unknown_action` PipelineError
9
+ * - `buildPipelineError` — single shaping point for step-failure envelopes
8
10
  * - `runPipeline` orchestration (cookies, retry, fallback, auto-fix,
9
- * diagnostic, cookie refresh, temp-dir cleanup)
11
+ * diagnostic, cookie refresh, temp-dir cleanup, per-step observation)
10
12
  *
11
- * Per-step recovery helpers live in `runtime.ts`.
13
+ * Per-step recovery helpers live in `runtime.ts`. The per-step observation
14
+ * record + sink contract live in `step-observer.ts`.
12
15
  */
13
16
  import { rmSync } from "node:fs";
14
17
  import { isTargetError } from "../browser/target-errors.js";
15
- import { formatCookieHeader, loadCookiesWithCDP } from "./cookies.js";
18
+ import { acquireCookies, formatCookieHeader } from "./cookies.js";
19
+ import { describeCookieFailure } from "./cookie-source.js";
16
20
  import { VISUAL_STEP_HANDLERS } from "./steps/visual.js";
17
21
  import { DESKTOP_AX_STEP_HANDLERS, } from "./steps/desktop-ax.js";
18
22
  import { DESKTOP_SIDECAR_STEP_HANDLERS, isDesktopSidecarStep, } from "./steps/desktop-sidecar.js";
19
23
  import { getStep } from "./step-registry.js";
20
24
  import { getBus, buildTransportCtx, _resetTransportBusForTests, } from "../transport/bus.js";
25
+ import { summarizeOutput, } from "./step-observer.js";
21
26
  // Side-effect import: every per-step module self-registers on load.
22
27
  import "./steps/index.js";
23
28
  export { assertSafeRequestUrl } from "./ssrf.js";
@@ -86,7 +91,97 @@ export async function executeStep(ctx, action, config, stepIndex, fullStep, dept
86
91
  const result = await customHandler(pluginCtx, config);
87
92
  return { ...ctx, data: result.data, vars: result.vars };
88
93
  }
89
- return ctx;
94
+ throw new PipelineError(`Unknown pipeline step action "${action}" at step ${stepIndex} — not a registered step, visual/ax/sidecar handler, or plugin step.`, {
95
+ step: stepIndex,
96
+ action,
97
+ config,
98
+ errorType: "unknown_action",
99
+ suggestion: `Step ${stepIndex} names "${action}", which is not a known pipeline step. Run \`unicli list\` for valid steps, or fix the typo in the adapter YAML.`,
100
+ retryable: false,
101
+ alternatives: [],
102
+ });
103
+ }
104
+ /**
105
+ * Build the structured PipelineError for a step failure. Centralizes the
106
+ * error-shaping that the runPipeline catch used to inline across four branches,
107
+ * so the same error can be both observed and thrown. A PipelineError thrown by
108
+ * a step (e.g. the unknown-action guard, fetch http errors) passes through
109
+ * verbatim; only raw/target/HTTP-message errors are wrapped.
110
+ */
111
+ function buildPipelineError(err, stepIndex, action, config, options) {
112
+ if (err instanceof PipelineError)
113
+ return err;
114
+ if (isTargetError(err)) {
115
+ const code = err.detail.code;
116
+ const suggestion = code === "stale_ref"
117
+ ? `Re-take a snapshot before the ${action} step — the page has changed.`
118
+ : code === "ambiguous"
119
+ ? `Ref ${err.detail.ref} matches multiple elements; narrow the ref via a fresh snapshot.`
120
+ : `Ref ${err.detail.ref} is not on the page; re-take a snapshot.`;
121
+ const alternatives = (err.detail.candidates ?? [])
122
+ .slice(0, 5)
123
+ .map((c) => `ref:${c.ref} (${c.role}${c.name ? `: ${c.name}` : ""})`);
124
+ return new PipelineError(err.message, {
125
+ step: stepIndex,
126
+ action,
127
+ config,
128
+ errorType: code,
129
+ suggestion,
130
+ retryable: code === "stale_ref",
131
+ alternatives,
132
+ });
133
+ }
134
+ const errMsg = err instanceof Error ? err.message : String(err);
135
+ const httpStatus = /\bHTTP\s+(\d{3})\b/i.exec(errMsg)?.[1];
136
+ if (httpStatus) {
137
+ const statusCode = Number(httpStatus);
138
+ const retryable = statusCode === 429 ||
139
+ statusCode === 500 ||
140
+ statusCode === 502 ||
141
+ statusCode === 503 ||
142
+ statusCode === 504;
143
+ return new PipelineError(`Step ${stepIndex} (${action}) failed: ${errMsg}`, {
144
+ step: stepIndex,
145
+ action,
146
+ config,
147
+ errorType: "http_error",
148
+ statusCode,
149
+ suggestion: statusCode === 401 || statusCode === 403
150
+ ? `Refresh login state with \`unicli --auth-retry ${options?.site ?? "<site>"} <command> --args-file <path.json>\`, or open the site in Chrome and complete login/challenge.`
151
+ : statusCode === 429
152
+ ? "The upstream site rate-limited the request. Wait, lower --limit, then retry."
153
+ : `The browser-side request returned HTTP ${statusCode}. Retry once; if it persists, inspect the adapter endpoint with \`unicli repair ${options?.site ?? "<site>"} <command>\`.`,
154
+ retryable,
155
+ alternatives: statusCode === 401 || statusCode === 403
156
+ ? [`unicli auth import ${options?.site ?? "<site>"}`]
157
+ : [],
158
+ });
159
+ }
160
+ const isTransient = /timeout|ETIMEDOUT|ECONNREFUSED|ECONNRESET|socket hang up/i.test(errMsg);
161
+ return new PipelineError(`Step ${stepIndex} (${action}) failed: ${errMsg}`, {
162
+ step: stepIndex,
163
+ action,
164
+ config,
165
+ errorType: isTransient ? "timeout" : "parse_error",
166
+ suggestion: `Check the ${action} step at index ${stepIndex} in the adapter YAML. The expression or configuration may be invalid.`,
167
+ retryable: isTransient,
168
+ alternatives: [],
169
+ });
170
+ }
171
+ /**
172
+ * Emit a step observation through the sink, guarding against a misbehaving
173
+ * observer. Observation is a side channel that must never break a run.
174
+ */
175
+ function recordObservation(observer, observation) {
176
+ if (!observer)
177
+ return;
178
+ try {
179
+ observer.record(observation);
180
+ }
181
+ catch {
182
+ // REASON: step observation is a side channel; a misbehaving observer must
183
+ // never break or alter a pipeline run (same invariant the run recorder holds).
184
+ }
90
185
  }
91
186
  async function dispatchBusStep(ctx, action, config) {
92
187
  const params = config && typeof config === "object" && !Array.isArray(config)
@@ -107,19 +202,20 @@ export async function runPipeline(steps, bag, base, options) {
107
202
  let cookieHeader;
108
203
  if ((options?.strategy === "cookie" || options?.strategy === "header") &&
109
204
  options?.site) {
110
- const cookies = await loadCookiesWithCDP(options.site, options.domain);
111
- if (!cookies) {
112
- throw new PipelineError(`No cookies found for "${options.site}". Run: unicli auth setup ${options.site}`, {
205
+ const outcome = await acquireCookies(options.site, options.domain);
206
+ if (outcome.status !== "loaded") {
207
+ const failure = describeCookieFailure(outcome, options.site, options.domain);
208
+ throw new PipelineError(failure.message, {
113
209
  step: -1,
114
210
  action: "auth",
115
211
  config: { site: options.site, strategy: options.strategy },
116
212
  errorType: "http_error",
117
- suggestion: `Either start Chrome with "unicli browser start" and login to ${options.site}, or create cookie file at ~/.unicli/cookies/${options.site}.json`,
118
- retryable: false,
119
- alternatives: [`unicli auth setup ${options.site}`],
213
+ suggestion: failure.suggestion,
214
+ retryable: failure.retryable,
215
+ alternatives: [`unicli auth import ${options.site}`],
120
216
  });
121
217
  }
122
- cookieHeader = formatCookieHeader(cookies);
218
+ cookieHeader = formatCookieHeader(outcome.cookies);
123
219
  }
124
220
  let ctx = {
125
221
  data: null,
@@ -144,6 +240,7 @@ export async function runPipeline(steps, bag, base, options) {
144
240
  const retryCount = rt.getRetryCount(step, extracted);
145
241
  const backoffMs = rt.getBackoffMs(step, extracted);
146
242
  const stepConfig = rt.stripRetryKeys(extracted);
243
+ const startedAt = performance.now();
147
244
  try {
148
245
  ctx =
149
246
  retryCount > 0
@@ -156,71 +253,37 @@ export async function runPipeline(steps, bag, base, options) {
156
253
  : undefined;
157
254
  if (fixed) {
158
255
  ctx = fixed;
256
+ recordObservation(options?.observer, {
257
+ index: i,
258
+ action,
259
+ status: "ok",
260
+ durationMs: performance.now() - startedAt,
261
+ output: summarizeOutput(ctx.data),
262
+ });
159
263
  if (ctx.tempDir)
160
264
  tempDir = ctx.tempDir;
161
265
  continue;
162
266
  }
163
267
  await rt.emitDiagnosticIfEnabled(err, ctx, options?.site);
164
268
  await rt.maybeRefreshCookies(err, options);
165
- if (err instanceof PipelineError)
166
- throw err;
167
- if (isTargetError(err)) {
168
- const code = err.detail.code;
169
- const suggestion = code === "stale_ref"
170
- ? `Re-take a snapshot before the ${action} step — the page has changed.`
171
- : code === "ambiguous"
172
- ? `Ref ${err.detail.ref} matches multiple elements; narrow the ref via a fresh snapshot.`
173
- : `Ref ${err.detail.ref} is not on the page; re-take a snapshot.`;
174
- const alternatives = (err.detail.candidates ?? [])
175
- .slice(0, 5)
176
- .map((c) => `ref:${c.ref} (${c.role}${c.name ? `: ${c.name}` : ""})`);
177
- throw new PipelineError(err.message, {
178
- step: i,
179
- action,
180
- config,
181
- errorType: code,
182
- suggestion,
183
- retryable: code === "stale_ref",
184
- alternatives,
185
- });
186
- }
187
- const errMsg = err instanceof Error ? err.message : String(err);
188
- const httpStatus = /\bHTTP\s+(\d{3})\b/i.exec(errMsg)?.[1];
189
- if (httpStatus) {
190
- const statusCode = Number(httpStatus);
191
- const retryable = statusCode === 429 ||
192
- statusCode === 500 ||
193
- statusCode === 502 ||
194
- statusCode === 503 ||
195
- statusCode === 504;
196
- throw new PipelineError(`Step ${i} (${action}) failed: ${errMsg}`, {
197
- step: i,
198
- action,
199
- config,
200
- errorType: "http_error",
201
- statusCode,
202
- suggestion: statusCode === 401 || statusCode === 403
203
- ? `Refresh login state with \`unicli --auth-retry ${options?.site ?? "<site>"} <command> --args-file <path.json>\`, or open the site in Chrome and complete login/challenge.`
204
- : statusCode === 429
205
- ? "The upstream site rate-limited the request. Wait, lower --limit, then retry."
206
- : `The browser-side request returned HTTP ${statusCode}. Retry once; if it persists, inspect the adapter endpoint with \`unicli repair ${options?.site ?? "<site>"} <command>\`.`,
207
- retryable,
208
- alternatives: statusCode === 401 || statusCode === 403
209
- ? [`unicli auth import ${options?.site ?? "<site>"}`]
210
- : [],
211
- });
212
- }
213
- const isTransient = /timeout|ETIMEDOUT|ECONNREFUSED|ECONNRESET|socket hang up/i.test(errMsg);
214
- throw new PipelineError(`Step ${i} (${action}) failed: ${errMsg}`, {
215
- step: i,
269
+ const pipelineError = buildPipelineError(err, i, action, config, options);
270
+ recordObservation(options?.observer, {
271
+ index: i,
216
272
  action,
217
- config,
218
- errorType: isTransient ? "timeout" : "parse_error",
219
- suggestion: `Check the ${action} step at index ${i} in the adapter YAML. The expression or configuration may be invalid.`,
220
- retryable: isTransient,
221
- alternatives: [],
273
+ status: "error",
274
+ durationMs: performance.now() - startedAt,
275
+ errorType: pipelineError.detail.errorType,
276
+ errorMessage: pipelineError.message,
222
277
  });
278
+ throw pipelineError;
223
279
  }
280
+ recordObservation(options?.observer, {
281
+ index: i,
282
+ action,
283
+ status: "ok",
284
+ durationMs: performance.now() - startedAt,
285
+ output: summarizeOutput(ctx.data),
286
+ });
224
287
  if (ctx.tempDir)
225
288
  tempDir = ctx.tempDir;
226
289
  }
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/engine/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/engine/executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAuB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EACL,wBAAwB,GAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,oEAAoE;AACpE,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;AA6DjE,qEAAqE;AACrE,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IAFlB,YACE,OAAe,EACC,MAwBf;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QA1BC,WAAM,GAAN,MAAM,CAwBrB;QAGD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,WAAoB;QAC9B,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,OAAO,EAAE,WAAW;YACpB,GAAG,IAAI,CAAC,MAAM;YACd,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;YACzC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE;SAC7C,CAAC;IACJ,CAAC;CACF;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,UAAU;IACV,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,SAAS;CACV,CAAC,CAAC;AAEH,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,MAAM,IAAI,oBAAoB,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO,MAAM,IAAI,wBAAwB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAGhE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAoB,EACpB,MAAc,EACd,MAAe,EACf,SAAiB,EACjB,QAAuB,EACvB,KAAc;IAEd,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,MAA0C,CAAC;QACtD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC3D,MAAM,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAErE,IACE,YAAY,CAAC,MAAM,CAAC;QACpB,eAAe,CAAC,MAAM,CAAC;QACvB,oBAAoB,CAAC,MAAM,CAAC,EAC5B,CAAC;QACD,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,IAAI,aAAa,CACrB,iCAAiC,MAAM,aAAa,SAAS,sEAAsE,EACnI;QACE,IAAI,EAAE,SAAS;QACf,MAAM;QACN,MAAM;QACN,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,QAAQ,SAAS,WAAW,MAAM,kHAAkH;QAChK,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,EAAE;KACjB,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,GAAY,EACZ,SAAiB,EACjB,MAAc,EACd,MAAe,EACf,OAAyB;IAEzB,IAAI,GAAG,YAAY,aAAa;QAAE,OAAO,GAAG,CAAC;IAC7C,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7B,MAAM,UAAU,GACd,IAAI,KAAK,WAAW;YAClB,CAAC,CAAC,iCAAiC,MAAM,+BAA+B;YACxE,CAAC,CAAC,IAAI,KAAK,WAAW;gBACpB,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,kEAAkE;gBACzF,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,0CAA0C,CAAC;QACxE,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;aAC/C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE;YACpC,IAAI,EAAE,SAAS;YACf,MAAM;YACN,MAAM;YACN,SAAS,EAAE,IAAI;YACf,UAAU;YACV,SAAS,EAAE,IAAI,KAAK,WAAW;YAC/B,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,SAAS,GACb,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG,CAAC;QACrB,OAAO,IAAI,aAAa,CACtB,QAAQ,SAAS,KAAK,MAAM,aAAa,MAAM,EAAE,EACjD;YACE,IAAI,EAAE,SAAS;YACf,MAAM;YACN,MAAM;YACN,SAAS,EAAE,YAAY;YACvB,UAAU;YACV,UAAU,EACR,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG;gBACtC,CAAC,CAAC,kDAAkD,OAAO,EAAE,IAAI,IAAI,QAAQ,gGAAgG;gBAC7K,CAAC,CAAC,UAAU,KAAK,GAAG;oBAClB,CAAC,CAAC,8EAA8E;oBAChF,CAAC,CAAC,0CAA0C,UAAU,mFAAmF,OAAO,EAAE,IAAI,IAAI,QAAQ,eAAe;YACvL,SAAS;YACT,YAAY,EACV,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG;gBACtC,CAAC,CAAC,CAAC,sBAAsB,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACrD,CAAC,CAAC,EAAE;SACT,CACF,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GACf,2DAA2D,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3E,OAAO,IAAI,aAAa,CAAC,QAAQ,SAAS,KAAK,MAAM,aAAa,MAAM,EAAE,EAAE;QAC1E,IAAI,EAAE,SAAS;QACf,MAAM;QACN,MAAM;QACN,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa;QAClD,UAAU,EAAE,aAAa,MAAM,kBAAkB,SAAS,uEAAuE;QACjI,SAAS,EAAE,WAAW;QACtB,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,QAAkC,EAClC,WAA4B;IAE5B,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,IAAI,CAAC;QACH,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,+EAA+E;IACjF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,GAAoB,EACpB,MAAc,EACd,MAAe;IAEf,MAAM,MAAM,GACV,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5D,CAAC,CAAE,MAAkC;QACrC,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IACvE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC;QACpC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAC9B,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC5B,CAAC,CAAC,6BAA6B,CAAC,MAAM,CAAC;YACvC,CAAC,CAAC,wBAAwB,CAAC,MAA2B,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;IACpC,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAqB,EACrB,GAAiB,EACjB,IAAa,EACb,OAAyB;IAEzB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACxC,IAAI,YAAgC,CAAC;IACrC,IACE,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,IAAI,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC;QAClE,OAAO,EAAE,IAAI,EACb,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,qBAAqB,CACnC,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,MAAM,CACf,CAAC;YACF,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE;gBACvC,IAAI,EAAE,CAAC,CAAC;gBACR,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAC1D,SAAS,EAAE,YAAY;gBACvB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,YAAY,EAAE,CAAC,sBAAsB,OAAO,CAAC,IAAI,EAAE,CAAC;aACrD,CAAC,CAAC;QACL,CAAC;QACD,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,GAAG,GAAoB;QACzB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,EAAE;QACR,IAAI;QACJ,YAAY;QACZ,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,QAAQ,EAAE,OAAO,EAAE,QAAQ;QAC3B,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,cAAc,EAAE,OAAO,EAAE,cAAc;KACxC,CAAC;IACF,IAAI,OAA2B,CAAC;IAEhC,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAC1D,IAAI,EACJ,MAAM,CACP,CAAC;YACF,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,GAAG;oBACD,UAAU,GAAG,CAAC;wBACZ,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,CACnB,GAAG,EACH,MAAM,EACN,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,CAAC,EACD,IAAI,CACL;wBACH,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,CACvB,GAAG,EACH,MAAM,EACN,UAAU,EACV,SAAS,EACT,CAAC,EACD,IAAI,CACL,CAAC;YACV,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,OAAO,EAAE,IAAI;oBACzB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,CACvB,GAAG,EACH,GAAG,EACH,MAAM,EACN,UAAU,EACV,CAAC,EACD,OAAO,CAAC,IAAI,CACb;oBACH,CAAC,CAAC,SAAS,CAAC;gBACd,IAAI,KAAK,EAAE,CAAC;oBACV,GAAG,GAAG,KAAK,CAAC;oBACZ,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;wBACnC,KAAK,EAAE,CAAC;wBACR,MAAM;wBACN,MAAM,EAAE,IAAI;wBACZ,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;wBACzC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;qBAClC,CAAC,CAAC;oBACH,IAAI,GAAG,CAAC,OAAO;wBAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;oBACvC,SAAS;gBACX,CAAC;gBAED,MAAM,EAAE,CAAC,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC1D,MAAM,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAE3C,MAAM,aAAa,GAAG,kBAAkB,CACtC,GAAG,EACH,CAAC,EACD,MAAM,EACN,MAAM,EACN,OAAO,CACR,CAAC;gBACF,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;oBACnC,KAAK,EAAE,CAAC;oBACR,MAAM;oBACN,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;oBACzC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,SAAS;oBACzC,YAAY,EAAE,aAAa,CAAC,OAAO;iBACpC,CAAC,CAAC;gBACH,MAAM,aAAa,CAAC;YACtB,CAAC;YAED,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;gBACnC,KAAK,EAAE,CAAC;gBACR,MAAM;gBACN,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;gBACzC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QACzC,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACzC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../../../src/engine/kernel/stages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../../../src/engine/kernel/stages.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ import { buildBrowserCommandDiagnostic } from "../browser/diagnostics.js";
12
12
  import { createApprovalStore, rememberApproval } from "../approval-store.js";
13
13
  import { errorTypeToCode, errorToAgentFields, mapErrorToExitCode, } from "../../output/error-map.js";
14
14
  import { commandStrategy } from "../../registry.js";
15
- import { ExitCode } from "../../types.js";
15
+ import { ExitCode, } from "../../types.js";
16
16
  import { InvalidPermissionProfileError, resolveOperationAdapterPath, resolveOperationTargetSurface, } from "../operation-policy.js";
17
17
  import { evaluateOperationPolicyWithApprovals } from "../permission-runtime.js";
18
18
  import { PermissionRulesConfigError } from "../permission-rules.js";
@@ -322,13 +322,14 @@ export async function rememberKernelApproval(inv, policy, warnings) {
322
322
  }
323
323
  }
324
324
  export async function executeKernelCommand(inv, ctx) {
325
+ const browserSession = resolveBrowserSessionPreference(inv.command, ctx.strategy);
325
326
  if (inv.command.pipeline) {
326
327
  return runPipeline(inv.command.pipeline, inv.bag, inv.adapter.base, {
327
328
  site: inv.adapter.name,
328
329
  command: inv.cmdName,
329
330
  strategy: ctx.strategy,
330
331
  domain: inv.command.domain ?? inv.adapter.domain,
331
- browserSession: inv.command.browserSession,
332
+ browserSession,
332
333
  surface: inv.surface,
333
334
  trace_id: inv.trace_id,
334
335
  });
@@ -349,7 +350,7 @@ export async function executeKernelCommand(inv, ctx) {
349
350
  site: inv.adapter.name,
350
351
  command: inv.cmdName,
351
352
  domain: inv.command.domain ?? inv.adapter.domain,
352
- browserSession: inv.command.browserSession,
353
+ browserSession,
353
354
  });
354
355
  }
355
356
  const raw = await inv.command.func(page, inv.bag.args);
@@ -364,6 +365,15 @@ export async function executeKernelCommand(inv, ctx) {
364
365
  }
365
366
  throw new Error(`command ${ctx.key} has neither pipeline nor func`);
366
367
  }
368
+ function resolveBrowserSessionPreference(command, strategy) {
369
+ if (command.browserSession)
370
+ return command.browserSession;
371
+ if (command.browser === true &&
372
+ (strategy === "cookie" || strategy === "header" || strategy === "intercept")) {
373
+ return "user";
374
+ }
375
+ return undefined;
376
+ }
367
377
  export function malformedCommandResult(inv, ctx, startedAt, warnings) {
368
378
  const error = {
369
379
  code: "internal_error",
@@ -425,7 +435,7 @@ export function successKernelResult(inv, ctx, startedAt, warnings, results) {
425
435
  }),
426
436
  },
427
437
  durationMs,
428
- exitCode: results.length === 0 ? ExitCode.EMPTY_RESULT : ExitCode.SUCCESS,
438
+ exitCode: ExitCode.SUCCESS,
429
439
  warnings,
430
440
  ...(diagnostics ? { diagnostics } : {}),
431
441
  };