heyreach-cli 0.1.4 → 0.1.5
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/AGENTS.md +135 -76
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -13,6 +13,9 @@ export HEYREACH_API_KEY="your-api-key-here"
|
|
|
13
13
|
|
|
14
14
|
# Verify it works
|
|
15
15
|
heyreach status
|
|
16
|
+
|
|
17
|
+
# Or save credentials (validates key before saving)
|
|
18
|
+
heyreach login --api-key "your-api-key-here"
|
|
16
19
|
```
|
|
17
20
|
|
|
18
21
|
**Requirements:** Node.js 18+
|
|
@@ -31,6 +34,13 @@ Or pass it per-command:
|
|
|
31
34
|
heyreach campaigns list --api-key "your-api-key-here"
|
|
32
35
|
```
|
|
33
36
|
|
|
37
|
+
Or save it permanently (validates the key first):
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
heyreach login --api-key "your-api-key-here"
|
|
41
|
+
# → {"success":true,"message":"Credentials saved and verified."}
|
|
42
|
+
```
|
|
43
|
+
|
|
34
44
|
API keys are generated from: HeyReach → Settings → Integrations → Public API
|
|
35
45
|
|
|
36
46
|
### Organization API (admin commands)
|
|
@@ -49,6 +59,7 @@ Or per-command: `heyreach org workspaces --org-key "your-org-key"`
|
|
|
49
59
|
- API keys never expire but can be deleted/deactivated
|
|
50
60
|
- Workspace key and Organization key are separate — each has its own 300 req/min rate limit
|
|
51
61
|
- Base URL is fixed: `https://api.heyreach.io/api/public/`
|
|
62
|
+
- `heyreach login` validates the key against the API before saving — invalid keys are rejected immediately
|
|
52
63
|
|
|
53
64
|
## Output Format
|
|
54
65
|
|
|
@@ -74,6 +85,17 @@ heyreach campaigns list --quiet
|
|
|
74
85
|
{"error":"No API key found. Run \"heyreach login\" or set HEYREACH_API_KEY.","code":"AUTH_ERROR"}
|
|
75
86
|
```
|
|
76
87
|
|
|
88
|
+
### Error codes
|
|
89
|
+
|
|
90
|
+
| Code | Meaning |
|
|
91
|
+
|------|---------|
|
|
92
|
+
| `AUTH_ERROR` | Missing or invalid API key |
|
|
93
|
+
| `NOT_FOUND` | Resource doesn't exist (bad ID, no matching lead, etc.) |
|
|
94
|
+
| `VALIDATION_ERROR` | Missing required fields or invalid input |
|
|
95
|
+
| `RATE_LIMIT` | 300 req/min exceeded (auto-retried with backoff) |
|
|
96
|
+
| `SERVER_ERROR` | HeyReach API error (auto-retried up to 3 times) |
|
|
97
|
+
| `HTTP_ERROR` | Other HTTP error |
|
|
98
|
+
|
|
77
99
|
## Discovering Commands
|
|
78
100
|
|
|
79
101
|
```bash
|
|
@@ -87,114 +109,122 @@ heyreach campaigns --help
|
|
|
87
109
|
heyreach campaigns list --help
|
|
88
110
|
```
|
|
89
111
|
|
|
90
|
-
##
|
|
112
|
+
## Complete Command Reference
|
|
91
113
|
|
|
92
114
|
### campaigns (8 commands)
|
|
93
|
-
Manage LinkedIn outreach campaigns
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
get-
|
|
104
|
-
|
|
115
|
+
Manage LinkedIn outreach campaigns.
|
|
116
|
+
|
|
117
|
+
| Command | Required flags | Optional flags | Description |
|
|
118
|
+
|---------|---------------|----------------|-------------|
|
|
119
|
+
| `list` | — | `--offset` `--limit` `--keyword` `--statuses` `--account-ids` | List campaigns (paginated) |
|
|
120
|
+
| `get` | `--campaign-id` | — | Get campaign by ID |
|
|
121
|
+
| `resume` | `--campaign-id` | — | Resume a paused campaign |
|
|
122
|
+
| `pause` | `--campaign-id` | — | Pause a running campaign |
|
|
123
|
+
| `add-leads` | `--campaign-id` `--leads-json` | `--resume-finished` `--resume-paused` | Add leads (V2, returns counts) |
|
|
124
|
+
| `stop-lead` | `--campaign-id` | `--lead-member-id` `--lead-url` | Stop lead progression |
|
|
125
|
+
| `get-leads` | `--campaign-id` | `--offset` `--limit` `--time-from` `--time-to` `--time-filter` | Get leads with analytics |
|
|
126
|
+
| `get-for-lead` | at least one of: `--email` `--linkedin-id` `--profile-url` | `--offset` `--limit` | Find campaigns for a lead |
|
|
105
127
|
|
|
106
128
|
### inbox (4 commands)
|
|
107
|
-
Read and respond to LinkedIn conversations
|
|
129
|
+
Read and respond to LinkedIn conversations.
|
|
108
130
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
131
|
+
| Command | Required flags | Optional flags | Description |
|
|
132
|
+
|---------|---------------|----------------|-------------|
|
|
133
|
+
| `list` | — | `--offset` `--limit` `--account-ids` `--campaign-ids` `--search` `--lead-linkedin-id` `--lead-profile-url` `--tags` `--seen` | List conversations |
|
|
134
|
+
| `get` | `--account-id` `--conversation-id` | — | Get conversation with messages |
|
|
135
|
+
| `send` | `--message` `--conversation-id` `--account-id` | `--subject` | Send a message |
|
|
136
|
+
| `set-seen` | `--conversation-id` `--account-id` `--seen` | — | Mark seen/unseen |
|
|
115
137
|
|
|
116
138
|
### accounts (2 commands)
|
|
117
139
|
Manage connected LinkedIn accounts.
|
|
118
140
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
141
|
+
| Command | Required flags | Optional flags | Description |
|
|
142
|
+
|---------|---------------|----------------|-------------|
|
|
143
|
+
| `list` | — | `--offset` `--limit` `--keyword` | List LinkedIn accounts |
|
|
144
|
+
| `get` | `--account-id` | — | Get account by ID |
|
|
123
145
|
|
|
124
146
|
### lists (9 commands)
|
|
125
147
|
Manage lead and company lists.
|
|
126
148
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
delete-leads-
|
|
135
|
-
|
|
136
|
-
get-
|
|
137
|
-
|
|
149
|
+
| Command | Required flags | Optional flags | Description |
|
|
150
|
+
|---------|---------------|----------------|-------------|
|
|
151
|
+
| `list` | — | `--offset` `--limit` `--keyword` `--list-type` `--campaign-ids` | List all lists |
|
|
152
|
+
| `get` | `--list-id` | — | Get list by ID |
|
|
153
|
+
| `create` | `--name` | `--type` | Create empty list |
|
|
154
|
+
| `get-leads` | `--list-id` | `--offset` `--limit` (max 1000) `--keyword` `--profile-url` `--linkedin-id` `--created-from` `--created-to` | Get leads from list |
|
|
155
|
+
| `add-leads` | `--list-id` `--leads-json` | — | Add leads (V2, returns counts) |
|
|
156
|
+
| `delete-leads` | `--list-id` `--member-ids` | — | Delete by member IDs |
|
|
157
|
+
| `delete-leads-by-url` | `--list-id` `--urls` | — | Delete by profile URLs |
|
|
158
|
+
| `get-companies` | `--list-id` | `--offset` `--limit` (max 1000) `--keyword` | Get companies from list |
|
|
159
|
+
| `get-for-lead` | at least one of: `--email` `--linkedin-id` `--profile-url` | `--offset` `--limit` | Find lists for a lead |
|
|
138
160
|
|
|
139
161
|
### stats (1 command)
|
|
140
162
|
Pull campaign analytics with day-by-day breakdown.
|
|
141
163
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
164
|
+
| Command | Required flags | Optional flags | Description |
|
|
165
|
+
|---------|---------------|----------------|-------------|
|
|
166
|
+
| `overview` | — | `--start-date` `--end-date` `--account-ids` `--campaign-ids` | Stats for date range |
|
|
167
|
+
|
|
168
|
+
**Note:** `--start-date` and `--end-date` default to the last 30 days if omitted. Just run `heyreach stats overview` for a quick summary.
|
|
145
169
|
|
|
146
170
|
### leads (4 commands)
|
|
147
171
|
Look up and tag individual leads.
|
|
148
172
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
173
|
+
| Command | Required flags | Optional flags | Description |
|
|
174
|
+
|---------|---------------|----------------|-------------|
|
|
175
|
+
| `get` | `--profile-url` | — | Get lead details |
|
|
176
|
+
| `add-tags` | `--tags` | `--profile-url` `--linkedin-id` `--create-if-missing` | Add tags to a lead |
|
|
177
|
+
| `get-tags` | `--profile-url` | — | Get tags (alphabetical) |
|
|
178
|
+
| `replace-tags` | `--tags` | `--profile-url` `--linkedin-id` `--create-if-missing` | Replace all tags |
|
|
179
|
+
|
|
180
|
+
**Note:** For `add-tags` and `replace-tags`, provide at least one of `--profile-url` or `--linkedin-id`. The `--create-if-missing` flag (default: true) auto-creates tags that don't exist yet.
|
|
155
181
|
|
|
156
182
|
### lead-tags (1 command)
|
|
157
183
|
Create workspace-level tags.
|
|
158
184
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
185
|
+
| Command | Required flags | Optional flags | Description |
|
|
186
|
+
|---------|---------------|----------------|-------------|
|
|
187
|
+
| `create` | `--tags-json` | — | Create tags with name + color |
|
|
188
|
+
|
|
189
|
+
Example: `heyreach lead-tags create --tags-json '[{"displayName":"Hot Lead","color":"Red"}]'`
|
|
162
190
|
|
|
163
191
|
### webhooks (5 commands)
|
|
164
192
|
Subscribe to real-time LinkedIn events.
|
|
165
193
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
194
|
+
| Command | Required flags | Optional flags | Description |
|
|
195
|
+
|---------|---------------|----------------|-------------|
|
|
196
|
+
| `create` | `--name` `--url` `--event-type` | `--campaign-ids` | Create webhook |
|
|
197
|
+
| `get` | `--webhook-id` | — | Get webhook by ID |
|
|
198
|
+
| `list` | — | `--offset` `--limit` | List all webhooks |
|
|
199
|
+
| `update` | `--webhook-id` | `--name` `--url` `--event-type` `--campaign-ids` `--active` | Update webhook |
|
|
200
|
+
| `delete` | `--webhook-id` | — | Delete webhook |
|
|
173
201
|
|
|
174
202
|
### network (2 commands)
|
|
175
203
|
Query LinkedIn network connections.
|
|
176
204
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
205
|
+
| Command | Required flags | Optional flags | Description |
|
|
206
|
+
|---------|---------------|----------------|-------------|
|
|
207
|
+
| `list` | `--sender-id` | `--page` `--page-size` | List connections (pageNumber pagination) |
|
|
208
|
+
| `check` | `--sender-id` + one of: `--profile-url` or `--linkedin-id` | — | Check if connected |
|
|
181
209
|
|
|
182
|
-
|
|
183
|
-
Organization management — requires Organization API key.
|
|
210
|
+
**Note:** Network commands use `--page`/`--page-size` instead of `--offset`/`--limit`.
|
|
184
211
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
workspace-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
212
|
+
### org (11 commands)
|
|
213
|
+
Organization management — requires Organization API key (`--org-key` or `HEYREACH_ORG_API_KEY`).
|
|
214
|
+
|
|
215
|
+
| Command | Required flags | Optional flags | Description |
|
|
216
|
+
|---------|---------------|----------------|-------------|
|
|
217
|
+
| `workspaces` | — | `--offset` `--limit` | List all workspaces |
|
|
218
|
+
| `create-workspace` | `--name` | `--seats-limit` | Create workspace |
|
|
219
|
+
| `update-workspace` | `--workspace-id` | `--name` `--seats-limit` | Update workspace |
|
|
220
|
+
| `api-keys` | `--workspace-id` | — | Get API keys for workspace |
|
|
221
|
+
| `create-api-key` | `--workspace-id` `--type` | — | Generate new API key |
|
|
222
|
+
| `users` | — | `--offset` `--limit` `--role` `--invitation-status` | List all org users |
|
|
223
|
+
| `get-user` | `--user-id` | — | Get user details |
|
|
224
|
+
| `workspace-users` | `--workspace-id` | `--offset` `--limit` `--role` `--invitation-status` | List workspace users |
|
|
225
|
+
| `invite-admins` | `--inviter-email` `--emails` | — | Invite org admins |
|
|
226
|
+
| `invite-members` | `--inviter-email` `--emails` `--workspace-ids` `--permissions-json` | — | Invite with permissions |
|
|
227
|
+
| `invite-managers` | `--inviter-email` `--emails` `--workspace-ids` | — | Invite external managers |
|
|
198
228
|
|
|
199
229
|
## Common Workflows
|
|
200
230
|
|
|
@@ -266,12 +296,14 @@ heyreach webhooks create --name "Connections" \
|
|
|
266
296
|
### Pull analytics
|
|
267
297
|
|
|
268
298
|
```bash
|
|
269
|
-
# Last 30 days overall stats
|
|
299
|
+
# Last 30 days overall stats (dates default automatically)
|
|
300
|
+
heyreach stats overview --pretty
|
|
301
|
+
|
|
302
|
+
# Custom date range
|
|
270
303
|
heyreach stats overview \
|
|
271
304
|
--start-date "2025-01-01T00:00:00Z" \
|
|
272
305
|
--end-date "2025-01-31T23:59:59Z" \
|
|
273
306
|
--pretty
|
|
274
|
-
# → { byDayStats: {...}, overallStats: { messagesSent, totalMessageReplies, ... } }
|
|
275
307
|
```
|
|
276
308
|
|
|
277
309
|
### Manage lists
|
|
@@ -324,10 +356,35 @@ heyreach campaigns list --offset 100 --limit 100
|
|
|
324
356
|
|
|
325
357
|
Response: `{ "totalCount": 250, "items": [...] }`
|
|
326
358
|
|
|
327
|
-
**Max items per request:** 100 (1000 for
|
|
359
|
+
**Max items per request:** 100 (1000 for `lists get-leads` and `lists get-companies`)
|
|
328
360
|
|
|
329
361
|
**Exception:** Network commands use `--page` and `--page-size` instead of offset/limit.
|
|
330
362
|
|
|
363
|
+
## Input Patterns
|
|
364
|
+
|
|
365
|
+
### Comma-separated lists
|
|
366
|
+
Arrays are passed as comma-separated strings:
|
|
367
|
+
```bash
|
|
368
|
+
--statuses "IN_PROGRESS,PAUSED"
|
|
369
|
+
--tags "hot,priority"
|
|
370
|
+
--campaign-ids "123,456,789"
|
|
371
|
+
--emails "a@co.com,b@co.com"
|
|
372
|
+
--urls "https://linkedin.com/in/one,https://linkedin.com/in/two"
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### JSON inputs
|
|
376
|
+
Complex nested data uses `--xxx-json` flags:
|
|
377
|
+
```bash
|
|
378
|
+
# Lead data for campaigns/lists
|
|
379
|
+
--leads-json '[{"lead":{"firstName":"Jane","profileUrl":"..."}}]'
|
|
380
|
+
|
|
381
|
+
# Tag creation
|
|
382
|
+
--tags-json '[{"displayName":"Hot","color":"Red"}]'
|
|
383
|
+
|
|
384
|
+
# Workspace permissions
|
|
385
|
+
--permissions-json '{"viewCampaigns":true,"editManageCampaigns":true}'
|
|
386
|
+
```
|
|
387
|
+
|
|
331
388
|
## Key Enums
|
|
332
389
|
|
|
333
390
|
**Campaign statuses:** DRAFT, IN_PROGRESS, PAUSED, FINISHED, CANCELED, FAILED, STARTING, SCHEDULED
|
|
@@ -383,3 +440,5 @@ MCP config for your AI assistant:
|
|
|
383
440
|
12. **Org commands need a separate key** — set `HEYREACH_ORG_API_KEY` for `heyreach org ...` commands
|
|
384
441
|
13. **Lead lookup is by profile URL** — use `--profile-url` to identify leads across most endpoints
|
|
385
442
|
14. **V2 endpoints are used by default** — `add-leads` returns `{addedLeadsCount, updatedLeadsCount, failedLeadsCount}` instead of just a number
|
|
443
|
+
15. **Error messages are parsed** — nested API validation errors are extracted into clean, readable messages
|
|
444
|
+
16. **Login validates keys** — `heyreach login` checks the key against the API before saving, so a successful login means the key works
|
package/dist/index.js
CHANGED
|
@@ -2647,7 +2647,7 @@ import { Command } from "commander";
|
|
|
2647
2647
|
var program = new Command();
|
|
2648
2648
|
program.name("heyreach").description(
|
|
2649
2649
|
"HeyReach CLI \u2014 manage LinkedIn campaigns, leads, lists, inbox, webhooks, and more from your terminal."
|
|
2650
|
-
).version("0.1.
|
|
2650
|
+
).version("0.1.5").option("--pretty", "Pretty-print JSON output").option("--quiet", "Suppress output, exit codes only").option("--fields <fields>", "Comma-separated fields to include in output").option("--api-key <key>", "HeyReach workspace API key").option("--org-key <key>", "HeyReach Organization API key");
|
|
2651
2651
|
registerAllCommands(program);
|
|
2652
2652
|
program.parse();
|
|
2653
2653
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../src/core/config.ts","../src/core/errors.ts","../src/core/auth.ts","../src/core/client.ts","../src/core/output.ts","../src/commands/campaigns/list.ts","../src/core/handler.ts","../src/commands/campaigns/get.ts","../src/commands/campaigns/resume.ts","../src/commands/campaigns/pause.ts","../src/commands/campaigns/add-leads.ts","../src/commands/campaigns/stop-lead.ts","../src/commands/campaigns/get-leads.ts","../src/commands/campaigns/get-for-lead.ts","../src/commands/campaigns/index.ts","../src/commands/inbox/list.ts","../src/commands/inbox/get.ts","../src/commands/inbox/send.ts","../src/commands/inbox/set-seen.ts","../src/commands/inbox/index.ts","../src/commands/accounts/list.ts","../src/commands/accounts/get.ts","../src/commands/accounts/index.ts","../src/commands/lists/get.ts","../src/commands/lists/list.ts","../src/commands/lists/create.ts","../src/commands/lists/get-leads.ts","../src/commands/lists/add-leads.ts","../src/commands/lists/delete-leads.ts","../src/commands/lists/delete-leads-by-url.ts","../src/commands/lists/get-companies.ts","../src/commands/lists/get-for-lead.ts","../src/commands/lists/index.ts","../src/commands/stats/overview.ts","../src/commands/stats/index.ts","../src/commands/leads/get.ts","../src/commands/leads/add-tags.ts","../src/commands/leads/get-tags.ts","../src/commands/leads/replace-tags.ts","../src/commands/leads/index.ts","../src/commands/lead-tags/create.ts","../src/commands/lead-tags/index.ts","../src/commands/webhooks/create.ts","../src/commands/webhooks/get.ts","../src/commands/webhooks/list.ts","../src/commands/webhooks/update.ts","../src/commands/webhooks/delete.ts","../src/commands/webhooks/index.ts","../src/commands/network/list.ts","../src/commands/network/check.ts","../src/commands/network/index.ts","../src/commands/org/api-keys.ts","../src/commands/org/create-api-key.ts","../src/commands/org/workspaces.ts","../src/commands/org/create-workspace.ts","../src/commands/org/update-workspace.ts","../src/commands/org/users.ts","../src/commands/org/get-user.ts","../src/commands/org/workspace-users.ts","../src/commands/org/invite-admins.ts","../src/commands/org/invite-members.ts","../src/commands/org/invite-managers.ts","../src/commands/org/index.ts","../src/mcp-entry.ts","../src/commands/index.ts","../src/index.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport type { HeyReachConfig } from './types.js';\n\nconst CONFIG_DIR = join(homedir(), '.heyreach');\nconst CONFIG_FILE = join(CONFIG_DIR, 'config.json');\n\nfunction ensureDir(): void {\n if (!existsSync(CONFIG_DIR)) {\n mkdirSync(CONFIG_DIR, { recursive: true });\n }\n}\n\nexport function loadConfig(): HeyReachConfig {\n try {\n if (!existsSync(CONFIG_FILE)) return {};\n const raw = readFileSync(CONFIG_FILE, 'utf-8');\n return JSON.parse(raw) as HeyReachConfig;\n } catch {\n return {};\n }\n}\n\nexport function saveConfig(config: Partial<HeyReachConfig>): void {\n ensureDir();\n const existing = loadConfig();\n const merged = { ...existing, ...config };\n writeFileSync(CONFIG_FILE, JSON.stringify(merged, null, 2) + '\\n', 'utf-8');\n}\n\nexport function deleteConfig(): void {\n try {\n if (existsSync(CONFIG_FILE)) unlinkSync(CONFIG_FILE);\n } catch {\n // ignore\n }\n}\n\nexport function getConfigDir(): string {\n return CONFIG_DIR;\n}\n\nexport function getConfigPath(): string {\n return CONFIG_FILE;\n}\n","export class HeyReachError extends Error {\n code: string;\n statusCode?: number;\n\n constructor(message: string, code: string, statusCode?: number) {\n super(message);\n this.name = 'HeyReachError';\n this.code = code;\n this.statusCode = statusCode;\n }\n}\n\nexport class AuthError extends HeyReachError {\n constructor(message = 'Authentication failed. Run \"heyreach login\" or set HEYREACH_API_KEY.') {\n super(message, 'AUTH_ERROR', 401);\n this.name = 'AuthError';\n }\n}\n\nexport class NotFoundError extends HeyReachError {\n constructor(message = 'Resource not found.') {\n super(message, 'NOT_FOUND', 404);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends HeyReachError {\n constructor(message = 'Validation failed.') {\n super(message, 'VALIDATION_ERROR', 422);\n this.name = 'ValidationError';\n }\n}\n\nexport class RateLimitError extends HeyReachError {\n retryAfter?: number;\n\n constructor(message = 'Rate limit exceeded (300 req/min). Try again later.', retryAfter?: number) {\n super(message, 'RATE_LIMIT', 429);\n this.name = 'RateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\nexport class ServerError extends HeyReachError {\n constructor(message = 'Server error. Try again later.') {\n super(message, 'SERVER_ERROR', 500);\n this.name = 'ServerError';\n }\n}\n\nexport function classifyHttpError(status: number, body: string): HeyReachError {\n const parsed = safeParse(body);\n const rawVal = parsed?.message || parsed?.error || body || `HTTP ${status} error`;\n const raw = typeof rawVal === 'string' ? rawVal : JSON.stringify(rawVal);\n const message = extractMessage(raw);\n\n if (status === 401 || status === 403) return new AuthError(message);\n if (status === 404) return new NotFoundError(message);\n if (status === 422) return new ValidationError(message);\n if (status === 429) return new RateLimitError(message);\n if (status >= 500) return new ServerError(message);\n return new HeyReachError(message, 'HTTP_ERROR', status);\n}\n\nfunction extractMessage(raw: string): string {\n // Handle nested JSON error strings like: {\"errors\":{\"AccountIds\":[\"The AccountIds field is required.\"]}}\n const nested = safeParse(raw);\n if (nested?.errors && typeof nested.errors === 'object') {\n const parts: string[] = [];\n for (const [field, msgs] of Object.entries(nested.errors as Record<string, unknown>)) {\n const msgList = Array.isArray(msgs) ? msgs.join('; ') : String(msgs);\n parts.push(`${field}: ${msgList}`);\n }\n if (parts.length > 0) return parts.join('. ');\n }\n if (nested?.errorMessage) return String(nested.errorMessage);\n return raw;\n}\n\nfunction safeParse(text: string): Record<string, unknown> | null {\n try {\n return JSON.parse(text);\n } catch {\n return null;\n }\n}\n\nexport function formatError(error: unknown): { error: string; code: string } {\n if (error instanceof HeyReachError) {\n return { error: error.message, code: error.code };\n }\n if (error instanceof Error) {\n return { error: error.message, code: 'UNKNOWN_ERROR' };\n }\n return { error: String(error), code: 'UNKNOWN_ERROR' };\n}\n","import { loadConfig } from './config.js';\nimport { AuthError } from './errors.js';\n\nconst BASE_URL = 'https://api.heyreach.io/api/public';\n\nexport interface AuthContext {\n apiKey: string;\n baseUrl: string;\n}\n\nexport function resolveAuth(opts?: { apiKey?: string }): AuthContext {\n const config = loadConfig();\n\n const apiKey =\n opts?.apiKey ??\n process.env.HEYREACH_API_KEY ??\n config.api_key;\n\n if (!apiKey) {\n throw new AuthError(\n 'No API key found. Run \"heyreach login\" or set HEYREACH_API_KEY.',\n );\n }\n\n return { apiKey, baseUrl: BASE_URL };\n}\n\nexport function resolveOrgAuth(opts?: { orgKey?: string }): AuthContext {\n const config = loadConfig();\n\n const apiKey =\n opts?.orgKey ??\n process.env.HEYREACH_ORG_API_KEY ??\n config.org_api_key;\n\n if (!apiKey) {\n throw new AuthError(\n 'No Organization API key found. Run \"heyreach login --org\" or set HEYREACH_ORG_API_KEY.',\n );\n }\n\n return { apiKey, baseUrl: BASE_URL };\n}\n","import type { HeyReachClient, HeyReachRequestOptions } from './types.js';\nimport type { AuthContext } from './auth.js';\nimport { classifyHttpError, RateLimitError } from './errors.js';\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst MAX_RETRIES = 3;\nconst INITIAL_BACKOFF_MS = 1_000;\n\nexport function createClient(auth: AuthContext): HeyReachClient {\n async function request(opts: HeyReachRequestOptions): Promise<unknown> {\n const url = buildUrl(auth.baseUrl, opts.path, opts.query);\n\n const headers: Record<string, string> = {\n 'X-API-KEY': auth.apiKey,\n Accept: 'application/json',\n };\n\n let bodyStr: string | undefined;\n if (opts.body && Object.keys(opts.body).length > 0) {\n headers['Content-Type'] = 'application/json';\n bodyStr = JSON.stringify(opts.body);\n }\n\n let lastError: Error | undefined;\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n try {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS);\n\n const res = await fetch(url, {\n method: opts.method,\n headers,\n body: bodyStr,\n signal: controller.signal,\n });\n\n clearTimeout(timeout);\n\n if (res.ok) {\n const text = await res.text();\n if (!text) return { success: true };\n try {\n return JSON.parse(text);\n } catch {\n return { data: text };\n }\n }\n\n const errorBody = await res.text();\n\n if (res.status === 429 || res.status >= 500) {\n lastError = classifyHttpError(res.status, errorBody);\n if (attempt < MAX_RETRIES) {\n const retryAfter =\n res.status === 429\n ? parseRetryAfter(res.headers.get('Retry-After'))\n : undefined;\n const backoff = retryAfter ?? INITIAL_BACKOFF_MS * Math.pow(2, attempt);\n await sleep(backoff);\n continue;\n }\n }\n\n throw classifyHttpError(res.status, errorBody);\n } catch (err) {\n if (err instanceof RateLimitError && attempt < MAX_RETRIES) {\n lastError = err;\n await sleep(INITIAL_BACKOFF_MS * Math.pow(2, attempt));\n continue;\n }\n if (err instanceof Error && err.name === 'AbortError') {\n lastError = new Error(`Request timed out after ${DEFAULT_TIMEOUT_MS}ms`);\n if (attempt < MAX_RETRIES) {\n await sleep(INITIAL_BACKOFF_MS * Math.pow(2, attempt));\n continue;\n }\n }\n throw err;\n }\n }\n\n throw lastError ?? new Error('Request failed after retries');\n }\n\n async function paginate(opts: HeyReachRequestOptions, maxPages = 10): Promise<unknown> {\n const allItems: unknown[] = [];\n let offset = 0;\n const limit = 100;\n\n for (let i = 0; i < maxPages; i++) {\n const body = { ...opts.body, offset, limit };\n const result = (await request({ ...opts, body })) as Record<string, unknown>;\n\n const items = result?.items as unknown[] | undefined;\n if (items) {\n allItems.push(...items);\n } else {\n return result;\n }\n\n const totalCount = result?.totalCount as number | undefined;\n if (!totalCount || allItems.length >= totalCount) break;\n\n offset += limit;\n }\n\n return { totalCount: allItems.length, items: allItems };\n }\n\n return { request, paginate };\n}\n\nfunction buildUrl(baseUrl: string, path: string, query?: Record<string, unknown>): string {\n const base = baseUrl.endsWith('/') ? baseUrl : baseUrl + '/';\n const cleanPath = path.startsWith('/') ? path.slice(1) : path;\n const url = new URL(cleanPath, base);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n}\n\nfunction parseRetryAfter(header: string | null): number | undefined {\n if (!header) return undefined;\n const seconds = parseInt(header, 10);\n return isNaN(seconds) ? undefined : seconds * 1000;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type { GlobalOptions } from './types.js';\n\nexport function output(data: unknown, opts?: GlobalOptions): void {\n if (opts?.quiet) return;\n\n let result = data;\n\n if (opts?.fields && typeof data === 'object' && data !== null) {\n result = projectFields(data, opts.fields);\n }\n\n const json = opts?.pretty\n ? JSON.stringify(result, null, 2)\n : JSON.stringify(result);\n\n console.log(json);\n}\n\nexport function outputError(error: { error: string; code: string }, opts?: GlobalOptions): void {\n if (opts?.quiet) {\n process.exitCode = 1;\n return;\n }\n\n const json = opts?.pretty\n ? JSON.stringify(error, null, 2)\n : JSON.stringify(error);\n\n console.error(json);\n process.exitCode = 1;\n}\n\nfunction projectFields(data: unknown, fields: string): unknown {\n const keys = fields.split(',').map((k) => k.trim());\n\n if (Array.isArray(data)) {\n return data.map((item) => pickKeys(item, keys));\n }\n\n if (typeof data === 'object' && data !== null && 'items' in data) {\n const inner = (data as Record<string, unknown>).items;\n if (Array.isArray(inner)) {\n return { ...data as object, items: inner.map((item) => pickKeys(item, keys)) };\n }\n }\n\n return pickKeys(data, keys);\n}\n\nfunction pickKeys(obj: unknown, keys: string[]): unknown {\n if (typeof obj !== 'object' || obj === null) return obj;\n const record = obj as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const key of keys) {\n if (key in record) result[key] = record[key];\n }\n return result;\n}\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsListCommand: CommandDefinition = {\n name: 'campaigns_list',\n group: 'campaigns',\n subcommand: 'list',\n description: 'Get a paginated list of all campaigns. Up to 100 per request.',\n examples: [\n 'heyreach campaigns list',\n 'heyreach campaigns list --keyword \"outbound\" --pretty',\n 'heyreach campaigns list --statuses IN_PROGRESS,PAUSED',\n ],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page (max 100)'),\n keyword: z.string().optional().describe('Filter by campaign name'),\n statuses: z.string().optional().describe('Comma-separated statuses: DRAFT,IN_PROGRESS,PAUSED,FINISHED,CANCELED,FAILED,STARTING,SCHEDULED'),\n accountIds: z.string().optional().describe('Comma-separated LinkedIn account IDs'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page (max 100)' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Filter by campaign name' },\n { field: 'statuses', flags: '--statuses <list>', description: 'Comma-separated statuses' },\n { field: 'accountIds', flags: '--account-ids <list>', description: 'Comma-separated LinkedIn account IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/GetAll' },\n fieldMappings: { offset: 'body', limit: 'body', keyword: 'body', statuses: 'body', accountIds: 'body' },\n handler: async (input, client) => {\n const body: Record<string, unknown> = {\n offset: input.offset,\n limit: input.limit,\n };\n if (input.keyword) body.keyword = input.keyword;\n if (input.statuses) body.statuses = input.statuses.split(',').map((s: string) => s.trim());\n if (input.accountIds) body.accountIds = input.accountIds.split(',').map((s: string) => Number(s.trim()));\n return client.request({ method: 'POST', path: '/campaign/GetAll', body });\n },\n};\n","import type { CommandDefinition, HeyReachClient } from './types.js';\n\nexport async function executeCommand(\n cmdDef: CommandDefinition,\n input: Record<string, unknown>,\n client: HeyReachClient,\n): Promise<unknown> {\n let path = cmdDef.endpoint.path;\n const query: Record<string, unknown> = {};\n const body: Record<string, unknown> = {};\n\n for (const [field, location] of Object.entries(cmdDef.fieldMappings)) {\n const value = input[field];\n if (value === undefined || value === null) continue;\n\n switch (location) {\n case 'path':\n path = path.replace(`{${field}}`, encodeURIComponent(String(value)));\n break;\n case 'query':\n query[field] = value;\n break;\n case 'body':\n body[field] = value;\n break;\n }\n }\n\n return client.request({\n method: cmdDef.endpoint.method,\n path,\n query: Object.keys(query).length > 0 ? query : undefined,\n body: Object.keys(body).length > 0 ? body : undefined,\n });\n}\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsGetCommand: CommandDefinition = {\n name: 'campaigns_get',\n group: 'campaigns',\n subcommand: 'get',\n description: 'Get a campaign by ID.',\n examples: ['heyreach campaigns get --campaign-id 12345 --pretty'],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/campaign/GetById' },\n fieldMappings: { campaignId: 'query' },\n handler: (input, client) => executeCommand(campaignsGetCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsResumeCommand: CommandDefinition = {\n name: 'campaigns_resume',\n group: 'campaigns',\n subcommand: 'resume',\n description: 'Resume a paused campaign.',\n examples: ['heyreach campaigns resume --campaign-id 12345'],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/Resume' },\n fieldMappings: { campaignId: 'query' },\n handler: (input, client) => executeCommand(campaignsResumeCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsPauseCommand: CommandDefinition = {\n name: 'campaigns_pause',\n group: 'campaigns',\n subcommand: 'pause',\n description: 'Pause a running campaign.',\n examples: ['heyreach campaigns pause --campaign-id 12345'],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/Pause' },\n fieldMappings: { campaignId: 'query' },\n handler: (input, client) => executeCommand(campaignsPauseCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const campaignsAddLeadsCommand: CommandDefinition = {\n name: 'campaigns_add_leads',\n group: 'campaigns',\n subcommand: 'add-leads',\n description: 'Add leads to a campaign (V2 — returns detailed counts). Up to 100 leads per request. Accepts JSON array via --leads-json.',\n examples: [\n 'heyreach campaigns add-leads --campaign-id 123 --leads-json \\'[{\"lead\":{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"profileUrl\":\"https://linkedin.com/in/janedoe\"}}]\\'',\n ],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n leadsJson: z.string().describe('JSON array of accountLeadPairs'),\n resumeFinishedCampaign: z.coerce.boolean().optional().describe('Resume if campaign finished'),\n resumePausedCampaign: z.coerce.boolean().optional().describe('Resume if campaign paused'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n { field: 'leadsJson', flags: '--leads-json <json>', description: 'JSON array of accountLeadPairs' },\n { field: 'resumeFinishedCampaign', flags: '--resume-finished', description: 'Resume if campaign finished' },\n { field: 'resumePausedCampaign', flags: '--resume-paused', description: 'Resume if campaign paused' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/AddLeadsToCampaignV2' },\n fieldMappings: { campaignId: 'body', leadsJson: 'body', resumeFinishedCampaign: 'body', resumePausedCampaign: 'body' },\n handler: async (input, client) => {\n const accountLeadPairs = JSON.parse(input.leadsJson as string);\n const body: Record<string, unknown> = {\n campaignId: input.campaignId,\n accountLeadPairs,\n };\n if (input.resumeFinishedCampaign !== undefined) body.resumeFinishedCampaign = input.resumeFinishedCampaign;\n if (input.resumePausedCampaign !== undefined) body.resumePausedCampaign = input.resumePausedCampaign;\n return client.request({ method: 'POST', path: '/campaign/AddLeadsToCampaignV2', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsStopLeadCommand: CommandDefinition = {\n name: 'campaigns_stop_lead',\n group: 'campaigns',\n subcommand: 'stop-lead',\n description: 'Stop the progression of a lead in a campaign.',\n examples: [\n 'heyreach campaigns stop-lead --campaign-id 123 --lead-url \"https://linkedin.com/in/janedoe\"',\n 'heyreach campaigns stop-lead --campaign-id 123 --lead-member-id \"ABC123\"',\n ],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n leadMemberId: z.string().optional().describe('LinkedIn member ID'),\n leadUrl: z.string().optional().describe('LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n { field: 'leadMemberId', flags: '--lead-member-id <id>', description: 'LinkedIn member ID' },\n { field: 'leadUrl', flags: '--lead-url <url>', description: 'LinkedIn profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/StopLeadInCampaign' },\n fieldMappings: { campaignId: 'body', leadMemberId: 'body', leadUrl: 'body' },\n handler: (input, client) => executeCommand(campaignsStopLeadCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsGetLeadsCommand: CommandDefinition = {\n name: 'campaigns_get_leads',\n group: 'campaigns',\n subcommand: 'get-leads',\n description: 'Get leads from a campaign (Lead Analytics). Shows pending leads about to start executing.',\n examples: ['heyreach campaigns get-leads --campaign-id 123 --pretty'],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n timeFrom: z.string().optional().describe('Start time (ISO 8601)'),\n timeTo: z.string().optional().describe('End time (ISO 8601)'),\n timeFilter: z.string().optional().describe('Time filter: CreationTime|Everywhere|LastActionTakenTime|FailedTime|LastActionTakenOrFailedTime'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'timeFrom', flags: '--time-from <iso>', description: 'Start time (ISO 8601)' },\n { field: 'timeTo', flags: '--time-to <iso>', description: 'End time (ISO 8601)' },\n { field: 'timeFilter', flags: '--time-filter <type>', description: 'Time filter type' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/GetLeadsFromCampaign' },\n fieldMappings: { campaignId: 'body', offset: 'body', limit: 'body', timeFrom: 'body', timeTo: 'body', timeFilter: 'body' },\n handler: (input, client) => executeCommand(campaignsGetLeadsCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\nimport { ValidationError } from '../../core/errors.js';\n\nexport const campaignsGetForLeadCommand: CommandDefinition = {\n name: 'campaigns_get_for_lead',\n group: 'campaigns',\n subcommand: 'get-for-lead',\n description: 'Get campaigns where a specific lead is enrolled.',\n examples: [\n 'heyreach campaigns get-for-lead --profile-url \"https://linkedin.com/in/janedoe\" --pretty',\n 'heyreach campaigns get-for-lead --email \"jane@example.com\"',\n ],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n email: z.string().optional().describe('Lead email address'),\n linkedinId: z.string().optional().describe('Lead LinkedIn ID'),\n profileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'email', flags: '--email <email>', description: 'Lead email address' },\n { field: 'linkedinId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn ID' },\n { field: 'profileUrl', flags: '--profile-url <url>', description: 'Lead LinkedIn profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/GetCampaignsForLead' },\n fieldMappings: { offset: 'body', limit: 'body', email: 'body', linkedinId: 'body', profileUrl: 'body' },\n handler: (input, client) => {\n if (!input.email && !input.linkedinId && !input.profileUrl) {\n throw new ValidationError('At least one of --email, --linkedin-id, or --profile-url is required.');\n }\n return executeCommand(campaignsGetForLeadCommand, input, client);\n },\n};\n","import { campaignsListCommand } from './list.js';\nimport { campaignsGetCommand } from './get.js';\nimport { campaignsResumeCommand } from './resume.js';\nimport { campaignsPauseCommand } from './pause.js';\nimport { campaignsAddLeadsCommand } from './add-leads.js';\nimport { campaignsStopLeadCommand } from './stop-lead.js';\nimport { campaignsGetLeadsCommand } from './get-leads.js';\nimport { campaignsGetForLeadCommand } from './get-for-lead.js';\n\nexport const campaignCommands = [\n campaignsListCommand,\n campaignsGetCommand,\n campaignsResumeCommand,\n campaignsPauseCommand,\n campaignsAddLeadsCommand,\n campaignsStopLeadCommand,\n campaignsGetLeadsCommand,\n campaignsGetForLeadCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const inboxListCommand: CommandDefinition = {\n name: 'inbox_list',\n group: 'inbox',\n subcommand: 'list',\n description: 'Get a paginated list of LinkedIn conversations. Up to 100 per request.',\n examples: [\n 'heyreach inbox list --pretty',\n 'heyreach inbox list --search \"product demo\" --seen false',\n ],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n linkedInAccountIds: z.string().optional().describe('Comma-separated LinkedIn account IDs'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs'),\n searchString: z.string().optional().describe('Search conversations'),\n leadLinkedInId: z.string().optional().describe('Filter by lead LinkedIn ID'),\n leadProfileUrl: z.string().optional().describe('Filter by lead profile URL'),\n tags: z.string().optional().describe('Comma-separated lead tags'),\n seen: z.string().optional().describe('Filter by seen status: true/false'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'linkedInAccountIds', flags: '--account-ids <list>', description: 'Comma-separated LinkedIn account IDs' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n { field: 'searchString', flags: '--search <text>', description: 'Search conversations' },\n { field: 'leadLinkedInId', flags: '--lead-linkedin-id <id>', description: 'Filter by lead LinkedIn ID' },\n { field: 'leadProfileUrl', flags: '--lead-profile-url <url>', description: 'Filter by lead profile URL' },\n { field: 'tags', flags: '--tags <list>', description: 'Comma-separated lead tags' },\n { field: 'seen', flags: '--seen <bool>', description: 'Filter by seen status' },\n ],\n },\n endpoint: { method: 'POST', path: '/inbox/GetConversationsV2' },\n fieldMappings: {},\n handler: async (input, client) => {\n const filters: Record<string, unknown> = {};\n if (input.linkedInAccountIds) filters.linkedInAccountIds = input.linkedInAccountIds.split(',').map((s: string) => Number(s.trim()));\n if (input.campaignIds) filters.campaignIds = input.campaignIds.split(',').map((s: string) => Number(s.trim()));\n if (input.searchString) filters.searchString = input.searchString;\n if (input.leadLinkedInId) filters.leadLinkedInId = input.leadLinkedInId;\n if (input.leadProfileUrl) filters.leadProfileUrl = input.leadProfileUrl;\n if (input.tags) filters.tags = input.tags.split(',').map((s: string) => s.trim());\n if (input.seen !== undefined) filters.seen = input.seen === 'true';\n return client.request({\n method: 'POST',\n path: '/inbox/GetConversationsV2',\n body: { offset: input.offset, limit: input.limit, filters },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const inboxGetCommand: CommandDefinition = {\n name: 'inbox_get',\n group: 'inbox',\n subcommand: 'get',\n description: 'Get a LinkedIn conversation with messages by account ID and conversation ID.',\n examples: ['heyreach inbox get --account-id 123 --conversation-id \"abc-def\"'],\n inputSchema: z.object({\n accountId: z.coerce.number().describe('LinkedIn account ID'),\n conversationId: z.string().describe('Conversation ID'),\n }),\n cliMappings: {\n options: [\n { field: 'accountId', flags: '--account-id <id>', description: 'LinkedIn account ID' },\n { field: 'conversationId', flags: '--conversation-id <id>', description: 'Conversation ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/inbox/GetChatroom/{accountId}/{conversationId}' },\n fieldMappings: { accountId: 'path', conversationId: 'path' },\n handler: async (input, client) => {\n return client.request({\n method: 'GET',\n path: `/inbox/GetChatroom/${encodeURIComponent(String(input.accountId))}/${encodeURIComponent(String(input.conversationId))}`,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const inboxSendCommand: CommandDefinition = {\n name: 'inbox_send',\n group: 'inbox',\n subcommand: 'send',\n description: 'Send a message to a LinkedIn conversation.',\n examples: ['heyreach inbox send --conversation-id \"abc\" --account-id 123 --message \"Hello!\"'],\n inputSchema: z.object({\n message: z.string().describe('Message text'),\n conversationId: z.string().describe('Conversation ID'),\n linkedInAccountId: z.coerce.number().describe('LinkedIn account ID'),\n subject: z.string().optional().describe('Message subject'),\n }),\n cliMappings: {\n options: [\n { field: 'message', flags: '--message <text>', description: 'Message text' },\n { field: 'conversationId', flags: '--conversation-id <id>', description: 'Conversation ID' },\n { field: 'linkedInAccountId', flags: '--account-id <id>', description: 'LinkedIn account ID' },\n { field: 'subject', flags: '--subject <text>', description: 'Message subject' },\n ],\n },\n endpoint: { method: 'POST', path: '/inbox/SendMessage' },\n fieldMappings: { message: 'body', conversationId: 'body', linkedInAccountId: 'body', subject: 'body' },\n handler: (input, client) => executeCommand(inboxSendCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const inboxSetSeenCommand: CommandDefinition = {\n name: 'inbox_set_seen',\n group: 'inbox',\n subcommand: 'set-seen',\n description: 'Mark a conversation as seen or unseen.',\n examples: ['heyreach inbox set-seen --conversation-id \"abc\" --account-id 123 --seen true'],\n inputSchema: z.object({\n conversationId: z.string().describe('Conversation ID'),\n linkedInAccountId: z.coerce.number().describe('LinkedIn account ID'),\n seen: z.coerce.boolean().describe('Mark as seen (true) or unseen (false)'),\n }),\n cliMappings: {\n options: [\n { field: 'conversationId', flags: '--conversation-id <id>', description: 'Conversation ID' },\n { field: 'linkedInAccountId', flags: '--account-id <id>', description: 'LinkedIn account ID' },\n { field: 'seen', flags: '--seen <bool>', description: 'Seen status (true/false)' },\n ],\n },\n endpoint: { method: 'POST', path: '/inbox/SetSeenStatus' },\n fieldMappings: { conversationId: 'body', linkedInAccountId: 'body', seen: 'body' },\n handler: (input, client) => executeCommand(inboxSetSeenCommand, input, client),\n};\n","import { inboxListCommand } from './list.js';\nimport { inboxGetCommand } from './get.js';\nimport { inboxSendCommand } from './send.js';\nimport { inboxSetSeenCommand } from './set-seen.js';\n\nexport const inboxCommands = [\n inboxListCommand,\n inboxGetCommand,\n inboxSendCommand,\n inboxSetSeenCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const accountsListCommand: CommandDefinition = {\n name: 'accounts_list',\n group: 'accounts',\n subcommand: 'list',\n description: 'Get a paginated list of all LinkedIn accounts. Up to 100 per request.',\n examples: ['heyreach accounts list --pretty', 'heyreach accounts list --keyword \"john\"'],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n keyword: z.string().optional().describe('Search by account name'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Search by account name' },\n ],\n },\n endpoint: { method: 'POST', path: '/li_account/GetAll' },\n fieldMappings: { offset: 'body', limit: 'body', keyword: 'body' },\n handler: (input, client) => executeCommand(accountsListCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const accountsGetCommand: CommandDefinition = {\n name: 'accounts_get',\n group: 'accounts',\n subcommand: 'get',\n description: 'Get a LinkedIn account by ID.',\n examples: ['heyreach accounts get --account-id 123 --pretty'],\n inputSchema: z.object({\n accountId: z.coerce.number().describe('LinkedIn account ID'),\n }),\n cliMappings: {\n options: [\n { field: 'accountId', flags: '--account-id <id>', description: 'LinkedIn account ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/li_account/GetById' },\n fieldMappings: { accountId: 'query' },\n handler: (input, client) => executeCommand(accountsGetCommand, input, client),\n};\n","import { accountsListCommand } from './list.js';\nimport { accountsGetCommand } from './get.js';\n\nexport const accountCommands = [\n accountsListCommand,\n accountsGetCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const listsGetCommand: CommandDefinition = {\n name: 'lists_get',\n group: 'lists',\n subcommand: 'get',\n description: 'Get a lead or company list by ID.',\n examples: ['heyreach lists get --list-id 456 --pretty'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/list/GetById' },\n fieldMappings: { listId: 'query' },\n handler: (input, client) => executeCommand(listsGetCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const listsListCommand: CommandDefinition = {\n name: 'lists_list',\n group: 'lists',\n subcommand: 'list',\n description: 'Get a paginated list of all lead and company lists. Up to 100 per request.',\n examples: [\n 'heyreach lists list --pretty',\n 'heyreach lists list --list-type USER_LIST',\n ],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n keyword: z.string().optional().describe('Search by list name'),\n listType: z.string().optional().describe('Filter by type: USER_LIST or COMPANY_LIST'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Search by list name' },\n { field: 'listType', flags: '--list-type <type>', description: 'USER_LIST or COMPANY_LIST' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/GetAll' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = { offset: input.offset, limit: input.limit };\n if (input.keyword) body.keyword = input.keyword;\n if (input.listType) body.listType = input.listType;\n if (input.campaignIds) body.campaignIds = input.campaignIds.split(',').map((s: string) => Number(s.trim()));\n return client.request({ method: 'POST', path: '/list/GetAll', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const listsCreateCommand: CommandDefinition = {\n name: 'lists_create',\n group: 'lists',\n subcommand: 'create',\n description: 'Create an empty lead or company list.',\n examples: [\n 'heyreach lists create --name \"Q1 Prospects\"',\n 'heyreach lists create --name \"Target Companies\" --type COMPANY_LIST',\n ],\n inputSchema: z.object({\n name: z.string().describe('List name'),\n type: z.string().optional().describe('List type: USER_LIST (default) or COMPANY_LIST'),\n }),\n cliMappings: {\n options: [\n { field: 'name', flags: '--name <name>', description: 'List name' },\n { field: 'type', flags: '--type <type>', description: 'USER_LIST or COMPANY_LIST' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/CreateEmptyList' },\n fieldMappings: { name: 'body', type: 'body' },\n handler: (input, client) => executeCommand(listsCreateCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const listsGetLeadsCommand: CommandDefinition = {\n name: 'lists_get_leads',\n group: 'lists',\n subcommand: 'get-leads',\n description: 'Get a paginated list of leads from a lead list. Up to 1000 per request.',\n examples: ['heyreach lists get-leads --list-id 456 --pretty'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(1000).default(100).describe('Items per page (max 1000)'),\n keyword: z.string().optional().describe('Search leads'),\n leadProfileUrl: z.string().optional().describe('Filter by profile URL'),\n leadLinkedInId: z.string().optional().describe('Filter by LinkedIn ID'),\n createdFrom: z.string().optional().describe('Created from (ISO 8601)'),\n createdTo: z.string().optional().describe('Created to (ISO 8601)'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Search leads' },\n { field: 'leadProfileUrl', flags: '--profile-url <url>', description: 'Filter by profile URL' },\n { field: 'leadLinkedInId', flags: '--linkedin-id <id>', description: 'Filter by LinkedIn ID' },\n { field: 'createdFrom', flags: '--created-from <iso>', description: 'Created from (ISO 8601)' },\n { field: 'createdTo', flags: '--created-to <iso>', description: 'Created to (ISO 8601)' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/GetLeadsFromList' },\n fieldMappings: { listId: 'body', offset: 'body', limit: 'body', keyword: 'body', leadProfileUrl: 'body', leadLinkedInId: 'body', createdFrom: 'body', createdTo: 'body' },\n handler: (input, client) => executeCommand(listsGetLeadsCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const listsAddLeadsCommand: CommandDefinition = {\n name: 'lists_add_leads',\n group: 'lists',\n subcommand: 'add-leads',\n description: 'Add leads to a lead list (V2 — returns detailed counts). Up to 100 per request. Accepts JSON array via --leads-json.',\n examples: [\n 'heyreach lists add-leads --list-id 456 --leads-json \\'[{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"profileUrl\":\"https://linkedin.com/in/janedoe\"}]\\'',\n ],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n leadsJson: z.string().describe('JSON array of lead objects'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'leadsJson', flags: '--leads-json <json>', description: 'JSON array of lead objects' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/AddLeadsToListV2' },\n fieldMappings: {},\n handler: async (input, client) => {\n const leads = JSON.parse(input.leadsJson as string);\n return client.request({\n method: 'POST',\n path: '/list/AddLeadsToListV2',\n body: { listId: input.listId, leads },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const listsDeleteLeadsCommand: CommandDefinition = {\n name: 'lists_delete_leads',\n group: 'lists',\n subcommand: 'delete-leads',\n description: 'Delete leads from a list by LinkedIn member IDs.',\n examples: ['heyreach lists delete-leads --list-id 456 --member-ids \"id1,id2,id3\"'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n memberIds: z.string().describe('Comma-separated LinkedIn member IDs'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'memberIds', flags: '--member-ids <list>', description: 'Comma-separated LinkedIn member IDs' },\n ],\n },\n endpoint: { method: 'DELETE', path: '/list/DeleteLeadsFromList' },\n fieldMappings: {},\n handler: async (input, client) => {\n const leadMemberIds = (input.memberIds as string).split(',').map((s) => s.trim());\n return client.request({\n method: 'DELETE',\n path: '/list/DeleteLeadsFromList',\n body: { listId: input.listId, leadMemberIds },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const listsDeleteLeadsByUrlCommand: CommandDefinition = {\n name: 'lists_delete_leads_by_url',\n group: 'lists',\n subcommand: 'delete-leads-by-url',\n description: 'Delete leads from a list by LinkedIn profile URLs.',\n examples: ['heyreach lists delete-leads-by-url --list-id 456 --urls \"https://linkedin.com/in/jane,https://linkedin.com/in/john\"'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n urls: z.string().describe('Comma-separated LinkedIn profile URLs'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'urls', flags: '--urls <list>', description: 'Comma-separated LinkedIn profile URLs' },\n ],\n },\n endpoint: { method: 'DELETE', path: '/list/DeleteLeadsFromListByProfileUrl' },\n fieldMappings: {},\n handler: async (input, client) => {\n const profileUrls = (input.urls as string).split(',').map((s) => s.trim());\n return client.request({\n method: 'DELETE',\n path: '/list/DeleteLeadsFromListByProfileUrl',\n body: { listId: input.listId, profileUrls },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const listsGetCompaniesCommand: CommandDefinition = {\n name: 'lists_get_companies',\n group: 'lists',\n subcommand: 'get-companies',\n description: 'Get a paginated list of companies from a company list. Up to 1000 per request.',\n examples: ['heyreach lists get-companies --list-id 789 --pretty'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(1000).default(100).describe('Items per page (max 1000)'),\n keyword: z.string().optional().describe('Search companies'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Search companies' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/GetCompaniesFromList' },\n fieldMappings: { listId: 'body', offset: 'body', limit: 'body', keyword: 'body' },\n handler: (input, client) => executeCommand(listsGetCompaniesCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\nimport { ValidationError } from '../../core/errors.js';\n\nexport const listsGetForLeadCommand: CommandDefinition = {\n name: 'lists_get_for_lead',\n group: 'lists',\n subcommand: 'get-for-lead',\n description: 'Get lists associated with a specific lead.',\n examples: ['heyreach lists get-for-lead --profile-url \"https://linkedin.com/in/janedoe\"'],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n email: z.string().optional().describe('Lead email'),\n linkedinId: z.string().optional().describe('Lead LinkedIn ID'),\n profileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'email', flags: '--email <email>', description: 'Lead email' },\n { field: 'linkedinId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn ID' },\n { field: 'profileUrl', flags: '--profile-url <url>', description: 'Lead profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/GetListsForLead' },\n fieldMappings: { offset: 'body', limit: 'body', email: 'body', linkedinId: 'body', profileUrl: 'body' },\n handler: (input, client) => {\n if (!input.email && !input.linkedinId && !input.profileUrl) {\n throw new ValidationError('At least one of --email, --linkedin-id, or --profile-url is required.');\n }\n return executeCommand(listsGetForLeadCommand, input, client);\n },\n};\n","import { listsGetCommand } from './get.js';\nimport { listsListCommand } from './list.js';\nimport { listsCreateCommand } from './create.js';\nimport { listsGetLeadsCommand } from './get-leads.js';\nimport { listsAddLeadsCommand } from './add-leads.js';\nimport { listsDeleteLeadsCommand } from './delete-leads.js';\nimport { listsDeleteLeadsByUrlCommand } from './delete-leads-by-url.js';\nimport { listsGetCompaniesCommand } from './get-companies.js';\nimport { listsGetForLeadCommand } from './get-for-lead.js';\n\nexport const listCommands = [\n listsGetCommand,\n listsListCommand,\n listsCreateCommand,\n listsGetLeadsCommand,\n listsAddLeadsCommand,\n listsDeleteLeadsCommand,\n listsDeleteLeadsByUrlCommand,\n listsGetCompaniesCommand,\n listsGetForLeadCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const statsOverviewCommand: CommandDefinition = {\n name: 'stats_overview',\n group: 'stats',\n subcommand: 'overview',\n description: 'Get overall stats with day-by-day breakdown for specified date range.',\n examples: [\n 'heyreach stats overview --start-date 2025-01-01 --end-date 2025-01-31 --pretty',\n 'heyreach stats overview --start-date 2025-01-01 --end-date 2025-01-31 --campaign-ids \"1,2,3\"',\n ],\n inputSchema: z.object({\n startDate: z.string().optional().describe('Start date (ISO 8601). Defaults to 30 days ago.'),\n endDate: z.string().optional().describe('End date (ISO 8601). Defaults to today.'),\n accountIds: z.string().optional().describe('Comma-separated LinkedIn account IDs (empty = all)'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs (empty = all)'),\n }),\n cliMappings: {\n options: [\n { field: 'startDate', flags: '--start-date <iso>', description: 'Start date (ISO 8601)' },\n { field: 'endDate', flags: '--end-date <iso>', description: 'End date (ISO 8601)' },\n { field: 'accountIds', flags: '--account-ids <list>', description: 'Comma-separated LinkedIn account IDs' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/stats/GetOverallStats' },\n fieldMappings: {},\n handler: async (input, client) => {\n const now = new Date();\n const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n const body: Record<string, unknown> = {\n startDate: input.startDate ?? thirtyDaysAgo.toISOString(),\n endDate: input.endDate ?? now.toISOString(),\n accountIds: input.accountIds ? input.accountIds.split(',').map((s: string) => Number(s.trim())) : [],\n campaignIds: input.campaignIds ? input.campaignIds.split(',').map((s: string) => Number(s.trim())) : [],\n };\n return client.request({ method: 'POST', path: '/stats/GetOverallStats', body });\n },\n};\n","import { statsOverviewCommand } from './overview.js';\n\nexport const statsCommands = [statsOverviewCommand];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const leadsGetCommand: CommandDefinition = {\n name: 'leads_get',\n group: 'leads',\n subcommand: 'get',\n description: 'Get lead details by LinkedIn profile URL.',\n examples: ['heyreach leads get --profile-url \"https://linkedin.com/in/janedoe\" --pretty'],\n inputSchema: z.object({\n profileUrl: z.string().describe('LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'profileUrl', flags: '--profile-url <url>', description: 'LinkedIn profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead/GetLead' },\n fieldMappings: { profileUrl: 'body' },\n handler: (input, client) => executeCommand(leadsGetCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const leadsAddTagsCommand: CommandDefinition = {\n name: 'leads_add_tags',\n group: 'leads',\n subcommand: 'add-tags',\n description: 'Add tags to a lead. Existing tags unchanged.',\n examples: ['heyreach leads add-tags --profile-url \"https://linkedin.com/in/jane\" --tags \"hot,priority\" --create-if-missing'],\n inputSchema: z.object({\n tags: z.string().describe('Comma-separated tag names'),\n createTagIfNotExisting: z.coerce.boolean().default(true).describe('Create tag if it does not exist'),\n leadProfileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n leadLinkedInId: z.string().optional().describe('Lead LinkedIn member ID'),\n }),\n cliMappings: {\n options: [\n { field: 'tags', flags: '--tags <list>', description: 'Comma-separated tag names' },\n { field: 'createTagIfNotExisting', flags: '--create-if-missing', description: 'Create tag if it does not exist' },\n { field: 'leadProfileUrl', flags: '--profile-url <url>', description: 'Lead LinkedIn profile URL' },\n { field: 'leadLinkedInId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn member ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead/AddTags' },\n fieldMappings: {},\n handler: async (input, client) => {\n const tagList = (input.tags as string).split(',').map((s) => s.trim());\n const body: Record<string, unknown> = {\n tags: tagList,\n createTagIfNotExisting: input.createTagIfNotExisting,\n };\n if (input.leadProfileUrl) body.leadProfileUrl = input.leadProfileUrl;\n if (input.leadLinkedInId) body.leadLinkedInId = input.leadLinkedInId;\n return client.request({ method: 'POST', path: '/lead/AddTags', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const leadsGetTagsCommand: CommandDefinition = {\n name: 'leads_get_tags',\n group: 'leads',\n subcommand: 'get-tags',\n description: 'Get tags for a lead, alphabetically sorted.',\n examples: ['heyreach leads get-tags --profile-url \"https://linkedin.com/in/janedoe\"'],\n inputSchema: z.object({\n profileUrl: z.string().describe('LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'profileUrl', flags: '--profile-url <url>', description: 'LinkedIn profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead/GetTags' },\n fieldMappings: { profileUrl: 'body' },\n handler: (input, client) => executeCommand(leadsGetTagsCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const leadsReplaceTagsCommand: CommandDefinition = {\n name: 'leads_replace_tags',\n group: 'leads',\n subcommand: 'replace-tags',\n description: 'Remove existing tags and replace with new tags.',\n examples: ['heyreach leads replace-tags --profile-url \"https://linkedin.com/in/jane\" --tags \"vip,enterprise\"'],\n inputSchema: z.object({\n tags: z.string().describe('Comma-separated tag names'),\n createTagIfNotExisting: z.coerce.boolean().default(true).describe('Create tag if it does not exist'),\n leadProfileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n leadLinkedInId: z.string().optional().describe('Lead LinkedIn member ID'),\n }),\n cliMappings: {\n options: [\n { field: 'tags', flags: '--tags <list>', description: 'Comma-separated tag names' },\n { field: 'createTagIfNotExisting', flags: '--create-if-missing', description: 'Create tag if it does not exist' },\n { field: 'leadProfileUrl', flags: '--profile-url <url>', description: 'Lead LinkedIn profile URL' },\n { field: 'leadLinkedInId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn member ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead/ReplaceTags' },\n fieldMappings: {},\n handler: async (input, client) => {\n const tagList = (input.tags as string).split(',').map((s) => s.trim());\n const body: Record<string, unknown> = {\n tags: tagList,\n createTagIfNotExisting: input.createTagIfNotExisting,\n };\n if (input.leadProfileUrl) body.leadProfileUrl = input.leadProfileUrl;\n if (input.leadLinkedInId) body.leadLinkedInId = input.leadLinkedInId;\n return client.request({ method: 'POST', path: '/lead/ReplaceTags', body });\n },\n};\n","import { leadsGetCommand } from './get.js';\nimport { leadsAddTagsCommand } from './add-tags.js';\nimport { leadsGetTagsCommand } from './get-tags.js';\nimport { leadsReplaceTagsCommand } from './replace-tags.js';\n\nexport const leadCommands = [\n leadsGetCommand,\n leadsAddTagsCommand,\n leadsGetTagsCommand,\n leadsReplaceTagsCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const leadTagsCreateCommand: CommandDefinition = {\n name: 'lead_tags_create',\n group: 'lead-tags',\n subcommand: 'create',\n description: 'Create one or multiple tags for your workspace. Colors: Blue, Green, Purple, Pink, Red, Cyan, Yellow, Orange.',\n examples: ['heyreach lead-tags create --tags-json \\'[{\"displayName\":\"VIP\",\"color\":\"Purple\"}]\\''],\n inputSchema: z.object({\n tagsJson: z.string().describe('JSON array of tag objects with displayName and color'),\n }),\n cliMappings: {\n options: [\n { field: 'tagsJson', flags: '--tags-json <json>', description: 'JSON array of {displayName, color} objects' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead_tags/CreateTags' },\n fieldMappings: {},\n handler: async (input, client) => {\n const tags = JSON.parse(input.tagsJson as string);\n return client.request({\n method: 'POST',\n path: '/lead_tags/CreateTags',\n body: { tags },\n });\n },\n};\n","import { leadTagsCreateCommand } from './create.js';\n\nexport const leadTagCommands = [leadTagsCreateCommand];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const webhooksCreateCommand: CommandDefinition = {\n name: 'webhooks_create',\n group: 'webhooks',\n subcommand: 'create',\n description: 'Create a webhook. Event types: CONNECTION_REQUEST_SENT, CONNECTION_REQUEST_ACCEPTED, MESSAGE_SENT, MESSAGE_REPLY_RECEIVED, INMAIL_SENT, INMAIL_REPLY_RECEIVED, EVERY_MESSAGE_REPLY_RECEIVED, FOLLOW_SENT, LIKED_POST, VIEWED_PROFILE, CAMPAIGN_COMPLETED, LEAD_TAG_UPDATED.',\n examples: ['heyreach webhooks create --name \"Replies\" --url \"https://example.com/hook\" --event-type MESSAGE_REPLY_RECEIVED'],\n inputSchema: z.object({\n webhookName: z.string().describe('Webhook name'),\n webhookUrl: z.string().describe('Webhook URL'),\n eventType: z.string().describe('Event type'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs (empty = all)'),\n }),\n cliMappings: {\n options: [\n { field: 'webhookName', flags: '--name <name>', description: 'Webhook name' },\n { field: 'webhookUrl', flags: '--url <url>', description: 'Webhook URL' },\n { field: 'eventType', flags: '--event-type <type>', description: 'Event type' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/webhooks/CreateWebhook' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = {\n webhookName: input.webhookName,\n webhookUrl: input.webhookUrl,\n eventType: input.eventType,\n };\n if (input.campaignIds) body.campaignIds = input.campaignIds.split(',').map((s: string) => Number(s.trim()));\n return client.request({ method: 'POST', path: '/webhooks/CreateWebhook', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const webhooksGetCommand: CommandDefinition = {\n name: 'webhooks_get',\n group: 'webhooks',\n subcommand: 'get',\n description: 'Get a webhook by ID.',\n examples: ['heyreach webhooks get --webhook-id 123 --pretty'],\n inputSchema: z.object({\n webhookId: z.coerce.number().describe('Webhook ID'),\n }),\n cliMappings: {\n options: [\n { field: 'webhookId', flags: '--webhook-id <id>', description: 'Webhook ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/webhooks/GetWebhookById' },\n fieldMappings: { webhookId: 'query' },\n handler: (input, client) => executeCommand(webhooksGetCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const webhooksListCommand: CommandDefinition = {\n name: 'webhooks_list',\n group: 'webhooks',\n subcommand: 'list',\n description: 'Get all webhooks.',\n examples: ['heyreach webhooks list --pretty'],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n ],\n },\n endpoint: { method: 'POST', path: '/webhooks/GetAllWebhooks' },\n fieldMappings: { offset: 'body', limit: 'body' },\n handler: (input, client) => executeCommand(webhooksListCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const webhooksUpdateCommand: CommandDefinition = {\n name: 'webhooks_update',\n group: 'webhooks',\n subcommand: 'update',\n description: 'Update an existing webhook. Only provided fields are changed.',\n examples: ['heyreach webhooks update --webhook-id 123 --name \"Updated Name\" --active false'],\n inputSchema: z.object({\n webhookId: z.coerce.number().describe('Webhook ID'),\n webhookName: z.string().optional().describe('New webhook name'),\n webhookUrl: z.string().optional().describe('New webhook URL'),\n eventType: z.string().optional().describe('New event type'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs'),\n isActive: z.string().optional().describe('Active status: true/false'),\n }),\n cliMappings: {\n options: [\n { field: 'webhookId', flags: '--webhook-id <id>', description: 'Webhook ID' },\n { field: 'webhookName', flags: '--name <name>', description: 'New webhook name' },\n { field: 'webhookUrl', flags: '--url <url>', description: 'New webhook URL' },\n { field: 'eventType', flags: '--event-type <type>', description: 'New event type' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n { field: 'isActive', flags: '--active <bool>', description: 'Active status (true/false)' },\n ],\n },\n endpoint: { method: 'PATCH', path: '/webhooks/UpdateWebhook' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = {};\n if (input.webhookName !== undefined) body.webhookName = input.webhookName;\n if (input.webhookUrl !== undefined) body.webhookUrl = input.webhookUrl;\n if (input.eventType !== undefined) body.eventType = input.eventType;\n if (input.campaignIds !== undefined) body.campaignIds = input.campaignIds.split(',').map((s: string) => Number(s.trim()));\n if (input.isActive !== undefined) body.isActive = input.isActive === 'true';\n return client.request({\n method: 'PATCH',\n path: '/webhooks/UpdateWebhook',\n query: { webhookId: input.webhookId },\n body,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const webhooksDeleteCommand: CommandDefinition = {\n name: 'webhooks_delete',\n group: 'webhooks',\n subcommand: 'delete',\n description: 'Delete a webhook.',\n examples: ['heyreach webhooks delete --webhook-id 123'],\n inputSchema: z.object({\n webhookId: z.coerce.number().describe('Webhook ID'),\n }),\n cliMappings: {\n options: [\n { field: 'webhookId', flags: '--webhook-id <id>', description: 'Webhook ID' },\n ],\n },\n endpoint: { method: 'DELETE', path: '/webhooks/DeleteWebhook' },\n fieldMappings: { webhookId: 'query' },\n handler: (input, client) => executeCommand(webhooksDeleteCommand, input, client),\n};\n","import { webhooksCreateCommand } from './create.js';\nimport { webhooksGetCommand } from './get.js';\nimport { webhooksListCommand } from './list.js';\nimport { webhooksUpdateCommand } from './update.js';\nimport { webhooksDeleteCommand } from './delete.js';\n\nexport const webhookCommands = [\n webhooksCreateCommand,\n webhooksGetCommand,\n webhooksListCommand,\n webhooksUpdateCommand,\n webhooksDeleteCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const networkListCommand: CommandDefinition = {\n name: 'network_list',\n group: 'network',\n subcommand: 'list',\n description: 'Get paginated network connections for a LinkedIn sender. Uses pageNumber/pageSize pagination.',\n examples: ['heyreach network list --sender-id 123 --pretty'],\n inputSchema: z.object({\n senderId: z.coerce.number().describe('LinkedIn sender account ID'),\n pageNumber: z.coerce.number().default(1).describe('Page number (starts at 1)'),\n pageSize: z.coerce.number().min(1).max(100).default(100).describe('Page size'),\n }),\n cliMappings: {\n options: [\n { field: 'senderId', flags: '--sender-id <id>', description: 'LinkedIn sender account ID' },\n { field: 'pageNumber', flags: '--page <number>', description: 'Page number' },\n { field: 'pageSize', flags: '--page-size <number>', description: 'Page size' },\n ],\n },\n endpoint: { method: 'POST', path: '/MyNetwork/GetMyNetworkForSender' },\n fieldMappings: { senderId: 'body', pageNumber: 'body', pageSize: 'body' },\n handler: (input, client) => executeCommand(networkListCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const networkCheckCommand: CommandDefinition = {\n name: 'network_check',\n group: 'network',\n subcommand: 'check',\n description: 'Check if a lead is a connection of a sender. Provide exactly one of --profile-url or --linkedin-id.',\n examples: [\n 'heyreach network check --sender-id 123 --profile-url \"https://linkedin.com/in/janedoe\"',\n 'heyreach network check --sender-id 123 --linkedin-id \"ABC123\"',\n ],\n inputSchema: z.object({\n senderAccountId: z.coerce.number().describe('LinkedIn sender account ID'),\n leadProfileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n leadLinkedInId: z.string().optional().describe('Lead LinkedIn member ID'),\n }),\n cliMappings: {\n options: [\n { field: 'senderAccountId', flags: '--sender-id <id>', description: 'LinkedIn sender account ID' },\n { field: 'leadProfileUrl', flags: '--profile-url <url>', description: 'Lead LinkedIn profile URL' },\n { field: 'leadLinkedInId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn member ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/MyNetwork/IsConnection' },\n fieldMappings: { senderAccountId: 'body', leadProfileUrl: 'body', leadLinkedInId: 'body' },\n handler: async (input, client) => {\n const body: Record<string, unknown> = { senderAccountId: input.senderAccountId };\n if (input.leadProfileUrl) body.leadProfileUrl = input.leadProfileUrl;\n if (input.leadLinkedInId) body.leadLinkedInId = input.leadLinkedInId;\n return client.request({ method: 'POST', path: '/MyNetwork/IsConnection', body });\n },\n};\n","import { networkListCommand } from './list.js';\nimport { networkCheckCommand } from './check.js';\n\nexport const networkCommands = [\n networkListCommand,\n networkCheckCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgApiKeysCommand: CommandDefinition = {\n name: 'org_api_keys',\n group: 'org',\n subcommand: 'api-keys',\n description: 'Get API/integration keys for a workspace (requires Organization API key).',\n examples: ['heyreach org api-keys --workspace-id 123 --pretty'],\n inputSchema: z.object({\n workspaceId: z.coerce.number().describe('Workspace ID'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceId', flags: '--workspace-id <id>', description: 'Workspace ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/management/organizations/api-keys/workspaces/{workspaceId}' },\n fieldMappings: { workspaceId: 'path' },\n handler: async (input, client) => {\n return client.request({\n method: 'GET',\n path: `/management/organizations/api-keys/workspaces/${encodeURIComponent(String(input.workspaceId))}`,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgCreateApiKeyCommand: CommandDefinition = {\n name: 'org_create_api_key',\n group: 'org',\n subcommand: 'create-api-key',\n description: 'Generate a new API/integration key for a workspace. Types: PUBLIC, N8N, MAKE, ZAPIER, MCP.',\n examples: ['heyreach org create-api-key --workspace-id 123 --type PUBLIC'],\n inputSchema: z.object({\n workspaceId: z.coerce.number().describe('Workspace ID'),\n apiKeyType: z.string().describe('Key type: PUBLIC, N8N, MAKE, ZAPIER, MCP'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceId', flags: '--workspace-id <id>', description: 'Workspace ID' },\n { field: 'apiKeyType', flags: '--type <type>', description: 'Key type: PUBLIC, N8N, MAKE, ZAPIER, MCP' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/api-keys/workspaces/{workspaceId}' },\n fieldMappings: {},\n handler: async (input, client) => {\n return client.request({\n method: 'POST',\n path: `/management/organizations/api-keys/workspaces/${encodeURIComponent(String(input.workspaceId))}`,\n body: { apiKeyType: input.apiKeyType },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgWorkspacesCommand: CommandDefinition = {\n name: 'org_workspaces',\n group: 'org',\n subcommand: 'workspaces',\n description: 'List all workspaces in your organization (requires Organization API key).',\n examples: ['heyreach org workspaces --pretty'],\n inputSchema: z.object({\n Offset: z.coerce.number().default(0).describe('Pagination offset'),\n Limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n }),\n cliMappings: {\n options: [\n { field: 'Offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'Limit', flags: '--limit <number>', description: 'Items per page' },\n ],\n },\n endpoint: { method: 'GET', path: '/management/organizations/workspaces' },\n fieldMappings: { Offset: 'query', Limit: 'query' },\n handler: async (input, client) => {\n return client.request({\n method: 'GET',\n path: '/management/organizations/workspaces',\n query: { Offset: input.Offset, Limit: input.Limit },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const orgCreateWorkspaceCommand: CommandDefinition = {\n name: 'org_create_workspace',\n group: 'org',\n subcommand: 'create-workspace',\n description: 'Create a new workspace in your organization.',\n examples: ['heyreach org create-workspace --name \"Sales Team\" --seats-limit 10'],\n inputSchema: z.object({\n workspaceName: z.string().describe('Workspace name'),\n seatsLimit: z.coerce.number().optional().describe('Seat limit (null = unlimited)'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceName', flags: '--name <name>', description: 'Workspace name' },\n { field: 'seatsLimit', flags: '--seats-limit <number>', description: 'Seat limit' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/workspaces' },\n fieldMappings: { workspaceName: 'body', seatsLimit: 'body' },\n handler: (input, client) => executeCommand(orgCreateWorkspaceCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgUpdateWorkspaceCommand: CommandDefinition = {\n name: 'org_update_workspace',\n group: 'org',\n subcommand: 'update-workspace',\n description: 'Update a workspace in your organization.',\n examples: ['heyreach org update-workspace --workspace-id 123 --name \"New Name\" --seats-limit 20'],\n inputSchema: z.object({\n workspaceId: z.coerce.number().describe('Workspace ID'),\n workspaceName: z.string().optional().describe('New workspace name'),\n seatsLimit: z.coerce.number().optional().describe('New seat limit'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceId', flags: '--workspace-id <id>', description: 'Workspace ID' },\n { field: 'workspaceName', flags: '--name <name>', description: 'New workspace name' },\n { field: 'seatsLimit', flags: '--seats-limit <number>', description: 'New seat limit' },\n ],\n },\n endpoint: { method: 'PATCH', path: '/management/organizations/workspaces/{workspaceId}' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = {};\n if (input.workspaceName !== undefined) body.workspaceName = input.workspaceName;\n if (input.seatsLimit !== undefined) body.seatsLimit = { value: input.seatsLimit };\n return client.request({\n method: 'PATCH',\n path: `/management/organizations/workspaces/${encodeURIComponent(String(input.workspaceId))}`,\n body,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgUsersCommand: CommandDefinition = {\n name: 'org_users',\n group: 'org',\n subcommand: 'users',\n description: 'Get all existing and invited users in your organization.',\n examples: ['heyreach org users --pretty', 'heyreach org users --role Admin'],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n role: z.string().optional().describe('Filter by role: Admin, Member, Manager'),\n invitationStatus: z.string().optional().describe('Comma-separated statuses: Accepted, Pending, Expired, Revoked'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'role', flags: '--role <role>', description: 'Filter by role' },\n { field: 'invitationStatus', flags: '--invitation-status <list>', description: 'Comma-separated invitation statuses' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = { offset: input.offset, limit: input.limit };\n if (input.role) body.role = input.role;\n if (input.invitationStatus) body.invitationStatus = input.invitationStatus.split(',').map((s: string) => s.trim());\n return client.request({ method: 'POST', path: '/management/organizations/users', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgGetUserCommand: CommandDefinition = {\n name: 'org_get_user',\n group: 'org',\n subcommand: 'get-user',\n description: 'Get information about a user by ID.',\n examples: ['heyreach org get-user --user-id 456 --pretty'],\n inputSchema: z.object({\n userId: z.coerce.number().describe('User ID'),\n }),\n cliMappings: {\n options: [\n { field: 'userId', flags: '--user-id <id>', description: 'User ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/management/organizations/users/{userId}' },\n fieldMappings: { userId: 'path' },\n handler: async (input, client) => {\n return client.request({\n method: 'GET',\n path: `/management/organizations/users/${encodeURIComponent(String(input.userId))}`,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgWorkspaceUsersCommand: CommandDefinition = {\n name: 'org_workspace_users',\n group: 'org',\n subcommand: 'workspace-users',\n description: 'Get all users in a given workspace with role and permissions.',\n examples: ['heyreach org workspace-users --workspace-id 123 --pretty'],\n inputSchema: z.object({\n workspaceId: z.coerce.number().describe('Workspace ID'),\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n role: z.string().optional().describe('Filter by role'),\n invitationStatus: z.string().optional().describe('Comma-separated invitation statuses'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceId', flags: '--workspace-id <id>', description: 'Workspace ID' },\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'role', flags: '--role <role>', description: 'Filter by role' },\n { field: 'invitationStatus', flags: '--invitation-status <list>', description: 'Comma-separated invitation statuses' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users/workspaces/{workspaceId}' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = { offset: input.offset, limit: input.limit };\n if (input.role) body.role = input.role;\n if (input.invitationStatus) body.invitationStatus = input.invitationStatus.split(',').map((s: string) => s.trim());\n return client.request({\n method: 'POST',\n path: `/management/organizations/users/workspaces/${encodeURIComponent(String(input.workspaceId))}`,\n body,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgInviteAdminsCommand: CommandDefinition = {\n name: 'org_invite_admins',\n group: 'org',\n subcommand: 'invite-admins',\n description: 'Invite users as organization admins. Returns invitation URLs (no email sent).',\n examples: ['heyreach org invite-admins --inviter-email \"admin@co.com\" --emails \"user1@co.com,user2@co.com\"'],\n inputSchema: z.object({\n inviterEmail: z.string().describe('Email of the inviter'),\n emails: z.string().describe('Comma-separated emails to invite'),\n }),\n cliMappings: {\n options: [\n { field: 'inviterEmail', flags: '--inviter-email <email>', description: 'Inviter email' },\n { field: 'emails', flags: '--emails <list>', description: 'Comma-separated emails' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users/invite/admins' },\n fieldMappings: {},\n handler: async (input, client) => {\n return client.request({\n method: 'POST',\n path: '/management/organizations/users/invite/admins',\n body: {\n inviterEmail: input.inviterEmail,\n emails: (input.emails as string).split(',').map((s) => s.trim()),\n },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgInviteMembersCommand: CommandDefinition = {\n name: 'org_invite_members',\n group: 'org',\n subcommand: 'invite-members',\n description: 'Invite users as members with specified workspace permissions. Returns invitation URLs (no email sent).',\n examples: ['heyreach org invite-members --inviter-email \"admin@co.com\" --emails \"user@co.com\" --workspace-ids \"1,2\" --permissions-json \\'{\"viewCampaigns\":true}\\''],\n inputSchema: z.object({\n inviterEmail: z.string().describe('Email of the inviter'),\n emails: z.string().describe('Comma-separated emails to invite'),\n workspaceIds: z.string().describe('Comma-separated workspace IDs'),\n permissionsJson: z.string().describe('JSON object of permission booleans'),\n }),\n cliMappings: {\n options: [\n { field: 'inviterEmail', flags: '--inviter-email <email>', description: 'Inviter email' },\n { field: 'emails', flags: '--emails <list>', description: 'Comma-separated emails' },\n { field: 'workspaceIds', flags: '--workspace-ids <list>', description: 'Comma-separated workspace IDs' },\n { field: 'permissionsJson', flags: '--permissions-json <json>', description: 'JSON permissions object' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users/invite/members' },\n fieldMappings: {},\n handler: async (input, client) => {\n return client.request({\n method: 'POST',\n path: '/management/organizations/users/invite/members',\n body: {\n inviterEmail: input.inviterEmail,\n emails: (input.emails as string).split(',').map((s) => s.trim()),\n workspaceIds: (input.workspaceIds as string).split(',').map((s) => Number(s.trim())),\n permissions: JSON.parse(input.permissionsJson as string),\n },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgInviteManagersCommand: CommandDefinition = {\n name: 'org_invite_managers',\n group: 'org',\n subcommand: 'invite-managers',\n description: 'Invite users as managers (external users with workspace access, auto-added without registration).',\n examples: ['heyreach org invite-managers --inviter-email \"admin@co.com\" --emails \"manager@co.com\" --workspace-ids \"1,2\"'],\n inputSchema: z.object({\n inviterEmail: z.string().describe('Email of the inviter'),\n emails: z.string().describe('Comma-separated emails to invite'),\n workspaceIds: z.string().describe('Comma-separated workspace IDs'),\n }),\n cliMappings: {\n options: [\n { field: 'inviterEmail', flags: '--inviter-email <email>', description: 'Inviter email' },\n { field: 'emails', flags: '--emails <list>', description: 'Comma-separated emails' },\n { field: 'workspaceIds', flags: '--workspace-ids <list>', description: 'Comma-separated workspace IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users/invite/managers' },\n fieldMappings: {},\n handler: async (input, client) => {\n return client.request({\n method: 'POST',\n path: '/management/organizations/users/invite/managers',\n body: {\n inviterEmail: input.inviterEmail,\n emails: (input.emails as string).split(',').map((s) => s.trim()),\n workspaceIds: (input.workspaceIds as string).split(',').map((s) => Number(s.trim())),\n },\n });\n },\n};\n","import { orgApiKeysCommand } from './api-keys.js';\nimport { orgCreateApiKeyCommand } from './create-api-key.js';\nimport { orgWorkspacesCommand } from './workspaces.js';\nimport { orgCreateWorkspaceCommand } from './create-workspace.js';\nimport { orgUpdateWorkspaceCommand } from './update-workspace.js';\nimport { orgUsersCommand } from './users.js';\nimport { orgGetUserCommand } from './get-user.js';\nimport { orgWorkspaceUsersCommand } from './workspace-users.js';\nimport { orgInviteAdminsCommand } from './invite-admins.js';\nimport { orgInviteMembersCommand } from './invite-members.js';\nimport { orgInviteManagersCommand } from './invite-managers.js';\n\nexport const orgCommands = [\n orgApiKeysCommand,\n orgCreateApiKeyCommand,\n orgWorkspacesCommand,\n orgCreateWorkspaceCommand,\n orgUpdateWorkspaceCommand,\n orgUsersCommand,\n orgGetUserCommand,\n orgWorkspaceUsersCommand,\n orgInviteAdminsCommand,\n orgInviteMembersCommand,\n orgInviteManagersCommand,\n];\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { allCommands } from './commands/index.js';\nimport { resolveAuth } from './core/auth.js';\nimport { createClient } from './core/client.js';\nimport { formatError } from './core/errors.js';\n\nexport async function startMcpFromCli(): Promise<void> {\n const auth = resolveAuth();\n const client = createClient(auth);\n\n const server = new McpServer({\n name: 'heyreach',\n version: '0.1.0',\n });\n\n for (const cmdDef of allCommands) {\n const zodShape: Record<string, unknown> = {};\n const shape = cmdDef.inputSchema.shape as Record<string, unknown>;\n for (const [key, val] of Object.entries(shape)) {\n zodShape[key] = val;\n }\n\n server.tool(\n cmdDef.name,\n cmdDef.description,\n zodShape,\n async (args: Record<string, unknown>) => {\n try {\n const parsed = cmdDef.inputSchema.safeParse(args);\n if (!parsed.success) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({ error: parsed.error.message, code: 'VALIDATION_ERROR' }),\n },\n ],\n isError: true,\n };\n }\n const result = await cmdDef.handler(parsed.data, client);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (error: unknown) {\n return {\n content: [\n { type: 'text' as const, text: JSON.stringify(formatError(error)) },\n ],\n isError: true,\n };\n }\n },\n );\n }\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n","import { createInterface } from 'node:readline/promises';\nimport { Command } from 'commander';\nimport type { CommandDefinition, GlobalOptions } from '../core/types.js';\nimport { resolveAuth, resolveOrgAuth } from '../core/auth.js';\nimport { createClient } from '../core/client.js';\nimport { saveConfig, deleteConfig, loadConfig, getConfigPath } from '../core/config.js';\nimport { output, outputError } from '../core/output.js';\nimport { formatError } from '../core/errors.js';\n\nimport { campaignCommands } from './campaigns/index.js';\nimport { inboxCommands } from './inbox/index.js';\nimport { accountCommands } from './accounts/index.js';\nimport { listCommands } from './lists/index.js';\nimport { statsCommands } from './stats/index.js';\nimport { leadCommands } from './leads/index.js';\nimport { leadTagCommands } from './lead-tags/index.js';\nimport { webhookCommands } from './webhooks/index.js';\nimport { networkCommands } from './network/index.js';\nimport { orgCommands } from './org/index.js';\n\nconst ORG_GROUP = 'org';\n\nexport const allCommands: CommandDefinition[] = [\n ...campaignCommands,\n ...inboxCommands,\n ...accountCommands,\n ...listCommands,\n ...statsCommands,\n ...leadCommands,\n ...leadTagCommands,\n ...webhookCommands,\n ...networkCommands,\n ...orgCommands,\n];\n\nfunction getGlobalOpts(program: Command): GlobalOptions {\n const opts = program.opts();\n return {\n pretty: opts.pretty,\n quiet: opts.quiet,\n fields: opts.fields,\n apiKey: opts.apiKey,\n orgKey: opts.orgKey,\n };\n}\n\nfunction registerLoginCommand(program: Command): void {\n program\n .command('login')\n .description('Save your API key to ~/.heyreach/config.json')\n .option('--org', 'Store Organization API key instead of workspace key')\n .addHelpText('after', '\\nExamples:\\n $ heyreach login --api-key <key>\\n $ heyreach login --org --org-key <key>\\n $ heyreach login # interactive prompt')\n .action(async (opts) => {\n const globalOpts = getGlobalOpts(program);\n const isOrg = opts.org;\n\n let apiKey = isOrg\n ? (globalOpts.orgKey ?? process.env.HEYREACH_ORG_API_KEY)\n : (globalOpts.apiKey ?? process.env.HEYREACH_API_KEY);\n\n if (!apiKey) {\n const rl = createInterface({ input: process.stdin, output: process.stderr });\n const label = isOrg ? 'Organization API key' : 'HeyReach API key';\n apiKey = (await rl.question(`${label}: `)).trim();\n rl.close();\n }\n\n if (!apiKey) {\n outputError({ error: 'API key is required.', code: 'VALIDATION_ERROR' }, globalOpts);\n return;\n }\n\n // Validate the key before saving\n try {\n const checkPath = isOrg ? '/organization/GetWorkspaces' : '/auth/CheckApiKey';\n const client = createClient({ apiKey, baseUrl: 'https://api.heyreach.io/api/public' });\n await client.request({ method: 'GET', path: checkPath });\n } catch {\n outputError({ error: `Invalid ${isOrg ? 'Organization' : ''} API key. Check your key and try again.`, code: 'AUTH_ERROR' }, globalOpts);\n return;\n }\n\n const config = isOrg ? { org_api_key: apiKey } : { api_key: apiKey };\n saveConfig(config);\n output({ success: true, message: 'Credentials saved and verified.', config_path: getConfigPath() }, globalOpts);\n });\n}\n\nfunction registerLogoutCommand(program: Command): void {\n program\n .command('logout')\n .description('Remove stored credentials from ~/.heyreach/config.json')\n .action(async () => {\n const globalOpts = getGlobalOpts(program);\n deleteConfig();\n output({ success: true, message: 'Credentials removed.' }, globalOpts);\n });\n}\n\nfunction registerStatusCommand(program: Command): void {\n program\n .command('status')\n .description('Check API key validity and show config')\n .action(async () => {\n const globalOpts = getGlobalOpts(program);\n try {\n const auth = resolveAuth({ apiKey: globalOpts.apiKey });\n const client = createClient(auth);\n await client.request({ method: 'GET', path: '/auth/CheckApiKey' });\n output({\n authenticated: true,\n api_key: '***' + auth.apiKey.slice(-4),\n config_path: getConfigPath(),\n }, globalOpts);\n } catch (err) {\n const config = loadConfig();\n const usedKey = globalOpts.apiKey ?? process.env.HEYREACH_API_KEY ?? config.api_key;\n output({\n authenticated: false,\n api_key: usedKey ? '***' + usedKey.slice(-4) : '(not set)',\n api_key_source: globalOpts.apiKey ? '--api-key flag' : process.env.HEYREACH_API_KEY ? 'HEYREACH_API_KEY env' : config.api_key ? 'config file' : 'none',\n config_path: getConfigPath(),\n error: err instanceof Error ? err.message : String(err),\n }, globalOpts);\n }\n });\n}\n\nfunction registerConfigCommand(program: Command): void {\n const configCmd = program.command('config').description('Manage CLI configuration');\n\n configCmd\n .command('set')\n .description('Set configuration values')\n .option('--api-key <key>', 'HeyReach workspace API key')\n .option('--org-key <key>', 'HeyReach Organization API key')\n .action(async (opts) => {\n const globalOpts = getGlobalOpts(program);\n const updates: Record<string, string> = {};\n if (opts.apiKey) updates.api_key = opts.apiKey;\n if (opts.orgKey) updates.org_api_key = opts.orgKey;\n if (Object.keys(updates).length === 0) {\n outputError({ error: 'Provide at least --api-key or --org-key', code: 'VALIDATION_ERROR' }, globalOpts);\n return;\n }\n saveConfig(updates);\n output({ success: true, message: 'Config updated.', config_path: getConfigPath() }, globalOpts);\n });\n\n configCmd\n .command('get')\n .description('Show current configuration')\n .action(async () => {\n const globalOpts = getGlobalOpts(program);\n const config = loadConfig();\n output({\n api_key: config.api_key ? '***' + config.api_key.slice(-4) : '(not set)',\n org_api_key: config.org_api_key ? '***' + config.org_api_key.slice(-4) : '(not set)',\n config_path: getConfigPath(),\n }, globalOpts);\n });\n}\n\nfunction registerMcpCommand(program: Command): void {\n program\n .command('mcp')\n .description('Start the MCP (Model Context Protocol) server over stdio')\n .action(async () => {\n const { startMcpFromCli } = await import('../mcp-entry.js');\n await startMcpFromCli();\n });\n}\n\nfunction registerCommand(parent: Command, cmdDef: CommandDefinition, program: Command): void {\n const cmd = parent.command(cmdDef.subcommand).description(cmdDef.description);\n\n if (cmdDef.cliMappings.args) {\n for (const arg of cmdDef.cliMappings.args) {\n cmd.argument(arg.required !== false ? `<${arg.name}>` : `[${arg.name}]`, arg.field);\n }\n }\n\n if (cmdDef.cliMappings.options) {\n for (const opt of cmdDef.cliMappings.options) {\n cmd.option(opt.flags, opt.description ?? '');\n }\n }\n\n if (cmdDef.examples?.length) {\n cmd.addHelpText(\n 'after',\n '\\nExamples:\\n' + cmdDef.examples.map((e) => ` $ ${e}`).join('\\n'),\n );\n }\n\n cmd.action(async (...actionArgs: unknown[]) => {\n const globalOpts = getGlobalOpts(program);\n\n try {\n // Org commands use org API key\n const isOrgCommand = cmdDef.group === ORG_GROUP;\n const auth = isOrgCommand\n ? resolveOrgAuth({ orgKey: globalOpts.orgKey })\n : resolveAuth({ apiKey: globalOpts.apiKey });\n const client = createClient(auth);\n\n const input: Record<string, unknown> = {};\n\n const cmdOpts = actionArgs[actionArgs.length - 2] as Record<string, unknown>;\n if (cmdOpts && typeof cmdOpts === 'object') {\n if (cmdDef.cliMappings.options) {\n for (const optDef of cmdDef.cliMappings.options) {\n const flagName = optDef.flags.match(/--([a-zA-Z0-9][a-zA-Z0-9-_]*)/)?.[1] ?? optDef.field;\n const commanderKey = flagName.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n const value = cmdOpts[commanderKey] ?? cmdOpts[flagName] ?? cmdOpts[optDef.field];\n if (value !== undefined) input[optDef.field] = value;\n }\n } else {\n for (const [key, val] of Object.entries(cmdOpts)) {\n if (val !== undefined) input[key] = val;\n }\n }\n }\n\n if (cmdDef.cliMappings.args) {\n for (let i = 0; i < cmdDef.cliMappings.args.length; i++) {\n const argDef = cmdDef.cliMappings.args[i];\n const argVal = actionArgs[i];\n if (argVal !== undefined) input[argDef.field] = argVal;\n }\n }\n\n const parsed = cmdDef.inputSchema.safeParse(input);\n if (!parsed.success) {\n outputError(\n { error: parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; '), code: 'VALIDATION_ERROR' },\n globalOpts,\n );\n return;\n }\n\n const result = await cmdDef.handler(parsed.data, client);\n output(result, globalOpts);\n } catch (err) {\n outputError(formatError(err), globalOpts);\n }\n });\n}\n\nexport function registerAllCommands(program: Command): void {\n registerLoginCommand(program);\n registerLogoutCommand(program);\n registerStatusCommand(program);\n registerConfigCommand(program);\n registerMcpCommand(program);\n\n const groups = new Map<string, CommandDefinition[]>();\n for (const cmd of allCommands) {\n if (!groups.has(cmd.group)) groups.set(cmd.group, []);\n groups.get(cmd.group)!.push(cmd);\n }\n\n for (const [groupName, commands] of groups) {\n const groupCmd = program.command(groupName).description(`Manage ${groupName}`);\n for (const cmdDef of commands) {\n registerCommand(groupCmd, cmdDef, program);\n }\n }\n}\n","import { Command } from 'commander';\nimport { registerAllCommands } from './commands/index.js';\n\nconst program = new Command();\n\nprogram\n .name('heyreach')\n .description(\n 'HeyReach CLI — manage LinkedIn campaigns, leads, lists, inbox, webhooks, and more from your terminal.',\n )\n .version('0.1.4')\n .option('--pretty', 'Pretty-print JSON output')\n .option('--quiet', 'Suppress output, exit codes only')\n .option('--fields <fields>', 'Comma-separated fields to include in output')\n .option('--api-key <key>', 'HeyReach workspace API key')\n .option('--org-key <key>', 'HeyReach Organization API key');\n\nregisterAllCommands(program);\n\nprogram.parse();\n"],"mappings":"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","names":["path","path","z","z","z","z","z","z","z","z","init_list","z","init_get","z","z","init_list","init_get","z","init_list","z","init_get","init_list","init_get","z","init_get","z","init_list","z","z","init_get_leads","z","init_add_leads","z","z","z","z","init_get_for_lead","init_get","init_list","init_get_leads","init_add_leads","init_get_for_lead","z","z","init_get","z","z","z","init_get","z","init_create","init_create","z","init_create","z","init_get","z","init_list","z","z","init_create","init_get","init_list","z","init_list","z","init_list","z","z","z","z","z","z","z","z","z","z","z","program","startMcpFromCli"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../src/core/config.ts","../src/core/errors.ts","../src/core/auth.ts","../src/core/client.ts","../src/core/output.ts","../src/commands/campaigns/list.ts","../src/core/handler.ts","../src/commands/campaigns/get.ts","../src/commands/campaigns/resume.ts","../src/commands/campaigns/pause.ts","../src/commands/campaigns/add-leads.ts","../src/commands/campaigns/stop-lead.ts","../src/commands/campaigns/get-leads.ts","../src/commands/campaigns/get-for-lead.ts","../src/commands/campaigns/index.ts","../src/commands/inbox/list.ts","../src/commands/inbox/get.ts","../src/commands/inbox/send.ts","../src/commands/inbox/set-seen.ts","../src/commands/inbox/index.ts","../src/commands/accounts/list.ts","../src/commands/accounts/get.ts","../src/commands/accounts/index.ts","../src/commands/lists/get.ts","../src/commands/lists/list.ts","../src/commands/lists/create.ts","../src/commands/lists/get-leads.ts","../src/commands/lists/add-leads.ts","../src/commands/lists/delete-leads.ts","../src/commands/lists/delete-leads-by-url.ts","../src/commands/lists/get-companies.ts","../src/commands/lists/get-for-lead.ts","../src/commands/lists/index.ts","../src/commands/stats/overview.ts","../src/commands/stats/index.ts","../src/commands/leads/get.ts","../src/commands/leads/add-tags.ts","../src/commands/leads/get-tags.ts","../src/commands/leads/replace-tags.ts","../src/commands/leads/index.ts","../src/commands/lead-tags/create.ts","../src/commands/lead-tags/index.ts","../src/commands/webhooks/create.ts","../src/commands/webhooks/get.ts","../src/commands/webhooks/list.ts","../src/commands/webhooks/update.ts","../src/commands/webhooks/delete.ts","../src/commands/webhooks/index.ts","../src/commands/network/list.ts","../src/commands/network/check.ts","../src/commands/network/index.ts","../src/commands/org/api-keys.ts","../src/commands/org/create-api-key.ts","../src/commands/org/workspaces.ts","../src/commands/org/create-workspace.ts","../src/commands/org/update-workspace.ts","../src/commands/org/users.ts","../src/commands/org/get-user.ts","../src/commands/org/workspace-users.ts","../src/commands/org/invite-admins.ts","../src/commands/org/invite-members.ts","../src/commands/org/invite-managers.ts","../src/commands/org/index.ts","../src/mcp-entry.ts","../src/commands/index.ts","../src/index.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport type { HeyReachConfig } from './types.js';\n\nconst CONFIG_DIR = join(homedir(), '.heyreach');\nconst CONFIG_FILE = join(CONFIG_DIR, 'config.json');\n\nfunction ensureDir(): void {\n if (!existsSync(CONFIG_DIR)) {\n mkdirSync(CONFIG_DIR, { recursive: true });\n }\n}\n\nexport function loadConfig(): HeyReachConfig {\n try {\n if (!existsSync(CONFIG_FILE)) return {};\n const raw = readFileSync(CONFIG_FILE, 'utf-8');\n return JSON.parse(raw) as HeyReachConfig;\n } catch {\n return {};\n }\n}\n\nexport function saveConfig(config: Partial<HeyReachConfig>): void {\n ensureDir();\n const existing = loadConfig();\n const merged = { ...existing, ...config };\n writeFileSync(CONFIG_FILE, JSON.stringify(merged, null, 2) + '\\n', 'utf-8');\n}\n\nexport function deleteConfig(): void {\n try {\n if (existsSync(CONFIG_FILE)) unlinkSync(CONFIG_FILE);\n } catch {\n // ignore\n }\n}\n\nexport function getConfigDir(): string {\n return CONFIG_DIR;\n}\n\nexport function getConfigPath(): string {\n return CONFIG_FILE;\n}\n","export class HeyReachError extends Error {\n code: string;\n statusCode?: number;\n\n constructor(message: string, code: string, statusCode?: number) {\n super(message);\n this.name = 'HeyReachError';\n this.code = code;\n this.statusCode = statusCode;\n }\n}\n\nexport class AuthError extends HeyReachError {\n constructor(message = 'Authentication failed. Run \"heyreach login\" or set HEYREACH_API_KEY.') {\n super(message, 'AUTH_ERROR', 401);\n this.name = 'AuthError';\n }\n}\n\nexport class NotFoundError extends HeyReachError {\n constructor(message = 'Resource not found.') {\n super(message, 'NOT_FOUND', 404);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends HeyReachError {\n constructor(message = 'Validation failed.') {\n super(message, 'VALIDATION_ERROR', 422);\n this.name = 'ValidationError';\n }\n}\n\nexport class RateLimitError extends HeyReachError {\n retryAfter?: number;\n\n constructor(message = 'Rate limit exceeded (300 req/min). Try again later.', retryAfter?: number) {\n super(message, 'RATE_LIMIT', 429);\n this.name = 'RateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n\nexport class ServerError extends HeyReachError {\n constructor(message = 'Server error. Try again later.') {\n super(message, 'SERVER_ERROR', 500);\n this.name = 'ServerError';\n }\n}\n\nexport function classifyHttpError(status: number, body: string): HeyReachError {\n const parsed = safeParse(body);\n const rawVal = parsed?.message || parsed?.error || body || `HTTP ${status} error`;\n const raw = typeof rawVal === 'string' ? rawVal : JSON.stringify(rawVal);\n const message = extractMessage(raw);\n\n if (status === 401 || status === 403) return new AuthError(message);\n if (status === 404) return new NotFoundError(message);\n if (status === 422) return new ValidationError(message);\n if (status === 429) return new RateLimitError(message);\n if (status >= 500) return new ServerError(message);\n return new HeyReachError(message, 'HTTP_ERROR', status);\n}\n\nfunction extractMessage(raw: string): string {\n // Handle nested JSON error strings like: {\"errors\":{\"AccountIds\":[\"The AccountIds field is required.\"]}}\n const nested = safeParse(raw);\n if (nested?.errors && typeof nested.errors === 'object') {\n const parts: string[] = [];\n for (const [field, msgs] of Object.entries(nested.errors as Record<string, unknown>)) {\n const msgList = Array.isArray(msgs) ? msgs.join('; ') : String(msgs);\n parts.push(`${field}: ${msgList}`);\n }\n if (parts.length > 0) return parts.join('. ');\n }\n if (nested?.errorMessage) return String(nested.errorMessage);\n return raw;\n}\n\nfunction safeParse(text: string): Record<string, unknown> | null {\n try {\n return JSON.parse(text);\n } catch {\n return null;\n }\n}\n\nexport function formatError(error: unknown): { error: string; code: string } {\n if (error instanceof HeyReachError) {\n return { error: error.message, code: error.code };\n }\n if (error instanceof Error) {\n return { error: error.message, code: 'UNKNOWN_ERROR' };\n }\n return { error: String(error), code: 'UNKNOWN_ERROR' };\n}\n","import { loadConfig } from './config.js';\nimport { AuthError } from './errors.js';\n\nconst BASE_URL = 'https://api.heyreach.io/api/public';\n\nexport interface AuthContext {\n apiKey: string;\n baseUrl: string;\n}\n\nexport function resolveAuth(opts?: { apiKey?: string }): AuthContext {\n const config = loadConfig();\n\n const apiKey =\n opts?.apiKey ??\n process.env.HEYREACH_API_KEY ??\n config.api_key;\n\n if (!apiKey) {\n throw new AuthError(\n 'No API key found. Run \"heyreach login\" or set HEYREACH_API_KEY.',\n );\n }\n\n return { apiKey, baseUrl: BASE_URL };\n}\n\nexport function resolveOrgAuth(opts?: { orgKey?: string }): AuthContext {\n const config = loadConfig();\n\n const apiKey =\n opts?.orgKey ??\n process.env.HEYREACH_ORG_API_KEY ??\n config.org_api_key;\n\n if (!apiKey) {\n throw new AuthError(\n 'No Organization API key found. Run \"heyreach login --org\" or set HEYREACH_ORG_API_KEY.',\n );\n }\n\n return { apiKey, baseUrl: BASE_URL };\n}\n","import type { HeyReachClient, HeyReachRequestOptions } from './types.js';\nimport type { AuthContext } from './auth.js';\nimport { classifyHttpError, RateLimitError } from './errors.js';\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst MAX_RETRIES = 3;\nconst INITIAL_BACKOFF_MS = 1_000;\n\nexport function createClient(auth: AuthContext): HeyReachClient {\n async function request(opts: HeyReachRequestOptions): Promise<unknown> {\n const url = buildUrl(auth.baseUrl, opts.path, opts.query);\n\n const headers: Record<string, string> = {\n 'X-API-KEY': auth.apiKey,\n Accept: 'application/json',\n };\n\n let bodyStr: string | undefined;\n if (opts.body && Object.keys(opts.body).length > 0) {\n headers['Content-Type'] = 'application/json';\n bodyStr = JSON.stringify(opts.body);\n }\n\n let lastError: Error | undefined;\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n try {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS);\n\n const res = await fetch(url, {\n method: opts.method,\n headers,\n body: bodyStr,\n signal: controller.signal,\n });\n\n clearTimeout(timeout);\n\n if (res.ok) {\n const text = await res.text();\n if (!text) return { success: true };\n try {\n return JSON.parse(text);\n } catch {\n return { data: text };\n }\n }\n\n const errorBody = await res.text();\n\n if (res.status === 429 || res.status >= 500) {\n lastError = classifyHttpError(res.status, errorBody);\n if (attempt < MAX_RETRIES) {\n const retryAfter =\n res.status === 429\n ? parseRetryAfter(res.headers.get('Retry-After'))\n : undefined;\n const backoff = retryAfter ?? INITIAL_BACKOFF_MS * Math.pow(2, attempt);\n await sleep(backoff);\n continue;\n }\n }\n\n throw classifyHttpError(res.status, errorBody);\n } catch (err) {\n if (err instanceof RateLimitError && attempt < MAX_RETRIES) {\n lastError = err;\n await sleep(INITIAL_BACKOFF_MS * Math.pow(2, attempt));\n continue;\n }\n if (err instanceof Error && err.name === 'AbortError') {\n lastError = new Error(`Request timed out after ${DEFAULT_TIMEOUT_MS}ms`);\n if (attempt < MAX_RETRIES) {\n await sleep(INITIAL_BACKOFF_MS * Math.pow(2, attempt));\n continue;\n }\n }\n throw err;\n }\n }\n\n throw lastError ?? new Error('Request failed after retries');\n }\n\n async function paginate(opts: HeyReachRequestOptions, maxPages = 10): Promise<unknown> {\n const allItems: unknown[] = [];\n let offset = 0;\n const limit = 100;\n\n for (let i = 0; i < maxPages; i++) {\n const body = { ...opts.body, offset, limit };\n const result = (await request({ ...opts, body })) as Record<string, unknown>;\n\n const items = result?.items as unknown[] | undefined;\n if (items) {\n allItems.push(...items);\n } else {\n return result;\n }\n\n const totalCount = result?.totalCount as number | undefined;\n if (!totalCount || allItems.length >= totalCount) break;\n\n offset += limit;\n }\n\n return { totalCount: allItems.length, items: allItems };\n }\n\n return { request, paginate };\n}\n\nfunction buildUrl(baseUrl: string, path: string, query?: Record<string, unknown>): string {\n const base = baseUrl.endsWith('/') ? baseUrl : baseUrl + '/';\n const cleanPath = path.startsWith('/') ? path.slice(1) : path;\n const url = new URL(cleanPath, base);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n}\n\nfunction parseRetryAfter(header: string | null): number | undefined {\n if (!header) return undefined;\n const seconds = parseInt(header, 10);\n return isNaN(seconds) ? undefined : seconds * 1000;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type { GlobalOptions } from './types.js';\n\nexport function output(data: unknown, opts?: GlobalOptions): void {\n if (opts?.quiet) return;\n\n let result = data;\n\n if (opts?.fields && typeof data === 'object' && data !== null) {\n result = projectFields(data, opts.fields);\n }\n\n const json = opts?.pretty\n ? JSON.stringify(result, null, 2)\n : JSON.stringify(result);\n\n console.log(json);\n}\n\nexport function outputError(error: { error: string; code: string }, opts?: GlobalOptions): void {\n if (opts?.quiet) {\n process.exitCode = 1;\n return;\n }\n\n const json = opts?.pretty\n ? JSON.stringify(error, null, 2)\n : JSON.stringify(error);\n\n console.error(json);\n process.exitCode = 1;\n}\n\nfunction projectFields(data: unknown, fields: string): unknown {\n const keys = fields.split(',').map((k) => k.trim());\n\n if (Array.isArray(data)) {\n return data.map((item) => pickKeys(item, keys));\n }\n\n if (typeof data === 'object' && data !== null && 'items' in data) {\n const inner = (data as Record<string, unknown>).items;\n if (Array.isArray(inner)) {\n return { ...data as object, items: inner.map((item) => pickKeys(item, keys)) };\n }\n }\n\n return pickKeys(data, keys);\n}\n\nfunction pickKeys(obj: unknown, keys: string[]): unknown {\n if (typeof obj !== 'object' || obj === null) return obj;\n const record = obj as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const key of keys) {\n if (key in record) result[key] = record[key];\n }\n return result;\n}\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsListCommand: CommandDefinition = {\n name: 'campaigns_list',\n group: 'campaigns',\n subcommand: 'list',\n description: 'Get a paginated list of all campaigns. Up to 100 per request.',\n examples: [\n 'heyreach campaigns list',\n 'heyreach campaigns list --keyword \"outbound\" --pretty',\n 'heyreach campaigns list --statuses IN_PROGRESS,PAUSED',\n ],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page (max 100)'),\n keyword: z.string().optional().describe('Filter by campaign name'),\n statuses: z.string().optional().describe('Comma-separated statuses: DRAFT,IN_PROGRESS,PAUSED,FINISHED,CANCELED,FAILED,STARTING,SCHEDULED'),\n accountIds: z.string().optional().describe('Comma-separated LinkedIn account IDs'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page (max 100)' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Filter by campaign name' },\n { field: 'statuses', flags: '--statuses <list>', description: 'Comma-separated statuses' },\n { field: 'accountIds', flags: '--account-ids <list>', description: 'Comma-separated LinkedIn account IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/GetAll' },\n fieldMappings: { offset: 'body', limit: 'body', keyword: 'body', statuses: 'body', accountIds: 'body' },\n handler: async (input, client) => {\n const body: Record<string, unknown> = {\n offset: input.offset,\n limit: input.limit,\n };\n if (input.keyword) body.keyword = input.keyword;\n if (input.statuses) body.statuses = input.statuses.split(',').map((s: string) => s.trim());\n if (input.accountIds) body.accountIds = input.accountIds.split(',').map((s: string) => Number(s.trim()));\n return client.request({ method: 'POST', path: '/campaign/GetAll', body });\n },\n};\n","import type { CommandDefinition, HeyReachClient } from './types.js';\n\nexport async function executeCommand(\n cmdDef: CommandDefinition,\n input: Record<string, unknown>,\n client: HeyReachClient,\n): Promise<unknown> {\n let path = cmdDef.endpoint.path;\n const query: Record<string, unknown> = {};\n const body: Record<string, unknown> = {};\n\n for (const [field, location] of Object.entries(cmdDef.fieldMappings)) {\n const value = input[field];\n if (value === undefined || value === null) continue;\n\n switch (location) {\n case 'path':\n path = path.replace(`{${field}}`, encodeURIComponent(String(value)));\n break;\n case 'query':\n query[field] = value;\n break;\n case 'body':\n body[field] = value;\n break;\n }\n }\n\n return client.request({\n method: cmdDef.endpoint.method,\n path,\n query: Object.keys(query).length > 0 ? query : undefined,\n body: Object.keys(body).length > 0 ? body : undefined,\n });\n}\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsGetCommand: CommandDefinition = {\n name: 'campaigns_get',\n group: 'campaigns',\n subcommand: 'get',\n description: 'Get a campaign by ID.',\n examples: ['heyreach campaigns get --campaign-id 12345 --pretty'],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/campaign/GetById' },\n fieldMappings: { campaignId: 'query' },\n handler: (input, client) => executeCommand(campaignsGetCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsResumeCommand: CommandDefinition = {\n name: 'campaigns_resume',\n group: 'campaigns',\n subcommand: 'resume',\n description: 'Resume a paused campaign.',\n examples: ['heyreach campaigns resume --campaign-id 12345'],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/Resume' },\n fieldMappings: { campaignId: 'query' },\n handler: (input, client) => executeCommand(campaignsResumeCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsPauseCommand: CommandDefinition = {\n name: 'campaigns_pause',\n group: 'campaigns',\n subcommand: 'pause',\n description: 'Pause a running campaign.',\n examples: ['heyreach campaigns pause --campaign-id 12345'],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/Pause' },\n fieldMappings: { campaignId: 'query' },\n handler: (input, client) => executeCommand(campaignsPauseCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const campaignsAddLeadsCommand: CommandDefinition = {\n name: 'campaigns_add_leads',\n group: 'campaigns',\n subcommand: 'add-leads',\n description: 'Add leads to a campaign (V2 — returns detailed counts). Up to 100 leads per request. Accepts JSON array via --leads-json.',\n examples: [\n 'heyreach campaigns add-leads --campaign-id 123 --leads-json \\'[{\"lead\":{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"profileUrl\":\"https://linkedin.com/in/janedoe\"}}]\\'',\n ],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n leadsJson: z.string().describe('JSON array of accountLeadPairs'),\n resumeFinishedCampaign: z.coerce.boolean().optional().describe('Resume if campaign finished'),\n resumePausedCampaign: z.coerce.boolean().optional().describe('Resume if campaign paused'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n { field: 'leadsJson', flags: '--leads-json <json>', description: 'JSON array of accountLeadPairs' },\n { field: 'resumeFinishedCampaign', flags: '--resume-finished', description: 'Resume if campaign finished' },\n { field: 'resumePausedCampaign', flags: '--resume-paused', description: 'Resume if campaign paused' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/AddLeadsToCampaignV2' },\n fieldMappings: { campaignId: 'body', leadsJson: 'body', resumeFinishedCampaign: 'body', resumePausedCampaign: 'body' },\n handler: async (input, client) => {\n const accountLeadPairs = JSON.parse(input.leadsJson as string);\n const body: Record<string, unknown> = {\n campaignId: input.campaignId,\n accountLeadPairs,\n };\n if (input.resumeFinishedCampaign !== undefined) body.resumeFinishedCampaign = input.resumeFinishedCampaign;\n if (input.resumePausedCampaign !== undefined) body.resumePausedCampaign = input.resumePausedCampaign;\n return client.request({ method: 'POST', path: '/campaign/AddLeadsToCampaignV2', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsStopLeadCommand: CommandDefinition = {\n name: 'campaigns_stop_lead',\n group: 'campaigns',\n subcommand: 'stop-lead',\n description: 'Stop the progression of a lead in a campaign.',\n examples: [\n 'heyreach campaigns stop-lead --campaign-id 123 --lead-url \"https://linkedin.com/in/janedoe\"',\n 'heyreach campaigns stop-lead --campaign-id 123 --lead-member-id \"ABC123\"',\n ],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n leadMemberId: z.string().optional().describe('LinkedIn member ID'),\n leadUrl: z.string().optional().describe('LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n { field: 'leadMemberId', flags: '--lead-member-id <id>', description: 'LinkedIn member ID' },\n { field: 'leadUrl', flags: '--lead-url <url>', description: 'LinkedIn profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/StopLeadInCampaign' },\n fieldMappings: { campaignId: 'body', leadMemberId: 'body', leadUrl: 'body' },\n handler: (input, client) => executeCommand(campaignsStopLeadCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const campaignsGetLeadsCommand: CommandDefinition = {\n name: 'campaigns_get_leads',\n group: 'campaigns',\n subcommand: 'get-leads',\n description: 'Get leads from a campaign (Lead Analytics). Shows pending leads about to start executing.',\n examples: ['heyreach campaigns get-leads --campaign-id 123 --pretty'],\n inputSchema: z.object({\n campaignId: z.coerce.number().describe('Campaign ID'),\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n timeFrom: z.string().optional().describe('Start time (ISO 8601)'),\n timeTo: z.string().optional().describe('End time (ISO 8601)'),\n timeFilter: z.string().optional().describe('Time filter: CreationTime|Everywhere|LastActionTakenTime|FailedTime|LastActionTakenOrFailedTime'),\n }),\n cliMappings: {\n options: [\n { field: 'campaignId', flags: '--campaign-id <id>', description: 'Campaign ID' },\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'timeFrom', flags: '--time-from <iso>', description: 'Start time (ISO 8601)' },\n { field: 'timeTo', flags: '--time-to <iso>', description: 'End time (ISO 8601)' },\n { field: 'timeFilter', flags: '--time-filter <type>', description: 'Time filter type' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/GetLeadsFromCampaign' },\n fieldMappings: { campaignId: 'body', offset: 'body', limit: 'body', timeFrom: 'body', timeTo: 'body', timeFilter: 'body' },\n handler: (input, client) => executeCommand(campaignsGetLeadsCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\nimport { ValidationError } from '../../core/errors.js';\n\nexport const campaignsGetForLeadCommand: CommandDefinition = {\n name: 'campaigns_get_for_lead',\n group: 'campaigns',\n subcommand: 'get-for-lead',\n description: 'Get campaigns where a specific lead is enrolled.',\n examples: [\n 'heyreach campaigns get-for-lead --profile-url \"https://linkedin.com/in/janedoe\" --pretty',\n 'heyreach campaigns get-for-lead --email \"jane@example.com\"',\n ],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n email: z.string().optional().describe('Lead email address'),\n linkedinId: z.string().optional().describe('Lead LinkedIn ID'),\n profileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'email', flags: '--email <email>', description: 'Lead email address' },\n { field: 'linkedinId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn ID' },\n { field: 'profileUrl', flags: '--profile-url <url>', description: 'Lead LinkedIn profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/campaign/GetCampaignsForLead' },\n fieldMappings: { offset: 'body', limit: 'body', email: 'body', linkedinId: 'body', profileUrl: 'body' },\n handler: (input, client) => {\n if (!input.email && !input.linkedinId && !input.profileUrl) {\n throw new ValidationError('At least one of --email, --linkedin-id, or --profile-url is required.');\n }\n return executeCommand(campaignsGetForLeadCommand, input, client);\n },\n};\n","import { campaignsListCommand } from './list.js';\nimport { campaignsGetCommand } from './get.js';\nimport { campaignsResumeCommand } from './resume.js';\nimport { campaignsPauseCommand } from './pause.js';\nimport { campaignsAddLeadsCommand } from './add-leads.js';\nimport { campaignsStopLeadCommand } from './stop-lead.js';\nimport { campaignsGetLeadsCommand } from './get-leads.js';\nimport { campaignsGetForLeadCommand } from './get-for-lead.js';\n\nexport const campaignCommands = [\n campaignsListCommand,\n campaignsGetCommand,\n campaignsResumeCommand,\n campaignsPauseCommand,\n campaignsAddLeadsCommand,\n campaignsStopLeadCommand,\n campaignsGetLeadsCommand,\n campaignsGetForLeadCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const inboxListCommand: CommandDefinition = {\n name: 'inbox_list',\n group: 'inbox',\n subcommand: 'list',\n description: 'Get a paginated list of LinkedIn conversations. Up to 100 per request.',\n examples: [\n 'heyreach inbox list --pretty',\n 'heyreach inbox list --search \"product demo\" --seen false',\n ],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n linkedInAccountIds: z.string().optional().describe('Comma-separated LinkedIn account IDs'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs'),\n searchString: z.string().optional().describe('Search conversations'),\n leadLinkedInId: z.string().optional().describe('Filter by lead LinkedIn ID'),\n leadProfileUrl: z.string().optional().describe('Filter by lead profile URL'),\n tags: z.string().optional().describe('Comma-separated lead tags'),\n seen: z.string().optional().describe('Filter by seen status: true/false'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'linkedInAccountIds', flags: '--account-ids <list>', description: 'Comma-separated LinkedIn account IDs' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n { field: 'searchString', flags: '--search <text>', description: 'Search conversations' },\n { field: 'leadLinkedInId', flags: '--lead-linkedin-id <id>', description: 'Filter by lead LinkedIn ID' },\n { field: 'leadProfileUrl', flags: '--lead-profile-url <url>', description: 'Filter by lead profile URL' },\n { field: 'tags', flags: '--tags <list>', description: 'Comma-separated lead tags' },\n { field: 'seen', flags: '--seen <bool>', description: 'Filter by seen status' },\n ],\n },\n endpoint: { method: 'POST', path: '/inbox/GetConversationsV2' },\n fieldMappings: {},\n handler: async (input, client) => {\n const filters: Record<string, unknown> = {};\n if (input.linkedInAccountIds) filters.linkedInAccountIds = input.linkedInAccountIds.split(',').map((s: string) => Number(s.trim()));\n if (input.campaignIds) filters.campaignIds = input.campaignIds.split(',').map((s: string) => Number(s.trim()));\n if (input.searchString) filters.searchString = input.searchString;\n if (input.leadLinkedInId) filters.leadLinkedInId = input.leadLinkedInId;\n if (input.leadProfileUrl) filters.leadProfileUrl = input.leadProfileUrl;\n if (input.tags) filters.tags = input.tags.split(',').map((s: string) => s.trim());\n if (input.seen !== undefined) filters.seen = input.seen === 'true';\n return client.request({\n method: 'POST',\n path: '/inbox/GetConversationsV2',\n body: { offset: input.offset, limit: input.limit, filters },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const inboxGetCommand: CommandDefinition = {\n name: 'inbox_get',\n group: 'inbox',\n subcommand: 'get',\n description: 'Get a LinkedIn conversation with messages by account ID and conversation ID.',\n examples: ['heyreach inbox get --account-id 123 --conversation-id \"abc-def\"'],\n inputSchema: z.object({\n accountId: z.coerce.number().describe('LinkedIn account ID'),\n conversationId: z.string().describe('Conversation ID'),\n }),\n cliMappings: {\n options: [\n { field: 'accountId', flags: '--account-id <id>', description: 'LinkedIn account ID' },\n { field: 'conversationId', flags: '--conversation-id <id>', description: 'Conversation ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/inbox/GetChatroom/{accountId}/{conversationId}' },\n fieldMappings: { accountId: 'path', conversationId: 'path' },\n handler: async (input, client) => {\n return client.request({\n method: 'GET',\n path: `/inbox/GetChatroom/${encodeURIComponent(String(input.accountId))}/${encodeURIComponent(String(input.conversationId))}`,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const inboxSendCommand: CommandDefinition = {\n name: 'inbox_send',\n group: 'inbox',\n subcommand: 'send',\n description: 'Send a message to a LinkedIn conversation.',\n examples: ['heyreach inbox send --conversation-id \"abc\" --account-id 123 --message \"Hello!\"'],\n inputSchema: z.object({\n message: z.string().describe('Message text'),\n conversationId: z.string().describe('Conversation ID'),\n linkedInAccountId: z.coerce.number().describe('LinkedIn account ID'),\n subject: z.string().optional().describe('Message subject'),\n }),\n cliMappings: {\n options: [\n { field: 'message', flags: '--message <text>', description: 'Message text' },\n { field: 'conversationId', flags: '--conversation-id <id>', description: 'Conversation ID' },\n { field: 'linkedInAccountId', flags: '--account-id <id>', description: 'LinkedIn account ID' },\n { field: 'subject', flags: '--subject <text>', description: 'Message subject' },\n ],\n },\n endpoint: { method: 'POST', path: '/inbox/SendMessage' },\n fieldMappings: { message: 'body', conversationId: 'body', linkedInAccountId: 'body', subject: 'body' },\n handler: (input, client) => executeCommand(inboxSendCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const inboxSetSeenCommand: CommandDefinition = {\n name: 'inbox_set_seen',\n group: 'inbox',\n subcommand: 'set-seen',\n description: 'Mark a conversation as seen or unseen.',\n examples: ['heyreach inbox set-seen --conversation-id \"abc\" --account-id 123 --seen true'],\n inputSchema: z.object({\n conversationId: z.string().describe('Conversation ID'),\n linkedInAccountId: z.coerce.number().describe('LinkedIn account ID'),\n seen: z.coerce.boolean().describe('Mark as seen (true) or unseen (false)'),\n }),\n cliMappings: {\n options: [\n { field: 'conversationId', flags: '--conversation-id <id>', description: 'Conversation ID' },\n { field: 'linkedInAccountId', flags: '--account-id <id>', description: 'LinkedIn account ID' },\n { field: 'seen', flags: '--seen <bool>', description: 'Seen status (true/false)' },\n ],\n },\n endpoint: { method: 'POST', path: '/inbox/SetSeenStatus' },\n fieldMappings: { conversationId: 'body', linkedInAccountId: 'body', seen: 'body' },\n handler: (input, client) => executeCommand(inboxSetSeenCommand, input, client),\n};\n","import { inboxListCommand } from './list.js';\nimport { inboxGetCommand } from './get.js';\nimport { inboxSendCommand } from './send.js';\nimport { inboxSetSeenCommand } from './set-seen.js';\n\nexport const inboxCommands = [\n inboxListCommand,\n inboxGetCommand,\n inboxSendCommand,\n inboxSetSeenCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const accountsListCommand: CommandDefinition = {\n name: 'accounts_list',\n group: 'accounts',\n subcommand: 'list',\n description: 'Get a paginated list of all LinkedIn accounts. Up to 100 per request.',\n examples: ['heyreach accounts list --pretty', 'heyreach accounts list --keyword \"john\"'],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n keyword: z.string().optional().describe('Search by account name'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Search by account name' },\n ],\n },\n endpoint: { method: 'POST', path: '/li_account/GetAll' },\n fieldMappings: { offset: 'body', limit: 'body', keyword: 'body' },\n handler: (input, client) => executeCommand(accountsListCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const accountsGetCommand: CommandDefinition = {\n name: 'accounts_get',\n group: 'accounts',\n subcommand: 'get',\n description: 'Get a LinkedIn account by ID.',\n examples: ['heyreach accounts get --account-id 123 --pretty'],\n inputSchema: z.object({\n accountId: z.coerce.number().describe('LinkedIn account ID'),\n }),\n cliMappings: {\n options: [\n { field: 'accountId', flags: '--account-id <id>', description: 'LinkedIn account ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/li_account/GetById' },\n fieldMappings: { accountId: 'query' },\n handler: (input, client) => executeCommand(accountsGetCommand, input, client),\n};\n","import { accountsListCommand } from './list.js';\nimport { accountsGetCommand } from './get.js';\n\nexport const accountCommands = [\n accountsListCommand,\n accountsGetCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const listsGetCommand: CommandDefinition = {\n name: 'lists_get',\n group: 'lists',\n subcommand: 'get',\n description: 'Get a lead or company list by ID.',\n examples: ['heyreach lists get --list-id 456 --pretty'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/list/GetById' },\n fieldMappings: { listId: 'query' },\n handler: (input, client) => executeCommand(listsGetCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const listsListCommand: CommandDefinition = {\n name: 'lists_list',\n group: 'lists',\n subcommand: 'list',\n description: 'Get a paginated list of all lead and company lists. Up to 100 per request.',\n examples: [\n 'heyreach lists list --pretty',\n 'heyreach lists list --list-type USER_LIST',\n ],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n keyword: z.string().optional().describe('Search by list name'),\n listType: z.string().optional().describe('Filter by type: USER_LIST or COMPANY_LIST'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Search by list name' },\n { field: 'listType', flags: '--list-type <type>', description: 'USER_LIST or COMPANY_LIST' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/GetAll' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = { offset: input.offset, limit: input.limit };\n if (input.keyword) body.keyword = input.keyword;\n if (input.listType) body.listType = input.listType;\n if (input.campaignIds) body.campaignIds = input.campaignIds.split(',').map((s: string) => Number(s.trim()));\n return client.request({ method: 'POST', path: '/list/GetAll', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const listsCreateCommand: CommandDefinition = {\n name: 'lists_create',\n group: 'lists',\n subcommand: 'create',\n description: 'Create an empty lead or company list.',\n examples: [\n 'heyreach lists create --name \"Q1 Prospects\"',\n 'heyreach lists create --name \"Target Companies\" --type COMPANY_LIST',\n ],\n inputSchema: z.object({\n name: z.string().describe('List name'),\n type: z.string().optional().describe('List type: USER_LIST (default) or COMPANY_LIST'),\n }),\n cliMappings: {\n options: [\n { field: 'name', flags: '--name <name>', description: 'List name' },\n { field: 'type', flags: '--type <type>', description: 'USER_LIST or COMPANY_LIST' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/CreateEmptyList' },\n fieldMappings: { name: 'body', type: 'body' },\n handler: (input, client) => executeCommand(listsCreateCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const listsGetLeadsCommand: CommandDefinition = {\n name: 'lists_get_leads',\n group: 'lists',\n subcommand: 'get-leads',\n description: 'Get a paginated list of leads from a lead list. Up to 1000 per request.',\n examples: ['heyreach lists get-leads --list-id 456 --pretty'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(1000).default(100).describe('Items per page (max 1000)'),\n keyword: z.string().optional().describe('Search leads'),\n leadProfileUrl: z.string().optional().describe('Filter by profile URL'),\n leadLinkedInId: z.string().optional().describe('Filter by LinkedIn ID'),\n createdFrom: z.string().optional().describe('Created from (ISO 8601)'),\n createdTo: z.string().optional().describe('Created to (ISO 8601)'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Search leads' },\n { field: 'leadProfileUrl', flags: '--profile-url <url>', description: 'Filter by profile URL' },\n { field: 'leadLinkedInId', flags: '--linkedin-id <id>', description: 'Filter by LinkedIn ID' },\n { field: 'createdFrom', flags: '--created-from <iso>', description: 'Created from (ISO 8601)' },\n { field: 'createdTo', flags: '--created-to <iso>', description: 'Created to (ISO 8601)' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/GetLeadsFromList' },\n fieldMappings: { listId: 'body', offset: 'body', limit: 'body', keyword: 'body', leadProfileUrl: 'body', leadLinkedInId: 'body', createdFrom: 'body', createdTo: 'body' },\n handler: (input, client) => executeCommand(listsGetLeadsCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const listsAddLeadsCommand: CommandDefinition = {\n name: 'lists_add_leads',\n group: 'lists',\n subcommand: 'add-leads',\n description: 'Add leads to a lead list (V2 — returns detailed counts). Up to 100 per request. Accepts JSON array via --leads-json.',\n examples: [\n 'heyreach lists add-leads --list-id 456 --leads-json \\'[{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"profileUrl\":\"https://linkedin.com/in/janedoe\"}]\\'',\n ],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n leadsJson: z.string().describe('JSON array of lead objects'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'leadsJson', flags: '--leads-json <json>', description: 'JSON array of lead objects' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/AddLeadsToListV2' },\n fieldMappings: {},\n handler: async (input, client) => {\n const leads = JSON.parse(input.leadsJson as string);\n return client.request({\n method: 'POST',\n path: '/list/AddLeadsToListV2',\n body: { listId: input.listId, leads },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const listsDeleteLeadsCommand: CommandDefinition = {\n name: 'lists_delete_leads',\n group: 'lists',\n subcommand: 'delete-leads',\n description: 'Delete leads from a list by LinkedIn member IDs.',\n examples: ['heyreach lists delete-leads --list-id 456 --member-ids \"id1,id2,id3\"'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n memberIds: z.string().describe('Comma-separated LinkedIn member IDs'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'memberIds', flags: '--member-ids <list>', description: 'Comma-separated LinkedIn member IDs' },\n ],\n },\n endpoint: { method: 'DELETE', path: '/list/DeleteLeadsFromList' },\n fieldMappings: {},\n handler: async (input, client) => {\n const leadMemberIds = (input.memberIds as string).split(',').map((s) => s.trim());\n return client.request({\n method: 'DELETE',\n path: '/list/DeleteLeadsFromList',\n body: { listId: input.listId, leadMemberIds },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const listsDeleteLeadsByUrlCommand: CommandDefinition = {\n name: 'lists_delete_leads_by_url',\n group: 'lists',\n subcommand: 'delete-leads-by-url',\n description: 'Delete leads from a list by LinkedIn profile URLs.',\n examples: ['heyreach lists delete-leads-by-url --list-id 456 --urls \"https://linkedin.com/in/jane,https://linkedin.com/in/john\"'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n urls: z.string().describe('Comma-separated LinkedIn profile URLs'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'urls', flags: '--urls <list>', description: 'Comma-separated LinkedIn profile URLs' },\n ],\n },\n endpoint: { method: 'DELETE', path: '/list/DeleteLeadsFromListByProfileUrl' },\n fieldMappings: {},\n handler: async (input, client) => {\n const profileUrls = (input.urls as string).split(',').map((s) => s.trim());\n return client.request({\n method: 'DELETE',\n path: '/list/DeleteLeadsFromListByProfileUrl',\n body: { listId: input.listId, profileUrls },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const listsGetCompaniesCommand: CommandDefinition = {\n name: 'lists_get_companies',\n group: 'lists',\n subcommand: 'get-companies',\n description: 'Get a paginated list of companies from a company list. Up to 1000 per request.',\n examples: ['heyreach lists get-companies --list-id 789 --pretty'],\n inputSchema: z.object({\n listId: z.coerce.number().describe('List ID'),\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(1000).default(100).describe('Items per page (max 1000)'),\n keyword: z.string().optional().describe('Search companies'),\n }),\n cliMappings: {\n options: [\n { field: 'listId', flags: '--list-id <id>', description: 'List ID' },\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'keyword', flags: '--keyword <text>', description: 'Search companies' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/GetCompaniesFromList' },\n fieldMappings: { listId: 'body', offset: 'body', limit: 'body', keyword: 'body' },\n handler: (input, client) => executeCommand(listsGetCompaniesCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\nimport { ValidationError } from '../../core/errors.js';\n\nexport const listsGetForLeadCommand: CommandDefinition = {\n name: 'lists_get_for_lead',\n group: 'lists',\n subcommand: 'get-for-lead',\n description: 'Get lists associated with a specific lead.',\n examples: ['heyreach lists get-for-lead --profile-url \"https://linkedin.com/in/janedoe\"'],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n email: z.string().optional().describe('Lead email'),\n linkedinId: z.string().optional().describe('Lead LinkedIn ID'),\n profileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'email', flags: '--email <email>', description: 'Lead email' },\n { field: 'linkedinId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn ID' },\n { field: 'profileUrl', flags: '--profile-url <url>', description: 'Lead profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/list/GetListsForLead' },\n fieldMappings: { offset: 'body', limit: 'body', email: 'body', linkedinId: 'body', profileUrl: 'body' },\n handler: (input, client) => {\n if (!input.email && !input.linkedinId && !input.profileUrl) {\n throw new ValidationError('At least one of --email, --linkedin-id, or --profile-url is required.');\n }\n return executeCommand(listsGetForLeadCommand, input, client);\n },\n};\n","import { listsGetCommand } from './get.js';\nimport { listsListCommand } from './list.js';\nimport { listsCreateCommand } from './create.js';\nimport { listsGetLeadsCommand } from './get-leads.js';\nimport { listsAddLeadsCommand } from './add-leads.js';\nimport { listsDeleteLeadsCommand } from './delete-leads.js';\nimport { listsDeleteLeadsByUrlCommand } from './delete-leads-by-url.js';\nimport { listsGetCompaniesCommand } from './get-companies.js';\nimport { listsGetForLeadCommand } from './get-for-lead.js';\n\nexport const listCommands = [\n listsGetCommand,\n listsListCommand,\n listsCreateCommand,\n listsGetLeadsCommand,\n listsAddLeadsCommand,\n listsDeleteLeadsCommand,\n listsDeleteLeadsByUrlCommand,\n listsGetCompaniesCommand,\n listsGetForLeadCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const statsOverviewCommand: CommandDefinition = {\n name: 'stats_overview',\n group: 'stats',\n subcommand: 'overview',\n description: 'Get overall stats with day-by-day breakdown for specified date range.',\n examples: [\n 'heyreach stats overview --start-date 2025-01-01 --end-date 2025-01-31 --pretty',\n 'heyreach stats overview --start-date 2025-01-01 --end-date 2025-01-31 --campaign-ids \"1,2,3\"',\n ],\n inputSchema: z.object({\n startDate: z.string().optional().describe('Start date (ISO 8601). Defaults to 30 days ago.'),\n endDate: z.string().optional().describe('End date (ISO 8601). Defaults to today.'),\n accountIds: z.string().optional().describe('Comma-separated LinkedIn account IDs (empty = all)'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs (empty = all)'),\n }),\n cliMappings: {\n options: [\n { field: 'startDate', flags: '--start-date <iso>', description: 'Start date (ISO 8601)' },\n { field: 'endDate', flags: '--end-date <iso>', description: 'End date (ISO 8601)' },\n { field: 'accountIds', flags: '--account-ids <list>', description: 'Comma-separated LinkedIn account IDs' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/stats/GetOverallStats' },\n fieldMappings: {},\n handler: async (input, client) => {\n const now = new Date();\n const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n const body: Record<string, unknown> = {\n startDate: input.startDate ?? thirtyDaysAgo.toISOString(),\n endDate: input.endDate ?? now.toISOString(),\n accountIds: input.accountIds ? input.accountIds.split(',').map((s: string) => Number(s.trim())) : [],\n campaignIds: input.campaignIds ? input.campaignIds.split(',').map((s: string) => Number(s.trim())) : [],\n };\n return client.request({ method: 'POST', path: '/stats/GetOverallStats', body });\n },\n};\n","import { statsOverviewCommand } from './overview.js';\n\nexport const statsCommands = [statsOverviewCommand];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const leadsGetCommand: CommandDefinition = {\n name: 'leads_get',\n group: 'leads',\n subcommand: 'get',\n description: 'Get lead details by LinkedIn profile URL.',\n examples: ['heyreach leads get --profile-url \"https://linkedin.com/in/janedoe\" --pretty'],\n inputSchema: z.object({\n profileUrl: z.string().describe('LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'profileUrl', flags: '--profile-url <url>', description: 'LinkedIn profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead/GetLead' },\n fieldMappings: { profileUrl: 'body' },\n handler: (input, client) => executeCommand(leadsGetCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const leadsAddTagsCommand: CommandDefinition = {\n name: 'leads_add_tags',\n group: 'leads',\n subcommand: 'add-tags',\n description: 'Add tags to a lead. Existing tags unchanged.',\n examples: ['heyreach leads add-tags --profile-url \"https://linkedin.com/in/jane\" --tags \"hot,priority\" --create-if-missing'],\n inputSchema: z.object({\n tags: z.string().describe('Comma-separated tag names'),\n createTagIfNotExisting: z.coerce.boolean().default(true).describe('Create tag if it does not exist'),\n leadProfileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n leadLinkedInId: z.string().optional().describe('Lead LinkedIn member ID'),\n }),\n cliMappings: {\n options: [\n { field: 'tags', flags: '--tags <list>', description: 'Comma-separated tag names' },\n { field: 'createTagIfNotExisting', flags: '--create-if-missing', description: 'Create tag if it does not exist' },\n { field: 'leadProfileUrl', flags: '--profile-url <url>', description: 'Lead LinkedIn profile URL' },\n { field: 'leadLinkedInId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn member ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead/AddTags' },\n fieldMappings: {},\n handler: async (input, client) => {\n const tagList = (input.tags as string).split(',').map((s) => s.trim());\n const body: Record<string, unknown> = {\n tags: tagList,\n createTagIfNotExisting: input.createTagIfNotExisting,\n };\n if (input.leadProfileUrl) body.leadProfileUrl = input.leadProfileUrl;\n if (input.leadLinkedInId) body.leadLinkedInId = input.leadLinkedInId;\n return client.request({ method: 'POST', path: '/lead/AddTags', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const leadsGetTagsCommand: CommandDefinition = {\n name: 'leads_get_tags',\n group: 'leads',\n subcommand: 'get-tags',\n description: 'Get tags for a lead, alphabetically sorted.',\n examples: ['heyreach leads get-tags --profile-url \"https://linkedin.com/in/janedoe\"'],\n inputSchema: z.object({\n profileUrl: z.string().describe('LinkedIn profile URL'),\n }),\n cliMappings: {\n options: [\n { field: 'profileUrl', flags: '--profile-url <url>', description: 'LinkedIn profile URL' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead/GetTags' },\n fieldMappings: { profileUrl: 'body' },\n handler: (input, client) => executeCommand(leadsGetTagsCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const leadsReplaceTagsCommand: CommandDefinition = {\n name: 'leads_replace_tags',\n group: 'leads',\n subcommand: 'replace-tags',\n description: 'Remove existing tags and replace with new tags.',\n examples: ['heyreach leads replace-tags --profile-url \"https://linkedin.com/in/jane\" --tags \"vip,enterprise\"'],\n inputSchema: z.object({\n tags: z.string().describe('Comma-separated tag names'),\n createTagIfNotExisting: z.coerce.boolean().default(true).describe('Create tag if it does not exist'),\n leadProfileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n leadLinkedInId: z.string().optional().describe('Lead LinkedIn member ID'),\n }),\n cliMappings: {\n options: [\n { field: 'tags', flags: '--tags <list>', description: 'Comma-separated tag names' },\n { field: 'createTagIfNotExisting', flags: '--create-if-missing', description: 'Create tag if it does not exist' },\n { field: 'leadProfileUrl', flags: '--profile-url <url>', description: 'Lead LinkedIn profile URL' },\n { field: 'leadLinkedInId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn member ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead/ReplaceTags' },\n fieldMappings: {},\n handler: async (input, client) => {\n const tagList = (input.tags as string).split(',').map((s) => s.trim());\n const body: Record<string, unknown> = {\n tags: tagList,\n createTagIfNotExisting: input.createTagIfNotExisting,\n };\n if (input.leadProfileUrl) body.leadProfileUrl = input.leadProfileUrl;\n if (input.leadLinkedInId) body.leadLinkedInId = input.leadLinkedInId;\n return client.request({ method: 'POST', path: '/lead/ReplaceTags', body });\n },\n};\n","import { leadsGetCommand } from './get.js';\nimport { leadsAddTagsCommand } from './add-tags.js';\nimport { leadsGetTagsCommand } from './get-tags.js';\nimport { leadsReplaceTagsCommand } from './replace-tags.js';\n\nexport const leadCommands = [\n leadsGetCommand,\n leadsAddTagsCommand,\n leadsGetTagsCommand,\n leadsReplaceTagsCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const leadTagsCreateCommand: CommandDefinition = {\n name: 'lead_tags_create',\n group: 'lead-tags',\n subcommand: 'create',\n description: 'Create one or multiple tags for your workspace. Colors: Blue, Green, Purple, Pink, Red, Cyan, Yellow, Orange.',\n examples: ['heyreach lead-tags create --tags-json \\'[{\"displayName\":\"VIP\",\"color\":\"Purple\"}]\\''],\n inputSchema: z.object({\n tagsJson: z.string().describe('JSON array of tag objects with displayName and color'),\n }),\n cliMappings: {\n options: [\n { field: 'tagsJson', flags: '--tags-json <json>', description: 'JSON array of {displayName, color} objects' },\n ],\n },\n endpoint: { method: 'POST', path: '/lead_tags/CreateTags' },\n fieldMappings: {},\n handler: async (input, client) => {\n const tags = JSON.parse(input.tagsJson as string);\n return client.request({\n method: 'POST',\n path: '/lead_tags/CreateTags',\n body: { tags },\n });\n },\n};\n","import { leadTagsCreateCommand } from './create.js';\n\nexport const leadTagCommands = [leadTagsCreateCommand];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const webhooksCreateCommand: CommandDefinition = {\n name: 'webhooks_create',\n group: 'webhooks',\n subcommand: 'create',\n description: 'Create a webhook. Event types: CONNECTION_REQUEST_SENT, CONNECTION_REQUEST_ACCEPTED, MESSAGE_SENT, MESSAGE_REPLY_RECEIVED, INMAIL_SENT, INMAIL_REPLY_RECEIVED, EVERY_MESSAGE_REPLY_RECEIVED, FOLLOW_SENT, LIKED_POST, VIEWED_PROFILE, CAMPAIGN_COMPLETED, LEAD_TAG_UPDATED.',\n examples: ['heyreach webhooks create --name \"Replies\" --url \"https://example.com/hook\" --event-type MESSAGE_REPLY_RECEIVED'],\n inputSchema: z.object({\n webhookName: z.string().describe('Webhook name'),\n webhookUrl: z.string().describe('Webhook URL'),\n eventType: z.string().describe('Event type'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs (empty = all)'),\n }),\n cliMappings: {\n options: [\n { field: 'webhookName', flags: '--name <name>', description: 'Webhook name' },\n { field: 'webhookUrl', flags: '--url <url>', description: 'Webhook URL' },\n { field: 'eventType', flags: '--event-type <type>', description: 'Event type' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/webhooks/CreateWebhook' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = {\n webhookName: input.webhookName,\n webhookUrl: input.webhookUrl,\n eventType: input.eventType,\n };\n if (input.campaignIds) body.campaignIds = input.campaignIds.split(',').map((s: string) => Number(s.trim()));\n return client.request({ method: 'POST', path: '/webhooks/CreateWebhook', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const webhooksGetCommand: CommandDefinition = {\n name: 'webhooks_get',\n group: 'webhooks',\n subcommand: 'get',\n description: 'Get a webhook by ID.',\n examples: ['heyreach webhooks get --webhook-id 123 --pretty'],\n inputSchema: z.object({\n webhookId: z.coerce.number().describe('Webhook ID'),\n }),\n cliMappings: {\n options: [\n { field: 'webhookId', flags: '--webhook-id <id>', description: 'Webhook ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/webhooks/GetWebhookById' },\n fieldMappings: { webhookId: 'query' },\n handler: (input, client) => executeCommand(webhooksGetCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const webhooksListCommand: CommandDefinition = {\n name: 'webhooks_list',\n group: 'webhooks',\n subcommand: 'list',\n description: 'Get all webhooks.',\n examples: ['heyreach webhooks list --pretty'],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n ],\n },\n endpoint: { method: 'POST', path: '/webhooks/GetAllWebhooks' },\n fieldMappings: { offset: 'body', limit: 'body' },\n handler: (input, client) => executeCommand(webhooksListCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const webhooksUpdateCommand: CommandDefinition = {\n name: 'webhooks_update',\n group: 'webhooks',\n subcommand: 'update',\n description: 'Update an existing webhook. Only provided fields are changed.',\n examples: ['heyreach webhooks update --webhook-id 123 --name \"Updated Name\" --active false'],\n inputSchema: z.object({\n webhookId: z.coerce.number().describe('Webhook ID'),\n webhookName: z.string().optional().describe('New webhook name'),\n webhookUrl: z.string().optional().describe('New webhook URL'),\n eventType: z.string().optional().describe('New event type'),\n campaignIds: z.string().optional().describe('Comma-separated campaign IDs'),\n isActive: z.string().optional().describe('Active status: true/false'),\n }),\n cliMappings: {\n options: [\n { field: 'webhookId', flags: '--webhook-id <id>', description: 'Webhook ID' },\n { field: 'webhookName', flags: '--name <name>', description: 'New webhook name' },\n { field: 'webhookUrl', flags: '--url <url>', description: 'New webhook URL' },\n { field: 'eventType', flags: '--event-type <type>', description: 'New event type' },\n { field: 'campaignIds', flags: '--campaign-ids <list>', description: 'Comma-separated campaign IDs' },\n { field: 'isActive', flags: '--active <bool>', description: 'Active status (true/false)' },\n ],\n },\n endpoint: { method: 'PATCH', path: '/webhooks/UpdateWebhook' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = {};\n if (input.webhookName !== undefined) body.webhookName = input.webhookName;\n if (input.webhookUrl !== undefined) body.webhookUrl = input.webhookUrl;\n if (input.eventType !== undefined) body.eventType = input.eventType;\n if (input.campaignIds !== undefined) body.campaignIds = input.campaignIds.split(',').map((s: string) => Number(s.trim()));\n if (input.isActive !== undefined) body.isActive = input.isActive === 'true';\n return client.request({\n method: 'PATCH',\n path: '/webhooks/UpdateWebhook',\n query: { webhookId: input.webhookId },\n body,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const webhooksDeleteCommand: CommandDefinition = {\n name: 'webhooks_delete',\n group: 'webhooks',\n subcommand: 'delete',\n description: 'Delete a webhook.',\n examples: ['heyreach webhooks delete --webhook-id 123'],\n inputSchema: z.object({\n webhookId: z.coerce.number().describe('Webhook ID'),\n }),\n cliMappings: {\n options: [\n { field: 'webhookId', flags: '--webhook-id <id>', description: 'Webhook ID' },\n ],\n },\n endpoint: { method: 'DELETE', path: '/webhooks/DeleteWebhook' },\n fieldMappings: { webhookId: 'query' },\n handler: (input, client) => executeCommand(webhooksDeleteCommand, input, client),\n};\n","import { webhooksCreateCommand } from './create.js';\nimport { webhooksGetCommand } from './get.js';\nimport { webhooksListCommand } from './list.js';\nimport { webhooksUpdateCommand } from './update.js';\nimport { webhooksDeleteCommand } from './delete.js';\n\nexport const webhookCommands = [\n webhooksCreateCommand,\n webhooksGetCommand,\n webhooksListCommand,\n webhooksUpdateCommand,\n webhooksDeleteCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const networkListCommand: CommandDefinition = {\n name: 'network_list',\n group: 'network',\n subcommand: 'list',\n description: 'Get paginated network connections for a LinkedIn sender. Uses pageNumber/pageSize pagination.',\n examples: ['heyreach network list --sender-id 123 --pretty'],\n inputSchema: z.object({\n senderId: z.coerce.number().describe('LinkedIn sender account ID'),\n pageNumber: z.coerce.number().default(1).describe('Page number (starts at 1)'),\n pageSize: z.coerce.number().min(1).max(100).default(100).describe('Page size'),\n }),\n cliMappings: {\n options: [\n { field: 'senderId', flags: '--sender-id <id>', description: 'LinkedIn sender account ID' },\n { field: 'pageNumber', flags: '--page <number>', description: 'Page number' },\n { field: 'pageSize', flags: '--page-size <number>', description: 'Page size' },\n ],\n },\n endpoint: { method: 'POST', path: '/MyNetwork/GetMyNetworkForSender' },\n fieldMappings: { senderId: 'body', pageNumber: 'body', pageSize: 'body' },\n handler: (input, client) => executeCommand(networkListCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const networkCheckCommand: CommandDefinition = {\n name: 'network_check',\n group: 'network',\n subcommand: 'check',\n description: 'Check if a lead is a connection of a sender. Provide exactly one of --profile-url or --linkedin-id.',\n examples: [\n 'heyreach network check --sender-id 123 --profile-url \"https://linkedin.com/in/janedoe\"',\n 'heyreach network check --sender-id 123 --linkedin-id \"ABC123\"',\n ],\n inputSchema: z.object({\n senderAccountId: z.coerce.number().describe('LinkedIn sender account ID'),\n leadProfileUrl: z.string().optional().describe('Lead LinkedIn profile URL'),\n leadLinkedInId: z.string().optional().describe('Lead LinkedIn member ID'),\n }),\n cliMappings: {\n options: [\n { field: 'senderAccountId', flags: '--sender-id <id>', description: 'LinkedIn sender account ID' },\n { field: 'leadProfileUrl', flags: '--profile-url <url>', description: 'Lead LinkedIn profile URL' },\n { field: 'leadLinkedInId', flags: '--linkedin-id <id>', description: 'Lead LinkedIn member ID' },\n ],\n },\n endpoint: { method: 'POST', path: '/MyNetwork/IsConnection' },\n fieldMappings: { senderAccountId: 'body', leadProfileUrl: 'body', leadLinkedInId: 'body' },\n handler: async (input, client) => {\n const body: Record<string, unknown> = { senderAccountId: input.senderAccountId };\n if (input.leadProfileUrl) body.leadProfileUrl = input.leadProfileUrl;\n if (input.leadLinkedInId) body.leadLinkedInId = input.leadLinkedInId;\n return client.request({ method: 'POST', path: '/MyNetwork/IsConnection', body });\n },\n};\n","import { networkListCommand } from './list.js';\nimport { networkCheckCommand } from './check.js';\n\nexport const networkCommands = [\n networkListCommand,\n networkCheckCommand,\n];\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgApiKeysCommand: CommandDefinition = {\n name: 'org_api_keys',\n group: 'org',\n subcommand: 'api-keys',\n description: 'Get API/integration keys for a workspace (requires Organization API key).',\n examples: ['heyreach org api-keys --workspace-id 123 --pretty'],\n inputSchema: z.object({\n workspaceId: z.coerce.number().describe('Workspace ID'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceId', flags: '--workspace-id <id>', description: 'Workspace ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/management/organizations/api-keys/workspaces/{workspaceId}' },\n fieldMappings: { workspaceId: 'path' },\n handler: async (input, client) => {\n return client.request({\n method: 'GET',\n path: `/management/organizations/api-keys/workspaces/${encodeURIComponent(String(input.workspaceId))}`,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgCreateApiKeyCommand: CommandDefinition = {\n name: 'org_create_api_key',\n group: 'org',\n subcommand: 'create-api-key',\n description: 'Generate a new API/integration key for a workspace. Types: PUBLIC, N8N, MAKE, ZAPIER, MCP.',\n examples: ['heyreach org create-api-key --workspace-id 123 --type PUBLIC'],\n inputSchema: z.object({\n workspaceId: z.coerce.number().describe('Workspace ID'),\n apiKeyType: z.string().describe('Key type: PUBLIC, N8N, MAKE, ZAPIER, MCP'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceId', flags: '--workspace-id <id>', description: 'Workspace ID' },\n { field: 'apiKeyType', flags: '--type <type>', description: 'Key type: PUBLIC, N8N, MAKE, ZAPIER, MCP' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/api-keys/workspaces/{workspaceId}' },\n fieldMappings: {},\n handler: async (input, client) => {\n return client.request({\n method: 'POST',\n path: `/management/organizations/api-keys/workspaces/${encodeURIComponent(String(input.workspaceId))}`,\n body: { apiKeyType: input.apiKeyType },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgWorkspacesCommand: CommandDefinition = {\n name: 'org_workspaces',\n group: 'org',\n subcommand: 'workspaces',\n description: 'List all workspaces in your organization (requires Organization API key).',\n examples: ['heyreach org workspaces --pretty'],\n inputSchema: z.object({\n Offset: z.coerce.number().default(0).describe('Pagination offset'),\n Limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n }),\n cliMappings: {\n options: [\n { field: 'Offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'Limit', flags: '--limit <number>', description: 'Items per page' },\n ],\n },\n endpoint: { method: 'GET', path: '/management/organizations/workspaces' },\n fieldMappings: { Offset: 'query', Limit: 'query' },\n handler: async (input, client) => {\n return client.request({\n method: 'GET',\n path: '/management/organizations/workspaces',\n query: { Offset: input.Offset, Limit: input.Limit },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\nimport { executeCommand } from '../../core/handler.js';\n\nexport const orgCreateWorkspaceCommand: CommandDefinition = {\n name: 'org_create_workspace',\n group: 'org',\n subcommand: 'create-workspace',\n description: 'Create a new workspace in your organization.',\n examples: ['heyreach org create-workspace --name \"Sales Team\" --seats-limit 10'],\n inputSchema: z.object({\n workspaceName: z.string().describe('Workspace name'),\n seatsLimit: z.coerce.number().optional().describe('Seat limit (null = unlimited)'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceName', flags: '--name <name>', description: 'Workspace name' },\n { field: 'seatsLimit', flags: '--seats-limit <number>', description: 'Seat limit' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/workspaces' },\n fieldMappings: { workspaceName: 'body', seatsLimit: 'body' },\n handler: (input, client) => executeCommand(orgCreateWorkspaceCommand, input, client),\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgUpdateWorkspaceCommand: CommandDefinition = {\n name: 'org_update_workspace',\n group: 'org',\n subcommand: 'update-workspace',\n description: 'Update a workspace in your organization.',\n examples: ['heyreach org update-workspace --workspace-id 123 --name \"New Name\" --seats-limit 20'],\n inputSchema: z.object({\n workspaceId: z.coerce.number().describe('Workspace ID'),\n workspaceName: z.string().optional().describe('New workspace name'),\n seatsLimit: z.coerce.number().optional().describe('New seat limit'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceId', flags: '--workspace-id <id>', description: 'Workspace ID' },\n { field: 'workspaceName', flags: '--name <name>', description: 'New workspace name' },\n { field: 'seatsLimit', flags: '--seats-limit <number>', description: 'New seat limit' },\n ],\n },\n endpoint: { method: 'PATCH', path: '/management/organizations/workspaces/{workspaceId}' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = {};\n if (input.workspaceName !== undefined) body.workspaceName = input.workspaceName;\n if (input.seatsLimit !== undefined) body.seatsLimit = { value: input.seatsLimit };\n return client.request({\n method: 'PATCH',\n path: `/management/organizations/workspaces/${encodeURIComponent(String(input.workspaceId))}`,\n body,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgUsersCommand: CommandDefinition = {\n name: 'org_users',\n group: 'org',\n subcommand: 'users',\n description: 'Get all existing and invited users in your organization.',\n examples: ['heyreach org users --pretty', 'heyreach org users --role Admin'],\n inputSchema: z.object({\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n role: z.string().optional().describe('Filter by role: Admin, Member, Manager'),\n invitationStatus: z.string().optional().describe('Comma-separated statuses: Accepted, Pending, Expired, Revoked'),\n }),\n cliMappings: {\n options: [\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'role', flags: '--role <role>', description: 'Filter by role' },\n { field: 'invitationStatus', flags: '--invitation-status <list>', description: 'Comma-separated invitation statuses' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = { offset: input.offset, limit: input.limit };\n if (input.role) body.role = input.role;\n if (input.invitationStatus) body.invitationStatus = input.invitationStatus.split(',').map((s: string) => s.trim());\n return client.request({ method: 'POST', path: '/management/organizations/users', body });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgGetUserCommand: CommandDefinition = {\n name: 'org_get_user',\n group: 'org',\n subcommand: 'get-user',\n description: 'Get information about a user by ID.',\n examples: ['heyreach org get-user --user-id 456 --pretty'],\n inputSchema: z.object({\n userId: z.coerce.number().describe('User ID'),\n }),\n cliMappings: {\n options: [\n { field: 'userId', flags: '--user-id <id>', description: 'User ID' },\n ],\n },\n endpoint: { method: 'GET', path: '/management/organizations/users/{userId}' },\n fieldMappings: { userId: 'path' },\n handler: async (input, client) => {\n return client.request({\n method: 'GET',\n path: `/management/organizations/users/${encodeURIComponent(String(input.userId))}`,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgWorkspaceUsersCommand: CommandDefinition = {\n name: 'org_workspace_users',\n group: 'org',\n subcommand: 'workspace-users',\n description: 'Get all users in a given workspace with role and permissions.',\n examples: ['heyreach org workspace-users --workspace-id 123 --pretty'],\n inputSchema: z.object({\n workspaceId: z.coerce.number().describe('Workspace ID'),\n offset: z.coerce.number().default(0).describe('Pagination offset'),\n limit: z.coerce.number().min(1).max(100).default(100).describe('Items per page'),\n role: z.string().optional().describe('Filter by role'),\n invitationStatus: z.string().optional().describe('Comma-separated invitation statuses'),\n }),\n cliMappings: {\n options: [\n { field: 'workspaceId', flags: '--workspace-id <id>', description: 'Workspace ID' },\n { field: 'offset', flags: '--offset <number>', description: 'Pagination offset' },\n { field: 'limit', flags: '--limit <number>', description: 'Items per page' },\n { field: 'role', flags: '--role <role>', description: 'Filter by role' },\n { field: 'invitationStatus', flags: '--invitation-status <list>', description: 'Comma-separated invitation statuses' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users/workspaces/{workspaceId}' },\n fieldMappings: {},\n handler: async (input, client) => {\n const body: Record<string, unknown> = { offset: input.offset, limit: input.limit };\n if (input.role) body.role = input.role;\n if (input.invitationStatus) body.invitationStatus = input.invitationStatus.split(',').map((s: string) => s.trim());\n return client.request({\n method: 'POST',\n path: `/management/organizations/users/workspaces/${encodeURIComponent(String(input.workspaceId))}`,\n body,\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgInviteAdminsCommand: CommandDefinition = {\n name: 'org_invite_admins',\n group: 'org',\n subcommand: 'invite-admins',\n description: 'Invite users as organization admins. Returns invitation URLs (no email sent).',\n examples: ['heyreach org invite-admins --inviter-email \"admin@co.com\" --emails \"user1@co.com,user2@co.com\"'],\n inputSchema: z.object({\n inviterEmail: z.string().describe('Email of the inviter'),\n emails: z.string().describe('Comma-separated emails to invite'),\n }),\n cliMappings: {\n options: [\n { field: 'inviterEmail', flags: '--inviter-email <email>', description: 'Inviter email' },\n { field: 'emails', flags: '--emails <list>', description: 'Comma-separated emails' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users/invite/admins' },\n fieldMappings: {},\n handler: async (input, client) => {\n return client.request({\n method: 'POST',\n path: '/management/organizations/users/invite/admins',\n body: {\n inviterEmail: input.inviterEmail,\n emails: (input.emails as string).split(',').map((s) => s.trim()),\n },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgInviteMembersCommand: CommandDefinition = {\n name: 'org_invite_members',\n group: 'org',\n subcommand: 'invite-members',\n description: 'Invite users as members with specified workspace permissions. Returns invitation URLs (no email sent).',\n examples: ['heyreach org invite-members --inviter-email \"admin@co.com\" --emails \"user@co.com\" --workspace-ids \"1,2\" --permissions-json \\'{\"viewCampaigns\":true}\\''],\n inputSchema: z.object({\n inviterEmail: z.string().describe('Email of the inviter'),\n emails: z.string().describe('Comma-separated emails to invite'),\n workspaceIds: z.string().describe('Comma-separated workspace IDs'),\n permissionsJson: z.string().describe('JSON object of permission booleans'),\n }),\n cliMappings: {\n options: [\n { field: 'inviterEmail', flags: '--inviter-email <email>', description: 'Inviter email' },\n { field: 'emails', flags: '--emails <list>', description: 'Comma-separated emails' },\n { field: 'workspaceIds', flags: '--workspace-ids <list>', description: 'Comma-separated workspace IDs' },\n { field: 'permissionsJson', flags: '--permissions-json <json>', description: 'JSON permissions object' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users/invite/members' },\n fieldMappings: {},\n handler: async (input, client) => {\n return client.request({\n method: 'POST',\n path: '/management/organizations/users/invite/members',\n body: {\n inviterEmail: input.inviterEmail,\n emails: (input.emails as string).split(',').map((s) => s.trim()),\n workspaceIds: (input.workspaceIds as string).split(',').map((s) => Number(s.trim())),\n permissions: JSON.parse(input.permissionsJson as string),\n },\n });\n },\n};\n","import { z } from 'zod';\nimport type { CommandDefinition } from '../../core/types.js';\n\nexport const orgInviteManagersCommand: CommandDefinition = {\n name: 'org_invite_managers',\n group: 'org',\n subcommand: 'invite-managers',\n description: 'Invite users as managers (external users with workspace access, auto-added without registration).',\n examples: ['heyreach org invite-managers --inviter-email \"admin@co.com\" --emails \"manager@co.com\" --workspace-ids \"1,2\"'],\n inputSchema: z.object({\n inviterEmail: z.string().describe('Email of the inviter'),\n emails: z.string().describe('Comma-separated emails to invite'),\n workspaceIds: z.string().describe('Comma-separated workspace IDs'),\n }),\n cliMappings: {\n options: [\n { field: 'inviterEmail', flags: '--inviter-email <email>', description: 'Inviter email' },\n { field: 'emails', flags: '--emails <list>', description: 'Comma-separated emails' },\n { field: 'workspaceIds', flags: '--workspace-ids <list>', description: 'Comma-separated workspace IDs' },\n ],\n },\n endpoint: { method: 'POST', path: '/management/organizations/users/invite/managers' },\n fieldMappings: {},\n handler: async (input, client) => {\n return client.request({\n method: 'POST',\n path: '/management/organizations/users/invite/managers',\n body: {\n inviterEmail: input.inviterEmail,\n emails: (input.emails as string).split(',').map((s) => s.trim()),\n workspaceIds: (input.workspaceIds as string).split(',').map((s) => Number(s.trim())),\n },\n });\n },\n};\n","import { orgApiKeysCommand } from './api-keys.js';\nimport { orgCreateApiKeyCommand } from './create-api-key.js';\nimport { orgWorkspacesCommand } from './workspaces.js';\nimport { orgCreateWorkspaceCommand } from './create-workspace.js';\nimport { orgUpdateWorkspaceCommand } from './update-workspace.js';\nimport { orgUsersCommand } from './users.js';\nimport { orgGetUserCommand } from './get-user.js';\nimport { orgWorkspaceUsersCommand } from './workspace-users.js';\nimport { orgInviteAdminsCommand } from './invite-admins.js';\nimport { orgInviteMembersCommand } from './invite-members.js';\nimport { orgInviteManagersCommand } from './invite-managers.js';\n\nexport const orgCommands = [\n orgApiKeysCommand,\n orgCreateApiKeyCommand,\n orgWorkspacesCommand,\n orgCreateWorkspaceCommand,\n orgUpdateWorkspaceCommand,\n orgUsersCommand,\n orgGetUserCommand,\n orgWorkspaceUsersCommand,\n orgInviteAdminsCommand,\n orgInviteMembersCommand,\n orgInviteManagersCommand,\n];\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { allCommands } from './commands/index.js';\nimport { resolveAuth } from './core/auth.js';\nimport { createClient } from './core/client.js';\nimport { formatError } from './core/errors.js';\n\nexport async function startMcpFromCli(): Promise<void> {\n const auth = resolveAuth();\n const client = createClient(auth);\n\n const server = new McpServer({\n name: 'heyreach',\n version: '0.1.0',\n });\n\n for (const cmdDef of allCommands) {\n const zodShape: Record<string, unknown> = {};\n const shape = cmdDef.inputSchema.shape as Record<string, unknown>;\n for (const [key, val] of Object.entries(shape)) {\n zodShape[key] = val;\n }\n\n server.tool(\n cmdDef.name,\n cmdDef.description,\n zodShape,\n async (args: Record<string, unknown>) => {\n try {\n const parsed = cmdDef.inputSchema.safeParse(args);\n if (!parsed.success) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({ error: parsed.error.message, code: 'VALIDATION_ERROR' }),\n },\n ],\n isError: true,\n };\n }\n const result = await cmdDef.handler(parsed.data, client);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (error: unknown) {\n return {\n content: [\n { type: 'text' as const, text: JSON.stringify(formatError(error)) },\n ],\n isError: true,\n };\n }\n },\n );\n }\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n","import { createInterface } from 'node:readline/promises';\nimport { Command } from 'commander';\nimport type { CommandDefinition, GlobalOptions } from '../core/types.js';\nimport { resolveAuth, resolveOrgAuth } from '../core/auth.js';\nimport { createClient } from '../core/client.js';\nimport { saveConfig, deleteConfig, loadConfig, getConfigPath } from '../core/config.js';\nimport { output, outputError } from '../core/output.js';\nimport { formatError } from '../core/errors.js';\n\nimport { campaignCommands } from './campaigns/index.js';\nimport { inboxCommands } from './inbox/index.js';\nimport { accountCommands } from './accounts/index.js';\nimport { listCommands } from './lists/index.js';\nimport { statsCommands } from './stats/index.js';\nimport { leadCommands } from './leads/index.js';\nimport { leadTagCommands } from './lead-tags/index.js';\nimport { webhookCommands } from './webhooks/index.js';\nimport { networkCommands } from './network/index.js';\nimport { orgCommands } from './org/index.js';\n\nconst ORG_GROUP = 'org';\n\nexport const allCommands: CommandDefinition[] = [\n ...campaignCommands,\n ...inboxCommands,\n ...accountCommands,\n ...listCommands,\n ...statsCommands,\n ...leadCommands,\n ...leadTagCommands,\n ...webhookCommands,\n ...networkCommands,\n ...orgCommands,\n];\n\nfunction getGlobalOpts(program: Command): GlobalOptions {\n const opts = program.opts();\n return {\n pretty: opts.pretty,\n quiet: opts.quiet,\n fields: opts.fields,\n apiKey: opts.apiKey,\n orgKey: opts.orgKey,\n };\n}\n\nfunction registerLoginCommand(program: Command): void {\n program\n .command('login')\n .description('Save your API key to ~/.heyreach/config.json')\n .option('--org', 'Store Organization API key instead of workspace key')\n .addHelpText('after', '\\nExamples:\\n $ heyreach login --api-key <key>\\n $ heyreach login --org --org-key <key>\\n $ heyreach login # interactive prompt')\n .action(async (opts) => {\n const globalOpts = getGlobalOpts(program);\n const isOrg = opts.org;\n\n let apiKey = isOrg\n ? (globalOpts.orgKey ?? process.env.HEYREACH_ORG_API_KEY)\n : (globalOpts.apiKey ?? process.env.HEYREACH_API_KEY);\n\n if (!apiKey) {\n const rl = createInterface({ input: process.stdin, output: process.stderr });\n const label = isOrg ? 'Organization API key' : 'HeyReach API key';\n apiKey = (await rl.question(`${label}: `)).trim();\n rl.close();\n }\n\n if (!apiKey) {\n outputError({ error: 'API key is required.', code: 'VALIDATION_ERROR' }, globalOpts);\n return;\n }\n\n // Validate the key before saving\n try {\n const checkPath = isOrg ? '/organization/GetWorkspaces' : '/auth/CheckApiKey';\n const client = createClient({ apiKey, baseUrl: 'https://api.heyreach.io/api/public' });\n await client.request({ method: 'GET', path: checkPath });\n } catch {\n outputError({ error: `Invalid ${isOrg ? 'Organization' : ''} API key. Check your key and try again.`, code: 'AUTH_ERROR' }, globalOpts);\n return;\n }\n\n const config = isOrg ? { org_api_key: apiKey } : { api_key: apiKey };\n saveConfig(config);\n output({ success: true, message: 'Credentials saved and verified.', config_path: getConfigPath() }, globalOpts);\n });\n}\n\nfunction registerLogoutCommand(program: Command): void {\n program\n .command('logout')\n .description('Remove stored credentials from ~/.heyreach/config.json')\n .action(async () => {\n const globalOpts = getGlobalOpts(program);\n deleteConfig();\n output({ success: true, message: 'Credentials removed.' }, globalOpts);\n });\n}\n\nfunction registerStatusCommand(program: Command): void {\n program\n .command('status')\n .description('Check API key validity and show config')\n .action(async () => {\n const globalOpts = getGlobalOpts(program);\n try {\n const auth = resolveAuth({ apiKey: globalOpts.apiKey });\n const client = createClient(auth);\n await client.request({ method: 'GET', path: '/auth/CheckApiKey' });\n output({\n authenticated: true,\n api_key: '***' + auth.apiKey.slice(-4),\n config_path: getConfigPath(),\n }, globalOpts);\n } catch (err) {\n const config = loadConfig();\n const usedKey = globalOpts.apiKey ?? process.env.HEYREACH_API_KEY ?? config.api_key;\n output({\n authenticated: false,\n api_key: usedKey ? '***' + usedKey.slice(-4) : '(not set)',\n api_key_source: globalOpts.apiKey ? '--api-key flag' : process.env.HEYREACH_API_KEY ? 'HEYREACH_API_KEY env' : config.api_key ? 'config file' : 'none',\n config_path: getConfigPath(),\n error: err instanceof Error ? err.message : String(err),\n }, globalOpts);\n }\n });\n}\n\nfunction registerConfigCommand(program: Command): void {\n const configCmd = program.command('config').description('Manage CLI configuration');\n\n configCmd\n .command('set')\n .description('Set configuration values')\n .option('--api-key <key>', 'HeyReach workspace API key')\n .option('--org-key <key>', 'HeyReach Organization API key')\n .action(async (opts) => {\n const globalOpts = getGlobalOpts(program);\n const updates: Record<string, string> = {};\n if (opts.apiKey) updates.api_key = opts.apiKey;\n if (opts.orgKey) updates.org_api_key = opts.orgKey;\n if (Object.keys(updates).length === 0) {\n outputError({ error: 'Provide at least --api-key or --org-key', code: 'VALIDATION_ERROR' }, globalOpts);\n return;\n }\n saveConfig(updates);\n output({ success: true, message: 'Config updated.', config_path: getConfigPath() }, globalOpts);\n });\n\n configCmd\n .command('get')\n .description('Show current configuration')\n .action(async () => {\n const globalOpts = getGlobalOpts(program);\n const config = loadConfig();\n output({\n api_key: config.api_key ? '***' + config.api_key.slice(-4) : '(not set)',\n org_api_key: config.org_api_key ? '***' + config.org_api_key.slice(-4) : '(not set)',\n config_path: getConfigPath(),\n }, globalOpts);\n });\n}\n\nfunction registerMcpCommand(program: Command): void {\n program\n .command('mcp')\n .description('Start the MCP (Model Context Protocol) server over stdio')\n .action(async () => {\n const { startMcpFromCli } = await import('../mcp-entry.js');\n await startMcpFromCli();\n });\n}\n\nfunction registerCommand(parent: Command, cmdDef: CommandDefinition, program: Command): void {\n const cmd = parent.command(cmdDef.subcommand).description(cmdDef.description);\n\n if (cmdDef.cliMappings.args) {\n for (const arg of cmdDef.cliMappings.args) {\n cmd.argument(arg.required !== false ? `<${arg.name}>` : `[${arg.name}]`, arg.field);\n }\n }\n\n if (cmdDef.cliMappings.options) {\n for (const opt of cmdDef.cliMappings.options) {\n cmd.option(opt.flags, opt.description ?? '');\n }\n }\n\n if (cmdDef.examples?.length) {\n cmd.addHelpText(\n 'after',\n '\\nExamples:\\n' + cmdDef.examples.map((e) => ` $ ${e}`).join('\\n'),\n );\n }\n\n cmd.action(async (...actionArgs: unknown[]) => {\n const globalOpts = getGlobalOpts(program);\n\n try {\n // Org commands use org API key\n const isOrgCommand = cmdDef.group === ORG_GROUP;\n const auth = isOrgCommand\n ? resolveOrgAuth({ orgKey: globalOpts.orgKey })\n : resolveAuth({ apiKey: globalOpts.apiKey });\n const client = createClient(auth);\n\n const input: Record<string, unknown> = {};\n\n const cmdOpts = actionArgs[actionArgs.length - 2] as Record<string, unknown>;\n if (cmdOpts && typeof cmdOpts === 'object') {\n if (cmdDef.cliMappings.options) {\n for (const optDef of cmdDef.cliMappings.options) {\n const flagName = optDef.flags.match(/--([a-zA-Z0-9][a-zA-Z0-9-_]*)/)?.[1] ?? optDef.field;\n const commanderKey = flagName.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n const value = cmdOpts[commanderKey] ?? cmdOpts[flagName] ?? cmdOpts[optDef.field];\n if (value !== undefined) input[optDef.field] = value;\n }\n } else {\n for (const [key, val] of Object.entries(cmdOpts)) {\n if (val !== undefined) input[key] = val;\n }\n }\n }\n\n if (cmdDef.cliMappings.args) {\n for (let i = 0; i < cmdDef.cliMappings.args.length; i++) {\n const argDef = cmdDef.cliMappings.args[i];\n const argVal = actionArgs[i];\n if (argVal !== undefined) input[argDef.field] = argVal;\n }\n }\n\n const parsed = cmdDef.inputSchema.safeParse(input);\n if (!parsed.success) {\n outputError(\n { error: parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; '), code: 'VALIDATION_ERROR' },\n globalOpts,\n );\n return;\n }\n\n const result = await cmdDef.handler(parsed.data, client);\n output(result, globalOpts);\n } catch (err) {\n outputError(formatError(err), globalOpts);\n }\n });\n}\n\nexport function registerAllCommands(program: Command): void {\n registerLoginCommand(program);\n registerLogoutCommand(program);\n registerStatusCommand(program);\n registerConfigCommand(program);\n registerMcpCommand(program);\n\n const groups = new Map<string, CommandDefinition[]>();\n for (const cmd of allCommands) {\n if (!groups.has(cmd.group)) groups.set(cmd.group, []);\n groups.get(cmd.group)!.push(cmd);\n }\n\n for (const [groupName, commands] of groups) {\n const groupCmd = program.command(groupName).description(`Manage ${groupName}`);\n for (const cmdDef of commands) {\n registerCommand(groupCmd, cmdDef, program);\n }\n }\n}\n","import { Command } from 'commander';\nimport { registerAllCommands } from './commands/index.js';\n\nconst program = new Command();\n\nprogram\n .name('heyreach')\n .description(\n 'HeyReach CLI — manage LinkedIn campaigns, leads, lists, inbox, webhooks, and more from your terminal.',\n )\n .version('0.1.5')\n .option('--pretty', 'Pretty-print JSON output')\n .option('--quiet', 'Suppress output, exit codes only')\n .option('--fields <fields>', 'Comma-separated fields to include in output')\n .option('--api-key <key>', 'HeyReach workspace API key')\n .option('--org-key <key>', 'HeyReach Organization API key');\n\nregisterAllCommands(program);\n\nprogram.parse();\n"],"mappings":"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","names":["path","path","z","z","z","z","z","z","z","z","init_list","z","init_get","z","z","init_list","init_get","z","init_list","z","init_get","init_list","init_get","z","init_get","z","init_list","z","z","init_get_leads","z","init_add_leads","z","z","z","z","init_get_for_lead","init_get","init_list","init_get_leads","init_add_leads","init_get_for_lead","z","z","init_get","z","z","z","init_get","z","init_create","init_create","z","init_create","z","init_get","z","init_list","z","z","init_create","init_get","init_list","z","init_list","z","init_list","z","z","z","z","z","z","z","z","z","z","z","program","startMcpFromCli"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "heyreach-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "CLI and MCP server for the HeyReach LinkedIn automation platform. Manage campaigns, leads, lists, inbox, webhooks, and more — from your terminal.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|