@v587d/capital-generation 2.7.11 → 2.8.0

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 (208) hide show
  1. package/CHANGELOG.md +76 -3
  2. package/README.md +4 -2
  3. package/chart-ui/package.json +1 -1
  4. package/config/package.json +1 -1
  5. package/lib/agents/bash-guard.d.ts +22 -17
  6. package/lib/agents/bash-guard.js +32 -28
  7. package/lib/agents/root-tool-policy.d.ts +29 -3
  8. package/lib/agents/root-tool-policy.js +100 -14
  9. package/lib/index.js +14 -8
  10. package/lib/web-retriever/local-fetch.d.ts +1 -1
  11. package/lib/web-retriever/local-fetch.js +1 -1
  12. package/lib/web-retriever/wind-client.d.ts +1 -1
  13. package/lib/web-retriever/wind-client.js +1 -1
  14. package/package.json +1 -1
  15. package/preset/capital-generation/README.md +22 -15
  16. package/preset/capital-generation/agent.patch.yml +20 -4
  17. package/preset/capital-generation/skills/capital-data-profile/SKILL.md +177 -0
  18. package/preset/capital-generation/skills/capital-data-protocol/SKILL.md +11 -269
  19. package/preset/capital-generation/skills/capital-data-query/SKILL.md +109 -0
  20. package/preset/capital-generation/skills/capital-equity-research/SKILL.md +2 -2
  21. package/preset/capital-generation/skills/capital-orchestration/SKILL.md +3 -2
  22. package/preset/capital-generation/skills/capital-web-evidence/SKILL.md +134 -0
  23. package/preset/capital-generation/skills/capital-web-protocol/SKILL.md +10 -130
  24. package/selected-skills/InvestSkill/UPSTREAM.md +18 -0
  25. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/SKILL.md +10 -296
  26. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/10-retrieving-the-filing.md +130 -0
  27. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/11-key-metrics-table.md +129 -0
  28. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/12-language-mode.md +60 -0
  29. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/SKILL.md +13 -152
  30. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/references/10-analysis-framework.md +75 -0
  31. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/references/11-output-and-signal.md +51 -0
  32. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/references/12-thesis-invalidation.md +44 -0
  33. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/SKILL.md +10 -284
  34. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/references/10-persona.md +113 -0
  35. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/references/11-section-c-company-specific.md +108 -0
  36. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/references/12-section-f-90-day.md +85 -0
  37. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/SKILL.md +11 -433
  38. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/10-overview.md +82 -0
  39. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/11-porter-s-five-forces.md +137 -0
  40. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/12-innovation-disruption-assessment.md +112 -0
  41. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/13-input-formats.md +130 -0
  42. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/SKILL.md +12 -639
  43. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/10-analysis-framework.md +138 -0
  44. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/11-dividend-history-and-reliability.md +131 -0
  45. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/12-share-buyback-analysis.md +125 -0
  46. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/13-fcf-deployment-scorecard.md +133 -0
  47. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/14-output.md +149 -0
  48. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/SKILL.md +10 -411
  49. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/references/10-analysis-framework.md +194 -0
  50. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/references/11-data-sources.md +196 -0
  51. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/references/12-thesis-invalidation.md +43 -0
  52. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/SKILL.md +11 -234
  53. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/references/10-overview.md +86 -0
  54. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/references/11-phase-4-the-implied.md +60 -0
  55. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/references/12-output-format.md +83 -0
  56. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/references/13-standard-signal-output.md +34 -0
  57. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/SKILL.md +10 -304
  58. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/references/10-key-economic-indicators.md +98 -0
  59. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/references/11-credit-market-indicators.md +114 -0
  60. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/references/12-recession-probability-scoring.md +114 -0
  61. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/SKILL.md +11 -236
  62. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/references/10-overview.md +83 -0
  63. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/references/11-phase-5-overlap-with.md +69 -0
  64. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/references/12-output-format.md +79 -0
  65. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/references/13-standard-signal-output.md +34 -0
  66. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/SKILL.md +11 -243
  67. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/10-overview.md +61 -0
  68. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/11-phase-2-source-hierarchy.md +54 -0
  69. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/12-phase-5-consistency.md +90 -0
  70. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/13-notes.md +68 -0
  71. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/SKILL.md +11 -499
  72. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/10-overview.md +143 -0
  73. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/11-phase-3-financial-statement.md +167 -0
  74. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/12-phase-6-management-tone.md +176 -0
  75. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/13-thesis-invalidation.md +43 -0
  76. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/SKILL.md +10 -291
  77. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/10-overview.md +117 -0
  78. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/11-step-3-position-locator.md +112 -0
  79. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/12-visualization-support.md +84 -0
  80. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/SKILL.md +10 -457
  81. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/10-analysis-framework.md +185 -0
  82. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/11-pattern-recognition.md +175 -0
  83. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/12-interpretation-guidelines.md +120 -0
  84. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/SKILL.md +11 -503
  85. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/10-analysis-framework.md +132 -0
  86. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/11-ownership-concentration-analysis.md +166 -0
  87. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/12-red-flags-warning-signs.md +192 -0
  88. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/13-thesis-invalidation.md +43 -0
  89. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/SKILL.md +11 -264
  90. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/10-overview.md +63 -0
  91. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/11-phase-2-explanation-card.md +108 -0
  92. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/12-output-format.md +88 -0
  93. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/13-standard-signal-output.md +34 -0
  94. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/SKILL.md +11 -448
  95. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/references/10-analysis-framework.md +109 -0
  96. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/references/11-implied-volatility-iv-analysis.md +102 -0
  97. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/references/12-earnings-play-analysis.md +109 -0
  98. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/references/13-data-sources.md +159 -0
  99. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/SKILL.md +11 -435
  100. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/references/10-phase-1-portfolio-snapshot.md +124 -0
  101. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/references/11-phase-6-correlation-diversification.md +124 -0
  102. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/references/12-phase-9-rebalancing-decision.md +153 -0
  103. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/references/13-data-verification.md +62 -0
  104. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/SKILL.md +11 -372
  105. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/references/10-overview.md +102 -0
  106. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/references/11-phase-3-the-trim.md +88 -0
  107. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/references/12-phase-6-the-thesis.md +105 -0
  108. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/references/13-input-formats.md +105 -0
  109. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/SKILL.md +10 -250
  110. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/references/10-overview.md +92 -0
  111. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/references/11-phase-4-correlation-spike.md +116 -0
  112. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/references/12-notes.md +65 -0
  113. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/SKILL.md +11 -381
  114. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/10-sector-overview.md +123 -0
  115. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/11-sector-correlation-matrix.md +90 -0
  116. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/12-peer-benchmarking-within-sector.md +92 -0
  117. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/13-consumer-staples.md +105 -0
  118. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/SKILL.md +10 -352
  119. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/references/10-analysis-framework.md +110 -0
  120. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/references/11-bearish-thesis-evaluation.md +118 -0
  121. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/references/12-data-sources.md +148 -0
  122. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/SKILL.md +16 -603
  123. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/10-analysis-components.md +122 -0
  124. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/11-dupont-decomposition.md +121 -0
  125. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/12-quality-scoring-framework.md +115 -0
  126. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/13-dcf-framework.md +113 -0
  127. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/14-analyst-consensus-tracking.md +127 -0
  128. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/15-thesis-invalidation.md +43 -0
  129. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/SKILL.md +13 -177
  130. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/references/10-scoring-framework.md +85 -0
  131. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/references/11-output-format.md +58 -0
  132. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/references/12-invalidation-and-signal.md +51 -0
  133. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/SKILL.md +12 -595
  134. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/10-overview.md +133 -0
  135. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/11-method-2-comparable-company.md +127 -0
  136. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/12-football-field-summary-valuation.md +140 -0
  137. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/13-terminal-value-two-methods.md +121 -0
  138. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/14-when-dcf-is.md +110 -0
  139. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/SKILL.md +12 -304
  140. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/10-overview.md +73 -0
  141. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/11-phase-3-dividends-qualified.md +67 -0
  142. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/12-framework-non-us-module.md +61 -0
  143. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/13-scoring-tax-efficiency-score.md +83 -0
  144. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/14-thesis-invalidation.md +55 -0
  145. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/SKILL.md +16 -612
  146. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/10-chart-pattern-analysis.md +172 -0
  147. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/11-chart-visualization-support.md +181 -0
  148. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/12-multi-timeframe-analysis-mtf.md +95 -0
  149. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/13-advanced-indicators-ichimoku-cloud.md +61 -0
  150. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/14-options-flow-integration.md +95 -0
  151. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/15-thesis-invalidation.md +45 -0
  152. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/SKILL.md +10 -274
  153. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/10-overview.md +94 -0
  154. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/11-phase-5-the-pre.md +113 -0
  155. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/12-example.md +90 -0
  156. package/selected-skills/claude-for-financial-services-cn/UPSTREAM.md +1 -0
  157. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-catalyst-calendar/SKILL.md +18 -184
  158. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-catalyst-calendar/references/10-catalyst-types.md +64 -0
  159. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-catalyst-calendar/references/11-workflow-and-calendar.md +131 -0
  160. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-idea-generation/SKILL.md +16 -195
  161. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-idea-generation/references/10-workflow.md +201 -0
  162. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-sector-overview/SKILL.md +17 -156
  163. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-sector-overview/references/10-workflow.md +161 -0
  164. package/selected-skills/investment-skills/UPSTREAM.md +1 -0
  165. package/selected-skills/investment-skills/skills/buffett-investment-framework/SKILL.md +31 -122
  166. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{01-decision-posture.md → 01-decision-posture-D01-D04.md} +0 -119
  167. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/01-decision-posture-D05-D09.md +123 -0
  168. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/02-business-economics-B01-B03.md +94 -0
  169. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{02-business-economics.md → 02-business-economics-B04-B07.md} +3 -93
  170. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{03-management-governance.md → 03-management-governance-M01-M04.md} +0 -93
  171. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/03-management-governance-M05-M08.md +97 -0
  172. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/04-financial-reality-F01-F03.md +95 -0
  173. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{04-financial-reality.md → 04-financial-reality-F04-F07.md} +3 -94
  174. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{05-valuation.md → 05-valuation-V01-V03.md} +0 -72
  175. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/05-valuation-V04-V06.md +76 -0
  176. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{06-capital-allocation.md → 06-capital-allocation-C01-C04.md} +0 -115
  177. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/06-capital-allocation-C05-C09.md +119 -0
  178. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{07-risk-monitoring.md → 07-risk-monitoring-R01-R03.md} +0 -94
  179. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/07-risk-monitoring-R04-R07.md +98 -0
  180. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays-S01-S03.md +99 -0
  181. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays-S04-S06.md +72 -0
  182. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays-S07-S09.md +74 -0
  183. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays-S10-S12.md +76 -0
  184. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/09-workflows.md +96 -0
  185. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/10-method.md +12 -0
  186. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/11-deterministic-router.md +11 -0
  187. package/selected-skills/peter-lynch-skill/UPSTREAM.md +1 -0
  188. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/SKILL.md +12 -86
  189. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/10-workflow.md +94 -0
  190. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology-1.md +220 -0
  191. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology-2.md +146 -0
  192. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology-3.md +114 -0
  193. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology-4.md +113 -0
  194. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology.md +8 -521
  195. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-1.md +119 -0
  196. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-2.md +82 -0
  197. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-3.md +158 -0
  198. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-4.md +123 -0
  199. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research.md +8 -454
  200. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/methodology-1.md +155 -0
  201. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/methodology-2.md +43 -0
  202. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/methodology.md +6 -180
  203. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research-1.md +114 -0
  204. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research-2.md +180 -0
  205. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research-3.md +92 -0
  206. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research.md +7 -359
  207. package/watchlist/package.json +1 -1
  208. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays.md +0 -309
package/CHANGELOG.md CHANGED
@@ -7,6 +7,72 @@
7
7
  - **第三位(patch)**:不破坏既有工具 / 配置 / 会话的新增与修复(如 2.1.1、2.1.2)。
8
8
  - **第二位(minor)**:有需要用户知晓的行为变更,且段内附迁移说明(如 2.1.0 的图表呈现通道重做、2.2.0 的数据源与检索来源扩容、2.4.0 的**必须换宿主版本**——本插件自己的工具与数据契约没变,所以只抬第二位)。
9
9
 
10
+ ## [2.8.0] - 2026-10-15
11
+
12
+ 主 Agent 的工具面按用户决策调整为「**开 read、同时保留 bash**」,三个平台的口径终于一致。宿主要求与
13
+ 2.7.11 相同(DSH`@0.2.0-rc.2`),**不必换宿主版本**。
14
+
15
+ ### Changed
16
+
17
+ - **主 Agent 现在能直接读文件**(新增 `read`):读精选 Skill 的方法论分册、读工作区里的文件都走它。
18
+ 此前主 Agent 没有读文件的工具,真机上都是拿 `bash` 的 `cat` 绕——能力等价,但现在是正路。此前几版
19
+ 「入口册 + 分册」的分层阅读,也从这一版起有了产品内的正式通道。
20
+ - **主 Agent 保留 `bash` / `pwsh`**(各平台二选一,和数据角色用的是同一颗):用于纯计算兜底。此前
21
+ Linux / Web 平面上它被整体拿掉、而 Windows 桌面端因为已知宿主差异实际没拦住——同一个产品两种行为。
22
+ 现在三端一致:主 Agent 都有 shell。
23
+ - **主 Agent 仍然不能写文件**(`write` / `edit` 不开放,调用时拒绝并指回正路):数据与产物继续走工具
24
+ 回传,落盘由工具实现完成;子 Agent 也一样不直接写文件。读文件的口子开了,写文件的没开——这是刻意的。
25
+ - **通用子会话收掉文件口**:临时子会话读不到原始数据文件(原始行永不出工具层),也写不了文件。
26
+ - **`read` 的读侧纪律写在人设里,而不是写成一道闸门**:主 Agent 不读原始行落盘目录、不读宿主配置与
27
+ 凭据,引用 Skill 分册要整册读完再引用。原因很直白——shell 仍然开着,`cat` 同一个文件不需要任何
28
+ 权限,而沙箱实测只拦写、不拦读;按参数拦路径只会得到一个看起来严、实际绕得开的边界。这一条有回归
29
+ 点名(四条断言),管不住的地方说清楚是谁在管,比假装管住了强。
30
+
31
+ ### 迁移说明
32
+
33
+ - 不需要任何动作:密钥、卡片设置、精选 Skills 勾选、自选股与持仓标记全部照旧读得到。
34
+ - 行为变化只在工具可见性(上面四条);取数、出图、检索的契约都没变。
35
+ - Windows 桌面端那条[已知宿主差异](README.md)依旧存在(主 Agent 的部分工具限制可能不生效);由于 shell
36
+ 本版起对主 Agent 正式开放,这条差异的暴露面缩小为"出图与检索的限制",请继续留意它实际调用了哪些工具。
37
+
38
+ ## [2.7.12] - 2026-10-14
39
+
40
+ 内部整理,治的是同一件事:**正文长过一次的加载窗口,宿主就从中间把它剪掉**。DSH 对任何一次工具结果只
41
+ 保留开头 4,096 与结尾 1,024 字符(阈值 8,192),中间换成一行"结果中段已剪除"的标记——模型不会报错,
42
+ 它照着读到的那半本继续答题。本插件自己写的协议手册、以及你在「精选 Skills」里勾选的第三方研究手册,
43
+ 都撞在同一条线上。
44
+
45
+ 宿主要求与 2.7.11 相同(DSH`@0.2.0-rc.2`),**不必换宿主版本**。这一版没有改任何组件的目录名或包名:
46
+ 四把 API Key、已保存的卡片设置、「精选 Skills」的勾选、自选股清单与持仓标记都原样读得到,不需要重设。
47
+
48
+ ### Changed
49
+
50
+ - **内置协议手册按"册"重切**(你这边无需任何动作):数据协议原先是一册 16,264 字符的正文,`data_junior`
51
+ 按它自己的职责该读的取数与派生细则恰好整段落在被剪掉的中间;现在拆成三册——`capital-data-protocol`
52
+ (取数契约与回传边界)、`capital-data-profile`(profile 回传怎么读)、`capital-data-query`(怎么写查询
53
+ 请求与派生算术)。检索协议(10,324 字符)拆成两册——`capital-web-protocol`(来源边界、收敛法则、
54
+ 降级口径)与 `capital-web-evidence`(回传格式、域名核验清单、抓取失败处置、文档解析)。角色第一条
55
+ 职责点名该读哪一册,章节编号跨册连续。**一册装不下的东西不叫长,叫丢**:要长就再加一册。
56
+ - **7 颗精选 Skill 现在能整本读完**:`buffett-investment-framework`(入口 11,296 → 6,605 字符,
57
+ 参考文件 9 → 22 份)、三颗 A 股研究 `china-idea-generation` / `china-sector-overview` /
58
+ `china-catalyst-calendar`、InvestSkill 的 `bear-case` 与 `stock-screener`、`peter-lynch-skill`
59
+ (入口之外,上游自交的 4 份厚指南也超阈值,两层一起切)。做法是「入口册 + 分册」:勾选后加载的仍是
60
+ 变薄的入口册,方法论分册由 Agent 按入口点名的文件名去打开,一次带回一整册。**内容一条没删**——
61
+ 逐行核对原正文零行丢失(只有指向分册的那几行指针需要改写,7 颗共 16 行),分册总量只准变大。
62
+ - **配置卡片里的「看原文」口径不变**:仍然只给入口那一份正文,分层出来的分册不并进来。想看某颗分册的
63
+ 原文,直接问 Agent 要那一册。
64
+ - **入口正文不再允许宣称"我读过全文了"**:真机样本里模型只加载了入口册,却回答"已经读入全文",还把
65
+ 入口里那段需要本机执行环境的脚本示例当作能力报给用户。现在入口明文要求说清开了哪几册、点名没开的,
66
+ 本轮没读过的检查卡与步骤一律不许上报;那段可执行示例整体搬进参考文件,入口不再挂跑不了的操作。
67
+
68
+ ### 还没解决(不粉饰)
69
+
70
+ - 还剩 **25 颗**精选条目超限(全是 InvestSkill 的单文件厚册,两万到三万二千字符),勾选后拿到的仍是
71
+ 节选。回归里有一条棘轮拦的是"**别再加新的超限条目**",那份存量清单只准变短。
72
+ - 分层只是把剪枝从"加载这一本"挪到"打开那一册",两条通道各自的上限不同(按渲染后的长度算,不按文件
73
+ 大小算)。分册切得不对,用户看到的还是那句"中段已剪除"。
74
+ - 回归能拦体积、拦不住**模型会不会真去开分册**——那一半只能靠真实会话复验,目前还没有样本。
75
+
10
76
  ## [2.7.11] - 2026-10-14
11
77
 
12
78
  内部整理:插件包里两颗 host 平面组件的目录与包名收短了——`capital-config/` → `config/`(`@v587d/config`)、
@@ -16,9 +82,16 @@
16
82
  已勾选的精选 Skills、自选股清单与你自己标的持仓比例**全部原样读得到**——那两行的身份、配置的命名空间、
17
83
  自选股的存储域名和 `/capital-watchlist` 路由都刻意没改,就是为了升级不产生迁移。
18
84
 
19
- 宿主要求与 2.7.10 相同(DSH`@0.2.0-rc.2`),升级无需迁移。唯一要自己动手的情形:如果你手改过 profile
20
- 文件、在里面写了 `./capital-config/index.js` 这类路径,改成 `./config/index.js`(自选股那颗同理);
21
- 由宿主自己生成的那份会在重装时重写,不用管。
85
+ 宿主要求与 2.7.10 相同(DSH`@0.2.0-rc.2`),不必换宿主版本。
86
+
87
+ > **更正(发布当天实测后补,2026-10-14)**:本条这一节原先写的是"升级无需迁移……已勾选的精选
88
+ > Skills 全部原样读得到",**那句只说对了一半**,实测把它推翻。成立的一半:四把 API Key(它们另存在
89
+ > 宿主的凭据域,不在插件配置里)、自选股清单、你标的持仓标记与比例都没有动。不成立的一半:凡是
90
+ > **保存过这张卡片**的人,DSH 在 profile 文件里记那份设置时是**连同当时解析出的模块路径一起**记下
91
+ > 的;目录一改名,宿主对这一行是整行跳过、也不提示,于是「精选 Skills」的勾选、附加人设与
92
+ > 「本机直连」开关会**静默回到默认值**。两种恢复方式任选其一:① 在卡片里重新设一次并保存;
93
+ > ② 打开 `~/.dsh/profiles/<你在用的 profile>/cordis.patch.yml`,把 `capital-config` 那一行的路径从
94
+ > `…/capital-config/index.js` 改成 `…/config/index.js`,再重启宿主。首页常见问题已同步这一条。
22
95
 
23
96
  ### Changed
24
97
 
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  <p align="center">
16
16
  <a href="https://awesome-dsh-plugin.com"><img src="https://awesome-dsh-plugin.com/badge.svg" alt="awesome · DSH plugin"></a>
17
17
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="License"></a>
18
- <a href="https://github.com/v587d/capital-generation/releases"><img src="https://img.shields.io/badge/version-2.7.11-9cf" alt="Version"></a>
18
+ <a href="https://github.com/v587d/capital-generation/releases"><img src="https://img.shields.io/badge/version-2.8.0-9cf" alt="Version"></a>
19
19
  <a href="https://www.npmjs.com/package/@v587d/capital-generation"><img src="https://img.shields.io/npm/v/%40v587d%2Fcapital-generation" alt="npm version"></a>
20
20
  </p>
21
21
 
@@ -167,10 +167,12 @@ https://github.com/v587d/capital-generation
167
167
 
168
168
  - **安装后找不到 Capital 模式?** 确认插件出现在「插件」→ 已安装列表;Web / CLI profile 安装后要重启该 profile,并在新会话选择模式。
169
169
  - **配置在哪?** 打开「插件」→ 已安装的 **Capital Generation**,页面顶部就是「数据源 / 精选 Skills / 包含的组件」三格,四把密钥都在第一格;不在 DSH 的普通「设置」页面,也不用点进任何一行组件。保存密钥后新建会话再试。
170
- - **桌面端升级后仍是旧版?** 桌面端安装时会固定所解析的版本,不会自动升级。卸载后重新安装,再到插件详情查看版本号;如需指定版本,可在地址末尾加 `#v2.7.11` 或 `@2.7.11`。
170
+ - **升级到 2.7.11 后,卡片里的开关回到默认值了?** 这一版把插件内部两个组件换了目录名,宿主按旧路径记住的那份保存值因此接不上。四把 API Key、你的自选股清单与持仓标记都不受影响;「精选 Skills」的勾选、附加人设与「本机直连」开关需要重新设一次并保存,之后就稳定了。已经设过的话,旧的那份仍写在 DSH 的 profile 文件里,手改那一行的路径也能取回来。
171
+ - **桌面端升级后仍是旧版?** 桌面端安装时会固定所解析的版本,不会自动升级。卸载后重新安装,再到插件详情查看版本号;如需指定版本,可在地址末尾加 `#v2.8.0` 或 `@2.8.0`。
171
172
  - **刚发布的新版本装不到?** 桌面端取包时会跳过**刚发布不久**的版本(宿主侧包管理器的发布冷却策略,实测会静默装成上一个版本),国内镜像的同步也可能滞后一段时间。急着用最新代码,改用仓库地址安装最直接。
172
173
  - **网页抓取失败?** 配置卡片中的「允许启动本地提取网页内容」默认开启:AnySearch 提取失败时可尝试本机直连。关闭后,本机直连的具名来源查询也不可用;请检查该开关和网络连接。
173
174
  - **Wind 那部分会消耗积分?** 会。公告与新闻检索、宏观 / 行业 / 汇率指标、按日期区间取的历史 K 线都按次消耗你在 Wind 侧的额度;额度与条款以 Wind 为准,插件不做用量封顶。没配 `WIND_API_KEY` 时这几类不可用,其余功能照常。
175
+ - **运行时主 Agent没有加载已打开的精选 Skill?** 由 LLM 判断是否值得加载精选 Skill, 如果你需要强制使用某一种技能,可通过 `/技能名称` 斜杠命令的形式手动加载已在设置中打开的 Skill。
174
176
 
175
177
  目前 Windows 桌面端有一项[已知宿主差异](CHANGELOG.md):主 Agent 的部分工具限制可能不生效。请特别留意它实际调用了哪些工具;结构化数据的取数限制仍由工具自身执行。
176
178
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v587d/capital-charts",
3
- "version": "2.7.11",
3
+ "version": "2.8.0",
4
4
  "description": "Capital 模式的图表前端组件(浏览器半边 + 序列旁路路由):由 @v587d/capital-generation 随包携带并作为 host 平面行挂载。",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v587d/config",
3
- "version": "2.7.11",
3
+ "version": "2.8.0",
4
4
  "description": "Capital 模式的取数凭据与偏好配置行:卡片坐在 @v587d/capital-generation 插件主页的「配置」段,点这一行本身没有表单。",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * data_junior 的 shell 调用闸门(`bash` / `pwsh` 两个名字都认,两层,都是**可靠判定**,不看命令内容)。
2
+ * shell 调用闸门(`bash` / `pwsh` 两个名字都认,只拦**必然失败的沙箱升级**,不看命令内容)。
3
3
  *
4
4
  * 背景与边界(设计理由全文在 preset/capital-generation/README.md):
5
5
  * - bash 不是计算器,是一台完整终端。本仓实测:沙箱**只拦写**(workspace + /tmp 之外
@@ -14,15 +14,17 @@
14
14
  * 的会话钉成 read-only 会直接打断 `describe_dataset` 的 profile 落盘
15
15
  * (`workspace_not_writable`)。bash 与 Dataset 管线共用同一把尺子(session policy)。
16
16
  *
17
- * 两层规则:
18
- * A 结构层:shell 只对**被委派**的子会话开放(镜像 src/tool-exec.ts 的 delegatedSession)——
19
- * 即使哪天 ROOT_AGENT_DENIED_TOOLS 或 allow 过滤被改坏,执行层仍然拒绝根会话。
20
- * docs/dev/bash-gate.md「工具可见性不是权限隔离」。
21
- * B UX 层:委派子会话的审批策略由框架固定为 `never`(dsh-subagent 的
22
- * `captureDelegatedPolicyOverrides` → `approval/policy: never`,`dsh-user-approval.decide()`
23
- * 在 never 时**直接返回 rejected、根本不调用 answerer**),所以 `sandbox_permissions`
24
- * 必然失败,而且模型会收到「the user rejected…」这种**把系统拒绝说成用户拒绝**的文案。
25
- * 这里提前拦下并给出正确路径:省一次必然白跑的往返 + 纠正归因。
17
+ * 规则只留一层(2026-10-15 用户决策「开 read、同时保留 bash」后):
18
+ * A 结构层(**已随决策移除**):曾拒绝根会话的 shell 调用("只对被委派子会话开放")。
19
+ * 现在主 Agent 保留 bash / pwsh(读 skill 分册、纯计算);shell 归谁由可见性收敛——
20
+ * `ROOT_AGENT_DENIED_TOOLS` 不再含 shell 名,子会话侧由委派行的 `toolFilter` 把 shell
21
+ * 只给 data_junior。迁移的断言在 `test/bash-guard.test.mjs`(根会话放行是**新契约**)。
22
+ * B UX 层(保留,收窄到"被委派 / 身份不可考的调用方"):委派子会话的审批策略由框架固定为
23
+ * `never`(dsh-subagent 的 `captureDelegatedPolicyOverrides` → `approval/policy: never`,
24
+ * `dsh-user-approval.decide()` 在 never 时**直接返回 rejected、根本不调用 answerer**),
25
+ * 所以 `sandbox_permissions` 必然失败,而且模型会收到「the user rejected…」这种
26
+ * **把系统拒绝说成用户拒绝**的文案。这里提前拦下并给出正确路径:省一次必然白跑的往返 +
27
+ * 纠正归因。主 Agent 自己的升级照常走 ask 审批(那正是 escalation 的正当用途)。
26
28
  *
27
29
  * 为什么用 `tools.guard` 而不是 `tools/pre-execute`:guard 是**单调**的(没有 allow 结果,
28
30
  * 任何监听顺序都无法把别人的 deny 翻回 allow),同步、拿到解析后的 `arguments`,且
@@ -32,20 +34,23 @@
32
34
  import { type GuardedExecution, type PolicyContext } from './root-tool-policy.js';
33
35
  /** 闸门看到的调用形状:guard 拿到的是解析后的 arguments,不是一个 shell 字符串。 */
34
36
  export type BashGuardExecution = GuardedExecution;
35
- /** A 结构层拒绝文案:模型可据此改走委派。 */
36
- export declare const SHELL_DELEGATED_ONLY: string;
37
- /** B UX 层拒绝文案:说清"这不是用户拒绝",并给出正确路径。 */
37
+ /**
38
+ * 沙箱升级拒绝文案:说清"这不是用户拒绝",并给出正确路径。
39
+ * (A 结构层文案 `SHELL_DELEGATED_ONLY` 随 2026-10-15 决策删除,断言迁移到
40
+ * `test/bash-guard.test.mjs` 的"根会话放行"用例。)
41
+ */
38
42
  export declare const SHELL_ESCALATION_UNREACHABLE: string;
39
43
  /**
40
44
  * 单次 shell 调用的判定:返回拒绝理由,或 undefined 放行。
41
45
  *
42
- * 判定顺序是"先身份、后能力":身份不对时不该让模型以为问题出在参数上。
43
- * 注意这里**只读两个字段**(调用方身份、`sandbox_permissions`/`justification`),
44
- * 绝不解析 `command`——理由见文件头。
46
+ * 2026-10-15 起主 Agent 的 shell 调用一律放行(A 层随决策移除);被拦的只有**升级参数**
47
+ * ——注意这里**只读两个字段**(调用方身份、`sandbox_permissions`/`justification`),
48
+ * 绝不解析 `command`——理由见文件头。升级判不了身份时 fail closed:根会话的形状是
49
+ * "有 session 且无 parentSession",证明不了就当最坏打算,不给"拿不到身份就放行"的口子。
45
50
  */
46
51
  export declare function bashGuardReason(exec: BashGuardExecution | undefined): string | undefined;
47
52
  /**
48
- * 注册 bash 闸门:对**本 preset 的每个 agent** 在它自己的 scope 上装一次 guard。
53
+ * 注册 shell 闸门:对**本 preset 的每个 agent**(含主 Agent)在它自己的 scope 上装一次 guard。
49
54
  *
50
55
  * 监听位置与 `registerRootToolPolicy` 同因:`agent/created` 的路由键是 agent 对象本身,
51
56
  * 注册在 standing scope(打了标签)的监听器**收不到且不报错**,必须挂 `ctx.root`。
@@ -1,5 +1,5 @@
1
1
  /**
2
- * data_junior 的 shell 调用闸门(`bash` / `pwsh` 两个名字都认,两层,都是**可靠判定**,不看命令内容)。
2
+ * shell 调用闸门(`bash` / `pwsh` 两个名字都认,只拦**必然失败的沙箱升级**,不看命令内容)。
3
3
  *
4
4
  * 背景与边界(设计理由全文在 preset/capital-generation/README.md):
5
5
  * - bash 不是计算器,是一台完整终端。本仓实测:沙箱**只拦写**(workspace + /tmp 之外
@@ -14,15 +14,17 @@
14
14
  * 的会话钉成 read-only 会直接打断 `describe_dataset` 的 profile 落盘
15
15
  * (`workspace_not_writable`)。bash 与 Dataset 管线共用同一把尺子(session policy)。
16
16
  *
17
- * 两层规则:
18
- * A 结构层:shell 只对**被委派**的子会话开放(镜像 src/tool-exec.ts 的 delegatedSession)——
19
- * 即使哪天 ROOT_AGENT_DENIED_TOOLS 或 allow 过滤被改坏,执行层仍然拒绝根会话。
20
- * docs/dev/bash-gate.md「工具可见性不是权限隔离」。
21
- * B UX 层:委派子会话的审批策略由框架固定为 `never`(dsh-subagent 的
22
- * `captureDelegatedPolicyOverrides` → `approval/policy: never`,`dsh-user-approval.decide()`
23
- * 在 never 时**直接返回 rejected、根本不调用 answerer**),所以 `sandbox_permissions`
24
- * 必然失败,而且模型会收到「the user rejected…」这种**把系统拒绝说成用户拒绝**的文案。
25
- * 这里提前拦下并给出正确路径:省一次必然白跑的往返 + 纠正归因。
17
+ * 规则只留一层(2026-10-15 用户决策「开 read、同时保留 bash」后):
18
+ * A 结构层(**已随决策移除**):曾拒绝根会话的 shell 调用("只对被委派子会话开放")。
19
+ * 现在主 Agent 保留 bash / pwsh(读 skill 分册、纯计算);shell 归谁由可见性收敛——
20
+ * `ROOT_AGENT_DENIED_TOOLS` 不再含 shell 名,子会话侧由委派行的 `toolFilter` 把 shell
21
+ * 只给 data_junior。迁移的断言在 `test/bash-guard.test.mjs`(根会话放行是**新契约**)。
22
+ * B UX 层(保留,收窄到"被委派 / 身份不可考的调用方"):委派子会话的审批策略由框架固定为
23
+ * `never`(dsh-subagent 的 `captureDelegatedPolicyOverrides` → `approval/policy: never`,
24
+ * `dsh-user-approval.decide()` 在 never 时**直接返回 rejected、根本不调用 answerer**),
25
+ * 所以 `sandbox_permissions` 必然失败,而且模型会收到「the user rejected…」这种
26
+ * **把系统拒绝说成用户拒绝**的文案。这里提前拦下并给出正确路径:省一次必然白跑的往返 +
27
+ * 纠正归因。主 Agent 自己的升级照常走 ask 审批(那正是 escalation 的正当用途)。
26
28
  *
27
29
  * 为什么用 `tools.guard` 而不是 `tools/pre-execute`:guard 是**单调**的(没有 allow 结果,
28
30
  * 任何监听顺序都无法把别人的 deny 翻回 allow),同步、拿到解析后的 `arguments`,且
@@ -38,33 +40,35 @@ import { agentSessionId, isCapitalAgent, SHELL_TOOL_NAMES } from './root-tool-po
38
40
  * 一次都不触发,且不报错(2026-09-30 实测发现,症状是"§1.6 那道闸门在 Windows 上是死代码")。
39
41
  */
40
42
  const shellToolNames = new Set(SHELL_TOOL_NAMES);
41
- /** A 结构层拒绝文案:模型可据此改走委派。 */
42
- export const SHELL_DELEGATED_ONLY = 'shell 工具(bash / pwsh)只对被委派的数据子 Agent 开放,当前调用方不是被委派的子会话;'
43
- + '数据与统计请由主 Agent 委派 data_collector / data_junior。';
44
- /** B UX 层拒绝文案:说清"这不是用户拒绝",并给出正确路径。 */
45
- export const SHELL_ESCALATION_UNREACHABLE = 'shell 工具(bash / pwsh)的沙箱升级在子 Agent 会话里永远无法获批(框架把委派会话的审批策略固定为 never,不会去问用户),不要重试:'
46
- + '缺数值用 describe_dataset / query_dataset,缺数据用 send_message 发 data_gap 回主 Agent。';
43
+ /**
44
+ * 沙箱升级拒绝文案:说清"这不是用户拒绝",并给出正确路径。
45
+ * (A 结构层文案 `SHELL_DELEGATED_ONLY` 随 2026-10-15 决策删除,断言迁移到
46
+ * `test/bash-guard.test.mjs` 的"根会话放行"用例。)
47
+ */
48
+ export const SHELL_ESCALATION_UNREACHABLE = 'shell 工具(bash / pwsh)的沙箱升级只有主 Agent 的会话能拿到用户审批:被委派的子会话拿不到'
49
+ + '(框架把委派会话的审批策略固定为 never,不会去问用户),当前调用方也不是可确认的主 Agent 会话。'
50
+ + '不要重试升级:缺数值用 describe_dataset / query_dataset,缺数据用 send_message 发 data_gap 回主 Agent。';
47
51
  function isRecord(value) {
48
52
  return typeof value === 'object' && value !== null && !Array.isArray(value);
49
53
  }
50
54
  /**
51
55
  * 单次 shell 调用的判定:返回拒绝理由,或 undefined 放行。
52
56
  *
53
- * 判定顺序是"先身份、后能力":身份不对时不该让模型以为问题出在参数上。
54
- * 注意这里**只读两个字段**(调用方身份、`sandbox_permissions`/`justification`),
55
- * 绝不解析 `command`——理由见文件头。
57
+ * 2026-10-15 起主 Agent 的 shell 调用一律放行(A 层随决策移除);被拦的只有**升级参数**
58
+ * ——注意这里**只读两个字段**(调用方身份、`sandbox_permissions`/`justification`),
59
+ * 绝不解析 `command`——理由见文件头。升级判不了身份时 fail closed:根会话的形状是
60
+ * "有 session 且无 parentSession",证明不了就当最坏打算,不给"拿不到身份就放行"的口子。
56
61
  */
57
62
  export function bashGuardReason(exec) {
58
63
  if (exec === undefined || typeof exec.name !== 'string' || !shellToolNames.has(exec.name))
59
64
  return undefined;
60
- const parent = exec.agent?.session?.header?.parentSession;
61
- if (typeof parent !== 'string' || parent.length === 0)
62
- return SHELL_DELEGATED_ONLY;
63
65
  const args = isRecord(exec.arguments) ? exec.arguments : undefined;
64
- if (args !== undefined && (args.sandbox_permissions !== undefined || args.justification !== undefined)) {
65
- return SHELL_ESCALATION_UNREACHABLE;
66
- }
67
- return undefined;
66
+ const escalated = args !== undefined && (args.sandbox_permissions !== undefined || args.justification !== undefined);
67
+ if (!escalated)
68
+ return undefined;
69
+ const parent = exec.agent?.session?.header?.parentSession;
70
+ const knownRoot = exec.agent?.session !== undefined && (typeof parent !== 'string' || parent.length === 0);
71
+ return knownRoot ? undefined : SHELL_ESCALATION_UNREACHABLE;
68
72
  }
69
73
  /** 在某个 agent 自己的 scope 上安装 guard,返回 disposer(不可用时返回 undefined)。 */
70
74
  function installAgentGuard(agent) {
@@ -86,7 +90,7 @@ function installAgentGuard(agent) {
86
90
  }
87
91
  }
88
92
  /**
89
- * 注册 bash 闸门:对**本 preset 的每个 agent** 在它自己的 scope 上装一次 guard。
93
+ * 注册 shell 闸门:对**本 preset 的每个 agent**(含主 Agent)在它自己的 scope 上装一次 guard。
90
94
  *
91
95
  * 监听位置与 `registerRootToolPolicy` 同因:`agent/created` 的路由键是 agent 对象本身,
92
96
  * 注册在 standing scope(打了标签)的监听器**收不到且不报错**,必须挂 `ctx.root`。
@@ -107,7 +111,7 @@ export function registerBashGuard(ctx) {
107
111
  return;
108
112
  const dispose = installAgentGuard(agent);
109
113
  if (dispose === undefined) {
110
- ctx.logger?.warn('capital-generation: bash 闸门未生效(agent scope 上没有 tools.guard):data_junior 的 bash 只剩 persona 软约束');
114
+ ctx.logger?.warn('capital-generation: shell 闸门未生效(agent scope 上没有 tools.guard):沙箱升级拦截只剩 persona 软约束');
111
115
  return;
112
116
  }
113
117
  const id = agentSessionId(agent);
@@ -47,11 +47,15 @@ export declare function rootOcrGuardReason(exec: GuardedExecution | undefined):
47
47
  * `tool-pwsh`,靠 `process.platform === 'win32'` 互斥 `disabled`),所以名字由平台决定。
48
48
  *
49
49
  * ⛔ 但**闸门必须认全集**:只认本平台那一个,另一端就是静默放行——同一个能力两个入口,
50
- * 本地测试只覆盖了接好的那个(AGENTS.md §9.7 的第三种形状)。根侧 deny 与
51
- * `bash-guard.ts` 的子会话 guard 都从这里取名字,不再各写一份。
50
+ * 本地测试只覆盖了接好的那个(AGENTS.md §9.7 的第三种形状)。`bash-guard.ts` 的升级闸门
51
+ * 从这里取名字,不再各写一份。
52
+ *
53
+ * 2026-10-15 用户决策「开 read、同时保留 bash」:shell **不再**进 {@link ROOT_AGENT_DENIED_TOOLS}
54
+ * ——主 Agent 保留 bash / pwsh(读 skill 分册、纯计算);子会话侧仍由委派行的 `toolFilter`
55
+ * 与 `bash-guard.ts` 的升级闸门收敛。
52
56
  */
53
57
  export declare const SHELL_TOOL_NAMES: readonly ["bash", "pwsh"];
54
- export declare const ROOT_AGENT_DENIED_TOOLS: readonly ["render_chart", "subagent_visualization_specialist", "prepare_chart_source", "anysearch_search", "web_retriever_fetch", "wind_docs_announcements", "wind_docs_news", "cls_telegraph", "wscn_lives", "cninfo_irm", "sseinfo_qa", "eastmoney_724", "eastmoney_stock_news", "eastmoney_reports", "sina_reports", "ths_eps_forecast", "bash", "pwsh"];
58
+ export declare const ROOT_AGENT_DENIED_TOOLS: readonly ["render_chart", "subagent_visualization_specialist", "prepare_chart_source", "anysearch_search", "web_retriever_fetch", "wind_docs_announcements", "wind_docs_news", "cls_telegraph", "wscn_lives", "cninfo_irm", "sseinfo_qa", "eastmoney_724", "eastmoney_stock_news", "eastmoney_reports", "sina_reports", "ths_eps_forecast", "write", "edit"];
55
59
  /** 本 preset 的 id(`composedPreset` 的返回值)。 */
56
60
  export declare const CAPITAL_PRESET_ID = "capital-generation";
57
61
  interface ToolRestriction {
@@ -154,6 +158,28 @@ export declare function restrictRootAgentTools(agent: AgentLike | undefined, rec
154
158
  * 已经完成的 deny 收敛(宁可少一层闸门,不能挡住建 agent)。
155
159
  */
156
160
  export declare function installRootOcrGuard(agent: AgentLike | undefined): (() => void) | undefined;
161
+ /** `tool-fs` 的写口工具名(唯一一份):`read` / `read_image` 是只读口,不在名单。 */
162
+ export declare const FS_WRITE_TOOL_NAMES: readonly ["write", "edit"];
163
+ /** fs 写口拒绝文案:指回正确路径(读用 read,落盘走工具回传),并留可恢复的余地。 */
164
+ export declare const FS_WRITE_READ_ONLY: string;
165
+ /**
166
+ * `tool-fs` 写口的调用级闸门(**全局**装在插件 ctx 上,一次安装管住本 preset 所有 agent)。
167
+ *
168
+ * 为什么装全局而不是像 `ocr` 那样按 agent 装:`agent/created` 的落层时机随宿主形状漂移
169
+ * (桌面端 restrict 不写进链路层,见 `docs/dev/bash-gate.md` 的实测记录),而 guard 按
170
+ * `exec.agent` 取链路、与实例绑哪层无关——这正是那份文档里声明的备选方向,先在写口上落地。
171
+ *
172
+ * ⛔ 全局 guard 会吃到本进程**所有**调用,所以判据必须 fail-**open**:registry 读不到、
173
+ * `composedPreset` 抛错、拿不到 agent 的形状一律放行——宁可少拦一层(`ROOT_AGENT_DENIED_TOOLS`
174
+ * 还在视图层兜着),也绝不能把别的 preset(开发会话的 read / write / edit)吃掉。
175
+ * 拒绝只发生在"能确证调用方属于本 preset"时。
176
+ */
177
+ export declare function fsWriteGuardReasonFor(ctx: PolicyContext): (execution: GuardedExecution) => string | undefined;
178
+ /**
179
+ * 装 {@link fsWriteGuardReasonFor}。guard 不可用或安装异常都不外抛(调用方是装配路径);
180
+ * disposer 由 `ctx.effect` 持有,随本 fiber 释放。
181
+ */
182
+ export declare function registerFsWriteGuard(ctx: PolicyContext): void;
157
183
  /**
158
184
  * 注册 `agent/created` 监听。监听器只做一件事:对本 preset 的根 Agent 收敛一次。
159
185
  *
@@ -64,8 +64,12 @@ export function rootOcrGuardReason(exec) {
64
64
  * `tool-pwsh`,靠 `process.platform === 'win32'` 互斥 `disabled`),所以名字由平台决定。
65
65
  *
66
66
  * ⛔ 但**闸门必须认全集**:只认本平台那一个,另一端就是静默放行——同一个能力两个入口,
67
- * 本地测试只覆盖了接好的那个(AGENTS.md §9.7 的第三种形状)。根侧 deny 与
68
- * `bash-guard.ts` 的子会话 guard 都从这里取名字,不再各写一份。
67
+ * 本地测试只覆盖了接好的那个(AGENTS.md §9.7 的第三种形状)。`bash-guard.ts` 的升级闸门
68
+ * 从这里取名字,不再各写一份。
69
+ *
70
+ * 2026-10-15 用户决策「开 read、同时保留 bash」:shell **不再**进 {@link ROOT_AGENT_DENIED_TOOLS}
71
+ * ——主 Agent 保留 bash / pwsh(读 skill 分册、纯计算);子会话侧仍由委派行的 `toolFilter`
72
+ * 与 `bash-guard.ts` 的升级闸门收敛。
69
73
  */
70
74
  export const SHELL_TOOL_NAMES = ['bash', 'pwsh'];
71
75
  export const ROOT_AGENT_DENIED_TOOLS = [
@@ -91,10 +95,19 @@ export const ROOT_AGENT_DENIED_TOOLS = [
91
95
  */
92
96
  ...RETRIEVAL_DENIED_TOOLS,
93
97
  /**
94
- * bash 只给 data_junior(它是数据侧的"纯计算兜底")。主 Agent 不需要它,而且一旦拥有
95
- * 就等于拿到通用执行 + 整机读 + 出网能力,会绕过数据调度与出图两道结构 gate。
98
+ * 文件写口收敛:preset 挂 `tool-fs` 一颗(read / write / edit),主 Agent 只留 `read`
99
+ * (2026-10-15 用户决策「开 read、同时保留 bash」)。`write` / `edit` 这里逐名 deny 是
100
+ * **视图层**(restrict 落对层的形状里主 Agent 根本看不见写口);由于 restrict 落层依赖
101
+ * 宿主形状(桌面端不写进链路层,见 `docs/dev/bash-gate.md`),调用层还有
102
+ * {@link fsWriteGuardReasonFor} 兜底——两层拦同一件事:业务落盘只走工具实现
103
+ * (`store.writeContext` 等),模型不直接写文件。
104
+ *
105
+ * `read_image` 刻意不点名:它只读、且条件注册(依赖宿主 `attachments` 服务),照
106
+ * `web_search` / `web_fetch` 的教训不该在名单里养 `failed` 记录。`tool-fs-search`
107
+ * (glob / grep)本轮不挂:需求只是"读得动",发现面等真需求再开。
96
108
  */
97
- ...SHELL_TOOL_NAMES,
109
+ 'write',
110
+ 'edit',
98
111
  ];
99
112
  /** 本 preset 的 id(`composedPreset` 的返回值)。 */
100
113
  export const CAPITAL_PRESET_ID = 'capital-generation';
@@ -110,26 +123,38 @@ export function agentSessionId(agent) {
110
123
  const id = agent?.session?.id;
111
124
  return typeof id === 'string' && id.length > 0 ? id : undefined;
112
125
  }
113
- /** 只有本 preset 的 agent 才收敛:别的 preset 的 agent 不该被我们碰。 */
114
- export function isCapitalAgent(ctx, agent) {
126
+ /** registry 认领结果:字符串 = `composedPreset` 的原样返回值,`'no-registry'` = registry 或方法不在。 */
127
+ const NO_REGISTRY = 'no-registry';
128
+ /**
129
+ * 读 `agentPresets` registry 对某个 agent 的认领结果——**registry 读取只此一份**
130
+ * (两个判据的差异只在"读不到时认领还是放行",见各自调用点)。
131
+ * `composedPreset` 抛错按"不认领"返回 undefined(不能吞进 `'no-registry'`:那会改变缺省方向)。
132
+ */
133
+ function presetClaimOf(ctx, agent) {
115
134
  let presets;
116
135
  try {
117
136
  presets = ctx.get?.('agentPresets');
118
137
  }
119
138
  catch {
120
- presets = undefined;
121
- }
122
- if (presets === undefined || typeof presets.composedPreset !== 'function') {
123
- // 读不到 registry 时保守放行:逐名 restrict 本身会拒绝未知工具名,不会误伤别的 preset。
124
- return true;
139
+ return NO_REGISTRY;
125
140
  }
141
+ if (presets === undefined || typeof presets.composedPreset !== 'function')
142
+ return NO_REGISTRY;
126
143
  try {
127
- return presets.composedPreset(agent?.ctx) === CAPITAL_PRESET_ID;
144
+ return presets.composedPreset(agent?.ctx);
128
145
  }
129
146
  catch {
130
- return false;
147
+ return undefined;
131
148
  }
132
149
  }
150
+ /** 只有本 preset 的 agent 才收敛:别的 preset 的 agent 不该被我们碰。 */
151
+ export function isCapitalAgent(ctx, agent) {
152
+ const claim = presetClaimOf(ctx, agent);
153
+ // 读不到 registry 时保守**认领**:逐名 restrict 本身会拒绝未知工具名,不会误伤别的 preset。
154
+ if (claim === NO_REGISTRY)
155
+ return true;
156
+ return claim === CAPITAL_PRESET_ID;
157
+ }
133
158
  const probes = [];
134
159
  const MAX_PROBES = 8;
135
160
  /** 最近 {@link MAX_PROBES} 条收敛现场(进程内;不落盘,随宿主进程生灭)。 */
@@ -215,6 +240,67 @@ export function installRootOcrGuard(agent) {
215
240
  return undefined;
216
241
  }
217
242
  }
243
+ /** `tool-fs` 的写口工具名(唯一一份):`read` / `read_image` 是只读口,不在名单。 */
244
+ export const FS_WRITE_TOOL_NAMES = ['write', 'edit'];
245
+ const fsWriteNames = new Set(FS_WRITE_TOOL_NAMES);
246
+ /** fs 写口拒绝文案:指回正确路径(读用 read,落盘走工具回传),并留可恢复的余地。 */
247
+ export const FS_WRITE_READ_ONLY = 'write / edit 不开放(主 Agent 与子会话都不直接写文件):读文件用 read;'
248
+ + '数据与产物走工具回传(DatasetRef / chart_ref / send_message),需要落盘的由工具实现完成。'
249
+ + '若你判断确需写文件,用 send_message 把 data_gap 与已有证据发回主 Agent 协调。';
250
+ /**
251
+ * `tool-fs` 写口的调用级闸门(**全局**装在插件 ctx 上,一次安装管住本 preset 所有 agent)。
252
+ *
253
+ * 为什么装全局而不是像 `ocr` 那样按 agent 装:`agent/created` 的落层时机随宿主形状漂移
254
+ * (桌面端 restrict 不写进链路层,见 `docs/dev/bash-gate.md` 的实测记录),而 guard 按
255
+ * `exec.agent` 取链路、与实例绑哪层无关——这正是那份文档里声明的备选方向,先在写口上落地。
256
+ *
257
+ * ⛔ 全局 guard 会吃到本进程**所有**调用,所以判据必须 fail-**open**:registry 读不到、
258
+ * `composedPreset` 抛错、拿不到 agent 的形状一律放行——宁可少拦一层(`ROOT_AGENT_DENIED_TOOLS`
259
+ * 还在视图层兜着),也绝不能把别的 preset(开发会话的 read / write / edit)吃掉。
260
+ * 拒绝只发生在"能确证调用方属于本 preset"时。
261
+ */
262
+ export function fsWriteGuardReasonFor(ctx) {
263
+ return (execution) => {
264
+ const name = execution?.name;
265
+ if (typeof name !== 'string' || !fsWriteNames.has(name))
266
+ return undefined;
267
+ if (presetClaimOf(ctx, execution.agent) !== CAPITAL_PRESET_ID)
268
+ return undefined;
269
+ return FS_WRITE_READ_ONLY;
270
+ };
271
+ }
272
+ /**
273
+ * 装 {@link fsWriteGuardReasonFor}。guard 不可用或安装异常都不外抛(调用方是装配路径);
274
+ * disposer 由 `ctx.effect` 持有,随本 fiber 释放。
275
+ */
276
+ export function registerFsWriteGuard(ctx) {
277
+ const install = () => {
278
+ let tools;
279
+ try {
280
+ const direct = ctx.tools;
281
+ const viaGet = typeof ctx.get === 'function' ? ctx.get('tools') : undefined;
282
+ const candidate = direct !== undefined ? direct : viaGet;
283
+ tools = candidate;
284
+ }
285
+ catch {
286
+ return undefined;
287
+ }
288
+ if (tools === undefined || typeof tools.guard !== 'function')
289
+ return undefined;
290
+ try {
291
+ const dispose = tools.guard(fsWriteGuardReasonFor(ctx));
292
+ return typeof dispose === 'function' ? dispose : undefined;
293
+ }
294
+ catch {
295
+ return undefined;
296
+ }
297
+ };
298
+ if (typeof ctx.effect === 'function') {
299
+ ctx.effect(() => install() ?? (() => { }), 'capital-generation.fs-write-guard()');
300
+ return;
301
+ }
302
+ install();
303
+ }
218
304
  /**
219
305
  * 注册 `agent/created` 监听。监听器只做一件事:对本 preset 的根 Agent 收敛一次。
220
306
  *
package/lib/index.js CHANGED
@@ -11,7 +11,7 @@ import { registerTimeTool } from './time/tools.js';
11
11
  import { registerWatchlistTool } from './watchlist/tools.js';
12
12
  import { registerChartTool } from './chart/tool.js';
13
13
  import { createChartEventPublisher } from './chart/events.js';
14
- import { registerRootToolPolicy, rootPolicyProbes } from './agents/root-tool-policy.js';
14
+ import { registerRootToolPolicy, registerFsWriteGuard, rootPolicyProbes } from './agents/root-tool-policy.js';
15
15
  import { registerBashGuard } from './agents/bash-guard.js';
16
16
  import { registerRootSelectedSkills, SELECTED_SKILL_CATALOG } from './agents/selected-skills-provider.js';
17
17
  import { ChartSourceTokenStore, registerChartSourceTool } from './chart/source-token.js';
@@ -362,16 +362,22 @@ export function apply(ctx, config) {
362
362
  chartEvents: () => createChartEventPublisher(chartEventContext),
363
363
  });
364
364
  // 根 Agent 工具收敛:`agent/created` 里对**主 Agent**(无 parentSession)在其自己的
365
- // scope 上 deny render_chart / subagent_visualization_specialist / prepare_chart_source。
365
+ // scope 上逐名 deny `ROOT_AGENT_DENIED_TOOLS`(出图三件套 + 十三个出网工具 + `write` /
366
+ // `edit`;2026-10-15 用户决策「开 read、同时保留 bash」后 shell 名已移出名单)。
366
367
  // 子 Agent 的 scope parent 是 standing key(兄弟),因此不受影响。
367
368
  registerRootToolPolicy(ctx);
368
- // data_junior 的 bash 闸门:对**本 preset 的每个 agent** 在其自己的 scope 上装一次单调 guard。
369
- // 两层可靠判定——A 只对**被委派**子会话开放(镜像 tool-exec.ts 的 delegatedSession);
370
- // B 拦掉必然失败的 `sandbox_permissions`(委派会话的审批策略由框架固定为 never,
371
- // answerer 根本不会被调用),并给出正确路径。**不解析命令内容**:正则挡不住
372
- // `node -e`,而 node/python 正是引入 bash 的目的;禁区纪律走 data_junior 的 persona。
373
- // 理由全文见 src/agents/bash-guard.ts 与 docs/dev/bash-gate.md §1.6「data_junior 的 bash 闸门」。
369
+ // shell 闸门:对**本 preset 的每个 agent**(含主 Agent)在其自己的 scope 上装一次单调 guard,
370
+ // 只拦**必然失败的沙箱升级**(`sandbox_permissions` / `justification`:被委派会话的审批策略
371
+ // 由框架固定为 never,answerer 根本不会被调用),并给出正确路径。主 Agent 的 shell 保留
372
+ // (2026-10-15 决策),它的升级走正常 ask 审批。**不解析命令内容**:正则挡不住 `node -e`,
373
+ // 而 node/python 正是引入 bash 的目的;禁区纪律走 data_junior 的 persona。
374
+ // 理由全文见 src/agents/bash-guard.ts 与 docs/dev/bash-gate.md §1.6。
374
375
  registerBashGuard(ctx);
376
+ // fs 写口闸门:**全局**装一次(guard 按 `exec.agent` 取链路,与实例绑哪层无关——
377
+ // docs/dev/bash-gate.md §1.6 里声明的备选方向在写口上落地),调用期拦本 preset 的
378
+ // `write` / `edit`;`read` 开放给主 Agent 读 skill 分册与工作区文件。判据 fail-open
379
+ // (别的 preset 的会话照常读写),见 src/agents/root-tool-policy.ts。
380
+ registerFsWriteGuard(ctx);
375
381
  ctx.effect(() => {
376
382
  const sources = createTencentSources();
377
383
  const disposers = sources.map((dataSource) => hub.registerSource(dataSource));
@@ -6,7 +6,7 @@
6
6
  * between validation and connect. Closing that window would require a custom
7
7
  * dispatcher; this module keeps the same explicit trade-off as dsh-search-first.
8
8
  */
9
- export declare const LOCAL_FETCH_CLIENT_VERSION = "2.7.11";
9
+ export declare const LOCAL_FETCH_CLIENT_VERSION = "2.8.0";
10
10
  export declare const LOCAL_FETCH_MAX_URL_LENGTH = 2048;
11
11
  export type LocalFetchErrorCode = 'ABORTED' | 'TIMEOUT' | 'INVALID_URL' | 'BLOCKED_URL' | 'DNS' | 'REDIRECT' | 'HTTP' | 'TOO_LARGE' | 'UNSUPPORTED_CONTENT_TYPE';
12
12
  export declare class LocalFetchError extends Error {
@@ -7,7 +7,7 @@
7
7
  * dispatcher; this module keeps the same explicit trade-off as dsh-search-first.
8
8
  */
9
9
  import { htmlToMarkdown, stripInvisibleText } from './html-markdown.js';
10
- export const LOCAL_FETCH_CLIENT_VERSION = '2.7.11';
10
+ export const LOCAL_FETCH_CLIENT_VERSION = '2.8.0';
11
11
  export const LOCAL_FETCH_MAX_URL_LENGTH = 2048;
12
12
  export class LocalFetchError extends Error {
13
13
  code;
@@ -52,7 +52,7 @@ export interface WindCallResult {
52
52
  * `test/chart-composition.test.mjs` 守着(会因漂移而失败),这里原本是写死的第二处,
53
53
  * 一次发版就得记得改两遍。所以本常量由测试一并核对(见 `test/wind-client.test.mjs`)。
54
54
  */
55
- export declare const WIND_CLIENT_VERSION = "2.7.11";
55
+ export declare const WIND_CLIENT_VERSION = "2.8.0";
56
56
  export interface WindClient {
57
57
  callTool(toolName: string, args: Record<string, unknown>, signal?: AbortSignal): Promise<WindCallResult>;
58
58
  }
@@ -35,7 +35,7 @@ export const WIND_SERVER_ENDPOINTS = {
35
35
  * `test/chart-composition.test.mjs` 守着(会因漂移而失败),这里原本是写死的第二处,
36
36
  * 一次发版就得记得改两遍。所以本常量由测试一并核对(见 `test/wind-client.test.mjs`)。
37
37
  */
38
- export const WIND_CLIENT_VERSION = '2.7.11';
38
+ export const WIND_CLIENT_VERSION = '2.8.0';
39
39
  function errorText(error) {
40
40
  return error instanceof Error ? error.message : String(error);
41
41
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v587d/capital-generation",
3
- "version": "2.7.11",
3
+ "version": "2.8.0",
4
4
  "description": "Capital Generation:面向中国散户的 AI 投资助手插件(Capital mode Agent Preset)",
5
5
  "icon": "assets/cg-icon.png",
6
6
  "author": "v587d",