@triedotdev/mcp 1.0.169 → 1.0.170

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 (145) hide show
  1. package/README.md +54 -545
  2. package/dist/chunk-2YXOBNKW.js +619 -0
  3. package/dist/chunk-2YXOBNKW.js.map +1 -0
  4. package/dist/chunk-QR64Y5TI.js +363 -0
  5. package/dist/chunk-QR64Y5TI.js.map +1 -0
  6. package/dist/cli/main.d.ts +0 -15
  7. package/dist/cli/main.js +356 -3098
  8. package/dist/cli/main.js.map +1 -1
  9. package/dist/index.js +2 -34
  10. package/dist/index.js.map +1 -1
  11. package/dist/server/mcp-server.js +2 -34
  12. package/package.json +8 -31
  13. package/dist/autonomy-config-FSERX3O3.js +0 -30
  14. package/dist/autonomy-config-FSERX3O3.js.map +0 -1
  15. package/dist/chat-store-JNGNTDSN.js +0 -15
  16. package/dist/chat-store-JNGNTDSN.js.map +0 -1
  17. package/dist/chunk-2HF65EHQ.js +0 -311
  18. package/dist/chunk-2HF65EHQ.js.map +0 -1
  19. package/dist/chunk-3XR6WVAW.js +0 -4011
  20. package/dist/chunk-3XR6WVAW.js.map +0 -1
  21. package/dist/chunk-43X6JBEM.js +0 -36
  22. package/dist/chunk-43X6JBEM.js.map +0 -1
  23. package/dist/chunk-6NLHFIYA.js +0 -344
  24. package/dist/chunk-6NLHFIYA.js.map +0 -1
  25. package/dist/chunk-7IO4YUI3.js +0 -1827
  26. package/dist/chunk-7IO4YUI3.js.map +0 -1
  27. package/dist/chunk-AHD2CBQ7.js +0 -846
  28. package/dist/chunk-AHD2CBQ7.js.map +0 -1
  29. package/dist/chunk-BUTOP5EB.js +0 -931
  30. package/dist/chunk-BUTOP5EB.js.map +0 -1
  31. package/dist/chunk-DGUM43GV.js +0 -11
  32. package/dist/chunk-DGUM43GV.js.map +0 -1
  33. package/dist/chunk-EFWVF6TI.js +0 -267
  34. package/dist/chunk-EFWVF6TI.js.map +0 -1
  35. package/dist/chunk-F6WFNUAY.js +0 -216
  36. package/dist/chunk-F6WFNUAY.js.map +0 -1
  37. package/dist/chunk-FBNURWRY.js +0 -662
  38. package/dist/chunk-FBNURWRY.js.map +0 -1
  39. package/dist/chunk-FQ45QP5A.js +0 -361
  40. package/dist/chunk-FQ45QP5A.js.map +0 -1
  41. package/dist/chunk-FVRO5RN3.js +0 -1306
  42. package/dist/chunk-FVRO5RN3.js.map +0 -1
  43. package/dist/chunk-G2TGF6TR.js +0 -573
  44. package/dist/chunk-G2TGF6TR.js.map +0 -1
  45. package/dist/chunk-G3I7SZLW.js +0 -354
  46. package/dist/chunk-G3I7SZLW.js.map +0 -1
  47. package/dist/chunk-GTKYBOXL.js +0 -700
  48. package/dist/chunk-GTKYBOXL.js.map +0 -1
  49. package/dist/chunk-HVCDY3AK.js +0 -850
  50. package/dist/chunk-HVCDY3AK.js.map +0 -1
  51. package/dist/chunk-I2O5OYQT.js +0 -727
  52. package/dist/chunk-I2O5OYQT.js.map +0 -1
  53. package/dist/chunk-JVMBCWKS.js +0 -348
  54. package/dist/chunk-JVMBCWKS.js.map +0 -1
  55. package/dist/chunk-KCUOWRPX.js +0 -816
  56. package/dist/chunk-KCUOWRPX.js.map +0 -1
  57. package/dist/chunk-KDHN2ZQE.js +0 -313
  58. package/dist/chunk-KDHN2ZQE.js.map +0 -1
  59. package/dist/chunk-ME2OERF5.js +0 -345
  60. package/dist/chunk-ME2OERF5.js.map +0 -1
  61. package/dist/chunk-OBQ74FOU.js +0 -27
  62. package/dist/chunk-OBQ74FOU.js.map +0 -1
  63. package/dist/chunk-Q5EKA5YA.js +0 -254
  64. package/dist/chunk-Q5EKA5YA.js.map +0 -1
  65. package/dist/chunk-Q63FFI6D.js +0 -132
  66. package/dist/chunk-Q63FFI6D.js.map +0 -1
  67. package/dist/chunk-SASNMSB5.js +0 -12597
  68. package/dist/chunk-SASNMSB5.js.map +0 -1
  69. package/dist/chunk-T63OHG4Q.js +0 -440
  70. package/dist/chunk-T63OHG4Q.js.map +0 -1
  71. package/dist/chunk-TN5WEKWI.js +0 -173
  72. package/dist/chunk-TN5WEKWI.js.map +0 -1
  73. package/dist/chunk-VUL52BQL.js +0 -402
  74. package/dist/chunk-VUL52BQL.js.map +0 -1
  75. package/dist/chunk-VVITXIHN.js +0 -189
  76. package/dist/chunk-VVITXIHN.js.map +0 -1
  77. package/dist/chunk-WCN7S3EI.js +0 -14
  78. package/dist/chunk-WCN7S3EI.js.map +0 -1
  79. package/dist/chunk-XPZZFPBZ.js +0 -491
  80. package/dist/chunk-XPZZFPBZ.js.map +0 -1
  81. package/dist/chunk-ZJF5FTBX.js +0 -1396
  82. package/dist/chunk-ZJF5FTBX.js.map +0 -1
  83. package/dist/chunk-ZV2K6M7T.js +0 -74
  84. package/dist/chunk-ZV2K6M7T.js.map +0 -1
  85. package/dist/cli/create-agent.d.ts +0 -1
  86. package/dist/cli/create-agent.js +0 -1050
  87. package/dist/cli/create-agent.js.map +0 -1
  88. package/dist/cli/yolo-daemon.d.ts +0 -1
  89. package/dist/cli/yolo-daemon.js +0 -421
  90. package/dist/cli/yolo-daemon.js.map +0 -1
  91. package/dist/client-NJPZE5JT.js +0 -28
  92. package/dist/client-NJPZE5JT.js.map +0 -1
  93. package/dist/codebase-index-VAPF32XX.js +0 -12
  94. package/dist/codebase-index-VAPF32XX.js.map +0 -1
  95. package/dist/fast-analyzer-3GCCZMLK.js +0 -216
  96. package/dist/fast-analyzer-3GCCZMLK.js.map +0 -1
  97. package/dist/git-EO5SRFMN.js +0 -28
  98. package/dist/git-EO5SRFMN.js.map +0 -1
  99. package/dist/github-ingester-ZOKK6GRS.js +0 -11
  100. package/dist/github-ingester-ZOKK6GRS.js.map +0 -1
  101. package/dist/goal-manager-QUKX2W6C.js +0 -25
  102. package/dist/goal-manager-QUKX2W6C.js.map +0 -1
  103. package/dist/goal-validator-2SFSKKVU.js +0 -24
  104. package/dist/goal-validator-2SFSKKVU.js.map +0 -1
  105. package/dist/graph-B3NA4S7I.js +0 -10
  106. package/dist/graph-B3NA4S7I.js.map +0 -1
  107. package/dist/hypothesis-KCPBR652.js +0 -23
  108. package/dist/hypothesis-KCPBR652.js.map +0 -1
  109. package/dist/incident-index-EFNUSGWL.js +0 -11
  110. package/dist/incident-index-EFNUSGWL.js.map +0 -1
  111. package/dist/insight-store-EC4PLSAW.js +0 -22
  112. package/dist/insight-store-EC4PLSAW.js.map +0 -1
  113. package/dist/issue-store-YAXTNRRY.js +0 -36
  114. package/dist/issue-store-YAXTNRRY.js.map +0 -1
  115. package/dist/ledger-TWZTGDFA.js +0 -58
  116. package/dist/ledger-TWZTGDFA.js.map +0 -1
  117. package/dist/linear-ingester-XXPAZZRW.js +0 -11
  118. package/dist/linear-ingester-XXPAZZRW.js.map +0 -1
  119. package/dist/output-manager-RVJ37XKA.js +0 -13
  120. package/dist/output-manager-RVJ37XKA.js.map +0 -1
  121. package/dist/parse-goal-violation-SACGFG3C.js +0 -8
  122. package/dist/parse-goal-violation-SACGFG3C.js.map +0 -1
  123. package/dist/pattern-discovery-F7LU5K6E.js +0 -8
  124. package/dist/pattern-discovery-F7LU5K6E.js.map +0 -1
  125. package/dist/progress-SRQ2V3BP.js +0 -18
  126. package/dist/progress-SRQ2V3BP.js.map +0 -1
  127. package/dist/project-state-AHPA77SM.js +0 -28
  128. package/dist/project-state-AHPA77SM.js.map +0 -1
  129. package/dist/sync-M2FSWPBC.js +0 -12
  130. package/dist/sync-M2FSWPBC.js.map +0 -1
  131. package/dist/terminal-spawn-5YXDMUCF.js +0 -157
  132. package/dist/terminal-spawn-5YXDMUCF.js.map +0 -1
  133. package/dist/tiered-storage-DYNC5CQ6.js +0 -13
  134. package/dist/tiered-storage-DYNC5CQ6.js.map +0 -1
  135. package/dist/trie-agent-I3HAHY2G.js +0 -26
  136. package/dist/trie-agent-I3HAHY2G.js.map +0 -1
  137. package/dist/ui/chat.html +0 -1014
  138. package/dist/ui/goals.html +0 -967
  139. package/dist/ui/hypotheses.html +0 -1011
  140. package/dist/ui/ledger.html +0 -954
  141. package/dist/ui/nudges.html +0 -995
  142. package/dist/vibe-code-signatures-5ZULYP3D.js +0 -987
  143. package/dist/vibe-code-signatures-5ZULYP3D.js.map +0 -1
  144. package/dist/vulnerability-signatures-2URZSXAQ.js +0 -983
  145. package/dist/vulnerability-signatures-2URZSXAQ.js.map +0 -1
@@ -1,967 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Goals & Progress - Trie</title>
7
- <style>
8
- /* MCP Apps Shared Styles for Trie */
9
- :root {
10
- --trie-bg: #0d1117;
11
- --trie-surface: #161b22;
12
- --trie-border: #30363d;
13
- --trie-text: #e6edf3;
14
- --trie-text-muted: #8b949e;
15
- --trie-primary: #58a6ff;
16
- --trie-success: #3fb950;
17
- --trie-warning: #d29922;
18
- --trie-error: #f85149;
19
- --trie-critical: #ff7b72;
20
- --trie-info: #58a6ff;
21
- --radius: 6px;
22
- --font-mono: 'SF Mono', 'Menlo', 'Monaco', 'Consolas', monospace;
23
- --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;
24
- }
25
-
26
- * {
27
- box-sizing: border-box;
28
- margin: 0;
29
- padding: 0;
30
- }
31
-
32
- body {
33
- font-family: var(--font-sans);
34
- font-size: 14px;
35
- line-height: 1.5;
36
- color: var(--trie-text);
37
- background: var(--trie-bg);
38
- padding: 16px;
39
- }
40
-
41
- /* Typography */
42
- h1, h2, h3, h4 {
43
- font-weight: 600;
44
- margin-bottom: 8px;
45
- }
46
-
47
- h1 { font-size: 24px; }
48
- h2 { font-size: 20px; }
49
- h3 { font-size: 16px; }
50
- h4 { font-size: 14px; }
51
-
52
- .text-muted { color: var(--trie-text-muted); }
53
- .text-error { color: var(--trie-error); }
54
- .text-warning { color: var(--trie-warning); }
55
- .text-success { color: var(--trie-success); }
56
- .text-info { color: var(--trie-info); }
57
-
58
- /* Layout */
59
- .container {
60
- max-width: 1200px;
61
- margin: 0 auto;
62
- }
63
-
64
- .flex { display: flex; }
65
- .flex-col { flex-direction: column; }
66
- .flex-wrap { flex-wrap: wrap; }
67
- .items-center { align-items: center; }
68
- .justify-between { justify-content: space-between; }
69
- .gap-2 { gap: 8px; }
70
- .gap-4 { gap: 16px; }
71
-
72
- /* Cards */
73
- .card {
74
- background: var(--trie-surface);
75
- border: 1px solid var(--trie-border);
76
- border-radius: var(--radius);
77
- padding: 16px;
78
- }
79
-
80
- .card-header {
81
- display: flex;
82
- align-items: center;
83
- justify-content: space-between;
84
- margin-bottom: 12px;
85
- padding-bottom: 12px;
86
- border-bottom: 1px solid var(--trie-border);
87
- }
88
-
89
- /* Buttons */
90
- .btn {
91
- display: inline-flex;
92
- align-items: center;
93
- gap: 6px;
94
- padding: 6px 12px;
95
- font-size: 14px;
96
- font-weight: 500;
97
- border-radius: var(--radius);
98
- border: 1px solid var(--trie-border);
99
- background: var(--trie-surface);
100
- color: var(--trie-text);
101
- cursor: pointer;
102
- transition: all 0.15s ease;
103
- }
104
-
105
- .btn:hover {
106
- background: var(--trie-border);
107
- }
108
-
109
- .btn-primary {
110
- background: var(--trie-primary);
111
- border-color: var(--trie-primary);
112
- color: #fff;
113
- }
114
-
115
- .btn-primary:hover {
116
- opacity: 0.9;
117
- }
118
-
119
- .btn-success {
120
- background: var(--trie-success);
121
- border-color: var(--trie-success);
122
- color: #fff;
123
- }
124
-
125
- .btn-danger {
126
- background: var(--trie-error);
127
- border-color: var(--trie-error);
128
- color: #fff;
129
- }
130
-
131
- .btn-sm {
132
- padding: 4px 8px;
133
- font-size: 12px;
134
- }
135
-
136
- .btn-icon {
137
- padding: 6px;
138
- min-width: 32px;
139
- justify-content: center;
140
- }
141
-
142
- /* Inputs */
143
- .input {
144
- padding: 8px 12px;
145
- font-size: 14px;
146
- border: 1px solid var(--trie-border);
147
- border-radius: var(--radius);
148
- background: var(--trie-bg);
149
- color: var(--trie-text);
150
- width: 100%;
151
- }
152
-
153
- .input:focus {
154
- outline: none;
155
- border-color: var(--trie-primary);
156
- }
157
-
158
- .select {
159
- padding: 8px 12px;
160
- font-size: 14px;
161
- border: 1px solid var(--trie-border);
162
- border-radius: var(--radius);
163
- background: var(--trie-surface);
164
- color: var(--trie-text);
165
- cursor: pointer;
166
- }
167
-
168
- /* Badges */
169
- .badge {
170
- display: inline-flex;
171
- align-items: center;
172
- padding: 2px 8px;
173
- font-size: 12px;
174
- font-weight: 500;
175
- border-radius: 12px;
176
- background: var(--trie-border);
177
- color: var(--trie-text);
178
- }
179
-
180
- .badge-critical {
181
- background: rgba(255, 123, 114, 0.2);
182
- color: var(--trie-critical);
183
- }
184
-
185
- .badge-high {
186
- background: rgba(248, 81, 73, 0.2);
187
- color: var(--trie-error);
188
- }
189
-
190
- .badge-medium {
191
- background: rgba(210, 153, 34, 0.2);
192
- color: var(--trie-warning);
193
- }
194
-
195
- .badge-low {
196
- background: rgba(63, 185, 80, 0.2);
197
- color: var(--trie-success);
198
- }
199
-
200
- .badge-info {
201
- background: rgba(88, 166, 255, 0.2);
202
- color: var(--trie-info);
203
- }
204
-
205
- /* Tables */
206
- .table {
207
- width: 100%;
208
- border-collapse: collapse;
209
- }
210
-
211
- .table th,
212
- .table td {
213
- padding: 12px;
214
- text-align: left;
215
- border-bottom: 1px solid var(--trie-border);
216
- }
217
-
218
- .table th {
219
- font-weight: 600;
220
- color: var(--trie-text-muted);
221
- font-size: 12px;
222
- text-transform: uppercase;
223
- }
224
-
225
- .table tr:hover {
226
- background: rgba(255, 255, 255, 0.02);
227
- }
228
-
229
- /* Lists */
230
- .list {
231
- list-style: none;
232
- }
233
-
234
- .list-item {
235
- padding: 12px;
236
- border-bottom: 1px solid var(--trie-border);
237
- cursor: pointer;
238
- transition: background 0.15s ease;
239
- }
240
-
241
- .list-item:hover {
242
- background: rgba(255, 255, 255, 0.02);
243
- }
244
-
245
- .list-item:last-child {
246
- border-bottom: none;
247
- }
248
-
249
- /* Issue Item */
250
- .issue-item {
251
- display: flex;
252
- gap: 12px;
253
- padding: 12px;
254
- border: 1px solid var(--trie-border);
255
- border-radius: var(--radius);
256
- margin-bottom: 8px;
257
- cursor: pointer;
258
- transition: all 0.15s ease;
259
- }
260
-
261
- .issue-item:hover {
262
- border-color: var(--trie-primary);
263
- background: rgba(88, 166, 255, 0.05);
264
- }
265
-
266
- .issue-item.expanded {
267
- border-color: var(--trie-primary);
268
- }
269
-
270
- .issue-severity {
271
- width: 4px;
272
- border-radius: 2px;
273
- flex-shrink: 0;
274
- }
275
-
276
- .issue-severity.critical { background: var(--trie-critical); }
277
- .issue-severity.high { background: var(--trie-error); }
278
- .issue-severity.medium { background: var(--trie-warning); }
279
- .issue-severity.low { background: var(--trie-success); }
280
- .issue-severity.info { background: var(--trie-info); }
281
-
282
- .issue-content {
283
- flex: 1;
284
- min-width: 0;
285
- }
286
-
287
- .issue-title {
288
- font-weight: 500;
289
- margin-bottom: 4px;
290
- }
291
-
292
- .issue-meta {
293
- font-size: 12px;
294
- color: var(--trie-text-muted);
295
- }
296
-
297
- .issue-details {
298
- margin-top: 12px;
299
- padding-top: 12px;
300
- border-top: 1px solid var(--trie-border);
301
- }
302
-
303
- .issue-actions {
304
- display: flex;
305
- gap: 8px;
306
- margin-top: 12px;
307
- }
308
-
309
- /* Code blocks */
310
- .code-block {
311
- font-family: var(--font-mono);
312
- font-size: 12px;
313
- background: var(--trie-bg);
314
- border: 1px solid var(--trie-border);
315
- border-radius: var(--radius);
316
- padding: 12px;
317
- overflow-x: auto;
318
- white-space: pre;
319
- }
320
-
321
- .code-inline {
322
- font-family: var(--font-mono);
323
- font-size: 12px;
324
- background: rgba(110, 118, 129, 0.2);
325
- padding: 2px 6px;
326
- border-radius: 4px;
327
- }
328
-
329
- /* File path */
330
- .file-path {
331
- font-family: var(--font-mono);
332
- font-size: 12px;
333
- color: var(--trie-primary);
334
- }
335
-
336
- /* Tabs */
337
- .tabs {
338
- display: flex;
339
- border-bottom: 1px solid var(--trie-border);
340
- margin-bottom: 16px;
341
- }
342
-
343
- .tab {
344
- padding: 8px 16px;
345
- font-size: 14px;
346
- color: var(--trie-text-muted);
347
- cursor: pointer;
348
- border-bottom: 2px solid transparent;
349
- margin-bottom: -1px;
350
- transition: all 0.15s ease;
351
- }
352
-
353
- .tab:hover {
354
- color: var(--trie-text);
355
- }
356
-
357
- .tab.active {
358
- color: var(--trie-primary);
359
- border-bottom-color: var(--trie-primary);
360
- }
361
-
362
- /* Stats */
363
- .stats {
364
- display: grid;
365
- grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
366
- gap: 16px;
367
- margin-bottom: 24px;
368
- }
369
-
370
- .stat {
371
- text-align: center;
372
- padding: 16px;
373
- background: var(--trie-surface);
374
- border: 1px solid var(--trie-border);
375
- border-radius: var(--radius);
376
- }
377
-
378
- .stat-value {
379
- font-size: 32px;
380
- font-weight: 700;
381
- line-height: 1;
382
- }
383
-
384
- .stat-label {
385
- font-size: 12px;
386
- color: var(--trie-text-muted);
387
- margin-top: 4px;
388
- }
389
-
390
- /* Filters */
391
- .filters {
392
- display: flex;
393
- flex-wrap: wrap;
394
- gap: 12px;
395
- margin-bottom: 16px;
396
- padding: 12px;
397
- background: var(--trie-surface);
398
- border: 1px solid var(--trie-border);
399
- border-radius: var(--radius);
400
- }
401
-
402
- .filter-group {
403
- display: flex;
404
- align-items: center;
405
- gap: 8px;
406
- }
407
-
408
- .filter-label {
409
- font-size: 12px;
410
- color: var(--trie-text-muted);
411
- }
412
-
413
- /* Screenshot Grid */
414
- .screenshot-grid {
415
- display: grid;
416
- grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
417
- gap: 16px;
418
- }
419
-
420
- .screenshot-card {
421
- border: 1px solid var(--trie-border);
422
- border-radius: var(--radius);
423
- overflow: hidden;
424
- }
425
-
426
- .screenshot-card img {
427
- width: 100%;
428
- height: auto;
429
- display: block;
430
- }
431
-
432
- .screenshot-card-footer {
433
- padding: 12px;
434
- background: var(--trie-surface);
435
- }
436
-
437
- /* Diff view */
438
- .diff-container {
439
- font-family: var(--font-mono);
440
- font-size: 12px;
441
- border: 1px solid var(--trie-border);
442
- border-radius: var(--radius);
443
- overflow: hidden;
444
- }
445
-
446
- .diff-header {
447
- padding: 8px 12px;
448
- background: var(--trie-surface);
449
- border-bottom: 1px solid var(--trie-border);
450
- }
451
-
452
- .diff-line {
453
- display: flex;
454
- padding: 0 12px;
455
- min-height: 24px;
456
- line-height: 24px;
457
- }
458
-
459
- .diff-line-number {
460
- width: 50px;
461
- color: var(--trie-text-muted);
462
- user-select: none;
463
- text-align: right;
464
- padding-right: 12px;
465
- flex-shrink: 0;
466
- }
467
-
468
- .diff-line-content {
469
- flex: 1;
470
- white-space: pre;
471
- }
472
-
473
- .diff-line.added {
474
- background: rgba(63, 185, 80, 0.15);
475
- }
476
-
477
- .diff-line.removed {
478
- background: rgba(248, 81, 73, 0.15);
479
- }
480
-
481
- .diff-line.added .diff-line-content::before {
482
- content: '+';
483
- color: var(--trie-success);
484
- margin-right: 8px;
485
- }
486
-
487
- .diff-line.removed .diff-line-content::before {
488
- content: '-';
489
- color: var(--trie-error);
490
- margin-right: 8px;
491
- }
492
-
493
- /* File tree */
494
- .file-tree {
495
- font-family: var(--font-mono);
496
- font-size: 12px;
497
- }
498
-
499
- .file-tree-item {
500
- display: flex;
501
- align-items: center;
502
- gap: 8px;
503
- padding: 6px 12px;
504
- cursor: pointer;
505
- border-radius: var(--radius);
506
- }
507
-
508
- .file-tree-item:hover {
509
- background: rgba(255, 255, 255, 0.05);
510
- }
511
-
512
- .file-tree-item.selected {
513
- background: rgba(88, 166, 255, 0.1);
514
- color: var(--trie-primary);
515
- }
516
-
517
- .file-tree-icon {
518
- width: 16px;
519
- height: 16px;
520
- opacity: 0.7;
521
- }
522
-
523
- /* Loading */
524
- .loading {
525
- display: flex;
526
- align-items: center;
527
- justify-content: center;
528
- padding: 48px;
529
- color: var(--trie-text-muted);
530
- }
531
-
532
- .spinner {
533
- width: 24px;
534
- height: 24px;
535
- border: 2px solid var(--trie-border);
536
- border-top-color: var(--trie-primary);
537
- border-radius: 50%;
538
- animation: spin 0.8s linear infinite;
539
- }
540
-
541
- @keyframes spin {
542
- to { transform: rotate(360deg); }
543
- }
544
-
545
- /* Empty state */
546
- .empty-state {
547
- text-align: center;
548
- padding: 48px;
549
- color: var(--trie-text-muted);
550
- }
551
-
552
- .empty-state-icon {
553
- font-size: 48px;
554
- margin-bottom: 16px;
555
- opacity: 0.5;
556
- }
557
-
558
- /* Scrollbar */
559
- ::-webkit-scrollbar {
560
- width: 8px;
561
- height: 8px;
562
- }
563
-
564
- ::-webkit-scrollbar-track {
565
- background: transparent;
566
- }
567
-
568
- ::-webkit-scrollbar-thumb {
569
- background: var(--trie-border);
570
- border-radius: 4px;
571
- }
572
-
573
- ::-webkit-scrollbar-thumb:hover {
574
- background: var(--trie-text-muted);
575
- }
576
-
577
- /* Utilities */
578
- .hidden { display: none !important; }
579
- .mt-2 { margin-top: 8px; }
580
- .mt-4 { margin-top: 16px; }
581
- .mb-2 { margin-bottom: 8px; }
582
- .mb-4 { margin-bottom: 16px; }
583
- .p-2 { padding: 8px; }
584
- .p-4 { padding: 16px; }
585
- .truncate {
586
- overflow: hidden;
587
- text-overflow: ellipsis;
588
- white-space: nowrap;
589
- }
590
-
591
- /* Tree View Styles */
592
- .tree-section {
593
- margin-bottom: 12px;
594
- }
595
-
596
- .tree-section-header {
597
- user-select: none;
598
- transition: background 0.15s ease;
599
- }
600
-
601
- .tree-section-header:hover {
602
- background: rgba(255, 255, 255, 0.05) !important;
603
- }
604
-
605
- .tree-item {
606
- transition: background 0.15s ease;
607
- margin-bottom: 2px;
608
- }
609
-
610
- .tree-item:hover {
611
- background: rgba(255, 255, 255, 0.05) !important;
612
- }
613
-
614
- /* Memory Tree specific */
615
- .memory-tree {
616
- font-family: var(--font-mono);
617
- font-size: 12px;
618
- line-height: 1.6;
619
- }
620
-
621
- .memory-tree-indent {
622
- display: inline-block;
623
- width: 24px;
624
- }
625
-
626
- .memory-tree-bar {
627
- display: inline-flex;
628
- align-items: center;
629
- height: 16px;
630
- margin-left: 8px;
631
- }
632
-
633
- .memory-tree-bar-filled {
634
- height: 8px;
635
- background: var(--trie-primary);
636
- border-radius: 4px;
637
- transition: width 0.3s ease;
638
- }
639
-
640
- .memory-tree-bar-empty {
641
- height: 8px;
642
- background: var(--trie-border);
643
- border-radius: 4px;
644
- flex: 1;
645
- }
646
-
647
- /* Chat App Styles */
648
- .chat-container {
649
- display: flex;
650
- flex-direction: column;
651
- height: calc(100vh - 120px);
652
- max-height: 800px;
653
- margin-top: 16px;
654
- }
655
-
656
- .messages-container {
657
- flex: 1;
658
- overflow-y: auto;
659
- padding: 16px;
660
- border: 1px solid var(--trie-border);
661
- border-radius: var(--radius) var(--radius) 0 0;
662
- background: var(--trie-surface);
663
- min-height: 400px;
664
- }
665
-
666
- .message {
667
- margin-bottom: 16px;
668
- padding: 12px 16px;
669
- border-radius: var(--radius);
670
- background: var(--trie-bg);
671
- border: 1px solid var(--trie-border);
672
- }
673
-
674
- .message.user-message {
675
- margin-left: 20%;
676
- background: rgba(88, 166, 255, 0.1);
677
- border-color: rgba(88, 166, 255, 0.3);
678
- }
679
-
680
- .message.assistant-message {
681
- margin-right: 20%;
682
- }
683
-
684
- .message-header {
685
- display: flex;
686
- justify-content: space-between;
687
- margin-bottom: 8px;
688
- font-size: 12px;
689
- color: var(--trie-text-muted);
690
- }
691
-
692
- .message-author {
693
- font-weight: 600;
694
- }
695
-
696
- .message-content {
697
- line-height: 1.6;
698
- white-space: pre-wrap;
699
- word-wrap: break-word;
700
- }
701
-
702
- .message-content pre {
703
- background: var(--trie-surface);
704
- border: 1px solid var(--trie-border);
705
- border-radius: var(--radius);
706
- padding: 12px;
707
- margin: 8px 0;
708
- overflow-x: auto;
709
- font-family: var(--font-mono);
710
- font-size: 12px;
711
- }
712
-
713
- .message-content code {
714
- font-family: var(--font-mono);
715
- font-size: 12px;
716
- background: rgba(110, 118, 129, 0.2);
717
- padding: 2px 6px;
718
- border-radius: 4px;
719
- }
720
-
721
- .message-content pre code {
722
- background: none;
723
- padding: 0;
724
- }
725
-
726
- .typing-indicator {
727
- display: flex;
728
- gap: 4px;
729
- align-items: center;
730
- }
731
-
732
- .typing-indicator span {
733
- width: 8px;
734
- height: 8px;
735
- border-radius: 50%;
736
- background: var(--trie-text-muted);
737
- animation: typing 1.4s infinite ease-in-out;
738
- }
739
-
740
- .typing-indicator span:nth-child(1) { animation-delay: 0s; }
741
- .typing-indicator span:nth-child(2) { animation-delay: 0.2s; }
742
- .typing-indicator span:nth-child(3) { animation-delay: 0.4s; }
743
-
744
- @keyframes typing {
745
- 0%, 80%, 100% {
746
- opacity: 0.3;
747
- transform: scale(0.8);
748
- }
749
- 40% {
750
- opacity: 1;
751
- transform: scale(1);
752
- }
753
- }
754
-
755
- .tool-calls {
756
- margin-bottom: 12px;
757
- padding: 12px;
758
- background: var(--trie-surface);
759
- border: 1px solid var(--trie-border);
760
- border-radius: var(--radius);
761
- font-family: var(--font-mono);
762
- font-size: 12px;
763
- }
764
-
765
- .tool-call {
766
- display: flex;
767
- gap: 8px;
768
- margin-bottom: 4px;
769
- }
770
-
771
- .tool-call:last-child {
772
- margin-bottom: 0;
773
- }
774
-
775
- .tool-name {
776
- color: var(--trie-primary);
777
- font-weight: 600;
778
- }
779
-
780
- .tool-input {
781
- color: var(--trie-text-muted);
782
- }
783
-
784
- .pending-fix {
785
- margin-top: 12px;
786
- padding: 16px;
787
- background: rgba(210, 153, 34, 0.1);
788
- border: 1px solid rgba(210, 153, 34, 0.3);
789
- border-radius: var(--radius);
790
- }
791
-
792
- .fix-header {
793
- margin-bottom: 12px;
794
- color: var(--trie-warning);
795
- }
796
-
797
- .fix-details p {
798
- margin-bottom: 8px;
799
- font-size: 14px;
800
- }
801
-
802
- .fix-actions {
803
- display: flex;
804
- gap: 8px;
805
- margin-top: 12px;
806
- }
807
-
808
- .chat-input-container {
809
- background: var(--trie-surface);
810
- border: 1px solid var(--trie-border);
811
- border-top: none;
812
- border-radius: 0 0 var(--radius) var(--radius);
813
- padding: 16px;
814
- flex-shrink: 0;
815
- }
816
-
817
- .input-wrapper {
818
- display: flex;
819
- gap: 12px;
820
- align-items: flex-end;
821
- }
822
-
823
- .chat-input {
824
- flex: 1;
825
- min-height: 60px;
826
- max-height: 120px;
827
- padding: 12px;
828
- font-size: 14px;
829
- line-height: 1.5;
830
- border: 1px solid var(--trie-border);
831
- border-radius: var(--radius);
832
- background: var(--trie-bg);
833
- color: var(--trie-text);
834
- resize: none;
835
- font-family: var(--font-sans);
836
- }
837
-
838
- .chat-input:focus {
839
- outline: none;
840
- border-color: var(--trie-primary);
841
- }
842
-
843
- .chat-input::placeholder {
844
- color: var(--trie-text-muted);
845
- }
846
-
847
- .send-button {
848
- padding: 12px 24px;
849
- font-size: 14px;
850
- font-weight: 600;
851
- border: none;
852
- border-radius: var(--radius);
853
- background: var(--trie-primary);
854
- color: #fff;
855
- cursor: pointer;
856
- transition: all 0.15s ease;
857
- flex-shrink: 0;
858
- height: fit-content;
859
- }
860
-
861
- .send-button:hover:not(:disabled) {
862
- background: rgba(88, 166, 255, 0.9);
863
- }
864
-
865
- .send-button:disabled {
866
- opacity: 0.5;
867
- cursor: not-allowed;
868
- }
869
-
870
- .input-help {
871
- margin-top: 8px;
872
- font-size: 12px;
873
- color: var(--trie-text-muted);
874
- text-align: center;
875
- }
876
-
877
- .app-header {
878
- margin-bottom: 0;
879
- }
880
-
881
- .app-header h1 {
882
- margin-bottom: 4px;
883
- }
884
-
885
- .app-header p {
886
- color: var(--trie-text-muted);
887
- margin-bottom: 0;
888
- }
889
-
890
- </style>
891
- </head>
892
- <body>
893
- <div id="app" class="container"></div>
894
- <script type="module">
895
- var g=Object.defineProperty;var m=(n,e,t)=>e in n?g(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var l=(n,e,t)=>m(n,typeof e!="symbol"?e+"":e,t);function v(n,e,t){let a=document.createElement(n);if(e)for(let[s,i]of Object.entries(e))s==="className"?a.className=String(i):typeof i=="boolean"?i&&a.setAttribute(s,""):a.setAttribute(s,String(i));if(t)for(let s of t)typeof s=="string"?a.appendChild(document.createTextNode(s)):a.appendChild(s);return a}var r=v;function h(n){return r("div",{className:"loading"},[r("div",{className:"spinner"}),n?r("span",{className:"ml-2"},[n]):document.createTextNode("")])}function p(n,e="Loading..."){n.innerHTML="",n.appendChild(h(e))}function c(n,e){n.innerHTML="",n.appendChild(r("div",{className:"error-state"},[r("div",{className:"error-icon"},["\u26A0\uFE0F"]),r("p",{className:"error-message"},[e])]))}function u(n){document.addEventListener("DOMContentLoaded",()=>{let e=document.getElementById("app");if(!e){console.error("App container not found");return}try{new n(e)}catch(t){c(e,`Failed to initialize app: ${t}`)}})}var d=class{constructor(e){l(this,"container");l(this,"goals",[]);this.container=e,this.init()}async init(){await this.loadData(),this.render(),this.setupEventListeners()}async loadData(){try{p(this.container,"Loading goals..."),this.goals=[{id:"goal-1",description:"Eliminate all emoji usage from codebase",type:"reduction",status:"active",currentValue:2,target:0,startValue:15,category:"quality",autoGenerated:!1,createdAt:new Date(Date.now()-864e5*3).toISOString(),updatedAt:new Date().toISOString()},{id:"goal-2",description:"Increase test coverage to 85%",type:"increase",status:"active",currentValue:72,target:85,startValue:65,category:"coverage",autoGenerated:!0,createdAt:new Date(Date.now()-864e5).toISOString(),updatedAt:new Date().toISOString()},{id:"goal-3",description:"Remove all TODO comments",type:"reduction",status:"achieved",currentValue:0,target:0,startValue:8,category:"quality",autoGenerated:!1,createdAt:new Date(Date.now()-864e5*7).toISOString(),updatedAt:new Date(Date.now()-864e5*2).toISOString(),achievedAt:new Date(Date.now()-864e5*2).toISOString()}]}catch(e){c(this.container,`Failed to load goals: ${e}`)}}render(){let e=this.goals.filter(i=>i.status==="active"),t=this.goals.filter(i=>i.status==="achieved"),a=this.goals.filter(i=>i.status==="rejected"),s=`
896
- <div class="app-header">
897
- <h1>Goals & Progress</h1>
898
- <p>Track your code quality and improvement goals</p>
899
- </div>
900
-
901
- <div class="stats-bar">
902
- <div class="stat">
903
- <span class="stat-number">${e.length}</span>
904
- <span class="stat-label">Active Goals</span>
905
- </div>
906
- <div class="stat">
907
- <span class="stat-number">${t.length}</span>
908
- <span class="stat-label">Achieved</span>
909
- </div>
910
- <div class="stat">
911
- <span class="stat-number">${Math.round(this.calculateOverallProgress())}%</span>
912
- <span class="stat-label">Overall Progress</span>
913
- </div>
914
- </div>
915
-
916
- ${this.renderGoalsList("Active Goals",e,"active")}
917
- ${t.length>0?this.renderGoalsList("Achieved Goals",t,"achieved"):""}
918
- ${a.length>0?this.renderGoalsList("Other Goals",a,"other"):""}
919
- `;this.container.innerHTML=s}renderGoalsList(e,t,a){return t.length===0?"":`
920
- <div class="section">
921
- <h2 class="section-title">${e}</h2>
922
- <div class="goals-list">
923
- ${t.map(s=>this.renderGoalCard(s,a)).join("")}
924
- </div>
925
- </div>
926
- `}renderGoalCard(e,t){let a=this.calculateGoalProgress(e),s=this.createProgressBar(a);return`
927
- <div class="goal-card ${t==="achieved"?"goal-achieved":t==="active"?"goal-active":"goal-other"}" data-goal-id="${e.id}">
928
- <div class="goal-header">
929
- <span class="goal-title">${e.description}</span>
930
- <div class="goal-meta">
931
- ${e.category?`<span class="goal-category">${e.category}</span>`:""}
932
- ${e.autoGenerated?'<span class="goal-auto">auto</span>':""}
933
- </div>
934
- </div>
935
-
936
- <div class="goal-progress">
937
- <div class="progress-bar-container">
938
- ${s}
939
- <span class="progress-text">${a}%</span>
940
- </div>
941
- <div class="progress-details">
942
- Current: ${e.currentValue} | Target: ${e.target}
943
- ${e.startValue!==void 0?` | Start: ${e.startValue}`:""}
944
- </div>
945
- </div>
946
-
947
- <div class="goal-footer">
948
- <span class="goal-date">
949
- ${t==="achieved"&&e.achievedAt?`Achieved ${this.formatTimeAgo(e.achievedAt)}`:`Updated ${this.formatTimeAgo(e.updatedAt)}`}
950
- </span>
951
- ${t==="active"?`
952
- <div class="goal-actions">
953
- <button class="btn btn-sm" onclick="checkGoal('${e.id}')">Check Now</button>
954
- <button class="btn btn-sm btn-success" onclick="completeGoal('${e.id}')">Complete</button>
955
- </div>
956
- `:""}
957
- </div>
958
- </div>
959
- `}calculateGoalProgress(e){if(e.target<=0)return 0;let t=e.startValue??e.currentValue;if(t>e.target){let a=t-e.target,s=t-e.currentValue;return Math.min(100,Math.max(0,Math.round(s/a*100)))}return Math.min(100,Math.max(0,Math.round(e.currentValue/e.target*100)))}calculateOverallProgress(){let e=this.goals.filter(a=>a.status==="active");return e.length===0?100:e.reduce((a,s)=>a+this.calculateGoalProgress(s),0)/e.length}createProgressBar(e){return`
960
- <div class="progress-bar">
961
- <div class="progress-fill" style="width: ${e}%"></div>
962
- </div>
963
- `}formatTimeAgo(e){let t=Date.now(),a=new Date(e).getTime(),s=t-a,i=Math.floor(s/(1e3*60));if(i<60)return`${i}m ago`;let o=Math.floor(i/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}setupEventListeners(){this.container.addEventListener("click",e=>{let a=e.target.closest(".goal-card");if(a){let s=a.getAttribute("data-goal-id"),i=this.goals.find(o=>o.id===s)}}),window.checkGoal=e=>{console.log("Checking goal:",e)},window.completeGoal=e=>{console.log("Completing goal:",e)}}};u(d);
964
-
965
- </script>
966
- </body>
967
- </html>