@bastani/atomic 0.9.16-alpha.9 → 0.9.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -0
- package/README.md +4 -4
- package/dist/builtin/intercom/CHANGELOG.md +42 -0
- package/dist/builtin/intercom/README.md +18 -17
- package/dist/builtin/intercom/broker/broker.ts +43 -18
- package/dist/builtin/intercom/broker/client.ts +138 -7
- package/dist/builtin/intercom/broker/group-isolation.ts +3 -3
- package/dist/builtin/intercom/broker/group-membership.ts +55 -0
- package/dist/builtin/intercom/broker/presence-handler.ts +62 -50
- package/dist/builtin/intercom/broker/send-handler.ts +2 -3
- package/dist/builtin/intercom/group.ts +40 -0
- package/dist/builtin/intercom/index.bundle.mjs +490 -183
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/intercom/skills/intercom/SKILL.md +16 -10
- package/dist/builtin/intercom/types.ts +24 -2
- package/dist/builtin/mcp/index.bundle.mjs +202 -52
- package/dist/builtin/mcp/package.json +2 -2
- package/dist/builtin/subagents/CHANGELOG.md +51 -0
- package/dist/builtin/subagents/README.md +3 -3
- package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
- package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-locator.md +1 -1
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +1 -1
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-locator.md +1 -1
- package/dist/builtin/subagents/agents/debugger.md +1 -1
- package/dist/builtin/subagents/agents/worker.md +1 -1
- package/dist/builtin/subagents/package.json +3 -3
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +422 -140
- package/dist/builtin/web-access/index.bundle.mjs +202 -52
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +70 -0
- package/dist/builtin/workflows/README.md +2 -2
- package/dist/builtin/workflows/builtin/{chunk-h5e65g7g.js → chunk-3y1hmzw6.js} +36 -6
- package/dist/builtin/workflows/builtin/{chunk-nqr34qp3.js → chunk-6rbajjf5.js} +7 -1
- package/dist/builtin/workflows/builtin/{chunk-qe6bfpbd.js → chunk-bz1c9732.js} +15 -3
- package/dist/builtin/workflows/builtin/{chunk-8v8wmb7z.js → chunk-dattsgxg.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-17zk6ffd.js → chunk-gdx0avpx.js} +355 -67
- package/dist/builtin/workflows/builtin/{chunk-rbnj9621.js → chunk-w9c7rkrk.js} +1 -1
- package/dist/builtin/workflows/builtin/goal.js +3 -3
- package/dist/builtin/workflows/builtin/index.js +5 -5
- package/dist/builtin/workflows/builtin/open-claude-design.js +2 -2
- package/dist/builtin/workflows/builtin/ralph.js +3 -3
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +531 -143
- package/dist/builtin/workflows/src/index.js +212 -72
- package/dist/cli/args.js +6 -6
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +2 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/session-picker.d.ts +2 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +3 -2
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +2 -1
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +1 -0
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +3 -6
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +3 -1
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +6 -3
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +7 -5
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +37 -23
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +9 -2
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/builtin-packages.d.ts +4 -0
- package/dist/core/builtin-packages.d.ts.map +1 -1
- package/dist/core/builtin-packages.js +22 -1
- package/dist/core/builtin-packages.js.map +1 -1
- package/dist/core/callback-activity.d.ts.map +1 -1
- package/dist/core/callback-activity.js +6 -3
- package/dist/core/callback-activity.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts +1 -0
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +11 -1
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +1 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner-registries.d.ts.map +1 -1
- package/dist/core/extensions/runner-registries.js +9 -4
- package/dist/core/extensions/runner-registries.js.map +1 -1
- package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
- package/dist/core/extensions/runner-shortcuts.js +1 -0
- package/dist/core/extensions/runner-shortcuts.js.map +1 -1
- package/dist/core/keybindings.d.ts +5 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +4 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/mandatory-resource-loader.d.ts +6 -0
- package/dist/core/mandatory-resource-loader.d.ts.map +1 -0
- package/dist/core/mandatory-resource-loader.js +94 -0
- package/dist/core/mandatory-resource-loader.js.map +1 -0
- package/dist/core/mandatory-runtime-tools.d.ts +10 -0
- package/dist/core/mandatory-runtime-tools.d.ts.map +1 -0
- package/dist/core/mandatory-runtime-tools.js +31 -0
- package/dist/core/mandatory-runtime-tools.js.map +1 -0
- package/dist/core/model-resolver-defaults.js +1 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +24 -13
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +2 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager-ui-accessors.d.ts +4 -1
- package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-ui-accessors.js +22 -0
- package/dist/core/settings-manager-ui-accessors.js.map +1 -1
- package/dist/core/settings-types.d.ts +4 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/main-session.d.ts.map +1 -1
- package/dist/main-session.js +3 -2
- package/dist/main-session.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/fast-mode-selector.js +2 -2
- package/dist/modes/interactive/components/fast-mode-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js +3 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +7 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +2 -0
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +2 -1
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +1 -0
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +3 -0
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +15 -1
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +6 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +6 -1
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +3 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +7 -12
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-tui.d.ts +1 -0
- package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-tui.js +16 -0
- package/dist/modes/interactive/interactive-tui.js.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +2 -0
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/docs/compaction.md +1 -1
- package/docs/environment-variables.md +2 -0
- package/docs/extensions.md +1 -1
- package/docs/intercom.md +29 -24
- package/docs/keybindings.md +5 -2
- package/docs/packages.md +1 -1
- package/docs/providers.md +2 -2
- package/docs/sdk.md +9 -7
- package/docs/settings.md +9 -3
- package/docs/subagents.md +2 -2
- package/docs/usage.md +7 -6
- package/docs/workflows.md +11 -7
- package/npm-shrinkwrap.json +59 -77
- package/package.json +7 -7
|
@@ -9224,11 +9224,13 @@ function runSynchronousCallback(descriptor, callback) {
|
|
|
9224
9224
|
}
|
|
9225
9225
|
}
|
|
9226
9226
|
async function runCallback(descriptor, callback) {
|
|
9227
|
+
if (!reporter)
|
|
9228
|
+
return callback();
|
|
9229
|
+
await yieldToEventLoop();
|
|
9227
9230
|
const active = beginActivity(descriptor);
|
|
9228
9231
|
if (!active)
|
|
9229
9232
|
return callback();
|
|
9230
9233
|
try {
|
|
9231
|
-
await yieldToEventLoop();
|
|
9232
9234
|
return await callback();
|
|
9233
9235
|
} finally {
|
|
9234
9236
|
active.reporter.finished(active.activity.id);
|
|
@@ -11960,12 +11962,34 @@ var init_runner_events = __esm(() => {
|
|
|
11960
11962
|
init_callback_activity();
|
|
11961
11963
|
});
|
|
11962
11964
|
|
|
11965
|
+
// src/core/mandatory-runtime-tools.ts
|
|
11966
|
+
function isTrustedMandatoryRuntimeTool(registration) {
|
|
11967
|
+
return MANDATORY_TOOL_NAMES.has(registration.definition.name) && TRUSTED_MANDATORY_DEFINITIONS.has(registration.definition);
|
|
11968
|
+
}
|
|
11969
|
+
function isMandatoryRuntimeTool(name) {
|
|
11970
|
+
return MANDATORY_TOOL_NAMES.has(name);
|
|
11971
|
+
}
|
|
11972
|
+
function appendRegisteredMandatoryTools(tools, registry) {
|
|
11973
|
+
for (const name of MANDATORY_TOOL_NAMES) {
|
|
11974
|
+
const tool = registry.get(name);
|
|
11975
|
+
if (tool && !tools.some((candidate) => candidate.name === name))
|
|
11976
|
+
tools.push(tool);
|
|
11977
|
+
}
|
|
11978
|
+
return tools;
|
|
11979
|
+
}
|
|
11980
|
+
var MANDATORY_TOOL_NAMES, TRUSTED_MANDATORY_DEFINITIONS;
|
|
11981
|
+
var init_mandatory_runtime_tools = __esm(() => {
|
|
11982
|
+
MANDATORY_TOOL_NAMES = new Set(["intercom"]);
|
|
11983
|
+
TRUSTED_MANDATORY_DEFINITIONS = new WeakSet;
|
|
11984
|
+
});
|
|
11985
|
+
|
|
11963
11986
|
// src/core/extensions/runner-registries.ts
|
|
11964
11987
|
function collectRegisteredTools(extensions) {
|
|
11965
11988
|
const toolsByName = new Map;
|
|
11966
11989
|
for (const ext of extensions) {
|
|
11967
11990
|
for (const tool of ext.tools.values()) {
|
|
11968
|
-
|
|
11991
|
+
const existing = toolsByName.get(tool.definition.name);
|
|
11992
|
+
if (!existing || isMandatoryRuntimeTool(tool.definition.name) && isTrustedMandatoryRuntimeTool(tool)) {
|
|
11969
11993
|
toolsByName.set(tool.definition.name, tool);
|
|
11970
11994
|
}
|
|
11971
11995
|
}
|
|
@@ -11973,13 +11997,16 @@ function collectRegisteredTools(extensions) {
|
|
|
11973
11997
|
return Array.from(toolsByName.values());
|
|
11974
11998
|
}
|
|
11975
11999
|
function findToolDefinition(extensions, toolName) {
|
|
12000
|
+
let first;
|
|
11976
12001
|
for (const ext of extensions) {
|
|
11977
12002
|
const tool = ext.tools.get(toolName);
|
|
11978
|
-
if (tool)
|
|
12003
|
+
if (!tool)
|
|
12004
|
+
continue;
|
|
12005
|
+
first ??= tool;
|
|
12006
|
+
if (isMandatoryRuntimeTool(toolName) && isTrustedMandatoryRuntimeTool(tool))
|
|
11979
12007
|
return tool.definition;
|
|
11980
|
-
}
|
|
11981
12008
|
}
|
|
11982
|
-
return;
|
|
12009
|
+
return first?.definition;
|
|
11983
12010
|
}
|
|
11984
12011
|
function collectFlags(extensions) {
|
|
11985
12012
|
const allFlags = new Map;
|
|
@@ -12047,6 +12074,9 @@ function resolveRegisteredCommands(extensions) {
|
|
|
12047
12074
|
return { ...command, invocationName };
|
|
12048
12075
|
});
|
|
12049
12076
|
}
|
|
12077
|
+
var init_runner_registries = __esm(() => {
|
|
12078
|
+
init_mandatory_runtime_tools();
|
|
12079
|
+
});
|
|
12050
12080
|
|
|
12051
12081
|
// src/core/extensions/runner-shortcuts.ts
|
|
12052
12082
|
function resolveExtensionShortcuts(extensions, resolvedKeybindings, hasUI) {
|
|
@@ -12110,6 +12140,7 @@ var init_runner_shortcuts = __esm(() => {
|
|
|
12110
12140
|
"app.thinking.toggle",
|
|
12111
12141
|
"app.editor.external",
|
|
12112
12142
|
"app.message.followUp",
|
|
12143
|
+
"app.message.copy",
|
|
12113
12144
|
"tui.input.submit",
|
|
12114
12145
|
"tui.select.confirm",
|
|
12115
12146
|
"tui.select.cancel",
|
|
@@ -12573,6 +12604,7 @@ var init_runner = __esm(() => {
|
|
|
12573
12604
|
init_loader_runtime();
|
|
12574
12605
|
init_runner_context();
|
|
12575
12606
|
init_runner_events();
|
|
12607
|
+
init_runner_registries();
|
|
12576
12608
|
init_runner_shortcuts();
|
|
12577
12609
|
init_runner_ui();
|
|
12578
12610
|
init_stale_context();
|
|
@@ -14776,11 +14808,13 @@ async function _runAgentContinue() {
|
|
|
14776
14808
|
}
|
|
14777
14809
|
async function _continueQueuedAgentMessages() {
|
|
14778
14810
|
await this._agentEventQueue;
|
|
14779
|
-
while (!this._queuedMessagesPaused && this.agent.hasQueuedMessages()) {
|
|
14811
|
+
while (!this._stopAfterTurnBlockedContinuation && !this._queuedMessagesPaused && this.agent.hasQueuedMessages()) {
|
|
14780
14812
|
await this.agent.continue();
|
|
14781
14813
|
await this.waitForRetry();
|
|
14782
14814
|
await this._agentEventQueue;
|
|
14783
14815
|
}
|
|
14816
|
+
if (this._stopAfterTurnBlockedContinuation)
|
|
14817
|
+
return;
|
|
14784
14818
|
await answerAdmittedQueuedMessage(this);
|
|
14785
14819
|
}
|
|
14786
14820
|
async function answerAdmittedQueuedMessage(session) {
|
|
@@ -16171,14 +16205,13 @@ function getToolDefinition(name) {
|
|
|
16171
16205
|
}
|
|
16172
16206
|
function setActiveToolsByName(toolNames) {
|
|
16173
16207
|
const tools = [];
|
|
16174
|
-
const validToolNames = [];
|
|
16175
16208
|
for (const name of toolNames) {
|
|
16176
16209
|
const tool = this._toolRegistry.get(name);
|
|
16177
|
-
if (tool)
|
|
16210
|
+
if (tool)
|
|
16178
16211
|
tools.push(tool);
|
|
16179
|
-
validToolNames.push(name);
|
|
16180
|
-
}
|
|
16181
16212
|
}
|
|
16213
|
+
appendRegisteredMandatoryTools(tools, this._toolRegistry);
|
|
16214
|
+
const validToolNames = tools.map((tool) => tool.name);
|
|
16182
16215
|
this.agent.state.tools = tools;
|
|
16183
16216
|
this._baseSystemPrompt = this._rebuildSystemPrompt(validToolNames);
|
|
16184
16217
|
this.agent.state.systemPrompt = this._systemPromptOverride ?? this._baseSystemPrompt;
|
|
@@ -16235,7 +16268,7 @@ function _rebuildSystemPrompt(toolNames) {
|
|
|
16235
16268
|
customPrompt: loaderSystemPrompt,
|
|
16236
16269
|
appendSystemPrompt,
|
|
16237
16270
|
selectedTools: validToolNames,
|
|
16238
|
-
excludedTools: this._excludedToolNames ? Array.from(this._excludedToolNames) : undefined,
|
|
16271
|
+
excludedTools: this._excludedToolNames ? Array.from(this._excludedToolNames).filter((name) => !isMandatoryRuntimeTool(name)) : undefined,
|
|
16239
16272
|
toolSnippets,
|
|
16240
16273
|
promptGuidelines
|
|
16241
16274
|
};
|
|
@@ -16248,6 +16281,7 @@ function _refreshBaseSystemPromptFromActiveTools() {
|
|
|
16248
16281
|
}
|
|
16249
16282
|
var agentSessionStateMethods;
|
|
16250
16283
|
var init_agent_session_state = __esm(() => {
|
|
16284
|
+
init_mandatory_runtime_tools();
|
|
16251
16285
|
init_skill_catalog();
|
|
16252
16286
|
init_system_prompt();
|
|
16253
16287
|
agentSessionStateMethods = {
|
|
@@ -17275,6 +17309,17 @@ function _installAgentToolHooks() {
|
|
|
17275
17309
|
}
|
|
17276
17310
|
function _installAgentNextTurnRefresh() {
|
|
17277
17311
|
const previousPrepareNextTurnWithContext = this.agent.prepareNextTurnWithContext ?? (this.agent.prepareNextTurn ? async (_turn, signal) => await this.agent.prepareNextTurn?.(signal) : undefined);
|
|
17312
|
+
const previousShouldStopAfterTurn = this.agent.shouldStopAfterTurn;
|
|
17313
|
+
this.agent.shouldStopAfterTurn = async (turn, signal) => {
|
|
17314
|
+
const toolCallIds = turn.message.content.filter((part) => part.type === "toolCall").map((part) => part.id);
|
|
17315
|
+
const terminatingBatch = toolCallIds.length > 0 && toolCallIds.every((id) => this._terminatingToolCallIds.has(id));
|
|
17316
|
+
for (const id of toolCallIds)
|
|
17317
|
+
this._terminatingToolCallIds.delete(id);
|
|
17318
|
+
const shouldStop = await previousShouldStopAfterTurn?.(turn, signal) ?? false;
|
|
17319
|
+
this._stopAfterTurnBlockedContinuation = shouldStop;
|
|
17320
|
+
await settleFallbackAfterTurn(this, turn, terminatingBatch);
|
|
17321
|
+
return shouldStop;
|
|
17322
|
+
};
|
|
17278
17323
|
const previousTransformContext = this.agent.transformContext;
|
|
17279
17324
|
this.agent.transformContext = async (messages, signal) => {
|
|
17280
17325
|
const transformed = previousTransformContext ? await previousTransformContext(messages, signal) : messages;
|
|
@@ -17282,24 +17327,17 @@ function _installAgentNextTurnRefresh() {
|
|
|
17282
17327
|
assertToolPairingInvariant(guarded);
|
|
17283
17328
|
return guarded;
|
|
17284
17329
|
};
|
|
17285
|
-
|
|
17286
|
-
const
|
|
17287
|
-
const
|
|
17288
|
-
const
|
|
17289
|
-
const
|
|
17290
|
-
|
|
17291
|
-
this._terminatingToolCallIds.delete(id);
|
|
17292
|
-
const messages = turn.toolResults.length > 0 && !terminatingBatch ? await this._preflightPostToolContext(previousContext.messages, signal) : previousContext.messages;
|
|
17293
|
-
const preserveFallbackForFailure = turn.message.role === "assistant" && !this.agent.hasQueuedMessages() && (turn.message.stopReason === "length" || this._isEmptyCompletion?.(turn.message) === true || this._isSafetyRefusal?.(turn.message) === true);
|
|
17294
|
-
if (!preserveFallbackForFailure && (turn.toolResults.length === 0 || terminatingBatch)) {
|
|
17295
|
-
await this._agentEventQueue;
|
|
17296
|
-
await this._settleFallbackModelScope();
|
|
17297
|
-
}
|
|
17330
|
+
const prepareTurn = async (turn, signal) => {
|
|
17331
|
+
const compactedMessages = turn.toolResults.length > 0 ? await this._preflightPostToolContext(turn.context.messages, signal) : turn.context.messages;
|
|
17332
|
+
const compactedContext = compactedMessages === turn.context.messages ? turn.context : { ...turn.context, messages: compactedMessages };
|
|
17333
|
+
const preparedTurn = compactedContext === turn.context ? turn : { ...turn, context: compactedContext };
|
|
17334
|
+
const previousSnapshot = await previousPrepareNextTurnWithContext?.(preparedTurn, signal);
|
|
17335
|
+
const previousContext = previousSnapshot?.context ?? compactedContext;
|
|
17298
17336
|
return {
|
|
17299
17337
|
...previousSnapshot,
|
|
17300
17338
|
context: {
|
|
17301
17339
|
...previousContext,
|
|
17302
|
-
messages,
|
|
17340
|
+
messages: previousContext.messages,
|
|
17303
17341
|
systemPrompt: this._systemPromptOverride ?? this._baseSystemPrompt,
|
|
17304
17342
|
tools: this.agent.state.tools.slice()
|
|
17305
17343
|
},
|
|
@@ -17307,6 +17345,14 @@ function _installAgentNextTurnRefresh() {
|
|
|
17307
17345
|
thinkingLevel: this.agent.state.thinkingLevel
|
|
17308
17346
|
};
|
|
17309
17347
|
};
|
|
17348
|
+
this.agent.prepareNextTurnWithContext = prepareTurn;
|
|
17349
|
+
}
|
|
17350
|
+
async function settleFallbackAfterTurn(session, turn, terminatingBatch) {
|
|
17351
|
+
const preserveFallbackForFailure = turn.message.role === "assistant" && !session.agent.hasQueuedMessages() && (turn.message.stopReason === "length" || session._isEmptyCompletion?.(turn.message) === true || session._isSafetyRefusal?.(turn.message) === true);
|
|
17352
|
+
if (!preserveFallbackForFailure && (turn.toolResults.length === 0 || terminatingBatch)) {
|
|
17353
|
+
await session._agentEventQueue;
|
|
17354
|
+
await session._settleFallbackModelScope();
|
|
17355
|
+
}
|
|
17310
17356
|
}
|
|
17311
17357
|
var agentSessionToolHooksMethods;
|
|
17312
17358
|
var init_agent_session_tool_hooks = __esm(() => {
|
|
@@ -17389,6 +17435,7 @@ var init_loader_virtual_modules = __esm(() => {
|
|
|
17389
17435
|
});
|
|
17390
17436
|
|
|
17391
17437
|
// src/core/extensions/loader-core.ts
|
|
17438
|
+
var runtimeEventBuses;
|
|
17392
17439
|
var init_loader_core = __esm(() => {
|
|
17393
17440
|
init_event_loop();
|
|
17394
17441
|
init_paths();
|
|
@@ -17398,6 +17445,7 @@ var init_loader_core = __esm(() => {
|
|
|
17398
17445
|
init_loader_resources();
|
|
17399
17446
|
init_loader_runtime();
|
|
17400
17447
|
init_loader_virtual_modules();
|
|
17448
|
+
runtimeEventBuses = new WeakMap;
|
|
17401
17449
|
});
|
|
17402
17450
|
|
|
17403
17451
|
// src/core/package-manager-manifest.ts
|
|
@@ -22491,7 +22539,7 @@ class FastModeSelectorComponent {
|
|
|
22491
22539
|
}
|
|
22492
22540
|
invalidate() {}
|
|
22493
22541
|
render(width) {
|
|
22494
|
-
const lines = [truncateToWidth10(theme.bold(theme.fg("accent", "
|
|
22542
|
+
const lines = [truncateToWidth10(theme.bold(theme.fg("accent", "Fast mode")), width)];
|
|
22495
22543
|
for (const line of wrapTextWithAnsi3(DESCRIPTION, Math.max(20, width))) {
|
|
22496
22544
|
lines.push(theme.fg("muted", line));
|
|
22497
22545
|
}
|
|
@@ -22574,7 +22622,7 @@ class FastModeSelectorComponent {
|
|
|
22574
22622
|
return this.getFocusedRow() === row ? theme.fg("muted", text) : theme.fg("dim", text);
|
|
22575
22623
|
}
|
|
22576
22624
|
}
|
|
22577
|
-
var ROWS, LABEL_WIDTH = 16, DESCRIPTION = "
|
|
22625
|
+
var ROWS, LABEL_WIDTH = 16, DESCRIPTION = "Use faster routing for the selected model when supported by its provider.", ROW_DETAILS;
|
|
22578
22626
|
var init_fast_mode_selector = __esm(() => {
|
|
22579
22627
|
init_theme();
|
|
22580
22628
|
ROWS = ["chat", "workflow"];
|
|
@@ -23801,6 +23849,10 @@ var init_keybindings = __esm(() => {
|
|
|
23801
23849
|
defaultKeys: windowsKeybindings ? "alt+q" : "alt+up",
|
|
23802
23850
|
description: "Restore queued messages"
|
|
23803
23851
|
},
|
|
23852
|
+
"app.message.copy": {
|
|
23853
|
+
defaultKeys: "ctrl+x",
|
|
23854
|
+
description: "Copy fullscreen selection or last agent message"
|
|
23855
|
+
},
|
|
23804
23856
|
"app.clipboard.pasteImage": {
|
|
23805
23857
|
defaultKeys: windowsKeybindings ? "alt+v" : "ctrl+v",
|
|
23806
23858
|
description: "Paste image from clipboard (text fallback)"
|
|
@@ -25186,6 +25238,9 @@ function createSettingsChangeHandler(callbacks) {
|
|
|
25186
25238
|
case "fullscreen-exit-output":
|
|
25187
25239
|
callbacks.onFullscreenExitOutputChange(newValue);
|
|
25188
25240
|
break;
|
|
25241
|
+
case "fullscreen-copy-on-select":
|
|
25242
|
+
callbacks.onFullscreenCopyOnSelectChange(newValue === "true");
|
|
25243
|
+
break;
|
|
25189
25244
|
case "editor-padding":
|
|
25190
25245
|
callbacks.onEditorPaddingXChange(parseInt(newValue, 10));
|
|
25191
25246
|
break;
|
|
@@ -25573,6 +25628,13 @@ function insertUiToggles(items, config) {
|
|
|
25573
25628
|
values: ["transcript", "resume-hint"]
|
|
25574
25629
|
});
|
|
25575
25630
|
insertAfter(items, "fullscreen-exit-output", {
|
|
25631
|
+
id: "fullscreen-copy-on-select",
|
|
25632
|
+
label: "Fullscreen copy on select",
|
|
25633
|
+
description: "Copy selected transcript text automatically on mouse release",
|
|
25634
|
+
currentValue: config.fullscreenCopyOnSelect ? "true" : "false",
|
|
25635
|
+
values: ["true", "false"]
|
|
25636
|
+
});
|
|
25637
|
+
insertAfter(items, "fullscreen-copy-on-select", {
|
|
25576
25638
|
id: "editor-padding",
|
|
25577
25639
|
label: "Editor padding",
|
|
25578
25640
|
description: "Horizontal padding for input editor (0-3)",
|
|
@@ -38647,6 +38709,8 @@ function _refreshToolRegistry(options) {
|
|
|
38647
38709
|
const allowedToolNames = this._allowedToolNames;
|
|
38648
38710
|
const excludedToolNames = this._excludedToolNames;
|
|
38649
38711
|
const isExposedTool = (name) => {
|
|
38712
|
+
if (isMandatoryRuntimeTool(name))
|
|
38713
|
+
return true;
|
|
38650
38714
|
if (allowedToolNames && !allowedToolNames.has(name)) {
|
|
38651
38715
|
return false;
|
|
38652
38716
|
}
|
|
@@ -38655,10 +38719,10 @@ function _refreshToolRegistry(options) {
|
|
|
38655
38719
|
}
|
|
38656
38720
|
return true;
|
|
38657
38721
|
};
|
|
38658
|
-
const registeredTools = this._extensionRunner.getAllRegisteredTools();
|
|
38722
|
+
const registeredTools = this._extensionRunner.getAllRegisteredTools().filter((tool) => !isMandatoryRuntimeTool(tool.definition.name) || isTrustedMandatoryRuntimeTool(tool));
|
|
38659
38723
|
const allCustomTools = [
|
|
38660
38724
|
...registeredTools,
|
|
38661
|
-
...this._customTools.map((definition) => ({
|
|
38725
|
+
...this._customTools.filter((definition) => !isMandatoryRuntimeTool(definition.name)).map((definition) => ({
|
|
38662
38726
|
definition,
|
|
38663
38727
|
sourceInfo: createSyntheticSourceInfo(`<sdk:${definition.name}>`, { source: "sdk" })
|
|
38664
38728
|
}))
|
|
@@ -38779,6 +38843,7 @@ function _buildRuntime(options) {
|
|
|
38779
38843
|
var agentSessionToolRegistryMethods;
|
|
38780
38844
|
var init_agent_session_tool_registry = __esm(() => {
|
|
38781
38845
|
init_extensions();
|
|
38846
|
+
init_mandatory_runtime_tools();
|
|
38782
38847
|
init_model_registry();
|
|
38783
38848
|
init_tools();
|
|
38784
38849
|
init_session_temp_dir();
|
|
@@ -39621,6 +39686,7 @@ class AgentSessionBase {
|
|
|
39621
39686
|
_postToolCompactionPreflightError = undefined;
|
|
39622
39687
|
_pendingPostToolCompactionGuard = undefined;
|
|
39623
39688
|
_terminatingToolCallIds = new Set;
|
|
39689
|
+
_stopAfterTurnBlockedContinuation = false;
|
|
39624
39690
|
_disposed = false;
|
|
39625
39691
|
_branchSummaryAbortController = undefined;
|
|
39626
39692
|
_sessionSummaryAbortController = undefined;
|
|
@@ -39769,11 +39835,12 @@ var init_builtin_packages = __esm(() => {
|
|
|
39769
39835
|
{ packageName: "@bastani/subagents", workspaceDirName: "subagents", distDirName: "subagents" },
|
|
39770
39836
|
{ packageName: "@bastani/mcp", workspaceDirName: "mcp", distDirName: "mcp" },
|
|
39771
39837
|
{ packageName: "@bastani/web-access", workspaceDirName: "web-access", distDirName: "web-access" },
|
|
39772
|
-
{ packageName: "@bastani/intercom", workspaceDirName: "intercom", distDirName: "intercom" }
|
|
39838
|
+
{ packageName: "@bastani/intercom", workspaceDirName: "intercom", distDirName: "intercom", mandatory: true }
|
|
39773
39839
|
];
|
|
39774
39840
|
BUILTIN_PACKAGES = WORKSPACE_BUILTINS.map((spec) => ({
|
|
39775
39841
|
packageName: spec.packageName,
|
|
39776
39842
|
distDirName: spec.distDirName,
|
|
39843
|
+
mandatory: spec.mandatory === true,
|
|
39777
39844
|
requiredEntries: requiredEntriesForBuiltin(spec.distDirName),
|
|
39778
39845
|
sourceCandidates: ({ here, packageDir, isSourceCheckout }) => isSourceCheckout ? [join37(packageDir, "..", spec.workspaceDirName), join37(here, "..", "..", "..", spec.workspaceDirName)] : []
|
|
39779
39846
|
}));
|
|
@@ -43238,7 +43305,9 @@ var init_resource_loader_extensions = __esm(() => {
|
|
|
43238
43305
|
var init_resource_loader_reload = __esm(() => {
|
|
43239
43306
|
init_event_loop();
|
|
43240
43307
|
init_paths();
|
|
43308
|
+
init_builtin_packages();
|
|
43241
43309
|
init_loader();
|
|
43310
|
+
init_mandatory_runtime_tools();
|
|
43242
43311
|
init_resource_loader_assets();
|
|
43243
43312
|
init_resource_loader_context_files();
|
|
43244
43313
|
init_resource_loader_discovery();
|
|
@@ -44395,6 +44464,28 @@ var init_settings_manager_ui_accessors = __esm(() => {
|
|
|
44395
44464
|
state.markModified("fullscreenExitOutput");
|
|
44396
44465
|
state.save();
|
|
44397
44466
|
},
|
|
44467
|
+
getFullscreenCopyOnSelect() {
|
|
44468
|
+
return settingsInternals(this).settings.fullscreenCopyOnSelect !== false;
|
|
44469
|
+
},
|
|
44470
|
+
setFullscreenCopyOnSelect(enabled) {
|
|
44471
|
+
const state = settingsInternals(this);
|
|
44472
|
+
state.globalSettings.fullscreenCopyOnSelect = enabled;
|
|
44473
|
+
state.markModified("fullscreenCopyOnSelect");
|
|
44474
|
+
state.save();
|
|
44475
|
+
},
|
|
44476
|
+
getTerminalCapabilityOverrides() {
|
|
44477
|
+
const terminal = settingsInternals(this).settings.terminal;
|
|
44478
|
+
const overrides = {};
|
|
44479
|
+
if (typeof terminal?.hyperlinks === "boolean")
|
|
44480
|
+
overrides.hyperlinks = terminal.hyperlinks;
|
|
44481
|
+
if (terminal?.images === "kitty" || terminal?.images === "iterm2")
|
|
44482
|
+
overrides.images = terminal.images;
|
|
44483
|
+
else if (terminal?.images === false)
|
|
44484
|
+
overrides.images = null;
|
|
44485
|
+
if (typeof terminal?.trueColor === "boolean")
|
|
44486
|
+
overrides.trueColor = terminal.trueColor;
|
|
44487
|
+
return overrides;
|
|
44488
|
+
},
|
|
44398
44489
|
getEditorPaddingX() {
|
|
44399
44490
|
return settingsInternals(this).settings.editorPaddingX ?? 0;
|
|
44400
44491
|
},
|
|
@@ -44540,6 +44631,14 @@ var init_resource_loader = __esm(() => {
|
|
|
44540
44631
|
init_resource_loader_core();
|
|
44541
44632
|
init_skill_catalog();
|
|
44542
44633
|
});
|
|
44634
|
+
// src/core/mandatory-resource-loader.ts
|
|
44635
|
+
var init_mandatory_resource_loader = __esm(() => {
|
|
44636
|
+
init_builtin_packages();
|
|
44637
|
+
init_loader();
|
|
44638
|
+
init_mandatory_runtime_tools();
|
|
44639
|
+
init_skill_catalog();
|
|
44640
|
+
});
|
|
44641
|
+
|
|
44543
44642
|
// src/core/model-resolver-defaults.ts
|
|
44544
44643
|
function findPreferredAvailableModel(availableModels) {
|
|
44545
44644
|
for (const [provider, defaultId] of Object.entries(defaultModelPerProvider)) {
|
|
@@ -44580,7 +44679,7 @@ var init_model_resolver_defaults = __esm(() => {
|
|
|
44580
44679
|
huggingface: "moonshotai/Kimi-K2.6",
|
|
44581
44680
|
fireworks: "accounts/fireworks/models/kimi-k2p6",
|
|
44582
44681
|
together: "moonshotai/Kimi-K2.6",
|
|
44583
|
-
baseten: "zai-org/GLM-5.
|
|
44682
|
+
baseten: "zai-org/GLM-5.3",
|
|
44584
44683
|
opencode: "kimi-k2.6",
|
|
44585
44684
|
"opencode-go": "kimi-k2.6",
|
|
44586
44685
|
"kimi-coding": "kimi-for-coding",
|
|
@@ -45238,6 +45337,7 @@ var init_session_cwd = __esm(() => {
|
|
|
45238
45337
|
var init_agent_session_services = __esm(() => {
|
|
45239
45338
|
init_config();
|
|
45240
45339
|
init_paths();
|
|
45340
|
+
init_mandatory_resource_loader();
|
|
45241
45341
|
init_model_runtime();
|
|
45242
45342
|
init_resource_loader();
|
|
45243
45343
|
init_sdk();
|
|
@@ -45574,6 +45674,7 @@ var init_sdk = __esm(() => {
|
|
|
45574
45674
|
init_agent_session();
|
|
45575
45675
|
init_auth_guidance();
|
|
45576
45676
|
init_codex_fast_mode();
|
|
45677
|
+
init_mandatory_resource_loader();
|
|
45577
45678
|
init_messages();
|
|
45578
45679
|
init_model_resolver();
|
|
45579
45680
|
init_model_runtime();
|
|
@@ -45677,7 +45778,12 @@ var init_list_models = __esm(() => {
|
|
|
45677
45778
|
});
|
|
45678
45779
|
|
|
45679
45780
|
// src/cli/startup-ui.ts
|
|
45680
|
-
import {
|
|
45781
|
+
import {
|
|
45782
|
+
ProcessTerminal,
|
|
45783
|
+
setCapabilityOverrides,
|
|
45784
|
+
setKeybindings,
|
|
45785
|
+
TuiMainScreen
|
|
45786
|
+
} from "@earendil-works/pi-tui";
|
|
45681
45787
|
var init_startup_ui = __esm(() => {
|
|
45682
45788
|
init_config();
|
|
45683
45789
|
init_keybindings();
|
|
@@ -45765,7 +45871,7 @@ var init_main_first_time_setup = __esm(() => {
|
|
|
45765
45871
|
init_startup_ui();
|
|
45766
45872
|
});
|
|
45767
45873
|
// src/cli/session-picker.ts
|
|
45768
|
-
import { ProcessTerminal as ProcessTerminal2, setKeybindings as setKeybindings2, TuiMainScreen as TuiMainScreen2 } from "@earendil-works/pi-tui";
|
|
45874
|
+
import { ProcessTerminal as ProcessTerminal2, setCapabilityOverrides as setCapabilityOverrides2, setKeybindings as setKeybindings2, TuiMainScreen as TuiMainScreen2 } from "@earendil-works/pi-tui";
|
|
45769
45875
|
var init_session_picker = __esm(() => {
|
|
45770
45876
|
init_config();
|
|
45771
45877
|
init_keybindings();
|
|
@@ -45773,7 +45879,7 @@ var init_session_picker = __esm(() => {
|
|
|
45773
45879
|
});
|
|
45774
45880
|
|
|
45775
45881
|
// src/main-session.ts
|
|
45776
|
-
import { ProcessTerminal as ProcessTerminal3, setKeybindings as setKeybindings3, TuiMainScreen as TuiMainScreen3 } from "@earendil-works/pi-tui";
|
|
45882
|
+
import { ProcessTerminal as ProcessTerminal3, setCapabilityOverrides as setCapabilityOverrides3, setKeybindings as setKeybindings3, TuiMainScreen as TuiMainScreen3 } from "@earendil-works/pi-tui";
|
|
45777
45883
|
import chalk10 from "chalk";
|
|
45778
45884
|
var init_main_session = __esm(() => {
|
|
45779
45885
|
init_session_picker();
|
|
@@ -48591,7 +48697,7 @@ var init_slash_commands = __esm(() => {
|
|
|
48591
48697
|
{ name: "tree", description: "Navigate session tree (switch branches)" },
|
|
48592
48698
|
{ name: "thinking", description: "Set thinking level", argumentHint: "<level>" },
|
|
48593
48699
|
{ name: "scoped-models", description: "Enable/disable models for ctrl+p cycling" },
|
|
48594
|
-
{ name: "fast", description: "Configure
|
|
48700
|
+
{ name: "fast", description: "Configure fast mode for chat and workflows on supported models" },
|
|
48595
48701
|
{ name: "export", description: "Export session (HTML default, or specify path: .html/.jsonl)" },
|
|
48596
48702
|
{ name: "import", description: "Import and resume a session from a JSONL file" },
|
|
48597
48703
|
{ name: "share", description: "Share session as a secret GitHub gist" },
|
|
@@ -49217,6 +49323,7 @@ function createFullscreenTui(options) {
|
|
|
49217
49323
|
openUrl: openBrowser
|
|
49218
49324
|
}),
|
|
49219
49325
|
onRightClickPaste: options.onRightClickPaste,
|
|
49326
|
+
copyOnSelect: options.copyOnSelect,
|
|
49220
49327
|
copySelection: options.copySelection ?? copySelectionToHostClipboard
|
|
49221
49328
|
}, options.shouldHandleViewportInput, options.onOverlayUnhandledInput);
|
|
49222
49329
|
}
|
|
@@ -49258,7 +49365,7 @@ function createInteractiveTuiReference(getTui) {
|
|
|
49258
49365
|
getPrototypeOf: () => Reflect.getPrototypeOf(getTui())
|
|
49259
49366
|
});
|
|
49260
49367
|
}
|
|
49261
|
-
var viewportInputListeners, viewportInputGates, overlayUnhandledInputHandlers, viewportInputReplays, viewportInputSubscriptions, SGR_MOUSE_SEQUENCE, LEFT_MOUSE_MODIFIER_MASK, AtomicTuiAltScreen, AtomicTuiMainScreen;
|
|
49368
|
+
var viewportInputListeners, viewportInputGates, overlayUnhandledInputHandlers, viewportInputReplays, overlayOwnedSelections, viewportInputSubscriptions, SGR_MOUSE_SEQUENCE, LEFT_MOUSE_MODIFIER_MASK, AtomicTuiAltScreen, AtomicTuiMainScreen;
|
|
49262
49369
|
var init_interactive_tui = __esm(() => {
|
|
49263
49370
|
init_clipboard();
|
|
49264
49371
|
init_open_browser();
|
|
@@ -49267,6 +49374,7 @@ var init_interactive_tui = __esm(() => {
|
|
|
49267
49374
|
viewportInputGates = new WeakMap;
|
|
49268
49375
|
overlayUnhandledInputHandlers = new WeakMap;
|
|
49269
49376
|
viewportInputReplays = new WeakSet;
|
|
49377
|
+
overlayOwnedSelections = new WeakSet;
|
|
49270
49378
|
viewportInputSubscriptions = new WeakMap;
|
|
49271
49379
|
SGR_MOUSE_SEQUENCE = /^\x1b\[<(\d+);\d+;\d+([Mm])/;
|
|
49272
49380
|
LEFT_MOUSE_MODIFIER_MASK = 4 | 8 | 16;
|
|
@@ -49282,8 +49390,20 @@ var init_interactive_tui = __esm(() => {
|
|
|
49282
49390
|
deferral.shouldDeferViewportInputToOverlay = () => !viewportInputReplays.has(this) && deferToOverlay?.() === true;
|
|
49283
49391
|
}
|
|
49284
49392
|
applyLineResets(lines) {
|
|
49393
|
+
if (overlayOwnedSelections.has(this) && !this.isFocusedOverlay())
|
|
49394
|
+
this.clearOverlayOwnedSelection();
|
|
49285
49395
|
return stripOverlayActiveRowMarker(super.applyLineResets(lines));
|
|
49286
49396
|
}
|
|
49397
|
+
clearOverlayOwnedSelection() {
|
|
49398
|
+
const selection = this;
|
|
49399
|
+
selection.selectionAnchor = undefined;
|
|
49400
|
+
selection.selectionFocus = undefined;
|
|
49401
|
+
selection.selectionInitialRange = undefined;
|
|
49402
|
+
selection.selectionPressActive = false;
|
|
49403
|
+
selection.selectionDragged = false;
|
|
49404
|
+
selection.lastClick = undefined;
|
|
49405
|
+
overlayOwnedSelections.delete(this);
|
|
49406
|
+
}
|
|
49287
49407
|
isPiTuiMouseSequence(data) {
|
|
49288
49408
|
if (parseMouseSequences(data))
|
|
49289
49409
|
return true;
|
|
@@ -49360,6 +49480,7 @@ var init_interactive_tui = __esm(() => {
|
|
|
49360
49480
|
if (isLeftMouseButton(sequence))
|
|
49361
49481
|
viewportListener(sequence.data);
|
|
49362
49482
|
}
|
|
49483
|
+
overlayOwnedSelections.add(this);
|
|
49363
49484
|
}
|
|
49364
49485
|
replayViewportInput(viewportListener, data) {
|
|
49365
49486
|
viewportInputReplays.add(this);
|
|
@@ -49427,7 +49548,11 @@ var init_interactive_tui = __esm(() => {
|
|
|
49427
49548
|
});
|
|
49428
49549
|
|
|
49429
49550
|
// src/modes/interactive/interactive-mode-base.ts
|
|
49430
|
-
import {
|
|
49551
|
+
import {
|
|
49552
|
+
isKeyRelease as isKeyRelease3,
|
|
49553
|
+
isViewportTUI,
|
|
49554
|
+
setCapabilityOverrides as setCapabilityOverrides4
|
|
49555
|
+
} from "@earendil-works/pi-tui";
|
|
49431
49556
|
function isFullscreenViewportAction(data, keybindings) {
|
|
49432
49557
|
return FULLSCREEN_VIEWPORT_ACTIONS.some((action) => keybindings.matches(data, action));
|
|
49433
49558
|
}
|
|
@@ -49488,6 +49613,18 @@ class InteractiveModeBase {
|
|
|
49488
49613
|
return false;
|
|
49489
49614
|
return this.defaultEditor.handleInput(data);
|
|
49490
49615
|
}
|
|
49616
|
+
setFullscreenCopyOnSelect(enabled) {
|
|
49617
|
+
if (this.renderer.mode === "fullscreen")
|
|
49618
|
+
this.renderer.setCopyOnSelect(enabled);
|
|
49619
|
+
}
|
|
49620
|
+
getFullscreenCopyOnSelect() {
|
|
49621
|
+
return this.renderer.mode === "fullscreen" ? this.renderer.getCopyOnSelect() : undefined;
|
|
49622
|
+
}
|
|
49623
|
+
async copyActiveFullscreenSelection() {
|
|
49624
|
+
if (this.renderer.mode !== "fullscreen" || !this.renderer.hasActiveSelection())
|
|
49625
|
+
return;
|
|
49626
|
+
return this.renderer.copyActiveSelectionToClipboard();
|
|
49627
|
+
}
|
|
49491
49628
|
onRightClickPaste = () => {
|
|
49492
49629
|
this.handleRightClickPaste();
|
|
49493
49630
|
};
|
|
@@ -49687,11 +49824,13 @@ class InteractiveModeBase {
|
|
|
49687
49824
|
await this.rebindCurrentSession();
|
|
49688
49825
|
await this.themeController.applyFromSettings();
|
|
49689
49826
|
});
|
|
49827
|
+
setCapabilityOverrides4(this.settingsManager.getTerminalCapabilityOverrides());
|
|
49690
49828
|
this.version = VERSION;
|
|
49691
49829
|
this.renderer = createInteractiveTui({
|
|
49692
49830
|
showHardwareCursor: this.settingsManager.getShowHardwareCursor(),
|
|
49693
49831
|
logDirectory: runtimeHost.services.agentDir,
|
|
49694
49832
|
terminal: options.terminal,
|
|
49833
|
+
copyOnSelect: this.settingsManager.getFullscreenCopyOnSelect(),
|
|
49695
49834
|
onRightClickPaste: this.onRightClickPaste,
|
|
49696
49835
|
shouldHandleViewportInput: this.shouldHandleViewportInput,
|
|
49697
49836
|
onOverlayUnhandledInput: this.onOverlayUnhandledInput,
|
|
@@ -50814,6 +50953,7 @@ var init_interactive_deferred_startup = __esm(() => {
|
|
|
50814
50953
|
try {
|
|
50815
50954
|
await this.bindCurrentSessionExtensions();
|
|
50816
50955
|
await this.session.reload({ reason: "startup" });
|
|
50956
|
+
this.applyRuntimeSettings();
|
|
50817
50957
|
this.rebuildChatFromMessages();
|
|
50818
50958
|
if (!this.promptTurnWorkingLoaderActive) {
|
|
50819
50959
|
this.stopWorkingLoader();
|
|
@@ -51502,6 +51642,7 @@ ${warningLines}`, 0, 0));
|
|
|
51502
51642
|
});
|
|
51503
51643
|
|
|
51504
51644
|
// src/modes/interactive/interactive-session-runtime.ts
|
|
51645
|
+
import { setCapabilityOverrides as setCapabilityOverrides5 } from "@earendil-works/pi-tui";
|
|
51505
51646
|
var init_interactive_session_runtime = __esm(() => {
|
|
51506
51647
|
init_interactive_mode_base();
|
|
51507
51648
|
init_interactive_mode_deps();
|
|
@@ -51588,6 +51729,8 @@ var init_interactive_session_runtime = __esm(() => {
|
|
|
51588
51729
|
}
|
|
51589
51730
|
};
|
|
51590
51731
|
InteractiveModeBase.prototype.applyRuntimeSettings = function() {
|
|
51732
|
+
setCapabilityOverrides5(this.settingsManager.getTerminalCapabilityOverrides());
|
|
51733
|
+
this.setFullscreenCopyOnSelect(this.settingsManager.getFullscreenCopyOnSelect());
|
|
51591
51734
|
this.transcriptScrollView?.setScrollbar(this.settingsManager.getFullscreenScrollbar());
|
|
51592
51735
|
this.footer.setSession(this.session);
|
|
51593
51736
|
this.usageMeter.setSession(this.session);
|
|
@@ -53104,6 +53247,9 @@ var init_interactive_input_handling = __esm(() => {
|
|
|
53104
53247
|
});
|
|
53105
53248
|
this.defaultEditor.onAction("app.message.followUp", () => this.handleFollowUp());
|
|
53106
53249
|
this.defaultEditor.onAction("app.message.dequeue", () => this.handleDequeue());
|
|
53250
|
+
this.defaultEditor.onAction("app.message.copy", () => {
|
|
53251
|
+
this.handleCopyCommand({ preferSelection: true });
|
|
53252
|
+
});
|
|
53107
53253
|
this.defaultEditor.onAction("app.session.new", () => this.handleClearCommand());
|
|
53108
53254
|
this.defaultEditor.onAction("app.session.tree", () => this.showTreeSelector());
|
|
53109
53255
|
this.defaultEditor.onAction("app.session.fork", () => this.showUserMessageSelector());
|
|
@@ -54011,7 +54157,8 @@ var init_interactive_agent_events = __esm(() => {
|
|
|
54011
54157
|
} else if (event.reason === "manual") {
|
|
54012
54158
|
this.manualCompactionTakeoverPending = false;
|
|
54013
54159
|
}
|
|
54014
|
-
|
|
54160
|
+
const resumesActiveRun = event.midTurn && !event.aborted && !event.errorMessage && !manualTakeoverPending;
|
|
54161
|
+
if (!manualTakeoverPending && !resumesActiveRun && this.settingsManager.getShowTerminalProgress()) {
|
|
54015
54162
|
this.ui.terminal.setProgress(false);
|
|
54016
54163
|
}
|
|
54017
54164
|
if (!manualTakeoverPending && this.autoCompactionEscapeHandlerSaved) {
|
|
@@ -55027,7 +55174,7 @@ var init_interactive_selectors = __esm(() => {
|
|
|
55027
55174
|
};
|
|
55028
55175
|
InteractiveModeBase.prototype.showFastModeSelector = function() {
|
|
55029
55176
|
if (!this.hasCodexFastModeSupportedModels()) {
|
|
55030
|
-
this.showWarning("
|
|
55177
|
+
this.showWarning("Fast mode isn't available for any configured model.");
|
|
55031
55178
|
return;
|
|
55032
55179
|
}
|
|
55033
55180
|
this.showSelector((done) => {
|
|
@@ -55086,6 +55233,7 @@ var init_interactive_selectors = __esm(() => {
|
|
|
55086
55233
|
showHardwareCursor: this.settingsManager.getShowHardwareCursor(),
|
|
55087
55234
|
fullscreenScrollbar: this.settingsManager.getFullscreenScrollbar(),
|
|
55088
55235
|
fullscreenExitOutput: this.settingsManager.getFullscreenExitOutput(),
|
|
55236
|
+
fullscreenCopyOnSelect: this.settingsManager.getFullscreenCopyOnSelect(),
|
|
55089
55237
|
editorPaddingX: this.settingsManager.getEditorPaddingX(),
|
|
55090
55238
|
outputPad: this.settingsManager.getOutputPad(),
|
|
55091
55239
|
showCacheMissNotices: this.settingsManager.getShowCacheMissNotices(),
|
|
@@ -55203,6 +55351,10 @@ var init_interactive_selectors = __esm(() => {
|
|
|
55203
55351
|
onFullscreenExitOutputChange: (output) => {
|
|
55204
55352
|
this.settingsManager.setFullscreenExitOutput(output);
|
|
55205
55353
|
},
|
|
55354
|
+
onFullscreenCopyOnSelectChange: (enabled) => {
|
|
55355
|
+
this.settingsManager.setFullscreenCopyOnSelect(enabled);
|
|
55356
|
+
this.setFullscreenCopyOnSelect(enabled);
|
|
55357
|
+
},
|
|
55206
55358
|
onEditorPaddingXChange: (padding) => {
|
|
55207
55359
|
this.settingsManager.setEditorPaddingX(padding);
|
|
55208
55360
|
this.defaultEditor.setPaddingX(padding);
|
|
@@ -56189,18 +56341,8 @@ var init_interactive_slash_commands = __esm(() => {
|
|
|
56189
56341
|
activeHeader.setExpanded(this.toolOutputExpanded);
|
|
56190
56342
|
}
|
|
56191
56343
|
setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
|
|
56192
|
-
this.
|
|
56344
|
+
this.applyRuntimeSettings();
|
|
56193
56345
|
await this.themeController.applyFromSettings();
|
|
56194
|
-
const editorPaddingX = this.settingsManager.getEditorPaddingX();
|
|
56195
|
-
const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
|
|
56196
|
-
this.defaultEditor.setPaddingX(editorPaddingX);
|
|
56197
|
-
this.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);
|
|
56198
|
-
if (this.editor !== this.defaultEditor) {
|
|
56199
|
-
this.editor.setPaddingX?.(editorPaddingX);
|
|
56200
|
-
this.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);
|
|
56201
|
-
}
|
|
56202
|
-
this.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());
|
|
56203
|
-
this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
|
|
56204
56346
|
this.setupAutocompleteProvider();
|
|
56205
56347
|
const runner = this.session.extensionRunner;
|
|
56206
56348
|
this.setupExtensionShortcuts(runner);
|
|
@@ -56393,7 +56535,12 @@ Gist: ${hyperlink3(gistUrl, gistUrl)}`);
|
|
|
56393
56535
|
}
|
|
56394
56536
|
}
|
|
56395
56537
|
};
|
|
56396
|
-
InteractiveModeBase.prototype.handleCopyCommand = async function() {
|
|
56538
|
+
InteractiveModeBase.prototype.handleCopyCommand = async function(options = {}) {
|
|
56539
|
+
if (options.preferSelection && this.getFullscreenCopyOnSelect() === false) {
|
|
56540
|
+
const selectionCopied = await this.copyActiveFullscreenSelection();
|
|
56541
|
+
if (selectionCopied !== undefined)
|
|
56542
|
+
return;
|
|
56543
|
+
}
|
|
56397
56544
|
const text = this.session.getLastAssistantText();
|
|
56398
56545
|
if (!text) {
|
|
56399
56546
|
this.showError("No agent messages to copy yet.");
|
|
@@ -56940,6 +57087,7 @@ var init_rpc_extension_ui = __esm(() => {
|
|
|
56940
57087
|
});
|
|
56941
57088
|
|
|
56942
57089
|
// src/modes/rpc/rpc-session-binding.ts
|
|
57090
|
+
import { setCapabilityOverrides as setCapabilityOverrides6 } from "@earendil-works/pi-tui";
|
|
56943
57091
|
var init_rpc_session_binding = __esm(() => {
|
|
56944
57092
|
init_footer_data_provider();
|
|
56945
57093
|
init_output_guard();
|
|
@@ -57016,7 +57164,7 @@ var init_config_selector = __esm(() => {
|
|
|
57016
57164
|
});
|
|
57017
57165
|
|
|
57018
57166
|
// src/cli/config-selector.ts
|
|
57019
|
-
import { ProcessTerminal as ProcessTerminal6, TuiMainScreen as TuiMainScreen8 } from "@earendil-works/pi-tui";
|
|
57167
|
+
import { ProcessTerminal as ProcessTerminal6, setCapabilityOverrides as setCapabilityOverrides7, TuiMainScreen as TuiMainScreen8 } from "@earendil-works/pi-tui";
|
|
57020
57168
|
var init_config_selector2 = __esm(() => {
|
|
57021
57169
|
init_config_selector();
|
|
57022
57170
|
init_theme();
|
|
@@ -57063,6 +57211,7 @@ var init_package_manager_cli = __esm(() => {
|
|
|
57063
57211
|
});
|
|
57064
57212
|
|
|
57065
57213
|
// src/main.ts
|
|
57214
|
+
import { setCapabilityOverrides as setCapabilityOverrides8 } from "@earendil-works/pi-tui";
|
|
57066
57215
|
import chalk15 from "chalk";
|
|
57067
57216
|
var init_main = __esm(() => {
|
|
57068
57217
|
init_args();
|
|
@@ -57077,6 +57226,7 @@ var init_main = __esm(() => {
|
|
|
57077
57226
|
init_auth_storage();
|
|
57078
57227
|
init_builtin_packages();
|
|
57079
57228
|
init_http_dispatcher();
|
|
57229
|
+
init_mandatory_resource_loader();
|
|
57080
57230
|
init_model_resolver();
|
|
57081
57231
|
init_model_runtime();
|
|
57082
57232
|
init_output_guard();
|