@jingyi0605/codingns 0.6.1 → 0.6.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 (162) hide show
  1. package/bin/codingns.mjs +225 -0
  2. package/dist/public/assets/AdaptiveButlerPage-CfsUVZKl.js +3 -0
  3. package/dist/public/assets/{App-Dsf3ooXU.js → App-B9HcTkMT.js} +3 -3
  4. package/dist/public/assets/{BootstrapPage-CE0m1qSR.js → BootstrapPage-BgLdZEKQ.js} +1 -1
  5. package/dist/public/assets/ConversationPage-Cj8go7L0.js +4 -0
  6. package/dist/public/assets/{DesktopDetachPreviewPage-Dxarr_Wf.js → DesktopDetachPreviewPage-YCBnyC58.js} +1 -1
  7. package/dist/public/assets/{DesktopWindowPage-VytPwJ4c.js → DesktopWindowPage-CrvndE23.js} +1 -1
  8. package/dist/public/assets/{FileContextPanel-DwFzLsOp.js → FileContextPanel-CdC7GGw5.js} +1 -1
  9. package/dist/public/assets/{GitSidebar-CH6WqTrM.js → GitSidebar-z2SBinQh.js} +1 -1
  10. package/dist/public/assets/{MobileCreateSessionSheet-DcxKM00P.js → MobileCreateSessionSheet-Cb2HM-y3.js} +1 -1
  11. package/dist/public/assets/{MobileTopHeaderFrame-C5rIKQT6.js → MobileTopHeaderFrame-etF2HKlm.js} +1 -1
  12. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-CfUnHgv_.js → MobileWorkspaceSwitcherHeader-CuGJ31kb.js} +1 -1
  13. package/dist/public/assets/{RelayConnectEntryPage-CgMvVZwa.js → RelayConnectEntryPage-BB6DbGtP.js} +1 -1
  14. package/dist/public/assets/{ServerSettingsModal-CFul__z1.js → ServerSettingsModal-Bl1sacZg.js} +1 -1
  15. package/dist/public/assets/{SessionIndexPage-B-tRhBXC.js → SessionIndexPage-NbF9gJnp.js} +1 -1
  16. package/dist/public/assets/SettingsPage-DGsmQpLv.js +1 -0
  17. package/dist/public/assets/{TerminalManagerPanel-BbORd-ee.js → TerminalManagerPanel-BOm8Hi_v.js} +1 -1
  18. package/dist/public/assets/{TerminalPage-DWHv6mlu.js → TerminalPage-B5JNFU6w.js} +19 -19
  19. package/dist/public/assets/{TerminalRuntimeFallbackModal-B29YxbQe.js → TerminalRuntimeFallbackModal-CM3LRKOJ.js} +1 -1
  20. package/dist/public/assets/{ToolFilesPage-Dx9cv9hu.js → ToolFilesPage-GSqKQsj_.js} +1 -1
  21. package/dist/public/assets/{ToolGitPage-D7H3vAia.js → ToolGitPage-BVFWMMQp.js} +1 -1
  22. package/dist/public/assets/{ToolProcessesPage-PqQWxsy-.js → ToolProcessesPage-DZ456fYz.js} +1 -1
  23. package/dist/public/assets/{ToolsHomePage-CX05Pe_4.js → ToolsHomePage-DsJp0y8A.js} +1 -1
  24. package/dist/public/assets/{WorkbenchLandingPage-CchkAC75.js → WorkbenchLandingPage-DyPei0e-.js} +1 -1
  25. package/dist/public/assets/WorkbenchLayout-DlbgBT3n.js +4 -0
  26. package/dist/public/assets/WorkbenchModal-LNfB69qx.js +1 -0
  27. package/dist/public/assets/WorkbenchShellRoute-BsxumYx5.js +1 -0
  28. package/dist/public/assets/{WorkbenchShellRoute-RGZpA0_J.css → WorkbenchShellRoute-DhQo_0vu.css} +1 -1
  29. package/dist/public/assets/{WorkspaceDebugDetailPage-Deqy2_pO.js → WorkspaceDebugDetailPage-CaXj5zVI.js} +1 -1
  30. package/dist/public/assets/{WorkspaceDetailPage-Cvf-ZdlB.js → WorkspaceDetailPage-DOexuuaw.js} +1 -1
  31. package/dist/public/assets/{WorkspaceHomePage-Dsyvqyk1.js → WorkspaceHomePage-DkCHNjKD.js} +1 -1
  32. package/dist/public/assets/{client-runtime-manager-DROQJ9v3.js → client-runtime-manager-6OoYHXGd.js} +1 -1
  33. package/dist/public/assets/{file-tree-icon-Bp3Ntt7u.js → file-tree-icon-9pt1OStn.js} +1 -1
  34. package/dist/public/assets/index-BwlbvwaA.css +1 -0
  35. package/dist/public/assets/index-DSw-TkQL.js +42 -0
  36. package/dist/public/assets/{login-direct-candidate-resolver-DotM530R.js → login-direct-candidate-resolver-CLlYtBRq.js} +1 -1
  37. package/dist/public/assets/model-switch-api-C-l8-E1S.js +1 -0
  38. package/dist/public/assets/{preferences-service-BG6GKG29.js → preferences-service-BCcfYP_d.js} +1 -1
  39. package/dist/public/assets/{relay-entry-pmr-c42O.js → relay-entry-BmLkMKuq.js} +1 -1
  40. package/dist/public/assets/session-runtime-machine-DgtvREca.js +21 -0
  41. package/dist/public/assets/{terminal-runtime-meta-8_uRZf7h.js → terminal-runtime-meta-0h-75uRy.js} +1 -1
  42. package/dist/public/assets/{useRegisteredDebugTemplates-DWX7LXQu.js → useRegisteredDebugTemplates-rBVmAqh3.js} +1 -1
  43. package/dist/public/index.html +2 -2
  44. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +4 -1
  45. package/dist/server/modules/assistant-capability/assistant-capability-service.js +12 -1
  46. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  47. package/dist/server/modules/butler/butler-control-session-service.d.ts +4 -1
  48. package/dist/server/modules/butler/butler-control-session-service.js +17 -1
  49. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  50. package/dist/server/modules/butler/butler-profile-service.d.ts +3 -1
  51. package/dist/server/modules/butler/butler-profile-service.js +16 -4
  52. package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
  53. package/dist/server/modules/opencli/opencli-bridge-skill-service.d.ts +12 -0
  54. package/dist/server/modules/opencli/opencli-bridge-skill-service.js +124 -0
  55. package/dist/server/modules/opencli/opencli-bridge-skill-service.js.map +1 -0
  56. package/dist/server/modules/opencli/opencli-catalog-service.d.ts +50 -0
  57. package/dist/server/modules/opencli/opencli-catalog-service.js +345 -0
  58. package/dist/server/modules/opencli/opencli-catalog-service.js.map +1 -0
  59. package/dist/server/modules/opencli/opencli-controller.d.ts +13 -0
  60. package/dist/server/modules/opencli/opencli-controller.js +30 -0
  61. package/dist/server/modules/opencli/opencli-controller.js.map +1 -0
  62. package/dist/server/modules/opencli/opencli-health-service.d.ts +28 -0
  63. package/dist/server/modules/opencli/opencli-health-service.js +106 -0
  64. package/dist/server/modules/opencli/opencli-health-service.js.map +1 -0
  65. package/dist/server/modules/opencli/opencli-install-discovery.d.ts +23 -0
  66. package/dist/server/modules/opencli/opencli-install-discovery.js +130 -0
  67. package/dist/server/modules/opencli/opencli-install-discovery.js.map +1 -0
  68. package/dist/server/modules/opencli/opencli-management-service.d.ts +59 -0
  69. package/dist/server/modules/opencli/opencli-management-service.js +152 -0
  70. package/dist/server/modules/opencli/opencli-management-service.js.map +1 -0
  71. package/dist/server/modules/opencli/opencli-runtime-builder.d.ts +11 -0
  72. package/dist/server/modules/opencli/opencli-runtime-builder.js +214 -0
  73. package/dist/server/modules/opencli/opencli-runtime-builder.js.map +1 -0
  74. package/dist/server/modules/opencli/opencli-runtime-layout.d.ts +3 -0
  75. package/dist/server/modules/opencli/opencli-runtime-layout.js +11 -0
  76. package/dist/server/modules/opencli/opencli-runtime-layout.js.map +1 -0
  77. package/dist/server/modules/opencli/opencli-runtime-profile-service.d.ts +29 -0
  78. package/dist/server/modules/opencli/opencli-runtime-profile-service.js +104 -0
  79. package/dist/server/modules/opencli/opencli-runtime-profile-service.js.map +1 -0
  80. package/dist/server/modules/opencli/opencli-runtime-resolver.d.ts +29 -0
  81. package/dist/server/modules/opencli/opencli-runtime-resolver.js +110 -0
  82. package/dist/server/modules/opencli/opencli-runtime-resolver.js.map +1 -0
  83. package/dist/server/modules/opencli/opencli-session-prompt-service.d.ts +11 -0
  84. package/dist/server/modules/opencli/opencli-session-prompt-service.js +66 -0
  85. package/dist/server/modules/opencli/opencli-session-prompt-service.js.map +1 -0
  86. package/dist/server/modules/provider/provider-catalog-service.d.ts +46 -0
  87. package/dist/server/modules/provider/provider-catalog-service.js +249 -0
  88. package/dist/server/modules/provider/provider-catalog-service.js.map +1 -0
  89. package/dist/server/modules/provider/provider-controller.d.ts +15 -2
  90. package/dist/server/modules/provider/provider-controller.js +44 -6
  91. package/dist/server/modules/provider/provider-controller.js.map +1 -1
  92. package/dist/server/modules/provider/provider-disabled.d.ts +8 -0
  93. package/dist/server/modules/provider/provider-disabled.js +45 -0
  94. package/dist/server/modules/provider/provider-disabled.js.map +1 -0
  95. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +1 -0
  96. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
  97. package/dist/server/modules/provider/provider-discovery-helper-process.js +3 -3
  98. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  99. package/dist/server/modules/provider/provider-discovery-runtime.d.ts +1 -1
  100. package/dist/server/modules/provider/provider-discovery-runtime.js +12 -8
  101. package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -1
  102. package/dist/server/modules/sessions/claude-compatible-provider-registry.d.ts +16 -0
  103. package/dist/server/modules/sessions/claude-compatible-provider-registry.js +91 -0
  104. package/dist/server/modules/sessions/claude-compatible-provider-registry.js.map +1 -0
  105. package/dist/server/modules/sessions/session-history-service.d.ts +7 -1
  106. package/dist/server/modules/sessions/session-history-service.js +49 -16
  107. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  108. package/dist/server/modules/sessions/session-live-runtime-router-service.js +9 -4
  109. package/dist/server/modules/sessions/session-live-runtime-router-service.js.map +1 -1
  110. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -4
  111. package/dist/server/modules/sessions/session-live-runtime-service.js +100 -87
  112. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  113. package/dist/server/modules/sessions/session-permission-request-service.d.ts +5 -2
  114. package/dist/server/modules/sessions/session-permission-request-service.js +26 -27
  115. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  116. package/dist/server/modules/sessions/session-provider-config-service.d.ts +17 -1
  117. package/dist/server/modules/sessions/session-provider-config-service.js +121 -17
  118. package/dist/server/modules/sessions/session-provider-config-service.js.map +1 -1
  119. package/dist/server/modules/skills/skill-manager-service.d.ts +5 -0
  120. package/dist/server/modules/skills/skill-manager-service.js +26 -0
  121. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  122. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +1 -0
  123. package/dist/server/modules/tasks/task-helper-process-handlers.js +1 -1
  124. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
  125. package/dist/server/routes/opencli.d.ts +3 -0
  126. package/dist/server/routes/opencli.js +7 -0
  127. package/dist/server/routes/opencli.js.map +1 -0
  128. package/dist/server/routes/providers.js +4 -2
  129. package/dist/server/routes/providers.js.map +1 -1
  130. package/dist/server/server/create-server.d.ts +8 -0
  131. package/dist/server/server/create-server.js +44 -11
  132. package/dist/server/server/create-server.js.map +1 -1
  133. package/dist/server/storage/repositories/opencli-catalog-entry-repository.d.ts +9 -0
  134. package/dist/server/storage/repositories/opencli-catalog-entry-repository.js +85 -0
  135. package/dist/server/storage/repositories/opencli-catalog-entry-repository.js.map +1 -0
  136. package/dist/server/storage/repositories/opencli-provider-repository.d.ts +8 -0
  137. package/dist/server/storage/repositories/opencli-provider-repository.js +88 -0
  138. package/dist/server/storage/repositories/opencli-provider-repository.js.map +1 -0
  139. package/dist/server/storage/repositories/opencli-runtime-profile-repository.d.ts +11 -0
  140. package/dist/server/storage/repositories/opencli-runtime-profile-repository.js +127 -0
  141. package/dist/server/storage/repositories/opencli-runtime-profile-repository.js.map +1 -0
  142. package/dist/server/storage/repositories/provider-control-repository.d.ts +9 -0
  143. package/dist/server/storage/repositories/provider-control-repository.js +51 -0
  144. package/dist/server/storage/repositories/provider-control-repository.js.map +1 -0
  145. package/dist/server/storage/sqlite/client.js +53 -0
  146. package/dist/server/storage/sqlite/client.js.map +1 -1
  147. package/dist/server/storage/sqlite/schema.sql +66 -0
  148. package/dist/server/types/domain.d.ts +50 -0
  149. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.d.ts +5 -0
  150. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js +1 -1
  151. package/node_modules/@codingns/session-sync-core/dist/runtime/legna-runtime.js.map +1 -1
  152. package/package.json +1 -1
  153. package/dist/public/assets/AdaptiveButlerPage-Dw72U3hG.js +0 -3
  154. package/dist/public/assets/ConversationPage-8wOY7SX-.js +0 -4
  155. package/dist/public/assets/SettingsPage-C9LGxSQZ.js +0 -1
  156. package/dist/public/assets/WorkbenchLayout-pOZvEqp7.js +0 -3
  157. package/dist/public/assets/WorkbenchModal-ColqvV6a.js +0 -1
  158. package/dist/public/assets/WorkbenchShellRoute-C0_h4lP6.js +0 -1
  159. package/dist/public/assets/index-B84Po2NA.css +0 -1
  160. package/dist/public/assets/index-C-0oeG_5.js +0 -42
  161. package/dist/public/assets/model-switch-api-Bh9nYslz.js +0 -1
  162. package/dist/public/assets/session-runtime-machine-YN84QBlr.js +0 -21
package/bin/codingns.mjs CHANGED
@@ -37,6 +37,9 @@ switch (command) {
37
37
  case "skills":
38
38
  await runSkillsCommand(argv);
39
39
  break;
40
+ case "opencli":
41
+ await runOpenCliCommand(argv);
42
+ break;
40
43
  default:
41
44
  console.error(`[codingns] 不支持的命令:${command}`);
42
45
  printHelp(1);
@@ -1011,6 +1014,64 @@ async function runSkillsCommand(argv) {
1011
1014
  }
1012
1015
  }
1013
1016
 
1017
+ async function runOpenCliCommand(argv) {
1018
+ const [action, ...rest] = argv;
1019
+
1020
+ if (!action || action === "help" || action === "--help" || action === "-h") {
1021
+ printOpenCliHelpTopic(buildOpenCliHelpTopic(rest[0]), 0);
1022
+ }
1023
+
1024
+ if (rest.length > 0 && isHelpToken(rest[0])) {
1025
+ printOpenCliHelpTopic(buildOpenCliHelpTopic(action), 0);
1026
+ }
1027
+
1028
+ switch (action) {
1029
+ case "overview":
1030
+ await printAssistantResponse(await requestOpenCli({
1031
+ method: "GET",
1032
+ path: "/api/opencli/overview",
1033
+ argv: rest,
1034
+ helpTopic: "opencli.overview"
1035
+ }));
1036
+ return;
1037
+ case "catalog":
1038
+ await printAssistantResponse(await requestOpenCli({
1039
+ method: "GET",
1040
+ path: "/api/opencli/catalog",
1041
+ argv: rest,
1042
+ helpTopic: "opencli.catalog"
1043
+ }));
1044
+ return;
1045
+ case "check":
1046
+ await printAssistantResponse(await requestOpenCli({
1047
+ method: "POST",
1048
+ path: "/api/opencli/check",
1049
+ argv: rest,
1050
+ helpTopic: "opencli.check"
1051
+ }));
1052
+ return;
1053
+ case "config":
1054
+ await printAssistantResponse(await requestOpenCli({
1055
+ method: "POST",
1056
+ path: "/api/opencli/config",
1057
+ argv: rest,
1058
+ supportedOptions: ["enabled", "command-id"],
1059
+ repeatableOptions: ["command-id"],
1060
+ helpTopic: "opencli.config"
1061
+ }, (options) => ({
1062
+ enabled: parseBooleanOption(
1063
+ requireOptionValue(options.values.enabled, "enabled"),
1064
+ "enabled"
1065
+ ),
1066
+ enabledCommandIds: readMultiOptionValues(options.values["command-id"])
1067
+ })));
1068
+ return;
1069
+ default:
1070
+ console.error(`[codingns] 不支持的 opencli 子命令:${action}`);
1071
+ printOpenCliHelpTopic("opencli", 1);
1072
+ }
1073
+ }
1074
+
1014
1075
  async function runProviderSessionsCommand(argv) {
1015
1076
  const [action, ...rest] = argv;
1016
1077
 
@@ -1176,6 +1237,7 @@ async function requestAssistant(command, buildPayload) {
1176
1237
  headers: {
1177
1238
  Authorization: `Bearer ${accessToken}`,
1178
1239
  [ASSISTANT_REQUEST_SOURCE_HEADER]: ASSISTANT_CLI_REQUEST_SOURCE,
1240
+ Connection: "close",
1179
1241
  ...(usesJsonBody ? { "Content-Type": "application/json" } : {})
1180
1242
  },
1181
1243
  body: usesJsonBody ? JSON.stringify(payload ?? {}) : undefined
@@ -1250,6 +1312,7 @@ async function requestSkills(command, buildPayload) {
1250
1312
  method: command.method,
1251
1313
  headers: {
1252
1314
  Authorization: `Bearer ${accessToken}`,
1315
+ Connection: "close",
1253
1316
  ...(command.method === "POST" ? { "Content-Type": "application/json" } : {})
1254
1317
  },
1255
1318
  body: command.method === "POST" ? JSON.stringify(payload ?? {}) : undefined
@@ -1283,6 +1346,81 @@ async function requestSkills(command, buildPayload) {
1283
1346
  return responseBody ?? rawBody;
1284
1347
  }
1285
1348
 
1349
+ async function requestOpenCli(command, buildPayload) {
1350
+ const options = parseArgs(command.argv, {
1351
+ supportedOptions: [
1352
+ "base-url",
1353
+ "token",
1354
+ ...(command.supportedOptions ?? [])
1355
+ ],
1356
+ repeatableOptions: command.repeatableOptions ?? []
1357
+ });
1358
+
1359
+ if (options.help) {
1360
+ printOpenCliHelpTopic(command.helpTopic ?? "opencli", 0);
1361
+ }
1362
+
1363
+ if (options.errors.length > 0) {
1364
+ for (const error of options.errors) {
1365
+ console.error(`[codingns] ${error}`);
1366
+ }
1367
+ printOpenCliHelpTopic(command.helpTopic ?? "opencli", 1);
1368
+ }
1369
+
1370
+ const baseUrl = resolveAssistantBaseUrl(options.values["base-url"]);
1371
+ const accessToken = resolveAssistantAccessToken(options.values.token);
1372
+ const url = new URL(command.path, appendTrailingSlash(baseUrl));
1373
+ const payload = buildPayload ? buildPayload(options) : null;
1374
+
1375
+ if (command.method === "GET" && payload) {
1376
+ for (const [key, value] of Object.entries(payload)) {
1377
+ if (typeof value === "string" && value.length > 0) {
1378
+ url.searchParams.set(key, value);
1379
+ }
1380
+ }
1381
+ }
1382
+
1383
+ let response;
1384
+
1385
+ try {
1386
+ response = await fetch(url, {
1387
+ method: command.method,
1388
+ headers: {
1389
+ Authorization: `Bearer ${accessToken}`,
1390
+ Connection: "close",
1391
+ ...(command.method === "POST" ? { "Content-Type": "application/json" } : {})
1392
+ },
1393
+ body: command.method === "POST" ? JSON.stringify(payload ?? {}) : undefined
1394
+ });
1395
+ } catch (error) {
1396
+ const message = error instanceof Error ? error.message : "未知网络错误";
1397
+ console.error(JSON.stringify({
1398
+ ok: false,
1399
+ detail: `OpenCLI 管理请求失败:${message}`,
1400
+ target: url.toString()
1401
+ }, null, 2));
1402
+ process.exit(1);
1403
+ }
1404
+
1405
+ const rawBody = await response.text();
1406
+ const responseBody = tryParseJson(rawBody);
1407
+
1408
+ if (!response.ok) {
1409
+ const detail = typeof responseBody?.detail === "string"
1410
+ ? responseBody.detail
1411
+ : `HTTP ${response.status}`;
1412
+ console.error(JSON.stringify({
1413
+ ok: false,
1414
+ status: response.status,
1415
+ detail,
1416
+ body: responseBody ?? rawBody
1417
+ }, null, 2));
1418
+ process.exit(1);
1419
+ }
1420
+
1421
+ return responseBody ?? rawBody;
1422
+ }
1423
+
1286
1424
  async function printAssistantResponse(payload) {
1287
1425
  if (typeof payload === "string") {
1288
1426
  console.log(payload);
@@ -1662,6 +1800,7 @@ codingns 用法:
1662
1800
  codingns assistant <group> <action> [options]
1663
1801
  codingns provider-sessions <action> [options]
1664
1802
  codingns skills <action> [options]
1803
+ codingns opencli <action> [options]
1665
1804
 
1666
1805
  说明:
1667
1806
 
@@ -1690,6 +1829,12 @@ skills 例子:
1690
1829
  codingns skills add --source ./my-skill --target codex --token <token>
1691
1830
  codingns skills sync <skillId> --target gemini --token <token>
1692
1831
 
1832
+ opencli 例子:
1833
+
1834
+ codingns opencli overview --token <token>
1835
+ codingns opencli check --token <token>
1836
+ codingns opencli config --enabled true --command-id hackernews/top --token <token>
1837
+
1693
1838
  provider-sessions 例子:
1694
1839
 
1695
1840
  codingns provider-sessions delete --provider codex --provider-session-id <id> --raw-store-ref <ref>
@@ -1728,6 +1873,18 @@ function printSkillsHelpTopic(topic, exitCode) {
1728
1873
  process.exit(exitCode);
1729
1874
  }
1730
1875
 
1876
+ function printOpenCliHelpTopic(topic, exitCode) {
1877
+ const output = getOpenCliHelpText(topic);
1878
+
1879
+ if (exitCode === 0) {
1880
+ console.log(output);
1881
+ } else {
1882
+ console.error(output);
1883
+ }
1884
+
1885
+ process.exit(exitCode);
1886
+ }
1887
+
1731
1888
  function printProviderSessionsHelpTopic(topic, exitCode) {
1732
1889
  const output = getProviderSessionsHelpText(topic);
1733
1890
 
@@ -2572,6 +2729,66 @@ codingns assistant 用法:
2572
2729
  }
2573
2730
  }
2574
2731
 
2732
+ function getOpenCliHelpText(topic) {
2733
+ switch (topic) {
2734
+ case "opencli.overview":
2735
+ return `
2736
+ codingns opencli overview
2737
+
2738
+ 用途:
2739
+ 查看 OpenCLI provider 的当前状态、目录统计和当前生效运行时。
2740
+
2741
+ 用法:
2742
+ codingns opencli overview --token <token>
2743
+ `.trim();
2744
+ case "opencli.catalog":
2745
+ return `
2746
+ codingns opencli catalog
2747
+
2748
+ 用途:
2749
+ 查看完整 OpenCLI 目录,包括站点分组和每条命令的启用状态。
2750
+
2751
+ 用法:
2752
+ codingns opencli catalog --token <token>
2753
+ `.trim();
2754
+ case "opencli.check":
2755
+ return `
2756
+ codingns opencli check
2757
+
2758
+ 用途:
2759
+ 重新检查 OpenCLI 安装、健康状态和目录缓存。
2760
+
2761
+ 用法:
2762
+ codingns opencli check --token <token>
2763
+ `.trim();
2764
+ case "opencli.config":
2765
+ return `
2766
+ codingns opencli config
2767
+
2768
+ 用途:
2769
+ 保存 OpenCLI 总开关和启用命令列表,并触发裁剪运行时重建。
2770
+
2771
+ 用法:
2772
+ codingns opencli config --enabled true|false [--command-id <site/name>] [--command-id <site/name>] --token <token>
2773
+ `.trim();
2774
+ default:
2775
+ return `
2776
+ codingns opencli 用法:
2777
+
2778
+ codingns opencli overview --token <token>
2779
+ codingns opencli catalog --token <token>
2780
+ codingns opencli check --token <token>
2781
+ codingns opencli config --enabled true|false [--command-id <site/name>] [--command-id <site/name>] --token <token>
2782
+
2783
+ 环境变量:
2784
+
2785
+ CODINGNS_BASE_URL 默认 Host 地址,未传时默认 http://127.0.0.1:3002
2786
+ CODINGNS_ACCESS_TOKEN 默认 Bearer token
2787
+ CODINGNS_AUTH_FILE 可选认证文件,支持读取 apiBaseUrl/accessToken
2788
+ `.trim();
2789
+ }
2790
+ }
2791
+
2575
2792
  function getProviderSessionsHelpText(topic) {
2576
2793
  switch (topic) {
2577
2794
  case "provider-sessions.delete":
@@ -2825,6 +3042,14 @@ function buildSkillsHelpTopic(action) {
2825
3042
  return `skills.${action}`;
2826
3043
  }
2827
3044
 
3045
+ function buildOpenCliHelpTopic(action) {
3046
+ if (!action || action === "--help" || action === "-h") {
3047
+ return "opencli";
3048
+ }
3049
+
3050
+ return `opencli.${action}`;
3051
+ }
3052
+
2828
3053
  function buildProviderSessionsHelpTopic(action) {
2829
3054
  if (!action || action === "--help" || action === "-h") {
2830
3055
  return "provider-sessions";