@sylix/coworker 1.1.4 → 1.2.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 (186) hide show
  1. package/dist/cli/index.d.ts +7 -0
  2. package/dist/cli/index.d.ts.map +1 -0
  3. package/dist/cli/index.js +183 -0
  4. package/dist/cli/index.js.map +1 -0
  5. package/dist/config/SettingsManager.d.ts +25 -0
  6. package/dist/config/SettingsManager.d.ts.map +1 -0
  7. package/dist/config/SettingsManager.js +96 -0
  8. package/dist/config/SettingsManager.js.map +1 -0
  9. package/dist/core/CoWorkerAgent.d.ts +52 -0
  10. package/dist/core/CoWorkerAgent.d.ts.map +1 -0
  11. package/dist/core/CoWorkerAgent.js +308 -0
  12. package/dist/core/CoWorkerAgent.js.map +1 -0
  13. package/dist/mcp/MCPClientManager.d.ts +30 -0
  14. package/dist/mcp/MCPClientManager.d.ts.map +1 -0
  15. package/dist/mcp/MCPClientManager.js +100 -0
  16. package/dist/mcp/MCPClientManager.js.map +1 -0
  17. package/dist/permissions/PermissionInterceptor.d.ts +21 -0
  18. package/dist/permissions/PermissionInterceptor.d.ts.map +1 -0
  19. package/dist/permissions/PermissionInterceptor.js +104 -0
  20. package/dist/permissions/PermissionInterceptor.js.map +1 -0
  21. package/dist/session/SessionManager.d.ts +38 -0
  22. package/dist/session/SessionManager.d.ts.map +1 -0
  23. package/dist/session/SessionManager.js +129 -0
  24. package/dist/session/SessionManager.js.map +1 -0
  25. package/dist/skills/HookAndSkillManager.d.ts +37 -0
  26. package/dist/skills/HookAndSkillManager.d.ts.map +1 -0
  27. package/dist/skills/HookAndSkillManager.js +141 -0
  28. package/dist/skills/HookAndSkillManager.js.map +1 -0
  29. package/dist/task/TaskEngine.d.ts +29 -0
  30. package/dist/task/TaskEngine.d.ts.map +1 -0
  31. package/dist/task/TaskEngine.js +117 -0
  32. package/dist/task/TaskEngine.js.map +1 -0
  33. package/dist/tools/CronManager.d.ts +22 -0
  34. package/dist/tools/CronManager.d.ts.map +1 -0
  35. package/dist/tools/CronManager.js +44 -0
  36. package/dist/tools/CronManager.js.map +1 -0
  37. package/dist/tools/NativeTools.d.ts +33 -0
  38. package/dist/tools/NativeTools.d.ts.map +1 -0
  39. package/dist/tools/NativeTools.js +175 -0
  40. package/dist/tools/NativeTools.js.map +1 -0
  41. package/dist/tools/Schemas.d.ts +365 -0
  42. package/dist/tools/Schemas.d.ts.map +1 -0
  43. package/dist/tools/Schemas.js +177 -0
  44. package/dist/tools/Schemas.js.map +1 -0
  45. package/dist/ui/InkUI.d.ts +2 -0
  46. package/dist/ui/InkUI.d.ts.map +1 -0
  47. package/dist/ui/InkUI.js +11 -0
  48. package/dist/ui/InkUI.js.map +1 -0
  49. package/package.json +18 -8
  50. package/dist/agents/runner.d.ts +0 -19
  51. package/dist/agents/runner.d.ts.map +0 -1
  52. package/dist/agents/runner.js +0 -170
  53. package/dist/agents/runner.js.map +0 -1
  54. package/dist/api/sylix.d.ts +0 -53
  55. package/dist/api/sylix.d.ts.map +0 -1
  56. package/dist/api/sylix.js +0 -237
  57. package/dist/api/sylix.js.map +0 -1
  58. package/dist/cli.d.ts +0 -3
  59. package/dist/cli.d.ts.map +0 -1
  60. package/dist/cli.js +0 -369
  61. package/dist/cli.js.map +0 -1
  62. package/dist/commands/ask.d.ts +0 -2
  63. package/dist/commands/ask.d.ts.map +0 -1
  64. package/dist/commands/ask.js +0 -55
  65. package/dist/commands/ask.js.map +0 -1
  66. package/dist/commands/chat.d.ts +0 -8
  67. package/dist/commands/chat.d.ts.map +0 -1
  68. package/dist/commands/chat.js +0 -479
  69. package/dist/commands/chat.js.map +0 -1
  70. package/dist/commands/commit.d.ts +0 -2
  71. package/dist/commands/commit.d.ts.map +0 -1
  72. package/dist/commands/commit.js +0 -163
  73. package/dist/commands/commit.js.map +0 -1
  74. package/dist/commands/config.d.ts +0 -3
  75. package/dist/commands/config.d.ts.map +0 -1
  76. package/dist/commands/config.js +0 -101
  77. package/dist/commands/config.js.map +0 -1
  78. package/dist/commands/edit.d.ts +0 -2
  79. package/dist/commands/edit.d.ts.map +0 -1
  80. package/dist/commands/edit.js +0 -112
  81. package/dist/commands/edit.js.map +0 -1
  82. package/dist/commands/explain.d.ts +0 -2
  83. package/dist/commands/explain.d.ts.map +0 -1
  84. package/dist/commands/explain.js +0 -99
  85. package/dist/commands/explain.js.map +0 -1
  86. package/dist/commands/login.d.ts +0 -2
  87. package/dist/commands/login.d.ts.map +0 -1
  88. package/dist/commands/login.js +0 -151
  89. package/dist/commands/login.js.map +0 -1
  90. package/dist/commands/review.d.ts +0 -2
  91. package/dist/commands/review.d.ts.map +0 -1
  92. package/dist/commands/review.js +0 -137
  93. package/dist/commands/review.js.map +0 -1
  94. package/dist/commands/run.d.ts +0 -2
  95. package/dist/commands/run.d.ts.map +0 -1
  96. package/dist/commands/run.js +0 -136
  97. package/dist/commands/run.js.map +0 -1
  98. package/dist/config/settings.d.ts +0 -33
  99. package/dist/config/settings.d.ts.map +0 -1
  100. package/dist/config/settings.js +0 -72
  101. package/dist/config/settings.js.map +0 -1
  102. package/dist/context/reader.d.ts +0 -24
  103. package/dist/context/reader.d.ts.map +0 -1
  104. package/dist/context/reader.js +0 -209
  105. package/dist/context/reader.js.map +0 -1
  106. package/dist/hooks/engine.d.ts +0 -9
  107. package/dist/hooks/engine.d.ts.map +0 -1
  108. package/dist/hooks/engine.js +0 -85
  109. package/dist/hooks/engine.js.map +0 -1
  110. package/dist/mcp/client.d.ts +0 -15
  111. package/dist/mcp/client.d.ts.map +0 -1
  112. package/dist/mcp/client.js +0 -211
  113. package/dist/mcp/client.js.map +0 -1
  114. package/dist/mcp/transport.d.ts +0 -46
  115. package/dist/mcp/transport.d.ts.map +0 -1
  116. package/dist/mcp/transport.js +0 -196
  117. package/dist/mcp/transport.js.map +0 -1
  118. package/dist/memory/loader.d.ts +0 -41
  119. package/dist/memory/loader.d.ts.map +0 -1
  120. package/dist/memory/loader.js +0 -249
  121. package/dist/memory/loader.js.map +0 -1
  122. package/dist/permissions/manager.d.ts +0 -7
  123. package/dist/permissions/manager.d.ts.map +0 -1
  124. package/dist/permissions/manager.js +0 -125
  125. package/dist/permissions/manager.js.map +0 -1
  126. package/dist/scripts/postinstall.d.ts +0 -7
  127. package/dist/scripts/postinstall.d.ts.map +0 -1
  128. package/dist/scripts/postinstall.js +0 -23
  129. package/dist/scripts/postinstall.js.map +0 -1
  130. package/dist/session/memory.d.ts +0 -6
  131. package/dist/session/memory.d.ts.map +0 -1
  132. package/dist/session/memory.js +0 -81
  133. package/dist/session/memory.js.map +0 -1
  134. package/dist/session/store.d.ts +0 -19
  135. package/dist/session/store.d.ts.map +0 -1
  136. package/dist/session/store.js +0 -94
  137. package/dist/session/store.js.map +0 -1
  138. package/dist/tools/bash.d.ts +0 -2
  139. package/dist/tools/bash.d.ts.map +0 -1
  140. package/dist/tools/bash.js +0 -40
  141. package/dist/tools/bash.js.map +0 -1
  142. package/dist/tools/chrome.d.ts +0 -10
  143. package/dist/tools/chrome.d.ts.map +0 -1
  144. package/dist/tools/chrome.js +0 -228
  145. package/dist/tools/chrome.js.map +0 -1
  146. package/dist/tools/edit.d.ts +0 -2
  147. package/dist/tools/edit.d.ts.map +0 -1
  148. package/dist/tools/edit.js +0 -67
  149. package/dist/tools/edit.js.map +0 -1
  150. package/dist/tools/glob.d.ts +0 -10
  151. package/dist/tools/glob.d.ts.map +0 -1
  152. package/dist/tools/glob.js +0 -245
  153. package/dist/tools/glob.js.map +0 -1
  154. package/dist/tools/grep.d.ts +0 -10
  155. package/dist/tools/grep.d.ts.map +0 -1
  156. package/dist/tools/grep.js +0 -252
  157. package/dist/tools/grep.js.map +0 -1
  158. package/dist/tools/ls.d.ts +0 -2
  159. package/dist/tools/ls.d.ts.map +0 -1
  160. package/dist/tools/ls.js +0 -75
  161. package/dist/tools/ls.js.map +0 -1
  162. package/dist/tools/read.d.ts +0 -2
  163. package/dist/tools/read.d.ts.map +0 -1
  164. package/dist/tools/read.js +0 -72
  165. package/dist/tools/read.js.map +0 -1
  166. package/dist/tools/registry.d.ts +0 -3
  167. package/dist/tools/registry.d.ts.map +0 -1
  168. package/dist/tools/registry.js +0 -281
  169. package/dist/tools/registry.js.map +0 -1
  170. package/dist/tools/schema.json +0 -508
  171. package/dist/tools/task.d.ts +0 -11
  172. package/dist/tools/task.d.ts.map +0 -1
  173. package/dist/tools/task.js +0 -118
  174. package/dist/tools/task.js.map +0 -1
  175. package/dist/tools/web.d.ts +0 -3
  176. package/dist/tools/web.d.ts.map +0 -1
  177. package/dist/tools/web.js +0 -113
  178. package/dist/tools/web.js.map +0 -1
  179. package/dist/tools/write.d.ts +0 -18
  180. package/dist/tools/write.d.ts.map +0 -1
  181. package/dist/tools/write.js +0 -122
  182. package/dist/tools/write.js.map +0 -1
  183. package/dist/utils/output.d.ts +0 -62
  184. package/dist/utils/output.d.ts.map +0 -1
  185. package/dist/utils/output.js +0 -487
  186. package/dist/utils/output.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Phase 4: CLI Flags & Headless IDE Modes.
4
+ * The absolute entry point uniting all 16 features.
5
+ */
6
+ export declare function bootstrapCoWorker(): Promise<void>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAOA;;;GAGG;AACH,wBAAsB,iBAAiB,kBAqGtC"}
@@ -0,0 +1,183 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.bootstrapCoWorker = bootstrapCoWorker;
38
+ const commander_1 = require("commander");
39
+ const CoWorkerAgent_1 = require("../core/CoWorkerAgent");
40
+ const child_process_1 = require("child_process");
41
+ const http = __importStar(require("http"));
42
+ const ws_1 = require("ws");
43
+ /**
44
+ * Phase 4: CLI Flags & Headless IDE Modes.
45
+ * The absolute entry point uniting all 16 features.
46
+ */
47
+ async function bootstrapCoWorker() {
48
+ // Dynamic import for optional InkUI
49
+ let renderCoWorkerUI;
50
+ try {
51
+ const inkModule = await Promise.resolve().then(() => __importStar(require('../ui/InkUI')));
52
+ renderCoWorkerUI = inkModule.renderCoWorkerUI;
53
+ }
54
+ catch (e) {
55
+ // InkUI not available - will use text mode
56
+ }
57
+ const program = new commander_1.Command();
58
+ program.allowUnknownOption();
59
+ program.passThroughOptions();
60
+ program
61
+ .name('coworker')
62
+ .description('Autonomous Agentic Parity to Claude Code')
63
+ .version('1.0.0')
64
+ .option('-p, --print', 'One-shot mode, process and exit')
65
+ .option('-c, --continue', 'Resume most recent session')
66
+ .option('-r, --resume <id>', 'Resume specific session UUID')
67
+ .option('-w, --worktree', 'Run in an isolated git worktree branch')
68
+ .option('--output-format <format>', 'text | json', 'text')
69
+ .option('--model <name>', 'Override default model', 'helix-1.2')
70
+ .option('--dangerously-skip-permissions', 'Bypass all security policies')
71
+ .option('--remote-control <port>', 'Start REST/WebSocket server for IDE access');
72
+ program
73
+ .command('update')
74
+ .description('Auto-update the CoWorker CLI')
75
+ .action(() => {
76
+ console.log('Downloading latest release...');
77
+ (0, child_process_1.spawnSync)('npm', ['install', '-g', 'coworker'], { stdio: 'inherit' });
78
+ process.exit(0);
79
+ });
80
+ program
81
+ .command('auth <action>')
82
+ .description('Manage authentication (login/logout/status)')
83
+ .action((action) => {
84
+ console.log(`Authentication ${action} is active.`);
85
+ process.exit(0);
86
+ });
87
+ program.parse(process.argv);
88
+ const options = program.opts();
89
+ console.error('DEBUG: args =', program.args, 'opts =', options);
90
+ if (options.worktree) {
91
+ console.log(`[Isolating Agent...] Creating Git Worktree: coworker-task`);
92
+ try {
93
+ (0, child_process_1.spawnSync)('git', ['worktree', 'add', '../coworker-task', '-b', `coworker/temp-${Date.now()}`]);
94
+ process.chdir('../coworker-task');
95
+ console.log(`[Isolated] Changed directory to protected worktree.`);
96
+ }
97
+ catch {
98
+ console.error('Failed to create Git worktree. Ensure repo is clean.');
99
+ process.exit(1);
100
+ }
101
+ }
102
+ if (options.remoteControl) {
103
+ const port = parseInt(options.remoteControl, 10);
104
+ startHeadlessServer(port);
105
+ return;
106
+ }
107
+ // Determine resuming logic
108
+ let sessionId = undefined;
109
+ if (options.resume)
110
+ sessionId = options.resume;
111
+ else if (options.continue)
112
+ sessionId = 'latest';
113
+ const agent = new CoWorkerAgent_1.CoWorkerAgent({ model: options.model, role: 'General' });
114
+ if (sessionId) {
115
+ agent.sessions.currentSessionId = sessionId;
116
+ }
117
+ // Boot async subsystems (Settings, MCP servers, Skills)
118
+ await agent.boot();
119
+ // Apply --dangerously-skip-permissions if provided
120
+ if (options.dangerouslySkipPermissions) {
121
+ console.log('\x1b[31m⚠️ WARNING: All permission checks are DISABLED.\x1b[0m');
122
+ agent.permissions = { intercept: async () => true };
123
+ }
124
+ // One shot processing mode
125
+ if (options.print && program.args.length > 0) {
126
+ runOneShot(agent, program.args.join(' '), options.outputFormat);
127
+ }
128
+ else if (renderCoWorkerUI) {
129
+ // Launch the React Ink Terminal UI for interactive mode
130
+ const prompt = program.args.length > 0 ? program.args.join(' ') : undefined;
131
+ renderCoWorkerUI(agent, prompt);
132
+ }
133
+ else {
134
+ // Fallback: use one-shot mode for prompts
135
+ const prompt = program.args.length > 0 ? program.args.join(' ') : undefined;
136
+ if (prompt) {
137
+ runOneShot(agent, prompt, options.outputFormat);
138
+ }
139
+ else {
140
+ console.log('CoWorker ready. Use --print to send a prompt.');
141
+ }
142
+ }
143
+ }
144
+ async function runOneShot(agent, prompt, format) {
145
+ let outputText = '';
146
+ // Stream the generator
147
+ for await (const chunk of agent.chat(prompt)) {
148
+ if (format === 'text') {
149
+ process.stdout.write(chunk);
150
+ }
151
+ outputText += chunk;
152
+ }
153
+ if (format === 'json') {
154
+ console.log(JSON.stringify({ response: outputText }));
155
+ }
156
+ process.exit(0);
157
+ }
158
+ function startHeadlessServer(port) {
159
+ const server = http.createServer();
160
+ const wss = new ws_1.WebSocketServer({ server });
161
+ wss.on('connection', (ws) => {
162
+ console.log('[Remote-Control] IDE Connected via WebSocket');
163
+ // Each IDE window instance gets its own agent session tracking
164
+ const remoteAgent = new CoWorkerAgent_1.CoWorkerAgent({ model: 'helix-1.2', role: 'General' });
165
+ ws.on('message', async (data) => {
166
+ const { prompt, sessionId } = JSON.parse(data.toString());
167
+ if (sessionId)
168
+ remoteAgent.sessions.currentSessionId = sessionId;
169
+ for await (const chunk of remoteAgent.chat(prompt)) {
170
+ ws.send(JSON.stringify({ type: 'stream', chunk }));
171
+ }
172
+ ws.send(JSON.stringify({ type: 'done' }));
173
+ });
174
+ });
175
+ server.listen(port, () => {
176
+ console.log(`[Remote-Control] Listening for headless connections on port ${port}...`);
177
+ });
178
+ }
179
+ // Self-execute if this file is directly run
180
+ if (require.main === module) {
181
+ bootstrapCoWorker();
182
+ }
183
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface CoWorkerSettings {
2
+ allow: string[];
3
+ deny: string[];
4
+ mcpServers: Record<string, {
5
+ command: string;
6
+ args: string[];
7
+ }>;
8
+ worktree: {
9
+ symlinkDirectories: string[];
10
+ sparsePaths: string[];
11
+ };
12
+ mainBranch: string;
13
+ }
14
+ /**
15
+ * Phase 8: Settings JSON Parser.
16
+ * Loads user configurations from ~/.coworker/settings.json or the local project directory.
17
+ */
18
+ export declare class SettingsManager {
19
+ private globalPath;
20
+ private localPath;
21
+ config: CoWorkerSettings;
22
+ loadSettings(): Promise<CoWorkerSettings>;
23
+ private merge;
24
+ }
25
+ //# sourceMappingURL=SettingsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsManager.d.ts","sourceRoot":"","sources":["../../src/config/SettingsManager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE;QACR,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAyD;IAC3E,OAAO,CAAC,SAAS,CAA0D;IAEpE,MAAM,EAAE,gBAAgB,CAS7B;IAEI,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAsB/C,OAAO,CAAC,KAAK;CAWd"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SettingsManager = void 0;
37
+ const fs = __importStar(require("fs/promises"));
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ /**
41
+ * Phase 8: Settings JSON Parser.
42
+ * Loads user configurations from ~/.coworker/settings.json or the local project directory.
43
+ */
44
+ class SettingsManager {
45
+ constructor() {
46
+ this.globalPath = path.join(os.homedir(), '.coworker', 'settings.json');
47
+ this.localPath = path.join(process.cwd(), '.coworker', 'settings.json');
48
+ this.config = {
49
+ allow: [],
50
+ deny: [],
51
+ mcpServers: {},
52
+ worktree: {
53
+ symlinkDirectories: ['node_modules'],
54
+ sparsePaths: []
55
+ },
56
+ mainBranch: 'main'
57
+ };
58
+ }
59
+ async loadSettings() {
60
+ try {
61
+ // Load global first
62
+ const globalData = await fs.readFile(this.globalPath, 'utf8');
63
+ const globalParsed = JSON.parse(globalData);
64
+ this.merge(globalParsed);
65
+ }
66
+ catch {
67
+ // Global doesn't exist
68
+ }
69
+ try {
70
+ // Override with local
71
+ const localData = await fs.readFile(this.localPath, 'utf8');
72
+ const localParsed = JSON.parse(localData);
73
+ this.merge(localParsed);
74
+ }
75
+ catch {
76
+ // Local doesn't exist
77
+ }
78
+ return this.config;
79
+ }
80
+ merge(partial) {
81
+ if (partial.allow)
82
+ this.config.allow.push(...partial.allow);
83
+ if (partial.deny)
84
+ this.config.deny.push(...partial.deny);
85
+ if (partial.mcpServers) {
86
+ this.config.mcpServers = { ...this.config.mcpServers, ...partial.mcpServers };
87
+ }
88
+ if (partial.mainBranch)
89
+ this.config.mainBranch = partial.mainBranch;
90
+ if (partial.worktree) {
91
+ this.config.worktree = { ...this.config.worktree, ...partial.worktree };
92
+ }
93
+ }
94
+ }
95
+ exports.SettingsManager = SettingsManager;
96
+ //# sourceMappingURL=SettingsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsManager.js","sourceRoot":"","sources":["../../src/config/SettingsManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,2CAA6B;AAC7B,uCAAyB;AAazB;;;GAGG;AACH,MAAa,eAAe;IAA5B;QACU,eAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QACnE,cAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAEpE,WAAM,GAAqB;YAChC,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE;gBACR,kBAAkB,EAAE,CAAC,cAAc,CAAC;gBACpC,WAAW,EAAE,EAAE;aAChB;YACD,UAAU,EAAE,MAAM;SACnB,CAAC;IAmCJ,CAAC;IAjCC,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,oBAAoB;YACpB,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;QAED,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,OAAkC;QAC9C,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACpE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1E,CAAC;IACH,CAAC;CACF;AAhDD,0CAgDC"}
@@ -0,0 +1,52 @@
1
+ import { PermissionInterceptor } from '../permissions/PermissionInterceptor';
2
+ import { TaskEngine } from '../task/TaskEngine';
3
+ import { SessionManager } from '../session/SessionManager';
4
+ import { MCPClientManager } from '../mcp/MCPClientManager';
5
+ import { HookAndSkillManager } from '../skills/HookAndSkillManager';
6
+ import { SettingsManager } from '../config/SettingsManager';
7
+ export interface CoWorkerOptions {
8
+ model: string;
9
+ role: 'General' | 'PlanAgent' | 'CodeReviewer' | 'BashWorker';
10
+ cwd?: string;
11
+ /** Ollama-compatible endpoint. Defaults to https://ollama-ubuntu.sylixide.com */
12
+ endpoint?: string;
13
+ }
14
+ /**
15
+ * THE SDK LAYER — Real Agentic Tool Loop.
16
+ * Calls the LLM, parses tool_calls, executes them locally via NativeTools,
17
+ * feeds results back, and loops until the LLM produces a final text response.
18
+ */
19
+ export declare class CoWorkerAgent {
20
+ tasks: TaskEngine;
21
+ permissions: PermissionInterceptor;
22
+ sessions: SessionManager;
23
+ mcp: MCPClientManager;
24
+ hooks: HookAndSkillManager;
25
+ settings: SettingsManager;
26
+ private model;
27
+ private endpoint;
28
+ private ollamaModel;
29
+ private cwd;
30
+ private systemPrompt;
31
+ constructor(options: CoWorkerOptions);
32
+ boot(): Promise<void>;
33
+ /**
34
+ * The real agentic loop. Calls the LLM, executes tool_calls locally, loops.
35
+ * Yields streaming text chunks for the CLI/UI to render in real-time.
36
+ */
37
+ chat(prompt: string): AsyncGenerator<string, void, unknown>;
38
+ /**
39
+ * Calls helix-1.2 via Ollama's OpenAI-compatible /v1/chat/completions endpoint.
40
+ */
41
+ private callLLM;
42
+ /**
43
+ * Local tool dispatcher. Maps tool names to NativeTools methods.
44
+ * This is what makes CoWorker actually create files on the user's machine.
45
+ */
46
+ private executeToolLocally;
47
+ /**
48
+ * Subagent: creates a restricted child agent for delegated subtasks.
49
+ */
50
+ createSubagent(profileName: string, subtask: string): Promise<string>;
51
+ }
52
+ //# sourceMappingURL=CoWorkerAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoWorkerAgent.d.ts","sourceRoot":"","sources":["../../src/core/CoWorkerAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkED;;;;GAIG;AACH,qBAAa,aAAa;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,qBAAqB,CAAC;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAEjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,YAAY,CAAkC;gBAE1C,OAAO,EAAE,eAAe;IAcvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC;;;OAGG;IACW,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;IAqGzE;;OAEG;YACW,OAAO;IAoCrB;;;OAGG;YACW,kBAAkB;IAmChC;;OAEG;IACU,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAQnF"}