trackly-cli 0.18.1 → 0.18.3

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
@@ -7,7 +7,7 @@
7
7
 
8
8
  The only job tracking CLI built for AI agents.
9
9
 
10
- Search 170,000+ jobs across 3,800+ companies and 40+ ATS types. Track applications, get AI-powered recommendations, and manage your job search -- from the terminal or through Claude, ChatGPT, Cursor, and other MCP-compatible AI agents.
10
+ Search 170,000+ jobs across Thousands of companies and 40+ ATS types. Track applications, get AI-powered recommendations, and manage your job search -- from the terminal or through Claude, ChatGPT, Cursor, and other MCP-compatible AI agents.
11
11
 
12
12
  ## Two ways to connect
13
13
 
@@ -35,7 +35,7 @@ trackly jobs --function product
35
35
 
36
36
  ## At a Glance
37
37
 
38
- 3,800+ companies | 170K+ jobs | 40+ ATS types | CLI + MCP | 58 local MCP tools
38
+ Thousands of companies | Thousands of jobs | 40+ ATS types | CLI + MCP | 58 local MCP tools
39
39
 
40
40
  ## CLI Commands
41
41
 
@@ -318,7 +318,7 @@ Add trackly as an MCP server in Claude Code. Then ask questions naturally: "Find
318
318
 
319
319
  **What are the best CLI tools for job search?**
320
320
 
321
- trackly-cli is the first dedicated job tracking CLI. It provides direct terminal access to 170,000+ job postings across 3,800+ companies, with filters for job function, location, and work modality. It also integrates with AI agents via the Model Context Protocol (MCP).
321
+ trackly-cli is the first dedicated job tracking CLI. It provides direct terminal access to 170,000+ job postings across Thousands of companies, with filters for job function, location, and work modality. It also integrates with AI agents via the Model Context Protocol (MCP).
322
322
 
323
323
  ## Security
324
324
 
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: Submission preflight is not portal acceptance
3
+ date: 2026-09-09
4
+ category: workflow-issues
5
+ module: Trackly OpenAI plugin submission
6
+ problem_type: workflow_issue
7
+ component: development_workflow
8
+ severity: medium
9
+ applies_when: Recovering or closing a plugin submission workspace
10
+ tags: [openai, plugin, preflight, archive, review, cloud]
11
+ ---
12
+
13
+ # Submission preflight is not portal acceptance
14
+
15
+ PR #142 remained open with thirteen unresolved threads after the Aquatics Cloud workspace was archived. Earlier reports treated passing local tests as completion and treated the separate backend owner as covering all remaining work. The CLI preflight was still absent from main.
16
+
17
+ Recover ownership and all sessions first, then compare the exact PR head with current main. Preserve unique source and checkpoint intent, but recheck old completion claims. An active backend owner does not own an unfinished CLI PR. Skills are instructions loaded from SKILL.md, not executables whose absence permits silently skipping review.
18
+
19
+ The preflight validates local submission inputs and optional unauthenticated discovery. Regression coverage must include invalid shapes, empty skill directories, unequal SVG dimensions, every strict-origin failure, quoted credential assignments, and bounded network/file handling. A passing fixture only proves the guard ran; it does not execute authenticated reviewer scenarios. The narrow known-key assignment scan covers standard npm auth/token/password forms as well as shell, JSON and YAML delimiters; it handles punctuation boundaries but is not a general secret scanner. Live-only flags must require explicit live mode so a mistyped command cannot certify an unexecuted probe.
20
+
21
+ Required domain verification needs an exact expected public token, not merely a token-shaped response. Strict origin probes must preserve the valid OAuth discovery challenge as well as HTTP 401. Validate issuer syntax before deriving discovery URLs, and decode optional PNG/JPEG screenshots and enforce their 706-by-400–860 pixel dimensions separately from square-logo rules. Parse skill frontmatter as YAML rather than matching lines. Cross-check public portal documentation against the installed Codex plugin validator: the current validator accepts both prompt aliases but rejects manifest supportURL, which remains in listing metadata. Preserve that compatibility distinction instead of assuming the two schemas are identical. Require authorization-code support and complete reviewer-environment fields, and keep manifest/listing legal URLs equal. Review the full existing ingestion surface together: manifest fields, skill companion YAML, MCP companion keys, URL syntax and asset paths. A partial schema copy otherwise produces repeated false-green checks. Pin reviewed safety copy rather than claiming a keyword scan understands negation; bind portal prompts to their internal fixture inputs. Branding validation must decode supported PNG/JPEG/WebP content and parse SVG XML, not just trust extensions or a viewBox substring. Keep its square-image limits separate from screenshot dimensions. Require exact HTTP 200 for public legal/listing pages and validate all advertised issuer URLs before selecting a discovery server.
22
+
23
+ Keep four receipts separate: reviewed and merged source, published npm release with provenance, live backend protocol evidence, and authenticated OpenAI portal acceptance. Preserve the backend PR and portal owner explicitly until each dependent gate is satisfied. Do not archive a still-open PR because its source was implemented or because a checkpoint says terminal.
24
+
25
+ Verification: `npm test`, `npm run test:contract-fixture`, `npm run test:plugin-submission`, `npm run security:audit`, the canonical PR review gate, and post-merge npm provenance/consumer checks. Use `node scripts/verify-plugin-submission.js --live --strict-origins --json` for public protocol evidence; a failure remains a separate backend/submission dependency.
26
+
27
+ OAuth authorization and protected-resource metadata must pass the bundled MCP SDK OAuthMetadataSchema and OAuthProtectedResourceMetadataSchema, including optional members, before discovery is considered usable. Every positive and negative reviewer fixture must retain a non-empty string array of forbidden actions (`mustNot` or `forbidden`); a prompt and expected result alone do not preserve the safety evidence.
28
+
29
+ The `.mcp.json` file contains only `mcpServers`, which contains only `trackly`; that server entry contains only `type` and `url`. Reject packaged Authorization and access_token assignments alongside npm credentials. Public discovery must advertise HTTPS dynamic registration or URL-based client-ID support, with credentialed client interoperability still separate. Check the installed validator’s file-reading behavior before matching its string predicates: Python Path.read_text normalizes CRLF, so its literal LF frontmatter test does not reject raw CRLF files.
30
+
31
+ Pin the reviewed public listing URL and US audience rather than certifying arbitrary replacement metadata. Optional advertised grant types must include authorization_code. Validate each provided skill dependency descriptor (MCP type, identifier, description, reviewed streamable_http transport and HTTPS URL), not only its enclosing mapping.
32
+
33
+ Bind skill dependency identifiers/URLs and the support page to the reviewed Trackly destinations. Decode supplied skill icons as images while retaining their own small/non-square allowance; await this validation through the static command. For SVG branding, check intrinsic viewport dimensions as well as viewBox so a square coordinate system cannot hide a rectangular rendered image, and accept numeric pixel dimensions consistently.
34
+
35
+ Known reviewer identity assignments are private packet data alongside credentials. Reject listing placeholders recursively, and return structured validation errors for non-file or unreadable skill manifests. When token authentication methods are advertised, require compatibility with URL-based public clients or an SDK-supported dynamic-registration method; absent metadata still needs credentialed verification.
36
+
37
+ Apply the 1 MiB metadata admission limit before reading JSON, SKILL.md or skill companion YAML; the later archive-file limit cannot protect earlier parsers. Reject non-regular metadata files before reading them, and retain structured errors.
38
+
39
+ A Claude first-turn is_error:true envelope is not a terminal-record parser failure. Compare the pinned workflow, action, SDK/CLI and runner with a successful run before changing code. If the action hides the provider result, use an isolated read-only usage diagnostic with the existing CI bindings, fixed HTTPS destination, bounded response, no redirects and an output allowlist; never expose raw execution logs or treat a usage-endpoint429 as model quota proof. Model-specific exhausted windows must be interpreted against the configured reviewer model. The diagnostic never substitutes for required claude-review.
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "trackly-cli",
3
- "version": "0.18.1",
3
+ "version": "0.18.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "trackly-cli",
9
- "version": "0.18.1",
9
+ "version": "0.18.3",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@modelcontextprotocol/sdk": "1.30.0",
13
13
  "@posthog/mcp": "0.11.0",
14
14
  "fast-uri": "3.1.7",
15
- "hono": "4.13.0",
15
+ "hono": "4.13.7",
16
16
  "ip-address": "10.4.0",
17
17
  "posthog-node": "5.48.1",
18
18
  "zod": "^3.23.0"
@@ -22,7 +22,12 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@babel/parser": "7.29.8",
25
- "acorn": "8.18.0"
25
+ "acorn": "8.18.0",
26
+ "jpeg-js": "0.4.4",
27
+ "pngjs": "7.0.0",
28
+ "saxes": "6.0.0",
29
+ "sharp": "0.35.4",
30
+ "yaml": "2.9.0"
26
31
  },
27
32
  "engines": {
28
33
  "node": "^20.20.0 || >=22.22.0"
@@ -78,6 +83,17 @@
78
83
  "node": ">=6.9.0"
79
84
  }
80
85
  },
86
+ "node_modules/@emnapi/runtime": {
87
+ "version": "1.11.3",
88
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
89
+ "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
90
+ "dev": true,
91
+ "license": "MIT",
92
+ "optional": true,
93
+ "dependencies": {
94
+ "tslib": "^2.4.0"
95
+ }
96
+ },
81
97
  "node_modules/@hono/node-server": {
82
98
  "version": "2.0.12",
83
99
  "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.0.12.tgz",
@@ -90,6 +106,581 @@
90
106
  "hono": "^4"
91
107
  }
92
108
  },
109
+ "node_modules/@img/colour": {
110
+ "version": "1.1.0",
111
+ "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
112
+ "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==",
113
+ "dev": true,
114
+ "license": "MIT",
115
+ "engines": {
116
+ "node": ">=18"
117
+ }
118
+ },
119
+ "node_modules/@img/sharp-darwin-arm64": {
120
+ "version": "0.35.4",
121
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.4.tgz",
122
+ "integrity": "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==",
123
+ "cpu": [
124
+ "arm64"
125
+ ],
126
+ "dev": true,
127
+ "license": "Apache-2.0",
128
+ "optional": true,
129
+ "os": [
130
+ "darwin"
131
+ ],
132
+ "engines": {
133
+ "node": ">=20.9.0"
134
+ },
135
+ "funding": {
136
+ "url": "https://opencollective.com/libvips"
137
+ },
138
+ "optionalDependencies": {
139
+ "@img/sharp-libvips-darwin-arm64": "1.3.3"
140
+ }
141
+ },
142
+ "node_modules/@img/sharp-darwin-x64": {
143
+ "version": "0.35.4",
144
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.4.tgz",
145
+ "integrity": "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==",
146
+ "cpu": [
147
+ "x64"
148
+ ],
149
+ "dev": true,
150
+ "license": "Apache-2.0",
151
+ "optional": true,
152
+ "os": [
153
+ "darwin"
154
+ ],
155
+ "engines": {
156
+ "node": ">=20.9.0"
157
+ },
158
+ "funding": {
159
+ "url": "https://opencollective.com/libvips"
160
+ },
161
+ "optionalDependencies": {
162
+ "@img/sharp-libvips-darwin-x64": "1.3.3"
163
+ }
164
+ },
165
+ "node_modules/@img/sharp-freebsd-wasm32": {
166
+ "version": "0.35.4",
167
+ "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz",
168
+ "integrity": "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==",
169
+ "dev": true,
170
+ "license": "Apache-2.0",
171
+ "optional": true,
172
+ "os": [
173
+ "freebsd"
174
+ ],
175
+ "dependencies": {
176
+ "@img/sharp-wasm32": "0.35.4"
177
+ },
178
+ "engines": {
179
+ "node": ">=20.9.0"
180
+ },
181
+ "funding": {
182
+ "url": "https://opencollective.com/libvips"
183
+ }
184
+ },
185
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
186
+ "version": "1.3.3",
187
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.3.tgz",
188
+ "integrity": "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==",
189
+ "cpu": [
190
+ "arm64"
191
+ ],
192
+ "dev": true,
193
+ "license": "LGPL-3.0-or-later",
194
+ "optional": true,
195
+ "os": [
196
+ "darwin"
197
+ ],
198
+ "funding": {
199
+ "url": "https://opencollective.com/libvips"
200
+ }
201
+ },
202
+ "node_modules/@img/sharp-libvips-darwin-x64": {
203
+ "version": "1.3.3",
204
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.3.tgz",
205
+ "integrity": "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==",
206
+ "cpu": [
207
+ "x64"
208
+ ],
209
+ "dev": true,
210
+ "license": "LGPL-3.0-or-later",
211
+ "optional": true,
212
+ "os": [
213
+ "darwin"
214
+ ],
215
+ "funding": {
216
+ "url": "https://opencollective.com/libvips"
217
+ }
218
+ },
219
+ "node_modules/@img/sharp-libvips-linux-arm": {
220
+ "version": "1.3.3",
221
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.3.tgz",
222
+ "integrity": "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==",
223
+ "cpu": [
224
+ "arm"
225
+ ],
226
+ "dev": true,
227
+ "libc": [
228
+ "glibc"
229
+ ],
230
+ "license": "LGPL-3.0-or-later",
231
+ "optional": true,
232
+ "os": [
233
+ "linux"
234
+ ],
235
+ "funding": {
236
+ "url": "https://opencollective.com/libvips"
237
+ }
238
+ },
239
+ "node_modules/@img/sharp-libvips-linux-arm64": {
240
+ "version": "1.3.3",
241
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.3.tgz",
242
+ "integrity": "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==",
243
+ "cpu": [
244
+ "arm64"
245
+ ],
246
+ "dev": true,
247
+ "libc": [
248
+ "glibc"
249
+ ],
250
+ "license": "LGPL-3.0-or-later",
251
+ "optional": true,
252
+ "os": [
253
+ "linux"
254
+ ],
255
+ "funding": {
256
+ "url": "https://opencollective.com/libvips"
257
+ }
258
+ },
259
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
260
+ "version": "1.3.3",
261
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.3.tgz",
262
+ "integrity": "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==",
263
+ "cpu": [
264
+ "ppc64"
265
+ ],
266
+ "dev": true,
267
+ "libc": [
268
+ "glibc"
269
+ ],
270
+ "license": "LGPL-3.0-or-later",
271
+ "optional": true,
272
+ "os": [
273
+ "linux"
274
+ ],
275
+ "funding": {
276
+ "url": "https://opencollective.com/libvips"
277
+ }
278
+ },
279
+ "node_modules/@img/sharp-libvips-linux-riscv64": {
280
+ "version": "1.3.3",
281
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.3.tgz",
282
+ "integrity": "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==",
283
+ "cpu": [
284
+ "riscv64"
285
+ ],
286
+ "dev": true,
287
+ "libc": [
288
+ "glibc"
289
+ ],
290
+ "license": "LGPL-3.0-or-later",
291
+ "optional": true,
292
+ "os": [
293
+ "linux"
294
+ ],
295
+ "funding": {
296
+ "url": "https://opencollective.com/libvips"
297
+ }
298
+ },
299
+ "node_modules/@img/sharp-libvips-linux-s390x": {
300
+ "version": "1.3.3",
301
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.3.tgz",
302
+ "integrity": "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==",
303
+ "cpu": [
304
+ "s390x"
305
+ ],
306
+ "dev": true,
307
+ "libc": [
308
+ "glibc"
309
+ ],
310
+ "license": "LGPL-3.0-or-later",
311
+ "optional": true,
312
+ "os": [
313
+ "linux"
314
+ ],
315
+ "funding": {
316
+ "url": "https://opencollective.com/libvips"
317
+ }
318
+ },
319
+ "node_modules/@img/sharp-libvips-linux-x64": {
320
+ "version": "1.3.3",
321
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.3.tgz",
322
+ "integrity": "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==",
323
+ "cpu": [
324
+ "x64"
325
+ ],
326
+ "dev": true,
327
+ "libc": [
328
+ "glibc"
329
+ ],
330
+ "license": "LGPL-3.0-or-later",
331
+ "optional": true,
332
+ "os": [
333
+ "linux"
334
+ ],
335
+ "funding": {
336
+ "url": "https://opencollective.com/libvips"
337
+ }
338
+ },
339
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
340
+ "version": "1.3.3",
341
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.3.tgz",
342
+ "integrity": "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==",
343
+ "cpu": [
344
+ "arm64"
345
+ ],
346
+ "dev": true,
347
+ "libc": [
348
+ "musl"
349
+ ],
350
+ "license": "LGPL-3.0-or-later",
351
+ "optional": true,
352
+ "os": [
353
+ "linux"
354
+ ],
355
+ "funding": {
356
+ "url": "https://opencollective.com/libvips"
357
+ }
358
+ },
359
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
360
+ "version": "1.3.3",
361
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.3.tgz",
362
+ "integrity": "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==",
363
+ "cpu": [
364
+ "x64"
365
+ ],
366
+ "dev": true,
367
+ "libc": [
368
+ "musl"
369
+ ],
370
+ "license": "LGPL-3.0-or-later",
371
+ "optional": true,
372
+ "os": [
373
+ "linux"
374
+ ],
375
+ "funding": {
376
+ "url": "https://opencollective.com/libvips"
377
+ }
378
+ },
379
+ "node_modules/@img/sharp-linux-arm": {
380
+ "version": "0.35.4",
381
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.4.tgz",
382
+ "integrity": "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==",
383
+ "cpu": [
384
+ "arm"
385
+ ],
386
+ "dev": true,
387
+ "libc": [
388
+ "glibc"
389
+ ],
390
+ "license": "Apache-2.0",
391
+ "optional": true,
392
+ "os": [
393
+ "linux"
394
+ ],
395
+ "engines": {
396
+ "node": ">=20.9.0"
397
+ },
398
+ "funding": {
399
+ "url": "https://opencollective.com/libvips"
400
+ },
401
+ "optionalDependencies": {
402
+ "@img/sharp-libvips-linux-arm": "1.3.3"
403
+ }
404
+ },
405
+ "node_modules/@img/sharp-linux-arm64": {
406
+ "version": "0.35.4",
407
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.4.tgz",
408
+ "integrity": "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==",
409
+ "cpu": [
410
+ "arm64"
411
+ ],
412
+ "dev": true,
413
+ "libc": [
414
+ "glibc"
415
+ ],
416
+ "license": "Apache-2.0",
417
+ "optional": true,
418
+ "os": [
419
+ "linux"
420
+ ],
421
+ "engines": {
422
+ "node": ">=20.9.0"
423
+ },
424
+ "funding": {
425
+ "url": "https://opencollective.com/libvips"
426
+ },
427
+ "optionalDependencies": {
428
+ "@img/sharp-libvips-linux-arm64": "1.3.3"
429
+ }
430
+ },
431
+ "node_modules/@img/sharp-linux-ppc64": {
432
+ "version": "0.35.4",
433
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.4.tgz",
434
+ "integrity": "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==",
435
+ "cpu": [
436
+ "ppc64"
437
+ ],
438
+ "dev": true,
439
+ "libc": [
440
+ "glibc"
441
+ ],
442
+ "license": "Apache-2.0",
443
+ "optional": true,
444
+ "os": [
445
+ "linux"
446
+ ],
447
+ "engines": {
448
+ "node": ">=20.9.0"
449
+ },
450
+ "funding": {
451
+ "url": "https://opencollective.com/libvips"
452
+ },
453
+ "optionalDependencies": {
454
+ "@img/sharp-libvips-linux-ppc64": "1.3.3"
455
+ }
456
+ },
457
+ "node_modules/@img/sharp-linux-riscv64": {
458
+ "version": "0.35.4",
459
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.4.tgz",
460
+ "integrity": "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==",
461
+ "cpu": [
462
+ "riscv64"
463
+ ],
464
+ "dev": true,
465
+ "libc": [
466
+ "glibc"
467
+ ],
468
+ "license": "Apache-2.0",
469
+ "optional": true,
470
+ "os": [
471
+ "linux"
472
+ ],
473
+ "engines": {
474
+ "node": ">=20.9.0"
475
+ },
476
+ "funding": {
477
+ "url": "https://opencollective.com/libvips"
478
+ },
479
+ "optionalDependencies": {
480
+ "@img/sharp-libvips-linux-riscv64": "1.3.3"
481
+ }
482
+ },
483
+ "node_modules/@img/sharp-linux-s390x": {
484
+ "version": "0.35.4",
485
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.4.tgz",
486
+ "integrity": "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==",
487
+ "cpu": [
488
+ "s390x"
489
+ ],
490
+ "dev": true,
491
+ "libc": [
492
+ "glibc"
493
+ ],
494
+ "license": "Apache-2.0",
495
+ "optional": true,
496
+ "os": [
497
+ "linux"
498
+ ],
499
+ "engines": {
500
+ "node": ">=20.9.0"
501
+ },
502
+ "funding": {
503
+ "url": "https://opencollective.com/libvips"
504
+ },
505
+ "optionalDependencies": {
506
+ "@img/sharp-libvips-linux-s390x": "1.3.3"
507
+ }
508
+ },
509
+ "node_modules/@img/sharp-linux-x64": {
510
+ "version": "0.35.4",
511
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.4.tgz",
512
+ "integrity": "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==",
513
+ "cpu": [
514
+ "x64"
515
+ ],
516
+ "dev": true,
517
+ "libc": [
518
+ "glibc"
519
+ ],
520
+ "license": "Apache-2.0",
521
+ "optional": true,
522
+ "os": [
523
+ "linux"
524
+ ],
525
+ "engines": {
526
+ "node": ">=20.9.0"
527
+ },
528
+ "funding": {
529
+ "url": "https://opencollective.com/libvips"
530
+ },
531
+ "optionalDependencies": {
532
+ "@img/sharp-libvips-linux-x64": "1.3.3"
533
+ }
534
+ },
535
+ "node_modules/@img/sharp-linuxmusl-arm64": {
536
+ "version": "0.35.4",
537
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.4.tgz",
538
+ "integrity": "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==",
539
+ "cpu": [
540
+ "arm64"
541
+ ],
542
+ "dev": true,
543
+ "libc": [
544
+ "musl"
545
+ ],
546
+ "license": "Apache-2.0",
547
+ "optional": true,
548
+ "os": [
549
+ "linux"
550
+ ],
551
+ "engines": {
552
+ "node": ">=20.9.0"
553
+ },
554
+ "funding": {
555
+ "url": "https://opencollective.com/libvips"
556
+ },
557
+ "optionalDependencies": {
558
+ "@img/sharp-libvips-linuxmusl-arm64": "1.3.3"
559
+ }
560
+ },
561
+ "node_modules/@img/sharp-linuxmusl-x64": {
562
+ "version": "0.35.4",
563
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.4.tgz",
564
+ "integrity": "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==",
565
+ "cpu": [
566
+ "x64"
567
+ ],
568
+ "dev": true,
569
+ "libc": [
570
+ "musl"
571
+ ],
572
+ "license": "Apache-2.0",
573
+ "optional": true,
574
+ "os": [
575
+ "linux"
576
+ ],
577
+ "engines": {
578
+ "node": ">=20.9.0"
579
+ },
580
+ "funding": {
581
+ "url": "https://opencollective.com/libvips"
582
+ },
583
+ "optionalDependencies": {
584
+ "@img/sharp-libvips-linuxmusl-x64": "1.3.3"
585
+ }
586
+ },
587
+ "node_modules/@img/sharp-wasm32": {
588
+ "version": "0.35.4",
589
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz",
590
+ "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==",
591
+ "dev": true,
592
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
593
+ "optional": true,
594
+ "dependencies": {
595
+ "@emnapi/runtime": "^1.11.3"
596
+ },
597
+ "engines": {
598
+ "node": ">=20.9.0"
599
+ },
600
+ "funding": {
601
+ "url": "https://opencollective.com/libvips"
602
+ }
603
+ },
604
+ "node_modules/@img/sharp-webcontainers-wasm32": {
605
+ "version": "0.35.4",
606
+ "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.4.tgz",
607
+ "integrity": "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==",
608
+ "cpu": [
609
+ "wasm32"
610
+ ],
611
+ "dev": true,
612
+ "license": "Apache-2.0",
613
+ "optional": true,
614
+ "dependencies": {
615
+ "@img/sharp-wasm32": "0.35.4"
616
+ },
617
+ "engines": {
618
+ "node": ">=20.9.0"
619
+ },
620
+ "funding": {
621
+ "url": "https://opencollective.com/libvips"
622
+ }
623
+ },
624
+ "node_modules/@img/sharp-win32-arm64": {
625
+ "version": "0.35.4",
626
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.4.tgz",
627
+ "integrity": "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==",
628
+ "cpu": [
629
+ "arm64"
630
+ ],
631
+ "dev": true,
632
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
633
+ "optional": true,
634
+ "os": [
635
+ "win32"
636
+ ],
637
+ "engines": {
638
+ "node": ">=20.9.0"
639
+ },
640
+ "funding": {
641
+ "url": "https://opencollective.com/libvips"
642
+ }
643
+ },
644
+ "node_modules/@img/sharp-win32-ia32": {
645
+ "version": "0.35.4",
646
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.4.tgz",
647
+ "integrity": "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==",
648
+ "cpu": [
649
+ "ia32"
650
+ ],
651
+ "dev": true,
652
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
653
+ "optional": true,
654
+ "os": [
655
+ "win32"
656
+ ],
657
+ "engines": {
658
+ "node": "^20.9.0"
659
+ },
660
+ "funding": {
661
+ "url": "https://opencollective.com/libvips"
662
+ }
663
+ },
664
+ "node_modules/@img/sharp-win32-x64": {
665
+ "version": "0.35.4",
666
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.4.tgz",
667
+ "integrity": "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==",
668
+ "cpu": [
669
+ "x64"
670
+ ],
671
+ "dev": true,
672
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
673
+ "optional": true,
674
+ "os": [
675
+ "win32"
676
+ ],
677
+ "engines": {
678
+ "node": ">=20.9.0"
679
+ },
680
+ "funding": {
681
+ "url": "https://opencollective.com/libvips"
682
+ }
683
+ },
93
684
  "node_modules/@modelcontextprotocol/sdk": {
94
685
  "version": "1.30.0",
95
686
  "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz",
@@ -392,6 +983,16 @@
392
983
  "node": ">= 0.8"
393
984
  }
394
985
  },
986
+ "node_modules/detect-libc": {
987
+ "version": "2.1.2",
988
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
989
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
990
+ "dev": true,
991
+ "license": "Apache-2.0",
992
+ "engines": {
993
+ "node": ">=8"
994
+ }
995
+ },
395
996
  "node_modules/dunder-proto": {
396
997
  "version": "1.0.1",
397
998
  "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -692,9 +1293,9 @@
692
1293
  }
693
1294
  },
694
1295
  "node_modules/hono": {
695
- "version": "4.13.0",
696
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.0.tgz",
697
- "integrity": "sha512-jhunvfHWxd7J5EFfSgH4xsYJzSe/lfqbUCxiyyeaQasUsXeEHXtzVid+7EOGByc5JnFa23SSFL3Y2RV/z1T+eQ==",
1296
+ "version": "4.13.7",
1297
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.7.tgz",
1298
+ "integrity": "sha512-c8/gF9ac8Y78/agExVocyLevgR+JlpNB444Py0FSX8pJoPdYUfUzRcXtYEYGwt6l19qIlVZPN5Mfsw9jFShmQQ==",
698
1299
  "license": "MIT",
699
1300
  "engines": {
700
1301
  "node": ">=16.9.0"
@@ -781,6 +1382,13 @@
781
1382
  "url": "https://github.com/sponsors/panva"
782
1383
  }
783
1384
  },
1385
+ "node_modules/jpeg-js": {
1386
+ "version": "0.4.4",
1387
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
1388
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==",
1389
+ "dev": true,
1390
+ "license": "BSD-3-Clause"
1391
+ },
784
1392
  "node_modules/json-schema-traverse": {
785
1393
  "version": "1.0.0",
786
1394
  "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
@@ -942,6 +1550,16 @@
942
1550
  "node": ">=16.20.0"
943
1551
  }
944
1552
  },
1553
+ "node_modules/pngjs": {
1554
+ "version": "7.0.0",
1555
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz",
1556
+ "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==",
1557
+ "dev": true,
1558
+ "license": "MIT",
1559
+ "engines": {
1560
+ "node": ">=14.19.0"
1561
+ }
1562
+ },
945
1563
  "node_modules/posthog-node": {
946
1564
  "version": "5.48.1",
947
1565
  "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-5.48.1.tgz",
@@ -1046,6 +1664,32 @@
1046
1664
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1047
1665
  "license": "MIT"
1048
1666
  },
1667
+ "node_modules/saxes": {
1668
+ "version": "6.0.0",
1669
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
1670
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
1671
+ "dev": true,
1672
+ "license": "ISC",
1673
+ "dependencies": {
1674
+ "xmlchars": "^2.2.0"
1675
+ },
1676
+ "engines": {
1677
+ "node": ">=v12.22.7"
1678
+ }
1679
+ },
1680
+ "node_modules/semver": {
1681
+ "version": "7.8.5",
1682
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
1683
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
1684
+ "dev": true,
1685
+ "license": "ISC",
1686
+ "bin": {
1687
+ "semver": "bin/semver.js"
1688
+ },
1689
+ "engines": {
1690
+ "node": ">=10"
1691
+ }
1692
+ },
1049
1693
  "node_modules/send": {
1050
1694
  "version": "1.2.1",
1051
1695
  "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
@@ -1097,6 +1741,56 @@
1097
1741
  "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
1098
1742
  "license": "ISC"
1099
1743
  },
1744
+ "node_modules/sharp": {
1745
+ "version": "0.35.4",
1746
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.4.tgz",
1747
+ "integrity": "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==",
1748
+ "dev": true,
1749
+ "license": "Apache-2.0",
1750
+ "dependencies": {
1751
+ "@img/colour": "^1.1.0",
1752
+ "detect-libc": "^2.1.2",
1753
+ "semver": "^7.8.5"
1754
+ },
1755
+ "engines": {
1756
+ "node": ">=20.9.0"
1757
+ },
1758
+ "funding": {
1759
+ "url": "https://opencollective.com/libvips"
1760
+ },
1761
+ "optionalDependencies": {
1762
+ "@img/sharp-darwin-arm64": "0.35.4",
1763
+ "@img/sharp-darwin-x64": "0.35.4",
1764
+ "@img/sharp-freebsd-wasm32": "0.35.4",
1765
+ "@img/sharp-libvips-darwin-arm64": "1.3.3",
1766
+ "@img/sharp-libvips-darwin-x64": "1.3.3",
1767
+ "@img/sharp-libvips-linux-arm": "1.3.3",
1768
+ "@img/sharp-libvips-linux-arm64": "1.3.3",
1769
+ "@img/sharp-libvips-linux-ppc64": "1.3.3",
1770
+ "@img/sharp-libvips-linux-riscv64": "1.3.3",
1771
+ "@img/sharp-libvips-linux-s390x": "1.3.3",
1772
+ "@img/sharp-libvips-linux-x64": "1.3.3",
1773
+ "@img/sharp-libvips-linuxmusl-arm64": "1.3.3",
1774
+ "@img/sharp-libvips-linuxmusl-x64": "1.3.3",
1775
+ "@img/sharp-linux-arm": "0.35.4",
1776
+ "@img/sharp-linux-arm64": "0.35.4",
1777
+ "@img/sharp-linux-ppc64": "0.35.4",
1778
+ "@img/sharp-linux-riscv64": "0.35.4",
1779
+ "@img/sharp-linux-s390x": "0.35.4",
1780
+ "@img/sharp-linux-x64": "0.35.4",
1781
+ "@img/sharp-linuxmusl-arm64": "0.35.4",
1782
+ "@img/sharp-linuxmusl-x64": "0.35.4",
1783
+ "@img/sharp-webcontainers-wasm32": "0.35.4",
1784
+ "@img/sharp-win32-arm64": "0.35.4",
1785
+ "@img/sharp-win32-ia32": "0.35.4",
1786
+ "@img/sharp-win32-x64": "0.35.4"
1787
+ },
1788
+ "peerDependenciesMeta": {
1789
+ "@types/node": {
1790
+ "optional": true
1791
+ }
1792
+ }
1793
+ },
1100
1794
  "node_modules/shebang-command": {
1101
1795
  "version": "2.0.0",
1102
1796
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -1208,6 +1902,14 @@
1208
1902
  "node": ">=0.6"
1209
1903
  }
1210
1904
  },
1905
+ "node_modules/tslib": {
1906
+ "version": "2.8.1",
1907
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
1908
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
1909
+ "dev": true,
1910
+ "license": "0BSD",
1911
+ "optional": true
1912
+ },
1211
1913
  "node_modules/type-is": {
1212
1914
  "version": "2.1.0",
1213
1915
  "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz",
@@ -1278,6 +1980,29 @@
1278
1980
  "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1279
1981
  "license": "ISC"
1280
1982
  },
1983
+ "node_modules/xmlchars": {
1984
+ "version": "2.2.0",
1985
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
1986
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
1987
+ "dev": true,
1988
+ "license": "MIT"
1989
+ },
1990
+ "node_modules/yaml": {
1991
+ "version": "2.9.0",
1992
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
1993
+ "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
1994
+ "dev": true,
1995
+ "license": "ISC",
1996
+ "bin": {
1997
+ "yaml": "bin.mjs"
1998
+ },
1999
+ "engines": {
2000
+ "node": ">= 14.6"
2001
+ },
2002
+ "funding": {
2003
+ "url": "https://github.com/sponsors/eemeli"
2004
+ }
2005
+ },
1281
2006
  "node_modules/zod": {
1282
2007
  "version": "3.25.76",
1283
2008
  "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "trackly-cli",
3
- "version": "0.18.1",
3
+ "version": "0.18.3",
4
4
  "mcpName": "io.github.trackly-app/trackly",
5
- "description": "AI job search CLI + hosted MCP server with OAuth. 170K+ jobs, 3,800+ companies, 40+ ATS. Works with Claude, ChatGPT, Cursor, Windsurf, Codex via hosted streamable-http or local stdio.",
5
+ "description": "AI job search CLI + hosted MCP server with OAuth. Thousands of jobs, Thousands of companies, 40+ ATS. Works with Claude, ChatGPT, Cursor, Windsurf, Codex via hosted streamable-http or local stdio.",
6
6
  "bin": {
7
7
  "trackly": "./bin/trackly"
8
8
  },
@@ -11,6 +11,7 @@
11
11
  "test:contract-fixture": "node --test test/apply-contract.test.js",
12
12
  "test:hosted-contract": "node scripts/verify-hosted-contract.js",
13
13
  "test:review-auth-contract": "node scripts/verify-review-auth-contract.js",
14
+ "test:plugin-submission": "node scripts/verify-plugin-submission.js",
14
15
  "security:audit": "node scripts/verify-audit-exceptions.js"
15
16
  },
16
17
  "files": [
@@ -66,7 +67,7 @@
66
67
  "@modelcontextprotocol/sdk": "1.30.0",
67
68
  "@posthog/mcp": "0.11.0",
68
69
  "fast-uri": "3.1.7",
69
- "hono": "4.13.0",
70
+ "hono": "4.13.7",
70
71
  "ip-address": "10.4.0",
71
72
  "posthog-node": "5.48.1",
72
73
  "zod": "^3.23.0"
@@ -82,6 +83,11 @@
82
83
  },
83
84
  "devDependencies": {
84
85
  "@babel/parser": "7.29.8",
85
- "acorn": "8.18.0"
86
+ "acorn": "8.18.0",
87
+ "jpeg-js": "0.4.4",
88
+ "pngjs": "7.0.0",
89
+ "saxes": "6.0.0",
90
+ "sharp": "0.35.4",
91
+ "yaml": "2.9.0"
86
92
  }
87
93
  }
package/server.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
3
  "name": "io.github.trackly-app/trackly",
4
4
  "title": "Trackly CLI",
5
- "description": "AI job search for Claude, ChatGPT, Cursor. 170K+ jobs, 3,800+ companies. OAuth or stdio.",
5
+ "description": "AI job search for Claude, ChatGPT, Cursor. Thousands of jobs, Thousands of companies. OAuth or stdio.",
6
6
  "repository": {
7
7
  "url": "https://github.com/trackly-app/trackly-cli",
8
8
  "source": "github"
@@ -17,12 +17,12 @@
17
17
  ]
18
18
  }
19
19
  ],
20
- "version": "0.18.1",
20
+ "version": "0.18.3",
21
21
  "packages": [
22
22
  {
23
23
  "registryType": "npm",
24
24
  "identifier": "trackly-cli",
25
- "version": "0.18.1",
25
+ "version": "0.18.3",
26
26
  "runtimeHint": "npx",
27
27
  "runtimeArguments": [
28
28
  {