@bbyqtbean/taco-helper 0.1.2 → 0.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.
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Auto-Injection — automatic MCP config + rules file injection.
3
+ *
4
+ * After the first project is set up, the daemon watches for new workspaces
5
+ * and silently injects taco MCP config + rules files into each one.
6
+ *
7
+ * Reads agent choice from ~/.taco/config.json.
8
+ *
9
+ * See: daemon-mcp-strategy.md §Auto-Injection
10
+ */
11
+ /**
12
+ * Start watching for new workspaces.
13
+ * Currently scans common project directories on startup.
14
+ * Future: watch agent workspace history files for new entries.
15
+ */
16
+ export declare function startAutoInjection(): void;
17
+ //# sourceMappingURL=auto-inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-inject.d.ts","sourceRoot":"","sources":["../src/auto-inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgDH;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CA4BzC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Auto-Injection — automatic MCP config + rules file injection.
3
+ *
4
+ * After the first project is set up, the daemon watches for new workspaces
5
+ * and silently injects taco MCP config + rules files into each one.
6
+ *
7
+ * Reads agent choice from ~/.taco/config.json.
8
+ *
9
+ * See: daemon-mcp-strategy.md §Auto-Injection
10
+ */
11
+ import { existsSync, readFileSync, watch } from 'fs';
12
+ import { join } from 'path';
13
+ import { TACO_DIR } from './sqlite-store.js';
14
+ import { getAgent } from './agents/index.js';
15
+ import { writeConfig, checkConfig } from './agents/config-writer.js';
16
+ /** Read the agent choice from ~/.taco/config.json */
17
+ function getConfiguredAgent() {
18
+ try {
19
+ const configPath = join(TACO_DIR, 'config.json');
20
+ if (!existsSync(configPath))
21
+ return null;
22
+ const config = JSON.parse(readFileSync(configPath, 'utf-8'));
23
+ return config.agent ?? null;
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ /**
30
+ * Try to inject MCP config + rules into a workspace directory.
31
+ * Returns true if config was written, false if already configured or failed.
32
+ */
33
+ async function injectIntoWorkspace(workspacePath, agentId) {
34
+ const agent = getAgent(agentId);
35
+ if (!agent)
36
+ return false;
37
+ // Check if already configured for this workspace
38
+ const alreadyConfigured = await checkConfig(agent);
39
+ if (alreadyConfigured)
40
+ return false;
41
+ try {
42
+ // writeConfig writes to the project-level MCP config relative to CWD
43
+ // We need to be in the workspace dir for this to work
44
+ const origCwd = process.cwd();
45
+ process.chdir(workspacePath);
46
+ await writeConfig(agent);
47
+ process.chdir(origCwd);
48
+ console.error(`🌮 [Auto-Inject] Injected config into ${workspacePath}`);
49
+ return true;
50
+ }
51
+ catch (err) {
52
+ console.error(`🌮 [Auto-Inject] Failed to inject into ${workspacePath}: ${err.message}`);
53
+ return false;
54
+ }
55
+ }
56
+ /**
57
+ * Start watching for new workspaces.
58
+ * Currently scans common project directories on startup.
59
+ * Future: watch agent workspace history files for new entries.
60
+ */
61
+ export function startAutoInjection() {
62
+ const agentId = getConfiguredAgent();
63
+ if (!agentId) {
64
+ console.error('🌮 [Auto-Inject] No agent configured in ~/.taco/config.json — skipping');
65
+ return;
66
+ }
67
+ console.error(`🌮 [Auto-Inject] Active for agent: ${agentId}`);
68
+ // Watch the config file for agent changes
69
+ const configPath = join(TACO_DIR, 'config.json');
70
+ if (existsSync(configPath)) {
71
+ try {
72
+ watch(configPath, () => {
73
+ const newAgent = getConfiguredAgent();
74
+ if (newAgent && newAgent !== agentId) {
75
+ console.error(`🌮 [Auto-Inject] Agent changed to: ${newAgent}`);
76
+ }
77
+ });
78
+ }
79
+ catch {
80
+ // watch not supported on some systems — non-critical
81
+ }
82
+ }
83
+ // Note: full workspace discovery (scanning agent workspace history files)
84
+ // is planned but not yet implemented. For now, auto-injection is triggered
85
+ // by the daemon when a shim connects from an unregistered workspace.
86
+ console.error('🌮 [Auto-Inject] Listening for new workspace connections');
87
+ }
88
+ //# sourceMappingURL=auto-inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-inject.js","sourceRoot":"","sources":["../src/auto-inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAyB,MAAM,IAAI,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAErE,qDAAqD;AACrD,SAAS,kBAAkB;IACvB,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAAC,aAAqB,EAAE,OAAe;IACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,iDAAiD;IACjD,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,iBAAiB;QAAE,OAAO,KAAK,CAAC;IAEpC,IAAI,CAAC;QACD,qEAAqE;QACrE,sDAAsD;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7B,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvB,OAAO,CAAC,KAAK,CAAC,yCAAyC,aAAa,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,0CAA0C,aAAa,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAC9B,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QACxF,OAAO;IACX,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;IAE/D,0CAA0C;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACD,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE;gBACnB,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;gBACtC,IAAI,QAAQ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACnC,OAAO,CAAC,KAAK,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;gBACpE,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,MAAM,CAAC;YACL,qDAAqD;QACzD,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,qEAAqE;IACrE,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC9E,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
- * CLI commands — setup and uninstall.
2
+ * CLI commands — setup, uninstall, and status.
3
3
  * These are run by the user directly via npx.
4
+ *
5
+ * See: taco-helper-package-spec.md §CLI, daemon-mcp-strategy.md §First Boot
4
6
  */
5
7
  export declare function runSetup(args: string[]): Promise<void>;
6
8
  export declare function runUninstall(args: string[]): Promise<void>;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B5D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B7D"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE5D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChE;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B7D"}
package/dist/cli.js CHANGED
@@ -1,9 +1,16 @@
1
1
  /**
2
- * CLI commands — setup and uninstall.
2
+ * CLI commands — setup, uninstall, and status.
3
3
  * These are run by the user directly via npx.
4
+ *
5
+ * See: taco-helper-package-spec.md §CLI, daemon-mcp-strategy.md §First Boot
4
6
  */
5
7
  import { getAgent, listAgentIds } from './agents/index.js';
6
8
  import { writeConfig, removeConfig, cleanRulesFile, checkConfig } from './agents/config-writer.js';
9
+ import { registerLaunchd } from './launchd.js';
10
+ import { TACO_DIR } from './sqlite-store.js';
11
+ import { spawn } from 'child_process';
12
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
13
+ import { join } from 'path';
7
14
  export async function runSetup(args) {
8
15
  const agentId = getArgValue(args, '--agent');
9
16
  if (!agentId) {
@@ -18,16 +25,52 @@ export async function runSetup(args) {
18
25
  process.exit(1);
19
26
  }
20
27
  console.log(`\n🌮 Setting up Taco for ${agent.name}...\n`);
28
+ // Step 1: Write MCP config + rules file into the project (project level)
21
29
  try {
22
30
  await writeConfig(agent);
23
31
  console.log(`✅ Taco has been added to ${agent.name}'s MCP config.`);
24
32
  console.log(` Config file: ${agent.configPath}`);
25
- console.log(`\n👉 Restart ${agent.name} to activate the connection.\n`);
26
33
  }
27
34
  catch (err) {
28
35
  console.error(`❌ Failed to write config:`, err);
29
36
  process.exit(1);
30
37
  }
38
+ // Step 2: Write Taco Platform Config (~/.taco/config.json) with agent choice
39
+ try {
40
+ if (!existsSync(TACO_DIR)) {
41
+ mkdirSync(TACO_DIR, { recursive: true });
42
+ }
43
+ const configPath = join(TACO_DIR, 'config.json');
44
+ writeFileSync(configPath, JSON.stringify({ agent: agentId }, null, 2), 'utf-8');
45
+ console.log(`✅ Taco platform config written.`);
46
+ console.log(` Config file: ${configPath}`);
47
+ }
48
+ catch (err) {
49
+ console.error(`⚠️ Failed to write platform config:`, err);
50
+ }
51
+ // Step 3: Start the daemon as a detached process
52
+ try {
53
+ const child = spawn('node', [join(import.meta.dirname, 'index.js'), 'daemon'], {
54
+ detached: true,
55
+ stdio: 'ignore',
56
+ cwd: TACO_DIR,
57
+ });
58
+ child.unref();
59
+ console.log(`✅ Taco daemon started.`);
60
+ }
61
+ catch (err) {
62
+ console.error(`⚠️ Failed to start daemon:`, err);
63
+ console.error(` You can start it manually: npx -y @bbyqtbean/taco-helper@latest daemon`);
64
+ }
65
+ // Step 4: Register with launchd for persistence
66
+ try {
67
+ registerLaunchd();
68
+ console.log(`✅ Daemon registered with launchd (auto-starts on login).`);
69
+ }
70
+ catch (err) {
71
+ console.error(`⚠️ Failed to register with launchd:`, err);
72
+ }
73
+ console.log(`\n👉 Restart ${agent.name} to activate the connection.\n`);
31
74
  }
32
75
  export async function runUninstall(args) {
33
76
  const agentId = getArgValue(args, '--agent');
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Daemon — persistent background process.
3
+ *
4
+ * The global singleton that owns port 7867, stores comments in SQLite,
5
+ * manages the project registry, and serves the HTTP API for the Chrome extension.
6
+ *
7
+ * See: daemon-mcp-strategy.md §1 (Global Daemon)
8
+ */
9
+ /**
10
+ * Start the daemon.
11
+ * This is the main entry point for `npx taco-helper daemon`.
12
+ */
13
+ export declare function startDaemon(): Promise<void>;
14
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA4DH;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA6KjD"}
package/dist/daemon.js ADDED
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Daemon — persistent background process.
3
+ *
4
+ * The global singleton that owns port 7867, stores comments in SQLite,
5
+ * manages the project registry, and serves the HTTP API for the Chrome extension.
6
+ *
7
+ * See: daemon-mcp-strategy.md §1 (Global Daemon)
8
+ */
9
+ import { createServer } from 'http';
10
+ import { readFile } from 'fs/promises';
11
+ import { join } from 'path';
12
+ import { SqliteStore, TACO_DIR } from './sqlite-store.js';
13
+ import { startIpcServer } from './ipc-server.js';
14
+ import { startAutoInjection } from './auto-inject.js';
15
+ import { getAgent } from './agents/index.js';
16
+ import { removeConfig, cleanRulesFile } from './agents/config-writer.js';
17
+ const PORT = 7867;
18
+ /** Active SSE connections */
19
+ const sseClients = new Set();
20
+ /** Read the full request body as a string. */
21
+ function readBody(req) {
22
+ return new Promise((resolve, reject) => {
23
+ const chunks = [];
24
+ req.on('data', (chunk) => chunks.push(chunk));
25
+ req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
26
+ req.on('error', reject);
27
+ });
28
+ }
29
+ /** Send a JSON response with CORS headers. */
30
+ function json(res, status, data) {
31
+ res.writeHead(status, {
32
+ 'Content-Type': 'application/json',
33
+ 'Access-Control-Allow-Origin': '*',
34
+ 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
35
+ 'Access-Control-Allow-Headers': 'Content-Type',
36
+ });
37
+ res.end(JSON.stringify(data));
38
+ }
39
+ /** Handle CORS preflight. Returns true if this was a preflight request. */
40
+ function handleCors(req, res) {
41
+ if (req.method === 'OPTIONS') {
42
+ res.writeHead(204, {
43
+ 'Access-Control-Allow-Origin': '*',
44
+ 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
45
+ 'Access-Control-Allow-Headers': 'Content-Type',
46
+ });
47
+ res.end();
48
+ return true;
49
+ }
50
+ return false;
51
+ }
52
+ /** Broadcast an SSE event to all connected clients. */
53
+ function broadcastSSE(event, data) {
54
+ const message = `event: ${event}\ndata: ${JSON.stringify(data)}\n\n`;
55
+ for (const client of sseClients) {
56
+ client.write(message);
57
+ }
58
+ }
59
+ /**
60
+ * Start the daemon.
61
+ * This is the main entry point for `npx taco-helper daemon`.
62
+ */
63
+ export async function startDaemon() {
64
+ console.error('🌮 Starting Taco daemon...');
65
+ // Open SQLite store
66
+ const store = new SqliteStore();
67
+ console.error(`🌮 Database: ${join(TACO_DIR, 'comments.db')}`);
68
+ // Wire store events → SSE broadcasts
69
+ store.on('comment-received', (payload) => {
70
+ console.error(`🌮 [SSE] Broadcasting comment-received: ${payload.id}`);
71
+ broadcastSSE('comment-received', payload);
72
+ });
73
+ store.on('comment-actioned', (payload) => {
74
+ console.error(`🌮 [SSE] Broadcasting comment-actioned: ${payload.id}`);
75
+ broadcastSSE('comment-actioned', payload);
76
+ });
77
+ store.on('comment-resolved', (payload) => {
78
+ console.error(`🌮 [SSE] Broadcasting comment-resolved: ${payload.id}`);
79
+ broadcastSSE('comment-resolved', payload);
80
+ });
81
+ // Create HTTP server
82
+ const server = createServer(async (req, res) => {
83
+ // Handle CORS preflight
84
+ if (handleCors(req, res))
85
+ return;
86
+ const url = req.url ?? '/';
87
+ const method = req.method ?? 'GET';
88
+ try {
89
+ // ── GET /health ──────────────────────────────────────────
90
+ if (url === '/health' && method === 'GET') {
91
+ let projectName = null;
92
+ try {
93
+ const pkgPath = join(process.cwd(), 'package.json');
94
+ const pkgContent = await readFile(pkgPath, 'utf-8');
95
+ const pkg = JSON.parse(pkgContent);
96
+ projectName = pkg.name || null;
97
+ }
98
+ catch {
99
+ // package.json not found — that's okay
100
+ }
101
+ json(res, 200, { status: 'ok', projectName });
102
+ return;
103
+ }
104
+ // ── GET /events (SSE) ────────────────────────────────────
105
+ if (url === '/events' && method === 'GET') {
106
+ res.writeHead(200, {
107
+ 'Content-Type': 'text/event-stream',
108
+ 'Cache-Control': 'no-cache',
109
+ 'Connection': 'keep-alive',
110
+ 'Access-Control-Allow-Origin': '*',
111
+ });
112
+ // Send initial connected event
113
+ res.write(`event: connected\ndata: {}\n\n`);
114
+ // Add to active clients
115
+ sseClients.add(res);
116
+ console.error(`🌮 [SSE] Client connected (${sseClients.size} active)`);
117
+ // Remove on disconnect
118
+ req.on('close', () => {
119
+ sseClients.delete(res);
120
+ console.error(`🌮 [SSE] Client disconnected (${sseClients.size} active)`);
121
+ });
122
+ // Keep connection alive with periodic heartbeat
123
+ const heartbeat = setInterval(() => {
124
+ res.write(`: heartbeat\n\n`);
125
+ }, 30_000);
126
+ req.on('close', () => clearInterval(heartbeat));
127
+ return;
128
+ }
129
+ // ── POST /comment ────────────────────────────────────────
130
+ if (url === '/comment' && method === 'POST') {
131
+ const body = await readBody(req);
132
+ const comments = JSON.parse(body);
133
+ // Accept both single comment and array
134
+ const arr = Array.isArray(comments) ? comments : [comments];
135
+ const count = store.addComments(arr);
136
+ console.error(`🌮 Received ${count} comment(s)`);
137
+ json(res, 200, { received: count });
138
+ return;
139
+ }
140
+ // ── POST /uninstall ──────────────────────────────────────
141
+ if (url === '/uninstall' && method === 'POST') {
142
+ const body = await readBody(req);
143
+ const { agent_id } = JSON.parse(body);
144
+ const agent = getAgent(agent_id);
145
+ if (!agent) {
146
+ json(res, 400, { error: `Unknown agent: "${agent_id}"` });
147
+ return;
148
+ }
149
+ console.error(`🌮 Uninstalling Taco from ${agent.name}...`);
150
+ const removed = [];
151
+ try {
152
+ const configRemoved = await removeConfig(agent);
153
+ if (configRemoved)
154
+ removed.push('mcp_config');
155
+ }
156
+ catch (err) {
157
+ console.error(`⚠️ Failed to remove MCP config:`, err);
158
+ }
159
+ try {
160
+ const rulesRemoved = await cleanRulesFile(agent, process.cwd());
161
+ if (rulesRemoved)
162
+ removed.push('rules_file');
163
+ }
164
+ catch (err) {
165
+ console.error(`⚠️ Failed to clean rules file:`, err);
166
+ }
167
+ json(res, 200, { success: true, removed });
168
+ console.error('🌮 Uninstall completed.');
169
+ // Shut down after flushing the response
170
+ setTimeout(() => {
171
+ console.error('🌮 Daemon shutting down after uninstall.');
172
+ store.close();
173
+ process.exit(0);
174
+ }, 500);
175
+ return;
176
+ }
177
+ // ── 404 ──────────────────────────────────────────────────
178
+ json(res, 404, { error: 'Not found' });
179
+ }
180
+ catch (err) {
181
+ console.error('🌮 HTTP error:', err);
182
+ json(res, 500, { error: 'Internal server error' });
183
+ }
184
+ });
185
+ server.listen(PORT, '127.0.0.1', () => {
186
+ console.error(`🌮 Daemon HTTP server listening on http://127.0.0.1:${PORT}`);
187
+ });
188
+ server.on('error', (err) => {
189
+ if (err.code === 'EADDRINUSE') {
190
+ console.error(`❌ Port ${PORT} already in use. Another daemon may be running.`);
191
+ process.exit(1);
192
+ }
193
+ throw err;
194
+ });
195
+ // Start Unix socket IPC server for MCP shims
196
+ const ipcServer = startIpcServer(store, broadcastSSE);
197
+ // Start auto-injection watcher
198
+ startAutoInjection();
199
+ // Graceful shutdown
200
+ const shutdown = () => {
201
+ console.error('🌮 Daemon shutting down...');
202
+ store.close();
203
+ server.close();
204
+ ipcServer.close();
205
+ process.exit(0);
206
+ };
207
+ process.on('SIGINT', shutdown);
208
+ process.on('SIGTERM', shutdown);
209
+ console.error('🌮 Taco daemon is running. Press Ctrl+C to stop.');
210
+ }
211
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,15 +2,24 @@
2
2
  /**
3
3
  * taco-helper — entry point.
4
4
  *
5
- * This file detects how the package was invoked:
5
+ * Routes to the correct mode based on the subcommand:
6
6
  *
7
7
  * CLI mode (user runs manually):
8
- * npx taco-helper setup --agent cursor
9
- * npx taco-helper uninstall --agent cursor
8
+ * npx taco-helper setup --agent antigravity
9
+ * npx taco-helper uninstall --agent antigravity
10
+ * npx taco-helper status --agent antigravity
10
11
  *
11
- * Server mode (agent launches automatically):
12
- * npx taco-helper
13
- * → starts MCP server on stdio + HTTP server on :7867
12
+ * Daemon mode (persistent background process):
13
+ * npx taco-helper daemon
14
+ * → starts HTTP server on :7867, SQLite, Unix socket
15
+ *
16
+ * MCP shim mode (spawned per workspace by the agent):
17
+ * npx taco-helper mcp
18
+ * → starts MCP stdio transport, proxies to daemon
19
+ *
20
+ * Default (no subcommand) → daemon mode (for launchd plist)
21
+ *
22
+ * See: taco-helper-package-spec.md §Entry Point Logic
14
23
  */
15
24
  export {};
16
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG"}
package/dist/index.js CHANGED
@@ -2,20 +2,28 @@
2
2
  /**
3
3
  * taco-helper — entry point.
4
4
  *
5
- * This file detects how the package was invoked:
5
+ * Routes to the correct mode based on the subcommand:
6
6
  *
7
7
  * CLI mode (user runs manually):
8
- * npx taco-helper setup --agent cursor
9
- * npx taco-helper uninstall --agent cursor
8
+ * npx taco-helper setup --agent antigravity
9
+ * npx taco-helper uninstall --agent antigravity
10
+ * npx taco-helper status --agent antigravity
10
11
  *
11
- * Server mode (agent launches automatically):
12
- * npx taco-helper
13
- * → starts MCP server on stdio + HTTP server on :7867
12
+ * Daemon mode (persistent background process):
13
+ * npx taco-helper daemon
14
+ * → starts HTTP server on :7867, SQLite, Unix socket
15
+ *
16
+ * MCP shim mode (spawned per workspace by the agent):
17
+ * npx taco-helper mcp
18
+ * → starts MCP stdio transport, proxies to daemon
19
+ *
20
+ * Default (no subcommand) → daemon mode (for launchd plist)
21
+ *
22
+ * See: taco-helper-package-spec.md §Entry Point Logic
14
23
  */
15
24
  import { runSetup, runUninstall, runStatus } from './cli.js';
16
- import { CommentStore } from './comment-store.js';
17
- import { startHttpServer } from './http-server.js';
18
- import { startMcpServer } from './mcp-server.js';
25
+ import { startDaemon } from './daemon.js';
26
+ import { startMcpShim } from './mcp-shim.js';
19
27
  const command = process.argv[2];
20
28
  if (command === 'setup') {
21
29
  // CLI mode: write MCP config and exit
@@ -29,13 +37,16 @@ else if (command === 'status') {
29
37
  // CLI mode: check if taco is installed (read-only)
30
38
  await runStatus(process.argv.slice(2));
31
39
  }
40
+ else if (command === 'daemon') {
41
+ // Daemon mode: persistent background process
42
+ await startDaemon();
43
+ }
44
+ else if (command === 'mcp') {
45
+ // MCP shim mode: proxy tool calls to daemon
46
+ await startMcpShim();
47
+ }
32
48
  else {
33
- // Server mode: start both servers
34
- const store = new CommentStore();
35
- // Start the HTTP server (for the Chrome extension)
36
- startHttpServer(store);
37
- // Start the MCP server on stdio (for the agent)
38
- await startMcpServer(store);
39
- console.error('🌮 Taco Helper is running. Press Ctrl+C to stop.');
49
+ // Default: daemon mode (for launchd plist)
50
+ await startDaemon();
40
51
  }
41
52
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IACtB,sCAAsC;IACtC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;KAAM,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;IACjC,uCAAuC;IACvC,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;KAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IAC9B,mDAAmD;IACnD,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;KAAM,CAAC;IACJ,kCAAkC;IAClC,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IAEjC,mDAAmD;IACnD,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvB,gDAAgD;IAChD,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAE5B,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IACtB,sCAAsC;IACtC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;KAAM,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;IACjC,uCAAuC;IACvC,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;KAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IAC9B,mDAAmD;IACnD,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;KAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IAC9B,6CAA6C;IAC7C,MAAM,WAAW,EAAE,CAAC;AACxB,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC3B,4CAA4C;IAC5C,MAAM,YAAY,EAAE,CAAC;AACzB,CAAC;KAAM,CAAC;IACJ,2CAA2C;IAC3C,MAAM,WAAW,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * IPC server — Unix socket interface for MCP shims.
3
+ *
4
+ * The daemon listens on ~/.taco/daemon.sock.
5
+ * Each shim connects, registers its CWD, and proxies tool calls.
6
+ *
7
+ * Protocol: newline-delimited JSON.
8
+ *
9
+ * See: daemon-mcp-strategy.md §IPC Protocol
10
+ */
11
+ import { Server } from 'net';
12
+ import { SqliteStore } from './sqlite-store.js';
13
+ /**
14
+ * Start the IPC server on the Unix socket.
15
+ * Returns the server instance for cleanup.
16
+ */
17
+ export declare function startIpcServer(store: SqliteStore, onBroadcast: (event: string, data: Record<string, unknown>) => void): Server;
18
+ /**
19
+ * Send a message to a specific shim by shimId.
20
+ * Used for daemon-initiated messages (e.g. sampling trigger).
21
+ */
22
+ export declare function sendToShim(shimId: string, message: Record<string, unknown>): boolean;
23
+ /**
24
+ * Send a message to all connected shims.
25
+ */
26
+ export declare function broadcastToShims(message: Record<string, unknown>): void;
27
+ /**
28
+ * Get a list of all connected shim IDs.
29
+ */
30
+ export declare function getConnectedShims(): string[];
31
+ //# sourceMappingURL=ipc-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc-server.d.ts","sourceRoot":"","sources":["../src/ipc-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAgB,MAAM,EAAU,MAAM,KAAK,CAAC;AAInD,OAAO,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AAuJ1D;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GACpE,MAAM,CAmDR;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAKpF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAKvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C"}