dsh-plugin-lcu 0.3.0 → 0.3.5

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,73 @@
1
+ # Changelog
2
+
3
+ ## 0.3.5
4
+
5
+ Diagnostics only — no behaviour change.
6
+
7
+ `onDiag` existed on the connection and nothing passed it, so the control channel's decisions never reached the
8
+ diagnostic log. The client maps "no runtime service is connected" and "nothing is held" to the same empty list,
9
+ and only the connection knows which happened, so a `computer_use_stop` that found nothing was indistinguishable
10
+ in the log from one whose channel was never up.
11
+
12
+ Found by reading a real session's log after a successful browser and computer-use test: the control channel had
13
+ been working there the whole time, and there was no line to say so.
14
+
15
+ ## 0.3.4
16
+
17
+
18
+ **The plugin no longer installs, invokes or depends on LCU.** It locates and validates the ChatGPT application
19
+ itself, builds the environment the computer-use runtime expects, and starts the application's own entry point.
20
+
21
+ - **Direct launch.** `src/app.ts` resolves the application, refuses files another account could replace, and
22
+ computes the runtime environment — its own `node` and `node_repl`, its module roots, trusted code paths, the
23
+ API surface, and the signed helper the macOS native pipe launches. No second interpreter: the Python 3.12+
24
+ requirement is gone, and attaching is roughly an order of magnitude faster.
25
+ - **Turn cleanup through the application's own IPC.** `helper/sky-service.mjs` is loaded as the runtime's `sky`
26
+ trusted service. It forwards every request to the application's service unchanged and adds the one thing the
27
+ runtime has no handler for: the turn-ended hook that releases a per-application Stop. It deliberately omits
28
+ the step that signalled a supervisor process and spawned the signed client with a `turn-ended` argument —
29
+ that needs Apple Events, which macOS refuses a hardened-runtime harness, so it always timed out. The
30
+ application's own IPC needs no Apple Events and settles in tens of milliseconds.
31
+ - **A Stop is released by the turn that asked for it.** `computer_use_stop` now works: the plugin serves the
32
+ runtime's control channel and relays `status` and `stop` to the wrapper, which answers them from inside the
33
+ runtime. Verified end to end — a Stop refuses the application for the turn that asked for it, and the next
34
+ turn can use it again.
35
+ - **A long session stays on one generation.** The runtime is executed from files the application replaces when
36
+ it updates, so a facade compares the application's fingerprint before every call and reconnects when it
37
+ changes, carrying the session identity across the replacement.
38
+ - **The preset generator moved out.** It generates presets that serve more than one plugin, and the region it
39
+ writes is also written by DSH's settings UI, so it is now
40
+ [its own project](https://github.com/ckanner/dsh-preset-generator). `scripts/gen-presets.mjs` and the
41
+ `presets` script are gone from this package.
42
+ - Fixed: a per-connection temporary directory leaked on every path that had to signal the child rather than
43
+ have it exit on stdin.
44
+ - Fixed: an unreadable application fingerprint was treated as a change, which started a second runtime for a
45
+ bundle that was merely unreadable for a moment mid-update.
46
+
47
+ ### A note on the version numbers
48
+
49
+ `v0.3.0` through `v0.3.3` are **git tags**, each with its own content, and npm's `0.3.0` is not any of them:
50
+ it was published from the tree *after* `v0.3.3`, and so contains everything below plus the work above. The
51
+ next number that is unambiguous is `0.3.4`, which is this release.
52
+
53
+ ## 0.3.3
54
+
55
+ Reverted the Codex model-selection change from 0.3.2. `modelSelectionSettings: true` cannot be enabled on the
56
+ Codex row: the provider declares `NO_START_CAPABILITIES`, which has no `agentOptions`, and `tool-subagent`
57
+ asserts that pairing at load — the row vanished with no tool and no error. The "never drop a preset" guardrail
58
+ from 0.3.2 is kept.
59
+
60
+ ## 0.3.2
61
+
62
+ Added the guardrail that a run never drops a preset the profile already defines, and `--daily-only` refuses when
63
+ the file already has `heavy`. Also attempted the Codex model surface, reverted in 0.3.3.
64
+
65
+ ## 0.3.1
66
+
67
+ The `apply` log line records the two lists that decide whether an unattended run can proceed, so an empty
68
+ allowlist can be told from a populated one without opening the patch layers.
69
+
70
+ ## 0.3.0
71
+
72
+ An application can be pre-approved with `allowedApps`, so an unattended run — where an unanswered question is a
73
+ refusal — can proceed without a person at the keyboard.
package/README.md CHANGED
@@ -75,22 +75,28 @@ manager (Settings ▸ Plugins) instead, which runs the same pnpm operation.
75
75
  ### 2. Generate the presets
76
76
 
77
77
  DSH agent presets have **no inheritance**: a preset's `config.plugins` is its complete plugin list, and
78
- a patch replaces a whole entry rather than merging into it. So a custom preset must restate its base.
79
- Rather than hand-copying that list, generate it from the preset that is actually installed:
78
+ a patch replaces a whole entry rather than merging into it. So a custom preset must restate its base —
79
+ and the base ships inside the application and changes when DSH is upgraded.
80
+
81
+ That restatement is **not part of this package**. It serves more than one plugin, and the region it writes
82
+ is also written by DSH's own settings UI, so it lives on its own:
80
83
 
81
84
  ```sh
82
- node node_modules/dsh-plugin-lcu/scripts/gen-presets.mjs --profile ~/.dsh/profiles/<profile>
85
+ git clone https://github.com/ckanner/dsh-preset-generator
86
+ node dsh-preset-generator/src/gen-presets.mjs --profile ~/.dsh/profiles/<profile>
83
87
  ```
84
88
 
85
89
  This writes a marked block into that profile's `cordis.patch.yml` containing two presets:
86
90
 
87
91
  | Preset | Base | Adds |
88
92
  |---|---|---|
89
- | `daily` | the shipped `ptc` preset | `subagent_codex` enabled |
93
+ | `daily` | the shipped `ptc` preset | a Codex delegation provider of its own |
90
94
  | `heavy` | the same, with `tool-presentation: both` | everything above, and this plugin attaches |
91
95
 
92
- Re-run it after a DSH upgrade so the copies keep up. `--with-heavy` is implied; `--dry-run` prints
93
- without writing, and `--out FILE` writes somewhere else.
96
+ Re-run it after a DSH upgrade so the copies keep up. `--daily-only` emits just `daily`, `--dry-run`
97
+ prints without writing, and `--out FILE` writes somewhere else. The official `tool-subagent-codex` row
98
+ stays disabled, as the base ships it: a separate provider registers its own `subagent_codex`, and two
99
+ rows registering that name in one scope collide.
94
100
 
95
101
  > `heavy` sets the tool presentation to `both` on purpose. In pure `ptc` presentation the model only
96
102
  > sees `run_code`, so `js` would have to be nested as a JavaScript string inside another JavaScript
package/docs/README.zh.md CHANGED
@@ -65,20 +65,23 @@ dsh plugin --profile <profile> add dsh-plugin-lcu
65
65
 
66
66
  ### 2. 生成 preset
67
67
 
68
- DSH 的 agent preset **没有继承**:一个 preset 的 `config.plugins` 就是它完整的插件列表,而 patch 是**整体替换**一个条目而不是合并进去。所以自定义 preset 必须重述它的基底。与其手抄那份列表,不如从**实际装着的** preset 生成:
68
+ DSH 的 agent preset **没有继承**:一个 preset 的 `config.plugins` 就是它完整的插件列表,而 patch 是**整体替换**一个条目而不是合并进去。所以自定义 preset 必须重述它的基底 —— 而基底随应用一起发布,会随 DSH 升级变化。
69
+
70
+ 这份"重述"**不属于本包**。它服务的不止一个插件,而它写入的那个区间**DSH 自己的设置 UI 也会写**,所以它独立在外:
69
71
 
70
72
  ```sh
71
- node node_modules/dsh-plugin-lcu/scripts/gen-presets.mjs --profile ~/.dsh/profiles/<profile>
73
+ git clone https://github.com/ckanner/dsh-preset-generator
74
+ node dsh-preset-generator/src/gen-presets.mjs --profile ~/.dsh/profiles/<profile>
72
75
  ```
73
76
 
74
77
  它会在该 profile 的 `cordis.patch.yml` 里写一个带标记的块,含两个 preset:
75
78
 
76
79
  | preset | 基底 | 增加 |
77
80
  |---|---|---|
78
- | `daily` | 自带的 `ptc` preset | 启用 `subagent_codex` |
81
+ | `daily` | 自带的 `ptc` preset | 一套自己的 Codex 委派 provider |
79
82
  | `heavy` | 同上,且 `tool-presentation: both` | 以上全部,且本插件接入 |
80
83
 
81
- DSH 升级后重跑一次,让副本跟上。`--with-heavy` 是隐含的;`--dry-run` 只打印不写;`--out FILE` 写到别处。
84
+ DSH 升级后重跑一次,让副本跟上。`--daily-only` 只生成 `daily`;`--dry-run` 只打印不写;`--out FILE` 写到别处。官方的 `tool-subagent-codex` 行保持**禁用**(和基底一致):另有一套 provider 自己注册 `subagent_codex`,而两行在同一个 scope 里注册同名工具会冲突。
82
85
 
83
86
  > `heavy` 特意把工具呈现设为 `both`。纯 `ptc` 呈现下模型只看得到 `run_code`,`js` 就得嵌成另一个 JavaScript 程序里的字符串。`both` 让 `js` 可以被直接调用。
84
87
 
package/lib/index.js CHANGED
@@ -208,6 +208,11 @@ export function apply(ctx, config) {
208
208
  env: plan.env,
209
209
  onElicitation: (request, elicitSignal) => presentApproval(agent, request, elicitSignal),
210
210
  onStderr: (line) => { ctx.logger.debug(`lcu: ${line}`); },
211
+ // The control channel decides whether a per-application Stop is reachable
212
+ // at all, and its decisions were invisible: `onDiag` existed on the
213
+ // connection but nothing passed it, so the one subsystem that can report
214
+ // "no service is connected" said nothing anywhere.
215
+ onDiag: (message) => { diag(` ${message}`); },
211
216
  });
212
217
  await opened.connect(signal);
213
218
  first ??= opened;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAMhC,OAAO,EACL,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAC/E,yBAAyB,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,GACjF,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,aAAa,EAAE,QAAQ,EAAE,yBAAyB,EAAE,kBAAkB,GAEvE,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,cAAc,EAA0B,MAAM,cAAc,CAAA;AAErE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAA;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;AAG/C;;;;;;;GAOG;AACH,MAAM,aAAa,GAAG;IACpB,kCAAkC;IAClC,qGAAqG;IACrG,yEAAyE;IACzE,+FAA+F;IAC/F,oGAAoG;IACpG,qGAAqG;IACrG,sGAAsG;IACtG,4BAA4B;CAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ,+EAA+E;AAC/E,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAwD/B,uDAAuD;AACvD,MAAM,eAAe,GAAG,yCAAyC,CAAA;AAEjE,SAAS,eAAe,CAAC,MAAc;IACrC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,GAAG;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,IAAI;QAC9B,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI;QAC5B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;QACpC,cAAc,EAAE,gBAAgB,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;QAC7D,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC;QAC9C,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,qBAAqB;KAC3D,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAc;IAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAoBxC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAA;IAC9C,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;UACzH,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAA;IAE/H,2EAA2E;IAC3E,8DAA8D;IAC9D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC;YACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxE,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxE,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAA;IACxG,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrE,IAAI,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAA;QACpC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,MAAM,GAAG,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,CAAC,4BAA4B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,kBAAkB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;IAEzP,4EAA4E;IAC5E,0EAA0E;IAC1E,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC1C,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;QAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAA;QACpE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;QAC/D,OAAO,GAAG,EAAE,GAAG,KAAK,OAAO,EAAE,CAAA,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF;;;;;OAKG;IACH,KAAK,UAAU,eAAe,CAAC,KAAY,EAAE,OAA8B,EAAE,MAAmB;QAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,CAAC,wBAAwB,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,YAAY,kBAAkB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC1L,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,8DAA8D,CAAC,CAAA;YACpE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;QAC7B,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAA;QAC1B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,wEAAwE;YACxE,wDAAwD;YACxD,IAAI,MAAM,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,sCAAsC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC/D,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAwD,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAA;gBAC7F,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YAC9B,CAAC;YACD,wEAAwE;YACxE,IAAI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,8BAA8B,CAAC,CAAA;gBACxE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YAC1C,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC;oBACjC,KAAK;oBACL,MAAM;oBACN,SAAS,EAAE,CAAC;4BACV,EAAE,EAAE,QAAQ;4BACZ,MAAM,EAAE,uBAAuB;4BAC/B,QAAQ,EAAE,QAAQ,CAAC,OAAO;4BAC1B,MAAM,EAAE,gDAAgD,QAAQ,CAAC,QAAQ,GAAG;4BAC5E,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;yBACrE,CAAC;iBACH,CAAC,CAAA;gBACF,qEAAqE;gBACrE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAC9E,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBACpD,IAAI,CAAC,0BAA0B,QAAQ,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,QAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACtG,OAAO,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAClD,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACtF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;YAC7B,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,iFAAiF;YACjF,uEAAuE;YACvE,iEAAiE;YACjE,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;YACzE,IAAI,CAAC,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,0CAA0C,CAAC,CAAA;YACrH,IAAI,WAAW;gBAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YACzD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC;oBACjC,KAAK;oBACL,MAAM;oBACN,SAAS,EAAE,CAAC;4BACV,EAAE,EAAE,QAAQ;4BACZ,MAAM,EAAE,4BAA4B;4BACpC,QAAQ,EAAE,eAAe;4BACzB,MAAM,EAAE,4BAA4B,MAAM,GAAG;4BAC7C,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;yBACpD,CAAC;iBACH,CAAC,CAAA;gBACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACjF,IAAI,CAAC,oBAAoB,MAAM,eAAe,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;gBACnE,IAAI,QAAQ,KAAK,OAAO;oBAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;gBAClE,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;YAC9E,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;YAC7B,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,iEAAiE;QACjE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;QACnE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;IAC7B,CAAC;IAED,6DAA6D;IAC7D,KAAK,UAAU,MAAM,CAAC,KAAY,EAAE,MAAoB;QACtD,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAM;QAClC,yEAAyE;QACzE,+CAA+C;QAC/C,IAAI,KAAgC,CAAA;QACpC,oDAAoD;QACpD,KAAK,UAAU,cAAc;YAC3B,MAAM,IAAI,GAAG,UAAU,CAAC;gBACtB,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACxE,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACxE,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,QAAQ,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;aACpC,CAAC,CAAA;YACF,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACxE,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;gBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,aAAa,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC;gBACvF,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;gBACxD,0EAA0E;gBAC1E,oEAAoE;gBACpE,yEAAyE;gBACzE,mDAAmD;gBACnD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAA,CAAC,CAAC;aAC9C,CAAC,CAAA;YACF,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC5B,KAAK,KAAK,MAAM,CAAA;YAChB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,OAAuB,CAAA;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC;gBAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;oBACxB,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;oBACrC,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;wBAC7B,IAAI,CAAC,2BAA2B,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;oBAChE,CAAC;oBACD,OAAO,MAAM,CAAA;gBACf,CAAC;gBACD,sEAAsE;gBACtE,mEAAmE;gBACnE,UAAU,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC5D,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;oBAC9B,IAAI,CAAC,wDAAwD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;oBACxG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAA;gBACvG,CAAC;gBACD,kBAAkB,EAAE,CAAC,KAAc,EAAE,EAAE;oBACrC,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACrE,IAAI,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAA;oBACtC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mEAAmE,MAAM,GAAG,CAAC,CAAA;gBAC/F,CAAC;gBACD,sBAAsB,EAAE,CAAC,KAAc,EAAE,EAAE;oBACzC,0EAA0E;oBAC1E,0BAA0B;oBAC1B,IAAI,CAAC,4DAA4D,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBAC5H,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,6EAA6E;YAC7E,kCAAkC;YAClC,MAAM,MAAM,GAAG,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACnH,IAAI,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAA;YAC1C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,MAAM,GAAG,CAAC,CAAA;YAC/D,OAAM;QACR,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,oCAAoC,CAAC,CAAA;YAC1C,OAAM;QACR,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAA;QAC1B,IAAI,CAAC,+BAA+B,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC/K,MAAM,KAAK,GAAa,EAAE,UAAU,EAAE,CAAA;QACtC,yEAAyE;QACzE,uEAAuE;QACvE,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACvC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAE7B,2EAA2E;QAC3E,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;YAC1B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzB,KAAK,UAAU,CAAC,KAAK,EAAE,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;gBAC3C,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM;gBAC/B,UAAU,EAAE,KAAK,IAAI,EAAE;oBACrB,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAA;oBACpC,IAAI,OAAO,KAAK,SAAS;wBAAE,OAAM;oBACjC,oEAAoE;oBACpE,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;oBAC7D,KAAK,CAAC,cAAc,GAAG,SAAS,CAAA;oBAChC,IAAI,CAAC,kDAAkD,CAAC,CAAA;gBAC1D,CAAC;aACF,CAAC,CAAA;YACF,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACpC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACzH,MAAM,KAAK,CAAA;QACb,CAAC;QAED,6EAA6E;QAC7E,4EAA4E;QAC5E,sDAAsD;QACtD,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC;YAC7B,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,QAAQ,CAAC,YAAY;YAC5B,IAAI,EAAE,KAAK,CAAC,YAAY,KAAK,EAAE;gBAC7B,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,OAAO,aAAa,EAAE;SAChD,CAAC,CAAA;QAEF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,QAAQ,4BAA4B,CAAC,CAAA;IACxF,CAAC;IAED;;;;;OAKG;IACH,SAAS,YAAY,CAAC,KAAY;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACxC,IAAI,QAA4B,CAAA;QAChC,IAAI,YAAgC,CAAA;QACpC,IAAI,CAAC;YACH,QAAQ,GAAG,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvE,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAA;QAC/C,IAAI,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,QAAQ,CAAC,QAAQ,CAAC,WAAW,QAAQ,CAAC,MAAM,CAAC,QAAQ,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QAC7H,MAAM,MAAM,GAAG,QAAQ,IAAI,MAAM,CAAA;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAAC,OAAO,KAAK,CAAA;QAAC,CAAC;QACxE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACjD,IAAI,CAAC,eAAe,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAA;QACzE,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,CAAC,uBAAuB,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;QAC/D,IAAI,CAAC,iCAAiC,MAAM,CAAC,SAAS,CAAC,WAAW,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QAC1F,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAM;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QACvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;YACnB,IAAI,CAAC,iBAAiB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;QACzD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1G,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAClD,6EAA6E;QAC7E,4EAA4E;QAC5E,yEAAyE;QACzE,IAAI,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,QAAQ,CAAE,KAAK,CAAC,GAAsC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC3H,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,OAAM;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACxG,OAAM;QACR,CAAC;QACD,IAAI,CAAC,iCAAiC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACzJ,CAAC,CAAC,CAAA;IAEF,4EAA4E;IAC5E,0EAA0E;IAC1E,+DAA+D;IAC/D,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAA;QAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YACrD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;YACvB,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE,CAAA;QAC7B,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,6EAA6E;IAC7E,6EAA6E;IAC7E,4BAA4B;IAC5B,GAAG,CAAC,EAAE,CAAC,qBAAqB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC,CAAA;QACvJ,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAClC,wDAAwD;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC3B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAM;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC1F,KAAK,CAAC,cAAc,GAAG,SAAS,CAAA;QAClC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;YAC/D,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;gBACvC,sEAAsE;gBACtE,oEAAoE;gBACpE,KAAK,CAAC,cAAc,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;gBAC5C,IAAI,CAAC,uEAAuE,CAAC,CAAA;gBAC7E,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAA;YACxG,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACpF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACvG,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,uDAAuD;IACvD,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;QACpB,MAAM,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QACtC,WAAW,CAAC,KAAK,EAAE,CAAA;QACnB,KAAK,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI;YAAE,KAAK,UAAU,CAAC,KAAK,EAAE,CAAA;IAC5D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,KAA2C,CAAA;AACpD,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAQlD,OAAO,EAC+C,kBAAkB,EAEvE,MAAM,iBAAiB,CAAA;AAUxB,eAAO,MAAM,IAAI,QAAQ,CAAA;AACzB,eAAO,MAAM,MAAM,UAA4B,CAAA;AAyB/C,4BAA4B;AAC5B,MAAM,WAAW,MAAM;IACrB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qGAAqG;IACrG,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AA8BD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAyWxD;AAYD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAQlD,OAAO,EAC+C,kBAAkB,EAEvE,MAAM,iBAAiB,CAAA;AAUxB,eAAO,MAAM,IAAI,QAAQ,CAAA;AACzB,eAAO,MAAM,MAAM,UAA4B,CAAA;AAyB/C,4BAA4B;AAC5B,MAAM,WAAW,MAAM;IACrB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qGAAqG;IACrG,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AA8BD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA8WxD;AAYD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-lcu",
3
- "version": "0.3.0",
3
+ "version": "0.3.5",
4
4
  "description": "Drive the desktop and Chrome from DeepSeek Harness using the computer-use runtime inside the ChatGPT desktop application.",
5
5
  "keywords": [
6
6
  "dsh-plugin",
@@ -37,6 +37,7 @@
37
37
  "./package.json": "./package.json"
38
38
  },
39
39
  "files": [
40
+ "CHANGELOG.md",
40
41
  "lib",
41
42
  "helper",
42
43
  "cordis.patch.yml",
@@ -60,7 +61,6 @@
60
61
  "typecheck": "tsc -p tsconfig.json --noEmit",
61
62
  "test": "node --test \"tests/*.spec.ts\"",
62
63
  "prepare": "npm run build",
63
- "presets": "node scripts/gen-presets.mjs",
64
64
  "probe": "node scripts/probe-lcu.mjs",
65
65
  "update-codex": "node scripts/update-codex.mjs"
66
66
  },
@@ -1,285 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * gen-presets.mjs — derive DSH agent presets from the installed `ptc` preset.
4
- *
5
- * Why this exists
6
- * ---------------
7
- * DSH agent presets have **no inheritance** (`config.plugins` is a complete
8
- * child-plugin list) and `cordis.patch.yml` patches **replace** a whole entry's
9
- * config rather than deep-merging it. So a custom preset has to restate the full
10
- * plugin list of whatever it is based on. This script reads that base list
11
- * straight out of the *installed* app and regenerates our preset rows, so a DSH
12
- * upgrade is one re-run instead of a hand merge.
13
- *
14
- * It is deliberately dependency-free (plain Node, no YAML library): the base
15
- * file is copied line-for-line and only surgically edited, and every expected
16
- * edit is asserted — if a DSH upgrade changes the shape, this script fails loudly
17
- * instead of emitting a subtly wrong preset.
18
- *
19
- * Usage
20
- * -----
21
- * node scripts/gen-presets.mjs # write into the desktop profile patch
22
- * node scripts/gen-presets.mjs --dry-run # print, write nothing
23
- * node scripts/gen-presets.mjs --out FILE # write to FILE instead
24
- * node scripts/gen-presets.mjs # emits daily and heavy
25
- * node scripts/gen-presets.mjs --daily-only # refuses if the file already has heavy
26
- * node scripts/gen-presets.mjs --asar PATH # override the app.asar path
27
- * node scripts/gen-presets.mjs --profile DIR # override the profile directory
28
- */
29
-
30
- import { closeSync, openSync, readFileSync, readSync, writeFileSync } from 'node:fs'
31
- import { homedir } from 'node:os'
32
- import { join } from 'node:path'
33
-
34
- // ---------------------------------------------------------------------------
35
- // Defaults
36
- // ---------------------------------------------------------------------------
37
-
38
- const DEFAULT_ASAR =
39
- '/Applications/DeepSeek Harness.app/Contents/Resources/app.asar'
40
- const BASE_PRESET = 'dsh/node_modules/@deepseek-ai/dsh-web-app/presets/ptc.patch.yml'
41
- const DEFAULT_PROFILE = join(homedir(), '.dsh', 'profiles', 'desktop')
42
-
43
- const BEGIN = '# >>> BEGIN generated presets (scripts/gen-presets.mjs) >>>'
44
- const END = '# <<< END generated presets <<<'
45
-
46
- /** The two presets this script owns. `daily` is a faithful PTC + Codex; `heavy`
47
- * flips the tool presentation to `both` so LCU's `js` is callable natively
48
- * instead of being nested inside a `run_code` program. */
49
- const PRESETS = {
50
- daily: {
51
- id: 'daily',
52
- name: '日常',
53
- description: '日常编码:PTC 程序化工具调用 + Codex 委派',
54
- order: 5,
55
- presentation: null, // keep the base's `ptc`
56
- enable: ['tool-subagent-codex'],
57
- append: [],
58
- },
59
- heavy: {
60
- id: 'heavy',
61
- name: '重活',
62
- description: '超前/困难的重活:需要 Computer 或 Browser 时用',
63
- order: 6,
64
- // `both` so LCU's `js` stays callable natively: in pure `ptc` presentation
65
- // the model would have to nest a whole CUA program inside a run_code string.
66
- // No tool row is added here — `dsh-plugin-lcu` is mounted at the root and
67
- // registers its tools per Agent by checking this preset's id.
68
- presentation: 'both',
69
- enable: ['tool-subagent-codex'],
70
- append: [],
71
- },
72
- }
73
-
74
- // ---------------------------------------------------------------------------
75
- // Minimal asar reader (Electron's asar is a simple header + flat blob)
76
- // ---------------------------------------------------------------------------
77
-
78
- /**
79
- * Read one file out of an asar archive without Electron.
80
- * @param asarPath - absolute path to the `.asar` file
81
- * @param innerPath - slash-separated path inside the archive
82
- * @returns the file contents
83
- */
84
- function readAsarFile(asarPath, innerPath) {
85
- const fd = openSync(asarPath, 'r')
86
- try {
87
- const head = Buffer.alloc(16)
88
- readSync(fd, head, 0, 16, 0)
89
- const baseOffset = 8 + head.readUInt32LE(4)
90
- const jsonSize = head.readUInt32LE(12)
91
- const json = Buffer.alloc(jsonSize)
92
- readSync(fd, json, 0, jsonSize, 16)
93
- let node = JSON.parse(json.toString('utf8'))
94
- for (const segment of innerPath.split('/').filter(Boolean)) {
95
- node = node.files?.[segment]
96
- if (node === undefined) throw new Error(`not in archive: ${innerPath}`)
97
- }
98
- if (node.files !== undefined) throw new Error(`is a directory: ${innerPath}`)
99
- const buf = Buffer.alloc(node.size)
100
- readSync(fd, buf, 0, node.size, baseOffset + Number(node.offset))
101
- return buf
102
- } finally {
103
- closeSync(fd)
104
- }
105
- }
106
-
107
- // ---------------------------------------------------------------------------
108
- // Line surgery
109
- // ---------------------------------------------------------------------------
110
-
111
- /** Indentation (0-based column of the first non-space char); -1 for blank lines. */
112
- const indentOf = (line) => (line.trim() === '' ? -1 : line.search(/\S/))
113
-
114
- /** Index of the child row `- id: <rowId>` inside a plugin list. */
115
- function findRow(lines, rowId) {
116
- const index = lines.findIndex((line) => line.trim().startsWith(`- id: ${rowId}`))
117
- if (index < 0) throw new Error(`plugin row not found: ${rowId}`)
118
- return index
119
- }
120
-
121
- /**
122
- * Iterate the direct/indirect body lines of the row starting at `start`,
123
- * stopping at the next row or any line dedented to the row's own level.
124
- */
125
- function* body(lines, start) {
126
- const base = indentOf(lines[start])
127
- for (let i = start + 1; i < lines.length; i += 1) {
128
- const ind = indentOf(lines[i])
129
- if (ind === -1) continue
130
- if (ind <= base) return
131
- yield i
132
- }
133
- }
134
-
135
- /**
136
- * Remove `disabled: true` from one row, turning it on.
137
- * @returns a new line array
138
- */
139
- function enableRow(lines, rowId) {
140
- const start = findRow(lines, rowId)
141
- for (const i of body(lines, start)) {
142
- if (lines[i].trim().startsWith('disabled:')) {
143
- return lines.filter((_, k) => k !== i)
144
- }
145
- }
146
- return lines // already enabled — idempotent
147
- }
148
-
149
- /** Rewrite `mode:` inside the `tool-presentation` row. */
150
- function setPresentationMode(lines, mode) {
151
- const start = findRow(lines, 'tool-presentation')
152
- for (const i of body(lines, start)) {
153
- if (/^\s*mode:\s*\S+\s*$/.test(lines[i])) {
154
- const next = [...lines]
155
- next[i] = lines[i].replace(/mode:\s*\S+\s*$/, `mode: ${mode}`)
156
- return next
157
- }
158
- }
159
- throw new Error('tool-presentation row has no `mode:` field')
160
- }
161
-
162
- /** Extract the `plugins:` sub-tree (the row list) from a preset patch file. */
163
- function extractPlugins(lines) {
164
- const index = lines.findIndex((line) => /^\s*plugins:\s*$/.test(line))
165
- if (index < 0) throw new Error('base preset has no `plugins:` key')
166
- const base = indentOf(lines[index])
167
- const out = []
168
- for (let i = index + 1; i < lines.length; i += 1) {
169
- const ind = indentOf(lines[i])
170
- if (ind !== -1 && ind <= base) break
171
- out.push(lines[i])
172
- }
173
- if (out.every((line) => line.trim() === '')) throw new Error('base `plugins:` is empty')
174
- while (out.length > 0 && out[out.length - 1].trim() === '') out.pop()
175
- return out
176
- }
177
-
178
- // ---------------------------------------------------------------------------
179
- // Preset rendering
180
- // ---------------------------------------------------------------------------
181
-
182
- function renderPreset(spec, basePlugins) {
183
- const plugins = spec.enable.reduce(enableRow, [...basePlugins])
184
- const withMode = spec.presentation === null
185
- ? plugins
186
- : setPresentationMode(plugins, spec.presentation)
187
- const out = [
188
- ` - id: preset-${spec.id}`,
189
- " name: '@deepseek-ai/dsh-agent-preset'",
190
- ' config:',
191
- ` id: ${spec.id}`,
192
- ` name: '${spec.name}'`,
193
- ` description: '${spec.description}'`,
194
- ` order: ${spec.order}`,
195
- ' plugins:',
196
- ...withMode,
197
- ...spec.append,
198
- ]
199
- return out
200
- }
201
-
202
- // ---------------------------------------------------------------------------
203
- // Main
204
- // ---------------------------------------------------------------------------
205
-
206
- function parseArgs(argv) {
207
- const opts = {
208
- dryRun: false,
209
- // Default to the full set: this script ships with dsh-plugin-lcu, and
210
- // `heavy` is the preset that attaches it. Defaulting to daily-only meant a
211
- // routine re-run after a DSH upgrade silently deleted the preset computer
212
- // use depends on.
213
- withHeavy: true,
214
- out: undefined,
215
- asar: DEFAULT_ASAR,
216
- profile: DEFAULT_PROFILE,
217
- }
218
- for (let i = 0; i < argv.length; i += 1) {
219
- const arg = argv[i]
220
- if (arg === '--dry-run') opts.dryRun = true
221
- else if (arg === '--with-heavy') opts.withHeavy = true
222
- else if (arg === '--daily-only') opts.withHeavy = false
223
- else if (arg === '--out') opts.out = argv[++i]
224
- else if (arg === '--asar') opts.asar = argv[++i]
225
- else if (arg === '--profile') opts.profile = argv[++i]
226
- else throw new Error(`unknown argument: ${arg}`)
227
- }
228
- return opts
229
- }
230
-
231
- function buildBlock(baseLines, { withHeavy }) {
232
- const basePlugins = extractPlugins(baseLines)
233
- const specs = withHeavy ? [PRESETS.daily, PRESETS.heavy] : [PRESETS.daily]
234
- const lines = [BEGIN, '- insert:']
235
- for (const spec of specs) lines.push(...renderPreset(spec, basePlugins))
236
- lines.push(END)
237
- return { block: lines.join('\n'), basePlugins, specs }
238
- }
239
-
240
- /** Replace the marked block in place, or append one. */
241
- function spliceBlock(text, block) {
242
- const begin = text.indexOf(BEGIN)
243
- const end = text.indexOf(END)
244
- if (begin >= 0 && end > begin) {
245
- return text.slice(0, begin) + block + text.slice(end + END.length)
246
- }
247
- const separator = text.endsWith('\n') ? '\n' : '\n\n'
248
- return `${text}${separator}${block}\n`
249
- }
250
-
251
- function main() {
252
- const opts = parseArgs(process.argv.slice(2))
253
- const baseLines = readAsarFile(opts.asar, BASE_PRESET).toString('utf8').split('\n')
254
- const { block, basePlugins, specs } = buildBlock(baseLines, opts)
255
- const verb = opts.dryRun ? 'would write' : 'wrote'
256
- const rowCount = basePlugins.filter((line) => /^\s*- id: /.test(line)).length
257
-
258
- if (opts.dryRun) {
259
- process.stdout.write(`${block}\n`)
260
- } else {
261
- const target = opts.out ?? join(opts.profile, 'cordis.patch.yml')
262
- const before = readFileSync(target, 'utf8')
263
- // Never delete a preset this file already had. A re-run is the documented
264
- // response to a DSH upgrade, and it must not be able to take away the mode a
265
- // user relies on as a side effect of an argument they did not pass.
266
- for (const preset of ['daily', 'heavy']) {
267
- const had = before.includes(`- id: preset-${preset}`)
268
- const keeps = block.includes(`- id: preset-${preset}`)
269
- if (had && !keeps) {
270
- throw new Error(
271
- `${target} already defines preset-${preset} and this run would remove it. `
272
- + 'Re-run without --daily-only to keep every preset the file has.',
273
- )
274
- }
275
- }
276
- writeFileSync(target, spliceBlock(before, block), { mode: 0o600 })
277
- process.stderr.write(`${verb} ${target}\n`)
278
- }
279
- process.stderr.write(
280
- `base: ${BASE_PRESET} (${rowCount} top-level rows)\n`
281
- + `presets: ${specs.map((s) => s.id).join(', ')}\n`,
282
- )
283
- }
284
-
285
- main()