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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/README.md +75 -1
  2. package/lib/api/api-doc.js +1 -1
  3. package/lib/api/fetch-model-list.js +1 -1
  4. package/lib/api/generate-api-file.js +1 -1
  5. package/lib/api/generate-sdk-config-file.d.ts +0 -1
  6. package/lib/api/generate-sdk-config-file.js +1 -1
  7. package/lib/auth/auth-server-ui.js +1 -1
  8. package/lib/auth/auth-server.js +1 -1
  9. package/lib/auth/constant.js +1 -1
  10. package/lib/auth/get-cookie.js +1 -1
  11. package/lib/auth/get-session-user.js +1 -1
  12. package/lib/auth/is-session-valid.js +1 -1
  13. package/lib/auth/login-success-html.js +1 -1
  14. package/lib/auth/logout.js +1 -1
  15. package/lib/cli-flags.js +1 -1
  16. package/lib/cli.js +1 -1
  17. package/lib/commands/api/generate.js +1 -1
  18. package/lib/commands/api/index.js +1 -1
  19. package/lib/commands/api/list.js +1 -1
  20. package/lib/commands/api/pull.js +1 -1
  21. package/lib/commands/api/shared.js +1 -1
  22. package/lib/commands/app/index.js +1 -1
  23. package/lib/commands/app/list.js +1 -1
  24. package/lib/commands/app/members-list.js +1 -1
  25. package/lib/commands/app/remote-directory.js +1 -1
  26. package/lib/commands/app/shared.js +1 -1
  27. package/lib/commands/app-config/delete.js +1 -1
  28. package/lib/commands/app-config/get.js +1 -1
  29. package/lib/commands/app-config/index.js +1 -1
  30. package/lib/commands/app-config/list.js +1 -1
  31. package/lib/commands/app-config/set.js +1 -1
  32. package/lib/commands/app-config/shared.js +1 -1
  33. package/lib/commands/auth/index.js +1 -1
  34. package/lib/commands/bff/create.js +1 -1
  35. package/lib/commands/bff/delete.js +1 -1
  36. package/lib/commands/bff/detail.js +1 -1
  37. package/lib/commands/bff/index.js +1 -1
  38. package/lib/commands/bff/list.js +1 -1
  39. package/lib/commands/bff/pull.js +1 -1
  40. package/lib/commands/bff/push.js +1 -1
  41. package/lib/commands/bff/status.js +1 -1
  42. package/lib/commands/cli-skill/index.js +1 -1
  43. package/lib/commands/cli-update.js +1 -1
  44. package/lib/commands/codegen/index.js +1 -1
  45. package/lib/commands/codegen/sdk.js +1 -1
  46. package/lib/commands/codegen/sql.js +1 -1
  47. package/lib/commands/common/app-registry.js +1 -1
  48. package/lib/commands/common/app-selector.js +1 -1
  49. package/lib/commands/common/async-task.js +1 -1
  50. package/lib/commands/common/dry-run.js +1 -1
  51. package/lib/commands/common/flags.d.ts +2 -0
  52. package/lib/commands/common/flags.js +1 -1
  53. package/lib/commands/common/local-file.js +1 -1
  54. package/lib/commands/common/validate.js +1 -1
  55. package/lib/commands/config/delete.js +1 -1
  56. package/lib/commands/config/get.js +1 -1
  57. package/lib/commands/config/index.js +1 -1
  58. package/lib/commands/config/init.d.ts +3 -1
  59. package/lib/commands/config/init.js +1 -1
  60. package/lib/commands/config/list.js +1 -1
  61. package/lib/commands/config/set.js +1 -1
  62. package/lib/commands/config/shared.js +1 -1
  63. package/lib/commands/dataset/business-group-update.js +1 -1
  64. package/lib/commands/dataset/business-groups.js +1 -1
  65. package/lib/commands/dataset/capability.js +1 -1
  66. package/lib/commands/dataset/delete.js +1 -1
  67. package/lib/commands/dataset/detail.js +1 -1
  68. package/lib/commands/dataset/extend-update.js +1 -1
  69. package/lib/commands/dataset/field-restore.js +1 -1
  70. package/lib/commands/dataset/field-update.js +1 -1
  71. package/lib/commands/dataset/generate.js +1 -1
  72. package/lib/commands/dataset/index.js +1 -1
  73. package/lib/commands/dataset/list.js +1 -1
  74. package/lib/commands/dataset/operations.js +1 -1
  75. package/lib/commands/dataset/relation-audit.js +1 -1
  76. package/lib/commands/dataset/relation-create.js +1 -1
  77. package/lib/commands/dataset/relation-delete.js +1 -1
  78. package/lib/commands/dataset/relation-shared.js +1 -1
  79. package/lib/commands/dataset/relation-update.js +1 -1
  80. package/lib/commands/dataset/relations.js +1 -1
  81. package/lib/commands/dataset/rename.js +1 -1
  82. package/lib/commands/dataset/restore.js +1 -1
  83. package/lib/commands/dataset/user-deleted-field-list.js +1 -1
  84. package/lib/commands/db/analysis-batching.js +1 -1
  85. package/lib/commands/db/analyze-batch-plan.js +1 -1
  86. package/lib/commands/db/analyze-cancel.js +1 -1
  87. package/lib/commands/db/analyze-start.js +1 -1
  88. package/lib/commands/db/analyze-status.js +1 -1
  89. package/lib/commands/db/create.js +1 -1
  90. package/lib/commands/db/delete.js +1 -1
  91. package/lib/commands/db/detail.js +1 -1
  92. package/lib/commands/db/diff-refresh-start.js +1 -1
  93. package/lib/commands/db/diff-refresh-status.js +1 -1
  94. package/lib/commands/db/diff.js +1 -1
  95. package/lib/commands/db/index.js +1 -1
  96. package/lib/commands/db/list.js +1 -1
  97. package/lib/commands/db/shared.js +1 -1
  98. package/lib/commands/db/table-diff-shared.js +1 -1
  99. package/lib/commands/db/tables.js +1 -1
  100. package/lib/commands/db/test.js +1 -1
  101. package/lib/commands/db/update.js +1 -1
  102. package/lib/commands/deployment/auto-sync.js +1 -1
  103. package/lib/commands/deployment/index.js +1 -1
  104. package/lib/commands/deployment/sync.js +1 -1
  105. package/lib/commands/doctor.js +1 -1
  106. package/lib/commands/file/index.js +1 -1
  107. package/lib/commands/issue/index.js +1 -1
  108. package/lib/commands/issue/nudge.js +1 -1
  109. package/lib/commands/issue/report.js +1 -1
  110. package/lib/commands/issue/shared.js +1 -1
  111. package/lib/commands/kb/create.js +1 -1
  112. package/lib/commands/kb/delete.js +1 -1
  113. package/lib/commands/kb/detail.js +1 -1
  114. package/lib/commands/kb/index.js +1 -1
  115. package/lib/commands/kb/list.js +1 -1
  116. package/lib/commands/kb/search.js +1 -1
  117. package/lib/commands/kb/shared.js +1 -1
  118. package/lib/commands/kb/update.js +1 -1
  119. package/lib/commands/logs/index.js +1 -1
  120. package/lib/commands/menu/asset-update.js +1 -1
  121. package/lib/commands/menu/delete.js +1 -1
  122. package/lib/commands/menu/external-link-create.js +1 -1
  123. package/lib/commands/menu/external-link-update.js +1 -1
  124. package/lib/commands/menu/group-create.js +1 -1
  125. package/lib/commands/menu/group-update.js +1 -1
  126. package/lib/commands/menu/index.js +1 -1
  127. package/lib/commands/menu/list.js +1 -1
  128. package/lib/commands/menu/move.js +1 -1
  129. package/lib/commands/menu/regroup-start.js +1 -1
  130. package/lib/commands/menu/rename.js +1 -1
  131. package/lib/commands/menu/shared/compare-table.js +1 -1
  132. package/lib/commands/menu/shared/delete-plan.js +1 -1
  133. package/lib/commands/menu/shared/facts.js +1 -1
  134. package/lib/commands/menu/shared/index.js +1 -1
  135. package/lib/commands/menu/shared/inquirer.js +1 -1
  136. package/lib/commands/menu/shared/local-pages.js +1 -1
  137. package/lib/commands/menu/shared/logic.js +1 -1
  138. package/lib/commands/menu/shared/mutations.js +1 -1
  139. package/lib/commands/menu/shared/service.js +1 -1
  140. package/lib/commands/menu/shared/sync-core.js +1 -1
  141. package/lib/commands/menu/shared/update-core.js +1 -1
  142. package/lib/commands/menu/shared/valid-url.js +1 -1
  143. package/lib/commands/menu/sync.js +1 -1
  144. package/lib/commands/menu/visibility-update.js +1 -1
  145. package/lib/commands/notification/config-create.js +1 -1
  146. package/lib/commands/notification/config-delete.js +1 -1
  147. package/lib/commands/notification/config-list.js +1 -1
  148. package/lib/commands/notification/config-update.js +1 -1
  149. package/lib/commands/notification/index.js +1 -1
  150. package/lib/commands/notification/shared.js +1 -1
  151. package/lib/commands/ocr/index.js +1 -1
  152. package/lib/commands/page/create.js +1 -1
  153. package/lib/commands/page/custom/detail.js +1 -1
  154. package/lib/commands/page/custom/list.js +1 -1
  155. package/lib/commands/page/custom/publish.js +1 -1
  156. package/lib/commands/page/custom/shared.js +1 -1
  157. package/lib/commands/page/custom/syntax.js +1 -1
  158. package/lib/commands/page/custom/template.js +1 -1
  159. package/lib/commands/page/custom/update.js +1 -1
  160. package/lib/commands/page/data-list-status.js +1 -1
  161. package/lib/commands/page/generate-start.js +1 -1
  162. package/lib/commands/page/generate-status.js +1 -1
  163. package/lib/commands/page/index.js +1 -1
  164. package/lib/commands/page/pull.js +1 -1
  165. package/lib/commands/page/push.js +1 -1
  166. package/lib/commands/page/relation-audit.js +1 -1
  167. package/lib/commands/page/restore.js +1 -1
  168. package/lib/commands/page/shared.js +1 -1
  169. package/lib/commands/page/sync.js +1 -1
  170. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  171. package/lib/commands/project/create/format-elapsed.js +1 -1
  172. package/lib/commands/project/create/main.d.ts +1 -0
  173. package/lib/commands/project/create/main.js +1 -1
  174. package/lib/commands/project/create/materialize-project-template.js +1 -1
  175. package/lib/commands/project/create/project-name.js +1 -1
  176. package/lib/commands/project/create/project-template-archive.js +1 -1
  177. package/lib/commands/project/create/project-template-path.js +1 -1
  178. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  179. package/lib/commands/project/create/use-format-code.js +1 -1
  180. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  181. package/lib/commands/project/domain-routing-sync.d.ts +2 -0
  182. package/lib/commands/project/domain-routing-sync.js +1 -0
  183. package/lib/commands/project/index.js +1 -1
  184. package/lib/commands/project/upgrade.js +1 -1
  185. package/lib/commands/registry.js +1 -1
  186. package/lib/commands/role/delete.js +1 -1
  187. package/lib/commands/role/detail.js +1 -1
  188. package/lib/commands/role/index.js +1 -1
  189. package/lib/commands/role/list.js +1 -1
  190. package/lib/commands/role/shared.js +1 -1
  191. package/lib/commands/role/update.js +1 -1
  192. package/lib/commands/role/user-add.js +1 -1
  193. package/lib/commands/role/user-remove.js +1 -1
  194. package/lib/commands/role/user-resolve.js +1 -1
  195. package/lib/commands/rule/get.d.ts +2 -0
  196. package/lib/commands/rule/get.js +1 -0
  197. package/lib/commands/rule/index.d.ts +2 -0
  198. package/lib/commands/rule/index.js +1 -0
  199. package/lib/commands/rule/list.d.ts +2 -0
  200. package/lib/commands/rule/list.js +1 -0
  201. package/lib/commands/rule/set.d.ts +2 -0
  202. package/lib/commands/rule/set.js +1 -0
  203. package/lib/commands/rule/shared.d.ts +43 -0
  204. package/lib/commands/rule/shared.js +1 -0
  205. package/lib/commands/run/index.js +1 -1
  206. package/lib/commands/schema.js +1 -1
  207. package/lib/commands/sql/create.js +1 -1
  208. package/lib/commands/sql/delete.js +1 -1
  209. package/lib/commands/sql/detail.js +1 -1
  210. package/lib/commands/sql/exec.js +1 -1
  211. package/lib/commands/sql/index.js +1 -1
  212. package/lib/commands/sql/list.js +1 -1
  213. package/lib/commands/sql/pull.js +1 -1
  214. package/lib/commands/sql/push.js +1 -1
  215. package/lib/commands/sql/shared.js +1 -1
  216. package/lib/commands/sql/status.js +1 -1
  217. package/lib/commands/sql/validate.js +1 -1
  218. package/lib/commands/task/index.js +1 -1
  219. package/lib/commands/task/status.js +1 -1
  220. package/lib/commands/tenant/index.js +1 -1
  221. package/lib/commands/tenant/members-list.js +1 -1
  222. package/lib/commands/tenant/shared.js +1 -1
  223. package/lib/commands/user-account/dingding-sandbox-bind.js +1 -1
  224. package/lib/commands/user-account/index.js +1 -1
  225. package/lib/commands/workspace/add.js +1 -1
  226. package/lib/commands/workspace/index.js +1 -1
  227. package/lib/commands/workspace/remove.js +1 -1
  228. package/lib/config/deployment-sync.js +1 -1
  229. package/lib/config/domain-config.d.ts +38 -2
  230. package/lib/config/domain-config.js +1 -1
  231. package/lib/config/project-domain-routing.d.ts +27 -0
  232. package/lib/config/project-domain-routing.js +1 -0
  233. package/lib/config/schema.d.ts +1 -1
  234. package/lib/config/schema.js +1 -1
  235. package/lib/constant/cdn.js +1 -1
  236. package/lib/constant/cli.js +1 -1
  237. package/lib/constant/defaults.js +1 -1
  238. package/lib/constant/domain.d.ts +10 -6
  239. package/lib/constant/domain.js +1 -1
  240. package/lib/constant/env.js +1 -1
  241. package/lib/constant/output.js +1 -1
  242. package/lib/constant/paths.js +1 -1
  243. package/lib/constant/region.d.ts +4 -1
  244. package/lib/constant/region.js +1 -1
  245. package/lib/constant/risk.js +1 -1
  246. package/lib/constant/routing-profile.d.ts +43 -49
  247. package/lib/constant/routing-profile.js +1 -1
  248. package/lib/context/app-resolver.js +1 -1
  249. package/lib/context/auth-resolver.js +1 -1
  250. package/lib/context/config-loader.js +1 -1
  251. package/lib/context.d.ts +2 -0
  252. package/lib/context.js +1 -1
  253. package/lib/core/alias-resolver.js +1 -1
  254. package/lib/core/api-client.d.ts +37 -0
  255. package/lib/core/api-client.js +1 -1
  256. package/lib/core/bff/config.js +1 -1
  257. package/lib/core/bff/file-system.js +1 -1
  258. package/lib/core/bff/hash.js +1 -1
  259. package/lib/core/bff/lock.js +1 -1
  260. package/lib/core/bff/utils.js +1 -1
  261. package/lib/core/db-resolver.js +1 -1
  262. package/lib/core/page/file-system.js +1 -1
  263. package/lib/core/page/hash.js +1 -1
  264. package/lib/core/page/lock.js +1 -1
  265. package/lib/core/sql-index-auditor.js +1 -1
  266. package/lib/core/sql-sync/config.js +1 -1
  267. package/lib/core/sql-sync/file-system.js +1 -1
  268. package/lib/core/sql-sync/hash.js +1 -1
  269. package/lib/core/sql-sync/lock.js +1 -1
  270. package/lib/core/sql-sync/utils.js +1 -1
  271. package/lib/core/sql-validator.js +1 -1
  272. package/lib/errors.js +1 -1
  273. package/lib/framework/build-all-flags.js +1 -1
  274. package/lib/framework/error-output.js +1 -1
  275. package/lib/framework/explicit-yes.js +1 -1
  276. package/lib/framework/flags.js +1 -1
  277. package/lib/framework/help.js +1 -1
  278. package/lib/framework/index.js +1 -1
  279. package/lib/framework/output.js +1 -1
  280. package/lib/framework/response.js +1 -1
  281. package/lib/framework/runner-alias.js +1 -1
  282. package/lib/framework/runner.js +1 -1
  283. package/lib/framework/schema-export.js +1 -1
  284. package/lib/framework/types.d.ts +0 -1
  285. package/lib/framework/types.js +1 -1
  286. package/lib/generated/build-info.d.ts +4 -4
  287. package/lib/generated/build-info.js +1 -1
  288. package/lib/generated/official-routing.d.ts +83 -0
  289. package/lib/generated/official-routing.js +1 -0
  290. package/lib/generated/routing-contract.d.ts +9 -0
  291. package/lib/generated/routing-contract.js +1 -0
  292. package/lib/help.js +1 -1
  293. package/lib/postinstall.js +1 -1
  294. package/lib/runtime/confirmation.js +1 -1
  295. package/lib/runtime/event.js +1 -1
  296. package/lib/runtime/index.js +1 -1
  297. package/lib/runtime/queue.js +1 -1
  298. package/lib/runtime/resolve.js +1 -1
  299. package/lib/skills/builtin-skill.js +1 -1
  300. package/lib/skills/main.js +1 -1
  301. package/lib/skills/npx-skills-add.js +1 -1
  302. package/lib/skills/skill-presence.js +1 -1
  303. package/lib/telemetry/cli-command-trace.js +1 -1
  304. package/lib/telemetry/cli-help-trace.js +1 -1
  305. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  306. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  307. package/lib/telemetry/send-cli-trace-log.js +1 -1
  308. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  309. package/lib/types/index.d.ts +0 -1
  310. package/lib/utils/ai_config.js +1 -1
  311. package/lib/utils/apply-jq-filter.js +1 -1
  312. package/lib/utils/cdn-config.js +1 -1
  313. package/lib/utils/check-sdk-version.js +1 -1
  314. package/lib/utils/cli-version-check.js +1 -1
  315. package/lib/utils/cli-version-policy.js +1 -1
  316. package/lib/utils/config.js +1 -1
  317. package/lib/utils/entity-with-id.js +1 -1
  318. package/lib/utils/file-utils.js +1 -1
  319. package/lib/utils/guides-cdn.js +1 -1
  320. package/lib/utils/http-client.js +1 -1
  321. package/lib/utils/is-non-interactive.js +1 -1
  322. package/lib/utils/logger.js +1 -1
  323. package/lib/utils/params.js +1 -1
  324. package/lib/utils/platform.js +1 -1
  325. package/lib/utils/sleep.js +1 -1
  326. package/lib/utils/template-replacer.js +1 -1
  327. package/lib/utils/update-notice.js +1 -1
  328. package/lib/utils/version.js +1 -1
  329. package/lib/utils/with-active-cookie.js +1 -1
  330. package/lib/utils/write-cli-side-channel.js +1 -1
  331. package/package.json +2 -1
  332. package/skills/rabetbase/SKILL.md +16 -13
  333. package/skills/rabetbase/guides/sdk-client-generation.md +10 -8
  334. package/skills/rabetbase/references/rabetbase-api-pull.md +16 -11
  335. package/skills/rabetbase/references/rabetbase-config.md +3 -6
  336. package/skills/rabetbase/references/rabetbase-doctor.md +2 -1
  337. package/skills/rabetbase/references/rabetbase-init.md +32 -10
  338. package/skills/rabetbase/references/rabetbase-kb.md +7 -7
  339. package/skills/rabetbase/references/rabetbase-project-create.md +33 -8
  340. package/skills/rabetbase/references/rabetbase-project-domain-routing-sync.md +28 -0
  341. package/skills/rabetbase/references/rabetbase-rule.md +49 -0
  342. package/skills/rabetbase.manifest.json +5 -3
  343. package/lib/config/project-routing.d.ts +0 -30
  344. package/lib/config/project-routing.js +0 -1
  345. package/lib/core/kb-search-client.d.ts +0 -30
  346. package/lib/core/kb-search-client.js +0 -1
@@ -1,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
@@ -19,7 +19,6 @@ 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
- --kb-search-domain https://kb-search.customer.example.com \
23
22
  --app-domain https://app.customer.example.com \
24
23
  --local-domain https://local.customer.example.com \
25
24
  --certificate-domain https://cert.customer.example.com
@@ -30,11 +29,11 @@ rabetbase config init \
30
29
  - 交互执行时选择 `Mainland China (cn)` 或 `Indonesia (id)`,默认选中 `cn`
31
30
  - 非交互执行时应显式传 `--region cn|id`;未传 region/Domain 时回退 `cn`
32
31
  - 当前只开放 `cn`、`id`;尚未发布的 `global` 不可选择
32
+ - 已保存的 `region` 无法识别时,依赖连接配置的命令会在请求前停止;先用 `rabetbase doctor` 定位作用域,再执行对应作用域的 `config init` 或 `config delete region` 修复
33
33
 
34
34
  ## 写入行为
35
35
 
36
- - 固定写入全局 `~/.rabetbase.json`
37
- - 不使用也不需要 `--global`,不能写入项目配置
36
+ - 默认写入当前项目 `.rabetbase.json`;`--global` 写入 `~/.rabetbase.json`
38
37
  - 默认中国节点 `cn` 不写冗余 `region` 字段
39
38
  - 官方节点模式会清除所有显式 Domain,以及遗留的 `agentDomain` / `platformDomain` / `skillHubDomain`
40
39
  - 独立部署模式会清除旧 `region`、显式 Domain 和遗留 Domain,再写入本次提供的 Domain
@@ -43,7 +42,31 @@ rabetbase config init \
43
42
 
44
43
  ## 独立部署 Domain
45
44
 
46
- `--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 继续兼容:
47
70
 
48
71
  ```json
49
72
  {
@@ -52,7 +75,6 @@ rabetbase config init \
52
75
  "runtimeDomain": "https://runtime.customer.example.com",
53
76
  "skillDomain": "https://skills.customer.example.com",
54
77
  "kbDomain": "https://kb.customer.example.com",
55
- "kbSearchDomain": "https://kb-search.customer.example.com",
56
78
  "appDomain": "https://app.customer.example.com",
57
79
  "localDomain": "https://local.customer.example.com",
58
80
  "certificateDomain": "https://cert.customer.example.com"
@@ -60,12 +82,12 @@ rabetbase config init \
60
82
  ```
61
83
 
62
84
  - 每个值必须是 HTTPS origin,不能包含账号、密码、path、query 或 fragment
63
- - 文件至少提供一个受支持 Domain;完整独立部署应提供实际由客户部署的全部服务 Domain
64
- - 当前所有官方节点和独立部署统一使用中国大陆 CDN 配置;User/App/Runtime 等 Lovrabet 服务 Domain 仍按节点或客户配置分别解析
85
+ - 旧扁平文件至少提供一个受支持 Domain,并维持既有回退语义
86
+ - 每个官方节点直接配置自己的 `cdn.libraries` 与 `cdn.lovrabet`;中国大陆当前使用 AliCDN,印尼当前使用 Cloudflare cdnjs,企业独立部署使用清单中的显式值
65
87
  - 未提供 `localDomain` / `certificateDomain` 时,本地回调使用 `http://localhost`;自定义 HTTPS 本地回调时两者必须同时提供
66
- - 同名 `--*-domain` flag 覆盖文件中的值
88
+ - 同名 `--*-domain` flag 仅覆盖旧扁平文件中的值
67
89
  - `--region` 与任意独立部署 Domain 互斥,不能混用
68
- - 未提供的 Domain 会按默认 `cn` 映射回退,因此完整独立部署不要遗漏实际由客户部署的服务入口
90
+ - 只有旧扁平配置的未提供 Domain 会按默认节点回退
69
91
 
70
92
  ## 结果语义
71
93
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  管理开发者侧当前解析应用下的 `company` 知识库,并检索当前应用可访问的公司与公共知识。所有命令都通过标准工作区、`--app <name>` 或 `--appcode <code>` 解析目标应用。
4
4
 
5
- 企业知识库管理使用独立 `kbDomain`;未显式配置时跟随 `apiDomain`,`runtimeDomain` 不参与。`kb search` 使用另一条独立 `kbSearchDomain`,Cookie-only 直连 KB Service。中国大陆 daily/production 已登记内置地址;其他区域只有显式配置独立搜索域才可用,否则失败关闭。Search 不回退到管理域、普通 API、Runtime 或 SmartCode Java。
5
+ 企业知识库请求使用独立的 `kbDomain`。当前官方节点的 KB 仍由平台 API 服务承载,因此未显式配置 `kbDomain` 时跟随 `apiDomain`;KB 服务拆分或企业独立部署时可单独覆盖 `kbDomain`。`runtimeDomain` 不参与 rabetbase 企业 KB 路由。当前 rabetbase-cli 没有调用 SkillHub 业务 API,未来新增时必须使用独立的 `skillDomain`。
6
6
 
7
7
  > 边界:`lovrabet kb` 使用运行态 AK/当前应用/当前用户,面向个人知识库和可见知识搜索;`rabetbase kb` 使用开发者登录态,面向公司知识库管理以及公司/公共知识检索。不要用其中一个替代另一个。
8
8
 
@@ -37,11 +37,11 @@ rabetbase kb delete --id 60 --yes
37
37
 
38
38
  ## search
39
39
 
40
- - Cookie-only 调用 `POST /v1/development/apps/{appCode}/knowledge/search`,请求体仅包含 `query` 和可选 `topK`;不发送 AK、`userId`、profile 或 scope。
41
- - Development profile 在检索前固定限制为 `public/company`;任何 `personal` 命中都按协议错误失败关闭。
42
- - `--query` 必填且不能是纯空白;`--topk` 可选,必须为 1–50 的整数。不传时沿用服务端缺省规则。
43
- - 结构化输出固定为 `data: { schemaVersion:2, profile:"development", total, strategyFingerprint, timingsMs, hits }`。`total` 等于命中数;每个命中完整保留 `documentId/revision/chunkId/scope/title/text/tags/rank/rawScore/finalScore/scoreKind` 的服务端顺序和值,无 legacy 别名。
44
- - 无命中是 `total:0/hits:[]` 的成功。HTTP、`no-store`、JSON、字段、rank、score、timing、TopK 或 scope 漂移均以脱敏结构化错误失败;错误不包含查询、正文或后端 body。
40
+ - 调用 `POST /smartapi/knowledge/company-public/search`,请求仅包含 `query`、解析后的 `appCode` 和可选 `topK`。
41
+ - 不传 `userId`,不查询个人知识库;命中 `scope` 只可能为 `COMPANY` 或 `PUBLIC`。
42
+ - `--query` 必填且不能是纯空白;`--topk` 可选,必须是正整数。不传时沿用服务端缺省规则。
43
+ - 输出 `total` 与 `hits`,命中字段为 `scope/title/docId/score/weightedScore/content/jsonPath/jsonData`;无命中时返回空数组。
44
+ - 同时判断 HTTP 状态和平台业务结果;未登录、无权限、参数错误、检索异常或响应字段漂移都会以结构化错误失败。
45
45
 
46
46
  ## create
47
47
 
@@ -73,4 +73,4 @@ rabetbase kb delete --id 60 --yes
73
73
 
74
74
  - 使用 `--env daily` 或 `--env production` 选择 Profile 环境,不通过 URL 参数切换。
75
75
  - Production 写操作必须单独取得授权;需求、dry-run 或命令可用不等于写入授权。
76
- - 输出和错误不得包含 Cookie、Token 或 AccessKey。只有成功的 `search` 按上述 V2 合同返回知识正文;失败输出不得包含查询、正文、后端 body 或原始异常。
76
+ - 输出和错误不得包含 Cookie、Token、AccessKey 或知识正文。
@@ -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,49 @@
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
+ ## 最佳实践
45
+
46
+ 1. 先执行 `rule list`,确认目标文件是否存在及当前版本。
47
+ 2. 已存在时优先带 `--expected-version` 做写前漂移检查。
48
+ 3. 使用相同参数先执行 `--dry-run`,检查 appCode、type、大小、哈希和非原子警告。
49
+ 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.3",
6
- "skillVersion": "2.5.1-beta.3",
5
+ "packageVersion": "2.5.1-beta.5",
6
+ "skillVersion": "2.5.1-beta.5",
7
7
  "files": [
8
8
  "SKILL.md",
9
9
  "guides/backend-function.md",
@@ -114,10 +114,12 @@
114
114
  "references/rabetbase-page-restore.md",
115
115
  "references/rabetbase-page-sync.md",
116
116
  "references/rabetbase-project-create.md",
117
+ "references/rabetbase-project-domain-routing-sync.md",
117
118
  "references/rabetbase-project-upgrade.md",
118
119
  "references/rabetbase-role-list.md",
119
120
  "references/rabetbase-role-user-add.md",
120
121
  "references/rabetbase-role-user-resolve.md",
122
+ "references/rabetbase-rule.md",
121
123
  "references/rabetbase-run.md",
122
124
  "references/rabetbase-schema.md",
123
125
  "references/rabetbase-sql-create.md",
@@ -135,5 +137,5 @@
135
137
  "references/rabetbase-user-account.md",
136
138
  "references/rabetbase-workspace.md"
137
139
  ],
138
- "digest": "4ad6d48c85fa638f9a3c5d3cc4e1ec3e6c8e1bfa61a4903407f7f9b20da48088"
140
+ "digest": "ef886c079892159159a97afd2290be056b6e1f016ecb39e9f2e3fd4b105b2422"
139
141
  }
@@ -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(_0x447964,_0x181a70){const _0x278ee3=a213_0x34cf,_0x30d1eb=_0x447964();while(!![]){try{const _0x2cb940=parseInt(_0x278ee3(0xe6))/0x1*(parseInt(_0x278ee3(0xe0))/0x2)+-parseInt(_0x278ee3(0xea))/0x3+parseInt(_0x278ee3(0xde))/0x4*(-parseInt(_0x278ee3(0xdd))/0x5)+parseInt(_0x278ee3(0xe9))/0x6*(parseInt(_0x278ee3(0xe2))/0x7)+-parseInt(_0x278ee3(0xeb))/0x8*(parseInt(_0x278ee3(0xe8))/0x9)+parseInt(_0x278ee3(0xdc))/0xa+parseInt(_0x278ee3(0xdb))/0xb;if(_0x2cb940===_0x181a70)break;else _0x30d1eb['push'](_0x30d1eb['shift']());}catch(_0x389a25){_0x30d1eb['push'](_0x30d1eb['shift']());}}}(a213_0x2eed,0x20bbc));import{writeFileSync}from'node:fs';import{join}from'node:path';import{getActiveRegion,getAppDomain,getCertificateDomain,getLocalDomain,getRuntimeDomain,getUserDomain,isIndependentDeployment}from'../constant/domain.js';import{getOfficialRoutingProfile}from'../constant/routing-profile.js';function a213_0x2eed(){const _0x544df5=['421998Nbohja','466521UqgAMm','8YCAeBd','assets','stringify','196559AjhQUp','2648510AdeVxZ','60ETePFT','29180WDLPXn','/cert/lovrabet-dev.json','22patUeT','local','7XzMcDS','independent','Independent\x20deployment\x20routing\x20requires\x20localDomain\x20and\x20certificateDomain\x20together.','utf8','16457vmTPhr','http://localhost','1412613KFwaPy'];a213_0x2eed=function(){return _0x544df5;};return a213_0x2eed();}export const PROJECT_ROUTING_FILE_NAME='rabetbase.routing.json';export const PROJECT_ROUTING_PROTOCOL='lovrabet-project-routing/v1';export function getProjectRoutingManifest(){const _0x247cd4=a213_0x34cf,_0x59a678=getActiveRegion(),_0x376cdb=isIndependentDeployment(),_0x227ab8=getOfficialRoutingProfile(_0x59a678),_0x2d631d=getLocalDomain(),_0x58f713=getCertificateDomain();if(!!_0x2d631d!==!!_0x58f713)throw new Error(_0x247cd4(0xe4));return{'protocol':PROJECT_ROUTING_PROTOCOL,'mode':_0x376cdb?_0x247cd4(0xe3):'official','region':_0x376cdb?null:_0x59a678,'domains':{'user':getUserDomain(),'app':getAppDomain(),'runtime':getRuntimeDomain()},'assets':_0x227ab8[_0x247cd4(0xd9)],'local':_0x2d631d&&_0x58f713?{'origin':_0x2d631d,'certificateUrl':_0x58f713+_0x247cd4(0xdf)}:_0x376cdb?{'origin':_0x247cd4(0xe7)}:_0x227ab8[_0x247cd4(0xe1)]};}function a213_0x34cf(_0x49693b,_0x59bb45){_0x49693b=_0x49693b-0xd9;const _0x2eed8b=a213_0x2eed();let _0x34cf27=_0x2eed8b[_0x49693b];return _0x34cf27;}export function writeProjectRoutingManifest(_0xe16ffb){const _0x349d53=a213_0x34cf,_0x41c63b=getProjectRoutingManifest(),_0x1011b6=join(_0xe16ffb,PROJECT_ROUTING_FILE_NAME);return writeFileSync(_0x1011b6,JSON[_0x349d53(0xda)](_0x41c63b,null,0x2)+'\x0a',_0x349d53(0xe5)),{'path':_0x1011b6,'manifest':_0x41c63b};}
@@ -1,30 +0,0 @@
1
- export type KnowledgeSearchScope = "public" | "company";
2
- export interface KnowledgeSearchHit {
3
- documentId: string;
4
- revision: number;
5
- chunkId: string;
6
- scope: KnowledgeSearchScope;
7
- title: string;
8
- text: string;
9
- tags: string[];
10
- rank: number;
11
- rawScore: number;
12
- finalScore: number;
13
- scoreKind: string;
14
- }
15
- export interface DevelopmentKnowledgeSearchResult {
16
- schemaVersion: 2;
17
- profile: "development";
18
- total: number;
19
- strategyFingerprint: string;
20
- timingsMs: Record<string, number>;
21
- hits: KnowledgeSearchHit[];
22
- }
23
- export interface DevelopmentKnowledgeSearchInput {
24
- appCode: string;
25
- cookie: string;
26
- query: string;
27
- topK?: number;
28
- signal?: AbortSignal;
29
- }
30
- export declare function searchDevelopmentKnowledge(input: DevelopmentKnowledgeSearchInput): Promise<DevelopmentKnowledgeSearchResult>;
@@ -1 +0,0 @@
1
- const a238_0x34be56=a238_0x92f0;(function(_0x57dcae,_0x21f4ce){const _0x1158cf=a238_0x92f0,_0x11a1aa=_0x57dcae();while(!![]){try{const _0x332813=parseInt(_0x1158cf(0xfc))/0x1*(parseInt(_0x1158cf(0xed))/0x2)+parseInt(_0x1158cf(0x108))/0x3*(-parseInt(_0x1158cf(0x10b))/0x4)+parseInt(_0x1158cf(0xea))/0x5+-parseInt(_0x1158cf(0xe1))/0x6+parseInt(_0x1158cf(0x10f))/0x7*(-parseInt(_0x1158cf(0xeb))/0x8)+parseInt(_0x1158cf(0x10c))/0x9+parseInt(_0x1158cf(0x117))/0xa*(parseInt(_0x1158cf(0x115))/0xb);if(_0x332813===_0x21f4ce)break;else _0x11a1aa['push'](_0x11a1aa['shift']());}catch(_0x485a17){_0x11a1aa['push'](_0x11a1aa['shift']());}}}(a238_0x4f43,0x776f1));import{getKbSearchDomain}from'../constant/domain.js';import{CliError,CliErrors}from'../errors.js';const RESPONSE_KEYS=[a238_0x34be56(0x11c),'strategyFingerprint',a238_0x34be56(0xe7)],HIT_KEYS=[a238_0x34be56(0x125),a238_0x34be56(0x111),a238_0x34be56(0xf9),a238_0x34be56(0x10a),'title',a238_0x34be56(0xfe),a238_0x34be56(0x11e),a238_0x34be56(0x119),'rawScore',a238_0x34be56(0x112),a238_0x34be56(0xe2)];export async function searchDevelopmentKnowledge(_0x2a00cc){const _0x73d68c=a238_0x34be56,_0x1be962=_0x2a00cc[_0x73d68c(0x11a)][_0x73d68c(0x110)](),_0x1b0d0c=_0x2a00cc['query']['trim']();if(!_0x1be962)throw CliErrors['validation'](_0x73d68c(0x120));if(!_0x2a00cc[_0x73d68c(0xff)]['trim']())throw CliErrors[_0x73d68c(0x12a)]();if(!_0x1b0d0c)throw CliErrors[_0x73d68c(0xf2)](_0x73d68c(0x113));validateTopK(_0x2a00cc[_0x73d68c(0x123)]);const _0x10f4d9=getKbSearchDomain()+_0x73d68c(0xfa)+encodeURIComponent(_0x1be962)+_0x73d68c(0x11d);let _0x1db161;try{_0x1db161=await fetch(_0x10f4d9,{'method':_0x73d68c(0x121),'headers':{'Content-Type':'application/json','Cookie':_0x2a00cc[_0x73d68c(0xff)],'X-Invoke-Source':_0x73d68c(0x106)},'body':JSON[_0x73d68c(0x129)]({'query':_0x1b0d0c,..._0x2a00cc[_0x73d68c(0x123)]!==undefined?{'topK':_0x2a00cc[_0x73d68c(0x123)]}:{}}),'signal':_0x2a00cc[_0x73d68c(0x11f)]});}catch(_0x571830){if(_0x571830 instanceof CliError)throw _0x571830;if(_0x571830 instanceof Error&&_0x571830[_0x73d68c(0xf1)]===_0x73d68c(0x126))throw _0x571830;throw CliErrors['networkError'](_0x73d68c(0x105));}if(!hasNoStore(_0x1db161[_0x73d68c(0x101)]))throw CliErrors[_0x73d68c(0x109)](_0x73d68c(0x10d));if(_0x1db161['status']===0x191)throw CliErrors[_0x73d68c(0x12a)]();if(!_0x1db161['ok'])throw CliErrors[_0x73d68c(0x109)]('KB\x20Service\x20search\x20failed\x20(HTTP\x20'+_0x1db161[_0x73d68c(0x103)]+').');if(!(_0x1db161[_0x73d68c(0x101)][_0x73d68c(0xf0)](_0x73d68c(0xfb))??'')['toLowerCase']()[_0x73d68c(0xe4)]('application/json'))throw CliErrors[_0x73d68c(0x109)](_0x73d68c(0x118));let _0x39c795;try{_0x39c795=await _0x1db161[_0x73d68c(0x114)]();}catch{throw CliErrors[_0x73d68c(0x109)](_0x73d68c(0xec));}return parseDevelopmentSearchResponse(_0x39c795,_0x2a00cc[_0x73d68c(0x123)]);}function validateTopK(_0x3d958d){const _0x32f20f=a238_0x34be56;if(_0x3d958d!==undefined&&(!Number[_0x32f20f(0x128)](_0x3d958d)||_0x3d958d<0x1||_0x3d958d>0x32))throw CliErrors[_0x32f20f(0xf2)]('Knowledge\x20search\x20topK\x20must\x20be\x20an\x20integer\x20from\x201\x20through\x2050.');}function hasNoStore(_0x32c7d6){const _0x39a764=a238_0x34be56;return(_0x32c7d6['get'](_0x39a764(0xef))??'')[_0x39a764(0x116)](',')['some'](_0x22cf71=>_0x22cf71[_0x39a764(0x110)]()[_0x39a764(0x122)]()===_0x39a764(0x10e));}function parseDevelopmentSearchResponse(_0x3b9c89,_0x87470a){const _0x2b1dc3=a238_0x34be56,_0x5324b1=requireExactRecord(_0x3b9c89,RESPONSE_KEYS,_0x2b1dc3(0xfd));if(!Array[_0x2b1dc3(0xf7)](_0x5324b1[_0x2b1dc3(0x11c)])||_0x5324b1[_0x2b1dc3(0x11c)][_0x2b1dc3(0xf6)]>(_0x87470a??0x32))throw invalidContract('hits');if(typeof _0x5324b1[_0x2b1dc3(0xf8)]!==_0x2b1dc3(0xe3)||!/^sha256:[0-9a-f]{64}$/['test'](_0x5324b1['strategyFingerprint']))throw invalidContract(_0x2b1dc3(0xf8));const _0xf8dee8=requireRecord(_0x5324b1[_0x2b1dc3(0xe7)],_0x2b1dc3(0xe7)),_0xddabcd={};for(const [_0x10de2c,_0x3b0e5c]of Object['entries'](_0xf8dee8)){if(!/^[A-Za-z][A-Za-z0-9]*$/[_0x2b1dc3(0x104)](_0x10de2c)||typeof _0x3b0e5c!==_0x2b1dc3(0x107)||!Number[_0x2b1dc3(0xe9)](_0x3b0e5c)||_0x3b0e5c<0x0)throw invalidContract(_0x2b1dc3(0xe7));_0xddabcd[_0x10de2c]=_0x3b0e5c;}const _0x4ba523=_0x5324b1['hits'][_0x2b1dc3(0xe6)]((_0x417734,_0x12881d)=>parseHit(_0x417734,_0x12881d));return{'schemaVersion':0x2,'profile':_0x2b1dc3(0x127),'total':_0x4ba523[_0x2b1dc3(0xf6)],'strategyFingerprint':_0x5324b1['strategyFingerprint'],'timingsMs':_0xddabcd,'hits':_0x4ba523};}function parseHit(_0x34992b,_0x177ca8){const _0x5a37cd=a238_0x34be56,_0x27b1d9=requireExactRecord(_0x34992b,HIT_KEYS,_0x5a37cd(0x102)+_0x177ca8+']'),_0x32ea3e=_0x6d12e2=>{const _0x25a665=_0x27b1d9[_0x6d12e2];if(typeof _0x25a665!=='string'||!_0x25a665)throw invalidContract(_0x6d12e2);return _0x25a665;};if(!Number['isSafeInteger'](_0x27b1d9['revision'])||_0x27b1d9[_0x5a37cd(0x111)]<0x1)throw invalidContract(_0x5a37cd(0x111));if(_0x27b1d9[_0x5a37cd(0x10a)]!==_0x5a37cd(0xe5)&&_0x27b1d9[_0x5a37cd(0x10a)]!=='company')throw invalidContract(_0x5a37cd(0x10a));if(typeof _0x27b1d9['title']!==_0x5a37cd(0xe3)||typeof _0x27b1d9[_0x5a37cd(0xfe)]!==_0x5a37cd(0xe3))throw invalidContract(_0x5a37cd(0xfe));if(!Array[_0x5a37cd(0xf7)](_0x27b1d9['tags'])||_0x27b1d9[_0x5a37cd(0x11e)][_0x5a37cd(0xf3)](_0x6cd71d=>typeof _0x6cd71d!==_0x5a37cd(0xe3)))throw invalidContract('tags');if(!Number[_0x5a37cd(0x128)](_0x27b1d9['rank'])||_0x27b1d9[_0x5a37cd(0x119)]!==_0x177ca8+0x1)throw invalidContract(_0x5a37cd(0x119));if(!isFiniteNumber(_0x27b1d9['rawScore'])||!isFiniteNumber(_0x27b1d9['finalScore']))throw invalidContract('score');return{'documentId':_0x32ea3e(_0x5a37cd(0x125)),'revision':_0x27b1d9[_0x5a37cd(0x111)],'chunkId':_0x32ea3e(_0x5a37cd(0xf9)),'scope':_0x27b1d9[_0x5a37cd(0x10a)],'title':_0x27b1d9[_0x5a37cd(0xe8)],'text':_0x27b1d9[_0x5a37cd(0xfe)],'tags':[..._0x27b1d9[_0x5a37cd(0x11e)]],'rank':_0x27b1d9[_0x5a37cd(0x119)],'rawScore':_0x27b1d9[_0x5a37cd(0xf4)],'finalScore':_0x27b1d9[_0x5a37cd(0x112)],'scoreKind':_0x32ea3e(_0x5a37cd(0xe2))};}function requireExactRecord(_0x5e52e6,_0x661c69,_0x471cd2){const _0x2afd51=a238_0x34be56,_0x36edcb=requireRecord(_0x5e52e6,_0x471cd2),_0x20bdf4=Object[_0x2afd51(0xee)](_0x36edcb)[_0x2afd51(0x11b)](),_0x3058c4=[..._0x661c69][_0x2afd51(0x11b)]();if(_0x20bdf4['length']!==_0x3058c4['length']||_0x20bdf4[_0x2afd51(0xf3)]((_0x234baf,_0x2dacc1)=>_0x234baf!==_0x3058c4[_0x2dacc1]))throw invalidContract(_0x471cd2);return _0x36edcb;}function a238_0x4f43(){const _0x1a1d9d=['scope','951076gMbqMO','6358833XXKFXW','KB\x20Service\x20search\x20response\x20is\x20missing\x20Cache-Control:\x20no-store.','no-store','14441VpritE','trim','revision','finalScore','Knowledge\x20search\x20query\x20is\x20required.','json','5325848MInHsF','split','20pfXpCK','KB\x20Service\x20search\x20returned\x20a\x20non-JSON\x20content\x20type.','rank','appCode','sort','hits','/knowledge/search','tags','signal','Knowledge\x20search\x20appCode\x20is\x20required.','POST','toLowerCase','topK','KB\x20Service\x20search\x20returned\x20an\x20invalid\x20','documentId','AbortError','development','isSafeInteger','stringify','authRequired','4782318bkCEHz','scoreKind','string','includes','public','map','timingsMs','title','isFinite','638485KZCGEb','1528eWonDI','KB\x20Service\x20search\x20returned\x20invalid\x20JSON.','4euGbaN','keys','cache-control','get','name','validation','some','rawScore','\x20contract.','length','isArray','strategyFingerprint','chunkId','/v1/development/apps/','content-type','57743Frzzfk','response','text','cookie','object','headers','hits[','status','test','KB\x20Service\x20search\x20request\x20failed.','cli:rabetbase','number','3NhpcLc','apiError'];a238_0x4f43=function(){return _0x1a1d9d;};return a238_0x4f43();}function a238_0x92f0(_0x33af1d,_0x396ff9){_0x33af1d=_0x33af1d-0xe1;const _0x4f43dd=a238_0x4f43();let _0x92f03=_0x4f43dd[_0x33af1d];return _0x92f03;}function requireRecord(_0x1a1ee9,_0x366c08){const _0x258488=a238_0x34be56;if(!_0x1a1ee9||typeof _0x1a1ee9!==_0x258488(0x100)||Array['isArray'](_0x1a1ee9))throw invalidContract(_0x366c08);return _0x1a1ee9;}function isFiniteNumber(_0x33ea06){const _0x2d4550=a238_0x34be56;return typeof _0x33ea06===_0x2d4550(0x107)&&Number[_0x2d4550(0xe9)](_0x33ea06);}function invalidContract(_0x5c238f){const _0x43c004=a238_0x34be56;return CliErrors[_0x43c004(0x109)](_0x43c004(0x124)+_0x5c238f+_0x43c004(0xf5));}