@diegopetrucci/pi-extensions 0.1.73 → 0.1.76

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 (93) hide show
  1. package/LICENSE +2 -0
  2. package/README.md +9 -4
  3. package/extensions/agent-workflow-audit/index.ts +1398 -1009
  4. package/extensions/agent-workflow-audit/package.json +1 -1
  5. package/extensions/annotate-git-diff/README.md +3 -1
  6. package/extensions/annotate-git-diff/clipboard.ts +109 -100
  7. package/extensions/annotate-git-diff/git.ts +853 -767
  8. package/extensions/annotate-git-diff/glimpseui.d.ts +87 -78
  9. package/extensions/annotate-git-diff/index.ts +712 -671
  10. package/extensions/annotate-git-diff/package.json +1 -1
  11. package/extensions/annotate-git-diff/prompt.ts +45 -45
  12. package/extensions/annotate-git-diff/quiet-glimpse.ts +161 -155
  13. package/extensions/annotate-git-diff/review-server.ts +337 -311
  14. package/extensions/annotate-git-diff/types.ts +132 -132
  15. package/extensions/annotate-git-diff/ui.ts +27 -27
  16. package/extensions/annotate-git-diff/watch.ts +74 -74
  17. package/extensions/annotate-git-diff/web/app.js +1947 -1884
  18. package/extensions/annotate-git-diff/web/index.html +5 -6
  19. package/extensions/annotate-last-message/README.md +1 -1
  20. package/extensions/annotate-last-message/glimpseui.d.ts +87 -78
  21. package/extensions/annotate-last-message/index.ts +210 -206
  22. package/extensions/annotate-last-message/package.json +1 -1
  23. package/extensions/annotate-last-message/prompt.ts +87 -66
  24. package/extensions/annotate-last-message/quiet-glimpse.ts +161 -155
  25. package/extensions/annotate-last-message/session.ts +94 -89
  26. package/extensions/annotate-last-message/theme.ts +199 -193
  27. package/extensions/annotate-last-message/types.ts +23 -23
  28. package/extensions/annotate-last-message/ui.ts +27 -25
  29. package/extensions/annotate-last-message/web/app.js +4 -7
  30. package/extensions/annotate-last-message/web/md-renderer.js +1 -1
  31. package/extensions/brrr/README.md +1 -1
  32. package/extensions/brrr/index.ts +213 -191
  33. package/extensions/brrr/package.json +1 -1
  34. package/extensions/claude-fast/README.md +5 -79
  35. package/extensions/claude-fast/index.ts +31 -289
  36. package/extensions/claude-fast/package.json +2 -3
  37. package/extensions/code-reviewer/README.md +1 -1
  38. package/extensions/code-reviewer/index.ts +1598 -1350
  39. package/extensions/code-reviewer/package.json +1 -1
  40. package/extensions/confirm-destructive/README.md +1 -1
  41. package/extensions/confirm-destructive/index.ts +55 -51
  42. package/extensions/confirm-destructive/package.json +1 -1
  43. package/extensions/context-cap/index.ts +312 -304
  44. package/extensions/context-cap/package.json +1 -1
  45. package/extensions/context-inspector/index.ts +1211 -1064
  46. package/extensions/context-inspector/package.json +1 -1
  47. package/extensions/contrarian/index.ts +1854 -1735
  48. package/extensions/contrarian/package.json +1 -1
  49. package/extensions/dirty-repo-guard/index.ts +41 -41
  50. package/extensions/dynamic-context-pruning/README.md +6 -38
  51. package/extensions/dynamic-context-pruning/index.ts +2124 -1980
  52. package/extensions/dynamic-context-pruning/package.json +1 -1
  53. package/extensions/fast/README.md +71 -21
  54. package/extensions/fast/index.ts +513 -313
  55. package/extensions/fast/package.json +1 -1
  56. package/extensions/git-footer/README.md +1 -1
  57. package/extensions/git-footer/index.ts +458 -411
  58. package/extensions/git-footer/package.json +2 -3
  59. package/extensions/gnosis/index.ts +180 -130
  60. package/extensions/gnosis/package.json +1 -1
  61. package/extensions/inline-bash/index.ts +88 -88
  62. package/extensions/inline-bash/package.json +1 -1
  63. package/extensions/librarian/index.ts +1669 -1419
  64. package/extensions/librarian/package.json +1 -1
  65. package/extensions/minimal-footer/index.ts +994 -1012
  66. package/extensions/minimal-footer/openai-usage.ts +195 -190
  67. package/extensions/notify/index.ts +222 -230
  68. package/extensions/notify/package.json +1 -1
  69. package/extensions/openai-fast/README.md +5 -73
  70. package/extensions/openai-fast/index.ts +32 -272
  71. package/extensions/openai-fast/package.json +2 -3
  72. package/extensions/oracle/index.ts +1731 -1625
  73. package/extensions/oracle/package.json +1 -1
  74. package/extensions/permission-gate/index.ts +658 -608
  75. package/extensions/permission-gate/package.json +1 -1
  76. package/extensions/permission-gate/powershell-safety.ts +840 -793
  77. package/extensions/project-mcp-json/.pi-fleet-tested-version +1 -0
  78. package/extensions/project-mcp-json/README.md +199 -0
  79. package/extensions/project-mcp-json/config.ts +564 -0
  80. package/extensions/project-mcp-json/index.ts +119 -0
  81. package/extensions/project-mcp-json/package.json +38 -0
  82. package/extensions/quiet-tools/index.ts +282 -264
  83. package/extensions/review/README.md +2 -2
  84. package/extensions/review/index.ts +1745 -1872
  85. package/extensions/review/package.json +1 -1
  86. package/extensions/todo/index.ts +284 -265
  87. package/extensions/triage-comments/README.md +2 -2
  88. package/extensions/triage-comments/index.ts +2294 -1882
  89. package/extensions/triage-comments/package.json +1 -1
  90. package/package.json +6 -3
  91. package/assets/social-preview.png +0 -0
  92. package/extensions/claude-fast/claude-fast.example.json +0 -4
  93. package/extensions/openai-fast/openai-fast.example.json +0 -4
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-code-reviewer",
3
- "version": "0.1.12",
3
+ "version": "0.1.13",
4
4
  "description": "A standalone pi extension that adds a read-only code_reviewer subagent tool for isolated code reviews.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -7,7 +7,7 @@ This is adapted from the original `confirm-destructive.ts` example in [`earendil
7
7
  ## What it checks
8
8
 
9
9
  - clearing the current session
10
- - switching sessions when the current session has user messages
10
+ - switching sessions when a user message is newer than the last assistant (or a user message with no assistant)
11
11
  - forking from an entry
12
12
 
13
13
  ## Install
@@ -5,70 +5,74 @@
5
5
  * Demonstrates how to cancel session events using the before_* events.
6
6
  */
7
7
 
8
- import type { ExtensionAPI, SessionBeforeSwitchEvent, SessionEntry } from "@earendil-works/pi-coding-agent";
8
+ import type {
9
+ ExtensionAPI,
10
+ SessionBeforeSwitchEvent,
11
+ SessionEntry,
12
+ } from "@earendil-works/pi-coding-agent";
9
13
 
10
14
  function hasUnsavedUserWork(entries: SessionEntry[]): boolean {
11
- let sawAssistant = false;
15
+ let sawAssistant = false;
12
16
 
13
- for (let index = entries.length - 1; index >= 0; index -= 1) {
14
- const entry = entries[index];
15
- if (entry.type !== "message") continue;
16
- if (entry.message.role === "assistant") {
17
- sawAssistant = true;
18
- break;
19
- }
20
- if (entry.message.role === "user") return true;
21
- }
17
+ for (let index = entries.length - 1; index >= 0; index -= 1) {
18
+ const entry = entries[index];
19
+ if (entry.type !== "message") continue;
20
+ if (entry.message.role === "assistant") {
21
+ sawAssistant = true;
22
+ break;
23
+ }
24
+ if (entry.message.role === "user") return true;
25
+ }
22
26
 
23
- if (sawAssistant) return false;
24
- return entries.some((entry) => entry.type === "message" && entry.message.role === "user");
27
+ if (sawAssistant) return false;
28
+ return entries.some((entry) => entry.type === "message" && entry.message.role === "user");
25
29
  }
26
30
 
27
31
  export default function (pi: ExtensionAPI) {
28
- pi.on("session_before_switch", async (event: SessionBeforeSwitchEvent, ctx) => {
29
- if (!ctx.hasUI) return;
32
+ pi.on("session_before_switch", async (event: SessionBeforeSwitchEvent, ctx) => {
33
+ if (!ctx.hasUI) return;
30
34
 
31
- if (event.reason === "new") {
32
- const confirmed = await ctx.ui.confirm(
33
- "Clear session?",
34
- "This will delete all messages in the current session.",
35
- );
35
+ if (event.reason === "new") {
36
+ const confirmed = await ctx.ui.confirm(
37
+ "Clear session?",
38
+ "This will delete all messages in the current session.",
39
+ );
36
40
 
37
- if (!confirmed) {
38
- ctx.ui.notify("Clear cancelled", "info");
39
- return { cancel: true };
40
- }
41
- return;
42
- }
41
+ if (!confirmed) {
42
+ ctx.ui.notify("Clear cancelled", "info");
43
+ return { cancel: true };
44
+ }
45
+ return;
46
+ }
43
47
 
44
- // reason === "resume" - check if there are unsaved changes (user messages newer than the last assistant response)
45
- const entries = ctx.sessionManager.getEntries();
46
- const hasUnsavedWork = hasUnsavedUserWork(entries);
48
+ // reason === "resume" - check if there are unsaved changes (user messages newer than the last assistant response)
49
+ const entries = ctx.sessionManager.getEntries();
50
+ const hasUnsavedWork = hasUnsavedUserWork(entries);
47
51
 
48
- if (hasUnsavedWork) {
49
- const confirmed = await ctx.ui.confirm(
50
- "Switch session?",
51
- "You have messages in the current session. Switch anyway?",
52
- );
52
+ if (hasUnsavedWork) {
53
+ const confirmed = await ctx.ui.confirm(
54
+ "Switch session?",
55
+ "You have messages in the current session. Switch anyway?",
56
+ );
53
57
 
54
- if (!confirmed) {
55
- ctx.ui.notify("Switch cancelled", "info");
56
- return { cancel: true };
57
- }
58
- }
59
- });
58
+ if (!confirmed) {
59
+ ctx.ui.notify("Switch cancelled", "info");
60
+ return { cancel: true };
61
+ }
62
+ }
63
+ });
60
64
 
61
- pi.on("session_before_fork", async (event, ctx) => {
62
- if (!ctx.hasUI) return;
65
+ pi.on("session_before_fork", async (event, ctx) => {
66
+ if (!ctx.hasUI) return;
63
67
 
64
- const choice = await ctx.ui.select(`Fork from entry ${event.entryId.slice(0, 8)}?`, [
65
- "Yes, create fork",
66
- "No, stay in current session",
67
- ]);
68
+ const choice = await ctx.ui.select(`Fork from entry ${event.entryId.slice(0, 8)}?`, [
69
+ "Yes, create fork",
70
+ "No, stay in current session",
71
+ ]);
68
72
 
69
- if (choice !== "Yes, create fork") {
70
- ctx.ui.notify("Fork cancelled", "info");
71
- return { cancel: true };
72
- }
73
- });
73
+ if (choice !== "Yes, create fork") {
74
+ ctx.ui.notify("Fork cancelled", "info");
75
+ return { cancel: true };
76
+ }
77
+ });
74
78
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegopetrucci/pi-confirm-destructive",
3
- "version": "0.1.12",
3
+ "version": "0.1.13",
4
4
  "description": "A pi extension that confirms destructive session actions.",
5
5
  "keywords": [
6
6
  "pi-package",