@earendil-works/pi-coding-agent 0.86.1 → 0.87.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 +38 -0
- package/README.md +36 -0
- package/dist/bundle/chunks/{chunk-CMRUVXTE.js → chunk-4DKZACXI.js} +38 -32
- package/dist/bundle/chunks/chunk-GV2E3GBU.js +2 -0
- package/dist/bundle/chunks/github-copilot.js +1 -1
- package/dist/bundle/chunks/{openai-completions-CYGM3XXP.js → openai-completions-XHML6MTL.js} +1 -1
- package/dist/bundle/chunks/{virtual-modules-MGTKWDID.js → virtual-modules-BNWPZYDH.js} +1 -1
- package/dist/bundle/cli-runtime.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/cli/file-processor.d.ts +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +1 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session.d.ts +27 -3
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +389 -119
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/cache-warmer.d.ts +1 -0
- package/dist/core/cache-warmer.d.ts.map +1 -1
- package/dist/core/cache-warmer.js +15 -1
- package/dist/core/cache-warmer.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +3 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +146 -48
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/crash-log.d.ts +5 -0
- package/dist/core/crash-log.d.ts.map +1 -1
- package/dist/core/crash-log.js +68 -0
- package/dist/core/crash-log.js.map +1 -1
- package/dist/core/export-html/template.js +6 -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 +16 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +110 -5
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +77 -6
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/model-config.d.ts +52 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +16 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +6 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +61 -35
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/provider-composer.d.ts +1 -0
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +19 -0
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +6 -2
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +3 -4
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +36 -9
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +97 -7
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/tools/read.d.ts +4 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +5 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +4 -3
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/bug-report.d.ts.map +1 -1
- package/dist/modes/interactive/bug-report.js +4 -0
- package/dist/modes/interactive/bug-report.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +7 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +64 -2
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/utils/mime.d.ts.map +1 -1
- package/dist/utils/mime.js +1 -1
- package/dist/utils/mime.js.map +1 -1
- package/dist/utils/tool-result-images.d.ts +3 -1
- package/dist/utils/tool-result-images.d.ts.map +1 -1
- package/dist/utils/tool-result-images.js +4 -1
- package/dist/utils/tool-result-images.js.map +1 -1
- package/docs/compaction.md +23 -4
- package/docs/extensions.md +70 -6
- package/docs/models.md +29 -1
- package/docs/sdk.md +13 -2
- package/docs/session-format.md +15 -2
- 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/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- 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/examples/plugins/pi-example-plugin/src/session.ts +3 -2
- package/npm-shrinkwrap.json +20 -20
- package/package.json +8 -8
- package/dist/bundle/chunks/chunk-HTEQD2HM.js +0 -2
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Interact with the user via UI primitives
|
|
9
9
|
*/
|
|
10
10
|
import type { AgentMessage, AgentToolResult, AgentToolUpdateCallback, ThinkingLevel, ToolExecutionMode } from "@earendil-works/pi-agent-core";
|
|
11
|
-
import type { Api, AssistantMessageEvent, AssistantMessageEventStream, ConstrainedSamplingConfig, ImageContent, Model, OAuthCredentials, OAuthLoginCallbacks, Provider, ProviderHeaders, RefreshModelsContext, SimpleStreamOptions, TextContent, ToolResultMessage, TranscriptContext, Usage } from "@earendil-works/pi-ai";
|
|
11
|
+
import type { Api, AssistantMessageEvent, AssistantMessageEventStream, ConstrainedSamplingConfig, ImageContent, Message, Model, OAuthCredentials, OAuthLoginCallbacks, Provider, ProviderHeaders, RefreshModelsContext, SimpleStreamOptions, TextContent, ToolResultMessage, TranscriptContext, Usage } from "@earendil-works/pi-ai";
|
|
12
12
|
import type { AutocompleteItem, AutocompleteProvider, Component, EditorComponent, EditorTheme, KeyId, OverlayHandle, OverlayOptions, TUI } from "@earendil-works/pi-tui";
|
|
13
13
|
import type { Static, TSchema } from "typebox";
|
|
14
14
|
import type { Theme } from "../../modes/interactive/theme/theme.ts";
|
|
@@ -22,7 +22,7 @@ import type { KeybindingsManager } from "../keybindings.ts";
|
|
|
22
22
|
import type { CustomMessage } from "../messages.ts";
|
|
23
23
|
import type { ModelRegistry } from "../model-registry.ts";
|
|
24
24
|
import type { ScopedModel } from "../model-resolver.ts";
|
|
25
|
-
import type { BranchSummaryEntry, CompactionEntry, CustomEntry, ReadonlySessionManager, SessionEntry, SessionManager } from "../session-manager.ts";
|
|
25
|
+
import type { BranchSummaryEntry, CompactionEntry, ContextEditEntry, CustomEntry, ProjectedSessionEntry, ReadonlySessionManager, SessionEntry, SessionManager } from "../session-manager.ts";
|
|
26
26
|
import type { SlashCommandInfo } from "../slash-commands.ts";
|
|
27
27
|
import type { SourceInfo } from "../source-info.ts";
|
|
28
28
|
import type { BuildSystemPromptOptions, NormalizedBuildSystemPromptOptions } from "../system-prompt.ts";
|
|
@@ -511,11 +511,26 @@ export interface SessionTreeEvent {
|
|
|
511
511
|
fromExtension?: boolean;
|
|
512
512
|
}
|
|
513
513
|
export type SessionEvent = SessionStartEvent | SessionInfoChangedEvent | SessionBeforeSwitchEvent | SessionBeforeForkEvent | SessionBeforeCompactEvent | SessionCompactEvent | SessionCompactFailedEvent | SessionShutdownEvent | SessionBeforeTreeEvent | SessionTreeEvent;
|
|
514
|
-
/**
|
|
514
|
+
/**
|
|
515
|
+
* Fired before each LLM call. Can modify messages.
|
|
516
|
+
*
|
|
517
|
+
* `messages` holds the conversation without system messages. The prompt and tool state
|
|
518
|
+
* belong to Pi: it restores them after the handler returns, so a handler cannot drop
|
|
519
|
+
* them and does not need to preserve them.
|
|
520
|
+
*/
|
|
515
521
|
export interface ContextEvent {
|
|
516
522
|
type: "context";
|
|
517
523
|
messages: AgentMessage[];
|
|
518
524
|
}
|
|
525
|
+
/**
|
|
526
|
+
* Fired before each LLM call, after every `context` handler has run and Pi has restored
|
|
527
|
+
* the prompt and tool state. `messages` is the full transcript including system messages,
|
|
528
|
+
* and the result is sent as returned: the handler owns the prompt and tool declarations.
|
|
529
|
+
*/
|
|
530
|
+
export interface ContextWithSystemEvent {
|
|
531
|
+
type: "context_with_system";
|
|
532
|
+
messages: AgentMessage[];
|
|
533
|
+
}
|
|
519
534
|
/** Fired before a provider request is sent. Can replace the payload. */
|
|
520
535
|
export interface BeforeProviderRequestEvent {
|
|
521
536
|
type: "before_provider_request";
|
|
@@ -557,6 +572,54 @@ export interface AgentEndEvent {
|
|
|
557
572
|
type: "agent_end";
|
|
558
573
|
messages: AgentMessage[];
|
|
559
574
|
}
|
|
575
|
+
export type AgentActivityOutcome = "completed" | "aborted" | "error";
|
|
576
|
+
export interface CustomEntryDraft {
|
|
577
|
+
type: "custom";
|
|
578
|
+
customType: string;
|
|
579
|
+
data?: unknown;
|
|
580
|
+
}
|
|
581
|
+
export interface CustomMessageEntryDraft {
|
|
582
|
+
type: "custom_message";
|
|
583
|
+
customType: string;
|
|
584
|
+
content: string | (TextContent | ImageContent)[];
|
|
585
|
+
display: boolean;
|
|
586
|
+
details?: unknown;
|
|
587
|
+
}
|
|
588
|
+
export interface ContextEditEntryDraft {
|
|
589
|
+
type: "context_edit";
|
|
590
|
+
targetId: string;
|
|
591
|
+
replacement: ContextEditEntry["replacement"];
|
|
592
|
+
}
|
|
593
|
+
export interface CompactionEntryDraft {
|
|
594
|
+
type: "compaction";
|
|
595
|
+
summary: string;
|
|
596
|
+
/** Null creates a self-retaining compaction that keeps no preceding entries. */
|
|
597
|
+
firstKeptEntryId: string | null;
|
|
598
|
+
details?: unknown;
|
|
599
|
+
usage?: Usage;
|
|
600
|
+
}
|
|
601
|
+
export type SessionBoundaryDraft = CustomEntryDraft | CustomMessageEntryDraft | ContextEditEntryDraft | CompactionEntryDraft;
|
|
602
|
+
export interface BoundaryContextPreview {
|
|
603
|
+
contextEntries: ProjectedSessionEntry[];
|
|
604
|
+
contextMessages: AgentMessage[];
|
|
605
|
+
llmMessages: Message[];
|
|
606
|
+
pendingMessages: AgentMessage[];
|
|
607
|
+
canContinue: boolean;
|
|
608
|
+
}
|
|
609
|
+
export interface BoundaryState {
|
|
610
|
+
entries: SessionBoundaryDraft[];
|
|
611
|
+
continue: boolean;
|
|
612
|
+
context: BoundaryContextPreview;
|
|
613
|
+
outcome: AgentActivityOutcome;
|
|
614
|
+
}
|
|
615
|
+
export interface BoundaryResult {
|
|
616
|
+
entries?: SessionBoundaryDraft[];
|
|
617
|
+
continue?: boolean;
|
|
618
|
+
}
|
|
619
|
+
/** Fired before final settlement. May append entries and ensure one next provider request. */
|
|
620
|
+
export interface AgentBeforeSettleEvent extends BoundaryState {
|
|
621
|
+
type: "agent_before_settle";
|
|
622
|
+
}
|
|
560
623
|
/** Fired after an agent run has fully settled and no automatic retry, compaction, or queued continuation will run. */
|
|
561
624
|
export interface AgentSettledEvent {
|
|
562
625
|
type: "agent_settled";
|
|
@@ -583,11 +646,13 @@ export interface TurnStartEvent {
|
|
|
583
646
|
timestamp: number;
|
|
584
647
|
}
|
|
585
648
|
/** Fired at the end of each turn */
|
|
586
|
-
export interface TurnEndEvent {
|
|
649
|
+
export interface TurnEndEvent extends BoundaryState {
|
|
587
650
|
type: "turn_end";
|
|
588
651
|
turnIndex: number;
|
|
589
652
|
message: AgentMessage;
|
|
590
653
|
toolResults: ToolResultMessage[];
|
|
654
|
+
messageEntryId: string;
|
|
655
|
+
toolResultEntryIds: string[];
|
|
591
656
|
}
|
|
592
657
|
/** Fired when a message starts (user, assistant, or toolResult) */
|
|
593
658
|
export interface MessageStartEvent {
|
|
@@ -811,10 +876,12 @@ export declare function isToolCallEventType<TName extends string, TInput extends
|
|
|
811
876
|
input: TInput;
|
|
812
877
|
};
|
|
813
878
|
/** Union of all event types */
|
|
814
|
-
export type ExtensionEvent = ProjectTrustEvent | ResourcesDiscoverEvent | SessionEvent | ContextEvent | CacheWarmingDecisionEvent | BeforeProviderRequestEvent | BeforeProviderHeadersEvent | AfterProviderResponseEvent | BeforeAgentStartEvent | AgentStartEvent | AgentEndEvent | AgentSettledEvent | UIPromptStartEvent | UIPromptEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | ModelSelectEvent | ThinkingLevelSelectEvent | UserBashEvent | InputEvent | ToolCallEvent | ToolResultEvent;
|
|
879
|
+
export type ExtensionEvent = ProjectTrustEvent | ResourcesDiscoverEvent | SessionEvent | ContextEvent | ContextWithSystemEvent | CacheWarmingDecisionEvent | BeforeProviderRequestEvent | BeforeProviderHeadersEvent | AfterProviderResponseEvent | BeforeAgentStartEvent | AgentStartEvent | AgentEndEvent | AgentBeforeSettleEvent | AgentSettledEvent | UIPromptStartEvent | UIPromptEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | ModelSelectEvent | ThinkingLevelSelectEvent | UserBashEvent | InputEvent | ToolCallEvent | ToolResultEvent;
|
|
815
880
|
export interface ContextEventResult {
|
|
816
881
|
messages?: AgentMessage[];
|
|
817
882
|
}
|
|
883
|
+
export type TurnEndEventResult = BoundaryResult;
|
|
884
|
+
export type AgentBeforeSettleEventResult = BoundaryResult;
|
|
818
885
|
export type BeforeProviderRequestEventResult = unknown;
|
|
819
886
|
export type { CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult } from "../cache-warmer.ts";
|
|
820
887
|
export interface ToolCallEventResult {
|
|
@@ -922,6 +989,7 @@ export interface ExtensionAPI {
|
|
|
922
989
|
on(event: "session_before_tree", handler: ExtensionHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>): () => void;
|
|
923
990
|
on(event: "session_tree", handler: ExtensionHandler<SessionTreeEvent>): () => void;
|
|
924
991
|
on(event: "context", handler: ExtensionHandler<ContextEvent, ContextEventResult>): () => void;
|
|
992
|
+
on(event: "context_with_system", handler: ExtensionHandler<ContextWithSystemEvent, ContextEventResult>): () => void;
|
|
925
993
|
on(event: "cache_warming_decision", handler: ExtensionHandler<CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult>): () => void;
|
|
926
994
|
on(event: "before_provider_request", handler: ExtensionHandler<BeforeProviderRequestEvent, BeforeProviderRequestEventResult>): () => void;
|
|
927
995
|
on(event: "before_provider_headers", handler: ExtensionHandler<BeforeProviderHeadersEvent>): () => void;
|
|
@@ -929,11 +997,12 @@ export interface ExtensionAPI {
|
|
|
929
997
|
on(event: "before_agent_start", handler: ExtensionHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>): () => void;
|
|
930
998
|
on(event: "agent_start", handler: ExtensionHandler<AgentStartEvent>): () => void;
|
|
931
999
|
on(event: "agent_end", handler: ExtensionHandler<AgentEndEvent>): () => void;
|
|
1000
|
+
on(event: "agent_before_settle", handler: ExtensionHandler<AgentBeforeSettleEvent, AgentBeforeSettleEventResult>): () => void;
|
|
932
1001
|
on(event: "agent_settled", handler: ExtensionHandler<AgentSettledEvent>): () => void;
|
|
933
1002
|
on(event: "ui_prompt_start", handler: ExtensionHandler<UIPromptStartEvent>): () => void;
|
|
934
1003
|
on(event: "ui_prompt_end", handler: ExtensionHandler<UIPromptEndEvent>): () => void;
|
|
935
1004
|
on(event: "turn_start", handler: ExtensionHandler<TurnStartEvent>): () => void;
|
|
936
|
-
on(event: "turn_end", handler: ExtensionHandler<TurnEndEvent>): () => void;
|
|
1005
|
+
on(event: "turn_end", handler: ExtensionHandler<TurnEndEvent, TurnEndEventResult>): () => void;
|
|
937
1006
|
on(event: "message_start", handler: ExtensionHandler<MessageStartEvent>): () => void;
|
|
938
1007
|
on(event: "message_update", handler: ExtensionHandler<MessageUpdateEvent>): () => void;
|
|
939
1008
|
on(event: "message_end", handler: ExtensionHandler<MessageEndEvent, MessageEndEventResult>): () => void;
|
|
@@ -1152,6 +1221,8 @@ export interface ProviderModelConfig {
|
|
|
1152
1221
|
thinkingLevelMap?: Model<Api>["thinkingLevelMap"];
|
|
1153
1222
|
/** Supported input types. */
|
|
1154
1223
|
input: ("text" | "image")[];
|
|
1224
|
+
/** Provider input limits and cache-safe image preprocessing metadata. */
|
|
1225
|
+
inputLimits?: Model<Api>["inputLimits"];
|
|
1155
1226
|
/** Per-million-token cost rates and optional request-wide input pricing tiers. */
|
|
1156
1227
|
cost: Model<Api>["cost"];
|
|
1157
1228
|
/** Best-effort prompt cache lifetime in seconds per retention tier. Unset disables cache warming. */
|