@lovrabet/rabetbase-cli 2.5.0 → 2.5.1-beta.1

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 (312) hide show
  1. package/lib/api/api-doc.js +1 -1
  2. package/lib/api/fetch-model-list.js +1 -1
  3. package/lib/api/generate-api-file.js +1 -1
  4. package/lib/api/generate-sdk-config-file.js +1 -1
  5. package/lib/auth/auth-server-ui.js +1 -1
  6. package/lib/auth/auth-server.d.ts +7 -0
  7. package/lib/auth/auth-server.js +1 -1
  8. package/lib/auth/constant.js +1 -1
  9. package/lib/auth/get-cookie.js +1 -1
  10. package/lib/auth/get-session-user.js +1 -1
  11. package/lib/auth/is-session-valid.js +1 -1
  12. package/lib/auth/login-success-html.js +1 -1
  13. package/lib/auth/logout.js +1 -1
  14. package/lib/cli-flags.js +1 -1
  15. package/lib/cli.js +1 -1
  16. package/lib/commands/api/generate.js +1 -1
  17. package/lib/commands/api/index.js +1 -1
  18. package/lib/commands/api/list.js +1 -1
  19. package/lib/commands/api/pull.js +1 -1
  20. package/lib/commands/api/shared.js +1 -1
  21. package/lib/commands/app/index.js +1 -1
  22. package/lib/commands/app/list.js +1 -1
  23. package/lib/commands/app/members-list.js +1 -1
  24. package/lib/commands/app/remote-directory.js +1 -1
  25. package/lib/commands/app/shared.js +1 -1
  26. package/lib/commands/app-config/delete.js +1 -1
  27. package/lib/commands/app-config/get.js +1 -1
  28. package/lib/commands/app-config/index.js +1 -1
  29. package/lib/commands/app-config/list.js +1 -1
  30. package/lib/commands/app-config/set.js +1 -1
  31. package/lib/commands/app-config/shared.js +1 -1
  32. package/lib/commands/auth/index.js +1 -1
  33. package/lib/commands/bff/create.js +1 -1
  34. package/lib/commands/bff/delete.js +1 -1
  35. package/lib/commands/bff/detail.js +1 -1
  36. package/lib/commands/bff/index.js +1 -1
  37. package/lib/commands/bff/list.js +1 -1
  38. package/lib/commands/bff/pull.js +1 -1
  39. package/lib/commands/bff/push.js +1 -1
  40. package/lib/commands/bff/status.js +1 -1
  41. package/lib/commands/cli-skill/index.js +1 -1
  42. package/lib/commands/cli-update.js +1 -1
  43. package/lib/commands/codegen/index.js +1 -1
  44. package/lib/commands/codegen/sdk.js +1 -1
  45. package/lib/commands/codegen/sql.js +1 -1
  46. package/lib/commands/common/app-registry.js +1 -1
  47. package/lib/commands/common/app-selector.js +1 -1
  48. package/lib/commands/common/async-task.js +1 -1
  49. package/lib/commands/common/dry-run.js +1 -1
  50. package/lib/commands/common/flags.js +1 -1
  51. package/lib/commands/common/local-file.js +1 -1
  52. package/lib/commands/common/validate.js +1 -1
  53. package/lib/commands/config/delete.js +1 -1
  54. package/lib/commands/config/get.js +1 -1
  55. package/lib/commands/config/index.js +1 -1
  56. package/lib/commands/config/init.d.ts +1 -1
  57. package/lib/commands/config/init.js +1 -1
  58. package/lib/commands/config/list.js +1 -1
  59. package/lib/commands/config/set.js +1 -1
  60. package/lib/commands/config/shared.js +1 -1
  61. package/lib/commands/dataset/business-group-update.js +1 -1
  62. package/lib/commands/dataset/business-groups.js +1 -1
  63. package/lib/commands/dataset/capability.js +1 -1
  64. package/lib/commands/dataset/delete.js +1 -1
  65. package/lib/commands/dataset/detail.js +1 -1
  66. package/lib/commands/dataset/extend-update.js +1 -1
  67. package/lib/commands/dataset/field-update.js +1 -1
  68. package/lib/commands/dataset/generate.js +1 -1
  69. package/lib/commands/dataset/index.js +1 -1
  70. package/lib/commands/dataset/list.js +1 -1
  71. package/lib/commands/dataset/operations.js +1 -1
  72. package/lib/commands/dataset/relation-audit.js +1 -1
  73. package/lib/commands/dataset/relation-create.js +1 -1
  74. package/lib/commands/dataset/relation-delete.js +1 -1
  75. package/lib/commands/dataset/relation-shared.js +1 -1
  76. package/lib/commands/dataset/relation-update.js +1 -1
  77. package/lib/commands/dataset/relations.js +1 -1
  78. package/lib/commands/dataset/rename.js +1 -1
  79. package/lib/commands/dataset/restore.js +1 -1
  80. package/lib/commands/db/analysis-batching.js +1 -1
  81. package/lib/commands/db/analyze-batch-plan.js +1 -1
  82. package/lib/commands/db/analyze-cancel.js +1 -1
  83. package/lib/commands/db/analyze-start.js +1 -1
  84. package/lib/commands/db/analyze-status.js +1 -1
  85. package/lib/commands/db/create.js +1 -1
  86. package/lib/commands/db/delete.js +1 -1
  87. package/lib/commands/db/detail.js +1 -1
  88. package/lib/commands/db/diff-refresh-start.js +1 -1
  89. package/lib/commands/db/diff-refresh-status.js +1 -1
  90. package/lib/commands/db/diff.js +1 -1
  91. package/lib/commands/db/index.js +1 -1
  92. package/lib/commands/db/list.js +1 -1
  93. package/lib/commands/db/shared.js +1 -1
  94. package/lib/commands/db/table-diff-shared.js +1 -1
  95. package/lib/commands/db/tables.js +1 -1
  96. package/lib/commands/db/test.js +1 -1
  97. package/lib/commands/db/update.js +1 -1
  98. package/lib/commands/doctor.js +1 -1
  99. package/lib/commands/file/index.js +1 -1
  100. package/lib/commands/issue/index.js +1 -1
  101. package/lib/commands/issue/nudge.js +1 -1
  102. package/lib/commands/issue/report.js +1 -1
  103. package/lib/commands/issue/shared.js +1 -1
  104. package/lib/commands/kb/create.js +1 -1
  105. package/lib/commands/kb/delete.js +1 -1
  106. package/lib/commands/kb/detail.js +1 -1
  107. package/lib/commands/kb/index.js +1 -1
  108. package/lib/commands/kb/list.js +1 -1
  109. package/lib/commands/kb/search.js +1 -1
  110. package/lib/commands/kb/shared.js +1 -1
  111. package/lib/commands/kb/update.js +1 -1
  112. package/lib/commands/logs/index.js +1 -1
  113. package/lib/commands/menu/asset-update.js +1 -1
  114. package/lib/commands/menu/delete.js +1 -1
  115. package/lib/commands/menu/external-link-create.js +1 -1
  116. package/lib/commands/menu/external-link-update.js +1 -1
  117. package/lib/commands/menu/group-create.js +1 -1
  118. package/lib/commands/menu/group-update.js +1 -1
  119. package/lib/commands/menu/index.js +1 -1
  120. package/lib/commands/menu/list.js +1 -1
  121. package/lib/commands/menu/move.js +1 -1
  122. package/lib/commands/menu/regroup-start.js +1 -1
  123. package/lib/commands/menu/rename.js +1 -1
  124. package/lib/commands/menu/shared/compare-table.js +1 -1
  125. package/lib/commands/menu/shared/delete-plan.js +1 -1
  126. package/lib/commands/menu/shared/facts.js +1 -1
  127. package/lib/commands/menu/shared/index.js +1 -1
  128. package/lib/commands/menu/shared/inquirer.js +1 -1
  129. package/lib/commands/menu/shared/local-pages.js +1 -1
  130. package/lib/commands/menu/shared/logic.js +1 -1
  131. package/lib/commands/menu/shared/mutations.js +1 -1
  132. package/lib/commands/menu/shared/service.js +1 -1
  133. package/lib/commands/menu/shared/sync-core.js +1 -1
  134. package/lib/commands/menu/shared/update-core.js +1 -1
  135. package/lib/commands/menu/shared/valid-url.js +1 -1
  136. package/lib/commands/menu/sync.js +1 -1
  137. package/lib/commands/menu/visibility-update.js +1 -1
  138. package/lib/commands/notification/config-create.js +1 -1
  139. package/lib/commands/notification/config-delete.js +1 -1
  140. package/lib/commands/notification/config-list.js +1 -1
  141. package/lib/commands/notification/config-update.js +1 -1
  142. package/lib/commands/notification/index.js +1 -1
  143. package/lib/commands/notification/shared.js +1 -1
  144. package/lib/commands/ocr/index.js +1 -1
  145. package/lib/commands/page/create.js +1 -1
  146. package/lib/commands/page/custom/detail.js +1 -1
  147. package/lib/commands/page/custom/list.js +1 -1
  148. package/lib/commands/page/custom/publish.js +1 -1
  149. package/lib/commands/page/custom/shared.js +1 -1
  150. package/lib/commands/page/custom/syntax.js +1 -1
  151. package/lib/commands/page/custom/template.js +1 -1
  152. package/lib/commands/page/custom/update.js +1 -1
  153. package/lib/commands/page/data-list-status.js +1 -1
  154. package/lib/commands/page/generate-start.js +1 -1
  155. package/lib/commands/page/generate-status.js +1 -1
  156. package/lib/commands/page/index.js +1 -1
  157. package/lib/commands/page/pull.js +1 -1
  158. package/lib/commands/page/push.js +1 -1
  159. package/lib/commands/page/relation-audit.js +1 -1
  160. package/lib/commands/page/restore.js +1 -1
  161. package/lib/commands/page/shared.js +1 -1
  162. package/lib/commands/page/sync.js +1 -1
  163. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  164. package/lib/commands/project/create/format-elapsed.js +1 -1
  165. package/lib/commands/project/create/main.js +1 -1
  166. package/lib/commands/project/create/materialize-project-template.js +1 -1
  167. package/lib/commands/project/create/project-name.js +1 -1
  168. package/lib/commands/project/create/project-template-archive.js +1 -1
  169. package/lib/commands/project/create/project-template-path.js +1 -1
  170. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  171. package/lib/commands/project/create/use-format-code.js +1 -1
  172. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  173. package/lib/commands/project/index.js +1 -1
  174. package/lib/commands/project/upgrade.js +1 -1
  175. package/lib/commands/registry.js +1 -1
  176. package/lib/commands/role/delete.js +1 -1
  177. package/lib/commands/role/detail.js +1 -1
  178. package/lib/commands/role/index.js +1 -1
  179. package/lib/commands/role/list.js +1 -1
  180. package/lib/commands/role/shared.js +1 -1
  181. package/lib/commands/role/update.js +1 -1
  182. package/lib/commands/role/user-add.js +1 -1
  183. package/lib/commands/role/user-remove.js +1 -1
  184. package/lib/commands/role/user-resolve.js +1 -1
  185. package/lib/commands/run/index.js +1 -1
  186. package/lib/commands/schema.js +1 -1
  187. package/lib/commands/sql/create.js +1 -1
  188. package/lib/commands/sql/delete.js +1 -1
  189. package/lib/commands/sql/detail.js +1 -1
  190. package/lib/commands/sql/exec.js +1 -1
  191. package/lib/commands/sql/index.js +1 -1
  192. package/lib/commands/sql/list.js +1 -1
  193. package/lib/commands/sql/pull.js +1 -1
  194. package/lib/commands/sql/push.js +1 -1
  195. package/lib/commands/sql/shared.js +1 -1
  196. package/lib/commands/sql/status.js +1 -1
  197. package/lib/commands/sql/validate.js +1 -1
  198. package/lib/commands/task/index.js +1 -1
  199. package/lib/commands/task/status.js +1 -1
  200. package/lib/commands/tenant/index.js +1 -1
  201. package/lib/commands/tenant/members-list.js +1 -1
  202. package/lib/commands/tenant/shared.js +1 -1
  203. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  204. package/lib/commands/user-account/index.js +1 -1
  205. package/lib/commands/workspace/add.js +1 -1
  206. package/lib/commands/workspace/index.js +1 -1
  207. package/lib/commands/workspace/remove.js +1 -1
  208. package/lib/config/domain-config.d.ts +1 -1
  209. package/lib/config/domain-config.js +1 -1
  210. package/lib/config/project-routing.d.ts +30 -0
  211. package/lib/config/project-routing.js +1 -0
  212. package/lib/config/schema.d.ts +1 -1
  213. package/lib/config/schema.js +1 -1
  214. package/lib/constant/cdn.js +1 -1
  215. package/lib/constant/cli.js +1 -1
  216. package/lib/constant/defaults.js +1 -1
  217. package/lib/constant/domain.d.ts +7 -2
  218. package/lib/constant/domain.js +1 -1
  219. package/lib/constant/env.js +1 -1
  220. package/lib/constant/output.js +1 -1
  221. package/lib/constant/paths.js +1 -1
  222. package/lib/constant/region.d.ts +2 -2
  223. package/lib/constant/region.js +1 -1
  224. package/lib/constant/risk.js +1 -1
  225. package/lib/constant/routing-profile.d.ts +115 -0
  226. package/lib/constant/routing-profile.js +1 -0
  227. package/lib/context/app-resolver.js +1 -1
  228. package/lib/context/auth-resolver.js +1 -1
  229. package/lib/context/config-loader.js +1 -1
  230. package/lib/context.js +1 -1
  231. package/lib/core/alias-resolver.js +1 -1
  232. package/lib/core/api-client.js +1 -1
  233. package/lib/core/bff/config.js +1 -1
  234. package/lib/core/bff/file-system.js +1 -1
  235. package/lib/core/bff/hash.js +1 -1
  236. package/lib/core/bff/lock.js +1 -1
  237. package/lib/core/bff/utils.js +1 -1
  238. package/lib/core/db-resolver.js +1 -1
  239. package/lib/core/page/file-system.js +1 -1
  240. package/lib/core/page/hash.js +1 -1
  241. package/lib/core/page/lock.js +1 -1
  242. package/lib/core/sql-index-auditor.js +1 -1
  243. package/lib/core/sql-sync/config.js +1 -1
  244. package/lib/core/sql-sync/file-system.js +1 -1
  245. package/lib/core/sql-sync/hash.js +1 -1
  246. package/lib/core/sql-sync/lock.js +1 -1
  247. package/lib/core/sql-sync/utils.js +1 -1
  248. package/lib/core/sql-validator.js +1 -1
  249. package/lib/errors.js +1 -1
  250. package/lib/framework/build-all-flags.js +1 -1
  251. package/lib/framework/error-output.js +1 -1
  252. package/lib/framework/explicit-yes.js +1 -1
  253. package/lib/framework/flags.js +1 -1
  254. package/lib/framework/help.js +1 -1
  255. package/lib/framework/index.js +1 -1
  256. package/lib/framework/output.js +1 -1
  257. package/lib/framework/response.js +1 -1
  258. package/lib/framework/runner-alias.js +1 -1
  259. package/lib/framework/runner.js +1 -1
  260. package/lib/framework/schema-export.js +1 -1
  261. package/lib/framework/types.js +1 -1
  262. package/lib/generated/build-info.d.ts +4 -4
  263. package/lib/generated/build-info.js +1 -1
  264. package/lib/help.js +1 -1
  265. package/lib/postinstall.js +1 -1
  266. package/lib/runtime/confirmation.js +1 -1
  267. package/lib/runtime/event.js +1 -1
  268. package/lib/runtime/index.js +1 -1
  269. package/lib/runtime/queue.js +1 -1
  270. package/lib/runtime/resolve.js +1 -1
  271. package/lib/skills/builtin-skill.js +1 -1
  272. package/lib/skills/main.js +1 -1
  273. package/lib/skills/npx-skills-add.js +1 -1
  274. package/lib/skills/skill-presence.js +1 -1
  275. package/lib/telemetry/cli-command-trace.js +1 -1
  276. package/lib/telemetry/cli-help-trace.js +1 -1
  277. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  278. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  279. package/lib/telemetry/send-cli-trace-log.js +1 -1
  280. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  281. package/lib/utils/ai_config.js +1 -1
  282. package/lib/utils/apply-jq-filter.js +1 -1
  283. package/lib/utils/cdn-config.js +1 -1
  284. package/lib/utils/check-sdk-version.js +1 -1
  285. package/lib/utils/cli-version-check.js +1 -1
  286. package/lib/utils/cli-version-policy.js +1 -1
  287. package/lib/utils/config.js +1 -1
  288. package/lib/utils/entity-with-id.js +1 -1
  289. package/lib/utils/file-utils.js +1 -1
  290. package/lib/utils/guides-cdn.js +1 -1
  291. package/lib/utils/http-client.js +1 -1
  292. package/lib/utils/is-non-interactive.js +1 -1
  293. package/lib/utils/logger.js +1 -1
  294. package/lib/utils/params.js +1 -1
  295. package/lib/utils/platform.js +1 -1
  296. package/lib/utils/sleep.js +1 -1
  297. package/lib/utils/template-replacer.js +1 -1
  298. package/lib/utils/update-notice.js +1 -1
  299. package/lib/utils/version.js +1 -1
  300. package/lib/utils/with-active-cookie.js +1 -1
  301. package/lib/utils/write-cli-side-channel.js +1 -1
  302. package/package.json +1 -2
  303. package/skills/rabetbase/SKILL.md +10 -5
  304. package/skills/rabetbase/guides/frontend-development.md +2 -0
  305. package/skills/rabetbase/guides/sdk-client-generation.md +3 -2
  306. package/skills/rabetbase/guides/typescript-sdk.md +42 -0
  307. package/skills/rabetbase/references/rabetbase-api-pull.md +5 -3
  308. package/skills/rabetbase/references/rabetbase-config.md +9 -5
  309. package/skills/rabetbase/references/rabetbase-init.md +11 -5
  310. package/skills/rabetbase/references/rabetbase-project-create.md +6 -5
  311. package/skills/rabetbase.manifest.json +3 -3
  312. package/templates/README.md +13 -17
@@ -1 +1 @@
1
- function a294_0x35f4(){var _0x2b5c44=['6860920AYCZbb','503556asmQvk','62460hfOfnD','736850bwWWEF','114qQnRaD','428005YcdcTT','8841889unYpPG','3272103vNdpFQ','303oGILBb'];a294_0x35f4=function(){return _0x2b5c44;};return a294_0x35f4();}(function(_0x245cc1,_0x203cbc){var _0x466e06=a294_0x4a08,_0x41ab4e=_0x245cc1();while(!![]){try{var _0xf3a117=parseInt(_0x466e06(0x11f))/0x1+parseInt(_0x466e06(0x11d))/0x2+-parseInt(_0x466e06(0x124))/0x3*(-parseInt(_0x466e06(0x11e))/0x4)+-parseInt(_0x466e06(0x121))/0x5*(parseInt(_0x466e06(0x120))/0x6)+-parseInt(_0x466e06(0x122))/0x7+parseInt(_0x466e06(0x125))/0x8+parseInt(_0x466e06(0x123))/0x9;if(_0xf3a117===_0x203cbc)break;else _0x41ab4e['push'](_0x41ab4e['shift']());}catch(_0x2ad90a){_0x41ab4e['push'](_0x41ab4e['shift']());}}}(a294_0x35f4,0xdb163));import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';function a294_0x4a08(_0x257199,_0x1b08c7){_0x257199=_0x257199-0x11d;var _0x35f4d1=a294_0x35f4();var _0x4a088e=_0x35f4d1[_0x257199];return _0x4a088e;}export async function withActiveCookie(_0x3eecd9,_0x564d48){setActiveCookie(_0x3eecd9);try{return await _0x564d48();}finally{clearActiveCookie();}}
1
+ function a296_0x3226(){var _0x5048a7=['425IzPSut','452845kLpuqo','4ddlWKJ','10sQEJNQ','7061576XVKsCx','41016drgkZu','319815OIFEOS','2028387axsxNW','6700260VjYSvR','1893648lxsDzc'];a296_0x3226=function(){return _0x5048a7;};return a296_0x3226();}function a296_0x16fa(_0x76ec02,_0x124570){_0x76ec02=_0x76ec02-0x15d;var _0x3226ee=a296_0x3226();var _0x16fac0=_0x3226ee[_0x76ec02];return _0x16fac0;}(function(_0x1f076e,_0x3caed4){var _0x5891f6=a296_0x16fa,_0x5cd822=_0x1f076e();while(!![]){try{var _0x650e4d=-parseInt(_0x5891f6(0x15e))/0x1+-parseInt(_0x5891f6(0x166))/0x2+parseInt(_0x5891f6(0x164))/0x3*(parseInt(_0x5891f6(0x15f))/0x4)+parseInt(_0x5891f6(0x15d))/0x5*(-parseInt(_0x5891f6(0x162))/0x6)+parseInt(_0x5891f6(0x165))/0x7+parseInt(_0x5891f6(0x161))/0x8+parseInt(_0x5891f6(0x163))/0x9*(-parseInt(_0x5891f6(0x160))/0xa);if(_0x650e4d===_0x3caed4)break;else _0x5cd822['push'](_0x5cd822['shift']());}catch(_0x55a9f2){_0x5cd822['push'](_0x5cd822['shift']());}}}(a296_0x3226,0x7a01e));import{setActiveCookie,clearActiveCookie}from'../core/api-client.js';export async function withActiveCookie(_0x1377b6,_0x538d32){setActiveCookie(_0x1377b6);try{return await _0x538d32();}finally{clearActiveCookie();}}
@@ -1 +1 @@
1
- (function(_0x12c9c8,_0x490437){var _0x25c34b=a295_0x57d4,_0x51a524=_0x12c9c8();while(!![]){try{var _0x2dc9a4=-parseInt(_0x25c34b(0xfe))/0x1*(-parseInt(_0x25c34b(0x103))/0x2)+-parseInt(_0x25c34b(0x10b))/0x3*(parseInt(_0x25c34b(0x102))/0x4)+-parseInt(_0x25c34b(0xff))/0x5*(-parseInt(_0x25c34b(0x105))/0x6)+-parseInt(_0x25c34b(0x100))/0x7+-parseInt(_0x25c34b(0x108))/0x8*(-parseInt(_0x25c34b(0x109))/0x9)+parseInt(_0x25c34b(0x107))/0xa*(parseInt(_0x25c34b(0x106))/0xb)+-parseInt(_0x25c34b(0x10a))/0xc*(parseInt(_0x25c34b(0x101))/0xd);if(_0x2dc9a4===_0x490437)break;else _0x51a524['push'](_0x51a524['shift']());}catch(_0x49e542){_0x51a524['push'](_0x51a524['shift']());}}}(a295_0xf87a,0x92bb3));function a295_0x57d4(_0x347494,_0x3f73c0){_0x347494=_0x347494-0xfe;var _0xf87a73=a295_0xf87a();var _0x57d4b8=_0xf87a73[_0x347494];return _0x57d4b8;}export function writeCliSideChannelLine(_0x4d6a2b){var _0x44c375=a295_0x57d4;process[_0x44c375(0x104)]['write'](_0x4d6a2b+'\x0a');}function a295_0xf87a(){var _0x54e53d=['8802iUpPHE','stderr','1197606dQpsfC','66ZenEIY','1555530SvqWgs','9704KFKBjz','1395JIwMXY','36wpnZuG','269697VNoVsU','251xUEcWa','25GDUeRe','2011296KOWGhp','8952463FdAHdo','12jcZJZh'];a295_0xf87a=function(){return _0x54e53d;};return a295_0xf87a();}
1
+ function a297_0x35b0(_0x59e167,_0x346f96){_0x59e167=_0x59e167-0x15b;var _0x42c766=a297_0x42c7();var _0x35b04e=_0x42c766[_0x59e167];return _0x35b04e;}function a297_0x42c7(){var _0x3402ec=['12LoQOFP','21384kmdNJv','92dsYKfW','7JOWCPC','24oKSccq','117VjrRCZ','7692509liEUXr','219390aLVvOd','59474mimdkV','542488uLnbvz','370245WWdEur','3893334YRRxAS'];a297_0x42c7=function(){return _0x3402ec;};return a297_0x42c7();}(function(_0x28a5df,_0x28f9f0){var _0x381714=a297_0x35b0,_0x369f95=_0x28a5df();while(!![]){try{var _0x41f6f8=parseInt(_0x381714(0x15c))/0x1+parseInt(_0x381714(0x162))/0x2*(-parseInt(_0x381714(0x161))/0x3)+-parseInt(_0x381714(0x164))/0x4*(-parseInt(_0x381714(0x15e))/0x5)+-parseInt(_0x381714(0x15f))/0x6*(-parseInt(_0x381714(0x163))/0x7)+-parseInt(_0x381714(0x15d))/0x8+-parseInt(_0x381714(0x165))/0x9*(-parseInt(_0x381714(0x15b))/0xa)+parseInt(_0x381714(0x166))/0xb*(-parseInt(_0x381714(0x160))/0xc);if(_0x41f6f8===_0x28f9f0)break;else _0x369f95['push'](_0x369f95['shift']());}catch(_0x121291){_0x369f95['push'](_0x369f95['shift']());}}}(a297_0x42c7,0x53b3e));export function writeCliSideChannelLine(_0x1b341c){process['stderr']['write'](_0x1b341c+'\x0a');}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/rabetbase-cli",
3
- "version": "2.5.0",
3
+ "version": "2.5.1-beta.1",
4
4
  "description": "Developer CLI for Lovrabet apps, datasets, pages, SQL, Backend Function, database connections, skills, and AI agent workflows.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "keywords": [
@@ -43,7 +43,6 @@
43
43
  "prebuild:dev": "node scripts/generate-build-info.js",
44
44
  "build:dev": "node scripts/clean-build-output.mjs && tsc && tsc-alias",
45
45
  "start": "tsc --watch",
46
- "sync-template": "node scripts/sync-template.js",
47
46
  "sync:cdn": "node scripts/sync-cdn-assets.js",
48
47
  "verify:bundled-jq": "node scripts/verify-bundled-jq.mjs",
49
48
  "regression:release-smoke": "node scripts/regression-release-smoke.mjs",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rabetbase
3
- version: 2.5.0
3
+ version: 2.5.1-beta.1
4
4
  description: "Lovrabet 开发工作流 CLI — 通过 rabetbase 命令管理数据集、数据库连接(dblink)、数据列表页(Data List Page)、自定义页面(Custom Page)、SQL 查询、Backend Function 脚本、通知配置、企业知识库、菜单事实读取与同步、开发角色与协作者、应用文件、面向票证类业务材料文字与结构化字段提取的 OCR、代码生成,以及平台问题上报。触发词:数据集、数据表、dataset relation-audit、dataset delete、dataset restore、废弃数据集、恢复数据集、dataset rename、dataset field-update、dataset extend-update、dataset business-groups、dataset business-group-update、businessGroup、字段对象更新、doType、options、数据列表页、Data List Page、自定义页面、Custom Page、page create、page custom-list、page custom-detail、page custom-update、page custom-publish、page generate-start、page generate-status、page relation-audit、page sync、page pull、page push、page restore、恢复已删除页面、dblink、数据库连接、schema 分析、db list、db detail、db create、db update、db delete、db test、db tables、db diff、db diff-refresh-start、db diff-refresh-status、db analyze-batch-plan、db analyze-start、analyze-cancel、analyze-status、traceId、自定义 SQL、sql.execute、bff.execute、BF 消息通知、Backend Function 消息通知、notification config-list、EMAIL configCode、通知配置、notification.send、企业知识库、公司知识、公共知识、kb search、get_dataset_detail、validate_sql_content、save_or_update_custom_sql、@lovrabet/sdk、lovrabet 开发、rabetbase、filter、codegen、init、appcode、app list、app members-list、tenant members-list、应用人员列表、租户人员列表、workspace、workspace init、workspace use、workspace add、workspace remove、多应用、默认应用、menu list、menu visibility-update、菜单显示、菜单隐藏、visible、menu external-link-create、menu external-link-update、menu rename、菜单改名、外链菜单创建、外链 URL 更新、菜单异常审计、菜单手动删除清单、menu sync、menu asset-update、菜单资源更新、menu move、菜单移动、开发角色、开发协作者、role、role list、role user-add、role user-remove、user-resolve、加入开发者、ADMIN、DEV、OWNER、CUSTOM、project create、project upgrade、schema、jq、compress、file upload、file query-url、ocr recognize、文件上传、OCR 识别、票证文字提取、票证字段提取、发票识别、票据识别、证照识别、长期链接、issue report、平台问题、platform issue、问题上报、user-account dingding-sandbox-bind、钉钉沙箱账号绑定。"
5
5
  metadata:
6
6
  requires:
@@ -18,7 +18,7 @@ metadata:
18
18
 
19
19
  ## 前置条件
20
20
 
21
- 1. **连接配置与认证分离**:首次使用先执行 `rabetbase config init`。交互模式选择 `Mainland China (cn)` 或 `Indonesia (id)`;非交互模式显式传 `--region cn|id`,未传时默认 `cn`。企业独立部署使用 `--domain-config <file>` 或六个 `--*-domain` flags。`config init` 固定重建全局节点/Domain 配置,保留 Cookie、AccessKey、format、locale 和应用绑定,但不登录、不绑定项目;随后再执行 `rabetbase auth login`
21
+ 1. **连接配置与认证分离**:首次使用先执行 `rabetbase config init`。交互模式选择 `Mainland China (cn)` 或 `Indonesia (id)`;非交互模式显式传 `--region cn|id`,未传时默认 `cn`。尚未发布的 `global` 不出现在新配置入口中。企业独立部署使用 `--domain-config <file>` 或对应 `--*-domain` flags;自定义 HTTPS 本地回调时同时提供 Local 与 Certificate Domain。当前所有已开放节点和独立部署统一使用中国大陆 CDN 配置,Lovrabet 服务 Domain 仍分别解析。`config init` 固定重建全局节点/Domain 配置,保留 Cookie、AccessKey、format、locale 和应用绑定,但不登录、不绑定项目;随后再执行 `rabetbase auth login`
22
22
  2. **AppCode**:确保 `.rabetbase.json` 中设置了 `apps`(单应用自动选中;多应用再配 `defaultApp`),或兼容读取的顶层 `appcode`,或通过 `--appcode <code>` / `--app <name>` 传入。旧 `.lovrabet.json` 不会自动读取
23
23
  3. **配置文件**:`rabetbase config init` 固定写全局 `~/.rabetbase.json`,不接受项目作用域;默认 `cn` 不落冗余 `region`。官方节点模式清理显式和遗留 Domain,独立部署模式清理旧 `region`/Domain 后写入所提供的覆盖值。完整字段说明见 [`.rabetbase.json` 配置参考](references/rabetbase-config.md)。当前目录应用绑定使用下方 `workspace init`,二者不要混用
24
24
  4. **工作目录应用绑定**:当前目录要固定使用某个应用时,使用 `rabetbase workspace init --appcode <code>` 或 `rabetbase workspace use --app <name>`(选型见「app vs workspace 职责边界」)
@@ -158,7 +158,7 @@ metadata:
158
158
  - **普通写操作默认当前项目**(`workspace add`、`config set`、`project create` 等),除非用户**显式**传 `--global`;`config init` 是首次连接配置入口,固定写全局配置。
159
159
  - **不要**在用户未要求时给命令加 `--global`** — 默认行为已是「项目优先」;只有用户明确要改全局配置或不在项目内且意图写全局时才使用。
160
160
  - **`config set`**:在**没有**项目配置文件(当前目录未解析到 `.rabetbase.json`)且**未**传 `--global` 时,CLI **拒绝执行**并提示使用 `--global` 或先 `rabetbase workspace init --appcode <code>`,**不会**静默写入全局。
161
- - **`project create`** 生成的新项目 `.rabetbase.json` **只继承**少量全局偏好(如 `cookie` / `locale` / `format` / `riskLevel` 等),**不会**把全局 `apps` / `defaultApp` 带入新项目文件;同时生成浏览器安全的 `src/api/sdk-config.ts`:默认中国大陆节点不写路由,ID 写 `region: "id"`,非默认企业 Runtime 写 `runtimeDomain` 且优先于 region,不下发认证配置。模板的 Vite 本地开发和 preview 地址也按项目 region 选择对应的 HTTPS 域名与证书:ID 使用 `https://dev.lovrabet.id`,中国大陆使用 `https://dev.lovrabet.com`。
161
+ - **`project create`** 生成的新项目 `.rabetbase.json` **只继承**少量全局偏好(如 `cookie` / `locale` / `format` / `riskLevel` 等),**不会**把全局 `apps` / `defaultApp` 带入新项目文件;同时生成浏览器安全的 `src/api/sdk-config.ts` 与 `rabetbase.routing.json`。中国大陆、ID、Global 的 Lovrabet 服务 Domain、本地地址和证书由统一 Routing Profile 解析;当前共享资源统一使用中国大陆 CDN 配置,独立部署写客户最终服务 Domain。两个生成文件都不下发认证配置,后续 `api pull` 会刷新。
162
162
  - **`api pull` / `api list`**:默认仅针对**项目** `apps`;需要合并全局已登记应用时加 `--global`(见各命令 reference)。
163
163
  - **`app list`**:默认展示**合并**后的全量;`--global` 仅全局、`--project` 仅项目(见 [`rabetbase app list`](references/rabetbase-app-list.md))。
164
164
 
@@ -273,6 +273,10 @@ const result = await client.bff.execute<DashboardData>({
273
273
  });
274
274
  ```
275
275
 
276
+ ### Personal Backend Function 调用
277
+
278
+ 前端或 Node 服务通过 `client.personal.bff.execute({ scriptId, params })` 调用 Personal Backend Function。认证方式、兼容性检查、`undefined` 处理和返回值约定见 [`typescript-sdk.md`](guides/typescript-sdk.md#4-前端--node-调用-personal-backend-function-api)。
279
+
276
280
  ### 前端 vs Backend Function 关键差异
277
281
 
278
282
  | | 前端 SDK | Backend Function (context.client) |
@@ -284,6 +288,7 @@ const result = await client.bff.execute<DashboardData>({
284
288
  | `create()` 返回 | 以 SDK 文档/类型为准 | 新记录 ID,不是完整对象 |
285
289
  | SDK 初始化能力 | `createClient` / `registerModels` | 不可用;`context.client` 由平台注入 |
286
290
  | 调 Backend Function | `client.bff.execute({ scriptName, params })` | — |
291
+ | 调 Personal Backend Function | `client.personal.bff.execute({ scriptId, params })` | — |
287
292
 
288
293
  ## 意图 → 命令索引
289
294
 
@@ -357,7 +362,7 @@ const result = await client.bff.execute<DashboardData>({
357
362
  | 推送本地数据列表页 schema | [`rabetbase page push --id <pageId>`](references/rabetbase-page-push.md) | 推送后自动回拉 canonical schema 覆盖本地 |
358
363
  | 恢复已删除页面 | [`rabetbase page restore --id <pageId>`](references/rabetbase-page-restore.md) | 支持 `DATA_LIST|CUSTOM` 自动识别;跨类型同 ID 时显式传 `--page-type` |
359
364
  | 数据库连接(dblink)/ 测连 / 结构分析 | [`rabetbase db list`](references/rabetbase-db-list.md) 起 | **`id`**、**trace/plan id** 与“终态 + 复跑 diff”完成口径见 [database-connection-workflow.md](guides/database-connection-workflow.md);各子命令见 `references/rabetbase-db-*.md` |
360
- | 生成 / 更新 API 客户端代码 | [`rabetbase api pull`](references/rabetbase-api-pull.md) → [`sdk-client-generation.md`](guides/sdk-client-generation.md) | `api pull` 拉 Dataset 事实并刷新 `sdk-config.ts`;已有 `api.ts`/`client.ts` 按 guide 合并更新 |
365
+ | 生成 / 更新 API 客户端代码 | [`rabetbase api pull`](references/rabetbase-api-pull.md) → [`sdk-client-generation.md`](guides/sdk-client-generation.md) | `api pull` 拉 Dataset 事实并刷新 `sdk-config.ts` 与 `rabetbase.routing.json`;已有 `api.ts`/`client.ts` 按 guide 合并更新 |
361
366
  | 查看生成的 API 模型 | [`rabetbase api list`](references/rabetbase-api-list.md) | 列出已生成的数据模型 |
362
367
  | 查看现有 SQL | [`rabetbase sql list --name "xxx"`](references/rabetbase-sql-list.md) | 分页,按名称过滤;默认查当前决议到的单个应用 |
363
368
  | 查看 SQL 详情 | [`rabetbase sql detail --sqlcode xxx`](references/rabetbase-sql-detail.md) | 含完整 SQL 内容和参数定义 |
@@ -489,7 +494,7 @@ const result = await client.bff.execute<DashboardData>({
489
494
 
490
495
  | 主题 | Use when | Guide |
491
496
  | ---------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
492
- | SDK 完整参数与返回值 | 初始化 client、filter/create、sql.execute、bff.execute、错误处理 | [`typescript-sdk.md`](guides/typescript-sdk.md) |
497
+ | SDK 完整参数与返回值 | 初始化 client、filter/create、sql.execute、bff.execute、personal.bff.execute、安全能力检测与错误处理 | [`typescript-sdk.md`](guides/typescript-sdk.md) |
493
498
  | 生成 / 更新 api.ts 与 client.ts | `api pull` 之后、模型过期、脚手架缺失、或用户要求修复 SDK 客户端 | [`sdk-client-generation.md`](guides/sdk-client-generation.md) |
494
499
  | SQL MyBatis 与动态 SQL | 写自定义 SQL、`<if>`/`<foreach>`、参数绑定 | [`sql-mybatis.md`](guides/sql-mybatis.md) |
495
500
  | 前端页面开发约束 | React 页、表单、列表、与数据集绑定 | [`frontend-development.md`](guides/frontend-development.md) |
@@ -120,6 +120,8 @@ const customer = await client.models.customers.getOne({ id: customerId });
120
120
  * 使用 `filter()` 进行列表和条件查询
121
121
  * 不要在页面里写循环单条请求
122
122
  * 批量查询和性能优化统一参考 `data-api-guidelines.md`
123
+ * 调用 Personal Backend Function 时使用 `client.personal.bff.execute({ scriptId, params })`;先显式校验能力存在,禁止用 `execute?.(...)` 静默吞掉旧版 SDK 或 client 未初始化问题
124
+ * 浏览器只使用当前登录 Cookie,不在前端源码、构建变量或页面配置中保存 Client AK;完整示例与返回值校验见 `typescript-sdk.md`
123
125
 
124
126
  ## 禁止 Mock 替代正式数据
125
127
 
@@ -51,7 +51,7 @@ rabetbase api pull --format compress
51
51
  export const LOVRABET_SDK_CONFIG = {} as const;
52
52
  ```
53
53
 
54
- CLI 可能写入 `region: "id"` 或 `runtimeDomain: "https://…"`。不要手改成认证字段。
54
+ CLI 可能写入 `region: "id"`(由 SDK 1.5.3+ 解析)或 `runtimeDomain: "https://…"`(Global 与独立部署)。不要手改成认证字段。项目根目录 `rabetbase.routing.json` 同时承载模板最终 Domain 与资源策略,也由 CLI 刷新。
55
55
 
56
56
  ### api.ts
57
57
 
@@ -138,9 +138,10 @@ export const lovrabetClient = createClient({
138
138
  | `isDefaultConfig` | 默认应用为 `true` |
139
139
  | `models[]` | `datasetCode` / `tableName` / `name` / `alias` |
140
140
  | `sdkRouting` | `{ region?: "id", runtimeDomain?: string }` |
141
+ | `projectRouting` | `{ path, manifest }`,最终公开 Domain 与资源策略 |
141
142
  | `files.api` / `files.client` / `files.sdkConfig` | `{ path, action }`;`action` 为 `created` / `overwritten` / `preserved` / `refreshed` |
142
143
  | `needsAgentMerge` | 任一 TypeScript 被 `preserved` 时为 `true`,必须合并 `models` |
143
144
  | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | 与 `files.*.path` 相同,兼容路径字段 |
144
145
  | `modelCount` / `datasetCount` | 模型数量 |
145
146
 
146
- 多应用时 `data.apps[]` 为上述对象的数组。
147
+ 多应用时 `data.apps[]` 为上述对象的数组,`data.projectRouting` 为项目共享路由清单。
@@ -235,6 +235,45 @@ const dashboard = await client.bff.execute<DashboardData>({
235
235
  console.log(dashboard.userCount);
236
236
  ```
237
237
 
238
+ ## 4. 前端 / Node 调用 Personal Backend Function API
239
+
240
+ Personal Backend Function 通过数值型 `scriptId` 定位,`params` 必须是业务契约允许的对象。返回值是个人函数直接 `return` 的业务数据,不带 `execSuccess` 或 `execResult` 包装。
241
+
242
+ ```typescript
243
+ interface DashboardData {
244
+ userCount: number;
245
+ }
246
+
247
+ const personalBff = client?.personal?.bff;
248
+ if (typeof personalBff?.execute !== "function") {
249
+ throw new Error("client.personal.bff.execute is not available");
250
+ }
251
+
252
+ const dashboard = await personalBff.execute<DashboardData>({
253
+ scriptId: 123,
254
+ params: { userId: "123" },
255
+ });
256
+
257
+ if (!dashboard || typeof dashboard.userCount !== "number") {
258
+ throw new Error("Unexpected Personal Backend Function response");
259
+ }
260
+ ```
261
+
262
+ 认证边界:
263
+
264
+ - 浏览器 client 使用当前登录 Cookie。不要把 Cookie、AccessKey、SecretKey 或 token 写进前端源码、构建变量、页面配置或日志。
265
+ - Node 服务使用 Client AK 时,凭据只保存在服务端,并显式设置 `authMode: "client-ak"`。
266
+ - Personal Backend Function 不支持 `authMode: "openapi"`。
267
+
268
+ 兼容与 `undefined` 安全规则:
269
+
270
+ - 可选链只用于读取能力:`const personalBff = client?.personal?.bff`。
271
+ - 禁止调用 `client.personal?.bff?.execute?.(...)`。方法缺失时该写法会静默返回 `undefined`,无法与业务函数的空返回可靠区分。
272
+ - 能力不存在时立即抛出明确错误,提示升级到包含 `client.personal.bff.execute` 的 SDK 版本。
273
+ - 检测通过后通过 `personalBff.execute(...)` 调用;不要提取成 `const execute = personalBff.execute` 后裸调用,以免丢失方法上下文。
274
+ - 不以 `result === undefined` 作为能力检测;根据个人函数已确认的返回契约校验必需字段和空态。
275
+ - 接入页面前,先通过 `lovrabet personal-bff exec --id <id> --params '<json>' --format compress` 核对同一 `scriptId` 的字段、空态和错误形状。
276
+
238
277
  ## 异常处理底线
239
278
 
240
279
  所有通过 `client` 发起的网络调用都可能抛出 HTTP 级别的错误,AI 必须养成使用 `try...catch` 包裹代码的习惯,并识别 `LovrabetError`。
@@ -260,4 +299,7 @@ try {
260
299
  * [ ] `where` 对象里是否老老实实带了 `$eq` 等操作符?
261
300
  * [ ] 处理 SQL 的返回值时,判断了 `execSuccess` 吗?
262
301
  * [ ] 处理 Backend Function 的返回值时,是不是直接使用了业务数据?
302
+ * [ ] 调 Personal Backend Function 前,是否显式校验了 `client.personal.bff.execute`,且没有使用可选调用?
303
+ * [ ] 浏览器代码是否只依赖登录 Cookie,没有写入 Client AK 或其他凭据?
304
+ * [ ] 是否按已确认契约校验 Personal Backend Function 的返回形状,而不是用 `undefined` 猜测能力状态?
263
305
  * [ ] 加入了 `try...catch` 块防止整个应用崩溃吗?
@@ -1,6 +1,6 @@
1
1
  # api pull
2
2
 
3
- 拉取当前 App 下所有数据集(Dataset)的元信息,刷新 `src/api/sdk-config.ts`,并在 `api.ts` / `client.ts` **缺失时**写入 Cookie-first 脚手架。
3
+ 拉取当前 App 下所有数据集(Dataset)的元信息,刷新 `src/api/sdk-config.ts` 与项目根目录 `rabetbase.routing.json`,并在 `api.ts` / `client.ts` **缺失时**写入 Cookie-first 脚手架。
4
4
 
5
5
  已有 TypeScript **不会被覆盖**。Agent 必须用返回的 `data.models` 按 [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 更新 `api.ts` / `client.ts`。人类若要重新得到脚手架,删除对应文件后再跑本命令。
6
6
 
@@ -48,7 +48,8 @@ rabetbase api pull --appcode app-order-001 --format compress
48
48
 
49
49
  | 文件 | 行为 |
50
50
  |------|------|
51
- | `sdk-config.ts` | **每次刷新**。只含 `region` / `runtimeDomain`,不含凭证 |
51
+ | `sdk-config.ts` | **每次刷新**。只含必要的 `region` / `runtimeDomain`,不含凭证 |
52
+ | `rabetbase.routing.json` | **每次刷新**。只含最终 Domain、资源策略与本地路由,不含凭证 |
52
53
  | `<prefix>-api.ts` | 文件缺失时写入脚手架(含当前 `models`);已存在则跳过 |
53
54
  | `<prefix>-client.ts` | 文件缺失时写入 Cookie-first `createClient`;已存在则跳过 |
54
55
 
@@ -65,12 +66,13 @@ rabetbase api pull --appcode app-order-001 --format compress
65
66
  | `isDefaultConfig` | 默认应用为 `true` |
66
67
  | `models[]` | `datasetCode` / `tableName` / `name` / `alias` |
67
68
  | `sdkRouting` | `{ region?: "id", runtimeDomain?: string }` |
69
+ | `projectRouting` | `{ path, manifest }`,manifest 为最终公开路由清单 |
68
70
  | `files.api` / `files.client` / `files.sdkConfig` | `{ path, action }`:`created` / `overwritten` / `preserved` / `refreshed` |
69
71
  | `needsAgentMerge` | 任一 TypeScript 被 `preserved` 时为 `true` |
70
72
  | `apiFilePath` / `clientFilePath` / `sdkConfigPath` | 与 `files.*.path` 相同 |
71
73
  | `modelCount` / `datasetCount` | 模型数量 |
72
74
 
73
- 多应用时 `data` 为 `{ apps, succeeded, failed }`。
75
+ 多应用时 `data` 为 `{ apps, succeeded, failed, projectRouting }`。
74
76
 
75
77
  ## 生成标识符
76
78
 
@@ -73,7 +73,9 @@ CLI 对旧版顶层 `appcode` 仍兼容读取,但它已经不是推荐主模
73
73
  "runtimeDomain": "https://custom-runtime.example.com",
74
74
  "skillDomain": "https://custom-skills.example.com",
75
75
  "kbDomain": "https://custom-kb.example.com",
76
- "appDomain": "https://custom-app.example.com"
76
+ "appDomain": "https://custom-app.example.com",
77
+ "localDomain": "https://custom-local.example.com",
78
+ "certificateDomain": "https://custom-cert.example.com"
77
79
  }
78
80
  ```
79
81
 
@@ -126,7 +128,7 @@ rabetbase workspace remove product --yes
126
128
  | `pageSize` | number | — | 默认分页大小,用于 `sql list` 等分页命令 |
127
129
  | `riskLevel` | string | `"write"` | 允许执行的最高风险等级。可选值:`read`、`write`、`high-risk-write` |
128
130
  | `apiDir` | string | `"./src/api"` | `api pull` 生成代码的输出目录 |
129
- | `region` | string | `"cn"`(省略) | 当前开放的官方节点快捷配置:`cn`、`id` |
131
+ | `region` | string | `"cn"`(省略) | 官方节点快捷配置:当前开放 `cn`、`id`;历史 `global` 配置仅保留读取兼容 |
130
132
  | `template_base_url` | string | 平台默认 CDN | 模板 CDN 基础 URL,一般无需修改 |
131
133
  | `defaultApp` | string | — | 多应用模式下的默认应用名称;单应用省略 |
132
134
  | `apps` | object | — | 多应用配置。key 为应用名,value 为 AppProfile(见下方) |
@@ -136,6 +138,8 @@ rabetbase workspace remove product --yes
136
138
  | `skillDomain` | string | 节点默认 | SkillHub HTTPS origin 覆盖 |
137
139
  | `kbDomain` | string | 跟随 `apiDomain` / 节点 API 默认值 | 企业知识库 HTTPS origin 覆盖;显式配置时优先,`runtimeDomain` 不参与回退 |
138
140
  | `appDomain` | string | 节点默认 | 工作台、页面编辑器和发布页面域名 |
141
+ | `localDomain` | string | 独立部署默认 `http://localhost` | 自定义 HTTPS 本地回调 origin;与 `certificateDomain` 同时配置 |
142
+ | `certificateDomain` | string | 节点默认;独立部署无 | 本地 HTTPS 证书服务 origin;与 `localDomain` 同时配置 |
139
143
 
140
144
  ### AppProfile 字段(`apps.*` 内的每个应用)
141
145
 
@@ -194,7 +198,7 @@ CLI flag (--appcode, --env, --format, --app ...)
194
198
  配置合并使用固定模型,`inherit` 不是受支持的配置项:
195
199
 
196
200
  - 项目显式值覆盖全局显式值。
197
- - 项目存在时,仅从全局白名单继承 `cookie`、`accessKey`、`locale`、`format`、`riskLevel`、`pageSize`、`region` 和六个 Domain(`userDomain` / `apiDomain` / `runtimeDomain` / `skillDomain` / `kbDomain` / `appDomain`);不继承 `apps` / `defaultApp` / `appcode` / `env`。
201
+ - 项目存在时,仅从全局白名单继承 `cookie`、`accessKey`、`locale`、`format`、`riskLevel`、`pageSize`、`region` 和显式 Domain(服务、本地回调、证书服务);不继承 `apps` / `defaultApp` / `appcode` 等项目状态。
198
202
  - `apps` / `defaultApp` 始终项目隔离,避免研发写操作落到全局应用。
199
203
  - `region` 是 Domain fallback profile;显式 Domain 按普通 key 继承和覆盖,不会被 `region` 清除或屏蔽。
200
204
  - `riskLevel` 始终取全局与项目顶层的更严格值,项目不能借配置覆盖提权。
@@ -323,7 +327,7 @@ rabetbase config set --key region --value id --global
323
327
  rabetbase config init --domain-config ./lovrabet-domains.json
324
328
  ```
325
329
 
326
- 该文件只接收 `userDomain`、`apiDomain`、`runtimeDomain`、`skillDomain`、`kbDomain`、`appDomain`;值必须是无 path/query/fragment 的 HTTPS origin。完整行为与命令行 flags 见 [`rabetbase config init`](rabetbase-init.md)。
330
+ 该文件接收六个服务 Domain,以及可选的 `localDomain`、`certificateDomain`;值必须是无 path/query/fragment 的 HTTPS origin。自定义 HTTPS 本地回调必须同时提供 `localDomain` 与 `certificateDomain`。完整行为与命令行 flags 见 [`rabetbase config init`](rabetbase-init.md)。
327
331
 
328
332
  也可以逐项覆盖:
329
333
 
@@ -337,4 +341,4 @@ rabetbase config set --key kbDomain --value https://your-kb.example.com --global
337
341
  rabetbase config set --key appDomain --value https://your-app.example.com --global
338
342
  ```
339
343
 
340
- 官方模式:`region` 内置完整 Domain 映射,默认 `cn`,配置文件可省略;`id` 只需保存 `"region": "id"`。企业独立部署模式才保存显式 Domain。项目级配置可覆盖全局配置;默认项目合并会继承全局节点配置。
344
+ 官方模式:`region` 内置 Routing Profile,默认 `cn`,配置文件可省略;当前新配置只开放 `cn`、`id`,`id` 需保存对应 region。历史文件中的 `global` 仍可读取,但不能通过 `config init` 或 `config set` 新写入。企业独立部署模式才保存显式 Domain。当前所有已开放节点和独立部署统一使用中国大陆 CDN 配置。项目级配置可覆盖全局配置;默认项目合并会继承全局节点配置。
@@ -19,21 +19,23 @@ rabetbase config init \
19
19
  --runtime-domain https://runtime.customer.example.com \
20
20
  --skill-domain https://skills.customer.example.com \
21
21
  --kb-domain https://kb.customer.example.com \
22
- --app-domain https://app.customer.example.com
22
+ --app-domain https://app.customer.example.com \
23
+ --local-domain https://local.customer.example.com \
24
+ --certificate-domain https://cert.customer.example.com
23
25
  ```
24
26
 
25
27
  ## 交互与默认行为
26
28
 
27
29
  - 交互执行时选择 `Mainland China (cn)` 或 `Indonesia (id)`,默认选中 `cn`
28
30
  - 非交互执行时应显式传 `--region cn|id`;未传 region/Domain 时回退 `cn`
29
- - 当前只开放 `cn`、`id`;`global` 不可选择
31
+ - 当前只开放 `cn`、`id`;尚未发布的 `global` 不可选择
30
32
 
31
33
  ## 写入行为
32
34
 
33
35
  - 固定写入全局 `~/.rabetbase.json`
34
36
  - 不使用也不需要 `--global`,不能写入项目配置
35
37
  - 默认中国节点 `cn` 不写冗余 `region` 字段
36
- - 官方节点模式会清除六个显式 Domain,以及遗留的 `agentDomain` / `platformDomain` / `skillHubDomain`
38
+ - 官方节点模式会清除所有显式 Domain,以及遗留的 `agentDomain` / `platformDomain` / `skillHubDomain`
37
39
  - 独立部署模式会清除旧 `region`、显式 Domain 和遗留 Domain,再写入本次提供的 Domain
38
40
  - 保留 Cookie、AccessKey、format、locale、apps 等无关配置
39
41
  - 不负责登录,也不绑定当前项目应用
@@ -49,12 +51,16 @@ rabetbase config init \
49
51
  "runtimeDomain": "https://runtime.customer.example.com",
50
52
  "skillDomain": "https://skills.customer.example.com",
51
53
  "kbDomain": "https://kb.customer.example.com",
52
- "appDomain": "https://app.customer.example.com"
54
+ "appDomain": "https://app.customer.example.com",
55
+ "localDomain": "https://local.customer.example.com",
56
+ "certificateDomain": "https://cert.customer.example.com"
53
57
  }
54
58
  ```
55
59
 
56
60
  - 每个值必须是 HTTPS origin,不能包含账号、密码、path、query 或 fragment
57
- - 文件至少提供一个受支持 Domain;企业完整独立部署建议显式提供全部六个
61
+ - 文件至少提供一个受支持 Domain;完整独立部署应提供实际由客户部署的全部服务 Domain
62
+ - 当前所有官方节点和独立部署统一使用中国大陆 CDN 配置;User/App/Runtime 等 Lovrabet 服务 Domain 仍按节点或客户配置分别解析
63
+ - 未提供 `localDomain` / `certificateDomain` 时,本地回调使用 `http://localhost`;自定义 HTTPS 本地回调时两者必须同时提供
58
64
  - 同名 `--*-domain` flag 覆盖文件中的值
59
65
  - `--region` 与任意独立部署 Domain 互斥,不能混用
60
66
  - 未提供的 Domain 会按默认 `cn` 映射回退,因此完整独立部署不要遗漏实际由客户部署的服务入口
@@ -42,15 +42,16 @@ rabetbase project create my-project --appcode <code> --env production
42
42
  - 交互与非交互模式使用同一创建流程,都会安装依赖、格式化代码并写入项目配置
43
43
  - 项目模板从 CDN 下载并校验 SHA-256;CDN 不可用、模板不兼容或校验失败时命令停止,修复后重试
44
44
  - 新项目中的 `.rabetbase.json` **只继承**全局中的少量偏好及 `region` / Domain 路由配置,**不会**把全局的 `apps` / `defaultApp` 复制进新项目
45
- - `src/api/sdk-config.ts` 只生成浏览器可公开的非默认 SDK 路由,不会写入 `cookie`、`accessKey` 等认证配置;后续执行 `rabetbase api pull` 会按当前有效配置刷新该文件。`api.ts` / `client.ts` 仅在缺失时由 CLI 写脚手架,已有文件按 [`sdk-client-generation.md`](../guides/sdk-client-generation.md) 更新
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) 更新
46
46
 
47
47
  | 当前有效路由 | `src/api/sdk-config.ts` |
48
48
  |--------------|-------------------------|
49
- | 默认 CN,且没有非默认 `runtimeDomain` | `{}`,由 SDK 使用默认 CN 映射 |
50
- | ID,且没有非默认 `runtimeDomain` | `{ region: "id" }`,由 SDK 结合项目 env 选择 ID Runtime |
51
- | 非默认企业 `runtimeDomain` | `{ runtimeDomain: "https://…" }`,不再冗余写 region |
49
+ | 默认中国大陆节点 | `{}`,由 SDK 使用默认映射 |
50
+ | ID | `{ region: "id" }`,由 SDK 1.5.3+ 选择 ID Runtime |
51
+ | Global | `{ runtimeDomain: "https://runtime.lovrabet.ai" }`,兼容 SDK 1.5.3 |
52
+ | 独立部署 | `{ runtimeDomain: "https://…" }` |
52
53
 
53
- 如果显式 `runtimeDomain` 恰好等于当前 region/env 的 SDK 内置地址,CLI 会把它视为默认值:CN 不写路由,ID 仍只写 `region: "id"`。这样生成项目不会固定当前的具体公共 URL,后续仍可跟随 SDK 的内置映射升级。
54
+ 模板依赖 SDK 1.5.3+。CLI 从统一 Routing Profile 生成 `rabetbase.routing.json`,其中只包含最终 User/App/Runtime Domain、资源策略、本地地址和证书 URL,不复制节点注册表。当前所有官方节点和独立部署统一使用中国大陆 CDN 配置,Lovrabet 服务 Domain 仍分别解析。后续执行 `rabetbase api pull` 会刷新两个路由文件。
54
55
 
55
56
  ## 参考
56
57
 
@@ -2,8 +2,8 @@
2
2
  "schemaVersion": 1,
3
3
  "name": "rabetbase",
4
4
  "packageName": "@lovrabet/rabetbase-cli",
5
- "packageVersion": "2.5.0",
6
- "skillVersion": "2.5.0",
5
+ "packageVersion": "2.5.1-beta.1",
6
+ "skillVersion": "2.5.1-beta.1",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/backend-function.md",
@@ -132,5 +132,5 @@
132
132
  "references/rabetbase-user-account.md",
133
133
  "references/rabetbase-workspace.md"
134
134
  ],
135
- "digest": "dca9ab8c944c37266a62b08c870f666f5a3646bcc01098f2750f9b318456a477"
135
+ "digest": "a115d40353c6e1a7dd167f84e0dedeba993b267ede3bb7a4e950d8096c2d81c7"
136
136
  }
@@ -9,7 +9,7 @@ templates/
9
9
  ├── README.md # 本说明文档
10
10
  ├── generate-api/ # API 生成模板
11
11
  └── projects/ # 项目模板,用于 `rabetbase project create` 命令
12
- └── sub-app-react-demo/ # React 微前端项目模板快照
12
+ └── sub-app-react-demo/ # React 微前端项目模板真源
13
13
  ```
14
14
 
15
15
  ## API 生成模板
@@ -18,33 +18,29 @@ templates/
18
18
 
19
19
  ## 项目模板
20
20
 
21
- ### 远程模板同步
21
+ ### 模板真源与 CDN 资产
22
22
 
23
- `projects/sub-app-react-demo/` 目录是从模板真源仓同步来的 CDN 构建源:
24
- **仓库地址**: https://github.com/lovrabet/sub-app-react-demo
23
+ `projects/sub-app-react-demo/` 是 Rabetbase React 项目的仓内模板真源,也是 CDN ZIP 的唯一构建输入。
24
+ 模板能力最终沉淀到该目录;不维护额外的外部 `sub-app-react-demo` 真源或同步链路。
25
25
 
26
- #### 开发者:同步模板
26
+ #### 开发者:维护与验证模板
27
27
 
28
- 更新项目模板到最新版本:
28
+ 需要新增页面、组件或示例能力时,先从当前正式模板创建一个临时实例:
29
29
 
30
30
  ```bash
31
- npm run sync-template
31
+ npm run build:dev
32
+ node lib/cli.js project create template-test --template-source templates/projects/sub-app-react-demo
32
33
  ```
33
34
 
34
- 在提交、推送和生成 CDN ZIP 前,可先把本地工作区(包含未提交修改)转换到独立目录:
35
+ 在实例中完成开发、运行和构建验证后,明确告诉 AI 要沉淀的页面、组件、样式、依赖或配置范围。AI 仅提取这些经过确认的变更,过滤具体 AppCode、应用模型、认证信息、项目路由和本地状态,再合入正式模板。
35
36
 
36
- ```bash
37
- npm run sync-template -- --source ../sub-app-react-demo --output /tmp/sub-app-react-template
38
- ```
39
-
40
- 再使用已经准备好的模板创建调试项目:
37
+ 正式模板更新后,必须重新创建一个干净实例复验,不能把原开发实例整体覆盖回模板:
41
38
 
42
39
  ```bash
43
- node lib/cli.js project create template-test --template-source /tmp/sub-app-react-template
40
+ node lib/cli.js project create template-verify --template-source templates/projects/sub-app-react-demo
44
41
  ```
45
42
 
46
- `sync-template` 负责“原始项目 → 标准模板”,`project create --template-source` 负责
47
- “标准模板 → 新项目”,并保留普通创建的认证、AppCode、依赖安装和格式化流程。
43
+ `project create --template-source` 保留普通创建的认证、AppCode、依赖安装、格式化和项目配置流程。
48
44
  使用尚未发布的 CLI 时,先执行 `npm run build:dev`;
49
45
  使用已安装版本时,可把第二条命令换成 `rabetbase project create ...`。
50
46
 
@@ -78,7 +74,7 @@ npm run sync:cdn
78
74
 
79
75
  ## 注意事项
80
76
 
81
- - `templates/projects/sub-app-react-demo/` 是项目模板快照,不是独立 Git 仓
77
+ - `templates/projects/sub-app-react-demo/` 是项目模板真源,不是独立 Git 仓,也不是外部仓快照
82
78
  - `rabetbase project create` 从 CDN 下载 ZIP,然后更新 `package.json` 与 `.rabetbase.json`;此仓库模板不进入 npm 发布包
83
79
  - 模板文件名必须兼容 Windows、macOS 和 Linux;禁止符号链接、大小写冲突路径和 Windows 保留名称
84
80
  - 有 AppCode 时,CLI 会重新生成 `src/api/api.ts` 和 `src/api/client.ts`