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.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +281 -0
  3. package/bin/cli.js +2385 -0
  4. package/lib/cli-sessions.js +270 -0
  5. package/lib/config.js +237 -0
  6. package/lib/daemon.js +489 -0
  7. package/lib/ipc.js +112 -0
  8. package/lib/notes.js +120 -0
  9. package/lib/pages.js +664 -0
  10. package/lib/project.js +1433 -0
  11. package/lib/public/app.js +2795 -0
  12. package/lib/public/apple-touch-icon-dark.png +0 -0
  13. package/lib/public/apple-touch-icon.png +0 -0
  14. package/lib/public/css/base.css +264 -0
  15. package/lib/public/css/diff.css +128 -0
  16. package/lib/public/css/filebrowser.css +1114 -0
  17. package/lib/public/css/highlight.css +144 -0
  18. package/lib/public/css/icon-strip.css +296 -0
  19. package/lib/public/css/input.css +573 -0
  20. package/lib/public/css/menus.css +856 -0
  21. package/lib/public/css/messages.css +1445 -0
  22. package/lib/public/css/mobile-nav.css +354 -0
  23. package/lib/public/css/overlays.css +697 -0
  24. package/lib/public/css/rewind.css +505 -0
  25. package/lib/public/css/server-settings.css +761 -0
  26. package/lib/public/css/sidebar.css +936 -0
  27. package/lib/public/css/sticky-notes.css +358 -0
  28. package/lib/public/css/title-bar.css +314 -0
  29. package/lib/public/favicon-dark.svg +1 -0
  30. package/lib/public/favicon.svg +1 -0
  31. package/lib/public/icon-192-dark.png +0 -0
  32. package/lib/public/icon-192.png +0 -0
  33. package/lib/public/icon-512-dark.png +0 -0
  34. package/lib/public/icon-512.png +0 -0
  35. package/lib/public/icon-mono.svg +1 -0
  36. package/lib/public/index.html +762 -0
  37. package/lib/public/manifest.json +27 -0
  38. package/lib/public/modules/diff.js +398 -0
  39. package/lib/public/modules/events.js +21 -0
  40. package/lib/public/modules/filebrowser.js +1411 -0
  41. package/lib/public/modules/fileicons.js +172 -0
  42. package/lib/public/modules/icons.js +54 -0
  43. package/lib/public/modules/input.js +584 -0
  44. package/lib/public/modules/markdown.js +356 -0
  45. package/lib/public/modules/notifications.js +649 -0
  46. package/lib/public/modules/qrcode.js +70 -0
  47. package/lib/public/modules/rewind.js +345 -0
  48. package/lib/public/modules/server-settings.js +510 -0
  49. package/lib/public/modules/sidebar.js +1083 -0
  50. package/lib/public/modules/state.js +3 -0
  51. package/lib/public/modules/sticky-notes.js +688 -0
  52. package/lib/public/modules/terminal.js +697 -0
  53. package/lib/public/modules/theme.js +738 -0
  54. package/lib/public/modules/tools.js +1608 -0
  55. package/lib/public/modules/utils.js +56 -0
  56. package/lib/public/style.css +15 -0
  57. package/lib/public/sw.js +75 -0
  58. package/lib/push.js +124 -0
  59. package/lib/sdk-bridge.js +989 -0
  60. package/lib/server.js +582 -0
  61. package/lib/sessions.js +424 -0
  62. package/lib/terminal-manager.js +187 -0
  63. package/lib/terminal.js +24 -0
  64. package/lib/themes/ayu-light.json +9 -0
  65. package/lib/themes/catppuccin-latte.json +9 -0
  66. package/lib/themes/catppuccin-mocha.json +9 -0
  67. package/lib/themes/clay-light.json +10 -0
  68. package/lib/themes/clay.json +10 -0
  69. package/lib/themes/dracula.json +9 -0
  70. package/lib/themes/everforest-light.json +9 -0
  71. package/lib/themes/everforest.json +9 -0
  72. package/lib/themes/github-light.json +9 -0
  73. package/lib/themes/gruvbox-dark.json +9 -0
  74. package/lib/themes/gruvbox-light.json +9 -0
  75. package/lib/themes/monokai.json +9 -0
  76. package/lib/themes/nord-light.json +9 -0
  77. package/lib/themes/nord.json +9 -0
  78. package/lib/themes/one-dark.json +9 -0
  79. package/lib/themes/one-light.json +9 -0
  80. package/lib/themes/rose-pine-dawn.json +9 -0
  81. package/lib/themes/rose-pine.json +9 -0
  82. package/lib/themes/solarized-dark.json +9 -0
  83. package/lib/themes/solarized-light.json +9 -0
  84. package/lib/themes/tokyo-night-light.json +9 -0
  85. package/lib/themes/tokyo-night.json +9 -0
  86. package/lib/updater.js +97 -0
  87. 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
+ }