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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/lib/api/api-doc.js +1 -1
  2. package/lib/api/fetch-model-list.js +1 -1
  3. package/lib/api/generate-api-file.d.ts +13 -3
  4. package/lib/api/generate-api-file.js +1 -1
  5. package/lib/api/generate-sdk-config-file.d.ts +7 -0
  6. package/lib/api/generate-sdk-config-file.js +1 -0
  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.d.ts +2 -5
  27. package/lib/commands/app/shared.js +1 -1
  28. package/lib/commands/app-config/delete.js +1 -1
  29. package/lib/commands/app-config/get.js +1 -1
  30. package/lib/commands/app-config/index.js +1 -1
  31. package/lib/commands/app-config/list.js +1 -1
  32. package/lib/commands/app-config/set.js +1 -1
  33. package/lib/commands/app-config/shared.js +1 -1
  34. package/lib/commands/auth/index.js +1 -1
  35. package/lib/commands/bff/create.js +1 -1
  36. package/lib/commands/bff/delete.js +1 -1
  37. package/lib/commands/bff/detail.js +1 -1
  38. package/lib/commands/bff/index.js +1 -1
  39. package/lib/commands/bff/list.js +1 -1
  40. package/lib/commands/bff/pull.js +1 -1
  41. package/lib/commands/bff/push.js +1 -1
  42. package/lib/commands/bff/status.js +1 -1
  43. package/lib/commands/cli-skill/index.js +1 -1
  44. package/lib/commands/cli-update.js +1 -1
  45. package/lib/commands/codegen/index.js +1 -1
  46. package/lib/commands/codegen/sdk.js +1 -1
  47. package/lib/commands/codegen/sql.js +1 -1
  48. package/lib/commands/common/app-registry.js +1 -1
  49. package/lib/commands/common/app-selector.js +1 -1
  50. package/lib/commands/common/async-task.js +1 -1
  51. package/lib/commands/common/dry-run.js +1 -1
  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.d.ts +5 -0
  56. package/lib/commands/config/delete.js +1 -0
  57. package/lib/commands/config/get.js +1 -1
  58. package/lib/commands/config/index.js +1 -1
  59. package/lib/commands/config/init.d.ts +12 -0
  60. package/lib/commands/config/init.js +1 -0
  61. package/lib/commands/config/list.js +1 -1
  62. package/lib/commands/config/set.js +1 -1
  63. package/lib/commands/config/shared.js +1 -1
  64. package/lib/commands/dataset/business-group-update.js +1 -1
  65. package/lib/commands/dataset/business-groups.js +1 -1
  66. package/lib/commands/dataset/capability.js +1 -1
  67. package/lib/commands/dataset/delete.js +1 -1
  68. package/lib/commands/dataset/detail.js +1 -1
  69. package/lib/commands/dataset/extend-update.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/db/analysis-batching.js +1 -1
  84. package/lib/commands/db/analyze-batch-plan.js +1 -1
  85. package/lib/commands/db/analyze-cancel.js +1 -1
  86. package/lib/commands/db/analyze-start.js +1 -1
  87. package/lib/commands/db/analyze-status.js +1 -1
  88. package/lib/commands/db/create.js +1 -1
  89. package/lib/commands/db/delete.js +1 -1
  90. package/lib/commands/db/detail.js +1 -1
  91. package/lib/commands/db/diff-refresh-start.js +1 -1
  92. package/lib/commands/db/diff-refresh-status.js +1 -1
  93. package/lib/commands/db/diff.js +1 -1
  94. package/lib/commands/db/index.js +1 -1
  95. package/lib/commands/db/list.js +1 -1
  96. package/lib/commands/db/shared.js +1 -1
  97. package/lib/commands/db/tables.js +1 -1
  98. package/lib/commands/db/test.js +1 -1
  99. package/lib/commands/db/update.js +1 -1
  100. package/lib/commands/doctor.js +1 -1
  101. package/lib/commands/file/index.js +1 -1
  102. package/lib/commands/issue/index.js +1 -1
  103. package/lib/commands/issue/nudge.js +1 -1
  104. package/lib/commands/issue/report.js +1 -1
  105. package/lib/commands/issue/shared.js +1 -1
  106. package/lib/commands/kb/create.js +1 -1
  107. package/lib/commands/kb/delete.js +1 -1
  108. package/lib/commands/kb/detail.js +1 -1
  109. package/lib/commands/kb/index.js +1 -1
  110. package/lib/commands/kb/list.js +1 -1
  111. package/lib/commands/kb/search.js +1 -1
  112. package/lib/commands/kb/shared.js +1 -1
  113. package/lib/commands/kb/update.js +1 -1
  114. package/lib/commands/logs/index.js +1 -1
  115. package/lib/commands/menu/asset-update.js +1 -1
  116. package/lib/commands/menu/delete.js +1 -1
  117. package/lib/commands/menu/external-link-create.js +1 -1
  118. package/lib/commands/menu/external-link-update.js +1 -1
  119. package/lib/commands/menu/group-create.js +1 -1
  120. package/lib/commands/menu/group-update.js +1 -1
  121. package/lib/commands/menu/index.js +1 -1
  122. package/lib/commands/menu/list.js +1 -1
  123. package/lib/commands/menu/move.js +1 -1
  124. package/lib/commands/menu/regroup-start.js +1 -1
  125. package/lib/commands/menu/rename.js +1 -1
  126. package/lib/commands/menu/shared/compare-table.js +1 -1
  127. package/lib/commands/menu/shared/delete-plan.js +1 -1
  128. package/lib/commands/menu/shared/facts.js +1 -1
  129. package/lib/commands/menu/shared/index.js +1 -1
  130. package/lib/commands/menu/shared/inquirer.js +1 -1
  131. package/lib/commands/menu/shared/local-pages.js +1 -1
  132. package/lib/commands/menu/shared/logic.js +1 -1
  133. package/lib/commands/menu/shared/mutations.js +1 -1
  134. package/lib/commands/menu/shared/service.js +1 -1
  135. package/lib/commands/menu/shared/sync-core.js +1 -1
  136. package/lib/commands/menu/shared/update-core.js +1 -1
  137. package/lib/commands/menu/shared/valid-url.js +1 -1
  138. package/lib/commands/menu/sync.js +1 -1
  139. package/lib/commands/menu/visibility-update.js +1 -1
  140. package/lib/commands/notification/config-create.js +1 -1
  141. package/lib/commands/notification/config-delete.js +1 -1
  142. package/lib/commands/notification/config-list.js +1 -1
  143. package/lib/commands/notification/config-update.js +1 -1
  144. package/lib/commands/notification/index.js +1 -1
  145. package/lib/commands/notification/shared.js +1 -1
  146. package/lib/commands/ocr/index.js +1 -1
  147. package/lib/commands/page/create.js +1 -1
  148. package/lib/commands/page/custom/detail.js +1 -1
  149. package/lib/commands/page/custom/list.js +1 -1
  150. package/lib/commands/page/custom/publish.js +1 -1
  151. package/lib/commands/page/custom/shared.js +1 -1
  152. package/lib/commands/page/custom/syntax.js +1 -1
  153. package/lib/commands/page/custom/template.js +1 -1
  154. package/lib/commands/page/custom/update.js +1 -1
  155. package/lib/commands/page/data-list-status.js +1 -1
  156. package/lib/commands/page/generate-start.js +1 -1
  157. package/lib/commands/page/generate-status.js +1 -1
  158. package/lib/commands/page/index.js +1 -1
  159. package/lib/commands/page/pull.js +1 -1
  160. package/lib/commands/page/push.js +1 -1
  161. package/lib/commands/page/relation-audit.js +1 -1
  162. package/lib/commands/page/restore.js +1 -1
  163. package/lib/commands/page/shared.js +1 -1
  164. package/lib/commands/page/sync.js +1 -1
  165. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  166. package/lib/commands/project/create/format-elapsed.js +1 -1
  167. package/lib/commands/project/create/main.d.ts +1 -0
  168. package/lib/commands/project/create/main.js +1 -1
  169. package/lib/commands/project/create/materialize-project-template.d.ts +6 -2
  170. package/lib/commands/project/create/materialize-project-template.js +1 -1
  171. package/lib/commands/project/create/project-name.js +1 -1
  172. package/lib/commands/project/create/project-template-archive.js +1 -1
  173. package/lib/commands/project/create/project-template-path.js +1 -1
  174. package/lib/commands/project/create/use-copy-project-template.d.ts +1 -1
  175. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  176. package/lib/commands/project/create/use-format-code.js +1 -1
  177. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  178. package/lib/commands/project/index.js +1 -1
  179. package/lib/commands/project/upgrade.js +1 -1
  180. package/lib/commands/registry.d.ts +2 -2
  181. package/lib/commands/registry.js +1 -1
  182. package/lib/commands/role/delete.js +1 -1
  183. package/lib/commands/role/detail.js +1 -1
  184. package/lib/commands/role/index.js +1 -1
  185. package/lib/commands/role/list.js +1 -1
  186. package/lib/commands/role/shared.d.ts +1 -1
  187. package/lib/commands/role/shared.js +1 -1
  188. package/lib/commands/role/update.js +1 -1
  189. package/lib/commands/role/user-add.js +1 -1
  190. package/lib/commands/role/user-remove.js +1 -1
  191. package/lib/commands/role/user-resolve.js +1 -1
  192. package/lib/commands/run/index.js +1 -1
  193. package/lib/commands/schema.js +1 -1
  194. package/lib/commands/sql/create.js +1 -1
  195. package/lib/commands/sql/delete.js +1 -1
  196. package/lib/commands/sql/detail.js +1 -1
  197. package/lib/commands/sql/exec.js +1 -1
  198. package/lib/commands/sql/index.js +1 -1
  199. package/lib/commands/sql/list.js +1 -1
  200. package/lib/commands/sql/pull.js +1 -1
  201. package/lib/commands/sql/push.js +1 -1
  202. package/lib/commands/sql/shared.js +1 -1
  203. package/lib/commands/sql/status.js +1 -1
  204. package/lib/commands/sql/validate.js +1 -1
  205. package/lib/commands/task/index.js +1 -1
  206. package/lib/commands/task/status.js +1 -1
  207. package/lib/commands/tenant/index.js +1 -1
  208. package/lib/commands/tenant/members-list.js +1 -1
  209. package/lib/commands/tenant/shared.js +1 -1
  210. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  211. package/lib/commands/user-account/index.js +1 -1
  212. package/lib/commands/workspace/add.js +1 -1
  213. package/lib/commands/workspace/index.js +1 -1
  214. package/lib/commands/workspace/remove.js +1 -1
  215. package/lib/config/domain-config.d.ts +10 -0
  216. package/lib/config/domain-config.js +1 -0
  217. package/lib/config/schema.d.ts +3 -1
  218. package/lib/config/schema.js +1 -1
  219. package/lib/constant/cdn.js +1 -1
  220. package/lib/constant/cli.js +1 -1
  221. package/lib/constant/defaults.js +1 -1
  222. package/lib/constant/domain.d.ts +23 -1
  223. package/lib/constant/domain.js +1 -1
  224. package/lib/constant/env.js +1 -1
  225. package/lib/constant/output.js +1 -1
  226. package/lib/constant/paths.js +1 -1
  227. package/lib/constant/region.d.ts +9 -0
  228. package/lib/constant/region.js +1 -0
  229. package/lib/constant/risk.js +1 -1
  230. package/lib/context/app-resolver.js +1 -1
  231. package/lib/context/auth-resolver.js +1 -1
  232. package/lib/context/config-loader.d.ts +4 -6
  233. package/lib/context/config-loader.js +1 -1
  234. package/lib/context.d.ts +2 -2
  235. package/lib/context.js +1 -1
  236. package/lib/core/alias-resolver.js +1 -1
  237. package/lib/core/api-client.d.ts +2 -0
  238. package/lib/core/api-client.js +1 -1
  239. package/lib/core/bff/config.js +1 -1
  240. package/lib/core/bff/file-system.js +1 -1
  241. package/lib/core/bff/hash.js +1 -1
  242. package/lib/core/bff/lock.js +1 -1
  243. package/lib/core/bff/utils.js +1 -1
  244. package/lib/core/db-resolver.js +1 -1
  245. package/lib/core/page/file-system.js +1 -1
  246. package/lib/core/page/hash.js +1 -1
  247. package/lib/core/page/lock.js +1 -1
  248. package/lib/core/sql-index-auditor.js +1 -1
  249. package/lib/core/sql-sync/config.js +1 -1
  250. package/lib/core/sql-sync/file-system.js +1 -1
  251. package/lib/core/sql-sync/hash.js +1 -1
  252. package/lib/core/sql-sync/lock.js +1 -1
  253. package/lib/core/sql-sync/utils.js +1 -1
  254. package/lib/core/sql-validator.js +1 -1
  255. package/lib/errors.d.ts +11 -1
  256. package/lib/errors.js +1 -1
  257. package/lib/framework/build-all-flags.js +1 -1
  258. package/lib/framework/error-output.js +1 -1
  259. package/lib/framework/explicit-yes.js +1 -1
  260. package/lib/framework/flags.js +1 -1
  261. package/lib/framework/help.d.ts +2 -2
  262. package/lib/framework/help.js +1 -1
  263. package/lib/framework/index.js +1 -1
  264. package/lib/framework/output.js +1 -1
  265. package/lib/framework/response.js +1 -1
  266. package/lib/framework/runner-alias.js +1 -1
  267. package/lib/framework/runner.js +1 -1
  268. package/lib/framework/schema-export.js +1 -1
  269. package/lib/framework/types.js +1 -1
  270. package/lib/generated/build-info.d.ts +4 -4
  271. package/lib/generated/build-info.js +1 -1
  272. package/lib/help.js +1 -1
  273. package/lib/postinstall.js +1 -1
  274. package/lib/runtime/confirmation.js +1 -1
  275. package/lib/runtime/event.js +1 -1
  276. package/lib/runtime/index.js +1 -1
  277. package/lib/runtime/queue.js +1 -1
  278. package/lib/runtime/resolve.js +1 -1
  279. package/lib/skills/builtin-skill.js +1 -1
  280. package/lib/skills/main.js +1 -1
  281. package/lib/skills/npx-skills-add.js +1 -1
  282. package/lib/skills/skill-presence.js +1 -1
  283. package/lib/telemetry/cli-command-trace.js +1 -1
  284. package/lib/telemetry/cli-help-trace.js +1 -1
  285. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  286. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  287. package/lib/telemetry/send-cli-trace-log.js +1 -1
  288. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  289. package/lib/types/index.d.ts +28 -0
  290. package/lib/utils/ai_config.d.ts +1 -2
  291. package/lib/utils/ai_config.js +1 -1
  292. package/lib/utils/apply-jq-filter.js +1 -1
  293. package/lib/utils/cdn-config.js +1 -1
  294. package/lib/utils/check-sdk-version.js +1 -1
  295. package/lib/utils/cli-version-check.js +1 -1
  296. package/lib/utils/cli-version-policy.js +1 -1
  297. package/lib/utils/config.js +1 -1
  298. package/lib/utils/entity-with-id.js +1 -1
  299. package/lib/utils/file-utils.js +1 -1
  300. package/lib/utils/guides-cdn.js +1 -1
  301. package/lib/utils/http-client.js +1 -1
  302. package/lib/utils/is-non-interactive.js +1 -1
  303. package/lib/utils/logger.js +1 -1
  304. package/lib/utils/params.js +1 -1
  305. package/lib/utils/platform.js +1 -1
  306. package/lib/utils/sleep.js +1 -1
  307. package/lib/utils/template-replacer.js +1 -1
  308. package/lib/utils/update-notice.js +1 -1
  309. package/lib/utils/version.js +1 -1
  310. package/lib/utils/with-active-cookie.js +1 -1
  311. package/lib/utils/write-cli-side-channel.js +1 -1
  312. package/package.json +1 -3
  313. package/skills/rabetbase/SKILL.md +33 -28
  314. package/skills/rabetbase/guides/backend-function.md +41 -12
  315. package/skills/rabetbase/guides/bff-creation-workflow.md +6 -4
  316. package/skills/rabetbase/guides/custom-page-workflow.md +1 -1
  317. package/skills/rabetbase/guides/data-api-guidelines.md +8 -8
  318. package/skills/rabetbase/guides/database-connection-workflow.md +8 -16
  319. package/skills/rabetbase/guides/menu-anomaly-manual-cleanup.md +1 -6
  320. package/skills/rabetbase/guides/sdk-client-generation.md +146 -0
  321. package/skills/rabetbase/guides/sql-creation-workflow.md +1 -1
  322. package/skills/rabetbase/guides/troubleshooting.md +1 -1
  323. package/skills/rabetbase/guides/typescript-sdk.md +46 -10
  324. package/skills/rabetbase/references/rabetbase-api-list.md +4 -4
  325. package/skills/rabetbase/references/rabetbase-api-pull.md +44 -29
  326. package/skills/rabetbase/references/rabetbase-app-list.md +2 -2
  327. package/skills/rabetbase/references/rabetbase-auth-login.md +4 -2
  328. package/skills/rabetbase/references/rabetbase-bff-push.md +3 -1
  329. package/skills/rabetbase/references/rabetbase-codegen-sql.md +3 -1
  330. package/skills/rabetbase/references/rabetbase-config.md +75 -30
  331. package/skills/rabetbase/references/rabetbase-dataset-business-group-update.md +17 -6
  332. package/skills/rabetbase/references/rabetbase-dataset-detail.md +1 -1
  333. package/skills/rabetbase/references/rabetbase-db-analyze.md +3 -3
  334. package/skills/rabetbase/references/rabetbase-db-detail.md +2 -2
  335. package/skills/rabetbase/references/rabetbase-db-diff-refresh.md +4 -4
  336. package/skills/rabetbase/references/rabetbase-db-diff.md +6 -9
  337. package/skills/rabetbase/references/rabetbase-doctor.md +1 -1
  338. package/skills/rabetbase/references/rabetbase-init.md +57 -51
  339. package/skills/rabetbase/references/rabetbase-kb.md +2 -0
  340. package/skills/rabetbase/references/rabetbase-page-create.md +1 -1
  341. package/skills/rabetbase/references/rabetbase-page-custom-detail.md +3 -3
  342. package/skills/rabetbase/references/rabetbase-page-custom-list.md +2 -2
  343. package/skills/rabetbase/references/rabetbase-project-create.md +12 -3
  344. package/skills/rabetbase/references/rabetbase-project-upgrade.md +2 -2
  345. package/skills/rabetbase/references/rabetbase-role-user-resolve.md +2 -2
  346. package/skills/rabetbase/references/rabetbase-user-account.md +1 -1
  347. package/skills/rabetbase/references/rabetbase-workspace.md +6 -6
  348. package/skills/rabetbase.manifest.json +4 -3
  349. package/templates/README.md +17 -28
  350. package/templates/generate-api/api.ts.tpl +3 -3
  351. package/templates/generate-api/client.ts.tpl +10 -37
  352. package/lib/commands/data/filter.d.ts +0 -7
  353. package/lib/commands/data/filter.js +0 -1
  354. package/lib/commands/data/getOne.d.ts +0 -7
  355. package/lib/commands/data/getOne.js +0 -1
  356. package/lib/commands/data/index.d.ts +0 -8
  357. package/lib/commands/data/index.js +0 -1
  358. package/lib/commands/data/shared.d.ts +0 -33
  359. package/lib/commands/data/shared.js +0 -1
  360. package/lib/commands/init/index.d.ts +0 -11
  361. package/lib/commands/init/index.js +0 -1
  362. package/lib/utils/rules-cdn.d.ts +0 -38
  363. package/lib/utils/rules-cdn.js +0 -1
  364. package/templates/rules/lovrabet_rules.mdc.tpl +0 -893
  365. package/templates/skill/SKILL.md.tpl +0 -120
@@ -1,24 +1,24 @@
1
1
  # api pull
2
2
 
3
- 拉取当前 App 下所有数据集(Dataset)的元信息,生成 TypeScript API 客户端代码到 `src/api/` 目录。
3
+ 拉取当前 App 下所有数据集(Dataset)的元信息,刷新 `src/api/sdk-config.ts`,并在 `api.ts` / `client.ts` **缺失时**写入 Cookie-first 脚手架。
4
4
 
5
- 生成的代码包含每个 Dataset Model 类,可直接用于 SDK 查询,无需手动调用 HTTP 接口。
5
+ 已有 TypeScript **不会被覆盖**。Agent 必须用返回的 `data.models` [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 更新 `api.ts` / `client.ts`。人类若要重新得到脚手架,删除对应文件后再跑本命令。
6
6
 
7
7
  ## 命令
8
8
 
9
9
  ```bash
10
- # 拉取并生成 API 代码(默认 ./src/api/)
11
- rabetbase api pull
10
+ # 拉取事实并刷新 sdk-config.ts(默认 ./src/api/)
11
+ rabetbase api pull --format compress
12
12
 
13
13
  # 指定输出目录
14
- rabetbase api pull --output ./src/generated/api/
14
+ rabetbase api pull --output ./src/generated/api/ --format compress
15
15
 
16
16
  # 多应用:默认只解析「项目级」apps;与全局合并配置一起拉取时加 --global
17
- rabetbase api pull --global
17
+ rabetbase api pull --global --format compress
18
18
 
19
19
  # 多应用模式:指定某个应用
20
- rabetbase api pull --app order
21
- rabetbase api pull --appcode app-order-001
20
+ rabetbase api pull --app order --format compress
21
+ rabetbase api pull --appcode app-order-001 --format compress
22
22
  ```
23
23
 
24
24
  ## 参数
@@ -26,9 +26,10 @@ rabetbase api pull --appcode app-order-001
26
26
  | 参数 | 说明 |
27
27
  |------|------|
28
28
  | `--output <dir>` | 输出目录,默认 `./src/api/` |
29
- | `--global` | 多应用时从「全局+项目」合并配置解析 `apps`(默认仅项目级 `apps`)。若项目配置了 `inherit: false`,见下节 |
29
+ | `--global` | 多应用时显式从「全局+项目」双层解析 `apps`;默认仅项目级 `apps` |
30
30
  | `--app <name>` | 多应用模式下,指定应用名称 |
31
31
  | `--appcode <code>` | 直接指定 appcode,跳过配置查找 |
32
+ | `--format compress\|json` | 结构化信封。Agent 应读 `data.models`,不要刮 stderr |
32
33
 
33
34
  ## 多应用过滤
34
35
 
@@ -37,31 +38,43 @@ rabetbase api pull --appcode app-order-001
37
38
  - **加 `--app <name>`**:仅拉取指定应用
38
39
  - **加 `--appcode <code>`**:反查到对应 app profile,使用其 cookie/env/apiDir
39
40
 
40
- ## 与 `inherit` 的关系
41
+ ## 配置作用域
41
42
 
42
- 项目 `.rabetbase.json` `inherit` 字段控制配置合并行为:
43
+ - 默认只从项目文件解析 `apps`,同时可从全局白名单继承 cookie/accessKey 等标量配置。
44
+ - `--global` 显式从全局和项目双层读取 apps;项目同名项覆盖全局同名项。
45
+ - `inherit` 不是受支持的配置项。
43
46
 
44
- - **省略**(默认):项目主导,仅从全局白名单继承 cookie/accessKey/locale/format/riskLevel/pageSize,不继承 apps/defaultApp/appcode。`--global` 仍可看到全局 apps(多应用列表从双层直接取)。
45
- - **`true`**:全量合并全局+项目(旧行为,需显式开启)。
46
- - **`false`**:完全隔离,不继承任何全局字段。
47
+ ## CLI 实际写入
47
48
 
48
- 此时:
49
+ | 文件 | 行为 |
50
+ |------|------|
51
+ | `sdk-config.ts` | **每次刷新**。只含 `region` / `runtimeDomain`,不含凭证 |
52
+ | `<prefix>-api.ts` | 文件缺失时写入脚手架(含当前 `models`);已存在则跳过 |
53
+ | `<prefix>-client.ts` | 文件缺失时写入 Cookie-first `createClient`;已存在则跳过 |
49
54
 
50
- - **`api pull` 使用的 cookie、apiDir、appcode 等**均来自**项目文件**(默认行为下 cookie/accessKey 仍可从全局白名单继承)。
51
- - **`--global` 多应用列表**始终从全局+项目双层取 apps,不受 inherit 限制。
55
+ 默认 `prefix` 为空(单应用),多应用非 default 应用使用应用名作为 prefix。
52
56
 
53
- ## 输出文件
57
+ `project create` 在拷贝空 demo 脚手架后会覆盖写入一次 TypeScript,以便带上真实 models。日常 `api pull` 遇到已有 `api.ts` / `client.ts` 时跳过,只刷新 `sdk-config.ts` 并返回 `data.models`。
54
58
 
55
- | 文件 | 说明 |
56
- |------|------|
57
- | `<prefix>-api.ts` | 数据模型定义(datasetCode → Model 映射) |
58
- | `<prefix>-client.ts` | SDK 客户端初始化代码 |
59
+ ## 输出(单应用 `data`)
59
60
 
60
- 默认 `prefix` 为空(单应用),多应用非 default 应用使用应用名作为 prefix。
61
+ | 字段 | 说明 |
62
+ |------|------|
63
+ | `appCode` | 当前应用 |
64
+ | `configName` | `"default"` 或具名应用名(不含 TS 引号) |
65
+ | `isDefaultConfig` | 默认应用为 `true` |
66
+ | `models[]` | `datasetCode` / `tableName` / `name` / `alias` |
67
+ | `sdkRouting` | `{ region?: "id", runtimeDomain?: string }` |
68
+ | `files.api` / `files.client` / `files.sdkConfig` | `{ path, action }`:`created` / `overwritten` / `preserved` / `refreshed` |
69
+ | `needsAgentMerge` | 任一 TypeScript 被 `preserved` 时为 `true` |
70
+ | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | 与 `files.*.path` 相同 |
71
+ | `modelCount` / `datasetCount` | 模型数量 |
72
+
73
+ 多应用时 `data` 为 `{ apps, succeeded, failed }`。
61
74
 
62
75
  ## 生成标识符
63
76
 
64
- `api pull` 遵循 [`best-practices.md`](../guides/best-practices.md) 的动态标识符原则,确保生成的 TypeScript 标识符合法且稳定。数字开头的 App Namespace 使用 `APP` 领域前缀,运行时 AppCode 保持不变;该前缀不适用于其他代码生成场景。
77
+ 脚手架路径遵循 [`best-practices.md`](../guides/best-practices.md) 的动态标识符原则。数字开头的 App Namespace 使用 `APP` 领域前缀,运行时 AppCode 保持不变。
65
78
 
66
79
  ## 前置条件
67
80
 
@@ -71,12 +84,14 @@ rabetbase api pull --appcode app-order-001
71
84
  ## 示例
72
85
 
73
86
  ```bash
74
- # 单应用:生成到 ./src/api/
75
- rabetbase api pull
87
+ # 单应用:刷新 sdk-config.ts;缺失则写 api.ts/client.ts
88
+ rabetbase api pull --format compress
76
89
 
77
- # 多应用 order:生成到 ./src/api/ 并使用 order- 前缀
78
- rabetbase api pull --app order
90
+ # 多应用 order
91
+ rabetbase api pull --app order --format compress
79
92
 
80
93
  # 独立输出目录
81
- rabetbase api pull --output ./src/generated/api/
94
+ rabetbase api pull --output ./src/generated/api/ --format compress
82
95
  ```
96
+
97
+ 更新已有 TypeScript:见 [`sdk-client-generation.md`](../guides/sdk-client-generation.md)。
@@ -2,7 +2,7 @@
2
2
 
3
3
  列出应用。
4
4
 
5
- 默认列出**本地配置视图**,与 CLI 运行时一致:合并全局 `~/.rabetbase.json`(或同目录下首个匹配的旧名)与**项目**当前目录下的配置文件。
5
+ 默认列出**本地配置视图**,与 CLI 运行时一致:合并全局 `~/.rabetbase.json` 与从当前目录向父目录解析到的项目 `.rabetbase.json`。旧 `.lovrabet.json` / `.lovrabetrc` 不会自动参与配置发现。
6
6
  加 `--remote` 时改为查询**平台目录视图**:当前登录账号在平台上可访问的应用,不读取或修改本地 app 配置。
7
7
 
8
8
  - **不加 flag**:合并视图(global + project)。
@@ -38,7 +38,7 @@ rabetbase app list --remote
38
38
  | 字段 | 说明 |
39
39
  |------|------|
40
40
  | `items` | 应用条目数组 |
41
- | `meta` | **合并视图**:`globalPath`、`projectPath`、`defaultApp`(无命名默认时为**有效 appcode**)、`defaultAppSource`(`project` \| `global` \| `null`)。**`--global` / `--project`**:`scope`、`configPath` |
41
+ | `meta` | **合并视图**:`globalPath`、`projectPath`、`defaultApp`(唯一 app 时为其 alias)、`defaultAppSource`(显式配置来源;隐式单应用为 `null`)。**`--global` / `--project`**:`scope`、`configPath` |
42
42
 
43
43
  每个 `items[]` 元素除 `name`、`appcode`、`env` 等外,另有:
44
44
 
@@ -25,12 +25,14 @@ rabetbase auth login --help
25
25
 
26
26
  ## 行为
27
27
 
28
- 1. 检查本机是否已有有效 session
29
- 2. 无有效 session 时启动本地 OAuth 回调服务。
28
+ 1. 使用 `rabetbase config init` 已配置的节点与 Domain
29
+ 2. 检查本机是否已有有效 session,无有效 session 时启动本地 OAuth 回调服务。
30
30
  3. 交互式模式会自动打开浏览器;非交互 `--yes` 模式只打印登录 URL。
31
31
  4. 用户授权成功后,CLI 保存 cookie 并输出登录成功。
32
32
  5. 10 分钟内未完成授权时,登录服务退出,需要重新执行命令。
33
33
 
34
+ `auth login` 只负责认证,不接受 region 或 Domain 参数。节点调整统一使用 `config init/set/delete`。
35
+
34
36
  ## 常见错误
35
37
 
36
38
  ```text
@@ -39,7 +39,9 @@ rabetbase bff push --type HOOK --name beforeFilter --format json
39
39
 
40
40
  `bff push` 负责同步脚本,不等价于业务逻辑验证。推送前按 [`backend-function.md`](../guides/backend-function.md) 自检,尤其确认:
41
41
 
42
- - 数据集模型键使用 `"dataset_" + 32 位数据集 code`
42
+ - `DB_TABLE` 数据集优先通过 `context.client.models.byTable("<物理表名>")` 访问;同名表跨 dblink 时传入已确认的 `{ dblinkId }`
43
+ - `METADATA` 数据集使用 `"dataset_" + 数据集 code`;`DB_TABLE` 使用该形式时属于兼容路径
44
+ - Backend Function 的 Custom SQL 默认使用 `context.client.sql.byName("<唯一 SQL 名>").execute({ params })`;名称不存在或重名时先处理 `SQL_NAME_NOT_FOUND` / `SQL_NAME_AMBIGUOUS`
43
45
  - 写入字段、必填字段、枚举 `options[].value` 来自当前 `dataset detail`
44
46
  - `filter()` 结果从 `.tableData` 读取
45
47
  - `create()` 返回新记录 ID,不访问 `created.id`
@@ -25,8 +25,10 @@ rabetbase codegen sql --sqlcode 2305f915-dd48cd4c > ./src/api/getUserList.ts
25
25
 
26
26
  ## 提示
27
27
 
28
- - `--target bff` 生成的代码使用 `context.client.sql.execute()`,注意 Backend Function 中 SQL 返回直接是数组
28
+ - `--target bff` 生成的代码使用 `context.client.sql.byName(sqlName).execute({ params })`;生成时仍以 `--sqlcode` 定位 SQL 元数据,但产物不硬编码 `sqlCode`。Backend Function 中 SQL 返回直接是数组
29
29
  - `--target sdk` 生成的代码使用 `client.sql.execute()`,返回 `{ execSuccess, execResult }`
30
+ - `sqlName` 在当前应用内必须唯一;未找到或重名时,运行时返回 `SQL_NAME_NOT_FOUND` 或 `SQL_NAME_AMBIGUOUS`,不会任选一个 SQL
31
+ - `--target bff` 产物默认使用语义 SQL 名,`sql.execute({ sqlCode, params })` 是 Backend Function 的兼容调用方式;前端 SDK 产物使用 `sqlCode`
30
32
 
31
33
  ## 参考
32
34
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  它**不是**平台应用目录。若要查看当前登录账号在平台上能访问哪些应用,应使用 `rabetbase app list --remote`,而不是直接查看 `.rabetbase.json`。
8
8
 
9
- 兼容旧名:`.lovrabet.json`、`.lovrabetrc`(按优先级 `.rabetbase.json` > `.lovrabet.json` > `.lovrabetrc`,首个存在的生效)。
9
+ 只自动读取 `.rabetbase.json`,不会把 `.lovrabet.json` `.lovrabetrc` 当作 Rabetbase 配置。旧文件需要迁移时,显式执行 `rabetbase project upgrade`。
10
10
 
11
11
  ## 初始化
12
12
 
@@ -14,15 +14,14 @@
14
14
  rabetbase workspace init --appcode <code>
15
15
  ```
16
16
 
17
- 绑定当前目录到某个应用并写入 `.rabetbase.json`,采用 canonical 的 `apps + defaultApp` 结构;旧的顶层 `appcode` 仍兼容读取。首次安装后的全局引导用 `rabetbase init`。
17
+ 绑定当前目录到某个应用并写入 `.rabetbase.json`,采用 canonical 的 `apps` 结构;单应用自动选中且省略 `defaultApp`,旧的顶层 `appcode` 仍兼容读取。首次安装后的全局引导用 `rabetbase config init`。
18
18
 
19
19
  ## canonical 主模型
20
20
 
21
- 当前推荐、也是所有新写入默认采用的结构,是 **`apps + defaultApp`**:
21
+ 当前推荐、也是单应用新写入默认采用的结构,是只有一个 profile 的 **`apps`**:
22
22
 
23
23
  ```json
24
24
  {
25
- "defaultApp": "main",
26
25
  "apps": {
27
26
  "main": {
28
27
  "appcode": "app-xxxxxxxx",
@@ -47,6 +46,16 @@ CLI 对旧版顶层 `appcode` 仍兼容读取,但它已经不是推荐主模
47
46
 
48
47
  ### 完整字段
49
48
 
49
+ 下面分别展示字段形态;官方 `region` 模式与企业显式 Domain 模式不要混写。官方印尼节点只需:
50
+
51
+ ```json
52
+ {
53
+ "region": "id"
54
+ }
55
+ ```
56
+
57
+ 企业独立部署才显式提供 Domain:
58
+
50
59
  ```json
51
60
  {
52
61
  "appcode": "app-xxx",
@@ -61,13 +70,16 @@ CLI 对旧版顶层 `appcode` 仍兼容读取,但它已经不是推荐主模
61
70
  "template_base_url": "https://custom-cdn.example.com/dist",
62
71
  "apiDomain": "https://custom-api.example.com",
63
72
  "userDomain": "https://custom-user.example.com",
64
- "runtimeDomain": "https://custom-runtime.example.com"
73
+ "runtimeDomain": "https://custom-runtime.example.com",
74
+ "skillDomain": "https://custom-skills.example.com",
75
+ "kbDomain": "https://custom-kb.example.com",
76
+ "appDomain": "https://custom-app.example.com"
65
77
  }
66
78
  ```
67
79
 
68
80
  ## 多应用模式
69
81
 
70
- 一个项目对接多个 Lovrabet 应用时,使用 `apps` + `defaultApp`:
82
+ 一个项目对接多个 Lovrabet 应用时,才使用 `apps` + `defaultApp`:
71
83
 
72
84
  ```json
73
85
  {
@@ -87,7 +99,7 @@ CLI 对旧版顶层 `appcode` 仍兼容读取,但它已经不是推荐主模
87
99
  }
88
100
  ```
89
101
 
90
- 每个 app profile 可单独覆盖普通顶层字段。`riskLevel` 是安全例外:默认值为 `write`,全局、项目与 profile 决定基础上限并取最严格值;环境变量只能继续收紧,不能提权。CLI 运行时根据 `--app <name>` `defaultApp` 选择激活的 profile。权限不足时只能提醒用户手动编辑配置;Agent 和自动化脚本不得自行修改 `riskLevel` 或尝试提权。
102
+ 每个 app profile 可单独覆盖普通顶层字段。唯一 app 自动激活;两个及以上 app 必须通过 `--app <name>` 临时选择,或用 `defaultApp` 持久选择,CLI 不按 JSON key 顺序猜测。`riskLevel` 是安全例外:默认值为 `write`,全局、项目与 profile 决定基础上限并取最严格值;环境变量只能继续收紧,不能提权。权限不足时只能提醒用户手动编辑配置;Agent 和自动化脚本不得自行修改 `riskLevel` 或尝试提权。
91
103
 
92
104
  管理命令(声明式 flags,非位置参数):
93
105
 
@@ -105,22 +117,25 @@ rabetbase workspace remove product --yes
105
117
 
106
118
  | 字段 | 类型 | 默认值 | 说明 |
107
119
  |------|------|--------|------|
108
- | `appcode` | string | — | 顶层单应用兼容字段。新写入优先使用 `apps + defaultApp`。兼容旧名 `app` |
120
+ | `appcode` | string | — | 顶层单应用兼容字段。新写入优先使用 `apps`。兼容旧名 `app` |
109
121
  | `env` | string | `"production"` | 环境。可选值:`production`、`daily`(配置文件若仍为旧值 `online`,加载时会规范为 `production`) |
110
- | `locale` | string | `"en-US"` | 语言设置 |
122
+ | `locale` | string | `"en-US"` | 应用本地化设置(不是 CLI 语言;目前命令尚未消费) |
111
123
  | `cookie` | string | — | 内联 session cookie。设置后优先于 `~/.lovrabet/cookie` 文件 |
112
124
  | `accessKey` | string | — | Access Key 认证(预留,未来替代 cookie) |
113
125
  | `format` | string | — | 默认输出格式。可选值:`json`、`pretty`、`compress`。不设则命令默认 `compress` |
114
126
  | `pageSize` | number | — | 默认分页大小,用于 `sql list` 等分页命令 |
115
127
  | `riskLevel` | string | `"write"` | 允许执行的最高风险等级。可选值:`read`、`write`、`high-risk-write`。兼容旧名 `maxRisk` |
116
- | `inherit` | boolean | 省略 | 配置继承模式。**省略**(默认):项目主导,仅从全局白名单继承 cookie/accessKey/locale/format/riskLevel/pageSize,不继承 apps/defaultApp/appcode。**`true`**:全量合并全局+项目(旧行为,需显式开启)。**`false`**:普通字段完全隔离;全局 `riskLevel` 仍作为不可绕过的上限 |
117
128
  | `apiDir` | string | `"./src/api"` | `api pull` 生成代码的输出目录 |
129
+ | `region` | string | `"cn"`(省略) | 当前开放的官方节点快捷配置:`cn`、`id` |
118
130
  | `template_base_url` | string | 平台默认 CDN | 模板 CDN 基础 URL,一般无需修改 |
119
- | `defaultApp` | string | — | 多应用模式下的默认应用名称 |
131
+ | `defaultApp` | string | — | 多应用模式下的默认应用名称;单应用省略 |
120
132
  | `apps` | object | — | 多应用配置。key 为应用名,value 为 AppProfile(见下方) |
121
- | `apiDomain` | string | 平台默认 | 自定义 API 域名(独立部署场景)。覆盖后所有 API 请求使用此域名 |
133
+ | `apiDomain` | string | 节点默认 | 普通研发平台 API 域名 |
122
134
  | `userDomain` | string | 平台默认 | 自定义用户域名 |
123
135
  | `runtimeDomain` | string | 平台默认 | 自定义运行时域名 |
136
+ | `skillDomain` | string | 节点默认 | SkillHub HTTPS origin 覆盖 |
137
+ | `kbDomain` | string | 跟随 `apiDomain` / 节点 API 默认值 | 企业知识库 HTTPS origin 覆盖;显式配置时优先,`runtimeDomain` 不参与回退 |
138
+ | `appDomain` | string | 节点默认 | 工作台、页面编辑器和发布页面域名 |
124
139
 
125
140
  ### AppProfile 字段(`apps.*` 内的每个应用)
126
141
 
@@ -134,7 +149,7 @@ rabetbase workspace remove product --yes
134
149
  | `format` | string | 覆盖顶层 `format` |
135
150
  | `pageSize` | number | 覆盖顶层 `pageSize` |
136
151
  | `riskLevel` | string | 只能继续收紧顶层 `riskLevel`,不能提权 |
137
- | `locale` | string | 覆盖顶层 `locale` |
152
+ | `locale` | string | 覆盖顶层 `locale`(应用本地化;目前命令尚未消费) |
138
153
 
139
154
  ## 优先级
140
155
 
@@ -174,16 +189,19 @@ CLI flag (--appcode, --env, --format, --app ...)
174
189
 
175
190
  | 作用域 | 查找目录 | 文件名优先级 |
176
191
  |--------|---------|------------|
177
- | 项目级 | `process.cwd()` | `.rabetbase.json` > `.lovrabet.json` > `.lovrabetrc` |
178
- | 全局级 | `~`(用户 HOME) | 同上 |
192
+ | 项目级 | `process.cwd()` 向父目录查找 | `.rabetbase.json` |
193
+ | 全局级 | `~`(用户 HOME) | `.rabetbase.json` |
179
194
 
180
- 合并策略由项目级 `inherit` 字段控制(三态):
195
+ 配置合并使用固定模型,`inherit` 不是受支持的配置项:
181
196
 
182
- - **省略 `inherit`(默认,项目主导)**:项目级配置自给自足;仅从全局白名单继承 `cookie`、`accessKey`、`locale`、`format`、`riskLevel`、`pageSize`,**不继承** `apps` / `defaultApp` / `appcode` / `env` 等业务字段。普通字段由项目级显式值覆盖;`riskLevel` 始终取全局与项目顶层的更严格值。
183
- - **`inherit: true`(显式全量合并)**:标量字段项目级覆盖全局级;`apps` 深度合并(项目同名覆盖全局同名,其余保留);`defaultApp` 仅当项目级显式声明时才覆盖全局级。等价于历史默认行为,需要跨项目共享全局 `apps` 时显式开启。
184
- - **`inherit: false`(普通字段完全隔离)**:业务与偏好字段只使用项目级值;安全例外是全局 `riskLevel` 仍参与最严格上限计算,项目不能借此提权。
197
+ - 项目显式值覆盖全局显式值。
198
+ - 项目存在时,仅从全局白名单继承 `cookie`、`accessKey`、`locale`、`format`、`riskLevel`、`pageSize`、`region` 和六个 Domain(`userDomain` / `apiDomain` / `runtimeDomain` / `skillDomain` / `kbDomain` / `appDomain`);不继承 `apps` / `defaultApp` / `appcode` / `env`。
199
+ - `apps` / `defaultApp` 始终项目隔离,避免研发写操作落到全局应用。
200
+ - `region` 是 Domain fallback profile;显式 Domain 按普通 key 继承和覆盖,不会被 `region` 清除或屏蔽。
201
+ - `riskLevel` 始终取全局与项目顶层的更严格值,项目不能借配置覆盖提权。
202
+ - 旧配置中的 `inherit` 会被忽略,可用 `rabetbase config delete inherit` 清理。
185
203
 
186
- > **为什么默认改成项目主导**:避免 `~/.lovrabet.json` 中的 `defaultApp` / `apps` 在用户进入空白目录或新项目时被无声继承(曾导致 menu asset-update 误改其他应用资源)。`api list` / `api pull` / `app list` 仍可通过 `--global` 显式查看合并视图。
204
+ > **为什么固定为项目主导**:避免全局 `.rabetbase.json` 中的 `defaultApp` / `apps` 在用户进入项目后被无声继承(曾导致写操作误选应用)。`api list` / `api pull` 仍可通过 `--global` 显式读取双层 apps。
187
205
 
188
206
  ## 示例
189
207
 
@@ -242,26 +260,36 @@ rabetbase dataset list --app product
242
260
 
243
261
  ```bash
244
262
  # 写入项目级配置(默认;须在能解析到项目 .rabetbase.json 的目录下执行)
245
- rabetbase config set apiDomain https://custom-api.example.com
246
- rabetbase config set env daily
263
+ rabetbase config set --key apiDomain --value https://custom-api.example.com
264
+ rabetbase config set --key env --value daily
247
265
 
248
266
  # 写入全局配置(任意目录)
249
- rabetbase config set apiDomain https://custom-api.example.com --global
267
+ rabetbase config set --key apiDomain --value https://custom-api.example.com --global
250
268
  ```
251
269
 
252
270
  `config set` **默认写入项目**配置文件(当前工作目录能解析到 `.rabetbase.json` 等);加 **`--global`** 则写入 **`~/.rabetbase.json`**。
253
271
 
254
- 若当前目录**没有**项目配置文件且**未**指定 `--global`,CLI **拒绝执行**并提示使用 `--global` 或先 `rabetbase init`,**不会**静默改全局。
272
+ 若当前目录**没有**项目配置文件且**未**指定 `--global`,CLI **拒绝执行**并提示使用 `--global` 或先 `rabetbase workspace init --appcode <code>`,**不会**静默改全局。
255
273
 
256
274
  ### config get
257
275
 
258
276
  读取配置项(读取合并后的值):
259
277
 
260
278
  ```bash
261
- rabetbase config get apiDomain
279
+ rabetbase config get --key apiDomain
262
280
  # 输出: https://custom-api.example.com
263
281
  ```
264
282
 
283
+ ### config delete
284
+
285
+ 删除当前作用域显式配置的 key;命令幂等,key 已不存在时仍成功返回。默认删除项目层,`--global` 删除全局层。`riskLevel` 受保护,不能通过 CLI 删除。
286
+
287
+ ```bash
288
+ rabetbase config delete apiDomain
289
+ rabetbase config delete apiDomain --global
290
+ rabetbase config delete inherit # 清理已移除的旧字段
291
+ ```
292
+
265
293
  ### config list
266
294
 
267
295
  以 JSON 格式输出当前合并后的完整配置:
@@ -284,13 +312,30 @@ rabetbase doctor
284
312
 
285
313
  ## 独立部署场景
286
314
 
287
- 如果 Lovrabet 部署在自定义域名下,通过 `apiDomain` / `userDomain` / `runtimeDomain` 覆盖默认域名:
315
+ 官方节点使用内置完整映射,默认 `cn` 可省略:
316
+
317
+ ```bash
318
+ rabetbase config set --key region --value id --global
319
+ ```
320
+
321
+ 企业独立部署推荐通过连接配置入口一次性初始化:
322
+
323
+ ```bash
324
+ rabetbase config init --domain-config ./lovrabet-domains.json
325
+ ```
326
+
327
+ 该文件只接收 `userDomain`、`apiDomain`、`runtimeDomain`、`skillDomain`、`kbDomain`、`appDomain`;值必须是无 path/query/fragment 的 HTTPS origin。完整行为与命令行 flags 见 [`rabetbase config init`](rabetbase-init.md)。
328
+
329
+ 也可以逐项覆盖:
288
330
 
289
331
  ```bash
290
332
  # 写入全局配置(所有项目生效)
291
- rabetbase config set apiDomain https://your-api.example.com --global
292
- rabetbase config set userDomain https://your-user.example.com --global
293
- rabetbase config set runtimeDomain https://your-runtime.example.com --global
333
+ rabetbase config set --key apiDomain --value https://your-api.example.com --global
334
+ rabetbase config set --key userDomain --value https://your-user.example.com --global
335
+ rabetbase config set --key runtimeDomain --value https://your-runtime.example.com --global
336
+ rabetbase config set --key skillDomain --value https://your-skills.example.com --global
337
+ rabetbase config set --key kbDomain --value https://your-kb.example.com --global
338
+ rabetbase config set --key appDomain --value https://your-app.example.com --global
294
339
  ```
295
340
 
296
- 优先级:配置文件中显式设置 > 环境变量 > 默认平台域名。项目级配置可覆盖全局配置。
341
+ 官方模式:`region` 内置完整 Domain 映射,默认 `cn`,配置文件可省略;`id` 只需保存 `"region": "id"`。企业独立部署模式才保存显式 Domain。项目级配置可覆盖全局配置;默认项目合并会继承全局节点配置。
@@ -18,14 +18,25 @@ rabetbase dataset business-group-update \
18
18
 
19
19
  确认 dry-run 结果无误后再去掉 `--dry-run` 执行。
20
20
 
21
+ 清空当前业务场景分组:
22
+
23
+ ```bash
24
+ rabetbase dataset business-group-update \
25
+ --code 1a90dbff5f094a9a89936fa99b10984c \
26
+ --business-group ungrouped \
27
+ --expect-business-group "旧分组" \
28
+ --dry-run \
29
+ --format compress
30
+ ```
31
+
21
32
  ## 参数
22
33
 
23
34
  | Flag | 必填 | 说明 |
24
35
  | --- | --- | --- |
25
36
  | `--appcode <code>` | 否 | 目标应用编码;未配置默认 app 时必填 |
26
37
  | `--code <code>` | 是 | Dataset code,32 位 hex UUID |
27
- | `--business-group <name>` | 是 | 目标业务场景分组;空字符串表示清空 |
28
- | `--expect-business-group <name>` | 否 | 当前业务场景分组保护;不匹配即中止且不写入 |
38
+ | `--business-group <name>` | 是 | 目标业务场景分组;保留值 `ungrouped` 表示清空 |
39
+ | `--expect-business-group <name>` | 否 | 当前业务场景分组保护;使用 `ungrouped` 表示期望当前未分组;不匹配即中止且不写入 |
29
40
  | `--dry-run` | 否 | 只返回 before/after 预览,不执行写入 |
30
41
  | `--format <fmt>` | 否 | 输出格式,AI Agent 优先用 `compress` |
31
42
 
@@ -33,9 +44,9 @@ rabetbase dataset business-group-update \
33
44
 
34
45
  - 命令用 `--code` 定位 Dataset。
35
46
  - 当前值和写后校验都按 Dataset code 读取业务场景分组;不需要 `dblinkId`、`tableName` 或 `sourceType`。
36
- - `--business-group` 为空字符串时表示清空业务场景分组。
37
- - 回读到 `businessGroup` 为空字符串时表示未分组,是合法当前值。
38
- - `--expect-business-group` 用于保护当前值;不匹配时中止且不写入。
47
+ - `--business-group ungrouped` 表示清空业务场景分组;`ungrouped` 是保留值,不能作为分组名称使用。
48
+ - 平台原始详情可能以空字符串返回 `businessGroup`,也可能省略 `extend.businessGroup`;CLI 会将这两种形态统一归一化为空字符串,表示未分组。
49
+ - `--expect-business-group` 用于保护当前值;当前未分组时传 `ungrouped`,不匹配时中止且不写入。
39
50
  - `--dry-run` 只预览 before/after,不执行写入。
40
51
  - 正式写入后会校验目标值已生效。
41
52
  - 当目标值和当前值一致时,命令返回 `changed=false`,不会执行写入。
@@ -70,7 +81,7 @@ rabetbase dataset business-group-update \
70
81
  ## 提示
71
82
 
72
83
  - 写入前必须先运行 `--dry-run`。
73
- - `businessGroup` 用于按业务场景组织 Dataset,而不是按数据库、表类型或服务名等技术结构分组。优先按业务场景命名并复用当前应用已有分组;需要跨领域消歧或沿用既有两级分组体系时,可使用 `<业务领域>---<业务场景>`,否则使用 `<业务场景>`。表数量不决定是否拆分层级。建议最多两级,层级不得为空或带首尾空白;空字符串表示清空。CLI 仅描述推荐格式并保持兼容,不额外拒绝历史非标准值。
84
+ - `businessGroup` 用于按业务场景组织 Dataset,而不是按数据库、表类型或服务名等技术结构分组。优先按业务场景命名并复用当前应用已有分组;需要跨领域消歧或沿用既有两级分组体系时,可使用 `<业务领域>---<业务场景>`,否则使用 `<业务场景>`。表数量不决定是否拆分层级。建议最多两级,层级不得为空或带首尾空白;使用保留值 `ungrouped` 清空。CLI 仅描述推荐格式并保持兼容,不额外拒绝历史非标准值。
74
85
  - 推荐用 `--expect-business-group` 保护当前值。
75
86
  - 不确定 Dataset code 时,先用 `rabetbase dataset list --name <name> --format compress` 定位。
76
87
  - 业务场景分组只能使用本命令更新,不要通过 `dataset extend-update` 或 `/smartapi/dataset/update-driven-data` 修改。
@@ -97,7 +97,7 @@ rabetbase dataset detail --code <数据集编码> --format json --jq '.data.oper
97
97
  ## 提示
98
98
 
99
99
  - 写 SQL / Backend Function 前先调用此命令确认真实字段名、类型与枚举;关联关系统一看 **`dataset relations`**
100
- - `--alias` 需要先执行 `rabetbase api pull` 生成 `api.ts`
100
+ - `--alias` 需要本地 `api.ts` 已有对应 alias(`api pull` 取事实后按 [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 更新)
101
101
  - 横切数据访问流程、外键与性能:见 [`guides/data-api-guidelines.md`](../guides/data-api-guidelines.md)
102
102
 
103
103
  ## 参考
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 何时用
6
6
 
7
- - **analyze-batch-plan**:增量表清单较多时,先预览确定性安全批次;不创建服务端任务
7
+ - **analyze-batch-plan**:只要增量表清单非空,就先预览确定性安全批次;不因表少而跳过,也不创建服务端任务
8
8
  - **analyze-start**:接入新库或表结构大变后,同步到 Lovrabet(一次调用只启动一个任务)
9
9
  - **analyze-cancel**:任务卡住或误触,需要停掉当前分析
10
10
  - **analyze-status**:轮询任务状态,并读取 CLI 派生的终态、重试和耗时字段
@@ -70,7 +70,7 @@ rabetbase db analyze-status --id 10157 --plan <traceId> --format compress
70
70
 
71
71
  必须按 `index` 严格串行:每批独立调用一次 `analyze-start`,并保存一个独立 `planId`。当前批次为 `PENDING / RUNNING / RETRYING / CANCELING` 时继续查询同一 planId;`SUCCESS` 才直接进入下一批;`PARTIAL_SUCCESS` 记录失败事实后继续;`FAILED / CANCELLED` 停止整个批次编排;未知状态停止自动推进。
72
72
 
73
- 如果 `analyze-start` 没有明确返回 `data.planId`,停止自动推进且不得盲目重试,因为请求结果可能不确定。全部批次结束后按 `db detail.tableCount` 的 200 表阈值决定直接读取或先执行 `db diff-refresh-start/status`,再执行完整 `db diff --all --changed-only`;只对仍在 `data.toAnalyzeTables` 的非删除表逐表串行恢复一次,最后按同一策略再读取一次完整 diff。
73
+ 如果 `analyze-start` 没有明确返回 `data.planId`,停止自动推进且不得盲目重试,因为请求结果可能不确定。全部批次结束后默认执行 `db diff-refresh-start/status`,再执行完整 `db diff --all --changed-only`,不根据 `tableCount` 跳过异步刷新;只有用户明确要求不分析、不刷新或只看现有结果时才直接读取。只对仍在 `data.toAnalyzeTables` 的非删除表逐表串行恢复一次,最后按同一策略再读取一次完整 diff。
74
74
 
75
75
  显式单批 `analyze-start --tables` 的持久化参数超过 1024 UTF-8 bytes 时,CLI 会在调用 API 前返回 validation error 并提示先运行 `db analyze-batch-plan`。960 是规划安全预算;960 至 1024 bytes 的显式单批仍允许启动。未传 `--tables` 的全量分析不受此保护影响。
76
76
 
@@ -101,7 +101,7 @@ rabetbase db analyze-status --id 10157 --plan <traceId> --format compress
101
101
  | `data.totalElapsedMs` | 从 `firstStartTime` 到 `endTime` 或当前查询时刻的 plan 墙钟耗时;缺少可靠时间戳时为 `null` |
102
102
  | `data.hasMultipleAttempts` | `firstStartTime` 与 `startTime` 都有效且不相同时为 `true`,表示服务端开启过后续执行尝试 |
103
103
 
104
- `PENDING / RUNNING / RETRYING / CANCELING` 与未知状态都不是终态。不要根据 `failedTables`、`retryCount` 或错误文案推测状态。`PARTIAL_SUCCESS` 只表示任务已到终态;必须按 200 表阈值刷新或直接复跑 `db diff --all --changed-only` 验证目标差异收敛,才能得出本轮分析完成结论。
104
+ `PENDING / RUNNING / RETRYING / CANCELING` 与未知状态都不是终态。不要根据 `failedTables`、`retryCount` 或错误文案推测状态。`PARTIAL_SUCCESS` 只表示任务已到终态;默认必须异步刷新后复跑 `db diff --all --changed-only` 验证目标差异收敛,只有用户明确要求跳过分析/刷新时才直接读取现有结果,之后才能得出本轮分析完成结论。
105
105
 
106
106
  `analyze-status` 每次只查询一次。轮询时必须继续使用当前任务的同一 `planId`;查询超时、断网或临时 API 失败不等于分析失败,也不得触发新的 `analyze-start`。当前稳定任务状态中没有独立的 `TIMEOUT` 终态。
107
107
 
@@ -5,7 +5,7 @@
5
5
  ## 何时用
6
6
 
7
7
  - 已用 `db list` 拿到 `id`,需要比列表更全的字段
8
- - 读取 `tableCount`,按 200 张表阈值决定是否先刷新差异结果
8
+ - 读取 `tableCount` 作为连接规模事实;不再用它决定是否先刷新差异结果
9
9
  - 需要当前 **`latestAnalysisTraceId`** 查询最新分析状态;取消已知任务时仍使用正在跟踪的原 planId
10
10
 
11
11
  ## 命令
@@ -24,7 +24,7 @@ rabetbase db detail --id 10157 --format compress
24
24
 
25
25
  ## 参考
26
26
 
27
- 输出中的 `tableCount` 是当前连接表数量:不大于 200 时通常直接读取 `db diff`;大于 200 时建议先执行 `db diff-refresh-start/status`。字段缺失时不猜测数量,也不隐式刷新。
27
+ 输出中的 `tableCount` 是当前连接表数量,仅用于展示和排期。DBAgent 增量分析默认先执行 `db diff-refresh-start/status`,无论该字段大小或是否缺失;只有用户明确要求跳过分析/刷新时才直接读取现有 `db diff`。
28
28
 
29
29
  `datasetDependency.hasDependencies` 表示当前连接是否仍有有效 Dataset 依赖,`activeDatasetCount` 是依赖数量;明细见同级 `datasets`。
30
30
 
@@ -4,11 +4,11 @@
4
4
 
5
5
  ## 何时刷新
6
6
 
7
- - `db detail` 返回 `tableCount > 200`,读取差异前建议刷新。
8
- - 用户明确要求“实时刷新”或“强制刷新”,无论表数量多少都刷新。
9
- - `tableCount <= 200` 时服务端通常实时计算差异,默认不刷新。
7
+ - DBAgent 增量分析工作流默认刷新,无论 `tableCount` 多少或是否缺失。
8
+ - 用户明确要求“实时刷新”或“强制刷新”时执行刷新。
9
+ - 只有用户明确要求“不需要分析”“不刷新”或“只看现有结果”时才跳过,并说明现有差异可能不是最新事实。
10
10
 
11
- 刷新只影响默认 `db diff` 差异视角;`db diff --view all` 本身就是实时全表分页,不需要先刷新差异快照。
11
+ 刷新只影响默认 `db diff` 差异视角;`db diff --view all` 本身是实时全表分页,但在 DBAgent 增量分析工作流中仍默认先完成异步差异刷新,以形成一致、可跟踪的分析流程。
12
12
 
13
13
  ## 命令
14
14
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  | 视角 | 命令 | 服务端语义 |
8
8
  |---|---|---|
9
- | 差异表(默认) | `db diff` | 调用 `getDiffTableByPage`。表数量不大于 200 时服务端通常实时计算;大于 200 时可能读取最近一次差异快照。 |
9
+ | 差异表(默认) | `db diff` | 调用 `getDiffTableByPage`。服务端可能实时计算或读取最近差异快照;Agent 不根据表数量推断新鲜度。 |
10
10
  | 全部表 | `db diff --view all` | 调用实时分页接口,包含 `ALREADY_ANALYZED`,用于查看无差异表或手动选择重新分析。 |
11
11
 
12
12
  `--all` 始终表示“聚合当前视角的全部分页”,不表示“全部表”。需要全部表必须显式传 `--view all`。
@@ -36,15 +36,12 @@ rabetbase db diff --id 10157 --view all --all --format compress
36
36
 
37
37
  ## 刷新决策
38
38
 
39
- 先执行 `db detail --id <id>` 读取 `tableCount`:
39
+ - DBAgent 增量分析工作流默认先按 [`db diff-refresh-start/status`](rabetbase-db-diff-refresh.md) 完成一次异步差异刷新,再读取 `db diff`。
40
+ - 不根据 `tableCount` 的大小或缺失状态跳过刷新。
41
+ - 只有用户明确要求“不需要分析”“不刷新”或“只看现有结果”时才直接读取,并说明结果可能不是最新事实。
42
+ - 用户明确要求“实时刷新/强制刷新”时,同样执行默认异步刷新流程。
40
43
 
41
- - `tableCount <= 200`:直接读取 `db diff`;除非用户明确要求,否则不要刷新。
42
- - `tableCount > 200`:读取前建议按 [`db diff-refresh-start/status`](rabetbase-db-diff-refresh.md) 刷新差异快照。
43
- - 用户明确要求“实时刷新/强制刷新”:不考虑表数量,执行刷新。
44
- - 用户明确要求“不刷新/只看现有结果”:直接读取;大库需提示结果可能滞后。
45
- - `tableCount` 缺失:直接读取并说明新鲜度未知,不要因为未知而隐式发起写任务。
46
-
47
- `db diff` 是只读命令,绝不隐式启动刷新任务。
44
+ `db diff` 命令自身仍是只读命令,不会在实现内部隐式启动刷新任务;这里要求的是 Agent 在调用 `db diff` 前显式编排 `db diff-refresh-start/status`。
48
45
 
49
46
  ## 机器可读摘要
50
47
 
@@ -24,7 +24,7 @@ rabetbase doctor check
24
24
  | Config JSON | 分别检测全局/项目配置文件是否为**合法 JSON**;非法时标红并给出解析错误(常见于尾随逗号、注释等,会导致该侧配置在合并时被忽略) |
25
25
  | Merged Config | 合并后的所有配置项(appCode / env / cookie / apiDir 等) |
26
26
  | Apps | 多应用模式下的应用列表及各自配置 |
27
- | API Endpoints | 最终生效的三个域名(apiDomain / userDomain / runtimeDomain) |
27
+ | API Endpoints | 最终生效的 region 与六个域名(user / api / runtime / skill / kb / app) |
28
28
  | Auth | 登录状态及 cookie 有效性 |
29
29
 
30
30
  ## 典型场景