@lovrabet/lovrabet-cli 2.3.5 → 2.3.6-beta.2

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 (193) hide show
  1. package/lib/cli.js +1 -1
  2. package/lib/commands/api-doc/index.js +1 -1
  3. package/lib/commands/app/cache.js +1 -1
  4. package/lib/commands/app/definitions.js +1 -1
  5. package/lib/commands/app/eligibility.js +1 -1
  6. package/lib/commands/app/mock-loader.js +1 -1
  7. package/lib/commands/app/remote-source.js +1 -1
  8. package/lib/commands/app/shared.js +1 -1
  9. package/lib/commands/app-config/get.js +1 -1
  10. package/lib/commands/app-config/index.js +1 -1
  11. package/lib/commands/approval/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/init.js +1 -1
  26. package/lib/commands/config/shared.js +1 -1
  27. package/lib/commands/data/import-excel.js +1 -1
  28. package/lib/commands/data/index.js +1 -1
  29. package/lib/commands/dataset/detail.js +1 -1
  30. package/lib/commands/dataset/index.js +1 -1
  31. package/lib/commands/dataset/list.d.ts +3 -3
  32. package/lib/commands/dataset/list.js +1 -1
  33. package/lib/commands/dataset/sdk-doc.js +1 -1
  34. package/lib/commands/doctor.js +1 -1
  35. package/lib/commands/file/index.js +1 -1
  36. package/lib/commands/init.js +1 -1
  37. package/lib/commands/kb/index.js +1 -1
  38. package/lib/commands/logs/index.js +1 -1
  39. package/lib/commands/notification/config-list.js +1 -1
  40. package/lib/commands/notification/index.js +1 -1
  41. package/lib/commands/notification/shared.js +1 -1
  42. package/lib/commands/ocr/index.js +1 -1
  43. package/lib/commands/permit/dataset-get.js +1 -1
  44. package/lib/commands/permit/dataset-set.js +1 -1
  45. package/lib/commands/permit/index.js +1 -1
  46. package/lib/commands/permit/page-get.js +1 -1
  47. package/lib/commands/permit/page-set.js +1 -1
  48. package/lib/commands/permit/role-menus-set.js +1 -1
  49. package/lib/commands/permit/role-menus.js +1 -1
  50. package/lib/commands/permit/shared.js +1 -1
  51. package/lib/commands/personal-bff/index.js +1 -1
  52. package/lib/commands/registry.js +1 -1
  53. package/lib/commands/role/create.js +1 -1
  54. package/lib/commands/role/delete.js +1 -1
  55. package/lib/commands/role/detail.js +1 -1
  56. package/lib/commands/role/index.js +1 -1
  57. package/lib/commands/role/list.js +1 -1
  58. package/lib/commands/role/shared.js +1 -1
  59. package/lib/commands/role/update.js +1 -1
  60. package/lib/commands/role/user-add.js +1 -1
  61. package/lib/commands/role/user-remove.js +1 -1
  62. package/lib/commands/schedule/index.js +1 -1
  63. package/lib/commands/schema.js +1 -1
  64. package/lib/commands/service/dynamic.js +1 -1
  65. package/lib/commands/service/function-name-adapter.js +1 -1
  66. package/lib/commands/service/index.js +1 -1
  67. package/lib/commands/service/registry.js +1 -1
  68. package/lib/commands/skill/commands/create.js +1 -1
  69. package/lib/commands/skill/commands/diagram.js +1 -1
  70. package/lib/commands/skill/commands/install.js +1 -1
  71. package/lib/commands/skill/commands/list.js +1 -1
  72. package/lib/commands/skill/commands/push.js +1 -1
  73. package/lib/commands/skill/commands/validate.js +1 -1
  74. package/lib/commands/skill/diagram.js +1 -1
  75. package/lib/commands/skill/flags.js +1 -1
  76. package/lib/commands/skill/index.js +1 -1
  77. package/lib/commands/skill/manifest-helpers.js +1 -1
  78. package/lib/commands/skill/push-execute.js +1 -1
  79. package/lib/commands/skill/push-flow-helpers.js +1 -1
  80. package/lib/commands/skill/push-retarget.js +1 -1
  81. package/lib/commands/skill/scopes.js +1 -1
  82. package/lib/commands/skill/summary.js +1 -1
  83. package/lib/commands/skill/templates.js +1 -1
  84. package/lib/commands/skill/validate.js +1 -1
  85. package/lib/commands/sql/detail.js +1 -1
  86. package/lib/commands/sql/exec.js +1 -1
  87. package/lib/commands/sql/index.js +1 -1
  88. package/lib/commands/update.js +1 -1
  89. package/lib/commands/user-account/bind.js +1 -1
  90. package/lib/commands/user-account/index.js +1 -1
  91. package/lib/commands/workspace/index.js +1 -1
  92. package/lib/config/domain-config.js +1 -1
  93. package/lib/config/schema.js +1 -1
  94. package/lib/constant/app.js +1 -1
  95. package/lib/constant/auth-mode.js +1 -1
  96. package/lib/constant/cli.js +1 -1
  97. package/lib/constant/defaults.js +1 -1
  98. package/lib/constant/distribution.js +1 -1
  99. package/lib/constant/domain.js +1 -1
  100. package/lib/constant/env.js +1 -1
  101. package/lib/constant/output.js +1 -1
  102. package/lib/constant/product.js +1 -1
  103. package/lib/constant/region.js +1 -1
  104. package/lib/constant/risk.js +1 -1
  105. package/lib/constant/url.js +1 -1
  106. package/lib/context.js +1 -1
  107. package/lib/core/api-client.d.ts +11 -0
  108. package/lib/core/api-client.js +1 -1
  109. package/lib/core/db-resolver.js +1 -1
  110. package/lib/core/kb-search-client.js +1 -1
  111. package/lib/core/sdk-client.js +1 -1
  112. package/lib/errors.js +1 -1
  113. package/lib/framework/access-error.js +1 -1
  114. package/lib/framework/build-all-flags.js +1 -1
  115. package/lib/framework/dryrun.js +1 -1
  116. package/lib/framework/flags.js +1 -1
  117. package/lib/framework/help.js +1 -1
  118. package/lib/framework/index.js +1 -1
  119. package/lib/framework/output.js +1 -1
  120. package/lib/framework/preparse.js +1 -1
  121. package/lib/framework/rate-limit.js +1 -1
  122. package/lib/framework/raw-flags.js +1 -1
  123. package/lib/framework/response.js +1 -1
  124. package/lib/framework/runner-confirmation.js +1 -1
  125. package/lib/framework/runner-error.js +1 -1
  126. package/lib/framework/runner.js +1 -1
  127. package/lib/framework/schema-export.js +1 -1
  128. package/lib/framework/service-order.js +1 -1
  129. package/lib/framework/types.js +1 -1
  130. package/lib/generated/build-info.d.ts +4 -4
  131. package/lib/generated/build-info.js +1 -1
  132. package/lib/generated/official-routing.js +1 -1
  133. package/lib/generated/routing-contract.js +1 -1
  134. package/lib/help.js +1 -1
  135. package/lib/postinstall.js +1 -1
  136. package/lib/runtime/confirmation.js +1 -1
  137. package/lib/runtime/event.js +1 -1
  138. package/lib/runtime/index.js +1 -1
  139. package/lib/runtime/queue.js +1 -1
  140. package/lib/runtime/resolve.js +1 -1
  141. package/lib/services/dataset-import/auto-id-runner.d.ts +3 -1
  142. package/lib/services/dataset-import/auto-id-runner.js +1 -1
  143. package/lib/services/dataset-import/excel-reader.js +1 -1
  144. package/lib/services/dataset-import/image-bytes.d.ts +3 -0
  145. package/lib/services/dataset-import/image-bytes.js +1 -0
  146. package/lib/services/dataset-import/image-ooxml.d.ts +10 -0
  147. package/lib/services/dataset-import/image-ooxml.js +1 -0
  148. package/lib/services/dataset-import/image-runner.d.ts +48 -0
  149. package/lib/services/dataset-import/image-runner.js +1 -0
  150. package/lib/services/dataset-import/metadata.js +1 -1
  151. package/lib/services/dataset-import/preview.js +1 -1
  152. package/lib/services/dataset-import/runner.d.ts +10 -1
  153. package/lib/services/dataset-import/runner.js +1 -1
  154. package/lib/services/dataset-import/types.d.ts +28 -1
  155. package/lib/skills/builtin-skill.js +1 -1
  156. package/lib/skills/npx-skills-add.js +1 -1
  157. package/lib/skills/runtime-skill-sync/constants.js +1 -1
  158. package/lib/skills/runtime-skill-sync/fs-utils.js +1 -1
  159. package/lib/skills/runtime-skill-sync/hashing.js +1 -1
  160. package/lib/skills/runtime-skill-sync/install-target.js +1 -1
  161. package/lib/skills/runtime-skill-sync/links.js +1 -1
  162. package/lib/skills/runtime-skill-sync/list-local.js +1 -1
  163. package/lib/skills/runtime-skill-sync/local-files.js +1 -1
  164. package/lib/skills/runtime-skill-sync/materialize.js +1 -1
  165. package/lib/skills/runtime-skill-sync/metadata.js +1 -1
  166. package/lib/skills/runtime-skill-sync/paths.js +1 -1
  167. package/lib/skills/runtime-skill-sync/push.js +1 -1
  168. package/lib/skills/runtime-skill-sync/scopes.js +1 -1
  169. package/lib/skills/runtime-skill-sync/zip-codec.js +1 -1
  170. package/lib/skills/runtime-skill-sync/zip-package.js +1 -1
  171. package/lib/skills/runtime-skill-sync.js +1 -1
  172. package/lib/skills/skill-presence.js +1 -1
  173. package/lib/utils/access-key-redaction.js +1 -1
  174. package/lib/utils/apply-jq-filter.js +1 -1
  175. package/lib/utils/cli-version-check.js +1 -1
  176. package/lib/utils/cli-version-policy.js +1 -1
  177. package/lib/utils/logger.js +1 -1
  178. package/lib/utils/lossless-json.js +1 -1
  179. package/lib/utils/params.js +1 -1
  180. package/lib/utils/positive-safe-integer.js +1 -1
  181. package/lib/utils/redaction.js +1 -1
  182. package/lib/utils/update-notice.js +1 -1
  183. package/lib/utils/version.js +1 -1
  184. package/lib/utils/write-cli-side-channel.js +1 -1
  185. package/package.json +4 -1
  186. package/skills/lovrabet/SKILL.md +7 -3
  187. package/skills/lovrabet/guides/app-resolution.md +2 -0
  188. package/skills/lovrabet/guides/dataset-and-data-workflow.md +10 -1
  189. package/skills/lovrabet/references/dataset-discovery-workflow.md +14 -1
  190. package/skills/lovrabet/references/instant-api-workflow.md +2 -0
  191. package/skills/lovrabet/references/lovrabet-app.md +2 -0
  192. package/skills/lovrabet/references/lovrabet-excel-import.md +19 -0
  193. package/skills/lovrabet.manifest.json +3 -3
@@ -1 +1 @@
1
- const a167_0x2a4172=a167_0x4cc7;(function(_0x1a80df,_0x3f9b94){const _0x2b180d=a167_0x4cc7,_0x3ace72=_0x1a80df();while(!![]){try{const _0x58b8f4=-parseInt(_0x2b180d(0x11a))/0x1*(parseInt(_0x2b180d(0x10d))/0x2)+-parseInt(_0x2b180d(0xfe))/0x3*(parseInt(_0x2b180d(0x11f))/0x4)+parseInt(_0x2b180d(0x119))/0x5*(-parseInt(_0x2b180d(0x123))/0x6)+parseInt(_0x2b180d(0x124))/0x7+parseInt(_0x2b180d(0xfa))/0x8*(-parseInt(_0x2b180d(0xf6))/0x9)+-parseInt(_0x2b180d(0x109))/0xa+parseInt(_0x2b180d(0x126))/0xb*(parseInt(_0x2b180d(0xfc))/0xc);if(_0x58b8f4===_0x3f9b94)break;else _0x3ace72['push'](_0x3ace72['shift']());}catch(_0x16ee63){_0x3ace72['push'](_0x3ace72['shift']());}}}(a167_0x6c47,0x39f2f));import a167_0x3812ef from'winston';import a167_0x141b98 from'node:fs';import a167_0x18159e from'node:path';import{PRODUCT_CONFIG}from'../constant/product.js';class Logger{[a167_0x2a4172(0xff)];[a167_0x2a4172(0x102)]='';['currentRawCommand']='';constructor(){}[a167_0x2a4172(0x108)](_0x1c0366){this['currentRawCommand']=_0x1c0366;}[a167_0x2a4172(0x115)](_0x24e74e){const _0x2da5bd=a167_0x2a4172;this[_0x2da5bd(0x102)]=a167_0x18159e[_0x2da5bd(0x101)](_0x24e74e,PRODUCT_CONFIG['logFileName']),this[_0x2da5bd(0xff)]&&this[_0x2da5bd(0xff)][_0x2da5bd(0x106)](),this[_0x2da5bd(0x129)]();}[a167_0x2a4172(0x129)](){const _0x4c7aba=a167_0x2a4172,_0xe54422=a167_0x18159e[_0x4c7aba(0x128)](this[_0x4c7aba(0x102)]);!a167_0x141b98[_0x4c7aba(0x116)](_0xe54422)&&a167_0x141b98[_0x4c7aba(0x120)](_0xe54422,{'recursive':!![]});const _0x555d8f=a167_0x3812ef[_0x4c7aba(0x127)]['combine'](a167_0x3812ef[_0x4c7aba(0x127)][_0x4c7aba(0x107)](),a167_0x3812ef[_0x4c7aba(0x127)][_0x4c7aba(0xf3)]({'stack':!![]}),a167_0x3812ef[_0x4c7aba(0x127)][_0x4c7aba(0xed)](_0x2af32d=>{const _0x3469e2=_0x4c7aba,_0x243221={'timestamp':_0x2af32d[_0x3469e2(0x107)]||new Date()[_0x3469e2(0xfd)](),'level':_0x2af32d[_0x3469e2(0x11b)]||_0x3469e2(0x114),'command':_0x2af32d[_0x3469e2(0x125)]||_0x3469e2(0x117),'rawCommand':_0x2af32d['rawCommand']||this[_0x3469e2(0x122)]||undefined,'message':_0x2af32d[_0x3469e2(0x12a)]||'','duration':_0x2af32d[_0x3469e2(0x121)]||undefined,'details':_0x2af32d[_0x3469e2(0x10e)]||undefined};return JSON[_0x3469e2(0x10b)](_0x243221);}));this['winstonLogger']=a167_0x3812ef[_0x4c7aba(0x113)]({'level':_0x4c7aba(0x114),'format':_0x555d8f,'transports':[new a167_0x3812ef[(_0x4c7aba(0x103))]['File']({'filename':this['logFilePath'],'level':_0x4c7aba(0x114)})],'silent':![]}),a167_0x3812ef[_0x4c7aba(0xf2)]({'success':_0x4c7aba(0x105),'error':_0x4c7aba(0xf7),'warn':_0x4c7aba(0x10f),'info':'blue'});}[a167_0x2a4172(0x114)](_0x31e259,_0x3c0bc5,_0x43d9f6){const _0x15d021=a167_0x2a4172;if(!this[_0x15d021(0x102)]||!this[_0x15d021(0xff)])return;this['winstonLogger'][_0x15d021(0x114)](_0x3c0bc5,{'command':_0x31e259,'details':_0x43d9f6});}[a167_0x2a4172(0xf9)](_0x5114b4,_0x3f608c,_0x5a8d48,_0x267ece){const _0x1129d3=a167_0x2a4172;if(!this[_0x1129d3(0x102)]||!this['winstonLogger'])return;this['winstonLogger'][_0x1129d3(0x100)](_0x1129d3(0x114),_0x3f608c,{'level':'success','command':_0x5114b4,'duration':_0x5a8d48,'details':_0x267ece});}[a167_0x2a4172(0x111)](_0x49f8d2,_0x7b55fb,_0x336d86){const _0x50d6f7=a167_0x2a4172;if(!this['logFilePath']||!this[_0x50d6f7(0xff)])return;this['winstonLogger']['error'](_0x7b55fb,{'command':_0x49f8d2,'details':_0x336d86});}[a167_0x2a4172(0x110)](_0x1536ea,_0x1c27e5,_0x3d75ec){const _0x307577=a167_0x2a4172;if(!this[_0x307577(0x102)]||!this['winstonLogger'])return;this['winstonLogger'][_0x307577(0x110)](_0x1c27e5,{'command':_0x1536ea,'details':_0x3d75ec});}async[a167_0x2a4172(0x11c)](_0xba95ec,_0x5d6641,_0x586c4c){const _0x50803a=a167_0x2a4172,_0x5ada01=Date[_0x50803a(0xfb)]();this[_0x50803a(0x114)](_0xba95ec,_0x50803a(0x11d)+_0x5d6641);try{const _0x5eca68=await _0x586c4c(),_0x21f0fd=Date[_0x50803a(0xfb)]()-_0x5ada01;return this[_0x50803a(0xf9)](_0xba95ec,_0x50803a(0xef)+_0x5d6641,_0x21f0fd),_0x5eca68;}catch(_0x6675b4){const _0x4cc431=Date['now']()-_0x5ada01;this['error'](_0xba95ec,'Failed:\x20'+_0x5d6641,{'error':_0x6675b4 instanceof Error?_0x6675b4[_0x50803a(0x12a)]:String(_0x6675b4),'duration':_0x4cc431});throw _0x6675b4;}}[a167_0x2a4172(0x118)](){const _0x4e20cd=a167_0x2a4172;try{if(!a167_0x141b98['existsSync'](this[_0x4e20cd(0x102)]))return[];const _0x2d301d=a167_0x141b98['readFileSync'](this['logFilePath'],_0x4e20cd(0xf4));return _0x2d301d[_0x4e20cd(0xf1)](/\r?\n/)[_0x4e20cd(0x10a)](_0x3e249d=>_0x3e249d[_0x4e20cd(0xf0)]())[_0x4e20cd(0xee)](_0x5eed3a=>JSON[_0x4e20cd(0x112)](_0x5eed3a));}catch(_0x5294ae){return console[_0x4e20cd(0x110)](_0x4e20cd(0x104),_0x5294ae),[];}}[a167_0x2a4172(0xf8)](){const _0x1da34b=a167_0x2a4172;try{a167_0x141b98[_0x1da34b(0x116)](this[_0x1da34b(0x102)])&&a167_0x141b98[_0x1da34b(0x11e)](this['logFilePath'],'','utf8');}catch(_0x39fc8e){console[_0x1da34b(0x110)](_0x1da34b(0xf5),_0x39fc8e);}}[a167_0x2a4172(0x10c)](){const _0x5d4e94=a167_0x2a4172;return this[_0x5d4e94(0xff)];}}function a167_0x4cc7(_0x2ab018,_0x5d3549){_0x2ab018=_0x2ab018-0xed;const _0x6c4773=a167_0x6c47();let _0x4cc7c7=_0x6c4773[_0x2ab018];return _0x4cc7c7;}export const logger=new Logger();function a167_0x6c47(){const _0x510b5d=['timestamp','setRawCommand','587160RaWKyd','filter','stringify','getWinstonInstance','232662ESEiIU','details','yellow','warn','error','parse','createLogger','info','setLogPath','existsSync','unknown','readLogs','5RhHwXd','1UkLTdD','level','logTask','Starting:\x20','writeFileSync','233708tPIpcO','mkdirSync','duration','currentRawCommand','1936632lGxdFH','2762396gqPhyZ','command','6180988ltsmVD','format','dirname','initWinstonLogger','message','printf','map','Completed:\x20','trim','split','addColors','errors','utf8','Failed\x20to\x20clear\x20logs:','284265TKgNbN','red','clearLogs','success','80pxfpxo','now','24WKOSfY','toISOString','24DlBdLf','winstonLogger','log','join','logFilePath','transports','Failed\x20to\x20read\x20logs:','green','clear'];a167_0x6c47=function(){return _0x510b5d;};return a167_0x6c47();}
1
+ const a170_0x3cd5b3=a170_0x347f;function a170_0x347f(_0x14de58,_0x207658){_0x14de58=_0x14de58-0x74;const _0x119103=a170_0x1191();let _0x347fdf=_0x119103[_0x14de58];return _0x347fdf;}(function(_0x18985a,_0x44f8df){const _0x5ceb7a=a170_0x347f,_0x3383a0=_0x18985a();while(!![]){try{const _0x1c4034=-parseInt(_0x5ceb7a(0xad))/0x1*(parseInt(_0x5ceb7a(0xae))/0x2)+parseInt(_0x5ceb7a(0x80))/0x3*(-parseInt(_0x5ceb7a(0x9d))/0x4)+parseInt(_0x5ceb7a(0x87))/0x5*(parseInt(_0x5ceb7a(0xab))/0x6)+-parseInt(_0x5ceb7a(0xa0))/0x7*(-parseInt(_0x5ceb7a(0x7a))/0x8)+parseInt(_0x5ceb7a(0x78))/0x9+-parseInt(_0x5ceb7a(0xa1))/0xa+-parseInt(_0x5ceb7a(0x9a))/0xb*(-parseInt(_0x5ceb7a(0xac))/0xc);if(_0x1c4034===_0x44f8df)break;else _0x3383a0['push'](_0x3383a0['shift']());}catch(_0x4c8872){_0x3383a0['push'](_0x3383a0['shift']());}}}(a170_0x1191,0xabe97));import a170_0x5bc711 from'winston';import a170_0x17599d from'node:fs';import a170_0x2f5894 from'node:path';import{PRODUCT_CONFIG}from'../constant/product.js';class Logger{[a170_0x3cd5b3(0x9c)];[a170_0x3cd5b3(0xa8)]='';[a170_0x3cd5b3(0x9e)]='';constructor(){}[a170_0x3cd5b3(0x8c)](_0x5ff151){this['currentRawCommand']=_0x5ff151;}[a170_0x3cd5b3(0xa3)](_0x212784){const _0x2fca3e=a170_0x3cd5b3;this[_0x2fca3e(0xa8)]=a170_0x2f5894[_0x2fca3e(0x81)](_0x212784,PRODUCT_CONFIG['logFileName']),this[_0x2fca3e(0x9c)]&&this[_0x2fca3e(0x9c)][_0x2fca3e(0x91)](),this[_0x2fca3e(0x92)]();}['initWinstonLogger'](){const _0x26127c=a170_0x3cd5b3,_0xc8e4eb=a170_0x2f5894[_0x26127c(0x8e)](this[_0x26127c(0xa8)]);!a170_0x17599d[_0x26127c(0x79)](_0xc8e4eb)&&a170_0x17599d[_0x26127c(0x9f)](_0xc8e4eb,{'recursive':!![]});const _0x3ec8f2=a170_0x5bc711[_0x26127c(0x8b)][_0x26127c(0x84)](a170_0x5bc711['format'][_0x26127c(0x77)](),a170_0x5bc711[_0x26127c(0x8b)][_0x26127c(0x7e)]({'stack':!![]}),a170_0x5bc711[_0x26127c(0x8b)][_0x26127c(0x74)](_0x173e1c=>{const _0x1b02c0=_0x26127c,_0x42f9d8={'timestamp':_0x173e1c[_0x1b02c0(0x77)]||new Date()[_0x1b02c0(0xa9)](),'level':_0x173e1c['level']||_0x1b02c0(0x7f),'command':_0x173e1c[_0x1b02c0(0xa6)]||_0x1b02c0(0x99),'rawCommand':_0x173e1c[_0x1b02c0(0x98)]||this[_0x1b02c0(0x9e)]||undefined,'message':_0x173e1c[_0x1b02c0(0x96)]||'','duration':_0x173e1c[_0x1b02c0(0x85)]||undefined,'details':_0x173e1c[_0x1b02c0(0x94)]||undefined};return JSON['stringify'](_0x42f9d8);}));this[_0x26127c(0x9c)]=a170_0x5bc711[_0x26127c(0xaa)]({'level':_0x26127c(0x7f),'format':_0x3ec8f2,'transports':[new a170_0x5bc711[(_0x26127c(0x86))][(_0x26127c(0x93))]({'filename':this[_0x26127c(0xa8)],'level':_0x26127c(0x7f)})],'silent':![]}),a170_0x5bc711[_0x26127c(0xa2)]({'success':'green','error':'red','warn':_0x26127c(0x89),'info':_0x26127c(0x8a)});}[a170_0x3cd5b3(0x7f)](_0x52406b,_0x58af85,_0x215062){const _0x54439d=a170_0x3cd5b3;if(!this['logFilePath']||!this[_0x54439d(0x9c)])return;this['winstonLogger'][_0x54439d(0x7f)](_0x58af85,{'command':_0x52406b,'details':_0x215062});}['success'](_0x35c689,_0x440e1f,_0xa9660a,_0x178f81){const _0x5d36db=a170_0x3cd5b3;if(!this[_0x5d36db(0xa8)]||!this[_0x5d36db(0x9c)])return;this['winstonLogger']['log']('info',_0x440e1f,{'level':_0x5d36db(0x75),'command':_0x35c689,'duration':_0xa9660a,'details':_0x178f81});}[a170_0x3cd5b3(0x83)](_0x4910bf,_0x13478a,_0x353cd1){const _0x23be82=a170_0x3cd5b3;if(!this[_0x23be82(0xa8)]||!this[_0x23be82(0x9c)])return;this[_0x23be82(0x9c)][_0x23be82(0x83)](_0x13478a,{'command':_0x4910bf,'details':_0x353cd1});}[a170_0x3cd5b3(0x7b)](_0x2fe865,_0x5ef34a,_0x2e86a8){const _0x2446ab=a170_0x3cd5b3;if(!this[_0x2446ab(0xa8)]||!this['winstonLogger'])return;this[_0x2446ab(0x9c)][_0x2446ab(0x7b)](_0x5ef34a,{'command':_0x2fe865,'details':_0x2e86a8});}async[a170_0x3cd5b3(0x95)](_0x5cc07d,_0x42b6e4,_0x1fdd1c){const _0x5dc7ff=a170_0x3cd5b3,_0x3ed9d3=Date[_0x5dc7ff(0x97)]();this[_0x5dc7ff(0x7f)](_0x5cc07d,'Starting:\x20'+_0x42b6e4);try{const _0x1c7a0f=await _0x1fdd1c(),_0x5e3281=Date[_0x5dc7ff(0x97)]()-_0x3ed9d3;return this['success'](_0x5cc07d,_0x5dc7ff(0xa7)+_0x42b6e4,_0x5e3281),_0x1c7a0f;}catch(_0x1f245f){const _0x58182c=Date[_0x5dc7ff(0x97)]()-_0x3ed9d3;this[_0x5dc7ff(0x83)](_0x5cc07d,_0x5dc7ff(0xa5)+_0x42b6e4,{'error':_0x1f245f instanceof Error?_0x1f245f[_0x5dc7ff(0x96)]:String(_0x1f245f),'duration':_0x58182c});throw _0x1f245f;}}[a170_0x3cd5b3(0xaf)](){const _0x313011=a170_0x3cd5b3;try{if(!a170_0x17599d['existsSync'](this['logFilePath']))return[];const _0x5d571b=a170_0x17599d[_0x313011(0xa4)](this[_0x313011(0xa8)],_0x313011(0x9b));return _0x5d571b[_0x313011(0x8f)](/\r?\n/)[_0x313011(0x8d)](_0x40434f=>_0x40434f['trim']())[_0x313011(0x88)](_0x591f5b=>JSON[_0x313011(0x90)](_0x591f5b));}catch(_0xd81876){return console[_0x313011(0x7b)](_0x313011(0x76),_0xd81876),[];}}[a170_0x3cd5b3(0x7c)](){const _0x16299d=a170_0x3cd5b3;try{a170_0x17599d['existsSync'](this[_0x16299d(0xa8)])&&a170_0x17599d[_0x16299d(0x82)](this[_0x16299d(0xa8)],'','utf8');}catch(_0x463e2d){console[_0x16299d(0x7b)](_0x16299d(0xb0),_0x463e2d);}}[a170_0x3cd5b3(0x7d)](){const _0x4f74e5=a170_0x3cd5b3;return this[_0x4f74e5(0x9c)];}}function a170_0x1191(){const _0x238bfe=['clear','initWinstonLogger','File','details','logTask','message','now','rawCommand','unknown','231EizPiR','utf8','winstonLogger','350004ZjkIbJ','currentRawCommand','mkdirSync','3830939EjBgAc','3662070BMvMot','addColors','setLogPath','readFileSync','Failed:\x20','command','Completed:\x20','logFilePath','toISOString','createLogger','3660414zvBsPR','365316Bcyqzc','370453BksDlk','2HGHXwW','readLogs','Failed\x20to\x20clear\x20logs:','printf','success','Failed\x20to\x20read\x20logs:','timestamp','7035075kMGZvP','existsSync','8zMwtaY','warn','clearLogs','getWinstonInstance','errors','info','39MWULIw','join','writeFileSync','error','combine','duration','transports','5WGxYAh','map','yellow','blue','format','setRawCommand','filter','dirname','split','parse'];a170_0x1191=function(){return _0x238bfe;};return a170_0x1191();}export const logger=new Logger();
@@ -1 +1 @@
1
- const a168_0x230617=a168_0x4eb8;(function(_0x3f177b,_0x246ff8){const _0x18faa6=a168_0x4eb8,_0x4cb901=_0x3f177b();while(!![]){try{const _0x2c1e9f=-parseInt(_0x18faa6(0x11d))/0x1+-parseInt(_0x18faa6(0x121))/0x2+-parseInt(_0x18faa6(0x119))/0x3*(-parseInt(_0x18faa6(0x113))/0x4)+-parseInt(_0x18faa6(0x115))/0x5*(-parseInt(_0x18faa6(0x11b))/0x6)+parseInt(_0x18faa6(0x114))/0x7+-parseInt(_0x18faa6(0x116))/0x8+parseInt(_0x18faa6(0x10f))/0x9;if(_0x2c1e9f===_0x246ff8)break;else _0x4cb901['push'](_0x4cb901['shift']());}catch(_0x1307db){_0x4cb901['push'](_0x4cb901['shift']());}}}(a168_0x2444,0x82a2d));const JSON_NUMBER_PATTERN=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/,MAX_SAFE_INTEGER=BigInt(Number[a168_0x230617(0x112)]),MIN_SAFE_INTEGER=BigInt(Number[a168_0x230617(0x120)]);let restoreResponseJsonParser,responseJsonPrototype,originalResponseJsonDescriptor;function a168_0x4eb8(_0x204ec7,_0x18d272){_0x204ec7=_0x204ec7-0x10e;const _0x244493=a168_0x2444();let _0x4eb8ff=_0x244493[_0x204ec7];return _0x4eb8ff;}function isUnsafeIntegerLiteral(_0x373890){const _0x2b0303=a168_0x230617;if(_0x373890[_0x2b0303(0x11f)]('.')||_0x373890[_0x2b0303(0x11f)]('e')||_0x373890[_0x2b0303(0x11f)]('E'))return![];const _0x1c15c0=BigInt(_0x373890);return _0x1c15c0>MAX_SAFE_INTEGER||_0x1c15c0<MIN_SAFE_INTEGER;}function quoteUnsafeIntegerLiterals(_0xe8e397){const _0x47c385=a168_0x230617;let _0x1d54b2='',_0x504aad=![],_0x50696f=![];for(let _0x31bafe=0x0;_0x31bafe<_0xe8e397[_0x47c385(0x118)];){const _0x439d66=_0xe8e397[_0x31bafe];if(_0x504aad){_0x1d54b2+=_0x439d66,_0x31bafe+=0x1;if(_0x50696f)_0x50696f=![];else{if(_0x439d66==='\x5c')_0x50696f=!![];else _0x439d66==='\x22'&&(_0x504aad=![]);}continue;}if(_0x439d66==='\x22'){_0x504aad=!![],_0x1d54b2+=_0x439d66,_0x31bafe+=0x1;continue;}if(_0x439d66==='-'||_0x439d66>='0'&&_0x439d66<='9'){const _0x30a83a=JSON_NUMBER_PATTERN[_0x47c385(0x111)](_0xe8e397[_0x47c385(0x11c)](_0x31bafe))?.[0x0];if(_0x30a83a){_0x1d54b2+=isUnsafeIntegerLiteral(_0x30a83a)?'\x22'+_0x30a83a+'\x22':_0x30a83a,_0x31bafe+=_0x30a83a['length'];continue;}}_0x1d54b2+=_0x439d66,_0x31bafe+=0x1;}return _0x1d54b2;}export function parseLosslessJson(_0x317375){const _0x49ae9a=a168_0x230617;return JSON[_0x49ae9a(0x11a)](quoteUnsafeIntegerLiterals(_0x317375));}function a168_0x2444(){const _0x5a8a89=['text','exec','MAX_SAFE_INTEGER','31268EDwsrv','6300973tWheKy','2446645yhmdrm','6376256PaYKMi','undefined','length','12YMkgYk','parse','12ASBRYr','slice','865219kRUhWC','json','includes','MIN_SAFE_INTEGER','361298xJmzUS','defineProperty','prototype','4211280cnEMvJ'];a168_0x2444=function(){return _0x5a8a89;};return a168_0x2444();}export function installLosslessJsonResponseParser(){const _0x4ef053=a168_0x230617;if(typeof Response===_0x4ef053(0x117))return()=>{};if(restoreResponseJsonParser)return restoreResponseJsonParser;return responseJsonPrototype=Response[_0x4ef053(0x10e)],originalResponseJsonDescriptor=Object['getOwnPropertyDescriptor'](responseJsonPrototype,_0x4ef053(0x11e)),Object[_0x4ef053(0x122)](responseJsonPrototype,_0x4ef053(0x11e),{...originalResponseJsonDescriptor??{'configurable':!![],'enumerable':![],'writable':!![]},'value':async function _0x2465d2(){const _0x5bcbab=_0x4ef053;return parseLosslessJson(await this[_0x5bcbab(0x110)]());}}),restoreResponseJsonParser=()=>{const _0x13751f=_0x4ef053;if(!responseJsonPrototype)return;originalResponseJsonDescriptor?Object[_0x13751f(0x122)](responseJsonPrototype,_0x13751f(0x11e),originalResponseJsonDescriptor):delete responseJsonPrototype['json'],responseJsonPrototype=undefined,originalResponseJsonDescriptor=undefined,restoreResponseJsonParser=undefined;},restoreResponseJsonParser;}export function restoreLosslessJsonResponseParser(){restoreResponseJsonParser?.();}
1
+ (function(_0xd1bd3e,_0x33258d){const _0x4a3a87=a171_0x1f34,_0x5a2459=_0xd1bd3e();while(!![]){try{const _0x175075=parseInt(_0x4a3a87(0xef))/0x1+parseInt(_0x4a3a87(0xea))/0x2*(parseInt(_0x4a3a87(0xe9))/0x3)+-parseInt(_0x4a3a87(0xfa))/0x4*(parseInt(_0x4a3a87(0xeb))/0x5)+-parseInt(_0x4a3a87(0xf2))/0x6+parseInt(_0x4a3a87(0xf1))/0x7*(parseInt(_0x4a3a87(0xe7))/0x8)+-parseInt(_0x4a3a87(0xf4))/0x9*(parseInt(_0x4a3a87(0xf0))/0xa)+-parseInt(_0x4a3a87(0xf5))/0xb*(-parseInt(_0x4a3a87(0xf8))/0xc);if(_0x175075===_0x33258d)break;else _0x5a2459['push'](_0x5a2459['shift']());}catch(_0x4e1440){_0x5a2459['push'](_0x5a2459['shift']());}}}(a171_0x2f71,0x7567f));const JSON_NUMBER_PATTERN=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/,MAX_SAFE_INTEGER=BigInt(Number['MAX_SAFE_INTEGER']),MIN_SAFE_INTEGER=BigInt(Number['MIN_SAFE_INTEGER']);function a171_0x1f34(_0x3445f4,_0xe1a0bd){_0x3445f4=_0x3445f4-0xe7;const _0x2f7107=a171_0x2f71();let _0x1f3450=_0x2f7107[_0x3445f4];return _0x1f3450;}let restoreResponseJsonParser,responseJsonPrototype,originalResponseJsonDescriptor;function isUnsafeIntegerLiteral(_0x52d2ac){const _0x79d718=a171_0x1f34;if(_0x52d2ac[_0x79d718(0xe8)]('.')||_0x52d2ac[_0x79d718(0xe8)]('e')||_0x52d2ac['includes']('E'))return![];const _0x3b7a74=BigInt(_0x52d2ac);return _0x3b7a74>MAX_SAFE_INTEGER||_0x3b7a74<MIN_SAFE_INTEGER;}function quoteUnsafeIntegerLiterals(_0x18a372){const _0x104887=a171_0x1f34;let _0x554e96='',_0x2da565=![],_0x3a5ce4=![];for(let _0x154455=0x0;_0x154455<_0x18a372['length'];){const _0x2e10af=_0x18a372[_0x154455];if(_0x2da565){_0x554e96+=_0x2e10af,_0x154455+=0x1;if(_0x3a5ce4)_0x3a5ce4=![];else{if(_0x2e10af==='\x5c')_0x3a5ce4=!![];else _0x2e10af==='\x22'&&(_0x2da565=![]);}continue;}if(_0x2e10af==='\x22'){_0x2da565=!![],_0x554e96+=_0x2e10af,_0x154455+=0x1;continue;}if(_0x2e10af==='-'||_0x2e10af>='0'&&_0x2e10af<='9'){const _0x35141a=JSON_NUMBER_PATTERN[_0x104887(0xed)](_0x18a372['slice'](_0x154455))?.[0x0];if(_0x35141a){_0x554e96+=isUnsafeIntegerLiteral(_0x35141a)?'\x22'+_0x35141a+'\x22':_0x35141a,_0x154455+=_0x35141a[_0x104887(0xf6)];continue;}}_0x554e96+=_0x2e10af,_0x154455+=0x1;}return _0x554e96;}export function parseLosslessJson(_0x219ec2){const _0xec4382=a171_0x1f34;return JSON[_0xec4382(0xf7)](quoteUnsafeIntegerLiterals(_0x219ec2));}export function installLosslessJsonResponseParser(){const _0x548f60=a171_0x1f34;if(typeof Response===_0x548f60(0xf9))return()=>{};if(restoreResponseJsonParser)return restoreResponseJsonParser;return responseJsonPrototype=Response['prototype'],originalResponseJsonDescriptor=Object['getOwnPropertyDescriptor'](responseJsonPrototype,_0x548f60(0xec)),Object['defineProperty'](responseJsonPrototype,_0x548f60(0xec),{...originalResponseJsonDescriptor??{'configurable':!![],'enumerable':![],'writable':!![]},'value':async function _0x4223f2(){const _0x4b6612=_0x548f60;return parseLosslessJson(await this[_0x4b6612(0xf3)]());}}),restoreResponseJsonParser=()=>{const _0x29f60e=_0x548f60;if(!responseJsonPrototype)return;originalResponseJsonDescriptor?Object[_0x29f60e(0xee)](responseJsonPrototype,_0x29f60e(0xec),originalResponseJsonDescriptor):delete responseJsonPrototype['json'],responseJsonPrototype=undefined,originalResponseJsonDescriptor=undefined,restoreResponseJsonParser=undefined;},restoreResponseJsonParser;}function a171_0x2f71(){const _0x33bd52=['1669244FLJoWn','2931224FdsdFw','includes','27OgIpMv','160484KBPfRQ','5klvEMm','json','exec','defineProperty','236978qOICNU','10IvKWJy','7rGaDZS','2699394lGAAKb','text','2585313DeYujo','262141ywvjdF','length','parse','156fsiOhi','undefined'];a171_0x2f71=function(){return _0x33bd52;};return a171_0x2f71();}export function restoreLosslessJsonResponseParser(){restoreResponseJsonParser?.();}
@@ -1 +1 @@
1
- function a169_0x4b7c(){const _0x47c345=['126NDvHVE','1170092sPUjSy','156712LnTWbY','Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27','data\x20update\x20--params\x20must\x20be\x20a\x20JSON\x20object\x20with\x20id.','20PwlIQW','number','3377763cEHWkU','Example:\x20--params\x20\x27[{\x22name\x22:\x22a\x22},{\x22name\x22:\x22b\x22}]\x27','data\x20update\x20can\x20update\x20at\x20most\x20','test','map','items','length','data\x20update\x20--params.','object','isArray','448343TyyKFU','\x20must\x20be\x20a\x20positive\x20integer\x20or\x20numeric\x20string.','id[','644523AZwwVC','13480TatXbK','973014lwjLtY','data\x20update\x20requires\x20\x22id\x22\x20in\x20--params.','Invalid\x20JSON\x20for\x20--params:\x20','validation','isSafeInteger','2aTPzCD'];a169_0x4b7c=function(){return _0x47c345;};return a169_0x4b7c();}(function(_0x2e2e90,_0x359190){const _0x132a7e=a169_0x5e92,_0x418a66=_0x2e2e90();while(!![]){try{const _0x16d2ab=-parseInt(_0x132a7e(0x13b))/0x1+parseInt(_0x132a7e(0x145))/0x2*(parseInt(_0x132a7e(0x13e))/0x3)+parseInt(_0x132a7e(0x147))/0x4+-parseInt(_0x132a7e(0x13f))/0x5+-parseInt(_0x132a7e(0x140))/0x6+parseInt(_0x132a7e(0x146))/0x7*(-parseInt(_0x132a7e(0x148))/0x8)+parseInt(_0x132a7e(0x14d))/0x9*(parseInt(_0x132a7e(0x14b))/0xa);if(_0x16d2ab===_0x359190)break;else _0x418a66['push'](_0x418a66['shift']());}catch(_0x45f8d2){_0x418a66['push'](_0x418a66['shift']());}}}(a169_0x4b7c,0x47548));function a169_0x5e92(_0x421140,_0x66baa4){_0x421140=_0x421140-0x135;const _0x4b7c72=a169_0x4b7c();let _0x5e92aa=_0x4b7c72[_0x421140];return _0x5e92aa;}import{CliErrors}from'../errors.js';import{parseLosslessJson}from'../utils/lossless-json.js';export const MAX_DATA_UPDATE_IDS=0x3e8;export function parseJsonParams(_0x4a0f9a){const _0x1d1fe0=a169_0x5e92;if(!_0x4a0f9a)return undefined;try{return parseLosslessJson(_0x4a0f9a);}catch{throw CliErrors[_0x1d1fe0(0x143)]('Invalid\x20JSON\x20for\x20--params:\x20'+_0x4a0f9a);}}export function parseJsonParamsValue(_0xbf3dc){const _0x57c2f9=a169_0x5e92;if(!_0xbf3dc)return undefined;try{return parseLosslessJson(_0xbf3dc);}catch{throw CliErrors[_0x57c2f9(0x143)](_0x57c2f9(0x142)+_0xbf3dc);}}export function parseBatchCreateItemsFromParams(_0x3da4da){const _0x554ed0=a169_0x5e92;if(Array[_0x554ed0(0x13a)](_0x3da4da))return _0x3da4da;if(_0x3da4da!==null&&_0x3da4da!==undefined&&typeof _0x3da4da===_0x554ed0(0x139)&&Array['isArray'](_0x3da4da[_0x554ed0(0x136)]))return _0x3da4da[_0x554ed0(0x136)];throw CliErrors[_0x554ed0(0x143)]('batchCreate\x20--params\x20must\x20be\x20a\x20JSON\x20array\x20or\x20{\x22items\x22:[...]}',_0x554ed0(0x14e));}function parseDataUpdateId(_0x333812,_0x3c968){const _0x2aa2c2=a169_0x5e92;if(typeof _0x333812===_0x2aa2c2(0x14c)&&Number[_0x2aa2c2(0x144)](_0x333812)&&_0x333812>0x0)return _0x333812;if(typeof _0x333812==='string'){if(/^[1-9]\d*$/[_0x2aa2c2(0x150)](_0x333812))return _0x333812;}throw CliErrors[_0x2aa2c2(0x143)](_0x2aa2c2(0x138)+_0x3c968+_0x2aa2c2(0x13c));}export function parseUpdateIdsFromParams(_0x218580){const _0x89f1a2=a169_0x5e92;if(_0x218580===null||_0x218580===undefined||typeof _0x218580!==_0x89f1a2(0x139)||Array[_0x89f1a2(0x13a)](_0x218580))throw CliErrors[_0x89f1a2(0x143)](_0x89f1a2(0x14a),_0x89f1a2(0x149));const _0x1e6eb0=_0x218580['id'];if(_0x1e6eb0===undefined||_0x1e6eb0===null)throw CliErrors[_0x89f1a2(0x143)](_0x89f1a2(0x141),_0x89f1a2(0x149));const _0x90b241=Array['isArray'](_0x1e6eb0)?_0x1e6eb0:[_0x1e6eb0];if(_0x90b241[_0x89f1a2(0x137)]===0x0)throw CliErrors[_0x89f1a2(0x143)]('data\x20update\x20id\x20array\x20cannot\x20be\x20empty.');if(_0x90b241[_0x89f1a2(0x137)]>MAX_DATA_UPDATE_IDS)throw CliErrors[_0x89f1a2(0x143)](_0x89f1a2(0x14f)+MAX_DATA_UPDATE_IDS+'\x20records\x20per\x20call;\x20received\x20'+_0x90b241[_0x89f1a2(0x137)]+'.');return _0x90b241[_0x89f1a2(0x135)]((_0x544fdc,_0x312122)=>parseDataUpdateId(_0x544fdc,Array[_0x89f1a2(0x13a)](_0x1e6eb0)?_0x89f1a2(0x13d)+_0x312122+']':'id'));}export function normalizeUpdateParamsForRuntime(_0x4332e4,_0x404b49){const _0x4ba3f5=a169_0x5e92;if(Array[_0x4ba3f5(0x13a)](_0x4332e4['id'])&&_0x404b49[_0x4ba3f5(0x137)]>0x1)return{..._0x4332e4,'id':_0x404b49['join'](',')};return _0x4332e4;}
1
+ (function(_0x3c396b,_0x2000b3){const _0x306f70=a172_0x5128,_0x842e97=_0x3c396b();while(!![]){try{const _0x143376=parseInt(_0x306f70(0xd5))/0x1+parseInt(_0x306f70(0xd3))/0x2*(-parseInt(_0x306f70(0xe3))/0x3)+-parseInt(_0x306f70(0xe6))/0x4*(parseInt(_0x306f70(0xe1))/0x5)+parseInt(_0x306f70(0xe9))/0x6*(parseInt(_0x306f70(0xdd))/0x7)+-parseInt(_0x306f70(0xdb))/0x8+parseInt(_0x306f70(0xe0))/0x9+-parseInt(_0x306f70(0xcf))/0xa*(-parseInt(_0x306f70(0xea))/0xb);if(_0x143376===_0x2000b3)break;else _0x842e97['push'](_0x842e97['shift']());}catch(_0x567e38){_0x842e97['push'](_0x842e97['shift']());}}}(a172_0x1fe2,0x888a7));import{CliErrors}from'../errors.js';function a172_0x5128(_0x2e1994,_0x52e949){_0x2e1994=_0x2e1994-0xcf;const _0x1fe2b2=a172_0x1fe2();let _0x51285c=_0x1fe2b2[_0x2e1994];return _0x51285c;}import{parseLosslessJson}from'../utils/lossless-json.js';export const MAX_DATA_UPDATE_IDS=0x3e8;function a172_0x1fe2(){const _0x66a488=['11JRTEcZ','join','string','validation','15731410PJUZuS','test','Example:\x20--params\x20\x27{\x22id\x22:[1,2,3],\x22status\x22:\x22done\x22}\x27','data\x20update\x20requires\x20\x22id\x22\x20in\x20--params.','4fGjfCF','id[','1002834POmFhs','data\x20update\x20--params.','data\x20update\x20can\x20update\x20at\x20most\x20','items','isArray','isSafeInteger','5068552RTPFuJ','length','2877NGnbyL','data\x20update\x20id\x20array\x20cannot\x20be\x20empty.','number','1507995HKXojx','25UwOlHa','\x20records\x20per\x20call;\x20received\x20','1342563kjPcWJ','batchCreate\x20--params\x20must\x20be\x20a\x20JSON\x20array\x20or\x20{\x22items\x22:[...]}','object','796436CzfwsL','\x20must\x20be\x20a\x20positive\x20integer\x20or\x20numeric\x20string.','Invalid\x20JSON\x20for\x20--params:\x20','4962Qelqds'];a172_0x1fe2=function(){return _0x66a488;};return a172_0x1fe2();}export function parseJsonParams(_0x52f0d9){const _0xa66ce9=a172_0x5128;if(!_0x52f0d9)return undefined;try{return parseLosslessJson(_0x52f0d9);}catch{throw CliErrors['validation'](_0xa66ce9(0xe8)+_0x52f0d9);}}export function parseJsonParamsValue(_0x1813dd){const _0x4671c8=a172_0x5128;if(!_0x1813dd)return undefined;try{return parseLosslessJson(_0x1813dd);}catch{throw CliErrors[_0x4671c8(0xed)]('Invalid\x20JSON\x20for\x20--params:\x20'+_0x1813dd);}}export function parseBatchCreateItemsFromParams(_0x207b3a){const _0x256fd7=a172_0x5128;if(Array[_0x256fd7(0xd9)](_0x207b3a))return _0x207b3a;if(_0x207b3a!==null&&_0x207b3a!==undefined&&typeof _0x207b3a===_0x256fd7(0xe5)&&Array[_0x256fd7(0xd9)](_0x207b3a[_0x256fd7(0xd8)]))return _0x207b3a[_0x256fd7(0xd8)];throw CliErrors[_0x256fd7(0xed)](_0x256fd7(0xe4),'Example:\x20--params\x20\x27[{\x22name\x22:\x22a\x22},{\x22name\x22:\x22b\x22}]\x27');}function parseDataUpdateId(_0xdcd60d,_0x4e9cb4){const _0xbe3b45=a172_0x5128;if(typeof _0xdcd60d===_0xbe3b45(0xdf)&&Number[_0xbe3b45(0xda)](_0xdcd60d)&&_0xdcd60d>0x0)return _0xdcd60d;if(typeof _0xdcd60d===_0xbe3b45(0xec)){if(/^[1-9]\d*$/[_0xbe3b45(0xd0)](_0xdcd60d))return _0xdcd60d;}throw CliErrors[_0xbe3b45(0xed)](_0xbe3b45(0xd6)+_0x4e9cb4+_0xbe3b45(0xe7));}export function parseUpdateIdsFromParams(_0x3dc7ab){const _0x1da45f=a172_0x5128;if(_0x3dc7ab===null||_0x3dc7ab===undefined||typeof _0x3dc7ab!==_0x1da45f(0xe5)||Array[_0x1da45f(0xd9)](_0x3dc7ab))throw CliErrors[_0x1da45f(0xed)]('data\x20update\x20--params\x20must\x20be\x20a\x20JSON\x20object\x20with\x20id.',_0x1da45f(0xd1));const _0x3b73df=_0x3dc7ab['id'];if(_0x3b73df===undefined||_0x3b73df===null)throw CliErrors['validation'](_0x1da45f(0xd2),_0x1da45f(0xd1));const _0x21ae5a=Array[_0x1da45f(0xd9)](_0x3b73df)?_0x3b73df:[_0x3b73df];if(_0x21ae5a[_0x1da45f(0xdc)]===0x0)throw CliErrors[_0x1da45f(0xed)](_0x1da45f(0xde));if(_0x21ae5a[_0x1da45f(0xdc)]>MAX_DATA_UPDATE_IDS)throw CliErrors[_0x1da45f(0xed)](_0x1da45f(0xd7)+MAX_DATA_UPDATE_IDS+_0x1da45f(0xe2)+_0x21ae5a['length']+'.');return _0x21ae5a['map']((_0x3eec2e,_0x31cd26)=>parseDataUpdateId(_0x3eec2e,Array[_0x1da45f(0xd9)](_0x3b73df)?_0x1da45f(0xd4)+_0x31cd26+']':'id'));}export function normalizeUpdateParamsForRuntime(_0x1f3500,_0x1c3eea){const _0x3b392b=a172_0x5128;if(Array['isArray'](_0x1f3500['id'])&&_0x1c3eea[_0x3b392b(0xdc)]>0x1)return{..._0x1f3500,'id':_0x1c3eea[_0x3b392b(0xeb)](',')};return _0x1f3500;}
@@ -1 +1 @@
1
- function a170_0x2136(){const _0x49594f=['62262HfwfCJ','1094738sqNzTT','4734000GSCkxg','127725EhjxPF','546wYwqal','21380896RLHWTm','string','test','41025LRglGo','isSafeInteger','729704PVvMUY'];a170_0x2136=function(){return _0x49594f;};return a170_0x2136();}(function(_0x53ac2c,_0x17c72c){const _0x3abcfa=a170_0x53a9,_0x36b318=_0x53ac2c();while(!![]){try{const _0x23c7e1=parseInt(_0x3abcfa(0x84))/0x1+-parseInt(_0x3abcfa(0x88))/0x2+parseInt(_0x3abcfa(0x8a))/0x3+parseInt(_0x3abcfa(0x86))/0x4+-parseInt(_0x3abcfa(0x89))/0x5+-parseInt(_0x3abcfa(0x87))/0x6*(parseInt(_0x3abcfa(0x8b))/0x7)+parseInt(_0x3abcfa(0x8c))/0x8;if(_0x23c7e1===_0x17c72c)break;else _0x36b318['push'](_0x36b318['shift']());}catch(_0x406c66){_0x36b318['push'](_0x36b318['shift']());}}}(a170_0x2136,0x9b0b7));function a170_0x53a9(_0x52c48e,_0x46cb24){_0x52c48e=_0x52c48e-0x82;const _0x213607=a170_0x2136();let _0x53a946=_0x213607[_0x52c48e];return _0x53a946;}export function normalizePositiveSafeInteger(_0x23627e){const _0x2b385e=a170_0x53a9;if(typeof _0x23627e==='number')return Number[_0x2b385e(0x85)](_0x23627e)&&_0x23627e>0x0?_0x23627e:undefined;if(typeof _0x23627e!==_0x2b385e(0x82)||!/^\d+$/[_0x2b385e(0x83)](_0x23627e))return undefined;const _0x5e0304=Number(_0x23627e);return Number[_0x2b385e(0x85)](_0x5e0304)&&_0x5e0304>0x0?_0x5e0304:undefined;}
1
+ function a173_0x59bb(_0x3da35c,_0x2c6aec){_0x3da35c=_0x3da35c-0x15c;const _0x10bda0=a173_0x10bd();let _0x59bbf8=_0x10bda0[_0x3da35c];return _0x59bbf8;}(function(_0x3f694f,_0x3ef95b){const _0x2f443f=a173_0x59bb,_0x4bba2e=_0x3f694f();while(!![]){try{const _0x2e689e=parseInt(_0x2f443f(0x161))/0x1*(-parseInt(_0x2f443f(0x160))/0x2)+-parseInt(_0x2f443f(0x167))/0x3*(parseInt(_0x2f443f(0x163))/0x4)+parseInt(_0x2f443f(0x168))/0x5+parseInt(_0x2f443f(0x166))/0x6*(-parseInt(_0x2f443f(0x15c))/0x7)+-parseInt(_0x2f443f(0x15f))/0x8+-parseInt(_0x2f443f(0x164))/0x9+parseInt(_0x2f443f(0x162))/0xa*(parseInt(_0x2f443f(0x15e))/0xb);if(_0x2e689e===_0x3ef95b)break;else _0x4bba2e['push'](_0x4bba2e['shift']());}catch(_0x368b5e){_0x4bba2e['push'](_0x4bba2e['shift']());}}}(a173_0x10bd,0xd7b6e));function a173_0x10bd(){const _0x2dc2b3=['39671330unUdOS','76088jlLhqU','12083868nTBiUV','number','12sHpaiJ','126mYEjXW','3520580saHqAg','test','430983szfoda','string','11GzRRZg','12176064qUoRbA','62BXeQDY','31LaoTuX'];a173_0x10bd=function(){return _0x2dc2b3;};return a173_0x10bd();}export function normalizePositiveSafeInteger(_0x2b440e){const _0x11af4f=a173_0x59bb;if(typeof _0x2b440e===_0x11af4f(0x165))return Number['isSafeInteger'](_0x2b440e)&&_0x2b440e>0x0?_0x2b440e:undefined;if(typeof _0x2b440e!==_0x11af4f(0x15d)||!/^\d+$/[_0x11af4f(0x169)](_0x2b440e))return undefined;const _0x30fbce=Number(_0x2b440e);return Number['isSafeInteger'](_0x30fbce)&&_0x30fbce>0x0?_0x30fbce:undefined;}
@@ -1 +1 @@
1
- const a171_0x3cb6e3=a171_0x2ee6;function a171_0x527c(){const _0x1450d0=['10SRvFEF','map','5JxMncu','[REDACTED]','878IknvIE','6463765GKfdcL','has','9206844AmHVHO','replace','697635BYMXEz','entries','1447VskDTK','test','match','push','object','42lHruZX','11728899fpbaUL','8YAEYnc','522840hxdnGa','fromEntries','104hgZRli','comment','2414952PXpVxU','toLowerCase'];a171_0x527c=function(){return _0x1450d0;};return a171_0x527c();}(function(_0x54f9e3,_0x5a1e15){const _0xe41364=a171_0x2ee6,_0x43e0d1=_0x54f9e3();while(!![]){try{const _0x2b936e=-parseInt(_0xe41364(0x11d))/0x1*(-parseInt(_0xe41364(0x116))/0x2)+parseInt(_0xe41364(0x109))/0x3*(-parseInt(_0xe41364(0x10c))/0x4)+parseInt(_0xe41364(0x114))/0x5*(parseInt(_0xe41364(0x119))/0x6)+-parseInt(_0xe41364(0x10a))/0x7*(parseInt(_0xe41364(0x10b))/0x8)+parseInt(_0xe41364(0x11b))/0x9+-parseInt(_0xe41364(0x112))/0xa*(-parseInt(_0xe41364(0x117))/0xb)+parseInt(_0xe41364(0x110))/0xc*(parseInt(_0xe41364(0x10e))/0xd);if(_0x2b936e===_0x5a1e15)break;else _0x43e0d1['push'](_0x43e0d1['shift']());}catch(_0x3e0565){_0x43e0d1['push'](_0x43e0d1['shift']());}}}(a171_0x527c,0xe552c));const REDACTED_VALUE=a171_0x3cb6e3(0x115),SENSITIVE_KEY_PATTERN=/(?:access.?key|api.?key|authorization|cookie|credential|password|passwd|private.?key|secret|token|webhook)/i,SENSITIVE_FLAG_NAMES=new Set([a171_0x3cb6e3(0x10f),'variables']),SENSITIVE_VALUE_KEYS=new Set([a171_0x3cb6e3(0x10f)]);export function isSensitiveKey(_0x426a28){const _0x2f8f8d=a171_0x3cb6e3,_0x53e3ce=_0x426a28[_0x2f8f8d(0x11a)](/_/g,'-')[_0x2f8f8d(0x111)]();return SENSITIVE_KEY_PATTERN[_0x2f8f8d(0x11e)](_0x53e3ce);}function a171_0x2ee6(_0x4b1003,_0x37848a){_0x4b1003=_0x4b1003-0x109;const _0x527cbb=a171_0x527c();let _0x2ee675=_0x527cbb[_0x4b1003];return _0x2ee675;}export function isSensitiveFlagName(_0x94b4a3){const _0x447383=a171_0x3cb6e3,_0x404735=_0x94b4a3[_0x447383(0x11a)](/_/g,'-')[_0x447383(0x111)]();return isSensitiveKey(_0x404735)||SENSITIVE_FLAG_NAMES[_0x447383(0x118)](_0x404735);}function redactVariableValues(_0x19abf1){const _0x2aab1f=a171_0x3cb6e3;if(Array['isArray'](_0x19abf1))return _0x19abf1[_0x2aab1f(0x113)](_0x1bad16=>redactVariableValues(_0x1bad16));if(_0x19abf1&&typeof _0x19abf1===_0x2aab1f(0x121))return Object[_0x2aab1f(0x10d)](Object[_0x2aab1f(0x11c)](_0x19abf1)['map'](([_0x354bc1,_0x5ecc72])=>[_0x354bc1,redactVariableValues(_0x5ecc72)]));return REDACTED_VALUE;}export function redactSensitiveValue(_0x171ff6){const _0x22b54f=a171_0x3cb6e3;if(Array['isArray'](_0x171ff6))return _0x171ff6[_0x22b54f(0x113)](_0x2f928b=>redactSensitiveValue(_0x2f928b));if(!_0x171ff6||typeof _0x171ff6!==_0x22b54f(0x121))return _0x171ff6;const _0x55dd60={};for(const [_0x4b16d7,_0x270c80]of Object[_0x22b54f(0x11c)](_0x171ff6)){const _0x393904=_0x4b16d7['replace'](/_/g,'-')[_0x22b54f(0x111)]();_0x55dd60[_0x4b16d7]=_0x393904==='variables'?redactVariableValues(_0x270c80):SENSITIVE_VALUE_KEYS[_0x22b54f(0x118)](_0x393904)||isSensitiveKey(_0x4b16d7)?REDACTED_VALUE:redactSensitiveValue(_0x270c80);}return _0x55dd60;}export function redactCommandArgv(_0x4f335f){const _0x6aba12=a171_0x3cb6e3,_0x58e8d1=[];let _0x30e518=![];for(const _0x236d13 of _0x4f335f){if(_0x30e518){_0x58e8d1[_0x6aba12(0x120)](REDACTED_VALUE),_0x30e518=![];continue;}const _0x33321d=_0x236d13[_0x6aba12(0x11f)](/^--([^=]+)(?:=(.*))?$/);if(!_0x33321d||!isSensitiveFlagName(_0x33321d[0x1]??'')){_0x58e8d1[_0x6aba12(0x120)](_0x236d13);continue;}_0x58e8d1[_0x6aba12(0x120)]('--'+_0x33321d[0x1]+(_0x33321d[0x2]===undefined?'':'='+REDACTED_VALUE)),_0x33321d[0x2]===undefined&&(_0x30e518=!![]);}return _0x58e8d1;}export{REDACTED_VALUE};
1
+ function a174_0x3521(_0x3fcd09,_0x4ca7c8){_0x3fcd09=_0x3fcd09-0x189;const _0x5394f8=a174_0x5394();let _0x3521d6=_0x5394f8[_0x3fcd09];return _0x3521d6;}const a174_0x3ad9b1=a174_0x3521;(function(_0x248b0e,_0x4620d1){const _0x5487ed=a174_0x3521,_0x31612c=_0x248b0e();while(!![]){try{const _0x51b245=-parseInt(_0x5487ed(0x18a))/0x1+parseInt(_0x5487ed(0x18f))/0x2*(parseInt(_0x5487ed(0x189))/0x3)+parseInt(_0x5487ed(0x196))/0x4+parseInt(_0x5487ed(0x194))/0x5+parseInt(_0x5487ed(0x195))/0x6+-parseInt(_0x5487ed(0x198))/0x7+-parseInt(_0x5487ed(0x193))/0x8*(parseInt(_0x5487ed(0x19c))/0x9);if(_0x51b245===_0x4620d1)break;else _0x31612c['push'](_0x31612c['shift']());}catch(_0x2de651){_0x31612c['push'](_0x31612c['shift']());}}}(a174_0x5394,0xe53fc));const REDACTED_VALUE='[REDACTED]',SENSITIVE_KEY_PATTERN=/(?:access.?key|api.?key|authorization|cookie|credential|password|passwd|private.?key|secret|token|webhook)/i,SENSITIVE_FLAG_NAMES=new Set([a174_0x3ad9b1(0x18e),a174_0x3ad9b1(0x192)]),SENSITIVE_VALUE_KEYS=new Set([a174_0x3ad9b1(0x18e)]);export function isSensitiveKey(_0xf07a85){const _0x423104=a174_0x3ad9b1,_0x541cea=_0xf07a85[_0x423104(0x191)](/_/g,'-')['toLowerCase']();return SENSITIVE_KEY_PATTERN[_0x423104(0x197)](_0x541cea);}export function isSensitiveFlagName(_0xfe13ca){const _0x40125c=a174_0x3ad9b1,_0xfc43c4=_0xfe13ca[_0x40125c(0x191)](/_/g,'-')['toLowerCase']();return isSensitiveKey(_0xfc43c4)||SENSITIVE_FLAG_NAMES['has'](_0xfc43c4);}function redactVariableValues(_0x13ff70){const _0xe0f040=a174_0x3ad9b1;if(Array[_0xe0f040(0x18d)](_0x13ff70))return _0x13ff70['map'](_0x278307=>redactVariableValues(_0x278307));if(_0x13ff70&&typeof _0x13ff70===_0xe0f040(0x18c))return Object[_0xe0f040(0x190)](Object[_0xe0f040(0x19a)](_0x13ff70)[_0xe0f040(0x199)](([_0x53a2e2,_0x5e5e13])=>[_0x53a2e2,redactVariableValues(_0x5e5e13)]));return REDACTED_VALUE;}function a174_0x5394(){const _0x1359d1=['162OCzqZb','4396713uXDfok','73022eVmGSD','has','object','isArray','comment','2XLLdGD','fromEntries','replace','variables','1473576bAEuGI','3220425DJwBXJ','10091220wbVZVn','5831932pFTiXa','test','6453559OmUqlQ','map','entries','push'];a174_0x5394=function(){return _0x1359d1;};return a174_0x5394();}export function redactSensitiveValue(_0x59e21f){const _0x40d1c1=a174_0x3ad9b1;if(Array['isArray'](_0x59e21f))return _0x59e21f[_0x40d1c1(0x199)](_0x40b7bf=>redactSensitiveValue(_0x40b7bf));if(!_0x59e21f||typeof _0x59e21f!=='object')return _0x59e21f;const _0x23e23b={};for(const [_0x32483a,_0x292c76]of Object['entries'](_0x59e21f)){const _0x54671d=_0x32483a[_0x40d1c1(0x191)](/_/g,'-')['toLowerCase']();_0x23e23b[_0x32483a]=_0x54671d==='variables'?redactVariableValues(_0x292c76):SENSITIVE_VALUE_KEYS[_0x40d1c1(0x18b)](_0x54671d)||isSensitiveKey(_0x32483a)?REDACTED_VALUE:redactSensitiveValue(_0x292c76);}return _0x23e23b;}export function redactCommandArgv(_0x3752fa){const _0x4dd1b8=a174_0x3ad9b1,_0x311bd9=[];let _0x5e6a6c=![];for(const _0x414c1b of _0x3752fa){if(_0x5e6a6c){_0x311bd9[_0x4dd1b8(0x19b)](REDACTED_VALUE),_0x5e6a6c=![];continue;}const _0x52da56=_0x414c1b['match'](/^--([^=]+)(?:=(.*))?$/);if(!_0x52da56||!isSensitiveFlagName(_0x52da56[0x1]??'')){_0x311bd9[_0x4dd1b8(0x19b)](_0x414c1b);continue;}_0x311bd9[_0x4dd1b8(0x19b)]('--'+_0x52da56[0x1]+(_0x52da56[0x2]===undefined?'':'='+REDACTED_VALUE)),_0x52da56[0x2]===undefined&&(_0x5e6a6c=!![]);}return _0x311bd9;}export{REDACTED_VALUE};
@@ -1 +1 @@
1
- (function(_0x5c2d46,_0x4f14d9){const _0x350ad6=a172_0x327e,_0x2e7baf=_0x5c2d46();while(!![]){try{const _0xca5c44=parseInt(_0x350ad6(0x116))/0x1+-parseInt(_0x350ad6(0x10d))/0x2+parseInt(_0x350ad6(0x11d))/0x3+-parseInt(_0x350ad6(0x110))/0x4*(-parseInt(_0x350ad6(0x121))/0x5)+-parseInt(_0x350ad6(0x10b))/0x6*(parseInt(_0x350ad6(0x115))/0x7)+-parseInt(_0x350ad6(0x111))/0x8+-parseInt(_0x350ad6(0x123))/0x9;if(_0xca5c44===_0x4f14d9)break;else _0x2e7baf['push'](_0x2e7baf['shift']());}catch(_0x433b34){_0x2e7baf['push'](_0x2e7baf['shift']());}}}(a172_0x58f1,0x1e833));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';function a172_0x58f1(){const _0x537cfd=['53230XLsewy','\x20is\x20recommended,\x20current\x20','https://www.npmjs.com/package/','9448BOwXdz','436208KAfteB','yes','upgradeMessage','.cache','7BBRrbW','210770DzQsMu','number','stringify','belowMinimum',',\x20run:\x20','needsUpgrade','toLowerCase','593892iODLCa','filter','currentVersion','lastNotifiedAt','430nOHRYY','utf8','3630240OPblBe','lastNotifiedVersion','parse','update-check.json','object','lovrabet-cli','14316IApslQ','now'];a172_0x58f1=function(){return _0x537cfd;};return a172_0x58f1();}import{dirname,join}from'node:path';import{LOVRABET_NPM_PACKAGE_NAME}from'../constant/distribution.js';import{CLI_BIN_NAME}from'../constant/cli.js';import{checkCliVersion,getCliUpgradeCommand}from'../utils/cli-version-check.js';const UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function isUpdateNoticeDisabled(){const _0x5f315c=a172_0x327e,_0x229a52=process.env.LOVRABET_NO_UPDATE_NOTICE?.['trim']()[_0x5f315c(0x11c)]();return _0x229a52==='1'||_0x229a52==='true'||_0x229a52===_0x5f315c(0x112);}function cacheRoot(){const _0x581638=a172_0x327e;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x581638(0x114));}export function getUpdateNoticeCachePath(){const _0xb5c26c=a172_0x327e;return join(cacheRoot(),_0xb5c26c(0x10a),_0xb5c26c(0x126));}async function readUpdateNoticeCache(){const _0x2161ee=a172_0x327e;try{const _0x720720=await readFile(getUpdateNoticeCachePath(),_0x2161ee(0x122)),_0xa7695b=JSON[_0x2161ee(0x125)](_0x720720);if(!_0xa7695b||typeof _0xa7695b!==_0x2161ee(0x109))return{};return _0xa7695b;}catch{return{};}}async function writeUpdateNoticeCache(_0x4858b6){const _0x471a92=a172_0x327e;try{const _0x5d132d=getUpdateNoticeCachePath();await mkdir(dirname(_0x5d132d),{'recursive':!![]}),await writeFile(_0x5d132d,JSON[_0x471a92(0x118)](_0x4858b6,null,0x2)+'\x0a',_0x471a92(0x122));}catch{}}function a172_0x327e(_0x31cada,_0x1d8196){_0x31cada=_0x31cada-0x109;const _0x58f10f=a172_0x58f1();let _0x327e50=_0x58f10f[_0x31cada];return _0x327e50;}function isRecentlyNotified(_0x3b930f,_0x2ad409,_0x16229b){const _0xf85e87=a172_0x327e;return _0x3b930f[_0xf85e87(0x124)]===_0x2ad409&&typeof _0x3b930f[_0xf85e87(0x120)]===_0xf85e87(0x117)&&_0x16229b-_0x3b930f[_0xf85e87(0x120)]<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x1aa11a){const _0x404ea3=a172_0x327e;return _0x404ea3(0x10f)+LOVRABET_NPM_PACKAGE_NAME+'/v/'+_0x1aa11a;}export async function resolveLatestUpdateNotice(_0x1400fb){const _0x10bd03=a172_0x327e;if(isUpdateNoticeDisabled())return null;try{const _0x24efba=Date[_0x10bd03(0x10c)](),_0xfa3d1e=_0x1400fb??await checkCliVersion(),_0x35bd95=_0xfa3d1e[_0x10bd03(0x11f)],_0x40be3b=_0xfa3d1e['stableVersion'],_0xb3a711=await readUpdateNoticeCache();if(!_0x40be3b||!_0xfa3d1e[_0x10bd03(0x11b)]||_0xfa3d1e[_0x10bd03(0x119)])return null;if(isRecentlyNotified(_0xb3a711,_0x40be3b,_0x24efba))return null;const _0x16af9b=getCliUpgradeCommand(_0xfa3d1e);return await writeUpdateNoticeCache({..._0xb3a711,'checkedAt':_0x24efba,'latest':_0x40be3b,'failed':![],'lastNotifiedVersion':_0x40be3b,'lastNotifiedAt':_0x24efba}),{'command':_0x16af9b,'current':_0x35bd95,'latest':_0x40be3b,'url':buildNpmVersionUrl(_0x40be3b),'message':[_0xfa3d1e[_0x10bd03(0x113)],CLI_BIN_NAME+'\x20'+_0x40be3b+_0x10bd03(0x10e)+_0x35bd95+_0x10bd03(0x11a)+_0x16af9b][_0x10bd03(0x11e)](Boolean)['join']('\x20')};}catch{return null;}}
1
+ (function(_0x2edff5,_0x261c23){const _0x50ff32=a175_0x59d7,_0x124993=_0x2edff5();while(!![]){try{const _0xf69401=-parseInt(_0x50ff32(0x1fa))/0x1+-parseInt(_0x50ff32(0x1f0))/0x2+-parseInt(_0x50ff32(0x1fe))/0x3*(parseInt(_0x50ff32(0x1f6))/0x4)+parseInt(_0x50ff32(0x1f3))/0x5+parseInt(_0x50ff32(0x200))/0x6+parseInt(_0x50ff32(0x203))/0x7+parseInt(_0x50ff32(0x1f4))/0x8*(parseInt(_0x50ff32(0x201))/0x9);if(_0xf69401===_0x261c23)break;else _0x124993['push'](_0x124993['shift']());}catch(_0x2a759a){_0x124993['push'](_0x124993['shift']());}}}(a175_0x3a58,0x5c869));function a175_0x59d7(_0x9706a2,_0x135b59){_0x9706a2=_0x9706a2-0x1f0;const _0x3a5827=a175_0x3a58();let _0x59d77c=_0x3a5827[_0x9706a2];return _0x59d77c;}import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';import{LOVRABET_NPM_PACKAGE_NAME}from'../constant/distribution.js';import{CLI_BIN_NAME}from'../constant/cli.js';import{checkCliVersion,getCliUpgradeCommand}from'../utils/cli-version-check.js';const UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function isUpdateNoticeDisabled(){const _0x52179e=a175_0x59d7,_0x1b07d4=process.env.LOVRABET_NO_UPDATE_NOTICE?.[_0x52179e(0x206)]()[_0x52179e(0x1f9)]();return _0x1b07d4==='1'||_0x1b07d4==='true'||_0x1b07d4===_0x52179e(0x209);}function cacheRoot(){return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),'.cache');}export function getUpdateNoticeCachePath(){const _0x2246c3=a175_0x59d7;return join(cacheRoot(),'lovrabet-cli',_0x2246c3(0x204));}async function readUpdateNoticeCache(){const _0xe07d15=a175_0x59d7;try{const _0x532bea=await readFile(getUpdateNoticeCachePath(),_0xe07d15(0x208)),_0x4add4c=JSON[_0xe07d15(0x1f8)](_0x532bea);if(!_0x4add4c||typeof _0x4add4c!==_0xe07d15(0x202))return{};return _0x4add4c;}catch{return{};}}function a175_0x3a58(){const _0x1a5855=['lastNotifiedVersion','752922xjQbLR','lastNotifiedAt','2676426bVrFOE','2659626eRtMKB','object','4340210kpDqOW','update-check.json','join','trim','now','utf8','yes','stableVersion','1470892DwIRZi',',\x20run:\x20','\x20is\x20recommended,\x20current\x20','3597250dUoXAj','8cIkcSu','stringify','4YMscJX','/v/','parse','toLowerCase','715660whPWpA','number','needsUpgrade'];a175_0x3a58=function(){return _0x1a5855;};return a175_0x3a58();}async function writeUpdateNoticeCache(_0x556a9e){const _0x5af40e=a175_0x59d7;try{const _0xa614bf=getUpdateNoticeCachePath();await mkdir(dirname(_0xa614bf),{'recursive':!![]}),await writeFile(_0xa614bf,JSON[_0x5af40e(0x1f5)](_0x556a9e,null,0x2)+'\x0a','utf8');}catch{}}function isRecentlyNotified(_0x26701f,_0x538925,_0x371938){const _0xa65a67=a175_0x59d7;return _0x26701f[_0xa65a67(0x1fd)]===_0x538925&&typeof _0x26701f[_0xa65a67(0x1ff)]===_0xa65a67(0x1fb)&&_0x371938-_0x26701f['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x481d3c){const _0x5eb2ee=a175_0x59d7;return'https://www.npmjs.com/package/'+LOVRABET_NPM_PACKAGE_NAME+_0x5eb2ee(0x1f7)+_0x481d3c;}export async function resolveLatestUpdateNotice(_0x1748ce){const _0x3bf3c0=a175_0x59d7;if(isUpdateNoticeDisabled())return null;try{const _0x2ee966=Date[_0x3bf3c0(0x207)](),_0x1e8c43=_0x1748ce??await checkCliVersion(),_0x1241c0=_0x1e8c43['currentVersion'],_0x58175e=_0x1e8c43[_0x3bf3c0(0x20a)],_0x7ef3b0=await readUpdateNoticeCache();if(!_0x58175e||!_0x1e8c43[_0x3bf3c0(0x1fc)]||_0x1e8c43['belowMinimum'])return null;if(isRecentlyNotified(_0x7ef3b0,_0x58175e,_0x2ee966))return null;const _0x62e8d8=getCliUpgradeCommand(_0x1e8c43);return await writeUpdateNoticeCache({..._0x7ef3b0,'checkedAt':_0x2ee966,'latest':_0x58175e,'failed':![],'lastNotifiedVersion':_0x58175e,'lastNotifiedAt':_0x2ee966}),{'command':_0x62e8d8,'current':_0x1241c0,'latest':_0x58175e,'url':buildNpmVersionUrl(_0x58175e),'message':[_0x1e8c43['upgradeMessage'],CLI_BIN_NAME+'\x20'+_0x58175e+_0x3bf3c0(0x1f2)+_0x1241c0+_0x3bf3c0(0x1f1)+_0x62e8d8]['filter'](Boolean)[_0x3bf3c0(0x205)]('\x20')};}catch{return null;}}
@@ -1 +1 @@
1
- function a173_0x4372(_0x2e9ce3,_0x4126ad){_0x2e9ce3=_0x2e9ce3-0x11d;const _0x1382ed=a173_0x1382();let _0x4372d9=_0x1382ed[_0x2e9ce3];return _0x4372d9;}(function(_0x466be7,_0x2d2c4a){const _0x4dbf94=a173_0x4372,_0x846884=_0x466be7();while(!![]){try{const _0x2172df=-parseInt(_0x4dbf94(0x122))/0x1*(parseInt(_0x4dbf94(0x120))/0x2)+-parseInt(_0x4dbf94(0x123))/0x3*(-parseInt(_0x4dbf94(0x127))/0x4)+-parseInt(_0x4dbf94(0x121))/0x5*(parseInt(_0x4dbf94(0x128))/0x6)+parseInt(_0x4dbf94(0x11f))/0x7+parseInt(_0x4dbf94(0x126))/0x8+parseInt(_0x4dbf94(0x129))/0x9*(parseInt(_0x4dbf94(0x124))/0xa)+parseInt(_0x4dbf94(0x11d))/0xb;if(_0x2172df===_0x2d2c4a)break;else _0x846884['push'](_0x846884['shift']());}catch(_0x118335){_0x846884['push'](_0x846884['shift']());}}}(a173_0x1382,0x7060d));import{BUILD_TIME,GIT_COMMIT,VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}function a173_0x1382(){const _0x56cfcc=['5xsosIr','3066gKxSeV','3wSRtVs','1810GXCDXD','slice','3040824xRokhP','1932460xXfUPC','3652518rureYJ','13491JrLzOX','2291509kkLPeU','unknown','1173914MvmuKN','288YOZozv'];a173_0x1382=function(){return _0x56cfcc;};return a173_0x1382();}export function getCliGitCommit(){const _0x33952b=a173_0x4372,_0x4c1122=String(GIT_COMMIT);return _0x4c1122&&_0x4c1122!==_0x33952b(0x11e)?_0x4c1122:'';}export function getCliVersionDisplay(){const _0x337a70=a173_0x4372,_0xce6c0b=getCliGitCommit(),_0x1c0bc8=BUILD_TIME[_0x337a70(0x125)](0x0,0xa);if(!_0xce6c0b||!_0x1c0bc8)return VERSION;return VERSION+'\x20('+_0xce6c0b+',\x20'+_0x1c0bc8+')';}
1
+ (function(_0x819a74,_0x54fe5a){const _0x22af84=a176_0x1371,_0x4e53ae=_0x819a74();while(!![]){try{const _0x45132f=-parseInt(_0x22af84(0x164))/0x1*(parseInt(_0x22af84(0x16c))/0x2)+parseInt(_0x22af84(0x165))/0x3*(parseInt(_0x22af84(0x16d))/0x4)+parseInt(_0x22af84(0x169))/0x5*(-parseInt(_0x22af84(0x168))/0x6)+-parseInt(_0x22af84(0x166))/0x7+-parseInt(_0x22af84(0x162))/0x8*(-parseInt(_0x22af84(0x163))/0x9)+parseInt(_0x22af84(0x16b))/0xa*(-parseInt(_0x22af84(0x16a))/0xb)+parseInt(_0x22af84(0x167))/0xc;if(_0x45132f===_0x54fe5a)break;else _0x4e53ae['push'](_0x4e53ae['shift']());}catch(_0x566929){_0x4e53ae['push'](_0x4e53ae['shift']());}}}(a176_0x7faa,0x4c4f8));function a176_0x1371(_0x5bc82c,_0x12f0f0){_0x5bc82c=_0x5bc82c-0x162;const _0x7faacc=a176_0x7faa();let _0x137111=_0x7faacc[_0x5bc82c];return _0x137111;}import{BUILD_TIME,GIT_COMMIT,VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}export function getCliGitCommit(){const _0x18f397=String(GIT_COMMIT);return _0x18f397&&_0x18f397!=='unknown'?_0x18f397:'';}function a176_0x7faa(){const _0x19ae57=['971945yLKoHu','11yEhKyA','2265110sSRlqK','2jXchhu','16SxPMCz','16lTeuGe','1465083gEacwP','543083UFyMvN','442965rGcwUy','4223989gBibrw','11565408vSwoUl','6BYUzyn'];a176_0x7faa=function(){return _0x19ae57;};return a176_0x7faa();}export function getCliVersionDisplay(){const _0x19f723=getCliGitCommit(),_0x399bb9=BUILD_TIME['slice'](0x0,0xa);if(!_0x19f723||!_0x399bb9)return VERSION;return VERSION+'\x20('+_0x19f723+',\x20'+_0x399bb9+')';}
@@ -1 +1 @@
1
- function a174_0x58df(_0x49fc1e,_0x2df598){_0x49fc1e=_0x49fc1e-0x99;var _0x45c724=a174_0x45c7();var _0x58df5a=_0x45c724[_0x49fc1e];return _0x58df5a;}(function(_0x431ca3,_0x1a6a5c){var _0x9b2ac8=a174_0x58df,_0x424293=_0x431ca3();while(!![]){try{var _0x1f32b1=-parseInt(_0x9b2ac8(0x99))/0x1*(-parseInt(_0x9b2ac8(0xa1))/0x2)+parseInt(_0x9b2ac8(0x9f))/0x3*(-parseInt(_0x9b2ac8(0xa0))/0x4)+-parseInt(_0x9b2ac8(0xa4))/0x5*(parseInt(_0x9b2ac8(0x9a))/0x6)+parseInt(_0x9b2ac8(0xa2))/0x7+-parseInt(_0x9b2ac8(0x9c))/0x8*(parseInt(_0x9b2ac8(0xa3))/0x9)+-parseInt(_0x9b2ac8(0x9b))/0xa+parseInt(_0x9b2ac8(0x9e))/0xb;if(_0x1f32b1===_0x1a6a5c)break;else _0x424293['push'](_0x424293['shift']());}catch(_0x62a22c){_0x424293['push'](_0x424293['shift']());}}}(a174_0x45c7,0xe18b7));function a174_0x45c7(){var _0x5df0ba=['2466MhThbR','803365HukxHE','5pdwXka','18aISwjK','6607910LOvDhn','49544vPRGdP','write','21604869lKxoNY','162MkBgiY','49592gEkyrr','588902rWDtCY','6976767wkNWHw'];a174_0x45c7=function(){return _0x5df0ba;};return a174_0x45c7();}export function writeCliSideChannelLine(_0x4c57b7){var _0x58f882=a174_0x58df;process['stderr'][_0x58f882(0x9d)](_0x4c57b7+'\x0a');}
1
+ function a177_0x3a41(_0x3d263a,_0xdc587){_0x3d263a=_0x3d263a-0x1d8;var _0x1e7cb8=a177_0x1e7c();var _0x3a419b=_0x1e7cb8[_0x3d263a];return _0x3a419b;}(function(_0x3054d2,_0x5098fb){var _0x3b23f0=a177_0x3a41,_0xed327f=_0x3054d2();while(!![]){try{var _0x5a6550=parseInt(_0x3b23f0(0x1da))/0x1*(parseInt(_0x3b23f0(0x1e5))/0x2)+-parseInt(_0x3b23f0(0x1d8))/0x3*(parseInt(_0x3b23f0(0x1de))/0x4)+-parseInt(_0x3b23f0(0x1d9))/0x5*(-parseInt(_0x3b23f0(0x1df))/0x6)+-parseInt(_0x3b23f0(0x1e2))/0x7*(-parseInt(_0x3b23f0(0x1dc))/0x8)+parseInt(_0x3b23f0(0x1e0))/0x9*(parseInt(_0x3b23f0(0x1e3))/0xa)+parseInt(_0x3b23f0(0x1db))/0xb+-parseInt(_0x3b23f0(0x1e4))/0xc;if(_0x5a6550===_0x5098fb)break;else _0xed327f['push'](_0xed327f['shift']());}catch(_0x5db25a){_0xed327f['push'](_0xed327f['shift']());}}}(a177_0x1e7c,0xe5bd0));export function writeCliSideChannelLine(_0x50a8f6){var _0x593c79=a177_0x3a41;process[_0x593c79(0x1dd)][_0x593c79(0x1e1)](_0x50a8f6+'\x0a');}function a177_0x1e7c(){var _0x361f53=['5064hMllMs','stderr','452SozrDJ','1326fzDzDh','16590933WJsjiR','write','5215TAbfti','10idBJxI','41443212hoRDNt','1295510knBupK','44553IYyHXJ','31135nTAuJu','1paoHAT','19072108kPgBJg'];a177_0x1e7c=function(){return _0x361f53;};return a177_0x1e7c();}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/lovrabet-cli",
3
- "version": "2.3.5",
3
+ "version": "2.3.6-beta.2",
4
4
  "description": "Runtime CLI for Lovrabet apps, datasets, SQL, Backend Function, skills, and AI agent workflows.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -94,9 +94,12 @@
94
94
  "fs-extra": "^11.3.6",
95
95
  "ink": "^6.2.3",
96
96
  "ink-spinner": "^5.0.0",
97
+ "jpeg-js": "0.4.4",
97
98
  "jsdom": "26.1.0",
98
99
  "meow": "^13.2.0",
99
100
  "mermaid": "11.16.0",
101
+ "omggif": "1.0.10",
102
+ "pngjs": "7.0.0",
100
103
  "react": "^19.2.0",
101
104
  "saxes": "6.0.0",
102
105
  "semver": "^7.7.3",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: lovrabet
3
3
  displayName: Lovrabet 运行态 CLI
4
- version: 2.3.5
4
+ version: 2.3.6-beta.2
5
5
  description: "Lovrabet 运行态 CLI — 面向业务场景的 AI 操作套件,通过 lovrabet 命令管理应用目录、业务角色与权限、用户级外部账号、Service Tree 业务命令、API 文档发现、数据集查询、Instant API 数据操作、可恢复 Excel 导入、Custom SQL/Backend Function、Personal Backend Function、文件上传、面向票证类业务材料文字与结构化字段提取的 OCR、审批待办与任务办理、定时任务、Skill、知识库与运行态 app-config key 状态检查。触发词:云图、lovrabet、lovrabet-cli、业务角色、角色成员、页面权限、菜单权限、数据集权限、user-account bind、provider 外部账号绑定、钉钉 userId 绑定、service tree、业务服务树、api-doc、dataset、data filter、Excel 导入、data import-excel、file upload、file query-url、ocr recognize、OCR 识别、票证文字提取、票证字段提取、发票识别、票据识别、证照识别、附件上传、personal-bff、approval、审批、待办、approve、reject、transfer、schedule、定时任务、cron、kb、skill、sql exec、bff exec、app-config、accessKey、compress、jq。"
6
6
  metadata:
7
7
  requires:
@@ -204,12 +204,14 @@ Service Tree 未命中不是失败条件,也不代表业务能力不存在。
204
204
 
205
205
  这种情况下,直接进入:
206
206
 
207
- 1. `dataset list --name ...`
207
+ 1. 按数据集名称用 `dataset list --name ...`;已知物理表名时用 `dataset list --table-name ...`
208
208
  2. `dataset detail --code ...`
209
209
  3. `data filter/getOne/create/batchCreate/update/delete`
210
210
 
211
211
  不要先多打一轮应用发现命令制造噪音。
212
212
 
213
+ 下面的名称关键词示例也适用于默认候选和其他候选 app 的验证:用户提供物理表名时,将 `--name <关键词>` 换成 `--table-name <表名前缀>`,不要把物理表名当作数据集名称搜索。筛选参数均可单独使用;同时传入时按 AND 组合,不要求补齐其他筛选条件。匹配规则见 [数据集发现](references/dataset-discovery-workflow.md)。
214
+
213
215
  `defaultApp` 只是弱候选,不是强上下文。未显式指定 app 时,如果本地已有 `defaultApp`,应先在默认候选里按需求关键词做数据集验证;无命中、弱命中或语义不合理时,再扩大到 `app list` 里查找其他应用。
214
216
 
215
217
  ### 需要进一步应用决议的场景
@@ -405,7 +407,7 @@ Service Tree 未命中不是失败条件,也不代表业务能力不存在。
405
407
 
406
408
  | 意图 | 命令 |
407
409
  |------|------|
408
- | 找数据集 | `lovrabet dataset list [--name 关键词] [--code 精确码]` |
410
+ | 找数据集 | `lovrabet dataset list [--name 关键词] [--table-name 表名前缀] [--code 精确码]` |
409
411
  | 看数据集字段、关联信息和操作 | `lovrabet dataset detail --code <code> [--format json]` |
410
412
  | 查运行态 API 文档 | `lovrabet api-doc list [--category dataset] [--keyword aggregate]` |
411
413
  | 看 API 文档详情 | `lovrabet api-doc detail --code dataset_list` |
@@ -728,3 +730,5 @@ personal KB 使用文件型 create/update。更新前先 `kb detail` 查看正
728
730
  | 知识库工作流 | [lovrabet-kb-workflow.md](references/lovrabet-kb-workflow.md) |
729
731
  | 定时任务工作流 | [lovrabet-schedule-workflow.md](references/lovrabet-schedule-workflow.md) |
730
732
  | 日志 | [lovrabet-logs.md](references/lovrabet-logs.md) |
733
+
734
+ METADATA 原生 Excel 图片导入支持浮动图片、Microsoft Excel 单元格 richData 和独立 WPS DISPIMG。图片列映射到 IMAGE 字段;先 `--dry-run` 核验服务端能力,恢复时保留主检查点与 `.rows.json`,详见[可恢复 Excel 导入](references/lovrabet-excel-import.md)。
@@ -39,6 +39,8 @@ lovrabet app list
39
39
 
40
40
  ## 标准决议流程
41
41
 
42
+ 以下示例按数据集名称使用 `--name`。用户提供物理表名时,改用 `--table-name <表名前缀>`,可单独使用,无需同时提供 `--name` 或 `--code`;多个筛选条件按 AND 组合。匹配规则见 [数据集发现](../references/dataset-discovery-workflow.md)。
43
+
42
44
  1. 先看是否已有明确 app 上下文
43
45
  2. 没有明确上下文但有 `defaultApp` 时,先验证默认候选:
44
46
 
@@ -20,16 +20,25 @@ lovrabet api-doc detail --code dataset_data_filter
20
20
 
21
21
  3. 定位数据集
22
22
 
23
+ 根据已有线索选择一个筛选参数即可:数据集名称用 `--name`,物理表名用 `--table-name`,数据集 code 用 `--code`。不要要求用户补齐另外两个参数。
24
+
23
25
  ```bash
24
26
  lovrabet dataset list --name "<关键词>"
27
+
28
+ # 已知物理表名时
29
+ lovrabet dataset list --table-name crm_product
25
30
  ```
26
31
 
32
+ 多个筛选参数同时传入时按 AND 组合。表名采用前缀匹配,可能返回多个候选;先核对返回的 `table`、`name` 和 `code`。详细规则见 [数据集发现](../references/dataset-discovery-workflow.md)。
33
+
27
34
  如需限定候选 app:
28
35
 
29
36
  ```bash
30
37
  lovrabet dataset list --app <name> --name "<关键词>"
31
38
  ```
32
39
 
40
+ 已知物理表名时,将上述 `--name "<关键词>"` 换成 `--table-name "<表名前缀>"`。
41
+
33
42
  4. 看数据集结构
34
43
 
35
44
  ```bash
@@ -75,7 +84,7 @@ lovrabet data filter --code <datasetCode> --params '{"where":{"status":{"$eq":"a
75
84
  以下情况只用 `dataset list` 就够:
76
85
 
77
86
  - 用户只是问“有哪些数据集”
78
- - 用户只是想按名称搜索数据集
87
+ - 用户只是想按数据集名称或物理表名前缀搜索数据集
79
88
  - 只需要数据集 code 和字段名数组
80
89
 
81
90
  ## 什么时候必须看 `dataset detail`
@@ -4,6 +4,8 @@
4
4
 
5
5
  在执行 Instant API 数据操作前,需要先找到目标数据集并了解其字段结构。
6
6
 
7
+ 按已知线索选择筛选参数:数据集名称用 `--name`,物理表名用 `--table-name`,数据集 code 用 `--code`。下面按名称验证应用的示例,在已知物理表名时可将 `--name "<关键词>"` 换成 `--table-name "<表名前缀>"`。
8
+
7
9
  ## 先不要默认查 app
8
10
 
9
11
  `dataset` 工作流的第一步不是固定的 `app list`,而是先判断当前是否已经有明确 app 上下文。
@@ -71,6 +73,12 @@ lovrabet dataset list
71
73
  # 按名称过滤(服务端模糊匹配)
72
74
  lovrabet dataset list --name "订单"
73
75
 
76
+ # 仅按物理表名前缀过滤,无需同时提供 --name 或 --code
77
+ lovrabet dataset list --table-name crm_product
78
+
79
+ # 同时限定数据集名称和物理表名(AND)
80
+ lovrabet dataset list --name "商品" --table-name crm_product
81
+
74
82
  # 按 code 过滤(服务端精确匹配)
75
83
  lovrabet dataset list --code "abc123def4567890abcdef012345678"
76
84
 
@@ -84,10 +92,15 @@ lovrabet dataset list --format json
84
92
 
85
93
  | Flag | 类型 | 必填 | 说明 |
86
94
  |------|------|------|------|
87
- | `--name` | string | 否 | 按名称模糊过滤(服务端) |
95
+ | `--name` | string | 否 | 按数据集名称包含匹配(服务端) |
96
+ | `--table-name` | string | 否 | 透传为 `tableName`,按物理表名前缀匹配(服务端) |
88
97
  | `--code` | string | 否 | 按 dataset code 精确过滤(服务端,32 位 hex) |
89
98
  | `--format` | string | 否 | 输出格式:`json` / `pretty` / `table` |
90
99
 
100
+ `--name`、`--table-name`、`--code` 均为可选参数:可只传任意一个,也可不传筛选参数;多个参数同时传入时按 AND 组合,不会互相覆盖。不传或传空字符串时不增加对应筛选条件。
101
+
102
+ `--table-name` 使用服务端 SQL LIKE 前缀匹配,不保证精确命中或唯一结果。例如 `crm_product` 也可能命中 `crm_product_detail`;`%` 和 `_` 保留 SQL LIKE 通配符含义,其中 `_` 可匹配任意单个字符。核对返回的 `table`、`name` 和 `code` 后再选择目标数据集,不要直接取第一条。
103
+
91
104
  ### dataset detail — 查看数据集结构
92
105
 
93
106
  ```bash
@@ -17,6 +17,8 @@ lovrabet data <command> --code <datasetCode> --params '<json>'
17
17
 
18
18
  因此决策顺序应该是:
19
19
 
20
+ 以下 `--name` 示例用于数据集名称关键词;已知物理表名时改用 `--table-name <表名前缀>`,无需同时提供名称。多个筛选条件按 AND 组合,详见 [数据集发现](dataset-discovery-workflow.md)。
21
+
20
22
  1. 先判断当前 app 是否已明确
21
23
  2. 当前 app 明确时,直接 `dataset list --name ...`
22
24
  3. 当前 app 不明确但有 `defaultApp` 时,先 `dataset list --name <关键词>` 验证默认候选
@@ -75,6 +75,8 @@ lovrabet app list --include-unpublished
75
75
 
76
76
  ## 如何选择使用哪个应用
77
77
 
78
+ 以下 `--name <关键词>` 用于数据集名称搜索;用户给的是物理表名时,改用 `--table-name <表名前缀>` 验证默认候选或其他候选 app,无需补齐名称。匹配规则见 [数据集发现](dataset-discovery-workflow.md)。
79
+
78
80
  推荐方法不是只看 app 名,而是:
79
81
 
80
82
  1. 有 `defaultApp` 时,先在默认候选下执行 `dataset list --name <关键词>`
@@ -29,3 +29,22 @@ lovrabet data import-excel --appcode <appCode> --code <datasetCode> --file ./rec
29
29
  报告包含 `sourceRows`、`succeeded`、`unknown`、`conflicts`、`notAttempted`、批次耗时和输出路径。unknown 表示需恢复核对;内容冲突、已导入行不可见或契约/身份漂移时停止,不自动修复或换标记。重复恢复已完成导入会重新核对字段且不新增记录。
30
30
 
31
31
  检查点与报告包含业务数据及恢复标识,保留私有权限,不外发真实 AK 或敏感业务值。该能力不放宽应用可访问性、创建权限或读取权限;非 Excel `batchCreate` 保持原有调用方式。
32
+
33
+
34
+ # Native Excel image import into UPLOAD fields
35
+
36
+ For `METADATA` datasets, `lovrabet data import-excel` reads embedded PNG, JPEG and GIF pictures from floating DrawingML anchors, Microsoft Excel in-cell rich data, and standalone WPS `DISPIMG` formulas (including `_xlfn.` / `@` forms). The import stores the original embedded image bytes. Excel crop, rotation and filter effects are not rendered into the result. EXIF is not mapped to business fields; metadata already present in the original bytes is retained. Map the picture column header to the confirmed `UPLOAD` field code. Its business value is an ordered `{fileName,filePath}` array; for example, `{"UPLOAD_1":[{"fileName":"photo.png","filePath":"dataset-import/<scope>/<digest>.png"}]}`. Use the durable file path returned by upload. Digest, MIME type and byte size remain upload verification/checkpoint metadata. Pictures in one cell preserve their order; repeated identical bytes upload once per import. Picture-only rows are included. Hidden rows are included with a warning.
37
+
38
+ Existing `IMAGE` fields keep their legacy `{name,type,key,size}` value format and checkpoint compatibility. Do not change a dataset's field type or translate existing persisted rows automatically. The field protocol is bound to the source/schema/checkpoint; switching an original import from IMAGE to UPLOAD is not a resume operation.
39
+
40
+ Start with the existing import command and `--dry-run`. Dry-run validates the local workbook, mapping, image bytes, server capability and request size, then reports image occurrences, unique images and unique bytes. It does not upload images, create records, or write checkpoints/reports. A missing server image capability blocks an import containing pictures; scalar-only imports continue to use the existing import contract.
41
+
42
+ Inspect all validation errors before running the confirmed write. Each image must be no larger than 10 MiB and no larger than 40 million pixels. GIF cumulative frame canvas pixels must also fit that pixel limit. Unique images total at most 50 MiB per import, with at most 10,000 occurrences. Only the selected sheet and mapped UPLOAD or legacy IMAGE columns contribute uploads. Mixed scalar content and pictures in one mapped image cell, missing images, unsupported formulas, external images, ambiguous relationships, pictures spanning multiple business rows, and unmappable absolute anchors stop validation. UPLOAD support here is for embedded images, not arbitrary embedded documents or JSON/URL text in cells.
43
+
44
+ Image imports use a v3 main checkpoint at `--checkpoint` and a row checkpoint at `<checkpoint>.rows.json`. Keep both files together, plus the source workbook and mapping. The main checkpoint binds the actor, application, dataset, runtime domain, source, mapping, schema, image descriptors, batch settings and row strategy. Do not edit or replace checkpoint files. Keep the result report for reconciliation.
45
+
46
+ After an interruption, run the exact command with `--resume`. Resume queries the original image identity before deciding whether a pending upload may continue, then resumes the original row IDs/task markers. A completed image that becomes missing, corrupt or changed stops recovery; it is not automatically re-uploaded. Completed resumes re-read images and records without uploading or creating duplicates. If a row phase was already started but its row checkpoint is missing, stop and reconcile the original outcome before proceeding.
47
+
48
+ UPLOAD values are compared strictly: a changed fileName, filePath, array order or unexpected property stops recovery. Legacy IMAGE comparison ignores known empty server defaults for creator fields and geolocation, while preserving meaningful or unknown metadata differences. For an auto-ID image import previously marked as conflicted, `--resume` may recover only when the original generated row IDs are recorded and fresh readback confirms every original image, row ID and mapped field. All batches are checked before any remaining rows are written. Missing rows, different content, marker collisions, or conflicts without recorded IDs still stop recovery. Keep the original checkpoints; never clear a conflict by editing them or starting the same import with new markers. Scalar-only and fixed-ID conflict handling is unchanged.
49
+
50
+ WebP (including static and animated), SVG/EMF, remote URLs, arbitrary image formulas, shared image formulas, ATTACHMENT fields, and native DB_TABLE image import are unsupported. Animated PNG is also rejected. `DB_TABLE` continues to use its separately documented `batchCreate` workflow, without import checkpoints; do not automatically switch an image import to that route. Business fields never receive base64 data, formulas or temporary signed URLs.
@@ -2,8 +2,8 @@
2
2
  "schemaVersion": 1,
3
3
  "name": "lovrabet",
4
4
  "packageName": "@lovrabet/lovrabet-cli",
5
- "packageVersion": "2.3.5",
6
- "skillVersion": "2.3.5",
5
+ "packageVersion": "2.3.6-beta.2",
6
+ "skillVersion": "2.3.6-beta.2",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/app-resolution.md",
@@ -40,5 +40,5 @@
40
40
  "references/lovrabet-user-account.md",
41
41
  "references/lovrabet-workspace.md"
42
42
  ],
43
- "digest": "b293e4c1dde8ce9ffcc18910d2de398e4508eb6bd58d049ebf1437c2a6edf54e"
43
+ "digest": "05e591fe2bc14b4bcbfb81de453da2636aef3698d52f31163fb4259b6d4ced7d"
44
44
  }