fivocell 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-bridge.d.ts +20 -0
- package/dist/ai-bridge.d.ts.map +1 -0
- package/dist/ai-bridge.js +250 -0
- package/dist/ai-bridge.js.map +1 -0
- package/dist/cli.js +133 -3
- package/dist/cli.js.map +1 -1
- package/dist/code-scanner.d.ts.map +1 -1
- package/dist/code-scanner.js +153 -0
- package/dist/code-scanner.js.map +1 -1
- package/dist/core/prompt-builder.d.ts +1 -0
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +55 -16
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/cross-model-engine.d.ts +38 -0
- package/dist/cross-model-engine.d.ts.map +1 -0
- package/dist/cross-model-engine.js +98 -0
- package/dist/cross-model-engine.js.map +1 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +35 -0
- package/dist/daemon/server.js.map +1 -1
- package/dist/knowledge-graph-builder.d.ts +16 -0
- package/dist/knowledge-graph-builder.d.ts.map +1 -0
- package/dist/knowledge-graph-builder.js +170 -0
- package/dist/knowledge-graph-builder.js.map +1 -0
- package/dist/stack-detector.d.ts +34 -0
- package/dist/stack-detector.d.ts.map +1 -0
- package/dist/stack-detector.js +471 -0
- package/dist/stack-detector.js.map +1 -0
- package/dist/team-intel.d.ts +31 -0
- package/dist/team-intel.d.ts.map +1 -0
- package/dist/team-intel.js +310 -0
- package/dist/team-intel.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-model-engine.d.ts","sourceRoot":"","sources":["../src/cross-model-engine.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CA2BP;AAID,wBAAgB,gBAAgB,IAAI,YAAY,EAAE,CA8BjD;AAED,wBAAgB,uBAAuB,IAAI,mBAAmB,EAAE,CAgC/D;AAED,wBAAgB,wBAAwB,IAAI,gBAAgB,CAkB3D"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.recordModelInteraction = recordModelInteraction;
|
|
4
|
+
exports.getModelProfiles = getModelProfiles;
|
|
5
|
+
exports.getModelRecommendations = getModelRecommendations;
|
|
6
|
+
exports.generateCrossModelReport = generateCrossModelReport;
|
|
7
|
+
const database_1 = require("./core/database");
|
|
8
|
+
// ─── Engine ──────────────────────────────────────────────────────────────────
|
|
9
|
+
function recordModelInteraction(params) {
|
|
10
|
+
const db = (0, database_1.getDb)();
|
|
11
|
+
db.exec(`
|
|
12
|
+
CREATE TABLE IF NOT EXISTS model_interactions (
|
|
13
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
14
|
+
model_name TEXT NOT NULL,
|
|
15
|
+
task_type TEXT NOT NULL,
|
|
16
|
+
accepted INTEGER DEFAULT 0,
|
|
17
|
+
response_time_ms INTEGER,
|
|
18
|
+
project TEXT,
|
|
19
|
+
suggestion TEXT,
|
|
20
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
21
|
+
);
|
|
22
|
+
CREATE INDEX IF NOT EXISTS idx_model_interactions_model ON model_interactions(model_name, task_type);
|
|
23
|
+
`);
|
|
24
|
+
db.prepare('INSERT INTO model_interactions (model_name, task_type, accepted, response_time_ms, project, suggestion) VALUES (?, ?, ?, ?, ?, ?)').run(params.modelName, params.taskType, params.accepted ? 1 : 0, params.responseTimeMs || null, params.project || null, params.suggestion || null);
|
|
25
|
+
}
|
|
26
|
+
// ─── Analysis ────────────────────────────────────────────────────────────────
|
|
27
|
+
function getModelProfiles() {
|
|
28
|
+
const db = (0, database_1.getDb)();
|
|
29
|
+
const rows = db.prepare(`
|
|
30
|
+
SELECT model_name, task_type,
|
|
31
|
+
COUNT(*) as total,
|
|
32
|
+
SUM(accepted) as accepted,
|
|
33
|
+
SUM(CASE WHEN accepted = 0 THEN 1 ELSE 0 END) as rejected,
|
|
34
|
+
AVG(response_time_ms) as avg_time
|
|
35
|
+
FROM model_interactions
|
|
36
|
+
GROUP BY model_name, task_type
|
|
37
|
+
HAVING total >= 2
|
|
38
|
+
ORDER BY model_name, accepted DESC
|
|
39
|
+
`).all();
|
|
40
|
+
return rows.map((r) => {
|
|
41
|
+
const total = r.total;
|
|
42
|
+
const accepted = r.accepted;
|
|
43
|
+
const trustScore = total > 0 ? Math.round((accepted / total) * 100) : 50;
|
|
44
|
+
return {
|
|
45
|
+
modelName: r.model_name,
|
|
46
|
+
taskType: r.task_type,
|
|
47
|
+
totalCalls: total,
|
|
48
|
+
acceptedCount: accepted,
|
|
49
|
+
rejectedCount: r.rejected,
|
|
50
|
+
avgResponseTimeMs: Math.round(r.avg_time || 0),
|
|
51
|
+
trustScore,
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function getModelRecommendations() {
|
|
56
|
+
const profiles = getModelProfiles();
|
|
57
|
+
const byTask = new Map();
|
|
58
|
+
for (const p of profiles) {
|
|
59
|
+
const list = byTask.get(p.taskType) || [];
|
|
60
|
+
list.push(p);
|
|
61
|
+
byTask.set(p.taskType, list);
|
|
62
|
+
}
|
|
63
|
+
const recommendations = [];
|
|
64
|
+
for (const [taskType, models] of byTask) {
|
|
65
|
+
models.sort((a, b) => b.trustScore - a.trustScore);
|
|
66
|
+
const best = models[0];
|
|
67
|
+
const alternatives = models.slice(1, 3).map(m => ({ model: m.modelName, trustScore: m.trustScore }));
|
|
68
|
+
let reason = '';
|
|
69
|
+
if (best.trustScore >= 90)
|
|
70
|
+
reason = `"${best.modelName}" consistently delivers — ${best.acceptedCount}/${best.totalCalls} accepted.`;
|
|
71
|
+
else if (best.trustScore >= 70)
|
|
72
|
+
reason = `"${best.modelName}" works well — ${best.trustScore}/100 trust. ${alternatives.length > 0 ? `Better than ${alternatives.map(a => a.model).join(', ')}.` : ''}`;
|
|
73
|
+
else
|
|
74
|
+
reason = `Mixed results (${best.trustScore}/100). Try different tool for this task.`;
|
|
75
|
+
recommendations.push({
|
|
76
|
+
taskType,
|
|
77
|
+
bestModel: best.modelName,
|
|
78
|
+
trustScore: best.trustScore,
|
|
79
|
+
reason,
|
|
80
|
+
alternatives,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return recommendations;
|
|
84
|
+
}
|
|
85
|
+
function generateCrossModelReport() {
|
|
86
|
+
const profiles = getModelProfiles();
|
|
87
|
+
const recommendations = getModelRecommendations();
|
|
88
|
+
const topModel = profiles.reduce((best, p) => p.trustScore > (best?.trustScore || 0) ? p : best, profiles[0]);
|
|
89
|
+
const total = profiles.reduce((s, p) => s + p.totalCalls, 0);
|
|
90
|
+
return {
|
|
91
|
+
profiles: profiles.sort((a, b) => b.trustScore - a.trustScore).slice(0, 20),
|
|
92
|
+
recommendations: recommendations.slice(0, 10),
|
|
93
|
+
bestOverall: topModel?.modelName || 'unknown',
|
|
94
|
+
totalInteractions: total,
|
|
95
|
+
generatedAt: new Date().toISOString(),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=cross-model-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-model-engine.js","sourceRoot":"","sources":["../src/cross-model-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAgDrD,QAAA,MAAM,GAAG,6CAAY,CAAC;AAGtB,QAAA,MAAM,OAAO;;;mBAGuB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqChD,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAgDrD,QAAA,MAAM,GAAG,6CAAY,CAAC;AAGtB,QAAA,MAAM,OAAO;;;mBAGuB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqChD,CAAC;AA0tDF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/daemon/server.js
CHANGED
|
@@ -285,6 +285,23 @@ app.post('/signal', (req, res) => {
|
|
|
285
285
|
return;
|
|
286
286
|
}
|
|
287
287
|
// ─── IDE Signals ──────────────────────────────────────────────
|
|
288
|
+
if (type === 'model_use') {
|
|
289
|
+
// Track AI model interaction
|
|
290
|
+
try {
|
|
291
|
+
const { recordModelInteraction } = require('../cross-model-engine');
|
|
292
|
+
recordModelInteraction({
|
|
293
|
+
modelName: req.body.modelName || 'unknown',
|
|
294
|
+
taskType: req.body.taskType || req.body.type || 'general',
|
|
295
|
+
accepted: req.body.accepted !== false,
|
|
296
|
+
responseTimeMs: req.body.responseTimeMs,
|
|
297
|
+
project,
|
|
298
|
+
suggestion: req.body.suggestion,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
catch { }
|
|
302
|
+
res.json({ recorded: true });
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
288
305
|
if (type === 'tab_switch' || type === 'focus_block' || type === 'file_save') {
|
|
289
306
|
try {
|
|
290
307
|
const db = (0, database_1.getDb)();
|
|
@@ -1729,6 +1746,8 @@ const MCP_TOOLS = [
|
|
|
1729
1746
|
{ name: 'cell_log_stuck', description: 'Log when stuck', inputSchema: { type: 'object', properties: { project: { type: 'string' }, file: { type: 'string' }, description: { type: 'string' } }, required: ['description'] } },
|
|
1730
1747
|
{ name: 'cell_session_bridge', description: 'Cross-session memory bridge — get last session context when switching tools', inputSchema: { type: 'object', properties: { project: { type: 'string' }, tool: { type: 'string' } }, required: ['project'] } },
|
|
1731
1748
|
{ name: 'cell_predict', description: 'Predictive intelligence — repeat mistakes, decision regret, energy warnings, complexity traps', inputSchema: { type: 'object', properties: { project: { type: 'string' } }, required: [] } },
|
|
1749
|
+
{ name: 'cell_model_track', description: 'Track AI model interaction — which tool was used, what task, accepted/rejected', inputSchema: { type: 'object', properties: { modelName: { type: 'string' }, taskType: { type: 'string' }, accepted: { type: 'boolean' }, responseTimeMs: { type: 'number' }, project: { type: 'string' }, suggestion: { type: 'string' } }, required: ['modelName', 'taskType', 'accepted'] } },
|
|
1750
|
+
{ name: 'cell_model_recommend', description: 'Get AI model recommendations — which tool works best for which task', inputSchema: { type: 'object', properties: {} } },
|
|
1732
1751
|
];
|
|
1733
1752
|
async function handleMCPToolCall(name, args) {
|
|
1734
1753
|
switch (name) {
|
|
@@ -1847,6 +1866,22 @@ async function handleMCPToolCall(name, args) {
|
|
|
1847
1866
|
const { generatePredictions } = require('../predictive-engine');
|
|
1848
1867
|
return generatePredictions(args.project);
|
|
1849
1868
|
}
|
|
1869
|
+
case 'cell_model_track': {
|
|
1870
|
+
const { recordModelInteraction } = require('../cross-model-engine');
|
|
1871
|
+
recordModelInteraction({
|
|
1872
|
+
modelName: args.modelName,
|
|
1873
|
+
taskType: args.taskType,
|
|
1874
|
+
accepted: args.accepted,
|
|
1875
|
+
responseTimeMs: args.responseTimeMs,
|
|
1876
|
+
project: args.project,
|
|
1877
|
+
suggestion: args.suggestion,
|
|
1878
|
+
});
|
|
1879
|
+
return { recorded: true };
|
|
1880
|
+
}
|
|
1881
|
+
case 'cell_model_recommend': {
|
|
1882
|
+
const { getModelRecommendations } = require('../cross-model-engine');
|
|
1883
|
+
return { recommendations: getModelRecommendations() };
|
|
1884
|
+
}
|
|
1850
1885
|
default:
|
|
1851
1886
|
return { error: `unknown tool: ${name}` };
|
|
1852
1887
|
}
|