openhorse 0.1.8 → 0.1.10

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 (143) hide show
  1. package/dist/agents/coordinator.d.ts +86 -0
  2. package/dist/agents/coordinator.d.ts.map +1 -0
  3. package/dist/agents/coordinator.js +251 -0
  4. package/dist/agents/coordinator.js.map +1 -0
  5. package/dist/agents/fork.d.ts +61 -0
  6. package/dist/agents/fork.d.ts.map +1 -0
  7. package/dist/agents/fork.js +169 -0
  8. package/dist/agents/fork.js.map +1 -0
  9. package/dist/agents/worker-pool.d.ts +72 -0
  10. package/dist/agents/worker-pool.d.ts.map +1 -0
  11. package/dist/agents/worker-pool.js +213 -0
  12. package/dist/agents/worker-pool.js.map +1 -0
  13. package/dist/cli.js +74 -6
  14. package/dist/cli.js.map +1 -1
  15. package/dist/commands/index.d.ts.map +1 -1
  16. package/dist/commands/index.js +57 -0
  17. package/dist/commands/index.js.map +1 -1
  18. package/dist/framework/query.d.ts +4 -0
  19. package/dist/framework/query.d.ts.map +1 -1
  20. package/dist/framework/query.js +29 -1
  21. package/dist/framework/query.js.map +1 -1
  22. package/dist/services/auth/auth.d.ts +121 -0
  23. package/dist/services/auth/auth.d.ts.map +1 -0
  24. package/dist/services/auth/auth.js +233 -0
  25. package/dist/services/auth/auth.js.map +1 -0
  26. package/dist/services/auth/aws.d.ts +27 -0
  27. package/dist/services/auth/aws.d.ts.map +1 -0
  28. package/dist/services/auth/aws.js +109 -0
  29. package/dist/services/auth/aws.js.map +1 -0
  30. package/dist/services/auth/index.d.ts +6 -0
  31. package/dist/services/auth/index.d.ts.map +1 -0
  32. package/dist/services/auth/index.js +17 -0
  33. package/dist/services/auth/index.js.map +1 -0
  34. package/dist/services/auto-fix/autoFixConfig.d.ts +33 -0
  35. package/dist/services/auto-fix/autoFixConfig.d.ts.map +1 -0
  36. package/dist/services/auto-fix/autoFixConfig.js +61 -0
  37. package/dist/services/auto-fix/autoFixConfig.js.map +1 -0
  38. package/dist/services/auto-fix/autoFixHook.d.ts +20 -0
  39. package/dist/services/auto-fix/autoFixHook.d.ts.map +1 -0
  40. package/dist/services/auto-fix/autoFixHook.js +89 -0
  41. package/dist/services/auto-fix/autoFixHook.js.map +1 -0
  42. package/dist/services/auto-fix/autoFixRunner.d.ts +60 -0
  43. package/dist/services/auto-fix/autoFixRunner.d.ts.map +1 -0
  44. package/dist/services/auto-fix/autoFixRunner.js +207 -0
  45. package/dist/services/auto-fix/autoFixRunner.js.map +1 -0
  46. package/dist/services/auto-fix/index.d.ts +7 -0
  47. package/dist/services/auto-fix/index.d.ts.map +1 -0
  48. package/dist/services/auto-fix/index.js +17 -0
  49. package/dist/services/auto-fix/index.js.map +1 -0
  50. package/dist/services/compact/auto-compact.d.ts +53 -0
  51. package/dist/services/compact/auto-compact.d.ts.map +1 -0
  52. package/dist/services/compact/auto-compact.js +114 -0
  53. package/dist/services/compact/auto-compact.js.map +1 -0
  54. package/dist/services/compact/compact.d.ts +51 -0
  55. package/dist/services/compact/compact.d.ts.map +1 -0
  56. package/dist/services/compact/compact.js +120 -0
  57. package/dist/services/compact/compact.js.map +1 -0
  58. package/dist/services/compact/index.d.ts +10 -0
  59. package/dist/services/compact/index.d.ts.map +1 -0
  60. package/dist/services/compact/index.js +23 -0
  61. package/dist/services/compact/index.js.map +1 -0
  62. package/dist/services/compact/micro-compact.d.ts +21 -0
  63. package/dist/services/compact/micro-compact.d.ts.map +1 -0
  64. package/dist/services/compact/micro-compact.js +99 -0
  65. package/dist/services/compact/micro-compact.js.map +1 -0
  66. package/dist/services/compact/summary-generator.d.ts +25 -0
  67. package/dist/services/compact/summary-generator.d.ts.map +1 -0
  68. package/dist/services/compact/summary-generator.js +128 -0
  69. package/dist/services/compact/summary-generator.js.map +1 -0
  70. package/dist/services/concurrent-sessions.d.ts +97 -0
  71. package/dist/services/concurrent-sessions.d.ts.map +1 -0
  72. package/dist/services/concurrent-sessions.js +263 -0
  73. package/dist/services/concurrent-sessions.js.map +1 -0
  74. package/dist/services/diagnostic-tracking/diagnosticTracking.d.ts +58 -0
  75. package/dist/services/diagnostic-tracking/diagnosticTracking.d.ts.map +1 -0
  76. package/dist/services/diagnostic-tracking/diagnosticTracking.js +167 -0
  77. package/dist/services/diagnostic-tracking/diagnosticTracking.js.map +1 -0
  78. package/dist/services/diagnostic-tracking/formatter.d.ts +17 -0
  79. package/dist/services/diagnostic-tracking/formatter.d.ts.map +1 -0
  80. package/dist/services/diagnostic-tracking/formatter.js +78 -0
  81. package/dist/services/diagnostic-tracking/formatter.js.map +1 -0
  82. package/dist/services/diagnostic-tracking/index.d.ts +7 -0
  83. package/dist/services/diagnostic-tracking/index.d.ts.map +1 -0
  84. package/dist/services/diagnostic-tracking/index.js +19 -0
  85. package/dist/services/diagnostic-tracking/index.js.map +1 -0
  86. package/dist/services/diagnostic-tracking/types.d.ts +52 -0
  87. package/dist/services/diagnostic-tracking/types.d.ts.map +1 -0
  88. package/dist/services/diagnostic-tracking/types.js +27 -0
  89. package/dist/services/diagnostic-tracking/types.js.map +1 -0
  90. package/dist/services/mcp/index.d.ts +5 -0
  91. package/dist/services/mcp/index.d.ts.map +1 -0
  92. package/dist/services/mcp/index.js +16 -0
  93. package/dist/services/mcp/index.js.map +1 -0
  94. package/dist/services/mcp/transports.d.ts +104 -0
  95. package/dist/services/mcp/transports.d.ts.map +1 -0
  96. package/dist/services/mcp/transports.js +342 -0
  97. package/dist/services/mcp/transports.js.map +1 -0
  98. package/dist/services/session-memory/index.d.ts +6 -0
  99. package/dist/services/session-memory/index.d.ts.map +1 -0
  100. package/dist/services/session-memory/index.js +15 -0
  101. package/dist/services/session-memory/index.js.map +1 -0
  102. package/dist/services/session-memory/prompts.d.ts +23 -0
  103. package/dist/services/session-memory/prompts.d.ts.map +1 -0
  104. package/dist/services/session-memory/prompts.js +70 -0
  105. package/dist/services/session-memory/prompts.js.map +1 -0
  106. package/dist/services/session-memory/sessionMemory.d.ts +64 -0
  107. package/dist/services/session-memory/sessionMemory.d.ts.map +1 -0
  108. package/dist/services/session-memory/sessionMemory.js +243 -0
  109. package/dist/services/session-memory/sessionMemory.js.map +1 -0
  110. package/dist/services/smart-routing.d.ts +41 -0
  111. package/dist/services/smart-routing.d.ts.map +1 -0
  112. package/dist/services/smart-routing.js +134 -0
  113. package/dist/services/smart-routing.js.map +1 -0
  114. package/dist/tools/git.d.ts +14 -0
  115. package/dist/tools/git.d.ts.map +1 -0
  116. package/dist/tools/git.js +270 -0
  117. package/dist/tools/git.js.map +1 -0
  118. package/dist/tools/index.d.ts.map +1 -1
  119. package/dist/tools/index.js +80 -14
  120. package/dist/tools/index.js.map +1 -1
  121. package/dist/tools/lsp.d.ts +18 -0
  122. package/dist/tools/lsp.d.ts.map +1 -0
  123. package/dist/tools/lsp.js +450 -0
  124. package/dist/tools/lsp.js.map +1 -0
  125. package/dist/tools/web.d.ts.map +1 -1
  126. package/dist/tools/web.js +70 -38
  127. package/dist/tools/web.js.map +1 -1
  128. package/dist/ui/command-panel.d.ts +5 -0
  129. package/dist/ui/command-panel.d.ts.map +1 -1
  130. package/dist/ui/command-panel.js +59 -18
  131. package/dist/ui/command-panel.js.map +1 -1
  132. package/dist/ui/markdown.d.ts +10 -4
  133. package/dist/ui/markdown.d.ts.map +1 -1
  134. package/dist/ui/markdown.js +91 -4
  135. package/dist/ui/markdown.js.map +1 -1
  136. package/dist/ui/progress.d.ts +34 -0
  137. package/dist/ui/progress.d.ts.map +1 -0
  138. package/dist/ui/progress.js +88 -0
  139. package/dist/ui/progress.js.map +1 -0
  140. package/dist/ui/status-bar.d.ts.map +1 -1
  141. package/dist/ui/status-bar.js +10 -0
  142. package/dist/ui/status-bar.js.map +1 -1
  143. package/package.json +3 -1
@@ -0,0 +1,52 @@
1
+ /**
2
+ * openhorse - Diagnostic 类型定义
3
+ *
4
+ * IDE/LSP 诊断信息的标准格式。
5
+ */
6
+ export interface Diagnostic {
7
+ /** 来源(如 'typescript', 'eslint') */
8
+ source: string;
9
+ /** 严重程度 */
10
+ severity: DiagnosticSeverity;
11
+ /** 消息 */
12
+ message: string;
13
+ /** 文件路径 */
14
+ file: string;
15
+ /** 行号 */
16
+ line: number;
17
+ /** 列号 */
18
+ column?: number;
19
+ /** 结束行 */
20
+ endLine?: number;
21
+ /** 结束列 */
22
+ endColumn?: number;
23
+ /** 诊断代码 */
24
+ code?: string;
25
+ /** 是否已修复 */
26
+ fixed?: boolean;
27
+ /** 时间戳 */
28
+ timestamp: number;
29
+ }
30
+ export declare enum DiagnosticSeverity {
31
+ Error = 1,
32
+ Warning = 2,
33
+ Information = 3,
34
+ Hint = 4
35
+ }
36
+ export interface DiagnosticBaseline {
37
+ /** 基线时间戳 */
38
+ timestamp: number;
39
+ /** 基线诊断列表 */
40
+ diagnostics: Diagnostic[];
41
+ }
42
+ export interface NewDiagnosticsResult {
43
+ /** 新引入的诊断 */
44
+ newDiagnostics: Diagnostic[];
45
+ /** 已解决的诊断 */
46
+ resolvedDiagnostics: Diagnostic[];
47
+ /** 是否有新错误 */
48
+ hasNewErrors: boolean;
49
+ }
50
+ export declare function diagnosticKey(diagnostic: Diagnostic): string;
51
+ export declare function isDiagnosticEqual(a: Diagnostic, b: Diagnostic): boolean;
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/diagnostic-tracking/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAU;IACzB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,SAAS;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;IACb,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oBAAY,kBAAkB;IAC5B,KAAK,IAAI;IACT,OAAO,IAAI;IACX,WAAW,IAAI;IACf,IAAI,IAAI;CACT;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa;IACb,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,aAAa;IACb,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAClC,aAAa;IACb,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAEvE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Diagnostic 类型定义
4
+ *
5
+ * IDE/LSP 诊断信息的标准格式。
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.DiagnosticSeverity = void 0;
9
+ exports.diagnosticKey = diagnosticKey;
10
+ exports.isDiagnosticEqual = isDiagnosticEqual;
11
+ var DiagnosticSeverity;
12
+ (function (DiagnosticSeverity) {
13
+ DiagnosticSeverity[DiagnosticSeverity["Error"] = 1] = "Error";
14
+ DiagnosticSeverity[DiagnosticSeverity["Warning"] = 2] = "Warning";
15
+ DiagnosticSeverity[DiagnosticSeverity["Information"] = 3] = "Information";
16
+ DiagnosticSeverity[DiagnosticSeverity["Hint"] = 4] = "Hint";
17
+ })(DiagnosticSeverity || (exports.DiagnosticSeverity = DiagnosticSeverity = {}));
18
+ // ============================================================================
19
+ // 辅助函数
20
+ // ============================================================================
21
+ function diagnosticKey(diagnostic) {
22
+ return `${diagnostic.file}:${diagnostic.line}:${diagnostic.code || diagnostic.message}`;
23
+ }
24
+ function isDiagnosticEqual(a, b) {
25
+ return diagnosticKey(a) === diagnosticKey(b);
26
+ }
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/diagnostic-tracking/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AA0DH,sCAEC;AAED,8CAEC;AAjCD,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,6DAAS,CAAA;IACT,iEAAW,CAAA;IACX,yEAAe,CAAA;IACf,2DAAQ,CAAA;AACV,CAAC,EALW,kBAAkB,kCAAlB,kBAAkB,QAK7B;AAkBD,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,SAAgB,aAAa,CAAC,UAAsB;IAClD,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1F,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAa,EAAE,CAAa;IAC5D,OAAO,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * openhorse - MCP Transport 入口
3
+ */
4
+ export { BaseTransport, SseTransport, WebSocketTransport, HttpTransport, TransportManager, createTransport, getTransportManager, resetTransportManager, type TransportType, type TransportConfig, type TransportMessage, type TransportEvents, } from './transports';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - MCP Transport 入口
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resetTransportManager = exports.getTransportManager = exports.createTransport = exports.TransportManager = exports.HttpTransport = exports.WebSocketTransport = exports.SseTransport = exports.BaseTransport = void 0;
7
+ var transports_1 = require("./transports");
8
+ Object.defineProperty(exports, "BaseTransport", { enumerable: true, get: function () { return transports_1.BaseTransport; } });
9
+ Object.defineProperty(exports, "SseTransport", { enumerable: true, get: function () { return transports_1.SseTransport; } });
10
+ Object.defineProperty(exports, "WebSocketTransport", { enumerable: true, get: function () { return transports_1.WebSocketTransport; } });
11
+ Object.defineProperty(exports, "HttpTransport", { enumerable: true, get: function () { return transports_1.HttpTransport; } });
12
+ Object.defineProperty(exports, "TransportManager", { enumerable: true, get: function () { return transports_1.TransportManager; } });
13
+ Object.defineProperty(exports, "createTransport", { enumerable: true, get: function () { return transports_1.createTransport; } });
14
+ Object.defineProperty(exports, "getTransportManager", { enumerable: true, get: function () { return transports_1.getTransportManager; } });
15
+ Object.defineProperty(exports, "resetTransportManager", { enumerable: true, get: function () { return transports_1.resetTransportManager; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/mcp/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2CAasB;AAZpB,2GAAA,aAAa,OAAA;AACb,0GAAA,YAAY,OAAA;AACZ,gHAAA,kBAAkB,OAAA;AAClB,2GAAA,aAAa,OAAA;AACb,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,iHAAA,mBAAmB,OAAA;AACnB,mHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * openhorse - MCP Transport Layer
3
+ *
4
+ * 支持 SSE、WebSocket、HTTP 多协议传输。
5
+ */
6
+ import { EventEmitter } from 'events';
7
+ export type TransportType = 'sse' | 'websocket' | 'http';
8
+ export interface TransportConfig {
9
+ type: TransportType;
10
+ endpoint: string;
11
+ timeout?: number;
12
+ headers?: Record<string, string>;
13
+ reconnect?: boolean;
14
+ reconnectInterval?: number;
15
+ maxReconnectAttempts?: number;
16
+ }
17
+ export interface TransportMessage {
18
+ id?: string;
19
+ type: 'request' | 'response' | 'notification';
20
+ method?: string;
21
+ params?: unknown;
22
+ result?: unknown;
23
+ error?: {
24
+ code: number;
25
+ message: string;
26
+ data?: unknown;
27
+ };
28
+ }
29
+ export interface TransportEvents {
30
+ message: (msg: TransportMessage) => void;
31
+ error: (err: Error) => void;
32
+ connected: () => void;
33
+ disconnected: () => void;
34
+ reconnecting: (attempt: number) => void;
35
+ }
36
+ export declare abstract class BaseTransport extends EventEmitter {
37
+ protected config: TransportConfig;
38
+ protected connected: boolean;
39
+ constructor(config: TransportConfig);
40
+ abstract connect(): Promise<void>;
41
+ abstract disconnect(): Promise<void>;
42
+ abstract send(message: TransportMessage): Promise<void>;
43
+ isConnected(): boolean;
44
+ protected emitMessage(msg: TransportMessage): void;
45
+ protected emitError(err: Error): void;
46
+ protected emitConnected(): void;
47
+ protected emitDisconnected(): void;
48
+ }
49
+ export declare class SseTransport extends BaseTransport {
50
+ private eventSource;
51
+ private reconnectAttempts;
52
+ constructor(config: TransportConfig);
53
+ connect(): Promise<void>;
54
+ disconnect(): Promise<void>;
55
+ send(message: TransportMessage): Promise<void>;
56
+ private buildUrl;
57
+ private attemptReconnect;
58
+ }
59
+ export declare class WebSocketTransport extends BaseTransport {
60
+ private ws;
61
+ private reconnectAttempts;
62
+ constructor(config: TransportConfig);
63
+ connect(): Promise<void>;
64
+ disconnect(): Promise<void>;
65
+ send(message: TransportMessage): Promise<void>;
66
+ private attemptReconnect;
67
+ }
68
+ export declare class HttpTransport extends BaseTransport {
69
+ constructor(config: TransportConfig);
70
+ connect(): Promise<void>;
71
+ disconnect(): Promise<void>;
72
+ send(message: TransportMessage): Promise<void>;
73
+ }
74
+ export declare function createTransport(config: TransportConfig): BaseTransport;
75
+ export declare class TransportManager {
76
+ private transports;
77
+ /**
78
+ * 注册传输层
79
+ */
80
+ register(name: string, config: TransportConfig): BaseTransport;
81
+ /**
82
+ * 获取传输层
83
+ */
84
+ get(name: string): BaseTransport | undefined;
85
+ /**
86
+ * 移除传输层
87
+ */
88
+ remove(name: string): Promise<void>;
89
+ /**
90
+ * 连接所有传输层
91
+ */
92
+ connectAll(): Promise<void>;
93
+ /**
94
+ * 断开所有传输层
95
+ */
96
+ disconnectAll(): Promise<void>;
97
+ /**
98
+ * 广播消息到所有传输层
99
+ */
100
+ broadcast(message: TransportMessage): Promise<void>;
101
+ }
102
+ export declare function getTransportManager(): TransportManager;
103
+ export declare function resetTransportManager(): void;
104
+ //# sourceMappingURL=transports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../../src/services/mcp/transports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - MCP Transport Layer
4
+ *
5
+ * 支持 SSE、WebSocket、HTTP 多协议传输。
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.TransportManager = exports.HttpTransport = exports.WebSocketTransport = exports.SseTransport = exports.BaseTransport = void 0;
9
+ exports.createTransport = createTransport;
10
+ exports.getTransportManager = getTransportManager;
11
+ exports.resetTransportManager = resetTransportManager;
12
+ const events_1 = require("events");
13
+ // ============================================================================
14
+ // Base Transport
15
+ // ============================================================================
16
+ class BaseTransport extends events_1.EventEmitter {
17
+ constructor(config) {
18
+ super();
19
+ this.connected = false;
20
+ this.config = config;
21
+ }
22
+ isConnected() {
23
+ return this.connected;
24
+ }
25
+ emitMessage(msg) {
26
+ this.emit('message', msg);
27
+ }
28
+ emitError(err) {
29
+ this.emit('error', err);
30
+ }
31
+ emitConnected() {
32
+ this.connected = true;
33
+ this.emit('connected');
34
+ }
35
+ emitDisconnected() {
36
+ this.connected = false;
37
+ this.emit('disconnected');
38
+ }
39
+ }
40
+ exports.BaseTransport = BaseTransport;
41
+ // ============================================================================
42
+ // SSE Transport
43
+ // ============================================================================
44
+ class SseTransport extends BaseTransport {
45
+ constructor(config) {
46
+ super(config);
47
+ this.eventSource = null;
48
+ this.reconnectAttempts = 0;
49
+ }
50
+ async connect() {
51
+ if (this.eventSource) {
52
+ this.eventSource.close();
53
+ }
54
+ const url = this.buildUrl();
55
+ this.eventSource = new EventSource(url, {
56
+ // Node.js 环境可能需要额外配置
57
+ });
58
+ this.eventSource.onopen = () => {
59
+ this.reconnectAttempts = 0;
60
+ this.emitConnected();
61
+ };
62
+ this.eventSource.onmessage = (event) => {
63
+ try {
64
+ const msg = JSON.parse(event.data);
65
+ this.emitMessage(msg);
66
+ }
67
+ catch (err) {
68
+ this.emitError(new Error(`Failed to parse SSE message: ${err}`));
69
+ }
70
+ };
71
+ this.eventSource.onerror = () => {
72
+ this.emitDisconnected();
73
+ if (this.config.reconnect !== false) {
74
+ this.attemptReconnect();
75
+ }
76
+ };
77
+ }
78
+ async disconnect() {
79
+ if (this.eventSource) {
80
+ this.eventSource.close();
81
+ this.eventSource = null;
82
+ }
83
+ this.emitDisconnected();
84
+ }
85
+ async send(message) {
86
+ // SSE 是单向的,需要通过 HTTP POST 发送
87
+ const response = await fetch(this.config.endpoint, {
88
+ method: 'POST',
89
+ headers: {
90
+ 'Content-Type': 'application/json',
91
+ ...this.config.headers,
92
+ },
93
+ body: JSON.stringify(message),
94
+ });
95
+ if (!response.ok) {
96
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
97
+ }
98
+ }
99
+ buildUrl() {
100
+ const url = new URL(this.config.endpoint);
101
+ if (this.config.headers) {
102
+ Object.entries(this.config.headers).forEach(([key, value]) => {
103
+ url.searchParams.set(key, value);
104
+ });
105
+ }
106
+ return url.toString();
107
+ }
108
+ attemptReconnect() {
109
+ const maxAttempts = this.config.maxReconnectAttempts || 5;
110
+ const interval = this.config.reconnectInterval || 3000;
111
+ if (this.reconnectAttempts >= maxAttempts) {
112
+ this.emitError(new Error('Max reconnect attempts reached'));
113
+ return;
114
+ }
115
+ this.reconnectAttempts++;
116
+ this.emit('reconnecting', this.reconnectAttempts);
117
+ setTimeout(() => {
118
+ this.connect().catch(err => {
119
+ this.emitError(err);
120
+ });
121
+ }, interval);
122
+ }
123
+ }
124
+ exports.SseTransport = SseTransport;
125
+ // ============================================================================
126
+ // WebSocket Transport
127
+ // ============================================================================
128
+ class WebSocketTransport extends BaseTransport {
129
+ constructor(config) {
130
+ super(config);
131
+ this.ws = null;
132
+ this.reconnectAttempts = 0;
133
+ }
134
+ async connect() {
135
+ if (this.ws) {
136
+ this.ws.close();
137
+ }
138
+ return new Promise((resolve, reject) => {
139
+ this.ws = new WebSocket(this.config.endpoint);
140
+ this.ws.onopen = () => {
141
+ this.reconnectAttempts = 0;
142
+ this.emitConnected();
143
+ resolve();
144
+ };
145
+ this.ws.onmessage = (event) => {
146
+ try {
147
+ const msg = JSON.parse(event.data);
148
+ this.emitMessage(msg);
149
+ }
150
+ catch (err) {
151
+ this.emitError(new Error(`Failed to parse WebSocket message: ${err}`));
152
+ }
153
+ };
154
+ this.ws.onerror = (err) => {
155
+ this.emitError(new Error('WebSocket error'));
156
+ reject(err);
157
+ };
158
+ this.ws.onclose = () => {
159
+ this.emitDisconnected();
160
+ if (this.config.reconnect !== false) {
161
+ this.attemptReconnect();
162
+ }
163
+ };
164
+ });
165
+ }
166
+ async disconnect() {
167
+ if (this.ws) {
168
+ this.ws.close();
169
+ this.ws = null;
170
+ }
171
+ this.emitDisconnected();
172
+ }
173
+ async send(message) {
174
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
175
+ throw new Error('WebSocket is not connected');
176
+ }
177
+ this.ws.send(JSON.stringify(message));
178
+ }
179
+ attemptReconnect() {
180
+ const maxAttempts = this.config.maxReconnectAttempts || 5;
181
+ const interval = this.config.reconnectInterval || 3000;
182
+ if (this.reconnectAttempts >= maxAttempts) {
183
+ this.emitError(new Error('Max reconnect attempts reached'));
184
+ return;
185
+ }
186
+ this.reconnectAttempts++;
187
+ this.emit('reconnecting', this.reconnectAttempts);
188
+ setTimeout(() => {
189
+ this.connect().catch(err => {
190
+ this.emitError(err);
191
+ });
192
+ }, interval);
193
+ }
194
+ }
195
+ exports.WebSocketTransport = WebSocketTransport;
196
+ // ============================================================================
197
+ // HTTP Transport
198
+ // ============================================================================
199
+ class HttpTransport extends BaseTransport {
200
+ constructor(config) {
201
+ super(config);
202
+ // HTTP 不需要持久连接
203
+ this.connected = true;
204
+ }
205
+ async connect() {
206
+ // HTTP 是无状态的,只需验证端点
207
+ try {
208
+ const response = await fetch(this.config.endpoint, {
209
+ method: 'HEAD',
210
+ headers: this.config.headers,
211
+ });
212
+ if (response.ok) {
213
+ this.emitConnected();
214
+ }
215
+ else {
216
+ throw new Error(`Endpoint returned ${response.status}`);
217
+ }
218
+ }
219
+ catch (err) {
220
+ this.emitError(new Error(`Failed to connect: ${err}`));
221
+ throw err;
222
+ }
223
+ }
224
+ async disconnect() {
225
+ this.emitDisconnected();
226
+ }
227
+ async send(message) {
228
+ const timeout = this.config.timeout || 30000;
229
+ const controller = new AbortController();
230
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
231
+ try {
232
+ const response = await fetch(this.config.endpoint, {
233
+ method: 'POST',
234
+ headers: {
235
+ 'Content-Type': 'application/json',
236
+ ...this.config.headers,
237
+ },
238
+ body: JSON.stringify(message),
239
+ signal: controller.signal,
240
+ });
241
+ clearTimeout(timeoutId);
242
+ if (!response.ok) {
243
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
244
+ }
245
+ const data = await response.json();
246
+ this.emitMessage(data);
247
+ }
248
+ catch (err) {
249
+ clearTimeout(timeoutId);
250
+ throw err;
251
+ }
252
+ }
253
+ }
254
+ exports.HttpTransport = HttpTransport;
255
+ // ============================================================================
256
+ // Transport Factory
257
+ // ============================================================================
258
+ function createTransport(config) {
259
+ switch (config.type) {
260
+ case 'sse':
261
+ return new SseTransport(config);
262
+ case 'websocket':
263
+ return new WebSocketTransport(config);
264
+ case 'http':
265
+ return new HttpTransport(config);
266
+ default:
267
+ throw new Error(`Unknown transport type: ${config.type}`);
268
+ }
269
+ }
270
+ // ============================================================================
271
+ // Transport Manager
272
+ // ============================================================================
273
+ class TransportManager {
274
+ constructor() {
275
+ this.transports = new Map();
276
+ }
277
+ /**
278
+ * 注册传输层
279
+ */
280
+ register(name, config) {
281
+ const transport = createTransport(config);
282
+ this.transports.set(name, transport);
283
+ return transport;
284
+ }
285
+ /**
286
+ * 获取传输层
287
+ */
288
+ get(name) {
289
+ return this.transports.get(name);
290
+ }
291
+ /**
292
+ * 移除传输层
293
+ */
294
+ async remove(name) {
295
+ const transport = this.transports.get(name);
296
+ if (transport) {
297
+ await transport.disconnect();
298
+ this.transports.delete(name);
299
+ }
300
+ }
301
+ /**
302
+ * 连接所有传输层
303
+ */
304
+ async connectAll() {
305
+ const promises = Array.from(this.transports.values()).map(t => t.connect());
306
+ await Promise.allSettled(promises);
307
+ }
308
+ /**
309
+ * 断开所有传输层
310
+ */
311
+ async disconnectAll() {
312
+ const promises = Array.from(this.transports.values()).map(t => t.disconnect());
313
+ await Promise.allSettled(promises);
314
+ }
315
+ /**
316
+ * 广播消息到所有传输层
317
+ */
318
+ async broadcast(message) {
319
+ const promises = Array.from(this.transports.values())
320
+ .filter(t => t.isConnected())
321
+ .map(t => t.send(message));
322
+ await Promise.allSettled(promises);
323
+ }
324
+ }
325
+ exports.TransportManager = TransportManager;
326
+ // ============================================================================
327
+ // 单例
328
+ // ============================================================================
329
+ let transportManager = null;
330
+ function getTransportManager() {
331
+ if (!transportManager) {
332
+ transportManager = new TransportManager();
333
+ }
334
+ return transportManager;
335
+ }
336
+ function resetTransportManager() {
337
+ if (transportManager) {
338
+ transportManager.disconnectAll().catch(() => { });
339
+ }
340
+ transportManager = null;
341
+ }
342
+ //# sourceMappingURL=transports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.js","sourceRoot":"","sources":["../../../src/services/mcp/transports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * openhorse - Session Memory 服务入口
3
+ */
4
+ export { SessionMemory, getSessionMemory, resetSessionMemory, type SessionMemoryConfig, type SessionMemoryEntry, } from './sessionMemory';
5
+ export { generateSessionSummaryPrompt, generateMemoryExtractionPrompt, generateContextCompressionPrompt, } from './prompts';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/session-memory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,WAAW,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * openhorse - Session Memory 服务入口
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateContextCompressionPrompt = exports.generateMemoryExtractionPrompt = exports.generateSessionSummaryPrompt = exports.resetSessionMemory = exports.getSessionMemory = exports.SessionMemory = void 0;
7
+ var sessionMemory_1 = require("./sessionMemory");
8
+ Object.defineProperty(exports, "SessionMemory", { enumerable: true, get: function () { return sessionMemory_1.SessionMemory; } });
9
+ Object.defineProperty(exports, "getSessionMemory", { enumerable: true, get: function () { return sessionMemory_1.getSessionMemory; } });
10
+ Object.defineProperty(exports, "resetSessionMemory", { enumerable: true, get: function () { return sessionMemory_1.resetSessionMemory; } });
11
+ var prompts_1 = require("./prompts");
12
+ Object.defineProperty(exports, "generateSessionSummaryPrompt", { enumerable: true, get: function () { return prompts_1.generateSessionSummaryPrompt; } });
13
+ Object.defineProperty(exports, "generateMemoryExtractionPrompt", { enumerable: true, get: function () { return prompts_1.generateMemoryExtractionPrompt; } });
14
+ Object.defineProperty(exports, "generateContextCompressionPrompt", { enumerable: true, get: function () { return prompts_1.generateContextCompressionPrompt; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/session-memory/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAMyB;AALvB,8GAAA,aAAa,OAAA;AACb,iHAAA,gBAAgB,OAAA;AAChB,mHAAA,kBAAkB,OAAA;AAKpB,qCAImB;AAHjB,uHAAA,4BAA4B,OAAA;AAC5B,yHAAA,8BAA8B,OAAA;AAC9B,2HAAA,gCAAgC,OAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * openhorse - Session Memory 提示模板
3
+ *
4
+ * 用于生成会话摘要和记忆的提示词。
5
+ */
6
+ /**
7
+ * 生成会话摘要提示
8
+ */
9
+ export declare function generateSessionSummaryPrompt(entries: Array<{
10
+ topic: string;
11
+ actions: string[];
12
+ filesModified: string[];
13
+ }>): string;
14
+ /**
15
+ * 生成记忆提取提示
16
+ */
17
+ export declare function generateMemoryExtractionPrompt(content: string): string;
18
+ /**
19
+ * 生成上下文压缩提示
20
+ */
21
+ export declare function generateContextCompressionPrompt(oldMessages: string): string;
22
+ export { generateSessionSummaryPrompt as summaryPrompt, generateMemoryExtractionPrompt as extractionPrompt, generateContextCompressionPrompt as compressionPrompt, };
23
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/services/session-memory/prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC,GACD,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYtE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,MAAM,GAClB,MAAM,CAUR;AAMD,OAAO,EACL,4BAA4B,IAAI,aAAa,EAC7C,8BAA8B,IAAI,gBAAgB,EAClD,gCAAgC,IAAI,iBAAiB,GACtD,CAAC"}