@lovrabet/rabetbase-cli 2.5.0-beta.2 → 2.5.0-beta.4

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 (304) 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/api/generate-sdk-config-file.js +1 -1
  5. package/lib/auth/auth-server-ui.js +1 -1
  6. package/lib/auth/auth-server.js +1 -1
  7. package/lib/auth/constant.js +1 -1
  8. package/lib/auth/get-cookie.js +1 -1
  9. package/lib/auth/get-session-user.js +1 -1
  10. package/lib/auth/is-session-valid.js +1 -1
  11. package/lib/auth/login-success-html.js +1 -1
  12. package/lib/auth/logout.js +1 -1
  13. package/lib/cli-flags.js +1 -1
  14. package/lib/cli.js +1 -1
  15. package/lib/commands/api/generate.js +1 -1
  16. package/lib/commands/api/index.js +1 -1
  17. package/lib/commands/api/list.js +1 -1
  18. package/lib/commands/api/pull.js +1 -1
  19. package/lib/commands/api/shared.js +1 -1
  20. package/lib/commands/app/index.js +1 -1
  21. package/lib/commands/app/list.js +1 -1
  22. package/lib/commands/app/members-list.js +1 -1
  23. package/lib/commands/app/remote-directory.js +1 -1
  24. package/lib/commands/app/shared.js +1 -1
  25. package/lib/commands/app-config/delete.js +1 -1
  26. package/lib/commands/app-config/get.js +1 -1
  27. package/lib/commands/app-config/index.js +1 -1
  28. package/lib/commands/app-config/list.js +1 -1
  29. package/lib/commands/app-config/set.js +1 -1
  30. package/lib/commands/app-config/shared.js +1 -1
  31. package/lib/commands/auth/index.js +1 -1
  32. package/lib/commands/bff/create.js +1 -1
  33. package/lib/commands/bff/delete.js +1 -1
  34. package/lib/commands/bff/detail.js +1 -1
  35. package/lib/commands/bff/index.js +1 -1
  36. package/lib/commands/bff/list.js +1 -1
  37. package/lib/commands/bff/pull.js +1 -1
  38. package/lib/commands/bff/push.js +1 -1
  39. package/lib/commands/bff/status.js +1 -1
  40. package/lib/commands/cli-skill/index.js +1 -1
  41. package/lib/commands/cli-update.js +1 -1
  42. package/lib/commands/codegen/index.js +1 -1
  43. package/lib/commands/codegen/sdk.js +1 -1
  44. package/lib/commands/codegen/sql.js +1 -1
  45. package/lib/commands/common/app-registry.js +1 -1
  46. package/lib/commands/common/app-selector.js +1 -1
  47. package/lib/commands/common/async-task.js +1 -1
  48. package/lib/commands/common/dry-run.js +1 -1
  49. package/lib/commands/common/flags.js +1 -1
  50. package/lib/commands/common/local-file.js +1 -1
  51. package/lib/commands/common/validate.js +1 -1
  52. package/lib/commands/config/delete.js +1 -1
  53. package/lib/commands/config/get.js +1 -1
  54. package/lib/commands/config/index.js +1 -1
  55. package/lib/commands/config/init.js +1 -1
  56. package/lib/commands/config/list.js +1 -1
  57. package/lib/commands/config/set.js +1 -1
  58. package/lib/commands/config/shared.js +1 -1
  59. package/lib/commands/dataset/business-group-update.js +1 -1
  60. package/lib/commands/dataset/business-groups.js +1 -1
  61. package/lib/commands/dataset/capability.js +1 -1
  62. package/lib/commands/dataset/delete.js +1 -1
  63. package/lib/commands/dataset/detail.js +1 -1
  64. package/lib/commands/dataset/extend-update.js +1 -1
  65. package/lib/commands/dataset/field-update.js +1 -1
  66. package/lib/commands/dataset/generate.js +1 -1
  67. package/lib/commands/dataset/index.js +1 -1
  68. package/lib/commands/dataset/list.js +1 -1
  69. package/lib/commands/dataset/operations.js +1 -1
  70. package/lib/commands/dataset/relation-audit.js +1 -1
  71. package/lib/commands/dataset/relation-create.js +1 -1
  72. package/lib/commands/dataset/relation-delete.js +1 -1
  73. package/lib/commands/dataset/relation-shared.js +1 -1
  74. package/lib/commands/dataset/relation-update.js +1 -1
  75. package/lib/commands/dataset/relations.js +1 -1
  76. package/lib/commands/dataset/rename.js +1 -1
  77. package/lib/commands/dataset/restore.js +1 -1
  78. package/lib/commands/db/analysis-batching.js +1 -1
  79. package/lib/commands/db/analyze-batch-plan.js +1 -1
  80. package/lib/commands/db/analyze-cancel.js +1 -1
  81. package/lib/commands/db/analyze-start.js +1 -1
  82. package/lib/commands/db/analyze-status.js +1 -1
  83. package/lib/commands/db/create.js +1 -1
  84. package/lib/commands/db/delete.js +1 -1
  85. package/lib/commands/db/detail.js +1 -1
  86. package/lib/commands/db/diff-refresh-start.js +1 -1
  87. package/lib/commands/db/diff-refresh-status.js +1 -1
  88. package/lib/commands/db/diff.js +1 -1
  89. package/lib/commands/db/index.js +1 -1
  90. package/lib/commands/db/list.js +1 -1
  91. package/lib/commands/db/shared.js +1 -1
  92. package/lib/commands/db/table-diff-shared.d.ts +13 -0
  93. package/lib/commands/db/table-diff-shared.js +1 -0
  94. package/lib/commands/db/tables.js +1 -1
  95. package/lib/commands/db/test.js +1 -1
  96. package/lib/commands/db/update.js +1 -1
  97. package/lib/commands/doctor.js +1 -1
  98. package/lib/commands/file/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/search.js +1 -1
  109. package/lib/commands/kb/shared.js +1 -1
  110. package/lib/commands/kb/update.js +1 -1
  111. package/lib/commands/logs/index.js +1 -1
  112. package/lib/commands/menu/asset-update.js +1 -1
  113. package/lib/commands/menu/delete.js +1 -1
  114. package/lib/commands/menu/external-link-create.js +1 -1
  115. package/lib/commands/menu/external-link-update.js +1 -1
  116. package/lib/commands/menu/group-create.js +1 -1
  117. package/lib/commands/menu/group-update.js +1 -1
  118. package/lib/commands/menu/index.js +1 -1
  119. package/lib/commands/menu/list.js +1 -1
  120. package/lib/commands/menu/move.js +1 -1
  121. package/lib/commands/menu/regroup-start.js +1 -1
  122. package/lib/commands/menu/rename.js +1 -1
  123. package/lib/commands/menu/shared/compare-table.js +1 -1
  124. package/lib/commands/menu/shared/delete-plan.js +1 -1
  125. package/lib/commands/menu/shared/facts.js +1 -1
  126. package/lib/commands/menu/shared/index.js +1 -1
  127. package/lib/commands/menu/shared/inquirer.js +1 -1
  128. package/lib/commands/menu/shared/local-pages.js +1 -1
  129. package/lib/commands/menu/shared/logic.js +1 -1
  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/update-core.js +1 -1
  134. package/lib/commands/menu/shared/valid-url.js +1 -1
  135. package/lib/commands/menu/sync.js +1 -1
  136. package/lib/commands/menu/visibility-update.js +1 -1
  137. package/lib/commands/notification/config-create.js +1 -1
  138. package/lib/commands/notification/config-delete.js +1 -1
  139. package/lib/commands/notification/config-list.js +1 -1
  140. package/lib/commands/notification/config-update.js +1 -1
  141. package/lib/commands/notification/index.js +1 -1
  142. package/lib/commands/notification/shared.js +1 -1
  143. package/lib/commands/ocr/index.js +1 -1
  144. package/lib/commands/page/create.js +1 -1
  145. package/lib/commands/page/custom/detail.js +1 -1
  146. package/lib/commands/page/custom/list.js +1 -1
  147. package/lib/commands/page/custom/publish.js +1 -1
  148. package/lib/commands/page/custom/shared.js +1 -1
  149. package/lib/commands/page/custom/syntax.js +1 -1
  150. package/lib/commands/page/custom/template.js +1 -1
  151. package/lib/commands/page/custom/update.js +1 -1
  152. package/lib/commands/page/data-list-status.js +1 -1
  153. package/lib/commands/page/generate-start.js +1 -1
  154. package/lib/commands/page/generate-status.js +1 -1
  155. package/lib/commands/page/index.js +1 -1
  156. package/lib/commands/page/pull.js +1 -1
  157. package/lib/commands/page/push.js +1 -1
  158. package/lib/commands/page/relation-audit.js +1 -1
  159. package/lib/commands/page/restore.js +1 -1
  160. package/lib/commands/page/shared.js +1 -1
  161. package/lib/commands/page/sync.js +1 -1
  162. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  163. package/lib/commands/project/create/format-elapsed.js +1 -1
  164. package/lib/commands/project/create/main.js +1 -1
  165. package/lib/commands/project/create/materialize-project-template.js +1 -1
  166. package/lib/commands/project/create/project-name.js +1 -1
  167. package/lib/commands/project/create/project-template-archive.js +1 -1
  168. package/lib/commands/project/create/project-template-path.js +1 -1
  169. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  170. package/lib/commands/project/create/use-format-code.js +1 -1
  171. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  172. package/lib/commands/project/index.js +1 -1
  173. package/lib/commands/project/upgrade.js +1 -1
  174. package/lib/commands/registry.js +1 -1
  175. package/lib/commands/role/delete.js +1 -1
  176. package/lib/commands/role/detail.js +1 -1
  177. package/lib/commands/role/index.js +1 -1
  178. package/lib/commands/role/list.js +1 -1
  179. package/lib/commands/role/shared.js +1 -1
  180. package/lib/commands/role/update.js +1 -1
  181. package/lib/commands/role/user-add.js +1 -1
  182. package/lib/commands/role/user-remove.js +1 -1
  183. package/lib/commands/role/user-resolve.js +1 -1
  184. package/lib/commands/run/index.js +1 -1
  185. package/lib/commands/schema.js +1 -1
  186. package/lib/commands/sql/create.js +1 -1
  187. package/lib/commands/sql/delete.js +1 -1
  188. package/lib/commands/sql/detail.js +1 -1
  189. package/lib/commands/sql/exec.js +1 -1
  190. package/lib/commands/sql/index.js +1 -1
  191. package/lib/commands/sql/list.js +1 -1
  192. package/lib/commands/sql/pull.js +1 -1
  193. package/lib/commands/sql/push.js +1 -1
  194. package/lib/commands/sql/shared.js +1 -1
  195. package/lib/commands/sql/status.js +1 -1
  196. package/lib/commands/sql/validate.js +1 -1
  197. package/lib/commands/task/index.js +1 -1
  198. package/lib/commands/task/status.js +1 -1
  199. package/lib/commands/tenant/index.js +1 -1
  200. package/lib/commands/tenant/members-list.js +1 -1
  201. package/lib/commands/tenant/shared.js +1 -1
  202. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  203. package/lib/commands/user-account/index.js +1 -1
  204. package/lib/commands/workspace/add.js +1 -1
  205. package/lib/commands/workspace/index.js +1 -1
  206. package/lib/commands/workspace/remove.js +1 -1
  207. package/lib/config/domain-config.js +1 -1
  208. package/lib/config/schema.js +1 -1
  209. package/lib/constant/cdn.js +1 -1
  210. package/lib/constant/cli.js +1 -1
  211. package/lib/constant/defaults.js +1 -1
  212. package/lib/constant/domain.js +1 -1
  213. package/lib/constant/env.js +1 -1
  214. package/lib/constant/output.js +1 -1
  215. package/lib/constant/paths.js +1 -1
  216. package/lib/constant/region.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.d.ts +1 -7
  224. package/lib/core/api-client.js +1 -1
  225. package/lib/core/bff/config.js +1 -1
  226. package/lib/core/bff/file-system.js +1 -1
  227. package/lib/core/bff/hash.js +1 -1
  228. package/lib/core/bff/lock.js +1 -1
  229. package/lib/core/bff/utils.js +1 -1
  230. package/lib/core/db-resolver.js +1 -1
  231. package/lib/core/page/file-system.js +1 -1
  232. package/lib/core/page/hash.js +1 -1
  233. package/lib/core/page/lock.js +1 -1
  234. package/lib/core/sql-index-auditor.js +1 -1
  235. package/lib/core/sql-sync/config.js +1 -1
  236. package/lib/core/sql-sync/file-system.js +1 -1
  237. package/lib/core/sql-sync/hash.js +1 -1
  238. package/lib/core/sql-sync/lock.js +1 -1
  239. package/lib/core/sql-sync/utils.js +1 -1
  240. package/lib/core/sql-validator.js +1 -1
  241. package/lib/errors.js +1 -1
  242. package/lib/framework/build-all-flags.js +1 -1
  243. package/lib/framework/error-output.js +1 -1
  244. package/lib/framework/explicit-yes.js +1 -1
  245. package/lib/framework/flags.js +1 -1
  246. package/lib/framework/help.js +1 -1
  247. package/lib/framework/index.js +1 -1
  248. package/lib/framework/output.js +1 -1
  249. package/lib/framework/response.js +1 -1
  250. package/lib/framework/runner-alias.js +1 -1
  251. package/lib/framework/runner.js +1 -1
  252. package/lib/framework/schema-export.js +1 -1
  253. package/lib/framework/types.js +1 -1
  254. package/lib/generated/build-info.d.ts +4 -4
  255. package/lib/generated/build-info.js +1 -1
  256. package/lib/help.js +1 -1
  257. package/lib/postinstall.js +1 -1
  258. package/lib/runtime/confirmation.js +1 -1
  259. package/lib/runtime/event.js +1 -1
  260. package/lib/runtime/index.js +1 -1
  261. package/lib/runtime/queue.js +1 -1
  262. package/lib/runtime/resolve.js +1 -1
  263. package/lib/skills/builtin-skill.js +1 -1
  264. package/lib/skills/main.js +1 -1
  265. package/lib/skills/npx-skills-add.js +1 -1
  266. package/lib/skills/skill-presence.js +1 -1
  267. package/lib/telemetry/cli-command-trace.js +1 -1
  268. package/lib/telemetry/cli-help-trace.js +1 -1
  269. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  270. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  271. package/lib/telemetry/send-cli-trace-log.js +1 -1
  272. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  273. package/lib/utils/ai_config.js +1 -1
  274. package/lib/utils/apply-jq-filter.js +1 -1
  275. package/lib/utils/cdn-config.js +1 -1
  276. package/lib/utils/check-sdk-version.js +1 -1
  277. package/lib/utils/cli-version-check.js +1 -1
  278. package/lib/utils/cli-version-policy.js +1 -1
  279. package/lib/utils/config.js +1 -1
  280. package/lib/utils/entity-with-id.js +1 -1
  281. package/lib/utils/file-utils.js +1 -1
  282. package/lib/utils/guides-cdn.js +1 -1
  283. package/lib/utils/http-client.js +1 -1
  284. package/lib/utils/is-non-interactive.js +1 -1
  285. package/lib/utils/logger.js +1 -1
  286. package/lib/utils/params.js +1 -1
  287. package/lib/utils/platform.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 +6 -6
  296. package/skills/rabetbase/guides/custom-page-workflow.md +1 -1
  297. package/skills/rabetbase/guides/database-connection-workflow.md +9 -9
  298. package/skills/rabetbase/references/rabetbase-config.md +2 -3
  299. package/skills/rabetbase/references/rabetbase-db-analyze.md +2 -2
  300. package/skills/rabetbase/references/rabetbase-db-diff-refresh.md +4 -3
  301. package/skills/rabetbase/references/rabetbase-db-diff.md +7 -22
  302. package/skills/rabetbase/references/rabetbase-db-tables.md +14 -2
  303. package/skills/rabetbase/references/rabetbase-page-custom-list.md +5 -2
  304. package/skills/rabetbase.manifest.json +3 -3
@@ -1 +1 @@
1
- const a290_0x379beb=a290_0x3549;(function(_0x57440f,_0x4844c7){const _0x2a73b1=a290_0x3549,_0x4cc44a=_0x57440f();while(!![]){try{const _0x14fff0=-parseInt(_0x2a73b1(0x164))/0x1+parseInt(_0x2a73b1(0x170))/0x2+-parseInt(_0x2a73b1(0x188))/0x3+parseInt(_0x2a73b1(0x169))/0x4*(parseInt(_0x2a73b1(0x161))/0x5)+parseInt(_0x2a73b1(0x156))/0x6+parseInt(_0x2a73b1(0x15f))/0x7+-parseInt(_0x2a73b1(0x177))/0x8*(parseInt(_0x2a73b1(0x181))/0x9);if(_0x14fff0===_0x4844c7)break;else _0x4cc44a['push'](_0x4cc44a['shift']());}catch(_0x2f3bb2){_0x4cc44a['push'](_0x4cc44a['shift']());}}}(a290_0x4ad1,0xa642d));import a290_0x5b77c9 from'node:fs';import a290_0x30b013 from'node:path';function a290_0x3549(_0x33ad00,_0x39d0c1){_0x33ad00=_0x33ad00-0x156;const _0x4ad140=a290_0x4ad1();let _0x35499a=_0x4ad140[_0x33ad00];return _0x35499a;}import{logger}from'../utils/logger.js';import{getCliVersion}from'../utils/version.js';function a290_0x4ad1(){const _0x25b4b6=['split','toISOString','datasetCode:\x20\x22','toLowerCase','readFile','tableName','error','includes','replaceContent','getDate','2840490bjSQeP','\x20},','writeFile','getFullYear','replace','pad','alias','formatLocalTimestamp','isFile','3386404DiHojs','replaceApiContent','774255tywlXA','default','getHours','71773kGkuaR','utf8','name:\x20\x22','pop','mkdir','32lXCxzo','map','processFile','Template\x20content\x20replacement\x20completed','now','promises','charAt','567550UXVcfY','.jsx','isDirectory','tableName:\x20\x22','success','padStart','.json','2919352DwVcFP','toUpperCase','YourModel','join','.css','processTemplate','.scss','alias:\x20\x22','endsWith','info','27ilZUAN','Starting\x20template\x20content\x20replacement','LOVRABET','.tsx','Template\x20content\x20replacement\x20failed','name','getMonth','1896705RDhSNv','.tpl','getMinutes','template','processDirectory','toDisplayTitle','copyFile','slice','push'];a290_0x4ad1=function(){return _0x25b4b6;};return a290_0x4ad1();}const CLI_VERSION=getCliVersion();export class TemplateReplacer{static[a290_0x379beb(0x15b)](_0x4d7e09){const _0xe3786b=a290_0x379beb;return String(_0x4d7e09)[_0xe3786b(0x175)](0x2,'0');}static[a290_0x379beb(0x15d)](_0x937b8f){const _0x2a5d9f=a290_0x379beb,_0x1a37f0=_0x937b8f[_0x2a5d9f(0x159)](),_0x31d37a=this[_0x2a5d9f(0x15b)](_0x937b8f[_0x2a5d9f(0x187)]()+0x1),_0x57e303=this[_0x2a5d9f(0x15b)](_0x937b8f[_0x2a5d9f(0x19a)]()),_0x2a9a44=this['pad'](_0x937b8f[_0x2a5d9f(0x163)]()),_0x3694f4=this[_0x2a5d9f(0x15b)](_0x937b8f[_0x2a5d9f(0x18a)]()),_0x8f60bc=this['pad'](_0x937b8f['getSeconds']());return{'createdAt':_0x1a37f0+'-'+_0x31d37a+'-'+_0x57e303+'\x20'+_0x2a9a44+':'+_0x3694f4+':'+_0x8f60bc,'createdDate':_0x1a37f0+'-'+_0x31d37a+'-'+_0x57e303,'createdTime':_0x2a9a44+':'+_0x3694f4+':'+_0x8f60bc};}static['toComponentName'](_0x476bad){const _0x632410=a290_0x379beb,_0x5e5c2c=_0x476bad[_0x632410(0x191)]('/')[_0x632410(0x167)]()||_0x476bad;return _0x5e5c2c[_0x632410(0x191)]('-')['map'](_0x3db934=>_0x3db934[_0x632410(0x16f)](0x0)[_0x632410(0x178)]()+_0x3db934[_0x632410(0x18f)](0x1)['toLowerCase']())[_0x632410(0x17a)]('');}static[a290_0x379beb(0x18d)](_0x1fceb1){const _0x50ae13=a290_0x379beb,_0x941bf7=_0x1fceb1[_0x50ae13(0x191)]('/')[_0x50ae13(0x167)]()||_0x1fceb1;return _0x941bf7[_0x50ae13(0x191)]('-')[_0x50ae13(0x16a)](_0x2c76e9=>_0x2c76e9[_0x50ae13(0x16f)](0x0)[_0x50ae13(0x178)]()+_0x2c76e9[_0x50ae13(0x18f)](0x1)[_0x50ae13(0x194)]())[_0x50ae13(0x17a)]('\x20');}static['replaceContent'](_0x4c2724,_0xc7b50a,_0x3349d6){const _0x13eb9e=a290_0x379beb,_0x18fcf6=this['toComponentName'](_0xc7b50a),_0xeefce6=this[_0x13eb9e(0x18d)](_0xc7b50a),{createdAt:_0x56af26,createdDate:_0x1829fb,createdTime:_0x241130}=this[_0x13eb9e(0x15d)](new Date());let _0x4a3cf0=_0x4c2724[_0x13eb9e(0x15a)](/\{CliVersion\}/g,CLI_VERSION)[_0x13eb9e(0x15a)](/\{ComponentName\}/g,_0x18fcf6)[_0x13eb9e(0x15a)](/\{DisplayTitle\}/g,_0xeefce6)[_0x13eb9e(0x15a)](/\{PageName\}/g,_0xc7b50a)['replace'](/\{TemplateName\}/g,_0x3349d6)[_0x13eb9e(0x15a)](/\{CreatedAt\}/g,_0x56af26)[_0x13eb9e(0x15a)](/\{CreatedDate\}/g,_0x1829fb)[_0x13eb9e(0x15a)](/\{CreatedTime\}/g,_0x241130);return _0x4a3cf0;}static[a290_0x379beb(0x160)](_0x340f2e,_0x5d16bd,_0x232cdd,_0x56303a,_0x5cc71a,_0xf07541,_0x3703da,_0x176d35){const _0x271916=a290_0x379beb,_0x17c351=new Date(),_0x3c7473=_0x17c351[_0x271916(0x192)](),_0x17579a=_0x232cdd['map'](_0x4c01fb=>{const _0x10a5a0=_0x271916,_0x2533a1=[_0x10a5a0(0x193)+_0x4c01fb['datasetCode']+'\x22',_0x10a5a0(0x173)+_0x4c01fb[_0x10a5a0(0x196)]+'\x22',_0x10a5a0(0x166)+_0x4c01fb[_0x10a5a0(0x186)]+'\x22'];return _0x4c01fb[_0x10a5a0(0x15c)]&&_0x2533a1[_0x10a5a0(0x190)](_0x10a5a0(0x17e)+_0x4c01fb[_0x10a5a0(0x15c)]+'\x22'),'\x0a\x20\x20\x20\x20{\x20'+_0x2533a1[_0x10a5a0(0x17a)](',\x20')+_0x10a5a0(0x157);})[_0x271916(0x17a)](''),_0x1b6093=_0x56303a||_0x232cdd[0x0]?.[_0x271916(0x15c)]||_0x271916(0x179);let _0x322064=_0x340f2e[_0x271916(0x15a)](/\{AppCode\}/g,_0x5d16bd)['replace'](/\{ModelConfigs\}/g,_0x17579a)[_0x271916(0x15a)](/\{ExampleModelName\}/g,_0x1b6093)['replace'](/\{ApiFileName\}/g,_0x5cc71a||'api')['replace'](/\{ConfigName\}/g,_0xf07541||_0x271916(0x162))['replace'](/\{ClientConfigParam\}/g,_0x3703da||'')[_0x271916(0x15a)](/\{VarPrefix\}/g,_0x176d35||_0x271916(0x183))[_0x271916(0x15a)](/\{CreatedAt\}/g,_0x3c7473);return _0x322064;}static async[a290_0x379beb(0x17c)](_0x8f5dc5,_0x284b2c,_0x43fef7,_0x3ada1f,_0x5730a4=!![]){const _0xa650fa=a290_0x379beb,_0x293192=Date[_0xa650fa(0x16d)]();try{_0x5730a4&&logger[_0xa650fa(0x180)](_0xa650fa(0x18b),_0xa650fa(0x182),{'templatePath':_0x8f5dc5,'targetPath':_0x284b2c,'pageName':_0x43fef7,'templateName':_0x3ada1f});await a290_0x5b77c9[_0xa650fa(0x16e)][_0xa650fa(0x168)](_0x284b2c,{'recursive':!![]}),await this['processDirectory'](_0x8f5dc5,_0x284b2c,_0x43fef7,_0x3ada1f);if(_0x5730a4){const _0xbadfdd=Date['now']()-_0x293192;logger[_0xa650fa(0x174)](_0xa650fa(0x18b),_0xa650fa(0x16c),_0xbadfdd,{'pageName':_0x43fef7,'templateName':_0x3ada1f});}}catch(_0xc11bca){if(_0x5730a4){const _0x54d32a=Date[_0xa650fa(0x16d)]()-_0x293192;logger[_0xa650fa(0x197)]('template',_0xa650fa(0x185),{'templatePath':_0x8f5dc5,'targetPath':_0x284b2c,'pageName':_0x43fef7,'templateName':_0x3ada1f,'error':_0xc11bca instanceof Error?_0xc11bca['message']:String(_0xc11bca),'duration':_0x54d32a});}throw _0xc11bca;}}static async['processDirectory'](_0x548f11,_0xaa182d,_0x5bb958,_0x3d3dee){const _0x1011f8=a290_0x379beb,_0x78602f=await a290_0x5b77c9[_0x1011f8(0x16e)]['readdir'](_0x548f11,{'withFileTypes':!![]});for(const _0x4bb1c2 of _0x78602f){const _0xe10e46=a290_0x30b013[_0x1011f8(0x17a)](_0x548f11,_0x4bb1c2['name']);let _0x579bb3=a290_0x30b013[_0x1011f8(0x17a)](_0xaa182d,_0x4bb1c2[_0x1011f8(0x186)]);_0x4bb1c2['name']['endsWith']('.tpl')&&(_0x579bb3=a290_0x30b013[_0x1011f8(0x17a)](_0xaa182d,_0x4bb1c2[_0x1011f8(0x186)][_0x1011f8(0x15a)](/\.tpl$/,'')));if(_0x4bb1c2[_0x1011f8(0x172)]())await a290_0x5b77c9[_0x1011f8(0x16e)][_0x1011f8(0x168)](_0x579bb3,{'recursive':!![]}),await this[_0x1011f8(0x18c)](_0xe10e46,_0x579bb3,_0x5bb958,_0x3d3dee);else _0x4bb1c2[_0x1011f8(0x15e)]()&&await this['processFile'](_0xe10e46,_0x579bb3,_0x5bb958,_0x3d3dee);}}static async[a290_0x379beb(0x16b)](_0x1b28d3,_0x4775c7,_0x2f7024,_0x585bbb){const _0xc2b0ce=a290_0x379beb,_0x50f833=a290_0x30b013['extname'](_0x1b28d3)[_0xc2b0ce(0x194)]();_0x1b28d3['endsWith'](_0xc2b0ce(0x189))&&(_0x4775c7=_0x4775c7['replace'](/\.tpl$/,''));const _0xb90a39=[_0xc2b0ce(0x184),'.ts',_0xc2b0ce(0x171),'.js',_0xc2b0ce(0x176),'.md',_0xc2b0ce(0x17b),_0xc2b0ce(0x17d),_0xc2b0ce(0x189)];if(_0xb90a39[_0xc2b0ce(0x198)](_0x50f833)||_0x1b28d3[_0xc2b0ce(0x17f)](_0xc2b0ce(0x189))){const _0xff4ab4=await a290_0x5b77c9[_0xc2b0ce(0x16e)][_0xc2b0ce(0x195)](_0x1b28d3,_0xc2b0ce(0x165)),_0x42d94c=this[_0xc2b0ce(0x199)](_0xff4ab4,_0x2f7024,_0x585bbb);await a290_0x5b77c9[_0xc2b0ce(0x16e)][_0xc2b0ce(0x158)](_0x4775c7,_0x42d94c,_0xc2b0ce(0x165));}else await a290_0x5b77c9[_0xc2b0ce(0x16e)][_0xc2b0ce(0x18e)](_0x1b28d3,_0x4775c7);}}
1
+ function a291_0x3be8(_0x1238e4,_0x50b21c){_0x1238e4=_0x1238e4-0xa5;const _0x1d77fd=a291_0x1d77();let _0x3be83e=_0x1d77fd[_0x1238e4];return _0x3be83e;}const a291_0x4fc2d7=a291_0x3be8;(function(_0x458981,_0x9b8ee9){const _0x2e3127=a291_0x3be8,_0x22acc0=_0x458981();while(!![]){try{const _0x378744=parseInt(_0x2e3127(0xd2))/0x1*(-parseInt(_0x2e3127(0xbb))/0x2)+parseInt(_0x2e3127(0xec))/0x3*(-parseInt(_0x2e3127(0xe7))/0x4)+-parseInt(_0x2e3127(0xcd))/0x5*(-parseInt(_0x2e3127(0xa6))/0x6)+-parseInt(_0x2e3127(0xd5))/0x7+-parseInt(_0x2e3127(0xbc))/0x8*(parseInt(_0x2e3127(0xb9))/0x9)+parseInt(_0x2e3127(0xc7))/0xa*(-parseInt(_0x2e3127(0xba))/0xb)+-parseInt(_0x2e3127(0xd1))/0xc*(-parseInt(_0x2e3127(0xee))/0xd);if(_0x378744===_0x9b8ee9)break;else _0x22acc0['push'](_0x22acc0['shift']());}catch(_0x3cd9e9){_0x22acc0['push'](_0x22acc0['shift']());}}}(a291_0x1d77,0xd30d6));import a291_0x176f8b from'node:fs';function a291_0x1d77(){const _0x1c82a3=['tableName:\x20\x22','map','readFile','27257364ymLLlS','3927wnITUr','message','replaceContent','71015CeKQQx','toLowerCase','Template\x20content\x20replacement\x20completed','toISOString','error','toComponentName','getHours','includes','formatLocalTimestamp','split','\x20},','isDirectory','success','replaceApiContent','slice','utf8','template','toDisplayTitle','4WPrGVc','toUpperCase','getDate','default','Starting\x20template\x20content\x20replacement','3032973oHYTeF','YourModel','13lCcVdb','padStart','tableName','6NxGEvi','info','LOVRABET','mkdir','processTemplate','isFile','replace','pad','.json','pop','charAt','now','api','.tpl','datasetCode:\x20\x22','.scss','readdir','processDirectory','alias','18szpwou','1563001TSFfew','46hudJhN','1396888BTIupS','.tsx','.md','promises','getMinutes','Template\x20content\x20replacement\x20failed','join','endsWith','processFile','extname','name','10Lrdpmq','name:\x20\x22','copyFile','alias:\x20\x22','\x0a\x20\x20\x20\x20{\x20','.js','978965eEDGPV'];a291_0x1d77=function(){return _0x1c82a3;};return a291_0x1d77();}import a291_0x281489 from'node:path';import{logger}from'../utils/logger.js';import{getCliVersion}from'../utils/version.js';const CLI_VERSION=getCliVersion();export class TemplateReplacer{static['pad'](_0xce72e6){const _0x2e384a=a291_0x3be8;return String(_0xce72e6)[_0x2e384a(0xef)](0x2,'0');}static[a291_0x4fc2d7(0xdd)](_0x58c98d){const _0x87f4bd=a291_0x4fc2d7,_0x222c9e=_0x58c98d['getFullYear'](),_0x359e57=this['pad'](_0x58c98d['getMonth']()+0x1),_0x5b15a3=this[_0x87f4bd(0xad)](_0x58c98d[_0x87f4bd(0xe9)]()),_0x253a34=this[_0x87f4bd(0xad)](_0x58c98d[_0x87f4bd(0xdb)]()),_0x111e49=this['pad'](_0x58c98d[_0x87f4bd(0xc0)]()),_0x4bed8e=this[_0x87f4bd(0xad)](_0x58c98d['getSeconds']());return{'createdAt':_0x222c9e+'-'+_0x359e57+'-'+_0x5b15a3+'\x20'+_0x253a34+':'+_0x111e49+':'+_0x4bed8e,'createdDate':_0x222c9e+'-'+_0x359e57+'-'+_0x5b15a3,'createdTime':_0x253a34+':'+_0x111e49+':'+_0x4bed8e};}static['toComponentName'](_0x48f9df){const _0x539477=a291_0x4fc2d7,_0x4d817b=_0x48f9df[_0x539477(0xde)]('/')[_0x539477(0xaf)]()||_0x48f9df;return _0x4d817b[_0x539477(0xde)]('-')[_0x539477(0xcf)](_0x1dac92=>_0x1dac92[_0x539477(0xb0)](0x0)[_0x539477(0xe8)]()+_0x1dac92[_0x539477(0xe3)](0x1)[_0x539477(0xd6)]())[_0x539477(0xc2)]('');}static['toDisplayTitle'](_0x4aeed0){const _0x1536be=a291_0x4fc2d7,_0x559572=_0x4aeed0['split']('/')[_0x1536be(0xaf)]()||_0x4aeed0;return _0x559572[_0x1536be(0xde)]('-')[_0x1536be(0xcf)](_0x16523d=>_0x16523d[_0x1536be(0xb0)](0x0)[_0x1536be(0xe8)]()+_0x16523d[_0x1536be(0xe3)](0x1)[_0x1536be(0xd6)]())[_0x1536be(0xc2)]('\x20');}static['replaceContent'](_0xc9cac1,_0x230303,_0x573a5e){const _0x27e093=a291_0x4fc2d7,_0x1230a8=this[_0x27e093(0xda)](_0x230303),_0x13184b=this[_0x27e093(0xe6)](_0x230303),{createdAt:_0x2f74a3,createdDate:_0x463262,createdTime:_0x1dfe88}=this['formatLocalTimestamp'](new Date());let _0x3b7792=_0xc9cac1[_0x27e093(0xac)](/\{CliVersion\}/g,CLI_VERSION)[_0x27e093(0xac)](/\{ComponentName\}/g,_0x1230a8)[_0x27e093(0xac)](/\{DisplayTitle\}/g,_0x13184b)['replace'](/\{PageName\}/g,_0x230303)[_0x27e093(0xac)](/\{TemplateName\}/g,_0x573a5e)[_0x27e093(0xac)](/\{CreatedAt\}/g,_0x2f74a3)['replace'](/\{CreatedDate\}/g,_0x463262)['replace'](/\{CreatedTime\}/g,_0x1dfe88);return _0x3b7792;}static[a291_0x4fc2d7(0xe2)](_0x52f84e,_0x17fb23,_0x3f7aa8,_0x2a6587,_0x1a4492,_0x12898b,_0x20e94e,_0x1b882d){const _0x55ce00=a291_0x4fc2d7,_0x1e3b3d=new Date(),_0x28ddfa=_0x1e3b3d[_0x55ce00(0xd8)](),_0xbb401a=_0x3f7aa8[_0x55ce00(0xcf)](_0xc66862=>{const _0xadcfcf=_0x55ce00,_0x14b2d4=[_0xadcfcf(0xb4)+_0xc66862['datasetCode']+'\x22',_0xadcfcf(0xce)+_0xc66862[_0xadcfcf(0xa5)]+'\x22',_0xadcfcf(0xc8)+_0xc66862[_0xadcfcf(0xc6)]+'\x22'];return _0xc66862['alias']&&_0x14b2d4['push'](_0xadcfcf(0xca)+_0xc66862[_0xadcfcf(0xb8)]+'\x22'),_0xadcfcf(0xcb)+_0x14b2d4['join'](',\x20')+_0xadcfcf(0xdf);})[_0x55ce00(0xc2)](''),_0x3b8973=_0x2a6587||_0x3f7aa8[0x0]?.[_0x55ce00(0xb8)]||_0x55ce00(0xed);let _0xd6b3c1=_0x52f84e['replace'](/\{AppCode\}/g,_0x17fb23)[_0x55ce00(0xac)](/\{ModelConfigs\}/g,_0xbb401a)[_0x55ce00(0xac)](/\{ExampleModelName\}/g,_0x3b8973)['replace'](/\{ApiFileName\}/g,_0x1a4492||_0x55ce00(0xb2))['replace'](/\{ConfigName\}/g,_0x12898b||_0x55ce00(0xea))['replace'](/\{ClientConfigParam\}/g,_0x20e94e||'')[_0x55ce00(0xac)](/\{VarPrefix\}/g,_0x1b882d||_0x55ce00(0xa8))[_0x55ce00(0xac)](/\{CreatedAt\}/g,_0x28ddfa);return _0xd6b3c1;}static async[a291_0x4fc2d7(0xaa)](_0x120dc7,_0x5b9a25,_0x11c315,_0xc88bca,_0x3cb8a0=!![]){const _0x12d481=a291_0x4fc2d7,_0x29f5c0=Date[_0x12d481(0xb1)]();try{_0x3cb8a0&&logger[_0x12d481(0xa7)](_0x12d481(0xe5),_0x12d481(0xeb),{'templatePath':_0x120dc7,'targetPath':_0x5b9a25,'pageName':_0x11c315,'templateName':_0xc88bca});await a291_0x176f8b[_0x12d481(0xbf)][_0x12d481(0xa9)](_0x5b9a25,{'recursive':!![]}),await this[_0x12d481(0xb7)](_0x120dc7,_0x5b9a25,_0x11c315,_0xc88bca);if(_0x3cb8a0){const _0x1cb2d0=Date[_0x12d481(0xb1)]()-_0x29f5c0;logger[_0x12d481(0xe1)](_0x12d481(0xe5),_0x12d481(0xd7),_0x1cb2d0,{'pageName':_0x11c315,'templateName':_0xc88bca});}}catch(_0xdaddf6){if(_0x3cb8a0){const _0x34ef78=Date[_0x12d481(0xb1)]()-_0x29f5c0;logger[_0x12d481(0xd9)]('template',_0x12d481(0xc1),{'templatePath':_0x120dc7,'targetPath':_0x5b9a25,'pageName':_0x11c315,'templateName':_0xc88bca,'error':_0xdaddf6 instanceof Error?_0xdaddf6[_0x12d481(0xd3)]:String(_0xdaddf6),'duration':_0x34ef78});}throw _0xdaddf6;}}static async[a291_0x4fc2d7(0xb7)](_0x52f781,_0x71b009,_0x342571,_0xb529ee){const _0x5e5496=a291_0x4fc2d7,_0x1cf079=await a291_0x176f8b[_0x5e5496(0xbf)][_0x5e5496(0xb6)](_0x52f781,{'withFileTypes':!![]});for(const _0x33f805 of _0x1cf079){const _0x7031b6=a291_0x281489[_0x5e5496(0xc2)](_0x52f781,_0x33f805[_0x5e5496(0xc6)]);let _0x10f644=a291_0x281489[_0x5e5496(0xc2)](_0x71b009,_0x33f805[_0x5e5496(0xc6)]);_0x33f805[_0x5e5496(0xc6)][_0x5e5496(0xc3)](_0x5e5496(0xb3))&&(_0x10f644=a291_0x281489[_0x5e5496(0xc2)](_0x71b009,_0x33f805['name']['replace'](/\.tpl$/,'')));if(_0x33f805[_0x5e5496(0xe0)]())await a291_0x176f8b['promises'][_0x5e5496(0xa9)](_0x10f644,{'recursive':!![]}),await this[_0x5e5496(0xb7)](_0x7031b6,_0x10f644,_0x342571,_0xb529ee);else _0x33f805[_0x5e5496(0xab)]()&&await this['processFile'](_0x7031b6,_0x10f644,_0x342571,_0xb529ee);}}static async[a291_0x4fc2d7(0xc4)](_0x38b68a,_0xcfad3,_0x5e7cbf,_0x2bbd17){const _0x4c403c=a291_0x4fc2d7,_0x4fdcd1=a291_0x281489[_0x4c403c(0xc5)](_0x38b68a)[_0x4c403c(0xd6)]();_0x38b68a[_0x4c403c(0xc3)](_0x4c403c(0xb3))&&(_0xcfad3=_0xcfad3['replace'](/\.tpl$/,''));const _0x2bf23f=[_0x4c403c(0xbd),'.ts','.jsx',_0x4c403c(0xcc),_0x4c403c(0xae),_0x4c403c(0xbe),'.css',_0x4c403c(0xb5),_0x4c403c(0xb3)];if(_0x2bf23f[_0x4c403c(0xdc)](_0x4fdcd1)||_0x38b68a[_0x4c403c(0xc3)](_0x4c403c(0xb3))){const _0x4d02ea=await a291_0x176f8b[_0x4c403c(0xbf)][_0x4c403c(0xd0)](_0x38b68a,'utf8'),_0x55c02e=this[_0x4c403c(0xd4)](_0x4d02ea,_0x5e7cbf,_0x2bbd17);await a291_0x176f8b[_0x4c403c(0xbf)]['writeFile'](_0xcfad3,_0x55c02e,_0x4c403c(0xe4));}else await a291_0x176f8b[_0x4c403c(0xbf)][_0x4c403c(0xc9)](_0x38b68a,_0xcfad3);}}
@@ -1 +1 @@
1
- (function(_0x137671,_0x203371){const _0x410548=a291_0xed11,_0x219e7e=_0x137671();while(!![]){try{const _0x50b5e7=-parseInt(_0x410548(0x15f))/0x1+parseInt(_0x410548(0x175))/0x2*(parseInt(_0x410548(0x16c))/0x3)+-parseInt(_0x410548(0x167))/0x4+parseInt(_0x410548(0x168))/0x5*(-parseInt(_0x410548(0x160))/0x6)+-parseInt(_0x410548(0x16d))/0x7*(-parseInt(_0x410548(0x172))/0x8)+-parseInt(_0x410548(0x158))/0x9*(parseInt(_0x410548(0x16b))/0xa)+parseInt(_0x410548(0x157))/0xb;if(_0x50b5e7===_0x203371)break;else _0x219e7e['push'](_0x219e7e['shift']());}catch(_0x2ebf55){_0x219e7e['push'](_0x219e7e['shift']());}}}(a291_0x17a8,0x9469b));function a291_0xed11(_0x156163,_0x8bf335){_0x156163=_0x156163-0x157;const _0x17a888=a291_0x17a8();let _0xed11ed=_0x17a888[_0x156163];return _0xed11ed;}import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';import a291_0x2d8251 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 _0x4a204d=a291_0xed11,_0x4b81af=process.env.RABETBASE_NO_UPDATE_NOTICE?.[_0x4a204d(0x159)]()[_0x4a204d(0x173)]();return _0x4b81af==='1'||_0x4b81af===_0x4a204d(0x163)||_0x4b81af===_0x4a204d(0x15c);}function cacheRoot(){const _0x15fbf7=a291_0xed11;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x15fbf7(0x174));}export function getUpdateNoticeCachePath(){return join(cacheRoot(),'rabetbase-cli','update-check.json');}async function readUpdateNoticeCache(){const _0xd4e63b=a291_0xed11;try{const _0x38ac33=await readFile(getUpdateNoticeCachePath(),_0xd4e63b(0x16e)),_0x5c72bf=JSON[_0xd4e63b(0x15e)](_0x38ac33);if(!_0x5c72bf||typeof _0x5c72bf!==_0xd4e63b(0x162))return{};return _0x5c72bf;}catch{return{};}}async function writeUpdateNoticeCache(_0x435f25){const _0x14507e=a291_0xed11;try{const _0xb48be3=getUpdateNoticeCachePath();await mkdir(dirname(_0xb48be3),{'recursive':!![]}),await writeFile(_0xb48be3,JSON[_0x14507e(0x176)](_0x435f25,null,0x2)+'\x0a',_0x14507e(0x16e));}catch{}}function isFreshCheck(_0x5c967e,_0x47cfbc){const _0x192312=a291_0xed11;return typeof _0x5c967e[_0x192312(0x166)]===_0x192312(0x16f)&&_0x47cfbc-_0x5c967e[_0x192312(0x166)]<UPDATE_CHECK_TTL_MS;}function a291_0x17a8(){const _0x4d8d21=['valid','\x20available,\x20current\x20','yes','stableVersion','parse','207440Ijuxvz','5220hffQYY',',\x20run:\x20','object','true','\x20update','/v/','checkedAt','1207940YqsXHJ','4930rcBDPq','gte','https://www.npmjs.com/package/','11134810HqjJtg','2040216URvway','21yNDaUO','utf8','number','latest','lastNotifiedAt','1873896oLKXuQ','toLowerCase','.cache','2sMqFFJ','stringify','18764262GHyLdN','9eDlXpH','trim'];a291_0x17a8=function(){return _0x4d8d21;};return a291_0x17a8();}function isRecentlyNotified(_0x27888e,_0xd1212f,_0x255271){const _0x752807=a291_0xed11;return _0x27888e['lastNotifiedVersion']===_0xd1212f&&typeof _0x27888e['lastNotifiedAt']===_0x752807(0x16f)&&_0x255271-_0x27888e[_0x752807(0x171)]<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x172caa){const _0x4637a1=a291_0xed11;return _0x4637a1(0x16a)+NPM_PACKAGE_NAME+_0x4637a1(0x165)+_0x172caa;}export async function resolveLatestUpdateNotice(){const _0x42c46d=a291_0xed11;if(isUpdateNoticeDisabled())return null;try{const _0xafee2a=Date['now'](),_0x2e44fb=getCliVersion(),_0x1c8c6b=await readUpdateNoticeCache();let _0xe50eb8=isFreshCheck(_0x1c8c6b,_0xafee2a)?_0x1c8c6b[_0x42c46d(0x170)]?.[_0x42c46d(0x159)]():undefined;if(!_0xe50eb8&&!isFreshCheck(_0x1c8c6b,_0xafee2a)){const _0x448aed=await getCliVersionPolicy();_0xe50eb8=_0x448aed?.[_0x42c46d(0x15d)]?.['trim']()||undefined,await writeUpdateNoticeCache({..._0x1c8c6b,'checkedAt':_0xafee2a,'latest':_0xe50eb8,'failed':!_0xe50eb8});}if(!_0xe50eb8||!a291_0x2d8251[_0x42c46d(0x15a)](_0x2e44fb)||!a291_0x2d8251[_0x42c46d(0x15a)](_0xe50eb8))return null;if(a291_0x2d8251[_0x42c46d(0x169)](_0x2e44fb,_0xe50eb8))return null;if(isRecentlyNotified(_0x1c8c6b,_0xe50eb8,_0xafee2a))return null;const _0x3ef7e9=CLI_BIN_NAME+_0x42c46d(0x164);return await writeUpdateNoticeCache({..._0x1c8c6b,'checkedAt':isFreshCheck(_0x1c8c6b,_0xafee2a)?_0x1c8c6b[_0x42c46d(0x166)]:_0xafee2a,'latest':_0xe50eb8,'failed':![],'lastNotifiedVersion':_0xe50eb8,'lastNotifiedAt':_0xafee2a}),{'command':_0x3ef7e9,'current':_0x2e44fb,'latest':_0xe50eb8,'url':buildNpmVersionUrl(_0xe50eb8),'message':CLI_BIN_NAME+'\x20'+_0xe50eb8+_0x42c46d(0x15b)+_0x2e44fb+_0x42c46d(0x161)+_0x3ef7e9};}catch{return null;}}
1
+ (function(_0x11a391,_0x416cd3){const _0x55b3a3=a292_0x3a7e,_0x549195=_0x11a391();while(!![]){try{const _0x27cdde=parseInt(_0x55b3a3(0x1ff))/0x1*(-parseInt(_0x55b3a3(0x1f9))/0x2)+parseInt(_0x55b3a3(0x1ea))/0x3+parseInt(_0x55b3a3(0x1f5))/0x4*(-parseInt(_0x55b3a3(0x1e8))/0x5)+parseInt(_0x55b3a3(0x1e7))/0x6*(parseInt(_0x55b3a3(0x1e6))/0x7)+parseInt(_0x55b3a3(0x1fd))/0x8+-parseInt(_0x55b3a3(0x1ee))/0x9+parseInt(_0x55b3a3(0x1fb))/0xa*(-parseInt(_0x55b3a3(0x200))/0xb);if(_0x27cdde===_0x416cd3)break;else _0x549195['push'](_0x549195['shift']());}catch(_0x19fe77){_0x549195['push'](_0x549195['shift']());}}}(a292_0x1f9a,0xeff83));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';function a292_0x1f9a(){const _0x56965d=['rabetbase-cli','stableVersion','4494fgyMJZ','utf8','7311310dKIKHc','toLowerCase','11821056NRrsjG','/v/','194ULLiaR','11UXwnGc','number','yes','trim','latest',',\x20run:\x20','19474DfvisL','1566KrlZJn','45BlbFCG','lastNotifiedAt','3006711NqhKni','stringify','parse','true','6907932oUeaiJ','object','now','https://www.npmjs.com/package/','valid','\x20update','lastNotifiedVersion','128204zUvgUb','checkedAt'];a292_0x1f9a=function(){return _0x56965d;};return a292_0x1f9a();}function a292_0x3a7e(_0x33c9f1,_0x4baa4c){_0x33c9f1=_0x33c9f1-0x1e5;const _0x1f9ab4=a292_0x1f9a();let _0x3a7e53=_0x1f9ab4[_0x33c9f1];return _0x3a7e53;}import{dirname,join}from'node:path';import a292_0x375736 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 _0x413bf9=a292_0x3a7e,_0x67a742=process.env.RABETBASE_NO_UPDATE_NOTICE?.[_0x413bf9(0x203)]()[_0x413bf9(0x1fc)]();return _0x67a742==='1'||_0x67a742===_0x413bf9(0x1ed)||_0x67a742===_0x413bf9(0x202);}function cacheRoot(){return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),'.cache');}export function getUpdateNoticeCachePath(){const _0x270dc3=a292_0x3a7e;return join(cacheRoot(),_0x270dc3(0x1f7),'update-check.json');}async function readUpdateNoticeCache(){const _0x4a5321=a292_0x3a7e;try{const _0x369bc6=await readFile(getUpdateNoticeCachePath(),_0x4a5321(0x1fa)),_0x3f28e8=JSON[_0x4a5321(0x1ec)](_0x369bc6);if(!_0x3f28e8||typeof _0x3f28e8!==_0x4a5321(0x1ef))return{};return _0x3f28e8;}catch{return{};}}async function writeUpdateNoticeCache(_0x1666fa){const _0x278963=a292_0x3a7e;try{const _0x582a57=getUpdateNoticeCachePath();await mkdir(dirname(_0x582a57),{'recursive':!![]}),await writeFile(_0x582a57,JSON[_0x278963(0x1eb)](_0x1666fa,null,0x2)+'\x0a',_0x278963(0x1fa));}catch{}}function isFreshCheck(_0x4f9f5b,_0x43f501){const _0x257548=a292_0x3a7e;return typeof _0x4f9f5b['checkedAt']===_0x257548(0x201)&&_0x43f501-_0x4f9f5b[_0x257548(0x1f6)]<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x320cbd,_0x3c486c,_0x51742c){const _0xbd090d=a292_0x3a7e;return _0x320cbd[_0xbd090d(0x1f4)]===_0x3c486c&&typeof _0x320cbd[_0xbd090d(0x1e9)]===_0xbd090d(0x201)&&_0x51742c-_0x320cbd['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x57f334){const _0x141252=a292_0x3a7e;return _0x141252(0x1f1)+NPM_PACKAGE_NAME+_0x141252(0x1fe)+_0x57f334;}export async function resolveLatestUpdateNotice(){const _0x5e8c1c=a292_0x3a7e;if(isUpdateNoticeDisabled())return null;try{const _0x342ef0=Date[_0x5e8c1c(0x1f0)](),_0x189b4f=getCliVersion(),_0x48f59e=await readUpdateNoticeCache();let _0x30e45f=isFreshCheck(_0x48f59e,_0x342ef0)?_0x48f59e[_0x5e8c1c(0x204)]?.[_0x5e8c1c(0x203)]():undefined;if(!_0x30e45f&&!isFreshCheck(_0x48f59e,_0x342ef0)){const _0x298a09=await getCliVersionPolicy();_0x30e45f=_0x298a09?.[_0x5e8c1c(0x1f8)]?.[_0x5e8c1c(0x203)]()||undefined,await writeUpdateNoticeCache({..._0x48f59e,'checkedAt':_0x342ef0,'latest':_0x30e45f,'failed':!_0x30e45f});}if(!_0x30e45f||!a292_0x375736[_0x5e8c1c(0x1f2)](_0x189b4f)||!a292_0x375736[_0x5e8c1c(0x1f2)](_0x30e45f))return null;if(a292_0x375736['gte'](_0x189b4f,_0x30e45f))return null;if(isRecentlyNotified(_0x48f59e,_0x30e45f,_0x342ef0))return null;const _0x4d1dd4=CLI_BIN_NAME+_0x5e8c1c(0x1f3);return await writeUpdateNoticeCache({..._0x48f59e,'checkedAt':isFreshCheck(_0x48f59e,_0x342ef0)?_0x48f59e[_0x5e8c1c(0x1f6)]:_0x342ef0,'latest':_0x30e45f,'failed':![],'lastNotifiedVersion':_0x30e45f,'lastNotifiedAt':_0x342ef0}),{'command':_0x4d1dd4,'current':_0x189b4f,'latest':_0x30e45f,'url':buildNpmVersionUrl(_0x30e45f),'message':CLI_BIN_NAME+'\x20'+_0x30e45f+'\x20available,\x20current\x20'+_0x189b4f+_0x5e8c1c(0x1e5)+_0x4d1dd4};}catch{return null;}}
@@ -1 +1 @@
1
- (function(_0x594097,_0x4d89c3){var _0x4a2cc9=a292_0x4655,_0x47c703=_0x594097();while(!![]){try{var _0xf83b22=-parseInt(_0x4a2cc9(0xab))/0x1*(-parseInt(_0x4a2cc9(0xa9))/0x2)+-parseInt(_0x4a2cc9(0xaa))/0x3+-parseInt(_0x4a2cc9(0xa8))/0x4*(-parseInt(_0x4a2cc9(0xae))/0x5)+parseInt(_0x4a2cc9(0xa7))/0x6+-parseInt(_0x4a2cc9(0xb0))/0x7*(-parseInt(_0x4a2cc9(0xad))/0x8)+-parseInt(_0x4a2cc9(0xaf))/0x9+parseInt(_0x4a2cc9(0xac))/0xa*(-parseInt(_0x4a2cc9(0xb1))/0xb);if(_0xf83b22===_0x4d89c3)break;else _0x47c703['push'](_0x47c703['shift']());}catch(_0x32c7cc){_0x47c703['push'](_0x47c703['shift']());}}}(a292_0x4bc1,0x9d295));function a292_0x4bc1(){var _0x9cff65=['6ShDVaO','559341VMNIkH','342807rEchlK','40sGaTlv','10091240SdSoUi','3920WGTmDR','7707474ppeGzp','7QVwFxk','5025614EApYey','3789192akiUVa','3024JHQNJC'];a292_0x4bc1=function(){return _0x9cff65;};return a292_0x4bc1();}function a292_0x4655(_0xc817a9,_0x4137fe){_0xc817a9=_0xc817a9-0xa7;var _0x4bc1b0=a292_0x4bc1();var _0x465560=_0x4bc1b0[_0xc817a9];return _0x465560;}import{VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}
1
+ (function(_0x437771,_0x2542ce){var _0x43acb4=a293_0x2535,_0x23e2d0=_0x437771();while(!![]){try{var _0x22684b=-parseInt(_0x43acb4(0xff))/0x1*(parseInt(_0x43acb4(0xf6))/0x2)+parseInt(_0x43acb4(0xf7))/0x3+-parseInt(_0x43acb4(0xfb))/0x4+-parseInt(_0x43acb4(0xfc))/0x5*(parseInt(_0x43acb4(0xfe))/0x6)+-parseInt(_0x43acb4(0xfd))/0x7*(-parseInt(_0x43acb4(0xfa))/0x8)+-parseInt(_0x43acb4(0xf8))/0x9+-parseInt(_0x43acb4(0xf9))/0xa*(-parseInt(_0x43acb4(0x100))/0xb);if(_0x22684b===_0x2542ce)break;else _0x23e2d0['push'](_0x23e2d0['shift']());}catch(_0x5b7593){_0x23e2d0['push'](_0x23e2d0['shift']());}}}(a293_0x28dc,0x5656b));import{VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}function a293_0x2535(_0x2f5fcf,_0x3cb8cf){_0x2f5fcf=_0x2f5fcf-0xf6;var _0x28dc7f=a293_0x28dc();var _0x253500=_0x28dc7f[_0x2f5fcf];return _0x253500;}function a293_0x28dc(){var _0x4ab78d=['597700xhEVqY','773576sRYFVg','1290204NfuDrr','4710stFBZz','49cTdyTQ','78DaODyB','25mQgZHK','143XCKaYX','40226pNKKGk','472821yEDbHb','3782079nfZDPT'];a293_0x28dc=function(){return _0x4ab78d;};return a293_0x28dc();}
@@ -1 +1 @@
1
- (function(_0x27b718,_0x32563a){var _0xa9f0e7=a293_0x57fb,_0x50e77a=_0x27b718();while(!![]){try{var _0x2c39ec=parseInt(_0xa9f0e7(0x194))/0x1*(parseInt(_0xa9f0e7(0x18c))/0x2)+parseInt(_0xa9f0e7(0x18d))/0x3+-parseInt(_0xa9f0e7(0x191))/0x4*(parseInt(_0xa9f0e7(0x192))/0x5)+parseInt(_0xa9f0e7(0x18e))/0x6*(parseInt(_0xa9f0e7(0x18f))/0x7)+parseInt(_0xa9f0e7(0x190))/0x8+-parseInt(_0xa9f0e7(0x195))/0x9+parseInt(_0xa9f0e7(0x193))/0xa;if(_0x2c39ec===_0x32563a)break;else _0x50e77a['push'](_0x50e77a['shift']());}catch(_0x50e6a4){_0x50e77a['push'](_0x50e77a['shift']());}}}(a293_0x2fd4,0x2d974));function a293_0x57fb(_0xe435cc,_0x138405){_0xe435cc=_0xe435cc-0x18c;var _0x2fd458=a293_0x2fd4();var _0x57fb28=_0x2fd458[_0xe435cc];return _0x57fb28;}import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';function a293_0x2fd4(){var _0x2c2846=['188jsjUTO','323184Gojxeq','6siljVm','595777sLqaih','82776HzhNcc','1186924jlPjaP','5uCjYYN','933570EWLxRD','3013oEsOaH','866646aieQRK'];a293_0x2fd4=function(){return _0x2c2846;};return a293_0x2fd4();}export async function withActiveCookie(_0x4e509d,_0x1082b6){setActiveCookie(_0x4e509d);try{return await _0x1082b6();}finally{clearActiveCookie();}}
1
+ function a294_0x41b4(_0x226c3a,_0x87bfba){_0x226c3a=_0x226c3a-0x108;var _0x3e9b1a=a294_0x3e9b();var _0x41b4cc=_0x3e9b1a[_0x226c3a];return _0x41b4cc;}(function(_0x35bfa7,_0x525505){var _0x4354b4=a294_0x41b4,_0x331a52=_0x35bfa7();while(!![]){try{var _0x3de9d5=parseInt(_0x4354b4(0x109))/0x1+-parseInt(_0x4354b4(0x10b))/0x2+parseInt(_0x4354b4(0x108))/0x3*(parseInt(_0x4354b4(0x10f))/0x4)+parseInt(_0x4354b4(0x10d))/0x5+-parseInt(_0x4354b4(0x110))/0x6*(parseInt(_0x4354b4(0x10e))/0x7)+-parseInt(_0x4354b4(0x10c))/0x8+parseInt(_0x4354b4(0x10a))/0x9;if(_0x3de9d5===_0x525505)break;else _0x331a52['push'](_0x331a52['shift']());}catch(_0x248406){_0x331a52['push'](_0x331a52['shift']());}}}(a294_0x3e9b,0xd1d02));import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';export async function withActiveCookie(_0x474625,_0x2cc196){setActiveCookie(_0x474625);try{return await _0x2cc196();}finally{clearActiveCookie();}}function a294_0x3e9b(){var _0xd5b52e=['2011062EVxxoP','7783408jCjCRF','645925EDZGDp','23037GuPIjv','8VxypHr','558zyUyiQ','1013658oBpvZC','277606MPkOmq','18552159oOdUFA'];a294_0x3e9b=function(){return _0xd5b52e;};return a294_0x3e9b();}
@@ -1 +1 @@
1
- function a294_0x27ca(_0x6fec0e,_0x5ccef4){_0x6fec0e=_0x6fec0e-0x15e;var _0x3efb79=a294_0x3efb();var _0x27ca74=_0x3efb79[_0x6fec0e];return _0x27ca74;}function a294_0x3efb(){var _0x1a8f98=['4uskQOI','606TNZOXs','86499eIbnRb','4379967uEUsIV','1514127qMuZWD','55870kkTcQV','28202779ugwZpD','7525150WjMBCy','1753558aqNkht','1XhjRTg','16ovTlEv'];a294_0x3efb=function(){return _0x1a8f98;};return a294_0x3efb();}(function(_0x529efd,_0x29047b){var _0x5c4f19=a294_0x27ca,_0x1daf12=_0x529efd();while(!![]){try{var _0x2793b2=-parseInt(_0x5c4f19(0x15e))/0x1*(-parseInt(_0x5c4f19(0x168))/0x2)+-parseInt(_0x5c4f19(0x164))/0x3*(parseInt(_0x5c4f19(0x160))/0x4)+-parseInt(_0x5c4f19(0x165))/0x5*(parseInt(_0x5c4f19(0x161))/0x6)+-parseInt(_0x5c4f19(0x162))/0x7*(-parseInt(_0x5c4f19(0x15f))/0x8)+-parseInt(_0x5c4f19(0x163))/0x9+-parseInt(_0x5c4f19(0x167))/0xa+parseInt(_0x5c4f19(0x166))/0xb;if(_0x2793b2===_0x29047b)break;else _0x1daf12['push'](_0x1daf12['shift']());}catch(_0x45c42b){_0x1daf12['push'](_0x1daf12['shift']());}}}(a294_0x3efb,0x90c19));export function writeCliSideChannelLine(_0x588a21){process['stderr']['write'](_0x588a21+'\x0a');}
1
+ function a295_0x2dd3(_0x470480,_0x111e21){_0x470480=_0x470480-0x1a6;var _0x3fa145=a295_0x3fa1();var _0x2dd33b=_0x3fa145[_0x470480];return _0x2dd33b;}(function(_0x52367e,_0x3b3950){var _0x592222=a295_0x2dd3,_0x10c89e=_0x52367e();while(!![]){try{var _0x1302c5=-parseInt(_0x592222(0x1af))/0x1*(parseInt(_0x592222(0x1a8))/0x2)+-parseInt(_0x592222(0x1ae))/0x3*(parseInt(_0x592222(0x1b2))/0x4)+parseInt(_0x592222(0x1ad))/0x5*(parseInt(_0x592222(0x1b0))/0x6)+-parseInt(_0x592222(0x1ab))/0x7+-parseInt(_0x592222(0x1a6))/0x8+parseInt(_0x592222(0x1b1))/0x9*(parseInt(_0x592222(0x1a7))/0xa)+parseInt(_0x592222(0x1ac))/0xb;if(_0x1302c5===_0x3b3950)break;else _0x10c89e['push'](_0x10c89e['shift']());}catch(_0x47fff1){_0x10c89e['push'](_0x10c89e['shift']());}}}(a295_0x3fa1,0xada25));function a295_0x3fa1(){var _0x1618fa=['stderr','write','1287566hLJJmR','42388819VKFkdu','5BLmkYl','100185aHerYO','1AaFpby','191190RmKdQE','18vEnixR','156ZFiXDh','4785128DkLZmO','292460msZVrv','2296394FpnpTZ'];a295_0x3fa1=function(){return _0x1618fa;};return a295_0x3fa1();}export function writeCliSideChannelLine(_0x4e65d7){var _0x4ee32b=a295_0x2dd3;process[_0x4ee32b(0x1a9)][_0x4ee32b(0x1aa)](_0x4e65d7+'\x0a');}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/rabetbase-cli",
3
- "version": "2.5.0-beta.2",
3
+ "version": "2.5.0-beta.4",
4
4
  "description": "Developer CLI for Lovrabet apps, datasets, pages, SQL, Backend Function, 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.5.0-beta.2
4
- description: "Lovrabet 开发工作流 CLI — 通过 rabetbase 命令管理数据集、数据库连接(dblink)、数据列表页(Data List Page)、自定义页面(Custom Page)、SQL 查询、Backend Function 脚本、通知配置、企业知识库、菜单事实读取与同步、开发角色与协作者、应用文件、面向票证类业务材料文字与结构化字段提取的 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 消息通知、Backend Function 消息通知、notification config-list、EMAIL configCode、通知配置、notification.send、企业知识库、公司知识、公共知识、kb search、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、钉钉沙箱账号绑定。"
3
+ version: 2.5.0-beta.4
4
+ description: "Lovrabet 开发工作流 CLI — 通过 rabetbase 命令管理数据集、数据库连接(dblink)、数据列表页(Data List Page)、自定义页面(Custom Page)、SQL 查询、Backend Function 脚本、通知配置、企业知识库、菜单事实读取与同步、开发角色与协作者、应用文件、面向票证类业务材料文字与结构化字段提取的 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-refresh-start、db diff-refresh-status、db analyze-batch-plan、db analyze-start、analyze-cancel、analyze-status、traceId、自定义 SQL、sql.execute、bff.execute、BF 消息通知、Backend Function 消息通知、notification config-list、EMAIL configCode、通知配置、notification.send、企业知识库、公司知识、公共知识、kb search、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"]
@@ -53,8 +53,8 @@ metadata:
53
53
  - 需要了解数据集关联关系时用 `rabetbase dataset relations --format compress`(或 `json`);需要审计关系事实错误和人工复核项时用 `rabetbase dataset relation-audit --format compress`
54
54
  - 需要从文本需求创建新的 `METADATA` 数据集时,先读 [`dataset generate-start/status`](references/rabetbase-dataset-generate.md),执行 preview 写出 design 文件,审阅后用 `generate-start --apply --design-file` 提交任务,再用 `generate-status` 查询到成功
55
55
  - **管理物理库连接 / 测连 / 同步表结构分析**时用 `rabetbase db …`(先 [`db list`](references/rabetbase-db-list.md),trace/plan id 见 [`database-connection-workflow.md`](guides/database-connection-workflow.md))
56
- - DBAgent 增量分析默认先执行一次异步差异刷新:调用 `db diff-refresh-start`,保存 traceId,并用 `db diff-refresh-status` 查询同一任务到终态,成功后再执行 `db diff --all --changed-only`。无论 `tableCount` 大小都执行刷新;只有用户明确表示“不需要分析”“不刷新”或“只看现有结果”时才跳过异步刷新,并说明结果可能不是最新事实
57
- - 需要查看无差异表或主动重新分析既有表时,用 `db diff --view all`;`--all` 只表示聚合当前视角全部分页,不等价于全部表
56
+ - DBAgent 增量分析默认先执行一次异步差异刷新:调用 `db diff-refresh-start`,保存 traceId,并用 `db diff-refresh-status` 查询同一任务到终态;成功后按原始意图执行 `db diff --all`(差异表)或 `db tables`(全部表)。无论 `tableCount` 大小都执行刷新;只有用户明确表示“不需要分析”“不刷新”或“只看现有结果”时才跳过异步刷新,并说明结果可能不是最新事实
57
+ - 需要查看全部表(含无差异表)或主动重新分析既有表时,用 `db tables`;它固定聚合全表分页。`db diff --all` 只聚合全部差异分页
58
58
  - DB 增量分析先对完整 `toAnalyzeTables` 执行 `db analyze-batch-plan`;它生成的是本地批次方案,不是服务端 `planId`,也不会创建任务。再严格按批次顺序启动;每批独立保存 `planId`(即 `analyze-start` 返回值),当前批次到达已知终态前不得启动下一批
59
59
  - 全部批次结束后再次执行异步差异刷新并重新获取完整差异;仍未收敛时,按 [`database-connection-workflow.md`](guides/database-connection-workflow.md) 对剩余 `toAnalyzeTables` 逐表串行重试且每表只恢复一次。仅当用户明确要求跳过分析/刷新时直接读取现有差异。状态查询失败继续使用原 `planId`,不得重复启动任务
60
60
  - 输出很大且只需子集时,在 `compress`/`json` 上加 `--jq '.data…'` 缩小结果
@@ -132,13 +132,13 @@ metadata:
132
132
  与 **`dataset`(数据集模型)** 的分工:**`db *`** 管平台登记的 **物理库连接(dblink)**、**测连**、**schema 分析任务**、**物理表清单与差异**;表字段、枚举以 **`dataset detail`** 为准,数据集关联关系优先以 **`dataset relations`** 为准,关系事实风险用 **`dataset relation-audit`**。
133
133
 
134
134
  - **入口**:先 [`db list`](references/rabetbase-db-list.md) 取 `id` 与 `latestAnalysisTraceId`(如有)。
135
- - **只读常用**:[`db detail`](references/rabetbase-db-detail.md)、[`db test`](references/rabetbase-db-test.md)、[`db tables`](references/rabetbase-db-tables.md)、[`db diff`](references/rabetbase-db-diff.md)。`db diff` 默认只读差异结果;`--view all` 才是实时全部表视角;`--all` 只聚合当前视角全部分页。
135
+ - **只读常用**:[`db detail`](references/rabetbase-db-detail.md)、[`db test`](references/rabetbase-db-test.md)、[`db tables`](references/rabetbase-db-tables.md)、[`db diff`](references/rabetbase-db-diff.md)。`db tables` 固定聚合全部表及分析状态;`db diff` 只读差异结果,`--all` 只聚合全部差异分页。
136
136
  - **差异刷新**:[`db diff-refresh-start/status`](references/rabetbase-db-diff-refresh.md)。CLI 发起 DBAgent 增量分析时,无论 `tableCount` 多少或是否缺失,默认先刷新再读取差异;只有用户明确要求跳过分析/刷新时才直接读取现有结果。刷新与 schema `analyze-*` 是两类任务,不得混用。
137
137
  - **分析任务**:`db analyze-batch-plan` / `analyze-start` / `analyze-cancel` / `analyze-status`(服务端 plan/trace 来源见下)。
138
138
  - **状态诊断边界**:`analyze-status` 的 `requestedAnalysis` 只还原原始提交范围;`hasMultipleAttempts=true` 只表示观察到多个执行尝试。不得据此推断尝试间连续性、实际执行范围或自动重启。
139
139
  - **增量分批**:先用本地只读的 `db analyze-batch-plan --id <id> --tables <清单>` 得到确定性批次及 `planningEstimate`;这里生成的是本地批次方案,不是服务端 `planId`,不会创建或预留任务。再逐批调用一次 `analyze-start`,读取真实 `planId` 与当前任务的 `serverEstimate`;每批独立保存其返回的 `planId`,同一 dblink 严格串行。两类估算都不得驱动超时、取消、重试、自动重启或状态判断,`PENDING / RUNNING / RETRYING / CANCELING` 均不得推进下一批。
140
140
  - **取消已有任务**:只使用正在跟踪的原 `planId` 执行 `analyze-cancel --plan <原 planId>`;取消分支不得调用 `analyze-start`,也不得用可能变化的 `latestAnalysisTraceId` 替换已知目标。
141
- - **失败恢复**:全部批次结束后默认再次异步刷新,再读取完整 `db diff --all --changed-only` 获取未收敛表;只有用户明确要求跳过分析/刷新时才直接读取。随后逐表串行执行 `analyze-start --tables <单表>`,每表只恢复一次;累计原因计数只作可能不完整的参考展示。Agent 可语义理解原始 `errorMsg` 辅助解释和建议,但两者都不驱动任务状态、重提任务或收敛判断。
141
+ - **失败恢复**:全部批次结束后默认再次异步刷新,再读取完整 `db diff --all` 获取未收敛表;只有用户明确要求跳过分析/刷新时才直接读取。随后逐表串行执行 `analyze-start --tables <单表>`,每表只恢复一次;累计原因计数只作可能不完整的参考展示。Agent 可语义理解原始 `errorMsg` 辅助解释和建议,但两者都不驱动任务状态、重提任务或收敛判断。
142
142
  - **ER 图引导**:`db analyze-status` 终态成功后,检查并转述 `data.links.erPage`;若没有 `data.links`,补 `--appcode` 或进入已配置 app 的项目上下文后重查。
143
143
  - **写入**:[`db create`](references/rabetbase-db-create.md) / [`db update`](references/rabetbase-db-update.md) 默认先测试未保存配置,只有显式 `--skip-connection-test` 才跳过;[`db delete`](references/rabetbase-db-delete.md) 必须先 dry-run,执行前重新检查 DB_TABLE Dataset 依赖,有依赖即阻止且无 force。三者都支持 **`--dry-run`**。
144
144
  - **横切流程与 trace/plan**:[`database-connection-workflow.md`](guides/database-connection-workflow.md)。**单命令细则**见 `references/rabetbase-db-*.md`(与仓库 `src/commands/db/` 一一对应)。
@@ -29,7 +29,7 @@
29
29
 
30
30
  ### 查找或修改已有页面
31
31
 
32
- 1. 未知页面 ID 时,先阅读 [`rabetbase-page-custom-list.md`](../references/rabetbase-page-custom-list.md),执行 `page custom-list --appcode <appCode>`
32
+ 1. 未知页面 ID 时,先阅读 [`rabetbase-page-custom-list.md`](../references/rabetbase-page-custom-list.md),执行 `page custom-list`;仅在跨应用或覆盖工作区默认应用时传 `--appcode <appCode>`
33
33
  2. 根据 `data.pages[].pageId` 与 `label` 与用户确认目标页面;`data.pages[].pageUrl` 用于查看最新保存内容,`data.pages[].editPageUrl` 用于打开页面编辑器
34
34
  3. 阅读 [`rabetbase-page-custom-detail.md`](../references/rabetbase-page-custom-detail.md),执行 `page custom-detail --id <pageId>`
35
35
  4. 只在返回的最新 `data.codeContent` 基础上编辑,不得根据旧缓存或猜测覆盖文件
@@ -10,7 +10,7 @@
10
10
  | 改连接串 / 账号 | 更新已有连接,避免在界面点来点去 |
11
11
  | 验证网络与白名单 | **测连**确认研发环境能打到库 |
12
12
  | 同步结构到 Lovrabet | **分析任务**把表结构同步到平台;可看进度、取消 |
13
- | 看物理表与差异 | **tables / diff** 在写 SQL、对表前确认真实库状态 |
13
+ | 看全部表与差异 | **tables** 查询全部表,**diff** 只查询差异表 |
14
14
 
15
15
  **与 `dataset` 的区别**:`dataset detail` 里的 `dbId` 来自数据集绑定;**`db list` 的 `id` 是 dblink 主键**,二者数值上通常一致,但 **CLI 管连接用 `db *`,管模型用 `dataset *`**。
16
16
 
@@ -48,18 +48,18 @@ trace/plan → 见下一节(分析任务专用)
48
48
  → 无论 tableCount 多少或是否缺失,都走“刷新后读取”
49
49
 
50
50
  直接读取:
51
- db diff --id <id> --all --changed-only
51
+ db diff --id <id> --all
52
52
 
53
53
  刷新后读取:
54
54
  db diff-refresh-start --id <id>
55
55
  → 只提交一次,保存 data.traceId
56
56
  db diff-refresh-status --id <id> --plan <同一 traceId>
57
57
  → 非终态只重复查询同一 traceId
58
- → SUCCESS 后执行 data.lookup.command
58
+ → SUCCESS 后按原始意图执行 db diff --all(差异表)或 db tables(全部表)
59
59
  → FAILED / CANCELLED 停止,不自动重提
60
60
  ```
61
61
 
62
- CLI 不再依据 `tableCount` 推断异步刷新是否值得执行。默认通过一次可跟踪的异步任务取得最新差异事实,避免小库、数量未知或服务端实现变化时沿用旧快照。`db diff --view all` 是实时全部表分页,用于查看无差异表或主动重新分析已有表;但在 DBAgent 增量分析工作流中,仍按上述默认策略先完成异步差异刷新,除非用户明确要求跳过。
62
+ CLI 不再依据 `tableCount` 推断异步刷新是否值得执行。默认通过一次可跟踪的异步任务取得最新差异事实,避免小库、数量未知或服务端实现变化时沿用旧快照。刷新后用 `db diff` 查询差异表;需要查看无差异表或主动重新分析已有表时用 `db tables`。只有用户明确要求跳过时才直接读取现有结果。
63
63
 
64
64
  差异刷新与 schema 分析是两个独立任务:`diff-refresh-*` 只刷新差异事实,`analyze-*` 才把选中表同步为数据集。两类 traceId 不得混用。
65
65
 
@@ -105,7 +105,7 @@ db analyze-status --id <id> --plan <planId> # 轮询直到终态
105
105
 
106
106
  ```text
107
107
  db detail --id <id>
108
- 按“差异读取策略”默认刷新后执行 db diff --id <id> --all --changed-only
108
+ 按“差异读取策略”默认刷新后执行 db diff --id <id> --all
109
109
  → 只取 data.toAnalyzeTables;用户要求跳过的表先从列表中剔除
110
110
  db analyze-batch-plan --id <id> --tables <toAnalyzeTables> --format compress
111
111
  → 保存 data.batches;这是本地 batch plan,不是服务端任务 plan
@@ -127,7 +127,7 @@ db analyze-batch-plan --id <id> --tables <toAnalyzeTables> --format compress
127
127
  → 未知状态:停止自动推进并报告,不猜测为终态
128
128
 
129
129
  全部批次处理完毕:
130
- 按“差异读取策略”默认刷新后执行 db diff --id <id> --all --changed-only
130
+ 按“差异读取策略”默认刷新后执行 db diff --id <id> --all
131
131
  → 重新读取完整事实;目标差异收敛后才算本轮分析完成
132
132
  → 仍未收敛则只对剩余非删除表进入下面的逐表恢复
133
133
  ```
@@ -143,8 +143,8 @@ db analyze-batch-plan --id <id> --tables <toAnalyzeTables> --format compress
143
143
  → 到达终态后才处理下一张表
144
144
 
145
145
  全部单表任务结束后:
146
- 按“差异读取策略”默认刷新后执行 db diff --id <id> --all --changed-only
147
- → 以最终 `db diff --all --changed-only` 的 data.toAnalyzeTables 判断是否收敛
146
+ 按“差异读取策略”默认刷新后执行 db diff --id <id> --all
147
+ → 以最终 `db diff --all` 的 data.toAnalyzeTables 判断是否收敛
148
148
  → 已尝试的剩余表只恢复一次,不再次循环提交
149
149
  ```
150
150
 
@@ -185,7 +185,7 @@ db delete --id <id> --expected-dataset-count 0 --confirm --yes
185
185
 
186
186
  - **写 SQL 前要 `dbId`**:`dataset detail --code …` 里 `db.id`;或 `db list` 的 `id` 与数据集侧 `dbId` 对应。
187
187
  - **看模型关系**:用 `dataset relations`;物理库连接和表清单仍用 `db list` / `db tables` 对照。
188
- - **查看所有数据表**:使用 `db diff --view all`;默认 `db diff` 只读取差异结果。
188
+ - **查看所有数据表**:使用 `db tables`,它自动聚合全部分页;`db diff` 只读取差异结果。
189
189
  - **给用户确认页面**:DB 更新或分析完成后返回 `data.links.erPage`;新建连接后返回 `data.links.databasePage`。
190
190
  - **不确定 flags**:`rabetbase schema`(无需登录)查契约。
191
191
 
@@ -99,7 +99,7 @@ CLI 对旧版顶层 `appcode` 仍兼容读取,但它已经不是推荐主模
99
99
  }
100
100
  ```
101
101
 
102
- 每个 app profile 可单独覆盖普通顶层字段。唯一 app 自动激活;两个及以上 app 必须通过 `--app <name>` 临时选择,或用 `defaultApp` 持久选择,CLI 不按 JSON key 顺序猜测。`riskLevel` 是安全例外:默认值为 `write`,全局、项目与 profile 决定基础上限并取最严格值;环境变量只能继续收紧,不能提权。权限不足时只能提醒用户手动编辑配置;Agent 和自动化脚本不得自行修改 `riskLevel` 或尝试提权。
102
+ 每个 app profile 可单独覆盖普通顶层字段。唯一 app 自动激活;两个及以上 app 必须通过 `--app <name>` 临时选择,或用 `defaultApp` 持久选择,CLI 不按 JSON key 顺序猜测。`riskLevel` 是安全例外:默认值为 `write`,全局、项目与 profile 决定基础上限并取最严格值。权限不足时停止执行并请求授权人员处理;Agent 和自动化脚本不得自行修改 `riskLevel`、配置文件、环境变量或尝试提权。
103
103
 
104
104
  管理命令(声明式 flags,非位置参数):
105
105
 
@@ -124,7 +124,7 @@ rabetbase workspace remove product --yes
124
124
  | `accessKey` | string | — | Access Key 认证(预留,未来替代 cookie) |
125
125
  | `format` | string | — | 默认输出格式。可选值:`json`、`pretty`、`compress`。不设则命令默认 `compress` |
126
126
  | `pageSize` | number | — | 默认分页大小,用于 `sql list` 等分页命令 |
127
- | `riskLevel` | string | `"write"` | 允许执行的最高风险等级。可选值:`read`、`write`、`high-risk-write`。兼容旧名 `maxRisk` |
127
+ | `riskLevel` | string | `"write"` | 允许执行的最高风险等级。可选值:`read`、`write`、`high-risk-write` |
128
128
  | `apiDir` | string | `"./src/api"` | `api pull` 生成代码的输出目录 |
129
129
  | `region` | string | `"cn"`(省略) | 当前开放的官方节点快捷配置:`cn`、`id` |
130
130
  | `template_base_url` | string | 平台默认 CDN | 模板 CDN 基础 URL,一般无需修改 |
@@ -181,7 +181,6 @@ CLI flag (--appcode, --env, --format, --app ...)
181
181
  | `RABETBASE_ACCESS_KEY` | `accessKey` | Access Key |
182
182
  | `RABETBASE_FORMAT` | `format` | 输出格式 |
183
183
  | `RABETBASE_PAGE_SIZE` | `pageSize` | 分页大小 |
184
- | `RABETBASE_RISK_LEVEL` | `riskLevel` | 临时风险上限,只能收紧,不能提权 |
185
184
  | `RABETBASE_VERBOSE` | — | 全局 verbose 开关(`1` 或 `true` 启用),仅环境变量,不支持配置文件 |
186
185
  | `RABETBASE_APP` | — | 无项目显式选择时的临时应用名 fallback(显式切换优先用 `--app`) |
187
186
 
@@ -70,7 +70,7 @@ rabetbase db analyze-status --id 10157 --plan <traceId> --format compress
70
70
 
71
71
  必须按 `index` 严格串行:每批独立调用一次 `analyze-start`,并保存一个独立 `planId`。当前批次为 `PENDING / RUNNING / RETRYING / CANCELING` 时继续查询同一 planId;`SUCCESS` 才直接进入下一批;`PARTIAL_SUCCESS` 记录失败事实后继续;`FAILED / CANCELLED` 停止整个批次编排;未知状态停止自动推进。
72
72
 
73
- 如果 `analyze-start` 没有明确返回 `data.planId`,停止自动推进且不得盲目重试,因为请求结果可能不确定。全部批次结束后默认执行 `db diff-refresh-start/status`,再执行完整 `db diff --all --changed-only`,不根据 `tableCount` 跳过异步刷新;只有用户明确要求不分析、不刷新或只看现有结果时才直接读取。只对仍在 `data.toAnalyzeTables` 的非删除表逐表串行恢复一次,最后按同一策略再读取一次完整 diff。
73
+ 如果 `analyze-start` 没有明确返回 `data.planId`,停止自动推进且不得盲目重试,因为请求结果可能不确定。全部批次结束后默认执行 `db diff-refresh-start/status`,再执行完整 `db diff --all`,不根据 `tableCount` 跳过异步刷新;只有用户明确要求不分析、不刷新或只看现有结果时才直接读取。只对仍在 `data.toAnalyzeTables` 的非删除表逐表串行恢复一次,最后按同一策略再读取一次完整 diff。
74
74
 
75
75
  显式单批 `analyze-start --tables` 的持久化参数超过 1024 UTF-8 bytes 时,CLI 会在调用 API 前返回 validation error 并提示先运行 `db analyze-batch-plan`。960 是规划安全预算;960 至 1024 bytes 的显式单批仍允许启动。未传 `--tables` 的全量分析不受此保护影响。
76
76
 
@@ -101,7 +101,7 @@ rabetbase db analyze-status --id 10157 --plan <traceId> --format compress
101
101
  | `data.totalElapsedMs` | 从 `firstStartTime` 到 `endTime` 或当前查询时刻的 plan 墙钟耗时;缺少可靠时间戳时为 `null` |
102
102
  | `data.hasMultipleAttempts` | `firstStartTime` 与 `startTime` 都有效且不相同时为 `true`,表示服务端开启过后续执行尝试 |
103
103
 
104
- `PENDING / RUNNING / RETRYING / CANCELING` 与未知状态都不是终态。不要根据 `failedTables`、`retryCount` 或错误文案推测状态。`PARTIAL_SUCCESS` 只表示任务已到终态;默认必须异步刷新后复跑 `db diff --all --changed-only` 验证目标差异收敛,只有用户明确要求跳过分析/刷新时才直接读取现有结果,之后才能得出本轮分析完成结论。
104
+ `PENDING / RUNNING / RETRYING / CANCELING` 与未知状态都不是终态。不要根据 `failedTables`、`retryCount` 或错误文案推测状态。`PARTIAL_SUCCESS` 只表示任务已到终态;默认必须异步刷新后复跑 `db diff --all` 验证目标差异收敛,只有用户明确要求跳过分析/刷新时才直接读取现有结果,之后才能得出本轮分析完成结论。
105
105
 
106
106
  `analyze-status` 每次只查询一次。轮询时必须继续使用当前任务的同一 `planId`;查询超时、断网或临时 API 失败不等于分析失败,也不得触发新的 `analyze-start`。当前稳定任务状态中没有独立的 `TIMEOUT` 终态。
107
107
 
@@ -8,7 +8,7 @@
8
8
  - 用户明确要求“实时刷新”或“强制刷新”时执行刷新。
9
9
  - 只有用户明确要求“不需要分析”“不刷新”或“只看现有结果”时才跳过,并说明现有差异可能不是最新事实。
10
10
 
11
- 刷新只影响默认 `db diff` 差异视角;`db diff --view all` 本身是实时全表分页,但在 DBAgent 增量分析工作流中仍默认先完成异步差异刷新,以形成一致、可跟踪的分析流程。
11
+ 刷新用于形成一致、可跟踪的最新差异事实。刷新成功后,按意图执行 `db diff` 查询差异表,或执行 `db tables` 查询包含无差异表在内的全部表。
12
12
 
13
13
  ## 命令
14
14
 
@@ -22,7 +22,7 @@ rabetbase db diff-refresh-status --id 10157 --plan <traceId> --format compress
22
22
  1. `diff-refresh-start` 只执行一次并保存 `data.traceId`。
23
23
  2. 若响应没有明确 `traceId`,结果未知,停止且不得自动重提。
24
24
  3. `PENDING / RUNNING / RETRYING` 时继续执行 `data.query.command`,始终查询同一个 traceId。
25
- 4. `SUCCESS` 时执行 `data.lookup.command`,重新读取刷新后的差异结果。
25
+ 4. `SUCCESS` 时按原始意图执行 `db diff --all`(差异表)或 `db tables`(全部表)。状态命令不替调用者选择后续查询。
26
26
  5. `FAILED / CANCELLED` 为失败终态;报告 `data.status.errorMsg`,不得自动重启。
27
27
  6. 未知状态不是终态,停止自动推进或继续只读查询,不猜测成功。
28
28
 
@@ -42,7 +42,8 @@ rabetbase db diff-refresh-status --id 10157 --plan <traceId> --format compress
42
42
  - `data.isTerminal`
43
43
  - `data.isSuccessful`
44
44
  - `data.query`:非终态时的同 traceId 查询命令
45
- - `data.lookup`:仅成功时返回的 `db diff --all --changed-only` 命令
45
+
46
+ `diff-refresh-status` 只表达任务状态,不输出结果查询 `lookup`,避免在“全部表”和“差异表”两种意图之间替 Agent 作错误选择。
46
47
 
47
48
  差异刷新任务与 schema 分析任务不是同一业务动作。不要用 `diff-refresh-start` 代替 `analyze-start`,也不要把刷新成功描述为数据集分析已经完成。
48
49
 
@@ -1,26 +1,14 @@
1
1
  # db diff
2
2
 
3
- 分页查看数据库表差异或全部数据表。只读。
3
+ 分页查看数据库表差异。只读。查看全部表统一使用 [`db tables`](rabetbase-db-tables.md)。
4
4
 
5
- ## 两种视角
6
-
7
- | 视角 | 命令 | 服务端语义 |
8
- |---|---|---|
9
- | 差异表(默认) | `db diff` | 调用 `getDiffTableByPage`。服务端可能实时计算或读取最近差异快照;Agent 不根据表数量推断新鲜度。 |
10
- | 全部表 | `db diff --view all` | 调用实时分页接口,包含 `ALREADY_ANALYZED`,用于查看无差异表或手动选择重新分析。 |
11
-
12
- `--all` 始终表示“聚合当前视角的全部分页”,不表示“全部表”。需要全部表必须显式传 `--view all`。
5
+ `db diff` 固定调用 `getDiffTableByPage`,只承担差异查询职责。`--all` 表示聚合全部差异分页,不表示查询全部表。
13
6
 
14
7
  ## 命令
15
8
 
16
9
  ```bash
17
- # 默认差异表视角
18
10
  rabetbase db diff --id 10157 --format compress
19
- rabetbase db diff --id 10157 --all --changed-only --format compress
20
-
21
- # 全部表实时视角
22
- rabetbase db diff --id 10157 --view all --page 1 --pagesize 20 --format compress
23
- rabetbase db diff --id 10157 --view all --all --format compress
11
+ rabetbase db diff --id 10157 --all --format compress
24
12
  ```
25
13
 
26
14
  ## 参数
@@ -28,11 +16,9 @@ rabetbase db diff --id 10157 --view all --all --format compress
28
16
  | Flag | 必填 | 说明 |
29
17
  |---|---|---|
30
18
  | `--id` | **是** | dblink id |
31
- | `--view` | 否 | `diff`(默认)或 `all` |
32
19
  | `--table` | 否 | 表名模糊过滤 |
33
20
  | `--page` / `--pagesize` | 否 | 默认 `1` / `20` |
34
- | `--all` | 否 | 从第 1 页开始按 `pageSize=100` 自动聚合当前视角全部分页;优先级高于 `--page / --pagesize` |
35
- | `--changed-only` | 否 | 从输出行中排除 `ALREADY_ANALYZED`;保留 `DELETED_TABLE` |
21
+ | `--all` | 否 | 从第 1 页开始按 `pageSize=100` 自动聚合全部差异分页;优先级高于 `--page / --pagesize` |
36
22
 
37
23
  ## 刷新决策
38
24
 
@@ -47,13 +33,12 @@ rabetbase db diff --id 10157 --view all --all --format compress
47
33
 
48
34
  | 字段 | 语义 |
49
35
  |---|---|
50
- | `view` | 当前视角:`diff` 或 `all` |
51
36
  | `summaryByType` | 本次查询范围内四种 `diffType` 的计数 |
52
37
  | `toAnalyzeTables` | 仅包含 `NEW_TABLE` 与 `MODIFIED_TABLE` 的表名,可传给 `analyze-start --tables` |
53
38
  | `deletedTables` | 仅包含 `DELETED_TABLE`,供人工确认,不自动分析或清理 |
54
39
  | `modifiedFieldDiffs` | 修改表的新增、删除、变更字段摘要 |
55
40
 
56
- 未传 `--all` 时,派生字段只代表当前页。默认差异视角通常不会返回 `physicalTableCount`、`datasetTableCount` 或 `summary`;CLI 不以 `0` 伪造缺失值。全表实时视角在服务端提供这些字段时会原样返回。
41
+ 未传 `--all` 时,派生字段只代表当前页。差异接口未返回 `physicalTableCount`、`datasetTableCount` 或 `summary` 时,CLI 不以 `0` 伪造缺失值。输出只使用 `tables`,不保留旧 `tableList` 别名。
57
42
 
58
43
  ## `diffType` 语义
59
44
 
@@ -62,9 +47,9 @@ rabetbase db diff --id 10157 --view all --all --format compress
62
47
  | `NEW_TABLE` | 表新增 | 物理库中有该表,但尚未纳入或尚未完成上次智能分析。 |
63
48
  | `DELETED_TABLE` | 表删除 | 相对上次已分析结果,该表在库侧已不存在或已被移除。 |
64
49
  | `MODIFIED_TABLE` | 表修改 | 表仍在,但结构相对上次分析有变化。 |
65
- | `ALREADY_ANALYZED` | 无差异 | 当前表结构与上次分析结果一致;在 `--view all` 中可供用户主动重新分析。 |
50
+ | `ALREADY_ANALYZED` | 无差异 | 当前表结构与上次分析结果一致;完整全表事实由 `db tables` 返回。 |
66
51
 
67
- `DELETED_TABLE` 不进入 `toAnalyzeTables`。自动分页在达到 `totalCount` 前遇到空页或没有新增唯一表时,命令失败,不把部分结果伪装成完整结果。
52
+ 服务端接口只返回差异表,因此 CLI 不再提供冗余的 `--changed-only`。`DELETED_TABLE` 不进入 `toAnalyzeTables`。自动分页在达到 `totalCount` 前遇到空页或没有新增唯一表时,命令失败,不把部分结果伪装成完整结果。
68
53
 
69
54
  ## 参考
70
55
 
@@ -1,16 +1,18 @@
1
1
  # db tables
2
2
 
3
- 列出指定 dblink 下**物理表**及平台打上的分析标签(如是否已分析、是否新增表等)。只读。
3
+ 列出指定 dblink 下的全部表对照结果及分析状态。命令使用全表分页接口并自动聚合所有分页,包含 `ALREADY_ANALYZED`、`NEW_TABLE`、`MODIFIED_TABLE` 和 `DELETED_TABLE`。只读。
4
4
 
5
5
  ## 何时用
6
6
 
7
+ - 查看全部表,包括无差异表
7
8
  - 写自定义 SQL / 对表前确认真实表名
8
- - 与 `dataset list` 对照:哪些表尚未建成数据集
9
+ - 主动选择需要重新分析的既有表
9
10
 
10
11
  ## 命令
11
12
 
12
13
  ```bash
13
14
  rabetbase db tables --id 10157 --format compress
15
+ rabetbase db tables --id 10157 --table order --format compress
14
16
  ```
15
17
 
16
18
  ## 参数
@@ -18,6 +20,16 @@ rabetbase db tables --id 10157 --format compress
18
20
  | Flag | 必填 | 说明 |
19
21
  |------|------|------|
20
22
  | `--id` | **是** | dblink id(`db list`) |
23
+ | `--table` | 否 | 表名模糊过滤;仍自动聚合匹配结果的全部分页 |
24
+
25
+ ## 机器可读输出
26
+
27
+ - `totalCount`:全表对照结果总数
28
+ - `physicalTableCount` / `datasetTableCount`:服务端提供时原样返回
29
+ - `summaryByType`:四种 `diffType` 的完整结果计数
30
+ - `tables`:唯一表结果数组;不输出旧 `tagList` 或 `tableList` 别名
31
+
32
+ `DELETED_TABLE` 是全表对照事实,可能不属于当前物理表,但仍保留在结果中,避免客户端过滤后破坏总数语义。
21
33
 
22
34
  ## 参考
23
35
 
@@ -3,7 +3,8 @@
3
3
  ## 命令
4
4
 
5
5
  ```bash
6
- rabetbase page custom-list --appcode <appCode> --format json
6
+ rabetbase page custom-list --format compress
7
+ rabetbase page custom-list --appcode <appCode> --format compress
7
8
  ```
8
9
 
9
10
  ## 适用场景
@@ -12,7 +13,9 @@ rabetbase page custom-list --appcode <appCode> --format json
12
13
 
13
14
  ## 参数
14
15
 
15
- - `--appcode <appCode>`:必填,目标应用 code
16
+ - `--appcode <appCode>`:可选;不传时从当前工作区 `defaultApp` 或唯一应用自动决议,传入时覆盖工作区选择
17
+
18
+ 工作区无可决议应用且未传 `--appcode` 时,命令返回结构化的应用配置缺失错误,不会请求菜单接口。
16
19
 
17
20
  ## 输出
18
21
 
@@ -2,8 +2,8 @@
2
2
  "schemaVersion": 1,
3
3
  "name": "rabetbase",
4
4
  "packageName": "@lovrabet/rabetbase-cli",
5
- "packageVersion": "2.5.0-beta.2",
6
- "skillVersion": "2.5.0-beta.2",
5
+ "packageVersion": "2.5.0-beta.4",
6
+ "skillVersion": "2.5.0-beta.4",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/backend-function.md",
@@ -132,5 +132,5 @@
132
132
  "references/rabetbase-user-account.md",
133
133
  "references/rabetbase-workspace.md"
134
134
  ],
135
- "digest": "a617fe33ba67f284c9ce0b59ede606a8c6f8536f54b3708a4b123c446745cc25"
135
+ "digest": "ad142c625ec3689e365d1ac4e1da91dce5a07cbb38907b361fb9c9d612ef32a5"
136
136
  }