@earendil-works/pi-coding-agent 0.78.1 → 0.79.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 (174) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/README.md +21 -2
  3. package/dist/cli/args.d.ts +1 -0
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +8 -0
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/project-trust.d.ts +10 -0
  8. package/dist/cli/project-trust.d.ts.map +1 -0
  9. package/dist/cli/project-trust.js +48 -0
  10. package/dist/cli/project-trust.js.map +1 -0
  11. package/dist/cli/startup-ui.d.ts +7 -0
  12. package/dist/cli/startup-ui.d.ts.map +1 -0
  13. package/dist/cli/startup-ui.js +59 -0
  14. package/dist/cli/startup-ui.js.map +1 -0
  15. package/dist/core/agent-session-runtime.d.ts +3 -1
  16. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  17. package/dist/core/agent-session-runtime.js +4 -1
  18. package/dist/core/agent-session-runtime.js.map +1 -1
  19. package/dist/core/agent-session-services.d.ts +2 -1
  20. package/dist/core/agent-session-services.d.ts.map +1 -1
  21. package/dist/core/agent-session-services.js +2 -2
  22. package/dist/core/agent-session-services.js.map +1 -1
  23. package/dist/core/agent-session.d.ts +1 -0
  24. package/dist/core/agent-session.d.ts.map +1 -1
  25. package/dist/core/agent-session.js +6 -0
  26. package/dist/core/agent-session.js.map +1 -1
  27. package/dist/core/compaction/utils.d.ts +1 -1
  28. package/dist/core/compaction/utils.d.ts.map +1 -1
  29. package/dist/core/compaction/utils.js +1 -1
  30. package/dist/core/compaction/utils.js.map +1 -1
  31. package/dist/core/experimental.d.ts +2 -0
  32. package/dist/core/experimental.d.ts.map +1 -0
  33. package/dist/core/experimental.js +4 -0
  34. package/dist/core/experimental.js.map +1 -0
  35. package/dist/core/extensions/index.d.ts +1 -1
  36. package/dist/core/extensions/index.d.ts.map +1 -1
  37. package/dist/core/extensions/index.js.map +1 -1
  38. package/dist/core/extensions/loader.d.ts +1 -1
  39. package/dist/core/extensions/loader.d.ts.map +1 -1
  40. package/dist/core/extensions/loader.js +4 -4
  41. package/dist/core/extensions/loader.js.map +1 -1
  42. package/dist/core/extensions/runner.d.ts +7 -2
  43. package/dist/core/extensions/runner.d.ts.map +1 -1
  44. package/dist/core/extensions/runner.js +34 -0
  45. package/dist/core/extensions/runner.js.map +1 -1
  46. package/dist/core/extensions/types.d.ts +21 -1
  47. package/dist/core/extensions/types.d.ts.map +1 -1
  48. package/dist/core/extensions/types.js.map +1 -1
  49. package/dist/core/index.d.ts +1 -0
  50. package/dist/core/index.d.ts.map +1 -1
  51. package/dist/core/index.js +1 -0
  52. package/dist/core/index.js.map +1 -1
  53. package/dist/core/model-registry.d.ts.map +1 -1
  54. package/dist/core/model-registry.js +1 -0
  55. package/dist/core/model-registry.js.map +1 -1
  56. package/dist/core/package-manager.d.ts +1 -0
  57. package/dist/core/package-manager.d.ts.map +1 -1
  58. package/dist/core/package-manager.js +25 -7
  59. package/dist/core/package-manager.js.map +1 -1
  60. package/dist/core/project-trust.d.ts +15 -0
  61. package/dist/core/project-trust.d.ts.map +1 -0
  62. package/dist/core/project-trust.js +58 -0
  63. package/dist/core/project-trust.js.map +1 -0
  64. package/dist/core/prompt-templates.d.ts +2 -1
  65. package/dist/core/prompt-templates.d.ts.map +1 -1
  66. package/dist/core/prompt-templates.js +24 -26
  67. package/dist/core/prompt-templates.js.map +1 -1
  68. package/dist/core/resource-loader.d.ts +13 -2
  69. package/dist/core/resource-loader.d.ts.map +1 -1
  70. package/dist/core/resource-loader.js +112 -37
  71. package/dist/core/resource-loader.js.map +1 -1
  72. package/dist/core/settings-manager.d.ts +14 -2
  73. package/dist/core/settings-manager.d.ts.map +1 -1
  74. package/dist/core/settings-manager.js +80 -30
  75. package/dist/core/settings-manager.js.map +1 -1
  76. package/dist/core/slash-commands.d.ts.map +1 -1
  77. package/dist/core/slash-commands.js +1 -0
  78. package/dist/core/slash-commands.js.map +1 -1
  79. package/dist/core/tools/bash.d.ts.map +1 -1
  80. package/dist/core/tools/bash.js +1 -1
  81. package/dist/core/tools/bash.js.map +1 -1
  82. package/dist/core/tools/find.d.ts.map +1 -1
  83. package/dist/core/tools/find.js +1 -1
  84. package/dist/core/tools/find.js.map +1 -1
  85. package/dist/core/tools/grep.d.ts.map +1 -1
  86. package/dist/core/tools/grep.js +1 -1
  87. package/dist/core/tools/grep.js.map +1 -1
  88. package/dist/core/tools/ls.d.ts.map +1 -1
  89. package/dist/core/tools/ls.js +1 -1
  90. package/dist/core/tools/ls.js.map +1 -1
  91. package/dist/core/tools/read.d.ts.map +1 -1
  92. package/dist/core/tools/read.js +1 -1
  93. package/dist/core/tools/read.js.map +1 -1
  94. package/dist/core/tools/write.d.ts.map +1 -1
  95. package/dist/core/tools/write.js +1 -1
  96. package/dist/core/tools/write.js.map +1 -1
  97. package/dist/core/trust-manager.d.ts +31 -0
  98. package/dist/core/trust-manager.d.ts.map +1 -0
  99. package/dist/core/trust-manager.js +187 -0
  100. package/dist/core/trust-manager.js.map +1 -0
  101. package/dist/index.d.ts +5 -4
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +2 -1
  104. package/dist/index.js.map +1 -1
  105. package/dist/main.d.ts.map +1 -1
  106. package/dist/main.js +61 -32
  107. package/dist/main.js.map +1 -1
  108. package/dist/migrations.d.ts.map +1 -1
  109. package/dist/migrations.js +39 -34
  110. package/dist/migrations.js.map +1 -1
  111. package/dist/modes/index.d.ts +1 -1
  112. package/dist/modes/index.d.ts.map +1 -1
  113. package/dist/modes/index.js.map +1 -1
  114. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  115. package/dist/modes/interactive/components/bash-execution.js +2 -2
  116. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  117. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  118. package/dist/modes/interactive/components/footer.js +7 -0
  119. package/dist/modes/interactive/components/footer.js.map +1 -1
  120. package/dist/modes/interactive/components/index.d.ts +1 -0
  121. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  122. package/dist/modes/interactive/components/index.js +1 -0
  123. package/dist/modes/interactive/components/index.js.map +1 -1
  124. package/dist/modes/interactive/components/login-dialog.d.ts +1 -0
  125. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  126. package/dist/modes/interactive/components/login-dialog.js +7 -1
  127. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  128. package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  129. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  130. package/dist/modes/interactive/components/settings-selector.js +20 -0
  131. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  132. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  133. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  134. package/dist/modes/interactive/components/trust-selector.js +91 -0
  135. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  136. package/dist/modes/interactive/interactive-mode.d.ts +7 -0
  137. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  138. package/dist/modes/interactive/interactive-mode.js +99 -5
  139. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  140. package/dist/package-manager-cli.d.ts +6 -2
  141. package/dist/package-manager-cli.d.ts.map +1 -1
  142. package/dist/package-manager-cli.js +104 -10
  143. package/dist/package-manager-cli.js.map +1 -1
  144. package/dist/utils/changelog.d.ts +1 -0
  145. package/dist/utils/changelog.d.ts.map +1 -1
  146. package/dist/utils/changelog.js +78 -0
  147. package/dist/utils/changelog.js.map +1 -1
  148. package/docs/docs.json +4 -0
  149. package/docs/extensions.md +31 -2
  150. package/docs/index.md +1 -0
  151. package/docs/models.md +4 -3
  152. package/docs/packages.md +1 -1
  153. package/docs/prompt-templates.md +9 -2
  154. package/docs/sdk.md +5 -0
  155. package/docs/security.md +55 -0
  156. package/docs/settings.md +13 -0
  157. package/docs/skills.md +1 -1
  158. package/docs/terminal-setup.md +36 -2
  159. package/docs/themes.md +1 -1
  160. package/docs/tmux.md +4 -2
  161. package/docs/usage.md +18 -1
  162. package/examples/extensions/README.md +1 -0
  163. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  164. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  165. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  166. package/examples/extensions/gondolin/package-lock.json +2 -2
  167. package/examples/extensions/gondolin/package.json +1 -1
  168. package/examples/extensions/project-trust.ts +64 -0
  169. package/examples/extensions/sandbox/package-lock.json +2 -2
  170. package/examples/extensions/sandbox/package.json +1 -1
  171. package/examples/extensions/with-deps/package-lock.json +2 -2
  172. package/examples/extensions/with-deps/package.json +1 -1
  173. package/npm-shrinkwrap.json +12 -12
  174. package/package.json +4 -8
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Project Trust Extension
3
+ *
4
+ * Demonstrates the project_trust event. Install globally or pass via -e:
5
+ *
6
+ * mkdir -p ~/.pi/agent/extensions
7
+ * cp packages/coding-agent/examples/extensions/project-trust.ts ~/.pi/agent/extensions/
8
+ *
9
+ * Or:
10
+ *
11
+ * pi -e packages/coding-agent/examples/extensions/project-trust.ts
12
+ *
13
+ * Try it in a project containing .pi, AGENTS.md/CLAUDE.md, or .agents/skills.
14
+ */
15
+
16
+ import type { ExtensionAPI, ProjectTrustEventResult } from "@earendil-works/pi-coding-agent";
17
+
18
+ export default function (pi: ExtensionAPI) {
19
+ let loadCount = 0;
20
+ loadCount++;
21
+
22
+ // Multiple handlers in one extension are allowed. The first handler that returns
23
+ // { trusted: "yes" } or { trusted: "no" } wins and suppresses the built-in
24
+ // trust prompt. Return { trusted: "undecided" } to let another handler or the
25
+ // built-in flow decide.
26
+ pi.on("project_trust", async (event, ctx): Promise<ProjectTrustEventResult> => {
27
+ ctx.ui.notify(`project_trust fired for ${event.cwd} (mode: ${ctx.mode}, load: ${loadCount})`, "info");
28
+
29
+ if (!ctx.hasUI) {
30
+ return { trusted: "undecided" };
31
+ }
32
+
33
+ const choice = await ctx.ui.select(`Project trust for:\n${event.cwd}`, [
34
+ "Trust and remember",
35
+ "Trust with note and remember",
36
+ "Trust this session",
37
+ "Do not trust this session",
38
+ "Let built-in prompt decide",
39
+ ]);
40
+
41
+ if (choice === "Trust with note and remember") {
42
+ const note = await ctx.ui.input("Project trust note", "Optional note for this demo");
43
+ ctx.ui.notify(note ? `Recorded demo note: ${note}` : "No demo note entered", "info");
44
+ return { trusted: "yes", remember: true };
45
+ }
46
+ if (choice === "Trust and remember") {
47
+ return { trusted: "yes", remember: true };
48
+ }
49
+ if (choice === "Trust this session") {
50
+ return { trusted: "yes" };
51
+ }
52
+ if (choice === "Do not trust this session") {
53
+ return { trusted: "no" };
54
+ }
55
+ if (choice === "Let built-in prompt decide") {
56
+ return { trusted: "undecided" };
57
+ }
58
+ return { trusted: "undecided" };
59
+ });
60
+
61
+ pi.on("session_start", (_event, ctx) => {
62
+ ctx.ui.notify(`project-trust example loaded after trust resolution in ${ctx.cwd}`, "info");
63
+ });
64
+ }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "1.8.1",
3
+ "version": "1.9.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "1.8.1",
9
+ "version": "1.9.1",
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.8.1",
4
+ "version": "1.9.1",
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": "0.78.1",
3
+ "version": "0.79.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-with-deps",
9
- "version": "0.78.1",
9
+ "version": "0.79.1",
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": "0.78.1",
4
+ "version": "0.79.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-coding-agent",
3
- "version": "0.78.1",
3
+ "version": "0.79.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@earendil-works/pi-coding-agent",
9
- "version": "0.78.1",
9
+ "version": "0.79.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@earendil-works/pi-agent-core": "^0.78.1",
13
- "@earendil-works/pi-ai": "^0.78.1",
14
- "@earendil-works/pi-tui": "^0.78.1",
12
+ "@earendil-works/pi-agent-core": "^0.79.1",
13
+ "@earendil-works/pi-ai": "^0.79.1",
14
+ "@earendil-works/pi-tui": "^0.79.1",
15
15
  "@silvia-odwyer/photon-node": "0.3.4",
16
16
  "chalk": "5.6.2",
17
17
  "cross-spawn": "7.0.6",
@@ -473,11 +473,11 @@
473
473
  }
474
474
  },
475
475
  "node_modules/@earendil-works/pi-agent-core": {
476
- "version": "0.78.1",
477
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.78.1.tgz",
476
+ "version": "0.79.1",
477
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.79.1.tgz",
478
478
  "license": "MIT",
479
479
  "dependencies": {
480
- "@earendil-works/pi-ai": "^0.78.1",
480
+ "@earendil-works/pi-ai": "^0.79.1",
481
481
  "ignore": "7.0.5",
482
482
  "typebox": "1.1.38",
483
483
  "yaml": "2.9.0"
@@ -487,8 +487,8 @@
487
487
  }
488
488
  },
489
489
  "node_modules/@earendil-works/pi-ai": {
490
- "version": "0.78.1",
491
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.78.1.tgz",
490
+ "version": "0.79.1",
491
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.79.1.tgz",
492
492
  "license": "MIT",
493
493
  "dependencies": {
494
494
  "@anthropic-ai/sdk": "0.91.1",
@@ -510,8 +510,8 @@
510
510
  }
511
511
  },
512
512
  "node_modules/@earendil-works/pi-tui": {
513
- "version": "0.78.1",
514
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.78.1.tgz",
513
+ "version": "0.79.1",
514
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.79.1.tgz",
515
515
  "license": "MIT",
516
516
  "dependencies": {
517
517
  "get-east-asian-width": "1.6.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@earendil-works/pi-coding-agent",
3
- "version": "0.78.1",
3
+ "version": "0.79.1",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -15,10 +15,6 @@
15
15
  ".": {
16
16
  "types": "./dist/index.d.ts",
17
17
  "import": "./dist/index.js"
18
- },
19
- "./hooks": {
20
- "types": "./dist/core/hooks/index.d.ts",
21
- "import": "./dist/core/hooks/index.js"
22
18
  }
23
19
  },
24
20
  "files": [
@@ -40,9 +36,9 @@
40
36
  "prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap"
41
37
  },
42
38
  "dependencies": {
43
- "@earendil-works/pi-agent-core": "^0.78.1",
44
- "@earendil-works/pi-ai": "^0.78.1",
45
- "@earendil-works/pi-tui": "^0.78.1",
39
+ "@earendil-works/pi-agent-core": "^0.79.1",
40
+ "@earendil-works/pi-ai": "^0.79.1",
41
+ "@earendil-works/pi-tui": "^0.79.1",
46
42
  "@silvia-odwyer/photon-node": "0.3.4",
47
43
  "chalk": "5.6.2",
48
44
  "cross-spawn": "7.0.6",