hiresquire-cli 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,6 +15,31 @@ HireSquire CLI enables AI agents and developers to screen candidates directly fr
15
15
  - 📄 **JSON Output**: Machine-readable output for automation
16
16
  - ⚙️ **Config Management**: Easy API token setup and storage
17
17
  - 🔗 **Webhook Support**: Conditional webhooks for automated workflows
18
+ - 📄 **Resume Parsing**: Supports PDF, DOCX, DOC, TXT, and Markdown files
19
+
20
+ ## Supported Resume Formats
21
+
22
+ The CLI automatically detects and parses the following resume formats:
23
+
24
+ | Format | Extension | Parser |
25
+ |--------|-----------|--------|
26
+ | PDF | `.pdf` | pdf-parse |
27
+ | Word DOCX | `.docx` | officeparser |
28
+ | Word DOC | `.doc` | officeparser |
29
+ | Plain Text | `.txt` | Native |
30
+ | Markdown | `.md` | Native |
31
+
32
+ No manual conversion needed - just point to your resume files or directory!
33
+
34
+ ### Installation Notes
35
+
36
+ When installing from source, the parser dependencies will be included automatically:
37
+
38
+ ```bash
39
+ npm install -g hiresquire-cli
40
+ ```
41
+
42
+ The parsers are pure JavaScript with no native dependencies, making them suitable for all environments including Docker containers.
18
43
 
19
44
  ## Installation
20
45
 
@@ -87,6 +112,7 @@ hiresquire results --job 123
87
112
  | [`candidate`](#candidate) | Get candidate details |
88
113
  | [`set-status`](#set-status) | Update candidate status |
89
114
  | [`schema`](#schema) | Get API schema |
115
+ | [`credits`](#credits) | Manage prepaid credits (balance, checkout, auto-reload) |
90
116
 
91
117
  ### init
92
118
 
@@ -195,6 +221,37 @@ Options:
195
221
  - `-l, --leniency <number>` - Default leniency level
196
222
  - `--clear` - Clear all configuration
197
223
 
224
+ ### credits
225
+
226
+ Manage prepaid credits:
227
+
228
+ ```bash
229
+ # Check current balance
230
+ hiresquire credits balance
231
+
232
+ # List available credit packs
233
+ hiresquire credits list-packs
234
+
235
+ # Create checkout session
236
+ hiresquire credits checkout --pack pouch
237
+
238
+ # View transaction history
239
+ hiresquire credits transactions
240
+
241
+ # Enable auto-reload (when balance drops below threshold)
242
+ hiresquire credits auto-reload-enable --threshold 10 --amount 25 --payment-method-id pm_12345
243
+
244
+ # Disable auto-reload
245
+ hiresquire credits auto-reload-disable
246
+ ```
247
+
248
+ Options:
249
+ - `-a, --action <action>` - Action: balance, list-packs, checkout, transactions, auto-reload-enable, auto-reload-disable
250
+ - `-p, --pack <pack>` - Credit pack: pouch, satchel, chest
251
+ - `--threshold <number>` - Auto-reload threshold in dollars
252
+ - `--amount <number>` - Amount to reload each time
253
+ - `--payment-method-id <id>` - Stripe payment method ID
254
+
198
255
  ## Agent Integration Examples
199
256
 
200
257
  ### OpenClaw
package/dist/api.d.ts ADDED
@@ -0,0 +1,250 @@
1
+ /**
2
+ * HireSquire CLI - API Client
3
+ *
4
+ * HTTP client for interacting with the HireSquire API
5
+ * Handles authentication, request/response typing, and error handling
6
+ */
7
+ import { Config, CreateJobParams, CreateJobResponse, JobStatusResponse, ResultsResponse, JobsListResponse, EmailParams, EmailResponse, Resume, CalendarConnection, CreateCalendarConnectionParams, Interview, CreateInterviewParams, MeetingLinkResponse, AvailableSlotsResponse } from './types';
8
+ export declare class ApiClient {
9
+ private client;
10
+ private config;
11
+ constructor(config: Config);
12
+ private shouldRetryRequest;
13
+ private handleError;
14
+ /**
15
+ * Generic GET request
16
+ */
17
+ get<T = any>(url: string, config?: any): Promise<{
18
+ data: T;
19
+ }>;
20
+ /**
21
+ * Generic POST request
22
+ */
23
+ post<T = any>(url: string, data?: any, config?: any): Promise<{
24
+ data: T;
25
+ }>;
26
+ /**
27
+ * Generic PUT request
28
+ */
29
+ put<T = any>(url: string, data?: any, config?: any): Promise<{
30
+ data: T;
31
+ }>;
32
+ /**
33
+ * Generic DELETE request
34
+ */
35
+ delete<T = any>(url: string, config?: any): Promise<{
36
+ data: T;
37
+ }>;
38
+ /**
39
+ * Create a new screening job
40
+ */
41
+ createJob(params: CreateJobParams): Promise<CreateJobResponse>;
42
+ /**
43
+ * Upload a ZIP file containing resumes to create a new screening job
44
+ */
45
+ uploadZip(params: Omit<CreateJobParams, 'resumes'> & {
46
+ zipPath: string;
47
+ }): Promise<CreateJobResponse>;
48
+ /**
49
+ * Get job status
50
+ */
51
+ getJobStatus(jobId: number): Promise<JobStatusResponse>;
52
+ /**
53
+ * Get job results
54
+ */
55
+ getResults(jobId: number, options?: {
56
+ min_score?: number;
57
+ only_top_n?: number;
58
+ }): Promise<ResultsResponse>;
59
+ /**
60
+ * List all jobs
61
+ */
62
+ listJobs(options?: {
63
+ status?: string;
64
+ page?: number;
65
+ per_page?: number;
66
+ }): Promise<JobsListResponse>;
67
+ /**
68
+ * Generate an email for a candidate
69
+ */
70
+ generateEmail(params: EmailParams): Promise<EmailResponse>;
71
+ /**
72
+ * Poll for job completion
73
+ */
74
+ pollForCompletion(jobId: number, options?: {
75
+ interval?: number;
76
+ timeout?: number;
77
+ onProgress?: (status: JobStatusResponse) => void;
78
+ }): Promise<JobStatusResponse>;
79
+ /**
80
+ * Sleep for specified milliseconds
81
+ */
82
+ private sleep;
83
+ /**
84
+ * Test API connection
85
+ */
86
+ testConnection(): Promise<boolean>;
87
+ /**
88
+ * Get current config
89
+ */
90
+ getConfig(): Config;
91
+ /**
92
+ * Cancel a running job
93
+ */
94
+ cancelJob(jobId: number): Promise<{
95
+ job_id: number;
96
+ status: string;
97
+ message: string;
98
+ }>;
99
+ /**
100
+ * Compare multiple candidates side-by-side
101
+ */
102
+ compareCandidates(jobId: number, candidateIds: number[]): Promise<{
103
+ job_id: number;
104
+ candidates: Array<{
105
+ id: number;
106
+ name: string;
107
+ score: number;
108
+ summary: string;
109
+ }>;
110
+ comparison: {
111
+ top_candidate: string;
112
+ score_diff: number;
113
+ };
114
+ }>;
115
+ /**
116
+ * Report hiring outcome to improve AI accuracy
117
+ */
118
+ reportOutcome(jobId: number, candidateId: number, outcome: 'hired' | 'rejected' | 'withdrawn'): Promise<{
119
+ success: boolean;
120
+ message: string;
121
+ }>;
122
+ /**
123
+ * Test a webhook endpoint
124
+ */
125
+ testWebhook(webhookUrl: string): Promise<{
126
+ success: boolean;
127
+ message: string;
128
+ response_code?: number;
129
+ }>;
130
+ /**
131
+ * Get current rate limit status
132
+ */
133
+ getRateLimit(): Promise<{
134
+ limit: number;
135
+ remaining: number;
136
+ reset_at: string;
137
+ reset_in_seconds: number;
138
+ }>;
139
+ /**
140
+ * Get a specific candidate
141
+ */
142
+ getCandidate(candidateId: number): Promise<any>;
143
+ /**
144
+ * Update candidate status
145
+ */
146
+ updateCandidateStatus(candidateId: number, status: 'pending' | 'shortlisted' | 'rejected' | 'interviewed' | 'offered' | 'hired'): Promise<{
147
+ success: boolean;
148
+ candidate: any;
149
+ }>;
150
+ /**
151
+ * Get API schema for discovery
152
+ */
153
+ getSchema(): Promise<any>;
154
+ /**
155
+ * List calendar connections
156
+ */
157
+ listCalendarConnections(): Promise<{
158
+ success: boolean;
159
+ data: CalendarConnection[];
160
+ }>;
161
+ /**
162
+ * Create a calendar connection
163
+ */
164
+ createCalendarConnection(params: CreateCalendarConnectionParams): Promise<{
165
+ success: boolean;
166
+ data: CalendarConnection;
167
+ message: string;
168
+ }>;
169
+ /**
170
+ * Delete a calendar connection
171
+ */
172
+ deleteCalendarConnection(id: number): Promise<{
173
+ success: boolean;
174
+ message: string;
175
+ }>;
176
+ /**
177
+ * Get available slots from calendar
178
+ */
179
+ getAvailableSlots(params: {
180
+ provider: string;
181
+ date: string;
182
+ duration?: number;
183
+ }): Promise<AvailableSlotsResponse>;
184
+ /**
185
+ * List interviews
186
+ */
187
+ listInterviews(jobId?: number): Promise<{
188
+ success: boolean;
189
+ data: Interview[];
190
+ }>;
191
+ /**
192
+ * Create an interview
193
+ */
194
+ createInterview(params: CreateInterviewParams): Promise<{
195
+ success: boolean;
196
+ data: Interview;
197
+ message: string;
198
+ }>;
199
+ /**
200
+ * Show a specific interview
201
+ */
202
+ showInterview(id: number): Promise<{
203
+ success: boolean;
204
+ data: Interview;
205
+ }>;
206
+ /**
207
+ * Update an interview
208
+ */
209
+ updateInterview(id: number, params: Partial<CreateInterviewParams>): Promise<{
210
+ success: boolean;
211
+ data: Interview;
212
+ message: string;
213
+ }>;
214
+ /**
215
+ * Delete/cancel an interview
216
+ */
217
+ deleteInterview(id: number): Promise<{
218
+ success: boolean;
219
+ message: string;
220
+ }>;
221
+ /**
222
+ * Generate a meeting link
223
+ */
224
+ generateMeetingLink(params: {
225
+ provider: string;
226
+ topic: string;
227
+ duration?: number;
228
+ }): Promise<MeetingLinkResponse>;
229
+ }
230
+ /**
231
+ * Create API client from config
232
+ */
233
+ export declare function createApiClient(config: Config): ApiClient;
234
+ /**
235
+ * Create API client from token
236
+ */
237
+ export declare function createApiClientFromToken(token: string, baseUrl?: string): ApiClient;
238
+ /**
239
+ * Read resume from file path (async - supports PDF, DOCX, DOC, TXT, MD)
240
+ */
241
+ export declare function readResumeFromFile(filePath: string): Promise<Resume>;
242
+ /**
243
+ * Read resumes from directory (async)
244
+ */
245
+ export declare function readResumesFromDirectory(dirPath: string, currentCount?: number): Promise<Resume[]>;
246
+ /**
247
+ * Read multiple resume files (async)
248
+ */
249
+ export declare function readResumesFromPaths(paths: string[]): Promise<Resume[]>;
250
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}