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.
Files changed (249) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/CONTRIBUTING.md +60 -0
  3. package/LICENSE +98 -0
  4. package/README.md +267 -0
  5. package/bin/cell.js +2 -0
  6. package/dist/cli.d.ts +3 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +1131 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/core/ab-test-framework.d.ts +33 -0
  11. package/dist/core/ab-test-framework.d.ts.map +1 -0
  12. package/dist/core/ab-test-framework.js +93 -0
  13. package/dist/core/ab-test-framework.js.map +1 -0
  14. package/dist/core/ast-extractor.d.ts +10 -0
  15. package/dist/core/ast-extractor.d.ts.map +1 -0
  16. package/dist/core/ast-extractor.js +111 -0
  17. package/dist/core/ast-extractor.js.map +1 -0
  18. package/dist/core/build-failure-predictor.d.ts +25 -0
  19. package/dist/core/build-failure-predictor.d.ts.map +1 -0
  20. package/dist/core/build-failure-predictor.js +124 -0
  21. package/dist/core/build-failure-predictor.js.map +1 -0
  22. package/dist/core/cell-pro.d.ts +28 -0
  23. package/dist/core/cell-pro.d.ts.map +1 -0
  24. package/dist/core/cell-pro.js +70 -0
  25. package/dist/core/cell-pro.js.map +1 -0
  26. package/dist/core/circular-dependency-detector.d.ts +22 -0
  27. package/dist/core/circular-dependency-detector.d.ts.map +1 -0
  28. package/dist/core/circular-dependency-detector.js +95 -0
  29. package/dist/core/circular-dependency-detector.js.map +1 -0
  30. package/dist/core/cloud-client.d.ts +40 -0
  31. package/dist/core/cloud-client.d.ts.map +1 -0
  32. package/dist/core/cloud-client.js +126 -0
  33. package/dist/core/cloud-client.js.map +1 -0
  34. package/dist/core/community-full.d.ts +38 -0
  35. package/dist/core/community-full.d.ts.map +1 -0
  36. package/dist/core/community-full.js +125 -0
  37. package/dist/core/community-full.js.map +1 -0
  38. package/dist/core/community-live.d.ts +31 -0
  39. package/dist/core/community-live.d.ts.map +1 -0
  40. package/dist/core/community-live.js +187 -0
  41. package/dist/core/community-live.js.map +1 -0
  42. package/dist/core/community-prior.d.ts +25 -0
  43. package/dist/core/community-prior.d.ts.map +1 -0
  44. package/dist/core/community-prior.js +181 -0
  45. package/dist/core/community-prior.js.map +1 -0
  46. package/dist/core/complexity-analyzer.d.ts +28 -0
  47. package/dist/core/complexity-analyzer.d.ts.map +1 -0
  48. package/dist/core/complexity-analyzer.js +110 -0
  49. package/dist/core/complexity-analyzer.js.map +1 -0
  50. package/dist/core/confidence-engine.d.ts +16 -0
  51. package/dist/core/confidence-engine.d.ts.map +1 -0
  52. package/dist/core/confidence-engine.js +155 -0
  53. package/dist/core/confidence-engine.js.map +1 -0
  54. package/dist/core/config-attribution.d.ts +30 -0
  55. package/dist/core/config-attribution.d.ts.map +1 -0
  56. package/dist/core/config-attribution.js +288 -0
  57. package/dist/core/config-attribution.js.map +1 -0
  58. package/dist/core/conflict-detector.d.ts +43 -0
  59. package/dist/core/conflict-detector.d.ts.map +1 -0
  60. package/dist/core/conflict-detector.js +205 -0
  61. package/dist/core/conflict-detector.js.map +1 -0
  62. package/dist/core/context-restore.d.ts +25 -0
  63. package/dist/core/context-restore.d.ts.map +1 -0
  64. package/dist/core/context-restore.js +129 -0
  65. package/dist/core/context-restore.js.map +1 -0
  66. package/dist/core/cross-domain-projections.d.ts +19 -0
  67. package/dist/core/cross-domain-projections.d.ts.map +1 -0
  68. package/dist/core/cross-domain-projections.js +69 -0
  69. package/dist/core/cross-domain-projections.js.map +1 -0
  70. package/dist/core/cross-language-mappings.d.ts +15 -0
  71. package/dist/core/cross-language-mappings.d.ts.map +1 -0
  72. package/dist/core/cross-language-mappings.js +202 -0
  73. package/dist/core/cross-language-mappings.js.map +1 -0
  74. package/dist/core/cross-project-sync.d.ts +24 -0
  75. package/dist/core/cross-project-sync.d.ts.map +1 -0
  76. package/dist/core/cross-project-sync.js +132 -0
  77. package/dist/core/cross-project-sync.js.map +1 -0
  78. package/dist/core/dead-code-detector.d.ts +20 -0
  79. package/dist/core/dead-code-detector.d.ts.map +1 -0
  80. package/dist/core/dead-code-detector.js +106 -0
  81. package/dist/core/dead-code-detector.js.map +1 -0
  82. package/dist/core/decay-engine.d.ts +14 -0
  83. package/dist/core/decay-engine.d.ts.map +1 -0
  84. package/dist/core/decay-engine.js +41 -0
  85. package/dist/core/decay-engine.js.map +1 -0
  86. package/dist/core/dependency-health-checker.d.ts +23 -0
  87. package/dist/core/dependency-health-checker.d.ts.map +1 -0
  88. package/dist/core/dependency-health-checker.js +94 -0
  89. package/dist/core/dependency-health-checker.js.map +1 -0
  90. package/dist/core/duplication-detector.d.ts +29 -0
  91. package/dist/core/duplication-detector.d.ts.map +1 -0
  92. package/dist/core/duplication-detector.js +115 -0
  93. package/dist/core/duplication-detector.js.map +1 -0
  94. package/dist/core/enterprise-features.d.ts +32 -0
  95. package/dist/core/enterprise-features.d.ts.map +1 -0
  96. package/dist/core/enterprise-features.js +87 -0
  97. package/dist/core/enterprise-features.js.map +1 -0
  98. package/dist/core/enterprise.d.ts +27 -0
  99. package/dist/core/enterprise.d.ts.map +1 -0
  100. package/dist/core/enterprise.js +41 -0
  101. package/dist/core/enterprise.js.map +1 -0
  102. package/dist/core/error-predictor.d.ts +16 -0
  103. package/dist/core/error-predictor.d.ts.map +1 -0
  104. package/dist/core/error-predictor.js +123 -0
  105. package/dist/core/error-predictor.js.map +1 -0
  106. package/dist/core/extraction-cascade.d.ts +18 -0
  107. package/dist/core/extraction-cascade.d.ts.map +1 -0
  108. package/dist/core/extraction-cascade.js +48 -0
  109. package/dist/core/extraction-cascade.js.map +1 -0
  110. package/dist/core/git-branch-pregenerator.d.ts +23 -0
  111. package/dist/core/git-branch-pregenerator.d.ts.map +1 -0
  112. package/dist/core/git-branch-pregenerator.js +100 -0
  113. package/dist/core/git-branch-pregenerator.js.map +1 -0
  114. package/dist/core/handoff-detector.d.ts +24 -0
  115. package/dist/core/handoff-detector.d.ts.map +1 -0
  116. package/dist/core/handoff-detector.js +116 -0
  117. package/dist/core/handoff-detector.js.map +1 -0
  118. package/dist/core/identity-resolver.d.ts +7 -0
  119. package/dist/core/identity-resolver.d.ts.map +1 -0
  120. package/dist/core/identity-resolver.js +82 -0
  121. package/dist/core/identity-resolver.js.map +1 -0
  122. package/dist/core/interruption-recovery.d.ts +26 -0
  123. package/dist/core/interruption-recovery.d.ts.map +1 -0
  124. package/dist/core/interruption-recovery.js +135 -0
  125. package/dist/core/interruption-recovery.js.map +1 -0
  126. package/dist/core/knowledge-silo-detector.d.ts +20 -0
  127. package/dist/core/knowledge-silo-detector.d.ts.map +1 -0
  128. package/dist/core/knowledge-silo-detector.js +117 -0
  129. package/dist/core/knowledge-silo-detector.js.map +1 -0
  130. package/dist/core/language-switch-assistant.d.ts +18 -0
  131. package/dist/core/language-switch-assistant.d.ts.map +1 -0
  132. package/dist/core/language-switch-assistant.js +98 -0
  133. package/dist/core/language-switch-assistant.js.map +1 -0
  134. package/dist/core/merge-conflict-predictor.d.ts +18 -0
  135. package/dist/core/merge-conflict-predictor.d.ts.map +1 -0
  136. package/dist/core/merge-conflict-predictor.js +98 -0
  137. package/dist/core/merge-conflict-predictor.js.map +1 -0
  138. package/dist/core/model-intelligence.d.ts +24 -0
  139. package/dist/core/model-intelligence.d.ts.map +1 -0
  140. package/dist/core/model-intelligence.js +73 -0
  141. package/dist/core/model-intelligence.js.map +1 -0
  142. package/dist/core/next-action-predictor.d.ts +26 -0
  143. package/dist/core/next-action-predictor.d.ts.map +1 -0
  144. package/dist/core/next-action-predictor.js +136 -0
  145. package/dist/core/next-action-predictor.js.map +1 -0
  146. package/dist/core/offline-queue.d.ts +40 -0
  147. package/dist/core/offline-queue.d.ts.map +1 -0
  148. package/dist/core/offline-queue.js +193 -0
  149. package/dist/core/offline-queue.js.map +1 -0
  150. package/dist/core/pattern-store.d.ts +27 -0
  151. package/dist/core/pattern-store.d.ts.map +1 -0
  152. package/dist/core/pattern-store.js +233 -0
  153. package/dist/core/pattern-store.js.map +1 -0
  154. package/dist/core/performance-predictor.d.ts +16 -0
  155. package/dist/core/performance-predictor.d.ts.map +1 -0
  156. package/dist/core/performance-predictor.js +111 -0
  157. package/dist/core/performance-predictor.js.map +1 -0
  158. package/dist/core/platt-calibration.d.ts +18 -0
  159. package/dist/core/platt-calibration.d.ts.map +1 -0
  160. package/dist/core/platt-calibration.js +89 -0
  161. package/dist/core/platt-calibration.js.map +1 -0
  162. package/dist/core/pr-review-assistant.d.ts +17 -0
  163. package/dist/core/pr-review-assistant.d.ts.map +1 -0
  164. package/dist/core/pr-review-assistant.js +85 -0
  165. package/dist/core/pr-review-assistant.js.map +1 -0
  166. package/dist/core/prompt-conditioner.d.ts +10 -0
  167. package/dist/core/prompt-conditioner.d.ts.map +1 -0
  168. package/dist/core/prompt-conditioner.js +54 -0
  169. package/dist/core/prompt-conditioner.js.map +1 -0
  170. package/dist/core/realtime-guardian.d.ts +19 -0
  171. package/dist/core/realtime-guardian.d.ts.map +1 -0
  172. package/dist/core/realtime-guardian.js +64 -0
  173. package/dist/core/realtime-guardian.js.map +1 -0
  174. package/dist/core/regex-extractor.d.ts +10 -0
  175. package/dist/core/regex-extractor.d.ts.map +1 -0
  176. package/dist/core/regex-extractor.js +141 -0
  177. package/dist/core/regex-extractor.js.map +1 -0
  178. package/dist/core/scale-tester.d.ts +20 -0
  179. package/dist/core/scale-tester.d.ts.map +1 -0
  180. package/dist/core/scale-tester.js +79 -0
  181. package/dist/core/scale-tester.js.map +1 -0
  182. package/dist/core/security-predictor.d.ts +15 -0
  183. package/dist/core/security-predictor.d.ts.map +1 -0
  184. package/dist/core/security-predictor.js +91 -0
  185. package/dist/core/security-predictor.js.map +1 -0
  186. package/dist/core/session-recovery.d.ts +19 -0
  187. package/dist/core/session-recovery.d.ts.map +1 -0
  188. package/dist/core/session-recovery.js +138 -0
  189. package/dist/core/session-recovery.js.map +1 -0
  190. package/dist/core/signal-capture.d.ts +22 -0
  191. package/dist/core/signal-capture.d.ts.map +1 -0
  192. package/dist/core/signal-capture.js +76 -0
  193. package/dist/core/signal-capture.js.map +1 -0
  194. package/dist/core/solution-index.d.ts +33 -0
  195. package/dist/core/solution-index.d.ts.map +1 -0
  196. package/dist/core/solution-index.js +175 -0
  197. package/dist/core/solution-index.js.map +1 -0
  198. package/dist/core/standup-generator.d.ts +17 -0
  199. package/dist/core/standup-generator.d.ts.map +1 -0
  200. package/dist/core/standup-generator.js +84 -0
  201. package/dist/core/standup-generator.js.map +1 -0
  202. package/dist/core/team-composer.d.ts +29 -0
  203. package/dist/core/team-composer.d.ts.map +1 -0
  204. package/dist/core/team-composer.js +150 -0
  205. package/dist/core/team-composer.js.map +1 -0
  206. package/dist/core/test-anticipator.d.ts +17 -0
  207. package/dist/core/test-anticipator.d.ts.map +1 -0
  208. package/dist/core/test-anticipator.js +113 -0
  209. package/dist/core/test-anticipator.js.map +1 -0
  210. package/dist/daemon/lifecycle.d.ts +19 -0
  211. package/dist/daemon/lifecycle.d.ts.map +1 -0
  212. package/dist/daemon/lifecycle.js +199 -0
  213. package/dist/daemon/lifecycle.js.map +1 -0
  214. package/dist/daemon/server.d.ts +81 -0
  215. package/dist/daemon/server.d.ts.map +1 -0
  216. package/dist/daemon/server.js +505 -0
  217. package/dist/daemon/server.js.map +1 -0
  218. package/dist/daemon/watchdog.d.ts +2 -0
  219. package/dist/daemon/watchdog.d.ts.map +1 -0
  220. package/dist/daemon/watchdog.js +93 -0
  221. package/dist/daemon/watchdog.js.map +1 -0
  222. package/dist/daemon/websocket.d.ts +5 -0
  223. package/dist/daemon/websocket.d.ts.map +1 -0
  224. package/dist/daemon/websocket.js +90 -0
  225. package/dist/daemon/websocket.js.map +1 -0
  226. package/dist/index.d.ts +44 -0
  227. package/dist/index.d.ts.map +1 -0
  228. package/dist/index.js +90 -0
  229. package/dist/index.js.map +1 -0
  230. package/dist/types.d.ts +88 -0
  231. package/dist/types.d.ts.map +1 -0
  232. package/dist/types.js +28 -0
  233. package/dist/types.js.map +1 -0
  234. package/extensions/jetbrains/plugin.json +9 -0
  235. package/extensions/shell/copilot-sync.js +59 -0
  236. package/extensions/shell/install.sh +38 -0
  237. package/extensions/shell/watcher.js +113 -0
  238. package/extensions/vscode/.vscodeignore +5 -0
  239. package/extensions/vscode/dist/daemon-client.js +94 -0
  240. package/extensions/vscode/dist/diff-tracker.js +94 -0
  241. package/extensions/vscode/dist/extension.js +100 -0
  242. package/extensions/vscode/dist/status-bar.js +70 -0
  243. package/extensions/vscode/package-lock.json +40 -0
  244. package/extensions/vscode/package.json +27 -0
  245. package/package.json +53 -0
  246. package/packages/mcp-server/dist/server.d.ts +2 -0
  247. package/packages/mcp-server/dist/server.js +213 -0
  248. package/packages/mcp-server/package-lock.json +970 -0
  249. 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,5 @@
1
+ import { Server as HttpServer } from 'http';
2
+ import { WebSocketServer } from 'ws';
3
+ export declare function initWebSocket(httpServer: HttpServer): WebSocketServer;
4
+ export declare function getDaemonSecret(): string;
5
+ //# sourceMappingURL=websocket.d.ts.map
@@ -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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"}
@@ -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"}
@@ -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,9 @@
1
+ {
2
+ "name": "FIVO Cell",
3
+ "version": "0.2.0",
4
+ "description": "Anticipatory Intelligence — learns your coding taste across every tool",
5
+ "vendor": "FIVO Technologies",
6
+ "ideaVersion": "2023.3",
7
+ "plugins": [],
8
+ "dependencies": []
9
+ }
@@ -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);
@@ -0,0 +1,5 @@
1
+ .vscode/**
2
+ node_modules/**
3
+ src/**
4
+ tsconfig.json
5
+ .gitignore