@lovrabet/lovrabet-cli 2.1.23 → 2.2.1-beta.1

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 (170) 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.d.ts +2 -1
  82. package/lib/core/api-client.js +1 -1
  83. package/lib/core/db-resolver.js +1 -1
  84. package/lib/core/sdk-client.js +1 -1
  85. package/lib/errors.js +1 -1
  86. package/lib/framework/build-all-flags.js +1 -1
  87. package/lib/framework/dryrun.js +1 -1
  88. package/lib/framework/flags.js +1 -1
  89. package/lib/framework/help.js +1 -1
  90. package/lib/framework/index.js +1 -1
  91. package/lib/framework/output.js +1 -1
  92. package/lib/framework/preparse.js +1 -1
  93. package/lib/framework/rate-limit.js +1 -1
  94. package/lib/framework/raw-flags.js +1 -1
  95. package/lib/framework/response.js +1 -1
  96. package/lib/framework/runner-confirmation.js +1 -1
  97. package/lib/framework/runner-error.js +1 -1
  98. package/lib/framework/runner.js +1 -1
  99. package/lib/framework/schema-export.js +1 -1
  100. package/lib/framework/service-order.js +1 -1
  101. package/lib/framework/types.js +1 -1
  102. package/lib/generated/build-info.d.ts +4 -4
  103. package/lib/generated/build-info.js +1 -1
  104. package/lib/help.js +1 -1
  105. package/lib/postinstall.d.ts +2 -0
  106. package/lib/postinstall.js +1 -0
  107. package/lib/runtime/confirmation.js +1 -1
  108. package/lib/runtime/event.js +1 -1
  109. package/lib/runtime/index.js +1 -1
  110. package/lib/runtime/queue.js +1 -1
  111. package/lib/runtime/resolve.js +1 -1
  112. package/lib/skills/builtin-skill.d.ts +37 -0
  113. package/lib/skills/builtin-skill.js +1 -0
  114. package/lib/skills/npx-skills-add.d.ts +3 -1
  115. package/lib/skills/npx-skills-add.js +1 -1
  116. package/lib/skills/runtime-skill-sync/constants.js +1 -1
  117. package/lib/skills/runtime-skill-sync/fs-utils.js +1 -1
  118. package/lib/skills/runtime-skill-sync/hashing.js +1 -1
  119. package/lib/skills/runtime-skill-sync/install-target.js +1 -1
  120. package/lib/skills/runtime-skill-sync/links.js +1 -1
  121. package/lib/skills/runtime-skill-sync/list-local.js +1 -1
  122. package/lib/skills/runtime-skill-sync/local-files.js +1 -1
  123. package/lib/skills/runtime-skill-sync/materialize.js +1 -1
  124. package/lib/skills/runtime-skill-sync/metadata.js +1 -1
  125. package/lib/skills/runtime-skill-sync/paths.js +1 -1
  126. package/lib/skills/runtime-skill-sync/push.js +1 -1
  127. package/lib/skills/runtime-skill-sync/scopes.js +1 -1
  128. package/lib/skills/runtime-skill-sync/zip-codec.js +1 -1
  129. package/lib/skills/runtime-skill-sync/zip-package.js +1 -1
  130. package/lib/skills/runtime-skill-sync.js +1 -1
  131. package/lib/skills/skill-presence.js +1 -1
  132. package/lib/utils/apply-jq-filter.js +1 -1
  133. package/lib/utils/logger.js +1 -1
  134. package/lib/utils/lossless-json.js +1 -1
  135. package/lib/utils/params.js +1 -1
  136. package/lib/utils/platform.js +1 -1
  137. package/lib/utils/update-notice.js +1 -1
  138. package/lib/utils/version.js +1 -1
  139. package/lib/utils/write-cli-side-channel.js +1 -1
  140. package/package.json +14 -3
  141. package/scripts/postinstall.mjs +24 -0
  142. package/skills/lovrabet/SKILL.md +704 -0
  143. package/skills/lovrabet/guides/app-resolution.md +165 -0
  144. package/skills/lovrabet/guides/dataset-and-data-workflow.md +170 -0
  145. package/skills/lovrabet/guides/sql-and-bff-workflow.md +132 -0
  146. package/skills/lovrabet/guides/troubleshooting.md +91 -0
  147. package/skills/lovrabet/references/dataset-discovery-workflow.md +160 -0
  148. package/skills/lovrabet/references/instant-api-workflow.md +259 -0
  149. package/skills/lovrabet/references/lovrabet-app-config.md +51 -0
  150. package/skills/lovrabet/references/lovrabet-app.md +113 -0
  151. package/skills/lovrabet/references/lovrabet-auth.md +136 -0
  152. package/skills/lovrabet/references/lovrabet-bff-workflow.md +139 -0
  153. package/skills/lovrabet/references/lovrabet-config-commands.md +104 -0
  154. package/skills/lovrabet/references/lovrabet-config.md +124 -0
  155. package/skills/lovrabet/references/lovrabet-doctor.md +26 -0
  156. package/skills/lovrabet/references/lovrabet-file-workflow.md +62 -0
  157. package/skills/lovrabet/references/lovrabet-kb-workflow.md +78 -0
  158. package/skills/lovrabet/references/lovrabet-logs.md +19 -0
  159. package/skills/lovrabet/references/lovrabet-ocr-workflow.md +83 -0
  160. package/skills/lovrabet/references/lovrabet-output-format-jq.md +40 -0
  161. package/skills/lovrabet/references/lovrabet-personal-bff-workflow.md +108 -0
  162. package/skills/lovrabet/references/lovrabet-schedule-workflow.md +181 -0
  163. package/skills/lovrabet/references/lovrabet-service-tree.md +279 -0
  164. package/skills/lovrabet/references/lovrabet-skill-authoring.md +128 -0
  165. package/skills/lovrabet/references/lovrabet-skill-install.md +34 -0
  166. package/skills/lovrabet/references/lovrabet-skill-sync.md +146 -0
  167. package/skills/lovrabet/references/lovrabet-sql-workflow.md +111 -0
  168. package/skills/lovrabet/references/lovrabet-update.md +34 -0
  169. package/skills/lovrabet/references/lovrabet-workspace.md +82 -0
  170. package/skills/lovrabet.manifest.json +38 -0
@@ -1 +1 @@
1
- (function(_0x37473d,_0x486b98){const _0x34df4c=a127_0x5d6b,_0x415950=_0x37473d();while(!![]){try{const _0x5676dc=-parseInt(_0x34df4c(0x9a))/0x1+-parseInt(_0x34df4c(0x82))/0x2*(parseInt(_0x34df4c(0x86))/0x3)+-parseInt(_0x34df4c(0x8c))/0x4+-parseInt(_0x34df4c(0x8d))/0x5+parseInt(_0x34df4c(0x96))/0x6+parseInt(_0x34df4c(0x88))/0x7*(parseInt(_0x34df4c(0x98))/0x8)+parseInt(_0x34df4c(0x93))/0x9;if(_0x5676dc===_0x486b98)break;else _0x415950['push'](_0x415950['shift']());}catch(_0x334d0c){_0x415950['push'](_0x415950['shift']());}}}(a127_0x2df5,0x33aa8));import{CliErrors}from'../errors.js';import{parseLosslessJson}from'../utils/lossless-json.js';export const MAX_DATA_UPDATE_IDS=0x3e8;function a127_0x2df5(){const _0x13b710=['number','6vmHSeR','map','2889173XvAErb','\x20must\x20be\x20a\x20positive\x20integer\x20or\x20numeric\x20string.','data\x20update\x20--params\x20must\x20be\x20a\x20JSON\x20object\x20with\x20id.','data\x20update\x20requires\x20\x22id\x22\x20in\x20--params.','44056IReuib','1308415QaornG','length','data\x20update\x20can\x20update\x20at\x20most\x20','\x20records\x20per\x20call;\x20received\x20','Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27','object','4750362bUnZzV','join','Example:\x20--params\x20\x27[{\x22name\x22:\x22a\x22},{\x22name\x22:\x22b\x22}]\x27','1343418ZzZBnF','string','8ClBcKV','data\x20update\x20id\x20array\x20cannot\x20be\x20empty.','296527euTjTX','isSafeInteger','Invalid\x20JSON\x20for\x20--params:\x20','isArray','batchCreate\x20--params\x20must\x20be\x20a\x20JSON\x20array\x20or\x20{\x22items\x22:[...]}','383612ibRVgl','id[','validation'];a127_0x2df5=function(){return _0x13b710;};return a127_0x2df5();}export function parseJsonParams(_0x46939c){const _0x21f929=a127_0x5d6b;if(!_0x46939c)return undefined;try{return parseLosslessJson(_0x46939c);}catch{throw CliErrors[_0x21f929(0x84)](_0x21f929(0x9c)+_0x46939c);}}export function parseJsonParamsValue(_0x4118ba){const _0x3e4ff8=a127_0x5d6b;if(!_0x4118ba)return undefined;try{return parseLosslessJson(_0x4118ba);}catch{throw CliErrors['validation'](_0x3e4ff8(0x9c)+_0x4118ba);}}export function parseBatchCreateItemsFromParams(_0x5c0751){const _0x1ba7de=a127_0x5d6b;if(Array[_0x1ba7de(0x80)](_0x5c0751))return _0x5c0751;if(_0x5c0751!==null&&_0x5c0751!==undefined&&typeof _0x5c0751===_0x1ba7de(0x92)&&Array[_0x1ba7de(0x80)](_0x5c0751['items']))return _0x5c0751['items'];throw CliErrors[_0x1ba7de(0x84)](_0x1ba7de(0x81),_0x1ba7de(0x95));}function parseDataUpdateId(_0x3f01b1,_0x253d20){const _0xe18fac=a127_0x5d6b;if(typeof _0x3f01b1===_0xe18fac(0x85)&&Number[_0xe18fac(0x9b)](_0x3f01b1)&&_0x3f01b1>0x0)return _0x3f01b1;if(typeof _0x3f01b1===_0xe18fac(0x97)){if(/^[1-9]\d*$/['test'](_0x3f01b1))return _0x3f01b1;}throw CliErrors['validation']('data\x20update\x20--params.'+_0x253d20+_0xe18fac(0x89));}function a127_0x5d6b(_0x5efc22,_0x566a50){_0x5efc22=_0x5efc22-0x80;const _0x2df57e=a127_0x2df5();let _0x5d6bf5=_0x2df57e[_0x5efc22];return _0x5d6bf5;}export function parseUpdateIdsFromParams(_0x5af62b){const _0x46372d=a127_0x5d6b;if(_0x5af62b===null||_0x5af62b===undefined||typeof _0x5af62b!==_0x46372d(0x92)||Array[_0x46372d(0x80)](_0x5af62b))throw CliErrors[_0x46372d(0x84)](_0x46372d(0x8a),_0x46372d(0x91));const _0x2a484b=_0x5af62b['id'];if(_0x2a484b===undefined||_0x2a484b===null)throw CliErrors['validation'](_0x46372d(0x8b),'Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27');const _0x28ff72=Array[_0x46372d(0x80)](_0x2a484b)?_0x2a484b:[_0x2a484b];if(_0x28ff72[_0x46372d(0x8e)]===0x0)throw CliErrors['validation'](_0x46372d(0x99));if(_0x28ff72['length']>MAX_DATA_UPDATE_IDS)throw CliErrors[_0x46372d(0x84)](_0x46372d(0x8f)+MAX_DATA_UPDATE_IDS+_0x46372d(0x90)+_0x28ff72[_0x46372d(0x8e)]+'.');return _0x28ff72[_0x46372d(0x87)]((_0x100443,_0x368402)=>parseDataUpdateId(_0x100443,Array[_0x46372d(0x80)](_0x2a484b)?_0x46372d(0x83)+_0x368402+']':'id'));}export function normalizeUpdateParamsForRuntime(_0x36eea4,_0x32fefe){const _0x259a7a=a127_0x5d6b;if(Array[_0x259a7a(0x80)](_0x36eea4['id'])&&_0x32fefe[_0x259a7a(0x8e)]>0x1)return{..._0x36eea4,'id':_0x32fefe[_0x259a7a(0x94)](',')};return _0x36eea4;}
1
+ (function(_0x5cfe6b,_0x32d033){const _0x7f61d7=a129_0x15cb,_0x46481c=_0x5cfe6b();while(!![]){try{const _0x21ae85=parseInt(_0x7f61d7(0x115))/0x1+-parseInt(_0x7f61d7(0x117))/0x2+parseInt(_0x7f61d7(0x11d))/0x3+-parseInt(_0x7f61d7(0x119))/0x4*(parseInt(_0x7f61d7(0x116))/0x5)+parseInt(_0x7f61d7(0x10e))/0x6+parseInt(_0x7f61d7(0x10f))/0x7*(-parseInt(_0x7f61d7(0x112))/0x8)+parseInt(_0x7f61d7(0x110))/0x9;if(_0x21ae85===_0x32d033)break;else _0x46481c['push'](_0x46481c['shift']());}catch(_0x154b16){_0x46481c['push'](_0x46481c['shift']());}}}(a129_0x2c84,0x8bdaa));import{CliErrors}from'../errors.js';function a129_0x2c84(){const _0xcd56=['673582CkjVVo','6776253rMSJff','data\x20update\x20id\x20array\x20cannot\x20be\x20empty.','32GnkQSN','object','validation','153797ZPOjoj','530fREYZq','692654SOlZfo','\x20records\x20per\x20call;\x20received\x20','30248HrJPzv','map','isArray','data\x20update\x20--params.','499980MhsjpL','batchCreate\x20--params\x20must\x20be\x20a\x20JSON\x20array\x20or\x20{\x22items\x22:[...]}','Invalid\x20JSON\x20for\x20--params:\x20','Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27','length','items','string','data\x20update\x20--params\x20must\x20be\x20a\x20JSON\x20object\x20with\x20id.','\x20must\x20be\x20a\x20positive\x20integer\x20or\x20numeric\x20string.','6193626lKTHCO'];a129_0x2c84=function(){return _0xcd56;};return a129_0x2c84();}function a129_0x15cb(_0x4bcc62,_0x5f53fb){_0x4bcc62=_0x4bcc62-0x109;const _0x2c8476=a129_0x2c84();let _0x15cb5b=_0x2c8476[_0x4bcc62];return _0x15cb5b;}import{parseLosslessJson}from'../utils/lossless-json.js';export const MAX_DATA_UPDATE_IDS=0x3e8;export function parseJsonParams(_0x380903){const _0x33ffbc=a129_0x15cb;if(!_0x380903)return undefined;try{return parseLosslessJson(_0x380903);}catch{throw CliErrors['validation'](_0x33ffbc(0x11f)+_0x380903);}}export function parseJsonParamsValue(_0x46db78){const _0x4a8436=a129_0x15cb;if(!_0x46db78)return undefined;try{return parseLosslessJson(_0x46db78);}catch{throw CliErrors[_0x4a8436(0x114)](_0x4a8436(0x11f)+_0x46db78);}}export function parseBatchCreateItemsFromParams(_0x452849){const _0x22b805=a129_0x15cb;if(Array[_0x22b805(0x11b)](_0x452849))return _0x452849;if(_0x452849!==null&&_0x452849!==undefined&&typeof _0x452849===_0x22b805(0x113)&&Array[_0x22b805(0x11b)](_0x452849[_0x22b805(0x10a)]))return _0x452849['items'];throw CliErrors[_0x22b805(0x114)](_0x22b805(0x11e),'Example:\x20--params\x20\x27[{\x22name\x22:\x22a\x22},{\x22name\x22:\x22b\x22}]\x27');}function parseDataUpdateId(_0x51484f,_0x2a3391){const _0x56d983=a129_0x15cb;if(typeof _0x51484f==='number'&&Number['isSafeInteger'](_0x51484f)&&_0x51484f>0x0)return _0x51484f;if(typeof _0x51484f===_0x56d983(0x10b)){if(/^[1-9]\d*$/['test'](_0x51484f))return _0x51484f;}throw CliErrors[_0x56d983(0x114)](_0x56d983(0x11c)+_0x2a3391+_0x56d983(0x10d));}export function parseUpdateIdsFromParams(_0x485466){const _0x466d8e=a129_0x15cb;if(_0x485466===null||_0x485466===undefined||typeof _0x485466!==_0x466d8e(0x113)||Array[_0x466d8e(0x11b)](_0x485466))throw CliErrors[_0x466d8e(0x114)](_0x466d8e(0x10c),_0x466d8e(0x120));const _0x2c6280=_0x485466['id'];if(_0x2c6280===undefined||_0x2c6280===null)throw CliErrors[_0x466d8e(0x114)]('data\x20update\x20requires\x20\x22id\x22\x20in\x20--params.',_0x466d8e(0x120));const _0x5d2a1d=Array[_0x466d8e(0x11b)](_0x2c6280)?_0x2c6280:[_0x2c6280];if(_0x5d2a1d['length']===0x0)throw CliErrors[_0x466d8e(0x114)](_0x466d8e(0x111));if(_0x5d2a1d[_0x466d8e(0x109)]>MAX_DATA_UPDATE_IDS)throw CliErrors[_0x466d8e(0x114)]('data\x20update\x20can\x20update\x20at\x20most\x20'+MAX_DATA_UPDATE_IDS+_0x466d8e(0x118)+_0x5d2a1d[_0x466d8e(0x109)]+'.');return _0x5d2a1d[_0x466d8e(0x11a)]((_0x4369fa,_0x1c63fe)=>parseDataUpdateId(_0x4369fa,Array[_0x466d8e(0x11b)](_0x2c6280)?'id['+_0x1c63fe+']':'id'));}export function normalizeUpdateParamsForRuntime(_0x22fce9,_0x3090a9){const _0x53affb=a129_0x15cb;if(Array[_0x53affb(0x11b)](_0x22fce9['id'])&&_0x3090a9[_0x53affb(0x109)]>0x1)return{..._0x22fce9,'id':_0x3090a9['join'](',')};return _0x22fce9;}
@@ -1 +1 @@
1
- const a128_0x251f8f=a128_0x1e0c;(function(_0x22001c,_0x43dfe5){const _0x2b2c18=a128_0x1e0c,_0x2b26af=_0x22001c();while(!![]){try{const _0x19df1b=-parseInt(_0x2b2c18(0x1c4))/0x1+parseInt(_0x2b2c18(0x1cc))/0x2*(parseInt(_0x2b2c18(0x1cf))/0x3)+-parseInt(_0x2b2c18(0x1c8))/0x4*(-parseInt(_0x2b2c18(0x1cb))/0x5)+-parseInt(_0x2b2c18(0x1c9))/0x6*(parseInt(_0x2b2c18(0x1c3))/0x7)+-parseInt(_0x2b2c18(0x1c6))/0x8*(-parseInt(_0x2b2c18(0x1c7))/0x9)+parseInt(_0x2b2c18(0x1c5))/0xa+-parseInt(_0x2b2c18(0x1ca))/0xb;if(_0x19df1b===_0x43dfe5)break;else _0x2b26af['push'](_0x2b26af['shift']());}catch(_0x2b96af){_0x2b26af['push'](_0x2b26af['shift']());}}}(a128_0x432b,0xa66e0));function a128_0x432b(){const _0x5b1bd1=['88LpPqTq','.cmd','win32','74427rEbnFI','platform','7lodPYG','844169dgMCPr','9863490WBnmZY','440GKapbF','32013OxxNWi','2741368QUMtjA','5626914KtYbvw','5447618uglMAd','5bmhKom'];a128_0x432b=function(){return _0x5b1bd1;};return a128_0x432b();}export const isWindows=process[a128_0x251f8f(0x1d0)]===a128_0x251f8f(0x1ce);function a128_0x1e0c(_0x276e84,_0x2a4317){_0x276e84=_0x276e84-0x1c3;const _0x432bf9=a128_0x432b();let _0x1e0cbe=_0x432bf9[_0x276e84];return _0x1e0cbe;}export function resolveNpmBin(_0x187edc){const _0x26285c=a128_0x251f8f;return isWindows?_0x187edc+_0x26285c(0x1cd):_0x187edc;}
1
+ const a130_0x71c48e=a130_0x13f2;function a130_0x13f2(_0x10aecd,_0x5ed49f){_0x10aecd=_0x10aecd-0x1ec;const _0x1cefa1=a130_0x1cef();let _0x13f209=_0x1cefa1[_0x10aecd];return _0x13f209;}(function(_0x1668b3,_0x4ba487){const _0x416dc6=a130_0x13f2,_0x74a774=_0x1668b3();while(!![]){try{const _0x2b78a4=parseInt(_0x416dc6(0x1ec))/0x1+parseInt(_0x416dc6(0x1ef))/0x2*(parseInt(_0x416dc6(0x1f0))/0x3)+parseInt(_0x416dc6(0x1ee))/0x4+parseInt(_0x416dc6(0x1f6))/0x5*(-parseInt(_0x416dc6(0x1f7))/0x6)+-parseInt(_0x416dc6(0x1f4))/0x7+-parseInt(_0x416dc6(0x1f3))/0x8+parseInt(_0x416dc6(0x1f5))/0x9*(parseInt(_0x416dc6(0x1ed))/0xa);if(_0x2b78a4===_0x4ba487)break;else _0x74a774['push'](_0x74a774['shift']());}catch(_0x3e789b){_0x74a774['push'](_0x74a774['shift']());}}}(a130_0x1cef,0x6051b));export const isWindows=process[a130_0x71c48e(0x1f2)]==='win32';export function resolveNpmBin(_0x51a7bf){const _0x40edb8=a130_0x71c48e;return isWindows?_0x51a7bf+_0x40edb8(0x1f1):_0x51a7bf;}function a130_0x1cef(){const _0x5e9447=['153892LVfaTT','30DUbiOH','2317948IrpoMZ','31866cnAvKq','33apYcvo','.cmd','platform','4161864tyzqXi','3814678TGvqZu','2270214oiRtsh','1028350FihHGC','6fuTGhv'];a130_0x1cef=function(){return _0x5e9447;};return a130_0x1cef();}
@@ -1 +1 @@
1
- (function(_0x5f0df7,_0x2ca386){const _0x4e727d=a129_0x4667,_0x529d37=_0x5f0df7();while(!![]){try{const _0x21ab2a=-parseInt(_0x4e727d(0x141))/0x1*(parseInt(_0x4e727d(0x12b))/0x2)+parseInt(_0x4e727d(0x133))/0x3+-parseInt(_0x4e727d(0x12a))/0x4*(-parseInt(_0x4e727d(0x126))/0x5)+parseInt(_0x4e727d(0x136))/0x6*(-parseInt(_0x4e727d(0x130))/0x7)+-parseInt(_0x4e727d(0x129))/0x8*(parseInt(_0x4e727d(0x134))/0x9)+-parseInt(_0x4e727d(0x11c))/0xa*(parseInt(_0x4e727d(0x131))/0xb)+parseInt(_0x4e727d(0x12c))/0xc;if(_0x21ab2a===_0x2ca386)break;else _0x529d37['push'](_0x529d37['shift']());}catch(_0x573295){_0x529d37['push'](_0x529d37['shift']());}}}(a129_0x42c1,0x3258c));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';function a129_0x4667(_0x4e6314,_0x54de16){_0x4e6314=_0x4e6314-0x11b;const _0x42c132=a129_0x42c1();let _0x4667a4=_0x42c132[_0x4e6314];return _0x4667a4;}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(_0x48fdb5){const _0x54c23f=a129_0x4667,_0x243850=_0x48fdb5[_0x54c23f(0x137)]()[_0x54c23f(0x124)](/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/);if(!_0x243850)return null;return{'major':Number(_0x243850[0x1]),'minor':Number(_0x243850[0x2]),'patch':Number(_0x243850[0x3]),'prerelease':_0x243850[0x4]};}function a129_0x42c1(){const _0x54a0ab=['735735WZhLEx','327042vJujIP','now','90138fkCGxD','trim','fromEntries','\x20available,\x20current\x20','checkedAt','json','toLowerCase','timeout','latest','/-/package/','/dist-tags','87WtqopN',',\x20run:\x20','true','number','.cache','\x20update','update-check.json','1715650iyynUd','filter','patch','yes','entries','object','stringify','utf8','match','prerelease','1210645rLiiiS','lastNotifiedAt','major','88XeCtik','4drqLGQ','3818PzREWN','7457580KbQHEH','lovrabet-cli','string','Invalid\x20semver','77FFNeLb','11bQCXLP','lastNotifiedVersion'];a129_0x42c1=function(){return _0x54a0ab;};return a129_0x42c1();}function compareSemver(_0x360c0e,_0x2fd5f){const _0x1815b2=a129_0x4667,_0x194d16=parseSemver(_0x360c0e),_0xfbc557=parseSemver(_0x2fd5f);if(!_0x194d16||!_0xfbc557)throw new Error(_0x1815b2(0x12f));for(const _0x361354 of[_0x1815b2(0x128),'minor',_0x1815b2(0x11e)]){if(_0x194d16[_0x361354]<_0xfbc557[_0x361354])return-0x1;if(_0x194d16[_0x361354]>_0xfbc557[_0x361354])return 0x1;}if(!_0x194d16['prerelease']&&!_0xfbc557[_0x1815b2(0x125)])return 0x0;if(!_0x194d16[_0x1815b2(0x125)])return 0x1;if(!_0xfbc557[_0x1815b2(0x125)])return-0x1;if(_0x194d16['prerelease']===_0xfbc557[_0x1815b2(0x125)])return 0x0;return _0x194d16[_0x1815b2(0x125)]<_0xfbc557[_0x1815b2(0x125)]?-0x1:0x1;}function isUpdateNoticeDisabled(){const _0x33c6a0=a129_0x4667,_0x35f8e6=process.env.LOVRABET_NO_UPDATE_NOTICE?.['trim']()[_0x33c6a0(0x13c)]();return _0x35f8e6==='1'||_0x35f8e6===_0x33c6a0(0x143)||_0x35f8e6===_0x33c6a0(0x11f);}function cacheRoot(){const _0x2a8420=a129_0x4667;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x2a8420(0x145));}export function getUpdateNoticeCachePath(){const _0xbffd3b=a129_0x4667;return join(cacheRoot(),_0xbffd3b(0x12d),_0xbffd3b(0x11b));}async function readUpdateNoticeCache(){const _0x4f66ad=a129_0x4667;try{const _0x139e11=await readFile(getUpdateNoticeCachePath(),'utf8'),_0x193480=JSON['parse'](_0x139e11);if(!_0x193480||typeof _0x193480!==_0x4f66ad(0x121))return{};return _0x193480;}catch{return{};}}async function writeUpdateNoticeCache(_0x7e7c3f){const _0x37eecf=a129_0x4667;try{const _0x1bc498=getUpdateNoticeCachePath();await mkdir(dirname(_0x1bc498),{'recursive':!![]}),await writeFile(_0x1bc498,JSON[_0x37eecf(0x122)](_0x7e7c3f,null,0x2)+'\x0a',_0x37eecf(0x123));}catch{}}function isFreshCheck(_0x3d8b7c,_0x1b9f41){const _0x401453=a129_0x4667;return typeof _0x3d8b7c[_0x401453(0x13a)]===_0x401453(0x144)&&_0x1b9f41-_0x3d8b7c['checkedAt']<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x3b7485,_0x207397,_0x279d5b){const _0x3b818c=a129_0x4667;return _0x3b7485[_0x3b818c(0x132)]===_0x207397&&typeof _0x3b7485[_0x3b818c(0x127)]===_0x3b818c(0x144)&&_0x279d5b-_0x3b7485['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}async function fetchNpmDistTags(_0xbd169=0x5dc){const _0x551a09=a129_0x4667;try{const _0xea2c=NPM_REGISTRY_BASE_URL+_0x551a09(0x13f)+encodeURIComponent(LOVRABET_NPM_PACKAGE_NAME)+_0x551a09(0x140),_0x543c93=await fetch(_0xea2c,{'signal':AbortSignal[_0x551a09(0x13d)](_0xbd169)});if(!_0x543c93['ok'])return null;const _0x2437d1=await _0x543c93[_0x551a09(0x13b)]();if(!_0x2437d1||typeof _0x2437d1!==_0x551a09(0x121))return null;return Object[_0x551a09(0x138)](Object[_0x551a09(0x120)](_0x2437d1)[_0x551a09(0x11d)](([,_0x250063])=>typeof _0x250063===_0x551a09(0x12e)&&_0x250063[_0x551a09(0x137)]())['map'](([_0x585ca2,_0x22f2d2])=>[_0x585ca2,String(_0x22f2d2)[_0x551a09(0x137)]()]));}catch{return null;}}export function buildNpmVersionUrl(_0x4ff711){return'https://www.npmjs.com/package/'+LOVRABET_NPM_PACKAGE_NAME+'/v/'+_0x4ff711;}export async function resolveLatestUpdateNotice(){const _0x86f6fb=a129_0x4667;if(isUpdateNoticeDisabled())return null;try{const _0x60923b=Date[_0x86f6fb(0x135)](),_0x2e9262=getCliVersion(),_0x4ff0bf=await readUpdateNoticeCache();let _0x3db6cc=isFreshCheck(_0x4ff0bf,_0x60923b)?_0x4ff0bf[_0x86f6fb(0x13e)]?.[_0x86f6fb(0x137)]():undefined;if(!_0x3db6cc&&!isFreshCheck(_0x4ff0bf,_0x60923b)){const _0x1afc1f=await fetchNpmDistTags();_0x3db6cc=_0x1afc1f?.[_0x86f6fb(0x13e)]?.[_0x86f6fb(0x137)](),await writeUpdateNoticeCache({..._0x4ff0bf,'checkedAt':_0x60923b,'latest':_0x3db6cc,'failed':!_0x3db6cc});}if(!_0x3db6cc||compareSemver(_0x2e9262,_0x3db6cc)>=0x0)return null;if(isRecentlyNotified(_0x4ff0bf,_0x3db6cc,_0x60923b))return null;const _0x1f9fdc=CLI_BIN_NAME+_0x86f6fb(0x146);return await writeUpdateNoticeCache({..._0x4ff0bf,'checkedAt':isFreshCheck(_0x4ff0bf,_0x60923b)?_0x4ff0bf[_0x86f6fb(0x13a)]:_0x60923b,'latest':_0x3db6cc,'failed':![],'lastNotifiedVersion':_0x3db6cc,'lastNotifiedAt':_0x60923b}),{'command':_0x1f9fdc,'current':_0x2e9262,'latest':_0x3db6cc,'url':buildNpmVersionUrl(_0x3db6cc),'message':CLI_BIN_NAME+'\x20'+_0x3db6cc+_0x86f6fb(0x139)+_0x2e9262+_0x86f6fb(0x142)+_0x1f9fdc};}catch{return null;}}
1
+ (function(_0x1ef0b6,_0x2e69ac){const _0x4a06a9=a131_0xa388,_0x3395e1=_0x1ef0b6();while(!![]){try{const _0x4facd8=-parseInt(_0x4a06a9(0xe2))/0x1+-parseInt(_0x4a06a9(0xc8))/0x2+parseInt(_0x4a06a9(0xca))/0x3*(parseInt(_0x4a06a9(0xd9))/0x4)+-parseInt(_0x4a06a9(0xc7))/0x5*(-parseInt(_0x4a06a9(0xc4))/0x6)+parseInt(_0x4a06a9(0xcd))/0x7*(-parseInt(_0x4a06a9(0xe9))/0x8)+-parseInt(_0x4a06a9(0xc1))/0x9*(-parseInt(_0x4a06a9(0xcc))/0xa)+parseInt(_0x4a06a9(0xe6))/0xb*(parseInt(_0x4a06a9(0xe5))/0xc);if(_0x4facd8===_0x2e69ac)break;else _0x3395e1['push'](_0x3395e1['shift']());}catch(_0x5b405b){_0x3395e1['push'](_0x3395e1['shift']());}}}(a131_0x46c3,0x36c21));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(_0xdeda18){const _0x2a2353=a131_0xa388,_0x44d89d=_0xdeda18[_0x2a2353(0xc6)]()[_0x2a2353(0xe1)](/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/);if(!_0x44d89d)return null;return{'major':Number(_0x44d89d[0x1]),'minor':Number(_0x44d89d[0x2]),'patch':Number(_0x44d89d[0x3]),'prerelease':_0x44d89d[0x4]};}function compareSemver(_0x1d4cca,_0x3f7ff9){const _0x1db645=a131_0xa388,_0x162991=parseSemver(_0x1d4cca),_0x14e578=parseSemver(_0x3f7ff9);if(!_0x162991||!_0x14e578)throw new Error(_0x1db645(0xcf));for(const _0x25f43c of[_0x1db645(0xd2),_0x1db645(0xd7),'patch']){if(_0x162991[_0x25f43c]<_0x14e578[_0x25f43c])return-0x1;if(_0x162991[_0x25f43c]>_0x14e578[_0x25f43c])return 0x1;}if(!_0x162991[_0x1db645(0xd6)]&&!_0x14e578[_0x1db645(0xd6)])return 0x0;if(!_0x162991['prerelease'])return 0x1;if(!_0x14e578['prerelease'])return-0x1;if(_0x162991[_0x1db645(0xd6)]===_0x14e578[_0x1db645(0xd6)])return 0x0;return _0x162991[_0x1db645(0xd6)]<_0x14e578['prerelease']?-0x1:0x1;}function isUpdateNoticeDisabled(){const _0x54284d=a131_0xa388,_0x2a3f38=process.env.LOVRABET_NO_UPDATE_NOTICE?.[_0x54284d(0xc6)]()[_0x54284d(0xde)]();return _0x2a3f38==='1'||_0x2a3f38===_0x54284d(0xd5)||_0x2a3f38===_0x54284d(0xd4);}function cacheRoot(){return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),'.cache');}function a131_0x46c3(){const _0xdbdc2f=['stringify','json','24WwGJIc','\x20update','9wQHipE','parse','update-check.json','209904EnhxMM','string','trim','10ykhlyl','115418LMJrTW','/v/','39QFzDUr','object','248110YxZmUR','627662bBqvrt','lovrabet-cli','Invalid\x20semver','number','latest','major','now','yes','true','prerelease','minor','https://www.npmjs.com/package/','127048WnHAvs','timeout','checkedAt','lastNotifiedAt','entries','toLowerCase','fromEntries','\x20available,\x20current\x20','match','48818FDcAgd','lastNotifiedVersion','/-/package/','12lVUocL','1013419qQUpVt'];a131_0x46c3=function(){return _0xdbdc2f;};return a131_0x46c3();}export function getUpdateNoticeCachePath(){const _0x504102=a131_0xa388;return join(cacheRoot(),_0x504102(0xce),_0x504102(0xc3));}async function readUpdateNoticeCache(){const _0x3c5f0d=a131_0xa388;try{const _0x547e9d=await readFile(getUpdateNoticeCachePath(),'utf8'),_0x2ba789=JSON[_0x3c5f0d(0xc2)](_0x547e9d);if(!_0x2ba789||typeof _0x2ba789!==_0x3c5f0d(0xcb))return{};return _0x2ba789;}catch{return{};}}async function writeUpdateNoticeCache(_0x3092fa){const _0x5b0471=a131_0xa388;try{const _0x4334f5=getUpdateNoticeCachePath();await mkdir(dirname(_0x4334f5),{'recursive':!![]}),await writeFile(_0x4334f5,JSON[_0x5b0471(0xe7)](_0x3092fa,null,0x2)+'\x0a','utf8');}catch{}}function isFreshCheck(_0x57373a,_0x26617a){const _0x383064=a131_0xa388;return typeof _0x57373a[_0x383064(0xdb)]===_0x383064(0xd0)&&_0x26617a-_0x57373a['checkedAt']<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x373e5d,_0x5e21ba,_0x1b50ba){const _0x272624=a131_0xa388;return _0x373e5d[_0x272624(0xe3)]===_0x5e21ba&&typeof _0x373e5d['lastNotifiedAt']===_0x272624(0xd0)&&_0x1b50ba-_0x373e5d[_0x272624(0xdc)]<UPDATE_NOTICE_TTL_MS;}async function fetchNpmDistTags(_0x54059c=0x5dc){const _0x48eada=a131_0xa388;try{const _0x26afc0=NPM_REGISTRY_BASE_URL+_0x48eada(0xe4)+encodeURIComponent(LOVRABET_NPM_PACKAGE_NAME)+'/dist-tags',_0x1aec0e=await fetch(_0x26afc0,{'signal':AbortSignal[_0x48eada(0xda)](_0x54059c)});if(!_0x1aec0e['ok'])return null;const _0x26f451=await _0x1aec0e[_0x48eada(0xe8)]();if(!_0x26f451||typeof _0x26f451!==_0x48eada(0xcb))return null;return Object[_0x48eada(0xdf)](Object[_0x48eada(0xdd)](_0x26f451)['filter'](([,_0x327a63])=>typeof _0x327a63===_0x48eada(0xc5)&&_0x327a63[_0x48eada(0xc6)]())['map'](([_0x17581e,_0x4a046a])=>[_0x17581e,String(_0x4a046a)[_0x48eada(0xc6)]()]));}catch{return null;}}function a131_0xa388(_0x218999,_0x4fb2b3){_0x218999=_0x218999-0xc1;const _0x46c3d9=a131_0x46c3();let _0xa388e0=_0x46c3d9[_0x218999];return _0xa388e0;}export function buildNpmVersionUrl(_0x1b1a8e){const _0x1abafb=a131_0xa388;return _0x1abafb(0xd8)+LOVRABET_NPM_PACKAGE_NAME+_0x1abafb(0xc9)+_0x1b1a8e;}export async function resolveLatestUpdateNotice(){const _0x183721=a131_0xa388;if(isUpdateNoticeDisabled())return null;try{const _0x305b7b=Date[_0x183721(0xd3)](),_0x109103=getCliVersion(),_0x332858=await readUpdateNoticeCache();let _0x538503=isFreshCheck(_0x332858,_0x305b7b)?_0x332858[_0x183721(0xd1)]?.[_0x183721(0xc6)]():undefined;if(!_0x538503&&!isFreshCheck(_0x332858,_0x305b7b)){const _0x1f9692=await fetchNpmDistTags();_0x538503=_0x1f9692?.[_0x183721(0xd1)]?.[_0x183721(0xc6)](),await writeUpdateNoticeCache({..._0x332858,'checkedAt':_0x305b7b,'latest':_0x538503,'failed':!_0x538503});}if(!_0x538503||compareSemver(_0x109103,_0x538503)>=0x0)return null;if(isRecentlyNotified(_0x332858,_0x538503,_0x305b7b))return null;const _0x100f76=CLI_BIN_NAME+_0x183721(0xea);return await writeUpdateNoticeCache({..._0x332858,'checkedAt':isFreshCheck(_0x332858,_0x305b7b)?_0x332858['checkedAt']:_0x305b7b,'latest':_0x538503,'failed':![],'lastNotifiedVersion':_0x538503,'lastNotifiedAt':_0x305b7b}),{'command':_0x100f76,'current':_0x109103,'latest':_0x538503,'url':buildNpmVersionUrl(_0x538503),'message':CLI_BIN_NAME+'\x20'+_0x538503+_0x183721(0xe0)+_0x109103+',\x20run:\x20'+_0x100f76};}catch{return null;}}
@@ -1 +1 @@
1
- (function(_0x305d9c,_0x4920a7){const _0x2a30bb=a130_0x5aa0,_0x590d9b=_0x305d9c();while(!![]){try{const _0x18e40c=parseInt(_0x2a30bb(0xd5))/0x1+parseInt(_0x2a30bb(0xde))/0x2*(-parseInt(_0x2a30bb(0xda))/0x3)+-parseInt(_0x2a30bb(0xdb))/0x4*(parseInt(_0x2a30bb(0xdd))/0x5)+-parseInt(_0x2a30bb(0xd6))/0x6+parseInt(_0x2a30bb(0xd9))/0x7+parseInt(_0x2a30bb(0xd4))/0x8+-parseInt(_0x2a30bb(0xdc))/0x9*(-parseInt(_0x2a30bb(0xd8))/0xa);if(_0x18e40c===_0x4920a7)break;else _0x590d9b['push'](_0x590d9b['shift']());}catch(_0xb75485){_0x590d9b['push'](_0x590d9b['shift']());}}}(a130_0x2456,0xd25ef));import{BUILD_TIME,GIT_COMMIT,VERSION}from'../generated/build-info.js';function a130_0x2456(){const _0x200137=['unknown','33456KtnQiu','546308RSdSYz','5002596DLfIsW','slice','391480qzSxNz','2802464FlDlnY','3411SzlMLa','64oAbFAu','477OJGcRG','398290zktUXZ','98iIgZIW'];a130_0x2456=function(){return _0x200137;};return a130_0x2456();}export function getCliVersion(){return VERSION;}function a130_0x5aa0(_0x328dbb,_0x5667fd){_0x328dbb=_0x328dbb-0xd3;const _0x245653=a130_0x2456();let _0x5aa032=_0x245653[_0x328dbb];return _0x5aa032;}export function getCliGitCommit(){const _0xb45b8a=a130_0x5aa0,_0x1bc74d=String(GIT_COMMIT);return _0x1bc74d&&_0x1bc74d!==_0xb45b8a(0xd3)?_0x1bc74d:'';}export function getCliVersionDisplay(){const _0x5c111c=a130_0x5aa0,_0x1ca1d2=getCliGitCommit(),_0x4daf6e=BUILD_TIME[_0x5c111c(0xd7)](0x0,0xa);if(!_0x1ca1d2||!_0x4daf6e)return VERSION;return VERSION+'\x20('+_0x1ca1d2+',\x20'+_0x4daf6e+')';}
1
+ function a132_0x3129(_0x516cef,_0x3a9e07){_0x516cef=_0x516cef-0x1ba;const _0x38f7eb=a132_0x38f7();let _0x31297f=_0x38f7eb[_0x516cef];return _0x31297f;}function a132_0x38f7(){const _0x5599b4=['608331zQJSgV','unknown','slice','8457620awnLAq','3078990SjbIss','9unEZIu','41315DTeOWs','36ydMTjx','239065hKAYgu','4148968QBQcPJ','2FzmzcL','2850841ldonbX'];a132_0x38f7=function(){return _0x5599b4;};return a132_0x38f7();}(function(_0xffee70,_0x407ca9){const _0x28e32c=a132_0x3129,_0x6665ee=_0xffee70();while(!![]){try{const _0x706f0d=-parseInt(_0x28e32c(0x1c3))/0x1+-parseInt(_0x28e32c(0x1bb))/0x2*(-parseInt(_0x28e32c(0x1bd))/0x3)+parseInt(_0x28e32c(0x1c4))/0x4*(-parseInt(_0x28e32c(0x1c5))/0x5)+parseInt(_0x28e32c(0x1c1))/0x6+parseInt(_0x28e32c(0x1bc))/0x7+-parseInt(_0x28e32c(0x1ba))/0x8*(-parseInt(_0x28e32c(0x1c2))/0x9)+-parseInt(_0x28e32c(0x1c0))/0xa;if(_0x706f0d===_0x407ca9)break;else _0x6665ee['push'](_0x6665ee['shift']());}catch(_0xddb7af){_0x6665ee['push'](_0x6665ee['shift']());}}}(a132_0x38f7,0x4f350));import{BUILD_TIME,GIT_COMMIT,VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}export function getCliGitCommit(){const _0x330c15=a132_0x3129,_0x5050be=String(GIT_COMMIT);return _0x5050be&&_0x5050be!==_0x330c15(0x1be)?_0x5050be:'';}export function getCliVersionDisplay(){const _0xa96f66=a132_0x3129,_0x38ff9e=getCliGitCommit(),_0x93bb6d=BUILD_TIME[_0xa96f66(0x1bf)](0x0,0xa);if(!_0x38ff9e||!_0x93bb6d)return VERSION;return VERSION+'\x20('+_0x38ff9e+',\x20'+_0x93bb6d+')';}
@@ -1 +1 @@
1
- (function(_0xe5d1a7,_0x11f7cc){var _0x1f4c68=a131_0x2d7e,_0x1cfebd=_0xe5d1a7();while(!![]){try{var _0x2137be=parseInt(_0x1f4c68(0xcb))/0x1+-parseInt(_0x1f4c68(0xc5))/0x2*(-parseInt(_0x1f4c68(0xc4))/0x3)+-parseInt(_0x1f4c68(0xca))/0x4+parseInt(_0x1f4c68(0xcc))/0x5+parseInt(_0x1f4c68(0xc9))/0x6*(-parseInt(_0x1f4c68(0xc3))/0x7)+parseInt(_0x1f4c68(0xc8))/0x8+parseInt(_0x1f4c68(0xc6))/0x9*(-parseInt(_0x1f4c68(0xc7))/0xa);if(_0x2137be===_0x11f7cc)break;else _0x1cfebd['push'](_0x1cfebd['shift']());}catch(_0x52e7cf){_0x1cfebd['push'](_0x1cfebd['shift']());}}}(a131_0x4836,0x60d7a));function a131_0x2d7e(_0x42ff90,_0x4ae3ff){_0x42ff90=_0x42ff90-0xc3;var _0x483622=a131_0x4836();var _0x2d7e38=_0x483622[_0x42ff90];return _0x2d7e38;}export function writeCliSideChannelLine(_0x2c0aaa){process['stderr']['write'](_0x2c0aaa+'\x0a');}function a131_0x4836(){var _0x3e4dd6=['335258CGrBwc','114QNOrGh','22808WLSsSK','4634046MHiejW','10fUftTH','4710552NtTouc','60JamFPU','796664shUuMW','158225FBcDZd','2046350BVNsdP'];a131_0x4836=function(){return _0x3e4dd6;};return a131_0x4836();}
1
+ function a133_0xbce5(){var _0x26e96e=['356SsfHBH','374958prxzGb','stderr','write','9845770zSVCox','18364mnQaWt','56604DqkIYF','380331YzVKls','6374vmIgHW','200EcSgiL','9727030jQWCGk','495UMgLXi','216nUWqUw'];a133_0xbce5=function(){return _0x26e96e;};return a133_0xbce5();}function a133_0x5164(_0x507e50,_0x46df13){_0x507e50=_0x507e50-0xe0;var _0xbce51d=a133_0xbce5();var _0x51649f=_0xbce51d[_0x507e50];return _0x51649f;}(function(_0x262349,_0x37783f){var _0x249f36=a133_0x5164,_0x4ea588=_0x262349();while(!![]){try{var _0x5c07eb=parseInt(_0x249f36(0xe5))/0x1*(parseInt(_0x249f36(0xea))/0x2)+-parseInt(_0x249f36(0xe8))/0x3*(-parseInt(_0x249f36(0xe2))/0x4)+parseInt(_0x249f36(0xe6))/0x5*(parseInt(_0x249f36(0xe3))/0x6)+-parseInt(_0x249f36(0xe4))/0x7*(parseInt(_0x249f36(0xe9))/0x8)+parseInt(_0x249f36(0xeb))/0x9+-parseInt(_0x249f36(0xe7))/0xa+parseInt(_0x249f36(0xe1))/0xb;if(_0x5c07eb===_0x37783f)break;else _0x4ea588['push'](_0x4ea588['shift']());}catch(_0x1289dc){_0x4ea588['push'](_0x4ea588['shift']());}}}(a133_0xbce5,0xbb215));export function writeCliSideChannelLine(_0x1e2a6a){var _0x3b5199=a133_0x5164;process[_0x3b5199(0xec)][_0x3b5199(0xe0)](_0x1e2a6a+'\x0a');}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/lovrabet-cli",
3
- "version": "2.1.23",
3
+ "version": "2.2.1-beta.1",
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
+ }