clay-server 2.5.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 +281 -0
- package/bin/cli.js +2385 -0
- package/lib/cli-sessions.js +270 -0
- package/lib/config.js +237 -0
- package/lib/daemon.js +489 -0
- package/lib/ipc.js +112 -0
- package/lib/notes.js +120 -0
- package/lib/pages.js +664 -0
- package/lib/project.js +1433 -0
- package/lib/public/app.js +2795 -0
- package/lib/public/apple-touch-icon-dark.png +0 -0
- package/lib/public/apple-touch-icon.png +0 -0
- package/lib/public/css/base.css +264 -0
- package/lib/public/css/diff.css +128 -0
- package/lib/public/css/filebrowser.css +1114 -0
- package/lib/public/css/highlight.css +144 -0
- package/lib/public/css/icon-strip.css +296 -0
- package/lib/public/css/input.css +573 -0
- package/lib/public/css/menus.css +856 -0
- package/lib/public/css/messages.css +1445 -0
- package/lib/public/css/mobile-nav.css +354 -0
- package/lib/public/css/overlays.css +697 -0
- package/lib/public/css/rewind.css +505 -0
- package/lib/public/css/server-settings.css +761 -0
- package/lib/public/css/sidebar.css +936 -0
- package/lib/public/css/sticky-notes.css +358 -0
- package/lib/public/css/title-bar.css +314 -0
- package/lib/public/favicon-dark.svg +1 -0
- package/lib/public/favicon.svg +1 -0
- package/lib/public/icon-192-dark.png +0 -0
- package/lib/public/icon-192.png +0 -0
- package/lib/public/icon-512-dark.png +0 -0
- package/lib/public/icon-512.png +0 -0
- package/lib/public/icon-mono.svg +1 -0
- package/lib/public/index.html +762 -0
- package/lib/public/manifest.json +27 -0
- package/lib/public/modules/diff.js +398 -0
- package/lib/public/modules/events.js +21 -0
- package/lib/public/modules/filebrowser.js +1411 -0
- package/lib/public/modules/fileicons.js +172 -0
- package/lib/public/modules/icons.js +54 -0
- package/lib/public/modules/input.js +584 -0
- package/lib/public/modules/markdown.js +356 -0
- package/lib/public/modules/notifications.js +649 -0
- package/lib/public/modules/qrcode.js +70 -0
- package/lib/public/modules/rewind.js +345 -0
- package/lib/public/modules/server-settings.js +510 -0
- package/lib/public/modules/sidebar.js +1083 -0
- package/lib/public/modules/state.js +3 -0
- package/lib/public/modules/sticky-notes.js +688 -0
- package/lib/public/modules/terminal.js +697 -0
- package/lib/public/modules/theme.js +738 -0
- package/lib/public/modules/tools.js +1608 -0
- package/lib/public/modules/utils.js +56 -0
- package/lib/public/style.css +15 -0
- package/lib/public/sw.js +75 -0
- package/lib/push.js +124 -0
- package/lib/sdk-bridge.js +989 -0
- package/lib/server.js +582 -0
- package/lib/sessions.js +424 -0
- package/lib/terminal-manager.js +187 -0
- package/lib/terminal.js +24 -0
- package/lib/themes/ayu-light.json +9 -0
- package/lib/themes/catppuccin-latte.json +9 -0
- package/lib/themes/catppuccin-mocha.json +9 -0
- package/lib/themes/clay-light.json +10 -0
- package/lib/themes/clay.json +10 -0
- package/lib/themes/dracula.json +9 -0
- package/lib/themes/everforest-light.json +9 -0
- package/lib/themes/everforest.json +9 -0
- package/lib/themes/github-light.json +9 -0
- package/lib/themes/gruvbox-dark.json +9 -0
- package/lib/themes/gruvbox-light.json +9 -0
- package/lib/themes/monokai.json +9 -0
- package/lib/themes/nord-light.json +9 -0
- package/lib/themes/nord.json +9 -0
- package/lib/themes/one-dark.json +9 -0
- package/lib/themes/one-light.json +9 -0
- package/lib/themes/rose-pine-dawn.json +9 -0
- package/lib/themes/rose-pine.json +9 -0
- package/lib/themes/solarized-dark.json +9 -0
- package/lib/themes/solarized-light.json +9 -0
- package/lib/themes/tokyo-night-light.json +9 -0
- package/lib/themes/tokyo-night.json +9 -0
- package/lib/updater.js +97 -0
- package/package.json +47 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// Material Icon Theme file & folder icons
|
|
2
|
+
// Files: material-file-icons via esm.sh (dynamic import, ~475KB lazy-loaded)
|
|
3
|
+
// Folders: material-icon-theme SVGs via jsdelivr CDN (fetched & cached)
|
|
4
|
+
|
|
5
|
+
var materialIcons = null;
|
|
6
|
+
var folderSvgCache = {};
|
|
7
|
+
var loadPromise = null;
|
|
8
|
+
|
|
9
|
+
var FOLDER_CDN = "https://cdn.jsdelivr.net/npm/material-icon-theme@5/icons/";
|
|
10
|
+
|
|
11
|
+
var FOLDER_MAP = {
|
|
12
|
+
"src": "folder-src",
|
|
13
|
+
"lib": "folder-lib",
|
|
14
|
+
"dist": "folder-dist",
|
|
15
|
+
"build": "folder-dist",
|
|
16
|
+
"out": "folder-dist",
|
|
17
|
+
"output": "folder-dist",
|
|
18
|
+
"node_modules": "folder-node",
|
|
19
|
+
"test": "folder-test",
|
|
20
|
+
"tests": "folder-test",
|
|
21
|
+
"__tests__": "folder-test",
|
|
22
|
+
"spec": "folder-test",
|
|
23
|
+
"docs": "folder-docs",
|
|
24
|
+
"doc": "folder-docs",
|
|
25
|
+
"config": "folder-config",
|
|
26
|
+
".config": "folder-config",
|
|
27
|
+
"public": "folder-public",
|
|
28
|
+
"static": "folder-public",
|
|
29
|
+
"assets": "folder-images",
|
|
30
|
+
"images": "folder-images",
|
|
31
|
+
"img": "folder-images",
|
|
32
|
+
"icons": "folder-images",
|
|
33
|
+
"media": "folder-images",
|
|
34
|
+
"components": "folder-components",
|
|
35
|
+
"hooks": "folder-hook",
|
|
36
|
+
"utils": "folder-utils",
|
|
37
|
+
"util": "folder-utils",
|
|
38
|
+
"helpers": "folder-helper",
|
|
39
|
+
"helper": "folder-helper",
|
|
40
|
+
"api": "folder-api",
|
|
41
|
+
"routes": "folder-routes",
|
|
42
|
+
"router": "folder-routes",
|
|
43
|
+
"pages": "folder-layout",
|
|
44
|
+
"views": "folder-views",
|
|
45
|
+
"styles": "folder-css",
|
|
46
|
+
"css": "folder-css",
|
|
47
|
+
"scss": "folder-sass",
|
|
48
|
+
"sass": "folder-sass",
|
|
49
|
+
"scripts": "folder-scripts",
|
|
50
|
+
"bin": "folder-scripts",
|
|
51
|
+
".git": "folder-git",
|
|
52
|
+
".github": "folder-github",
|
|
53
|
+
".vscode": "folder-vscode",
|
|
54
|
+
"docker": "folder-docker",
|
|
55
|
+
".docker": "folder-docker",
|
|
56
|
+
"database": "folder-database",
|
|
57
|
+
"db": "folder-database",
|
|
58
|
+
"server": "folder-server",
|
|
59
|
+
"client": "folder-client",
|
|
60
|
+
"types": "folder-typescript",
|
|
61
|
+
"typings": "folder-typescript",
|
|
62
|
+
"@types": "folder-typescript",
|
|
63
|
+
"modules": "folder-node",
|
|
64
|
+
"packages": "folder-packages",
|
|
65
|
+
"vendor": "folder-lib",
|
|
66
|
+
"env": "folder-environment",
|
|
67
|
+
".env": "folder-environment",
|
|
68
|
+
"mock": "folder-mock",
|
|
69
|
+
"mocks": "folder-mock",
|
|
70
|
+
"__mocks__": "folder-mock",
|
|
71
|
+
"middleware": "folder-middleware",
|
|
72
|
+
"i18n": "folder-i18n",
|
|
73
|
+
"locale": "folder-i18n",
|
|
74
|
+
"locales": "folder-i18n",
|
|
75
|
+
"fonts": "folder-font",
|
|
76
|
+
"font": "folder-font",
|
|
77
|
+
"logs": "folder-log",
|
|
78
|
+
"log": "folder-log",
|
|
79
|
+
"tmp": "folder-temp",
|
|
80
|
+
"temp": "folder-temp",
|
|
81
|
+
"templates": "folder-template",
|
|
82
|
+
"template": "folder-template",
|
|
83
|
+
"ref": "folder-resource",
|
|
84
|
+
"resources": "folder-resource",
|
|
85
|
+
"res": "folder-resource",
|
|
86
|
+
"themes": "folder-theme",
|
|
87
|
+
"theme": "folder-theme",
|
|
88
|
+
"plugins": "folder-plugin",
|
|
89
|
+
"plugin": "folder-plugin",
|
|
90
|
+
"context": "folder-context",
|
|
91
|
+
"contexts": "folder-context",
|
|
92
|
+
"redux": "folder-redux-store",
|
|
93
|
+
"store": "folder-redux-store",
|
|
94
|
+
"stores": "folder-redux-store",
|
|
95
|
+
"controllers": "folder-controller",
|
|
96
|
+
"controller": "folder-controller",
|
|
97
|
+
"models": "folder-database",
|
|
98
|
+
"model": "folder-database",
|
|
99
|
+
"services": "folder-server",
|
|
100
|
+
"service": "folder-server",
|
|
101
|
+
".claude": "folder-config"
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// --- Public API ---
|
|
105
|
+
|
|
106
|
+
export function initFileIcons() {
|
|
107
|
+
if (loadPromise) return loadPromise;
|
|
108
|
+
loadPromise = import("https://esm.sh/material-file-icons@2").then(function (mod) {
|
|
109
|
+
materialIcons = mod;
|
|
110
|
+
}).catch(function (err) {
|
|
111
|
+
console.warn("[fileicons] Failed to load material-file-icons:", err);
|
|
112
|
+
});
|
|
113
|
+
// Pre-fetch default folder icons
|
|
114
|
+
fetchFolderSvg("folder.svg");
|
|
115
|
+
fetchFolderSvg("folder-open.svg");
|
|
116
|
+
return loadPromise;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function getFileIconSvg(filename) {
|
|
120
|
+
if (!materialIcons) return "";
|
|
121
|
+
try {
|
|
122
|
+
var icon = materialIcons.getIcon(filename);
|
|
123
|
+
return icon && icon.svg ? icon.svg : "";
|
|
124
|
+
} catch (e) {
|
|
125
|
+
return "";
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export function getFolderIconSvg(folderName, isOpen, callback) {
|
|
130
|
+
var lower = folderName.toLowerCase();
|
|
131
|
+
var base = FOLDER_MAP[lower] || "folder";
|
|
132
|
+
var svgName = isOpen ? (base + "-open.svg") : (base + ".svg");
|
|
133
|
+
|
|
134
|
+
// Cache hit
|
|
135
|
+
if (folderSvgCache[svgName]) {
|
|
136
|
+
callback(folderSvgCache[svgName]);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
fetchFolderSvg(svgName).then(function (svg) {
|
|
141
|
+
if (svg) {
|
|
142
|
+
callback(svg);
|
|
143
|
+
} else {
|
|
144
|
+
// Fallback to default folder icon
|
|
145
|
+
var fallback = isOpen ? "folder-open.svg" : "folder.svg";
|
|
146
|
+
if (folderSvgCache[fallback]) {
|
|
147
|
+
callback(folderSvgCache[fallback]);
|
|
148
|
+
} else {
|
|
149
|
+
fetchFolderSvg(fallback).then(function (fb) {
|
|
150
|
+
callback(fb || "");
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// --- Internal ---
|
|
158
|
+
|
|
159
|
+
function fetchFolderSvg(svgName) {
|
|
160
|
+
if (folderSvgCache[svgName]) {
|
|
161
|
+
return Promise.resolve(folderSvgCache[svgName]);
|
|
162
|
+
}
|
|
163
|
+
return fetch(FOLDER_CDN + svgName).then(function (res) {
|
|
164
|
+
if (!res.ok) return null;
|
|
165
|
+
return res.text();
|
|
166
|
+
}).then(function (text) {
|
|
167
|
+
if (text) folderSvgCache[svgName] = text;
|
|
168
|
+
return text;
|
|
169
|
+
}).catch(function () {
|
|
170
|
+
return null;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
var _iconTimer = null;
|
|
2
|
+
|
|
3
|
+
export function refreshIcons() {
|
|
4
|
+
if (_iconTimer) return;
|
|
5
|
+
_iconTimer = requestAnimationFrame(function () {
|
|
6
|
+
_iconTimer = null;
|
|
7
|
+
lucide.createIcons();
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function iconHtml(name, wrapperClass) {
|
|
12
|
+
if (wrapperClass) {
|
|
13
|
+
return '<span class="' + wrapperClass + '"><i data-lucide="' + name + '"></i></span>';
|
|
14
|
+
}
|
|
15
|
+
return '<i data-lucide="' + name + '"></i>';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export var thinkingVerbs = [
|
|
19
|
+
"Accomplishing", "Actioning", "Actualizing", "Architecting", "Baking", "Beaming",
|
|
20
|
+
"Beboppin'", "Befuddling", "Billowing", "Blanching", "Bloviating", "Boogieing",
|
|
21
|
+
"Boondoggling", "Booping", "Bootstrapping", "Brewing", "Burrowing", "Calculating",
|
|
22
|
+
"Canoodling", "Caramelizing", "Cascading", "Catapulting", "Cerebrating", "Channeling",
|
|
23
|
+
"Channelling", "Choreographing", "Churning", "Clauding", "Coalescing", "Cogitating",
|
|
24
|
+
"Combobulating", "Composing", "Computing", "Concocting", "Considering", "Contemplating",
|
|
25
|
+
"Cooking", "Crafting", "Creating", "Crunching", "Crystallizing", "Cultivating",
|
|
26
|
+
"Deciphering", "Deliberating", "Determining", "Dilly-dallying", "Discombobulating",
|
|
27
|
+
"Doing", "Doodling", "Drizzling", "Ebbing", "Effecting", "Elucidating", "Embellishing",
|
|
28
|
+
"Enchanting", "Envisioning", "Evaporating", "Fermenting", "Fiddle-faddling", "Finagling",
|
|
29
|
+
"Flambing", "Flibbertigibbeting", "Flowing", "Flummoxing", "Fluttering", "Forging",
|
|
30
|
+
"Forming", "Frolicking", "Frosting", "Gallivanting", "Galloping", "Garnishing",
|
|
31
|
+
"Generating", "Germinating", "Gitifying", "Grooving", "Gusting", "Harmonizing",
|
|
32
|
+
"Hashing", "Hatching", "Herding", "Honking", "Hullaballooing", "Hyperspacing",
|
|
33
|
+
"Ideating", "Imagining", "Improvising", "Incubating", "Inferring", "Infusing",
|
|
34
|
+
"Ionizing", "Jitterbugging", "Julienning", "Kneading", "Leavening", "Levitating",
|
|
35
|
+
"Lollygagging", "Manifesting", "Marinating", "Meandering", "Metamorphosing", "Misting",
|
|
36
|
+
"Moonwalking", "Moseying", "Mulling", "Mustering", "Musing", "Nebulizing", "Nesting",
|
|
37
|
+
"Newspapering", "Noodling", "Nucleating", "Orbiting", "Orchestrating", "Osmosing",
|
|
38
|
+
"Perambulating", "Percolating", "Perusing", "Philosophising", "Photosynthesizing",
|
|
39
|
+
"Pollinating", "Pondering", "Pontificating", "Pouncing", "Precipitating",
|
|
40
|
+
"Prestidigitating", "Processing", "Proofing", "Propagating", "Puttering", "Puzzling",
|
|
41
|
+
"Quantumizing", "Razzle-dazzling", "Razzmatazzing", "Recombobulating", "Reticulating",
|
|
42
|
+
"Roosting", "Ruminating", "Sauting", "Scampering", "Schlepping", "Scurrying", "Seasoning",
|
|
43
|
+
"Shenaniganing", "Shimmying", "Simmering", "Skedaddling", "Sketching", "Slithering",
|
|
44
|
+
"Smooshing", "Sock-hopping", "Spelunking", "Spinning", "Sprouting", "Stewing",
|
|
45
|
+
"Sublimating", "Swirling", "Swooping", "Symbioting", "Synthesizing", "Tempering",
|
|
46
|
+
"Thinking", "Thundering", "Tinkering", "Tomfoolering", "Topsy-turvying", "Transfiguring",
|
|
47
|
+
"Transmuting", "Twisting", "Undulating", "Unfurling", "Unravelling", "Vibing", "Waddling",
|
|
48
|
+
"Wandering", "Warping", "Whatchamacalliting", "Whirlpooling", "Whirring", "Whisking",
|
|
49
|
+
"Wibbling", "Working", "Wrangling", "Zesting", "Zigzagging"
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
export function randomThinkingVerb() {
|
|
53
|
+
return thinkingVerbs[Math.floor(Math.random() * thinkingVerbs.length)];
|
|
54
|
+
}
|