surfcode 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +325 -2
- package/assets/surfcode-logo.gif +0 -0
- package/dist/cli/auth.js +315 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/config.js +228 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/headless.js +355 -0
- package/dist/cli/headless.js.map +1 -0
- package/dist/cli/inspect.js +462 -0
- package/dist/cli/inspect.js.map +1 -0
- package/dist/cli/interactive.js +130 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/sessions.js +170 -0
- package/dist/cli/sessions.js.map +1 -0
- package/dist/cli/sync.js +190 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/util.js +345 -0
- package/dist/cli/util.js.map +1 -0
- package/dist/cli.js +485 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/agent.js +281 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/agents.js +55 -0
- package/dist/core/agents.js.map +1 -0
- package/dist/core/auth.js +107 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/catalog.js +306 -0
- package/dist/core/catalog.js.map +1 -0
- package/dist/core/chat/anthropic.js +222 -0
- package/dist/core/chat/anthropic.js.map +1 -0
- package/dist/core/chat/common.js +367 -0
- package/dist/core/chat/common.js.map +1 -0
- package/dist/core/chat/google.js +180 -0
- package/dist/core/chat/google.js.map +1 -0
- package/dist/core/chat/index.js +80 -0
- package/dist/core/chat/index.js.map +1 -0
- package/dist/core/chat/openai.js +164 -0
- package/dist/core/chat/openai.js.map +1 -0
- package/dist/core/chat/types.js +2 -0
- package/dist/core/chat/types.js.map +1 -0
- package/dist/core/clipboard.js +34 -0
- package/dist/core/clipboard.js.map +1 -0
- package/dist/core/compact.js +39 -0
- package/dist/core/compact.js.map +1 -0
- package/dist/core/config.js +211 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/delegate.js +184 -0
- package/dist/core/delegate.js.map +1 -0
- package/dist/core/effort.js +80 -0
- package/dist/core/effort.js.map +1 -0
- package/dist/core/errors.js +32 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/free.js +21 -0
- package/dist/core/free.js.map +1 -0
- package/dist/core/github.js +445 -0
- package/dist/core/github.js.map +1 -0
- package/dist/core/paths.js +51 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/prompt.js +95 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/provider.js +298 -0
- package/dist/core/provider.js.map +1 -0
- package/dist/core/session.js +159 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/sync.js +126 -0
- package/dist/core/sync.js.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/usage.js +127 -0
- package/dist/core/usage.js.map +1 -0
- package/dist/core/workspace.js +70 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/data/models.json +1 -0
- package/dist/sync/server.js +179 -0
- package/dist/sync/server.js.map +1 -0
- package/dist/tools/diff.js +21 -0
- package/dist/tools/diff.js.map +1 -0
- package/dist/tools/files.js +227 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/github.js +238 -0
- package/dist/tools/github.js.map +1 -0
- package/dist/tools/index.js +34 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/search.js +231 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/shell.js +118 -0
- package/dist/tools/shell.js.map +1 -0
- package/dist/tools/todos.js +50 -0
- package/dist/tools/todos.js.map +1 -0
- package/dist/tools/webfetch.js +108 -0
- package/dist/tools/webfetch.js.map +1 -0
- package/dist/tui/App.js +3002 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/ansi.js +151 -0
- package/dist/tui/ansi.js.map +1 -0
- package/dist/tui/commands.js +61 -0
- package/dist/tui/commands.js.map +1 -0
- package/dist/tui/explorer.js +152 -0
- package/dist/tui/explorer.js.map +1 -0
- package/dist/tui/icons.js +21 -0
- package/dist/tui/icons.js.map +1 -0
- package/dist/tui/layout.js +324 -0
- package/dist/tui/layout.js.map +1 -0
- package/dist/tui/markdown.js +335 -0
- package/dist/tui/markdown.js.map +1 -0
- package/dist/tui/overlays.js +316 -0
- package/dist/tui/overlays.js.map +1 -0
- package/dist/tui/render.js +234 -0
- package/dist/tui/render.js.map +1 -0
- package/dist/tui/theme.js +148 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/types.js +73 -0
- package/dist/tui/types.js.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +75 -4
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
const AURORA = {
|
|
2
|
+
name: 'aurora',
|
|
3
|
+
label: 'Aurora',
|
|
4
|
+
description: 'deep blue, ice, and electric cyan',
|
|
5
|
+
accent: '#60A5FA',
|
|
6
|
+
accent2: '#38BDF8',
|
|
7
|
+
accent3: '#22D3EE',
|
|
8
|
+
text: '#E2E8F0',
|
|
9
|
+
muted: '#94A3B8',
|
|
10
|
+
dim: '#64748B',
|
|
11
|
+
faint: '#475569',
|
|
12
|
+
border: '#24344D',
|
|
13
|
+
borderBright: '#3B82F6',
|
|
14
|
+
user: '#93C5FD',
|
|
15
|
+
assistant: '#BFDBFE',
|
|
16
|
+
success: '#4ADE80',
|
|
17
|
+
warning: '#FBBF24',
|
|
18
|
+
error: '#FB7185',
|
|
19
|
+
code: '#93C5FD',
|
|
20
|
+
codeBorder: '#1E3A5F',
|
|
21
|
+
thinking: '#7C8AA5',
|
|
22
|
+
gradient: ['#1D4ED8', '#2563EB', '#0EA5E9', '#7DD3FC']
|
|
23
|
+
};
|
|
24
|
+
const DARK = {
|
|
25
|
+
name: 'dark',
|
|
26
|
+
label: 'Dark',
|
|
27
|
+
description: 'pure black canvas with electric blue and vivid accents',
|
|
28
|
+
background: '#000000',
|
|
29
|
+
accent: '#60A5FA',
|
|
30
|
+
accent2: '#A78BFA',
|
|
31
|
+
accent3: '#22D3EE',
|
|
32
|
+
text: '#F8FAFC',
|
|
33
|
+
muted: '#CBD5E1',
|
|
34
|
+
dim: '#94A3B8',
|
|
35
|
+
faint: '#64748B',
|
|
36
|
+
border: '#334155',
|
|
37
|
+
borderBright: '#60A5FA',
|
|
38
|
+
user: '#5EEAD4',
|
|
39
|
+
assistant: '#C4B5FD',
|
|
40
|
+
success: '#4ADE80',
|
|
41
|
+
warning: '#FBBF24',
|
|
42
|
+
error: '#FB7185',
|
|
43
|
+
code: '#F9A8D4',
|
|
44
|
+
codeBorder: '#831843',
|
|
45
|
+
thinking: '#A5B4FC',
|
|
46
|
+
gradient: ['#2563EB', '#3B82F6', '#22D3EE', '#A78BFA']
|
|
47
|
+
};
|
|
48
|
+
const EMBER = {
|
|
49
|
+
name: 'ember',
|
|
50
|
+
label: 'Ember',
|
|
51
|
+
description: 'warm orange sunsets over dark water',
|
|
52
|
+
accent: '#FB923C',
|
|
53
|
+
accent2: '#F43F5E',
|
|
54
|
+
accent3: '#FDE047',
|
|
55
|
+
text: '#F5E9E2',
|
|
56
|
+
muted: '#C4A99A',
|
|
57
|
+
dim: '#8F7466',
|
|
58
|
+
faint: '#634F44',
|
|
59
|
+
border: '#4A342A',
|
|
60
|
+
borderBright: '#6B4A3A',
|
|
61
|
+
user: '#FDBA74',
|
|
62
|
+
assistant: '#FDA4AF',
|
|
63
|
+
success: '#86EFAC',
|
|
64
|
+
warning: '#FDE047',
|
|
65
|
+
error: '#FB7185',
|
|
66
|
+
code: '#FDBA74',
|
|
67
|
+
codeBorder: '#5C3326',
|
|
68
|
+
thinking: '#B08C7A',
|
|
69
|
+
gradient: ['#F97316', '#F43F5E', '#FDE047']
|
|
70
|
+
};
|
|
71
|
+
const FOREST = {
|
|
72
|
+
name: 'forest',
|
|
73
|
+
label: 'Forest',
|
|
74
|
+
description: 'moss, mint, and quiet terminal energy',
|
|
75
|
+
accent: '#6EE7B7',
|
|
76
|
+
accent2: '#34D399',
|
|
77
|
+
accent3: '#A3E635',
|
|
78
|
+
text: '#E4EFE8',
|
|
79
|
+
muted: '#9CB8A8',
|
|
80
|
+
dim: '#6B8577',
|
|
81
|
+
faint: '#4B6156',
|
|
82
|
+
border: '#29453A',
|
|
83
|
+
borderBright: '#3C5F50',
|
|
84
|
+
user: '#5EEAD4',
|
|
85
|
+
assistant: '#86EFAC',
|
|
86
|
+
success: '#4ADE80',
|
|
87
|
+
warning: '#FACC15',
|
|
88
|
+
error: '#FB7185',
|
|
89
|
+
code: '#A7F3D0',
|
|
90
|
+
codeBorder: '#1F4A3A',
|
|
91
|
+
thinking: '#82A895',
|
|
92
|
+
gradient: ['#34D399', '#22D3EE', '#A3E635']
|
|
93
|
+
};
|
|
94
|
+
const VIOLET = {
|
|
95
|
+
name: 'violet',
|
|
96
|
+
label: 'Violet',
|
|
97
|
+
description: 'electric lilac with synthwave edges',
|
|
98
|
+
accent: '#C084FC',
|
|
99
|
+
accent2: '#818CF8',
|
|
100
|
+
accent3: '#F472B6',
|
|
101
|
+
text: '#ECE9FF',
|
|
102
|
+
muted: '#A99BC7',
|
|
103
|
+
dim: '#7C6F99',
|
|
104
|
+
faint: '#594F70',
|
|
105
|
+
border: '#3B2D56',
|
|
106
|
+
borderBright: '#58437A',
|
|
107
|
+
user: '#D8B4FE',
|
|
108
|
+
assistant: '#A5B4FC',
|
|
109
|
+
success: '#5EEAD4',
|
|
110
|
+
warning: '#FDE047',
|
|
111
|
+
error: '#FB7185',
|
|
112
|
+
code: '#E9D5FF',
|
|
113
|
+
codeBorder: '#4A2D6A',
|
|
114
|
+
thinking: '#A898C7',
|
|
115
|
+
gradient: ['#C084FC', '#818CF8', '#F472B6']
|
|
116
|
+
};
|
|
117
|
+
const MONO = {
|
|
118
|
+
name: 'mono',
|
|
119
|
+
label: 'Mono',
|
|
120
|
+
description: 'ink, graphite, and clean lines',
|
|
121
|
+
accent: '#F1F5F9',
|
|
122
|
+
accent2: '#CBD5E1',
|
|
123
|
+
accent3: '#94A3B8',
|
|
124
|
+
text: '#E2E8F0',
|
|
125
|
+
muted: '#A1AAB8',
|
|
126
|
+
dim: '#78828F',
|
|
127
|
+
faint: '#53606D',
|
|
128
|
+
border: '#39434F',
|
|
129
|
+
borderBright: '#56616E',
|
|
130
|
+
user: '#E2E8F0',
|
|
131
|
+
assistant: '#CBD5E1',
|
|
132
|
+
success: '#A3E635',
|
|
133
|
+
warning: '#FDE047',
|
|
134
|
+
error: '#FB7185',
|
|
135
|
+
code: '#F1F5F9',
|
|
136
|
+
codeBorder: '#3D4652',
|
|
137
|
+
thinking: '#8B96A3',
|
|
138
|
+
gradient: ['#F8FAFC', '#CBD5E1', '#64748B']
|
|
139
|
+
};
|
|
140
|
+
export const THEMES = [AURORA, DARK, EMBER, FOREST, VIOLET, MONO];
|
|
141
|
+
export function getTheme(name) {
|
|
142
|
+
return THEMES.find((theme) => theme.name === name || theme.label.toLowerCase() === name.toLowerCase()) ?? AURORA;
|
|
143
|
+
}
|
|
144
|
+
export function nextTheme(name, direction = 1) {
|
|
145
|
+
const index = Math.max(0, THEMES.findIndex((theme) => theme.name === getTheme(name).name));
|
|
146
|
+
return THEMES[(index + direction + THEMES.length) % THEMES.length] ?? AURORA;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export function timelineFromMessages(messages) {
|
|
2
|
+
const timeline = [];
|
|
3
|
+
let counter = 0;
|
|
4
|
+
for (const message of messages) {
|
|
5
|
+
if (message.role === 'user') {
|
|
6
|
+
timeline.push({
|
|
7
|
+
id: `item_${counter++}`,
|
|
8
|
+
type: 'user',
|
|
9
|
+
content: message.content
|
|
10
|
+
});
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
if (message.role === 'assistant') {
|
|
14
|
+
const previous = timeline[timeline.length - 1];
|
|
15
|
+
const target = previous?.type === 'assistant'
|
|
16
|
+
? previous
|
|
17
|
+
: (() => {
|
|
18
|
+
const item = {
|
|
19
|
+
id: `item_${counter++}`,
|
|
20
|
+
type: 'assistant',
|
|
21
|
+
content: '',
|
|
22
|
+
toolViews: []
|
|
23
|
+
};
|
|
24
|
+
timeline.push(item);
|
|
25
|
+
return item;
|
|
26
|
+
})();
|
|
27
|
+
if (message.content) {
|
|
28
|
+
const hasTools = (message.toolCalls?.length ?? 0) > 0;
|
|
29
|
+
if (hasTools) {
|
|
30
|
+
target.preamble = target.preamble
|
|
31
|
+
? `${target.preamble}\n\n${message.content}`
|
|
32
|
+
: message.content;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
target.content = target.content ? `${target.content}\n\n${message.content}` : message.content;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (message.reasoning) {
|
|
39
|
+
target.reasoning = target.reasoning ? `${target.reasoning}\n\n${message.reasoning}` : message.reasoning;
|
|
40
|
+
}
|
|
41
|
+
for (const call of message.toolCalls ?? []) {
|
|
42
|
+
target.toolViews ??= [];
|
|
43
|
+
if (!target.toolViews.some((view) => view.call.id === call.id)) {
|
|
44
|
+
target.toolViews.push({ call });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const previous = timeline[timeline.length - 1];
|
|
50
|
+
if (previous?.type === 'assistant') {
|
|
51
|
+
const view = previous.toolViews?.find((entry) => entry.call.id === message.toolCallId);
|
|
52
|
+
if (view) {
|
|
53
|
+
view.result = {
|
|
54
|
+
output: message.content,
|
|
55
|
+
isError: message.isError,
|
|
56
|
+
display: { summary: message.isError ? 'error' : undefined }
|
|
57
|
+
};
|
|
58
|
+
view.pending = false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return timeline;
|
|
63
|
+
}
|
|
64
|
+
export function appendAgentTimeline(timeline, newMessages, startedAt, modelName) {
|
|
65
|
+
const grouped = timelineFromMessages(newMessages).filter((item) => item.type !== 'user');
|
|
66
|
+
if (grouped.length === 0)
|
|
67
|
+
return timeline;
|
|
68
|
+
const assistant = grouped[0];
|
|
69
|
+
assistant.durationMs = Date.now() - startedAt;
|
|
70
|
+
assistant.modelName = modelName;
|
|
71
|
+
return [...timeline, assistant];
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"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"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,77 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "surfcode",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "SurfCode — a beautiful, provider-agnostic AI coding agent for your terminal.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"surf": "dist/cli.js",
|
|
8
|
+
"surfcode": "dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"assets",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=22.0.0"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"dev": "tsx src/cli.tsx",
|
|
21
|
+
"build": "tsc -p tsconfig.build.json && node scripts/copy-assets.mjs",
|
|
22
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
23
|
+
"test": "tsx --test test/*.test.ts",
|
|
24
|
+
"models:update": "node scripts/update-models.mjs",
|
|
25
|
+
"logo:render": "bash scripts/render-logo.sh",
|
|
26
|
+
"prepare": "npm run build",
|
|
27
|
+
"prepublishOnly": "npm run typecheck && npm test && npm run build"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"ai",
|
|
31
|
+
"cli",
|
|
32
|
+
"coding-agent",
|
|
33
|
+
"terminal",
|
|
34
|
+
"tui",
|
|
35
|
+
"llm",
|
|
36
|
+
"openai",
|
|
37
|
+
"anthropic",
|
|
38
|
+
"gemini",
|
|
39
|
+
"provider-agnostic"
|
|
40
|
+
],
|
|
41
|
+
"author": "Geetank",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"homepage": "https://github.com/Official-SurfCode/surfcode#readme",
|
|
44
|
+
"bugs": {
|
|
45
|
+
"url": "https://github.com/Official-SurfCode/surfcode/issues"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://github.com/Official-SurfCode/surfcode.git"
|
|
50
|
+
},
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"chalk": "^6.0.1",
|
|
53
|
+
"cli-highlight": "^2.1.11",
|
|
54
|
+
"cli-truncate": "^6.1.1",
|
|
55
|
+
"commander": "^15.0.0",
|
|
56
|
+
"diff": "^9.0.0",
|
|
57
|
+
"env-paths": "^4.0.0",
|
|
58
|
+
"html-to-text": "^10.0.1",
|
|
59
|
+
"ignore": "^7.0.13",
|
|
60
|
+
"ink": "^8.0.0",
|
|
61
|
+
"jsonc-parser": "^3.3.1",
|
|
62
|
+
"marked": "^18.1.1",
|
|
63
|
+
"react": "^19.3.1",
|
|
64
|
+
"string-width": "^8.3.0",
|
|
65
|
+
"strip-ansi": "^7.2.0",
|
|
66
|
+
"tinyglobby": "^0.2.17",
|
|
67
|
+
"wrap-ansi": "^10.0.2",
|
|
68
|
+
"zod": "^4.6.7"
|
|
69
|
+
},
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"@types/node": "^24.19.2",
|
|
72
|
+
"@types/react": "^19.3.0",
|
|
73
|
+
"ink-testing-library": "^4.0.0",
|
|
74
|
+
"tsx": "^4.23.15",
|
|
75
|
+
"typescript": "^5.9.3"
|
|
76
|
+
}
|
|
77
|
+
}
|