@oh-my-pi/pi-coding-agent 16.0.11 → 16.1.1
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 +36 -0
- package/dist/cli.js +3166 -3202
- package/dist/types/config/settings-schema.d.ts +40 -39
- package/dist/types/lsp/types.d.ts +5 -3
- package/dist/types/modes/components/__tests__/skill-message.test.d.ts +1 -0
- package/dist/types/modes/components/assistant-message.d.ts +8 -0
- package/dist/types/modes/components/cache-invalidation-marker.d.ts +39 -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/interactive-mode.d.ts +2 -1
- package/dist/types/modes/theme/theme.d.ts +7 -1
- package/dist/types/modes/types.d.ts +7 -1
- package/dist/types/sdk.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +20 -1
- 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/tool-choice-queue.d.ts +14 -0
- package/dist/types/system-prompt.d.ts +3 -3
- 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/config/settings-schema.ts +48 -39
- package/src/config/settings.ts +40 -0
- package/src/debug/log-viewer.ts +4 -4
- package/src/debug/raw-sse.ts +4 -4
- package/src/edit/renderer.ts +2 -2
- package/src/internal-urls/docs-index.generated.txt +1 -1
- package/src/lsp/client.ts +9 -9
- package/src/lsp/render.ts +7 -7
- package/src/lsp/types.ts +6 -3
- package/src/modes/components/__tests__/skill-message.test.ts +92 -0
- package/src/modes/components/agent-dashboard.ts +1 -1
- package/src/modes/components/assistant-message.ts +21 -0
- package/src/modes/components/cache-invalidation-marker.ts +94 -0
- package/src/modes/components/chat-transcript-builder.ts +16 -2
- package/src/modes/components/compaction-summary-message.ts +29 -1
- package/src/modes/components/custom-message.ts +4 -1
- 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/settings-defs.ts +7 -0
- 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/event-controller.ts +14 -0
- package/src/modes/controllers/selector-controller.ts +7 -0
- package/src/modes/interactive-mode.ts +9 -1
- package/src/modes/theme/theme.ts +14 -0
- package/src/modes/types.ts +7 -1
- package/src/modes/utils/ui-helpers.ts +20 -2
- package/src/prompts/steering/user-interjection.md +3 -4
- package/src/sdk.ts +8 -6
- package/src/session/agent-session.ts +96 -23
- package/src/session/messages.ts +7 -9
- package/src/session/session-context.ts +54 -7
- package/src/session/session-dump-format.ts +3 -1
- package/src/session/snapcompact-inline.ts +2 -2
- package/src/session/tool-choice-queue.ts +59 -0
- package/src/system-prompt.ts +10 -9
- package/src/tools/bash-interactive.ts +4 -4
- package/src/tools/index.ts +4 -0
- package/src/tools/resolve.ts +66 -41
- package/src/tui/output-block.ts +9 -9
- package/dist/types/modes/components/branch-summary-message.d.ts +0 -13
- package/src/modes/components/branch-summary-message.ts +0 -46
|
@@ -342,44 +342,38 @@ export const SETTINGS_SCHEMA = {
|
|
|
342
342
|
},
|
|
343
343
|
|
|
344
344
|
// macOS power assertions (caffeinate flags). No-op on other platforms.
|
|
345
|
-
"power.
|
|
346
|
-
type: "
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
tab: "interaction",
|
|
350
|
-
group: "Power (macOS)",
|
|
351
|
-
label: "Prevent Idle Sleep",
|
|
352
|
-
description: "Keep the system awake while a session is open (caffeinate -i)",
|
|
353
|
-
},
|
|
354
|
-
},
|
|
355
|
-
"power.preventSystemSleep": {
|
|
356
|
-
type: "boolean",
|
|
357
|
-
default: false,
|
|
358
|
-
ui: {
|
|
359
|
-
tab: "interaction",
|
|
360
|
-
group: "Power (macOS)",
|
|
361
|
-
label: "Prevent System Sleep on AC",
|
|
362
|
-
description: "Block all system sleep while on AC power (caffeinate -s)",
|
|
363
|
-
},
|
|
364
|
-
},
|
|
365
|
-
"power.declareUserActive": {
|
|
366
|
-
type: "boolean",
|
|
367
|
-
default: false,
|
|
368
|
-
ui: {
|
|
369
|
-
tab: "interaction",
|
|
370
|
-
group: "Power (macOS)",
|
|
371
|
-
label: "Declare User Active",
|
|
372
|
-
description: "Keep the display lit and treat the user as active (caffeinate -u)",
|
|
373
|
-
},
|
|
374
|
-
},
|
|
375
|
-
"power.preventDisplaySleep": {
|
|
376
|
-
type: "boolean",
|
|
377
|
-
default: false,
|
|
345
|
+
"power.sleepPrevention": {
|
|
346
|
+
type: "enum",
|
|
347
|
+
values: ["off", "idle", "display", "system"] as const,
|
|
348
|
+
default: "idle",
|
|
378
349
|
ui: {
|
|
379
350
|
tab: "interaction",
|
|
380
351
|
group: "Power (macOS)",
|
|
381
|
-
label: "
|
|
382
|
-
description:
|
|
352
|
+
label: "Sleep Prevention",
|
|
353
|
+
description:
|
|
354
|
+
"Prevent macOS sleep during active sessions. Each level is cumulative — it adds the flags of all lower levels.",
|
|
355
|
+
options: [
|
|
356
|
+
{
|
|
357
|
+
value: "off",
|
|
358
|
+
label: "Off",
|
|
359
|
+
description: "Do not prevent any sleep",
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
value: "idle",
|
|
363
|
+
label: "Prevent Idle Sleep",
|
|
364
|
+
description: "Keep the system awake while a session is open (caffeinate -i)",
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
value: "display",
|
|
368
|
+
label: "Prevent Display Sleep",
|
|
369
|
+
description: "Also keep the display from idle-sleeping (caffeinate -i -d)",
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
value: "system",
|
|
373
|
+
label: "Prevent System Sleep",
|
|
374
|
+
description: "Also block all system sleep on AC and declare the user active (caffeinate -i -d -s -u)",
|
|
375
|
+
},
|
|
376
|
+
],
|
|
383
377
|
},
|
|
384
378
|
},
|
|
385
379
|
"advisor.enabled": {
|
|
@@ -401,6 +395,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
401
395
|
group: "Advisor",
|
|
402
396
|
label: "Advisor for Subagents",
|
|
403
397
|
description: "Also enable the advisor on spawned task/eval subagents.",
|
|
398
|
+
condition: "advisorEnabled",
|
|
404
399
|
},
|
|
405
400
|
},
|
|
406
401
|
"advisor.syncBacklog": {
|
|
@@ -413,6 +408,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
413
408
|
label: "Advisor Sync Backlog",
|
|
414
409
|
description:
|
|
415
410
|
"Pause the main agent for up to 30 seconds if the advisor falls behind by this many turns. Off disables catch-up delays.",
|
|
411
|
+
condition: "advisorEnabled",
|
|
416
412
|
},
|
|
417
413
|
},
|
|
418
414
|
"advisor.immuneTurns": {
|
|
@@ -432,6 +428,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
432
428
|
{ value: "4", label: "4 turns" },
|
|
433
429
|
{ value: "5", label: "5 turns" },
|
|
434
430
|
],
|
|
431
|
+
condition: "advisorEnabled",
|
|
435
432
|
},
|
|
436
433
|
},
|
|
437
434
|
shellPath: { type: "string", default: undefined },
|
|
@@ -849,6 +846,17 @@ export const SETTINGS_SCHEMA = {
|
|
|
849
846
|
},
|
|
850
847
|
},
|
|
851
848
|
|
|
849
|
+
"display.cacheMissMarker": {
|
|
850
|
+
type: "boolean",
|
|
851
|
+
default: false,
|
|
852
|
+
ui: {
|
|
853
|
+
tab: "appearance",
|
|
854
|
+
group: "Display",
|
|
855
|
+
label: "Cache Miss Marker",
|
|
856
|
+
description: "Show a divider above an assistant turn whose request lost (missed) the prompt cache",
|
|
857
|
+
},
|
|
858
|
+
},
|
|
859
|
+
|
|
852
860
|
showHardwareCursor: {
|
|
853
861
|
type: "boolean",
|
|
854
862
|
default: true, // will be computed based on platform if undefined
|
|
@@ -914,14 +922,15 @@ export const SETTINGS_SCHEMA = {
|
|
|
914
922
|
},
|
|
915
923
|
},
|
|
916
924
|
|
|
917
|
-
|
|
925
|
+
inlineToolDescriptors: {
|
|
918
926
|
type: "boolean",
|
|
919
|
-
default:
|
|
927
|
+
default: true,
|
|
920
928
|
ui: {
|
|
921
929
|
tab: "model",
|
|
922
930
|
group: "Prompt",
|
|
923
|
-
label: "
|
|
924
|
-
description:
|
|
931
|
+
label: "Inline Tool Descriptors",
|
|
932
|
+
description:
|
|
933
|
+
"Render full tool descriptors in the system prompt and strip top-level/nested descriptions from provider tool schemas so descriptor text is sent once",
|
|
925
934
|
},
|
|
926
935
|
},
|
|
927
936
|
|
package/src/config/settings.ts
CHANGED
|
@@ -909,6 +909,46 @@ export class Settings {
|
|
|
909
909
|
}
|
|
910
910
|
}
|
|
911
911
|
|
|
912
|
+
// power.preventIdleSleep / power.preventSystemSleep / power.declareUserActive
|
|
913
|
+
// / power.preventDisplaySleep (four booleans) → power.sleepPrevention enum.
|
|
914
|
+
// The enum is cumulative: each level adds the flags of all lower levels.
|
|
915
|
+
// Migration picks the highest level whose condition is met, scanning from
|
|
916
|
+
// most to least aggressive so a single enum value captures the old state.
|
|
917
|
+
if (
|
|
918
|
+
!("sleepPrevention" in ((raw.power as Record<string, unknown>) ?? {})) &&
|
|
919
|
+
raw["power.sleepPrevention"] === undefined
|
|
920
|
+
) {
|
|
921
|
+
const powerObj = raw.power as Record<string, unknown> | undefined;
|
|
922
|
+
const getFlag = (key: string): boolean | undefined => {
|
|
923
|
+
const nested = powerObj?.[key];
|
|
924
|
+
const flat = raw[`power.${key}`];
|
|
925
|
+
const value = nested ?? flat;
|
|
926
|
+
return typeof value === "boolean" ? value : undefined;
|
|
927
|
+
};
|
|
928
|
+
const idle = getFlag("preventIdleSleep");
|
|
929
|
+
const system = getFlag("preventSystemSleep");
|
|
930
|
+
const user = getFlag("declareUserActive");
|
|
931
|
+
const display = getFlag("preventDisplaySleep");
|
|
932
|
+
const anySet = idle !== undefined || system !== undefined || user !== undefined || display !== undefined;
|
|
933
|
+
if (anySet) {
|
|
934
|
+
const mode = system || user ? "system" : display ? "display" : idle !== false ? "idle" : "off";
|
|
935
|
+
const powerRoot = (powerObj ?? {}) as Record<string, unknown>;
|
|
936
|
+
powerRoot.sleepPrevention = mode;
|
|
937
|
+
raw.power = powerRoot;
|
|
938
|
+
}
|
|
939
|
+
// Clean up old keys (nested + flat)
|
|
940
|
+
if (powerObj) {
|
|
941
|
+
delete powerObj.preventIdleSleep;
|
|
942
|
+
delete powerObj.preventSystemSleep;
|
|
943
|
+
delete powerObj.declareUserActive;
|
|
944
|
+
delete powerObj.preventDisplaySleep;
|
|
945
|
+
}
|
|
946
|
+
delete raw["power.preventIdleSleep"];
|
|
947
|
+
delete raw["power.preventSystemSleep"];
|
|
948
|
+
delete raw["power.declareUserActive"];
|
|
949
|
+
delete raw["power.preventDisplaySleep"];
|
|
950
|
+
}
|
|
951
|
+
|
|
912
952
|
return raw;
|
|
913
953
|
}
|
|
914
954
|
|
package/src/debug/log-viewer.ts
CHANGED
|
@@ -866,21 +866,21 @@ export class DebugLogViewerComponent implements Component {
|
|
|
866
866
|
}
|
|
867
867
|
|
|
868
868
|
#frameTop(innerWidth: number): string {
|
|
869
|
-
return `${theme.
|
|
869
|
+
return `${theme.boxRound.topLeft}${theme.boxRound.horizontal.repeat(innerWidth)}${theme.boxRound.topRight}`;
|
|
870
870
|
}
|
|
871
871
|
|
|
872
872
|
#frameSeparator(innerWidth: number): string {
|
|
873
|
-
return `${theme.
|
|
873
|
+
return `${theme.boxRound.teeRight}${theme.boxRound.horizontal.repeat(innerWidth)}${theme.boxRound.teeLeft}`;
|
|
874
874
|
}
|
|
875
875
|
|
|
876
876
|
#frameBottom(innerWidth: number): string {
|
|
877
|
-
return `${theme.
|
|
877
|
+
return `${theme.boxRound.bottomLeft}${theme.boxRound.horizontal.repeat(innerWidth)}${theme.boxRound.bottomRight}`;
|
|
878
878
|
}
|
|
879
879
|
|
|
880
880
|
#frameLine(content: string, innerWidth: number): string {
|
|
881
881
|
const truncated = truncateToWidth(content, innerWidth);
|
|
882
882
|
const remaining = Math.max(0, innerWidth - visibleWidth(truncated));
|
|
883
|
-
return `${theme.
|
|
883
|
+
return `${theme.boxRound.vertical}${truncated}${padding(remaining)}${theme.boxRound.vertical}`;
|
|
884
884
|
}
|
|
885
885
|
|
|
886
886
|
#copySelected() {
|
package/src/debug/raw-sse.ts
CHANGED
|
@@ -273,20 +273,20 @@ export class RawSseViewerComponent implements Component {
|
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
#frameTop(innerWidth: number): string {
|
|
276
|
-
return `${theme.
|
|
276
|
+
return `${theme.boxRound.topLeft}${theme.boxRound.horizontal.repeat(innerWidth)}${theme.boxRound.topRight}`;
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
#frameSeparator(innerWidth: number): string {
|
|
280
|
-
return `${theme.
|
|
280
|
+
return `${theme.boxRound.teeRight}${theme.boxRound.horizontal.repeat(innerWidth)}${theme.boxRound.teeLeft}`;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
#frameBottom(innerWidth: number): string {
|
|
284
|
-
return `${theme.
|
|
284
|
+
return `${theme.boxRound.bottomLeft}${theme.boxRound.horizontal.repeat(innerWidth)}${theme.boxRound.bottomRight}`;
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
#frameLine(content: string, innerWidth: number): string {
|
|
288
288
|
const truncated = truncateToWidth(content, innerWidth);
|
|
289
289
|
const remaining = Math.max(0, innerWidth - visibleWidth(truncated));
|
|
290
|
-
return `${theme.
|
|
290
|
+
return `${theme.boxRound.vertical}${truncated}${padding(remaining)}${theme.boxRound.vertical}`;
|
|
291
291
|
}
|
|
292
292
|
}
|
package/src/edit/renderer.ts
CHANGED
|
@@ -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(
|