pybao-cli 1.4.25 → 1.4.27

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 (147) hide show
  1. package/dist/REPL-CFM3DD5T.js +47 -0
  2. package/dist/{acp-AUKWBWMU.js → acp-NNI4HVLX.js} +29 -29
  3. package/dist/{agentsValidate-POOZ6Z2B.js → agentsValidate-54IQO7GG.js} +7 -7
  4. package/dist/{ask-KWA2DNIV.js → ask-2MCI6N5B.js} +28 -28
  5. package/dist/{autoUpdater-EOXG42SO.js → autoUpdater-5FE4HSWC.js} +3 -3
  6. package/dist/{chunk-IPYLXGFV.js → chunk-2ROHFSTR.js} +3 -3
  7. package/dist/{chunk-MXJWHBOD.js → chunk-355UILXX.js} +3 -3
  8. package/dist/{chunk-MXDHTE5J.js → chunk-3QVMMVBR.js} +1 -1
  9. package/dist/{chunk-T52MGYKQ.js → chunk-4TGSJU6E.js} +3 -3
  10. package/dist/{chunk-QYIH3X4U.js → chunk-5ECWBTEN.js} +3 -3
  11. package/dist/{chunk-DT4HVZ3Y.js → chunk-5L3ARDVS.js} +2 -2
  12. package/dist/{chunk-OEH4JATH.js → chunk-62WLN2YP.js} +1 -1
  13. package/dist/{chunk-6BRCM2E4.js → chunk-6UXXOPX4.js} +2 -2
  14. package/dist/{chunk-66JIUGLV.js → chunk-7J2VUSTU.js} +2 -2
  15. package/dist/{chunk-NWRTSS7D.js → chunk-BGF4W5W6.js} +2 -2
  16. package/dist/{chunk-RPFER2VQ.js → chunk-CC3KGKTT.js} +2 -2
  17. package/dist/{chunk-GTEB77DG.js → chunk-CM4URADW.js} +1 -1
  18. package/dist/{chunk-J46HCSM3.js → chunk-DG2RH364.js} +1 -1
  19. package/dist/{chunk-JLQ6NN6N.js → chunk-DMARM5KQ.js} +2 -2
  20. package/dist/{chunk-SVQXV5Q5.js → chunk-GHEIYY4G.js} +4 -4
  21. package/dist/{chunk-47EXCNW6.js → chunk-HOQRRLIY.js} +1 -1
  22. package/dist/{chunk-VUISUCOO.js → chunk-I66GIBKG.js} +3 -3
  23. package/dist/{chunk-S75DS5IC.js → chunk-JGJ76XUO.js} +1 -1
  24. package/dist/{chunk-5UOVQ6ES.js → chunk-JGLQ7WFP.js} +2 -2
  25. package/dist/{chunk-R47CUCI3.js → chunk-KAKZTDPU.js} +1 -1
  26. package/dist/{chunk-R47CUCI3.js.map → chunk-KAKZTDPU.js.map} +1 -1
  27. package/dist/{chunk-4V6WD6R2.js → chunk-KFQXCTMP.js} +1 -1
  28. package/dist/{chunk-JUE7XD3T.js → chunk-KOMJCJ4D.js} +1 -1
  29. package/dist/{chunk-NDFJPKT7.js → chunk-LUIB4PY2.js} +19 -207
  30. package/dist/chunk-LUIB4PY2.js.map +7 -0
  31. package/dist/{chunk-Z6TEUSJQ.js → chunk-MISYR6PB.js} +3 -3
  32. package/dist/{chunk-MUD34BHM.js → chunk-QA4EWB66.js} +4 -4
  33. package/dist/{chunk-CPXJHNYY.js → chunk-RTNHI5RE.js} +1 -1
  34. package/dist/{chunk-ZOWRLM6Q.js → chunk-TAIA77SV.js} +4 -4
  35. package/dist/{chunk-JSR26OQG.js → chunk-UOPELSQO.js} +180 -73
  36. package/dist/chunk-UOPELSQO.js.map +7 -0
  37. package/dist/{chunk-DD2OYKDE.js → chunk-W55ADXHF.js} +4 -4
  38. package/dist/{chunk-BQYXHHWP.js → chunk-WDUQZ5JN.js} +3 -3
  39. package/dist/{cli-IELXRUTX.js → cli-FKQWMAB5.js} +87 -87
  40. package/dist/commands-PMEJTOPE.js +51 -0
  41. package/dist/{config-77DZQTQK.js → config-T5UDL4KT.js} +4 -4
  42. package/dist/{context-KLUMCLFT.js → context-CILXFQL4.js} +6 -6
  43. package/dist/{customCommands-ISEA2746.js → customCommands-HASOMTWM.js} +4 -4
  44. package/dist/{env-J4F7PRGG.js → env-IGLKIBTH.js} +2 -2
  45. package/dist/{file-KRCHS5A5.js → file-AIE26E73.js} +4 -4
  46. package/dist/index.js +3 -3
  47. package/dist/{llm-6XARMLJR.js → llm-AGMBZ7QN.js} +29 -29
  48. package/dist/{llmLazy-GRPZWGAK.js → llmLazy-45ESL6DI.js} +1 -1
  49. package/dist/{loader-WUNIG65J.js → loader-TEW67UY2.js} +4 -4
  50. package/dist/{lsp-DL76IXYS.js → lsp-N647675R.js} +6 -6
  51. package/dist/{lspAnchor-VPPXXUNO.js → lspAnchor-4OBXUA56.js} +6 -6
  52. package/dist/{mcp-KY56TM6T.js → mcp-AHPAG3DJ.js} +7 -7
  53. package/dist/{mentionProcessor-E3ITBICV.js → mentionProcessor-INSGZLAI.js} +5 -5
  54. package/dist/{messages-DT4HTEOS.js → messages-72V4KIJG.js} +1 -1
  55. package/dist/{model-KCH57MST.js → model-34ZHETZL.js} +5 -5
  56. package/dist/{openai-BNPU7EJH.js → openai-QGGNMKBA.js} +5 -5
  57. package/dist/{outputStyles-QE2JKRBE.js → outputStyles-CEEQJEMV.js} +4 -4
  58. package/dist/{pluginRuntime-NB3KNFSZ.js → pluginRuntime-2MOZK3KW.js} +6 -6
  59. package/dist/{pluginValidation-KVCOIKER.js → pluginValidation-G7Z4GXLI.js} +6 -6
  60. package/dist/prompts-UZKMMFKF.js +53 -0
  61. package/dist/{pybAgentSessionLoad-SCPRT5NR.js → pybAgentSessionLoad-C5IYRNIJ.js} +4 -4
  62. package/dist/{pybAgentSessionResume-VKEMMVH7.js → pybAgentSessionResume-HVXEOMEZ.js} +4 -4
  63. package/dist/{pybAgentStreamJsonSession-G6TCRJIW.js → pybAgentStreamJsonSession-NRRO6CLR.js} +1 -1
  64. package/dist/{pybHooks-T6RPQN5F.js → pybHooks-P72AHDTH.js} +4 -4
  65. package/dist/query-GSPSO3LE.js +55 -0
  66. package/dist/{registry-CZRNYJ22.js → registry-NP3M3ZD4.js} +5 -5
  67. package/dist/{ripgrep-URB4ZUF3.js → ripgrep-RYH45M5I.js} +3 -3
  68. package/dist/{skillMarketplace-NC4WL6B5.js → skillMarketplace-GRTLI7FP.js} +3 -3
  69. package/dist/{state-DXHBJ5GD.js → state-LCDP6BGJ.js} +2 -2
  70. package/dist/{theme-CJU6VJXX.js → theme-4QXAWX7A.js} +5 -5
  71. package/dist/{toolPermissionSettings-F3CNX7NA.js → toolPermissionSettings-QT2IMWPC.js} +6 -6
  72. package/dist/tools-VKNN642P.js +52 -0
  73. package/dist/{userInput-GIXZP2YY.js → userInput-D64FK76X.js} +30 -30
  74. package/package.json +1 -1
  75. package/dist/REPL-Q3IP3BNQ.js +0 -47
  76. package/dist/chunk-JSR26OQG.js.map +0 -7
  77. package/dist/chunk-NDFJPKT7.js.map +0 -7
  78. package/dist/commands-QXWCHX5K.js +0 -51
  79. package/dist/prompts-QIFYQCCH.js +0 -53
  80. package/dist/query-AA5M6NJ4.js +0 -55
  81. package/dist/tools-UZYXHSUA.js +0 -52
  82. /package/dist/{REPL-Q3IP3BNQ.js.map → REPL-CFM3DD5T.js.map} +0 -0
  83. /package/dist/{acp-AUKWBWMU.js.map → acp-NNI4HVLX.js.map} +0 -0
  84. /package/dist/{agentsValidate-POOZ6Z2B.js.map → agentsValidate-54IQO7GG.js.map} +0 -0
  85. /package/dist/{ask-KWA2DNIV.js.map → ask-2MCI6N5B.js.map} +0 -0
  86. /package/dist/{autoUpdater-EOXG42SO.js.map → autoUpdater-5FE4HSWC.js.map} +0 -0
  87. /package/dist/{chunk-IPYLXGFV.js.map → chunk-2ROHFSTR.js.map} +0 -0
  88. /package/dist/{chunk-MXJWHBOD.js.map → chunk-355UILXX.js.map} +0 -0
  89. /package/dist/{chunk-MXDHTE5J.js.map → chunk-3QVMMVBR.js.map} +0 -0
  90. /package/dist/{chunk-T52MGYKQ.js.map → chunk-4TGSJU6E.js.map} +0 -0
  91. /package/dist/{chunk-QYIH3X4U.js.map → chunk-5ECWBTEN.js.map} +0 -0
  92. /package/dist/{chunk-DT4HVZ3Y.js.map → chunk-5L3ARDVS.js.map} +0 -0
  93. /package/dist/{chunk-OEH4JATH.js.map → chunk-62WLN2YP.js.map} +0 -0
  94. /package/dist/{chunk-6BRCM2E4.js.map → chunk-6UXXOPX4.js.map} +0 -0
  95. /package/dist/{chunk-66JIUGLV.js.map → chunk-7J2VUSTU.js.map} +0 -0
  96. /package/dist/{chunk-NWRTSS7D.js.map → chunk-BGF4W5W6.js.map} +0 -0
  97. /package/dist/{chunk-RPFER2VQ.js.map → chunk-CC3KGKTT.js.map} +0 -0
  98. /package/dist/{chunk-GTEB77DG.js.map → chunk-CM4URADW.js.map} +0 -0
  99. /package/dist/{chunk-J46HCSM3.js.map → chunk-DG2RH364.js.map} +0 -0
  100. /package/dist/{chunk-JLQ6NN6N.js.map → chunk-DMARM5KQ.js.map} +0 -0
  101. /package/dist/{chunk-SVQXV5Q5.js.map → chunk-GHEIYY4G.js.map} +0 -0
  102. /package/dist/{chunk-47EXCNW6.js.map → chunk-HOQRRLIY.js.map} +0 -0
  103. /package/dist/{chunk-VUISUCOO.js.map → chunk-I66GIBKG.js.map} +0 -0
  104. /package/dist/{chunk-S75DS5IC.js.map → chunk-JGJ76XUO.js.map} +0 -0
  105. /package/dist/{chunk-5UOVQ6ES.js.map → chunk-JGLQ7WFP.js.map} +0 -0
  106. /package/dist/{chunk-4V6WD6R2.js.map → chunk-KFQXCTMP.js.map} +0 -0
  107. /package/dist/{chunk-JUE7XD3T.js.map → chunk-KOMJCJ4D.js.map} +0 -0
  108. /package/dist/{chunk-Z6TEUSJQ.js.map → chunk-MISYR6PB.js.map} +0 -0
  109. /package/dist/{chunk-MUD34BHM.js.map → chunk-QA4EWB66.js.map} +0 -0
  110. /package/dist/{chunk-CPXJHNYY.js.map → chunk-RTNHI5RE.js.map} +0 -0
  111. /package/dist/{chunk-ZOWRLM6Q.js.map → chunk-TAIA77SV.js.map} +0 -0
  112. /package/dist/{chunk-DD2OYKDE.js.map → chunk-W55ADXHF.js.map} +0 -0
  113. /package/dist/{chunk-BQYXHHWP.js.map → chunk-WDUQZ5JN.js.map} +0 -0
  114. /package/dist/{cli-IELXRUTX.js.map → cli-FKQWMAB5.js.map} +0 -0
  115. /package/dist/{commands-QXWCHX5K.js.map → commands-PMEJTOPE.js.map} +0 -0
  116. /package/dist/{config-77DZQTQK.js.map → config-T5UDL4KT.js.map} +0 -0
  117. /package/dist/{context-KLUMCLFT.js.map → context-CILXFQL4.js.map} +0 -0
  118. /package/dist/{customCommands-ISEA2746.js.map → customCommands-HASOMTWM.js.map} +0 -0
  119. /package/dist/{env-J4F7PRGG.js.map → env-IGLKIBTH.js.map} +0 -0
  120. /package/dist/{file-KRCHS5A5.js.map → file-AIE26E73.js.map} +0 -0
  121. /package/dist/{llm-6XARMLJR.js.map → llm-AGMBZ7QN.js.map} +0 -0
  122. /package/dist/{llmLazy-GRPZWGAK.js.map → llmLazy-45ESL6DI.js.map} +0 -0
  123. /package/dist/{loader-WUNIG65J.js.map → loader-TEW67UY2.js.map} +0 -0
  124. /package/dist/{lsp-DL76IXYS.js.map → lsp-N647675R.js.map} +0 -0
  125. /package/dist/{lspAnchor-VPPXXUNO.js.map → lspAnchor-4OBXUA56.js.map} +0 -0
  126. /package/dist/{mcp-KY56TM6T.js.map → mcp-AHPAG3DJ.js.map} +0 -0
  127. /package/dist/{mentionProcessor-E3ITBICV.js.map → mentionProcessor-INSGZLAI.js.map} +0 -0
  128. /package/dist/{messages-DT4HTEOS.js.map → messages-72V4KIJG.js.map} +0 -0
  129. /package/dist/{model-KCH57MST.js.map → model-34ZHETZL.js.map} +0 -0
  130. /package/dist/{openai-BNPU7EJH.js.map → openai-QGGNMKBA.js.map} +0 -0
  131. /package/dist/{outputStyles-QE2JKRBE.js.map → outputStyles-CEEQJEMV.js.map} +0 -0
  132. /package/dist/{pluginRuntime-NB3KNFSZ.js.map → pluginRuntime-2MOZK3KW.js.map} +0 -0
  133. /package/dist/{pluginValidation-KVCOIKER.js.map → pluginValidation-G7Z4GXLI.js.map} +0 -0
  134. /package/dist/{prompts-QIFYQCCH.js.map → prompts-UZKMMFKF.js.map} +0 -0
  135. /package/dist/{pybAgentSessionLoad-SCPRT5NR.js.map → pybAgentSessionLoad-C5IYRNIJ.js.map} +0 -0
  136. /package/dist/{pybAgentSessionResume-VKEMMVH7.js.map → pybAgentSessionResume-HVXEOMEZ.js.map} +0 -0
  137. /package/dist/{pybAgentStreamJsonSession-G6TCRJIW.js.map → pybAgentStreamJsonSession-NRRO6CLR.js.map} +0 -0
  138. /package/dist/{pybHooks-T6RPQN5F.js.map → pybHooks-P72AHDTH.js.map} +0 -0
  139. /package/dist/{query-AA5M6NJ4.js.map → query-GSPSO3LE.js.map} +0 -0
  140. /package/dist/{registry-CZRNYJ22.js.map → registry-NP3M3ZD4.js.map} +0 -0
  141. /package/dist/{ripgrep-URB4ZUF3.js.map → ripgrep-RYH45M5I.js.map} +0 -0
  142. /package/dist/{skillMarketplace-NC4WL6B5.js.map → skillMarketplace-GRTLI7FP.js.map} +0 -0
  143. /package/dist/{state-DXHBJ5GD.js.map → state-LCDP6BGJ.js.map} +0 -0
  144. /package/dist/{theme-CJU6VJXX.js.map → theme-4QXAWX7A.js.map} +0 -0
  145. /package/dist/{toolPermissionSettings-F3CNX7NA.js.map → toolPermissionSettings-QT2IMWPC.js.map} +0 -0
  146. /package/dist/{tools-UZYXHSUA.js.map → tools-VKNN642P.js.map} +0 -0
  147. /package/dist/{userInput-GIXZP2YY.js.map → userInput-D64FK76X.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../package.json", "../src/constants/macros.ts"],
4
- "sourcesContent": ["{\n \"name\": \"pybao-cli\",\n \"version\": \"1.4.25\",\n \"bin\": {\n \"pyb\": \"cli.js\",\n \"pyb-acp\": \"cli-acp.js\"\n },\n \"engines\": {\n \"node\": \">=20.18.1\"\n },\n \"main\": \"cli.js\",\n \"author\": \"PYB-XC\",\n \"license\": \"MIT\",\n \"description\": \"PYB-CLI - Minimal AI Agent with multi-model support and CLI interface\",\n \"keywords\": [\n \"ai\",\n \"agent\",\n \"minimal\",\n \"claude\"\n ],\n \"homepage\": \"https://github.com/pyb-xc/pyb-ts\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/pyb-xc/pyb-ts.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/pyb-xc/pyb-ts/issues\"\n },\n \"files\": [\n \"cli.js\",\n \"cli-acp.js\",\n \"yoga.wasm\",\n \"dist/**/*\",\n \"scripts/binary-utils.cjs\",\n \"scripts/cli-wrapper.cjs\",\n \"scripts/cli-acp-wrapper.cjs\",\n \"scripts/postinstall.js\",\n \".npmrc\",\n \"resources/**/*\"\n ],\n \"scripts\": {\n \"dev\": \"bun run ./src/entrypoints/cli.tsx --verbose\",\n \"build:npm\": \"bun scripts/build.mjs\",\n \"build\": \"npm run build:npm\",\n \"build:binary\": \"node scripts/build-binary.mjs\",\n \"clean\": \"node scripts/clean.mjs\",\n \"prepublishOnly\": \"npm run build:npm && node scripts/prepublish-check.js\",\n \"postinstall\": \"node scripts/postinstall.js || true\",\n \"format\": \"prettier --write \\\"src/**/*.{ts,tsx,js,jsx,json}\\\" \\\"tests/**/*.{ts,tsx,js,jsx,json}\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.{ts,tsx,js,jsx,json}\\\" \\\"tests/**/*.{ts,tsx,js,jsx,json}\\\"\",\n \"lint\": \"eslint . --ext .ts,.tsx,.js --max-warnings 0\",\n \"lint:fix\": \"eslint . --ext .ts,.tsx,.js --fix\",\n \"test\": \"bun test\",\n \"test:unit\": \"bun test tests/unit\",\n \"test:integration\": \"bun test tests/integration\",\n \"test:e2e\": \"bun test tests/e2e\",\n \"typecheck\": \"tsc --noEmit\",\n \"prepare\": \"bun run scripts/install-hooks.mjs\",\n \"publish:dev\": \"bun run scripts/publish-dev.js\",\n \"publish:release\": \"bun run scripts/publish-release.js\",\n \"bench:startup\": \"bun run scripts/bench-startup.mjs\",\n \"parity:reference\": \"bun run scripts/reference-parity-check.mjs\"\n },\n \"dependencies\": {\n \"@anthropic-ai/bedrock-sdk\": \"^0.12.6\",\n \"@anthropic-ai/sdk\": \"^0.39.0\",\n \"@anthropic-ai/vertex-sdk\": \"^0.7.0\",\n \"@astrojs/language-server\": \"2.16.2\",\n \"@aws-sdk/client-bedrock-runtime\": \"3.797.0\",\n \"@commander-js/extra-typings\": \"^13.1.0\",\n \"@inkjs/ui\": \"^2.0.0\",\n \"@modelcontextprotocol/sdk\": \"^1.15.1\",\n \"@prisma/language-server\": \"31.3.4\",\n \"@types/lodash-es\": \"^4.17.12\",\n \"@types/react\": \"^19.1.8\",\n \"@vscode/ripgrep\": \"^1.17.0\",\n \"@vue/language-server\": \"3.2.2\",\n \"ajv\": \"^8.17.1\",\n \"ansi-escapes\": \"^7.0.0\",\n \"bash-language-server\": \"5.6.0\",\n \"chalk\": \"^5.4.1\",\n \"cli-highlight\": \"^2.1.11\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^13.1.0\",\n \"debug\": \"^4.4.1\",\n \"diff\": \"^7.0.0\",\n \"dockerfile-language-server-nodejs\": \"0.15.0\",\n \"dotenv\": \"^16.6.1\",\n \"env-paths\": \"^3.0.0\",\n \"fflate\": \"^0.8.2\",\n \"figures\": \"^6.1.0\",\n \"glob\": \"^11.0.3\",\n \"graphql-language-service-cli\": \"3.5.0\",\n \"gray-matter\": \"^4.0.3\",\n \"highlight.js\": \"^11.11.1\",\n \"ignore\": \"^7.0.5\",\n \"ink\": \"5.2.1\",\n \"ink-link\": \"^4.1.0\",\n \"ink-select-input\": \"^6.2.0\",\n \"ink-text-input\": \"^6.0.0\",\n \"intelephense\": \"1.16.3\",\n \"js-yaml\": \"^4.1.1\",\n \"lodash-es\": \"^4.17.21\",\n \"lru-cache\": \"^11.1.0\",\n \"marked\": \"^15.0.12\",\n \"minimatch\": \"^10.1.1\",\n \"nanoid\": \"^5.1.5\",\n \"node-html-parser\": \"^7.0.1\",\n \"openai\": \"4.104.0\",\n \"pyright\": \"1.1.408\",\n \"react\": \"18.3.1\",\n \"semver\": \"^7.7.2\",\n \"shell-quote\": \"1.8.3\",\n \"spawn-rx\": \"^5.1.2\",\n \"string-width\": \"^7.2.0\",\n \"strip-ansi\": \"^7.1.0\",\n \"svelte-language-server\": \"0.17.23\",\n \"tsx\": \"^4.20.3\",\n \"typescript-language-server\": \"5.1.3\",\n \"undici\": \"^7.11.0\",\n \"vscode-jsonrpc\": \"8.2.1\",\n \"vscode-langservers-extracted\": \"4.10.0\",\n \"web-tree-sitter\": \"0.25.10\",\n \"which\": \"^6.0.0\",\n \"wrap-ansi\": \"^9.0.0\",\n \"yaml-language-server\": \"1.19.2\",\n \"zod\": \"^3.25.76\",\n \"zod-to-json-schema\": \"^3.24.6\"\n },\n \"devDependencies\": {\n \"@types/bun\": \"latest\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^24.1.0\",\n \"@types/which\": \"^3.0.4\",\n \"@typescript-eslint/eslint-plugin\": \"^8.50.1\",\n \"@typescript-eslint/parser\": \"^8.50.1\",\n \"abort-controller\": \"3.0.0\",\n \"bun-types\": \"latest\",\n \"cheerio\": \"1.1.2\",\n \"esbuild\": \"^0.25.9\",\n \"eslint\": \"8.57.0\",\n \"eslint-plugin-react-hooks\": \"^7.0.1\",\n \"ink-testing-library\": \"4.0.0\",\n \"node-fetch\": \"3.3.2\",\n \"prettier\": \"^3.6.2\",\n \"react-devtools-core\": \"^7.0.1\",\n \"tree-sitter-bash\": \"0.25.1\",\n \"tree-sitter-c-sharp\": \"0.23.1\",\n \"tree-sitter-clojure\": \"0.4.0\",\n \"tree-sitter-cpp\": \"0.23.4\",\n \"tree-sitter-go\": \"0.25.0\",\n \"tree-sitter-haskell\": \"0.23.1\",\n \"tree-sitter-java\": \"0.23.5\",\n \"tree-sitter-julia\": \"0.23.1\",\n \"tree-sitter-nix\": \"0.0.2\",\n \"tree-sitter-ocaml\": \"0.24.2\",\n \"tree-sitter-python\": \"0.25.0\",\n \"tree-sitter-rust\": \"0.24.0\",\n \"tree-sitter-scala\": \"0.24.0\",\n \"tree-sitter-swift\": \"0.7.1\",\n \"tree-sitter-typescript\": \"0.23.2\",\n \"turndown\": \"7.2.2\",\n \"typescript\": \"^5.9.2\"\n },\n \"overrides\": {\n \"@aws-sdk/client-bedrock-runtime\": \"3.797.0\",\n \"@smithy/smithy-client\": \"2.5.1\"\n }\n}\n", "import pkg from '../../package.json'\n\nexport const MACRO = {\n VERSION: pkg.version,\n README_URL: 'https://github.com/pyb-xc/pyb-ts#readme',\n PACKAGE_URL: 'pybao-cli',\n ISSUES_EXPLAINER:\n 'report the issue at https://github.com/pyb-xc/pyb-ts/issues',\n}\n"],
4
+ "sourcesContent": ["{\n \"name\": \"pybao-cli\",\n \"version\": \"1.4.27\",\n \"bin\": {\n \"pyb\": \"cli.js\",\n \"pyb-acp\": \"cli-acp.js\"\n },\n \"engines\": {\n \"node\": \">=20.18.1\"\n },\n \"main\": \"cli.js\",\n \"author\": \"PYB-XC\",\n \"license\": \"MIT\",\n \"description\": \"PYB-CLI - Minimal AI Agent with multi-model support and CLI interface\",\n \"keywords\": [\n \"ai\",\n \"agent\",\n \"minimal\",\n \"claude\"\n ],\n \"homepage\": \"https://github.com/pyb-xc/pyb-ts\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/pyb-xc/pyb-ts.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/pyb-xc/pyb-ts/issues\"\n },\n \"files\": [\n \"cli.js\",\n \"cli-acp.js\",\n \"yoga.wasm\",\n \"dist/**/*\",\n \"scripts/binary-utils.cjs\",\n \"scripts/cli-wrapper.cjs\",\n \"scripts/cli-acp-wrapper.cjs\",\n \"scripts/postinstall.js\",\n \".npmrc\",\n \"resources/**/*\"\n ],\n \"scripts\": {\n \"dev\": \"bun run ./src/entrypoints/cli.tsx --verbose\",\n \"build:npm\": \"bun scripts/build.mjs\",\n \"build\": \"npm run build:npm\",\n \"build:binary\": \"node scripts/build-binary.mjs\",\n \"clean\": \"node scripts/clean.mjs\",\n \"prepublishOnly\": \"npm run build:npm && node scripts/prepublish-check.js\",\n \"postinstall\": \"node scripts/postinstall.js || true\",\n \"format\": \"prettier --write \\\"src/**/*.{ts,tsx,js,jsx,json}\\\" \\\"tests/**/*.{ts,tsx,js,jsx,json}\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.{ts,tsx,js,jsx,json}\\\" \\\"tests/**/*.{ts,tsx,js,jsx,json}\\\"\",\n \"lint\": \"eslint . --ext .ts,.tsx,.js --max-warnings 0\",\n \"lint:fix\": \"eslint . --ext .ts,.tsx,.js --fix\",\n \"test\": \"bun test\",\n \"test:unit\": \"bun test tests/unit\",\n \"test:integration\": \"bun test tests/integration\",\n \"test:e2e\": \"bun test tests/e2e\",\n \"typecheck\": \"tsc --noEmit\",\n \"prepare\": \"bun run scripts/install-hooks.mjs\",\n \"publish:dev\": \"bun run scripts/publish-dev.js\",\n \"publish:release\": \"bun run scripts/publish-release.js\",\n \"bench:startup\": \"bun run scripts/bench-startup.mjs\",\n \"parity:reference\": \"bun run scripts/reference-parity-check.mjs\"\n },\n \"dependencies\": {\n \"@anthropic-ai/bedrock-sdk\": \"^0.12.6\",\n \"@anthropic-ai/sdk\": \"^0.39.0\",\n \"@anthropic-ai/vertex-sdk\": \"^0.7.0\",\n \"@astrojs/language-server\": \"2.16.2\",\n \"@aws-sdk/client-bedrock-runtime\": \"3.797.0\",\n \"@commander-js/extra-typings\": \"^13.1.0\",\n \"@inkjs/ui\": \"^2.0.0\",\n \"@modelcontextprotocol/sdk\": \"^1.15.1\",\n \"@prisma/language-server\": \"31.3.4\",\n \"@types/lodash-es\": \"^4.17.12\",\n \"@types/react\": \"^19.1.8\",\n \"@vscode/ripgrep\": \"^1.17.0\",\n \"@vue/language-server\": \"3.2.2\",\n \"ajv\": \"^8.17.1\",\n \"ansi-escapes\": \"^7.0.0\",\n \"bash-language-server\": \"5.6.0\",\n \"chalk\": \"^5.4.1\",\n \"cli-highlight\": \"^2.1.11\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^13.1.0\",\n \"debug\": \"^4.4.1\",\n \"diff\": \"^7.0.0\",\n \"dockerfile-language-server-nodejs\": \"0.15.0\",\n \"dotenv\": \"^16.6.1\",\n \"env-paths\": \"^3.0.0\",\n \"fflate\": \"^0.8.2\",\n \"figures\": \"^6.1.0\",\n \"glob\": \"^11.0.3\",\n \"graphql-language-service-cli\": \"3.5.0\",\n \"gray-matter\": \"^4.0.3\",\n \"highlight.js\": \"^11.11.1\",\n \"ignore\": \"^7.0.5\",\n \"ink\": \"5.2.1\",\n \"ink-link\": \"^4.1.0\",\n \"ink-select-input\": \"^6.2.0\",\n \"ink-text-input\": \"^6.0.0\",\n \"intelephense\": \"1.16.3\",\n \"js-yaml\": \"^4.1.1\",\n \"lodash-es\": \"^4.17.21\",\n \"lru-cache\": \"^11.1.0\",\n \"marked\": \"^15.0.12\",\n \"minimatch\": \"^10.1.1\",\n \"nanoid\": \"^5.1.5\",\n \"node-html-parser\": \"^7.0.1\",\n \"openai\": \"4.104.0\",\n \"pyright\": \"1.1.408\",\n \"react\": \"18.3.1\",\n \"semver\": \"^7.7.2\",\n \"shell-quote\": \"1.8.3\",\n \"spawn-rx\": \"^5.1.2\",\n \"string-width\": \"^7.2.0\",\n \"strip-ansi\": \"^7.1.0\",\n \"svelte-language-server\": \"0.17.23\",\n \"tsx\": \"^4.20.3\",\n \"typescript-language-server\": \"5.1.3\",\n \"undici\": \"^7.11.0\",\n \"vscode-jsonrpc\": \"8.2.1\",\n \"vscode-langservers-extracted\": \"4.10.0\",\n \"web-tree-sitter\": \"0.25.10\",\n \"which\": \"^6.0.0\",\n \"wrap-ansi\": \"^9.0.0\",\n \"yaml-language-server\": \"1.19.2\",\n \"zod\": \"^3.25.76\",\n \"zod-to-json-schema\": \"^3.24.6\"\n },\n \"devDependencies\": {\n \"@types/bun\": \"latest\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^24.1.0\",\n \"@types/which\": \"^3.0.4\",\n \"@typescript-eslint/eslint-plugin\": \"^8.50.1\",\n \"@typescript-eslint/parser\": \"^8.50.1\",\n \"abort-controller\": \"3.0.0\",\n \"bun-types\": \"latest\",\n \"cheerio\": \"1.1.2\",\n \"esbuild\": \"^0.25.9\",\n \"eslint\": \"8.57.0\",\n \"eslint-plugin-react-hooks\": \"^7.0.1\",\n \"ink-testing-library\": \"4.0.0\",\n \"node-fetch\": \"3.3.2\",\n \"prettier\": \"^3.6.2\",\n \"react-devtools-core\": \"^7.0.1\",\n \"tree-sitter-bash\": \"0.25.1\",\n \"tree-sitter-c-sharp\": \"0.23.1\",\n \"tree-sitter-clojure\": \"0.4.0\",\n \"tree-sitter-cpp\": \"0.23.4\",\n \"tree-sitter-go\": \"0.25.0\",\n \"tree-sitter-haskell\": \"0.23.1\",\n \"tree-sitter-java\": \"0.23.5\",\n \"tree-sitter-julia\": \"0.23.1\",\n \"tree-sitter-nix\": \"0.0.2\",\n \"tree-sitter-ocaml\": \"0.24.2\",\n \"tree-sitter-python\": \"0.25.0\",\n \"tree-sitter-rust\": \"0.24.0\",\n \"tree-sitter-scala\": \"0.24.0\",\n \"tree-sitter-swift\": \"0.7.1\",\n \"tree-sitter-typescript\": \"0.23.2\",\n \"turndown\": \"7.2.2\",\n \"typescript\": \"^5.9.2\"\n },\n \"overrides\": {\n \"@aws-sdk/client-bedrock-runtime\": \"3.797.0\",\n \"@smithy/smithy-client\": \"2.5.1\"\n }\n}\n", "import pkg from '../../package.json'\n\nexport const MACRO = {\n VERSION: pkg.version,\n README_URL: 'https://github.com/pyb-xc/pyb-ts#readme',\n PACKAGE_URL: 'pybao-cli',\n ISSUES_EXPLAINER:\n 'report the issue at https://github.com/pyb-xc/pyb-ts/issues',\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -4,7 +4,7 @@ import {
4
4
  BunShell,
5
5
  execFileNoThrow,
6
6
  logError
7
- } from "./chunk-J46HCSM3.js";
7
+ } from "./chunk-DG2RH364.js";
8
8
 
9
9
  // src/utils/system/ripgrep.ts
10
10
  import { findActualExecutable } from "spawn-rx";
@@ -3,7 +3,7 @@ const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  getSessionProjectDir,
5
5
  getSessionProjectsDir
6
- } from "./chunk-JLQ6NN6N.js";
6
+ } from "./chunk-DMARM5KQ.js";
7
7
  import {
8
8
  isUuid
9
9
  } from "./chunk-5P7HBXTD.js";
@@ -16,6 +16,7 @@ import {
16
16
  SkillTool,
17
17
  SlashCommandTool,
18
18
  TodoWriteTool,
19
+ WebFetchTool,
19
20
  WebSearchTool,
20
21
  applyMarkdown,
21
22
  countTokens,
@@ -25,58 +26,57 @@ import {
25
26
  hasReadPermission,
26
27
  hasWritePermission,
27
28
  query
28
- } from "./chunk-JSR26OQG.js";
29
+ } from "./chunk-UOPELSQO.js";
29
30
  import {
30
- queryLLM,
31
- queryQuick
32
- } from "./chunk-SVQXV5Q5.js";
31
+ queryLLM
32
+ } from "./chunk-GHEIYY4G.js";
33
33
  import {
34
34
  FallbackToolUseRejectedMessage,
35
35
  MCPTool,
36
36
  getClients,
37
37
  getMCPTools
38
- } from "./chunk-DD2OYKDE.js";
38
+ } from "./chunk-W55ADXHF.js";
39
39
  import {
40
40
  generateAgentId
41
- } from "./chunk-DT4HVZ3Y.js";
41
+ } from "./chunk-5L3ARDVS.js";
42
42
  import {
43
43
  getActiveAgents,
44
44
  getAgentByType,
45
45
  getAvailableAgentTypes
46
- } from "./chunk-RPFER2VQ.js";
46
+ } from "./chunk-CC3KGKTT.js";
47
47
  import {
48
48
  INTERRUPT_MESSAGE,
49
49
  createAssistantMessage,
50
50
  createUserMessage,
51
51
  getLastAssistantMessageId
52
- } from "./chunk-MXDHTE5J.js";
52
+ } from "./chunk-3QVMMVBR.js";
53
53
  import {
54
54
  formatDuration,
55
55
  formatNumber
56
56
  } from "./chunk-OUXHGDLH.js";
57
57
  import {
58
58
  getAbsolutePath
59
- } from "./chunk-66JIUGLV.js";
59
+ } from "./chunk-7J2VUSTU.js";
60
60
  import {
61
61
  LspFacade,
62
62
  formatDiagnosticsPretty
63
- } from "./chunk-ZOWRLM6Q.js";
63
+ } from "./chunk-TAIA77SV.js";
64
64
  import {
65
65
  getModelManager
66
- } from "./chunk-IPYLXGFV.js";
66
+ } from "./chunk-2ROHFSTR.js";
67
67
  import {
68
68
  getContext
69
- } from "./chunk-MUD34BHM.js";
69
+ } from "./chunk-QA4EWB66.js";
70
70
  import {
71
71
  filesToTree,
72
72
  ripGrepWithStatus
73
- } from "./chunk-4V6WD6R2.js";
73
+ } from "./chunk-KFQXCTMP.js";
74
74
  import {
75
75
  getTheme
76
- } from "./chunk-S75DS5IC.js";
76
+ } from "./chunk-JGJ76XUO.js";
77
77
  import {
78
78
  debug
79
- } from "./chunk-OEH4JATH.js";
79
+ } from "./chunk-62WLN2YP.js";
80
80
  import {
81
81
  BunShell,
82
82
  getCwd,
@@ -87,7 +87,7 @@ import {
87
87
  overwriteLog,
88
88
  readTaskOutput,
89
89
  resolveXdgDataPath
90
- } from "./chunk-J46HCSM3.js";
90
+ } from "./chunk-DG2RH364.js";
91
91
 
92
92
  // src/tools/index.ts
93
93
  import { memoize as memoize2 } from "lodash-es";
@@ -766,7 +766,7 @@ async function analyzeOutputWithLsp(output, exitCode) {
766
766
  if (exitCode !== 0 || errorCount > 0 || warningCount > 0) {
767
767
  try {
768
768
  const { isAbsolute: isAbsolute3, resolve: resolve4 } = await import("path");
769
- const { getSessionRoot: getSessionRoot2 } = await import("./state-DXHBJ5GD.js");
769
+ const { getSessionRoot: getSessionRoot2 } = await import("./state-LCDP6BGJ.js");
770
770
  const lines = output.split("\n");
771
771
  const uniqueFiles = /* @__PURE__ */ new Set();
772
772
  const lspSuggestions = [];
@@ -1139,7 +1139,7 @@ var DeleteTool = {
1139
1139
  }
1140
1140
  if (!force) {
1141
1141
  try {
1142
- const { LspFacade: LspFacade2 } = await import("./lsp-DL76IXYS.js");
1142
+ const { LspFacade: LspFacade2 } = await import("./lsp-N647675R.js");
1143
1143
  const referenceDetail = await LspFacade2.checkFileReferences(fullPath);
1144
1144
  if (referenceDetail) {
1145
1145
  failedItems.push(
@@ -2896,194 +2896,6 @@ var TaskTool = {
2896
2896
  }
2897
2897
  };
2898
2898
 
2899
- // src/tools/WebFetcher/WebFetcherTool.tsx
2900
- import { z as z9 } from "zod";
2901
-
2902
- // src/tools/WebFetcher/WebFetcher.ts
2903
- import fetch from "node-fetch";
2904
- import { AbortController as AbortController2 } from "abort-controller";
2905
- import { parse } from "node-html-parser";
2906
- import TurndownService from "turndown";
2907
- import { gfm } from "turndown-plugin-gfm";
2908
- var WebFetcher = class {
2909
- DEFAULT_TIMEOUT = 30;
2910
- // seconds
2911
- MAX_RESPONSE_SIZE = 5 * 1024 * 1024;
2912
- // 5MB
2913
- CACHE_TTL = 15 * 60 * 1e3;
2914
- // 15 minutes
2915
- MAX_ANALYSIS_CONTENT_LENGTH = 5e4;
2916
- // ~15k tokens
2917
- turndownService;
2918
- cache = /* @__PURE__ */ new Map();
2919
- constructor() {
2920
- this.turndownService = new TurndownService({
2921
- headingStyle: "atx",
2922
- codeBlockStyle: "fenced",
2923
- bulletListMarker: "-",
2924
- // Explicitly set bullet marker
2925
- emDelimiter: "*"
2926
- });
2927
- this.turndownService.use(gfm);
2928
- }
2929
- async execute(input) {
2930
- let content;
2931
- let isCached = false;
2932
- const format = input.format || "markdown";
2933
- const cached = this.cache.get(input.url);
2934
- if (cached) {
2935
- if (Date.now() - cached.timestamp < this.CACHE_TTL) {
2936
- content = cached.content;
2937
- isCached = true;
2938
- } else {
2939
- this.cache.delete(input.url);
2940
- }
2941
- }
2942
- if (!isCached) {
2943
- const timeout = (input.timeout || this.DEFAULT_TIMEOUT) * 1e3;
2944
- const controller = new AbortController2();
2945
- const timeoutId = setTimeout(() => controller.abort(), timeout);
2946
- try {
2947
- const response = await fetch(input.url, {
2948
- method: "GET",
2949
- headers: {
2950
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
2951
- },
2952
- signal: controller.signal
2953
- });
2954
- if (!response.ok) {
2955
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
2956
- }
2957
- const contentLength = response.headers.get("content-length");
2958
- if (contentLength && parseInt(contentLength) > this.MAX_RESPONSE_SIZE) {
2959
- throw new Error("Response too large (exceeds 5MB limit)");
2960
- }
2961
- const contentType = response.headers.get("content-type") || "";
2962
- const arrayBuffer = await response.arrayBuffer();
2963
- if (arrayBuffer.byteLength > this.MAX_RESPONSE_SIZE) {
2964
- throw new Error("Response too large (exceeds 5MB limit)");
2965
- }
2966
- const text = new TextDecoder().decode(arrayBuffer);
2967
- let rawContent = text;
2968
- if (contentType.includes("text/html")) {
2969
- if (format === "markdown") {
2970
- const cleanedHtml = this.cleanHtml(text);
2971
- rawContent = this.turndownService.turndown(cleanedHtml);
2972
- } else if (format === "text") {
2973
- const cleanedHtml = this.cleanHtml(text);
2974
- const root = parse(cleanedHtml);
2975
- rawContent = root.textContent.trim();
2976
- } else if (format === "html") {
2977
- rawContent = this.cleanHtml(text);
2978
- }
2979
- }
2980
- content = rawContent;
2981
- this.cache.set(input.url, { content, timestamp: Date.now() });
2982
- } finally {
2983
- clearTimeout(timeoutId);
2984
- }
2985
- }
2986
- if (input.prompt) {
2987
- const truncatedContent = content.length > this.MAX_ANALYSIS_CONTENT_LENGTH ? content.substring(0, this.MAX_ANALYSIS_CONTENT_LENGTH) + "\n\n[Content truncated due to length]" : content;
2988
- const systemPrompt = [
2989
- "You are analyzing web content based on a user's specific request.",
2990
- "The content has been extracted from a webpage and converted to markdown.",
2991
- "Provide a focused response that directly addresses the user's prompt."
2992
- ];
2993
- const userPrompt = `Here is the content from ${input.url}:
2994
-
2995
- ${truncatedContent}
2996
-
2997
- User request: ${input.prompt}`;
2998
- const aiResponse = await queryQuick({
2999
- systemPrompt,
3000
- userPrompt,
3001
- enablePromptCaching: false
3002
- });
3003
- const aiText = aiResponse.message.content.filter((c) => c.type === "text").map((c) => c.text).join("");
3004
- return {
3005
- url: input.url,
3006
- title: input.url,
3007
- content: aiText,
3008
- metadata: {
3009
- mode: "analysis",
3010
- format,
3011
- cached: isCached
3012
- }
3013
- };
3014
- }
3015
- return {
3016
- url: input.url,
3017
- title: input.url,
3018
- // Temporary title
3019
- content,
3020
- metadata: {
3021
- mode: "fetch",
3022
- format,
3023
- cached: isCached
3024
- }
3025
- };
3026
- }
3027
- cleanHtml(html) {
3028
- const root = parse(html);
3029
- const elementsToRemove = root.querySelectorAll("script, style, nav, footer, iframe, noscript, object, embed");
3030
- elementsToRemove.forEach((el) => el.remove());
3031
- return root.toString();
3032
- }
3033
- };
3034
-
3035
- // src/tools/WebFetcher/WebFetcherTool.tsx
3036
- import React9 from "react";
3037
- import { Box as Box9, Text as Text9 } from "ink";
3038
- var inputSchema9 = z9.strictObject({
3039
- url: z9.string().url().describe("The URL to fetch content from"),
3040
- prompt: z9.string().optional().describe("Optional prompt to perform AI analysis on the content"),
3041
- format: z9.enum(["markdown", "html", "text"]).optional().describe("Output format (default: markdown)"),
3042
- timeout: z9.number().optional().describe("Timeout in seconds (default: 30)")
3043
- });
3044
- var WebFetcherTool = {
3045
- name: "web_fetcher",
3046
- async description() {
3047
- return "Fetch and analyze web content. Supports HTML cleaning, Markdown conversion, and AI-powered analysis.";
3048
- },
3049
- userFacingName: () => "Web Fetcher",
3050
- inputSchema: inputSchema9,
3051
- isReadOnly: () => true,
3052
- isConcurrencySafe: () => true,
3053
- async isEnabled() {
3054
- return true;
3055
- },
3056
- needsPermissions() {
3057
- return true;
3058
- },
3059
- async prompt() {
3060
- return "Fetch and analyze web content. Supports HTML cleaning, Markdown conversion, and AI-powered analysis.";
3061
- },
3062
- renderResultForAssistant(output) {
3063
- if (output.metadata.mode === "analysis") {
3064
- return output.content;
3065
- }
3066
- return `Content from ${output.url} (Format: ${output.metadata.format}):
3067
-
3068
- ${output.content}`;
3069
- },
3070
- renderToolUseMessage(input) {
3071
- return `Fetching ${input.url}${input.prompt ? ` with prompt: "${input.prompt}"` : ""}`;
3072
- },
3073
- renderToolResultMessage(output) {
3074
- return /* @__PURE__ */ React9.createElement(Box9, { flexDirection: "column" }, /* @__PURE__ */ React9.createElement(Text9, null, "Fetched ", output.url, " (", output.metadata.mode, ")"));
3075
- },
3076
- async *call(input, context) {
3077
- const fetcher = new WebFetcher();
3078
- const result = await fetcher.execute(input);
3079
- yield {
3080
- type: "result",
3081
- data: result,
3082
- resultForAssistant: this.renderResultForAssistant(result)
3083
- };
3084
- }
3085
- };
3086
-
3087
2899
  // src/tools/index.ts
3088
2900
  var getAllTools = () => [
3089
2901
  TaskTool,
@@ -3101,7 +2913,7 @@ var getAllTools = () => [
3101
2913
  DeleteTool,
3102
2914
  NotebookEditTool,
3103
2915
  TodoWriteTool,
3104
- WebFetcherTool,
2916
+ WebFetchTool,
3105
2917
  WebSearchTool,
3106
2918
  AskUserQuestionTool,
3107
2919
  EnterPlanModeTool,