@lovrabet/rabetbase-cli 2.4.6-beta.1 → 2.4.6-beta.3

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 (299) hide show
  1. package/lib/api/api-doc.js +1 -1
  2. package/lib/api/fetch-model-list.js +1 -1
  3. package/lib/api/generate-api-file.js +1 -1
  4. package/lib/auth/auth-server-ui.js +1 -1
  5. package/lib/auth/auth-server.js +1 -1
  6. package/lib/auth/constant.js +1 -1
  7. package/lib/auth/get-cookie.js +1 -1
  8. package/lib/auth/get-session-user.js +1 -1
  9. package/lib/auth/is-session-valid.js +1 -1
  10. package/lib/auth/login-success-html.js +1 -1
  11. package/lib/auth/logout.js +1 -1
  12. package/lib/cli-flags.js +1 -1
  13. package/lib/cli.js +1 -1
  14. package/lib/commands/api/generate.js +1 -1
  15. package/lib/commands/api/index.js +1 -1
  16. package/lib/commands/api/list.js +1 -1
  17. package/lib/commands/api/pull.js +1 -1
  18. package/lib/commands/api/shared.js +1 -1
  19. package/lib/commands/app/index.js +1 -1
  20. package/lib/commands/app/list.js +1 -1
  21. package/lib/commands/app/members-list.js +1 -1
  22. package/lib/commands/app/remote-directory.js +1 -1
  23. package/lib/commands/app/shared.js +1 -1
  24. package/lib/commands/app-config/delete.js +1 -1
  25. package/lib/commands/app-config/get.js +1 -1
  26. package/lib/commands/app-config/index.js +1 -1
  27. package/lib/commands/app-config/list.js +1 -1
  28. package/lib/commands/app-config/set.js +1 -1
  29. package/lib/commands/app-config/shared.js +1 -1
  30. package/lib/commands/auth/index.js +1 -1
  31. package/lib/commands/bff/create.js +1 -1
  32. package/lib/commands/bff/delete.js +1 -1
  33. package/lib/commands/bff/detail.js +1 -1
  34. package/lib/commands/bff/index.js +1 -1
  35. package/lib/commands/bff/list.js +1 -1
  36. package/lib/commands/bff/pull.js +1 -1
  37. package/lib/commands/bff/push.js +1 -1
  38. package/lib/commands/bff/status.js +1 -1
  39. package/lib/commands/cli-skill/index.js +1 -1
  40. package/lib/commands/cli-update.js +1 -1
  41. package/lib/commands/codegen/index.js +1 -1
  42. package/lib/commands/codegen/sdk.js +1 -1
  43. package/lib/commands/codegen/sql.js +1 -1
  44. package/lib/commands/common/app-registry.js +1 -1
  45. package/lib/commands/common/app-selector.js +1 -1
  46. package/lib/commands/common/async-task.js +1 -1
  47. package/lib/commands/common/dry-run.js +1 -1
  48. package/lib/commands/common/flags.js +1 -1
  49. package/lib/commands/common/local-file.js +1 -1
  50. package/lib/commands/common/validate.js +1 -1
  51. package/lib/commands/config/get.js +1 -1
  52. package/lib/commands/config/index.js +1 -1
  53. package/lib/commands/config/list.js +1 -1
  54. package/lib/commands/config/set.js +1 -1
  55. package/lib/commands/config/shared.js +1 -1
  56. package/lib/commands/data/filter.js +1 -1
  57. package/lib/commands/data/getOne.js +1 -1
  58. package/lib/commands/data/index.js +1 -1
  59. package/lib/commands/data/shared.js +1 -1
  60. package/lib/commands/dataset/business-group-update.js +1 -1
  61. package/lib/commands/dataset/business-groups.js +1 -1
  62. package/lib/commands/dataset/capability.js +1 -1
  63. package/lib/commands/dataset/delete.js +1 -1
  64. package/lib/commands/dataset/detail.js +1 -1
  65. package/lib/commands/dataset/extend-update.js +1 -1
  66. package/lib/commands/dataset/field-update.js +1 -1
  67. package/lib/commands/dataset/generate.js +1 -1
  68. package/lib/commands/dataset/index.js +1 -1
  69. package/lib/commands/dataset/list.js +1 -1
  70. package/lib/commands/dataset/operations.js +1 -1
  71. package/lib/commands/dataset/relation-audit.js +1 -1
  72. package/lib/commands/dataset/relation-create.js +1 -1
  73. package/lib/commands/dataset/relation-delete.js +1 -1
  74. package/lib/commands/dataset/relation-shared.js +1 -1
  75. package/lib/commands/dataset/relation-update.js +1 -1
  76. package/lib/commands/dataset/relations.js +1 -1
  77. package/lib/commands/dataset/rename.js +1 -1
  78. package/lib/commands/dataset/restore.js +1 -1
  79. package/lib/commands/db/analysis-batching.js +1 -1
  80. package/lib/commands/db/analyze-batch-plan.js +1 -1
  81. package/lib/commands/db/analyze-cancel.js +1 -1
  82. package/lib/commands/db/analyze-start.js +1 -1
  83. package/lib/commands/db/analyze-status.js +1 -1
  84. package/lib/commands/db/create.js +1 -1
  85. package/lib/commands/db/delete.js +1 -1
  86. package/lib/commands/db/detail.js +1 -1
  87. package/lib/commands/db/diff-refresh-start.js +1 -1
  88. package/lib/commands/db/diff-refresh-status.js +1 -1
  89. package/lib/commands/db/diff.js +1 -1
  90. package/lib/commands/db/index.js +1 -1
  91. package/lib/commands/db/list.js +1 -1
  92. package/lib/commands/db/shared.js +1 -1
  93. package/lib/commands/db/tables.js +1 -1
  94. package/lib/commands/db/test.js +1 -1
  95. package/lib/commands/db/update.js +1 -1
  96. package/lib/commands/doctor.js +1 -1
  97. package/lib/commands/file/index.js +1 -1
  98. package/lib/commands/init/index.js +1 -1
  99. package/lib/commands/issue/index.js +1 -1
  100. package/lib/commands/issue/nudge.js +1 -1
  101. package/lib/commands/issue/report.js +1 -1
  102. package/lib/commands/issue/shared.js +1 -1
  103. package/lib/commands/kb/create.js +1 -1
  104. package/lib/commands/kb/delete.js +1 -1
  105. package/lib/commands/kb/detail.js +1 -1
  106. package/lib/commands/kb/index.js +1 -1
  107. package/lib/commands/kb/list.js +1 -1
  108. package/lib/commands/kb/shared.js +1 -1
  109. package/lib/commands/kb/update.js +1 -1
  110. package/lib/commands/logs/index.js +1 -1
  111. package/lib/commands/menu/asset-update.js +1 -1
  112. package/lib/commands/menu/delete.js +1 -1
  113. package/lib/commands/menu/external-link-create.js +1 -1
  114. package/lib/commands/menu/external-link-update.js +1 -1
  115. package/lib/commands/menu/group-create.js +1 -1
  116. package/lib/commands/menu/group-update.js +1 -1
  117. package/lib/commands/menu/index.js +1 -1
  118. package/lib/commands/menu/list.js +1 -1
  119. package/lib/commands/menu/move.js +1 -1
  120. package/lib/commands/menu/regroup-start.js +1 -1
  121. package/lib/commands/menu/rename.js +1 -1
  122. package/lib/commands/menu/shared/compare-table.js +1 -1
  123. package/lib/commands/menu/shared/delete-plan.js +1 -1
  124. package/lib/commands/menu/shared/facts.js +1 -1
  125. package/lib/commands/menu/shared/index.js +1 -1
  126. package/lib/commands/menu/shared/inquirer.js +1 -1
  127. package/lib/commands/menu/shared/local-pages.js +1 -1
  128. package/lib/commands/menu/shared/logic.js +1 -1
  129. package/lib/commands/menu/shared/mutations.d.ts +8 -7
  130. package/lib/commands/menu/shared/mutations.js +1 -1
  131. package/lib/commands/menu/shared/service.js +1 -1
  132. package/lib/commands/menu/shared/sync-core.js +1 -1
  133. package/lib/commands/menu/shared/types.d.ts +17 -2
  134. package/lib/commands/menu/shared/update-core.js +1 -1
  135. package/lib/commands/menu/shared/valid-url.js +1 -1
  136. package/lib/commands/menu/sync.js +1 -1
  137. package/lib/commands/menu/visibility-update.d.ts +2 -0
  138. package/lib/commands/menu/visibility-update.js +1 -0
  139. package/lib/commands/notification/config-create.js +1 -1
  140. package/lib/commands/notification/config-delete.js +1 -1
  141. package/lib/commands/notification/config-list.js +1 -1
  142. package/lib/commands/notification/config-update.js +1 -1
  143. package/lib/commands/notification/index.js +1 -1
  144. package/lib/commands/notification/shared.js +1 -1
  145. package/lib/commands/ocr/index.js +1 -1
  146. package/lib/commands/page/create.js +1 -1
  147. package/lib/commands/page/custom/detail.js +1 -1
  148. package/lib/commands/page/custom/list.js +1 -1
  149. package/lib/commands/page/custom/publish.js +1 -1
  150. package/lib/commands/page/custom/shared.js +1 -1
  151. package/lib/commands/page/custom/syntax.js +1 -1
  152. package/lib/commands/page/custom/template.js +1 -1
  153. package/lib/commands/page/custom/update.js +1 -1
  154. package/lib/commands/page/data-list-status.js +1 -1
  155. package/lib/commands/page/generate-start.js +1 -1
  156. package/lib/commands/page/generate-status.js +1 -1
  157. package/lib/commands/page/index.js +1 -1
  158. package/lib/commands/page/pull.js +1 -1
  159. package/lib/commands/page/push.js +1 -1
  160. package/lib/commands/page/relation-audit.js +1 -1
  161. package/lib/commands/page/restore.js +1 -1
  162. package/lib/commands/page/shared.js +1 -1
  163. package/lib/commands/page/sync.js +1 -1
  164. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  165. package/lib/commands/project/create/format-elapsed.js +1 -1
  166. package/lib/commands/project/create/main.js +1 -1
  167. package/lib/commands/project/create/materialize-project-template.js +1 -1
  168. package/lib/commands/project/create/project-name.js +1 -1
  169. package/lib/commands/project/create/project-template-archive.js +1 -1
  170. package/lib/commands/project/create/project-template-path.js +1 -1
  171. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  172. package/lib/commands/project/create/use-format-code.js +1 -1
  173. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  174. package/lib/commands/project/index.js +1 -1
  175. package/lib/commands/project/upgrade.js +1 -1
  176. package/lib/commands/registry.js +1 -1
  177. package/lib/commands/role/delete.js +1 -1
  178. package/lib/commands/role/detail.js +1 -1
  179. package/lib/commands/role/index.js +1 -1
  180. package/lib/commands/role/list.js +1 -1
  181. package/lib/commands/role/shared.js +1 -1
  182. package/lib/commands/role/update.js +1 -1
  183. package/lib/commands/role/user-add.js +1 -1
  184. package/lib/commands/role/user-remove.js +1 -1
  185. package/lib/commands/role/user-resolve.js +1 -1
  186. package/lib/commands/run/index.js +1 -1
  187. package/lib/commands/schema.js +1 -1
  188. package/lib/commands/sql/create.js +1 -1
  189. package/lib/commands/sql/delete.js +1 -1
  190. package/lib/commands/sql/detail.js +1 -1
  191. package/lib/commands/sql/exec.js +1 -1
  192. package/lib/commands/sql/index.js +1 -1
  193. package/lib/commands/sql/list.js +1 -1
  194. package/lib/commands/sql/pull.js +1 -1
  195. package/lib/commands/sql/push.js +1 -1
  196. package/lib/commands/sql/shared.js +1 -1
  197. package/lib/commands/sql/status.js +1 -1
  198. package/lib/commands/sql/validate.js +1 -1
  199. package/lib/commands/task/index.js +1 -1
  200. package/lib/commands/task/status.js +1 -1
  201. package/lib/commands/tenant/index.js +1 -1
  202. package/lib/commands/tenant/members-list.js +1 -1
  203. package/lib/commands/tenant/shared.js +1 -1
  204. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  205. package/lib/commands/user-account/index.js +1 -1
  206. package/lib/commands/workspace/add.js +1 -1
  207. package/lib/commands/workspace/index.js +1 -1
  208. package/lib/commands/workspace/remove.js +1 -1
  209. package/lib/config/schema.js +1 -1
  210. package/lib/constant/cdn.js +1 -1
  211. package/lib/constant/cli.js +1 -1
  212. package/lib/constant/defaults.js +1 -1
  213. package/lib/constant/domain.js +1 -1
  214. package/lib/constant/env.js +1 -1
  215. package/lib/constant/output.js +1 -1
  216. package/lib/constant/paths.js +1 -1
  217. package/lib/constant/risk.js +1 -1
  218. package/lib/context/app-resolver.js +1 -1
  219. package/lib/context/auth-resolver.js +1 -1
  220. package/lib/context/config-loader.js +1 -1
  221. package/lib/context.js +1 -1
  222. package/lib/core/alias-resolver.js +1 -1
  223. package/lib/core/api-client.js +1 -1
  224. package/lib/core/bff/config.js +1 -1
  225. package/lib/core/bff/file-system.js +1 -1
  226. package/lib/core/bff/hash.js +1 -1
  227. package/lib/core/bff/lock.js +1 -1
  228. package/lib/core/bff/utils.js +1 -1
  229. package/lib/core/db-resolver.js +1 -1
  230. package/lib/core/page/file-system.js +1 -1
  231. package/lib/core/page/hash.js +1 -1
  232. package/lib/core/page/lock.js +1 -1
  233. package/lib/core/sql-index-auditor.js +1 -1
  234. package/lib/core/sql-sync/config.js +1 -1
  235. package/lib/core/sql-sync/file-system.js +1 -1
  236. package/lib/core/sql-sync/hash.js +1 -1
  237. package/lib/core/sql-sync/lock.js +1 -1
  238. package/lib/core/sql-sync/utils.js +1 -1
  239. package/lib/core/sql-validator.js +1 -1
  240. package/lib/errors.js +1 -1
  241. package/lib/framework/build-all-flags.js +1 -1
  242. package/lib/framework/error-output.js +1 -1
  243. package/lib/framework/explicit-yes.js +1 -1
  244. package/lib/framework/flags.js +1 -1
  245. package/lib/framework/help.js +1 -1
  246. package/lib/framework/index.js +1 -1
  247. package/lib/framework/output.js +1 -1
  248. package/lib/framework/response.js +1 -1
  249. package/lib/framework/runner-alias.js +1 -1
  250. package/lib/framework/runner.js +1 -1
  251. package/lib/framework/schema-export.js +1 -1
  252. package/lib/framework/types.js +1 -1
  253. package/lib/generated/build-info.d.ts +4 -4
  254. package/lib/generated/build-info.js +1 -1
  255. package/lib/help.js +1 -1
  256. package/lib/postinstall.js +1 -1
  257. package/lib/runtime/confirmation.js +1 -1
  258. package/lib/runtime/event.js +1 -1
  259. package/lib/runtime/index.js +1 -1
  260. package/lib/runtime/queue.js +1 -1
  261. package/lib/runtime/resolve.js +1 -1
  262. package/lib/skills/builtin-skill.js +1 -1
  263. package/lib/skills/main.js +1 -1
  264. package/lib/skills/npx-skills-add.js +1 -1
  265. package/lib/skills/skill-presence.js +1 -1
  266. package/lib/telemetry/cli-command-trace.js +1 -1
  267. package/lib/telemetry/cli-help-trace.js +1 -1
  268. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  269. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  270. package/lib/telemetry/send-cli-trace-log.js +1 -1
  271. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  272. package/lib/utils/ai_config.js +1 -1
  273. package/lib/utils/apply-jq-filter.js +1 -1
  274. package/lib/utils/cdn-config.js +1 -1
  275. package/lib/utils/check-sdk-version.js +1 -1
  276. package/lib/utils/cli-version-check.js +1 -1
  277. package/lib/utils/cli-version-policy.js +1 -1
  278. package/lib/utils/config.js +1 -1
  279. package/lib/utils/entity-with-id.js +1 -1
  280. package/lib/utils/file-utils.js +1 -1
  281. package/lib/utils/guides-cdn.js +1 -1
  282. package/lib/utils/http-client.js +1 -1
  283. package/lib/utils/is-non-interactive.js +1 -1
  284. package/lib/utils/logger.js +1 -1
  285. package/lib/utils/params.js +1 -1
  286. package/lib/utils/platform.js +1 -1
  287. package/lib/utils/rules-cdn.js +1 -1
  288. package/lib/utils/sleep.js +1 -1
  289. package/lib/utils/template-replacer.js +1 -1
  290. package/lib/utils/update-notice.js +1 -1
  291. package/lib/utils/version.js +1 -1
  292. package/lib/utils/with-active-cookie.js +1 -1
  293. package/lib/utils/write-cli-side-channel.js +1 -1
  294. package/package.json +1 -1
  295. package/skills/rabetbase/SKILL.md +4 -3
  296. package/skills/rabetbase/references/rabetbase-menu-list.md +3 -1
  297. package/skills/rabetbase/references/rabetbase-menu-visibility-update.md +59 -0
  298. package/skills/rabetbase/references/rabetbase-ocr.md +17 -2
  299. package/skills/rabetbase.manifest.json +4 -3
@@ -1 +1 @@
1
- (function(_0x40cd7,_0x4471cf){const _0x159899=a290_0x57d4,_0x50dbb1=_0x40cd7();while(!![]){try{const _0x34a097=-parseInt(_0x159899(0x1d6))/0x1*(-parseInt(_0x159899(0x1cd))/0x2)+-parseInt(_0x159899(0x1ce))/0x3+-parseInt(_0x159899(0x1cc))/0x4*(parseInt(_0x159899(0x1d0))/0x5)+-parseInt(_0x159899(0x1d4))/0x6+-parseInt(_0x159899(0x1d7))/0x7+parseInt(_0x159899(0x1cb))/0x8*(-parseInt(_0x159899(0x1d5))/0x9)+parseInt(_0x159899(0x1e5))/0xa;if(_0x34a097===_0x4471cf)break;else _0x50dbb1['push'](_0x50dbb1['shift']());}catch(_0x4a1b7b){_0x50dbb1['push'](_0x50dbb1['shift']());}}}(a290_0x1975,0x91a76));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';import a290_0x5e8e05 from'semver';import{CLI_BIN_NAME,NPM_PACKAGE_NAME}from'../constant/cli.js';import{getCliVersionPolicy}from'../utils/cli-version-policy.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 isUpdateNoticeDisabled(){const _0x593997=a290_0x57d4,_0x571532=process.env.RABETBASE_NO_UPDATE_NOTICE?.[_0x593997(0x1e0)]()[_0x593997(0x1d8)]();return _0x571532==='1'||_0x571532==='true'||_0x571532===_0x593997(0x1e2);}function cacheRoot(){const _0x1c9149=a290_0x57d4;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x1c9149(0x1d9));}export function getUpdateNoticeCachePath(){const _0x3fd1b4=a290_0x57d4;return join(cacheRoot(),_0x3fd1b4(0x1d3),_0x3fd1b4(0x1e1));}function a290_0x57d4(_0x11756c,_0x4e6abd){_0x11756c=_0x11756c-0x1c9;const _0x19751f=a290_0x1975();let _0x57d499=_0x19751f[_0x11756c];return _0x57d499;}async function readUpdateNoticeCache(){const _0x401543=a290_0x57d4;try{const _0x5de0af=await readFile(getUpdateNoticeCachePath(),'utf8'),_0x1fbb9d=JSON[_0x401543(0x1e4)](_0x5de0af);if(!_0x1fbb9d||typeof _0x1fbb9d!==_0x401543(0x1cf))return{};return _0x1fbb9d;}catch{return{};}}function a290_0x1975(){const _0x353e94=['32SBFiCW','4vSugHu','943332NLlZmr','2795625unSnic','object','583735dzHrXo',',\x20run:\x20','stringify','rabetbase-cli','1556964mhmYCB','146484kfqYlE','2EuAPMi','7810684JBqSWh','toLowerCase','.cache','\x20update','utf8','now','checkedAt','\x20available,\x20current\x20','https://www.npmjs.com/package/','trim','update-check.json','yes','number','parse','21422980HemWyA','lastNotifiedAt','valid','latest'];a290_0x1975=function(){return _0x353e94;};return a290_0x1975();}async function writeUpdateNoticeCache(_0x1ce6e1){const _0x1427e1=a290_0x57d4;try{const _0x5d3c25=getUpdateNoticeCachePath();await mkdir(dirname(_0x5d3c25),{'recursive':!![]}),await writeFile(_0x5d3c25,JSON[_0x1427e1(0x1d2)](_0x1ce6e1,null,0x2)+'\x0a',_0x1427e1(0x1db));}catch{}}function isFreshCheck(_0x247bf5,_0x2b7508){const _0x27fa45=a290_0x57d4;return typeof _0x247bf5[_0x27fa45(0x1dd)]===_0x27fa45(0x1e3)&&_0x2b7508-_0x247bf5[_0x27fa45(0x1dd)]<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x545c96,_0x555502,_0x1523fb){const _0x903fcd=a290_0x57d4;return _0x545c96['lastNotifiedVersion']===_0x555502&&typeof _0x545c96[_0x903fcd(0x1e6)]===_0x903fcd(0x1e3)&&_0x1523fb-_0x545c96['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x3c7d60){const _0x5f52de=a290_0x57d4;return _0x5f52de(0x1df)+NPM_PACKAGE_NAME+'/v/'+_0x3c7d60;}export async function resolveLatestUpdateNotice(){const _0x18fad2=a290_0x57d4;if(isUpdateNoticeDisabled())return null;try{const _0x1bf761=Date[_0x18fad2(0x1dc)](),_0x2227fe=getCliVersion(),_0x28fe14=await readUpdateNoticeCache();let _0x38883c=isFreshCheck(_0x28fe14,_0x1bf761)?_0x28fe14[_0x18fad2(0x1ca)]?.[_0x18fad2(0x1e0)]():undefined;if(!_0x38883c&&!isFreshCheck(_0x28fe14,_0x1bf761)){const _0x5a58ac=await getCliVersionPolicy();_0x38883c=_0x5a58ac?.['stableVersion']?.[_0x18fad2(0x1e0)]()||undefined,await writeUpdateNoticeCache({..._0x28fe14,'checkedAt':_0x1bf761,'latest':_0x38883c,'failed':!_0x38883c});}if(!_0x38883c||!a290_0x5e8e05[_0x18fad2(0x1c9)](_0x2227fe)||!a290_0x5e8e05['valid'](_0x38883c))return null;if(a290_0x5e8e05['gte'](_0x2227fe,_0x38883c))return null;if(isRecentlyNotified(_0x28fe14,_0x38883c,_0x1bf761))return null;const _0x2cc96e=CLI_BIN_NAME+_0x18fad2(0x1da);return await writeUpdateNoticeCache({..._0x28fe14,'checkedAt':isFreshCheck(_0x28fe14,_0x1bf761)?_0x28fe14[_0x18fad2(0x1dd)]:_0x1bf761,'latest':_0x38883c,'failed':![],'lastNotifiedVersion':_0x38883c,'lastNotifiedAt':_0x1bf761}),{'command':_0x2cc96e,'current':_0x2227fe,'latest':_0x38883c,'url':buildNpmVersionUrl(_0x38883c),'message':CLI_BIN_NAME+'\x20'+_0x38883c+_0x18fad2(0x1de)+_0x2227fe+_0x18fad2(0x1d1)+_0x2cc96e};}catch{return null;}}
1
+ (function(_0x110ea1,_0x5bb9a8){const _0x35774f=a291_0x4265,_0x36a8b2=_0x110ea1();while(!![]){try{const _0x48f975=-parseInt(_0x35774f(0xe3))/0x1+-parseInt(_0x35774f(0xde))/0x2*(-parseInt(_0x35774f(0xea))/0x3)+-parseInt(_0x35774f(0xd4))/0x4+parseInt(_0x35774f(0xf2))/0x5*(parseInt(_0x35774f(0xdb))/0x6)+parseInt(_0x35774f(0xda))/0x7+-parseInt(_0x35774f(0xdc))/0x8*(-parseInt(_0x35774f(0xee))/0x9)+-parseInt(_0x35774f(0xd8))/0xa;if(_0x48f975===_0x5bb9a8)break;else _0x36a8b2['push'](_0x36a8b2['shift']());}catch(_0x52d373){_0x36a8b2['push'](_0x36a8b2['shift']());}}}(a291_0x49ac,0x1afdb));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';import a291_0x1c56e4 from'semver';import{CLI_BIN_NAME,NPM_PACKAGE_NAME}from'../constant/cli.js';import{getCliVersionPolicy}from'../utils/cli-version-policy.js';import{getCliVersion}from'../utils/version.js';function a291_0x49ac(){const _0x3b4dc2=['18djdiuz','/v/','yes','trim','5UVdwNL','477688XFkSQu','now','update-check.json','lastNotifiedVersion','1378150CmZuHU','\x20available,\x20current\x20','872403weVCQD','658770fdepeO','412232amxLvx','utf8','4fAgPch','stringify','object','lastNotifiedAt','.cache','144202imMavn','checkedAt','number','latest','\x20update','gte','true','261768yAiiLz','stableVersion','valid','https://www.npmjs.com/package/'];a291_0x49ac=function(){return _0x3b4dc2;};return a291_0x49ac();}const UPDATE_CHECK_TTL_MS=0xc*0x3c*0x3c*0x3e8,UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function isUpdateNoticeDisabled(){const _0x43d95e=a291_0x4265,_0x5b56eb=process.env.RABETBASE_NO_UPDATE_NOTICE?.[_0x43d95e(0xf1)]()['toLowerCase']();return _0x5b56eb==='1'||_0x5b56eb===_0x43d95e(0xe9)||_0x5b56eb===_0x43d95e(0xf0);}function a291_0x4265(_0x22f418,_0x278dc5){_0x22f418=_0x22f418-0xd4;const _0x49ac9a=a291_0x49ac();let _0x4265c2=_0x49ac9a[_0x22f418];return _0x4265c2;}function cacheRoot(){const _0x47ece3=a291_0x4265;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x47ece3(0xe2));}export function getUpdateNoticeCachePath(){const _0x2f5528=a291_0x4265;return join(cacheRoot(),'rabetbase-cli',_0x2f5528(0xd6));}async function readUpdateNoticeCache(){const _0x363377=a291_0x4265;try{const _0x81e551=await readFile(getUpdateNoticeCachePath(),_0x363377(0xdd)),_0x4592a2=JSON['parse'](_0x81e551);if(!_0x4592a2||typeof _0x4592a2!==_0x363377(0xe0))return{};return _0x4592a2;}catch{return{};}}async function writeUpdateNoticeCache(_0x50a67a){const _0x4f9528=a291_0x4265;try{const _0x1cf1b1=getUpdateNoticeCachePath();await mkdir(dirname(_0x1cf1b1),{'recursive':!![]}),await writeFile(_0x1cf1b1,JSON[_0x4f9528(0xdf)](_0x50a67a,null,0x2)+'\x0a',_0x4f9528(0xdd));}catch{}}function isFreshCheck(_0x1c88ac,_0xbf4f13){const _0x41ba3b=a291_0x4265;return typeof _0x1c88ac[_0x41ba3b(0xe4)]===_0x41ba3b(0xe5)&&_0xbf4f13-_0x1c88ac[_0x41ba3b(0xe4)]<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x599a4b,_0x5c6b24,_0x33ad44){const _0x21739d=a291_0x4265;return _0x599a4b[_0x21739d(0xd7)]===_0x5c6b24&&typeof _0x599a4b['lastNotifiedAt']===_0x21739d(0xe5)&&_0x33ad44-_0x599a4b[_0x21739d(0xe1)]<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x17347b){const _0x3d2762=a291_0x4265;return _0x3d2762(0xed)+NPM_PACKAGE_NAME+_0x3d2762(0xef)+_0x17347b;}export async function resolveLatestUpdateNotice(){const _0xf82d11=a291_0x4265;if(isUpdateNoticeDisabled())return null;try{const _0x5b80ce=Date[_0xf82d11(0xd5)](),_0x546eac=getCliVersion(),_0x3d36a4=await readUpdateNoticeCache();let _0x1e9de3=isFreshCheck(_0x3d36a4,_0x5b80ce)?_0x3d36a4[_0xf82d11(0xe6)]?.['trim']():undefined;if(!_0x1e9de3&&!isFreshCheck(_0x3d36a4,_0x5b80ce)){const _0x480246=await getCliVersionPolicy();_0x1e9de3=_0x480246?.[_0xf82d11(0xeb)]?.[_0xf82d11(0xf1)]()||undefined,await writeUpdateNoticeCache({..._0x3d36a4,'checkedAt':_0x5b80ce,'latest':_0x1e9de3,'failed':!_0x1e9de3});}if(!_0x1e9de3||!a291_0x1c56e4['valid'](_0x546eac)||!a291_0x1c56e4[_0xf82d11(0xec)](_0x1e9de3))return null;if(a291_0x1c56e4[_0xf82d11(0xe8)](_0x546eac,_0x1e9de3))return null;if(isRecentlyNotified(_0x3d36a4,_0x1e9de3,_0x5b80ce))return null;const _0x2515ee=CLI_BIN_NAME+_0xf82d11(0xe7);return await writeUpdateNoticeCache({..._0x3d36a4,'checkedAt':isFreshCheck(_0x3d36a4,_0x5b80ce)?_0x3d36a4[_0xf82d11(0xe4)]:_0x5b80ce,'latest':_0x1e9de3,'failed':![],'lastNotifiedVersion':_0x1e9de3,'lastNotifiedAt':_0x5b80ce}),{'command':_0x2515ee,'current':_0x546eac,'latest':_0x1e9de3,'url':buildNpmVersionUrl(_0x1e9de3),'message':CLI_BIN_NAME+'\x20'+_0x1e9de3+_0xf82d11(0xd9)+_0x546eac+',\x20run:\x20'+_0x2515ee};}catch{return null;}}
@@ -1 +1 @@
1
- (function(_0x43dfaa,_0x2f5a31){var _0x92151d=a291_0x2bcf,_0x2d1d43=_0x43dfaa();while(!![]){try{var _0x5c23cf=parseInt(_0x92151d(0xa0))/0x1*(parseInt(_0x92151d(0xa6))/0x2)+parseInt(_0x92151d(0xa7))/0x3+parseInt(_0x92151d(0xa1))/0x4*(-parseInt(_0x92151d(0xaa))/0x5)+-parseInt(_0x92151d(0xa9))/0x6*(parseInt(_0x92151d(0xa2))/0x7)+parseInt(_0x92151d(0xa5))/0x8*(parseInt(_0x92151d(0xa3))/0x9)+-parseInt(_0x92151d(0xab))/0xa*(-parseInt(_0x92151d(0xa8))/0xb)+parseInt(_0x92151d(0xac))/0xc*(-parseInt(_0x92151d(0xa4))/0xd);if(_0x5c23cf===_0x2f5a31)break;else _0x2d1d43['push'](_0x2d1d43['shift']());}catch(_0x59e215){_0x2d1d43['push'](_0x2d1d43['shift']());}}}(a291_0x57b5,0x4b8d4));import{VERSION}from'../generated/build-info.js';function a291_0x2bcf(_0x5140e6,_0x14f16a){_0x5140e6=_0x5140e6-0xa0;var _0x57b59e=a291_0x57b5();var _0x2bcfe3=_0x57b59e[_0x5140e6];return _0x2bcfe3;}function a291_0x57b5(){var _0x4a63f3=['54006Evthes','1788834YIoXuR','891LRqagC','1840302qqigek','363790eamZuL','25430KkCpQf','6420blmkfd','19NkLRgh','20sSVgNe','7bqkGZr','18QeFmfU','16315omNaYM','1344296uPHykS'];a291_0x57b5=function(){return _0x4a63f3;};return a291_0x57b5();}export function getCliVersion(){return VERSION;}
1
+ (function(_0x3b2249,_0x2488d8){var _0x3454a5=a292_0x1832,_0x2ad79f=_0x3b2249();while(!![]){try{var _0x11e7b1=-parseInt(_0x3454a5(0x15c))/0x1+parseInt(_0x3454a5(0x159))/0x2+parseInt(_0x3454a5(0x15d))/0x3*(-parseInt(_0x3454a5(0x154))/0x4)+parseInt(_0x3454a5(0x15b))/0x5+-parseInt(_0x3454a5(0x155))/0x6*(parseInt(_0x3454a5(0x157))/0x7)+parseInt(_0x3454a5(0x158))/0x8+parseInt(_0x3454a5(0x156))/0x9*(parseInt(_0x3454a5(0x15a))/0xa);if(_0x11e7b1===_0x2488d8)break;else _0x2ad79f['push'](_0x2ad79f['shift']());}catch(_0x287e66){_0x2ad79f['push'](_0x2ad79f['shift']());}}}(a292_0x22d5,0xd196a));function a292_0x1832(_0x505391,_0x3815b7){_0x505391=_0x505391-0x154;var _0x22d582=a292_0x22d5();var _0x183263=_0x22d582[_0x505391];return _0x183263;}function a292_0x22d5(){var _0x2ddaf8=['35268174JlSugt','6002633NzINYt','1637752JvgwFK','1308918tVAwpU','10lMyNJx','458650IzSYCS','725079IAFpkE','673287hMLbXe','28mrBYRP','12uhEQNZ'];a292_0x22d5=function(){return _0x2ddaf8;};return a292_0x22d5();}import{VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}
@@ -1 +1 @@
1
- (function(_0x1fcc65,_0x38db49){var _0x50a55c=a292_0x2648,_0xc1827c=_0x1fcc65();while(!![]){try{var _0x387deb=-parseInt(_0x50a55c(0xbe))/0x1*(-parseInt(_0x50a55c(0xb8))/0x2)+parseInt(_0x50a55c(0xbb))/0x3*(parseInt(_0x50a55c(0xb7))/0x4)+-parseInt(_0x50a55c(0xbc))/0x5+-parseInt(_0x50a55c(0xbf))/0x6+-parseInt(_0x50a55c(0xb6))/0x7*(-parseInt(_0x50a55c(0xb9))/0x8)+-parseInt(_0x50a55c(0xba))/0x9+-parseInt(_0x50a55c(0xc0))/0xa*(-parseInt(_0x50a55c(0xbd))/0xb);if(_0x387deb===_0x38db49)break;else _0xc1827c['push'](_0xc1827c['shift']());}catch(_0x469c43){_0xc1827c['push'](_0xc1827c['shift']());}}}(a292_0x40db,0x66e66));import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';function a292_0x40db(){var _0x7f1548=['2274825zjkvtV','224776mYsgkn','2GWVQCx','8fjNgIX','4473963SgeOtR','27iyRrVZ','2382530KgxoZP','1612886RDBFCg','8633BsQjGR','2823870zzayLy','70oAMpzi'];a292_0x40db=function(){return _0x7f1548;};return a292_0x40db();}function a292_0x2648(_0x3beaf9,_0x5335a6){_0x3beaf9=_0x3beaf9-0xb6;var _0x40db2e=a292_0x40db();var _0x264878=_0x40db2e[_0x3beaf9];return _0x264878;}export async function withActiveCookie(_0x57cc9a,_0x379f89){setActiveCookie(_0x57cc9a);try{return await _0x379f89();}finally{clearActiveCookie();}}
1
+ (function(_0x4b846f,_0x28d539){var _0x1baaa1=a293_0x3213,_0x48eace=_0x4b846f();while(!![]){try{var _0x2d03f2=-parseInt(_0x1baaa1(0x15f))/0x1*(-parseInt(_0x1baaa1(0x15e))/0x2)+-parseInt(_0x1baaa1(0x159))/0x3*(-parseInt(_0x1baaa1(0x160))/0x4)+-parseInt(_0x1baaa1(0x15a))/0x5*(parseInt(_0x1baaa1(0x161))/0x6)+parseInt(_0x1baaa1(0x164))/0x7*(parseInt(_0x1baaa1(0x15b))/0x8)+-parseInt(_0x1baaa1(0x162))/0x9+parseInt(_0x1baaa1(0x163))/0xa*(parseInt(_0x1baaa1(0x15c))/0xb)+parseInt(_0x1baaa1(0x158))/0xc*(-parseInt(_0x1baaa1(0x15d))/0xd);if(_0x2d03f2===_0x28d539)break;else _0x48eace['push'](_0x48eace['shift']());}catch(_0x5738d4){_0x48eace['push'](_0x48eace['shift']());}}}(a293_0x2420,0x67bf7));function a293_0x2420(){var _0x2d78e8=['676AzRHJT','10XqjBwh','142015PRYRMj','48XbLTwO','6ImVCqr','4455747GumNrx','30JbuJkT','70SvGjdk','149532VDrVdh','141621LAwSUR','766030owRCbH','310528mmsvwo','207141RyDAxm'];a293_0x2420=function(){return _0x2d78e8;};return a293_0x2420();}import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';function a293_0x3213(_0x5b0276,_0x3c0959){_0x5b0276=_0x5b0276-0x158;var _0x242043=a293_0x2420();var _0x3213b1=_0x242043[_0x5b0276];return _0x3213b1;}export async function withActiveCookie(_0x5e3a72,_0x24c567){setActiveCookie(_0x5e3a72);try{return await _0x24c567();}finally{clearActiveCookie();}}
@@ -1 +1 @@
1
- (function(_0x4c5d48,_0x4168f1){var _0x140799=a293_0x14fd,_0x39b926=_0x4c5d48();while(!![]){try{var _0xd25de7=parseInt(_0x140799(0xaa))/0x1*(parseInt(_0x140799(0xa7))/0x2)+parseInt(_0x140799(0xac))/0x3+-parseInt(_0x140799(0xae))/0x4+parseInt(_0x140799(0xaf))/0x5+-parseInt(_0x140799(0xb0))/0x6+-parseInt(_0x140799(0xab))/0x7*(parseInt(_0x140799(0xa9))/0x8)+parseInt(_0x140799(0xa6))/0x9*(parseInt(_0x140799(0xa8))/0xa);if(_0xd25de7===_0x4168f1)break;else _0x39b926['push'](_0x39b926['shift']());}catch(_0x70e477){_0x39b926['push'](_0x39b926['shift']());}}}(a293_0x1385,0x8bbf0));function a293_0x14fd(_0x5d9e63,_0x3ea059){_0x5d9e63=_0x5d9e63-0xa6;var _0x1385f3=a293_0x1385();var _0x14fda3=_0x1385f3[_0x5d9e63];return _0x14fda3;}function a293_0x1385(){var _0x3f65bb=['4185981iHGqRR','823114danNUI','10dDhwYH','8FOzizo','1iBKEqr','9072FsJnUH','2482248uPvAKi','write','3610400adPcEg','3242905jDqBNC','5258202DEuqUR'];a293_0x1385=function(){return _0x3f65bb;};return a293_0x1385();}export function writeCliSideChannelLine(_0xfffbb8){var _0x4e35c2=a293_0x14fd;process['stderr'][_0x4e35c2(0xad)](_0xfffbb8+'\x0a');}
1
+ function a294_0x3984(_0x3e3223,_0x30ddb5){_0x3e3223=_0x3e3223-0x16f;var _0x4b4693=a294_0x4b46();var _0x3984da=_0x4b4693[_0x3e3223];return _0x3984da;}function a294_0x4b46(){var _0x38d431=['1364652BNSXHc','228555vtXFzb','189SWVZfK','2486637kNlmoq','104592twvEzD','stderr','183966vwNbsp','10714970ZaJPmI','5ARcLdX','3QFtTPi','776494UskDFU'];a294_0x4b46=function(){return _0x38d431;};return a294_0x4b46();}(function(_0x50e033,_0x55864d){var _0x51b43f=a294_0x3984,_0x370174=_0x50e033();while(!![]){try{var _0x27be1a=-parseInt(_0x51b43f(0x179))/0x1+parseInt(_0x51b43f(0x177))/0x2+parseInt(_0x51b43f(0x176))/0x3*(-parseInt(_0x51b43f(0x178))/0x4)+-parseInt(_0x51b43f(0x175))/0x5*(parseInt(_0x51b43f(0x173))/0x6)+parseInt(_0x51b43f(0x16f))/0x7*(-parseInt(_0x51b43f(0x171))/0x8)+-parseInt(_0x51b43f(0x170))/0x9+parseInt(_0x51b43f(0x174))/0xa;if(_0x27be1a===_0x55864d)break;else _0x370174['push'](_0x370174['shift']());}catch(_0x4feddb){_0x370174['push'](_0x370174['shift']());}}}(a294_0x4b46,0x382ba));export function writeCliSideChannelLine(_0x4461fa){var _0x2d31f7=a294_0x3984;process[_0x2d31f7(0x172)]['write'](_0x4461fa+'\x0a');}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/rabetbase-cli",
3
- "version": "2.4.6-beta.1",
3
+ "version": "2.4.6-beta.3",
4
4
  "description": "Developer CLI for Lovrabet apps, datasets, pages, SQL, BFF, database connections, skills, and AI agent workflows.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "keywords": [
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: rabetbase
3
- version: 2.4.6-beta.1
4
- description: "Lovrabet 开发工作流 CLI — 通过 rabetbase 命令管理数据集、数据库连接(dblink)、数据列表页(Data List Page)、自定义页面(Custom Page)、SQL 查询、BFF 脚本、通知配置、菜单事实读取与同步、开发角色与协作者、应用文件、OCR 识别、代码生成,以及平台问题上报。触发词:数据集、数据表、dataset relation-audit、dataset delete、dataset restore、废弃数据集、恢复数据集、dataset rename、dataset field-update、dataset extend-update、dataset business-groups、dataset business-group-update、businessGroup、字段对象更新、doType、options、数据列表页、Data List Page、自定义页面、Custom Page、page create、page custom-list、page custom-detail、page custom-update、page custom-publish、page generate-start、page generate-status、page relation-audit、page sync、page pull、page push、page restore、恢复已删除页面、dblink、数据库连接、schema 分析、db list、db detail、db create、db update、db delete、db test、db tables、db diff、db diff --view all、db diff-refresh-start、db diff-refresh-status、db analyze-batch-plan、db analyze-start、analyze-cancel、analyze-status、traceId、自定义 SQL、sql.execute、bff.execute、BF 消息通知、BFF 消息通知、Backend Function 消息通知、notification config-list、EMAIL configCode、通知配置、notification.send、get_dataset_detail、validate_sql_content、save_or_update_custom_sql、@lovrabet/sdk、lovrabet 开发、rabetbase、filter、codegen、init、appcode、app list、app members-list、tenant members-list、应用人员列表、租户人员列表、workspace、workspace init、workspace use、workspace add、workspace remove、多应用、默认应用、menu list、menu external-link-create、menu external-link-update、menu rename、菜单改名、外链菜单创建、外链 URL 更新、菜单异常审计、菜单手动删除清单、menu sync、menu asset-update、菜单资源更新、menu move、菜单移动、开发角色、开发协作者、role、role list、role user-add、role user-remove、user-resolve、加入开发者、ADMIN、DEV、OWNER、CUSTOM、project create、project upgrade、schema、jq、compress、file upload、file query-url、ocr recognize、文件上传、OCR 识别、发票识别、图片识别、长期链接、issue report、平台问题、platform issue、问题上报、user-account dingding-sandbox-bind、钉钉沙箱账号绑定。"
3
+ version: 2.4.6-beta.3
4
+ description: "Lovrabet 开发工作流 CLI — 通过 rabetbase 命令管理数据集、数据库连接(dblink)、数据列表页(Data List Page)、自定义页面(Custom Page)、SQL 查询、BFF 脚本、通知配置、菜单事实读取与同步、开发角色与协作者、应用文件、面向票证类业务材料文字与结构化字段提取的 OCR、代码生成,以及平台问题上报。触发词:数据集、数据表、dataset relation-audit、dataset delete、dataset restore、废弃数据集、恢复数据集、dataset rename、dataset field-update、dataset extend-update、dataset business-groups、dataset business-group-update、businessGroup、字段对象更新、doType、options、数据列表页、Data List Page、自定义页面、Custom Page、page create、page custom-list、page custom-detail、page custom-update、page custom-publish、page generate-start、page generate-status、page relation-audit、page sync、page pull、page push、page restore、恢复已删除页面、dblink、数据库连接、schema 分析、db list、db detail、db create、db update、db delete、db test、db tables、db diff、db diff --view all、db diff-refresh-start、db diff-refresh-status、db analyze-batch-plan、db analyze-start、analyze-cancel、analyze-status、traceId、自定义 SQL、sql.execute、bff.execute、BF 消息通知、BFF 消息通知、Backend Function 消息通知、notification config-list、EMAIL configCode、通知配置、notification.send、get_dataset_detail、validate_sql_content、save_or_update_custom_sql、@lovrabet/sdk、lovrabet 开发、rabetbase、filter、codegen、init、appcode、app list、app members-list、tenant members-list、应用人员列表、租户人员列表、workspace、workspace init、workspace use、workspace add、workspace remove、多应用、默认应用、menu list、menu visibility-update、菜单显示、菜单隐藏、visible、menu external-link-create、menu external-link-update、menu rename、菜单改名、外链菜单创建、外链 URL 更新、菜单异常审计、菜单手动删除清单、menu sync、menu asset-update、菜单资源更新、menu move、菜单移动、开发角色、开发协作者、role、role list、role user-add、role user-remove、user-resolve、加入开发者、ADMIN、DEV、OWNER、CUSTOM、project create、project upgrade、schema、jq、compress、file upload、file query-url、ocr recognize、文件上传、OCR 识别、票证文字提取、票证字段提取、发票识别、票据识别、证照识别、长期链接、issue report、平台问题、platform issue、问题上报、user-account dingding-sandbox-bind、钉钉沙箱账号绑定。"
5
5
  metadata:
6
6
  requires:
7
7
  bins: ["rabetbase"]
@@ -297,7 +297,7 @@ const result = await client.bff.execute<DashboardData>({
297
297
  | 上报平台问题 | [`rabetbase issue report`](references/rabetbase-issue-report.md) | 由 Skill 组织完整客观事实,禁止代替平台侧做根因判断或方案设计 |
298
298
  | 上传应用文件 | [`rabetbase file upload`](references/rabetbase-file.md) | 返回可持久保存的 `filePath` |
299
299
  | 获取文件访问链接 | [`rabetbase file query-url`](references/rabetbase-file.md) | 默认短效;Markdown/HTML URL-only 内容显式加 `--long-term` |
300
- | 识别图片、PDF 或发票文字 | [`rabetbase ocr recognize`](references/rabetbase-ocr.md) | 支持 URL 或本地文件;本地文件自动串联上传、短效 URL 与 OCR |
300
+ | 提取票证类业务材料的文字与结构化字段 | [`rabetbase ocr recognize`](references/rabetbase-ocr.md) | 发票、票据、证照等;不用于通用图片理解 |
301
301
  | 导出命令契约(flags/risk 等) | [`rabetbase schema`](references/rabetbase-schema.md) | 与 `--help` 同源;**无需登录**;大结果用 `--format compress` |
302
302
  | 更新 CLI 版本 | [`rabetbase update`](references/rabetbase-update.md) | 自动检测最新版本,CLI 与 Built-in Skill 一体升级 |
303
303
  | 初始化/切换当前工作目录应用 | [`rabetbase workspace`](references/rabetbase-workspace.md) | 写当前目录 `.rabetbase.json`;不从全局复制 cookie/accessKey |
@@ -307,6 +307,7 @@ const result = await client.bff.execute<DashboardData>({
307
307
  | 管理当前研发应用的企业知识库 | [`rabetbase kb list/detail/create/update/delete`](references/rabetbase-kb.md) | 标准解析 `--app/--appcode`;仅 company scope;`create/update` 为 `write`,`delete` 保持 `high-risk-write` |
308
308
  | 查询或管理应用级通知配置 | [`rabetbase notification config-list`](references/rabetbase-notification-config-list.md) / [`rabetbase notification config-create`](references/rabetbase-notification-config-mutations.md) / [`rabetbase notification config-update`](references/rabetbase-notification-config-mutations.md) / [`rabetbase notification config-delete`](references/rabetbase-notification-config-mutations.md) | list 获取 BFF 所需 `configCode`;写入只接收单一敏感 JSON 源,先 dry-run;update/delete 必须 `--yes` |
309
309
  | 查看线上菜单事实 / 菜单异常审计 | [`rabetbase menu list`](references/rabetbase-menu-list.md) | 返回 DFS 事实、children/page、URL、最近更新人/时间和 snapshotHash;异常治理先读 [`menu-anomaly-manual-cleanup`](guides/menu-anomaly-manual-cleanup.md) |
310
+ | 批量显示或隐藏菜单 | [`rabetbase menu visibility-update`](references/rabetbase-menu-visibility-update.md) | 用精确 ID/path 选择目标;先 dry-run,使用 `--expect-visible` / `--expected-count` 防漂移,正式执行必须 `--yes` |
310
311
  | 创建外部网站链接菜单 | [`rabetbase menu external-link-create`](references/rabetbase-menu-external-link-create.md) | `write`;显式选择 `embedded` 或 `new-window`,仅接受 HTTPS;建议先 dry-run,正式执行不要求 `--yes` |
311
312
  | 原地更新既有外链 URL | [`rabetbase menu external-link-update`](references/rabetbase-menu-external-link-update.md) | `write`;精确单 ID、URL-only;必须带旧 URL 与父级断言,先 dry-run,再复用参数正式执行 |
312
313
  | 修改任意类型菜单名称 | [`rabetbase menu rename`](references/rabetbase-menu-rename.md) | 精确单 ID、label-only;使用 `--expect-label` 防漂移,先 dry-run 并检查 before/after |
@@ -117,6 +117,7 @@ rabetbase menu list --verbose --format json
117
117
  - 查看菜单是否已配置 CDN 资源 URL。
118
118
  - 审计重复 path、根级 label 重复、孤儿父节点等菜单异常,并生成平台人工处理清单。
119
119
  - 修改菜单名称前确认 `id/label`;所有菜单类型统一使用 `menu rename`。
120
+ - 显示或隐藏菜单前确认 `id/path/visible`;批量写入统一使用 `menu visibility-update`。
120
121
  - 修改 iframe/link 页面 URL 前确认 `id/url/parentId`;写入入口使用 `menu external-link-update`。
121
122
  - 修改微前端 JS/CSS 资源前确认当前 resources;写入入口使用 `menu asset-update`。
122
123
  - 提供稳定的菜单事实入口,避免使用底层数据源查询菜单配置。
@@ -127,7 +128,7 @@ rabetbase menu list --verbose --format json
127
128
  - 不做数据列表页菜单审计;dataset-scoped 页面事实使用 `page data-list-status`。
128
129
  - 不修改外链 URL;使用 `menu external-link-update`,并带旧 URL 与父级断言。
129
130
  - 不修改菜单资源;更新 JS / CSS 资源 URL 使用 `menu asset-update`,并先执行 dry-run。
130
- - 不修改菜单;改名使用 `menu rename`,空 folder 删除使用计划化的 `menu delete`,分组生命周期使用 `group-create/group-update/regroup-start`,写操作都必须先 dry-run。
131
+ - 不修改菜单;显示隐藏使用 `menu visibility-update`,改名使用 `menu rename`,空 folder 删除使用计划化的 `menu delete`,分组生命周期使用 `group-create/group-update/regroup-start`,写操作都必须先 dry-run。
131
132
 
132
133
  ## 参考
133
134
 
@@ -135,6 +136,7 @@ rabetbase menu list --verbose --format json
135
136
  - [menu external-link-create](rabetbase-menu-external-link-create.md)
136
137
  - [menu external-link-update](rabetbase-menu-external-link-update.md)
137
138
  - [menu rename](rabetbase-menu-rename.md)
139
+ - [menu visibility-update](rabetbase-menu-visibility-update.md)
138
140
  - [menu asset-update](rabetbase-menu-asset-update.md)
139
141
  - [menu delete](rabetbase-menu-delete.md)
140
142
  - [menu group-create](rabetbase-menu-group-create.md)
@@ -0,0 +1,59 @@
1
+ # menu visibility-update
2
+
3
+ 按精确菜单 ID 或 path 批量显示、隐藏线上菜单。该命令只更新 `visible`,不删除页面,也不修改 path、URL、父级、排序或资源。
4
+
5
+ ## 隐藏菜单
6
+
7
+ ```bash
8
+ rabetbase menu list --format compress
9
+ rabetbase menu visibility-update --menu-ids "10,11" --visible=false --expect-visible=true --expected-count 2 --dry-run --format compress
10
+ rabetbase menu visibility-update --menu-ids "10,11" --visible=false --expect-visible=true --expected-count 2 --yes --format compress
11
+ rabetbase menu list --format json --jq '.data.menus[] | select(.id == 10 or .id == 11) | {id, path, visible}'
12
+ ```
13
+
14
+ ## 恢复显示
15
+
16
+ ```bash
17
+ rabetbase menu visibility-update --menu-ids "10,11" --visible=true --expect-visible=false --expected-count 2 --dry-run --format compress
18
+ rabetbase menu visibility-update --menu-ids "10,11" --visible=true --expect-visible=false --expected-count 2 --yes --format compress
19
+ ```
20
+
21
+ ## Flags
22
+
23
+ | Flag | 类型 | 说明 |
24
+ |---|---|---|
25
+ | `--menu-ids <csv>` | string | 精确菜单 ID;只接受正安全整数,可与 paths 组合并去重 |
26
+ | `--paths <csv>` | string | 精确菜单 path;同一路径命中多条时必须改用 ID |
27
+ | `--visible <true\|false>` | boolean | 必填,目标可见性;显式 `false` 不会被忽略 |
28
+ | `--expect-visible <true\|false>` | boolean | 可选,断言所有目标当前可见性,防止覆盖并发变化 |
29
+ | `--expected-count <n>` | number | 可选,断言去重后的精确目标数量 |
30
+ | `--dry-run` | boolean | 输出目标、before/after、snapshotHash 和最小请求,不写入 |
31
+ | `--yes` | boolean | 正式执行必填;该命令是 `high-risk-write` |
32
+
33
+ `--menu-ids` 与 `--paths` 至少提供一个。任一 selector 未命中会整批失败,不会静默更新子集;ID 与 path 选中同一菜单时自动去重。
34
+
35
+ ## 执行检查
36
+
37
+ 1. 先用 `menu list` 取得精确 ID、path 和当前 `visible`。
38
+ 2. dry-run 时同时传 `--expect-visible` 与 `--expected-count`。
39
+ 3. 检查 `targets[].before/after`,确认只有 `visible` 改变。
40
+ 4. 复用相同 selector、目标值和断言,添加 `--yes` 正式执行。
41
+ 5. 检查 `succeeded/failed` 与 `verification.matchesRequestedState`,再用 `menu list` 回查。
42
+
43
+ 目标已经等于期望值时返回 `skipped=true`,不发送更新请求。批量请求出现部分失败时不会自动重试;先按 `succeeded/failed` 和 `menu list` 核对实际状态,再为仍未生效的精确 ID 重新 dry-run。
44
+
45
+ ## 常见错误
46
+
47
+ - `menu_selector_not_found`:ID 或 path 不存在;重新执行 `menu list` 获取当前事实。
48
+ - `menu_selector_ambiguous`:一个 path 命中多条菜单;按错误提示改用 `--menu-ids`。
49
+ - `menu_expected_count_mismatch`:去重后的目标数量与断言不一致;重新检查 selector。
50
+ - `menu_state_drift`:当前可见性或菜单快照发生变化;重新读取并 dry-run。
51
+ - `menu_verification_failed`:写后 visible 或未修改字段无法确认;先执行 `menu list`,不要直接重试整批。
52
+
53
+ 隐藏菜单只影响菜单展示,不等于禁用页面或修改权限。页面能否通过直达地址访问,仍由平台现有权限事实决定。
54
+
55
+ ## 相关命令
56
+
57
+ - [menu list](rabetbase-menu-list.md)
58
+ - [menu move](rabetbase-menu-move.md)
59
+ - [menu asset-update](rabetbase-menu-asset-update.md)
@@ -1,6 +1,21 @@
1
1
  # ocr recognize
2
2
 
3
- 使用平台 OCR 服务识别远程 URL 或本地图片/PDF。适用于发票、证照、表格图片、合同附件和普通文字识别。
3
+ 使用平台 OCR 服务提取票证类业务材料中的文字与结构化字段。发票、票据、证照等是典型示例,不是票证类型的封闭白名单。
4
+
5
+ ## 使用边界
6
+
7
+ 图片本身不是 OCR 的触发条件。先判断用户处理的是否为票证类业务材料,再判断需要的是文字或结构化字段,还是通用画面理解。
8
+
9
+ | 任务 | 处理方式 |
10
+ |------|----------|
11
+ | 提取票证类材料的票面全文、关键字段或表格 | 使用 OCR;不要求用户必须说出“OCR” |
12
+ | 用户明确要求对票证材料执行 OCR 或文字识别 | 使用 OCR |
13
+ | 理解普通照片、UI 截图、商品图、设计稿或图表 | 当前模型支持多模态时由 Agent 直接处理,不调用 OCR |
14
+ | 当前模型不能读取通用图片,但用户只要求提取可见文字 | 仅将 OCR 作为明确的文字提取降级能力,并说明限制 |
15
+ | 当前模型不能读取图片,任务依赖物体、颜色、布局或视觉关系 | 不用 OCR 冒充视觉理解,向用户说明能力限制 |
16
+ | 图片只是附件,用户没有要求分析或提取 | 不调用 OCR |
17
+
18
+ 按业务对象和任务输出路由,不按文件名、扩展名、MIME、某组关键词或 `scene` 枚举路由。已明确需要精确票证提取时可以直接使用专业 OCR,不必先做一次重复的多模态识别。`general` 是兼容的通用文字识别 scene,可用于未被专用 scene 覆盖的票证材料或用户明确要求的纯文字降级;它不是通用图片理解入口。
4
19
 
5
20
  ## 风险边界
6
21
 
@@ -43,7 +58,7 @@ rabetbase ocr recognize \
43
58
  | scene | 服务端 type | 用途 |
44
59
  |-------|-------------|------|
45
60
  | `invoice` | `Invoice` | 发票 |
46
- | `general` | `General` | 通用文字 |
61
+ | `general` | `General` | 票证材料的通用文字识别;非通用图片理解 |
47
62
  | `form` | `Table` | 表格 |
48
63
  | `idCard` | `IdCard` | 身份证 |
49
64
 
@@ -2,8 +2,8 @@
2
2
  "schemaVersion": 1,
3
3
  "name": "rabetbase",
4
4
  "packageName": "@lovrabet/rabetbase-cli",
5
- "packageVersion": "2.4.6-beta.1",
6
- "skillVersion": "2.4.6-beta.1",
5
+ "packageVersion": "2.4.6-beta.3",
6
+ "skillVersion": "2.4.6-beta.3",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/backend-function.md",
@@ -93,6 +93,7 @@
93
93
  "references/rabetbase-menu-regroup-start.md",
94
94
  "references/rabetbase-menu-rename.md",
95
95
  "references/rabetbase-menu-sync.md",
96
+ "references/rabetbase-menu-visibility-update.md",
96
97
  "references/rabetbase-notification-config-list.md",
97
98
  "references/rabetbase-notification-config-mutations.md",
98
99
  "references/rabetbase-ocr.md",
@@ -130,5 +131,5 @@
130
131
  "references/rabetbase-user-account.md",
131
132
  "references/rabetbase-workspace.md"
132
133
  ],
133
- "digest": "dd90c1b3e021f31891219ea2530315b4df94ef9053a4cb1f5c427517c10c67d3"
134
+ "digest": "c02f066f808e761aac2067a5eb9973eb6975b7a8a27afc19e1d8435ef11c0c37"
134
135
  }