@daniel156161/prism 0.2.101 → 0.2.105

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 (205) hide show
  1. package/README.md +2 -2
  2. package/dist/pi/pi-env.d.ts +1 -1
  3. package/dist/pi/pi-env.js +1 -1
  4. package/dist/prism-extensions/integrations/ai-memory-system.js +16 -9
  5. package/dist/prism-extensions/integrations/ai-memory-system.js.map +1 -1
  6. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  7. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +23 -25
  8. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  9. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  10. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +3 -1
  11. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  12. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +3 -2
  13. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  14. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  15. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  16. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.d.ts.map +1 -1
  17. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +1 -1
  18. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js.map +1 -1
  19. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  20. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +38 -6
  21. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  22. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +75 -0
  23. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  24. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +75 -0
  25. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  26. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.d.ts +3 -1
  27. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  28. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  29. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  30. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  31. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  32. package/node_modules/@earendil-works/pi-ai/dist/providers/data/baseten.json +1 -1
  33. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  34. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-workers-ai.json +1 -1
  35. package/node_modules/@earendil-works/pi-ai/dist/providers/data/deepseek.json +1 -1
  36. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  37. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  38. package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
  39. package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax-cn.json +1 -1
  40. package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax.json +1 -1
  41. package/node_modules/@earendil-works/pi-ai/dist/providers/data/mistral.json +1 -1
  42. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  43. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
  44. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  45. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  46. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  47. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-cn.json +1 -1
  48. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan.json +1 -1
  49. package/node_modules/@earendil-works/pi-ai/dist/providers/data/together.json +1 -1
  50. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  51. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai-coding-cn.json +1 -1
  52. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai.json +1 -1
  53. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +1 -1
  54. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  55. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  56. package/node_modules/@earendil-works/pi-ai/package.json +2 -2
  57. package/node_modules/@earendil-works/pi-client/CHANGELOG.md +1 -1
  58. package/node_modules/@earendil-works/pi-client/package.json +2 -2
  59. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +47 -3
  60. package/node_modules/@earendil-works/pi-coding-agent/README.md +5 -4
  61. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{chunk-GPPBJGBU.js → chunk-2KVJKXS2.js} +1 -1
  62. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{chunk-E5KXRMZK.js → chunk-OMWWHBTG.js} +69 -68
  63. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/github-copilot.js +1 -1
  64. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{google-generative-ai-XDKMGBCJ.js → google-generative-ai-YMUPJBKR.js} +1 -1
  65. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{google-vertex-D5FGEO3Y.js → google-vertex-MPWMV4OF.js} +1 -1
  66. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/https-proxy-agent-2VXB7436.js +13 -0
  67. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{mistral-conversations-YK73UAOZ.js → mistral-conversations-Q3AWZJAZ.js} +1 -1
  68. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{openai-completions-JD4WAC3R.js → openai-completions-ERMU2SS7.js} +1 -1
  69. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/cli.js +1 -1
  70. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/index.js +1 -1
  71. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/rpc-entry.js +1 -1
  72. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.d.ts.map +1 -1
  73. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js +2 -1
  74. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js.map +1 -1
  75. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +12 -1
  76. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  77. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +77 -9
  78. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  79. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  80. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js +4 -3
  81. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  82. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts +5 -0
  83. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  84. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +19 -5
  85. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  86. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts +1 -1
  87. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  88. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  89. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +5 -0
  90. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  91. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +45 -1
  92. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  93. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +18 -1
  94. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  95. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  96. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  97. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +4 -2
  98. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  99. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +8 -1
  100. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  101. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +17 -0
  102. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  103. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/client.d.ts +6 -0
  104. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/client.d.ts.map +1 -1
  105. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/client.js +7 -0
  106. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/client.js.map +1 -1
  107. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.d.ts +3 -1
  108. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.d.ts.map +1 -1
  109. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.js +27 -6
  110. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.js.map +1 -1
  111. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +2 -1
  112. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
  113. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +1 -0
  114. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
  115. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
  116. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +2 -0
  117. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
  118. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  119. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  120. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +10 -0
  121. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  122. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +4 -0
  123. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  124. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +55 -31
  125. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  126. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +7 -0
  127. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  128. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +7 -0
  129. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  130. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  131. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +3 -0
  132. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  133. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +12 -0
  134. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  135. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  136. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.d.ts.map +1 -1
  137. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.js +6 -4
  138. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.js.map +1 -1
  139. package/node_modules/@earendil-works/pi-coding-agent/docs/compaction.md +2 -0
  140. package/node_modules/@earendil-works/pi-coding-agent/docs/custom-provider.md +7 -7
  141. package/node_modules/@earendil-works/pi-coding-agent/docs/environment-variables.md +3 -0
  142. package/node_modules/@earendil-works/pi-coding-agent/docs/extensions.md +18 -0
  143. package/node_modules/@earendil-works/pi-coding-agent/docs/keybindings.md +1 -1
  144. package/node_modules/@earendil-works/pi-coding-agent/docs/quickstart.md +1 -1
  145. package/node_modules/@earendil-works/pi-coding-agent/docs/rpc.md +23 -0
  146. package/node_modules/@earendil-works/pi-coding-agent/docs/settings.md +12 -4
  147. package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +12 -0
  148. package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +4 -3
  149. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  150. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  151. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  152. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package-lock.json +2 -2
  153. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/gondolin/package.json +1 -1
  154. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package-lock.json +2 -2
  155. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  156. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package-lock.json +2 -2
  157. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  158. package/node_modules/@earendil-works/pi-coding-agent/package.json +6 -6
  159. package/node_modules/@earendil-works/pi-protocol/package.json +1 -1
  160. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  161. package/node_modules/@earendil-works/pi-tui/README.md +1 -1
  162. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +1 -0
  163. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  164. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +36 -3
  165. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  166. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  167. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  168. package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
  169. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  170. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +2 -0
  171. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  172. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +37 -2
  173. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  174. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts +11 -0
  175. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  176. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js +58 -15
  177. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  178. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.d.ts.map +1 -1
  179. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.js +105 -45
  180. package/node_modules/@earendil-works/pi-tui/dist/tui-main-screen.js.map +1 -1
  181. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  182. package/node_modules/@types/node/README.md +1 -1
  183. package/node_modules/@types/node/buffer.buffer.d.ts +5 -0
  184. package/node_modules/@types/node/crypto.d.ts +0 -2
  185. package/node_modules/@types/node/dgram.d.ts +119 -4
  186. package/node_modules/@types/node/fs/promises.d.ts +61 -65
  187. package/node_modules/@types/node/fs.d.ts +86 -76
  188. package/node_modules/@types/node/http.d.ts +1 -1
  189. package/node_modules/@types/node/http2.d.ts +2 -2
  190. package/node_modules/@types/node/index.d.ts +1 -0
  191. package/node_modules/@types/node/inspector.d.ts +2 -1
  192. package/node_modules/@types/node/net.d.ts +108 -16
  193. package/node_modules/@types/node/package.json +2 -2
  194. package/node_modules/@types/node/quic.d.ts +37 -11
  195. package/node_modules/@types/node/stream/iter.d.ts +4 -4
  196. package/node_modules/@types/node/tls.d.ts +24 -0
  197. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +5 -0
  198. package/node_modules/@types/node/ts5.6/index.d.ts +1 -0
  199. package/node_modules/@types/node/ts5.7/index.d.ts +1 -0
  200. package/node_modules/@types/node/tty.d.ts +4 -3
  201. package/node_modules/@types/node/vfs.d.ts +210 -0
  202. package/node_modules/@types/node/vm.d.ts +1 -1
  203. package/package.json +9 -9
  204. package/src/prism-extensions/integrations/ai-memory-system.ts +14 -9
  205. package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/dist-RDWOYWHR.js +0 -13
@@ -110,6 +110,7 @@
110
110
  /// <reference path="../util.d.ts" />
111
111
  /// <reference path="../util/types.d.ts" />
112
112
  /// <reference path="../v8.d.ts" />
113
+ /// <reference path="../vfs.d.ts" />
113
114
  /// <reference path="../vm.d.ts" />
114
115
  /// <reference path="../wasi.d.ts" />
115
116
  /// <reference path="../worker_threads.d.ts" />
@@ -28,10 +28,11 @@ declare module "node:tty" {
28
28
  * Allows configuration of `tty.ReadStream` so that it operates as a raw device.
29
29
  *
30
30
  * When in raw mode, input is always available character-by-character, not
31
- * including modifiers. Additionally, all special processing of characters by the
32
- * terminal is disabled, including echoing input
31
+ * including modifiers. Additionally, all special processing of input characters
32
+ * by the terminal is disabled, including echoing input
33
33
  * characters. Ctrl+C will no longer cause a `SIGINT` when
34
- * in this mode.
34
+ * in this mode. This mode does not affect terminal output processing, such as
35
+ * newline translation on Unix terminals.
35
36
  * @since v0.7.7
36
37
  * @param mode If `true`, configures the `tty.ReadStream` to operate as a raw device. If `false`, configures the `tty.ReadStream` to operate in its default mode. The `readStream.isRaw`
37
38
  * property will be set to the resulting mode.
@@ -0,0 +1,210 @@
1
+ declare module "node:vfs" {
2
+ /**
3
+ * Convenience factory equivalent to `new VirtualFileSystem(provider, options)`.
4
+ *
5
+ * ```js
6
+ * const vfs = require('node:vfs');
7
+ *
8
+ * // Default in-memory provider
9
+ * const memoryVfs = vfs.create();
10
+ *
11
+ * // Explicit provider
12
+ * const realVfs = vfs.create(new vfs.RealFSProvider('/tmp/sandbox'));
13
+ * ```
14
+ * @since v26.4.0
15
+ * @param provider The provider to use. **Default:** `new MemoryProvider()`.
16
+ */
17
+ function create(provider?: VirtualProvider, options?: VirtualFileSystemOptions): VirtualFileSystem;
18
+ function create(options: VirtualFileSystemOptions): VirtualFileSystem;
19
+ interface VirtualFileSystemOptions {
20
+ /**
21
+ * Whether to emit the experimental warning. **Default:** `true`.
22
+ */
23
+ emitExperimentalWarning?: boolean | undefined;
24
+ }
25
+ /**
26
+ * A `VirtualFileSystem` wraps a {@link VirtualProvider} and exposes a
27
+ * `node:fs`-like API. Each instance maintains its own file tree.
28
+ * @since v26.4.0
29
+ */
30
+ class VirtualFileSystem {
31
+ /**
32
+ * @param provider The provider to use. **Default:** `new MemoryProvider()`.
33
+ */
34
+ constructor(provider?: VirtualProvider, options?: VirtualFileSystemOptions);
35
+ constructor(options: VirtualFileSystemOptions);
36
+ /**
37
+ * The provider backing this VFS instance.
38
+ * @since v26.4.0
39
+ */
40
+ readonly provider: VirtualProvider;
41
+ /**
42
+ * `true` when the underlying provider is read-only.
43
+ * @since v26.4.0
44
+ */
45
+ readonly readonly: boolean;
46
+ }
47
+ interface VirtualFileSystem extends
48
+ // Synchronous API
49
+ Pick<
50
+ typeof import("node:fs"),
51
+ | "existsSync"
52
+ | "statSync"
53
+ | "lstatSync"
54
+ | "readFileSync"
55
+ | "writeFileSync"
56
+ | "appendFileSync"
57
+ | "readdirSync"
58
+ | "mkdirSync"
59
+ | "rmdirSync"
60
+ | "unlinkSync"
61
+ | "renameSync"
62
+ | "copyFileSync"
63
+ | "realpathSync"
64
+ | "readlinkSync"
65
+ | "symlinkSync"
66
+ | "accessSync"
67
+ | "rmSync"
68
+ | "truncateSync"
69
+ | "ftruncateSync"
70
+ | "linkSync"
71
+ | "chmodSync"
72
+ | "chownSync"
73
+ | "utimesSync"
74
+ | "lutimesSync"
75
+ | "mkdtempSync"
76
+ | "opendirSync"
77
+ | "openAsBlob"
78
+ | "openSync"
79
+ | "closeSync"
80
+ | "readSync"
81
+ | "writeSync"
82
+ | "fstatSync"
83
+ | "createReadStream"
84
+ | "createWriteStream"
85
+ | "watch"
86
+ | "watchFile"
87
+ | "unwatchFile"
88
+ >,
89
+ // Callback API
90
+ Pick<
91
+ typeof import("node:fs"),
92
+ | "readFile"
93
+ | "writeFile"
94
+ | "stat"
95
+ | "lstat"
96
+ | "readdir"
97
+ | "realpath"
98
+ | "readlink"
99
+ | "access"
100
+ | "open"
101
+ | "close"
102
+ | "read"
103
+ | "write"
104
+ | "rm"
105
+ | "fstat"
106
+ | "truncate"
107
+ | "ftruncate"
108
+ | "link"
109
+ | "mkdtemp"
110
+ | "opendir"
111
+ >
112
+ {
113
+ // Promise API
114
+ readonly promises: Pick<
115
+ typeof import("node:fs/promises"),
116
+ | "readFile"
117
+ | "writeFile"
118
+ | "appendFile"
119
+ | "stat"
120
+ | "lstat"
121
+ | "readdir"
122
+ | "mkdir"
123
+ | "rmdir"
124
+ | "unlink"
125
+ | "rename"
126
+ | "copyFile"
127
+ | "realpath"
128
+ | "readlink"
129
+ | "symlink"
130
+ | "access"
131
+ | "rm"
132
+ | "truncate"
133
+ | "link"
134
+ | "mkdtemp"
135
+ | "chmod"
136
+ | "chown"
137
+ | "lchown"
138
+ | "utimes"
139
+ | "lutimes"
140
+ | "open"
141
+ | "lchmod"
142
+ | "watch"
143
+ >;
144
+ }
145
+ /**
146
+ * The base class for all VFS providers. Subclasses implement the essential
147
+ * primitives (such as `open`, `stat`, `readdir`, `mkdir`, `rmdir`, `unlink`,
148
+ * `rename`, etc.) and inherit default implementations of the derived
149
+ * methods (such as `readFile`, `writeFile`, `exists`, `copyFile`, `access`, etc.).
150
+ * @since v26.4.0
151
+ */
152
+ abstract class VirtualProvider {
153
+ get readonly(): boolean;
154
+ get supportsSymlinks(): boolean;
155
+ get supportsWatch(): boolean;
156
+ }
157
+ /**
158
+ * The default in-memory provider. Stores files, directories, and symbolic
159
+ * links in a `Map`-backed tree, supports symlinks (`supportsSymlinks ===
160
+ * true`), and supports watching (`supportsWatch === true`).
161
+ * @since v26.4.0
162
+ */
163
+ class MemoryProvider extends VirtualProvider {
164
+ /**
165
+ * Locks the provider into read-only mode. Subsequent writes through any
166
+ * `VirtualFileSystem` using this provider throw `EROFS`. There is no
167
+ * way to revert the provider to writable.
168
+ *
169
+ * ```js
170
+ * const vfs = require('node:vfs');
171
+ *
172
+ * const provider = new vfs.MemoryProvider();
173
+ * const myVfs = vfs.create(provider);
174
+ * myVfs.writeFileSync('/seed.txt', 'initial');
175
+ *
176
+ * provider.setReadOnly();
177
+ *
178
+ * myVfs.writeFileSync('/x.txt', 'fail'); // throws EROFS
179
+ * ```
180
+ * @since v26.4.0
181
+ */
182
+ setReadOnly(): void;
183
+ }
184
+ /**
185
+ * A provider that wraps a directory (i.e. one on the actual file system) and exposes its
186
+ * contents through the VFS API. All VFS paths are resolved relative to
187
+ * the root and verified to stay inside it; symbolic links resolving
188
+ * outside the root are rejected.
189
+ * @since v26.4.0
190
+ */
191
+ class RealFSProvider extends VirtualProvider {
192
+ /**
193
+ * ```js
194
+ * const vfs = require('node:vfs');
195
+ *
196
+ * const realVfs = vfs.create(new vfs.RealFSProvider('/tmp/sandbox'));
197
+ * realVfs.writeFileSync('/file.txt', 'hello'); // writes /tmp/sandbox/file.txt
198
+ * ```
199
+ * @since v26.4.0
200
+ * @param rootPath The absolute file-system path to use as the root.
201
+ * Must be a non-empty string.
202
+ */
203
+ constructor(rootPath: string);
204
+ /**
205
+ * The resolved absolute path used as the root.
206
+ * @since v26.4.0
207
+ */
208
+ readonly rootPath: string;
209
+ }
210
+ }
@@ -741,7 +741,7 @@ declare module "node:vm" {
741
741
  */
742
742
  status: ModuleStatus;
743
743
  /**
744
- * Evaluate the module and its depenendencies. Corresponds to the [Evaluate() concrete method](https://tc39.es/ecma262/#sec-moduleevaluation) field of
744
+ * Evaluate the module and its dependencies. Corresponds to the [Evaluate() concrete method](https://tc39.es/ecma262/#sec-moduleevaluation) field of
745
745
  * [Cyclic Module Record](https://tc39.es/ecma262/#sec-cyclic-module-records)s in the ECMAScript specification.
746
746
  *
747
747
  * If the module is a `vm.SourceTextModule`, `evaluate()` must be called after the module has been instantiated;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daniel156161/prism",
3
- "version": "0.2.101",
3
+ "version": "0.2.105",
4
4
  "description": "Prism-branded wrapper around pi that stores config in ~/.prism",
5
5
  "license": "MIT",
6
6
  "author": "Daniel Dolezal",
@@ -35,19 +35,19 @@
35
35
  "package:publish:npm": "node scripts/publish-npm-package.mjs"
36
36
  },
37
37
  "dependencies": {
38
- "@earendil-works/pi-ai": "^0.84.3",
39
- "@earendil-works/pi-coding-agent": "^0.84.3",
40
- "@juicesharp/rpiv-i18n": "^2.7.1",
41
- "@juicesharp/rpiv-todo": "^2.7.1",
42
- "@juicesharp/rpiv-voice": "^2.7.1",
43
- "pi-mcp-adapter": "^2.28.0",
44
- "typebox": "^1.3.19"
38
+ "@earendil-works/pi-ai": "^0.84.4",
39
+ "@earendil-works/pi-coding-agent": "^0.84.4",
40
+ "@juicesharp/rpiv-i18n": "^2.8.0",
41
+ "@juicesharp/rpiv-todo": "^2.8.0",
42
+ "@juicesharp/rpiv-voice": "^2.8.0",
43
+ "pi-mcp-adapter": "^2.31.0",
44
+ "typebox": "^1.3.21"
45
45
  },
46
46
  "bundledDependencies": [
47
47
  "@earendil-works/pi-coding-agent"
48
48
  ],
49
49
  "devDependencies": {
50
- "@types/node": "^26.3.0",
50
+ "@types/node": "^26.4.0",
51
51
  "tsx": "^4.23.12",
52
52
  "typescript": "^7.0.2"
53
53
  },
@@ -165,10 +165,9 @@ export function aiMemoryAuditAgentPrompt(): string {
165
165
  }
166
166
 
167
167
  function formatReadResult(data: any): string {
168
- const source = String(data?.source ?? "unknown")
169
- const path = String(data?.path ?? "unknown")
170
- const truncated = data?.truncated ? `\nHinweis: auf ${data.max_chars ?? "?"} Zeichen gekürzt.` : ""
171
- return `Quelle: ${source}:${path}${truncated}\n\n${String(data?.content ?? "")}`
168
+ const content = String(data?.content ?? "")
169
+ const truncated = data?.truncated ? `Hinweis: auf ${data.max_chars ?? "?"} Zeichen gekürzt.` : ""
170
+ return [truncated, content].filter(Boolean).join("\n\n")
172
171
  }
173
172
 
174
173
  function compactExcerpt(value: unknown, maxLength = 360): string {
@@ -474,11 +473,14 @@ export default function aiMemorySystemExtension(pi: ExtensionAPI): void {
474
473
  pi.registerTool({
475
474
  name: "ai_memory_feedback",
476
475
  label: "AI Memory Feedback",
477
- description: "List pending lessons or approve/reject one proposal. Approval writes durable memory.",
478
- promptSnippet: "Use only after explicit user approval to approve a proposed durable lesson.",
479
- promptGuidelines: ["Never approve a lesson without explicit user approval in the current conversation."],
476
+ description: "List pending lessons, look up one lesson by ID, or approve/reject one proposal. Approval writes durable memory to the database.",
477
+ promptSnippet: "Use list/get freely for lesson inspection. Use approve/reject only after explicit user approval.",
478
+ promptGuidelines: [
479
+ "Use action=get with proposal_id when prompt context references a Lesson-ID and you need the rationale/evidence.",
480
+ "Never approve a lesson without explicit user approval in the current conversation.",
481
+ ],
480
482
  parameters: Type.Object({
481
- action: Type.Optional(Type.String({ description: "list (default), approve, or reject" })),
483
+ action: Type.Optional(Type.String({ description: "list (default), get, approve, or reject" })),
482
484
  proposal_id: Type.Optional(Type.String({ description: "Required for approve/reject" })),
483
485
  status: Type.Optional(Type.String({ description: "List filter: pending, approved, or rejected" })),
484
486
  session_id: Type.Optional(Type.String({ description: "Optional session filter for listing" })),
@@ -491,9 +493,12 @@ export default function aiMemorySystemExtension(pi: ExtensionAPI): void {
491
493
  if (params.status) query.set("status", String(params.status))
492
494
  if (params.session_id) query.set("session_id", String(params.session_id))
493
495
  data = await getJson<any>(`/lessons${query.size ? `?${query}` : ""}`, aiMemoryRequestTimeoutMs())
496
+ } else if (action === "get") {
497
+ if (!params.proposal_id) throw new Error("proposal_id is required for action=get")
498
+ data = await getJson<any>(`/lessons/${encodeURIComponent(String(params.proposal_id))}`, aiMemoryRequestTimeoutMs())
494
499
  } else {
495
500
  if (!["approve", "reject"].includes(action) || !params.proposal_id) {
496
- throw new Error("action must be list, approve, or reject; proposal_id is required for decisions")
501
+ throw new Error("action must be list, get, approve, or reject; proposal_id is required for get/decisions")
497
502
  }
498
503
  data = await methodJson<any>("DECISION", "/lessons", aiMemoryRequestTimeoutMs(), {
499
504
  proposal_id: String(params.proposal_id),
@@ -1,13 +0,0 @@
1
- import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
- import{__commonJS,__require}from"./chunk-4L3WN2XY.js";var require_ms=__commonJS({"node_modules/ms/index.js"(exports,module){var s=1e3,m=s*60,h=m*60,d=h*24,w=d*7,y=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse(str){if(str=String(str),!(str.length>100)){var match=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);if(match){var n=parseFloat(match[1]),type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"weeks":case"week":case"w":return n*w;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms){var msAbs=Math.abs(ms);return msAbs>=d?Math.round(ms/d)+"d":msAbs>=h?Math.round(ms/h)+"h":msAbs>=m?Math.round(ms/m)+"m":msAbs>=s?Math.round(ms/s)+"s":ms+"ms"}function fmtLong(ms){var msAbs=Math.abs(ms);return msAbs>=d?plural(ms,msAbs,d,"day"):msAbs>=h?plural(ms,msAbs,h,"hour"):msAbs>=m?plural(ms,msAbs,m,"minute"):msAbs>=s?plural(ms,msAbs,s,"second"):ms+" ms"}function plural(ms,msAbs,n,name){var isPlural=msAbs>=n*1.5;return Math.round(ms/n)+" "+name+(isPlural?"s":"")}}});var require_common=__commonJS({"node_modules/debug/src/common.js"(exports,module){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms(),createDebug.destroy=destroy,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i=0;i<namespace.length;i++)hash=(hash<<5)-hash+namespace.charCodeAt(i),hash|=0;return createDebug.colors[Math.abs(hash)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug(...args){if(!debug.enabled)return;let self=debug,curr=Number(new Date),ms=curr-(prevTime||curr);self.diff=ms,self.prev=prevTime,self.curr=curr,prevTime=curr,args[0]=createDebug.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");let index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,(match,format)=>{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self,args),(self.log||createDebug.log).apply(self,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend(namespace,delimiter){let newDebug=createDebug(this.namespace+(typeof delimiter>"u"?":":delimiter)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module.exports=setup}});var require_browser=__commonJS({"node_modules/debug/src/browser.js"(exports,module){exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=localstorage();exports.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports.storage.setItem("debug",namespaces):exports.storage.removeItem("debug")}catch{}}function load(){let r;try{r=exports.storage.getItem("debug")||exports.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_node=__commonJS({"node_modules/debug/src/node.js"(exports,module){var tty=__require("tty"),util=__require("util");exports.init=init;exports.log=log;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.destroy=util.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports.colors=[6,2,3,4,5,1];try{let supportsColor=__require("supports-color");supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports.inspectOpts?!!exports.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix+args[0].split(`
3
- `).join(`
4
- `+prefix),args.push(colorCode+"m+"+module.exports.humanize(this.diff)+"\x1B[0m")}else args[0]=getDate()+name+" "+args[0]}function getDate(){return exports.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log(...args){return process.stderr.write(util.formatWithOptions(exports.inspectOpts,...args)+`
5
- `)}function save(namespaces){namespaces?process.env.DEBUG=namespaces:delete process.env.DEBUG}function load(){return process.env.DEBUG}function init(debug){debug.inspectOpts={};let keys=Object.keys(exports.inspectOpts);for(let i=0;i<keys.length;i++)debug.inspectOpts[keys[i]]=exports.inspectOpts[keys[i]]}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.o=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts).split(`
6
- `).map(str=>str.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)}}});var require_src=__commonJS({"node_modules/debug/src/index.js"(exports,module){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module.exports=require_browser():module.exports=require_node()}});var require_helpers=__commonJS({"node_modules/agent-base/dist/helpers.js"(exports){"use strict";var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports&&exports.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result};Object.defineProperty(exports,"__esModule",{value:!0});exports.req=exports.json=exports.toBuffer=void 0;var http=__importStar(__require("http")),https=__importStar(__require("https"));async function toBuffer(stream){let length=0,chunks=[];for await(let chunk of stream)length+=chunk.length,chunks.push(chunk);return Buffer.concat(chunks,length)}exports.toBuffer=toBuffer;async function json(stream){let str=(await toBuffer(stream)).toString("utf8");try{return JSON.parse(str)}catch(_err){let err=_err;throw err.message+=` (input: ${str})`,err}}exports.json=json;function req(url,opts={}){let req2=((typeof url=="string"?url:url.href).startsWith("https:")?https:http).request(url,opts),promise=new Promise((resolve,reject)=>{req2.once("response",resolve).once("error",reject).end()});return req2.then=promise.then.bind(promise),req2}exports.req=req}});var require_dist=__commonJS({"node_modules/agent-base/dist/index.js"(exports){"use strict";var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports&&exports.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__exportStar=exports&&exports.__exportStar||function(m,exports2){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports2,p)&&__createBinding(exports2,m,p)};Object.defineProperty(exports,"__esModule",{value:!0});exports.Agent=void 0;var net=__importStar(__require("net")),http=__importStar(__require("http")),https_1=__require("https");__exportStar(require_helpers(),exports);var INTERNAL=Symbol("AgentBaseInternalState"),Agent=class extends http.Agent{constructor(opts){super(opts),this[INTERNAL]={}}isSecureEndpoint(options){if(options){if(typeof options.secureEndpoint=="boolean")return options.secureEndpoint;if(typeof options.protocol=="string")return options.protocol==="https:"}let{stack}=new Error;return typeof stack!="string"?!1:stack.split(`
7
- `).some(l=>l.indexOf("(https.js:")!==-1||l.indexOf("node:https:")!==-1)}incrementSockets(name){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[name]||(this.sockets[name]=[]);let fakeSocket=new net.Socket({writable:!1});return this.sockets[name].push(fakeSocket),this.totalSocketCount++,fakeSocket}decrementSockets(name,socket){if(!this.sockets[name]||socket===null)return;let sockets=this.sockets[name],index=sockets.indexOf(socket);index!==-1&&(sockets.splice(index,1),this.totalSocketCount--,sockets.length===0&&delete this.sockets[name])}getName(options){return this.isSecureEndpoint(options)?https_1.Agent.prototype.getName.call(this,options):super.getName(options)}createSocket(req,options,cb){let connectOpts={...options,secureEndpoint:this.isSecureEndpoint(options)},name=this.getName(connectOpts),fakeSocket=this.incrementSockets(name);Promise.resolve().then(()=>this.connect(req,connectOpts)).then(socket=>{if(this.decrementSockets(name,fakeSocket),socket instanceof http.Agent)try{return socket.addRequest(req,connectOpts)}catch(err){return cb(err)}this[INTERNAL].currentSocket=socket,super.createSocket(req,options,cb)},err=>{this.decrementSockets(name,fakeSocket),cb(err)})}createConnection(){let socket=this[INTERNAL].currentSocket;if(this[INTERNAL].currentSocket=void 0,!socket)throw new Error("No socket was returned in the `connect()` function");return socket}get defaultPort(){return this[INTERNAL].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(v){this[INTERNAL]&&(this[INTERNAL].defaultPort=v)}get protocol(){return this[INTERNAL].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(v){this[INTERNAL]&&(this[INTERNAL].protocol=v)}};exports.Agent=Agent}});var require_parse_proxy_response=__commonJS({"node_modules/https-proxy-agent/dist/parse-proxy-response.js"(exports){"use strict";var __importDefault=exports&&exports.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});exports.parseProxyResponse=void 0;var debug_1=__importDefault(require_src()),debug=(0,debug_1.default)("https-proxy-agent:parse-proxy-response");function parseProxyResponse(socket){return new Promise((resolve,reject)=>{let buffersLength=0,buffers=[];function read(){let b=socket.read();b?ondata(b):socket.once("readable",read)}function cleanup(){socket.removeListener("end",onend),socket.removeListener("error",onerror),socket.removeListener("readable",read)}function onend(){cleanup(),debug("onend"),reject(new Error("Proxy connection ended before receiving CONNECT response"))}function onerror(err){cleanup(),debug("onerror %o",err),reject(err)}function ondata(b){buffers.push(b),buffersLength+=b.length;let buffered=Buffer.concat(buffers,buffersLength),endOfHeaders=buffered.indexOf(`\r
8
- \r
9
- `);if(endOfHeaders===-1){debug("have not received end of HTTP headers yet..."),read();return}let headerParts=buffered.slice(0,endOfHeaders).toString("ascii").split(`\r
10
- `),firstLine=headerParts.shift();if(!firstLine)return socket.destroy(),reject(new Error("No header received from proxy CONNECT response"));let firstLineParts=firstLine.split(" "),statusCode=+firstLineParts[1],statusText=firstLineParts.slice(2).join(" "),headers={};for(let header of headerParts){if(!header)continue;let firstColon=header.indexOf(":");if(firstColon===-1)return socket.destroy(),reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`));let key=header.slice(0,firstColon).toLowerCase(),value=header.slice(firstColon+1).trimStart(),current=headers[key];typeof current=="string"?headers[key]=[current,value]:Array.isArray(current)?current.push(value):headers[key]=value}debug("got proxy server response: %o %o",firstLine,headers),cleanup(),resolve({connect:{statusCode,statusText,headers},buffered})}socket.on("error",onerror),socket.on("end",onend),read()})}exports.parseProxyResponse=parseProxyResponse}});var require_dist2=__commonJS({"node_modules/https-proxy-agent/dist/index.js"(exports){var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports&&exports.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__importDefault=exports&&exports.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});exports.HttpsProxyAgent=void 0;var net=__importStar(__require("net")),tls=__importStar(__require("tls")),assert_1=__importDefault(__require("assert")),debug_1=__importDefault(require_src()),agent_base_1=require_dist(),url_1=__require("url"),parse_proxy_response_1=require_parse_proxy_response(),debug=(0,debug_1.default)("https-proxy-agent"),setServernameFromNonIpHost=options=>options.servername===void 0&&options.host&&!net.isIP(options.host)?{...options,servername:options.host}:options,HttpsProxyAgent=class extends agent_base_1.Agent{constructor(proxy,opts){super(opts),this.options={path:void 0},this.proxy=typeof proxy=="string"?new url_1.URL(proxy):proxy,this.proxyHeaders=opts?.headers??{},debug("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let host=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),port=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...opts?omit(opts,"headers"):null,host,port}}async connect(req,opts){let{proxy}=this;if(!opts.host)throw new TypeError('No "host" provided');let socket;proxy.protocol==="https:"?(debug("Creating `tls.Socket`: %o",this.connectOpts),socket=tls.connect(setServernameFromNonIpHost(this.connectOpts))):(debug("Creating `net.Socket`: %o",this.connectOpts),socket=net.connect(this.connectOpts));let headers=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},host=net.isIPv6(opts.host)?`[${opts.host}]`:opts.host,payload=`CONNECT ${host}:${opts.port} HTTP/1.1\r
11
- `;if(proxy.username||proxy.password){let auth=`${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;headers["Proxy-Authorization"]=`Basic ${Buffer.from(auth).toString("base64")}`}headers.Host=`${host}:${opts.port}`,headers["Proxy-Connection"]||(headers["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let name of Object.keys(headers))payload+=`${name}: ${headers[name]}\r
12
- `;let proxyResponsePromise=(0,parse_proxy_response_1.parseProxyResponse)(socket);socket.write(`${payload}\r
13
- `);let{connect,buffered}=await proxyResponsePromise;if(req.emit("proxyConnect",connect),this.emit("proxyConnect",connect,req),connect.statusCode===200)return req.once("socket",resume),opts.secureEndpoint?(debug("Upgrading socket connection to TLS"),tls.connect({...omit(setServernameFromNonIpHost(opts),"host","path","port"),socket})):socket;socket.destroy();let fakeSocket=new net.Socket({writable:!1});return fakeSocket.readable=!0,req.once("socket",s=>{debug("Replaying proxy buffer for failed request"),(0,assert_1.default)(s.listenerCount("data")>0),s.push(buffered),s.push(null)}),fakeSocket}};HttpsProxyAgent.protocols=["http","https"];exports.HttpsProxyAgent=HttpsProxyAgent;function resume(socket){socket.resume()}function omit(obj,...keys){let ret={},key;for(key in obj)keys.includes(key)||(ret[key]=obj[key]);return ret}}});export default require_dist2();