@triedotdev/mcp 1.0.93 → 1.0.94
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.
- package/dist/{agent-smith-QYDXPFPJ.js → agent-smith-MYQ35URL.js} +5 -5
- package/dist/{agent-smith-runner-GXGDJTSR.js → agent-smith-runner-4TBONXCP.js} +5 -5
- package/dist/cache-manager-RMPRPD5T.js +10 -0
- package/dist/{chunk-YTJXD664.js → chunk-AZRCKBGF.js} +8 -8
- package/dist/{chunk-NMGINYYX.js → chunk-CKM6A3G6.js} +4 -4
- package/dist/{chunk-BG2BHWCC.js → chunk-E2ZATINO.js} +10 -10
- package/dist/{chunk-LT7MKIXU.js → chunk-FFWNZUG2.js} +2 -2
- package/dist/{chunk-IOUOVBJZ.js → chunk-FK6DQKDY.js} +2 -2
- package/dist/{chunk-MZI46HQT.js → chunk-HLSBTOVE.js} +8 -8
- package/dist/{chunk-MURGTWG4.js → chunk-IFGF33R5.js} +2 -2
- package/dist/{chunk-R6AUYN3R.js → chunk-IIF5XDCJ.js} +47 -21
- package/dist/chunk-IIF5XDCJ.js.map +1 -0
- package/dist/chunk-JAAIHNOE.js +298 -0
- package/dist/chunk-JAAIHNOE.js.map +1 -0
- package/dist/{chunk-5Z7O66DE.js → chunk-JO6RVXS6.js} +2 -2
- package/dist/{chunk-74NPKTZV.js → chunk-ODWDESYP.js} +2 -2
- package/dist/{chunk-LP4MVJDW.js → chunk-OEYIOOYB.js} +2 -2
- package/dist/{chunk-SJFJ6GLR.js → chunk-OWBWNXSC.js} +2 -2
- package/dist/{chunk-CUXXRM3T.js → chunk-Q764X2WD.js} +7 -7
- package/dist/{chunk-HFQ5ORON.js → chunk-RE6ZWXJC.js} +3 -3
- package/dist/{chunk-KWDNYWOR.js → chunk-RNJ6JKMA.js} +4 -4
- package/dist/{chunk-T5UOH56R.js → chunk-RYRVEO2B.js} +3 -3
- package/dist/{chunk-LVVG2DMW.js → chunk-STEFLYPR.js} +2 -2
- package/dist/{chunk-RDOJCRKJ.js → chunk-WT3XQCG2.js} +2 -2
- package/dist/{chunk-F55XBLIA.js → chunk-Y62VM3ER.js} +6 -6
- package/dist/cli/create-agent.js +3 -3
- package/dist/cli/main.js +16 -16
- package/dist/cli/yolo-daemon.js +18 -18
- package/dist/{git-PZV3BBYI.js → git-45LZUUYA.js} +5 -5
- package/dist/{goal-manager-ESJCJXFS.js → goal-manager-HOZ7R2QV.js} +6 -6
- package/dist/guardian-agent-RB2UQP5V.js +21 -0
- package/dist/index.js +25 -25
- package/dist/{issue-store-JZ2LCQEG.js → issue-store-DXIOP6AK.js} +4 -4
- package/dist/{progress-PH6NNWZM.js → progress-LHI66U7B.js} +2 -2
- package/dist/{vibe-code-signatures-K4UIWKJZ.js → vibe-code-signatures-C5A4BHXD.js} +3 -3
- package/dist/{vulnerability-signatures-ZKVLMBRG.js → vulnerability-signatures-SVIHJQO5.js} +3 -3
- package/dist/workers/agent-worker.js +9 -9
- package/package.json +1 -1
- package/dist/cache-manager-7SKX3IGO.js +0 -10
- package/dist/chunk-D25EIBPO.js +0 -183
- package/dist/chunk-D25EIBPO.js.map +0 -1
- package/dist/chunk-R6AUYN3R.js.map +0 -1
- package/dist/guardian-agent-ZHJXLBOU.js +0 -21
- /package/dist/{agent-smith-QYDXPFPJ.js.map → agent-smith-MYQ35URL.js.map} +0 -0
- /package/dist/{agent-smith-runner-GXGDJTSR.js.map → agent-smith-runner-4TBONXCP.js.map} +0 -0
- /package/dist/{cache-manager-7SKX3IGO.js.map → cache-manager-RMPRPD5T.js.map} +0 -0
- /package/dist/{chunk-YTJXD664.js.map → chunk-AZRCKBGF.js.map} +0 -0
- /package/dist/{chunk-NMGINYYX.js.map → chunk-CKM6A3G6.js.map} +0 -0
- /package/dist/{chunk-BG2BHWCC.js.map → chunk-E2ZATINO.js.map} +0 -0
- /package/dist/{chunk-LT7MKIXU.js.map → chunk-FFWNZUG2.js.map} +0 -0
- /package/dist/{chunk-IOUOVBJZ.js.map → chunk-FK6DQKDY.js.map} +0 -0
- /package/dist/{chunk-MZI46HQT.js.map → chunk-HLSBTOVE.js.map} +0 -0
- /package/dist/{chunk-MURGTWG4.js.map → chunk-IFGF33R5.js.map} +0 -0
- /package/dist/{chunk-5Z7O66DE.js.map → chunk-JO6RVXS6.js.map} +0 -0
- /package/dist/{chunk-74NPKTZV.js.map → chunk-ODWDESYP.js.map} +0 -0
- /package/dist/{chunk-LP4MVJDW.js.map → chunk-OEYIOOYB.js.map} +0 -0
- /package/dist/{chunk-SJFJ6GLR.js.map → chunk-OWBWNXSC.js.map} +0 -0
- /package/dist/{chunk-CUXXRM3T.js.map → chunk-Q764X2WD.js.map} +0 -0
- /package/dist/{chunk-HFQ5ORON.js.map → chunk-RE6ZWXJC.js.map} +0 -0
- /package/dist/{chunk-KWDNYWOR.js.map → chunk-RNJ6JKMA.js.map} +0 -0
- /package/dist/{chunk-T5UOH56R.js.map → chunk-RYRVEO2B.js.map} +0 -0
- /package/dist/{chunk-LVVG2DMW.js.map → chunk-STEFLYPR.js.map} +0 -0
- /package/dist/{chunk-RDOJCRKJ.js.map → chunk-WT3XQCG2.js.map} +0 -0
- /package/dist/{chunk-F55XBLIA.js.map → chunk-Y62VM3ER.js.map} +0 -0
- /package/dist/{git-PZV3BBYI.js.map → git-45LZUUYA.js.map} +0 -0
- /package/dist/{goal-manager-ESJCJXFS.js.map → goal-manager-HOZ7R2QV.js.map} +0 -0
- /package/dist/{guardian-agent-ZHJXLBOU.js.map → guardian-agent-RB2UQP5V.js.map} +0 -0
- /package/dist/{issue-store-JZ2LCQEG.js.map → issue-store-DXIOP6AK.js.map} +0 -0
- /package/dist/{progress-PH6NNWZM.js.map → progress-LHI66U7B.js.map} +0 -0
- /package/dist/{vibe-code-signatures-K4UIWKJZ.js.map → vibe-code-signatures-C5A4BHXD.js.map} +0 -0
- /package/dist/{vulnerability-signatures-ZKVLMBRG.js.map → vulnerability-signatures-SVIHJQO5.js.map} +0 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
// src/utils/progress.ts
|
|
2
|
+
var _interactiveMode = false;
|
|
3
|
+
function setInteractiveMode(enabled) {
|
|
4
|
+
_interactiveMode = enabled;
|
|
5
|
+
}
|
|
6
|
+
function isInteractiveMode() {
|
|
7
|
+
return _interactiveMode;
|
|
8
|
+
}
|
|
9
|
+
var ProgressReporter = class {
|
|
10
|
+
currentPhase = "init";
|
|
11
|
+
startTime = Date.now();
|
|
12
|
+
phaseStartTime = Date.now();
|
|
13
|
+
verbose;
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
this.verbose = options.verbose ?? true;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Report a status update
|
|
19
|
+
*/
|
|
20
|
+
report(message, detail) {
|
|
21
|
+
if (!this.verbose || _interactiveMode) return;
|
|
22
|
+
const prefix = this.getPhaseIcon(this.currentPhase);
|
|
23
|
+
const fullMessage = detail ? `${message}: ${detail}` : message;
|
|
24
|
+
console.error(`${prefix} ${fullMessage}`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Start a new phase
|
|
28
|
+
*/
|
|
29
|
+
startPhase(phase, message) {
|
|
30
|
+
this.currentPhase = phase;
|
|
31
|
+
this.phaseStartTime = Date.now();
|
|
32
|
+
this.report(message);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Update within current phase
|
|
36
|
+
*/
|
|
37
|
+
update(message, detail) {
|
|
38
|
+
this.report(message, detail);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Report progress on a file
|
|
42
|
+
*/
|
|
43
|
+
file(action, filePath) {
|
|
44
|
+
const fileName = filePath.split("/").pop() || filePath;
|
|
45
|
+
this.report(action, fileName);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Report an AI analysis step
|
|
49
|
+
*/
|
|
50
|
+
ai(action, context) {
|
|
51
|
+
if (_interactiveMode) return;
|
|
52
|
+
const prefix = "[AI]";
|
|
53
|
+
const message = context ? `${action}: ${context}` : action;
|
|
54
|
+
console.error(`${prefix} ${message}`);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Report a finding
|
|
58
|
+
*/
|
|
59
|
+
finding(severity, message) {
|
|
60
|
+
if (_interactiveMode) return;
|
|
61
|
+
const labels = {
|
|
62
|
+
critical: "[CRITICAL]",
|
|
63
|
+
serious: "[SERIOUS]",
|
|
64
|
+
moderate: "[MODERATE]",
|
|
65
|
+
low: "[LOW]"
|
|
66
|
+
};
|
|
67
|
+
console.error(` ${labels[severity]} ${message}`);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Complete current phase
|
|
71
|
+
*/
|
|
72
|
+
completePhase(summary) {
|
|
73
|
+
const elapsed = Date.now() - this.phaseStartTime;
|
|
74
|
+
this.report(`Done: ${summary}`, `(${elapsed}ms)`);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Complete the entire operation
|
|
78
|
+
*/
|
|
79
|
+
complete(summary) {
|
|
80
|
+
if (_interactiveMode) return;
|
|
81
|
+
const totalElapsed = Date.now() - this.startTime;
|
|
82
|
+
console.error("");
|
|
83
|
+
console.error(`----------------------------------------`);
|
|
84
|
+
console.error(`[COMPLETE] ${summary}`);
|
|
85
|
+
console.error(` Total time: ${(totalElapsed / 1e3).toFixed(2)}s`);
|
|
86
|
+
console.error(`----------------------------------------`);
|
|
87
|
+
console.error("");
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Report an error
|
|
91
|
+
*/
|
|
92
|
+
error(message, detail) {
|
|
93
|
+
if (_interactiveMode) return;
|
|
94
|
+
const fullMessage = detail ? `${message}: ${detail}` : message;
|
|
95
|
+
console.error(`[ERROR] ${fullMessage}`);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Report a warning
|
|
99
|
+
*/
|
|
100
|
+
warn(message, detail) {
|
|
101
|
+
if (_interactiveMode) return;
|
|
102
|
+
const fullMessage = detail ? `${message}: ${detail}` : message;
|
|
103
|
+
console.error(`[WARN] ${fullMessage}`);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get icon for current phase
|
|
107
|
+
*/
|
|
108
|
+
getPhaseIcon(phase) {
|
|
109
|
+
const icons = {
|
|
110
|
+
"init": ">>",
|
|
111
|
+
"discovery": ">>",
|
|
112
|
+
"reading": ">>",
|
|
113
|
+
"analyzing": ">>",
|
|
114
|
+
"ai-review": "[AI]",
|
|
115
|
+
"prioritizing": ">>",
|
|
116
|
+
"complete": "[OK]"
|
|
117
|
+
};
|
|
118
|
+
return icons[phase] || ">>";
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a sub-reporter for a specific agent
|
|
122
|
+
*/
|
|
123
|
+
forAgent(agentName) {
|
|
124
|
+
return new AgentProgressReporter(agentName, this.verbose);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
var AgentProgressReporter = class {
|
|
128
|
+
agentName;
|
|
129
|
+
verbose;
|
|
130
|
+
issueCount = 0;
|
|
131
|
+
issuesBySeverity = /* @__PURE__ */ new Map();
|
|
132
|
+
batchedIssues = /* @__PURE__ */ new Map();
|
|
133
|
+
criticalIssues = [];
|
|
134
|
+
seriousIssues = [];
|
|
135
|
+
flushTimer = null;
|
|
136
|
+
BATCH_DELAY_MS = 100;
|
|
137
|
+
// Batch issues for 100ms before flushing
|
|
138
|
+
constructor(agentName, verbose = true) {
|
|
139
|
+
this.agentName = agentName;
|
|
140
|
+
this.verbose = verbose;
|
|
141
|
+
}
|
|
142
|
+
start() {
|
|
143
|
+
if (!this.verbose || _interactiveMode) return;
|
|
144
|
+
console.error(`
|
|
145
|
+
[SCOUT] ${this.agentName.toUpperCase()} starting...`);
|
|
146
|
+
}
|
|
147
|
+
analyzing(file) {
|
|
148
|
+
if (!this.verbose || _interactiveMode) return;
|
|
149
|
+
}
|
|
150
|
+
aiReview(context) {
|
|
151
|
+
if (!this.verbose || _interactiveMode) return;
|
|
152
|
+
if (this.issueCount < 5) {
|
|
153
|
+
console.error(` [AI] reviewing: ${context}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
found(severity, issue, file, line) {
|
|
157
|
+
this.issueCount++;
|
|
158
|
+
const current = this.issuesBySeverity.get(severity) || 0;
|
|
159
|
+
this.issuesBySeverity.set(severity, current + 1);
|
|
160
|
+
if (severity === "critical") {
|
|
161
|
+
this.criticalIssues.push({ severity, issue, file, line });
|
|
162
|
+
if (this.verbose && !_interactiveMode) {
|
|
163
|
+
this.flushCriticalAndSerious();
|
|
164
|
+
}
|
|
165
|
+
} else if (severity === "serious") {
|
|
166
|
+
this.seriousIssues.push({ severity, issue, file, line });
|
|
167
|
+
}
|
|
168
|
+
if (!this.verbose || _interactiveMode) return;
|
|
169
|
+
const normalizedIssue = issue.replace(/at line \d+/gi, "").replace(/in .+$/gi, "").trim();
|
|
170
|
+
const key = `${severity}:${normalizedIssue}`;
|
|
171
|
+
if (!this.batchedIssues.has(key)) {
|
|
172
|
+
this.batchedIssues.set(key, []);
|
|
173
|
+
}
|
|
174
|
+
this.batchedIssues.get(key).push({ severity, issue, file, line });
|
|
175
|
+
if (severity === "critical") {
|
|
176
|
+
this.flushBatchedIssues();
|
|
177
|
+
} else {
|
|
178
|
+
if (this.flushTimer) {
|
|
179
|
+
clearTimeout(this.flushTimer);
|
|
180
|
+
}
|
|
181
|
+
this.flushTimer = setTimeout(() => this.flushBatchedIssues(), this.BATCH_DELAY_MS);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
flushCriticalAndSerious() {
|
|
185
|
+
for (const issue of this.criticalIssues) {
|
|
186
|
+
console.error(` [CRITICAL] Found: ${issue.issue}`);
|
|
187
|
+
}
|
|
188
|
+
this.criticalIssues = [];
|
|
189
|
+
}
|
|
190
|
+
flushBatchedIssues() {
|
|
191
|
+
if (!this.verbose || _interactiveMode) return;
|
|
192
|
+
if (this.criticalIssues.length > 0) {
|
|
193
|
+
this.flushCriticalAndSerious();
|
|
194
|
+
}
|
|
195
|
+
if (this.seriousIssues.length > 0) {
|
|
196
|
+
for (const issue of this.seriousIssues.slice(0, 10)) {
|
|
197
|
+
console.error(` [SERIOUS] Found: ${issue.issue}`);
|
|
198
|
+
}
|
|
199
|
+
if (this.seriousIssues.length > 10) {
|
|
200
|
+
console.error(` ... and ${this.seriousIssues.length - 10} more serious issues`);
|
|
201
|
+
}
|
|
202
|
+
this.seriousIssues = [];
|
|
203
|
+
}
|
|
204
|
+
if (this.batchedIssues.size === 0) return;
|
|
205
|
+
const moderateGroups = [];
|
|
206
|
+
const lowGroups = [];
|
|
207
|
+
for (const [key, issues] of this.batchedIssues.entries()) {
|
|
208
|
+
const [severity, pattern] = key.split(":", 2);
|
|
209
|
+
const count = issues.length;
|
|
210
|
+
const examples = issues.slice(0, 2).map((i) => i.issue);
|
|
211
|
+
if (severity === "moderate") {
|
|
212
|
+
moderateGroups.push({ pattern, count, examples });
|
|
213
|
+
} else if (severity === "low") {
|
|
214
|
+
lowGroups.push({ pattern, count, examples });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (moderateGroups.length > 0) {
|
|
218
|
+
for (const group of moderateGroups.slice(0, 5)) {
|
|
219
|
+
if (group.count === 1) {
|
|
220
|
+
console.error(` [MODERATE] Found: ${group.examples[0]}`);
|
|
221
|
+
} else {
|
|
222
|
+
console.error(` [MODERATE] Found: ${group.pattern} (${group.count} instances)`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (moderateGroups.length > 5) {
|
|
226
|
+
const remaining = moderateGroups.slice(5).reduce((sum, g) => sum + g.count, 0);
|
|
227
|
+
console.error(` ... and ${remaining} more moderate issues`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (lowGroups.length > 0 && this.issueCount < 200) {
|
|
231
|
+
for (const group of lowGroups.slice(0, 3)) {
|
|
232
|
+
if (group.count === 1) {
|
|
233
|
+
console.error(` [LOW] Found: ${group.examples[0]}`);
|
|
234
|
+
} else {
|
|
235
|
+
console.error(` [LOW] Found: ${group.pattern} (${group.count} instances)`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (lowGroups.length > 3) {
|
|
239
|
+
const remaining = lowGroups.slice(3).reduce((sum, g) => sum + g.count, 0);
|
|
240
|
+
console.error(` ... and ${remaining} more low-severity issues`);
|
|
241
|
+
}
|
|
242
|
+
} else if (lowGroups.length > 0) {
|
|
243
|
+
const totalLow = lowGroups.reduce((sum, g) => sum + g.count, 0);
|
|
244
|
+
console.error(` [LOW] Found ${totalLow} low-severity issues (suppressed for brevity)`);
|
|
245
|
+
}
|
|
246
|
+
this.batchedIssues.clear();
|
|
247
|
+
}
|
|
248
|
+
complete(summary) {
|
|
249
|
+
if (this.flushTimer) {
|
|
250
|
+
clearTimeout(this.flushTimer);
|
|
251
|
+
this.flushTimer = null;
|
|
252
|
+
}
|
|
253
|
+
this.flushBatchedIssues();
|
|
254
|
+
if (!this.verbose || _interactiveMode) return;
|
|
255
|
+
const severityCounts = [];
|
|
256
|
+
if (this.issuesBySeverity.get("critical")) {
|
|
257
|
+
severityCounts.push(`${this.issuesBySeverity.get("critical")} critical`);
|
|
258
|
+
}
|
|
259
|
+
if (this.issuesBySeverity.get("serious")) {
|
|
260
|
+
severityCounts.push(`${this.issuesBySeverity.get("serious")} serious`);
|
|
261
|
+
}
|
|
262
|
+
if (this.issuesBySeverity.get("moderate")) {
|
|
263
|
+
severityCounts.push(`${this.issuesBySeverity.get("moderate")} moderate`);
|
|
264
|
+
}
|
|
265
|
+
if (this.issuesBySeverity.get("low")) {
|
|
266
|
+
severityCounts.push(`${this.issuesBySeverity.get("low")} low`);
|
|
267
|
+
}
|
|
268
|
+
const severitySummary = severityCounts.length > 0 ? ` (${severityCounts.join(", ")})` : "";
|
|
269
|
+
const msg = summary || `${this.issueCount} issues found${severitySummary}`;
|
|
270
|
+
console.error(` Done: ${this.agentName}: ${msg}`);
|
|
271
|
+
}
|
|
272
|
+
getIssueCount() {
|
|
273
|
+
return this.issueCount;
|
|
274
|
+
}
|
|
275
|
+
getIssuesBySeverity() {
|
|
276
|
+
return new Map(this.issuesBySeverity);
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
var globalReporter = null;
|
|
280
|
+
function getProgressReporter(options) {
|
|
281
|
+
if (!globalReporter) {
|
|
282
|
+
globalReporter = new ProgressReporter(options);
|
|
283
|
+
}
|
|
284
|
+
return globalReporter;
|
|
285
|
+
}
|
|
286
|
+
function resetProgressReporter() {
|
|
287
|
+
globalReporter = null;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export {
|
|
291
|
+
setInteractiveMode,
|
|
292
|
+
isInteractiveMode,
|
|
293
|
+
ProgressReporter,
|
|
294
|
+
AgentProgressReporter,
|
|
295
|
+
getProgressReporter,
|
|
296
|
+
resetProgressReporter
|
|
297
|
+
};
|
|
298
|
+
//# sourceMappingURL=chunk-JAAIHNOE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/progress.ts"],"sourcesContent":["/**\n * Progress Reporter for Trie Agent\n * \n * Provides real-time feedback to users as the agent works.\n * Uses console.error because MCP clients display stderr to users.\n */\n\n/**\n * Global interactive mode flag\n * When enabled, suppresses all console output (handled by InteractiveDashboard instead)\n */\nlet _interactiveMode = false;\n\n/**\n * Enable or disable interactive mode\n * When enabled, all console output from ProgressReporter and AgentProgressReporter is suppressed\n */\nexport function setInteractiveMode(enabled: boolean): void {\n _interactiveMode = enabled;\n}\n\n/**\n * Check if interactive mode is enabled\n */\nexport function isInteractiveMode(): boolean {\n return _interactiveMode;\n}\n\nexport type ProgressPhase = \n | 'init'\n | 'discovery'\n | 'reading'\n | 'analyzing'\n | 'ai-review'\n | 'prioritizing'\n | 'complete';\n\nexport interface ProgressCallback {\n (phase: ProgressPhase, message: string, detail?: string): void;\n}\n\n/**\n * Progress Reporter - streams status updates to the user\n */\nexport class ProgressReporter {\n private currentPhase: ProgressPhase = 'init';\n private startTime: number = Date.now();\n private phaseStartTime: number = Date.now();\n private verbose: boolean;\n\n constructor(options: { verbose?: boolean } = {}) {\n this.verbose = options.verbose ?? true;\n }\n\n /**\n * Report a status update\n */\n report(message: string, detail?: string): void {\n if (!this.verbose || _interactiveMode) return;\n \n const prefix = this.getPhaseIcon(this.currentPhase);\n const fullMessage = detail ? `${message}: ${detail}` : message;\n console.error(`${prefix} ${fullMessage}`);\n }\n\n /**\n * Start a new phase\n */\n startPhase(phase: ProgressPhase, message: string): void {\n this.currentPhase = phase;\n this.phaseStartTime = Date.now();\n this.report(message);\n }\n\n /**\n * Update within current phase\n */\n update(message: string, detail?: string): void {\n this.report(message, detail);\n }\n\n /**\n * Report progress on a file\n */\n file(action: string, filePath: string): void {\n // Show just the filename for cleaner output\n const fileName = filePath.split('/').pop() || filePath;\n this.report(action, fileName);\n }\n\n /**\n * Report an AI analysis step\n */\n ai(action: string, context?: string): void {\n if (_interactiveMode) return;\n const prefix = '[AI]';\n const message = context ? `${action}: ${context}` : action;\n console.error(`${prefix} ${message}`);\n }\n\n /**\n * Report a finding\n */\n finding(severity: 'critical' | 'serious' | 'moderate' | 'low', message: string): void {\n if (_interactiveMode) return;\n const labels = {\n critical: '[CRITICAL]',\n serious: '[SERIOUS]',\n moderate: '[MODERATE]',\n low: '[LOW]'\n };\n console.error(` ${labels[severity]} ${message}`);\n }\n\n /**\n * Complete current phase\n */\n completePhase(summary: string): void {\n const elapsed = Date.now() - this.phaseStartTime;\n this.report(`Done: ${summary}`, `(${elapsed}ms)`);\n }\n\n /**\n * Complete the entire operation\n */\n complete(summary: string): void {\n if (_interactiveMode) return;\n const totalElapsed = Date.now() - this.startTime;\n console.error('');\n console.error(`----------------------------------------`);\n console.error(`[COMPLETE] ${summary}`);\n console.error(` Total time: ${(totalElapsed / 1000).toFixed(2)}s`);\n console.error(`----------------------------------------`);\n console.error('');\n }\n\n /**\n * Report an error\n */\n error(message: string, detail?: string): void {\n if (_interactiveMode) return;\n const fullMessage = detail ? `${message}: ${detail}` : message;\n console.error(`[ERROR] ${fullMessage}`);\n }\n\n /**\n * Report a warning\n */\n warn(message: string, detail?: string): void {\n if (_interactiveMode) return;\n const fullMessage = detail ? `${message}: ${detail}` : message;\n console.error(`[WARN] ${fullMessage}`);\n }\n\n /**\n * Get icon for current phase\n */\n private getPhaseIcon(phase: ProgressPhase): string {\n const icons: Record<ProgressPhase, string> = {\n 'init': '>>',\n 'discovery': '>>',\n 'reading': '>>',\n 'analyzing': '>>',\n 'ai-review': '[AI]',\n 'prioritizing': '>>',\n 'complete': '[OK]'\n };\n return icons[phase] || '>>';\n }\n\n /**\n * Create a sub-reporter for a specific agent\n */\n forAgent(agentName: string): AgentProgressReporter {\n return new AgentProgressReporter(agentName, this.verbose);\n }\n}\n\n/**\n * Progress reporter scoped to a specific agent\n */\nexport class AgentProgressReporter {\n private agentName: string;\n private verbose: boolean;\n private issueCount: number = 0;\n private issuesBySeverity: Map<string, number> = new Map();\n private batchedIssues: Map<string, Array<{ severity: string; issue: string; file?: string; line?: number }>> = new Map();\n private criticalIssues: Array<{ severity: string; issue: string; file?: string; line?: number }> = [];\n private seriousIssues: Array<{ severity: string; issue: string; file?: string; line?: number }> = [];\n private flushTimer: NodeJS.Timeout | null = null;\n private readonly BATCH_DELAY_MS = 100; // Batch issues for 100ms before flushing\n\n constructor(agentName: string, verbose: boolean = true) {\n this.agentName = agentName;\n this.verbose = verbose;\n }\n\n start(): void {\n if (!this.verbose || _interactiveMode) return;\n console.error(`\\n[SCOUT] ${this.agentName.toUpperCase()} starting...`);\n }\n\n analyzing(file: string): void {\n if (!this.verbose || _interactiveMode) return;\n // Suppress individual file analysis messages - they're too verbose\n // The progress updates from streaming manager will show file progress\n }\n\n aiReview(context: string): void {\n if (!this.verbose || _interactiveMode) return;\n // Suppress AI review messages - they're too verbose during watch mode\n // Only show if there are very few issues (indicating a focused scan)\n if (this.issueCount < 5) {\n console.error(` [AI] reviewing: ${context}`);\n }\n }\n\n found(severity: string, issue: string, file?: string, line?: number): void {\n this.issueCount++;\n \n // Track by severity\n const current = this.issuesBySeverity.get(severity) || 0;\n this.issuesBySeverity.set(severity, current + 1);\n\n // Store critical and serious issues for detailed output\n if (severity === 'critical') {\n this.criticalIssues.push({ severity, issue, file, line });\n // Flush critical issues immediately\n if (this.verbose && !_interactiveMode) {\n this.flushCriticalAndSerious();\n }\n } else if (severity === 'serious') {\n this.seriousIssues.push({ severity, issue, file, line });\n }\n\n // Batch similar issues together for cleaner output\n if (!this.verbose || _interactiveMode) return;\n\n // Normalize issue description for grouping (remove line numbers, file paths)\n const normalizedIssue = issue.replace(/at line \\d+/gi, '').replace(/in .+$/gi, '').trim();\n const key = `${severity}:${normalizedIssue}`;\n \n if (!this.batchedIssues.has(key)) {\n this.batchedIssues.set(key, []);\n }\n this.batchedIssues.get(key)!.push({ severity, issue, file, line });\n\n // Schedule flush (debounced) - but flush immediately for critical\n if (severity === 'critical') {\n this.flushBatchedIssues();\n } else {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n }\n this.flushTimer = setTimeout(() => this.flushBatchedIssues(), this.BATCH_DELAY_MS);\n }\n }\n\n private flushCriticalAndSerious(): void {\n // Always show critical issues immediately\n for (const issue of this.criticalIssues) {\n console.error(` [CRITICAL] Found: ${issue.issue}`);\n }\n this.criticalIssues = [];\n }\n\n private flushBatchedIssues(): void {\n if (!this.verbose || _interactiveMode) return;\n\n // Always show critical issues immediately (should already be flushed, but double-check)\n if (this.criticalIssues.length > 0) {\n this.flushCriticalAndSerious();\n }\n\n // Show serious issues (limit to first 10 to avoid spam)\n if (this.seriousIssues.length > 0) {\n for (const issue of this.seriousIssues.slice(0, 10)) {\n console.error(` [SERIOUS] Found: ${issue.issue}`);\n }\n if (this.seriousIssues.length > 10) {\n console.error(` ... and ${this.seriousIssues.length - 10} more serious issues`);\n }\n this.seriousIssues = [];\n }\n\n if (this.batchedIssues.size === 0) return;\n\n // For moderate and low issues, group similar ones together\n const moderateGroups: Array<{ pattern: string; count: number; examples: string[] }> = [];\n const lowGroups: Array<{ pattern: string; count: number; examples: string[] }> = [];\n\n for (const [key, issues] of this.batchedIssues.entries()) {\n const [severity, pattern] = key.split(':', 2);\n const count = issues.length;\n const examples = issues.slice(0, 2).map(i => i.issue);\n\n if (severity === 'moderate') {\n moderateGroups.push({ pattern, count, examples });\n } else if (severity === 'low') {\n lowGroups.push({ pattern, count, examples });\n }\n }\n\n // Show moderate issues (grouped, max 5 groups)\n if (moderateGroups.length > 0) {\n for (const group of moderateGroups.slice(0, 5)) {\n if (group.count === 1) {\n console.error(` [MODERATE] Found: ${group.examples[0]}`);\n } else {\n console.error(` [MODERATE] Found: ${group.pattern} (${group.count} instances)`);\n }\n }\n if (moderateGroups.length > 5) {\n const remaining = moderateGroups.slice(5).reduce((sum, g) => sum + g.count, 0);\n console.error(` ... and ${remaining} more moderate issues`);\n }\n }\n\n // Show low issues (grouped, max 3 groups, only if not too many)\n // Suppress low issues if there are too many total issues\n if (lowGroups.length > 0 && this.issueCount < 200) {\n for (const group of lowGroups.slice(0, 3)) {\n if (group.count === 1) {\n console.error(` [LOW] Found: ${group.examples[0]}`);\n } else {\n console.error(` [LOW] Found: ${group.pattern} (${group.count} instances)`);\n }\n }\n if (lowGroups.length > 3) {\n const remaining = lowGroups.slice(3).reduce((sum, g) => sum + g.count, 0);\n console.error(` ... and ${remaining} more low-severity issues`);\n }\n } else if (lowGroups.length > 0) {\n // Too many issues - just show summary\n const totalLow = lowGroups.reduce((sum, g) => sum + g.count, 0);\n console.error(` [LOW] Found ${totalLow} low-severity issues (suppressed for brevity)`);\n }\n\n this.batchedIssues.clear();\n }\n\n complete(summary?: string): void {\n // Flush any remaining batched issues\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = null;\n }\n this.flushBatchedIssues();\n\n if (!this.verbose || _interactiveMode) return;\n\n // Build a better summary\n const severityCounts: string[] = [];\n if (this.issuesBySeverity.get('critical')) {\n severityCounts.push(`${this.issuesBySeverity.get('critical')} critical`);\n }\n if (this.issuesBySeverity.get('serious')) {\n severityCounts.push(`${this.issuesBySeverity.get('serious')} serious`);\n }\n if (this.issuesBySeverity.get('moderate')) {\n severityCounts.push(`${this.issuesBySeverity.get('moderate')} moderate`);\n }\n if (this.issuesBySeverity.get('low')) {\n severityCounts.push(`${this.issuesBySeverity.get('low')} low`);\n }\n\n const severitySummary = severityCounts.length > 0 \n ? ` (${severityCounts.join(', ')})`\n : '';\n \n const msg = summary || `${this.issueCount} issues found${severitySummary}`;\n console.error(` Done: ${this.agentName}: ${msg}`);\n }\n\n getIssueCount(): number {\n return this.issueCount;\n }\n\n getIssuesBySeverity(): Map<string, number> {\n return new Map(this.issuesBySeverity);\n }\n}\n\n/**\n * Global singleton for easy access\n */\nlet globalReporter: ProgressReporter | null = null;\n\nexport function getProgressReporter(options?: { verbose?: boolean }): ProgressReporter {\n if (!globalReporter) {\n globalReporter = new ProgressReporter(options);\n }\n return globalReporter;\n}\n\nexport function resetProgressReporter(): void {\n globalReporter = null;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-6NLHFIYA.js";
|
|
4
4
|
import {
|
|
5
5
|
isInteractiveMode
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JAAIHNOE.js";
|
|
7
7
|
|
|
8
8
|
// src/trie/vulnerability-signatures.ts
|
|
9
9
|
var ALWAYS_EXCLUDED_FILES = [
|
|
@@ -980,4 +980,4 @@ export {
|
|
|
980
980
|
scanForVulnerabilities,
|
|
981
981
|
getVulnerabilityStats
|
|
982
982
|
};
|
|
983
|
-
//# sourceMappingURL=chunk-
|
|
983
|
+
//# sourceMappingURL=chunk-JO6RVXS6.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getTrieDirectory,
|
|
3
3
|
getWorkingDirectory
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WT3XQCG2.js";
|
|
5
5
|
|
|
6
6
|
// src/ai/client.ts
|
|
7
7
|
import Anthropic from "@anthropic-ai/sdk";
|
|
@@ -138,4 +138,4 @@ export {
|
|
|
138
138
|
runAIAnalysis,
|
|
139
139
|
getAIStatusMessage
|
|
140
140
|
};
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
141
|
+
//# sourceMappingURL=chunk-ODWDESYP.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getTrieDirectory,
|
|
3
3
|
getWorkingDirectory
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WT3XQCG2.js";
|
|
5
5
|
|
|
6
6
|
// src/memory/issue-store.ts
|
|
7
7
|
import { mkdir as mkdir4, writeFile as writeFile2, readFile as readFile4, readdir as readdir2 } from "fs/promises";
|
|
@@ -1141,4 +1141,4 @@ export {
|
|
|
1141
1141
|
purgeIssues,
|
|
1142
1142
|
getDailyLogs
|
|
1143
1143
|
};
|
|
1144
|
-
//# sourceMappingURL=chunk-
|
|
1144
|
+
//# sourceMappingURL=chunk-OEYIOOYB.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getTrieDirectory,
|
|
3
3
|
getWorkingDirectory
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WT3XQCG2.js";
|
|
5
5
|
|
|
6
6
|
// src/ingest/agent-builder.ts
|
|
7
7
|
import Anthropic2 from "@anthropic-ai/sdk";
|
|
@@ -952,4 +952,4 @@ export {
|
|
|
952
952
|
loadAgentConfig,
|
|
953
953
|
listCustomAgents
|
|
954
954
|
};
|
|
955
|
-
//# sourceMappingURL=chunk-
|
|
955
|
+
//# sourceMappingURL=chunk-OWBWNXSC.js.map
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CacheManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RE6ZWXJC.js";
|
|
4
4
|
import {
|
|
5
5
|
CustomSkill,
|
|
6
6
|
getSkillRegistry,
|
|
7
7
|
loadContextState
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-E2ZATINO.js";
|
|
9
9
|
import {
|
|
10
10
|
getGlobalMemoryStats
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-FFWNZUG2.js";
|
|
12
12
|
import {
|
|
13
13
|
getHistoricalInsights,
|
|
14
14
|
getMemoryStats,
|
|
15
15
|
getRecentIssues,
|
|
16
16
|
searchIssues
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-OEYIOOYB.js";
|
|
18
18
|
import {
|
|
19
19
|
getTrieDirectory,
|
|
20
20
|
getWorkingDirectory
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-WT3XQCG2.js";
|
|
22
22
|
import {
|
|
23
23
|
isInteractiveMode
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-JAAIHNOE.js";
|
|
25
25
|
import {
|
|
26
26
|
__require
|
|
27
27
|
} from "./chunk-DGUM43GV.js";
|
|
@@ -2121,4 +2121,4 @@ export {
|
|
|
2121
2121
|
createSavedPattern,
|
|
2122
2122
|
buildSavedPatternIssues
|
|
2123
2123
|
};
|
|
2124
|
-
//# sourceMappingURL=chunk-
|
|
2124
|
+
//# sourceMappingURL=chunk-Q764X2WD.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getTrieDirectory
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WT3XQCG2.js";
|
|
4
4
|
import {
|
|
5
5
|
isInteractiveMode
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JAAIHNOE.js";
|
|
7
7
|
|
|
8
8
|
// src/utils/cache-manager.ts
|
|
9
9
|
import { readFile, writeFile, mkdir, stat } from "fs/promises";
|
|
@@ -276,4 +276,4 @@ var CacheManager = class {
|
|
|
276
276
|
export {
|
|
277
277
|
CacheManager
|
|
278
278
|
};
|
|
279
|
-
//# sourceMappingURL=chunk-
|
|
279
|
+
//# sourceMappingURL=chunk-RE6ZWXJC.js.map
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
getAIStatusMessage,
|
|
3
3
|
isAIAvailable,
|
|
4
4
|
runAIAnalysis
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ODWDESYP.js";
|
|
6
6
|
import {
|
|
7
7
|
getTrieDirectory
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-WT3XQCG2.js";
|
|
9
9
|
import {
|
|
10
10
|
AgentProgressReporter,
|
|
11
11
|
isInteractiveMode
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-JAAIHNOE.js";
|
|
13
13
|
|
|
14
14
|
// src/skills/built-in/base-skill.ts
|
|
15
15
|
import { relative } from "path";
|
|
@@ -2267,4 +2267,4 @@ export {
|
|
|
2267
2267
|
PATTERN_HUNTER_CONFIGS,
|
|
2268
2268
|
AgentSmithSkill
|
|
2269
2269
|
};
|
|
2270
|
-
//# sourceMappingURL=chunk-
|
|
2270
|
+
//# sourceMappingURL=chunk-RNJ6JKMA.js.map
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
BackupManager,
|
|
3
3
|
atomicWriteJSON,
|
|
4
4
|
safeParseAndValidate
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OEYIOOYB.js";
|
|
6
6
|
import {
|
|
7
7
|
getTrieDirectory
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-WT3XQCG2.js";
|
|
9
9
|
|
|
10
10
|
// src/guardian/guardian-state.ts
|
|
11
11
|
import { mkdir, readFile } from "fs/promises";
|
|
@@ -679,4 +679,4 @@ function getGuardianState(projectPath) {
|
|
|
679
679
|
export {
|
|
680
680
|
getGuardianState
|
|
681
681
|
};
|
|
682
|
-
//# sourceMappingURL=chunk-
|
|
682
|
+
//# sourceMappingURL=chunk-RYRVEO2B.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-6NLHFIYA.js";
|
|
4
4
|
import {
|
|
5
5
|
isInteractiveMode
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JAAIHNOE.js";
|
|
7
7
|
|
|
8
8
|
// src/trie/vibe-code-signatures.ts
|
|
9
9
|
var VIBE_CODE_PATTERNS = [
|
|
@@ -984,4 +984,4 @@ export {
|
|
|
984
984
|
scanForVibeCodeIssues,
|
|
985
985
|
getVibeCodeStats
|
|
986
986
|
};
|
|
987
|
-
//# sourceMappingURL=chunk-
|
|
987
|
+
//# sourceMappingURL=chunk-STEFLYPR.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isInteractiveMode
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JAAIHNOE.js";
|
|
4
4
|
import {
|
|
5
5
|
__require
|
|
6
6
|
} from "./chunk-DGUM43GV.js";
|
|
@@ -189,4 +189,4 @@ export {
|
|
|
189
189
|
getTrieDirectory,
|
|
190
190
|
getWorkingDirectory
|
|
191
191
|
};
|
|
192
|
-
//# sourceMappingURL=chunk-
|
|
192
|
+
//# sourceMappingURL=chunk-WT3XQCG2.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
scanForVulnerabilities
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-JO6RVXS6.js";
|
|
4
4
|
import {
|
|
5
5
|
searchIssues
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OEYIOOYB.js";
|
|
7
7
|
import {
|
|
8
8
|
scanForVibeCodeIssues
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-STEFLYPR.js";
|
|
10
10
|
import {
|
|
11
11
|
tryGetClient
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ODWDESYP.js";
|
|
13
13
|
import {
|
|
14
14
|
getTrieDirectory
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WT3XQCG2.js";
|
|
16
16
|
|
|
17
17
|
// src/guardian/gotcha-predictor.ts
|
|
18
18
|
import fs from "fs";
|
|
@@ -533,4 +533,4 @@ export {
|
|
|
533
533
|
GotchaPredictor,
|
|
534
534
|
ContextGraph
|
|
535
535
|
};
|
|
536
|
-
//# sourceMappingURL=chunk-
|
|
536
|
+
//# sourceMappingURL=chunk-Y62VM3ER.js.map
|
package/dist/cli/create-agent.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
buildAgentFromDocument
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-OWBWNXSC.js";
|
|
5
|
+
import "../chunk-WT3XQCG2.js";
|
|
6
|
+
import "../chunk-JAAIHNOE.js";
|
|
7
7
|
import "../chunk-DGUM43GV.js";
|
|
8
8
|
|
|
9
9
|
// src/cli/create-agent.ts
|
package/dist/cli/main.js
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
shouldAutoFix,
|
|
18
18
|
shouldBlockPush,
|
|
19
19
|
trackIssueOccurrence
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-AZRCKBGF.js";
|
|
21
21
|
import {
|
|
22
22
|
SKILL_CATEGORIES,
|
|
23
23
|
createSavedPattern,
|
|
@@ -30,20 +30,20 @@ import {
|
|
|
30
30
|
saveConfig,
|
|
31
31
|
savePatternToProject,
|
|
32
32
|
savePatternsToProject
|
|
33
|
-
} from "../chunk-
|
|
34
|
-
import "../chunk-
|
|
33
|
+
} from "../chunk-Q764X2WD.js";
|
|
34
|
+
import "../chunk-RE6ZWXJC.js";
|
|
35
35
|
import {
|
|
36
36
|
getStagedChanges,
|
|
37
37
|
getUncommittedChanges
|
|
38
|
-
} from "../chunk-
|
|
38
|
+
} from "../chunk-FK6DQKDY.js";
|
|
39
39
|
import {
|
|
40
40
|
ContextGraph,
|
|
41
41
|
GotchaPredictor
|
|
42
|
-
} from "../chunk-
|
|
43
|
-
import "../chunk-
|
|
42
|
+
} from "../chunk-Y62VM3ER.js";
|
|
43
|
+
import "../chunk-JO6RVXS6.js";
|
|
44
44
|
import {
|
|
45
45
|
getGuardianState
|
|
46
|
-
} from "../chunk-
|
|
46
|
+
} from "../chunk-RYRVEO2B.js";
|
|
47
47
|
import {
|
|
48
48
|
initProjectInfo,
|
|
49
49
|
installSkill,
|
|
@@ -53,20 +53,20 @@ import {
|
|
|
53
53
|
projectInfoExists,
|
|
54
54
|
recordSkillInstalled,
|
|
55
55
|
removeSkill
|
|
56
|
-
} from "../chunk-
|
|
56
|
+
} from "../chunk-E2ZATINO.js";
|
|
57
57
|
import {
|
|
58
58
|
formatAuditLog,
|
|
59
59
|
getAuditStatistics,
|
|
60
60
|
getRecentAuditLogs,
|
|
61
61
|
getSkillAuditLogs
|
|
62
|
-
} from "../chunk-
|
|
62
|
+
} from "../chunk-IFGF33R5.js";
|
|
63
63
|
import {
|
|
64
64
|
findCrossProjectPatterns,
|
|
65
65
|
getGlobalMemoryStats,
|
|
66
66
|
listTrackedProjects,
|
|
67
67
|
searchGlobalPatterns,
|
|
68
68
|
updateGlobalMemoryMd
|
|
69
|
-
} from "../chunk-
|
|
69
|
+
} from "../chunk-FFWNZUG2.js";
|
|
70
70
|
import {
|
|
71
71
|
getDailyLogs,
|
|
72
72
|
getMemoryStats,
|
|
@@ -74,16 +74,16 @@ import {
|
|
|
74
74
|
markIssueResolved,
|
|
75
75
|
purgeIssues,
|
|
76
76
|
searchIssues
|
|
77
|
-
} from "../chunk-
|
|
78
|
-
import "../chunk-
|
|
77
|
+
} from "../chunk-OEYIOOYB.js";
|
|
78
|
+
import "../chunk-STEFLYPR.js";
|
|
79
79
|
import "../chunk-6NLHFIYA.js";
|
|
80
|
-
import "../chunk-
|
|
81
|
-
import "../chunk-
|
|
80
|
+
import "../chunk-RNJ6JKMA.js";
|
|
81
|
+
import "../chunk-ODWDESYP.js";
|
|
82
82
|
import {
|
|
83
83
|
getTrieDirectory,
|
|
84
84
|
getWorkingDirectory
|
|
85
|
-
} from "../chunk-
|
|
86
|
-
import "../chunk-
|
|
85
|
+
} from "../chunk-WT3XQCG2.js";
|
|
86
|
+
import "../chunk-JAAIHNOE.js";
|
|
87
87
|
import {
|
|
88
88
|
__require
|
|
89
89
|
} from "../chunk-DGUM43GV.js";
|