fivocell 1.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/CHANGELOG.md +32 -0
- package/CONTRIBUTING.md +60 -0
- package/LICENSE +98 -0
- package/README.md +267 -0
- package/bin/cell.js +2 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1131 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/ab-test-framework.d.ts +33 -0
- package/dist/core/ab-test-framework.d.ts.map +1 -0
- package/dist/core/ab-test-framework.js +93 -0
- package/dist/core/ab-test-framework.js.map +1 -0
- package/dist/core/ast-extractor.d.ts +10 -0
- package/dist/core/ast-extractor.d.ts.map +1 -0
- package/dist/core/ast-extractor.js +111 -0
- package/dist/core/ast-extractor.js.map +1 -0
- package/dist/core/build-failure-predictor.d.ts +25 -0
- package/dist/core/build-failure-predictor.d.ts.map +1 -0
- package/dist/core/build-failure-predictor.js +124 -0
- package/dist/core/build-failure-predictor.js.map +1 -0
- package/dist/core/cell-pro.d.ts +28 -0
- package/dist/core/cell-pro.d.ts.map +1 -0
- package/dist/core/cell-pro.js +70 -0
- package/dist/core/cell-pro.js.map +1 -0
- package/dist/core/circular-dependency-detector.d.ts +22 -0
- package/dist/core/circular-dependency-detector.d.ts.map +1 -0
- package/dist/core/circular-dependency-detector.js +95 -0
- package/dist/core/circular-dependency-detector.js.map +1 -0
- package/dist/core/cloud-client.d.ts +40 -0
- package/dist/core/cloud-client.d.ts.map +1 -0
- package/dist/core/cloud-client.js +126 -0
- package/dist/core/cloud-client.js.map +1 -0
- package/dist/core/community-full.d.ts +38 -0
- package/dist/core/community-full.d.ts.map +1 -0
- package/dist/core/community-full.js +125 -0
- package/dist/core/community-full.js.map +1 -0
- package/dist/core/community-live.d.ts +31 -0
- package/dist/core/community-live.d.ts.map +1 -0
- package/dist/core/community-live.js +187 -0
- package/dist/core/community-live.js.map +1 -0
- package/dist/core/community-prior.d.ts +25 -0
- package/dist/core/community-prior.d.ts.map +1 -0
- package/dist/core/community-prior.js +181 -0
- package/dist/core/community-prior.js.map +1 -0
- package/dist/core/complexity-analyzer.d.ts +28 -0
- package/dist/core/complexity-analyzer.d.ts.map +1 -0
- package/dist/core/complexity-analyzer.js +110 -0
- package/dist/core/complexity-analyzer.js.map +1 -0
- package/dist/core/confidence-engine.d.ts +16 -0
- package/dist/core/confidence-engine.d.ts.map +1 -0
- package/dist/core/confidence-engine.js +155 -0
- package/dist/core/confidence-engine.js.map +1 -0
- package/dist/core/config-attribution.d.ts +30 -0
- package/dist/core/config-attribution.d.ts.map +1 -0
- package/dist/core/config-attribution.js +288 -0
- package/dist/core/config-attribution.js.map +1 -0
- package/dist/core/conflict-detector.d.ts +43 -0
- package/dist/core/conflict-detector.d.ts.map +1 -0
- package/dist/core/conflict-detector.js +205 -0
- package/dist/core/conflict-detector.js.map +1 -0
- package/dist/core/context-restore.d.ts +25 -0
- package/dist/core/context-restore.d.ts.map +1 -0
- package/dist/core/context-restore.js +129 -0
- package/dist/core/context-restore.js.map +1 -0
- package/dist/core/cross-domain-projections.d.ts +19 -0
- package/dist/core/cross-domain-projections.d.ts.map +1 -0
- package/dist/core/cross-domain-projections.js +69 -0
- package/dist/core/cross-domain-projections.js.map +1 -0
- package/dist/core/cross-language-mappings.d.ts +15 -0
- package/dist/core/cross-language-mappings.d.ts.map +1 -0
- package/dist/core/cross-language-mappings.js +202 -0
- package/dist/core/cross-language-mappings.js.map +1 -0
- package/dist/core/cross-project-sync.d.ts +24 -0
- package/dist/core/cross-project-sync.d.ts.map +1 -0
- package/dist/core/cross-project-sync.js +132 -0
- package/dist/core/cross-project-sync.js.map +1 -0
- package/dist/core/dead-code-detector.d.ts +20 -0
- package/dist/core/dead-code-detector.d.ts.map +1 -0
- package/dist/core/dead-code-detector.js +106 -0
- package/dist/core/dead-code-detector.js.map +1 -0
- package/dist/core/decay-engine.d.ts +14 -0
- package/dist/core/decay-engine.d.ts.map +1 -0
- package/dist/core/decay-engine.js +41 -0
- package/dist/core/decay-engine.js.map +1 -0
- package/dist/core/dependency-health-checker.d.ts +23 -0
- package/dist/core/dependency-health-checker.d.ts.map +1 -0
- package/dist/core/dependency-health-checker.js +94 -0
- package/dist/core/dependency-health-checker.js.map +1 -0
- package/dist/core/duplication-detector.d.ts +29 -0
- package/dist/core/duplication-detector.d.ts.map +1 -0
- package/dist/core/duplication-detector.js +115 -0
- package/dist/core/duplication-detector.js.map +1 -0
- package/dist/core/enterprise-features.d.ts +32 -0
- package/dist/core/enterprise-features.d.ts.map +1 -0
- package/dist/core/enterprise-features.js +87 -0
- package/dist/core/enterprise-features.js.map +1 -0
- package/dist/core/enterprise.d.ts +27 -0
- package/dist/core/enterprise.d.ts.map +1 -0
- package/dist/core/enterprise.js +41 -0
- package/dist/core/enterprise.js.map +1 -0
- package/dist/core/error-predictor.d.ts +16 -0
- package/dist/core/error-predictor.d.ts.map +1 -0
- package/dist/core/error-predictor.js +123 -0
- package/dist/core/error-predictor.js.map +1 -0
- package/dist/core/extraction-cascade.d.ts +18 -0
- package/dist/core/extraction-cascade.d.ts.map +1 -0
- package/dist/core/extraction-cascade.js +48 -0
- package/dist/core/extraction-cascade.js.map +1 -0
- package/dist/core/git-branch-pregenerator.d.ts +23 -0
- package/dist/core/git-branch-pregenerator.d.ts.map +1 -0
- package/dist/core/git-branch-pregenerator.js +100 -0
- package/dist/core/git-branch-pregenerator.js.map +1 -0
- package/dist/core/handoff-detector.d.ts +24 -0
- package/dist/core/handoff-detector.d.ts.map +1 -0
- package/dist/core/handoff-detector.js +116 -0
- package/dist/core/handoff-detector.js.map +1 -0
- package/dist/core/identity-resolver.d.ts +7 -0
- package/dist/core/identity-resolver.d.ts.map +1 -0
- package/dist/core/identity-resolver.js +82 -0
- package/dist/core/identity-resolver.js.map +1 -0
- package/dist/core/interruption-recovery.d.ts +26 -0
- package/dist/core/interruption-recovery.d.ts.map +1 -0
- package/dist/core/interruption-recovery.js +135 -0
- package/dist/core/interruption-recovery.js.map +1 -0
- package/dist/core/knowledge-silo-detector.d.ts +20 -0
- package/dist/core/knowledge-silo-detector.d.ts.map +1 -0
- package/dist/core/knowledge-silo-detector.js +117 -0
- package/dist/core/knowledge-silo-detector.js.map +1 -0
- package/dist/core/language-switch-assistant.d.ts +18 -0
- package/dist/core/language-switch-assistant.d.ts.map +1 -0
- package/dist/core/language-switch-assistant.js +98 -0
- package/dist/core/language-switch-assistant.js.map +1 -0
- package/dist/core/merge-conflict-predictor.d.ts +18 -0
- package/dist/core/merge-conflict-predictor.d.ts.map +1 -0
- package/dist/core/merge-conflict-predictor.js +98 -0
- package/dist/core/merge-conflict-predictor.js.map +1 -0
- package/dist/core/model-intelligence.d.ts +24 -0
- package/dist/core/model-intelligence.d.ts.map +1 -0
- package/dist/core/model-intelligence.js +73 -0
- package/dist/core/model-intelligence.js.map +1 -0
- package/dist/core/next-action-predictor.d.ts +26 -0
- package/dist/core/next-action-predictor.d.ts.map +1 -0
- package/dist/core/next-action-predictor.js +136 -0
- package/dist/core/next-action-predictor.js.map +1 -0
- package/dist/core/offline-queue.d.ts +40 -0
- package/dist/core/offline-queue.d.ts.map +1 -0
- package/dist/core/offline-queue.js +193 -0
- package/dist/core/offline-queue.js.map +1 -0
- package/dist/core/pattern-store.d.ts +27 -0
- package/dist/core/pattern-store.d.ts.map +1 -0
- package/dist/core/pattern-store.js +233 -0
- package/dist/core/pattern-store.js.map +1 -0
- package/dist/core/performance-predictor.d.ts +16 -0
- package/dist/core/performance-predictor.d.ts.map +1 -0
- package/dist/core/performance-predictor.js +111 -0
- package/dist/core/performance-predictor.js.map +1 -0
- package/dist/core/platt-calibration.d.ts +18 -0
- package/dist/core/platt-calibration.d.ts.map +1 -0
- package/dist/core/platt-calibration.js +89 -0
- package/dist/core/platt-calibration.js.map +1 -0
- package/dist/core/pr-review-assistant.d.ts +17 -0
- package/dist/core/pr-review-assistant.d.ts.map +1 -0
- package/dist/core/pr-review-assistant.js +85 -0
- package/dist/core/pr-review-assistant.js.map +1 -0
- package/dist/core/prompt-conditioner.d.ts +10 -0
- package/dist/core/prompt-conditioner.d.ts.map +1 -0
- package/dist/core/prompt-conditioner.js +54 -0
- package/dist/core/prompt-conditioner.js.map +1 -0
- package/dist/core/realtime-guardian.d.ts +19 -0
- package/dist/core/realtime-guardian.d.ts.map +1 -0
- package/dist/core/realtime-guardian.js +64 -0
- package/dist/core/realtime-guardian.js.map +1 -0
- package/dist/core/regex-extractor.d.ts +10 -0
- package/dist/core/regex-extractor.d.ts.map +1 -0
- package/dist/core/regex-extractor.js +141 -0
- package/dist/core/regex-extractor.js.map +1 -0
- package/dist/core/scale-tester.d.ts +20 -0
- package/dist/core/scale-tester.d.ts.map +1 -0
- package/dist/core/scale-tester.js +79 -0
- package/dist/core/scale-tester.js.map +1 -0
- package/dist/core/security-predictor.d.ts +15 -0
- package/dist/core/security-predictor.d.ts.map +1 -0
- package/dist/core/security-predictor.js +91 -0
- package/dist/core/security-predictor.js.map +1 -0
- package/dist/core/session-recovery.d.ts +19 -0
- package/dist/core/session-recovery.d.ts.map +1 -0
- package/dist/core/session-recovery.js +138 -0
- package/dist/core/session-recovery.js.map +1 -0
- package/dist/core/signal-capture.d.ts +22 -0
- package/dist/core/signal-capture.d.ts.map +1 -0
- package/dist/core/signal-capture.js +76 -0
- package/dist/core/signal-capture.js.map +1 -0
- package/dist/core/solution-index.d.ts +33 -0
- package/dist/core/solution-index.d.ts.map +1 -0
- package/dist/core/solution-index.js +175 -0
- package/dist/core/solution-index.js.map +1 -0
- package/dist/core/standup-generator.d.ts +17 -0
- package/dist/core/standup-generator.d.ts.map +1 -0
- package/dist/core/standup-generator.js +84 -0
- package/dist/core/standup-generator.js.map +1 -0
- package/dist/core/team-composer.d.ts +29 -0
- package/dist/core/team-composer.d.ts.map +1 -0
- package/dist/core/team-composer.js +150 -0
- package/dist/core/team-composer.js.map +1 -0
- package/dist/core/test-anticipator.d.ts +17 -0
- package/dist/core/test-anticipator.d.ts.map +1 -0
- package/dist/core/test-anticipator.js +113 -0
- package/dist/core/test-anticipator.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +19 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +199 -0
- package/dist/daemon/lifecycle.js.map +1 -0
- package/dist/daemon/server.d.ts +81 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +505 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/watchdog.d.ts +2 -0
- package/dist/daemon/watchdog.d.ts.map +1 -0
- package/dist/daemon/watchdog.js +93 -0
- package/dist/daemon/watchdog.js.map +1 -0
- package/dist/daemon/websocket.d.ts +5 -0
- package/dist/daemon/websocket.d.ts.map +1 -0
- package/dist/daemon/websocket.js +90 -0
- package/dist/daemon/websocket.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +88 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +28 -0
- package/dist/types.js.map +1 -0
- package/extensions/jetbrains/plugin.json +9 -0
- package/extensions/shell/copilot-sync.js +59 -0
- package/extensions/shell/install.sh +38 -0
- package/extensions/shell/watcher.js +113 -0
- package/extensions/vscode/.vscodeignore +5 -0
- package/extensions/vscode/dist/daemon-client.js +94 -0
- package/extensions/vscode/dist/diff-tracker.js +94 -0
- package/extensions/vscode/dist/extension.js +100 -0
- package/extensions/vscode/dist/status-bar.js +70 -0
- package/extensions/vscode/package-lock.json +40 -0
- package/extensions/vscode/package.json +27 -0
- package/package.json +53 -0
- package/packages/mcp-server/dist/server.d.ts +2 -0
- package/packages/mcp-server/dist/server.js +213 -0
- package/packages/mcp-server/package-lock.json +970 -0
- package/packages/mcp-server/package.json +19 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../../src/daemon/watchdog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/daemon/websocket.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAa,MAAM,IAAI,CAAC;AAahD,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAuCrE;AAED,wBAAgB,eAAe,IAAI,MAAM,CAAyB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// WebSocket Server — wss:// real-time guardian stream
|
|
3
|
+
// TLS via mkcert, fallback to ws:// with token auth
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
+
var ownKeys = function(o) {
|
|
22
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
+
var ar = [];
|
|
24
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
return ownKeys(o);
|
|
28
|
+
};
|
|
29
|
+
return function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.initWebSocket = initWebSocket;
|
|
39
|
+
exports.getDaemonSecret = getDaemonSecret;
|
|
40
|
+
const ws_1 = require("ws");
|
|
41
|
+
const crypto = __importStar(require("crypto"));
|
|
42
|
+
const realtime_guardian_1 = require("../core/realtime-guardian");
|
|
43
|
+
const clients = new Map();
|
|
44
|
+
let daemonSecret;
|
|
45
|
+
function initWebSocket(httpServer) {
|
|
46
|
+
daemonSecret = crypto.randomBytes(32).toString('hex');
|
|
47
|
+
const wss = new ws_1.WebSocketServer({ server: httpServer, path: '/ws' });
|
|
48
|
+
wss.on('connection', (ws) => {
|
|
49
|
+
const clientId = crypto.randomUUID();
|
|
50
|
+
const client = { ws, token: '', authenticated: false };
|
|
51
|
+
clients.set(clientId, client);
|
|
52
|
+
ws.on('message', (data) => {
|
|
53
|
+
try {
|
|
54
|
+
const msg = JSON.parse(data.toString());
|
|
55
|
+
if (msg.type === 'auth') {
|
|
56
|
+
const expectedToken = crypto.createHash('sha256').update(msg.deviceId + daemonSecret).digest('hex');
|
|
57
|
+
if (msg.token === expectedToken) {
|
|
58
|
+
client.token = msg.token;
|
|
59
|
+
client.authenticated = true;
|
|
60
|
+
ws.send(JSON.stringify({ type: 'auth_ok' }));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
ws.send(JSON.stringify({ type: 'auth_fail' }));
|
|
64
|
+
ws.close();
|
|
65
|
+
}
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!client.authenticated) {
|
|
69
|
+
ws.send(JSON.stringify({ type: 'error', message: 'not authenticated' }));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (msg.type === 'analyze') {
|
|
73
|
+
const alerts = (0, realtime_guardian_1.analyzeLine)(msg.code, msg.line);
|
|
74
|
+
if (alerts.length > 0)
|
|
75
|
+
ws.send(JSON.stringify({ type: 'alerts', alerts }));
|
|
76
|
+
}
|
|
77
|
+
if (msg.type === 'feedback') {
|
|
78
|
+
(0, realtime_guardian_1.recordFeedback)(msg.alertMessage, msg.helpful);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
ws.send(JSON.stringify({ type: 'error', message: 'invalid message' }));
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
ws.on('close', () => { clients.delete(clientId); });
|
|
86
|
+
});
|
|
87
|
+
return wss;
|
|
88
|
+
}
|
|
89
|
+
function getDaemonSecret() { return daemonSecret; }
|
|
90
|
+
//# sourceMappingURL=websocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/daemon/websocket.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export { SignalCapture } from './core/signal-capture';
|
|
2
|
+
export { RegexExtractor } from './core/regex-extractor';
|
|
3
|
+
export { ASTExtractor } from './core/ast-extractor';
|
|
4
|
+
export { ExtractionCascade } from './core/extraction-cascade';
|
|
5
|
+
export { ConfidenceEngine } from './core/confidence-engine';
|
|
6
|
+
export { DecayEngine } from './core/decay-engine';
|
|
7
|
+
export { PatternStore } from './core/pattern-store';
|
|
8
|
+
export { PromptConditioner } from './core/prompt-conditioner';
|
|
9
|
+
export { ConfigAttribution } from './core/config-attribution';
|
|
10
|
+
export { TeamComposer } from './core/team-composer';
|
|
11
|
+
export { ConflictDetector } from './core/conflict-detector';
|
|
12
|
+
export { CommunityPrior } from './core/community-prior';
|
|
13
|
+
export { PlattCalibration } from './core/platt-calibration';
|
|
14
|
+
export { NextActionPredictor } from './core/next-action-predictor';
|
|
15
|
+
export { GitBranchPreGenerator } from './core/git-branch-pregenerator';
|
|
16
|
+
export { TestAnticipator } from './core/test-anticipator';
|
|
17
|
+
export { ErrorPredictor } from './core/error-predictor';
|
|
18
|
+
export { BuildFailurePredictor } from './core/build-failure-predictor';
|
|
19
|
+
export { MergeConflictPredictor } from './core/merge-conflict-predictor';
|
|
20
|
+
export { SecurityPredictor } from './core/security-predictor';
|
|
21
|
+
export { PerformancePredictor } from './core/performance-predictor';
|
|
22
|
+
export { ContextRestore } from './core/context-restore';
|
|
23
|
+
export { CrossProjectSync } from './core/cross-project-sync';
|
|
24
|
+
export { SolutionIndex } from './core/solution-index';
|
|
25
|
+
export { LanguageSwitchAssistant } from './core/language-switch-assistant';
|
|
26
|
+
export { InterruptionRecovery } from './core/interruption-recovery';
|
|
27
|
+
export { HandoffDetector } from './core/handoff-detector';
|
|
28
|
+
export { KnowledgeSiloDetector } from './core/knowledge-silo-detector';
|
|
29
|
+
export { PRReviewAssistant } from './core/pr-review-assistant';
|
|
30
|
+
export { StandupGenerator } from './core/standup-generator';
|
|
31
|
+
export { OfflineQueue } from './core/offline-queue';
|
|
32
|
+
export { DeadCodeDetector } from './core/dead-code-detector';
|
|
33
|
+
export { CircularDependencyDetector } from './core/circular-dependency-detector';
|
|
34
|
+
export { DuplicationDetector } from './core/duplication-detector';
|
|
35
|
+
export { ComplexityAnalyzer } from './core/complexity-analyzer';
|
|
36
|
+
export { DependencyHealthChecker } from './core/dependency-health-checker';
|
|
37
|
+
export { ABTestFramework } from './core/ab-test-framework';
|
|
38
|
+
export { CommunityLive } from './core/community-live';
|
|
39
|
+
export { CommunityFull } from './core/community-full';
|
|
40
|
+
export { EnterpriseFeatures } from './core/enterprise-features';
|
|
41
|
+
export { CrossDomainProjections } from './core/cross-domain-projections';
|
|
42
|
+
export type { SignalType, ConfidenceTier, Pattern, PatternCondition, PatternConfidence, PatternAttribution, Signal, SignalContext, ExtractedPattern, TasteModel, CellConfig, } from './types';
|
|
43
|
+
export { SIGNAL_WEIGHTS, CONFIDENCE_TIERS, DEFAULT_CONFIG, } from './types';
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_CONFIG = exports.CONFIDENCE_TIERS = exports.SIGNAL_WEIGHTS = exports.CrossDomainProjections = exports.EnterpriseFeatures = exports.CommunityFull = exports.CommunityLive = exports.ABTestFramework = exports.DependencyHealthChecker = exports.ComplexityAnalyzer = exports.DuplicationDetector = exports.CircularDependencyDetector = exports.DeadCodeDetector = exports.OfflineQueue = exports.StandupGenerator = exports.PRReviewAssistant = exports.KnowledgeSiloDetector = exports.HandoffDetector = exports.InterruptionRecovery = exports.LanguageSwitchAssistant = exports.SolutionIndex = exports.CrossProjectSync = exports.ContextRestore = exports.PerformancePredictor = exports.SecurityPredictor = exports.MergeConflictPredictor = exports.BuildFailurePredictor = exports.ErrorPredictor = exports.TestAnticipator = exports.GitBranchPreGenerator = exports.NextActionPredictor = exports.PlattCalibration = exports.CommunityPrior = exports.ConflictDetector = exports.TeamComposer = exports.ConfigAttribution = exports.PromptConditioner = exports.PatternStore = exports.DecayEngine = exports.ConfidenceEngine = exports.ExtractionCascade = exports.ASTExtractor = exports.RegexExtractor = exports.SignalCapture = void 0;
|
|
4
|
+
var signal_capture_1 = require("./core/signal-capture");
|
|
5
|
+
Object.defineProperty(exports, "SignalCapture", { enumerable: true, get: function () { return signal_capture_1.SignalCapture; } });
|
|
6
|
+
var regex_extractor_1 = require("./core/regex-extractor");
|
|
7
|
+
Object.defineProperty(exports, "RegexExtractor", { enumerable: true, get: function () { return regex_extractor_1.RegexExtractor; } });
|
|
8
|
+
var ast_extractor_1 = require("./core/ast-extractor");
|
|
9
|
+
Object.defineProperty(exports, "ASTExtractor", { enumerable: true, get: function () { return ast_extractor_1.ASTExtractor; } });
|
|
10
|
+
var extraction_cascade_1 = require("./core/extraction-cascade");
|
|
11
|
+
Object.defineProperty(exports, "ExtractionCascade", { enumerable: true, get: function () { return extraction_cascade_1.ExtractionCascade; } });
|
|
12
|
+
var confidence_engine_1 = require("./core/confidence-engine");
|
|
13
|
+
Object.defineProperty(exports, "ConfidenceEngine", { enumerable: true, get: function () { return confidence_engine_1.ConfidenceEngine; } });
|
|
14
|
+
var decay_engine_1 = require("./core/decay-engine");
|
|
15
|
+
Object.defineProperty(exports, "DecayEngine", { enumerable: true, get: function () { return decay_engine_1.DecayEngine; } });
|
|
16
|
+
var pattern_store_1 = require("./core/pattern-store");
|
|
17
|
+
Object.defineProperty(exports, "PatternStore", { enumerable: true, get: function () { return pattern_store_1.PatternStore; } });
|
|
18
|
+
var prompt_conditioner_1 = require("./core/prompt-conditioner");
|
|
19
|
+
Object.defineProperty(exports, "PromptConditioner", { enumerable: true, get: function () { return prompt_conditioner_1.PromptConditioner; } });
|
|
20
|
+
var config_attribution_1 = require("./core/config-attribution");
|
|
21
|
+
Object.defineProperty(exports, "ConfigAttribution", { enumerable: true, get: function () { return config_attribution_1.ConfigAttribution; } });
|
|
22
|
+
var team_composer_1 = require("./core/team-composer");
|
|
23
|
+
Object.defineProperty(exports, "TeamComposer", { enumerable: true, get: function () { return team_composer_1.TeamComposer; } });
|
|
24
|
+
var conflict_detector_1 = require("./core/conflict-detector");
|
|
25
|
+
Object.defineProperty(exports, "ConflictDetector", { enumerable: true, get: function () { return conflict_detector_1.ConflictDetector; } });
|
|
26
|
+
var community_prior_1 = require("./core/community-prior");
|
|
27
|
+
Object.defineProperty(exports, "CommunityPrior", { enumerable: true, get: function () { return community_prior_1.CommunityPrior; } });
|
|
28
|
+
var platt_calibration_1 = require("./core/platt-calibration");
|
|
29
|
+
Object.defineProperty(exports, "PlattCalibration", { enumerable: true, get: function () { return platt_calibration_1.PlattCalibration; } });
|
|
30
|
+
var next_action_predictor_1 = require("./core/next-action-predictor");
|
|
31
|
+
Object.defineProperty(exports, "NextActionPredictor", { enumerable: true, get: function () { return next_action_predictor_1.NextActionPredictor; } });
|
|
32
|
+
var git_branch_pregenerator_1 = require("./core/git-branch-pregenerator");
|
|
33
|
+
Object.defineProperty(exports, "GitBranchPreGenerator", { enumerable: true, get: function () { return git_branch_pregenerator_1.GitBranchPreGenerator; } });
|
|
34
|
+
var test_anticipator_1 = require("./core/test-anticipator");
|
|
35
|
+
Object.defineProperty(exports, "TestAnticipator", { enumerable: true, get: function () { return test_anticipator_1.TestAnticipator; } });
|
|
36
|
+
var error_predictor_1 = require("./core/error-predictor");
|
|
37
|
+
Object.defineProperty(exports, "ErrorPredictor", { enumerable: true, get: function () { return error_predictor_1.ErrorPredictor; } });
|
|
38
|
+
var build_failure_predictor_1 = require("./core/build-failure-predictor");
|
|
39
|
+
Object.defineProperty(exports, "BuildFailurePredictor", { enumerable: true, get: function () { return build_failure_predictor_1.BuildFailurePredictor; } });
|
|
40
|
+
var merge_conflict_predictor_1 = require("./core/merge-conflict-predictor");
|
|
41
|
+
Object.defineProperty(exports, "MergeConflictPredictor", { enumerable: true, get: function () { return merge_conflict_predictor_1.MergeConflictPredictor; } });
|
|
42
|
+
var security_predictor_1 = require("./core/security-predictor");
|
|
43
|
+
Object.defineProperty(exports, "SecurityPredictor", { enumerable: true, get: function () { return security_predictor_1.SecurityPredictor; } });
|
|
44
|
+
var performance_predictor_1 = require("./core/performance-predictor");
|
|
45
|
+
Object.defineProperty(exports, "PerformancePredictor", { enumerable: true, get: function () { return performance_predictor_1.PerformancePredictor; } });
|
|
46
|
+
var context_restore_1 = require("./core/context-restore");
|
|
47
|
+
Object.defineProperty(exports, "ContextRestore", { enumerable: true, get: function () { return context_restore_1.ContextRestore; } });
|
|
48
|
+
var cross_project_sync_1 = require("./core/cross-project-sync");
|
|
49
|
+
Object.defineProperty(exports, "CrossProjectSync", { enumerable: true, get: function () { return cross_project_sync_1.CrossProjectSync; } });
|
|
50
|
+
var solution_index_1 = require("./core/solution-index");
|
|
51
|
+
Object.defineProperty(exports, "SolutionIndex", { enumerable: true, get: function () { return solution_index_1.SolutionIndex; } });
|
|
52
|
+
var language_switch_assistant_1 = require("./core/language-switch-assistant");
|
|
53
|
+
Object.defineProperty(exports, "LanguageSwitchAssistant", { enumerable: true, get: function () { return language_switch_assistant_1.LanguageSwitchAssistant; } });
|
|
54
|
+
var interruption_recovery_1 = require("./core/interruption-recovery");
|
|
55
|
+
Object.defineProperty(exports, "InterruptionRecovery", { enumerable: true, get: function () { return interruption_recovery_1.InterruptionRecovery; } });
|
|
56
|
+
var handoff_detector_1 = require("./core/handoff-detector");
|
|
57
|
+
Object.defineProperty(exports, "HandoffDetector", { enumerable: true, get: function () { return handoff_detector_1.HandoffDetector; } });
|
|
58
|
+
var knowledge_silo_detector_1 = require("./core/knowledge-silo-detector");
|
|
59
|
+
Object.defineProperty(exports, "KnowledgeSiloDetector", { enumerable: true, get: function () { return knowledge_silo_detector_1.KnowledgeSiloDetector; } });
|
|
60
|
+
var pr_review_assistant_1 = require("./core/pr-review-assistant");
|
|
61
|
+
Object.defineProperty(exports, "PRReviewAssistant", { enumerable: true, get: function () { return pr_review_assistant_1.PRReviewAssistant; } });
|
|
62
|
+
var standup_generator_1 = require("./core/standup-generator");
|
|
63
|
+
Object.defineProperty(exports, "StandupGenerator", { enumerable: true, get: function () { return standup_generator_1.StandupGenerator; } });
|
|
64
|
+
var offline_queue_1 = require("./core/offline-queue");
|
|
65
|
+
Object.defineProperty(exports, "OfflineQueue", { enumerable: true, get: function () { return offline_queue_1.OfflineQueue; } });
|
|
66
|
+
var dead_code_detector_1 = require("./core/dead-code-detector");
|
|
67
|
+
Object.defineProperty(exports, "DeadCodeDetector", { enumerable: true, get: function () { return dead_code_detector_1.DeadCodeDetector; } });
|
|
68
|
+
var circular_dependency_detector_1 = require("./core/circular-dependency-detector");
|
|
69
|
+
Object.defineProperty(exports, "CircularDependencyDetector", { enumerable: true, get: function () { return circular_dependency_detector_1.CircularDependencyDetector; } });
|
|
70
|
+
var duplication_detector_1 = require("./core/duplication-detector");
|
|
71
|
+
Object.defineProperty(exports, "DuplicationDetector", { enumerable: true, get: function () { return duplication_detector_1.DuplicationDetector; } });
|
|
72
|
+
var complexity_analyzer_1 = require("./core/complexity-analyzer");
|
|
73
|
+
Object.defineProperty(exports, "ComplexityAnalyzer", { enumerable: true, get: function () { return complexity_analyzer_1.ComplexityAnalyzer; } });
|
|
74
|
+
var dependency_health_checker_1 = require("./core/dependency-health-checker");
|
|
75
|
+
Object.defineProperty(exports, "DependencyHealthChecker", { enumerable: true, get: function () { return dependency_health_checker_1.DependencyHealthChecker; } });
|
|
76
|
+
var ab_test_framework_1 = require("./core/ab-test-framework");
|
|
77
|
+
Object.defineProperty(exports, "ABTestFramework", { enumerable: true, get: function () { return ab_test_framework_1.ABTestFramework; } });
|
|
78
|
+
var community_live_1 = require("./core/community-live");
|
|
79
|
+
Object.defineProperty(exports, "CommunityLive", { enumerable: true, get: function () { return community_live_1.CommunityLive; } });
|
|
80
|
+
var community_full_1 = require("./core/community-full");
|
|
81
|
+
Object.defineProperty(exports, "CommunityFull", { enumerable: true, get: function () { return community_full_1.CommunityFull; } });
|
|
82
|
+
var enterprise_features_1 = require("./core/enterprise-features");
|
|
83
|
+
Object.defineProperty(exports, "EnterpriseFeatures", { enumerable: true, get: function () { return enterprise_features_1.EnterpriseFeatures; } });
|
|
84
|
+
var cross_domain_projections_1 = require("./core/cross-domain-projections");
|
|
85
|
+
Object.defineProperty(exports, "CrossDomainProjections", { enumerable: true, get: function () { return cross_domain_projections_1.CrossDomainProjections; } });
|
|
86
|
+
var types_1 = require("./types");
|
|
87
|
+
Object.defineProperty(exports, "SIGNAL_WEIGHTS", { enumerable: true, get: function () { return types_1.SIGNAL_WEIGHTS; } });
|
|
88
|
+
Object.defineProperty(exports, "CONFIDENCE_TIERS", { enumerable: true, get: function () { return types_1.CONFIDENCE_TIERS; } });
|
|
89
|
+
Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return types_1.DEFAULT_CONFIG; } });
|
|
90
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wDAAsD;AAA7C,+GAAA,aAAa,OAAA;AACtB,0DAAwD;AAA/C,iHAAA,cAAc,OAAA;AACvB,sDAAoD;AAA3C,6GAAA,YAAY,OAAA;AACrB,gEAA8D;AAArD,uHAAA,iBAAiB,OAAA;AAC1B,8DAA4D;AAAnD,qHAAA,gBAAgB,OAAA;AACzB,oDAAkD;AAAzC,2GAAA,WAAW,OAAA;AACpB,sDAAoD;AAA3C,6GAAA,YAAY,OAAA;AACrB,gEAA8D;AAArD,uHAAA,iBAAiB,OAAA;AAC1B,gEAA8D;AAArD,uHAAA,iBAAiB,OAAA;AAC1B,sDAAoD;AAA3C,6GAAA,YAAY,OAAA;AACrB,8DAA4D;AAAnD,qHAAA,gBAAgB,OAAA;AACzB,0DAAwD;AAA/C,iHAAA,cAAc,OAAA;AACvB,8DAA4D;AAAnD,qHAAA,gBAAgB,OAAA;AACzB,sEAAmE;AAA1D,4HAAA,mBAAmB,OAAA;AAC5B,0EAAuE;AAA9D,gIAAA,qBAAqB,OAAA;AAC9B,4DAA0D;AAAjD,mHAAA,eAAe,OAAA;AACxB,0DAAwD;AAA/C,iHAAA,cAAc,OAAA;AACvB,0EAAuE;AAA9D,gIAAA,qBAAqB,OAAA;AAC9B,4EAAyE;AAAhE,kIAAA,sBAAsB,OAAA;AAC/B,gEAA8D;AAArD,uHAAA,iBAAiB,OAAA;AAC1B,sEAAoE;AAA3D,6HAAA,oBAAoB,OAAA;AAC7B,0DAAwD;AAA/C,iHAAA,cAAc,OAAA;AACvB,gEAA6D;AAApD,sHAAA,gBAAgB,OAAA;AACzB,wDAAsD;AAA7C,+GAAA,aAAa,OAAA;AACtB,8EAA2E;AAAlE,oIAAA,uBAAuB,OAAA;AAChC,sEAAoE;AAA3D,6HAAA,oBAAoB,OAAA;AAC7B,4DAA0D;AAAjD,mHAAA,eAAe,OAAA;AACxB,0EAAuE;AAA9D,gIAAA,qBAAqB,OAAA;AAC9B,kEAA+D;AAAtD,wHAAA,iBAAiB,OAAA;AAC1B,8DAA4D;AAAnD,qHAAA,gBAAgB,OAAA;AACzB,sDAAoD;AAA3C,6GAAA,YAAY,OAAA;AACrB,gEAA6D;AAApD,sHAAA,gBAAgB,OAAA;AACzB,oFAAiF;AAAxE,0IAAA,0BAA0B,OAAA;AACnC,oEAAkE;AAAzD,2HAAA,mBAAmB,OAAA;AAC5B,kEAAgE;AAAvD,yHAAA,kBAAkB,OAAA;AAC3B,8EAA2E;AAAlE,oIAAA,uBAAuB,OAAA;AAChC,8DAA2D;AAAlD,oHAAA,eAAe,OAAA;AACxB,wDAAsD;AAA7C,+GAAA,aAAa,OAAA;AACtB,wDAAsD;AAA7C,+GAAA,aAAa,OAAA;AACtB,kEAAgE;AAAvD,yHAAA,kBAAkB,OAAA;AAC3B,4EAAyE;AAAhE,kIAAA,sBAAsB,OAAA;AAgB/B,iCAIiB;AAHf,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,uGAAA,cAAc,OAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export type SignalType = 'edit_diff' | 'accept' | 'reject' | 'retry';
|
|
2
|
+
export type ConfidenceTier = 'strong' | 'moderate' | 'weak' | 'uncertain';
|
|
3
|
+
export interface PatternCondition {
|
|
4
|
+
type: 'language' | 'framework' | 'file_type' | 'strictness' | 'team_convention';
|
|
5
|
+
value: string;
|
|
6
|
+
matchScore: number;
|
|
7
|
+
}
|
|
8
|
+
export interface PatternConfidence {
|
|
9
|
+
distribution: 'beta';
|
|
10
|
+
alpha: number;
|
|
11
|
+
beta: number;
|
|
12
|
+
mean: number;
|
|
13
|
+
ci95: [number, number];
|
|
14
|
+
}
|
|
15
|
+
export interface PatternAttribution {
|
|
16
|
+
primaryCondition: string;
|
|
17
|
+
conditionConfidence: number;
|
|
18
|
+
sourceFiles: string[];
|
|
19
|
+
note: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Pattern {
|
|
22
|
+
patternId: string;
|
|
23
|
+
category: string;
|
|
24
|
+
description: string;
|
|
25
|
+
from: string;
|
|
26
|
+
to: string;
|
|
27
|
+
conditions: PatternCondition[];
|
|
28
|
+
confidence: PatternConfidence;
|
|
29
|
+
signals: {
|
|
30
|
+
positive: number;
|
|
31
|
+
negative: number;
|
|
32
|
+
total: number;
|
|
33
|
+
lastSignal: number;
|
|
34
|
+
};
|
|
35
|
+
attribution: PatternAttribution;
|
|
36
|
+
scope: 'global' | 'project' | 'team';
|
|
37
|
+
survivedDays: number;
|
|
38
|
+
}
|
|
39
|
+
export interface Signal {
|
|
40
|
+
id: string;
|
|
41
|
+
type: SignalType;
|
|
42
|
+
timestamp: number;
|
|
43
|
+
sessionId: string;
|
|
44
|
+
originalCode: string;
|
|
45
|
+
editedCode: string;
|
|
46
|
+
weight: number;
|
|
47
|
+
context: SignalContext;
|
|
48
|
+
}
|
|
49
|
+
export interface SignalContext {
|
|
50
|
+
language: string;
|
|
51
|
+
framework: string;
|
|
52
|
+
fileType: string;
|
|
53
|
+
strictness: string;
|
|
54
|
+
projectId: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ExtractedPattern {
|
|
57
|
+
category: string;
|
|
58
|
+
description: string;
|
|
59
|
+
from: string;
|
|
60
|
+
to: string;
|
|
61
|
+
confidenceDelta: number;
|
|
62
|
+
conditions: PatternCondition[];
|
|
63
|
+
}
|
|
64
|
+
export interface TasteModel {
|
|
65
|
+
version: string;
|
|
66
|
+
lastUpdated: string;
|
|
67
|
+
totalSignals: number;
|
|
68
|
+
patterns: Pattern[];
|
|
69
|
+
}
|
|
70
|
+
export declare const TASTE_MODEL_VERSION = "0.2.0";
|
|
71
|
+
export interface CellConfig {
|
|
72
|
+
cellDir: string;
|
|
73
|
+
priorWeight: number;
|
|
74
|
+
decayLambdaStable: number;
|
|
75
|
+
decayLambdaVolatile: number;
|
|
76
|
+
decayAlphaStable: number;
|
|
77
|
+
decayAlphaVolatile: number;
|
|
78
|
+
sessionGapMinutes: number;
|
|
79
|
+
vacationDays: number;
|
|
80
|
+
cloudSyncEnabled: boolean;
|
|
81
|
+
}
|
|
82
|
+
export declare const SIGNAL_WEIGHTS: Record<SignalType, number>;
|
|
83
|
+
export declare const CONFIDENCE_TIERS: Record<ConfidenceTier, {
|
|
84
|
+
min: number;
|
|
85
|
+
max: number;
|
|
86
|
+
}>;
|
|
87
|
+
export declare const DEFAULT_CONFIG: CellConfig;
|
|
88
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_CONFIG = exports.CONFIDENCE_TIERS = exports.SIGNAL_WEIGHTS = exports.TASTE_MODEL_VERSION = void 0;
|
|
4
|
+
exports.TASTE_MODEL_VERSION = '0.2.0';
|
|
5
|
+
exports.SIGNAL_WEIGHTS = {
|
|
6
|
+
edit_diff: 1.0,
|
|
7
|
+
reject: 0.5,
|
|
8
|
+
retry: 0.3,
|
|
9
|
+
accept: 1.5,
|
|
10
|
+
};
|
|
11
|
+
exports.CONFIDENCE_TIERS = {
|
|
12
|
+
strong: { min: 0.8, max: 1.0 },
|
|
13
|
+
moderate: { min: 0.5, max: 0.79 },
|
|
14
|
+
weak: { min: 0.3, max: 0.5 },
|
|
15
|
+
uncertain: { min: 0.0, max: 0.3 },
|
|
16
|
+
};
|
|
17
|
+
exports.DEFAULT_CONFIG = {
|
|
18
|
+
cellDir: '.fivo/cell',
|
|
19
|
+
priorWeight: 10,
|
|
20
|
+
decayLambdaStable: 0.01,
|
|
21
|
+
decayLambdaVolatile: 0.05,
|
|
22
|
+
decayAlphaStable: 0.3,
|
|
23
|
+
decayAlphaVolatile: 0.7,
|
|
24
|
+
sessionGapMinutes: 30,
|
|
25
|
+
vacationDays: 5,
|
|
26
|
+
cloudSyncEnabled: true,
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+Ea,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAc9B,QAAA,cAAc,GAA+B;IACxD,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;CACZ,CAAC;AAEW,QAAA,gBAAgB,GAAyD;IACpF,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC9B,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;IACjC,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC5B,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CAClC,CAAC;AAEW,QAAA,cAAc,GAAe;IACxC,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,EAAE;IACf,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,GAAG;IACrB,kBAAkB,EAAE,GAAG;IACvB,iBAAiB,EAAE,EAAE;IACrB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,IAAI;CACvB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Cell Copilot Integration — auto-updates .github/copilot-instructions.md
|
|
3
|
+
|
|
4
|
+
const http = require('http');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
|
|
8
|
+
const DAEMON = 'http://localhost:9876';
|
|
9
|
+
const OUTPUT_FILE = path.join(process.cwd(), '.github', 'copilot-instructions.md');
|
|
10
|
+
|
|
11
|
+
function fetchTaste() {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
http.get(`${DAEMON}/taste/profile`, (res) => {
|
|
14
|
+
let data = '';
|
|
15
|
+
res.on('data', (chunk) => (data += chunk));
|
|
16
|
+
res.on('end', () => {
|
|
17
|
+
try { resolve(JSON.parse(data)); } catch (e) { reject(e); }
|
|
18
|
+
});
|
|
19
|
+
}).on('error', reject);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function generate() {
|
|
24
|
+
try {
|
|
25
|
+
const profile = await fetchTaste();
|
|
26
|
+
const patterns = profile.patterns || [];
|
|
27
|
+
const strong = patterns.filter((p) => p.confidence?.mean > 0.8);
|
|
28
|
+
|
|
29
|
+
if (strong.length === 0) {
|
|
30
|
+
console.log('No strong patterns yet. Skipping Copilot instructions update.');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const dir = path.dirname(OUTPUT_FILE);
|
|
35
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
36
|
+
|
|
37
|
+
const version = Date.now();
|
|
38
|
+
let md = `# Cell Taste | v${version} | ${new Date().toISOString()} | ${strong.length} patterns\n\n`;
|
|
39
|
+
md += '> Auto-generated by FIVO Cell. Updated when taste meaningfully shifts.\n\n';
|
|
40
|
+
md += '## Your Coding Preferences\n\n';
|
|
41
|
+
|
|
42
|
+
for (const p of strong) {
|
|
43
|
+
md += `- **${p.description}** (confidence: ${p.confidence?.mean})\n`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
md += '\n## Instructions for Copilot\n\n';
|
|
47
|
+
md += 'Please follow these preferences when generating code:\n\n';
|
|
48
|
+
for (const p of strong) {
|
|
49
|
+
md += `- ${p.description}\n`;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
fs.writeFileSync(OUTPUT_FILE, md, 'utf-8');
|
|
53
|
+
console.log(`✅ Copilot instructions updated: ${OUTPUT_FILE} (${strong.length} patterns)`);
|
|
54
|
+
} catch (err) {
|
|
55
|
+
console.error('Copilot integration error:', err.message);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
generate();
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Cell Shell Hook Installer
|
|
3
|
+
# Adds watcher to shell rc file
|
|
4
|
+
|
|
5
|
+
HOOK_DIR="$HOME/.fivo/cell"
|
|
6
|
+
WATCHER="$HOOK_DIR/watcher.js"
|
|
7
|
+
RC_FILE=""
|
|
8
|
+
|
|
9
|
+
if [ -f "$HOME/.bashrc" ]; then RC_FILE="$HOME/.bashrc"; fi
|
|
10
|
+
if [ -f "$HOME/.zshrc" ]; then RC_FILE="$HOME/.zshrc"; fi
|
|
11
|
+
if [ -f "$HOME/.config/fish/config.fish" ]; then RC_FILE="$HOME/.config/fish/config.fish"; fi
|
|
12
|
+
|
|
13
|
+
if [ -z "$RC_FILE" ]; then
|
|
14
|
+
echo "No shell rc file found (.bashrc, .zshrc, config.fish)"
|
|
15
|
+
exit 1
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
mkdir -p "$HOOK_DIR"
|
|
19
|
+
cp "$(dirname "$0")/watcher.js" "$WATCHER"
|
|
20
|
+
|
|
21
|
+
if grep -q "fivo-cell-daemon" "$RC_FILE" 2>/dev/null; then
|
|
22
|
+
echo "Cell daemon already in $RC_FILE"
|
|
23
|
+
else
|
|
24
|
+
echo "" >> "$RC_FILE"
|
|
25
|
+
echo "# FIVO Cell — auto-start daemon" >> "$RC_FILE"
|
|
26
|
+
echo "if command -v cell &> /dev/null; then cell daemon start --silent 2>/dev/null & fi" >> "$RC_FILE"
|
|
27
|
+
echo "✅ Cell daemon auto-start added to $RC_FILE"
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
if grep -q "fivo-cell-watcher" "$RC_FILE" 2>/dev/null; then
|
|
31
|
+
echo "Cell watcher already installed in $RC_FILE"
|
|
32
|
+
else
|
|
33
|
+
echo "" >> "$RC_FILE"
|
|
34
|
+
echo "# FIVO Cell — taste learning watcher" >> "$RC_FILE"
|
|
35
|
+
echo "node $WATCHER &" >> "$RC_FILE"
|
|
36
|
+
echo "✅ Cell watcher installed in $RC_FILE"
|
|
37
|
+
echo " Restart your shell or run: source $RC_FILE"
|
|
38
|
+
fi
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Cell Shell Hook — watches file changes and sends signals to daemon
|
|
3
|
+
|
|
4
|
+
const http = require('http');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
|
|
8
|
+
const DAEMON = 'http://localhost:9876';
|
|
9
|
+
const WATCH_DIR = process.argv[2] || process.cwd();
|
|
10
|
+
const DEBOUNCE_MS = 3000;
|
|
11
|
+
|
|
12
|
+
// Auto-start daemon if not running
|
|
13
|
+
function ensureDaemon() {
|
|
14
|
+
http.get(DAEMON + '/health', (res) => {
|
|
15
|
+
if (res.statusCode !== 200) startDaemon();
|
|
16
|
+
}).on('error', startDaemon);
|
|
17
|
+
}
|
|
18
|
+
function startDaemon() {
|
|
19
|
+
const { spawn } = require('child_process');
|
|
20
|
+
const proc = spawn('cell', ['daemon', 'start', '--silent'], { detached: true, stdio: 'ignore' });
|
|
21
|
+
proc.unref();
|
|
22
|
+
}
|
|
23
|
+
ensureDaemon();
|
|
24
|
+
setInterval(ensureDaemon, 30000);
|
|
25
|
+
|
|
26
|
+
const fileSnapshots = new Map();
|
|
27
|
+
let debounceTimer = null;
|
|
28
|
+
let pendingChanges = [];
|
|
29
|
+
|
|
30
|
+
function snapshotFile(filePath) {
|
|
31
|
+
try {
|
|
32
|
+
const stat = fs.statSync(filePath);
|
|
33
|
+
fileSnapshots.set(filePath, { mtime: stat.mtimeMs, size: stat.size });
|
|
34
|
+
} catch {}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function watchDir(dir) {
|
|
38
|
+
try {
|
|
39
|
+
fs.watch(dir, { recursive: true }, (eventType, filename) => {
|
|
40
|
+
if (!filename) return;
|
|
41
|
+
const filePath = path.join(dir, filename);
|
|
42
|
+
if (filePath.includes('node_modules') || filePath.includes('.git')) return;
|
|
43
|
+
if (!filePath.match(/\.(ts|tsx|js|jsx|py|rs|go|rb|java|kt|swift)$/)) return;
|
|
44
|
+
|
|
45
|
+
const prev = fileSnapshots.get(filePath);
|
|
46
|
+
try {
|
|
47
|
+
const stat = fs.statSync(filePath);
|
|
48
|
+
if (prev && stat.mtimeMs > prev.mtime + 500) {
|
|
49
|
+
pendingChanges.push({ file: filePath, size: stat.size - prev.size });
|
|
50
|
+
scheduleSend();
|
|
51
|
+
}
|
|
52
|
+
fileSnapshots.set(filePath, { mtime: stat.mtimeMs, size: stat.size });
|
|
53
|
+
} catch {}
|
|
54
|
+
});
|
|
55
|
+
} catch (err) {
|
|
56
|
+
console.error('Cell hook: watch error —', err.message);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function scheduleSend() {
|
|
61
|
+
if (debounceTimer) clearTimeout(debounceTimer);
|
|
62
|
+
debounceTimer = setTimeout(sendSignals, DEBOUNCE_MS);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function sendSignals() {
|
|
66
|
+
if (pendingChanges.length === 0) return;
|
|
67
|
+
const changes = [...pendingChanges];
|
|
68
|
+
pendingChanges = [];
|
|
69
|
+
|
|
70
|
+
for (const change of changes) {
|
|
71
|
+
const ext = path.extname(change.file).slice(1);
|
|
72
|
+
const body = JSON.stringify({
|
|
73
|
+
type: 'edit_diff',
|
|
74
|
+
originalCode: `[file modified: ${change.size} bytes]`,
|
|
75
|
+
editedCode: `[${change.file}]`,
|
|
76
|
+
context: {
|
|
77
|
+
language: extToLang(ext),
|
|
78
|
+
framework: 'unknown',
|
|
79
|
+
fileType: ext,
|
|
80
|
+
strictness: 'standard',
|
|
81
|
+
projectId: path.basename(WATCH_DIR),
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const req = http.request(
|
|
86
|
+
{ method: 'POST', hostname: 'localhost', port: 9876, path: '/signal', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) }, timeout: 3000 },
|
|
87
|
+
() => {},
|
|
88
|
+
);
|
|
89
|
+
req.on('error', () => {});
|
|
90
|
+
req.write(body);
|
|
91
|
+
req.end();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function extToLang(ext) {
|
|
96
|
+
const map = { ts: 'typescript', tsx: 'typescript', js: 'javascript', jsx: 'javascript', py: 'python', rs: 'rust', go: 'go', rb: 'ruby', java: 'java', kt: 'kotlin', swift: 'swift' };
|
|
97
|
+
return map[ext] || ext;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Initial snapshot
|
|
101
|
+
function walkDir(dir) {
|
|
102
|
+
try {
|
|
103
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
104
|
+
const full = path.join(dir, entry.name);
|
|
105
|
+
if (entry.name.startsWith('.') || entry.name === 'node_modules') continue;
|
|
106
|
+
if (entry.isDirectory()) { walkDir(full); } else { snapshotFile(full); }
|
|
107
|
+
}
|
|
108
|
+
} catch {}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
console.log(`Cell Shell Hook active — watching ${WATCH_DIR}`);
|
|
112
|
+
walkDir(WATCH_DIR);
|
|
113
|
+
watchDir(WATCH_DIR);
|