archer-wizard 0.1.0 → 0.1.1

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.
package/README.md CHANGED
@@ -1,140 +1,250 @@
1
- # 🏹 Archer
2
-
3
- **Event intelligence for AI agents.** One command connects your backend to Cursor, Claude Code, Windsurf, and any MCP-compatible agent.
1
+ <div align="center">
4
2
 
5
3
  ```
6
- npx archer
4
+ █████╗ ██████╗ ██████╗██╗ ██╗███████╗██████╗
5
+ ██╔══██╗██╔══██╗██╔════╝██║ ██║██╔════╝██╔══██╗
6
+ ███████║██████╔╝██║ ███████║█████╗ ██████╔╝
7
+ ██╔══██║██╔══██╗██║ ██╔══██║██╔══╝ ██╔══██╗
8
+ ██║ ██║██║ ██║╚██████╗██║ ██║███████╗██║ ██║
9
+ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
7
10
  ```
8
11
 
9
- ## What it does
12
+ **event intelligence layer for AI agents**
10
13
 
11
- Archer gives your AI agent a `watch` tool. The agent can monitor real-time events from your backend — database changes, auth events, webhooks — and react when conditions match.
14
+ </div>
12
15
 
13
- ```
14
- "Watch my users table for new signups from @company.com"
15
- ```
16
+ ---
17
+
18
+ ## what is Archer
19
+
20
+ Zapier was built for apps talking to apps.
21
+ **Archer was built for the world talking to AI agents.**
16
22
 
17
- Archer subscribes to the event, filters by condition, and POSTs to your webhook URL.
23
+ Every AI agent today is reactive. Cursor, Claude Code, opencode — they sit completely idle until you manually talk to them. Nobody built the layer that lets them feel what's happening in real time and act on their own.
18
24
 
19
- ## Supported Sources
25
+ Archer is that layer.
20
26
 
21
- | Source | Events | Status |
22
- |--------|--------|--------|
23
- | **Supabase** | `auth.signup`, `table.insert`, `table.update`, `table.delete` | ✅ Available |
24
- | **Firebase** | Auth, Firestore, Realtime DB | 🔜 Coming soon |
25
- | **Stripe** | Payments, subscriptions, invoices | 🔜 Coming soon |
26
- | **GitHub** | Push, PR, issues, deployments | 🔜 Coming soon |
27
- | **Custom Webhooks** | Any incoming webhook | 🔜 Coming soon |
27
+ You define a condition once in plain english. Archer watches your data sources 24/7. The moment that condition is true — your AI agent wakes up, already loaded with full context, and acts immediately. No prompting. No polling. No manual triggers.
28
28
 
29
- > Want a source added? [Open an issue →](https://github.com/archer-mcp/archer/issues)
29
+ ---
30
30
 
31
- ## Setup
31
+ ## install
32
32
 
33
33
  ```bash
34
- npx archer
34
+ npx archer@latest
35
35
  ```
36
36
 
37
- The interactive wizard will:
37
+ Run this inside any project folder. Archer handles everything else automatically.
38
38
 
39
- 1. **Scan** your project for credentials (`.env`, `.env.local`, etc.)
40
- 2. **Detect** installed AI agents (Cursor, Claude Code, Windsurf, etc.)
41
- 3. **Inject** the Archer MCP server into each agent's config
42
- 4. **Write** agent rules so the LLM knows how to use the tool
39
+ ---
43
40
 
44
- ## Supported Agents
41
+ ## how it works
45
42
 
46
- | Agent | Config Path | Status |
47
- |-------|------------|--------|
48
- | Cursor | `~/.cursor/mcp.json` | ✅ |
49
- | Claude Code | Platform-specific | ✅ |
50
- | Windsurf | `~/.codeium/windsurf/mcp_config.json` | ✅ |
51
- | OpenCode | `~/.config/opencode/config.json` | ✅ |
43
+ ```
44
+ your data source ──→ Archer watches 24/7 ──→ condition met ──→ agent fires
45
+ ```
52
46
 
53
- ## The `archer_watch` Tool
47
+ 1. **scans** your project for data source credentials automatically
48
+ 2. **detects** which AI agents you have installed on your machine
49
+ 3. **injects** itself into all their configs — one confirmation, no manual JSON
50
+ 4. **teaches** every agent when to call `archer.watch()` automatically via global rules
51
+ 5. your agent now has a nervous system — it feels the world and acts on its own
54
52
 
55
- ### Parameters
53
+ ---
56
54
 
57
- | Parameter | Type | Required | Description |
58
- |-----------|------|----------|-------------|
59
- | `source` | `string` | Yes | Event source (`"supabase"`, more coming) |
60
- | `event` | `string` | Yes | Event type (source-specific) |
61
- | `table` | `string` | Depends | Resource name (e.g. table for Supabase) |
62
- | `condition` | `string` | No | Filter like `"email ends with @gmail.com"` |
63
- | `webhookUrl` | `string` | Yes | URL to receive POST notifications |
55
+ ## quickstart
64
56
 
65
- ### Condition Operators
57
+ ```bash
58
+ # 1. run inside your project
59
+ npx archer-wizard@latest
66
60
 
67
- - `ends with` `"email ends with @company.com"`
68
- - `starts with` — `"name starts with John"`
69
- - `contains` — `"status contains active"`
70
- - `equals` — `"role equals admin"`
61
+ # 2. Archer scans your .env, finds your credentials, injects into your agents
71
62
 
72
- ### Example: Supabase
63
+ # 3. open your AI agent and say:
64
+ "watch my users table for new signups and fire https://your-webhook-url"
73
65
 
74
- ```json
75
- {
76
- "source": "supabase",
77
- "event": "auth.signup",
78
- "webhookUrl": "https://hooks.example.com/signups"
79
- }
66
+ # 4. insert a row in your database
67
+
68
+ # 5. your agent fires automatically
80
69
  ```
81
70
 
82
- ```json
83
- {
84
- "source": "supabase",
85
- "event": "table.insert",
86
- "table": "orders",
87
- "condition": "total equals 0",
88
- "webhookUrl": "https://hooks.example.com/free-orders"
89
- }
71
+ ---
72
+
73
+ ## the tool — `archer.watch()`
74
+
75
+ Once Archer is set up, your AI agent has access to this tool natively. You never call it directly — your agent calls it when you describe what you want.
76
+
77
+ ```typescript
78
+ archer.watch({
79
+ source: string, // data source
80
+ event: string, // what to listen for
81
+ table?: string, // table name for table events
82
+ condition?: string, // plain english condition (optional)
83
+ webhookUrl: string // where to fire when condition is met
84
+ })
90
85
  ```
91
86
 
92
- ### Webhook Payload
87
+ **just talk to your agent:**
93
88
 
94
- Every webhook POST follows the same envelope format, regardless of source:
89
+ ```
90
+ "watch my users table and fire https://your-webhook.com
91
+ when a new user signs up with a .edu email"
92
+ ```
93
+
94
+ ```
95
+ "watch my orders table for new inserts and notify https://your-webhook.com"
96
+ ```
97
+
98
+ ```
99
+ "fire https://your-webhook.com every time a row is deleted from sessions"
100
+ ```
101
+
102
+ ---
103
+
104
+ ## supported events (currently only supabase, p.s. we will add more soon)
105
+
106
+ | event | description |
107
+ |---|---|
108
+ | `auth.signup` | new user registers |
109
+ | `table.insert` | new row inserted into any table |
110
+ | `table.update` | existing row updated |
111
+ | `table.delete` | row deleted |
112
+
113
+ ---
114
+
115
+ ## webhook payload
116
+
117
+ Every time Archer fires, your agent receives this:
95
118
 
96
119
  ```json
97
120
  {
98
121
  "archer": {
99
- "watchId": "watch_a1b2c3d4",
122
+ "watchId": "uuid",
100
123
  "event": "table.insert",
101
124
  "source": "supabase",
102
- "firedAt": "2025-01-15T10:30:00.000Z"
125
+ "firedAt": "ISO timestamp"
103
126
  },
104
- "data": { ... }
127
+ "data": {
128
+ "id": "row-id",
129
+ "email": "user@university.edu",
130
+ "created_at": "timestamp"
131
+ }
105
132
  }
106
133
  ```
107
134
 
108
- ## Architecture
135
+ ---
136
+
137
+ ## supported agents
138
+
139
+ Archer auto-detects and injects into all of these:
140
+
141
+ | agent | status |
142
+ |---|---|
143
+ | Cursor | ✓ supported |
144
+ | Claude Code | ✓ supported |
145
+ | opencode | ✓ supported |
146
+ | Google Antigravity | ✓ supported |
147
+ | Windsurf | ✓ supported |
148
+
149
+ ---
150
+
151
+ ## supported data sources
152
+
153
+ Archer is built universal — any data source, any platform.
154
+
155
+ | source | status |
156
+ |---|---|
157
+ | Supabase | ✓ available now |
158
+ | GitHub | coming soon |
159
+ | Stripe | coming soon |
160
+ | Linear | coming soon |
161
+ | Vercel | coming soon |
162
+ | custom webhooks | coming soon |
163
+
164
+ ---
165
+
166
+ ## credentials
167
+
168
+ Archer scans these files automatically in priority order:
109
169
 
110
170
  ```
111
- npx archer → Interactive wizard (scan, detect, inject, configure)
112
- npx archer --mcp → MCP server mode (stdio transport, used by agents)
171
+ .env.local
172
+ .env
173
+ .env.development
174
+ .env.production
113
175
  ```
114
176
 
115
- The wizard injects this into each agent's config:
177
+ It recognizes all common aliases automatically:
116
178
 
117
- ```json
118
- {
119
- "mcpServers": {
120
- "archer": {
121
- "command": "npx",
122
- "args": ["-y", "archer", "--mcp"],
123
- "env": {
124
- "SUPABASE_URL": "...",
125
- "SUPABASE_SERVICE_ROLE_KEY": "..."
126
- }
127
- }
128
- }
129
- }
179
+ ```bash
180
+ # standard
181
+ SUPABASE_URL=https://yourproject.supabase.co
182
+ SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
183
+
184
+ # Next.js also recognized automatically
185
+ NEXT_PUBLIC_SUPABASE_URL=...
186
+
187
+ # Vite — also recognized automatically
188
+ VITE_SUPABASE_URL=...
189
+ ```
190
+
191
+ You never paste credentials manually. Archer finds them.
192
+
193
+ ---
194
+
195
+ ## requirements
196
+
197
+ - Node.js 18 or higher
198
+ - at least one supported AI agent installed
199
+ - a `.env` file with your data source credentials
200
+ - realtime enabled on tables you want to watch
201
+
202
+ ---
203
+
204
+ ## architecture
205
+
206
+ ```
207
+ developer's machine data source
208
+ ─────────────────── ───────────
209
+ npx archer-wizard@latest realtime channel
210
+ ↓ ↓
211
+ wizard scans .env Archer subscribes to changes 24/7
212
+ ↓ ↓
213
+ injects into agents condition matched → webhook fires
214
+ ↓ ↓
215
+ agent calls archer.watch() AI agent wakes up with full context
216
+ ```
217
+
218
+ No AI at runtime. Once a condition is defined it is pure logic — fast, cheap, reliable.
219
+
220
+ ---
221
+
222
+ ## what v1 does not include
223
+
224
+ - no dashboard
225
+ - no account required
226
+ - no sign in
227
+ - no API key
228
+ - no cloud service
229
+
230
+ Everything runs locally on your machine using your own credentials. The architecture is universal from day one — the simplicity is intentional.
231
+
232
+
233
+
234
+ ```bash
235
+ # Install from npm
236
+ npx archer-wizard@latest
237
+
238
+ # Or from source:
239
+ git clone https://github.com/amirlan-labs/archer-mcp
240
+ cd archer-mcp
241
+ npm install
242
+ npm run dev
130
243
  ```
131
244
 
132
- ## Requirements
133
245
 
134
- - Node.js 18+
135
- - At least one supported AI agent installed
136
- - Credentials for your event source (e.g. Supabase URL + service role key)
246
+ <div align="center">
137
247
 
138
- ## License
248
+ *agents stop waiting. the world starts talking.*
139
249
 
140
- MIT
250
+ </div>
@@ -1 +1 @@
1
- {"version":3,"file":"ascii.d.ts","sourceRoot":"","sources":["../../src/lib/ascii.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,IAAI,IAAI,CA0BnC;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKpD;AAID,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAqBvD;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD"}
1
+ {"version":3,"file":"ascii.d.ts","sourceRoot":"","sources":["../../src/lib/ascii.ts"],"names":[],"mappings":"AAWA,wBAAgB,YAAY,IAAI,IAAI,CAkDnC;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKpD;AAID,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAqBvD;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD"}
package/dist/lib/ascii.js CHANGED
@@ -1,4 +1,9 @@
1
1
  import pc from 'picocolors';
2
+ // Force colors for better visibility
3
+ const colors = pc.createColors(true);
4
+ // Use picocolors green (more compatible than true color)
5
+ const emerald = colors.green;
6
+ const emeraldDim = colors.dim;
2
7
  // ─── ASCII Art ──────────────────────────────────────────────
3
8
  export function showAsciiArt() {
4
9
  const lines = [
@@ -11,17 +16,40 @@ export function showAsciiArt() {
11
16
  ];
12
17
  // Column boundaries for coloring:
13
18
  // A: cols 0-5, R: 6-13, C: 14-21, H: 22-29, E: 30-37, R: 38-45
14
- // ARCH = white, ER = green
19
+ // ARCH = white, ER = emerald green
15
20
  const archEnd = 30; // columns 0-29 are A R C H
16
21
  const erEnd = 46; // columns 30-45 are E R
17
22
  for (const line of lines) {
18
23
  const archPart = line.slice(0, archEnd);
19
24
  const erPart = line.slice(archEnd, erEnd);
20
25
  const rest = line.slice(erEnd);
21
- process.stdout.write(pc.white(archPart) + pc.green(erPart) + rest + '\n');
26
+ process.stdout.write(colors.white(archPart) + emerald(erPart) + rest + '\n');
22
27
  }
28
+ // Pixel art bow and arrow (emerald green)
29
+ const bowArrow = [
30
+ ` ${emerald('╭───╮')}`,
31
+ ` ${emerald('╱')} ${emerald('╲')}`,
32
+ ` ${emerald('╱')} ${emerald('╲')}`,
33
+ ` ${emerald('╱')} ${emerald('╲')}`,
34
+ ` ${emerald('╱')} ${emerald('╲')}`,
35
+ ` ${emerald('╱')} ${emerald('╲')}`,
36
+ ` ${emerald('╱')} ${emerald('╲')}`,
37
+ ` ${emerald('╱')} ${emerald('╲')}`,
38
+ `${emerald('╱')} ${emerald('╲')}`,
39
+ ` ${emerald('╲')} ${emerald('╱')}`,
40
+ ` ${emerald('╲')} ${emerald('╱')}`,
41
+ ` ${emerald('╲')} ${emerald('╱')}`,
42
+ ` ${emerald('╲')} ${emerald('╱')}`,
43
+ ` ${emerald('╲')} ${emerald('╱')}`,
44
+ ` ${emerald('╲')} ${emerald('╱')}`,
45
+ ` ${emerald('╲')} ${emerald('╱')}`,
46
+ ` ${emerald('╰───╯')}`,
47
+ ` ${emerald('───►')}`,
48
+ ];
49
+ console.log();
50
+ bowArrow.forEach(line => console.log(line));
23
51
  console.log();
24
- console.log(pc.dim(' v0.1.0 · event intelligence for AI agents'));
52
+ console.log(emeraldDim(' v0.1.0 · event intelligence for AI agents'));
25
53
  console.log();
26
54
  }
27
55
  // ─── Status Logger ──────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"ascii.js","sourceRoot":"","sources":["../../src/lib/ascii.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ascii.js","sourceRoot":"","sources":["../../src/lib/ascii.ts"],"names":[],"mappings":"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"}
@@ -145,7 +145,7 @@ export function executeWatch(rawInput) {
145
145
  // ─── Tool Schema (for MCP registration) ─────────────────────
146
146
  export const WATCH_TOOL_SCHEMA = {
147
147
  name: 'archer_watch',
148
- description: 'Watch real-time events from Supabase. Monitors auth signups, table inserts, updates, and deletes. Fires a webhook when conditions are met.',
148
+ description: 'Archer is the event intelligence layer for AI agents. Watch real-time events from data sources. Monitors auth signups, table inserts, updates, and deletes. Fires a webhook when conditions are met. Agents stop waiting for you to talk to them and start acting on their own when the world moves.',
149
149
  inputSchema: {
150
150
  type: 'object',
151
151
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/tools/watch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/tools/watch.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { AgentInfo } from '../types/index.js';
2
2
  export declare function detectAgents(): AgentInfo[];
3
3
  export declare function getConfigKey(agentName: string): 'mcpServers' | 'mcp';
4
- export declare function getRulesPath(agentName: string, cwd: string): string;
4
+ export declare function getRulesPath(agentName: string): string;
5
5
  //# sourceMappingURL=detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/wizard/detector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAiGnD,wBAAgB,YAAY,IAAI,SAAS,EAAE,CAqB1C;AAID,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,KAAK,CAMpE;AAID,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAenE"}
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/wizard/detector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAiGnD,wBAAgB,YAAY,IAAI,SAAS,EAAE,CAsB1C;AAID,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,KAAK,CAMpE;AAID,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBtD"}
@@ -84,9 +84,10 @@ export function detectAgents() {
84
84
  const configPath = getConfigPath(agent);
85
85
  const configExists = fileExists(configPath);
86
86
  const dirExists = parentDirExists(configPath);
87
- // Agent is "installed" if its parent directory exists
88
- // (the config file might not exist yet)
89
- if (dirExists) {
87
+ // Agent is "installed" if:
88
+ // 1. The config file exists, OR
89
+ // 2. The parent directory exists (for first-time setup)
90
+ if (configExists || dirExists) {
90
91
  detected.push({
91
92
  name: agent.name,
92
93
  installed: true,
@@ -106,20 +107,23 @@ export function getConfigKey(agentName) {
106
107
  return 'mcpServers';
107
108
  }
108
109
  // ─── Get Rules Path For Agent ───────────────────────────────
109
- export function getRulesPath(agentName, cwd) {
110
+ export function getRulesPath(agentName) {
111
+ const homeDir = os.homedir();
110
112
  switch (agentName) {
111
113
  case 'cursor':
112
- return path.join(cwd, '.cursor', 'rules', 'archer.mdc');
114
+ return path.join(homeDir, '.cursor', 'rules', 'archer.mdc');
113
115
  case 'claude-code':
114
- return path.join(cwd, 'CLAUDE.md');
116
+ // For Claude Code, we'll use the project's CLAUDE.md
117
+ // but we need to get the current working directory
118
+ return path.join(process.cwd(), 'CLAUDE.md');
115
119
  case 'opencode':
116
- return path.join(cwd, '.opencode', 'rules.md');
120
+ return path.join(homeDir, '.config', 'opencode', 'rules.md');
117
121
  case 'antigravity':
118
- return path.join(cwd, '.antigravity', 'rules.md');
122
+ return path.join(homeDir, '.config', 'antigravity', 'rules.md');
119
123
  case 'windsurf':
120
- return path.join(cwd, '.windsurf', 'rules.md');
124
+ return path.join(homeDir, '.codeium', 'windsurf', 'rules.md');
121
125
  default:
122
- return path.join(cwd, '.archer', 'rules.md');
126
+ return path.join(homeDir, '.archer', 'rules.md');
123
127
  }
124
128
  }
125
129
  //# sourceMappingURL=detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/wizard/detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/wizard/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAczB,MAAM,MAAM,GAAsB;IAChC;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;YACtD,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;YACrD,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC;SAC/E;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC;YACzG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC;YACjF,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,4BAA4B,CAAC;SACjG;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC;YACrE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC;YACpE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC;SACpF;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC;YACxE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC;YACvE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,aAAa,CAAC;SACvF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC;YAC1E,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC;YACzE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,iBAAiB,CAAC;SACxF;KACF;CACF,CAAC;AAEF,+DAA+D;AAE/D,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1E,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,+CAA+C;IAC/C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+DAA+D;AAE/D,SAAS,aAAa,CAAC,KAAsB;IAC3C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,+DAA+D;AAE/D,SAAS,UAAU,CAAC,QAAgB;IAClC,IAAI,CAAC;QACH,0DAA0D;QAC1D,2EAA2E;QAC3E,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,+DAA+D;AAE/D,MAAM,UAAU,YAAY;IAC1B,MAAM,QAAQ,GAAgB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAE9C,2BAA2B;QAC3B,gCAAgC;QAChC,wDAAwD;QACxD,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,IAAI;gBACf,UAAU;gBACV,YAAY;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+DAA+D;AAE/D,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,gEAAgE;IAChE,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,+DAA+D;AAE/D,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7B,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9D,KAAK,aAAa;YAChB,qDAAqD;YACrD,mDAAmD;YACnD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/C,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/D,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAClE,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAChE;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
@@ -40,7 +40,7 @@ export async function runWizard() {
40
40
  // ─ Step 13: Inject rules ─
41
41
  if (successfulAgents.length > 0) {
42
42
  logAction('writing agent rules...');
43
- injectRules(successfulAgents, cwd);
43
+ injectRules(successfulAgents);
44
44
  console.log();
45
45
  }
46
46
  // ─ Step 14: Success ─
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,+DAA+D;AAE/D,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,wBAAwB;IACxB,YAAY,EAAE,CAAC;IAEf,0BAA0B;IAC1B,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEpD,uBAAuB;IACvB,SAAS,CAAC,8CAA8C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+BAA+B;IAC/B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,kCAAkC;IAClC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,UAAU,CAAC,6BAA6B,CAAC,CAAC;IAC5C,CAAC;IAED,6CAA6C;IAC7C,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,4BAA4B;IAC5B,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,qCAAqC;IACrC,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAC7C,MAAM,EACN,WAAW,CAAC,WAAW,EACvB,WAAW,CAAC,cAAc,CAC3B,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAC9D,CAAC;IAEF,4BAA4B;IAC5B,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACpC,WAAW,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,uBAAuB;IACvB,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAExC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,+DAA+D;AAE/D,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,wBAAwB;IACxB,YAAY,EAAE,CAAC;IAEf,0BAA0B;IAC1B,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEpD,uBAAuB;IACvB,SAAS,CAAC,8CAA8C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+BAA+B;IAC/B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,kCAAkC;IAClC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,UAAU,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,UAAU,CAAC,6BAA6B,CAAC,CAAC;IAC5C,CAAC;IAED,6CAA6C;IAC7C,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,4BAA4B;IAC5B,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,qCAAqC;IACrC,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAC7C,MAAM,EACN,WAAW,CAAC,WAAW,EACvB,WAAW,CAAC,cAAc,CAC3B,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAC9D,CAAC;IAEF,4BAA4B;IAC5B,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACpC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,uBAAuB;IACvB,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAExC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -8,7 +8,7 @@ import { getConfigKey } from './detector.js';
8
8
  function buildArcherEntry(supabaseUrl, serviceRoleKey) {
9
9
  return {
10
10
  command: 'npx',
11
- args: ['-y', 'archer', '--mcp'],
11
+ args: ['-y', 'archer-wizard@latest', '--mcp'],
12
12
  env: {
13
13
  SUPABASE_URL: supabaseUrl,
14
14
  SUPABASE_SERVICE_ROLE_KEY: serviceRoleKey,
@@ -1 +1 @@
1
- {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/wizard/injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/wizard/injector.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type { AgentInfo } from '../types/index.js';
2
- export declare function injectRules(agents: AgentInfo[], cwd: string): void;
2
+ export declare function injectRules(agents: AgentInfo[]): void;
3
3
  //# sourceMappingURL=rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/wizard/rules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAuGnD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIlE"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/wizard/rules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAsHnD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAIrD"}
@@ -6,19 +6,28 @@ import { getRulesPath } from './detector.js';
6
6
  const RULE_CONTENT = `
7
7
  # Archer — Event Intelligence for AI Agents
8
8
 
9
- Archer is connected to this project's Supabase instance.
9
+ Archer is the event intelligence layer for AI agents. It connects to your data sources (Supabase, GitHub, Stripe, Linear, etc.), watches for conditions you define in plain english, and fires your AI agent the moment those conditions are true, with full context already loaded.
10
10
 
11
11
  ## Available Tool: archer.watch
12
12
 
13
- You can watch real-time events from Supabase using the \`archer.watch\` MCP tool.
13
+ You can watch real-time events from data sources using the \`archer.watch\` MCP tool.
14
+
15
+ ### When to Use Archer
16
+
17
+ Use Archer whenever you need to:
18
+ - Monitor database changes (inserts, updates, deletes)
19
+ - Watch for new user signups
20
+ - React to events in external services
21
+ - Automate responses to data changes
22
+ - Set up real-time notifications
14
23
 
15
24
  ### Parameters
16
25
 
17
- - **source**: always \`"supabase"\`
26
+ - **source**: data source (currently \`"supabase"\`)
18
27
  - **event**: one of \`"auth.signup"\`, \`"table.insert"\`, \`"table.update"\`, \`"table.delete"\`
19
28
  - **table**: the table name (required for table events)
20
29
  - **condition**: optional filter like \`"email ends with @gmail.com"\`
21
- - **webhookUrl**: URL to receive POST notifications
30
+ - **webhookUrl**: URL to receive POST notifications when events match
22
31
 
23
32
  ### Examples
24
33
 
@@ -37,7 +46,13 @@ You can watch real-time events from Supabase using the \`archer.watch\` MCP tool
37
46
  archer.watch({ source: "supabase", event: "table.insert", table: "users", condition: "email ends with @company.com", webhookUrl: "https://hooks.example.com/vip" })
38
47
  \`\`\`
39
48
 
40
- When the user asks to "watch" or "monitor" something in their database, use this tool.
49
+ ### Best Practices
50
+
51
+ - Use descriptive webhook URLs that indicate the action to take
52
+ - Add conditions to filter events and reduce noise
53
+ - Combine with your existing workflows for maximum impact
54
+
55
+ When the user asks to "watch", "monitor", "notify", or "fire" something, use Archer.
41
56
  `.trim();
42
57
  // ─── Archer Block Markers ───────────────────────────────────
43
58
  const BLOCK_START = '<!-- archer:start -->';
@@ -60,9 +75,9 @@ function insertContent(existingContent, newBlock) {
60
75
  return existingContent + separator + newBlock + '\n';
61
76
  }
62
77
  // ─── Write Rules to Agent ───────────────────────────────────
63
- function writeRulesForAgent(agent, cwd) {
78
+ function writeRulesForAgent(agent) {
64
79
  try {
65
- const rulesPath = getRulesPath(agent.name, cwd);
80
+ const rulesPath = getRulesPath(agent.name);
66
81
  const dir = path.dirname(rulesPath);
67
82
  const wrappedContent = wrapInBlock(RULE_CONTENT);
68
83
  // Ensure directory exists
@@ -86,9 +101,9 @@ function writeRulesForAgent(agent, cwd) {
86
101
  }
87
102
  }
88
103
  // ─── Main Rules Injector ────────────────────────────────────
89
- export function injectRules(agents, cwd) {
104
+ export function injectRules(agents) {
90
105
  for (const agent of agents) {
91
- writeRulesForAgent(agent, cwd);
106
+ writeRulesForAgent(agent);
92
107
  }
93
108
  }
94
109
  //# sourceMappingURL=rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/wizard/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/wizard/rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,+DAA+D;AAE/D,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDpB,CAAC,IAAI,EAAE,CAAC;AAET,+DAA+D;AAE/D,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAC5C,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAExC,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,GAAG,WAAW,KAAK,OAAO,KAAK,SAAS,EAAE,CAAC;AACpD,CAAC;AAED,+DAA+D;AAE/D,SAAS,aAAa,CAAC,eAAuB,EAAE,QAAgB;IAC9D,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAElD,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACrC,yBAAyB;QACzB,OAAO,CACL,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;YAClC,QAAQ;YACR,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CACjD,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACjE,OAAO,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;AACvD,CAAC;AAED,+DAA+D;AAE/D,SAAS,kBAAkB,CAAC,KAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;QAEjD,0BAA0B;QAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,uCAAuC;QACvC,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QACpE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAEnD,UAAU,CAAC,kBAAkB,KAAK,CAAC,IAAI,MAAM,SAAS,EAAE,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,QAAQ,CAAC,6BAA6B,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,+DAA+D;AAE/D,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/wizard/scanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,mBAAmB,CAAC;AAgI/D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA8DlE;AAID,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAgD1D"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/wizard/scanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,mBAAmB,CAAC;AAgL/D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAwFlE;AAID,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAgD1D"}
@@ -3,6 +3,51 @@ import path from 'node:path';
3
3
  import * as clack from '@clack/prompts';
4
4
  import { z } from 'zod';
5
5
  import { logSuccess, logError, maskCredential } from '../lib/ascii.js';
6
+ // Helper to search for keys in files
7
+ function searchInFiles(cwd, patterns) {
8
+ const results = new Map();
9
+ function scanDir(dir) {
10
+ try {
11
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
12
+ for (const entry of entries) {
13
+ const fullPath = path.join(dir, entry.name);
14
+ // Skip node_modules, .git, and other hidden directories
15
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules' && entry.name !== '.git') {
16
+ scanDir(fullPath);
17
+ }
18
+ else if (entry.isFile()) {
19
+ try {
20
+ const content = fs.readFileSync(fullPath, 'utf-8');
21
+ const lines = content.split('\n');
22
+ lines.forEach((line, lineNum) => {
23
+ patterns.forEach(pattern => {
24
+ const match = line.match(pattern);
25
+ if (match) {
26
+ // Extract value from regex capture groups
27
+ const value = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
28
+ if (value) {
29
+ const key = match[0].split('=')[0].trim();
30
+ if (!results.has(key)) {
31
+ results.set(key, value);
32
+ }
33
+ }
34
+ }
35
+ });
36
+ });
37
+ }
38
+ catch {
39
+ // Skip unreadable files
40
+ }
41
+ }
42
+ }
43
+ }
44
+ catch {
45
+ // Skip unreadable directories
46
+ }
47
+ }
48
+ scanDir(cwd);
49
+ return results;
50
+ }
6
51
  // ─── Env File Priority ──────────────────────────────────────
7
52
  const ENV_FILES = [
8
53
  '.env.local',
@@ -123,6 +168,29 @@ export async function scanProject(cwd) {
123
168
  break;
124
169
  }
125
170
  }
171
+ // Search in codebase for Supabase keys
172
+ const codebasePatterns = [
173
+ /SUPABASE_URL\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
174
+ /NEXT_PUBLIC_SUPABASE_URL\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
175
+ /VITE_SUPABASE_URL\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
176
+ /SUPABASE_SERVICE_ROLE_KEY\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
177
+ /SUPABASE_SERVICE_KEY\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
178
+ /SUPABASE_ANON_KEY\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
179
+ ];
180
+ const codebaseResults = searchInFiles(cwd, codebasePatterns);
181
+ // Merge codebase results (env files take precedence)
182
+ for (const [key, value] of codebaseResults) {
183
+ const lowerKey = key.toLowerCase();
184
+ if (lowerKey.includes('url') && !mergedEnv.has('SUPABASE_URL')) {
185
+ mergedEnv.set('SUPABASE_URL', value);
186
+ }
187
+ else if (lowerKey.includes('service') && !mergedEnv.has('SUPABASE_SERVICE_ROLE_KEY')) {
188
+ mergedEnv.set('SUPABASE_SERVICE_ROLE_KEY', value);
189
+ }
190
+ else if (lowerKey.includes('anon') && !mergedEnv.has('SUPABASE_ANON_KEY')) {
191
+ mergedEnv.set('SUPABASE_ANON_KEY', value);
192
+ }
193
+ }
126
194
  const supabaseUrl = findByAliases(mergedEnv, SUPABASE_URL_ALIASES);
127
195
  const serviceRoleKey = findByAliases(mergedEnv, SERVICE_ROLE_KEY_ALIASES);
128
196
  const anonKey = findByAliases(mergedEnv, ANON_KEY_ALIASES);
@@ -146,6 +214,9 @@ export async function scanProject(cwd) {
146
214
  if (foundInFile) {
147
215
  logSuccess(`found credentials in ${foundInFile}`);
148
216
  }
217
+ else if (codebaseResults.size > 0) {
218
+ logSuccess(`found credentials in codebase`);
219
+ }
149
220
  return {
150
221
  supabaseUrl,
151
222
  serviceRoleKey,
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/wizard/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGvE,+DAA+D;AAE/D,MAAM,SAAS,GAAG;IAChB,YAAY;IACZ,MAAM;IACN,kBAAkB;IAClB,iBAAiB;CACT,CAAC;AAEX,+DAA+D;AAE/D,MAAM,oBAAoB,GAAG;IAC3B,cAAc;IACd,0BAA0B;IAC1B,mBAAmB;CACX,CAAC;AAEX,MAAM,wBAAwB,GAAG;IAC/B,2BAA2B;IAC3B,sBAAsB;CACd,CAAC;AAEX,MAAM,gBAAgB,GAAG;IACvB,mBAAmB;IACnB,+BAA+B;IAC/B,wBAAwB;CAChB,CAAC;AAEX,+DAA+D;AAE/D,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE;IAChE,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;IAC7C,OAAO,EAAE,sDAAsD;CAChE,CAAC,CAAC;AAEH,+DAA+D;AAE/D,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,OAAO,KAAK,CAAC,CAAC;gBAAE,SAAS;YAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE3C,2BAA2B;YAC3B,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;gBACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+DAA+D;AAE/D,SAAS,aAAa,CACpB,MAA2B,EAC3B,OAA0B;IAE1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+DAA+D;AAE/D,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,SAAS,GAAc,SAAS,CAAC;IACrC,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAG7B,CAAC;QAEF,MAAM,OAAO,GAAG;YACd,GAAG,GAAG,CAAC,YAAY;YACnB,GAAG,GAAG,CAAC,eAAe;SACvB,CAAC;QAEF,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,SAAS,GAAG,QAAQ,CAAC;QACvB,CAAC;aAAM,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;QAED,IAAI,uBAAuB,IAAI,OAAO,EAAE,CAAC;YACvC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;AAC7C,CAAC;AAED,+DAA+D;AAE/D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,0CAA0C;IAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,wDAAwD;IACxD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAChC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAClB,WAAW,GAAG,IAAI,CAAC;YACnB,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,aAAa,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAE3D,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEjE,wBAAwB;IACxB,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,CAAC,kBAAkB,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,UAAU,CAAC,+BAA+B,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,UAAU,CAAC,uBAAuB,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,WAAW;QACX,cAAc;QACd,OAAO;QACP,SAAS;QACT,oBAAoB;QACpB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,+DAA+D;AAE/D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAgB;IAEhB,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACnC,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,yBAAyB;YAClC,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,aAAa,CAAC;gBAC1D,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,WAAW,GAAG,KAAe,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,sCAAsC;YAC/C,WAAW,EAAE,yCAAyC;YACtD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,aAAa,CAAC;gBAC1D,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,cAAc,GAAG,KAAe,CAAC;IACnC,CAAC;IAED,OAAO;QACL,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;QACjD,cAAc,EAAE,oBAAoB,CAAC,KAAK,CAAC,cAAc,CAAC;KAC3D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/wizard/scanner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "archer-wizard",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "event intelligence layer for AI agents",
5
5
  "type": "module",
6
6
  "bin": {
7
+ "archer": "dist/index.js",
7
8
  "archer-wizard": "dist/index.js"
8
9
  },
9
10
  "scripts": {
package/src/lib/ascii.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  import pc from 'picocolors';
2
2
 
3
+ // Force colors for better visibility
4
+ const colors = pc.createColors(true);
5
+
6
+ // Use picocolors green (more compatible than true color)
7
+ const emerald = colors.green;
8
+ const emeraldDim = colors.dim;
9
+
3
10
  // ─── ASCII Art ──────────────────────────────────────────────
4
11
 
5
12
  export function showAsciiArt(): void {
@@ -14,7 +21,7 @@ export function showAsciiArt(): void {
14
21
 
15
22
  // Column boundaries for coloring:
16
23
  // A: cols 0-5, R: 6-13, C: 14-21, H: 22-29, E: 30-37, R: 38-45
17
- // ARCH = white, ER = green
24
+ // ARCH = white, ER = emerald green
18
25
  const archEnd = 30; // columns 0-29 are A R C H
19
26
  const erEnd = 46; // columns 30-45 are E R
20
27
 
@@ -22,11 +29,35 @@ export function showAsciiArt(): void {
22
29
  const archPart = line.slice(0, archEnd);
23
30
  const erPart = line.slice(archEnd, erEnd);
24
31
  const rest = line.slice(erEnd);
25
- process.stdout.write(pc.white(archPart) + pc.green(erPart) + rest + '\n');
32
+ process.stdout.write(colors.white(archPart) + emerald(erPart) + rest + '\n');
26
33
  }
27
34
 
35
+ // Pixel art bow and arrow (emerald green)
36
+ const bowArrow = [
37
+ ` ${emerald('╭───╮')}`,
38
+ ` ${emerald('╱')} ${emerald('╲')}`,
39
+ ` ${emerald('╱')} ${emerald('╲')}`,
40
+ ` ${emerald('╱')} ${emerald('╲')}`,
41
+ ` ${emerald('╱')} ${emerald('╲')}`,
42
+ ` ${emerald('╱')} ${emerald('╲')}`,
43
+ ` ${emerald('╱')} ${emerald('╲')}`,
44
+ ` ${emerald('╱')} ${emerald('╲')}`,
45
+ `${emerald('╱')} ${emerald('╲')}`,
46
+ ` ${emerald('╲')} ${emerald('╱')}`,
47
+ ` ${emerald('╲')} ${emerald('╱')}`,
48
+ ` ${emerald('╲')} ${emerald('╱')}`,
49
+ ` ${emerald('╲')} ${emerald('╱')}`,
50
+ ` ${emerald('╲')} ${emerald('╱')}`,
51
+ ` ${emerald('╲')} ${emerald('╱')}`,
52
+ ` ${emerald('╲')} ${emerald('╱')}`,
53
+ ` ${emerald('╰───╯')}`,
54
+ ` ${emerald('───►')}`,
55
+ ];
56
+
57
+ console.log();
58
+ bowArrow.forEach(line => console.log(line));
28
59
  console.log();
29
- console.log(pc.dim(' v0.1.0 · event intelligence for AI agents'));
60
+ console.log(emeraldDim(' v0.1.0 · event intelligence for AI agents'));
30
61
  console.log();
31
62
  }
32
63
 
@@ -190,7 +190,7 @@ export function executeWatch(rawInput: unknown): WatchResult {
190
190
  export const WATCH_TOOL_SCHEMA = {
191
191
  name: 'archer_watch',
192
192
  description:
193
- 'Watch real-time events from Supabase. Monitors auth signups, table inserts, updates, and deletes. Fires a webhook when conditions are met.',
193
+ 'Archer is the event intelligence layer for AI agents. Watch real-time events from data sources. Monitors auth signups, table inserts, updates, and deletes. Fires a webhook when conditions are met. Agents stop waiting for you to talk to them and start acting on their own when the world moves.',
194
194
  inputSchema: {
195
195
  type: 'object' as const,
196
196
  properties: {
@@ -106,9 +106,10 @@ export function detectAgents(): AgentInfo[] {
106
106
  const configExists = fileExists(configPath);
107
107
  const dirExists = parentDirExists(configPath);
108
108
 
109
- // Agent is "installed" if its parent directory exists
110
- // (the config file might not exist yet)
111
- if (dirExists) {
109
+ // Agent is "installed" if:
110
+ // 1. The config file exists, OR
111
+ // 2. The parent directory exists (for first-time setup)
112
+ if (configExists || dirExists) {
112
113
  detected.push({
113
114
  name: agent.name,
114
115
  installed: true,
@@ -133,19 +134,23 @@ export function getConfigKey(agentName: string): 'mcpServers' | 'mcp' {
133
134
 
134
135
  // ─── Get Rules Path For Agent ───────────────────────────────
135
136
 
136
- export function getRulesPath(agentName: string, cwd: string): string {
137
+ export function getRulesPath(agentName: string): string {
138
+ const homeDir = os.homedir();
139
+
137
140
  switch (agentName) {
138
141
  case 'cursor':
139
- return path.join(cwd, '.cursor', 'rules', 'archer.mdc');
142
+ return path.join(homeDir, '.cursor', 'rules', 'archer.mdc');
140
143
  case 'claude-code':
141
- return path.join(cwd, 'CLAUDE.md');
144
+ // For Claude Code, we'll use the project's CLAUDE.md
145
+ // but we need to get the current working directory
146
+ return path.join(process.cwd(), 'CLAUDE.md');
142
147
  case 'opencode':
143
- return path.join(cwd, '.opencode', 'rules.md');
148
+ return path.join(homeDir, '.config', 'opencode', 'rules.md');
144
149
  case 'antigravity':
145
- return path.join(cwd, '.antigravity', 'rules.md');
150
+ return path.join(homeDir, '.config', 'antigravity', 'rules.md');
146
151
  case 'windsurf':
147
- return path.join(cwd, '.windsurf', 'rules.md');
152
+ return path.join(homeDir, '.codeium', 'windsurf', 'rules.md');
148
153
  default:
149
- return path.join(cwd, '.archer', 'rules.md');
154
+ return path.join(homeDir, '.archer', 'rules.md');
150
155
  }
151
156
  }
@@ -58,7 +58,7 @@ export async function runWizard(): Promise<void> {
58
58
  // ─ Step 13: Inject rules ─
59
59
  if (successfulAgents.length > 0) {
60
60
  logAction('writing agent rules...');
61
- injectRules(successfulAgents, cwd);
61
+ injectRules(successfulAgents);
62
62
  console.log();
63
63
  }
64
64
 
@@ -11,7 +11,7 @@ import type { AgentInfo, InjectionResult, McpServerEntry } from '../types/index.
11
11
  function buildArcherEntry(supabaseUrl: string, serviceRoleKey: string): McpServerEntry {
12
12
  return {
13
13
  command: 'npx',
14
- args: ['-y', 'archer', '--mcp'],
14
+ args: ['-y', 'archer-wizard@latest', '--mcp'],
15
15
  env: {
16
16
  SUPABASE_URL: supabaseUrl,
17
17
  SUPABASE_SERVICE_ROLE_KEY: serviceRoleKey,
@@ -9,19 +9,28 @@ import type { AgentInfo } from '../types/index.js';
9
9
  const RULE_CONTENT = `
10
10
  # Archer — Event Intelligence for AI Agents
11
11
 
12
- Archer is connected to this project's Supabase instance.
12
+ Archer is the event intelligence layer for AI agents. It connects to your data sources (Supabase, GitHub, Stripe, Linear, etc.), watches for conditions you define in plain english, and fires your AI agent the moment those conditions are true, with full context already loaded.
13
13
 
14
14
  ## Available Tool: archer.watch
15
15
 
16
- You can watch real-time events from Supabase using the \`archer.watch\` MCP tool.
16
+ You can watch real-time events from data sources using the \`archer.watch\` MCP tool.
17
+
18
+ ### When to Use Archer
19
+
20
+ Use Archer whenever you need to:
21
+ - Monitor database changes (inserts, updates, deletes)
22
+ - Watch for new user signups
23
+ - React to events in external services
24
+ - Automate responses to data changes
25
+ - Set up real-time notifications
17
26
 
18
27
  ### Parameters
19
28
 
20
- - **source**: always \`"supabase"\`
29
+ - **source**: data source (currently \`"supabase"\`)
21
30
  - **event**: one of \`"auth.signup"\`, \`"table.insert"\`, \`"table.update"\`, \`"table.delete"\`
22
31
  - **table**: the table name (required for table events)
23
32
  - **condition**: optional filter like \`"email ends with @gmail.com"\`
24
- - **webhookUrl**: URL to receive POST notifications
33
+ - **webhookUrl**: URL to receive POST notifications when events match
25
34
 
26
35
  ### Examples
27
36
 
@@ -40,7 +49,13 @@ You can watch real-time events from Supabase using the \`archer.watch\` MCP tool
40
49
  archer.watch({ source: "supabase", event: "table.insert", table: "users", condition: "email ends with @company.com", webhookUrl: "https://hooks.example.com/vip" })
41
50
  \`\`\`
42
51
 
43
- When the user asks to "watch" or "monitor" something in their database, use this tool.
52
+ ### Best Practices
53
+
54
+ - Use descriptive webhook URLs that indicate the action to take
55
+ - Add conditions to filter events and reduce noise
56
+ - Combine with your existing workflows for maximum impact
57
+
58
+ When the user asks to "watch", "monitor", "notify", or "fire" something, use Archer.
44
59
  `.trim();
45
60
 
46
61
  // ─── Archer Block Markers ───────────────────────────────────
@@ -74,9 +89,9 @@ function insertContent(existingContent: string, newBlock: string): string {
74
89
 
75
90
  // ─── Write Rules to Agent ───────────────────────────────────
76
91
 
77
- function writeRulesForAgent(agent: AgentInfo, cwd: string): boolean {
92
+ function writeRulesForAgent(agent: AgentInfo): boolean {
78
93
  try {
79
- const rulesPath = getRulesPath(agent.name, cwd);
94
+ const rulesPath = getRulesPath(agent.name);
80
95
  const dir = path.dirname(rulesPath);
81
96
  const wrappedContent = wrapInBlock(RULE_CONTENT);
82
97
 
@@ -105,8 +120,8 @@ function writeRulesForAgent(agent: AgentInfo, cwd: string): boolean {
105
120
 
106
121
  // ─── Main Rules Injector ────────────────────────────────────
107
122
 
108
- export function injectRules(agents: AgentInfo[], cwd: string): void {
123
+ export function injectRules(agents: AgentInfo[]): void {
109
124
  for (const agent of agents) {
110
- writeRulesForAgent(agent, cwd);
125
+ writeRulesForAgent(agent);
111
126
  }
112
127
  }
@@ -5,6 +5,54 @@ import { z } from 'zod';
5
5
  import { logSuccess, logError, maskCredential } from '../lib/ascii.js';
6
6
  import type { ScanResult, Framework } from '../types/index.js';
7
7
 
8
+ // Helper to search for keys in files
9
+ function searchInFiles(cwd: string, patterns: RegExp[]): Map<string, string> {
10
+ const results = new Map<string, string>();
11
+
12
+ function scanDir(dir: string) {
13
+ try {
14
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
15
+
16
+ for (const entry of entries) {
17
+ const fullPath = path.join(dir, entry.name);
18
+
19
+ // Skip node_modules, .git, and other hidden directories
20
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules' && entry.name !== '.git') {
21
+ scanDir(fullPath);
22
+ } else if (entry.isFile()) {
23
+ try {
24
+ const content = fs.readFileSync(fullPath, 'utf-8');
25
+ const lines = content.split('\n');
26
+
27
+ lines.forEach((line, lineNum) => {
28
+ patterns.forEach(pattern => {
29
+ const match = line.match(pattern);
30
+ if (match) {
31
+ // Extract value from regex capture groups
32
+ const value = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
33
+ if (value) {
34
+ const key = match[0].split('=')[0].trim();
35
+ if (!results.has(key)) {
36
+ results.set(key, value);
37
+ }
38
+ }
39
+ }
40
+ });
41
+ });
42
+ } catch {
43
+ // Skip unreadable files
44
+ }
45
+ }
46
+ }
47
+ } catch {
48
+ // Skip unreadable directories
49
+ }
50
+ }
51
+
52
+ scanDir(cwd);
53
+ return results;
54
+ }
55
+
8
56
  // ─── Env File Priority ──────────────────────────────────────
9
57
 
10
58
  const ENV_FILES = [
@@ -158,6 +206,30 @@ export async function scanProject(cwd: string): Promise<ScanResult> {
158
206
  }
159
207
  }
160
208
 
209
+ // Search in codebase for Supabase keys
210
+ const codebasePatterns = [
211
+ /SUPABASE_URL\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
212
+ /NEXT_PUBLIC_SUPABASE_URL\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
213
+ /VITE_SUPABASE_URL\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
214
+ /SUPABASE_SERVICE_ROLE_KEY\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
215
+ /SUPABASE_SERVICE_KEY\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
216
+ /SUPABASE_ANON_KEY\s*=\s*(?:['"]([^'"]+)['"]|([^\s;]+))/i,
217
+ ];
218
+
219
+ const codebaseResults = searchInFiles(cwd, codebasePatterns);
220
+
221
+ // Merge codebase results (env files take precedence)
222
+ for (const [key, value] of codebaseResults) {
223
+ const lowerKey = key.toLowerCase();
224
+ if (lowerKey.includes('url') && !mergedEnv.has('SUPABASE_URL')) {
225
+ mergedEnv.set('SUPABASE_URL', value);
226
+ } else if (lowerKey.includes('service') && !mergedEnv.has('SUPABASE_SERVICE_ROLE_KEY')) {
227
+ mergedEnv.set('SUPABASE_SERVICE_ROLE_KEY', value);
228
+ } else if (lowerKey.includes('anon') && !mergedEnv.has('SUPABASE_ANON_KEY')) {
229
+ mergedEnv.set('SUPABASE_ANON_KEY', value);
230
+ }
231
+ }
232
+
161
233
  const supabaseUrl = findByAliases(mergedEnv, SUPABASE_URL_ALIASES);
162
234
  const serviceRoleKey = findByAliases(mergedEnv, SERVICE_ROLE_KEY_ALIASES);
163
235
  const anonKey = findByAliases(mergedEnv, ANON_KEY_ALIASES);
@@ -183,6 +255,8 @@ export async function scanProject(cwd: string): Promise<ScanResult> {
183
255
 
184
256
  if (foundInFile) {
185
257
  logSuccess(`found credentials in ${foundInFile}`);
258
+ } else if (codebaseResults.size > 0) {
259
+ logSuccess(`found credentials in codebase`);
186
260
  }
187
261
 
188
262
  return {