@ebowwa/pkg-ops 0.1.9

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 (469) hide show
  1. package/README.md +108 -0
  2. package/dist/bridge.d.ts +149 -0
  3. package/dist/bridge.d.ts.map +1 -0
  4. package/dist/config.d.ts +92 -0
  5. package/dist/config.d.ts.map +1 -0
  6. package/dist/health-server.d.ts +100 -0
  7. package/dist/health-server.d.ts.map +1 -0
  8. package/dist/index.d.ts +25 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +64 -0
  11. package/dist/index.js.map +16 -0
  12. package/dist/service-manager.d.ts +115 -0
  13. package/dist/service-manager.d.ts.map +1 -0
  14. package/package.json +61 -0
  15. package/rust/Cargo.lock +577 -0
  16. package/rust/Cargo.toml +21 -0
  17. package/rust/src/lib.rs +799 -0
  18. package/rust/src/main.rs +344 -0
  19. package/rust/src/protocol.rs +155 -0
  20. package/rust/target/.rustc_info.json +1 -0
  21. package/rust/target/CACHEDIR.TAG +3 -0
  22. package/rust/target/release/.cargo-lock +0 -0
  23. package/rust/target/release/.fingerprint/autocfg-1b3bd8a7b74bd5b4/dep-lib-autocfg +0 -0
  24. package/rust/target/release/.fingerprint/autocfg-1b3bd8a7b74bd5b4/invoked.timestamp +1 -0
  25. package/rust/target/release/.fingerprint/autocfg-1b3bd8a7b74bd5b4/lib-autocfg +1 -0
  26. package/rust/target/release/.fingerprint/autocfg-1b3bd8a7b74bd5b4/lib-autocfg.json +1 -0
  27. package/rust/target/release/.fingerprint/block-buffer-cf3be8244cc78328/dep-lib-block_buffer +0 -0
  28. package/rust/target/release/.fingerprint/block-buffer-cf3be8244cc78328/invoked.timestamp +1 -0
  29. package/rust/target/release/.fingerprint/block-buffer-cf3be8244cc78328/lib-block_buffer +1 -0
  30. package/rust/target/release/.fingerprint/block-buffer-cf3be8244cc78328/lib-block_buffer.json +1 -0
  31. package/rust/target/release/.fingerprint/cfg-if-e24d4f7b470ac1f7/dep-lib-cfg_if +0 -0
  32. package/rust/target/release/.fingerprint/cfg-if-e24d4f7b470ac1f7/invoked.timestamp +1 -0
  33. package/rust/target/release/.fingerprint/cfg-if-e24d4f7b470ac1f7/lib-cfg_if +1 -0
  34. package/rust/target/release/.fingerprint/cfg-if-e24d4f7b470ac1f7/lib-cfg_if.json +1 -0
  35. package/rust/target/release/.fingerprint/chrono-c2c1d826849da6b8/dep-lib-chrono +0 -0
  36. package/rust/target/release/.fingerprint/chrono-c2c1d826849da6b8/invoked.timestamp +1 -0
  37. package/rust/target/release/.fingerprint/chrono-c2c1d826849da6b8/lib-chrono +1 -0
  38. package/rust/target/release/.fingerprint/chrono-c2c1d826849da6b8/lib-chrono.json +1 -0
  39. package/rust/target/release/.fingerprint/core-foundation-sys-bdb199b1a618a85a/dep-lib-core_foundation_sys +0 -0
  40. package/rust/target/release/.fingerprint/core-foundation-sys-bdb199b1a618a85a/invoked.timestamp +1 -0
  41. package/rust/target/release/.fingerprint/core-foundation-sys-bdb199b1a618a85a/lib-core_foundation_sys +1 -0
  42. package/rust/target/release/.fingerprint/core-foundation-sys-bdb199b1a618a85a/lib-core_foundation_sys.json +1 -0
  43. package/rust/target/release/.fingerprint/cpufeatures-044997a43e932cd2/dep-lib-cpufeatures +0 -0
  44. package/rust/target/release/.fingerprint/cpufeatures-044997a43e932cd2/invoked.timestamp +1 -0
  45. package/rust/target/release/.fingerprint/cpufeatures-044997a43e932cd2/lib-cpufeatures +1 -0
  46. package/rust/target/release/.fingerprint/cpufeatures-044997a43e932cd2/lib-cpufeatures.json +1 -0
  47. package/rust/target/release/.fingerprint/crypto-common-ff4fa5d0a5e0455d/dep-lib-crypto_common +0 -0
  48. package/rust/target/release/.fingerprint/crypto-common-ff4fa5d0a5e0455d/invoked.timestamp +1 -0
  49. package/rust/target/release/.fingerprint/crypto-common-ff4fa5d0a5e0455d/lib-crypto_common +1 -0
  50. package/rust/target/release/.fingerprint/crypto-common-ff4fa5d0a5e0455d/lib-crypto_common.json +1 -0
  51. package/rust/target/release/.fingerprint/digest-6037e23ec7b0997e/dep-lib-digest +0 -0
  52. package/rust/target/release/.fingerprint/digest-6037e23ec7b0997e/invoked.timestamp +1 -0
  53. package/rust/target/release/.fingerprint/digest-6037e23ec7b0997e/lib-digest +1 -0
  54. package/rust/target/release/.fingerprint/digest-6037e23ec7b0997e/lib-digest.json +1 -0
  55. package/rust/target/release/.fingerprint/generic-array-6939b76bf342e446/dep-lib-generic_array +0 -0
  56. package/rust/target/release/.fingerprint/generic-array-6939b76bf342e446/invoked.timestamp +1 -0
  57. package/rust/target/release/.fingerprint/generic-array-6939b76bf342e446/lib-generic_array +1 -0
  58. package/rust/target/release/.fingerprint/generic-array-6939b76bf342e446/lib-generic_array.json +1 -0
  59. package/rust/target/release/.fingerprint/generic-array-8ce40917f76412b1/build-script-build-script-build +1 -0
  60. package/rust/target/release/.fingerprint/generic-array-8ce40917f76412b1/build-script-build-script-build.json +1 -0
  61. package/rust/target/release/.fingerprint/generic-array-8ce40917f76412b1/dep-build-script-build-script-build +0 -0
  62. package/rust/target/release/.fingerprint/generic-array-8ce40917f76412b1/invoked.timestamp +1 -0
  63. package/rust/target/release/.fingerprint/generic-array-e69e3a44765f6d58/run-build-script-build-script-build +1 -0
  64. package/rust/target/release/.fingerprint/generic-array-e69e3a44765f6d58/run-build-script-build-script-build.json +1 -0
  65. package/rust/target/release/.fingerprint/iana-time-zone-7907cd9c1810cf88/dep-lib-iana_time_zone +0 -0
  66. package/rust/target/release/.fingerprint/iana-time-zone-7907cd9c1810cf88/invoked.timestamp +1 -0
  67. package/rust/target/release/.fingerprint/iana-time-zone-7907cd9c1810cf88/lib-iana_time_zone +1 -0
  68. package/rust/target/release/.fingerprint/iana-time-zone-7907cd9c1810cf88/lib-iana_time_zone.json +1 -0
  69. package/rust/target/release/.fingerprint/itoa-a9b94ec9a7564538/dep-lib-itoa +0 -0
  70. package/rust/target/release/.fingerprint/itoa-a9b94ec9a7564538/invoked.timestamp +1 -0
  71. package/rust/target/release/.fingerprint/itoa-a9b94ec9a7564538/lib-itoa +1 -0
  72. package/rust/target/release/.fingerprint/itoa-a9b94ec9a7564538/lib-itoa.json +1 -0
  73. package/rust/target/release/.fingerprint/lazy_static-79337840520ffaab/dep-lib-lazy_static +0 -0
  74. package/rust/target/release/.fingerprint/lazy_static-79337840520ffaab/invoked.timestamp +1 -0
  75. package/rust/target/release/.fingerprint/lazy_static-79337840520ffaab/lib-lazy_static +1 -0
  76. package/rust/target/release/.fingerprint/lazy_static-79337840520ffaab/lib-lazy_static.json +1 -0
  77. package/rust/target/release/.fingerprint/libc-1e68faf72d2d6d6a/build-script-build-script-build +1 -0
  78. package/rust/target/release/.fingerprint/libc-1e68faf72d2d6d6a/build-script-build-script-build.json +1 -0
  79. package/rust/target/release/.fingerprint/libc-1e68faf72d2d6d6a/dep-build-script-build-script-build +0 -0
  80. package/rust/target/release/.fingerprint/libc-1e68faf72d2d6d6a/invoked.timestamp +1 -0
  81. package/rust/target/release/.fingerprint/libc-7781f1d3692ef952/run-build-script-build-script-build +1 -0
  82. package/rust/target/release/.fingerprint/libc-7781f1d3692ef952/run-build-script-build-script-build.json +1 -0
  83. package/rust/target/release/.fingerprint/libc-ab405543531da832/dep-lib-libc +0 -0
  84. package/rust/target/release/.fingerprint/libc-ab405543531da832/invoked.timestamp +1 -0
  85. package/rust/target/release/.fingerprint/libc-ab405543531da832/lib-libc +1 -0
  86. package/rust/target/release/.fingerprint/libc-ab405543531da832/lib-libc.json +1 -0
  87. package/rust/target/release/.fingerprint/log-c93c9501d50fd117/dep-lib-log +0 -0
  88. package/rust/target/release/.fingerprint/log-c93c9501d50fd117/invoked.timestamp +1 -0
  89. package/rust/target/release/.fingerprint/log-c93c9501d50fd117/lib-log +1 -0
  90. package/rust/target/release/.fingerprint/log-c93c9501d50fd117/lib-log.json +1 -0
  91. package/rust/target/release/.fingerprint/matchers-aa7b66eaa02449a5/dep-lib-matchers +0 -0
  92. package/rust/target/release/.fingerprint/matchers-aa7b66eaa02449a5/invoked.timestamp +1 -0
  93. package/rust/target/release/.fingerprint/matchers-aa7b66eaa02449a5/lib-matchers +1 -0
  94. package/rust/target/release/.fingerprint/matchers-aa7b66eaa02449a5/lib-matchers.json +1 -0
  95. package/rust/target/release/.fingerprint/memchr-006163bba97af52f/dep-lib-memchr +0 -0
  96. package/rust/target/release/.fingerprint/memchr-006163bba97af52f/invoked.timestamp +1 -0
  97. package/rust/target/release/.fingerprint/memchr-006163bba97af52f/lib-memchr +1 -0
  98. package/rust/target/release/.fingerprint/memchr-006163bba97af52f/lib-memchr.json +1 -0
  99. package/rust/target/release/.fingerprint/nu-ansi-term-56ab27c2fee1c03f/dep-lib-nu_ansi_term +0 -0
  100. package/rust/target/release/.fingerprint/nu-ansi-term-56ab27c2fee1c03f/invoked.timestamp +1 -0
  101. package/rust/target/release/.fingerprint/nu-ansi-term-56ab27c2fee1c03f/lib-nu_ansi_term +1 -0
  102. package/rust/target/release/.fingerprint/nu-ansi-term-56ab27c2fee1c03f/lib-nu_ansi_term.json +1 -0
  103. package/rust/target/release/.fingerprint/num-traits-960d689d96a427e4/run-build-script-build-script-build +1 -0
  104. package/rust/target/release/.fingerprint/num-traits-960d689d96a427e4/run-build-script-build-script-build.json +1 -0
  105. package/rust/target/release/.fingerprint/num-traits-a45e3ec48ef9afe7/dep-lib-num_traits +0 -0
  106. package/rust/target/release/.fingerprint/num-traits-a45e3ec48ef9afe7/invoked.timestamp +1 -0
  107. package/rust/target/release/.fingerprint/num-traits-a45e3ec48ef9afe7/lib-num_traits +1 -0
  108. package/rust/target/release/.fingerprint/num-traits-a45e3ec48ef9afe7/lib-num_traits.json +1 -0
  109. package/rust/target/release/.fingerprint/num-traits-e0dbc71c6a4b5721/build-script-build-script-build +1 -0
  110. package/rust/target/release/.fingerprint/num-traits-e0dbc71c6a4b5721/build-script-build-script-build.json +1 -0
  111. package/rust/target/release/.fingerprint/num-traits-e0dbc71c6a4b5721/dep-build-script-build-script-build +0 -0
  112. package/rust/target/release/.fingerprint/num-traits-e0dbc71c6a4b5721/invoked.timestamp +1 -0
  113. package/rust/target/release/.fingerprint/once_cell-1ba5d4df66429103/dep-lib-once_cell +0 -0
  114. package/rust/target/release/.fingerprint/once_cell-1ba5d4df66429103/invoked.timestamp +1 -0
  115. package/rust/target/release/.fingerprint/once_cell-1ba5d4df66429103/lib-once_cell +1 -0
  116. package/rust/target/release/.fingerprint/once_cell-1ba5d4df66429103/lib-once_cell.json +1 -0
  117. package/rust/target/release/.fingerprint/pin-project-lite-b67f60134987a063/dep-lib-pin_project_lite +0 -0
  118. package/rust/target/release/.fingerprint/pin-project-lite-b67f60134987a063/invoked.timestamp +1 -0
  119. package/rust/target/release/.fingerprint/pin-project-lite-b67f60134987a063/lib-pin_project_lite +1 -0
  120. package/rust/target/release/.fingerprint/pin-project-lite-b67f60134987a063/lib-pin_project_lite.json +1 -0
  121. package/rust/target/release/.fingerprint/proc-macro2-676678c45d7cb9a8/run-build-script-build-script-build +1 -0
  122. package/rust/target/release/.fingerprint/proc-macro2-676678c45d7cb9a8/run-build-script-build-script-build.json +1 -0
  123. package/rust/target/release/.fingerprint/proc-macro2-c5165b0726856761/dep-lib-proc_macro2 +0 -0
  124. package/rust/target/release/.fingerprint/proc-macro2-c5165b0726856761/invoked.timestamp +1 -0
  125. package/rust/target/release/.fingerprint/proc-macro2-c5165b0726856761/lib-proc_macro2 +1 -0
  126. package/rust/target/release/.fingerprint/proc-macro2-c5165b0726856761/lib-proc_macro2.json +1 -0
  127. package/rust/target/release/.fingerprint/proc-macro2-c72a330c78f30f59/build-script-build-script-build +1 -0
  128. package/rust/target/release/.fingerprint/proc-macro2-c72a330c78f30f59/build-script-build-script-build.json +1 -0
  129. package/rust/target/release/.fingerprint/proc-macro2-c72a330c78f30f59/dep-build-script-build-script-build +0 -0
  130. package/rust/target/release/.fingerprint/proc-macro2-c72a330c78f30f59/invoked.timestamp +1 -0
  131. package/rust/target/release/.fingerprint/quote-0c85187123c64982/build-script-build-script-build +1 -0
  132. package/rust/target/release/.fingerprint/quote-0c85187123c64982/build-script-build-script-build.json +1 -0
  133. package/rust/target/release/.fingerprint/quote-0c85187123c64982/dep-build-script-build-script-build +0 -0
  134. package/rust/target/release/.fingerprint/quote-0c85187123c64982/invoked.timestamp +1 -0
  135. package/rust/target/release/.fingerprint/quote-8e84519b0b657fd1/run-build-script-build-script-build +1 -0
  136. package/rust/target/release/.fingerprint/quote-8e84519b0b657fd1/run-build-script-build-script-build.json +1 -0
  137. package/rust/target/release/.fingerprint/quote-93e086ea3561ec28/dep-lib-quote +0 -0
  138. package/rust/target/release/.fingerprint/quote-93e086ea3561ec28/invoked.timestamp +1 -0
  139. package/rust/target/release/.fingerprint/quote-93e086ea3561ec28/lib-quote +1 -0
  140. package/rust/target/release/.fingerprint/quote-93e086ea3561ec28/lib-quote.json +1 -0
  141. package/rust/target/release/.fingerprint/regex-automata-f8d8efe517e98888/dep-lib-regex_automata +0 -0
  142. package/rust/target/release/.fingerprint/regex-automata-f8d8efe517e98888/invoked.timestamp +1 -0
  143. package/rust/target/release/.fingerprint/regex-automata-f8d8efe517e98888/lib-regex_automata +1 -0
  144. package/rust/target/release/.fingerprint/regex-automata-f8d8efe517e98888/lib-regex_automata.json +1 -0
  145. package/rust/target/release/.fingerprint/regex-syntax-eeca859592595703/dep-lib-regex_syntax +0 -0
  146. package/rust/target/release/.fingerprint/regex-syntax-eeca859592595703/invoked.timestamp +1 -0
  147. package/rust/target/release/.fingerprint/regex-syntax-eeca859592595703/lib-regex_syntax +1 -0
  148. package/rust/target/release/.fingerprint/regex-syntax-eeca859592595703/lib-regex_syntax.json +1 -0
  149. package/rust/target/release/.fingerprint/serde-a5bb7470cea0daed/build-script-build-script-build +1 -0
  150. package/rust/target/release/.fingerprint/serde-a5bb7470cea0daed/build-script-build-script-build.json +1 -0
  151. package/rust/target/release/.fingerprint/serde-a5bb7470cea0daed/dep-build-script-build-script-build +0 -0
  152. package/rust/target/release/.fingerprint/serde-a5bb7470cea0daed/invoked.timestamp +1 -0
  153. package/rust/target/release/.fingerprint/serde-ab5bca82c15e72e0/run-build-script-build-script-build +1 -0
  154. package/rust/target/release/.fingerprint/serde-ab5bca82c15e72e0/run-build-script-build-script-build.json +1 -0
  155. package/rust/target/release/.fingerprint/serde-e58bd660ffca77fb/dep-lib-serde +0 -0
  156. package/rust/target/release/.fingerprint/serde-e58bd660ffca77fb/invoked.timestamp +1 -0
  157. package/rust/target/release/.fingerprint/serde-e58bd660ffca77fb/lib-serde +1 -0
  158. package/rust/target/release/.fingerprint/serde-e58bd660ffca77fb/lib-serde.json +1 -0
  159. package/rust/target/release/.fingerprint/serde_core-9ebabaac0dd9657b/run-build-script-build-script-build +1 -0
  160. package/rust/target/release/.fingerprint/serde_core-9ebabaac0dd9657b/run-build-script-build-script-build.json +1 -0
  161. package/rust/target/release/.fingerprint/serde_core-bcf1f7226267a515/dep-lib-serde_core +0 -0
  162. package/rust/target/release/.fingerprint/serde_core-bcf1f7226267a515/invoked.timestamp +1 -0
  163. package/rust/target/release/.fingerprint/serde_core-bcf1f7226267a515/lib-serde_core +1 -0
  164. package/rust/target/release/.fingerprint/serde_core-bcf1f7226267a515/lib-serde_core.json +1 -0
  165. package/rust/target/release/.fingerprint/serde_core-f6e34062ef5ef617/build-script-build-script-build +1 -0
  166. package/rust/target/release/.fingerprint/serde_core-f6e34062ef5ef617/build-script-build-script-build.json +1 -0
  167. package/rust/target/release/.fingerprint/serde_core-f6e34062ef5ef617/dep-build-script-build-script-build +0 -0
  168. package/rust/target/release/.fingerprint/serde_core-f6e34062ef5ef617/invoked.timestamp +1 -0
  169. package/rust/target/release/.fingerprint/serde_derive-739fe6b99d6b7650/dep-lib-serde_derive +0 -0
  170. package/rust/target/release/.fingerprint/serde_derive-739fe6b99d6b7650/invoked.timestamp +1 -0
  171. package/rust/target/release/.fingerprint/serde_derive-739fe6b99d6b7650/lib-serde_derive +1 -0
  172. package/rust/target/release/.fingerprint/serde_derive-739fe6b99d6b7650/lib-serde_derive.json +1 -0
  173. package/rust/target/release/.fingerprint/serde_json-b567bd1bd6d9b444/build-script-build-script-build +1 -0
  174. package/rust/target/release/.fingerprint/serde_json-b567bd1bd6d9b444/build-script-build-script-build.json +1 -0
  175. package/rust/target/release/.fingerprint/serde_json-b567bd1bd6d9b444/dep-build-script-build-script-build +0 -0
  176. package/rust/target/release/.fingerprint/serde_json-b567bd1bd6d9b444/invoked.timestamp +1 -0
  177. package/rust/target/release/.fingerprint/serde_json-c2477e5e18fc5e07/dep-lib-serde_json +0 -0
  178. package/rust/target/release/.fingerprint/serde_json-c2477e5e18fc5e07/invoked.timestamp +1 -0
  179. package/rust/target/release/.fingerprint/serde_json-c2477e5e18fc5e07/lib-serde_json +1 -0
  180. package/rust/target/release/.fingerprint/serde_json-c2477e5e18fc5e07/lib-serde_json.json +1 -0
  181. package/rust/target/release/.fingerprint/serde_json-c2d2dc29d8c706f7/run-build-script-build-script-build +1 -0
  182. package/rust/target/release/.fingerprint/serde_json-c2d2dc29d8c706f7/run-build-script-build-script-build.json +1 -0
  183. package/rust/target/release/.fingerprint/sha2-c490257262e4006f/dep-lib-sha2 +0 -0
  184. package/rust/target/release/.fingerprint/sha2-c490257262e4006f/invoked.timestamp +1 -0
  185. package/rust/target/release/.fingerprint/sha2-c490257262e4006f/lib-sha2 +1 -0
  186. package/rust/target/release/.fingerprint/sha2-c490257262e4006f/lib-sha2.json +1 -0
  187. package/rust/target/release/.fingerprint/sharded-slab-a9b081fca5df5776/dep-lib-sharded_slab +0 -0
  188. package/rust/target/release/.fingerprint/sharded-slab-a9b081fca5df5776/invoked.timestamp +1 -0
  189. package/rust/target/release/.fingerprint/sharded-slab-a9b081fca5df5776/lib-sharded_slab +1 -0
  190. package/rust/target/release/.fingerprint/sharded-slab-a9b081fca5df5776/lib-sharded_slab.json +1 -0
  191. package/rust/target/release/.fingerprint/smallvec-c80f5e02fc44f75f/dep-lib-smallvec +0 -0
  192. package/rust/target/release/.fingerprint/smallvec-c80f5e02fc44f75f/invoked.timestamp +1 -0
  193. package/rust/target/release/.fingerprint/smallvec-c80f5e02fc44f75f/lib-smallvec +1 -0
  194. package/rust/target/release/.fingerprint/smallvec-c80f5e02fc44f75f/lib-smallvec.json +1 -0
  195. package/rust/target/release/.fingerprint/syn-e3c4fb9c9765d69d/dep-lib-syn +0 -0
  196. package/rust/target/release/.fingerprint/syn-e3c4fb9c9765d69d/invoked.timestamp +1 -0
  197. package/rust/target/release/.fingerprint/syn-e3c4fb9c9765d69d/lib-syn +1 -0
  198. package/rust/target/release/.fingerprint/syn-e3c4fb9c9765d69d/lib-syn.json +1 -0
  199. package/rust/target/release/.fingerprint/thread_local-36b9b6c1f23ac9ba/dep-lib-thread_local +0 -0
  200. package/rust/target/release/.fingerprint/thread_local-36b9b6c1f23ac9ba/invoked.timestamp +1 -0
  201. package/rust/target/release/.fingerprint/thread_local-36b9b6c1f23ac9ba/lib-thread_local +1 -0
  202. package/rust/target/release/.fingerprint/thread_local-36b9b6c1f23ac9ba/lib-thread_local.json +1 -0
  203. package/rust/target/release/.fingerprint/tracing-245af3c71ea35ecd/dep-lib-tracing +0 -0
  204. package/rust/target/release/.fingerprint/tracing-245af3c71ea35ecd/invoked.timestamp +1 -0
  205. package/rust/target/release/.fingerprint/tracing-245af3c71ea35ecd/lib-tracing +1 -0
  206. package/rust/target/release/.fingerprint/tracing-245af3c71ea35ecd/lib-tracing.json +1 -0
  207. package/rust/target/release/.fingerprint/tracing-attributes-4b033b2e5598485c/dep-lib-tracing_attributes +0 -0
  208. package/rust/target/release/.fingerprint/tracing-attributes-4b033b2e5598485c/invoked.timestamp +1 -0
  209. package/rust/target/release/.fingerprint/tracing-attributes-4b033b2e5598485c/lib-tracing_attributes +1 -0
  210. package/rust/target/release/.fingerprint/tracing-attributes-4b033b2e5598485c/lib-tracing_attributes.json +1 -0
  211. package/rust/target/release/.fingerprint/tracing-core-251b2d04fd4b7c92/dep-lib-tracing_core +0 -0
  212. package/rust/target/release/.fingerprint/tracing-core-251b2d04fd4b7c92/invoked.timestamp +1 -0
  213. package/rust/target/release/.fingerprint/tracing-core-251b2d04fd4b7c92/lib-tracing_core +1 -0
  214. package/rust/target/release/.fingerprint/tracing-core-251b2d04fd4b7c92/lib-tracing_core.json +1 -0
  215. package/rust/target/release/.fingerprint/tracing-log-33fc70c9a47f5b59/dep-lib-tracing_log +0 -0
  216. package/rust/target/release/.fingerprint/tracing-log-33fc70c9a47f5b59/invoked.timestamp +1 -0
  217. package/rust/target/release/.fingerprint/tracing-log-33fc70c9a47f5b59/lib-tracing_log +1 -0
  218. package/rust/target/release/.fingerprint/tracing-log-33fc70c9a47f5b59/lib-tracing_log.json +1 -0
  219. package/rust/target/release/.fingerprint/tracing-subscriber-bde0d5b2c127b5ce/dep-lib-tracing_subscriber +0 -0
  220. package/rust/target/release/.fingerprint/tracing-subscriber-bde0d5b2c127b5ce/invoked.timestamp +1 -0
  221. package/rust/target/release/.fingerprint/tracing-subscriber-bde0d5b2c127b5ce/lib-tracing_subscriber +1 -0
  222. package/rust/target/release/.fingerprint/tracing-subscriber-bde0d5b2c127b5ce/lib-tracing_subscriber.json +1 -0
  223. package/rust/target/release/.fingerprint/typenum-3cdc48836e5238cf/dep-lib-typenum +0 -0
  224. package/rust/target/release/.fingerprint/typenum-3cdc48836e5238cf/invoked.timestamp +1 -0
  225. package/rust/target/release/.fingerprint/typenum-3cdc48836e5238cf/lib-typenum +1 -0
  226. package/rust/target/release/.fingerprint/typenum-3cdc48836e5238cf/lib-typenum.json +1 -0
  227. package/rust/target/release/.fingerprint/typenum-a51a68ea7cdca0a3/run-build-script-build-script-build +1 -0
  228. package/rust/target/release/.fingerprint/typenum-a51a68ea7cdca0a3/run-build-script-build-script-build.json +1 -0
  229. package/rust/target/release/.fingerprint/typenum-be711a78e8981f2a/build-script-build-script-build +1 -0
  230. package/rust/target/release/.fingerprint/typenum-be711a78e8981f2a/build-script-build-script-build.json +1 -0
  231. package/rust/target/release/.fingerprint/typenum-be711a78e8981f2a/dep-build-script-build-script-build +0 -0
  232. package/rust/target/release/.fingerprint/typenum-be711a78e8981f2a/invoked.timestamp +1 -0
  233. package/rust/target/release/.fingerprint/unicode-ident-b6ef9a2188f165a7/dep-lib-unicode_ident +0 -0
  234. package/rust/target/release/.fingerprint/unicode-ident-b6ef9a2188f165a7/invoked.timestamp +1 -0
  235. package/rust/target/release/.fingerprint/unicode-ident-b6ef9a2188f165a7/lib-unicode_ident +1 -0
  236. package/rust/target/release/.fingerprint/unicode-ident-b6ef9a2188f165a7/lib-unicode_ident.json +1 -0
  237. package/rust/target/release/.fingerprint/version_check-8de6a4a01730f3fc/dep-lib-version_check +0 -0
  238. package/rust/target/release/.fingerprint/version_check-8de6a4a01730f3fc/invoked.timestamp +1 -0
  239. package/rust/target/release/.fingerprint/version_check-8de6a4a01730f3fc/lib-version_check +1 -0
  240. package/rust/target/release/.fingerprint/version_check-8de6a4a01730f3fc/lib-version_check.json +1 -0
  241. package/rust/target/release/.fingerprint/vps-manager-core-32881497d3c7a1d5/dep-lib-vps_manager_core +0 -0
  242. package/rust/target/release/.fingerprint/vps-manager-core-32881497d3c7a1d5/invoked.timestamp +1 -0
  243. package/rust/target/release/.fingerprint/vps-manager-core-32881497d3c7a1d5/lib-vps_manager_core +1 -0
  244. package/rust/target/release/.fingerprint/vps-manager-core-32881497d3c7a1d5/lib-vps_manager_core.json +1 -0
  245. package/rust/target/release/.fingerprint/vps-manager-core-52dac2e61aad8f4b/bin-vps-manager-core +1 -0
  246. package/rust/target/release/.fingerprint/vps-manager-core-52dac2e61aad8f4b/bin-vps-manager-core.json +1 -0
  247. package/rust/target/release/.fingerprint/vps-manager-core-52dac2e61aad8f4b/dep-bin-vps-manager-core +0 -0
  248. package/rust/target/release/.fingerprint/vps-manager-core-52dac2e61aad8f4b/invoked.timestamp +1 -0
  249. package/rust/target/release/.fingerprint/zmij-4431e0d331234992/dep-lib-zmij +0 -0
  250. package/rust/target/release/.fingerprint/zmij-4431e0d331234992/invoked.timestamp +1 -0
  251. package/rust/target/release/.fingerprint/zmij-4431e0d331234992/lib-zmij +1 -0
  252. package/rust/target/release/.fingerprint/zmij-4431e0d331234992/lib-zmij.json +1 -0
  253. package/rust/target/release/.fingerprint/zmij-7f6b81acea9a20e3/run-build-script-build-script-build +1 -0
  254. package/rust/target/release/.fingerprint/zmij-7f6b81acea9a20e3/run-build-script-build-script-build.json +1 -0
  255. package/rust/target/release/.fingerprint/zmij-bceeb0e6919120f9/build-script-build-script-build +1 -0
  256. package/rust/target/release/.fingerprint/zmij-bceeb0e6919120f9/build-script-build-script-build.json +1 -0
  257. package/rust/target/release/.fingerprint/zmij-bceeb0e6919120f9/dep-build-script-build-script-build +0 -0
  258. package/rust/target/release/.fingerprint/zmij-bceeb0e6919120f9/invoked.timestamp +1 -0
  259. package/rust/target/release/build/generic-array-8ce40917f76412b1/build-script-build +0 -0
  260. package/rust/target/release/build/generic-array-8ce40917f76412b1/build_script_build-8ce40917f76412b1 +0 -0
  261. package/rust/target/release/build/generic-array-8ce40917f76412b1/build_script_build-8ce40917f76412b1.d +5 -0
  262. package/rust/target/release/build/generic-array-e69e3a44765f6d58/invoked.timestamp +1 -0
  263. package/rust/target/release/build/generic-array-e69e3a44765f6d58/output +1 -0
  264. package/rust/target/release/build/generic-array-e69e3a44765f6d58/root-output +1 -0
  265. package/rust/target/release/build/generic-array-e69e3a44765f6d58/stderr +0 -0
  266. package/rust/target/release/build/libc-1e68faf72d2d6d6a/build-script-build +0 -0
  267. package/rust/target/release/build/libc-1e68faf72d2d6d6a/build_script_build-1e68faf72d2d6d6a +0 -0
  268. package/rust/target/release/build/libc-1e68faf72d2d6d6a/build_script_build-1e68faf72d2d6d6a.d +5 -0
  269. package/rust/target/release/build/libc-7781f1d3692ef952/invoked.timestamp +1 -0
  270. package/rust/target/release/build/libc-7781f1d3692ef952/output +25 -0
  271. package/rust/target/release/build/libc-7781f1d3692ef952/root-output +1 -0
  272. package/rust/target/release/build/libc-7781f1d3692ef952/stderr +0 -0
  273. package/rust/target/release/build/num-traits-960d689d96a427e4/invoked.timestamp +1 -0
  274. package/rust/target/release/build/num-traits-960d689d96a427e4/output +3 -0
  275. package/rust/target/release/build/num-traits-960d689d96a427e4/root-output +1 -0
  276. package/rust/target/release/build/num-traits-960d689d96a427e4/stderr +0 -0
  277. package/rust/target/release/build/num-traits-e0dbc71c6a4b5721/build-script-build +0 -0
  278. package/rust/target/release/build/num-traits-e0dbc71c6a4b5721/build_script_build-e0dbc71c6a4b5721 +0 -0
  279. package/rust/target/release/build/num-traits-e0dbc71c6a4b5721/build_script_build-e0dbc71c6a4b5721.d +5 -0
  280. package/rust/target/release/build/proc-macro2-676678c45d7cb9a8/invoked.timestamp +1 -0
  281. package/rust/target/release/build/proc-macro2-676678c45d7cb9a8/output +23 -0
  282. package/rust/target/release/build/proc-macro2-676678c45d7cb9a8/root-output +1 -0
  283. package/rust/target/release/build/proc-macro2-676678c45d7cb9a8/stderr +0 -0
  284. package/rust/target/release/build/proc-macro2-c72a330c78f30f59/build-script-build +0 -0
  285. package/rust/target/release/build/proc-macro2-c72a330c78f30f59/build_script_build-c72a330c78f30f59 +0 -0
  286. package/rust/target/release/build/proc-macro2-c72a330c78f30f59/build_script_build-c72a330c78f30f59.d +5 -0
  287. package/rust/target/release/build/quote-0c85187123c64982/build-script-build +0 -0
  288. package/rust/target/release/build/quote-0c85187123c64982/build_script_build-0c85187123c64982 +0 -0
  289. package/rust/target/release/build/quote-0c85187123c64982/build_script_build-0c85187123c64982.d +5 -0
  290. package/rust/target/release/build/quote-8e84519b0b657fd1/invoked.timestamp +1 -0
  291. package/rust/target/release/build/quote-8e84519b0b657fd1/output +2 -0
  292. package/rust/target/release/build/quote-8e84519b0b657fd1/root-output +1 -0
  293. package/rust/target/release/build/quote-8e84519b0b657fd1/stderr +0 -0
  294. package/rust/target/release/build/serde-a5bb7470cea0daed/build-script-build +0 -0
  295. package/rust/target/release/build/serde-a5bb7470cea0daed/build_script_build-a5bb7470cea0daed +0 -0
  296. package/rust/target/release/build/serde-a5bb7470cea0daed/build_script_build-a5bb7470cea0daed.d +5 -0
  297. package/rust/target/release/build/serde-ab5bca82c15e72e0/invoked.timestamp +1 -0
  298. package/rust/target/release/build/serde-ab5bca82c15e72e0/out/private.rs +6 -0
  299. package/rust/target/release/build/serde-ab5bca82c15e72e0/output +13 -0
  300. package/rust/target/release/build/serde-ab5bca82c15e72e0/root-output +1 -0
  301. package/rust/target/release/build/serde-ab5bca82c15e72e0/stderr +0 -0
  302. package/rust/target/release/build/serde_core-9ebabaac0dd9657b/invoked.timestamp +1 -0
  303. package/rust/target/release/build/serde_core-9ebabaac0dd9657b/out/private.rs +5 -0
  304. package/rust/target/release/build/serde_core-9ebabaac0dd9657b/output +11 -0
  305. package/rust/target/release/build/serde_core-9ebabaac0dd9657b/root-output +1 -0
  306. package/rust/target/release/build/serde_core-9ebabaac0dd9657b/stderr +0 -0
  307. package/rust/target/release/build/serde_core-f6e34062ef5ef617/build-script-build +0 -0
  308. package/rust/target/release/build/serde_core-f6e34062ef5ef617/build_script_build-f6e34062ef5ef617 +0 -0
  309. package/rust/target/release/build/serde_core-f6e34062ef5ef617/build_script_build-f6e34062ef5ef617.d +5 -0
  310. package/rust/target/release/build/serde_json-b567bd1bd6d9b444/build-script-build +0 -0
  311. package/rust/target/release/build/serde_json-b567bd1bd6d9b444/build_script_build-b567bd1bd6d9b444 +0 -0
  312. package/rust/target/release/build/serde_json-b567bd1bd6d9b444/build_script_build-b567bd1bd6d9b444.d +5 -0
  313. package/rust/target/release/build/serde_json-c2d2dc29d8c706f7/invoked.timestamp +1 -0
  314. package/rust/target/release/build/serde_json-c2d2dc29d8c706f7/output +3 -0
  315. package/rust/target/release/build/serde_json-c2d2dc29d8c706f7/root-output +1 -0
  316. package/rust/target/release/build/serde_json-c2d2dc29d8c706f7/stderr +0 -0
  317. package/rust/target/release/build/typenum-a51a68ea7cdca0a3/invoked.timestamp +1 -0
  318. package/rust/target/release/build/typenum-a51a68ea7cdca0a3/out/tests.rs +20563 -0
  319. package/rust/target/release/build/typenum-a51a68ea7cdca0a3/output +1 -0
  320. package/rust/target/release/build/typenum-a51a68ea7cdca0a3/root-output +1 -0
  321. package/rust/target/release/build/typenum-a51a68ea7cdca0a3/stderr +0 -0
  322. package/rust/target/release/build/typenum-be711a78e8981f2a/build-script-build +0 -0
  323. package/rust/target/release/build/typenum-be711a78e8981f2a/build_script_build-be711a78e8981f2a +0 -0
  324. package/rust/target/release/build/typenum-be711a78e8981f2a/build_script_build-be711a78e8981f2a.d +5 -0
  325. package/rust/target/release/build/zmij-7f6b81acea9a20e3/invoked.timestamp +1 -0
  326. package/rust/target/release/build/zmij-7f6b81acea9a20e3/output +3 -0
  327. package/rust/target/release/build/zmij-7f6b81acea9a20e3/root-output +1 -0
  328. package/rust/target/release/build/zmij-7f6b81acea9a20e3/stderr +0 -0
  329. package/rust/target/release/build/zmij-bceeb0e6919120f9/build-script-build +0 -0
  330. package/rust/target/release/build/zmij-bceeb0e6919120f9/build_script_build-bceeb0e6919120f9 +0 -0
  331. package/rust/target/release/build/zmij-bceeb0e6919120f9/build_script_build-bceeb0e6919120f9.d +5 -0
  332. package/rust/target/release/deps/autocfg-1b3bd8a7b74bd5b4.d +10 -0
  333. package/rust/target/release/deps/block_buffer-cf3be8244cc78328.d +8 -0
  334. package/rust/target/release/deps/cfg_if-e24d4f7b470ac1f7.d +7 -0
  335. package/rust/target/release/deps/chrono-c2c1d826849da6b8.d +37 -0
  336. package/rust/target/release/deps/core_foundation_sys-bdb199b1a618a85a.d +46 -0
  337. package/rust/target/release/deps/cpufeatures-044997a43e932cd2.d +8 -0
  338. package/rust/target/release/deps/crypto_common-ff4fa5d0a5e0455d.d +7 -0
  339. package/rust/target/release/deps/digest-6037e23ec7b0997e.d +13 -0
  340. package/rust/target/release/deps/generic_array-6939b76bf342e446.d +13 -0
  341. package/rust/target/release/deps/iana_time_zone-7907cd9c1810cf88.d +9 -0
  342. package/rust/target/release/deps/itoa-a9b94ec9a7564538.d +8 -0
  343. package/rust/target/release/deps/lazy_static-79337840520ffaab.d +8 -0
  344. package/rust/target/release/deps/libautocfg-1b3bd8a7b74bd5b4.rlib +0 -0
  345. package/rust/target/release/deps/libautocfg-1b3bd8a7b74bd5b4.rmeta +0 -0
  346. package/rust/target/release/deps/libblock_buffer-cf3be8244cc78328.rlib +0 -0
  347. package/rust/target/release/deps/libblock_buffer-cf3be8244cc78328.rmeta +0 -0
  348. package/rust/target/release/deps/libc-ab405543531da832.d +45 -0
  349. package/rust/target/release/deps/libcfg_if-e24d4f7b470ac1f7.rlib +0 -0
  350. package/rust/target/release/deps/libcfg_if-e24d4f7b470ac1f7.rmeta +0 -0
  351. package/rust/target/release/deps/libchrono-c2c1d826849da6b8.rlib +0 -0
  352. package/rust/target/release/deps/libchrono-c2c1d826849da6b8.rmeta +0 -0
  353. package/rust/target/release/deps/libcore_foundation_sys-bdb199b1a618a85a.rlib +0 -0
  354. package/rust/target/release/deps/libcore_foundation_sys-bdb199b1a618a85a.rmeta +0 -0
  355. package/rust/target/release/deps/libcpufeatures-044997a43e932cd2.rlib +0 -0
  356. package/rust/target/release/deps/libcpufeatures-044997a43e932cd2.rmeta +0 -0
  357. package/rust/target/release/deps/libcrypto_common-ff4fa5d0a5e0455d.rlib +0 -0
  358. package/rust/target/release/deps/libcrypto_common-ff4fa5d0a5e0455d.rmeta +0 -0
  359. package/rust/target/release/deps/libdigest-6037e23ec7b0997e.rlib +0 -0
  360. package/rust/target/release/deps/libdigest-6037e23ec7b0997e.rmeta +0 -0
  361. package/rust/target/release/deps/libgeneric_array-6939b76bf342e446.rlib +0 -0
  362. package/rust/target/release/deps/libgeneric_array-6939b76bf342e446.rmeta +0 -0
  363. package/rust/target/release/deps/libiana_time_zone-7907cd9c1810cf88.rlib +0 -0
  364. package/rust/target/release/deps/libiana_time_zone-7907cd9c1810cf88.rmeta +0 -0
  365. package/rust/target/release/deps/libitoa-a9b94ec9a7564538.rlib +0 -0
  366. package/rust/target/release/deps/libitoa-a9b94ec9a7564538.rmeta +0 -0
  367. package/rust/target/release/deps/liblazy_static-79337840520ffaab.rlib +0 -0
  368. package/rust/target/release/deps/liblazy_static-79337840520ffaab.rmeta +0 -0
  369. package/rust/target/release/deps/liblibc-ab405543531da832.rlib +0 -0
  370. package/rust/target/release/deps/liblibc-ab405543531da832.rmeta +0 -0
  371. package/rust/target/release/deps/liblog-c93c9501d50fd117.rlib +0 -0
  372. package/rust/target/release/deps/liblog-c93c9501d50fd117.rmeta +0 -0
  373. package/rust/target/release/deps/libmatchers-aa7b66eaa02449a5.rlib +0 -0
  374. package/rust/target/release/deps/libmatchers-aa7b66eaa02449a5.rmeta +0 -0
  375. package/rust/target/release/deps/libmemchr-006163bba97af52f.rlib +0 -0
  376. package/rust/target/release/deps/libmemchr-006163bba97af52f.rmeta +0 -0
  377. package/rust/target/release/deps/libnu_ansi_term-56ab27c2fee1c03f.rlib +0 -0
  378. package/rust/target/release/deps/libnu_ansi_term-56ab27c2fee1c03f.rmeta +0 -0
  379. package/rust/target/release/deps/libnum_traits-a45e3ec48ef9afe7.rlib +0 -0
  380. package/rust/target/release/deps/libnum_traits-a45e3ec48ef9afe7.rmeta +0 -0
  381. package/rust/target/release/deps/libonce_cell-1ba5d4df66429103.rlib +0 -0
  382. package/rust/target/release/deps/libonce_cell-1ba5d4df66429103.rmeta +0 -0
  383. package/rust/target/release/deps/libpin_project_lite-b67f60134987a063.rlib +0 -0
  384. package/rust/target/release/deps/libpin_project_lite-b67f60134987a063.rmeta +0 -0
  385. package/rust/target/release/deps/libproc_macro2-c5165b0726856761.rlib +0 -0
  386. package/rust/target/release/deps/libproc_macro2-c5165b0726856761.rmeta +0 -0
  387. package/rust/target/release/deps/libquote-93e086ea3561ec28.rlib +0 -0
  388. package/rust/target/release/deps/libquote-93e086ea3561ec28.rmeta +0 -0
  389. package/rust/target/release/deps/libregex_automata-f8d8efe517e98888.rlib +0 -0
  390. package/rust/target/release/deps/libregex_automata-f8d8efe517e98888.rmeta +0 -0
  391. package/rust/target/release/deps/libregex_syntax-eeca859592595703.rlib +0 -0
  392. package/rust/target/release/deps/libregex_syntax-eeca859592595703.rmeta +0 -0
  393. package/rust/target/release/deps/libserde-e58bd660ffca77fb.rlib +0 -0
  394. package/rust/target/release/deps/libserde-e58bd660ffca77fb.rmeta +0 -0
  395. package/rust/target/release/deps/libserde_core-bcf1f7226267a515.rlib +0 -0
  396. package/rust/target/release/deps/libserde_core-bcf1f7226267a515.rmeta +0 -0
  397. package/rust/target/release/deps/libserde_derive-739fe6b99d6b7650.dylib +0 -0
  398. package/rust/target/release/deps/libserde_json-c2477e5e18fc5e07.rlib +0 -0
  399. package/rust/target/release/deps/libserde_json-c2477e5e18fc5e07.rmeta +0 -0
  400. package/rust/target/release/deps/libsha2-c490257262e4006f.rlib +0 -0
  401. package/rust/target/release/deps/libsha2-c490257262e4006f.rmeta +0 -0
  402. package/rust/target/release/deps/libsharded_slab-a9b081fca5df5776.rlib +0 -0
  403. package/rust/target/release/deps/libsharded_slab-a9b081fca5df5776.rmeta +0 -0
  404. package/rust/target/release/deps/libsmallvec-c80f5e02fc44f75f.rlib +0 -0
  405. package/rust/target/release/deps/libsmallvec-c80f5e02fc44f75f.rmeta +0 -0
  406. package/rust/target/release/deps/libsyn-e3c4fb9c9765d69d.rlib +0 -0
  407. package/rust/target/release/deps/libsyn-e3c4fb9c9765d69d.rmeta +0 -0
  408. package/rust/target/release/deps/libthread_local-36b9b6c1f23ac9ba.rlib +0 -0
  409. package/rust/target/release/deps/libthread_local-36b9b6c1f23ac9ba.rmeta +0 -0
  410. package/rust/target/release/deps/libtracing-245af3c71ea35ecd.rlib +0 -0
  411. package/rust/target/release/deps/libtracing-245af3c71ea35ecd.rmeta +0 -0
  412. package/rust/target/release/deps/libtracing_attributes-4b033b2e5598485c.dylib +0 -0
  413. package/rust/target/release/deps/libtracing_core-251b2d04fd4b7c92.rlib +0 -0
  414. package/rust/target/release/deps/libtracing_core-251b2d04fd4b7c92.rmeta +0 -0
  415. package/rust/target/release/deps/libtracing_log-33fc70c9a47f5b59.rlib +0 -0
  416. package/rust/target/release/deps/libtracing_log-33fc70c9a47f5b59.rmeta +0 -0
  417. package/rust/target/release/deps/libtracing_subscriber-bde0d5b2c127b5ce.rlib +0 -0
  418. package/rust/target/release/deps/libtracing_subscriber-bde0d5b2c127b5ce.rmeta +0 -0
  419. package/rust/target/release/deps/libtypenum-3cdc48836e5238cf.rlib +0 -0
  420. package/rust/target/release/deps/libtypenum-3cdc48836e5238cf.rmeta +0 -0
  421. package/rust/target/release/deps/libunicode_ident-b6ef9a2188f165a7.rlib +0 -0
  422. package/rust/target/release/deps/libunicode_ident-b6ef9a2188f165a7.rmeta +0 -0
  423. package/rust/target/release/deps/libversion_check-8de6a4a01730f3fc.rlib +0 -0
  424. package/rust/target/release/deps/libversion_check-8de6a4a01730f3fc.rmeta +0 -0
  425. package/rust/target/release/deps/libvps_manager_core-32881497d3c7a1d5.rlib +0 -0
  426. package/rust/target/release/deps/libvps_manager_core-32881497d3c7a1d5.rmeta +0 -0
  427. package/rust/target/release/deps/libzmij-4431e0d331234992.rlib +0 -0
  428. package/rust/target/release/deps/libzmij-4431e0d331234992.rmeta +0 -0
  429. package/rust/target/release/deps/log-c93c9501d50fd117.d +10 -0
  430. package/rust/target/release/deps/matchers-aa7b66eaa02449a5.d +7 -0
  431. package/rust/target/release/deps/memchr-006163bba97af52f.d +30 -0
  432. package/rust/target/release/deps/nu_ansi_term-56ab27c2fee1c03f.d +16 -0
  433. package/rust/target/release/deps/num_traits-a45e3ec48ef9afe7.d +25 -0
  434. package/rust/target/release/deps/once_cell-1ba5d4df66429103.d +9 -0
  435. package/rust/target/release/deps/pin_project_lite-b67f60134987a063.d +7 -0
  436. package/rust/target/release/deps/proc_macro2-c5165b0726856761.d +17 -0
  437. package/rust/target/release/deps/quote-93e086ea3561ec28.d +13 -0
  438. package/rust/target/release/deps/regex_automata-f8d8efe517e98888.d +57 -0
  439. package/rust/target/release/deps/regex_syntax-eeca859592595703.d +25 -0
  440. package/rust/target/release/deps/serde-e58bd660ffca77fb.d +14 -0
  441. package/rust/target/release/deps/serde_core-bcf1f7226267a515.d +27 -0
  442. package/rust/target/release/deps/serde_derive-739fe6b99d6b7650.d +34 -0
  443. package/rust/target/release/deps/serde_json-c2477e5e18fc5e07.d +22 -0
  444. package/rust/target/release/deps/sha2-c490257262e4006f.d +13 -0
  445. package/rust/target/release/deps/sharded_slab-a9b081fca5df5776.d +19 -0
  446. package/rust/target/release/deps/smallvec-c80f5e02fc44f75f.d +7 -0
  447. package/rust/target/release/deps/syn-e3c4fb9c9765d69d.d +58 -0
  448. package/rust/target/release/deps/thread_local-36b9b6c1f23ac9ba.d +10 -0
  449. package/rust/target/release/deps/tracing-245af3c71ea35ecd.d +14 -0
  450. package/rust/target/release/deps/tracing_attributes-4b033b2e5598485c.d +7 -0
  451. package/rust/target/release/deps/tracing_core-251b2d04fd4b7c92.d +16 -0
  452. package/rust/target/release/deps/tracing_log-33fc70c9a47f5b59.d +8 -0
  453. package/rust/target/release/deps/tracing_subscriber-bde0d5b2c127b5ce.d +42 -0
  454. package/rust/target/release/deps/typenum-3cdc48836e5238cf.d +18 -0
  455. package/rust/target/release/deps/unicode_ident-b6ef9a2188f165a7.d +8 -0
  456. package/rust/target/release/deps/version_check-8de6a4a01730f3fc.d +10 -0
  457. package/rust/target/release/deps/vps_manager_core-32881497d3c7a1d5.d +8 -0
  458. package/rust/target/release/deps/vps_manager_core-52dac2e61aad8f4b +0 -0
  459. package/rust/target/release/deps/vps_manager_core-52dac2e61aad8f4b.d +5 -0
  460. package/rust/target/release/deps/zmij-4431e0d331234992.d +8 -0
  461. package/rust/target/release/libvps_manager_core.d +1 -0
  462. package/rust/target/release/libvps_manager_core.rlib +0 -0
  463. package/rust/target/release/vps-manager-core +0 -0
  464. package/rust/target/release/vps-manager-core.d +1 -0
  465. package/src/bridge.ts +419 -0
  466. package/src/config.ts +192 -0
  467. package/src/health-server.ts +280 -0
  468. package/src/index.ts +860 -0
  469. package/src/service-manager.ts +216 -0
package/src/index.ts ADDED
@@ -0,0 +1,860 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PkgOps CLI
4
+ *
5
+ * Package operations CLI that installs @ebowwa/* npm packages
6
+ * and manages systemd services.
7
+ *
8
+ * @example
9
+ * ```bash
10
+ * # Install a package
11
+ * pkg-ops install @ebowwa/stack@0.7.12
12
+ *
13
+ * # Service management
14
+ * pkg-ops service start stack
15
+ * pkg-ops service status stack
16
+ *
17
+ * # Health check
18
+ * pkg-ops health
19
+ *
20
+ * # List packages
21
+ * pkg-ops list
22
+ * ```
23
+ */
24
+
25
+ import { readFileSync, existsSync } from "node:fs";
26
+ import {
27
+ loadConfig,
28
+ parsePackageSpec,
29
+ isValidPackageName,
30
+ getPackageConfig,
31
+ updatePackageConfig,
32
+ removePackageConfig,
33
+ listManagedPackages,
34
+ } from "./config.js";
35
+ import { ServiceManager, getServiceManager } from "./service-manager.js";
36
+ import { RustBridge, startBridge, stopBridge } from "./bridge.js";
37
+ import { startHealthServer, stopHealthServer, getHealthServer } from "./health-server.js";
38
+ import type { VerifyResult, AuditResult, BundleSize, InstalledPackageInfo } from "./bridge.js";
39
+
40
+ // ---------------------------------------------------------------------------
41
+ // Types
42
+ // ---------------------------------------------------------------------------
43
+
44
+ interface Command {
45
+ name: string;
46
+ description: string;
47
+ usage: string;
48
+ handler: (args: string[]) => Promise<void> | void;
49
+ }
50
+
51
+ interface Subcommand {
52
+ name: string;
53
+ description: string;
54
+ usage: string;
55
+ handler: (args: string[]) => Promise<void> | void;
56
+ }
57
+
58
+ // ---------------------------------------------------------------------------
59
+ // Package Management Commands
60
+ // ---------------------------------------------------------------------------
61
+
62
+ async function handleInstall(args: string[]): Promise<void> {
63
+ if (args.length === 0) {
64
+ console.error("Usage: pkg-ops install <package>[@version]");
65
+ process.exit(1);
66
+ }
67
+
68
+ const spec = args[0];
69
+ const { name, version } = parsePackageSpec(spec);
70
+
71
+ if (!isValidPackageName(name)) {
72
+ console.error(`Invalid package name. Only @ebowwa/* packages are supported.`);
73
+ process.exit(1);
74
+ }
75
+
76
+ console.log(`Installing ${name}@${version}...`);
77
+
78
+ try {
79
+ const bridge = await startBridge();
80
+ const result = await bridge.install(name, version);
81
+
82
+ if (result.success) {
83
+ console.log(`Successfully installed ${name}@${result.version}`);
84
+ if (result.previousVersion) {
85
+ console.log(` Previous version: ${result.previousVersion}`);
86
+ }
87
+
88
+ // Update config
89
+ updatePackageConfig(name, {
90
+ version: result.version,
91
+ service: name.replace("@ebowwa/", ""),
92
+ });
93
+
94
+ // Start service if configured
95
+ const config = getPackageConfig(name);
96
+ if (config?.service && config.autoStart !== false) {
97
+ const sm = getServiceManager();
98
+ const startResult = await sm.start(config.service);
99
+ if (startResult.success) {
100
+ console.log(` Service ${config.service} started`);
101
+ } else {
102
+ console.warn(` Failed to start service: ${startResult.message}`);
103
+ }
104
+ }
105
+ } else {
106
+ console.error(`Failed to install ${name}: ${result.message}`);
107
+ process.exit(1);
108
+ }
109
+ } catch (error) {
110
+ console.error(`Install failed:`, error);
111
+ process.exit(1);
112
+ } finally {
113
+ await stopBridge();
114
+ }
115
+ }
116
+
117
+ async function handleUpdate(args: string[]): Promise<void> {
118
+ if (args.length === 0) {
119
+ console.error("Usage: pkg-ops update <package>");
120
+ process.exit(1);
121
+ }
122
+
123
+ const packageName = args[0];
124
+
125
+ if (!isValidPackageName(packageName)) {
126
+ console.error(`Invalid package name. Only @ebowwa/* packages are supported.`);
127
+ process.exit(1);
128
+ }
129
+
130
+ console.log(`Updating ${packageName}...`);
131
+
132
+ try {
133
+ const bridge = await startBridge();
134
+ const result = await bridge.update(packageName);
135
+
136
+ if (result.success) {
137
+ console.log(`Successfully updated ${packageName} to ${result.version}`);
138
+ if (result.previousVersion) {
139
+ console.log(` Previous version: ${result.previousVersion}`);
140
+ }
141
+
142
+ // Update config
143
+ updatePackageConfig(packageName, {
144
+ version: result.version,
145
+ service: packageName.replace("@ebowwa/", ""),
146
+ });
147
+
148
+ // Restart service if running
149
+ const sm = getServiceManager();
150
+ const config = getPackageConfig(packageName);
151
+ if (config?.service) {
152
+ const status = await sm.status(config.service);
153
+ if (status.active) {
154
+ await sm.restart(config.service);
155
+ console.log(` Service ${config.service} restarted`);
156
+ }
157
+ }
158
+ } else {
159
+ console.error(`Failed to update ${packageName}: ${result.message}`);
160
+ process.exit(1);
161
+ }
162
+ } catch (error) {
163
+ console.error(`Update failed:`, error);
164
+ process.exit(1);
165
+ } finally {
166
+ await stopBridge();
167
+ }
168
+ }
169
+
170
+ async function handleUpdateAll(_args: string[]): Promise<void> {
171
+ console.log("Updating all managed packages...");
172
+
173
+ try {
174
+ const bridge = await startBridge();
175
+ const results = await bridge.updateAll();
176
+
177
+ for (const result of results) {
178
+ if (result.success) {
179
+ console.log(`Updated ${result.version}`);
180
+ } else {
181
+ console.error(`Failed to update: ${result.message}`);
182
+ }
183
+ }
184
+ } catch (error) {
185
+ console.error("Update all failed:", error);
186
+ process.exit(1);
187
+ } finally {
188
+ await stopBridge();
189
+ }
190
+ }
191
+
192
+ async function handleList(_args: string[]): Promise<void> {
193
+ console.log("Installed packages:\n");
194
+
195
+ try {
196
+ const bridge = await startBridge();
197
+ const packages = await bridge.list();
198
+
199
+ if (packages.length === 0) {
200
+ console.log(" No packages installed");
201
+ return;
202
+ }
203
+
204
+ for (const pkg of packages) {
205
+ const status = pkg.installed ? "installed" : "not installed";
206
+ const service = pkg.service ? ` (service: ${pkg.service})` : "";
207
+ console.log(` ${pkg.name}@${pkg.version} [${status}]${service}`);
208
+ }
209
+ } catch (error) {
210
+ console.error("Failed to list packages:", error);
211
+ process.exit(1);
212
+ } finally {
213
+ await stopBridge();
214
+ }
215
+ }
216
+
217
+ async function handleRollback(args: string[]): Promise<void> {
218
+ if (args.length === 0) {
219
+ console.error("Usage: pkg-ops rollback <package>");
220
+ process.exit(1);
221
+ }
222
+
223
+ const packageName = args[0];
224
+
225
+ console.log(`Rolling back ${packageName}...`);
226
+
227
+ try {
228
+ const bridge = await startBridge();
229
+ const result = await bridge.rollback(packageName);
230
+
231
+ if (result.success) {
232
+ console.log(`Rolled back ${packageName} from ${result.currentVersion} to ${result.previousVersion}`);
233
+
234
+ // Restart service if running
235
+ const sm = getServiceManager();
236
+ const config = getPackageConfig(packageName);
237
+ if (config?.service) {
238
+ const status = await sm.status(config.service);
239
+ if (status.active) {
240
+ await sm.restart(config.service);
241
+ console.log(` Service ${config.service} restarted`);
242
+ }
243
+ }
244
+ } else {
245
+ console.error(`Rollback failed: ${result.message}`);
246
+ process.exit(1);
247
+ }
248
+ } catch (error) {
249
+ console.error("Rollback failed:", error);
250
+ process.exit(1);
251
+ } finally {
252
+ await stopBridge();
253
+ }
254
+ }
255
+
256
+ // ---------------------------------------------------------------------------
257
+ // Service Management Commands
258
+ // ---------------------------------------------------------------------------
259
+
260
+ async function handleServiceStart(args: string[]): Promise<void> {
261
+ if (args.length === 0) {
262
+ console.error("Usage: pkg-ops service start <name>");
263
+ process.exit(1);
264
+ }
265
+
266
+ const serviceName = args[0];
267
+ const sm = getServiceManager();
268
+
269
+ console.log(`Starting ${serviceName}...`);
270
+ const result = await sm.start(serviceName);
271
+
272
+ if (result.success) {
273
+ console.log(`Service ${serviceName} started`);
274
+ } else {
275
+ console.error(`Failed to start ${serviceName}: ${result.message}`);
276
+ process.exit(1);
277
+ }
278
+ }
279
+
280
+ async function handleServiceStop(args: string[]): Promise<void> {
281
+ if (args.length === 0) {
282
+ console.error("Usage: pkg-ops service stop <name>");
283
+ process.exit(1);
284
+ }
285
+
286
+ const serviceName = args[0];
287
+ const sm = getServiceManager();
288
+
289
+ console.log(`Stopping ${serviceName}...`);
290
+ const result = await sm.stop(serviceName);
291
+
292
+ if (result.success) {
293
+ console.log(`Service ${serviceName} stopped`);
294
+ } else {
295
+ console.error(`Failed to stop ${serviceName}: ${result.message}`);
296
+ process.exit(1);
297
+ }
298
+ }
299
+
300
+ async function handleServiceRestart(args: string[]): Promise<void> {
301
+ if (args.length === 0) {
302
+ console.error("Usage: pkg-ops service restart <name>");
303
+ process.exit(1);
304
+ }
305
+
306
+ const serviceName = args[0];
307
+ const sm = getServiceManager();
308
+
309
+ console.log(`Restarting ${serviceName}...`);
310
+ const result = await sm.restart(serviceName);
311
+
312
+ if (result.success) {
313
+ console.log(`Service ${serviceName} restarted`);
314
+ } else {
315
+ console.error(`Failed to restart ${serviceName}: ${result.message}`);
316
+ process.exit(1);
317
+ }
318
+ }
319
+
320
+ async function handleServiceStatus(args: string[]): Promise<void> {
321
+ if (args.length === 0) {
322
+ console.error("Usage: pkg-ops service status <name>");
323
+ process.exit(1);
324
+ }
325
+
326
+ const serviceName = args[0];
327
+ const sm = getServiceManager();
328
+
329
+ const info = await sm.info(serviceName);
330
+
331
+ if (!info.exists) {
332
+ console.log(`Service ${serviceName} not found`);
333
+ return;
334
+ }
335
+
336
+ console.log(`Service: ${serviceName}`);
337
+ console.log(` Loaded: ${info.status.loaded}`);
338
+ console.log(` Active: ${info.status.active}`);
339
+ console.log(` State: ${info.status.subState}`);
340
+ console.log(` PID: ${info.status.mainPid || "N/A"}`);
341
+ console.log(` Description: ${info.status.description || "N/A"}`);
342
+ }
343
+
344
+ async function handleServiceLogs(args: string[]): Promise<void> {
345
+ if (args.length === 0) {
346
+ console.error("Usage: pkg-ops service logs <name> [--lines N]");
347
+ process.exit(1);
348
+ }
349
+
350
+ const serviceName = args[0];
351
+ const linesIndex = args.indexOf("--lines");
352
+ const lines = linesIndex >= 0 && args[linesIndex + 1]
353
+ ? parseInt(args[linesIndex + 1], 10)
354
+ : 100;
355
+
356
+ const sm = getServiceManager();
357
+ const logs = await sm.logs(serviceName, { lines });
358
+
359
+ console.log(logs);
360
+ }
361
+
362
+ async function handleServiceEnable(args: string[]): Promise<void> {
363
+ if (args.length === 0) {
364
+ console.error("Usage: pkg-ops service enable <name>");
365
+ process.exit(1);
366
+ }
367
+
368
+ const serviceName = args[0];
369
+ const sm = getServiceManager();
370
+
371
+ console.log(`Enabling ${serviceName}...`);
372
+ const result = await sm.enable(serviceName);
373
+
374
+ if (result.success) {
375
+ console.log(`Service ${serviceName} enabled on boot`);
376
+ } else {
377
+ console.error(`Failed to enable ${serviceName}: ${result.message}`);
378
+ process.exit(1);
379
+ }
380
+ }
381
+
382
+ async function handleServiceDisable(args: string[]): Promise<void> {
383
+ if (args.length === 0) {
384
+ console.error("Usage: pkg-ops service disable <name>");
385
+ process.exit(1);
386
+ }
387
+
388
+ const serviceName = args[0];
389
+ const sm = getServiceManager();
390
+
391
+ console.log(`Disabling ${serviceName}...`);
392
+ const result = await sm.disable(serviceName);
393
+
394
+ if (result.success) {
395
+ console.log(`Service ${serviceName} disabled from boot`);
396
+ } else {
397
+ console.error(`Failed to disable ${serviceName}: ${result.message}`);
398
+ process.exit(1);
399
+ }
400
+ }
401
+
402
+ // ---------------------------------------------------------------------------
403
+ // Health Commands
404
+ // ---------------------------------------------------------------------------
405
+
406
+ async function handleHealth(args: string[]): Promise<void> {
407
+ const serviceName = args[0];
408
+
409
+ const healthServer = getHealthServer();
410
+ if (!healthServer) {
411
+ console.error("Health server not initialized");
412
+ process.exit(1);
413
+ }
414
+
415
+ const health = await healthServer.checkHealth(serviceName);
416
+
417
+ if (!health) {
418
+ console.log("Service not found");
419
+ return;
420
+ }
421
+
422
+ if ("services" in health) {
423
+ // SystemHealth
424
+ if (health.healthy) {
425
+ console.log("All services healthy");
426
+ } else {
427
+ console.log("Some services unhealthy");
428
+ }
429
+
430
+ for (const service of health.services) {
431
+ const icon = service.healthy ? "OK" : "FAIL";
432
+ console.log(` [${icon}] ${service.name}: ${service.status.subState}`);
433
+ }
434
+ } else {
435
+ // ServiceHealth
436
+ const icon = health.healthy ? "OK" : "FAIL";
437
+ console.log(`[${icon}] ${health.name}: ${health.status.subState}`);
438
+ }
439
+ }
440
+
441
+ // ---------------------------------------------------------------------------
442
+ // Config Commands
443
+ // ---------------------------------------------------------------------------
444
+
445
+ async function handleConfigShow(_args: string[]): Promise<void> {
446
+ const config = loadConfig();
447
+
448
+ console.log("VPS Manager Configuration");
449
+ console.log(`Config path: /etc/pkg-ops/config.json`);
450
+ console.log(`Health port: ${config.healthPort}`);
451
+ console.log(`Work dir: ${config.workDir}`);
452
+ console.log(`Log level: ${config.logLevel}`);
453
+ console.log("\nPackages:");
454
+
455
+ const packages = listManagedPackages();
456
+ if (packages.length === 0) {
457
+ console.log(" No packages configured");
458
+ return;
459
+ }
460
+
461
+ for (const { name, config: pkgConfig } of packages) {
462
+ console.log(` ${name}:`);
463
+ console.log(` Version: ${pkgConfig.version}`);
464
+ if (pkgConfig.service) {
465
+ console.log(` Service: ${pkgConfig.service}`);
466
+ }
467
+ if (pkgConfig.autoStart !== undefined) {
468
+ console.log(` Auto-start: ${pkgConfig.autoStart}`);
469
+ }
470
+ }
471
+ }
472
+
473
+ async function handleConfigSet(args: string[]): Promise<void> {
474
+ if (args.length < 3) {
475
+ console.error("Usage: pkg-ops config set <package> <key> <value>");
476
+ process.exit(1);
477
+ }
478
+
479
+ const packageName = args[0];
480
+ const key = args[1];
481
+ const value = args[2];
482
+
483
+ if (!isValidPackageName(packageName)) {
484
+ console.error(`Invalid package name. Only @ebowwa/* packages are supported.`);
485
+ process.exit(1);
486
+ }
487
+
488
+ const config = getPackageConfig(packageName) ?? {
489
+ version: "latest",
490
+ };
491
+
492
+ // Handle different value types
493
+ switch (key) {
494
+ case "version":
495
+ config.version = value;
496
+ break;
497
+ case "service":
498
+ config.service = value;
499
+ break;
500
+ case "autoStart":
501
+ config.autoStart = value === "true";
502
+ break;
503
+ default:
504
+ console.error(`Unknown config key: ${key}`);
505
+ console.error("Valid keys: version, service, autoStart");
506
+ process.exit(1);
507
+ }
508
+
509
+ updatePackageConfig(packageName, config);
510
+ console.log(`Updated ${packageName}.${key} = ${value}`);
511
+ }
512
+
513
+ // ---------------------------------------------------------------------------
514
+ // Verification & Audit Commands
515
+ // ---------------------------------------------------------------------------
516
+
517
+ async function handleVerify(args: string[]): Promise<void> {
518
+ if (args.length === 0) {
519
+ console.error("Usage: pkg-ops verify <package>");
520
+ process.exit(1);
521
+ }
522
+
523
+ const packageName = args[0];
524
+
525
+ if (!isValidPackageName(packageName)) {
526
+ console.error(`Invalid package name. Only @ebowwa/* packages are supported.`);
527
+ process.exit(1);
528
+ }
529
+
530
+ console.log(`Verifying ${packageName}...`);
531
+
532
+ try {
533
+ const bridge = await startBridge();
534
+ const result = await bridge.verify(packageName);
535
+
536
+ console.log(`\nPackage: ${result.packageName}@${result.version}`);
537
+ console.log(` Status: ${result.success ? "VALID" : "INVALID"}`);
538
+ console.log(` Dist exists: ${result.distExists ? "Yes" : "No"}`);
539
+ if (result.checksum) {
540
+ console.log(` Checksum: ${result.checksum}`);
541
+ }
542
+ console.log(` Message: ${result.message}`);
543
+ } catch (error) {
544
+ console.error("Verification failed:", error);
545
+ process.exit(1);
546
+ } finally {
547
+ await stopBridge();
548
+ }
549
+ }
550
+
551
+ async function handleSyncStatus(args: string[]): Promise<void> {
552
+ const localIndex = args.indexOf("--local");
553
+ const localPathIndex = args.indexOf("--local-path");
554
+
555
+ let localPath = "./package.json";
556
+ if (localPathIndex >= 0 && args[localPathIndex + 1]) {
557
+ localPath = args[localPathIndex + 1];
558
+ }
559
+
560
+ const showLocal = localIndex >= 0 || localPathIndex >= 0;
561
+
562
+ try {
563
+ const bridge = await startBridge();
564
+ const vpsPackages = await bridge.getInstalledInfo();
565
+
566
+ console.log("Sync Status: Local vs VPS\n");
567
+
568
+ if (showLocal && existsSync(localPath)) {
569
+ const localContent = readFileSync(localPath, "utf-8");
570
+ const localPkg = JSON.parse(localContent);
571
+ const deps = { ...localPkg.dependencies, ...localPkg.devDependencies };
572
+
573
+ // Build a map of VPS packages
574
+ const vpsMap = new Map<string, string>();
575
+ for (const pkg of vpsPackages) {
576
+ vpsMap.set(pkg.packageName, pkg.version);
577
+ }
578
+
579
+ // Compare local vs VPS
580
+ for (const [name, localVersion] of Object.entries(deps)) {
581
+ if (!name.startsWith("@ebowwa/")) continue;
582
+
583
+ const vpsVersion = vpsMap.get(name);
584
+ const cleanLocal = (localVersion as string).replace(/^[\^~]/, "");
585
+
586
+ if (vpsVersion) {
587
+ if (cleanLocal === vpsVersion) {
588
+ console.log(` ${name}: local=${cleanLocal}, vps=${vpsVersion} (in sync)`);
589
+ } else if (cleanLocal > vpsVersion) {
590
+ console.log(` ${name}: local=${cleanLocal}, vps=${vpsVersion} (VPS behind)`);
591
+ } else {
592
+ console.log(` ${name}: local=${cleanLocal}, vps=${vpsVersion} (local behind)`);
593
+ }
594
+ vpsMap.delete(name);
595
+ } else {
596
+ console.log(` ${name}: local=${cleanLocal}, vps=not installed`);
597
+ }
598
+ }
599
+
600
+ // Show VPS-only packages
601
+ for (const [name, version] of vpsMap) {
602
+ console.log(` ${name}: local=not in package.json, vps=${version}`);
603
+ }
604
+ } else {
605
+ // Just show VPS installed versions
606
+ if (vpsPackages.length === 0) {
607
+ console.log(" No packages installed on VPS");
608
+ } else {
609
+ for (const pkg of vpsPackages) {
610
+ const sizeInfo = pkg.distSizeBytes
611
+ ? ` (${(pkg.distSizeBytes / 1024).toFixed(1)} KB)`
612
+ : "";
613
+ console.log(` ${pkg.packageName}@${pkg.version}${sizeInfo}`);
614
+ }
615
+ }
616
+ }
617
+ } catch (error) {
618
+ console.error("Failed to get sync status:", error);
619
+ process.exit(1);
620
+ } finally {
621
+ await stopBridge();
622
+ }
623
+ }
624
+
625
+ async function handleAudit(_args: string[]): Promise<void> {
626
+ console.log("Running vulnerability scan...\n");
627
+
628
+ try {
629
+ const bridge = await startBridge();
630
+ const results = await bridge.audit();
631
+
632
+ if (results.length === 0) {
633
+ console.log("No vulnerabilities found.");
634
+ return;
635
+ }
636
+
637
+ console.log(`Found ${results.length} vulnerability(es):\n`);
638
+
639
+ for (const vuln of results) {
640
+ console.log(`[${vuln.severity.toUpperCase()}] ${vuln.packageName}`);
641
+ console.log(` Vulnerability: ${vuln.vulnerability}`);
642
+ console.log(` Description: ${vuln.description}`);
643
+ console.log("");
644
+ }
645
+ } catch (error) {
646
+ console.error("Audit failed:", error);
647
+ process.exit(1);
648
+ } finally {
649
+ await stopBridge();
650
+ }
651
+ }
652
+
653
+ async function handleScan(args: string[]): Promise<void> {
654
+ // Alias for audit
655
+ await handleAudit(args);
656
+ }
657
+
658
+ async function handleSizes(_args: string[]): Promise<void> {
659
+ console.log("Bundle sizes:\n");
660
+
661
+ try {
662
+ const bridge = await startBridge();
663
+ const sizes = await bridge.getBundleSizes();
664
+
665
+ if (sizes.length === 0) {
666
+ console.log(" No packages installed");
667
+ return;
668
+ }
669
+
670
+ // Print table header
671
+ console.log(" Package | Version | Dist Size");
672
+ console.log(" --------------------------------|----------|-----------");
673
+
674
+ for (const pkg of sizes) {
675
+ const name = pkg.packageName.padEnd(32);
676
+ const version = pkg.version.padEnd(9);
677
+ const sizeKB = (pkg.distSizeBytes / 1024).toFixed(1) + " KB";
678
+ const files = pkg.fileCount ? ` (${pkg.fileCount} files)` : "";
679
+ console.log(` ${name} | ${version} | ${sizeKB}${files}`);
680
+ }
681
+ } catch (error) {
682
+ console.error("Failed to get bundle sizes:", error);
683
+ process.exit(1);
684
+ } finally {
685
+ await stopBridge();
686
+ }
687
+ }
688
+
689
+ // ---------------------------------------------------------------------------
690
+ // CLI Entry Point
691
+ // ---------------------------------------------------------------------------
692
+
693
+ const commands: Command[] = [
694
+ // Package management
695
+ { name: "install", description: "Install an @ebowwa/* package", usage: "pkg-ops install <package>[@version]", handler: handleInstall },
696
+ { name: "update", description: "Update a package to latest version", usage: "pkg-ops update <package>", handler: handleUpdate },
697
+ { name: "update-all", description: "Update all managed packages", usage: "pkg-ops update-all", handler: handleUpdateAll },
698
+ { name: "list", description: "List installed packages", usage: "pkg-ops list", handler: handleList },
699
+ { name: "rollback", description: "Rollback a package to previous version", usage: "pkg-ops rollback <package>", handler: handleRollback },
700
+ // Service management
701
+ { name: "start", description: "Start a systemd service", usage: "pkg-ops service start <name>", handler: handleServiceStart },
702
+ { name: "stop", description: "Stop a systemd service", usage: "pkg-ops service stop <name>", handler: handleServiceStop },
703
+ { name: "restart", description: "Restart a systemd service", usage: "pkg-ops service restart <name>", handler: handleServiceRestart },
704
+ { name: "status", description: "Get service status", usage: "pkg-ops service status <name>", handler: handleServiceStatus },
705
+ { name: "logs", description: "View service logs", usage: "pkg-ops service logs <name> [--lines N]", handler: handleServiceLogs },
706
+ { name: "enable", description: "Enable service on boot", usage: "pkg-ops service enable <name>", handler: handleServiceEnable },
707
+ { name: "disable", description: "Disable service from boot", usage: "pkg-ops service disable <name>", handler: handleServiceDisable },
708
+ // Health
709
+ { name: "health", description: "Check health of all services", usage: "pkg-ops health [service]", handler: handleHealth },
710
+ // Config
711
+ { name: "config", description: "Show configuration", usage: "pkg-ops config show", handler: handleConfigShow },
712
+ { name: "set-config", description: "Set a config value", usage: "pkg-ops config set <package> <key> <value>", handler: handleConfigSet },
713
+ // Verification & Audit
714
+ { name: "verify", description: "Verify package integrity", usage: "pkg-ops verify <package>", handler: handleVerify },
715
+ { name: "sync-status", description: "Show local vs VPS version sync", usage: "pkg-ops sync-status [--local-path path]", handler: handleSyncStatus },
716
+ { name: "audit", description: "Check for vulnerabilities", usage: "pkg-ops audit", handler: handleAudit },
717
+ { name: "scan", description: "Alias for audit", usage: "pkg-ops scan", handler: handleScan },
718
+ { name: "sizes", description: "Show bundle sizes", usage: "pkg-ops sizes", handler: handleSizes },
719
+ ];
720
+
721
+ const serviceCommands: Subcommand[] = [
722
+ { name: "start", description: "Start a systemd service", usage: "pkg-ops service start <name>", handler: handleServiceStart },
723
+ { name: "stop", description: "Stop a systemd service", usage: "pkg-ops service stop <name>", handler: handleServiceStop },
724
+ { name: "restart", description: "Restart a systemd service", usage: "pkg-ops service restart <name>", handler: handleServiceRestart },
725
+ { name: "status", description: "Get service status", usage: "pkg-ops service status <name>", handler: handleServiceStatus },
726
+ { name: "logs", description: "View service logs", usage: "pkg-ops service logs <name> [--lines N]", handler: handleServiceLogs },
727
+ { name: "enable", description: "Enable service on boot", usage: "pkg-ops service enable <name>", handler: handleServiceEnable },
728
+ { name: "disable", description: "Disable service from boot", usage: "pkg-ops service disable <name>", handler: handleServiceDisable },
729
+ ];
730
+
731
+ const configCommands: Subcommand[] = [
732
+ { name: "show", description: "Show configuration", usage: "pkg-ops config show", handler: handleConfigShow },
733
+ { name: "set", description: "Set a config value", usage: "pkg-ops config set <package> <key> <value>", handler: handleConfigSet },
734
+ ];
735
+
736
+ function printHelp(): void {
737
+ console.log(`
738
+ VPS Manager - Unified package manager for VPS
739
+
740
+ Usage:
741
+ pkg-ops <command> [arguments]
742
+
743
+ Package Management:
744
+ install <package>[@version] Install an @ebowwa/* package
745
+ update <package> Update a package to latest version
746
+ update-all Update all managed packages
747
+ list List installed packages
748
+ rollback <package> Rollback a package to previous version
749
+
750
+ Service Management:
751
+ service start <name> Start a systemd service
752
+ service stop <name> Stop a systemd service
753
+ service restart <name> Restart a systemd service
754
+ service status <name> Get service status
755
+ service logs <name> [--lines N] View service logs
756
+ service enable <name> Enable service on boot
757
+ service disable <name> Disable service from boot
758
+
759
+ Health:
760
+ health [service] Check health of all services or specific one
761
+
762
+ Verification & Audit:
763
+ verify <package> Verify package integrity
764
+ sync-status [--local-path p] Show local vs VPS version sync
765
+ audit Check for vulnerabilities
766
+ scan Alias for audit
767
+ sizes Show bundle sizes
768
+
769
+ Config:
770
+ config show Show configuration
771
+ config set <pkg> <key> <val> Set a config value
772
+
773
+ Options:
774
+ --help, -h Show this help message
775
+ --version, -v Show version
776
+
777
+ Examples:
778
+ pkg-ops install @ebowwa/stack@0.7.12
779
+ pkg-ops service start stack
780
+ pkg-ops health
781
+ pkg-ops sync-status --local-path ./package.json
782
+ pkg-ops verify @ebowwa/stack
783
+ pkg-ops audit
784
+ `);
785
+ }
786
+
787
+ async function main(): Promise<void> {
788
+ const args = process.argv.slice(2);
789
+
790
+ if (args.length === 0 || args[0] === "--help" || args[0] === "-h") {
791
+ printHelp();
792
+ process.exit(0);
793
+ }
794
+
795
+ if (args[0] === "--version" || args[0] === "-v") {
796
+ const config = loadConfig();
797
+ console.log(`pkg-ops ${config.packages?.["@ebowwa/pkg-ops"]?.version ?? "0.1.0"}`);
798
+ process.exit(0);
799
+ }
800
+
801
+ const commandName = args[0];
802
+ const commandArgs = args.slice(1);
803
+
804
+ // Handle service subcommands
805
+ if (commandName === "service") {
806
+ if (commandArgs.length === 0) {
807
+ console.error("Missing service subcommand");
808
+ console.error("Usage: pkg-ops service <start|stop|restart|status|logs|enable|disable> <name>");
809
+ process.exit(1);
810
+ }
811
+
812
+ const subcommandName = commandArgs[0];
813
+ const subcommand = serviceCommands.find((c) => c.name === subcommandName);
814
+
815
+ if (!subcommand) {
816
+ console.error(`Unknown service subcommand: ${subcommandName}`);
817
+ process.exit(1);
818
+ }
819
+
820
+ await subcommand.handler(commandArgs.slice(1));
821
+ return;
822
+ }
823
+
824
+ // Handle config subcommands
825
+ if (commandName === "config") {
826
+ if (commandArgs.length === 0) {
827
+ console.error("Missing config subcommand");
828
+ console.error("Usage: pkg-ops config <show|set> [args...]");
829
+ process.exit(1);
830
+ }
831
+
832
+ const subcommandName = commandArgs[0];
833
+ const subcommand = configCommands.find((c) => c.name === subcommandName);
834
+
835
+ if (!subcommand) {
836
+ console.error(`Unknown config subcommand: ${subcommandName}`);
837
+ process.exit(1);
838
+ }
839
+
840
+ await subcommand.handler(commandArgs.slice(1));
841
+ return;
842
+ }
843
+
844
+ // Handle regular commands
845
+ const command = commands.find((c) => c.name === commandName);
846
+
847
+ if (!command) {
848
+ console.error(`Unknown command: ${commandName}`);
849
+ console.error("Run 'pkg-ops --help' for usage");
850
+ process.exit(1);
851
+ }
852
+
853
+ await command.handler(commandArgs);
854
+ }
855
+
856
+ // Run CLI
857
+ main().catch((error) => {
858
+ console.error("Fatal error:", error);
859
+ process.exit(1);
860
+ });