@oh-my-pi/pi-coding-agent 16.0.10 → 16.1.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 +57 -0
- package/dist/cli.js +3344 -3371
- package/dist/types/advisor/index.d.ts +1 -0
- package/dist/types/advisor/transcript-recorder.d.ts +52 -0
- package/dist/types/commit/agentic/agent.d.ts +1 -1
- package/dist/types/config/settings-schema.d.ts +14 -8
- package/dist/types/edit/file-snapshot-store.d.ts +1 -1
- package/dist/types/extensibility/extensions/types.d.ts +7 -0
- package/dist/types/modes/components/__tests__/skill-message.test.d.ts +1 -0
- package/dist/types/modes/components/agent-hub.d.ts +6 -1
- package/dist/types/modes/components/agent-transcript-viewer.d.ts +39 -0
- package/dist/types/modes/components/assistant-message.d.ts +8 -0
- package/dist/types/modes/components/cache-invalidation-marker.d.ts +34 -0
- package/dist/types/modes/components/chat-transcript-builder.d.ts +42 -0
- package/dist/types/modes/components/compaction-summary-message.d.ts +14 -1
- package/dist/types/modes/components/index.d.ts +0 -1
- package/dist/types/modes/components/message-frame.d.ts +6 -4
- package/dist/types/modes/controllers/command-controller.d.ts +3 -2
- package/dist/types/modes/interactive-mode.d.ts +4 -2
- package/dist/types/modes/theme/theme.d.ts +7 -1
- package/dist/types/modes/types.d.ts +9 -2
- package/dist/types/registry/agent-registry.d.ts +10 -3
- package/dist/types/sdk.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +20 -1
- package/dist/types/session/compact-modes.d.ts +60 -0
- package/dist/types/session/session-context.d.ts +7 -0
- package/dist/types/session/session-dump-format.d.ts +1 -0
- package/dist/types/session/streaming-output.d.ts +0 -2
- package/dist/types/session/tool-choice-queue.d.ts +14 -0
- package/dist/types/system-prompt.d.ts +3 -3
- package/dist/types/tools/__tests__/json-tree.test.d.ts +1 -0
- package/dist/types/tools/index.d.ts +4 -0
- package/dist/types/tools/resolve.d.ts +15 -5
- package/package.json +12 -12
- package/src/advisor/index.ts +1 -0
- package/src/advisor/transcript-recorder.ts +136 -0
- package/src/cli/stats-cli.ts +2 -11
- package/src/collab/host.ts +25 -13
- package/src/commit/agentic/agent.ts +2 -1
- package/src/commit/agentic/tools/git-file-diff.ts +2 -2
- package/src/commit/changelog/index.ts +1 -1
- package/src/commit/map-reduce/map-phase.ts +1 -1
- package/src/commit/map-reduce/utils.ts +1 -1
- package/src/config/settings-schema.ts +16 -9
- package/src/config/settings.ts +0 -6
- package/src/debug/log-viewer.ts +4 -4
- package/src/debug/raw-sse.ts +4 -4
- package/src/edit/file-snapshot-store.ts +1 -1
- package/src/edit/renderer.ts +9 -9
- package/src/eval/js/tool-bridge.ts +3 -2
- package/src/eval/py/prelude.py +3 -2
- package/src/export/html/tool-views.generated.js +28 -28
- package/src/extensibility/extensions/types.ts +7 -0
- package/src/hindsight/mental-models.ts +1 -1
- package/src/internal-urls/docs-index.generated.txt +1 -1
- package/src/internal-urls/history-protocol.ts +8 -3
- package/src/irc/bus.ts +8 -0
- package/src/lsp/index.ts +2 -2
- package/src/lsp/render.ts +7 -7
- package/src/main.ts +4 -1
- package/src/modes/acp/acp-agent.ts +63 -0
- package/src/modes/components/__tests__/skill-message.test.ts +92 -0
- package/src/modes/components/agent-dashboard.ts +1 -1
- package/src/modes/components/agent-hub.ts +97 -920
- package/src/modes/components/agent-transcript-viewer.ts +461 -0
- package/src/modes/components/assistant-message.ts +21 -0
- package/src/modes/components/cache-invalidation-marker.ts +84 -0
- package/src/modes/components/chat-transcript-builder.ts +476 -0
- package/src/modes/components/compaction-summary-message.ts +29 -1
- package/src/modes/components/custom-message.ts +4 -1
- package/src/modes/components/diff.ts +12 -35
- package/src/modes/components/dynamic-border.ts +1 -1
- package/src/modes/components/extensions/extension-dashboard.ts +1 -1
- package/src/modes/components/extensions/inspector-panel.ts +5 -5
- package/src/modes/components/hook-selector.ts +2 -2
- package/src/modes/components/index.ts +0 -1
- package/src/modes/components/message-frame.ts +10 -6
- package/src/modes/components/model-selector.ts +2 -2
- package/src/modes/components/overlay-box.ts +10 -9
- package/src/modes/components/skill-message.ts +39 -19
- package/src/modes/components/tiny-title-download-progress.ts +1 -1
- package/src/modes/components/welcome.ts +1 -1
- package/src/modes/controllers/command-controller.ts +12 -2
- package/src/modes/controllers/event-controller.ts +15 -1
- package/src/modes/controllers/input-controller.ts +8 -1
- package/src/modes/controllers/selector-controller.ts +11 -1
- package/src/modes/interactive-mode.ts +13 -3
- package/src/modes/theme/theme.ts +14 -0
- package/src/modes/types.ts +9 -2
- package/src/modes/utils/ui-helpers.ts +20 -2
- package/src/prompts/steering/user-interjection.md +3 -4
- package/src/prompts/tools/read.md +1 -1
- package/src/registry/agent-registry.ts +13 -4
- package/src/sdk.ts +9 -7
- package/src/session/agent-session.ts +182 -16
- package/src/session/compact-modes.ts +105 -0
- package/src/session/messages.ts +7 -9
- package/src/session/session-context.ts +54 -7
- package/src/session/session-dump-format.ts +4 -2
- package/src/session/session-history-format.ts +1 -1
- package/src/session/snapcompact-inline.ts +2 -2
- package/src/session/streaming-output.ts +5 -5
- package/src/session/tool-choice-queue.ts +59 -0
- package/src/slash-commands/builtin-registry.ts +16 -4
- package/src/system-prompt.ts +10 -9
- package/src/task/executor.ts +1 -1
- package/src/task/output-manager.ts +5 -0
- package/src/tools/__tests__/json-tree.test.ts +35 -0
- package/src/tools/approval.ts +1 -1
- package/src/tools/bash-interactive.ts +4 -4
- package/src/tools/bash.ts +0 -1
- package/src/tools/browser.ts +0 -1
- package/src/tools/eval.ts +1 -1
- package/src/tools/gh.ts +1 -1
- package/src/tools/index.ts +4 -0
- package/src/tools/irc.ts +1 -1
- package/src/tools/json-tree.ts +22 -5
- package/src/tools/read.ts +5 -6
- package/src/tools/resolve.ts +66 -41
- package/src/tui/output-block.ts +9 -9
- package/src/web/scrapers/firefox-addons.ts +1 -1
- package/src/web/scrapers/github.ts +1 -1
- package/src/web/scrapers/go-pkg.ts +2 -2
- package/src/web/scrapers/metacpan.ts +2 -2
- package/src/web/scrapers/nvd.ts +2 -2
- package/src/web/scrapers/ollama.ts +1 -1
- package/src/web/scrapers/opencorporates.ts +1 -1
- package/src/web/scrapers/pub-dev.ts +1 -1
- package/src/web/scrapers/repology.ts +1 -1
- package/src/web/scrapers/sourcegraph.ts +1 -1
- package/src/web/scrapers/terraform.ts +6 -6
- package/src/web/scrapers/wikidata.ts +2 -2
- package/src/workspace-tree.ts +1 -1
- package/dist/types/modes/components/branch-summary-message.d.ts +0 -13
- package/src/modes/components/branch-summary-message.ts +0 -46
|
@@ -102,7 +102,7 @@ const HASHLINE_LINE_PREFIX = /^[ *]?(\d+)(?:-(\d+))?:/;
|
|
|
102
102
|
/**
|
|
103
103
|
* The 1-indexed file lines a hashline-formatted body actually displayed.
|
|
104
104
|
* Single `NN:` rows contribute that line; a collapsed summary `NN-MM:` row
|
|
105
|
-
* (a `{
|
|
105
|
+
* (a `{ … }` brace pair) contributes only its boundary lines `NN` and `MM` —
|
|
106
106
|
* the elided interior was never shown, so editing inside it must be rejected.
|
|
107
107
|
*/
|
|
108
108
|
export function parseSeenLinesFromHashlineBody(body: string): number[] {
|
package/src/edit/renderer.ts
CHANGED
|
@@ -230,7 +230,7 @@ function truncateEditTitlePath(displayPath: string, maxWidth: number | undefined
|
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
function formatEditTitlePath(pathValue: string, maxWidth?: number): string {
|
|
233
|
-
return truncateEditTitlePath(replaceTabs(shortenPath(pathValue)
|
|
233
|
+
return truncateEditTitlePath(replaceTabs(shortenPath(pathValue)), maxWidth);
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
function formatEditPathDisplay(
|
|
@@ -275,8 +275,8 @@ function formatEditDescription(
|
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
function editHeaderLabelBudget(width: number, uiTheme: Theme): number {
|
|
278
|
-
const leftGlyphs = `${uiTheme.
|
|
279
|
-
return Math.max(0, width - visibleWidth(leftGlyphs) - visibleWidth(uiTheme.
|
|
278
|
+
const leftGlyphs = `${uiTheme.boxRound.topLeft}${uiTheme.boxRound.horizontal.repeat(3)}`;
|
|
279
|
+
return Math.max(0, width - visibleWidth(leftGlyphs) - visibleWidth(uiTheme.boxRound.topRight) - 2);
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
function renderEditHeader(
|
|
@@ -326,11 +326,11 @@ function renderEditHeader(
|
|
|
326
326
|
return buildHeader(fitted.description);
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
-
function renderPlainTextPreview(text: string, uiTheme: Theme,
|
|
329
|
+
function renderPlainTextPreview(text: string, uiTheme: Theme, _filePath?: string): string {
|
|
330
330
|
const previewLines = sanitizeText(text).split("\n");
|
|
331
331
|
let preview = "\n\n";
|
|
332
332
|
for (const line of previewLines.slice(0, CALL_TEXT_PREVIEW_LINES)) {
|
|
333
|
-
preview += `${uiTheme.fg("toolOutput", truncateToWidth(replaceTabs(line
|
|
333
|
+
preview += `${uiTheme.fg("toolOutput", truncateToWidth(replaceTabs(line), CALL_TEXT_PREVIEW_WIDTH))}\n`;
|
|
334
334
|
}
|
|
335
335
|
if (previewLines.length > CALL_TEXT_PREVIEW_LINES) {
|
|
336
336
|
preview += uiTheme.fg("dim", `… ${previewLines.length - CALL_TEXT_PREVIEW_LINES} more lines`);
|
|
@@ -395,7 +395,7 @@ function formatMultiFileStreamingDiff(
|
|
|
395
395
|
if (!preview.diff && !preview.error) continue;
|
|
396
396
|
const header = uiTheme.fg("dim", `\n\n── ${shortenPath(preview.path)} ──`);
|
|
397
397
|
if (preview.error) {
|
|
398
|
-
parts.push(`${header}\n${uiTheme.fg("error", replaceTabs(preview.error
|
|
398
|
+
parts.push(`${header}\n${uiTheme.fg("error", replaceTabs(preview.error))}`);
|
|
399
399
|
continue;
|
|
400
400
|
}
|
|
401
401
|
if (preview.diff) {
|
|
@@ -637,7 +637,7 @@ export const editToolRenderer = {
|
|
|
637
637
|
callPreviewCaches,
|
|
638
638
|
);
|
|
639
639
|
if (applyPatchSummary?.error) {
|
|
640
|
-
body += `\n${uiTheme.fg("error", truncateToWidth(replaceTabs(applyPatchSummary.error
|
|
640
|
+
body += `\n${uiTheme.fg("error", truncateToWidth(replaceTabs(applyPatchSummary.error), Math.max(1, width - 2)))}`;
|
|
641
641
|
}
|
|
642
642
|
const bodyLines = body ? body.split("\n") : [];
|
|
643
643
|
while (bodyLines.length > 0 && bodyLines[0].trim() === "") bodyLines.shift();
|
|
@@ -733,11 +733,11 @@ function renderSingleFileResult(
|
|
|
733
733
|
|
|
734
734
|
let body = "";
|
|
735
735
|
if (isError) {
|
|
736
|
-
if (errorText) body = uiTheme.fg("error", replaceTabs(errorText
|
|
736
|
+
if (errorText) body = uiTheme.fg("error", replaceTabs(errorText));
|
|
737
737
|
} else if (details?.diff) {
|
|
738
738
|
body = renderDiffSection(details.diff, rawPath, expanded, uiTheme, renderDiffFn, diffSectionCache);
|
|
739
739
|
} else if (editDiffPreview) {
|
|
740
|
-
if ("error" in editDiffPreview) body = uiTheme.fg("error", replaceTabs(editDiffPreview.error
|
|
740
|
+
if ("error" in editDiffPreview) body = uiTheme.fg("error", replaceTabs(editDiffPreview.error));
|
|
741
741
|
else if (editDiffPreview.diff)
|
|
742
742
|
body = renderDiffSection(editDiffPreview.diff, rawPath, expanded, uiTheme, renderDiffFn, diffSectionCache);
|
|
743
743
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AgentTool, AgentToolResult } from "@oh-my-pi/pi-agent-core";
|
|
2
|
+
import { INTENT_FIELD } from "@oh-my-pi/pi-wire";
|
|
2
3
|
import type { ToolSession } from "../../tools";
|
|
3
4
|
import { ToolError } from "../../tools/tool-errors";
|
|
4
5
|
import { EVAL_AGENT_BRIDGE_NAME, runEvalAgent } from "../agent-bridge";
|
|
@@ -48,8 +49,8 @@ function normalizeArgs(args: unknown): unknown {
|
|
|
48
49
|
return args;
|
|
49
50
|
}
|
|
50
51
|
const record = { ...(args as Record<string, unknown>) };
|
|
51
|
-
if (record
|
|
52
|
-
record
|
|
52
|
+
if (record[INTENT_FIELD] === undefined) {
|
|
53
|
+
record[INTENT_FIELD] = "js prelude";
|
|
53
54
|
}
|
|
54
55
|
return record;
|
|
55
56
|
}
|
package/src/eval/py/prelude.py
CHANGED
|
@@ -5,6 +5,7 @@ if "__omp_prelude_loaded__" not in globals():
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
import os, json, math, re
|
|
7
7
|
from urllib.parse import unquote
|
|
8
|
+
INTENT_FIELD = "_i"
|
|
8
9
|
|
|
9
10
|
# __omp_display is injected by runner.py before the prelude executes; it
|
|
10
11
|
# mirrors IPython's display() semantics with the same MIME bundle output.
|
|
@@ -479,8 +480,8 @@ if "__omp_prelude_loaded__" not in globals():
|
|
|
479
480
|
f"tool.{self._name}(...) expects a dict of arguments (got {type(args).__name__})"
|
|
480
481
|
)
|
|
481
482
|
merged.update(kwargs)
|
|
482
|
-
if
|
|
483
|
-
merged[
|
|
483
|
+
if INTENT_FIELD not in merged:
|
|
484
|
+
merged[INTENT_FIELD] = "py prelude"
|
|
484
485
|
return _bridge_call(self._name, merged)
|
|
485
486
|
|
|
486
487
|
class _ToolProxy:
|