@oh-my-pi/pi-coding-agent 16.2.1 → 16.2.3
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 +72 -0
- package/dist/cli.js +3621 -3579
- package/dist/types/advisor/__tests__/config.test.d.ts +1 -0
- package/dist/types/advisor/advise-tool.d.ts +8 -4
- package/dist/types/advisor/config.d.ts +88 -0
- package/dist/types/advisor/index.d.ts +1 -0
- package/dist/types/advisor/runtime.d.ts +15 -1
- package/dist/types/advisor/transcript-recorder.d.ts +13 -2
- package/dist/types/advisor/watchdog.d.ts +20 -0
- package/dist/types/collab/guest.d.ts +29 -0
- package/dist/types/config/model-roles.d.ts +1 -1
- package/dist/types/config/settings-schema.d.ts +113 -12
- package/dist/types/debug/log-viewer.d.ts +1 -0
- package/dist/types/debug/raw-sse.d.ts +1 -0
- package/dist/types/discovery/omp-extension-roots.d.ts +3 -3
- package/dist/types/edit/hashline/diff.d.ts +0 -11
- package/dist/types/edit/index.d.ts +18 -0
- package/dist/types/edit/streaming.d.ts +30 -0
- package/dist/types/extensibility/custom-tools/types.d.ts +1 -0
- package/dist/types/extensibility/shared-events.d.ts +1 -0
- package/dist/types/extensibility/tool-event-input.d.ts +7 -0
- package/dist/types/extensibility/utils.d.ts +12 -0
- package/dist/types/mcp/oauth-discovery.d.ts +0 -11
- package/dist/types/mcp/transports/index.d.ts +1 -0
- package/dist/types/mcp/transports/sse.d.ts +20 -0
- package/dist/types/modes/components/advisor-config.d.ts +59 -0
- package/dist/types/modes/components/index.d.ts +1 -0
- package/dist/types/modes/components/model-selector.d.ts +9 -1
- package/dist/types/modes/components/settings-selector.d.ts +1 -0
- package/dist/types/modes/components/status-line/component.d.ts +30 -3
- package/dist/types/modes/components/status-line/types.d.ts +13 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -0
- package/dist/types/modes/interactive-mode.d.ts +10 -4
- package/dist/types/modes/skill-command.d.ts +32 -0
- package/dist/types/modes/types.d.ts +7 -2
- package/dist/types/sdk.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +84 -12
- package/dist/types/session/indexed-session-storage.d.ts +7 -1
- package/dist/types/session/messages.d.ts +32 -7
- package/dist/types/session/messages.test.d.ts +1 -0
- package/dist/types/session/session-entries.d.ts +31 -3
- package/dist/types/session/session-history-format.d.ts +6 -0
- package/dist/types/session/session-loader.d.ts +9 -1
- package/dist/types/session/session-manager.d.ts +6 -4
- package/dist/types/session/session-storage.d.ts +11 -0
- package/dist/types/session/session-title-slot.d.ts +19 -0
- package/dist/types/session/settings-stream-fn.d.ts +21 -0
- package/dist/types/session/turn-persistence.d.ts +88 -0
- package/dist/types/ssh/connection-manager.d.ts +47 -0
- package/dist/types/ssh/utils.d.ts +16 -0
- package/dist/types/task/executor.d.ts +3 -16
- package/dist/types/task/render.d.ts +0 -5
- package/dist/types/task/renderer.d.ts +13 -0
- package/dist/types/task/types.d.ts +16 -0
- package/dist/types/task/yield-assembly.d.ts +28 -0
- package/dist/types/tiny/text.d.ts +8 -0
- package/dist/types/tools/render-utils.d.ts +2 -0
- package/dist/types/tools/review.d.ts +6 -4
- package/dist/types/tools/ssh.d.ts +1 -1
- package/dist/types/tools/todo.d.ts +6 -0
- package/dist/types/tools/yield.d.ts +8 -3
- package/dist/types/utils/thinking-display.d.ts +4 -0
- package/package.json +12 -12
- package/src/advisor/__tests__/advisor.test.ts +438 -10
- package/src/advisor/__tests__/config.test.ts +173 -0
- package/src/advisor/advise-tool.ts +11 -6
- package/src/advisor/config.ts +256 -0
- package/src/advisor/index.ts +1 -0
- package/src/advisor/runtime.ts +77 -4
- package/src/advisor/transcript-recorder.ts +25 -2
- package/src/advisor/watchdog.ts +57 -31
- package/src/auto-thinking/classifier.ts +2 -2
- package/src/autoresearch/index.ts +7 -2
- package/src/cli/gc-cli.ts +17 -10
- package/src/collab/guest.ts +43 -7
- package/src/config/model-registry.ts +80 -18
- package/src/config/model-resolver.ts +5 -1
- package/src/config/model-roles.ts +3 -3
- package/src/config/settings-schema.ts +107 -8
- package/src/debug/index.ts +32 -7
- package/src/debug/log-viewer.ts +111 -53
- package/src/debug/raw-sse.ts +68 -48
- package/src/discovery/codex.ts +13 -5
- package/src/discovery/omp-extension-roots.ts +38 -13
- package/src/edit/hashline/diff.ts +57 -4
- package/src/edit/index.ts +21 -0
- package/src/edit/streaming.ts +170 -0
- package/src/eval/js/shared/local-module-loader.ts +23 -1
- package/src/export/html/template.js +13 -7
- package/src/extensibility/custom-tools/types.ts +1 -0
- package/src/extensibility/extensions/loader.ts +5 -3
- package/src/extensibility/extensions/wrapper.ts +9 -3
- package/src/extensibility/hooks/loader.ts +3 -3
- package/src/extensibility/hooks/tool-wrapper.ts +13 -4
- package/src/extensibility/plugins/legacy-pi-bundled-keys.ts +18 -1
- package/src/extensibility/plugins/legacy-pi-bundled-registry.ts +59 -2
- package/src/extensibility/plugins/manager.ts +76 -5
- package/src/extensibility/shared-events.ts +1 -0
- package/src/extensibility/tool-event-input.ts +23 -0
- package/src/extensibility/utils.ts +74 -0
- package/src/internal-urls/docs-index.generated.txt +1 -1
- package/src/mcp/client.ts +3 -1
- package/src/mcp/manager.ts +12 -5
- package/src/mcp/oauth-discovery.ts +5 -29
- package/src/mcp/transports/http.ts +3 -1
- package/src/mcp/transports/index.ts +1 -0
- package/src/mcp/transports/sse.ts +377 -0
- package/src/memories/index.ts +15 -6
- package/src/mnemopi/backend.ts +2 -2
- package/src/modes/acp/acp-agent.ts +1 -1
- package/src/modes/components/advisor-config.ts +555 -0
- package/src/modes/components/advisor-message.ts +9 -2
- package/src/modes/components/agent-hub.ts +9 -4
- package/src/modes/components/assistant-message.ts +5 -5
- package/src/modes/components/index.ts +2 -0
- package/src/modes/components/model-selector.ts +79 -48
- package/src/modes/components/settings-selector.ts +1 -0
- package/src/modes/components/status-line/component.ts +145 -14
- package/src/modes/components/status-line/segments.ts +47 -22
- package/src/modes/components/status-line/types.ts +13 -1
- package/src/modes/components/tool-execution.ts +47 -6
- package/src/modes/controllers/command-controller.ts +23 -2
- package/src/modes/controllers/event-controller.ts +114 -11
- package/src/modes/controllers/extension-ui-controller.ts +1 -1
- package/src/modes/controllers/input-controller.ts +61 -61
- package/src/modes/controllers/selector-controller.ts +100 -9
- package/src/modes/interactive-mode.ts +65 -10
- package/src/modes/print-mode.ts +1 -1
- package/src/modes/skill-command.ts +116 -0
- package/src/modes/types.ts +7 -2
- package/src/modes/utils/transcript-render-helpers.ts +2 -2
- package/src/modes/utils/ui-helpers.ts +46 -27
- package/src/prompts/agents/reviewer.md +11 -10
- package/src/prompts/review-custom-request.md +1 -2
- package/src/prompts/review-request.md +1 -2
- package/src/prompts/system/interrupted-thinking.md +7 -0
- package/src/prompts/system/recap-user.md +9 -0
- package/src/prompts/system/subagent-system-prompt.md +8 -5
- package/src/prompts/system/subagent-yield-reminder.md +6 -5
- package/src/prompts/system/system-prompt.md +0 -1
- package/src/prompts/tools/irc.md +2 -2
- package/src/prompts/tools/read.md +2 -2
- package/src/sdk.ts +40 -50
- package/src/session/agent-session.ts +1139 -600
- package/src/session/indexed-session-storage.ts +86 -13
- package/src/session/messages.test.ts +125 -0
- package/src/session/messages.ts +192 -21
- package/src/session/redis-session-storage.ts +49 -2
- package/src/session/session-entries.ts +39 -2
- package/src/session/session-history-format.ts +29 -2
- package/src/session/session-listing.ts +54 -24
- package/src/session/session-loader.ts +66 -3
- package/src/session/session-manager.ts +113 -19
- package/src/session/session-persistence.ts +96 -3
- package/src/session/session-storage.ts +36 -0
- package/src/session/session-title-slot.ts +141 -0
- package/src/session/settings-stream-fn.ts +49 -0
- package/src/session/sql-session-storage.ts +71 -11
- package/src/session/turn-persistence.ts +142 -0
- package/src/session/unexpected-stop-classifier.ts +2 -2
- package/src/slash-commands/builtin-registry.ts +16 -3
- package/src/slash-commands/helpers/mcp.ts +2 -1
- package/src/ssh/__tests__/connection-manager-args.test.ts +123 -1
- package/src/ssh/__tests__/file-transfer-posix-guard.test.ts +55 -18
- package/src/ssh/connection-manager.ts +139 -12
- package/src/ssh/file-transfer.ts +23 -18
- package/src/ssh/ssh-executor.ts +2 -13
- package/src/ssh/utils.ts +19 -0
- package/src/task/executor.ts +21 -23
- package/src/task/render.ts +162 -20
- package/src/task/renderer.ts +14 -0
- package/src/task/types.ts +17 -0
- package/src/task/yield-assembly.ts +207 -0
- package/src/tiny/models.ts +8 -6
- package/src/tiny/text.ts +37 -7
- package/src/tools/ask.ts +55 -4
- package/src/tools/image-gen.ts +2 -1
- package/src/tools/render-utils.ts +2 -0
- package/src/tools/renderers.ts +8 -2
- package/src/tools/review.ts +17 -7
- package/src/tools/ssh.ts +8 -4
- package/src/tools/todo.ts +17 -1
- package/src/tools/tts.ts +2 -1
- package/src/tools/yield.ts +140 -31
- package/src/utils/thinking-display.ts +15 -0
- package/src/utils/title-generator.ts +1 -1
- package/src/web/search/providers/tavily.ts +36 -19
|
@@ -29,6 +29,7 @@ export class LocalModuleLoader {
|
|
|
29
29
|
#externalModules = new Map<string, Promise<vm.Module>>();
|
|
30
30
|
#requireCache = new Map<string, NodeJS.Require>();
|
|
31
31
|
#modulePaths = new WeakMap<vm.Module, string>();
|
|
32
|
+
#linkChain: Promise<void> = Promise.resolve();
|
|
32
33
|
|
|
33
34
|
constructor(sessionId: string) {
|
|
34
35
|
this.#context = vm.createContext(globalThis);
|
|
@@ -147,7 +148,17 @@ export class LocalModuleLoader {
|
|
|
147
148
|
async #linkAndEvaluate(entry: LocalModuleEntry, modulePath: string): Promise<void> {
|
|
148
149
|
const { module } = entry;
|
|
149
150
|
try {
|
|
150
|
-
|
|
151
|
+
// Serialize the link phase across every graph root. Bun's node:vm linker
|
|
152
|
+
// segfaults (getImportedModule on a null record) when two link passes
|
|
153
|
+
// instantiate overlapping module instances concurrently — e.g.
|
|
154
|
+
// Promise.all([import("./a"), import("./b")]) over a graph that shares
|
|
155
|
+
// dependencies. Holding the lock for the whole module.link() (including its
|
|
156
|
+
// async resolver callbacks) guarantees the linker is never re-entered
|
|
157
|
+
// mid-instantiation. The lock is released before evaluate(), so a dynamic
|
|
158
|
+
// import during evaluation can re-acquire it without deadlock.
|
|
159
|
+
await this.#serializeLink(async () => {
|
|
160
|
+
if (module.status === "unlinked") await module.link(this.#linkResolve);
|
|
161
|
+
});
|
|
151
162
|
if (module.status === "linked") await module.evaluate();
|
|
152
163
|
} catch (error) {
|
|
153
164
|
this.#invalidateFailedLoad(modulePath);
|
|
@@ -159,6 +170,17 @@ export class LocalModuleLoader {
|
|
|
159
170
|
}
|
|
160
171
|
}
|
|
161
172
|
|
|
173
|
+
// Promise-chain mutex serializing node:vm link passes (see #linkAndEvaluate).
|
|
174
|
+
// #linkChain is kept non-rejecting so a failed link never wedges the queue.
|
|
175
|
+
#serializeLink<T>(run: () => Promise<T>): Promise<T> {
|
|
176
|
+
const result = this.#linkChain.then(run);
|
|
177
|
+
this.#linkChain = result.then(
|
|
178
|
+
() => undefined,
|
|
179
|
+
() => undefined,
|
|
180
|
+
);
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
|
|
162
184
|
// Shared static-link resolver for `module.link()`. node:vm passes the referencing
|
|
163
185
|
// module and reuses this one resolver for the entire graph, so the referrer path is
|
|
164
186
|
// recovered from `#modulePaths`. Local dependencies are constructed but NOT linked or
|
|
@@ -1236,7 +1236,7 @@
|
|
|
1236
1236
|
let html = `
|
|
1237
1237
|
<div class="header">
|
|
1238
1238
|
<h1>Session: ${escapeHtml(header?.id || 'unknown')}</h1>
|
|
1239
|
-
<div class="help-bar">
|
|
1239
|
+
<div class="help-bar">T toggle thinking · O toggle tools</div>
|
|
1240
1240
|
<div class="header-info">
|
|
1241
1241
|
<div class="info-item"><span class="info-label">Date:</span><span class="info-value">${header?.timestamp ? new Date(header.timestamp).toLocaleString() : 'unknown'}</span></div>
|
|
1242
1242
|
<div class="info-item"><span class="info-label">Models:</span><span class="info-value">${globalStats.models.join(', ') || 'unknown'}</span></div>
|
|
@@ -1580,13 +1580,19 @@
|
|
|
1580
1580
|
searchQuery = '';
|
|
1581
1581
|
navigateTo(leafId, 'bottom');
|
|
1582
1582
|
}
|
|
1583
|
-
if (e.
|
|
1583
|
+
if (e.key === 't' || e.key === 'T' || e.key === 'o' || e.key === 'O') {
|
|
1584
|
+
// Skip when typing in the sidebar search (or any other editable target)
|
|
1585
|
+
// so the chord can't fire on a user's letter input. Avoid Ctrl/Cmd-based
|
|
1586
|
+
// chords entirely — every major browser reserves Ctrl+T (new tab) and
|
|
1587
|
+
// Ctrl+O (open file), so the shortcut would never reach the page.
|
|
1588
|
+
const t = e.target;
|
|
1589
|
+
const editable =
|
|
1590
|
+
t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable);
|
|
1591
|
+
if (editable) return;
|
|
1592
|
+
if (e.ctrlKey || e.metaKey || e.altKey) return;
|
|
1584
1593
|
e.preventDefault();
|
|
1585
|
-
toggleThinking();
|
|
1586
|
-
|
|
1587
|
-
if (e.ctrlKey && e.key === 'o') {
|
|
1588
|
-
e.preventDefault();
|
|
1589
|
-
toggleToolOutputs();
|
|
1594
|
+
if (e.key === 't' || e.key === 'T') toggleThinking();
|
|
1595
|
+
else toggleToolOutputs();
|
|
1590
1596
|
}
|
|
1591
1597
|
});
|
|
1592
1598
|
|
|
@@ -24,7 +24,7 @@ import { installLegacyPiSpecifierShim, loadLegacyPiModule } from "../plugins/leg
|
|
|
24
24
|
import { getAllPluginExtensionPaths } from "../plugins/loader";
|
|
25
25
|
import * as TypeBox from "../typebox";
|
|
26
26
|
|
|
27
|
-
import { resolvePath } from "../utils";
|
|
27
|
+
import { resolvePath, withExitGuard } from "../utils";
|
|
28
28
|
import type {
|
|
29
29
|
AssistantThinkingRenderer,
|
|
30
30
|
Extension,
|
|
@@ -290,7 +290,7 @@ async function loadExtension(
|
|
|
290
290
|
): Promise<{ extension: Extension | null; error: string | null }> {
|
|
291
291
|
const resolvedPath = resolvePath(extensionPath, cwd);
|
|
292
292
|
try {
|
|
293
|
-
const module = (await loadLegacyPiModule(resolvedPath)) as LoadedExtensionModule;
|
|
293
|
+
const module = (await withExitGuard(() => loadLegacyPiModule(resolvedPath))) as LoadedExtensionModule;
|
|
294
294
|
const factory = getExtensionFactory(module);
|
|
295
295
|
|
|
296
296
|
if (typeof factory !== "function") {
|
|
@@ -302,7 +302,9 @@ async function loadExtension(
|
|
|
302
302
|
|
|
303
303
|
const extension = createExtension(extensionPath, resolvedPath);
|
|
304
304
|
const api = new ConcreteExtensionAPI(PiCodingAgent, extension, runtime, cwd, eventBus);
|
|
305
|
-
await
|
|
305
|
+
await withExitGuard(async () => {
|
|
306
|
+
await factory(api);
|
|
307
|
+
});
|
|
306
308
|
|
|
307
309
|
return { extension, error: null };
|
|
308
310
|
} catch (err) {
|
|
@@ -6,7 +6,7 @@ import type { ImageContent, Static, TextContent, TSchema } from "@oh-my-pi/pi-ai
|
|
|
6
6
|
import type { Settings } from "../../config/settings";
|
|
7
7
|
import type { Theme } from "../../modes/theme/theme";
|
|
8
8
|
import { type ApprovalMode, formatApprovalPrompt, requiresApproval } from "../../tools/approval";
|
|
9
|
-
import { normalizeToolEventInput } from "../tool-event-input";
|
|
9
|
+
import { normalizeToolEventInput, resolveToolEventInput } from "../tool-event-input";
|
|
10
10
|
import { applyToolProxy } from "../tool-proxy";
|
|
11
11
|
import type { ExtensionRunner } from "./runner";
|
|
12
12
|
import type { RegisteredTool, ToolCallEventResult } from "./types";
|
|
@@ -186,7 +186,10 @@ export class ExtensionToolWrapper<TParameters extends TSchema = TSchema, TDetail
|
|
|
186
186
|
type: "tool_call",
|
|
187
187
|
toolName: this.tool.name,
|
|
188
188
|
toolCallId,
|
|
189
|
-
input: normalizeToolEventInput(
|
|
189
|
+
input: normalizeToolEventInput(
|
|
190
|
+
this.tool.name,
|
|
191
|
+
resolveToolEventInput(this.tool, params as Record<string, unknown>),
|
|
192
|
+
),
|
|
190
193
|
})) as ToolCallEventResult | undefined;
|
|
191
194
|
|
|
192
195
|
if (callResult?.block) {
|
|
@@ -221,7 +224,10 @@ export class ExtensionToolWrapper<TParameters extends TSchema = TSchema, TDetail
|
|
|
221
224
|
type: "tool_result",
|
|
222
225
|
toolName: this.tool.name,
|
|
223
226
|
toolCallId,
|
|
224
|
-
input: normalizeToolEventInput(
|
|
227
|
+
input: normalizeToolEventInput(
|
|
228
|
+
this.tool.name,
|
|
229
|
+
resolveToolEventInput(this.tool, params as Record<string, unknown>),
|
|
230
|
+
),
|
|
225
231
|
content: result.content,
|
|
226
232
|
details: result.details,
|
|
227
233
|
isError: !!executionError,
|
|
@@ -12,7 +12,7 @@ import { loadCapability } from "../../discovery";
|
|
|
12
12
|
import * as PiCodingAgent from "../../index";
|
|
13
13
|
import type { HookMessage } from "../../session/messages";
|
|
14
14
|
import * as typebox from "../typebox";
|
|
15
|
-
import { resolvePath } from "../utils";
|
|
15
|
+
import { resolvePath, withExitGuard } from "../utils";
|
|
16
16
|
import { execCommand } from "./runner";
|
|
17
17
|
import type { ExecOptions, HookAPI, HookFactory, HookMessageRenderer, RegisteredCommand } from "./types";
|
|
18
18
|
|
|
@@ -149,7 +149,7 @@ async function loadHook(hookPath: string, cwd: string): Promise<{ hook: LoadedHo
|
|
|
149
149
|
|
|
150
150
|
try {
|
|
151
151
|
// Import the module using native Bun import
|
|
152
|
-
const module = await import(resolvedPath);
|
|
152
|
+
const module = await withExitGuard(() => import(resolvedPath));
|
|
153
153
|
const factory = module.default as HookFactory;
|
|
154
154
|
|
|
155
155
|
if (typeof factory !== "function") {
|
|
@@ -164,7 +164,7 @@ async function loadHook(hookPath: string, cwd: string): Promise<{ hook: LoadedHo
|
|
|
164
164
|
);
|
|
165
165
|
|
|
166
166
|
// Call factory to register handlers
|
|
167
|
-
factory(api);
|
|
167
|
+
await withExitGuard(async () => factory(api));
|
|
168
168
|
|
|
169
169
|
return {
|
|
170
170
|
hook: {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { AgentTool, AgentToolContext, AgentToolUpdateCallback } from "@oh-my-pi/pi-agent-core";
|
|
5
5
|
import type { Static, TSchema } from "@oh-my-pi/pi-ai";
|
|
6
|
-
import { normalizeToolEventInput } from "../tool-event-input";
|
|
6
|
+
import { normalizeToolEventInput, resolveToolEventInput } from "../tool-event-input";
|
|
7
7
|
import { applyToolProxy } from "../tool-proxy";
|
|
8
8
|
import type { HookRunner } from "./runner";
|
|
9
9
|
import type { ToolCallEventResult, ToolResultEventResult } from "./types";
|
|
@@ -47,7 +47,10 @@ export class HookToolWrapper<TParameters extends TSchema = TSchema, TDetails = u
|
|
|
47
47
|
type: "tool_call",
|
|
48
48
|
toolName: this.tool.name,
|
|
49
49
|
toolCallId,
|
|
50
|
-
input: normalizeToolEventInput(
|
|
50
|
+
input: normalizeToolEventInput(
|
|
51
|
+
this.tool.name,
|
|
52
|
+
resolveToolEventInput(this.tool, params as Record<string, unknown>),
|
|
53
|
+
),
|
|
51
54
|
})) as ToolCallEventResult | undefined;
|
|
52
55
|
|
|
53
56
|
if (callResult?.block) {
|
|
@@ -73,7 +76,10 @@ export class HookToolWrapper<TParameters extends TSchema = TSchema, TDetails = u
|
|
|
73
76
|
type: "tool_result",
|
|
74
77
|
toolName: this.tool.name,
|
|
75
78
|
toolCallId,
|
|
76
|
-
input: normalizeToolEventInput(
|
|
79
|
+
input: normalizeToolEventInput(
|
|
80
|
+
this.tool.name,
|
|
81
|
+
resolveToolEventInput(this.tool, params as Record<string, unknown>),
|
|
82
|
+
),
|
|
77
83
|
content: result.content,
|
|
78
84
|
details: result.details,
|
|
79
85
|
isError: false,
|
|
@@ -96,7 +102,10 @@ export class HookToolWrapper<TParameters extends TSchema = TSchema, TDetails = u
|
|
|
96
102
|
type: "tool_result",
|
|
97
103
|
toolName: this.tool.name,
|
|
98
104
|
toolCallId,
|
|
99
|
-
input: normalizeToolEventInput(
|
|
105
|
+
input: normalizeToolEventInput(
|
|
106
|
+
this.tool.name,
|
|
107
|
+
resolveToolEventInput(this.tool, params as Record<string, unknown>),
|
|
108
|
+
),
|
|
100
109
|
content: [{ type: "text", text: err instanceof Error ? err.message : String(err) }],
|
|
101
110
|
details: undefined,
|
|
102
111
|
isError: true,
|
|
@@ -23,6 +23,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
23
23
|
"@oh-my-pi/pi-agent-core/compaction/tool-protection",
|
|
24
24
|
"@oh-my-pi/pi-agent-core/compaction/utils",
|
|
25
25
|
"@oh-my-pi/pi-ai",
|
|
26
|
+
"@oh-my-pi/pi-ai/error",
|
|
26
27
|
"@oh-my-pi/pi-ai/auth-broker",
|
|
27
28
|
"@oh-my-pi/pi-ai/auth-gateway",
|
|
28
29
|
"@oh-my-pi/pi-ai/utils/harmony-leak",
|
|
@@ -56,6 +57,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
56
57
|
"@oh-my-pi/pi-ai/providers/devin",
|
|
57
58
|
"@oh-my-pi/pi-ai/providers/error-message",
|
|
58
59
|
"@oh-my-pi/pi-ai/providers/github-copilot-headers",
|
|
60
|
+
"@oh-my-pi/pi-ai/providers/gitlab-duo-workflow",
|
|
59
61
|
"@oh-my-pi/pi-ai/providers/gitlab-duo",
|
|
60
62
|
"@oh-my-pi/pi-ai/providers/google-auth",
|
|
61
63
|
"@oh-my-pi/pi-ai/providers/google-gemini-cli",
|
|
@@ -94,6 +96,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
94
96
|
"@oh-my-pi/pi-ai/usage/kimi",
|
|
95
97
|
"@oh-my-pi/pi-ai/usage/minimax-code",
|
|
96
98
|
"@oh-my-pi/pi-ai/usage/ollama",
|
|
99
|
+
"@oh-my-pi/pi-ai/usage/openai-codex-base-url",
|
|
97
100
|
"@oh-my-pi/pi-ai/usage/openai-codex-reset",
|
|
98
101
|
"@oh-my-pi/pi-ai/usage/openai-codex",
|
|
99
102
|
"@oh-my-pi/pi-ai/usage/opencode-go",
|
|
@@ -101,6 +104,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
101
104
|
"@oh-my-pi/pi-ai/usage/zai",
|
|
102
105
|
"@oh-my-pi/pi-ai/utils/abort",
|
|
103
106
|
"@oh-my-pi/pi-ai/utils/anthropic-auth",
|
|
107
|
+
"@oh-my-pi/pi-ai/utils/block-symbols",
|
|
104
108
|
"@oh-my-pi/pi-ai/utils/deterministic-id",
|
|
105
109
|
"@oh-my-pi/pi-ai/utils/empty-completion-retry",
|
|
106
110
|
"@oh-my-pi/pi-ai/utils/event-stream",
|
|
@@ -110,7 +114,6 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
110
114
|
"@oh-my-pi/pi-ai/utils/idle-iterator",
|
|
111
115
|
"@oh-my-pi/pi-ai/utils/openai-http",
|
|
112
116
|
"@oh-my-pi/pi-ai/utils/openrouter-headers",
|
|
113
|
-
"@oh-my-pi/pi-ai/utils/overflow",
|
|
114
117
|
"@oh-my-pi/pi-ai/utils/parse-bind",
|
|
115
118
|
"@oh-my-pi/pi-ai/utils/provider-response",
|
|
116
119
|
"@oh-my-pi/pi-ai/utils/proxy",
|
|
@@ -128,6 +131,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
128
131
|
"@oh-my-pi/pi-ai/oauth/cursor",
|
|
129
132
|
"@oh-my-pi/pi-ai/oauth/devin",
|
|
130
133
|
"@oh-my-pi/pi-ai/oauth/github-copilot",
|
|
134
|
+
"@oh-my-pi/pi-ai/oauth/gitlab-duo-workflow",
|
|
131
135
|
"@oh-my-pi/pi-ai/oauth/gitlab-duo",
|
|
132
136
|
"@oh-my-pi/pi-ai/oauth/google-antigravity",
|
|
133
137
|
"@oh-my-pi/pi-ai/oauth/google-gemini-cli",
|
|
@@ -187,6 +191,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
187
191
|
"@oh-my-pi/pi-coding-agent/eval",
|
|
188
192
|
"@oh-my-pi/pi-coding-agent/lsp",
|
|
189
193
|
"@oh-my-pi/pi-coding-agent/lsp/clients",
|
|
194
|
+
"@oh-my-pi/pi-coding-agent/markit",
|
|
190
195
|
"@oh-my-pi/pi-coding-agent/mcp",
|
|
191
196
|
"@oh-my-pi/pi-coding-agent/mcp/transports",
|
|
192
197
|
"@oh-my-pi/pi-coding-agent/memories",
|
|
@@ -481,6 +486,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
481
486
|
"@oh-my-pi/pi-coding-agent/internal-urls/router",
|
|
482
487
|
"@oh-my-pi/pi-coding-agent/internal-urls/rule-protocol",
|
|
483
488
|
"@oh-my-pi/pi-coding-agent/internal-urls/skill-protocol",
|
|
489
|
+
"@oh-my-pi/pi-coding-agent/internal-urls/ssh-protocol",
|
|
484
490
|
"@oh-my-pi/pi-coding-agent/internal-urls/types",
|
|
485
491
|
"@oh-my-pi/pi-coding-agent/internal-urls/vault-protocol",
|
|
486
492
|
"@oh-my-pi/pi-coding-agent/eval/js/context-manager",
|
|
@@ -508,6 +514,8 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
508
514
|
"@oh-my-pi/pi-coding-agent/lsp/clients/biome-client",
|
|
509
515
|
"@oh-my-pi/pi-coding-agent/lsp/clients/lsp-linter-client",
|
|
510
516
|
"@oh-my-pi/pi-coding-agent/lsp/clients/swiftlint-client",
|
|
517
|
+
"@oh-my-pi/pi-coding-agent/markit/registry",
|
|
518
|
+
"@oh-my-pi/pi-coding-agent/markit/types",
|
|
511
519
|
"@oh-my-pi/pi-coding-agent/mcp/client",
|
|
512
520
|
"@oh-my-pi/pi-coding-agent/mcp/config-writer",
|
|
513
521
|
"@oh-my-pi/pi-coding-agent/mcp/config",
|
|
@@ -554,6 +562,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
554
562
|
"@oh-my-pi/pi-coding-agent/modes/orchestrate",
|
|
555
563
|
"@oh-my-pi/pi-coding-agent/modes/print-mode",
|
|
556
564
|
"@oh-my-pi/pi-coding-agent/modes/prompt-action-autocomplete",
|
|
565
|
+
"@oh-my-pi/pi-coding-agent/modes/running-subagent-badge",
|
|
557
566
|
"@oh-my-pi/pi-coding-agent/modes/runtime-init",
|
|
558
567
|
"@oh-my-pi/pi-coding-agent/modes/session-observer-registry",
|
|
559
568
|
"@oh-my-pi/pi-coding-agent/modes/setup-version",
|
|
@@ -603,6 +612,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
603
612
|
"@oh-my-pi/pi-coding-agent/modes/components/mcp-add-wizard",
|
|
604
613
|
"@oh-my-pi/pi-coding-agent/modes/components/message-frame",
|
|
605
614
|
"@oh-my-pi/pi-coding-agent/modes/components/model-selector",
|
|
615
|
+
"@oh-my-pi/pi-coding-agent/modes/components/move-overlay",
|
|
606
616
|
"@oh-my-pi/pi-coding-agent/modes/components/oauth-selector",
|
|
607
617
|
"@oh-my-pi/pi-coding-agent/modes/components/omfg-panel",
|
|
608
618
|
"@oh-my-pi/pi-coding-agent/modes/components/overlay-box",
|
|
@@ -614,6 +624,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
614
624
|
"@oh-my-pi/pi-coding-agent/modes/components/read-tool-group",
|
|
615
625
|
"@oh-my-pi/pi-coding-agent/modes/components/reset-usage-selector",
|
|
616
626
|
"@oh-my-pi/pi-coding-agent/modes/components/segment-track",
|
|
627
|
+
"@oh-my-pi/pi-coding-agent/modes/components/select-list-mouse-routing",
|
|
617
628
|
"@oh-my-pi/pi-coding-agent/modes/components/selector-helpers",
|
|
618
629
|
"@oh-my-pi/pi-coding-agent/modes/components/session-selector",
|
|
619
630
|
"@oh-my-pi/pi-coding-agent/modes/components/settings-defs",
|
|
@@ -714,12 +725,14 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
714
725
|
"@oh-my-pi/pi-coding-agent/session/session-paths",
|
|
715
726
|
"@oh-my-pi/pi-coding-agent/session/session-persistence",
|
|
716
727
|
"@oh-my-pi/pi-coding-agent/session/session-storage",
|
|
728
|
+
"@oh-my-pi/pi-coding-agent/session/settings-stream-fn",
|
|
717
729
|
"@oh-my-pi/pi-coding-agent/session/shake-types",
|
|
718
730
|
"@oh-my-pi/pi-coding-agent/session/snapcompact-inline",
|
|
719
731
|
"@oh-my-pi/pi-coding-agent/session/snapcompact-savings-journal",
|
|
720
732
|
"@oh-my-pi/pi-coding-agent/session/sql-session-storage",
|
|
721
733
|
"@oh-my-pi/pi-coding-agent/session/streaming-output",
|
|
722
734
|
"@oh-my-pi/pi-coding-agent/session/tool-choice-queue",
|
|
735
|
+
"@oh-my-pi/pi-coding-agent/session/turn-persistence",
|
|
723
736
|
"@oh-my-pi/pi-coding-agent/session/unexpected-stop-classifier",
|
|
724
737
|
"@oh-my-pi/pi-coding-agent/session/yield-queue",
|
|
725
738
|
"@oh-my-pi/pi-coding-agent/slash-commands/acp-builtins",
|
|
@@ -729,6 +742,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
729
742
|
"@oh-my-pi/pi-coding-agent/slash-commands/types",
|
|
730
743
|
"@oh-my-pi/pi-coding-agent/ssh/config-writer",
|
|
731
744
|
"@oh-my-pi/pi-coding-agent/ssh/connection-manager",
|
|
745
|
+
"@oh-my-pi/pi-coding-agent/ssh/file-transfer",
|
|
732
746
|
"@oh-my-pi/pi-coding-agent/ssh/ssh-executor",
|
|
733
747
|
"@oh-my-pi/pi-coding-agent/ssh/sshfs-mount",
|
|
734
748
|
"@oh-my-pi/pi-coding-agent/ssh/utils",
|
|
@@ -838,6 +852,7 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
838
852
|
"@oh-my-pi/pi-coding-agent/tui/types",
|
|
839
853
|
"@oh-my-pi/pi-coding-agent/tui/utils",
|
|
840
854
|
"@oh-my-pi/pi-coding-agent/tui/width-aware-text",
|
|
855
|
+
"@oh-my-pi/pi-coding-agent/utils/active-repo-context",
|
|
841
856
|
"@oh-my-pi/pi-coding-agent/utils/block-context",
|
|
842
857
|
"@oh-my-pi/pi-coding-agent/utils/changelog",
|
|
843
858
|
"@oh-my-pi/pi-coding-agent/utils/clipboard",
|
|
@@ -856,9 +871,11 @@ export const BUNDLED_PI_REGISTRY_KEYS: ReadonlySet<string> = new Set([
|
|
|
856
871
|
"@oh-my-pi/pi-coding-agent/utils/ipc",
|
|
857
872
|
"@oh-my-pi/pi-coding-agent/utils/jj",
|
|
858
873
|
"@oh-my-pi/pi-coding-agent/utils/lang-from-path",
|
|
874
|
+
"@oh-my-pi/pi-coding-agent/utils/markit-cache",
|
|
859
875
|
"@oh-my-pi/pi-coding-agent/utils/markit",
|
|
860
876
|
"@oh-my-pi/pi-coding-agent/utils/mupdf-wasm-embed",
|
|
861
877
|
"@oh-my-pi/pi-coding-agent/utils/open",
|
|
878
|
+
"@oh-my-pi/pi-coding-agent/utils/prompt-path",
|
|
862
879
|
"@oh-my-pi/pi-coding-agent/utils/qrcode",
|
|
863
880
|
"@oh-my-pi/pi-coding-agent/utils/session-color",
|
|
864
881
|
"@oh-my-pi/pi-coding-agent/utils/shell-snapshot",
|