@lovrabet/rabetbase-cli 2.5.1-beta.3 → 2.5.1-beta.5

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 (346) hide show
  1. package/README.md +75 -1
  2. package/lib/api/api-doc.js +1 -1
  3. package/lib/api/fetch-model-list.js +1 -1
  4. package/lib/api/generate-api-file.js +1 -1
  5. package/lib/api/generate-sdk-config-file.d.ts +0 -1
  6. package/lib/api/generate-sdk-config-file.js +1 -1
  7. package/lib/auth/auth-server-ui.js +1 -1
  8. package/lib/auth/auth-server.js +1 -1
  9. package/lib/auth/constant.js +1 -1
  10. package/lib/auth/get-cookie.js +1 -1
  11. package/lib/auth/get-session-user.js +1 -1
  12. package/lib/auth/is-session-valid.js +1 -1
  13. package/lib/auth/login-success-html.js +1 -1
  14. package/lib/auth/logout.js +1 -1
  15. package/lib/cli-flags.js +1 -1
  16. package/lib/cli.js +1 -1
  17. package/lib/commands/api/generate.js +1 -1
  18. package/lib/commands/api/index.js +1 -1
  19. package/lib/commands/api/list.js +1 -1
  20. package/lib/commands/api/pull.js +1 -1
  21. package/lib/commands/api/shared.js +1 -1
  22. package/lib/commands/app/index.js +1 -1
  23. package/lib/commands/app/list.js +1 -1
  24. package/lib/commands/app/members-list.js +1 -1
  25. package/lib/commands/app/remote-directory.js +1 -1
  26. package/lib/commands/app/shared.js +1 -1
  27. package/lib/commands/app-config/delete.js +1 -1
  28. package/lib/commands/app-config/get.js +1 -1
  29. package/lib/commands/app-config/index.js +1 -1
  30. package/lib/commands/app-config/list.js +1 -1
  31. package/lib/commands/app-config/set.js +1 -1
  32. package/lib/commands/app-config/shared.js +1 -1
  33. package/lib/commands/auth/index.js +1 -1
  34. package/lib/commands/bff/create.js +1 -1
  35. package/lib/commands/bff/delete.js +1 -1
  36. package/lib/commands/bff/detail.js +1 -1
  37. package/lib/commands/bff/index.js +1 -1
  38. package/lib/commands/bff/list.js +1 -1
  39. package/lib/commands/bff/pull.js +1 -1
  40. package/lib/commands/bff/push.js +1 -1
  41. package/lib/commands/bff/status.js +1 -1
  42. package/lib/commands/cli-skill/index.js +1 -1
  43. package/lib/commands/cli-update.js +1 -1
  44. package/lib/commands/codegen/index.js +1 -1
  45. package/lib/commands/codegen/sdk.js +1 -1
  46. package/lib/commands/codegen/sql.js +1 -1
  47. package/lib/commands/common/app-registry.js +1 -1
  48. package/lib/commands/common/app-selector.js +1 -1
  49. package/lib/commands/common/async-task.js +1 -1
  50. package/lib/commands/common/dry-run.js +1 -1
  51. package/lib/commands/common/flags.d.ts +2 -0
  52. package/lib/commands/common/flags.js +1 -1
  53. package/lib/commands/common/local-file.js +1 -1
  54. package/lib/commands/common/validate.js +1 -1
  55. package/lib/commands/config/delete.js +1 -1
  56. package/lib/commands/config/get.js +1 -1
  57. package/lib/commands/config/index.js +1 -1
  58. package/lib/commands/config/init.d.ts +3 -1
  59. package/lib/commands/config/init.js +1 -1
  60. package/lib/commands/config/list.js +1 -1
  61. package/lib/commands/config/set.js +1 -1
  62. package/lib/commands/config/shared.js +1 -1
  63. package/lib/commands/dataset/business-group-update.js +1 -1
  64. package/lib/commands/dataset/business-groups.js +1 -1
  65. package/lib/commands/dataset/capability.js +1 -1
  66. package/lib/commands/dataset/delete.js +1 -1
  67. package/lib/commands/dataset/detail.js +1 -1
  68. package/lib/commands/dataset/extend-update.js +1 -1
  69. package/lib/commands/dataset/field-restore.js +1 -1
  70. package/lib/commands/dataset/field-update.js +1 -1
  71. package/lib/commands/dataset/generate.js +1 -1
  72. package/lib/commands/dataset/index.js +1 -1
  73. package/lib/commands/dataset/list.js +1 -1
  74. package/lib/commands/dataset/operations.js +1 -1
  75. package/lib/commands/dataset/relation-audit.js +1 -1
  76. package/lib/commands/dataset/relation-create.js +1 -1
  77. package/lib/commands/dataset/relation-delete.js +1 -1
  78. package/lib/commands/dataset/relation-shared.js +1 -1
  79. package/lib/commands/dataset/relation-update.js +1 -1
  80. package/lib/commands/dataset/relations.js +1 -1
  81. package/lib/commands/dataset/rename.js +1 -1
  82. package/lib/commands/dataset/restore.js +1 -1
  83. package/lib/commands/dataset/user-deleted-field-list.js +1 -1
  84. package/lib/commands/db/analysis-batching.js +1 -1
  85. package/lib/commands/db/analyze-batch-plan.js +1 -1
  86. package/lib/commands/db/analyze-cancel.js +1 -1
  87. package/lib/commands/db/analyze-start.js +1 -1
  88. package/lib/commands/db/analyze-status.js +1 -1
  89. package/lib/commands/db/create.js +1 -1
  90. package/lib/commands/db/delete.js +1 -1
  91. package/lib/commands/db/detail.js +1 -1
  92. package/lib/commands/db/diff-refresh-start.js +1 -1
  93. package/lib/commands/db/diff-refresh-status.js +1 -1
  94. package/lib/commands/db/diff.js +1 -1
  95. package/lib/commands/db/index.js +1 -1
  96. package/lib/commands/db/list.js +1 -1
  97. package/lib/commands/db/shared.js +1 -1
  98. package/lib/commands/db/table-diff-shared.js +1 -1
  99. package/lib/commands/db/tables.js +1 -1
  100. package/lib/commands/db/test.js +1 -1
  101. package/lib/commands/db/update.js +1 -1
  102. package/lib/commands/deployment/auto-sync.js +1 -1
  103. package/lib/commands/deployment/index.js +1 -1
  104. package/lib/commands/deployment/sync.js +1 -1
  105. package/lib/commands/doctor.js +1 -1
  106. package/lib/commands/file/index.js +1 -1
  107. package/lib/commands/issue/index.js +1 -1
  108. package/lib/commands/issue/nudge.js +1 -1
  109. package/lib/commands/issue/report.js +1 -1
  110. package/lib/commands/issue/shared.js +1 -1
  111. package/lib/commands/kb/create.js +1 -1
  112. package/lib/commands/kb/delete.js +1 -1
  113. package/lib/commands/kb/detail.js +1 -1
  114. package/lib/commands/kb/index.js +1 -1
  115. package/lib/commands/kb/list.js +1 -1
  116. package/lib/commands/kb/search.js +1 -1
  117. package/lib/commands/kb/shared.js +1 -1
  118. package/lib/commands/kb/update.js +1 -1
  119. package/lib/commands/logs/index.js +1 -1
  120. package/lib/commands/menu/asset-update.js +1 -1
  121. package/lib/commands/menu/delete.js +1 -1
  122. package/lib/commands/menu/external-link-create.js +1 -1
  123. package/lib/commands/menu/external-link-update.js +1 -1
  124. package/lib/commands/menu/group-create.js +1 -1
  125. package/lib/commands/menu/group-update.js +1 -1
  126. package/lib/commands/menu/index.js +1 -1
  127. package/lib/commands/menu/list.js +1 -1
  128. package/lib/commands/menu/move.js +1 -1
  129. package/lib/commands/menu/regroup-start.js +1 -1
  130. package/lib/commands/menu/rename.js +1 -1
  131. package/lib/commands/menu/shared/compare-table.js +1 -1
  132. package/lib/commands/menu/shared/delete-plan.js +1 -1
  133. package/lib/commands/menu/shared/facts.js +1 -1
  134. package/lib/commands/menu/shared/index.js +1 -1
  135. package/lib/commands/menu/shared/inquirer.js +1 -1
  136. package/lib/commands/menu/shared/local-pages.js +1 -1
  137. package/lib/commands/menu/shared/logic.js +1 -1
  138. package/lib/commands/menu/shared/mutations.js +1 -1
  139. package/lib/commands/menu/shared/service.js +1 -1
  140. package/lib/commands/menu/shared/sync-core.js +1 -1
  141. package/lib/commands/menu/shared/update-core.js +1 -1
  142. package/lib/commands/menu/shared/valid-url.js +1 -1
  143. package/lib/commands/menu/sync.js +1 -1
  144. package/lib/commands/menu/visibility-update.js +1 -1
  145. package/lib/commands/notification/config-create.js +1 -1
  146. package/lib/commands/notification/config-delete.js +1 -1
  147. package/lib/commands/notification/config-list.js +1 -1
  148. package/lib/commands/notification/config-update.js +1 -1
  149. package/lib/commands/notification/index.js +1 -1
  150. package/lib/commands/notification/shared.js +1 -1
  151. package/lib/commands/ocr/index.js +1 -1
  152. package/lib/commands/page/create.js +1 -1
  153. package/lib/commands/page/custom/detail.js +1 -1
  154. package/lib/commands/page/custom/list.js +1 -1
  155. package/lib/commands/page/custom/publish.js +1 -1
  156. package/lib/commands/page/custom/shared.js +1 -1
  157. package/lib/commands/page/custom/syntax.js +1 -1
  158. package/lib/commands/page/custom/template.js +1 -1
  159. package/lib/commands/page/custom/update.js +1 -1
  160. package/lib/commands/page/data-list-status.js +1 -1
  161. package/lib/commands/page/generate-start.js +1 -1
  162. package/lib/commands/page/generate-status.js +1 -1
  163. package/lib/commands/page/index.js +1 -1
  164. package/lib/commands/page/pull.js +1 -1
  165. package/lib/commands/page/push.js +1 -1
  166. package/lib/commands/page/relation-audit.js +1 -1
  167. package/lib/commands/page/restore.js +1 -1
  168. package/lib/commands/page/shared.js +1 -1
  169. package/lib/commands/page/sync.js +1 -1
  170. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  171. package/lib/commands/project/create/format-elapsed.js +1 -1
  172. package/lib/commands/project/create/main.d.ts +1 -0
  173. package/lib/commands/project/create/main.js +1 -1
  174. package/lib/commands/project/create/materialize-project-template.js +1 -1
  175. package/lib/commands/project/create/project-name.js +1 -1
  176. package/lib/commands/project/create/project-template-archive.js +1 -1
  177. package/lib/commands/project/create/project-template-path.js +1 -1
  178. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  179. package/lib/commands/project/create/use-format-code.js +1 -1
  180. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  181. package/lib/commands/project/domain-routing-sync.d.ts +2 -0
  182. package/lib/commands/project/domain-routing-sync.js +1 -0
  183. package/lib/commands/project/index.js +1 -1
  184. package/lib/commands/project/upgrade.js +1 -1
  185. package/lib/commands/registry.js +1 -1
  186. package/lib/commands/role/delete.js +1 -1
  187. package/lib/commands/role/detail.js +1 -1
  188. package/lib/commands/role/index.js +1 -1
  189. package/lib/commands/role/list.js +1 -1
  190. package/lib/commands/role/shared.js +1 -1
  191. package/lib/commands/role/update.js +1 -1
  192. package/lib/commands/role/user-add.js +1 -1
  193. package/lib/commands/role/user-remove.js +1 -1
  194. package/lib/commands/role/user-resolve.js +1 -1
  195. package/lib/commands/rule/get.d.ts +2 -0
  196. package/lib/commands/rule/get.js +1 -0
  197. package/lib/commands/rule/index.d.ts +2 -0
  198. package/lib/commands/rule/index.js +1 -0
  199. package/lib/commands/rule/list.d.ts +2 -0
  200. package/lib/commands/rule/list.js +1 -0
  201. package/lib/commands/rule/set.d.ts +2 -0
  202. package/lib/commands/rule/set.js +1 -0
  203. package/lib/commands/rule/shared.d.ts +43 -0
  204. package/lib/commands/rule/shared.js +1 -0
  205. package/lib/commands/run/index.js +1 -1
  206. package/lib/commands/schema.js +1 -1
  207. package/lib/commands/sql/create.js +1 -1
  208. package/lib/commands/sql/delete.js +1 -1
  209. package/lib/commands/sql/detail.js +1 -1
  210. package/lib/commands/sql/exec.js +1 -1
  211. package/lib/commands/sql/index.js +1 -1
  212. package/lib/commands/sql/list.js +1 -1
  213. package/lib/commands/sql/pull.js +1 -1
  214. package/lib/commands/sql/push.js +1 -1
  215. package/lib/commands/sql/shared.js +1 -1
  216. package/lib/commands/sql/status.js +1 -1
  217. package/lib/commands/sql/validate.js +1 -1
  218. package/lib/commands/task/index.js +1 -1
  219. package/lib/commands/task/status.js +1 -1
  220. package/lib/commands/tenant/index.js +1 -1
  221. package/lib/commands/tenant/members-list.js +1 -1
  222. package/lib/commands/tenant/shared.js +1 -1
  223. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  224. package/lib/commands/user-account/index.js +1 -1
  225. package/lib/commands/workspace/add.js +1 -1
  226. package/lib/commands/workspace/index.js +1 -1
  227. package/lib/commands/workspace/remove.js +1 -1
  228. package/lib/config/deployment-sync.js +1 -1
  229. package/lib/config/domain-config.d.ts +38 -2
  230. package/lib/config/domain-config.js +1 -1
  231. package/lib/config/project-domain-routing.d.ts +27 -0
  232. package/lib/config/project-domain-routing.js +1 -0
  233. package/lib/config/schema.d.ts +1 -1
  234. package/lib/config/schema.js +1 -1
  235. package/lib/constant/cdn.js +1 -1
  236. package/lib/constant/cli.js +1 -1
  237. package/lib/constant/defaults.js +1 -1
  238. package/lib/constant/domain.d.ts +10 -6
  239. package/lib/constant/domain.js +1 -1
  240. package/lib/constant/env.js +1 -1
  241. package/lib/constant/output.js +1 -1
  242. package/lib/constant/paths.js +1 -1
  243. package/lib/constant/region.d.ts +4 -1
  244. package/lib/constant/region.js +1 -1
  245. package/lib/constant/risk.js +1 -1
  246. package/lib/constant/routing-profile.d.ts +43 -49
  247. package/lib/constant/routing-profile.js +1 -1
  248. package/lib/context/app-resolver.js +1 -1
  249. package/lib/context/auth-resolver.js +1 -1
  250. package/lib/context/config-loader.js +1 -1
  251. package/lib/context.d.ts +2 -0
  252. package/lib/context.js +1 -1
  253. package/lib/core/alias-resolver.js +1 -1
  254. package/lib/core/api-client.d.ts +37 -0
  255. package/lib/core/api-client.js +1 -1
  256. package/lib/core/bff/config.js +1 -1
  257. package/lib/core/bff/file-system.js +1 -1
  258. package/lib/core/bff/hash.js +1 -1
  259. package/lib/core/bff/lock.js +1 -1
  260. package/lib/core/bff/utils.js +1 -1
  261. package/lib/core/db-resolver.js +1 -1
  262. package/lib/core/page/file-system.js +1 -1
  263. package/lib/core/page/hash.js +1 -1
  264. package/lib/core/page/lock.js +1 -1
  265. package/lib/core/sql-index-auditor.js +1 -1
  266. package/lib/core/sql-sync/config.js +1 -1
  267. package/lib/core/sql-sync/file-system.js +1 -1
  268. package/lib/core/sql-sync/hash.js +1 -1
  269. package/lib/core/sql-sync/lock.js +1 -1
  270. package/lib/core/sql-sync/utils.js +1 -1
  271. package/lib/core/sql-validator.js +1 -1
  272. package/lib/errors.js +1 -1
  273. package/lib/framework/build-all-flags.js +1 -1
  274. package/lib/framework/error-output.js +1 -1
  275. package/lib/framework/explicit-yes.js +1 -1
  276. package/lib/framework/flags.js +1 -1
  277. package/lib/framework/help.js +1 -1
  278. package/lib/framework/index.js +1 -1
  279. package/lib/framework/output.js +1 -1
  280. package/lib/framework/response.js +1 -1
  281. package/lib/framework/runner-alias.js +1 -1
  282. package/lib/framework/runner.js +1 -1
  283. package/lib/framework/schema-export.js +1 -1
  284. package/lib/framework/types.d.ts +0 -1
  285. package/lib/framework/types.js +1 -1
  286. package/lib/generated/build-info.d.ts +4 -4
  287. package/lib/generated/build-info.js +1 -1
  288. package/lib/generated/official-routing.d.ts +83 -0
  289. package/lib/generated/official-routing.js +1 -0
  290. package/lib/generated/routing-contract.d.ts +9 -0
  291. package/lib/generated/routing-contract.js +1 -0
  292. package/lib/help.js +1 -1
  293. package/lib/postinstall.js +1 -1
  294. package/lib/runtime/confirmation.js +1 -1
  295. package/lib/runtime/event.js +1 -1
  296. package/lib/runtime/index.js +1 -1
  297. package/lib/runtime/queue.js +1 -1
  298. package/lib/runtime/resolve.js +1 -1
  299. package/lib/skills/builtin-skill.js +1 -1
  300. package/lib/skills/main.js +1 -1
  301. package/lib/skills/npx-skills-add.js +1 -1
  302. package/lib/skills/skill-presence.js +1 -1
  303. package/lib/telemetry/cli-command-trace.js +1 -1
  304. package/lib/telemetry/cli-help-trace.js +1 -1
  305. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  306. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  307. package/lib/telemetry/send-cli-trace-log.js +1 -1
  308. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  309. package/lib/types/index.d.ts +0 -1
  310. package/lib/utils/ai_config.js +1 -1
  311. package/lib/utils/apply-jq-filter.js +1 -1
  312. package/lib/utils/cdn-config.js +1 -1
  313. package/lib/utils/check-sdk-version.js +1 -1
  314. package/lib/utils/cli-version-check.js +1 -1
  315. package/lib/utils/cli-version-policy.js +1 -1
  316. package/lib/utils/config.js +1 -1
  317. package/lib/utils/entity-with-id.js +1 -1
  318. package/lib/utils/file-utils.js +1 -1
  319. package/lib/utils/guides-cdn.js +1 -1
  320. package/lib/utils/http-client.js +1 -1
  321. package/lib/utils/is-non-interactive.js +1 -1
  322. package/lib/utils/logger.js +1 -1
  323. package/lib/utils/params.js +1 -1
  324. package/lib/utils/platform.js +1 -1
  325. package/lib/utils/sleep.js +1 -1
  326. package/lib/utils/template-replacer.js +1 -1
  327. package/lib/utils/update-notice.js +1 -1
  328. package/lib/utils/version.js +1 -1
  329. package/lib/utils/with-active-cookie.js +1 -1
  330. package/lib/utils/write-cli-side-channel.js +1 -1
  331. package/package.json +2 -1
  332. package/skills/rabetbase/SKILL.md +16 -13
  333. package/skills/rabetbase/guides/sdk-client-generation.md +10 -8
  334. package/skills/rabetbase/references/rabetbase-api-pull.md +16 -11
  335. package/skills/rabetbase/references/rabetbase-config.md +3 -6
  336. package/skills/rabetbase/references/rabetbase-doctor.md +2 -1
  337. package/skills/rabetbase/references/rabetbase-init.md +32 -10
  338. package/skills/rabetbase/references/rabetbase-kb.md +7 -7
  339. package/skills/rabetbase/references/rabetbase-project-create.md +33 -8
  340. package/skills/rabetbase/references/rabetbase-project-domain-routing-sync.md +28 -0
  341. package/skills/rabetbase/references/rabetbase-rule.md +49 -0
  342. package/skills/rabetbase.manifest.json +5 -3
  343. package/lib/config/project-routing.d.ts +0 -30
  344. package/lib/config/project-routing.js +0 -1
  345. package/lib/core/kb-search-client.d.ts +0 -30
  346. package/lib/core/kb-search-client.js +0 -1
@@ -1 +1 @@
1
- function a296_0x5330(_0x334c3a,_0x39118b){_0x334c3a=_0x334c3a-0x11d;const _0x362c29=a296_0x362c();let _0x53305a=_0x362c29[_0x334c3a];return _0x53305a;}const a296_0x1b7c83=a296_0x5330;(function(_0x9874e,_0x8d1c7a){const _0x3a8c9b=a296_0x5330,_0x1bd49c=_0x9874e();while(!![]){try{const _0x390c44=parseInt(_0x3a8c9b(0x120))/0x1*(parseInt(_0x3a8c9b(0x14c))/0x2)+parseInt(_0x3a8c9b(0x12e))/0x3*(-parseInt(_0x3a8c9b(0x152))/0x4)+parseInt(_0x3a8c9b(0x133))/0x5+-parseInt(_0x3a8c9b(0x123))/0x6*(parseInt(_0x3a8c9b(0x131))/0x7)+-parseInt(_0x3a8c9b(0x12d))/0x8*(-parseInt(_0x3a8c9b(0x150))/0x9)+-parseInt(_0x3a8c9b(0x14a))/0xa*(parseInt(_0x3a8c9b(0x11f))/0xb)+parseInt(_0x3a8c9b(0x140))/0xc;if(_0x390c44===_0x8d1c7a)break;else _0x1bd49c['push'](_0x1bd49c['shift']());}catch(_0x531c0a){_0x1bd49c['push'](_0x1bd49c['shift']());}}}(a296_0x362c,0x895db));import a296_0x3a9f7d from'winston';function a296_0x362c(){const _0xf8de5f=['360xaJNZV','readLogs','12GzrFBS','message','parse','details','success','utf8','1355398IaWGYN','170082SflxqF','clear','timestamp','6kWyYEW','red','currentRawCommand','green','Starting:\x20','setLogPath','format','logTask','now','addColors','34088pCNjVY','1035417oQOSaO','filter','printf','2662898BXzdqx','clearLogs','1317320EuRrbi','unknown','.lovrabet.log','duration','info','error','errors','writeFileSync','warn','File','createLogger','rawCommand','Failed\x20to\x20read\x20logs:','17972568HSnZFL','existsSync','map','winstonLogger','logFilePath','setRawCommand','command','combine','Completed:\x20','blue','10nzcwnX','stringify','2upCcXz','initWinstonLogger','getWinstonInstance','split'];a296_0x362c=function(){return _0xf8de5f;};return a296_0x362c();}import a296_0x491a44 from'node:fs';import a296_0xd00696 from'node:path';class Logger{[a296_0x1b7c83(0x143)];[a296_0x1b7c83(0x144)];[a296_0x1b7c83(0x125)]='';constructor(){this['logFilePath']='';}[a296_0x1b7c83(0x145)](_0x55b01b){const _0x4b93d5=a296_0x1b7c83;this[_0x4b93d5(0x125)]=_0x55b01b;}[a296_0x1b7c83(0x14d)](){const _0x5de846=a296_0x1b7c83,_0x332948=a296_0xd00696['dirname'](this[_0x5de846(0x144)]);!a296_0x491a44[_0x5de846(0x141)](_0x332948)&&a296_0x491a44['mkdirSync'](_0x332948,{'recursive':!![]});const _0x3fc5d5=a296_0x3a9f7d[_0x5de846(0x129)][_0x5de846(0x147)](a296_0x3a9f7d[_0x5de846(0x129)][_0x5de846(0x122)](),a296_0x3a9f7d[_0x5de846(0x129)][_0x5de846(0x139)]({'stack':!![]}),a296_0x3a9f7d[_0x5de846(0x129)][_0x5de846(0x130)](_0x435723=>{const _0x32b78e=_0x5de846,_0x599118={'timestamp':_0x435723[_0x32b78e(0x122)]||new Date()['toISOString'](),'level':_0x435723['level']||'info','command':_0x435723[_0x32b78e(0x146)]||_0x32b78e(0x134),'rawCommand':_0x435723[_0x32b78e(0x13e)]||this[_0x32b78e(0x125)]||undefined,'message':_0x435723[_0x32b78e(0x153)]||'','duration':_0x435723[_0x32b78e(0x136)]||undefined,'details':_0x435723[_0x32b78e(0x155)]||undefined};return JSON[_0x32b78e(0x14b)](_0x599118);}));this[_0x5de846(0x143)]=a296_0x3a9f7d[_0x5de846(0x13d)]({'level':'info','format':_0x3fc5d5,'transports':[new a296_0x3a9f7d['transports'][(_0x5de846(0x13c))]({'filename':this['logFilePath'],'level':'info'})],'silent':![]}),a296_0x3a9f7d[_0x5de846(0x12c)]({'success':_0x5de846(0x126),'error':_0x5de846(0x124),'warn':'yellow','info':_0x5de846(0x149)});}[a296_0x1b7c83(0x128)](_0x3c25e9){const _0x572609=a296_0x1b7c83;this[_0x572609(0x144)]=a296_0xd00696['join'](_0x3c25e9,_0x572609(0x135)),this[_0x572609(0x143)]&&this[_0x572609(0x143)][_0x572609(0x121)](),this['initWinstonLogger']();}[a296_0x1b7c83(0x137)](_0x4a3550,_0x1e1caa,_0x33ab01){const _0x1b3bf6=a296_0x1b7c83;if(!this[_0x1b3bf6(0x144)]||!this['winstonLogger'])return;this[_0x1b3bf6(0x143)][_0x1b3bf6(0x137)](_0x1e1caa,{'command':_0x4a3550,'details':_0x33ab01});}[a296_0x1b7c83(0x11d)](_0x2ad04e,_0x214719,_0x334fd7,_0x1bf39d){const _0x44c23c=a296_0x1b7c83;if(!this[_0x44c23c(0x144)]||!this[_0x44c23c(0x143)])return;this[_0x44c23c(0x143)]['log'](_0x44c23c(0x137),_0x214719,{'level':_0x44c23c(0x11d),'command':_0x2ad04e,'duration':_0x334fd7,'details':_0x1bf39d});}[a296_0x1b7c83(0x138)](_0xa5b380,_0x4bebfb,_0x22a65e){const _0x17fde5=a296_0x1b7c83;if(!this[_0x17fde5(0x144)]||!this['winstonLogger'])return;this[_0x17fde5(0x143)][_0x17fde5(0x138)](_0x4bebfb,{'command':_0xa5b380,'details':_0x22a65e});}[a296_0x1b7c83(0x13b)](_0x4676de,_0x5e0c18,_0x31c11a){const _0x17d148=a296_0x1b7c83;if(!this[_0x17d148(0x144)]||!this[_0x17d148(0x143)])return;this[_0x17d148(0x143)]['warn'](_0x5e0c18,{'command':_0x4676de,'details':_0x31c11a});}async[a296_0x1b7c83(0x12a)](_0x5aa8e4,_0x396869,_0x606a31){const _0x5d199c=a296_0x1b7c83,_0x24e260=Date[_0x5d199c(0x12b)]();this[_0x5d199c(0x137)](_0x5aa8e4,_0x5d199c(0x127)+_0x396869);try{const _0x596b8a=await _0x606a31(),_0x17dee8=Date[_0x5d199c(0x12b)]()-_0x24e260;return this[_0x5d199c(0x11d)](_0x5aa8e4,_0x5d199c(0x148)+_0x396869,_0x17dee8),_0x596b8a;}catch(_0x8b0f19){const _0x1c3507=Date[_0x5d199c(0x12b)]()-_0x24e260;this['error'](_0x5aa8e4,'Failed:\x20'+_0x396869,{'error':_0x8b0f19 instanceof Error?_0x8b0f19[_0x5d199c(0x153)]:String(_0x8b0f19),'duration':_0x1c3507});throw _0x8b0f19;}}[a296_0x1b7c83(0x151)](){const _0x35d7d3=a296_0x1b7c83;try{if(!a296_0x491a44['existsSync'](this['logFilePath']))return[];const _0x4bc722=a296_0x491a44['readFileSync'](this[_0x35d7d3(0x144)],_0x35d7d3(0x11e));return _0x4bc722[_0x35d7d3(0x14f)]('\x0a')[_0x35d7d3(0x12f)](_0x277fcf=>_0x277fcf['trim']())[_0x35d7d3(0x142)](_0x32ecde=>JSON[_0x35d7d3(0x154)](_0x32ecde));}catch(_0x52aec2){return console['warn'](_0x35d7d3(0x13f),_0x52aec2),[];}}[a296_0x1b7c83(0x132)](){const _0x2e7e98=a296_0x1b7c83;try{a296_0x491a44[_0x2e7e98(0x141)](this['logFilePath'])&&a296_0x491a44[_0x2e7e98(0x13a)](this['logFilePath'],'',_0x2e7e98(0x11e));}catch(_0x4eb0e8){console[_0x2e7e98(0x13b)]('Failed\x20to\x20clear\x20logs:',_0x4eb0e8);}}[a296_0x1b7c83(0x14e)](){const _0x33e86a=a296_0x1b7c83;return this[_0x33e86a(0x143)];}}export const logger=new Logger();
1
+ const a303_0x227146=a303_0x4ef5;(function(_0x5aad52,_0x513a10){const _0xa10aab=a303_0x4ef5,_0x31a37d=_0x5aad52();while(!![]){try{const _0x24580e=parseInt(_0xa10aab(0x168))/0x1+-parseInt(_0xa10aab(0x174))/0x2+parseInt(_0xa10aab(0x17f))/0x3*(-parseInt(_0xa10aab(0x19b))/0x4)+-parseInt(_0xa10aab(0x188))/0x5*(-parseInt(_0xa10aab(0x17a))/0x6)+-parseInt(_0xa10aab(0x197))/0x7*(-parseInt(_0xa10aab(0x17d))/0x8)+-parseInt(_0xa10aab(0x172))/0x9+parseInt(_0xa10aab(0x19e))/0xa;if(_0x24580e===_0x513a10)break;else _0x31a37d['push'](_0x31a37d['shift']());}catch(_0x3d04de){_0x31a37d['push'](_0x31a37d['shift']());}}}(a303_0x115b,0xdcbfe));import a303_0x93a879 from'winston';import a303_0x4ec974 from'node:fs';function a303_0x115b(){const _0x4349aa=['trim','utf8','success','748tkNxHT','stringify','logFilePath','26540660XQdhwY','transports','toISOString','182873JEHyJD','yellow','Failed\x20to\x20read\x20logs:','info','Failed\x20to\x20clear\x20logs:','message','logTask','existsSync','timestamp','command','14987448eJBdcj','setRawCommand','2350078UDqkcP','format','File','join','printf','readFileSync','135132ofgpEI','getWinstonInstance','unknown','16tkJTaN','mkdirSync','8736zrdExA','.lovrabet.log','rawCommand','warn','initWinstonLogger','combine','now','Starting:\x20','clear','10PNrXVw','Failed:\x20','red','log','addColors','winstonLogger','split','currentRawCommand','createLogger','error','setLogPath','duration','level','details','parse','4924717FRfQIQ'];a303_0x115b=function(){return _0x4349aa;};return a303_0x115b();}function a303_0x4ef5(_0x8d8eb5,_0x59476c){_0x8d8eb5=_0x8d8eb5-0x168;const _0x115b82=a303_0x115b();let _0x4ef5df=_0x115b82[_0x8d8eb5];return _0x4ef5df;}import a303_0x3100fd from'node:path';class Logger{[a303_0x227146(0x18d)];[a303_0x227146(0x19d)];['currentRawCommand']='';constructor(){const _0x5da08a=a303_0x227146;this[_0x5da08a(0x19d)]='';}[a303_0x227146(0x173)](_0x1d083e){const _0x2c7651=a303_0x227146;this[_0x2c7651(0x18f)]=_0x1d083e;}[a303_0x227146(0x183)](){const _0x1745d0=a303_0x227146,_0x3aef7e=a303_0x3100fd['dirname'](this[_0x1745d0(0x19d)]);!a303_0x4ec974['existsSync'](_0x3aef7e)&&a303_0x4ec974[_0x1745d0(0x17e)](_0x3aef7e,{'recursive':!![]});const _0x17ea93=a303_0x93a879['format'][_0x1745d0(0x184)](a303_0x93a879[_0x1745d0(0x175)][_0x1745d0(0x170)](),a303_0x93a879[_0x1745d0(0x175)]['errors']({'stack':!![]}),a303_0x93a879['format'][_0x1745d0(0x178)](_0x191942=>{const _0x1b819e=_0x1745d0,_0x1c176d={'timestamp':_0x191942[_0x1b819e(0x170)]||new Date()[_0x1b819e(0x1a0)](),'level':_0x191942[_0x1b819e(0x194)]||_0x1b819e(0x16b),'command':_0x191942[_0x1b819e(0x171)]||_0x1b819e(0x17c),'rawCommand':_0x191942[_0x1b819e(0x181)]||this[_0x1b819e(0x18f)]||undefined,'message':_0x191942[_0x1b819e(0x16d)]||'','duration':_0x191942[_0x1b819e(0x193)]||undefined,'details':_0x191942[_0x1b819e(0x195)]||undefined};return JSON[_0x1b819e(0x19c)](_0x1c176d);}));this[_0x1745d0(0x18d)]=a303_0x93a879[_0x1745d0(0x190)]({'level':'info','format':_0x17ea93,'transports':[new a303_0x93a879[(_0x1745d0(0x19f))][(_0x1745d0(0x176))]({'filename':this[_0x1745d0(0x19d)],'level':_0x1745d0(0x16b)})],'silent':![]}),a303_0x93a879[_0x1745d0(0x18c)]({'success':'green','error':_0x1745d0(0x18a),'warn':_0x1745d0(0x169),'info':'blue'});}[a303_0x227146(0x192)](_0x2db36c){const _0x25f39b=a303_0x227146;this[_0x25f39b(0x19d)]=a303_0x3100fd[_0x25f39b(0x177)](_0x2db36c,_0x25f39b(0x180)),this[_0x25f39b(0x18d)]&&this[_0x25f39b(0x18d)][_0x25f39b(0x187)](),this['initWinstonLogger']();}[a303_0x227146(0x16b)](_0x217976,_0x3c80a9,_0x46cbf7){const _0x5e983a=a303_0x227146;if(!this[_0x5e983a(0x19d)]||!this[_0x5e983a(0x18d)])return;this[_0x5e983a(0x18d)][_0x5e983a(0x16b)](_0x3c80a9,{'command':_0x217976,'details':_0x46cbf7});}[a303_0x227146(0x19a)](_0x5cecf5,_0x3c1ea7,_0x3e4a64,_0x225377){const _0x16b8f5=a303_0x227146;if(!this[_0x16b8f5(0x19d)]||!this[_0x16b8f5(0x18d)])return;this['winstonLogger'][_0x16b8f5(0x18b)](_0x16b8f5(0x16b),_0x3c1ea7,{'level':_0x16b8f5(0x19a),'command':_0x5cecf5,'duration':_0x3e4a64,'details':_0x225377});}['error'](_0x3915fc,_0x2c3faf,_0x47800d){const _0x563e3a=a303_0x227146;if(!this['logFilePath']||!this[_0x563e3a(0x18d)])return;this[_0x563e3a(0x18d)][_0x563e3a(0x191)](_0x2c3faf,{'command':_0x3915fc,'details':_0x47800d});}[a303_0x227146(0x182)](_0x28b2fc,_0x41abda,_0x18f54f){const _0x36e5ca=a303_0x227146;if(!this['logFilePath']||!this[_0x36e5ca(0x18d)])return;this['winstonLogger'][_0x36e5ca(0x182)](_0x41abda,{'command':_0x28b2fc,'details':_0x18f54f});}async[a303_0x227146(0x16e)](_0x2ff6b1,_0x3314bc,_0x432160){const _0x3a0d44=a303_0x227146,_0x91e5df=Date[_0x3a0d44(0x185)]();this[_0x3a0d44(0x16b)](_0x2ff6b1,_0x3a0d44(0x186)+_0x3314bc);try{const _0x48f7ad=await _0x432160(),_0x2c2e4f=Date['now']()-_0x91e5df;return this[_0x3a0d44(0x19a)](_0x2ff6b1,'Completed:\x20'+_0x3314bc,_0x2c2e4f),_0x48f7ad;}catch(_0x4e3e2b){const _0x4f6da9=Date[_0x3a0d44(0x185)]()-_0x91e5df;this[_0x3a0d44(0x191)](_0x2ff6b1,_0x3a0d44(0x189)+_0x3314bc,{'error':_0x4e3e2b instanceof Error?_0x4e3e2b['message']:String(_0x4e3e2b),'duration':_0x4f6da9});throw _0x4e3e2b;}}['readLogs'](){const _0x39bba6=a303_0x227146;try{if(!a303_0x4ec974[_0x39bba6(0x16f)](this[_0x39bba6(0x19d)]))return[];const _0x408e89=a303_0x4ec974[_0x39bba6(0x179)](this[_0x39bba6(0x19d)],_0x39bba6(0x199));return _0x408e89[_0x39bba6(0x18e)]('\x0a')['filter'](_0x591a78=>_0x591a78[_0x39bba6(0x198)]())['map'](_0x5f0fa7=>JSON[_0x39bba6(0x196)](_0x5f0fa7));}catch(_0x54d56b){return console['warn'](_0x39bba6(0x16a),_0x54d56b),[];}}['clearLogs'](){const _0x11378f=a303_0x227146;try{a303_0x4ec974[_0x11378f(0x16f)](this['logFilePath'])&&a303_0x4ec974['writeFileSync'](this[_0x11378f(0x19d)],'',_0x11378f(0x199));}catch(_0x545b66){console[_0x11378f(0x182)](_0x11378f(0x16c),_0x545b66);}}[a303_0x227146(0x17b)](){const _0x173721=a303_0x227146;return this[_0x173721(0x18d)];}}export const logger=new Logger();
@@ -1 +1 @@
1
- (function(_0xe70e9f,_0x12c96c){const _0x3083d6=a297_0x387d,_0x2ddff0=_0xe70e9f();while(!![]){try{const _0x5308b6=-parseInt(_0x3083d6(0xa2))/0x1+parseInt(_0x3083d6(0x9d))/0x2+parseInt(_0x3083d6(0xa3))/0x3+-parseInt(_0x3083d6(0xa1))/0x4+parseInt(_0x3083d6(0xa0))/0x5*(parseInt(_0x3083d6(0x9f))/0x6)+-parseInt(_0x3083d6(0x9c))/0x7+parseInt(_0x3083d6(0xa7))/0x8;if(_0x5308b6===_0x12c96c)break;else _0x2ddff0['push'](_0x2ddff0['shift']());}catch(_0x2f37ac){_0x2ddff0['push'](_0x2ddff0['shift']());}}}(a297_0x8c29,0x390d2));function a297_0x8c29(){const _0x3cdfba=['914808BczvPQ','458380nalTCO','663210RXdLsC','validation','object','--params\x20must\x20be\x20a\x20JSON\x20object','1518680rRBVaE','Example:\x20--params\x20\x27{\x22id\x22:123}\x27','270417pCrFyL','450072cJzFmU','Invalid\x20JSON\x20for\x20--params:\x20','1940724JYKFbi','5tflPQb'];a297_0x8c29=function(){return _0x3cdfba;};return a297_0x8c29();}function a297_0x387d(_0xed5013,_0x293791){_0xed5013=_0xed5013-0x9c;const _0x8c29d9=a297_0x8c29();let _0x387dd8=_0x8c29d9[_0xed5013];return _0x387dd8;}import{CliErrors}from'../errors.js';export function parseJsonParams(_0x36bf81){const _0x1dfad9=a297_0x387d;if(!_0x36bf81)return undefined;let _0x59241c;try{_0x59241c=JSON['parse'](_0x36bf81);}catch{throw CliErrors[_0x1dfad9(0xa4)](_0x1dfad9(0x9e)+_0x36bf81);}if(!_0x59241c||typeof _0x59241c!==_0x1dfad9(0xa5)||Array['isArray'](_0x59241c))throw CliErrors[_0x1dfad9(0xa4)](_0x1dfad9(0xa6),_0x1dfad9(0xa8));return _0x59241c;}
1
+ (function(_0x43bfd3,_0xa1a40e){const _0x153432=a304_0x3757,_0x4626b8=_0x43bfd3();while(!![]){try{const _0x5ade65=parseInt(_0x153432(0x1df))/0x1*(-parseInt(_0x153432(0x1dc))/0x2)+-parseInt(_0x153432(0x1d3))/0x3*(-parseInt(_0x153432(0x1d2))/0x4)+parseInt(_0x153432(0x1d6))/0x5*(parseInt(_0x153432(0x1d9))/0x6)+parseInt(_0x153432(0x1de))/0x7+-parseInt(_0x153432(0x1e0))/0x8+parseInt(_0x153432(0x1d7))/0x9+parseInt(_0x153432(0x1da))/0xa*(-parseInt(_0x153432(0x1d5))/0xb);if(_0x5ade65===_0xa1a40e)break;else _0x4626b8['push'](_0x4626b8['shift']());}catch(_0x3893a3){_0x4626b8['push'](_0x4626b8['shift']());}}}(a304_0x4831,0xae976));import{CliErrors}from'../errors.js';function a304_0x4831(){const _0x59dc3f=['5958078ucEwKL','3612UeNiPl','9521664owdodS','validation','12876oXUotA','663suXjgl','isArray','1174877QTaXec','235DPiIgH','1288575CXWXag','--params\x20must\x20be\x20a\x20JSON\x20object','151230zjkPFb','30ULswOi','Example:\x20--params\x20\x27{\x22id\x22:123}\x27','368zOGtBU','parse'];a304_0x4831=function(){return _0x59dc3f;};return a304_0x4831();}function a304_0x3757(_0x15a02f,_0x9debe1){_0x15a02f=_0x15a02f-0x1d1;const _0x483107=a304_0x4831();let _0x375742=_0x483107[_0x15a02f];return _0x375742;}export function parseJsonParams(_0xda5442){const _0x1d62f8=a304_0x3757;if(!_0xda5442)return undefined;let _0x2b36ae;try{_0x2b36ae=JSON[_0x1d62f8(0x1dd)](_0xda5442);}catch{throw CliErrors[_0x1d62f8(0x1d1)]('Invalid\x20JSON\x20for\x20--params:\x20'+_0xda5442);}if(!_0x2b36ae||typeof _0x2b36ae!=='object'||Array[_0x1d62f8(0x1d4)](_0x2b36ae))throw CliErrors[_0x1d62f8(0x1d1)](_0x1d62f8(0x1d8),_0x1d62f8(0x1db));return _0x2b36ae;}
@@ -1 +1 @@
1
- const a298_0x5d6b8e=a298_0x58a5;(function(_0x22a8b1,_0xb21fe6){const _0x3294b6=a298_0x58a5,_0x47de0f=_0x22a8b1();while(!![]){try{const _0x4dad09=-parseInt(_0x3294b6(0x16b))/0x1*(parseInt(_0x3294b6(0x168))/0x2)+-parseInt(_0x3294b6(0x16c))/0x3+-parseInt(_0x3294b6(0x169))/0x4+parseInt(_0x3294b6(0x16e))/0x5+parseInt(_0x3294b6(0x16a))/0x6+parseInt(_0x3294b6(0x170))/0x7+-parseInt(_0x3294b6(0x16d))/0x8;if(_0x4dad09===_0xb21fe6)break;else _0x47de0f['push'](_0x47de0f['shift']());}catch(_0x3ef094){_0x47de0f['push'](_0x47de0f['shift']());}}}(a298_0x170a,0x27805));export const isWindows=process['platform']===a298_0x5d6b8e(0x16f);function a298_0x58a5(_0x22ec1e,_0x38a810){_0x22ec1e=_0x22ec1e-0x168;const _0x170ab4=a298_0x170a();let _0x58a556=_0x170ab4[_0x22ec1e];return _0x58a556;}function a298_0x170a(){const _0xce9da9=['1RJtZbb','714957GactQF','1728448fYkdzh','1583485jWvSoE','win32','1585836ywsXPp','22510FOgalX','521216rWsuYz','1286916DTObbN'];a298_0x170a=function(){return _0xce9da9;};return a298_0x170a();}export function resolveNpmBin(_0x41963d){return isWindows?_0x41963d+'.cmd':_0x41963d;}
1
+ function a305_0x3686(_0x57f62e,_0x33953a){_0x57f62e=_0x57f62e-0x131;const _0xf89080=a305_0xf890();let _0x36865e=_0xf89080[_0x57f62e];return _0x36865e;}const a305_0x283903=a305_0x3686;(function(_0x185a87,_0x199e50){const _0x4908c4=a305_0x3686,_0x18fa1f=_0x185a87();while(!![]){try{const _0xb16439=-parseInt(_0x4908c4(0x134))/0x1+-parseInt(_0x4908c4(0x137))/0x2+-parseInt(_0x4908c4(0x138))/0x3*(parseInt(_0x4908c4(0x13b))/0x4)+-parseInt(_0x4908c4(0x136))/0x5+parseInt(_0x4908c4(0x135))/0x6*(parseInt(_0x4908c4(0x131))/0x7)+parseInt(_0x4908c4(0x132))/0x8*(parseInt(_0x4908c4(0x13c))/0x9)+parseInt(_0x4908c4(0x139))/0xa;if(_0xb16439===_0x199e50)break;else _0x18fa1f['push'](_0x18fa1f['shift']());}catch(_0x291fc0){_0x18fa1f['push'](_0x18fa1f['shift']());}}}(a305_0xf890,0xd0622));function a305_0xf890(){const _0x2a12b4=['99768NWafsF','platform','1189905ZwCXKy','24yHjhVF','5183410ROaUjD','147648LSUqCf','137721nKkhep','18780690mvbaAh','win32','68McmRSX','585mEfAXd','.cmd','2179947zCoavn'];a305_0xf890=function(){return _0x2a12b4;};return a305_0xf890();}export const isWindows=process[a305_0x283903(0x133)]===a305_0x283903(0x13a);export function resolveNpmBin(_0x2bf386){const _0x4f3e59=a305_0x283903;return isWindows?_0x2bf386+_0x4f3e59(0x13d):_0x2bf386;}
@@ -1 +1 @@
1
- export function sleep(_0x4c7ea0){return new Promise(_0x216e60=>setTimeout(_0x216e60,_0x4c7ea0));}
1
+ export function sleep(_0x5a83fd){return new Promise(_0x4cfaca=>setTimeout(_0x4cfaca,_0x5a83fd));}
@@ -1 +1 @@
1
- const a300_0x49fa45=a300_0x1bc3;function a300_0x131c(){const _0x2330e4=['formatLocalTimestamp','.tpl','processDirectory','datasetCode:\x20\x22','info','.json','.scss','writeFile','tableName','utf8','getFullYear','LOVRABET','now','1041920XJPuVt','Template\x20content\x20replacement\x20completed','slice','push','Template\x20content\x20replacement\x20failed','.js','4XvtDbg','replace','success','padStart','api','isDirectory','toUpperCase','2617059EVFBYU','readFile','\x20},','\x0a\x20\x20\x20\x20{\x20','YourModel','replaceApiContent','isFile','.jsx','processFile','split','tableName:\x20\x22','pad','promises','toLowerCase','toDisplayTitle','charAt','default','1259290CNRGiq','1770741wEGiJb','getDate','1oerFiy','replaceContent','template','endsWith','includes','.css','Starting\x20template\x20content\x20replacement','toISOString','getMinutes','6564186URJTZJ','map','readdir','.tsx','message','toComponentName','join','alias','name','getHours','10377968ynYzHu','copyFile','1460165RbmqwU','mkdir'];a300_0x131c=function(){return _0x2330e4;};return a300_0x131c();}(function(_0x38d852,_0x5e15fc){const _0x4172cf=a300_0x1bc3,_0x1b3d35=_0x38d852();while(!![]){try{const _0x3e284f=-parseInt(_0x4172cf(0x219))/0x1*(parseInt(_0x4172cf(0x216))/0x2)+parseInt(_0x4172cf(0x205))/0x3*(parseInt(_0x4172cf(0x1fe))/0x4)+parseInt(_0x4172cf(0x1f8))/0x5+parseInt(_0x4172cf(0x222))/0x6+parseInt(_0x4172cf(0x22e))/0x7+-parseInt(_0x4172cf(0x22c))/0x8+parseInt(_0x4172cf(0x217))/0x9;if(_0x3e284f===_0x5e15fc)break;else _0x1b3d35['push'](_0x1b3d35['shift']());}catch(_0x1f471a){_0x1b3d35['push'](_0x1b3d35['shift']());}}}(a300_0x131c,0x9f7a5));import a300_0x39c260 from'node:fs';function a300_0x1bc3(_0x118089,_0x4ea8ad){_0x118089=_0x118089-0x1ed;const _0x131c21=a300_0x131c();let _0x1bc3f1=_0x131c21[_0x118089];return _0x1bc3f1;}import a300_0xf500c1 from'node:path';import{logger}from'../utils/logger.js';import{getCliVersion}from'../utils/version.js';const CLI_VERSION=getCliVersion();export class TemplateReplacer{static[a300_0x49fa45(0x210)](_0x56481b){const _0x4c3df3=a300_0x49fa45;return String(_0x56481b)[_0x4c3df3(0x201)](0x2,'0');}static[a300_0x49fa45(0x230)](_0x32344b){const _0x1de078=a300_0x49fa45,_0x2a4de3=_0x32344b[_0x1de078(0x1f5)](),_0x384715=this['pad'](_0x32344b['getMonth']()+0x1),_0x8da1e9=this[_0x1de078(0x210)](_0x32344b[_0x1de078(0x218)]()),_0x1d9ea8=this[_0x1de078(0x210)](_0x32344b[_0x1de078(0x22b)]()),_0x31a303=this[_0x1de078(0x210)](_0x32344b[_0x1de078(0x221)]()),_0x1d9d7c=this[_0x1de078(0x210)](_0x32344b['getSeconds']());return{'createdAt':_0x2a4de3+'-'+_0x384715+'-'+_0x8da1e9+'\x20'+_0x1d9ea8+':'+_0x31a303+':'+_0x1d9d7c,'createdDate':_0x2a4de3+'-'+_0x384715+'-'+_0x8da1e9,'createdTime':_0x1d9ea8+':'+_0x31a303+':'+_0x1d9d7c};}static[a300_0x49fa45(0x227)](_0x5cd08b){const _0x5a0999=a300_0x49fa45,_0x142fb7=_0x5cd08b[_0x5a0999(0x20e)]('/')['pop']()||_0x5cd08b;return _0x142fb7[_0x5a0999(0x20e)]('-')[_0x5a0999(0x223)](_0x495fb8=>_0x495fb8[_0x5a0999(0x214)](0x0)[_0x5a0999(0x204)]()+_0x495fb8[_0x5a0999(0x1fa)](0x1)[_0x5a0999(0x212)]())['join']('');}static[a300_0x49fa45(0x213)](_0x503620){const _0x3c6693=a300_0x49fa45,_0x3154ec=_0x503620[_0x3c6693(0x20e)]('/')['pop']()||_0x503620;return _0x3154ec['split']('-')[_0x3c6693(0x223)](_0x7ee2a0=>_0x7ee2a0[_0x3c6693(0x214)](0x0)[_0x3c6693(0x204)]()+_0x7ee2a0[_0x3c6693(0x1fa)](0x1)[_0x3c6693(0x212)]())[_0x3c6693(0x228)]('\x20');}static[a300_0x49fa45(0x21a)](_0x2f655d,_0x24f7dd,_0x56abaa){const _0x296b20=a300_0x49fa45,_0x486320=this[_0x296b20(0x227)](_0x24f7dd),_0x1e9c70=this['toDisplayTitle'](_0x24f7dd),{createdAt:_0x498f8f,createdDate:_0x41de8b,createdTime:_0x14654c}=this[_0x296b20(0x230)](new Date());let _0x1fcf18=_0x2f655d[_0x296b20(0x1ff)](/\{CliVersion\}/g,CLI_VERSION)[_0x296b20(0x1ff)](/\{ComponentName\}/g,_0x486320)[_0x296b20(0x1ff)](/\{DisplayTitle\}/g,_0x1e9c70)[_0x296b20(0x1ff)](/\{PageName\}/g,_0x24f7dd)[_0x296b20(0x1ff)](/\{TemplateName\}/g,_0x56abaa)['replace'](/\{CreatedAt\}/g,_0x498f8f)['replace'](/\{CreatedDate\}/g,_0x41de8b)[_0x296b20(0x1ff)](/\{CreatedTime\}/g,_0x14654c);return _0x1fcf18;}static[a300_0x49fa45(0x20a)](_0x36e9eb,_0x175410,_0x363f7b,_0x1a8f2f,_0x12700e,_0x1ddf19,_0x50ef17,_0x2e42fe){const _0x3e9345=a300_0x49fa45,_0x278fcd=new Date(),_0x557309=_0x278fcd[_0x3e9345(0x220)](),_0xd72bd0=_0x363f7b[_0x3e9345(0x223)](_0x1fa3a3=>{const _0x5bd345=_0x3e9345,_0x48dbc2=[_0x5bd345(0x1ee)+_0x1fa3a3['datasetCode']+'\x22',_0x5bd345(0x20f)+_0x1fa3a3[_0x5bd345(0x1f3)]+'\x22','name:\x20\x22'+_0x1fa3a3['name']+'\x22'];return _0x1fa3a3[_0x5bd345(0x229)]&&_0x48dbc2[_0x5bd345(0x1fb)]('alias:\x20\x22'+_0x1fa3a3[_0x5bd345(0x229)]+'\x22'),_0x5bd345(0x208)+_0x48dbc2['join'](',\x20')+_0x5bd345(0x207);})['join'](''),_0x3b96d6=_0x1a8f2f||_0x363f7b[0x0]?.[_0x3e9345(0x229)]||_0x3e9345(0x209);let _0xd0c11e=_0x36e9eb[_0x3e9345(0x1ff)](/\{AppCode\}/g,_0x175410)[_0x3e9345(0x1ff)](/\{ModelConfigs\}/g,_0xd72bd0)[_0x3e9345(0x1ff)](/\{ExampleModelName\}/g,_0x3b96d6)['replace'](/\{ApiFileName\}/g,_0x12700e||_0x3e9345(0x202))[_0x3e9345(0x1ff)](/\{ConfigName\}/g,_0x1ddf19||_0x3e9345(0x215))['replace'](/\{ClientConfigParam\}/g,_0x50ef17||'')[_0x3e9345(0x1ff)](/\{VarPrefix\}/g,_0x2e42fe||_0x3e9345(0x1f6))[_0x3e9345(0x1ff)](/\{CreatedAt\}/g,_0x557309);return _0xd0c11e;}static async['processTemplate'](_0x188519,_0x191136,_0x9c76e1,_0x40e1db,_0x3d383f=!![]){const _0x381395=a300_0x49fa45,_0x1ff5d1=Date[_0x381395(0x1f7)]();try{_0x3d383f&&logger[_0x381395(0x1ef)](_0x381395(0x21b),_0x381395(0x21f),{'templatePath':_0x188519,'targetPath':_0x191136,'pageName':_0x9c76e1,'templateName':_0x40e1db});await a300_0x39c260[_0x381395(0x211)][_0x381395(0x22f)](_0x191136,{'recursive':!![]}),await this[_0x381395(0x1ed)](_0x188519,_0x191136,_0x9c76e1,_0x40e1db);if(_0x3d383f){const _0x3521a7=Date[_0x381395(0x1f7)]()-_0x1ff5d1;logger[_0x381395(0x200)]('template',_0x381395(0x1f9),_0x3521a7,{'pageName':_0x9c76e1,'templateName':_0x40e1db});}}catch(_0x97af1){if(_0x3d383f){const _0x244014=Date[_0x381395(0x1f7)]()-_0x1ff5d1;logger['error']('template',_0x381395(0x1fc),{'templatePath':_0x188519,'targetPath':_0x191136,'pageName':_0x9c76e1,'templateName':_0x40e1db,'error':_0x97af1 instanceof Error?_0x97af1[_0x381395(0x226)]:String(_0x97af1),'duration':_0x244014});}throw _0x97af1;}}static async[a300_0x49fa45(0x1ed)](_0x6838b5,_0x54ca57,_0x56be9e,_0xe8ca77){const _0x4fa4d4=a300_0x49fa45,_0x33d686=await a300_0x39c260[_0x4fa4d4(0x211)][_0x4fa4d4(0x224)](_0x6838b5,{'withFileTypes':!![]});for(const _0x2143d1 of _0x33d686){const _0x46ac65=a300_0xf500c1[_0x4fa4d4(0x228)](_0x6838b5,_0x2143d1[_0x4fa4d4(0x22a)]);let _0x46892e=a300_0xf500c1[_0x4fa4d4(0x228)](_0x54ca57,_0x2143d1['name']);_0x2143d1[_0x4fa4d4(0x22a)][_0x4fa4d4(0x21c)](_0x4fa4d4(0x231))&&(_0x46892e=a300_0xf500c1[_0x4fa4d4(0x228)](_0x54ca57,_0x2143d1[_0x4fa4d4(0x22a)][_0x4fa4d4(0x1ff)](/\.tpl$/,'')));if(_0x2143d1[_0x4fa4d4(0x203)]())await a300_0x39c260[_0x4fa4d4(0x211)][_0x4fa4d4(0x22f)](_0x46892e,{'recursive':!![]}),await this['processDirectory'](_0x46ac65,_0x46892e,_0x56be9e,_0xe8ca77);else _0x2143d1[_0x4fa4d4(0x20b)]()&&await this[_0x4fa4d4(0x20d)](_0x46ac65,_0x46892e,_0x56be9e,_0xe8ca77);}}static async[a300_0x49fa45(0x20d)](_0xe18016,_0x3837d0,_0x215670,_0xa8dd15){const _0x206564=a300_0x49fa45,_0xeac763=a300_0xf500c1['extname'](_0xe18016)[_0x206564(0x212)]();_0xe18016['endsWith'](_0x206564(0x231))&&(_0x3837d0=_0x3837d0[_0x206564(0x1ff)](/\.tpl$/,''));const _0x4f4fcf=[_0x206564(0x225),'.ts',_0x206564(0x20c),_0x206564(0x1fd),_0x206564(0x1f0),'.md',_0x206564(0x21e),_0x206564(0x1f1),'.tpl'];if(_0x4f4fcf[_0x206564(0x21d)](_0xeac763)||_0xe18016[_0x206564(0x21c)](_0x206564(0x231))){const _0x1a9bc5=await a300_0x39c260[_0x206564(0x211)][_0x206564(0x206)](_0xe18016,'utf8'),_0xd9795=this['replaceContent'](_0x1a9bc5,_0x215670,_0xa8dd15);await a300_0x39c260[_0x206564(0x211)][_0x206564(0x1f2)](_0x3837d0,_0xd9795,_0x206564(0x1f4));}else await a300_0x39c260['promises'][_0x206564(0x22d)](_0xe18016,_0x3837d0);}}
1
+ const a307_0x5d06aa=a307_0x5760;function a307_0x5760(_0x4d6ae2,_0x44ede8){_0x4d6ae2=_0x4d6ae2-0xab;const _0x369064=a307_0x3690();let _0x57607a=_0x369064[_0x4d6ae2];return _0x57607a;}(function(_0x290ad4,_0x30577a){const _0x413e0c=a307_0x5760,_0x51526f=_0x290ad4();while(!![]){try{const _0x349590=parseInt(_0x413e0c(0xd7))/0x1*(parseInt(_0x413e0c(0xbf))/0x2)+parseInt(_0x413e0c(0xcc))/0x3*(-parseInt(_0x413e0c(0xb7))/0x4)+-parseInt(_0x413e0c(0xb0))/0x5*(parseInt(_0x413e0c(0xd8))/0x6)+-parseInt(_0x413e0c(0xc1))/0x7*(-parseInt(_0x413e0c(0xbe))/0x8)+-parseInt(_0x413e0c(0xea))/0x9+-parseInt(_0x413e0c(0xe2))/0xa+parseInt(_0x413e0c(0xb8))/0xb;if(_0x349590===_0x30577a)break;else _0x51526f['push'](_0x51526f['shift']());}catch(_0x52b335){_0x51526f['push'](_0x51526f['shift']());}}}(a307_0x3690,0x2a0c0));import a307_0x2ae4c4 from'node:fs';function a307_0x3690(){const _0x2e8dda=['111aYSOgl','6EOEsvK','mkdir','now','Starting\x20template\x20content\x20replacement','name','formatLocalTimestamp','tableName','toLowerCase','getDate','utf8','716090CPDIea','toISOString','getMonth','map','processTemplate','split','toUpperCase','getSeconds','912123bbpKXT','error','isDirectory','includes','getFullYear','YourModel','pop','replace','pad','template','916915zWlLZd','replaceContent','.jsx','alias:\x20\x22','processFile','default','toDisplayTitle','76GeqOtB','6552315SlLhrs','success','writeFile','padStart','.js','alias','8HRyqcY','2402QyBuce','api','106393WriRQH','readFile','\x0a\x20\x20\x20\x20{\x20','datasetCode','Template\x20content\x20replacement\x20completed','datasetCode:\x20\x22','charAt','join','processDirectory','copyFile','.tpl','34044Zdakqk','.ts','.tsx','extname','.json','promises','info','slice','endsWith','Template\x20content\x20replacement\x20failed','.scss'];a307_0x3690=function(){return _0x2e8dda;};return a307_0x3690();}import a307_0x599f30 from'node:path';import{logger}from'../utils/logger.js';import{getCliVersion}from'../utils/version.js';const CLI_VERSION=getCliVersion();export class TemplateReplacer{static['pad'](_0x2baff3){const _0x518b83=a307_0x5760;return String(_0x2baff3)[_0x518b83(0xbb)](0x2,'0');}static[a307_0x5d06aa(0xdd)](_0x3d9aeb){const _0x2bfd1e=a307_0x5d06aa,_0xbebd7f=_0x3d9aeb[_0x2bfd1e(0xee)](),_0x3b0473=this['pad'](_0x3d9aeb[_0x2bfd1e(0xe4)]()+0x1),_0x2b73cf=this[_0x2bfd1e(0xae)](_0x3d9aeb[_0x2bfd1e(0xe0)]()),_0x5e781a=this['pad'](_0x3d9aeb['getHours']()),_0x4b5397=this[_0x2bfd1e(0xae)](_0x3d9aeb['getMinutes']()),_0x22139f=this[_0x2bfd1e(0xae)](_0x3d9aeb[_0x2bfd1e(0xe9)]());return{'createdAt':_0xbebd7f+'-'+_0x3b0473+'-'+_0x2b73cf+'\x20'+_0x5e781a+':'+_0x4b5397+':'+_0x22139f,'createdDate':_0xbebd7f+'-'+_0x3b0473+'-'+_0x2b73cf,'createdTime':_0x5e781a+':'+_0x4b5397+':'+_0x22139f};}static['toComponentName'](_0x498a9a){const _0x36eedb=a307_0x5d06aa,_0x381051=_0x498a9a['split']('/')[_0x36eedb(0xac)]()||_0x498a9a;return _0x381051['split']('-')['map'](_0x835232=>_0x835232[_0x36eedb(0xc7)](0x0)[_0x36eedb(0xe8)]()+_0x835232[_0x36eedb(0xd3)](0x1)['toLowerCase']())['join']('');}static[a307_0x5d06aa(0xb6)](_0xa35d17){const _0x1c2194=a307_0x5d06aa,_0x501b0e=_0xa35d17[_0x1c2194(0xe7)]('/')[_0x1c2194(0xac)]()||_0xa35d17;return _0x501b0e[_0x1c2194(0xe7)]('-')[_0x1c2194(0xe5)](_0x4fe2e1=>_0x4fe2e1[_0x1c2194(0xc7)](0x0)[_0x1c2194(0xe8)]()+_0x4fe2e1[_0x1c2194(0xd3)](0x1)[_0x1c2194(0xdf)]())[_0x1c2194(0xc8)]('\x20');}static[a307_0x5d06aa(0xb1)](_0x4775cd,_0x51b289,_0x15d56b){const _0x1a3390=a307_0x5d06aa,_0x344532=this['toComponentName'](_0x51b289),_0x29b881=this[_0x1a3390(0xb6)](_0x51b289),{createdAt:_0x3b0a05,createdDate:_0x6ebf8a,createdTime:_0x5d05f6}=this[_0x1a3390(0xdd)](new Date());let _0x3b6947=_0x4775cd[_0x1a3390(0xad)](/\{CliVersion\}/g,CLI_VERSION)[_0x1a3390(0xad)](/\{ComponentName\}/g,_0x344532)[_0x1a3390(0xad)](/\{DisplayTitle\}/g,_0x29b881)[_0x1a3390(0xad)](/\{PageName\}/g,_0x51b289)[_0x1a3390(0xad)](/\{TemplateName\}/g,_0x15d56b)[_0x1a3390(0xad)](/\{CreatedAt\}/g,_0x3b0a05)[_0x1a3390(0xad)](/\{CreatedDate\}/g,_0x6ebf8a)[_0x1a3390(0xad)](/\{CreatedTime\}/g,_0x5d05f6);return _0x3b6947;}static['replaceApiContent'](_0x3d8367,_0xed4c3e,_0x4b18d0,_0x2b5ab2,_0x5b2b32,_0x30dedf,_0x1dda5b,_0x35607a){const _0x1d9bf5=a307_0x5d06aa,_0x5b8ebd=new Date(),_0x1da689=_0x5b8ebd[_0x1d9bf5(0xe3)](),_0x57e7a0=_0x4b18d0[_0x1d9bf5(0xe5)](_0x553e6c=>{const _0x33df5d=_0x1d9bf5,_0x51f90c=[_0x33df5d(0xc6)+_0x553e6c[_0x33df5d(0xc4)]+'\x22','tableName:\x20\x22'+_0x553e6c[_0x33df5d(0xde)]+'\x22','name:\x20\x22'+_0x553e6c[_0x33df5d(0xdc)]+'\x22'];return _0x553e6c[_0x33df5d(0xbd)]&&_0x51f90c['push'](_0x33df5d(0xb3)+_0x553e6c[_0x33df5d(0xbd)]+'\x22'),_0x33df5d(0xc3)+_0x51f90c[_0x33df5d(0xc8)](',\x20')+'\x20},';})[_0x1d9bf5(0xc8)](''),_0x1e0cda=_0x2b5ab2||_0x4b18d0[0x0]?.[_0x1d9bf5(0xbd)]||_0x1d9bf5(0xab);let _0xb4d2d7=_0x3d8367[_0x1d9bf5(0xad)](/\{AppCode\}/g,_0xed4c3e)[_0x1d9bf5(0xad)](/\{ModelConfigs\}/g,_0x57e7a0)[_0x1d9bf5(0xad)](/\{ExampleModelName\}/g,_0x1e0cda)[_0x1d9bf5(0xad)](/\{ApiFileName\}/g,_0x5b2b32||_0x1d9bf5(0xc0))['replace'](/\{ConfigName\}/g,_0x30dedf||_0x1d9bf5(0xb5))[_0x1d9bf5(0xad)](/\{ClientConfigParam\}/g,_0x1dda5b||'')['replace'](/\{VarPrefix\}/g,_0x35607a||'LOVRABET')[_0x1d9bf5(0xad)](/\{CreatedAt\}/g,_0x1da689);return _0xb4d2d7;}static async[a307_0x5d06aa(0xe6)](_0x475a25,_0x69d970,_0x4271d3,_0xb4b26b,_0x3e171d=!![]){const _0x1f23ca=a307_0x5d06aa,_0x264f81=Date[_0x1f23ca(0xda)]();try{_0x3e171d&&logger[_0x1f23ca(0xd2)](_0x1f23ca(0xaf),_0x1f23ca(0xdb),{'templatePath':_0x475a25,'targetPath':_0x69d970,'pageName':_0x4271d3,'templateName':_0xb4b26b});await a307_0x2ae4c4['promises'][_0x1f23ca(0xd9)](_0x69d970,{'recursive':!![]}),await this[_0x1f23ca(0xc9)](_0x475a25,_0x69d970,_0x4271d3,_0xb4b26b);if(_0x3e171d){const _0x203d1b=Date['now']()-_0x264f81;logger[_0x1f23ca(0xb9)]('template',_0x1f23ca(0xc5),_0x203d1b,{'pageName':_0x4271d3,'templateName':_0xb4b26b});}}catch(_0x17af14){if(_0x3e171d){const _0x15a197=Date[_0x1f23ca(0xda)]()-_0x264f81;logger[_0x1f23ca(0xeb)](_0x1f23ca(0xaf),_0x1f23ca(0xd5),{'templatePath':_0x475a25,'targetPath':_0x69d970,'pageName':_0x4271d3,'templateName':_0xb4b26b,'error':_0x17af14 instanceof Error?_0x17af14['message']:String(_0x17af14),'duration':_0x15a197});}throw _0x17af14;}}static async['processDirectory'](_0x12fb86,_0x4cb2db,_0x12ea29,_0x43239e){const _0x473e54=a307_0x5d06aa,_0x4050c9=await a307_0x2ae4c4['promises']['readdir'](_0x12fb86,{'withFileTypes':!![]});for(const _0x436c6d of _0x4050c9){const _0x1eb991=a307_0x599f30[_0x473e54(0xc8)](_0x12fb86,_0x436c6d[_0x473e54(0xdc)]);let _0x1ad06f=a307_0x599f30[_0x473e54(0xc8)](_0x4cb2db,_0x436c6d['name']);_0x436c6d[_0x473e54(0xdc)][_0x473e54(0xd4)](_0x473e54(0xcb))&&(_0x1ad06f=a307_0x599f30['join'](_0x4cb2db,_0x436c6d[_0x473e54(0xdc)][_0x473e54(0xad)](/\.tpl$/,'')));if(_0x436c6d[_0x473e54(0xec)]())await a307_0x2ae4c4['promises'][_0x473e54(0xd9)](_0x1ad06f,{'recursive':!![]}),await this[_0x473e54(0xc9)](_0x1eb991,_0x1ad06f,_0x12ea29,_0x43239e);else _0x436c6d['isFile']()&&await this[_0x473e54(0xb4)](_0x1eb991,_0x1ad06f,_0x12ea29,_0x43239e);}}static async['processFile'](_0x1bd924,_0x1be1ee,_0x57c044,_0x385873){const _0x4b3f51=a307_0x5d06aa,_0x10edaa=a307_0x599f30[_0x4b3f51(0xcf)](_0x1bd924)[_0x4b3f51(0xdf)]();_0x1bd924[_0x4b3f51(0xd4)](_0x4b3f51(0xcb))&&(_0x1be1ee=_0x1be1ee[_0x4b3f51(0xad)](/\.tpl$/,''));const _0x534a54=[_0x4b3f51(0xce),_0x4b3f51(0xcd),_0x4b3f51(0xb2),_0x4b3f51(0xbc),_0x4b3f51(0xd0),'.md','.css',_0x4b3f51(0xd6),_0x4b3f51(0xcb)];if(_0x534a54[_0x4b3f51(0xed)](_0x10edaa)||_0x1bd924[_0x4b3f51(0xd4)](_0x4b3f51(0xcb))){const _0x37e0ce=await a307_0x2ae4c4[_0x4b3f51(0xd1)][_0x4b3f51(0xc2)](_0x1bd924,_0x4b3f51(0xe1)),_0x20ed08=this[_0x4b3f51(0xb1)](_0x37e0ce,_0x57c044,_0x385873);await a307_0x2ae4c4['promises'][_0x4b3f51(0xba)](_0x1be1ee,_0x20ed08,_0x4b3f51(0xe1));}else await a307_0x2ae4c4[_0x4b3f51(0xd1)][_0x4b3f51(0xca)](_0x1bd924,_0x1be1ee);}}
@@ -1 +1 @@
1
- (function(_0xd08fcd,_0x2d9e86){const _0x4983bd=a301_0x2126,_0x4de5e4=_0xd08fcd();while(!![]){try{const _0xbe79fc=-parseInt(_0x4983bd(0xe5))/0x1*(-parseInt(_0x4983bd(0xef))/0x2)+-parseInt(_0x4983bd(0xf5))/0x3+parseInt(_0x4983bd(0xea))/0x4+-parseInt(_0x4983bd(0xeb))/0x5*(parseInt(_0x4983bd(0xed))/0x6)+parseInt(_0x4983bd(0xe6))/0x7+-parseInt(_0x4983bd(0xdd))/0x8+parseInt(_0x4983bd(0xe1))/0x9;if(_0xbe79fc===_0x2d9e86)break;else _0x4de5e4['push'](_0x4de5e4['shift']());}catch(_0x38814d){_0x4de5e4['push'](_0x4de5e4['shift']());}}}(a301_0x1747,0xe0e08));import{mkdir,readFile,writeFile}from'node:fs/promises';function a301_0x1747(){const _0x4595b8=['\x20available,\x20current\x20','yes','latest','20623851CWRdaT','checkedAt','update-check.json','utf8','21259DjqWpK','3505264JGTFTA','stableVersion','\x20update','stringify','2570396HFihGV','25vZUcDZ','object','1380930TGGqHf','lastNotifiedAt','38WFhJnJ','true','rabetbase-cli','parse','/v/','trim','2064855asmHTl','number','valid','gte','8629240RRFnlK'];a301_0x1747=function(){return _0x4595b8;};return a301_0x1747();}import{homedir}from'node:os';import{dirname,join}from'node:path';import a301_0xd5250f 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 a301_0x2126(_0x2325c7,_0x273df0){_0x2325c7=_0x2325c7-0xda;const _0x1747a2=a301_0x1747();let _0x212620=_0x1747a2[_0x2325c7];return _0x212620;}const UPDATE_CHECK_TTL_MS=0xc*0x3c*0x3c*0x3e8,UPDATE_NOTICE_TTL_MS=0x18*0x3c*0x3c*0x3e8;function isUpdateNoticeDisabled(){const _0x4d9864=a301_0x2126,_0x2f2a1a=process.env.RABETBASE_NO_UPDATE_NOTICE?.[_0x4d9864(0xf4)]()['toLowerCase']();return _0x2f2a1a==='1'||_0x2f2a1a===_0x4d9864(0xf0)||_0x2f2a1a===_0x4d9864(0xdf);}function cacheRoot(){return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),'.cache');}export function getUpdateNoticeCachePath(){const _0x56d72c=a301_0x2126;return join(cacheRoot(),_0x56d72c(0xf1),_0x56d72c(0xe3));}async function readUpdateNoticeCache(){const _0x546d04=a301_0x2126;try{const _0xc80be7=await readFile(getUpdateNoticeCachePath(),'utf8'),_0x1cb03e=JSON[_0x546d04(0xf2)](_0xc80be7);if(!_0x1cb03e||typeof _0x1cb03e!==_0x546d04(0xec))return{};return _0x1cb03e;}catch{return{};}}async function writeUpdateNoticeCache(_0x2fd94f){const _0x53489d=a301_0x2126;try{const _0x307127=getUpdateNoticeCachePath();await mkdir(dirname(_0x307127),{'recursive':!![]}),await writeFile(_0x307127,JSON[_0x53489d(0xe9)](_0x2fd94f,null,0x2)+'\x0a',_0x53489d(0xe4));}catch{}}function isFreshCheck(_0x456271,_0x318a22){const _0x35b56f=a301_0x2126;return typeof _0x456271['checkedAt']===_0x35b56f(0xda)&&_0x318a22-_0x456271[_0x35b56f(0xe2)]<UPDATE_CHECK_TTL_MS;}function isRecentlyNotified(_0x5aad8f,_0x2a4e24,_0x981f50){const _0x12764e=a301_0x2126;return _0x5aad8f['lastNotifiedVersion']===_0x2a4e24&&typeof _0x5aad8f[_0x12764e(0xee)]==='number'&&_0x981f50-_0x5aad8f['lastNotifiedAt']<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x93a27b){const _0x2dc2b5=a301_0x2126;return'https://www.npmjs.com/package/'+NPM_PACKAGE_NAME+_0x2dc2b5(0xf3)+_0x93a27b;}export async function resolveLatestUpdateNotice(){const _0x3810d5=a301_0x2126;if(isUpdateNoticeDisabled())return null;try{const _0xda791f=Date['now'](),_0x12708e=getCliVersion(),_0x4f907d=await readUpdateNoticeCache();let _0x8284ef=isFreshCheck(_0x4f907d,_0xda791f)?_0x4f907d[_0x3810d5(0xe0)]?.['trim']():undefined;if(!_0x8284ef&&!isFreshCheck(_0x4f907d,_0xda791f)){const _0x39baf1=await getCliVersionPolicy();_0x8284ef=_0x39baf1?.[_0x3810d5(0xe7)]?.[_0x3810d5(0xf4)]()||undefined,await writeUpdateNoticeCache({..._0x4f907d,'checkedAt':_0xda791f,'latest':_0x8284ef,'failed':!_0x8284ef});}if(!_0x8284ef||!a301_0xd5250f[_0x3810d5(0xdb)](_0x12708e)||!a301_0xd5250f[_0x3810d5(0xdb)](_0x8284ef))return null;if(a301_0xd5250f[_0x3810d5(0xdc)](_0x12708e,_0x8284ef))return null;if(isRecentlyNotified(_0x4f907d,_0x8284ef,_0xda791f))return null;const _0x599694=CLI_BIN_NAME+_0x3810d5(0xe8);return await writeUpdateNoticeCache({..._0x4f907d,'checkedAt':isFreshCheck(_0x4f907d,_0xda791f)?_0x4f907d[_0x3810d5(0xe2)]:_0xda791f,'latest':_0x8284ef,'failed':![],'lastNotifiedVersion':_0x8284ef,'lastNotifiedAt':_0xda791f}),{'command':_0x599694,'current':_0x12708e,'latest':_0x8284ef,'url':buildNpmVersionUrl(_0x8284ef),'message':CLI_BIN_NAME+'\x20'+_0x8284ef+_0x3810d5(0xde)+_0x12708e+',\x20run:\x20'+_0x599694};}catch{return null;}}
1
+ (function(_0x42c7de,_0x2e2bdc){const _0x4d05bc=a308_0xef00,_0x3c366c=_0x42c7de();while(!![]){try{const _0x39d948=-parseInt(_0x4d05bc(0x1c0))/0x1*(-parseInt(_0x4d05bc(0x1b8))/0x2)+-parseInt(_0x4d05bc(0x1b6))/0x3+parseInt(_0x4d05bc(0x1b9))/0x4*(parseInt(_0x4d05bc(0x1d3))/0x5)+-parseInt(_0x4d05bc(0x1bf))/0x6*(parseInt(_0x4d05bc(0x1d0))/0x7)+parseInt(_0x4d05bc(0x1b4))/0x8*(-parseInt(_0x4d05bc(0x1c7))/0x9)+-parseInt(_0x4d05bc(0x1ce))/0xa+parseInt(_0x4d05bc(0x1d1))/0xb*(parseInt(_0x4d05bc(0x1d4))/0xc);if(_0x39d948===_0x2e2bdc)break;else _0x3c366c['push'](_0x3c366c['shift']());}catch(_0x754b86){_0x3c366c['push'](_0x3c366c['shift']());}}}(a308_0x3d68,0x59325));import{mkdir,readFile,writeFile}from'node:fs/promises';import{homedir}from'node:os';import{dirname,join}from'node:path';import a308_0x586753 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 _0x46aedf=a308_0xef00,_0x324727=process.env.RABETBASE_NO_UPDATE_NOTICE?.['trim']()[_0x46aedf(0x1bd)]();return _0x324727==='1'||_0x324727===_0x46aedf(0x1ba)||_0x324727===_0x46aedf(0x1c6);}function cacheRoot(){const _0x2a1b2d=a308_0xef00;return process.env.XDG_CACHE_HOME||process.env.LOCALAPPDATA||join(homedir(),_0x2a1b2d(0x1c3));}export function getUpdateNoticeCachePath(){const _0x194897=a308_0xef00;return join(cacheRoot(),_0x194897(0x1c5),_0x194897(0x1bc));}async function readUpdateNoticeCache(){const _0x10a440=a308_0xef00;try{const _0x2a2920=await readFile(getUpdateNoticeCachePath(),_0x10a440(0x1cd)),_0x23afe8=JSON[_0x10a440(0x1c4)](_0x2a2920);if(!_0x23afe8||typeof _0x23afe8!==_0x10a440(0x1b7))return{};return _0x23afe8;}catch{return{};}}async function writeUpdateNoticeCache(_0x4a8a3c){const _0x2a35f2=a308_0xef00;try{const _0x11fffd=getUpdateNoticeCachePath();await mkdir(dirname(_0x11fffd),{'recursive':!![]}),await writeFile(_0x11fffd,JSON['stringify'](_0x4a8a3c,null,0x2)+'\x0a',_0x2a35f2(0x1cd));}catch{}}function isFreshCheck(_0x275b42,_0x3ef3ab){const _0x5b4e68=a308_0xef00;return typeof _0x275b42[_0x5b4e68(0x1cc)]===_0x5b4e68(0x1ca)&&_0x3ef3ab-_0x275b42[_0x5b4e68(0x1cc)]<UPDATE_CHECK_TTL_MS;}function a308_0xef00(_0x21f807,_0x3fa9ac){_0x21f807=_0x21f807-0x1b4;const _0x3d6888=a308_0x3d68();let _0xef0089=_0x3d6888[_0x21f807];return _0xef0089;}function isRecentlyNotified(_0x9b949c,_0x5df6a6,_0x52d141){const _0x278266=a308_0xef00;return _0x9b949c[_0x278266(0x1c2)]===_0x5df6a6&&typeof _0x9b949c[_0x278266(0x1c8)]===_0x278266(0x1ca)&&_0x52d141-_0x9b949c[_0x278266(0x1c8)]<UPDATE_NOTICE_TTL_MS;}export function buildNpmVersionUrl(_0x281a46){const _0x5f354a=a308_0xef00;return _0x5f354a(0x1bb)+NPM_PACKAGE_NAME+_0x5f354a(0x1c1)+_0x281a46;}export async function resolveLatestUpdateNotice(){const _0x25af2c=a308_0xef00;if(isUpdateNoticeDisabled())return null;try{const _0x55fe5f=Date[_0x25af2c(0x1c9)](),_0x2dc339=getCliVersion(),_0xf20e13=await readUpdateNoticeCache();let _0x19af13=isFreshCheck(_0xf20e13,_0x55fe5f)?_0xf20e13['latest']?.['trim']():undefined;if(!_0x19af13&&!isFreshCheck(_0xf20e13,_0x55fe5f)){const _0x41e059=await getCliVersionPolicy();_0x19af13=_0x41e059?.[_0x25af2c(0x1cb)]?.['trim']()||undefined,await writeUpdateNoticeCache({..._0xf20e13,'checkedAt':_0x55fe5f,'latest':_0x19af13,'failed':!_0x19af13});}if(!_0x19af13||!a308_0x586753[_0x25af2c(0x1cf)](_0x2dc339)||!a308_0x586753[_0x25af2c(0x1cf)](_0x19af13))return null;if(a308_0x586753['gte'](_0x2dc339,_0x19af13))return null;if(isRecentlyNotified(_0xf20e13,_0x19af13,_0x55fe5f))return null;const _0x3a9cc7=CLI_BIN_NAME+_0x25af2c(0x1be);return await writeUpdateNoticeCache({..._0xf20e13,'checkedAt':isFreshCheck(_0xf20e13,_0x55fe5f)?_0xf20e13[_0x25af2c(0x1cc)]:_0x55fe5f,'latest':_0x19af13,'failed':![],'lastNotifiedVersion':_0x19af13,'lastNotifiedAt':_0x55fe5f}),{'command':_0x3a9cc7,'current':_0x2dc339,'latest':_0x19af13,'url':buildNpmVersionUrl(_0x19af13),'message':CLI_BIN_NAME+'\x20'+_0x19af13+_0x25af2c(0x1b5)+_0x2dc339+_0x25af2c(0x1d2)+_0x3a9cc7};}catch{return null;}}function a308_0x3d68(){const _0x1659be=['number','stableVersion','checkedAt','utf8','4372720TjwJAU','valid','1057JcoTEI','55NdsyVz',',\x20run:\x20','586455ptCdUV','1917588MYyVXs','262552qAOjDP','\x20available,\x20current\x20','716925zObODk','object','2714yQEvPU','8cyMlJP','true','https://www.npmjs.com/package/','update-check.json','toLowerCase','\x20update','20970bWAfDF','419mkDBRK','/v/','lastNotifiedVersion','.cache','parse','rabetbase-cli','yes','9QJwmCN','lastNotifiedAt','now'];a308_0x3d68=function(){return _0x1659be;};return a308_0x3d68();}
@@ -1 +1 @@
1
- function a302_0x262d(_0x201927,_0x97bf4f){_0x201927=_0x201927-0xe4;var _0x490a34=a302_0x490a();var _0x262da2=_0x490a34[_0x201927];return _0x262da2;}(function(_0x1a342c,_0x5e380c){var _0x2ecd66=a302_0x262d,_0x54877d=_0x1a342c();while(!![]){try{var _0x2a5cba=-parseInt(_0x2ecd66(0xea))/0x1*(parseInt(_0x2ecd66(0xe4))/0x2)+-parseInt(_0x2ecd66(0xee))/0x3*(-parseInt(_0x2ecd66(0xe5))/0x4)+parseInt(_0x2ecd66(0xef))/0x5*(parseInt(_0x2ecd66(0xe7))/0x6)+parseInt(_0x2ecd66(0xec))/0x7*(parseInt(_0x2ecd66(0xe9))/0x8)+parseInt(_0x2ecd66(0xe8))/0x9+parseInt(_0x2ecd66(0xe6))/0xa*(-parseInt(_0x2ecd66(0xed))/0xb)+-parseInt(_0x2ecd66(0xeb))/0xc;if(_0x2a5cba===_0x5e380c)break;else _0x54877d['push'](_0x54877d['shift']());}catch(_0x441e80){_0x54877d['push'](_0x54877d['shift']());}}}(a302_0x490a,0xba835));function a302_0x490a(){var _0x238548=['2345474fwDPtb','11268yEZnZJ','10wwEhqn','135648yctxLf','3601296NZKFrD','8CzTMRh','1fnVmEx','15317052OIuEep','10012499FIenqu','5603323GJpNbw','1413tfIdrf','125kSvrFS'];a302_0x490a=function(){return _0x238548;};return a302_0x490a();}import{VERSION}from'../generated/build-info.js';export function getCliVersion(){return VERSION;}
1
+ (function(_0x38ffeb,_0x4d8f15){var _0x151020=a309_0x10ed,_0x251a8d=_0x38ffeb();while(!![]){try{var _0x45fcfd=parseInt(_0x151020(0x122))/0x1+parseInt(_0x151020(0x120))/0x2+-parseInt(_0x151020(0x11f))/0x3+-parseInt(_0x151020(0x11e))/0x4+-parseInt(_0x151020(0x124))/0x5*(-parseInt(_0x151020(0x123))/0x6)+parseInt(_0x151020(0x11c))/0x7*(-parseInt(_0x151020(0x11d))/0x8)+parseInt(_0x151020(0x121))/0x9;if(_0x45fcfd===_0x4d8f15)break;else _0x251a8d['push'](_0x251a8d['shift']());}catch(_0x2971a2){_0x251a8d['push'](_0x251a8d['shift']());}}}(a309_0x53bc,0x7dd27));function a309_0x53bc(){var _0x5df1eb=['4197006ppNpAP','460655jfqlSD','3975294qQvnqL','5IrcXLj','14WfQyLs','1188784ivjbtS','3282940IXmyee','591303ErpJnq','481722QhekgP'];a309_0x53bc=function(){return _0x5df1eb;};return a309_0x53bc();}import{VERSION}from'../generated/build-info.js';function a309_0x10ed(_0x703dc7,_0x2e140b){_0x703dc7=_0x703dc7-0x11c;var _0x53bc2e=a309_0x53bc();var _0x10ed9a=_0x53bc2e[_0x703dc7];return _0x10ed9a;}export function getCliVersion(){return VERSION;}
@@ -1 +1 @@
1
- (function(_0xa438e5,_0x5eb39a){var _0x322092=a303_0x5bdd,_0x464ef2=_0xa438e5();while(!![]){try{var _0xcb5a39=-parseInt(_0x322092(0x75))/0x1+parseInt(_0x322092(0x74))/0x2+-parseInt(_0x322092(0x77))/0x3*(parseInt(_0x322092(0x72))/0x4)+-parseInt(_0x322092(0x6f))/0x5*(parseInt(_0x322092(0x73))/0x6)+parseInt(_0x322092(0x78))/0x7+-parseInt(_0x322092(0x71))/0x8+parseInt(_0x322092(0x76))/0x9*(parseInt(_0x322092(0x70))/0xa);if(_0xcb5a39===_0x5eb39a)break;else _0x464ef2['push'](_0x464ef2['shift']());}catch(_0x1bbf05){_0x464ef2['push'](_0x464ef2['shift']());}}}(a303_0x3146,0xe44b7));function a303_0x3146(){var _0x43e4c3=['72TMeWdp','50118sfEeGO','447562fEWOKL','1654308AqNvpq','9WkQAiT','278538BLcbsc','11288550GApGrp','535WpJNhb','47911990DBdBiV','11785824jIbjlm'];a303_0x3146=function(){return _0x43e4c3;};return a303_0x3146();}function a303_0x5bdd(_0x4f628e,_0x25f5d4){_0x4f628e=_0x4f628e-0x6f;var _0x314606=a303_0x3146();var _0x5bdd5a=_0x314606[_0x4f628e];return _0x5bdd5a;}import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';export async function withActiveCookie(_0xda01f3,_0x57c2ea){setActiveCookie(_0xda01f3);try{return await _0x57c2ea();}finally{clearActiveCookie();}}
1
+ (function(_0x223fe0,_0x2f9dce){var _0x779c1f=a310_0x4c9a,_0x368283=_0x223fe0();while(!![]){try{var _0x3613f6=parseInt(_0x779c1f(0xac))/0x1*(parseInt(_0x779c1f(0xb2))/0x2)+parseInt(_0x779c1f(0xaa))/0x3*(-parseInt(_0x779c1f(0xab))/0x4)+parseInt(_0x779c1f(0xad))/0x5*(-parseInt(_0x779c1f(0xae))/0x6)+parseInt(_0x779c1f(0xb3))/0x7+-parseInt(_0x779c1f(0xb0))/0x8+-parseInt(_0x779c1f(0xaf))/0x9+parseInt(_0x779c1f(0xb1))/0xa;if(_0x3613f6===_0x2f9dce)break;else _0x368283['push'](_0x368283['shift']());}catch(_0x3c62a5){_0x368283['push'](_0x368283['shift']());}}}(a310_0x1f10,0x9fca5));function a310_0x4c9a(_0x49cc77,_0x21f8a9){_0x49cc77=_0x49cc77-0xaa;var _0x1f1004=a310_0x1f10();var _0x4c9aa0=_0x1f1004[_0x49cc77];return _0x4c9aa0;}import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';export async function withActiveCookie(_0x1106de,_0x239986){setActiveCookie(_0x1106de);try{return await _0x239986();}finally{clearActiveCookie();}}function a310_0x1f10(){var _0x9fb203=['1038SAWSfC','1319733ytyMnA','6933824QerPCv','29785110csCxcB','675504DowBoW','3088925aUajOJ','1821957RLgnBz','8diIBBf','1JuCEgc','25290XntPoa'];a310_0x1f10=function(){return _0x9fb203;};return a310_0x1f10();}
@@ -1 +1 @@
1
- (function(_0x107206,_0x456e19){var _0x516cca=a304_0x3913,_0x154125=_0x107206();while(!![]){try{var _0x11bd2d=-parseInt(_0x516cca(0x11e))/0x1*(parseInt(_0x516cca(0x120))/0x2)+parseInt(_0x516cca(0x119))/0x3*(-parseInt(_0x516cca(0x11c))/0x4)+parseInt(_0x516cca(0x11d))/0x5*(-parseInt(_0x516cca(0x121))/0x6)+-parseInt(_0x516cca(0x11f))/0x7+-parseInt(_0x516cca(0x117))/0x8+-parseInt(_0x516cca(0x11b))/0x9*(parseInt(_0x516cca(0x122))/0xa)+parseInt(_0x516cca(0x118))/0xb*(parseInt(_0x516cca(0x116))/0xc);if(_0x11bd2d===_0x456e19)break;else _0x154125['push'](_0x154125['shift']());}catch(_0x8d9ca2){_0x154125['push'](_0x154125['shift']());}}}(a304_0x4b68,0x6a15b));export function writeCliSideChannelLine(_0x277a53){var _0x36d923=a304_0x3913;process[_0x36d923(0x11a)]['write'](_0x277a53+'\x0a');}function a304_0x3913(_0x45068b,_0x549bb2){_0x45068b=_0x45068b-0x116;var _0x4b68b8=a304_0x4b68();var _0x3913a7=_0x4b68b8[_0x45068b];return _0x3913a7;}function a304_0x4b68(){var _0x4ea295=['78265KIzNAA','36ZJjTrS','stderr','1521SZplcG','60936iRpBjB','814965CZSiUU','4hODshZ','1841357IxLLID','32218cTdWtI','30uKyYxf','430juATcY','3048dopWFb','321280opwXQJ'];a304_0x4b68=function(){return _0x4ea295;};return a304_0x4b68();}
1
+ function a311_0x2be0(_0x20b0a6,_0x1d2352){_0x20b0a6=_0x20b0a6-0xde;var _0x4a3c6a=a311_0x4a3c();var _0x2be01=_0x4a3c6a[_0x20b0a6];return _0x2be01;}(function(_0xc8a146,_0x4a5b88){var _0x26256b=a311_0x2be0,_0x4e280e=_0xc8a146();while(!![]){try{var _0x4d7cf8=parseInt(_0x26256b(0xde))/0x1*(-parseInt(_0x26256b(0xe6))/0x2)+-parseInt(_0x26256b(0xe1))/0x3+parseInt(_0x26256b(0xe8))/0x4+parseInt(_0x26256b(0xe7))/0x5+parseInt(_0x26256b(0xe0))/0x6*(parseInt(_0x26256b(0xe3))/0x7)+parseInt(_0x26256b(0xe5))/0x8+-parseInt(_0x26256b(0xe4))/0x9;if(_0x4d7cf8===_0x4a5b88)break;else _0x4e280e['push'](_0x4e280e['shift']());}catch(_0xe2bf5b){_0x4e280e['push'](_0x4e280e['shift']());}}}(a311_0x4a3c,0xc9662));function a311_0x4a3c(){var _0x36759c=['1595160NaxrZZ','215777OsMfHg','write','12rNApsb','2932122NloDCy','stderr','5237799DKSWQv','3290535bRGmbW','3255344gwbKml','8tGYQtd','3644025QcHcPL'];a311_0x4a3c=function(){return _0x36759c;};return a311_0x4a3c();}export function writeCliSideChannelLine(_0x575c81){var _0x48a0ee=a311_0x2be0;process[_0x48a0ee(0xe2)][_0x48a0ee(0xdf)](_0x575c81+'\x0a');}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/rabetbase-cli",
3
- "version": "2.5.1-beta.3",
3
+ "version": "2.5.1-beta.5",
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": [
@@ -46,6 +46,7 @@
46
46
  "sync:cdn": "node scripts/sync-cdn-assets.js",
47
47
  "verify:bundled-jq": "node scripts/verify-bundled-jq.mjs",
48
48
  "regression:release-smoke": "node scripts/regression-release-smoke.mjs",
49
+ "release:summary:prepare": "node scripts/release-summary-preparation.mjs",
49
50
  "deploy:verify": "node scripts/deploy-verify.mjs",
50
51
  "pack:dry-run-summary": "node scripts/package-dry-run-summary.mjs",
51
52
  "verify:release-package": "node scripts/verify-release-package.mjs",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: rabetbase
3
- version: 2.5.1-beta.3
4
- description: "Lovrabet 开发工作流 CLI — 通过 rabetbase 命令管理数据集、数据库连接(dblink)、局部部署研发元数据同步、数据列表页(Data List Page)、自定义页面(Custom Page)、SQL 查询、Backend Function 脚本、通知配置、企业知识库、菜单事实读取与同步、开发角色与协作者、应用文件、面向票证类业务材料文字与结构化字段提取的 OCR、代码生成,以及平台问题上报。触发词:数据集、数据表、dataset relation-audit、dataset delete、dataset restore、dataset user-deleted-field-list、dataset field-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、deployment sync、局部部署、研发元数据同步、target-env、direct、自定义 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.1-beta.5
4
+ description: "Use for Lovrabet development work through the rabetbase CLI: create or bind projects (including creating an AppCode project in the current folder), pull Dataset/API facts and maintain SDK clients, or manage datasets, database connections, pages, SQL, Backend Functions, menus, notifications, knowledge bases, Agent Context Rules, roles, files, OCR, deployment metadata, platform issues, and 钉钉沙箱账号绑定. Trigger when the user mentions rabetbase, Lovrabet development, AppCode, Dataset, project creation, api pull/codegen, dblink, page, SQL, BFF, menu, notification, knowledge base, Agent Context Rules, RULES.md, DATABASE.md, rule list/get/set, role, file/OCR, or related development workflows."
5
5
  metadata:
6
6
  requires:
7
7
  bins: ["rabetbase"]
@@ -12,15 +12,15 @@ metadata:
12
12
  # Rabetbase CLI
13
13
 
14
14
  > **前置条件:** 使用任何 API 命令前,需完成认证和配置(见下方)。
15
- > **执行前必做:** 执行任何命令前,必须先阅读对应命令的 reference 文档,再调用命令。
15
+ > **资料使用:** 先从意图索引定位能力,只读取当前任务直接相关的 reference。写操作、覆盖/恢复、复杂输出解析或命令契约不明确时,执行前读取对应 reference;简单只读操作可依据已确认的 CLI schema 直接完成。
16
16
  > **命名约定:** 统一使用 `rabetbase <service> <command> [flags]` 格式。
17
17
  > **输出格式:** AI Agent 需要结构化输出时,**优先 `--format compress`**(与 `json` 相同信封,单行紧凑、省 token);需要人类可读缩进时用 **`--format json`**。可在 **`json` / `compress`** 上叠加 **`--jq '<expr>'`**(对最终打印的整条 JSON 做 jq;二进制查找顺序为 **`JQ_PATH` → CLI 内置 sidecar jq → `PATH` 上的 jq**,通常无需单独安装系统 jq)。不确定当前 CLI 有哪些子命令或 flags 时,先跑 **`rabetbase schema`**(与 `--help` 同源的机器可读契约,无需登录)。
18
18
 
19
19
  ## 前置条件
20
20
 
21
- 1. **连接配置与认证分离**:首次使用先执行 `rabetbase config init`。交互模式选择 `Mainland China (cn)` 或 `Indonesia (id)`;非交互模式显式传 `--region cn|id`,未传时默认 `cn`。尚未发布的 `global` 不出现在新配置入口中。企业独立部署使用 `--domain-config <file>` 或对应 `--*-domain` flags;自定义 HTTPS 本地回调时同时提供 Local 与 Certificate Domain。当前所有已开放节点和独立部署统一使用中国大陆 CDN 配置,Lovrabet 服务 Domain 仍分别解析。`config init` 固定重建全局节点/Domain 配置,保留 Cookie、AccessKey、format、locale 和应用绑定,但不登录、不绑定项目;随后再执行 `rabetbase auth login`
21
+ 1. **连接配置与认证分离**:首次使用先执行 `rabetbase config init`。交互模式选择当前已开放国家/地区;非交互模式显式传 `--region`,未传时使用默认节点。企业独立部署优先导入 `lovrabet-routing/v1` 清单,也兼容旧扁平 Domain 文件和对应 `--*-domain` flags。`config init` 默认重建当前项目节点/Domain 配置,显式 `--global` 时写全局;保留 Cookie、AccessKey、format、locale 和应用绑定,但不登录、不绑定项目,随后再执行 `rabetbase auth login`
22
22
  2. **AppCode**:确保 `.rabetbase.json` 中设置了 `apps`(单应用自动选中;多应用再配 `defaultApp`),或兼容读取的顶层 `appcode`,或通过 `--appcode <code>` / `--app <name>` 传入。旧 `.lovrabet.json` 不会自动读取
23
- 3. **配置文件**:`rabetbase config init` 固定写全局 `~/.rabetbase.json`,不接受项目作用域;默认 `cn` 不落冗余 `region`。官方节点模式清理显式和遗留 Domain,独立部署模式清理旧 `region`/Domain 后写入所提供的覆盖值。完整字段说明见 [`.rabetbase.json` 配置参考](references/rabetbase-config.md)。当前目录应用绑定使用下方 `workspace init`,二者不要混用
23
+ 3. **配置文件**:`rabetbase config init` 默认写当前项目 `.rabetbase.json`,显式 `--global` 时写 `~/.rabetbase.json`;默认节点不落冗余 `region`。官方节点模式清理显式和遗留 Domain,独立部署模式清理旧 `region`/Domain 后写入路由配置。完整字段说明见 [`.rabetbase.json` 配置参考](references/rabetbase-config.md)。当前目录应用绑定使用下方 `workspace init`
24
24
  4. **工作目录应用绑定**:当前目录要固定使用某个应用时,使用 `rabetbase workspace init --appcode <code>` 或 `rabetbase workspace use --app <name>`(选型见「app vs workspace 职责边界」)
25
25
  5. **多应用场景**:一个项目有多个应用时,先 `rabetbase workspace add <name> --appcode …` 登记各应用,再用 `--app <name>` 临时切换,或 `workspace use --app <name>` 修改当前工作目录默认应用
26
26
  6. **平台发现**:当你不知道当前登录账号能访问哪些应用时,先 `rabetbase app list --remote`;它查询平台目录,不修改本地配置
@@ -60,7 +60,7 @@ metadata:
60
60
  - 全部批次结束后再次执行异步差异刷新并重新获取完整差异;仍未收敛时,按 [`database-connection-workflow.md`](guides/database-connection-workflow.md) 对剩余 `toAnalyzeTables` 逐表串行重试且每表只恢复一次。仅当用户明确要求跳过分析/刷新时直接读取现有差异。状态查询失败继续使用原 `planId`,不得重复启动任务
61
61
  - 输出很大且只需子集时,在 `compress`/`json` 上加 `--jq '.data…'` 缩小结果
62
62
  - 需要真实业务行数据时必须交接给 `lovrabet data filter/getOne`;`lovrabet` 不可用时报告阻断并提示安装 Skill 与 CLI,不要静默安装或修复,也不要用 `rabetbase sql exec` 当行数据替代,见 [`guides/data-api-guidelines.md`](guides/data-api-guidelines.md)
63
- - 需要 `src/api/api.ts` / `client.ts` 时:先 `rabetbase api pull --format compress` 取 `data.models`、`data.files`、`data.needsAgentMerge`,再按 [`sdk-client-generation.md`](guides/sdk-client-generation.md) 更新 TypeScript。`api pull` **不会覆盖已有** `api.ts`/`client.ts`
63
+ - 需要 `src/api/api.ts` / `client.ts` 时:先 `rabetbase api pull --format compress` 取 `data.models`、`data.files`、`data.needsAgentMerge`,再按 [`sdk-client-generation.md`](guides/sdk-client-generation.md) 更新 TypeScript。`api pull` 默认**不会覆盖已有** `api.ts`/`client.ts`;只有用户明确要求放弃本地定制并完整重建时才使用 `--force --yes`
64
64
  3. **SQL 工作流严格分步**
65
65
  - 推荐路径:查现有(`sql list/detail`) 或新建(`sql create`) → 拉/落本地(`sql pull` / `sql create`) → 编辑同步目录文件 → 可选校验(`sql validate`) → 检查状态(`sql status`) → 先预览(`sql push --dry-run` / `sql delete --dry-run`) → 再 `sql push` / `sql delete` → `sql detail` / `sql exec` 验证
66
66
  - 先使用 `sql list/detail` 查找可复用的 Custom SQL;没有满足需求的资源时,按照 [`sql-creation-workflow.md`](guides/sql-creation-workflow.md) 与 [`sql-mybatis.md`](guides/sql-mybatis.md) 创建、校验、发布并验证
@@ -156,10 +156,10 @@ metadata:
156
156
 
157
157
  ## 配置作用域原则(`--global`)
158
158
 
159
- - **普通写操作默认当前项目**(`workspace add`、`config set`、`project create` 等),除非用户**显式**传 `--global`;`config init` 是首次连接配置入口,固定写全局配置。
159
+ - **写操作默认当前项目**(包括 `config init`、`workspace add`、`config set`、`project create` 等),除非用户**显式**传 `--global`。
160
160
  - **不要**在用户未要求时给命令加 `--global`** — 默认行为已是「项目优先」;只有用户明确要改全局配置或不在项目内且意图写全局时才使用。
161
161
  - **`config set`**:在**没有**项目配置文件(当前目录未解析到 `.rabetbase.json`)且**未**传 `--global` 时,CLI **拒绝执行**并提示使用 `--global` 或先 `rabetbase workspace init --appcode <code>`,**不会**静默写入全局。
162
- - **`project create`** 生成的新项目 `.rabetbase.json` **只继承**少量全局偏好(如 `cookie` / `locale` / `format` / `riskLevel` 等),**不会**把全局 `apps` / `defaultApp` 带入新项目文件;同时生成浏览器安全的 `src/api/sdk-config.ts` 与 `rabetbase.routing.json`。中国大陆、ID、Global 的 Lovrabet 服务 Domain、本地地址和证书由统一 Routing Profile 解析;当前共享资源统一使用中国大陆 CDN 配置,独立部署写客户最终服务 Domain。两个生成文件都不下发认证配置,后续 `api pull` 会刷新。
162
+ - **`project create`** 生成的新项目 `.rabetbase.json` **只继承**少量全局偏好(如 `cookie` / `locale` / `format` / `riskLevel` 等),**不会**把全局 `apps` / `defaultApp` 带入新项目文件;同时生成浏览器安全的 `src/api/sdk-config.ts` 与 `rabetbase.domain-routing.json`。每个官方节点直接声明自己的第三方库 CDN 与 Lovrabet 自有资源 Domain;项目文件始终包含解析后的完整地址,企业独立部署从共用清单读取显式 CDN。两个生成文件都不下发认证配置;Domain 配置变化后用 `project domain-routing-sync` 刷新项目快照,`api pull` 只刷新 SDK/API 文件。
163
163
  - **`api pull` / `api list`**:默认仅针对**项目** `apps`;需要合并全局已登记应用时加 `--global`(见各命令 reference)。
164
164
  - **`app list`**:默认展示**合并**后的全量;`--global` 仅全局、`--project` 仅项目(见 [`rabetbase app list`](references/rabetbase-app-list.md))。
165
165
 
@@ -297,7 +297,8 @@ const result = await client.bff.execute<DashboardData>({
297
297
  | 意图 | 推荐命令 | 备注 |
298
298
  |------|---------|------|
299
299
  | 初始化连接配置 | [`rabetbase config init`](references/rabetbase-init.md) | 选择官方节点或导入独立部署 Domain |
300
- | 创建新项目 | [`rabetbase project create`](references/rabetbase-project-create.md) | 支持 `--name` + `--appcode` 非交互 |
300
+ | 创建新项目 | [`rabetbase project create`](references/rabetbase-project-create.md) | 支持新目录或当前空目录创建;完成口径与安全边界见 reference |
301
+ | 刷新项目公开 Domain 路由 | [`rabetbase project domain-routing-sync`](references/rabetbase-project-domain-routing-sync.md) | 根据当前有效配置原子生成项目级 `rabetbase.domain-routing.json`;与前端页面路由无关 |
301
302
  | 从 lovrabet-cli 迁移 | [`rabetbase project upgrade`](references/rabetbase-project-upgrade.md) | 6 步自动迁移,`--yes` 跳过确认 |
302
303
  | 老项目翻新蓝图 / Legacy Application Blueprint | [`guides/legacy-application-blueprint-workflow.md`](guides/legacy-application-blueprint-workflow.md) | 先输出 `.rabetbase/blueprint/<appCode>/application-blueprint.md`,把老代码逻辑与 Dataset / Relations 绑定后再生成迁移 Backlog |
303
304
  | 运行 package.json 脚本 | [`rabetbase run <script>`](references/rabetbase-run.md) | `write`;先审阅脚本命令体,嵌入式工具暂不开放 |
@@ -315,7 +316,8 @@ const result = await client.bff.execute<DashboardData>({
315
316
  | 修改配置文件 | [`rabetbase config set <key> <value>`](references/rabetbase-config.md) | 默认写项目;无项目配置且未 `--global` 会拒绝;`--global` 写 `~/.rabetbase.json` |
316
317
  | 列出配置 | [`rabetbase config list`](references/rabetbase-config.md) | 查看当前生效的配置 |
317
318
  | 管理运行态 app-config | [`rabetbase app-config list/get/set/delete`](references/rabetbase-app-config.md) | 运行态 app-config 管理面;默认不输出明文 value;`set` 为 `write`,`delete` 保持 `high-risk-write` |
318
- | 管理和检索当前研发应用的企业知识库 | [`rabetbase kb list/detail/search/create/update/delete`](references/rabetbase-kb.md) | 管理仅 company scope;search 固定 Development 且仅 `public/company`;`create/update` 为 `write`,`delete` 保持 `high-risk-write` |
319
+ | 管理和检索当前研发应用的企业知识库 | [`rabetbase kb list/detail/search/create/update/delete`](references/rabetbase-kb.md) | 管理仅 company scope;search 仅 COMPANY/PUBLIC;`create/update` 为 `write`,`delete` 保持 `high-risk-write` |
320
+ | 管理当前研发应用的 Agent context 规则 | [`rabetbase rule list/get/set`](references/rabetbase-rule.md) | `RULES.md` 供页面、API 等研发 Agent 使用且排除 DB Agent;`DATABASE.md` 仅供数据库分析时 DB Agent 使用;两者在各自流程全程参与 context;set 为 `write`,先 dry-run |
319
321
  | 查询或管理应用级通知配置 | [`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 获取 Backend Function 所需 `configCode`;写入只接收单一敏感 JSON 源,先 dry-run;update/delete 必须 `--yes` |
320
322
  | 查看线上菜单事实 / 菜单异常审计 | [`rabetbase menu list`](references/rabetbase-menu-list.md) | 返回 DFS 事实、children/page、URL、最近更新人/时间和 snapshotHash;异常治理先读 [`menu-anomaly-manual-cleanup`](guides/menu-anomaly-manual-cleanup.md) |
321
323
  | 批量显示或隐藏菜单 | [`rabetbase menu visibility-update`](references/rabetbase-menu-visibility-update.md) | 用精确 ID/path 选择目标;先 dry-run,使用 `--expect-visible` / `--expected-count` 防漂移,正式执行必须 `--yes` |
@@ -367,7 +369,7 @@ const result = await client.bff.execute<DashboardData>({
367
369
  | 恢复已删除页面 | [`rabetbase page restore --id <pageId>`](references/rabetbase-page-restore.md) | 支持 `DATA_LIST|CUSTOM` 自动识别;跨类型同 ID 时显式传 `--page-type` |
368
370
  | 数据库连接(dblink)/ 测连 / 结构分析 | [`rabetbase db list`](references/rabetbase-db-list.md) 起 | **`id`**、**trace/plan id** 与“终态 + 复跑 diff”完成口径见 [database-connection-workflow.md](guides/database-connection-workflow.md);各子命令见 `references/rabetbase-db-*.md` |
369
371
  | 独立部署局部同步研发元数据 | [`rabetbase deployment sync`](references/rabetbase-deployment-sync.md) | 显式命令为 `write`;服务端仅允许应用 Admin 操作并原子检查 appCode 开关,未开启时正常 no-op;非生产 BFF/SQL 可配置 push 后置同步;生产、直连、Dataset 保持显式确认;失败或结果不确定时不自动重试 |
370
- | 生成 / 更新 API 客户端代码 | [`rabetbase api pull`](references/rabetbase-api-pull.md) → [`sdk-client-generation.md`](guides/sdk-client-generation.md) | `api pull` 拉 Dataset 事实并刷新 `sdk-config.ts` 与 `rabetbase.routing.json`;已有 `api.ts`/`client.ts` 按 guide 合并更新 |
372
+ | 生成 / 更新 API 客户端代码 | [`rabetbase api pull`](references/rabetbase-api-pull.md) → [`sdk-client-generation.md`](guides/sdk-client-generation.md) | `api pull` 拉 Dataset 事实并刷新 `sdk-config.ts`;已有 `api.ts`/`client.ts` 按 guide 合并更新 |
371
373
  | 查看生成的 API 模型 | [`rabetbase api list`](references/rabetbase-api-list.md) | 列出已生成的数据模型 |
372
374
  | 查看现有 SQL | [`rabetbase sql list --name "xxx"`](references/rabetbase-sql-list.md) | 分页,按名称过滤;默认查当前决议到的单个应用 |
373
375
  | 查看 SQL 详情 | [`rabetbase sql detail --sqlcode xxx`](references/rabetbase-sql-detail.md) | 含完整 SQL 内容和参数定义 |
@@ -392,7 +394,7 @@ const result = await client.bff.execute<DashboardData>({
392
394
  | 查询应用人员及角色归属 | [`rabetbase app members-list --appcode <code>`](references/rabetbase-app-members-list.md) | 全量只读;按 userId 去重,角色归属聚合到 `roles[]` |
393
395
  | 查询租户人员 | [`rabetbase tenant members-list --tenant-code <code>`](references/rabetbase-tenant-members-list.md) | 全量只读;租户必须属于当前账号 |
394
396
  | 查看 app 服务帮助 | `rabetbase app` | 只显示 `app` 子命令帮助,不等价于 `app list` |
395
- | 绑定当前目录到应用 | [`rabetbase workspace init --appcode <code>`](references/rabetbase-workspace.md) | 首次绑定;单应用自动选中且不写 `defaultApp`;与 `config init`(全局引导)不同 |
397
+ | 绑定当前目录到应用 | [`rabetbase workspace init --appcode <code>`](references/rabetbase-workspace.md) | 首次绑定;单应用自动选中且不写 `defaultApp`;与只处理国家/地区及 Domain 的 `config init` 不同 |
396
398
  | 切换当前工作目录默认应用 | [`rabetbase workspace use --app <name>`](references/rabetbase-workspace.md) | 持久修改当前目录 defaultApp |
397
399
  | 登记应用 | [`rabetbase workspace add <name> --appcode <code>`](references/rabetbase-workspace.md) | 单应用不写 default;增加第二个应用时保留原应用为默认;`--global` 写全局 |
398
400
  | 移除应用 | [`rabetbase workspace remove <name>`](references/rabetbase-workspace.md) | 只移除本地 profile,移除后自动切换 default |
@@ -406,7 +408,7 @@ const result = await client.bff.execute<DashboardData>({
406
408
  | 命令分组 | 说明 |
407
409
  |----------|------|
408
410
  | Quick Start | [`init`](references/rabetbase-init.md) |
409
- | Project | [`create`](references/rabetbase-project-create.md) / [`upgrade`](references/rabetbase-project-upgrade.md) |
411
+ | Project | [`create`](references/rabetbase-project-create.md) / [`domain-routing-sync`](references/rabetbase-project-domain-routing-sync.md) / [`upgrade`](references/rabetbase-project-upgrade.md) |
410
412
  | Workspace | [`workspace init` / `workspace use` / `workspace add` / `workspace remove`](references/rabetbase-workspace.md) |
411
413
  | Run Scripts | [`run`](references/rabetbase-run.md) |
412
414
  | Authentication | [`auth login`](references/rabetbase-auth-login.md) / [`auth logout`](references/rabetbase-auth-logout.md) |
@@ -419,6 +421,7 @@ const result = await client.bff.execute<DashboardData>({
419
421
  | Configuration | [`config set/get/list/delete`](references/rabetbase-config.md) |
420
422
  | Runtime App Config Management | [`app-config list/get/set/delete`](references/rabetbase-app-config.md) |
421
423
  | Company Knowledge Base | [`kb list/detail/search/create/update/delete`](references/rabetbase-kb.md) |
424
+ | Agent Context Rules | [`rule list/get/set`](references/rabetbase-rule.md) |
422
425
  | Menu | [`list`](references/rabetbase-menu-list.md) / [`external-link-create`](references/rabetbase-menu-external-link-create.md) / [`external-link-update`](references/rabetbase-menu-external-link-update.md) / [`rename`](references/rabetbase-menu-rename.md) / [`sync`](references/rabetbase-menu-sync.md) / [`asset-update`](references/rabetbase-menu-asset-update.md) / [`delete`](references/rabetbase-menu-delete.md) / [`group-create`](references/rabetbase-menu-group-create.md) / [`group-update`](references/rabetbase-menu-group-update.md) / [`move`](references/rabetbase-menu-move.md) / [`regroup-start`](references/rabetbase-menu-regroup-start.md) |
423
426
  | Async Tasks | [`task status`](references/rabetbase-task-status.md) |
424
427
  | Notification Configuration | [`notification config-list`](references/rabetbase-notification-config-list.md) / [`notification config-create`](references/rabetbase-notification-config-mutations.md) / [`notification config-update`](references/rabetbase-notification-config-mutations.md) / [`notification config-delete`](references/rabetbase-notification-config-mutations.md) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 目标:根据 `rabetbase api pull` 返回的数据集事实,生成或更新浏览器子应用的 `src/api/api.ts` 与 `src/api/client.ts`,并保留项目已有的自定义写法。
4
4
  >
5
- > CLI 不再每次覆盖 TypeScript。`api pull` 只保证:刷新 `sdk-config.ts`、返回 `data.models`,并在文件缺失时写入 Cookie-first 脚手架。已有文件由本指南更新。
5
+ > CLI 默认不覆盖 TypeScript。`api pull` 只保证:刷新 `sdk-config.ts`、返回 `data.models`,并在文件缺失时写入 Cookie-first 脚手架。已有文件由本指南更新;只有用户明确要求放弃本地定制并完整重建时,才使用 `--force --yes`。
6
6
 
7
7
  ## 何时执行
8
8
 
@@ -19,21 +19,24 @@
19
19
 
20
20
  ```
21
21
  rabetbase api pull --format compress
22
- → 读 data.models / data.configName / data.isDefaultConfig / data.files / data.needsAgentMerge
22
+ → 单应用读 data;项目应用清单逐项读 data.apps[]
23
+ → 读取每项的 models / configName / isDefaultConfig / files / needsAgentMerge
23
24
  → 读已有 api.ts、client.ts、sdk-config.ts(含 {prefix}-api.ts / {prefix}-client.ts)
24
25
  → 按事实更新 models,保留本地 extras
25
26
  → 不要改已经正确的 createClient({ apiConfigName, ...LOVRABET_SDK_CONFIG })
26
27
  ```
27
28
 
28
29
  1. 执行 `rabetbase api pull --format compress`(需要人类可读缩进时用 `--format json`)。
29
- 2. 使用返回的 `data.models`,不要手写或猜测 `datasetCode`。也可用 `rabetbase api list --format compress` 核对目录,但写文件以 pull 的 `data.models` 为准。
30
+ - 不要自动添加 `--force`。
31
+ - 只有用户明确要求丢弃本地 `api.ts` / `client.ts` 定制并完整重建时,才执行 `rabetbase api pull --force --yes --format compress`;此时根据返回的 `files.*.action` 回查是否为 `overwritten`。
32
+ 2. 直接单应用结果使用 `data.models`;项目应用清单结果逐项使用 `data.apps[].models`。不要手写或猜测 `datasetCode`。也可用 `rabetbase api list --format compress` 核对目录,但写文件以 pull 返回的 models 为准。
30
33
  3. 先读现有文件再写:
31
34
  - 默认单应用:`src/api/api.ts`、`src/api/client.ts`、`src/api/sdk-config.ts`
32
35
  - 多应用非 default:`{name}-api.ts` / `{name}-client.ts`(`data.files.api.path` / `data.files.client.path`)
33
36
  4. `sdk-config.ts` 由 CLI 维护(`data.files.sdkConfig.action === "refreshed"`),不要往里面写 `cookie` / `accessKey` / `token`。
34
37
  5. 看 `data.needsAgentMerge` 和 `data.files.*.action`,**不要**用已删除的 `wroteScaffold`:
35
38
  - `needsAgentMerge === false` 且 `api`/`client` 均为 `created` 或 `overwritten`:脚手架已按当前 `models` 写好,只需检查项目 extras。
36
- - `needsAgentMerge === true`:至少有一个 TypeScript 文件被 **preserved**。即使 `client` 刚 `created`,过期的 `api.ts` 仍要按下方规则合并,**不要**当成脚手架已完成。
39
+ - `needsAgentMerge === true`:至少有一个 TypeScript 文件被 **preserved**。先比较本地配置与返回事实,只在有差异时合并;即使 `client` 刚 `created`,也不能据此跳过对已保留 `api.ts` 的检查。
37
40
  6. 默认应用:`data.isDefaultConfig === true`,`data.configName === "default"`,代码里用 `CONFIG_NAMES.DEFAULT`。
38
41
  7. 具名应用:`data.isDefaultConfig === false`,`data.configName` 是不含引号的名字(如 `order`),`registerModels(..., "order")` 与 `apiConfigName: "order"`。不要把 `configName` 再包一层引号。
39
42
 
@@ -51,7 +54,7 @@ rabetbase api pull --format compress
51
54
  export const LOVRABET_SDK_CONFIG = {} as const;
52
55
  ```
53
56
 
54
- CLI 可能写入 `region: "id"`(由 SDK 1.5.3+ 解析)或 `runtimeDomain: "https://…"`(Global 与独立部署)。不要手改成认证字段。项目根目录 `rabetbase.routing.json` 同时承载模板最终 Domain 与资源策略,也由 CLI 刷新。
57
+ 默认节点保持空对象;其他官方节点和企业独立部署统一写入最终 `runtimeDomain`。不要手改成认证字段。项目模板所需的完整公开 Domain 与资源策略由独立命令 `rabetbase project domain-routing-sync` 写入项目根目录的 `rabetbase.domain-routing.json`。
55
58
 
56
59
  ### api.ts
57
60
 
@@ -137,11 +140,10 @@ export const lovrabetClient = createClient({
137
140
  | `configName` | `"default"` 或具名应用名(不含 TS 引号) |
138
141
  | `isDefaultConfig` | 默认应用为 `true` |
139
142
  | `models[]` | `datasetCode` / `tableName` / `name` / `alias` |
140
- | `sdkRouting` | `{ region?: "id", runtimeDomain?: string }` |
141
- | `projectRouting` | `{ path, manifest }`,最终公开 Domain 与资源策略 |
143
+ | `sdkRouting` | `{ runtimeDomain?: string }` |
142
144
  | `files.api` / `files.client` / `files.sdkConfig` | `{ path, action }`;`action` 为 `created` / `overwritten` / `preserved` / `refreshed` |
143
145
  | `needsAgentMerge` | 任一 TypeScript 被 `preserved` 时为 `true`,必须合并 `models` |
144
146
  | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | 与 `files.*.path` 相同,兼容路径字段 |
145
147
  | `modelCount` / `datasetCount` | 模型数量 |
146
148
 
147
- 多应用时 `data.apps[]` 为上述对象的数组,`data.projectRouting` 为项目共享路由清单。
149
+ 多应用时 `data.apps[]` 为上述对象的数组。
@@ -1,8 +1,8 @@
1
1
  # api pull
2
2
 
3
- 拉取当前 App 下所有数据集(Dataset)的元信息,刷新 `src/api/sdk-config.ts` 与项目根目录 `rabetbase.routing.json`,并在 `api.ts` / `client.ts` **缺失时**写入 Cookie-first 脚手架。
3
+ 拉取当前 App 下所有数据集(Dataset)的元信息,刷新 `src/api/sdk-config.ts`,并在 `api.ts` / `client.ts` **缺失时**写入 Cookie-first 脚手架。项目公开 Domain 路由由 [`project domain-routing-sync`](rabetbase-project-domain-routing-sync.md) 独立维护。
4
4
 
5
- 已有 TypeScript **不会被覆盖**。Agent 必须用返回的 `data.models` 按 [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 更新 `api.ts` / `client.ts`。人类若要重新得到脚手架,删除对应文件后再跑本命令。
5
+ 已有 TypeScript 默认**不会被覆盖**。Agent 必须用返回的 `data.models` 按 [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 更新 `api.ts` / `client.ts`。人类明确要放弃本地定制并重新生成完整脚手架时,可使用 `--force --yes`。
6
6
 
7
7
  ## 命令
8
8
 
@@ -13,6 +13,9 @@ rabetbase api pull --format compress
13
13
  # 指定输出目录
14
14
  rabetbase api pull --output ./src/generated/api/ --format compress
15
15
 
16
+ # 放弃本地定制,按最新 Dataset 事实整体重建 TypeScript
17
+ rabetbase api pull --force --yes --format compress
18
+
16
19
  # 多应用:默认只解析「项目级」apps;与全局合并配置一起拉取时加 --global
17
20
  rabetbase api pull --global --format compress
18
21
 
@@ -27,6 +30,7 @@ rabetbase api pull --appcode app-order-001 --format compress
27
30
  |------|------|
28
31
  | `--output <dir>` | 输出目录,默认 `./src/api/` |
29
32
  | `--global` | 多应用时显式从「全局+项目」双层解析 `apps`;默认仅项目级 `apps` |
33
+ | `--force` | 整体替换已有 `api.ts` / `client.ts`;必须同时传 `--yes`,本地定制会丢失 |
30
34
  | `--app <name>` | 多应用模式下,指定应用名称 |
31
35
  | `--appcode <code>` | 直接指定 appcode,跳过配置查找 |
32
36
  | `--format compress\|json` | 结构化信封。Agent 应读 `data.models`,不要刮 stderr |
@@ -48,14 +52,13 @@ rabetbase api pull --appcode app-order-001 --format compress
48
52
 
49
53
  | 文件 | 行为 |
50
54
  |------|------|
51
- | `sdk-config.ts` | **每次刷新**。只含必要的 `region` / `runtimeDomain`,不含凭证 |
52
- | `rabetbase.routing.json` | **每次刷新**。只含最终 Domain、资源策略与本地路由,不含凭证 |
53
- | `<prefix>-api.ts` | 文件缺失时写入脚手架(含当前 `models`);已存在则跳过 |
54
- | `<prefix>-client.ts` | 文件缺失时写入 Cookie-first `createClient`;已存在则跳过 |
55
+ | `sdk-config.ts` | **每次刷新**。只含必要的最终 `runtimeDomain`,不含凭证 |
56
+ | `<prefix>-api.ts` | 文件缺失时写入脚手架(含当前 `models`);已存在时默认跳过,`--force` 时整体替换 |
57
+ | `<prefix>-client.ts` | 文件缺失时写入 Cookie-first `createClient`;已存在时默认跳过,`--force` 时整体替换 |
55
58
 
56
59
  默认 `prefix` 为空(单应用),多应用非 default 应用使用应用名作为 prefix。
57
60
 
58
- `project create` 在拷贝空 demo 脚手架后会覆盖写入一次 TypeScript,以便带上真实 models。日常 `api pull` 遇到已有 `api.ts` / `client.ts` 时跳过,只刷新 `sdk-config.ts` 并返回 `data.models`。
61
+ `project create` 在拷贝空 demo 脚手架后会覆盖写入一次 TypeScript,以便带上真实 models。首次拉取失败时,恢复提示会要求执行 `rabetbase api pull --force --yes`,避免占位脚手架被继续保留。日常 `api pull` 遇到已有 `api.ts` / `client.ts` 时跳过,只刷新 `sdk-config.ts` 并返回 Dataset 事实。
59
62
 
60
63
  ## 输出(单应用 `data`)
61
64
 
@@ -65,14 +68,13 @@ rabetbase api pull --appcode app-order-001 --format compress
65
68
  | `configName` | `"default"` 或具名应用名(不含 TS 引号) |
66
69
  | `isDefaultConfig` | 默认应用为 `true` |
67
70
  | `models[]` | `datasetCode` / `tableName` / `name` / `alias` |
68
- | `sdkRouting` | `{ region?: "id", runtimeDomain?: string }` |
69
- | `projectRouting` | `{ path, manifest }`,manifest 为最终公开路由清单 |
71
+ | `sdkRouting` | `{ runtimeDomain?: string }` |
70
72
  | `files.api` / `files.client` / `files.sdkConfig` | `{ path, action }`:`created` / `overwritten` / `preserved` / `refreshed` |
71
- | `needsAgentMerge` | 任一 TypeScript 被 `preserved` 时为 `true` |
73
+ | `needsAgentMerge` | 任一 TypeScript 被 `preserved` 时为 `true`;这是本地检查提示,不表示文件一定存在差异 |
72
74
  | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | 与 `files.*.path` 相同 |
73
75
  | `modelCount` / `datasetCount` | 模型数量 |
74
76
 
75
- 多应用时 `data` 为 `{ apps, succeeded, failed, projectRouting }`。
77
+ 项目使用 `apps` 清单解析时,`data` 为 `{ apps, succeeded, failed }`,每个 `data.apps[]` 元素都使用上表结构。因此 Dataset 事实从直接单应用结果的 `data.models` 读取,或从项目应用清单结果的 `data.apps[].models` 读取;以实际信封为准。
76
78
 
77
79
  ## 生成标识符
78
80
 
@@ -94,6 +96,9 @@ rabetbase api pull --app order --format compress
94
96
 
95
97
  # 独立输出目录
96
98
  rabetbase api pull --output ./src/generated/api/ --format compress
99
+
100
+ # 仅在明确放弃本地 TypeScript 定制时整体重建
101
+ rabetbase api pull --force --yes --format compress
97
102
  ```
98
103
 
99
104
  更新已有 TypeScript:见 [`sdk-client-generation.md`](../guides/sdk-client-generation.md)。
@@ -73,7 +73,6 @@ CLI 对旧版顶层 `appcode` 仍兼容读取,但它已经不是推荐主模
73
73
  "runtimeDomain": "https://custom-runtime.example.com",
74
74
  "skillDomain": "https://custom-skills.example.com",
75
75
  "kbDomain": "https://custom-kb.example.com",
76
- "kbSearchDomain": "https://custom-kb-search.example.com",
77
76
  "appDomain": "https://custom-app.example.com",
78
77
  "localDomain": "https://custom-local.example.com",
79
78
  "certificateDomain": "https://custom-cert.example.com"
@@ -129,7 +128,7 @@ rabetbase workspace remove product --yes
129
128
  | `pageSize` | number | — | 默认分页大小,用于 `sql list` 等分页命令 |
130
129
  | `riskLevel` | string | `"write"` | 允许执行的最高风险等级。可选值:`read`、`write`、`high-risk-write` |
131
130
  | `apiDir` | string | `"./src/api"` | `api pull` 生成代码的输出目录 |
132
- | `region` | string | `"cn"`(省略) | 官方节点快捷配置:当前开放 `cn`、`id`;历史 `global` 配置仅保留读取兼容 |
131
+ | `region` | string | `"cn"`(省略) | 官方节点快捷配置:当前开放 `cn`、`id`;历史 `global` 配置仅保留读取兼容。显式未知值会阻止业务命令回落默认节点,先用 `rabetbase doctor` 定位后修复 |
133
132
  | `template_base_url` | string | 平台默认 CDN | 模板 CDN 基础 URL,一般无需修改 |
134
133
  | `defaultApp` | string | — | 多应用模式下的默认应用名称;单应用省略 |
135
134
  | `apps` | object | — | 多应用配置。key 为应用名,value 为 AppProfile(见下方) |
@@ -138,7 +137,6 @@ rabetbase workspace remove product --yes
138
137
  | `runtimeDomain` | string | 平台默认 | 自定义运行时域名 |
139
138
  | `skillDomain` | string | 节点默认 | SkillHub HTTPS origin 覆盖 |
140
139
  | `kbDomain` | string | 跟随 `apiDomain` / 节点 API 默认值 | 企业知识库 HTTPS origin 覆盖;显式配置时优先,`runtimeDomain` 不参与回退 |
141
- | `kbSearchDomain` | string | CN 已登记 KB Service;其他区域无默认值 | `kb search` 专用 HTTPS origin;与 KB 管理域独立,未登记区域不回退 |
142
140
  | `appDomain` | string | 节点默认 | 工作台、页面编辑器和发布页面域名 |
143
141
  | `localDomain` | string | 独立部署默认 `http://localhost` | 自定义 HTTPS 本地回调 origin;与 `certificateDomain` 同时配置 |
144
142
  | `certificateDomain` | string | 节点默认;独立部署无 | 本地 HTTPS 证书服务 origin;与 `localDomain` 同时配置 |
@@ -329,7 +327,7 @@ rabetbase config set --key region --value id --global
329
327
  rabetbase config init --domain-config ./lovrabet-domains.json
330
328
  ```
331
329
 
332
- 该文件接收七个服务 Domain,以及可选的 `localDomain`、`certificateDomain`;值必须是无 path/query/fragment 的 HTTPS origin。自定义 HTTPS 本地回调必须同时提供 `localDomain` 与 `certificateDomain`。完整行为与命令行 flags 见 [`rabetbase config init`](rabetbase-init.md)。
330
+ 推荐使用 `lovrabet-routing/v1`,完整声明 `userDomain`、`apiDomain`、`runtimeDomain`、`skillDomain`、`kbDomain`、`appDomain`、`cdn.libraries` 与 `cdn.lovrabet`,并可选声明成对出现的 `localDomain`、`certificateDomain`。Domain 默认写成共用 HTTPS 字符串,确有差异时可按消费者覆盖。旧扁平 Domain 文件仍兼容。完整行为与命令行 flags 见 [`rabetbase config init`](rabetbase-init.md)。
333
331
 
334
332
  也可以逐项覆盖:
335
333
 
@@ -340,8 +338,7 @@ rabetbase config set --key userDomain --value https://your-user.example.com --gl
340
338
  rabetbase config set --key runtimeDomain --value https://your-runtime.example.com --global
341
339
  rabetbase config set --key skillDomain --value https://your-skills.example.com --global
342
340
  rabetbase config set --key kbDomain --value https://your-kb.example.com --global
343
- rabetbase config set --key kbSearchDomain --value https://your-kb-search.example.com --global
344
341
  rabetbase config set --key appDomain --value https://your-app.example.com --global
345
342
  ```
346
343
 
347
- 官方模式:`region` 内置 Routing Profile,默认 `cn`,配置文件可省略;当前新配置只开放 `cn`、`id`,`id` 需保存对应 region。历史文件中的 `global` 仍可读取,但不能通过 `config init` 或 `config set` 新写入。企业独立部署模式才保存显式 Domain。当前所有已开放节点和独立部署统一使用中国大陆 CDN 配置。项目级配置可覆盖全局配置;默认项目合并会继承全局节点配置。
344
+ 官方模式:`region` 内置 Routing Profile,默认 `cn`,配置文件可省略;当前新配置只开放 `cn`、`id`,`id` 需保存对应 region。历史文件中的 `global` 仍可读取,但不能通过 `config init` 或 `config set` 新写入。每个官方节点直接配置最终 `cdn.libraries` 与 `cdn.lovrabet`,因此可按节点使用独立 CDN;中国大陆当前使用 AliCDN,印尼当前使用 Cloudflare cdnjs。企业独立部署模式保存显式 Domain 与 CDN。项目级配置可覆盖全局配置;默认项目合并会继承全局节点配置。
@@ -22,9 +22,10 @@ rabetbase doctor check
22
22
  | Built-in Skill | 目标路径、包版本、Skill 版本、内容状态;不一致时给出 `rabetbase cli-skill install` 修复命令 |
23
23
  | Config Files | 全局和项目级配置文件路径 |
24
24
  | Config JSON | 分别检测全局/项目配置文件是否为**合法 JSON**;非法时标红并给出解析错误(常见于尾随逗号、注释等,会导致该侧配置在合并时被忽略) |
25
+ | Country/Region Configuration | 检查项目与全局 `region`;显式未知值会标明来源,并给出对应作用域的 `config delete region` 修复命令 |
25
26
  | Merged Config | 合并后的所有配置项(appCode / env / cookie / apiDir 等) |
26
27
  | Apps | 多应用模式下的应用列表及各自配置 |
27
- | API Endpoints | 最终生效的 region 与域名(user / api / runtime / skill / kb 管理 / kb search / app);未登记 search 显示 `not registered` |
28
+ | API Endpoints | 最终生效的 region 与六个域名(user / api / runtime / skill / kb / app) |
28
29
  | Auth | 登录状态及 cookie 有效性 |
29
30
 
30
31
  ## 典型场景