@triedotdev/mcp 1.0.168 → 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 (149) hide show
  1. package/README.md +54 -500
  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 -3100
  8. package/dist/cli/main.js.map +1 -1
  9. package/dist/index.js +2 -36
  10. package/dist/index.js.map +1 -1
  11. package/dist/server/mcp-server.js +2 -36
  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-43X6JBEM.js +0 -36
  20. package/dist/chunk-43X6JBEM.js.map +0 -1
  21. package/dist/chunk-4MXH2ZPT.js +0 -1827
  22. package/dist/chunk-4MXH2ZPT.js.map +0 -1
  23. package/dist/chunk-575YT2SD.js +0 -737
  24. package/dist/chunk-575YT2SD.js.map +0 -1
  25. package/dist/chunk-5BRRRTN6.js +0 -354
  26. package/dist/chunk-5BRRRTN6.js.map +0 -1
  27. package/dist/chunk-6NLHFIYA.js +0 -344
  28. package/dist/chunk-6NLHFIYA.js.map +0 -1
  29. package/dist/chunk-7WITSO22.js +0 -824
  30. package/dist/chunk-7WITSO22.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-FQ45QP5A.js +0 -361
  38. package/dist/chunk-FQ45QP5A.js.map +0 -1
  39. package/dist/chunk-G2TGF6TR.js +0 -573
  40. package/dist/chunk-G2TGF6TR.js.map +0 -1
  41. package/dist/chunk-GTKYBOXL.js +0 -700
  42. package/dist/chunk-GTKYBOXL.js.map +0 -1
  43. package/dist/chunk-HVCDY3AK.js +0 -850
  44. package/dist/chunk-HVCDY3AK.js.map +0 -1
  45. package/dist/chunk-JVMBCWKS.js +0 -348
  46. package/dist/chunk-JVMBCWKS.js.map +0 -1
  47. package/dist/chunk-KDHN2ZQE.js +0 -313
  48. package/dist/chunk-KDHN2ZQE.js.map +0 -1
  49. package/dist/chunk-LQIMKE3P.js +0 -12524
  50. package/dist/chunk-LQIMKE3P.js.map +0 -1
  51. package/dist/chunk-ME2OERF5.js +0 -345
  52. package/dist/chunk-ME2OERF5.js.map +0 -1
  53. package/dist/chunk-MRHKX5M5.js +0 -662
  54. package/dist/chunk-MRHKX5M5.js.map +0 -1
  55. package/dist/chunk-OBQ74FOU.js +0 -27
  56. package/dist/chunk-OBQ74FOU.js.map +0 -1
  57. package/dist/chunk-OMR4YCBS.js +0 -987
  58. package/dist/chunk-OMR4YCBS.js.map +0 -1
  59. package/dist/chunk-Q5EKA5YA.js +0 -254
  60. package/dist/chunk-Q5EKA5YA.js.map +0 -1
  61. package/dist/chunk-Q63FFI6D.js +0 -132
  62. package/dist/chunk-Q63FFI6D.js.map +0 -1
  63. package/dist/chunk-SY6KQG44.js +0 -983
  64. package/dist/chunk-SY6KQG44.js.map +0 -1
  65. package/dist/chunk-T63OHG4Q.js +0 -440
  66. package/dist/chunk-T63OHG4Q.js.map +0 -1
  67. package/dist/chunk-TN5WEKWI.js +0 -173
  68. package/dist/chunk-TN5WEKWI.js.map +0 -1
  69. package/dist/chunk-VUL52BQL.js +0 -402
  70. package/dist/chunk-VUL52BQL.js.map +0 -1
  71. package/dist/chunk-VVITXIHN.js +0 -189
  72. package/dist/chunk-VVITXIHN.js.map +0 -1
  73. package/dist/chunk-WCN7S3EI.js +0 -14
  74. package/dist/chunk-WCN7S3EI.js.map +0 -1
  75. package/dist/chunk-XE6KQRKZ.js +0 -816
  76. package/dist/chunk-XE6KQRKZ.js.map +0 -1
  77. package/dist/chunk-XPZZFPBZ.js +0 -491
  78. package/dist/chunk-XPZZFPBZ.js.map +0 -1
  79. package/dist/chunk-XTFWT2XM.js +0 -727
  80. package/dist/chunk-XTFWT2XM.js.map +0 -1
  81. package/dist/chunk-YDHUCDHM.js +0 -4011
  82. package/dist/chunk-YDHUCDHM.js.map +0 -1
  83. package/dist/chunk-YZ6Y2H3P.js +0 -1289
  84. package/dist/chunk-YZ6Y2H3P.js.map +0 -1
  85. package/dist/chunk-ZJF5FTBX.js +0 -1396
  86. package/dist/chunk-ZJF5FTBX.js.map +0 -1
  87. package/dist/chunk-ZV2K6M7T.js +0 -74
  88. package/dist/chunk-ZV2K6M7T.js.map +0 -1
  89. package/dist/cli/create-agent.d.ts +0 -1
  90. package/dist/cli/create-agent.js +0 -1050
  91. package/dist/cli/create-agent.js.map +0 -1
  92. package/dist/cli/yolo-daemon.d.ts +0 -1
  93. package/dist/cli/yolo-daemon.js +0 -423
  94. package/dist/cli/yolo-daemon.js.map +0 -1
  95. package/dist/client-NJPZE5JT.js +0 -28
  96. package/dist/client-NJPZE5JT.js.map +0 -1
  97. package/dist/codebase-index-VAPF32XX.js +0 -12
  98. package/dist/codebase-index-VAPF32XX.js.map +0 -1
  99. package/dist/fast-analyzer-XXYMOXRK.js +0 -216
  100. package/dist/fast-analyzer-XXYMOXRK.js.map +0 -1
  101. package/dist/git-EO5SRFMN.js +0 -28
  102. package/dist/git-EO5SRFMN.js.map +0 -1
  103. package/dist/github-ingester-ZOKK6GRS.js +0 -11
  104. package/dist/github-ingester-ZOKK6GRS.js.map +0 -1
  105. package/dist/goal-manager-YOB7VWK7.js +0 -25
  106. package/dist/goal-manager-YOB7VWK7.js.map +0 -1
  107. package/dist/goal-validator-ULKIBDPX.js +0 -24
  108. package/dist/goal-validator-ULKIBDPX.js.map +0 -1
  109. package/dist/graph-B3NA4S7I.js +0 -10
  110. package/dist/graph-B3NA4S7I.js.map +0 -1
  111. package/dist/hypothesis-7BFFT5JY.js +0 -23
  112. package/dist/hypothesis-7BFFT5JY.js.map +0 -1
  113. package/dist/incident-index-EFNUSGWL.js +0 -11
  114. package/dist/incident-index-EFNUSGWL.js.map +0 -1
  115. package/dist/insight-store-EC4PLSAW.js +0 -22
  116. package/dist/insight-store-EC4PLSAW.js.map +0 -1
  117. package/dist/issue-store-ZIRP23EP.js +0 -36
  118. package/dist/issue-store-ZIRP23EP.js.map +0 -1
  119. package/dist/ledger-TWZTGDFA.js +0 -58
  120. package/dist/ledger-TWZTGDFA.js.map +0 -1
  121. package/dist/linear-ingester-XXPAZZRW.js +0 -11
  122. package/dist/linear-ingester-XXPAZZRW.js.map +0 -1
  123. package/dist/output-manager-RVJ37XKA.js +0 -13
  124. package/dist/output-manager-RVJ37XKA.js.map +0 -1
  125. package/dist/parse-goal-violation-SACGFG3C.js +0 -8
  126. package/dist/parse-goal-violation-SACGFG3C.js.map +0 -1
  127. package/dist/pattern-discovery-F7LU5K6E.js +0 -8
  128. package/dist/pattern-discovery-F7LU5K6E.js.map +0 -1
  129. package/dist/progress-SRQ2V3BP.js +0 -18
  130. package/dist/progress-SRQ2V3BP.js.map +0 -1
  131. package/dist/project-state-AHPA77SM.js +0 -28
  132. package/dist/project-state-AHPA77SM.js.map +0 -1
  133. package/dist/sync-M2FSWPBC.js +0 -12
  134. package/dist/sync-M2FSWPBC.js.map +0 -1
  135. package/dist/terminal-spawn-5YXDMUCF.js +0 -157
  136. package/dist/terminal-spawn-5YXDMUCF.js.map +0 -1
  137. package/dist/tiered-storage-Z3YCR465.js +0 -12
  138. package/dist/tiered-storage-Z3YCR465.js.map +0 -1
  139. package/dist/trie-agent-3YDPEGHJ.js +0 -28
  140. package/dist/trie-agent-3YDPEGHJ.js.map +0 -1
  141. package/dist/ui/chat.html +0 -1014
  142. package/dist/ui/goals.html +0 -967
  143. package/dist/ui/hypotheses.html +0 -1011
  144. package/dist/ui/ledger.html +0 -954
  145. package/dist/ui/nudges.html +0 -995
  146. package/dist/vibe-code-signatures-F6URTBW3.js +0 -16
  147. package/dist/vibe-code-signatures-F6URTBW3.js.map +0 -1
  148. package/dist/vulnerability-signatures-T7SKHORW.js +0 -18
  149. package/dist/vulnerability-signatures-T7SKHORW.js.map +0 -1
@@ -1,1011 +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>Hypotheses - 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 v=(a,e,t)=>e in a?g(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var c=(a,e,t)=>v(a,typeof e!="symbol"?e+"":e,t);function h(a,e,t){let i=document.createElement(a);if(e)for(let[s,n]of Object.entries(e))s==="className"?i.className=String(n):typeof n=="boolean"?n&&i.setAttribute(s,""):i.setAttribute(s,String(n));if(t)for(let s of t)typeof s=="string"?i.appendChild(document.createTextNode(s)):i.appendChild(s);return i}var o=h;function m(a){return o("div",{className:"loading"},[o("div",{className:"spinner"}),a?o("span",{className:"ml-2"},[a]):document.createTextNode("")])}function p(a,e="Loading..."){a.innerHTML="",a.appendChild(m(e))}function d(a,e){a.innerHTML="",a.appendChild(o("div",{className:"error-state"},[o("div",{className:"error-icon"},["\u26A0\uFE0F"]),o("p",{className:"error-message"},[e])]))}function u(a){document.addEventListener("DOMContentLoaded",()=>{let e=document.getElementById("app");if(!e){console.error("App container not found");return}try{new a(e)}catch(t){d(e,`Failed to initialize app: ${t}`)}})}var l=class{constructor(e){c(this,"container");c(this,"hypotheses",[]);c(this,"selectedHypothesis",null);c(this,"viewMode","list");this.container=e,this.init()}async init(){await this.loadData(),this.render(),this.setupEventListeners()}async loadData(){try{p(this.container,"Loading hypotheses..."),this.hypotheses=[{id:"hyp-1",statement:"Reducing code complexity in the auth module will decrease bug reports by 40%",confidence:.7,status:"testing",evidence:[{id:"ev-1",description:"Complexity metric dropped from 15 to 8 after refactoring",type:"supporting",timestamp:new Date(Date.now()-864e5).toISOString(),source:"static analysis",confidence:.8},{id:"ev-2",description:"No new auth-related bugs reported in last 2 weeks",type:"supporting",timestamp:new Date(Date.now()-864e5*3).toISOString(),source:"bug tracking",confidence:.6}],createdAt:new Date(Date.now()-864e5*14).toISOString(),updatedAt:new Date(Date.now()-864e5).toISOString(),testCriteria:"Track bug reports for 1 month after refactoring",category:"quality"},{id:"hyp-2",statement:"Adding TypeScript to legacy JavaScript modules will improve development velocity",confidence:.6,status:"proposed",evidence:[],createdAt:new Date(Date.now()-864e5*7).toISOString(),updatedAt:new Date(Date.now()-864e5*7).toISOString(),testCriteria:"Measure feature delivery time before and after TypeScript adoption",category:"productivity"},{id:"hyp-3",statement:"Daily code reviews reduce critical bugs more than automated testing alone",confidence:.9,status:"validated",evidence:[{id:"ev-3",description:"Critical bug count decreased 60% after implementing daily reviews",type:"supporting",timestamp:new Date(Date.now()-864e5*30).toISOString(),source:"bug tracking analysis",confidence:.9},{id:"ev-4",description:"Code review participation at 95% over 3 months",type:"supporting",timestamp:new Date(Date.now()-864e5*15).toISOString(),source:"git analytics",confidence:.8}],createdAt:new Date(Date.now()-864e5*90).toISOString(),updatedAt:new Date(Date.now()-864e5*5).toISOString(),testCriteria:"Compare bug rates with and without mandatory code reviews",category:"process"}]}catch(e){d(this.container,`Failed to load hypotheses: ${e}`)}}render(){this.viewMode==="detail"&&this.selectedHypothesis?this.renderDetailView():this.renderListView()}renderListView(){let e=this.groupByStatus(),t=this.hypotheses.reduce((n,r)=>n+r.evidence.length,0),i=this.hypotheses.length>0?this.hypotheses.reduce((n,r)=>n+r.confidence,0)/this.hypotheses.length:0,s=`
896
- <div class="app-header">
897
- <h1>Hypotheses</h1>
898
- <p>Track and validate development theories with evidence-based reasoning</p>
899
- </div>
900
-
901
- <div class="stats-bar">
902
- <div class="stat">
903
- <span class="stat-number">${this.hypotheses.length}</span>
904
- <span class="stat-label">Total Hypotheses</span>
905
- </div>
906
- <div class="stat">
907
- <span class="stat-number">${t}</span>
908
- <span class="stat-label">Evidence Points</span>
909
- </div>
910
- <div class="stat">
911
- <span class="stat-number">${Math.round(i*100)}%</span>
912
- <span class="stat-label">Avg Confidence</span>
913
- </div>
914
- </div>
915
-
916
- ${Object.entries(e).map(([n,r])=>this.renderStatusSection(n,r)).join("")}
917
- `;this.container.innerHTML=s}renderDetailView(){if(!this.selectedHypothesis)return;let e=this.selectedHypothesis,t=e.evidence.filter(n=>n.type==="supporting"),i=e.evidence.filter(n=>n.type==="contradicting"),s=`
918
- <div class="app-header">
919
- <button class="btn btn-back" onclick="goBackToList()">\u2190 Back to List</button>
920
- <h1>Hypothesis Detail</h1>
921
- </div>
922
-
923
- <div class="hypothesis-detail">
924
- <div class="hypothesis-header">
925
- <h2>${e.statement}</h2>
926
- <div class="hypothesis-meta">
927
- <span class="status-badge status-${e.status}">${e.status}</span>
928
- <span class="confidence-badge">Confidence: ${Math.round(e.confidence*100)}%</span>
929
- ${e.category?`<span class="category-tag">${e.category}</span>`:""}
930
- </div>
931
- </div>
932
-
933
- <div class="hypothesis-info">
934
- <div class="info-section">
935
- <h3>Test Criteria</h3>
936
- <p>${e.testCriteria}</p>
937
- </div>
938
-
939
- <div class="info-section">
940
- <h3>Timeline</h3>
941
- <p>Created: ${this.formatDate(e.createdAt)}</p>
942
- <p>Last Updated: ${this.formatDate(e.updatedAt)}</p>
943
- </div>
944
- </div>
945
-
946
- <div class="evidence-sections">
947
- <div class="evidence-section">
948
- <h3>Supporting Evidence (${t.length})</h3>
949
- ${t.length===0?'<p class="empty-state">No supporting evidence yet</p>':t.map(n=>this.renderEvidenceCard(n)).join("")}
950
- </div>
951
-
952
- <div class="evidence-section">
953
- <h3>Contradicting Evidence (${i.length})</h3>
954
- ${i.length===0?'<p class="empty-state">No contradicting evidence yet</p>':i.map(n=>this.renderEvidenceCard(n)).join("")}
955
- </div>
956
- </div>
957
-
958
- <div class="hypothesis-actions">
959
- <button class="btn btn-primary" onclick="addEvidence('${e.id}')">Add Evidence</button>
960
- <button class="btn" onclick="updateStatus('${e.id}')">Update Status</button>
961
- </div>
962
- </div>
963
- `;this.container.innerHTML=s}renderStatusSection(e,t){return t.length===0?"":`
964
- <div class="section">
965
- <h2 class="section-title">${{proposed:"Proposed",testing:"Under Testing",validated:"Validated",refuted:"Refuted",inconclusive:"Inconclusive"}[e]||e} (${t.length})</h2>
966
- <div class="hypotheses-list">
967
- ${t.map(s=>this.renderHypothesisCard(s)).join("")}
968
- </div>
969
- </div>
970
- `}renderHypothesisCard(e){let t=e.confidence>=.8?"high":e.confidence>=.6?"medium":"low";return`
971
- <div class="hypothesis-card" data-hypothesis-id="${e.id}" onclick="selectHypothesis('${e.id}')">
972
- <div class="hypothesis-header">
973
- <h3 class="hypothesis-title">${e.statement}</h3>
974
- <div class="hypothesis-meta">
975
- <span class="confidence-indicator confidence-${t}">
976
- ${Math.round(e.confidence*100)}%
977
- </span>
978
- ${e.category?`<span class="category-tag">${e.category}</span>`:""}
979
- </div>
980
- </div>
981
-
982
- <div class="hypothesis-info">
983
- <div class="evidence-count">
984
- ${e.evidence.length} evidence point${e.evidence.length!==1?"s":""}
985
- </div>
986
- <div class="last-updated">
987
- Updated ${this.formatTimeAgo(e.updatedAt)}
988
- </div>
989
- </div>
990
-
991
- <div class="test-criteria">
992
- <strong>Test Criteria:</strong> ${e.testCriteria}
993
- </div>
994
- </div>
995
- `}renderEvidenceCard(e){return`
996
- <div class="evidence-card ${e.type==="supporting"?"evidence-supporting":"evidence-contradicting"}">
997
- <div class="evidence-header">
998
- <span class="evidence-type">${e.type}</span>
999
- <span class="evidence-confidence">${Math.round(e.confidence*100)}%</span>
1000
- </div>
1001
- <p class="evidence-description">${e.description}</p>
1002
- <div class="evidence-meta">
1003
- <span>Source: ${e.source}</span>
1004
- <span>${this.formatTimeAgo(e.timestamp)}</span>
1005
- </div>
1006
- </div>
1007
- `}groupByStatus(){let e={};return["testing","proposed","validated","refuted","inconclusive"].forEach(i=>{e[i]=[]}),this.hypotheses.forEach(i=>{e[i.status]||(e[i.status]=[]);let s=e[i.status];s&&s.push(i)}),e}formatTimeAgo(e){let t=Date.now(),i=new Date(e).getTime(),s=t-i,n=Math.floor(s/(1e3*60*60*24));if(n>0)return`${n}d ago`;let r=Math.floor(s/(1e3*60*60));return r>0?`${r}h ago`:`${Math.floor(s/(1e3*60))}m ago`}formatDate(e){return new Date(e).toLocaleDateString()}setupEventListeners(){window.selectHypothesis=e=>{let t=this.hypotheses.find(i=>i.id===e);t&&(this.selectedHypothesis=t,this.viewMode="detail",this.render(),this.setupEventListeners())},window.goBackToList=()=>{this.viewMode="list",this.selectedHypothesis=null,this.render(),this.setupEventListeners()},window.addEvidence=e=>{console.log("Adding evidence for hypothesis:",e)},window.updateStatus=e=>{console.log("Updating status for hypothesis:",e)}}};u(l);
1008
-
1009
- </script>
1010
- </body>
1011
- </html>