@earendil-works/pi-coding-agent 0.99.2 → 1.0.0
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/CHANGELOG.md +46 -0
- package/dist/bundle/chunks/anthropic.js +2 -2
- package/dist/bundle/chunks/{azure-openai-responses-TLHNIYZK.js → azure-openai-responses-AFMVM6NP.js} +1 -1
- package/dist/bundle/chunks/{chunk-7QSPBJKW.js → chunk-2KTBZM5G.js} +14 -28
- package/dist/bundle/chunks/{chunk-R5J3MOBF.js → chunk-2VNGUWBO.js} +1 -1
- package/dist/bundle/chunks/chunk-33XOIQ5N.js +1204 -0
- package/dist/bundle/chunks/chunk-4KU537KD.js +2 -0
- package/dist/bundle/chunks/chunk-7FH3BDRG.js +82 -0
- package/dist/bundle/chunks/{chunk-45SXDISG.js → chunk-IBCPYVFK.js} +4 -4
- package/dist/bundle/chunks/chunk-KDN6RCEQ.js +4 -0
- package/dist/bundle/chunks/{chunk-G3UZ5FWD.js → chunk-LTXEMVMA.js} +11 -60
- package/dist/bundle/chunks/chunk-PRD6WYBT.js +16 -0
- package/dist/bundle/chunks/{cli-ALNBTL3U.js → cli-QOMC26IJ.js} +3 -3
- package/dist/bundle/chunks/codemode-worker.js +44 -5
- package/dist/bundle/chunks/execute-GVRSEGHL.js +367 -0
- package/dist/bundle/chunks/openai-chatgpt.js +1 -1
- package/dist/bundle/chunks/{openai-codex-responses-3GKGNXC4.js → openai-codex-responses-GK67DQQJ.js} +1 -1
- package/dist/bundle/chunks/openai-codex.js +1 -1
- package/dist/bundle/chunks/{openai-responses-S7GKCCDG.js → openai-responses-CQDDLDQF.js} +1 -1
- package/dist/bundle/chunks/openrouter.js +1 -1
- package/dist/bundle/chunks/pi-logo-animation-MPKZE4EK.js +2 -0
- package/dist/bundle/chunks/radius.js +1 -1
- package/dist/bundle/chunks/runtime-2SO2JDWM.js +2 -0
- package/dist/bundle/chunks/virtual-modules-6ZMK7GDO.js +2 -0
- package/dist/bundle/cli-runtime.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/cli/args.js +2 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session.d.ts +8 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +37 -8
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/mcp-servers.d.ts +6 -0
- package/dist/core/mcp-servers.d.ts.map +1 -1
- package/dist/core/mcp-servers.js +7 -0
- package/dist/core/mcp-servers.js.map +1 -1
- package/dist/core/model-registry.d.ts +3 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +4 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/radius.d.ts +2 -0
- package/dist/core/radius.d.ts.map +1 -1
- package/dist/core/radius.js +2 -0
- package/dist/core/radius.js.map +1 -1
- package/dist/core/settings-manager.d.ts +7 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +3 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt.js +1 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +3 -5
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts.map +1 -1
- package/dist/extensions/codemode/execute.js +154 -47
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/codemode/tool.d.ts +7 -7
- package/dist/extensions/codemode/tool.d.ts.map +1 -1
- package/dist/extensions/codemode/tool.js +55 -102
- package/dist/extensions/codemode/tool.js.map +1 -1
- package/dist/extensions/mcp/cli.js +2 -2
- package/dist/extensions/mcp/cli.js.map +1 -1
- package/dist/extensions/mcp/index.d.ts.map +1 -1
- package/dist/extensions/mcp/index.js +23 -12
- package/dist/extensions/mcp/index.js.map +1 -1
- package/dist/extensions/mcp/oauth.d.ts +8 -7
- package/dist/extensions/mcp/oauth.d.ts.map +1 -1
- package/dist/extensions/mcp/oauth.js +55 -30
- package/dist/extensions/mcp/oauth.js.map +1 -1
- package/dist/extensions/mcp/runtime.d.ts.map +1 -1
- package/dist/extensions/mcp/runtime.js +2 -1
- package/dist/extensions/mcp/runtime.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +8 -2
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +24 -21
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/pi-logo-animation.d.ts +68 -0
- package/dist/modes/interactive/components/pi-logo-animation.d.ts.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.js +1086 -0
- package/dist/modes/interactive/components/pi-logo-animation.js.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts +7 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.d.ts.map +1 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.js +12 -0
- package/dist/modes/interactive/components/pi-logo-animation.lazy.js.map +1 -0
- package/dist/modes/interactive/components/pi-logo.d.ts +7 -0
- package/dist/modes/interactive/components/pi-logo.d.ts.map +1 -1
- package/dist/modes/interactive/components/pi-logo.js +13 -1
- package/dist/modes/interactive/components/pi-logo.js.map +1 -1
- package/dist/modes/interactive/components/radius-login-selector.d.ts +15 -0
- package/dist/modes/interactive/components/radius-login-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/radius-login-selector.js +85 -0
- package/dist/modes/interactive/components/radius-login-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +5 -5
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +5 -4
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +10 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +153 -40
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/system-theme.d.ts +2 -1
- package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/system-theme.js +16 -5
- package/dist/modes/interactive/theme/system-theme.js.map +1 -1
- package/docs/cli.md +6 -16
- package/docs/codemode.md +207 -0
- package/docs/docs.json +5 -1
- package/docs/environment-variables.md +2 -2
- package/docs/index.md +1 -1
- package/docs/mcp.md +17 -0
- package/docs/models.md +22 -1
- package/docs/providers.md +16 -6
- package/docs/sdk.md +1 -1
- package/docs/settings.md +3 -3
- package/docs/usage.md +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +25 -30
- package/package.json +10 -10
- package/dist/bundle/chunks/chunk-3KYEVQKX.js +0 -82
- package/dist/bundle/chunks/chunk-3NVH2HQH.js +0 -4
- package/dist/bundle/chunks/chunk-3YAHQSW6.js +0 -1438
- package/dist/bundle/chunks/chunk-ECRK44UV.js +0 -2
- package/dist/bundle/chunks/execute-RC7W4ML3.js +0 -328
- package/dist/bundle/chunks/runtime-NJPX4ID2.js +0 -2
- package/dist/bundle/chunks/virtual-modules-5UGH4HRZ.js +0 -2
|
@@ -6,7 +6,7 @@ Pi uses environment variables in three ways:
|
|
|
6
6
|
- Pi sets process markers so child processes can identify Pi as the launching agent.
|
|
7
7
|
- Commands run by the LLM-callable shell tools receive `PI_*` variables describing the current session.
|
|
8
8
|
|
|
9
|
-
Provider API-key variables are documented separately in [
|
|
9
|
+
Provider API-key variables are documented separately in [Providers](providers.md#use-an-api-key-from-the-environment).
|
|
10
10
|
|
|
11
11
|
## Process Marker
|
|
12
12
|
|
|
@@ -95,4 +95,4 @@ These variables are read by Pi itself:
|
|
|
95
95
|
| `VISUAL`, `EDITOR` | External editor fallback when `externalEditor` is unset |
|
|
96
96
|
| `HTTP_PROXY`, `HTTPS_PROXY` | Proxy outbound HTTP requests |
|
|
97
97
|
|
|
98
|
-
Provider credentials such as `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, and
|
|
98
|
+
Provider credentials such as `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, and provider-specific configuration are listed in [Providers](providers.md#use-an-api-key-from-the-environment).
|
package/docs/index.md
CHANGED
|
@@ -30,7 +30,7 @@ Use the [Quickstart customization chooser](quickstart.md#choose-how-to-customize
|
|
|
30
30
|
|
|
31
31
|
## Find reference and setup information
|
|
32
32
|
|
|
33
|
-
Use the reference pages to look up [CLI options](cli.md), [settings](settings.md), [
|
|
33
|
+
Use the reference pages to look up [CLI options](cli.md), [settings](settings.md), [providers](providers.md), [keybindings](keybindings.md), and [environment variables](environment-variables.md).
|
|
34
34
|
|
|
35
35
|
For platform-specific help, see [Terminal Setup](terminal-setup.md), [Windows](windows.md), [tmux](tmux.md), [Termux on Android](termux.md), or [Containerization](containerization.md).
|
|
36
36
|
|
package/docs/mcp.md
CHANGED
|
@@ -118,6 +118,8 @@ When the server rejects an unauthenticated connection, `/mcp` shows that it need
|
|
|
118
118
|
|
|
119
119
|
Pi registers itself with the authorization server, stores tokens in `~/.pi/agent/mcp-auth.json`, and refreshes access tokens when they expire or the server rejects them. If a server later requests additional scope, Pi asks for sign-in again. Signing out deletes the stored credentials.
|
|
120
120
|
|
|
121
|
+
Credentials belong to a server name and URL. Servers with the same URL under different names, such as one per account, sign in separately; servers with the same name and URL in different `mcp.json` files share one sign-in.
|
|
122
|
+
|
|
121
123
|
OAuth applies to HTTP servers without an `Authorization` header. For a server that does not support dynamic client registration, configure a registered client:
|
|
122
124
|
|
|
123
125
|
```json
|
|
@@ -147,6 +149,21 @@ Pi registers as `pi`. Some servers only accept registrations from known clients.
|
|
|
147
149
|
|
|
148
150
|
The name is only sent when Pi registers a client. To register again under a new name, sign out first.
|
|
149
151
|
|
|
152
|
+
Pi finds the authorization server through the server's protected resource metadata (RFC 9728) and checks that the authorization server's metadata names the expected issuer (RFC 8414). Some servers advertise the wrong authorization server or none, so sign-in opens a page that does not exist. Set `authServerMetadataUrl` to the metadata document of the right authorization server:
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"mcpServers": {
|
|
157
|
+
"example": {
|
|
158
|
+
"url": "https://mcp.example.com/mcp",
|
|
159
|
+
"oauth": { "authServerMetadataUrl": "https://example.okta.com/.well-known/openid-configuration" }
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Pi uses that document instead of discovery and trusts it as configured, so only point it at a document you trust. The URL must use HTTPS, except on `localhost`, `127.0.0.1`, or `[::1]`.
|
|
166
|
+
|
|
150
167
|
## Control tool exposure
|
|
151
168
|
|
|
152
169
|
Each server tool is registered as `mcp__<server>__<tool>`. The server's `exposure` determines how the model reaches it:
|
package/docs/models.md
CHANGED
|
@@ -18,7 +18,7 @@ Browse the [model catalog](https://pi.dev/models) for current providers, model I
|
|
|
18
18
|
|
|
19
19
|
Run `/login` and select a provider. Pi stores credentials in [`auth.json`](configuration.md#agent-directory). Run `/logout` to remove stored credentials for a provider.
|
|
20
20
|
|
|
21
|
-
You can instead provide an API key through the provider's environment variable. This is useful in CI and other environments where Pi should not write credentials. [
|
|
21
|
+
You can instead provide an API key through the provider's environment variable. This is useful in CI and other environments where Pi should not write credentials. [Providers](providers.md) lists the variables and provider-specific setup.
|
|
22
22
|
|
|
23
23
|
When several credential sources are configured, Pi uses a runtime `--api-key` first, then a stored `auth.json` credential, an `apiKey` from `models.json`, and finally the provider's environment variables or ambient cloud credentials. Provider extensions can define their own authentication behavior.
|
|
24
24
|
|
|
@@ -131,10 +131,31 @@ const result = await models.classify(jev, {
|
|
|
131
131
|
return result.answers;
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
+
[Codemode](codemode.md#classify) describes the question and answer types.
|
|
135
|
+
|
|
134
136
|
When the service reports token counts, as all System One services do, `result.usage` carries them with their cost. Pi adds the usage of a script's classifier calls to the `codemode` tool result, so it counts toward the session cost in the footer and `/session`. The cost uses the model's catalog price; models without one, such as TypeSafe's direct `jev-latest`, report tokens at no cost.
|
|
135
137
|
|
|
136
138
|
Extensions call classifiers through `ctx.modelRegistry.classify()`, without codemode. [Virtual models](virtual-models.md#route-requests) can use them to route requests; see the `jev-router.ts` example.
|
|
137
139
|
|
|
140
|
+
## Use image models
|
|
141
|
+
|
|
142
|
+
Image models generate images from a prompt and optional input images. Pi lists OpenRouter's image models, such as `google/gemini-2.5-flash-image` and `black-forest-labs/flux.2-pro`, under the `openrouter` provider; they use the same `OPENROUTER_API_KEY` or `/login` credential as its chat models.
|
|
143
|
+
|
|
144
|
+
Like classifier models, image models do not appear in `/model`; the model reaches them through the [`codemode`](cli.md#enable-codemode) tool. Scripts list them with `models.getAvailableOfType("image")` and call `models.generateImages(model, { input })`. The result's `output` holds base64 image blocks, which `image()` attaches to the `codemode` result so the model sees them:
|
|
145
|
+
|
|
146
|
+
```js
|
|
147
|
+
const painter = await models.getModelOfType("image", "openrouter", "google/gemini-2.5-flash-image");
|
|
148
|
+
const result = await models.generateImages(painter, {
|
|
149
|
+
input: [{ type: "text", text: "A red fox in the snow, watercolor" }],
|
|
150
|
+
});
|
|
151
|
+
if (result.stopReason !== "stop") return result.errorMessage;
|
|
152
|
+
for (const block of result.output) if (block.type === "image") image(block);
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
`input` can also contain `{ type: "image", data, mimeType }` blocks to edit or use as references. Pi adds the usage of a script's image calls to the `codemode` tool result, like classifier calls. Generated images are not saved to disk. [Codemode](codemode.md#generate-images) describes the full API.
|
|
156
|
+
|
|
157
|
+
Extensions generate images through `ctx.modelRegistry.generateImages()`, without codemode.
|
|
158
|
+
|
|
138
159
|
## Add a custom provider
|
|
139
160
|
|
|
140
161
|
Use an extension when the provider needs custom streaming, model discovery, or authentication behavior. See [Custom Providers](custom-provider.md) for the extension workflow.
|
package/docs/providers.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Providers
|
|
2
2
|
|
|
3
3
|
Most hosted providers support one or both of these authentication methods:
|
|
4
4
|
|
|
@@ -17,8 +17,6 @@ Run `/logout` and select a provider to remove its stored credential. This does n
|
|
|
17
17
|
|
|
18
18
|
`auth.json` can contain API keys and OAuth tokens. Keep it private and do not commit it.
|
|
19
19
|
|
|
20
|
-
Radius authentication uses its gateway catalog and caches refreshed model metadata for later offline startup. A custom Radius gateway configured in `models.json` uses its own catalog rather than inheriting the public `radius.pi.dev` catalog.
|
|
21
|
-
|
|
22
20
|
## Use an API key from the environment
|
|
23
21
|
|
|
24
22
|
Environment variables are useful in CI and anywhere Pi should not store the key. Set the variable before starting Pi:
|
|
@@ -28,7 +26,7 @@ export ANTHROPIC_API_KEY=sk-ant-...
|
|
|
28
26
|
pi
|
|
29
27
|
```
|
|
30
28
|
|
|
31
|
-
This table covers providers with a single primary API-key variable. Providers that need additional configuration or support ambient credentials are covered under [
|
|
29
|
+
This table covers providers with a single primary API-key variable. Providers that need additional configuration or support ambient credentials are covered under [Provider Specific Config](#provider-specific-config).
|
|
32
30
|
|
|
33
31
|
| Provider | Environment variable |
|
|
34
32
|
|---|---|
|
|
@@ -85,9 +83,9 @@ To use a secret manager without writing the resolved key to disk, set a provider
|
|
|
85
83
|
|
|
86
84
|
Pi runs the command when the key is first needed and caches its standard output for the process lifetime. Empty output, a timeout, or a nonzero exit leaves the key unresolved until Pi restarts.
|
|
87
85
|
|
|
88
|
-
##
|
|
86
|
+
## Provider Specific Config
|
|
89
87
|
|
|
90
|
-
The providers below need additional settings or can use credentials supplied by their
|
|
88
|
+
The providers below have additional setup, need additional settings, or can use credentials supplied by their platform.
|
|
91
89
|
|
|
92
90
|
A stored API-key credential can include an `env` object. Its values take priority over the process environment for that provider:
|
|
93
91
|
|
|
@@ -103,6 +101,18 @@ A stored API-key credential can include an `env` object. Its values take priorit
|
|
|
103
101
|
}
|
|
104
102
|
```
|
|
105
103
|
|
|
104
|
+
### Radius
|
|
105
|
+
|
|
106
|
+
Radius is a service crafted for Pi by the builders of Pi, Earendil Works. It provides a customizable AI gateway with organization-level controls and analytics built in, and artifacts for sharing what you create with Pi.
|
|
107
|
+
|
|
108
|
+
To get started, run `/login radius` in Pi. This adds Radius as a provider, and its models appear in `/model` like any other provider's.
|
|
109
|
+
|
|
110
|
+
Radius also has an MCP server, so Pi can manage Radius for you.
|
|
111
|
+
|
|
112
|
+
Radius is currently in early alpha and evolving quickly. See [radius.earendil.com](https://radius.earendil.com) for more.
|
|
113
|
+
|
|
114
|
+
Radius authentication uses its gateway catalog and caches refreshed model metadata for later offline startup. A custom Radius gateway configured in `models.json` uses its own catalog rather than inheriting the public `radius.pi.dev` catalog.
|
|
115
|
+
|
|
106
116
|
### Azure OpenAI
|
|
107
117
|
|
|
108
118
|
Set an API key plus either a base URL or resource name:
|
package/docs/sdk.md
CHANGED
|
@@ -140,7 +140,7 @@ See the focused examples for [models](../examples/sdk/02-custom-model.ts), [tool
|
|
|
140
140
|
|
|
141
141
|
## Resources
|
|
142
142
|
|
|
143
|
-
- [Choose a Model](models.md) covers model selection and compatible endpoints; [
|
|
143
|
+
- [Choose a Model](models.md) covers model selection and compatible endpoints; [Providers](providers.md) covers credentials and provider-specific setup.
|
|
144
144
|
- [Configuration](configuration.md) explains normal discovery and settings; [Settings](settings.md) lists every setting.
|
|
145
145
|
- [Sessions and Context](sessions.md) explains session behavior; [Session Format](session-format.md) defines persisted entries; [Message Types](message-types.md) defines shared transcript values.
|
|
146
146
|
- [Extensions](extensions.md), [Skills](skills.md), and [Prompt Templates](prompt-templates.md) document resources supplied through a `ResourceLoader`.
|
package/docs/settings.md
CHANGED
|
@@ -38,7 +38,7 @@ See [Choose a Model](models.md) for model selection and thinking controls.
|
|
|
38
38
|
| Setting | Type | Default | Description |
|
|
39
39
|
|---|---|---|---|
|
|
40
40
|
| `defaultTools` | `string[]` | `read`, `bash`, `edit`, `write` | Tools enabled at startup. Plain names replace the defaults; `+name` adds a tool and `-name` removes one. An empty array disables all built-in tools but not extension or SDK tools. |
|
|
41
|
-
| `codemode.mode` | `"on"` \| `"only"` | `"on"` | How the `codemode` tool presents tools while it is active. `on`: declared tools get
|
|
41
|
+
| `codemode.mode` | `"on"` \| `"only"` | `"on"` | How the `codemode` tool presents tools while it is active. `on`: declared tools get a note on calling them from scripts appended to their description, and `codemode` lists only tools that are not declared. `only`: `codemode` lists every tool scripts can call, and active built-in and extension tools are hidden from the model, so it reaches them through `codemode`. |
|
|
42
42
|
| `codemode.inlineBudget` | number | `3000` | Estimated tokens (characters / 4) the `codemode` tool's description may spend on tool declarations. Tools that do not fit are left out and found with `searchTools()`. `0` lists only namespaces. |
|
|
43
43
|
|
|
44
44
|
Available built-in tools are `read`, `bash`, `powershell`, `edit`, `write`, `grep`, `find`, and `ls`. `defaultTools` can also name `codemode` and `tool_search`, which built-in extensions register inactive, and other extension tools registered inactive.
|
|
@@ -90,8 +90,8 @@ See [Compaction Reference](compaction.md) for trigger, summarization, and valida
|
|
|
90
90
|
| Setting | Type | Default | Description |
|
|
91
91
|
|---|---|---|---|
|
|
92
92
|
| `theme` | string | `"system"` | Built-in or custom theme name. `system` derives colors from the terminal theme. |
|
|
93
|
-
| `quietStartup` | boolean | `false` |
|
|
94
|
-
| `tuiMode` | `"regular" \| "fullscreen"` | `"
|
|
93
|
+
| `quietStartup` | boolean \| `"header"` | `false` | `true` hides the startup header and loaded-resource listing. `"header"` keeps the header (version and key hints) but hides the model scope line and loaded-resource listing. |
|
|
94
|
+
| `tuiMode` | `"regular" \| "fullscreen"` | `"fullscreen"` | Interactive terminal UI mode. |
|
|
95
95
|
| `fullscreenExitOutput` | `"transcript" \| "resume-hint"` | `"transcript"` | Output printed when fullscreen mode exits. |
|
|
96
96
|
| `fullscreenScrollbar` | `"auto" \| "always" \| "hidden"` | `"auto"` | Fullscreen transcript scrollbar behavior. |
|
|
97
97
|
| `fullscreenCopyOnSelect` | boolean | `true` | Copy selected text automatically in fullscreen mode. |
|
package/docs/usage.md
CHANGED
|
@@ -83,7 +83,7 @@ Use `/share` to upload the session and get a viewer link. With Radius authentica
|
|
|
83
83
|
|
|
84
84
|
## Adjust the terminal
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
Fullscreen mode, the default, keeps the editor and status area fixed while the transcript scrolls within the terminal window. Regular mode uses the terminal's normal scrollback. Choose a mode through `/settings` or `--tui-mode`.
|
|
87
87
|
|
|
88
88
|
Terminal support for mouse input, keyboard shortcuts, and inline images varies. See [Terminal Setup](terminal-setup.md) for platform-specific configuration and [Keybindings](keybindings.md) for every configurable shortcut. Run `/hotkeys` to inspect the shortcuts active in your current session.
|
|
89
89
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-custom-provider",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-custom-provider",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "1.0.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sdk": "^0.52.0"
|
|
12
12
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-gondolin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-gondolin",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "1.0.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@earendil-works/gondolin": "0.12.0"
|
|
12
12
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-sandbox",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-sandbox",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "1.0.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@anthropic-ai/sandbox-runtime": "^0.0.26"
|
|
12
12
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-extension-with-deps",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "pi-extension-with-deps",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "1.0.0",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"ms": "^2.1.3"
|
|
12
12
|
},
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@earendil-works/pi-coding-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@earendil-works/pi-coding-agent",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "1.0.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@earendil-works/chord": "^0.
|
|
13
|
-
"@earendil-works/pi-agent-core": "^0.
|
|
14
|
-
"@earendil-works/pi-ai": "^0.
|
|
15
|
-
"@earendil-works/pi-codemode": "^0.
|
|
16
|
-
"@earendil-works/pi-mcp": "^0.
|
|
17
|
-
"@earendil-works/pi-tui": "^0.
|
|
12
|
+
"@earendil-works/chord": "^1.0.0",
|
|
13
|
+
"@earendil-works/pi-agent-core": "^1.0.0",
|
|
14
|
+
"@earendil-works/pi-ai": "^1.0.0",
|
|
15
|
+
"@earendil-works/pi-codemode": "^1.0.0",
|
|
16
|
+
"@earendil-works/pi-mcp": "^1.0.0",
|
|
17
|
+
"@earendil-works/pi-tui": "^1.0.0",
|
|
18
18
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
19
19
|
"chalk": "6.0.0",
|
|
20
20
|
"cross-spawn": "7.0.6",
|
|
@@ -411,8 +411,8 @@
|
|
|
411
411
|
}
|
|
412
412
|
},
|
|
413
413
|
"node_modules/@earendil-works/chord": {
|
|
414
|
-
"version": "0.
|
|
415
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-0.
|
|
414
|
+
"version": "1.0.0",
|
|
415
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.0.0.tgz",
|
|
416
416
|
"license": "MIT",
|
|
417
417
|
"dependencies": {
|
|
418
418
|
"esbuild": "0.28.2"
|
|
@@ -422,30 +422,25 @@
|
|
|
422
422
|
}
|
|
423
423
|
},
|
|
424
424
|
"node_modules/@earendil-works/pi-agent-core": {
|
|
425
|
-
"version": "0.
|
|
426
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.
|
|
425
|
+
"version": "1.0.0",
|
|
426
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.0.0.tgz",
|
|
427
427
|
"license": "MIT",
|
|
428
428
|
"dependencies": {
|
|
429
|
-
"@earendil-works/
|
|
430
|
-
"
|
|
431
|
-
"@earendil-works/pi-telemetry": "^0.99.2",
|
|
432
|
-
"diff": "8.0.4",
|
|
433
|
-
"ignore": "7.0.8",
|
|
434
|
-
"typebox": "1.3.27",
|
|
435
|
-
"yaml": "2.9.0"
|
|
429
|
+
"@earendil-works/pi-ai": "^1.0.0",
|
|
430
|
+
"typebox": "1.3.27"
|
|
436
431
|
},
|
|
437
432
|
"engines": {
|
|
438
433
|
"node": ">=22.19.0"
|
|
439
434
|
}
|
|
440
435
|
},
|
|
441
436
|
"node_modules/@earendil-works/pi-ai": {
|
|
442
|
-
"version": "0.
|
|
443
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.
|
|
437
|
+
"version": "1.0.0",
|
|
438
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.0.tgz",
|
|
444
439
|
"license": "MIT",
|
|
445
440
|
"dependencies": {
|
|
446
441
|
"@anthropic-ai/sdk": "0.124.0",
|
|
447
442
|
"@aws-sdk/client-bedrock-runtime": "3.1127.0",
|
|
448
|
-
"@earendil-works/pi-telemetry": "^0.
|
|
443
|
+
"@earendil-works/pi-telemetry": "^1.0.0",
|
|
449
444
|
"@google/genai": "2.21.0",
|
|
450
445
|
"@smithy/node-http-handler": "4.12.1",
|
|
451
446
|
"http-proxy-agent": "9.1.0",
|
|
@@ -522,8 +517,8 @@
|
|
|
522
517
|
}
|
|
523
518
|
},
|
|
524
519
|
"node_modules/@earendil-works/pi-codemode": {
|
|
525
|
-
"version": "0.
|
|
526
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-0.
|
|
520
|
+
"version": "1.0.0",
|
|
521
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.0.0.tgz",
|
|
527
522
|
"license": "MIT",
|
|
528
523
|
"dependencies": {
|
|
529
524
|
"quickjs-wasi": "3.6.2"
|
|
@@ -533,8 +528,8 @@
|
|
|
533
528
|
}
|
|
534
529
|
},
|
|
535
530
|
"node_modules/@earendil-works/pi-mcp": {
|
|
536
|
-
"version": "0.
|
|
537
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-mcp/-/pi-mcp-0.
|
|
531
|
+
"version": "1.0.0",
|
|
532
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-mcp/-/pi-mcp-1.0.0.tgz",
|
|
538
533
|
"license": "MIT",
|
|
539
534
|
"dependencies": {
|
|
540
535
|
"cross-spawn": "7.0.6"
|
|
@@ -544,16 +539,16 @@
|
|
|
544
539
|
}
|
|
545
540
|
},
|
|
546
541
|
"node_modules/@earendil-works/pi-telemetry": {
|
|
547
|
-
"version": "0.
|
|
548
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.
|
|
542
|
+
"version": "1.0.0",
|
|
543
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.0.tgz",
|
|
549
544
|
"license": "MIT",
|
|
550
545
|
"engines": {
|
|
551
546
|
"node": ">=22.19.0"
|
|
552
547
|
}
|
|
553
548
|
},
|
|
554
549
|
"node_modules/@earendil-works/pi-tui": {
|
|
555
|
-
"version": "0.
|
|
556
|
-
"resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.
|
|
550
|
+
"version": "1.0.0",
|
|
551
|
+
"resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.0.0.tgz",
|
|
557
552
|
"license": "MIT",
|
|
558
553
|
"dependencies": {
|
|
559
554
|
"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.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"piConfig": {
|
|
@@ -49,12 +49,12 @@
|
|
|
49
49
|
"prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@earendil-works/chord": "^0.
|
|
53
|
-
"@earendil-works/pi-agent-core": "^0.
|
|
54
|
-
"@earendil-works/pi-ai": "^0.
|
|
55
|
-
"@earendil-works/pi-codemode": "^0.
|
|
56
|
-
"@earendil-works/pi-mcp": "^0.
|
|
57
|
-
"@earendil-works/pi-tui": "^0.
|
|
52
|
+
"@earendil-works/chord": "^1.0.0",
|
|
53
|
+
"@earendil-works/pi-agent-core": "^1.0.0",
|
|
54
|
+
"@earendil-works/pi-ai": "^1.0.0",
|
|
55
|
+
"@earendil-works/pi-codemode": "^1.0.0",
|
|
56
|
+
"@earendil-works/pi-mcp": "^1.0.0",
|
|
57
|
+
"@earendil-works/pi-tui": "^1.0.0",
|
|
58
58
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
59
59
|
"chalk": "6.0.0",
|
|
60
60
|
"cross-spawn": "7.0.6",
|
|
@@ -76,9 +76,9 @@
|
|
|
76
76
|
"protobufjs": "7.6.6"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@earendil-works/pi-client": "^0.
|
|
80
|
-
"@earendil-works/pi-protocol": "^0.
|
|
81
|
-
"@earendil-works/pi-server": "^0.
|
|
79
|
+
"@earendil-works/pi-client": "^1.0.0",
|
|
80
|
+
"@earendil-works/pi-protocol": "^1.0.0",
|
|
81
|
+
"@earendil-works/pi-server": "^1.0.0",
|
|
82
82
|
"@types/cross-spawn": "6.0.6",
|
|
83
83
|
"@types/hosted-git-info": "3.0.5",
|
|
84
84
|
"@types/node": "22.19.19",
|