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 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
- ## All Command Groups
112
+ ## Complete Command Reference
91
113
 
92
114
  ### campaigns (8 commands)
93
- Manage LinkedIn outreach campaigns — list, get, pause, resume, add leads, stop leads, pull lead analytics.
94
-
95
- ```
96
- list List campaigns (paginated, filterable by keyword/status/account)
97
- get Get a campaign by ID
98
- resume Resume a paused campaign
99
- pause Pause a running campaign
100
- add-leads Add leads to a campaign (V2returns added/updated/failed counts)
101
- stop-lead Stop a lead's progression in a campaign
102
- get-leads Get leads from a campaign with status breakdowns
103
- get-for-lead Find which campaigns a lead is enrolled in
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 across all connected accounts.
129
+ Read and respond to LinkedIn conversations.
108
130
 
109
- ```
110
- list List conversations (filter by account, campaign, tags, seen status, search)
111
- get Get a conversation with all messages by account ID + conversation ID
112
- send Send a message to a LinkedIn conversation
113
- set-seen Mark a conversation as seen or unseen
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
- list List all LinkedIn accounts (paginated, searchable)
121
- get Get a LinkedIn account by ID
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
- list List all lists (filter by type, keyword, campaign)
129
- get Get a list by ID
130
- create Create an empty lead or company list
131
- get-leads Get leads from a list (up to 1000 per request)
132
- add-leads Add leads to a list (V2 returns detailed counts)
133
- delete-leads Delete leads from a list by LinkedIn member IDs
134
- delete-leads-by-url Delete leads from a list by LinkedIn profile URLs
135
- get-companies Get companies from a company list
136
- get-for-lead Find which lists a lead belongs to
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
- overview Overall stats for date range (profile views, messages, connections, reply rates)
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
- get Get lead details by LinkedIn profile URL
151
- add-tags Add tags to a lead (existing tags unchanged)
152
- get-tags Get tags for a lead (alphabetically sorted)
153
- replace-tags Remove all existing tags and replace with new tags
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
- create Create one or multiple tags with display name and color
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
- create Create a webhook for a specific event type
168
- get Get a webhook by ID
169
- list List all webhooks (paginated)
170
- update Update webhook configuration (name, URL, event type, active status)
171
- delete Delete a webhook
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
- list Get network connections for a LinkedIn sender (uses pageNumber/pageSize pagination)
179
- check Check if a lead is connected to a specific sender
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
- ### org (11 commands)
183
- Organization management — requires Organization API key.
210
+ **Note:** Network commands use `--page`/`--page-size` instead of `--offset`/`--limit`.
184
211
 
185
- ```
186
- workspaces List all workspaces
187
- create-workspace Create a new workspace
188
- update-workspace Update workspace name or seat limit
189
- api-keys Get API/integration keys for a workspace
190
- create-api-key Generate a new API key (PUBLIC, N8N, MAKE, ZAPIER, MCP)
191
- users List all org users (filter by role, invitation status)
192
- get-user Get user details by ID
193
- workspace-users List users in a specific workspace
194
- invite-admins Invite users as organization admins
195
- invite-members Invite users with specific workspace permissions
196
- invite-managers Invite external managers with workspace access
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 lead/company list queries)
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.4").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");
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.4",
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": {