@ashlr/hub 3.2.7 → 3.3.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 (149) hide show
  1. package/CHANGELOG.md +268 -0
  2. package/README.md +4 -1
  3. package/dist/build-identity.json +2 -2
  4. package/dist/cli/activation.d.ts +41 -0
  5. package/dist/cli/activation.js +485 -0
  6. package/dist/cli/activation.js.map +1 -0
  7. package/dist/cli/audit.js +18 -0
  8. package/dist/cli/audit.js.map +1 -1
  9. package/dist/cli/backlog.d.ts +0 -5
  10. package/dist/cli/backlog.js +18 -0
  11. package/dist/cli/backlog.js.map +1 -1
  12. package/dist/cli/comms.js +20 -0
  13. package/dist/cli/comms.js.map +1 -1
  14. package/dist/cli/completions.d.ts +6 -1
  15. package/dist/cli/completions.js +35 -11
  16. package/dist/cli/completions.js.map +1 -1
  17. package/dist/cli/daemon.js +10 -3
  18. package/dist/cli/daemon.js.map +1 -1
  19. package/dist/cli/demo.d.ts +0 -27
  20. package/dist/cli/demo.js +17 -0
  21. package/dist/cli/demo.js.map +1 -1
  22. package/dist/cli/help.js +19 -3
  23. package/dist/cli/help.js.map +1 -1
  24. package/dist/cli/inbox.d.ts +14 -2
  25. package/dist/cli/inbox.js +137 -23
  26. package/dist/cli/inbox.js.map +1 -1
  27. package/dist/cli/index.d.ts +1 -0
  28. package/dist/cli/index.js +10 -0
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/onboard.d.ts +0 -13
  31. package/dist/cli/onboard.js +20 -0
  32. package/dist/cli/onboard.js.map +1 -1
  33. package/dist/cli/resources.js +15 -0
  34. package/dist/cli/resources.js.map +1 -1
  35. package/dist/cli/run.js +1 -1
  36. package/dist/cli/run.js.map +1 -1
  37. package/dist/cli/sandbox.js +43 -0
  38. package/dist/cli/sandbox.js.map +1 -1
  39. package/dist/cli/tui.d.ts +0 -6
  40. package/dist/cli/tui.js +14 -0
  41. package/dist/cli/tui.js.map +1 -1
  42. package/dist/core/config.js +70 -0
  43. package/dist/core/config.js.map +1 -1
  44. package/dist/core/daemon/activation-permit.d.ts +268 -33
  45. package/dist/core/daemon/activation-permit.js +1111 -106
  46. package/dist/core/daemon/activation-permit.js.map +1 -1
  47. package/dist/core/daemon/loop.d.ts +13 -1
  48. package/dist/core/daemon/loop.js +192 -9
  49. package/dist/core/daemon/loop.js.map +1 -1
  50. package/dist/core/daemon/runtime-activation-resident-start-protocol.d.ts +141 -0
  51. package/dist/core/daemon/runtime-activation-resident-start-protocol.js +462 -0
  52. package/dist/core/daemon/runtime-activation-resident-start-protocol.js.map +1 -0
  53. package/dist/core/daemon/runtime-activation-resident-start-runtime.d.ts +27 -0
  54. package/dist/core/daemon/runtime-activation-resident-start-runtime.js +28 -0
  55. package/dist/core/daemon/runtime-activation-resident-start-runtime.js.map +1 -0
  56. package/dist/core/daemon/runtime-activation-stopped-consumer.d.ts +139 -0
  57. package/dist/core/daemon/runtime-activation-stopped-consumer.js +995 -0
  58. package/dist/core/daemon/runtime-activation-stopped-consumer.js.map +1 -0
  59. package/dist/core/daemon/runtime-activation-stopped-runtime.d.ts +36 -0
  60. package/dist/core/daemon/runtime-activation-stopped-runtime.js +134 -0
  61. package/dist/core/daemon/runtime-activation-stopped-runtime.js.map +1 -0
  62. package/dist/core/daemon/runtime-activation-transaction.d.ts +41 -17
  63. package/dist/core/daemon/runtime-activation-transaction.js +80 -11
  64. package/dist/core/daemon/runtime-activation-transaction.js.map +1 -1
  65. package/dist/core/daemon/runtime-release-dependency-inventory.js +1 -0
  66. package/dist/core/daemon/runtime-release-dependency-inventory.js.map +1 -1
  67. package/dist/core/daemon/service-install-authority.d.ts +0 -4
  68. package/dist/core/daemon/service-install-authority.js +18 -3
  69. package/dist/core/daemon/service-install-authority.js.map +1 -1
  70. package/dist/core/dashboard.d.ts +10 -0
  71. package/dist/core/dashboard.js +103 -28
  72. package/dist/core/dashboard.js.map +1 -1
  73. package/dist/core/effective-config.js +7 -0
  74. package/dist/core/effective-config.js.map +1 -1
  75. package/dist/core/fleet/automerge-pass.js +33 -0
  76. package/dist/core/fleet/automerge-pass.js.map +1 -1
  77. package/dist/core/fleet/decisions-ledger.js +35 -12
  78. package/dist/core/fleet/decisions-ledger.js.map +1 -1
  79. package/dist/core/fleet/external-skill-git-capture.js +9 -1
  80. package/dist/core/fleet/external-skill-git-capture.js.map +1 -1
  81. package/dist/core/fleet/judge-decision-metadata.d.ts +8 -1
  82. package/dist/core/fleet/judge-decision-metadata.js +14 -1
  83. package/dist/core/fleet/judge-decision-metadata.js.map +1 -1
  84. package/dist/core/fleet/manager.d.ts +15 -1
  85. package/dist/core/fleet/manager.js +108 -30
  86. package/dist/core/fleet/manager.js.map +1 -1
  87. package/dist/core/fleet/post-merge-credit.d.ts +134 -9
  88. package/dist/core/fleet/post-merge-credit.js +350 -10
  89. package/dist/core/fleet/post-merge-credit.js.map +1 -1
  90. package/dist/core/fleet/self-improve.d.ts +34 -1
  91. package/dist/core/fleet/self-improve.js +106 -1
  92. package/dist/core/fleet/self-improve.js.map +1 -1
  93. package/dist/core/fleet/skill-library.d.ts +21 -2
  94. package/dist/core/fleet/skill-library.js +54 -12
  95. package/dist/core/fleet/skill-library.js.map +1 -1
  96. package/dist/core/fleet/status.js +1 -0
  97. package/dist/core/fleet/status.js.map +1 -1
  98. package/dist/core/fleet/worked-ledger.d.ts +22 -0
  99. package/dist/core/fleet/worked-ledger.js +32 -0
  100. package/dist/core/fleet/worked-ledger.js.map +1 -1
  101. package/dist/core/foundry/automerge-scope-policy.d.ts +2 -2
  102. package/dist/core/foundry/automerge-scope-policy.js +9 -2
  103. package/dist/core/foundry/automerge-scope-policy.js.map +1 -1
  104. package/dist/core/goals/store.js +18 -4
  105. package/dist/core/goals/store.js.map +1 -1
  106. package/dist/core/inbox/apply.js +5 -2
  107. package/dist/core/inbox/apply.js.map +1 -1
  108. package/dist/core/inbox/merge.d.ts +94 -1
  109. package/dist/core/inbox/merge.js +349 -16
  110. package/dist/core/inbox/merge.js.map +1 -1
  111. package/dist/core/integrations/github.d.ts +2 -0
  112. package/dist/core/integrations/github.js +2 -1
  113. package/dist/core/integrations/github.js.map +1 -1
  114. package/dist/core/learn/reflect.d.ts +42 -4
  115. package/dist/core/learn/reflect.js +56 -5
  116. package/dist/core/learn/reflect.js.map +1 -1
  117. package/dist/core/run/engines.d.ts +8 -0
  118. package/dist/core/run/engines.js +9 -1
  119. package/dist/core/run/engines.js.map +1 -1
  120. package/dist/core/run/learned-router.js +28 -3
  121. package/dist/core/run/learned-router.js.map +1 -1
  122. package/dist/core/run/orchestrator.d.ts +7 -2
  123. package/dist/core/run/orchestrator.js +86 -60
  124. package/dist/core/run/orchestrator.js.map +1 -1
  125. package/dist/core/swarm/rollback.d.ts +11 -0
  126. package/dist/core/swarm/rollback.js +54 -0
  127. package/dist/core/swarm/rollback.js.map +1 -1
  128. package/dist/core/swarm/runner.js +94 -8
  129. package/dist/core/swarm/runner.js.map +1 -1
  130. package/dist/core/types.d.ts +100 -1
  131. package/dist/core/types.js.map +1 -1
  132. package/dist/core/web/api.js +105 -7
  133. package/dist/core/web/api.js.map +1 -1
  134. package/dist/core/web/control.d.ts +20 -0
  135. package/dist/core/web/control.js +44 -32
  136. package/dist/core/web/control.js.map +1 -1
  137. package/dist/core/web/fleet-status-cache.d.ts +68 -0
  138. package/dist/core/web/fleet-status-cache.js +120 -0
  139. package/dist/core/web/fleet-status-cache.js.map +1 -0
  140. package/dist/core/web/public/next/assets/index-CY0U241s.css +1 -0
  141. package/dist/core/web/public/next/assets/index-Ct0mf8n4.js +69 -0
  142. package/dist/core/web/public/next/assets/index-Ct0mf8n4.js.map +1 -0
  143. package/dist/core/web/public/next/index.html +15 -0
  144. package/dist/release-dependency-inventory.json +1 -1
  145. package/docs/RUNTIME_ACTIVATION_AUTHORITY.md +126 -21
  146. package/docs/contracts/CONTRACT-M521.md +102 -0
  147. package/package.json +20 -3
  148. package/schema/config.schema.json +800 -5
  149. package/node_modules/which/CHANGELOG.md +0 -166
@@ -0,0 +1,15 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta name="color-scheme" content="light dark" />
7
+ <title>ashlr — operator console</title>
8
+ <meta name="referrer" content="no-referrer" />
9
+ <script type="module" crossorigin src="/next/assets/index-Ct0mf8n4.js"></script>
10
+ <link rel="stylesheet" crossorigin href="/next/assets/index-CY0U241s.css">
11
+ </head>
12
+ <body>
13
+ <div id="root"></div>
14
+ </body>
15
+ </html>
@@ -1 +1 @@
1
- {"algorithm":"sha256","assurance":"packaged-build-byte-observation","inventoryDigest":"b4c102ba5438d2f1a1fdd3c0e82fbf7d6b51c420061d802e381543f95b48fa68","package":{"manifestSha256":"4b0b414228be155661ba024ddde905f8397f188598cf0215a9548dac5013ae36","name":"@ashlr/hub","version":"3.2.7"},"packages":[{"archiveModeSha256":"e593537ea027a53342e9c95325f3823e507298732511cd61c314537000cb008c","contentSha256":"39703185cd013059db3eb5ac351625fa9dfd1eef0509fb47ff04fcc0a4cec6f5","fileCount":25,"name":"@hono/node-server","path":"@hono/node-server","size":120353,"version":"2.0.12"},{"archiveModeSha256":"212ef6ab48b10cfc61481fdb4d517d5aefa8a9e78f321c9483e13f8f0854aade","contentSha256":"54ecfe6624026e35139d2f943de8626043145c82c1d6580882a4adf4ee6b3c90","fileCount":693,"name":"@modelcontextprotocol/sdk","path":"@modelcontextprotocol/sdk","size":4322438,"version":"1.30.0"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"@modelcontextprotocol/sdk/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"@modelcontextprotocol/sdk/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"93bc4d919570486c9dac1184c65d89802a5d7e5e51d2ad2c9c79e9229b0d2bfd","fileCount":5,"name":"accepts","path":"accepts","size":16917,"version":"2.0.0"},{"archiveModeSha256":"338fe03444b2468ffb84fa0a62e4ad26985fbe9063f5b6500fc00baab52687a7","contentSha256":"a570e5cd740441f9e2ad9e20aab09d6ff5f01c54b5ca63889fb9cc65aa22ed38","fileCount":15,"name":"ajv-formats","path":"ajv-formats","size":56763,"version":"3.0.1"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"ajv-formats/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"ajv-formats/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"99258e0ccfd899459bc7f95949a5bec9039234f80f0a96cfbf7de4cfd9deaad9","contentSha256":"e6f71097d1bf22309cc2010ba116320dbe0b37b53af324631969ccef03817448","fileCount":10,"name":"body-parser","path":"body-parser","size":42536,"version":"2.3.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"body-parser/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"048d4140095d01f76e5d5a576d5a10de4e1cebcc64cab6ea49f14afc54939be6","fileCount":5,"name":"bytes","path":"bytes","size":12270,"version":"3.1.2"},{"archiveModeSha256":"df415aae8a21af7234f013c4d934c5074b07e617f6189084a43c78a49bafcb78","contentSha256":"870b383c07315fef9619399c2450297d079b1398583984a5ccb9cd2b1005cb59","fileCount":21,"name":"call-bind-apply-helpers","path":"call-bind-apply-helpers","size":15952,"version":"1.0.2"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"01be39d7156b173ffe2869dcd589e2080dcf2f1bcbcfa2f20409582ccb21cfaf","fileCount":11,"name":"call-bound","path":"call-bound","size":17106,"version":"1.0.4"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"4f967d79760cd06bcfdbf918d30b3a77752d03e6e76582aeac4b3a81dcd6a6a9","fileCount":4,"name":"content-disposition","path":"content-disposition","size":19928,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ad93015c6082464b41e63397fc9ee739d6bb7cb93755c9fbef749cff39b8675","fileCount":5,"name":"content-type","path":"content-type","size":10471,"version":"1.0.5"},{"archiveModeSha256":"2048aee59eb971a928e2fcac3881a222b2c9140ec980dfd14756de04a3885902","contentSha256":"ca8dd7ddd6a3970df6e3efff74247cd6f985dfdcc596ac0f58cd50c5b88555e8","fileCount":5,"name":"cookie","path":"cookie","size":23382,"version":"0.7.2"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"360601ff3d56cfdb8de7d836940caa5d74a437474129017697aab4696fc84e03","fileCount":5,"name":"cookie-signature","path":"cookie-signature","size":4993,"version":"1.2.2"},{"archiveModeSha256":"3bf3b01496f9ce98ec5c58c595c317975f470de6da6599d5d405c60c294f12c6","contentSha256":"9a628bd867c40f8bd4753d84f5f364a5ce92fcdd73fb164977d566275580786e","fileCount":4,"name":"cors","path":"cors","size":19956,"version":"2.8.6"},{"archiveModeSha256":"0c4b2570bd695c455ca6e9f67aaabdf88b1d486e39e9e52f4b8cc0c595e08f33","contentSha256":"9666a5f3074e7ff71dab89ccc0fecd79699b6c68e85087cc3416e9b220e9369e","fileCount":9,"name":"cross-spawn","path":"cross-spawn","size":16094,"version":"7.0.6"},{"archiveModeSha256":"fd7ec5fdf7ea41f349416d375406faf41b35702e2e23f02d2c015acb72adc8f2","contentSha256":"e9f41fdd4e55dc936295270bdb7c994d9ad85dd2bd6f2fb3d46767a16ee1a03e","fileCount":7,"name":"debug","path":"debug","size":42793,"version":"4.4.3"},{"archiveModeSha256":"bb32a6d3c5b9088943cd629938024c4c8d207814db8194313063fe3844cbbc8c","contentSha256":"cfc74892a99b215bdc61d9817f90b235318267ddbf8a29ef52b2906d8b26e980","fileCount":6,"name":"depd","path":"depd","size":27117,"version":"2.0.0"},{"archiveModeSha256":"305af32d2ba2d5fe89c9acaa17537f1a06e7e131bf81112cb11d623fdbb9c6f1","contentSha256":"5c4728d83554a1fc2fd51c01cf2d30bb89adbe1c6469a52201eed72b68af0f91","fileCount":15,"name":"dunder-proto","path":"dunder-proto","size":13003,"version":"1.0.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"bae9f4988b2d279e16b4bb3e5527647300137f2978aef97f40acd1b453a8d5a7","fileCount":4,"name":"ee-first","path":"ee-first","size":6259,"version":"1.1.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1c50e3d3cd38c66e1e462f0004781f789e59959aec798aef31f9a2f049d216e5","fileCount":4,"name":"encodeurl","path":"encodeurl","size":6980,"version":"2.0.0"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"a2dd73d6e2d58eda48469112f2eacae1fec583f84f72643b3593c6092bd3e877","fileCount":11,"name":"es-define-property","path":"es-define-property","size":10217,"version":"1.0.1"},{"archiveModeSha256":"23a440c46333c31a4ae0a1ffdc2ec6db818da1c36a039abc189b118e1bcdc625","contentSha256":"fd08a46013bf09d90a2240c6a8a97f12ff7106507456c73e7db53f608b41214e","fileCount":22,"name":"es-errors","path":"es-errors","size":12324,"version":"1.3.0"},{"archiveModeSha256":"b6b95f08bcc5f254eddbff61393e6efa09637b9fe2996a163d3c2c71c28bb681","contentSha256":"893e26d760872fd0c233391eff242a717320d6b2d6ab004ad827d1dd6c517ea5","fileCount":16,"name":"es-object-atoms","path":"es-object-atoms","size":11967,"version":"1.1.2"},{"archiveModeSha256":"764d64b5de2e2faa2387d92a5ed5dcbc1822797787a67ee46e827d4d353a2cb5","contentSha256":"27b564cee7701979ecc9ba3ad9b57c4eb185ddfe14f6fbef7961b9d95fc51789","fileCount":4,"name":"escape-html","path":"escape-html","size":3660,"version":"1.0.3"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"53b09a946276069cc9e202851404809b0b27f9616f6398ba1ba053cf27a9b61f","fileCount":5,"name":"etag","path":"etag","size":10809,"version":"1.8.1"},{"archiveModeSha256":"15cc21147f13500c581198be8a82187d7d2cd38a2c23b9459c89f22990a5b971","contentSha256":"fda71ef638beebe2ebae12fe705f63cb2276d6b35564064714ad352727e6f0a9","fileCount":13,"name":"eventsource","path":"eventsource","size":147304,"version":"3.0.7"},{"archiveModeSha256":"57e54f8cb946a2072d2c928cce29ff71a0383916edbb50e97042f859f043677f","contentSha256":"57456c2bbbfd8965c4466cf8a120581c6de9c67c1e04bf815189370f5f76ec3f","fileCount":21,"name":"eventsource-parser","path":"eventsource-parser","size":123218,"version":"3.1.0"},{"archiveModeSha256":"e882878862f5bfd4ff0cb5120df0b9e29758544fabad522563cc91a5102513a0","contentSha256":"c4cccb2f6077128bc31e51f7f772663988796261352298821eea234de1f42281","fileCount":10,"name":"express","path":"express","size":75429,"version":"5.2.1"},{"archiveModeSha256":"0f783761dfb7c14c80535b5a3d2f282398f8621985ed04be794ef3144740784e","contentSha256":"332479fcc3eaa25713fa7df0d4e3a953b7a008fde6413d4278aa667d7e4473e1","fileCount":9,"name":"express-rate-limit","path":"express-rate-limit","size":146332,"version":"8.5.2"},{"archiveModeSha256":"78e09d25ac30efc25d5604344654f3158820dbd9d45a1900b9f44e0e500839cf","contentSha256":"5ca43c0737026213eee30eb17e40859c918af2ae30f16d3882fdfbd8bcb03afd","fileCount":11,"name":"fast-deep-equal","path":"fast-deep-equal","size":12966,"version":"3.1.3"},{"archiveModeSha256":"487bd966467016fcc4fda3f2a6bf29700b652065acf1aba94d6f1f95844edb06","contentSha256":"a77ae10575efbbb07363fb9c7167e877fbd2794ba422fcccd3ffc0884d2d759d","fileCount":34,"name":"fast-uri","path":"fast-uri","size":167683,"version":"3.1.5"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"a184198d4d20e0177fd4f9e5d82bc40d34143c3a8279e7200511905b08e91d1a","fileCount":5,"name":"finalhandler","path":"finalhandler","size":18111,"version":"2.1.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"5a3882ea4acfd16ac4851f43587d6ab87fd08de45665981db6e8ee5944486118","fileCount":5,"name":"forwarded","path":"forwarded","size":5876,"version":"0.2.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"c3d3cc5e56026a726c20ed1d516509608bddb667d5cc999f01cd3971a92e4406","fileCount":5,"name":"fresh","path":"fresh","size":10289,"version":"2.0.0"},{"archiveModeSha256":"6f10ab8235c8a46f648cd17681016bf68595208a48d01f1351bd0b19bcb4301c","contentSha256":"8afcdc5f094efcac14509859ce70157ec7daff89642bc5d604b235f6917dd5b0","fileCount":12,"name":"function-bind","path":"function-bind","size":31427,"version":"1.1.2"},{"archiveModeSha256":"2d4c82c10091157e0f33c6a4a049ef4b2609c8f2a6d70882fa538122b54c1ce3","contentSha256":"1b862b6fe457cd272bb8bce8407ac7f972c857ac317189afe7a29ba378f0f6ac","fileCount":9,"name":"get-intrinsic","path":"get-intrinsic","size":46542,"version":"1.3.0"},{"archiveModeSha256":"995b5a61ce2e3cb963405de061067b699b48e90eb6ce2ac0d88e88bd9c38549a","contentSha256":"3dc759afa7e26cd60cc642b39bffcbd22dd574469e4ac2174cc9b57b97599f82","fileCount":15,"name":"get-proto","path":"get-proto","size":10840,"version":"1.0.1"},{"archiveModeSha256":"169ecf4d0c444e719e5bcd4e912e3ceb193138b5ab7eef8f727798759a4331d3","contentSha256":"6f2eeeb1483b34581df01b15d1b80b2b45be2c7ce06496c72a90351194858738","fileCount":12,"name":"gopd","path":"gopd","size":9869,"version":"1.2.0"},{"archiveModeSha256":"2f2262ae382d511cef7d373ff151a1a662ae623e50cb17d3a920d9e87593011d","contentSha256":"617f42cde01c4ca5a0bdab28f544a70e5f52c8707daad05016cb789193ba0554","fileCount":16,"name":"has-symbols","path":"has-symbols","size":23409,"version":"1.1.0"},{"archiveModeSha256":"35386dc8ee83de6dc1f61324623e1d9907205a1bd2fa66b02bc7c0429bdf85cc","contentSha256":"e6b281a2b3f6100d9b44f0916c797da53c254e8a38cb357134e80eddf5181a48","fileCount":10,"name":"hasown","path":"hasown","size":10332,"version":"2.0.4"},{"archiveModeSha256":"99e1e3bd61da454d1b8c0246de7225a229c18ca896bf4e6eeacbf7563aa2a542","contentSha256":"bff461e4ab56a1a97667dd1f2cc3ceb1b30dd1a3895d2062fc6dbd427f920329","fileCount":562,"name":"hono","path":"hono","size":1357534,"version":"4.12.34"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"b34d2d8fdbf41450767591b746eb2adaa4a22b59aa55c94ef0ce65ff1ba6fe6d","fileCount":5,"name":"http-errors","path":"http-errors","size":19064,"version":"2.0.1"},{"archiveModeSha256":"086f9d977a09c672ced4c2d703944875d8db454fe8fdd7fe8882f0888ed7c20f","contentSha256":"762b205b641d142557d0b3fb5d376d571e7823473661004f6cb319b7c0603976","fileCount":27,"name":"iconv-lite","path":"iconv-lite","size":343635,"version":"0.7.2"},{"archiveModeSha256":"7b3e1bd04c00f38ad3e4f4fb20e65a4eeb707527b4fd7c84ea7764cef9cebdff","contentSha256":"7c50865fdccbf6c6b44600a997d13c0c5c215ded131f0a4c98acd8d15694e632","fileCount":5,"name":"inherits","path":"inherits","size":3958,"version":"2.0.4"},{"archiveModeSha256":"3ef444401f83c959cfda73e7e9fd50d0796f6f141f36f458a3f132b362e6c375","contentSha256":"0e8533c4762708d8f61d9a21b3fa5f10d7f4907a36609490e71edaadb1186c1e","fileCount":30,"name":"ip-address","path":"ip-address","size":299533,"version":"10.4.0"},{"archiveModeSha256":"a710aacb72996fbfa6d514e678b50cfe4d17619a71648b516a3a09a96479c2c8","contentSha256":"272599141de35d28a1e92b1aec64154c866998a44310163040e6499b6ec1d9c3","fileCount":6,"name":"ipaddr.js","path":"ipaddr.js","size":42145,"version":"1.9.1"},{"archiveModeSha256":"969b492deb1f22a61f85cf9f98cc0f7c1984c3c0fd162d3ba5a600f0f6181ed8","contentSha256":"31aa30a6fbd5f134714c0ae7bc1e4c7a00b1c5bfabd2931e92618a4121bd6fa8","fileCount":6,"name":"is-promise","path":"is-promise","size":2958,"version":"4.0.0"},{"archiveModeSha256":"8f22f331a576ff070646bb75a80918007ff2b93be80520594930dd04865a6e44","contentSha256":"a560d4935c162172bd5feede21bc62536cec616c166de516cd5c367a7ca23f98","fileCount":8,"name":"isexe","path":"isexe","size":10956,"version":"2.0.0"},{"archiveModeSha256":"ec3d3c0b513b0905f208bc029bc355c1cf7038f95e2e7b1e2d19ddac26e374ea","contentSha256":"e3633b6af5ec16f6448989dd91dad2798a190e52e7a3d16d90ceca23d52c5b35","fileCount":88,"name":"jose","path":"jose","size":257736,"version":"6.2.3"},{"archiveModeSha256":"bdba5b2b7f19b131522a9af3d6cd30db94ee97690d535e5c3c84d1bce068c2a9","contentSha256":"efcb8d289875749e930bf8f745c132edf832c0f9a25768fcd97e129851288174","fileCount":9,"name":"json-schema-typed","path":"json-schema-typed","size":197188,"version":"8.0.2"},{"archiveModeSha256":"e73b085e3825c81b36b8c4f559c8091c8a3b87751f8f1c8b8bf886fab0b2d422","contentSha256":"5cc193be9810cb46a64717935be48e9077d849553f18fe0ea118d6da4aff3663","fileCount":12,"name":"marked","path":"marked","size":429802,"version":"17.0.0"},{"archiveModeSha256":"74a40513091b687e690f49f4110e314302d0b8b3c9f196cf587c9d702c4cd7e9","contentSha256":"a4884adbf4399adaff50d30983c4afa402a1d15b56a371824ea5c7c7cab385fa","fileCount":38,"name":"math-intrinsics","path":"math-intrinsics","size":17323,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ec2d844bc07543d41a6ab6d78008dd2998877609cc16ba532204995fb4339c5","fileCount":5,"name":"media-typer","path":"media-typer","size":9256,"version":"1.1.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"983f0d7028b74df8828007fabcab26e7f36e42fc7db74e321a110f6f40aa3fa7","fileCount":5,"name":"merge-descriptors","path":"merge-descriptors","size":4373,"version":"2.0.0"},{"archiveModeSha256":"2cb256014f7e1eda905b4809694ab3b06e8c1f1c5b78cb4de5da514e4e57659a","contentSha256":"c979d86230ca6688633d5ef7c89397f312c6d556a1964cb8dfe33596b8b548b9","fileCount":6,"name":"mime-db","path":"mime-db","size":225566,"version":"1.54.0"},{"archiveModeSha256":"20c4497e7b68189571962123cabb12dc852bb2346c45deed91c081c899659249","contentSha256":"28ee29177b736969ce0a555c11ae5275280510007a2670dcdd7ea6b1868f46c3","fileCount":6,"name":"mime-types","path":"mime-types","size":22871,"version":"3.0.2"},{"archiveModeSha256":"20014b85b0431588ccd9c0e6c6afeffc10e21d0ee7de53e2ba2296fd52bb1a7c","contentSha256":"667f3d7d170cb303a69e67dc3a69a08255a3e5cfb8703f4904417b0362bc0d28","fileCount":4,"name":"ms","path":"ms","size":6721,"version":"2.1.3"},{"archiveModeSha256":"5602cdc50f925bdc25002fe3756f55c3e1117229d22c2b2c600e8ffca90295f6","contentSha256":"84851509ca06e7b5b721720762592fa23f696ba1d72172dbc1e692c1dfa7b567","fileCount":9,"name":"negotiator","path":"negotiator","size":28710,"version":"1.0.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"501ecc61ad148476eb5316bad6418e95bb6ed9bfc794c23fcec15bc2c592ccf1","fileCount":4,"name":"object-assign","path":"object-assign","size":5493,"version":"4.1.1"},{"archiveModeSha256":"e3c2f2fe74f79d600564d5d6af9a6bd278aee46db5e0ec18493cdc9d895e0bbf","contentSha256":"7d76d46a138318bcabde842b6a8b994da11a2e3d2e8ecbc0f8780f50e17f2ca8","fileCount":34,"name":"object-inspect","path":"object-inspect","size":102920,"version":"1.13.4"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ffb31d328870b95d8218c54f26f73d6e122847c7289052f57bf1569b0027593b","fileCount":5,"name":"on-finished","path":"on-finished","size":13679,"version":"2.4.1"},{"archiveModeSha256":"71f44c60c38bc2c3e17382504bf0dae39045eeec535cf6f4e1283e0514e8c2f4","contentSha256":"dc238bfc47820f9fb5bb56f1f3aae901657074482f52f91545784f041efb0210","fileCount":4,"name":"once","path":"once","size":4046,"version":"1.4.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ca67e36d858cdb2f3a4eefd00d0bf7284143c1241b9ad06feec17799fc587638","fileCount":5,"name":"parseurl","path":"parseurl","size":10299,"version":"1.3.3"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a3945cbf1aaf19b6dba601c948b6522566517f9b9f4181c964d5a0d8ee34270e","fileCount":5,"name":"path-key","path":"path-key","size":4553,"version":"3.1.1"},{"archiveModeSha256":"1514e7595cbbb9d1902c24ce60454e544df780b8fc73b7967218c3491dd3cefb","contentSha256":"17d110a00db54cd903aba2283f1d027f5acfbf7ce0003590c3abeb6059b5d221","fileCount":6,"name":"path-to-regexp","path":"path-to-regexp","size":59680,"version":"8.4.2"},{"archiveModeSha256":"f0a8527de334749bd26e70302ee03517ec50ff590e93cb3ea9a45ce4124a3829","contentSha256":"d5a9fd4846acac4b5ce086c88eca29de645c535aeee06df4a99a69cf4317e397","fileCount":10,"name":"pkce-challenge","path":"pkce-challenge","size":18211,"version":"5.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d05e2db9e9d803ea440dd46461d51f482ed09978f2688eeda51a5711f1f41320","fileCount":5,"name":"proxy-addr","path":"proxy-addr","size":15399,"version":"2.0.7"},{"archiveModeSha256":"5ab250cd90dfced7c9429dd43d78846951b7b961947594e9f5175faee4c88a56","contentSha256":"129c6546580195d974c7e5f9a44e6d822f0f6ea5e89477fc3fe2619916735ed3","fileCount":20,"name":"qs","path":"qs","size":322295,"version":"6.15.2"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d12cb812790fa7b85393df185775b6c9ad8d05fd313f2b31cfb817d6296b1888","fileCount":5,"name":"range-parser","path":"range-parser","size":8457,"version":"1.2.1"},{"archiveModeSha256":"42cc208595e23f148383e3b4292ce5922102522b8bfd5f77417b06d1306d7aa1","contentSha256":"8f8dedbaf8d48e5de26e87910168aa505b7403e4c7739edc953cf5b25240839c","fileCount":5,"name":"raw-body","path":"raw-body","size":18495,"version":"3.0.2"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"4d281fcce32339c1f532a6e128db448b5d4c02ff371243a5c5696b40c86d3680","fileCount":4,"name":"require-from-string","path":"require-from-string","size":3422,"version":"2.0.2"},{"archiveModeSha256":"e09f32c46d1a5885aae361e487ce603fd60a9fbff1d5dcaab0f6236f971a9837","contentSha256":"99b97f87c5ffc0951428a30eea4a95cbe83f9a70122dbcc8a4b2e7634f8e8dcd","fileCount":7,"name":"router","path":"router","size":46851,"version":"2.2.0"},{"archiveModeSha256":"a462b8a4b54a0e6b8dcfc3d87612450f34478e7dc5845d4b16f239a578821a2c","contentSha256":"e075173c0c6569f0b806c5802462e19b25ed330b11040151ca5e0d8ea9e276d1","fileCount":7,"name":"safer-buffer","path":"safer-buffer","size":42299,"version":"2.1.2"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"3a396c8597fbbc013b13e4cf5dd7f05f798ee9809ad21d3966616d4f50964f02","fileCount":4,"name":"send","path":"send","size":32200,"version":"1.2.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1724d9fc1a50078597419e4a1014f0d179522a46ed0e2a3a94b71f2f78575513","fileCount":4,"name":"serve-static","path":"serve-static","size":14335,"version":"2.2.1"},{"archiveModeSha256":"e1fd687bea7843794dae9ff84fa5a22ca00f6bea6583da85ed3e27d3d8444230","contentSha256":"db27148aba2fa1340dc867179dbccee745a7311c870a68bee4cea1e3fe2f3f8a","fileCount":6,"name":"setprototypeof","path":"setprototypeof","size":4025,"version":"1.2.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"6754ac701a5f6a41aface06678b945984b2c4088d9c81a9beae10d2f236ebbad","fileCount":4,"name":"shebang-command","path":"shebang-command","size":2556,"version":"2.0.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a793c341e7bf38ef241be3075c0420da5b2c2df9c71b3aa64f16e8d80751acac","fileCount":5,"name":"shebang-regex","path":"shebang-regex","size":2828,"version":"3.0.0"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"28e3e44b391a232fea118591ef73556f7f3bd207d35a4fa6c2d8b04bf11be322","fileCount":12,"name":"side-channel","path":"side-channel","size":22864,"version":"1.1.1"},{"archiveModeSha256":"d7170194465bf2624edfb7844fea886827d0f714bb09d49567d5c7a1c3ce78c0","contentSha256":"6959587507edce3ca38987daa64c966a2f802e6ef85b8c9f96e36b51b7d63752","fileCount":13,"name":"side-channel-list","path":"side-channel-list","size":16973,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"c69ec67d49924576f5b78d598fe950d7a9464c1c61ad256cbebcda7641e1630a","fileCount":12,"name":"side-channel-map","path":"side-channel-map","size":13348,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"3f830eae8141c06d7395d4c9ae072ae767e98aace4720762ebded0ae32fca96c","fileCount":12,"name":"side-channel-weakmap","path":"side-channel-weakmap","size":14667,"version":"1.0.2"},{"archiveModeSha256":"c0228c165b333628d8971a1ebdeb334786829db2fa1c9cb6ba374a9214cd4d11","contentSha256":"0b9e6a3e2e50328afbb9254550c688707172bd481eb1084c02af1456aa803249","fileCount":6,"name":"statuses","path":"statuses","size":12505,"version":"2.0.2"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"0c7b3b8db791f787793c0968ec6f6b9dc48d14783c4c34ada0e0475eb3c011d4","fileCount":5,"name":"toidentifier","path":"toidentifier","size":4685,"version":"1.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"79ce0363e01b714db55735699052b2534d0f6ef84d785b137323647cf779657a","fileCount":5,"name":"type-is","path":"type-is","size":21269,"version":"2.1.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"type-is/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"99534b97972283845db4ef41d39156d6720030a2307f2f0649a7f1c8fabf68c6","fileCount":5,"name":"unpipe","path":"unpipe","size":4311,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"880e12feeb6220ce4cdb0bd7f19ddb9d693666a77059502e9d667e06b3e04ce8","fileCount":5,"name":"vary","path":"vary","size":8747,"version":"1.1.2"},{"archiveModeSha256":"b00589de6b03c9caf6d472f986e33ad1ce797610931befbc4c939035855465d3","contentSha256":"d7cd37f3d931efd84593550e395d66a19d915e50a92016b0769dc524c51c71cb","fileCount":6,"name":"which","path":"which","size":9975,"version":"2.0.2"},{"archiveModeSha256":"4b84777e08ccbe4ad45474b4248dc37be2c73b6467d369958cc06ca38507a13f","contentSha256":"4f5c30f228b020aca343e88dc0b15af855173a168663e687afd72c58cf586b99","fileCount":4,"name":"wrappy","path":"wrappy","size":2961,"version":"1.0.2"},{"archiveModeSha256":"b98a45815677c477e01457344c56184f50841e90f1f78c98f47d4f631140c4f3","contentSha256":"eaed4b517e605755ecde1e008133c5418c238657a3236735a1053f00b4a7e58b","fileCount":718,"name":"zod","path":"zod","size":4558122,"version":"4.4.3"},{"archiveModeSha256":"224107ce4653d3b406ca40837a05712425b14ff999773673d516eb31d8e9a34d","contentSha256":"d45857bb67c09b95d65c081b1afc095fcfd8d3e8d8bc3b57f645a1f369b1ea04","fileCount":130,"name":"zod-to-json-schema","path":"zod-to-json-schema","size":219264,"version":"3.25.2"}],"portability":"platform-independent-no-native-or-install-variance","rootDependencies":[{"name":"@modelcontextprotocol/sdk","requested":"^1.30.0"},{"name":"marked","requested":"17.0.0"}],"schemaVersion":2}
1
+ {"algorithm":"sha256","assurance":"packaged-build-byte-observation","inventoryDigest":"6c37265cb07d5d69c5cda2dccb5ccbd2d6c035ef1e7f8ee6591367fdd493938c","package":{"manifestSha256":"24c9c86ab471167b3ea71bc5bdf69ceaed6382215dc289f3e2f00ecf5d2cb1e9","name":"@ashlr/hub","version":"3.3.0"},"packages":[{"archiveModeSha256":"e593537ea027a53342e9c95325f3823e507298732511cd61c314537000cb008c","contentSha256":"39703185cd013059db3eb5ac351625fa9dfd1eef0509fb47ff04fcc0a4cec6f5","fileCount":25,"name":"@hono/node-server","path":"@hono/node-server","size":120353,"version":"2.0.12"},{"archiveModeSha256":"212ef6ab48b10cfc61481fdb4d517d5aefa8a9e78f321c9483e13f8f0854aade","contentSha256":"54ecfe6624026e35139d2f943de8626043145c82c1d6580882a4adf4ee6b3c90","fileCount":693,"name":"@modelcontextprotocol/sdk","path":"@modelcontextprotocol/sdk","size":4322438,"version":"1.30.0"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"@modelcontextprotocol/sdk/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"@modelcontextprotocol/sdk/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"93bc4d919570486c9dac1184c65d89802a5d7e5e51d2ad2c9c79e9229b0d2bfd","fileCount":5,"name":"accepts","path":"accepts","size":16917,"version":"2.0.0"},{"archiveModeSha256":"338fe03444b2468ffb84fa0a62e4ad26985fbe9063f5b6500fc00baab52687a7","contentSha256":"a570e5cd740441f9e2ad9e20aab09d6ff5f01c54b5ca63889fb9cc65aa22ed38","fileCount":15,"name":"ajv-formats","path":"ajv-formats","size":56763,"version":"3.0.1"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"ajv-formats/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"ajv-formats/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"99258e0ccfd899459bc7f95949a5bec9039234f80f0a96cfbf7de4cfd9deaad9","contentSha256":"e6f71097d1bf22309cc2010ba116320dbe0b37b53af324631969ccef03817448","fileCount":10,"name":"body-parser","path":"body-parser","size":42536,"version":"2.3.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"body-parser/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"048d4140095d01f76e5d5a576d5a10de4e1cebcc64cab6ea49f14afc54939be6","fileCount":5,"name":"bytes","path":"bytes","size":12270,"version":"3.1.2"},{"archiveModeSha256":"df415aae8a21af7234f013c4d934c5074b07e617f6189084a43c78a49bafcb78","contentSha256":"870b383c07315fef9619399c2450297d079b1398583984a5ccb9cd2b1005cb59","fileCount":21,"name":"call-bind-apply-helpers","path":"call-bind-apply-helpers","size":15952,"version":"1.0.2"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"01be39d7156b173ffe2869dcd589e2080dcf2f1bcbcfa2f20409582ccb21cfaf","fileCount":11,"name":"call-bound","path":"call-bound","size":17106,"version":"1.0.4"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"4f967d79760cd06bcfdbf918d30b3a77752d03e6e76582aeac4b3a81dcd6a6a9","fileCount":4,"name":"content-disposition","path":"content-disposition","size":19928,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ad93015c6082464b41e63397fc9ee739d6bb7cb93755c9fbef749cff39b8675","fileCount":5,"name":"content-type","path":"content-type","size":10471,"version":"1.0.5"},{"archiveModeSha256":"2048aee59eb971a928e2fcac3881a222b2c9140ec980dfd14756de04a3885902","contentSha256":"ca8dd7ddd6a3970df6e3efff74247cd6f985dfdcc596ac0f58cd50c5b88555e8","fileCount":5,"name":"cookie","path":"cookie","size":23382,"version":"0.7.2"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"360601ff3d56cfdb8de7d836940caa5d74a437474129017697aab4696fc84e03","fileCount":5,"name":"cookie-signature","path":"cookie-signature","size":4993,"version":"1.2.2"},{"archiveModeSha256":"3bf3b01496f9ce98ec5c58c595c317975f470de6da6599d5d405c60c294f12c6","contentSha256":"9a628bd867c40f8bd4753d84f5f364a5ce92fcdd73fb164977d566275580786e","fileCount":4,"name":"cors","path":"cors","size":19956,"version":"2.8.6"},{"archiveModeSha256":"0c4b2570bd695c455ca6e9f67aaabdf88b1d486e39e9e52f4b8cc0c595e08f33","contentSha256":"9666a5f3074e7ff71dab89ccc0fecd79699b6c68e85087cc3416e9b220e9369e","fileCount":9,"name":"cross-spawn","path":"cross-spawn","size":16094,"version":"7.0.6"},{"archiveModeSha256":"fd7ec5fdf7ea41f349416d375406faf41b35702e2e23f02d2c015acb72adc8f2","contentSha256":"e9f41fdd4e55dc936295270bdb7c994d9ad85dd2bd6f2fb3d46767a16ee1a03e","fileCount":7,"name":"debug","path":"debug","size":42793,"version":"4.4.3"},{"archiveModeSha256":"bb32a6d3c5b9088943cd629938024c4c8d207814db8194313063fe3844cbbc8c","contentSha256":"cfc74892a99b215bdc61d9817f90b235318267ddbf8a29ef52b2906d8b26e980","fileCount":6,"name":"depd","path":"depd","size":27117,"version":"2.0.0"},{"archiveModeSha256":"305af32d2ba2d5fe89c9acaa17537f1a06e7e131bf81112cb11d623fdbb9c6f1","contentSha256":"5c4728d83554a1fc2fd51c01cf2d30bb89adbe1c6469a52201eed72b68af0f91","fileCount":15,"name":"dunder-proto","path":"dunder-proto","size":13003,"version":"1.0.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"bae9f4988b2d279e16b4bb3e5527647300137f2978aef97f40acd1b453a8d5a7","fileCount":4,"name":"ee-first","path":"ee-first","size":6259,"version":"1.1.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1c50e3d3cd38c66e1e462f0004781f789e59959aec798aef31f9a2f049d216e5","fileCount":4,"name":"encodeurl","path":"encodeurl","size":6980,"version":"2.0.0"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"a2dd73d6e2d58eda48469112f2eacae1fec583f84f72643b3593c6092bd3e877","fileCount":11,"name":"es-define-property","path":"es-define-property","size":10217,"version":"1.0.1"},{"archiveModeSha256":"23a440c46333c31a4ae0a1ffdc2ec6db818da1c36a039abc189b118e1bcdc625","contentSha256":"fd08a46013bf09d90a2240c6a8a97f12ff7106507456c73e7db53f608b41214e","fileCount":22,"name":"es-errors","path":"es-errors","size":12324,"version":"1.3.0"},{"archiveModeSha256":"b6b95f08bcc5f254eddbff61393e6efa09637b9fe2996a163d3c2c71c28bb681","contentSha256":"893e26d760872fd0c233391eff242a717320d6b2d6ab004ad827d1dd6c517ea5","fileCount":16,"name":"es-object-atoms","path":"es-object-atoms","size":11967,"version":"1.1.2"},{"archiveModeSha256":"764d64b5de2e2faa2387d92a5ed5dcbc1822797787a67ee46e827d4d353a2cb5","contentSha256":"27b564cee7701979ecc9ba3ad9b57c4eb185ddfe14f6fbef7961b9d95fc51789","fileCount":4,"name":"escape-html","path":"escape-html","size":3660,"version":"1.0.3"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"53b09a946276069cc9e202851404809b0b27f9616f6398ba1ba053cf27a9b61f","fileCount":5,"name":"etag","path":"etag","size":10809,"version":"1.8.1"},{"archiveModeSha256":"15cc21147f13500c581198be8a82187d7d2cd38a2c23b9459c89f22990a5b971","contentSha256":"fda71ef638beebe2ebae12fe705f63cb2276d6b35564064714ad352727e6f0a9","fileCount":13,"name":"eventsource","path":"eventsource","size":147304,"version":"3.0.7"},{"archiveModeSha256":"57e54f8cb946a2072d2c928cce29ff71a0383916edbb50e97042f859f043677f","contentSha256":"57456c2bbbfd8965c4466cf8a120581c6de9c67c1e04bf815189370f5f76ec3f","fileCount":21,"name":"eventsource-parser","path":"eventsource-parser","size":123218,"version":"3.1.0"},{"archiveModeSha256":"e882878862f5bfd4ff0cb5120df0b9e29758544fabad522563cc91a5102513a0","contentSha256":"c4cccb2f6077128bc31e51f7f772663988796261352298821eea234de1f42281","fileCount":10,"name":"express","path":"express","size":75429,"version":"5.2.1"},{"archiveModeSha256":"0f783761dfb7c14c80535b5a3d2f282398f8621985ed04be794ef3144740784e","contentSha256":"332479fcc3eaa25713fa7df0d4e3a953b7a008fde6413d4278aa667d7e4473e1","fileCount":9,"name":"express-rate-limit","path":"express-rate-limit","size":146332,"version":"8.5.2"},{"archiveModeSha256":"78e09d25ac30efc25d5604344654f3158820dbd9d45a1900b9f44e0e500839cf","contentSha256":"5ca43c0737026213eee30eb17e40859c918af2ae30f16d3882fdfbd8bcb03afd","fileCount":11,"name":"fast-deep-equal","path":"fast-deep-equal","size":12966,"version":"3.1.3"},{"archiveModeSha256":"487bd966467016fcc4fda3f2a6bf29700b652065acf1aba94d6f1f95844edb06","contentSha256":"a77ae10575efbbb07363fb9c7167e877fbd2794ba422fcccd3ffc0884d2d759d","fileCount":34,"name":"fast-uri","path":"fast-uri","size":167683,"version":"3.1.5"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"a184198d4d20e0177fd4f9e5d82bc40d34143c3a8279e7200511905b08e91d1a","fileCount":5,"name":"finalhandler","path":"finalhandler","size":18111,"version":"2.1.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"5a3882ea4acfd16ac4851f43587d6ab87fd08de45665981db6e8ee5944486118","fileCount":5,"name":"forwarded","path":"forwarded","size":5876,"version":"0.2.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"c3d3cc5e56026a726c20ed1d516509608bddb667d5cc999f01cd3971a92e4406","fileCount":5,"name":"fresh","path":"fresh","size":10289,"version":"2.0.0"},{"archiveModeSha256":"6f10ab8235c8a46f648cd17681016bf68595208a48d01f1351bd0b19bcb4301c","contentSha256":"8afcdc5f094efcac14509859ce70157ec7daff89642bc5d604b235f6917dd5b0","fileCount":12,"name":"function-bind","path":"function-bind","size":31427,"version":"1.1.2"},{"archiveModeSha256":"2d4c82c10091157e0f33c6a4a049ef4b2609c8f2a6d70882fa538122b54c1ce3","contentSha256":"1b862b6fe457cd272bb8bce8407ac7f972c857ac317189afe7a29ba378f0f6ac","fileCount":9,"name":"get-intrinsic","path":"get-intrinsic","size":46542,"version":"1.3.0"},{"archiveModeSha256":"995b5a61ce2e3cb963405de061067b699b48e90eb6ce2ac0d88e88bd9c38549a","contentSha256":"3dc759afa7e26cd60cc642b39bffcbd22dd574469e4ac2174cc9b57b97599f82","fileCount":15,"name":"get-proto","path":"get-proto","size":10840,"version":"1.0.1"},{"archiveModeSha256":"169ecf4d0c444e719e5bcd4e912e3ceb193138b5ab7eef8f727798759a4331d3","contentSha256":"6f2eeeb1483b34581df01b15d1b80b2b45be2c7ce06496c72a90351194858738","fileCount":12,"name":"gopd","path":"gopd","size":9869,"version":"1.2.0"},{"archiveModeSha256":"2f2262ae382d511cef7d373ff151a1a662ae623e50cb17d3a920d9e87593011d","contentSha256":"617f42cde01c4ca5a0bdab28f544a70e5f52c8707daad05016cb789193ba0554","fileCount":16,"name":"has-symbols","path":"has-symbols","size":23409,"version":"1.1.0"},{"archiveModeSha256":"35386dc8ee83de6dc1f61324623e1d9907205a1bd2fa66b02bc7c0429bdf85cc","contentSha256":"e6b281a2b3f6100d9b44f0916c797da53c254e8a38cb357134e80eddf5181a48","fileCount":10,"name":"hasown","path":"hasown","size":10332,"version":"2.0.4"},{"archiveModeSha256":"99e1e3bd61da454d1b8c0246de7225a229c18ca896bf4e6eeacbf7563aa2a542","contentSha256":"bff461e4ab56a1a97667dd1f2cc3ceb1b30dd1a3895d2062fc6dbd427f920329","fileCount":562,"name":"hono","path":"hono","size":1357534,"version":"4.12.34"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"b34d2d8fdbf41450767591b746eb2adaa4a22b59aa55c94ef0ce65ff1ba6fe6d","fileCount":5,"name":"http-errors","path":"http-errors","size":19064,"version":"2.0.1"},{"archiveModeSha256":"086f9d977a09c672ced4c2d703944875d8db454fe8fdd7fe8882f0888ed7c20f","contentSha256":"762b205b641d142557d0b3fb5d376d571e7823473661004f6cb319b7c0603976","fileCount":27,"name":"iconv-lite","path":"iconv-lite","size":343635,"version":"0.7.2"},{"archiveModeSha256":"7b3e1bd04c00f38ad3e4f4fb20e65a4eeb707527b4fd7c84ea7764cef9cebdff","contentSha256":"7c50865fdccbf6c6b44600a997d13c0c5c215ded131f0a4c98acd8d15694e632","fileCount":5,"name":"inherits","path":"inherits","size":3958,"version":"2.0.4"},{"archiveModeSha256":"3ef444401f83c959cfda73e7e9fd50d0796f6f141f36f458a3f132b362e6c375","contentSha256":"0e8533c4762708d8f61d9a21b3fa5f10d7f4907a36609490e71edaadb1186c1e","fileCount":30,"name":"ip-address","path":"ip-address","size":299533,"version":"10.4.0"},{"archiveModeSha256":"a710aacb72996fbfa6d514e678b50cfe4d17619a71648b516a3a09a96479c2c8","contentSha256":"272599141de35d28a1e92b1aec64154c866998a44310163040e6499b6ec1d9c3","fileCount":6,"name":"ipaddr.js","path":"ipaddr.js","size":42145,"version":"1.9.1"},{"archiveModeSha256":"969b492deb1f22a61f85cf9f98cc0f7c1984c3c0fd162d3ba5a600f0f6181ed8","contentSha256":"31aa30a6fbd5f134714c0ae7bc1e4c7a00b1c5bfabd2931e92618a4121bd6fa8","fileCount":6,"name":"is-promise","path":"is-promise","size":2958,"version":"4.0.0"},{"archiveModeSha256":"8f22f331a576ff070646bb75a80918007ff2b93be80520594930dd04865a6e44","contentSha256":"a560d4935c162172bd5feede21bc62536cec616c166de516cd5c367a7ca23f98","fileCount":8,"name":"isexe","path":"isexe","size":10956,"version":"2.0.0"},{"archiveModeSha256":"ec3d3c0b513b0905f208bc029bc355c1cf7038f95e2e7b1e2d19ddac26e374ea","contentSha256":"e3633b6af5ec16f6448989dd91dad2798a190e52e7a3d16d90ceca23d52c5b35","fileCount":88,"name":"jose","path":"jose","size":257736,"version":"6.2.3"},{"archiveModeSha256":"bdba5b2b7f19b131522a9af3d6cd30db94ee97690d535e5c3c84d1bce068c2a9","contentSha256":"efcb8d289875749e930bf8f745c132edf832c0f9a25768fcd97e129851288174","fileCount":9,"name":"json-schema-typed","path":"json-schema-typed","size":197188,"version":"8.0.2"},{"archiveModeSha256":"e73b085e3825c81b36b8c4f559c8091c8a3b87751f8f1c8b8bf886fab0b2d422","contentSha256":"5cc193be9810cb46a64717935be48e9077d849553f18fe0ea118d6da4aff3663","fileCount":12,"name":"marked","path":"marked","size":429802,"version":"17.0.0"},{"archiveModeSha256":"74a40513091b687e690f49f4110e314302d0b8b3c9f196cf587c9d702c4cd7e9","contentSha256":"a4884adbf4399adaff50d30983c4afa402a1d15b56a371824ea5c7c7cab385fa","fileCount":38,"name":"math-intrinsics","path":"math-intrinsics","size":17323,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ec2d844bc07543d41a6ab6d78008dd2998877609cc16ba532204995fb4339c5","fileCount":5,"name":"media-typer","path":"media-typer","size":9256,"version":"1.1.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"983f0d7028b74df8828007fabcab26e7f36e42fc7db74e321a110f6f40aa3fa7","fileCount":5,"name":"merge-descriptors","path":"merge-descriptors","size":4373,"version":"2.0.0"},{"archiveModeSha256":"2cb256014f7e1eda905b4809694ab3b06e8c1f1c5b78cb4de5da514e4e57659a","contentSha256":"c979d86230ca6688633d5ef7c89397f312c6d556a1964cb8dfe33596b8b548b9","fileCount":6,"name":"mime-db","path":"mime-db","size":225566,"version":"1.54.0"},{"archiveModeSha256":"20c4497e7b68189571962123cabb12dc852bb2346c45deed91c081c899659249","contentSha256":"28ee29177b736969ce0a555c11ae5275280510007a2670dcdd7ea6b1868f46c3","fileCount":6,"name":"mime-types","path":"mime-types","size":22871,"version":"3.0.2"},{"archiveModeSha256":"20014b85b0431588ccd9c0e6c6afeffc10e21d0ee7de53e2ba2296fd52bb1a7c","contentSha256":"667f3d7d170cb303a69e67dc3a69a08255a3e5cfb8703f4904417b0362bc0d28","fileCount":4,"name":"ms","path":"ms","size":6721,"version":"2.1.3"},{"archiveModeSha256":"5602cdc50f925bdc25002fe3756f55c3e1117229d22c2b2c600e8ffca90295f6","contentSha256":"84851509ca06e7b5b721720762592fa23f696ba1d72172dbc1e692c1dfa7b567","fileCount":9,"name":"negotiator","path":"negotiator","size":28710,"version":"1.0.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"501ecc61ad148476eb5316bad6418e95bb6ed9bfc794c23fcec15bc2c592ccf1","fileCount":4,"name":"object-assign","path":"object-assign","size":5493,"version":"4.1.1"},{"archiveModeSha256":"e3c2f2fe74f79d600564d5d6af9a6bd278aee46db5e0ec18493cdc9d895e0bbf","contentSha256":"7d76d46a138318bcabde842b6a8b994da11a2e3d2e8ecbc0f8780f50e17f2ca8","fileCount":34,"name":"object-inspect","path":"object-inspect","size":102920,"version":"1.13.4"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ffb31d328870b95d8218c54f26f73d6e122847c7289052f57bf1569b0027593b","fileCount":5,"name":"on-finished","path":"on-finished","size":13679,"version":"2.4.1"},{"archiveModeSha256":"71f44c60c38bc2c3e17382504bf0dae39045eeec535cf6f4e1283e0514e8c2f4","contentSha256":"dc238bfc47820f9fb5bb56f1f3aae901657074482f52f91545784f041efb0210","fileCount":4,"name":"once","path":"once","size":4046,"version":"1.4.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ca67e36d858cdb2f3a4eefd00d0bf7284143c1241b9ad06feec17799fc587638","fileCount":5,"name":"parseurl","path":"parseurl","size":10299,"version":"1.3.3"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a3945cbf1aaf19b6dba601c948b6522566517f9b9f4181c964d5a0d8ee34270e","fileCount":5,"name":"path-key","path":"path-key","size":4553,"version":"3.1.1"},{"archiveModeSha256":"1514e7595cbbb9d1902c24ce60454e544df780b8fc73b7967218c3491dd3cefb","contentSha256":"17d110a00db54cd903aba2283f1d027f5acfbf7ce0003590c3abeb6059b5d221","fileCount":6,"name":"path-to-regexp","path":"path-to-regexp","size":59680,"version":"8.4.2"},{"archiveModeSha256":"f0a8527de334749bd26e70302ee03517ec50ff590e93cb3ea9a45ce4124a3829","contentSha256":"d5a9fd4846acac4b5ce086c88eca29de645c535aeee06df4a99a69cf4317e397","fileCount":10,"name":"pkce-challenge","path":"pkce-challenge","size":18211,"version":"5.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d05e2db9e9d803ea440dd46461d51f482ed09978f2688eeda51a5711f1f41320","fileCount":5,"name":"proxy-addr","path":"proxy-addr","size":15399,"version":"2.0.7"},{"archiveModeSha256":"5ab250cd90dfced7c9429dd43d78846951b7b961947594e9f5175faee4c88a56","contentSha256":"129c6546580195d974c7e5f9a44e6d822f0f6ea5e89477fc3fe2619916735ed3","fileCount":20,"name":"qs","path":"qs","size":322295,"version":"6.15.2"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d12cb812790fa7b85393df185775b6c9ad8d05fd313f2b31cfb817d6296b1888","fileCount":5,"name":"range-parser","path":"range-parser","size":8457,"version":"1.2.1"},{"archiveModeSha256":"42cc208595e23f148383e3b4292ce5922102522b8bfd5f77417b06d1306d7aa1","contentSha256":"8f8dedbaf8d48e5de26e87910168aa505b7403e4c7739edc953cf5b25240839c","fileCount":5,"name":"raw-body","path":"raw-body","size":18495,"version":"3.0.2"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"4d281fcce32339c1f532a6e128db448b5d4c02ff371243a5c5696b40c86d3680","fileCount":4,"name":"require-from-string","path":"require-from-string","size":3422,"version":"2.0.2"},{"archiveModeSha256":"e09f32c46d1a5885aae361e487ce603fd60a9fbff1d5dcaab0f6236f971a9837","contentSha256":"99b97f87c5ffc0951428a30eea4a95cbe83f9a70122dbcc8a4b2e7634f8e8dcd","fileCount":7,"name":"router","path":"router","size":46851,"version":"2.2.0"},{"archiveModeSha256":"a462b8a4b54a0e6b8dcfc3d87612450f34478e7dc5845d4b16f239a578821a2c","contentSha256":"e075173c0c6569f0b806c5802462e19b25ed330b11040151ca5e0d8ea9e276d1","fileCount":7,"name":"safer-buffer","path":"safer-buffer","size":42299,"version":"2.1.2"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"3a396c8597fbbc013b13e4cf5dd7f05f798ee9809ad21d3966616d4f50964f02","fileCount":4,"name":"send","path":"send","size":32200,"version":"1.2.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1724d9fc1a50078597419e4a1014f0d179522a46ed0e2a3a94b71f2f78575513","fileCount":4,"name":"serve-static","path":"serve-static","size":14335,"version":"2.2.1"},{"archiveModeSha256":"e1fd687bea7843794dae9ff84fa5a22ca00f6bea6583da85ed3e27d3d8444230","contentSha256":"db27148aba2fa1340dc867179dbccee745a7311c870a68bee4cea1e3fe2f3f8a","fileCount":6,"name":"setprototypeof","path":"setprototypeof","size":4025,"version":"1.2.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"6754ac701a5f6a41aface06678b945984b2c4088d9c81a9beae10d2f236ebbad","fileCount":4,"name":"shebang-command","path":"shebang-command","size":2556,"version":"2.0.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a793c341e7bf38ef241be3075c0420da5b2c2df9c71b3aa64f16e8d80751acac","fileCount":5,"name":"shebang-regex","path":"shebang-regex","size":2828,"version":"3.0.0"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"28e3e44b391a232fea118591ef73556f7f3bd207d35a4fa6c2d8b04bf11be322","fileCount":12,"name":"side-channel","path":"side-channel","size":22864,"version":"1.1.1"},{"archiveModeSha256":"d7170194465bf2624edfb7844fea886827d0f714bb09d49567d5c7a1c3ce78c0","contentSha256":"6959587507edce3ca38987daa64c966a2f802e6ef85b8c9f96e36b51b7d63752","fileCount":13,"name":"side-channel-list","path":"side-channel-list","size":16973,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"c69ec67d49924576f5b78d598fe950d7a9464c1c61ad256cbebcda7641e1630a","fileCount":12,"name":"side-channel-map","path":"side-channel-map","size":13348,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"3f830eae8141c06d7395d4c9ae072ae767e98aace4720762ebded0ae32fca96c","fileCount":12,"name":"side-channel-weakmap","path":"side-channel-weakmap","size":14667,"version":"1.0.2"},{"archiveModeSha256":"c0228c165b333628d8971a1ebdeb334786829db2fa1c9cb6ba374a9214cd4d11","contentSha256":"0b9e6a3e2e50328afbb9254550c688707172bd481eb1084c02af1456aa803249","fileCount":6,"name":"statuses","path":"statuses","size":12505,"version":"2.0.2"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"0c7b3b8db791f787793c0968ec6f6b9dc48d14783c4c34ada0e0475eb3c011d4","fileCount":5,"name":"toidentifier","path":"toidentifier","size":4685,"version":"1.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"79ce0363e01b714db55735699052b2534d0f6ef84d785b137323647cf779657a","fileCount":5,"name":"type-is","path":"type-is","size":21269,"version":"2.1.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"type-is/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"99534b97972283845db4ef41d39156d6720030a2307f2f0649a7f1c8fabf68c6","fileCount":5,"name":"unpipe","path":"unpipe","size":4311,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"880e12feeb6220ce4cdb0bd7f19ddb9d693666a77059502e9d667e06b3e04ce8","fileCount":5,"name":"vary","path":"vary","size":8747,"version":"1.1.2"},{"archiveModeSha256":"8fc892f4d8b9a44a1bfc252b556ebb01d424366ec71fb56f8b0fc2b81bbb5897","contentSha256":"dbe8a52a4c488ed54e7b60f93f89947ff828f9786a804b40a049152c35a47132","fileCount":5,"name":"which","path":"which","size":7308,"version":"2.0.2"},{"archiveModeSha256":"4b84777e08ccbe4ad45474b4248dc37be2c73b6467d369958cc06ca38507a13f","contentSha256":"4f5c30f228b020aca343e88dc0b15af855173a168663e687afd72c58cf586b99","fileCount":4,"name":"wrappy","path":"wrappy","size":2961,"version":"1.0.2"},{"archiveModeSha256":"b98a45815677c477e01457344c56184f50841e90f1f78c98f47d4f631140c4f3","contentSha256":"eaed4b517e605755ecde1e008133c5418c238657a3236735a1053f00b4a7e58b","fileCount":718,"name":"zod","path":"zod","size":4558122,"version":"4.4.3"},{"archiveModeSha256":"224107ce4653d3b406ca40837a05712425b14ff999773673d516eb31d8e9a34d","contentSha256":"d45857bb67c09b95d65c081b1afc095fcfd8d3e8d8bc3b57f645a1f369b1ea04","fileCount":130,"name":"zod-to-json-schema","path":"zod-to-json-schema","size":219264,"version":"3.25.2"}],"portability":"platform-independent-no-native-or-install-variance","rootDependencies":[{"name":"@modelcontextprotocol/sdk","requested":"^1.30.0"},{"name":"marked","requested":"17.0.0"}],"schemaVersion":2}
@@ -1,10 +1,23 @@
1
- # Runtime Activation Authority V1
1
+ # Runtime Activation Authority V1 and dormant stopped consumer
2
2
 
3
- Ashlr exposes a signed, read-only resident activation admission contract. The
4
- preflight remains available on every platform. The explicit activation command
5
- performs additional macOS-only validation, but resident mutation is deliberately
6
- withheld in this release. Linux and Windows refuse before filesystem or service
7
- observation.
3
+ > **Not to be confused with `ashlr activation` (`src/cli/activation.ts`,
4
+ > M470).** This document covers `ashlr daemon activation-preflight` /
5
+ > `ashlr daemon activate` — verifying a *release build* is safe to install.
6
+ > It remains preflight-only. The similarly-named `ashlr activation` command
7
+ > is a different system entirely: operator-granted standing authority
8
+ > (resident/install/automerge/deploy/repair/etc.) that gates what the daemon
9
+ > is *allowed* to do once it's running. See
10
+ > [`docs/RUNTIME-FLEET-ACTIVATION.md`](RUNTIME-FLEET-ACTIVATION.md) for that
11
+ > system and `docs/MILESTONE-INDEX.md` §2 for why M470 now names both an
12
+ > unrelated shipped feature and that command.
13
+
14
+ Ashlr exposes a signed, read-only resident activation admission contract and a
15
+ separate dormant macOS stopped-release consumer. The preflight remains
16
+ available on every platform. Linux and Windows refuse before filesystem or
17
+ service observation. The stopped consumer is source-complete but its compiled
18
+ production trust-root array is intentionally empty, so production execution
19
+ fails closed unless a separately reviewed source change provisions an operator
20
+ public key.
8
21
 
9
22
  ## Operator trust root
10
23
 
@@ -97,16 +110,87 @@ configuration bindings, and parses both already-captured plist byte strings
97
110
  through `plutil` stdin against a closed execution schema with fixed
98
111
  `PATH=/usr/bin:/bin:/usr/sbin:/sbin`. Raw launch-receipt digests are returned as
99
112
  diagnostic evidence but excluded from the stable admission digest because their
100
- completion timestamps change between observations. The command then returns
101
- the stable refusal `runtime-activation-consumer-unavailable`.
113
+ completion timestamps change between observations. The command then passes a
114
+ plan only to the stopped consumer.
115
+
116
+ The consumer accepts only an independently observed immutable candidate whose
117
+ signed package version and tag are exactly `3.2.7` and `v3.2.7`. It requires a
118
+ distinct canonical Ed25519 permit at
119
+ `~/.ashlr/control/activation/consumer-permits/<plan-id>.json`. The permit lasts
120
+ at most 120 seconds and binds the exact admission and plan digests, request and
121
+ trust-root identities, candidate and rollback revisions, prior `current` raw
122
+ target, prior plist digest, `loaded=false`, and the exact prior disabled bit.
123
+ Runtime flags, environment variables, or plan bytes cannot add a trust root.
124
+
125
+ Before any transaction record or release mutation, the consumer requires:
126
+
127
+ - exact-private operator control custody and an already-existing read-only
128
+ provenance key for journal authentication;
129
+ - a healthy, explicitly engaged KILL switch that blocks provider effects;
130
+ - complete guard sources with no non-maintenance block;
131
+ - strict daemon state `running=false,pid=null`, quiescent activity, and zero
132
+ daemon roots or PPID descendants from a bounded process observation;
133
+ - `ASHLR_HOME`, when present, exactly equal to the operating-system account's
134
+ canonical `<home>/.ashlr` root, so activity, KILL, guard, and daemon-state
135
+ observations cannot be redirected to another tree;
136
+ - the outward-mutation fence followed by the daemon service-lifecycle fence;
137
+ - launchd observation proving the service is unloaded and the disabled bit
138
+ exactly matches the permit; and
139
+ - the exact signed prior plist and cooperative current-pointer identity.
140
+
141
+ The transaction durably claims the permit before effects and maintains an
142
+ HMAC-authenticated, canonical, fsynced phase journal. It replaces only the
143
+ already-stopped plist, verifies the disabled bit is unchanged, then performs a
144
+ host-local cooperative pointer CAS from the exact old symlink inode and raw
145
+ target to `releases/<candidate-revision>`. It revalidates maintenance, service,
146
+ pointer, and plist state before and after the immutable receipt. A failure
147
+ before settlement restores the exact prior pointer and plist while keeping the
148
+ service unloaded and its disabled bit unchanged. Uncertain recovery retains the
149
+ journal and reports reconciliation instead of claiming success.
150
+
151
+ On a later invocation, authenticated recovery runs before current plan
152
+ observation, permit lookup, permit expiry, or compiled-root availability. It
153
+ still requires both fences, healthy maintenance, exact unloaded/disabled state,
154
+ the HMAC-authenticated journal, and the matching immutable claim. An
155
+ unreceipted journal restores the prior pointer and plist; an exact immutable
156
+ receipt settles the candidate and removes the journal. Missing or degraded
157
+ claim/receipt evidence retains the journal and fails closed. Recovery therefore
158
+ does not mint new mutation authority and continues to work after the short-lived
159
+ permit expires or its permit directory is removed.
160
+
161
+ Every Buffer returned by the provenance-key loader is owned by the consumer and
162
+ zeroed in its own `finally` path. A recovery result carries only authenticated
163
+ journal-bound activation, candidate, admission, and plan identity; diagnostic
164
+ request, trust-root, and launch-receipt identities remain unavailable. If a
165
+ raced journal cannot be authenticated, every identity remains unavailable and
166
+ the journal is retained. Once an exact immutable receipt and exact candidate
167
+ state are observed, settlement is a committed `activated-stopped` success even
168
+ if a later response step fails; it is never reported as a contradictory blocked
169
+ activation.
170
+
171
+ This slice does **not** start, bootstrap, boot out, kickstart, enable, disable,
172
+ or acknowledge a service. It never auto-starts either candidate or rollback.
173
+ Starting a resident and accepting its runtime acknowledgement require a
174
+ separate release-bound operator permit and are outside this contract.
175
+
176
+ The pointer operation is deliberately named a **host-local cooperative pointer
177
+ CAS**. The lifecycle fences, exact inode/target comparison, atomic rename, and
178
+ post-rename verification coordinate Ashlr participants, but they are not a
179
+ kernel compare-exchange and do not exclude a hostile process running as the
180
+ same UID. A reviewed native helper with old-inode comparison remains a separate
181
+ prerequisite for stronger production authority. The local HMAC journal and
182
+ immutable records likewise do not substitute for trusted monotonic time or an
183
+ external monotonic replay/CAS service.
102
184
 
103
- It does not stage a release, invoke `launchctl`, change a plist or service,
104
- write an acknowledgement/replay/journal/dispatch record, or move `current`.
105
185
  There is no effect, platform, clock, or home injection seam in the production
106
- consumer. `daemon install`, setup, and the worker/dashboard/web service-repair
107
- paths retain their existing mutation denials. The separate legacy `update`
108
- workflow retains its own guards and is not an activation authority; `--check`
109
- remains read-only.
186
+ entrypoint or consumer graph. The shipped runtime adapter and its empty root
187
+ array are frozen; it exposes no registration, replacement, environment gate,
188
+ or test-only mutation API. Tests substitute that module only through Vitest's
189
+ test graph, outside `src` and outside the published package exports. The CLI
190
+ imports the consumer lazily only after rejecting an account-HOME mismatch.
191
+ `daemon install`, setup, and the worker/dashboard/web service-repair paths
192
+ retain their existing mutation denials. The legacy `update` workflow retains
193
+ its own guards and is not an activation authority; `--check` remains read-only.
110
194
 
111
195
  ## Dormant activation-bound handoff observation
112
196
 
@@ -125,25 +209,46 @@ effect, rollback, and activation permission remains false. Its host-local claim
125
209
  is not an external monotonic replay authority and its receipt is not resident
126
210
  runtime acknowledgement.
127
211
 
128
- Full resident production activation requires a future native launchd v2
212
+ Full resident production activation still requires a future native launchd v2
129
213
  transaction. At minimum, that consumer must add exact candidate staging and
130
214
  Git/tag/build/tarball-to-runtime provenance, signed prior
131
215
  version/revision/plist/package plus loaded-and-disabled state observed from the
132
216
  native manager, trusted monotonic time, external monotonic compare-and-swap replay consumption,
133
217
  a lifecycle lock and signed exact-keyed fsynced journal, live launchd
134
218
  PID/start/executable/runtime acknowledgement, separate release-bound dispatch
135
- authorization, pointer CAS, crash recovery at every phase, and settled-state
219
+ authorization, native pointer CAS, crash recovery at every resident-launch phase, and settled-state
136
220
  revalidation. It must restore the exact signed prior resident without auto-start.
137
221
  Until those properties have implementation and adversarial evidence, this
138
- command is not resident-production-ready.
222
+ stopped selection must not be described as resident activation or production
223
+ activation completion.
224
+
225
+ ## Dormant resident-start permit and exact-release ACK protocol
226
+
227
+ [`CONTRACT-M521`](./contracts/CONTRACT-M521.md) defines the separately scoped,
228
+ dynamic release-bound resident-start permit and canonical pre-dispatch ACK
229
+ frame. The ACK repeats the exact admitted release/configuration identity and
230
+ binds native-broker PID, process-start, audit-token, executable-vnode,
231
+ code-identity, launchd-generation, and challenge observations. It is evidence,
232
+ not authority: it cannot authenticate its own transport or source.
233
+
234
+ M521 has no CLI or effect consumer. Its compiled resident-start trust roots are
235
+ a frozen empty array, and its frozen production adapter always refuses with
236
+ `native-hostile-process-cas-unavailable`. It does not inspect HOME, call
237
+ launchd, spawn a process, start/install/enable a service, change `current`,
238
+ accept an ACK, unblock dispatch, or contact a provider. A protected native
239
+ broker with trusted monotonic replay/time, genuine old-inode conditional CAS,
240
+ authenticated peer-bound ACK transport, lifecycle recovery, exact stopped
241
+ rollback, and separate dispatch authorization remains the next reviewed
242
+ boundary.
139
243
 
140
244
  The machine-readable preflight exposes these absent properties under
141
245
  `nativeAuthority`. Only the separately scoped activation signing root can be
142
246
  true after trust-root validation; every mutation/runtime authority field remains
143
- false. Signed manifest fields
144
- such as `prior.serviceLoaded` and `prior.plistSha256` are declarations only;
145
- neither the preflight nor `activate` observes launchd or proves the current
146
- pointer, live PID, executable, acknowledgement, or rollback execution.
247
+ false. Signed manifest fields such as `prior.serviceLoaded` and
248
+ `prior.plistSha256` are declarations in preflight. The dormant consumer
249
+ separately observes only unloaded/disabled manager state and the cooperative
250
+ pointer/plist transaction; it does not prove a live PID, executable, resident
251
+ acknowledgement, or running rollback.
147
252
 
148
253
  ## Authority boundary
149
254
 
@@ -0,0 +1,102 @@
1
+ # CONTRACT-M521: Dormant resident-start permit and exact-release ACK protocol
2
+
3
+ Status: protocol-only, dormant, and authority-free. There is no CLI, service,
4
+ setup, activation-transaction, launchd, install, start, pointer, rollback, or
5
+ provider-effect consumer.
6
+
7
+ ## Purpose
8
+
9
+ M521 defines the next distinct authority boundary after M520's stopped-release
10
+ selector. It provides a domain-separated Ed25519 resident-start permit schema
11
+ and a canonical exact-release acknowledgement frame. These types make the
12
+ future native broker contract reviewable without pretending that JavaScript,
13
+ launchd output, a local file, or a PID can authenticate a resident process.
14
+
15
+ The protocol identifier is `runtime-activation-resident-start-v1`. Its permit
16
+ and acknowledgement domains are distinct from M502, M515, and M520.
17
+
18
+ ## Resident-start permit
19
+
20
+ The permit is valid for at most 120 seconds and uses a trust-root set dedicated
21
+ to resident start. The compiled production set is a frozen empty array; config,
22
+ environment, request, and acknowledgement bytes cannot add a key.
23
+
24
+ The closed scope requests one exact macOS resident start while requiring a
25
+ healthy engaged KILL switch and blocked provider effects. It forbids enabling,
26
+ installing, pointer mutation, and dispatch. The signed bindings include:
27
+
28
+ - exact activation, M502 admission/plan/request/trust-root, and M520 stopped
29
+ permit/receipt identities;
30
+ - dynamic signed candidate revision, Git tree, version, matching release tag,
31
+ runtime tree, manifest, launch receipt, service descriptor, invocation, and
32
+ configuration digests;
33
+ - the already-selected `releases/<revision>` current target and the exact prior
34
+ unloaded/disabled launchd state;
35
+ - host UID, exact launchd label and target;
36
+ - a random 256-bit broker challenge and a bounded acknowledgement deadline.
37
+
38
+ No package version is hard-coded into M521. The version and matching tag are
39
+ bound from the signed admitted release so the protocol does not silently grant
40
+ authority to a different successor.
41
+
42
+ ## Exact-release acknowledgement
43
+
44
+ The ACK is one canonical UTF-8 JSON object followed by exactly one LF and EOF.
45
+ It repeats the full permit binding, the domain-separated signed-permit payload
46
+ digest, permit/activation identity, and challenge.
47
+ It also carries native-broker observations for PID, non-reusable process-start
48
+ identity, audit token, executable vnode, code identity, and launchd job
49
+ generation. Its state is necessarily `pre-dispatch`, with the KILL switch
50
+ engaged, dispatch unauthorized, and provider effects blocked.
51
+
52
+ The protocol parser rejects accessors, exotic prototypes, missing/excess keys,
53
+ noncanonical JSON, duplicate-key encodings, BOM, CRLF, trailing or multiple
54
+ frames, malformed UTF-8, and oversized frames. Matching a frame proves only
55
+ that its bytes satisfy this closed evidence contract. It cannot prove that the
56
+ bytes came from the resident or a native broker.
57
+
58
+ Every authority bit remains false even when the signature and ACK bindings
59
+ verify. Canonical ACK evidence must never be accepted from an environment
60
+ variable, writable file, unauthenticated pipe/socket, PID-only observation, or
61
+ self-signed runtime claim.
62
+
63
+ ## Frozen production refusal
64
+
65
+ `runtime-activation-resident-start-runtime.ts` exposes a frozen adapter and a
66
+ frozen empty trust-root array. Its only result is:
67
+
68
+ ```text
69
+ native-hostile-process-cas-unavailable
70
+ ```
71
+
72
+ The result explicitly records that no acknowledgement was accepted, no service
73
+ was started or enabled, no pointer changed, and no provider effects were
74
+ unblocked. The adapter has no registration, replacement, environment gate,
75
+ test hook, launchd call, process spawn, filesystem access, or service import.
76
+
77
+ ## Next reviewed native boundary
78
+
79
+ A future implementation requires a separately installed, protected native
80
+ broker/XPC boundary outside same-UID JavaScript authority. Its versioned IPC
81
+ must provide, as one crash-recoverable transaction:
82
+
83
+ 1. trusted monotonic time and external monotonic one-use permit/replay CAS;
84
+ 2. fd-relative, no-follow access to protected release, pointer, plist, journal,
85
+ and acknowledgement objects;
86
+ 3. a genuine conditional old-device/inode/raw-target pointer compare-exchange,
87
+ not a check followed by `rename` and not an unconditional swap;
88
+ 4. exact native launchd prior-state and job-generation observation followed by
89
+ bounded bootstrap/kickstart;
90
+ 5. retained vnode, code-signature, executable, audit-token, PID, and
91
+ non-reusable process-start identity through exec;
92
+ 6. a broker-owned inherited ACK descriptor or authenticated socket with peer
93
+ credentials, challenge, single-frame deadline, and EOF enforcement;
94
+ 7. a signed, keyed, fsynced lifecycle journal with recovery at every phase;
95
+ 8. exact stopped rollback restoration without auto-start; and
96
+ 9. a separate release-bound dispatch permit after broker acceptance. The
97
+ daemon must remain pre-dispatch under the healthy KILL switch until then.
98
+
99
+ macOS `renameatx_np(RENAME_SWAP)` alone is insufficient: it swaps names
100
+ atomically but does not condition the operation on the previously observed
101
+ destination inode. An unprivileged helper under the same UID cannot exclude a
102
+ hostile same-UID process from racing or replaying local state.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ashlr/hub",
3
- "version": "3.2.7",
3
+ "version": "3.3.0",
4
4
  "description": "Local-first command center for agentic engineers.",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -39,6 +39,7 @@
39
39
  "docs/ELITE-AGENT-EFFICIENCY.md",
40
40
  "docs/RUNTIME_ACTIVATION_AUTHORITY.md",
41
41
  "docs/contracts/CONTRACT-M515.md",
42
+ "docs/contracts/CONTRACT-M521.md",
42
43
  "docs/contracts/CONTRACT-MISSION-RECEIPT-V1.md"
43
44
  ],
44
45
  "bundledDependencies": [
@@ -70,23 +71,39 @@
70
71
  "scripts": {
71
72
  "prepublishOnly": "npm run typecheck && npm run lint && npm run test:ci",
72
73
  "prepack": "npm run build",
73
- "build": "tsc -p tsconfig.json && node scripts/copy-assets.mjs && node scripts/build-release-dependency-inventory.mjs && node scripts/build-identity.mjs",
74
+ "build": "tsc -p tsconfig.json && node scripts/copy-assets.mjs && vite build --config vite.config.web.ts && node scripts/build-release-dependency-inventory.mjs && node scripts/build-identity.mjs",
74
75
  "build:binary": "node scripts/build-sea.mjs",
75
76
  "release:canary": "node scripts/run-signed-release-canary.mjs",
77
+ "build:web": "vite build --config vite.config.web.ts",
76
78
  "dev": "tsx src/cli/index.ts",
79
+ "dev:web": "vite --config vite.config.web.ts",
77
80
  "test": "vitest run",
78
81
  "test:serial": "vitest run --no-file-parallelism",
82
+ "test:web": "vitest run --config vitest.config.web.ts",
79
83
  "test:ci": "node scripts/test-ci.mjs",
80
84
  "test:invariants": "vitest run test/h*.test.ts --no-file-parallelism",
81
85
  "lint": "eslint .",
82
- "typecheck": "tsc --noEmit"
86
+ "typecheck": "tsc --noEmit && npm run typecheck:web",
87
+ "typecheck:web": "tsc --noEmit -p src/web-ui/tsconfig.json"
83
88
  },
84
89
  "devDependencies": {
90
+ "@testing-library/jest-dom": "^6.6.3",
91
+ "@testing-library/react": "^16.1.0",
92
+ "@testing-library/user-event": "^14.5.2",
85
93
  "@types/node": "^22.0.0",
94
+ "@types/react": "^19.0.0",
95
+ "@types/react-dom": "^19.0.0",
96
+ "@vitejs/plugin-react": "^4.3.4",
86
97
  "eslint": "^9.0.0",
98
+ "eslint-plugin-react-hooks": "^5.1.0",
99
+ "jsdom": "^25.0.1",
100
+ "react": "^19.0.0",
101
+ "react-dom": "^19.0.0",
102
+ "react-router-dom": "^7.1.1",
87
103
  "tsx": "^4.0.0",
88
104
  "typescript": "^5.5.0",
89
105
  "typescript-eslint": "^8.61.0",
106
+ "vite": "6.4.3",
90
107
  "vitest": "4.1.10",
91
108
  "yaml": "^2.8.1"
92
109
  },