zidane 6.2.0 → 6.2.7

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 (108) hide show
  1. package/dist/{acp-0JO-UBEv.js → acp-B_8CI9-1.js} +4 -4
  2. package/dist/{acp-0JO-UBEv.js.map → acp-B_8CI9-1.js.map} +1 -1
  3. package/dist/acp-cli.js +7 -7
  4. package/dist/acp.d.ts +1 -1
  5. package/dist/acp.js +1 -1
  6. package/dist/{agent-25moybsj.js → agent-DPO6GKX5.js} +87 -69
  7. package/dist/agent-DPO6GKX5.js.map +1 -0
  8. package/dist/agent.d.ts +1 -1
  9. package/dist/agent.js +2 -2
  10. package/dist/{anthropic-CV_OSYVD.js → anthropic-J2tBjcSQ.js} +49 -27
  11. package/dist/anthropic-J2tBjcSQ.js.map +1 -0
  12. package/dist/{auth-D5FfJtLf.js → auth-Cexpxjfa.js} +7 -5
  13. package/dist/auth-Cexpxjfa.js.map +1 -0
  14. package/dist/{cache-telemetry-BKAwsNxm.js → cache-telemetry-KJ7B-_Gh.js} +8 -3
  15. package/dist/cache-telemetry-KJ7B-_Gh.js.map +1 -0
  16. package/dist/chat/pure.d.ts +3 -3
  17. package/dist/chat/pure.js +1 -1
  18. package/dist/chat.d.ts +11 -4
  19. package/dist/chat.d.ts.map +1 -1
  20. package/dist/chat.js +5 -5
  21. package/dist/contexts/daytona.d.ts +1 -1
  22. package/dist/contexts/e2b.d.ts +1 -1
  23. package/dist/eval.d.ts +1 -1
  24. package/dist/eval.js +1 -1
  25. package/dist/extensions.d.ts +1 -1
  26. package/dist/extensions.js +1 -1
  27. package/dist/headless.d.ts +1 -1
  28. package/dist/headless.js +3 -3
  29. package/dist/{index-mUT8TI9j.d.ts → index-CNyYEOy0.d.ts} +110 -36
  30. package/dist/index-CNyYEOy0.d.ts.map +1 -0
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.js +9 -9
  33. package/dist/{inline-autocomplete-w_O3SVtN.js → inline-autocomplete-BAwBcZtD.js} +12 -7
  34. package/dist/{inline-autocomplete-w_O3SVtN.js.map → inline-autocomplete-BAwBcZtD.js.map} +1 -1
  35. package/dist/mcp.d.ts +1 -1
  36. package/dist/{messages-Ce4yRjd3.js → messages-DEPX32kc.js} +2 -2
  37. package/dist/{messages-Ce4yRjd3.js.map → messages-DEPX32kc.js.map} +1 -1
  38. package/dist/openai-BcmYm0t4.js +579 -0
  39. package/dist/openai-BcmYm0t4.js.map +1 -0
  40. package/dist/{openai-compat-TA7aihJ-.js → openai-compat-LGAsBush.js} +25 -1
  41. package/dist/openai-compat-LGAsBush.js.map +1 -0
  42. package/dist/output/stream-json.d.ts +1 -1
  43. package/dist/output/terminal.d.ts +1 -1
  44. package/dist/presets.d.ts +1 -1
  45. package/dist/presets.js +1 -1
  46. package/dist/providers/anthropic.d.ts +1 -1
  47. package/dist/providers/anthropic.js +1 -1
  48. package/dist/providers/arcee.d.ts +1 -1
  49. package/dist/providers/arcee.js +1 -1
  50. package/dist/providers/baseten.d.ts +1 -1
  51. package/dist/providers/baseten.js +1 -1
  52. package/dist/providers/cerebras.d.ts +1 -1
  53. package/dist/providers/cerebras.js +1 -1
  54. package/dist/providers/local.d.ts +1 -1
  55. package/dist/providers/local.js +1 -1
  56. package/dist/providers/openai-compat.d.ts +1 -1
  57. package/dist/providers/openai-compat.js +1 -1
  58. package/dist/providers/openai.d.ts +1 -1
  59. package/dist/providers/openai.js +1 -503
  60. package/dist/providers/openrouter.d.ts +1 -1
  61. package/dist/providers/openrouter.js +1 -1
  62. package/dist/providers/xai.d.ts +1 -1
  63. package/dist/providers/xai.js +1 -1
  64. package/dist/{providers-Dln69sQ_.js → providers-BM6VuE_i.js} +3 -3
  65. package/dist/{providers-Dln69sQ_.js.map → providers-BM6VuE_i.js.map} +1 -1
  66. package/dist/providers.d.ts +1 -1
  67. package/dist/providers.js +5 -5
  68. package/dist/restate.d.ts +1 -1
  69. package/dist/session/sqlite.d.ts +1 -1
  70. package/dist/{session-D7JSEMME.js → session-Dc1v4Otm.js} +2 -2
  71. package/dist/{session-D7JSEMME.js.map → session-Dc1v4Otm.js.map} +1 -1
  72. package/dist/session.d.ts +1 -1
  73. package/dist/session.js +2 -2
  74. package/dist/skills.d.ts +1 -1
  75. package/dist/{tool-formatters-DOcJz_J9.d.ts → tool-formatters-B7oWiy5m.d.ts} +2 -2
  76. package/dist/tool-formatters-B7oWiy5m.d.ts.map +1 -0
  77. package/dist/tools/fetch-url.d.ts +1 -1
  78. package/dist/tools/web-search.d.ts +1 -1
  79. package/dist/tools.d.ts +1 -1
  80. package/dist/tools.js +1 -1
  81. package/dist/{transcript-anchors-CzMMNrhJ.d.ts → transcript-anchors-BUZ915pM.d.ts} +2 -2
  82. package/dist/{transcript-anchors-CzMMNrhJ.d.ts.map → transcript-anchors-BUZ915pM.d.ts.map} +1 -1
  83. package/dist/{transcript-anchors-CO-WnuYQ.js → transcript-anchors-DtOaKu4d.js} +12 -4
  84. package/dist/{transcript-anchors-CO-WnuYQ.js.map → transcript-anchors-DtOaKu4d.js.map} +1 -1
  85. package/dist/tui.d.ts +17 -14
  86. package/dist/tui.d.ts.map +1 -1
  87. package/dist/tui.js +207 -33
  88. package/dist/tui.js.map +1 -1
  89. package/dist/{turn-operations-CrCrJnvo.d.ts → turn-operations-2Ou_DkbC.d.ts} +3 -3
  90. package/dist/{turn-operations-CrCrJnvo.d.ts.map → turn-operations-2Ou_DkbC.d.ts.map} +1 -1
  91. package/dist/{turn-operations-D9p-y9EC.js → turn-operations-CXjRaltC.js} +72 -2
  92. package/dist/{turn-operations-D9p-y9EC.js.map → turn-operations-CXjRaltC.js.map} +1 -1
  93. package/dist/types-BIarq1qE.js.map +1 -1
  94. package/dist/types.d.ts +1 -1
  95. package/dist/{xai-kGdhWmds.js → xai-BYAyEPiJ.js} +2 -2
  96. package/dist/{xai-kGdhWmds.js.map → xai-BYAyEPiJ.js.map} +1 -1
  97. package/docs/ARCHITECTURE.md +1 -1
  98. package/docs/EXTENSIONS.md +6 -5
  99. package/package.json +2 -1
  100. package/scripts/eval.ts +21 -3
  101. package/dist/agent-25moybsj.js.map +0 -1
  102. package/dist/anthropic-CV_OSYVD.js.map +0 -1
  103. package/dist/auth-D5FfJtLf.js.map +0 -1
  104. package/dist/cache-telemetry-BKAwsNxm.js.map +0 -1
  105. package/dist/index-mUT8TI9j.d.ts.map +0 -1
  106. package/dist/openai-compat-TA7aihJ-.js.map +0 -1
  107. package/dist/providers/openai.js.map +0 -1
  108. package/dist/tool-formatters-DOcJz_J9.d.ts.map +0 -1
package/dist/acp-cli.js CHANGED
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import { Ft as resolveStorageDirs, lt as basic_default } from "./agent-25moybsj.js";
2
+ import { Ft as resolveStorageDirs, lt as basic_default } from "./agent-DPO6GKX5.js";
3
3
  import { r as createProcessContext } from "./contexts-A4ep-iJs.js";
4
4
  import { createSandboxContext } from "./contexts/sandbox.js";
5
- import { m as openaiCompat } from "./openai-compat-TA7aihJ-.js";
6
- import { t as anthropic } from "./anthropic-CV_OSYVD.js";
5
+ import { m as openaiCompat } from "./openai-compat-LGAsBush.js";
6
+ import { t as anthropic } from "./anthropic-J2tBjcSQ.js";
7
7
  import { arcee } from "./providers/arcee.js";
8
8
  import { baseten } from "./providers/baseten.js";
9
9
  import { cerebras } from "./providers/cerebras.js";
10
- import { t as xai } from "./xai-kGdhWmds.js";
11
- import { openai } from "./providers/openai.js";
10
+ import { t as xai } from "./xai-BYAyEPiJ.js";
11
+ import { r as openai } from "./openai-BcmYm0t4.js";
12
12
  import { openrouter } from "./providers/openrouter.js";
13
- import { d as StartUsageError, f as buildStartLocalOptions, h as startProviderNames, i as withAcpDefaultTools, m as startLocalArgOptions, p as parseStartArgValues, t as runAcpStdioServer } from "./acp-0JO-UBEv.js";
14
- import { f as credKeyOf, i as readCredentials, l as BUILTIN_PROVIDERS, r as credentialsPath, t as detectAuth, y as modelsForDescriptor } from "./auth-D5FfJtLf.js";
13
+ import { d as StartUsageError, f as buildStartLocalOptions, h as startProviderNames, i as withAcpDefaultTools, m as startLocalArgOptions, p as parseStartArgValues, t as runAcpStdioServer } from "./acp-B_8CI9-1.js";
14
+ import { f as credKeyOf, i as readCredentials, l as BUILTIN_PROVIDERS, r as credentialsPath, t as detectAuth, y as modelsForDescriptor } from "./auth-Cexpxjfa.js";
15
15
  import { createDaytonaProvider } from "./contexts/daytona.js";
16
16
  import { createDockerContext } from "./contexts/docker.js";
17
17
  import { createE2BProvider } from "./contexts/e2b.js";
package/dist/acp.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Kf as ToolDef, Li as AgentOptions, Mf as ToolResultContent, Pi as Agent, Vf as TurnUsage, Yp as Provider, bf as SessionContentBlock, df as PromptPart, ef as McpServerConfig, mp as SessionStore, t as Preset, up as Session, zd as AgentBehavior } from "./index-mUT8TI9j.js";
1
+ import { Kf as ToolDef, Li as AgentOptions, Mf as ToolResultContent, Pi as Agent, Vf as TurnUsage, Yp as Provider, bf as SessionContentBlock, df as PromptPart, ef as McpServerConfig, mp as SessionStore, t as Preset, up as Session, zd as AgentBehavior } from "./index-CNyYEOy0.js";
2
2
  import { c as ExecutionContext } from "./types-BDccavwj.js";
3
3
  import { Readable, Writable } from "node:stream";
4
4
 
package/dist/acp.js CHANGED
@@ -1,2 +1,2 @@
1
- import { _ as createJsonRpcConnection, a as wrapToolsForAcpClient, c as sessionBlocksToAcp, g as JsonRpcRemoteError, i as withAcpDefaultTools, l as stopReasonFromRun, n as AcpProtocolError, o as acpMcpServersToZidane, r as createAcpServer, s as acpPromptToPromptParts, t as runAcpStdioServer, u as toolResultToAcpContent } from "./acp-0JO-UBEv.js";
1
+ import { _ as createJsonRpcConnection, a as wrapToolsForAcpClient, c as sessionBlocksToAcp, g as JsonRpcRemoteError, i as withAcpDefaultTools, l as stopReasonFromRun, n as AcpProtocolError, o as acpMcpServersToZidane, r as createAcpServer, s as acpPromptToPromptParts, t as runAcpStdioServer, u as toolResultToAcpContent } from "./acp-B_8CI9-1.js";
2
2
  export { AcpProtocolError, JsonRpcRemoteError, acpMcpServersToZidane, acpPromptToPromptParts, createAcpServer, createJsonRpcConnection, runAcpStdioServer, sessionBlocksToAcp, stopReasonFromRun, toolResultToAcpContent, withAcpDefaultTools, wrapToolsForAcpClient };
@@ -13,10 +13,10 @@ import { n as writeFileAtomicAsync, t as writeFileAtomic } from "./atomic-write-
13
13
  import { r as createLogger, t as consoleSink } from "./logger-DBX9uYOw.js";
14
14
  import { n as reconcileImageMediaType } from "./media-sniff-Bn76JxAu.js";
15
15
  import { n as flattenTurns, r as formatTokenUsage, t as effectiveInputFromTurn } from "./stats-DAKBEKjc.js";
16
- import { S as canonicalizePrompt, x as buildPromptMessage } from "./openai-compat-TA7aihJ-.js";
16
+ import { S as canonicalizePrompt, x as buildPromptMessage } from "./openai-compat-LGAsBush.js";
17
17
  import { appendStaticSection, renderSystemForWire } from "./prompt.js";
18
- import { a as detectTurnInterruption, c as filterUnresolvedToolUses, d as remintDuplicateToolCallIds, f as resolveContentRefsInMessages, n as SYNTHETIC_TOOL_RESULT_PLACEHOLDER, o as ensureEndsWithUserMessage, s as ensureToolResultPairing } from "./messages-Ce4yRjd3.js";
19
- import { a as getExtensionSessionState, c as withExtensionSession, n as currentExtensionSession, r as deleteExtensionSessionState, s as setExtensionSessionState } from "./session-D7JSEMME.js";
18
+ import { a as detectTurnInterruption, c as filterUnresolvedToolUses, d as remintDuplicateToolCallIds, f as resolveContentRefsInMessages, n as SYNTHETIC_TOOL_RESULT_PLACEHOLDER, o as ensureEndsWithUserMessage, s as ensureToolResultPairing } from "./messages-DEPX32kc.js";
19
+ import { a as getExtensionSessionState, c as withExtensionSession, n as currentExtensionSession, r as deleteExtensionSessionState, s as setExtensionSessionState } from "./session-Dc1v4Otm.js";
20
20
  import { a as withInactivityTimeout, i as settleWithinTimeout, n as linkAbortSignal, o as withTimeout$1, r as resolveTimeoutMs, t as OperationTimeoutError } from "./timeout-BDetbuN6.js";
21
21
  import { n as connectMcpServers, s as wrapDiscoveredMcpTools } from "./mcp-CkHUripi.js";
22
22
  import { createRequire } from "node:module";
@@ -1337,8 +1337,12 @@ function findEntryFile(dir) {
1337
1337
  return null;
1338
1338
  }
1339
1339
  /**
1340
- * Discover + load every enabled / trusted extension reachable from the
1341
- * default scan paths. Returns one {@link LoadedExtension} per scan entry:
1340
+ * Discover + load every trusted extension reachable from the default
1341
+ * scan paths including ones the user's enable allowlist has toggled
1342
+ * OFF. Disabled extensions still import (and later run `setup()`) so
1343
+ * their config schema is browsable in Settings before enabling; the
1344
+ * allowlist gates their CONTRIBUTIONS at registry level, not their code.
1345
+ * The trust boundary stays with `trustProjectExtensions`. Returns one {@link LoadedExtension} per scan entry:
1342
1346
  * skipped entries have no definition, failed entries carry `error`.
1343
1347
  * Loaders never throw — the host can decide what to do with load errors
1344
1348
  * (typically: ship them to the Settings panel).
@@ -1371,22 +1375,11 @@ async function discoverExtensions(opts = {}) {
1371
1375
  }));
1372
1376
  }
1373
1377
  function selectExtensionEntries(entries, opts) {
1374
- const enabled = opts.enabled === void 0 ? null : new Set(opts.enabled);
1375
1378
  const trustProjectExtensions = opts.trustProjectExtensions ?? process.env.ZIDANE_TRUST_PROJECT_EXTENSIONS === "1";
1376
1379
  const selected = /* @__PURE__ */ new Map();
1377
1380
  const locked = /* @__PURE__ */ new Set();
1378
1381
  for (const entry of entries) {
1379
1382
  if (locked.has(entry.name)) continue;
1380
- if (enabled && !enabled.has(entry.name)) {
1381
- selected.set(entry.name, {
1382
- name: entry.name,
1383
- dir: entry.dir,
1384
- source: entry.source,
1385
- ...entry.manifest ? { manifest: entry.manifest } : {}
1386
- });
1387
- locked.add(entry.name);
1388
- continue;
1389
- }
1390
1383
  if (entry.source === "project" && !trustProjectExtensions) {
1391
1384
  if (!selected.has(entry.name)) selected.set(entry.name, {
1392
1385
  name: entry.name,
@@ -5984,10 +5977,7 @@ async function buildExtensionRegistry(loaded, options = {}) {
5984
5977
  continue;
5985
5978
  }
5986
5979
  extensionNameOwners.add(entry.name);
5987
- if (disabled.has(entry.name)) {
5988
- inactive.push(entry);
5989
- continue;
5990
- }
5980
+ const isDisabled = disabled.has(entry.name);
5991
5981
  const logger = createLogger(sink, { extension: entry.name });
5992
5982
  const gate = { open: true };
5993
5983
  const perExtSinks = {
@@ -6024,7 +6014,7 @@ async function buildExtensionRegistry(loaded, options = {}) {
6024
6014
  guiPanels: []
6025
6015
  };
6026
6016
  const abort = new AbortController();
6027
- const hudWriter = options.hud?.claim(entry.name);
6017
+ const hudWriter = isDisabled ? void 0 : options.hud?.claim(entry.name);
6028
6018
  if (hudWriter) hudWriters.push(hudWriter);
6029
6019
  const ctx = makeContext({
6030
6020
  definition: entry.definition,
@@ -6034,10 +6024,11 @@ async function buildExtensionRegistry(loaded, options = {}) {
6034
6024
  gate,
6035
6025
  signal: abort.signal,
6036
6026
  sinks: perExtSinks,
6027
+ disabled: isDisabled,
6037
6028
  ...options.readSettings !== void 0 ? { readSettings: options.readSettings } : {},
6038
6029
  ...hudWriter !== void 0 ? { hudWriter } : {},
6039
- ...options.promptBridge !== void 0 ? { promptBridge: options.promptBridge } : {},
6040
- ...options.hostRuntime !== void 0 ? { hostRuntime: options.hostRuntime } : {},
6030
+ ...!isDisabled && options.promptBridge !== void 0 ? { promptBridge: options.promptBridge } : {},
6031
+ ...!isDisabled && options.hostRuntime !== void 0 ? { hostRuntime: options.hostRuntime } : {},
6041
6032
  paths: resolveContextPaths(options)
6042
6033
  });
6043
6034
  candidates.push({
@@ -6050,7 +6041,8 @@ async function buildExtensionRegistry(loaded, options = {}) {
6050
6041
  abort,
6051
6042
  sinks: perExtSinks,
6052
6043
  ctx,
6053
- setupTimeoutMs
6044
+ setupTimeoutMs,
6045
+ disabled: isDisabled
6054
6046
  });
6055
6047
  }
6056
6048
  const settled = await Promise.all(candidates.map(setupExtension));
@@ -6061,6 +6053,14 @@ async function buildExtensionRegistry(loaded, options = {}) {
6061
6053
  for (const result of settled) {
6062
6054
  const { entry, logger, sinks: perExtSinks } = result.candidate;
6063
6055
  if (result.ok) {
6056
+ if (result.candidate.disabled) {
6057
+ inactive.push({
6058
+ ...entry,
6059
+ contributions: captureContributions(perExtSinks),
6060
+ setupRan: true
6061
+ });
6062
+ continue;
6063
+ }
6064
6064
  for (const binding of perExtSinks.keybindings) {
6065
6065
  const idOwner = keybindingIdOwners.get(binding.id);
6066
6066
  if (idOwner === entry.name) {
@@ -6111,50 +6111,19 @@ async function buildExtensionRegistry(loaded, options = {}) {
6111
6111
  }
6112
6112
  for (const renderer of perExtSinks.renderers) if (rendererIdOwners.get(renderer.id)) logger.warn("duplicate renderer id — the earlier registration wins", { id: renderer.id });
6113
6113
  else rendererIdOwners.set(renderer.id, entry.name);
6114
- const contributions = {
6115
- tools: perExtSinks.tools,
6116
- hooks: perExtSinks.hooks,
6117
- mcpServers: perExtSinks.mcpServers,
6118
- skills: perExtSinks.skills,
6119
- systemFragments: perExtSinks.systemFragments,
6120
- contextBreakdownSections: perExtSinks.contextBreakdownSections,
6121
- contextPanelSections: perExtSinks.contextPanelSections,
6122
- toolResultMetadata: perExtSinks.toolResultMetadata,
6123
- runTransforms: perExtSinks.runTransforms,
6124
- behaviorTransforms: perExtSinks.behaviorTransforms,
6125
- providerMiddlewares: perExtSinks.providerMiddlewares,
6126
- toolCatalogTransforms: perExtSinks.toolCatalogTransforms,
6127
- mcpConfigTransforms: perExtSinks.mcpConfigTransforms,
6128
- skillPolicies: perExtSinks.skillPolicies,
6129
- promptTransforms: perExtSinks.promptTransforms,
6130
- completionProviders: perExtSinks.completionProviders,
6131
- inlineAutocompleteProviders: perExtSinks.inlineAutocompleteProviders,
6132
- commands: perExtSinks.commands,
6133
- themes: perExtSinks.themes,
6134
- agents: perExtSinks.agents,
6135
- providers: perExtSinks.providers,
6136
- subagents: perExtSinks.subagents,
6137
- subagentOverrides: perExtSinks.subagentOverrides,
6138
- configCategories: perExtSinks.configCategories,
6139
- configItems: perExtSinks.configItems,
6140
- tui: {
6141
- keybindings: perExtSinks.keybindings,
6142
- footerHints: perExtSinks.footerHints,
6143
- modals: perExtSinks.modals,
6144
- renderers: perExtSinks.renderers,
6145
- toolRenderers: perExtSinks.toolRenderers
6146
- },
6147
- gui: { panels: perExtSinks.guiPanels }
6148
- };
6149
6114
  active.push({
6150
6115
  ...entry,
6151
- contributions,
6116
+ contributions: captureContributions(perExtSinks),
6152
6117
  setupRan: true
6153
6118
  });
6154
6119
  } else {
6155
6120
  const message = result.error;
6156
6121
  logger.error("setup threw", { error: message });
6157
- inactive.push({
6122
+ if (result.candidate.disabled) inactive.push({
6123
+ ...entry,
6124
+ setupRan: true
6125
+ });
6126
+ else inactive.push({
6158
6127
  ...entry,
6159
6128
  error: message,
6160
6129
  setupRan: true
@@ -6169,6 +6138,44 @@ async function buildExtensionRegistry(loaded, options = {}) {
6169
6138
  await disposeLoadedExtensions([...active, ...inactive], sink);
6170
6139
  } });
6171
6140
  }
6141
+ /** Freeze one extension's sinks into its `contributions` snapshot. */
6142
+ function captureContributions(perExtSinks) {
6143
+ return {
6144
+ tools: perExtSinks.tools,
6145
+ hooks: perExtSinks.hooks,
6146
+ mcpServers: perExtSinks.mcpServers,
6147
+ skills: perExtSinks.skills,
6148
+ systemFragments: perExtSinks.systemFragments,
6149
+ contextBreakdownSections: perExtSinks.contextBreakdownSections,
6150
+ contextPanelSections: perExtSinks.contextPanelSections,
6151
+ toolResultMetadata: perExtSinks.toolResultMetadata,
6152
+ runTransforms: perExtSinks.runTransforms,
6153
+ behaviorTransforms: perExtSinks.behaviorTransforms,
6154
+ providerMiddlewares: perExtSinks.providerMiddlewares,
6155
+ toolCatalogTransforms: perExtSinks.toolCatalogTransforms,
6156
+ mcpConfigTransforms: perExtSinks.mcpConfigTransforms,
6157
+ skillPolicies: perExtSinks.skillPolicies,
6158
+ promptTransforms: perExtSinks.promptTransforms,
6159
+ completionProviders: perExtSinks.completionProviders,
6160
+ inlineAutocompleteProviders: perExtSinks.inlineAutocompleteProviders,
6161
+ commands: perExtSinks.commands,
6162
+ themes: perExtSinks.themes,
6163
+ agents: perExtSinks.agents,
6164
+ providers: perExtSinks.providers,
6165
+ subagents: perExtSinks.subagents,
6166
+ subagentOverrides: perExtSinks.subagentOverrides,
6167
+ configCategories: perExtSinks.configCategories,
6168
+ configItems: perExtSinks.configItems,
6169
+ tui: {
6170
+ keybindings: perExtSinks.keybindings,
6171
+ footerHints: perExtSinks.footerHints,
6172
+ modals: perExtSinks.modals,
6173
+ renderers: perExtSinks.renderers,
6174
+ toolRenderers: perExtSinks.toolRenderers
6175
+ },
6176
+ gui: { panels: perExtSinks.guiPanels }
6177
+ };
6178
+ }
6172
6179
  async function setupExtension(candidate) {
6173
6180
  const timeoutMessage = `setup timed out after ${candidate.setupTimeoutMs}ms`;
6174
6181
  try {
@@ -6313,6 +6320,16 @@ function mergeContributions(active, inactive = [], options = {}) {
6313
6320
  toolRenderers.push(...c.tui.toolRenderers);
6314
6321
  guiPanels.push(...c.gui.panels);
6315
6322
  }
6323
+ for (const entry of inactive) {
6324
+ const c = entry.contributions;
6325
+ if (entry.error || !c) continue;
6326
+ for (const [id, category] of Object.entries(c.configCategories)) if (!(id in configCategories)) configCategories[id] = category;
6327
+ if (Object.keys(c.configItems).length > 0 && !(entry.name in configItems)) {
6328
+ const items = createRecord();
6329
+ Object.assign(items, c.configItems);
6330
+ configItems[entry.name] = items;
6331
+ }
6332
+ }
6316
6333
  return {
6317
6334
  loaded: active,
6318
6335
  inactive,
@@ -6459,7 +6476,7 @@ function partitionExtensionCatalog(loaded, inactive) {
6459
6476
  };
6460
6477
  }
6461
6478
  function makeContext(opts) {
6462
- const { definition, source, dir, logger, gate, signal, sinks, readSettings, paths, hudWriter, promptBridge, hostRuntime } = opts;
6479
+ const { definition, source, dir, logger, gate, signal, sinks, readSettings, paths, hudWriter, promptBridge, hostRuntime, disabled = false } = opts;
6463
6480
  function guardOpen(method) {
6464
6481
  if (gate.open) return true;
6465
6482
  logger.warn("registration after setup() resolved — call ignored", { method });
@@ -7033,6 +7050,7 @@ function makeContext(opts) {
7033
7050
  registerConfigCategory,
7034
7051
  registerConfigItem,
7035
7052
  config: configSurface,
7053
+ disabled,
7036
7054
  tui: {
7037
7055
  registerKeybinding,
7038
7056
  registerFooterHint,
@@ -7099,9 +7117,7 @@ function resolveContextPaths(options) {
7099
7117
  *
7100
7118
  * The `disabled` set honors the allowlist for inline extensions too:
7101
7119
  * the TUI treats inline as toggleable everywhere else (Settings tab,
7102
- * live filtering), so letting a toggled-off inline extension run
7103
- * `setup()` here would leak its providers / agents / themes into the
7104
- * registry anyway.
7120
+ * live filtering), so both ride the same inactive-classification path.
7105
7121
  */
7106
7122
  async function discoverAndBuildExtensionRegistry(opts = {}) {
7107
7123
  const candidates = [...await discoverExtensions({
@@ -7109,7 +7125,6 @@ async function discoverAndBuildExtensionRegistry(opts = {}) {
7109
7125
  ...opts.home !== void 0 ? { home: opts.home } : {},
7110
7126
  ...opts.prefix !== void 0 ? { prefix: opts.prefix } : {},
7111
7127
  ...opts.extensionScanPaths !== void 0 ? { extensionScanPaths: opts.extensionScanPaths } : {},
7112
- ...opts.enabledAllowlist !== void 0 ? { enabled: opts.enabledAllowlist } : {},
7113
7128
  ...opts.trustProjectExtensions !== void 0 ? { trustProjectExtensions: opts.trustProjectExtensions } : {},
7114
7129
  ...opts.signal !== void 0 ? { signal: opts.signal } : {}
7115
7130
  }), ...opts.inlineExtensions ?? []];
@@ -10881,7 +10896,7 @@ async function executeTurn(ctx, turn, priorUsage) {
10881
10896
  sanitizedMessages = aged.messages;
10882
10897
  markReadStateForElidedPaths(ctx, ctx.handle.cwd, aged.elidedReadPaths);
10883
10898
  }
10884
- const effectiveThinkingBudget = applyThinkingDecay(ctx.thinkingBudget, ctx.thinkingDecay, turn);
10899
+ const effectiveThinkingBudget = ctx.thinking === "adaptive" && ctx.provider.meta.capabilities?.adaptiveBudgetIsEnvelope === true ? ctx.thinkingBudget : applyThinkingDecay(ctx.thinkingBudget, ctx.thinkingDecay, turn + 1);
10885
10900
  const formattedTools = ctx.rebuildFormattedTools ? ctx.rebuildFormattedTools(ctx.provider) : ctx.formattedTools;
10886
10901
  const streamOptions = {
10887
10902
  model: ctx.model,
@@ -10891,6 +10906,7 @@ async function executeTurn(ctx, turn, priorUsage) {
10891
10906
  maxTokens: ctx.maxTokens,
10892
10907
  thinking: ctx.thinking,
10893
10908
  thinkingBudget: effectiveThinkingBudget,
10909
+ ...ctx.taskBudget !== void 0 ? { taskBudget: ctx.taskBudget } : {},
10894
10910
  ...ctx.modelOptions ? { modelOptions: ctx.modelOptions } : {},
10895
10911
  cache: ctx.cache ?? true,
10896
10912
  signal: ctx.signal
@@ -12864,6 +12880,7 @@ function resolveBehavior(agentBehavior, runBehavior) {
12864
12880
  destroyTimeoutMs: runBehavior?.destroyTimeoutMs ?? agentBehavior?.destroyTimeoutMs,
12865
12881
  maxTokens: runBehavior?.maxTokens ?? agentBehavior?.maxTokens,
12866
12882
  thinkingBudget: runBehavior?.thinkingBudget ?? agentBehavior?.thinkingBudget,
12883
+ taskBudget: runBehavior?.taskBudget ?? agentBehavior?.taskBudget,
12867
12884
  thinkingOverrunPolicy: runBehavior?.thinkingOverrunPolicy ?? agentBehavior?.thinkingOverrunPolicy,
12868
12885
  modelOptions: runBehavior?.modelOptions ?? agentBehavior?.modelOptions,
12869
12886
  schema: runBehavior?.schema ?? agentBehavior?.schema,
@@ -13749,7 +13766,7 @@ function createAgent(rawOptions) {
13749
13766
  const thinking = options.thinking ?? "off";
13750
13767
  const model = targets[0].model;
13751
13768
  if (runProvider.meta?.clearsContextServerSide) resolvedBehavior.dedupReads = false;
13752
- const { maxConcurrentTools, toolBatchExecutor, toolBatchTimeoutMs, shouldRethrowToolError, maxTurns, maxTurnsWarning, maxTurnsWarningMessage, maxCostUsd, maxTotalTokens, maxWallMs, providerStreamStartTimeoutMs, providerStreamTimeoutMs, maxTokens, retry, thinkingBudget, thinkingOverrunPolicy, modelOptions: behaviorModelOptions, schema, cache, toolOutputBudget, toolOutputBudgetExcludeTools, compactStrategy, compactThreshold, compactKeepTurns, thinkingDecay, writeFileExistingPolicy, textToolCallRescue, unknownToolRecovery, progressNudges, dedupTools, toolBudgets, repeatGuard, elideStaleReads, mediaKeepTurns, autoCompact, toolDisclosure, mcpToolNameSeparator, toolSearch, surfaceMcpInstructions, persistThreshold, persistExcludeTools, persistDir, persistMaxBytes, strictToolPairing, maxPairingRepairsPerTurn, maxConsecutivePauseTurns, resumeOnMaxTokens, persistTurns } = resolvedBehavior;
13769
+ const { maxConcurrentTools, toolBatchExecutor, toolBatchTimeoutMs, shouldRethrowToolError, maxTurns, maxTurnsWarning, maxTurnsWarningMessage, maxCostUsd, maxTotalTokens, maxWallMs, providerStreamStartTimeoutMs, providerStreamTimeoutMs, maxTokens, retry, thinkingBudget, taskBudget, thinkingOverrunPolicy, modelOptions: behaviorModelOptions, schema, cache, toolOutputBudget, toolOutputBudgetExcludeTools, compactStrategy, compactThreshold, compactKeepTurns, thinkingDecay, writeFileExistingPolicy, textToolCallRescue, unknownToolRecovery, progressNudges, dedupTools, toolBudgets, repeatGuard, elideStaleReads, mediaKeepTurns, autoCompact, toolDisclosure, mcpToolNameSeparator, toolSearch, surfaceMcpInstructions, persistThreshold, persistExcludeTools, persistDir, persistMaxBytes, strictToolPairing, maxPairingRepairsPerTurn, maxConsecutivePauseTurns, resumeOnMaxTokens, persistTurns } = resolvedBehavior;
13753
13770
  const modelOptions = options.modelOptions ?? behaviorModelOptions;
13754
13771
  let system = options.system || agentSystem || "You are a helpful assistant.";
13755
13772
  const baseSystemForBreakdown = renderSystemForWire(system);
@@ -14175,6 +14192,7 @@ function createAgent(rawOptions) {
14175
14192
  ...options.parentRunId ? { parentRunId: options.parentRunId } : {},
14176
14193
  depth: runDepth,
14177
14194
  thinkingBudget,
14195
+ ...taskBudget !== void 0 ? { taskBudget } : {},
14178
14196
  ...modelOptions ? { modelOptions } : {},
14179
14197
  schema,
14180
14198
  cache,
@@ -14778,4 +14796,4 @@ function createAgent(rawOptions) {
14778
14796
  //#endregion
14779
14797
  export { composeExtensionPreset as $, discoverExtensions as $t, ANCHOR_PREVIEW_MAX_CHARS as A, createInteractionTool as At, ExtensionInstallError as B, ensureKeybindingsFile as Bt, NO_TOOLS_PREAMBLE as C, readFile$1 as Ct, buildFullCompactPrompt as D, formatModelLine as Dt, buildFromCompactPrompt as E, createModelSearchTool as Et, truncateHeadForPtlRetry as F, resolveStorageDirs as Ft, readExtensionInstallProvenance as G, mergeKeybindings as Gt, installExtensionFromSpec as H, groupBindings as Ht, CompactInvalidInputError as I, DEFAULT_KEYBINDINGS as It, createExtensionHud as J, readKeybindingsRaw as Jt, removeInstalledExtension as K, parseBindingSpec as Kt, CompactPromptTooLongError as L, KEYBINDING_DEFS as Lt, sliceForCompaction as M, glob as Mt, stripImagesFromTurns as N, edit as Nt, buildTailCompactPrompt as O, matchModelEntries as Ot, summaryToTurn as P, validateToolArgs as Pt, buildExtensionRegistry as Q, defaultExtensionScanPaths as Qt, EMPTY_EXTENSION_REGISTRY as R, KEYBINDING_DEF_BY_ACTION as Rt, BASE_INSTRUCTIONS as S, tailTruncate as St, buildCompactPrompt as T, multiEdit as Tt, listExtensionCandidates as U, keybindingsPath as Ut, fetchExtensionSource as V, formatBindingForDisplay as Vt, parseExtensionInstallSource as W, matchesBinding as Wt, discoverAndBuildExtensionRegistry as X, stripJsonComments as Xt, registerExtensionHostModules as Y, resolveExtensionKeybindings as Yt, buildExtensionPreset as Z, ENTRY_CANDIDATES as Zt, buildPostCompactAttachments as _, defaultRepeatGuardNormalize as _n, createSkillsRunScriptTool as _t, SHELL_CASCADE_CANCEL_MESSAGE as a, clampExtensionConfigNumber as an, createWorkspaceSurface as at, selectRecentFiles as b, stableStringify as bn, createShellTool as bt, applyCompactSummaryCutoff as c, isValidExtensionConfigValue as cn, basicTools as ct, buildPersistedStub as d, sanitizeExtensionConfigActionPatch as dn, WAIT_TASK_TIMED_OUT_PREFIX as dt, inlineLoadedExtension as en, disposeExtensionRegistry as et, cleanupPersistedSession as f, toWireConfigSchema as fn, waitTask as ft, resolveTasksDir as g, shouldAutoCompact as gn, createSkillsUseTool as gt, resolvePersistDir as h, effectiveContextWindow as hn, isSpawnTool as ht, INTERRUPT_MESSAGE_FOR_TOOL_USE as i, defineExtension as in, createExtensionHostRuntimeBridge as it, anchorPreviewFor as j, grep as jt, buildUpToCompactPrompt as k, listFiles as kt, PERSISTED_STUB_PREFIX as l, resolveExtensionConfig as ln, basic_default as lt, resolveMcpWarningsDir as m, OUTPUT_RESERVE_TOKENS as mn, createSpawnTool as mt, normalizeProviders as n, parseExtensionScanPathEnv as nn, mergeContributions as nt, TOOL_USE_CANCELLED_MESSAGE as o, coerceExtensionConfigInput as on, composePresets as ot, maybePersistToolResult as p, AUTO_COMPACT_MIN_GROWTH_FRACTION as pn, createToolSearchTool as pt, updateInstalledExtension as q, readKeybindings as qt, resolveModelTargets as r, scanExtensionDirectories as rn, partitionExtensionCatalog as rt, TOOL_USE_SKIPPED_MESSAGE as s, isValidExtensionConfigItem as sn, definePreset as st, createAgent as t, isExtensionDefinition as tn, filterExtensionRegistry as tt, PERSISTENCE_PREVIEW_BYTES as u, resolveExtensionConfigValue as un, writeFile$1 as ut, selectFilesFromReadState as v, defaultRepeatGuardTracked as vn, createSkillsReadTool as vt, TRAILER as w, looksBinary as wt, compactConversation as x, shell as xt, selectFilesFromSession as y, normalizeShellCommand as yn, shellKill as yt, createExtensionPromptBridge as z, KEYBINDING_KEY_COL_WIDTH as zt };
14780
14798
 
14781
- //# sourceMappingURL=agent-25moybsj.js.map
14799
+ //# sourceMappingURL=agent-DPO6GKX5.js.map