@nogataka/smart-edit 0.0.16 → 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/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Smart Edit
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Smart Edit は、Python 製のエージェント基盤「Serena」(<https://github.com/oraios/serena>) を TypeScript / Node.js 上で動作するよう全面移植したプロジェクトです。MCP (Model Context Protocol) サーバーとして動作し、SolidLSP ベースの言語サーバー管理や Serena 固有のツール群を TypeScript で再構築しています。移植に際しては Python 版と同じディレクトリ構成・ファイル名(拡張子のみ `.ts` / `.tsx`)を維持しつつ、`@modelcontextprotocol/sdk`、`zod` など Node エコシステムに合わせた依存関係やエラーハンドリングを採用しています。
|
|
4
4
|
|
|
5
5
|
## 主な構成
|
|
6
6
|
|
|
@@ -252,7 +252,7 @@ class Dashboard {
|
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
updateTitle(activeProject) {
|
|
255
|
-
document.title = activeProject ? `${activeProject} –
|
|
255
|
+
document.title = activeProject ? `${activeProject} – Smart Edit Dashboard` : 'Smart Edit Dashboard';
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
loadLogs() {
|
|
@@ -641,11 +641,12 @@ class Dashboard {
|
|
|
641
641
|
}
|
|
642
642
|
|
|
643
643
|
generateColors(count) {
|
|
644
|
-
const
|
|
645
|
-
'#
|
|
646
|
-
'#
|
|
644
|
+
const palette = [
|
|
645
|
+
'#101010', '#1f1f1f', '#2e2e2e', '#3d3d3d', '#4c4c4c',
|
|
646
|
+
'#5b5b5b', '#6a6a6a', '#797979', '#888888', '#979797',
|
|
647
|
+
'#a6a6a6', '#b5b5b5', '#c4c4c4', '#d3d3d3', '#e2e2e2'
|
|
647
648
|
];
|
|
648
|
-
return Array.from({length: count}, (_, i) =>
|
|
649
|
+
return Array.from({ length: count }, (_, i) => palette[i % palette.length]);
|
|
649
650
|
}
|
|
650
651
|
|
|
651
652
|
updateSummaryTable(totalCalls, totalInputTokens, totalOutputTokens) {
|
|
@@ -806,7 +807,7 @@ class Dashboard {
|
|
|
806
807
|
}
|
|
807
808
|
|
|
808
809
|
// ask for confirmation using a dialog
|
|
809
|
-
if (confirm("This will fully terminate the
|
|
810
|
+
if (confirm("This will fully terminate the Smart Edit server.")) {
|
|
810
811
|
_shutdown();
|
|
811
812
|
} else {
|
|
812
813
|
console.log("Shutdown cancelled");
|
|
@@ -12,48 +12,50 @@
|
|
|
12
12
|
<style>
|
|
13
13
|
:root {
|
|
14
14
|
/* Light theme variables */
|
|
15
|
-
--bg-primary: #
|
|
15
|
+
--bg-primary: #f2f2f2;
|
|
16
16
|
--bg-secondary: #ffffff;
|
|
17
|
-
--text-primary: #
|
|
18
|
-
--text-secondary: #
|
|
19
|
-
--text-muted: #
|
|
20
|
-
--border-color: #
|
|
21
|
-
--btn-primary: #
|
|
22
|
-
--btn-hover: #
|
|
23
|
-
--btn-disabled: #
|
|
24
|
-
--
|
|
25
|
-
--
|
|
26
|
-
--tool-highlight
|
|
27
|
-
--
|
|
28
|
-
--log-
|
|
29
|
-
--log-
|
|
30
|
-
--log-
|
|
31
|
-
--
|
|
17
|
+
--text-primary: #1a1a1a;
|
|
18
|
+
--text-secondary: #3d3d3d;
|
|
19
|
+
--text-muted: #777;
|
|
20
|
+
--border-color: #cfcfcf;
|
|
21
|
+
--btn-primary: #2b2b2b;
|
|
22
|
+
--btn-hover: #1e1e1e;
|
|
23
|
+
--btn-disabled: #9c9c9c;
|
|
24
|
+
--btn-text: #f5f5f5;
|
|
25
|
+
--shadow: 0 2px 4px rgba(0, 0, 0, 0.12);
|
|
26
|
+
--tool-highlight: #e5e5e5;
|
|
27
|
+
--tool-highlight-text: #1a1a1a;
|
|
28
|
+
--log-debug: #888;
|
|
29
|
+
--log-info: #1a1a1a;
|
|
30
|
+
--log-warning: #454545;
|
|
31
|
+
--log-error: #111111;
|
|
32
|
+
--stats-header: #ebebeb;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
[data-theme="dark"] {
|
|
35
36
|
/* Dark theme variables */
|
|
36
|
-
--bg-primary: #
|
|
37
|
-
--bg-secondary: #
|
|
38
|
-
--text-primary: #
|
|
39
|
-
--text-secondary: #
|
|
40
|
-
--text-muted: #
|
|
41
|
-
--border-color: #
|
|
42
|
-
--btn-primary: #
|
|
43
|
-
--btn-hover: #
|
|
44
|
-
--btn-disabled: #
|
|
45
|
-
--
|
|
46
|
-
--
|
|
47
|
-
--tool-highlight
|
|
48
|
-
--
|
|
49
|
-
--log-
|
|
50
|
-
--log-
|
|
51
|
-
--log-
|
|
52
|
-
--
|
|
37
|
+
--bg-primary: #121212;
|
|
38
|
+
--bg-secondary: #1e1e1e;
|
|
39
|
+
--text-primary: #f1f1f1;
|
|
40
|
+
--text-secondary: #d0d0d0;
|
|
41
|
+
--text-muted: #9a9a9a;
|
|
42
|
+
--border-color: #2c2c2c;
|
|
43
|
+
--btn-primary: #ededed;
|
|
44
|
+
--btn-hover: #d6d6d6;
|
|
45
|
+
--btn-disabled: #4a4a4a;
|
|
46
|
+
--btn-text: #111111;
|
|
47
|
+
--shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
|
|
48
|
+
--tool-highlight: #2a2a2a;
|
|
49
|
+
--tool-highlight-text: #f1f1f1;
|
|
50
|
+
--log-debug: #a0a0a0;
|
|
51
|
+
--log-info: #f1f1f1;
|
|
52
|
+
--log-warning: #c7c7c7;
|
|
53
|
+
--log-error: #ffffff;
|
|
54
|
+
--stats-header: #262626;
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
body {
|
|
56
|
-
font-family: '
|
|
58
|
+
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, Ubuntu, 'Cantarell', 'Noto Sans', Helvetica, Arial, 'Apple Color Emoji', 'Segoe UI Emoji';
|
|
57
59
|
margin: 0;
|
|
58
60
|
padding: 20px;
|
|
59
61
|
background-color: var(--bg-primary);
|
|
@@ -98,7 +100,7 @@
|
|
|
98
100
|
|
|
99
101
|
.btn {
|
|
100
102
|
background-color: var(--btn-primary);
|
|
101
|
-
color:
|
|
103
|
+
color: var(--btn-text);
|
|
102
104
|
border: none;
|
|
103
105
|
padding: 8px 16px;
|
|
104
106
|
border-radius: 4px;
|
|
@@ -113,6 +115,7 @@
|
|
|
113
115
|
|
|
114
116
|
.btn:disabled {
|
|
115
117
|
background-color: var(--btn-disabled);
|
|
118
|
+
color: var(--text-muted);
|
|
116
119
|
cursor: not-allowed;
|
|
117
120
|
}
|
|
118
121
|
|
|
@@ -146,10 +149,12 @@
|
|
|
146
149
|
|
|
147
150
|
.log-warning {
|
|
148
151
|
color: var(--log-warning);
|
|
152
|
+
font-weight: 600;
|
|
149
153
|
}
|
|
150
154
|
|
|
151
155
|
.log-error {
|
|
152
156
|
color: var(--log-error);
|
|
157
|
+
font-weight: 700;
|
|
153
158
|
}
|
|
154
159
|
|
|
155
160
|
.log-default {
|
|
@@ -304,4 +309,4 @@
|
|
|
304
309
|
</script>
|
|
305
310
|
</body>
|
|
306
311
|
|
|
307
|
-
</html>
|
|
312
|
+
</html>
|
package/package.json
CHANGED