@dexto/tui 1.7.1 → 1.8.0
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/dist/agent-backend.cjs +16 -2
- package/dist/agent-backend.d.ts +5 -2
- package/dist/agent-backend.d.ts.map +1 -1
- package/dist/agent-backend.js +15 -2
- package/dist/agent-backend.test.cjs +28 -2
- package/dist/agent-backend.test.js +28 -2
- package/dist/components/ApprovalPrompt.cjs +6 -5
- package/dist/components/ApprovalPrompt.d.ts +1 -1
- package/dist/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/ApprovalPrompt.js +6 -5
- package/dist/components/TextBufferInput.cjs +14 -1
- package/dist/components/TextBufferInput.d.ts +5 -1
- package/dist/components/TextBufferInput.d.ts.map +1 -1
- package/dist/components/TextBufferInput.js +14 -1
- package/dist/components/chat/QueuedMessagesDisplay.cjs +17 -8
- package/dist/components/chat/QueuedMessagesDisplay.d.ts +7 -1
- package/dist/components/chat/QueuedMessagesDisplay.d.ts.map +1 -1
- package/dist/components/chat/QueuedMessagesDisplay.js +16 -8
- package/dist/components/input/InputArea.cjs +4 -0
- package/dist/components/input/InputArea.d.ts +5 -1
- package/dist/components/input/InputArea.d.ts.map +1 -1
- package/dist/components/input/InputArea.js +4 -0
- package/dist/components/modes/AlternateBufferCLI.cjs +20 -1
- package/dist/components/modes/AlternateBufferCLI.d.ts.map +1 -1
- package/dist/components/modes/AlternateBufferCLI.js +21 -2
- package/dist/components/modes/StaticCLI.cjs +20 -1
- package/dist/components/modes/StaticCLI.d.ts.map +1 -1
- package/dist/components/modes/StaticCLI.js +21 -2
- package/dist/components/overlays/LoginOverlay.cjs +2 -10
- package/dist/components/overlays/LoginOverlay.d.ts.map +1 -1
- package/dist/components/overlays/LoginOverlay.js +3 -11
- package/dist/containers/InputContainer.cjs +119 -18
- package/dist/containers/InputContainer.d.ts +6 -2
- package/dist/containers/InputContainer.d.ts.map +1 -1
- package/dist/containers/InputContainer.js +119 -18
- package/dist/hooks/useAgentEvents.cjs +27 -5
- package/dist/hooks/useAgentEvents.d.ts +3 -2
- package/dist/hooks/useAgentEvents.d.ts.map +1 -1
- package/dist/hooks/useAgentEvents.js +27 -5
- package/dist/hooks/useCLIState.cjs +10 -4
- package/dist/hooks/useCLIState.d.ts +2 -0
- package/dist/hooks/useCLIState.d.ts.map +1 -1
- package/dist/hooks/useCLIState.js +10 -4
- package/dist/hooks/useInputOrchestrator.cjs +15 -14
- package/dist/hooks/useInputOrchestrator.d.ts +6 -6
- package/dist/hooks/useInputOrchestrator.d.ts.map +1 -1
- package/dist/hooks/useInputOrchestrator.js +15 -14
- package/dist/host/index.cjs +6 -6
- package/dist/host/index.d.ts +8 -17
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +5 -5
- package/dist/host/index.test.cjs +47 -0
- package/dist/host/index.test.d.ts +2 -0
- package/dist/host/index.test.d.ts.map +1 -0
- package/dist/host/index.test.js +50 -0
- package/dist/index.d.cts +10 -15
- package/dist/interactive-commands/command-parser.cjs +1 -0
- package/dist/interactive-commands/command-parser.d.ts.map +1 -1
- package/dist/interactive-commands/command-parser.js +1 -0
- package/dist/interactive-commands/commands.cjs +3 -0
- package/dist/interactive-commands/commands.d.ts.map +1 -1
- package/dist/interactive-commands/commands.js +3 -0
- package/dist/interactive-commands/commands.test.cjs +42 -0
- package/dist/interactive-commands/commands.test.js +42 -0
- package/dist/interactive-commands/prompt-commands.cjs +4 -66
- package/dist/interactive-commands/prompt-commands.d.ts +1 -2
- package/dist/interactive-commands/prompt-commands.d.ts.map +1 -1
- package/dist/interactive-commands/prompt-commands.js +4 -66
- package/dist/interactive-commands/skill-commands.cjs +73 -0
- package/dist/interactive-commands/skill-commands.d.ts +9 -0
- package/dist/interactive-commands/skill-commands.d.ts.map +1 -0
- package/dist/interactive-commands/skill-commands.js +49 -0
- package/dist/services/processStream.cjs +23 -4
- package/dist/services/processStream.d.ts +3 -1
- package/dist/services/processStream.d.ts.map +1 -1
- package/dist/services/processStream.js +23 -4
- package/dist/services/processStream.test.cjs +52 -2
- package/dist/services/processStream.test.js +52 -2
- package/dist/state/initialState.cjs +2 -1
- package/dist/state/initialState.d.ts.map +1 -1
- package/dist/state/initialState.js +2 -1
- package/dist/state/reducer.cjs +10 -5
- package/dist/state/reducer.d.ts.map +1 -1
- package/dist/state/reducer.js +10 -5
- package/dist/state/types.d.ts +2 -0
- package/dist/state/types.d.ts.map +1 -1
- package/dist/utils/messageFormatting.cjs +0 -23
- package/dist/utils/messageFormatting.d.ts +0 -13
- package/dist/utils/messageFormatting.d.ts.map +1 -1
- package/dist/utils/messageFormatting.js +0 -21
- package/dist/utils/queuedComposerContent.cjs +148 -0
- package/dist/utils/queuedComposerContent.d.ts +17 -0
- package/dist/utils/queuedComposerContent.d.ts.map +1 -0
- package/dist/utils/queuedComposerContent.js +123 -0
- package/dist/utils/queuedComposerContent.test.cjs +176 -0
- package/dist/utils/queuedComposerContent.test.d.ts +2 -0
- package/dist/utils/queuedComposerContent.test.d.ts.map +1 -0
- package/dist/utils/queuedComposerContent.test.js +175 -0
- package/package.json +4 -4
package/dist/state/reducer.js
CHANGED
|
@@ -21,7 +21,8 @@ function cliReducer(state, action) {
|
|
|
21
21
|
input: {
|
|
22
22
|
...state.input,
|
|
23
23
|
value: "",
|
|
24
|
-
historyIndex: -1
|
|
24
|
+
historyIndex: -1,
|
|
25
|
+
editingQueuedFollowUp: false
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
28
|
case "INPUT_HISTORY_NAVIGATE": {
|
|
@@ -43,7 +44,8 @@ function cliReducer(state, action) {
|
|
|
43
44
|
input: {
|
|
44
45
|
...state.input,
|
|
45
46
|
value: "",
|
|
46
|
-
historyIndex: -1
|
|
47
|
+
historyIndex: -1,
|
|
48
|
+
editingQueuedFollowUp: false
|
|
47
49
|
}
|
|
48
50
|
};
|
|
49
51
|
}
|
|
@@ -55,7 +57,8 @@ function cliReducer(state, action) {
|
|
|
55
57
|
input: {
|
|
56
58
|
...state.input,
|
|
57
59
|
value: historyItem || "",
|
|
58
|
-
historyIndex: newIndex
|
|
60
|
+
historyIndex: newIndex,
|
|
61
|
+
editingQueuedFollowUp: false
|
|
59
62
|
}
|
|
60
63
|
};
|
|
61
64
|
}
|
|
@@ -64,7 +67,8 @@ function cliReducer(state, action) {
|
|
|
64
67
|
...state,
|
|
65
68
|
input: {
|
|
66
69
|
...state.input,
|
|
67
|
-
historyIndex: -1
|
|
70
|
+
historyIndex: -1,
|
|
71
|
+
editingQueuedFollowUp: false
|
|
68
72
|
}
|
|
69
73
|
};
|
|
70
74
|
case "INPUT_HISTORY_ADD": {
|
|
@@ -78,7 +82,8 @@ function cliReducer(state, action) {
|
|
|
78
82
|
...state.input,
|
|
79
83
|
history: [...history, action.value].slice(-100),
|
|
80
84
|
// Keep last 100
|
|
81
|
-
historyIndex: -1
|
|
85
|
+
historyIndex: -1,
|
|
86
|
+
editingQueuedFollowUp: false
|
|
82
87
|
}
|
|
83
88
|
};
|
|
84
89
|
}
|
package/dist/state/types.d.ts
CHANGED
|
@@ -277,6 +277,8 @@ export interface InputState {
|
|
|
277
277
|
pastedBlocks: PastedBlock[];
|
|
278
278
|
/** Counter for generating sequential paste numbers */
|
|
279
279
|
pasteCounter: number;
|
|
280
|
+
/** True while editing a queued follow-up pulled back into the input */
|
|
281
|
+
editingQueuedFollowUp: boolean;
|
|
280
282
|
}
|
|
281
283
|
export interface InsufficientCreditsState {
|
|
282
284
|
balanceUsd: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,13 +38,11 @@ __export(messageFormatting_exports, {
|
|
|
38
38
|
createUserMessage: () => createUserMessage,
|
|
39
39
|
extractAutomationTriggerInfo: () => extractAutomationTriggerInfo,
|
|
40
40
|
formatPathForDisplay: () => formatPathForDisplay,
|
|
41
|
-
formatSkillInvocationMessage: () => formatSkillInvocationMessage,
|
|
42
41
|
formatToolHeader: () => formatToolHeader,
|
|
43
42
|
formatToolResultPreview: () => formatToolResultPreview,
|
|
44
43
|
getStartupInfo: () => getStartupInfo,
|
|
45
44
|
getToolDisplayName: () => getToolDisplayName,
|
|
46
45
|
getToolTypeBadge: () => getToolTypeBadge,
|
|
47
|
-
isSkillInvocationMessage: () => isSkillInvocationMessage,
|
|
48
46
|
makeRelativePath: () => makeRelativePath,
|
|
49
47
|
normalizeToolName: () => normalizeToolName,
|
|
50
48
|
shouldHideTool: () => shouldHideTool,
|
|
@@ -73,23 +71,7 @@ function shouldHideTool(toolName) {
|
|
|
73
71
|
}
|
|
74
72
|
const backgroundCompletionRegex = /<background-task-completion>[\s\S]*?<\/background-task-completion>/g;
|
|
75
73
|
const stripBackgroundCompletion = (text) => text.replace(backgroundCompletionRegex, "").replace("<background-task-completion>", "").trim();
|
|
76
|
-
const SKILL_INVOCATION_REGEX = /<skill-invocation>[\s\S]*?skill:\s*"(?:config:)?([^"]+)"[\s\S]*?<\/skill-invocation>/;
|
|
77
74
|
const AUTOMATION_TRIGGER_REGEX = /<scheduled_automation_trigger>[\s\S]*?<\/scheduled_automation_trigger>/;
|
|
78
|
-
function formatSkillInvocationMessage(content) {
|
|
79
|
-
const match = content.match(SKILL_INVOCATION_REGEX);
|
|
80
|
-
if (match) {
|
|
81
|
-
const skillName = match[1];
|
|
82
|
-
const contextMatch = content.match(/Task context:\s*(.+?)(?:\n|$)/);
|
|
83
|
-
if (contextMatch) {
|
|
84
|
-
return `/${skillName} ${contextMatch[1]}`;
|
|
85
|
-
}
|
|
86
|
-
return `/${skillName}`;
|
|
87
|
-
}
|
|
88
|
-
return content;
|
|
89
|
-
}
|
|
90
|
-
function isSkillInvocationMessage(content) {
|
|
91
|
-
return SKILL_INVOCATION_REGEX.test(content);
|
|
92
|
-
}
|
|
93
75
|
function extractAutomationTriggerInfo(content) {
|
|
94
76
|
const match = content.match(AUTOMATION_TRIGGER_REGEX);
|
|
95
77
|
if (!match) {
|
|
@@ -394,9 +376,6 @@ function convertHistoryToUIMessages(history, sessionId) {
|
|
|
394
376
|
});
|
|
395
377
|
textContent = stripAutomationTriggerTags(textContent);
|
|
396
378
|
}
|
|
397
|
-
if (msg.role === "user") {
|
|
398
|
-
textContent = formatSkillInvocationMessage(textContent);
|
|
399
|
-
}
|
|
400
379
|
uiMessages.push({
|
|
401
380
|
id: `session-${sessionId}-${index}`,
|
|
402
381
|
role: msg.role,
|
|
@@ -445,13 +424,11 @@ async function getStartupInfo(agent, sessionId) {
|
|
|
445
424
|
createUserMessage,
|
|
446
425
|
extractAutomationTriggerInfo,
|
|
447
426
|
formatPathForDisplay,
|
|
448
|
-
formatSkillInvocationMessage,
|
|
449
427
|
formatToolHeader,
|
|
450
428
|
formatToolResultPreview,
|
|
451
429
|
getStartupInfo,
|
|
452
430
|
getToolDisplayName,
|
|
453
431
|
getToolTypeBadge,
|
|
454
|
-
isSkillInvocationMessage,
|
|
455
432
|
makeRelativePath,
|
|
456
433
|
normalizeToolName,
|
|
457
434
|
shouldHideTool,
|
|
@@ -7,19 +7,6 @@ import type { Message, ExternalTriggerStyledData } from '../state/types.js';
|
|
|
7
7
|
import { type TuiAgentBackend } from '../agent-backend.js';
|
|
8
8
|
export declare function normalizeToolName(toolName: string): string;
|
|
9
9
|
export declare function shouldHideTool(toolName: string | undefined): boolean;
|
|
10
|
-
/**
|
|
11
|
-
* Formats a skill invocation message for clean display.
|
|
12
|
-
* Converts verbose <skill-invocation> blocks to clean /skill-name format.
|
|
13
|
-
* Works for both fork skills (just the tag) and inline skills (tag + content).
|
|
14
|
-
*
|
|
15
|
-
* @param content - The message content to check and format
|
|
16
|
-
* @returns Formatted content if it's a skill invocation, original content otherwise
|
|
17
|
-
*/
|
|
18
|
-
export declare function formatSkillInvocationMessage(content: string): string;
|
|
19
|
-
/**
|
|
20
|
-
* Checks if a message content is a skill invocation.
|
|
21
|
-
*/
|
|
22
|
-
export declare function isSkillInvocationMessage(content: string): boolean;
|
|
23
10
|
export declare function extractAutomationTriggerInfo(content: string): {
|
|
24
11
|
label: string;
|
|
25
12
|
timestamp: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageFormatting.d.ts","sourceRoot":"","sources":["../../src/utils/messageFormatting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACR,eAAe,EAGf,0BAA0B,EAC7B,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAIhF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAMpE;
|
|
1
|
+
{"version":3,"file":"messageFormatting.d.ts","sourceRoot":"","sources":["../../src/utils/messageFormatting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACR,eAAe,EAGf,0BAA0B,EAC7B,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAIhF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAMpE;AAYD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC;CAC/C,GAAG,IAAI,CAiBP;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAmB1F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,MAAW,EACrB,GAAG,GAAE,MAAsB,GAC5B,MAAM,CAWR;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiC7E;AAgBD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU3D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWzD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACrD,GAAG,mBAAmB,CAuBtB;AAqBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CASvF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAQjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAQhD;AAgBD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkC9D;AA+CD;;GAEG;AACH,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,eAAe,EAAE,EAC1B,SAAS,EAAE,MAAM,GAClB,OAAO,EAAE,CA+HX;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;;;;;;;;GA+BpF"}
|
|
@@ -20,23 +20,7 @@ function shouldHideTool(toolName) {
|
|
|
20
20
|
const backgroundCompletionRegex = /<background-task-completion>[\s\S]*?<\/background-task-completion>/g;
|
|
21
21
|
const stripBackgroundCompletion = (text) => text.replace(backgroundCompletionRegex, "").replace("<background-task-completion>", "").trim();
|
|
22
22
|
import { generateMessageId } from "./idGenerator.js";
|
|
23
|
-
const SKILL_INVOCATION_REGEX = /<skill-invocation>[\s\S]*?skill:\s*"(?:config:)?([^"]+)"[\s\S]*?<\/skill-invocation>/;
|
|
24
23
|
const AUTOMATION_TRIGGER_REGEX = /<scheduled_automation_trigger>[\s\S]*?<\/scheduled_automation_trigger>/;
|
|
25
|
-
function formatSkillInvocationMessage(content) {
|
|
26
|
-
const match = content.match(SKILL_INVOCATION_REGEX);
|
|
27
|
-
if (match) {
|
|
28
|
-
const skillName = match[1];
|
|
29
|
-
const contextMatch = content.match(/Task context:\s*(.+?)(?:\n|$)/);
|
|
30
|
-
if (contextMatch) {
|
|
31
|
-
return `/${skillName} ${contextMatch[1]}`;
|
|
32
|
-
}
|
|
33
|
-
return `/${skillName}`;
|
|
34
|
-
}
|
|
35
|
-
return content;
|
|
36
|
-
}
|
|
37
|
-
function isSkillInvocationMessage(content) {
|
|
38
|
-
return SKILL_INVOCATION_REGEX.test(content);
|
|
39
|
-
}
|
|
40
24
|
function extractAutomationTriggerInfo(content) {
|
|
41
25
|
const match = content.match(AUTOMATION_TRIGGER_REGEX);
|
|
42
26
|
if (!match) {
|
|
@@ -341,9 +325,6 @@ function convertHistoryToUIMessages(history, sessionId) {
|
|
|
341
325
|
});
|
|
342
326
|
textContent = stripAutomationTriggerTags(textContent);
|
|
343
327
|
}
|
|
344
|
-
if (msg.role === "user") {
|
|
345
|
-
textContent = formatSkillInvocationMessage(textContent);
|
|
346
|
-
}
|
|
347
328
|
uiMessages.push({
|
|
348
329
|
id: `session-${sessionId}-${index}`,
|
|
349
330
|
role: msg.role,
|
|
@@ -391,13 +372,11 @@ export {
|
|
|
391
372
|
createUserMessage,
|
|
392
373
|
extractAutomationTriggerInfo,
|
|
393
374
|
formatPathForDisplay,
|
|
394
|
-
formatSkillInvocationMessage,
|
|
395
375
|
formatToolHeader,
|
|
396
376
|
formatToolResultPreview,
|
|
397
377
|
getStartupInfo,
|
|
398
378
|
getToolDisplayName,
|
|
399
379
|
getToolTypeBadge,
|
|
400
|
-
isSkillInvocationMessage,
|
|
401
380
|
makeRelativePath,
|
|
402
381
|
normalizeToolName,
|
|
403
382
|
shouldHideTool,
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var queuedComposerContent_exports = {};
|
|
20
|
+
__export(queuedComposerContent_exports, {
|
|
21
|
+
previewQueuedContent: () => previewQueuedContent,
|
|
22
|
+
restoreQueuedContentForComposer: () => restoreQueuedContentForComposer
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(queuedComposerContent_exports);
|
|
25
|
+
function imagePlaceholder(index) {
|
|
26
|
+
return `[Image ${index}]`;
|
|
27
|
+
}
|
|
28
|
+
function imagePlaceholdersIn(text) {
|
|
29
|
+
const seen = /* @__PURE__ */ new Set();
|
|
30
|
+
const placeholders = [];
|
|
31
|
+
for (const match of text.matchAll(/\[Image \d+\]/g)) {
|
|
32
|
+
const placeholder = match[0];
|
|
33
|
+
if (!seen.has(placeholder)) {
|
|
34
|
+
seen.add(placeholder);
|
|
35
|
+
placeholders.push(placeholder);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return placeholders;
|
|
39
|
+
}
|
|
40
|
+
function nextImagePlaceholder(usedPlaceholders) {
|
|
41
|
+
let index = 1;
|
|
42
|
+
while (usedPlaceholders.has(imagePlaceholder(index))) {
|
|
43
|
+
index += 1;
|
|
44
|
+
}
|
|
45
|
+
const placeholder = imagePlaceholder(index);
|
|
46
|
+
usedPlaceholders.add(placeholder);
|
|
47
|
+
return placeholder;
|
|
48
|
+
}
|
|
49
|
+
function imageDataForComposer(part) {
|
|
50
|
+
if (typeof part.image === "string") {
|
|
51
|
+
return part.image;
|
|
52
|
+
}
|
|
53
|
+
if (part.image instanceof URL) {
|
|
54
|
+
return part.image.toString();
|
|
55
|
+
}
|
|
56
|
+
if (part.image instanceof ArrayBuffer) {
|
|
57
|
+
return Buffer.from(new Uint8Array(part.image)).toString("base64");
|
|
58
|
+
}
|
|
59
|
+
return Buffer.from(part.image).toString("base64");
|
|
60
|
+
}
|
|
61
|
+
function textParts(content) {
|
|
62
|
+
return content.filter((part) => part.type === "text");
|
|
63
|
+
}
|
|
64
|
+
function imageParts(content) {
|
|
65
|
+
return content.filter((part) => part.type === "image");
|
|
66
|
+
}
|
|
67
|
+
function unsupportedParts(content) {
|
|
68
|
+
return content.filter((part) => part.type !== "text" && part.type !== "image");
|
|
69
|
+
}
|
|
70
|
+
function appendPlaceholderSegment(segments, placeholder) {
|
|
71
|
+
const previousSegment = segments[segments.length - 1];
|
|
72
|
+
if (previousSegment?.match(/^\[Image \d+\]( \[Image \d+\])*$/)) {
|
|
73
|
+
segments[segments.length - 1] = `${previousSegment} ${placeholder}`;
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
segments.push(placeholder);
|
|
77
|
+
}
|
|
78
|
+
function composerTextAndPlaceholders(content) {
|
|
79
|
+
const text = textParts(content).map((part) => part.text).join("\n");
|
|
80
|
+
const existingPlaceholders = imagePlaceholdersIn(text);
|
|
81
|
+
const usedPlaceholders = new Set(existingPlaceholders);
|
|
82
|
+
const placeholders = [];
|
|
83
|
+
const segments = [];
|
|
84
|
+
let existingPlaceholderIndex = 0;
|
|
85
|
+
for (const part of content) {
|
|
86
|
+
if (part.type === "text") {
|
|
87
|
+
if (part.text.length > 0) {
|
|
88
|
+
segments.push(part.text);
|
|
89
|
+
}
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (part.type !== "image") {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const existingPlaceholder = existingPlaceholders[existingPlaceholderIndex];
|
|
96
|
+
if (existingPlaceholder) {
|
|
97
|
+
placeholders.push(existingPlaceholder);
|
|
98
|
+
existingPlaceholderIndex += 1;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const placeholder = nextImagePlaceholder(usedPlaceholders);
|
|
102
|
+
placeholders.push(placeholder);
|
|
103
|
+
appendPlaceholderSegment(segments, placeholder);
|
|
104
|
+
}
|
|
105
|
+
return { text: segments.join("\n"), placeholders };
|
|
106
|
+
}
|
|
107
|
+
function restoreQueuedContentForComposer(message) {
|
|
108
|
+
const unsupported = unsupportedParts(message.content);
|
|
109
|
+
if (unsupported.length > 0) {
|
|
110
|
+
return {
|
|
111
|
+
ok: false,
|
|
112
|
+
reason: "Queued input with non-image attachments cannot be edited in the terminal yet."
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const images = imageParts(message.content);
|
|
116
|
+
const composer = composerTextAndPlaceholders(message.content);
|
|
117
|
+
return {
|
|
118
|
+
ok: true,
|
|
119
|
+
composer: {
|
|
120
|
+
text: composer.text,
|
|
121
|
+
images: images.map((part, index) => ({
|
|
122
|
+
id: `${message.id}-image-${index + 1}`,
|
|
123
|
+
data: imageDataForComposer(part),
|
|
124
|
+
mimeType: part.mimeType ?? "image/png",
|
|
125
|
+
placeholder: composer.placeholders[index] ?? imagePlaceholder(index + 1)
|
|
126
|
+
}))
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function previewQueuedContent(content) {
|
|
131
|
+
const textWithImages = composerTextAndPlaceholders(content).text.replace(/\n/g, " ");
|
|
132
|
+
const markers = content.filter((part) => part.type !== "text" && part.type !== "image").map((part) => {
|
|
133
|
+
switch (part.type) {
|
|
134
|
+
case "file":
|
|
135
|
+
return part.filename ? `[file: ${part.filename}]` : "[file]";
|
|
136
|
+
case "resource":
|
|
137
|
+
return `[resource: ${part.name}]`;
|
|
138
|
+
case "ui-resource":
|
|
139
|
+
return "[ui resource]";
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
return [textWithImages, ...markers].filter(Boolean).join(" ") || "[attachment]";
|
|
143
|
+
}
|
|
144
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
145
|
+
0 && (module.exports = {
|
|
146
|
+
previewQueuedContent,
|
|
147
|
+
restoreQueuedContentForComposer
|
|
148
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { QueuedMessage, ContentPart } from '@dexto/core';
|
|
2
|
+
import type { PendingImage } from '../state/types.js';
|
|
3
|
+
interface ComposerQueuedContent {
|
|
4
|
+
text: string;
|
|
5
|
+
images: PendingImage[];
|
|
6
|
+
}
|
|
7
|
+
type RestoreQueuedContentResult = {
|
|
8
|
+
ok: true;
|
|
9
|
+
composer: ComposerQueuedContent;
|
|
10
|
+
} | {
|
|
11
|
+
ok: false;
|
|
12
|
+
reason: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function restoreQueuedContentForComposer(message: QueuedMessage): RestoreQueuedContentResult;
|
|
15
|
+
export declare function previewQueuedContent(content: ContentPart[]): string;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=queuedComposerContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queuedComposerContent.d.ts","sourceRoot":"","sources":["../../src/utils/queuedComposerContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,UAAU,qBAAqB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,KAAK,0BAA0B,GACzB;IACI,EAAE,EAAE,IAAI,CAAC;IACT,QAAQ,EAAE,qBAAqB,CAAC;CACnC,GACD;IACI,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AA0GR,wBAAgB,+BAA+B,CAC3C,OAAO,EAAE,aAAa,GACvB,0BAA0B,CAyB5B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAiBnE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
function imagePlaceholder(index) {
|
|
2
|
+
return `[Image ${index}]`;
|
|
3
|
+
}
|
|
4
|
+
function imagePlaceholdersIn(text) {
|
|
5
|
+
const seen = /* @__PURE__ */ new Set();
|
|
6
|
+
const placeholders = [];
|
|
7
|
+
for (const match of text.matchAll(/\[Image \d+\]/g)) {
|
|
8
|
+
const placeholder = match[0];
|
|
9
|
+
if (!seen.has(placeholder)) {
|
|
10
|
+
seen.add(placeholder);
|
|
11
|
+
placeholders.push(placeholder);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return placeholders;
|
|
15
|
+
}
|
|
16
|
+
function nextImagePlaceholder(usedPlaceholders) {
|
|
17
|
+
let index = 1;
|
|
18
|
+
while (usedPlaceholders.has(imagePlaceholder(index))) {
|
|
19
|
+
index += 1;
|
|
20
|
+
}
|
|
21
|
+
const placeholder = imagePlaceholder(index);
|
|
22
|
+
usedPlaceholders.add(placeholder);
|
|
23
|
+
return placeholder;
|
|
24
|
+
}
|
|
25
|
+
function imageDataForComposer(part) {
|
|
26
|
+
if (typeof part.image === "string") {
|
|
27
|
+
return part.image;
|
|
28
|
+
}
|
|
29
|
+
if (part.image instanceof URL) {
|
|
30
|
+
return part.image.toString();
|
|
31
|
+
}
|
|
32
|
+
if (part.image instanceof ArrayBuffer) {
|
|
33
|
+
return Buffer.from(new Uint8Array(part.image)).toString("base64");
|
|
34
|
+
}
|
|
35
|
+
return Buffer.from(part.image).toString("base64");
|
|
36
|
+
}
|
|
37
|
+
function textParts(content) {
|
|
38
|
+
return content.filter((part) => part.type === "text");
|
|
39
|
+
}
|
|
40
|
+
function imageParts(content) {
|
|
41
|
+
return content.filter((part) => part.type === "image");
|
|
42
|
+
}
|
|
43
|
+
function unsupportedParts(content) {
|
|
44
|
+
return content.filter((part) => part.type !== "text" && part.type !== "image");
|
|
45
|
+
}
|
|
46
|
+
function appendPlaceholderSegment(segments, placeholder) {
|
|
47
|
+
const previousSegment = segments[segments.length - 1];
|
|
48
|
+
if (previousSegment?.match(/^\[Image \d+\]( \[Image \d+\])*$/)) {
|
|
49
|
+
segments[segments.length - 1] = `${previousSegment} ${placeholder}`;
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
segments.push(placeholder);
|
|
53
|
+
}
|
|
54
|
+
function composerTextAndPlaceholders(content) {
|
|
55
|
+
const text = textParts(content).map((part) => part.text).join("\n");
|
|
56
|
+
const existingPlaceholders = imagePlaceholdersIn(text);
|
|
57
|
+
const usedPlaceholders = new Set(existingPlaceholders);
|
|
58
|
+
const placeholders = [];
|
|
59
|
+
const segments = [];
|
|
60
|
+
let existingPlaceholderIndex = 0;
|
|
61
|
+
for (const part of content) {
|
|
62
|
+
if (part.type === "text") {
|
|
63
|
+
if (part.text.length > 0) {
|
|
64
|
+
segments.push(part.text);
|
|
65
|
+
}
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (part.type !== "image") {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const existingPlaceholder = existingPlaceholders[existingPlaceholderIndex];
|
|
72
|
+
if (existingPlaceholder) {
|
|
73
|
+
placeholders.push(existingPlaceholder);
|
|
74
|
+
existingPlaceholderIndex += 1;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const placeholder = nextImagePlaceholder(usedPlaceholders);
|
|
78
|
+
placeholders.push(placeholder);
|
|
79
|
+
appendPlaceholderSegment(segments, placeholder);
|
|
80
|
+
}
|
|
81
|
+
return { text: segments.join("\n"), placeholders };
|
|
82
|
+
}
|
|
83
|
+
function restoreQueuedContentForComposer(message) {
|
|
84
|
+
const unsupported = unsupportedParts(message.content);
|
|
85
|
+
if (unsupported.length > 0) {
|
|
86
|
+
return {
|
|
87
|
+
ok: false,
|
|
88
|
+
reason: "Queued input with non-image attachments cannot be edited in the terminal yet."
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const images = imageParts(message.content);
|
|
92
|
+
const composer = composerTextAndPlaceholders(message.content);
|
|
93
|
+
return {
|
|
94
|
+
ok: true,
|
|
95
|
+
composer: {
|
|
96
|
+
text: composer.text,
|
|
97
|
+
images: images.map((part, index) => ({
|
|
98
|
+
id: `${message.id}-image-${index + 1}`,
|
|
99
|
+
data: imageDataForComposer(part),
|
|
100
|
+
mimeType: part.mimeType ?? "image/png",
|
|
101
|
+
placeholder: composer.placeholders[index] ?? imagePlaceholder(index + 1)
|
|
102
|
+
}))
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function previewQueuedContent(content) {
|
|
107
|
+
const textWithImages = composerTextAndPlaceholders(content).text.replace(/\n/g, " ");
|
|
108
|
+
const markers = content.filter((part) => part.type !== "text" && part.type !== "image").map((part) => {
|
|
109
|
+
switch (part.type) {
|
|
110
|
+
case "file":
|
|
111
|
+
return part.filename ? `[file: ${part.filename}]` : "[file]";
|
|
112
|
+
case "resource":
|
|
113
|
+
return `[resource: ${part.name}]`;
|
|
114
|
+
case "ui-resource":
|
|
115
|
+
return "[ui resource]";
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
return [textWithImages, ...markers].filter(Boolean).join(" ") || "[attachment]";
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
previewQueuedContent,
|
|
122
|
+
restoreQueuedContentForComposer
|
|
123
|
+
};
|