@diegopetrucci/pi-extensions 0.1.76 → 0.1.79
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.
- package/README.md +8 -8
- package/extensions/agent-workflow-audit/README.md +1 -1
- package/extensions/agent-workflow-audit/index.ts +275 -59
- package/extensions/agent-workflow-audit/package.json +1 -1
- package/extensions/annotate-git-diff/git.ts +0 -8
- package/extensions/annotate-git-diff/glimpseui.d.ts +5 -65
- package/extensions/annotate-git-diff/package.json +1 -1
- package/extensions/annotate-last-message/glimpseui.d.ts +5 -65
- package/extensions/annotate-last-message/package.json +1 -1
- package/extensions/annotate-last-message/web/index.html +3 -30
- package/extensions/code-reviewer/README.md +5 -5
- package/extensions/code-reviewer/index.ts +252 -82
- package/extensions/code-reviewer/package.json +1 -1
- package/extensions/confirm-destructive/index.ts +2 -8
- package/extensions/confirm-destructive/package.json +1 -1
- package/extensions/context-cap/README.md +9 -9
- package/extensions/context-cap/index.ts +3 -3
- package/extensions/context-cap/package.json +2 -2
- package/extensions/context-inspector/index.ts +2 -46
- package/extensions/context-inspector/package.json +1 -1
- package/extensions/contrarian/README.md +4 -3
- package/extensions/contrarian/index.ts +48 -67
- package/extensions/contrarian/package.json +1 -1
- package/extensions/dirty-repo-guard/index.ts +0 -4
- package/extensions/dirty-repo-guard/package.json +1 -1
- package/extensions/dynamic-context-pruning/README.md +20 -11
- package/extensions/dynamic-context-pruning/index.ts +118 -341
- package/extensions/dynamic-context-pruning/package.json +1 -1
- package/extensions/fast/README.md +18 -11
- package/extensions/fast/index.ts +9 -5
- package/extensions/fast/package.json +1 -1
- package/extensions/git-footer/index.ts +2 -16
- package/extensions/git-footer/package.json +1 -1
- package/extensions/inline-bash/index.ts +0 -16
- package/extensions/inline-bash/package.json +1 -1
- package/extensions/librarian/README.md +1 -1
- package/extensions/librarian/index.ts +246 -70
- package/extensions/librarian/package.json +1 -1
- package/extensions/minimal-footer/README.md +5 -5
- package/extensions/minimal-footer/index.ts +5 -26
- package/extensions/minimal-footer/minimal-footer.example.json +1 -1
- package/extensions/minimal-footer/openai-usage.ts +2 -11
- package/extensions/minimal-footer/package.json +1 -1
- package/extensions/oracle/README.md +4 -3
- package/extensions/oracle/index.ts +46 -65
- package/extensions/oracle/package.json +1 -1
- package/extensions/permission-gate/README.md +3 -0
- package/extensions/permission-gate/index.ts +127 -36
- package/extensions/permission-gate/package.json +1 -1
- package/extensions/project-mcp-json/README.md +2 -2
- package/extensions/project-mcp-json/package.json +1 -1
- package/extensions/quiet-tools/.pi-fleet-tested-version +1 -1
- package/extensions/quiet-tools/README.md +30 -19
- package/extensions/quiet-tools/index.ts +233 -166
- package/extensions/quiet-tools/package.json +2 -2
- package/extensions/review/README.md +2 -0
- package/extensions/review/package.json +1 -1
- package/extensions/todo/index.ts +0 -19
- package/extensions/todo/package.json +1 -1
- package/extensions/triage-comments/README.md +4 -2
- package/extensions/triage-comments/index.ts +344 -39
- package/extensions/triage-comments/package.json +1 -1
- package/package.json +4 -4
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
declare module "glimpseui" {
|
|
2
|
-
import { EventEmitter } from "node:events";
|
|
3
|
-
|
|
4
2
|
export type FollowMode = "snap" | "spring";
|
|
5
3
|
export type CursorAnchor =
|
|
6
4
|
| "top-left"
|
|
@@ -32,67 +30,9 @@ declare module "glimpseui" {
|
|
|
32
30
|
timeout?: number;
|
|
33
31
|
}
|
|
34
32
|
|
|
35
|
-
export
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
visibleY?: number;
|
|
41
|
-
visibleWidth?: number;
|
|
42
|
-
visibleHeight?: number;
|
|
43
|
-
x?: number;
|
|
44
|
-
y?: number;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface GlimpseAppearanceInfo {
|
|
48
|
-
darkMode: boolean;
|
|
49
|
-
accentColor: string;
|
|
50
|
-
reduceMotion: boolean;
|
|
51
|
-
increaseContrast: boolean;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface GlimpseCursorInfo {
|
|
55
|
-
x: number;
|
|
56
|
-
y: number;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export interface GlimpseCursorTip {
|
|
60
|
-
x: number;
|
|
61
|
-
y: number;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export interface GlimpseInfo {
|
|
65
|
-
screen: GlimpseScreenInfo;
|
|
66
|
-
screens: GlimpseScreenInfo[];
|
|
67
|
-
appearance: GlimpseAppearanceInfo;
|
|
68
|
-
cursor: GlimpseCursorInfo;
|
|
69
|
-
cursorTip: GlimpseCursorTip | null;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export class GlimpseWindow extends EventEmitter {
|
|
73
|
-
on(event: "ready", listener: (info: GlimpseInfo) => void): this;
|
|
74
|
-
on(event: "message", listener: (data: unknown) => void): this;
|
|
75
|
-
on(event: "info", listener: (info: GlimpseInfo) => void): this;
|
|
76
|
-
on(event: "closed", listener: () => void): this;
|
|
77
|
-
on(event: "error", listener: (error: Error) => void): this;
|
|
78
|
-
once(event: "ready", listener: (info: GlimpseInfo) => void): this;
|
|
79
|
-
once(event: "message", listener: (data: unknown) => void): this;
|
|
80
|
-
once(event: "info", listener: (info: GlimpseInfo) => void): this;
|
|
81
|
-
once(event: "closed", listener: () => void): this;
|
|
82
|
-
once(event: "error", listener: (error: Error) => void): this;
|
|
83
|
-
send(js: string): void;
|
|
84
|
-
setHTML(html: string): void;
|
|
85
|
-
show(options?: { title?: string }): void;
|
|
86
|
-
close(): void;
|
|
87
|
-
loadFile(path: string): void;
|
|
88
|
-
get info(): GlimpseInfo | null;
|
|
89
|
-
getInfo(): void;
|
|
90
|
-
followCursor(enabled: boolean, anchor?: CursorAnchor, mode?: FollowMode): void;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export function open(html: string, options?: GlimpseOpenOptions): GlimpseWindow;
|
|
94
|
-
export function prompt<T = unknown>(
|
|
95
|
-
html: string,
|
|
96
|
-
options?: GlimpseOpenOptions,
|
|
97
|
-
): Promise<T | null>;
|
|
33
|
+
export function getNativeHostInfo(): {
|
|
34
|
+
path: string;
|
|
35
|
+
extraArgs?: string[];
|
|
36
|
+
buildHint?: string;
|
|
37
|
+
};
|
|
98
38
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diegopetrucci/pi-annotate-git-diff",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.15",
|
|
4
4
|
"description": "A standalone pi extension that adds /annotate-git-diff, a native Glimpse UI for annotating git diffs and sending explicit feedback directly to the agent; close recovery keeps unsent drafts in the editor.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
declare module "glimpseui" {
|
|
2
|
-
import { EventEmitter } from "node:events";
|
|
3
|
-
|
|
4
2
|
export type FollowMode = "snap" | "spring";
|
|
5
3
|
export type CursorAnchor =
|
|
6
4
|
| "top-left"
|
|
@@ -32,67 +30,9 @@ declare module "glimpseui" {
|
|
|
32
30
|
timeout?: number;
|
|
33
31
|
}
|
|
34
32
|
|
|
35
|
-
export
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
visibleY?: number;
|
|
41
|
-
visibleWidth?: number;
|
|
42
|
-
visibleHeight?: number;
|
|
43
|
-
x?: number;
|
|
44
|
-
y?: number;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface GlimpseAppearanceInfo {
|
|
48
|
-
darkMode: boolean;
|
|
49
|
-
accentColor: string;
|
|
50
|
-
reduceMotion: boolean;
|
|
51
|
-
increaseContrast: boolean;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface GlimpseCursorInfo {
|
|
55
|
-
x: number;
|
|
56
|
-
y: number;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export interface GlimpseCursorTip {
|
|
60
|
-
x: number;
|
|
61
|
-
y: number;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export interface GlimpseInfo {
|
|
65
|
-
screen: GlimpseScreenInfo;
|
|
66
|
-
screens: GlimpseScreenInfo[];
|
|
67
|
-
appearance: GlimpseAppearanceInfo;
|
|
68
|
-
cursor: GlimpseCursorInfo;
|
|
69
|
-
cursorTip: GlimpseCursorTip | null;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export class GlimpseWindow extends EventEmitter {
|
|
73
|
-
on(event: "ready", listener: (info: GlimpseInfo) => void): this;
|
|
74
|
-
on(event: "message", listener: (data: unknown) => void): this;
|
|
75
|
-
on(event: "info", listener: (info: GlimpseInfo) => void): this;
|
|
76
|
-
on(event: "closed", listener: () => void): this;
|
|
77
|
-
on(event: "error", listener: (error: Error) => void): this;
|
|
78
|
-
once(event: "ready", listener: (info: GlimpseInfo) => void): this;
|
|
79
|
-
once(event: "message", listener: (data: unknown) => void): this;
|
|
80
|
-
once(event: "info", listener: (info: GlimpseInfo) => void): this;
|
|
81
|
-
once(event: "closed", listener: () => void): this;
|
|
82
|
-
once(event: "error", listener: (error: Error) => void): this;
|
|
83
|
-
send(js: string): void;
|
|
84
|
-
setHTML(html: string): void;
|
|
85
|
-
show(options?: { title?: string }): void;
|
|
86
|
-
close(): void;
|
|
87
|
-
loadFile(path: string): void;
|
|
88
|
-
get info(): GlimpseInfo | null;
|
|
89
|
-
getInfo(): void;
|
|
90
|
-
followCursor(enabled: boolean, anchor?: CursorAnchor, mode?: FollowMode): void;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export function open(html: string, options?: GlimpseOpenOptions): GlimpseWindow;
|
|
94
|
-
export function prompt<T = unknown>(
|
|
95
|
-
html: string,
|
|
96
|
-
options?: GlimpseOpenOptions,
|
|
97
|
-
): Promise<T | null>;
|
|
33
|
+
export function getNativeHostInfo(): {
|
|
34
|
+
path: string;
|
|
35
|
+
extraArgs?: string[];
|
|
36
|
+
buildHint?: string;
|
|
37
|
+
};
|
|
98
38
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diegopetrucci/pi-annotate-last-message",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"description": "A standalone pi extension that adds /annotate-last-message, a native Glimpse UI for annotating the latest assistant reply.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* overrides semantic and Markdown colours from ctx.ui.theme. When Pi's theme
|
|
11
11
|
* cannot provide a token, the matching dark/light fallback remains readable.
|
|
12
12
|
*
|
|
13
|
-
* The --md* fallback values below are kept in sync with
|
|
14
|
-
*
|
|
13
|
+
* The --md* fallback values below are kept in sync with DARK_FALLBACK
|
|
14
|
+
* in theme.ts so this template renders correctly when the injected
|
|
15
15
|
* theme block is absent (e.g. opened standalone in a browser for debugging).
|
|
16
16
|
*/
|
|
17
17
|
:root {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
--error: #ffb3b3;
|
|
32
32
|
--warning: #f4c95d;
|
|
33
33
|
|
|
34
|
-
/* Markdown token colours — kept in sync with
|
|
34
|
+
/* Markdown token colours — kept in sync with DARK_FALLBACK in theme.ts */
|
|
35
35
|
--mdHeading: #f4c95d;
|
|
36
36
|
--mdLink: #7dd3fc;
|
|
37
37
|
--mdLinkUrl: #8a8a8a;
|
|
@@ -314,9 +314,6 @@
|
|
|
314
314
|
margin: 0;
|
|
315
315
|
}
|
|
316
316
|
|
|
317
|
-
.markdown-content p { margin: 0; }
|
|
318
|
-
.markdown-content p + p { margin-top: 4px; }
|
|
319
|
-
|
|
320
317
|
.markdown-content a {
|
|
321
318
|
color: var(--mdLink);
|
|
322
319
|
text-decoration: underline;
|
|
@@ -337,21 +334,6 @@
|
|
|
337
334
|
font-family: inherit;
|
|
338
335
|
}
|
|
339
336
|
|
|
340
|
-
.markdown-content pre {
|
|
341
|
-
background: transparent;
|
|
342
|
-
margin: 4px 0;
|
|
343
|
-
overflow-x: auto;
|
|
344
|
-
border-left: 3px solid var(--mdCodeBlockBorder);
|
|
345
|
-
padding-left: 8px;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
.markdown-content pre code {
|
|
349
|
-
display: block;
|
|
350
|
-
background: none;
|
|
351
|
-
color: var(--mdCodeBlock, var(--text));
|
|
352
|
-
padding: 0;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
337
|
.markdown-content blockquote {
|
|
356
338
|
border-left: 3px solid var(--mdQuoteBorder);
|
|
357
339
|
padding-left: 8px;
|
|
@@ -360,15 +342,6 @@
|
|
|
360
342
|
font-style: italic;
|
|
361
343
|
}
|
|
362
344
|
|
|
363
|
-
.markdown-content ul,
|
|
364
|
-
.markdown-content ol {
|
|
365
|
-
margin: 4px 0;
|
|
366
|
-
padding-left: 1.5em;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
.markdown-content li { margin: 0; }
|
|
370
|
-
.markdown-content li::marker { color: var(--mdListBullet); }
|
|
371
|
-
|
|
372
345
|
.markdown-content hr {
|
|
373
346
|
border: none;
|
|
374
347
|
border-top: 1px solid var(--mdHr);
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# code-reviewer
|
|
2
2
|
|
|
3
|
-
Adds a
|
|
3
|
+
Adds a `code_reviewer` subagent tool that adapts The Last Harness [`code-reviewer`](https://github.com/diegopetrucci/the-last-harness/blob/main/agents/subagents/code-reviewer.md) prompt into a standalone pi extension.
|
|
4
4
|
|
|
5
|
-
Use it when you want an isolated second-pass review of a proposed change against the local checkout. The
|
|
6
|
-
|
|
7
|
-
This package is adapted from the TLH code-reviewer workflow for use as a standalone pi extension.
|
|
5
|
+
Use it when you want an isolated second-pass review of a proposed change against the local checkout. The subagent uses read-only built-in tools plus any configured MCP tools, checks ticket fit and scope first, then looks for diff mismatches, correctness bugs, security/safety issues, unnecessary complexity, and missing validation.
|
|
8
6
|
|
|
9
7
|
## Install
|
|
10
8
|
|
|
@@ -46,7 +44,8 @@ When called, it launches an isolated in-memory child agent with:
|
|
|
46
44
|
- an auto-selected review model that prefers contrarian-style opposite-provider and opposite-family candidates before same-provider fallbacks;
|
|
47
45
|
- automatic model candidates constrained to the current Pi session's model scope when that scope is non-empty;
|
|
48
46
|
- requested thinking taken from the active session when available, otherwise defaulting to `high` for reasoning models and `off` for non-reasoning models, then clamped to the selected model's supported level;
|
|
49
|
-
- read-only tools
|
|
47
|
+
- read-only built-in tools: `read`, `grep`, `find`, `ls`, and guarded `bash`;
|
|
48
|
+
- configured MCP tools (run without confirmation in the subagent; may have side effects; use for evidence gathering only; requires host Pi >=1.0.4; older hosts degrade to no MCP, no error); the global `mcp.json` always applies; a project `.pi/mcp.json` is loaded only when the host session has already trusted the project;
|
|
50
49
|
- a local-checkout path guard for file inspection;
|
|
51
50
|
- a bash guard that allows only direct read-only `git`, `gh`, or `pwd` invocations.
|
|
52
51
|
|
|
@@ -65,6 +64,7 @@ The model report is concise and includes a verdict, findings, validation notes,
|
|
|
65
64
|
|
|
66
65
|
- The subagent is explicitly instructed not to implement changes.
|
|
67
66
|
- Runtime guards block write/edit tools, shell control operators, pipelines, redirection, path traversal outside the checkout, mutating `git`/`gh` commands, `npm`/publish commands, and other filesystem mutation.
|
|
67
|
+
- Runtime guards apply to built-in tools only; configured MCP tools pass the guard, run without confirmation, and are limited only by prompt guidance.
|
|
68
68
|
- Built-in file-inspection tools are preferred over shell commands for local files.
|
|
69
69
|
|
|
70
70
|
## Example
|