jishushell 0.6.5 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1207) hide show
  1. package/apps/anythingllm-container.yaml +16 -170
  2. package/apps/browserless-chromium-container.yaml +16 -10
  3. package/apps/filebrowser-container.yaml +15 -9
  4. package/apps/hermes-container.yaml +20 -5
  5. package/apps/immich-container-lite.yaml +337 -0
  6. package/apps/immich-container.yaml +371 -0
  7. package/apps/jishu-kb-container.yaml +50 -177
  8. package/apps/ollama-binary.yaml +33 -28
  9. package/apps/ollama-cpu-container.yaml +6 -0
  10. package/apps/ollama-with-hollama-binary.yaml +35 -28
  11. package/apps/openclaw-binary.yaml +35 -15
  12. package/apps/openclaw-container.yaml +29 -11
  13. package/apps/openclaw-with-ollama-container.yaml +9 -2
  14. package/apps/openclaw-with-searxng-container.yaml +38 -6
  15. package/apps/searxng-container.yaml +31 -6
  16. package/apps/weknora-container.yaml +26 -21
  17. package/dependencies/jishushell-panel-0.7.3.tgz +0 -0
  18. package/dist/cli/app.js +244 -213
  19. package/dist/cli/app.js.map +1 -1
  20. package/dist/cli/backup.js +15 -12
  21. package/dist/cli/backup.js.map +1 -1
  22. package/dist/cli/core.d.ts +4 -3
  23. package/dist/cli/core.js +392 -227
  24. package/dist/cli/core.js.map +1 -1
  25. package/dist/cli/doctor.d.ts +1 -1
  26. package/dist/cli/doctor.js +113 -10
  27. package/dist/cli/doctor.js.map +1 -1
  28. package/dist/cli/job.js +62 -14
  29. package/dist/cli/job.js.map +1 -1
  30. package/dist/cli/llm.js +80 -11
  31. package/dist/cli/llm.js.map +1 -1
  32. package/dist/cli/managed-list.d.ts +1 -3
  33. package/dist/cli/managed-list.js +18 -16
  34. package/dist/cli/managed-list.js.map +1 -1
  35. package/dist/cli/migrate.d.ts +2 -0
  36. package/dist/cli/migrate.js +160 -0
  37. package/dist/cli/migrate.js.map +1 -0
  38. package/dist/cli.js +1 -0
  39. package/dist/cli.js.map +1 -1
  40. package/dist/config.d.ts +32 -20
  41. package/dist/config.js +132 -51
  42. package/dist/config.js.map +1 -1
  43. package/dist/control.d.ts +6 -6
  44. package/dist/control.js +31 -23
  45. package/dist/control.js.map +1 -1
  46. package/dist/core.d.ts +5 -5
  47. package/dist/core.js +5 -5
  48. package/dist/core.js.map +1 -1
  49. package/dist/install.d.ts +2 -2
  50. package/dist/install.js +78 -37
  51. package/dist/install.js.map +1 -1
  52. package/dist/routes/admin.d.ts +2 -0
  53. package/dist/routes/admin.js +72 -0
  54. package/dist/routes/admin.js.map +1 -0
  55. package/dist/routes/apps.d.ts +1 -1
  56. package/dist/routes/apps.js +101 -193
  57. package/dist/routes/apps.js.map +1 -1
  58. package/dist/routes/auth.js +1 -1
  59. package/dist/routes/auth.js.map +1 -1
  60. package/dist/routes/backup.js +1 -1
  61. package/dist/routes/backup.js.map +1 -1
  62. package/dist/routes/docker.d.ts +2 -0
  63. package/dist/routes/docker.js +58 -0
  64. package/dist/routes/docker.js.map +1 -0
  65. package/dist/routes/external-mounts.d.ts +1 -1
  66. package/dist/routes/external-mounts.js +1 -1
  67. package/dist/routes/external-mounts.js.map +1 -1
  68. package/dist/routes/file-mounts.d.ts +4 -3
  69. package/dist/routes/file-mounts.js +49 -31
  70. package/dist/routes/file-mounts.js.map +1 -1
  71. package/dist/routes/files-organize.d.ts +2 -2
  72. package/dist/routes/files-organize.js +5 -5
  73. package/dist/routes/files-organize.js.map +1 -1
  74. package/dist/routes/files.d.ts +1 -1
  75. package/dist/routes/files.js +1 -1
  76. package/dist/routes/files.js.map +1 -1
  77. package/dist/routes/instances.d.ts +0 -8
  78. package/dist/routes/instances.js +202 -1560
  79. package/dist/routes/instances.js.map +1 -1
  80. package/dist/routes/integration-apps.d.ts +14 -0
  81. package/dist/routes/integration-apps.js +81 -0
  82. package/dist/routes/integration-apps.js.map +1 -0
  83. package/dist/routes/integrations.d.ts +9 -0
  84. package/dist/routes/integrations.js +12 -0
  85. package/dist/routes/integrations.js.map +1 -0
  86. package/dist/routes/llm-proxy.js +26 -3
  87. package/dist/routes/llm-proxy.js.map +1 -1
  88. package/dist/routes/setup.js +53 -38
  89. package/dist/routes/setup.js.map +1 -1
  90. package/dist/routes/system.js +108 -68
  91. package/dist/routes/system.js.map +1 -1
  92. package/dist/routes/webdav.d.ts +1 -1
  93. package/dist/routes/webdav.js +2 -2
  94. package/dist/routes/webdav.js.map +1 -1
  95. package/dist/server.d.ts +6 -0
  96. package/dist/server.js +368 -233
  97. package/dist/server.js.map +1 -1
  98. package/dist/services/app-common/app-compiler.js +186 -0
  99. package/dist/services/app-common/app-compiler.js.map +1 -0
  100. package/dist/services/app-common/app-shared.d.ts +15 -0
  101. package/dist/services/app-common/app-shared.js +64 -0
  102. package/dist/services/app-common/app-shared.js.map +1 -0
  103. package/dist/services/app-common/capability-service.d.ts +45 -0
  104. package/dist/services/app-common/capability-service.js +331 -0
  105. package/dist/services/app-common/capability-service.js.map +1 -0
  106. package/dist/services/app-common/catalog-service.d.ts +59 -0
  107. package/dist/services/app-common/catalog-service.js +318 -0
  108. package/dist/services/app-common/catalog-service.js.map +1 -0
  109. package/dist/services/app-common/create-pipeline.d.ts +26 -0
  110. package/dist/services/app-common/create-pipeline.js +298 -0
  111. package/dist/services/app-common/create-pipeline.js.map +1 -0
  112. package/dist/services/app-common/delete-service.d.ts +5 -0
  113. package/dist/services/app-common/delete-service.js +109 -0
  114. package/dist/services/app-common/delete-service.js.map +1 -0
  115. package/dist/services/app-common/execution-owner.d.ts +23 -0
  116. package/dist/services/app-common/execution-owner.js +124 -0
  117. package/dist/services/app-common/execution-owner.js.map +1 -0
  118. package/dist/services/app-common/execution-service.d.ts +23 -0
  119. package/dist/services/app-common/execution-service.js +105 -0
  120. package/dist/services/app-common/execution-service.js.map +1 -0
  121. package/dist/services/app-common/id-normalizer.d.ts +31 -0
  122. package/dist/services/app-common/id-normalizer.js +83 -0
  123. package/dist/services/app-common/id-normalizer.js.map +1 -0
  124. package/dist/services/app-common/install-store.d.ts +34 -0
  125. package/dist/services/app-common/install-store.js +261 -0
  126. package/dist/services/app-common/install-store.js.map +1 -0
  127. package/dist/services/app-common/instance-store.d.ts +78 -0
  128. package/dist/services/app-common/instance-store.js +498 -0
  129. package/dist/services/app-common/instance-store.js.map +1 -0
  130. package/dist/services/app-common/integration-refs.d.ts +17 -0
  131. package/dist/services/app-common/integration-refs.js +47 -0
  132. package/dist/services/app-common/integration-refs.js.map +1 -0
  133. package/dist/services/app-common/lifecycle-pipeline.d.ts +62 -0
  134. package/dist/services/app-common/lifecycle-pipeline.js +317 -0
  135. package/dist/services/app-common/lifecycle-pipeline.js.map +1 -0
  136. package/dist/services/app-common/lifecycle-scripts.d.ts +38 -0
  137. package/dist/services/app-common/lifecycle-scripts.js +935 -0
  138. package/dist/services/app-common/lifecycle-scripts.js.map +1 -0
  139. package/dist/services/app-common/lifecycle-service.d.ts +68 -0
  140. package/dist/services/app-common/lifecycle-service.js +475 -0
  141. package/dist/services/app-common/lifecycle-service.js.map +1 -0
  142. package/dist/services/app-common/ownership.d.ts +3 -0
  143. package/dist/services/app-common/ownership.js +11 -0
  144. package/dist/services/app-common/ownership.js.map +1 -0
  145. package/dist/services/app-common/paths.d.ts +29 -0
  146. package/dist/services/app-common/paths.js +34 -0
  147. package/dist/services/app-common/paths.js.map +1 -0
  148. package/dist/services/app-common/platform-transform.d.ts +32 -0
  149. package/dist/services/app-common/platform-transform.js +65 -0
  150. package/dist/services/app-common/platform-transform.js.map +1 -0
  151. package/dist/services/app-common/provide-resolver.d.ts +29 -0
  152. package/dist/services/app-common/provide-resolver.js +129 -0
  153. package/dist/services/app-common/provide-resolver.js.map +1 -0
  154. package/dist/services/app-common/remote-spec.d.ts +14 -0
  155. package/dist/services/app-common/remote-spec.js +58 -0
  156. package/dist/services/app-common/remote-spec.js.map +1 -0
  157. package/dist/services/app-common/runtime-builder.d.ts +1 -0
  158. package/dist/services/app-common/runtime-builder.js +2 -0
  159. package/dist/services/app-common/runtime-builder.js.map +1 -0
  160. package/dist/services/app-common/runtime-facts.d.ts +19 -0
  161. package/dist/services/app-common/runtime-facts.js +128 -0
  162. package/dist/services/app-common/runtime-facts.js.map +1 -0
  163. package/dist/services/app-common/service.d.ts +9 -0
  164. package/dist/services/app-common/service.js +10 -0
  165. package/dist/services/app-common/service.js.map +1 -0
  166. package/dist/services/app-common/spec-materializer.d.ts +8 -0
  167. package/dist/services/app-common/spec-materializer.js +295 -0
  168. package/dist/services/app-common/spec-materializer.js.map +1 -0
  169. package/dist/services/app-common/status-refresh.d.ts +33 -0
  170. package/dist/services/app-common/status-refresh.js +771 -0
  171. package/dist/services/app-common/status-refresh.js.map +1 -0
  172. package/dist/services/app-common/task-service.d.ts +29 -0
  173. package/dist/services/app-common/task-service.js +93 -0
  174. package/dist/services/app-common/task-service.js.map +1 -0
  175. package/dist/services/app-common/terminal-session-manager.js +157 -0
  176. package/dist/services/app-common/terminal-session-manager.js.map +1 -0
  177. package/dist/services/app-modules/browserless/routes.d.ts +9 -0
  178. package/dist/services/app-modules/browserless/routes.js +519 -0
  179. package/dist/services/app-modules/browserless/routes.js.map +1 -0
  180. package/dist/services/app-modules/routes.d.ts +2 -0
  181. package/dist/services/app-modules/routes.js +5 -0
  182. package/dist/services/app-modules/routes.js.map +1 -0
  183. package/dist/services/backup/backup-admin.d.ts +95 -0
  184. package/dist/services/backup/backup-admin.js +246 -0
  185. package/dist/services/backup/backup-admin.js.map +1 -0
  186. package/dist/services/backup/backup-manager.d.ts +264 -0
  187. package/dist/services/backup/backup-manager.js +2318 -0
  188. package/dist/services/backup/backup-manager.js.map +1 -0
  189. package/dist/services/backup/backup-verify.js +240 -0
  190. package/dist/services/backup/backup-verify.js.map +1 -0
  191. package/dist/services/capabilities/browser-policy.d.ts +14 -0
  192. package/dist/services/capabilities/browser-policy.js +141 -0
  193. package/dist/services/capabilities/browser-policy.js.map +1 -0
  194. package/dist/services/capabilities/contract.d.ts +49 -0
  195. package/dist/services/capabilities/contract.js +119 -0
  196. package/dist/services/capabilities/contract.js.map +1 -0
  197. package/dist/services/capabilities/endpoint-validator.d.ts +42 -0
  198. package/dist/services/capabilities/endpoint-validator.js +113 -0
  199. package/dist/services/capabilities/endpoint-validator.js.map +1 -0
  200. package/dist/services/capabilities/health.d.ts +16 -0
  201. package/dist/services/capabilities/health.js +121 -0
  202. package/dist/services/capabilities/health.js.map +1 -0
  203. package/dist/services/capabilities/registry.d.ts +56 -0
  204. package/dist/services/capabilities/registry.js +222 -0
  205. package/dist/services/capabilities/registry.js.map +1 -0
  206. package/dist/services/capabilities/sync.d.ts +7 -0
  207. package/dist/services/capabilities/sync.js +223 -0
  208. package/dist/services/capabilities/sync.js.map +1 -0
  209. package/dist/services/capability-proxy/html-rewriters/browserless.d.ts +1 -0
  210. package/dist/services/capability-proxy/html-rewriters/browserless.js +83 -0
  211. package/dist/services/capability-proxy/html-rewriters/browserless.js.map +1 -0
  212. package/dist/services/capability-proxy/html-rewriters/index.d.ts +12 -0
  213. package/dist/services/capability-proxy/html-rewriters/index.js +25 -0
  214. package/dist/services/capability-proxy/html-rewriters/index.js.map +1 -0
  215. package/dist/services/capability-proxy/html-rewriters/jishukb.d.ts +1 -0
  216. package/dist/services/capability-proxy/html-rewriters/jishukb.js +161 -0
  217. package/dist/services/capability-proxy/html-rewriters/jishukb.js.map +1 -0
  218. package/dist/services/capability-proxy/http.d.ts +7 -0
  219. package/dist/services/capability-proxy/http.js +555 -0
  220. package/dist/services/capability-proxy/http.js.map +1 -0
  221. package/dist/services/capability-proxy/terminal.d.ts +4 -0
  222. package/dist/services/capability-proxy/terminal.js +179 -0
  223. package/dist/services/capability-proxy/terminal.js.map +1 -0
  224. package/dist/services/connections/admin.d.ts +80 -0
  225. package/dist/services/connections/admin.js +337 -0
  226. package/dist/services/connections/admin.js.map +1 -0
  227. package/dist/services/connections/apply.d.ts +104 -0
  228. package/dist/services/connections/apply.js +415 -0
  229. package/dist/services/connections/apply.js.map +1 -0
  230. package/dist/services/connections/resolver.d.ts +82 -0
  231. package/dist/services/connections/resolver.js +289 -0
  232. package/dist/services/connections/resolver.js.map +1 -0
  233. package/dist/services/connections/transactor.d.ts +39 -0
  234. package/dist/services/connections/transactor.js +307 -0
  235. package/dist/services/connections/transactor.js.map +1 -0
  236. package/dist/services/files/bootstrap.d.ts +7 -0
  237. package/dist/services/files/bootstrap.js +16 -0
  238. package/dist/services/files/bootstrap.js.map +1 -0
  239. package/dist/services/files/external-mounts.js +187 -0
  240. package/dist/services/files/external-mounts.js.map +1 -0
  241. package/dist/services/files/files-manager.d.ts +265 -0
  242. package/dist/services/files/files-manager.js +1189 -0
  243. package/dist/services/files/files-manager.js.map +1 -0
  244. package/dist/services/files/files-mounts.d.ts +42 -0
  245. package/dist/services/files/files-mounts.js +207 -0
  246. package/dist/services/files/files-mounts.js.map +1 -0
  247. package/dist/services/files/organize/applier.js +218 -0
  248. package/dist/services/files/organize/applier.js.map +1 -0
  249. package/dist/services/files/organize/rules.js +286 -0
  250. package/dist/services/files/organize/rules.js.map +1 -0
  251. package/dist/services/files/organize/scanner.js +366 -0
  252. package/dist/services/files/organize/scanner.js.map +1 -0
  253. package/dist/services/files/organize/store.js +82 -0
  254. package/dist/services/files/organize/store.js.map +1 -0
  255. package/dist/services/files/photos/upload-page.d.ts +2 -0
  256. package/dist/services/files/photos/upload-page.js +248 -0
  257. package/dist/services/files/photos/upload-page.js.map +1 -0
  258. package/dist/services/files/photos/upload-store.d.ts +74 -0
  259. package/dist/services/files/photos/upload-store.js +432 -0
  260. package/dist/services/files/photos/upload-store.js.map +1 -0
  261. package/dist/services/files/webdav/server.d.ts +47 -0
  262. package/dist/services/files/webdav/server.js +329 -0
  263. package/dist/services/files/webdav/server.js.map +1 -0
  264. package/dist/services/files/webdav/xml-builder.js.map +1 -0
  265. package/dist/services/http/proxy-utils.d.ts +7 -0
  266. package/dist/services/http/proxy-utils.js +29 -0
  267. package/dist/services/http/proxy-utils.js.map +1 -0
  268. package/dist/services/http/request-utils.d.ts +3 -0
  269. package/dist/services/http/request-utils.js +23 -0
  270. package/dist/services/http/request-utils.js.map +1 -0
  271. package/dist/services/instances/admin.d.ts +23 -0
  272. package/dist/services/instances/admin.js +218 -0
  273. package/dist/services/instances/admin.js.map +1 -0
  274. package/dist/services/instances/clone.d.ts +26 -0
  275. package/dist/services/instances/clone.js +78 -0
  276. package/dist/services/instances/clone.js.map +1 -0
  277. package/dist/services/instances/config-admin.d.ts +17 -0
  278. package/dist/services/instances/config-admin.js +181 -0
  279. package/dist/services/instances/config-admin.js.map +1 -0
  280. package/dist/services/instances/manager.d.ts +232 -0
  281. package/dist/services/instances/manager.js +1342 -0
  282. package/dist/services/instances/manager.js.map +1 -0
  283. package/dist/services/instances/pairing.d.ts +17 -0
  284. package/dist/services/instances/pairing.js +53 -0
  285. package/dist/services/instances/pairing.js.map +1 -0
  286. package/dist/services/instances/passwords.js +173 -0
  287. package/dist/services/instances/passwords.js.map +1 -0
  288. package/dist/services/instances/status.d.ts +2 -0
  289. package/dist/services/instances/status.js +11 -0
  290. package/dist/services/instances/status.js.map +1 -0
  291. package/dist/services/instances/types.d.ts +21 -0
  292. package/dist/services/instances/types.js +2 -0
  293. package/dist/services/instances/types.js.map +1 -0
  294. package/dist/services/integrations/anythingllm/integration.d.ts +25 -0
  295. package/dist/services/integrations/anythingllm/integration.js +251 -0
  296. package/dist/services/integrations/anythingllm/integration.js.map +1 -0
  297. package/dist/services/integrations/catalog.d.ts +3 -0
  298. package/dist/services/integrations/catalog.js +73 -0
  299. package/dist/services/integrations/catalog.js.map +1 -0
  300. package/dist/services/integrations/custom/integration.d.ts +28 -0
  301. package/dist/services/integrations/custom/integration.js +179 -0
  302. package/dist/services/integrations/custom/integration.js.map +1 -0
  303. package/dist/services/integrations/hermes/integration.d.ts +194 -0
  304. package/dist/services/integrations/hermes/integration.js +1668 -0
  305. package/dist/services/integrations/hermes/integration.js.map +1 -0
  306. package/dist/services/integrations/immich/client.d.ts +93 -0
  307. package/dist/services/integrations/immich/client.js +458 -0
  308. package/dist/services/integrations/immich/client.js.map +1 -0
  309. package/dist/services/integrations/immich/config.d.ts +15 -0
  310. package/dist/services/integrations/immich/config.js +178 -0
  311. package/dist/services/integrations/immich/config.js.map +1 -0
  312. package/dist/services/integrations/immich/discovery.d.ts +9 -0
  313. package/dist/services/integrations/immich/discovery.js +101 -0
  314. package/dist/services/integrations/immich/discovery.js.map +1 -0
  315. package/dist/services/integrations/immich/gallery-renderer.d.ts +5 -0
  316. package/dist/services/integrations/immich/gallery-renderer.js +150 -0
  317. package/dist/services/integrations/immich/gallery-renderer.js.map +1 -0
  318. package/dist/services/integrations/immich/immich-shim.d.ts +11 -0
  319. package/dist/services/integrations/immich/immich-shim.js +439 -0
  320. package/dist/services/integrations/immich/immich-shim.js.map +1 -0
  321. package/dist/services/integrations/immich/integration.d.ts +18 -0
  322. package/dist/services/integrations/immich/integration.js +64 -0
  323. package/dist/services/integrations/immich/integration.js.map +1 -0
  324. package/dist/services/integrations/immich/photo-library.d.ts +4 -0
  325. package/dist/services/integrations/immich/photo-library.js +63 -0
  326. package/dist/services/integrations/immich/photo-library.js.map +1 -0
  327. package/dist/services/integrations/immich/review-executor.d.ts +3 -0
  328. package/dist/services/integrations/immich/review-executor.js +41 -0
  329. package/dist/services/integrations/immich/review-executor.js.map +1 -0
  330. package/dist/services/integrations/immich/review-session-service.d.ts +27 -0
  331. package/dist/services/integrations/immich/review-session-service.js +206 -0
  332. package/dist/services/integrations/immich/review-session-service.js.map +1 -0
  333. package/dist/services/integrations/immich/review-store.d.ts +47 -0
  334. package/dist/services/integrations/immich/review-store.js +347 -0
  335. package/dist/services/integrations/immich/review-store.js.map +1 -0
  336. package/dist/services/integrations/immich/routes.d.ts +7 -0
  337. package/dist/services/integrations/immich/routes.js +363 -0
  338. package/dist/services/integrations/immich/routes.js.map +1 -0
  339. package/dist/services/integrations/immich/types.d.ts +186 -0
  340. package/dist/services/integrations/immich/types.js +2 -0
  341. package/dist/services/integrations/immich/types.js.map +1 -0
  342. package/dist/services/integrations/index.d.ts +41 -0
  343. package/dist/services/integrations/index.js +60 -0
  344. package/dist/services/integrations/index.js.map +1 -0
  345. package/dist/services/integrations/installable/catalog.d.ts +33 -0
  346. package/dist/services/integrations/installable/catalog.js +88 -0
  347. package/dist/services/integrations/installable/catalog.js.map +1 -0
  348. package/dist/services/integrations/installable/index.d.ts +35 -0
  349. package/dist/services/integrations/installable/index.js +170 -0
  350. package/dist/services/integrations/installable/index.js.map +1 -0
  351. package/dist/services/integrations/installable/installers/integration-probes.d.ts +50 -0
  352. package/dist/services/integrations/installable/installers/integration-probes.js +231 -0
  353. package/dist/services/integrations/installable/installers/integration-probes.js.map +1 -0
  354. package/dist/services/integrations/installable/installers/integration.d.ts +30 -0
  355. package/dist/services/integrations/installable/installers/integration.js +283 -0
  356. package/dist/services/integrations/installable/installers/integration.js.map +1 -0
  357. package/dist/services/integrations/installable/installers/registry-probe.js.map +1 -0
  358. package/dist/services/integrations/installable/installers/shell-script.d.ts +46 -0
  359. package/dist/services/integrations/installable/installers/shell-script.js +487 -0
  360. package/dist/services/integrations/installable/installers/shell-script.js.map +1 -0
  361. package/dist/services/integrations/installable/types.d.ts +130 -0
  362. package/dist/services/integrations/installable/types.js +19 -0
  363. package/dist/services/integrations/installable/types.js.map +1 -0
  364. package/dist/services/integrations/jishukb/integration.d.ts +24 -0
  365. package/dist/services/integrations/jishukb/integration.js +300 -0
  366. package/dist/services/integrations/jishukb/integration.js.map +1 -0
  367. package/dist/services/integrations/openclaw/anythingllm-shim.d.ts +46 -0
  368. package/dist/services/integrations/openclaw/anythingllm-shim.js +281 -0
  369. package/dist/services/integrations/openclaw/anythingllm-shim.js.map +1 -0
  370. package/dist/services/integrations/openclaw/drive-shim.js +490 -0
  371. package/dist/services/integrations/openclaw/drive-shim.js.map +1 -0
  372. package/dist/services/integrations/openclaw/integration.d.ts +438 -0
  373. package/dist/services/integrations/openclaw/integration.js +4629 -0
  374. package/dist/services/integrations/openclaw/integration.js.map +1 -0
  375. package/dist/services/integrations/openclaw/jishukb-native-mcp.d.ts +58 -0
  376. package/dist/services/integrations/openclaw/jishukb-native-mcp.js +373 -0
  377. package/dist/services/integrations/openclaw/jishukb-native-mcp.js.map +1 -0
  378. package/dist/services/integrations/openclaw/jishukb-shim.d.ts +52 -0
  379. package/dist/services/integrations/openclaw/jishukb-shim.js +1357 -0
  380. package/dist/services/integrations/openclaw/jishukb-shim.js.map +1 -0
  381. package/dist/services/integrations/openclaw/mcporter-lite.js +276 -0
  382. package/dist/services/integrations/openclaw/mcporter-lite.js.map +1 -0
  383. package/dist/services/integrations/openclaw/mcporter.d.ts +59 -0
  384. package/dist/services/integrations/openclaw/mcporter.js +143 -0
  385. package/dist/services/integrations/openclaw/mcporter.js.map +1 -0
  386. package/dist/services/integrations/openclaw/native-mcp.d.ts +48 -0
  387. package/dist/services/integrations/openclaw/native-mcp.js +125 -0
  388. package/dist/services/integrations/openclaw/native-mcp.js.map +1 -0
  389. package/dist/services/integrations/openclaw/routes.d.ts +21 -0
  390. package/dist/services/integrations/openclaw/routes.js +1194 -0
  391. package/dist/services/integrations/openclaw/routes.js.map +1 -0
  392. package/dist/services/integrations/registry.d.ts +17 -0
  393. package/dist/services/integrations/registry.js +36 -0
  394. package/dist/services/integrations/registry.js.map +1 -0
  395. package/dist/services/integrations/routes.d.ts +2 -0
  396. package/dist/services/integrations/routes.js +9 -0
  397. package/dist/services/integrations/routes.js.map +1 -0
  398. package/dist/services/integrations/types.d.ts +457 -0
  399. package/dist/services/integrations/types.js +2 -0
  400. package/dist/services/integrations/types.js.map +1 -0
  401. package/dist/services/legacy-migrator/classifier.d.ts +44 -0
  402. package/dist/services/legacy-migrator/classifier.js +309 -0
  403. package/dist/services/legacy-migrator/classifier.js.map +1 -0
  404. package/dist/services/legacy-migrator/executor.d.ts +42 -0
  405. package/dist/services/legacy-migrator/executor.js +637 -0
  406. package/dist/services/legacy-migrator/executor.js.map +1 -0
  407. package/dist/services/legacy-migrator/index.d.ts +31 -0
  408. package/dist/services/legacy-migrator/index.js +34 -0
  409. package/dist/services/legacy-migrator/index.js.map +1 -0
  410. package/dist/services/legacy-migrator/planner.d.ts +8 -0
  411. package/dist/services/legacy-migrator/planner.js +154 -0
  412. package/dist/services/legacy-migrator/planner.js.map +1 -0
  413. package/dist/services/legacy-migrator/provider-settings.d.ts +6 -0
  414. package/dist/services/legacy-migrator/provider-settings.js +72 -0
  415. package/dist/services/legacy-migrator/provider-settings.js.map +1 -0
  416. package/dist/services/legacy-migrator/report.d.ts +9 -0
  417. package/dist/services/legacy-migrator/report.js +99 -0
  418. package/dist/services/legacy-migrator/report.js.map +1 -0
  419. package/dist/services/legacy-migrator/scanner.d.ts +13 -0
  420. package/dist/services/legacy-migrator/scanner.js +157 -0
  421. package/dist/services/legacy-migrator/scanner.js.map +1 -0
  422. package/dist/services/legacy-migrator/types.d.ts +97 -0
  423. package/dist/services/legacy-migrator/types.js +23 -0
  424. package/dist/services/legacy-migrator/types.js.map +1 -0
  425. package/dist/services/llm-proxy/instance-proxy.d.ts +17 -1
  426. package/dist/services/llm-proxy/instance-proxy.js +171 -44
  427. package/dist/services/llm-proxy/instance-proxy.js.map +1 -1
  428. package/dist/services/llm-proxy/probe.js +5 -14
  429. package/dist/services/llm-proxy/probe.js.map +1 -1
  430. package/dist/services/llm-proxy/providers.js +23 -31
  431. package/dist/services/llm-proxy/providers.js.map +1 -1
  432. package/dist/services/llm-proxy/ssrf.d.ts +11 -4
  433. package/dist/services/llm-proxy/ssrf.js +45 -7
  434. package/dist/services/llm-proxy/ssrf.js.map +1 -1
  435. package/dist/services/llm-proxy/validate-key.js +16 -37
  436. package/dist/services/llm-proxy/validate-key.js.map +1 -1
  437. package/dist/services/repair/runtime-repair.d.ts +22 -0
  438. package/dist/services/repair/runtime-repair.js +374 -0
  439. package/dist/services/repair/runtime-repair.js.map +1 -0
  440. package/dist/services/runtime/docker-network.d.ts +8 -0
  441. package/dist/services/runtime/docker-network.js +123 -0
  442. package/dist/services/runtime/docker-network.js.map +1 -0
  443. package/dist/services/runtime/driver-registry.d.ts +25 -0
  444. package/dist/services/runtime/driver-registry.js +22 -0
  445. package/dist/services/runtime/driver-registry.js.map +1 -0
  446. package/dist/services/runtime/drivers/nomad.d.ts +261 -0
  447. package/dist/services/runtime/drivers/nomad.js +3122 -0
  448. package/dist/services/runtime/drivers/nomad.js.map +1 -0
  449. package/dist/services/runtime/errors.d.ts +3 -3
  450. package/dist/services/runtime/errors.js +3 -3
  451. package/dist/services/runtime/instance.d.ts +14 -16
  452. package/dist/services/runtime/instance.js +93 -123
  453. package/dist/services/runtime/instance.js.map +1 -1
  454. package/dist/services/runtime/job-id.d.ts +1 -1
  455. package/dist/services/runtime/job-id.js +1 -1
  456. package/dist/services/runtime/mcp-shims/firewall.d.ts +2 -2
  457. package/dist/services/runtime/mcp-shims/firewall.js +2 -2
  458. package/dist/services/runtime/mcp-shims/searxng-shim.d.ts +3 -5
  459. package/dist/services/runtime/mcp-shims/searxng-shim.js +3 -5
  460. package/dist/services/runtime/mcp-shims/searxng-shim.js.map +1 -1
  461. package/dist/services/runtime/mcp-shims/write-mcp-entry.d.ts +20 -20
  462. package/dist/services/runtime/mcp-shims/write-mcp-entry.js +16 -16
  463. package/dist/services/runtime/mcp-shims/write-mcp-entry.js.map +1 -1
  464. package/dist/services/runtime/ownership-marker.d.ts +83 -0
  465. package/dist/services/runtime/ownership-marker.js +109 -0
  466. package/dist/services/runtime/ownership-marker.js.map +1 -0
  467. package/dist/services/runtime/service-manager.d.ts +2 -0
  468. package/dist/services/runtime/service-manager.js +18 -0
  469. package/dist/services/runtime/service-manager.js.map +1 -0
  470. package/dist/services/runtime/types.d.ts +23 -501
  471. package/dist/services/runtime/types.js +0 -12
  472. package/dist/services/runtime/types.js.map +1 -1
  473. package/dist/services/runtime/workload-compiler.d.ts +17 -0
  474. package/dist/services/runtime/workload-compiler.js +550 -0
  475. package/dist/services/runtime/workload-compiler.js.map +1 -0
  476. package/dist/services/runtime/workload-types.d.ts +11 -0
  477. package/dist/services/runtime/workload-types.js +2 -0
  478. package/dist/services/runtime/workload-types.js.map +1 -0
  479. package/dist/services/setup/core-manager.d.ts +50 -0
  480. package/dist/services/setup/core-manager.js +456 -0
  481. package/dist/services/setup/core-manager.js.map +1 -0
  482. package/dist/services/setup/plugin-installer.js +136 -0
  483. package/dist/services/setup/plugin-installer.js.map +1 -0
  484. package/dist/services/setup/setup-manager.d.ts +158 -0
  485. package/dist/services/setup/setup-manager.js +2724 -0
  486. package/dist/services/setup/setup-manager.js.map +1 -0
  487. package/dist/services/system/cli-command.d.ts +5 -0
  488. package/dist/services/system/cli-command.js +18 -0
  489. package/dist/services/system/cli-command.js.map +1 -0
  490. package/dist/services/system/macos-launchd.js +312 -0
  491. package/dist/services/system/macos-launchd.js.map +1 -0
  492. package/dist/services/system/repair-orchestrator.d.ts +71 -0
  493. package/dist/services/system/repair-orchestrator.js +412 -0
  494. package/dist/services/system/repair-orchestrator.js.map +1 -0
  495. package/dist/services/system/runtime-ownership.d.ts +36 -0
  496. package/dist/services/system/runtime-ownership.js +250 -0
  497. package/dist/services/system/runtime-ownership.js.map +1 -0
  498. package/dist/services/system/system-monitor.js +96 -0
  499. package/dist/services/system/system-monitor.js.map +1 -0
  500. package/dist/services/system/system-ollama-provider.d.ts +14 -0
  501. package/dist/services/system/system-ollama-provider.js +129 -0
  502. package/dist/services/system/system-ollama-provider.js.map +1 -0
  503. package/dist/services/system/system-reconciler.d.ts +59 -0
  504. package/dist/services/system/system-reconciler.js +763 -0
  505. package/dist/services/system/system-reconciler.js.map +1 -0
  506. package/dist/services/system/update-manager.d.ts +43 -0
  507. package/dist/services/system/update-manager.js +315 -0
  508. package/dist/services/system/update-manager.js.map +1 -0
  509. package/dist/services/system/upgrade-finalize.d.ts +80 -0
  510. package/dist/services/system/upgrade-finalize.js +507 -0
  511. package/dist/services/system/upgrade-finalize.js.map +1 -0
  512. package/dist/services/tasks/registry.d.ts +44 -0
  513. package/dist/services/tasks/registry.js +90 -0
  514. package/dist/services/tasks/registry.js.map +1 -0
  515. package/dist/services/telemetry/activation.d.ts +6 -2
  516. package/dist/services/telemetry/activation.js +6 -2
  517. package/dist/services/telemetry/activation.js.map +1 -1
  518. package/dist/services/telemetry/heartbeat.d.ts +6 -2
  519. package/dist/services/telemetry/heartbeat.js +6 -2
  520. package/dist/services/telemetry/heartbeat.js.map +1 -1
  521. package/dist/services/workspaces/builder.d.ts +29 -0
  522. package/dist/services/workspaces/builder.js +186 -0
  523. package/dist/services/workspaces/builder.js.map +1 -0
  524. package/dist/types.d.ts +350 -48
  525. package/dist/utils/instance-lock.d.ts +2 -2
  526. package/dist/utils/instance-lock.js +2 -2
  527. package/dist/utils/path-safety.js +1 -1
  528. package/dist/utils/service-user.d.ts +13 -0
  529. package/dist/utils/service-user.js +129 -0
  530. package/dist/utils/service-user.js.map +1 -0
  531. package/install/jishu-install.sh +107 -27
  532. package/install/jishu-uninstall.sh +8 -0
  533. package/install/post-install.sh +162 -185
  534. package/install/post-uninstall.sh +6 -0
  535. package/node_modules/@fastify/static/.github/workflows/ci.yml +1 -1
  536. package/node_modules/@fastify/static/.github/workflows/lock-threads.yml +19 -0
  537. package/node_modules/@fastify/static/LICENSE +1 -3
  538. package/node_modules/@fastify/static/example/server-benchmark.js +39 -0
  539. package/node_modules/@fastify/static/index.js +169 -23
  540. package/node_modules/@fastify/static/lib/dirList.js +20 -6
  541. package/node_modules/@fastify/static/package.json +10 -8
  542. package/node_modules/@fastify/static/test/dir-list.test.js +82 -0
  543. package/node_modules/@fastify/static/test/static.test.js +326 -4
  544. package/node_modules/@fastify/static/types/index.d.ts +0 -4
  545. package/node_modules/@fastify/static/types/index.test-d.ts +1 -1
  546. package/node_modules/brace-expansion/dist/commonjs/index.js +24 -14
  547. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  548. package/node_modules/brace-expansion/dist/esm/index.js +24 -14
  549. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  550. package/node_modules/brace-expansion/package.json +2 -2
  551. package/node_modules/content-disposition/README.md +21 -22
  552. package/node_modules/content-disposition/index.js +122 -44
  553. package/node_modules/content-disposition/package.json +16 -20
  554. package/node_modules/fast-uri/index.js +1 -1
  555. package/node_modules/fast-uri/package.json +1 -1
  556. package/node_modules/fast-uri/test/security.test.js +28 -0
  557. package/node_modules/fastify/SECURITY.md +1 -1
  558. package/node_modules/fastify/SPONSORS.md +6 -4
  559. package/node_modules/fastify/docs/Guides/Database.md +0 -28
  560. package/node_modules/fastify/docs/Guides/Ecosystem.md +13 -2
  561. package/node_modules/fastify/docs/Guides/Serverless.md +2 -2
  562. package/node_modules/fastify/docs/Guides/Write-Plugin.md +1 -1
  563. package/node_modules/fastify/docs/Reference/Encapsulation.md +27 -26
  564. package/node_modules/fastify/docs/Reference/Errors.md +10 -4
  565. package/node_modules/fastify/docs/Reference/HTTP2.md +10 -10
  566. package/node_modules/fastify/docs/Reference/Hooks.md +4 -4
  567. package/node_modules/fastify/docs/Reference/Index.md +14 -16
  568. package/node_modules/fastify/docs/Reference/LTS.md +12 -13
  569. package/node_modules/fastify/docs/Reference/Lifecycle.md +9 -8
  570. package/node_modules/fastify/docs/Reference/Logging.md +44 -39
  571. package/node_modules/fastify/docs/Reference/Middleware.md +21 -25
  572. package/node_modules/fastify/docs/Reference/Principles.md +2 -2
  573. package/node_modules/fastify/docs/Reference/Reply.md +6 -1
  574. package/node_modules/fastify/docs/Reference/Request.md +27 -16
  575. package/node_modules/fastify/docs/Reference/Routes.md +5 -2
  576. package/node_modules/fastify/docs/Reference/Server.md +31 -3
  577. package/node_modules/fastify/docs/Reference/Type-Providers.md +29 -5
  578. package/node_modules/fastify/docs/Reference/Validation-and-Serialization.md +15 -2
  579. package/node_modules/fastify/docs/Reference/Warnings.md +7 -6
  580. package/node_modules/fastify/eslint.config.js +7 -2
  581. package/node_modules/fastify/fastify.d.ts +8 -3
  582. package/node_modules/fastify/fastify.js +43 -14
  583. package/node_modules/fastify/lib/content-type-parser.js +13 -1
  584. package/node_modules/fastify/lib/decorate.js +11 -3
  585. package/node_modules/fastify/lib/error-handler.js +4 -3
  586. package/node_modules/fastify/lib/error-serializer.js +59 -59
  587. package/node_modules/fastify/lib/errors.js +16 -1
  588. package/node_modules/fastify/lib/four-oh-four.js +14 -9
  589. package/node_modules/fastify/lib/handle-request.js +11 -5
  590. package/node_modules/fastify/lib/plugin-override.js +2 -1
  591. package/node_modules/fastify/lib/plugin-utils.js +5 -5
  592. package/node_modules/fastify/lib/reply.js +63 -8
  593. package/node_modules/fastify/lib/request.js +14 -4
  594. package/node_modules/fastify/lib/route.js +20 -6
  595. package/node_modules/fastify/lib/schema-controller.js +1 -1
  596. package/node_modules/fastify/lib/schemas.js +37 -30
  597. package/node_modules/fastify/lib/symbols.js +3 -1
  598. package/node_modules/fastify/lib/validation.js +1 -13
  599. package/node_modules/fastify/lib/warnings.js +3 -3
  600. package/node_modules/fastify/package.json +13 -15
  601. package/node_modules/fastify/scripts/validate-ecosystem-links.js +1 -0
  602. package/node_modules/fastify/test/bundler/esbuild/package.json +1 -1
  603. package/node_modules/fastify/test/close-pipelining.test.js +1 -2
  604. package/node_modules/fastify/test/custom-http-server.test.js +38 -0
  605. package/node_modules/fastify/test/decorator-instance-properties.test.js +63 -0
  606. package/node_modules/fastify/test/diagnostics-channel/async-error-handler.test.js +74 -0
  607. package/node_modules/fastify/test/hooks.test.js +23 -0
  608. package/node_modules/fastify/test/http-methods/get.test.js +1 -1
  609. package/node_modules/fastify/test/http2/plain.test.js +135 -0
  610. package/node_modules/fastify/test/http2/secure-with-fallback.test.js +1 -1
  611. package/node_modules/fastify/test/https/https.test.js +1 -2
  612. package/node_modules/fastify/test/internals/errors.test.js +31 -1
  613. package/node_modules/fastify/test/internals/plugin.test.js +3 -1
  614. package/node_modules/fastify/test/internals/request.test.js +27 -3
  615. package/node_modules/fastify/test/internals/schema-controller-perf.test.js +33 -0
  616. package/node_modules/fastify/test/logger/logging.test.js +18 -1
  617. package/node_modules/fastify/test/logger/options.test.js +38 -1
  618. package/node_modules/fastify/test/reply-error.test.js +1 -1
  619. package/node_modules/fastify/test/reply-trailers.test.js +70 -0
  620. package/node_modules/fastify/test/request-media-type.test.js +105 -0
  621. package/node_modules/fastify/test/route-prefix.test.js +34 -0
  622. package/node_modules/fastify/test/router-options.test.js +222 -11
  623. package/node_modules/fastify/test/schema-serialization.test.js +108 -0
  624. package/node_modules/fastify/test/schema-validation.test.js +24 -0
  625. package/node_modules/fastify/test/scripts/validate-ecosystem-links.test.js +40 -57
  626. package/node_modules/fastify/test/throw.test.js +14 -0
  627. package/node_modules/fastify/test/trust-proxy.test.js +21 -0
  628. package/node_modules/fastify/test/types/content-type-parser.tst.ts +70 -0
  629. package/node_modules/fastify/test/types/decorate-request-reply.tst.ts +18 -0
  630. package/node_modules/fastify/test/types/dummy-plugin.mts +9 -0
  631. package/node_modules/fastify/test/types/errors.tst.ts +91 -0
  632. package/node_modules/fastify/test/types/fastify.tst.ts +351 -0
  633. package/node_modules/fastify/test/types/hooks.tst.ts +578 -0
  634. package/node_modules/fastify/test/types/instance.tst.ts +597 -0
  635. package/node_modules/fastify/test/types/logger.tst.ts +276 -0
  636. package/node_modules/fastify/test/types/plugin.tst.ts +96 -0
  637. package/node_modules/fastify/test/types/register.tst.ts +245 -0
  638. package/node_modules/fastify/test/types/reply.tst.ts +297 -0
  639. package/node_modules/fastify/test/types/request.tst.ts +199 -0
  640. package/node_modules/fastify/test/types/route.tst.ts +576 -0
  641. package/node_modules/fastify/test/types/schema.tst.ts +135 -0
  642. package/node_modules/fastify/test/types/serverFactory.tst.ts +37 -0
  643. package/node_modules/fastify/test/types/tsconfig.json +9 -0
  644. package/node_modules/fastify/test/types/type-provider.tst.ts +1219 -0
  645. package/node_modules/fastify/test/types/using.tst.ts +14 -0
  646. package/node_modules/fastify/types/errors.d.ts +3 -0
  647. package/node_modules/fastify/types/request.d.ts +23 -2
  648. package/node_modules/glob/README.md +39 -130
  649. package/node_modules/glob/dist/commonjs/glob.d.ts +8 -0
  650. package/node_modules/glob/dist/commonjs/glob.d.ts.map +1 -1
  651. package/node_modules/glob/dist/commonjs/glob.js +2 -1
  652. package/node_modules/glob/dist/commonjs/glob.js.map +1 -1
  653. package/node_modules/glob/dist/commonjs/index.min.js +4 -0
  654. package/node_modules/glob/dist/commonjs/index.min.js.map +7 -0
  655. package/node_modules/glob/dist/commonjs/pattern.d.ts +3 -0
  656. package/node_modules/glob/dist/commonjs/pattern.d.ts.map +1 -1
  657. package/node_modules/glob/dist/commonjs/pattern.js +4 -0
  658. package/node_modules/glob/dist/commonjs/pattern.js.map +1 -1
  659. package/node_modules/glob/dist/esm/glob.d.ts +8 -0
  660. package/node_modules/glob/dist/esm/glob.d.ts.map +1 -1
  661. package/node_modules/glob/dist/esm/glob.js +2 -1
  662. package/node_modules/glob/dist/esm/glob.js.map +1 -1
  663. package/node_modules/glob/dist/esm/index.min.js +4 -0
  664. package/node_modules/glob/dist/esm/index.min.js.map +7 -0
  665. package/node_modules/glob/dist/esm/pattern.d.ts +3 -0
  666. package/node_modules/glob/dist/esm/pattern.d.ts.map +1 -1
  667. package/node_modules/glob/dist/esm/pattern.js +4 -0
  668. package/node_modules/glob/dist/esm/pattern.js.map +1 -1
  669. package/node_modules/glob/package.json +38 -37
  670. package/node_modules/jishushell-panel/README.md +4 -4
  671. package/node_modules/jishushell-panel/output/dist/server.js +17 -6
  672. package/node_modules/jishushell-panel/output/dist/server.js.map +1 -1
  673. package/node_modules/jishushell-panel/output/public/assets/ApiKeyField-Ce5d1xna.js +1 -0
  674. package/node_modules/jishushell-panel/output/public/assets/Dashboard-BXame3yg.js +1 -0
  675. package/node_modules/jishushell-panel/output/public/assets/HermesChatPanel-BHZtPCJd.js +1 -0
  676. package/node_modules/jishushell-panel/output/public/assets/HermesConfigForm-CB3GbNX9.js +4 -0
  677. package/node_modules/jishushell-panel/output/public/assets/InitPassword-Boab9F6g.js +1 -0
  678. package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-DrIWCqo-.js +14 -0
  679. package/node_modules/jishushell-panel/output/public/assets/Login-CzpOkNau.js +1 -0
  680. package/node_modules/jishushell-panel/output/public/assets/NewInstance-CANXyCcL.js +1 -0
  681. package/node_modules/jishushell-panel/output/public/assets/ProviderRecommendations-BABo9VOC.js +1 -0
  682. package/node_modules/jishushell-panel/output/public/assets/Settings-CKp5XxFh.js +1 -0
  683. package/node_modules/jishushell-panel/output/public/assets/Setup-C7xVDPow.js +1 -0
  684. package/node_modules/jishushell-panel/output/public/assets/WeixinLoginPanel-B765Xz4C.js +1 -0
  685. package/node_modules/jishushell-panel/output/public/assets/api-C70Gt678.js +4 -0
  686. package/node_modules/jishushell-panel/output/public/assets/index-Bs6DSbiR.js +23 -0
  687. package/node_modules/jishushell-panel/output/public/assets/index-DnnqTf7s.css +1 -0
  688. package/node_modules/jishushell-panel/output/public/assets/registry-sWIZsIEF.js +2 -0
  689. package/node_modules/jishushell-panel/output/public/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  690. package/node_modules/jishushell-panel/output/public/assets/setup-task-q21GnI0E.js +1 -0
  691. package/node_modules/jishushell-panel/output/public/assets/usePolling-D4IDOQd_.js +1 -0
  692. package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-Df8aUdv8.js +1 -0
  693. package/node_modules/jishushell-panel/output/public/assets/vendor-react-0L0rjmYG.js +8 -0
  694. package/node_modules/jishushell-panel/output/public/index.html +6 -4
  695. package/node_modules/jishushell-panel/package.json +2 -2
  696. package/node_modules/semver/classes/range.js +17 -4
  697. package/node_modules/semver/package.json +2 -2
  698. package/package.json +12 -64
  699. package/scripts/check-app-path-boundaries.mjs +121 -0
  700. package/scripts/check-app-spec.mjs +123 -29
  701. package/scripts/check-architecture-boundaries.mjs +178 -0
  702. package/scripts/check-colima-launchd.mjs +10 -8
  703. package/scripts/check-integration-isolation.ts +541 -0
  704. package/scripts/check-new-file-tests.mjs +11 -3
  705. package/scripts/check-open-core-boundaries.mjs +60 -10
  706. package/scripts/check-test-layering.sh +1 -1
  707. package/scripts/fixtures/instances/hermes-sample/instance.json +3 -2
  708. package/scripts/fixtures/instances/legacy-openclaw-sample/instance.json +1 -1
  709. package/scripts/local-web-upgrade-test.README +4 -3
  710. package/scripts/local-web-upgrade-test.example.env +2 -2
  711. package/scripts/local-web-upgrade-test.sh +14 -1
  712. package/scripts/pack-gui-and-send-pi.sh +43 -0
  713. package/scripts/perf/instances.js +1 -1
  714. package/scripts/prune-open-core-dist.mjs +89 -2
  715. package/scripts/smoke/hermes-bootstrap.sh +5 -5
  716. package/templates/hermes-entrypoint.sh +19 -29
  717. package/apps/openwebui-container.yaml +0 -97
  718. package/apps/playwright-container.yaml +0 -126
  719. package/dependencies/jishushell-panel-0.6.5.tgz +0 -0
  720. package/dist/crypto-shim.d.ts +0 -1
  721. package/dist/crypto-shim.js +0 -2
  722. package/dist/crypto-shim.js.map +0 -1
  723. package/dist/routes/agent-apps.d.ts +0 -14
  724. package/dist/routes/agent-apps.js +0 -77
  725. package/dist/routes/agent-apps.js.map +0 -1
  726. package/dist/routes/internal.d.ts +0 -2
  727. package/dist/routes/internal.js +0 -55
  728. package/dist/routes/internal.js.map +0 -1
  729. package/dist/routes/openclaw-routes.d.ts +0 -22
  730. package/dist/routes/openclaw-routes.js +0 -1020
  731. package/dist/routes/openclaw-routes.js.map +0 -1
  732. package/dist/routes/runtime.d.ts +0 -15
  733. package/dist/routes/runtime.js +0 -76
  734. package/dist/routes/runtime.js.map +0 -1
  735. package/dist/services/agent-apps/catalog.d.ts +0 -33
  736. package/dist/services/agent-apps/catalog.js +0 -88
  737. package/dist/services/agent-apps/catalog.js.map +0 -1
  738. package/dist/services/agent-apps/index.d.ts +0 -36
  739. package/dist/services/agent-apps/index.js +0 -171
  740. package/dist/services/agent-apps/index.js.map +0 -1
  741. package/dist/services/agent-apps/installers/adapter-probes.d.ts +0 -49
  742. package/dist/services/agent-apps/installers/adapter-probes.js +0 -230
  743. package/dist/services/agent-apps/installers/adapter-probes.js.map +0 -1
  744. package/dist/services/agent-apps/installers/adapter.d.ts +0 -30
  745. package/dist/services/agent-apps/installers/adapter.js +0 -171
  746. package/dist/services/agent-apps/installers/adapter.js.map +0 -1
  747. package/dist/services/agent-apps/installers/registry-probe.js.map +0 -1
  748. package/dist/services/agent-apps/installers/shell-script.d.ts +0 -47
  749. package/dist/services/agent-apps/installers/shell-script.js +0 -488
  750. package/dist/services/agent-apps/installers/shell-script.js.map +0 -1
  751. package/dist/services/agent-apps/types.d.ts +0 -128
  752. package/dist/services/agent-apps/types.js +0 -17
  753. package/dist/services/agent-apps/types.js.map +0 -1
  754. package/dist/services/app/app-compiler.js +0 -185
  755. package/dist/services/app/app-compiler.js.map +0 -1
  756. package/dist/services/app/app-manager.d.ts +0 -184
  757. package/dist/services/app/app-manager.js +0 -2933
  758. package/dist/services/app/app-manager.js.map +0 -1
  759. package/dist/services/app/custom-manager.d.ts +0 -27
  760. package/dist/services/app/custom-manager.js +0 -382
  761. package/dist/services/app/custom-manager.js.map +0 -1
  762. package/dist/services/app/hermes-agent-manager.d.ts +0 -20
  763. package/dist/services/app/hermes-agent-manager.js +0 -299
  764. package/dist/services/app/hermes-agent-manager.js.map +0 -1
  765. package/dist/services/app/id-normalizer.d.ts +0 -27
  766. package/dist/services/app/id-normalizer.js +0 -77
  767. package/dist/services/app/id-normalizer.js.map +0 -1
  768. package/dist/services/app/ollama-manager.d.ts +0 -18
  769. package/dist/services/app/ollama-manager.js +0 -224
  770. package/dist/services/app/ollama-manager.js.map +0 -1
  771. package/dist/services/app/openclaw-manager.d.ts +0 -63
  772. package/dist/services/app/openclaw-manager.js +0 -1215
  773. package/dist/services/app/openclaw-manager.js.map +0 -1
  774. package/dist/services/app/paths.d.ts +0 -27
  775. package/dist/services/app/paths.js +0 -40
  776. package/dist/services/app/paths.js.map +0 -1
  777. package/dist/services/app/platform-transform.d.ts +0 -32
  778. package/dist/services/app/platform-transform.js +0 -65
  779. package/dist/services/app/platform-transform.js.map +0 -1
  780. package/dist/services/app/provide-resolver.d.ts +0 -29
  781. package/dist/services/app/provide-resolver.js +0 -135
  782. package/dist/services/app/provide-resolver.js.map +0 -1
  783. package/dist/services/app/registry.d.ts +0 -17
  784. package/dist/services/app/registry.js +0 -31
  785. package/dist/services/app/registry.js.map +0 -1
  786. package/dist/services/app/remote-spec.d.ts +0 -14
  787. package/dist/services/app/remote-spec.js +0 -58
  788. package/dist/services/app/remote-spec.js.map +0 -1
  789. package/dist/services/app/terminal-session-manager.js +0 -157
  790. package/dist/services/app/terminal-session-manager.js.map +0 -1
  791. package/dist/services/app/types.d.ts +0 -74
  792. package/dist/services/app/types.js +0 -16
  793. package/dist/services/app/types.js.map +0 -1
  794. package/dist/services/app-config-admin.d.ts +0 -17
  795. package/dist/services/app-config-admin.js +0 -177
  796. package/dist/services/app-config-admin.js.map +0 -1
  797. package/dist/services/app-create-from-installed.d.ts +0 -23
  798. package/dist/services/app-create-from-installed.js +0 -75
  799. package/dist/services/app-create-from-installed.js.map +0 -1
  800. package/dist/services/app-passwords.js +0 -173
  801. package/dist/services/app-passwords.js.map +0 -1
  802. package/dist/services/backup-admin.d.ts +0 -101
  803. package/dist/services/backup-admin.js +0 -259
  804. package/dist/services/backup-admin.js.map +0 -1
  805. package/dist/services/backup-manager.d.ts +0 -264
  806. package/dist/services/backup-manager.js +0 -2263
  807. package/dist/services/backup-manager.js.map +0 -1
  808. package/dist/services/backup-verify.js +0 -240
  809. package/dist/services/backup-verify.js.map +0 -1
  810. package/dist/services/capability-endpoint-validator.d.ts +0 -41
  811. package/dist/services/capability-endpoint-validator.js +0 -114
  812. package/dist/services/capability-endpoint-validator.js.map +0 -1
  813. package/dist/services/capability-health.d.ts +0 -16
  814. package/dist/services/capability-health.js +0 -121
  815. package/dist/services/capability-health.js.map +0 -1
  816. package/dist/services/capability-registry.d.ts +0 -29
  817. package/dist/services/capability-registry.js +0 -176
  818. package/dist/services/capability-registry.js.map +0 -1
  819. package/dist/services/capability-sync.d.ts +0 -4
  820. package/dist/services/capability-sync.js +0 -220
  821. package/dist/services/capability-sync.js.map +0 -1
  822. package/dist/services/connection-admin.d.ts +0 -74
  823. package/dist/services/connection-admin.js +0 -287
  824. package/dist/services/connection-admin.js.map +0 -1
  825. package/dist/services/connection-apply.d.ts +0 -91
  826. package/dist/services/connection-apply.js +0 -471
  827. package/dist/services/connection-apply.js.map +0 -1
  828. package/dist/services/connection-resolver.d.ts +0 -65
  829. package/dist/services/connection-resolver.js +0 -281
  830. package/dist/services/connection-resolver.js.map +0 -1
  831. package/dist/services/connection-transactor.d.ts +0 -39
  832. package/dist/services/connection-transactor.js +0 -354
  833. package/dist/services/connection-transactor.js.map +0 -1
  834. package/dist/services/core-manager.d.ts +0 -50
  835. package/dist/services/core-manager.js +0 -411
  836. package/dist/services/core-manager.js.map +0 -1
  837. package/dist/services/external-mounts.js +0 -187
  838. package/dist/services/external-mounts.js.map +0 -1
  839. package/dist/services/files-manager.d.ts +0 -252
  840. package/dist/services/files-manager.js +0 -1156
  841. package/dist/services/files-manager.js.map +0 -1
  842. package/dist/services/files-mounts.d.ts +0 -42
  843. package/dist/services/files-mounts.js +0 -207
  844. package/dist/services/files-mounts.js.map +0 -1
  845. package/dist/services/instance-admin.d.ts +0 -26
  846. package/dist/services/instance-admin.js +0 -218
  847. package/dist/services/instance-admin.js.map +0 -1
  848. package/dist/services/instance-manager.d.ts +0 -192
  849. package/dist/services/instance-manager.js +0 -1289
  850. package/dist/services/instance-manager.js.map +0 -1
  851. package/dist/services/macos-launchd.js +0 -312
  852. package/dist/services/macos-launchd.js.map +0 -1
  853. package/dist/services/nomad-manager.d.ts +0 -307
  854. package/dist/services/nomad-manager.js +0 -3958
  855. package/dist/services/nomad-manager.js.map +0 -1
  856. package/dist/services/organize/applier.js +0 -218
  857. package/dist/services/organize/applier.js.map +0 -1
  858. package/dist/services/organize/rules.js +0 -286
  859. package/dist/services/organize/rules.js.map +0 -1
  860. package/dist/services/organize/scanner.js +0 -366
  861. package/dist/services/organize/scanner.js.map +0 -1
  862. package/dist/services/organize/store.js +0 -82
  863. package/dist/services/organize/store.js.map +0 -1
  864. package/dist/services/plugin-installer.js +0 -128
  865. package/dist/services/plugin-installer.js.map +0 -1
  866. package/dist/services/process-manager.d.ts +0 -25
  867. package/dist/services/process-manager.js +0 -568
  868. package/dist/services/process-manager.js.map +0 -1
  869. package/dist/services/runtime/adapters/custom.d.ts +0 -20
  870. package/dist/services/runtime/adapters/custom.js +0 -188
  871. package/dist/services/runtime/adapters/custom.js.map +0 -1
  872. package/dist/services/runtime/adapters/hermes.d.ts +0 -204
  873. package/dist/services/runtime/adapters/hermes.js +0 -1684
  874. package/dist/services/runtime/adapters/hermes.js.map +0 -1
  875. package/dist/services/runtime/adapters/openclaw-mcporter.d.ts +0 -45
  876. package/dist/services/runtime/adapters/openclaw-mcporter.js +0 -108
  877. package/dist/services/runtime/adapters/openclaw-mcporter.js.map +0 -1
  878. package/dist/services/runtime/adapters/openclaw.d.ts +0 -426
  879. package/dist/services/runtime/adapters/openclaw.js +0 -3975
  880. package/dist/services/runtime/adapters/openclaw.js.map +0 -1
  881. package/dist/services/runtime/index.d.ts +0 -34
  882. package/dist/services/runtime/index.js +0 -51
  883. package/dist/services/runtime/index.js.map +0 -1
  884. package/dist/services/runtime/mcp-shims/anythingllm-shim.d.ts +0 -46
  885. package/dist/services/runtime/mcp-shims/anythingllm-shim.js +0 -281
  886. package/dist/services/runtime/mcp-shims/anythingllm-shim.js.map +0 -1
  887. package/dist/services/runtime/mcp-shims/drive-shim.js +0 -490
  888. package/dist/services/runtime/mcp-shims/drive-shim.js.map +0 -1
  889. package/dist/services/runtime/mcp-shims/jishukb-shim.d.ts +0 -48
  890. package/dist/services/runtime/mcp-shims/jishukb-shim.js +0 -723
  891. package/dist/services/runtime/mcp-shims/jishukb-shim.js.map +0 -1
  892. package/dist/services/runtime/mcp-shims/mcporter-lite.js +0 -276
  893. package/dist/services/runtime/mcp-shims/mcporter-lite.js.map +0 -1
  894. package/dist/services/runtime/migrations.d.ts +0 -23
  895. package/dist/services/runtime/migrations.js +0 -125
  896. package/dist/services/runtime/migrations.js.map +0 -1
  897. package/dist/services/runtime/registry.d.ts +0 -13
  898. package/dist/services/runtime/registry.js +0 -32
  899. package/dist/services/runtime/registry.js.map +0 -1
  900. package/dist/services/runtime-identity.d.ts +0 -13
  901. package/dist/services/runtime-identity.js +0 -166
  902. package/dist/services/runtime-identity.js.map +0 -1
  903. package/dist/services/runtime-repair.d.ts +0 -52
  904. package/dist/services/runtime-repair.js +0 -352
  905. package/dist/services/runtime-repair.js.map +0 -1
  906. package/dist/services/setup-manager.d.ts +0 -158
  907. package/dist/services/setup-manager.js +0 -2740
  908. package/dist/services/setup-manager.js.map +0 -1
  909. package/dist/services/suggestions.d.ts +0 -27
  910. package/dist/services/suggestions.js +0 -133
  911. package/dist/services/suggestions.js.map +0 -1
  912. package/dist/services/system-monitor.js +0 -79
  913. package/dist/services/system-monitor.js.map +0 -1
  914. package/dist/services/system-ollama-provider.d.ts +0 -14
  915. package/dist/services/system-ollama-provider.js +0 -125
  916. package/dist/services/system-ollama-provider.js.map +0 -1
  917. package/dist/services/system-reconciler.d.ts +0 -72
  918. package/dist/services/system-reconciler.js +0 -600
  919. package/dist/services/system-reconciler.js.map +0 -1
  920. package/dist/services/task-registry.d.ts +0 -44
  921. package/dist/services/task-registry.js +0 -76
  922. package/dist/services/task-registry.js.map +0 -1
  923. package/dist/services/types-shim.d.ts +0 -16
  924. package/dist/services/types-shim.js +0 -2
  925. package/dist/services/types-shim.js.map +0 -1
  926. package/dist/services/update-manager.d.ts +0 -47
  927. package/dist/services/update-manager.js +0 -351
  928. package/dist/services/update-manager.js.map +0 -1
  929. package/dist/services/webdav/server.d.ts +0 -24
  930. package/dist/services/webdav/server.js +0 -420
  931. package/dist/services/webdav/server.js.map +0 -1
  932. package/dist/services/webdav/xml-builder.js.map +0 -1
  933. package/dist/services/workspace-builder.d.ts +0 -29
  934. package/dist/services/workspace-builder.js +0 -188
  935. package/dist/services/workspace-builder.js.map +0 -1
  936. package/node_modules/@fastify/static/.github/stale.yml +0 -21
  937. package/node_modules/@isaacs/cliui/LICENSE.md +0 -63
  938. package/node_modules/@isaacs/cliui/README.md +0 -151
  939. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.d.ts +0 -4
  940. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.d.ts.map +0 -1
  941. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.js +0 -16
  942. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.js.map +0 -1
  943. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.d.ts +0 -34
  944. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.d.ts.map +0 -1
  945. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.js +0 -170
  946. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.js.map +0 -1
  947. package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.d.ts +0 -6
  948. package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.d.ts.map +0 -1
  949. package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.js +0 -307
  950. package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.js.map +0 -1
  951. package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.d.ts +0 -2
  952. package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.d.ts.map +0 -1
  953. package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.js +0 -7
  954. package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.js.map +0 -1
  955. package/node_modules/@isaacs/cliui/dist/commonjs/index.d.ts +0 -41
  956. package/node_modules/@isaacs/cliui/dist/commonjs/index.d.ts.map +0 -1
  957. package/node_modules/@isaacs/cliui/dist/commonjs/index.js +0 -322
  958. package/node_modules/@isaacs/cliui/dist/commonjs/index.js.map +0 -1
  959. package/node_modules/@isaacs/cliui/dist/commonjs/index.min.js +0 -12
  960. package/node_modules/@isaacs/cliui/dist/commonjs/index.min.js.map +0 -7
  961. package/node_modules/@isaacs/cliui/dist/commonjs/package.json +0 -3
  962. package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.d.ts +0 -5
  963. package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.d.ts.map +0 -1
  964. package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.js +0 -49
  965. package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.js.map +0 -1
  966. package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.d.ts +0 -2
  967. package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.d.ts.map +0 -1
  968. package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.js +0 -8
  969. package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.js.map +0 -1
  970. package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.d.ts +0 -7
  971. package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.d.ts.map +0 -1
  972. package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.js +0 -176
  973. package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.js.map +0 -1
  974. package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.d.ts +0 -4
  975. package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.d.ts.map +0 -1
  976. package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.js +0 -12
  977. package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.js.map +0 -1
  978. package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.d.ts +0 -34
  979. package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.d.ts.map +0 -1
  980. package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.js +0 -167
  981. package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.js.map +0 -1
  982. package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.d.ts +0 -6
  983. package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.d.ts.map +0 -1
  984. package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.js +0 -299
  985. package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.js.map +0 -1
  986. package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.d.ts +0 -2
  987. package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.d.ts.map +0 -1
  988. package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.js +0 -3
  989. package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.js.map +0 -1
  990. package/node_modules/@isaacs/cliui/dist/esm/index.d.ts +0 -41
  991. package/node_modules/@isaacs/cliui/dist/esm/index.d.ts.map +0 -1
  992. package/node_modules/@isaacs/cliui/dist/esm/index.js +0 -317
  993. package/node_modules/@isaacs/cliui/dist/esm/index.js.map +0 -1
  994. package/node_modules/@isaacs/cliui/dist/esm/index.min.js +0 -12
  995. package/node_modules/@isaacs/cliui/dist/esm/index.min.js.map +0 -7
  996. package/node_modules/@isaacs/cliui/dist/esm/package.json +0 -3
  997. package/node_modules/@isaacs/cliui/dist/esm/string-width/index.d.ts +0 -5
  998. package/node_modules/@isaacs/cliui/dist/esm/string-width/index.d.ts.map +0 -1
  999. package/node_modules/@isaacs/cliui/dist/esm/string-width/index.js +0 -46
  1000. package/node_modules/@isaacs/cliui/dist/esm/string-width/index.js.map +0 -1
  1001. package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.d.ts +0 -2
  1002. package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.d.ts.map +0 -1
  1003. package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.js +0 -4
  1004. package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.js.map +0 -1
  1005. package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.d.ts +0 -7
  1006. package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.d.ts.map +0 -1
  1007. package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.js +0 -172
  1008. package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.js.map +0 -1
  1009. package/node_modules/@isaacs/cliui/package.json +0 -163
  1010. package/node_modules/content-disposition/HISTORY.md +0 -60
  1011. package/node_modules/cross-spawn/LICENSE +0 -21
  1012. package/node_modules/cross-spawn/README.md +0 -89
  1013. package/node_modules/cross-spawn/index.js +0 -39
  1014. package/node_modules/cross-spawn/lib/enoent.js +0 -59
  1015. package/node_modules/cross-spawn/lib/parse.js +0 -91
  1016. package/node_modules/cross-spawn/lib/util/escape.js +0 -47
  1017. package/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  1018. package/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  1019. package/node_modules/cross-spawn/package.json +0 -73
  1020. package/node_modules/fastify/test/types/content-type-parser.test-d.ts +0 -72
  1021. package/node_modules/fastify/test/types/decorate-request-reply.test-d.ts +0 -18
  1022. package/node_modules/fastify/test/types/dummy-plugin.ts +0 -9
  1023. package/node_modules/fastify/test/types/errors.test-d.ts +0 -90
  1024. package/node_modules/fastify/test/types/fastify.test-d.ts +0 -352
  1025. package/node_modules/fastify/test/types/hooks.test-d.ts +0 -550
  1026. package/node_modules/fastify/test/types/import.ts +0 -2
  1027. package/node_modules/fastify/test/types/instance.test-d.ts +0 -588
  1028. package/node_modules/fastify/test/types/logger.test-d.ts +0 -277
  1029. package/node_modules/fastify/test/types/plugin.test-d.ts +0 -97
  1030. package/node_modules/fastify/test/types/register.test-d.ts +0 -237
  1031. package/node_modules/fastify/test/types/reply.test-d.ts +0 -254
  1032. package/node_modules/fastify/test/types/request.test-d.ts +0 -188
  1033. package/node_modules/fastify/test/types/route.test-d.ts +0 -553
  1034. package/node_modules/fastify/test/types/schema.test-d.ts +0 -135
  1035. package/node_modules/fastify/test/types/serverFactory.test-d.ts +0 -37
  1036. package/node_modules/fastify/test/types/type-provider.test-d.ts +0 -1213
  1037. package/node_modules/fastify/test/types/using.test-d.ts +0 -17
  1038. package/node_modules/foreground-child/LICENSE +0 -15
  1039. package/node_modules/foreground-child/README.md +0 -128
  1040. package/node_modules/foreground-child/dist/commonjs/all-signals.d.ts +0 -2
  1041. package/node_modules/foreground-child/dist/commonjs/all-signals.d.ts.map +0 -1
  1042. package/node_modules/foreground-child/dist/commonjs/all-signals.js +0 -58
  1043. package/node_modules/foreground-child/dist/commonjs/all-signals.js.map +0 -1
  1044. package/node_modules/foreground-child/dist/commonjs/index.d.ts +0 -58
  1045. package/node_modules/foreground-child/dist/commonjs/index.d.ts.map +0 -1
  1046. package/node_modules/foreground-child/dist/commonjs/index.js +0 -123
  1047. package/node_modules/foreground-child/dist/commonjs/index.js.map +0 -1
  1048. package/node_modules/foreground-child/dist/commonjs/package.json +0 -3
  1049. package/node_modules/foreground-child/dist/commonjs/proxy-signals.d.ts +0 -6
  1050. package/node_modules/foreground-child/dist/commonjs/proxy-signals.d.ts.map +0 -1
  1051. package/node_modules/foreground-child/dist/commonjs/proxy-signals.js +0 -38
  1052. package/node_modules/foreground-child/dist/commonjs/proxy-signals.js.map +0 -1
  1053. package/node_modules/foreground-child/dist/commonjs/watchdog.d.ts +0 -10
  1054. package/node_modules/foreground-child/dist/commonjs/watchdog.d.ts.map +0 -1
  1055. package/node_modules/foreground-child/dist/commonjs/watchdog.js +0 -50
  1056. package/node_modules/foreground-child/dist/commonjs/watchdog.js.map +0 -1
  1057. package/node_modules/foreground-child/dist/esm/all-signals.d.ts +0 -2
  1058. package/node_modules/foreground-child/dist/esm/all-signals.d.ts.map +0 -1
  1059. package/node_modules/foreground-child/dist/esm/all-signals.js +0 -52
  1060. package/node_modules/foreground-child/dist/esm/all-signals.js.map +0 -1
  1061. package/node_modules/foreground-child/dist/esm/index.d.ts +0 -58
  1062. package/node_modules/foreground-child/dist/esm/index.d.ts.map +0 -1
  1063. package/node_modules/foreground-child/dist/esm/index.js +0 -115
  1064. package/node_modules/foreground-child/dist/esm/index.js.map +0 -1
  1065. package/node_modules/foreground-child/dist/esm/package.json +0 -3
  1066. package/node_modules/foreground-child/dist/esm/proxy-signals.d.ts +0 -6
  1067. package/node_modules/foreground-child/dist/esm/proxy-signals.d.ts.map +0 -1
  1068. package/node_modules/foreground-child/dist/esm/proxy-signals.js +0 -34
  1069. package/node_modules/foreground-child/dist/esm/proxy-signals.js.map +0 -1
  1070. package/node_modules/foreground-child/dist/esm/watchdog.d.ts +0 -10
  1071. package/node_modules/foreground-child/dist/esm/watchdog.d.ts.map +0 -1
  1072. package/node_modules/foreground-child/dist/esm/watchdog.js +0 -46
  1073. package/node_modules/foreground-child/dist/esm/watchdog.js.map +0 -1
  1074. package/node_modules/foreground-child/package.json +0 -106
  1075. package/node_modules/glob/dist/esm/bin.d.mts +0 -3
  1076. package/node_modules/glob/dist/esm/bin.d.mts.map +0 -1
  1077. package/node_modules/glob/dist/esm/bin.mjs +0 -346
  1078. package/node_modules/glob/dist/esm/bin.mjs.map +0 -1
  1079. package/node_modules/isexe/.npmignore +0 -2
  1080. package/node_modules/isexe/LICENSE +0 -15
  1081. package/node_modules/isexe/README.md +0 -51
  1082. package/node_modules/isexe/index.js +0 -57
  1083. package/node_modules/isexe/mode.js +0 -41
  1084. package/node_modules/isexe/package.json +0 -31
  1085. package/node_modules/isexe/test/basic.js +0 -221
  1086. package/node_modules/isexe/windows.js +0 -42
  1087. package/node_modules/jackspeak/LICENSE.md +0 -55
  1088. package/node_modules/jackspeak/README.md +0 -394
  1089. package/node_modules/jackspeak/dist/commonjs/index.d.ts +0 -323
  1090. package/node_modules/jackspeak/dist/commonjs/index.d.ts.map +0 -1
  1091. package/node_modules/jackspeak/dist/commonjs/index.js +0 -944
  1092. package/node_modules/jackspeak/dist/commonjs/index.js.map +0 -1
  1093. package/node_modules/jackspeak/dist/commonjs/index.min.js +0 -33
  1094. package/node_modules/jackspeak/dist/commonjs/index.min.js.map +0 -7
  1095. package/node_modules/jackspeak/dist/commonjs/package.json +0 -3
  1096. package/node_modules/jackspeak/dist/esm/index.d.ts +0 -323
  1097. package/node_modules/jackspeak/dist/esm/index.d.ts.map +0 -1
  1098. package/node_modules/jackspeak/dist/esm/index.js +0 -936
  1099. package/node_modules/jackspeak/dist/esm/index.js.map +0 -1
  1100. package/node_modules/jackspeak/dist/esm/index.min.js +0 -33
  1101. package/node_modules/jackspeak/dist/esm/index.min.js.map +0 -7
  1102. package/node_modules/jackspeak/dist/esm/package.json +0 -3
  1103. package/node_modules/jackspeak/package.json +0 -115
  1104. package/node_modules/jishushell-panel/output/public/assets/ApiKeyField-D1i7zWXR.js +0 -1
  1105. package/node_modules/jishushell-panel/output/public/assets/Dashboard-sWIvL43F.js +0 -1
  1106. package/node_modules/jishushell-panel/output/public/assets/HermesChatPanel-DQ8RyvQY.js +0 -1
  1107. package/node_modules/jishushell-panel/output/public/assets/HermesConfigForm-tIbPP1sB.js +0 -4
  1108. package/node_modules/jishushell-panel/output/public/assets/InitPassword-C3Slq3Dd.js +0 -1
  1109. package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-7JqY9tq4.js +0 -92
  1110. package/node_modules/jishushell-panel/output/public/assets/Login-BXLDJlQN.js +0 -1
  1111. package/node_modules/jishushell-panel/output/public/assets/NewInstance-dLc5Xrpx.js +0 -1
  1112. package/node_modules/jishushell-panel/output/public/assets/ProviderRecommendations-DIAXxesl.js +0 -1
  1113. package/node_modules/jishushell-panel/output/public/assets/Settings-Bd5utbBh.js +0 -1
  1114. package/node_modules/jishushell-panel/output/public/assets/Setup-Yn9_20FL.js +0 -1
  1115. package/node_modules/jishushell-panel/output/public/assets/WeixinLoginPanel-C21doQTJ.js +0 -9
  1116. package/node_modules/jishushell-panel/output/public/assets/index-CCkaIEjn.js +0 -20
  1117. package/node_modules/jishushell-panel/output/public/assets/index-D7qxy-Vh.css +0 -1
  1118. package/node_modules/jishushell-panel/output/public/assets/registry-B2ZQZXWL.js +0 -2
  1119. package/node_modules/jishushell-panel/output/public/assets/usePolling-BFZm4do_.js +0 -1
  1120. package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-DqPtOicc.js +0 -9
  1121. package/node_modules/jishushell-panel/output/public/assets/vendor-react-DW5juQin.js +0 -59
  1122. package/node_modules/package-json-from-dist/LICENSE.md +0 -63
  1123. package/node_modules/package-json-from-dist/README.md +0 -110
  1124. package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts +0 -89
  1125. package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts.map +0 -1
  1126. package/node_modules/package-json-from-dist/dist/commonjs/index.js +0 -134
  1127. package/node_modules/package-json-from-dist/dist/commonjs/index.js.map +0 -1
  1128. package/node_modules/package-json-from-dist/dist/commonjs/package.json +0 -3
  1129. package/node_modules/package-json-from-dist/dist/esm/index.d.ts +0 -89
  1130. package/node_modules/package-json-from-dist/dist/esm/index.d.ts.map +0 -1
  1131. package/node_modules/package-json-from-dist/dist/esm/index.js +0 -129
  1132. package/node_modules/package-json-from-dist/dist/esm/index.js.map +0 -1
  1133. package/node_modules/package-json-from-dist/dist/esm/package.json +0 -3
  1134. package/node_modules/package-json-from-dist/package.json +0 -68
  1135. package/node_modules/path-key/index.d.ts +0 -40
  1136. package/node_modules/path-key/index.js +0 -16
  1137. package/node_modules/path-key/license +0 -9
  1138. package/node_modules/path-key/package.json +0 -39
  1139. package/node_modules/path-key/readme.md +0 -61
  1140. package/node_modules/safe-buffer/LICENSE +0 -21
  1141. package/node_modules/safe-buffer/README.md +0 -584
  1142. package/node_modules/safe-buffer/index.d.ts +0 -187
  1143. package/node_modules/safe-buffer/index.js +0 -65
  1144. package/node_modules/safe-buffer/package.json +0 -51
  1145. package/node_modules/shebang-command/index.js +0 -19
  1146. package/node_modules/shebang-command/license +0 -9
  1147. package/node_modules/shebang-command/package.json +0 -34
  1148. package/node_modules/shebang-command/readme.md +0 -34
  1149. package/node_modules/shebang-regex/index.d.ts +0 -22
  1150. package/node_modules/shebang-regex/index.js +0 -2
  1151. package/node_modules/shebang-regex/license +0 -9
  1152. package/node_modules/shebang-regex/package.json +0 -35
  1153. package/node_modules/shebang-regex/readme.md +0 -33
  1154. package/node_modules/signal-exit/LICENSE.txt +0 -16
  1155. package/node_modules/signal-exit/README.md +0 -74
  1156. package/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -12
  1157. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -1
  1158. package/node_modules/signal-exit/dist/cjs/browser.js +0 -10
  1159. package/node_modules/signal-exit/dist/cjs/browser.js.map +0 -1
  1160. package/node_modules/signal-exit/dist/cjs/index.d.ts +0 -48
  1161. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -1
  1162. package/node_modules/signal-exit/dist/cjs/index.js +0 -279
  1163. package/node_modules/signal-exit/dist/cjs/index.js.map +0 -1
  1164. package/node_modules/signal-exit/dist/cjs/package.json +0 -3
  1165. package/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -29
  1166. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -1
  1167. package/node_modules/signal-exit/dist/cjs/signals.js +0 -42
  1168. package/node_modules/signal-exit/dist/cjs/signals.js.map +0 -1
  1169. package/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -12
  1170. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -1
  1171. package/node_modules/signal-exit/dist/mjs/browser.js +0 -4
  1172. package/node_modules/signal-exit/dist/mjs/browser.js.map +0 -1
  1173. package/node_modules/signal-exit/dist/mjs/index.d.ts +0 -48
  1174. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -1
  1175. package/node_modules/signal-exit/dist/mjs/index.js +0 -275
  1176. package/node_modules/signal-exit/dist/mjs/index.js.map +0 -1
  1177. package/node_modules/signal-exit/dist/mjs/package.json +0 -3
  1178. package/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -29
  1179. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -1
  1180. package/node_modules/signal-exit/dist/mjs/signals.js +0 -39
  1181. package/node_modules/signal-exit/dist/mjs/signals.js.map +0 -1
  1182. package/node_modules/signal-exit/package.json +0 -106
  1183. package/node_modules/which/CHANGELOG.md +0 -166
  1184. package/node_modules/which/LICENSE +0 -15
  1185. package/node_modules/which/README.md +0 -54
  1186. package/node_modules/which/bin/node-which +0 -52
  1187. package/node_modules/which/package.json +0 -43
  1188. package/node_modules/which/which.js +0 -125
  1189. package/scripts/check-adapter-isolation.ts +0 -293
  1190. /package/dist/services/{app → app-common}/app-compiler.d.ts +0 -0
  1191. /package/dist/services/{app → app-common}/terminal-session-manager.d.ts +0 -0
  1192. /package/dist/services/{backup-verify.d.ts → backup/backup-verify.d.ts} +0 -0
  1193. /package/dist/services/{external-mounts.d.ts → files/external-mounts.d.ts} +0 -0
  1194. /package/dist/services/{organize → files/organize}/applier.d.ts +0 -0
  1195. /package/dist/services/{organize → files/organize}/rules.d.ts +0 -0
  1196. /package/dist/services/{organize → files/organize}/scanner.d.ts +0 -0
  1197. /package/dist/services/{organize → files/organize}/store.d.ts +0 -0
  1198. /package/dist/services/{webdav → files/webdav}/xml-builder.d.ts +0 -0
  1199. /package/dist/services/{webdav → files/webdav}/xml-builder.js +0 -0
  1200. /package/dist/services/{app-passwords.d.ts → instances/passwords.d.ts} +0 -0
  1201. /package/dist/services/{agent-apps → integrations/installable}/installers/registry-probe.d.ts +0 -0
  1202. /package/dist/services/{agent-apps → integrations/installable}/installers/registry-probe.js +0 -0
  1203. /package/dist/services/{runtime/mcp-shims → integrations/openclaw}/drive-shim.d.ts +0 -0
  1204. /package/dist/services/{runtime/mcp-shims → integrations/openclaw}/mcporter-lite.d.ts +0 -0
  1205. /package/dist/services/{plugin-installer.d.ts → setup/plugin-installer.d.ts} +0 -0
  1206. /package/dist/services/{macos-launchd.d.ts → system/macos-launchd.d.ts} +0 -0
  1207. /package/dist/services/{system-monitor.d.ts → system/system-monitor.d.ts} +0 -0
@@ -0,0 +1,1357 @@
1
+ /**
2
+ * JishuShell-KB MCP shim — exposes the user's installed jishu-kb as a
3
+ * typed MCP toolset for OpenClaw.
4
+ *
5
+ * Why a shim, not direct MCP:
6
+ * jishu-kb speaks HTTP REST (`/api/kb/*`, `/api/admin/*`, `handbook.md`),
7
+ * not MCP. This shim translates a narrow tool surface into those REST calls
8
+ * and returns model-friendly text blocks or JSON summaries.
9
+ *
10
+ * Scope intentionally stays typed and bounded:
11
+ * - Read/search: list KBs, search, list documents, read handbook, read
12
+ * document metadata/source/chunks/FAQ, inspect ingest jobs, and read
13
+ * sanitized config/capabilities
14
+ * - Write: create KBs, upload documents, import URLs, retry jobs, and
15
+ * reindex documents in a chosen KB
16
+ * - Dangerous delete/cancel/reindex operations require explicit confirmation arguments
17
+ * - No raw admin/provider passthrough: secrets and arbitrary provider edits
18
+ * remain outside the agent surface
19
+ *
20
+ * Wiring: the OpenClaw integration writes this shim into
21
+ * `__mcp_shims__/jishukb/jishukb-shim.js` per instance and registers it under
22
+ * the stable `kb` server name.
23
+ *
24
+ * Non-secret config (baseUrl + default kbId + allowed upload roots) is baked into the
25
+ * source by `substituteJishukbShimPlaceholders` because OpenClaw scrubs env
26
+ * when spawning MCP subprocesses.
27
+ *
28
+ * Stdio framing: NDJSON JSON-RPC 2.0 (MCP standard). Pure Node builtins, no
29
+ * npm install needed inside the runtime image.
30
+ */
31
+ export const JISHUKB_MCP_SHIM_VERSION = "0.3.0";
32
+ /** Default topK when the caller doesn't specify one. Mirrors the manifest
33
+ * `JISHU_KB_TOPK` default so the agent and the backend agree on page size. */
34
+ export const JISHUKB_DEFAULT_TOPK = 6;
35
+ /** Per-request upstream timeout. */
36
+ export const JISHUKB_FETCH_TIMEOUT_MS = 60_000;
37
+ /** Soft guard for upload memory use. */
38
+ export const JISHUKB_MAX_UPLOAD_BYTES = 30 * 1024 * 1024;
39
+ /** Soft guard for text returned through MCP. */
40
+ export const JISHUKB_MAX_TEXT_RESPONSE_CHARS = 12_000;
41
+ export const JISHUKB_MCP_SHIM_SOURCE = `#!/usr/bin/env node
42
+ // jishushell-jishukb-shim — generated, do not edit by hand.
43
+ // Source: src/services/integrations/openclaw/jishukb-shim.ts
44
+
45
+ const BASE_URL_LIT = "__JS_BASE_URL__";
46
+ const KB_ID_LIT = "__JS_KB_ID__";
47
+ const ALLOWED_UPLOAD_ROOTS_LIT = "__JS_ALLOWED_UPLOAD_ROOTS__";
48
+
49
+ const fs = require("node:fs");
50
+ const path = require("node:path");
51
+ const { TextDecoder } = require("node:util");
52
+
53
+ const BASE_URL = (BASE_URL_LIT.startsWith("__JS_") ? (process.env.JISHUKB_BASE_URL || "") : BASE_URL_LIT).replace(/\\/+$/, "");
54
+ const KB_ID = KB_ID_LIT.startsWith("__JS_") ? trimString(process.env.JISHUKB_KB_ID || "") : trimString(KB_ID_LIT);
55
+ const ALLOWED_UPLOAD_ROOTS = (
56
+ ALLOWED_UPLOAD_ROOTS_LIT.startsWith("__JS_")
57
+ ? JSON.parse(process.env.JISHUKB_ALLOWED_UPLOAD_ROOTS || "[]")
58
+ : JSON.parse(ALLOWED_UPLOAD_ROOTS_LIT)
59
+ ).map((value) => path.resolve(String(value)));
60
+ const DEFAULT_TOPK = ${JISHUKB_DEFAULT_TOPK};
61
+ const FETCH_TIMEOUT = ${JISHUKB_FETCH_TIMEOUT_MS};
62
+ const MAX_UPLOAD_BYTES = ${JISHUKB_MAX_UPLOAD_BYTES};
63
+ const MAX_TEXT_RESPONSE_CHARS = ${JISHUKB_MAX_TEXT_RESPONSE_CHARS};
64
+ const OPEN_UPLOAD_FLAGS = fs.constants.O_RDONLY
65
+ | (typeof fs.constants.O_NOFOLLOW === "number" ? fs.constants.O_NOFOLLOW : 0)
66
+ | (typeof fs.constants.O_NONBLOCK === "number" ? fs.constants.O_NONBLOCK : 0);
67
+
68
+ function envCheck() {
69
+ if (!BASE_URL) {
70
+ throw new Error("jishukb-shim: missing env: JISHUKB_BASE_URL");
71
+ }
72
+ }
73
+
74
+ function trimString(raw) {
75
+ if (typeof raw === "string") return raw.trim();
76
+ if (typeof raw === "number" || typeof raw === "boolean") return String(raw).trim();
77
+ return "";
78
+ }
79
+
80
+ function jsonText(value) {
81
+ return JSON.stringify(value, null, 2);
82
+ }
83
+
84
+ function clampTopK(raw) {
85
+ const n = Number(raw);
86
+ if (!Number.isFinite(n)) return DEFAULT_TOPK;
87
+ const i = Math.floor(n);
88
+ if (i < 1) return 1;
89
+ if (i > 20) return 20;
90
+ return i;
91
+ }
92
+
93
+ function defaultKbId(raw, toolName) {
94
+ const kbId = trimString(raw) || KB_ID;
95
+ if (!kbId) {
96
+ throw new Error(toolName + ": missing 'kbId' argument and no default KB is configured");
97
+ }
98
+ return kbId;
99
+ }
100
+
101
+ function requireKbId(raw, toolName) {
102
+ const kbId = trimString(raw);
103
+ if (!kbId) throw new Error(toolName + ": missing 'kbId' argument");
104
+ return kbId;
105
+ }
106
+
107
+ function requireConfirm(actual, expected, toolName, fieldName) {
108
+ if (trimString(actual) !== expected) {
109
+ throw new Error(toolName + ": confirmation field '" + fieldName + "' must exactly match '" + expected + "'");
110
+ }
111
+ }
112
+
113
+ function assertUploadRootsConfigured() {
114
+ if (!Array.isArray(ALLOWED_UPLOAD_ROOTS) || ALLOWED_UPLOAD_ROOTS.length === 0) {
115
+ throw new Error("jishukb-shim: missing configured upload roots");
116
+ }
117
+ }
118
+
119
+ function sameInode(left, right) {
120
+ return !!left && !!right && left.dev === right.dev && left.ino === right.ino;
121
+ }
122
+
123
+ function assertStableUploadRead(opened, buf) {
124
+ const afterStat = fs.fstatSync(opened.fd);
125
+ if (!sameInode(opened.stat, afterStat)) {
126
+ throw new Error("kb_upload: file changed during read");
127
+ }
128
+ if (afterStat.size !== opened.stat.size || buf.length !== opened.stat.size) {
129
+ throw new Error("kb_upload: file size changed during read");
130
+ }
131
+ if (buf.length > MAX_UPLOAD_BYTES) {
132
+ throw new Error("kb_upload: file exceeds soft limit of " + MAX_UPLOAD_BYTES + " bytes");
133
+ }
134
+ }
135
+
136
+ function readBoundedUploadBuffer(fd, size) {
137
+ if (!Number.isSafeInteger(size) || size < 0) {
138
+ throw new Error("kb_upload: invalid file size");
139
+ }
140
+ const buf = Buffer.alloc(size);
141
+ let offset = 0;
142
+ while (offset < size) {
143
+ const bytesRead = fs.readSync(fd, buf, offset, size - offset, offset);
144
+ if (bytesRead === 0) break;
145
+ offset += bytesRead;
146
+ }
147
+ return offset === size ? buf : buf.subarray(0, offset);
148
+ }
149
+
150
+ function findAllowedUploadRoot(absPath) {
151
+ for (const root of ALLOWED_UPLOAD_ROOTS) {
152
+ if (absPath === root || absPath.startsWith(root + path.sep)) {
153
+ return root;
154
+ }
155
+ }
156
+ return null;
157
+ }
158
+
159
+ function sanitizeBaseUrl(raw) {
160
+ const value = trimString(raw);
161
+ if (!value) return null;
162
+ try {
163
+ const parsed = new URL(value);
164
+ parsed.username = "";
165
+ parsed.password = "";
166
+ parsed.search = "";
167
+ parsed.hash = "";
168
+ return parsed.toString();
169
+ } catch {
170
+ return null;
171
+ }
172
+ }
173
+
174
+ function openUploadFile(absPath) {
175
+ assertUploadRootsConfigured();
176
+ const input = trimString(absPath);
177
+ if (!input) throw new Error("kb_upload: missing 'path' argument");
178
+ if (!path.isAbsolute(input)) throw new Error("kb_upload: path must be absolute");
179
+ const normalized = path.resolve(input);
180
+ const lexicalRoot = findAllowedUploadRoot(normalized);
181
+ if (!lexicalRoot) {
182
+ throw new Error("kb_upload: path must stay under this instance's mounted files roots");
183
+ }
184
+ let fd;
185
+ try {
186
+ fd = fs.openSync(normalized, OPEN_UPLOAD_FLAGS);
187
+ } catch (error) {
188
+ if (error && (error.code === "ENOENT" || error.code === "ENOTDIR")) {
189
+ throw new Error("kb_upload: file not found: " + normalized);
190
+ }
191
+ if (error && (error.code === "ELOOP" || error.code === "EMLINK")) {
192
+ throw new Error("kb_upload: symlink targets are not allowed");
193
+ }
194
+ throw error;
195
+ }
196
+ try {
197
+ const realRoot = fs.realpathSync(lexicalRoot);
198
+ const realPath = fs.realpathSync(normalized);
199
+ if (!(realPath === realRoot || realPath.startsWith(realRoot + path.sep))) {
200
+ throw new Error("kb_upload: resolved path escapes this instance's mounted files roots");
201
+ }
202
+ const stat = fs.fstatSync(fd);
203
+ if (!stat.isFile()) throw new Error("kb_upload: not a regular file: " + realPath);
204
+ if (stat.nlink > 1) {
205
+ throw new Error("kb_upload: files with multiple hard links are not allowed");
206
+ }
207
+ if (stat.size > MAX_UPLOAD_BYTES) {
208
+ throw new Error("kb_upload: file exceeds soft limit of " + MAX_UPLOAD_BYTES + " bytes");
209
+ }
210
+ const pathStat = fs.statSync(realPath);
211
+ if (!sameInode(stat, pathStat)) {
212
+ throw new Error("kb_upload: file changed during validation");
213
+ }
214
+ return { absPath: realPath, stat, fd };
215
+ } catch (error) {
216
+ fs.closeSync(fd);
217
+ throw error;
218
+ }
219
+ }
220
+
221
+ async function fetchWithTimeout(toolName, relativePath, options) {
222
+ envCheck();
223
+ const ctrl = new AbortController();
224
+ const timer = setTimeout(() => ctrl.abort(), FETCH_TIMEOUT);
225
+ try {
226
+ return await fetch(BASE_URL + relativePath, {
227
+ ...options,
228
+ signal: ctrl.signal,
229
+ });
230
+ } catch (e) {
231
+ if (e && e.name === "AbortError") {
232
+ throw new Error(toolName + ": upstream timeout after " + Math.round(FETCH_TIMEOUT / 1000) + "s");
233
+ }
234
+ throw e;
235
+ } finally {
236
+ clearTimeout(timer);
237
+ }
238
+ }
239
+
240
+ async function readJson(toolName, relativePath, options) {
241
+ const res = await fetchWithTimeout(toolName, relativePath, options);
242
+ if (!res.ok) {
243
+ const txt = await res.text();
244
+ throw new Error(toolName + ": upstream " + res.status + ": " + txt.slice(0, 400));
245
+ }
246
+ return await res.json();
247
+ }
248
+
249
+ async function readText(toolName, relativePath, options) {
250
+ const res = await fetchWithTimeout(toolName, relativePath, options);
251
+ if (!res.ok) {
252
+ const txt = await res.text();
253
+ throw new Error(toolName + ": upstream " + res.status + ": " + txt.slice(0, 400));
254
+ }
255
+ return await res.text();
256
+ }
257
+
258
+ function cappedText(raw, maxChars) {
259
+ const text = String(raw ?? "");
260
+ if (text.length <= maxChars) {
261
+ return { text, truncated: false, characters: text.length };
262
+ }
263
+ return {
264
+ text: text.slice(0, Math.max(0, maxChars - 1)) + "…",
265
+ truncated: true,
266
+ characters: text.length,
267
+ };
268
+ }
269
+
270
+ function optionalString(raw) {
271
+ const value = trimString(raw);
272
+ return value || null;
273
+ }
274
+
275
+ function positiveInt(raw, fallback, max) {
276
+ const n = Number(raw);
277
+ if (!Number.isFinite(n)) return fallback;
278
+ const i = Math.floor(n);
279
+ if (i < 1) return fallback;
280
+ return Math.min(i, max);
281
+ }
282
+
283
+ function boolWithDefault(raw, fallback) {
284
+ if (raw === undefined || raw === null || raw === "") return fallback;
285
+ if (typeof raw === "boolean") return raw;
286
+ const text = trimString(raw).toLowerCase();
287
+ if (["1", "true", "yes", "y"].includes(text)) return true;
288
+ if (["0", "false", "no", "n"].includes(text)) return false;
289
+ return fallback;
290
+ }
291
+
292
+ function appendOptionalQuery(qs, key, value) {
293
+ const text = trimString(value);
294
+ if (text) qs.set(key, text);
295
+ }
296
+
297
+ function encodePathPart(value) {
298
+ return encodeURIComponent(value);
299
+ }
300
+
301
+ function normalizeBacklinks(raw) {
302
+ return Array.isArray(raw) ? raw : [];
303
+ }
304
+
305
+ function normalizeDocument(item, kbId) {
306
+ const doc = item && typeof item === "object" ? item : {};
307
+ return {
308
+ id: doc.id || null,
309
+ kbId: doc.kb_id || doc.kbId || kbId || null,
310
+ title: doc.title || null,
311
+ relPath: doc.rel_path || doc.relPath || null,
312
+ mime: doc.mime || null,
313
+ sha256: doc.sha256 || null,
314
+ bytes: doc.bytes ?? null,
315
+ status: doc.status || null,
316
+ createdAt: doc.created_at ?? doc.createdAt ?? null,
317
+ origin: doc.origin || null,
318
+ sourcePath: doc.source_path || doc.sourcePath || null,
319
+ sourceUrl: doc.source_url || doc.sourceUrl || null,
320
+ batchId: doc.batch_id || doc.batchId || null,
321
+ clientItemId: doc.client_item_id || doc.clientItemId || null,
322
+ externalAssetId: doc.external_asset_id || doc.externalAssetId || null,
323
+ backlinks: normalizeBacklinks(doc.backlinks),
324
+ chunkCount: doc.chunkCount ?? null,
325
+ faqCount: doc.faqCount ?? null,
326
+ jobCount: doc.jobCount ?? null,
327
+ };
328
+ }
329
+
330
+ function normalizeJob(item, kbId) {
331
+ const job = item && typeof item === "object" ? item : {};
332
+ return {
333
+ id: job.id || null,
334
+ docId: job.docId || job.doc_id || null,
335
+ kbId: job.kbId || job.kb_id || kbId || null,
336
+ filename: job.filename || null,
337
+ relPath: job.relPath || job.rel_path || null,
338
+ mime: job.mime || null,
339
+ sha256: job.sha256 || null,
340
+ bytes: job.bytes ?? null,
341
+ status: job.status || null,
342
+ stage: job.stage || null,
343
+ progressCurrent: job.progressCurrent ?? job.progress_current ?? null,
344
+ progressTotal: job.progressTotal ?? job.progress_total ?? null,
345
+ attempts: job.attempts ?? null,
346
+ error: job.error || null,
347
+ createdAt: job.createdAt ?? job.created_at ?? null,
348
+ updatedAt: job.updatedAt ?? job.updated_at ?? null,
349
+ origin: job.origin || null,
350
+ sourcePath: job.sourcePath || job.source_path || null,
351
+ sourceUrl: job.sourceUrl || job.source_url || null,
352
+ batchId: job.batchId || job.batch_id || null,
353
+ clientItemId: job.clientItemId || job.client_item_id || null,
354
+ externalAssetId: job.externalAssetId || job.external_asset_id || null,
355
+ };
356
+ }
357
+
358
+ function documentArrayFromPayload(payload) {
359
+ if (Array.isArray(payload)) return payload;
360
+ if (payload && Array.isArray(payload.documents)) return payload.documents;
361
+ if (payload && Array.isArray(payload.items)) return payload.items;
362
+ return null;
363
+ }
364
+
365
+ function jobArrayFromPayload(payload) {
366
+ if (Array.isArray(payload)) return payload;
367
+ if (payload && Array.isArray(payload.jobs)) return payload.jobs;
368
+ if (payload && Array.isArray(payload.items)) return payload.items;
369
+ return null;
370
+ }
371
+
372
+ function mediaType(raw) {
373
+ return trimString(raw).toLowerCase().split(";")[0].trim();
374
+ }
375
+
376
+ function isTextLikeContentType(raw) {
377
+ const type = mediaType(raw);
378
+ if (!type) return false;
379
+ if (type.startsWith("text/")) return true;
380
+ return [
381
+ "application/ecmascript",
382
+ "application/javascript",
383
+ "application/json",
384
+ "application/sql",
385
+ "application/toml",
386
+ "application/x-ndjson",
387
+ "application/x-yaml",
388
+ "application/xhtml+xml",
389
+ "application/xml",
390
+ "application/yaml",
391
+ ].includes(type) || type.endsWith("+json") || type.endsWith("+xml");
392
+ }
393
+
394
+ function contentLengthOf(headers) {
395
+ const raw = trimString(headers?.get?.("content-length"));
396
+ if (!raw) return null;
397
+ const n = Number(raw);
398
+ return Number.isFinite(n) && n >= 0 ? n : null;
399
+ }
400
+
401
+ async function readBoundedTextResponse(toolName, res, maxChars) {
402
+ const contentType = res.headers.get("content-type") || "";
403
+ const contentDisposition = res.headers.get("content-disposition") || null;
404
+ const contentLength = contentLengthOf(res.headers);
405
+ if (!isTextLikeContentType(contentType)) {
406
+ try { await res.body?.cancel?.(); } catch { /* ignore cleanup errors */ }
407
+ throw new Error(
408
+ toolName + ": raw document is not text-like" +
409
+ " (contentType=" + (contentType || "unknown") +
410
+ (contentLength != null ? ", contentLength=" + contentLength : "") +
411
+ (contentDisposition ? ", contentDisposition=" + contentDisposition : "") +
412
+ "). Use kb_get_document for metadata; binary originals should be opened through the file surface.",
413
+ );
414
+ }
415
+ if (!res.body || typeof res.body.getReader !== "function") {
416
+ throw new Error(toolName + ": upstream response does not support bounded streaming");
417
+ }
418
+ const reader = res.body.getReader();
419
+ const decoder = new TextDecoder("utf-8", { fatal: false });
420
+ let text = "";
421
+ let bytesRead = 0;
422
+ let truncated = false;
423
+ try {
424
+ while (text.length <= maxChars) {
425
+ const chunk = await reader.read();
426
+ if (chunk.done) break;
427
+ const value = chunk.value || new Uint8Array();
428
+ bytesRead += value.byteLength || 0;
429
+ text += decoder.decode(value, { stream: true });
430
+ if (text.length > maxChars) {
431
+ truncated = true;
432
+ try { await reader.cancel(); } catch { /* ignore cleanup errors */ }
433
+ break;
434
+ }
435
+ }
436
+ if (!truncated) {
437
+ text += decoder.decode();
438
+ if (text.length > maxChars) {
439
+ truncated = true;
440
+ }
441
+ }
442
+ } finally {
443
+ try { reader.releaseLock?.(); } catch { /* ignore cleanup errors */ }
444
+ }
445
+ if (truncated) {
446
+ text = text.slice(0, Math.max(0, maxChars - 1)) + "…";
447
+ }
448
+ return {
449
+ text,
450
+ truncated,
451
+ characters: text.length,
452
+ bytesRead,
453
+ contentLength,
454
+ };
455
+ }
456
+
457
+ function normalizeChunksResponse(payload) {
458
+ const j = payload && typeof payload === "object" ? payload : {};
459
+ const rawChunks = Array.isArray(j.chunks) ? j.chunks
460
+ : Array.isArray(j.citations) ? j.citations
461
+ : Array.isArray(j.results) ? j.results
462
+ : Array.isArray(j.hits) ? j.hits
463
+ : [];
464
+ return rawChunks.map((raw, idx) => {
465
+ const item = raw && typeof raw === "object" ? raw : { text: String(raw ?? "") };
466
+ const src = item.source && typeof item.source === "object" ? item.source : {};
467
+ const title = src.title
468
+ || src.filename
469
+ || src.docId
470
+ || item.docTitle
471
+ || item.filename
472
+ || item.docId
473
+ || src.url
474
+ || item.url
475
+ || ("chunk#" + (idx + 1));
476
+ return {
477
+ ...item,
478
+ source: {
479
+ ...src,
480
+ title,
481
+ },
482
+ text: item.text || item.content || item.chunk || item.context || "",
483
+ score: item.score != null ? item.score : item.relevanceScore,
484
+ };
485
+ });
486
+ }
487
+
488
+ function fmtChunk(c, idx) {
489
+ const src = c.source || {};
490
+ const title = src.title || src.filename || src.docId || src.url || ("chunk#" + (idx + 1));
491
+ const scoreStr = c.score != null && Number.isFinite(Number(c.score))
492
+ ? " [score " + Number(c.score).toFixed(3) + "]"
493
+ : "";
494
+ const body = (c.text || c.content || c.chunk || "").toString();
495
+ const capped = body.length > 1200 ? body.slice(0, 1200) + "…" : body;
496
+ return "[" + (idx + 1) + "] " + title + scoreStr + "\\n" + capped;
497
+ }
498
+
499
+ function fmtSearchResult(chunks) {
500
+ if (!chunks.length) return "(no results)";
501
+ return chunks.map(fmtChunk).join("\\n\\n");
502
+ }
503
+
504
+ function normalizeHeading(text) {
505
+ return trimString(text).toLowerCase().replace(/\\s+/g, " ");
506
+ }
507
+
508
+ function extractMarkdownSection(markdown, section) {
509
+ const headingRe = /^(#{1,6})\\s+(.+)$/gm;
510
+ const headings = [];
511
+ let match;
512
+ while ((match = headingRe.exec(markdown)) !== null) {
513
+ headings.push({
514
+ level: match[1].length,
515
+ title: trimString(match[2]),
516
+ index: match.index,
517
+ });
518
+ }
519
+ const wanted = normalizeHeading(section);
520
+ const idx = headings.findIndex((h) => normalizeHeading(h.title) === wanted);
521
+ if (idx < 0) {
522
+ return {
523
+ found: false,
524
+ headings: headings.map((h) => h.title),
525
+ };
526
+ }
527
+ const current = headings[idx];
528
+ let end = markdown.length;
529
+ for (let i = idx + 1; i < headings.length; i++) {
530
+ if (headings[i].level <= current.level) {
531
+ end = headings[i].index;
532
+ break;
533
+ }
534
+ }
535
+ return {
536
+ found: true,
537
+ headings: headings.map((h) => h.title),
538
+ text: markdown.slice(current.index, end).trim(),
539
+ };
540
+ }
541
+
542
+ function sanitizeConfig(config) {
543
+ const cfg = config && typeof config === "object" ? config : {};
544
+ const generation = cfg.generation && typeof cfg.generation === "object" ? cfg.generation : {};
545
+ const retrieval = cfg.retrieval && typeof cfg.retrieval === "object" ? cfg.retrieval : {};
546
+ const embed = cfg.embed && typeof cfg.embed === "object" ? cfg.embed : {};
547
+ const rerank = cfg.rerank && typeof cfg.rerank === "object" ? cfg.rerank : {};
548
+ return {
549
+ version: cfg.version || null,
550
+ defaultKbId: KB_ID || null,
551
+ answerableGate: !!cfg.answerableGate,
552
+ dataDir: cfg.dataDir || null,
553
+ retrieval: {
554
+ topK: retrieval.topK ?? null,
555
+ candidatePool: retrieval.candidatePool ?? null,
556
+ rerankPool: retrieval.rerankPool ?? null,
557
+ rejectThreshold: retrieval.rejectThreshold ?? null,
558
+ chunkMode: retrieval.chunkMode || null,
559
+ parentChunkChars: retrieval.parentChunkChars ?? null,
560
+ childChunkChars: retrieval.childChunkChars ?? null,
561
+ },
562
+ embed: {
563
+ backend: embed.backend || null,
564
+ model: embed.model || null,
565
+ dim: embed.dim ?? null,
566
+ ollamaModel: embed.ollamaModel || null,
567
+ },
568
+ rerank: {
569
+ enabled: !!rerank.enabled,
570
+ external: !!rerank.external,
571
+ model: rerank.model || null,
572
+ },
573
+ generation: {
574
+ configured: !!(generation.baseUrl || generation.model || generation.apiKey),
575
+ baseUrl: sanitizeBaseUrl(generation.baseUrl),
576
+ model: generation.model || null,
577
+ apiKeyConfigured: !!generation.apiKey,
578
+ },
579
+ };
580
+ }
581
+
582
+ async function kbList() {
583
+ const payload = await readJson("kb_list", "/api/kb");
584
+ if (!Array.isArray(payload)) {
585
+ throw new Error("kb_list: upstream returned a non-array payload");
586
+ }
587
+ const rows = await Promise.all(payload.map(async (item) => {
588
+ const id = trimString(item?.id);
589
+ const row = {
590
+ id: id || null,
591
+ name: item?.name || null,
592
+ description: item?.description ?? null,
593
+ chunks: item?.chunks ?? null,
594
+ documents: item?.documents ?? item?.docCount ?? item?.documentCount ?? null,
595
+ createdAt: item?.created_at ?? null,
596
+ usable: false,
597
+ unavailableReason: null,
598
+ };
599
+ if (!id) {
600
+ row.unavailableReason = "missing id";
601
+ return row;
602
+ }
603
+ try {
604
+ const res = await fetchWithTimeout(
605
+ "kb_list",
606
+ "/api/kb/" + encodeURIComponent(id) + "/documents",
607
+ { headers: { Accept: "application/json" } },
608
+ );
609
+ if (res.ok) {
610
+ const docs = await res.json();
611
+ const docRows = documentArrayFromPayload(docs);
612
+ if (docRows) {
613
+ row.documents = docRows.length;
614
+ }
615
+ row.usable = true;
616
+ return row;
617
+ }
618
+ const txt = await res.text();
619
+ row.unavailableReason = "documents endpoint " + res.status + (txt ? ": " + txt.slice(0, 160) : "");
620
+ return row;
621
+ } catch (e) {
622
+ row.unavailableReason = e && e.message ? e.message : String(e);
623
+ return row;
624
+ }
625
+ }));
626
+ return rows;
627
+ }
628
+
629
+ async function kbCreate(name, kbId, description) {
630
+ const trimmedName = trimString(name);
631
+ if (!trimmedName) throw new Error("kb_create: missing 'name' argument");
632
+ const payload = { name: trimmedName };
633
+ const explicitId = trimString(kbId);
634
+ const explicitDescription = trimString(description);
635
+ if (explicitId) payload.id = explicitId;
636
+ if (explicitDescription) payload.description = explicitDescription;
637
+ const result = await readJson("kb_create", "/api/kb", {
638
+ method: "POST",
639
+ headers: { "Content-Type": "application/json" },
640
+ body: JSON.stringify(payload),
641
+ });
642
+ return {
643
+ id: result?.id || payload.id || null,
644
+ name: result?.name || trimmedName,
645
+ description: result?.description ?? payload.description ?? null,
646
+ createdAt: result?.created_at ?? null,
647
+ };
648
+ }
649
+
650
+ async function kbGetCapabilities() {
651
+ const payload = await readJson("kb_get_capabilities", "/api/service/capabilities");
652
+ return {
653
+ contractVersion: payload?.contractVersion || null,
654
+ serviceVersion: payload?.serviceVersion || null,
655
+ auth: payload?.auth || null,
656
+ features: payload?.features || {},
657
+ limits: payload?.limits || {},
658
+ upload: payload?.upload ? {
659
+ shortFormats: payload.upload.shortFormats || [],
660
+ formatsDetail: payload.upload.formatsDetail || null,
661
+ extensions: payload.upload.extensions || [],
662
+ } : null,
663
+ routes: payload?.routes || null,
664
+ };
665
+ }
666
+
667
+ async function kbGet(kbIdRaw) {
668
+ const kbId = defaultKbId(kbIdRaw, "kb_get");
669
+ const payload = await readJson(
670
+ "kb_get",
671
+ "/api/kb/" + encodePathPart(kbId),
672
+ );
673
+ return {
674
+ id: payload?.id || kbId,
675
+ name: payload?.name || null,
676
+ description: payload?.description ?? null,
677
+ documents: payload?.documents ?? payload?.docCount ?? payload?.documentCount ?? null,
678
+ chunks: payload?.chunks ?? null,
679
+ jobs: payload?.jobs ?? payload?.jobCount ?? null,
680
+ createdAt: payload?.created_at ?? payload?.createdAt ?? null,
681
+ config: payload?.config || payload?.retrieval || null,
682
+ };
683
+ }
684
+
685
+ async function kbSearch(query, kbIdRaw, topK) {
686
+ const trimmedQuery = trimString(query);
687
+ if (!trimmedQuery) throw new Error("kb_search: missing 'query' argument");
688
+ const kbId = defaultKbId(kbIdRaw, "kb_search");
689
+ const payload = await readJson(
690
+ "kb_search",
691
+ "/api/kb/" + encodeURIComponent(kbId) + "/search",
692
+ {
693
+ method: "POST",
694
+ headers: { "Content-Type": "application/json" },
695
+ body: JSON.stringify({ query: trimmedQuery, topK: clampTopK(topK) }),
696
+ },
697
+ );
698
+ return normalizeChunksResponse(payload);
699
+ }
700
+
701
+ async function kbUpload(absPath, kbIdRaw) {
702
+ const kbId = requireKbId(kbIdRaw, "kb_upload");
703
+ const checked = openUploadFile(absPath);
704
+ const filename = path.basename(checked.absPath);
705
+ let buf;
706
+ try {
707
+ buf = readBoundedUploadBuffer(checked.fd, checked.stat.size);
708
+ assertStableUploadRead(checked, buf);
709
+ } finally {
710
+ fs.closeSync(checked.fd);
711
+ }
712
+ const fd = new FormData();
713
+ fd.append("file", new Blob([buf]), filename);
714
+ const payload = await readJson(
715
+ "kb_upload",
716
+ "/api/kb/" + encodeURIComponent(kbId) + "/documents",
717
+ {
718
+ method: "POST",
719
+ body: fd,
720
+ },
721
+ );
722
+ const doc = payload?.doc && typeof payload.doc === "object" ? payload.doc : {};
723
+ return {
724
+ kbId,
725
+ documentId: doc.id || null,
726
+ title: doc.title || filename,
727
+ bytes: doc.bytes ?? checked.stat.size,
728
+ status: doc.status || null,
729
+ chunks: payload?.chunks ?? null,
730
+ };
731
+ }
732
+
733
+ async function kbListDocuments(kbIdRaw) {
734
+ const kbId = defaultKbId(kbIdRaw, "kb_list_documents");
735
+ const payload = await readJson(
736
+ "kb_list_documents",
737
+ "/api/kb/" + encodeURIComponent(kbId) + "/documents",
738
+ );
739
+ const docs = documentArrayFromPayload(payload);
740
+ if (!docs) {
741
+ throw new Error("kb_list_documents: upstream returned a non-array document payload");
742
+ }
743
+ return docs.map((item) => normalizeDocument(item, kbId));
744
+ }
745
+
746
+ async function kbGetDocument(kbIdRaw, documentIdRaw) {
747
+ const kbId = defaultKbId(kbIdRaw, "kb_get_document");
748
+ const documentId = trimString(documentIdRaw);
749
+ if (!documentId) throw new Error("kb_get_document: missing 'documentId' argument");
750
+ const payload = await readJson(
751
+ "kb_get_document",
752
+ "/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId),
753
+ );
754
+ return normalizeDocument(payload, kbId);
755
+ }
756
+
757
+ async function kbListDocumentChunks(kbIdRaw, documentIdRaw) {
758
+ const kbId = defaultKbId(kbIdRaw, "kb_list_document_chunks");
759
+ const documentId = trimString(documentIdRaw);
760
+ if (!documentId) throw new Error("kb_list_document_chunks: missing 'documentId' argument");
761
+ const payload = await readJson(
762
+ "kb_list_document_chunks",
763
+ "/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId) + "/chunks",
764
+ );
765
+ const rawChunks = Array.isArray(payload) ? payload : Array.isArray(payload?.chunks) ? payload.chunks : null;
766
+ if (!rawChunks) {
767
+ throw new Error("kb_list_document_chunks: upstream returned a non-array chunks payload");
768
+ }
769
+ return rawChunks.map((item, idx) => {
770
+ const chunk = item && typeof item === "object" ? item : { text: String(item ?? "") };
771
+ const capped = cappedText(chunk.text || chunk.content || "", 1600);
772
+ return {
773
+ id: chunk.id ?? null,
774
+ chunkIndex: chunk.chunk_index ?? chunk.chunkIndex ?? idx,
775
+ page: chunk.page ?? null,
776
+ text: capped.text,
777
+ truncated: capped.truncated,
778
+ characters: capped.characters,
779
+ };
780
+ });
781
+ }
782
+
783
+ async function kbReadDocumentRaw(kbIdRaw, documentIdRaw) {
784
+ const kbId = defaultKbId(kbIdRaw, "kb_read_document_raw");
785
+ const documentId = trimString(documentIdRaw);
786
+ if (!documentId) throw new Error("kb_read_document_raw: missing 'documentId' argument");
787
+ const res = await fetchWithTimeout(
788
+ "kb_read_document_raw",
789
+ "/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId) + "/raw",
790
+ { headers: { Accept: "text/plain, application/octet-stream;q=0.5, */*;q=0.1" } },
791
+ );
792
+ if (!res.ok) {
793
+ const txt = await res.text();
794
+ throw new Error("kb_read_document_raw: upstream " + res.status + ": " + txt.slice(0, 400));
795
+ }
796
+ const capped = await readBoundedTextResponse("kb_read_document_raw", res, MAX_TEXT_RESPONSE_CHARS);
797
+ return {
798
+ kbId,
799
+ documentId,
800
+ contentType: res.headers.get("content-type") || null,
801
+ contentDisposition: res.headers.get("content-disposition") || null,
802
+ text: capped.text,
803
+ truncated: capped.truncated,
804
+ characters: capped.characters,
805
+ bytesRead: capped.bytesRead,
806
+ contentLength: capped.contentLength,
807
+ };
808
+ }
809
+
810
+ async function kbListDocumentFaq(kbIdRaw, documentIdRaw) {
811
+ const kbId = defaultKbId(kbIdRaw, "kb_list_document_faq");
812
+ const documentId = trimString(documentIdRaw);
813
+ if (!documentId) throw new Error("kb_list_document_faq: missing 'documentId' argument");
814
+ const payload = await readJson(
815
+ "kb_list_document_faq",
816
+ "/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId) + "/faq",
817
+ );
818
+ const faqs = Array.isArray(payload) ? payload : Array.isArray(payload?.faqs) ? payload.faqs : null;
819
+ if (!faqs) {
820
+ throw new Error("kb_list_document_faq: upstream returned a non-array FAQ payload");
821
+ }
822
+ return faqs;
823
+ }
824
+
825
+ async function kbReindexDocument(kbIdRaw, documentIdRaw, confirmDocumentIdRaw) {
826
+ const kbId = requireKbId(kbIdRaw, "kb_reindex_document");
827
+ const documentId = trimString(documentIdRaw);
828
+ if (!documentId) throw new Error("kb_reindex_document: missing 'documentId' argument");
829
+ requireConfirm(confirmDocumentIdRaw, documentId, "kb_reindex_document", "confirmDocumentId");
830
+ const payload = await readJson(
831
+ "kb_reindex_document",
832
+ "/api/kb/" + encodePathPart(kbId) + "/documents/" + encodePathPart(documentId) + "/reindex",
833
+ { method: "POST", headers: { "Content-Type": "application/json" }, body: "{}" },
834
+ );
835
+ return {
836
+ kbId,
837
+ documentId,
838
+ doc: payload?.doc ? normalizeDocument(payload.doc, kbId) : null,
839
+ parents: payload?.parents ?? null,
840
+ chunks: payload?.chunks ?? null,
841
+ removedChunks: payload?.removedChunks ?? null,
842
+ faqRegeneration: payload?.faqRegeneration || null,
843
+ sourceGeneration: payload?.sourceGeneration || null,
844
+ };
845
+ }
846
+
847
+ async function kbImportUrl(args) {
848
+ const kbId = requireKbId(args?.kbId, "kb_import_url");
849
+ const url = trimString(args?.url);
850
+ if (!url) throw new Error("kb_import_url: missing 'url' argument");
851
+ const asyncMode = boolWithDefault(args?.async, true);
852
+ const payload = { url };
853
+ for (const key of ["origin", "sourcePath", "batchId", "clientItemId", "externalAssetId"]) {
854
+ const value = optionalString(args?.[key]);
855
+ if (value) payload[key] = value;
856
+ }
857
+ const headers = { "Content-Type": "application/json" };
858
+ const idempotencyKey = optionalString(args?.idempotencyKey);
859
+ if (idempotencyKey) headers["Idempotency-Key"] = idempotencyKey;
860
+ const result = await readJson(
861
+ "kb_import_url",
862
+ "/api/kb/" + encodePathPart(kbId) + "/import" + (asyncMode ? "?async=true" : ""),
863
+ { method: "POST", headers, body: JSON.stringify(payload) },
864
+ );
865
+ return {
866
+ kbId,
867
+ async: asyncMode,
868
+ sourceUrl: result?.sourceUrl || null,
869
+ job: result?.job ? normalizeJob(result.job, kbId) : null,
870
+ doc: result?.doc ? normalizeDocument(result.doc, kbId) : null,
871
+ chunks: result?.chunks ?? null,
872
+ parents: result?.parents ?? null,
873
+ idempotencyKey: result?.idempotencyKey || idempotencyKey || null,
874
+ replayed: !!result?.replayed,
875
+ };
876
+ }
877
+
878
+ async function kbListJobs(args) {
879
+ const kbId = defaultKbId(args?.kbId, "kb_list_jobs");
880
+ const qs = new URLSearchParams();
881
+ const limit = positiveInt(args?.limit, null, 100);
882
+ if (limit) qs.set("limit", String(limit));
883
+ appendOptionalQuery(qs, "cursor", args?.cursor);
884
+ appendOptionalQuery(qs, "status", args?.status);
885
+ appendOptionalQuery(qs, "clientItemId", args?.clientItemId);
886
+ appendOptionalQuery(qs, "batchId", args?.batchId);
887
+ const query = qs.toString();
888
+ const payload = await readJson(
889
+ "kb_list_jobs",
890
+ "/api/kb/" + encodePathPart(kbId) + "/jobs" + (query ? "?" + query : ""),
891
+ );
892
+ const jobs = jobArrayFromPayload(payload);
893
+ if (!jobs) {
894
+ throw new Error("kb_list_jobs: upstream returned a non-array jobs payload");
895
+ }
896
+ return {
897
+ jobs: jobs.map((item) => normalizeJob(item, kbId)),
898
+ nextCursor: payload?.nextCursor ?? null,
899
+ totalEstimate: payload?.totalEstimate ?? null,
900
+ limit: payload?.limit ?? limit ?? null,
901
+ };
902
+ }
903
+
904
+ async function kbGetJob(kbIdRaw, jobIdRaw) {
905
+ const kbId = defaultKbId(kbIdRaw, "kb_get_job");
906
+ const jobId = trimString(jobIdRaw);
907
+ if (!jobId) throw new Error("kb_get_job: missing 'jobId' argument");
908
+ const payload = await readJson(
909
+ "kb_get_job",
910
+ "/api/kb/" + encodePathPart(kbId) + "/jobs/" + encodePathPart(jobId),
911
+ );
912
+ return normalizeJob(payload, kbId);
913
+ }
914
+
915
+ async function kbRetryJob(kbIdRaw, jobIdRaw) {
916
+ const kbId = requireKbId(kbIdRaw, "kb_retry_job");
917
+ const jobId = trimString(jobIdRaw);
918
+ if (!jobId) throw new Error("kb_retry_job: missing 'jobId' argument");
919
+ const payload = await readJson(
920
+ "kb_retry_job",
921
+ "/api/kb/" + encodePathPart(kbId) + "/jobs/" + encodePathPart(jobId) + "/retry",
922
+ { method: "POST", headers: { "Content-Type": "application/json" }, body: "{}" },
923
+ );
924
+ return normalizeJob(payload, kbId);
925
+ }
926
+
927
+ async function kbCancelJob(kbIdRaw, jobIdRaw, confirmJobIdRaw) {
928
+ const kbId = requireKbId(kbIdRaw, "kb_cancel_job");
929
+ const jobId = trimString(jobIdRaw);
930
+ if (!jobId) throw new Error("kb_cancel_job: missing 'jobId' argument");
931
+ requireConfirm(confirmJobIdRaw, jobId, "kb_cancel_job", "confirmJobId");
932
+ const payload = await readJson(
933
+ "kb_cancel_job",
934
+ "/api/kb/" + encodePathPart(kbId) + "/jobs/" + encodePathPart(jobId) + "/cancel",
935
+ { method: "POST", headers: { "Content-Type": "application/json" }, body: "{}" },
936
+ );
937
+ return normalizeJob(payload, kbId);
938
+ }
939
+
940
+ async function kbReadHandbook(section) {
941
+ const markdown = await readText("kb_read_handbook", "/handbook.md");
942
+ const wanted = trimString(section);
943
+ if (!wanted) return markdown;
944
+ const extracted = extractMarkdownSection(markdown, wanted);
945
+ if (!extracted.found) {
946
+ throw new Error(
947
+ "kb_read_handbook: section not found: " + wanted +
948
+ ". Available sections: " + extracted.headings.join(", "),
949
+ );
950
+ }
951
+ return extracted.text;
952
+ }
953
+
954
+ async function kbGetConfig() {
955
+ const payload = await readJson("kb_get_config", "/api/admin/config");
956
+ return sanitizeConfig(payload);
957
+ }
958
+
959
+ async function kbDeleteDocument(kbIdRaw, documentIdRaw, confirmDocumentIdRaw) {
960
+ const kbId = requireKbId(kbIdRaw, "kb_delete_document");
961
+ const documentId = trimString(documentIdRaw);
962
+ if (!documentId) throw new Error("kb_delete_document: missing 'documentId' argument");
963
+ requireConfirm(confirmDocumentIdRaw, documentId, "kb_delete_document", "confirmDocumentId");
964
+ const payload = await readJson(
965
+ "kb_delete_document",
966
+ "/api/kb/" + encodeURIComponent(kbId) + "/documents/" + encodeURIComponent(documentId),
967
+ { method: "DELETE" },
968
+ );
969
+ return {
970
+ ok: payload?.ok !== false,
971
+ kbId,
972
+ documentId,
973
+ };
974
+ }
975
+
976
+ async function kbDeleteKb(kbIdRaw, confirmKbIdRaw) {
977
+ const kbId = requireKbId(kbIdRaw, "kb_delete_kb");
978
+ requireConfirm(confirmKbIdRaw, kbId, "kb_delete_kb", "confirmKbId");
979
+ const payload = await readJson(
980
+ "kb_delete_kb",
981
+ "/api/kb/" + encodeURIComponent(kbId),
982
+ { method: "DELETE" },
983
+ );
984
+ return {
985
+ ok: payload?.ok !== false,
986
+ kbId,
987
+ };
988
+ }
989
+
990
+ const TOOLS = [
991
+ {
992
+ name: "kb_list",
993
+ description: "List knowledge bases and validate whether each id can be used by document/search APIs. Returns documents=file count and chunks=index chunk count; use documents when the user asks how many files are in a KB. Only use entries with usable=true for follow-up calls.",
994
+ inputSchema: { type: "object", properties: {} },
995
+ },
996
+ {
997
+ name: "kb_get_capabilities",
998
+ description: "Read the JishuShell-KB external-control capability summary, including enabled features, upload formats, limits, and route inventory pointer. Does not expose secrets.",
999
+ inputSchema: { type: "object", properties: {} },
1000
+ },
1001
+ {
1002
+ name: "kb_create",
1003
+ description: "Create a new knowledge base. Use when the user asks to create a new KB before uploading or organizing documents.",
1004
+ inputSchema: {
1005
+ type: "object",
1006
+ properties: {
1007
+ name: { type: "string", description: "Human-readable KB name" },
1008
+ id: { type: "string", description: "Optional explicit KB id" },
1009
+ description: { type: "string", description: "Optional KB description" },
1010
+ },
1011
+ required: ["name"],
1012
+ },
1013
+ },
1014
+ {
1015
+ name: "kb_get",
1016
+ description: "Read one knowledge base's metadata, counts, and safe retrieval/config summary. If kbId is omitted the wired default KB is used.",
1017
+ inputSchema: {
1018
+ type: "object",
1019
+ properties: {
1020
+ kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
1021
+ },
1022
+ },
1023
+ },
1024
+ {
1025
+ name: "kb_search",
1026
+ description: "Search a knowledge base for chunks relevant to a question. Use whenever the user asks something likely answered by indexed documents. If kbId is omitted the default KB is used.",
1027
+ inputSchema: {
1028
+ type: "object",
1029
+ properties: {
1030
+ query: { type: "string", description: "The user question, in their original language" },
1031
+ kbId: { type: "string", description: "Optional explicit KB id; defaults to the wired default KB" },
1032
+ topK: { type: "number", description: "Optional number of chunks to retrieve (1-20, default 6)" },
1033
+ },
1034
+ required: ["query"],
1035
+ },
1036
+ },
1037
+ {
1038
+ name: "kb_upload",
1039
+ description: "Upload and index a host-side file into a specific knowledge base. Use after drive_resolve_local_path. Only files under this instance's mounted files roots are accepted.",
1040
+ inputSchema: {
1041
+ type: "object",
1042
+ properties: {
1043
+ path: { type: "string", description: "Absolute host path from drive_resolve_local_path" },
1044
+ kbId: { type: "string", description: "Target KB id (required for writes)" },
1045
+ },
1046
+ required: ["path", "kbId"],
1047
+ },
1048
+ },
1049
+ {
1050
+ name: "kb_list_documents",
1051
+ description: "List indexed documents in a knowledge base. Use before document deletion or when the user asks what a KB currently contains.",
1052
+ inputSchema: {
1053
+ type: "object",
1054
+ properties: {
1055
+ kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
1056
+ },
1057
+ },
1058
+ },
1059
+ {
1060
+ name: "kb_get_document",
1061
+ description: "Read one indexed document's metadata and derived counts. Use after kb_list_documents when the user asks about a specific document.",
1062
+ inputSchema: {
1063
+ type: "object",
1064
+ properties: {
1065
+ kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
1066
+ documentId: { type: "string", description: "Document id to inspect" },
1067
+ },
1068
+ required: ["documentId"],
1069
+ },
1070
+ },
1071
+ {
1072
+ name: "kb_list_document_chunks",
1073
+ description: "List indexed chunks for a document. Use to inspect why search matched a document or to debug chunking. Chunk text is capped in the MCP response.",
1074
+ inputSchema: {
1075
+ type: "object",
1076
+ properties: {
1077
+ kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
1078
+ documentId: { type: "string", description: "Document id to inspect" },
1079
+ },
1080
+ required: ["documentId"],
1081
+ },
1082
+ },
1083
+ {
1084
+ name: "kb_read_document_raw",
1085
+ description: "Read the original stored document text for a document id. Use only when the user asks to inspect the source document or search snippets are insufficient. Output is capped.",
1086
+ inputSchema: {
1087
+ type: "object",
1088
+ properties: {
1089
+ kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
1090
+ documentId: { type: "string", description: "Document id to read" },
1091
+ },
1092
+ required: ["documentId"],
1093
+ },
1094
+ },
1095
+ {
1096
+ name: "kb_list_document_faq",
1097
+ description: "List generated FAQ suggestions for a document, if the KB has generated any.",
1098
+ inputSchema: {
1099
+ type: "object",
1100
+ properties: {
1101
+ kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
1102
+ documentId: { type: "string", description: "Document id to inspect" },
1103
+ },
1104
+ required: ["documentId"],
1105
+ },
1106
+ },
1107
+ {
1108
+ name: "kb_reindex_document",
1109
+ description: "Rebuild one document's chunks, vectors, and FAQ suggestions from the stored raw file. This is a write/repair action; only use after explicit user confirmation.",
1110
+ inputSchema: {
1111
+ type: "object",
1112
+ properties: {
1113
+ kbId: { type: "string", description: "Target KB id" },
1114
+ documentId: { type: "string", description: "Document id to reindex" },
1115
+ confirmDocumentId: { type: "string", description: "Must exactly equal documentId" },
1116
+ },
1117
+ required: ["kbId", "documentId", "confirmDocumentId"],
1118
+ },
1119
+ },
1120
+ {
1121
+ name: "kb_import_url",
1122
+ description: "Fetch a readable remote URL and index its extracted text into a specific KB. Defaults to async=true and returns an ingest job; use kb_get_job to check progress.",
1123
+ inputSchema: {
1124
+ type: "object",
1125
+ properties: {
1126
+ kbId: { type: "string", description: "Target KB id (required for writes)" },
1127
+ url: { type: "string", description: "User-provided URL to import" },
1128
+ async: { type: "boolean", description: "Whether to enqueue async ingest; defaults to true" },
1129
+ idempotencyKey: { type: "string", description: "Optional idempotency key for safe retries" },
1130
+ origin: { type: "string", description: "Optional provenance origin" },
1131
+ sourcePath: { type: "string", description: "Optional caller-visible source path" },
1132
+ batchId: { type: "string", description: "Optional batch id" },
1133
+ clientItemId: { type: "string", description: "Optional caller item id" },
1134
+ externalAssetId: { type: "string", description: "Optional external asset id" },
1135
+ },
1136
+ required: ["kbId", "url"],
1137
+ },
1138
+ },
1139
+ {
1140
+ name: "kb_list_jobs",
1141
+ description: "List recent ingest jobs for a KB, with optional status/clientItemId/batchId filters and pagination.",
1142
+ inputSchema: {
1143
+ type: "object",
1144
+ properties: {
1145
+ kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
1146
+ limit: { type: "number", description: "Optional page size, max 100" },
1147
+ cursor: { type: "string", description: "Optional pagination cursor" },
1148
+ status: { type: "string", description: "Optional job status filter" },
1149
+ clientItemId: { type: "string", description: "Optional client item id filter" },
1150
+ batchId: { type: "string", description: "Optional batch id filter" },
1151
+ },
1152
+ },
1153
+ },
1154
+ {
1155
+ name: "kb_get_job",
1156
+ description: "Read one ingest job's current status and provenance.",
1157
+ inputSchema: {
1158
+ type: "object",
1159
+ properties: {
1160
+ kbId: { type: "string", description: "Optional KB id; defaults to the wired default KB" },
1161
+ jobId: { type: "string", description: "Ingest job id" },
1162
+ },
1163
+ required: ["jobId"],
1164
+ },
1165
+ },
1166
+ {
1167
+ name: "kb_retry_job",
1168
+ description: "Retry one failed or cancelled ingest job. This is a write/repair action; use only when the user asks to retry.",
1169
+ inputSchema: {
1170
+ type: "object",
1171
+ properties: {
1172
+ kbId: { type: "string", description: "Target KB id" },
1173
+ jobId: { type: "string", description: "Ingest job id to retry" },
1174
+ },
1175
+ required: ["kbId", "jobId"],
1176
+ },
1177
+ },
1178
+ {
1179
+ name: "kb_cancel_job",
1180
+ description: "Cancel one queued or running ingest job. Only use after explicit user confirmation. The confirmation field must exactly equal the target job id.",
1181
+ inputSchema: {
1182
+ type: "object",
1183
+ properties: {
1184
+ kbId: { type: "string", description: "Target KB id" },
1185
+ jobId: { type: "string", description: "Ingest job id to cancel" },
1186
+ confirmJobId: { type: "string", description: "Must exactly equal jobId" },
1187
+ },
1188
+ required: ["kbId", "jobId", "confirmJobId"],
1189
+ },
1190
+ },
1191
+ {
1192
+ name: "kb_read_handbook",
1193
+ description: "Read the JishuShell-KB handbook. Use this to answer how the KB settings work or what a handbook section says. Section matching uses exact heading text after whitespace normalization.",
1194
+ inputSchema: {
1195
+ type: "object",
1196
+ properties: {
1197
+ section: { type: "string", description: "Optional exact handbook heading to extract" },
1198
+ },
1199
+ },
1200
+ },
1201
+ {
1202
+ name: "kb_get_config",
1203
+ description: "Read a sanitized summary of the current JishuShell-KB configuration. Secrets are redacted; this is safe for explaining retrieval/model settings to the user.",
1204
+ inputSchema: { type: "object", properties: {} },
1205
+ },
1206
+ {
1207
+ name: "kb_delete_document",
1208
+ description: "Delete a document from a specific knowledge base. Only use after explicit user confirmation. The confirmation field must exactly equal the target document id.",
1209
+ inputSchema: {
1210
+ type: "object",
1211
+ properties: {
1212
+ kbId: { type: "string", description: "Target KB id" },
1213
+ documentId: { type: "string", description: "Document id to delete" },
1214
+ confirmDocumentId: { type: "string", description: "Must exactly equal documentId" },
1215
+ },
1216
+ required: ["kbId", "documentId", "confirmDocumentId"],
1217
+ },
1218
+ },
1219
+ {
1220
+ name: "kb_delete_kb",
1221
+ description: "Delete an entire knowledge base. Only use after explicit user confirmation. The confirmation field must exactly equal the target kbId.",
1222
+ inputSchema: {
1223
+ type: "object",
1224
+ properties: {
1225
+ kbId: { type: "string", description: "KB id to delete" },
1226
+ confirmKbId: { type: "string", description: "Must exactly equal kbId" },
1227
+ },
1228
+ required: ["kbId", "confirmKbId"],
1229
+ },
1230
+ },
1231
+ ];
1232
+
1233
+ function reply(id, result, error) {
1234
+ const msg = { jsonrpc: "2.0", id: id };
1235
+ if (error) msg.error = { code: -32603, message: error.message || String(error) };
1236
+ else msg.result = result;
1237
+ process.stdout.write(JSON.stringify(msg) + "\\n");
1238
+ }
1239
+
1240
+ async function handle(req) {
1241
+ const { id, method, params } = req;
1242
+ try {
1243
+ if (method === "initialize") {
1244
+ reply(id, {
1245
+ protocolVersion: "2024-11-05",
1246
+ capabilities: { tools: {} },
1247
+ serverInfo: { name: "jishukb-shim", version: ${JSON.stringify(JISHUKB_MCP_SHIM_VERSION)} },
1248
+ });
1249
+ return;
1250
+ }
1251
+ if (method === "tools/list") {
1252
+ reply(id, { tools: TOOLS });
1253
+ return;
1254
+ }
1255
+ if (method === "tools/call") {
1256
+ const tool = params?.name;
1257
+ const a = params?.arguments || {};
1258
+ if (tool === "kb_list") {
1259
+ reply(id, { content: [{ type: "text", text: jsonText(await kbList()) }] });
1260
+ } else if (tool === "kb_get_capabilities") {
1261
+ reply(id, { content: [{ type: "text", text: jsonText(await kbGetCapabilities()) }] });
1262
+ } else if (tool === "kb_create") {
1263
+ reply(id, { content: [{ type: "text", text: jsonText(await kbCreate(a.name, a.id, a.description)) }] });
1264
+ } else if (tool === "kb_get") {
1265
+ reply(id, { content: [{ type: "text", text: jsonText(await kbGet(a.kbId)) }] });
1266
+ } else if (tool === "kb_search") {
1267
+ reply(id, { content: [{ type: "text", text: fmtSearchResult(await kbSearch(a.query, a.kbId, a.topK)) }] });
1268
+ } else if (tool === "kb_upload") {
1269
+ const result = await kbUpload(a.path, a.kbId);
1270
+ reply(id, {
1271
+ content: [{ type: "text", text:
1272
+ "✅ indexed into KB " + result.kbId +
1273
+ ": " + result.title +
1274
+ " (documentId=" + (result.documentId || "?") +
1275
+ ", bytes=" + result.bytes +
1276
+ ", chunks=" + (result.chunks != null ? result.chunks : "?") + ")"
1277
+ }],
1278
+ });
1279
+ } else if (tool === "kb_list_documents") {
1280
+ reply(id, { content: [{ type: "text", text: jsonText(await kbListDocuments(a.kbId)) }] });
1281
+ } else if (tool === "kb_get_document") {
1282
+ reply(id, { content: [{ type: "text", text: jsonText(await kbGetDocument(a.kbId, a.documentId)) }] });
1283
+ } else if (tool === "kb_list_document_chunks") {
1284
+ reply(id, { content: [{ type: "text", text: jsonText(await kbListDocumentChunks(a.kbId, a.documentId)) }] });
1285
+ } else if (tool === "kb_read_document_raw") {
1286
+ reply(id, { content: [{ type: "text", text: jsonText(await kbReadDocumentRaw(a.kbId, a.documentId)) }] });
1287
+ } else if (tool === "kb_list_document_faq") {
1288
+ reply(id, { content: [{ type: "text", text: jsonText(await kbListDocumentFaq(a.kbId, a.documentId)) }] });
1289
+ } else if (tool === "kb_reindex_document") {
1290
+ reply(id, { content: [{ type: "text", text: jsonText(await kbReindexDocument(a.kbId, a.documentId, a.confirmDocumentId)) }] });
1291
+ } else if (tool === "kb_import_url") {
1292
+ reply(id, { content: [{ type: "text", text: jsonText(await kbImportUrl(a)) }] });
1293
+ } else if (tool === "kb_list_jobs") {
1294
+ reply(id, { content: [{ type: "text", text: jsonText(await kbListJobs(a)) }] });
1295
+ } else if (tool === "kb_get_job") {
1296
+ reply(id, { content: [{ type: "text", text: jsonText(await kbGetJob(a.kbId, a.jobId)) }] });
1297
+ } else if (tool === "kb_retry_job") {
1298
+ reply(id, { content: [{ type: "text", text: jsonText(await kbRetryJob(a.kbId, a.jobId)) }] });
1299
+ } else if (tool === "kb_cancel_job") {
1300
+ reply(id, { content: [{ type: "text", text: jsonText(await kbCancelJob(a.kbId, a.jobId, a.confirmJobId)) }] });
1301
+ } else if (tool === "kb_read_handbook") {
1302
+ reply(id, { content: [{ type: "text", text: await kbReadHandbook(a.section) }] });
1303
+ } else if (tool === "kb_get_config") {
1304
+ reply(id, { content: [{ type: "text", text: jsonText(await kbGetConfig()) }] });
1305
+ } else if (tool === "kb_delete_document") {
1306
+ reply(id, { content: [{ type: "text", text: jsonText(await kbDeleteDocument(a.kbId, a.documentId, a.confirmDocumentId)) }] });
1307
+ } else if (tool === "kb_delete_kb") {
1308
+ reply(id, { content: [{ type: "text", text: jsonText(await kbDeleteKb(a.kbId, a.confirmKbId)) }] });
1309
+ } else {
1310
+ throw new Error("unknown tool: " + tool);
1311
+ }
1312
+ return;
1313
+ }
1314
+ if (method === "notifications/initialized") {
1315
+ return;
1316
+ }
1317
+ if (typeof method === "string" && method.startsWith("notifications/")) {
1318
+ return;
1319
+ }
1320
+ if (id !== undefined) {
1321
+ reply(id, null, new Error("method not implemented: " + method));
1322
+ }
1323
+ } catch (e) {
1324
+ reply(id, null, e);
1325
+ }
1326
+ }
1327
+
1328
+ let inbuf = "";
1329
+ process.stdin.setEncoding("utf-8");
1330
+ process.stdin.on("data", (chunk) => {
1331
+ inbuf += chunk;
1332
+ let idx;
1333
+ while ((idx = inbuf.indexOf("\\n")) >= 0) {
1334
+ const line = inbuf.slice(0, idx).trim();
1335
+ inbuf = inbuf.slice(idx + 1);
1336
+ if (!line) continue;
1337
+ let req;
1338
+ try { req = JSON.parse(line); } catch { continue; }
1339
+ void handle(req);
1340
+ }
1341
+ });
1342
+ process.stdin.on("end", () => process.exit(0));
1343
+ `;
1344
+ /**
1345
+ * Substitute baked-in NON-SECRET values into the shim source.
1346
+ *
1347
+ * Same pattern as `substituteAnythingllmShimPlaceholders` — done at install
1348
+ * time because OpenClaw scrubs env on MCP subprocess spawn.
1349
+ */
1350
+ export function substituteJishukbShimPlaceholders(params) {
1351
+ const escapeStr = (s) => s.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
1352
+ return JISHUKB_MCP_SHIM_SOURCE
1353
+ .replace(/__JS_BASE_URL__/g, escapeStr(params.baseUrl))
1354
+ .replace(/__JS_KB_ID__/g, escapeStr(params.kbId || ""))
1355
+ .replace(/__JS_ALLOWED_UPLOAD_ROOTS__/g, escapeStr(JSON.stringify(params.allowedUploadRoots)));
1356
+ }
1357
+ //# sourceMappingURL=jishukb-shim.js.map