@cronicorn/mcp-server 1.12.2 → 1.12.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.
@@ -14,35 +14,60 @@ mcp:
14
14
 
15
15
  # Self-Hosting Guide
16
16
 
17
- Run Cronicorn on your own infrastructure using Docker Compose.
17
+ Run Cronicorn on your own infrastructure using Docker Compose with built-in Traefik reverse proxy for automatic HTTPS.
18
18
 
19
19
  ## Quick Start
20
20
 
21
21
  1. **Download the compose file**
22
22
 
23
- Get [`docker-compose.yml`](https://github.com/weskerllc/cronicorn/blob/main/docker-compose.yml) from the repo. This file pulls pre-built images from our registry—no building required.
23
+ Get [`docker-compose.yml`](https://github.com/weskerllc/cronicorn/blob/main/docker-compose.yml) from the repo. This file pulls pre-built images from our registry—no building required. It includes Traefik for automatic HTTPS and routing.
24
24
 
25
25
  2. **Create environment file**
26
26
 
27
- Create a `.env` file in the same directory. See [`.env.example`](https://github.com/weskerllc/cronicorn/blob/main/.env.example) for all options. At minimum, set:
28
-
27
+ Create a `.env` file in the same directory. See [`.env.example`](https://github.com/weskerllc/cronicorn/blob/main/.env.example) for all options.
28
+
29
+ **For local development** (no domain needed):
29
30
  ```bash
30
31
  # Generate with: openssl rand -base64 32
31
32
  BETTER_AUTH_SECRET=your-random-32-character-secret-here
33
+
34
+ # Optional: Use free .localhost domain (works without DNS)
35
+ DOMAIN=cronicorn.localhost
36
+ ```
37
+
38
+ **For production** (with your own domain):
39
+ ```bash
40
+ # Required
41
+ BETTER_AUTH_SECRET=your-random-32-character-secret-here
42
+ DOMAIN=yourdomain.com
43
+ LETSENCRYPT_EMAIL=admin@yourdomain.com
44
+
45
+ # Update URLs to use your domain
46
+ WEB_URL=https://yourdomain.com
47
+ API_URL=http://cronicorn-api:3333 # Keep internal
48
+ BETTER_AUTH_URL=https://yourdomain.com
49
+ BASE_URL=https://yourdomain.com
50
+ VITE_API_URL=https://yourdomain.com
32
51
  ```
33
52
 
34
- Everything else has sensible defaults that work out of the box.
53
+ 3. **Point your domain to your server** (production only)
54
+
55
+ Add DNS A records:
56
+ - `yourdomain.com` → Your server IP
57
+ - `docs.yourdomain.com` → Your server IP
35
58
 
36
- 3. **Start services**
59
+ 4. **Start services**
37
60
 
38
61
  ```bash
39
62
  docker compose up -d
40
63
  ```
41
64
 
42
- 4. **Access the app**
65
+ 5. **Access the app**
43
66
 
44
- - **Dashboard**: http://localhost:5173
45
- - **API**: http://localhost:3333
67
+ - **Local**: http://localhost (or http://cronicorn.localhost if using DOMAIN)
68
+ - **Production**: https://yourdomain.com (Traefik handles HTTPS automatically)
69
+ - **Docs**: https://docs.yourdomain.com
70
+ - **API**: https://yourdomain.com/api/*
46
71
  - **Login**: Use default admin credentials from `.env.example`
47
72
 
48
73
  ## Optional Features
@@ -69,28 +94,20 @@ AI_MODEL=gpt-4o-mini
69
94
 
70
95
  See `.env.example` for required Stripe configuration.
71
96
 
72
- ## Custom Domain
97
+ ## How It Works
73
98
 
74
- To use a custom domain, update these in your `.env`:
75
-
76
- ```bash
77
- # Public URLs (accessed by browsers)
78
- BETTER_AUTH_URL=https://cronicorn.yourdomain.com
79
- WEB_URL=https://cronicorn.yourdomain.com
80
- VITE_API_URL=https://cronicorn.yourdomain.com # Used at build time for client-side requests
81
- BASE_URL=https://cronicorn.yourdomain.com
82
-
83
- # Internal URLs (Docker network, used by web SSR to call API)
84
- API_URL=http://cronicorn-api:3333 # Keep this as internal Docker hostname
85
- ```
99
+ The included Traefik reverse proxy automatically:
100
+ - Routes `yourdomain.com/` to the web app
101
+ - Routes `yourdomain.com/api/*` to the API
102
+ - Routes `docs.yourdomain.com` to documentation
103
+ - Obtains and renews Let's Encrypt SSL certificates
104
+ - Redirects HTTP to HTTPS
86
105
 
87
- **Important**: The web app makes requests to the API from two places:
88
- - **Client-side** (browser): Uses `VITE_API_URL` - must be your public domain
89
- - **Server-side** (SSR): Uses `API_URL` - should be internal Docker network URL (`http://cronicorn-api:3333`)
106
+ **Architecture**:
107
+ - **Client-side requests** (browser): `https://yourdomain.com/api/*` Traefik API container
108
+ - **Server-side requests** (SSR): `http://cronicorn-api:3333` Direct internal Docker network call
90
109
 
91
- You'll need a reverse proxy (Traefik, Caddy, nginx) to handle SSL and route requests:
92
- - `yourdomain.com/` → Web container (port 5173)
93
- - `yourdomain.com/api/*` → API container (port 3333)
110
+ No manual reverse proxy configuration needed!
94
111
 
95
112
  ## Useful Commands
96
113
 
package/dist/index.js CHANGED
@@ -2370,11 +2370,11 @@ var require_luxon = __commonJS({
2370
2370
  return [null, null];
2371
2371
  }
2372
2372
  function simpleParse(...keys) {
2373
- return (match2, cursor) => {
2373
+ return (match3, cursor) => {
2374
2374
  const ret = {};
2375
2375
  let i;
2376
2376
  for (i = 0; i < keys.length; i++) {
2377
- ret[keys[i]] = parseInteger(match2[cursor + i]);
2377
+ ret[keys[i]] = parseInteger(match3[cursor + i]);
2378
2378
  }
2379
2379
  return [ret, null, cursor + i];
2380
2380
  };
@@ -2392,39 +2392,39 @@ var require_luxon = __commonJS({
2392
2392
  var sqlYmdRegex = /(\d{4})-(\d\d)-(\d\d)/;
2393
2393
  var sqlTimeRegex = RegExp(`${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`);
2394
2394
  var sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);
2395
- function int(match2, pos, fallback) {
2396
- const m = match2[pos];
2395
+ function int(match3, pos, fallback) {
2396
+ const m = match3[pos];
2397
2397
  return isUndefined(m) ? fallback : parseInteger(m);
2398
2398
  }
2399
- function extractISOYmd(match2, cursor) {
2399
+ function extractISOYmd(match3, cursor) {
2400
2400
  const item = {
2401
- year: int(match2, cursor),
2402
- month: int(match2, cursor + 1, 1),
2403
- day: int(match2, cursor + 2, 1)
2401
+ year: int(match3, cursor),
2402
+ month: int(match3, cursor + 1, 1),
2403
+ day: int(match3, cursor + 2, 1)
2404
2404
  };
2405
2405
  return [item, null, cursor + 3];
2406
2406
  }
2407
- function extractISOTime(match2, cursor) {
2407
+ function extractISOTime(match3, cursor) {
2408
2408
  const item = {
2409
- hours: int(match2, cursor, 0),
2410
- minutes: int(match2, cursor + 1, 0),
2411
- seconds: int(match2, cursor + 2, 0),
2412
- milliseconds: parseMillis(match2[cursor + 3])
2409
+ hours: int(match3, cursor, 0),
2410
+ minutes: int(match3, cursor + 1, 0),
2411
+ seconds: int(match3, cursor + 2, 0),
2412
+ milliseconds: parseMillis(match3[cursor + 3])
2413
2413
  };
2414
2414
  return [item, null, cursor + 4];
2415
2415
  }
2416
- function extractISOOffset(match2, cursor) {
2417
- const local = !match2[cursor] && !match2[cursor + 1], fullOffset = signedOffset(match2[cursor + 1], match2[cursor + 2]), zone = local ? null : FixedOffsetZone.instance(fullOffset);
2416
+ function extractISOOffset(match3, cursor) {
2417
+ const local = !match3[cursor] && !match3[cursor + 1], fullOffset = signedOffset(match3[cursor + 1], match3[cursor + 2]), zone = local ? null : FixedOffsetZone.instance(fullOffset);
2418
2418
  return [{}, zone, cursor + 3];
2419
2419
  }
2420
- function extractIANAZone(match2, cursor) {
2421
- const zone = match2[cursor] ? IANAZone.create(match2[cursor]) : null;
2420
+ function extractIANAZone(match3, cursor) {
2421
+ const zone = match3[cursor] ? IANAZone.create(match3[cursor]) : null;
2422
2422
  return [{}, zone, cursor + 1];
2423
2423
  }
2424
2424
  var isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);
2425
2425
  var isoDuration = /^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;
2426
- function extractISODuration(match2) {
2427
- const [s2, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] = match2;
2426
+ function extractISODuration(match3) {
2427
+ const [s2, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] = match3;
2428
2428
  const hasNegativePrefix = s2[0] === "-";
2429
2429
  const negativeSeconds = secondStr && secondStr[0] === "-";
2430
2430
  const maybeNegate = (num, force = false) => num !== void 0 && (force || num && hasNegativePrefix) ? -num : num;
@@ -2465,8 +2465,8 @@ var require_luxon = __commonJS({
2465
2465
  return result;
2466
2466
  }
2467
2467
  var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;
2468
- function extractRFC2822(match2) {
2469
- const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr, obsOffset, milOffset, offHourStr, offMinuteStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
2468
+ function extractRFC2822(match3) {
2469
+ const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr, obsOffset, milOffset, offHourStr, offMinuteStr] = match3, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
2470
2470
  let offset2;
2471
2471
  if (obsOffset) {
2472
2472
  offset2 = obsOffsets[obsOffset];
@@ -2483,12 +2483,12 @@ var require_luxon = __commonJS({
2483
2483
  var rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/;
2484
2484
  var rfc850 = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/;
2485
2485
  var ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;
2486
- function extractRFC1123Or850(match2) {
2487
- const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
2486
+ function extractRFC1123Or850(match3) {
2487
+ const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match3, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
2488
2488
  return [result, FixedOffsetZone.utcInstance];
2489
2489
  }
2490
- function extractASCII(match2) {
2491
- const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
2490
+ function extractASCII(match3) {
2491
+ const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match3, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
2492
2492
  return [result, FixedOffsetZone.utcInstance];
2493
2493
  }
2494
2494
  var isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);
@@ -4461,7 +4461,7 @@ var require_luxon = __commonJS({
4461
4461
  const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, "");
4462
4462
  return [`^${re}$`, units];
4463
4463
  }
4464
- function match(input, regex, handlers) {
4464
+ function match2(input, regex, handlers) {
4465
4465
  const matches = input.match(regex);
4466
4466
  if (matches) {
4467
4467
  const all = {};
@@ -4592,7 +4592,7 @@ var require_luxon = __commonJS({
4592
4592
  invalidReason: this.invalidReason
4593
4593
  };
4594
4594
  } else {
4595
- const [rawMatches, matches] = match(input, this.regex, this.handlers), [result, zone, specificOffset] = matches ? dateTimeFromMatches(matches) : [null, null, void 0];
4595
+ const [rawMatches, matches] = match2(input, this.regex, this.handlers), [result, zone, specificOffset] = matches ? dateTimeFromMatches(matches) : [null, null, void 0];
4596
4596
  if (hasOwnProperty(matches, "a") && hasOwnProperty(matches, "H")) {
4597
4597
  throw new ConflictingSpecificationError("Can't include meridiem when specifying 24-hour format");
4598
4598
  }
@@ -7222,12 +7222,12 @@ var require_expression = __commonJS({
7222
7222
  case "month":
7223
7223
  case "dayOfWeek":
7224
7224
  var aliases = CronExpression.aliases[field];
7225
- value = value.replace(/[a-z]{3}/gi, function(match) {
7226
- match = match.toLowerCase();
7227
- if (typeof aliases[match] !== "undefined") {
7228
- return aliases[match];
7225
+ value = value.replace(/[a-z]{3}/gi, function(match2) {
7226
+ match2 = match2.toLowerCase();
7227
+ if (typeof aliases[match2] !== "undefined") {
7228
+ return aliases[match2];
7229
7229
  } else {
7230
- throw new Error('Validation error, cannot resolve alias "' + match + '"');
7230
+ throw new Error('Validation error, cannot resolve alias "' + match2 + '"');
7231
7231
  }
7232
7232
  });
7233
7233
  break;
@@ -7999,8 +7999,8 @@ async function defaultBrowserId() {
7999
7999
  throw new Error("macOS only");
8000
8000
  }
8001
8001
  const { stdout } = await execFileAsync("defaults", ["read", "com.apple.LaunchServices/com.apple.launchservices.secure", "LSHandlers"]);
8002
- const match = /LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);
8003
- return match?.groups.id ?? "com.apple.Safari";
8002
+ const match2 = /LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);
8003
+ return match2?.groups.id ?? "com.apple.Safari";
8004
8004
  }
8005
8005
 
8006
8006
  // ../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js
@@ -8058,11 +8058,11 @@ async function defaultBrowser(_execFileAsync = execFileAsync3) {
8058
8058
  "/v",
8059
8059
  "ProgId"
8060
8060
  ]);
8061
- const match = /ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(stdout);
8062
- if (!match) {
8061
+ const match2 = /ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(stdout);
8062
+ if (!match2) {
8063
8063
  throw new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);
8064
8064
  }
8065
- const { id } = match.groups;
8065
+ const { id } = match2.groups;
8066
8066
  const browser = windowsBrowserProgIds[id];
8067
8067
  if (!browser) {
8068
8068
  throw new UnknownBrowserError(`Unknown browser ID: ${id}`);
@@ -13545,7 +13545,7 @@ var HealthSummaryResponseBaseSchema = external_exports.object({
13545
13545
  // ../../packages/api-contracts/dist/jobs/schemas.js
13546
13546
  init_esm_shims();
13547
13547
 
13548
- // ../../node_modules/.pnpm/@hono+zod-openapi@0.19.10_hono@4.8.5_zod@3.25.76/node_modules/@hono/zod-openapi/dist/index.js
13548
+ // ../../node_modules/.pnpm/@hono+zod-openapi@0.19.10_hono@4.10.6_zod@3.25.76/node_modules/@hono/zod-openapi/dist/index.js
13549
13549
  init_esm_shims();
13550
13550
 
13551
13551
  // ../../node_modules/.pnpm/@asteasolutions+zod-to-openapi@7.3.4_zod@3.25.76/node_modules/@asteasolutions/zod-to-openapi/dist/index.mjs
@@ -13633,32 +13633,32 @@ function extendZodWithOpenApi(zod) {
13633
13633
  };
13634
13634
  }
13635
13635
 
13636
- // ../../node_modules/.pnpm/@hono+zod-validator@0.7.4_hono@4.8.5_zod@3.25.76/node_modules/@hono/zod-validator/dist/index.js
13636
+ // ../../node_modules/.pnpm/@hono+zod-validator@0.7.4_hono@4.10.6_zod@3.25.76/node_modules/@hono/zod-validator/dist/index.js
13637
13637
  init_esm_shims();
13638
13638
 
13639
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/validator/index.js
13639
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/validator/index.js
13640
13640
  init_esm_shims();
13641
13641
 
13642
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/validator/validator.js
13642
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/validator/validator.js
13643
13643
  init_esm_shims();
13644
13644
 
13645
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/helper/cookie/index.js
13645
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/cookie/index.js
13646
13646
  init_esm_shims();
13647
13647
 
13648
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/utils/cookie.js
13648
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/cookie.js
13649
13649
  init_esm_shims();
13650
13650
 
13651
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/utils/url.js
13651
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/url.js
13652
13652
  init_esm_shims();
13653
13653
  var tryDecode = (str, decoder) => {
13654
13654
  try {
13655
13655
  return decoder(str);
13656
13656
  } catch {
13657
- return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {
13657
+ return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match2) => {
13658
13658
  try {
13659
- return decoder(match);
13659
+ return decoder(match2);
13660
13660
  } catch {
13661
- return match;
13661
+ return match2;
13662
13662
  }
13663
13663
  });
13664
13664
  }
@@ -13675,9 +13675,12 @@ var _decodeURI = (value) => {
13675
13675
  var _getQueryParam = (url, key, multiple) => {
13676
13676
  let encoded;
13677
13677
  if (!multiple && key && !/[%+]/.test(key)) {
13678
- let keyIndex2 = url.indexOf(`?${key}`, 8);
13678
+ let keyIndex2 = url.indexOf("?", 8);
13679
13679
  if (keyIndex2 === -1) {
13680
- keyIndex2 = url.indexOf(`&${key}`, 8);
13680
+ return void 0;
13681
+ }
13682
+ if (!url.startsWith(key, keyIndex2 + 1)) {
13683
+ keyIndex2 = url.indexOf(`&${key}`, keyIndex2 + 1);
13681
13684
  }
13682
13685
  while (keyIndex2 !== -1) {
13683
13686
  const trailingKeyCode = url.charCodeAt(keyIndex2 + key.length + 1);
@@ -13742,38 +13745,38 @@ var getQueryParams = (url, key) => {
13742
13745
  };
13743
13746
  var decodeURIComponent_ = decodeURIComponent;
13744
13747
 
13745
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/http-exception.js
13748
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js
13746
13749
  init_esm_shims();
13747
13750
 
13748
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/utils/buffer.js
13751
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/buffer.js
13749
13752
  init_esm_shims();
13750
13753
 
13751
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/utils/crypto.js
13754
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/crypto.js
13752
13755
  init_esm_shims();
13753
13756
 
13754
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/index.js
13757
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/index.js
13755
13758
  init_esm_shims();
13756
13759
 
13757
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/hono.js
13760
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/hono.js
13758
13761
  init_esm_shims();
13759
13762
 
13760
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/hono-base.js
13763
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/hono-base.js
13761
13764
  init_esm_shims();
13762
13765
 
13763
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/compose.js
13766
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/compose.js
13764
13767
  init_esm_shims();
13765
13768
 
13766
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/context.js
13769
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/context.js
13767
13770
  init_esm_shims();
13768
13771
 
13769
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/request.js
13772
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/request.js
13770
13773
  init_esm_shims();
13771
13774
 
13772
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/request/constants.js
13775
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/request/constants.js
13773
13776
  init_esm_shims();
13774
13777
  var GET_MATCH_RESULT = Symbol();
13775
13778
 
13776
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/utils/body.js
13779
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/body.js
13777
13780
  init_esm_shims();
13778
13781
  var parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {
13779
13782
  const { all = false, dot = false } = options;
@@ -13843,7 +13846,7 @@ var handleParsingNestedValues = (form, key, value) => {
13843
13846
  });
13844
13847
  };
13845
13848
 
13846
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/request.js
13849
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/request.js
13847
13850
  var tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);
13848
13851
  var HonoRequest = class {
13849
13852
  raw;
@@ -13864,14 +13867,14 @@ var HonoRequest = class {
13864
13867
  #getDecodedParam(key) {
13865
13868
  const paramKey = this.#matchResult[0][this.routeIndex][1][key];
13866
13869
  const param = this.#getParamValue(paramKey);
13867
- return param ? /\%/.test(param) ? tryDecodeURIComponent(param) : param : void 0;
13870
+ return param && /\%/.test(param) ? tryDecodeURIComponent(param) : param;
13868
13871
  }
13869
13872
  #getAllDecodedParams() {
13870
13873
  const decoded = {};
13871
13874
  const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);
13872
13875
  for (const key of keys) {
13873
13876
  const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);
13874
- if (value && typeof value === "string") {
13877
+ if (value !== void 0) {
13875
13878
  decoded[key] = /\%/.test(value) ? tryDecodeURIComponent(value) : value;
13876
13879
  }
13877
13880
  }
@@ -13954,45 +13957,51 @@ var HonoRequest = class {
13954
13957
  }
13955
13958
  };
13956
13959
 
13957
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/utils/html.js
13960
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/html.js
13958
13961
  init_esm_shims();
13959
13962
 
13960
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router.js
13963
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router.js
13961
13964
  init_esm_shims();
13962
13965
 
13963
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/utils/constants.js
13966
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/constants.js
13964
13967
  init_esm_shims();
13965
13968
 
13966
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/reg-exp-router/index.js
13969
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/reg-exp-router/index.js
13967
13970
  init_esm_shims();
13968
13971
 
13969
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/reg-exp-router/router.js
13972
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/reg-exp-router/router.js
13970
13973
  init_esm_shims();
13971
13974
 
13972
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/reg-exp-router/node.js
13975
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/reg-exp-router/matcher.js
13976
+ init_esm_shims();
13977
+
13978
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/reg-exp-router/node.js
13973
13979
  init_esm_shims();
13974
13980
  var PATH_ERROR = Symbol();
13975
13981
  var regExpMetaChars = new Set(".\\+*[^]$()");
13976
13982
 
13977
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/reg-exp-router/trie.js
13983
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/reg-exp-router/trie.js
13984
+ init_esm_shims();
13985
+
13986
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/reg-exp-router/prepared-router.js
13978
13987
  init_esm_shims();
13979
13988
 
13980
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/smart-router/index.js
13989
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/smart-router/index.js
13981
13990
  init_esm_shims();
13982
13991
 
13983
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/smart-router/router.js
13992
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/smart-router/router.js
13984
13993
  init_esm_shims();
13985
13994
 
13986
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/trie-router/index.js
13995
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/trie-router/index.js
13987
13996
  init_esm_shims();
13988
13997
 
13989
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/trie-router/router.js
13998
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/trie-router/router.js
13990
13999
  init_esm_shims();
13991
14000
 
13992
- // ../../node_modules/.pnpm/hono@4.8.5/node_modules/hono/dist/router/trie-router/node.js
14001
+ // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/router/trie-router/node.js
13993
14002
  init_esm_shims();
13994
14003
 
13995
- // ../../node_modules/.pnpm/@hono+zod-openapi@0.19.10_hono@4.8.5_zod@3.25.76/node_modules/@hono/zod-openapi/dist/index.js
14004
+ // ../../node_modules/.pnpm/@hono+zod-openapi@0.19.10_hono@4.10.6_zod@3.25.76/node_modules/@hono/zod-openapi/dist/index.js
13996
14005
  extendZodWithOpenApi(external_exports);
13997
14006
 
13998
14007
  // ../../packages/api-contracts/dist/jobs/schemas.js