@lovrabet/rabetbase-cli 2.5.3-beta.2 → 2.5.3-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/lib/api/api-doc.js +1 -1
  2. package/lib/api/api-group.d.ts +22 -0
  3. package/lib/api/api-group.js +1 -0
  4. package/lib/api/fetch-model-list.js +1 -1
  5. package/lib/api/generate-api-file.d.ts +18 -2
  6. package/lib/api/generate-api-file.js +1 -1
  7. package/lib/api/generate-sdk-config-file.js +1 -1
  8. package/lib/api/legacy-api-file.d.ts +11 -0
  9. package/lib/api/legacy-api-file.js +1 -0
  10. package/lib/api/model-registry-file.d.ts +36 -0
  11. package/lib/api/model-registry-file.js +1 -0
  12. package/lib/api/model-registry-scaffold.d.ts +7 -0
  13. package/lib/api/model-registry-scaffold.js +1 -0
  14. package/lib/api/model-source.d.ts +6 -0
  15. package/lib/api/model-source.js +1 -0
  16. package/lib/auth/auth-server-ui.js +1 -1
  17. package/lib/auth/auth-server.js +1 -1
  18. package/lib/auth/constant.js +1 -1
  19. package/lib/auth/get-cookie.js +1 -1
  20. package/lib/auth/get-session-user.js +1 -1
  21. package/lib/auth/is-session-valid.js +1 -1
  22. package/lib/auth/login-success-html.js +1 -1
  23. package/lib/auth/logout.js +1 -1
  24. package/lib/cli-flags.js +1 -1
  25. package/lib/cli.js +1 -1
  26. package/lib/commands/api/generate.js +1 -1
  27. package/lib/commands/api/index.js +1 -1
  28. package/lib/commands/api/list.js +1 -1
  29. package/lib/commands/api/pull.js +1 -1
  30. package/lib/commands/api/shared.js +1 -1
  31. package/lib/commands/app/index.js +1 -1
  32. package/lib/commands/app/list.js +1 -1
  33. package/lib/commands/app/members-list.js +1 -1
  34. package/lib/commands/app/remote-directory.js +1 -1
  35. package/lib/commands/app/shared.js +1 -1
  36. package/lib/commands/app-config/delete.js +1 -1
  37. package/lib/commands/app-config/get.js +1 -1
  38. package/lib/commands/app-config/index.js +1 -1
  39. package/lib/commands/app-config/list.js +1 -1
  40. package/lib/commands/app-config/set.js +1 -1
  41. package/lib/commands/app-config/shared.js +1 -1
  42. package/lib/commands/auth/index.js +1 -1
  43. package/lib/commands/bff/create.js +1 -1
  44. package/lib/commands/bff/delete.js +1 -1
  45. package/lib/commands/bff/detail.js +1 -1
  46. package/lib/commands/bff/index.js +1 -1
  47. package/lib/commands/bff/list.js +1 -1
  48. package/lib/commands/bff/logs.js +1 -1
  49. package/lib/commands/bff/pull.js +1 -1
  50. package/lib/commands/bff/push.js +1 -1
  51. package/lib/commands/bff/status.js +1 -1
  52. package/lib/commands/cli-skill/index.js +1 -1
  53. package/lib/commands/cli-update.js +1 -1
  54. package/lib/commands/codegen/index.js +1 -1
  55. package/lib/commands/codegen/sdk.js +1 -1
  56. package/lib/commands/codegen/sql.js +1 -1
  57. package/lib/commands/common/app-registry.js +1 -1
  58. package/lib/commands/common/app-selector.js +1 -1
  59. package/lib/commands/common/async-task.js +1 -1
  60. package/lib/commands/common/dry-run.js +1 -1
  61. package/lib/commands/common/flags.d.ts +7 -0
  62. package/lib/commands/common/flags.js +1 -1
  63. package/lib/commands/common/local-file.js +1 -1
  64. package/lib/commands/common/validate.js +1 -1
  65. package/lib/commands/config/delete.js +1 -1
  66. package/lib/commands/config/get.js +1 -1
  67. package/lib/commands/config/index.js +1 -1
  68. package/lib/commands/config/init.js +1 -1
  69. package/lib/commands/config/list.js +1 -1
  70. package/lib/commands/config/set.js +1 -1
  71. package/lib/commands/config/shared.js +1 -1
  72. package/lib/commands/dataset/batch-design.js +1 -1
  73. package/lib/commands/dataset/business-group-update.js +1 -1
  74. package/lib/commands/dataset/business-groups.js +1 -1
  75. package/lib/commands/dataset/capability.js +1 -1
  76. package/lib/commands/dataset/cross-relation-create.d.ts +2 -0
  77. package/lib/commands/dataset/cross-relation-create.js +1 -0
  78. package/lib/commands/dataset/cross-relation-delete.d.ts +2 -0
  79. package/lib/commands/dataset/cross-relation-delete.js +1 -0
  80. package/lib/commands/dataset/cross-relation-list.d.ts +2 -0
  81. package/lib/commands/dataset/cross-relation-list.js +1 -0
  82. package/lib/commands/dataset/cross-relation-shared.d.ts +190 -0
  83. package/lib/commands/dataset/cross-relation-shared.js +1 -0
  84. package/lib/commands/dataset/cross-relation-update.d.ts +2 -0
  85. package/lib/commands/dataset/cross-relation-update.js +1 -0
  86. package/lib/commands/dataset/delete.js +1 -1
  87. package/lib/commands/dataset/detail.js +1 -1
  88. package/lib/commands/dataset/extend-update.js +1 -1
  89. package/lib/commands/dataset/field-restore.js +1 -1
  90. package/lib/commands/dataset/field-update.js +1 -1
  91. package/lib/commands/dataset/generate.js +1 -1
  92. package/lib/commands/dataset/index.js +1 -1
  93. package/lib/commands/dataset/list.js +1 -1
  94. package/lib/commands/dataset/operations.js +1 -1
  95. package/lib/commands/dataset/relation-audit.js +1 -1
  96. package/lib/commands/dataset/relation-create.js +1 -1
  97. package/lib/commands/dataset/relation-delete.js +1 -1
  98. package/lib/commands/dataset/relation-shared.js +1 -1
  99. package/lib/commands/dataset/relation-update.js +1 -1
  100. package/lib/commands/dataset/relations.js +1 -1
  101. package/lib/commands/dataset/rename.js +1 -1
  102. package/lib/commands/dataset/restore.js +1 -1
  103. package/lib/commands/dataset/user-deleted-field-list.js +1 -1
  104. package/lib/commands/db/analysis-batching.js +1 -1
  105. package/lib/commands/db/analyze-batch-plan.js +1 -1
  106. package/lib/commands/db/analyze-cancel.js +1 -1
  107. package/lib/commands/db/analyze-start.js +1 -1
  108. package/lib/commands/db/analyze-status.js +1 -1
  109. package/lib/commands/db/create.js +1 -1
  110. package/lib/commands/db/delete.js +1 -1
  111. package/lib/commands/db/detail.js +1 -1
  112. package/lib/commands/db/diff-refresh-start.js +1 -1
  113. package/lib/commands/db/diff-refresh-status.js +1 -1
  114. package/lib/commands/db/diff.js +1 -1
  115. package/lib/commands/db/index.js +1 -1
  116. package/lib/commands/db/list.js +1 -1
  117. package/lib/commands/db/shared.js +1 -1
  118. package/lib/commands/db/table-diff-shared.js +1 -1
  119. package/lib/commands/db/tables.js +1 -1
  120. package/lib/commands/db/test.js +1 -1
  121. package/lib/commands/db/update.js +1 -1
  122. package/lib/commands/deployment/index.js +1 -1
  123. package/lib/commands/deployment/sync-all.js +1 -1
  124. package/lib/commands/deployment/sync-jobs.js +1 -1
  125. package/lib/commands/deployment/sync-status.js +1 -1
  126. package/lib/commands/doctor.js +1 -1
  127. package/lib/commands/file/index.js +1 -1
  128. package/lib/commands/flow/create.js +1 -1
  129. package/lib/commands/flow/detail.js +1 -1
  130. package/lib/commands/flow/index.js +1 -1
  131. package/lib/commands/flow/list.js +1 -1
  132. package/lib/commands/flow/publish.js +1 -1
  133. package/lib/commands/flow/runtime-resources-shared.js +1 -1
  134. package/lib/commands/flow/runtime-role-list.js +1 -1
  135. package/lib/commands/flow/runtime-role-user-list.js +1 -1
  136. package/lib/commands/flow/runtime-user-search.js +1 -1
  137. package/lib/commands/flow/shared.js +1 -1
  138. package/lib/commands/flow/update.js +1 -1
  139. package/lib/commands/flow/validate.js +1 -1
  140. package/lib/commands/instant-api-policy/current.js +1 -1
  141. package/lib/commands/instant-api-policy/index.js +1 -1
  142. package/lib/commands/instant-api-policy/init.js +1 -1
  143. package/lib/commands/instant-api-policy/publish.js +1 -1
  144. package/lib/commands/instant-api-policy/pull.js +1 -1
  145. package/lib/commands/instant-api-policy/revision.js +1 -1
  146. package/lib/commands/instant-api-policy/revisions.js +1 -1
  147. package/lib/commands/instant-api-policy/rollback.js +1 -1
  148. package/lib/commands/instant-api-policy/shared.js +1 -1
  149. package/lib/commands/instant-api-policy/validate.js +1 -1
  150. package/lib/commands/issue/index.js +1 -1
  151. package/lib/commands/issue/nudge.js +1 -1
  152. package/lib/commands/issue/report.js +1 -1
  153. package/lib/commands/issue/shared.js +1 -1
  154. package/lib/commands/kb/create.js +1 -1
  155. package/lib/commands/kb/delete.js +1 -1
  156. package/lib/commands/kb/detail.js +1 -1
  157. package/lib/commands/kb/index.js +1 -1
  158. package/lib/commands/kb/list.js +1 -1
  159. package/lib/commands/kb/search.js +1 -1
  160. package/lib/commands/kb/shared.js +1 -1
  161. package/lib/commands/kb/update.js +1 -1
  162. package/lib/commands/logs/index.js +1 -1
  163. package/lib/commands/menu/asset-update.js +1 -1
  164. package/lib/commands/menu/delete.js +1 -1
  165. package/lib/commands/menu/external-link-create.js +1 -1
  166. package/lib/commands/menu/external-link-update.js +1 -1
  167. package/lib/commands/menu/group-create.js +1 -1
  168. package/lib/commands/menu/group-update.js +1 -1
  169. package/lib/commands/menu/index.js +1 -1
  170. package/lib/commands/menu/list.js +1 -1
  171. package/lib/commands/menu/move.js +1 -1
  172. package/lib/commands/menu/regroup-start.js +1 -1
  173. package/lib/commands/menu/rename.js +1 -1
  174. package/lib/commands/menu/shared/compare-table.js +1 -1
  175. package/lib/commands/menu/shared/delete-plan.js +1 -1
  176. package/lib/commands/menu/shared/facts.js +1 -1
  177. package/lib/commands/menu/shared/index.js +1 -1
  178. package/lib/commands/menu/shared/inquirer.js +1 -1
  179. package/lib/commands/menu/shared/local-pages.js +1 -1
  180. package/lib/commands/menu/shared/logic.js +1 -1
  181. package/lib/commands/menu/shared/mutations.js +1 -1
  182. package/lib/commands/menu/shared/service.js +1 -1
  183. package/lib/commands/menu/shared/sync-core.js +1 -1
  184. package/lib/commands/menu/shared/update-core.js +1 -1
  185. package/lib/commands/menu/shared/valid-url.js +1 -1
  186. package/lib/commands/menu/sync.js +1 -1
  187. package/lib/commands/menu/visibility-update.js +1 -1
  188. package/lib/commands/notification/config-create.js +1 -1
  189. package/lib/commands/notification/config-delete.js +1 -1
  190. package/lib/commands/notification/config-list.js +1 -1
  191. package/lib/commands/notification/config-update.js +1 -1
  192. package/lib/commands/notification/index.js +1 -1
  193. package/lib/commands/notification/shared.js +1 -1
  194. package/lib/commands/ocr/index.js +1 -1
  195. package/lib/commands/page/create.js +1 -1
  196. package/lib/commands/page/custom/detail.js +1 -1
  197. package/lib/commands/page/custom/list.js +1 -1
  198. package/lib/commands/page/custom/publish.js +1 -1
  199. package/lib/commands/page/custom/shared.js +1 -1
  200. package/lib/commands/page/custom/syntax.js +1 -1
  201. package/lib/commands/page/custom/update.js +1 -1
  202. package/lib/commands/page/data-list-status.js +1 -1
  203. package/lib/commands/page/generate-start.js +1 -1
  204. package/lib/commands/page/generate-status.js +1 -1
  205. package/lib/commands/page/index.js +1 -1
  206. package/lib/commands/page/pull.js +1 -1
  207. package/lib/commands/page/push.js +1 -1
  208. package/lib/commands/page/relation-audit.js +1 -1
  209. package/lib/commands/page/restore.js +1 -1
  210. package/lib/commands/page/shared.js +1 -1
  211. package/lib/commands/page/sync.js +1 -1
  212. package/lib/commands/project/api-architecture-upgrade.d.ts +28 -0
  213. package/lib/commands/project/api-architecture-upgrade.js +1 -0
  214. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  215. package/lib/commands/project/create/format-elapsed.js +1 -1
  216. package/lib/commands/project/create/main.js +1 -1
  217. package/lib/commands/project/create/materialize-project-template.js +1 -1
  218. package/lib/commands/project/create/project-name.js +1 -1
  219. package/lib/commands/project/create/project-template-archive.js +1 -1
  220. package/lib/commands/project/create/project-template-path.js +1 -1
  221. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  222. package/lib/commands/project/create/use-format-code.js +1 -1
  223. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  224. package/lib/commands/project/domain-routing-sync.js +1 -1
  225. package/lib/commands/project/index.js +1 -1
  226. package/lib/commands/project/upgrade.d.ts +30 -1
  227. package/lib/commands/project/upgrade.js +1 -1
  228. package/lib/commands/registry.js +1 -1
  229. package/lib/commands/role/delete.js +1 -1
  230. package/lib/commands/role/detail.js +1 -1
  231. package/lib/commands/role/index.js +1 -1
  232. package/lib/commands/role/list.js +1 -1
  233. package/lib/commands/role/shared.js +1 -1
  234. package/lib/commands/role/update.js +1 -1
  235. package/lib/commands/role/user-add.js +1 -1
  236. package/lib/commands/role/user-remove.js +1 -1
  237. package/lib/commands/role/user-resolve.js +1 -1
  238. package/lib/commands/rule/get.js +1 -1
  239. package/lib/commands/rule/index.js +1 -1
  240. package/lib/commands/rule/list.js +1 -1
  241. package/lib/commands/rule/set.js +1 -1
  242. package/lib/commands/rule/shared.js +1 -1
  243. package/lib/commands/run/index.js +1 -1
  244. package/lib/commands/schema.js +1 -1
  245. package/lib/commands/sql/create.js +1 -1
  246. package/lib/commands/sql/delete.js +1 -1
  247. package/lib/commands/sql/detail.js +1 -1
  248. package/lib/commands/sql/exec.js +1 -1
  249. package/lib/commands/sql/index.js +1 -1
  250. package/lib/commands/sql/list.js +1 -1
  251. package/lib/commands/sql/pull.js +1 -1
  252. package/lib/commands/sql/push.js +1 -1
  253. package/lib/commands/sql/shared.js +1 -1
  254. package/lib/commands/sql/status.js +1 -1
  255. package/lib/commands/sql/validate.js +1 -1
  256. package/lib/commands/task/index.js +1 -1
  257. package/lib/commands/task/status.js +1 -1
  258. package/lib/commands/tenant/index.js +1 -1
  259. package/lib/commands/tenant/members-list.js +1 -1
  260. package/lib/commands/tenant/shared.js +1 -1
  261. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  262. package/lib/commands/user-account/index.js +1 -1
  263. package/lib/commands/workspace/add.js +1 -1
  264. package/lib/commands/workspace/index.js +1 -1
  265. package/lib/commands/workspace/remove.js +1 -1
  266. package/lib/config/domain-config.js +1 -1
  267. package/lib/config/project-domain-routing.js +1 -1
  268. package/lib/config/region-config.js +1 -1
  269. package/lib/config/schema.js +1 -1
  270. package/lib/constant/cdn.js +1 -1
  271. package/lib/constant/cli.js +1 -1
  272. package/lib/constant/defaults.js +1 -1
  273. package/lib/constant/domain.js +1 -1
  274. package/lib/constant/env.js +1 -1
  275. package/lib/constant/output.js +1 -1
  276. package/lib/constant/paths.js +1 -1
  277. package/lib/constant/region.js +1 -1
  278. package/lib/constant/risk.js +1 -1
  279. package/lib/constant/routing-profile.js +1 -1
  280. package/lib/context/app-resolver.d.ts +2 -0
  281. package/lib/context/app-resolver.js +1 -1
  282. package/lib/context/auth-resolver.js +1 -1
  283. package/lib/context/config-loader.js +1 -1
  284. package/lib/context.d.ts +2 -1
  285. package/lib/context.js +1 -1
  286. package/lib/core/alias-resolver.d.ts +13 -17
  287. package/lib/core/alias-resolver.js +1 -1
  288. package/lib/core/api-client.d.ts +6 -0
  289. package/lib/core/api-client.js +1 -1
  290. package/lib/core/bff/config.js +1 -1
  291. package/lib/core/bff/file-system.js +1 -1
  292. package/lib/core/bff/hash.js +1 -1
  293. package/lib/core/bff/hook-directory.js +1 -1
  294. package/lib/core/bff/lock.js +1 -1
  295. package/lib/core/bff/utils.js +1 -1
  296. package/lib/core/cross-db-relation.d.ts +41 -0
  297. package/lib/core/cross-db-relation.js +1 -0
  298. package/lib/core/db-resolver.js +1 -1
  299. package/lib/core/flow-config.js +1 -1
  300. package/lib/core/instant-api-policy/config.js +1 -1
  301. package/lib/core/kb-search-client.js +1 -1
  302. package/lib/core/page/file-system.js +1 -1
  303. package/lib/core/page/hash.js +1 -1
  304. package/lib/core/page/lock.js +1 -1
  305. package/lib/core/page/lr-smart-jsx.js +1 -1
  306. package/lib/core/sql-index-auditor.js +1 -1
  307. package/lib/core/sql-sync/config.js +1 -1
  308. package/lib/core/sql-sync/file-system.js +1 -1
  309. package/lib/core/sql-sync/hash.js +1 -1
  310. package/lib/core/sql-sync/lock.js +1 -1
  311. package/lib/core/sql-sync/utils.js +1 -1
  312. package/lib/core/sql-validator.js +1 -1
  313. package/lib/errors.js +1 -1
  314. package/lib/framework/build-all-flags.js +1 -1
  315. package/lib/framework/error-output.js +1 -1
  316. package/lib/framework/explicit-yes.js +1 -1
  317. package/lib/framework/flags.js +1 -1
  318. package/lib/framework/help.js +1 -1
  319. package/lib/framework/index.js +1 -1
  320. package/lib/framework/output.js +1 -1
  321. package/lib/framework/response.js +1 -1
  322. package/lib/framework/runner-alias.d.ts +1 -1
  323. package/lib/framework/runner-alias.js +1 -1
  324. package/lib/framework/runner.js +1 -1
  325. package/lib/framework/schema-export.js +1 -1
  326. package/lib/framework/supported-flags.js +1 -1
  327. package/lib/framework/types.js +1 -1
  328. package/lib/generated/build-info.d.ts +4 -4
  329. package/lib/generated/build-info.js +1 -1
  330. package/lib/generated/official-routing.js +1 -1
  331. package/lib/generated/routing-contract.js +1 -1
  332. package/lib/help.js +1 -1
  333. package/lib/postinstall.js +1 -1
  334. package/lib/runtime/confirmation.js +1 -1
  335. package/lib/runtime/event.js +1 -1
  336. package/lib/runtime/index.js +1 -1
  337. package/lib/runtime/queue.js +1 -1
  338. package/lib/runtime/resolve.js +1 -1
  339. package/lib/skills/builtin-skill.js +1 -1
  340. package/lib/skills/main.js +1 -1
  341. package/lib/skills/npx-skills-add.d.ts +0 -10
  342. package/lib/skills/npx-skills-add.js +1 -1
  343. package/lib/skills/skill-presence.js +1 -1
  344. package/lib/telemetry/cli-command-trace.js +1 -1
  345. package/lib/telemetry/cli-help-trace.js +1 -1
  346. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  347. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  348. package/lib/telemetry/send-cli-trace-log.js +1 -1
  349. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  350. package/lib/types/index.d.ts +11 -1
  351. package/lib/utils/ai_config.js +1 -1
  352. package/lib/utils/apply-jq-filter.js +1 -1
  353. package/lib/utils/cdn-config.js +1 -1
  354. package/lib/utils/check-sdk-version.js +1 -1
  355. package/lib/utils/cli-version-check.js +1 -1
  356. package/lib/utils/cli-version-policy.d.ts +12 -0
  357. package/lib/utils/cli-version-policy.js +1 -1
  358. package/lib/utils/config.js +1 -1
  359. package/lib/utils/entity-with-id.js +1 -1
  360. package/lib/utils/file-utils.js +1 -1
  361. package/lib/utils/guides-cdn.js +1 -1
  362. package/lib/utils/http-client.js +1 -1
  363. package/lib/utils/is-non-interactive.js +1 -1
  364. package/lib/utils/logger.js +1 -1
  365. package/lib/utils/params.js +1 -1
  366. package/lib/utils/platform.js +1 -1
  367. package/lib/utils/sleep.js +1 -1
  368. package/lib/utils/template-replacer.js +1 -1
  369. package/lib/utils/update-notice.js +1 -1
  370. package/lib/utils/version.js +1 -1
  371. package/lib/utils/with-active-cookie.js +1 -1
  372. package/lib/utils/write-cli-side-channel.js +1 -1
  373. package/package.json +4 -1
  374. package/skills/rabetbase/SKILL.md +10 -6
  375. package/skills/rabetbase/guides/sdk-client-generation.md +112 -61
  376. package/skills/rabetbase/guides/typescript-sdk.md +9 -0
  377. package/skills/rabetbase/references/rabetbase-api-pull.md +30 -19
  378. package/skills/rabetbase/references/rabetbase-app-list.md +1 -1
  379. package/skills/rabetbase/references/rabetbase-config.md +2 -1
  380. package/skills/rabetbase/references/rabetbase-dataset-cross-relations.md +60 -0
  381. package/skills/rabetbase/references/rabetbase-project-create.md +3 -3
  382. package/skills/rabetbase/references/rabetbase-project-upgrade.md +24 -13
  383. package/skills/rabetbase.manifest.json +4 -3
  384. package/templates/README.md +16 -4
  385. package/templates/generate-api/model-runtime.ts.tpl +101 -0
  386. package/templates/generate-api/profile-api.ts.tpl +21 -0
  387. package/templates/generate-api/profile-client.ts.tpl +14 -0
@@ -1,8 +1,18 @@
1
- # SDK 客户端代码生成(api.ts / client.ts)
1
+ # SDK 客户端代码生成(稳定入口与模型注册表)
2
2
 
3
- > 目标:根据 `rabetbase api pull` 返回的数据集事实,生成或更新浏览器子应用的 `src/api/api.ts` `src/api/client.ts`,并保留项目已有的自定义写法。
3
+ > 目标:根据 `rabetbase api pull` 返回的数据集事实,维护浏览器子应用的稳定 SDK 入口,并让同一套业务 API 的不同部署使用各自正确的 `datasetCode`。
4
4
  >
5
- > CLI 默认不覆盖 TypeScript。`api pull` 只保证:刷新 `data.files.sdkConfig.path` 指向的应用级 SDK 路由文件、返回 `data.models`,并在文件缺失时写入 Cookie-first 脚手架。已有文件由本指南更新;只有用户明确要求放弃本地定制并完整重建时,才使用 `--force --yes`。
5
+ > 单应用或显式配置同一 `apiGroup` profile 使用注册表模式:`project create` / `project upgrade` 维护稳定源码结构,`api pull` 只刷新 `models.generated.ts` 中的模型事实。`apiGroup` 只负责归并,不进入文件名或运行时对象。
6
+
7
+ ## 重要运行边界:一次运行只选择一个 profile
8
+
9
+ 注册表模式解决的是:**同一份业务代码分别部署到不同节点,并由当前 Runtime Domain 选择唯一 profile**。它不提供跨节点数据访问,也不把多个 profile 合并成一个可同时查询的浏览器 client。
10
+
11
+ - 业务代码始终通过稳定 alias 调用 `lovrabetClient.models.<alias>`;不要读取注册表后自行挑选其他 profile 的 `datasetCode`,也不要把该代码硬编码进业务模块。
12
+ - 当前 profile 只物化自己的模型。仅其他 profile 存在的 alias 不会注册到当前 client;误用时应保留 SDK 的 `MODEL_NOT_FOUND`,不得回退默认 profile 或借用其他节点的代码。
13
+ - 节点独有功能可先检查 `LOVRABET_PROFILE_NAME` 再决定是否调用;共享功能不需要分支,同一 alias 会自动绑定当前 profile 的代码。
14
+ - 浏览器 Cookie 与 Runtime Domain 都属于当前节点。不要为了“一次查询两端”在浏览器中创建两个 profile client、跨 Domain 转发认证信息或绕过 Domain 选择器。
15
+ - 真正需要跨节点读取、比对或聚合时,使用具备明确认证和授权边界的可信服务端或 Backend Function 编排;CLI 侧排查则分别用 `--app <profile>` 查询,不把两个 profile 当成一个运行实例。
6
16
 
7
17
  ## 何时执行
8
18
 
@@ -10,7 +20,7 @@
10
20
 
11
21
  - 刚执行 `rabetbase api pull` 或 `rabetbase project create`(带 appCode)
12
22
  - 平台增删了 Dataset,本地 `models` 过期
13
- - `api.ts` / `client.ts` 缺失、空 `models: []`、或 `LOVRABET_APP_CODE` 仍是 `NOT-SET`
23
+ - `api.ts` / `client.ts` 缺失、注册表为空、或生成 profile AppCode 仍是 `NOT-SET`
14
24
  - 用户要求修复 SDK 客户端初始化
15
25
 
16
26
  不要凭空编造 `datasetCode`。不要把本指南里的浏览器 Cookie 客户端写成服务端 `accessKey` 客户端。
@@ -18,95 +28,134 @@
18
28
  ## 工作流
19
29
 
20
30
  ```
31
+ rabetbase project upgrade --dry-run
32
+ → 审阅 apiArchitecture.groups[].files[]
33
+ rabetbase project upgrade --yes
34
+ → 标准旧脚手架自动备份迁移;业务定制生成候选入口
21
35
  rabetbase api pull --format compress
22
36
  → 单应用读 data;项目应用清单逐项读 data.apps[]
23
- → 读取每项的 models / configName / isDefaultConfig / files / needsAgentMerge
24
- 读已有 api.ts、client.ts files.sdkConfig.path(含 {prefix}-api.ts / {prefix}-client.ts / {prefix}-sdk-config.ts
25
- 按事实更新 models,保留本地 extras
26
- → 不要改已经正确的 createClient({ apiConfigName, ...LOVRABET_SDK_CONFIG })
37
+ → 读取每项的 models / modelProfile / files / needsProjectUpgrade
38
+ 注册表模式检查 models.generated.ts / model-runtime.ts / api.ts / client.ts
39
+ 验证最终 Runtime Domain 能选中目标 profile
27
40
  ```
28
41
 
29
- 1. 执行 `rabetbase api pull --format compress`(需要人类可读缩进时用 `--format json`)。
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 为准。
33
- 3. 先读现有文件再写:
34
- - 默认单应用:`src/api/api.ts`、`src/api/client.ts`、`src/api/sdk-config.ts`
35
- - 多应用非 default:`{name}-api.ts` / `{name}-client.ts` / `{name}-sdk-config.ts`(以 `data.files.*.path` 为准)
36
- 4. SDK 路由文件由 CLI 维护(`data.files.sdkConfig.action === "refreshed"`),不要往里面写 `cookie` / `accessKey` / `token`。若保留的旧 `{name}-client.ts` 仍导入共享 `./sdk-config`,只把该 import 改为 `./{name}-sdk-config`,其余本地定制保持不变。
37
- 5. 看 `data.needsAgentMerge` 和 `data.files.*.action`,**不要**用已删除的 `wroteScaffold`:
38
- - `needsAgentMerge === false` 且 `api`/`client` 均为 `created` 或 `overwritten`:脚手架已按当前 `models` 写好,只需检查项目 extras。
39
- - `needsAgentMerge === true`:至少有一个 TypeScript 文件被 **preserved**。先比较本地配置与返回事实,只在有差异时合并;即使 `client` 刚 `created`,也不能据此跳过对已保留 `api.ts` 的检查。
40
- 6. 默认应用:`data.isDefaultConfig === true`,`data.configName === "default"`,代码里用 `CONFIG_NAMES.DEFAULT`。
41
- 7. 具名应用:`data.isDefaultConfig === false`,`data.configName` 是不含引号的名字(如 `order`),`registerModels(..., "order")` 与 `apiConfigName: "order"`。不要把 `configName` 再包一层引号。
42
+ 1. 已有项目先执行 `rabetbase project upgrade --dry-run`。标准旧脚手架可直接正式升级;`manual-merge` 表示原入口含业务定制,正式升级只会写候选文件,不会覆盖原文件。
43
+ 2. 执行 `rabetbase project upgrade --yes` 后审阅 `apiArchitecture.manualMergeRequired`。候选文件在 `.rabetbase/project-upgrade/api-model-registry-v2/candidates/`;完成合并前不要删除原入口。
44
+ 3. 执行 `rabetbase api pull --format compress`(需要人类可读缩进时用 `--format json`),刷新远端 Dataset 事实。不要自动添加 `--force`;它在注册表模式只用于明确接受空结果。
45
+ 4. 直接单应用结果使用 `data.models`;项目应用清单结果逐项使用 `data.apps[].models`。不要手写或猜测 `datasetCode`。
46
+ 5. `data.modelProfile` 存在时检查 `data.files.modelRegistry`:同一平台 `alias` 只有一条模型,`tableName` 必须在各 profile 间一致。所有当前 profile 都存在且代码相同时使用 `datasetCode`;代码不同或仅部分 profile 存在时使用 `datasetCodes[modelProfile]`,缺失 profile 不写空字符串。
47
+ 6. `model-runtime.ts` 由项目创建/升级维护,`models.generated.ts` 由 pull 刷新;都不要写入凭据或应用业务函数。若 `data.needsProjectUpgrade === true`,回到第 1 步,不要手工覆盖入口。
48
+ 7. 一个 AppCode 对应多个 profile 时,所有拉取与别名写操作都用 `--app <profile>`;不要使用有歧义的 `--appcode`。AppCode 相同不会自动归并,只有显式相同的 `apiGroup` 才表示共享业务 API。
42
49
 
43
50
  ## 权威结构
44
51
 
45
52
  浏览器子应用的权威形态与 `templates/projects/sub-app-react-demo/src/api/` 一致。脚手架模板是 `templates/generate-api/*.tpl`,生成结果应对齐 demo,而不是另造一套。
46
53
 
47
- ### sdk-config.ts / {name}-sdk-config.ts(路由,无凭证)
54
+ ### models.generated.ts(CLI 生成事实)
48
55
 
49
56
  ```typescript
50
- /**
51
- * Lovrabet SDK runtime routing.
52
- * Generated by Rabetbase CLI. Do not add credentials to this file.
53
- */
54
- export const LOVRABET_SDK_CONFIG = {} as const;
57
+ /* rabetbase-model-registry:v2 */
58
+ export const LOVRABET_MODEL_REGISTRY = {
59
+ defaultProfile: "oa-cn",
60
+ profiles: {
61
+ "oa-cn": {
62
+ appCode: "app-xxxxxxxx",
63
+ runtimeDomain: "https://runtime.lovrabet.com",
64
+ },
65
+ "oa-id": {
66
+ appCode: "app-xxxxxxxx",
67
+ runtimeDomain: "https://runtime.lovrabet.id",
68
+ },
69
+ },
70
+ models: [
71
+ {
72
+ alias: "paymentApplication",
73
+ tableName: "payment_application",
74
+ name: "Payment Application",
75
+ datasetCode: "shared-dataset-code",
76
+ },
77
+ {
78
+ alias: "orders",
79
+ tableName: "orders",
80
+ name: "Orders",
81
+ datasetCodes: {
82
+ "oa-cn": "cn-dataset-code",
83
+ "oa-id": "id-dataset-code",
84
+ },
85
+ },
86
+ ],
87
+ } as const;
55
88
  ```
56
89
 
57
- 默认节点保持空对象;其他官方节点和企业独立部署统一写入最终 `runtimeDomain`。不要手改成认证字段。项目模板所需的完整公开 Domain 与资源策略由独立命令 `rabetbase project domain-routing-sync` 写入项目根目录的 `rabetbase.domain-routing.json`。
90
+ - 以平台稳定 `alias` 作为跨 profile 的模型归并键,`tableName` 作为一致性校验;同 alias 指向不同表或同表出现不同 alias 时停止写入。
91
+ - 默认 profile 提供公共 `alias` / `name`;其他 profile 的同表展示名不同不会制造第二份模型。
92
+ - 所有当前 profile 都存在且 Dataset 代码相同时只写单数 `datasetCode`。
93
+ - 某 profile 独有的表只包含自己的 `datasetCodes` key;运行时不会把它提供给其他 profile。
94
+ - 文件版本由 CLI 专用注释标记识别,不进入应用运行时对象。
95
+ - 此文件由 CLI 原子刷新,不手工编辑。
58
96
 
59
- ### api.ts
97
+ ### model-runtime.ts(通用选择器)
60
98
 
61
- ```typescript
62
- import { registerModels, CONFIG_NAMES, type ModelsConfig } from "@lovrabet/sdk";
99
+ 该文件根据平台注入的 Runtime Domain 选择唯一 profile;本地构建读取项目根目录的 `rabetbase.domain-routing.json`。零匹配或多匹配都直接报错,不回退 `defaultProfile`。它只将所选 profile 物化为 SDK 的 `{ appCode, models }`,不会创建多节点 client,不放业务函数,也不硬编码具体 Dataset。
63
100
 
64
- export const LOVRABET_APP_CODE = "app-xxxxxxxx";
65
-
66
- export const LOVRABET_MODELS_CONFIG: ModelsConfig = {
67
- appCode: LOVRABET_APP_CODE,
68
- models: [
69
- { datasetCode: "abc123", tableName: "orders", name: "订单", alias: "orders" },
70
- ],
71
- } as const;
101
+ ### api.ts
72
102
 
103
+ ```typescript
104
+ import { registerModels, CONFIG_NAMES } from "@lovrabet/sdk";
105
+ import projectRouting from "../../rabetbase.domain-routing.json";
106
+ import { LOVRABET_MODEL_REGISTRY } from "./models.generated";
107
+ import { resolveActiveModelConfig } from "./model-runtime";
108
+
109
+ const activeModelConfig = resolveActiveModelConfig(
110
+ LOVRABET_MODEL_REGISTRY,
111
+ projectRouting.domains.runtime,
112
+ );
113
+
114
+ export const LOVRABET_PROFILE_NAME = activeModelConfig.profileName;
115
+ export const LOVRABET_APP_CODE = activeModelConfig.appCode;
116
+ export const LOVRABET_RUNTIME_DOMAIN = activeModelConfig.runtimeDomain;
117
+ export const LOVRABET_MODELS_CONFIG = activeModelConfig.modelsConfig;
73
118
  registerModels(LOVRABET_MODELS_CONFIG, CONFIG_NAMES.DEFAULT);
74
119
  ```
75
120
 
76
- - 默认应用:`data.isDefaultConfig` true 时用 `CONFIG_NAMES.DEFAULT`。
77
- - 非默认 / 具名应用:用 `data.configName`(不含引号的字符串,如 `order`)作为 `registerModels` 第二参数和 `apiConfigName`,不要再 import 未使用的 `CONFIG_NAMES`。
78
- - 数字开头的文件前缀使用 `APP_` 变量前缀(如 `APP_5B732428_APP_CODE`),运行时 `appCode` 保持原值。
79
- - `registerModels` 是 `@lovrabet/sdk` 的独立命名导出,**不是** `client.registerModels()`。
80
- - `api.ts` 可以作为稳定入口,从一个或多个项目内相对模块转导出模型配置。例如 `export { APP_MODELS_CONFIG as LOVRABET_MODELS_CONFIG } from "./app-api"`。CLI 会静态读取每个本地 `export … from` 目标中的模型,不执行 TypeScript;HOOK 目录和 `--code` alias 会使用汇总后的模型别名。每个 Dataset 必须只有一个 alias,且一个 alias 不能对应多个 Dataset;冲突时 CLI 会停止而不是猜测绑定目标。
121
+ `api.ts` 只负责连接注册表、路由事实和 SDK 注册。业务层继续从原路径 import,无需感知 profile 数量。
122
+
123
+ `registerModels` `@lovrabet/sdk` 的独立命名导出,**不是** `client.registerModels()`。
124
+
125
+ 历史未分组项目仍兼容读取具名前缀文件及项目内相对转导出。例如 `api.ts` 可写 `export { APP_MODELS_CONFIG as LOVRABET_MODELS_CONFIG } from "./app-api"`。CLI 会静态读取本地 `export … from` 目标,不执行 TypeScript;HOOK 目录和 `--code` alias 会使用汇总后的模型别名。每个 Dataset 必须只有一个 alias,且一个 alias 不能对应多个 Dataset;冲突时 CLI 会停止而不是猜测绑定目标。旧式前缀路径的默认应用使用 `CONFIG_NAMES.DEFAULT`,具名应用使用 `data.configName`;数字开头的文件前缀继续使用 `APP_` 变量前缀。
81
126
 
82
127
  ### client.ts(Cookie-first)
83
128
 
84
129
  ```typescript
85
130
  import { createClient, CONFIG_NAMES } from "@lovrabet/sdk";
86
- import "./api";
131
+ import { LOVRABET_RUNTIME_DOMAIN } from "./api";
87
132
  import { LOVRABET_SDK_CONFIG } from "./sdk-config";
88
133
 
89
134
  export const lovrabetClient = createClient({
90
135
  apiConfigName: CONFIG_NAMES.DEFAULT,
91
136
  ...LOVRABET_SDK_CONFIG,
137
+ runtimeDomain: LOVRABET_RUNTIME_DOMAIN,
92
138
  });
93
139
  ```
94
140
 
95
- - 必须 `import "./api"`(或 `./{prefix}-api`)以执行 `registerModels`。
96
141
  - 浏览器子应用默认登录态 Cookie:省略 `authMode`,**不要**在此文件写入 `accessKey` / `token`。
97
- - 已有 `createClient({ apiConfigName, ...LOVRABET_SDK_CONFIG })` 且与 `data.isDefaultConfig` / `data.configName` 一致时,不要改参数形态。
98
- - 非生产环境脚手架可能带 `env: "daily"`;已有客户端已能工作则不要为了对称去改。
142
+ - `runtimeDomain` 放在 spread 之后,确保运行时选中的 profile 是最终路由事实。
143
+
144
+ ### sdk-config.ts(路由,无凭证)
145
+
146
+ 该文件仍由 CLI 刷新并保持浏览器安全。注册表模式的最终 Runtime Domain 来自 `api.ts`,项目的完整公开 Domain 与资源策略由 `rabetbase project domain-routing-sync` 写入 `rabetbase.domain-routing.json`。
147
+
148
+ ## apiGroup、目录隔离与旧式兼容
99
149
 
100
- ## 合并规则
150
+ CLI 仍能读取已有 `[name-]api.ts` 中的 `models`,页面与 BFF 的 `--alias` 不会立即失效。迁移时:
101
151
 
102
- `data.models` Dataset 清单的唯一事实来源:
152
+ - 先执行 `project upgrade --dry-run`,审阅标准生成文件与业务定制文件的分类。
153
+ - 有本地定制时,将业务 helper 移到独立业务模块;不要放进 `models.generated.ts` 或 `model-runtime.ts`。
154
+ - 正式执行 `project upgrade --yes`;标准旧入口先备份再替换,定制入口只生成候选文件。
155
+ - 执行 `api pull --format compress` 刷新远端事实;业务 import 继续指向 `src/api/api.ts` / `client.ts`。
156
+ - 旧的 `[name-]api.ts` / `[name-]client.ts` 可在确认无引用后再删除;CLI 不自动删除用户文件。
103
157
 
104
- - **新增**:pull 有、本地没有的 `datasetCode`,追加到 `models`
105
- - **删除**:本地有、pull 没有的 `datasetCode`,从 `models` 移除
106
- - **更新**:同一 `datasetCode` 的 `tableName` / `name` 以 pull 为准
107
- - **别名**:本地已有且仍对应同一 `datasetCode` 的 `alias` 保留;新建项使用 pull 给出的 `alias`
108
- - **保留 extras**:额外的 `registerModels(...)`、额外 client 导出、项目自定义注释(非 Generated 头)不要删
109
- - **多应用**:继续使用 CLI 的 `{name}-api.ts` / `{name}-client.ts` 命名,不要把多个 app 的 models 揉进同一个 `api.ts`
158
+ `apiGroup` 是显式 join key:同组 profile 的 AppCode 可以相同或不同,但必须使用同一规范化 `apiDir`;同一 `apiDir` 也只能承载一个显式组。`./src/api`、`src/api`、`src/api/` 会视为同一目录。第二套业务使用独立目录,例如 `src/api/finance`,目录内仍是无前缀的 `api.ts` / `client.ts`。同一目录下多个未配置 `apiGroup` 的历史 profile 继续使用 `[name-]api.ts` / `[name-]client.ts`,不会被静默归并。
110
159
 
111
160
  ## 认证(不要写进浏览器 client.ts)
112
161
 
@@ -138,13 +187,15 @@ export const lovrabetClient = createClient({
138
187
  | 字段 | 含义 |
139
188
  |------|------|
140
189
  | `appCode` | 当前应用 |
141
- | `configName` | `"default"` 或具名应用名(不含 TS 引号) |
142
- | `isDefaultConfig` | 默认应用为 `true` |
190
+ | `modelProfile` | 本次刷新的 profile;旧式输出可省略 |
143
191
  | `models[]` | `datasetCode` / `tableName` / `name` / `alias` |
144
192
  | `sdkRouting` | `{ runtimeDomain?: string }` |
145
- | `files.api` / `files.client` / `files.sdkConfig` | `{ path, action }`;`action` 为 `created` / `overwritten` / `preserved` / `refreshed` |
146
- | `needsAgentMerge` | 任一 TypeScript 被 `preserved` 时为 `true`,必须合并 `models` |
147
- | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | `files.*.path` 相同,兼容路径字段 |
193
+ | `files.api` / `files.client` / `files.sdkConfig` | 稳定入口与 SDK 路由的路径及动作 |
194
+ | `files.modelRegistry` / `files.modelRuntime` | 注册表模式的模型事实与通用选择器路径及动作 |
195
+ | `needsAgentMerge` | 兼容字段;旧式或自定义入口尚未接入注册表时为 `true` |
196
+ | `needsProjectUpgrade` | 注册表事实已刷新,但稳定源码入口缺失或仍为旧结构时为 `true` |
197
+ | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | 稳定入口与 SDK 路由路径 |
198
+ | `modelRegistryPath` / `modelRuntimePath` | 注册表模式下的生成文件路径 |
148
199
  | `modelCount` / `datasetCount` | 模型数量 |
149
200
 
150
201
  多应用时 `data.apps[]` 为上述对象的数组。
@@ -18,6 +18,15 @@
18
18
 
19
19
  生成或更新项目里的 `src/api/api.ts` / `client.ts` 时,先 `rabetbase api pull --format compress`,再遵守 [`sdk-client-generation.md`](sdk-client-generation.md)。浏览器子应用的默认 client 是 Cookie + `...LOVRABET_SDK_CONFIG`,不要把下面的服务端 `accessKey` 示例写进 `src/api/client.ts`。
20
20
 
21
+ ## 多 profile 的调用边界
22
+
23
+ CLI 生成的多 profile 注册表用于**同一份代码在不同节点分别运行**:当前 Runtime Domain 必须且只能选中一个 profile,随后业务代码通过同一 alias 使用该 profile 的 `datasetCode`。它不表示一个浏览器实例能同时查询多个节点。
24
+
25
+ - 不在业务代码中读取 `datasetCodes`、指定另一个 profile,或硬编码任一节点的 DatasetCode。
26
+ - 当前 profile 没有某 alias 时,让 SDK 抛出 `MODEL_NOT_FOUND`;节点独有功能可先检查生成入口导出的 `LOVRABET_PROFILE_NAME`,不得回退默认 profile。
27
+ - 不在浏览器中创建多个跨 Domain client 或转发 Cookie、AccessKey、token。确需跨节点聚合时,由可信服务端或 Backend Function 按明确授权编排。
28
+ - 只需分别验证节点数据时,使用对应项目 profile 和运行态工具逐端验证,不把它实现成业务前端的跨节点调用。
29
+
21
30
  ## 初始化规则
22
31
 
23
32
  必须使用 `createClient` 命名导出,禁止使用 `new LovrabetClient()`:
@@ -1,8 +1,8 @@
1
1
  # api pull
2
2
 
3
- 拉取当前 App 下所有数据集(Dataset)的元信息,刷新对应 SDK 路由配置,并在 `api.ts` / `client.ts` **缺失时**写入 Cookie-first 脚手架。默认应用使用 `src/api/sdk-config.ts`,非默认应用使用 `<name>-sdk-config.ts`。项目公开 Domain 路由由 [`project domain-routing-sync`](rabetbase-project-domain-routing-sync.md) 独立维护。
3
+ 拉取当前 App 下所有数据集(Dataset)的元信息并刷新 SDK 模型事实。单应用与显式配置同一 `apiGroup` 的多部署项目使用稳定的 `api.ts` / `client.ts`,CLI 将模型写入 `models.generated.ts`,由 `model-runtime.ts` 按最终 Runtime Domain 选择 profile。项目公开 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`。人类明确要放弃本地定制并重新生成完整脚手架时,可使用 `--force --yes`。
5
+ `apiGroup` 只作为归并键,不进入文件名。第二套业务使用独立 `apiDir`,目录内仍是无前缀入口。同一目录中多个未配置 `apiGroup` 的历史 profile 继续使用 `[name-]api.ts` / `[name-]client.ts`。`api pull` 只刷新模型事实;已有应用的稳定入口迁移由 [`project upgrade`](rabetbase-project-upgrade.md) 负责。Agent 按 [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 检查输出。
6
6
 
7
7
  ## 命令
8
8
 
@@ -13,8 +13,8 @@ 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
16
+ # 确认远端清单确实为空,允许清空当前 profile
17
+ rabetbase api pull --app oa-id --force --yes --format compress
18
18
 
19
19
  # 多应用:默认只解析「项目级」apps;与全局合并配置一起拉取时加 --global
20
20
  rabetbase api pull --global --format compress
@@ -22,6 +22,9 @@ rabetbase api pull --global --format compress
22
22
  # 多应用模式:指定某个应用
23
23
  rabetbase api pull --app order --format compress
24
24
  rabetbase api pull --appcode app-order-001 --format compress
25
+
26
+ # 一个 AppCode 对应多个 profile 时必须按名称选择
27
+ rabetbase api pull --app oa-id --format compress
25
28
  ```
26
29
 
27
30
  ## 参数
@@ -30,9 +33,9 @@ rabetbase api pull --appcode app-order-001 --format compress
30
33
  |------|------|
31
34
  | `--output <dir>` | 输出目录,默认 `./src/api/` |
32
35
  | `--global` | 多应用时显式从「全局+项目」双层解析 `apps`;默认仅项目级 `apps` |
33
- | `--force` | 整体替换已有 `api.ts` / `client.ts`;必须同时传 `--yes`,本地定制会丢失 |
36
+ | `--force` | 注册表模式允许空结果替换当前 profile;历史前缀模式允许替换对应生成文件;必须同时传 `--yes` |
34
37
  | `--app <name>` | 多应用模式下,指定应用名称 |
35
- | `--appcode <code>` | 直接指定 appcode,跳过配置查找 |
38
+ | `--appcode <code>` | 指定唯一 AppCode;匹配多个 profile 时必须改用 `--app` |
36
39
  | `--format compress\|json` | 结构化信封。Agent 应读 `data.models`,不要刮 stderr |
37
40
 
38
41
  ## 多应用过滤
@@ -40,7 +43,7 @@ rabetbase api pull --appcode app-order-001 --format compress
40
43
  多应用模式下:
41
44
  - **不加 `--app` / `--appcode`**:遍历已配置应用(默认仅 **项目** `.rabetbase.json` 中的 `apps`;若需包含全局里合并进来的应用,加 **`--global`**)
42
45
  - **加 `--app <name>`**:仅拉取指定应用
43
- - **加 `--appcode <code>`**:反查到对应 app profile 时,使用其 `region`、cookie 和 apiDir;没有匹配 profile 时使用顶层国家/地区回退
46
+ - **加 `--appcode <code>`**:唯一匹配时使用该 profile `region`、cookie 和 apiDir;同一 AppCode 匹配多个 profile 时拒绝猜测,改用 `--app <name>`
44
47
  - 每个应用请求前都会切换到其有效 `region`,不会沿用上一个应用的官方服务地址
45
48
 
46
49
  ## 配置作用域
@@ -53,13 +56,17 @@ rabetbase api pull --appcode app-order-001 --format compress
53
56
 
54
57
  | 文件 | 行为 |
55
58
  |------|------|
56
- | `sdk-config.ts` / `<prefix>-sdk-config.ts` | **每次刷新**。默认应用无前缀,非默认应用使用应用名前缀;只含必要的最终 `runtimeDomain`,不含凭证 |
57
- | `<prefix>-api.ts` | 文件缺失时写入脚手架(含当前 `models`);已存在时默认跳过,`--force` 时整体替换 |
58
- | `<prefix>-client.ts` | 文件缺失时写入 Cookie-first `createClient`;已存在时默认跳过,`--force` 时整体替换 |
59
+ | `models.generated.ts` | 注册表模式下**每次刷新当前 profile**并保留其他 profile;公共代码写 `datasetCode`,差异或部分可用代码写 `datasetCodes[profile]`,不含凭证 |
60
+ | `model-runtime.ts` | `project create` / `project upgrade` 维护;`api pull` 不改写 |
61
+ | `api.ts` / `client.ts` | `project create` / `project upgrade` 维护稳定结构;注册表模式的 `api pull` 不创建、不覆盖 |
62
+ | `sdk-config.ts` / `<prefix>-sdk-config.ts` | 每次刷新,只含必要的最终 Runtime Domain,不含凭证;旧式多应用继续使用前缀文件 |
63
+ | `<prefix>-api.ts` / `<prefix>-client.ts` | 同目录未显式分组的历史多应用结构;默认保留,仍可被命令侧别名解析读取 |
64
+
65
+ 注册表模式不使用国家/地区文件名前缀。业务代码始终 import `api.ts` / `client.ts`;页面加载时优先读取平台注入的 Runtime Domain,本地构建使用 `rabetbase.domain-routing.json`,据此物化该 profile 的 SDK `models` 数组。
59
66
 
60
- 默认 `prefix` 为空(单应用或默认应用),多应用非 default 应用使用应用名作为 prefix;生成的 `<prefix>-client.ts` 导入同前缀 SDK 路由文件。
67
+ 同一 `apiGroup` + 同一规范化 `apiDir` 才进入同一注册表,组内 AppCode 可以相同或不同。相同 `apiGroup` 分散到不同目录、同一目录出现不同组、或显式分组与未分组混用都会在请求前报错。多个未分组 profile 共用目录时继续使用旧式具名入口;要共享模型必须显式配置同一个 `apiGroup`。
61
68
 
62
- `project create` 在拷贝空 demo 脚手架后会覆盖写入一次 TypeScript,以便带上真实 models。首次拉取失败时,恢复提示会要求执行 `rabetbase api pull --force --yes`,避免占位脚手架被继续保留。日常 `api pull` 遇到已有 `api.ts` / `client.ts` 时跳过,只刷新 `sdk-config.ts` 并返回 Dataset 事实。
69
+ `project create` 直接生成注册表结构。旧项目先执行 `project upgrade --dry-run`,确认后执行 `project upgrade --yes`;标准旧脚手架会备份后迁移,业务定制入口会保留并生成候选文件。随后运行普通 pull 刷新事实。只拉取一个 profile 时会保留同组其他 profile 的模型代码。注册表已有非空 profile 而远端返回空清单时,普通 pull 会拒绝清空;仅在确认远端确实为空时使用 `--force --yes`。
63
70
 
64
71
  ## 输出(单应用 `data`)
65
72
 
@@ -70,9 +77,13 @@ rabetbase api pull --appcode app-order-001 --format compress
70
77
  | `isDefaultConfig` | 默认应用为 `true` |
71
78
  | `models[]` | `datasetCode` / `tableName` / `name` / `alias` |
72
79
  | `sdkRouting` | `{ runtimeDomain?: string }` |
73
- | `files.api` / `files.client` / `files.sdkConfig` | `{ path, action }`:`created` / `overwritten` / `preserved` / `refreshed` |
74
- | `needsAgentMerge` | 任一 TypeScript 被 `preserved` 时为 `true`;这是本地检查提示,不表示文件一定存在差异 |
75
- | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | 与 `files.*.path` 相同 |
80
+ | `files.api` / `files.client` / `files.sdkConfig` | `{ path, action }`:`created` / `overwritten` / `preserved` / `refreshed` / `missing` |
81
+ | `files.modelRegistry` / `files.modelRuntime` | 注册表模式下的生成文件及动作 |
82
+ | `needsAgentMerge` | 旧式 TypeScript 被保留且尚未使用注册表时为 `true` |
83
+ | `needsProjectUpgrade` | 注册表事实已刷新,但稳定源码入口缺失或仍为旧结构时为 `true` |
84
+ | `modelProfile` | 已刷新的 profile 名称;旧式输出可省略 |
85
+ | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | 稳定入口与 SDK 路由路径 |
86
+ | `modelRegistryPath` / `modelRuntimePath` | 注册表模式下的模型事实与选择器路径 |
76
87
  | `modelCount` / `datasetCount` | 模型数量 |
77
88
 
78
89
  项目使用 `apps` 清单解析时,`data` 为 `{ apps, succeeded, failed }`,每个 `data.apps[]` 元素都使用上表结构。因此 Dataset 事实从直接单应用结果的 `data.models` 读取,或从项目应用清单结果的 `data.apps[].models` 读取;以实际信封为准。
@@ -83,13 +94,13 @@ rabetbase api pull --appcode app-order-001 --format compress
83
94
 
84
95
  ## 前置条件
85
96
 
86
- - 已完成 `rabetbase auth` 登录
97
+ - 已完成 `rabetbase auth login`;不同官方节点的登录态不通用时,先对目标 profile 执行 `rabetbase auth login --app <name>`
87
98
  - 已配置 appcode(单应用或多应用)
88
99
 
89
100
  ## 示例
90
101
 
91
102
  ```bash
92
- # 单应用:刷新 sdk-config.ts;缺失则写 api.ts/client.ts
103
+ # 单应用:刷新模型事实
93
104
  rabetbase api pull --format compress
94
105
 
95
106
  # 多应用 order
@@ -98,8 +109,8 @@ rabetbase api pull --app order --format compress
98
109
  # 独立输出目录
99
110
  rabetbase api pull --output ./src/generated/api/ --format compress
100
111
 
101
- # 仅在明确放弃本地 TypeScript 定制时整体重建
102
- rabetbase api pull --force --yes --format compress
112
+ # 仅在确认目标 profile 的远端 Dataset 清单确实为空时
113
+ rabetbase api pull --app oa-id --force --yes --format compress
103
114
  ```
104
115
 
105
116
  更新已有 TypeScript:见 [`sdk-client-generation.md`](../guides/sdk-client-generation.md)。
@@ -2,7 +2,7 @@
2
2
 
3
3
  列出应用。
4
4
 
5
- 默认列出**本地配置视图**,与 CLI 运行时一致:合并全局 `~/.rabetbase.json` 与从当前目录向父目录解析到的项目 `.rabetbase.json`。旧 `.lovrabet.json` / `.lovrabetrc` 不会自动参与配置发现。
5
+ 默认列出**本地配置视图**,与 CLI 运行时一致:合并全局 `~/.rabetbase.json` 与从当前目录向父目录解析到的项目 `.rabetbase.json`。Lovrabet 运行态配置 `.lovrabet.json` 以及 `.lovrabetrc` 不参与 Rabetbase 配置发现,也不会被修改。
6
6
  加 `--remote` 时改为查询**平台目录视图**:当前登录账号在平台上可访问的应用,不读取或修改本地 app 配置。
7
7
 
8
8
  - **不加 flag**:合并视图(global + project)。
@@ -6,7 +6,7 @@
6
6
 
7
7
  它**不是**平台应用目录。若要查看当前登录账号在平台上能访问哪些应用,应使用 `rabetbase app list --remote`,而不是直接查看 `.rabetbase.json`。
8
8
 
9
- 只自动读取 `.rabetbase.json`,不会把 `.lovrabet.json` 或 `.lovrabetrc` 当作 Rabetbase 配置。旧文件需要迁移时,显式执行 `rabetbase project upgrade`。
9
+ 只自动读取 `.rabetbase.json`,不会把 `.lovrabet.json` 或 `.lovrabetrc` 当作 Rabetbase 配置。`.lovrabet.json` 属于 Lovrabet 运行态 CLI,可与 `.rabetbase.json` 在同一项目共存;Rabetbase 命令不会迁移、改写或删除它。
10
10
 
11
11
  ## 初始化
12
12
 
@@ -147,6 +147,7 @@ rabetbase workspace remove product --yes
147
147
  | 字段 | 类型 | 说明 |
148
148
  |------|------|------|
149
149
  | `appcode` | string | **必填**。该应用的 appcode |
150
+ | `apiGroup` | string | 可选显式归并键。同一套业务 API 的多个部署使用相同值并共用一个 `apiDir`;普通单应用不配置 |
150
151
  | `region` | string | 覆盖顶层国家/地区;当前可写 `cn`、`id`。显式 `cn` 会保留,以便覆盖顶层 `id` |
151
152
  | `env` | string | 历史兼容字段;默认连接不落盘 |
152
153
  | `apiDir` | string | 覆盖顶层 `apiDir` |
@@ -0,0 +1,60 @@
1
+ # 跨库数据集关系
2
+
3
+ 使用 `dataset cross-relation-list/create/update/delete` 管理同一应用内、不同数据库连接的 DB_TABLE 逻辑关联。普通关系命令见 [数据集关系](rabetbase-dataset-relation-mutations.md)。跨库关系事实使用本页的 list 查询,不能用普通 `dataset relations` 或 `dataset detail` 的关系列表替代回读。
4
+
5
+ ## 定位和查询
6
+
7
+ 四个命令均支持 `--appcode` 覆盖当前应用、`--format json|compress`。参数使用真实 Dataset Code 和字段名,先用 `dataset detail` 确认端点字段。
8
+
9
+ ```sh
10
+ rabetbase dataset cross-relation-list --from-datasetcode <source-code> --format json
11
+ rabetbase dataset cross-relation-list --from-dblink-id <source-connection-id> --format json
12
+ rabetbase dataset cross-relation-list --from-datasetcode <source-code> --from-column customer_id --format json
13
+ ```
14
+
15
+ 列表必须提供 `--from-datasetcode` 或 `--from-dblink-id`,可同时提供,但必须属于同一连接。提供数据集时自动解析源连接;只提供连接时列出该连接的所有出向跨库关系。`--from-column` 可进一步过滤源字段。
16
+
17
+ 列表输出 `data.appCode`、`data.selector`、`data.total`、`data.relations`。每条包含 `relationId`、`from/to.source`、`datasetCode`、`datasetName`、`dblinkId`、`table`、`field`;目标展示字段为 `to.labelField`,关系属性为 `relation.cardinality`、`relation.relationType`。缺失的 Dataset Code 或名称保留 null,不能根据同名表猜测。Relation ID 是返回事实,不是这些命令的输入参数。
18
+
19
+ ## 创建
20
+
21
+ ```sh
22
+ rabetbase dataset cross-relation-create \
23
+ --from-datasetcode <source-code> --from-column customer_id \
24
+ --to-datasetcode <target-code> --to-column id \
25
+ --to-label-column name --cardinality MANY_TO_ONE --dry-run
26
+ ```
27
+
28
+ 两端数据集与字段必填。`--to-label-column` 可选,省略时默认目标关联字段;`--cardinality` 可选,省略时不设置。合法基数:`ONE_TO_ONE`、`ONE_TO_MANY`、`MANY_TO_ONE`、`MANY_TO_MANY`。
29
+
30
+ 完全相同的端点不可重复创建。同一源字段可以关联不同目标;需要在创建前理解下述更新、删除的唯一匹配要求。
31
+
32
+ ## 更新
33
+
34
+ ```sh
35
+ rabetbase dataset cross-relation-update \
36
+ --from-datasetcode <source-code> --from-column customer_id \
37
+ --to-datasetcode <new-target-code> --to-column id \
38
+ --to-label-column name --dry-run
39
+ ```
40
+
41
+ 源数据集和源字段定位原关系,目标数据集和目标字段必填并表示更新后的目标。可选 `--from-dblink-id` 校验源连接归属。展示字段和基数省略时保留原值;更换目标数据集时应显式给出有效的 `--to-label-column`。无实际字段变化时返回错误,不当作更新成功。
42
+
43
+ ## 删除
44
+
45
+ ```sh
46
+ rabetbase dataset cross-relation-delete \
47
+ --from-datasetcode <source-code> --from-column customer_id --dry-run
48
+ ```
49
+
50
+ 源数据集和源字段必填;可选 `--from-dblink-id`。删除属于高风险写入:先审阅预演,再按用户授权执行,非交互执行使用 `--yes`,且当前配置必须允许 high-risk-write;`--yes` 不会提高风险上限。
51
+
52
+ 更新和删除都要求源字段恰好匹配一条跨库关系。匹配多条时失败,结构化错误的 `data.candidates` 给出候选事实;不要选择第一条、循环删改,也不要追加 `--relation-id` 重试。先向用户说明该源字段当前无法由这组命令逐条维护。`--relation-id`、`--biz-relation-type` 和 `main_sub` 不属于本组命令。
53
+
54
+ ## 预演与确认
55
+
56
+ 所有写命令支持 `--dry-run`,只读取当前关系;输出 `operation`、`selector`、`before`、预计 `after`、`dryRun`、`backend`、`warnings` 和请求 body。预演不是实际写入,也不是并发锁。审阅后在用户授权范围内移除 `--dry-run` 执行。
57
+
58
+ 正式写入后通过跨库列表回读:创建核对完整端点和属性;更新核对原 Relation ID、更新后的端点和属性;删除核对原 ID 已消失。仅在 `verification.status=matched` 时报告写入已验证。
59
+
60
+ 网络中断会返回结果未确认;写入被接受但回读失败时返回 `verification.status=unconfirmed`。此时先运行 `cross-relation-list` 查询,不要自动重新创建、更新或删除。跨库关系管理完成不代表跨库 JOIN、页面绑定或跨库事务已经验证。
@@ -51,8 +51,8 @@ rabetbase project create my-project --appcode <code>
51
51
  **关键边界:**
52
52
 
53
53
  - 当前目录非空时不得覆盖、移动或删除已有内容,应报告冲突。
54
- - `needsAgentMerge` 只表示已有 TypeScript 被保留,是检查提示,不代表必须改写文件;仅在模型事实存在差异时合并。
55
- - `--force --yes` 只用于首次脚手架拉取明确失败,或用户明确要求放弃本地定制的场景。
54
+ - `needsProjectUpgrade` 表示模型事实已刷新,但已有项目尚未安装稳定源码入口;新建项目模板正常不会出现该状态。
55
+ - `--force --yes` 在注册表模式只用于确认远端空清单,不用于源码迁移。
56
56
  - 此意图只授权本地工程创建与平台事实读取,不授权修改线上业务数据或平台资源。
57
57
 
58
58
  `api pull` 的单应用/项目应用清单输出结构见 [`rabetbase-api-pull.md`](rabetbase-api-pull.md),TypeScript 合并规则见 [`sdk-client-generation.md`](../guides/sdk-client-generation.md)。Agent 可根据实际输出选择检查、修复和验证方式。
@@ -70,7 +70,7 @@ rabetbase project create my-project --appcode <code>
70
70
  - 交互与非交互模式使用同一创建流程,都会安装依赖、格式化代码并写入项目配置
71
71
  - 项目模板从 CDN 下载并校验 SHA-256;CDN 不可用、模板不兼容或校验失败时命令停止,修复后重试
72
72
  - 新项目中的 `.rabetbase.json` **只继承**全局中的少量偏好及 `region` / Domain 路由配置,**不会**把全局的 `apps` / `defaultApp` 复制进新项目
73
- - `src/api/sdk-config.ts` 与 `rabetbase.domain-routing.json` 只生成浏览器可公开的最终路由,不会写入 `cookie`、`accessKey` 等认证配置;`rabetbase run start|dev|build|preview` 会在执行脚本前刷新公开 Domain 快照,也可用 [`project domain-routing-sync`](rabetbase-project-domain-routing-sync.md) 立即显式刷新。`api.ts` / `client.ts` 仅在缺失时由 CLI 写脚手架,已有文件按 [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 更新;若项目创建时首次拉取失败,按 CLI 提示执行 `rabetbase api pull --force --yes` 完成占位脚手架初始化
73
+ - `src/api/sdk-config.ts` 与 `rabetbase.domain-routing.json` 只生成浏览器可公开的最终路由,不会写入 `cookie`、`accessKey` 等认证配置;`rabetbase run start|dev|build|preview` 会在执行脚本前刷新公开 Domain 快照,也可用 [`project domain-routing-sync`](rabetbase-project-domain-routing-sync.md) 立即显式刷新。新项目模板已经包含稳定 `api.ts` / `client.ts`;若首次拉取失败,修复登录或连接后执行普通 `rabetbase api pull --format compress` 刷新占位注册表
74
74
 
75
75
  | 当前有效路由 | `src/api/sdk-config.ts` |
76
76
  |--------------|-------------------------|
@@ -1,6 +1,8 @@
1
1
  # project upgrade
2
2
 
3
- lovrabet-cli 迁移到 rabetbase-cli。
3
+ 升级已有项目的 SDK 依赖与应用源码结构。新项目继续使用 `project create`;Dataset 事实刷新继续使用 `api pull`。
4
+
5
+ `.lovrabet.json`、`.lovrabet/` 与 Lovrabet Skill 属于 Lovrabet 运行态 CLI,可与 Rabetbase 项目配置和源码共存。该命令不会读取、迁移、改写或删除这些运行态资产。
4
6
 
5
7
  ## 命令
6
8
 
@@ -8,6 +10,9 @@
8
10
  # 交互模式(先分析 → 展示报告 → 确认 → 执行)
9
11
  rabetbase project upgrade
10
12
 
13
+ # 只查看完整迁移计划,不写文件
14
+ rabetbase project upgrade --dry-run
15
+
11
16
  # 自动模式(跳过确认)
12
17
  rabetbase project upgrade --yes
13
18
  ```
@@ -17,27 +22,33 @@ rabetbase project upgrade --yes
17
22
  | Flag | 类型 | 必填 | 默认 | 说明 |
18
23
  |------|------|------|------|------|
19
24
  | `--yes` | boolean | 否 | `false` | 跳过确认提示,直接执行 |
25
+ | `--dry-run` | boolean | 否 | `false` | 只输出依赖和源码升级计划 |
20
26
 
21
27
  ## 执行流程
22
28
 
23
- 两阶段模式:先分析 → 展示报告 → 确认 → 执行 6 步:
29
+ 两阶段模式:先分析 → 展示报告 → 确认 → 执行 2 步:
24
30
 
25
31
  | 步骤 | 操作 | 说明 |
26
32
  |------|------|------|
27
- | 1 | 配置文件迁移 | 旧配置(`.lovrabet.json` 等)→ `.rabetbase.json`,旧文件备份为 `.bak` |
28
- | 2 | 删除 `.lovrabet/` | 移除旧的工作目录 |
29
- | 3 | 删除旧 IDE skill 文件 | 移除 `.cursor/rules/lovrabet_rules.mdc`、`.claude/skills/lovrabet` 等 |
30
- | 4 | 清理 MCP 配置 | 从 `.cursor/mcp.json` 移除引用 `@lovrabet/dataset-mcp-server` 的条目 |
31
- | 5 | 移除旧 skill | 清理旧的 Lovrabet Skill 安装记录 |
32
- | 6 | 安装新 skill | `npx skills add lovrabet/rabetbase -g -y` |
33
+ | 1 | 升级 SDK 依赖 | 将已有 `@lovrabet/sdk` 依赖更新到当前维护版本 |
34
+ | 2 | 升级应用源码 | 迁移稳定 API 入口、模型注册表、运行时选择器和项目 Domain 路由 |
35
+
36
+ ## 源码迁移安全规则
37
+
38
+ - 先执行 `rabetbase project upgrade --dry-run`;确认 `apiArchitecture.groups[].files[]` 的动作后再正式执行。
39
+ - 缺失文件直接创建;可识别的旧 CLI 生成文件先备份到 `.rabetbase/project-upgrade/api-model-registry-v2/backups/` 再替换。
40
+ - 发现业务定制的 `api.ts` / `client.ts` 时不覆盖原文件,在 `candidates/` 下写入候选文件,并返回 `manualMergeRequired: true`。
41
+ - 旧 `api.ts` 中可识别的 Dataset 事实迁入 `models.generated.ts`,迁移后再运行 `rabetbase api pull --format compress` 刷新远端事实。
42
+ - 多个未配置 `apiGroup` 且共用同一 `apiDir` 的历史 profile 保留 `[name-]api.ts` / `[name-]client.ts`,不会被静默归并。
43
+ - 命令可重复执行;已是最新稳定入口时不重复改写。
33
44
 
34
45
  ## 分析报告
35
46
 
36
47
  执行前会扫描并展示:
37
- - 旧配置文件路径和待迁移字段
38
- - 旧文件/目录列表
39
- - MCP 配置中待清理的条目
40
- - 是否需要 skill 替换
48
+ - `@lovrabet/sdk` 是否需要更新
49
+ - 每个 API 目录的 profile、文件动作、备份或候选文件路径
50
+
51
+ 不会把 `.lovrabet.json`、`.lovrabet/`、Lovrabet Skill 或 Lovrabet 的 IDE 配置列为待清理项。
41
52
 
42
53
  ## 输出
43
54
 
@@ -49,7 +60,7 @@ rabetbase project upgrade --yes
49
60
  ## 触发方式
50
61
 
51
62
  - 手动执行:`rabetbase project upgrade`
52
- - 显式执行:`rabetbase project upgrade` 检测并迁移旧配置
63
+ - 已有应用需要采用当前源码架构:先 `rabetbase project upgrade --dry-run`,再正式升级
53
64
 
54
65
  ## 参考
55
66
 
@@ -2,8 +2,8 @@
2
2
  "schemaVersion": 1,
3
3
  "name": "rabetbase",
4
4
  "packageName": "@lovrabet/rabetbase-cli",
5
- "packageVersion": "2.5.3-beta.2",
6
- "skillVersion": "2.5.3-beta.2",
5
+ "packageVersion": "2.5.3-beta.3",
6
+ "skillVersion": "2.5.3-beta.3",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/approval-flow-development-workflow.md",
@@ -61,6 +61,7 @@
61
61
  "references/rabetbase-database-template.md",
62
62
  "references/rabetbase-dataset-business-group-update.md",
63
63
  "references/rabetbase-dataset-business-groups.md",
64
+ "references/rabetbase-dataset-cross-relations.md",
64
65
  "references/rabetbase-dataset-delete.md",
65
66
  "references/rabetbase-dataset-detail.md",
66
67
  "references/rabetbase-dataset-extend-update.md",
@@ -146,5 +147,5 @@
146
147
  "references/rabetbase-user-account.md",
147
148
  "references/rabetbase-workspace.md"
148
149
  ],
149
- "digest": "bdb1237d11f707a54a1a189d00c313b8cf7f4ac4f41e9ec7d2aec7e187edbaa9"
150
+ "digest": "fb687c0d57936cfcba5e4f4d395e8695309e549ce848c5834befbade117e83e8"
150
151
  }