@astralyn/pi 1.1.0 → 1.2.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 +42 -0
- package/dist/bundle/chunks/anthropic-messages-NVP5OPIM.js +6 -0
- package/dist/bundle/chunks/{azure-openai-responses-CH74HGP4.js → azure-openai-responses-IBTOZ5MH.js} +1 -1
- package/dist/bundle/chunks/{chunk-H35KWBT5.js → chunk-4XZYHGVN.js} +1 -1
- package/dist/bundle/chunks/{chunk-3MMB5I7J.js → chunk-7HJ6CHUB.js} +1 -1
- package/dist/bundle/chunks/{chunk-MAC4N3BW.js → chunk-7UBIBLPN.js} +1 -1
- package/dist/bundle/chunks/{chunk-D3XW5X3Z.js → chunk-A5HU4TE6.js} +160 -229
- package/dist/bundle/chunks/{chunk-C2ARIVS3.js → chunk-B2UOWO4A.js} +1 -1
- package/dist/bundle/chunks/{chunk-KAC2YPTW.js → chunk-J75WV3FL.js} +1 -1
- package/dist/bundle/chunks/{chunk-TEAAYBTS.js → chunk-LHSPN2IO.js} +1 -1
- package/dist/bundle/chunks/chunk-Q74S7ILH.js +2 -0
- package/dist/bundle/chunks/{chunk-QLU3LESZ.js → chunk-QDDSFJ35.js} +1 -1
- package/dist/bundle/chunks/{chunk-EJEOEBSJ.js → chunk-UQECUCUH.js} +1 -1
- package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-XO45ZT3V.js → cloudflare-workers-ai-system-one-HGOVFZDC.js} +1 -1
- package/dist/bundle/chunks/codemode-worker.js +17 -9
- package/dist/bundle/chunks/github-copilot.js +1 -1
- package/dist/bundle/chunks/{google-generative-ai-VVO64ZRQ.js → google-generative-ai-M44TSMAN.js} +1 -1
- package/dist/bundle/chunks/{google-vertex-LKS5NUHA.js → google-vertex-3C4OWLFX.js} +1 -1
- package/dist/bundle/chunks/{mistral-conversations-NJUOG4ET.js → mistral-conversations-I5PL4VCZ.js} +1 -1
- package/dist/bundle/chunks/openai-codex-responses-O5EUDL54.js +10 -0
- package/dist/bundle/chunks/{openai-completions-7HTTU6FH.js → openai-completions-X3SSG5BQ.js} +1 -1
- package/dist/bundle/chunks/{openai-decisions-776H4VDZ.js → openai-decisions-TVCDIPZX.js} +1 -1
- package/dist/bundle/chunks/{openai-responses-7A6BAQ5X.js → openai-responses-NYPNKVDV.js} +1 -1
- package/dist/bundle/chunks/{typesafe-system-one-2DQLG4R2.js → typesafe-system-one-LWPJYTJP.js} +1 -1
- package/dist/bundle/chunks/{virtual-modules-2NHGQRS6.js → virtual-modules-OZTPKGU7.js} +1 -1
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/core/agent-session.d.ts +14 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +93 -58
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +20 -13
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bug-report.d.ts +9 -1
- package/dist/core/bug-report.d.ts.map +1 -1
- package/dist/core/compaction/utils.d.ts +6 -0
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +7 -8
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +4 -2
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +2 -3
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +31 -7
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/key-id-schema.d.ts +6 -0
- package/dist/core/key-id-schema.d.ts.map +1 -0
- package/dist/core/key-id-schema.js +16 -0
- package/dist/core/key-id-schema.js.map +1 -0
- package/dist/core/keybinding-registry.d.ts +4 -3
- package/dist/core/keybinding-registry.d.ts.map +1 -1
- package/dist/core/keybinding-registry.js +4 -3
- package/dist/core/keybinding-registry.js.map +1 -1
- package/dist/core/keybindings-schema.d.ts +4 -0
- package/dist/core/keybindings-schema.d.ts.map +1 -0
- package/dist/core/keybindings-schema.js +16 -0
- package/dist/core/keybindings-schema.js.map +1 -0
- package/dist/core/keybindings.d.ts +258 -81
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +27 -24
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-config.d.ts +713 -180
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +18 -179
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +11 -6
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +3 -3
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/project-trust.d.ts.map +1 -1
- package/dist/core/project-trust.js +2 -1
- package/dist/core/project-trust.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +12 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +82 -24
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +7 -2
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/settings-defaults.d.ts +65 -0
- package/dist/core/settings-defaults.d.ts.map +1 -0
- package/dist/core/settings-defaults.js +66 -0
- package/dist/core/settings-defaults.js.map +1 -0
- package/dist/core/settings-manager.d.ts +4 -149
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +48 -44
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-schema.d.ts +231 -0
- package/dist/core/settings-schema.d.ts.map +1 -0
- package/dist/core/settings-schema.js +294 -0
- package/dist/core/settings-schema.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +18 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +46 -0
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/renderers/bash.d.ts.map +1 -1
- package/dist/core/tools/renderers/bash.js +21 -50
- package/dist/core/tools/renderers/bash.js.map +1 -1
- package/dist/extensions/btw/keybindings.d.ts +2 -2
- package/dist/extensions/btw/keybindings.d.ts.map +1 -1
- package/dist/extensions/btw/keybindings.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts.map +1 -1
- package/dist/extensions/codemode/execute.js +64 -45
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/codemode/index.d.ts.map +1 -1
- package/dist/extensions/codemode/index.js +3 -7
- package/dist/extensions/codemode/index.js.map +1 -1
- package/dist/extensions/codemode/renderer.d.ts +2 -2
- package/dist/extensions/codemode/renderer.d.ts.map +1 -1
- package/dist/extensions/codemode/renderer.js +9 -3
- package/dist/extensions/codemode/renderer.js.map +1 -1
- package/dist/extensions/codemode/tool.d.ts +6 -12
- package/dist/extensions/codemode/tool.d.ts.map +1 -1
- package/dist/extensions/codemode/tool.js +44 -32
- package/dist/extensions/codemode/tool.js.map +1 -1
- package/dist/extensions/list-keybindings.d.ts +2 -2
- package/dist/extensions/list-keybindings.d.ts.map +1 -1
- package/dist/extensions/list-keybindings.js.map +1 -1
- package/dist/extensions/mcp/cli.js +5 -8
- 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 +25 -34
- package/dist/extensions/mcp/index.js.map +1 -1
- package/dist/extensions/mcp/resources.d.ts +0 -6
- package/dist/extensions/mcp/resources.d.ts.map +1 -1
- package/dist/extensions/mcp/resources.js +1 -1
- package/dist/extensions/mcp/resources.js.map +1 -1
- package/dist/extensions/mcp/runtime.d.ts +3 -6
- package/dist/extensions/mcp/runtime.d.ts.map +1 -1
- package/dist/extensions/mcp/runtime.js +4 -39
- package/dist/extensions/mcp/runtime.js.map +1 -1
- package/dist/extensions/mcp/tools.d.ts +2 -3
- package/dist/extensions/mcp/tools.d.ts.map +1 -1
- package/dist/extensions/mcp/tools.js +62 -6
- package/dist/extensions/mcp/tools.js.map +1 -1
- package/dist/extensions/provider/keybindings.d.ts +2 -2
- package/dist/extensions/provider/keybindings.d.ts.map +1 -1
- package/dist/extensions/provider/keybindings.js.map +1 -1
- package/dist/extensions/search/code-search.d.ts +0 -2
- package/dist/extensions/search/code-search.d.ts.map +1 -1
- package/dist/extensions/search/code-search.js +2 -2
- package/dist/extensions/search/code-search.js.map +1 -1
- package/dist/extensions/search/command.js +2 -2
- package/dist/extensions/search/command.js.map +1 -1
- package/dist/extensions/search/index.d.ts.map +1 -1
- package/dist/extensions/search/index.js +14 -11
- package/dist/extensions/search/index.js.map +1 -1
- package/dist/extensions/search/workspace.d.ts +11 -10
- package/dist/extensions/search/workspace.d.ts.map +1 -1
- package/dist/extensions/search/workspace.js +259 -141
- package/dist/extensions/search/workspace.js.map +1 -1
- package/dist/extensions/tool-search/index.d.ts.map +1 -1
- package/dist/extensions/tool-search/index.js +1 -6
- package/dist/extensions/tool-search/index.js.map +1 -1
- package/dist/extensions/tool-search/tool.d.ts +0 -2
- package/dist/extensions/tool-search/tool.d.ts.map +1 -1
- package/dist/extensions/tool-search/tool.js +2 -4
- package/dist/extensions/tool-search/tool.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.js +3 -3
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +3 -2
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-indicator.js +2 -2
- package/dist/modes/interactive/components/status-indicator.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +11 -5
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/dark.json +1 -1
- package/dist/modes/interactive/theme/light.json +1 -1
- package/dist/modes/interactive/theme/theme-schema.d.ts +28 -0
- package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.js +105 -0
- package/dist/modes/interactive/theme/theme-schema.js.map +1 -0
- package/dist/modes/interactive/theme/theme-tokens.d.ts +257 -0
- package/dist/modes/interactive/theme/theme-tokens.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-tokens.js +94 -0
- package/dist/modes/interactive/theme/theme-tokens.js.map +1 -0
- package/dist/modes/interactive/theme/theme.d.ts +13 -16
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +23 -31
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +4 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +6 -1
- package/dist/utils/clipboard.js.map +1 -1
- package/docs/bundled/extensions/search.md +2 -1
- package/docs/codemode.md +1 -1
- package/docs/compaction.md +2 -2
- package/docs/environment-variables.md +2 -1
- package/docs/extensions.md +10 -4
- package/docs/keybindings.md +1 -0
- package/docs/mcp.md +1 -1
- package/docs/models.md +1 -0
- package/docs/providers.md +16 -0
- package/docs/settings.md +2 -2
- package/docs/themes.md +4 -2
- package/docs/tui.md +1 -1
- package/docs/usage.md +2 -0
- 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/dynamic-resources/dynamic.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/overlay-test.ts +2 -2
- package/examples/extensions/plan-mode/index.ts +6 -2
- 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 +54 -102
- package/package.json +8 -20
- package/schemas/keybindings.schema.json +453 -0
- package/schemas/models.schema.json +1157 -0
- package/schemas/settings.schema.json +782 -0
- package/schemas/theme.schema.json +365 -0
- package/dist/bundle/chunks/anthropic-messages-3K3DWVY6.js +0 -6
- package/dist/bundle/chunks/openai-codex-responses-TZWBTTYM.js +0 -10
- package/dist/modes/interactive/theme/theme-json.d.ts +0 -85
- package/dist/modes/interactive/theme/theme-json.d.ts.map +0 -1
- package/dist/modes/interactive/theme/theme-json.js +0 -132
- package/dist/modes/interactive/theme/theme-json.js.map +0 -1
- package/dist/modes/interactive/theme/theme-schema.json +0 -361
- package/examples/plugins/pi-example-plugin/README.md +0 -38
- package/examples/plugins/pi-example-plugin/package.json +0 -10
- package/examples/plugins/pi-example-plugin/src/contract.ts +0 -13
- package/examples/plugins/pi-example-plugin/src/session.ts +0 -24
- package/examples/plugins/pi-example-plugin/src/tui.ts +0 -31
|
@@ -131,13 +131,14 @@ export function renderServersSection(servers) {
|
|
|
131
131
|
return [intro, ...lines, ...omitted(listed.length - kept)].join("\n");
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
|
-
* Whether a
|
|
135
|
-
*
|
|
134
|
+
* Whether a call that reaches `reach` (see `ToolDefinition.reachesTools`) needs the server: it
|
|
135
|
+
* reaches every tool, or one of its words contains the server's namespace.
|
|
136
136
|
*/
|
|
137
|
-
function
|
|
138
|
-
if (
|
|
137
|
+
function reachesServer(reach, server) {
|
|
138
|
+
if (reach === "all")
|
|
139
139
|
return true;
|
|
140
|
-
|
|
140
|
+
const namespace = mcpNamespace(server);
|
|
141
|
+
return reach.some((word) => word.includes(namespace));
|
|
141
142
|
}
|
|
142
143
|
/** Short state for lists and the startup report. `withError` appends the first line of a failure. */
|
|
143
144
|
function describeState(server, withError = true) {
|
|
@@ -152,10 +153,8 @@ function describeState(server, withError = true) {
|
|
|
152
153
|
case "failed":
|
|
153
154
|
return withError ? `failed: ${firstLine(connection.error ?? "unknown error")}` : "failed";
|
|
154
155
|
case "connected": {
|
|
155
|
-
const { tools,
|
|
156
|
-
|
|
157
|
-
const resourceCount = count > 0 ? ` · ${count} resource${count === 1 ? "" : "s"}` : "";
|
|
158
|
-
return `connected · ${tools.length} tool${tools.length === 1 ? "" : "s"}${resourceCount}`;
|
|
156
|
+
const { tools, hasResources } = connection;
|
|
157
|
+
return `connected · ${tools.length} tool${tools.length === 1 ? "" : "s"}${hasResources ? " · resources" : ""}`;
|
|
159
158
|
}
|
|
160
159
|
case "connecting":
|
|
161
160
|
return "connecting…";
|
|
@@ -287,6 +286,8 @@ export function createMcpExtension(options = {}) {
|
|
|
287
286
|
const description = entry.config.description?.trim();
|
|
288
287
|
const namespace = {
|
|
289
288
|
name: mcpNamespace(server),
|
|
289
|
+
// `describeNamespace("docs")` finds `mcp__docs`.
|
|
290
|
+
aliases: [server],
|
|
290
291
|
...(description ? { description } : {}),
|
|
291
292
|
...(connection.instructions ? { instructions: connection.instructions } : {}),
|
|
292
293
|
};
|
|
@@ -379,19 +380,6 @@ export function createMcpExtension(options = {}) {
|
|
|
379
380
|
pi.setActiveTools(pi.getActiveTools().filter((name) => !names.has(name)));
|
|
380
381
|
}
|
|
381
382
|
};
|
|
382
|
-
/**
|
|
383
|
-
* Which of the tools are the bundled codemode and tool_search tools. Other extensions' tools of
|
|
384
|
-
* the same names cannot reach MCP tools. The owning extensions identify their tools through the
|
|
385
|
-
* event bus, so this extension does not import their internals.
|
|
386
|
-
*/
|
|
387
|
-
const discoverOrchestrators = (tools) => {
|
|
388
|
-
const candidates = new Map(tools.map((tool) => [tool.name, tool.parameters]));
|
|
389
|
-
pi.events.emit("pi:discover-tool-orchestrators", candidates);
|
|
390
|
-
return {
|
|
391
|
-
codemode: candidates.get(CODEMODE_TOOL_NAME) === true,
|
|
392
|
-
toolSearch: candidates.get(TOOL_SEARCH_TOOL_NAME) === true,
|
|
393
|
-
};
|
|
394
|
-
};
|
|
395
383
|
/**
|
|
396
384
|
* Tools that are not declared to the model are reached through the codemode tool (scripts call
|
|
397
385
|
* them) or the tool_search tool (it declares them). Either reaches every such tool. Activate the
|
|
@@ -411,8 +399,12 @@ export function createMcpExtension(options = {}) {
|
|
|
411
399
|
const needsToolSearch = exposures.has("deferred");
|
|
412
400
|
if (!needsCodemode && !needsToolSearch)
|
|
413
401
|
return;
|
|
414
|
-
//
|
|
415
|
-
|
|
402
|
+
// Only a tool of these names that declares `reachesTools` can reach MCP tools; another
|
|
403
|
+
// extension's tool of the same name without it is never activated.
|
|
404
|
+
const tools = pi.getAllTools();
|
|
405
|
+
const hasReachingTool = (name) => tools.some((tool) => tool.name === name && tool.reachesTools);
|
|
406
|
+
const hasCodemode = hasReachingTool(CODEMODE_TOOL_NAME);
|
|
407
|
+
const hasToolSearch = hasReachingTool(TOOL_SEARCH_TOOL_NAME);
|
|
416
408
|
const active = pi.getActiveTools();
|
|
417
409
|
const activate = [];
|
|
418
410
|
if (needsCodemode && hasCodemode && autoEnableCodemode && !active.includes(CODEMODE_TOOL_NAME)) {
|
|
@@ -1049,10 +1041,11 @@ export function createMcpExtension(options = {}) {
|
|
|
1049
1041
|
else
|
|
1050
1042
|
delete sections[MCP_SERVERS_SECTION];
|
|
1051
1043
|
});
|
|
1052
|
-
// A
|
|
1053
|
-
//
|
|
1054
|
-
//
|
|
1055
|
-
//
|
|
1044
|
+
// A tool that reaches other tools (`reachesTools`) waits for the servers it may reach, so their
|
|
1045
|
+
// tools are registered before it runs: a codemode script for the servers it names, or for every
|
|
1046
|
+
// server when it searches or enumerates tools, and tool_search for every server. The resource
|
|
1047
|
+
// tools reach every server, so they wait for all of them. Direct MCP calls wait only for their
|
|
1048
|
+
// own server, including a reconnect still closing its old transport.
|
|
1056
1049
|
pi.on("tool_call", async (event, ctx) => {
|
|
1057
1050
|
const tool = pi.getAllTools().find((candidate) => candidate.name === event.toolName);
|
|
1058
1051
|
if (!tool)
|
|
@@ -1063,13 +1056,11 @@ export function createMcpExtension(options = {}) {
|
|
|
1063
1056
|
if (readyServers.length === 0)
|
|
1064
1057
|
return;
|
|
1065
1058
|
let waiting = [];
|
|
1066
|
-
const
|
|
1067
|
-
if (
|
|
1068
|
-
|
|
1069
|
-
const source = typeof code === "string" ? code : "";
|
|
1070
|
-
waiting = readyServers.filter((server) => scriptNeedsServer(source, server.entry.name));
|
|
1059
|
+
const reach = tool.reachesTools?.(event.input);
|
|
1060
|
+
if (reach !== undefined) {
|
|
1061
|
+
waiting = readyServers.filter((server) => reachesServer(reach, server.entry.name));
|
|
1071
1062
|
}
|
|
1072
|
-
else if (
|
|
1063
|
+
else if (RESOURCE_TOOL_NAMES.has(tool.name)) {
|
|
1073
1064
|
waiting = readyServers;
|
|
1074
1065
|
}
|
|
1075
1066
|
else {
|