dexto 1.5.8 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/agents/agent-template.yml +2 -2
- package/dist/agents/coding-agent/README.md +10 -10
- package/dist/agents/coding-agent/coding-agent.yml +84 -83
- package/dist/agents/default-agent.yml +32 -47
- package/dist/agents/explore-agent/explore-agent.yml +3 -6
- package/dist/agents/image-editor-agent/image-editor-agent.yml +1 -1
- package/dist/agents/nano-banana-agent/nano-banana-agent.yml +1 -1
- package/dist/agents/podcast-agent/podcast-agent.yml +1 -1
- package/dist/agents/product-name-researcher/product-name-researcher.yml +1 -1
- package/dist/agents/sora-video-agent/sora-video-agent.yml +4 -6
- package/dist/agents/triage-demo/triage-agent.yml +1 -1
- package/dist/analytics/events.d.ts +1 -1
- package/dist/analytics/events.d.ts.map +1 -1
- package/dist/api/mcp/tool-aggregation-handler.d.ts +2 -2
- package/dist/api/server-hono.d.ts +2 -2
- package/dist/api/server-hono.d.ts.map +1 -1
- package/dist/api/server-hono.js +37 -60
- package/dist/cli/approval/cli-approval-handler.d.ts +10 -3
- package/dist/cli/approval/cli-approval-handler.d.ts.map +1 -1
- package/dist/cli/approval/cli-approval-handler.js +1 -1
- package/dist/cli/assets/sounds/SOURCES.md +35 -0
- package/dist/cli/assets/sounds/boot.wav +0 -0
- package/dist/cli/assets/sounds/chime.wav +0 -0
- package/dist/cli/assets/sounds/coin.wav +0 -0
- package/dist/cli/assets/sounds/confirm.wav +0 -0
- package/dist/cli/assets/sounds/levelup.wav +0 -0
- package/dist/cli/assets/sounds/ping.wav +0 -0
- package/dist/cli/assets/sounds/powerup.wav +0 -0
- package/dist/cli/assets/sounds/startup.wav +0 -0
- package/dist/cli/assets/sounds/success.wav +0 -0
- package/dist/cli/assets/sounds/treasure.wav +0 -0
- package/dist/cli/assets/sounds/win.wav +0 -0
- package/dist/cli/commands/create-app.d.ts +1 -11
- package/dist/cli/commands/create-app.d.ts.map +1 -1
- package/dist/cli/commands/create-app.js +21 -545
- package/dist/cli/commands/create-image.d.ts.map +1 -1
- package/dist/cli/commands/create-image.js +54 -53
- package/dist/cli/commands/image.d.ts +52 -0
- package/dist/cli/commands/image.d.ts.map +1 -0
- package/dist/cli/commands/image.js +118 -0
- package/dist/cli/commands/index.d.ts +2 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +3 -1
- package/dist/cli/commands/init-app.d.ts +4 -8
- package/dist/cli/commands/init-app.d.ts.map +1 -1
- package/dist/cli/commands/init-app.js +37 -161
- package/dist/cli/commands/interactive-commands/command-parser.d.ts +2 -0
- package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/commands.d.ts +1 -1
- package/dist/cli/commands/interactive-commands/commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/commands.js +2 -2
- package/dist/cli/commands/interactive-commands/exit-handler.d.ts +12 -0
- package/dist/cli/commands/interactive-commands/exit-handler.d.ts.map +1 -0
- package/dist/cli/commands/interactive-commands/exit-handler.js +20 -0
- package/dist/cli/commands/interactive-commands/exit-stats.d.ts +24 -0
- package/dist/cli/commands/interactive-commands/exit-stats.d.ts.map +1 -0
- package/dist/cli/commands/interactive-commands/exit-stats.js +17 -0
- package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/general-commands.js +55 -5
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/prompt-commands.js +14 -74
- package/dist/cli/commands/interactive-commands/session/index.d.ts +2 -1
- package/dist/cli/commands/interactive-commands/session/index.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/session/index.js +2 -1
- package/dist/cli/commands/interactive-commands/session/session-commands.d.ts +2 -2
- package/dist/cli/commands/interactive-commands/session/session-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/session/session-commands.js +2 -4
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts +1 -13
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/system/system-commands.js +52 -83
- package/dist/cli/commands/plugin.d.ts +4 -4
- package/dist/cli/commands/sync-agents.d.ts +2 -12
- package/dist/cli/commands/sync-agents.d.ts.map +1 -1
- package/dist/cli/commands/sync-agents.js +2 -50
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts +7 -1
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/InkCLIRefactored.js +138 -27
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +2 -2
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ApprovalPrompt.js +85 -30
- package/dist/cli/ink-cli/components/BackgroundTasksPanel.js +1 -1
- package/dist/cli/ink-cli/components/ElicitationForm.d.ts +5 -3
- package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ElicitationForm.js +414 -180
- package/dist/cli/ink-cli/components/Footer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/Footer.js +1 -2
- package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ResourceAutocomplete.js +20 -11
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +47 -67
- package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/StatusBar.js +20 -10
- package/dist/cli/ink-cli/components/TodoPanel.js +1 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.d.ts +2 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.js +37 -27
- package/dist/cli/ink-cli/components/chat/Header.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/Header.js +1 -1
- package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/MessageItem.js +3 -1
- package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/ToolIcon.js +5 -15
- package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +1 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +1 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts +3 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +5 -3
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts +3 -1
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/modes/StaticCLI.js +10 -3
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.d.ts +13 -0
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.js +60 -0
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +1 -1
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +213 -100
- package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/PromptList.js +12 -16
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.d.ts +21 -0
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.js +566 -0
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts +1 -1
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +100 -45
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.js +8 -13
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +3 -3
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +6 -5
- package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts +3 -1
- package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/FileRenderer.js +18 -7
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +7 -17
- package/dist/cli/ink-cli/components/renderers/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/renderers/index.js +1 -1
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.d.ts +7 -0
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.js +8 -0
- package/dist/cli/ink-cli/components/shared/HintBar.d.ts +6 -0
- package/dist/cli/ink-cli/components/shared/HintBar.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/shared/HintBar.js +6 -0
- package/dist/cli/ink-cli/constants/spinnerFrames.d.ts +2 -0
- package/dist/cli/ink-cli/constants/spinnerFrames.d.ts.map +1 -0
- package/dist/cli/ink-cli/constants/spinnerFrames.js +1 -0
- package/dist/cli/ink-cli/constants/tips.d.ts.map +1 -1
- package/dist/cli/ink-cli/constants/tips.js +2 -1
- package/dist/cli/ink-cli/containers/InputContainer.d.ts +4 -0
- package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
- package/dist/cli/ink-cli/containers/InputContainer.js +47 -21
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts +2 -0
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
- package/dist/cli/ink-cli/containers/OverlayContainer.js +101 -40
- package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useAgentEvents.js +15 -16
- package/dist/cli/ink-cli/hooks/useAnimationTick.d.ts +11 -0
- package/dist/cli/ink-cli/hooks/useAnimationTick.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useAnimationTick.js +54 -0
- package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useCLIState.js +1 -0
- package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useTokenCounter.js +7 -4
- package/dist/cli/ink-cli/services/CommandService.d.ts +1 -1
- package/dist/cli/ink-cli/services/CommandService.d.ts.map +1 -1
- package/dist/cli/ink-cli/services/CommandService.js +2 -2
- package/dist/cli/ink-cli/services/processStream.d.ts +2 -2
- package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -1
- package/dist/cli/ink-cli/services/processStream.js +27 -19
- package/dist/cli/ink-cli/state/initialState.d.ts.map +1 -1
- package/dist/cli/ink-cli/state/initialState.js +1 -0
- package/dist/cli/ink-cli/state/types.d.ts +15 -3
- package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/commandOverlays.js +1 -0
- package/dist/cli/ink-cli/utils/elicitationSchema.d.ts +11 -0
- package/dist/cli/ink-cli/utils/elicitationSchema.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/elicitationSchema.js +80 -0
- package/dist/cli/ink-cli/utils/index.d.ts +1 -1
- package/dist/cli/ink-cli/utils/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/index.js +1 -1
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts +10 -19
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/messageFormatting.js +43 -262
- package/dist/cli/ink-cli/utils/overlayPresentation.d.ts +19 -0
- package/dist/cli/ink-cli/utils/overlayPresentation.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/overlayPresentation.js +33 -0
- package/dist/cli/ink-cli/utils/overlaySizing.d.ts +19 -0
- package/dist/cli/ink-cli/utils/overlaySizing.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/overlaySizing.js +11 -0
- package/dist/cli/ink-cli/utils/soundNotification.d.ts +19 -13
- package/dist/cli/ink-cli/utils/soundNotification.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/soundNotification.js +120 -97
- package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/toolUtils.js +2 -9
- package/dist/cli/utils/config-validation.d.ts +11 -11
- package/dist/cli/utils/config-validation.d.ts.map +1 -1
- package/dist/cli/utils/config-validation.js +56 -290
- package/dist/cli/utils/image-store.d.ts +16 -0
- package/dist/cli/utils/image-store.d.ts.map +1 -0
- package/dist/cli/utils/image-store.js +289 -0
- package/dist/cli/utils/scaffolding-utils.d.ts +5 -0
- package/dist/cli/utils/scaffolding-utils.d.ts.map +1 -1
- package/dist/cli/utils/scaffolding-utils.js +46 -4
- package/dist/cli/utils/template-engine.d.ts +28 -16
- package/dist/cli/utils/template-engine.d.ts.map +1 -1
- package/dist/cli/utils/template-engine.js +339 -479
- package/dist/config/cli-overrides.d.ts +4 -3
- package/dist/config/cli-overrides.d.ts.map +1 -1
- package/dist/config/cli-overrides.js +7 -9
- package/dist/index-main.d.ts +2 -0
- package/dist/index-main.d.ts.map +1 -0
- package/dist/index-main.js +1554 -0
- package/dist/index.js +2 -1589
- package/dist/utils/session-logger-factory.d.ts +3 -0
- package/dist/utils/session-logger-factory.d.ts.map +1 -0
- package/dist/utils/session-logger-factory.js +34 -0
- package/dist/webui/assets/{index-Cz2z7NQ8.js → index-CKhumsZA.js} +231 -231
- package/dist/webui/index.html +1 -1
- package/package.json +11 -8
- package/dist/cli/cli-subscriber.d.ts +0 -45
- package/dist/cli/cli-subscriber.d.ts.map +0 -1
- package/dist/cli/cli-subscriber.js +0 -204
|
@@ -41,7 +41,6 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
41
41
|
// Track if an external trigger is active (scheduler, A2A, etc.)
|
|
42
42
|
const externalTriggerRef = useRef({ active: false, sessionId: null, messageId: null });
|
|
43
43
|
useEffect(() => {
|
|
44
|
-
const bus = agent.agentEventBus;
|
|
45
44
|
const controller = new AbortController();
|
|
46
45
|
const { signal } = controller;
|
|
47
46
|
// Increase listener limit for safety (added more for external trigger events)
|
|
@@ -50,7 +49,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
50
49
|
// event ordering. Direct bus subscription here caused a race condition where
|
|
51
50
|
// approval UI showed before text messages were added.
|
|
52
51
|
// Handle model switch
|
|
53
|
-
|
|
52
|
+
agent.on('llm:switched', (payload) => {
|
|
54
53
|
if (payload.newConfig?.model) {
|
|
55
54
|
setSession((prev) => ({
|
|
56
55
|
...prev,
|
|
@@ -58,7 +57,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
58
57
|
}));
|
|
59
58
|
}
|
|
60
59
|
}, { signal });
|
|
61
|
-
|
|
60
|
+
agent.on('service:event', (payload) => {
|
|
62
61
|
if (payload.service !== 'orchestration' || payload.event !== 'tasks-updated') {
|
|
63
62
|
return;
|
|
64
63
|
}
|
|
@@ -85,7 +84,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
85
84
|
}));
|
|
86
85
|
}
|
|
87
86
|
}, { signal });
|
|
88
|
-
|
|
87
|
+
agent.on('tool:background', (payload) => {
|
|
89
88
|
if (payload.sessionId !== currentSessionId) {
|
|
90
89
|
return;
|
|
91
90
|
}
|
|
@@ -102,7 +101,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
102
101
|
};
|
|
103
102
|
}));
|
|
104
103
|
}, { signal });
|
|
105
|
-
|
|
104
|
+
agent.on('tool:background-completed', (payload) => {
|
|
106
105
|
if (payload.sessionId !== currentSessionId) {
|
|
107
106
|
return;
|
|
108
107
|
}
|
|
@@ -120,7 +119,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
120
119
|
}));
|
|
121
120
|
}, { signal });
|
|
122
121
|
// Handle conversation reset
|
|
123
|
-
|
|
122
|
+
agent.on('session:reset', () => {
|
|
124
123
|
setMessages([]);
|
|
125
124
|
setApproval(null);
|
|
126
125
|
setApprovalQueue([]);
|
|
@@ -128,7 +127,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
128
127
|
setUi((prev) => ({ ...prev, activeOverlay: 'none' }));
|
|
129
128
|
}, { signal });
|
|
130
129
|
// Handle session creation (e.g., from /new command)
|
|
131
|
-
|
|
130
|
+
agent.on('session:created', (payload) => {
|
|
132
131
|
if (payload.switchTo) {
|
|
133
132
|
// Clear the terminal screen for a fresh start (only in TTY environments)
|
|
134
133
|
// \x1B[2J clears visible screen, \x1B[3J clears scrollback, \x1B[H moves cursor to top
|
|
@@ -181,7 +180,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
181
180
|
// Handle context cleared (from /clear command)
|
|
182
181
|
// Keep messages visible for user reference - only context sent to LLM is cleared
|
|
183
182
|
// Just clean up any pending approvals/overlays/queued messages
|
|
184
|
-
|
|
183
|
+
agent.on('context:cleared', () => {
|
|
185
184
|
setApproval(null);
|
|
186
185
|
setApprovalQueue([]);
|
|
187
186
|
setQueuedMessages([]);
|
|
@@ -189,14 +188,14 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
189
188
|
}, { signal });
|
|
190
189
|
// Handle context compacting (from /compact command or auto-compaction)
|
|
191
190
|
// Single source of truth - handles both manual /compact and auto-compaction during streaming
|
|
192
|
-
|
|
191
|
+
agent.on('context:compacting', (payload) => {
|
|
193
192
|
if (payload.sessionId !== currentSessionId)
|
|
194
193
|
return;
|
|
195
194
|
setUi((prev) => ({ ...prev, isCompacting: true }));
|
|
196
195
|
}, { signal });
|
|
197
196
|
// Handle context compacted
|
|
198
197
|
// Single source of truth - shows notification for all compaction (manual and auto)
|
|
199
|
-
|
|
198
|
+
agent.on('context:compacted', (payload) => {
|
|
200
199
|
if (payload.sessionId !== currentSessionId)
|
|
201
200
|
return;
|
|
202
201
|
setUi((prev) => ({ ...prev, isCompacting: false }));
|
|
@@ -219,7 +218,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
219
218
|
]);
|
|
220
219
|
}, { signal });
|
|
221
220
|
// Handle message queued - fetch full queue state from agent
|
|
222
|
-
|
|
221
|
+
agent.on('message:queued', (payload) => {
|
|
223
222
|
if (!payload.sessionId)
|
|
224
223
|
return;
|
|
225
224
|
// Fetch fresh queue state from agent to ensure consistency
|
|
@@ -233,7 +232,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
233
232
|
});
|
|
234
233
|
}, { signal });
|
|
235
234
|
// Handle message removed from queue
|
|
236
|
-
|
|
235
|
+
agent.on('message:removed', (payload) => {
|
|
237
236
|
setQueuedMessages((prev) => prev.filter((m) => m.id !== payload.id));
|
|
238
237
|
}, { signal });
|
|
239
238
|
// Note: message:dequeued is handled in processStream (via iterator) for proper synchronization
|
|
@@ -244,7 +243,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
244
243
|
// through processStream (which only handles user-initiated streams).
|
|
245
244
|
// ============================================================================
|
|
246
245
|
// Handle external trigger invocation (scheduler, A2A, API)
|
|
247
|
-
|
|
246
|
+
agent.on('run:invoke', (payload) => {
|
|
248
247
|
// Only handle if this is for the current session
|
|
249
248
|
if (payload.sessionId !== currentSessionId) {
|
|
250
249
|
return;
|
|
@@ -299,7 +298,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
299
298
|
]);
|
|
300
299
|
}, { signal });
|
|
301
300
|
// Handle streaming chunks for external triggers
|
|
302
|
-
|
|
301
|
+
agent.on('llm:chunk', (payload) => {
|
|
303
302
|
// Only handle if this is for an active external trigger
|
|
304
303
|
if (!externalTriggerRef.current.active ||
|
|
305
304
|
payload.sessionId !== externalTriggerRef.current.sessionId) {
|
|
@@ -317,7 +316,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
317
316
|
setUi((prev) => (prev.isThinking ? { ...prev, isThinking: false } : prev));
|
|
318
317
|
}, { signal });
|
|
319
318
|
// Handle LLM thinking for external triggers
|
|
320
|
-
|
|
319
|
+
agent.on('llm:thinking', (payload) => {
|
|
321
320
|
if (!externalTriggerRef.current.active ||
|
|
322
321
|
payload.sessionId !== externalTriggerRef.current.sessionId) {
|
|
323
322
|
return;
|
|
@@ -325,7 +324,7 @@ export function useAgentEvents({ agent, setMessages, setPendingMessages, setUi,
|
|
|
325
324
|
setUi((prev) => ({ ...prev, isThinking: true }));
|
|
326
325
|
}, { signal });
|
|
327
326
|
// Handle run completion for external triggers
|
|
328
|
-
|
|
327
|
+
agent.on('run:complete', (payload) => {
|
|
329
328
|
// Only handle if this is for an active external trigger
|
|
330
329
|
if (!externalTriggerRef.current.active ||
|
|
331
330
|
payload.sessionId !== externalTriggerRef.current.sessionId) {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared animation tick for Ink UI.
|
|
3
|
+
*
|
|
4
|
+
* Motivation: avoid multiple independent timers (spinners, status indicators) that cause
|
|
5
|
+
* out-of-phase redraws and visible flicker.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useAnimationTick(options?: {
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
intervalMs?: number;
|
|
10
|
+
}): number;
|
|
11
|
+
//# sourceMappingURL=useAnimationTick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnimationTick.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useAnimationTick.ts"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAe7F"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useSyncExternalStore } from 'react';
|
|
2
|
+
const DEFAULT_INTERVAL_MS = 80;
|
|
3
|
+
let tick = 0;
|
|
4
|
+
let interval = null;
|
|
5
|
+
let intervalMs = DEFAULT_INTERVAL_MS;
|
|
6
|
+
const listeners = new Set();
|
|
7
|
+
function start() {
|
|
8
|
+
if (interval)
|
|
9
|
+
return;
|
|
10
|
+
interval = setInterval(() => {
|
|
11
|
+
tick = (tick + 1) % 1_000_000;
|
|
12
|
+
for (const listener of listeners)
|
|
13
|
+
listener();
|
|
14
|
+
}, intervalMs);
|
|
15
|
+
}
|
|
16
|
+
function stop() {
|
|
17
|
+
if (!interval)
|
|
18
|
+
return;
|
|
19
|
+
clearInterval(interval);
|
|
20
|
+
interval = null;
|
|
21
|
+
}
|
|
22
|
+
function subscribe(listener) {
|
|
23
|
+
listeners.add(listener);
|
|
24
|
+
start();
|
|
25
|
+
return () => {
|
|
26
|
+
listeners.delete(listener);
|
|
27
|
+
if (listeners.size === 0) {
|
|
28
|
+
stop();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function getSnapshot() {
|
|
33
|
+
return tick;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Shared animation tick for Ink UI.
|
|
37
|
+
*
|
|
38
|
+
* Motivation: avoid multiple independent timers (spinners, status indicators) that cause
|
|
39
|
+
* out-of-phase redraws and visible flicker.
|
|
40
|
+
*/
|
|
41
|
+
export function useAnimationTick(options) {
|
|
42
|
+
const enabled = options?.enabled ?? true;
|
|
43
|
+
const nextIntervalMs = options?.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
44
|
+
// Keep a single global cadence.
|
|
45
|
+
// If callers disagree, prefer the smallest interval so we don't slow down existing spinners.
|
|
46
|
+
if (nextIntervalMs < intervalMs) {
|
|
47
|
+
intervalMs = nextIntervalMs;
|
|
48
|
+
if (interval) {
|
|
49
|
+
stop();
|
|
50
|
+
start();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return useSyncExternalStore(enabled ? subscribe : () => () => { }, getSnapshot, getSnapshot);
|
|
54
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCLIState.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useCLIState.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useCLIState.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useCLIState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenCounter.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useTokenCounter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAChC,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACrB;AAsBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"useTokenCounter.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useTokenCounter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAChC,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACrB;AAsBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,GAAG,kBAAkB,CA6F5F"}
|
|
@@ -61,7 +61,6 @@ export function useTokenCounter({ agent, isActive }) {
|
|
|
61
61
|
currentCharCountRef.current = 0;
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
|
-
const bus = agent.agentEventBus;
|
|
65
64
|
const controller = new AbortController();
|
|
66
65
|
const { signal } = controller;
|
|
67
66
|
// Reset on new turn (isActive just became true)
|
|
@@ -70,14 +69,18 @@ export function useTokenCounter({ agent, isActive }) {
|
|
|
70
69
|
setCumulativeOutputTokens(0);
|
|
71
70
|
setCurrentSegmentEstimate(0);
|
|
72
71
|
// Track streaming chunks - accumulate estimate for current segment
|
|
73
|
-
|
|
72
|
+
agent.on('llm:chunk', (payload) => {
|
|
74
73
|
if (payload.chunkType === 'text') {
|
|
75
74
|
currentCharCountRef.current += payload.content.length;
|
|
76
|
-
|
|
75
|
+
const estimate = estimateTokens(currentCharCountRef.current);
|
|
76
|
+
// Avoid frequent re-renders for short responses where we don't show tokens anyway.
|
|
77
|
+
if (estimate >= 1000) {
|
|
78
|
+
setCurrentSegmentEstimate(estimate);
|
|
79
|
+
}
|
|
77
80
|
}
|
|
78
81
|
}, { signal });
|
|
79
82
|
// On response: update input (replace), accumulate output, reset estimate
|
|
80
|
-
|
|
83
|
+
agent.on('llm:response', (payload) => {
|
|
81
84
|
const usage = payload.tokenUsage;
|
|
82
85
|
if (usage) {
|
|
83
86
|
// Replace input tokens (most recent call's context)
|
|
@@ -53,6 +53,6 @@ export declare class CommandService {
|
|
|
53
53
|
/**
|
|
54
54
|
* Executes a command and returns the result
|
|
55
55
|
*/
|
|
56
|
-
executeCommand(command: string, args: string[], agent: DextoAgent, sessionId?: string): Promise<CommandExecutionResult>;
|
|
56
|
+
executeCommand(command: string, args: string[], agent: DextoAgent, sessionId?: string, configFilePath?: string | null): Promise<CommandExecutionResult>;
|
|
57
57
|
}
|
|
58
58
|
//# sourceMappingURL=CommandService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandService.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/services/CommandService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAQtE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,aAAa,EAAE,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAEvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,iBAAiB,CAShF;AAED;;GAEG;AACH,qBAAa,cAAc;IACvB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;IAIxC;;OAEG;IACG,cAAc,CAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"CommandService.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/services/CommandService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAQtE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,aAAa,EAAE,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAEvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,iBAAiB,CAShF;AAED;;GAEG;AACH,qBAAa,cAAc;IACvB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;IAIxC;;OAEG;IACG,cAAc,CAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,UAAU,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC,sBAAsB,CAAC;CAqBrC"}
|
|
@@ -44,8 +44,8 @@ export class CommandService {
|
|
|
44
44
|
/**
|
|
45
45
|
* Executes a command and returns the result
|
|
46
46
|
*/
|
|
47
|
-
async executeCommand(command, args, agent, sessionId) {
|
|
48
|
-
const result = await executeCommand(command, args, agent, sessionId);
|
|
47
|
+
async executeCommand(command, args, agent, sessionId, configFilePath) {
|
|
48
|
+
const result = await executeCommand(command, args, agent, sessionId, configFilePath);
|
|
49
49
|
// If result is a send message marker, return the text to send through normal flow
|
|
50
50
|
if (isSendMessageMarker(result)) {
|
|
51
51
|
return { type: 'sendMessage', messageToSend: result.text };
|
|
@@ -53,8 +53,8 @@ export interface ProcessStreamOptions {
|
|
|
53
53
|
autoApproveEditsRef: {
|
|
54
54
|
current: boolean;
|
|
55
55
|
};
|
|
56
|
-
/** Event
|
|
57
|
-
eventBus: import('@dexto/core').AgentEventBus
|
|
56
|
+
/** Event emitter for emitting auto-approval responses */
|
|
57
|
+
eventBus: Pick<import('@dexto/core').AgentEventBus, 'emit'>;
|
|
58
58
|
/** Sound notification service for playing sounds on events */
|
|
59
59
|
soundService?: import('../utils/soundNotification.js').SoundNotificationService;
|
|
60
60
|
/** Optional setter for todos (from service:event todo updates) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processStream.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/services/processStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAC;AAGvE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAc,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"processStream.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/services/processStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAC;AAGvE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAc,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAwBvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,2DAA2D;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,oFAAoF;IACpF,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,iFAAiF;IACjF,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,kEAAkE;IAClE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3F,yDAAyD;IACzD,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAC/F,4DAA4D;IAC5D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,uDAAuD;IACvD,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,mBAAmB,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1C,yDAAyD;IACzD,QAAQ,EAAE,IAAI,CAAC,OAAO,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5D,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,+BAA+B,EAAE,wBAAwB,CAAC;IAChF,kEAAkE;IAClE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;CAC3F;AA0BD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAC/B,QAAQ,EAAE,qBAAqB,CAAC,cAAc,CAAC,EAC/C,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAshCf"}
|
|
@@ -23,17 +23,10 @@ import { createDebugLogger } from '../utils/debugLog.js';
|
|
|
23
23
|
import { ApprovalType as ApprovalTypeEnum, ApprovalStatus } from '@dexto/core';
|
|
24
24
|
import { generateMessageId } from '../utils/idGenerator.js';
|
|
25
25
|
import { checkForSplit } from '../utils/streamSplitter.js';
|
|
26
|
-
import { formatToolHeader } from '../utils/messageFormatting.js';
|
|
26
|
+
import { formatToolHeader, shouldHideTool } from '../utils/messageFormatting.js';
|
|
27
27
|
import { isAutoApprovableInEditMode } from '../utils/toolUtils.js';
|
|
28
28
|
import { capture } from '../../../analytics/index.js';
|
|
29
29
|
import chalk from 'chalk';
|
|
30
|
-
const HIDDEN_TOOL_NAMES = new Set(['wait_for']);
|
|
31
|
-
const normalizeToolName = (toolName) => {
|
|
32
|
-
const stripped = toolName.replace(/^(?:internal--|internal__|custom--|custom__)/, '');
|
|
33
|
-
const delimiterSplit = stripped.split(/[:.]/);
|
|
34
|
-
return delimiterSplit[delimiterSplit.length - 1] ?? stripped;
|
|
35
|
-
};
|
|
36
|
-
const shouldHideTool = (toolName) => toolName ? HIDDEN_TOOL_NAMES.has(normalizeToolName(toolName)) : false;
|
|
37
30
|
/**
|
|
38
31
|
* Build error message with recovery guidance if available
|
|
39
32
|
*/
|
|
@@ -481,12 +474,20 @@ export async function processStream(iterator, setters, options) {
|
|
|
481
474
|
? `tool-${event.callId}`
|
|
482
475
|
: generateMessageId('tool');
|
|
483
476
|
// Format tool header using shared utility
|
|
484
|
-
const { header: toolContent } = formatToolHeader(
|
|
485
|
-
|
|
477
|
+
const { header: toolContent } = formatToolHeader({
|
|
478
|
+
toolName: event.toolName,
|
|
479
|
+
args: event.args || {},
|
|
480
|
+
...(event.presentationSnapshot !== undefined && {
|
|
481
|
+
presentationSnapshot: event.presentationSnapshot,
|
|
482
|
+
}),
|
|
483
|
+
});
|
|
484
|
+
// Add call description if present (dim styling, on new line)
|
|
485
|
+
// NOTE: This should come from tool call metadata (e.g., __meta.callDescription),
|
|
486
|
+
// not from tool args, to keep approval + history consistent.
|
|
486
487
|
let finalToolContent = toolContent;
|
|
487
|
-
const
|
|
488
|
-
if (
|
|
489
|
-
finalToolContent += `\n${chalk.dim(
|
|
488
|
+
const callDescription = event.callDescription;
|
|
489
|
+
if (typeof callDescription === 'string' && callDescription.trim().length > 0) {
|
|
490
|
+
finalToolContent += `\n${chalk.dim(callDescription)}`;
|
|
490
491
|
}
|
|
491
492
|
// Tool calls start in 'pending' state (don't know if approval needed yet)
|
|
492
493
|
// Status transitions: pending → pending_approval (if approval needed) → running → finished
|
|
@@ -737,10 +738,11 @@ export async function processStream(iterator, setters, options) {
|
|
|
737
738
|
// Read from ref to get latest value (may have changed mid-stream)
|
|
738
739
|
const autoApproveEdits = options.autoApproveEditsRef.current;
|
|
739
740
|
const { eventBus } = options;
|
|
740
|
-
if (autoApproveEdits && event.type === ApprovalTypeEnum.
|
|
741
|
-
// Type is narrowed - metadata is now
|
|
742
|
-
const { toolName } = event.metadata;
|
|
743
|
-
|
|
741
|
+
if (autoApproveEdits && event.type === ApprovalTypeEnum.TOOL_APPROVAL) {
|
|
742
|
+
// Type is narrowed - metadata is now ToolApprovalMetadata
|
|
743
|
+
const { toolName, directoryAccess } = event.metadata;
|
|
744
|
+
const hasDirectoryAccess = typeof directoryAccess === 'object' && directoryAccess !== null;
|
|
745
|
+
if (!hasDirectoryAccess && isAutoApprovableInEditMode(toolName)) {
|
|
744
746
|
// Auto-approve immediately - emit response and let tool:running handle status
|
|
745
747
|
eventBus.emit('approval:response', {
|
|
746
748
|
approvalId: event.approvalId,
|
|
@@ -753,7 +755,7 @@ export async function processStream(iterator, setters, options) {
|
|
|
753
755
|
}
|
|
754
756
|
// Manual approval needed - update tool status to 'pending_approval'
|
|
755
757
|
// Extract toolCallId based on approval type
|
|
756
|
-
const toolCallId = event.type === ApprovalTypeEnum.
|
|
758
|
+
const toolCallId = event.type === ApprovalTypeEnum.TOOL_APPROVAL
|
|
757
759
|
? event.metadata.toolCallId
|
|
758
760
|
: undefined;
|
|
759
761
|
if (toolCallId) {
|
|
@@ -761,7 +763,7 @@ export async function processStream(iterator, setters, options) {
|
|
|
761
763
|
updatePendingStatus(`tool-${toolCallId}`, 'pending_approval');
|
|
762
764
|
}
|
|
763
765
|
// Show approval UI (moved from useAgentEvents for ordering)
|
|
764
|
-
if (event.type === ApprovalTypeEnum.
|
|
766
|
+
if (event.type === ApprovalTypeEnum.TOOL_APPROVAL ||
|
|
765
767
|
event.type === ApprovalTypeEnum.COMMAND_CONFIRMATION ||
|
|
766
768
|
event.type === ApprovalTypeEnum.ELICITATION ||
|
|
767
769
|
event.type === ApprovalTypeEnum.DIRECTORY_ACCESS) {
|
|
@@ -865,6 +867,12 @@ export async function processStream(iterator, setters, options) {
|
|
|
865
867
|
subAgentProgress: {
|
|
866
868
|
task: progressData.task,
|
|
867
869
|
agentId: progressData.agentId,
|
|
870
|
+
...(progressData.runtimeAgentId !== undefined && {
|
|
871
|
+
runtimeAgentId: progressData.runtimeAgentId,
|
|
872
|
+
}),
|
|
873
|
+
...(progressData.subAgentLogFilePath !== undefined && {
|
|
874
|
+
subAgentLogFilePath: progressData.subAgentLogFilePath,
|
|
875
|
+
}),
|
|
868
876
|
toolsCalled: progressData.toolsCalled,
|
|
869
877
|
currentTool: progressData.currentTool,
|
|
870
878
|
...(progressData.currentArgs && {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialState.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/state/initialState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,GAAE,MAAW,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"initialState.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/state/initialState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,GAAE,MAAW,GAAG,QAAQ,CAgD1E"}
|
|
@@ -49,12 +49,12 @@ export interface ConfigStyledData {
|
|
|
49
49
|
model: string;
|
|
50
50
|
maxTokens: number | null;
|
|
51
51
|
temperature: number | null;
|
|
52
|
-
|
|
52
|
+
permissionsMode: string;
|
|
53
53
|
maxSessions: string;
|
|
54
54
|
sessionTTL: string;
|
|
55
55
|
mcpServers: string[];
|
|
56
56
|
promptsCount: number;
|
|
57
|
-
|
|
57
|
+
hooksEnabled: string[];
|
|
58
58
|
}
|
|
59
59
|
export interface StatsStyledData {
|
|
60
60
|
sessions: {
|
|
@@ -153,6 +153,10 @@ export interface SubAgentProgress {
|
|
|
153
153
|
task: string;
|
|
154
154
|
/** Agent ID (e.g., 'explore-agent') */
|
|
155
155
|
agentId: string;
|
|
156
|
+
/** Runtime agent ID for ephemeral sub-agent (e.g., 'agent-ba01ae37') */
|
|
157
|
+
runtimeAgentId?: string;
|
|
158
|
+
/** Optional file path where the sub-agent logs are written */
|
|
159
|
+
subAgentLogFilePath?: string;
|
|
156
160
|
/** Number of tools called by the sub-agent */
|
|
157
161
|
toolsCalled: number;
|
|
158
162
|
/** Current tool being executed */
|
|
@@ -270,7 +274,14 @@ export interface InputState {
|
|
|
270
274
|
/**
|
|
271
275
|
* Available overlay types
|
|
272
276
|
*/
|
|
273
|
-
export type OverlayType = 'none' | 'slash-autocomplete' | 'resource-autocomplete' | 'model-selector' | 'custom-model-wizard' | 'session-selector' | 'mcp-server-list' | 'mcp-server-actions' | 'mcp-add-choice' | 'mcp-add-selector' | 'mcp-custom-type-selector' | 'mcp-custom-wizard' | 'log-level-selector' | 'stream-selector' | 'session-subcommand-selector' | 'api-key-input' | 'search' | 'approval' | 'tool-browser' | 'prompt-list' | 'prompt-add-choice' | 'prompt-add-wizard' | 'prompt-delete-selector' | 'session-rename' | 'context-stats' | 'export-wizard' | 'plugin-manager' | 'plugin-list' | 'plugin-actions' | 'marketplace-browser' | 'marketplace-add';
|
|
277
|
+
export type OverlayType = 'none' | 'slash-autocomplete' | 'resource-autocomplete' | 'model-selector' | 'custom-model-wizard' | 'session-selector' | 'mcp-server-list' | 'mcp-server-actions' | 'mcp-add-choice' | 'mcp-add-selector' | 'mcp-custom-type-selector' | 'mcp-custom-wizard' | 'log-level-selector' | 'stream-selector' | 'sounds-selector' | 'session-subcommand-selector' | 'api-key-input' | 'search' | 'approval' | 'tool-browser' | 'prompt-list' | 'prompt-add-choice' | 'prompt-add-wizard' | 'prompt-delete-selector' | 'session-rename' | 'context-stats' | 'export-wizard' | 'plugin-manager' | 'plugin-list' | 'plugin-actions' | 'marketplace-browser' | 'marketplace-add' | 'command-output';
|
|
278
|
+
/**
|
|
279
|
+
* Temporary modal output for slash commands (e.g., /help, /stats).
|
|
280
|
+
*/
|
|
281
|
+
export interface CommandOutputState {
|
|
282
|
+
title: string;
|
|
283
|
+
content: string;
|
|
284
|
+
}
|
|
274
285
|
/**
|
|
275
286
|
* MCP server type for custom wizard (null = not yet selected)
|
|
276
287
|
*/
|
|
@@ -344,6 +355,7 @@ export interface UIState {
|
|
|
344
355
|
}>;
|
|
345
356
|
planModeActive: boolean;
|
|
346
357
|
planModeInitialized: boolean;
|
|
358
|
+
commandOutput: CommandOutputState | null;
|
|
347
359
|
}
|
|
348
360
|
/**
|
|
349
361
|
* Session state management
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/state/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrD,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kDAAkD;IAClD,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACvB,QAAQ,GACR,OAAO,GACP,MAAM,GACN,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,aAAa,GACb,SAAS,GACT,WAAW,GACX,WAAW,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/state/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandOverlays.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/commandOverlays.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"commandOverlays.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/commandOverlays.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkCrD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAYrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU9E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ElicitationFormField {
|
|
2
|
+
name: string;
|
|
3
|
+
stepLabel: string;
|
|
4
|
+
question: string;
|
|
5
|
+
helpText: string | undefined;
|
|
6
|
+
type: 'string' | 'number' | 'boolean' | 'enum' | 'array-enum';
|
|
7
|
+
required: boolean;
|
|
8
|
+
enumValues: unknown[] | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare function parseElicitationSchema(schema: unknown): ElicitationFormField[];
|
|
11
|
+
//# sourceMappingURL=elicitationSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elicitationSchema.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/elicitationSchema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;IAC9D,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;CACrC;AAyDD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,oBAAoB,EAAE,CA2C9E"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
function humanizeIdentifier(value) {
|
|
2
|
+
return value
|
|
3
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
4
|
+
.replace(/[_-]+/g, ' ')
|
|
5
|
+
.replace(/\s+/g, ' ')
|
|
6
|
+
.trim();
|
|
7
|
+
}
|
|
8
|
+
function titleCaseWords(value) {
|
|
9
|
+
return value
|
|
10
|
+
.split(' ')
|
|
11
|
+
.map((word) => (word ? word.charAt(0).toUpperCase() + word.slice(1) : ''))
|
|
12
|
+
.join(' ');
|
|
13
|
+
}
|
|
14
|
+
function cleanLabel(value) {
|
|
15
|
+
return value
|
|
16
|
+
.replace(/^\s*\d+\s*[).:-]\s*/g, '')
|
|
17
|
+
.replace(/\s*[:*]\s*$/g, '')
|
|
18
|
+
.trim();
|
|
19
|
+
}
|
|
20
|
+
function makeLabel(name) {
|
|
21
|
+
return titleCaseWords(humanizeIdentifier(name)) || name;
|
|
22
|
+
}
|
|
23
|
+
function getXDextoStepLabel(prop) {
|
|
24
|
+
const xDexto = prop['x-dexto'];
|
|
25
|
+
if (!xDexto || typeof xDexto !== 'object' || Array.isArray(xDexto))
|
|
26
|
+
return undefined;
|
|
27
|
+
const stepLabel = xDexto.stepLabel;
|
|
28
|
+
if (typeof stepLabel !== 'string')
|
|
29
|
+
return undefined;
|
|
30
|
+
return cleanLabel(stepLabel) || undefined;
|
|
31
|
+
}
|
|
32
|
+
function getFieldType(prop) {
|
|
33
|
+
const { type } = prop;
|
|
34
|
+
if (type === 'boolean')
|
|
35
|
+
return { type: 'boolean', enumValues: undefined };
|
|
36
|
+
if (type === 'number' || type === 'integer')
|
|
37
|
+
return { type: 'number', enumValues: undefined };
|
|
38
|
+
if (type === 'array' && prop.items && Array.isArray(prop.items.enum)) {
|
|
39
|
+
return { type: 'array-enum', enumValues: prop.items.enum };
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(prop.enum))
|
|
42
|
+
return { type: 'enum', enumValues: prop.enum };
|
|
43
|
+
return { type: 'string', enumValues: undefined };
|
|
44
|
+
}
|
|
45
|
+
export function parseElicitationSchema(schema) {
|
|
46
|
+
if (!schema || typeof schema !== 'object' || Array.isArray(schema))
|
|
47
|
+
return [];
|
|
48
|
+
const schemaRecord = schema;
|
|
49
|
+
const properties = schemaRecord.properties;
|
|
50
|
+
if (!properties || typeof properties !== 'object' || Array.isArray(properties))
|
|
51
|
+
return [];
|
|
52
|
+
const required = Array.isArray(schemaRecord.required)
|
|
53
|
+
? schemaRecord.required.filter((v) => typeof v === 'string')
|
|
54
|
+
: [];
|
|
55
|
+
const result = [];
|
|
56
|
+
for (const [name, rawProp] of Object.entries(properties)) {
|
|
57
|
+
if (typeof rawProp === 'boolean' ||
|
|
58
|
+
!rawProp ||
|
|
59
|
+
typeof rawProp !== 'object' ||
|
|
60
|
+
Array.isArray(rawProp)) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const prop = rawProp;
|
|
64
|
+
const { type, enumValues } = getFieldType(prop);
|
|
65
|
+
const fallbackLabel = makeLabel(name);
|
|
66
|
+
const stepLabel = getXDextoStepLabel(prop) || fallbackLabel;
|
|
67
|
+
const question = (prop.title ? cleanLabel(prop.title) : '') || fallbackLabel;
|
|
68
|
+
const helpText = (prop.description ? cleanLabel(prop.description) : '') || undefined;
|
|
69
|
+
result.push({
|
|
70
|
+
name,
|
|
71
|
+
stepLabel,
|
|
72
|
+
question,
|
|
73
|
+
helpText,
|
|
74
|
+
type,
|
|
75
|
+
required: required.includes(name),
|
|
76
|
+
enumValues,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|