thatgfsj-code 3.0.4 → 3.0.7
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 +64 -21
- package/dist/app/index.d.ts +93 -22
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +232 -40
- package/dist/app/index.js.map +1 -1
- package/dist/cmd/index.d.ts +12 -20
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +192 -146
- package/dist/cmd/index.js.map +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +5 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/llm/anthropic.d.ts +1 -1
- package/dist/llm/anthropic.d.ts.map +1 -1
- package/dist/llm/anthropic.js +116 -84
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/gemini.d.ts +27 -3
- package/dist/llm/gemini.d.ts.map +1 -1
- package/dist/llm/gemini.js +196 -73
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/index.d.ts +20 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +66 -6
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/openai.d.ts +5 -1
- package/dist/llm/openai.d.ts.map +1 -1
- package/dist/llm/openai.js +126 -66
- package/dist/llm/openai.js.map +1 -1
- package/dist/mcp/client.d.ts +84 -34
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +291 -126
- package/dist/mcp/client.js.map +1 -1
- package/dist/session/compactor.d.ts +27 -7
- package/dist/session/compactor.d.ts.map +1 -1
- package/dist/session/compactor.js +78 -23
- package/dist/session/compactor.js.map +1 -1
- package/dist/session/index.d.ts +96 -33
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +278 -60
- package/dist/session/index.js.map +1 -1
- package/dist/tools/file.d.ts +10 -2
- package/dist/tools/file.d.ts.map +1 -1
- package/dist/tools/file.js +54 -5
- package/dist/tools/file.js.map +1 -1
- package/dist/tools/git.d.ts +16 -2
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +61 -18
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/nwt.d.ts.map +1 -1
- package/dist/tools/nwt.js +8 -1
- package/dist/tools/nwt.js.map +1 -1
- package/dist/tools/search.d.ts +8 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +105 -34
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/shell.d.ts +0 -4
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +11 -26
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/types.d.ts +7 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +90 -18
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/components/ChatMessage.d.ts.map +1 -1
- package/dist/tui/components/ChatMessage.js +9 -2
- package/dist/tui/components/ChatMessage.js.map +1 -1
- package/dist/tui/components/ConfirmPrompt.d.ts +21 -0
- package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -0
- package/dist/tui/components/ConfirmPrompt.js +45 -0
- package/dist/tui/components/ConfirmPrompt.js.map +1 -0
- package/dist/tui/components/Header.d.ts +10 -5
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +13 -5
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/StatusBar.d.ts +7 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/tui/components/StatusBar.js +8 -3
- package/dist/tui/components/StatusBar.js.map +1 -1
- package/dist/tui/components/Thinking.d.ts +5 -0
- package/dist/tui/components/Thinking.d.ts.map +1 -1
- package/dist/tui/components/Thinking.js +24 -2
- package/dist/tui/components/Thinking.js.map +1 -1
- package/dist/tui/components/ToolCall.d.ts +6 -1
- package/dist/tui/components/ToolCall.d.ts.map +1 -1
- package/dist/tui/components/ToolCall.js +50 -22
- package/dist/tui/components/ToolCall.js.map +1 -1
- package/dist/tui/components/UserInput.d.ts +5 -0
- package/dist/tui/components/UserInput.d.ts.map +1 -1
- package/dist/tui/components/UserInput.js +9 -13
- package/dist/tui/components/UserInput.js.map +1 -1
- package/dist/tui/hooks/useChat.d.ts +1 -0
- package/dist/tui/hooks/useChat.d.ts.map +1 -1
- package/dist/tui/hooks/useChat.js +36 -16
- package/dist/tui/hooks/useChat.js.map +1 -1
- package/dist/tui/hooks/useCommands.d.ts +7 -1
- package/dist/tui/hooks/useCommands.d.ts.map +1 -1
- package/dist/tui/hooks/useCommands.js +77 -41
- package/dist/tui/hooks/useCommands.js.map +1 -1
- package/dist/tui/theme.d.ts +34 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +34 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/welcome.d.ts.map +1 -1
- package/dist/tui/welcome.js +9 -7
- package/dist/tui/welcome.js.map +1 -1
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/diff.d.ts +5 -0
- package/dist/utils/diff.d.ts.map +1 -1
- package/dist/utils/diff.js +15 -0
- package/dist/utils/diff.js.map +1 -1
- package/dist/version.d.ts +12 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +29 -0
- package/dist/version.js.map +1 -0
- package/package.json +19 -7
- package/CHANGELOG.md +0 -192
- package/DEVELOPMENT.md +0 -286
- package/ROADMAP.md +0 -91
- package/docs/API_KEY_GUIDE.md +0 -236
- package/docs/FAQ.md +0 -182
- package/install.bat +0 -63
- package/install.ps1 +0 -238
- package/install.sh +0 -113
- package/src/app/index.ts +0 -197
- package/src/cache/fingerprint.ts +0 -101
- package/src/cache/index.ts +0 -21
- package/src/cache/smartModel.ts +0 -133
- package/src/cache/stats.ts +0 -199
- package/src/cache/volatile.ts +0 -47
- package/src/cmd/index.tsx +0 -288
- package/src/config/index.ts +0 -156
- package/src/config/providers.ts +0 -234
- package/src/config/types.ts +0 -71
- package/src/hooks/index.ts +0 -111
- package/src/llm/anthropic.ts +0 -413
- package/src/llm/gemini.ts +0 -169
- package/src/llm/index.ts +0 -303
- package/src/llm/openai.ts +0 -243
- package/src/llm/provider.ts +0 -71
- package/src/mcp/client.ts +0 -330
- package/src/prompts/index.ts +0 -260
- package/src/session/compactor.ts +0 -103
- package/src/session/index.ts +0 -181
- package/src/session/message.ts +0 -42
- package/src/skills/brainstorming.ts +0 -43
- package/src/skills/code-review.ts +0 -45
- package/src/skills/executing-plans.ts +0 -27
- package/src/skills/frontend-design.ts +0 -35
- package/src/skills/git-workflow.ts +0 -36
- package/src/skills/improve-architecture.ts +0 -38
- package/src/skills/index.ts +0 -136
- package/src/skills/neuroweave.ts +0 -47
- package/src/skills/playwright.ts +0 -72
- package/src/skills/prototype.ts +0 -30
- package/src/skills/subagent.ts +0 -28
- package/src/skills/supabase.ts +0 -44
- package/src/skills/systematic-debugging.ts +0 -44
- package/src/skills/tdd.ts +0 -39
- package/src/skills/triage.ts +0 -35
- package/src/skills/verification.ts +0 -31
- package/src/skills/writing-plans.ts +0 -42
- package/src/tools/file.ts +0 -143
- package/src/tools/git.ts +0 -132
- package/src/tools/index.ts +0 -111
- package/src/tools/nwt.ts +0 -598
- package/src/tools/search.ts +0 -263
- package/src/tools/shell.ts +0 -136
- package/src/tools/types.ts +0 -122
- package/src/tui/app.tsx +0 -159
- package/src/tui/components/ChatList.tsx +0 -41
- package/src/tui/components/ChatMessage.tsx +0 -54
- package/src/tui/components/Header.tsx +0 -66
- package/src/tui/components/InitWizard.tsx +0 -247
- package/src/tui/components/Markdown.tsx +0 -35
- package/src/tui/components/ModelSelector.tsx +0 -107
- package/src/tui/components/StatusBar.tsx +0 -30
- package/src/tui/components/Thinking.tsx +0 -17
- package/src/tui/components/ToolCall.tsx +0 -102
- package/src/tui/components/UserInput.tsx +0 -151
- package/src/tui/hooks/useChat.ts +0 -287
- package/src/tui/hooks/useCommands.ts +0 -271
- package/src/tui/index.ts +0 -6
- package/src/tui/welcome.ts +0 -177
- package/src/types.ts +0 -104
- package/src/utils/diff.ts +0 -71
- package/src/utils/project.ts +0 -99
- package/src/utils/stableStringify.ts +0 -47
- package/src/utils/thinking.ts +0 -119
- package/tests/cache/fingerprint.test.ts +0 -75
- package/tests/cache/providerCatalog.test.ts +0 -31
- package/tests/cache/smartModel.test.ts +0 -100
- package/tests/cache/stableStringify.test.ts +0 -43
- package/tests/cache/stats.test.ts +0 -146
- package/tests/cache/volatile.test.ts +0 -75
- package/tests/smoke-pollution.mjs +0 -78
- package/tests/smoke-thinking.mjs +0 -110
- package/tests/smoke-tool-stream.mjs +0 -69
- package/tests/smoke-tool.mjs +0 -117
- package/tsconfig.json +0 -21
|
@@ -3,6 +3,11 @@ import React from 'react';
|
|
|
3
3
|
interface Props {
|
|
4
4
|
active?: boolean;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* v3.0.6 (opencode-style): braille spinner + elapsed seconds. The interval
|
|
8
|
+
* only runs while the component is mounted (active), and unmounts to a
|
|
9
|
+
* plain null when the round finishes.
|
|
10
|
+
*/
|
|
6
11
|
export declare function Thinking({ active }: Props): React.JSX.Element | null;
|
|
7
12
|
export {};
|
|
8
13
|
//# sourceMappingURL=Thinking.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thinking.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Thinking.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"Thinking.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Thinking.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,MAAc,EAAE,EAAE,KAAK,4BAuBjD"}
|
|
@@ -1,8 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** @jsxImportSource react */
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
2
4
|
import { Box, Text } from 'ink';
|
|
5
|
+
import { theme } from '../theme.js';
|
|
6
|
+
const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
7
|
+
/**
|
|
8
|
+
* v3.0.6 (opencode-style): braille spinner + elapsed seconds. The interval
|
|
9
|
+
* only runs while the component is mounted (active), and unmounts to a
|
|
10
|
+
* plain null when the round finishes.
|
|
11
|
+
*/
|
|
3
12
|
export function Thinking({ active = false }) {
|
|
13
|
+
const [frame, setFrame] = useState(0);
|
|
14
|
+
const [startedAt] = useState(() => Date.now());
|
|
15
|
+
const [elapsed, setElapsed] = useState(0);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (!active)
|
|
18
|
+
return undefined;
|
|
19
|
+
const spin = setInterval(() => setFrame(f => (f + 1) % FRAMES.length), 80);
|
|
20
|
+
const tick = setInterval(() => setElapsed(Math.floor((Date.now() - startedAt) / 1000)), 1000);
|
|
21
|
+
return () => {
|
|
22
|
+
clearInterval(spin);
|
|
23
|
+
clearInterval(tick);
|
|
24
|
+
};
|
|
25
|
+
}, [active, startedAt]);
|
|
4
26
|
if (!active)
|
|
5
27
|
return null;
|
|
6
|
-
return (
|
|
28
|
+
return (_jsxs(Box, { paddingLeft: 2, children: [_jsxs(Text, { color: theme.accent, children: [FRAMES[frame], " "] }), _jsxs(Text, { color: theme.textDim, children: ["thinking", elapsed > 0 ? `… ${elapsed}s` : '…'] })] }));
|
|
7
29
|
}
|
|
8
30
|
//# sourceMappingURL=Thinking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thinking.js","sourceRoot":"","sources":["../../../src/tui/components/Thinking.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Thinking.js","sourceRoot":"","sources":["../../../src/tui/components/Thinking.tsx"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAMlE;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,EAAS;IAChD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9F,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAE,CAAC,aACjB,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,aAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAClD,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,yBAAW,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,IAAQ,IAC5E,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -10,6 +10,11 @@ interface Props {
|
|
|
10
10
|
tool: ToolCallData;
|
|
11
11
|
width?: number;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* v3.0.6 (opencode-style): tool calls render as a dim `⎿` continuation
|
|
15
|
+
* line with a compact result summary — 2 lines of output (or the error),
|
|
16
|
+
* not a full panel. The full text stays in the conversation history.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ToolCall({ tool }: Props): React.JSX.Element;
|
|
14
19
|
export type { ToolCallData };
|
|
15
20
|
//# sourceMappingURL=ToolCall.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCall.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ToolCall.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolCall.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ToolCall.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,KAAK;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkCD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,qBAiCvC;AAED,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,34 +1,62 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
|
-
|
|
3
|
+
import { theme } from '../theme.js';
|
|
4
|
+
/**
|
|
5
|
+
* Compact one-line arg preview per tool, opencode-style:
|
|
6
|
+
* ⎿ shell(npm test)
|
|
7
|
+
* ⎿ file(write src/app.ts)
|
|
8
|
+
*/
|
|
9
|
+
function formatToolLabel(name, args) {
|
|
4
10
|
try {
|
|
5
11
|
const obj = JSON.parse(args);
|
|
6
12
|
switch (name) {
|
|
7
|
-
case 'file':
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return
|
|
13
|
+
case 'file':
|
|
14
|
+
return { title: `${obj.action || 'file'}`, detail: obj.path || '' };
|
|
15
|
+
case 'shell':
|
|
16
|
+
return { title: 'shell', detail: obj.command?.slice(0, 70) || '' };
|
|
17
|
+
case 'git':
|
|
18
|
+
return { title: `git ${obj.action || ''}`.trim(), detail: obj.message ? `"${String(obj.message).slice(0, 50)}"` : (obj.args || '') };
|
|
19
|
+
case 'search':
|
|
20
|
+
return { title: obj.action || 'search', detail: obj.pattern || obj.query || '' };
|
|
21
|
+
case 'nwt':
|
|
22
|
+
return { title: `nwt ${obj.action || ''}`.trim(), detail: obj.task || obj.query || '' };
|
|
23
|
+
default: {
|
|
24
|
+
if (name.startsWith('mcp__')) {
|
|
25
|
+
const short = name.replace(/^mcp__/, '').replace(/__/, ' · ');
|
|
26
|
+
return { title: short, detail: Object.keys(obj).slice(0, 2).map(k => `${k}=${JSON.stringify(obj[k])}`.slice(0, 40)).join(' ') };
|
|
27
|
+
}
|
|
28
|
+
return { title: name, detail: Object.keys(obj).slice(0, 2).join(', ') };
|
|
11
29
|
}
|
|
12
|
-
case 'shell': return obj.command?.slice(0, 60) || '';
|
|
13
|
-
case 'git': return obj.command || '';
|
|
14
|
-
case 'search': return obj.query || obj.pattern || '';
|
|
15
|
-
case 'nwt': return obj.action || '';
|
|
16
|
-
default: return Object.keys(obj).slice(0, 2).join(', ');
|
|
17
30
|
}
|
|
18
31
|
}
|
|
19
32
|
catch {
|
|
20
|
-
return '';
|
|
33
|
+
return { title: name, detail: (args || '').slice(0, 50) };
|
|
21
34
|
}
|
|
22
35
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
/**
|
|
37
|
+
* v3.0.6 (opencode-style): tool calls render as a dim `⎿` continuation
|
|
38
|
+
* line with a compact result summary — 2 lines of output (or the error),
|
|
39
|
+
* not a full panel. The full text stays in the conversation history.
|
|
40
|
+
*/
|
|
41
|
+
export function ToolCall({ tool }) {
|
|
42
|
+
const { title, detail } = formatToolLabel(tool.name, tool.args);
|
|
43
|
+
const running = tool.result === undefined;
|
|
44
|
+
let resultLine = null;
|
|
45
|
+
if (tool.result !== undefined) {
|
|
46
|
+
const lines = tool.result.split('\n').filter(l => l.trim());
|
|
47
|
+
if (tool.isError) {
|
|
48
|
+
resultLine = { text: lines[0]?.slice(0, 90) || 'failed', color: theme.error };
|
|
49
|
+
}
|
|
50
|
+
else if (lines.length === 0) {
|
|
51
|
+
resultLine = { text: 'ok (no output)', color: theme.textFaint };
|
|
52
|
+
}
|
|
53
|
+
else if (lines.length <= 2) {
|
|
54
|
+
resultLine = { text: lines.join(' · ').slice(0, 100), color: theme.textDim };
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
resultLine = { text: `${lines.length} 行 · ${lines[0].slice(0, 70)}`, color: theme.textFaint };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, marginBottom: 0, children: [_jsxs(Box, { children: [_jsx(Text, { color: theme.toolMark, children: "\u23BF " }), _jsx(Text, { color: theme.accentDim, children: title }), detail && _jsxs(Text, { color: theme.textDim, children: [" ", detail] }), running && _jsx(Text, { color: theme.textFaint, children: " \u27F3" })] }), resultLine && (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { color: resultLine.color, wrap: "truncate-end", children: resultLine.text }) }))] }));
|
|
33
61
|
}
|
|
34
62
|
//# sourceMappingURL=ToolCall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCall.js","sourceRoot":"","sources":["../../../src/tui/components/ToolCall.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolCall.js","sourceRoot":"","sources":["../../../src/tui/components/ToolCall.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,11 @@ interface Props {
|
|
|
5
5
|
onCancel: () => void;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* v3.0.6 (opencode-style input): a rounded-border input field with an
|
|
10
|
+
* accent `❯` prompt, placeholder text when empty, and a dim keybinding
|
|
11
|
+
* hint bar underneath. Command completion still pops up above the box.
|
|
12
|
+
*/
|
|
8
13
|
export declare function UserInput({ onSubmit, onCancel, disabled }: Props): React.JSX.Element;
|
|
9
14
|
export {};
|
|
10
15
|
//# sourceMappingURL=UserInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserInput.d.ts","sourceRoot":"","sources":["../../../src/tui/components/UserInput.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UserInput.d.ts","sourceRoot":"","sources":["../../../src/tui/components/UserInput.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,UAAU,KAAK;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,qBA+IhE"}
|
|
@@ -3,6 +3,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { Box, Text, useInput, useApp, useFocus } from 'ink';
|
|
5
5
|
import { COMMAND_LIST } from '../hooks/useCommands.js';
|
|
6
|
+
import { theme } from '../theme.js';
|
|
7
|
+
/**
|
|
8
|
+
* v3.0.6 (opencode-style input): a rounded-border input field with an
|
|
9
|
+
* accent `❯` prompt, placeholder text when empty, and a dim keybinding
|
|
10
|
+
* hint bar underneath. Command completion still pops up above the box.
|
|
11
|
+
*/
|
|
6
12
|
export function UserInput({ onSubmit, onCancel, disabled }) {
|
|
7
13
|
const [value, setValue] = useState('');
|
|
8
14
|
const [history, setHistory] = useState([]);
|
|
@@ -37,17 +43,8 @@ export function UserInput({ onSubmit, onCancel, disabled }) {
|
|
|
37
43
|
}
|
|
38
44
|
if (key.tab || key.return) {
|
|
39
45
|
const selected = filteredCommands[selectedCmd] || filteredCommands[0];
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
// actually execute the command. For single-word commands like
|
|
43
|
-
// /模型 /新建 /压缩 /帮助 /技能 etc. that meant: "press Enter twice
|
|
44
|
-
// to switch model", which is confusing and a reproduce-and-exit
|
|
45
|
-
// vector if the user panics and Ctrl+C's in the middle.
|
|
46
|
-
//
|
|
47
|
-
// Fix: when Enter is pressed on a command-list item, EXECUTE the
|
|
48
|
-
// command directly. If the user wants to append args (e.g. /模型
|
|
49
|
-
// <name>), they can type them after the slash. Tab still writes
|
|
50
|
-
// the name into the input so the user can append text.
|
|
46
|
+
// Enter on a list item EXECUTES the command directly; Tab writes
|
|
47
|
+
// the name into the input so the user can append args.
|
|
51
48
|
if (key.return) {
|
|
52
49
|
setSelectedCmd(0);
|
|
53
50
|
setValue('');
|
|
@@ -56,7 +53,6 @@ export function UserInput({ onSubmit, onCancel, disabled }) {
|
|
|
56
53
|
onSubmit(selected.name);
|
|
57
54
|
return;
|
|
58
55
|
}
|
|
59
|
-
// Tab: write the name into the input so the user can append args.
|
|
60
56
|
setValue(selected.name + ' ');
|
|
61
57
|
setSelectedCmd(0);
|
|
62
58
|
return;
|
|
@@ -109,6 +105,6 @@ export function UserInput({ onSubmit, onCancel, disabled }) {
|
|
|
109
105
|
setSelectedCmd(0);
|
|
110
106
|
}
|
|
111
107
|
});
|
|
112
|
-
return (_jsxs(Box, { flexDirection: "column", children: [showCommands && filteredCommands.length > 0 && (_jsx(Box, { flexDirection: "column", paddingLeft: 2, marginBottom: 0, children: filteredCommands.map((cmd, i) => (_jsxs(Box, { children: [_jsx(Text, { color: i === selectedCmd ?
|
|
108
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 0, children: [showCommands && filteredCommands.length > 0 && (_jsx(Box, { flexDirection: "column", paddingLeft: 2, marginBottom: 0, children: filteredCommands.map((cmd, i) => (_jsxs(Box, { children: [_jsx(Text, { color: i === selectedCmd ? theme.accent : theme.textFaint, children: i === selectedCmd ? '▸ ' : ' ' }), _jsx(Text, { color: i === selectedCmd ? theme.accent : theme.textDim, bold: i === selectedCmd, children: cmd.name }), _jsxs(Text, { color: theme.textFaint, children: [" ", cmd.desc] })] }, cmd.name))) })), _jsx(Box, { borderStyle: "round", borderColor: disabled ? theme.border : theme.accentDim, paddingX: 1, width: "100%", children: _jsxs(Box, { children: [_jsx(Text, { color: theme.accent, bold: true, children: disabled ? ' ' : '❯ ' }), value ? (_jsx(Text, { children: value })) : (!disabled && _jsx(Text, { color: theme.textFaint, children: "\u6709\u4EC0\u4E48\u53EF\u4EE5\u5E2E\u4F60\uFF1F\uFF08/ \u547D\u4EE4 \u00B7 exit \u9000\u51FA\uFF09" })), !disabled && _jsx(Text, { color: theme.accent, children: "\u2588" })] }) }), _jsx(Box, { paddingLeft: 1, children: _jsx(Text, { color: theme.textFaint, children: "\u2191\u2193 \u5386\u53F2 \u00B7 /help \u547D\u4EE4 \u00B7 esc \u53D6\u6D88 \u00B7 ctrl+c \u9000\u51FA" }) })] }));
|
|
113
109
|
}
|
|
114
110
|
//# sourceMappingURL=UserInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserInput.js","sourceRoot":"","sources":["../../../src/tui/components/UserInput.tsx"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"UserInput.js","sourceRoot":"","sources":["../../../src/tui/components/UserInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ import type { Usage } from '../../types.js';
|
|
|
20
20
|
export declare function useChat(app: App): {
|
|
21
21
|
sendMessage: (input: string) => void;
|
|
22
22
|
cancel: () => void;
|
|
23
|
+
hydrateMessages: (msgs: MessageData[]) => void;
|
|
23
24
|
messages: MessageData[];
|
|
24
25
|
isThinking: boolean;
|
|
25
26
|
streaming: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useChat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAgBzD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useChat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAgBzD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG;yBAmPU,MAAM;;4BAuBH,WAAW,EAAE;cAtS9C,WAAW,EAAE;gBACX,OAAO;eACR,MAAM;wBACG,YAAY,EAAE;mBACnB,MAAM,GAAG,IAAI;IAC5B;;;;OAIG;eACQ,KAAK,GAAG,IAAI;EAiSxB"}
|
|
@@ -27,8 +27,13 @@ export function useChat(app) {
|
|
|
27
27
|
const processingRef = useRef(false);
|
|
28
28
|
const queuedRef = useRef(null);
|
|
29
29
|
const abortRef = useRef(false);
|
|
30
|
+
// v3.0.5: real AbortController — cancel now aborts the provider fetch
|
|
31
|
+
// instead of only stopping the render loop while tokens keep generating.
|
|
32
|
+
const abortCtrlRef = useRef(null);
|
|
30
33
|
const processStream = async (input) => {
|
|
31
34
|
abortRef.current = false;
|
|
35
|
+
const ctrl = new AbortController();
|
|
36
|
+
abortCtrlRef.current = ctrl;
|
|
32
37
|
setState(prev => ({
|
|
33
38
|
...prev,
|
|
34
39
|
messages: [...prev.messages, { role: 'user', content: input }],
|
|
@@ -38,7 +43,7 @@ export function useChat(app) {
|
|
|
38
43
|
queuedMessage: null,
|
|
39
44
|
}));
|
|
40
45
|
app.session.addMessage('user', input);
|
|
41
|
-
const stream = app.streamResponse();
|
|
46
|
+
const stream = app.streamResponse(undefined, { signal: ctrl.signal });
|
|
42
47
|
let fullContent = '';
|
|
43
48
|
let currentToolCalls = [];
|
|
44
49
|
// Latest usage from this round; surfaced via state.lastUsage.
|
|
@@ -82,18 +87,19 @@ export function useChat(app) {
|
|
|
82
87
|
case 'tool_calls':
|
|
83
88
|
if (chunk.toolCalls && chunk.toolCalls.length > 0) {
|
|
84
89
|
// Replace rather than append — LLMService emits one combined
|
|
85
|
-
// tool_calls chunk per iteration.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
// tool_calls chunk per iteration.
|
|
91
|
+
// v3.0.5: the chunk now carries index-aligned results, so the
|
|
92
|
+
// ToolCall panel shows the actual output instead of the
|
|
93
|
+
// "(see tool result above)" placeholder it used to print.
|
|
94
|
+
currentToolCalls = chunk.toolCalls.map((tc, i) => {
|
|
95
|
+
const r = chunk.results?.[i];
|
|
96
|
+
return {
|
|
97
|
+
name: tc.function.name,
|
|
98
|
+
args: tc.function.arguments,
|
|
99
|
+
result: r ? (r.output.length > 400 ? r.output.slice(0, 400) + '...' : r.output) : undefined,
|
|
100
|
+
isError: r ? !r.ok : false,
|
|
101
|
+
};
|
|
102
|
+
});
|
|
97
103
|
setState(prev => ({
|
|
98
104
|
...prev,
|
|
99
105
|
isThinking: false,
|
|
@@ -156,7 +162,7 @@ export function useChat(app) {
|
|
|
156
162
|
// available in our local streaming state.
|
|
157
163
|
const toolSummary = currentToolCalls.length > 0
|
|
158
164
|
? '\n\n' + currentToolCalls.map((tc) => {
|
|
159
|
-
const r = tc.result !== undefined ? tc.result : '(
|
|
165
|
+
const r = tc.result !== undefined ? tc.result : '(no output captured)';
|
|
160
166
|
const short = r.length > 200 ? r.slice(0, 197) + '...' : r;
|
|
161
167
|
return `[tool: ${tc.name} → ${short}]`;
|
|
162
168
|
}).join('\n')
|
|
@@ -178,7 +184,12 @@ export function useChat(app) {
|
|
|
178
184
|
isThinking: false,
|
|
179
185
|
lastUsage,
|
|
180
186
|
}));
|
|
181
|
-
|
|
187
|
+
// v3.0.5: persist the session after each completed round (was:
|
|
188
|
+
// `app.session.truncate()` every round — a silent rewrite that
|
|
189
|
+
// destroyed the cache prefix once history crossed 50 entries; the
|
|
190
|
+
// SessionManager now compacts itself at the threshold and /resume
|
|
191
|
+
// needs the on-disk history to be current).
|
|
192
|
+
app.session.persist();
|
|
182
193
|
}
|
|
183
194
|
catch (error) {
|
|
184
195
|
if (abortRef.current) {
|
|
@@ -246,9 +257,18 @@ export function useChat(app) {
|
|
|
246
257
|
}, [app]);
|
|
247
258
|
const cancel = useCallback(() => {
|
|
248
259
|
abortRef.current = true;
|
|
260
|
+
// v3.0.5: abort the actual HTTP request, not just the render loop.
|
|
261
|
+
abortCtrlRef.current?.abort();
|
|
249
262
|
queuedRef.current = null;
|
|
250
263
|
setState(prev => ({ ...prev, queuedMessage: null, isThinking: false }));
|
|
251
264
|
}, []);
|
|
252
|
-
|
|
265
|
+
/**
|
|
266
|
+
* v3.0.5: /resume hydration — put a restored conversation into the chat
|
|
267
|
+
* list so the user sees the loaded history instead of an empty screen.
|
|
268
|
+
*/
|
|
269
|
+
const hydrateMessages = useCallback((msgs) => {
|
|
270
|
+
setState(prev => ({ ...prev, messages: msgs }));
|
|
271
|
+
}, []);
|
|
272
|
+
return { ...state, sendMessage, cancel, hydrateMessages };
|
|
253
273
|
}
|
|
254
274
|
//# sourceMappingURL=useChat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChat.js","sourceRoot":"","sources":["../../../src/tui/hooks/useChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAiB7F;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,OAAO,CAAC,GAAQ;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAY;QAC5C,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,EAAE;QACb,kBAAkB,EAAE,EAAE;QACtB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useChat.js","sourceRoot":"","sources":["../../../src/tui/hooks/useChat.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,13 @@ import type { App } from '../../app/index.js';
|
|
|
2
2
|
interface CommandResult {
|
|
3
3
|
handled: boolean;
|
|
4
4
|
output?: string;
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* v3.0.5: 'reload_model' / 'apply_ttl' / 'resume' are handled async by
|
|
7
|
+
* app.tsx after the sync output is displayed (reloadModel / applyTtl /
|
|
8
|
+
* session load are async or need React state access).
|
|
9
|
+
*/
|
|
10
|
+
action?: 'clear' | 'reinit' | 'reload_model' | 'apply_ttl' | 'resume';
|
|
11
|
+
payload?: any;
|
|
6
12
|
}
|
|
7
13
|
export declare const COMMAND_LIST: {
|
|
8
14
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCommands.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useCommands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"useCommands.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useCommands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAG9C,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtE,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAuBD,eAAO,MAAM,YAAY;;;GAYxB,CAAC;AAEF,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG;2BAEQ,MAAM,KAAG,aAAa;EAqQjE"}
|