@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
|
@@ -9230,11 +9230,13 @@ function runSynchronousCallback(descriptor, callback) {
|
|
|
9230
9230
|
}
|
|
9231
9231
|
}
|
|
9232
9232
|
async function runCallback(descriptor, callback) {
|
|
9233
|
+
if (!reporter)
|
|
9234
|
+
return callback();
|
|
9235
|
+
await yieldToEventLoop();
|
|
9233
9236
|
const active = beginActivity(descriptor);
|
|
9234
9237
|
if (!active)
|
|
9235
9238
|
return callback();
|
|
9236
9239
|
try {
|
|
9237
|
-
await yieldToEventLoop();
|
|
9238
9240
|
return await callback();
|
|
9239
9241
|
} finally {
|
|
9240
9242
|
active.reporter.finished(active.activity.id);
|
|
@@ -11966,12 +11968,34 @@ var init_runner_events = __esm(() => {
|
|
|
11966
11968
|
init_callback_activity();
|
|
11967
11969
|
});
|
|
11968
11970
|
|
|
11971
|
+
// src/core/mandatory-runtime-tools.ts
|
|
11972
|
+
function isTrustedMandatoryRuntimeTool(registration) {
|
|
11973
|
+
return MANDATORY_TOOL_NAMES.has(registration.definition.name) && TRUSTED_MANDATORY_DEFINITIONS.has(registration.definition);
|
|
11974
|
+
}
|
|
11975
|
+
function isMandatoryRuntimeTool(name) {
|
|
11976
|
+
return MANDATORY_TOOL_NAMES.has(name);
|
|
11977
|
+
}
|
|
11978
|
+
function appendRegisteredMandatoryTools(tools, registry) {
|
|
11979
|
+
for (const name of MANDATORY_TOOL_NAMES) {
|
|
11980
|
+
const tool = registry.get(name);
|
|
11981
|
+
if (tool && !tools.some((candidate) => candidate.name === name))
|
|
11982
|
+
tools.push(tool);
|
|
11983
|
+
}
|
|
11984
|
+
return tools;
|
|
11985
|
+
}
|
|
11986
|
+
var MANDATORY_TOOL_NAMES, TRUSTED_MANDATORY_DEFINITIONS;
|
|
11987
|
+
var init_mandatory_runtime_tools = __esm(() => {
|
|
11988
|
+
MANDATORY_TOOL_NAMES = new Set(["intercom"]);
|
|
11989
|
+
TRUSTED_MANDATORY_DEFINITIONS = new WeakSet;
|
|
11990
|
+
});
|
|
11991
|
+
|
|
11969
11992
|
// src/core/extensions/runner-registries.ts
|
|
11970
11993
|
function collectRegisteredTools(extensions) {
|
|
11971
11994
|
const toolsByName = new Map;
|
|
11972
11995
|
for (const ext of extensions) {
|
|
11973
11996
|
for (const tool of ext.tools.values()) {
|
|
11974
|
-
|
|
11997
|
+
const existing = toolsByName.get(tool.definition.name);
|
|
11998
|
+
if (!existing || isMandatoryRuntimeTool(tool.definition.name) && isTrustedMandatoryRuntimeTool(tool)) {
|
|
11975
11999
|
toolsByName.set(tool.definition.name, tool);
|
|
11976
12000
|
}
|
|
11977
12001
|
}
|
|
@@ -11979,13 +12003,16 @@ function collectRegisteredTools(extensions) {
|
|
|
11979
12003
|
return Array.from(toolsByName.values());
|
|
11980
12004
|
}
|
|
11981
12005
|
function findToolDefinition(extensions, toolName) {
|
|
12006
|
+
let first;
|
|
11982
12007
|
for (const ext of extensions) {
|
|
11983
12008
|
const tool = ext.tools.get(toolName);
|
|
11984
|
-
if (tool)
|
|
12009
|
+
if (!tool)
|
|
12010
|
+
continue;
|
|
12011
|
+
first ??= tool;
|
|
12012
|
+
if (isMandatoryRuntimeTool(toolName) && isTrustedMandatoryRuntimeTool(tool))
|
|
11985
12013
|
return tool.definition;
|
|
11986
|
-
}
|
|
11987
12014
|
}
|
|
11988
|
-
return;
|
|
12015
|
+
return first?.definition;
|
|
11989
12016
|
}
|
|
11990
12017
|
function collectFlags(extensions) {
|
|
11991
12018
|
const allFlags = new Map;
|
|
@@ -12053,6 +12080,9 @@ function resolveRegisteredCommands(extensions) {
|
|
|
12053
12080
|
return { ...command, invocationName };
|
|
12054
12081
|
});
|
|
12055
12082
|
}
|
|
12083
|
+
var init_runner_registries = __esm(() => {
|
|
12084
|
+
init_mandatory_runtime_tools();
|
|
12085
|
+
});
|
|
12056
12086
|
|
|
12057
12087
|
// src/core/extensions/runner-shortcuts.ts
|
|
12058
12088
|
function resolveExtensionShortcuts(extensions, resolvedKeybindings, hasUI) {
|
|
@@ -12116,6 +12146,7 @@ var init_runner_shortcuts = __esm(() => {
|
|
|
12116
12146
|
"app.thinking.toggle",
|
|
12117
12147
|
"app.editor.external",
|
|
12118
12148
|
"app.message.followUp",
|
|
12149
|
+
"app.message.copy",
|
|
12119
12150
|
"tui.input.submit",
|
|
12120
12151
|
"tui.select.confirm",
|
|
12121
12152
|
"tui.select.cancel",
|
|
@@ -12579,6 +12610,7 @@ var init_runner = __esm(() => {
|
|
|
12579
12610
|
init_loader_runtime();
|
|
12580
12611
|
init_runner_context();
|
|
12581
12612
|
init_runner_events();
|
|
12613
|
+
init_runner_registries();
|
|
12582
12614
|
init_runner_shortcuts();
|
|
12583
12615
|
init_runner_ui();
|
|
12584
12616
|
init_stale_context();
|
|
@@ -14782,11 +14814,13 @@ async function _runAgentContinue() {
|
|
|
14782
14814
|
}
|
|
14783
14815
|
async function _continueQueuedAgentMessages() {
|
|
14784
14816
|
await this._agentEventQueue;
|
|
14785
|
-
while (!this._queuedMessagesPaused && this.agent.hasQueuedMessages()) {
|
|
14817
|
+
while (!this._stopAfterTurnBlockedContinuation && !this._queuedMessagesPaused && this.agent.hasQueuedMessages()) {
|
|
14786
14818
|
await this.agent.continue();
|
|
14787
14819
|
await this.waitForRetry();
|
|
14788
14820
|
await this._agentEventQueue;
|
|
14789
14821
|
}
|
|
14822
|
+
if (this._stopAfterTurnBlockedContinuation)
|
|
14823
|
+
return;
|
|
14790
14824
|
await answerAdmittedQueuedMessage(this);
|
|
14791
14825
|
}
|
|
14792
14826
|
async function answerAdmittedQueuedMessage(session) {
|
|
@@ -16177,14 +16211,13 @@ function getToolDefinition(name) {
|
|
|
16177
16211
|
}
|
|
16178
16212
|
function setActiveToolsByName(toolNames) {
|
|
16179
16213
|
const tools = [];
|
|
16180
|
-
const validToolNames = [];
|
|
16181
16214
|
for (const name of toolNames) {
|
|
16182
16215
|
const tool = this._toolRegistry.get(name);
|
|
16183
|
-
if (tool)
|
|
16216
|
+
if (tool)
|
|
16184
16217
|
tools.push(tool);
|
|
16185
|
-
validToolNames.push(name);
|
|
16186
|
-
}
|
|
16187
16218
|
}
|
|
16219
|
+
appendRegisteredMandatoryTools(tools, this._toolRegistry);
|
|
16220
|
+
const validToolNames = tools.map((tool) => tool.name);
|
|
16188
16221
|
this.agent.state.tools = tools;
|
|
16189
16222
|
this._baseSystemPrompt = this._rebuildSystemPrompt(validToolNames);
|
|
16190
16223
|
this.agent.state.systemPrompt = this._systemPromptOverride ?? this._baseSystemPrompt;
|
|
@@ -16241,7 +16274,7 @@ function _rebuildSystemPrompt(toolNames) {
|
|
|
16241
16274
|
customPrompt: loaderSystemPrompt,
|
|
16242
16275
|
appendSystemPrompt,
|
|
16243
16276
|
selectedTools: validToolNames,
|
|
16244
|
-
excludedTools: this._excludedToolNames ? Array.from(this._excludedToolNames) : undefined,
|
|
16277
|
+
excludedTools: this._excludedToolNames ? Array.from(this._excludedToolNames).filter((name) => !isMandatoryRuntimeTool(name)) : undefined,
|
|
16245
16278
|
toolSnippets,
|
|
16246
16279
|
promptGuidelines
|
|
16247
16280
|
};
|
|
@@ -16254,6 +16287,7 @@ function _refreshBaseSystemPromptFromActiveTools() {
|
|
|
16254
16287
|
}
|
|
16255
16288
|
var agentSessionStateMethods;
|
|
16256
16289
|
var init_agent_session_state = __esm(() => {
|
|
16290
|
+
init_mandatory_runtime_tools();
|
|
16257
16291
|
init_skill_catalog();
|
|
16258
16292
|
init_system_prompt();
|
|
16259
16293
|
agentSessionStateMethods = {
|
|
@@ -17281,6 +17315,17 @@ function _installAgentToolHooks() {
|
|
|
17281
17315
|
}
|
|
17282
17316
|
function _installAgentNextTurnRefresh() {
|
|
17283
17317
|
const previousPrepareNextTurnWithContext = this.agent.prepareNextTurnWithContext ?? (this.agent.prepareNextTurn ? async (_turn, signal) => await this.agent.prepareNextTurn?.(signal) : undefined);
|
|
17318
|
+
const previousShouldStopAfterTurn = this.agent.shouldStopAfterTurn;
|
|
17319
|
+
this.agent.shouldStopAfterTurn = async (turn, signal) => {
|
|
17320
|
+
const toolCallIds = turn.message.content.filter((part) => part.type === "toolCall").map((part) => part.id);
|
|
17321
|
+
const terminatingBatch = toolCallIds.length > 0 && toolCallIds.every((id) => this._terminatingToolCallIds.has(id));
|
|
17322
|
+
for (const id of toolCallIds)
|
|
17323
|
+
this._terminatingToolCallIds.delete(id);
|
|
17324
|
+
const shouldStop = await previousShouldStopAfterTurn?.(turn, signal) ?? false;
|
|
17325
|
+
this._stopAfterTurnBlockedContinuation = shouldStop;
|
|
17326
|
+
await settleFallbackAfterTurn(this, turn, terminatingBatch);
|
|
17327
|
+
return shouldStop;
|
|
17328
|
+
};
|
|
17284
17329
|
const previousTransformContext = this.agent.transformContext;
|
|
17285
17330
|
this.agent.transformContext = async (messages, signal) => {
|
|
17286
17331
|
const transformed = previousTransformContext ? await previousTransformContext(messages, signal) : messages;
|
|
@@ -17288,24 +17333,17 @@ function _installAgentNextTurnRefresh() {
|
|
|
17288
17333
|
assertToolPairingInvariant(guarded);
|
|
17289
17334
|
return guarded;
|
|
17290
17335
|
};
|
|
17291
|
-
|
|
17292
|
-
const
|
|
17293
|
-
const
|
|
17294
|
-
const
|
|
17295
|
-
const
|
|
17296
|
-
|
|
17297
|
-
this._terminatingToolCallIds.delete(id);
|
|
17298
|
-
const messages = turn.toolResults.length > 0 && !terminatingBatch ? await this._preflightPostToolContext(previousContext.messages, signal) : previousContext.messages;
|
|
17299
|
-
const preserveFallbackForFailure = turn.message.role === "assistant" && !this.agent.hasQueuedMessages() && (turn.message.stopReason === "length" || this._isEmptyCompletion?.(turn.message) === true || this._isSafetyRefusal?.(turn.message) === true);
|
|
17300
|
-
if (!preserveFallbackForFailure && (turn.toolResults.length === 0 || terminatingBatch)) {
|
|
17301
|
-
await this._agentEventQueue;
|
|
17302
|
-
await this._settleFallbackModelScope();
|
|
17303
|
-
}
|
|
17336
|
+
const prepareTurn = async (turn, signal) => {
|
|
17337
|
+
const compactedMessages = turn.toolResults.length > 0 ? await this._preflightPostToolContext(turn.context.messages, signal) : turn.context.messages;
|
|
17338
|
+
const compactedContext = compactedMessages === turn.context.messages ? turn.context : { ...turn.context, messages: compactedMessages };
|
|
17339
|
+
const preparedTurn = compactedContext === turn.context ? turn : { ...turn, context: compactedContext };
|
|
17340
|
+
const previousSnapshot = await previousPrepareNextTurnWithContext?.(preparedTurn, signal);
|
|
17341
|
+
const previousContext = previousSnapshot?.context ?? compactedContext;
|
|
17304
17342
|
return {
|
|
17305
17343
|
...previousSnapshot,
|
|
17306
17344
|
context: {
|
|
17307
17345
|
...previousContext,
|
|
17308
|
-
messages,
|
|
17346
|
+
messages: previousContext.messages,
|
|
17309
17347
|
systemPrompt: this._systemPromptOverride ?? this._baseSystemPrompt,
|
|
17310
17348
|
tools: this.agent.state.tools.slice()
|
|
17311
17349
|
},
|
|
@@ -17313,6 +17351,14 @@ function _installAgentNextTurnRefresh() {
|
|
|
17313
17351
|
thinkingLevel: this.agent.state.thinkingLevel
|
|
17314
17352
|
};
|
|
17315
17353
|
};
|
|
17354
|
+
this.agent.prepareNextTurnWithContext = prepareTurn;
|
|
17355
|
+
}
|
|
17356
|
+
async function settleFallbackAfterTurn(session, turn, terminatingBatch) {
|
|
17357
|
+
const preserveFallbackForFailure = turn.message.role === "assistant" && !session.agent.hasQueuedMessages() && (turn.message.stopReason === "length" || session._isEmptyCompletion?.(turn.message) === true || session._isSafetyRefusal?.(turn.message) === true);
|
|
17358
|
+
if (!preserveFallbackForFailure && (turn.toolResults.length === 0 || terminatingBatch)) {
|
|
17359
|
+
await session._agentEventQueue;
|
|
17360
|
+
await session._settleFallbackModelScope();
|
|
17361
|
+
}
|
|
17316
17362
|
}
|
|
17317
17363
|
var agentSessionToolHooksMethods;
|
|
17318
17364
|
var init_agent_session_tool_hooks = __esm(() => {
|
|
@@ -17395,6 +17441,7 @@ var init_loader_virtual_modules = __esm(() => {
|
|
|
17395
17441
|
});
|
|
17396
17442
|
|
|
17397
17443
|
// src/core/extensions/loader-core.ts
|
|
17444
|
+
var runtimeEventBuses;
|
|
17398
17445
|
var init_loader_core = __esm(() => {
|
|
17399
17446
|
init_event_loop();
|
|
17400
17447
|
init_paths();
|
|
@@ -17404,6 +17451,7 @@ var init_loader_core = __esm(() => {
|
|
|
17404
17451
|
init_loader_resources();
|
|
17405
17452
|
init_loader_runtime();
|
|
17406
17453
|
init_loader_virtual_modules();
|
|
17454
|
+
runtimeEventBuses = new WeakMap;
|
|
17407
17455
|
});
|
|
17408
17456
|
|
|
17409
17457
|
// src/core/package-manager-manifest.ts
|
|
@@ -22497,7 +22545,7 @@ class FastModeSelectorComponent {
|
|
|
22497
22545
|
}
|
|
22498
22546
|
invalidate() {}
|
|
22499
22547
|
render(width) {
|
|
22500
|
-
const lines = [truncateToWidth10(theme.bold(theme.fg("accent", "
|
|
22548
|
+
const lines = [truncateToWidth10(theme.bold(theme.fg("accent", "Fast mode")), width)];
|
|
22501
22549
|
for (const line of wrapTextWithAnsi3(DESCRIPTION, Math.max(20, width))) {
|
|
22502
22550
|
lines.push(theme.fg("muted", line));
|
|
22503
22551
|
}
|
|
@@ -22580,7 +22628,7 @@ class FastModeSelectorComponent {
|
|
|
22580
22628
|
return this.getFocusedRow() === row ? theme.fg("muted", text) : theme.fg("dim", text);
|
|
22581
22629
|
}
|
|
22582
22630
|
}
|
|
22583
|
-
var ROWS, LABEL_WIDTH = 16, DESCRIPTION = "
|
|
22631
|
+
var ROWS, LABEL_WIDTH = 16, DESCRIPTION = "Use faster routing for the selected model when supported by its provider.", ROW_DETAILS;
|
|
22584
22632
|
var init_fast_mode_selector = __esm(() => {
|
|
22585
22633
|
init_theme();
|
|
22586
22634
|
ROWS = ["chat", "workflow"];
|
|
@@ -23807,6 +23855,10 @@ var init_keybindings = __esm(() => {
|
|
|
23807
23855
|
defaultKeys: windowsKeybindings ? "alt+q" : "alt+up",
|
|
23808
23856
|
description: "Restore queued messages"
|
|
23809
23857
|
},
|
|
23858
|
+
"app.message.copy": {
|
|
23859
|
+
defaultKeys: "ctrl+x",
|
|
23860
|
+
description: "Copy fullscreen selection or last agent message"
|
|
23861
|
+
},
|
|
23810
23862
|
"app.clipboard.pasteImage": {
|
|
23811
23863
|
defaultKeys: windowsKeybindings ? "alt+v" : "ctrl+v",
|
|
23812
23864
|
description: "Paste image from clipboard (text fallback)"
|
|
@@ -25192,6 +25244,9 @@ function createSettingsChangeHandler(callbacks) {
|
|
|
25192
25244
|
case "fullscreen-exit-output":
|
|
25193
25245
|
callbacks.onFullscreenExitOutputChange(newValue);
|
|
25194
25246
|
break;
|
|
25247
|
+
case "fullscreen-copy-on-select":
|
|
25248
|
+
callbacks.onFullscreenCopyOnSelectChange(newValue === "true");
|
|
25249
|
+
break;
|
|
25195
25250
|
case "editor-padding":
|
|
25196
25251
|
callbacks.onEditorPaddingXChange(parseInt(newValue, 10));
|
|
25197
25252
|
break;
|
|
@@ -25579,6 +25634,13 @@ function insertUiToggles(items, config) {
|
|
|
25579
25634
|
values: ["transcript", "resume-hint"]
|
|
25580
25635
|
});
|
|
25581
25636
|
insertAfter(items, "fullscreen-exit-output", {
|
|
25637
|
+
id: "fullscreen-copy-on-select",
|
|
25638
|
+
label: "Fullscreen copy on select",
|
|
25639
|
+
description: "Copy selected transcript text automatically on mouse release",
|
|
25640
|
+
currentValue: config.fullscreenCopyOnSelect ? "true" : "false",
|
|
25641
|
+
values: ["true", "false"]
|
|
25642
|
+
});
|
|
25643
|
+
insertAfter(items, "fullscreen-copy-on-select", {
|
|
25582
25644
|
id: "editor-padding",
|
|
25583
25645
|
label: "Editor padding",
|
|
25584
25646
|
description: "Horizontal padding for input editor (0-3)",
|
|
@@ -38653,6 +38715,8 @@ function _refreshToolRegistry(options) {
|
|
|
38653
38715
|
const allowedToolNames = this._allowedToolNames;
|
|
38654
38716
|
const excludedToolNames = this._excludedToolNames;
|
|
38655
38717
|
const isExposedTool = (name) => {
|
|
38718
|
+
if (isMandatoryRuntimeTool(name))
|
|
38719
|
+
return true;
|
|
38656
38720
|
if (allowedToolNames && !allowedToolNames.has(name)) {
|
|
38657
38721
|
return false;
|
|
38658
38722
|
}
|
|
@@ -38661,10 +38725,10 @@ function _refreshToolRegistry(options) {
|
|
|
38661
38725
|
}
|
|
38662
38726
|
return true;
|
|
38663
38727
|
};
|
|
38664
|
-
const registeredTools = this._extensionRunner.getAllRegisteredTools();
|
|
38728
|
+
const registeredTools = this._extensionRunner.getAllRegisteredTools().filter((tool) => !isMandatoryRuntimeTool(tool.definition.name) || isTrustedMandatoryRuntimeTool(tool));
|
|
38665
38729
|
const allCustomTools = [
|
|
38666
38730
|
...registeredTools,
|
|
38667
|
-
...this._customTools.map((definition) => ({
|
|
38731
|
+
...this._customTools.filter((definition) => !isMandatoryRuntimeTool(definition.name)).map((definition) => ({
|
|
38668
38732
|
definition,
|
|
38669
38733
|
sourceInfo: createSyntheticSourceInfo(`<sdk:${definition.name}>`, { source: "sdk" })
|
|
38670
38734
|
}))
|
|
@@ -38785,6 +38849,7 @@ function _buildRuntime(options) {
|
|
|
38785
38849
|
var agentSessionToolRegistryMethods;
|
|
38786
38850
|
var init_agent_session_tool_registry = __esm(() => {
|
|
38787
38851
|
init_extensions();
|
|
38852
|
+
init_mandatory_runtime_tools();
|
|
38788
38853
|
init_model_registry();
|
|
38789
38854
|
init_tools();
|
|
38790
38855
|
init_session_temp_dir();
|
|
@@ -39627,6 +39692,7 @@ class AgentSessionBase {
|
|
|
39627
39692
|
_postToolCompactionPreflightError = undefined;
|
|
39628
39693
|
_pendingPostToolCompactionGuard = undefined;
|
|
39629
39694
|
_terminatingToolCallIds = new Set;
|
|
39695
|
+
_stopAfterTurnBlockedContinuation = false;
|
|
39630
39696
|
_disposed = false;
|
|
39631
39697
|
_branchSummaryAbortController = undefined;
|
|
39632
39698
|
_sessionSummaryAbortController = undefined;
|
|
@@ -39775,11 +39841,12 @@ var init_builtin_packages = __esm(() => {
|
|
|
39775
39841
|
{ packageName: "@bastani/subagents", workspaceDirName: "subagents", distDirName: "subagents" },
|
|
39776
39842
|
{ packageName: "@bastani/mcp", workspaceDirName: "mcp", distDirName: "mcp" },
|
|
39777
39843
|
{ packageName: "@bastani/web-access", workspaceDirName: "web-access", distDirName: "web-access" },
|
|
39778
|
-
{ packageName: "@bastani/intercom", workspaceDirName: "intercom", distDirName: "intercom" }
|
|
39844
|
+
{ packageName: "@bastani/intercom", workspaceDirName: "intercom", distDirName: "intercom", mandatory: true }
|
|
39779
39845
|
];
|
|
39780
39846
|
BUILTIN_PACKAGES = WORKSPACE_BUILTINS.map((spec) => ({
|
|
39781
39847
|
packageName: spec.packageName,
|
|
39782
39848
|
distDirName: spec.distDirName,
|
|
39849
|
+
mandatory: spec.mandatory === true,
|
|
39783
39850
|
requiredEntries: requiredEntriesForBuiltin(spec.distDirName),
|
|
39784
39851
|
sourceCandidates: ({ here, packageDir, isSourceCheckout }) => isSourceCheckout ? [join37(packageDir, "..", spec.workspaceDirName), join37(here, "..", "..", "..", spec.workspaceDirName)] : []
|
|
39785
39852
|
}));
|
|
@@ -43098,7 +43165,9 @@ var init_resource_loader_extensions = __esm(() => {
|
|
|
43098
43165
|
var init_resource_loader_reload = __esm(() => {
|
|
43099
43166
|
init_event_loop();
|
|
43100
43167
|
init_paths();
|
|
43168
|
+
init_builtin_packages();
|
|
43101
43169
|
init_loader();
|
|
43170
|
+
init_mandatory_runtime_tools();
|
|
43102
43171
|
init_resource_loader_assets();
|
|
43103
43172
|
init_resource_loader_context_files();
|
|
43104
43173
|
init_resource_loader_discovery();
|
|
@@ -44255,6 +44324,28 @@ var init_settings_manager_ui_accessors = __esm(() => {
|
|
|
44255
44324
|
state.markModified("fullscreenExitOutput");
|
|
44256
44325
|
state.save();
|
|
44257
44326
|
},
|
|
44327
|
+
getFullscreenCopyOnSelect() {
|
|
44328
|
+
return settingsInternals(this).settings.fullscreenCopyOnSelect !== false;
|
|
44329
|
+
},
|
|
44330
|
+
setFullscreenCopyOnSelect(enabled) {
|
|
44331
|
+
const state = settingsInternals(this);
|
|
44332
|
+
state.globalSettings.fullscreenCopyOnSelect = enabled;
|
|
44333
|
+
state.markModified("fullscreenCopyOnSelect");
|
|
44334
|
+
state.save();
|
|
44335
|
+
},
|
|
44336
|
+
getTerminalCapabilityOverrides() {
|
|
44337
|
+
const terminal = settingsInternals(this).settings.terminal;
|
|
44338
|
+
const overrides = {};
|
|
44339
|
+
if (typeof terminal?.hyperlinks === "boolean")
|
|
44340
|
+
overrides.hyperlinks = terminal.hyperlinks;
|
|
44341
|
+
if (terminal?.images === "kitty" || terminal?.images === "iterm2")
|
|
44342
|
+
overrides.images = terminal.images;
|
|
44343
|
+
else if (terminal?.images === false)
|
|
44344
|
+
overrides.images = null;
|
|
44345
|
+
if (typeof terminal?.trueColor === "boolean")
|
|
44346
|
+
overrides.trueColor = terminal.trueColor;
|
|
44347
|
+
return overrides;
|
|
44348
|
+
},
|
|
44258
44349
|
getEditorPaddingX() {
|
|
44259
44350
|
return settingsInternals(this).settings.editorPaddingX ?? 0;
|
|
44260
44351
|
},
|
|
@@ -44400,6 +44491,14 @@ var init_resource_loader = __esm(() => {
|
|
|
44400
44491
|
init_resource_loader_core();
|
|
44401
44492
|
init_skill_catalog();
|
|
44402
44493
|
});
|
|
44494
|
+
// src/core/mandatory-resource-loader.ts
|
|
44495
|
+
var init_mandatory_resource_loader = __esm(() => {
|
|
44496
|
+
init_builtin_packages();
|
|
44497
|
+
init_loader();
|
|
44498
|
+
init_mandatory_runtime_tools();
|
|
44499
|
+
init_skill_catalog();
|
|
44500
|
+
});
|
|
44501
|
+
|
|
44403
44502
|
// src/core/model-resolver-defaults.ts
|
|
44404
44503
|
function findPreferredAvailableModel(availableModels) {
|
|
44405
44504
|
for (const [provider, defaultId] of Object.entries(defaultModelPerProvider)) {
|
|
@@ -44440,7 +44539,7 @@ var init_model_resolver_defaults = __esm(() => {
|
|
|
44440
44539
|
huggingface: "moonshotai/Kimi-K2.6",
|
|
44441
44540
|
fireworks: "accounts/fireworks/models/kimi-k2p6",
|
|
44442
44541
|
together: "moonshotai/Kimi-K2.6",
|
|
44443
|
-
baseten: "zai-org/GLM-5.
|
|
44542
|
+
baseten: "zai-org/GLM-5.3",
|
|
44444
44543
|
opencode: "kimi-k2.6",
|
|
44445
44544
|
"opencode-go": "kimi-k2.6",
|
|
44446
44545
|
"kimi-coding": "kimi-for-coding",
|
|
@@ -45098,6 +45197,7 @@ var init_session_cwd = __esm(() => {
|
|
|
45098
45197
|
var init_agent_session_services = __esm(() => {
|
|
45099
45198
|
init_config();
|
|
45100
45199
|
init_paths();
|
|
45200
|
+
init_mandatory_resource_loader();
|
|
45101
45201
|
init_model_runtime();
|
|
45102
45202
|
init_resource_loader();
|
|
45103
45203
|
init_sdk();
|
|
@@ -45434,6 +45534,7 @@ var init_sdk = __esm(() => {
|
|
|
45434
45534
|
init_agent_session();
|
|
45435
45535
|
init_auth_guidance();
|
|
45436
45536
|
init_codex_fast_mode();
|
|
45537
|
+
init_mandatory_resource_loader();
|
|
45437
45538
|
init_messages();
|
|
45438
45539
|
init_model_resolver();
|
|
45439
45540
|
init_model_runtime();
|
|
@@ -45537,7 +45638,12 @@ var init_list_models = __esm(() => {
|
|
|
45537
45638
|
});
|
|
45538
45639
|
|
|
45539
45640
|
// src/cli/startup-ui.ts
|
|
45540
|
-
import {
|
|
45641
|
+
import {
|
|
45642
|
+
ProcessTerminal,
|
|
45643
|
+
setCapabilityOverrides,
|
|
45644
|
+
setKeybindings,
|
|
45645
|
+
TuiMainScreen
|
|
45646
|
+
} from "@earendil-works/pi-tui";
|
|
45541
45647
|
var init_startup_ui = __esm(() => {
|
|
45542
45648
|
init_config();
|
|
45543
45649
|
init_keybindings();
|
|
@@ -45625,7 +45731,7 @@ var init_main_first_time_setup = __esm(() => {
|
|
|
45625
45731
|
init_startup_ui();
|
|
45626
45732
|
});
|
|
45627
45733
|
// src/cli/session-picker.ts
|
|
45628
|
-
import { ProcessTerminal as ProcessTerminal2, setKeybindings as setKeybindings2, TuiMainScreen as TuiMainScreen2 } from "@earendil-works/pi-tui";
|
|
45734
|
+
import { ProcessTerminal as ProcessTerminal2, setCapabilityOverrides as setCapabilityOverrides2, setKeybindings as setKeybindings2, TuiMainScreen as TuiMainScreen2 } from "@earendil-works/pi-tui";
|
|
45629
45735
|
var init_session_picker = __esm(() => {
|
|
45630
45736
|
init_config();
|
|
45631
45737
|
init_keybindings();
|
|
@@ -45633,7 +45739,7 @@ var init_session_picker = __esm(() => {
|
|
|
45633
45739
|
});
|
|
45634
45740
|
|
|
45635
45741
|
// src/main-session.ts
|
|
45636
|
-
import { ProcessTerminal as ProcessTerminal3, setKeybindings as setKeybindings3, TuiMainScreen as TuiMainScreen3 } from "@earendil-works/pi-tui";
|
|
45742
|
+
import { ProcessTerminal as ProcessTerminal3, setCapabilityOverrides as setCapabilityOverrides3, setKeybindings as setKeybindings3, TuiMainScreen as TuiMainScreen3 } from "@earendil-works/pi-tui";
|
|
45637
45743
|
import chalk10 from "chalk";
|
|
45638
45744
|
var init_main_session = __esm(() => {
|
|
45639
45745
|
init_session_picker();
|
|
@@ -48451,7 +48557,7 @@ var init_slash_commands = __esm(() => {
|
|
|
48451
48557
|
{ name: "tree", description: "Navigate session tree (switch branches)" },
|
|
48452
48558
|
{ name: "thinking", description: "Set thinking level", argumentHint: "<level>" },
|
|
48453
48559
|
{ name: "scoped-models", description: "Enable/disable models for ctrl+p cycling" },
|
|
48454
|
-
{ name: "fast", description: "Configure
|
|
48560
|
+
{ name: "fast", description: "Configure fast mode for chat and workflows on supported models" },
|
|
48455
48561
|
{ name: "export", description: "Export session (HTML default, or specify path: .html/.jsonl)" },
|
|
48456
48562
|
{ name: "import", description: "Import and resume a session from a JSONL file" },
|
|
48457
48563
|
{ name: "share", description: "Share session as a secret GitHub gist" },
|
|
@@ -49077,6 +49183,7 @@ function createFullscreenTui(options) {
|
|
|
49077
49183
|
openUrl: openBrowser
|
|
49078
49184
|
}),
|
|
49079
49185
|
onRightClickPaste: options.onRightClickPaste,
|
|
49186
|
+
copyOnSelect: options.copyOnSelect,
|
|
49080
49187
|
copySelection: options.copySelection ?? copySelectionToHostClipboard
|
|
49081
49188
|
}, options.shouldHandleViewportInput, options.onOverlayUnhandledInput);
|
|
49082
49189
|
}
|
|
@@ -49118,7 +49225,7 @@ function createInteractiveTuiReference(getTui) {
|
|
|
49118
49225
|
getPrototypeOf: () => Reflect.getPrototypeOf(getTui())
|
|
49119
49226
|
});
|
|
49120
49227
|
}
|
|
49121
|
-
var viewportInputListeners, viewportInputGates, overlayUnhandledInputHandlers, viewportInputReplays, viewportInputSubscriptions, SGR_MOUSE_SEQUENCE, LEFT_MOUSE_MODIFIER_MASK, AtomicTuiAltScreen, AtomicTuiMainScreen;
|
|
49228
|
+
var viewportInputListeners, viewportInputGates, overlayUnhandledInputHandlers, viewportInputReplays, overlayOwnedSelections, viewportInputSubscriptions, SGR_MOUSE_SEQUENCE, LEFT_MOUSE_MODIFIER_MASK, AtomicTuiAltScreen, AtomicTuiMainScreen;
|
|
49122
49229
|
var init_interactive_tui = __esm(() => {
|
|
49123
49230
|
init_clipboard();
|
|
49124
49231
|
init_open_browser();
|
|
@@ -49127,6 +49234,7 @@ var init_interactive_tui = __esm(() => {
|
|
|
49127
49234
|
viewportInputGates = new WeakMap;
|
|
49128
49235
|
overlayUnhandledInputHandlers = new WeakMap;
|
|
49129
49236
|
viewportInputReplays = new WeakSet;
|
|
49237
|
+
overlayOwnedSelections = new WeakSet;
|
|
49130
49238
|
viewportInputSubscriptions = new WeakMap;
|
|
49131
49239
|
SGR_MOUSE_SEQUENCE = /^\x1b\[<(\d+);\d+;\d+([Mm])/;
|
|
49132
49240
|
LEFT_MOUSE_MODIFIER_MASK = 4 | 8 | 16;
|
|
@@ -49142,8 +49250,20 @@ var init_interactive_tui = __esm(() => {
|
|
|
49142
49250
|
deferral.shouldDeferViewportInputToOverlay = () => !viewportInputReplays.has(this) && deferToOverlay?.() === true;
|
|
49143
49251
|
}
|
|
49144
49252
|
applyLineResets(lines) {
|
|
49253
|
+
if (overlayOwnedSelections.has(this) && !this.isFocusedOverlay())
|
|
49254
|
+
this.clearOverlayOwnedSelection();
|
|
49145
49255
|
return stripOverlayActiveRowMarker(super.applyLineResets(lines));
|
|
49146
49256
|
}
|
|
49257
|
+
clearOverlayOwnedSelection() {
|
|
49258
|
+
const selection = this;
|
|
49259
|
+
selection.selectionAnchor = undefined;
|
|
49260
|
+
selection.selectionFocus = undefined;
|
|
49261
|
+
selection.selectionInitialRange = undefined;
|
|
49262
|
+
selection.selectionPressActive = false;
|
|
49263
|
+
selection.selectionDragged = false;
|
|
49264
|
+
selection.lastClick = undefined;
|
|
49265
|
+
overlayOwnedSelections.delete(this);
|
|
49266
|
+
}
|
|
49147
49267
|
isPiTuiMouseSequence(data) {
|
|
49148
49268
|
if (parseMouseSequences(data))
|
|
49149
49269
|
return true;
|
|
@@ -49220,6 +49340,7 @@ var init_interactive_tui = __esm(() => {
|
|
|
49220
49340
|
if (isLeftMouseButton(sequence))
|
|
49221
49341
|
viewportListener(sequence.data);
|
|
49222
49342
|
}
|
|
49343
|
+
overlayOwnedSelections.add(this);
|
|
49223
49344
|
}
|
|
49224
49345
|
replayViewportInput(viewportListener, data) {
|
|
49225
49346
|
viewportInputReplays.add(this);
|
|
@@ -49287,7 +49408,11 @@ var init_interactive_tui = __esm(() => {
|
|
|
49287
49408
|
});
|
|
49288
49409
|
|
|
49289
49410
|
// src/modes/interactive/interactive-mode-base.ts
|
|
49290
|
-
import {
|
|
49411
|
+
import {
|
|
49412
|
+
isKeyRelease as isKeyRelease3,
|
|
49413
|
+
isViewportTUI,
|
|
49414
|
+
setCapabilityOverrides as setCapabilityOverrides4
|
|
49415
|
+
} from "@earendil-works/pi-tui";
|
|
49291
49416
|
function isFullscreenViewportAction(data, keybindings) {
|
|
49292
49417
|
return FULLSCREEN_VIEWPORT_ACTIONS.some((action) => keybindings.matches(data, action));
|
|
49293
49418
|
}
|
|
@@ -49348,6 +49473,18 @@ class InteractiveModeBase {
|
|
|
49348
49473
|
return false;
|
|
49349
49474
|
return this.defaultEditor.handleInput(data);
|
|
49350
49475
|
}
|
|
49476
|
+
setFullscreenCopyOnSelect(enabled) {
|
|
49477
|
+
if (this.renderer.mode === "fullscreen")
|
|
49478
|
+
this.renderer.setCopyOnSelect(enabled);
|
|
49479
|
+
}
|
|
49480
|
+
getFullscreenCopyOnSelect() {
|
|
49481
|
+
return this.renderer.mode === "fullscreen" ? this.renderer.getCopyOnSelect() : undefined;
|
|
49482
|
+
}
|
|
49483
|
+
async copyActiveFullscreenSelection() {
|
|
49484
|
+
if (this.renderer.mode !== "fullscreen" || !this.renderer.hasActiveSelection())
|
|
49485
|
+
return;
|
|
49486
|
+
return this.renderer.copyActiveSelectionToClipboard();
|
|
49487
|
+
}
|
|
49351
49488
|
onRightClickPaste = () => {
|
|
49352
49489
|
this.handleRightClickPaste();
|
|
49353
49490
|
};
|
|
@@ -49547,11 +49684,13 @@ class InteractiveModeBase {
|
|
|
49547
49684
|
await this.rebindCurrentSession();
|
|
49548
49685
|
await this.themeController.applyFromSettings();
|
|
49549
49686
|
});
|
|
49687
|
+
setCapabilityOverrides4(this.settingsManager.getTerminalCapabilityOverrides());
|
|
49550
49688
|
this.version = VERSION;
|
|
49551
49689
|
this.renderer = createInteractiveTui({
|
|
49552
49690
|
showHardwareCursor: this.settingsManager.getShowHardwareCursor(),
|
|
49553
49691
|
logDirectory: runtimeHost.services.agentDir,
|
|
49554
49692
|
terminal: options.terminal,
|
|
49693
|
+
copyOnSelect: this.settingsManager.getFullscreenCopyOnSelect(),
|
|
49555
49694
|
onRightClickPaste: this.onRightClickPaste,
|
|
49556
49695
|
shouldHandleViewportInput: this.shouldHandleViewportInput,
|
|
49557
49696
|
onOverlayUnhandledInput: this.onOverlayUnhandledInput,
|
|
@@ -50674,6 +50813,7 @@ var init_interactive_deferred_startup = __esm(() => {
|
|
|
50674
50813
|
try {
|
|
50675
50814
|
await this.bindCurrentSessionExtensions();
|
|
50676
50815
|
await this.session.reload({ reason: "startup" });
|
|
50816
|
+
this.applyRuntimeSettings();
|
|
50677
50817
|
this.rebuildChatFromMessages();
|
|
50678
50818
|
if (!this.promptTurnWorkingLoaderActive) {
|
|
50679
50819
|
this.stopWorkingLoader();
|
|
@@ -51362,6 +51502,7 @@ ${warningLines}`, 0, 0));
|
|
|
51362
51502
|
});
|
|
51363
51503
|
|
|
51364
51504
|
// src/modes/interactive/interactive-session-runtime.ts
|
|
51505
|
+
import { setCapabilityOverrides as setCapabilityOverrides5 } from "@earendil-works/pi-tui";
|
|
51365
51506
|
var init_interactive_session_runtime = __esm(() => {
|
|
51366
51507
|
init_interactive_mode_base();
|
|
51367
51508
|
init_interactive_mode_deps();
|
|
@@ -51448,6 +51589,8 @@ var init_interactive_session_runtime = __esm(() => {
|
|
|
51448
51589
|
}
|
|
51449
51590
|
};
|
|
51450
51591
|
InteractiveModeBase.prototype.applyRuntimeSettings = function() {
|
|
51592
|
+
setCapabilityOverrides5(this.settingsManager.getTerminalCapabilityOverrides());
|
|
51593
|
+
this.setFullscreenCopyOnSelect(this.settingsManager.getFullscreenCopyOnSelect());
|
|
51451
51594
|
this.transcriptScrollView?.setScrollbar(this.settingsManager.getFullscreenScrollbar());
|
|
51452
51595
|
this.footer.setSession(this.session);
|
|
51453
51596
|
this.usageMeter.setSession(this.session);
|
|
@@ -52964,6 +53107,9 @@ var init_interactive_input_handling = __esm(() => {
|
|
|
52964
53107
|
});
|
|
52965
53108
|
this.defaultEditor.onAction("app.message.followUp", () => this.handleFollowUp());
|
|
52966
53109
|
this.defaultEditor.onAction("app.message.dequeue", () => this.handleDequeue());
|
|
53110
|
+
this.defaultEditor.onAction("app.message.copy", () => {
|
|
53111
|
+
this.handleCopyCommand({ preferSelection: true });
|
|
53112
|
+
});
|
|
52967
53113
|
this.defaultEditor.onAction("app.session.new", () => this.handleClearCommand());
|
|
52968
53114
|
this.defaultEditor.onAction("app.session.tree", () => this.showTreeSelector());
|
|
52969
53115
|
this.defaultEditor.onAction("app.session.fork", () => this.showUserMessageSelector());
|
|
@@ -53871,7 +54017,8 @@ var init_interactive_agent_events = __esm(() => {
|
|
|
53871
54017
|
} else if (event.reason === "manual") {
|
|
53872
54018
|
this.manualCompactionTakeoverPending = false;
|
|
53873
54019
|
}
|
|
53874
|
-
|
|
54020
|
+
const resumesActiveRun = event.midTurn && !event.aborted && !event.errorMessage && !manualTakeoverPending;
|
|
54021
|
+
if (!manualTakeoverPending && !resumesActiveRun && this.settingsManager.getShowTerminalProgress()) {
|
|
53875
54022
|
this.ui.terminal.setProgress(false);
|
|
53876
54023
|
}
|
|
53877
54024
|
if (!manualTakeoverPending && this.autoCompactionEscapeHandlerSaved) {
|
|
@@ -54887,7 +55034,7 @@ var init_interactive_selectors = __esm(() => {
|
|
|
54887
55034
|
};
|
|
54888
55035
|
InteractiveModeBase.prototype.showFastModeSelector = function() {
|
|
54889
55036
|
if (!this.hasCodexFastModeSupportedModels()) {
|
|
54890
|
-
this.showWarning("
|
|
55037
|
+
this.showWarning("Fast mode isn't available for any configured model.");
|
|
54891
55038
|
return;
|
|
54892
55039
|
}
|
|
54893
55040
|
this.showSelector((done) => {
|
|
@@ -54946,6 +55093,7 @@ var init_interactive_selectors = __esm(() => {
|
|
|
54946
55093
|
showHardwareCursor: this.settingsManager.getShowHardwareCursor(),
|
|
54947
55094
|
fullscreenScrollbar: this.settingsManager.getFullscreenScrollbar(),
|
|
54948
55095
|
fullscreenExitOutput: this.settingsManager.getFullscreenExitOutput(),
|
|
55096
|
+
fullscreenCopyOnSelect: this.settingsManager.getFullscreenCopyOnSelect(),
|
|
54949
55097
|
editorPaddingX: this.settingsManager.getEditorPaddingX(),
|
|
54950
55098
|
outputPad: this.settingsManager.getOutputPad(),
|
|
54951
55099
|
showCacheMissNotices: this.settingsManager.getShowCacheMissNotices(),
|
|
@@ -55063,6 +55211,10 @@ var init_interactive_selectors = __esm(() => {
|
|
|
55063
55211
|
onFullscreenExitOutputChange: (output) => {
|
|
55064
55212
|
this.settingsManager.setFullscreenExitOutput(output);
|
|
55065
55213
|
},
|
|
55214
|
+
onFullscreenCopyOnSelectChange: (enabled) => {
|
|
55215
|
+
this.settingsManager.setFullscreenCopyOnSelect(enabled);
|
|
55216
|
+
this.setFullscreenCopyOnSelect(enabled);
|
|
55217
|
+
},
|
|
55066
55218
|
onEditorPaddingXChange: (padding) => {
|
|
55067
55219
|
this.settingsManager.setEditorPaddingX(padding);
|
|
55068
55220
|
this.defaultEditor.setPaddingX(padding);
|
|
@@ -56049,18 +56201,8 @@ var init_interactive_slash_commands = __esm(() => {
|
|
|
56049
56201
|
activeHeader.setExpanded(this.toolOutputExpanded);
|
|
56050
56202
|
}
|
|
56051
56203
|
setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
|
|
56052
|
-
this.
|
|
56204
|
+
this.applyRuntimeSettings();
|
|
56053
56205
|
await this.themeController.applyFromSettings();
|
|
56054
|
-
const editorPaddingX = this.settingsManager.getEditorPaddingX();
|
|
56055
|
-
const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
|
|
56056
|
-
this.defaultEditor.setPaddingX(editorPaddingX);
|
|
56057
|
-
this.defaultEditor.setAutocompleteMaxVisible(autocompleteMaxVisible);
|
|
56058
|
-
if (this.editor !== this.defaultEditor) {
|
|
56059
|
-
this.editor.setPaddingX?.(editorPaddingX);
|
|
56060
|
-
this.editor.setAutocompleteMaxVisible?.(autocompleteMaxVisible);
|
|
56061
|
-
}
|
|
56062
|
-
this.ui.setShowHardwareCursor(this.settingsManager.getShowHardwareCursor());
|
|
56063
|
-
this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
|
|
56064
56206
|
this.setupAutocompleteProvider();
|
|
56065
56207
|
const runner = this.session.extensionRunner;
|
|
56066
56208
|
this.setupExtensionShortcuts(runner);
|
|
@@ -56253,7 +56395,12 @@ Gist: ${hyperlink3(gistUrl, gistUrl)}`);
|
|
|
56253
56395
|
}
|
|
56254
56396
|
}
|
|
56255
56397
|
};
|
|
56256
|
-
InteractiveModeBase.prototype.handleCopyCommand = async function() {
|
|
56398
|
+
InteractiveModeBase.prototype.handleCopyCommand = async function(options = {}) {
|
|
56399
|
+
if (options.preferSelection && this.getFullscreenCopyOnSelect() === false) {
|
|
56400
|
+
const selectionCopied = await this.copyActiveFullscreenSelection();
|
|
56401
|
+
if (selectionCopied !== undefined)
|
|
56402
|
+
return;
|
|
56403
|
+
}
|
|
56257
56404
|
const text = this.session.getLastAssistantText();
|
|
56258
56405
|
if (!text) {
|
|
56259
56406
|
this.showError("No agent messages to copy yet.");
|
|
@@ -56800,6 +56947,7 @@ var init_rpc_extension_ui = __esm(() => {
|
|
|
56800
56947
|
});
|
|
56801
56948
|
|
|
56802
56949
|
// src/modes/rpc/rpc-session-binding.ts
|
|
56950
|
+
import { setCapabilityOverrides as setCapabilityOverrides6 } from "@earendil-works/pi-tui";
|
|
56803
56951
|
var init_rpc_session_binding = __esm(() => {
|
|
56804
56952
|
init_footer_data_provider();
|
|
56805
56953
|
init_output_guard();
|
|
@@ -56876,7 +57024,7 @@ var init_config_selector = __esm(() => {
|
|
|
56876
57024
|
});
|
|
56877
57025
|
|
|
56878
57026
|
// src/cli/config-selector.ts
|
|
56879
|
-
import { ProcessTerminal as ProcessTerminal6, TuiMainScreen as TuiMainScreen8 } from "@earendil-works/pi-tui";
|
|
57027
|
+
import { ProcessTerminal as ProcessTerminal6, setCapabilityOverrides as setCapabilityOverrides7, TuiMainScreen as TuiMainScreen8 } from "@earendil-works/pi-tui";
|
|
56880
57028
|
var init_config_selector2 = __esm(() => {
|
|
56881
57029
|
init_config_selector();
|
|
56882
57030
|
init_theme();
|
|
@@ -56923,6 +57071,7 @@ var init_package_manager_cli = __esm(() => {
|
|
|
56923
57071
|
});
|
|
56924
57072
|
|
|
56925
57073
|
// src/main.ts
|
|
57074
|
+
import { setCapabilityOverrides as setCapabilityOverrides8 } from "@earendil-works/pi-tui";
|
|
56926
57075
|
import chalk15 from "chalk";
|
|
56927
57076
|
var init_main = __esm(() => {
|
|
56928
57077
|
init_args();
|
|
@@ -56937,6 +57086,7 @@ var init_main = __esm(() => {
|
|
|
56937
57086
|
init_auth_storage();
|
|
56938
57087
|
init_builtin_packages();
|
|
56939
57088
|
init_http_dispatcher();
|
|
57089
|
+
init_mandatory_resource_loader();
|
|
56940
57090
|
init_model_resolver();
|
|
56941
57091
|
init_model_runtime();
|
|
56942
57092
|
init_output_guard();
|