@xiaoso/dsh-tool-plus 0.1.0-beta.2 → 0.1.0-beta.4

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 (235) hide show
  1. package/README.en.md +122 -0
  2. package/README.md +3 -2
  3. package/THIRD_PARTY_NOTICES.md +4 -35
  4. package/lib/abort-B7izMMna.mjs +51 -0
  5. package/lib/abort-D1_Z5Ut5.mjs +51 -0
  6. package/lib/abort-dIkZBV7Q.mjs +51 -0
  7. package/lib/amazon-bedrock-B0nxT06F.mjs +917 -0
  8. package/lib/amazon-bedrock-D-shAr1X.mjs +917 -0
  9. package/lib/amazon-bedrock-WQhvjHYu.mjs +917 -0
  10. package/lib/anthropic-BWsZFzU8.mjs +262 -0
  11. package/lib/anthropic-CJCauvYz.mjs +3115 -0
  12. package/lib/anthropic-CMT1Qj1t.mjs +3115 -0
  13. package/lib/anthropic-CZghe_9U.mjs +3115 -0
  14. package/lib/anthropic-sCMH7JID.mjs +262 -0
  15. package/lib/anthropic-tTntD8BD.mjs +262 -0
  16. package/lib/api-key-login-BzqNdM2y.mjs +157 -0
  17. package/lib/api-key-login-CWVwvHT1.mjs +157 -0
  18. package/lib/api-key-login-CpzSezsi.mjs +157 -0
  19. package/lib/aws-credentials-8Mgn5MAy.mjs +867 -0
  20. package/lib/aws-credentials-CXryMobh.mjs +867 -0
  21. package/lib/aws-credentials-ChG79ey-.mjs +867 -0
  22. package/lib/azure-openai-responses-CNkHiLUh.mjs +274 -0
  23. package/lib/azure-openai-responses-Cgmc-rbL.mjs +274 -0
  24. package/lib/azure-openai-responses-DuukbD0F.mjs +274 -0
  25. package/lib/bun-shim.mjs +252 -12
  26. package/lib/bundled-references-CSuBco5p.mjs +55 -0
  27. package/lib/bundled-references-Cavaffah.mjs +55 -0
  28. package/lib/bundled-references-sLN0YdXU.mjs +55 -0
  29. package/lib/callback-server-BEFNf-jf.mjs +398 -0
  30. package/lib/callback-server-CQ5Jo8F-.mjs +398 -0
  31. package/lib/callback-server-DDSrZ6l_.mjs +398 -0
  32. package/lib/client.js +111 -41
  33. package/lib/cursor-B3zg7EHj.mjs +273 -0
  34. package/lib/cursor-B6TUEmgP.mjs +135 -0
  35. package/lib/cursor-BIQfBC6V.mjs +135 -0
  36. package/lib/cursor-D8gvtTL3.mjs +135 -0
  37. package/lib/cursor-DNk6eXDd.mjs +5470 -0
  38. package/lib/cursor-DkSX2h3H.mjs +5441 -0
  39. package/lib/cursor-MjSm74IJ.mjs +273 -0
  40. package/lib/cursor-aJrXeYCb.mjs +273 -0
  41. package/lib/cursor-mJQwUKXK.mjs +5441 -0
  42. package/lib/device-code-DBo3B5nh.mjs +51 -0
  43. package/lib/device-code-DIb0FU-H.mjs +51 -0
  44. package/lib/device-code-OI_tQcmc.mjs +51 -0
  45. package/lib/devin-BHZZyMhO.mjs +95 -0
  46. package/lib/devin-BK7DHeca.mjs +114 -0
  47. package/lib/devin-CfMp3cXS.mjs +95 -0
  48. package/lib/devin-CldyPD8K.mjs +95 -0
  49. package/lib/devin-CzRpTUOA.mjs +114 -0
  50. package/lib/devin-D9zR5B_R.mjs +542 -0
  51. package/lib/devin-DXOeNyU7.mjs +542 -0
  52. package/lib/devin-Q1yem3lp.mjs +114 -0
  53. package/lib/devin-vNZTNUON.mjs +542 -0
  54. package/lib/error-B3bevhrs.mjs +1449 -0
  55. package/lib/error-Dd8DIqs-.mjs +1449 -0
  56. package/lib/error-yCSG0mGC.mjs +1449 -0
  57. package/lib/event-stream-BDPi64mK.mjs +151 -0
  58. package/lib/event-stream-BbFZJy-z.mjs +151 -0
  59. package/lib/event-stream-loUa0s1T.mjs +151 -0
  60. package/lib/fs-promises-shim-Bx0fpxuk.mjs +57 -0
  61. package/lib/github-copilot-4GaMtQmg.mjs +208 -0
  62. package/lib/github-copilot-B1yiyVRh.mjs +104 -0
  63. package/lib/github-copilot-B2HGSIJK.mjs +104 -0
  64. package/lib/github-copilot-BWT3eAOF.mjs +208 -0
  65. package/lib/github-copilot-CYkjeTi3.mjs +208 -0
  66. package/lib/github-copilot-jscUZ8Hf.mjs +104 -0
  67. package/lib/gitlab-duo-CM7Ref1H.mjs +155 -0
  68. package/lib/gitlab-duo-akICyfeD.mjs +155 -0
  69. package/lib/gitlab-duo-gubO4FNw.mjs +155 -0
  70. package/lib/gitlab-duo-workflow-BGAF6JDw.mjs +91 -0
  71. package/lib/gitlab-duo-workflow-CSEgYk3N.mjs +91 -0
  72. package/lib/gitlab-duo-workflow-D78tdn8E.mjs +91 -0
  73. package/lib/google-BS4T25Pn.mjs +30 -0
  74. package/lib/google-TFe-7-of.mjs +30 -0
  75. package/lib/google-antigravity-DGmwC2KV.mjs +198 -0
  76. package/lib/google-antigravity-DNYhgTpA.mjs +198 -0
  77. package/lib/google-antigravity-Dlkdhahq.mjs +198 -0
  78. package/lib/google-auth-B6gjsZvg.mjs +232 -0
  79. package/lib/google-auth-De7_s3eo.mjs +232 -0
  80. package/lib/google-auth-DhqpOYrX.mjs +232 -0
  81. package/lib/google-gemini-cli-BG_LRdIV.mjs +850 -0
  82. package/lib/google-gemini-cli-CWu8HvXW.mjs +211 -0
  83. package/lib/google-gemini-cli-Cb97bzQc.mjs +850 -0
  84. package/lib/google-gemini-cli-Cqds_Q5T.mjs +850 -0
  85. package/lib/google-gemini-cli-Dsztq0N5.mjs +211 -0
  86. package/lib/google-gemini-cli-zJhiOcND.mjs +211 -0
  87. package/lib/google-oauth-shared-CuEHaDDj.mjs +147 -0
  88. package/lib/google-oauth-shared-CwNWYdmR.mjs +147 -0
  89. package/lib/google-oauth-shared-yqlyqPPC.mjs +147 -0
  90. package/lib/google-shared-CgKmmdO3.mjs +760 -0
  91. package/lib/google-shared-Dr-VG-ap.mjs +760 -0
  92. package/lib/google-shared-DzhCb9b0.mjs +760 -0
  93. package/lib/google-vertex-BDN2tLaD.mjs +99 -0
  94. package/lib/google-vertex-DopVOQOG.mjs +99 -0
  95. package/lib/google-vertex-kscbkyRb.mjs +99 -0
  96. package/lib/google-zyDOG9x7.mjs +30 -0
  97. package/lib/identity-Da1GPU9a.mjs +219 -0
  98. package/lib/identity-DnB63pS7.mjs +219 -0
  99. package/lib/identity-xRP7_eSR.mjs +219 -0
  100. package/lib/idle-iterator-Baoyn3Hp.mjs +366 -0
  101. package/lib/idle-iterator-C6XbWcuB.mjs +366 -0
  102. package/lib/idle-iterator-DUjKQEGT.mjs +366 -0
  103. package/lib/index.mjs +4608 -3935
  104. package/lib/kimi--wUOWER5.mjs +236 -0
  105. package/lib/kimi-DMVI-zrZ.mjs +236 -0
  106. package/lib/kimi-Dh0pv3WZ.mjs +236 -0
  107. package/lib/markit-BL3cH47U.mjs +1417 -0
  108. package/lib/markit-BNiNY6SE.mjs +1417 -0
  109. package/lib/markit-M0jhziqU.mjs +1417 -0
  110. package/lib/minimax-code-BK-3eBbz.mjs +53 -0
  111. package/lib/minimax-code-DCbuA6Yk.mjs +53 -0
  112. package/lib/minimax-code-Uq8Qu9LW.mjs +53 -0
  113. package/lib/models-CfT4coYT.mjs +104660 -0
  114. package/lib/models-D_XnT6ay.mjs +104660 -0
  115. package/lib/models-SGASygJ3.mjs +104660 -0
  116. package/lib/ollama-BQMGPxtV.mjs +589 -0
  117. package/lib/ollama-DPzBmq89.mjs +589 -0
  118. package/lib/ollama-DoBz5SFm.mjs +589 -0
  119. package/lib/openai-codex-Bi-4S4PX.mjs +255 -0
  120. package/lib/openai-codex-CQL_kvYL.mjs +255 -0
  121. package/lib/openai-codex-Ch8CkT3p.mjs +255 -0
  122. package/lib/openai-codex-responses-CvxL_FMF.mjs +3144 -0
  123. package/lib/openai-codex-responses-Cz-2qpC7.mjs +3144 -0
  124. package/lib/openai-codex-responses-pejZgdZo.mjs +3144 -0
  125. package/lib/openai-completions-CF8IyNtP.mjs +1360 -0
  126. package/lib/openai-completions-DIf361kF.mjs +1360 -0
  127. package/lib/openai-completions-i8doczAk.mjs +1360 -0
  128. package/lib/openai-reasoning-fallback-DGVVLgd1.mjs +286 -0
  129. package/lib/openai-reasoning-fallback-Nj6yB2rY.mjs +286 -0
  130. package/lib/openai-reasoning-fallback-OdJREP1o.mjs +286 -0
  131. package/lib/openai-responses-BqXJInHX.mjs +867 -0
  132. package/lib/openai-responses-DTkBiiy-.mjs +867 -0
  133. package/lib/openai-responses-Db_a-U4-.mjs +867 -0
  134. package/lib/opencode-DaJjcUbf.mjs +38 -0
  135. package/lib/opencode-DhMolSoB.mjs +38 -0
  136. package/lib/opencode-Rq_Q2vAO.mjs +38 -0
  137. package/lib/perplexity-9b-RQ0mV.mjs +194 -0
  138. package/lib/perplexity-C4iLVMUj.mjs +194 -0
  139. package/lib/perplexity-Uu7Jzg5b.mjs +194 -0
  140. package/lib/proxy-DDqrmjjC.mjs +190 -0
  141. package/lib/proxy-ZtUcl6r5.mjs +190 -0
  142. package/lib/proxy-pM_NIv-H.mjs +190 -0
  143. package/lib/request-debug-HJMoJncL.mjs +183 -0
  144. package/lib/sanitize-text-CfcXzw5X.mjs +33 -0
  145. package/lib/scrapers-BkFfcPHj.mjs +9198 -0
  146. package/lib/scrapers-CL-WgdU1.mjs +9198 -0
  147. package/lib/scrapers-CVptboMs.mjs +9198 -0
  148. package/lib/scrapers-CipyKyCH.mjs +9198 -0
  149. package/lib/scrapers-DGfrYhtw.mjs +9198 -0
  150. package/lib/scrapers-DSUPYoUF.mjs +9198 -0
  151. package/lib/scrapers-DZ2GXmp7.mjs +9198 -0
  152. package/lib/scrapers-nhQAvc8d.mjs +9198 -0
  153. package/lib/shell-snapshot-fn-env.sh +67 -43
  154. package/lib/src-BgpusnsB.mjs +5076 -0
  155. package/lib/src-DTid0g4K.mjs +5001 -0
  156. package/lib/src-lDmkSRbm.mjs +5006 -0
  157. package/lib/stream-BlldLkVq.mjs +10236 -0
  158. package/lib/stream-CRtexYLe.mjs +10236 -0
  159. package/lib/stream-C_RAoxJC.mjs +10236 -0
  160. package/lib/stream-markup-healing-2toHXWXM.mjs +491 -0
  161. package/lib/stream-markup-healing-DMsxBx1L.mjs +491 -0
  162. package/lib/stream-markup-healing-KMkiAA00.mjs +491 -0
  163. package/lib/turndown-DN7ByzEI.mjs +667 -0
  164. package/lib/types/client/locales.d.ts +1 -1
  165. package/lib/types/config/fields.d.ts +1 -1
  166. package/lib/types/config/settings.d.ts +25 -3
  167. package/lib/types/config/truncate.d.ts +9 -5
  168. package/lib/types/tools/bash/background.d.ts +1 -1
  169. package/lib/types/tools/bash/bash-executor.d.ts +4 -0
  170. package/lib/types/tools/bash/bash-interceptor.d.ts +10 -8
  171. package/lib/types/tools/bash/cd-workdir.d.ts +35 -0
  172. package/lib/types/tools/bash/non-interactive-env.d.ts +2 -0
  173. package/lib/types/tools/bash/render.d.ts +4 -3
  174. package/lib/types/tools/bash/sanitize-text.d.ts +5 -0
  175. package/lib/types/tools/bash/shell-snapshot.d.ts +4 -1
  176. package/lib/types/tools/bash/shell-tokenize.d.ts +60 -0
  177. package/lib/types/tools/bash/streaming-output.d.ts +12 -212
  178. package/lib/types/tools/bash/which.d.ts +20 -0
  179. package/lib/types/tools/bash/windows-shell.d.ts +31 -0
  180. package/lib/types/tools/edit/adapter/index.d.ts +25 -3
  181. package/lib/types/tools/edit/adapter/tools/auto-generated-guard.d.ts +7 -17
  182. package/lib/types/tools/glob/adapter/index.d.ts +27 -1
  183. package/lib/types/tools/grep/adapter/index.d.ts +29 -1
  184. package/lib/types/tools/omp/edit/dispatch.d.ts +43 -0
  185. package/lib/types/tools/omp/edit/hashline/noop-loop-guard.d.ts +3 -1
  186. package/lib/types/tools/omp/sdk.d.ts +6 -0
  187. package/lib/types/tools/omp/tools/auto-generated-guard.d.ts +20 -0
  188. package/lib/types/tools/omp/tools/fetch.d.ts +2 -0
  189. package/lib/types/tools/omp/tools/read.d.ts +2 -8
  190. package/lib/types/tools/omp/tools/write.d.ts +4 -4
  191. package/lib/types/tools/omp/utils/image-loading.d.ts +10 -36
  192. package/lib/types/tools/read/adapter/index.d.ts +4 -1
  193. package/lib/types/tools/read-image/index.d.ts +4 -0
  194. package/lib/types/tools/shared/auto-generated-guard.dsh.d.ts +16 -4
  195. package/lib/types/tools/shared/bun-shim.d.ts +39 -3
  196. package/lib/types/tools/shared/fs-promises-shim.d.ts +3 -1
  197. package/lib/types/tools/shared/image-bridge.d.ts +98 -0
  198. package/lib/types/tools/shared/omp-prompt.d.ts +17 -9
  199. package/lib/types/tools/shared/session-state.d.ts +9 -3
  200. package/lib/utils-2Wq2eATG.mjs +8119 -0
  201. package/lib/utils-BnX8O3vi.mjs +12303 -0
  202. package/lib/utils-Bw139LTz.mjs +8119 -0
  203. package/lib/utils-CE8N8P4Q.mjs +12315 -0
  204. package/lib/utils-CZw4tVZQ.mjs +12315 -0
  205. package/lib/utils-C_MrQ_0z.mjs +12301 -0
  206. package/lib/utils-CiGN7OHR.mjs +12315 -0
  207. package/lib/utils-Cp76gCyk.mjs +8119 -0
  208. package/lib/utils-D0GRDgAr.mjs +12315 -0
  209. package/lib/utils-D0Z1fyoO.mjs +12299 -0
  210. package/lib/utils-D2YknRk4.mjs +51 -0
  211. package/lib/utils-DppGHXQB.mjs +51 -0
  212. package/lib/utils-DzXZDfYc.mjs +51 -0
  213. package/lib/utils-W8WdSBpX.mjs +12315 -0
  214. package/lib/vision-guard-01qSwFpf.mjs +92 -0
  215. package/lib/vision-guard-BDD4OrKo.mjs +92 -0
  216. package/lib/vision-guard-DzZGaOga.mjs +92 -0
  217. package/lib/wafer-CgtPHerf.mjs +17 -0
  218. package/lib/wafer-DRU0EjZX.mjs +17 -0
  219. package/lib/wafer-cBtrn6q9.mjs +17 -0
  220. package/lib/xai-oauth-Buk8XVvM.mjs +446 -0
  221. package/lib/xai-oauth-CMal8l1O.mjs +446 -0
  222. package/lib/xai-oauth-DPHDXKD7.mjs +446 -0
  223. package/lib/xiaomi-CZgwvX2G.mjs +157 -0
  224. package/lib/xiaomi-D2qT5cAC.mjs +157 -0
  225. package/lib/xiaomi-Dd87KSg5.mjs +157 -0
  226. package/lib/zai-7DWMkEqM.mjs +203 -0
  227. package/lib/zai-C59YnomG.mjs +203 -0
  228. package/lib/zai-CFeOt-53.mjs +203 -0
  229. package/lib/zip-Cg9ANN_U.mjs +1316 -0
  230. package/lib/zip-D36ZKsP8.mjs +1316 -0
  231. package/lib/zip-D6QXpvaJ.mjs +1316 -0
  232. package/package.json +14 -10
  233. package/presets/package.json +1 -1
  234. package/presets/tool-plus-ptc/preset.yml +1 -1
  235. package/presets/tool-plus-standard/preset.yml +1 -1
@@ -0,0 +1,151 @@
1
+ import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
+ __installBunShim();
3
+ import { C as classifyMessage, s as ProviderResponseError } from "./error-B3bevhrs.mjs";
4
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@17.3.5/node_modules/@oh-my-pi/pi-ai/src/utils/event-stream.ts
5
+ var EventStream = class {
6
+ queue = [];
7
+ waiting = [];
8
+ done = false;
9
+ /** True once finalResultPromise has been resolved or rejected. */
10
+ resultSettled = false;
11
+ #failed = false;
12
+ #error = void 0;
13
+ /**
14
+ * Consumer-side local operations currently in flight for this stream — a
15
+ * provider transport waiting on a server-requested local tool bridge
16
+ * (e.g. the Cursor exec channel) before it can send the result upstream.
17
+ * While non-zero, event silence is attributable to our own pending work,
18
+ * not a provider stall; idle watchdogs consult {@link hasPendingLocalWork}.
19
+ */
20
+ #pendingLocalWork = 0;
21
+ finalResultPromise;
22
+ resolveFinalResult;
23
+ rejectFinalResult;
24
+ isComplete;
25
+ extractResult;
26
+ constructor(isComplete, extractResult) {
27
+ const { promise, resolve, reject } = Promise.withResolvers();
28
+ promise.catch(() => {});
29
+ this.finalResultPromise = promise;
30
+ this.resolveFinalResult = resolve;
31
+ this.rejectFinalResult = reject;
32
+ this.isComplete = isComplete;
33
+ this.extractResult = extractResult;
34
+ }
35
+ push(event) {
36
+ if (this.done) return;
37
+ if (this.isComplete(event)) {
38
+ this.done = true;
39
+ this.resultSettled = true;
40
+ this.resolveFinalResult(this.extractResult(event));
41
+ }
42
+ const waiter = this.waiting.shift();
43
+ if (waiter) waiter.resolve({
44
+ value: event,
45
+ done: false
46
+ });
47
+ else this.queue.push(event);
48
+ }
49
+ deliver(event) {
50
+ const waiter = this.waiting.shift();
51
+ if (waiter) waiter.resolve({
52
+ value: event,
53
+ done: false
54
+ });
55
+ else this.queue.push(event);
56
+ }
57
+ end(result) {
58
+ this.done = true;
59
+ if (result !== void 0) {
60
+ this.resultSettled = true;
61
+ this.resolveFinalResult(result);
62
+ } else if (!this.resultSettled) {
63
+ this.resultSettled = true;
64
+ this.rejectFinalResult(new ProviderResponseError("Stream ended without a final result", { kind: "envelope" }));
65
+ }
66
+ while (this.waiting.length > 0) this.waiting.shift().resolve({
67
+ value: void 0,
68
+ done: true
69
+ });
70
+ }
71
+ endWaiting() {
72
+ while (this.waiting.length > 0) this.waiting.shift().resolve({
73
+ value: void 0,
74
+ done: true
75
+ });
76
+ }
77
+ fail(err) {
78
+ if (this.done) return;
79
+ this.done = true;
80
+ this.#failed = true;
81
+ this.#error = err;
82
+ this.resultSettled = true;
83
+ this.rejectFinalResult(err);
84
+ while (this.waiting.length > 0) this.waiting.shift().reject(err);
85
+ }
86
+ async *[Symbol.asyncIterator]() {
87
+ while (true) if (this.queue.length > 0) yield this.queue.shift();
88
+ else if (this.#failed) throw this.#error;
89
+ else if (this.done) return;
90
+ else {
91
+ const result = await new Promise((resolve, reject) => this.waiting.push({
92
+ resolve,
93
+ reject
94
+ }));
95
+ if (result.done) return;
96
+ yield result.value;
97
+ }
98
+ }
99
+ result() {
100
+ return this.finalResultPromise;
101
+ }
102
+ /** True while local work tracked via {@link trackLocalWork} is pending. */
103
+ get hasPendingLocalWork() {
104
+ return this.#pendingLocalWork > 0;
105
+ }
106
+ /**
107
+ * Track a local-work promise so idle watchdogs on this stream do not treat
108
+ * the event silence while it is pending as a provider stall.
109
+ */
110
+ async trackLocalWork(work) {
111
+ this.#pendingLocalWork++;
112
+ try {
113
+ return await work;
114
+ } finally {
115
+ this.#pendingLocalWork--;
116
+ }
117
+ }
118
+ };
119
+ var AssistantMessageEventStream = class extends EventStream {
120
+ constructor() {
121
+ super((event) => event.type === "done" || event.type === "error", (event) => {
122
+ if (event.type === "done") return event.message;
123
+ else if (event.type === "error") return event.error;
124
+ throw new ProviderResponseError("Unexpected event type for final result", { kind: "envelope" });
125
+ });
126
+ }
127
+ push(event) {
128
+ if (this.done) return;
129
+ if (event.type === "error" && event.error.stopReason === "error") classifyMessage(event.error);
130
+ if (this.isComplete(event)) {
131
+ this.done = true;
132
+ this.resultSettled = true;
133
+ this.resolveFinalResult(this.extractResult(event));
134
+ }
135
+ this.deliver(event);
136
+ }
137
+ end(result) {
138
+ this.done = true;
139
+ if (result !== void 0) {
140
+ if (result.stopReason === "error") classifyMessage(result);
141
+ this.resultSettled = true;
142
+ this.resolveFinalResult(result);
143
+ } else if (!this.resultSettled) {
144
+ this.resultSettled = true;
145
+ this.rejectFinalResult(new ProviderResponseError("Stream ended without a final result", { kind: "envelope" }));
146
+ }
147
+ this.endWaiting();
148
+ }
149
+ };
150
+ //#endregion
151
+ export { AssistantMessageEventStream as t };
@@ -0,0 +1,151 @@
1
+ import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
+ __installBunShim();
3
+ import { C as classifyMessage, s as ProviderResponseError } from "./error-Dd8DIqs-.mjs";
4
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@17.3.5/node_modules/@oh-my-pi/pi-ai/src/utils/event-stream.ts
5
+ var EventStream = class {
6
+ queue = [];
7
+ waiting = [];
8
+ done = false;
9
+ /** True once finalResultPromise has been resolved or rejected. */
10
+ resultSettled = false;
11
+ #failed = false;
12
+ #error = void 0;
13
+ /**
14
+ * Consumer-side local operations currently in flight for this stream — a
15
+ * provider transport waiting on a server-requested local tool bridge
16
+ * (e.g. the Cursor exec channel) before it can send the result upstream.
17
+ * While non-zero, event silence is attributable to our own pending work,
18
+ * not a provider stall; idle watchdogs consult {@link hasPendingLocalWork}.
19
+ */
20
+ #pendingLocalWork = 0;
21
+ finalResultPromise;
22
+ resolveFinalResult;
23
+ rejectFinalResult;
24
+ isComplete;
25
+ extractResult;
26
+ constructor(isComplete, extractResult) {
27
+ const { promise, resolve, reject } = Promise.withResolvers();
28
+ promise.catch(() => {});
29
+ this.finalResultPromise = promise;
30
+ this.resolveFinalResult = resolve;
31
+ this.rejectFinalResult = reject;
32
+ this.isComplete = isComplete;
33
+ this.extractResult = extractResult;
34
+ }
35
+ push(event) {
36
+ if (this.done) return;
37
+ if (this.isComplete(event)) {
38
+ this.done = true;
39
+ this.resultSettled = true;
40
+ this.resolveFinalResult(this.extractResult(event));
41
+ }
42
+ const waiter = this.waiting.shift();
43
+ if (waiter) waiter.resolve({
44
+ value: event,
45
+ done: false
46
+ });
47
+ else this.queue.push(event);
48
+ }
49
+ deliver(event) {
50
+ const waiter = this.waiting.shift();
51
+ if (waiter) waiter.resolve({
52
+ value: event,
53
+ done: false
54
+ });
55
+ else this.queue.push(event);
56
+ }
57
+ end(result) {
58
+ this.done = true;
59
+ if (result !== void 0) {
60
+ this.resultSettled = true;
61
+ this.resolveFinalResult(result);
62
+ } else if (!this.resultSettled) {
63
+ this.resultSettled = true;
64
+ this.rejectFinalResult(new ProviderResponseError("Stream ended without a final result", { kind: "envelope" }));
65
+ }
66
+ while (this.waiting.length > 0) this.waiting.shift().resolve({
67
+ value: void 0,
68
+ done: true
69
+ });
70
+ }
71
+ endWaiting() {
72
+ while (this.waiting.length > 0) this.waiting.shift().resolve({
73
+ value: void 0,
74
+ done: true
75
+ });
76
+ }
77
+ fail(err) {
78
+ if (this.done) return;
79
+ this.done = true;
80
+ this.#failed = true;
81
+ this.#error = err;
82
+ this.resultSettled = true;
83
+ this.rejectFinalResult(err);
84
+ while (this.waiting.length > 0) this.waiting.shift().reject(err);
85
+ }
86
+ async *[Symbol.asyncIterator]() {
87
+ while (true) if (this.queue.length > 0) yield this.queue.shift();
88
+ else if (this.#failed) throw this.#error;
89
+ else if (this.done) return;
90
+ else {
91
+ const result = await new Promise((resolve, reject) => this.waiting.push({
92
+ resolve,
93
+ reject
94
+ }));
95
+ if (result.done) return;
96
+ yield result.value;
97
+ }
98
+ }
99
+ result() {
100
+ return this.finalResultPromise;
101
+ }
102
+ /** True while local work tracked via {@link trackLocalWork} is pending. */
103
+ get hasPendingLocalWork() {
104
+ return this.#pendingLocalWork > 0;
105
+ }
106
+ /**
107
+ * Track a local-work promise so idle watchdogs on this stream do not treat
108
+ * the event silence while it is pending as a provider stall.
109
+ */
110
+ async trackLocalWork(work) {
111
+ this.#pendingLocalWork++;
112
+ try {
113
+ return await work;
114
+ } finally {
115
+ this.#pendingLocalWork--;
116
+ }
117
+ }
118
+ };
119
+ var AssistantMessageEventStream = class extends EventStream {
120
+ constructor() {
121
+ super((event) => event.type === "done" || event.type === "error", (event) => {
122
+ if (event.type === "done") return event.message;
123
+ else if (event.type === "error") return event.error;
124
+ throw new ProviderResponseError("Unexpected event type for final result", { kind: "envelope" });
125
+ });
126
+ }
127
+ push(event) {
128
+ if (this.done) return;
129
+ if (event.type === "error" && event.error.stopReason === "error") classifyMessage(event.error);
130
+ if (this.isComplete(event)) {
131
+ this.done = true;
132
+ this.resultSettled = true;
133
+ this.resolveFinalResult(this.extractResult(event));
134
+ }
135
+ this.deliver(event);
136
+ }
137
+ end(result) {
138
+ this.done = true;
139
+ if (result !== void 0) {
140
+ if (result.stopReason === "error") classifyMessage(result);
141
+ this.resultSettled = true;
142
+ this.resolveFinalResult(result);
143
+ } else if (!this.resultSettled) {
144
+ this.resultSettled = true;
145
+ this.rejectFinalResult(new ProviderResponseError("Stream ended without a final result", { kind: "envelope" }));
146
+ }
147
+ this.endWaiting();
148
+ }
149
+ };
150
+ //#endregion
151
+ export { AssistantMessageEventStream as t };
@@ -0,0 +1,151 @@
1
+ import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
+ __installBunShim();
3
+ import { C as classifyMessage, s as ProviderResponseError } from "./error-yCSG0mGC.mjs";
4
+ //#region node_modules/.pnpm/@oh-my-pi+pi-ai@17.3.5/node_modules/@oh-my-pi/pi-ai/src/utils/event-stream.ts
5
+ var EventStream = class {
6
+ queue = [];
7
+ waiting = [];
8
+ done = false;
9
+ /** True once finalResultPromise has been resolved or rejected. */
10
+ resultSettled = false;
11
+ #failed = false;
12
+ #error = void 0;
13
+ /**
14
+ * Consumer-side local operations currently in flight for this stream — a
15
+ * provider transport waiting on a server-requested local tool bridge
16
+ * (e.g. the Cursor exec channel) before it can send the result upstream.
17
+ * While non-zero, event silence is attributable to our own pending work,
18
+ * not a provider stall; idle watchdogs consult {@link hasPendingLocalWork}.
19
+ */
20
+ #pendingLocalWork = 0;
21
+ finalResultPromise;
22
+ resolveFinalResult;
23
+ rejectFinalResult;
24
+ isComplete;
25
+ extractResult;
26
+ constructor(isComplete, extractResult) {
27
+ const { promise, resolve, reject } = Promise.withResolvers();
28
+ promise.catch(() => {});
29
+ this.finalResultPromise = promise;
30
+ this.resolveFinalResult = resolve;
31
+ this.rejectFinalResult = reject;
32
+ this.isComplete = isComplete;
33
+ this.extractResult = extractResult;
34
+ }
35
+ push(event) {
36
+ if (this.done) return;
37
+ if (this.isComplete(event)) {
38
+ this.done = true;
39
+ this.resultSettled = true;
40
+ this.resolveFinalResult(this.extractResult(event));
41
+ }
42
+ const waiter = this.waiting.shift();
43
+ if (waiter) waiter.resolve({
44
+ value: event,
45
+ done: false
46
+ });
47
+ else this.queue.push(event);
48
+ }
49
+ deliver(event) {
50
+ const waiter = this.waiting.shift();
51
+ if (waiter) waiter.resolve({
52
+ value: event,
53
+ done: false
54
+ });
55
+ else this.queue.push(event);
56
+ }
57
+ end(result) {
58
+ this.done = true;
59
+ if (result !== void 0) {
60
+ this.resultSettled = true;
61
+ this.resolveFinalResult(result);
62
+ } else if (!this.resultSettled) {
63
+ this.resultSettled = true;
64
+ this.rejectFinalResult(new ProviderResponseError("Stream ended without a final result", { kind: "envelope" }));
65
+ }
66
+ while (this.waiting.length > 0) this.waiting.shift().resolve({
67
+ value: void 0,
68
+ done: true
69
+ });
70
+ }
71
+ endWaiting() {
72
+ while (this.waiting.length > 0) this.waiting.shift().resolve({
73
+ value: void 0,
74
+ done: true
75
+ });
76
+ }
77
+ fail(err) {
78
+ if (this.done) return;
79
+ this.done = true;
80
+ this.#failed = true;
81
+ this.#error = err;
82
+ this.resultSettled = true;
83
+ this.rejectFinalResult(err);
84
+ while (this.waiting.length > 0) this.waiting.shift().reject(err);
85
+ }
86
+ async *[Symbol.asyncIterator]() {
87
+ while (true) if (this.queue.length > 0) yield this.queue.shift();
88
+ else if (this.#failed) throw this.#error;
89
+ else if (this.done) return;
90
+ else {
91
+ const result = await new Promise((resolve, reject) => this.waiting.push({
92
+ resolve,
93
+ reject
94
+ }));
95
+ if (result.done) return;
96
+ yield result.value;
97
+ }
98
+ }
99
+ result() {
100
+ return this.finalResultPromise;
101
+ }
102
+ /** True while local work tracked via {@link trackLocalWork} is pending. */
103
+ get hasPendingLocalWork() {
104
+ return this.#pendingLocalWork > 0;
105
+ }
106
+ /**
107
+ * Track a local-work promise so idle watchdogs on this stream do not treat
108
+ * the event silence while it is pending as a provider stall.
109
+ */
110
+ async trackLocalWork(work) {
111
+ this.#pendingLocalWork++;
112
+ try {
113
+ return await work;
114
+ } finally {
115
+ this.#pendingLocalWork--;
116
+ }
117
+ }
118
+ };
119
+ var AssistantMessageEventStream = class extends EventStream {
120
+ constructor() {
121
+ super((event) => event.type === "done" || event.type === "error", (event) => {
122
+ if (event.type === "done") return event.message;
123
+ else if (event.type === "error") return event.error;
124
+ throw new ProviderResponseError("Unexpected event type for final result", { kind: "envelope" });
125
+ });
126
+ }
127
+ push(event) {
128
+ if (this.done) return;
129
+ if (event.type === "error" && event.error.stopReason === "error") classifyMessage(event.error);
130
+ if (this.isComplete(event)) {
131
+ this.done = true;
132
+ this.resultSettled = true;
133
+ this.resolveFinalResult(this.extractResult(event));
134
+ }
135
+ this.deliver(event);
136
+ }
137
+ end(result) {
138
+ this.done = true;
139
+ if (result !== void 0) {
140
+ if (result.stopReason === "error") classifyMessage(result);
141
+ this.resultSettled = true;
142
+ this.resolveFinalResult(result);
143
+ } else if (!this.resultSettled) {
144
+ this.resultSettled = true;
145
+ this.rejectFinalResult(new ProviderResponseError("Stream ended without a final result", { kind: "envelope" }));
146
+ }
147
+ this.endWaiting();
148
+ }
149
+ };
150
+ //#endregion
151
+ export { AssistantMessageEventStream as t };
@@ -0,0 +1,57 @@
1
+ import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
+ __installBunShim();
3
+ import * as fsp from "fs/promises";
4
+ //#region \0rolldown/runtime.js
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __exportAll = (all, no_symbols) => {
10
+ let target = {};
11
+ for (var name in all) __defProp(target, name, {
12
+ get: all[name],
13
+ enumerable: true
14
+ });
15
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
16
+ return target;
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
20
+ key = keys[i];
21
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
22
+ get: ((k) => from[k]).bind(null, key),
23
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
24
+ });
25
+ }
26
+ return to;
27
+ };
28
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
29
+ //#endregion
30
+ //#region src/tools/shared/fs-promises-shim.ts
31
+ /**
32
+ * DSH node:fs/promises shim.
33
+ *
34
+ * OMP tool code imports `node:fs/promises` and calls `fs.exists(path)`, a
35
+ * Bun-only extension that Node's `fs/promises` does not provide. This module
36
+ * re-exports the whole Node `fs/promises` API and adds the missing `exists`.
37
+ *
38
+ * NOTE: the import MUST be `from 'fs/promises'` (no `node:` prefix) so the
39
+ * tsdown alias for `node:fs/promises` does not recursively substitute its own
40
+ * target back onto itself.
41
+ */
42
+ var fs_promises_shim_exports = /* @__PURE__ */ __exportAll({ exists: () => exists });
43
+ import * as import_fs_promises from "fs/promises";
44
+ __reExport(fs_promises_shim_exports, import_fs_promises);
45
+ /** Bun's `node:fs/promises` extension: `exists(path)` → `Promise<boolean>`.
46
+ * Bun swallows every stat error, not just ENOENT — ENAMETOOLONG on a 60k-char
47
+ * path also yields false (probe audit-probes/S15/s15-exists4.ts). */
48
+ async function exists(path) {
49
+ try {
50
+ await fsp.stat(path);
51
+ return true;
52
+ } catch {
53
+ return false;
54
+ }
55
+ }
56
+ //#endregion
57
+ export { fs_promises_shim_exports as n, __exportAll as r, exists as t };