@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
@@ -1,196 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HttpTransport = exports.StdioTransport = exports.MCPTransport = void 0;
7
- const events_1 = require("events");
8
- const child_process_1 = require("child_process");
9
- const http_1 = __importDefault(require("http"));
10
- const https_1 = __importDefault(require("https"));
11
- class MCPTransport extends events_1.EventEmitter {
12
- }
13
- exports.MCPTransport = MCPTransport;
14
- // ─── Stdio Transport ───
15
- // Communicates with MCP server via stdin/stdout of a child process
16
- class StdioTransport extends MCPTransport {
17
- constructor(command, args = [], env) {
18
- super();
19
- this.command = command;
20
- this.args = args;
21
- this.env = env;
22
- this.process = null;
23
- this.buffer = '';
24
- this._connected = false;
25
- }
26
- get isConnected() {
27
- return this._connected;
28
- }
29
- async connect() {
30
- return new Promise((resolve, reject) => {
31
- try {
32
- this.process = (0, child_process_1.spawn)(this.command, this.args, {
33
- stdio: ['pipe', 'pipe', 'pipe'],
34
- env: { ...process.env, ...this.env },
35
- shell: process.platform === 'win32'
36
- });
37
- this.process.stdout?.on('data', (data) => {
38
- this.buffer += data.toString();
39
- this.processBuffer();
40
- });
41
- this.process.stderr?.on('data', (data) => {
42
- if (process.env.COWORKER_DEBUG) {
43
- console.error(`[MCP stderr] ${data.toString().trim()}`);
44
- }
45
- });
46
- this.process.on('error', (err) => {
47
- this._connected = false;
48
- this.emit('error', err);
49
- reject(err);
50
- });
51
- this.process.on('close', (code) => {
52
- this._connected = false;
53
- this.emit('close', code);
54
- });
55
- this._connected = true;
56
- resolve();
57
- }
58
- catch (err) {
59
- reject(err);
60
- }
61
- });
62
- }
63
- async send(message) {
64
- if (!this.process?.stdin?.writable) {
65
- throw new Error('MCP transport not connected');
66
- }
67
- const json = JSON.stringify(message);
68
- const header = `Content-Length: ${Buffer.byteLength(json)}\r\n\r\n`;
69
- this.process.stdin.write(header + json);
70
- }
71
- close() {
72
- this._connected = false;
73
- if (this.process) {
74
- this.process.kill();
75
- this.process = null;
76
- }
77
- }
78
- processBuffer() {
79
- // Parse Content-Length delimited JSON-RPC messages
80
- while (true) {
81
- const headerEnd = this.buffer.indexOf('\r\n\r\n');
82
- if (headerEnd === -1)
83
- break;
84
- const header = this.buffer.substring(0, headerEnd);
85
- const lengthMatch = header.match(/Content-Length:\s*(\d+)/i);
86
- if (!lengthMatch) {
87
- // Try parsing as raw JSON line
88
- const lineEnd = this.buffer.indexOf('\n');
89
- if (lineEnd === -1)
90
- break;
91
- const line = this.buffer.substring(0, lineEnd).trim();
92
- this.buffer = this.buffer.substring(lineEnd + 1);
93
- if (line) {
94
- try {
95
- const msg = JSON.parse(line);
96
- this.emit('message', msg);
97
- }
98
- catch { /* skip */ }
99
- }
100
- continue;
101
- }
102
- const contentLength = parseInt(lengthMatch[1], 10);
103
- const contentStart = headerEnd + 4;
104
- if (this.buffer.length < contentStart + contentLength)
105
- break;
106
- const content = this.buffer.substring(contentStart, contentStart + contentLength);
107
- this.buffer = this.buffer.substring(contentStart + contentLength);
108
- try {
109
- const message = JSON.parse(content);
110
- this.emit('message', message);
111
- }
112
- catch { /* skip malformed */ }
113
- }
114
- }
115
- }
116
- exports.StdioTransport = StdioTransport;
117
- // ─── HTTP/SSE Transport ───
118
- // Connects to an MCP server via HTTP endpoint
119
- class HttpTransport extends MCPTransport {
120
- constructor(url, headers = {}) {
121
- super();
122
- this.url = url;
123
- this.headers = headers;
124
- this._connected = false;
125
- this.eventSource = null;
126
- }
127
- get isConnected() {
128
- return this._connected;
129
- }
130
- async connect() {
131
- // Test connectivity with a simple request
132
- try {
133
- await this.httpRequest('GET', this.url);
134
- this._connected = true;
135
- }
136
- catch (err) {
137
- throw new Error(`Failed to connect to MCP server at ${this.url}: ${err.message}`);
138
- }
139
- }
140
- async send(message) {
141
- if (!this._connected) {
142
- throw new Error('MCP transport not connected');
143
- }
144
- try {
145
- const responseText = await this.httpRequest('POST', this.url, message);
146
- if (responseText) {
147
- try {
148
- const response = JSON.parse(responseText);
149
- this.emit('message', response);
150
- }
151
- catch { /* skip */ }
152
- }
153
- }
154
- catch (err) {
155
- this.emit('error', err);
156
- throw err;
157
- }
158
- }
159
- close() {
160
- this._connected = false;
161
- if (this.eventSource) {
162
- this.eventSource.close();
163
- this.eventSource = null;
164
- }
165
- }
166
- httpRequest(method, url, body) {
167
- return new Promise((resolve, reject) => {
168
- const parsedUrl = new URL(url);
169
- const lib = parsedUrl.protocol === 'https:' ? https_1.default : http_1.default;
170
- const options = {
171
- hostname: parsedUrl.hostname,
172
- port: parsedUrl.port,
173
- path: parsedUrl.pathname + parsedUrl.search,
174
- method,
175
- headers: {
176
- 'Content-Type': 'application/json',
177
- 'User-Agent': 'CoWorker-MCP/1.0',
178
- ...this.headers
179
- }
180
- };
181
- const req = lib.request(options, (res) => {
182
- let data = '';
183
- res.on('data', (chunk) => { data += chunk; });
184
- res.on('end', () => resolve(data));
185
- });
186
- req.on('error', reject);
187
- req.setTimeout(15000, () => { req.destroy(); reject(new Error('Request timed out')); });
188
- if (body) {
189
- req.write(JSON.stringify(body));
190
- }
191
- req.end();
192
- });
193
- }
194
- }
195
- exports.HttpTransport = HttpTransport;
196
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/mcp/transport.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- /**
2
- * CoWorker Memory System
3
- *
4
- * Mimics Claude Code's CLAUDE.md multi-level memory hierarchy.
5
- *
6
- * Memory is loaded in this priority order (later overrides earlier):
7
- * 1. Global user memory: ~/.coworker/COWORKER.md
8
- * 2. Project memory: <cwd>/COWORKER.md or <cwd>/.coworker/COWORKER.md
9
- * 3. Rules directory: <cwd>/.coworker/rules/*.md (modular rules files)
10
- * 4. Auto-memory index: ~/.coworker/projects/<project>/memory/MEMORY.md
11
- * 5. Auto-memory details: ~/.coworker/projects/<project>/memory/*.md
12
- */
13
- export interface MemoryContext {
14
- global?: string;
15
- project?: string;
16
- rules: string[];
17
- autoMemory?: string;
18
- autoMemoryDetails: string[];
19
- }
20
- export interface AutoMemoryEntry {
21
- key: string;
22
- content: string;
23
- updatedAt: string;
24
- }
25
- declare function getAutoMemoryDir(cwd?: string): string;
26
- /**
27
- * Load all COWORKER.md memory files in the correct priority chain.
28
- */
29
- export declare function loadMemory(cwd?: string): Promise<MemoryContext>;
30
- /**
31
- * Build the system prompt injection string from a loaded MemoryContext.
32
- */
33
- export declare function buildMemorySystemPrompt(ctx: MemoryContext): string;
34
- /**
35
- * Write a new memory entry to the auto-memory store.
36
- * CoWorker AI will call this after conversation to save learnings.
37
- */
38
- export declare function writeAutoMemory(key: string, content: string, cwd?: string): Promise<void>;
39
- export declare function showMemory(cwd?: string): Promise<void>;
40
- export { getAutoMemoryDir };
41
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/memory/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,iBAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9C;AAwCD;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CAkEpF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAoBlE;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAwBf;AAID,wBAAsB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3E;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,249 +0,0 @@
1
- "use strict";
2
- /**
3
- * CoWorker Memory System
4
- *
5
- * Mimics Claude Code's CLAUDE.md multi-level memory hierarchy.
6
- *
7
- * Memory is loaded in this priority order (later overrides earlier):
8
- * 1. Global user memory: ~/.coworker/COWORKER.md
9
- * 2. Project memory: <cwd>/COWORKER.md or <cwd>/.coworker/COWORKER.md
10
- * 3. Rules directory: <cwd>/.coworker/rules/*.md (modular rules files)
11
- * 4. Auto-memory index: ~/.coworker/projects/<project>/memory/MEMORY.md
12
- * 5. Auto-memory details: ~/.coworker/projects/<project>/memory/*.md
13
- */
14
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- var desc = Object.getOwnPropertyDescriptor(m, k);
17
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
- desc = { enumerable: true, get: function() { return m[k]; } };
19
- }
20
- Object.defineProperty(o, k2, desc);
21
- }) : (function(o, m, k, k2) {
22
- if (k2 === undefined) k2 = k;
23
- o[k2] = m[k];
24
- }));
25
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
- Object.defineProperty(o, "default", { enumerable: true, value: v });
27
- }) : function(o, v) {
28
- o["default"] = v;
29
- });
30
- var __importStar = (this && this.__importStar) || (function () {
31
- var ownKeys = function(o) {
32
- ownKeys = Object.getOwnPropertyNames || function (o) {
33
- var ar = [];
34
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
- return ar;
36
- };
37
- return ownKeys(o);
38
- };
39
- return function (mod) {
40
- if (mod && mod.__esModule) return mod;
41
- var result = {};
42
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
- __setModuleDefault(result, mod);
44
- return result;
45
- };
46
- })();
47
- Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.loadMemory = loadMemory;
49
- exports.buildMemorySystemPrompt = buildMemorySystemPrompt;
50
- exports.writeAutoMemory = writeAutoMemory;
51
- exports.showMemory = showMemory;
52
- exports.getAutoMemoryDir = getAutoMemoryDir;
53
- const fs = __importStar(require("fs-extra"));
54
- const path = __importStar(require("path"));
55
- const os = __importStar(require("os"));
56
- const crypto = __importStar(require("crypto"));
57
- const COWORKER_DIR = path.join(os.homedir(), '.coworker');
58
- // ── Project ID Hash ────────────────────────────────────────────────────────
59
- function getProjectId(cwd = process.cwd()) {
60
- return crypto.createHash('md5').update(cwd).digest('hex').substring(0, 12);
61
- }
62
- function getAutoMemoryDir(cwd) {
63
- const projectId = getProjectId(cwd);
64
- return path.join(COWORKER_DIR, 'projects', projectId, 'memory');
65
- }
66
- // ── COWORKER.md Loader ─────────────────────────────────────────────────────
67
- async function readFileIfExists(filePath) {
68
- try {
69
- if (await fs.pathExists(filePath)) {
70
- const content = await fs.readFile(filePath, 'utf8');
71
- return content.trim() || null;
72
- }
73
- }
74
- catch {
75
- // ignore
76
- }
77
- return null;
78
- }
79
- /**
80
- * Process @import directives in COWORKER.md files.
81
- * Syntax: @path/to/file.md or @~/path/relative-to-home
82
- */
83
- async function resolveImports(content, baseDir) {
84
- const importRegex = /^@(.+)$/gm;
85
- let result = content;
86
- let match;
87
- while ((match = importRegex.exec(content)) !== null) {
88
- const importPath = match[1].trim();
89
- const absolutePath = importPath.startsWith('~/')
90
- ? path.join(os.homedir(), importPath.slice(2))
91
- : path.resolve(baseDir, importPath);
92
- const importedContent = await readFileIfExists(absolutePath);
93
- if (importedContent) {
94
- result = result.replace(match[0], `\n<!-- Imported from ${importPath} -->\n${importedContent}\n`);
95
- }
96
- }
97
- return result;
98
- }
99
- /**
100
- * Load all COWORKER.md memory files in the correct priority chain.
101
- */
102
- async function loadMemory(cwd = process.cwd()) {
103
- const ctx = { rules: [], autoMemoryDetails: [] };
104
- // 1. Global user memory: ~/.coworker/COWORKER.md
105
- const globalMemoryPath = path.join(COWORKER_DIR, 'COWORKER.md');
106
- const globalContent = await readFileIfExists(globalMemoryPath);
107
- if (globalContent) {
108
- ctx.global = await resolveImports(globalContent, COWORKER_DIR);
109
- }
110
- // 2. Project memory: look for COWORKER.md walking up the directory tree
111
- let dir = cwd;
112
- const roots = [];
113
- while (dir !== path.dirname(dir)) {
114
- roots.unshift(dir);
115
- dir = path.dirname(dir);
116
- }
117
- let projectContent = null;
118
- for (const d of roots) {
119
- const candidates = [
120
- path.join(d, 'COWORKER.md'),
121
- path.join(d, '.coworker', 'COWORKER.md'),
122
- ];
123
- for (const candidate of candidates) {
124
- const content = await readFileIfExists(candidate);
125
- if (content) {
126
- projectContent = await resolveImports(content, path.dirname(candidate));
127
- break;
128
- }
129
- }
130
- }
131
- if (projectContent)
132
- ctx.project = projectContent;
133
- // 3. Rules directory: <cwd>/.coworker/rules/*.md
134
- const rulesDir = path.join(cwd, '.coworker', 'rules');
135
- if (await fs.pathExists(rulesDir)) {
136
- const ruleFiles = (await fs.readdir(rulesDir))
137
- .filter(f => f.endsWith('.md'))
138
- .sort(); // deterministic order
139
- for (const ruleFile of ruleFiles) {
140
- const ruleContent = await readFileIfExists(path.join(rulesDir, ruleFile));
141
- if (ruleContent)
142
- ctx.rules.push(`## Rule: ${ruleFile}\n${ruleContent}`);
143
- }
144
- }
145
- // 4. Auto-memory index: MEMORY.md
146
- const autoMemDir = getAutoMemoryDir(cwd);
147
- const memoryIndexPath = path.join(autoMemDir, 'MEMORY.md');
148
- const autoMemContent = await readFileIfExists(memoryIndexPath);
149
- if (autoMemContent) {
150
- ctx.autoMemory = autoMemContent;
151
- }
152
- // 5. Auto-memory detail files (everything except MEMORY.md)
153
- if (await fs.pathExists(autoMemDir)) {
154
- const detailFiles = (await fs.readdir(autoMemDir))
155
- .filter(f => f.endsWith('.md') && f !== 'MEMORY.md')
156
- .sort();
157
- for (const file of detailFiles) {
158
- const content = await readFileIfExists(path.join(autoMemDir, file));
159
- if (content)
160
- ctx.autoMemoryDetails.push(`## ${file.replace('.md', '')}\n${content}`);
161
- }
162
- }
163
- return ctx;
164
- }
165
- /**
166
- * Build the system prompt injection string from a loaded MemoryContext.
167
- */
168
- function buildMemorySystemPrompt(ctx) {
169
- const parts = [];
170
- if (ctx.global) {
171
- parts.push(`# Global User Instructions\n${ctx.global}`);
172
- }
173
- if (ctx.project) {
174
- parts.push(`# Project Instructions (COWORKER.md)\n${ctx.project}`);
175
- }
176
- if (ctx.rules.length > 0) {
177
- parts.push(`# Project Rules\n${ctx.rules.join('\n\n')}`);
178
- }
179
- if (ctx.autoMemory) {
180
- parts.push(`# Accumulated Memory (auto-learned)\n${ctx.autoMemory}`);
181
- }
182
- if (ctx.autoMemoryDetails.length > 0) {
183
- parts.push(`# Memory Details\n${ctx.autoMemoryDetails.join('\n\n')}`);
184
- }
185
- return parts.join('\n\n---\n\n');
186
- }
187
- // ── Auto-Memory Writer ─────────────────────────────────────────────────────
188
- /**
189
- * Write a new memory entry to the auto-memory store.
190
- * CoWorker AI will call this after conversation to save learnings.
191
- */
192
- async function writeAutoMemory(key, content, cwd = process.cwd()) {
193
- const autoMemDir = getAutoMemoryDir(cwd);
194
- await fs.ensureDir(autoMemDir);
195
- // Save detail file
196
- const detailFile = `${key.replace(/[^a-z0-9-]/gi, '-').toLowerCase()}.md`;
197
- await fs.writeFile(path.join(autoMemDir, detailFile), content, 'utf8');
198
- // Update the MEMORY.md index with a one-liner about this entry
199
- const indexPath = path.join(autoMemDir, 'MEMORY.md');
200
- const existingIndex = (await readFileIfExists(indexPath)) || '# Auto-Memory Index\n\n';
201
- // Replace or append the entry
202
- const entryPattern = new RegExp(`^- \\[${key}\\].*$`, 'm');
203
- const entry = `- [${key}] ${content.split('\n')[0].substring(0, 80)} (updated: ${new Date().toISOString().split('T')[0]})`;
204
- let newIndex;
205
- if (entryPattern.test(existingIndex)) {
206
- newIndex = existingIndex.replace(entryPattern, entry);
207
- }
208
- else {
209
- newIndex = existingIndex.trim() + '\n' + entry;
210
- }
211
- await fs.writeFile(indexPath, newIndex, 'utf8');
212
- }
213
- // ── /memory slash command helpers ──────────────────────────────────────────
214
- async function showMemory(cwd = process.cwd()) {
215
- const { theme } = await Promise.resolve().then(() => __importStar(require('../utils/output')));
216
- const ctx = await loadMemory(cwd);
217
- console.log();
218
- console.log(theme.brand(' CoWorker Memory'));
219
- console.log();
220
- if (!ctx.global && !ctx.project && ctx.rules.length === 0 && !ctx.autoMemory) {
221
- console.log(theme.dim(' No memory loaded. Create a COWORKER.md file in your project to get started.'));
222
- console.log(theme.dim(' Run /init to scaffold one.'));
223
- console.log();
224
- return;
225
- }
226
- if (ctx.global) {
227
- console.log(theme.success(' ✓') + theme.dim(' ~/.coworker/COWORKER.md (global)'));
228
- }
229
- if (ctx.project) {
230
- console.log(theme.success(' ✓') + theme.dim(` ${cwd}/COWORKER.md (project)`));
231
- }
232
- ctx.rules.forEach(r => {
233
- const name = r.match(/## Rule: (.+)/)?.[1] || 'rule';
234
- console.log(theme.success(' ✓') + theme.dim(` .coworker/rules/${name}`));
235
- });
236
- if (ctx.autoMemory) {
237
- const lineCount = ctx.autoMemory.split('\n').length;
238
- console.log(theme.success(' ✓') + theme.dim(` Auto-memory (${lineCount} entries)`));
239
- }
240
- if (ctx.autoMemoryDetails.length > 0) {
241
- console.log(theme.success(' ✓') + theme.dim(` ${ctx.autoMemoryDetails.length} auto-memory detail files`));
242
- }
243
- console.log();
244
- console.log(theme.dim(' Tip: Edit ~/.coworker/COWORKER.md for global preferences.'));
245
- console.log(theme.dim(' Tip: Edit COWORKER.md in your project for project-specific rules.'));
246
- console.log(theme.dim(' Tip: Add .coworker/rules/*.md for modular rule files.'));
247
- console.log();
248
- }
249
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/memory/loader.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6EH,gCAkEC;AAKD,0DAoBC;AAQD,0CA4BC;AAID,gCAsCC;AAEQ,4CAAgB;AAtPzB,6CAA+B;AAC/B,2CAA6B;AAC7B,uCAAyB;AACzB,+CAAiC;AAEjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAkB1D,8EAA8E;AAE9E,SAAS,YAAY,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC/C,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY;IACpC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,8EAA8E;AAE9E,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,OAAe;IAC5D,MAAM,WAAW,GAAG,WAAW,CAAC;IAChC,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC7D,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,wBAAwB,UAAU,SAAS,eAAe,IAAI,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC1D,MAAM,GAAG,GAAkB,EAAE,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;IAEhE,iDAAiD;IACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAC/D,IAAI,aAAa,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,wEAAwE;IACxE,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC;SACzC,CAAC;QACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,OAAO,EAAE,CAAC;gBACZ,cAAc,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxE,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,cAAc;QAAE,GAAG,CAAC,OAAO,GAAG,cAAc,CAAC;IAEjD,iDAAiD;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC9B,IAAI,EAAE,CAAC,CAAC,sBAAsB;QACjC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1E,IAAI,WAAW;gBAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,KAAK,WAAW,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAC/D,IAAI,cAAc,EAAE,CAAC;QACnB,GAAG,CAAC,UAAU,GAAG,cAAc,CAAC;IAClC,CAAC;IAED,4DAA4D;IAC5D,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC/C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC;aACnD,IAAI,EAAE,CAAC;QACV,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YACpE,IAAI,OAAO;gBAAE,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,GAAkB;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,wCAAwC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AAED,8EAA8E;AAE9E;;;GAGG;AACI,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,OAAe,EACf,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE/B,mBAAmB;IACnB,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC;IAC1E,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEvE,+DAA+D;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,CAAC,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAI,yBAAyB,CAAC;IAEvF,8BAA8B;IAC9B,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE3H,IAAI,QAAgB,CAAC;IACrB,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,8EAA8E;AAEvE,KAAK,UAAU,UAAU,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,wDAAa,iBAAiB,GAAC,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IAElC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC,CAAC;QACxG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,wBAAwB,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,SAAS,WAAW,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,MAAM,2BAA2B,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -1,7 +0,0 @@
1
- export type PermissionMode = 'default' | 'plan' | 'acceptEdits' | 'bypass';
2
- export declare function setPermissionMode(mode: PermissionMode): void;
3
- export declare function getPermissionMode(): PermissionMode;
4
- export declare function setSkipPermissions(skip: boolean): void;
5
- export declare function checkPermission(toolName: string, args: any): Promise<'approve' | 'deny'>;
6
- export declare function resetPermissions(): void;
7
- //# sourceMappingURL=manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;AAsB3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAE5D;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEtD;AAGD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,GACR,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAsC7B;AAyDD,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
@@ -1,125 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.setPermissionMode = setPermissionMode;
7
- exports.getPermissionMode = getPermissionMode;
8
- exports.setSkipPermissions = setSkipPermissions;
9
- exports.checkPermission = checkPermission;
10
- exports.resetPermissions = resetPermissions;
11
- const readline_1 = __importDefault(require("readline"));
12
- const output_1 = require("../utils/output");
13
- // Tool risk classification
14
- const SAFE_TOOLS = new Set([
15
- 'Read', 'LS', 'Glob', 'Grep', 'ChromeGetUrl', 'ChromeGetDom',
16
- 'ChromeConsole', 'ChromeScreenshot', 'TaskGet', 'TaskList',
17
- 'WebSearch', 'WebFetch', 'EnterPlanMode', 'ExitPlanMode',
18
- 'AskUserQuestion'
19
- ]);
20
- const DANGEROUS_TOOLS = new Set([
21
- 'Bash', 'Edit', 'Write', 'ChromeNavigate', 'ChromeClick',
22
- 'ChromeFill', 'ChromeEval', 'ChromeClose'
23
- ]);
24
- // Track session-level "always allow" decisions
25
- const sessionAllowedTools = new Set();
26
- const sessionAllowedCommands = new Set();
27
- let currentMode = 'default';
28
- let skipAllPermissions = false;
29
- function setPermissionMode(mode) {
30
- currentMode = mode;
31
- }
32
- function getPermissionMode() {
33
- return currentMode;
34
- }
35
- function setSkipPermissions(skip) {
36
- skipAllPermissions = skip;
37
- }
38
- // Check if a tool requires approval
39
- async function checkPermission(toolName, args) {
40
- // Bypass mode — everything approved
41
- if (skipAllPermissions || currentMode === 'bypass') {
42
- return 'approve';
43
- }
44
- // Plan mode — only safe (read-only) tools allowed
45
- if (currentMode === 'plan') {
46
- if (SAFE_TOOLS.has(toolName))
47
- return 'approve';
48
- console.log(output_1.theme.warning(` ⚠ ${toolName} blocked — currently in plan mode (read-only)`));
49
- return 'deny';
50
- }
51
- // acceptEdits mode — Edits/Writes auto-approved, Bash still needs approval
52
- if (currentMode === 'acceptEdits') {
53
- if (toolName === 'Edit' || toolName === 'Write')
54
- return 'approve';
55
- }
56
- // Safe tools always auto-approved
57
- if (SAFE_TOOLS.has(toolName)) {
58
- return 'approve';
59
- }
60
- // Session-level allow
61
- if (sessionAllowedTools.has(toolName)) {
62
- return 'approve';
63
- }
64
- // For Bash, check if the specific command was allowed
65
- if (toolName === 'Bash' && args?.command) {
66
- if (sessionAllowedCommands.has(args.command)) {
67
- return 'approve';
68
- }
69
- }
70
- // ─── Interactive Prompt ───
71
- return await promptForPermission(toolName, args);
72
- }
73
- async function promptForPermission(toolName, args) {
74
- const argsPreview = toolName === 'Bash'
75
- ? args.command || JSON.stringify(args)
76
- : JSON.stringify(args).substring(0, 120);
77
- console.log();
78
- console.log(output_1.theme.warning(` ╭─ Permission Required ──────────────────────╮`));
79
- console.log(output_1.theme.warning(` │ `) + output_1.theme.brand(toolName) + output_1.theme.dim(`: ${argsPreview}`));
80
- console.log(output_1.theme.warning(` ╰─────────────────────────────────────────────╯`));
81
- console.log();
82
- console.log(` ${output_1.theme.success('y')} — Yes, allow this once`);
83
- console.log(` ${output_1.theme.success('a')} — Always allow ${toolName} this session`);
84
- if (toolName === 'Bash' && args?.command) {
85
- console.log(` ${output_1.theme.success('c')} — Always allow this exact command`);
86
- }
87
- console.log(` ${output_1.theme.error('n')} — Deny`);
88
- console.log();
89
- const answer = await askUser('Allow? (y/a/c/n): ');
90
- const choice = answer.toLowerCase().trim();
91
- if (choice === 'y' || choice === 'yes') {
92
- return 'approve';
93
- }
94
- if (choice === 'a') {
95
- sessionAllowedTools.add(toolName);
96
- console.log(output_1.theme.dim(` ✓ ${toolName} will be auto-approved for this session`));
97
- return 'approve';
98
- }
99
- if (choice === 'c' && toolName === 'Bash' && args?.command) {
100
- sessionAllowedCommands.add(args.command);
101
- console.log(output_1.theme.dim(` ✓ Command will be auto-approved for this session`));
102
- return 'approve';
103
- }
104
- return 'deny';
105
- }
106
- function askUser(prompt) {
107
- return new Promise((resolve) => {
108
- const rl = readline_1.default.createInterface({
109
- input: process.stdin,
110
- output: process.stdout
111
- });
112
- rl.question(output_1.theme.dim(prompt), (answer) => {
113
- rl.close();
114
- resolve(answer);
115
- });
116
- });
117
- }
118
- // Reset permissions (for new sessions)
119
- function resetPermissions() {
120
- sessionAllowedTools.clear();
121
- sessionAllowedCommands.clear();
122
- currentMode = 'default';
123
- skipAllPermissions = false;
124
- }
125
- //# sourceMappingURL=manager.js.map