@triedotdev/mcp 1.0.136 → 1.0.138

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 (105) hide show
  1. package/README.md +6 -6
  2. package/dist/{autonomy-config-QA6ATWLJ.js → autonomy-config-TZ6HF4FA.js} +3 -3
  3. package/dist/{chat-store-HFOOWZYN.js → chat-store-OJLJCJFI.js} +3 -3
  4. package/dist/{chunk-DFPVUMVE.js → chunk-23RJT5WT.js} +5 -4
  5. package/dist/chunk-23RJT5WT.js.map +1 -0
  6. package/dist/{chunk-4YJ6KLGI.js → chunk-3MUCUZ46.js} +8 -8
  7. package/dist/chunk-3MUCUZ46.js.map +1 -0
  8. package/dist/{chunk-6VIMBFUZ.js → chunk-3RRXWX3V.js} +21 -17
  9. package/dist/chunk-3RRXWX3V.js.map +1 -0
  10. package/dist/{chunk-WHIQAGB7.js → chunk-4C67GV3O.js} +2 -2
  11. package/dist/{chunk-WS6OA7H6.js → chunk-4MJ52WBH.js} +2 -3
  12. package/dist/chunk-4MJ52WBH.js.map +1 -0
  13. package/dist/{chunk-AJ34GCMD.js → chunk-67GSG2ST.js} +41 -38
  14. package/dist/chunk-67GSG2ST.js.map +1 -0
  15. package/dist/{chunk-UHX4462X.js → chunk-6LLH3TBZ.js} +24 -25
  16. package/dist/chunk-6LLH3TBZ.js.map +1 -0
  17. package/dist/{chunk-DFHMB44X.js → chunk-D3AS5LY7.js} +6 -10
  18. package/dist/chunk-D3AS5LY7.js.map +1 -0
  19. package/dist/{chunk-6OUWNVLX.js → chunk-EDDT4ZIH.js} +8 -8
  20. package/dist/chunk-EDDT4ZIH.js.map +1 -0
  21. package/dist/{chunk-Z4DN527J.js → chunk-FG467PDD.js} +156 -39
  22. package/dist/chunk-FG467PDD.js.map +1 -0
  23. package/dist/{chunk-T4THB2OR.js → chunk-FOCXXIXY.js} +49 -28
  24. package/dist/chunk-FOCXXIXY.js.map +1 -0
  25. package/dist/{goal-validator-PDKYZSNP.js → chunk-GFFUDJMK.js} +97 -40
  26. package/dist/chunk-GFFUDJMK.js.map +1 -0
  27. package/dist/{chunk-ZEXMMTIQ.js → chunk-J5EMP4XW.js} +2 -2
  28. package/dist/{chunk-UHMMANC2.js → chunk-LT6VUZG2.js} +21 -18
  29. package/dist/chunk-LT6VUZG2.js.map +1 -0
  30. package/dist/{chunk-55CBWOEZ.js → chunk-QSWUPSLK.js} +2 -2
  31. package/dist/{chunk-45Y5TLQZ.js → chunk-SH7H3WRU.js} +3 -6
  32. package/dist/chunk-SH7H3WRU.js.map +1 -0
  33. package/dist/{chunk-VRLMTOB6.js → chunk-TIMIKBY2.js} +1 -1
  34. package/dist/chunk-TIMIKBY2.js.map +1 -0
  35. package/dist/{chunk-POHBQUG7.js → chunk-X3F5QDER.js} +1224 -448
  36. package/dist/chunk-X3F5QDER.js.map +1 -0
  37. package/dist/{chunk-O6OTJI3W.js → chunk-Y32FM3MR.js} +2 -2
  38. package/dist/{chunk-G5PRBQIQ.js → chunk-YOKQ25IW.js} +102 -82
  39. package/dist/chunk-YOKQ25IW.js.map +1 -0
  40. package/dist/{chunk-JAKMZI5S.js → chunk-Z2P4WST6.js} +291 -180
  41. package/dist/chunk-Z2P4WST6.js.map +1 -0
  42. package/dist/cli/create-agent.js +1 -1
  43. package/dist/cli/main.js +113 -86
  44. package/dist/cli/main.js.map +1 -1
  45. package/dist/cli/yolo-daemon.js +19 -19
  46. package/dist/cli/yolo-daemon.js.map +1 -1
  47. package/dist/{client-BZHI675W.js → client-JTU5TRLB.js} +3 -3
  48. package/dist/{codebase-index-CR6Q2HEI.js → codebase-index-FNJ4GCBE.js} +3 -3
  49. package/dist/{goal-manager-FAK7H4RR.js → goal-manager-6BJQ36AH.js} +7 -8
  50. package/dist/goal-validator-GISXYANK.js +22 -0
  51. package/dist/{graph-PAUZ5EMP.js → graph-X2FMRQLG.js} +3 -3
  52. package/dist/{hypothesis-L5446W36.js → hypothesis-K3KQJOXJ.js} +7 -8
  53. package/dist/{incident-index-ZCDSJ42L.js → incident-index-BWW2UEY7.js} +3 -3
  54. package/dist/index.js +343 -288
  55. package/dist/index.js.map +1 -1
  56. package/dist/{insight-store-F5KDBY5Y.js → insight-store-A5XXMFD6.js} +6 -6
  57. package/dist/issue-store-BO5OWLJW.js +32 -0
  58. package/dist/{output-manager-BOTMXSND.js → output-manager-DZO5LGSG.js} +2 -2
  59. package/dist/{tiered-storage-QW2G7GSG.js → tiered-storage-VZL7KK64.js} +3 -3
  60. package/dist/trie-agent-XMSGMD7E.js +26 -0
  61. package/dist/trie-agent-XMSGMD7E.js.map +1 -0
  62. package/dist/ui/chat.html +260 -67
  63. package/dist/ui/goals.html +246 -3
  64. package/dist/ui/hypotheses.html +248 -5
  65. package/dist/ui/ledger.html +252 -9
  66. package/dist/ui/nudges.html +244 -1
  67. package/package.json +1 -1
  68. package/dist/chunk-45Y5TLQZ.js.map +0 -1
  69. package/dist/chunk-4YJ6KLGI.js.map +0 -1
  70. package/dist/chunk-6OUWNVLX.js.map +0 -1
  71. package/dist/chunk-6VIMBFUZ.js.map +0 -1
  72. package/dist/chunk-AJ34GCMD.js.map +0 -1
  73. package/dist/chunk-DFHMB44X.js.map +0 -1
  74. package/dist/chunk-DFPVUMVE.js.map +0 -1
  75. package/dist/chunk-G5PRBQIQ.js.map +0 -1
  76. package/dist/chunk-JAKMZI5S.js.map +0 -1
  77. package/dist/chunk-PEJEYWVR.js +0 -135
  78. package/dist/chunk-PEJEYWVR.js.map +0 -1
  79. package/dist/chunk-POHBQUG7.js.map +0 -1
  80. package/dist/chunk-T4THB2OR.js.map +0 -1
  81. package/dist/chunk-UHMMANC2.js.map +0 -1
  82. package/dist/chunk-UHX4462X.js.map +0 -1
  83. package/dist/chunk-VRLMTOB6.js.map +0 -1
  84. package/dist/chunk-WS6OA7H6.js.map +0 -1
  85. package/dist/chunk-Z4DN527J.js.map +0 -1
  86. package/dist/goal-validator-PDKYZSNP.js.map +0 -1
  87. package/dist/guardian-agent-4RHGIXUD.js +0 -27
  88. package/dist/ledger-WKVJWHBX.js +0 -17
  89. /package/dist/{autonomy-config-QA6ATWLJ.js.map → autonomy-config-TZ6HF4FA.js.map} +0 -0
  90. /package/dist/{chat-store-HFOOWZYN.js.map → chat-store-OJLJCJFI.js.map} +0 -0
  91. /package/dist/{chunk-WHIQAGB7.js.map → chunk-4C67GV3O.js.map} +0 -0
  92. /package/dist/{chunk-ZEXMMTIQ.js.map → chunk-J5EMP4XW.js.map} +0 -0
  93. /package/dist/{chunk-55CBWOEZ.js.map → chunk-QSWUPSLK.js.map} +0 -0
  94. /package/dist/{chunk-O6OTJI3W.js.map → chunk-Y32FM3MR.js.map} +0 -0
  95. /package/dist/{client-BZHI675W.js.map → client-JTU5TRLB.js.map} +0 -0
  96. /package/dist/{codebase-index-CR6Q2HEI.js.map → codebase-index-FNJ4GCBE.js.map} +0 -0
  97. /package/dist/{goal-manager-FAK7H4RR.js.map → goal-manager-6BJQ36AH.js.map} +0 -0
  98. /package/dist/{graph-PAUZ5EMP.js.map → goal-validator-GISXYANK.js.map} +0 -0
  99. /package/dist/{guardian-agent-4RHGIXUD.js.map → graph-X2FMRQLG.js.map} +0 -0
  100. /package/dist/{hypothesis-L5446W36.js.map → hypothesis-K3KQJOXJ.js.map} +0 -0
  101. /package/dist/{incident-index-ZCDSJ42L.js.map → incident-index-BWW2UEY7.js.map} +0 -0
  102. /package/dist/{insight-store-F5KDBY5Y.js.map → insight-store-A5XXMFD6.js.map} +0 -0
  103. /package/dist/{ledger-WKVJWHBX.js.map → issue-store-BO5OWLJW.js.map} +0 -0
  104. /package/dist/{output-manager-BOTMXSND.js.map → output-manager-DZO5LGSG.js.map} +0 -0
  105. /package/dist/{tiered-storage-QW2G7GSG.js.map → tiered-storage-VZL7KK64.js.map} +0 -0
@@ -1,22 +1,22 @@
1
1
  import {
2
- GuardianInsightSchema,
3
2
  InsightDetailsSchema,
3
+ InsightSchema,
4
4
  InsightStore,
5
5
  InsightStoreDataSchema,
6
6
  clearInsightStores,
7
7
  getInsightStore
8
- } from "./chunk-4YJ6KLGI.js";
9
- import "./chunk-WS6OA7H6.js";
8
+ } from "./chunk-3MUCUZ46.js";
9
+ import "./chunk-4MJ52WBH.js";
10
10
  import "./chunk-43X6JBEM.js";
11
- import "./chunk-45Y5TLQZ.js";
11
+ import "./chunk-SH7H3WRU.js";
12
12
  import "./chunk-APMV77PU.js";
13
13
  import "./chunk-DGUM43GV.js";
14
14
  export {
15
- GuardianInsightSchema,
16
15
  InsightDetailsSchema,
16
+ InsightSchema,
17
17
  InsightStore,
18
18
  InsightStoreDataSchema,
19
19
  clearInsightStores,
20
20
  getInsightStore
21
21
  };
22
- //# sourceMappingURL=insight-store-F5KDBY5Y.js.map
22
+ //# sourceMappingURL=insight-store-A5XXMFD6.js.map
@@ -0,0 +1,32 @@
1
+ import {
2
+ autoResolveIssues,
3
+ findSimilarIssues,
4
+ getDailyLogs,
5
+ getIssueHash,
6
+ getMemoryStats,
7
+ getRecentIssues,
8
+ markIssueResolved,
9
+ purgeIssues,
10
+ resolveGoalViolation,
11
+ searchIssues,
12
+ storeIssues
13
+ } from "./chunk-Z2P4WST6.js";
14
+ import "./chunk-4MJ52WBH.js";
15
+ import "./chunk-43X6JBEM.js";
16
+ import "./chunk-SH7H3WRU.js";
17
+ import "./chunk-APMV77PU.js";
18
+ import "./chunk-DGUM43GV.js";
19
+ export {
20
+ autoResolveIssues,
21
+ findSimilarIssues,
22
+ getDailyLogs,
23
+ getIssueHash,
24
+ getMemoryStats,
25
+ getRecentIssues,
26
+ markIssueResolved,
27
+ purgeIssues,
28
+ resolveGoalViolation,
29
+ searchIssues,
30
+ storeIssues
31
+ };
32
+ //# sourceMappingURL=issue-store-BO5OWLJW.js.map
@@ -2,7 +2,7 @@ import {
2
2
  getOutputManager,
3
3
  output,
4
4
  resetOutputManager
5
- } from "./chunk-VRLMTOB6.js";
5
+ } from "./chunk-TIMIKBY2.js";
6
6
  import "./chunk-APMV77PU.js";
7
7
  import "./chunk-DGUM43GV.js";
8
8
  export {
@@ -10,4 +10,4 @@ export {
10
10
  output,
11
11
  resetOutputManager
12
12
  };
13
- //# sourceMappingURL=output-manager-BOTMXSND.js.map
13
+ //# sourceMappingURL=output-manager-DZO5LGSG.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  TieredStorage,
3
3
  getStorage
4
- } from "./chunk-Z4DN527J.js";
5
- import "./chunk-45Y5TLQZ.js";
4
+ } from "./chunk-FG467PDD.js";
5
+ import "./chunk-SH7H3WRU.js";
6
6
  import "./chunk-APMV77PU.js";
7
7
  import "./chunk-DGUM43GV.js";
8
8
  export {
9
9
  TieredStorage,
10
10
  getStorage
11
11
  };
12
- //# sourceMappingURL=tiered-storage-QW2G7GSG.js.map
12
+ //# sourceMappingURL=tiered-storage-VZL7KK64.js.map
@@ -0,0 +1,26 @@
1
+ import {
2
+ TrieAgent,
3
+ getTrieAgent
4
+ } from "./chunk-YOKQ25IW.js";
5
+ import "./chunk-FOCXXIXY.js";
6
+ import "./chunk-67GSG2ST.js";
7
+ import "./chunk-3MUCUZ46.js";
8
+ import "./chunk-6LLH3TBZ.js";
9
+ import "./chunk-Y32FM3MR.js";
10
+ import "./chunk-LT6VUZG2.js";
11
+ import "./chunk-F4NJ4CBP.js";
12
+ import "./chunk-IXO4G4D3.js";
13
+ import "./chunk-6NLHFIYA.js";
14
+ import "./chunk-FG467PDD.js";
15
+ import "./chunk-QSWUPSLK.js";
16
+ import "./chunk-Z2P4WST6.js";
17
+ import "./chunk-4MJ52WBH.js";
18
+ import "./chunk-43X6JBEM.js";
19
+ import "./chunk-SH7H3WRU.js";
20
+ import "./chunk-APMV77PU.js";
21
+ import "./chunk-DGUM43GV.js";
22
+ export {
23
+ TrieAgent,
24
+ getTrieAgent
25
+ };
26
+ //# sourceMappingURL=trie-agent-XMSGMD7E.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/ui/chat.html CHANGED
@@ -644,12 +644,255 @@ h4 { font-size: 14px; }
644
644
  flex: 1;
645
645
  }
646
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
+
647
890
  </style>
648
891
  </head>
649
892
  <body>
650
893
  <div id="app" class="container"></div>
651
894
  <script type="module">
652
- var g=Object.defineProperty;var m=(i,e,t)=>e in i?g(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var o=(i,e,t)=>m(i,typeof e!="symbol"?e+"":e,t);function u(i,e,t){let s=document.createElement(i);if(e)for(let[n,a]of Object.entries(e))n==="className"?s.className=String(a):typeof a=="boolean"?a&&s.setAttribute(n,""):s.setAttribute(n,String(a));if(t)for(let n of t)typeof n=="string"?s.appendChild(document.createTextNode(n)):s.appendChild(n);return s}var r=u;function h(i,e){i.innerHTML="",i.appendChild(r("div",{className:"error-state"},[r("div",{className:"error-icon"},["\u26A0\uFE0F"]),r("p",{className:"error-message"},[e])]))}function c(i){document.addEventListener("DOMContentLoaded",()=>{let e=document.getElementById("app");if(!e){console.error("App container not found");return}try{new i(e)}catch(t){h(e,`Failed to initialize app: ${t}`)}})}var l=class{constructor(e){o(this,"container");o(this,"messages",[]);o(this,"isLoading",!1);o(this,"inputElement",null);this.container=e,this.init()}async init(){await this.loadChatHistory(),this.render(),this.setupEventListeners()}async loadChatHistory(){try{this.messages=[{id:"msg-1",role:"assistant",content:`Hello! I'm Trie, your code guardian assistant. I can help you with:
895
+ var u=Object.defineProperty;var m=(i,e,t)=>e in i?u(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var o=(i,e,t)=>m(i,typeof e!="symbol"?e+"":e,t);function h(i,e,t){let s=document.createElement(i);if(e)for(let[n,r]of Object.entries(e))n==="className"?s.className=String(r):typeof r=="boolean"?r&&s.setAttribute(n,""):s.setAttribute(n,String(r));if(t)for(let n of t)typeof n=="string"?s.appendChild(document.createTextNode(n)):s.appendChild(n);return s}var l=h;function v(i,e){i.innerHTML="",i.appendChild(l("div",{className:"error-state"},[l("div",{className:"error-icon"},["\u26A0\uFE0F"]),l("p",{className:"error-message"},[e])]))}function g(i){document.addEventListener("DOMContentLoaded",()=>{let e=document.getElementById("app");if(!e){console.error("App container not found");return}try{new i(e)}catch(t){v(e,`Failed to initialize app: ${t}`)}})}var c=class{constructor(e){o(this,"container");o(this,"messages",[]);o(this,"isLoading",!1);o(this,"inputElement",null);this.container=e,this.init()}async init(){await this.loadChatHistory(),this.render(),this.setupEventListeners()}async loadChatHistory(){try{this.messages=[{id:"msg-1",role:"assistant",content:`Hello! I'm Trie, your code quality assistant. I can help you with:
653
896
 
654
897
  \u2022 Analyzing your codebase for quality issues
655
898
  \u2022 Checking goal violations and nudges
@@ -749,72 +992,22 @@ Ask me about your code, goals, or any issues you're facing!`,timestamp:Date.now(
749
992
  </div>
750
993
  </div>
751
994
  </div>
752
- `}formatMessageContent(e){return e.replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\*(.*?)\*/g,"<em>$1</em>").replace(/`(.*?)`/g,"<code>$1</code>").replace(/```([\s\S]*?)```/g,"<pre><code>$1</code></pre>").replace(/\n/g,"<br>")}formatToolInput(e){let t=[];for(let[s,n]of Object.entries(e))s!=="directory"&&(Array.isArray(n)?t.push(`${s}: [${n.join(", ")}]`):t.push(`${s}: ${String(n)}`));return t.join(", ")}scrollToBottom(){setTimeout(()=>{let e=this.container.querySelector("#messagesContainer");e&&(e.scrollTop=e.scrollHeight)},100)}async sendMessage(){if(!this.inputElement||this.isLoading)return;let e=this.inputElement.value.trim();if(!e)return;let t={id:`msg-${Date.now()}-user`,role:"user",content:e,timestamp:Date.now()};this.messages.push(t),this.inputElement.value="",this.isLoading=!0,this.render();try{await this.simulateAIResponse(e)}catch(s){this.addErrorMessage(`Failed to get response: ${s}`)}finally{this.isLoading=!1,this.render()}}async simulateAIResponse(e){await new Promise(p=>setTimeout(p,1500));let t="",s,n,a=e.toLowerCase();a.includes("emoji")||a.includes("scan")?(s=[{name:"trie_scan_for_goal_violations",input:{goalId:"emoji-goal"}}],t=`I found 2 emoji violations in your codebase:
753
-
754
- \u26A0\uFE0F src/components/Button.tsx
755
- Goal "Eliminate emoji usage" violated: Found \u{1F680} emoji in comment
756
-
757
- \u26A0\uFE0F src/utils/helpers.ts
758
- Goal "Eliminate emoji usage" violated: Found \u2728 emoji in console.log
759
-
760
- These violations have been recorded and will appear in the Nudges tab.`,n={file:"src/components/Button.tsx",goal:"Eliminate emoji usage",violation:"Found \u{1F680} emoji in comment",suggestedFix:"Remove emoji and use descriptive text",directory:"/current/workspace"}):a.includes("goal")||a.includes("progress")?(s=[{name:"trie_get_goals",input:{status:"active"}}],t=`Here are your active goals:
761
-
762
- \u{1F3AF} **Eliminate all emoji usage from codebase**
763
- Progress: 87% (13\u21922 remaining)
764
- Category: quality
765
-
766
- \u{1F3AF} **Increase test coverage to 85%**
767
- Progress: 85% (72%\u219285% target)
768
- Category: coverage
769
-
770
- Both goals are making good progress! The emoji goal is almost complete.`):a.includes("decision")||a.includes("ledger")?(s=[{name:"trie_get_decisions",input:{limit:5}}],t=`Recent decisions from your ledger:
771
-
772
- \u{1F4DD} **Switch to TypeScript for new components** (2 days ago)
773
- Context: Increasing type safety needs
774
- Outcome: success
775
-
776
- \u{1F4DD} **Implement goal-based validation system** (1 day ago)
777
- Context: Need systematic way to track code quality
778
- Outcome: active
779
-
780
- You can view the full decision ledger for more context and reasoning.`):a.includes("help")||a.includes("what can you do")?t=`I can help you with many aspects of code quality and development:
781
-
782
- **Quality Analysis:**
783
- \u2022 Run AI-powered scans for goal violations
784
- \u2022 Check for emojis, TODOs, complexity issues
785
- \u2022 Analyze code patterns and anti-patterns
786
-
787
- **Goal Management:**
788
- \u2022 Track progress on quality goals
789
- \u2022 Set up new goals and targets
790
- \u2022 Check goal violations across your codebase
791
-
792
- **Decision Tracking:**
793
- \u2022 Record architectural and coding decisions
794
- \u2022 Query past decisions and their outcomes
795
- \u2022 Track blockers and technical debt
796
-
797
- **Hypotheses:**
798
- \u2022 Test development theories with evidence
799
- \u2022 Track confidence levels and validation
800
- \u2022 Manage experiment outcomes
801
-
802
- Just ask me about any of these topics or say things like:
803
- \u2022 "scan for emojis"
804
- \u2022 "check my goals"
805
- \u2022 "show recent decisions"
806
- \u2022 "what blockers do we have?"`:t=`I understand you're asking about: "${e}"
807
-
808
- I can help you with code quality analysis, goal tracking, decision recording, and hypothesis management.
809
-
810
- Some things you can try:
811
- \u2022 "scan my code for issues"
812
- \u2022 "check goal violations"
813
- \u2022 "show me recent decisions"
814
- \u2022 "what blockers do we have?"
815
- \u2022 "help" - for more detailed information
816
-
817
- What would you like to explore?`;let d={id:`msg-${Date.now()}-assistant`,role:"assistant",content:t,timestamp:Date.now(),toolCalls:s,pendingFix:n};this.messages.push(d)}addErrorMessage(e){let t={id:`msg-${Date.now()}-error`,role:"assistant",content:`\u274C ${e}`,timestamp:Date.now()};this.messages.push(t)}setupEventListeners(){this.inputElement&&(this.inputElement.addEventListener("keydown",e=>{e.key==="Enter"&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),this.sendMessage())}),this.inputElement.addEventListener("input",()=>{this.inputElement&&(this.inputElement.style.height="auto",this.inputElement.style.height=Math.min(this.inputElement.scrollHeight,120)+"px")})),window.sendMessage=()=>{this.sendMessage()},window.acceptFix=e=>{console.log("Accepting fix for:",e),this.addSystemMessage(`\u2713 Fix accepted for ${e}. Claude Code will be spawned to apply the fix.`)},window.declineFix=()=>{this.addSystemMessage("Fix declined. Let me know if you need anything else!")}}addSystemMessage(e){let t={id:`msg-${Date.now()}-system`,role:"assistant",content:e,timestamp:Date.now()};this.messages.push(t),this.render()}};c(l);
995
+ `}formatMessageContent(e){return e.replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\*(.*?)\*/g,"<em>$1</em>").replace(/`(.*?)`/g,"<code>$1</code>").replace(/```([\s\S]*?)```/g,"<pre><code>$1</code></pre>").replace(/\n/g,"<br>")}formatToolInput(e){let t=[];for(let[s,n]of Object.entries(e))s!=="directory"&&(Array.isArray(n)?t.push(`${s}: [${n.join(", ")}]`):t.push(`${s}: ${String(n)}`));return t.join(", ")}scrollToBottom(){setTimeout(()=>{let e=this.container.querySelector("#messagesContainer");e&&(e.scrollTop=e.scrollHeight)},100)}async sendMessage(){if(!this.inputElement||this.isLoading)return;let e=this.inputElement.value.trim();if(!e)return;let t={id:`msg-${Date.now()}-user`,role:"user",content:e,timestamp:Date.now()};this.messages.push(t),this.inputElement.value="",this.isLoading=!0,this.render();try{await this.generateAIResponse(e)}catch(s){this.addErrorMessage(`Failed to get response: ${s}`)}finally{this.isLoading=!1,this.render()}}async generateAIResponse(e){try{let t=await this.buildContext(),s="",n,r,a=e.toLowerCase();a.includes("emoji")||a.includes("scan")?(n=[{name:"trie_scan_for_goal_violations",input:{}}],s=await this.executeChatTool("trie_scan_for_goal_violations",{})):a.includes("goal")||a.includes("progress")?s=t.goals||"No active goals found. You can add goals in the Goals view.":a.includes("decision")||a.includes("governance")||a.includes("ledger")?(n=[{name:"trie_get_governance",input:{limit:5}}],s=await this.executeChatTool("trie_get_governance",{limit:5})):a.includes("blocker")||a.includes("block")?(n=[{name:"trie_get_blockers",input:{limit:3}}],s=await this.executeChatTool("trie_get_blockers",{limit:3})):s=`I can help you with your codebase. Here's your current situation:
996
+
997
+ ${t.goals||"No active goals configured."}
998
+
999
+ ${t.nudges||"No recent goal violations."}
1000
+
1001
+ Try asking me to:
1002
+ \u2022 "scan for emoji violations"
1003
+ \u2022 "show my goals"
1004
+ \u2022 "what governance have we recorded"
1005
+ \u2022 "what's blocking us"`;let p={id:`msg-${Date.now()}-assistant`,role:"assistant",content:s,timestamp:Date.now(),...n&&n.length>0?{toolCalls:n}:{},...r?{pendingFix:r}:{}};this.messages.push(p)}catch(t){this.addErrorMessage(`Failed to generate response: ${t}`)}}async buildContext(){let e={};return e.goals="Browser preview mode - goals would be loaded via MCP",e.nudges="Browser preview mode - nudges would be loaded via MCP",e.governance="Browser preview mode - governance would be loaded via MCP",e}async executeChatTool(e,t){switch(e){case"trie_scan_for_goal_violations":return"Found 3 emoji violations in chat interface. Use `trie fix` to apply auto-fixes.";case"trie_get_decisions":case"trie_get_governance":return`Recent governance:
1006
+ \u2022 Decided to implement chat UI with Claude Code styling
1007
+ \u2022 Fixed scrolling issue in message container
1008
+ \u2022 Added proper CSS for chat layout`;case"trie_get_blockers":return`Active blockers:
1009
+ \u2022 Node.js dependencies preventing browser bundle
1010
+ \u2022 Need MCP client for full functionality`;default:return`Browser preview mode - ${e} would execute via MCP`}}addErrorMessage(e){let t={id:`msg-${Date.now()}-error`,role:"assistant",content:`\u274C ${e}`,timestamp:Date.now()};this.messages.push(t)}setupEventListeners(){this.inputElement&&(this.inputElement.addEventListener("keydown",e=>{e.key==="Enter"&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),this.sendMessage())}),this.inputElement.addEventListener("input",()=>{this.inputElement&&(this.inputElement.style.height="auto",this.inputElement.style.height=Math.min(this.inputElement.scrollHeight,120)+"px")})),window.sendMessage=()=>{this.sendMessage()},window.acceptFix=e=>{console.log("Accepting fix for:",e),this.addSystemMessage(`\u2713 Fix accepted for ${e}. Claude Code will be spawned to apply the fix.`)},window.declineFix=()=>{this.addSystemMessage("Fix declined. Let me know if you need anything else!")}}addSystemMessage(e){let t={id:`msg-${Date.now()}-system`,role:"assistant",content:e,timestamp:Date.now()};this.messages.push(t),this.render()}};g(c);
818
1011
 
819
1012
  </script>
820
1013
  </body>