zerg-ztc 0.1.4 → 0.1.6
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/App.d.ts.map +1 -1
- package/dist/App.js +141 -16
- package/dist/App.js.map +1 -1
- package/dist/agent/agent.d.ts +4 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +21 -3
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/commands/config.d.ts.map +1 -1
- package/dist/agent/commands/config.js +68 -2
- package/dist/agent/commands/config.js.map +1 -1
- package/dist/agent/commands/index.d.ts.map +1 -1
- package/dist/agent/commands/index.js +2 -1
- package/dist/agent/commands/index.js.map +1 -1
- package/dist/agent/commands/update.d.ts +3 -0
- package/dist/agent/commands/update.d.ts.map +1 -0
- package/dist/agent/commands/update.js +33 -0
- package/dist/agent/commands/update.js.map +1 -0
- package/dist/agent/tools/file.d.ts.map +1 -1
- package/dist/agent/tools/file.js +10 -6
- package/dist/agent/tools/file.js.map +1 -1
- package/dist/agent/tools/index.d.ts +2 -2
- package/dist/agent/tools/index.d.ts.map +1 -1
- package/dist/agent/tools/index.js +2 -2
- package/dist/agent/tools/index.js.map +1 -1
- package/dist/agent/tools/search.d.ts.map +1 -1
- package/dist/agent/tools/search.js +5 -4
- package/dist/agent/tools/search.js.map +1 -1
- package/dist/agent/tools/shell.d.ts.map +1 -1
- package/dist/agent/tools/shell.js +7 -3
- package/dist/agent/tools/shell.js.map +1 -1
- package/dist/agent/tools/types.d.ts +4 -1
- package/dist/agent/tools/types.d.ts.map +1 -1
- package/dist/cli.js +46 -31
- package/dist/cli.js.map +1 -1
- package/dist/components/ActivityLine.d.ts +11 -0
- package/dist/components/ActivityLine.d.ts.map +1 -0
- package/dist/components/ActivityLine.js +9 -0
- package/dist/components/ActivityLine.js.map +1 -0
- package/dist/components/FullScreen.d.ts +1 -0
- package/dist/components/FullScreen.d.ts.map +1 -1
- package/dist/components/FullScreen.js +2 -2
- package/dist/components/FullScreen.js.map +1 -1
- package/dist/components/MessageList.d.ts +2 -1
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js +41 -2
- package/dist/components/MessageList.js.map +1 -1
- package/dist/components/SingleMessage.d.ts +9 -0
- package/dist/components/SingleMessage.d.ts.map +1 -0
- package/dist/components/SingleMessage.js +27 -0
- package/dist/components/SingleMessage.js.map +1 -0
- package/dist/components/StatusBar.d.ts +1 -0
- package/dist/components/StatusBar.d.ts.map +1 -1
- package/dist/components/StatusBar.js +2 -1
- package/dist/components/StatusBar.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/config/types.d.ts +1 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/ui/views/activity_line.d.ts +11 -0
- package/dist/ui/views/activity_line.d.ts.map +1 -0
- package/dist/ui/views/activity_line.js +20 -0
- package/dist/ui/views/activity_line.js.map +1 -0
- package/dist/ui/views/app.d.ts +5 -2
- package/dist/ui/views/app.d.ts.map +1 -1
- package/dist/ui/views/app.js +17 -14
- package/dist/ui/views/app.js.map +1 -1
- package/dist/ui/views/header.d.ts.map +1 -1
- package/dist/ui/views/header.js +3 -4
- package/dist/ui/views/header.js.map +1 -1
- package/dist/ui/views/input_area.d.ts.map +1 -1
- package/dist/ui/views/input_area.js +25 -12
- package/dist/ui/views/input_area.js.map +1 -1
- package/dist/ui/views/message_list.d.ts +3 -2
- package/dist/ui/views/message_list.d.ts.map +1 -1
- package/dist/ui/views/message_list.js +33 -19
- package/dist/ui/views/message_list.js.map +1 -1
- package/dist/ui/views/status_bar.d.ts +2 -1
- package/dist/ui/views/status_bar.d.ts.map +1 -1
- package/dist/ui/views/status_bar.js +4 -2
- package/dist/ui/views/status_bar.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +9 -1
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/spinner_frames.d.ts +2 -0
- package/dist/utils/spinner_frames.d.ts.map +1 -0
- package/dist/utils/spinner_frames.js +2 -0
- package/dist/utils/spinner_frames.js.map +1 -0
- package/dist/utils/spinner_verbs.d.ts +4 -0
- package/dist/utils/spinner_verbs.d.ts.map +1 -0
- package/dist/utils/spinner_verbs.js +22 -0
- package/dist/utils/spinner_verbs.js.map +1 -0
- package/dist/utils/tool_trace.d.ts.map +1 -1
- package/dist/utils/tool_trace.js +12 -2
- package/dist/utils/tool_trace.js.map +1 -1
- package/dist/utils/update.d.ts +9 -0
- package/dist/utils/update.d.ts.map +1 -0
- package/dist/utils/update.js +37 -0
- package/dist/utils/update.js.map +1 -0
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +16 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +1 -1
- package/src/App.tsx +180 -26
- package/src/agent/agent.ts +26 -6
- package/src/agent/commands/config.ts +76 -2
- package/src/agent/commands/index.ts +2 -0
- package/src/agent/commands/update.ts +32 -0
- package/src/agent/tools/file.ts +24 -19
- package/src/agent/tools/index.ts +5 -4
- package/src/agent/tools/search.ts +6 -5
- package/src/agent/tools/shell.ts +13 -9
- package/src/agent/tools/types.ts +5 -1
- package/src/cli.tsx +50 -30
- package/src/components/ActivityLine.tsx +23 -0
- package/src/components/FullScreen.tsx +4 -3
- package/src/components/MessageList.tsx +52 -6
- package/src/components/SingleMessage.tsx +59 -0
- package/src/components/StatusBar.tsx +3 -0
- package/src/components/index.tsx +3 -1
- package/src/config/types.ts +1 -0
- package/src/config.ts +8 -0
- package/src/ui/views/activity_line.ts +33 -0
- package/src/ui/views/app.ts +23 -14
- package/src/ui/views/header.ts +3 -4
- package/src/ui/views/input_area.ts +28 -17
- package/src/ui/views/message_list.ts +36 -20
- package/src/ui/views/status_bar.ts +5 -1
- package/src/utils/shell.ts +10 -1
- package/src/utils/spinner_frames.ts +1 -0
- package/src/utils/spinner_verbs.ts +23 -0
- package/src/utils/tool_trace.ts +12 -2
- package/src/utils/update.ts +44 -0
- package/src/utils/version.ts +15 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { DEFAULT_SPINNER_VERBS, formatSpinnerVerbs, parseSpinnerVerbs } from '../../utils/spinner_verbs.js';
|
|
1
2
|
export const configCommand = {
|
|
2
3
|
name: 'config',
|
|
3
4
|
description: 'Manage configuration',
|
|
4
|
-
usage: '<show|key|provider|endpoint|model> [value]',
|
|
5
|
+
usage: '<show|key|provider|endpoint|model|spinner> [value]',
|
|
5
6
|
handler: async (args, ctx) => {
|
|
6
7
|
const [subCmd, ...rest] = args;
|
|
7
8
|
const value = rest.join(' ');
|
|
@@ -21,6 +22,7 @@ export const configCommand = {
|
|
|
21
22
|
` Max Tokens: ${config.maxTokens}`,
|
|
22
23
|
` Zerg Endpoint: ${config.zergEndpoint || '(not set)'}`,
|
|
23
24
|
` Emulation: ${ctx.config.getEmulationId() || '(none)'}`,
|
|
25
|
+
` Spinner verbs: ${formatSpinnerVerbs(config.spinnerVerbs || DEFAULT_SPINNER_VERBS)}`,
|
|
24
26
|
'',
|
|
25
27
|
`Config storage: ${ctx.config.locationLabel || '~/.ztc/config.json'}`
|
|
26
28
|
].join('\n')
|
|
@@ -109,10 +111,74 @@ export const configCommand = {
|
|
|
109
111
|
content: `✓ Model updated: ${value}`
|
|
110
112
|
});
|
|
111
113
|
break;
|
|
114
|
+
case 'spinner': {
|
|
115
|
+
const [action, ...restParts] = rest;
|
|
116
|
+
const actionValue = restParts.join(' ');
|
|
117
|
+
const current = ctx.config.get().spinnerVerbs || DEFAULT_SPINNER_VERBS;
|
|
118
|
+
if (!action || action === 'show') {
|
|
119
|
+
ctx.addMessage({
|
|
120
|
+
role: 'system',
|
|
121
|
+
content: `Spinner verbs:\n ${formatSpinnerVerbs(current)}\n\nUsage:\n /config spinner show\n /config spinner set <verb1, verb2, ...>\n /config spinner add <verb>\n /config spinner remove <verb>\n /config spinner reset\n /config spinner off`
|
|
122
|
+
});
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (action === 'reset') {
|
|
126
|
+
ctx.config.set('spinnerVerbs', DEFAULT_SPINNER_VERBS);
|
|
127
|
+
ctx.config.save();
|
|
128
|
+
ctx.addMessage({ role: 'system', content: '✓ Spinner verbs reset to defaults.' });
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (action === 'off') {
|
|
132
|
+
ctx.config.set('spinnerVerbs', []);
|
|
133
|
+
ctx.config.save();
|
|
134
|
+
ctx.addMessage({ role: 'system', content: '✓ Spinner verbs disabled.' });
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (action === 'set') {
|
|
138
|
+
const verbs = parseSpinnerVerbs(actionValue);
|
|
139
|
+
if (verbs.length === 0) {
|
|
140
|
+
ctx.addMessage({ role: 'system', content: 'Usage: /config spinner set <verb1, verb2, ...>' });
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
ctx.config.set('spinnerVerbs', verbs);
|
|
144
|
+
ctx.config.save();
|
|
145
|
+
ctx.addMessage({ role: 'system', content: `✓ Spinner verbs updated: ${formatSpinnerVerbs(verbs)}` });
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (action === 'add') {
|
|
149
|
+
const verbs = parseSpinnerVerbs(actionValue);
|
|
150
|
+
if (verbs.length === 0) {
|
|
151
|
+
ctx.addMessage({ role: 'system', content: 'Usage: /config spinner add <verb>' });
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const next = [...current, ...verbs];
|
|
155
|
+
ctx.config.set('spinnerVerbs', next);
|
|
156
|
+
ctx.config.save();
|
|
157
|
+
ctx.addMessage({ role: 'system', content: `✓ Added spinner verbs: ${formatSpinnerVerbs(verbs)}` });
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (action === 'remove') {
|
|
161
|
+
const verbs = parseSpinnerVerbs(actionValue).map(v => v.toLowerCase());
|
|
162
|
+
if (verbs.length === 0) {
|
|
163
|
+
ctx.addMessage({ role: 'system', content: 'Usage: /config spinner remove <verb>' });
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const next = current.filter(v => !verbs.includes(v.toLowerCase()));
|
|
167
|
+
ctx.config.set('spinnerVerbs', next);
|
|
168
|
+
ctx.config.save();
|
|
169
|
+
ctx.addMessage({ role: 'system', content: `✓ Removed spinner verbs: ${formatSpinnerVerbs(verbs)}` });
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
ctx.addMessage({
|
|
173
|
+
role: 'system',
|
|
174
|
+
content: 'Usage: /config spinner <show|set|add|remove|reset|off> [value]'
|
|
175
|
+
});
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
112
178
|
default:
|
|
113
179
|
ctx.addMessage({
|
|
114
180
|
role: 'system',
|
|
115
|
-
content: 'Usage: /config <show|key|provider|endpoint|model> [value]\n\nExamples:\n /config show Show current config\n /config key sk-ant-... Set API key (current provider)\n /config key openai sk-... Set API key for provider\n /config provider openai Set provider\n /config endpoint https://api.example.com/v1 Set OpenAI-compatible base URL\n /config model claude-opus-4-20250514 Set model'
|
|
181
|
+
content: 'Usage: /config <show|key|provider|endpoint|model|spinner> [value]\n\nExamples:\n /config show Show current config\n /config key sk-ant-... Set API key (current provider)\n /config key openai sk-... Set API key for provider\n /config provider openai Set provider\n /config endpoint https://api.example.com/v1 Set OpenAI-compatible base URL\n /config model claude-opus-4-20250514 Set model\n /config spinner set Reticulating splines, Organizing thoughts'
|
|
116
182
|
});
|
|
117
183
|
}
|
|
118
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent/commands/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/commands/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/commands/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA2BrC,eAAO,MAAM,QAAQ,WAAc,CAAC;AACpC,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -14,8 +14,9 @@ import { skillsCommand } from './skills.js';
|
|
|
14
14
|
import { retryCommand } from './retry.js';
|
|
15
15
|
import { inputModeCommand } from './input_mode.js';
|
|
16
16
|
import { keybindingsCommand } from './keybindings.js';
|
|
17
|
+
import { updateCommand } from './update.js';
|
|
17
18
|
const commandList = [];
|
|
18
19
|
const helpCommand = makeHelpCommand(() => commandList);
|
|
19
|
-
commandList.push(helpCommand, configCommand, debugCommand, clearCommand, statusCommand, emulationCommand, shellCommand, cdCommand, clipboardCommand, modelsCommand, modelCommand, permissionsCommand, skillsCommand, keybindingsCommand, inputModeCommand, retryCommand, exitCommand);
|
|
20
|
+
commandList.push(helpCommand, configCommand, debugCommand, clearCommand, statusCommand, emulationCommand, shellCommand, cdCommand, clipboardCommand, modelsCommand, modelCommand, permissionsCommand, skillsCommand, keybindingsCommand, updateCommand, inputModeCommand, retryCommand, exitCommand);
|
|
20
21
|
export const commands = commandList;
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,GAAc,EAAE,CAAC;AAElC,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;AAEvD,WAAW,CAAC,IAAI,CACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,WAAW,CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/agent/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,eAAO,MAAM,aAAa,EAAE,OA2B3B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getVersion } from '../../utils/version.js';
|
|
2
|
+
import { checkForUpdate } from '../../utils/update.js';
|
|
3
|
+
export const updateCommand = {
|
|
4
|
+
name: 'update',
|
|
5
|
+
description: 'Check for updates and install the latest version',
|
|
6
|
+
handler: async (_args, ctx) => {
|
|
7
|
+
try {
|
|
8
|
+
ctx.addMessage({ role: 'system', content: 'Checking for updates...' });
|
|
9
|
+
const current = getVersion();
|
|
10
|
+
const info = await checkForUpdate(current);
|
|
11
|
+
if (!info.hasUpdate) {
|
|
12
|
+
ctx.addMessage({ role: 'system', content: `ZTC is up to date (v${current}).` });
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
ctx.addMessage({ role: 'system', content: `Updating to v${info.latest}...` });
|
|
16
|
+
const result = await ctx.shell.run('npm install -g zerg-ztc@latest');
|
|
17
|
+
if (result.exitCode === 0) {
|
|
18
|
+
ctx.addMessage({ role: 'system', content: `✓ Updated to v${info.latest}. Restart ZTC to use the new version.` });
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
ctx.addMessage({
|
|
22
|
+
role: 'system',
|
|
23
|
+
content: `Update failed (exit ${result.exitCode}).\n${result.stderr || result.stdout || ''}`.trim()
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const message = err instanceof Error ? err.message : 'Update failed';
|
|
29
|
+
ctx.addMessage({ role: 'system', content: `Update failed: ${message}` });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/agent/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,kDAAkD;IAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,OAAO,IAAI,EAAE,CAAC,CAAC;gBAChF,OAAO;YACT,CAAC;YACD,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YACrE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,IAAI,CAAC,MAAM,uCAAuC,EAAE,CAAC,CAAC;YACnH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,UAAU,CAAC;oBACb,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,uBAAuB,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;iBACpG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACrE,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAe,MAAM,YAAY,CAAC;AAW/C,eAAO,MAAM,YAAY,EAAE,IAsC1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,IA+D3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,IA2D/B,CAAC"}
|
package/dist/agent/tools/file.js
CHANGED
|
@@ -2,6 +2,10 @@ import { readFile, writeFile, readdir, stat } from 'fs/promises';
|
|
|
2
2
|
import { dirname, resolve } from 'path';
|
|
3
3
|
import { ToolCapability } from '../runtime/capabilities.js';
|
|
4
4
|
import { buildSimpleDiff } from '../../utils/diff.js';
|
|
5
|
+
function resolvePath(path, context) {
|
|
6
|
+
const base = context?.cwd || process.cwd();
|
|
7
|
+
return resolve(base, path);
|
|
8
|
+
}
|
|
5
9
|
// --- File Tools ---
|
|
6
10
|
export const readFileTool = {
|
|
7
11
|
capabilities: [ToolCapability.FILE_READ],
|
|
@@ -24,8 +28,8 @@ export const readFileTool = {
|
|
|
24
28
|
required: ['path']
|
|
25
29
|
}
|
|
26
30
|
},
|
|
27
|
-
execute: async (args) => {
|
|
28
|
-
const path =
|
|
31
|
+
execute: async (args, context) => {
|
|
32
|
+
const path = resolvePath(String(args.path), context);
|
|
29
33
|
const encoding = args.encoding || 'utf-8';
|
|
30
34
|
try {
|
|
31
35
|
const content = await readFile(path, { encoding });
|
|
@@ -66,8 +70,8 @@ export const writeFileTool = {
|
|
|
66
70
|
required: ['path', 'content']
|
|
67
71
|
}
|
|
68
72
|
},
|
|
69
|
-
execute: async (args) => {
|
|
70
|
-
const path =
|
|
73
|
+
execute: async (args, context) => {
|
|
74
|
+
const path = resolvePath(String(args.path), context);
|
|
71
75
|
const content = String(args.content);
|
|
72
76
|
const append = args.append === 'true';
|
|
73
77
|
try {
|
|
@@ -125,8 +129,8 @@ export const listDirectoryTool = {
|
|
|
125
129
|
required: ['path']
|
|
126
130
|
}
|
|
127
131
|
},
|
|
128
|
-
execute: async (args) => {
|
|
129
|
-
const path =
|
|
132
|
+
execute: async (args, context) => {
|
|
133
|
+
const path = resolvePath(String(args.path), context);
|
|
130
134
|
const recursive = args.recursive === 'true';
|
|
131
135
|
async function listDir(dir, depth = 0) {
|
|
132
136
|
if (depth > 3)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/agent/tools/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAqB;AAErB,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,YAAY,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC;IACxC,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,mDAAmD;QAChE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wCAAwC;iBACtD;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;oBAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;iBAC1C;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/agent/tools/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,SAAS,WAAW,CAAC,IAAY,EAAE,OAAqB;IACtD,MAAM,IAAI,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3C,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,qBAAqB;AAErB,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,YAAY,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC;IACxC,UAAU,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,mDAAmD;QAChE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wCAAwC;iBACtD;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;oBAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;iBAC1C;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAI,IAAI,CAAC,QAA2B,IAAI,OAAO,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,qBAAqB;gBACvD,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK;aAClC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,wBAAyB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,YAAY,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC;IACzC,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,yDAAyD;QACtE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uBAAuB;iBACrC;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kDAAkD;iBAChE;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;SAC9B;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;QAEtC,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC1D,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhD,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa,GAAG,EAAE,CAAC;YACrB,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACjE,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;gBACvC,IAAI;gBACJ,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;gBACpC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;gBAClC,SAAS,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI;aACrE,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAA0B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,YAAY,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC;IACxC,UAAU,EAAE;QACV,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,8BAA8B;QAC3C,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wBAAwB;iBACtC;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4CAA4C;iBAC1D;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;QAE5C,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAK,GAAG,CAAC;YAC3C,IAAI,KAAK,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAC;YAEzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,gBAAgB;gBAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAA4B;oBACpC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;iBACjD,CAAC;gBAEF,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;gBACrB,CAAC;gBAED,IAAI,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpE,IAAI,CAAC,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACtD,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,6BAA8B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Tool } from './types.js';
|
|
1
|
+
import { Tool, ToolContext } from './types.js';
|
|
2
2
|
import { ToolDefinition } from '../../types.js';
|
|
3
3
|
export declare const defaultTools: Tool[];
|
|
4
4
|
export declare function getToolDefinitions(tools?: Tool[]): ToolDefinition[];
|
|
5
5
|
export declare function getTool(name: string, tools?: Tool[]): Tool | undefined;
|
|
6
|
-
export declare function executeTool(name: string, args: Record<string, unknown>, tools?: Tool[]): Promise<string>;
|
|
6
|
+
export declare function executeTool(name: string, args: Record<string, unknown>, tools?: Tool[], context?: ToolContext): Promise<string>;
|
|
7
7
|
export { readFileTool, writeFileTool, listDirectoryTool } from './file.js';
|
|
8
8
|
export { searchTool } from './search.js';
|
|
9
9
|
export { listSkillsTool } from './skills.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAShD,eAAO,MAAM,YAAY,EAAE,IAAI,EAQ9B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,IAAI,EAAiB,GAAG,cAAc,EAAE,CAEjF;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,IAAI,EAAiB,GAAG,IAAI,GAAG,SAAS,CAEpF;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,GAAE,IAAI,EAAiB,EAC5B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -19,12 +19,12 @@ export function getToolDefinitions(tools = defaultTools) {
|
|
|
19
19
|
export function getTool(name, tools = defaultTools) {
|
|
20
20
|
return tools.find(t => t.definition.name === name);
|
|
21
21
|
}
|
|
22
|
-
export async function executeTool(name, args, tools = defaultTools) {
|
|
22
|
+
export async function executeTool(name, args, tools = defaultTools, context) {
|
|
23
23
|
const tool = getTool(name, tools);
|
|
24
24
|
if (!tool) {
|
|
25
25
|
throw new Error(`Unknown tool: ${name}`);
|
|
26
26
|
}
|
|
27
|
-
return tool.execute(args);
|
|
27
|
+
return tool.execute(args, context);
|
|
28
28
|
}
|
|
29
29
|
export { readFileTool, writeFileTool, listDirectoryTool } from './file.js';
|
|
30
30
|
export { searchTool } from './search.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAwB;AAExB,MAAM,CAAC,MAAM,YAAY,GAAW;IAClC,YAAY;IACZ,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,cAAc;IACd,cAAc;IACd,aAAa;CACd,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,QAAgB,YAAY;IAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,QAAgB,YAAY;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,IAA6B,EAC7B,QAAgB,YAAY;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAwB;AAExB,MAAM,CAAC,MAAM,YAAY,GAAW;IAClC,YAAY;IACZ,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,cAAc;IACd,cAAc;IACd,aAAa;CACd,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,QAAgB,YAAY;IAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,QAAgB,YAAY;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,IAA6B,EAC7B,QAAgB,YAAY,EAC5B,OAAqB;IAErB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAe,MAAM,YAAY,CAAC;AAyB/C,eAAO,MAAM,UAAU,EAAE,IA8GxB,CAAC"}
|
|
@@ -48,9 +48,10 @@ export const searchTool = {
|
|
|
48
48
|
required: ['pattern']
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
|
-
execute: async (args) => {
|
|
51
|
+
execute: async (args, context) => {
|
|
52
|
+
const baseCwd = context?.cwd || process.cwd();
|
|
52
53
|
const pattern = String(args.pattern || '');
|
|
53
|
-
const path = resolve(String(args.path || '.'));
|
|
54
|
+
const path = resolve(baseCwd, String(args.path || '.'));
|
|
54
55
|
const glob = args.glob ? String(args.glob) : undefined;
|
|
55
56
|
const outputMode = args.output_mode === 'files' ? 'files' : 'content';
|
|
56
57
|
const maxResults = Math.max(1, Math.min(200, parseInt(String(args.max_results || '20'), 10)));
|
|
@@ -70,14 +71,14 @@ export const searchTool = {
|
|
|
70
71
|
rgArgs.push(pattern, path);
|
|
71
72
|
let result = null;
|
|
72
73
|
try {
|
|
73
|
-
result = await runCommand('rg', rgArgs,
|
|
74
|
+
result = await runCommand('rg', rgArgs, baseCwd);
|
|
74
75
|
}
|
|
75
76
|
catch {
|
|
76
77
|
result = null;
|
|
77
78
|
}
|
|
78
79
|
if (!result || (result.code !== 0 && result.code !== 1)) {
|
|
79
80
|
const grepArgs = ['-R', '-n', pattern, path];
|
|
80
|
-
const fallback = await runCommand('grep', grepArgs,
|
|
81
|
+
const fallback = await runCommand('grep', grepArgs, baseCwd);
|
|
81
82
|
if (fallback.code !== 0 && fallback.code !== 1) {
|
|
82
83
|
throw new Error(fallback.stderr || 'Search failed');
|
|
83
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/agent/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQ5D,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW;IAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sBAAsB;AAEtB,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,YAAY,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC;IACxC,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mDAAmD;QAChE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6BAA6B;iBAC3C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qCAAqC;iBACnD;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;oBAC5C,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;iBAC3B;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yCAAyC;iBACvD;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/agent/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/shell.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/shell.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAe,MAAM,YAAY,CAAC;AAO/C,eAAO,MAAM,cAAc,EAAE,IA0D5B,CAAC"}
|
|
@@ -28,9 +28,10 @@ export const runCommandTool = {
|
|
|
28
28
|
required: ['command']
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
|
-
execute: async (args) => {
|
|
31
|
+
execute: async (args, context) => {
|
|
32
32
|
const command = String(args.command);
|
|
33
|
-
const
|
|
33
|
+
const baseCwd = context?.cwd || process.cwd();
|
|
34
|
+
const cwd = args.cwd ? resolve(baseCwd, String(args.cwd)) : baseCwd;
|
|
34
35
|
const timeout = parseInt(String(args.timeout || '30000'), 10);
|
|
35
36
|
// Basic safety checks
|
|
36
37
|
const dangerous = ['rm -rf /', 'mkfs', ':(){:|:&};:'];
|
|
@@ -53,7 +54,10 @@ export const runCommandTool = {
|
|
|
53
54
|
}
|
|
54
55
|
catch (err) {
|
|
55
56
|
const e = err;
|
|
56
|
-
|
|
57
|
+
// Include both stdout and stderr in error - many tools output errors to stdout
|
|
58
|
+
const output = [e.stdout, e.stderr].filter(Boolean).join('\n').trim();
|
|
59
|
+
const outputSnippet = output.slice(0, 2000) || '(no output)';
|
|
60
|
+
throw new Error(`Command failed (exit ${e.code || '?'}):\n${outputSnippet}`);
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/agent/tools/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,qBAAqB;AAErB,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,YAAY,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC;IACzC,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,2CAA2C;QACxD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;iBACxC;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mCAAmC;iBACjD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0CAA0C;iBACxD;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/agent/tools/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ToolDefinition } from '../../types.js';
|
|
2
2
|
import { ToolCapability } from '../runtime/capabilities.js';
|
|
3
|
+
export interface ToolContext {
|
|
4
|
+
cwd: string;
|
|
5
|
+
}
|
|
3
6
|
export interface Tool {
|
|
4
7
|
definition: ToolDefinition;
|
|
5
8
|
capabilities?: ToolCapability[];
|
|
6
|
-
execute: (args: Record<string, unknown
|
|
9
|
+
execute: (args: Record<string, unknown>, context?: ToolContext) => Promise<string>;
|
|
7
10
|
}
|
|
8
11
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAI5D,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,cAAc,CAAC;IAC3B,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAI5D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,cAAc,CAAC;IAC3B,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACpF"}
|
package/dist/cli.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { render } from 'ink';
|
|
4
|
-
import { resolve
|
|
5
|
-
import { statSync
|
|
6
|
-
import { fileURLToPath } from 'url';
|
|
4
|
+
import { resolve } from 'path';
|
|
5
|
+
import { statSync } from 'fs';
|
|
7
6
|
import { App } from './App.js';
|
|
8
7
|
import { configStore } from './config.js';
|
|
8
|
+
import { getVersion } from './utils/version.js';
|
|
9
9
|
// --- CLI Entry Point ---
|
|
10
10
|
// Parse command line args
|
|
11
11
|
const args = process.argv.slice(2);
|
|
@@ -70,13 +70,38 @@ if (cwdIndex >= 0) {
|
|
|
70
70
|
async function main() {
|
|
71
71
|
await configStore.load(true);
|
|
72
72
|
const isTty = Boolean(process.stdout.isTTY);
|
|
73
|
-
const useAltScreen = isTty
|
|
73
|
+
const useAltScreen = isTty
|
|
74
|
+
&& process.env.ZTC_ALT_SCREEN === '1'
|
|
75
|
+
&& process.env.ZTC_NO_ALT_SCREEN !== '1'
|
|
76
|
+
&& process.env.ZTC_SCROLLBACK !== '1';
|
|
74
77
|
if (useAltScreen) {
|
|
75
78
|
process.stdout.write('\x1b[?1049h');
|
|
76
79
|
process.stdout.write('\x1b[?25l');
|
|
80
|
+
}
|
|
81
|
+
if (isTty) {
|
|
82
|
+
// Clear screen and move cursor home for a clean start
|
|
77
83
|
process.stdout.write('\x1b[2J');
|
|
78
84
|
process.stdout.write('\x1b[H');
|
|
79
85
|
}
|
|
86
|
+
// In scrollback mode, print a static header once at startup
|
|
87
|
+
const scrollback = !useAltScreen;
|
|
88
|
+
if (scrollback && isTty) {
|
|
89
|
+
const version = getVersion();
|
|
90
|
+
const dateLabel = new Date().toLocaleDateString('en-US', {
|
|
91
|
+
month: 'short',
|
|
92
|
+
day: '2-digit',
|
|
93
|
+
year: 'numeric'
|
|
94
|
+
});
|
|
95
|
+
const cols = process.stdout.columns || 80;
|
|
96
|
+
const title = 'Zerg Terminal Client';
|
|
97
|
+
const right = `${dateLabel} • v${version} • Ctrl+C exit • /help`;
|
|
98
|
+
const padding = Math.max(0, cols - title.length - right.length - 4);
|
|
99
|
+
const borderLine = '─'.repeat(cols - 2);
|
|
100
|
+
console.log(`┌${borderLine}┐`);
|
|
101
|
+
console.log(`│ ${title}${' '.repeat(padding)}${right} │`);
|
|
102
|
+
console.log(`└${borderLine}┘`);
|
|
103
|
+
console.log(''); // Extra line after header
|
|
104
|
+
}
|
|
80
105
|
// Enable bracketed paste mode so we can detect paste boundaries
|
|
81
106
|
process.stdout.write('\x1b[?2004h');
|
|
82
107
|
// Enable Kitty keyboard protocol (progressive enhancement)
|
|
@@ -84,21 +109,23 @@ async function main() {
|
|
|
84
109
|
// Flags: 1 = disambiguate escape codes, 2 = report event types, 4 = report alternate keys, 8 = report all keys
|
|
85
110
|
// Using flags=1 for basic disambiguation which reports Cmd+V as CSI sequence
|
|
86
111
|
process.stdout.write('\x1b[>1u');
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
syncPending
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
112
|
+
if (useAltScreen) {
|
|
113
|
+
// Wrap stdout.write to use synchronized output (reduces flicker)
|
|
114
|
+
// DECSM/DECRM 2026 tells terminal to batch updates
|
|
115
|
+
const originalWrite = process.stdout.write.bind(process.stdout);
|
|
116
|
+
let syncPending = false;
|
|
117
|
+
process.stdout.write = function (chunk, encoding, callback) {
|
|
118
|
+
if (!syncPending) {
|
|
119
|
+
syncPending = true;
|
|
120
|
+
originalWrite('\x1b[?2026h'); // Begin synchronized update
|
|
121
|
+
setImmediate(() => {
|
|
122
|
+
originalWrite('\x1b[?2026l'); // End synchronized update
|
|
123
|
+
syncPending = false;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return originalWrite(chunk, encoding, callback);
|
|
127
|
+
};
|
|
128
|
+
}
|
|
102
129
|
// Render the app
|
|
103
130
|
const { waitUntilExit } = render(_jsx(App, {}));
|
|
104
131
|
// Handle clean exit
|
|
@@ -116,16 +143,4 @@ async function main() {
|
|
|
116
143
|
});
|
|
117
144
|
}
|
|
118
145
|
void main();
|
|
119
|
-
function getVersion() {
|
|
120
|
-
try {
|
|
121
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
122
|
-
const pkgPath = resolve(here, '../package.json');
|
|
123
|
-
const raw = readFileSync(pkgPath, 'utf-8');
|
|
124
|
-
const parsed = JSON.parse(raw);
|
|
125
|
-
return parsed.version || '0.0.0';
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
return '0.0.0';
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
146
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";;AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AgentState } from '../types.js';
|
|
3
|
+
interface ActivityLineProps {
|
|
4
|
+
state: AgentState;
|
|
5
|
+
spinnerLabel?: string | null;
|
|
6
|
+
spinnerFrame?: string | null;
|
|
7
|
+
inputMode?: 'queue' | 'interrupt';
|
|
8
|
+
}
|
|
9
|
+
export declare const ActivityLine: React.FC<ActivityLineProps>;
|
|
10
|
+
export default ActivityLine;
|
|
11
|
+
//# sourceMappingURL=ActivityLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityLine.d.ts","sourceRoot":"","sources":["../../src/components/ActivityLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,UAAU,iBAAiB;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CACnC;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAQpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { InkNode } from '../ui/ink/index.js';
|
|
3
|
+
import { buildActivityLineView } from '../ui/views/activity_line.js';
|
|
4
|
+
export const ActivityLine = ({ state, spinnerLabel, spinnerFrame, inputMode }) => {
|
|
5
|
+
const node = buildActivityLineView({ state, spinnerLabel, spinnerFrame, inputMode });
|
|
6
|
+
return _jsx(InkNode, { node: node });
|
|
7
|
+
};
|
|
8
|
+
export default ActivityLine;
|
|
9
|
+
//# sourceMappingURL=ActivityLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityLine.js","sourceRoot":"","sources":["../../src/components/ActivityLine.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AASrE,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EACV,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;IACrF,OAAO,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;AACjC,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|