@oh-my-pi/pi-coding-agent 16.2.1 → 16.2.2
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 +23 -0
- package/dist/cli.js +2648 -2662
- package/dist/types/advisor/runtime.d.ts +15 -1
- package/dist/types/config/model-roles.d.ts +1 -1
- package/dist/types/config/settings-schema.d.ts +32 -12
- package/dist/types/discovery/omp-extension-roots.d.ts +3 -3
- 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/mcp/oauth-discovery.d.ts +0 -11
- package/dist/types/modes/components/status-line/component.d.ts +0 -2
- package/dist/types/sdk.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +26 -2
- package/dist/types/session/messages.d.ts +6 -7
- package/dist/types/session/settings-stream-fn.d.ts +21 -0
- package/dist/types/session/turn-persistence.d.ts +88 -0
- package/package.json +12 -12
- package/src/advisor/__tests__/advisor.test.ts +196 -0
- package/src/advisor/runtime.ts +65 -2
- package/src/auto-thinking/classifier.ts +2 -2
- package/src/config/model-resolver.ts +5 -1
- package/src/config/model-roles.ts +3 -3
- package/src/config/settings-schema.ts +30 -8
- package/src/discovery/omp-extension-roots.ts +38 -13
- package/src/edit/index.ts +21 -0
- package/src/edit/streaming.ts +170 -0
- package/src/extensibility/custom-tools/types.ts +1 -0
- 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 +74 -4
- package/src/extensibility/shared-events.ts +1 -0
- package/src/internal-urls/docs-index.generated.txt +1 -1
- package/src/mcp/oauth-discovery.ts +5 -29
- package/src/mcp/transports/http.ts +3 -1
- package/src/mnemopi/backend.ts +2 -2
- package/src/modes/acp/acp-agent.ts +1 -1
- package/src/modes/components/assistant-message.ts +5 -5
- package/src/modes/components/status-line/component.ts +1 -9
- package/src/modes/components/status-line/segments.ts +1 -1
- package/src/modes/controllers/event-controller.ts +8 -11
- package/src/modes/interactive-mode.ts +0 -5
- package/src/modes/print-mode.ts +1 -1
- package/src/modes/utils/transcript-render-helpers.ts +2 -2
- package/src/modes/utils/ui-helpers.ts +5 -4
- package/src/sdk.ts +12 -26
- package/src/session/agent-session.ts +319 -219
- package/src/session/messages.ts +20 -12
- package/src/session/session-persistence.ts +1 -2
- package/src/session/settings-stream-fn.ts +49 -0
- package/src/session/turn-persistence.ts +142 -0
- package/src/session/unexpected-stop-classifier.ts +2 -2
- package/src/slash-commands/helpers/mcp.ts +2 -1
- package/src/tiny/models.ts +8 -6
- package/src/tiny/text.ts +14 -7
- package/src/tools/image-gen.ts +2 -1
- package/src/tools/tts.ts +2 -1
- package/src/utils/title-generator.ts +1 -1
- package/src/web/search/providers/tavily.ts +36 -19
package/src/edit/streaming.ts
CHANGED
|
@@ -52,6 +52,17 @@ export interface StreamingDiffContext {
|
|
|
52
52
|
isStreaming?: boolean;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Per-file projection of a streamed edit payload. Pairs one target file path
|
|
57
|
+
* with the digest of only the lines added to that file, so path-scoped stream
|
|
58
|
+
* matchers (TTSR) evaluate each file in isolation — a `tool:edit(*.ts)` rule
|
|
59
|
+
* never fires on text that actually belongs to a sibling `README.md` hunk.
|
|
60
|
+
*/
|
|
61
|
+
export interface EditMatcherEntry {
|
|
62
|
+
readonly path: string;
|
|
63
|
+
readonly digest: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
55
66
|
export interface EditStreamingStrategy<Args = unknown> {
|
|
56
67
|
/**
|
|
57
68
|
* Return the args restricted to edits that are "complete enough" to
|
|
@@ -77,6 +88,26 @@ export interface EditStreamingStrategy<Args = unknown> {
|
|
|
77
88
|
* args don't yet carry any content.
|
|
78
89
|
*/
|
|
79
90
|
matcherDigest(args: Args): string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Surface the target file paths a (potentially partial) call would touch,
|
|
93
|
+
* so path-scoped stream matchers (e.g. TTSR `tool:edit(*.ts)` globs) match
|
|
94
|
+
* even when the path is not a top-level argument but lives inside the wire
|
|
95
|
+
* payload — `hashline` section headers, `apply_patch` envelope markers.
|
|
96
|
+
* Returns `undefined` (or an empty list) when no paths are recoverable.
|
|
97
|
+
*/
|
|
98
|
+
matcherPaths(args: Args): readonly string[] | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Per-file projection of the (potentially partial) args: one entry per
|
|
101
|
+
* touched file pairing the path with the digest of only the lines added to
|
|
102
|
+
* that file. Multi-file payloads (multi-section hashline / multi-hunk
|
|
103
|
+
* apply_patch) MUST split here so callers can evaluate each file under its
|
|
104
|
+
* own path scope instead of leaking added lines from one file into the
|
|
105
|
+
* other's match context. Same-path sections / hunks are merged into one
|
|
106
|
+
* entry. Returns `undefined` (or empty) when no per-file split is
|
|
107
|
+
* recoverable yet — the caller falls back to {@link matcherDigest} +
|
|
108
|
+
* {@link matcherPaths}.
|
|
109
|
+
*/
|
|
110
|
+
matcherEntries(args: Args): readonly EditMatcherEntry[] | undefined;
|
|
80
111
|
}
|
|
81
112
|
|
|
82
113
|
// -----------------------------------------------------------------------------
|
|
@@ -191,6 +222,103 @@ function extractAddedLines(text: string, fallbackToWhole: boolean): string {
|
|
|
191
222
|
return added;
|
|
192
223
|
}
|
|
193
224
|
|
|
225
|
+
/**
|
|
226
|
+
* Extract hashline `[path#TAG]` (and untagged `[path]`) section-header paths
|
|
227
|
+
* from a (possibly partial) hashline buffer. Tolerant of streaming chunks
|
|
228
|
+
* where `Patch.parse` would still throw on the trailing op — only fully
|
|
229
|
+
* closed header lines are recognised.
|
|
230
|
+
*/
|
|
231
|
+
function extractHashlineHeaderPaths(input: string): string[] {
|
|
232
|
+
const paths: string[] = [];
|
|
233
|
+
const re = /^\s*\[([^\]\r\n]+?)(?:#[0-9a-fA-F]{4})?\]\s*$/gm;
|
|
234
|
+
for (const match of input.matchAll(re)) {
|
|
235
|
+
const candidate = stripApplyPatchPathNoise(match[1]).trim();
|
|
236
|
+
if (candidate.length > 0) paths.push(candidate);
|
|
237
|
+
}
|
|
238
|
+
return paths;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Strip the `*** Add/Update/Delete File:` / `*** Move to:` noise that the
|
|
243
|
+
* model sometimes pastes into a hashline header (the hashline tokenizer does
|
|
244
|
+
* the same in its recovery path).
|
|
245
|
+
*/
|
|
246
|
+
function stripApplyPatchPathNoise(value: string): string {
|
|
247
|
+
return value
|
|
248
|
+
.replace(/^\s*\*{3}\s*(?:Add|Update|Delete)\s+File\s*:\s*/i, "")
|
|
249
|
+
.replace(/^\s*\*{3}\s*Move\s+to\s*:\s*/i, "");
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/** Extract `*** Add/Update/Delete File:` paths from a (possibly partial) apply_patch envelope. */
|
|
253
|
+
function extractApplyPatchEnvelopePaths(input: string): string[] {
|
|
254
|
+
const paths: string[] = [];
|
|
255
|
+
const re = /^\s*\*{3}\s+(?:Add|Update|Delete)\s+File\s*:\s*(\S.*?)\s*$/gm;
|
|
256
|
+
for (const match of input.matchAll(re)) {
|
|
257
|
+
const candidate = match[1].trim();
|
|
258
|
+
if (candidate.length > 0) paths.push(candidate);
|
|
259
|
+
}
|
|
260
|
+
return paths;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Split a (possibly partial) hashline buffer into one matcher entry per
|
|
265
|
+
* touched file: pair the section header path with the added lines from that
|
|
266
|
+
* section's body, merging sections that target the same file into one entry.
|
|
267
|
+
* Header-line regex (not `Patch.parse`) so a mid-typed trailing op still
|
|
268
|
+
* yields entries for completed sections.
|
|
269
|
+
*/
|
|
270
|
+
function splitHashlinePerFile(input: string): EditMatcherEntry[] {
|
|
271
|
+
const headerRe = /^\s*\[([^\]\r\n]+?)(?:#[0-9a-fA-F]{4})?\]\s*$/gm;
|
|
272
|
+
const sections: { path: string; headerStart: number; bodyStart: number }[] = [];
|
|
273
|
+
let match: RegExpExecArray | null = headerRe.exec(input);
|
|
274
|
+
while (match !== null) {
|
|
275
|
+
const candidate = stripApplyPatchPathNoise(match[1]).trim();
|
|
276
|
+
if (candidate.length > 0) {
|
|
277
|
+
sections.push({ path: candidate, headerStart: match.index, bodyStart: headerRe.lastIndex });
|
|
278
|
+
}
|
|
279
|
+
match = headerRe.exec(input);
|
|
280
|
+
}
|
|
281
|
+
if (sections.length === 0) return [];
|
|
282
|
+
|
|
283
|
+
const byPath = new Map<string, string>();
|
|
284
|
+
for (let i = 0; i < sections.length; i++) {
|
|
285
|
+
const { path: sectionPath, bodyStart } = sections[i];
|
|
286
|
+
const bodyEnd = i + 1 < sections.length ? sections[i + 1].headerStart : input.length;
|
|
287
|
+
const added = extractAddedLines(input.slice(bodyStart, bodyEnd), false);
|
|
288
|
+
if (added.length === 0) continue;
|
|
289
|
+
const existing = byPath.get(sectionPath);
|
|
290
|
+
byPath.set(sectionPath, existing === undefined ? added : `${existing}\n${added}`);
|
|
291
|
+
}
|
|
292
|
+
return Array.from(byPath, ([path, digest]) => ({ path, digest }));
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Split a (possibly partial) apply_patch envelope into one matcher entry per
|
|
297
|
+
* touched file. Same-path hunks are merged into one entry. Falls back to the
|
|
298
|
+
* streaming-tolerant parser when the envelope hasn't reached `*** End Patch`.
|
|
299
|
+
*/
|
|
300
|
+
function splitApplyPatchPerFile(input: string): EditMatcherEntry[] {
|
|
301
|
+
let entries: ApplyPatchEntry[];
|
|
302
|
+
try {
|
|
303
|
+
entries = expandApplyPatchToEntries({ input });
|
|
304
|
+
} catch {
|
|
305
|
+
try {
|
|
306
|
+
entries = expandApplyPatchToPreviewEntries({ input });
|
|
307
|
+
} catch {
|
|
308
|
+
return [];
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
const byPath = new Map<string, string>();
|
|
312
|
+
for (const entry of entries) {
|
|
313
|
+
if (typeof entry.diff !== "string") continue;
|
|
314
|
+
const added = extractAddedLines(entry.diff, false);
|
|
315
|
+
if (added.length === 0) continue;
|
|
316
|
+
const existing = byPath.get(entry.path);
|
|
317
|
+
byPath.set(entry.path, existing === undefined ? added : `${existing}\n${added}`);
|
|
318
|
+
}
|
|
319
|
+
return Array.from(byPath, ([path, digest]) => ({ path, digest }));
|
|
320
|
+
}
|
|
321
|
+
|
|
194
322
|
// -----------------------------------------------------------------------------
|
|
195
323
|
// Strategies
|
|
196
324
|
// -----------------------------------------------------------------------------
|
|
@@ -236,6 +364,15 @@ const replaceStrategy: EditStreamingStrategy<ReplaceArgs> = {
|
|
|
236
364
|
}
|
|
237
365
|
return digest;
|
|
238
366
|
},
|
|
367
|
+
matcherPaths(args) {
|
|
368
|
+
return typeof args?.path === "string" && args.path.length > 0 ? [args.path] : undefined;
|
|
369
|
+
},
|
|
370
|
+
matcherEntries(args) {
|
|
371
|
+
const path = args?.path;
|
|
372
|
+
if (typeof path !== "string" || path.length === 0) return undefined;
|
|
373
|
+
const digest = replaceStrategy.matcherDigest(args);
|
|
374
|
+
return digest === undefined ? undefined : [{ path, digest }];
|
|
375
|
+
},
|
|
239
376
|
};
|
|
240
377
|
|
|
241
378
|
interface PatchArgs {
|
|
@@ -278,6 +415,15 @@ const patchStrategy: EditStreamingStrategy<PatchArgs> = {
|
|
|
278
415
|
}
|
|
279
416
|
return digest;
|
|
280
417
|
},
|
|
418
|
+
matcherPaths(args) {
|
|
419
|
+
return typeof args?.path === "string" && args.path.length > 0 ? [args.path] : undefined;
|
|
420
|
+
},
|
|
421
|
+
matcherEntries(args) {
|
|
422
|
+
const path = args?.path;
|
|
423
|
+
if (typeof path !== "string" || path.length === 0) return undefined;
|
|
424
|
+
const digest = patchStrategy.matcherDigest(args);
|
|
425
|
+
return digest === undefined ? undefined : [{ path, digest }];
|
|
426
|
+
},
|
|
281
427
|
};
|
|
282
428
|
|
|
283
429
|
interface HashlineArgs {
|
|
@@ -437,6 +583,18 @@ const hashlineStrategy: EditStreamingStrategy<HashlineArgs> = {
|
|
|
437
583
|
// Body rows are `+TEXT`; headers and op lines are grammar, never content.
|
|
438
584
|
return extractAddedLines(input, false);
|
|
439
585
|
},
|
|
586
|
+
matcherPaths(args) {
|
|
587
|
+
const input = args?.input;
|
|
588
|
+
if (typeof input !== "string" || input.length === 0) return undefined;
|
|
589
|
+
const paths = extractHashlineHeaderPaths(input);
|
|
590
|
+
return paths.length > 0 ? paths : undefined;
|
|
591
|
+
},
|
|
592
|
+
matcherEntries(args) {
|
|
593
|
+
const input = args?.input;
|
|
594
|
+
if (typeof input !== "string" || input.length === 0) return undefined;
|
|
595
|
+
const entries = splitHashlinePerFile(input);
|
|
596
|
+
return entries.length > 0 ? entries : undefined;
|
|
597
|
+
},
|
|
440
598
|
};
|
|
441
599
|
|
|
442
600
|
interface ApplyPatchArgs {
|
|
@@ -495,6 +653,18 @@ const applyPatchStrategy: EditStreamingStrategy<ApplyPatchArgs> = {
|
|
|
495
653
|
// Envelope markers and `@@` hunk headers are grammar, never content.
|
|
496
654
|
return extractAddedLines(input, false);
|
|
497
655
|
},
|
|
656
|
+
matcherPaths(args) {
|
|
657
|
+
const input = args?.input;
|
|
658
|
+
if (typeof input !== "string" || input.length === 0) return undefined;
|
|
659
|
+
const paths = extractApplyPatchEnvelopePaths(input);
|
|
660
|
+
return paths.length > 0 ? paths : undefined;
|
|
661
|
+
},
|
|
662
|
+
matcherEntries(args) {
|
|
663
|
+
const input = args?.input;
|
|
664
|
+
if (typeof input !== "string" || input.length === 0) return undefined;
|
|
665
|
+
const entries = splitApplyPatchPerFile(input);
|
|
666
|
+
return entries.length > 0 ? entries : undefined;
|
|
667
|
+
},
|
|
498
668
|
};
|
|
499
669
|
export const EDIT_MODE_STRATEGIES: Record<EditMode, EditStreamingStrategy<unknown>> = {
|
|
500
670
|
replace: replaceStrategy as EditStreamingStrategy<unknown>,
|
|
@@ -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",
|