@mohanscodex/spectra-code 0.4.6 → 0.4.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/dist/package.json +1 -1
- package/dist/src/agents/definitions.d.ts +2 -2
- package/dist/src/agents/definitions.d.ts.map +1 -1
- package/dist/src/agents/definitions.js +18 -18
- package/dist/src/agents/definitions.js.map +1 -1
- package/dist/src/agents/registry.d.ts +1 -1
- package/dist/src/agents/registry.d.ts.map +1 -1
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/cli.js +117 -115
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/agent.d.ts +1 -1
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +14 -14
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/db.d.ts +1 -1
- package/dist/src/commands/db.d.ts.map +1 -1
- package/dist/src/commands/db.js +11 -11
- package/dist/src/commands/db.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +33 -30
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/mcp.d.ts +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +39 -39
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/plugin.d.ts +1 -1
- package/dist/src/commands/plugin.d.ts.map +1 -1
- package/dist/src/commands/plugin.js +13 -13
- package/dist/src/commands/plugin.js.map +1 -1
- package/dist/src/commands/session.d.ts +1 -1
- package/dist/src/commands/session.d.ts.map +1 -1
- package/dist/src/commands/session.js +12 -12
- package/dist/src/commands/session.js.map +1 -1
- package/dist/src/index.d.ts +18 -18
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +16 -16
- package/dist/src/index.js.map +1 -1
- package/dist/src/integrations/acp/index.d.ts +1 -1
- package/dist/src/integrations/acp/index.js +1 -1
- package/dist/src/integrations/acp/server.d.ts.map +1 -1
- package/dist/src/integrations/acp/server.js +89 -79
- package/dist/src/integrations/acp/server.js.map +1 -1
- package/dist/src/integrations/custom-tools/index.d.ts +2 -2
- package/dist/src/integrations/custom-tools/index.js +1 -1
- package/dist/src/integrations/custom-tools/loader.d.ts +2 -2
- package/dist/src/integrations/custom-tools/loader.d.ts.map +1 -1
- package/dist/src/integrations/custom-tools/loader.js +19 -18
- package/dist/src/integrations/custom-tools/loader.js.map +1 -1
- package/dist/src/integrations/mcp/client.d.ts +5 -5
- package/dist/src/integrations/mcp/client.d.ts.map +1 -1
- package/dist/src/integrations/mcp/client.js +7 -7
- package/dist/src/integrations/mcp/client.js.map +1 -1
- package/dist/src/integrations/mcp/index.d.ts +2 -2
- package/dist/src/integrations/mcp/index.d.ts.map +1 -1
- package/dist/src/integrations/mcp/index.js +1 -1
- package/dist/src/integrations/mcp/index.js.map +1 -1
- package/dist/src/security/doom-loop.d.ts +1 -1
- package/dist/src/security/doom-loop.d.ts.map +1 -1
- package/dist/src/security/doom-loop.js +4 -4
- package/dist/src/security/doom-loop.js.map +1 -1
- package/dist/src/security/index.d.ts +10 -10
- package/dist/src/security/index.d.ts.map +1 -1
- package/dist/src/security/index.js +116 -69
- package/dist/src/security/index.js.map +1 -1
- package/dist/src/security/path-safety.d.ts +1 -1
- package/dist/src/security/path-safety.d.ts.map +1 -1
- package/dist/src/security/path-safety.js +19 -19
- package/dist/src/security/path-safety.js.map +1 -1
- package/dist/src/security/permissions.d.ts +1 -1
- package/dist/src/security/permissions.d.ts.map +1 -1
- package/dist/src/security/permissions.js +12 -10
- package/dist/src/security/permissions.js.map +1 -1
- package/dist/src/security/read-tracker.d.ts +2 -2
- package/dist/src/security/read-tracker.d.ts.map +1 -1
- package/dist/src/security/read-tracker.js +15 -13
- package/dist/src/security/read-tracker.js.map +1 -1
- package/dist/src/security/ssrf-guard.d.ts +1 -1
- package/dist/src/security/ssrf-guard.d.ts.map +1 -1
- package/dist/src/security/ssrf-guard.js +11 -11
- package/dist/src/security/ssrf-guard.js.map +1 -1
- package/dist/src/security/types.d.ts +4 -4
- package/dist/src/security/types.d.ts.map +1 -1
- package/dist/src/security/wildcard.d.ts.map +1 -1
- package/dist/src/security/wildcard.js +14 -16
- package/dist/src/security/wildcard.js.map +1 -1
- package/dist/src/services/auth-store.d.ts +3 -3
- package/dist/src/services/auth-store.d.ts.map +1 -1
- package/dist/src/services/auth-store.js +7 -7
- package/dist/src/services/auth-store.js.map +1 -1
- package/dist/src/services/config.d.ts +3 -3
- package/dist/src/services/config.d.ts.map +1 -1
- package/dist/src/services/config.js +17 -21
- package/dist/src/services/config.js.map +1 -1
- package/dist/src/services/context.d.ts.map +1 -1
- package/dist/src/services/context.js +5 -8
- package/dist/src/services/context.js.map +1 -1
- package/dist/src/services/custom-providers.d.ts +2 -2
- package/dist/src/services/custom-providers.d.ts.map +1 -1
- package/dist/src/services/custom-providers.js +108 -49
- package/dist/src/services/custom-providers.js.map +1 -1
- package/dist/src/services/session-store.d.ts +1 -1
- package/dist/src/services/session-store.d.ts.map +1 -1
- package/dist/src/services/session-store.js +32 -24
- package/dist/src/services/session-store.js.map +1 -1
- package/dist/src/services/snapshot-manager.d.ts.map +1 -1
- package/dist/src/services/snapshot-manager.js +14 -15
- package/dist/src/services/snapshot-manager.js.map +1 -1
- package/dist/src/tools/edit.d.ts +1 -1
- package/dist/src/tools/edit.js +18 -16
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/glob.d.ts +1 -1
- package/dist/src/tools/glob.d.ts.map +1 -1
- package/dist/src/tools/glob.js +20 -16
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/grep.d.ts +1 -1
- package/dist/src/tools/grep.d.ts.map +1 -1
- package/dist/src/tools/grep.js +18 -18
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/index.d.ts +4 -4
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +40 -32
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +2 -2
- package/dist/src/tools/mcp-tool.d.ts.map +1 -1
- package/dist/src/tools/mcp-tool.js +28 -25
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/read.d.ts +1 -1
- package/dist/src/tools/read.d.ts.map +1 -1
- package/dist/src/tools/read.js +15 -13
- package/dist/src/tools/read.js.map +1 -1
- package/dist/src/tools/shell.d.ts +1 -1
- package/dist/src/tools/shell.d.ts.map +1 -1
- package/dist/src/tools/shell.js +71 -62
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/task.d.ts +1 -1
- package/dist/src/tools/task.js +22 -22
- package/dist/src/tools/task.js.map +1 -1
- package/dist/src/tools/types.d.ts +3 -3
- package/dist/src/tools/types.d.ts.map +1 -1
- package/dist/src/tools/utils.d.ts +1 -1
- package/dist/src/tools/utils.js +2 -2
- package/dist/src/tools/utils.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +1 -1
- package/dist/src/tools/web-fetch.js +31 -31
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/write.d.ts +1 -1
- package/dist/src/tools/write.js +9 -9
- package/dist/src/tools/write.js.map +1 -1
- package/dist/src/tui/app-constants.d.ts.map +1 -1
- package/dist/src/tui/app-constants.js +11 -2
- package/dist/src/tui/app-constants.js.map +1 -1
- package/dist/src/tui/app.d.ts +1 -1
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +293 -121
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/commands.d.ts +14 -14
- package/dist/src/tui/commands.d.ts.map +1 -1
- package/dist/src/tui/commands.js +242 -49
- package/dist/src/tui/commands.js.map +1 -1
- package/dist/src/tui/components/chat-area.d.ts +2 -2
- package/dist/src/tui/components/chat-area.d.ts.map +1 -1
- package/dist/src/tui/components/chat-area.js +5 -5
- package/dist/src/tui/components/chat-area.js.map +1 -1
- package/dist/src/tui/components/command-palette.d.ts.map +1 -1
- package/dist/src/tui/components/command-palette.js +7 -5
- package/dist/src/tui/components/command-palette.js.map +1 -1
- package/dist/src/tui/components/message.d.ts +2 -2
- package/dist/src/tui/components/message.d.ts.map +1 -1
- package/dist/src/tui/components/message.js +63 -50
- package/dist/src/tui/components/message.js.map +1 -1
- package/dist/src/tui/components/slash-autocomplete.d.ts +2 -2
- package/dist/src/tui/components/slash-autocomplete.d.ts.map +1 -1
- package/dist/src/tui/components/slash-autocomplete.js +6 -8
- package/dist/src/tui/components/slash-autocomplete.js.map +1 -1
- package/dist/src/tui/components/toast.d.ts +2 -2
- package/dist/src/tui/components/toast.d.ts.map +1 -1
- package/dist/src/tui/components/toast.js +10 -5
- package/dist/src/tui/components/toast.js.map +1 -1
- package/dist/src/tui/hooks/use-agent.d.ts +3 -3
- package/dist/src/tui/hooks/use-agent.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-agent.js +22 -29
- package/dist/src/tui/hooks/use-agent.js.map +1 -1
- package/dist/src/tui/hooks/use-app-keyboard.d.ts +3 -3
- package/dist/src/tui/hooks/use-app-keyboard.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-app-keyboard.js +28 -29
- package/dist/src/tui/hooks/use-app-keyboard.js.map +1 -1
- package/dist/src/tui/hooks/use-chat-submit.d.ts +6 -6
- package/dist/src/tui/hooks/use-chat-submit.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-chat-submit.js +115 -54
- package/dist/src/tui/hooks/use-chat-submit.js.map +1 -1
- package/dist/src/tui/hooks/use-permission-queue.d.ts +2 -2
- package/dist/src/tui/hooks/use-permission-queue.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-permission-queue.js +1 -1
- package/dist/src/tui/hooks/use-permission-queue.js.map +1 -1
- package/dist/src/tui/hooks/use-revert.d.ts +4 -4
- package/dist/src/tui/hooks/use-revert.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-revert.js +22 -13
- package/dist/src/tui/hooks/use-revert.js.map +1 -1
- package/dist/src/tui/index.d.ts.map +1 -1
- package/dist/src/tui/index.js +11 -11
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/prompt-bar.d.ts +1 -1
- package/dist/src/tui/prompt-bar.d.ts.map +1 -1
- package/dist/src/tui/prompt-bar.js +14 -11
- package/dist/src/tui/prompt-bar.js.map +1 -1
- package/dist/src/tui/slash-commands.d.ts +2 -2
- package/dist/src/tui/slash-commands.d.ts.map +1 -1
- package/dist/src/tui/slash-commands.js +9 -9
- package/dist/src/tui/slash-commands.js.map +1 -1
- package/dist/src/tui/theme.d.ts +1 -1
- package/dist/src/tui/theme.d.ts.map +1 -1
- package/dist/src/tui/theme.js +46 -38
- package/dist/src/tui/theme.js.map +1 -1
- package/dist/src/tui/tips.d.ts.map +1 -1
- package/dist/src/tui/tips.js +14 -14
- package/dist/src/tui/tips.js.map +1 -1
- package/dist/src/tui/types.d.ts +5 -5
- package/dist/src/tui/types.d.ts.map +1 -1
- package/dist/src/tui/ui/about-dialog.d.ts.map +1 -1
- package/dist/src/tui/ui/about-dialog.js +5 -5
- package/dist/src/tui/ui/about-dialog.js.map +1 -1
- package/dist/src/tui/ui/agent-switcher.d.ts.map +1 -1
- package/dist/src/tui/ui/agent-switcher.js +16 -14
- package/dist/src/tui/ui/agent-switcher.js.map +1 -1
- package/dist/src/tui/ui/debug-dialog.d.ts +1 -1
- package/dist/src/tui/ui/debug-dialog.d.ts.map +1 -1
- package/dist/src/tui/ui/debug-dialog.js +26 -26
- package/dist/src/tui/ui/debug-dialog.js.map +1 -1
- package/dist/src/tui/ui/doctor-dialog.d.ts +2 -2
- package/dist/src/tui/ui/doctor-dialog.d.ts.map +1 -1
- package/dist/src/tui/ui/doctor-dialog.js +10 -8
- package/dist/src/tui/ui/doctor-dialog.js.map +1 -1
- package/dist/src/tui/ui/manage-providers-dialog.d.ts +1 -1
- package/dist/src/tui/ui/manage-providers-dialog.d.ts.map +1 -1
- package/dist/src/tui/ui/manage-providers-dialog.js +102 -86
- package/dist/src/tui/ui/manage-providers-dialog.js.map +1 -1
- package/dist/src/tui/ui/mcp-toggle-dialog.d.ts.map +1 -1
- package/dist/src/tui/ui/mcp-toggle-dialog.js +17 -14
- package/dist/src/tui/ui/mcp-toggle-dialog.js.map +1 -1
- package/dist/src/tui/ui/message-controls.d.ts +1 -1
- package/dist/src/tui/ui/message-controls.d.ts.map +1 -1
- package/dist/src/tui/ui/message-controls.js +40 -28
- package/dist/src/tui/ui/message-controls.js.map +1 -1
- package/dist/src/tui/ui/model-switcher.d.ts.map +1 -1
- package/dist/src/tui/ui/model-switcher.js +40 -25
- package/dist/src/tui/ui/model-switcher.js.map +1 -1
- package/dist/src/tui/ui/permission-dialog.d.ts +1 -1
- package/dist/src/tui/ui/permission-dialog.d.ts.map +1 -1
- package/dist/src/tui/ui/permission-dialog.js +11 -11
- package/dist/src/tui/ui/permission-dialog.js.map +1 -1
- package/dist/src/tui/ui/provider-dialog.d.ts.map +1 -1
- package/dist/src/tui/ui/provider-dialog.js +75 -64
- package/dist/src/tui/ui/provider-dialog.js.map +1 -1
- package/dist/src/tui/ui/session-list.d.ts +3 -3
- package/dist/src/tui/ui/session-list.d.ts.map +1 -1
- package/dist/src/tui/ui/session-list.js +44 -32
- package/dist/src/tui/ui/session-list.js.map +1 -1
- package/dist/src/tui/ui/thinking-effort-dialog.d.ts.map +1 -1
- package/dist/src/tui/ui/thinking-effort-dialog.js +19 -19
- package/dist/src/tui/ui/thinking-effort-dialog.js.map +1 -1
- package/dist/src/tui/utils/model-config.d.ts.map +1 -1
- package/dist/src/tui/utils/model-config.js +13 -13
- package/dist/src/tui/utils/model-config.js.map +1 -1
- package/dist/src/tui/utils/session-messages.d.ts +2 -2
- package/dist/src/tui/utils/session-messages.d.ts.map +1 -1
- package/dist/src/tui/utils/session-messages.js +35 -22
- package/dist/src/tui/utils/session-messages.js.map +1 -1
- package/dist/src/tui/utils/version.d.ts.map +1 -1
- package/dist/src/tui/utils/version.js +7 -7
- package/dist/src/tui/utils/version.js.map +1 -1
- package/dist/src/tui/utils.d.ts +2 -2
- package/dist/src/tui/utils.d.ts.map +1 -1
- package/dist/src/tui/utils.js +7 -7
- package/dist/src/tui/utils.js.map +1 -1
- package/dist/src/tui/variant-cycle.d.ts.map +1 -1
- package/dist/src/tui/variant-cycle.js +23 -23
- package/dist/src/tui/variant-cycle.js.map +1 -1
- package/dist/src/utils/paths.d.ts.map +1 -1
- package/dist/src/utils/paths.js +25 -25
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/platform.d.ts.map +1 -1
- package/dist/src/utils/platform.js +15 -17
- package/dist/src/utils/platform.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { readFileSync, existsSync } from
|
|
2
|
-
import { dirname, resolve } from
|
|
3
|
-
import { fileURLToPath } from
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { dirname, resolve } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
4
|
function findVersion() {
|
|
5
5
|
let dir = dirname(fileURLToPath(import.meta.url));
|
|
6
6
|
for (let i = 0; i < 10; i++) {
|
|
7
|
-
const pkgPath = resolve(dir,
|
|
7
|
+
const pkgPath = resolve(dir, 'package.json');
|
|
8
8
|
if (existsSync(pkgPath)) {
|
|
9
9
|
try {
|
|
10
|
-
const pkg = JSON.parse(readFileSync(pkgPath,
|
|
11
|
-
if (pkg.name ===
|
|
10
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
11
|
+
if (pkg.name === '@mohanscodex/spectra-code')
|
|
12
12
|
return pkg.version;
|
|
13
13
|
}
|
|
14
14
|
catch { }
|
|
@@ -18,7 +18,7 @@ function findVersion() {
|
|
|
18
18
|
break;
|
|
19
19
|
dir = parent;
|
|
20
20
|
}
|
|
21
|
-
return
|
|
21
|
+
return '0.0.0';
|
|
22
22
|
}
|
|
23
23
|
export const VERSION = findVersion();
|
|
24
24
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/tui/utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/tui/utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,SAAS,WAAW;IACnB,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC;gBACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvD,IAAI,GAAG,CAAC,IAAI,KAAK,2BAA2B;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;YAClE,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACX,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC"}
|
package/dist/src/tui/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AssistantMessage } from
|
|
2
|
-
import type { ContentBlock } from
|
|
1
|
+
import type { AssistantMessage } from '@mohanscodex/spectra-ai';
|
|
2
|
+
import type { ContentBlock } from './types.js';
|
|
3
3
|
export declare function titlecase(str: string): string;
|
|
4
4
|
export declare function genId(): string;
|
|
5
5
|
export declare function getMessageBlocks(msg: AssistantMessage): ContentBlock[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0C,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA0C,MAAM,yBAAyB,CAAC;AACxG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,IAAI,MAAM,CAE9B;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAYtE"}
|
package/dist/src/tui/utils.js
CHANGED
|
@@ -7,17 +7,17 @@ export function genId() {
|
|
|
7
7
|
export function getMessageBlocks(msg) {
|
|
8
8
|
const blocks = [];
|
|
9
9
|
for (const c of msg.content) {
|
|
10
|
-
if (c.type ===
|
|
11
|
-
blocks.push({ type:
|
|
12
|
-
else if (c.type ===
|
|
13
|
-
blocks.push({ type:
|
|
14
|
-
else if (c.type ===
|
|
10
|
+
if (c.type === 'text')
|
|
11
|
+
blocks.push({ type: 'text', content: c.text });
|
|
12
|
+
else if (c.type === 'thinking')
|
|
13
|
+
blocks.push({ type: 'thinking', content: c.thinking });
|
|
14
|
+
else if (c.type === 'toolCall') {
|
|
15
15
|
const tc = c;
|
|
16
|
-
blocks.push({ type:
|
|
16
|
+
blocks.push({ type: 'toolCall', name: tc.name, args: JSON.stringify(tc.arguments, null, 2) });
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
if (msg.errorMessage)
|
|
20
|
-
blocks.push({ type:
|
|
20
|
+
blocks.push({ type: 'text', content: `[error] ${msg.errorMessage}` });
|
|
21
21
|
return blocks;
|
|
22
22
|
}
|
|
23
23
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tui/utils.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,SAAS,CAAC,GAAW;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tui/utils.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,SAAS,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,KAAK;IACpB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAqB;IACrD,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAG,CAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;aAClF,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAG,CAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC;aACvG,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,CAAa,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC;IACF,CAAC;IACD,IAAI,GAAG,CAAC,YAAY;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC5F,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant-cycle.d.ts","sourceRoot":"","sources":["../../../src/tui/variant-cycle.ts"],"names":[],"mappings":"AAgCA,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAK7D;AAED;;;GAGG;AACH,wBAAgB,WAAW,
|
|
1
|
+
{"version":3,"file":"variant-cycle.d.ts","sourceRoot":"","sources":["../../../src/tui/variant-cycle.ts"],"names":[],"mappings":"AAgCA,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAK7D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASxF;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD"}
|
|
@@ -2,36 +2,36 @@
|
|
|
2
2
|
* Based on opencode's ProviderTransform.variants() logic. */
|
|
3
3
|
const PROVIDER_EFFORTS = {
|
|
4
4
|
// Anthropic Claude 4.6+: adaptive thinking with effort
|
|
5
|
-
anthropic: [
|
|
5
|
+
anthropic: ['none', 'low', 'medium', 'high', 'max'],
|
|
6
6
|
// OpenAI: reasoning_effort parameter
|
|
7
|
-
openai: [
|
|
7
|
+
openai: ['none', 'low', 'medium', 'high'],
|
|
8
8
|
// DeepSeek: thinking budget
|
|
9
|
-
deepseek: [
|
|
9
|
+
deepseek: ['none', 'low', 'medium', 'high', 'max'],
|
|
10
10
|
// Google Gemini
|
|
11
|
-
google: [
|
|
11
|
+
google: ['none', 'low', 'medium', 'high', 'max'],
|
|
12
12
|
// xAI Grok
|
|
13
|
-
xai: [
|
|
13
|
+
xai: ['none', 'low', 'medium', 'high'],
|
|
14
14
|
// Groq
|
|
15
|
-
groq: [
|
|
15
|
+
groq: ['none', 'low', 'medium', 'high'],
|
|
16
16
|
// Generic fallback
|
|
17
|
-
default: [
|
|
17
|
+
default: ['none', 'high'],
|
|
18
18
|
};
|
|
19
|
-
const CUSTOM_PROVIDER_EFFORTS = [
|
|
19
|
+
const CUSTOM_PROVIDER_EFFORTS = ['none', 'low', 'medium', 'high'];
|
|
20
20
|
function normalizeProvider(provider) {
|
|
21
21
|
const p = provider.toLowerCase();
|
|
22
|
-
if (p.includes(
|
|
23
|
-
return
|
|
24
|
-
if (p.includes(
|
|
25
|
-
return
|
|
26
|
-
if (p.includes(
|
|
27
|
-
return
|
|
28
|
-
if (p.includes(
|
|
29
|
-
return
|
|
30
|
-
if (p.includes(
|
|
31
|
-
return
|
|
32
|
-
if (p.includes(
|
|
33
|
-
return
|
|
34
|
-
return
|
|
22
|
+
if (p.includes('anthropic'))
|
|
23
|
+
return 'anthropic';
|
|
24
|
+
if (p.includes('openai') || p === 'openrouter')
|
|
25
|
+
return 'openai';
|
|
26
|
+
if (p.includes('deepseek'))
|
|
27
|
+
return 'deepseek';
|
|
28
|
+
if (p.includes('google'))
|
|
29
|
+
return 'google';
|
|
30
|
+
if (p.includes('xai') || p.includes('grok'))
|
|
31
|
+
return 'xai';
|
|
32
|
+
if (p.includes('groq'))
|
|
33
|
+
return 'groq';
|
|
34
|
+
return 'default';
|
|
35
35
|
}
|
|
36
36
|
/** Get the available thinking effort levels for a given provider. */
|
|
37
37
|
export function getProviderEfforts(provider) {
|
|
@@ -57,8 +57,8 @@ export function cycleEffort(provider, currentEffort) {
|
|
|
57
57
|
}
|
|
58
58
|
/** Get a display label for the current thinking effort. */
|
|
59
59
|
export function getEffortLabel(effort) {
|
|
60
|
-
if (!effort || effort ===
|
|
61
|
-
return
|
|
60
|
+
if (!effort || effort === 'none')
|
|
61
|
+
return 'default';
|
|
62
62
|
return effort;
|
|
63
63
|
}
|
|
64
64
|
//# sourceMappingURL=variant-cycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant-cycle.js","sourceRoot":"","sources":["../../../src/tui/variant-cycle.ts"],"names":[],"mappings":"AAAA;8DAC8D;AAC9D,MAAM,gBAAgB,GAA6B;
|
|
1
|
+
{"version":3,"file":"variant-cycle.js","sourceRoot":"","sources":["../../../src/tui/variant-cycle.ts"],"names":[],"mappings":"AAAA;8DAC8D;AAC9D,MAAM,gBAAgB,GAA6B;IAClD,uDAAuD;IACvD,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IACnD,qCAAqC;IACrC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IACzC,4BAA4B;IAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IAClD,gBAAgB;IAChB,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IAChD,WAAW;IACX,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IACtC,OAAO;IACP,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IACvC,mBAAmB;IACnB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAElE,SAAS,iBAAiB,CAAC,QAAgB;IAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAChD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC;IAChE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAC9C,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,uBAAuB,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,aAAsB;IACnE,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,MAAe;IAC7C,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,IAAI,MAAM,CAU3C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAUzC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAED,MAAM,WAAW,aAAa;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,IAAI,MAAM,CAU3C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAUzC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA6BpE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAoCnE"}
|
package/dist/src/utils/paths.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { homedir } from
|
|
2
|
-
import { sep, join, resolve } from
|
|
3
|
-
import { existsSync, readdirSync, statSync } from
|
|
1
|
+
import { homedir } from 'os';
|
|
2
|
+
import { sep, join, resolve } from 'path';
|
|
3
|
+
import { existsSync, readdirSync, statSync } from 'fs';
|
|
4
4
|
export function getGlobalConfigDir() {
|
|
5
5
|
const xdg = process.env.XDG_CONFIG_HOME;
|
|
6
6
|
if (xdg)
|
|
7
|
-
return join(xdg,
|
|
7
|
+
return join(xdg, 'spectra');
|
|
8
8
|
const home = homedir();
|
|
9
|
-
if (process.platform ===
|
|
9
|
+
if (process.platform === 'win32') {
|
|
10
10
|
const appData = process.env.APPDATA;
|
|
11
11
|
if (appData)
|
|
12
|
-
return join(appData,
|
|
13
|
-
return join(home,
|
|
12
|
+
return join(appData, 'spectra');
|
|
13
|
+
return join(home, 'AppData', 'Roaming', 'spectra');
|
|
14
14
|
}
|
|
15
|
-
return join(home,
|
|
15
|
+
return join(home, '.config', 'spectra');
|
|
16
16
|
}
|
|
17
17
|
export function getGlobalDataDir() {
|
|
18
18
|
const xdg = process.env.XDG_DATA_HOME;
|
|
19
19
|
if (xdg)
|
|
20
|
-
return join(xdg,
|
|
20
|
+
return join(xdg, 'spectra');
|
|
21
21
|
const home = homedir();
|
|
22
|
-
if (process.platform ===
|
|
22
|
+
if (process.platform === 'win32') {
|
|
23
23
|
const localAppData = process.env.LOCALAPPDATA;
|
|
24
24
|
if (localAppData)
|
|
25
|
-
return join(localAppData,
|
|
26
|
-
return join(home,
|
|
25
|
+
return join(localAppData, 'spectra');
|
|
26
|
+
return join(home, 'AppData', 'Local', 'spectra');
|
|
27
27
|
}
|
|
28
|
-
return join(home,
|
|
28
|
+
return join(home, '.local', 'share', 'spectra');
|
|
29
29
|
}
|
|
30
30
|
export function getGlobalCacheDir() {
|
|
31
31
|
const xdg = process.env.XDG_CACHE_HOME;
|
|
32
32
|
if (xdg)
|
|
33
|
-
return join(xdg,
|
|
33
|
+
return join(xdg, 'spectra');
|
|
34
34
|
const home = homedir();
|
|
35
|
-
if (process.platform ===
|
|
35
|
+
if (process.platform === 'win32') {
|
|
36
36
|
const localAppData = process.env.LOCALAPPDATA;
|
|
37
37
|
if (localAppData)
|
|
38
|
-
return join(localAppData,
|
|
39
|
-
return join(home,
|
|
38
|
+
return join(localAppData, 'spectra', 'cache');
|
|
39
|
+
return join(home, 'AppData', 'Local', 'spectra', 'cache');
|
|
40
40
|
}
|
|
41
|
-
return join(home,
|
|
41
|
+
return join(home, '.cache', 'spectra');
|
|
42
42
|
}
|
|
43
43
|
export function discoverConfigDirs(startDir) {
|
|
44
44
|
const dirs = [];
|
|
@@ -46,7 +46,7 @@ export function discoverConfigDirs(startDir) {
|
|
|
46
46
|
if (existsSync(global))
|
|
47
47
|
dirs.push({ path: global, base: global });
|
|
48
48
|
const home = homedir();
|
|
49
|
-
const targets = [
|
|
49
|
+
const targets = ['.spectra', '.opencode', '.claude', '.agents'];
|
|
50
50
|
let current = resolve(startDir);
|
|
51
51
|
const parts = current.split(sep);
|
|
52
52
|
for (let i = parts.length; i >= 1; i--) {
|
|
@@ -54,7 +54,7 @@ export function discoverConfigDirs(startDir) {
|
|
|
54
54
|
for (const target of targets) {
|
|
55
55
|
const candidate = join(dir, target);
|
|
56
56
|
if (existsSync(candidate)) {
|
|
57
|
-
if (!dirs.some(d => d.path === candidate)) {
|
|
57
|
+
if (!dirs.some((d) => d.path === candidate)) {
|
|
58
58
|
dirs.push({ path: candidate, base: dir });
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -62,15 +62,15 @@ export function discoverConfigDirs(startDir) {
|
|
|
62
62
|
if (dir === home)
|
|
63
63
|
break;
|
|
64
64
|
}
|
|
65
|
-
const homeDot = join(home,
|
|
66
|
-
if (existsSync(homeDot) && !dirs.some(d => d.path === homeDot)) {
|
|
65
|
+
const homeDot = join(home, '.spectra');
|
|
66
|
+
if (existsSync(homeDot) && !dirs.some((d) => d.path === homeDot)) {
|
|
67
67
|
dirs.push({ path: homeDot, base: home });
|
|
68
68
|
}
|
|
69
69
|
return dirs;
|
|
70
70
|
}
|
|
71
71
|
export function discoverInstructionFiles(startDir) {
|
|
72
72
|
const files = [];
|
|
73
|
-
const names = [
|
|
73
|
+
const names = ['AGENTS.md', 'CLAUDE.md', 'SPECTRA.md', 'INSTRUCTIONS.md'];
|
|
74
74
|
let current = resolve(startDir);
|
|
75
75
|
const parts = current.split(sep);
|
|
76
76
|
for (let i = parts.length; i >= 1; i--) {
|
|
@@ -86,10 +86,10 @@ export function discoverInstructionFiles(startDir) {
|
|
|
86
86
|
}
|
|
87
87
|
const dirs = discoverConfigDirs(startDir);
|
|
88
88
|
for (const d of dirs) {
|
|
89
|
-
const instructionsDir = join(d.path,
|
|
89
|
+
const instructionsDir = join(d.path, 'instructions');
|
|
90
90
|
if (existsSync(instructionsDir) && statSync(instructionsDir).isDirectory()) {
|
|
91
91
|
for (const entry of readdirSync(instructionsDir)) {
|
|
92
|
-
if (entry.endsWith(
|
|
92
|
+
if (entry.endsWith('.md')) {
|
|
93
93
|
files.push(join(instructionsDir, entry));
|
|
94
94
|
}
|
|
95
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEvD,MAAM,UAAU,kBAAkB;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/utils/platform.ts"],"names":[],"mappings":"AAmBA,wBAAgB,eAAe,IAAI;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/utils/platform.ts"],"names":[],"mappings":"AAmBA,wBAAgB,eAAe,IAAI;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACZ,CAQA;AAED,wBAAgB,eAAe,IAAI,MAAM,CAuGxC"}
|
|
@@ -1,35 +1,33 @@
|
|
|
1
|
-
import { existsSync } from
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
2
|
function resolveShell() {
|
|
3
|
-
if (process.platform !==
|
|
4
|
-
return process.env.SHELL ||
|
|
3
|
+
if (process.platform !== 'win32') {
|
|
4
|
+
return process.env.SHELL || '/bin/bash';
|
|
5
5
|
}
|
|
6
|
-
const pathDirs = (process.env.PATH ||
|
|
6
|
+
const pathDirs = (process.env.PATH || '').split(';');
|
|
7
7
|
for (const dir of pathDirs) {
|
|
8
|
-
const pwshPath = dir ? `${dir}\pwsh.exe` :
|
|
8
|
+
const pwshPath = dir ? `${dir}\pwsh.exe` : 'pwsh.exe';
|
|
9
9
|
if (existsSync(pwshPath))
|
|
10
|
-
return
|
|
10
|
+
return 'pwsh.exe';
|
|
11
11
|
}
|
|
12
12
|
for (const dir of pathDirs) {
|
|
13
|
-
const psPath = dir ? `${dir}\powershell.exe` :
|
|
13
|
+
const psPath = dir ? `${dir}\powershell.exe` : 'powershell.exe';
|
|
14
14
|
if (existsSync(psPath))
|
|
15
|
-
return
|
|
15
|
+
return 'powershell.exe';
|
|
16
16
|
}
|
|
17
|
-
return process.env.COMSPEC ||
|
|
17
|
+
return process.env.COMSPEC || 'cmd.exe';
|
|
18
18
|
}
|
|
19
19
|
export function getPlatformInfo() {
|
|
20
|
-
const os = process.platform ===
|
|
21
|
-
: process.platform === "darwin" ? "macos"
|
|
22
|
-
: "linux";
|
|
20
|
+
const os = process.platform === 'win32' ? 'windows' : process.platform === 'darwin' ? 'macos' : 'linux';
|
|
23
21
|
const arch = process.arch;
|
|
24
22
|
const shell = resolveShell();
|
|
25
|
-
const homeDir = process.env.HOME || process.env.USERPROFILE ||
|
|
26
|
-
const hostname = process.env.HOSTNAME || process.env.COMPUTERNAME ||
|
|
23
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '/home';
|
|
24
|
+
const hostname = process.env.HOSTNAME || process.env.COMPUTERNAME || 'localhost';
|
|
27
25
|
const cwd = process.cwd();
|
|
28
26
|
return { os, arch, shell, homeDir, hostname, cwd };
|
|
29
27
|
}
|
|
30
28
|
export function getSystemPrompt() {
|
|
31
29
|
const info = getPlatformInfo();
|
|
32
|
-
const isWin = info.os ===
|
|
30
|
+
const isWin = info.os === 'windows';
|
|
33
31
|
return `You are Spectra Code, a deeply pragmatic, effective software engineer operating as an AI coding agent in the user's terminal.
|
|
34
32
|
|
|
35
33
|
You collaborate with the user in the same workspace, taking engineering quality seriously. You communicate directly and efficiently — keep the user informed about ongoing actions without unnecessary detail. Build context by examining the codebase first, never making assumptions or jumping to conclusions. Think through the nuances of the code you encounter.
|
|
@@ -47,8 +45,8 @@ All file operations default to the working directory. Use relative paths where p
|
|
|
47
45
|
You have access to these tools to complete tasks:
|
|
48
46
|
|
|
49
47
|
1. **bash** — Execute shell commands. Returns stdout, stderr, and exit code.
|
|
50
|
-
- ${isWin ? `Shell: ${info.shell}. Prefer PowerShell cmdlets for complex operations. Simple commands work with cmd.exe builtins (dir, echo, type). Never use '&&' — use '; if (\$?) { ... }' instead.` :
|
|
51
|
-
- ${isWin ?
|
|
48
|
+
- ${isWin ? `Shell: ${info.shell}. Prefer PowerShell cmdlets for complex operations. Simple commands work with cmd.exe builtins (dir, echo, type). Never use '&&' — use '; if (\$?) { ... }' instead.` : 'Standard bash shell. Use single quotes for literal strings.'}
|
|
49
|
+
- ${isWin ? 'Path handling: Use forward slashes or escaped backslashes. Bun and Node.js handle both.' : 'Standard POSIX paths.'}
|
|
52
50
|
- For commands that modify the file system, briefly explain what the command does and why.
|
|
53
51
|
- Avoid interactive commands (e.g., git rebase -i). Use non-interactive alternatives.
|
|
54
52
|
- Never run destructive commands (rm -rf, sudo, format, git reset --hard, git checkout --) without the user explicitly requesting them.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/utils/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/utils/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,SAAS,YAAY;IACpB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACtD,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,UAAU,CAAC;IAC7C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAChE,IAAI,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,gBAAgB,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe;IAQ9B,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACxG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC;IACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC;IACjF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC;IAEpC,OAAO;;;;;kBAKU,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI;cACzB,IAAI,CAAC,QAAQ;uBACJ,IAAI,CAAC,KAAK;wBACT,IAAI,CAAC,OAAO;mCACD,IAAI,CAAC,GAAG;;;;;;;;OAQpC,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,sKAAsK,CAAC,CAAC,CAAC,6DAA6D;OAClQ,KAAK,CAAC,CAAC,CAAC,yFAAyF,CAAC,CAAC,CAAC,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gFAgFlD,CAAC;AACjF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mohanscodex/spectra-code",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Spectra Code — TUI coding agent with CLI commands, tools, and LLM integration",
|
|
6
6
|
"bin": {
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
35
35
|
"@opentui/core": ">=0.2.6",
|
|
36
36
|
"@opentui/react": "^0.2.10",
|
|
37
|
-
"@mohanscodex/spectra-agent": "^0.4.
|
|
38
|
-
"@mohanscodex/spectra-ai": "^0.4.
|
|
37
|
+
"@mohanscodex/spectra-agent": "^0.4.7",
|
|
38
|
+
"@mohanscodex/spectra-ai": "^0.4.7",
|
|
39
39
|
"chalk": "^5.6.2",
|
|
40
40
|
"clipboardy": "^5.3.1",
|
|
41
41
|
"openai": "^5.3.0",
|