@astralyn/pi 0.86.1 → 0.87.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 (125) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/bundle/chunks/{anthropic-messages-R2LYJUDD.js → anthropic-messages-XWFTZP2N.js} +1 -1
  3. package/dist/bundle/chunks/{chunk-GTBMYBFG.js → chunk-772GXEFD.js} +50 -44
  4. package/dist/bundle/chunks/chunk-CDMUKIXY.js +2 -0
  5. package/dist/bundle/chunks/github-copilot.js +1 -1
  6. package/dist/bundle/chunks/{openai-completions-6SMWQWQN.js → openai-completions-SHS3CAEL.js} +2 -2
  7. package/dist/bundle/chunks/{virtual-modules-OHUZ2T7X.js → virtual-modules-LQO2MG3T.js} +1 -1
  8. package/dist/bundle/cli.js +1 -1
  9. package/dist/bundle/index.js +1 -1
  10. package/dist/bundle/rpc-entry.js +1 -1
  11. package/dist/cli/args.d.ts.map +1 -1
  12. package/dist/cli/args.js +14 -4
  13. package/dist/cli/args.js.map +1 -1
  14. package/dist/cli/file-processor.d.ts +1 -1
  15. package/dist/cli/file-processor.d.ts.map +1 -1
  16. package/dist/cli/file-processor.js.map +1 -1
  17. package/dist/core/agent-session-runtime.js +1 -1
  18. package/dist/core/agent-session-runtime.js.map +1 -1
  19. package/dist/core/agent-session.d.ts +47 -4
  20. package/dist/core/agent-session.d.ts.map +1 -1
  21. package/dist/core/agent-session.js +476 -139
  22. package/dist/core/agent-session.js.map +1 -1
  23. package/dist/core/background/service.d.ts +9 -0
  24. package/dist/core/background/service.d.ts.map +1 -1
  25. package/dist/core/background/service.js +13 -1
  26. package/dist/core/background/service.js.map +1 -1
  27. package/dist/core/background/session.d.ts +5 -0
  28. package/dist/core/background/session.d.ts.map +1 -1
  29. package/dist/core/background/session.js +2 -1
  30. package/dist/core/background/session.js.map +1 -1
  31. package/dist/core/cache-warmer.d.ts +1 -0
  32. package/dist/core/cache-warmer.d.ts.map +1 -1
  33. package/dist/core/cache-warmer.js +15 -1
  34. package/dist/core/cache-warmer.js.map +1 -1
  35. package/dist/core/compaction/compaction.d.ts +3 -1
  36. package/dist/core/compaction/compaction.d.ts.map +1 -1
  37. package/dist/core/compaction/compaction.js +155 -57
  38. package/dist/core/compaction/compaction.js.map +1 -1
  39. package/dist/core/crash-log.d.ts +5 -0
  40. package/dist/core/crash-log.d.ts.map +1 -1
  41. package/dist/core/crash-log.js +68 -0
  42. package/dist/core/crash-log.js.map +1 -1
  43. package/dist/core/export-html/template.js +6 -1
  44. package/dist/core/extensions/index.d.ts +1 -1
  45. package/dist/core/extensions/index.d.ts.map +1 -1
  46. package/dist/core/extensions/index.js.map +1 -1
  47. package/dist/core/extensions/runner.d.ts +16 -3
  48. package/dist/core/extensions/runner.d.ts.map +1 -1
  49. package/dist/core/extensions/runner.js +110 -5
  50. package/dist/core/extensions/runner.js.map +1 -1
  51. package/dist/core/extensions/types.d.ts +77 -6
  52. package/dist/core/extensions/types.d.ts.map +1 -1
  53. package/dist/core/extensions/types.js.map +1 -1
  54. package/dist/core/index.d.ts +1 -1
  55. package/dist/core/index.d.ts.map +1 -1
  56. package/dist/core/index.js.map +1 -1
  57. package/dist/core/model-config.d.ts +52 -0
  58. package/dist/core/model-config.d.ts.map +1 -1
  59. package/dist/core/model-config.js +16 -0
  60. package/dist/core/model-config.js.map +1 -1
  61. package/dist/core/model-resolver.js +1 -1
  62. package/dist/core/model-resolver.js.map +1 -1
  63. package/dist/core/prompt-templates.d.ts +6 -1
  64. package/dist/core/prompt-templates.d.ts.map +1 -1
  65. package/dist/core/prompt-templates.js +61 -35
  66. package/dist/core/prompt-templates.js.map +1 -1
  67. package/dist/core/provider-composer.d.ts +1 -0
  68. package/dist/core/provider-composer.d.ts.map +1 -1
  69. package/dist/core/provider-composer.js +19 -0
  70. package/dist/core/provider-composer.js.map +1 -1
  71. package/dist/core/resource-loader.d.ts.map +1 -1
  72. package/dist/core/resource-loader.js +6 -2
  73. package/dist/core/resource-loader.js.map +1 -1
  74. package/dist/core/sdk.d.ts.map +1 -1
  75. package/dist/core/sdk.js +3 -4
  76. package/dist/core/sdk.js.map +1 -1
  77. package/dist/core/session-manager.d.ts +36 -9
  78. package/dist/core/session-manager.d.ts.map +1 -1
  79. package/dist/core/session-manager.js +97 -7
  80. package/dist/core/session-manager.js.map +1 -1
  81. package/dist/core/tools/read.d.ts +4 -1
  82. package/dist/core/tools/read.d.ts.map +1 -1
  83. package/dist/core/tools/read.js +5 -1
  84. package/dist/core/tools/read.js.map +1 -1
  85. package/dist/extensions/btw/agent.d.ts.map +1 -1
  86. package/dist/extensions/btw/agent.js +8 -5
  87. package/dist/extensions/btw/agent.js.map +1 -1
  88. package/dist/index.d.ts +2 -2
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +1 -1
  91. package/dist/index.js.map +1 -1
  92. package/dist/main.d.ts.map +1 -1
  93. package/dist/main.js +4 -3
  94. package/dist/main.js.map +1 -1
  95. package/dist/modes/interactive/bug-report.d.ts.map +1 -1
  96. package/dist/modes/interactive/bug-report.js +4 -0
  97. package/dist/modes/interactive/bug-report.js.map +1 -1
  98. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  99. package/dist/modes/interactive/components/tree-selector.js +7 -0
  100. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  101. package/dist/modes/interactive/interactive-mode.d.ts +3 -0
  102. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  103. package/dist/modes/interactive/interactive-mode.js +64 -2
  104. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  105. package/dist/utils/mime.js +1 -1
  106. package/dist/utils/mime.js.map +1 -1
  107. package/dist/utils/tool-result-images.d.ts +3 -1
  108. package/dist/utils/tool-result-images.d.ts.map +1 -1
  109. package/dist/utils/tool-result-images.js +4 -1
  110. package/dist/utils/tool-result-images.js.map +1 -1
  111. package/docs/bundled/extensions/background.md +3 -3
  112. package/docs/bundled/extensions/subagent.md +1 -1
  113. package/docs/compaction.md +24 -5
  114. package/docs/extensions.md +72 -8
  115. package/docs/models.md +30 -1
  116. package/docs/sdk.md +15 -4
  117. package/docs/session-format.md +25 -4
  118. package/docs/usage.md +3 -0
  119. package/examples/README.md +11 -1
  120. package/examples/plugins/pi-example-plugin/src/session.ts +3 -2
  121. package/examples/rpc-client.ts +35 -0
  122. package/examples/rpc-extension-ui.ts +25 -5
  123. package/npm-shrinkwrap.json +43 -43
  124. package/package.json +8 -8
  125. package/dist/bundle/chunks/chunk-DAEM5JIZ.js +0 -2
@@ -1,9 +1,18 @@
1
1
  # Examples
2
2
 
3
- Example code for the `@astralyn/pi` SDK and extensions.
3
+ Example code for the `@astralyn/pi` SDK, process integration, and extensions.
4
4
 
5
5
  ## Standalone
6
6
 
7
+ ### [rpc-client.ts](rpc-client.ts)
8
+ Runs one prompt through a Pi RPC child process with the typed `RpcClient`: it starts Pi, streams events, and waits for the run to settle.
9
+
10
+ Build the package before running it from a repository checkout:
11
+
12
+ ```bash
13
+ npx tsx examples/rpc-client.ts "Explain this repository"
14
+ ```
15
+
7
16
  ### [rpc-extension-ui.ts](rpc-extension-ui.ts)
8
17
  A lightweight RPC chat client that handles extension UI requests; pair it with [the RPC demo extension](extensions/rpc-demo.ts).
9
18
 
@@ -26,5 +35,6 @@ Example extensions demonstrating:
26
35
  ## Documentation
27
36
 
28
37
  - [SDK Reference](sdk/README.md)
38
+ - [RPC Protocol](../docs/rpc.md)
29
39
  - [Extensions Documentation](../docs/extensions.md)
30
40
  - [Skills Documentation](../docs/skills.md)
@@ -16,8 +16,9 @@ export default defineFacet({
16
16
  },
17
17
  });
18
18
  env.onActivate(() => {
19
- workerActivations.state.count += 1;
20
- workerActivations.publish(BACKGROUND_CONTEXT);
19
+ workerActivations.change(BACKGROUND_CONTEXT, (draft) => {
20
+ draft.count += 1;
21
+ });
21
22
  });
22
23
  },
23
24
  });
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Run one prompt through a Pi RPC child process.
3
+ *
4
+ * Build the coding-agent package first, then run:
5
+ * npx tsx examples/rpc-client.ts "Explain this repository"
6
+ */
7
+
8
+ import { dirname, join } from "node:path";
9
+ import { fileURLToPath } from "node:url";
10
+ import { RpcClient } from "@astralyn/pi";
11
+
12
+ const exampleDirectory = dirname(fileURLToPath(import.meta.url));
13
+ const prompt = process.argv.slice(2).join(" ") || "Explain this repository in one paragraph.";
14
+
15
+ const client = new RpcClient({
16
+ cliPath: join(exampleDirectory, "../dist/cli.js"),
17
+ args: ["--no-session"],
18
+ });
19
+
20
+ const unsubscribe = client.onEvent((event) => {
21
+ if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
22
+ process.stdout.write(event.assistantMessageEvent.delta);
23
+ } else if (event.type === "tool_execution_start") {
24
+ process.stderr.write(`\n[tool: ${event.toolName}]\n`);
25
+ }
26
+ });
27
+
28
+ try {
29
+ await client.start();
30
+ await client.promptAndWait(prompt);
31
+ process.stdout.write("\n");
32
+ } finally {
33
+ unsubscribe();
34
+ await client.stop();
35
+ }
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { spawn } from "node:child_process";
18
18
  import { dirname, join } from "node:path";
19
- import * as readline from "node:readline";
19
+ import { StringDecoder } from "node:string_decoder";
20
20
  import { fileURLToPath } from "node:url";
21
21
  import {
22
22
  type Component,
@@ -258,7 +258,7 @@ async function main() {
258
258
 
259
259
  const agent = spawn(
260
260
  "node",
261
- [cliPath, "--mode", "rpc", "--no-session", "--no-extension", "--extension", extensionPath],
261
+ [cliPath, "--mode", "rpc", "--no-session", "--no-extensions", "--extension", extensionPath],
262
262
  { stdio: ["pipe", "pipe", "pipe"] },
263
263
  );
264
264
 
@@ -518,9 +518,7 @@ async function main() {
518
518
 
519
519
  // -- Process agent stdout --
520
520
 
521
- const stdoutRl = readline.createInterface({ input: agent.stdout!, terminal: false });
522
-
523
- stdoutRl.on("line", (line) => {
521
+ function handleAgentLine(line: string): void {
524
522
  let data: Record<string, unknown>;
525
523
  try {
526
524
  data = JSON.parse(line);
@@ -583,6 +581,28 @@ async function main() {
583
581
  tui.requestRender();
584
582
  return;
585
583
  }
584
+ }
585
+
586
+ const stdoutDecoder = new StringDecoder("utf8");
587
+ let stdoutBuffer = "";
588
+
589
+ agent.stdout!.on("data", (chunk: Buffer) => {
590
+ stdoutBuffer += stdoutDecoder.write(chunk);
591
+ while (true) {
592
+ const newlineIndex = stdoutBuffer.indexOf("\n");
593
+ if (newlineIndex === -1) break;
594
+
595
+ const line = stdoutBuffer.slice(0, newlineIndex);
596
+ stdoutBuffer = stdoutBuffer.slice(newlineIndex + 1);
597
+ handleAgentLine(line.endsWith("\r") ? line.slice(0, -1) : line);
598
+ }
599
+ });
600
+
601
+ agent.stdout!.on("end", () => {
602
+ stdoutBuffer += stdoutDecoder.end();
603
+ if (stdoutBuffer.length > 0) {
604
+ handleAgentLine(stdoutBuffer.endsWith("\r") ? stdoutBuffer.slice(0, -1) : stdoutBuffer);
605
+ }
586
606
  });
587
607
 
588
608
  // -- User input --
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@astralyn/pi",
3
- "version": "0.86.1",
3
+ "version": "0.87.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@astralyn/pi",
9
- "version": "0.86.1",
9
+ "version": "0.87.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@earendil-works/chord": "0.86.1",
13
- "@earendil-works/pi-agent-core": "0.86.1",
14
- "@earendil-works/pi-ai": "0.86.1",
15
- "@earendil-works/pi-tui": "0.86.1",
12
+ "@earendil-works/chord": "0.87.1",
13
+ "@earendil-works/pi-agent-core": "0.87.1",
14
+ "@earendil-works/pi-ai": "0.87.1",
15
+ "@earendil-works/pi-tui": "0.87.1",
16
16
  "@silvia-odwyer/photon-node": "0.3.4",
17
17
  "chalk": "6.0.0",
18
18
  "cross-spawn": "7.0.6",
@@ -36,9 +36,9 @@
36
36
  "@anthropic-ai/sandbox-runtime": "0.0.26",
37
37
  "@anthropic-ai/sdk": "0.52.0",
38
38
  "@biomejs/biome": "2.3.5",
39
- "@earendil-works/pi-client": "0.86.1",
40
- "@earendil-works/pi-protocol": "0.86.1",
41
- "@earendil-works/pi-server": "0.86.1",
39
+ "@earendil-works/pi-client": "0.87.1",
40
+ "@earendil-works/pi-protocol": "0.87.1",
41
+ "@earendil-works/pi-server": "0.87.1",
42
42
  "@types/cross-spawn": "6.0.6",
43
43
  "@types/hosted-git-info": "3.0.5",
44
44
  "@types/ms": "2.1.0",
@@ -626,9 +626,9 @@
626
626
  }
627
627
  },
628
628
  "node_modules/@earendil-works/chord": {
629
- "version": "0.86.1",
630
- "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-0.86.1.tgz",
631
- "integrity": "sha512-GzUr5n4tFBHUYxN9CjcRHK8QWo9tbxNrZu6iWPQ+PFiFrLASvSZOKeAVAgh3gHv/t0X5OvUpFlrMQ/nEFfCYpg==",
629
+ "version": "0.87.1",
630
+ "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-0.87.1.tgz",
631
+ "integrity": "sha512-bg7IkJGFcEaMqqYgOGUiq5Ky9RghpRfrlZ8I/v/1b4bBZ02A7t3E+6uhPRbadwWb/kWsnVFbZsqOKRN4a3LLCg==",
632
632
  "license": "MIT",
633
633
  "dependencies": {
634
634
  "esbuild": "0.28.2"
@@ -638,14 +638,14 @@
638
638
  }
639
639
  },
640
640
  "node_modules/@earendil-works/pi-agent-core": {
641
- "version": "0.86.1",
642
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.86.1.tgz",
643
- "integrity": "sha512-8TbBzhYsDeu5V1Zl2NsyrBqJAzX1EiEL3Np3ZjGpy0pSDdGRVOpcyW1qruLqfWmEqGcnxmvgnTMLS/wJNZO2XQ==",
641
+ "version": "0.87.1",
642
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.87.1.tgz",
643
+ "integrity": "sha512-Zev3B0HK7YS5A4EZQ2XnEqiJuirx6QBiltJ+LpmjV5a/+2IU0cfKtIfnkNkORK707XOvKBY2WRtk7cAwHpbh2Q==",
644
644
  "license": "MIT",
645
645
  "dependencies": {
646
- "@earendil-works/chord": "^0.86.1",
647
- "@earendil-works/pi-ai": "^0.86.1",
648
- "@earendil-works/pi-telemetry": "^0.86.1",
646
+ "@earendil-works/chord": "^0.87.1",
647
+ "@earendil-works/pi-ai": "^0.87.1",
648
+ "@earendil-works/pi-telemetry": "^0.87.1",
649
649
  "diff": "8.0.4",
650
650
  "ignore": "7.0.8",
651
651
  "typebox": "1.3.27",
@@ -656,14 +656,14 @@
656
656
  }
657
657
  },
658
658
  "node_modules/@earendil-works/pi-ai": {
659
- "version": "0.86.1",
660
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.86.1.tgz",
661
- "integrity": "sha512-1XHhI6D/fyQdsBieHC/E/4zGKVOoGe4yDyX67VXvzoYkFsX/qE7NpZE7E1RC8e6Bz8B9oG/P+MQFXikv2/BGEg==",
659
+ "version": "0.87.1",
660
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.87.1.tgz",
661
+ "integrity": "sha512-X/3PfQBnnoeVdO9Cv8zHghUMglzlgNZYGNzoPnbRoGnHl3Rw3TlA2UKSUB7BRHUOxMryHXYa8dnjWZlbRheDZA==",
662
662
  "license": "MIT",
663
663
  "dependencies": {
664
664
  "@anthropic-ai/sdk": "0.124.0",
665
665
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
666
- "@earendil-works/pi-telemetry": "^0.86.1",
666
+ "@earendil-works/pi-telemetry": "^0.87.1",
667
667
  "@google/genai": "2.21.0",
668
668
  "@smithy/node-http-handler": "4.12.1",
669
669
  "http-proxy-agent": "9.1.0",
@@ -701,27 +701,27 @@
701
701
  }
702
702
  },
703
703
  "node_modules/@earendil-works/pi-client": {
704
- "version": "0.86.1",
705
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-0.86.1.tgz",
706
- "integrity": "sha512-y1Pv6sRtki+I7CS29b10x/bp5NUF4ohZ4KFiy+PAPoiyHoW5D7KLTFdt8o1HgyEsNtyp45/nXfct/67RncU9Uw==",
704
+ "version": "0.87.1",
705
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-0.87.1.tgz",
706
+ "integrity": "sha512-x8dfZ7ppAao9SDnZvD5/DErVdq2fI7hg4lFj7qEhtgo6wimrRafGSLsqLklFVjb6kxU2W3j9F4RZz0rRcb0cwA==",
707
707
  "dev": true,
708
708
  "license": "MIT",
709
709
  "dependencies": {
710
- "@earendil-works/chord": "^0.86.1",
711
- "@earendil-works/pi-protocol": "^0.86.1"
710
+ "@earendil-works/chord": "^0.87.1",
711
+ "@earendil-works/pi-protocol": "^0.87.1"
712
712
  },
713
713
  "engines": {
714
714
  "node": ">=22.19.0"
715
715
  }
716
716
  },
717
717
  "node_modules/@earendil-works/pi-protocol": {
718
- "version": "0.86.1",
719
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-0.86.1.tgz",
720
- "integrity": "sha512-D0znqBRz8EIJ8j9RH0+PrulIukbXqY7KHrNF8tsRIvitXVCL1dmisqdLCEz9PFvmopVKktj7QuuOicPObjHYeA==",
718
+ "version": "0.87.1",
719
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-0.87.1.tgz",
720
+ "integrity": "sha512-48WVjryAIiKOJXnKgO15h2MT/oeH5uf0S4DykcVj3ZrxMTDSGxcUaS5VtvHtFQ1rZSSIjkVcblE13k0GksBuoQ==",
721
721
  "dev": true,
722
722
  "license": "MIT",
723
723
  "dependencies": {
724
- "@earendil-works/chord": "^0.86.1",
724
+ "@earendil-works/chord": "^0.87.1",
725
725
  "typebox": "1.3.27"
726
726
  },
727
727
  "engines": {
@@ -729,33 +729,33 @@
729
729
  }
730
730
  },
731
731
  "node_modules/@earendil-works/pi-server": {
732
- "version": "0.86.1",
733
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-server/-/pi-server-0.86.1.tgz",
734
- "integrity": "sha512-fyevzqjuOQjqtKX1igY7i59cqHpIlGVQ+idHEtzZGScvaIKaXufZIjYqdxXG41J8fjasH7MS5OBD9ix0s5nnmQ==",
732
+ "version": "0.87.1",
733
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-server/-/pi-server-0.87.1.tgz",
734
+ "integrity": "sha512-EZYQ6mSOv7IyDcWoBflNGJcyIBjTnQY9W4z1tF3vOMY5xbksHOsVVzU9Kh49z8iIXGYNawKZSyjaWi9OJjO7Sw==",
735
735
  "dev": true,
736
736
  "license": "MIT",
737
737
  "dependencies": {
738
- "@earendil-works/chord": "^0.86.1",
739
- "@earendil-works/pi-agent-core": "^0.86.1",
740
- "@earendil-works/pi-protocol": "^0.86.1"
738
+ "@earendil-works/chord": "^0.87.1",
739
+ "@earendil-works/pi-agent-core": "^0.87.1",
740
+ "@earendil-works/pi-protocol": "^0.87.1"
741
741
  },
742
742
  "engines": {
743
743
  "node": ">=22.19.0"
744
744
  }
745
745
  },
746
746
  "node_modules/@earendil-works/pi-telemetry": {
747
- "version": "0.86.1",
748
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.86.1.tgz",
749
- "integrity": "sha512-SOcEqOS3oVGgKeahs2jHB906d8hFjuLP+RBee8xKYMRgw5KAeWHNg+YABfL0ALlp3Bt6tW4b632MLghc3vnTog==",
747
+ "version": "0.87.1",
748
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.87.1.tgz",
749
+ "integrity": "sha512-MC6TRQH5lgMXpcN+Vku2WMI2T8BsiUPzMQHGo81uqFZD3/9O79WWJAysEDGuzduP6R4tvtgwMLwmqIxynM10JQ==",
750
750
  "license": "MIT",
751
751
  "engines": {
752
752
  "node": ">=22.19.0"
753
753
  }
754
754
  },
755
755
  "node_modules/@earendil-works/pi-tui": {
756
- "version": "0.86.1",
757
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.86.1.tgz",
758
- "integrity": "sha512-FU/zU/zG4RWokcZt+BVXXcieWi5ggvYnWP2kkB5XXjMaHRoy5BDhcZJ9JAnLTN9MwrCRoXgPQxOI0bFqwYeZkQ==",
756
+ "version": "0.87.1",
757
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.87.1.tgz",
758
+ "integrity": "sha512-YEH2vRyOeiO7hhN6j6AE6YwKSq2Kz2f3XR8bj1TbR+aGE/JsnY1hLPMI2pvaZfRM1n9Y00tejxFQ4zbzvF7nkQ==",
759
759
  "license": "MIT",
760
760
  "dependencies": {
761
761
  "get-east-asian-width": "1.6.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astralyn/pi",
3
- "version": "0.86.1",
3
+ "version": "0.87.1",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -62,10 +62,10 @@
62
62
  "prepublishOnly": "npm run clean && npm run build"
63
63
  },
64
64
  "dependencies": {
65
- "@earendil-works/chord": "0.86.1",
66
- "@earendil-works/pi-agent-core": "0.86.1",
67
- "@earendil-works/pi-ai": "0.86.1",
68
- "@earendil-works/pi-tui": "0.86.1",
65
+ "@earendil-works/chord": "0.87.1",
66
+ "@earendil-works/pi-agent-core": "0.87.1",
67
+ "@earendil-works/pi-ai": "0.87.1",
68
+ "@earendil-works/pi-tui": "0.87.1",
69
69
  "@silvia-odwyer/photon-node": "0.3.4",
70
70
  "chalk": "6.0.0",
71
71
  "cross-spawn": "7.0.6",
@@ -86,9 +86,9 @@
86
86
  "@anthropic-ai/sandbox-runtime": "0.0.26",
87
87
  "@anthropic-ai/sdk": "0.52.0",
88
88
  "@biomejs/biome": "2.3.5",
89
- "@earendil-works/pi-client": "0.86.1",
90
- "@earendil-works/pi-protocol": "0.86.1",
91
- "@earendil-works/pi-server": "0.86.1",
89
+ "@earendil-works/pi-client": "0.87.1",
90
+ "@earendil-works/pi-protocol": "0.87.1",
91
+ "@earendil-works/pi-server": "0.87.1",
92
92
  "@types/cross-spawn": "6.0.6",
93
93
  "@types/hosted-git-info": "3.0.5",
94
94
  "@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{AgentSession,AgentSessionRuntime,ArminComponent,AssistantMessageComponent,BackgroundService,BashExecutionComponent,BorderedLoader,BranchSummaryMessageComponent,CONFIG_DIR_NAME,CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent,Container,CredentialSynchronizationError,CustomEditor,CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS,DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES,DefaultPackageManager,DefaultResourceLoader,DynamicBorder,ExtensionEditorComponent,ExtensionInputComponent,ExtensionRunner,ExtensionSelectorComponent,FooterComponent,InteractiveMode,LoginDialogComponent,ModelRegistry,ModelRuntime,ModelSelectorComponent,OAuthSelectorComponent,ProjectTrustStore,RpcClient,SelectList,SessionManager,SessionSelectorComponent,SettingsManager,SettingsSelectorComponent,SkillInvocationMessageComponent,Theme,ThinkingSelectorComponent,ToolExecutionComponent,TreeSelectorComponent,UserMessageComponent,UserMessageSelectorComponent,VERSION,buildContextEntries,buildSessionContext,calculateContextTokens,collectEntriesForBranchSummary,compact,convertToLlm,convertToPng,copyToClipboard,createAgentSession,createAgentSessionFromServices,createAgentSessionRuntime,createAgentSessionServices,createBashTool,createBashToolDefinition,createCodingTools,createEditTool,createEditToolDefinition,createEventBus,createExtensionRuntime,createFindTool,createFindToolDefinition,createGrepTool,createGrepToolDefinition,createLocalBashOperations,createLocalPowerShellOperations,createLsTool,createLsToolDefinition,createPowerShellTool,createPowerShellToolDefinition,createReadOnlyTools,createReadTool,createReadToolDefinition,createSyntheticSourceInfo,createWriteTool,createWriteToolDefinition,defineTool,detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions,estimateTokens,findCutPoint,findTurnStartIndex,formatDimensionNote,formatSize,formatSkillsForPrompt,generateBranchSummary,generateDiffString,generateSummary,generateSummaryWithUsage,generateUnifiedPatch,getAgentDir,getAvailableThemes,getDocsPath,getExamplesPath,getLanguageFromPath,getLastAssistantUsage,getLatestCompactionEntry,getMarkdownTheme,getPackageDir,getPowerShellConfig,getReadmePath,getSelectListTheme,getSettingsListTheme,getShellConfig,hasTrustRequiringProjectResources,highlightCode,initTheme,isBashToolResult,isEditToolResult,isFindToolResult,isGrepToolResult,isLsToolResult,isPowerShellToolResult,isReadToolResult,isToolCallEventType,isWriteToolResult,keyHint,keyText,loadProjectContextFiles,loadSkills,loadSkillsFromDir,main,migrateSessionEntries,parseArgs,parseFrontmatter,parseSessionEntries,parseSkillBlock,prepareBranchEntries,rawKeyHint,readStoredCredential,renderDiff,resizeImage,resolveCliModel,resolveModelScopeWithDiagnostics,runPrintMode,runRpcMode,serializeConversation,sessionEntryToContextMessages,shouldCompact,stripFrontmatter,truncateHead,truncateLine,truncateTail,truncateToVisualLines,withFileMutationQueue,wrapRegisteredTool,wrapRegisteredTools}from"./chunk-GTBMYBFG.js";import{__export}from"./chunk-4L3WN2XY.js";var dist_exports={};__export(dist_exports,{AgentSession:()=>AgentSession,AgentSessionRuntime:()=>AgentSessionRuntime,ArminComponent:()=>ArminComponent,AssistantMessageComponent:()=>AssistantMessageComponent,BackgroundService:()=>BackgroundService,BashExecutionComponent:()=>BashExecutionComponent,BorderedLoader:()=>BorderedLoader,BranchSummaryMessageComponent:()=>BranchSummaryMessageComponent,CONFIG_DIR_NAME:()=>CONFIG_DIR_NAME,CURRENT_SESSION_VERSION:()=>CURRENT_SESSION_VERSION,CompactionSummaryMessageComponent:()=>CompactionSummaryMessageComponent,CredentialSynchronizationError:()=>CredentialSynchronizationError,CustomEditor:()=>CustomEditor,CustomMessageComponent:()=>CustomMessageComponent,DEFAULT_COMPACTION_SETTINGS:()=>DEFAULT_COMPACTION_SETTINGS,DEFAULT_MAX_BYTES:()=>DEFAULT_MAX_BYTES,DEFAULT_MAX_LINES:()=>DEFAULT_MAX_LINES,DefaultPackageManager:()=>DefaultPackageManager,DefaultResourceLoader:()=>DefaultResourceLoader,DynamicBorder:()=>DynamicBorder,ExtensionEditorComponent:()=>ExtensionEditorComponent,ExtensionInputComponent:()=>ExtensionInputComponent,ExtensionRunner:()=>ExtensionRunner,ExtensionSelectorComponent:()=>ExtensionSelectorComponent,FooterComponent:()=>FooterComponent,InteractiveMode:()=>InteractiveMode,LoginDialogComponent:()=>LoginDialogComponent,ModelRegistry:()=>ModelRegistry,ModelRuntime:()=>ModelRuntime,ModelSelectorComponent:()=>ModelSelectorComponent,OAuthSelectorComponent:()=>OAuthSelectorComponent,ProjectTrustStore:()=>ProjectTrustStore,RpcClient:()=>RpcClient,SessionManager:()=>SessionManager,SessionSelectorComponent:()=>SessionSelectorComponent,SettingsManager:()=>SettingsManager,SettingsSelectorComponent:()=>SettingsSelectorComponent,ShowImagesSelectorComponent:()=>ShowImagesSelectorComponent,SkillInvocationMessageComponent:()=>SkillInvocationMessageComponent,Theme:()=>Theme,ThemeSelectorComponent:()=>ThemeSelectorComponent,ThinkingSelectorComponent:()=>ThinkingSelectorComponent,ToolExecutionComponent:()=>ToolExecutionComponent,TreeSelectorComponent:()=>TreeSelectorComponent,UserMessageComponent:()=>UserMessageComponent,UserMessageSelectorComponent:()=>UserMessageSelectorComponent,VERSION:()=>VERSION,buildContextEntries:()=>buildContextEntries,buildSessionContext:()=>buildSessionContext,calculateContextTokens:()=>calculateContextTokens,collectEntriesForBranchSummary:()=>collectEntriesForBranchSummary,compact:()=>compact,convertToLlm:()=>convertToLlm,convertToPng:()=>convertToPng,copyToClipboard:()=>copyToClipboard,createAgentSession:()=>createAgentSession,createAgentSessionFromServices:()=>createAgentSessionFromServices,createAgentSessionRuntime:()=>createAgentSessionRuntime,createAgentSessionServices:()=>createAgentSessionServices,createBashTool:()=>createBashTool,createBashToolDefinition:()=>createBashToolDefinition,createCodingTools:()=>createCodingTools,createEditTool:()=>createEditTool,createEditToolDefinition:()=>createEditToolDefinition,createEventBus:()=>createEventBus,createExtensionRuntime:()=>createExtensionRuntime,createFindTool:()=>createFindTool,createFindToolDefinition:()=>createFindToolDefinition,createGrepTool:()=>createGrepTool,createGrepToolDefinition:()=>createGrepToolDefinition,createLocalBashOperations:()=>createLocalBashOperations,createLocalPowerShellOperations:()=>createLocalPowerShellOperations,createLsTool:()=>createLsTool,createLsToolDefinition:()=>createLsToolDefinition,createPowerShellTool:()=>createPowerShellTool,createPowerShellToolDefinition:()=>createPowerShellToolDefinition,createReadOnlyTools:()=>createReadOnlyTools,createReadTool:()=>createReadTool,createReadToolDefinition:()=>createReadToolDefinition,createSyntheticSourceInfo:()=>createSyntheticSourceInfo,createWriteTool:()=>createWriteTool,createWriteToolDefinition:()=>createWriteToolDefinition,defineTool:()=>defineTool,detectSupportedImageMimeTypeFromFile:()=>detectSupportedImageMimeTypeFromFile,discoverAndLoadExtensions:()=>discoverAndLoadExtensions,estimateTokens:()=>estimateTokens,findCutPoint:()=>findCutPoint,findTurnStartIndex:()=>findTurnStartIndex,formatDimensionNote:()=>formatDimensionNote,formatSize:()=>formatSize,formatSkillsForPrompt:()=>formatSkillsForPrompt,generateBranchSummary:()=>generateBranchSummary,generateDiffString:()=>generateDiffString,generateSummary:()=>generateSummary,generateSummaryWithUsage:()=>generateSummaryWithUsage,generateUnifiedPatch:()=>generateUnifiedPatch,getAgentDir:()=>getAgentDir,getDocsPath:()=>getDocsPath,getExamplesPath:()=>getExamplesPath,getLanguageFromPath:()=>getLanguageFromPath,getLastAssistantUsage:()=>getLastAssistantUsage,getLatestCompactionEntry:()=>getLatestCompactionEntry,getMarkdownTheme:()=>getMarkdownTheme,getPackageDir:()=>getPackageDir,getPowerShellConfig:()=>getPowerShellConfig,getReadmePath:()=>getReadmePath,getSelectListTheme:()=>getSelectListTheme,getSettingsListTheme:()=>getSettingsListTheme,getShellConfig:()=>getShellConfig,hasTrustRequiringProjectResources:()=>hasTrustRequiringProjectResources,highlightCode:()=>highlightCode,initTheme:()=>initTheme,isBashToolResult:()=>isBashToolResult,isEditToolResult:()=>isEditToolResult,isFindToolResult:()=>isFindToolResult,isGrepToolResult:()=>isGrepToolResult,isLsToolResult:()=>isLsToolResult,isPowerShellToolResult:()=>isPowerShellToolResult,isReadToolResult:()=>isReadToolResult,isToolCallEventType:()=>isToolCallEventType,isWriteToolResult:()=>isWriteToolResult,keyHint:()=>keyHint,keyText:()=>keyText,loadProjectContextFiles:()=>loadProjectContextFiles,loadSkills:()=>loadSkills,loadSkillsFromDir:()=>loadSkillsFromDir,main:()=>main,migrateSessionEntries:()=>migrateSessionEntries,parseArgs:()=>parseArgs,parseFrontmatter:()=>parseFrontmatter,parseSessionEntries:()=>parseSessionEntries,parseSkillBlock:()=>parseSkillBlock,prepareBranchEntries:()=>prepareBranchEntries,rawKeyHint:()=>rawKeyHint,readStoredCredential:()=>readStoredCredential,renderDiff:()=>renderDiff,resizeImage:()=>resizeImage,resolveCliModel:()=>resolveCliModel,resolveModelScopeWithDiagnostics:()=>resolveModelScopeWithDiagnostics,runPrintMode:()=>runPrintMode,runRpcMode:()=>runRpcMode,serializeConversation:()=>serializeConversation,sessionEntryToContextMessages:()=>sessionEntryToContextMessages,shouldCompact:()=>shouldCompact,stripFrontmatter:()=>stripFrontmatter,truncateHead:()=>truncateHead,truncateLine:()=>truncateLine,truncateTail:()=>truncateTail,truncateToVisualLines:()=>truncateToVisualLines,withFileMutationQueue:()=>withFileMutationQueue,wrapRegisteredTool:()=>wrapRegisteredTool,wrapRegisteredTools:()=>wrapRegisteredTools});var SHOW_IMAGES_SELECT_LIST_LAYOUT={minPrimaryColumnWidth:12,maxPrimaryColumnWidth:32},ShowImagesSelectorComponent=class extends Container{constructor(currentValue,onSelect,onCancel){super();let items=[{value:"yes",label:"Yes",description:"Show images inline in terminal"},{value:"no",label:"No",description:"Show text placeholder instead"}];this.addChild(new DynamicBorder),this.selectList=new SelectList(items,5,getSelectListTheme(),SHOW_IMAGES_SELECT_LIST_LAYOUT),this.selectList.setSelectedIndex(currentValue?0:1),this.selectList.onSelect=item=>{onSelect(item.value==="yes")},this.selectList.onCancel=()=>{onCancel()},this.addChild(this.selectList),this.addChild(new DynamicBorder)}getSelectList(){return this.selectList}};var THEME_SELECT_LIST_LAYOUT={minPrimaryColumnWidth:12,maxPrimaryColumnWidth:32},ThemeSelectorComponent=class extends Container{constructor(currentTheme,onSelect,onCancel,onPreview){super(),this.onPreview=onPreview;let themes=getAvailableThemes(),themeItems=themes.map(name=>({value:name,label:name,description:name===currentTheme?"(current)":void 0}));this.addChild(new DynamicBorder),this.selectList=new SelectList(themeItems,10,getSelectListTheme(),THEME_SELECT_LIST_LAYOUT);let currentIndex=themes.indexOf(currentTheme);currentIndex!==-1&&this.selectList.setSelectedIndex(currentIndex),this.selectList.onSelect=item=>{onSelect(item.value)},this.selectList.onCancel=()=>{onCancel()},this.selectList.onSelectionChange=item=>{this.onPreview(item.value)},this.addChild(this.selectList),this.addChild(new DynamicBorder)}getSelectList(){return this.selectList}};export{ShowImagesSelectorComponent,ThemeSelectorComponent,dist_exports};