@astralyn/pi 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/bundle/chunks/{anthropic-messages-CG2BSDQS.js → anthropic-messages-YET4T7BO.js} +3 -3
  3. package/dist/bundle/chunks/azure-openai-responses-SBLL5YN3.js +2 -0
  4. package/dist/bundle/chunks/bedrock-converse-stream.js +2 -2
  5. package/dist/bundle/chunks/{chunk-SGLYRVQL.js → chunk-4TT2QGFL.js} +1 -1
  6. package/dist/bundle/chunks/{chunk-HESRDUKO.js → chunk-H2N2THAO.js} +72 -52
  7. package/dist/bundle/chunks/{chunk-PFZKRUMO.js → chunk-IZ3S3GDX.js} +1 -1
  8. package/dist/bundle/chunks/{chunk-6UFFVA7M.js → chunk-NY3CWK44.js} +1 -1
  9. package/dist/bundle/chunks/chunk-SVJ7OGEB.js +2 -0
  10. package/dist/bundle/chunks/chunk-XDYM2567.js +20 -0
  11. package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-YB7XPPP4.js → cloudflare-workers-ai-system-one-QI46LUZ6.js} +1 -1
  12. package/dist/bundle/chunks/codemode-worker.js +24 -3
  13. package/dist/bundle/chunks/{google-generative-ai-V5ZM5MCL.js → google-generative-ai-YTZCSHQN.js} +1 -1
  14. package/dist/bundle/chunks/{google-vertex-22THOFP5.js → google-vertex-OTFZJJXQ.js} +1 -1
  15. package/dist/bundle/chunks/{mistral-conversations-WHSCJJWP.js → mistral-conversations-ELH4V4TY.js} +1 -1
  16. package/dist/bundle/chunks/node-USQQ7C6M.js +16 -0
  17. package/dist/bundle/chunks/openai-chatgpt.js +1 -1
  18. package/dist/bundle/chunks/{openai-codex-responses-N7GDPBPP.js → openai-codex-responses-OLVTU4UA.js} +1 -1
  19. package/dist/bundle/chunks/openai-completions-53M2KJ67.js +7 -0
  20. package/dist/bundle/chunks/openai-responses-4ABDEL4Z.js +3 -0
  21. package/dist/bundle/chunks/{virtual-modules-4RQ2L6W4.js → virtual-modules-YFKU7JZF.js} +1 -1
  22. package/dist/bundle/cli.js +1 -1
  23. package/dist/bundle/index.js +1 -1
  24. package/dist/bundle/rpc-entry.js +1 -1
  25. package/dist/cli/args.d.ts.map +1 -1
  26. package/dist/cli/args.js +4 -1
  27. package/dist/cli/args.js.map +1 -1
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +3 -0
  30. package/dist/config.js.map +1 -1
  31. package/dist/core/agent-session.d.ts.map +1 -1
  32. package/dist/core/agent-session.js +1 -1
  33. package/dist/core/agent-session.js.map +1 -1
  34. package/dist/core/export-html/tool-renderer.d.ts +3 -3
  35. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  36. package/dist/core/export-html/tool-renderer.js +3 -3
  37. package/dist/core/export-html/tool-renderer.js.map +1 -1
  38. package/dist/core/extensions/index.d.ts +1 -1
  39. package/dist/core/extensions/index.d.ts.map +1 -1
  40. package/dist/core/extensions/index.js.map +1 -1
  41. package/dist/core/extensions/loader.d.ts.map +1 -1
  42. package/dist/core/extensions/loader.js +5 -0
  43. package/dist/core/extensions/loader.js.map +1 -1
  44. package/dist/core/extensions/runner.d.ts +3 -1
  45. package/dist/core/extensions/runner.d.ts.map +1 -1
  46. package/dist/core/extensions/runner.js +6 -0
  47. package/dist/core/extensions/runner.js.map +1 -1
  48. package/dist/core/extensions/types.d.ts +9 -0
  49. package/dist/core/extensions/types.d.ts.map +1 -1
  50. package/dist/core/extensions/types.js.map +1 -1
  51. package/dist/core/mcp-servers.d.ts +6 -0
  52. package/dist/core/mcp-servers.d.ts.map +1 -1
  53. package/dist/core/mcp-servers.js +11 -0
  54. package/dist/core/mcp-servers.js.map +1 -1
  55. package/dist/core/model-config.d.ts +36 -0
  56. package/dist/core/model-config.d.ts.map +1 -1
  57. package/dist/core/model-config.js +14 -2
  58. package/dist/core/model-config.js.map +1 -1
  59. package/dist/core/model-resolver.js +1 -1
  60. package/dist/core/model-resolver.js.map +1 -1
  61. package/dist/core/provider-composer.d.ts +2 -1
  62. package/dist/core/provider-composer.d.ts.map +1 -1
  63. package/dist/core/provider-composer.js +13 -0
  64. package/dist/core/provider-composer.js.map +1 -1
  65. package/dist/core/tools/renderers/index.d.ts +2 -2
  66. package/dist/core/tools/renderers/index.d.ts.map +1 -1
  67. package/dist/core/tools/renderers/index.js.map +1 -1
  68. package/dist/extensions/mcp/cli.d.ts.map +1 -1
  69. package/dist/extensions/mcp/cli.js +3 -0
  70. package/dist/extensions/mcp/cli.js.map +1 -1
  71. package/dist/extensions/mcp/config.d.ts +15 -3
  72. package/dist/extensions/mcp/config.d.ts.map +1 -1
  73. package/dist/extensions/mcp/config.js +46 -10
  74. package/dist/extensions/mcp/config.js.map +1 -1
  75. package/dist/extensions/mcp/index.d.ts +4 -1
  76. package/dist/extensions/mcp/index.d.ts.map +1 -1
  77. package/dist/extensions/mcp/index.js +80 -45
  78. package/dist/extensions/mcp/index.js.map +1 -1
  79. package/dist/extensions/mcp/oauth.d.ts +4 -1
  80. package/dist/extensions/mcp/oauth.d.ts.map +1 -1
  81. package/dist/extensions/mcp/oauth.js +54 -10
  82. package/dist/extensions/mcp/oauth.js.map +1 -1
  83. package/dist/extensions/mcp/runtime.d.ts.map +1 -1
  84. package/dist/extensions/mcp/runtime.js +1 -0
  85. package/dist/extensions/mcp/runtime.js.map +1 -1
  86. package/dist/extensions/mcp/tools.d.ts +3 -1
  87. package/dist/extensions/mcp/tools.d.ts.map +1 -1
  88. package/dist/extensions/mcp/tools.js +19 -13
  89. package/dist/extensions/mcp/tools.js.map +1 -1
  90. package/dist/extensions/mcp/ui.d.ts.map +1 -1
  91. package/dist/extensions/mcp/ui.js +8 -4
  92. package/dist/extensions/mcp/ui.js.map +1 -1
  93. package/dist/index.d.ts +1 -1
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js.map +1 -1
  96. package/dist/modes/interactive/components/armin.d.ts +3 -0
  97. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  98. package/dist/modes/interactive/components/armin.js +7 -5
  99. package/dist/modes/interactive/components/armin.js.map +1 -1
  100. package/dist/modes/interactive/components/auth-url.d.ts +14 -0
  101. package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
  102. package/dist/modes/interactive/components/auth-url.js +34 -0
  103. package/dist/modes/interactive/components/auth-url.js.map +1 -0
  104. package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
  105. package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
  106. package/dist/modes/interactive/components/{pi-logo-animation.js → easter-egg-3d.js} +121 -74
  107. package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
  108. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
  109. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
  110. package/dist/modes/interactive/components/easter-egg-3d.lazy.js +24 -0
  111. package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
  112. package/dist/modes/interactive/components/index.d.ts +0 -1
  113. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  114. package/dist/modes/interactive/components/index.js +0 -1
  115. package/dist/modes/interactive/components/index.js.map +1 -1
  116. package/dist/modes/interactive/components/login-dialog.d.ts +2 -0
  117. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  118. package/dist/modes/interactive/components/login-dialog.js +9 -5
  119. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  120. package/dist/modes/interactive/interactive-mode.d.ts +2 -2
  121. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  122. package/dist/modes/interactive/interactive-mode.js +15 -17
  123. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  124. package/dist/modes/interactive/tool-view/tool-execution.d.ts +4 -19
  125. package/dist/modes/interactive/tool-view/tool-execution.d.ts.map +1 -1
  126. package/dist/modes/interactive/tool-view/tool-execution.js +23 -67
  127. package/dist/modes/interactive/tool-view/tool-execution.js.map +1 -1
  128. package/dist/utils/image-convert.d.ts +12 -0
  129. package/dist/utils/image-convert.d.ts.map +1 -1
  130. package/dist/utils/image-convert.js +45 -6
  131. package/dist/utils/image-convert.js.map +1 -1
  132. package/docs/codemode.md +1 -1
  133. package/docs/extensions.md +4 -0
  134. package/docs/keybindings.md +1 -1
  135. package/docs/mcp.md +23 -1
  136. package/docs/models.md +30 -3
  137. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  138. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  139. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  140. package/examples/extensions/gondolin/package-lock.json +2 -2
  141. package/examples/extensions/gondolin/package.json +1 -1
  142. package/examples/extensions/sandbox/package-lock.json +2 -2
  143. package/examples/extensions/sandbox/package.json +1 -1
  144. package/examples/extensions/with-deps/package-lock.json +2 -2
  145. package/examples/extensions/with-deps/package.json +1 -1
  146. package/npm-shrinkwrap.json +58 -58
  147. package/package.json +11 -11
  148. package/dist/bundle/chunks/azure-openai-responses-PBA4QKCM.js +0 -2
  149. package/dist/bundle/chunks/chunk-PJVFYVHE.js +0 -42
  150. package/dist/bundle/chunks/chunk-Z2RKSI3O.js +0 -2
  151. package/dist/bundle/chunks/node-CXWYTK2I.js +0 -16
  152. package/dist/bundle/chunks/openai-completions-RGGQK5UW.js +0 -7
  153. package/dist/bundle/chunks/openai-responses-3ZLD5JYI.js +0 -3
  154. package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  155. package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  156. package/dist/modes/interactive/components/daxnuts.js +0 -138
  157. package/dist/modes/interactive/components/daxnuts.js.map +0 -1
  158. package/dist/modes/interactive/components/pi-logo-animation.d.ts +0 -68
  159. package/dist/modes/interactive/components/pi-logo-animation.d.ts.map +0 -1
  160. package/dist/modes/interactive/components/pi-logo-animation.js.map +0 -1
  161. package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts +0 -7
  162. package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts.map +0 -1
  163. package/dist/modes/interactive/components/pi-logo-animation.lazy.js +0 -12
  164. package/dist/modes/interactive/components/pi-logo-animation.lazy.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-gitlab-duo",
3
3
  "private": true,
4
- "version": "1.0.0",
4
+ "version": "1.0.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-gondolin",
9
- "version": "1.0.0",
9
+ "version": "1.0.2",
10
10
  "dependencies": {
11
11
  "@earendil-works/gondolin": "0.12.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
3
  "private": true,
4
- "version": "1.0.0",
4
+ "version": "1.0.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "1.0.0",
9
+ "version": "1.0.2",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sandbox-runtime": "^0.0.26"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
3
  "private": true,
4
- "version": "1.0.0",
4
+ "version": "1.0.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-with-deps",
9
- "version": "1.0.0",
9
+ "version": "1.0.2",
10
10
  "dependencies": {
11
11
  "ms": "^2.1.3"
12
12
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
3
  "private": true,
4
- "version": "1.0.0",
4
+ "version": "1.0.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@astralyn/pi",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@astralyn/pi",
9
- "version": "1.0.0",
9
+ "version": "1.0.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@earendil-works/chord": "1.0.0",
13
- "@earendil-works/pi-agent-core": "1.0.0",
14
- "@earendil-works/pi-ai": "1.0.0",
15
- "@earendil-works/pi-codemode": "1.0.0",
16
- "@earendil-works/pi-mcp": "1.0.0",
17
- "@earendil-works/pi-tui": "1.0.0",
12
+ "@earendil-works/chord": "1.0.2",
13
+ "@earendil-works/pi-agent-core": "1.0.2",
14
+ "@earendil-works/pi-ai": "1.0.2",
15
+ "@earendil-works/pi-codemode": "1.0.2",
16
+ "@earendil-works/pi-mcp": "1.0.2",
17
+ "@earendil-works/pi-tui": "1.0.2",
18
18
  "@silvia-odwyer/photon-node": "0.3.4",
19
19
  "chalk": "6.0.0",
20
20
  "cross-spawn": "7.0.6",
@@ -39,10 +39,10 @@
39
39
  "@anthropic-ai/sandbox-runtime": "0.0.26",
40
40
  "@anthropic-ai/sdk": "0.52.0",
41
41
  "@biomejs/biome": "2.3.5",
42
- "@earendil-works/pi-client": "1.0.0",
43
- "@earendil-works/pi-durable": "1.0.0",
44
- "@earendil-works/pi-protocol": "1.0.0",
45
- "@earendil-works/pi-server": "1.0.0",
42
+ "@earendil-works/pi-client": "1.0.2",
43
+ "@earendil-works/pi-durable": "1.0.2",
44
+ "@earendil-works/pi-protocol": "1.0.2",
45
+ "@earendil-works/pi-server": "1.0.2",
46
46
  "@types/cross-spawn": "6.0.6",
47
47
  "@types/hosted-git-info": "3.0.5",
48
48
  "@types/ms": "2.1.0",
@@ -630,9 +630,9 @@
630
630
  }
631
631
  },
632
632
  "node_modules/@earendil-works/chord": {
633
- "version": "1.0.0",
634
- "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.0.0.tgz",
635
- "integrity": "sha512-BIfWfrByM0pKq6tfKYXuwx0ed2CvaqIM3EDA7Dps+fP+d3CiPWdlHi1cDsJC05llqKJoRz5//G0hz0yQwwjISQ==",
633
+ "version": "1.0.2",
634
+ "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.0.2.tgz",
635
+ "integrity": "sha512-eUXGZjigyEQsFiT/oBJUOaCrzYZRmqf8AgLrlbyuS4u02hjSVhLYRi3xqk1o4UERCgRfjRegqwj/oucawIR7YQ==",
636
636
  "license": "MIT",
637
637
  "dependencies": {
638
638
  "esbuild": "0.28.2"
@@ -642,12 +642,12 @@
642
642
  }
643
643
  },
644
644
  "node_modules/@earendil-works/pi-agent-core": {
645
- "version": "1.0.0",
646
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.0.0.tgz",
647
- "integrity": "sha512-bHFONjtEBDqiV+g1DmmtkSlfAaqHELr+XO+6I5Nah4gswwZrLJO4yZB/JjsnlI4AKWTayBLfgS6DCbeBBz9e2Q==",
645
+ "version": "1.0.2",
646
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.0.2.tgz",
647
+ "integrity": "sha512-VRfewY1R5mbedJzlm01PxdCmqU8QrSXjXXhV50bp6rvVuT8YYQv1inTXRY4YzssmGAYpkC2rXipJKP5BpBFXew==",
648
648
  "license": "MIT",
649
649
  "dependencies": {
650
- "@earendil-works/pi-ai": "^1.0.0",
650
+ "@earendil-works/pi-ai": "^1.0.2",
651
651
  "typebox": "1.3.27"
652
652
  },
653
653
  "engines": {
@@ -655,14 +655,14 @@
655
655
  }
656
656
  },
657
657
  "node_modules/@earendil-works/pi-ai": {
658
- "version": "1.0.0",
659
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.0.tgz",
660
- "integrity": "sha512-3/W1vdDaVtpeMd23ElvJC12HLA5yS/BGqqcXF+0SK082dN7cbgNcCwguTBRBC258Ke8SzSvUW1B75iAf8w8IxA==",
658
+ "version": "1.0.2",
659
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.2.tgz",
660
+ "integrity": "sha512-JP59xGlSAQ/HhQ6EHN5qmneBlWfDyu6FPPryAvAaSo8A38ubAsEpS9YisCM5Jbbns0srrDffLZonE0OXorHI5A==",
661
661
  "license": "MIT",
662
662
  "dependencies": {
663
- "@anthropic-ai/sdk": "0.124.0",
663
+ "@anthropic-ai/sdk": "0.129.0",
664
664
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
665
- "@earendil-works/pi-telemetry": "^1.0.0",
665
+ "@earendil-works/pi-telemetry": "^1.0.2",
666
666
  "@google/genai": "2.21.0",
667
667
  "@smithy/node-http-handler": "4.12.1",
668
668
  "http-proxy-agent": "9.1.0",
@@ -679,9 +679,9 @@
679
679
  }
680
680
  },
681
681
  "node_modules/@earendil-works/pi-ai/node_modules/@anthropic-ai/sdk": {
682
- "version": "0.124.0",
683
- "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.124.0.tgz",
684
- "integrity": "sha512-cN5O8i9UVxHeOQAzj/XjshWXG8KiibJDw9OGpH2Z/eR3n/RBxdoLxDJOcfqAJWvjaMDFfHTBADU04hWRJVkDyA==",
682
+ "version": "0.129.0",
683
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.129.0.tgz",
684
+ "integrity": "sha512-MH7LB20kNpGLUpPTe2OG5XvL/KhX8HUO9XyBaFjgFk6TLS4Xjt0VPIuMKywe7POKKPslX+QxSlVok9e+8kG5Nw==",
685
685
  "license": "MIT",
686
686
  "dependencies": {
687
687
  "json-schema-to-ts": "^3.1.1",
@@ -700,23 +700,23 @@
700
700
  }
701
701
  },
702
702
  "node_modules/@earendil-works/pi-client": {
703
- "version": "1.0.0",
704
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-1.0.0.tgz",
705
- "integrity": "sha512-vK7v5eyD+e0JWk8UWWwTRATXVxjqL811cDjoqfXcd2mhe8rC8eHoRQw6d4Zfh857KrWVLNSR0v7snPX3Gu8FSQ==",
703
+ "version": "1.0.2",
704
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-1.0.2.tgz",
705
+ "integrity": "sha512-KwznnEx24irb2pBIMeha6iIVyoYtrfpbtKkgw31xVn2Q/yzCbTtMe81a5Ep0BAN001iLn5D+aALjQ9vQDpSnGw==",
706
706
  "dev": true,
707
707
  "license": "MIT",
708
708
  "dependencies": {
709
- "@earendil-works/chord": "^1.0.0",
710
- "@earendil-works/pi-protocol": "^1.0.0"
709
+ "@earendil-works/chord": "^1.0.2",
710
+ "@earendil-works/pi-protocol": "^1.0.2"
711
711
  },
712
712
  "engines": {
713
713
  "node": ">=22.19.0"
714
714
  }
715
715
  },
716
716
  "node_modules/@earendil-works/pi-codemode": {
717
- "version": "1.0.0",
718
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.0.0.tgz",
719
- "integrity": "sha512-LPpFI4+T9NzDnhBDs15izWAolaoM8xnwqdziRd6Zx8BQeoEPvzefD2vMMzSyF0rOtq34TfQqkZ0ki16f6cGdMg==",
717
+ "version": "1.0.2",
718
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.0.2.tgz",
719
+ "integrity": "sha512-tvfDSVz984ra/4y/hIFmYGpP5ojC+C6/ey+DNbjTzfJvbXviW4JYTXwVcm33KAceI0xcOuE+P1yRGLtQgis0/w==",
720
720
  "license": "MIT",
721
721
  "dependencies": {
722
722
  "quickjs-wasi": "3.6.2"
@@ -726,14 +726,14 @@
726
726
  }
727
727
  },
728
728
  "node_modules/@earendil-works/pi-durable": {
729
- "version": "1.0.0",
730
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-durable/-/pi-durable-1.0.0.tgz",
731
- "integrity": "sha512-PvjCIdy5jRsBoJDRpCCI0RfwBax2ZPnMT5aw/tRQxcQOqbGGj2mq1z0WuVxoyimWWi+WYSYT2VySg3RO1qzySw==",
729
+ "version": "1.0.2",
730
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-durable/-/pi-durable-1.0.2.tgz",
731
+ "integrity": "sha512-pDh8eMSSFIVOTh0H53KhtjaS/XFrulEVREN8wnY8vtbYY0srioZ2impajvkXwoZcG6pRgbPz/WVatZLyk5TIbg==",
732
732
  "dev": true,
733
733
  "license": "MIT",
734
734
  "dependencies": {
735
- "@earendil-works/chord": "^1.0.0",
736
- "@earendil-works/pi-ai": "^1.0.0",
735
+ "@earendil-works/chord": "^1.0.2",
736
+ "@earendil-works/pi-ai": "^1.0.2",
737
737
  "diff": "8.0.4",
738
738
  "typebox": "1.3.27"
739
739
  },
@@ -742,9 +742,9 @@
742
742
  }
743
743
  },
744
744
  "node_modules/@earendil-works/pi-mcp": {
745
- "version": "1.0.0",
746
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-mcp/-/pi-mcp-1.0.0.tgz",
747
- "integrity": "sha512-rYra0aF5iPmJd+fsB+VBuqxWNABGJ3Iiyhg0CqIc/91ta2n7IvQmCp0Cac/YkUTNnvRsVZnjgAiBkRi6+ouWuw==",
745
+ "version": "1.0.2",
746
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-mcp/-/pi-mcp-1.0.2.tgz",
747
+ "integrity": "sha512-ED3+q41xLQkxzdadZIQy68SLYcqCJbve8iGbGkZoWjPJ9OZCPHTKcof24fjMO1LfnbIl1uMfhRBueS6IfdiCbQ==",
748
748
  "license": "MIT",
749
749
  "dependencies": {
750
750
  "cross-spawn": "7.0.6"
@@ -754,13 +754,13 @@
754
754
  }
755
755
  },
756
756
  "node_modules/@earendil-works/pi-protocol": {
757
- "version": "1.0.0",
758
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-1.0.0.tgz",
759
- "integrity": "sha512-RzBfALctfmvVE7IyZy4tr5N0GgHDSt+U4opzPbbcqunZxB7V6MG8HT1wsKRX6/KphXh39NddG1A5Z/Xjf3zrGg==",
757
+ "version": "1.0.2",
758
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-1.0.2.tgz",
759
+ "integrity": "sha512-VT3/ha2XDDP6mesDVbsv2W7AQDnJFbNSdmCezmpaod6Jcq8KnV/2EPzDPtQ7qYntPq2Esx67M/4/c1YbhmkPag==",
760
760
  "dev": true,
761
761
  "license": "MIT",
762
762
  "dependencies": {
763
- "@earendil-works/chord": "^1.0.0",
763
+ "@earendil-works/chord": "^1.0.2",
764
764
  "typebox": "1.3.27"
765
765
  },
766
766
  "engines": {
@@ -768,32 +768,32 @@
768
768
  }
769
769
  },
770
770
  "node_modules/@earendil-works/pi-server": {
771
- "version": "1.0.0",
772
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-server/-/pi-server-1.0.0.tgz",
773
- "integrity": "sha512-OQFRsX0K6WlYxmoiXHxf5ghXmVPU4F3vfnPGkZjViU1GxftPLtWsKb99MNqfDkRcEz9trb8PGL4HVbd1uDEJPQ==",
771
+ "version": "1.0.2",
772
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-server/-/pi-server-1.0.2.tgz",
773
+ "integrity": "sha512-Zqbs5GCLGDZNvjoqaNhK4QndiRsaotT9GP+s4x8ekj160inYf3A7Sw34kumg4nmzF15YcrYc3bOmAmseZ6imog==",
774
774
  "dev": true,
775
775
  "license": "MIT",
776
776
  "dependencies": {
777
- "@earendil-works/chord": "^1.0.0",
778
- "@earendil-works/pi-protocol": "^1.0.0"
777
+ "@earendil-works/chord": "^1.0.2",
778
+ "@earendil-works/pi-protocol": "^1.0.2"
779
779
  },
780
780
  "engines": {
781
781
  "node": ">=22.19.0"
782
782
  }
783
783
  },
784
784
  "node_modules/@earendil-works/pi-telemetry": {
785
- "version": "1.0.0",
786
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.0.tgz",
787
- "integrity": "sha512-WjNBj5TYIiPZFQEz2WlULcDwPLaKwIlmsKjVeYM+LJSbnSp38kWsHUJysIDGnu23IcLbKoPtywsvYfUJCeZePA==",
785
+ "version": "1.0.2",
786
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.2.tgz",
787
+ "integrity": "sha512-Ev5h9TE8nEXHCfRKhWj0qpUFhQgVqNteS95vsM2KNGRGm533vOO2ruDPaEwImBKPMBKXy4omz3D6V2cm41gLOQ==",
788
788
  "license": "MIT",
789
789
  "engines": {
790
790
  "node": ">=22.19.0"
791
791
  }
792
792
  },
793
793
  "node_modules/@earendil-works/pi-tui": {
794
- "version": "1.0.0",
795
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.0.0.tgz",
796
- "integrity": "sha512-JsT7kXnpZA2YOtQu6RyriyxEO0eJIzPyfiH09bH+OLN5+s18HYkwaUD/tBkjhnSfMu6/50CQPRYJagzSP6HdPw==",
794
+ "version": "1.0.2",
795
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.0.2.tgz",
796
+ "integrity": "sha512-ElfzjnckohEjzHK5Q5iOpqLpQ1YbM/c/XmjBdPVR5k4uoorQPnny5BtT+rvC0cAjVVCUOHWAWppust7FAaEsOQ==",
797
797
  "license": "MIT",
798
798
  "dependencies": {
799
799
  "get-east-asian-width": "1.6.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astralyn/pi",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -62,12 +62,12 @@
62
62
  "prepublishOnly": "npm run clean && npm run build"
63
63
  },
64
64
  "dependencies": {
65
- "@earendil-works/chord": "1.0.0",
66
- "@earendil-works/pi-agent-core": "1.0.0",
67
- "@earendil-works/pi-ai": "1.0.0",
68
- "@earendil-works/pi-codemode": "1.0.0",
69
- "@earendil-works/pi-mcp": "1.0.0",
70
- "@earendil-works/pi-tui": "1.0.0",
65
+ "@earendil-works/chord": "1.0.2",
66
+ "@earendil-works/pi-agent-core": "1.0.2",
67
+ "@earendil-works/pi-ai": "1.0.2",
68
+ "@earendil-works/pi-codemode": "1.0.2",
69
+ "@earendil-works/pi-mcp": "1.0.2",
70
+ "@earendil-works/pi-tui": "1.0.2",
71
71
  "@silvia-odwyer/photon-node": "0.3.4",
72
72
  "chalk": "6.0.0",
73
73
  "cross-spawn": "7.0.6",
@@ -89,10 +89,10 @@
89
89
  "@anthropic-ai/sandbox-runtime": "0.0.26",
90
90
  "@anthropic-ai/sdk": "0.52.0",
91
91
  "@biomejs/biome": "2.3.5",
92
- "@earendil-works/pi-client": "1.0.0",
93
- "@earendil-works/pi-durable": "1.0.0",
94
- "@earendil-works/pi-protocol": "1.0.0",
95
- "@earendil-works/pi-server": "1.0.0",
92
+ "@earendil-works/pi-client": "1.0.2",
93
+ "@earendil-works/pi-durable": "1.0.2",
94
+ "@earendil-works/pi-protocol": "1.0.2",
95
+ "@earendil-works/pi-server": "1.0.2",
96
96
  "@types/cross-spawn": "6.0.6",
97
97
  "@types/hosted-git-info": "3.0.5",
98
98
  "@types/ms": "2.1.0",
@@ -1,2 +0,0 @@
1
- import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url);
2
- import{convertResponsesMessages,convertResponsesTools,processResponsesStream}from"./chunk-6UFFVA7M.js";import{clampOpenAIPromptCacheKey}from"./chunk-APKJ4JGA.js";import{AzureOpenAI}from"./chunk-OO6DJ3CL.js";import{formatProviderError,normalizeProviderError}from"./chunk-FEZ5RM2B.js";import"./chunk-WWBSZG5V.js";import{retryProviderRequest}from"./chunk-GIG5IHES.js";import{buildBaseOptions,createGrammarToolInputProperties,getPiUserAgent}from"./chunk-Z2RKSI3O.js";import"./chunk-UP6RLTHQ.js";import{headersToRecord}from"./chunk-GCKVOFWP.js";import{getProviderEnvValue}from"./chunk-5FDOJRDS.js";import"./chunk-5B3S5DVL.js";import"./chunk-MPDALHNJ.js";import{clampThinkingLevel,getDeclaredTools,resolveTranscript,resolveTranscriptTools}from"./chunk-G4RY3GN7.js";import{AssistantMessageEventStream}from"./chunk-JI4WGISU.js";import"./chunk-4L3WN2XY.js";var DEFAULT_AZURE_API_VERSION="v1",AZURE_TOOL_CALL_PROVIDERS=new Set(["openai","openai-codex","opencode","azure-openai-responses"]),OPENAI_RESPONSES_MIN_OUTPUT_TOKENS=16;function parseDeploymentNameMap(value){let map=new Map;if(!value)return map;for(let entry of value.split(",")){let trimmed=entry.trim();if(!trimmed)continue;let[modelId,deploymentName]=trimmed.split("=",2);!modelId||!deploymentName||map.set(modelId.trim(),deploymentName.trim())}return map}function resolveDeploymentName(model,options){return options?.azureDeploymentName?options.azureDeploymentName:parseDeploymentNameMap(getProviderEnvValue("AZURE_OPENAI_DEPLOYMENT_NAME_MAP",options?.env)).get(model.id)||model.id}function formatAzureOpenAIError(error){return formatProviderError(normalizeProviderError(error),"Azure OpenAI API error")}var stream=(model,context,options)=>{let stream2=new AssistantMessageEventStream,normalizedContext=resolveTranscript(context,model.compat?.supportsMidConvoSystemMessages);return(async()=>{let deploymentName=resolveDeploymentName(model,options),output={role:"assistant",content:[],api:"azure-openai-responses",provider:model.provider,model:model.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"pending",timestamp:Date.now()};try{let apiKey=options?.apiKey;if(!apiKey)throw new Error(`No API key for provider: ${model.provider}`);let client=createClient(model,apiKey,options),grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(normalizedContext.messages),model.compat?.supportsOpenAIGrammarTools??!1),params=buildParams(model,normalizedContext,options,deploymentName,grammarToolInputProperties),nextParams=await options?.onPayload?.(params,model);nextParams!==void 0&&(params=nextParams);let requestOptions={...options?.signal?{signal:options.signal}:{},...options?.timeoutMs!==void 0?{timeout:options.timeoutMs}:{},maxRetries:0},{data:openaiStream,response}=await retryProviderRequest(()=>client.responses.create(params,requestOptions).withResponse(),{maxRetries:options?.maxRetries,maxRetryDelayMs:options?.maxRetryDelayMs,signal:options?.signal});if(await options?.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),stream2.push({type:"start",partial:output}),await processResponsesStream(openaiStream,output,stream2,model,{onProviderStreamEvent:options?.onProviderStreamEvent,grammarToolInputProperties}),options?.signal?.aborted)throw new Error("Request was aborted");if(output.stopReason==="pending")throw new Error("Azure OpenAI Responses stream ended without a stop reason");if(output.stopReason==="aborted"||output.stopReason==="error")throw new Error(output.errorMessage||"An unknown error occurred");stream2.push({type:"done",reason:output.stopReason,message:output}),stream2.end()}catch(error){for(let block of output.content)delete block.index,delete block.partialJson,delete block.customInput;output.stopReason=options?.signal?.aborted?"aborted":"error",output.errorMessage=formatAzureOpenAIError(error),stream2.push({type:"error",reason:output.stopReason,error:output}),stream2.end()}})(),stream2},streamSimple=(model,context,options)=>{let apiKey=options?.apiKey;if(!apiKey)throw new Error(`No API key for provider: ${model.provider}`);let base={...buildBaseOptions(model,context,options,apiKey),toolChoice:options?.toolChoice},clampedReasoning=options?.reasoning?clampThinkingLevel(model,options.reasoning):void 0;return stream(model,context,{...base,reasoningEffort:clampedReasoning==="off"?void 0:clampedReasoning})};function normalizeAzureBaseUrl(baseUrl){let trimmed=baseUrl.trim().replace(/\/+$/,""),url;try{url=new URL(trimmed)}catch{throw new Error(`Invalid Azure OpenAI base URL: ${baseUrl}`)}let isAzureHost=url.hostname.endsWith(".openai.azure.com")||url.hostname.endsWith(".cognitiveservices.azure.com")||url.hostname.endsWith(".ai.azure.com"),normalizedPath=url.pathname.replace(/\/+$/,"");return isAzureHost&&(normalizedPath===""||normalizedPath==="/"||normalizedPath==="/openai"||normalizedPath==="/openai/v1/responses")&&(url.pathname="/openai/v1",url.search=""),url.toString().replace(/\/+$/,"")}function buildDefaultBaseUrl(resourceName){return`https://${resourceName}.openai.azure.com/openai/v1`}function resolveAzureConfig(model,options){let apiVersion=options?.azureApiVersion||getProviderEnvValue("AZURE_OPENAI_API_VERSION",options?.env)||DEFAULT_AZURE_API_VERSION,baseUrl=options?.azureBaseUrl?.trim()||getProviderEnvValue("AZURE_OPENAI_BASE_URL",options?.env)?.trim()||void 0,resourceName=options?.azureResourceName||getProviderEnvValue("AZURE_OPENAI_RESOURCE_NAME",options?.env),resolvedBaseUrl=baseUrl;if(!resolvedBaseUrl&&resourceName&&(resolvedBaseUrl=buildDefaultBaseUrl(resourceName)),!resolvedBaseUrl&&model.baseUrl&&(resolvedBaseUrl=model.baseUrl),!resolvedBaseUrl)throw new Error("Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.");return{baseUrl:normalizeAzureBaseUrl(resolvedBaseUrl),apiVersion}}function createClient(model,apiKey,options){let headers={"User-Agent":getPiUserAgent(),...model.headers};options?.headers&&Object.assign(headers,options.headers);let{baseUrl,apiVersion}=resolveAzureConfig(model,options);return new AzureOpenAI({apiKey,apiVersion,dangerouslyAllowBrowser:!0,fetch:options?.fetch,defaultHeaders:headers,baseURL:baseUrl})}function buildParams(model,context,options,deploymentName,grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(context.messages),model.compat?.supportsOpenAIGrammarTools??!1)){let supportsAdditionalTools=model.compat?.supportsAdditionalTools??!1,supportsToolSearch=model.compat?.supportsToolSearch??!1,transcriptTools=resolveTranscriptTools(context.messages,supportsAdditionalTools||supportsToolSearch),messages=convertResponsesMessages(model,context,AZURE_TOOL_CALL_PROVIDERS,{grammarToolInputProperties,supportsMidConvoSystemMessages:model.compat?.supportsMidConvoSystemMessages??!1,supportsAdditionalTools,supportsToolSearch,toolOptions:{supportsStrictMode:model.compat?.supportsStrictMode??!0,supportsOpenAIGrammarTools:model.compat?.supportsOpenAIGrammarTools??!1}}),params={model:deploymentName,input:messages,stream:!0,prompt_cache_key:clampOpenAIPromptCacheKey(options?.sessionId),store:!1};if(options?.maxTokens&&(params.max_output_tokens=Math.max(options.maxTokens,OPENAI_RESPONSES_MIN_OUTPUT_TOKENS)),options?.temperature!==void 0&&(params.temperature=options?.temperature),transcriptTools.requestTools.length>0&&(params.tools=convertResponsesTools(transcriptTools.requestTools,{supportsStrictMode:model.compat?.supportsStrictMode??!0,supportsOpenAIGrammarTools:model.compat?.supportsOpenAIGrammarTools??!1})),options?.toolChoice!==void 0&&(params.tool_choice=options.toolChoice),model.reasoning)if(options?.reasoningEffort||options?.reasoningSummary){let effort=options?.reasoningEffort?model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort:"medium";params.reasoning={effort,summary:options?.reasoningSummary||"auto"},params.include=["reasoning.encrypted_content"]}else model.thinkingLevelMap?.off!==null&&(params.reasoning={effort:model.thinkingLevelMap?.off??"none"});return Object.assign(params,model.samplingParams,options?.samplingParams),params}export{stream,streamSimple};