@lovrabet/lovrabet-cli 2.1.23-beta.4 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +13 -10
  2. package/lib/cli.js +1 -1
  3. package/lib/commands/api-doc/index.js +1 -1
  4. package/lib/commands/app/cache.js +1 -1
  5. package/lib/commands/app/definitions.js +1 -1
  6. package/lib/commands/app/eligibility.js +1 -1
  7. package/lib/commands/app/mock-loader.js +1 -1
  8. package/lib/commands/app/remote-source.js +1 -1
  9. package/lib/commands/app/shared.js +1 -1
  10. package/lib/commands/app-config/get.js +1 -1
  11. package/lib/commands/app-config/index.js +1 -1
  12. package/lib/commands/artifact/index.js +1 -1
  13. package/lib/commands/auth/device.js +1 -1
  14. package/lib/commands/auth/index.js +1 -1
  15. package/lib/commands/auth/prompt.js +1 -1
  16. package/lib/commands/bff/detail.js +1 -1
  17. package/lib/commands/bff/exec.js +1 -1
  18. package/lib/commands/bff/index.js +1 -1
  19. package/lib/commands/cli-skill/index.js +1 -1
  20. package/lib/commands/common/config-policy.js +1 -1
  21. package/lib/commands/common/constraints.js +1 -1
  22. package/lib/commands/common/flags.js +1 -1
  23. package/lib/commands/common/local-file.js +1 -1
  24. package/lib/commands/config/definitions.js +1 -1
  25. package/lib/commands/config/shared.js +1 -1
  26. package/lib/commands/data/index.js +1 -1
  27. package/lib/commands/dataset/detail.js +1 -1
  28. package/lib/commands/dataset/index.js +1 -1
  29. package/lib/commands/dataset/list.js +1 -1
  30. package/lib/commands/dataset/sdk-doc.js +1 -1
  31. package/lib/commands/doctor.js +1 -1
  32. package/lib/commands/file/index.js +1 -1
  33. package/lib/commands/init.js +1 -1
  34. package/lib/commands/kb/index.js +1 -1
  35. package/lib/commands/logs/index.js +1 -1
  36. package/lib/commands/ocr/index.js +1 -1
  37. package/lib/commands/personal-bff/index.js +1 -1
  38. package/lib/commands/registry.js +1 -1
  39. package/lib/commands/schedule/index.js +1 -1
  40. package/lib/commands/schema.js +1 -1
  41. package/lib/commands/service/dynamic.js +1 -1
  42. package/lib/commands/service/function-name-adapter.js +1 -1
  43. package/lib/commands/service/index.js +1 -1
  44. package/lib/commands/service/registry.js +1 -1
  45. package/lib/commands/skill/commands/create.js +1 -1
  46. package/lib/commands/skill/commands/diagram.js +1 -1
  47. package/lib/commands/skill/commands/install.js +1 -1
  48. package/lib/commands/skill/commands/list.js +1 -1
  49. package/lib/commands/skill/commands/push.js +1 -1
  50. package/lib/commands/skill/commands/validate.js +1 -1
  51. package/lib/commands/skill/diagram.js +1 -1
  52. package/lib/commands/skill/flags.js +1 -1
  53. package/lib/commands/skill/index.js +1 -1
  54. package/lib/commands/skill/manifest-helpers.js +1 -1
  55. package/lib/commands/skill/push-execute.js +1 -1
  56. package/lib/commands/skill/push-flow-helpers.js +1 -1
  57. package/lib/commands/skill/push-retarget.js +1 -1
  58. package/lib/commands/skill/scopes.js +1 -1
  59. package/lib/commands/skill/summary.js +1 -1
  60. package/lib/commands/skill/templates.js +1 -1
  61. package/lib/commands/skill/validate.js +1 -1
  62. package/lib/commands/sql/detail.js +1 -1
  63. package/lib/commands/sql/exec.js +1 -1
  64. package/lib/commands/sql/index.js +1 -1
  65. package/lib/commands/update.d.ts +2 -2
  66. package/lib/commands/update.js +1 -1
  67. package/lib/commands/workspace/index.js +1 -1
  68. package/lib/config/schema.js +1 -1
  69. package/lib/constant/app.js +1 -1
  70. package/lib/constant/auth-mode.js +1 -1
  71. package/lib/constant/cli.js +1 -1
  72. package/lib/constant/defaults.js +1 -1
  73. package/lib/constant/distribution.js +1 -1
  74. package/lib/constant/domain.js +1 -1
  75. package/lib/constant/env.js +1 -1
  76. package/lib/constant/output.js +1 -1
  77. package/lib/constant/product.js +1 -1
  78. package/lib/constant/risk.js +1 -1
  79. package/lib/constant/url.js +1 -1
  80. package/lib/context.js +1 -1
  81. package/lib/core/api-client.js +1 -1
  82. package/lib/core/db-resolver.js +1 -1
  83. package/lib/core/sdk-client.js +1 -1
  84. package/lib/errors.js +1 -1
  85. package/lib/framework/build-all-flags.js +1 -1
  86. package/lib/framework/dryrun.js +1 -1
  87. package/lib/framework/flags.js +1 -1
  88. package/lib/framework/help.js +1 -1
  89. package/lib/framework/index.js +1 -1
  90. package/lib/framework/output.js +1 -1
  91. package/lib/framework/preparse.js +1 -1
  92. package/lib/framework/rate-limit.js +1 -1
  93. package/lib/framework/raw-flags.js +1 -1
  94. package/lib/framework/response.js +1 -1
  95. package/lib/framework/runner-confirmation.js +1 -1
  96. package/lib/framework/runner-error.js +1 -1
  97. package/lib/framework/runner.js +1 -1
  98. package/lib/framework/schema-export.js +1 -1
  99. package/lib/framework/service-order.js +1 -1
  100. package/lib/framework/types.js +1 -1
  101. package/lib/generated/build-info.d.ts +4 -4
  102. package/lib/generated/build-info.js +1 -1
  103. package/lib/help.js +1 -1
  104. package/lib/postinstall.d.ts +2 -0
  105. package/lib/postinstall.js +1 -0
  106. package/lib/runtime/confirmation.js +1 -1
  107. package/lib/runtime/event.js +1 -1
  108. package/lib/runtime/index.js +1 -1
  109. package/lib/runtime/queue.js +1 -1
  110. package/lib/runtime/resolve.js +1 -1
  111. package/lib/skills/builtin-skill.d.ts +37 -0
  112. package/lib/skills/builtin-skill.js +1 -0
  113. package/lib/skills/npx-skills-add.d.ts +3 -1
  114. package/lib/skills/npx-skills-add.js +1 -1
  115. package/lib/skills/runtime-skill-sync/constants.js +1 -1
  116. package/lib/skills/runtime-skill-sync/fs-utils.js +1 -1
  117. package/lib/skills/runtime-skill-sync/hashing.js +1 -1
  118. package/lib/skills/runtime-skill-sync/install-target.js +1 -1
  119. package/lib/skills/runtime-skill-sync/links.js +1 -1
  120. package/lib/skills/runtime-skill-sync/list-local.js +1 -1
  121. package/lib/skills/runtime-skill-sync/local-files.js +1 -1
  122. package/lib/skills/runtime-skill-sync/materialize.js +1 -1
  123. package/lib/skills/runtime-skill-sync/metadata.js +1 -1
  124. package/lib/skills/runtime-skill-sync/paths.js +1 -1
  125. package/lib/skills/runtime-skill-sync/push.js +1 -1
  126. package/lib/skills/runtime-skill-sync/scopes.js +1 -1
  127. package/lib/skills/runtime-skill-sync/zip-codec.js +1 -1
  128. package/lib/skills/runtime-skill-sync/zip-package.js +1 -1
  129. package/lib/skills/runtime-skill-sync.js +1 -1
  130. package/lib/skills/skill-presence.js +1 -1
  131. package/lib/utils/apply-jq-filter.js +1 -1
  132. package/lib/utils/logger.js +1 -1
  133. package/lib/utils/lossless-json.js +1 -1
  134. package/lib/utils/params.js +1 -1
  135. package/lib/utils/platform.js +1 -1
  136. package/lib/utils/update-notice.js +1 -1
  137. package/lib/utils/version.js +1 -1
  138. package/lib/utils/write-cli-side-channel.js +1 -1
  139. package/package.json +14 -3
  140. package/scripts/postinstall.mjs +24 -0
  141. package/skills/lovrabet/SKILL.md +702 -0
  142. package/skills/lovrabet/guides/app-resolution.md +165 -0
  143. package/skills/lovrabet/guides/dataset-and-data-workflow.md +170 -0
  144. package/skills/lovrabet/guides/sql-and-bff-workflow.md +132 -0
  145. package/skills/lovrabet/guides/troubleshooting.md +91 -0
  146. package/skills/lovrabet/references/dataset-discovery-workflow.md +160 -0
  147. package/skills/lovrabet/references/instant-api-workflow.md +259 -0
  148. package/skills/lovrabet/references/lovrabet-app-config.md +51 -0
  149. package/skills/lovrabet/references/lovrabet-app.md +113 -0
  150. package/skills/lovrabet/references/lovrabet-auth.md +136 -0
  151. package/skills/lovrabet/references/lovrabet-bff-workflow.md +139 -0
  152. package/skills/lovrabet/references/lovrabet-config-commands.md +104 -0
  153. package/skills/lovrabet/references/lovrabet-config.md +124 -0
  154. package/skills/lovrabet/references/lovrabet-doctor.md +26 -0
  155. package/skills/lovrabet/references/lovrabet-file-workflow.md +62 -0
  156. package/skills/lovrabet/references/lovrabet-kb-workflow.md +78 -0
  157. package/skills/lovrabet/references/lovrabet-logs.md +19 -0
  158. package/skills/lovrabet/references/lovrabet-ocr-workflow.md +83 -0
  159. package/skills/lovrabet/references/lovrabet-output-format-jq.md +40 -0
  160. package/skills/lovrabet/references/lovrabet-personal-bff-workflow.md +108 -0
  161. package/skills/lovrabet/references/lovrabet-schedule-workflow.md +175 -0
  162. package/skills/lovrabet/references/lovrabet-service-tree.md +279 -0
  163. package/skills/lovrabet/references/lovrabet-skill-authoring.md +128 -0
  164. package/skills/lovrabet/references/lovrabet-skill-install.md +34 -0
  165. package/skills/lovrabet/references/lovrabet-skill-sync.md +146 -0
  166. package/skills/lovrabet/references/lovrabet-sql-workflow.md +111 -0
  167. package/skills/lovrabet/references/lovrabet-update.md +34 -0
  168. package/skills/lovrabet/references/lovrabet-workspace.md +82 -0
  169. package/skills/lovrabet.manifest.json +38 -0
@@ -1 +1 @@
1
- function a127_0x6852(_0x41f708,_0xb6b2bc){_0x41f708=_0x41f708-0x122;const _0x32fc1d=a127_0x32fc();let _0x685243=_0x32fc1d[_0x41f708];return _0x685243;}(function(_0x4e3f3d,_0x24750d){const _0x1d0ef3=a127_0x6852,_0x394d99=_0x4e3f3d();while(!![]){try{const _0x3294b3=parseInt(_0x1d0ef3(0x130))/0x1*(parseInt(_0x1d0ef3(0x124))/0x2)+-parseInt(_0x1d0ef3(0x137))/0x3+parseInt(_0x1d0ef3(0x122))/0x4*(-parseInt(_0x1d0ef3(0x12e))/0x5)+parseInt(_0x1d0ef3(0x132))/0x6*(-parseInt(_0x1d0ef3(0x127))/0x7)+parseInt(_0x1d0ef3(0x125))/0x8*(parseInt(_0x1d0ef3(0x129))/0x9)+parseInt(_0x1d0ef3(0x12b))/0xa+parseInt(_0x1d0ef3(0x13d))/0xb;if(_0x3294b3===_0x24750d)break;else _0x394d99['push'](_0x394d99['shift']());}catch(_0x56f5f4){_0x394d99['push'](_0x394d99['shift']());}}}(a127_0x32fc,0x90270));import{CliErrors}from'../errors.js';import{parseLosslessJson}from'../utils/lossless-json.js';export const MAX_DATA_UPDATE_IDS=0x3e8;export function parseJsonParams(_0x5ef68f){const _0x33a223=a127_0x6852;if(!_0x5ef68f)return undefined;try{return parseLosslessJson(_0x5ef68f);}catch{throw CliErrors[_0x33a223(0x135)](_0x33a223(0x12d)+_0x5ef68f);}}export function parseJsonParamsValue(_0x3de2e5){const _0x5d3e24=a127_0x6852;if(!_0x3de2e5)return undefined;try{return parseLosslessJson(_0x3de2e5);}catch{throw CliErrors[_0x5d3e24(0x135)](_0x5d3e24(0x12d)+_0x3de2e5);}}export function parseBatchCreateItemsFromParams(_0x8b5f9b){const _0x289110=a127_0x6852;if(Array[_0x289110(0x13e)](_0x8b5f9b))return _0x8b5f9b;if(_0x8b5f9b!==null&&_0x8b5f9b!==undefined&&typeof _0x8b5f9b===_0x289110(0x138)&&Array[_0x289110(0x13e)](_0x8b5f9b[_0x289110(0x13c)]))return _0x8b5f9b[_0x289110(0x13c)];throw CliErrors[_0x289110(0x135)](_0x289110(0x13a),'Example:\x20--params\x20\x27[{\x22name\x22:\x22a\x22},{\x22name\x22:\x22b\x22}]\x27');}function parseDataUpdateId(_0x5150bd,_0x5295e2){const _0x1ad0f8=a127_0x6852;if(typeof _0x5150bd===_0x1ad0f8(0x126)&&Number[_0x1ad0f8(0x12f)](_0x5150bd)&&_0x5150bd>0x0)return _0x5150bd;if(typeof _0x5150bd===_0x1ad0f8(0x131)){if(/^[1-9]\d*$/[_0x1ad0f8(0x128)](_0x5150bd))return _0x5150bd;}throw CliErrors[_0x1ad0f8(0x135)](_0x1ad0f8(0x134)+_0x5295e2+_0x1ad0f8(0x13b));}export function parseUpdateIdsFromParams(_0x593f2c){const _0x126781=a127_0x6852;if(_0x593f2c===null||_0x593f2c===undefined||typeof _0x593f2c!==_0x126781(0x138)||Array['isArray'](_0x593f2c))throw CliErrors['validation']('data\x20update\x20--params\x20must\x20be\x20a\x20JSON\x20object\x20with\x20id.',_0x126781(0x139));const _0x9a3c51=_0x593f2c['id'];if(_0x9a3c51===undefined||_0x9a3c51===null)throw CliErrors[_0x126781(0x135)](_0x126781(0x12a),'Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27');const _0x1ebaa4=Array['isArray'](_0x9a3c51)?_0x9a3c51:[_0x9a3c51];if(_0x1ebaa4['length']===0x0)throw CliErrors[_0x126781(0x135)](_0x126781(0x140));if(_0x1ebaa4[_0x126781(0x133)]>MAX_DATA_UPDATE_IDS)throw CliErrors[_0x126781(0x135)]('data\x20update\x20can\x20update\x20at\x20most\x20'+MAX_DATA_UPDATE_IDS+_0x126781(0x12c)+_0x1ebaa4[_0x126781(0x133)]+'.');return _0x1ebaa4[_0x126781(0x123)]((_0x5452ec,_0x1d0d8c)=>parseDataUpdateId(_0x5452ec,Array['isArray'](_0x9a3c51)?_0x126781(0x13f)+_0x1d0d8c+']':'id'));}function a127_0x32fc(){const _0x1d9bae=['items','10546833RBLdMG','isArray','id[','data\x20update\x20id\x20array\x20cannot\x20be\x20empty.','732764XnsCrb','map','7694nTrUVf','48488AWGXpj','number','1281djdmOM','test','1107bIwQZe','data\x20update\x20requires\x20\x22id\x22\x20in\x20--params.','7345650fZENLD','\x20records\x20per\x20call;\x20received\x20','Invalid\x20JSON\x20for\x20--params:\x20','5eDKpfo','isSafeInteger','80cyvuPR','string','29334guQwzS','length','data\x20update\x20--params.','validation','join','3234915EpEoHm','object','Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27','batchCreate\x20--params\x20must\x20be\x20a\x20JSON\x20array\x20or\x20{\x22items\x22:[...]}','\x20must\x20be\x20a\x20positive\x20integer\x20or\x20numeric\x20string.'];a127_0x32fc=function(){return _0x1d9bae;};return a127_0x32fc();}export function normalizeUpdateParamsForRuntime(_0x11e4dc,_0x4aeb60){const _0x28fe44=a127_0x6852;if(Array[_0x28fe44(0x13e)](_0x11e4dc['id'])&&_0x4aeb60[_0x28fe44(0x133)]>0x1)return{..._0x11e4dc,'id':_0x4aeb60[_0x28fe44(0x136)](',')};return _0x11e4dc;}
1
+ (function(_0x50691c,_0x1fa721){const _0x3a5945=a129_0x5966,_0xdadafa=_0x50691c();while(!![]){try{const _0x57ddc3=parseInt(_0x3a5945(0x1aa))/0x1+parseInt(_0x3a5945(0x19b))/0x2*(-parseInt(_0x3a5945(0x192))/0x3)+-parseInt(_0x3a5945(0x197))/0x4+parseInt(_0x3a5945(0x199))/0x5+-parseInt(_0x3a5945(0x1a2))/0x6+parseInt(_0x3a5945(0x19a))/0x7*(parseInt(_0x3a5945(0x1a3))/0x8)+parseInt(_0x3a5945(0x19d))/0x9;if(_0x57ddc3===_0x1fa721)break;else _0xdadafa['push'](_0xdadafa['shift']());}catch(_0x398e1f){_0xdadafa['push'](_0xdadafa['shift']());}}}(a129_0x59ba,0x80525));function a129_0x59ba(){const _0xc2d7b5=['items','data\x20update\x20--params\x20must\x20be\x20a\x20JSON\x20object\x20with\x20id.','validation','\x20records\x20per\x20call;\x20received\x20','Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27','string','96910KtMpNn','isSafeInteger','join','object','3ZgJXRr','data\x20update\x20id\x20array\x20cannot\x20be\x20empty.','Invalid\x20JSON\x20for\x20--params:\x20','data\x20update\x20--params.','id[','2373460NfExhT','\x20must\x20be\x20a\x20positive\x20integer\x20or\x20numeric\x20string.','1630330wBlOyD','226051XaZCaS','167542tUFbOo','length','7547346pDUiqh','batchCreate\x20--params\x20must\x20be\x20a\x20JSON\x20array\x20or\x20{\x22items\x22:[...]}','map','test','isArray','546732lcCPLm','8aACIgw'];a129_0x59ba=function(){return _0xc2d7b5;};return a129_0x59ba();}import{CliErrors}from'../errors.js';import{parseLosslessJson}from'../utils/lossless-json.js';export const MAX_DATA_UPDATE_IDS=0x3e8;export function parseJsonParams(_0x4debe7){const _0x440f98=a129_0x5966;if(!_0x4debe7)return undefined;try{return parseLosslessJson(_0x4debe7);}catch{throw CliErrors['validation'](_0x440f98(0x194)+_0x4debe7);}}export function parseJsonParamsValue(_0x5991f0){const _0x36731e=a129_0x5966;if(!_0x5991f0)return undefined;try{return parseLosslessJson(_0x5991f0);}catch{throw CliErrors[_0x36731e(0x1a6)]('Invalid\x20JSON\x20for\x20--params:\x20'+_0x5991f0);}}export function parseBatchCreateItemsFromParams(_0x1d734c){const _0x3cf6d0=a129_0x5966;if(Array[_0x3cf6d0(0x1a1)](_0x1d734c))return _0x1d734c;if(_0x1d734c!==null&&_0x1d734c!==undefined&&typeof _0x1d734c===_0x3cf6d0(0x191)&&Array[_0x3cf6d0(0x1a1)](_0x1d734c[_0x3cf6d0(0x1a4)]))return _0x1d734c[_0x3cf6d0(0x1a4)];throw CliErrors[_0x3cf6d0(0x1a6)](_0x3cf6d0(0x19e),'Example:\x20--params\x20\x27[{\x22name\x22:\x22a\x22},{\x22name\x22:\x22b\x22}]\x27');}function parseDataUpdateId(_0x4c694d,_0x2a0f98){const _0x4bc20a=a129_0x5966;if(typeof _0x4c694d==='number'&&Number[_0x4bc20a(0x1ab)](_0x4c694d)&&_0x4c694d>0x0)return _0x4c694d;if(typeof _0x4c694d===_0x4bc20a(0x1a9)){if(/^[1-9]\d*$/[_0x4bc20a(0x1a0)](_0x4c694d))return _0x4c694d;}throw CliErrors[_0x4bc20a(0x1a6)](_0x4bc20a(0x195)+_0x2a0f98+_0x4bc20a(0x198));}function a129_0x5966(_0x5cb81d,_0x1a7386){_0x5cb81d=_0x5cb81d-0x190;const _0x59ba11=a129_0x59ba();let _0x596697=_0x59ba11[_0x5cb81d];return _0x596697;}export function parseUpdateIdsFromParams(_0x836a20){const _0x436fca=a129_0x5966;if(_0x836a20===null||_0x836a20===undefined||typeof _0x836a20!==_0x436fca(0x191)||Array['isArray'](_0x836a20))throw CliErrors[_0x436fca(0x1a6)](_0x436fca(0x1a5),_0x436fca(0x1a8));const _0x8965f2=_0x836a20['id'];if(_0x8965f2===undefined||_0x8965f2===null)throw CliErrors[_0x436fca(0x1a6)]('data\x20update\x20requires\x20\x22id\x22\x20in\x20--params.',_0x436fca(0x1a8));const _0x11a2c6=Array[_0x436fca(0x1a1)](_0x8965f2)?_0x8965f2:[_0x8965f2];if(_0x11a2c6['length']===0x0)throw CliErrors[_0x436fca(0x1a6)](_0x436fca(0x193));if(_0x11a2c6[_0x436fca(0x19c)]>MAX_DATA_UPDATE_IDS)throw CliErrors[_0x436fca(0x1a6)]('data\x20update\x20can\x20update\x20at\x20most\x20'+MAX_DATA_UPDATE_IDS+_0x436fca(0x1a7)+_0x11a2c6[_0x436fca(0x19c)]+'.');return _0x11a2c6[_0x436fca(0x19f)]((_0x3ebd60,_0x2ac5b9)=>parseDataUpdateId(_0x3ebd60,Array['isArray'](_0x8965f2)?_0x436fca(0x196)+_0x2ac5b9+']':'id'));}export function normalizeUpdateParamsForRuntime(_0x292f9f,_0x3c8fd6){const _0x573af6=a129_0x5966;if(Array['isArray'](_0x292f9f['id'])&&_0x3c8fd6['length']>0x1)return{..._0x292f9f,'id':_0x3c8fd6[_0x573af6(0x190)](',')};return _0x292f9f;}
@@ -1 +1 @@
1
- const a128_0x55a5d2=a128_0xa0c0;(function(_0x60d08e,_0x5ab219){const _0x4b3da9=a128_0xa0c0,_0x4fc263=_0x60d08e();while(!![]){try{const _0x1f191f=parseInt(_0x4b3da9(0x10b))/0x1+-parseInt(_0x4b3da9(0x10a))/0x2+parseInt(_0x4b3da9(0x111))/0x3+parseInt(_0x4b3da9(0x110))/0x4*(parseInt(_0x4b3da9(0x113))/0x5)+-parseInt(_0x4b3da9(0x10f))/0x6*(-parseInt(_0x4b3da9(0x109))/0x7)+parseInt(_0x4b3da9(0x114))/0x8+parseInt(_0x4b3da9(0x10e))/0x9*(-parseInt(_0x4b3da9(0x10d))/0xa);if(_0x1f191f===_0x5ab219)break;else _0x4fc263['push'](_0x4fc263['shift']());}catch(_0x305504){_0x4fc263['push'](_0x4fc263['shift']());}}}(a128_0x285f,0xa58b2));export const isWindows=process[a128_0x55a5d2(0x115)]===a128_0x55a5d2(0x112);function a128_0x285f(){const _0xa8569b=['platform','13853vWDczZ','227536HsZMDP','1123823AfaQxU','.cmd','5590ZTieUD','21546CyVCfb','330dsNYXC','87956kJPMOx','1480407xZCjaJ','win32','85IrXrkM','241040bgeqnl'];a128_0x285f=function(){return _0xa8569b;};return a128_0x285f();}function a128_0xa0c0(_0x342afb,_0xeb019){_0x342afb=_0x342afb-0x109;const _0x285f2c=a128_0x285f();let _0xa0c064=_0x285f2c[_0x342afb];return _0xa0c064;}export function resolveNpmBin(_0x21f272){const _0x413499=a128_0x55a5d2;return isWindows?_0x21f272+_0x413499(0x10c):_0x21f272;}
1
+ const a130_0x3514af=a130_0x4a69;function a130_0x4a69(_0x13b4fd,_0xaf4f81){_0x13b4fd=_0x13b4fd-0x8f;const _0x3130cb=a130_0x3130();let _0x4a699b=_0x3130cb[_0x13b4fd];return _0x4a699b;}function a130_0x3130(){const _0x38e430=['4734664cOudlo','12378087AZCWvM','7BVRkkA','13300991wRhEUk','win32','.cmd','99476kSobVE','8GFZAzQ','5gNHlSe','10iOoDbp','7059534wipawm','6820499DBlBXa','4832544UNpBbj'];a130_0x3130=function(){return _0x38e430;};return a130_0x3130();}(function(_0x3b33be,_0x5190c5){const _0x440d92=a130_0x4a69,_0x56a858=_0x3b33be();while(!![]){try{const _0x30a140=parseInt(_0x440d92(0x96))/0x1*(parseInt(_0x440d92(0x9a))/0x2)+parseInt(_0x440d92(0x93))/0x3+-parseInt(_0x440d92(0x94))/0x4*(parseInt(_0x440d92(0x8f))/0x5)+parseInt(_0x440d92(0x91))/0x6+-parseInt(_0x440d92(0x92))/0x7+parseInt(_0x440d92(0x9b))/0x8*(-parseInt(_0x440d92(0x95))/0x9)+parseInt(_0x440d92(0x90))/0xa*(parseInt(_0x440d92(0x97))/0xb);if(_0x30a140===_0x5190c5)break;else _0x56a858['push'](_0x56a858['shift']());}catch(_0x56cf83){_0x56a858['push'](_0x56a858['shift']());}}}(a130_0x3130,0xc619a));export const isWindows=process['platform']===a130_0x3514af(0x98);export function resolveNpmBin(_0x2d7f22){const _0x562523=a130_0x3514af;return isWindows?_0x2d7f22+_0x562523(0x99):_0x2d7f22;}
@@ -1 +1 @@
1
- (function(_0x36e6e0,_0x47e19a){const _0x20ae8b=a129_0xe693,_0x3a892e=_0x36e6e0();while(!![]){try{const _0x10eae3=parseInt(_0x20ae8b(0x14c))/0x1+parseInt(_0x20ae8b(0x160))/0x2*(parseInt(_0x20ae8b(0x158))/0x3)+parseInt(_0x20ae8b(0x14a))/0x4+-parseInt(_0x20ae8b(0x161))/0x5+-parseInt(_0x20ae8b(0x14b))/0x6*(-parseInt(_0x20ae8b(0x15d))/0x7)+parseInt(_0x20ae8b(0x148))/0x8*(parseInt(_0x20ae8b(0x146))/0x9)+-parseInt(_0x20ae8b(0x13f))/0xa;if(_0x10eae3===_0x47e19a)break;else _0x3a892e['push'](_0x3a892e['shift']());}catch(_0x1e8a8f){_0x3a892e['push'](_0x3a892e['shift']());}}}(a129_0x17ea,0xc0fa7));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';function a129_0x17ea(){const _0x378255=['/v/','Invalid\x20semver','1937061epgVyn','true','40sFzIAD','stringify','276420wklcrZ','81240dLHhne','106752WwyOTU','minor','entries','lastNotifiedAt','json','checkedAt','patch','https://www.npmjs.com/package/','lovrabet-cli','timeout','\x20available,\x20current\x20','trim','134334RyqNcg','object','latest','fromEntries','update-check.json','805HSATjA','.cache','utf8','22WLmUyo','5101725bbtoLz',',\x20run:\x20','prerelease','yes','parse','14908760UrLHGC','toLowerCase','major','string','match'];a129_0x17ea=function(){return _0x378255;};return a129_0x17ea();}import{LOVRABET_NPM_PACKAGE_NAME,NPM_REGISTRY_BASE_URL}from'../constant/distribution.js';function a129_0xe693(_0x41cbba,_0x195726){_0x41cbba=_0x41cbba-0x13b;const _0x17eafc=a129_0x17ea();let _0xe69303=_0x17eafc[_0x41cbba];return _0xe69303;}import{CLI_BIN_NAME}from'../constant/cli.js';import{getCliVersion}from'../utils/version.js';const UPDATE_CHECK_TTL_MS=0xc*0x3c*0x3c*0x3e8,UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function parseSemver(_0xb0c197){const _0x7b4a90=a129_0xe693,_0x552d8b=_0xb0c197['trim']()[_0x7b4a90(0x143)](/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/);if(!_0x552d8b)return null;return{'major':Number(_0x552d8b[0x1]),'minor':Number(_0x552d8b[0x2]),'patch':Number(_0x552d8b[0x3]),'prerelease':_0x552d8b[0x4]};}function compareSemver(_0x42a134,_0x45db11){const _0x52f937=a129_0xe693,_0x38167f=parseSemver(_0x42a134),_0x58d2e5=parseSemver(_0x45db11);if(!_0x38167f||!_0x58d2e5)throw new Error(_0x52f937(0x145));for(const _0x3dc715 of[_0x52f937(0x141),_0x52f937(0x14d),_0x52f937(0x152)]){if(_0x38167f[_0x3dc715]<_0x58d2e5[_0x3dc715])return-0x1;if(_0x38167f[_0x3dc715]>_0x58d2e5[_0x3dc715])return 0x1;}if(!_0x38167f[_0x52f937(0x13c)]&&!_0x58d2e5[_0x52f937(0x13c)])return 0x0;if(!_0x38167f[_0x52f937(0x13c)])return 0x1;if(!_0x58d2e5[_0x52f937(0x13c)])return-0x1;if(_0x38167f['prerelease']===_0x58d2e5[_0x52f937(0x13c)])return 0x0;return _0x38167f[_0x52f937(0x13c)]<_0x58d2e5[_0x52f937(0x13c)]?-0x1:0x1;}function isUpdateNoticeDisabled(){const _0x53f441=a129_0xe693,_0x18ce42=process.env.LOVRABET_NO_UPDATE_NOTICE?.[_0x53f441(0x157)]()[_0x53f441(0x140)]();return _0x18ce42==='1'||_0x18ce42===_0x53f441(0x147)||_0x18ce42===_0x53f441(0x13d);}function cacheRoot(){const _0x5d724c=a129_0xe693;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x5d724c(0x15e));}export function getUpdateNoticeCachePath(){const _0x1d3ab3=a129_0xe693;return join(cacheRoot(),_0x1d3ab3(0x154),_0x1d3ab3(0x15c));}async function readUpdateNoticeCache(){const _0x5960a4=a129_0xe693;try{const _0x1b4e80=await readFile(getUpdateNoticeCachePath(),_0x5960a4(0x15f)),_0x48a099=JSON[_0x5960a4(0x13e)](_0x1b4e80);if(!_0x48a099||typeof _0x48a099!==_0x5960a4(0x159))return{};return _0x48a099;}catch{return{};}}async function writeUpdateNoticeCache(_0x37e626){const _0x6c9fc4=a129_0xe693;try{const _0x319f7f=getUpdateNoticeCachePath();await mkdir(dirname(_0x319f7f),{'recursive':!![]}),await writeFile(_0x319f7f,JSON[_0x6c9fc4(0x149)](_0x37e626,null,0x2)+'\x0a',_0x6c9fc4(0x15f));}catch{}}function isFreshCheck(_0x3982a8,_0x55e00e){const _0x279a5f=a129_0xe693;return typeof _0x3982a8[_0x279a5f(0x151)]==='number'&&_0x55e00e-_0x3982a8[_0x279a5f(0x151)]<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x326605,_0x200b85,_0x544770){const _0x2442f4=a129_0xe693;return _0x326605['lastNotifiedVersion']===_0x200b85&&typeof _0x326605[_0x2442f4(0x14f)]==='number'&&_0x544770-_0x326605['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}async function fetchNpmDistTags(_0x10b708=0x5dc){const _0x5a5021=a129_0xe693;try{const _0x353269=NPM_REGISTRY_BASE_URL+'/-/package/'+encodeURIComponent(LOVRABET_NPM_PACKAGE_NAME)+'/dist-tags',_0x5a3ef9=await fetch(_0x353269,{'signal':AbortSignal[_0x5a5021(0x155)](_0x10b708)});if(!_0x5a3ef9['ok'])return null;const _0x36c639=await _0x5a3ef9[_0x5a5021(0x150)]();if(!_0x36c639||typeof _0x36c639!==_0x5a5021(0x159))return null;return Object[_0x5a5021(0x15b)](Object[_0x5a5021(0x14e)](_0x36c639)['filter'](([,_0x32b25b])=>typeof _0x32b25b===_0x5a5021(0x142)&&_0x32b25b[_0x5a5021(0x157)]())['map'](([_0x43864f,_0x1c4365])=>[_0x43864f,String(_0x1c4365)[_0x5a5021(0x157)]()]));}catch{return null;}}export function buildNpmVersionUrl(_0x3f42c9){const _0x527004=a129_0xe693;return _0x527004(0x153)+LOVRABET_NPM_PACKAGE_NAME+_0x527004(0x144)+_0x3f42c9;}export async function resolveLatestUpdateNotice(){const _0x42df55=a129_0xe693;if(isUpdateNoticeDisabled())return null;try{const _0x2fb98c=Date['now'](),_0x440e81=getCliVersion(),_0x3084f6=await readUpdateNoticeCache();let _0xcfc8ec=isFreshCheck(_0x3084f6,_0x2fb98c)?_0x3084f6[_0x42df55(0x15a)]?.[_0x42df55(0x157)]():undefined;if(!_0xcfc8ec&&!isFreshCheck(_0x3084f6,_0x2fb98c)){const _0xdd4210=await fetchNpmDistTags();_0xcfc8ec=_0xdd4210?.[_0x42df55(0x15a)]?.[_0x42df55(0x157)](),await writeUpdateNoticeCache({..._0x3084f6,'checkedAt':_0x2fb98c,'latest':_0xcfc8ec,'failed':!_0xcfc8ec});}if(!_0xcfc8ec||compareSemver(_0x440e81,_0xcfc8ec)>=0x0)return null;if(isRecentlyNotified(_0x3084f6,_0xcfc8ec,_0x2fb98c))return null;const _0x14f0ee=CLI_BIN_NAME+'\x20update';return await writeUpdateNoticeCache({..._0x3084f6,'checkedAt':isFreshCheck(_0x3084f6,_0x2fb98c)?_0x3084f6[_0x42df55(0x151)]:_0x2fb98c,'latest':_0xcfc8ec,'failed':![],'lastNotifiedVersion':_0xcfc8ec,'lastNotifiedAt':_0x2fb98c}),{'command':_0x14f0ee,'current':_0x440e81,'latest':_0xcfc8ec,'url':buildNpmVersionUrl(_0xcfc8ec),'message':CLI_BIN_NAME+'\x20'+_0xcfc8ec+_0x42df55(0x156)+_0x440e81+_0x42df55(0x13b)+_0x14f0ee};}catch{return null;}}
1
+ (function(_0x1109bd,_0x54364b){const _0x11263f=a131_0x460f,_0x528433=_0x1109bd();while(!![]){try{const _0x371328=parseInt(_0x11263f(0x1d2))/0x1*(parseInt(_0x11263f(0x1c1))/0x2)+parseInt(_0x11263f(0x1dc))/0x3+-parseInt(_0x11263f(0x1d5))/0x4+parseInt(_0x11263f(0x1db))/0x5+parseInt(_0x11263f(0x1da))/0x6*(-parseInt(_0x11263f(0x1ca))/0x7)+-parseInt(_0x11263f(0x1d4))/0x8+parseInt(_0x11263f(0x1c9))/0x9*(parseInt(_0x11263f(0x1c2))/0xa);if(_0x371328===_0x54364b)break;else _0x528433['push'](_0x528433['shift']());}catch(_0x48f675){_0x528433['push'](_0x528433['shift']());}}}(a131_0x28d9,0x53675));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';import{LOVRABET_NPM_PACKAGE_NAME,NPM_REGISTRY_BASE_URL}from'../constant/distribution.js';import{CLI_BIN_NAME}from'../constant/cli.js';import{getCliVersion}from'../utils/version.js';const UPDATE_CHECK_TTL_MS=0xc*0x3c*0x3c*0x3e8,UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function parseSemver(_0xad7e78){const _0x4b609a=a131_0x460f,_0x569247=_0xad7e78[_0x4b609a(0x1e0)]()['match'](/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/);if(!_0x569247)return null;return{'major':Number(_0x569247[0x1]),'minor':Number(_0x569247[0x2]),'patch':Number(_0x569247[0x3]),'prerelease':_0x569247[0x4]};}function compareSemver(_0x130283,_0x53b2cc){const _0x5064ad=a131_0x460f,_0x2f8c83=parseSemver(_0x130283),_0x1fc9c9=parseSemver(_0x53b2cc);if(!_0x2f8c83||!_0x1fc9c9)throw new Error(_0x5064ad(0x1d9));for(const _0x43efa0 of[_0x5064ad(0x1cd),_0x5064ad(0x1c3),'patch']){if(_0x2f8c83[_0x43efa0]<_0x1fc9c9[_0x43efa0])return-0x1;if(_0x2f8c83[_0x43efa0]>_0x1fc9c9[_0x43efa0])return 0x1;}if(!_0x2f8c83['prerelease']&&!_0x1fc9c9[_0x5064ad(0x1de)])return 0x0;if(!_0x2f8c83['prerelease'])return 0x1;if(!_0x1fc9c9['prerelease'])return-0x1;if(_0x2f8c83[_0x5064ad(0x1de)]===_0x1fc9c9[_0x5064ad(0x1de)])return 0x0;return _0x2f8c83[_0x5064ad(0x1de)]<_0x1fc9c9[_0x5064ad(0x1de)]?-0x1:0x1;}function isUpdateNoticeDisabled(){const _0x2be77b=a131_0x460f,_0x47850a=process.env.LOVRABET_NO_UPDATE_NOTICE?.[_0x2be77b(0x1e0)]()[_0x2be77b(0x1cf)]();return _0x47850a==='1'||_0x47850a===_0x2be77b(0x1dd)||_0x47850a===_0x2be77b(0x1c7);}function cacheRoot(){const _0x562e13=a131_0x460f;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x562e13(0x1c8));}export function getUpdateNoticeCachePath(){const _0xd7419b=a131_0x460f;return join(cacheRoot(),_0xd7419b(0x1e3),_0xd7419b(0x1df));}async function readUpdateNoticeCache(){const _0x2e1b2e=a131_0x460f;try{const _0x1ddbda=await readFile(getUpdateNoticeCachePath(),_0x2e1b2e(0x1c6)),_0x547823=JSON[_0x2e1b2e(0x1d8)](_0x1ddbda);if(!_0x547823||typeof _0x547823!==_0x2e1b2e(0x1c5))return{};return _0x547823;}catch{return{};}}async function writeUpdateNoticeCache(_0x20db7f){const _0x3b8c47=a131_0x460f;try{const _0x25e635=getUpdateNoticeCachePath();await mkdir(dirname(_0x25e635),{'recursive':!![]}),await writeFile(_0x25e635,JSON[_0x3b8c47(0x1e2)](_0x20db7f,null,0x2)+'\x0a','utf8');}catch{}}function isFreshCheck(_0x20c1ae,_0x2b9268){const _0x77a48=a131_0x460f;return typeof _0x20c1ae['checkedAt']===_0x77a48(0x1cb)&&_0x2b9268-_0x20c1ae[_0x77a48(0x1bf)]<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x2a6528,_0x1ecf88,_0x2276e6){const _0x52a731=a131_0x460f;return _0x2a6528[_0x52a731(0x1e5)]===_0x1ecf88&&typeof _0x2a6528[_0x52a731(0x1c4)]===_0x52a731(0x1cb)&&_0x2276e6-_0x2a6528['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}function a131_0x460f(_0x4e7c6e,_0x441642){_0x4e7c6e=_0x4e7c6e-0x1bf;const _0x28d9ad=a131_0x28d9();let _0x460fb2=_0x28d9ad[_0x4e7c6e];return _0x460fb2;}async function fetchNpmDistTags(_0x1a3452=0x5dc){const _0x49774b=a131_0x460f;try{const _0x54c38f=NPM_REGISTRY_BASE_URL+'/-/package/'+encodeURIComponent(LOVRABET_NPM_PACKAGE_NAME)+'/dist-tags',_0x2c1ebe=await fetch(_0x54c38f,{'signal':AbortSignal[_0x49774b(0x1e6)](_0x1a3452)});if(!_0x2c1ebe['ok'])return null;const _0x155af3=await _0x2c1ebe['json']();if(!_0x155af3||typeof _0x155af3!==_0x49774b(0x1c5))return null;return Object[_0x49774b(0x1d0)](Object[_0x49774b(0x1ce)](_0x155af3)[_0x49774b(0x1d6)](([,_0x295de2])=>typeof _0x295de2==='string'&&_0x295de2['trim']())['map'](([_0x4e399b,_0x460a09])=>[_0x4e399b,String(_0x460a09)[_0x49774b(0x1e0)]()]));}catch{return null;}}export function buildNpmVersionUrl(_0x3ea9cb){const _0x2b6460=a131_0x460f;return _0x2b6460(0x1e4)+LOVRABET_NPM_PACKAGE_NAME+_0x2b6460(0x1d7)+_0x3ea9cb;}function a131_0x28d9(){const _0x46b526=['minor','lastNotifiedAt','object','utf8','yes','.cache','153YmFxAP','50491dkFlgd','number','\x20update','major','entries','toLowerCase','fromEntries','now','487164mpQFUx','latest','5243928ZDsjuE','2534384vXqAkD','filter','/v/','parse','Invalid\x20semver','6ECngay','1047245AKEbGc','523977OLQZas','true','prerelease','update-check.json','trim',',\x20run:\x20','stringify','lovrabet-cli','https://www.npmjs.com/package/','lastNotifiedVersion','timeout','checkedAt','\x20available,\x20current\x20','2oIJoeP','450970IrbVno'];a131_0x28d9=function(){return _0x46b526;};return a131_0x28d9();}export async function resolveLatestUpdateNotice(){const _0x171875=a131_0x460f;if(isUpdateNoticeDisabled())return null;try{const _0x11e556=Date[_0x171875(0x1d1)](),_0x52ebe6=getCliVersion(),_0x5b3009=await readUpdateNoticeCache();let _0x435df8=isFreshCheck(_0x5b3009,_0x11e556)?_0x5b3009['latest']?.['trim']():undefined;if(!_0x435df8&&!isFreshCheck(_0x5b3009,_0x11e556)){const _0xd1e877=await fetchNpmDistTags();_0x435df8=_0xd1e877?.[_0x171875(0x1d3)]?.[_0x171875(0x1e0)](),await writeUpdateNoticeCache({..._0x5b3009,'checkedAt':_0x11e556,'latest':_0x435df8,'failed':!_0x435df8});}if(!_0x435df8||compareSemver(_0x52ebe6,_0x435df8)>=0x0)return null;if(isRecentlyNotified(_0x5b3009,_0x435df8,_0x11e556))return null;const _0xaa081a=CLI_BIN_NAME+_0x171875(0x1cc);return await writeUpdateNoticeCache({..._0x5b3009,'checkedAt':isFreshCheck(_0x5b3009,_0x11e556)?_0x5b3009[_0x171875(0x1bf)]:_0x11e556,'latest':_0x435df8,'failed':![],'lastNotifiedVersion':_0x435df8,'lastNotifiedAt':_0x11e556}),{'command':_0xaa081a,'current':_0x52ebe6,'latest':_0x435df8,'url':buildNpmVersionUrl(_0x435df8),'message':CLI_BIN_NAME+'\x20'+_0x435df8+_0x171875(0x1c0)+_0x52ebe6+_0x171875(0x1e1)+_0xaa081a};}catch{return null;}}
@@ -1 +1 @@
1
- (function(_0x22fe77,_0x768e1f){const _0x5c7954=a130_0x7f4a,_0x33e656=_0x22fe77();while(!![]){try{const _0x3f9688=parseInt(_0x5c7954(0xb9))/0x1+parseInt(_0x5c7954(0xb3))/0x2*(-parseInt(_0x5c7954(0xb7))/0x3)+-parseInt(_0x5c7954(0xaf))/0x4*(-parseInt(_0x5c7954(0xb8))/0x5)+-parseInt(_0x5c7954(0xb0))/0x6+parseInt(_0x5c7954(0xbb))/0x7*(parseInt(_0x5c7954(0xb1))/0x8)+parseInt(_0x5c7954(0xba))/0x9*(parseInt(_0x5c7954(0xb5))/0xa)+-parseInt(_0x5c7954(0xb2))/0xb;if(_0x3f9688===_0x768e1f)break;else _0x33e656['push'](_0x33e656['shift']());}catch(_0x42890e){_0x33e656['push'](_0x33e656['shift']());}}}(a130_0x5022,0x59a8e));function a130_0x7f4a(_0x1a47cc,_0x2f290){_0x1a47cc=_0x1a47cc-0xaf;const _0x50221a=a130_0x5022();let _0x7f4ab0=_0x50221a[_0x1a47cc];return _0x7f4ab0;}import{BUILD_TIME,GIT_COMMIT,VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}export function getCliGitCommit(){const _0x4532dc=a130_0x7f4a,_0x4465ed=String(GIT_COMMIT);return _0x4465ed&&_0x4465ed!==_0x4532dc(0xb4)?_0x4465ed:'';}export function getCliVersionDisplay(){const _0x4c427e=a130_0x7f4a,_0x8edcbb=getCliGitCommit(),_0x2cacdd=BUILD_TIME[_0x4c427e(0xb6)](0x0,0xa);if(!_0x8edcbb||!_0x2cacdd)return VERSION;return VERSION+'\x20('+_0x8edcbb+',\x20'+_0x2cacdd+')';}function a130_0x5022(){const _0x34e23c=['11487322PKekbM','194EjPGEF','unknown','10mGMYcN','slice','12129ZBBNbb','5lEeNSs','509689MpFRll','6485004KyvlSg','7gtbWLU','1638916cyLSkX','1629894AaNxXG','3483152ahhAsW'];a130_0x5022=function(){return _0x34e23c;};return a130_0x5022();}
1
+ function a132_0x5a10(){const _0x408f07=['unknown','6fWivLD','1147700sJMllt','3740305IrlfJu','134836cuefll','4eADPYE','1122374oQGEZp','105kjnRJM','8124248jsyygd','slice','45upeMvU','2944676sJyPsg','4160pXMTjb'];a132_0x5a10=function(){return _0x408f07;};return a132_0x5a10();}(function(_0x545260,_0x18fe49){const _0xe7427a=a132_0xb070,_0xab12eb=_0x545260();while(!![]){try{const _0x36eb47=parseInt(_0xe7427a(0x83))/0x1+parseInt(_0xe7427a(0x7e))/0x2*(-parseInt(_0xe7427a(0x86))/0x3)+parseInt(_0xe7427a(0x84))/0x4*(parseInt(_0xe7427a(0x82))/0x5)+parseInt(_0xe7427a(0x80))/0x6*(-parseInt(_0xe7427a(0x7d))/0x7)+parseInt(_0xe7427a(0x87))/0x8+parseInt(_0xe7427a(0x89))/0x9*(-parseInt(_0xe7427a(0x81))/0xa)+-parseInt(_0xe7427a(0x85))/0xb;if(_0x36eb47===_0x18fe49)break;else _0xab12eb['push'](_0xab12eb['shift']());}catch(_0x89f187){_0xab12eb['push'](_0xab12eb['shift']());}}}(a132_0x5a10,0xb1ff4));import{BUILD_TIME,GIT_COMMIT,VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}function a132_0xb070(_0xbbdce9,_0x4f348f){_0xbbdce9=_0xbbdce9-0x7d;const _0x5a10bb=a132_0x5a10();let _0xb070a7=_0x5a10bb[_0xbbdce9];return _0xb070a7;}export function getCliGitCommit(){const _0x25d756=a132_0xb070,_0x15c2f0=String(GIT_COMMIT);return _0x15c2f0&&_0x15c2f0!==_0x25d756(0x7f)?_0x15c2f0:'';}export function getCliVersionDisplay(){const _0xe238c0=a132_0xb070,_0x224431=getCliGitCommit(),_0x3d6f45=BUILD_TIME[_0xe238c0(0x88)](0x0,0xa);if(!_0x224431||!_0x3d6f45)return VERSION;return VERSION+'\x20('+_0x224431+',\x20'+_0x3d6f45+')';}
@@ -1 +1 @@
1
- (function(_0x538318,_0x5dd79d){var _0x202869=a131_0x576b,_0x4ef034=_0x538318();while(!![]){try{var _0xde46f5=-parseInt(_0x202869(0x17a))/0x1+-parseInt(_0x202869(0x17b))/0x2+parseInt(_0x202869(0x185))/0x3*(-parseInt(_0x202869(0x17d))/0x4)+-parseInt(_0x202869(0x178))/0x5*(parseInt(_0x202869(0x183))/0x6)+parseInt(_0x202869(0x17c))/0x7*(-parseInt(_0x202869(0x179))/0x8)+parseInt(_0x202869(0x182))/0x9*(parseInt(_0x202869(0x17f))/0xa)+parseInt(_0x202869(0x181))/0xb*(parseInt(_0x202869(0x184))/0xc);if(_0xde46f5===_0x5dd79d)break;else _0x4ef034['push'](_0x4ef034['shift']());}catch(_0x31118a){_0x4ef034['push'](_0x4ef034['shift']());}}}(a131_0x27ef,0x348f3));function a131_0x576b(_0xb0e06b,_0xe99a40){_0xb0e06b=_0xb0e06b-0x178;var _0x27eff0=a131_0x27ef();var _0x576b6c=_0x27eff0[_0xb0e06b];return _0x576b6c;}export function writeCliSideChannelLine(_0x56bfe8){var _0x157d63=a131_0x576b;process[_0x157d63(0x180)][_0x157d63(0x17e)](_0x56bfe8+'\x0a');}function a131_0x27ef(){var _0x48a91e=['11zKZXAq','2452932qApUUQ','17022WDDzUi','16804644hElqqb','425079xtwYVd','150CyPnVf','112APFDay','182328STLHge','777322GZXtgE','188237tJWLDu','12mwuVue','write','10DPOlyM','stderr'];a131_0x27ef=function(){return _0x48a91e;};return a131_0x27ef();}
1
+ (function(_0x456148,_0x2cdd26){var _0x42f2f1=a133_0x5f14,_0x243559=_0x456148();while(!![]){try{var _0x4c43c4=-parseInt(_0x42f2f1(0xb9))/0x1+parseInt(_0x42f2f1(0xb5))/0x2+-parseInt(_0x42f2f1(0xba))/0x3+-parseInt(_0x42f2f1(0xb8))/0x4+-parseInt(_0x42f2f1(0xb1))/0x5*(parseInt(_0x42f2f1(0xb4))/0x6)+-parseInt(_0x42f2f1(0xb3))/0x7*(-parseInt(_0x42f2f1(0xbb))/0x8)+parseInt(_0x42f2f1(0xb6))/0x9*(parseInt(_0x42f2f1(0xb2))/0xa);if(_0x4c43c4===_0x2cdd26)break;else _0x243559['push'](_0x243559['shift']());}catch(_0x3394a7){_0x243559['push'](_0x243559['shift']());}}}(a133_0x2ba1,0x66402));function a133_0x5f14(_0x5326e9,_0x6a6b02){_0x5326e9=_0x5326e9-0xb0;var _0x2ba1f5=a133_0x2ba1();var _0x5f1403=_0x2ba1f5[_0x5326e9];return _0x5f1403;}function a133_0x2ba1(){var _0x23ef29=['9950QxLtUP','413RVXbvy','120htnwhY','806546QORnMS','11862cXwXLN','stderr','122664owKljZ','689257CEdsEy','2421087NrdNUP','66024NSOKAG','write','63960lbmwVA'];a133_0x2ba1=function(){return _0x23ef29;};return a133_0x2ba1();}export function writeCliSideChannelLine(_0x13f4c6){var _0x5cb676=a133_0x5f14;process[_0x5cb676(0xb7)][_0x5cb676(0xb0)](_0x13f4c6+'\x0a');}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/lovrabet-cli",
3
- "version": "2.1.23-beta.4",
3
+ "version": "2.2.0",
4
4
  "description": "Runtime CLI for Lovrabet apps, datasets, SQL, BFF, skills, and AI agent workflows.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -34,13 +34,13 @@
34
34
  }
35
35
  },
36
36
  "engines": {
37
- "node": ">=20"
37
+ "node": ">=22.20.0"
38
38
  },
39
39
  "publishConfig": {
40
40
  "access": "public"
41
41
  },
42
42
  "scripts": {
43
- "prebuild": "node scripts/generate-build-info.js",
43
+ "prebuild": "node scripts/generate-build-info.js && node scripts/generate-builtin-skill-manifest.mjs --check",
44
44
  "build": "rimraf lib && tsc && tsc-alias && javascript-obfuscator lib --output lib && node scripts/ensure-bin-executable.mjs",
45
45
  "prebuild:dev": "node scripts/generate-build-info.js",
46
46
  "build:dev": "rimraf lib && tsc && tsc-alias && node scripts/ensure-bin-executable.mjs",
@@ -49,12 +49,18 @@
49
49
  "pretypecheck": "node scripts/generate-build-info.js",
50
50
  "typecheck": "tsc --noEmit",
51
51
  "verify:bundled-jq": "node scripts/verify-bundled-jq.mjs",
52
+ "regression:release-smoke": "node scripts/regression-release-smoke.mjs",
53
+ "pack:dry-run-summary": "node scripts/package-dry-run-summary.mjs",
54
+ "verify:release-package": "node scripts/verify-release-package.mjs",
52
55
  "publish:github": "node scripts/publish-github.mjs",
53
56
  "lint": "echo 'No linter configured yet'",
54
57
  "beta-release": "node scripts/beta-release.mjs",
55
58
  "release": "node scripts/latest-release.mjs",
56
59
  "check:lockfile": "node scripts/check-lockfile-integrity.mjs",
57
60
  "check:skill-version": "node scripts/check-skill-version.mjs",
61
+ "generate:builtin-skill-manifest": "node scripts/generate-builtin-skill-manifest.mjs",
62
+ "check:builtin-skill-manifest": "node scripts/generate-builtin-skill-manifest.mjs --check",
63
+ "postinstall": "node scripts/postinstall.mjs",
58
64
  "ci": "npm run typecheck && npm run check:skill-version && npm run check:lockfile && npm run build",
59
65
  "pretest": "node scripts/generate-build-info.js",
60
66
  "test": "vitest run",
@@ -67,6 +73,9 @@
67
73
  },
68
74
  "files": [
69
75
  "lib",
76
+ "skills/lovrabet",
77
+ "skills/lovrabet.manifest.json",
78
+ "scripts/postinstall.mjs",
70
79
  "README.md",
71
80
  "LICENSE",
72
81
  "NOTICE"
@@ -83,6 +92,7 @@
83
92
  "meow": "^13.2.0",
84
93
  "mermaid": "11.16.0",
85
94
  "react": "^19.2.0",
95
+ "semver": "^7.7.3",
86
96
  "winston": "^3.17.0",
87
97
  "ws": "8.20.1",
88
98
  "yaml": "^2.9.0"
@@ -91,6 +101,7 @@
91
101
  "@types/fs-extra": "^11.0.4",
92
102
  "@types/node": "^24.5.2",
93
103
  "@types/react": "^19.2.0",
104
+ "@types/semver": "^7.7.1",
94
105
  "@vitest/coverage-v8": "^4.1.2",
95
106
  "javascript-obfuscator": "^5.4.1",
96
107
  "rimraf": "^6.1.3",
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync } from "node:fs";
3
+ import { dirname, join, resolve } from "node:path";
4
+ import { fileURLToPath, pathToFileURL } from "node:url";
5
+
6
+ const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
7
+ const entry = join(root, "lib", "postinstall.js");
8
+
9
+ if (!existsSync(entry)) {
10
+ if (existsSync(join(root, "src", "postinstall.ts"))) {
11
+ console.log("Skipping Lovrabet Built-in Skill postinstall in an unbuilt source checkout.");
12
+ } else {
13
+ console.error("[BUILTIN_SKILL_INSTALL_SOURCE_MISSING] Missing lib/postinstall.js");
14
+ process.exitCode = 1;
15
+ }
16
+ } else {
17
+ try {
18
+ const { runPostinstall } = await import(pathToFileURL(entry).href);
19
+ await runPostinstall();
20
+ } catch (error) {
21
+ console.error(error instanceof Error ? error.message : String(error));
22
+ process.exitCode = 1;
23
+ }
24
+ }