@v587d/capital-generation 2.10.1 → 2.11.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.
- package/CHANGELOG.md +47 -0
- package/README.md +19 -10
- package/THIRD_PARTY_NOTICES.md +29 -28
- package/chart-ui/package.json +1 -1
- package/config/client.js +36 -31
- package/config/client.src.cjs +185 -139
- package/config/package.json +1 -1
- package/lib/data-contract.d.ts +15 -0
- package/lib/data-contract.js +26 -0
- package/lib/selected-skills-entry.d.ts +3 -3
- package/lib/selected-skills-entry.js +9 -1
- package/lib/web-retriever/local-fetch.d.ts +1 -1
- package/lib/web-retriever/local-fetch.js +1 -1
- package/lib/web-retriever/wind-client.d.ts +1 -1
- package/lib/web-retriever/wind-client.js +1 -1
- package/package.json +2 -1
- package/selected-skills/InvestSkill/UPSTREAM.md +8 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/SKILL.md +11 -4
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/10-retrieving-the-filing.md +24 -15
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/11-key-metrics-table.md +3 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/13-input-formats.md +2 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/13-fcf-deployment-scorecard.md +13 -21
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/references/11-data-sources.md +18 -45
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/SKILL.md +10 -3
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/SKILL.md +11 -4
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/10-overview.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/11-phase-2-source-hierarchy.md +9 -3
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/13-notes.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/10-overview.md +9 -8
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/10-overview.md +2 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/12-visualization-support.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/11-pattern-recognition.md +9 -24
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/12-interpretation-guidelines.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/11-ownership-concentration-analysis.md +5 -8
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/12-red-flags-warning-signs.md +2 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/10-overview.md +6 -4
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/11-phase-2-explanation-card.md +2 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/12-output-format.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/result-validator/SKILL.md +7 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/11-sector-correlation-matrix.md +4 -4
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/12-peer-benchmarking-within-sector.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/references/12-data-sources.md +9 -15
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/11-dupont-decomposition.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/11-chart-visualization-support.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/SKILL.md +9 -2
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/10-overview.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/11-phase-5-the-pre.md +1 -1
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/12-example.md +2 -2
- package/selected-skills/README.md +29 -19
- package/selected-skills/ROUTING.md +5 -3
- package/selected-skills/catalog.js +38 -0
- package/selected-skills/china-stock-research-skills/UPSTREAM.md +8 -0
- package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/SKILL.md +7 -0
- package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/references/idc-order-ledger-guide.md +11 -9
- package/selected-skills/china-stock-research-skills/skills/financial-health/SKILL.md +7 -0
- package/selected-skills/china-stock-research-skills/skills/financial-health/references/idc-balance-sheet-stress-guide.md +10 -8
- package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/SKILL.md +7 -0
- package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/references/idc-value-chain-and-peers.md +9 -7
- package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/SKILL.md +7 -0
- package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/references/idc-monitoring-indicators.md +9 -7
- package/selected-skills/china-stock-research-skills/skills/shared/references/asset-heavy-ramp-overlay.md +7 -5
- package/selected-skills/china-stock-research-skills/skills/shared/references/business-model-transition-overlay.md +7 -5
- package/selected-skills/china-stock-research-skills/skills/shared/references/citation-standard.md +7 -7
- package/selected-skills/china-stock-research-skills/skills/shared/references/consumer-channel-brand-overlay.md +8 -6
- package/selected-skills/china-stock-research-skills/skills/shared/references/cyclical-price-driven-overlay.md +8 -6
- package/selected-skills/china-stock-research-skills/skills/shared/references/export-manufacturing-supply-chain-overlay.md +8 -6
- package/selected-skills/china-stock-research-skills/skills/shared/references/idc-heavy-asset-transition-overlay.md +16 -14
- package/selected-skills/china-stock-research-skills/skills/shared/references/project-order-business-overlay.md +7 -5
- package/selected-skills/china-stock-research-skills/skills/shared/references/regulated-healthcare-policy-overlay.md +8 -6
- package/selected-skills/china-stock-research-skills/skills/shared/references/source-registry.md +45 -47
- package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/SKILL.md +7 -0
- package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/references/idc-transition-markers.md +8 -6
- package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/SKILL.md +7 -0
- package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/references/idc-valuation-overlays.md +8 -6
- package/selected-skills/claude-for-financial-services-cn/UPSTREAM.md +9 -0
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-break-trace/SKILL.md +1 -1
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-catalyst-calendar/SKILL.md +1 -1
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-comps-analysis/SKILL.md +3 -3
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-dcf/SKILL.md +1 -1
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-earnings-analysis/SKILL.md +1 -1
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-earnings-preview/SKILL.md +1 -1
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-idea-generation/SKILL.md +1 -1
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-initiating-coverage/SKILL.md +2 -2
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-morning-note/SKILL.md +1 -1
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-sector-overview/SKILL.md +2 -2
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-thesis-tracker/SKILL.md +1 -1
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-variance-commentary/SKILL.md +1 -1
- package/selected-skills/filter.js +70 -0
- package/selected-skills/financeskills/UPSTREAM.md +10 -0
- package/selected-skills/financeskills/skills/banking-compliance/SKILL.md +9 -2
- package/selected-skills/financeskills/skills/company-valuation/SKILL.md +9 -2
- package/selected-skills/financeskills/skills/credit-analysis/SKILL.md +9 -2
- package/selected-skills/financeskills/skills/ecl-computation/SKILL.md +9 -2
- package/selected-skills/financeskills/skills/forensic-accounting/SKILL.md +9 -2
- package/selected-skills/financeskills/skills/insurance-reserving/SKILL.md +9 -2
- package/selected-skills/financeskills/skills/three-statement-modeling/SKILL.md +9 -2
- package/selected-skills/financeskills/skills/wacc-computation/SKILL.md +9 -2
- package/selected-skills/investment-skills/UPSTREAM.md +9 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/SKILL.md +7 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/00-source-key.md +25 -25
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/11-deterministic-router.md +40 -9
- package/selected-skills/peter-lynch-skill/UPSTREAM.md +7 -0
- package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/SKILL.md +9 -2
- package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/10-workflow.md +1 -1
- package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/system-prompt.md +5 -5
- package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-1.md +1 -1
- package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-2.md +4 -7
- package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/system-prompt.md +1 -1
- package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research-1.md +50 -49
- package/selected-skills/quant-agent-skills/UPSTREAM.md +8 -0
- package/selected-skills/quant-agent-skills/skills/cross-market-listing-choice/SKILL.md +1 -1
- package/selected-skills/routing.js +52 -1
- package/selected-skills/trading-skills/UPSTREAM.md +10 -0
- package/selected-skills/trading-skills/skills/catalyst-map/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/evidence-gap-check/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/execution-plan-check/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/journal-pattern-analyzer/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/macro-event-analysis/SKILL.md +6 -9
- package/selected-skills/trading-skills/skills/macro-event-analysis/references/interpretation-guide.md +1 -1
- package/selected-skills/trading-skills/skills/market-regime-analysis/SKILL.md +5 -8
- package/selected-skills/trading-skills/skills/portfolio-concentration/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/position-management/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/position-sizing/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/post-trade-review/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/risk-reward-sanity-check/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/thesis-validation/SKILL.md +7 -0
- package/selected-skills/trading-skills/skills/watchlist-review/SKILL.md +7 -0
- package/watchlist/package.json +1 -1
- package/selected-skills/InvestSkill/install.sh +0 -212
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/chart-master/SKILL.md +0 -648
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dcf-valuation/SKILL.md +0 -109
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/full-report/SKILL.md +0 -301
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fundamental-analysis/SKILL.md +0 -67
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/report-generator/SKILL.md +0 -857
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/research-bundle/SKILL.md +0 -94
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/SKILL.md +0 -75
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/final-output-contract.md +0 -62
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/routing-matrix.md +0 -34
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/sector-overlay-escalation-rules.md +0 -38
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-3-statement-model/SKILL.md +0 -287
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-accrual-schedule/SKILL.md +0 -182
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-audit-xls/SKILL.md +0 -231
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-clean-data-xls/SKILL.md +0 -237
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-comps/SKILL.md +0 -104
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-dcf-model/SKILL.md +0 -68
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-deal-screening/SKILL.md +0 -212
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-deck-refresh/SKILL.md +0 -221
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-gl-recon/SKILL.md +0 -232
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-ib-check-deck/SKILL.md +0 -252
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-lbo-model/SKILL.md +0 -273
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-market-data/SKILL.md +0 -229
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-model-update/SKILL.md +0 -219
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-ppt-template-creator/SKILL.md +0 -231
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-pptx-author/SKILL.md +0 -240
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-roll-forward/SKILL.md +0 -189
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-skill-creator/SKILL.md +0 -304
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-tax-loss-harvesting/SKILL.md +0 -200
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-xlsx-author/SKILL.md +0 -256
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-accrual-schedule/SKILL.md +0 -190
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-break-trace/SKILL.md +0 -182
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-gl-recon/SKILL.md +0 -200
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-nav-tieout/SKILL.md +0 -233
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-roll-forward/SKILL.md +0 -178
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-variance-commentary/SKILL.md +0 -190
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-buyer-list/SKILL.md +0 -198
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-cim-builder/SKILL.md +0 -223
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-competitive-analysis/SKILL.md +0 -233
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-datapack-builder/SKILL.md +0 -232
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-deal-tracker/SKILL.md +0 -151
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-merger-model/SKILL.md +0 -226
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-pitch-deck/SKILL.md +0 -231
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-process-letter/SKILL.md +0 -249
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-strip-profile/SKILL.md +0 -196
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-teaser/SKILL.md +0 -235
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/operations/skills/china-kyc-doc-parse/SKILL.md +0 -252
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/operations/skills/china-kyc-rules/SKILL.md +0 -223
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-ai-readiness/SKILL.md +0 -184
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-dd-checklist/SKILL.md +0 -217
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-dd-meeting-prep/SKILL.md +0 -290
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-deal-sourcing/SKILL.md +0 -224
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-ic-memo/SKILL.md +0 -230
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-portfolio-monitoring/SKILL.md +0 -214
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-returns-analysis/SKILL.md +0 -176
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-unit-economics/SKILL.md +0 -192
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-value-creation-plan/SKILL.md +0 -193
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-client-report/SKILL.md +0 -205
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-client-review/SKILL.md +0 -218
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-financial-plan/SKILL.md +0 -259
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-investment-proposal/SKILL.md +0 -271
- package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-portfolio-rebalance/SKILL.md +0 -191
- package/selected-skills/financeskills/skills/ai-anomaly-detection/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/ai-anomaly-detection/SKILL.md +0 -84
- package/selected-skills/financeskills/skills/ai-anomaly-detection/references/feature-engineering.md +0 -20
- package/selected-skills/financeskills/skills/ai-anomaly-detection/references/ml-algorithms.md +0 -28
- package/selected-skills/financeskills/skills/aro-computation/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/aro-computation/SKILL.md +0 -82
- package/selected-skills/financeskills/skills/aro-computation/references/aro-standards.md +0 -22
- package/selected-skills/financeskills/skills/aro-computation/references/pv-math.md +0 -27
- package/selected-skills/financeskills/skills/audit-checklist/EXAMPLE.md +0 -17
- package/selected-skills/financeskills/skills/audit-checklist/SKILL.md +0 -77
- package/selected-skills/financeskills/skills/audit-checklist/references/internal-controls.md +0 -36
- package/selected-skills/financeskills/skills/audit-checklist/references/isa-standards.md +0 -26
- package/selected-skills/financeskills/skills/automated-reconciliation/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/automated-reconciliation/SKILL.md +0 -87
- package/selected-skills/financeskills/skills/automated-reconciliation/assets/reconciliation-statement-template.md +0 -31
- package/selected-skills/financeskills/skills/automated-reconciliation/references/fuzzy-logic.md +0 -27
- package/selected-skills/financeskills/skills/automated-reconciliation/references/rec-controls.md +0 -28
- package/selected-skills/financeskills/skills/budget-forecast/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/budget-forecast/SKILL.md +0 -87
- package/selected-skills/financeskills/skills/budget-forecast/references/forecasting-best-practices.md +0 -26
- package/selected-skills/financeskills/skills/budget-forecast/references/scenario-analysis.md +0 -25
- package/selected-skills/financeskills/skills/close-management/EXAMPLE.md +0 -17
- package/selected-skills/financeskills/skills/close-management/SKILL.md +0 -85
- package/selected-skills/financeskills/skills/close-management/references/close-task-library.md +0 -32
- package/selected-skills/financeskills/skills/corporate-consolidation/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/corporate-consolidation/SKILL.md +0 -84
- package/selected-skills/financeskills/skills/corporate-consolidation/references/consolidation-standard.md +0 -28
- package/selected-skills/financeskills/skills/corporate-consolidation/references/minority-interest.md +0 -25
- package/selected-skills/financeskills/skills/crypto-accounting/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/crypto-accounting/SKILL.md +0 -81
- package/selected-skills/financeskills/skills/crypto-accounting/references/fasb-crypto.md +0 -26
- package/selected-skills/financeskills/skills/crypto-accounting/references/ifrs-crypto.md +0 -25
- package/selected-skills/financeskills/skills/cvp-breakeven/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/cvp-breakeven/SKILL.md +0 -78
- package/selected-skills/financeskills/skills/cvp-breakeven/references/cvp-patterns.md +0 -28
- package/selected-skills/financeskills/skills/debt-payoff/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/debt-payoff/SKILL.md +0 -94
- package/selected-skills/financeskills/skills/debt-payoff/references/debt-strategies.md +0 -32
- package/selected-skills/financeskills/skills/debt-payoff/references/interest-calculations.md +0 -27
- package/selected-skills/financeskills/skills/debt-restructuring/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/debt-restructuring/SKILL.md +0 -79
- package/selected-skills/financeskills/skills/debt-restructuring/references/creditor-priority.md +0 -26
- package/selected-skills/financeskills/skills/debt-restructuring/references/restructuring-types.md +0 -24
- package/selected-skills/financeskills/skills/deferred-tax/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/deferred-tax/SKILL.md +0 -86
- package/selected-skills/financeskills/skills/deferred-tax/references/td-catalogue.md +0 -39
- package/selected-skills/financeskills/skills/earned-value-mgmt/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/earned-value-mgmt/SKILL.md +0 -79
- package/selected-skills/financeskills/skills/earned-value-mgmt/references/forecasting-eac.md +0 -27
- package/selected-skills/financeskills/skills/earned-value-mgmt/references/pmi-evm.md +0 -29
- package/selected-skills/financeskills/skills/esg-reporting/EXAMPLE.md +0 -17
- package/selected-skills/financeskills/skills/esg-reporting/SKILL.md +0 -79
- package/selected-skills/financeskills/skills/esg-reporting/references/ghg-protocol.md +0 -22
- package/selected-skills/financeskills/skills/esg-reporting/references/sasb-map.md +0 -25
- package/selected-skills/financeskills/skills/financial-analysis/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/financial-analysis/SKILL.md +0 -108
- package/selected-skills/financeskills/skills/financial-analysis/assets/analysis-memo-template.md +0 -31
- package/selected-skills/financeskills/skills/financial-analysis/references/accounting-standards.md +0 -45
- package/selected-skills/financeskills/skills/financial-analysis/references/ratio-definitions.md +0 -14
- package/selected-skills/financeskills/skills/fixed-asset-accounting/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/fixed-asset-accounting/SKILL.md +0 -78
- package/selected-skills/financeskills/skills/fixed-asset-accounting/references/useful-life-guide.md +0 -30
- package/selected-skills/financeskills/skills/intercompany-accounting/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/intercompany-accounting/SKILL.md +0 -79
- package/selected-skills/financeskills/skills/intercompany-accounting/references/elimination-entries.md +0 -35
- package/selected-skills/financeskills/skills/inventory-costing/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/inventory-costing/SKILL.md +0 -80
- package/selected-skills/financeskills/skills/inventory-costing/references/costing-examples.md +0 -31
- package/selected-skills/financeskills/skills/investment-analysis/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/investment-analysis/SKILL.md +0 -82
- package/selected-skills/financeskills/skills/investment-analysis/references/competitive-advantage.md +0 -31
- package/selected-skills/financeskills/skills/investment-analysis/references/valuation-guide.md +0 -29
- package/selected-skills/financeskills/skills/journal-entry/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/journal-entry/SKILL.md +0 -94
- package/selected-skills/financeskills/skills/journal-entry/assets/journal-entry-template.md +0 -21
- package/selected-skills/financeskills/skills/journal-entry/references/entry-patterns.md +0 -51
- package/selected-skills/financeskills/skills/lbo-modeling/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/lbo-modeling/SKILL.md +0 -88
- package/selected-skills/financeskills/skills/lbo-modeling/references/debt-structures.md +0 -22
- package/selected-skills/financeskills/skills/lbo-modeling/references/lbo-best-practices.md +0 -27
- package/selected-skills/financeskills/skills/lease-accounting/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/lease-accounting/SKILL.md +0 -88
- package/selected-skills/financeskills/skills/lease-accounting/assets/commencement-summary-template.md +0 -28
- package/selected-skills/financeskills/skills/lease-accounting/references/ibr-guide.md +0 -26
- package/selected-skills/financeskills/skills/net-worth-tracker/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/net-worth-tracker/SKILL.md +0 -98
- package/selected-skills/financeskills/skills/net-worth-tracker/references/asset-valuation.md +0 -40
- package/selected-skills/financeskills/skills/net-worth-tracker/references/net-worth-benchmarks.md +0 -33
- package/selected-skills/financeskills/skills/nlp-earnings-sentiment/EXAMPLE.md +0 -17
- package/selected-skills/financeskills/skills/nlp-earnings-sentiment/SKILL.md +0 -77
- package/selected-skills/financeskills/skills/nlp-earnings-sentiment/references/finbert-guide.md +0 -26
- package/selected-skills/financeskills/skills/nlp-earnings-sentiment/references/linguistic-finance.md +0 -23
- package/selected-skills/financeskills/skills/oil-gas-valuation/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/oil-gas-valuation/SKILL.md +0 -86
- package/selected-skills/financeskills/skills/oil-gas-valuation/references/sec-reporting.md +0 -22
- package/selected-skills/financeskills/skills/oil-gas-valuation/references/spe-standards.md +0 -25
- package/selected-skills/financeskills/skills/personal-budgeting/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/personal-budgeting/SKILL.md +0 -100
- package/selected-skills/financeskills/skills/personal-budgeting/references/budgeting-methods.md +0 -40
- package/selected-skills/financeskills/skills/personal-budgeting/references/spending-categories.md +0 -40
- package/selected-skills/financeskills/skills/predictive-burn-rate/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/predictive-burn-rate/SKILL.md +0 -82
- package/selected-skills/financeskills/skills/predictive-burn-rate/references/startup-metrics.md +0 -27
- package/selected-skills/financeskills/skills/predictive-burn-rate/references/time-series-forecasting.md +0 -22
- package/selected-skills/financeskills/skills/product-profitability/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/product-profitability/SKILL.md +0 -83
- package/selected-skills/financeskills/skills/product-profitability/references/allocation-logic.md +0 -28
- package/selected-skills/financeskills/skills/product-profitability/references/unit-economics.md +0 -30
- package/selected-skills/financeskills/skills/retirement-planning/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/retirement-planning/SKILL.md +0 -98
- package/selected-skills/financeskills/skills/retirement-planning/references/compound-growth.md +0 -38
- package/selected-skills/financeskills/skills/retirement-planning/references/retirement-fundamentals.md +0 -29
- package/selected-skills/financeskills/skills/revenue-recognition/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/revenue-recognition/SKILL.md +0 -86
- package/selected-skills/financeskills/skills/revenue-recognition/assets/allocation-workpaper-template.md +0 -30
- package/selected-skills/financeskills/skills/revenue-recognition/references/ifrs15-guide.md +0 -28
- package/selected-skills/financeskills/skills/revenue-recognition/references/saas-rev-rec.md +0 -26
- package/selected-skills/financeskills/skills/risk-assessment/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/risk-assessment/SKILL.md +0 -83
- package/selected-skills/financeskills/skills/risk-assessment/references/hedging-guide.md +0 -24
- package/selected-skills/financeskills/skills/risk-assessment/references/risk-metrics.md +0 -24
- package/selected-skills/financeskills/skills/sox-compliance/EXAMPLE.md +0 -17
- package/selected-skills/financeskills/skills/sox-compliance/SKILL.md +0 -88
- package/selected-skills/financeskills/skills/sox-compliance/references/sampling-methodology.md +0 -27
- package/selected-skills/financeskills/skills/startup-valuation/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/startup-valuation/SKILL.md +0 -88
- package/selected-skills/financeskills/skills/startup-valuation/references/berkus-method.md +0 -25
- package/selected-skills/financeskills/skills/startup-valuation/references/vc-method.md +0 -23
- package/selected-skills/financeskills/skills/statement-preparation/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/statement-preparation/SKILL.md +0 -86
- package/selected-skills/financeskills/skills/statement-preparation/references/accruals-deferrals.md +0 -24
- package/selected-skills/financeskills/skills/statement-preparation/references/cash-flow-method.md +0 -32
- package/selected-skills/financeskills/skills/tax-efficient-investing/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/tax-efficient-investing/SKILL.md +0 -97
- package/selected-skills/financeskills/skills/tax-efficient-investing/references/account-types.md +0 -33
- package/selected-skills/financeskills/skills/tax-efficient-investing/references/asset-location.md +0 -36
- package/selected-skills/financeskills/skills/tax-planning/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/tax-planning/SKILL.md +0 -93
- package/selected-skills/financeskills/skills/tax-planning/references/common-deductions.md +0 -28
- package/selected-skills/financeskills/skills/tax-planning/references/tax-code-lookup.md +0 -25
- package/selected-skills/financeskills/skills/treasury-management/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/treasury-management/SKILL.md +0 -83
- package/selected-skills/financeskills/skills/treasury-management/references/fx-hedging.md +0 -27
- package/selected-skills/financeskills/skills/treasury-management/references/liquidity-metrics.md +0 -24
- package/selected-skills/financeskills/skills/variance-analysis/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/variance-analysis/SKILL.md +0 -78
- package/selected-skills/financeskills/skills/variance-analysis/references/overhead-logic.md +0 -24
- package/selected-skills/financeskills/skills/variance-analysis/references/variance-math.md +0 -35
- package/selected-skills/financeskills/skills/venture-debt/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/venture-debt/SKILL.md +0 -84
- package/selected-skills/financeskills/skills/venture-debt/references/saas-debt-metrics.md +0 -26
- package/selected-skills/financeskills/skills/venture-debt/references/venture-lending.md +0 -23
- package/selected-skills/financeskills/skills/working-capital-analysis/EXAMPLE.md +0 -21
- package/selected-skills/financeskills/skills/working-capital-analysis/SKILL.md +0 -83
- package/selected-skills/financeskills/skills/working-capital-analysis/references/wc-metrics.md +0 -30
- package/selected-skills/investment-skills/Makefile +0 -29
- package/selected-skills/investment-skills/skills/buffett-investment-framework/agents/openai.yaml +0 -4
- package/selected-skills/investment-skills/skills/buffett-investment-framework/scripts/framework.py +0 -470
- package/selected-skills/trading-skills/skills/earnings-preview/SKILL.md +0 -124
- package/selected-skills/trading-skills/skills/earnings-preview/references/data-providers.md +0 -26
- package/selected-skills/trading-skills/skills/earnings-preview/references/providers/fmp.md +0 -49
- package/selected-skills/trading-skills/skills/earnings-preview/references/providers/polygon.md +0 -45
- package/selected-skills/trading-skills/skills/earnings-preview/references/providers/tradingeconomics.md +0 -49
- package/selected-skills/trading-skills/skills/earnings-preview/references/relevance-ranking.md +0 -24
- package/selected-skills/trading-skills/skills/earnings-trade-prep/SKILL.md +0 -134
- package/selected-skills/trading-skills/skills/earnings-trade-prep/references/workflow-framework.md +0 -65
- package/selected-skills/trading-skills/skills/macro-event-analysis/references/data-providers.md +0 -23
- package/selected-skills/trading-skills/skills/macro-event-analysis/references/providers/fmp.md +0 -28
- package/selected-skills/trading-skills/skills/macro-event-analysis/references/providers/tradingeconomics.md +0 -40
- package/selected-skills/trading-skills/skills/market-regime-analysis/references/data-providers.md +0 -26
- package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/fmp.md +0 -46
- package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/polygon.md +0 -36
- package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/tradingeconomics.md +0 -46
- package/selected-skills/trading-skills/skills/portfolio-risk-review/SKILL.md +0 -126
- package/selected-skills/trading-skills/skills/portfolio-risk-review/references/workflow-framework.md +0 -57
- package/selected-skills/trading-skills/skills/post-trade-debrief/SKILL.md +0 -99
- package/selected-skills/trading-skills/skills/post-trade-debrief/references/workflow-framework.md +0 -51
- package/selected-skills/trading-skills/skills/pre-trade-check/SKILL.md +0 -136
- package/selected-skills/trading-skills/skills/pre-trade-check/references/workflow-framework.md +0 -61
package/config/client.src.cjs
CHANGED
|
@@ -5,13 +5,26 @@ const {
|
|
|
5
5
|
SettingsSecretField,
|
|
6
6
|
SettingsFormModel,
|
|
7
7
|
SegmentedControl,
|
|
8
|
+
Pill,
|
|
8
9
|
Switch,
|
|
10
|
+
Tag,
|
|
9
11
|
Modal,
|
|
10
|
-
writeClipboard,
|
|
11
12
|
IconRightUpOutlineRegular,
|
|
12
13
|
} = require('@deepseek-ai/dsh-client-ui-primitives')
|
|
13
14
|
const { SELECTED_SKILL_CATALOG, SELECTED_SKILL_TAG_LABELS } = require('../selected-skills/catalog.js')
|
|
14
|
-
const {
|
|
15
|
+
const {
|
|
16
|
+
SELECTED_SKILL_FILTER_ALL,
|
|
17
|
+
filterSelectedSkills,
|
|
18
|
+
selectedSkillFacetCounts,
|
|
19
|
+
selectedSkillPresetTotals,
|
|
20
|
+
selectedSkillRoles,
|
|
21
|
+
selectedSkillTraitOrder,
|
|
22
|
+
} = require('../selected-skills/filter.js')
|
|
23
|
+
const {
|
|
24
|
+
SELECTED_SKILL_PRESETS,
|
|
25
|
+
SELECTED_SKILL_PRESET_ORDER,
|
|
26
|
+
SELECTED_SKILL_ROUTING,
|
|
27
|
+
} = require('../selected-skills/routing.js')
|
|
15
28
|
|
|
16
29
|
/**
|
|
17
30
|
* Two different strings: `ENTRY_ID` is the settings namespace (= profile entry
|
|
@@ -51,6 +64,9 @@ const DOC_URLS = {
|
|
|
51
64
|
/** Render order = array order; one list drives status, refs, drafts and event refresh. */
|
|
52
65
|
const CREDENTIAL_FIELDS = ['fuyao', 'ftshare', 'anysearch', 'wind', 'paddleocr']
|
|
53
66
|
const SELECTED_SKILL_FIELDS = SELECTED_SKILL_CATALOG.map(({ key }) => key)
|
|
67
|
+
// Stable orders: facet counts change with the other dimension, but chips must not jump under the cursor.
|
|
68
|
+
const SELECTED_SKILL_TRAITS = selectedSkillTraitOrder()
|
|
69
|
+
const SELECTED_SKILL_PRESET_TOTALS = selectedSkillPresetTotals()
|
|
54
70
|
const DEFAULT_REFS = {
|
|
55
71
|
fuyao: FUYAO_DEFAULT_REF,
|
|
56
72
|
ftshare: FTSHARE_DEFAULT_REF,
|
|
@@ -81,16 +97,17 @@ const zh = {
|
|
|
81
97
|
paddleocrLabel: 'PaddleOCR 文档解析 Token',
|
|
82
98
|
paddleocrHint: '配置 Token 后自动解析 PDF、图片。保存后新自动模式会话生效。',
|
|
83
99
|
selectedSkillsTitle: '精选 Skills',
|
|
84
|
-
selectedSkillsModeLabel: '
|
|
85
|
-
selectedSkillsModeHint: '
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
100
|
+
selectedSkillsModeLabel: '智能装载 Skills',
|
|
101
|
+
selectedSkillsModeHint: '开启后,由大模型根据用户提问,智能装载合适的精选「Skills」。',
|
|
102
|
+
selectedSkillsFilterLabel: '筛选精选 Skills',
|
|
103
|
+
selectedSkillsTraitGroup: 'Skill 特点',
|
|
104
|
+
selectedSkillsPresetGroup: '适用预设',
|
|
105
|
+
selectedSkillsAll: '全部',
|
|
106
|
+
selectedSkillsEmpty: '没有符合当前筛选条件的 Skill。',
|
|
107
|
+
selectedSkillsWhen: '何时使用',
|
|
108
|
+
selectedSkillsKeywords: '关键词',
|
|
109
|
+
selectedSkillsOpenDetail: '查看 Skill 原文',
|
|
110
|
+
selectedSkillsPresetUnavailable: '该预设不加载精选 Skills',
|
|
94
111
|
selectedSkillsDetailClose: '关闭',
|
|
95
112
|
selectedSkillsDocLoading: '原文读取中…',
|
|
96
113
|
selectedSkillsDocFailed: '原文读不到:这份快照没随包落地,或暂时读不出来。',
|
|
@@ -127,16 +144,17 @@ const en = {
|
|
|
127
144
|
paddleocrLabel: 'PaddleOCR document token',
|
|
128
145
|
paddleocrHint: 'Configure the token to parse PDFs and images automatically. Takes effect in new Auto mode sessions.',
|
|
129
146
|
selectedSkillsTitle: 'Selected Skills',
|
|
130
|
-
selectedSkillsModeLabel: '
|
|
131
|
-
selectedSkillsModeHint: 'When on,
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
147
|
+
selectedSkillsModeLabel: 'Auto-load Skills',
|
|
148
|
+
selectedSkillsModeHint: 'When on, the model picks the relevant selected Skills for each question.',
|
|
149
|
+
selectedSkillsFilterLabel: 'Filter selected Skills',
|
|
150
|
+
selectedSkillsTraitGroup: 'Skill traits',
|
|
151
|
+
selectedSkillsPresetGroup: 'Preset',
|
|
152
|
+
selectedSkillsAll: 'All',
|
|
153
|
+
selectedSkillsEmpty: 'No skills match the current filters.',
|
|
154
|
+
selectedSkillsWhen: 'Use when',
|
|
155
|
+
selectedSkillsKeywords: 'Keywords',
|
|
156
|
+
selectedSkillsOpenDetail: 'Open skill source',
|
|
157
|
+
selectedSkillsPresetUnavailable: 'This preset does not load selected Skills.',
|
|
140
158
|
selectedSkillsDetailClose: 'Close',
|
|
141
159
|
selectedSkillsDocLoading: 'Loading the source…',
|
|
142
160
|
selectedSkillsDocFailed: 'The source could not be read: this snapshot is not in the installed package, or it cannot be opened right now.',
|
|
@@ -172,7 +190,6 @@ function installStyles() {
|
|
|
172
190
|
style.dataset.capitalConfig = 'true'
|
|
173
191
|
style.textContent = `
|
|
174
192
|
.capital-config-card { display: flex; flex-direction: column; gap: 12px; }
|
|
175
|
-
.capital-config-title { margin: 0; font-size: 14px; font-weight: 500; line-height: 20px; }
|
|
176
193
|
/* Declare display only when not hidden, or the hidden attribute loses to author display. */
|
|
177
194
|
.capital-config-panel { flex-direction: column; gap: 12px; }
|
|
178
195
|
.capital-config-panel:not([hidden]) { display: flex; }
|
|
@@ -188,25 +205,39 @@ function installStyles() {
|
|
|
188
205
|
.capital-config-secret-row label { flex: 0 1 auto; }
|
|
189
206
|
.capital-config-secret-row label ~ span { order: 1; margin-left: auto; }
|
|
190
207
|
.capital-config-field { display: flex; flex-direction: column; gap: 6px; padding: 12px 0; border-top: 0.5px solid var(--dsw-alias-border-l2); }
|
|
191
|
-
|
|
192
|
-
.capital-config-
|
|
193
|
-
.capital-config-
|
|
194
|
-
.capital-config-
|
|
195
|
-
.capital-config-
|
|
196
|
-
.capital-config-
|
|
197
|
-
.capital-config-
|
|
198
|
-
.capital-config-
|
|
199
|
-
.capital-config-
|
|
200
|
-
.capital-config-
|
|
201
|
-
.capital-config-
|
|
202
|
-
.capital-config-
|
|
203
|
-
.capital-config-
|
|
204
|
-
.capital-config-
|
|
205
|
-
.capital-config-
|
|
206
|
-
.capital-config-
|
|
207
|
-
.capital-config-skill-
|
|
208
|
-
.capital-config-skill-
|
|
208
|
+
.capital-config-selected-mode { padding: 12px 14px; border: 0.5px solid var(--dsw-alias-border-l1); border-radius: 10px; background: var(--dsw-alias-bg-layer-2); }
|
|
209
|
+
.capital-config-switch-row { align-items: center; gap: 12px; display: flex; }
|
|
210
|
+
.capital-config-switch-text { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 4px; }
|
|
211
|
+
.capital-config-switch-label { color: var(--dsw-alias-label-primary); font-size: 13px; font-weight: 500; line-height: 20px; }
|
|
212
|
+
.capital-config-hint { margin: 0; color: var(--dsw-alias-label-tertiary); font-size: 12px; line-height: 18px; }
|
|
213
|
+
.capital-config-skills-browser { display: flex; flex-direction: column; gap: 16px; }
|
|
214
|
+
.capital-config-filters { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; border: 0.5px solid var(--dsw-alias-border-l1); border-radius: 10px; background: var(--dsw-alias-bg-layer-2); }
|
|
215
|
+
.capital-config-filter-row { display: flex; align-items: flex-start; gap: 12px; }
|
|
216
|
+
.capital-config-filter-label { flex: 0 0 auto; min-width: 64px; padding-top: 3px; color: var(--dsw-alias-label-tertiary); font-size: 11.5px; font-weight: 500; line-height: 18px; }
|
|
217
|
+
.capital-config-filter-options { display: flex; flex: 1 1 auto; flex-wrap: wrap; gap: 4px; min-width: 0; }
|
|
218
|
+
.capital-config-filter-pill { height: 22px; padding: 0 7px; gap: 5px; font-size: 11.5px; line-height: 16px; }
|
|
219
|
+
.capital-config-filter-pill:disabled { opacity: 0.45; cursor: not-allowed; }
|
|
220
|
+
.capital-config-filter-pill:disabled:hover { background: var(--dsw-alias-bg-layer-2); }
|
|
221
|
+
.capital-config-filter-count { color: var(--dsw-alias-label-tertiary); font-size: 10px; line-height: 14px; font-variant-numeric: tabular-nums; }
|
|
222
|
+
.capital-config-filter-pill[aria-pressed="true"] .capital-config-filter-count { color: inherit; opacity: 0.72; }
|
|
223
|
+
.capital-config-selected-list { display: flex; flex-direction: column; border-top: 0.5px solid var(--dsw-alias-border-l1); }
|
|
224
|
+
.capital-config-skill-item { border-bottom: 0.5px solid var(--dsw-alias-border-l1); }
|
|
225
|
+
.capital-config-skill-row { display: flex; align-items: flex-start; gap: 16px; padding: 14px 2px; }
|
|
226
|
+
.capital-config-skill-main { min-width: 0; flex: 1 1 auto; display: flex; flex-direction: column; gap: 6px; }
|
|
227
|
+
.capital-config-skill-heading { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
|
|
228
|
+
.capital-config-skill-name { padding: 0; border: 0; border-radius: 4px; background: transparent; color: var(--dsw-alias-label-primary); font: inherit; font-size: 13px; font-weight: 500; line-height: 20px; text-align: left; cursor: pointer; }
|
|
229
|
+
.capital-config-skill-name:hover { color: var(--dsw-alias-brand-primary); }
|
|
230
|
+
.capital-config-skill-name:focus-visible { outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color, var(--dsw-alias-brand-primary)); outline-offset: 2px; }
|
|
231
|
+
.capital-config-skill-tags, .capital-config-skill-presets { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; }
|
|
232
|
+
.capital-config-skill-tag { font-weight: 400; }
|
|
233
|
+
.capital-config-skill-preset { font-weight: 500; }
|
|
209
234
|
.capital-config-skill-description { margin: 0; color: var(--dsw-alias-label-secondary); font-size: 12px; line-height: 18px; }
|
|
235
|
+
.capital-config-skill-meta { display: grid; grid-template-columns: max-content minmax(0, 1fr); column-gap: 10px; row-gap: 2px; margin: 0; color: var(--dsw-alias-label-secondary); font-size: 12px; line-height: 18px; }
|
|
236
|
+
.capital-config-skill-meta dt { color: var(--dsw-alias-label-tertiary); font-weight: 500; white-space: nowrap; }
|
|
237
|
+
.capital-config-skill-meta dd { min-width: 0; margin: 0; }
|
|
238
|
+
.capital-config-skill-repo { display: inline-flex; align-items: center; gap: 3px; width: max-content; max-width: 100%; margin-top: 2px; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 16px; text-decoration: none; }
|
|
239
|
+
.capital-config-skill-repo:hover { color: var(--dsw-alias-brand-primary); text-decoration: underline; }
|
|
240
|
+
.capital-config-selected-empty { margin: 0; padding: 28px 0; color: var(--dsw-alias-label-tertiary); font-size: 12px; line-height: 18px; text-align: center; }
|
|
210
241
|
/* Official Modal defaults to 380px; the div prefix outranks the hashed .dialog class. */
|
|
211
242
|
div.capital-config-skill-modal { width: min(820px, 100%); max-height: 100%; }
|
|
212
243
|
/* Scroll the body so the dialog's overflow:hidden cannot clip it. */
|
|
@@ -221,14 +252,6 @@ function installStyles() {
|
|
|
221
252
|
.capital-config-doc-link { display: inline-flex; align-items: center; gap: 3px; color: var(--dsw-alias-label-tertiary); font-size: 12px; line-height: 20px; white-space: nowrap; text-decoration: none; }
|
|
222
253
|
.capital-config-doc-link:hover { color: var(--dsw-alias-brand-primary); text-decoration: underline; }
|
|
223
254
|
.capital-config-doc-link:focus-visible { border-radius: 3px; outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color, var(--dsw-alias-brand-primary)); outline-offset: 2px; }
|
|
224
|
-
.capital-config-selected-mode { margin-bottom: 12px; }
|
|
225
|
-
.capital-config-switch-row { align-items: center; gap: 12px; display: flex; }
|
|
226
|
-
.capital-config-switch-text { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 4px; }
|
|
227
|
-
.capital-config-switch-label { color: var(--dsw-alias-label-primary); font-size: 13px; font-weight: 500; line-height: 20px; }
|
|
228
|
-
.capital-config-hint { margin: 0; color: var(--dsw-alias-label-tertiary); font-size: 12px; line-height: 18px; }
|
|
229
|
-
.capital-config-skill-roles { display: flex; flex-wrap: wrap; gap: 4px; }
|
|
230
|
-
.capital-config-skill-role { padding: 1px 5px; border-radius: 4px; border: 0.5px solid var(--dsw-alias-border-l1); color: var(--dsw-alias-label-secondary); font-size: 11px; line-height: 16px; }
|
|
231
|
-
.capital-config-skill-when { margin: 0; color: var(--dsw-alias-label-tertiary); font-size: 11.5px; line-height: 17px; }
|
|
232
255
|
.capital-config-write-failed { margin: 0; color: var(--dsw-alias-state-error-primary); font-size: 12px; line-height: 18px; }
|
|
233
256
|
/* Own inline-flex group so the host's wrapping never splits the two links. */
|
|
234
257
|
.capital-config-plugin-links { flex: none; align-items: center; gap: 2px; display: inline-flex; }
|
|
@@ -537,27 +560,27 @@ function loadSkillDoc(name) {
|
|
|
537
560
|
return pending
|
|
538
561
|
}
|
|
539
562
|
|
|
540
|
-
|
|
563
|
+
function presetLabel(role, locale) {
|
|
564
|
+
return SELECTED_SKILL_PRESETS[role]?.[locale] ?? role
|
|
565
|
+
}
|
|
541
566
|
|
|
542
|
-
|
|
567
|
+
/** Routing text stays one sentence; split the keyword tail so both lines share a type scale. */
|
|
568
|
+
function splitUseWhen(value, locale) {
|
|
569
|
+
const marker = locale === 'en' ? 'Triggers on ' : ';关键词:'
|
|
570
|
+
const index = value.lastIndexOf(marker)
|
|
571
|
+
if (index <= 0) return { when: value, keywords: '' }
|
|
572
|
+
return {
|
|
573
|
+
when: value.slice(0, index).trim(),
|
|
574
|
+
keywords: value.slice(index + marker.length).trim().replace(locale === 'en' ? /\.$/ : /。$/, ''),
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
function SelectedSkillRow({ entry, state, disabled, onChange, t }) {
|
|
543
579
|
const locale = skillLocale()
|
|
544
580
|
const label = entry.label[locale]
|
|
545
581
|
const repositoryUrl = `https://github.com/${entry.owner}/${entry.repository}`
|
|
546
|
-
const copyTimer = useRef(null)
|
|
547
|
-
const [copied, setCopied] = useState(false)
|
|
548
582
|
const [detailOpen, setDetailOpen] = useState(false)
|
|
549
583
|
const [doc, setDoc] = useState(null)
|
|
550
|
-
useEffect(() => () => {
|
|
551
|
-
if (copyTimer.current !== null) clearTimeout(copyTimer.current)
|
|
552
|
-
}, [])
|
|
553
|
-
const copyName = async () => {
|
|
554
|
-
const accepted = await writeClipboard(`/${entry.name}`)
|
|
555
|
-
// Do not flip the label if the clipboard rejected it.
|
|
556
|
-
if (!accepted) return
|
|
557
|
-
setCopied(true)
|
|
558
|
-
if (copyTimer.current !== null) clearTimeout(copyTimer.current)
|
|
559
|
-
copyTimer.current = setTimeout(() => setCopied(false), COPIED_FLASH_MS)
|
|
560
|
-
}
|
|
561
584
|
const prefetchDoc = () => {
|
|
562
585
|
if (doc?.status === 'ready' || doc?.status === 'loading') return
|
|
563
586
|
if (skillDocs.has(entry.name)) {
|
|
@@ -578,48 +601,56 @@ function SelectedSkillRow({ entry, state, copyable, disabled, onChange, t }) {
|
|
|
578
601
|
: doc?.status === 'failed'
|
|
579
602
|
? h('p', { className: 'capital-config-skill-doc-state' }, t(doc.code === 'route_missing' ? 'selectedSkillsDocStale' : 'selectedSkillsDocFailed'))
|
|
580
603
|
: h('p', { className: 'capital-config-skill-doc-state' }, t('selectedSkillsDocLoading'))
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
604
|
+
const { when, keywords } = splitUseWhen(SELECTED_SKILL_ROUTING[entry.name]?.useWhen?.[locale] ?? '', locale)
|
|
605
|
+
const roles = entry.roles ?? []
|
|
606
|
+
return h('div', { className: 'capital-config-skill-item' },
|
|
607
|
+
h('div', { className: 'capital-config-skill-row' },
|
|
608
|
+
h('div', { className: 'capital-config-skill-main' },
|
|
584
609
|
h('div', { className: 'capital-config-skill-heading' },
|
|
585
|
-
h('
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
610
|
+
h('button', {
|
|
611
|
+
type: 'button',
|
|
612
|
+
className: 'capital-config-skill-name',
|
|
613
|
+
title: t('selectedSkillsOpenDetail'),
|
|
614
|
+
'aria-haspopup': 'dialog',
|
|
615
|
+
// Prefetch on hover / focus so the modal opens with content; click is the action.
|
|
616
|
+
onPointerEnter: prefetchDoc,
|
|
617
|
+
onFocus: prefetchDoc,
|
|
618
|
+
onClick: () => {
|
|
619
|
+
prefetchDoc()
|
|
620
|
+
setDetailOpen(true)
|
|
621
|
+
},
|
|
622
|
+
}, label),
|
|
623
|
+
h('div', { className: 'capital-config-skill-tags', role: 'group', 'aria-label': t('selectedSkillsTraitGroup') },
|
|
624
|
+
entry.tags.map((tag) => h(Tag, {
|
|
625
|
+
key: tag,
|
|
626
|
+
tone: 'neutral',
|
|
627
|
+
className: 'capital-config-skill-tag',
|
|
628
|
+
}, SELECTED_SKILL_TAG_LABELS[locale][tag] ?? tag))),
|
|
629
|
+
roles.length > 0 ? h('div', { className: 'capital-config-skill-presets', role: 'group', 'aria-label': t('selectedSkillsPresetGroup') },
|
|
630
|
+
roles.map((role) => h(Tag, {
|
|
631
|
+
key: role,
|
|
632
|
+
tone: 'info',
|
|
633
|
+
className: 'capital-config-skill-preset',
|
|
634
|
+
},
|
|
635
|
+
h('span', { className: 'capital-config-sr-only' }, `${t('selectedSkillsPresetGroup')}:`),
|
|
636
|
+
presetLabel(role, locale)))) : null,
|
|
637
|
+
h(Modal, {
|
|
638
|
+
open: detailOpen,
|
|
639
|
+
onClose: () => setDetailOpen(false),
|
|
640
|
+
title: label,
|
|
641
|
+
description: entry.name,
|
|
642
|
+
closeLabel: t('selectedSkillsDetailClose'),
|
|
643
|
+
className: 'capital-config-skill-modal',
|
|
644
|
+
contentClassName: 'capital-config-skill-modal-content',
|
|
645
|
+
}, detailContent),
|
|
618
646
|
),
|
|
619
647
|
h('p', { className: 'capital-config-skill-description' }, entry.description[locale]),
|
|
620
|
-
h('
|
|
621
|
-
|
|
622
|
-
h('
|
|
648
|
+
h('dl', { className: 'capital-config-skill-meta' },
|
|
649
|
+
h('dt', { key: 'when-label' }, t('selectedSkillsWhen')),
|
|
650
|
+
h('dd', { key: 'when' }, when),
|
|
651
|
+
keywords ? h('dt', { key: 'keywords-label' }, t('selectedSkillsKeywords')) : null,
|
|
652
|
+
keywords ? h('dd', { key: 'keywords' }, keywords) : null,
|
|
653
|
+
),
|
|
623
654
|
h('a', {
|
|
624
655
|
className: 'capital-config-skill-repo',
|
|
625
656
|
href: repositoryUrl,
|
|
@@ -627,8 +658,6 @@ function SelectedSkillRow({ entry, state, copyable, disabled, onChange, t }) {
|
|
|
627
658
|
rel: 'noopener noreferrer',
|
|
628
659
|
title: t('selectedSkillsOpenRepo'),
|
|
629
660
|
}, `${entry.owner}/${entry.repository}`, h(IconRightUpOutlineRegular, { size: 12 })),
|
|
630
|
-
h('div', { className: 'capital-config-skill-tags' }, entry.tags.map((tag) =>
|
|
631
|
-
h('span', { key: tag, className: 'capital-config-skill-tag' }, SELECTED_SKILL_TAG_LABELS[locale][tag] ?? tag))),
|
|
632
661
|
),
|
|
633
662
|
h(Switch, {
|
|
634
663
|
label,
|
|
@@ -654,7 +683,8 @@ function CapitalCard(props) {
|
|
|
654
683
|
const autoMode = state.selectedSkillsMode?.auto === true
|
|
655
684
|
const locale = skillLocale()
|
|
656
685
|
const [tab, setTab] = useState('sources')
|
|
657
|
-
const [
|
|
686
|
+
const [traitFilter, setTraitFilter] = useState(SELECTED_SKILL_FILTER_ALL)
|
|
687
|
+
const [presetFilter, setPresetFilter] = useState(SELECTED_SKILL_FILTER_ALL)
|
|
658
688
|
// Fetch on mount: tab labels carry numbers; hooks must precede the unavailable return.
|
|
659
689
|
useEffect(() => { props.ensureBundleRows() }, [])
|
|
660
690
|
// Pinned order is snapshotted on tab entry so rows never move under the cursor.
|
|
@@ -662,17 +692,11 @@ function CapitalCard(props) {
|
|
|
662
692
|
.filter((entry) => state.selectedSkills?.[entry.key]?.on === true)
|
|
663
693
|
.map((entry) => entry.key))
|
|
664
694
|
const [pinnedSkills, setPinnedSkills] = useState(enabledKeys)
|
|
665
|
-
useEffect(() => {
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
}
|
|
670
|
-
tagCounts.set('all', SELECTED_SKILL_CATALOG.length)
|
|
671
|
-
const tags = ['all', ...Array.from(tagCounts.keys())
|
|
672
|
-
.filter((tag) => tag !== 'all')
|
|
673
|
-
.sort((left, right) => tagCounts.get(right) - tagCounts.get(left))]
|
|
674
|
-
const visibleSkills = SELECTED_SKILL_CATALOG
|
|
675
|
-
.filter((entry) => tagFilter === 'all' || entry.tags.includes(tagFilter))
|
|
695
|
+
useEffect(() => {
|
|
696
|
+
if (state.available && !autoMode) setPinnedSkills(enabledKeys())
|
|
697
|
+
}, [state.available, autoMode])
|
|
698
|
+
const facetCounts = selectedSkillFacetCounts({ trait: traitFilter, preset: presetFilter })
|
|
699
|
+
const visibleSkills = filterSelectedSkills({ trait: traitFilter, preset: presetFilter })
|
|
676
700
|
.sort((left, right) => (pinnedSkills.has(left.key) ? 0 : 1) - (pinnedSkills.has(right.key) ? 0 : 1))
|
|
677
701
|
const form = h(SettingsForm, {
|
|
678
702
|
labels: {
|
|
@@ -708,7 +732,7 @@ function CapitalCard(props) {
|
|
|
708
732
|
),
|
|
709
733
|
state.localFetch?.failed ? h('p', { role: 'status', className: 'capital-config-write-failed' }, t('saveFailed')) : null,
|
|
710
734
|
)
|
|
711
|
-
const modeSection = h('div', { className: 'capital-config-
|
|
735
|
+
const modeSection = h('div', { className: 'capital-config-selected-mode' },
|
|
712
736
|
h('div', { className: 'capital-config-switch-row' },
|
|
713
737
|
h('div', { className: 'capital-config-switch-text' },
|
|
714
738
|
h('span', { className: 'capital-config-switch-label' }, t('selectedSkillsModeLabel')),
|
|
@@ -723,37 +747,60 @@ function CapitalCard(props) {
|
|
|
723
747
|
),
|
|
724
748
|
state.selectedSkillsMode?.failed ? h('p', { role: 'status', className: 'capital-config-write-failed' }, t('saveFailed')) : null,
|
|
725
749
|
)
|
|
726
|
-
const
|
|
727
|
-
const
|
|
728
|
-
|
|
729
|
-
|
|
750
|
+
const traitLabels = SELECTED_SKILL_TAG_LABELS[locale]
|
|
751
|
+
const filterRow = (label, pills) => h('div', { className: 'capital-config-filter-row' },
|
|
752
|
+
h('span', { className: 'capital-config-filter-label' }, label),
|
|
753
|
+
h('div', { className: 'capital-config-filter-options', role: 'group', 'aria-label': label }, ...pills),
|
|
754
|
+
)
|
|
755
|
+
const traitPills = SELECTED_SKILL_TRAITS.map((trait) => h(Pill, {
|
|
756
|
+
key: trait,
|
|
757
|
+
type: 'button',
|
|
758
|
+
className: 'capital-config-filter-pill',
|
|
759
|
+
active: traitFilter === trait,
|
|
760
|
+
'aria-pressed': traitFilter === trait ? 'true' : 'false',
|
|
761
|
+
onClick: () => setTraitFilter(trait),
|
|
762
|
+
},
|
|
763
|
+
trait === SELECTED_SKILL_FILTER_ALL ? t('selectedSkillsAll') : (traitLabels[trait] ?? trait),
|
|
764
|
+
h('span', { className: 'capital-config-filter-count' }, String(facetCounts.traits.get(trait) ?? 0))))
|
|
765
|
+
const presetPills = [SELECTED_SKILL_FILTER_ALL, ...SELECTED_SKILL_PRESET_ORDER].map((preset) => {
|
|
766
|
+
const total = preset === SELECTED_SKILL_FILTER_ALL
|
|
767
|
+
? SELECTED_SKILL_CATALOG.length
|
|
768
|
+
: SELECTED_SKILL_PRESET_TOTALS.get(preset) ?? 0
|
|
769
|
+
const unavailable = preset !== SELECTED_SKILL_FILTER_ALL && total === 0
|
|
770
|
+
return h(Pill, {
|
|
771
|
+
key: preset,
|
|
730
772
|
type: 'button',
|
|
731
|
-
className: 'capital-config-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
773
|
+
className: 'capital-config-filter-pill',
|
|
774
|
+
active: presetFilter === preset,
|
|
775
|
+
'aria-pressed': presetFilter === preset ? 'true' : 'false',
|
|
776
|
+
disabled: unavailable,
|
|
777
|
+
title: unavailable ? t('selectedSkillsPresetUnavailable') : undefined,
|
|
778
|
+
onClick: () => setPresetFilter(preset),
|
|
779
|
+
},
|
|
780
|
+
preset === SELECTED_SKILL_FILTER_ALL ? t('selectedSkillsAll') : presetLabel(preset, locale),
|
|
781
|
+
h('span', { className: 'capital-config-filter-count' }, String(facetCounts.presets.get(preset) ?? 0)))
|
|
782
|
+
})
|
|
783
|
+
const skillsFilter = h('div', { className: 'capital-config-filters', role: 'group', 'aria-label': t('selectedSkillsFilterLabel') },
|
|
784
|
+
filterRow(t('selectedSkillsTraitGroup'), traitPills),
|
|
785
|
+
filterRow(t('selectedSkillsPresetGroup'), presetPills),
|
|
735
786
|
)
|
|
736
787
|
// No cap: the user builds the set; the role prompt caps only how many it lists.
|
|
737
|
-
const enabledSkills = SELECTED_SKILL_CATALOG.filter(
|
|
738
|
-
(entry) => state.selectedSkills?.[entry.key]?.on === true,
|
|
739
|
-
).length
|
|
740
788
|
const skillRows = visibleSkills.length > 0
|
|
741
789
|
? visibleSkills.map((entry) => h(SelectedSkillRow, {
|
|
742
790
|
key: entry.key,
|
|
743
|
-
entry: { ...entry, roles:
|
|
791
|
+
entry: { ...entry, roles: selectedSkillRoles(entry) },
|
|
744
792
|
state: state.selectedSkills?.[entry.key],
|
|
745
|
-
|
|
746
|
-
disabled: disabled || state.saving || autoMode,
|
|
793
|
+
disabled: disabled || state.saving,
|
|
747
794
|
onChange: (value) => props.toggleSelectedSkill(entry.key, value),
|
|
748
795
|
t,
|
|
749
796
|
}))
|
|
750
|
-
: [h('p', { key: 'empty', className: 'capital-config-
|
|
797
|
+
: [h('p', { key: 'empty', className: 'capital-config-selected-empty' }, t('selectedSkillsEmpty'))]
|
|
751
798
|
// No cap banner: the icon is the only explanation. Unknown count prints no number.
|
|
752
799
|
const withCount = (label, count) => (Number.isInteger(count) ? `${label} ${count}` : label)
|
|
753
800
|
const options = [
|
|
754
801
|
// A dirty draft while Save is off-screen must be announced on the tab.
|
|
755
802
|
{ value: 'sources', label: state.dirty ? t('titleUnsaved') : t('title') },
|
|
756
|
-
{ value: 'skills', label:
|
|
803
|
+
{ value: 'skills', label: t('selectedSkillsTitle') },
|
|
757
804
|
{ value: 'components', label: withCount(t('componentsTitle'), state.components?.count) },
|
|
758
805
|
]
|
|
759
806
|
const panel = (value, children) => h('section', {
|
|
@@ -780,13 +827,12 @@ function CapitalCard(props) {
|
|
|
780
827
|
},
|
|
781
828
|
}),
|
|
782
829
|
panel('sources', [form, localFetchSection]),
|
|
783
|
-
panel('skills',
|
|
784
|
-
modeSection
|
|
785
|
-
h('div', { className: 'capital-config-
|
|
830
|
+
panel('skills', autoMode
|
|
831
|
+
? [modeSection]
|
|
832
|
+
: [modeSection, h('div', { className: 'capital-config-skills-browser' },
|
|
786
833
|
skillsFilter,
|
|
787
834
|
h('div', { className: 'capital-config-selected-list' }, ...skillRows),
|
|
788
|
-
),
|
|
789
|
-
]),
|
|
835
|
+
)]),
|
|
790
836
|
// The panel is the host's rows list; keep the aria-controls target non-empty via sr-only.
|
|
791
837
|
panel('components', [h('span', { className: 'capital-config-sr-only' }, t('componentsHint'))]),
|
|
792
838
|
)
|
package/config/package.json
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `capital:data-contract` system-prompt section: the single statement of how every Capital
|
|
3
|
+
* role obtains data. Skills declare what evidence they need; this section says where it comes
|
|
4
|
+
* from, so provider names and fetch recipes never live in skill prose.
|
|
5
|
+
* Static text — registered per role by the selected-skills row, which every skill-loading role mounts.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DATA_CONTRACT_SECTION = "capital:data-contract";
|
|
8
|
+
/** Just before the selected-skill brief (order 60). */
|
|
9
|
+
export declare const DATA_CONTRACT_ORDER = 59;
|
|
10
|
+
export declare function dataContractSection(): {
|
|
11
|
+
name: string;
|
|
12
|
+
order: number;
|
|
13
|
+
interpolate: false;
|
|
14
|
+
text: string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `capital:data-contract` system-prompt section: the single statement of how every Capital
|
|
3
|
+
* role obtains data. Skills declare what evidence they need; this section says where it comes
|
|
4
|
+
* from, so provider names and fetch recipes never live in skill prose.
|
|
5
|
+
* Static text — registered per role by the selected-skills row, which every skill-loading role mounts.
|
|
6
|
+
*/
|
|
7
|
+
export const DATA_CONTRACT_SECTION = 'capital:data-contract';
|
|
8
|
+
/** Just before the selected-skill brief (order 60). */
|
|
9
|
+
export const DATA_CONTRACT_ORDER = 59;
|
|
10
|
+
const TEXT = `# 数据边界
|
|
11
|
+
|
|
12
|
+
需要数据时,先看本角色是不是取数通道的承担者:不是,就向承担它的角色提请求;是,就用本角色的工具面执行。除这两条路,不自己访问 URL、API、数据库、终端或脚本,也不用训练记忆补数字。
|
|
13
|
+
|
|
14
|
+
- 结构化数据(行情、财务报表、宏观序列、持仓)→ 委派 data_collector
|
|
15
|
+
- 网页、披露文件、新闻、会议材料、PDF → 委派 web_retriever
|
|
16
|
+
- 已落库 Dataset 的计算、统计与出图 → 委派 data_junior
|
|
17
|
+
- 你自己就是上述某一侧的承担者时,用本角色的工具面执行,不越过该面
|
|
18
|
+
|
|
19
|
+
请求写清:标的或代码、证据类型(公告 / 财报 / 纪要 / 行情 / 宏观序列)、需要的字段或章节、期间与 as-of、频率、口径。"最新"必须带锚点日期。
|
|
20
|
+
|
|
21
|
+
每个数字都要带出处(场所、文档名、文档日期、accession 或该次检索返回的链接)、取数路径与缺口。缺字段就点名缺哪个并停止该字段下的分析,不估算、不回填;用户粘贴的材料标 pasted by user,不因此提高置信度。
|
|
22
|
+
|
|
23
|
+
skill 正文只写"要什么证据",不写服务商、密钥、URL、下载步骤或脚本命令。`;
|
|
24
|
+
export function dataContractSection() {
|
|
25
|
+
return { name: DATA_CONTRACT_SECTION, order: DATA_CONTRACT_ORDER, interpolate: false, text: TEXT };
|
|
26
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `tools/selected-skills` row: role-scoped selected-skill catalog
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* `tools/selected-skills` row: role-scoped selected-skill catalog, the `capital:data-contract`
|
|
3
|
+
* section every skill-loading role needs, and the selected-skill brief. Mounted once per Capital
|
|
4
|
+
* preset (`config.role`) and registers into that Agent's own scope only.
|
|
5
5
|
*/
|
|
6
6
|
import type { Context } from '@deepseek-ai/cordis';
|
|
7
7
|
import { type SelectedSkillRole } from './agents/selected-skills-provider.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { registerSelectedSkills, renderSelectedSkillsBrief, SELECTED_SKILL_ENTRY_ROLES, } from './agents/selected-skills-provider.js';
|
|
2
2
|
import { readCapitalConfig } from './capital-settings.js';
|
|
3
|
+
import { dataContractSection } from './data-contract.js';
|
|
3
4
|
export const name = 'capital-selected-skills';
|
|
4
5
|
export const inject = ['systemPrompt'];
|
|
5
6
|
const SECTION_NAME = 'capital:selected-skills';
|
|
@@ -17,6 +18,8 @@ export function apply(ctx, config = {}) {
|
|
|
17
18
|
registerSelectedSkills(ctx, role, accessOf(ctx));
|
|
18
19
|
let lastRenderError;
|
|
19
20
|
ctx.effect(() => {
|
|
21
|
+
// Every role that can load a skill also needs the boundary that says where its data comes from.
|
|
22
|
+
const disposeContract = ctx.systemPrompt.section(dataContractSection());
|
|
20
23
|
const dispose = ctx.systemPrompt.section({
|
|
21
24
|
name: SECTION_NAME,
|
|
22
25
|
order: SECTION_ORDER,
|
|
@@ -38,6 +41,11 @@ export function apply(ctx, config = {}) {
|
|
|
38
41
|
}
|
|
39
42
|
},
|
|
40
43
|
});
|
|
41
|
-
return
|
|
44
|
+
return () => {
|
|
45
|
+
if (typeof dispose === 'function')
|
|
46
|
+
dispose();
|
|
47
|
+
if (typeof disposeContract === 'function')
|
|
48
|
+
disposeContract();
|
|
49
|
+
};
|
|
42
50
|
}, 'capital-generation.selected-skills()');
|
|
43
51
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Known limit: DNS resolves per request but the IP is not pinned to the connection,
|
|
4
4
|
* so a rebinding window remains (same trade-off as dsh-search-first).
|
|
5
5
|
*/
|
|
6
|
-
export declare const LOCAL_FETCH_CLIENT_VERSION = "2.
|
|
6
|
+
export declare const LOCAL_FETCH_CLIENT_VERSION = "2.11.0";
|
|
7
7
|
export declare const LOCAL_FETCH_MAX_URL_LENGTH = 2048;
|
|
8
8
|
export type LocalFetchErrorCode = 'ABORTED' | 'TIMEOUT' | 'INVALID_URL' | 'BLOCKED_URL' | 'DNS' | 'REDIRECT' | 'HTTP' | 'TOO_LARGE' | 'UNSUPPORTED_CONTENT_TYPE';
|
|
9
9
|
export declare class LocalFetchError extends Error {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* so a rebinding window remains (same trade-off as dsh-search-first).
|
|
5
5
|
*/
|
|
6
6
|
import { htmlToMarkdown, stripInvisibleText } from './html-markdown.js';
|
|
7
|
-
export const LOCAL_FETCH_CLIENT_VERSION = '2.
|
|
7
|
+
export const LOCAL_FETCH_CLIENT_VERSION = '2.11.0';
|
|
8
8
|
export const LOCAL_FETCH_MAX_URL_LENGTH = 2048;
|
|
9
9
|
export class LocalFetchError extends Error {
|
|
10
10
|
code;
|
|
@@ -35,7 +35,7 @@ export interface WindCallResult {
|
|
|
35
35
|
code?: WindErrorCode;
|
|
36
36
|
}
|
|
37
37
|
/** Must match `package.json` version; a test pins the two together. */
|
|
38
|
-
export declare const WIND_CLIENT_VERSION = "2.
|
|
38
|
+
export declare const WIND_CLIENT_VERSION = "2.11.0";
|
|
39
39
|
export interface WindClient {
|
|
40
40
|
callTool(toolName: string, args: Record<string, unknown>, signal?: AbortSignal): Promise<WindCallResult>;
|
|
41
41
|
}
|
|
@@ -19,7 +19,7 @@ export const WIND_SERVER_ENDPOINTS = {
|
|
|
19
19
|
analytics_data: 'https://mcp.wind.com.cn/vserver_analytics_data/mcp/',
|
|
20
20
|
};
|
|
21
21
|
/** Must match `package.json` version; a test pins the two together. */
|
|
22
|
-
export const WIND_CLIENT_VERSION = '2.
|
|
22
|
+
export const WIND_CLIENT_VERSION = '2.11.0';
|
|
23
23
|
function errorText(error) {
|
|
24
24
|
return error instanceof Error ? error.message : String(error);
|
|
25
25
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@v587d/capital-generation",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"description": "Capital Generation:面向中国散户的 AI 投资助手插件(自动模式 Agent Preset)",
|
|
5
5
|
"icon": "assets/cg-icon.png",
|
|
6
6
|
"author": "v587d",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"watchlist",
|
|
109
109
|
"preset",
|
|
110
110
|
"selected-skills/catalog.js",
|
|
111
|
+
"selected-skills/filter.js",
|
|
111
112
|
"selected-skills/routing.js",
|
|
112
113
|
"selected-skills/ROUTING.md",
|
|
113
114
|
"selected-skills/README.md",
|