linguclaw 0.4.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 (168) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/dist/agent-system.d.ts +196 -0
  4. package/dist/agent-system.d.ts.map +1 -0
  5. package/dist/agent-system.js +738 -0
  6. package/dist/agent-system.js.map +1 -0
  7. package/dist/alphabeta.d.ts +54 -0
  8. package/dist/alphabeta.d.ts.map +1 -0
  9. package/dist/alphabeta.js +193 -0
  10. package/dist/alphabeta.js.map +1 -0
  11. package/dist/browser.d.ts +62 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +224 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/cli.d.ts +7 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +565 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/code-parser.d.ts +39 -0
  20. package/dist/code-parser.d.ts.map +1 -0
  21. package/dist/code-parser.js +385 -0
  22. package/dist/code-parser.js.map +1 -0
  23. package/dist/config.d.ts +66 -0
  24. package/dist/config.d.ts.map +1 -0
  25. package/dist/config.js +232 -0
  26. package/dist/config.js.map +1 -0
  27. package/dist/core/engine.d.ts +359 -0
  28. package/dist/core/engine.d.ts.map +1 -0
  29. package/dist/core/engine.js +127 -0
  30. package/dist/core/engine.js.map +1 -0
  31. package/dist/daemon.d.ts +29 -0
  32. package/dist/daemon.d.ts.map +1 -0
  33. package/dist/daemon.js +212 -0
  34. package/dist/daemon.js.map +1 -0
  35. package/dist/email-receiver.d.ts +63 -0
  36. package/dist/email-receiver.d.ts.map +1 -0
  37. package/dist/email-receiver.js +553 -0
  38. package/dist/email-receiver.js.map +1 -0
  39. package/dist/git-integration.d.ts +180 -0
  40. package/dist/git-integration.d.ts.map +1 -0
  41. package/dist/git-integration.js +850 -0
  42. package/dist/git-integration.js.map +1 -0
  43. package/dist/inbox.d.ts +84 -0
  44. package/dist/inbox.d.ts.map +1 -0
  45. package/dist/inbox.js +198 -0
  46. package/dist/inbox.js.map +1 -0
  47. package/dist/index.d.ts +6 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +41 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/languages/cpp.d.ts +51 -0
  52. package/dist/languages/cpp.d.ts.map +1 -0
  53. package/dist/languages/cpp.js +930 -0
  54. package/dist/languages/cpp.js.map +1 -0
  55. package/dist/languages/csharp.d.ts +79 -0
  56. package/dist/languages/csharp.d.ts.map +1 -0
  57. package/dist/languages/csharp.js +1776 -0
  58. package/dist/languages/csharp.js.map +1 -0
  59. package/dist/languages/go.d.ts +50 -0
  60. package/dist/languages/go.d.ts.map +1 -0
  61. package/dist/languages/go.js +882 -0
  62. package/dist/languages/go.js.map +1 -0
  63. package/dist/languages/java.d.ts +47 -0
  64. package/dist/languages/java.d.ts.map +1 -0
  65. package/dist/languages/java.js +649 -0
  66. package/dist/languages/java.js.map +1 -0
  67. package/dist/languages/python.d.ts +47 -0
  68. package/dist/languages/python.d.ts.map +1 -0
  69. package/dist/languages/python.js +655 -0
  70. package/dist/languages/python.js.map +1 -0
  71. package/dist/languages/rust.d.ts +61 -0
  72. package/dist/languages/rust.d.ts.map +1 -0
  73. package/dist/languages/rust.js +1064 -0
  74. package/dist/languages/rust.js.map +1 -0
  75. package/dist/logger.d.ts +20 -0
  76. package/dist/logger.d.ts.map +1 -0
  77. package/dist/logger.js +133 -0
  78. package/dist/logger.js.map +1 -0
  79. package/dist/longterm-memory.d.ts +47 -0
  80. package/dist/longterm-memory.d.ts.map +1 -0
  81. package/dist/longterm-memory.js +300 -0
  82. package/dist/longterm-memory.js.map +1 -0
  83. package/dist/memory.d.ts +42 -0
  84. package/dist/memory.d.ts.map +1 -0
  85. package/dist/memory.js +274 -0
  86. package/dist/memory.js.map +1 -0
  87. package/dist/messaging.d.ts +103 -0
  88. package/dist/messaging.d.ts.map +1 -0
  89. package/dist/messaging.js +645 -0
  90. package/dist/messaging.js.map +1 -0
  91. package/dist/multi-provider.d.ts +69 -0
  92. package/dist/multi-provider.d.ts.map +1 -0
  93. package/dist/multi-provider.js +484 -0
  94. package/dist/multi-provider.js.map +1 -0
  95. package/dist/orchestrator.d.ts +65 -0
  96. package/dist/orchestrator.d.ts.map +1 -0
  97. package/dist/orchestrator.js +441 -0
  98. package/dist/orchestrator.js.map +1 -0
  99. package/dist/plugins.d.ts +52 -0
  100. package/dist/plugins.d.ts.map +1 -0
  101. package/dist/plugins.js +215 -0
  102. package/dist/plugins.js.map +1 -0
  103. package/dist/prism-orchestrator.d.ts +26 -0
  104. package/dist/prism-orchestrator.d.ts.map +1 -0
  105. package/dist/prism-orchestrator.js +191 -0
  106. package/dist/prism-orchestrator.js.map +1 -0
  107. package/dist/prism.d.ts +46 -0
  108. package/dist/prism.d.ts.map +1 -0
  109. package/dist/prism.js +188 -0
  110. package/dist/prism.js.map +1 -0
  111. package/dist/privacy.d.ts +23 -0
  112. package/dist/privacy.d.ts.map +1 -0
  113. package/dist/privacy.js +220 -0
  114. package/dist/privacy.js.map +1 -0
  115. package/dist/proactive.d.ts +30 -0
  116. package/dist/proactive.d.ts.map +1 -0
  117. package/dist/proactive.js +260 -0
  118. package/dist/proactive.js.map +1 -0
  119. package/dist/refactoring-engine.d.ts +100 -0
  120. package/dist/refactoring-engine.d.ts.map +1 -0
  121. package/dist/refactoring-engine.js +717 -0
  122. package/dist/refactoring-engine.js.map +1 -0
  123. package/dist/resilience.d.ts +43 -0
  124. package/dist/resilience.d.ts.map +1 -0
  125. package/dist/resilience.js +200 -0
  126. package/dist/resilience.js.map +1 -0
  127. package/dist/safety.d.ts +40 -0
  128. package/dist/safety.d.ts.map +1 -0
  129. package/dist/safety.js +133 -0
  130. package/dist/safety.js.map +1 -0
  131. package/dist/sandbox.d.ts +33 -0
  132. package/dist/sandbox.d.ts.map +1 -0
  133. package/dist/sandbox.js +173 -0
  134. package/dist/sandbox.js.map +1 -0
  135. package/dist/scheduler.d.ts +72 -0
  136. package/dist/scheduler.d.ts.map +1 -0
  137. package/dist/scheduler.js +374 -0
  138. package/dist/scheduler.js.map +1 -0
  139. package/dist/semantic-memory.d.ts +70 -0
  140. package/dist/semantic-memory.d.ts.map +1 -0
  141. package/dist/semantic-memory.js +430 -0
  142. package/dist/semantic-memory.js.map +1 -0
  143. package/dist/skills.d.ts +97 -0
  144. package/dist/skills.d.ts.map +1 -0
  145. package/dist/skills.js +575 -0
  146. package/dist/skills.js.map +1 -0
  147. package/dist/static/dashboard.html +853 -0
  148. package/dist/static/hub.html +772 -0
  149. package/dist/static/index.html +818 -0
  150. package/dist/static/logo.svg +24 -0
  151. package/dist/static/workflow-editor.html +913 -0
  152. package/dist/tools.d.ts +67 -0
  153. package/dist/tools.d.ts.map +1 -0
  154. package/dist/tools.js +303 -0
  155. package/dist/tools.js.map +1 -0
  156. package/dist/types.d.ts +295 -0
  157. package/dist/types.d.ts.map +1 -0
  158. package/dist/types.js +90 -0
  159. package/dist/types.js.map +1 -0
  160. package/dist/web.d.ts +76 -0
  161. package/dist/web.d.ts.map +1 -0
  162. package/dist/web.js +2139 -0
  163. package/dist/web.js.map +1 -0
  164. package/dist/workflow-engine.d.ts +114 -0
  165. package/dist/workflow-engine.d.ts.map +1 -0
  166. package/dist/workflow-engine.js +855 -0
  167. package/dist/workflow-engine.js.map +1 -0
  168. package/package.json +77 -0
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /**
3
+ * LinguClaw Advanced Architecture
4
+ * Multi-language code analysis platform with plugin system
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.LinguClawEngine = void 0;
11
+ const events_1 = require("events");
12
+ const path_1 = __importDefault(require("path"));
13
+ // ============================================
14
+ // MAIN ENGINE
15
+ // ============================================
16
+ class LinguClawEngine extends events_1.EventEmitter {
17
+ languages = new Map();
18
+ plugins = new Map();
19
+ sessions = new Map();
20
+ aiContext;
21
+ storage;
22
+ constructor(config) {
23
+ super();
24
+ this.storage = config.storage;
25
+ this.aiContext = this.initializeAIContext();
26
+ }
27
+ async registerLanguage(language) {
28
+ this.languages.set(language.id, language);
29
+ this.emit('language:registered', language);
30
+ }
31
+ async loadPlugin(plugin) {
32
+ const context = {
33
+ logger: console,
34
+ config: {},
35
+ storage: this.storage,
36
+ events: this,
37
+ registerLanguage: (lang) => this.registerLanguage(lang),
38
+ registerCommand: (cmd) => this.registerCommand(cmd),
39
+ };
40
+ await plugin.initialize(context);
41
+ this.plugins.set(plugin.id, plugin);
42
+ this.emit('plugin:loaded', plugin);
43
+ }
44
+ async analyzeFile(filePath, source) {
45
+ const ext = path_1.default.extname(filePath).slice(1).toLowerCase();
46
+ if (!ext) {
47
+ throw new Error(`Cannot determine file extension for: ${filePath}`);
48
+ }
49
+ const language = this.findLanguageByExtension(ext);
50
+ if (!language) {
51
+ throw new Error(`No language support for extension: .${ext}`);
52
+ }
53
+ // Run pre-parse hooks
54
+ let processedSource = source;
55
+ for (const plugin of this.plugins.values()) {
56
+ if (plugin.hooks.beforeParse) {
57
+ processedSource = await plugin.hooks.beforeParse(processedSource, language.id) || processedSource;
58
+ }
59
+ }
60
+ // Parse
61
+ const parseResult = language.parser.parse(processedSource, filePath);
62
+ // Run post-parse hooks
63
+ let finalParse = parseResult;
64
+ for (const plugin of this.plugins.values()) {
65
+ if (plugin.hooks.afterParse) {
66
+ finalParse = await plugin.hooks.afterParse(finalParse) || finalParse;
67
+ }
68
+ }
69
+ // Analyze
70
+ const context = {
71
+ filePath,
72
+ language: language.id,
73
+ engine: this,
74
+ };
75
+ for (const plugin of this.plugins.values()) {
76
+ if (plugin.hooks.beforeAnalyze) {
77
+ await plugin.hooks.beforeAnalyze(finalParse.ast);
78
+ }
79
+ }
80
+ const analysis = language.analyzer.analyze(finalParse.ast, context);
81
+ // Run post-analyze hooks
82
+ let finalAnalysis = analysis;
83
+ for (const plugin of this.plugins.values()) {
84
+ if (plugin.hooks.afterAnalyze) {
85
+ finalAnalysis = await plugin.hooks.afterAnalyze(finalAnalysis) || finalAnalysis;
86
+ }
87
+ }
88
+ this.emit('file:analyzed', { filePath, result: finalAnalysis });
89
+ return finalAnalysis;
90
+ }
91
+ findLanguageByExtension(ext) {
92
+ for (const lang of this.languages.values()) {
93
+ if (lang.extensions.includes(`.${ext}`)) {
94
+ return lang;
95
+ }
96
+ }
97
+ return undefined;
98
+ }
99
+ initializeAIContext() {
100
+ return {
101
+ conversation: {
102
+ id: 'default',
103
+ messages: [],
104
+ context: {},
105
+ streaming: false,
106
+ },
107
+ codebase: {
108
+ files: new Map(),
109
+ dependencies: { nodes: [], edges: [] },
110
+ architecture: { layers: [], modules: [], services: [] },
111
+ recentChanges: [],
112
+ },
113
+ memory: {
114
+ shortTerm: [],
115
+ longTerm: new Map(),
116
+ episodic: [],
117
+ semantic: { concepts: [], relations: [] },
118
+ },
119
+ tools: [],
120
+ };
121
+ }
122
+ registerCommand(cmd) {
123
+ // Implementation
124
+ }
125
+ }
126
+ exports.LinguClawEngine = LinguClawEngine;
127
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * 24/7 Daemon mode for continuous operation
3
+ * TypeScript equivalent of Python daemon.py
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { DaemonStatus } from './types';
7
+ export declare class LinguClawDaemon extends EventEmitter {
8
+ pidFile: string;
9
+ statusFile: string;
10
+ status: DaemonStatus;
11
+ private running;
12
+ private services;
13
+ private intervals;
14
+ constructor(pidFile?: string, statusFile?: string);
15
+ registerService(name: string, handler: Function, interval?: number): void;
16
+ private writePid;
17
+ private removePid;
18
+ private writeStatus;
19
+ start(): Promise<boolean>;
20
+ stop(): void;
21
+ isRunning(): boolean;
22
+ getStatus(): DaemonStatus;
23
+ }
24
+ export declare function getDaemon(): LinguClawDaemon;
25
+ export declare function startDaemon(services?: string[]): Promise<boolean>;
26
+ export declare function stopDaemon(): Promise<boolean>;
27
+ export declare function daemonStatus(): DaemonStatus;
28
+ export declare function restartDaemon(): Promise<boolean>;
29
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKvC,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAwE;IACxF,OAAO,CAAC,SAAS,CAAmB;gBAExB,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAiBjD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAKzE,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAQb,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAsD/B,IAAI,IAAI,IAAI;IAgBZ,SAAS,IAAI,OAAO;IAyBpB,SAAS,IAAI,YAAY;CAmB1B;AAKD,wBAAgB,SAAS,IAAI,eAAe,CAK3C;AAED,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBvE;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAInD;AAED,wBAAgB,YAAY,IAAI,YAAY,CAG3C;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAItD"}
package/dist/daemon.js ADDED
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ /**
3
+ * 24/7 Daemon mode for continuous operation
4
+ * TypeScript equivalent of Python daemon.py
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.LinguClawDaemon = void 0;
11
+ exports.getDaemon = getDaemon;
12
+ exports.startDaemon = startDaemon;
13
+ exports.stopDaemon = stopDaemon;
14
+ exports.daemonStatus = daemonStatus;
15
+ exports.restartDaemon = restartDaemon;
16
+ const events_1 = require("events");
17
+ const path_1 = __importDefault(require("path"));
18
+ const fs_1 = __importDefault(require("fs"));
19
+ const logger_1 = require("./logger");
20
+ const logger = (0, logger_1.getLogger)();
21
+ class LinguClawDaemon extends events_1.EventEmitter {
22
+ pidFile;
23
+ statusFile;
24
+ status;
25
+ running;
26
+ services;
27
+ intervals;
28
+ constructor(pidFile, statusFile) {
29
+ super();
30
+ this.pidFile = pidFile || path_1.default.join(process.env.HOME || '~', '.linguclaw', 'daemon.pid');
31
+ this.statusFile = statusFile || path_1.default.join(process.env.HOME || '~', '.linguclaw', 'daemon.status');
32
+ this.status = {
33
+ running: false,
34
+ started_at: null,
35
+ uptime_seconds: 0,
36
+ tasks_processed: 0,
37
+ errors_count: 0,
38
+ active_services: [],
39
+ };
40
+ this.running = false;
41
+ this.services = new Map();
42
+ this.intervals = [];
43
+ }
44
+ registerService(name, handler, interval) {
45
+ this.services.set(name, { handler, interval });
46
+ logger.info(`Registered service: ${name}`);
47
+ }
48
+ writePid() {
49
+ fs_1.default.writeFileSync(this.pidFile, process.pid.toString());
50
+ }
51
+ removePid() {
52
+ if (fs_1.default.existsSync(this.pidFile)) {
53
+ fs_1.default.unlinkSync(this.pidFile);
54
+ }
55
+ }
56
+ writeStatus() {
57
+ const statusData = {
58
+ ...this.status,
59
+ timestamp: new Date().toISOString(),
60
+ };
61
+ fs_1.default.writeFileSync(this.statusFile, JSON.stringify(statusData, null, 2));
62
+ }
63
+ async start() {
64
+ if (this.isRunning()) {
65
+ logger.error('Daemon already running');
66
+ return false;
67
+ }
68
+ logger.info('Starting LinguClaw Daemon...');
69
+ this.writePid();
70
+ this.status.running = true;
71
+ this.status.started_at = new Date();
72
+ this.status.active_services = Array.from(this.services.keys());
73
+ this.writeStatus();
74
+ // Start services
75
+ for (const [name, service] of this.services) {
76
+ if (service.interval) {
77
+ // Periodic service
78
+ const interval = setInterval(async () => {
79
+ try {
80
+ await service.handler();
81
+ this.status.tasks_processed++;
82
+ }
83
+ catch (error) {
84
+ this.status.errors_count++;
85
+ logger.error(`Service ${name} error: ${error}`);
86
+ }
87
+ }, service.interval * 1000);
88
+ this.intervals.push(interval);
89
+ }
90
+ else {
91
+ // One-shot service
92
+ try {
93
+ await service.handler();
94
+ }
95
+ catch (error) {
96
+ logger.error(`Service ${name} error: ${error}`);
97
+ }
98
+ }
99
+ }
100
+ // Status updater
101
+ const statusInterval = setInterval(() => {
102
+ if (this.status.started_at) {
103
+ this.status.uptime_seconds = Math.floor((Date.now() - this.status.started_at.getTime()) / 1000);
104
+ }
105
+ this.writeStatus();
106
+ }, 10000);
107
+ this.intervals.push(statusInterval);
108
+ this.running = true;
109
+ logger.info(`Daemon started with ${this.services.size} services`);
110
+ return true;
111
+ }
112
+ stop() {
113
+ logger.info('Stopping daemon...');
114
+ this.running = false;
115
+ this.status.running = false;
116
+ // Clear all intervals
117
+ for (const interval of this.intervals) {
118
+ clearInterval(interval);
119
+ }
120
+ this.intervals = [];
121
+ this.removePid();
122
+ this.writeStatus();
123
+ logger.info('Daemon stopped');
124
+ }
125
+ isRunning() {
126
+ if (fs_1.default.existsSync(this.pidFile)) {
127
+ try {
128
+ const pid = parseInt(fs_1.default.readFileSync(this.pidFile, 'utf-8').trim());
129
+ if (isNaN(pid)) {
130
+ this.removePid();
131
+ return false;
132
+ }
133
+ // Check if process actually exists
134
+ try {
135
+ process.kill(pid, 0); // signal 0 = check existence
136
+ return true;
137
+ }
138
+ catch {
139
+ // Process doesn't exist, stale PID file
140
+ this.removePid();
141
+ return false;
142
+ }
143
+ }
144
+ catch (err) {
145
+ logger.debug(`PID check failed: ${err.message}`);
146
+ this.removePid();
147
+ }
148
+ }
149
+ return false;
150
+ }
151
+ getStatus() {
152
+ if (fs_1.default.existsSync(this.statusFile)) {
153
+ try {
154
+ const data = JSON.parse(fs_1.default.readFileSync(this.statusFile, 'utf-8'));
155
+ return {
156
+ running: data.running || false,
157
+ started_at: data.started_at ? new Date(data.started_at) : null,
158
+ uptime_seconds: data.uptime_seconds || 0,
159
+ tasks_processed: data.tasks_processed || 0,
160
+ errors_count: data.errors_count || 0,
161
+ active_services: data.active_services || [],
162
+ };
163
+ }
164
+ catch (err) {
165
+ logger.debug(`Status read failed: ${err.message}`);
166
+ return this.status;
167
+ }
168
+ }
169
+ return this.status;
170
+ }
171
+ }
172
+ exports.LinguClawDaemon = LinguClawDaemon;
173
+ // Global daemon instance
174
+ let daemonInstance = null;
175
+ function getDaemon() {
176
+ if (!daemonInstance) {
177
+ daemonInstance = new LinguClawDaemon();
178
+ }
179
+ return daemonInstance;
180
+ }
181
+ async function startDaemon(services) {
182
+ const daemon = getDaemon();
183
+ // Register default services if not specified
184
+ if (!services || services.includes('health')) {
185
+ daemon.registerService('health', async () => {
186
+ // Health check service
187
+ logger.debug('Health check running');
188
+ }, 60); // Every 60 seconds
189
+ }
190
+ if (!services || services.includes('proactive')) {
191
+ daemon.registerService('proactive', async () => {
192
+ // Proactive tasks service
193
+ logger.debug('Proactive tasks running');
194
+ }, 300); // Every 5 minutes
195
+ }
196
+ return await daemon.start();
197
+ }
198
+ async function stopDaemon() {
199
+ const daemon = getDaemon();
200
+ daemon.stop();
201
+ return true;
202
+ }
203
+ function daemonStatus() {
204
+ const daemon = getDaemon();
205
+ return daemon.getStatus();
206
+ }
207
+ async function restartDaemon() {
208
+ await stopDaemon();
209
+ await new Promise(resolve => setTimeout(resolve, 2000));
210
+ return await startDaemon();
211
+ }
212
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * IMAP Email Receiver - Polls for incoming emails and adds to Inbox
3
+ */
4
+ import { InboxManager } from './inbox';
5
+ export interface IMAPConfig {
6
+ host: string;
7
+ port: number;
8
+ username: string;
9
+ password: string;
10
+ tls?: boolean;
11
+ pollInterval?: number;
12
+ folders?: string[];
13
+ useIdle?: boolean;
14
+ }
15
+ export declare class IMAPReceiver {
16
+ private inbox;
17
+ private config;
18
+ private pollTimer;
19
+ private idleConnections;
20
+ private isRunning;
21
+ private lastCheck;
22
+ constructor(inbox: InboxManager);
23
+ configure(config: IMAPConfig): void;
24
+ start(): void;
25
+ stop(): void;
26
+ private pollAllFolders;
27
+ private startIdleForFolder;
28
+ private resolveFolderName;
29
+ private checkFolderWithImap;
30
+ private extractEmail;
31
+ private cleanEmailBody;
32
+ }
33
+ /**
34
+ * Gmail API Receiver - Uses Gmail API for push notifications
35
+ */
36
+ export declare class GmailReceiver {
37
+ private inbox;
38
+ private config;
39
+ constructor(inbox: InboxManager);
40
+ configure(config: {
41
+ clientId: string;
42
+ clientSecret: string;
43
+ refreshToken: string;
44
+ }): void;
45
+ check(): Promise<void>;
46
+ private extractEmail;
47
+ private cleanBody;
48
+ private cleanEmailBody;
49
+ }
50
+ /**
51
+ * Unified Email Receiver - Manages both IMAP and Gmail
52
+ */
53
+ export declare class EmailReceiver {
54
+ private imap;
55
+ private gmail;
56
+ private inbox;
57
+ private gmailTimer;
58
+ constructor(inbox: InboxManager);
59
+ startIMAP(config: IMAPConfig): void;
60
+ startGmail(config: any): void;
61
+ stop(): void;
62
+ }
63
+ //# sourceMappingURL=email-receiver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-receiver.d.ts","sourceRoot":"","sources":["../src/email-receiver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAC;AAMrD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAgC;gBAErC,KAAK,EAAE,YAAY;IAI/B,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAOnC,KAAK,IAAI,IAAI;IAwBb,IAAI,IAAI,IAAI;YAiBE,cAAc;YAUd,kBAAkB;IAgFhC,OAAO,CAAC,iBAAiB;YAkBX,mBAAmB;IAuKjC,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;CAqEvB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAa;gBAEf,KAAK,EAAE,YAAY;IAI/B,SAAS,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAInF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4E5B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;CAqEvB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,UAAU,CAA+B;gBAErC,KAAK,EAAE,YAAY;IAM/B,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKnC,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAO7B,IAAI,IAAI,IAAI;CAOb"}