my-pi 0.3.6 → 0.4.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.
- package/README.md +32 -252
- package/dist/extensions.d.ts +11 -0
- package/dist/extensions.js +148 -0
- package/dist/extensions.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +40 -519
- package/dist/index.js.map +1 -1
- package/dist/manager.d.ts +3 -0
- package/dist/manager.js +71 -0
- package/dist/manager.js.map +1 -0
- package/dist/settings.d.ts +3 -0
- package/dist/settings.js +16 -0
- package/dist/settings.js.map +1 -0
- package/package.json +31 -76
- package/dist/api.d.ts +0 -472
- package/dist/api.js +0 -525
- package/dist/api.js.map +0 -1
- package/dist/builtin-registry-C0CQdd45.js +0 -562
- package/dist/builtin-registry-C0CQdd45.js.map +0 -1
- package/dist/footer-BAZIMVSb.js +0 -1
- package/dist/handoff-B2wpybTf.js +0 -27
- package/dist/handoff-B2wpybTf.js.map +0 -1
- package/dist/hooks-resolution-kzoVsQAX.js +0 -478
- package/dist/hooks-resolution-kzoVsQAX.js.map +0 -1
- package/dist/openrouter-fusion-config-CPXLfmCA.js +0 -64
- package/dist/openrouter-fusion-config-CPXLfmCA.js.map +0 -1
- package/dist/prompt-presets-DOn1oZFJ.js +0 -1392
- package/dist/prompt-presets-DOn1oZFJ.js.map +0 -1
- package/dist/session-name-qyrX-OES.js +0 -157
- package/dist/session-name-qyrX-OES.js.map +0 -1
- package/dist/settings-UYlhEo3S.js +0 -172
- package/dist/settings-UYlhEo3S.js.map +0 -1
- package/dist/startup-screen-D5YGuwge.js +0 -217
- package/dist/startup-screen-D5YGuwge.js.map +0 -1
- package/dist/turn-timer-mowT6nwv.js +0 -63
- package/dist/turn-timer-mowT6nwv.js.map +0 -1
- package/dist/umans-provider-DIupQTRK.js +0 -306
- package/dist/umans-provider-DIupQTRK.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,263 +1,43 @@
|
|
|
1
1
|
# my-pi
|
|
2
2
|
|
|
3
|
-
[
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
[
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
3
|
+
Scott Spence's Pi: upstream [Pi](https://pi.dev) with these extensions
|
|
4
|
+
built in.
|
|
5
|
+
|
|
6
|
+
| Key | Package |
|
|
7
|
+
| --------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
8
|
+
| `filter-output` | [`pi-redact`](https://github.com/spences10/my-pi/tree/main/packages/pi-redact#readme) |
|
|
9
|
+
| `confirm-destructive` | [`pi-confirm-destructive`](https://github.com/spences10/my-pi/tree/main/packages/pi-confirm-destructive#readme) |
|
|
10
|
+
| `context-sidecar` | [`pi-context`](https://github.com/spences10/my-pi/tree/main/packages/pi-context#readme) |
|
|
11
|
+
| `lsp` | [`pi-lsp`](https://github.com/spences10/my-pi/tree/main/packages/pi-lsp#readme) |
|
|
12
|
+
| `recall` | [`pi-recall`](https://github.com/spences10/my-pi/tree/main/packages/pi-recall#readme) |
|
|
13
|
+
| `telemetry` | [`pi-telemetry`](https://github.com/spences10/my-pi/tree/main/packages/pi-telemetry#readme) |
|
|
14
|
+
| `observability` | [`pi-observability`](https://github.com/spences10/my-pi/tree/main/packages/pi-observability#readme) |
|
|
15
|
+
| `team-mode` | [`pi-team-mode`](https://github.com/spences10/my-pi/tree/main/packages/pi-team-mode#readme) |
|
|
16
|
+
| `harness` | [`pi-harness`](https://github.com/spences10/my-pi/tree/main/packages/pi-harness#readme) |
|
|
17
|
+
| `git-ui` | [`pi-git-ui`](https://github.com/spences10/my-pi/tree/main/packages/pi-git-ui#readme) |
|
|
18
|
+
| `footer` | [`pi-footer`](https://github.com/spences10/my-pi/tree/main/packages/pi-footer#readme) |
|
|
19
|
+
| `codex-usage` | [`pi-codex-usage`](https://github.com/spences10/my-pi/tree/main/packages/pi-codex-usage#readme) |
|
|
20
|
+
| `kimi-usage` | [`pi-kimi-usage`](https://github.com/spences10/my-pi/tree/main/packages/pi-kimi-usage#readme) |
|
|
21
|
+
| `coding-preferences` | [`pi-coding-preferences`](https://github.com/spences10/my-pi/tree/main/packages/pi-coding-preferences#readme) |
|
|
22
|
+
| `svelte-guardrails` | [`pi-svelte-guardrails`](https://github.com/spences10/my-pi/tree/main/packages/pi-svelte-guardrails#readme) |
|
|
23
|
+
| `talk` | [`pi-talk`](https://github.com/spences10/my-pi/tree/main/packages/pi-talk#readme) |
|
|
24
|
+
| `starfield` | [`pi-starfield`](https://github.com/spences10/my-pi/tree/main/packages/pi-starfield#readme) |
|
|
25
|
+
| `themes` | [`pi-themes`](https://github.com/spences10/my-pi/tree/main/packages/pi-themes#readme) |
|
|
19
26
|
|
|
20
27
|
```bash
|
|
21
28
|
pnpx --allow-build=@google/genai --allow-build=protobufjs my-pi@latest
|
|
22
|
-
# or: npx my-pi@latest / bunx my-pi@latest
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Two ways to use my-pi
|
|
26
|
-
|
|
27
|
-
### 1. Run the full distribution
|
|
28
|
-
|
|
29
|
-
Use `my-pi` if you want the complete, opinionated setup:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
pnpx --allow-build=@google/genai --allow-build=protobufjs my-pi@latest
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
This is its own CLI wrapper around Pi. Do not install the root package
|
|
36
|
-
with `pi install npm:my-pi`.
|
|
37
|
-
|
|
38
|
-
### 2. Install individual Pi packages
|
|
39
|
-
|
|
40
|
-
Most extensions in this repo are also published as normal Pi packages:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
pi install npm:@spences10/pi-lsp
|
|
44
|
-
pi install npm:@spences10/pi-mcp
|
|
45
|
-
pi install npm:@spences10/pi-redact
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Use this path if you already have your own Pi setup and only want
|
|
49
|
-
selected features. Package READMEs are the source of truth for install
|
|
50
|
-
instructions, commands, configuration, and runtime behavior.
|
|
51
|
-
|
|
52
|
-
For a project-local install, let Pi write the repo-owned package entry
|
|
53
|
-
and resource overrides:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
pi install -l npm:@spences10/pi-lsp
|
|
57
|
-
pi config -l
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Upstream Pi stores those choices in `.pi/settings.json`; project
|
|
61
|
-
resource deltas may use `autoload: false`. Keep `@spences10/pi-*`
|
|
62
|
-
extension state and resource-specific trust in the separate global
|
|
63
|
-
`~/.pi/agent/my-pi-settings.json` store. A project must not be able to
|
|
64
|
-
trust its own commands or executables through `.pi/settings.json`.
|
|
65
|
-
|
|
66
|
-
### Programmatic use
|
|
67
|
-
|
|
68
|
-
`create_my_pi()` accepts upstream `InlineExtension` values, including
|
|
69
|
-
named wrappers that keep startup extension paths descriptive. Bare
|
|
70
|
-
factory functions remain supported.
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
import { create_my_pi, type InlineExtension } from 'my-pi';
|
|
74
|
-
|
|
75
|
-
const audit_extension: InlineExtension = {
|
|
76
|
-
name: 'audit-events',
|
|
77
|
-
factory(pi) {
|
|
78
|
-
pi.on('agent_start', () => console.log('agent started'));
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
const runtime = await create_my_pi({
|
|
83
|
-
extensionFactories: [audit_extension],
|
|
84
|
-
});
|
|
85
29
|
```
|
|
86
30
|
|
|
87
|
-
|
|
88
|
-
Extensions list. Names beginning with `my-pi-` are reserved for the
|
|
89
|
-
managed distribution extensions; `create_my_pi()` rejects consumer
|
|
90
|
-
wrappers using that prefix before loading any extensions.
|
|
31
|
+
## Turn extensions on or off
|
|
91
32
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- **Project-aware MCP tools** — stdio and HTTP/streamable-HTTP servers
|
|
97
|
-
from `mcp.json`, scoped so sensitive or noisy tools only load for
|
|
98
|
-
the projects and orgs where they belong.
|
|
99
|
-
- **Project-aware skills** — discover, enable, disable, import, and
|
|
100
|
-
sync Pi-native skills, with different skill sets per project.
|
|
101
|
-
- **LSP tools** — diagnostics, hover, definitions, references, and
|
|
102
|
-
document symbols via language servers.
|
|
103
|
-
- **Context sidecar** — local SQLite storage for oversized tool
|
|
104
|
-
output, keeping long results searchable without flooding chat
|
|
105
|
-
context.
|
|
106
|
-
- **Guardrails** — Svelte and coding-preference checks that block
|
|
107
|
-
configured anti-patterns before agents write them.
|
|
108
|
-
- **Prompt presets** — base presets plus additive prompt layers with
|
|
109
|
-
per-project persistence.
|
|
110
|
-
- **Secret safety** — redaction plus reminders to use secret-safe
|
|
111
|
-
environment loading.
|
|
112
|
-
- **Recall, telemetry, and observability** — local support for
|
|
113
|
-
prior-session lookup, evals, latency analysis, live event streams,
|
|
114
|
-
and operational debugging.
|
|
115
|
-
- **Git UI** — interactive source-control staging and commit support.
|
|
116
|
-
- **Team mode** — peer coordination between independently opened Pi
|
|
117
|
-
sessions using groups, artifacts, and durable mailboxes.
|
|
118
|
-
- **Themes and TUI helpers** — visual polish and shared modal
|
|
119
|
-
primitives.
|
|
120
|
-
|
|
121
|
-
## Requirements
|
|
122
|
-
|
|
123
|
-
- Node.js `>=24.15.0`
|
|
124
|
-
- pnpm 11 for local development
|
|
125
|
-
- Pi authentication via `pi auth`, provider environment variables, or
|
|
126
|
-
supported OAuth flows
|
|
127
|
-
|
|
128
|
-
`my-pi` uses native `node:sqlite` through context, telemetry, and
|
|
129
|
-
observability packages. The CLI suppresses Node's expected
|
|
130
|
-
`node:sqlite` `ExperimentalWarning`; standalone package/API consumers
|
|
131
|
-
own their process warning policy until Node marks it stable.
|
|
132
|
-
|
|
133
|
-
### pnpm 11 first-run build approval
|
|
134
|
-
|
|
135
|
-
pnpm 11 asks for interactive approval before running the transitive
|
|
136
|
-
`@google/genai` preinstall and `protobufjs` postinstall hooks. Neither
|
|
137
|
-
hook builds runtime artifacts: the first prints a no-op message and
|
|
138
|
-
the second only checks dependency version syntax. Declining them does
|
|
139
|
-
not degrade `my-pi` functionality.
|
|
140
|
-
|
|
141
|
-
For a deterministic first run, or after accidentally selecting `No`,
|
|
142
|
-
rerun the Quick start command with both `--allow-build` flags. It
|
|
143
|
-
allows those two known hooks without the two-stage selection and
|
|
144
|
-
confirmation prompt. The package does not publish a `pnpm` settings
|
|
145
|
-
block because pnpm 11 ignores package-level build policy. The
|
|
146
|
-
`node-domexception` deprecation notice is also transitive and does not
|
|
147
|
-
affect runtime behavior.
|
|
148
|
-
|
|
149
|
-
## Common usage
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
# full TUI
|
|
153
|
-
pnpx my-pi@latest
|
|
154
|
-
|
|
155
|
-
# one-shot print mode
|
|
156
|
-
pnpx my-pi@latest "summarize this repo"
|
|
157
|
-
pnpx my-pi@latest -P "explicit print mode"
|
|
158
|
-
|
|
159
|
-
# NDJSON events for scripts/agents
|
|
160
|
-
pnpx my-pi@latest --json "list all TODO comments"
|
|
161
|
-
|
|
162
|
-
# RPC mode for team/agent orchestration
|
|
163
|
-
pnpx my-pi@latest --mode rpc
|
|
164
|
-
|
|
165
|
-
# local live observability dashboard
|
|
166
|
-
pnpx my-pi@latest
|
|
167
|
-
# then run /observability in the TUI to open the browser dashboard
|
|
168
|
-
pnpx my-pi@latest observability
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
Positional prompt arguments are joined with a single space. Everything
|
|
172
|
-
following `--` is prompt text, including tokens that look like
|
|
173
|
-
options. A non-empty `--prompt` (`-p`) value takes precedence over
|
|
174
|
-
positional text; stdin is used only when neither supplies a prompt.
|
|
175
|
-
`--mode json` and `--json` both select NDJSON output; `--mode print`
|
|
176
|
-
and `-P` both select plain text output.
|
|
177
|
-
|
|
178
|
-
Pi handles model authentication natively. For provider-specific model
|
|
179
|
-
examples, see the Pi docs and the relevant extension/package README.
|
|
180
|
-
|
|
181
|
-
Umans.ai is available as a built-in provider. Run `/login`, choose API
|
|
182
|
-
key auth, then choose Umans; select models like `umans/umans-coder` or
|
|
183
|
-
`umans/umans-flash`. A stored API key takes precedence over
|
|
184
|
-
`UMANS_API_KEY`; legacy Umans credentials remain readable. Pi
|
|
185
|
-
refreshes the remote model catalog for `/model`, persists the last
|
|
186
|
-
successful catalog, and falls back to the bundled catalog when the
|
|
187
|
-
network is unavailable. Disable the provider with
|
|
188
|
-
`--no-umans-provider`.
|
|
189
|
-
|
|
190
|
-
OpenRouter Fusion is configured by default: `my-pi` injects a
|
|
191
|
-
non-Anthropic Fusion panel/judge only for `openrouter/fusion`.
|
|
192
|
-
Configure it in `~/.pi/agent/my-pi-settings.json` under
|
|
193
|
-
`openRouterFusion`, e.g.
|
|
194
|
-
`{"openRouterFusion":{"analysisModels":["deepseek/deepseek-v3.2"],"judgeModel":"~openai/gpt-latest","force":false}}`.
|
|
195
|
-
Fusion is forced by default with `tool_choice: "required"`; set
|
|
196
|
-
`force: false` to let OpenRouter decide whether deliberation is
|
|
197
|
-
needed. Env vars `MY_PI_FUSION_ANALYSIS_MODELS`,
|
|
198
|
-
`MY_PI_FUSION_JUDGE_MODEL`, and `MY_PI_FUSION_FORCE` still work as
|
|
199
|
-
overrides. Disable with `--no-openrouter-fusion-config`.
|
|
200
|
-
|
|
201
|
-
## Reusable Pi packages
|
|
202
|
-
|
|
203
|
-
Install the full distribution with `pnpx my-pi@latest`, or install
|
|
204
|
-
selected extensions into vanilla Pi:
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
# Bash/Zsh/Fish
|
|
208
|
-
pi install npm:@spences10/pi-{context,lsp,team-mode}
|
|
33
|
+
```text
|
|
34
|
+
/extensions Open the switchboard
|
|
35
|
+
/extensions list Show each extension and its state
|
|
36
|
+
/extensions disable <key> Turn one off (enable to turn it back on)
|
|
209
37
|
```
|
|
210
38
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
| Package | Purpose |
|
|
214
|
-
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------- |
|
|
215
|
-
| [`@spences10/pi-coding-preferences`](./packages/pi-coding-preferences/README.md) | Configurable coding-workflow guardrails |
|
|
216
|
-
| [`@spences10/pi-confirm-destructive`](./packages/pi-confirm-destructive/README.md) | Destructive action confirmations |
|
|
217
|
-
| [`@spences10/pi-context`](./packages/pi-context/README.md) | Scoped SQLite FTS overflow cache for oversized tool output |
|
|
218
|
-
| [`@spences10/pi-codex-usage`](./packages/pi-codex-usage/README.md) | OpenAI Codex usage in the footer status area |
|
|
219
|
-
| [`@spences10/pi-factory`](./packages/pi-factory/README.md) | Paused experimental workflow control plane (opt-in) |
|
|
220
|
-
| [`@spences10/pi-git-ui`](./packages/pi-git-ui/README.md) | Interactive source-control staging UI |
|
|
221
|
-
| [`@spences10/pi-kimi-usage`](./packages/pi-kimi-usage/README.md) | Kimi For Coding usage in the footer status area |
|
|
222
|
-
| [`@spences10/pi-lsp`](./packages/pi-lsp/README.md) | LSP-backed diagnostics and symbol tools |
|
|
223
|
-
| [`@spences10/pi-mcp`](./packages/pi-mcp/README.md) | MCP server integration and `/mcp` |
|
|
224
|
-
| [`@spences10/pi-nopeek`](./packages/pi-nopeek/README.md) | `nopeek` reminder for secret-safe environment loading |
|
|
225
|
-
| [`@spences10/pi-observability`](./packages/pi-observability/README.md) | Live local event stream and browser dashboard |
|
|
226
|
-
| [`@spences10/pi-omnisearch`](./packages/pi-omnisearch/README.md) | `mcp-omnisearch` reminder for verified web research |
|
|
227
|
-
| [`@spences10/pi-recall`](./packages/pi-recall/README.md) | `pirecall` reminder and background sync |
|
|
228
|
-
| [`@spences10/pi-redact`](./packages/pi-redact/README.md) | Output redaction and `/redact-stats` |
|
|
229
|
-
| [`@spences10/pi-harness`](./packages/pi-harness/README.md) | Ephemeral task harness runtime |
|
|
230
|
-
| [`@spences10/pi-skills`](./packages/pi-skills/README.md) | Skill management, import, and sync |
|
|
231
|
-
| [`@spences10/pi-sqlite-tools`](./packages/pi-sqlite-tools/README.md) | `mcp-sqlite-tools` reminder for safer SQLite database work |
|
|
232
|
-
| [`@spences10/pi-starfield`](./packages/pi-starfield/README.md) | Twinkling stars in the input editor |
|
|
233
|
-
| [`@spences10/pi-svelte-guardrails`](./packages/pi-svelte-guardrails/README.md) | Svelte pattern guardrails |
|
|
234
|
-
| [`@spences10/pi-talk`](./packages/pi-talk/README.md) | Hold-Space Deepgram dictation |
|
|
235
|
-
| [`@spences10/pi-team-mode`](./packages/pi-team-mode/README.md) | Peer-session coordination and durable mailboxes |
|
|
236
|
-
| [`@spences10/pi-telemetry`](./packages/pi-telemetry/README.md) | Local SQLite telemetry and `/telemetry` |
|
|
237
|
-
| [`@spences10/pi-themes`](./packages/pi-themes/README.md) | Bundled theme pack for Pi |
|
|
238
|
-
|
|
239
|
-
Shared helper packages such as `@spences10/pi-child-env`,
|
|
240
|
-
`@spences10/pi-footer`, `@spences10/pi-git-remote`,
|
|
241
|
-
`@spences10/pi-project-trust`, `@spences10/pi-settings`,
|
|
242
|
-
`@spences10/pi-skill-importer`, `@spences10/pi-sqlite-core`, and
|
|
243
|
-
`@spences10/pi-tui-modal` are published as dependencies and are not
|
|
244
|
-
packages to install via `pi install`. See
|
|
245
|
-
[`docs/package-map.md`](./docs/package-map.md) for the authoritative
|
|
246
|
-
classification.
|
|
39
|
+
Changes save to `~/.pi/agent/my-pi-settings.json` and apply on reload.
|
|
40
|
+
Themes apply on the next start.
|
|
247
41
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
```text
|
|
251
|
-
apps/
|
|
252
|
-
web/ Landing page for discovering my-pi and its packages
|
|
253
|
-
src/
|
|
254
|
-
index.ts CLI entry point
|
|
255
|
-
api.ts Programmatic API
|
|
256
|
-
extensions/ Root-only built-ins and distro wiring
|
|
257
|
-
packages/
|
|
258
|
-
pi-*/ Reusable Pi packages and shared support packages
|
|
259
|
-
.pi/
|
|
260
|
-
presets.json Optional project prompt presets
|
|
261
|
-
presets/*.md Optional project prompt preset files
|
|
262
|
-
mcp.json Optional, user-created project MCP server config
|
|
263
|
-
```
|
|
42
|
+
Everything else (MCP, skills, models, sessions, `my-pi config`,
|
|
43
|
+
`my-pi install`) is upstream Pi: every Pi option and subcommand works.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ExtensionFactory } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
export interface MyPiExtension {
|
|
3
|
+
/** Saved in my-pi-settings.json `extensions.enabled`. */
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
description: string;
|
|
7
|
+
load: () => Promise<ExtensionFactory>;
|
|
8
|
+
}
|
|
9
|
+
export declare const EXTENSIONS: readonly MyPiExtension[];
|
|
10
|
+
/** Pi applies the saved theme before extensions load, so themes go in as a CLI path. */
|
|
11
|
+
export declare function themes_dir(): string;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
function package_dir(entry_url) {
|
|
6
|
+
// <package>/dist/index.js -> <package>
|
|
7
|
+
return dirname(dirname(fileURLToPath(entry_url)));
|
|
8
|
+
}
|
|
9
|
+
function with_resources(factory, resources) {
|
|
10
|
+
return async (pi) => {
|
|
11
|
+
pi.on('resources_discover', () => resources);
|
|
12
|
+
await factory(pi);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export const EXTENSIONS = [
|
|
16
|
+
{
|
|
17
|
+
key: 'filter-output',
|
|
18
|
+
label: 'Secret redaction',
|
|
19
|
+
description: 'Redacts likely secrets from tool output',
|
|
20
|
+
load: async () => (await import('@spences10/pi-redact'))
|
|
21
|
+
.default,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
key: 'confirm-destructive',
|
|
25
|
+
label: 'Confirm destructive',
|
|
26
|
+
description: 'Asks before destructive shell commands',
|
|
27
|
+
load: async () => (await import('@spences10/pi-confirm-destructive')).default,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
key: 'context-sidecar',
|
|
31
|
+
label: 'Context sidecar',
|
|
32
|
+
description: 'Searchable SQLite store for oversized tool output',
|
|
33
|
+
load: async () => (await import('@spences10/pi-context'))
|
|
34
|
+
.default,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: 'lsp',
|
|
38
|
+
label: 'LSP',
|
|
39
|
+
description: 'Language-server diagnostics and symbol tools',
|
|
40
|
+
load: async () => (await import('@spences10/pi-lsp'))
|
|
41
|
+
.default,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'recall',
|
|
45
|
+
label: 'Recall',
|
|
46
|
+
description: 'pirecall sync and past-session reminders',
|
|
47
|
+
load: async () => (await import('@spences10/pi-recall'))
|
|
48
|
+
.default,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
key: 'telemetry',
|
|
52
|
+
label: 'Telemetry',
|
|
53
|
+
description: 'Local SQLite telemetry; /telemetry on to record',
|
|
54
|
+
load: async () => (await import('@spences10/pi-telemetry'))
|
|
55
|
+
.default,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
key: 'observability',
|
|
59
|
+
label: 'Observability',
|
|
60
|
+
description: 'Live event stream and browser dashboard',
|
|
61
|
+
load: async () => (await import('@spences10/pi-observability')).default,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
key: 'team-mode',
|
|
65
|
+
label: 'Team mode',
|
|
66
|
+
description: 'Coordination between open Pi sessions',
|
|
67
|
+
load: async () => (await import('@spences10/pi-team-mode'))
|
|
68
|
+
.default,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: 'harness',
|
|
72
|
+
label: 'Harness',
|
|
73
|
+
description: 'Ephemeral task harness runtime and skills',
|
|
74
|
+
load: async () => {
|
|
75
|
+
const entry = import.meta.resolve('@spences10/pi-harness');
|
|
76
|
+
const { default: factory } = (await import(entry));
|
|
77
|
+
return with_resources(factory, {
|
|
78
|
+
skillPaths: [join(package_dir(entry), 'skills')],
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
key: 'git-ui',
|
|
84
|
+
label: 'Git UI',
|
|
85
|
+
description: 'Interactive staging, diff review, and commit',
|
|
86
|
+
load: async () => (await import('@spences10/pi-git-ui'))
|
|
87
|
+
.default,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
key: 'footer',
|
|
91
|
+
label: 'Footer',
|
|
92
|
+
description: 'Configurable footer status line',
|
|
93
|
+
load: async () => (await import('@spences10/pi-footer'))
|
|
94
|
+
.default,
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
key: 'codex-usage',
|
|
98
|
+
label: 'Codex usage',
|
|
99
|
+
description: 'OpenAI Codex usage in the footer',
|
|
100
|
+
load: async () => (await import('@spences10/pi-codex-usage'))
|
|
101
|
+
.default,
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
key: 'kimi-usage',
|
|
105
|
+
label: 'Kimi usage',
|
|
106
|
+
description: 'Kimi For Coding usage in the footer',
|
|
107
|
+
load: async () => (await import('@spences10/pi-kimi-usage'))
|
|
108
|
+
.default,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
key: 'coding-preferences',
|
|
112
|
+
label: 'Coding preferences',
|
|
113
|
+
description: 'Configurable coding-workflow guardrails',
|
|
114
|
+
load: async () => (await import('@spences10/pi-coding-preferences')).default,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
key: 'svelte-guardrails',
|
|
118
|
+
label: 'Svelte guardrails',
|
|
119
|
+
description: 'Blocks discouraged Svelte patterns',
|
|
120
|
+
load: async () => (await import('@spences10/pi-svelte-guardrails')).default,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
key: 'talk',
|
|
124
|
+
label: 'Talk',
|
|
125
|
+
description: 'Hold-Space Deepgram dictation',
|
|
126
|
+
load: async () => (await import('@spences10/pi-talk'))
|
|
127
|
+
.default,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
key: 'starfield',
|
|
131
|
+
label: 'Starfield',
|
|
132
|
+
description: 'Input stars and a suggested next prompt (Tab)',
|
|
133
|
+
load: async () => (await import('@spences10/pi-starfield'))
|
|
134
|
+
.default,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
key: 'themes',
|
|
138
|
+
label: 'Themes',
|
|
139
|
+
description: 'Bundled theme pack; choose one in /settings (restart to apply)',
|
|
140
|
+
// Loaded with --theme at startup; see theme_args().
|
|
141
|
+
load: async () => () => { },
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
/** Pi applies the saved theme before extensions load, so themes go in as a CLI path. */
|
|
145
|
+
export function themes_dir() {
|
|
146
|
+
return join(dirname(require.resolve('@spences10/pi-themes/package.json')), 'themes');
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export {};
|