zidane 5.10.13 → 5.11.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/README.md +31 -5
- package/dist/{agent-BHkvYIH9.d.ts → agent-D0W9yClt.d.ts} +114 -27
- package/dist/agent-D0W9yClt.d.ts.map +1 -0
- package/dist/chat/pure.d.ts +3 -3
- package/dist/chat.d.ts +7 -7
- package/dist/chat.js +2 -2
- package/dist/contexts/docker.d.ts +1 -1
- package/dist/contexts/docker.d.ts.map +1 -1
- package/dist/contexts/docker.js +53 -14
- package/dist/contexts/docker.js.map +1 -1
- package/dist/contexts/e2b.d.ts +168 -0
- package/dist/contexts/e2b.d.ts.map +1 -0
- package/dist/contexts/e2b.js +261 -0
- package/dist/contexts/e2b.js.map +1 -0
- package/dist/{contexts-BJVgG0LY.js → contexts-DglWSzmR.js} +59 -9
- package/dist/contexts-DglWSzmR.js.map +1 -0
- package/dist/contexts.d.ts +3 -3
- package/dist/contexts.js +1 -1
- package/dist/eval.d.ts +1 -1
- package/dist/eval.js +5 -5
- package/dist/eval.js.map +1 -1
- package/dist/{headless-CPaunZsU.js → headless-Bb5gU8AR.js} +6 -6
- package/dist/{headless-CPaunZsU.js.map → headless-Bb5gU8AR.js.map} +1 -1
- package/dist/headless.d.ts +1 -1
- package/dist/headless.js +1 -1
- package/dist/{index-C_t8tW_X.d.ts → index-CrMb8jCE.d.ts} +2 -2
- package/dist/{index-C_t8tW_X.d.ts.map → index-CrMb8jCE.d.ts.map} +1 -1
- package/dist/{index-BIo67xLV.d.ts → index-D60tX5XC.d.ts} +10 -3
- package/dist/index-D60tX5XC.d.ts.map +1 -0
- package/dist/{index-C4aT2kO_.d.ts → index-DZR99FD4.d.ts} +30 -111
- package/dist/index-DZR99FD4.d.ts.map +1 -0
- package/dist/index.d.ts +7 -6
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/{interpolate-Dy7Lunvg.js → interpolate-CTfr0GdR.js} +19 -1
- package/dist/{interpolate-Dy7Lunvg.js.map → interpolate-CTfr0GdR.js.map} +1 -1
- package/dist/logger-Ktm-lj1s.js +300 -0
- package/dist/logger-Ktm-lj1s.js.map +1 -0
- package/dist/logger-n4LsLISE.d.ts +102 -0
- package/dist/logger-n4LsLISE.d.ts.map +1 -0
- package/dist/{login-0jP1pnSJ.js → login-BHhOdTp9.js} +4 -301
- package/dist/login-BHhOdTp9.js.map +1 -0
- package/dist/{mcp-tevNihk_.js → mcp-Cy9mgCcr.js} +22 -9
- package/dist/mcp-Cy9mgCcr.js.map +1 -0
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.js +1 -1
- package/dist/{messages-C_1AmSpk.js → messages-RPKrEPvH.js} +6 -2
- package/dist/messages-RPKrEPvH.js.map +1 -0
- package/dist/output/stream-json.d.ts +2 -2
- package/dist/output/stream-json.js +1 -1
- package/dist/output/terminal.d.ts +2 -2
- package/dist/output/terminal.js +1 -0
- package/dist/output/terminal.js.map +1 -1
- package/dist/{presets-Cm2BPJaU.js → presets-D5ibZTml.js} +2 -2
- package/dist/{presets-Cm2BPJaU.js.map → presets-D5ibZTml.js.map} +1 -1
- package/dist/presets.d.ts +2 -2
- package/dist/presets.js +1 -1
- package/dist/{providers-BGBB18zz.js → providers-C2cxujp_.js} +85 -20
- package/dist/providers-C2cxujp_.js.map +1 -0
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +2 -2
- package/dist/restate.d.ts +2 -2
- package/dist/restate.js +4 -1
- package/dist/restate.js.map +1 -1
- package/dist/session/sqlite.d.ts +1 -1
- package/dist/session/sqlite.d.ts.map +1 -1
- package/dist/session/sqlite.js +36 -4
- package/dist/session/sqlite.js.map +1 -1
- package/dist/{session-CtAWwwkn.js → session-Do_TQV7c.js} +70 -22
- package/dist/session-Do_TQV7c.js.map +1 -0
- package/dist/session.d.ts +2 -2
- package/dist/session.js +3 -3
- package/dist/shell-quote-BmnhZmdM.js +33 -0
- package/dist/shell-quote-BmnhZmdM.js.map +1 -0
- package/dist/skills.d.ts +3 -3
- package/dist/skills.js +1 -1
- package/dist/skills.js.map +1 -1
- package/dist/{tool-formatters-D_fX6FGl.d.ts → tool-formatters-RT5-gyE2.d.ts} +2 -2
- package/dist/{tool-formatters-D_fX6FGl.d.ts.map → tool-formatters-RT5-gyE2.d.ts.map} +1 -1
- package/dist/tools/fetch-url.d.ts +1 -1
- package/dist/tools/web-search.d.ts +1 -1
- package/dist/{tools-NxnEmzYg.js → tools-ZHKOh44k.js} +342 -123
- package/dist/tools-ZHKOh44k.js.map +1 -0
- package/dist/tools.d.ts +2 -2
- package/dist/tools.js +1 -1
- package/dist/{transcript-anchors-DA6XawEU.d.ts → transcript-anchors-B4FxkG-8.d.ts} +10 -4
- package/dist/transcript-anchors-B4FxkG-8.d.ts.map +1 -0
- package/dist/{transcript-anchors-B_c7gWot.js → transcript-anchors-CS46ul6X.js} +10 -10
- package/dist/transcript-anchors-CS46ul6X.js.map +1 -0
- package/dist/tui.d.ts +3 -3
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +167 -41
- package/dist/tui.js.map +1 -1
- package/dist/{turn-operations-CCl7rpbT.d.ts → turn-operations-CoRj3mYZ.d.ts} +3 -3
- package/dist/{turn-operations-CCl7rpbT.d.ts.map → turn-operations-CoRj3mYZ.d.ts.map} +1 -1
- package/dist/{types-BibzMDjX.d.ts → types-B39tBba1.d.ts} +69 -2
- package/dist/types-B39tBba1.d.ts.map +1 -0
- package/dist/types-BiobHM1D.js.map +1 -1
- package/dist/types.d.ts +5 -5
- package/docs/ARCHITECTURE.md +1 -1
- package/docs/CHAT.md +3 -3
- package/docs/EXECUTION_CONTEXT.md +257 -0
- package/docs/RUN_IN_BACKGROUND.md +8 -0
- package/docs/SKILL.md +3 -3
- package/package.json +57 -24
- package/dist/agent-BHkvYIH9.d.ts.map +0 -1
- package/dist/contexts-BJVgG0LY.js.map +0 -1
- package/dist/index-BIo67xLV.d.ts.map +0 -1
- package/dist/index-C4aT2kO_.d.ts.map +0 -1
- package/dist/login-0jP1pnSJ.js.map +0 -1
- package/dist/mcp-tevNihk_.js.map +0 -1
- package/dist/messages-C_1AmSpk.js.map +0 -1
- package/dist/providers-BGBB18zz.js.map +0 -1
- package/dist/session-CtAWwwkn.js.map +0 -1
- package/dist/tools-NxnEmzYg.js.map +0 -1
- package/dist/transcript-anchors-B_c7gWot.js.map +0 -1
- package/dist/transcript-anchors-DA6XawEU.d.ts.map +0 -1
- package/dist/types-BibzMDjX.d.ts.map +0 -1
package/dist/tui.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { At as marginTopFor, D as InteractionRequest, Gt as KeyBindings, O as InteractionResponse, S as splitMarkdownCodeBlocks, an as Hint, cn as truncateTrailing, dn as AgentRegistry, dt as ChatOptions, et as EnabledAllowlistKey, g as SessionExportFormat, it as DiscoveryError, l as Theme, n as computeTurnAnchors, nn as CompletionState, on as clipHintsToWidth, pt as ResolvedConfig, rt as DiscoveredMcp, sn as hintsLength, t as TranscriptItem, u as ThemeColors, vn as accentColor, x as MarkdownSegment } from "./transcript-anchors-
|
|
3
|
-
import { A as SessionMeta, G as ProviderKey, L as CompletionProvider, M as StreamEvent, R as CompletionReference, W as ProviderAuth, X as ModelOption, Y as ModelInfo, _ as isEditErrorResult, a as formatToolCall, b as selectableTurnIds, c as splitPromptSegments, i as displayNameFor, j as Settings, l as ApprovalDecision, n as ToolDisplayMeta, o as PromptSegment, r as ToolFormatLine, s as PromptSegmentRef, t as TOOL_DISPLAY, u as ApprovalRequest, v as isTurnHighlighted, x as turnSelectionOwnership, y as isVisible } from "./tool-formatters-
|
|
1
|
+
import { Cn as SessionTurn, En as ThinkingLevel, F as Session, I as SessionData, k as SkillConfig, ln as McpToolSchema } from "./agent-D0W9yClt.js";
|
|
2
|
+
import { At as marginTopFor, D as InteractionRequest, Gt as KeyBindings, O as InteractionResponse, S as splitMarkdownCodeBlocks, an as Hint, cn as truncateTrailing, dn as AgentRegistry, dt as ChatOptions, et as EnabledAllowlistKey, g as SessionExportFormat, it as DiscoveryError, l as Theme, n as computeTurnAnchors, nn as CompletionState, on as clipHintsToWidth, pt as ResolvedConfig, rt as DiscoveredMcp, sn as hintsLength, t as TranscriptItem, u as ThemeColors, vn as accentColor, x as MarkdownSegment } from "./transcript-anchors-B4FxkG-8.js";
|
|
3
|
+
import { A as SessionMeta, G as ProviderKey, L as CompletionProvider, M as StreamEvent, R as CompletionReference, W as ProviderAuth, X as ModelOption, Y as ModelInfo, _ as isEditErrorResult, a as formatToolCall, b as selectableTurnIds, c as splitPromptSegments, i as displayNameFor, j as Settings, l as ApprovalDecision, n as ToolDisplayMeta, o as PromptSegment, r as ToolFormatLine, s as PromptSegmentRef, t as TOOL_DISPLAY, u as ApprovalRequest, v as isTurnHighlighted, x as turnSelectionOwnership, y as isVisible } from "./tool-formatters-RT5-gyE2.js";
|
|
4
4
|
import { Buffer } from "node:buffer";
|
|
5
5
|
import { ReactNode } from "react";
|
|
6
6
|
import { RGBA, SyntaxStyle } from "@opentui/core";
|
package/dist/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","names":[],"sources":["../src/tui/agent-picker.tsx","../src/tui/app.tsx","../src/tui/completion-popup.tsx","../src/tui/components.tsx","../src/tui/effort-picker.tsx","../src/tui/interaction-block.tsx","../src/tui/mcps-settings.tsx","../src/tui/modal.tsx","../src/tui/model-options-picker.tsx","../src/tui/model-picker.tsx","../src/tui/screens.tsx","../src/tui/session-details-modal.tsx","../src/tui/settings-modal.tsx","../src/tui/skills-settings.tsx","../src/tui/theme.ts","../src/tui/toggle-list-modal.tsx","../src/tui/turn-details-modal.tsx","../src/tui/index.tsx"],"mappings":";;;;;;;;;;;;;;;AAoBA;;;;iBAAgB,gBAAA,CAAA;EACd,MAAA;EACA,cAAA;EACA;AAAA;EAEA,MAAA,EAAQ,aAAA;EACR,cAAA;EACA,MAAA,GAAS,EAAA;AAAA,oBACV,SAAA;;;;;;;;;;;iBCyOe,GAAA,CAAA;EAAM;AAAA;EAAY,MAAA,EAAQ,cAAc;AAAA,oBAAE,SAAA;;;;;;;;;ADjP1D;;;;;;;;;;;;;;;;;;;;iBEYgB,eAAA,CAAA;EACd,KAAA;kFAEA;AAAA;EAEA,KAAA,EAAO,eAAA;EACP,WAAA;AAAA,IACD,SAAA;;;;;;;;AFnBD;iBGiFgB,aAAA,CAAc,OAAgC,GAAtB,KAAA;AAAA,UAYvB,YAAA;EACf,IAAA;EACA,GAAG;AAAA;;;;;;;iBASW,MAAA,CAAA;EACd,KAAA;EACA,OAAA;EACA,IAAA;EACA;AAAA;EAEA,KAAA,EAAO,IAAA;EACP,OAAA,EAAS,YAAA;EH1GT;;;;;EGgHA,IAAA;EH7GD;AAAA;;;;ACyOD;EErHE,MAAA;AAAA,IACD,SAAA;;;;;;;;AFoHyD;;;;ACrO1D;;;iBC6NgB,eAAA,CAAgB,KAAA,WAAgB,IAAA,IAAQ,KAAA,EAAO,WAAA,GAAc,SAAA;;;;;;;;UAoE5D,WAAA;EACf,IAAA;ED7RA;EC+RA,KAAK;AAAA;;;AD7RN;;;;AC8DD;;;;AAA8D;AAY9D;;;;AAEK;AASL;;;;;;;;;;;;;;;;;;;;;;;iBAiQgB,YAAA,CAAA;EACd,KAAA;EACA,IAAA;EACA,UAAA;EACA,WAAA;EACA,UAAA;EACA;AAAA;EAEA,KAAA,UArPA;EAuPA,IAAA,qBAAyB,WAAA,WAtP1B;EAwPC,UAAA;EA5Ic;;;;;EAkJd,WAAA;EAlJoF;;;;;;;;AAAA;AAoEtF;;;;AAGO;AAyDP;;;EAoCE,UAAA,GAAa,SAAA;EAlCb;;;;;;EAyCA,eAAA;AAAA,IACD,SAAA;AAAA,iBAgHe,OAAA,CAAA;EAAU;AAAA;EAAW,KAAA;AAAA,IAAgB,SAAA;;;;;;;iBAiBrC,aAAA,CAAA;EAAgB;AAAA;EAAW,KAAA;AAAA,IAAe,SAAA;AAAA,iBAS1C,UAAA,CAAA;EACd,MAAA;EACA,QAAA;EACA,cAAA;EACA;AAAA;EAEA,MAAA,EAAQ,WAAA;EACR,QAAA,EAAU,QAAA;EAnLV;;;;;EAyLA,cAAA;EAxJA;;;AACD;AAgHD;;;EA+CE,IAAA;AAAA,IACD,SAAA;;;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","names":[],"sources":["../src/tui/agent-picker.tsx","../src/tui/app.tsx","../src/tui/completion-popup.tsx","../src/tui/components.tsx","../src/tui/effort-picker.tsx","../src/tui/interaction-block.tsx","../src/tui/mcps-settings.tsx","../src/tui/modal.tsx","../src/tui/model-options-picker.tsx","../src/tui/model-picker.tsx","../src/tui/screens.tsx","../src/tui/session-details-modal.tsx","../src/tui/settings-modal.tsx","../src/tui/skills-settings.tsx","../src/tui/theme.ts","../src/tui/toggle-list-modal.tsx","../src/tui/turn-details-modal.tsx","../src/tui/index.tsx"],"mappings":"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"}
|
package/dist/tui.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { $ as useMcpAuthDispatch, $t as deriveSessionTitle, A as runOAuthLogin, An as buildUpdateHint, At as clampFps, B as refreshMcpToolsCatalog, Bn as AUTO_COMPACT_MIN_GROWTH_FRACTION, Ct as listProjectFiles, D as formatPathForCwd, Dn as tryOpenBrowser, Dt as SETTINGS_CHOICES, En as useCompletion, Et as SETTINGS_CATEGORIES, Ft as resolveTheme, Gt as useDiscovery, H as subscribeMcpToolsCache, Hn as detectAuth, J as parentServerName, Jn as setProviderCredential, Jt as useConfig, K as buildVisibleMcpRows, Kt as useDiscoveryOptional, M as buildMcpServers, Mr as buildBuildSystem, Nr as buildPlanSystem, O as fetchOAuthRedirect, Ot as SETTINGS_TOGGLES, P as discoverProjectMcps, Pr as envSection, Pt as resolveChipColor, Q as McpAuthProvider, Qn as findGitRoot, R as loadMcpToolsCache, T as suggestSafelistEntry, Tt as DEFAULT_SETTINGS, Ut as createDiscoverySlot, Vn as shouldAutoCompact, W as useMcpToolToggleMap, Wt as DiscoveryProvider, Xn as discoverAgentsMd, Y as createFileMcpCredentialStore, Yt as resolveConfig, _ as useSafeModeQueue, _n as ensureKeybindingsFile, _t as hintsLength, a as useSurfaces, ar as accentColor, at as InteractionsProvider, b as getSafelist, bn as keybindingsPath, bt as generateSessionTitle, c as useStreamBuffer, cn as sumRunCosts, ct as createInteractionTools, d as discoverProjectSkills, dn as toolResultText, dr as TODO_STATUS_GLYPHS, dt as pendingInteractionsFromTurns, en as eventsFromTurns, et as useMcpAuthState, fn as updateToolEventOutcomes, g as useSafeModeActions, gn as KEYBINDING_KEY_COL_WIDTH, gt as clipHintsToWidth, h as SafeModeProvider, ht as EMPTY_HINTS, i as useSelectStyle, in as marginTopFor, j as supportsOAuth, jn as useUpdateCheck, jt as useSettings, k as oauthUsesManualCodePaste, kn as bootTick, kt as SettingsProvider, l as buildSkillsConfig, m as writeSessionExport, mn as KEYBINDING_DEFS, mt as useInteractionsQueue, n as ThemeProvider, nn as listSessionMeta, on as serverToolResultSummary, pt as useInteractionsActions, q as indexOfServerRow, qt as ConfigProvider, r as useColors, rt as splitMarkdownCodeBlocks, s as useTheme, sn as stripSpawnTokensLine, st as buildResumedToolResultsTurn, t as computeTurnAnchors, tn as lastContextSizeFromTurns, tt as getMcpAuthStatus, u as defaultSkillScanPaths, un as toolCallPreview, ut as makeRequestInteraction, vn as formatBindingForDisplay, vt as truncateTrailing, wt as useEnabledToggleSet, x as isOnSafelist, xn as matchesBinding, xr as useActiveTodos, xt as buildHints, y as addToSafelist, yn as groupBindings } from "./transcript-anchors-
|
|
2
|
-
import { $ as
|
|
1
|
+
import { $ as useMcpAuthDispatch, $t as deriveSessionTitle, A as runOAuthLogin, An as buildUpdateHint, At as clampFps, B as refreshMcpToolsCatalog, Bn as AUTO_COMPACT_MIN_GROWTH_FRACTION, Ct as listProjectFiles, D as formatPathForCwd, Dn as tryOpenBrowser, Dt as SETTINGS_CHOICES, En as useCompletion, Et as SETTINGS_CATEGORIES, Ft as resolveTheme, Gt as useDiscovery, H as subscribeMcpToolsCache, Hn as detectAuth, J as parentServerName, Jn as setProviderCredential, Jt as useConfig, K as buildVisibleMcpRows, Kt as useDiscoveryOptional, M as buildMcpServers, Mr as buildBuildSystem, Nr as buildPlanSystem, O as fetchOAuthRedirect, Ot as SETTINGS_TOGGLES, P as discoverProjectMcps, Pr as envSection, Pt as resolveChipColor, Q as McpAuthProvider, Qn as findGitRoot, R as loadMcpToolsCache, T as suggestSafelistEntry, Tt as DEFAULT_SETTINGS, Ut as createDiscoverySlot, Vn as shouldAutoCompact, W as useMcpToolToggleMap, Wt as DiscoveryProvider, Xn as discoverAgentsMd, Y as createFileMcpCredentialStore, Yt as resolveConfig, _ as useSafeModeQueue, _n as ensureKeybindingsFile, _t as hintsLength, a as useSurfaces, ar as accentColor, at as InteractionsProvider, b as getSafelist, bn as keybindingsPath, bt as generateSessionTitle, c as useStreamBuffer, cn as sumRunCosts, ct as createInteractionTools, d as discoverProjectSkills, dn as toolResultText, dr as TODO_STATUS_GLYPHS, dt as pendingInteractionsFromTurns, en as eventsFromTurns, et as useMcpAuthState, fn as updateToolEventOutcomes, g as useSafeModeActions, gn as KEYBINDING_KEY_COL_WIDTH, gt as clipHintsToWidth, h as SafeModeProvider, ht as EMPTY_HINTS, i as useSelectStyle, in as marginTopFor, j as supportsOAuth, jn as useUpdateCheck, jt as useSettings, k as oauthUsesManualCodePaste, kn as bootTick, kt as SettingsProvider, l as buildSkillsConfig, m as writeSessionExport, mn as KEYBINDING_DEFS, mt as useInteractionsQueue, n as ThemeProvider, nn as listSessionMeta, on as serverToolResultSummary, pt as useInteractionsActions, q as indexOfServerRow, qt as ConfigProvider, r as useColors, rt as splitMarkdownCodeBlocks, s as useTheme, sn as stripSpawnTokensLine, st as buildResumedToolResultsTurn, t as computeTurnAnchors, tn as lastContextSizeFromTurns, tt as getMcpAuthStatus, u as defaultSkillScanPaths, un as toolCallPreview, ut as makeRequestInteraction, vn as formatBindingForDisplay, vt as truncateTrailing, wt as useEnabledToggleSet, x as isOnSafelist, xn as matchesBinding, xr as useActiveTodos, xt as buildHints, y as addToSafelist, yn as groupBindings } from "./transcript-anchors-CS46ul6X.js";
|
|
2
|
+
import { $ as restoreModelOptions, F as resolvePersistDir, H as effectiveContextWindow, I as resolveTasksDir, J as modelSupportsReasoning, M as cleanupPersistedSession, P as resolveMcpWarningsDir, Q as piIdOf, R as OUTPUT_RESERVE_TOKENS, U as enabledModelOptions, W as getContextWindow, d as createAgent, q as modelOptionsFor } from "./tools-ZHKOh44k.js";
|
|
3
3
|
import { a as formatTaskStatus, c as shortId, i as formatDuration, n as compactPath, o as formatTaskSummary, r as fmtTokens, s as previewLine, t as ageString } from "./format-BNOXpl-1.js";
|
|
4
4
|
import { l as errorMessage } from "./errors-DkR6GPJw.js";
|
|
5
|
-
import { j as replaceDynamicSection } from "./messages-
|
|
5
|
+
import { j as replaceDynamicSection } from "./messages-RPKrEPvH.js";
|
|
6
6
|
import { n as sniffImageMediaType } from "./image-sniff-B7uFSNO1.js";
|
|
7
|
-
import { r as createProcessContext } from "./contexts-
|
|
8
|
-
import { c as McpOAuthProvider, n as connectMcpServers } from "./mcp-
|
|
7
|
+
import { r as createProcessContext } from "./contexts-DglWSzmR.js";
|
|
8
|
+
import { c as McpOAuthProvider, n as connectMcpServers } from "./mcp-Cy9mgCcr.js";
|
|
9
9
|
import { r as formatTokenUsage, t as effectiveInputFromTurn } from "./stats-DAKBEKjc.js";
|
|
10
|
-
import {
|
|
11
|
-
import { i as basic_default } from "./presets-
|
|
12
|
-
import { n as loadSession, t as createSession } from "./session-
|
|
10
|
+
import { a as selectFilesFromSession, b as summaryToTurn, r as buildPostCompactAttachments, s as compactConversation, t as loginMcpServer } from "./login-BHhOdTp9.js";
|
|
11
|
+
import { i as basic_default } from "./presets-D5ibZTml.js";
|
|
12
|
+
import { n as demoteStaleRunningStatus, r as loadSession, t as createSession } from "./session-Do_TQV7c.js";
|
|
13
|
+
import { n as createLogger, t as consoleSink } from "./logger-Ktm-lj1s.js";
|
|
13
14
|
import { createDockerContext } from "./contexts/docker.js";
|
|
14
15
|
import { createTuiStore } from "./session/sqlite.js";
|
|
15
16
|
import { B as summarizeOutcomes, C as buildContextualDiff, D as extractEditPayload, F as mergeApprovalAndBodyOutcomes, G as createFilesCompletionProvider, H as createSkillsCompletionProvider, I as parseEditOutcomesFromResult, L as resolveApprovalForPayload, N as buildEditOutcomesAnnotation, O as filetypeFromPath, Q as buildLinearRamp, R as rewriteMultiEditHeader, U as uniqueSkillNamesFromReferences, Z as blendHsl, _ as isEditErrorResult, a as TOOL_DISPLAY, b as selectableTurnIds, c as finalizeStreamingMarkdown, d as turnContextSize, f as splitPromptSegments, g as EDIT_TOOL_NAMES, h as indexOfEntry, i as turnAsText, j as summarizeEditPayload, k as previewEditPayload, l as finalizeStreamingMarkdownForOwner, m as filterModelCatalog, n as deleteTurnSafely, o as displayNameFor, p as buildModelCatalog, r as truncateTurnsAt, s as formatToolCall, v as isTurnHighlighted, w as buildUnifiedDiff, x as turnSelectionOwnership, y as isVisible, z as stripEditOutcomesAnnotation } from "./turn-operations-DLWN2J7f.js";
|
|
@@ -1854,6 +1855,7 @@ var CodeBlockWrapper = class extends BoxRenderable {
|
|
|
1854
1855
|
body.marginBottom = 0;
|
|
1855
1856
|
body.drawUnstyledText = true;
|
|
1856
1857
|
body.bg = surfaces.modal;
|
|
1858
|
+
body.wrapMode = "char";
|
|
1857
1859
|
const renderAfter = body.renderAfter;
|
|
1858
1860
|
body.renderAfter = (buffer, deltaTime) => {
|
|
1859
1861
|
renderAfter?.call(body, buffer, deltaTime);
|
|
@@ -2560,6 +2562,7 @@ function ToolCallBlock({ event, display, dim }) {
|
|
|
2560
2562
|
content: pretty,
|
|
2561
2563
|
filetype: "json",
|
|
2562
2564
|
syntaxStyle: mdStyle,
|
|
2565
|
+
wrapMode: "char",
|
|
2563
2566
|
...dim ? { fg: COLOR.dim } : {}
|
|
2564
2567
|
}) : /* @__PURE__ */ jsx("text", {
|
|
2565
2568
|
fg: COLOR.mute,
|
|
@@ -3728,6 +3731,14 @@ const BASE_LEVELS$1 = [
|
|
|
3728
3731
|
{
|
|
3729
3732
|
id: "high",
|
|
3730
3733
|
description: "deep reasoning — slowest, longest"
|
|
3734
|
+
},
|
|
3735
|
+
{
|
|
3736
|
+
id: "xhigh",
|
|
3737
|
+
description: "very deep reasoning (Anthropic)"
|
|
3738
|
+
},
|
|
3739
|
+
{
|
|
3740
|
+
id: "max",
|
|
3741
|
+
description: "maximum reasoning effort (Anthropic)"
|
|
3731
3742
|
}
|
|
3732
3743
|
];
|
|
3733
3744
|
const ADAPTIVE_LEVEL$1 = {
|
|
@@ -11196,6 +11207,26 @@ function AppShell() {
|
|
|
11196
11207
|
* otherwise.
|
|
11197
11208
|
*/
|
|
11198
11209
|
const runningRef = useRef(false);
|
|
11210
|
+
/**
|
|
11211
|
+
* Auto-wake trigger for background-task notifications. When a
|
|
11212
|
+
* backgrounded shell task exits while the agent is IDLE, nothing would
|
|
11213
|
+
* otherwise deliver the queued `<task-notification>` until the user
|
|
11214
|
+
* happens to type again — the model ended its turn expecting to "wake
|
|
11215
|
+
* up" on completion (that's what the shell tool's description promises)
|
|
11216
|
+
* and would simply never learn the task finished. This ref points at
|
|
11217
|
+
* {@link wakeForTaskNotifications}; it's a ref so the `background:exit`
|
|
11218
|
+
* hook (registered once in `buildAgent`) and the run-end re-checks can
|
|
11219
|
+
* call the freshest callback without re-binding.
|
|
11220
|
+
*/
|
|
11221
|
+
const wakeForTaskNotificationsRef = useRef(() => {});
|
|
11222
|
+
/**
|
|
11223
|
+
* Latched by esc/abort (see {@link cancelRunOnDenial}); cleared on the
|
|
11224
|
+
* next user submit. While set, background-task exits do NOT auto-wake
|
|
11225
|
+
* the agent — the user said "stop everything", and a run silently
|
|
11226
|
+
* restarting itself right after would override that intent. The
|
|
11227
|
+
* notification stays queued and drains on their next prompt instead.
|
|
11228
|
+
*/
|
|
11229
|
+
const suppressWakeRef = useRef(false);
|
|
11199
11230
|
const lastCtrlCRef = useRef(0);
|
|
11200
11231
|
const [showQuitConfirm, setShowQuitConfirm] = useState(false);
|
|
11201
11232
|
const showQuitConfirmRef = useRef(false);
|
|
@@ -11373,6 +11404,13 @@ function AppShell() {
|
|
|
11373
11404
|
* via `useEffect` once `triggerAutoCompactIfNeeded` is defined below.
|
|
11374
11405
|
*/
|
|
11375
11406
|
const triggerAutoCompactRef = useRef(() => {});
|
|
11407
|
+
/**
|
|
11408
|
+
* Forward ref to {@link drainFollowUps} — same hoisting rationale as
|
|
11409
|
+
* `triggerAutoCompactRef`: `continueResumedInteractions` is declared
|
|
11410
|
+
* before the drain loop but needs to run it after a resumed run
|
|
11411
|
+
* completes (queued prompts + background-task wake runs).
|
|
11412
|
+
*/
|
|
11413
|
+
const drainFollowUpsRef = useRef(async () => {});
|
|
11376
11414
|
const stream = useStreamBuffer(setEvents, { getSmooth: useCallback(() => smoothStreamingRef.current, []) });
|
|
11377
11415
|
streamRef.current = stream;
|
|
11378
11416
|
const makePicked = useCallback((provider, modelId) => {
|
|
@@ -11395,6 +11433,7 @@ function AppShell() {
|
|
|
11395
11433
|
messageQueueRef.current = [];
|
|
11396
11434
|
setMessageQueue([]);
|
|
11397
11435
|
setQueueSelectionIndex(null);
|
|
11436
|
+
suppressWakeRef.current = true;
|
|
11398
11437
|
agentRef.current?.abort();
|
|
11399
11438
|
}, [denyAll, interactions]);
|
|
11400
11439
|
const buildAgent = useCallback((session, key) => {
|
|
@@ -11717,6 +11756,7 @@ function AppShell() {
|
|
|
11717
11756
|
...ctx.childId ? { childId: ctx.childId } : {},
|
|
11718
11757
|
...typeof ctx.depth === "number" ? { depth: ctx.depth } : {}
|
|
11719
11758
|
});
|
|
11759
|
+
wakeForTaskNotificationsRef.current();
|
|
11720
11760
|
};
|
|
11721
11761
|
agent.hooks.hook("background:start", (ctx) => registerBackgroundTask(ctx));
|
|
11722
11762
|
agent.hooks.hook("background:exit", (ctx) => dropBackgroundTaskAndEmitBanner(ctx));
|
|
@@ -11982,6 +12022,7 @@ function AppShell() {
|
|
|
11982
12022
|
}
|
|
11983
12023
|
await session.appendTurns([turn]);
|
|
11984
12024
|
setEvents(eventsFromTurns(session.turns, session.runs));
|
|
12025
|
+
runningRef.current = true;
|
|
11985
12026
|
setBusy(true);
|
|
11986
12027
|
try {
|
|
11987
12028
|
const runModelOptions = enabledModelOptions(currentPicked.modelOptions);
|
|
@@ -12007,7 +12048,10 @@ function AppShell() {
|
|
|
12007
12048
|
});
|
|
12008
12049
|
} finally {
|
|
12009
12050
|
stream.flushAndUpdate(finalizeStreamingMarkdown);
|
|
12051
|
+
await drainFollowUpsRef.current().catch((err) => debugLog("resume-interaction: follow-up drain failed", err));
|
|
12010
12052
|
setBusy(false);
|
|
12053
|
+
runningRef.current = false;
|
|
12054
|
+
wakeForTaskNotificationsRef.current();
|
|
12011
12055
|
}
|
|
12012
12056
|
}, [stream]);
|
|
12013
12057
|
const activateSession = useCallback(async (id, key) => {
|
|
@@ -12048,7 +12092,7 @@ function AppShell() {
|
|
|
12048
12092
|
request,
|
|
12049
12093
|
resolve: (response) => {
|
|
12050
12094
|
collected.set(request.id, response);
|
|
12051
|
-
if (collected.size >= pending.length) continueResumedInteractions(pending, collected);
|
|
12095
|
+
if (collected.size >= pending.length) continueResumedInteractions(pending, collected).catch((err) => debugLog("resume-interaction: continue failed", err));
|
|
12052
12096
|
},
|
|
12053
12097
|
cancel: () => {}
|
|
12054
12098
|
};
|
|
@@ -12071,6 +12115,7 @@ function AppShell() {
|
|
|
12071
12115
|
(async () => {
|
|
12072
12116
|
if (resumeLastSessionOnLaunch && lastResumedSessionId) {
|
|
12073
12117
|
const data = await store.load(lastResumedSessionId);
|
|
12118
|
+
if (data) demoteStaleRunningStatus(data);
|
|
12074
12119
|
if (cancelled) return;
|
|
12075
12120
|
const sessionMatchesProject = settings.showAllProjects || data?.projectRoot != null && data.projectRoot === projectDir;
|
|
12076
12121
|
if (data && sessionMatchesProject) {
|
|
@@ -12385,7 +12430,7 @@ function AppShell() {
|
|
|
12385
12430
|
* busy-state lifecycle so the title spinner stays mounted continuously
|
|
12386
12431
|
* across back-to-back queued messages.
|
|
12387
12432
|
*/
|
|
12388
|
-
const runSingleMessage = useCallback(async (prompt, references, attachments) => {
|
|
12433
|
+
const runSingleMessage = useCallback(async (prompt, references, attachments, opts) => {
|
|
12389
12434
|
const agent = agentRef.current;
|
|
12390
12435
|
const session = sessionRef.current;
|
|
12391
12436
|
if (!agent || !session || !picked) return;
|
|
@@ -12393,22 +12438,24 @@ function AppShell() {
|
|
|
12393
12438
|
kind: "separator",
|
|
12394
12439
|
text: ""
|
|
12395
12440
|
});
|
|
12396
|
-
|
|
12397
|
-
start
|
|
12398
|
-
|
|
12399
|
-
|
|
12400
|
-
|
|
12401
|
-
|
|
12402
|
-
|
|
12403
|
-
|
|
12404
|
-
|
|
12405
|
-
|
|
12406
|
-
|
|
12407
|
-
|
|
12408
|
-
|
|
12409
|
-
|
|
12410
|
-
|
|
12411
|
-
|
|
12441
|
+
if (!opts?.wake) {
|
|
12442
|
+
const refSpans = references.filter((r) => r.start >= 0 && r.end > r.start).map((r) => ({
|
|
12443
|
+
start: r.start,
|
|
12444
|
+
end: r.end,
|
|
12445
|
+
providerId: r.providerId
|
|
12446
|
+
}));
|
|
12447
|
+
const attachmentMeta = attachments.map((a) => ({
|
|
12448
|
+
name: a.name,
|
|
12449
|
+
mediaType: a.mediaType,
|
|
12450
|
+
size: a.content.length
|
|
12451
|
+
}));
|
|
12452
|
+
stream.appendImmediate({
|
|
12453
|
+
kind: "user-prompt",
|
|
12454
|
+
text: prompt,
|
|
12455
|
+
...refSpans.length > 0 ? { refs: refSpans } : {},
|
|
12456
|
+
...attachmentMeta.length > 0 ? { attachments: attachmentMeta } : {}
|
|
12457
|
+
});
|
|
12458
|
+
}
|
|
12412
12459
|
if (autoCompactInFlightRef.current) await autoCompactInFlightRef.current.catch(() => {});
|
|
12413
12460
|
const newRefs = uniqueSkillNamesFromReferences(references);
|
|
12414
12461
|
const skillNames = Array.from(new Set([...activeSkillNamesRef.current, ...newRefs]));
|
|
@@ -12469,11 +12516,51 @@ function AppShell() {
|
|
|
12469
12516
|
stream.flushAndUpdate(finalizeStreamingMarkdown);
|
|
12470
12517
|
}
|
|
12471
12518
|
}, [picked, stream]);
|
|
12519
|
+
/**
|
|
12520
|
+
* Post-run drain loop, shared by `onSubmitPrompt` and the auto-wake
|
|
12521
|
+
* path. Runs follow-up messages until nothing is left to do:
|
|
12522
|
+
*
|
|
12523
|
+
* 1. prompts the user queued while a run was in flight (the queue
|
|
12524
|
+
* box), in FIFO order — with the cursor bookkeeping that keeps
|
|
12525
|
+
* their selection glued to the same message as the list shrinks;
|
|
12526
|
+
* 2. drain-only "wake" runs when background-task exits queued up
|
|
12527
|
+
* (`agent.hasPendingTaskNotifications`) — this is what delivers
|
|
12528
|
+
* the `<task-notification>` for a task that finished MID-RUN,
|
|
12529
|
+
* where the idle-path trigger in `dropBackgroundTaskAndEmitBanner`
|
|
12530
|
+
* bails because `runningRef` was still held.
|
|
12531
|
+
*
|
|
12532
|
+
* Wake runs are skipped while `suppressWakeRef` is latched (user hit
|
|
12533
|
+
* esc — don't restart on their behalf); queued exits then drain on
|
|
12534
|
+
* the next user prompt via the framework's run-start drain instead.
|
|
12535
|
+
*/
|
|
12536
|
+
const drainFollowUps = useCallback(async () => {
|
|
12537
|
+
while (true) {
|
|
12538
|
+
if (messageQueueRef.current.length > 0) {
|
|
12539
|
+
const next = messageQueueRef.current[0];
|
|
12540
|
+
messageQueueRef.current = messageQueueRef.current.slice(1);
|
|
12541
|
+
setMessageQueue(messageQueueRef.current.slice());
|
|
12542
|
+
setQueueSelectionIndex((prev) => {
|
|
12543
|
+
if (prev == null) return prev;
|
|
12544
|
+
if (messageQueueRef.current.length === 0) return null;
|
|
12545
|
+
if (prev <= 0) return null;
|
|
12546
|
+
return prev - 1;
|
|
12547
|
+
});
|
|
12548
|
+
await runSingleMessage(next.prompt, next.references, next.attachments);
|
|
12549
|
+
continue;
|
|
12550
|
+
}
|
|
12551
|
+
if (!suppressWakeRef.current && agentRef.current?.hasPendingTaskNotifications) {
|
|
12552
|
+
await runSingleMessage("", [], [], { wake: true });
|
|
12553
|
+
continue;
|
|
12554
|
+
}
|
|
12555
|
+
break;
|
|
12556
|
+
}
|
|
12557
|
+
}, [runSingleMessage]);
|
|
12472
12558
|
const onSubmitPrompt = useCallback((prompt, references, attachments) => {
|
|
12473
12559
|
if (!prompt.trim() && attachments.length === 0) return;
|
|
12474
12560
|
const agent = agentRef.current;
|
|
12475
12561
|
const session = sessionRef.current;
|
|
12476
12562
|
if (!agent || !session || !picked) return;
|
|
12563
|
+
suppressWakeRef.current = false;
|
|
12477
12564
|
if (runningRef.current) {
|
|
12478
12565
|
messageQueueRef.current = [...messageQueueRef.current, {
|
|
12479
12566
|
prompt,
|
|
@@ -12488,24 +12575,53 @@ function AppShell() {
|
|
|
12488
12575
|
setBusy(true);
|
|
12489
12576
|
try {
|
|
12490
12577
|
await runSingleMessage(prompt, references, attachments);
|
|
12491
|
-
|
|
12492
|
-
const next = messageQueueRef.current[0];
|
|
12493
|
-
messageQueueRef.current = messageQueueRef.current.slice(1);
|
|
12494
|
-
setMessageQueue(messageQueueRef.current.slice());
|
|
12495
|
-
setQueueSelectionIndex((prev) => {
|
|
12496
|
-
if (prev == null) return prev;
|
|
12497
|
-
if (messageQueueRef.current.length === 0) return null;
|
|
12498
|
-
if (prev <= 0) return null;
|
|
12499
|
-
return prev - 1;
|
|
12500
|
-
});
|
|
12501
|
-
await runSingleMessage(next.prompt, next.references, next.attachments);
|
|
12502
|
-
}
|
|
12578
|
+
await drainFollowUps();
|
|
12503
12579
|
} finally {
|
|
12504
12580
|
setBusy(false);
|
|
12505
12581
|
runningRef.current = false;
|
|
12582
|
+
wakeForTaskNotificationsRef.current();
|
|
12506
12583
|
}
|
|
12507
12584
|
})();
|
|
12508
|
-
}, [
|
|
12585
|
+
}, [
|
|
12586
|
+
picked,
|
|
12587
|
+
runSingleMessage,
|
|
12588
|
+
drainFollowUps
|
|
12589
|
+
]);
|
|
12590
|
+
/**
|
|
12591
|
+
* Idle-path auto-wake: deliver queued `<task-notification>` blocks by
|
|
12592
|
+
* starting a drain-only run (`prompt: ''`) when a background task
|
|
12593
|
+
* exits while NO run is in flight. Without this, the notification
|
|
12594
|
+
* would sit in the agent's queue until the user happened to type
|
|
12595
|
+
* again — the model, which ended its turn on the promise that "the
|
|
12596
|
+
* notification IS the wake-up", would never learn the task finished.
|
|
12597
|
+
*
|
|
12598
|
+
* Invoked through {@link wakeForTaskNotificationsRef} from the
|
|
12599
|
+
* `background:exit` banner hook and from the run-end gate releases.
|
|
12600
|
+
* All entry conditions are re-checked here so callers can fire it
|
|
12601
|
+
* unconditionally.
|
|
12602
|
+
*/
|
|
12603
|
+
const wakeForTaskNotifications = useCallback(() => {
|
|
12604
|
+
const agent = agentRef.current;
|
|
12605
|
+
if (!agent || !sessionRef.current || !picked) return;
|
|
12606
|
+
if (runningRef.current) return;
|
|
12607
|
+
if (suppressWakeRef.current) return;
|
|
12608
|
+
if (!agent.hasPendingTaskNotifications) return;
|
|
12609
|
+
runningRef.current = true;
|
|
12610
|
+
(async () => {
|
|
12611
|
+
setBusy(true);
|
|
12612
|
+
try {
|
|
12613
|
+
await drainFollowUps();
|
|
12614
|
+
} finally {
|
|
12615
|
+
setBusy(false);
|
|
12616
|
+
runningRef.current = false;
|
|
12617
|
+
wakeForTaskNotificationsRef.current();
|
|
12618
|
+
}
|
|
12619
|
+
})();
|
|
12620
|
+
}, [picked, drainFollowUps]);
|
|
12621
|
+
useEffect(() => {
|
|
12622
|
+
wakeForTaskNotificationsRef.current = wakeForTaskNotifications;
|
|
12623
|
+
drainFollowUpsRef.current = drainFollowUps;
|
|
12624
|
+
}, [wakeForTaskNotifications, drainFollowUps]);
|
|
12509
12625
|
const launchStartedRef = useRef(false);
|
|
12510
12626
|
useEffect(() => {
|
|
12511
12627
|
if (!launch || !resumeProvider || launchStartedRef.current) return;
|
|
@@ -12574,7 +12690,7 @@ function AppShell() {
|
|
|
12574
12690
|
hooks: agentRef.current?.hooks,
|
|
12575
12691
|
onAuthorizationUrl: (url) => tryOpenBrowser(url.toString())
|
|
12576
12692
|
});
|
|
12577
|
-
rebuildActiveAgent();
|
|
12693
|
+
rebuildActiveAgent().catch((err) => debugLog("mcp-login: rebuildActiveAgent failed", err));
|
|
12578
12694
|
} catch (err) {
|
|
12579
12695
|
if (!agentRef.current) dispatchAuth({
|
|
12580
12696
|
type: "auth-error",
|
|
@@ -12599,7 +12715,7 @@ function AppShell() {
|
|
|
12599
12715
|
type: "logout",
|
|
12600
12716
|
name
|
|
12601
12717
|
});
|
|
12602
|
-
rebuildActiveAgent();
|
|
12718
|
+
rebuildActiveAgent().catch((err) => debugLog("mcp-logout: rebuildActiveAgent failed", err));
|
|
12603
12719
|
}, [
|
|
12604
12720
|
dispatchAuth,
|
|
12605
12721
|
mcpCredentialStore,
|
|
@@ -12813,6 +12929,7 @@ function AppShell() {
|
|
|
12813
12929
|
} else {
|
|
12814
12930
|
loadedData = await store.load(sessionId);
|
|
12815
12931
|
if (!loadedData) throw new Error("Session not found.");
|
|
12932
|
+
demoteStaleRunningStatus(loadedData);
|
|
12816
12933
|
turns = loadedData.turns;
|
|
12817
12934
|
metadataRecord = loadedData.metadata;
|
|
12818
12935
|
}
|
|
@@ -13012,6 +13129,7 @@ function AppShell() {
|
|
|
13012
13129
|
debugLog("openSessionDetails: session not found", sessionId);
|
|
13013
13130
|
return;
|
|
13014
13131
|
}
|
|
13132
|
+
demoteStaleRunningStatus(data);
|
|
13015
13133
|
modal.open(/* @__PURE__ */ jsx(SessionDetailsModal, {
|
|
13016
13134
|
session: data,
|
|
13017
13135
|
title: sessionId === currentSession?.id ? currentSession.title : void 0,
|
|
@@ -13740,6 +13858,14 @@ const BASE_LEVELS = [
|
|
|
13740
13858
|
{
|
|
13741
13859
|
id: "high",
|
|
13742
13860
|
description: "deep reasoning — slowest, longest"
|
|
13861
|
+
},
|
|
13862
|
+
{
|
|
13863
|
+
id: "xhigh",
|
|
13864
|
+
description: "very deep reasoning (Anthropic)"
|
|
13865
|
+
},
|
|
13866
|
+
{
|
|
13867
|
+
id: "max",
|
|
13868
|
+
description: "maximum reasoning effort (Anthropic)"
|
|
13743
13869
|
}
|
|
13744
13870
|
];
|
|
13745
13871
|
const ADAPTIVE_LEVEL = {
|