hoomanjs 1.22.2 → 1.23.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 +39 -9
- package/dist/acp/acp-agent.js +48 -9
- package/dist/acp/acp-agent.js.map +1 -1
- package/dist/acp/approvals.d.ts +1 -1
- package/dist/acp/approvals.js +4 -3
- package/dist/acp/approvals.js.map +1 -1
- package/dist/acp/sessions/config-options.d.ts +6 -3
- package/dist/acp/sessions/config-options.js +46 -6
- package/dist/acp/sessions/config-options.js.map +1 -1
- package/dist/acp/sessions/store.d.ts +8 -0
- package/dist/acp/sessions/store.js.map +1 -1
- package/dist/chat/app.d.ts +1 -2
- package/dist/chat/app.js +209 -31
- package/dist/chat/app.js.map +1 -1
- package/dist/chat/approvals.d.ts +1 -3
- package/dist/chat/approvals.js +4 -3
- package/dist/chat/approvals.js.map +1 -1
- package/dist/chat/components/Composer.d.ts +3 -2
- package/dist/chat/components/Composer.js +5 -5
- package/dist/chat/components/Composer.js.map +1 -1
- package/dist/chat/components/PromptInput.d.ts +3 -2
- package/dist/chat/components/PromptInput.js +2 -1
- package/dist/chat/components/PromptInput.js.map +1 -1
- package/dist/chat/components/ScrollView.d.ts +5 -0
- package/dist/chat/components/ScrollView.js +8 -2
- package/dist/chat/components/ScrollView.js.map +1 -1
- package/dist/chat/components/SelectPicker.d.ts +11 -0
- package/dist/chat/components/SelectPicker.js +7 -0
- package/dist/chat/components/SelectPicker.js.map +1 -0
- package/dist/chat/components/SlashCommands.d.ts +2 -1
- package/dist/chat/components/SlashCommands.js +9 -3
- package/dist/chat/components/SlashCommands.js.map +1 -1
- package/dist/chat/components/StatusBar.d.ts +3 -1
- package/dist/chat/components/StatusBar.js +18 -2
- package/dist/chat/components/StatusBar.js.map +1 -1
- package/dist/chat/components/ThinkingStatus.js +1 -1
- package/dist/chat/components/ThinkingStatus.js.map +1 -1
- package/dist/chat/components/TranscriptViewport.js +1 -1
- package/dist/chat/components/TranscriptViewport.js.map +1 -1
- package/dist/chat/components/markdown/BlockRenderer.d.ts +6 -1
- package/dist/chat/components/markdown/BlockRenderer.js +16 -14
- package/dist/chat/components/markdown/BlockRenderer.js.map +1 -1
- package/dist/chat/components/markdown/CodeBlock.d.ts +3 -1
- package/dist/chat/components/markdown/CodeBlock.js +3 -3
- package/dist/chat/components/markdown/CodeBlock.js.map +1 -1
- package/dist/chat/components/markdown/MarkdownMessage.js +2 -2
- package/dist/chat/components/markdown/MarkdownMessage.js.map +1 -1
- package/dist/chat/components/markdown/MarkdownTable.d.ts +2 -1
- package/dist/chat/components/markdown/MarkdownTable.js +2 -2
- package/dist/chat/components/markdown/MarkdownTable.js.map +1 -1
- package/dist/chat/components/prompt-input/hooks/usePromptInputController.d.ts +1 -1
- package/dist/chat/components/prompt-input/hooks/usePromptInputController.js.map +1 -1
- package/dist/chat/components/prompt-input/usePromptInputController.d.ts +11 -1
- package/dist/chat/components/prompt-input/usePromptInputController.js +55 -3
- package/dist/chat/components/prompt-input/usePromptInputController.js.map +1 -1
- package/dist/chat/index.d.ts +0 -1
- package/dist/chat/index.js +1 -1
- package/dist/chat/index.js.map +1 -1
- package/dist/cli.js +38 -16
- package/dist/cli.js.map +1 -1
- package/dist/core/agent/index.d.ts +4 -0
- package/dist/core/agent/index.js +25 -6
- package/dist/core/agent/index.js.map +1 -1
- package/dist/core/agent/mode-aware-tool-registry.d.ts +10 -0
- package/dist/core/agent/mode-aware-tool-registry.js +21 -0
- package/dist/core/agent/mode-aware-tool-registry.js.map +1 -0
- package/dist/core/agent/sync-tool-registry-mode.d.ts +6 -0
- package/dist/core/agent/sync-tool-registry-mode.js +15 -0
- package/dist/core/agent/sync-tool-registry-mode.js.map +1 -0
- package/dist/core/agents/definitions.d.ts +1 -1
- package/dist/core/agents/definitions.js +2 -17
- package/dist/core/agents/definitions.js.map +1 -1
- package/dist/core/agents/tools.d.ts +1 -1
- package/dist/core/agents/tools.js +1 -1
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/prompts/agents/research.md +15 -14
- package/dist/core/prompts/modes/ask.md +21 -0
- package/dist/core/prompts/{agents → modes}/plan.md +6 -8
- package/dist/core/prompts/session-mode-appendix.d.ts +5 -0
- package/dist/core/prompts/session-mode-appendix.js +53 -0
- package/dist/core/prompts/session-mode-appendix.js.map +1 -0
- package/dist/core/prompts/static/planning.md +34 -0
- package/dist/core/prompts/static/subagents.md +2 -2
- package/dist/core/prompts/system.js +3 -2
- package/dist/core/prompts/system.js.map +1 -1
- package/dist/core/session-config.d.ts +0 -3
- package/dist/core/session-config.js +0 -7
- package/dist/core/session-config.js.map +1 -1
- package/dist/core/state/agent-app-state.d.ts +6 -0
- package/dist/core/state/agent-app-state.js +11 -0
- package/dist/core/state/agent-app-state.js.map +1 -0
- package/dist/core/state/plan.d.ts +23 -0
- package/dist/core/state/plan.js +34 -0
- package/dist/core/state/plan.js.map +1 -0
- package/dist/core/state/session-mode.d.ts +23 -0
- package/dist/core/state/session-mode.js +21 -0
- package/dist/core/state/session-mode.js.map +1 -0
- package/dist/core/state/tool-approvals.d.ts +13 -1
- package/dist/core/state/tool-approvals.js +138 -5
- package/dist/core/state/tool-approvals.js.map +1 -1
- package/dist/core/state/yolo.d.ts +12 -0
- package/dist/core/state/yolo.js +9 -0
- package/dist/core/state/yolo.js.map +1 -0
- package/dist/core/tools/filesystem.js +1 -19
- package/dist/core/tools/filesystem.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -0
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/plan.d.ts +4 -0
- package/dist/core/tools/plan.js +113 -0
- package/dist/core/tools/plan.js.map +1 -0
- package/dist/core/tools/wiki.d.ts +2 -2
- package/dist/core/utils/normalize-user-path.d.ts +4 -0
- package/dist/core/utils/normalize-user-path.js +31 -0
- package/dist/core/utils/normalize-user-path.js.map +1 -0
- package/dist/core/utils/paths.d.ts +1 -0
- package/dist/core/utils/paths.js +3 -0
- package/dist/core/utils/paths.js.map +1 -1
- package/dist/daemon/approvals.d.ts +1 -3
- package/dist/daemon/approvals.js +4 -3
- package/dist/daemon/approvals.js.map +1 -1
- package/dist/daemon/index.d.ts +0 -1
- package/dist/daemon/index.js +0 -3
- package/dist/daemon/index.js.map +1 -1
- package/dist/exec/approvals.d.ts +1 -3
- package/dist/exec/approvals.js +4 -3
- package/dist/exec/approvals.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chat/components/ModelPicker.d.ts +0 -10
- package/dist/chat/components/ModelPicker.js +0 -7
- package/dist/chat/components/ModelPicker.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../src/chat/components/PromptInput.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,wBAAwB,
|
|
1
|
+
{"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../src/chat/components/PromptInput.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,wBAAwB,GAGzB,MAAM,kDAAkD,CAAC;AAY1D,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,EAAE,EAChB,KAAK,GAAG,IAAI,EACZ,eAAe,GAAG,CAAC,EACnB,SAAS,GACQ;IACjB,MAAM,EAAE,IAAI,EAAE,GAAG,wBAAwB,CAAC;QACxC,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,eAAe;QACf,SAAS;KACV,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO,CACL,MAAC,IAAI,eACF,KAAK,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,OAAO,wBAAS,CAAC,CAAC,CAAC,IAAI,EACrC,WAAW,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IACxD,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,YAAY,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC;YAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,KAAC,IAAI,cAAqC,IAAI,IAAnC,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,CAAe,CAAC;YAChE,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAClD,OAAO,CACL,MAAC,IAAI,eACF,KAAK,CAAC,IAAI,EACX,KAAC,IAAI,IAAC,OAAO,kBAAE,KAAK,CAAC,EAAE,GAAQ,EAC9B,KAAK,CAAC,KAAK,KAHH,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,CAIhC,CACR,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -97,5 +97,10 @@ export declare const ScrollView: React.ForwardRefExoticComponent<{
|
|
|
97
97
|
height: number;
|
|
98
98
|
}) => void;
|
|
99
99
|
onContentHeightChange?: (height: number, previousHeight: number) => void;
|
|
100
|
+
/**
|
|
101
|
+
* When content is shorter than the viewport, add top inset so the block sits on the
|
|
102
|
+
* bottom edge (chat-style). Scroll metrics still use raw content height.
|
|
103
|
+
*/
|
|
104
|
+
pinShortContentToBottom?: boolean;
|
|
100
105
|
children?: React.ReactNode;
|
|
101
106
|
} & React.RefAttributes<ScrollViewRef>>;
|
|
@@ -4,7 +4,7 @@ import { Box, measureElement } from "ink";
|
|
|
4
4
|
function clamp(offset, bottomOffset) {
|
|
5
5
|
return Math.max(0, Math.min(offset, bottomOffset));
|
|
6
6
|
}
|
|
7
|
-
export const ScrollView = forwardRef(({ children, onScroll, onViewportSizeChange, onContentHeightChange, ...boxProps }, ref) => {
|
|
7
|
+
export const ScrollView = forwardRef(({ children, onScroll, onViewportSizeChange, onContentHeightChange, pinShortContentToBottom = false, ...boxProps }, ref) => {
|
|
8
8
|
const viewportRef = useRef(null);
|
|
9
9
|
const contentRef = useRef(null);
|
|
10
10
|
const [scrollOffset, setScrollOffset] = useState(0);
|
|
@@ -68,7 +68,13 @@ export const ScrollView = forwardRef(({ children, onScroll, onViewportSizeChange
|
|
|
68
68
|
getBottomOffset: bottomOffset,
|
|
69
69
|
remeasure,
|
|
70
70
|
}), [bottomOffset, remeasure, scrollTo]);
|
|
71
|
-
|
|
71
|
+
const shortContentTopPad = pinShortContentToBottom &&
|
|
72
|
+
contentHeight > 0 &&
|
|
73
|
+
viewportSize.height > 0 &&
|
|
74
|
+
contentHeight < viewportSize.height
|
|
75
|
+
? viewportSize.height - contentHeight
|
|
76
|
+
: 0;
|
|
77
|
+
return (_jsx(Box, { flexDirection: "column", flexShrink: 1, overflow: "hidden", ...boxProps, children: _jsx(Box, { ref: viewportRef, flexDirection: "column", flexGrow: 1, flexShrink: 1, minHeight: 1, overflow: "hidden", width: "100%", children: _jsx(Box, { flexDirection: "column", marginTop: -scrollOffset + shortContentTopPad, flexShrink: 0, width: "100%", children: _jsx(Box, { ref: contentRef, flexDirection: "column", flexShrink: 0, width: "100%", children: children }) }) }) }));
|
|
72
78
|
});
|
|
73
79
|
ScrollView.displayName = "ScrollView";
|
|
74
80
|
//# sourceMappingURL=ScrollView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollView.js","sourceRoot":"","sources":["../../../src/chat/components/ScrollView.tsx"],"names":[],"mappings":";AAAA,OAAc,EACZ,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,GAAG,EAAE,cAAc,EAAkC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"ScrollView.js","sourceRoot":"","sources":["../../../src/chat/components/ScrollView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type SelectPickerItem = {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
};
|
|
5
|
+
type SelectPickerProps = {
|
|
6
|
+
title: string;
|
|
7
|
+
items: SelectPickerItem[];
|
|
8
|
+
onSelect: (value: string) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare function SelectPicker({ title, items, onSelect }: SelectPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import SelectInput from "ink-select-input";
|
|
4
|
+
export function SelectPicker({ title, items, onSelect }) {
|
|
5
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: title }), _jsx(SelectInput, { items: items, onSelect: (item) => onSelect(item.value) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "up/down choose \u2022 enter select \u2022 esc cancel" }) })] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=SelectPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectPicker.js","sourceRoot":"","sources":["../../../src/chat/components/SelectPicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAa3C,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAqB;IACxE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,GAAQ,EACzB,KAAC,WAAW,IACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GACxC,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qEAAkD,GAChE,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -4,6 +4,7 @@ type SlashCommandItem = {
|
|
|
4
4
|
};
|
|
5
5
|
type SlashCommandsProps = {
|
|
6
6
|
items: readonly SlashCommandItem[];
|
|
7
|
+
highlightIndex: number;
|
|
7
8
|
};
|
|
8
|
-
export declare function SlashCommands({ items }: SlashCommandsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
9
|
+
export declare function SlashCommands({ items, highlightIndex }: SlashCommandsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
9
10
|
export {};
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
-
export function SlashCommands({ items }) {
|
|
3
|
+
export function SlashCommands({ items, highlightIndex }) {
|
|
4
4
|
if (items.length === 0) {
|
|
5
5
|
return null;
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
const safeIndex = Math.min(Math.max(0, highlightIndex), items.length - 1);
|
|
8
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [items.map((item, index) => {
|
|
9
|
+
const selected = index === safeIndex;
|
|
10
|
+
const cmd = `/${item.name}`;
|
|
11
|
+
const rest = ` — ${item.description}`;
|
|
12
|
+
return selected ? (_jsxs(Text, { inverse: true, children: [_jsx(Text, { bold: true, children: cmd }), _jsx(Text, { children: rest })] }, item.name)) : (_jsxs(Text, { color: "gray", children: [_jsx(Text, { bold: true, children: cmd }), _jsx(Text, { children: rest })] }, item.name));
|
|
13
|
+
}), _jsx(Text, { color: "gray", children: "\u2191\u2193 select \u2022 tab completes \u2022 enter completes name or submits" })] }));
|
|
8
14
|
}
|
|
9
15
|
//# sourceMappingURL=SlashCommands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlashCommands.js","sourceRoot":"","sources":["../../../src/chat/components/SlashCommands.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"SlashCommands.js","sourceRoot":"","sources":["../../../src/chat/components/SlashCommands.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAYhC,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,cAAc,EAAsB;IACzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1E,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC;gBACrC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAChB,MAAC,IAAI,IAAiB,OAAO,mBAC3B,KAAC,IAAI,IAAC,IAAI,kBAAE,GAAG,GAAQ,EACvB,KAAC,IAAI,cAAE,IAAI,GAAQ,KAFV,IAAI,CAAC,IAAI,CAGb,CACR,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,IAAiB,KAAK,EAAC,MAAM,aAChC,KAAC,IAAI,IAAC,IAAI,kBAAE,GAAG,GAAQ,EACvB,KAAC,IAAI,cAAE,IAAI,GAAQ,KAFV,IAAI,CAAC,IAAI,CAGb,CACR,CAAC;YACJ,CAAC,CAAC,EACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gGAEX,IACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -5,6 +5,8 @@ type StatusBarProps = {
|
|
|
5
5
|
statusLabel?: string;
|
|
6
6
|
sessionId: string;
|
|
7
7
|
currentModel: string;
|
|
8
|
+
yoloOn: boolean;
|
|
9
|
+
sessionMode: string;
|
|
8
10
|
elapsedLabel: string;
|
|
9
11
|
turnCount: number;
|
|
10
12
|
totalTools: number;
|
|
@@ -17,5 +19,5 @@ type StatusBarProps = {
|
|
|
17
19
|
latencyMs: number;
|
|
18
20
|
};
|
|
19
21
|
};
|
|
20
|
-
export declare function StatusBar({ running, status, statusLabel, sessionId, currentModel, elapsedLabel, turnCount, totalTools, skillsFound, manager, usage, }: StatusBarProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export declare function StatusBar({ running, status, statusLabel, sessionId, currentModel, yoloOn, sessionMode, elapsedLabel, turnCount, totalTools, skillsFound, manager, usage, }: StatusBarProps): import("react/jsx-runtime").JSX.Element;
|
|
21
23
|
export {};
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
+
/** Last UUID segment (or whole string) for a compact session label. */
|
|
4
|
+
function shortSessionId(sessionId) {
|
|
5
|
+
const parts = sessionId.split("-");
|
|
6
|
+
return parts.length > 1 ? (parts[parts.length - 1] ?? sessionId) : sessionId;
|
|
7
|
+
}
|
|
8
|
+
function sessionModeValueColor(mode) {
|
|
9
|
+
if (mode === "plan") {
|
|
10
|
+
return "#FFA500";
|
|
11
|
+
}
|
|
12
|
+
if (mode === "ask") {
|
|
13
|
+
return "cyan";
|
|
14
|
+
}
|
|
15
|
+
return "gray";
|
|
16
|
+
}
|
|
3
17
|
/** Ink color for the live status token only (labels stay `gray`). */
|
|
4
18
|
function statusValueColor(status) {
|
|
5
19
|
switch (status) {
|
|
@@ -14,7 +28,9 @@ function statusValueColor(status) {
|
|
|
14
28
|
return "gray";
|
|
15
29
|
}
|
|
16
30
|
}
|
|
17
|
-
export function StatusBar({ running, status, statusLabel, sessionId, currentModel, elapsedLabel, turnCount, totalTools, skillsFound, manager, usage, }) {
|
|
18
|
-
|
|
31
|
+
export function StatusBar({ running, status, statusLabel, sessionId, currentModel, yoloOn, sessionMode, elapsedLabel, turnCount, totalTools, skillsFound, manager, usage, }) {
|
|
32
|
+
const sessionShort = shortSessionId(sessionId);
|
|
33
|
+
const displayStatus = statusLabel ?? status;
|
|
34
|
+
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: "gray", children: "session: " }), _jsx(Text, { color: "gray", children: sessionShort }), _jsx(Text, { color: "gray", children: " \u2022 status: " }), _jsx(Text, { color: statusValueColor(status), children: displayStatus }), _jsx(Text, { color: "gray", children: " \u2022 mode: " }), _jsx(Text, { color: sessionModeValueColor(sessionMode), children: sessionMode }), _jsx(Text, { color: "gray", children: " \u2022 yolo: " }), _jsx(Text, { color: yoloOn ? "red" : "green", children: yoloOn ? "on" : "off" })] }), _jsxs(Text, { color: "gray", children: ["model: ", currentModel, " \u2022 turns: ", turnCount, " \u2022 tokens: ", usage.inputTokens, " ", "+ ", usage.outputTokens, " = ", usage.totalTokens, usage.latencyMs > 0 ? ` • latency: ${usage.latencyMs}ms` : "", running ? ` • elapsed ${elapsedLabel}` : ""] }), _jsx(Text, { color: "gray", children: `mcp servers: ${manager.clients.size} • tools: ${totalTools} • skills: ${skillsFound}` })] }));
|
|
19
35
|
}
|
|
20
36
|
//# sourceMappingURL=StatusBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/chat/components/StatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/chat/components/StatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAwBhC,uEAAuE;AACvE,SAAS,cAAc,CAAC,SAAiB;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qEAAqE;AACrE,SAAS,gBAAgB,CAAC,MAAc;IACtC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,cAAc,CAAC;QACpB,KAAK,kBAAkB;YACrB,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,MAAM,EACN,WAAW,EACX,SAAS,EACT,YAAY,EACZ,MAAM,EACN,WAAW,EACX,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,EACX,OAAO,EACP,KAAK,GACU;IACf,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,WAAW,IAAI,MAAM,CAAC;IAE5C,OAAO,CACL,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,0BAAiB,EACnC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,YAAY,GAAQ,EACxC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,iCAAmB,EACrC,KAAC,IAAI,IAAC,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,YAAG,aAAa,GAAQ,EAC7D,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,+BAAiB,EACnC,KAAC,IAAI,IAAC,KAAK,EAAE,qBAAqB,CAAC,WAAW,CAAC,YAAG,WAAW,GAAQ,EACrE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,+BAAiB,EACnC,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,YAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAQ,IAChE,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBACR,YAAY,qBAAY,SAAS,sBAAa,KAAK,CAAC,WAAW,EAAE,GAAG,QACzE,KAAK,CAAC,YAAY,SAAK,KAAK,CAAC,WAAW,EAC1C,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,EAC7D,OAAO,CAAC,CAAC,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,IACvC,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YACf,gBAAgB,OAAO,CAAC,OAAO,CAAC,IAAI,aAAa,UAAU,cAAc,WAAW,EAAE,GAClF,IACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -87,7 +87,7 @@ const THINKING_VERBS = [
|
|
|
87
87
|
"is fine-tuning outputs",
|
|
88
88
|
"is tracing linguistic roots",
|
|
89
89
|
"is measuring semantic proximity",
|
|
90
|
-
"is
|
|
90
|
+
"is outlining next moves",
|
|
91
91
|
"is constructing frameworks",
|
|
92
92
|
"is organizing thought streams",
|
|
93
93
|
"is linking references",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThinkingStatus.js","sourceRoot":"","sources":["../../../src/chat/components/ThinkingStatus.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,cAAc,GAAG;IACrB,aAAa;IACb,8BAA8B;IAC9B,cAAc;IACd,4BAA4B;IAC5B,uBAAuB;IACvB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,2BAA2B;IAC3B,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,2BAA2B;IAC3B,yBAAyB;IACzB,wBAAwB;IACxB,sBAAsB;IACtB,0BAA0B;IAC1B,oBAAoB;IACpB,wBAAwB;IACxB,wBAAwB;IACxB,qBAAqB;IACrB,gCAAgC;IAChC,oBAAoB;IACpB,8BAA8B;IAC9B,sBAAsB;IACtB,2BAA2B;IAC3B,8BAA8B;IAC9B,qBAAqB;IACrB,uBAAuB;IACvB,gCAAgC;IAChC,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,4BAA4B;IAC5B,yBAAyB;IACzB,+BAA+B;IAC/B,+BAA+B;IAC/B,uBAAuB;IACvB,8BAA8B;IAC9B,qBAAqB;IACrB,iCAAiC;IACjC,+BAA+B;IAC/B,yBAAyB;IACzB,6BAA6B;IAC7B,4BAA4B;IAC5B,6BAA6B;IAC7B,yBAAyB;IACzB,+BAA+B;IAC/B,+BAA+B;IAC/B,uBAAuB;IACvB,0BAA0B;IAC1B,2BAA2B;IAC3B,iCAAiC;IACjC,6BAA6B;IAC7B,0BAA0B;IAC1B,8BAA8B;IAC9B,sBAAsB;IACtB,8BAA8B;IAC9B,qBAAqB;IACrB,kCAAkC;IAClC,8BAA8B;IAC9B,2BAA2B;IAC3B,kCAAkC;IAClC,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,2BAA2B;IAC3B,6BAA6B;IAC7B,6BAA6B;IAC7B,0BAA0B;IAC1B,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,+BAA+B;IAC/B,+BAA+B;IAC/B,8BAA8B;IAC9B,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,wBAAwB;IACxB,+BAA+B;IAC/B,wBAAwB;IACxB,6BAA6B;IAC7B,iCAAiC;IACjC,
|
|
1
|
+
{"version":3,"file":"ThinkingStatus.js","sourceRoot":"","sources":["../../../src/chat/components/ThinkingStatus.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,cAAc,GAAG;IACrB,aAAa;IACb,8BAA8B;IAC9B,cAAc;IACd,4BAA4B;IAC5B,uBAAuB;IACvB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,2BAA2B;IAC3B,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,2BAA2B;IAC3B,yBAAyB;IACzB,wBAAwB;IACxB,sBAAsB;IACtB,0BAA0B;IAC1B,oBAAoB;IACpB,wBAAwB;IACxB,wBAAwB;IACxB,qBAAqB;IACrB,gCAAgC;IAChC,oBAAoB;IACpB,8BAA8B;IAC9B,sBAAsB;IACtB,2BAA2B;IAC3B,8BAA8B;IAC9B,qBAAqB;IACrB,uBAAuB;IACvB,gCAAgC;IAChC,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,4BAA4B;IAC5B,yBAAyB;IACzB,+BAA+B;IAC/B,+BAA+B;IAC/B,uBAAuB;IACvB,8BAA8B;IAC9B,qBAAqB;IACrB,iCAAiC;IACjC,+BAA+B;IAC/B,yBAAyB;IACzB,6BAA6B;IAC7B,4BAA4B;IAC5B,6BAA6B;IAC7B,yBAAyB;IACzB,+BAA+B;IAC/B,+BAA+B;IAC/B,uBAAuB;IACvB,0BAA0B;IAC1B,2BAA2B;IAC3B,iCAAiC;IACjC,6BAA6B;IAC7B,0BAA0B;IAC1B,8BAA8B;IAC9B,sBAAsB;IACtB,8BAA8B;IAC9B,qBAAqB;IACrB,kCAAkC;IAClC,8BAA8B;IAC9B,2BAA2B;IAC3B,kCAAkC;IAClC,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,2BAA2B;IAC3B,6BAA6B;IAC7B,6BAA6B;IAC7B,0BAA0B;IAC1B,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,+BAA+B;IAC/B,+BAA+B;IAC/B,8BAA8B;IAC9B,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,wBAAwB;IACxB,+BAA+B;IAC/B,wBAAwB;IACxB,6BAA6B;IAC7B,iCAAiC;IACjC,yBAAyB;IACzB,4BAA4B;IAC5B,+BAA+B;IAC/B,uBAAuB;IACvB,mBAAmB;IACnB,6BAA6B;IAC7B,4BAA4B;IAC5B,kCAAkC;IAClC,wBAAwB;IACxB,0BAA0B;IAC1B,0BAA0B;IAC1B,4BAA4B;IAC5B,2BAA2B;IAC3B,wBAAwB;IACxB,sBAAsB;IACtB,uBAAuB;CACxB,CAAC;AAEF,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAClD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,MAAC,GAAG,IAAC,UAAU,EAAE,CAAC,aAChB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,GAAG,EACpC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,IAAI,cAAc,CAAC,SAAS,CAAC,KAAK,GAAQ,IAC1D,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -114,7 +114,7 @@ export function TranscriptViewport({ lines, liveReasoning, followRequest, }) {
|
|
|
114
114
|
process.stdout.write(MOUSE_REPORTING_DISABLE);
|
|
115
115
|
};
|
|
116
116
|
}, [scrollBy, setRawMode, stdin]);
|
|
117
|
-
return (_jsx(Box, { flexDirection: "column", flexGrow: 1, minHeight: 1, children: _jsx(ScrollView, { ref: scrollRef, flexGrow: 1, width: "100%", onScroll: (offset) => {
|
|
117
|
+
return (_jsx(Box, { flexDirection: "column", flexGrow: 1, minHeight: 1, children: _jsx(ScrollView, { ref: scrollRef, flexGrow: 1, width: "100%", pinShortContentToBottom: true, onScroll: (offset) => {
|
|
118
118
|
const scroll = scrollRef.current;
|
|
119
119
|
if (scroll) {
|
|
120
120
|
stickyRef.current = offset >= scroll.getBottomOffset() - 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranscriptViewport.js","sourceRoot":"","sources":["../../../src/chat/components/TranscriptViewport.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TranscriptViewport.js","sourceRoot":"","sources":["../../../src/chat/components/TranscriptViewport.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,11 @@ type BlockRendererProps = {
|
|
|
3
3
|
tokens: Token[];
|
|
4
4
|
streaming?: boolean;
|
|
5
5
|
depth?: number;
|
|
6
|
+
/**
|
|
7
|
+
* When true, the final top-level token omits block bottom margin so spacing matches plain user
|
|
8
|
+
* messages (ChatMessage already applies marginBottom).
|
|
9
|
+
*/
|
|
10
|
+
omitTrailingBlockMargin?: boolean;
|
|
6
11
|
};
|
|
7
|
-
export declare function BlockRenderer({ tokens, streaming, depth, }: BlockRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function BlockRenderer({ tokens, streaming, depth, omitTrailingBlockMargin, }: BlockRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
8
13
|
export {};
|
|
@@ -27,25 +27,26 @@ function blockToPlainText(token) {
|
|
|
27
27
|
return token.raw ?? "";
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
function renderBlock(token, key, depth, columns, streaming) {
|
|
30
|
+
function renderBlock(token, key, depth, columns, streaming, stripBottomMargin) {
|
|
31
|
+
const mb = stripBottomMargin ? 0 : 1;
|
|
31
32
|
switch (token.type) {
|
|
32
33
|
case "paragraph":
|
|
33
|
-
return (_jsx(Box, { marginBottom:
|
|
34
|
+
return (_jsx(Box, { marginBottom: mb, children: _jsx(Text, { wrap: "wrap", children: renderInlineTokens(token.tokens, { keyPrefix: key }) }) }, key));
|
|
34
35
|
case "heading": {
|
|
35
36
|
const headingColor = token.depth <= 2 ? "cyan" : "white";
|
|
36
|
-
return (_jsx(Box, { marginBottom:
|
|
37
|
+
return (_jsx(Box, { marginBottom: mb, children: _jsx(Text, { bold: true, color: headingColor, wrap: "wrap", children: renderInlineTokens(token.tokens, { keyPrefix: key }) }) }, key));
|
|
37
38
|
}
|
|
38
39
|
case "code":
|
|
39
|
-
return (_jsx(CodeBlock, { code: token.text ?? "", language: token.lang, streaming: streaming }, key));
|
|
40
|
+
return (_jsx(CodeBlock, { code: token.text ?? "", language: token.lang, streaming: streaming, omitBottomMargin: stripBottomMargin }, key));
|
|
40
41
|
case "blockquote": {
|
|
41
42
|
const lines = (token.tokens ?? [])
|
|
42
43
|
.map((child) => blockToPlainText(child))
|
|
43
44
|
.join("\n")
|
|
44
45
|
.split("\n");
|
|
45
|
-
return (_jsx(Box, { flexDirection: "column", marginBottom:
|
|
46
|
+
return (_jsx(Box, { flexDirection: "column", marginBottom: mb, children: lines.map((line, index) => (_jsx(Text, { color: "gray", italic: true, children: `│ ${line || " "}` }, `${key}-${index}`))) }, key));
|
|
46
47
|
}
|
|
47
48
|
case "list":
|
|
48
|
-
return (_jsx(Box, { flexDirection: "column", marginBottom:
|
|
49
|
+
return (_jsx(Box, { flexDirection: "column", marginBottom: mb, children: token.items.map((item, index) => {
|
|
49
50
|
const marker = token.ordered
|
|
50
51
|
? `${(token.start ?? 1) + index}.`
|
|
51
52
|
: "-";
|
|
@@ -60,28 +61,29 @@ function renderBlock(token, key, depth, columns, streaming) {
|
|
|
60
61
|
: (head.text ??
|
|
61
62
|
renderInlineTokens(head.tokens, {
|
|
62
63
|
keyPrefix: `${key}-item-${index}-text`,
|
|
63
|
-
})) })) : head ? (renderBlock(head, `${key}-item-${index}-head`, depth + 1, columns, streaming)) : (_jsx(Text, { children: " " }));
|
|
64
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: `${" ".repeat(depth)}${marker} ${checkbox}` }), _jsx(Box, { flexDirection: "column", flexGrow: 1, children: headNode })] }), tail.length > 0 ? (_jsx(Box, { marginLeft: Math.max(2, depth * 2 + 4), flexDirection: "column", children: tail.map((nestedToken, nestedIndex) => renderBlock(nestedToken, `${key}-item-${index}-tail-${nestedIndex}`, depth + 1, columns, streaming)) })) : null] }, `${key}-item-${index}`));
|
|
64
|
+
})) })) : head ? (renderBlock(head, `${key}-item-${index}-head`, depth + 1, columns, streaming, false)) : (_jsx(Text, { children: " " }));
|
|
65
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: `${" ".repeat(depth)}${marker} ${checkbox}` }), _jsx(Box, { flexDirection: "column", flexGrow: 1, children: headNode })] }), tail.length > 0 ? (_jsx(Box, { marginLeft: Math.max(2, depth * 2 + 4), flexDirection: "column", children: tail.map((nestedToken, nestedIndex) => renderBlock(nestedToken, `${key}-item-${index}-tail-${nestedIndex}`, depth + 1, columns, streaming, false)) })) : null] }, `${key}-item-${index}`));
|
|
65
66
|
}) }, key));
|
|
66
67
|
case "table":
|
|
67
|
-
return _jsx(MarkdownTable, { token: token }, key);
|
|
68
|
+
return (_jsx(MarkdownTable, { token: token, omitBottomMargin: stripBottomMargin }, key));
|
|
68
69
|
case "hr":
|
|
69
|
-
return (_jsx(Box, { marginBottom:
|
|
70
|
+
return (_jsx(Box, { marginBottom: mb, children: _jsx(Text, { color: "gray", children: "─".repeat(Math.max(8, Math.min(columns - 4, 48))) }) }, key));
|
|
70
71
|
case "space":
|
|
71
72
|
return null;
|
|
72
73
|
case "text":
|
|
73
74
|
case "escape":
|
|
74
|
-
return (_jsx(Box, { marginBottom:
|
|
75
|
+
return (_jsx(Box, { marginBottom: mb, children: _jsx(Text, { wrap: "wrap", children: token.text ?? token.raw ?? "" }) }, key));
|
|
75
76
|
case "html":
|
|
76
77
|
case "def":
|
|
77
78
|
case "del":
|
|
78
79
|
return null;
|
|
79
80
|
default:
|
|
80
|
-
return (_jsx(Box, { marginBottom:
|
|
81
|
+
return (_jsx(Box, { marginBottom: mb, children: _jsx(Text, { wrap: "wrap", children: token.raw ?? "" }) }, key));
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
|
-
export function BlockRenderer({ tokens, streaming = false, depth = 0, }) {
|
|
84
|
+
export function BlockRenderer({ tokens, streaming = false, depth = 0, omitTrailingBlockMargin = false, }) {
|
|
84
85
|
const { columns } = useWindowSize();
|
|
85
|
-
|
|
86
|
+
const lastIndex = tokens.length - 1;
|
|
87
|
+
return (_jsx(Box, { flexDirection: "column", children: tokens.map((token, index) => renderBlock(token, `block-${depth}-${index}`, depth, columns, streaming, omitTrailingBlockMargin && index === lastIndex)) }));
|
|
86
88
|
}
|
|
87
89
|
//# sourceMappingURL=BlockRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockRenderer.js","sourceRoot":"","sources":["../../../../src/chat/components/markdown/BlockRenderer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"BlockRenderer.js","sourceRoot":"","sources":["../../../../src/chat/components/markdown/BlockRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ type CodeBlockProps = {
|
|
|
2
2
|
code: string;
|
|
3
3
|
language?: string;
|
|
4
4
|
streaming?: boolean;
|
|
5
|
+
/** Last block in a message: skip margin so ChatMessage spacing is not doubled. */
|
|
6
|
+
omitBottomMargin?: boolean;
|
|
5
7
|
};
|
|
6
|
-
export declare function CodeBlock({ code, language, streaming, }: CodeBlockProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function CodeBlock({ code, language, streaming, omitBottomMargin, }: CodeBlockProps): import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
export {};
|
|
@@ -28,7 +28,7 @@ function getInkAnsi() {
|
|
|
28
28
|
function renderCodeLines(lines, color) {
|
|
29
29
|
return lines.map((line, index) => (_jsx(Text, { color: color, children: line || " " }, index)));
|
|
30
30
|
}
|
|
31
|
-
export function CodeBlock({ code, language, streaming = false, }) {
|
|
31
|
+
export function CodeBlock({ code, language, streaming = false, omitBottomMargin = false, }) {
|
|
32
32
|
const trimmedLanguage = language?.trim() || undefined;
|
|
33
33
|
const normalizedCode = useMemo(() => code.replace(/\r\n/g, "\n"), [code]);
|
|
34
34
|
const plainLines = useMemo(() => normalizedCode.split("\n"), [normalizedCode]);
|
|
@@ -48,8 +48,8 @@ export function CodeBlock({ code, language, streaming = false, }) {
|
|
|
48
48
|
}, [normalizedCode, streaming, trimmedLanguage]);
|
|
49
49
|
if (highlightedLines) {
|
|
50
50
|
const InkAnsiText = getInkAnsi();
|
|
51
|
-
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: "gray", children: `\`\`\`${trimmedLanguage}` }), highlightedLines.map((line, index) => InkAnsiText ? (_jsx(InkAnsiText, { children: line || " " }, index)) : (_jsx(Text, { children: stripAnsi(line) || " " }, index))), _jsx(Text, { color: "gray", children: "```" })] }));
|
|
51
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: omitBottomMargin ? 0 : 1, children: [_jsx(Text, { color: "gray", children: `\`\`\`${trimmedLanguage}` }), highlightedLines.map((line, index) => InkAnsiText ? (_jsx(InkAnsiText, { children: line || " " }, index)) : (_jsx(Text, { children: stripAnsi(line) || " " }, index))), _jsx(Text, { color: "gray", children: "```" })] }));
|
|
52
52
|
}
|
|
53
|
-
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { color: "gray", children: `\`\`\`${trimmedLanguage ?? ""}` }), renderCodeLines(plainLines, "white"), _jsx(Text, { color: "gray", children: "```" })] }));
|
|
53
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: omitBottomMargin ? 0 : 1, children: [_jsx(Text, { color: "gray", children: `\`\`\`${trimmedLanguage ?? ""}` }), renderCodeLines(plainLines, "white"), _jsx(Text, { color: "gray", children: "```" })] }));
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=CodeBlock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../../src/chat/components/markdown/CodeBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../../src/chat/components/markdown/CodeBlock.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ export function MarkdownMessage({ children, streaming = false, }) {
|
|
|
6
6
|
const content = children ?? "";
|
|
7
7
|
const { fullTokens, stablePrefix, unstableSuffix, stableTokens, unstableTokens, } = useMarkdownTokens(content, streaming);
|
|
8
8
|
if (!streaming) {
|
|
9
|
-
return _jsx(BlockRenderer, { tokens: fullTokens });
|
|
9
|
+
return _jsx(BlockRenderer, { tokens: fullTokens, omitTrailingBlockMargin: true });
|
|
10
10
|
}
|
|
11
|
-
return (_jsxs(Box, { flexDirection: "column", children: [stablePrefix ? _jsx(BlockRenderer, { tokens: stableTokens }) : null, unstableSuffix ? (_jsx(BlockRenderer, { tokens: unstableTokens, streaming: true })) : null] }));
|
|
11
|
+
return (_jsxs(Box, { flexDirection: "column", children: [stablePrefix ? (_jsx(BlockRenderer, { tokens: stableTokens, streaming: true, omitTrailingBlockMargin: !unstableSuffix })) : null, unstableSuffix ? (_jsx(BlockRenderer, { tokens: unstableTokens, streaming: true, omitTrailingBlockMargin: true })) : null] }));
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=MarkdownMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownMessage.js","sourceRoot":"","sources":["../../../../src/chat/components/markdown/MarkdownMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOjE,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,GAAG,KAAK,GACI;IACrB,MAAM,OAAO,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC/B,MAAM,EACJ,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,GACf,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAC,aAAa,IAAC,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"MarkdownMessage.js","sourceRoot":"","sources":["../../../../src/chat/components/markdown/MarkdownMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOjE,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,GAAG,KAAK,GACI;IACrB,MAAM,OAAO,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC/B,MAAM,EACJ,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,GACf,GAAG,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAC,aAAa,IAAC,MAAM,EAAE,UAAU,EAAE,uBAAuB,SAAG,CAAC;IACvE,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACxB,YAAY,CAAC,CAAC,CAAC,CACd,KAAC,aAAa,IACZ,MAAM,EAAE,YAAY,EACpB,SAAS,QACT,uBAAuB,EAAE,CAAC,cAAc,GACxC,CACH,CAAC,CAAC,CAAC,IAAI,EACP,cAAc,CAAC,CAAC,CAAC,CAChB,KAAC,aAAa,IACZ,MAAM,EAAE,cAAc,EACtB,SAAS,QACT,uBAAuB,SACvB,CACH,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Tokens } from "marked";
|
|
2
2
|
type MarkdownTableProps = {
|
|
3
3
|
token: Tokens.Table;
|
|
4
|
+
omitBottomMargin?: boolean;
|
|
4
5
|
};
|
|
5
|
-
export declare function MarkdownTable({ token }: MarkdownTableProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
export declare function MarkdownTable({ token, omitBottomMargin, }: MarkdownTableProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
7
|
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text, useWindowSize } from "ink";
|
|
3
3
|
import { useMarkdownTableLayout } from "./hooks/useMarkdownTableLayout.js";
|
|
4
|
-
export function MarkdownTable({ token }) {
|
|
4
|
+
export function MarkdownTable({ token, omitBottomMargin = false, }) {
|
|
5
5
|
const { columns } = useWindowSize();
|
|
6
6
|
const layout = useMarkdownTableLayout(token, columns);
|
|
7
7
|
if (layout.lines.length === 0) {
|
|
8
8
|
return null;
|
|
9
9
|
}
|
|
10
|
-
return (_jsx(Box, { flexDirection: "column", marginBottom: 1, children: layout.lines.map((line, index) => (_jsx(Text, { children: line }, index))) }));
|
|
10
|
+
return (_jsx(Box, { flexDirection: "column", marginBottom: omitBottomMargin ? 0 : 1, children: layout.lines.map((line, index) => (_jsx(Text, { children: line }, index))) }));
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=MarkdownTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownTable.js","sourceRoot":"","sources":["../../../../src/chat/components/markdown/MarkdownTable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAE/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"MarkdownTable.js","sourceRoot":"","sources":["../../../../src/chat/components/markdown/MarkdownTable.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAE/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAO3E,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,gBAAgB,GAAG,KAAK,GACL;IACnB,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAC/D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CACjC,KAAC,IAAI,cAAc,IAAI,IAAZ,KAAK,CAAe,CAChC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { usePromptInputController, type PromptSubmission, } from "../usePromptInputController.js";
|
|
1
|
+
export { usePromptInputController, type PromptSubmission, type SlashCommandMenuProps, } from "../usePromptInputController.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePromptInputController.js","sourceRoot":"","sources":["../../../../../src/chat/components/prompt-input/hooks/usePromptInputController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,
|
|
1
|
+
{"version":3,"file":"usePromptInputController.js","sourceRoot":"","sources":["../../../../../src/chat/components/prompt-input/hooks/usePromptInputController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAGzB,MAAM,gCAAgC,CAAC"}
|
|
@@ -3,15 +3,25 @@ export type PromptSubmission = {
|
|
|
3
3
|
text: string;
|
|
4
4
|
attachments: string[];
|
|
5
5
|
};
|
|
6
|
+
export type SlashCommandMenuProps = {
|
|
7
|
+
itemCount: number;
|
|
8
|
+
highlightIndex: number;
|
|
9
|
+
/** Name of the highlighted command (e.g. `model`). Used so Enter completes partial `/` instead of submitting. */
|
|
10
|
+
highlightedCommandName: string;
|
|
11
|
+
onHighlightChange: (index: number) => void;
|
|
12
|
+
completeSelected: () => void;
|
|
13
|
+
};
|
|
6
14
|
type Args = {
|
|
7
15
|
value: string;
|
|
8
16
|
onChange: (value: string) => void;
|
|
9
17
|
onSubmit: (value: PromptSubmission) => void;
|
|
10
18
|
focus: boolean;
|
|
11
19
|
maxVisibleLines: number;
|
|
20
|
+
/** When set and `itemCount > 0`, ↑/↓ cycle selection; Tab completes; Enter completes if the typed token still mismatches the highlight, otherwise submits. */
|
|
21
|
+
slashMenu?: SlashCommandMenuProps | undefined;
|
|
12
22
|
};
|
|
13
23
|
type Result = {
|
|
14
24
|
view: PromptView;
|
|
15
25
|
};
|
|
16
|
-
export declare function usePromptInputController({ value, onChange, onSubmit, focus, maxVisibleLines, }: Args): Result;
|
|
26
|
+
export declare function usePromptInputController({ value, onChange, onSubmit, focus, maxVisibleLines, slashMenu, }: Args): Result;
|
|
17
27
|
export {};
|