@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/README.md ADDED
@@ -0,0 +1,108 @@
1
+ # PkgOps
2
+
3
+ Package operations CLI that installs `@ebowwa/*` npm packages and manages systemd services.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @ebowwa/pkg-ops
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Package Management
14
+
15
+ ```bash
16
+ # Install a package
17
+ pkg-ops install @ebowwa/stack@0.7.12
18
+
19
+ # Update a package
20
+ pkg-ops update @ebowwa/stack
21
+
22
+ # Update all managed packages
23
+ pkg-ops update-all
24
+
25
+ # List installed packages
26
+ pkg-ops list
27
+
28
+ # Rollback a package
29
+ pkg-ops rollback @ebowwa/stack
30
+ ```
31
+
32
+ ### Service Management
33
+
34
+ ```bash
35
+ pkg-ops service start stack
36
+ pkg-ops service stop stack
37
+ pkg-ops service restart stack
38
+ pkg-ops service status stack
39
+ pkg-ops service logs stack
40
+ pkg-ops service enable stack
41
+ pkg-ops service disable stack
42
+ ```
43
+
44
+ ### Health Checks
45
+
46
+ ```bash
47
+ # Check all services
48
+ pkg-ops health
49
+
50
+ # Check specific service
51
+ pkg-ops health stack
52
+ ```
53
+
54
+ ### Configuration
55
+
56
+ ```bash
57
+ # Show config
58
+ pkg-ops config show
59
+
60
+ # Set a config value
61
+ pkg-ops config set @ebowwa/stack version 0.7.13
62
+ ```
63
+
64
+ ### Verification & Audit
65
+
66
+ ```bash
67
+ # Verify package integrity
68
+ pkg-ops verify @ebowwa/stack
69
+
70
+ # Check for vulnerabilities
71
+ pkg-ops audit
72
+
73
+ # Show bundle sizes
74
+ pkg-ops sizes
75
+
76
+ # Compare local vs VPS versions
77
+ pkg-ops sync-status --local-path ./package.json
78
+ ```
79
+
80
+ ## Configuration
81
+
82
+ Config file: `/etc/pkg-ops/config.json`
83
+
84
+ Environment override: `PKG_OPS_CONFIG=/custom/path/config.json`
85
+
86
+ ## Development
87
+
88
+ ```bash
89
+ # Build TypeScript
90
+ bun run build
91
+
92
+ # Build Rust core
93
+ bun run build:rust
94
+
95
+ # Run locally
96
+ bun run dev
97
+ ```
98
+
99
+ ## Publishing
100
+
101
+ ```bash
102
+ bun run build
103
+ bun publish
104
+ ```
105
+
106
+ ## License
107
+
108
+ MIT
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Bridge to Rust worker for package operations.
3
+ *
4
+ * Communicates with the Rust core via JSON-RPC 2.0 over stdin/stdout.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { RustBridge } from "@ebowwa/pkg-ops/bridge";
9
+ *
10
+ * const bridge = new RustBridge();
11
+ * await bridge.start();
12
+ *
13
+ * // Install a package
14
+ * const result = await bridge.install("@ebowwa/stack", "0.7.12");
15
+ * console.log(result);
16
+ *
17
+ * // List packages
18
+ * const packages = await bridge.list();
19
+ *
20
+ * await bridge.stop();
21
+ * ```
22
+ */
23
+ export interface InstallResult {
24
+ success: boolean;
25
+ version: string;
26
+ previousVersion?: string;
27
+ message: string;
28
+ }
29
+ export interface PackageInfo {
30
+ name: string;
31
+ version: string;
32
+ installed: boolean;
33
+ service?: string;
34
+ }
35
+ export interface RollbackResult {
36
+ success: boolean;
37
+ previousVersion: string;
38
+ currentVersion: string;
39
+ message: string;
40
+ }
41
+ export interface HealthCheckResult {
42
+ healthy: boolean;
43
+ services: Array<{
44
+ name: string;
45
+ status: string;
46
+ pid: number;
47
+ }>;
48
+ }
49
+ export interface VerifyResult {
50
+ packageName: string;
51
+ version: string;
52
+ success: boolean;
53
+ distExists: boolean;
54
+ checksum: string | null;
55
+ message: string;
56
+ }
57
+ export interface AuditResult {
58
+ packageName: string;
59
+ severity: string;
60
+ vulnerability: string;
61
+ description: string;
62
+ }
63
+ export interface BundleSize {
64
+ packageName: string;
65
+ version: string;
66
+ distSizeBytes: number;
67
+ fileCount: number;
68
+ }
69
+ export interface InstalledPackageInfo {
70
+ packageName: string;
71
+ version: string;
72
+ distSizeBytes: number | null;
73
+ installedAt: string | null;
74
+ }
75
+ /**
76
+ * Bridge to the Rust worker process.
77
+ *
78
+ * Handles JSON-RPC communication over stdin/stdout.
79
+ */
80
+ export declare class RustBridge {
81
+ private process;
82
+ private pendingRequests;
83
+ private requestId;
84
+ private buffer;
85
+ /**
86
+ * Start the Rust worker process.
87
+ */
88
+ start(): Promise<void>;
89
+ /**
90
+ * Stop the Rust worker process.
91
+ */
92
+ stop(): Promise<void>;
93
+ /**
94
+ * Install a package.
95
+ */
96
+ install(packageName: string, version: string): Promise<InstallResult>;
97
+ /**
98
+ * Update a package to latest version.
99
+ */
100
+ update(packageName: string): Promise<InstallResult>;
101
+ /**
102
+ * Update all managed packages.
103
+ */
104
+ updateAll(): Promise<InstallResult[]>;
105
+ /**
106
+ * List installed packages.
107
+ */
108
+ list(): Promise<PackageInfo[]>;
109
+ /**
110
+ * Rollback a package to previous version.
111
+ */
112
+ rollback(packageName: string): Promise<RollbackResult>;
113
+ /**
114
+ * Check health of all services.
115
+ */
116
+ health(): Promise<HealthCheckResult>;
117
+ /**
118
+ * Verify package integrity.
119
+ */
120
+ verify(packageName: string): Promise<VerifyResult>;
121
+ /**
122
+ * Run vulnerability scan.
123
+ */
124
+ audit(): Promise<AuditResult[]>;
125
+ /**
126
+ * Get bundle sizes.
127
+ */
128
+ getBundleSizes(): Promise<BundleSize[]>;
129
+ /**
130
+ * Get detailed installed package info.
131
+ */
132
+ getInstalledInfo(): Promise<InstalledPackageInfo[]>;
133
+ private getBinaryPath;
134
+ private sendRequest;
135
+ private processBuffer;
136
+ }
137
+ /**
138
+ * Get the default bridge instance.
139
+ */
140
+ export declare function getBridge(): RustBridge;
141
+ /**
142
+ * Start the default bridge.
143
+ */
144
+ export declare function startBridge(): Promise<RustBridge>;
145
+ /**
146
+ * Stop the default bridge.
147
+ */
148
+ export declare function stopBridge(): Promise<void>;
149
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA8BD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,eAAe,CAIlB;IACL,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAM;IAEpB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI3E;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIzD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAI3C;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIpC;;OAEG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI5D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI1C;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIxD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIrC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAI7C;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAQzD,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,WAAW;IAwCnB,OAAO,CAAC,aAAa;CA0BtB;AAQD;;GAEG;AACH,wBAAgB,SAAS,IAAI,UAAU,CAKtC;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC,CAIvD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhD"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Configuration management for PkgOps.
3
+ *
4
+ * Handles reading/writing config file at /etc/pkg-ops/config.json
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { loadConfig, saveConfig, getConfigPath } from "@ebowwa/pkg-ops/config";
9
+ *
10
+ * const config = await loadConfig();
11
+ * console.log(config.packages);
12
+ *
13
+ * config.packages["@ebowwa/stack"] = { version: "0.7.13", service: "stack.service" };
14
+ * await saveConfig(config);
15
+ * ```
16
+ */
17
+ export interface PackageConfig {
18
+ /** Package version (semver or "latest") */
19
+ version: string;
20
+ /** Associated systemd service name (without .service suffix) */
21
+ service?: string;
22
+ /** Whether to auto-start the service after install */
23
+ autoStart?: boolean;
24
+ /** Custom environment variables for the service */
25
+ environment?: Record<string, string>;
26
+ }
27
+ export interface PkgOpsConfig {
28
+ /** Managed packages */
29
+ packages: Record<string, PackageConfig>;
30
+ /** Health check HTTP port (default: 8914) */
31
+ healthPort?: number;
32
+ /** Working directory for installations (default: /opt/pkg-ops) */
33
+ workDir?: string;
34
+ /** Log level (default: "info") */
35
+ logLevel?: "debug" | "info" | "warn" | "error";
36
+ }
37
+ export declare const DEFAULT_CONFIG: PkgOpsConfig;
38
+ export declare const CONFIG_DIR = "/etc/pkg-ops";
39
+ export declare const CONFIG_PATH = "/etc/pkg-ops/config.json";
40
+ /**
41
+ * Get the config file path.
42
+ * Respects PKG_OPS_CONFIG env override.
43
+ */
44
+ export declare function getConfigPath(): string;
45
+ /**
46
+ * Ensure config directory exists (requires sudo on most systems).
47
+ */
48
+ export declare function ensureConfigDir(): void;
49
+ /**
50
+ * Load configuration from file.
51
+ * Returns default config if file doesn't exist.
52
+ */
53
+ export declare function loadConfig(): PkgOpsConfig;
54
+ /**
55
+ * Save configuration to file.
56
+ * Creates directory if it doesn't exist.
57
+ */
58
+ export declare function saveConfig(config: PkgOpsConfig): void;
59
+ /**
60
+ * Update a package in the config.
61
+ */
62
+ export declare function updatePackageConfig(packageName: string, packageConfig: PackageConfig): PkgOpsConfig;
63
+ /**
64
+ * Remove a package from the config.
65
+ */
66
+ export declare function removePackageConfig(packageName: string): PkgOpsConfig;
67
+ /**
68
+ * Get a specific package config.
69
+ */
70
+ export declare function getPackageConfig(packageName: string): PackageConfig | undefined;
71
+ /**
72
+ * List all managed packages.
73
+ */
74
+ export declare function listManagedPackages(): Array<{
75
+ name: string;
76
+ config: PackageConfig;
77
+ }>;
78
+ /**
79
+ * Validate package name (must be @ebowwa/* scope).
80
+ */
81
+ export declare function isValidPackageName(name: string): boolean;
82
+ /**
83
+ * Parse package specifier into name and version.
84
+ * @example
85
+ * parsePackageSpec("@ebowwa/stack@0.7.12") => { name: "@ebowwa/stack", version: "0.7.12" }
86
+ * parsePackageSpec("@ebowwa/stack") => { name: "@ebowwa/stack", version: "latest" }
87
+ */
88
+ export declare function parsePackageSpec(spec: string): {
89
+ name: string;
90
+ version: string;
91
+ };
92
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD;AAMD,eAAO,MAAM,cAAc,EAAE,YAK5B,CAAC;AAEF,eAAO,MAAM,UAAU,iBAAiB,CAAC;AACzC,eAAO,MAAM,WAAW,6BAA8B,CAAC;AAMvD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAoBzC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CASrD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,aAAa,GAC3B,YAAY,CAKd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAKrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAG/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAGpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAehF"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Health monitoring HTTP server.
3
+ *
4
+ * Provides an HTTP endpoint for health checks on port 8914 (configurable).
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { HealthServer, startHealthServer } from "@ebowwa/pkg-ops/health-server";
9
+ *
10
+ * // Start health server
11
+ * const server = await startHealthServer(8914);
12
+ *
13
+ * // Custom health checks
14
+ * server.addCheck("custom", async () => ({
15
+ * healthy: true,
16
+ * message: "Custom check passed",
17
+ * }));
18
+ *
19
+ * // Stop server
20
+ * await server.stop();
21
+ * ```
22
+ */
23
+ import { type ServiceStatus } from "./service-manager.js";
24
+ export interface HealthCheckResult {
25
+ /** Whether the check passed */
26
+ healthy: boolean;
27
+ /** Human-readable message */
28
+ message: string;
29
+ /** Additional data */
30
+ data?: Record<string, unknown>;
31
+ }
32
+ export interface ServiceHealth {
33
+ /** Service name */
34
+ name: string;
35
+ /** Whether the service is healthy */
36
+ healthy: boolean;
37
+ /** Service status */
38
+ status: ServiceStatus;
39
+ /** Last check timestamp */
40
+ checkedAt: string;
41
+ }
42
+ export interface SystemHealth {
43
+ /** Overall health status */
44
+ healthy: boolean;
45
+ /** All services health */
46
+ services: ServiceHealth[];
47
+ /** System uptime in seconds */
48
+ uptime: number;
49
+ /** Timestamp of this check */
50
+ timestamp: string;
51
+ }
52
+ export type HealthCheckFn = () => Promise<HealthCheckResult> | HealthCheckResult;
53
+ /**
54
+ * HTTP server for health monitoring.
55
+ */
56
+ export declare class HealthServer {
57
+ private server;
58
+ private checks;
59
+ private startTime;
60
+ private port;
61
+ constructor(port?: number);
62
+ /**
63
+ * Start the health server.
64
+ */
65
+ start(): Promise<void>;
66
+ /**
67
+ * Stop the health server.
68
+ */
69
+ stop(): Promise<void>;
70
+ /**
71
+ * Add a custom health check.
72
+ */
73
+ addCheck(name: string, check: HealthCheckFn): void;
74
+ /**
75
+ * Remove a health check.
76
+ */
77
+ removeCheck(name: string): void;
78
+ /**
79
+ * Check health of all services or a specific service.
80
+ * Public method for CLI usage.
81
+ */
82
+ checkHealth(serviceName?: string): Promise<SystemHealth | ServiceHealth | null>;
83
+ private handleRequest;
84
+ private getSystemHealth;
85
+ private getServiceHealth;
86
+ private sendJson;
87
+ }
88
+ /**
89
+ * Start the health server with config port.
90
+ */
91
+ export declare function startHealthServer(port?: number): Promise<HealthServer>;
92
+ /**
93
+ * Stop the health server.
94
+ */
95
+ export declare function stopHealthServer(): Promise<void>;
96
+ /**
97
+ * Get the health server instance.
98
+ */
99
+ export declare function getHealthServer(): HealthServer | null;
100
+ //# sourceMappingURL=health-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-server.d.ts","sourceRoot":"","sources":["../src/health-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAO7E,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AAMjF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,GAAE,MAAa;IAI/B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAIlD;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACG,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,aAAa,GAAG,IAAI,CAAC;YAWvE,aAAa;YA0Bb,eAAe;YA4Cf,gBAAgB;IAmB9B,OAAO,CAAC,QAAQ;CAKjB;AAQD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAU5E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD"}
@@ -0,0 +1,25 @@
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
+ export {};
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG"}
package/dist/index.js ADDED
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env node
2
+ var LJ=Object.create;var{getPrototypeOf:OJ,defineProperty:l,getOwnPropertyNames:wJ}=Object;var IJ=Object.prototype.hasOwnProperty;var RJ=(J,W,X)=>{X=J!=null?LJ(OJ(J)):{};let Z=W||!J||!J.__esModule?l(X,"default",{value:J,enumerable:!0}):X;for(let K of wJ(J))if(!IJ.call(Z,K))l(Z,K,{get:()=>J[K],enumerable:!0});return Z};var MJ=(J,W)=>()=>(W||J((W={exports:{}}).exports,W),W.exports);var o=MJ((T)=>{var I=T&&T.__assign||function(){return I=Object.assign||function(J){for(var W,X=1,Z=arguments.length;X<Z;X++){W=arguments[X];for(var K in W)if(Object.prototype.hasOwnProperty.call(W,K))J[K]=W[K]}return J},I.apply(this,arguments)},B=T&&T.__awaiter||function(J,W,X,Z){function K($){return $ instanceof X?$:new X(function(Q){Q($)})}return new(X||(X=Promise))(function($,Q){function z(H){try{Y(Z.next(H))}catch(q){Q(q)}}function G(H){try{Y(Z.throw(H))}catch(q){Q(q)}}function Y(H){H.done?$(H.value):K(H.value).then(z,G)}Y((Z=Z.apply(J,W||[])).next())})},A=T&&T.__generator||function(J,W){var X={label:0,sent:function(){if($[0]&1)throw $[1];return $[1]},trys:[],ops:[]},Z,K,$,Q=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return Q.next=z(0),Q.throw=z(1),Q.return=z(2),typeof Symbol==="function"&&(Q[Symbol.iterator]=function(){return this}),Q;function z(Y){return function(H){return G([Y,H])}}function G(Y){if(Z)throw TypeError("Generator is already executing.");while(Q&&(Q=0,Y[0]&&(X=0)),X)try{if(Z=1,K&&($=Y[0]&2?K.return:Y[0]?K.throw||(($=K.return)&&$.call(K),0):K.next)&&!($=$.call(K,Y[1])).done)return $;if(K=0,$)Y=[Y[0]&2,$.value];switch(Y[0]){case 0:case 1:$=Y;break;case 4:return X.label++,{value:Y[1],done:!1};case 5:X.label++,K=Y[1],Y=[0];continue;case 7:Y=X.ops.pop(),X.trys.pop();continue;default:if(($=X.trys,!($=$.length>0&&$[$.length-1]))&&(Y[0]===6||Y[0]===2)){X=0;continue}if(Y[0]===3&&(!$||Y[1]>$[0]&&Y[1]<$[3])){X.label=Y[1];break}if(Y[0]===6&&X.label<$[1]){X.label=$[1],$=Y;break}if($&&X.label<$[2]){X.label=$[2],X.ops.push(Y);break}if($[2])X.ops.pop();X.trys.pop();continue}Y=W.call(J,X)}catch(H){Y=[6,H],K=0}finally{Z=$=0}if(Y[0]&5)throw Y[1];return{value:Y[0]?Y[1]:void 0,done:!0}}},R=T&&T.__spreadArray||function(J,W,X){if(X||arguments.length===2){for(var Z=0,K=W.length,$;Z<K;Z++)if($||!(Z in W)){if(!$)$=Array.prototype.slice.call(W,0,Z);$[Z]=W[Z]}}return J.concat($||Array.prototype.slice.call(W))};Object.defineProperty(T,"__esModule",{value:!0});T.sudo=j;T.pkgInstall=kJ;T.writeFile=fJ;T.service=hJ;T.serviceEnable=_J;T.exec=p;function j(J,W){return B(this,void 0,void 0,function(){var X,Z,K;return A(this,function($){return X=Array.isArray(J)?J:J.split(/\s+/),Z=W.env?Object.entries(W.env).map(function(Q){var z=Q[0],G=Q[1];return"".concat(z,"=").concat(v(G))}):[],K=R(R(["sudo"],Z,!0),X,!0),[2,p(K,W)]})})}var xJ={apt:["apt-get","install","-y"],dnf:["dnf","install","-y"],apk:["apk","add","--no-cache"]},NJ={apt:["apt-get","update","-qq"],dnf:["dnf","check-update"],apk:["apk","update"]};function kJ(J,W){return B(this,void 0,void 0,function(){var X,Z,K;return A(this,function($){switch($.label){case 0:return X=(K=W.pm)!==null&&K!==void 0?K:"apt",Z=I(I({},W.env),W.nonInteractive!==!1?{DEBIAN_FRONTEND:"noninteractive"}:{}),[4,j(NJ[X],I(I({},W),{env:Z,quiet:!0}))];case 1:return $.sent(),[2,j(R(R([],xJ[X],!0),J,!0),I(I({},W),{env:Z}))]}})})}function fJ(J,W,X){return B(this,void 0,void 0,function(){var Z,K,$;return A(this,function(Q){switch(Q.label){case 0:return Z=X.append?"-a":"",K="tee ".concat(Z," ").concat(v(J)).trim(),[4,vJ(W,["sudo",K],X)];case 1:if($=Q.sent(),!($.ok&&X.mode))return[3,3];return[4,j(["chmod",X.mode,J],X)];case 2:Q.sent(),Q.label=3;case 3:if(!($.ok&&X.owner))return[3,5];return[4,j(["chown",X.owner,J],X)];case 4:Q.sent(),Q.label=5;case 5:return[2,$]}})})}function hJ(J,W,X){return B(this,void 0,void 0,function(){return A(this,function(Z){return[2,j(["systemctl",W,J],X)]})})}function _J(J,W){return B(this,void 0,void 0,function(){return A(this,function(X){return[2,j(["systemctl","enable","--now",J],W)]})})}function n(J){var W,X=["ssh","-F","/dev/null","-o","StrictHostKeyChecking=no","-o","UserKnownHostsFile=/dev/null"];if(J.keyPath)X.push("-i",J.keyPath);else if(J.key)X.push("-i",J.key);if(J.port)X.push("-p",String(J.port));return X.push("".concat((W=J.user)!==null&&W!==void 0?W:"root","@").concat(J.host)),X}function p(J,W){return B(this,void 0,void 0,function(){var X,Z,K,$,Q,z,G,Y,H;return A(this,function(q){switch(q.label){case 0:return X=(Y=W.context)!==null&&Y!==void 0?Y:{type:"local"},Z=X.type==="ssh"?R(R([],n(X),!0),[J.map(v).join(" ")],!1):J,K=Bun.spawn(Z,{stdout:"pipe",stderr:"pipe",timeout:(H=W.timeout)!==null&&H!==void 0?H:30000}),[4,K.exited];case 1:if($=q.sent(),!W.quiet)return[3,2];return z="",[3,4];case 2:return[4,new Response(K.stdout).text()];case 3:z=q.sent(),q.label=4;case 4:return Q=z,[4,new Response(K.stderr).text()];case 5:return G=q.sent(),[2,{stdout:Q,stderr:G,exitCode:$,ok:$===0}]}})})}function vJ(J,W,X){return B(this,void 0,void 0,function(){var Z,K,$,Q,z,G,Y,H,q,O,D,E,x,m,N,k,f;return A(this,function(L){switch(L.label){case 0:if(Z=(N=X.context)!==null&&N!==void 0?N:{type:"local"},Z.type!=="ssh")return[3,6];return K=n(Z),$=W.join(" "),Q=R(R([],K,!0),[$],!1),z=Bun.spawn(Q,{stdin:new TextEncoder().encode(J),stdout:"pipe",stderr:"pipe",timeout:(k=X.timeout)!==null&&k!==void 0?k:30000}),[4,z.exited];case 1:if(G=L.sent(),!X.quiet)return[3,2];return H="",[3,4];case 2:return[4,new Response(z.stdout).text()];case 3:H=L.sent(),L.label=4;case 4:return Y=H,[4,new Response(z.stderr).text()];case 5:return q=L.sent(),[2,{stdout:Y,stderr:q,exitCode:G,ok:G===0}];case 6:return O=Bun.spawn(["sh","-c",W.join(" ")],{stdin:new TextEncoder().encode(J),stdout:"pipe",stderr:"pipe",timeout:(f=X.timeout)!==null&&f!==void 0?f:30000}),[4,O.exited];case 7:if(D=L.sent(),!X.quiet)return[3,8];return x="",[3,10];case 8:return[4,new Response(O.stdout).text()];case 9:x=L.sent(),L.label=10;case 10:return E=x,[4,new Response(O.stderr).text()];case 11:return m=L.sent(),[2,{stdout:E,stderr:m,exitCode:D,ok:D===0}]}})})}function v(J){if(/^[a-zA-Z0-9._\-\/=:@]+$/.test(J))return J;return"'".concat(J.replace(/'/g,"'\\''"),"'")}});import{readFileSync as pJ,existsSync as oJ}from"node:fs";import{constants as b,mkdirSync as jJ,readFileSync as BJ,writeFileSync as AJ,existsSync as g}from"node:fs";import{dirname as bJ}from"node:path";var h={packages:{},healthPort:8914,workDir:"/opt/pkg-ops",logLevel:"info"},PJ="/etc/pkg-ops",yJ=`${PJ}/config.json`;function _(){return process.env.PKG_OPS_CONFIG??yJ}function CJ(){let J=bJ(_());if(!g(J))jJ(J,{recursive:!0,mode:b.S_IRWXU|b.S_IRGRP|b.S_IXGRP})}function w(){let J=_();try{if(!g(J))return{...h};let W=BJ(J,"utf-8"),X=JSON.parse(W);return{...h,...X}}catch(W){return console.error(`Failed to load config from ${J}:`,W),{...h}}}function SJ(J){let W=_();CJ();let X=JSON.stringify(J,null,2);AJ(W,X,{encoding:"utf-8",mode:b.S_IRUSR|b.S_IWUSR|b.S_IRGRP})}function S(J,W){let X=w();return X.packages[J]=W,SJ(X),X}function y(J){return w().packages[J]}function c(){let J=w();return Object.entries(J.packages).map(([W,X])=>({name:W,config:X}))}function C(J){return J.startsWith("@ebowwa/")}function i(J){let W=J.lastIndexOf("@");if(W<=0)return{name:J,version:"latest"};let X=J.slice(0,W),Z=J.slice(W+1);if(!Z)return{name:X,version:"latest"};return{name:X,version:Z}}async function M(J,W){let{sudo:X}=await Promise.resolve().then(() => RJ(o(),1));return X(J,W)}async function r(J,W){return M(["systemctl","enable",J],W)}async function t(J,W){return M(["systemctl","disable",J],W)}async function a(J,W){return M(["systemctl","start",J],W)}async function s(J,W){return M(["systemctl","stop",J],W)}async function e(J,W){return M(["systemctl","restart",J],W)}async function JJ(J,W){let X=await M(["systemctl","show",J,"--property=LoadState,ActiveState,SubState,MainPID,Description"],{...W});if(!X.ok)return{loaded:!1,active:!1,subState:"unknown",mainPid:0,description:""};let Z=(K)=>{return X.stdout.match(new RegExp(`^${K}=(.+)$`,"m"))?.[1]?.trim()??""};return{loaded:Z("LoadState")==="loaded",active:Z("ActiveState")==="active",subState:Z("SubState"),mainPid:parseInt(Z("MainPID")||"0",10),description:Z("Description")}}async function WJ(J,W){let X=await M(["systemctl","list-unit-files",J+".service"],{...W,quiet:!0});return X.ok&&X.stdout.includes(J)}async function XJ(J,W={}){let X=["journalctl","-u",J,"-n",String(W.lines??100)];if(W.since)X.push("--since",W.since);if(!W.follow)X.push("-n",String(W.lines??100));return(await M(X,W)).stdout}class ZJ{sudoOptions;constructor(J){this.sudoOptions=J??{context:{type:"local"}}}async start(J){let W=await a(J,this.sudoOptions);return{success:W.ok,message:W.ok?`Service ${J} started`:W.stderr||W.stdout}}async stop(J){let W=await s(J,this.sudoOptions);return{success:W.ok,message:W.ok?`Service ${J} stopped`:W.stderr||W.stdout}}async restart(J){let W=await e(J,this.sudoOptions);return{success:W.ok,message:W.ok?`Service ${J} restarted`:W.stderr||W.stdout}}async status(J){return JJ(J,this.sudoOptions)}async enable(J){let W=await r(J,this.sudoOptions);return{success:W.ok,message:W.ok?`Service ${J} enabled`:W.stderr||W.stdout}}async disable(J){let W=await t(J,this.sudoOptions);return{success:W.ok,message:W.ok?`Service ${J} disabled`:W.stderr||W.stdout}}async exists(J){return WJ(J,this.sudoOptions)}async logs(J,W){return XJ(J,{...this.sudoOptions,lines:W?.lines??100,since:W?.since})}async info(J){let[W,X]=await Promise.all([this.exists(J),this.status(J)]);return{name:J,exists:W,status:X}}async isHealthy(J){let W=await this.status(J);return W.active&&W.subState==="running"}async waitForHealthy(J,W){let X=W?.timeout??30000,Z=W?.interval??1000,K=Date.now();while(Date.now()-K<X){if(await this.isHealthy(J))return!0;await new Promise((Q)=>setTimeout(Q,Z))}return!1}}var u=null;function U(){if(!u)u=new ZJ;return u}import{spawn as uJ}from"child_process";import{accessSync as $J,constants as KJ}from"fs";import{join as d,dirname as dJ}from"path";import{fileURLToPath as mJ}from"url";var lJ=30000;class QJ{process=null;pendingRequests=new Map;requestId=0;buffer="";async start(){if(this.process)return;let J=this.getBinaryPath();try{$J(J,KJ.X_OK)}catch{throw Error(`Rust binary not found at ${J}. Run 'bun run build:rust' in the pkg-ops package.`)}if(this.process=uJ(J,[],{stdio:["pipe","pipe","pipe"]}),!this.process.stdin||!this.process.stdout)throw Error("Failed to create stdin/stdout pipes");this.process.stdout.on("data",(W)=>{this.buffer+=W.toString("utf-8"),this.processBuffer()}),this.process.stderr?.on("data",(W)=>{console.error("[rust-worker]",W.toString("utf-8").trim())}),this.process.on("exit",(W)=>{console.error(`Rust worker exited with code ${W}`),this.process=null})}async stop(){if(!this.process)return;try{await this.sendRequest("shutdown",{})}catch{}if(await new Promise((J)=>setTimeout(J,1000)),this.process)this.process.kill("SIGTERM"),this.process=null;for(let[J,W]of this.pendingRequests)clearTimeout(W.timeout),W.reject(Error("Bridge shutdown"));this.pendingRequests.clear()}async install(J,W){return this.sendRequest("install",{packageName:J,version:W})}async update(J){return this.sendRequest("update",{packageName:J})}async updateAll(){return this.sendRequest("updateAll",{})}async list(){return this.sendRequest("list",{})}async rollback(J){return this.sendRequest("rollback",{packageName:J})}async health(){return this.sendRequest("health",{})}async verify(J){return this.sendRequest("verify",{packageName:J})}async audit(){return this.sendRequest("audit",{})}async getBundleSizes(){return this.sendRequest("sizes",{})}async getInstalledInfo(){return this.sendRequest("installedInfo",{})}getBinaryPath(){let J=dJ(mJ(import.meta.url)),W=[d(J,"..","rust","target","release","pkg-ops-core"),d(J,"..","rust","pkg-ops-core"),d(J,"..","rust","target","x86_64-unknown-linux-gnu","release","pkg-ops-core")];for(let X of W)try{return $J(X,KJ.X_OK),X}catch{}throw Error(`Rust binary not found. Tried:
3
+ ${W.map((X)=>` - ${X}`).join(`
4
+ `)}
5
+ Run 'bun run build:rust' or 'cargo build --release' in the pkg-ops package.`)}sendRequest(J,W){return new Promise((X,Z)=>{if(!this.process?.stdin){Z(Error("Rust worker not started"));return}let K=String(++this.requestId),$={jsonrpc:"2.0",id:K,method:J,params:W},Q=setTimeout(()=>{this.pendingRequests.delete(K),Z(Error(`Request timeout: ${J}`))},lJ);this.pendingRequests.set(K,{resolve:X,reject:Z,timeout:Q});let z=JSON.stringify($)+`
6
+ `;this.process.stdin.write(z,"utf-8",(G)=>{if(G)this.pendingRequests.delete(K),clearTimeout(Q),Z(G)})})}processBuffer(){let J=this.buffer.split(`
7
+ `);this.buffer=J.pop()??"";for(let W of J){if(!W.trim())continue;try{let X=JSON.parse(W),Z=this.pendingRequests.get(X.id);if(Z)if(clearTimeout(Z.timeout),this.pendingRequests.delete(X.id),X.error)Z.reject(Error(X.error.message));else Z.resolve(X.result)}catch(X){console.error("Failed to parse response:",W,X)}}}}var P=null;function gJ(){if(!P)P=new QJ;return P}async function F(){let J=gJ();return await J.start(),J}async function V(){if(P)await P.stop(),P=null}import{createServer as cJ}from"http";class iJ{server=null;checks=new Map;startTime=Date.now();port;constructor(J=8914){this.port=J}async start(){if(this.server)return;return new Promise((J,W)=>{this.server=cJ((X,Z)=>this.handleRequest(X,Z)),this.server.on("error",W),this.server.listen(this.port,()=>{console.log(`Health server listening on port ${this.port}`),this.server?.off("error",W),J()})})}async stop(){if(!this.server)return;return new Promise((J)=>{this.server?.close(()=>{this.server=null,J()})})}addCheck(J,W){this.checks.set(J,W)}removeCheck(J){this.checks.delete(J)}async checkHealth(J){if(J)return this.getServiceHealth(J);return this.getSystemHealth()}async handleRequest(J,W){let X=J.url??"/",Z=J.method??"GET";try{if(Z==="GET"&&X==="/health"){let K=await this.getSystemHealth();this.sendJson(W,200,K)}else if(Z==="GET"&&X.startsWith("/health/")){let K=X.slice(8).replace(".service",""),$=await this.getServiceHealth(K);this.sendJson(W,$?200:404,$??{error:"Service not found"})}else if(Z==="GET"&&X==="/ready"){let K=await this.getSystemHealth();this.sendJson(W,K.healthy?200:503,{ready:K.healthy})}else if(Z==="GET"&&X==="/live")this.sendJson(W,200,{alive:!0});else this.sendJson(W,404,{error:"Not found"})}catch(K){console.error("Health check error:",K),this.sendJson(W,500,{error:"Internal server error"})}}async getSystemHealth(){let J=w(),W=U(),X=[];for(let[$,Q]of Object.entries(J.packages)){if(!Q.service)continue;let z=await W.status(Q.service),G=z.active&&z.subState==="running";X.push({name:Q.service,healthy:G,status:z,checkedAt:new Date().toISOString()})}let Z={};for(let[$,Q]of this.checks)try{Z[$]=await Q()}catch(z){Z[$]={healthy:!1,message:z instanceof Error?z.message:"Unknown error"}}return{healthy:X.every(($)=>$.healthy)&&Object.values(Z).every(($)=>$.healthy),services:X,uptime:Math.floor((Date.now()-this.startTime)/1000),timestamp:new Date().toISOString()}}async getServiceHealth(J){let W=U();if(!await W.exists(J))return null;let Z=await W.status(J),K=Z.active&&Z.subState==="running";return{name:J,healthy:K,status:Z,checkedAt:new Date().toISOString()}}sendJson(J,W,X){J.statusCode=W,J.setHeader("Content-Type","application/json"),J.end(JSON.stringify(X,null,2))}}var nJ=null;function YJ(){return nJ}async function rJ(J){if(J.length===0)console.error("Usage: pkg-ops install <package>[@version]"),process.exit(1);let W=J[0],{name:X,version:Z}=i(W);if(!C(X))console.error("Invalid package name. Only @ebowwa/* packages are supported."),process.exit(1);console.log(`Installing ${X}@${Z}...`);try{let $=await(await F()).install(X,Z);if($.success){if(console.log(`Successfully installed ${X}@${$.version}`),$.previousVersion)console.log(` Previous version: ${$.previousVersion}`);S(X,{version:$.version,service:X.replace("@ebowwa/","")});let Q=y(X);if(Q?.service&&Q.autoStart!==!1){let G=await U().start(Q.service);if(G.success)console.log(` Service ${Q.service} started`);else console.warn(` Failed to start service: ${G.message}`)}}else console.error(`Failed to install ${X}: ${$.message}`),process.exit(1)}catch(K){console.error("Install failed:",K),process.exit(1)}finally{await V()}}async function tJ(J){if(J.length===0)console.error("Usage: pkg-ops update <package>"),process.exit(1);let W=J[0];if(!C(W))console.error("Invalid package name. Only @ebowwa/* packages are supported."),process.exit(1);console.log(`Updating ${W}...`);try{let Z=await(await F()).update(W);if(Z.success){if(console.log(`Successfully updated ${W} to ${Z.version}`),Z.previousVersion)console.log(` Previous version: ${Z.previousVersion}`);S(W,{version:Z.version,service:W.replace("@ebowwa/","")});let K=U(),$=y(W);if($?.service){if((await K.status($.service)).active)await K.restart($.service),console.log(` Service ${$.service} restarted`)}}else console.error(`Failed to update ${W}: ${Z.message}`),process.exit(1)}catch(X){console.error("Update failed:",X),process.exit(1)}finally{await V()}}async function aJ(J){console.log("Updating all managed packages...");try{let X=await(await F()).updateAll();for(let Z of X)if(Z.success)console.log(`Updated ${Z.version}`);else console.error(`Failed to update: ${Z.message}`)}catch(W){console.error("Update all failed:",W),process.exit(1)}finally{await V()}}async function sJ(J){console.log(`Installed packages:
8
+ `);try{let X=await(await F()).list();if(X.length===0){console.log(" No packages installed");return}for(let Z of X){let K=Z.installed?"installed":"not installed",$=Z.service?` (service: ${Z.service})`:"";console.log(` ${Z.name}@${Z.version} [${K}]${$}`)}}catch(W){console.error("Failed to list packages:",W),process.exit(1)}finally{await V()}}async function eJ(J){if(J.length===0)console.error("Usage: pkg-ops rollback <package>"),process.exit(1);let W=J[0];console.log(`Rolling back ${W}...`);try{let Z=await(await F()).rollback(W);if(Z.success){console.log(`Rolled back ${W} from ${Z.currentVersion} to ${Z.previousVersion}`);let K=U(),$=y(W);if($?.service){if((await K.status($.service)).active)await K.restart($.service),console.log(` Service ${$.service} restarted`)}}else console.error(`Rollback failed: ${Z.message}`),process.exit(1)}catch(X){console.error("Rollback failed:",X),process.exit(1)}finally{await V()}}async function zJ(J){if(J.length===0)console.error("Usage: pkg-ops service start <name>"),process.exit(1);let W=J[0],X=U();console.log(`Starting ${W}...`);let Z=await X.start(W);if(Z.success)console.log(`Service ${W} started`);else console.error(`Failed to start ${W}: ${Z.message}`),process.exit(1)}async function GJ(J){if(J.length===0)console.error("Usage: pkg-ops service stop <name>"),process.exit(1);let W=J[0],X=U();console.log(`Stopping ${W}...`);let Z=await X.stop(W);if(Z.success)console.log(`Service ${W} stopped`);else console.error(`Failed to stop ${W}: ${Z.message}`),process.exit(1)}async function qJ(J){if(J.length===0)console.error("Usage: pkg-ops service restart <name>"),process.exit(1);let W=J[0],X=U();console.log(`Restarting ${W}...`);let Z=await X.restart(W);if(Z.success)console.log(`Service ${W} restarted`);else console.error(`Failed to restart ${W}: ${Z.message}`),process.exit(1)}async function HJ(J){if(J.length===0)console.error("Usage: pkg-ops service status <name>"),process.exit(1);let W=J[0],Z=await U().info(W);if(!Z.exists){console.log(`Service ${W} not found`);return}console.log(`Service: ${W}`),console.log(` Loaded: ${Z.status.loaded}`),console.log(` Active: ${Z.status.active}`),console.log(` State: ${Z.status.subState}`),console.log(` PID: ${Z.status.mainPid||"N/A"}`),console.log(` Description: ${Z.status.description||"N/A"}`)}async function TJ(J){if(J.length===0)console.error("Usage: pkg-ops service logs <name> [--lines N]"),process.exit(1);let W=J[0],X=J.indexOf("--lines"),Z=X>=0&&J[X+1]?parseInt(J[X+1],10):100,$=await U().logs(W,{lines:Z});console.log($)}async function UJ(J){if(J.length===0)console.error("Usage: pkg-ops service enable <name>"),process.exit(1);let W=J[0],X=U();console.log(`Enabling ${W}...`);let Z=await X.enable(W);if(Z.success)console.log(`Service ${W} enabled on boot`);else console.error(`Failed to enable ${W}: ${Z.message}`),process.exit(1)}async function DJ(J){if(J.length===0)console.error("Usage: pkg-ops service disable <name>"),process.exit(1);let W=J[0],X=U();console.log(`Disabling ${W}...`);let Z=await X.disable(W);if(Z.success)console.log(`Service ${W} disabled from boot`);else console.error(`Failed to disable ${W}: ${Z.message}`),process.exit(1)}async function JW(J){let W=J[0],X=YJ();if(!X)console.error("Health server not initialized"),process.exit(1);let Z=await X.checkHealth(W);if(!Z){console.log("Service not found");return}if("services"in Z){if(Z.healthy)console.log("All services healthy");else console.log("Some services unhealthy");for(let K of Z.services){let $=K.healthy?"OK":"FAIL";console.log(` [${$}] ${K.name}: ${K.status.subState}`)}}else{let K=Z.healthy?"OK":"FAIL";console.log(`[${K}] ${Z.name}: ${Z.status.subState}`)}}async function FJ(J){let W=w();console.log("VPS Manager Configuration"),console.log("Config path: /etc/pkg-ops/config.json"),console.log(`Health port: ${W.healthPort}`),console.log(`Work dir: ${W.workDir}`),console.log(`Log level: ${W.logLevel}`),console.log(`
9
+ Packages:`);let X=c();if(X.length===0){console.log(" No packages configured");return}for(let{name:Z,config:K}of X){if(console.log(` ${Z}:`),console.log(` Version: ${K.version}`),K.service)console.log(` Service: ${K.service}`);if(K.autoStart!==void 0)console.log(` Auto-start: ${K.autoStart}`)}}async function VJ(J){if(J.length<3)console.error("Usage: pkg-ops config set <package> <key> <value>"),process.exit(1);let W=J[0],X=J[1],Z=J[2];if(!C(W))console.error("Invalid package name. Only @ebowwa/* packages are supported."),process.exit(1);let K=y(W)??{version:"latest"};switch(X){case"version":K.version=Z;break;case"service":K.service=Z;break;case"autoStart":K.autoStart=Z==="true";break;default:console.error(`Unknown config key: ${X}`),console.error("Valid keys: version, service, autoStart"),process.exit(1)}S(W,K),console.log(`Updated ${W}.${X} = ${Z}`)}async function WW(J){if(J.length===0)console.error("Usage: pkg-ops verify <package>"),process.exit(1);let W=J[0];if(!C(W))console.error("Invalid package name. Only @ebowwa/* packages are supported."),process.exit(1);console.log(`Verifying ${W}...`);try{let Z=await(await F()).verify(W);if(console.log(`
10
+ Package: ${Z.packageName}@${Z.version}`),console.log(` Status: ${Z.success?"VALID":"INVALID"}`),console.log(` Dist exists: ${Z.distExists?"Yes":"No"}`),Z.checksum)console.log(` Checksum: ${Z.checksum}`);console.log(` Message: ${Z.message}`)}catch(X){console.error("Verification failed:",X),process.exit(1)}finally{await V()}}async function XW(J){let W=J.indexOf("--local"),X=J.indexOf("--local-path"),Z="./package.json";if(X>=0&&J[X+1])Z=J[X+1];let K=W>=0||X>=0;try{let Q=await(await F()).getInstalledInfo();if(console.log(`Sync Status: Local vs VPS
11
+ `),K&&oJ(Z)){let z=pJ(Z,"utf-8"),G=JSON.parse(z),Y={...G.dependencies,...G.devDependencies},H=new Map;for(let q of Q)H.set(q.packageName,q.version);for(let[q,O]of Object.entries(Y)){if(!q.startsWith("@ebowwa/"))continue;let D=H.get(q),E=O.replace(/^[\^~]/,"");if(D){if(E===D)console.log(` ${q}: local=${E}, vps=${D} (in sync)`);else if(E>D)console.log(` ${q}: local=${E}, vps=${D} (VPS behind)`);else console.log(` ${q}: local=${E}, vps=${D} (local behind)`);H.delete(q)}else console.log(` ${q}: local=${E}, vps=not installed`)}for(let[q,O]of H)console.log(` ${q}: local=not in package.json, vps=${O}`)}else if(Q.length===0)console.log(" No packages installed on VPS");else for(let z of Q){let G=z.distSizeBytes?` (${(z.distSizeBytes/1024).toFixed(1)} KB)`:"";console.log(` ${z.packageName}@${z.version}${G}`)}}catch($){console.error("Failed to get sync status:",$),process.exit(1)}finally{await V()}}async function EJ(J){console.log(`Running vulnerability scan...
12
+ `);try{let X=await(await F()).audit();if(X.length===0){console.log("No vulnerabilities found.");return}console.log(`Found ${X.length} vulnerability(es):
13
+ `);for(let Z of X)console.log(`[${Z.severity.toUpperCase()}] ${Z.packageName}`),console.log(` Vulnerability: ${Z.vulnerability}`),console.log(` Description: ${Z.description}`),console.log("")}catch(W){console.error("Audit failed:",W),process.exit(1)}finally{await V()}}async function ZW(J){await EJ(J)}async function $W(J){console.log(`Bundle sizes:
14
+ `);try{let X=await(await F()).getBundleSizes();if(X.length===0){console.log(" No packages installed");return}console.log(" Package | Version | Dist Size"),console.log(" --------------------------------|----------|-----------");for(let Z of X){let K=Z.packageName.padEnd(32),$=Z.version.padEnd(9),Q=(Z.distSizeBytes/1024).toFixed(1)+" KB",z=Z.fileCount?` (${Z.fileCount} files)`:"";console.log(` ${K} | ${$} | ${Q}${z}`)}}catch(W){console.error("Failed to get bundle sizes:",W),process.exit(1)}finally{await V()}}var KW=[{name:"install",description:"Install an @ebowwa/* package",usage:"pkg-ops install <package>[@version]",handler:rJ},{name:"update",description:"Update a package to latest version",usage:"pkg-ops update <package>",handler:tJ},{name:"update-all",description:"Update all managed packages",usage:"pkg-ops update-all",handler:aJ},{name:"list",description:"List installed packages",usage:"pkg-ops list",handler:sJ},{name:"rollback",description:"Rollback a package to previous version",usage:"pkg-ops rollback <package>",handler:eJ},{name:"start",description:"Start a systemd service",usage:"pkg-ops service start <name>",handler:zJ},{name:"stop",description:"Stop a systemd service",usage:"pkg-ops service stop <name>",handler:GJ},{name:"restart",description:"Restart a systemd service",usage:"pkg-ops service restart <name>",handler:qJ},{name:"status",description:"Get service status",usage:"pkg-ops service status <name>",handler:HJ},{name:"logs",description:"View service logs",usage:"pkg-ops service logs <name> [--lines N]",handler:TJ},{name:"enable",description:"Enable service on boot",usage:"pkg-ops service enable <name>",handler:UJ},{name:"disable",description:"Disable service from boot",usage:"pkg-ops service disable <name>",handler:DJ},{name:"health",description:"Check health of all services",usage:"pkg-ops health [service]",handler:JW},{name:"config",description:"Show configuration",usage:"pkg-ops config show",handler:FJ},{name:"set-config",description:"Set a config value",usage:"pkg-ops config set <package> <key> <value>",handler:VJ},{name:"verify",description:"Verify package integrity",usage:"pkg-ops verify <package>",handler:WW},{name:"sync-status",description:"Show local vs VPS version sync",usage:"pkg-ops sync-status [--local-path path]",handler:XW},{name:"audit",description:"Check for vulnerabilities",usage:"pkg-ops audit",handler:EJ},{name:"scan",description:"Alias for audit",usage:"pkg-ops scan",handler:ZW},{name:"sizes",description:"Show bundle sizes",usage:"pkg-ops sizes",handler:$W}],QW=[{name:"start",description:"Start a systemd service",usage:"pkg-ops service start <name>",handler:zJ},{name:"stop",description:"Stop a systemd service",usage:"pkg-ops service stop <name>",handler:GJ},{name:"restart",description:"Restart a systemd service",usage:"pkg-ops service restart <name>",handler:qJ},{name:"status",description:"Get service status",usage:"pkg-ops service status <name>",handler:HJ},{name:"logs",description:"View service logs",usage:"pkg-ops service logs <name> [--lines N]",handler:TJ},{name:"enable",description:"Enable service on boot",usage:"pkg-ops service enable <name>",handler:UJ},{name:"disable",description:"Disable service from boot",usage:"pkg-ops service disable <name>",handler:DJ}],YW=[{name:"show",description:"Show configuration",usage:"pkg-ops config show",handler:FJ},{name:"set",description:"Set a config value",usage:"pkg-ops config set <package> <key> <value>",handler:VJ}];function zW(){console.log(`
15
+ VPS Manager - Unified package manager for VPS
16
+
17
+ Usage:
18
+ pkg-ops <command> [arguments]
19
+
20
+ Package Management:
21
+ install <package>[@version] Install an @ebowwa/* package
22
+ update <package> Update a package to latest version
23
+ update-all Update all managed packages
24
+ list List installed packages
25
+ rollback <package> Rollback a package to previous version
26
+
27
+ Service Management:
28
+ service start <name> Start a systemd service
29
+ service stop <name> Stop a systemd service
30
+ service restart <name> Restart a systemd service
31
+ service status <name> Get service status
32
+ service logs <name> [--lines N] View service logs
33
+ service enable <name> Enable service on boot
34
+ service disable <name> Disable service from boot
35
+
36
+ Health:
37
+ health [service] Check health of all services or specific one
38
+
39
+ Verification & Audit:
40
+ verify <package> Verify package integrity
41
+ sync-status [--local-path p] Show local vs VPS version sync
42
+ audit Check for vulnerabilities
43
+ scan Alias for audit
44
+ sizes Show bundle sizes
45
+
46
+ Config:
47
+ config show Show configuration
48
+ config set <pkg> <key> <val> Set a config value
49
+
50
+ Options:
51
+ --help, -h Show this help message
52
+ --version, -v Show version
53
+
54
+ Examples:
55
+ pkg-ops install @ebowwa/stack@0.7.12
56
+ pkg-ops service start stack
57
+ pkg-ops health
58
+ pkg-ops sync-status --local-path ./package.json
59
+ pkg-ops verify @ebowwa/stack
60
+ pkg-ops audit
61
+ `)}async function GW(){let J=process.argv.slice(2);if(J.length===0||J[0]==="--help"||J[0]==="-h")zW(),process.exit(0);if(J[0]==="--version"||J[0]==="-v"){let K=w();console.log(`pkg-ops ${K.packages?.["@ebowwa/pkg-ops"]?.version??"0.1.0"}`),process.exit(0)}let W=J[0],X=J.slice(1);if(W==="service"){if(X.length===0)console.error("Missing service subcommand"),console.error("Usage: pkg-ops service <start|stop|restart|status|logs|enable|disable> <name>"),process.exit(1);let K=X[0],$=QW.find((Q)=>Q.name===K);if(!$)console.error(`Unknown service subcommand: ${K}`),process.exit(1);await $.handler(X.slice(1));return}if(W==="config"){if(X.length===0)console.error("Missing config subcommand"),console.error("Usage: pkg-ops config <show|set> [args...]"),process.exit(1);let K=X[0],$=YW.find((Q)=>Q.name===K);if(!$)console.error(`Unknown config subcommand: ${K}`),process.exit(1);await $.handler(X.slice(1));return}let Z=KW.find((K)=>K.name===W);if(!Z)console.error(`Unknown command: ${W}`),console.error("Run 'pkg-ops --help' for usage"),process.exit(1);await Z.handler(X)}GW().catch((J)=>{console.error("Fatal error:",J),process.exit(1)});
62
+
63
+ //# debugId=C614DC988BCFFB9464756E2164756E21
64
+ //# sourceMappingURL=index.js.map