zidane 7.0.29 → 7.0.31

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.
Files changed (89) hide show
  1. package/dist/acp-cli.js +3 -3
  2. package/dist/{acp-DcJRNtIr.js → acp-m3TLCY_C.js} +2 -2
  3. package/dist/{acp-DcJRNtIr.js.map → acp-m3TLCY_C.js.map} +1 -1
  4. package/dist/acp.d.ts +1 -1
  5. package/dist/acp.js +1 -1
  6. package/dist/{agent-DSej5JPY.js → agent-9gf8ZlBR.js} +73 -16
  7. package/dist/agent-9gf8ZlBR.js.map +1 -0
  8. package/dist/agent.d.ts +1 -1
  9. package/dist/agent.js +1 -1
  10. package/dist/{approvals-BOr8_M0D.js → approvals-DaCEPCTV.js} +367 -10
  11. package/dist/approvals-DaCEPCTV.js.map +1 -0
  12. package/dist/{auth-DaBtlC8B.js → auth-CJogE9q7.js} +2 -2
  13. package/dist/{auth-DaBtlC8B.js.map → auth-CJogE9q7.js.map} +1 -1
  14. package/dist/chat/pure.d.ts +3 -3
  15. package/dist/chat.d.ts +6 -6
  16. package/dist/chat.js +5 -5
  17. package/dist/{context-transport-BqYwzJYE.js → context-transport-T_6AYIvy.js} +2 -2
  18. package/dist/{context-transport-BqYwzJYE.js.map → context-transport-T_6AYIvy.js.map} +1 -1
  19. package/dist/contexts/daytona.d.ts +1 -1
  20. package/dist/contexts/e2b.d.ts +1 -1
  21. package/dist/daemon-cli.js +1 -1
  22. package/dist/eval.d.ts +1 -1
  23. package/dist/extensions.d.ts +2 -2
  24. package/dist/extensions.js +2 -2
  25. package/dist/headless.d.ts +1 -1
  26. package/dist/headless.js +1 -1
  27. package/dist/{index-Co4Fddtj.d.ts → index-JkEO3MBV.d.ts} +191 -6
  28. package/dist/index-JkEO3MBV.d.ts.map +1 -0
  29. package/dist/{index-C0y2tSgk.d.ts → index-hd4zLhp8.d.ts} +52 -2
  30. package/dist/index-hd4zLhp8.d.ts.map +1 -0
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.js +3 -3
  33. package/dist/{ipc-Dmq3B7H6.js → ipc-BtN5SIc0.js} +2 -2
  34. package/dist/{ipc-Dmq3B7H6.js.map → ipc-BtN5SIc0.js.map} +1 -1
  35. package/dist/ipc.d.ts +17 -12
  36. package/dist/ipc.d.ts.map +1 -1
  37. package/dist/ipc.js +3 -3
  38. package/dist/{mcp-BIWa57eY.js → mcp-CgNd-f3F.js} +3 -3
  39. package/dist/{mcp-BIWa57eY.js.map → mcp-CgNd-f3F.js.map} +1 -1
  40. package/dist/mcp.d.ts +1 -1
  41. package/dist/mcp.js +1 -1
  42. package/dist/output/stream-json.d.ts +1 -1
  43. package/dist/output/terminal.d.ts +1 -1
  44. package/dist/plugins.d.ts +1 -1
  45. package/dist/presets.d.ts +1 -1
  46. package/dist/presets.js +1 -1
  47. package/dist/providers/anthropic.d.ts +1 -1
  48. package/dist/providers/arcee.d.ts +1 -1
  49. package/dist/providers/baseten.d.ts +1 -1
  50. package/dist/providers/cerebras.d.ts +1 -1
  51. package/dist/providers/local.d.ts +1 -1
  52. package/dist/providers/openai-compat.d.ts +1 -1
  53. package/dist/providers/openai.d.ts +1 -1
  54. package/dist/providers/openrouter.d.ts +1 -1
  55. package/dist/providers/xai.d.ts +1 -1
  56. package/dist/providers.d.ts +1 -1
  57. package/dist/restate.d.ts +1 -1
  58. package/dist/restate.js +1 -1
  59. package/dist/{server-DM3yjH5O.js → server-ktOMu5gk.js} +18 -23
  60. package/dist/server-ktOMu5gk.js.map +1 -0
  61. package/dist/session/sqlite.d.ts +1 -1
  62. package/dist/session.d.ts +1 -1
  63. package/dist/skills.d.ts +1 -1
  64. package/dist/{src-DzzhE2YO.js → src-CjkY6fBj.js} +2 -2
  65. package/dist/{src-DzzhE2YO.js.map → src-CjkY6fBj.js.map} +1 -1
  66. package/dist/{stdio-loader-CI4sPFve.js → stdio-loader-Bbx19dMZ.js} +2 -2
  67. package/dist/{stdio-loader-CI4sPFve.js.map → stdio-loader-Bbx19dMZ.js.map} +1 -1
  68. package/dist/{tool-formatters-bbgUM3zI.d.ts → tool-formatters-C4QIFCNa.d.ts} +2 -2
  69. package/dist/{tool-formatters-bbgUM3zI.d.ts.map → tool-formatters-C4QIFCNa.d.ts.map} +1 -1
  70. package/dist/tools/fetch-url.d.ts +1 -1
  71. package/dist/tools/web-search.d.ts +1 -1
  72. package/dist/tools.d.ts +1 -1
  73. package/dist/tools.js +1 -1
  74. package/dist/{transcript-anchors-BHyrChoO.d.ts → transcript-anchors-Bbn1HX5D.d.ts} +8 -2
  75. package/dist/{transcript-anchors-BHyrChoO.d.ts.map → transcript-anchors-Bbn1HX5D.d.ts.map} +1 -1
  76. package/dist/tui.d.ts +3 -3
  77. package/dist/tui.d.ts.map +1 -1
  78. package/dist/tui.js +196 -87
  79. package/dist/tui.js.map +1 -1
  80. package/dist/{turn-operations-ZP5-2OWi.d.ts → turn-operations-BhHCpCkP.d.ts} +3 -3
  81. package/dist/{turn-operations-ZP5-2OWi.d.ts.map → turn-operations-BhHCpCkP.d.ts.map} +1 -1
  82. package/dist/types.d.ts +2 -2
  83. package/docs/TUI.md +5 -3
  84. package/package.json +1 -1
  85. package/dist/agent-DSej5JPY.js.map +0 -1
  86. package/dist/approvals-BOr8_M0D.js.map +0 -1
  87. package/dist/index-C0y2tSgk.d.ts.map +0 -1
  88. package/dist/index-Co4Fddtj.d.ts.map +0 -1
  89. package/dist/server-DM3yjH5O.js.map +0 -1
package/dist/agent.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { $i as McpToolWrap, $r as RunSummaryTokens, A_ as hydrateReadStateFromSessionAsync, D_ as getReadState, E_ as ReadStateMap, Gr as RunSummary, Ji as AgentHookMap, Jr as RunSummaryByModel, Kr as RunSummaryBlock, M_ as resolveReadStateMap, Qi as McpToolMeta, Qr as RunSummaryRepeatGuard, T_ as ReadStateEntry, Xi as AgentOptions, Xr as RunSummaryCollectorOptions, Yi as AgentHooks, Yr as RunSummaryCollector, Zi as McpConnector, Zr as RunSummaryError, am as CacheBreakLoggerOptions, cm as CacheDimensionSnapshot, dm as fnv1a32, ea as createAgent, ei as RunSummaryValidation, fm as hashMessages, im as CacheBreakInfo, j_ as readStateKey, k_ as hydrateReadStateFromSession, lm as CacheDriftInfo, mm as snapshotCacheDimensions, om as CacheDimensionDiff, pm as installCacheBreakLogger, qi as Agent, qr as RunSummaryBudget, sm as CacheDimensionName, ti as createRunSummaryCollector, um as diffCacheDimensions, w_ as HydrateReadStateOptions } from "./index-C0y2tSgk.js";
1
+ import { $i as McpToolMeta, $r as RunSummaryTokens, D_ as ReadStateEntry, E_ as HydrateReadStateOptions, Gr as RunSummary, Ji as AgentHookMap, Jr as RunSummaryByModel, Kr as RunSummaryBlock, M_ as hydrateReadStateFromSessionAsync, N_ as readStateKey, O_ as ReadStateMap, P_ as resolveReadStateMap, Qi as McpConnector, Qr as RunSummaryRepeatGuard, Xi as AgentOptions, Xr as RunSummaryCollectorOptions, Yi as AgentHooks, Yr as RunSummaryCollector, Zr as RunSummaryError, cm as CacheDimensionDiff, dm as CacheDriftInfo, ea as McpToolWrap, ei as RunSummaryValidation, fm as diffCacheDimensions, gm as snapshotCacheDimensions, hm as installCacheBreakLogger, j_ as hydrateReadStateFromSession, k_ as getReadState, lm as CacheDimensionName, mm as hashMessages, om as CacheBreakInfo, pm as fnv1a32, qi as Agent, qr as RunSummaryBudget, sm as CacheBreakLoggerOptions, ta as createAgent, ti as createRunSummaryCollector, um as CacheDimensionSnapshot } from "./index-hd4zLhp8.js";
2
2
  export { type Agent, type AgentHookMap, type AgentHooks, type AgentOptions, type CacheBreakInfo, type CacheBreakLoggerOptions, type CacheDimensionDiff, type CacheDimensionName, type CacheDimensionSnapshot, type CacheDriftInfo, type HydrateReadStateOptions, type McpConnector, type McpToolMeta, type McpToolWrap, type ReadStateEntry, type ReadStateMap, type RunSummary, type RunSummaryBlock, type RunSummaryBudget, type RunSummaryByModel, type RunSummaryCollector, type RunSummaryCollectorOptions, type RunSummaryError, type RunSummaryRepeatGuard, type RunSummaryTokens, type RunSummaryValidation, createAgent, createRunSummaryCollector, diffCacheDimensions, fnv1a32, getReadState, hashMessages, hydrateReadStateFromSession, hydrateReadStateFromSessionAsync, installCacheBreakLogger, readStateKey, resolveReadStateMap, snapshotCacheDimensions };
package/dist/agent.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ar as hydrateReadStateFromSessionAsync, ir as hydrateReadStateFromSession, nr as getReadState, or as readStateKey, sr as resolveReadStateMap, t as createAgent } from "./agent-DSej5JPY.js";
1
+ import { ar as hydrateReadStateFromSession, cr as resolveReadStateMap, or as hydrateReadStateFromSessionAsync, rr as getReadState, sr as readStateKey, t as createAgent } from "./agent-9gf8ZlBR.js";
2
2
  import { a as snapshotCacheDimensions, i as installCacheBreakLogger, n as fnv1a32, r as hashMessages, t as diffCacheDimensions } from "./cache-telemetry-ehVdWsg2.js";
3
3
  import { t as createRunSummaryCollector } from "./run-summary-BU_NgwUT.js";
4
4
  export { createAgent, createRunSummaryCollector, diffCacheDimensions, fnv1a32, getReadState, hashMessages, hydrateReadStateFromSession, hydrateReadStateFromSessionAsync, installCacheBreakLogger, readStateKey, resolveReadStateMap, snapshotCacheDimensions };
@@ -1,7 +1,7 @@
1
1
  import { n as __require } from "./rolldown-runtime-BhDjJH2R.js";
2
2
  import { n as THINKING_LEVELS, u as toolResultToText } from "./types-CWgENVLY.js";
3
- import { A as selectFilesFromSession, Cn as createDebugLog, D as resolveTasksDir, Dt as isSpawnTool, Et as createSpawnTool, G as summaryToTurn, Gn as renderArtifactRow, Gt as glob, Ht as listFiles, It as readFile$1, Jt as artifacts_default, Kt as edit, M as compactConversation, Mt as shellKill, O as buildPostCompactAttachments, Pt as shell, Rn as artifactKindLabel, Rt as multiEdit, St as writeFile$1, T as resolvePersistDir, Wt as grep, Xn as effectiveContextWindow, Y as EMPTY_EXTENSION_REGISTRY, Yn as OUTPUT_RESERVE_TOKENS, b as migrateSessionArtifactDirs, f as applyCompactSummaryCutoff, ft as filterRegistryPlugins, ln as readKeybindingsRaw, lt as composeExtensionPreset, on as mergeKeybindings, st as buildExtensionPreset, t as createAgent, un as resolveExtensionKeybindings, vt as composePresets, w as resolveMcpWarningsDir, wt as waitTask, yt as definePreset } from "./agent-DSej5JPY.js";
4
- import { F as parseCommandInvocation, M as commandBlocksToContent, P as executeCommand, c as SKILL_EDIT_METADATA_KEY, g as readSkillEditMarker, j as commandBlockToEvent, l as ZIDANE_EXTENSION_SKILL_NAME, m as extensionDirForCwd, s as EXTENSION_EDIT_METADATA_KEY, u as ZIDANE_SKILL_EDIT_SKILL_NAME, v as withZidaneExtensionSkill, w as generateStructuredData, y as withZidaneSkillEditSkill } from "./src-DzzhE2YO.js";
3
+ import { A as selectFilesFromSession, Cn as createDebugLog, D as resolveTasksDir, Dt as isSpawnTool, Et as createSpawnTool, G as summaryToTurn, Gt as glob, Ht as listFiles, It as readFile$1, Jt as artifacts_default, Kn as renderArtifactRow, Kt as edit, M as compactConversation, Mt as shellKill, O as buildPostCompactAttachments, Pt as shell, Rn as artifactKindLabel, Rt as multiEdit, St as writeFile$1, T as resolvePersistDir, Wt as grep, Xn as OUTPUT_RESERVE_TOKENS, Y as EMPTY_EXTENSION_REGISTRY, Zn as effectiveContextWindow, b as migrateSessionArtifactDirs, f as applyCompactSummaryCutoff, ft as filterRegistryPlugins, ln as readKeybindingsRaw, lt as composeExtensionPreset, on as mergeKeybindings, st as buildExtensionPreset, t as createAgent, un as resolveExtensionKeybindings, vt as composePresets, w as resolveMcpWarningsDir, wt as waitTask, yt as definePreset } from "./agent-9gf8ZlBR.js";
4
+ import { F as parseCommandInvocation, M as commandBlocksToContent, P as executeCommand, c as SKILL_EDIT_METADATA_KEY, g as readSkillEditMarker, j as commandBlockToEvent, l as ZIDANE_EXTENSION_SKILL_NAME, m as extensionDirForCwd, s as EXTENSION_EDIT_METADATA_KEY, u as ZIDANE_SKILL_EDIT_SKILL_NAME, v as withZidaneExtensionSkill, w as generateStructuredData, y as withZidaneSkillEditSkill } from "./src-CjkY6fBj.js";
5
5
  import { a as formatDuration, c as previewLine, i as fmtTokens, l as shortId, s as formatTaskSummary, t as ageString } from "./format-BF745pLL.js";
6
6
  import { r as createProcessContext } from "./contexts-BSFQVclW.js";
7
7
  import { u as errorMessage$1 } from "./errors-DKiMrOKq.js";
@@ -9,7 +9,7 @@ import { L as projectUserPaths, R as findGitRoot$1, x as discoverSkills } from "
9
9
  import { t as writeFileAtomic } from "./atomic-write-B7zr1ddF.js";
10
10
  import { n as defaultPluginDataRoot, p as resolveStorageDirs, r as loadAgentPlugin } from "./plugins-B531Tz5b.js";
11
11
  import { r as createLogger, t as consoleSink } from "./logger--C1VQjwJ.js";
12
- import { h as McpOAuthProvider, l as normalizeMcpServers, n as connectMcpServers, s as nonOwningMcpView } from "./mcp-BIWa57eY.js";
12
+ import { h as McpOAuthProvider, l as normalizeMcpServers, n as connectMcpServers, s as nonOwningMcpView } from "./mcp-CgNd-f3F.js";
13
13
  import { appendDynamicSection, joinSystemPrompt, splitSystemPrompt } from "./prompt.js";
14
14
  import { o as loadSession, t as createSession } from "./session-CVy-2mAy.js";
15
15
  import { n as flattenTurns, r as formatTokenUsage } from "./stats-DAKBEKjc.js";
@@ -19,10 +19,10 @@ import { p as sanitizeProviderDiagnosticMetadata } from "./anthropic-B4UmPm4H.js
19
19
  import { r as fetchUrl } from "./fetch-url-ma-5_p0p.js";
20
20
  import { webSearch } from "./tools/web-search.js";
21
21
  import { A as chunkMarkdownForRender, At as MAIN_SESSION_TITLE, Bt as renderSessionEventXml, Ft as artifactsFromTurns, It as isMainSession, J as filterChainFallbacks, Lt as orchestratedBy, Nt as SESSION_ROLE_KEY, Pt as WORKER_REPORT_FRAGMENT, Qt as formatRunReceiptLine, Rt as parseSessionEventXml, St as promptTurnRefs, U as buildRunModel, Ut as sessionEventLabel, _n as mergeApprovalAndBodyOutcomes, bn as rewriteMultiEditHeader, dn as previewEditPayload, et as restoreChainFallbacks, hn as buildEditOutcomesAnnotation, jt as ORCHESTRATED_BY_KEY, kt as MAIN_PLAYBOOK_FRAGMENT, ln as extractEditPayload, m as ownerOf, nn as runReceiptFromRun, tn as hasRunReceipt, u as capTranscriptEvents, vn as parseEditOutcomesFromResult, wn as chatReferenceTokensFromText, xn as stripEditOutcomesAnnotation, yn as resolveApprovalForPayload, zt as renderProjectsBriefing } from "./turn-operations-BgqpLlOG.js";
22
- import { T as restoreModelOptions, b as modelSupportsReasoning, d as BUILTIN_PROVIDERS, f as anthropicDescriptor, g as getContextWindow, h as enabledModelOptions, i as readCredentials, m as credKeyOf, n as applyApiKeyEnv, r as credentialsPath, t as detectAuth, x as modelsForDescriptor } from "./auth-DaBtlC8B.js";
22
+ import { T as restoreModelOptions, b as modelSupportsReasoning, d as BUILTIN_PROVIDERS, f as anthropicDescriptor, g as getContextWindow, h as enabledModelOptions, i as readCredentials, m as credKeyOf, n as applyApiKeyEnv, r as credentialsPath, t as detectAuth, x as modelsForDescriptor } from "./auth-CJogE9q7.js";
23
23
  import { basename, delimiter, dirname, isAbsolute, join, posix, relative, resolve, sep } from "node:path";
24
24
  import { Buffer } from "node:buffer";
25
- import { chmodSync, closeSync, cpSync, createReadStream, createWriteStream, existsSync, mkdirSync, mkdtempSync, openSync, readFileSync, readSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
25
+ import { chmodSync, closeSync, cpSync, createReadStream, createWriteStream, existsSync, mkdirSync, mkdtempSync, openSync, readFileSync, readSync, readdirSync, realpathSync, renameSync, rmSync, statSync, watch, writeFileSync } from "node:fs";
26
26
  import { readFile, readdir, stat, writeFile } from "node:fs/promises";
27
27
  import { spawn } from "node:child_process";
28
28
  import { homedir, tmpdir } from "node:os";
@@ -30,6 +30,7 @@ import { createHash, randomUUID } from "node:crypto";
30
30
  import { Fzf } from "fzf";
31
31
  import { createGunzip } from "node:zlib";
32
32
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
33
+ import { Writable } from "node:stream";
33
34
  import { jsx } from "react/jsx-runtime";
34
35
  //#region src/chat/store.ts
35
36
  function ensureStateDir(path) {
@@ -3687,6 +3688,148 @@ function readPackageVersion(dir, packageName) {
3687
3688
  }
3688
3689
  }
3689
3690
  //#endregion
3691
+ //#region src/chat/auto-update-restart.ts
3692
+ const UPDATE_APPLIED_MARKER = "update-applied.json";
3693
+ function updateAppliedMarkerPath(cacheDir) {
3694
+ return join(cacheDir, UPDATE_APPLIED_MARKER);
3695
+ }
3696
+ /**
3697
+ * Record that an install just landed. Best-effort: a failure to write the
3698
+ * marker must never fail the upgrade that succeeded — the poll catches up.
3699
+ */
3700
+ function writeUpdateAppliedMarker(cacheDir, marker) {
3701
+ try {
3702
+ mkdirSync(cacheDir, { recursive: true });
3703
+ writeFileSync(updateAppliedMarkerPath(cacheDir), `${JSON.stringify(marker, null, 2)}\n`);
3704
+ return true;
3705
+ } catch {
3706
+ return false;
3707
+ }
3708
+ }
3709
+ function readUpdateAppliedMarker(cacheDir) {
3710
+ try {
3711
+ const raw = JSON.parse(readFileSync(updateAppliedMarkerPath(cacheDir), "utf8"));
3712
+ if (!raw || typeof raw !== "object") return null;
3713
+ const { at, packages } = raw;
3714
+ if (typeof at !== "number" || !Array.isArray(packages)) return null;
3715
+ return {
3716
+ at,
3717
+ packages: packages.filter((p) => p && typeof p.packageName === "string" && typeof p.version === "string")
3718
+ };
3719
+ } catch {
3720
+ return null;
3721
+ }
3722
+ }
3723
+ /**
3724
+ * Compute the state once — the pure heart of the watcher, exported so a host
3725
+ * without a lifecycle (a one-shot IPC handler) can answer "is a restart
3726
+ * pending?" without holding a watcher.
3727
+ */
3728
+ function probeInstalledVersion(spec, currentVersion, probe = findInstalledCompanion, now = Date.now) {
3729
+ const installed = currentVersion ? probe(spec)?.version ?? null : null;
3730
+ return {
3731
+ running: currentVersion,
3732
+ installed,
3733
+ restartRequired: installed !== null && compareSemver(installed, currentVersion) > 0,
3734
+ checkedAt: now()
3735
+ };
3736
+ }
3737
+ function watchInstalledVersion(options) {
3738
+ const probe = options.probe ?? findInstalledCompanion;
3739
+ const now = options.now ?? Date.now;
3740
+ const enabled = options.currentVersion.length > 0;
3741
+ let state = probeInstalledVersion(options.spec, options.currentVersion, probe, now);
3742
+ let closed = false;
3743
+ const deliver = (next) => {
3744
+ const changed = next.installed !== state.installed || next.restartRequired !== state.restartRequired;
3745
+ state = next;
3746
+ if (changed && !closed) options.onChange(next);
3747
+ };
3748
+ const check = () => {
3749
+ if (!enabled || closed) return state;
3750
+ deliver(probeInstalledVersion(options.spec, options.currentVersion, probe, now));
3751
+ return state;
3752
+ };
3753
+ let watcher = null;
3754
+ let debounce = null;
3755
+ let poll = null;
3756
+ if (enabled) {
3757
+ if (options.cacheDir) try {
3758
+ mkdirSync(options.cacheDir, { recursive: true });
3759
+ watcher = watch(options.cacheDir, (_event, filename) => {
3760
+ if (filename && filename.toString() !== "update-applied.json") return;
3761
+ if (debounce) clearTimeout(debounce);
3762
+ debounce = setTimeout(() => {
3763
+ debounce = null;
3764
+ check();
3765
+ }, options.debounceMs ?? 500);
3766
+ });
3767
+ watcher.on("error", () => {
3768
+ watcher?.close();
3769
+ watcher = null;
3770
+ });
3771
+ } catch {
3772
+ watcher = null;
3773
+ }
3774
+ const pollMs = options.pollMs ?? 5 * 6e4;
3775
+ if (pollMs > 0) {
3776
+ poll = setInterval(check, pollMs);
3777
+ if (typeof poll === "object" && "unref" in poll) poll.unref();
3778
+ }
3779
+ }
3780
+ return {
3781
+ check,
3782
+ current: () => state,
3783
+ close: () => {
3784
+ closed = true;
3785
+ watcher?.close();
3786
+ if (debounce) clearTimeout(debounce);
3787
+ if (poll) clearInterval(poll);
3788
+ }
3789
+ };
3790
+ }
3791
+ /** Quick existence check so hosts can decide whether to read the marker at all. */
3792
+ function hasUpdateAppliedMarker(cacheDir) {
3793
+ return existsSync(updateAppliedMarkerPath(cacheDir));
3794
+ }
3795
+ /**
3796
+ * `null` until the first probe (or when disabled / no spec), then the live
3797
+ * state. Flipping `enabled` off tears the watcher down and clears the state
3798
+ * so no stale "restart" chip lingers.
3799
+ */
3800
+ function useRestartRequired(options) {
3801
+ const [state, setState] = useState(null);
3802
+ const { spec, currentVersion, cacheDir, enabled, pollMs } = options;
3803
+ const packageName = spec?.packageName;
3804
+ const binName = spec?.binName;
3805
+ useEffect(() => {
3806
+ if (!enabled || !packageName || !currentVersion) {
3807
+ setState(null);
3808
+ return;
3809
+ }
3810
+ const watcher = watchInstalledVersion({
3811
+ spec: binName ? {
3812
+ packageName,
3813
+ binName
3814
+ } : { packageName },
3815
+ currentVersion,
3816
+ cacheDir,
3817
+ pollMs,
3818
+ onChange: setState
3819
+ });
3820
+ setState(watcher.current());
3821
+ return () => watcher.close();
3822
+ }, [
3823
+ enabled,
3824
+ packageName,
3825
+ binName,
3826
+ currentVersion,
3827
+ cacheDir,
3828
+ pollMs
3829
+ ]);
3830
+ return state;
3831
+ }
3832
+ //#endregion
3690
3833
  //#region src/chat/auto-update-cli.ts
3691
3834
  const UPGRADE_HELP = `Usage: zidane upgrade [options]
3692
3835
 
@@ -3780,11 +3923,26 @@ async function runUpdateCommand(options) {
3780
3923
  for (const e of entries.filter((e) => !e.outdated && e.status.source !== "error")) out.write(`${label(e.name)} ${statusText(e)}\n`);
3781
3924
  if (!selfPending && pendingCompanions.length === 0) return { exitCode: 0 };
3782
3925
  let exitCode = 0;
3783
- if (selfPending) exitCode = await upgradeSelf();
3926
+ const applied = [];
3927
+ if (selfPending) {
3928
+ exitCode = await upgradeSelf();
3929
+ if (exitCode === 0 && !flags.dryRun && status.latest) applied.push({
3930
+ packageName: self.name,
3931
+ version: status.latest
3932
+ });
3933
+ }
3784
3934
  for (const c of pendingCompanions) {
3785
3935
  const code = await upgradeCompanion(c);
3936
+ if (code === 0 && !flags.dryRun && c.status.latest) applied.push({
3937
+ packageName: c.name,
3938
+ version: c.status.latest
3939
+ });
3786
3940
  if (exitCode === 0) exitCode = code;
3787
3941
  }
3942
+ if (applied.length > 0 && options.cacheDir) (options.writeMarker ?? writeUpdateAppliedMarker)(options.cacheDir, {
3943
+ at: Date.now(),
3944
+ packages: applied
3945
+ });
3788
3946
  return { exitCode };
3789
3947
  /**
3790
3948
  * Refuse to spawn the PM while the release is not fetchable yet: npm treats
@@ -3887,7 +4045,7 @@ async function runUpdateCommand(options) {
3887
4045
  return 0;
3888
4046
  }
3889
4047
  err.write(`${name}: install finished but ${actual ?? "nothing"} is on disk, expected ${expected}.\n`);
3890
- err.write(`Reinstall: ${reinstallHint(command, name, channel)}\n`);
4048
+ err.write(`Reinstall: ${reinstallHint$1(command, name, channel)}\n`);
3891
4049
  return 1;
3892
4050
  }
3893
4051
  }
@@ -3900,7 +4058,7 @@ function statusText(e) {
3900
4058
  * Volta treats `install` of an already-recorded version as a no-op, so the
3901
4059
  * only way to replace a broken install is to remove it first.
3902
4060
  */
3903
- function reinstallHint(command, packageName, channel) {
4061
+ function reinstallHint$1(command, packageName, channel) {
3904
4062
  const cmd = command.argv.join(" ");
3905
4063
  return command.id === "volta" ? `volta uninstall ${packageName} && volta install ${packageName}@${channel}` : cmd;
3906
4064
  }
@@ -4127,10 +4285,190 @@ function buildUpdateHint(status, options) {
4127
4285
  labelColor: options.color
4128
4286
  };
4129
4287
  }
4288
+ /**
4289
+ * `↻ v7.0.31` — a newer build is on disk than the one running (this
4290
+ * process is stale; see `auto-update-restart.ts`). Takes precedence over
4291
+ * the `↑` chip: once the release is installed, "available" is old news and
4292
+ * "restart" is the one action left. Same color contract as `buildUpdateHint`.
4293
+ */
4294
+ function buildRestartHint(state, options) {
4295
+ if (!state?.restartRequired || !state.installed) return null;
4296
+ return {
4297
+ key: options.glyph ?? "↻",
4298
+ keyColor: options.color,
4299
+ label: options.showVersion === false ? "restart" : `v${stripVPrefix(state.installed)}`,
4300
+ labelColor: options.color
4301
+ };
4302
+ }
4130
4303
  function stripVPrefix(v) {
4131
4304
  return v.startsWith("v") ? v.slice(1) : v;
4132
4305
  }
4133
4306
  //#endregion
4307
+ //#region src/chat/auto-update-service.ts
4308
+ async function upgradeInstalledPackages(options) {
4309
+ const channel = options.channel ?? "latest";
4310
+ const find = options.findInstalled ?? findInstalledCompanion;
4311
+ const check = options.checkForUpdate ?? checkForUpdate;
4312
+ const available = options.checkTarballAvailable ?? checkTarballAvailable;
4313
+ const install = options.performSelfUpdate ?? performSelfUpdate;
4314
+ const detect = options.detectPackageManager ?? detectPackageManager;
4315
+ const progress = options.onProgress ?? (() => {});
4316
+ const results = [];
4317
+ for (const spec of options.targets) {
4318
+ if (options.signal?.aborted) break;
4319
+ const installed = find(spec);
4320
+ if (!installed) {
4321
+ results.push({
4322
+ packageName: spec.packageName,
4323
+ from: null,
4324
+ to: null,
4325
+ status: "not-installed"
4326
+ });
4327
+ continue;
4328
+ }
4329
+ progress({
4330
+ kind: "check",
4331
+ packageName: spec.packageName
4332
+ });
4333
+ const result = await upgradeOne(installed, await check({
4334
+ packageName: installed.packageName,
4335
+ currentVersion: installed.version,
4336
+ channel,
4337
+ registry: options.registry,
4338
+ cacheDir: options.cacheDir,
4339
+ force: true,
4340
+ timeoutMs: 8e3,
4341
+ signal: options.signal
4342
+ }));
4343
+ progress({
4344
+ kind: "done",
4345
+ result
4346
+ });
4347
+ results.push(result);
4348
+ }
4349
+ const installedAny = results.some((r) => r.status === "updated");
4350
+ if (installedAny && options.cacheDir) (options.writeMarker ?? writeUpdateAppliedMarker)(options.cacheDir, {
4351
+ at: (options.now ?? Date.now)(),
4352
+ packages: results.filter((r) => r.status === "updated" && r.to).map((r) => ({
4353
+ packageName: r.packageName,
4354
+ version: r.to
4355
+ }))
4356
+ });
4357
+ return {
4358
+ results,
4359
+ ok: results.every((r) => r.status !== "failed" && r.status !== "unavailable"),
4360
+ installedAny
4361
+ };
4362
+ async function upgradeOne(installed, status) {
4363
+ const base = {
4364
+ packageName: installed.packageName,
4365
+ from: installed.version,
4366
+ to: status.latest
4367
+ };
4368
+ if (status.source === "error" && !options.force) return {
4369
+ ...base,
4370
+ status: "failed",
4371
+ error: `registry check failed: ${status.error ?? "unknown error"}`
4372
+ };
4373
+ if (!(status.latest !== null && compareSemver(status.latest, installed.version) > 0) && !options.force) return {
4374
+ ...base,
4375
+ status: "up-to-date"
4376
+ };
4377
+ if (status.latest && !options.force) {
4378
+ if (await available({
4379
+ packageName: installed.packageName,
4380
+ version: status.latest,
4381
+ registry: options.registry
4382
+ }) === "missing") return {
4383
+ ...base,
4384
+ status: "unavailable",
4385
+ error: `${installed.packageName} ${status.latest} is published but not downloadable yet. Try again in a few minutes.`
4386
+ };
4387
+ }
4388
+ const command = detect({
4389
+ packageName: installed.packageName,
4390
+ channel,
4391
+ binaryPath: installed.binaryPath
4392
+ });
4393
+ progress({
4394
+ kind: "install",
4395
+ packageName: installed.packageName,
4396
+ from: installed.version,
4397
+ to: status.latest ?? channel,
4398
+ command: command.argv
4399
+ });
4400
+ const outcome = await install({
4401
+ packageName: installed.packageName,
4402
+ channel,
4403
+ packageManager: command.id,
4404
+ signal: options.signal,
4405
+ stdout: lineSink(installed.packageName, "stdout"),
4406
+ stderr: lineSink(installed.packageName, "stderr"),
4407
+ env: {
4408
+ npm_config_loglevel: "error",
4409
+ npm_config_progress: "false"
4410
+ }
4411
+ });
4412
+ if (outcome.spawnError) return {
4413
+ ...base,
4414
+ status: "failed",
4415
+ command: command.argv,
4416
+ error: `could not run ${command.argv[0]}: ${outcome.spawnError}`
4417
+ };
4418
+ if (outcome.exitCode !== 0) return {
4419
+ ...base,
4420
+ status: "failed",
4421
+ command: command.argv,
4422
+ error: `${command.argv[0]} exited with ${outcome.exitCode ?? "unknown"}`
4423
+ };
4424
+ const after = find(installed);
4425
+ if (status.latest && after && compareSemver(after.version, status.latest) < 0) return {
4426
+ ...base,
4427
+ status: "failed",
4428
+ command: command.argv,
4429
+ error: `install finished but ${after.version} is on disk, expected ${status.latest}. Reinstall: ${reinstallHint(command, installed.packageName, channel)}`
4430
+ };
4431
+ return {
4432
+ ...base,
4433
+ to: after?.version ?? status.latest,
4434
+ status: "updated",
4435
+ command: command.argv
4436
+ };
4437
+ }
4438
+ /** Split a PM's byte stream into trimmed lines for the progress sink. */
4439
+ function lineSink(packageName, stream) {
4440
+ let buffer = "";
4441
+ const flush = (final) => {
4442
+ const parts = buffer.split(/\r?\n/);
4443
+ buffer = final ? "" : parts.pop() ?? "";
4444
+ for (const part of parts) {
4445
+ const line = part.trim();
4446
+ if (line) progress({
4447
+ kind: "log",
4448
+ packageName,
4449
+ stream,
4450
+ line
4451
+ });
4452
+ }
4453
+ };
4454
+ return new Writable({
4455
+ write(chunk, _enc, cb) {
4456
+ buffer += chunk.toString();
4457
+ flush(false);
4458
+ cb();
4459
+ },
4460
+ final(cb) {
4461
+ flush(true);
4462
+ cb();
4463
+ }
4464
+ });
4465
+ }
4466
+ }
4467
+ function reinstallHint(command, packageName, channel) {
4468
+ const cmd = command.argv.join(" ");
4469
+ return command.id === "volta" ? `volta uninstall ${packageName} && volta install ${packageName}@${channel}` : cmd;
4470
+ }
4471
+ //#endregion
4134
4472
  //#region src/chat/boot-profiler.ts
4135
4473
  const enabled = !!process.env.ZIDANE_BOOT_PROFILE;
4136
4474
  /**
@@ -12827,6 +13165,25 @@ function createChatHost(env) {
12827
13165
  await session.save();
12828
13166
  return true;
12829
13167
  },
13168
+ async patchSessionMeta(sessionId, patch, opts = {}) {
13169
+ if (await host.patchLiveSessionMeta(sessionId, patch)) return;
13170
+ const data = await env.store.load(sessionId);
13171
+ if (!data) throw new Error(`Session "${sessionId}" not found.`);
13172
+ for (const [key, value] of Object.entries(patch)) if (value === void 0) delete data.metadata[key];
13173
+ else data.metadata[key] = value;
13174
+ if (opts.bumpUpdatedAt !== false) data.updatedAt = Date.now();
13175
+ await env.store.save(data);
13176
+ },
13177
+ async setSessionModel(sessionId, pick) {
13178
+ await host.patchSessionMeta(sessionId, {
13179
+ providerKey: pick.providerKey,
13180
+ modelId: pick.modelId,
13181
+ modelChain: modelChainMetadata(pick.providerKey, pick.modelId, pick.fallbacks),
13182
+ effort: pick.effort,
13183
+ modelOptions: pick.modelOptions && Object.keys(pick.modelOptions).length > 0 ? enabledModelOptions(pick.modelOptions) : void 0
13184
+ });
13185
+ disposeAgentForRebuild(sessionId);
13186
+ },
12830
13187
  async setLiveSessionAgentId(sessionId, agentId) {
12831
13188
  const entry = active.get(sessionId);
12832
13189
  const session = entry?.agent.session;
@@ -16658,6 +17015,6 @@ function createApprovalHub(options) {
16658
17015
  };
16659
17016
  }
16660
17017
  //#endregion
16661
- export { supportsOAuth as $, parseMcpsFile as $n, INTERACTION_GUIDANCE as $r, EditOutcomeLedger as $t, useSafeModeQueue as A, quoteForShell as An, singleAgentRegistry as Ar, makeRequestInteraction as At, USAGE_CACHE_TTL_MS as B, createArtifactsCompletionProvider as Bn, getTodosForRun as Br, extractEditPayloadForGate as Bt, resolveSessionExportTarget as C, stripSpawnTokensLine as Ci, GRUVBOX_DARK as Cn, BUILTIN_AGENTS as Cr, InteractionsProvider as Ct, scopeCwd as D, toolResultText as Di, CATPPUCCIN_MACCHIATO as Dn, PLAN_AGENT as Dr, createInteractionTools as Dt, resolveSessionCwd as E, toolCallPreview as Ei, CATPPUCCIN_LATTE as En, DEFAULT_PERSIST_EXCLUDE_TOOLS as Er, createAutomaticInteractionResponse as Et, matchesSafelistEntry as F, ConfigProvider as Fn, TODO_STATUS_GLYPHS as Fr, STALE_RUN_MARKER_MS as Ft, usageChecksOptedOut as G, importFromClaudeCode as Gn, selectActiveTodos as Gr, createMainSession as Gt, fetchAllProviderUsage as H, useCompletion as Hn, pickActiveRunId as Hr, resolveCwdPath as Ht, projectsFilePath as I, useConfig as In, TODO_WRITE_COUNTS_METADATA_KEY as Ir, createChatHost as It, fetchOAuthRedirect as J, upsertMcpServer as Jn, useActiveTodos as Jr, runEndNotice as Jt, usageSourceFor as K, mcpsWritePath as Kn, setTodosForRun as Kr, modelChainMetadata as Kt, readProjects as L, resolveConfig as Ln, applyTodosSnapshot as Lr, toTodosSnapshot as Lt, addToSafelist as M, DiscoveryProvider as Mn, TODOREAD_TOOL as Mr, serializeInteractionResponse as Mt, getSafelist as N, useDiscovery as Nn, TODOS_METADATA_KEY as Nr, useInteractionsActions as Nt, SafeModeProvider as O, updateToolEventOutcomes as Oi, CATPPUCCIN_MOCHA as On, accentColor as Or, isInteractionTool as Ot, isOnSafelist as P, useDiscoveryOptional as Pn, TODOWRITE_TOOL as Pr, useInteractionsQueue as Pt, runOAuthLogin as Q, discoverProjectMcps as Qn, IDENTITY_PREFIX as Qr, attachMcpWarnLog as Qt, suggestSafelistEntries as R, resolveStoragePaths as Rn, createTodoTools as Rr, installProviderDiagnosticHook as Rt, renderSession as S, serverToolResultSummary as Si, VAPORWAVE_THEME as Sn, BUILD_AGENT as Sr, HOST_INTERACTION_ID_PREFIX as St, folderlessCwd as T, titleFromTurns as Ti, CATPPUCCIN_FRAPPE as Tn, DEFAULT_BUDGET_EXCLUDE_TOOLS as Tr, buildResumedToolResultsTurn as Tt, fetchProviderUsage as U, countClaudeSessionFiles as Un, pruneTodosByRun as Ur, serializePreview as Ut, clearProviderUsageCache as V, scoreArtifacts as Vn, isTodoTool as Vr, readFileSafe as Vt, providerUsageSupported as W, hasClaudeCodeSetup as Wn, sanitizeTodoItems as Wr, createBuiltinCommands as Wt, redirectUriFromAuthUrl as X, dedupMcpServersByName as Xn, COMMUNICATION_DOCTRINE as Xr, discoverProjectPlugins as Xt, normalizeRedirectPaste as Y, buildMcpServers as Yn, ACTIONS_WITH_CARE_DOCTRINE as Yr, buildPluginContributions as Yt, oauthUsesManualCodePaste as Z, defaultMcpsConfigPaths as Zn, DOING_TASKS_DOCTRINE as Zr, parsePluginScanPathEnv as Zt, buildSpawnEndEvent as _, listSessionMeta as _i, useSettings as _n, chatAutoCompactBehavior as _r, useMcpAuthState as _t, renderActiveTodoAnchor as a, buildBuildSystem as ai, buildHints as an, useUpdateCheck as ar, subscribeMcpToolsCache as at, defaultSkillScanPaths as b, noticeTurnContent as bi, resolveChipColor as bn, discoverAgentsMd as br, ASK_USER_TOOL as bt, useSelectStyle as c, chatReferenceTokensForPrompt as ci, useEnabledToggleSet as cn, checkForUpdate as cr, useMcpToolToggleSet as ct, useTheme as d, compactSummaryEvent as di, SETTINGS_CHOICES as dn, detectLibc as dr, parentServerName as dt, INTERACTION_GUIDANCE_NO_PROMPTS as ei, runCompaction as en, tryOpenBrowser as er, clearMcpToolsCache as et, discoverSystemMd as f, createStateStore as fi, SETTINGS_INPUTS as fn, detectPackageManager as fr, createFileMcpCredentialStore as ft, useStreamBuffer as g, lastContextSizeFromTurns as gi, enforceSettingsInvariants as gn, resolvePlatformPackage as gr, useMcpAuthDispatch as gt, userSystemMdPath as h, getSessionMeta as hi, clampFps as hn, performSelfUpdate as hr, McpAuthProvider as ht, createActiveTodoAnchorHooks as i, TOKEN_DISCIPLINE_DOCTRINE as ii, truncateTrailing as in, buildUpdateHint as ir, saveMcpToolsCache as it, IMPLICITLY_SAFE_TOOLS as j, createDiscoverySlot as jn, DEFAULT_MAX_TODO_ITEMS as jr, pendingInteractionsFromTurns as jt, useSafeModeActions as k, usageByModel as ki, parseEditorCommand as kn, resolveAgentId as kr, isModelInteraction as kt, useSurfaces as l, createChatTurnsReadTool as li, DEFAULT_SETTINGS as ln, checkTarballAvailable as lr, buildVisibleMcpRows as lt, userScopeOverridesLoad as m, eventsFromTurns as mi, SettingsProvider as mn, performInPlaceSelfUpdate as mr, patchMcpCredential as mt, createMemoryApprovalsStore as n, PLAN_MODE_DOCTRINE_NO_PROMPTS as ni, clipHintsToWidth as nn, bootProfileEnabled as nr, mcpToolsCachePath as nt, ThemeProvider as o, buildPlanSystem as oi, shortChord as on, runUpdateCommand as or, buildToolToggle as ot, renderSystemMdSeed as p, deriveSessionTitle as pi, SETTINGS_TOGGLES as pn, parseSemver as pr, mcpCredentialsPath as pt, formatPathForCwd as q, removeMcpServer as qn, todoProgressLabel as qr, sessionModelFallbacks as qt, computeTurnAnchors as r, SUBAGENT_GUIDANCE as ri, hintsLength as rn, bootTick as rr, refreshMcpToolsCatalog as rt, useColors as s, envSection as si, listProjectFiles as sn, findInstalledCompanion as sr, useMcpToolToggleMap as st, createApprovalHub as t, PLAN_MODE_DOCTRINE as ti, EMPTY_HINTS as tn, tryRevealPath as tr, loadMcpToolsCache as tt, useSyntaxStyles as u, DEFAULT_SESSION_TITLE as ui, SETTINGS_CATEGORIES as un, compareSemver as ur, indexOfServerRow as ut, buildSpawnStartEvent as v, loadState as vi, BUILTIN_THEMES as vn, groupArtifacts as vr, getMcpAuthStatus as vt, writeSessionExport as w, sumRunCosts as wi, GRUVBOX_LIGHT as wn, DEFAULT_AGENT_ID as wr, PRESENT_PLAN_TOOL as wt, discoverProjectSkills as x, saveState as xi, resolveTheme as xn, renderAgentsMdBlock as xr, AUTOMATIC_INTERACTION_INSTRUCTION as xt, buildSkillsConfig as y, marginTopFor as yi, DEFAULT_THEME as yn, summarizeArtifactCounts as yr, reduceMcpAuth as yt, writeProjects as z, ARTIFACTS_COMPLETION_PROVIDER_ID as zn, getArchivedTodosForRun as zr, createInteractionHub as zt };
17018
+ export { supportsOAuth as $, parseMcpsFile as $n, pruneTodosByRun as $r, EditOutcomeLedger as $t, useSafeModeQueue as A, noticeTurnContent as Ai, quoteForShell as An, discoverAgentsMd as Ar, makeRequestInteraction as At, USAGE_CACHE_TTL_MS as B, createArtifactsCompletionProvider as Bn, singleAgentRegistry as Br, extractEditPayloadForGate as Bt, resolveSessionExportTarget as C, deriveSessionTitle as Ci, GRUVBOX_DARK as Cn, parseSemver as Cr, InteractionsProvider as Ct, scopeCwd as D, listSessionMeta as Di, CATPPUCCIN_MACCHIATO as Dn, chatAutoCompactBehavior as Dr, createInteractionTools as Dt, resolveSessionCwd as E, lastContextSizeFromTurns as Ei, CATPPUCCIN_LATTE as En, resolvePlatformPackage as Er, createAutomaticInteractionResponse as Et, matchesSafelistEntry as F, titleFromTurns as Fi, ConfigProvider as Fn, DEFAULT_BUDGET_EXCLUDE_TOOLS as Fr, STALE_RUN_MARKER_MS as Ft, usageChecksOptedOut as G, importFromClaudeCode as Gn, TODO_STATUS_GLYPHS as Gr, createMainSession as Gt, fetchAllProviderUsage as H, useCompletion as Hn, TODOREAD_TOOL as Hr, resolveCwdPath as Ht, projectsFilePath as I, toolCallPreview as Ii, useConfig as In, DEFAULT_PERSIST_EXCLUDE_TOOLS as Ir, createChatHost as It, fetchOAuthRedirect as J, upsertMcpServer as Jn, createTodoTools as Jr, runEndNotice as Jt, usageSourceFor as K, mcpsWritePath as Kn, TODO_WRITE_COUNTS_METADATA_KEY as Kr, modelChainMetadata as Kt, readProjects as L, toolResultText as Li, resolveConfig as Ln, PLAN_AGENT as Lr, toTodosSnapshot as Lt, addToSafelist as M, serverToolResultSummary as Mi, DiscoveryProvider as Mn, BUILD_AGENT as Mr, serializeInteractionResponse as Mt, getSafelist as N, stripSpawnTokensLine as Ni, useDiscovery as Nn, BUILTIN_AGENTS as Nr, useInteractionsActions as Nt, SafeModeProvider as O, loadState as Oi, CATPPUCCIN_MOCHA as On, groupArtifacts as Or, isInteractionTool as Ot, isOnSafelist as P, sumRunCosts as Pi, useDiscoveryOptional as Pn, DEFAULT_AGENT_ID as Pr, useInteractionsQueue as Pt, runOAuthLogin as Q, discoverProjectMcps as Qn, pickActiveRunId as Qr, attachMcpWarnLog as Qt, suggestSafelistEntries as R, updateToolEventOutcomes as Ri, resolveStoragePaths as Rn, accentColor as Rr, installProviderDiagnosticHook as Rt, renderSession as S, createStateStore as Si, VAPORWAVE_THEME as Sn, detectPackageManager as Sr, HOST_INTERACTION_ID_PREFIX as St, folderlessCwd as T, getSessionMeta as Ti, CATPPUCCIN_FRAPPE as Tn, performSelfUpdate as Tr, buildResumedToolResultsTurn as Tt, fetchProviderUsage as U, countClaudeSessionFiles as Un, TODOS_METADATA_KEY as Ur, serializePreview as Ut, clearProviderUsageCache as V, scoreArtifacts as Vn, DEFAULT_MAX_TODO_ITEMS as Vr, readFileSafe as Vt, providerUsageSupported as W, hasClaudeCodeSetup as Wn, TODOWRITE_TOOL as Wr, createBuiltinCommands as Wt, redirectUriFromAuthUrl as X, dedupMcpServersByName as Xn, getTodosForRun as Xr, discoverProjectPlugins as Xt, normalizeRedirectPaste as Y, buildMcpServers as Yn, getArchivedTodosForRun as Yr, buildPluginContributions as Yt, oauthUsesManualCodePaste as Z, defaultMcpsConfigPaths as Zn, isTodoTool as Zr, parsePluginScanPathEnv as Zt, buildSpawnEndEvent as _, envSection as _i, useSettings as _n, findInstalledCompanion as _r, useMcpAuthState as _t, renderActiveTodoAnchor as a, ACTIONS_WITH_CARE_DOCTRINE as ai, buildHints as an, buildRestartHint as ar, subscribeMcpToolsCache as at, defaultSkillScanPaths as b, DEFAULT_SESSION_TITLE as bi, resolveChipColor as bn, compareSemver as br, ASK_USER_TOOL as bt, useSelectStyle as c, IDENTITY_PREFIX as ci, useEnabledToggleSet as cn, runUpdateCommand as cr, useMcpToolToggleSet as ct, useTheme as d, PLAN_MODE_DOCTRINE as di, SETTINGS_CHOICES as dn, probeInstalledVersion as dr, parentServerName as dt, sanitizeTodoItems as ei, runCompaction as en, tryOpenBrowser as er, clearMcpToolsCache as et, discoverSystemMd as f, PLAN_MODE_DOCTRINE_NO_PROMPTS as fi, SETTINGS_INPUTS as fn, readUpdateAppliedMarker as fr, createFileMcpCredentialStore as ft, useStreamBuffer as g, buildPlanSystem as gi, enforceSettingsInvariants as gn, writeUpdateAppliedMarker as gr, useMcpAuthDispatch as gt, userSystemMdPath as h, buildBuildSystem as hi, clampFps as hn, watchInstalledVersion as hr, McpAuthProvider as ht, createActiveTodoAnchorHooks as i, useActiveTodos as ii, truncateTrailing as in, upgradeInstalledPackages as ir, saveMcpToolsCache as it, IMPLICITLY_SAFE_TOOLS as j, saveState as ji, createDiscoverySlot as jn, renderAgentsMdBlock as jr, pendingInteractionsFromTurns as jt, useSafeModeActions as k, marginTopFor as ki, parseEditorCommand as kn, summarizeArtifactCounts as kr, isModelInteraction as kt, useSurfaces as l, INTERACTION_GUIDANCE as li, DEFAULT_SETTINGS as ln, UPDATE_APPLIED_MARKER as lr, buildVisibleMcpRows as lt, userScopeOverridesLoad as m, TOKEN_DISCIPLINE_DOCTRINE as mi, SettingsProvider as mn, useRestartRequired as mr, patchMcpCredential as mt, createMemoryApprovalsStore as n, setTodosForRun as ni, clipHintsToWidth as nn, bootProfileEnabled as nr, mcpToolsCachePath as nt, ThemeProvider as o, COMMUNICATION_DOCTRINE as oi, shortChord as on, buildUpdateHint as or, buildToolToggle as ot, renderSystemMdSeed as p, SUBAGENT_GUIDANCE as pi, SETTINGS_TOGGLES as pn, updateAppliedMarkerPath as pr, mcpCredentialsPath as pt, formatPathForCwd as q, removeMcpServer as qn, applyTodosSnapshot as qr, sessionModelFallbacks as qt, computeTurnAnchors as r, todoProgressLabel as ri, hintsLength as rn, bootTick as rr, refreshMcpToolsCatalog as rt, useColors as s, DOING_TASKS_DOCTRINE as si, listProjectFiles as sn, useUpdateCheck as sr, useMcpToolToggleMap as st, createApprovalHub as t, selectActiveTodos as ti, EMPTY_HINTS as tn, tryRevealPath as tr, loadMcpToolsCache as tt, useSyntaxStyles as u, INTERACTION_GUIDANCE_NO_PROMPTS as ui, SETTINGS_CATEGORIES as un, hasUpdateAppliedMarker as ur, indexOfServerRow as ut, buildSpawnStartEvent as v, chatReferenceTokensForPrompt as vi, BUILTIN_THEMES as vn, checkForUpdate as vr, getMcpAuthStatus as vt, writeSessionExport as w, eventsFromTurns as wi, GRUVBOX_LIGHT as wn, performInPlaceSelfUpdate as wr, PRESENT_PLAN_TOOL as wt, discoverProjectSkills as x, compactSummaryEvent as xi, resolveTheme as xn, detectLibc as xr, AUTOMATIC_INTERACTION_INSTRUCTION as xt, buildSkillsConfig as y, createChatTurnsReadTool as yi, DEFAULT_THEME as yn, checkTarballAvailable as yr, reduceMcpAuth as yt, writeProjects as z, usageByModel as zi, ARTIFACTS_COMPLETION_PROVIDER_ID as zn, resolveAgentId as zr, createInteractionHub as zt };
16662
17019
 
16663
- //# sourceMappingURL=approvals-BOr8_M0D.js.map
17020
+ //# sourceMappingURL=approvals-DaCEPCTV.js.map