@lovrabet/rabetbase-cli 2.5.1-beta.4 → 2.5.1-beta.6

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 (344) hide show
  1. package/README.md +75 -1
  2. package/lib/api/api-doc.js +1 -1
  3. package/lib/api/fetch-model-list.js +1 -1
  4. package/lib/api/generate-api-file.js +1 -1
  5. package/lib/api/generate-sdk-config-file.d.ts +0 -1
  6. package/lib/api/generate-sdk-config-file.js +1 -1
  7. package/lib/auth/auth-server-ui.js +1 -1
  8. package/lib/auth/auth-server.js +1 -1
  9. package/lib/auth/constant.js +1 -1
  10. package/lib/auth/get-cookie.js +1 -1
  11. package/lib/auth/get-session-user.js +1 -1
  12. package/lib/auth/is-session-valid.js +1 -1
  13. package/lib/auth/login-success-html.js +1 -1
  14. package/lib/auth/logout.js +1 -1
  15. package/lib/cli-flags.js +1 -1
  16. package/lib/cli.js +1 -1
  17. package/lib/commands/api/generate.js +1 -1
  18. package/lib/commands/api/index.js +1 -1
  19. package/lib/commands/api/list.js +1 -1
  20. package/lib/commands/api/pull.js +1 -1
  21. package/lib/commands/api/shared.js +1 -1
  22. package/lib/commands/app/index.js +1 -1
  23. package/lib/commands/app/list.js +1 -1
  24. package/lib/commands/app/members-list.js +1 -1
  25. package/lib/commands/app/remote-directory.js +1 -1
  26. package/lib/commands/app/shared.js +1 -1
  27. package/lib/commands/app-config/delete.js +1 -1
  28. package/lib/commands/app-config/get.js +1 -1
  29. package/lib/commands/app-config/index.js +1 -1
  30. package/lib/commands/app-config/list.js +1 -1
  31. package/lib/commands/app-config/set.js +1 -1
  32. package/lib/commands/app-config/shared.js +1 -1
  33. package/lib/commands/auth/index.js +1 -1
  34. package/lib/commands/bff/create.js +1 -1
  35. package/lib/commands/bff/delete.js +1 -1
  36. package/lib/commands/bff/detail.js +1 -1
  37. package/lib/commands/bff/index.js +1 -1
  38. package/lib/commands/bff/list.js +1 -1
  39. package/lib/commands/bff/pull.js +1 -1
  40. package/lib/commands/bff/push.js +1 -1
  41. package/lib/commands/bff/status.js +1 -1
  42. package/lib/commands/cli-skill/index.js +1 -1
  43. package/lib/commands/cli-update.js +1 -1
  44. package/lib/commands/codegen/index.js +1 -1
  45. package/lib/commands/codegen/sdk.js +1 -1
  46. package/lib/commands/codegen/sql.js +1 -1
  47. package/lib/commands/common/app-registry.js +1 -1
  48. package/lib/commands/common/app-selector.js +1 -1
  49. package/lib/commands/common/async-task.js +1 -1
  50. package/lib/commands/common/dry-run.js +1 -1
  51. package/lib/commands/common/flags.d.ts +2 -0
  52. package/lib/commands/common/flags.js +1 -1
  53. package/lib/commands/common/local-file.js +1 -1
  54. package/lib/commands/common/validate.js +1 -1
  55. package/lib/commands/config/delete.js +1 -1
  56. package/lib/commands/config/get.js +1 -1
  57. package/lib/commands/config/index.js +1 -1
  58. package/lib/commands/config/init.d.ts +2 -0
  59. package/lib/commands/config/init.js +1 -1
  60. package/lib/commands/config/list.js +1 -1
  61. package/lib/commands/config/set.js +1 -1
  62. package/lib/commands/config/shared.js +1 -1
  63. package/lib/commands/dataset/business-group-update.js +1 -1
  64. package/lib/commands/dataset/business-groups.js +1 -1
  65. package/lib/commands/dataset/capability.js +1 -1
  66. package/lib/commands/dataset/delete.js +1 -1
  67. package/lib/commands/dataset/detail.js +1 -1
  68. package/lib/commands/dataset/extend-update.js +1 -1
  69. package/lib/commands/dataset/field-restore.js +1 -1
  70. package/lib/commands/dataset/field-update.js +1 -1
  71. package/lib/commands/dataset/generate.js +1 -1
  72. package/lib/commands/dataset/index.js +1 -1
  73. package/lib/commands/dataset/list.js +1 -1
  74. package/lib/commands/dataset/operations.js +1 -1
  75. package/lib/commands/dataset/relation-audit.js +1 -1
  76. package/lib/commands/dataset/relation-create.js +1 -1
  77. package/lib/commands/dataset/relation-delete.js +1 -1
  78. package/lib/commands/dataset/relation-shared.js +1 -1
  79. package/lib/commands/dataset/relation-update.js +1 -1
  80. package/lib/commands/dataset/relations.js +1 -1
  81. package/lib/commands/dataset/rename.js +1 -1
  82. package/lib/commands/dataset/restore.js +1 -1
  83. package/lib/commands/dataset/user-deleted-field-list.js +1 -1
  84. package/lib/commands/db/analysis-batching.js +1 -1
  85. package/lib/commands/db/analyze-batch-plan.js +1 -1
  86. package/lib/commands/db/analyze-cancel.js +1 -1
  87. package/lib/commands/db/analyze-start.js +1 -1
  88. package/lib/commands/db/analyze-status.js +1 -1
  89. package/lib/commands/db/create.js +1 -1
  90. package/lib/commands/db/delete.js +1 -1
  91. package/lib/commands/db/detail.js +1 -1
  92. package/lib/commands/db/diff-refresh-start.js +1 -1
  93. package/lib/commands/db/diff-refresh-status.js +1 -1
  94. package/lib/commands/db/diff.js +1 -1
  95. package/lib/commands/db/index.js +1 -1
  96. package/lib/commands/db/list.js +1 -1
  97. package/lib/commands/db/shared.js +1 -1
  98. package/lib/commands/db/table-diff-shared.js +1 -1
  99. package/lib/commands/db/tables.js +1 -1
  100. package/lib/commands/db/test.js +1 -1
  101. package/lib/commands/db/update.js +1 -1
  102. package/lib/commands/deployment/auto-sync.js +1 -1
  103. package/lib/commands/deployment/index.js +1 -1
  104. package/lib/commands/deployment/sync.js +1 -1
  105. package/lib/commands/doctor.js +1 -1
  106. package/lib/commands/file/index.js +1 -1
  107. package/lib/commands/issue/index.js +1 -1
  108. package/lib/commands/issue/nudge.js +1 -1
  109. package/lib/commands/issue/report.js +1 -1
  110. package/lib/commands/issue/shared.js +1 -1
  111. package/lib/commands/kb/create.js +1 -1
  112. package/lib/commands/kb/delete.js +1 -1
  113. package/lib/commands/kb/detail.js +1 -1
  114. package/lib/commands/kb/index.js +1 -1
  115. package/lib/commands/kb/list.js +1 -1
  116. package/lib/commands/kb/search.js +1 -1
  117. package/lib/commands/kb/shared.js +1 -1
  118. package/lib/commands/kb/update.js +1 -1
  119. package/lib/commands/logs/index.js +1 -1
  120. package/lib/commands/menu/asset-update.js +1 -1
  121. package/lib/commands/menu/delete.js +1 -1
  122. package/lib/commands/menu/external-link-create.js +1 -1
  123. package/lib/commands/menu/external-link-update.js +1 -1
  124. package/lib/commands/menu/group-create.js +1 -1
  125. package/lib/commands/menu/group-update.js +1 -1
  126. package/lib/commands/menu/index.js +1 -1
  127. package/lib/commands/menu/list.js +1 -1
  128. package/lib/commands/menu/move.js +1 -1
  129. package/lib/commands/menu/regroup-start.js +1 -1
  130. package/lib/commands/menu/rename.js +1 -1
  131. package/lib/commands/menu/shared/compare-table.js +1 -1
  132. package/lib/commands/menu/shared/delete-plan.js +1 -1
  133. package/lib/commands/menu/shared/facts.js +1 -1
  134. package/lib/commands/menu/shared/index.js +1 -1
  135. package/lib/commands/menu/shared/inquirer.js +1 -1
  136. package/lib/commands/menu/shared/local-pages.js +1 -1
  137. package/lib/commands/menu/shared/logic.js +1 -1
  138. package/lib/commands/menu/shared/mutations.js +1 -1
  139. package/lib/commands/menu/shared/service.js +1 -1
  140. package/lib/commands/menu/shared/sync-core.js +1 -1
  141. package/lib/commands/menu/shared/update-core.js +1 -1
  142. package/lib/commands/menu/shared/valid-url.js +1 -1
  143. package/lib/commands/menu/sync.js +1 -1
  144. package/lib/commands/menu/visibility-update.js +1 -1
  145. package/lib/commands/notification/config-create.js +1 -1
  146. package/lib/commands/notification/config-delete.js +1 -1
  147. package/lib/commands/notification/config-list.js +1 -1
  148. package/lib/commands/notification/config-update.js +1 -1
  149. package/lib/commands/notification/index.js +1 -1
  150. package/lib/commands/notification/shared.js +1 -1
  151. package/lib/commands/ocr/index.js +1 -1
  152. package/lib/commands/page/create.js +1 -1
  153. package/lib/commands/page/custom/detail.js +1 -1
  154. package/lib/commands/page/custom/list.js +1 -1
  155. package/lib/commands/page/custom/publish.js +1 -1
  156. package/lib/commands/page/custom/shared.js +1 -1
  157. package/lib/commands/page/custom/syntax.js +1 -1
  158. package/lib/commands/page/custom/template.js +1 -1
  159. package/lib/commands/page/custom/update.js +1 -1
  160. package/lib/commands/page/data-list-status.js +1 -1
  161. package/lib/commands/page/generate-start.js +1 -1
  162. package/lib/commands/page/generate-status.js +1 -1
  163. package/lib/commands/page/index.js +1 -1
  164. package/lib/commands/page/pull.js +1 -1
  165. package/lib/commands/page/push.js +1 -1
  166. package/lib/commands/page/relation-audit.js +1 -1
  167. package/lib/commands/page/restore.js +1 -1
  168. package/lib/commands/page/shared.js +1 -1
  169. package/lib/commands/page/sync.js +1 -1
  170. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  171. package/lib/commands/project/create/format-elapsed.js +1 -1
  172. package/lib/commands/project/create/main.d.ts +1 -0
  173. package/lib/commands/project/create/main.js +1 -1
  174. package/lib/commands/project/create/materialize-project-template.js +1 -1
  175. package/lib/commands/project/create/project-name.js +1 -1
  176. package/lib/commands/project/create/project-template-archive.js +1 -1
  177. package/lib/commands/project/create/project-template-path.js +1 -1
  178. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  179. package/lib/commands/project/create/use-format-code.js +1 -1
  180. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  181. package/lib/commands/project/domain-routing-sync.d.ts +2 -0
  182. package/lib/commands/project/domain-routing-sync.js +1 -0
  183. package/lib/commands/project/index.js +1 -1
  184. package/lib/commands/project/upgrade.js +1 -1
  185. package/lib/commands/registry.js +1 -1
  186. package/lib/commands/role/delete.js +1 -1
  187. package/lib/commands/role/detail.js +1 -1
  188. package/lib/commands/role/index.js +1 -1
  189. package/lib/commands/role/list.js +1 -1
  190. package/lib/commands/role/shared.js +1 -1
  191. package/lib/commands/role/update.js +1 -1
  192. package/lib/commands/role/user-add.js +1 -1
  193. package/lib/commands/role/user-remove.js +1 -1
  194. package/lib/commands/role/user-resolve.js +1 -1
  195. package/lib/commands/rule/get.d.ts +2 -0
  196. package/lib/commands/rule/get.js +1 -0
  197. package/lib/commands/rule/index.d.ts +2 -0
  198. package/lib/commands/rule/index.js +1 -0
  199. package/lib/commands/rule/list.d.ts +2 -0
  200. package/lib/commands/rule/list.js +1 -0
  201. package/lib/commands/rule/set.d.ts +2 -0
  202. package/lib/commands/rule/set.js +1 -0
  203. package/lib/commands/rule/shared.d.ts +43 -0
  204. package/lib/commands/rule/shared.js +1 -0
  205. package/lib/commands/run/index.js +1 -1
  206. package/lib/commands/schema.js +1 -1
  207. package/lib/commands/sql/create.js +1 -1
  208. package/lib/commands/sql/delete.js +1 -1
  209. package/lib/commands/sql/detail.js +1 -1
  210. package/lib/commands/sql/exec.js +1 -1
  211. package/lib/commands/sql/index.js +1 -1
  212. package/lib/commands/sql/list.js +1 -1
  213. package/lib/commands/sql/pull.js +1 -1
  214. package/lib/commands/sql/push.js +1 -1
  215. package/lib/commands/sql/shared.js +1 -1
  216. package/lib/commands/sql/status.js +1 -1
  217. package/lib/commands/sql/validate.js +1 -1
  218. package/lib/commands/task/index.js +1 -1
  219. package/lib/commands/task/status.js +1 -1
  220. package/lib/commands/tenant/index.js +1 -1
  221. package/lib/commands/tenant/members-list.js +1 -1
  222. package/lib/commands/tenant/shared.js +1 -1
  223. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  224. package/lib/commands/user-account/index.js +1 -1
  225. package/lib/commands/workspace/add.js +1 -1
  226. package/lib/commands/workspace/index.js +1 -1
  227. package/lib/commands/workspace/remove.js +1 -1
  228. package/lib/config/deployment-sync.js +1 -1
  229. package/lib/config/domain-config.d.ts +37 -1
  230. package/lib/config/domain-config.js +1 -1
  231. package/lib/config/project-domain-routing.d.ts +27 -0
  232. package/lib/config/project-domain-routing.js +1 -0
  233. package/lib/config/schema.d.ts +1 -1
  234. package/lib/config/schema.js +1 -1
  235. package/lib/constant/cdn.js +1 -1
  236. package/lib/constant/cli.js +1 -1
  237. package/lib/constant/defaults.js +1 -1
  238. package/lib/constant/domain.d.ts +10 -4
  239. package/lib/constant/domain.js +1 -1
  240. package/lib/constant/env.js +1 -1
  241. package/lib/constant/output.js +1 -1
  242. package/lib/constant/paths.js +1 -1
  243. package/lib/constant/region.d.ts +4 -1
  244. package/lib/constant/region.js +1 -1
  245. package/lib/constant/risk.js +1 -1
  246. package/lib/constant/routing-profile.d.ts +43 -49
  247. package/lib/constant/routing-profile.js +1 -1
  248. package/lib/context/app-resolver.js +1 -1
  249. package/lib/context/auth-resolver.js +1 -1
  250. package/lib/context/config-loader.js +1 -1
  251. package/lib/context.d.ts +2 -0
  252. package/lib/context.js +1 -1
  253. package/lib/core/alias-resolver.js +1 -1
  254. package/lib/core/api-client.d.ts +21 -0
  255. package/lib/core/api-client.js +1 -1
  256. package/lib/core/bff/config.js +1 -1
  257. package/lib/core/bff/file-system.js +1 -1
  258. package/lib/core/bff/hash.js +1 -1
  259. package/lib/core/bff/lock.js +1 -1
  260. package/lib/core/bff/utils.js +1 -1
  261. package/lib/core/db-resolver.js +1 -1
  262. package/lib/core/kb-search-client.js +1 -1
  263. package/lib/core/page/file-system.js +1 -1
  264. package/lib/core/page/hash.js +1 -1
  265. package/lib/core/page/lock.js +1 -1
  266. package/lib/core/sql-index-auditor.js +1 -1
  267. package/lib/core/sql-sync/config.js +1 -1
  268. package/lib/core/sql-sync/file-system.js +1 -1
  269. package/lib/core/sql-sync/hash.js +1 -1
  270. package/lib/core/sql-sync/lock.js +1 -1
  271. package/lib/core/sql-sync/utils.js +1 -1
  272. package/lib/core/sql-validator.js +1 -1
  273. package/lib/errors.js +1 -1
  274. package/lib/framework/build-all-flags.js +1 -1
  275. package/lib/framework/error-output.js +1 -1
  276. package/lib/framework/explicit-yes.js +1 -1
  277. package/lib/framework/flags.js +1 -1
  278. package/lib/framework/help.js +1 -1
  279. package/lib/framework/index.js +1 -1
  280. package/lib/framework/output.js +1 -1
  281. package/lib/framework/response.js +1 -1
  282. package/lib/framework/runner-alias.js +1 -1
  283. package/lib/framework/runner.js +1 -1
  284. package/lib/framework/schema-export.js +1 -1
  285. package/lib/framework/types.js +1 -1
  286. package/lib/generated/build-info.d.ts +4 -4
  287. package/lib/generated/build-info.js +1 -1
  288. package/lib/generated/official-routing.d.ts +83 -0
  289. package/lib/generated/official-routing.js +1 -0
  290. package/lib/generated/routing-contract.d.ts +9 -0
  291. package/lib/generated/routing-contract.js +1 -0
  292. package/lib/help.js +1 -1
  293. package/lib/postinstall.js +1 -1
  294. package/lib/runtime/confirmation.js +1 -1
  295. package/lib/runtime/event.js +1 -1
  296. package/lib/runtime/index.js +1 -1
  297. package/lib/runtime/queue.js +1 -1
  298. package/lib/runtime/resolve.js +1 -1
  299. package/lib/skills/builtin-skill.js +1 -1
  300. package/lib/skills/main.js +1 -1
  301. package/lib/skills/npx-skills-add.js +1 -1
  302. package/lib/skills/skill-presence.js +1 -1
  303. package/lib/telemetry/cli-command-trace.js +1 -1
  304. package/lib/telemetry/cli-help-trace.js +1 -1
  305. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  306. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  307. package/lib/telemetry/send-cli-trace-log.js +1 -1
  308. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  309. package/lib/types/index.d.ts +0 -1
  310. package/lib/utils/ai_config.js +1 -1
  311. package/lib/utils/apply-jq-filter.js +1 -1
  312. package/lib/utils/cdn-config.js +1 -1
  313. package/lib/utils/check-sdk-version.js +1 -1
  314. package/lib/utils/cli-version-check.js +1 -1
  315. package/lib/utils/cli-version-policy.js +1 -1
  316. package/lib/utils/config.js +1 -1
  317. package/lib/utils/entity-with-id.js +1 -1
  318. package/lib/utils/file-utils.js +1 -1
  319. package/lib/utils/guides-cdn.js +1 -1
  320. package/lib/utils/http-client.js +1 -1
  321. package/lib/utils/is-non-interactive.js +1 -1
  322. package/lib/utils/logger.js +1 -1
  323. package/lib/utils/params.js +1 -1
  324. package/lib/utils/platform.js +1 -1
  325. package/lib/utils/sleep.js +1 -1
  326. package/lib/utils/template-replacer.js +1 -1
  327. package/lib/utils/update-notice.js +1 -1
  328. package/lib/utils/version.js +1 -1
  329. package/lib/utils/with-active-cookie.js +1 -1
  330. package/lib/utils/write-cli-side-channel.js +1 -1
  331. package/package.json +2 -1
  332. package/skills/rabetbase/SKILL.md +15 -12
  333. package/skills/rabetbase/guides/sdk-client-generation.md +10 -8
  334. package/skills/rabetbase/references/rabetbase-api-pull.md +16 -11
  335. package/skills/rabetbase/references/rabetbase-config.md +3 -3
  336. package/skills/rabetbase/references/rabetbase-database-template.md +36 -0
  337. package/skills/rabetbase/references/rabetbase-doctor.md +1 -0
  338. package/skills/rabetbase/references/rabetbase-init.md +32 -8
  339. package/skills/rabetbase/references/rabetbase-project-create.md +33 -8
  340. package/skills/rabetbase/references/rabetbase-project-domain-routing-sync.md +28 -0
  341. package/skills/rabetbase/references/rabetbase-rule.md +64 -0
  342. package/skills/rabetbase.manifest.json +6 -3
  343. package/lib/config/project-routing.d.ts +0 -30
  344. package/lib/config/project-routing.js +0 -1
@@ -22,6 +22,7 @@ rabetbase doctor check
22
22
  | Built-in Skill | 目标路径、包版本、Skill 版本、内容状态;不一致时给出 `rabetbase cli-skill install` 修复命令 |
23
23
  | Config Files | 全局和项目级配置文件路径 |
24
24
  | Config JSON | 分别检测全局/项目配置文件是否为**合法 JSON**;非法时标红并给出解析错误(常见于尾随逗号、注释等,会导致该侧配置在合并时被忽略) |
25
+ | Country/Region Configuration | 检查项目与全局 `region`;显式未知值会标明来源,并给出对应作用域的 `config delete region` 修复命令 |
25
26
  | Merged Config | 合并后的所有配置项(appCode / env / cookie / apiDir 等) |
26
27
  | Apps | 多应用模式下的应用列表及各自配置 |
27
28
  | API Endpoints | 最终生效的 region 与域名(user / api / runtime / skill / kb / app);KB 管理与 search 共用 SmartCode Java origin |
@@ -1,6 +1,6 @@
1
1
  # rabetbase config init
2
2
 
3
- 首次使用、切换官方节点或切换企业独立部署地址时,重建全局 Lovrabet 连接配置。该命令只处理 region/Domain,不负责认证或项目应用绑定。
3
+ 首次使用、切换官方节点或切换企业独立部署地址时,重建 Lovrabet 连接配置。默认写入当前项目;显式传 `--global` 时写入全局配置。该命令只处理 region/Domain,不负责认证或项目应用绑定。
4
4
 
5
5
  ```bash
6
6
  # 交互选择 cn / id
@@ -29,11 +29,11 @@ rabetbase config init \
29
29
  - 交互执行时选择 `Mainland China (cn)` 或 `Indonesia (id)`,默认选中 `cn`
30
30
  - 非交互执行时应显式传 `--region cn|id`;未传 region/Domain 时回退 `cn`
31
31
  - 当前只开放 `cn`、`id`;尚未发布的 `global` 不可选择
32
+ - 已保存的 `region` 无法识别时,依赖连接配置的命令会在请求前停止;先用 `rabetbase doctor` 定位作用域,再执行对应作用域的 `config init` 或 `config delete region` 修复
32
33
 
33
34
  ## 写入行为
34
35
 
35
- - 固定写入全局 `~/.rabetbase.json`
36
- - 不使用也不需要 `--global`,不能写入项目配置
36
+ - 默认写入当前项目 `.rabetbase.json`;`--global` 写入 `~/.rabetbase.json`
37
37
  - 默认中国节点 `cn` 不写冗余 `region` 字段
38
38
  - 官方节点模式会清除所有显式 Domain,以及遗留的 `agentDomain` / `platformDomain` / `skillHubDomain`
39
39
  - 独立部署模式会清除旧 `region`、显式 Domain 和遗留 Domain,再写入本次提供的 Domain
@@ -42,7 +42,31 @@ rabetbase config init \
42
42
 
43
43
  ## 独立部署 Domain
44
44
 
45
- `--domain-config` 接受只包含以下字段的 JSON 对象:
45
+ `--domain-config` 推荐使用两个 CLI 共用的版本化企业路由清单:
46
+
47
+ ```json
48
+ {
49
+ "protocol": "lovrabet-routing/v1",
50
+ "kind": "enterprise",
51
+ "cdn": {
52
+ "libraries": "https://cdnjs.cloudflare.com/ajax/libs",
53
+ "lovrabet": "https://g.lovrabet.com"
54
+ },
55
+ "domains": {
56
+ "userDomain": "https://user.customer.example.com",
57
+ "apiDomain": "https://api.customer.example.com",
58
+ "runtimeDomain": "https://runtime.customer.example.com",
59
+ "skillDomain": "https://skills.customer.example.com",
60
+ "kbDomain": {
61
+ "rabetbase-cli": "https://kb-admin.customer.example.com",
62
+ "lovrabet-cli": "https://kb.customer.example.com"
63
+ },
64
+ "appDomain": "https://app.customer.example.com"
65
+ }
66
+ }
67
+ ```
68
+
69
+ 新版清单要求完整服务拓扑和 `cdn.libraries` / `cdn.lovrabet`,不会把缺失服务回退到官方节点;不能再叠加单独的 `--*-domain` flag。`cdn.libraries` 是第三方库的完整基地址,可包含 `/code/lib` 或 `/ajax/libs`;`cdn.lovrabet` 是 Lovrabet 自有资源 origin。Domain 可写成所有消费者共用的 HTTPS 字符串;确有差异时写成带 `default` 或消费者键的对象。对象优先使用当前消费者键,其次使用 `default`,两者都没有时命令报错。旧扁平 JSON 继续兼容:
46
70
 
47
71
  ```json
48
72
  {
@@ -58,12 +82,12 @@ rabetbase config init \
58
82
  ```
59
83
 
60
84
  - 每个值必须是 HTTPS origin,不能包含账号、密码、path、query 或 fragment
61
- - 文件至少提供一个受支持 Domain;完整独立部署应提供实际由客户部署的全部服务 Domain
62
- - 当前所有官方节点和独立部署统一使用中国大陆 CDN 配置;User/App/Runtime 等 Lovrabet 服务 Domain 仍按节点或客户配置分别解析
85
+ - 旧扁平文件至少提供一个受支持 Domain,并维持既有回退语义
86
+ - 每个官方节点直接配置自己的 `cdn.libraries` 与 `cdn.lovrabet`;中国大陆当前使用 AliCDN,印尼当前使用 Cloudflare cdnjs,企业独立部署使用清单中的显式值
63
87
  - 未提供 `localDomain` / `certificateDomain` 时,本地回调使用 `http://localhost`;自定义 HTTPS 本地回调时两者必须同时提供
64
- - 同名 `--*-domain` flag 覆盖文件中的值
88
+ - 同名 `--*-domain` flag 仅覆盖旧扁平文件中的值
65
89
  - `--region` 与任意独立部署 Domain 互斥,不能混用
66
- - 未提供的 Domain 会按默认 `cn` 映射回退,因此完整独立部署不要遗漏实际由客户部署的服务入口
90
+ - 只有旧扁平配置的未提供 Domain 会按默认节点回退
67
91
 
68
92
  ## 结果语义
69
93
 
@@ -16,8 +16,11 @@ rabetbase project create my-project
16
16
  # 通过 flag 指定
17
17
  rabetbase project create --name my-project
18
18
 
19
- # 非交互模式(必须传 name)
20
- rabetbase project create my-project --appcode <code> --env production
19
+ # 在当前空目录创建指定 AppCode 的工程
20
+ rabetbase project create --current-dir --appcode <code>
21
+
22
+ # 非交互模式
23
+ rabetbase project create my-project --appcode <code>
21
24
  ```
22
25
 
23
26
  ## 参数
@@ -26,32 +29,54 @@ rabetbase project create my-project --appcode <code> --env production
26
29
  |------|------|------|------|------|
27
30
  | `<project-name>` | positional | 否 | — | 项目名称(也可用 `--name`) |
28
31
  | `--name <name>` | string | 否 | — | 项目名称(优先于位置参数) |
29
- | `--env <env>` | string | 否 | — | 目标环境 |
32
+ | `--current-dir` | boolean | 否 | `false` | 初始化当前空目录;项目名取目录名,不创建子目录 |
30
33
  | `--appcode <code>` | string | 否 | — | 绑定的应用 code(跳过交互选择) |
31
34
 
32
35
  ## 两种模式
33
36
 
34
37
  1. **交互模式** — 通过提示选择项目配置
35
- 2. **非交互模式**(`--non-interactive` 或非 TTY)— 必须提供项目名称,支持 `--appcode` 跳过应用选择
38
+ 2. **非交互模式**(`--non-interactive` 或非 TTY)— 必须提供项目名称,或使用 `--current-dir`;支持 `--appcode` 跳过应用选择
39
+
40
+ ## 当前目录创建工程
41
+
42
+ 当用户表达“在当前文件夹创建 `app-xxxxxx` 应用工程”等意图时,将其视为授权在当前空目录创建并验证本地工程。使用 `rabetbase project create --current-dir --appcode <code>`。
43
+
44
+ **完成口径:**
45
+
46
+ - 工程绑定目标 AppCode,项目配置、公开路由和 SDK 客户端保持一致。
47
+ - 已获取 Dataset 事实,并确认本地模型配置与返回事实一致。
48
+ - 项目提供的类型检查和构建验证通过。
49
+ - 向用户报告创建结果、Dataset 数量、验证结果及仍需处理的问题。
50
+
51
+ **关键边界:**
52
+
53
+ - 当前目录非空时不得覆盖、移动或删除已有内容,应报告冲突。
54
+ - `needsAgentMerge` 只表示已有 TypeScript 被保留,是检查提示,不代表必须改写文件;仅在模型事实存在差异时合并。
55
+ - `--force --yes` 只用于首次脚手架拉取明确失败,或用户明确要求放弃本地定制的场景。
56
+ - 此意图只授权本地工程创建与平台事实读取,不授权修改线上业务数据或平台资源。
57
+
58
+ `api pull` 的单应用/项目应用清单输出结构见 [`rabetbase-api-pull.md`](rabetbase-api-pull.md),TypeScript 合并规则见 [`sdk-client-generation.md`](../guides/sdk-client-generation.md)。Agent 可根据实际输出选择检查、修复和验证方式。
36
59
 
37
60
  ## 提示
38
61
 
39
62
  - `--name` 和位置参数二选一,`--name` 优先
40
- - 非交互模式下缺少项目名会报错
63
+ - `--current-dir` 不可与 `--name` 或位置项目名同时使用
64
+ - `--current-dir` 只接受空目录;创建失败会保留该目录并清理本次暂存内容
65
+ - 非交互模式下缺少项目名且未使用 `--current-dir` 会报错
41
66
  - 项目名只接受字母、数字、`-`、`_`,不能传绝对路径、`../`、子目录路径或 Windows 保留名称
42
67
  - 交互与非交互模式使用同一创建流程,都会安装依赖、格式化代码并写入项目配置
43
68
  - 项目模板从 CDN 下载并校验 SHA-256;CDN 不可用、模板不兼容或校验失败时命令停止,修复后重试
44
69
  - 新项目中的 `.rabetbase.json` **只继承**全局中的少量偏好及 `region` / Domain 路由配置,**不会**把全局的 `apps` / `defaultApp` 复制进新项目
45
- - `src/api/sdk-config.ts` 与 `rabetbase.routing.json` 只生成浏览器可公开的最终路由,不会写入 `cookie`、`accessKey` 等认证配置;后续执行 `rabetbase api pull` 会按当前有效配置刷新。`api.ts` / `client.ts` 仅在缺失时由 CLI 写脚手架,已有文件按 [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 更新
70
+ - `src/api/sdk-config.ts` 与 `rabetbase.domain-routing.json` 只生成浏览器可公开的最终路由,不会写入 `cookie`、`accessKey` 等认证配置;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` 完成占位脚手架初始化
46
71
 
47
72
  | 当前有效路由 | `src/api/sdk-config.ts` |
48
73
  |--------------|-------------------------|
49
74
  | 默认中国大陆节点 | `{}`,由 SDK 使用默认映射 |
50
- | ID | `{ region: "id" }`,由 SDK 1.5.3+ 选择 ID Runtime |
75
+ | ID | `{ runtimeDomain: "https://runtime.lovrabet.id" }` |
51
76
  | Global | `{ runtimeDomain: "https://runtime.lovrabet.ai" }`,兼容 SDK 1.5.3 |
52
77
  | 独立部署 | `{ runtimeDomain: "https://…" }` |
53
78
 
54
- 模板依赖 SDK 1.5.3+。CLI 从统一 Routing Profile 生成 `rabetbase.routing.json`,其中只包含最终 User/App/Runtime Domain、资源策略、本地地址和证书 URL,不复制节点注册表。当前所有官方节点和独立部署统一使用中国大陆 CDN 配置,Lovrabet 服务 Domain 仍分别解析。后续执行 `rabetbase api pull` 会刷新两个路由文件。
79
+ 模板依赖 SDK 1.5.3+。CLI 从统一 Routing Profile 生成 `rabetbase.domain-routing.json`,其中只包含最终 User/App/Runtime Domain、`cdn.libraries`、`cdn.lovrabet`、本地地址和证书 URL,不复制节点注册表。每个官方节点直接配置两个 CDN 地址;中国大陆当前使用 AliCDN,印尼当前使用 Cloudflare cdnjs,任一新节点都可以使用独立 CDN。企业独立部署使用清单中的显式值。
55
80
 
56
81
  ## 参考
57
82
 
@@ -0,0 +1,28 @@
1
+ # project domain-routing-sync
2
+
3
+ 根据当前项目最终生效的国家/地区与显式 Domain 配置,生成项目根目录的公开 Domain 路由快照。
4
+
5
+ ```bash
6
+ rabetbase project domain-routing-sync --format compress
7
+ ```
8
+
9
+ ## 行为
10
+
11
+ - 从当前目录向上定位包含 `.rabetbase.json` 的项目根目录。
12
+ - 按项目优先、全局白名单补充的规则解析最终 Domain。
13
+ - 原子覆盖项目根目录的 `rabetbase.domain-routing.json`。
14
+ - 文件中的 `cdn.libraries` 是 React、Day.js、Ant Design 等第三方库的完整基地址,`cdn.lovrabet` 是 Lovrabet 自有资源 origin。
15
+ - 每个官方节点直接配置自己的 `cdn.libraries` 与 `cdn.lovrabet`;中国大陆当前使用 AliCDN,印尼当前使用 Cloudflare cdnjs。任一新节点都可以配置独立 CDN,企业独立部署使用 `lovrabet-routing/v1` 清单中的显式值。
16
+ - 不要求登录或 AppCode,不访问平台,不生成全局副本。
17
+ - 该文件供项目模板与 Vite 消费,不是 React Router、页面 path 或菜单路由配置。
18
+
19
+ 生成内容只包含公开信息:User/App/Runtime Domain、资源策略、本地开发 Domain 与可选证书 URL;不会写入 Cookie、AccessKey 等认证配置。
20
+
21
+ ## 使用时机
22
+
23
+ - `project create` 会自动完成首次生成,无需紧接着重复执行。
24
+ - 修改项目级 Domain 配置后执行。
25
+ - 全局 Domain 配置变化且当前项目需要采用新结果时执行。
26
+ - 文件缺失或模板提示重新生成时执行。
27
+
28
+ 命令必须在 Rabetbase 项目目录或其子目录中运行;找不到项目 `.rabetbase.json` 时会停止,不会在任意目录创建快照。
@@ -0,0 +1,64 @@
1
+ # rabetbase rule
2
+
3
+ 管理开发者侧当前解析应用的固定 Agent context 规则文件 `RULES.md` 与 `DATABASE.md`。目标应用通过工作区、`--app <name>` 或 `--appcode <code>` 解析。
4
+
5
+ - `RULES.md`:页面、API 等研发时 Agent 使用的全局规则,`contextScope=page-api-development`;DB Agent 不消费。
6
+ - `DATABASE.md`:数据库分析时 DB Agent 使用的规则,`contextScope=database-analysis`;页面、API 等研发 Agent 不消费。
7
+ - 两份规则都在各自对应流程中全程参与 context,但不会跨消费者叠加。
8
+ - 两者统一属于应用级规则库,管理入口保持为单数命名空间 `rabetbase rule`;不要为 `DATABASE.md` 复制一套 `rabetbase db` 写入口。
9
+
10
+ ## 服务端合同边界
11
+
12
+ - 只使用现有 KB 域接口:`GET /smartapi/knowledge-base/get-by-app` 与 `POST /smartapi/knowledge-base/save`。
13
+ - 文件名映射为 `scope=rules` 下的规范标题:`rules -> RULES`、`database -> DATABASE`。
14
+ - 不开放任意 scope、标题、重命名或删除,也不调用 admin 列表接口模拟规则管理。
15
+ - CLI 验证持久化结果;规则运行时只在互斥的 context scope 中消费。DB Agent 只消费 `DATABASE.md`、不消费 `RULES.md`;页面、API 等研发 Agent 只消费 `RULES.md`、不消费 `DATABASE.md`。
16
+
17
+ ## 命令
18
+
19
+ ```sh
20
+ rabetbase rule list --format compress
21
+ rabetbase rule get --type rules --format compress
22
+ rabetbase rule get --type database --format compress
23
+ rabetbase rule set --type rules --file ./RULES.md --dry-run
24
+ rabetbase rule set --type rules --file ./RULES.md --expected-version 2
25
+ rabetbase rule set --type database --file ./DATABASE.md --dry-run
26
+ ```
27
+
28
+ ## list / get
29
+
30
+ - `list` 固定精确读取两个类型,未配置项显示 `enabled: false`;输出包含 `contextScope`、版本、大小、哈希、时间等元数据,不包含正文。
31
+ - `get --type rules|database` 返回一个文件的完整正文;未配置时返回 `app_rule_not_found`。
32
+ - 响应必须与请求的 appCode、`scope=rules`、规范标题完全一致,否则失败关闭。
33
+
34
+ ## set
35
+
36
+ - `--type rules|database` 与 `--file` 必填。
37
+ - 输入必须是可读普通文件、有效 UTF-8、非空且不超过服务端 5 MiB 限制;CLI 逐字发送解码后的内容。
38
+ - `set` 是普通 `write`,建议先 dry-run;正式执行不要求额外 `--yes`。
39
+ - 写前精确回读当前状态;`--expected-version` 可选,只是非原子 read-before-write 断言。服务端保存合同没有 version 条件,不能描述为 compare-and-set。
40
+ - 请求最多提交一次。正常或不确定响应之后都只做一次精确回读;正文哈希必须一致,已有记录还必须证明版本推进。
41
+ - 响应丢失但回读可证明结果时返回 verified 并标记恢复;证据不足时返回 outcome unknown,禁止自动重提。
42
+ - dry-run 和正式结构化输出都不包含新正文,只包含 `contentByteSize`、`contentHash` 等安全元数据。
43
+
44
+ ## DATABASE.md 结构模板
45
+
46
+ 创建数据库规则时,优先复制 [DATABASE.md 结构模板](./rabetbase-database-template.md),再用当前应用中无法从 DDL、索引、约束和注释可靠推断的事实替换占位符。模板按 DB Agent 可识别的四类语义组织:
47
+
48
+ - `BUSINESS_DOMAIN`:系统定位、业务边界、数据隔离和权威来源。
49
+ - `ENTITY_DICTIONARY`:表对应的业务对象、职责、类型和生命周期。
50
+ - `COLUMN_SEMANTIC`:系统字段、人员标识、枚举状态、单位和快照语义。
51
+ - `RELATION_RULE`:明确的关联方向、唯一性依据、复合关系及禁止误关联的例外。
52
+
53
+ 四个二级标题已经提供分类语义,不要在每条规则前重复 `[BUSINESS_DOMAIN]`、`[ENTITY_DICTIONARY]`、`[COLUMN_SEMANTIC]` 或 `[RELATION_RULE]` 标签。准入标准是“当前应用特有且无法可靠推断”,不以某个 LLM 版本是否声称知道该知识为判断依据。
54
+
55
+ 完整 `DATABASE.md` 建议不超过 5000 个 Unicode 字符,并把影响范围最大的规则放在前面。这是控制 Agent context 的编写建议,不是 `rule set` 的硬校验;CLI 仍遵循服务端现有的 5 MiB 文件限制。字符数也不应换算为固定 token 数,因为不同语言和模型的分词结果不同。
56
+
57
+ 不要重复普通主外键、字段类型等可直接推断的信息,也不要写入凭证、连接串、样例业务数据或短期排障结论。`one-to-one` 必须有主键或唯一索引依据;多态引用、ID 列表、快照文本和外部标识应放入 `RELATION_RULE` 下的“禁止关联”小节,明确排除普通外键推断。
58
+
59
+ ## 最佳实践
60
+
61
+ 1. 先执行 `rule list`,确认目标文件是否存在及当前版本。
62
+ 2. 已存在时优先带 `--expected-version` 做写前漂移检查。
63
+ 3. 使用相同参数先执行 `--dry-run`,检查 appCode、type、大小、哈希和非原子警告。
64
+ 4. 正式执行后以返回的 `verification.status=verified` 为准;若为 outcome unknown,不要再次 set,先执行精确 `rule get` 人工核对。
@@ -2,8 +2,8 @@
2
2
  "schemaVersion": 1,
3
3
  "name": "rabetbase",
4
4
  "packageName": "@lovrabet/rabetbase-cli",
5
- "packageVersion": "2.5.1-beta.4",
6
- "skillVersion": "2.5.1-beta.4",
5
+ "packageVersion": "2.5.1-beta.6",
6
+ "skillVersion": "2.5.1-beta.6",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/backend-function.md",
@@ -54,6 +54,7 @@
54
54
  "references/rabetbase-codegen-sql.md",
55
55
  "references/rabetbase-config.md",
56
56
  "references/rabetbase-data-list-status.md",
57
+ "references/rabetbase-database-template.md",
57
58
  "references/rabetbase-dataset-business-group-update.md",
58
59
  "references/rabetbase-dataset-business-groups.md",
59
60
  "references/rabetbase-dataset-delete.md",
@@ -114,10 +115,12 @@
114
115
  "references/rabetbase-page-restore.md",
115
116
  "references/rabetbase-page-sync.md",
116
117
  "references/rabetbase-project-create.md",
118
+ "references/rabetbase-project-domain-routing-sync.md",
117
119
  "references/rabetbase-project-upgrade.md",
118
120
  "references/rabetbase-role-list.md",
119
121
  "references/rabetbase-role-user-add.md",
120
122
  "references/rabetbase-role-user-resolve.md",
123
+ "references/rabetbase-rule.md",
121
124
  "references/rabetbase-run.md",
122
125
  "references/rabetbase-schema.md",
123
126
  "references/rabetbase-sql-create.md",
@@ -135,5 +138,5 @@
135
138
  "references/rabetbase-user-account.md",
136
139
  "references/rabetbase-workspace.md"
137
140
  ],
138
- "digest": "1b2765e7ebd7a0c0d9b7be2aa14c53e1ba78951425f298cbd2685cf3b6aac8bf"
141
+ "digest": "98b7253702684e995d266b76e92ef6bda5d7f868caadfd2e0dcab3f311a8cc13"
139
142
  }
@@ -1,30 +0,0 @@
1
- import type { LovrabetRegion } from "../constant/region.js";
2
- export declare const PROJECT_ROUTING_FILE_NAME = "rabetbase.routing.json";
3
- export declare const PROJECT_ROUTING_PROTOCOL = "lovrabet-project-routing/v1";
4
- export type ProjectAssetRouting = {
5
- strategy: "cdn";
6
- origin: string;
7
- } | {
8
- strategy: "bundle";
9
- };
10
- export interface ProjectRoutingManifest {
11
- protocol: typeof PROJECT_ROUTING_PROTOCOL;
12
- mode: "official" | "independent";
13
- region: LovrabetRegion | null;
14
- domains: {
15
- user: string;
16
- app: string;
17
- runtime: string;
18
- };
19
- assets: ProjectAssetRouting;
20
- local: {
21
- origin: string;
22
- certificateUrl?: string;
23
- };
24
- }
25
- /** Resolves only public, final routing facts for generated browser projects. */
26
- export declare function getProjectRoutingManifest(): ProjectRoutingManifest;
27
- export declare function writeProjectRoutingManifest(projectRoot: string): {
28
- path: string;
29
- manifest: ProjectRoutingManifest;
30
- };
@@ -1 +0,0 @@
1
- (function(_0x579527,_0x414e7d){const _0x261f59=a213_0x334b,_0x4e7d81=_0x579527();while(!![]){try{const _0x5ba89b=-parseInt(_0x261f59(0x1c7))/0x1*(-parseInt(_0x261f59(0x1c5))/0x2)+-parseInt(_0x261f59(0x1ba))/0x3*(parseInt(_0x261f59(0x1bd))/0x4)+-parseInt(_0x261f59(0x1c1))/0x5+parseInt(_0x261f59(0x1b8))/0x6*(-parseInt(_0x261f59(0x1c3))/0x7)+parseInt(_0x261f59(0x1bf))/0x8+parseInt(_0x261f59(0x1c8))/0x9*(-parseInt(_0x261f59(0x1b9))/0xa)+parseInt(_0x261f59(0x1c0))/0xb*(parseInt(_0x261f59(0x1bb))/0xc);if(_0x5ba89b===_0x414e7d)break;else _0x4e7d81['push'](_0x4e7d81['shift']());}catch(_0x32cc26){_0x4e7d81['push'](_0x4e7d81['shift']());}}}(a213_0x29c3,0xa1337));import{writeFileSync}from'node:fs';function a213_0x29c3(){const _0x3e9d0e=['1017dgZNWk','7692fjZRnL','Independent\x20deployment\x20routing\x20requires\x20localDomain\x20and\x20certificateDomain\x20together.','764nRTvSJ','official','8155640ksmOFj','14355tBabNk','859775vddMGO','assets','2571443HRKtNt','/cert/lovrabet-dev.json','78oTrIOs','independent','18701WQVQJq','8582562GLorWH','stringify','utf8','local','12WIoWoW','10ovtIWW'];a213_0x29c3=function(){return _0x3e9d0e;};return a213_0x29c3();}import{join}from'node:path';import{getActiveRegion,getAppDomain,getCertificateDomain,getLocalDomain,getRuntimeDomain,getUserDomain,isIndependentDeployment}from'../constant/domain.js';import{getOfficialRoutingProfile}from'../constant/routing-profile.js';export const PROJECT_ROUTING_FILE_NAME='rabetbase.routing.json';function a213_0x334b(_0x343c05,_0x3fef51){_0x343c05=_0x343c05-0x1b7;const _0x29c379=a213_0x29c3();let _0x334b17=_0x29c379[_0x343c05];return _0x334b17;}export const PROJECT_ROUTING_PROTOCOL='lovrabet-project-routing/v1';export function getProjectRoutingManifest(){const _0x579212=a213_0x334b,_0x1a6652=getActiveRegion(),_0x289b6e=isIndependentDeployment(),_0xb8e49f=getOfficialRoutingProfile(_0x1a6652),_0x364352=getLocalDomain(),_0x41abad=getCertificateDomain();if(!!_0x364352!==!!_0x41abad)throw new Error(_0x579212(0x1bc));return{'protocol':PROJECT_ROUTING_PROTOCOL,'mode':_0x289b6e?_0x579212(0x1c6):_0x579212(0x1be),'region':_0x289b6e?null:_0x1a6652,'domains':{'user':getUserDomain(),'app':getAppDomain(),'runtime':getRuntimeDomain()},'assets':_0xb8e49f[_0x579212(0x1c2)],'local':_0x364352&&_0x41abad?{'origin':_0x364352,'certificateUrl':_0x41abad+_0x579212(0x1c4)}:_0x289b6e?{'origin':'http://localhost'}:_0xb8e49f[_0x579212(0x1b7)]};}export function writeProjectRoutingManifest(_0x415f81){const _0x5b4a81=a213_0x334b,_0x4c429b=getProjectRoutingManifest(),_0x4becf8=join(_0x415f81,PROJECT_ROUTING_FILE_NAME);return writeFileSync(_0x4becf8,JSON[_0x5b4a81(0x1c9)](_0x4c429b,null,0x2)+'\x0a',_0x5b4a81(0x1ca)),{'path':_0x4becf8,'manifest':_0x4c429b};}