claudeck 1.0.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 (157) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +233 -0
  3. package/cli.js +2 -0
  4. package/config/agent-chains.json +16 -0
  5. package/config/agent-dags.json +16 -0
  6. package/config/agents.json +46 -0
  7. package/config/bot-prompt.json +3 -0
  8. package/config/folders.json +66 -0
  9. package/config/prompts.json +92 -0
  10. package/config/repos.json +86 -0
  11. package/config/telegram-config.json +17 -0
  12. package/config/workflows.json +90 -0
  13. package/db.js +1198 -0
  14. package/package.json +55 -0
  15. package/plugins/claude-editor/client.css +171 -0
  16. package/plugins/claude-editor/client.js +183 -0
  17. package/plugins/event-stream/client.css +207 -0
  18. package/plugins/event-stream/client.js +271 -0
  19. package/plugins/linear/client.css +345 -0
  20. package/plugins/linear/client.js +380 -0
  21. package/plugins/linear/config.json +5 -0
  22. package/plugins/linear/server.js +312 -0
  23. package/plugins/repos/client.css +549 -0
  24. package/plugins/repos/client.js +663 -0
  25. package/plugins/repos/server.js +232 -0
  26. package/plugins/sudoku/client.css +196 -0
  27. package/plugins/sudoku/client.js +329 -0
  28. package/plugins/tasks/client.css +414 -0
  29. package/plugins/tasks/client.js +394 -0
  30. package/plugins/tasks/server.js +116 -0
  31. package/plugins/tic-tac-toe/client.css +167 -0
  32. package/plugins/tic-tac-toe/client.js +241 -0
  33. package/public/css/core/components.css +232 -0
  34. package/public/css/core/layout.css +330 -0
  35. package/public/css/core/print.css +18 -0
  36. package/public/css/core/reset.css +36 -0
  37. package/public/css/core/responsive.css +378 -0
  38. package/public/css/core/theme.css +116 -0
  39. package/public/css/core/variables.css +93 -0
  40. package/public/css/features/agent-monitor.css +297 -0
  41. package/public/css/features/agent-sidebar.css +525 -0
  42. package/public/css/features/agents.css +996 -0
  43. package/public/css/features/analytics.css +181 -0
  44. package/public/css/features/background-sessions.css +321 -0
  45. package/public/css/features/cost-dashboard.css +168 -0
  46. package/public/css/features/home.css +313 -0
  47. package/public/css/features/retro-terminal.css +88 -0
  48. package/public/css/features/telegram.css +127 -0
  49. package/public/css/features/tour.css +148 -0
  50. package/public/css/features/voice-input.css +60 -0
  51. package/public/css/features/welcome.css +241 -0
  52. package/public/css/panels/assistant-bot.css +442 -0
  53. package/public/css/panels/dev-docs.css +292 -0
  54. package/public/css/panels/file-explorer.css +322 -0
  55. package/public/css/panels/git-panel.css +221 -0
  56. package/public/css/panels/mcp-manager.css +199 -0
  57. package/public/css/panels/tips-feed.css +353 -0
  58. package/public/css/ui/commands.css +273 -0
  59. package/public/css/ui/context-gauge.css +76 -0
  60. package/public/css/ui/file-picker.css +69 -0
  61. package/public/css/ui/image-attachments.css +106 -0
  62. package/public/css/ui/messages.css +884 -0
  63. package/public/css/ui/modals.css +122 -0
  64. package/public/css/ui/parallel.css +217 -0
  65. package/public/css/ui/permissions.css +110 -0
  66. package/public/css/ui/right-panel.css +481 -0
  67. package/public/css/ui/sessions.css +689 -0
  68. package/public/css/ui/status-bar.css +425 -0
  69. package/public/css/ui/toolbox.css +206 -0
  70. package/public/data/tips.json +218 -0
  71. package/public/icons/favicon.png +0 -0
  72. package/public/icons/icon-192.png +0 -0
  73. package/public/icons/icon-512.png +0 -0
  74. package/public/icons/whaly.png +0 -0
  75. package/public/index.html +1140 -0
  76. package/public/js/core/api.js +591 -0
  77. package/public/js/core/constants.js +3 -0
  78. package/public/js/core/dom.js +270 -0
  79. package/public/js/core/events.js +10 -0
  80. package/public/js/core/plugin-loader.js +153 -0
  81. package/public/js/core/store.js +39 -0
  82. package/public/js/core/utils.js +25 -0
  83. package/public/js/core/ws.js +64 -0
  84. package/public/js/features/agent-monitor.js +222 -0
  85. package/public/js/features/agents.js +1209 -0
  86. package/public/js/features/analytics.js +397 -0
  87. package/public/js/features/attachments.js +251 -0
  88. package/public/js/features/background-sessions.js +475 -0
  89. package/public/js/features/chat.js +589 -0
  90. package/public/js/features/cost-dashboard.js +152 -0
  91. package/public/js/features/dag-editor.js +399 -0
  92. package/public/js/features/easter-egg.js +46 -0
  93. package/public/js/features/home.js +270 -0
  94. package/public/js/features/projects.js +372 -0
  95. package/public/js/features/prompts.js +228 -0
  96. package/public/js/features/sessions.js +332 -0
  97. package/public/js/features/telegram.js +131 -0
  98. package/public/js/features/tour.js +210 -0
  99. package/public/js/features/voice-input.js +185 -0
  100. package/public/js/features/welcome.js +43 -0
  101. package/public/js/features/workflows.js +277 -0
  102. package/public/js/main.js +51 -0
  103. package/public/js/panels/assistant-bot.js +445 -0
  104. package/public/js/panels/dev-docs.js +380 -0
  105. package/public/js/panels/file-explorer.js +486 -0
  106. package/public/js/panels/git-panel.js +285 -0
  107. package/public/js/panels/mcp-manager.js +311 -0
  108. package/public/js/panels/tips-feed.js +303 -0
  109. package/public/js/ui/commands.js +114 -0
  110. package/public/js/ui/context-gauge.js +100 -0
  111. package/public/js/ui/diff.js +124 -0
  112. package/public/js/ui/disabled-tools.js +36 -0
  113. package/public/js/ui/export.js +74 -0
  114. package/public/js/ui/formatting.js +206 -0
  115. package/public/js/ui/header-dropdowns.js +72 -0
  116. package/public/js/ui/input-meta.js +71 -0
  117. package/public/js/ui/max-turns.js +21 -0
  118. package/public/js/ui/messages.js +387 -0
  119. package/public/js/ui/model-selector.js +20 -0
  120. package/public/js/ui/notifications.js +232 -0
  121. package/public/js/ui/parallel.js +176 -0
  122. package/public/js/ui/permissions.js +168 -0
  123. package/public/js/ui/right-panel.js +173 -0
  124. package/public/js/ui/shortcuts.js +143 -0
  125. package/public/js/ui/sidebar-toggle.js +29 -0
  126. package/public/js/ui/status-bar.js +172 -0
  127. package/public/js/ui/tab-sdk.js +623 -0
  128. package/public/js/ui/theme.js +38 -0
  129. package/public/manifest.json +13 -0
  130. package/public/offline.html +190 -0
  131. package/public/style.css +42 -0
  132. package/public/sw.js +91 -0
  133. package/server/agent-loop.js +385 -0
  134. package/server/dag-executor.js +265 -0
  135. package/server/orchestrator.js +514 -0
  136. package/server/paths.js +61 -0
  137. package/server/plugin-mount.js +56 -0
  138. package/server/push-sender.js +31 -0
  139. package/server/routes/agents.js +294 -0
  140. package/server/routes/bot.js +45 -0
  141. package/server/routes/exec.js +35 -0
  142. package/server/routes/files.js +218 -0
  143. package/server/routes/mcp.js +82 -0
  144. package/server/routes/messages.js +36 -0
  145. package/server/routes/notifications.js +37 -0
  146. package/server/routes/projects.js +207 -0
  147. package/server/routes/prompts.js +53 -0
  148. package/server/routes/sessions.js +103 -0
  149. package/server/routes/stats.js +143 -0
  150. package/server/routes/telegram.js +71 -0
  151. package/server/routes/tips.js +135 -0
  152. package/server/routes/workflows.js +81 -0
  153. package/server/summarizer.js +55 -0
  154. package/server/telegram-poller.js +205 -0
  155. package/server/telegram-sender.js +304 -0
  156. package/server/ws-handler.js +926 -0
  157. package/server.js +179 -0
@@ -0,0 +1,549 @@
1
+ /* ── Repos Tab ──────────────────────────────────────── */
2
+
3
+ /* Toolbar */
4
+ .repos-toolbar {
5
+ padding: 8px;
6
+ border-bottom: 1px solid var(--border);
7
+ flex-shrink: 0;
8
+ display: flex;
9
+ gap: 6px;
10
+ align-items: center;
11
+ }
12
+
13
+ .repos-search-wrap {
14
+ flex: 1;
15
+ min-width: 0;
16
+ position: relative;
17
+ display: flex;
18
+ align-items: center;
19
+ }
20
+
21
+ .repos-search-wrap svg {
22
+ position: absolute;
23
+ left: 8px;
24
+ color: var(--text-dim);
25
+ pointer-events: none;
26
+ }
27
+
28
+ .repos-search {
29
+ width: 100%;
30
+ padding: 5px 8px 5px 26px;
31
+ background: var(--bg);
32
+ border: 1px solid var(--border);
33
+ border-radius: var(--radius);
34
+ color: var(--text);
35
+ font-size: 11px;
36
+ font-family: var(--font-mono);
37
+ outline: none;
38
+ transition: border-color 0.15s;
39
+ }
40
+
41
+ .repos-search:focus {
42
+ border-color: var(--accent);
43
+ }
44
+
45
+ .repos-toolbar-actions {
46
+ display: flex;
47
+ gap: 3px;
48
+ flex-shrink: 0;
49
+ }
50
+
51
+ .repos-toolbar-btn {
52
+ background: none;
53
+ border: 1px solid var(--border);
54
+ border-radius: var(--radius);
55
+ color: var(--text-dim);
56
+ cursor: pointer;
57
+ padding: 4px;
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: center;
61
+ flex-shrink: 0;
62
+ transition: color 0.15s, border-color 0.15s;
63
+ }
64
+
65
+ .repos-toolbar-btn:hover {
66
+ color: var(--accent);
67
+ border-color: var(--accent);
68
+ }
69
+
70
+ .repos-toolbar-btn.spinning svg {
71
+ animation: reposSpin 0.6s linear infinite;
72
+ }
73
+
74
+ @keyframes reposSpin {
75
+ from { transform: rotate(0deg); }
76
+ to { transform: rotate(360deg); }
77
+ }
78
+
79
+ /* ── Tree list ───────────────────────────────────────── */
80
+ .repos-list {
81
+ flex: 1;
82
+ overflow-y: auto;
83
+ padding: 4px 0;
84
+ }
85
+
86
+ .repos-list::-webkit-scrollbar { width: 4px; }
87
+ .repos-list::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }
88
+
89
+ /* Group children container with indent guide */
90
+ .repos-group-children {
91
+ display: none;
92
+ position: relative;
93
+ }
94
+
95
+ .repos-group-children.expanded {
96
+ display: block;
97
+ }
98
+
99
+ .repos-group-children::before {
100
+ content: "";
101
+ position: absolute;
102
+ left: 20px;
103
+ top: 0;
104
+ bottom: 0;
105
+ width: 1px;
106
+ background: var(--border-subtle);
107
+ }
108
+
109
+ /* ── Tree item (shared base) ─────────────────────────── */
110
+ .repos-item {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: 6px;
114
+ padding: 5px 8px;
115
+ font-size: 12px;
116
+ color: var(--text);
117
+ transition: background 0.1s;
118
+ white-space: nowrap;
119
+ user-select: none;
120
+ cursor: default;
121
+ position: relative;
122
+ }
123
+
124
+ .repos-item:hover {
125
+ background: var(--bg-tertiary);
126
+ }
127
+
128
+ .repos-item.dragging {
129
+ opacity: 0.35;
130
+ }
131
+
132
+ .repos-item.drop-target {
133
+ background: var(--accent-dim);
134
+ outline: 1px dashed var(--accent);
135
+ outline-offset: -1px;
136
+ }
137
+
138
+ /* Chevron */
139
+ .repos-chevron {
140
+ width: 12px;
141
+ height: 12px;
142
+ flex-shrink: 0;
143
+ transition: transform 0.15s ease;
144
+ color: var(--text-dim);
145
+ }
146
+
147
+ .repos-chevron.expanded {
148
+ transform: rotate(90deg);
149
+ }
150
+
151
+ .repos-chevron-spacer {
152
+ width: 12px;
153
+ flex-shrink: 0;
154
+ }
155
+
156
+ /* Tree icons */
157
+ .repos-tree-icon {
158
+ width: 14px;
159
+ height: 14px;
160
+ flex-shrink: 0;
161
+ color: var(--text-dim);
162
+ }
163
+
164
+ .repos-tree-icon.folder {
165
+ color: var(--accent);
166
+ }
167
+
168
+ /* ── Group item ──────────────────────────────────────── */
169
+ .repos-group-item {
170
+ cursor: pointer;
171
+ }
172
+
173
+ .repos-group-name {
174
+ overflow: hidden;
175
+ text-overflow: ellipsis;
176
+ font-weight: 600;
177
+ flex-grow: 1;
178
+ min-width: 0;
179
+ }
180
+
181
+ .repos-group-badge {
182
+ margin-left: auto;
183
+ font-size: 9px;
184
+ color: var(--text-dim);
185
+ background: var(--bg-tertiary);
186
+ border-radius: 8px;
187
+ padding: 1px 6px;
188
+ min-width: 18px;
189
+ text-align: center;
190
+ flex-shrink: 0;
191
+ font-weight: 500;
192
+ }
193
+
194
+ /* ── Repo item ───────────────────────────────────────── */
195
+ .repos-repo-info {
196
+ display: flex;
197
+ flex-direction: column;
198
+ min-width: 0;
199
+ gap: 2px;
200
+ flex-grow: 1;
201
+ }
202
+
203
+ .repos-repo-name {
204
+ font-weight: 500;
205
+ overflow: hidden;
206
+ text-overflow: ellipsis;
207
+ white-space: nowrap;
208
+ color: var(--text);
209
+ }
210
+
211
+ .repos-repo-meta {
212
+ display: flex;
213
+ align-items: center;
214
+ gap: 4px;
215
+ font-size: 10px;
216
+ color: var(--text-dim);
217
+ overflow: hidden;
218
+ }
219
+
220
+ .repos-repo-meta span {
221
+ overflow: hidden;
222
+ text-overflow: ellipsis;
223
+ white-space: nowrap;
224
+ }
225
+
226
+ .repos-meta-icon {
227
+ width: 10px;
228
+ height: 10px;
229
+ flex-shrink: 0;
230
+ opacity: 0.6;
231
+ }
232
+
233
+ /* ── Hover actions ───────────────────────────────────── */
234
+ .repos-item-actions {
235
+ display: none;
236
+ gap: 2px;
237
+ flex-shrink: 0;
238
+ position: absolute;
239
+ right: 8px;
240
+ top: 50%;
241
+ transform: translateY(-50%);
242
+ background: var(--bg-tertiary);
243
+ padding: 0 2px;
244
+ border-radius: var(--radius);
245
+ }
246
+
247
+ .repos-item:hover .repos-item-actions {
248
+ display: flex;
249
+ }
250
+
251
+ .repos-item:hover .repos-group-badge {
252
+ visibility: hidden;
253
+ }
254
+
255
+ .repos-item-btn {
256
+ width: 22px;
257
+ height: 22px;
258
+ display: flex;
259
+ align-items: center;
260
+ justify-content: center;
261
+ border: none;
262
+ background: transparent;
263
+ color: var(--text-dim);
264
+ cursor: pointer;
265
+ border-radius: var(--radius);
266
+ transition: background 0.1s, color 0.1s;
267
+ padding: 0;
268
+ }
269
+
270
+ .repos-item-btn svg {
271
+ width: 12px;
272
+ height: 12px;
273
+ }
274
+
275
+ .repos-item-btn:hover {
276
+ background: var(--bg-secondary);
277
+ color: var(--text);
278
+ }
279
+
280
+ .repos-delete-btn:hover {
281
+ color: var(--error) !important;
282
+ }
283
+
284
+ /* ── Inline editing ──────────────────────────────────── */
285
+ .repos-inline-input {
286
+ flex: 1;
287
+ min-width: 0;
288
+ padding: 2px 6px;
289
+ background: var(--bg);
290
+ border: 1px solid var(--accent);
291
+ border-radius: var(--radius);
292
+ color: var(--text);
293
+ font-size: 12px;
294
+ font-family: var(--font-mono);
295
+ outline: none;
296
+ }
297
+
298
+ /* ── Empty state ─────────────────────────────────────── */
299
+ .repos-empty {
300
+ padding: 32px 16px;
301
+ font-size: 12px;
302
+ color: var(--text-dim);
303
+ text-align: center;
304
+ display: flex;
305
+ flex-direction: column;
306
+ align-items: center;
307
+ gap: 8px;
308
+ }
309
+
310
+ .repos-empty-icon {
311
+ opacity: 0.2;
312
+ }
313
+
314
+ .repos-empty-icon svg {
315
+ width: 32px;
316
+ height: 32px;
317
+ }
318
+
319
+ .repos-empty-hint {
320
+ font-size: 10px;
321
+ opacity: 0.6;
322
+ }
323
+
324
+ /* ── Footer ──────────────────────────────────────────── */
325
+ .repos-footer {
326
+ display: flex;
327
+ justify-content: space-between;
328
+ align-items: center;
329
+ padding: 6px 8px;
330
+ font-size: 10px;
331
+ color: var(--text-dim);
332
+ border-top: 1px solid var(--border);
333
+ font-family: var(--font-mono);
334
+ flex-shrink: 0;
335
+ }
336
+
337
+ /* ── Dialog ──────────────────────────────────────────── */
338
+ .repos-dialog-overlay {
339
+ position: absolute;
340
+ inset: 0;
341
+ background: rgba(0, 0, 0, 0.5);
342
+ display: flex;
343
+ align-items: center;
344
+ justify-content: center;
345
+ z-index: 100;
346
+ backdrop-filter: blur(2px);
347
+ }
348
+
349
+ .repos-dialog {
350
+ background: var(--bg-secondary);
351
+ border: 1px solid var(--border);
352
+ border-radius: var(--radius-lg);
353
+ padding: 16px;
354
+ width: 280px;
355
+ display: flex;
356
+ flex-direction: column;
357
+ gap: 10px;
358
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
359
+ }
360
+
361
+ .repos-dialog-title {
362
+ font-family: var(--font-mono);
363
+ font-size: 12px;
364
+ font-weight: 600;
365
+ color: var(--text);
366
+ }
367
+
368
+ .repos-dialog-label {
369
+ font-family: var(--font-mono);
370
+ font-size: 10px;
371
+ color: var(--text-dim);
372
+ display: flex;
373
+ flex-direction: column;
374
+ gap: 3px;
375
+ }
376
+
377
+ .repos-dialog-input {
378
+ font-family: var(--font-mono);
379
+ font-size: 11px;
380
+ padding: 5px 8px;
381
+ border: 1px solid var(--border);
382
+ border-radius: var(--radius);
383
+ background: var(--bg);
384
+ color: var(--text);
385
+ outline: none;
386
+ transition: border-color 0.15s;
387
+ }
388
+
389
+ .repos-dialog-input:focus {
390
+ border-color: var(--accent);
391
+ }
392
+
393
+ .repos-dialog-input option {
394
+ background: var(--bg-secondary);
395
+ color: var(--text);
396
+ }
397
+
398
+ .repos-dialog-actions {
399
+ display: flex;
400
+ justify-content: flex-end;
401
+ gap: 6px;
402
+ margin-top: 4px;
403
+ }
404
+
405
+ .repos-btn {
406
+ background: none;
407
+ border: 1px solid var(--border);
408
+ border-radius: var(--radius);
409
+ color: var(--text-dim);
410
+ cursor: pointer;
411
+ padding: 5px 12px;
412
+ font-size: 11px;
413
+ font-family: var(--font-mono);
414
+ transition: color 0.15s, border-color 0.15s, background 0.15s;
415
+ }
416
+
417
+ .repos-btn:hover {
418
+ color: var(--text);
419
+ border-color: var(--text-dim);
420
+ }
421
+
422
+ .repos-dialog-save {
423
+ background: var(--accent) !important;
424
+ color: var(--bg) !important;
425
+ border-color: var(--accent) !important;
426
+ font-weight: 600;
427
+ }
428
+
429
+ .repos-dialog-save:hover {
430
+ opacity: 0.9;
431
+ }
432
+
433
+ .repos-dialog-error {
434
+ font-family: var(--font-mono);
435
+ font-size: 10px;
436
+ color: var(--error);
437
+ padding: 4px 0;
438
+ }
439
+
440
+ /* ── Context Menu ────────────────────────────────────── */
441
+ .repos-ctx-menu {
442
+ position: fixed;
443
+ z-index: 1000;
444
+ background: var(--bg-secondary);
445
+ border: 1px solid var(--border);
446
+ border-radius: var(--radius);
447
+ padding: 4px 0;
448
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
449
+ min-width: 170px;
450
+ }
451
+
452
+ .repos-ctx-menu button {
453
+ display: block;
454
+ width: 100%;
455
+ background: none;
456
+ border: none;
457
+ color: var(--text);
458
+ font-size: 12px;
459
+ font-family: var(--font-mono);
460
+ padding: 6px 12px;
461
+ text-align: left;
462
+ cursor: pointer;
463
+ white-space: nowrap;
464
+ transition: background 0.1s, color 0.1s;
465
+ }
466
+
467
+ .repos-ctx-menu button:hover {
468
+ background: var(--accent-dim);
469
+ color: var(--accent);
470
+ }
471
+
472
+ .repos-ctx-danger {
473
+ color: var(--error) !important;
474
+ }
475
+
476
+ .repos-ctx-danger:hover {
477
+ background: rgba(237, 51, 59, 0.08) !important;
478
+ color: var(--error) !important;
479
+ }
480
+
481
+ /* Submenu */
482
+ .repos-ctx-submenu-wrapper {
483
+ position: relative;
484
+ }
485
+
486
+ .repos-ctx-has-submenu {
487
+ display: flex !important;
488
+ width: 100%;
489
+ justify-content: space-between;
490
+ align-items: center;
491
+ background: none;
492
+ border: none;
493
+ color: var(--text);
494
+ font-size: 12px;
495
+ font-family: var(--font-mono);
496
+ padding: 6px 12px;
497
+ text-align: left;
498
+ cursor: pointer;
499
+ white-space: nowrap;
500
+ transition: background 0.1s, color 0.1s;
501
+ }
502
+
503
+ .repos-ctx-has-submenu:hover {
504
+ background: var(--accent-dim);
505
+ color: var(--accent);
506
+ }
507
+
508
+ .repos-ctx-arrow {
509
+ font-size: 14px;
510
+ margin-left: 8px;
511
+ }
512
+
513
+ .repos-ctx-submenu {
514
+ display: none;
515
+ position: absolute;
516
+ left: 100%;
517
+ top: 0;
518
+ background: var(--bg-secondary);
519
+ border: 1px solid var(--border);
520
+ border-radius: var(--radius);
521
+ padding: 4px 0;
522
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
523
+ min-width: 140px;
524
+ z-index: 1001;
525
+ }
526
+
527
+ .repos-ctx-submenu-wrapper:hover .repos-ctx-submenu {
528
+ display: block;
529
+ }
530
+
531
+ .repos-ctx-submenu button {
532
+ display: block;
533
+ width: 100%;
534
+ background: none;
535
+ border: none;
536
+ color: var(--text);
537
+ font-size: 12px;
538
+ font-family: var(--font-mono);
539
+ padding: 6px 12px;
540
+ text-align: left;
541
+ cursor: pointer;
542
+ white-space: nowrap;
543
+ transition: background 0.1s, color 0.1s;
544
+ }
545
+
546
+ .repos-ctx-submenu button:hover {
547
+ background: var(--accent-dim);
548
+ color: var(--accent);
549
+ }