orbitx 0.0.3 → 0.0.4

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 (109) hide show
  1. package/{src/core/ai-provider.ts → dist/core/ai-provider.d.ts} +19 -25
  2. package/dist/core/ai-provider.d.ts.map +1 -0
  3. package/dist/core/ai-provider.js +4 -0
  4. package/dist/core/ai-provider.js.map +1 -0
  5. package/dist/core/base-agent.d.ts +53 -0
  6. package/dist/core/base-agent.d.ts.map +1 -0
  7. package/{src/core/base-agent.ts → dist/core/base-agent.js} +197 -269
  8. package/dist/core/base-agent.js.map +1 -0
  9. package/dist/core/deepseek-provider.d.ts +9 -0
  10. package/dist/core/deepseek-provider.d.ts.map +1 -0
  11. package/{src/core/deepseek-provider.ts → dist/core/deepseek-provider.js} +60 -71
  12. package/dist/core/deepseek-provider.js.map +1 -0
  13. package/dist/core/mcp-client.d.ts +21 -0
  14. package/dist/core/mcp-client.d.ts.map +1 -0
  15. package/{src/core/mcp-client.ts → dist/core/mcp-client.js} +90 -113
  16. package/dist/core/mcp-client.js.map +1 -0
  17. package/dist/core/mcp-computer.d.ts +4 -0
  18. package/dist/core/mcp-computer.d.ts.map +1 -0
  19. package/{src/core/mcp-computer.ts → dist/core/mcp-computer.js} +5 -5
  20. package/dist/core/mcp-computer.js.map +1 -0
  21. package/dist/core/mcp-connection.d.ts +6 -0
  22. package/dist/core/mcp-connection.d.ts.map +1 -0
  23. package/dist/core/mcp-connection.js +10 -0
  24. package/dist/core/mcp-connection.js.map +1 -0
  25. package/dist/core/mcp-ipc-connection.d.ts +20 -0
  26. package/dist/core/mcp-ipc-connection.d.ts.map +1 -0
  27. package/{src/core/mcp-ipc-connection.ts → dist/core/mcp-ipc-connection.js} +126 -153
  28. package/dist/core/mcp-ipc-connection.js.map +1 -0
  29. package/dist/core/mcp-server.d.ts +9 -0
  30. package/dist/core/mcp-server.d.ts.map +1 -0
  31. package/{src/core/mcp-server.ts → dist/core/mcp-server.js} +45 -49
  32. package/dist/core/mcp-server.js.map +1 -0
  33. package/dist/core/mcp.d.ts +29 -0
  34. package/dist/core/mcp.d.ts.map +1 -0
  35. package/dist/core/mcp.js +11 -0
  36. package/dist/core/mcp.js.map +1 -0
  37. package/dist/core/ollama-provider.d.ts +9 -0
  38. package/dist/core/ollama-provider.d.ts.map +1 -0
  39. package/{src/core/ollama-provider.ts → dist/core/ollama-provider.js} +59 -70
  40. package/dist/core/ollama-provider.js.map +1 -0
  41. package/dist/core/skill.d.ts +15 -0
  42. package/dist/core/skill.d.ts.map +1 -0
  43. package/dist/core/skill.js +11 -0
  44. package/dist/core/skill.js.map +1 -0
  45. package/dist/index.d.ts +18 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/{src/index.ts → dist/index.js} +16 -17
  48. package/dist/index.js.map +1 -0
  49. package/dist/templates/researcher.d.ts +27 -0
  50. package/dist/templates/researcher.d.ts.map +1 -0
  51. package/dist/templates/researcher.js +70 -0
  52. package/dist/templates/researcher.js.map +1 -0
  53. package/dist/templates/simple.d.ts +27 -0
  54. package/dist/templates/simple.d.ts.map +1 -0
  55. package/dist/templates/simple.js +35 -0
  56. package/dist/templates/simple.js.map +1 -0
  57. package/dist/tests/mcp.test.d.ts +2 -0
  58. package/dist/tests/mcp.test.d.ts.map +1 -0
  59. package/{src/tests/mcp.test.ts → dist/tests/mcp.test.js} +55 -73
  60. package/dist/tests/mcp.test.js.map +1 -0
  61. package/dist/tools/fs/index.d.ts +3 -0
  62. package/dist/tools/fs/index.d.ts.map +1 -0
  63. package/dist/tools/fs/index.js +3 -0
  64. package/dist/tools/fs/index.js.map +1 -0
  65. package/dist/tools/fs/read-file.d.ts +4 -0
  66. package/dist/tools/fs/read-file.d.ts.map +1 -0
  67. package/{src/tools/fs/read-file.ts → dist/tools/fs/read-file.js} +49 -54
  68. package/dist/tools/fs/read-file.js.map +1 -0
  69. package/dist/tools/fs/write-file.d.ts +4 -0
  70. package/dist/tools/fs/write-file.d.ts.map +1 -0
  71. package/{src/tools/fs/write-file.ts → dist/tools/fs/write-file.js} +68 -73
  72. package/dist/tools/fs/write-file.js.map +1 -0
  73. package/dist/tools/utils/get-current-time.d.ts +4 -0
  74. package/dist/tools/utils/get-current-time.d.ts.map +1 -0
  75. package/{src/tools/utils/get-current-time.ts → dist/tools/utils/get-current-time.js} +40 -45
  76. package/dist/tools/utils/get-current-time.js.map +1 -0
  77. package/dist/tools/utils/index.d.ts +2 -0
  78. package/dist/tools/utils/index.d.ts.map +1 -0
  79. package/dist/tools/utils/index.js +2 -0
  80. package/dist/tools/utils/index.js.map +1 -0
  81. package/dist/tools/www/fetch.d.ts +4 -0
  82. package/dist/tools/www/fetch.d.ts.map +1 -0
  83. package/{src/tools/www/fetch.ts → dist/tools/www/fetch.js} +147 -161
  84. package/dist/tools/www/fetch.js.map +1 -0
  85. package/dist/tools/www/index.d.ts +4 -0
  86. package/dist/tools/www/index.d.ts.map +1 -0
  87. package/dist/tools/www/index.js +4 -0
  88. package/dist/tools/www/index.js.map +1 -0
  89. package/dist/tools/www/read-web-page.d.ts +4 -0
  90. package/dist/tools/www/read-web-page.d.ts.map +1 -0
  91. package/{src/tools/www/read-web-page.ts → dist/tools/www/read-web-page.js} +330 -350
  92. package/dist/tools/www/read-web-page.js.map +1 -0
  93. package/dist/tools/www/web-search.d.ts +4 -0
  94. package/dist/tools/www/web-search.d.ts.map +1 -0
  95. package/{src/tools/www/web-search.ts → dist/tools/www/web-search.js} +82 -102
  96. package/dist/tools/www/web-search.js.map +1 -0
  97. package/package.json +19 -5
  98. package/.env.example +0 -1
  99. package/orbitx.png +0 -0
  100. package/public/index.html +0 -397
  101. package/src/core/mcp-connection.ts +0 -12
  102. package/src/core/mcp.ts +0 -23
  103. package/src/core/skill.ts +0 -16
  104. package/src/templates/researcher.ts +0 -73
  105. package/src/templates/simple.ts +0 -64
  106. package/src/tools/fs/index.ts +0 -2
  107. package/src/tools/utils/index.ts +0 -1
  108. package/src/tools/www/index.ts +0 -3
  109. package/tsconfig.json +0 -34
@@ -1,153 +1,126 @@
1
- import * as net from "net";
2
- import * as fs from "fs";
3
- import MCPConnection from "./mcp-connection";
4
-
5
- type Role = "server" | "client" | "pending";
6
-
7
- export class MCPIPCConnection extends MCPConnection {
8
- private readonly socketPath: string;
9
- private socket: net.Socket | null = null;
10
- private server: net.Server | null = null;
11
- private role: Role = "pending";
12
- private writeBuffer: Buffer[] = [];
13
- private readBuffer = "";
14
-
15
- constructor(socketPath: string) {
16
- super(true);
17
- this.socketPath = socketPath;
18
-
19
- this.on("write", (data: unknown) => {
20
- this._sendJSON(data);
21
- });
22
-
23
- setTimeout(() => {
24
- this._tryConnect();
25
- }, Math.random() * 200); // Pervent Race Condtion
26
- }
27
-
28
- close(): void {
29
- this.socket?.destroy();
30
- this.server?.close();
31
- this._cleanSocketFile();
32
- }
33
-
34
- private _tryConnect(): void {
35
- const sock = net.createConnection({ path: this.socketPath });
36
-
37
- sock.once("connect", () => {
38
- this.role = "client";
39
- this.emit("role", "client");
40
- this._attachSocket(sock);
41
- });
42
-
43
- sock.once("error", (err: NodeJS.ErrnoException) => {
44
- if (err.code === "ENOENT" || err.code === "ECONNREFUSED") {
45
- sock.destroy();
46
- this._becomeServer();
47
- } else {
48
- this.emit("error", err);
49
- }
50
- });
51
- }
52
-
53
- private _becomeServer(): void {
54
- this._cleanSocketFile();
55
-
56
- const srv = net.createServer((peer) => {
57
- this.role = "server";
58
- this.emit("role", "server");
59
-
60
- srv.close();
61
-
62
- this._attachSocket(peer);
63
- });
64
-
65
- srv.on("error", (err) => this.emit("error", err));
66
-
67
- srv.listen({ path: this.socketPath }, () => {
68
- this.server = srv;
69
- this.emit("listening", this.socketPath);
70
- });
71
- }
72
-
73
- private _attachSocket(sock: net.Socket): void {
74
- this.socket = sock;
75
-
76
- for (const chunk of this.writeBuffer) {
77
- sock.write(chunk);
78
- }
79
- this.writeBuffer = [];
80
-
81
- sock.setEncoding("utf8");
82
-
83
- sock.on("data", (chunk: string) => {
84
- this._handleIncoming(chunk);
85
- });
86
-
87
- sock.on("end", () => {
88
- this.emit("disconnected");
89
- this._maybeReconnect();
90
- });
91
-
92
- sock.on("error", (err: NodeJS.ErrnoException) => {
93
- this.emit("error", err);
94
- });
95
-
96
- this.emit("connected", this.role);
97
- }
98
-
99
- private _sendJSON(data: unknown): void {
100
- let line: string;
101
- try {
102
- line = JSON.stringify(data) + "\n";
103
- } catch (err) {
104
- this.emit("error", new Error(`MCPIPCConnection: cannot serialise data – ${err}`));
105
- return;
106
- }
107
-
108
- const chunk = Buffer.from(line, "utf8");
109
-
110
- if (this.socket && !this.socket.destroyed) {
111
- this.socket.write(chunk);
112
- } else {
113
- this.writeBuffer.push(chunk);
114
- }
115
- }
116
-
117
- private _handleIncoming(chunk: string): void {
118
- this.readBuffer += chunk;
119
-
120
- const lines = this.readBuffer.split("\n");
121
-
122
- this.readBuffer = lines.pop() ?? "";
123
-
124
- for (const line of lines) {
125
- const trimmed = line.trim();
126
- if (!trimmed) continue;
127
-
128
- try {
129
- const parsed = JSON.parse(trimmed);
130
- this.emit("read", parsed);
131
- } catch {
132
- this.emit("error", new Error(`MCPIPCConnection: malformed JSON – ${trimmed}`));
133
- }
134
- }
135
- }
136
-
137
- private _cleanSocketFile(): void {
138
- try {
139
- fs.unlinkSync(this.socketPath);
140
- } catch { }
141
- }
142
-
143
- private _maybeReconnect(): void {
144
- if (this.role === "client") {
145
- setTimeout(() => {
146
- this.role = "pending";
147
- this._tryConnect();
148
- }, 500);
149
- }
150
- }
151
- }
152
-
153
- export default MCPIPCConnection;
1
+ import * as net from "net";
2
+ import * as fs from "fs";
3
+ import MCPConnection from "./mcp-connection";
4
+ export class MCPIPCConnection extends MCPConnection {
5
+ socketPath;
6
+ socket = null;
7
+ server = null;
8
+ role = "pending";
9
+ writeBuffer = [];
10
+ readBuffer = "";
11
+ constructor(socketPath) {
12
+ super(true);
13
+ this.socketPath = socketPath;
14
+ this.on("write", (data) => {
15
+ this._sendJSON(data);
16
+ });
17
+ setTimeout(() => {
18
+ this._tryConnect();
19
+ }, Math.random() * 200); // Pervent Race Condtion
20
+ }
21
+ close() {
22
+ this.socket?.destroy();
23
+ this.server?.close();
24
+ this._cleanSocketFile();
25
+ }
26
+ _tryConnect() {
27
+ const sock = net.createConnection({ path: this.socketPath });
28
+ sock.once("connect", () => {
29
+ this.role = "client";
30
+ this.emit("role", "client");
31
+ this._attachSocket(sock);
32
+ });
33
+ sock.once("error", (err) => {
34
+ if (err.code === "ENOENT" || err.code === "ECONNREFUSED") {
35
+ sock.destroy();
36
+ this._becomeServer();
37
+ }
38
+ else {
39
+ this.emit("error", err);
40
+ }
41
+ });
42
+ }
43
+ _becomeServer() {
44
+ this._cleanSocketFile();
45
+ const srv = net.createServer((peer) => {
46
+ this.role = "server";
47
+ this.emit("role", "server");
48
+ srv.close();
49
+ this._attachSocket(peer);
50
+ });
51
+ srv.on("error", (err) => this.emit("error", err));
52
+ srv.listen({ path: this.socketPath }, () => {
53
+ this.server = srv;
54
+ this.emit("listening", this.socketPath);
55
+ });
56
+ }
57
+ _attachSocket(sock) {
58
+ this.socket = sock;
59
+ for (const chunk of this.writeBuffer) {
60
+ sock.write(chunk);
61
+ }
62
+ this.writeBuffer = [];
63
+ sock.setEncoding("utf8");
64
+ sock.on("data", (chunk) => {
65
+ this._handleIncoming(chunk);
66
+ });
67
+ sock.on("end", () => {
68
+ this.emit("disconnected");
69
+ this._maybeReconnect();
70
+ });
71
+ sock.on("error", (err) => {
72
+ this.emit("error", err);
73
+ });
74
+ this.emit("connected", this.role);
75
+ }
76
+ _sendJSON(data) {
77
+ let line;
78
+ try {
79
+ line = JSON.stringify(data) + "\n";
80
+ }
81
+ catch (err) {
82
+ this.emit("error", new Error(`MCPIPCConnection: cannot serialise data – ${err}`));
83
+ return;
84
+ }
85
+ const chunk = Buffer.from(line, "utf8");
86
+ if (this.socket && !this.socket.destroyed) {
87
+ this.socket.write(chunk);
88
+ }
89
+ else {
90
+ this.writeBuffer.push(chunk);
91
+ }
92
+ }
93
+ _handleIncoming(chunk) {
94
+ this.readBuffer += chunk;
95
+ const lines = this.readBuffer.split("\n");
96
+ this.readBuffer = lines.pop() ?? "";
97
+ for (const line of lines) {
98
+ const trimmed = line.trim();
99
+ if (!trimmed)
100
+ continue;
101
+ try {
102
+ const parsed = JSON.parse(trimmed);
103
+ this.emit("read", parsed);
104
+ }
105
+ catch {
106
+ this.emit("error", new Error(`MCPIPCConnection: malformed JSON – ${trimmed}`));
107
+ }
108
+ }
109
+ }
110
+ _cleanSocketFile() {
111
+ try {
112
+ fs.unlinkSync(this.socketPath);
113
+ }
114
+ catch { }
115
+ }
116
+ _maybeReconnect() {
117
+ if (this.role === "client") {
118
+ setTimeout(() => {
119
+ this.role = "pending";
120
+ this._tryConnect();
121
+ }, 500);
122
+ }
123
+ }
124
+ }
125
+ export default MCPIPCConnection;
126
+ //# sourceMappingURL=mcp-ipc-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-ipc-connection.js","sourceRoot":"","sources":["../../src/core/mcp-ipc-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type MCPTool from "./mcp";
2
+ import type MCPConnection from "./mcp-connection";
3
+ export declare class MCPServer {
4
+ #private;
5
+ constructor(connection: MCPConnection);
6
+ registerTool(tool: MCPTool): void;
7
+ }
8
+ export default MCPServer;
9
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAElD,qBAAa,SAAS;;gBAGN,UAAU,EAAE,aAAa;IAqCrC,YAAY,CAAC,IAAI,EAAE,OAAO;CAG7B;AAED,eAAe,SAAS,CAAC"}
@@ -1,49 +1,45 @@
1
- import type MCPTool from "./mcp";
2
- import type MCPConnection from "./mcp-connection";
3
-
4
- export class MCPServer {
5
- #connection;
6
- #tools: MCPTool[] = [];
7
- constructor(connection: MCPConnection) {
8
- this.#connection = connection;
9
- this.#connection.on("read", (data: any) => {
10
- const topic = data.topic;
11
- const pid = data.pid;
12
- if (topic == "getTools") {
13
- this.#connection.emit("write", {
14
- pid,
15
- topic: "getToolsCallback",
16
- tools: this.#tools.map(tool => ({
17
- name: tool.getOptions().name,
18
- description: tool.getOptions().description,
19
- inputs: tool.getOptions().inputs
20
- }))
21
- });
22
- }
23
- if (topic == "toolCall") {
24
- const tool = this.#tools.find(t => t.getOptions().name == data.tool);
25
- if (tool) {
26
- tool.getOptions().execute(data.envID, data.inputs).then((response) => {
27
- this.#connection.emit("write", {
28
- pid,
29
- topic: "toolCallCallback",
30
- output: response
31
- });
32
- }).catch(error => {
33
- this.#connection.emit("write", {
34
- pid,
35
- topic: "toolCallCallback",
36
- output: { error: error.message }
37
- });
38
- });
39
- }
40
- }
41
- });
42
- }
43
-
44
- registerTool(tool: MCPTool) {
45
- this.#tools.push(tool);
46
- }
47
- }
48
-
49
- export default MCPServer;
1
+ export class MCPServer {
2
+ #connection;
3
+ #tools = [];
4
+ constructor(connection) {
5
+ this.#connection = connection;
6
+ this.#connection.on("read", (data) => {
7
+ const topic = data.topic;
8
+ const pid = data.pid;
9
+ if (topic == "getTools") {
10
+ this.#connection.emit("write", {
11
+ pid,
12
+ topic: "getToolsCallback",
13
+ tools: this.#tools.map(tool => ({
14
+ name: tool.getOptions().name,
15
+ description: tool.getOptions().description,
16
+ inputs: tool.getOptions().inputs
17
+ }))
18
+ });
19
+ }
20
+ if (topic == "toolCall") {
21
+ const tool = this.#tools.find(t => t.getOptions().name == data.tool);
22
+ if (tool) {
23
+ tool.getOptions().execute(data.envID, data.inputs).then((response) => {
24
+ this.#connection.emit("write", {
25
+ pid,
26
+ topic: "toolCallCallback",
27
+ output: response
28
+ });
29
+ }).catch(error => {
30
+ this.#connection.emit("write", {
31
+ pid,
32
+ topic: "toolCallCallback",
33
+ output: { error: error.message }
34
+ });
35
+ });
36
+ }
37
+ }
38
+ });
39
+ }
40
+ registerTool(tool) {
41
+ this.#tools.push(tool);
42
+ }
43
+ }
44
+ export default MCPServer;
45
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,SAAS;IAClB,WAAW,CAAC;IACZ,MAAM,GAAc,EAAE,CAAC;IACvB,YAAY,UAAyB;QACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC3B,GAAG;oBACH,KAAK,EAAE,kBAAkB;oBACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAC5B,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI;wBAC5B,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW;wBAC1C,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM;qBACnC,CAAC,CAAC;iBACN,CAAC,CAAC;YACP,CAAC;YACD,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,IAAI,EAAE,CAAC;oBACP,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACjE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;4BAC3B,GAAG;4BACH,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,QAAQ;yBACnB,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE;4BAC3B,GAAG;4BACH,KAAK,EAAE,kBAAkB;4BACzB,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;yBACnC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,IAAa;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACJ;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare class MCPTool {
2
+ #private;
3
+ constructor(options: {
4
+ name: string;
5
+ description: string;
6
+ inputs: {
7
+ name: string;
8
+ type: "number" | "string" | "boolean" | "object" | "array";
9
+ description: string;
10
+ required?: boolean;
11
+ default?: any;
12
+ }[];
13
+ execute: (envID: string, inputs: Record<string, any>) => Promise<any>;
14
+ });
15
+ getOptions(): {
16
+ name: string;
17
+ description: string;
18
+ inputs: {
19
+ name: string;
20
+ type: "number" | "string" | "boolean" | "object" | "array";
21
+ description: string;
22
+ required?: boolean;
23
+ default?: any;
24
+ }[];
25
+ execute: (envID: string, inputs: Record<string, any>) => Promise<any>;
26
+ };
27
+ }
28
+ export default MCPTool;
29
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;;gBAEJ,OAAO,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE,CAAC;QACJ,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;KACzE;IAID,UAAU;cAdA,MAAM;qBACC,MAAM;gBACX;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE;iBACM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC;;CAQ5E;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,11 @@
1
+ export class MCPTool {
2
+ #options;
3
+ constructor(options) {
4
+ this.#options = options;
5
+ }
6
+ getOptions() {
7
+ return this.#options;
8
+ }
9
+ }
10
+ export default MCPTool;
11
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAChB,QAAQ,CAAC;IACT,YAAY,OAWX;QACG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ import AIProvider, { type Message, type ChatResponse, type StreamCallback } from "./ai-provider";
2
+ export declare class OllamaProvider extends AIProvider {
3
+ private client;
4
+ private model;
5
+ constructor(model: string, host?: string);
6
+ chat(messages: Message[], streamCallback?: StreamCallback): Promise<ChatResponse>;
7
+ }
8
+ export default OllamaProvider;
9
+ //# sourceMappingURL=ollama-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,EAAE,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjG,qBAAa,cAAe,SAAQ,UAAU;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiC;IAM5D,IAAI,CACN,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,cAAc,GAChC,OAAO,CAAC,YAAY,CAAC;CAmD3B;AAED,eAAe,cAAc,CAAC"}
@@ -1,70 +1,59 @@
1
- import { Ollama } from "ollama";
2
- import AIProvider, { type Message, type ChatResponse, type StreamCallback } from "./ai-provider";
3
-
4
- export class OllamaProvider extends AIProvider {
5
- private client: Ollama;
6
- private model: string;
7
-
8
- constructor(model: string, host: string = "http://localhost:11434") {
9
- super();
10
- this.client = new Ollama({ host });
11
- this.model = model;
12
- }
13
-
14
- async chat(
15
- messages: Message[],
16
- streamCallback?: StreamCallback
17
- ): Promise<ChatResponse> {
18
- const formattedMessages = messages.map(msg => ({
19
- role: msg.role,
20
- content: msg.content || ""
21
- }));
22
-
23
- if (streamCallback) {
24
- const stream = await this.client.chat({
25
- model: this.model,
26
- messages: formattedMessages as any,
27
- stream: true
28
- });
29
-
30
- let fullContent = "";
31
- let promptEvalCount = 0;
32
- let evalCount = 0;
33
-
34
- for await (const chunk of stream) {
35
- const content = chunk.message?.content || "";
36
- if (content) {
37
- fullContent += content;
38
- streamCallback({ role: "assistant", content, done: false });
39
- }
40
-
41
- if (chunk.prompt_eval_count !== undefined) {
42
- promptEvalCount = chunk.prompt_eval_count;
43
- }
44
- if (chunk.eval_count !== undefined) {
45
- evalCount = chunk.eval_count;
46
- }
47
- }
48
-
49
- streamCallback({ role: "assistant", content: "", done: true });
50
- return {
51
- content: fullContent,
52
- inputTokens: promptEvalCount,
53
- outputTokens: evalCount
54
- };
55
- } else {
56
- const response = await this.client.chat({
57
- model: this.model,
58
- messages: formattedMessages as any
59
- });
60
-
61
- return {
62
- content: response.message?.content || "",
63
- inputTokens: response.prompt_eval_count || 0,
64
- outputTokens: response.eval_count || 0
65
- };
66
- }
67
- }
68
- }
69
-
70
- export default OllamaProvider;
1
+ import { Ollama } from "ollama";
2
+ import AIProvider, {} from "./ai-provider";
3
+ export class OllamaProvider extends AIProvider {
4
+ client;
5
+ model;
6
+ constructor(model, host = "http://localhost:11434") {
7
+ super();
8
+ this.client = new Ollama({ host });
9
+ this.model = model;
10
+ }
11
+ async chat(messages, streamCallback) {
12
+ const formattedMessages = messages.map(msg => ({
13
+ role: msg.role,
14
+ content: msg.content || ""
15
+ }));
16
+ if (streamCallback) {
17
+ const stream = await this.client.chat({
18
+ model: this.model,
19
+ messages: formattedMessages,
20
+ stream: true
21
+ });
22
+ let fullContent = "";
23
+ let promptEvalCount = 0;
24
+ let evalCount = 0;
25
+ for await (const chunk of stream) {
26
+ const content = chunk.message?.content || "";
27
+ if (content) {
28
+ fullContent += content;
29
+ streamCallback({ role: "assistant", content, done: false });
30
+ }
31
+ if (chunk.prompt_eval_count !== undefined) {
32
+ promptEvalCount = chunk.prompt_eval_count;
33
+ }
34
+ if (chunk.eval_count !== undefined) {
35
+ evalCount = chunk.eval_count;
36
+ }
37
+ }
38
+ streamCallback({ role: "assistant", content: "", done: true });
39
+ return {
40
+ content: fullContent,
41
+ inputTokens: promptEvalCount,
42
+ outputTokens: evalCount
43
+ };
44
+ }
45
+ else {
46
+ const response = await this.client.chat({
47
+ model: this.model,
48
+ messages: formattedMessages
49
+ });
50
+ return {
51
+ content: response.message?.content || "",
52
+ inputTokens: response.prompt_eval_count || 0,
53
+ outputTokens: response.eval_count || 0
54
+ };
55
+ }
56
+ }
57
+ }
58
+ export default OllamaProvider;
59
+ //# sourceMappingURL=ollama-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../../src/core/ollama-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,UAAU,EAAE,EAAwD,MAAM,eAAe,CAAC;AAEjG,MAAM,OAAO,cAAe,SAAQ,UAAU;IAClC,MAAM,CAAS;IACf,KAAK,CAAS;IAEtB,YAAY,KAAa,EAAE,OAAe,wBAAwB;QAC9D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CACN,QAAmB,EACnB,cAA+B;QAE/B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAwB;gBAClC,MAAM,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;gBAC7C,IAAI,OAAO,EAAE,CAAC;oBACV,WAAW,IAAI,OAAO,CAAC;oBACvB,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;oBACxC,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC;gBAC9C,CAAC;gBACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACjC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;gBACjC,CAAC;YACL,CAAC;YAED,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,OAAO;gBACH,OAAO,EAAE,WAAW;gBACpB,WAAW,EAAE,eAAe;gBAC5B,YAAY,EAAE,SAAS;aAC1B,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAwB;aACrC,CAAC,CAAC;YAEH,OAAO;gBACH,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;gBACxC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,IAAI,CAAC;gBAC5C,YAAY,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;aACzC,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare class Skill {
2
+ #private;
3
+ constructor(skill: {
4
+ name: string;
5
+ description: string;
6
+ instructions: string;
7
+ });
8
+ getSkill(): {
9
+ name: string;
10
+ description: string;
11
+ instructions: string;
12
+ };
13
+ }
14
+ export default Skill;
15
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/core/skill.ts"],"names":[],"mappings":"AAAA,qBAAa,KAAK;;gBAEF,KAAK,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACxB;IAID,QAAQ;cAPE,MAAM;qBACC,MAAM;sBACL,MAAM;;CAQ3B;AAED,eAAe,KAAK,CAAC"}
@@ -0,0 +1,11 @@
1
+ export class Skill {
2
+ #skill;
3
+ constructor(skill) {
4
+ this.#skill = skill;
5
+ }
6
+ getSkill() {
7
+ return this.#skill;
8
+ }
9
+ }
10
+ export default Skill;
11
+ //# sourceMappingURL=skill.js.map