@coreplane/switchboard 1.200.0 → 1.202.0

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.
Files changed (47) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/deploy/cloudflare-resident/refresh.ts +238 -0
  3. package/dist/assets/deploy/cloudflare-resident/shared.ts +80 -0
  4. package/dist/assets/deploy/cloudflare-resident/tsconfig.json +1 -1
  5. package/dist/assets/deploy/cloudflare-resident/worker.ts +67 -285
  6. package/dist/assets/deploy/cloudflare-resident/wrangler.template.jsonc +2 -1
  7. package/dist/assets/package-lock.json +482 -3
  8. package/dist/assets/package.json +1 -1
  9. package/dist/assets/project.json +1 -1
  10. package/dist/assets/source.json +3 -3
  11. package/dist/assets/src/core/authz/policy.ts +3 -0
  12. package/dist/assets/src/execution/residentRefresh.ts +29 -0
  13. package/dist/assets/web/dist/.vite/manifest.json +104 -67
  14. package/dist/assets/web/dist/assets/{AppShell-Bk2gbvet.js → AppShell-CJLPO_aI.js} +1 -1
  15. package/dist/assets/web/dist/assets/CostsPage-C6ZvnAmH.js +1 -0
  16. package/dist/assets/web/dist/assets/NotFoundPage-BdLcY60r.js +1 -0
  17. package/dist/assets/web/dist/assets/ResidentDetailPage-hXWrr8T6.js +1 -0
  18. package/dist/assets/web/dist/assets/ResidentsIndexPage-YLu4JwxJ.js +1 -0
  19. package/dist/assets/web/dist/assets/{RunRoutePage-C1TGcPCl.js → RunRoutePage-BDhHRJVO.js} +4 -4
  20. package/dist/assets/web/dist/assets/{RunRoutePage-XVFj0XDc.css → RunRoutePage-CdbrbqU2.css} +1 -1
  21. package/dist/assets/web/dist/assets/RunsIndexPage-D7zZ5a0l.js +1 -0
  22. package/dist/assets/web/dist/assets/{RunsTabs-C4krAL9o.js → RunsTabs-BOUlSa2W.js} +1 -1
  23. package/dist/assets/web/dist/assets/ScheduledPage-BciOQcC-.js +1 -0
  24. package/dist/assets/web/dist/assets/StatusDot-CTDLBv92.js +1 -0
  25. package/dist/assets/web/dist/assets/{Tooltip-C7yR095Y.js → Tooltip-DD2v9Gxx.js} +1 -1
  26. package/dist/assets/web/dist/assets/{favicon-DL1rdWJt.js → favicon-C4Q8cRsP.js} +1 -1
  27. package/dist/assets/web/dist/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2 +0 -0
  28. package/dist/assets/web/dist/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2 +0 -0
  29. package/dist/assets/web/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  30. package/dist/assets/web/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  31. package/dist/assets/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  32. package/dist/assets/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  33. package/dist/assets/web/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  34. package/dist/assets/web/dist/assets/main-DoTjwE-G.css +1 -0
  35. package/dist/assets/web/dist/assets/{main-DDu3Ig6S.js → main-DrSlUcMg.js} +3 -3
  36. package/dist/assets/web/dist/assets/{seed-BglCRKLA.js → seed-B8mQEhhw.js} +1 -1
  37. package/dist/assets/web/dist/assets/{wallClock-Ckv3sKoR.js → wallClock-DI4HIEN5.js} +1 -1
  38. package/dist/cli.js +629 -207
  39. package/package.json +1 -1
  40. package/dist/assets/web/dist/assets/CostsPage-CzutIHUw.js +0 -1
  41. package/dist/assets/web/dist/assets/NotFoundPage-C-BuaSm8.js +0 -1
  42. package/dist/assets/web/dist/assets/ResidentDetailPage-Dw3e9u1u.js +0 -1
  43. package/dist/assets/web/dist/assets/ResidentsIndexPage-D8NN4AFS.js +0 -1
  44. package/dist/assets/web/dist/assets/RunsIndexPage-D9iLpfAr.js +0 -1
  45. package/dist/assets/web/dist/assets/ScheduledPage-BJCtMp7H.js +0 -1
  46. package/dist/assets/web/dist/assets/StatusDot-DvV0z_-s.js +0 -1
  47. package/dist/assets/web/dist/assets/main-BsBGUyMH.css +0 -2
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "switchboard",
3
- "version": "1.200.0",
3
+ "version": "1.202.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "switchboard",
9
- "version": "1.200.0",
9
+ "version": "1.202.0",
10
10
  "license": "Apache-2.0",
11
11
  "workspaces": [
12
12
  "web",
@@ -3759,7 +3759,11 @@
3759
3759
  "devDependencies": {
3760
3760
  "@fontsource-variable/instrument-sans": "^5.3.0",
3761
3761
  "@fontsource-variable/jetbrains-mono": "^5.3.0",
3762
+ "@fontsource/instrument-sans": "5.3.0",
3763
+ "@fontsource/jetbrains-mono": "5.3.0",
3764
+ "@resvg/resvg-js": "2.6.2",
3762
3765
  "mermaid": "^11.4.1",
3766
+ "satori": "0.33.4",
3763
3767
  "vitepress": "^1.6.4",
3764
3768
  "vitepress-plugin-mermaid": "^2.0.17"
3765
3769
  },
@@ -5068,6 +5072,26 @@
5068
5072
  "url": "https://github.com/sponsors/ayuhito"
5069
5073
  }
5070
5074
  },
5075
+ "node_modules/@fontsource/instrument-sans": {
5076
+ "version": "5.3.0",
5077
+ "resolved": "https://registry.npmjs.org/@fontsource/instrument-sans/-/instrument-sans-5.3.0.tgz",
5078
+ "integrity": "sha512-QwXc4hb/px3XvSPS2CPAOgey8nyrQFxgxrmXQQ+pN+P51hKdAcchxpg8rSbjANFfPu6VKXhDqkVDucXMZ9CM5g==",
5079
+ "dev": true,
5080
+ "license": "OFL-1.1",
5081
+ "funding": {
5082
+ "url": "https://github.com/sponsors/ayuhito"
5083
+ }
5084
+ },
5085
+ "node_modules/@fontsource/jetbrains-mono": {
5086
+ "version": "5.3.0",
5087
+ "resolved": "https://registry.npmjs.org/@fontsource/jetbrains-mono/-/jetbrains-mono-5.3.0.tgz",
5088
+ "integrity": "sha512-fqDfB5I9f1p1TV486aUgB9t8zP84P0O1FtQR5Ol9vjwPy+S+EIGlVYm1cvj2W5shcZMTg2nZFdVMoH5wFu8a1A==",
5089
+ "dev": true,
5090
+ "license": "OFL-1.1",
5091
+ "funding": {
5092
+ "url": "https://github.com/sponsors/ayuhito"
5093
+ }
5094
+ },
5071
5095
  "node_modules/@humanfs/core": {
5072
5096
  "version": "0.19.2",
5073
5097
  "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
@@ -6252,6 +6276,246 @@
6252
6276
  "hulk": "bin/hulk"
6253
6277
  }
6254
6278
  },
6279
+ "node_modules/@resvg/resvg-js": {
6280
+ "version": "2.6.2",
6281
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.2.tgz",
6282
+ "integrity": "sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==",
6283
+ "dev": true,
6284
+ "license": "MPL-2.0",
6285
+ "engines": {
6286
+ "node": ">= 10"
6287
+ },
6288
+ "optionalDependencies": {
6289
+ "@resvg/resvg-js-android-arm-eabi": "2.6.2",
6290
+ "@resvg/resvg-js-android-arm64": "2.6.2",
6291
+ "@resvg/resvg-js-darwin-arm64": "2.6.2",
6292
+ "@resvg/resvg-js-darwin-x64": "2.6.2",
6293
+ "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.2",
6294
+ "@resvg/resvg-js-linux-arm64-gnu": "2.6.2",
6295
+ "@resvg/resvg-js-linux-arm64-musl": "2.6.2",
6296
+ "@resvg/resvg-js-linux-x64-gnu": "2.6.2",
6297
+ "@resvg/resvg-js-linux-x64-musl": "2.6.2",
6298
+ "@resvg/resvg-js-win32-arm64-msvc": "2.6.2",
6299
+ "@resvg/resvg-js-win32-ia32-msvc": "2.6.2",
6300
+ "@resvg/resvg-js-win32-x64-msvc": "2.6.2"
6301
+ }
6302
+ },
6303
+ "node_modules/@resvg/resvg-js-android-arm-eabi": {
6304
+ "version": "2.6.2",
6305
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.6.2.tgz",
6306
+ "integrity": "sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==",
6307
+ "cpu": [
6308
+ "arm"
6309
+ ],
6310
+ "dev": true,
6311
+ "license": "MPL-2.0",
6312
+ "optional": true,
6313
+ "os": [
6314
+ "android"
6315
+ ],
6316
+ "engines": {
6317
+ "node": ">= 10"
6318
+ }
6319
+ },
6320
+ "node_modules/@resvg/resvg-js-android-arm64": {
6321
+ "version": "2.6.2",
6322
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-2.6.2.tgz",
6323
+ "integrity": "sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==",
6324
+ "cpu": [
6325
+ "arm64"
6326
+ ],
6327
+ "dev": true,
6328
+ "license": "MPL-2.0",
6329
+ "optional": true,
6330
+ "os": [
6331
+ "android"
6332
+ ],
6333
+ "engines": {
6334
+ "node": ">= 10"
6335
+ }
6336
+ },
6337
+ "node_modules/@resvg/resvg-js-darwin-arm64": {
6338
+ "version": "2.6.2",
6339
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-2.6.2.tgz",
6340
+ "integrity": "sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==",
6341
+ "cpu": [
6342
+ "arm64"
6343
+ ],
6344
+ "dev": true,
6345
+ "license": "MPL-2.0",
6346
+ "optional": true,
6347
+ "os": [
6348
+ "darwin"
6349
+ ],
6350
+ "engines": {
6351
+ "node": ">= 10"
6352
+ }
6353
+ },
6354
+ "node_modules/@resvg/resvg-js-darwin-x64": {
6355
+ "version": "2.6.2",
6356
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-2.6.2.tgz",
6357
+ "integrity": "sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==",
6358
+ "cpu": [
6359
+ "x64"
6360
+ ],
6361
+ "dev": true,
6362
+ "license": "MPL-2.0",
6363
+ "optional": true,
6364
+ "os": [
6365
+ "darwin"
6366
+ ],
6367
+ "engines": {
6368
+ "node": ">= 10"
6369
+ }
6370
+ },
6371
+ "node_modules/@resvg/resvg-js-linux-arm-gnueabihf": {
6372
+ "version": "2.6.2",
6373
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-2.6.2.tgz",
6374
+ "integrity": "sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==",
6375
+ "cpu": [
6376
+ "arm"
6377
+ ],
6378
+ "dev": true,
6379
+ "license": "MPL-2.0",
6380
+ "optional": true,
6381
+ "os": [
6382
+ "linux"
6383
+ ],
6384
+ "engines": {
6385
+ "node": ">= 10"
6386
+ }
6387
+ },
6388
+ "node_modules/@resvg/resvg-js-linux-arm64-gnu": {
6389
+ "version": "2.6.2",
6390
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-2.6.2.tgz",
6391
+ "integrity": "sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==",
6392
+ "cpu": [
6393
+ "arm64"
6394
+ ],
6395
+ "dev": true,
6396
+ "libc": [
6397
+ "glibc"
6398
+ ],
6399
+ "license": "MPL-2.0",
6400
+ "optional": true,
6401
+ "os": [
6402
+ "linux"
6403
+ ],
6404
+ "engines": {
6405
+ "node": ">= 10"
6406
+ }
6407
+ },
6408
+ "node_modules/@resvg/resvg-js-linux-arm64-musl": {
6409
+ "version": "2.6.2",
6410
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-2.6.2.tgz",
6411
+ "integrity": "sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==",
6412
+ "cpu": [
6413
+ "arm64"
6414
+ ],
6415
+ "dev": true,
6416
+ "libc": [
6417
+ "musl"
6418
+ ],
6419
+ "license": "MPL-2.0",
6420
+ "optional": true,
6421
+ "os": [
6422
+ "linux"
6423
+ ],
6424
+ "engines": {
6425
+ "node": ">= 10"
6426
+ }
6427
+ },
6428
+ "node_modules/@resvg/resvg-js-linux-x64-gnu": {
6429
+ "version": "2.6.2",
6430
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.2.tgz",
6431
+ "integrity": "sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==",
6432
+ "cpu": [
6433
+ "x64"
6434
+ ],
6435
+ "dev": true,
6436
+ "libc": [
6437
+ "glibc"
6438
+ ],
6439
+ "license": "MPL-2.0",
6440
+ "optional": true,
6441
+ "os": [
6442
+ "linux"
6443
+ ],
6444
+ "engines": {
6445
+ "node": ">= 10"
6446
+ }
6447
+ },
6448
+ "node_modules/@resvg/resvg-js-linux-x64-musl": {
6449
+ "version": "2.6.2",
6450
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.2.tgz",
6451
+ "integrity": "sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==",
6452
+ "cpu": [
6453
+ "x64"
6454
+ ],
6455
+ "dev": true,
6456
+ "libc": [
6457
+ "musl"
6458
+ ],
6459
+ "license": "MPL-2.0",
6460
+ "optional": true,
6461
+ "os": [
6462
+ "linux"
6463
+ ],
6464
+ "engines": {
6465
+ "node": ">= 10"
6466
+ }
6467
+ },
6468
+ "node_modules/@resvg/resvg-js-win32-arm64-msvc": {
6469
+ "version": "2.6.2",
6470
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-2.6.2.tgz",
6471
+ "integrity": "sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==",
6472
+ "cpu": [
6473
+ "arm64"
6474
+ ],
6475
+ "dev": true,
6476
+ "license": "MPL-2.0",
6477
+ "optional": true,
6478
+ "os": [
6479
+ "win32"
6480
+ ],
6481
+ "engines": {
6482
+ "node": ">= 10"
6483
+ }
6484
+ },
6485
+ "node_modules/@resvg/resvg-js-win32-ia32-msvc": {
6486
+ "version": "2.6.2",
6487
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-2.6.2.tgz",
6488
+ "integrity": "sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==",
6489
+ "cpu": [
6490
+ "ia32"
6491
+ ],
6492
+ "dev": true,
6493
+ "license": "MPL-2.0",
6494
+ "optional": true,
6495
+ "os": [
6496
+ "win32"
6497
+ ],
6498
+ "engines": {
6499
+ "node": ">= 10"
6500
+ }
6501
+ },
6502
+ "node_modules/@resvg/resvg-js-win32-x64-msvc": {
6503
+ "version": "2.6.2",
6504
+ "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-2.6.2.tgz",
6505
+ "integrity": "sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==",
6506
+ "cpu": [
6507
+ "x64"
6508
+ ],
6509
+ "dev": true,
6510
+ "license": "MPL-2.0",
6511
+ "optional": true,
6512
+ "os": [
6513
+ "win32"
6514
+ ],
6515
+ "engines": {
6516
+ "node": ">= 10"
6517
+ }
6518
+ },
6255
6519
  "node_modules/@rolldown/binding-android-arm-eabi": {
6256
6520
  "version": "1.2.7",
6257
6521
  "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.7.tgz",
@@ -6967,6 +7231,23 @@
6967
7231
  "dev": true,
6968
7232
  "license": "MIT"
6969
7233
  },
7234
+ "node_modules/@shuding/opentype.js": {
7235
+ "version": "1.4.0-beta.0",
7236
+ "resolved": "https://registry.npmjs.org/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz",
7237
+ "integrity": "sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==",
7238
+ "dev": true,
7239
+ "license": "MIT",
7240
+ "dependencies": {
7241
+ "fflate": "^0.7.3",
7242
+ "string.prototype.codepointat": "^0.2.1"
7243
+ },
7244
+ "bin": {
7245
+ "ot": "bin/ot"
7246
+ },
7247
+ "engines": {
7248
+ "node": ">= 8.0.0"
7249
+ }
7250
+ },
6970
7251
  "node_modules/@sindresorhus/is": {
6971
7252
  "version": "7.2.0",
6972
7253
  "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz",
@@ -9883,6 +10164,16 @@
9883
10164
  "node": "18 || 20 || >=22"
9884
10165
  }
9885
10166
  },
10167
+ "node_modules/base64-js": {
10168
+ "version": "0.0.8",
10169
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
10170
+ "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==",
10171
+ "dev": true,
10172
+ "license": "MIT",
10173
+ "engines": {
10174
+ "node": ">= 0.4"
10175
+ }
10176
+ },
9886
10177
  "node_modules/birpc": {
9887
10178
  "version": "2.9.0",
9888
10179
  "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz",
@@ -10054,6 +10345,16 @@
10054
10345
  "url": "https://github.com/sponsors/ljharb"
10055
10346
  }
10056
10347
  },
10348
+ "node_modules/camelize": {
10349
+ "version": "1.0.1",
10350
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
10351
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
10352
+ "dev": true,
10353
+ "license": "MIT",
10354
+ "funding": {
10355
+ "url": "https://github.com/sponsors/ljharb"
10356
+ }
10357
+ },
10057
10358
  "node_modules/capnweb": {
10058
10359
  "version": "0.8.0",
10059
10360
  "resolved": "https://registry.npmjs.org/capnweb/-/capnweb-0.8.0.tgz",
@@ -10165,6 +10466,13 @@
10165
10466
  "dev": true,
10166
10467
  "license": "MIT"
10167
10468
  },
10469
+ "node_modules/color-name": {
10470
+ "version": "1.1.4",
10471
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
10472
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
10473
+ "dev": true,
10474
+ "license": "MIT"
10475
+ },
10168
10476
  "node_modules/colortranslator": {
10169
10477
  "version": "5.0.0",
10170
10478
  "resolved": "https://registry.npmjs.org/colortranslator/-/colortranslator-5.0.0.tgz",
@@ -10323,6 +10631,52 @@
10323
10631
  "uncrypto": "^0.1.3"
10324
10632
  }
10325
10633
  },
10634
+ "node_modules/css-background-parser": {
10635
+ "version": "0.1.0",
10636
+ "resolved": "https://registry.npmjs.org/css-background-parser/-/css-background-parser-0.1.0.tgz",
10637
+ "integrity": "sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==",
10638
+ "dev": true,
10639
+ "license": "MIT"
10640
+ },
10641
+ "node_modules/css-box-shadow": {
10642
+ "version": "1.0.0-3",
10643
+ "resolved": "https://registry.npmjs.org/css-box-shadow/-/css-box-shadow-1.0.0-3.tgz",
10644
+ "integrity": "sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==",
10645
+ "dev": true,
10646
+ "license": "MIT"
10647
+ },
10648
+ "node_modules/css-color-keywords": {
10649
+ "version": "1.0.0",
10650
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
10651
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
10652
+ "dev": true,
10653
+ "license": "ISC",
10654
+ "engines": {
10655
+ "node": ">=4"
10656
+ }
10657
+ },
10658
+ "node_modules/css-gradient-parser": {
10659
+ "version": "0.0.17",
10660
+ "resolved": "https://registry.npmjs.org/css-gradient-parser/-/css-gradient-parser-0.0.17.tgz",
10661
+ "integrity": "sha512-w2Xy9UMMwlKtou0vlRnXvWglPAceXCTtcmVSo8ZBUvqCV5aXEFP/PC6d+I464810I9FT++UACwTD5511bmGPUg==",
10662
+ "dev": true,
10663
+ "license": "MIT",
10664
+ "engines": {
10665
+ "node": ">=16"
10666
+ }
10667
+ },
10668
+ "node_modules/css-to-react-native": {
10669
+ "version": "3.2.0",
10670
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
10671
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
10672
+ "dev": true,
10673
+ "license": "MIT",
10674
+ "dependencies": {
10675
+ "camelize": "^1.0.0",
10676
+ "css-color-keywords": "^1.0.0",
10677
+ "postcss-value-parser": "^4.0.2"
10678
+ }
10679
+ },
10326
10680
  "node_modules/css-tree": {
10327
10681
  "version": "3.2.1",
10328
10682
  "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
@@ -11822,6 +12176,13 @@
11822
12176
  }
11823
12177
  }
11824
12178
  },
12179
+ "node_modules/fflate": {
12180
+ "version": "0.7.3",
12181
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.3.tgz",
12182
+ "integrity": "sha512-0Zz1jOzJWERhyhsimS54VTqOteCNwRtIlh8isdL0AXLo0g7xNTfTL7oWrkmCnPhZGocKIkWHBistBrrpoNH3aw==",
12183
+ "dev": true,
12184
+ "license": "MIT"
12185
+ },
11825
12186
  "node_modules/file-entry-cache": {
11826
12187
  "version": "11.1.5",
11827
12188
  "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz",
@@ -12690,6 +13051,13 @@
12690
13051
  "node": ">=20.0.0"
12691
13052
  }
12692
13053
  },
13054
+ "node_modules/harfbuzzjs": {
13055
+ "version": "0.10.0",
13056
+ "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-0.10.0.tgz",
13057
+ "integrity": "sha512-SN8LVwCOzvTq3OPNd0+EAghgXugItz56wst567D1vs7LnnKGWprhi3EG58aVOBwhN8HEbQxL4I9NDWkcXUutRw==",
13058
+ "dev": true,
13059
+ "license": "MIT"
13060
+ },
12693
13061
  "node_modules/has-symbols": {
12694
13062
  "version": "1.1.0",
12695
13063
  "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
@@ -12765,6 +13133,19 @@
12765
13133
  "url": "https://opencollective.com/unified"
12766
13134
  }
12767
13135
  },
13136
+ "node_modules/hex-rgb": {
13137
+ "version": "4.3.0",
13138
+ "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz",
13139
+ "integrity": "sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==",
13140
+ "dev": true,
13141
+ "license": "MIT",
13142
+ "engines": {
13143
+ "node": ">=6"
13144
+ },
13145
+ "funding": {
13146
+ "url": "https://github.com/sponsors/sindresorhus"
13147
+ }
13148
+ },
12768
13149
  "node_modules/hey-listen": {
12769
13150
  "version": "1.0.8",
12770
13151
  "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz",
@@ -13499,6 +13880,17 @@
13499
13880
  "url": "https://opencollective.com/parcel"
13500
13881
  }
13501
13882
  },
13883
+ "node_modules/linebreak": {
13884
+ "version": "1.1.0",
13885
+ "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz",
13886
+ "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==",
13887
+ "dev": true,
13888
+ "license": "MIT",
13889
+ "dependencies": {
13890
+ "base64-js": "0.0.8",
13891
+ "unicode-trie": "^2.0.0"
13892
+ }
13893
+ },
13502
13894
  "node_modules/linkifyjs": {
13503
13895
  "version": "4.3.3",
13504
13896
  "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.3.tgz",
@@ -14891,6 +15283,24 @@
14891
15283
  "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==",
14892
15284
  "license": "MIT"
14893
15285
  },
15286
+ "node_modules/pako": {
15287
+ "version": "0.2.9",
15288
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
15289
+ "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==",
15290
+ "dev": true,
15291
+ "license": "MIT"
15292
+ },
15293
+ "node_modules/parse-css-color": {
15294
+ "version": "0.2.1",
15295
+ "resolved": "https://registry.npmjs.org/parse-css-color/-/parse-css-color-0.2.1.tgz",
15296
+ "integrity": "sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==",
15297
+ "dev": true,
15298
+ "license": "MIT",
15299
+ "dependencies": {
15300
+ "color-name": "^1.1.4",
15301
+ "hex-rgb": "^4.1.0"
15302
+ }
15303
+ },
14894
15304
  "node_modules/parseurl": {
14895
15305
  "version": "1.3.3",
14896
15306
  "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -15085,6 +15495,13 @@
15085
15495
  "node": ">=4"
15086
15496
  }
15087
15497
  },
15498
+ "node_modules/postcss-value-parser": {
15499
+ "version": "4.2.0",
15500
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
15501
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
15502
+ "dev": true,
15503
+ "license": "MIT"
15504
+ },
15088
15505
  "node_modules/preact": {
15089
15506
  "version": "10.29.8",
15090
15507
  "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.8.tgz",
@@ -15650,6 +16067,41 @@
15650
16067
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
15651
16068
  "license": "MIT"
15652
16069
  },
16070
+ "node_modules/satori": {
16071
+ "version": "0.33.4",
16072
+ "resolved": "https://registry.npmjs.org/satori/-/satori-0.33.4.tgz",
16073
+ "integrity": "sha512-dCnaW6D/tkCJxG5UvpZPWnnvfTdGTVVSAq1tzH6xC5MeOhAeeswRcSq5zT7C6lRCdTGow9PRGus7PCzdp5JJYw==",
16074
+ "dev": true,
16075
+ "license": "MPL-2.0",
16076
+ "dependencies": {
16077
+ "@shuding/opentype.js": "1.4.0-beta.0",
16078
+ "css-background-parser": "^0.1.0",
16079
+ "css-box-shadow": "1.0.0-3",
16080
+ "css-gradient-parser": "^0.0.17",
16081
+ "css-to-react-native": "^3.0.0",
16082
+ "emoji-regex-xs": "^2.0.1",
16083
+ "escape-html": "^1.0.3",
16084
+ "fflate": "0.7.3",
16085
+ "harfbuzzjs": "0.10.0",
16086
+ "linebreak": "^1.1.0",
16087
+ "parse-css-color": "^0.2.1",
16088
+ "postcss-value-parser": "^4.2.0",
16089
+ "yoga-layout": "^3.2.1"
16090
+ },
16091
+ "engines": {
16092
+ "node": ">=16"
16093
+ }
16094
+ },
16095
+ "node_modules/satori/node_modules/emoji-regex-xs": {
16096
+ "version": "2.0.1",
16097
+ "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-2.0.1.tgz",
16098
+ "integrity": "sha512-1QFuh8l7LqUcKe24LsPUNzjrzJQ7pgRwp1QMcZ5MX6mFplk2zQ08NVCM84++1cveaUUYtcCYHmeFEuNg16sU4g==",
16099
+ "dev": true,
16100
+ "license": "MIT",
16101
+ "engines": {
16102
+ "node": ">=10.0.0"
16103
+ }
16104
+ },
15653
16105
  "node_modules/scule": {
15654
16106
  "version": "1.3.0",
15655
16107
  "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
@@ -15984,6 +16436,13 @@
15984
16436
  "dev": true,
15985
16437
  "license": "MIT"
15986
16438
  },
16439
+ "node_modules/string.prototype.codepointat": {
16440
+ "version": "0.2.1",
16441
+ "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz",
16442
+ "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==",
16443
+ "dev": true,
16444
+ "license": "MIT"
16445
+ },
15987
16446
  "node_modules/stringify-entities": {
15988
16447
  "version": "4.0.4",
15989
16448
  "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
@@ -16483,6 +16942,17 @@
16483
16942
  }
16484
16943
  }
16485
16944
  },
16945
+ "node_modules/unicode-trie": {
16946
+ "version": "2.0.0",
16947
+ "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz",
16948
+ "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
16949
+ "dev": true,
16950
+ "license": "MIT",
16951
+ "dependencies": {
16952
+ "pako": "^0.2.5",
16953
+ "tiny-inflate": "^1.0.0"
16954
+ }
16955
+ },
16486
16956
  "node_modules/unifont": {
16487
16957
  "version": "0.7.5",
16488
16958
  "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.5.tgz",
@@ -18268,6 +18738,13 @@
18268
18738
  "url": "https://github.com/sponsors/sindresorhus"
18269
18739
  }
18270
18740
  },
18741
+ "node_modules/yoga-layout": {
18742
+ "version": "3.2.1",
18743
+ "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-3.2.1.tgz",
18744
+ "integrity": "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==",
18745
+ "dev": true,
18746
+ "license": "MIT"
18747
+ },
18271
18748
  "node_modules/youch": {
18272
18749
  "version": "4.1.0-beta.10",
18273
18750
  "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz",
@@ -18329,7 +18806,7 @@
18329
18806
  },
18330
18807
  "packages/switchboard": {
18331
18808
  "name": "@coreplane/switchboard",
18332
- "version": "1.200.0",
18809
+ "version": "1.202.0",
18333
18810
  "license": "Apache-2.0",
18334
18811
  "dependencies": {
18335
18812
  "@anthropic-ai/sdk": "^0.124.0",
@@ -18363,6 +18840,8 @@
18363
18840
  "vue-router": "^5.3.1"
18364
18841
  },
18365
18842
  "devDependencies": {
18843
+ "@fontsource-variable/instrument-sans": "^5.3.0",
18844
+ "@fontsource-variable/jetbrains-mono": "^5.3.0",
18366
18845
  "@iconify-json/lucide": "^1.2.129",
18367
18846
  "@tailwindcss/typography": "^0.5.20",
18368
18847
  "@types/node": "^24.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchboard",
3
- "version": "1.200.0",
3
+ "version": "1.202.0",
4
4
  "private": true,
5
5
  "description": "Mention it in Slack and an agent reviews the PR, ships the fix, or answers the question — on the model you choose, with its tools running where you decide.",
6
6
  "license": "Apache-2.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$comment": "The one place the project says who it is. Everything that names the project, its home, its docs, or its contact reads this file or is checked against it (npm run check:project-facts). Change a value here and the check names every copy that has to follow.",
3
3
  "name": "switchboard",
4
- "displayName": "OpenSwitchboard",
4
+ "displayName": "Switchboard",
5
5
  "npmPackage": "@coreplane/switchboard",
6
6
  "description": "Mention it in Slack and an agent reviews the PR, ships the fix, or answers the question — on the model you choose, with its tools running where you decide.",
7
7
  "organization": "coreplanelabs",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.200.0",
3
- "commit": "8b8223d7c3299d642d813eb6796f796d2491b856",
4
- "builtAt": "2026-09-11T19:47:20.673Z"
2
+ "version": "1.202.0",
3
+ "commit": "1da9e3cbb372db6a36b9218f2df3f33a9ed0a828",
4
+ "builtAt": "2026-09-11T21:24:21.512Z"
5
5
  }
@@ -117,6 +117,9 @@ export const POLICY: readonly Rule[] = [
117
117
  { action: "deploy:write", resource: "command", when: [grant("deploy:write")] },
118
118
  { action: "env:write", resource: "command", when: [grant("env:write")] },
119
119
  { action: "setup:write", resource: "command", when: [grant("setup:write")] },
120
+ // `contract render` reads host paths the caller names: CLI-only, the read
121
+ // grant by name — no chat baseline holds it.
122
+ { action: "contract:read", resource: "command", when: [grant("contract:read")] },
120
123
 
121
124
  // ── mcp (external MCP servers live in the three config tiers) ────────────
122
125
  { action: "mcp:read", resource: "command", when: [grant("mcp:read")] },