@v587d/capital-generation 2.6.5 → 2.7.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 +49 -0
- package/README.md +79 -26
- package/THIRD_PARTY_NOTICES.md +43 -0
- package/capital-config/client.js +18 -2
- package/capital-config/client.src.cjs +161 -20
- package/capital-config/index.js +10 -0
- package/capital-config/package.json +1 -1
- package/capital-watchlist/client.js +48 -7
- package/capital-watchlist/client.src.cjs +383 -66
- package/capital-watchlist/holding-rules.js +64 -0
- package/capital-watchlist/index.js +117 -2
- package/capital-watchlist/package.json +2 -1
- package/chart-ui/package.json +1 -1
- package/lib/agents/selected-skills-provider.d.ts +26 -0
- package/lib/agents/selected-skills-provider.js +99 -0
- package/lib/index.d.ts +37 -0
- package/lib/index.js +45 -11
- package/lib/time/tools.d.ts +6 -0
- package/lib/time/tools.js +6 -1
- package/lib/watchlist/tools.d.ts +52 -0
- package/lib/watchlist/tools.js +146 -0
- 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 +12 -3
- package/preset/capital-generation/agent.patch.yml +7 -0
- package/preset/capital-generation/skills/capital-equity-research/SKILL.md +45 -0
- package/preset/capital-generation/skills/capital-event-impact/SKILL.md +29 -0
- package/preset/capital-generation/skills/capital-portfolio-review/SKILL.md +29 -0
- package/selected-skills/README.md +44 -0
- package/selected-skills/catalog.js +181 -0
- package/selected-skills/china-stock-research-skills/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
- package/selected-skills/china-stock-research-skills/.github/ISSUE_TEMPLATE/skill_request.md +28 -0
- package/selected-skills/china-stock-research-skills/.github/PULL_REQUEST_TEMPLATE.md +15 -0
- package/selected-skills/china-stock-research-skills/CHANGELOG.md +59 -0
- package/selected-skills/china-stock-research-skills/CONTRIBUTING.md +121 -0
- package/selected-skills/china-stock-research-skills/GITHUB_PUBLISHING.md +259 -0
- package/selected-skills/china-stock-research-skills/INSTALL.md +151 -0
- package/selected-skills/china-stock-research-skills/LICENSE +21 -0
- package/selected-skills/china-stock-research-skills/PUBLISH_CHECKLIST.md +165 -0
- package/selected-skills/china-stock-research-skills/README.en.md +209 -0
- package/selected-skills/china-stock-research-skills/README.md +209 -0
- package/selected-skills/china-stock-research-skills/RELEASE_ASSETS.md +222 -0
- package/selected-skills/china-stock-research-skills/ROADMAP.md +45 -0
- package/selected-skills/china-stock-research-skills/SKILLS.md +85 -0
- package/selected-skills/china-stock-research-skills/UPSTREAM.md +11 -0
- package/selected-skills/china-stock-research-skills/examples/full-report-flow.md +20 -0
- package/selected-skills/china-stock-research-skills/examples/module-select-cases.md +26 -0
- package/selected-skills/china-stock-research-skills/examples/quickstart-prompts.md +25 -0
- package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/SKILL.md +55 -0
- package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/references/idc-order-ledger-guide.md +34 -0
- package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/references/order-quality-checklist.md +16 -0
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/SKILL.md +75 -0
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/final-output-contract.md +62 -0
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/routing-matrix.md +34 -0
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/sector-overlay-escalation-rules.md +38 -0
- package/selected-skills/china-stock-research-skills/skills/financial-health/SKILL.md +54 -0
- package/selected-skills/china-stock-research-skills/skills/financial-health/references/idc-balance-sheet-stress-guide.md +31 -0
- package/selected-skills/china-stock-research-skills/skills/financial-health/references/red-flag-checklist.md +14 -0
- package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/SKILL.md +54 -0
- package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/references/idc-value-chain-and-peers.md +42 -0
- package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/references/moat-grid.md +13 -0
- package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/SKILL.md +54 -0
- package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/references/idc-monitoring-indicators.md +33 -0
- package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/references/monitoring-dashboard.md +25 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/analysis-pattern-selector.md +24 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/asset-heavy-ramp-overlay.md +28 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/business-model-transition-overlay.md +28 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/citation-standard.md +48 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/company-disclosure-map.md +37 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/consumer-channel-brand-overlay.md +29 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/cyclical-price-driven-overlay.md +29 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/export-manufacturing-supply-chain-overlay.md +29 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/financial-kpi-dictionary.md +43 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/idc-heavy-asset-transition-overlay.md +73 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/language-output-standard.md +36 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/project-order-business-overlay.md +28 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/regulated-healthcare-policy-overlay.md +29 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/research-output-template.md +50 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/sector-adaptation-checklist.md +42 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/source-registry.md +49 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/catalyst-calendar.md +5 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/company-fact-sheet.md +25 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/evidence-table.md +5 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/idc-project-ledger.md +5 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/valuation-scenario-table.md +7 -0
- package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/SKILL.md +55 -0
- package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/references/idc-transition-markers.md +27 -0
- package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/references/transition-scorecard.md +13 -0
- package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/SKILL.md +55 -0
- package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/references/idc-valuation-overlays.md +31 -0
- package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/references/method-selection.md +14 -0
- package/selected-skills/investment-skills/.github/workflows/validate.yml +25 -0
- package/selected-skills/investment-skills/.tbd/config.yml +107 -0
- package/selected-skills/investment-skills/LICENSE +21 -0
- package/selected-skills/investment-skills/Makefile +29 -0
- package/selected-skills/investment-skills/README.md +253 -0
- package/selected-skills/investment-skills/UPSTREAM.md +12 -0
- package/selected-skills/investment-skills/docs/development.md +37 -0
- package/selected-skills/investment-skills/docs/roadmap.md +25 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/SKILL.md +192 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/agents/openai.yaml +4 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/00-source-key.md +82 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/01-decision-posture.md +242 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/02-business-economics.md +188 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/03-management-governance.md +213 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/04-financial-reality.md +192 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/05-valuation.md +166 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/06-capital-allocation.md +238 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/07-risk-monitoring.md +189 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays.md +309 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/scripts/framework.py +470 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,55 @@
|
|
|
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.7.0] - 2026-10-10
|
|
11
|
+
|
|
12
|
+
自选股从**"你每次贴给助手看"**变成**"助手自己读得到"**,并加上三套自带的研究流程与一份默认关闭的
|
|
13
|
+
社区 Skill 实验目录。按第二位(minor)口径发,因为**宿主要求变了**:本插件现在显式声明需要
|
|
14
|
+
DSH`@0.2.0-rc.2` 带的 `dsh-skill` 与 `dsh-skill-filesystem`(两颗精确版本;2.6.5 只声明了宿主内核)。
|
|
15
|
+
其余契约与 2.6.5 相同:既有工具的入参与返回、**94** 颗数据收集能力与 **14** 颗网页检索能力、四把密钥
|
|
16
|
+
与凭据引用名、配置字段、会话日志格式,以及**你已有的那份自选股数据**,全部没动。
|
|
17
|
+
|
|
18
|
+
**装完要做的两件事**:
|
|
19
|
+
|
|
20
|
+
1. **新建一个 Capital 模式会话**。选用开关在主插件装配时读一次,旧会话看不到新装配的东西。
|
|
21
|
+
2. 想让组合复盘直接用你面板里的仓位,先在自选股把那几只标成持仓并填占比。**不标就只是关注清单**,
|
|
22
|
+
助手不会替你把"加过自选"读成"持有"。
|
|
23
|
+
|
|
24
|
+
已有清单**不需要任何处理**:持仓是新增的**可选**字段,没标过的旧条目一律按"纯关注"读,存储格式版本
|
|
25
|
+
没有抬,不必清空重来。
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- **自选股面板可以把某几只标成实际持仓并填占比**。可交易的证券(A 股、场内基金、港股、美股)那一行
|
|
30
|
+
的「更多」里多一行「持仓」,开关拨到开就标上,紧接着一行出现「持仓比例」,用 `+` / `−` 按 10 个
|
|
31
|
+
百分点调(手动输入的数不会被吸附成整十),标过的行名称标红,拨回关就取消——点这一行的文字不会误删。
|
|
32
|
+
单只最远走到 100%,那一格就置灰;因为只做多、不算空头,所有持仓加起来最多 120%,额度用完 `+`
|
|
33
|
+
同样置灰,而"标了持仓但比例还空着"的那几格永远允许继续改。**指数没有这一行**——指数不是一个可持有、
|
|
34
|
+
可配比率的标的;但历史上标过的指数持仓仍然照常标红、仍然给取消出口,只按类型画会把人锁死在里面改不掉。
|
|
35
|
+
面板与宿主共用**同一份**类型与上限表:这两件事此前分两头各判一次,一旦放宽一头就是"点了没反应"或者
|
|
36
|
+
"面板让填、宿主悄悄不收"。
|
|
37
|
+
- **主 Agent 多一颗只读的 `get_watchlist`**:读你本机那份清单——代码、名称、类型、添加日期、顺序
|
|
38
|
+
(置顶在前),以及你标的持仓、自报的占比、标记日期与"距今多少天"。它**没有任何写入口**,增删与标记
|
|
39
|
+
只能由你在面板里做;通用的子 Agent 明确拿不到这颗工具。占比是**你自报的**,助手原样引用、不自行折算
|
|
40
|
+
也不补满 100%;标记距今较久、或者你说过"最近调过仓",它会先跟你复述确认这份仓位仍然成立,再拿它做
|
|
41
|
+
组合判断。"清单读不到"与"你确实没有自选股"是两件事,话术分开,不会把读取失败说成空清单。这份清单不含
|
|
42
|
+
成本、股数与买卖流水,也不给行情——行情、财务与历史数值一律走原来的取数角色。
|
|
43
|
+
- **三套自带的研究流程**(默认装载,无需开关;结论都写在最终答复里,不新增工具、角色或报告通道):
|
|
44
|
+
单一标的完整投研报告、具体公告或事件的影响核验、持仓与组合复盘(先读上面那颗只读工具)。主 Agent 的
|
|
45
|
+
人设里补了对应的三条分流,README 新增「试试这三类研究」三段可以直接照抄的指令。
|
|
46
|
+
- **社区 Skill 自选实验目录,默认全部关闭**。里面是两份 MIT 协议的固定快照:
|
|
47
|
+
`finterm-ai/investment-skills`(commit `7235d34`)与 `spikeHongg/china-stock-research-skills`
|
|
48
|
+
(commit `d49f1f3`),共 7 条可选。开关在「插件」→ **Capital Generation** → 「配置」页新增的
|
|
49
|
+
「选用 Skill」段:可按能力标签筛选,每一格旁边写着来源与仓库、状态、最近提交、下次复查日期和风险提示。
|
|
50
|
+
状态只有两种说法:`experimental`(能用,但按美股语境写,不能直接当 A 股规则)与 `watchlist`(上游
|
|
51
|
+
九十天内没有提交,启用前请自己复核内容和出处)。能力标签只说明"这条能帮上什么",不代表推荐或背书。
|
|
52
|
+
开启后**只对之后新建的 Capital 根会话生效,子 Agent 不继承**;上游自带的编排 skill 被排除,因为它和
|
|
53
|
+
本插件既有的角色路由冲突;上游脚本只作为材料保留,一条都不会被执行。
|
|
54
|
+
体积说清楚:装出去的是**运行时正文与溯源**——每颗 skill 的正文、references 与脚本,加上两份 `LICENSE`
|
|
55
|
+
和 `UPSTREAM.md`;上游 README 用的成图和它自己的 viz 站点不进包(同一批图在仓库里还存了两份)。整包
|
|
56
|
+
解包体积因此只从 2.2 MB 抬到 2.6 MB,下载 869 kB。全量快照仍然完整住在仓库里,从 `github:` 安装、
|
|
57
|
+
或回看"它当时是哪个 commit、原文怎么写"都不受影响。
|
|
58
|
+
|
|
10
59
|
## [2.6.5] - 2026-10-08
|
|
11
60
|
|
|
12
61
|
上游数据源的一轮**外部巡检**:仓库里新加了一条每天早上的契约巡检,不合格自动开 GitHub Issue。
|
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.
|
|
18
|
+
<a href="https://github.com/v587d/capital-generation/releases"><img src="https://img.shields.io/badge/version-2.7.0-9cf" alt="Version"></a>
|
|
19
19
|
</p>
|
|
20
20
|
|
|
21
21
|
# Capital Generation
|
|
@@ -26,37 +26,44 @@ Capital Generation 是运行在 [DeepSeek Harness(DSH)](https://github.com/d
|
|
|
26
26
|
|
|
27
27
|
**🎞️视频演示:**[安装、配置与使用](https://www.bilibili.com/video/BV1fzaZ6CE9J/)。
|
|
28
28
|
|
|
29
|
-
例如,你可以问:「复盘 XXXX 最近 20 个交易日的走势,结合公告和财务数据说明主要变化,并画一张量价图。」
|
|
30
29
|
[样例:假期后研判报告(20261007)](docs/sample/假期后研判报告.md)。
|
|
31
30
|
|
|
32
31
|
> [!IMPORTANT]
|
|
33
32
|
> 本项目仍在探索中,不提供金融服务或投资建议,不保证数据完整、及时或准确,也不承诺投资回报。请自行核对来源并承担投资风险。
|
|
34
33
|
|
|
35
|
-
##
|
|
34
|
+
## 快速上手
|
|
36
35
|
|
|
37
36
|
> [!NOTE]
|
|
38
37
|
> 适配 DSH`@0.2.0-rc.2`。已在 Linux 的 Web profile 和 Windows 桌面端验证;其他环境尚未充分测试。建议使用 `Deepseek/deepseek-flash` ,思考推理能力为 High ;GPT / Claude 尚未充分测试。
|
|
39
38
|
|
|
40
39
|
1. **安装插件。**
|
|
40
|
+
|
|
41
41
|
Linux / macOS 的 Web 或 CLI profile 在终端执行,下面两条 **任选一条** :
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
```bash
|
|
44
|
+
dsh plugin --profile web add @v587d/capital-generation
|
|
45
|
+
```
|
|
46
|
+
或
|
|
47
|
+
```bash
|
|
48
|
+
dsh plugin --profile web add github:v587d/capital-generation
|
|
49
|
+
```
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
dsh plugin --profile web add github:v587d/capital-generation
|
|
49
|
-
```
|
|
51
|
+
两条装完的功能一样:前者取 npm 上已发布的版本,后者取本仓库当前的代码。装后重启该 profile。
|
|
50
52
|
|
|
51
|
-
|
|
52
|
-
安装后重启该 profile。
|
|
53
|
+
DSH 桌面端在 「添加插件」 中输入,下面两条 **任选一条**:
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
```input
|
|
56
|
+
https://github.com/v587d/capital-generation
|
|
57
|
+
```
|
|
58
|
+
或
|
|
59
|
+
```input
|
|
60
|
+
@v587d/capital-generation
|
|
61
|
+
```
|
|
56
62
|
桌面端自带 DSH 宿主,不需要单独用 npm 安装宿主。本仓库已包含构建产物,普通用户不需要克隆仓库或运行构建命令。
|
|
57
63
|
|
|
64
|
+
|
|
58
65
|
> [!NOTE]
|
|
59
|
-
>
|
|
66
|
+
> 本插件所有自带密钥均可免费申请、免费日常使用。 哪怕所有密钥留空也不影响插件核心功能,即缺哪个密钥,仅表示对应能力就不可用,其他功能照常。
|
|
60
67
|
|
|
61
68
|
2. **选填密钥。** 打开 DSH 「插件」 → **Capital Generation** -> 「配置」。
|
|
62
69
|
|
|
@@ -67,14 +74,14 @@ DSH 桌面端在 「添加插件」 中输入:
|
|
|
67
74
|
| [Wind Alice](https://market.windalice.com/#/home) | 公告与新闻检索,以及宏观/行业/汇率指标与按日期区间取的历史 K 线 |
|
|
68
75
|
| [PaddleOCR AIStudio](https://aistudio.baidu.com/paddleocr) | 解析 PDF 和图片中的文字 |
|
|
69
76
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
77
|
+
这些都是第三方服务的密钥,需分别向服务方申请;额度和条款以各服务方为准。
|
|
78
|
+
保存后**新建 Capital 模式会话**即可生效,无需重启。
|
|
79
|
+
也可以将密钥写入 `~/.dsh/.credentials.yaml`,名称依次为 `FUYAO_API_KEY`、`ANYSEARCH_API_KEY`、`WIND_API_KEY`、`PADDLE_OCR_TOKEN`。
|
|
80
|
+
密钥由 DSH 凭据服务保存,不会显示在会话配置中。
|
|
74
81
|
|
|
75
82
|
<p align="center">
|
|
76
|
-
<a href="assets
|
|
77
|
-
<img src="assets
|
|
83
|
+
<a href="assets/数据源配置.png">
|
|
84
|
+
<img src="assets/数据源配置.png" alt="数据源配置" width="800">
|
|
78
85
|
</a>
|
|
79
86
|
</p>
|
|
80
87
|
|
|
@@ -86,22 +93,60 @@ DSH 桌面端在 「添加插件」 中输入:
|
|
|
86
93
|
</a>
|
|
87
94
|
</p>
|
|
88
95
|
|
|
89
|
-
##
|
|
96
|
+
## 试试这么用
|
|
97
|
+
|
|
98
|
+
在新的 Capital 模式会话中使用以下指令。将方括号内容换成自己的标的、公告或持仓;证券代码写完整市场后缀,例如 `600519.SH`。每条指令单独发送,便于观察结果。
|
|
99
|
+
|
|
100
|
+
**完整投资研究报告**
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
请对[公司名称、俗称]([证券代码])做一份完整投资研究报告。
|
|
104
|
+
以你实际取得的最新可用数据为截止,覆盖业务、财务、估值、价格走势、近期重要事件以及风险与反方观点。
|
|
105
|
+
先给核心判断和最大风险;关键数字注明报告期或交易日、来源和采集时间。
|
|
106
|
+
证据不足的部分注明未评估及原因,不编造目标价或收益概率。
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**事件与公告影响分析**
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
请核查[公司名称]([完整证券代码])的[公告标题及披露日期,或“最近一次业绩公告”],
|
|
113
|
+
分析它对经营、现金流和投资风险可能产生的影响。
|
|
114
|
+
先核对公告原文、披露时间和事项进展,区分已实施事实与尚待批准的方案;
|
|
115
|
+
如讨论股价反应,只比较公告后可交易时段和同窗市场走势,不把同期涨跌直接归因于公告。
|
|
116
|
+
给出最大不确定性和后续验证指标,找不到原文时不要假设事件已发生。
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**持仓与组合复盘**
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
请复盘我的持仓[其他资产如有,请补充]。
|
|
123
|
+
请先核对这些比例是否覆盖全部资产,再分析单只标的、行业与市场的集中风险,
|
|
124
|
+
以及哪些风险会同时影响多个持仓。
|
|
125
|
+
我没有提供交易流水或成本,不要计算期间收益、最大回撤或收益归因;
|
|
126
|
+
我只在自选股里标过持仓的那几只才算仓位,没标的只是关注。
|
|
127
|
+
给出最需要核实的信息和可观察的防守选项。
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 还能做什么
|
|
90
131
|
|
|
91
132
|
- **查数据和资料:** 覆盖A股、港股、美股,由 Agents 按需获取行情、财务、指数、基金与宏观行业数据,检索公告、新闻和研报。共计 **94** 个数据收集能力和 **14** 个网页检索能力,部分公开数据源无需额外密钥;具体覆盖范围见 [数据收集能力表](docs/data-collector-capabilities.md) 和 [网页检索能力表](docs/web-retriever-capabilities.md)。
|
|
92
133
|
- **数据分析:** 所有 Agents 均不直接接触原始结构数据,Agents 按需读取数据、校验数据,并写脚本挖掘数据背后含义。
|
|
93
134
|
- **可视化:** 将数据交给不同角色处理,再生成可交互图表。图表会作为本轮交付物出现在会话中,可在侧栏查看或离线打开。了解处理流程可看 [Agent 角色说明](docs/agent-roles.md)。
|
|
94
|
-
- **管理自选股:** 在 Capital 会话中输入 `/` 或点击输入框旁的 `+`,从「指令」中打开「自选股」。A股、港股、美股共用这一个入口:直接敲代码或名称,候选列表会写清它属于哪个市场;清单里每一行都带市场标注,指数另标一行。某一个市场取数失败时,其余市场照常刷新,页面会说明失败的是哪一路;整体刷新失败时已有报价仍显示为旧快照,并标明时间,请勿当作实时价格。
|
|
95
|
-
|
|
96
|
-
会话中的图表效果:
|
|
97
135
|
|
|
98
136
|
| 走势折线 | K 线与量价 |
|
|
99
137
|
| :---: | :---: |
|
|
100
138
|
| <a href="assets/chart-line-sidebar.png"><img src="assets/chart-line-sidebar.png" alt="侧栏折线图" width="400"></a> | <a href="assets/chart-candlestick-sidebar.png"><img src="assets/chart-candlestick-sidebar.png" alt="侧栏 K 线图" width="400"></a> |
|
|
101
139
|
|
|
140
|
+
- **管理自选股:** 在 Capital 会话中输入 `/` 或点击输入框旁的 `+`,从「指令」中打开「自选股」。
|
|
141
|
+
|
|
142
|
+
| 管理自选股 | 标记持仓 |
|
|
143
|
+
| :---: | :---: |
|
|
144
|
+
| <a href="assets/watchlist-popup.png"><img src="assets/watchlist-popup.png" alt="管理自选股" width="400"></a> | <a href="assets/watchlist-more.png"><img src="assets/watchlist-more.png" alt="标记持仓" width="400"></a> |
|
|
145
|
+
|
|
146
|
+
- **精选 Skills:** 当前收录两个开源项目:[The Investment Skills Lexicon](https://github.com/finterm-ai/investment-skills)(Buffett Investment Framework)和 [China Stock Research Skills](https://github.com/spikeHongg/china-stock-research-skills)(六个研究模块)。上游编排 skill 不会覆盖 Capital 的会话路由。可在「插件」→ **Capital Generation** →「配置」中按需开启;开启后新建 Capital 会话生效,默认关闭。
|
|
102
147
|
<p align="center">
|
|
103
|
-
<a href="assets/
|
|
104
|
-
<img src="assets/
|
|
148
|
+
<a href="assets/selected-skills配置.png">
|
|
149
|
+
<img src="assets/selected-skills配置.png" alt="selected-skills配置" width="800">
|
|
105
150
|
</a>
|
|
106
151
|
</p>
|
|
107
152
|
|
|
@@ -129,3 +174,11 @@ npm run smoke:boot # 检查插件装配
|
|
|
129
174
|
```
|
|
130
175
|
|
|
131
176
|
完整版本历史见 [CHANGELOG.md](CHANGELOG.md)。问题与建议可到 [Issues](https://github.com/v587d/capital-generation/issues) 或 [DSH官方 Discussions](https://github.com/deepseek-ai/deepseek-harness/discussions/6947) 交流。本项目采用 [MIT 许可](LICENSE)。
|
|
177
|
+
|
|
178
|
+
## 致谢
|
|
179
|
+
|
|
180
|
+
- 「精选 Skills」的研究流程**原样收录**自 [finterm-ai/investment-skills](https://github.com/finterm-ai/investment-skills) 与 [spikeHongg/china-stock-research-skills](https://github.com/spikeHongg/china-stock-research-skills)(均 MIT License):不改上游文本,按固定 commit 收录,全部默认关闭,其中观点与方法论属于原作者,不构成对本插件结论的背书。
|
|
181
|
+
- 会话里的可交互图表由 [TradingView Lightweight Charts](https://github.com/tradingview/lightweight-charts)(Apache-2.0)渲染。
|
|
182
|
+
- 行情、财务、公告与网页材料来自同花顺 Fuyao、Wind Alice、AnySearch、PaddleOCR 以及东方财富、腾讯等公开或申请制接口;数据版权归各服务方,额度与条款以服务方为准,本项目不重新分发原始数据。
|
|
183
|
+
|
|
184
|
+
随包分发的第三方组件、版本与许可逐条列在 [第三方组件与许可](THIRD_PARTY_NOTICES.md)。
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 第三方组件与许可(Third-Party Notices)
|
|
2
|
+
|
|
3
|
+
本文件集中列出 Capital Generation 随包分发或调用的第三方组件:项目名、作者、许可证与原始仓库。
|
|
4
|
+
本文件随 npm 包一起发布。各组件的许可全文以仓库内文件为准(下表"许可文本"列给出位置)。
|
|
5
|
+
|
|
6
|
+
## 随包分发的代码与内容
|
|
7
|
+
|
|
8
|
+
| 组件 | 作者 | 许可证 | 原始仓库 | 许可文本 | 用在哪里 |
|
|
9
|
+
|---|---|---|---|---|---|
|
|
10
|
+
| Lightweight Charts™ 5.2.1(standalone 构建) | TradingView | Apache-2.0 | <https://github.com/tradingview/lightweight-charts> | `lib/chart/vendor/LICENSE` | 插件内所有可交互图表的渲染层;`VERSION.json` 记有该构建的 sha256,归属标识(attribution logo)保持开启 |
|
|
11
|
+
| Investment Skills Lexicon(`7235d34`,未修改的固定快照) | finterm.ai | MIT | <https://github.com/finterm-ai/investment-skills> | `selected-skills/investment-skills/LICENSE` | 「精选 Skills」中的 `buffett-investment-framework` |
|
|
12
|
+
| China Stock Research Skills(`d49f1f3`,未修改的固定快照) | spikeHongg | MIT | <https://github.com/spikeHongg/china-stock-research-skills> | `selected-skills/china-stock-research-skills/LICENSE` | 「精选 Skills」中的 `financial-health`、`risk-warning-catalysts`、`valuation-investment-strategy`、`strategy-business-transition`、`industry-competition-moat`、`business-decomposition-order-quality` |
|
|
13
|
+
|
|
14
|
+
两份 Skill 快照的收录方式、上游 commit、维护状态与排除项逐条记在各自的 `UPSTREAM.md` 里;它们**默认全部关闭**,
|
|
15
|
+
只在使用者于配置页显式开启后才对新建的 Capital 会话可见,上游自带的脚本一律不作为可执行面引入。
|
|
16
|
+
上游自带的编排 skill(`china-stock-research-orchestrator`)不进入可选清单,因为它与本插件既有的角色路由冲突。
|
|
17
|
+
|
|
18
|
+
## npm 运行时依赖
|
|
19
|
+
|
|
20
|
+
| 包 | 版本 | 许可证 | 用途 |
|
|
21
|
+
|---|---|---|---|
|
|
22
|
+
| `@deepseek-ai/schemastery` | 3.18.4 | MIT | 工具参数的 JSON Schema 构造 |
|
|
23
|
+
| `zod` | 4.5.4 | MIT | 配置与持久化结构的校验 |
|
|
24
|
+
| `turndown` | 7.2.4 | MIT | 网页材料 HTML → Markdown |
|
|
25
|
+
| `@joplin/turndown-plugin-gfm` | 1.0.68 | MIT | 同上,表格等 GFM 扩展 |
|
|
26
|
+
|
|
27
|
+
## 由宿主提供、不随本包分发
|
|
28
|
+
|
|
29
|
+
`@deepseek-ai/cordis`(`^4.0.2`)、`@deepseek-ai/dsh-skill` 与 `@deepseek-ai/dsh-skill-filesystem`
|
|
30
|
+
(均 `0.2.0-rc.2`)由 DSH 宿主提供,本插件只声明依赖。宿主的许可见 <https://github.com/deepseek-ai>。
|
|
31
|
+
|
|
32
|
+
## 外部数据与检索服务
|
|
33
|
+
|
|
34
|
+
以下服务由使用者自备密钥调用,**不是代码依赖,也不受上表许可约束**;接口条款、额度与数据版权归各服务方所有:
|
|
35
|
+
同花顺 Fuyao 结构化数据接口、Wind Alice 金融信披文档检索、AnySearch 网页搜索与提取、
|
|
36
|
+
PaddleOCR 文档解析,以及东方财富、腾讯的公开行情接口与若干具名公开来源。
|
|
37
|
+
本插件不重新分发这些服务的原始数据,图表与结论所依据的数据集只保存在使用者本机,默认保留 7 天。
|
|
38
|
+
|
|
39
|
+
## 本插件自身
|
|
40
|
+
|
|
41
|
+
Capital Generation 的原创代码与文档以 MIT 许可发布,见仓库根的 `LICENSE`。
|
|
42
|
+
本文件不构成对任何第三方项目、数据源或其观点的背书;两份 Skill 快照里的方法论与结论属于原作者,
|
|
43
|
+
使用前请自行复核来源,尤其不要把按美股语境写的框架直接当作 A 股规则。
|
package/capital-config/client.js
CHANGED
|
@@ -5,7 +5,7 @@ window.__ModuleLoader__.load({
|
|
|
5
5
|
var module = { exports: {} }
|
|
6
6
|
var exports = module.exports
|
|
7
7
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' })
|
|
8
|
-
"use strict";var{createElement:i,useEffect:E,useRef:A,useState:S}=require("react"),{createPortal:R}=require("react-dom"),{SettingsForm:_,SettingsSecretField:D,SettingsFormModel:N,Switch:H,IconRightUpOutlineRegular:P}=require("@deepseek-ai/dsh-client-ui-primitives"),g="capital-config",y="@v587d/capital-generation",b="settings.capital",x="plugins.detail.badge",O="https://github.com/v587d/capital-generation",T=`https://www.npmjs.com/package/${y}`,I="FUYAO_API_KEY",U="ANYSEARCH_API_KEY",j="WIND_API_KEY",K="PADDLE_OCR_TOKEN",f={fuyao:"https://fuyao.aicubes.cn/docs/",anysearch:"https://www.anysearch.com/docs/auth",wind:"https://market.windalice.com/",paddleocr:"https://aistudio.baidu.com/paddleocr"},o=["fuyao","anysearch","wind","paddleocr"],r={fuyao:I,anysearch:U,wind:j,paddleocr:K},W=()=>Object.fromEntries(o.map(a=>[a,{ref:r[a],configured:!1,writable:!0}])),z={title:"\u914D\u7F6E",fuyaoLabel:"Fuyao API Key",fuyaoHint:"\u540C\u82B1\u987A Fuyao \u7ED3\u6784\u5316\u6570\u636E\u63A5\u53E3\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",anysearchLabel:"AnySearch API Key",anysearchHint:"AnySearch \u7F51\u9875\u641C\u7D22 / \u63D0\u53D6\u63A5\u53E3\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",localFetchLabel:"\u5141\u8BB8\u542F\u52A8\u672C\u5730\u63D0\u53D6\u7F51\u9875\u5185\u5BB9",localFetchHint:"\u5F00\u542F\u540E\u672C\u5730\u6293\u53D6\u515C\u5E95\uFF08\u56DE\u6267\u6765\u6E90 local-http\uFF09\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",windLabel:"Wind Alice API Key",windHint:"Wind \u91D1\u878D\u4FE1\u62AB\u7C7B\u6587\u6863\u68C0\u7D22\u63A5\u53E3\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",paddleocrLabel:"PaddleOCR \u6587\u6863\u89E3\u6790 Token",paddleocrHint:"\u914D\u7F6E Token \u540E\u81EA\u52A8\u89E3\u6790 PDF\u3001\u56FE\u7247\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",openDocs:"\u5B98\u65B9\u6587\u6863",configured:"\u5DF2\u914D\u7F6E\u5BC6\u94A5\u3002",notConfigured:"\u672A\u914D\u7F6E\u5BC6\u94A5\u3002",save:"\u4FDD\u5B58",saving:"\u4FDD\u5B58\u4E2D\u2026",readOnly:"\u672C\u90E8\u7F72\u7684\u8BBE\u7F6E\u4E3A\u53EA\u8BFB\u3002",saveFailed:"\u672C\u90E8\u7F72\u6CA1\u6709\u63A5\u53D7\u8FD9\u4E9B\u503C\uFF0C\u5DF2\u4FDD\u7559\u4F9B\u4F60\u4FEE\u6539\u3002",unavailable:"\u8BE5\u63D2\u4EF6\u5F53\u524D\u672A\u52A0\u8F7D\uFF0C\u6682\u65F6\u65E0\u6CD5\u914D\u7F6E\u3002",githubLabel:"GitHub \u4ED3\u5E93",npmLabel:"npm \u5305\u9875\u9762"},Y={title:"Configuration",fuyaoLabel:"Fuyao API Key",fuyaoHint:"Tonghuashun Fuyao structured-data API. Takes effect in new Capital mode sessions.",anysearchLabel:"AnySearch API Key",anysearchHint:"AnySearch web search / extract interface. Takes effect in new Capital mode sessions.",localFetchLabel:"Allow local web page extraction",localFetchHint:"When on, a failed fetch falls back to local direct fetching (receipt via: local-http). Takes effect in new Capital mode sessions.",windLabel:"Wind Alice API Key",windHint:"Wind financial disclosure document retrieval interface. Takes effect in new Capital mode sessions.",paddleocrLabel:"PaddleOCR document token",paddleocrHint:"Configure the token to parse PDFs and images automatically. Takes effect in new Capital mode sessions.",openDocs:"Official docs",configured:"A key is configured.",notConfigured:"No key is configured.",save:"Save",saving:"Saving\u2026",readOnly:"This deployment stores settings read-only.",saveFailed:"The deployment did not accept these values; they were left for you to correct.",unavailable:"This plugin is not loaded, so it cannot be configured right now.",githubLabel:"GitHub repository",npmLabel:"npm package page"};function h(a,e){return typeof a=="string"&&a.length>0?a:e}function M(a,e){return e==="fuyao"?h(a.value?.fuyaoCredentialRef,r.fuyao):e==="wind"?h(a.value?.retriever?.windDocs?.credentialRef,r.wind):e==="paddleocr"?h(a.value?.retriever?.paddleOcr?.credentialRef,r.paddleocr):h(a.value?.retriever?.credentialRef,r.anysearch)}function $(){if(typeof document>"u"||document.querySelector("style[data-capital-config]"))return()=>{};let a=document.createElement("style");return a.dataset.capitalConfig="true",a.textContent=`
|
|
8
|
+
"use strict";var k=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var B=(i,e,a)=>()=>{if(a)throw a[0];try{return i&&(e=i(i=0)),e}catch(s){throw a=[s],s}};var W=(i,e)=>{for(var a in e)k(i,a,{get:e[a],enumerable:!0})},K=(i,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of P(e))!j.call(i,n)&&n!==a&&k(i,n,{get:()=>e[n],enumerable:!(s=I(e,n))||s.enumerable});return i};var U=i=>K(k({},"__esModule",{value:!0}),i);var E={};W(E,{SELECTED_SKILL_CATALOG:()=>M,SELECTED_SKILL_TAGS:()=>q,SELECTED_SKILL_TAG_LABELS:()=>$});var q,M,$,N=B(()=>{"use strict";q=Object.freeze(["a-share","business-analysis","cash-flow","competition","financial-health","monitoring","orders","perspective","risk","strategy","valuation"]),M=Object.freeze([{key:"buffettFramework",name:"buffett-investment-framework",label:{zh:"Buffett Investment Framework",en:"Buffett Investment Framework"},description:{zh:"\u4EE5\u8BC1\u636E\u4E3A\u57FA\u7840\u7684\u5546\u4E1A\u8D28\u91CF\u3001\u8D44\u672C\u914D\u7F6E\u3001\u4F30\u503C\u548C\u98CE\u9669\u5206\u6790\u6846\u67B6\u3002\u4E3B\u8981\u6E90\u4E8E\u7F8E\u80A1\u8BED\u5883\u3002",en:"Evidence-led business quality, capital allocation, valuation, and risk analysis. Primarily US-market oriented."},owner:"finterm-ai",repository:"investment-skills",status:"experimental",lastCommit:"2026-07-22",reviewBy:"2026-11-06",tags:["business-analysis","cash-flow","perspective","risk","valuation"],riskNote:{zh:"\u5B9E\u9A8C\u6027\u8D28\uFF1B\u4E0D\u80FD\u76F4\u63A5\u5F53\u4F5C A \u80A1\u89C4\u5219\u6216\u6295\u8D44\u5EFA\u8BAE\u3002",en:"Experimental; do not treat it as A-share rules or investment advice."}},{key:"financialHealth",name:"financial-health",label:{zh:"\u8D22\u52A1\u5065\u5EB7",en:"Financial Health"},description:{zh:"\u68C0\u67E5\u76C8\u5229\u8D28\u91CF\u3001\u73B0\u91D1\u8F6C\u6362\u3001\u8425\u8FD0\u8D44\u672C\u3001\u6760\u6746\u548C\u8D44\u4EA7\u8D1F\u503A\u8868\u98CE\u9669\u3002",en:"Checks earnings quality, cash conversion, working capital, leverage, and balance-sheet risk."},owner:"spikeHongg",repository:"china-stock-research-skills",status:"watchlist",lastCommit:"2026-03-09",reviewBy:"2026-11-06",tags:["a-share","cash-flow","financial-health","risk"],riskNote:{zh:"\u51B7\u542F\u52A8\u5B9E\u9A8C\uFF1B\u4E0A\u6E38\u7EF4\u62A4\u8F83\u4E45\u672A\u66F4\u65B0\uFF0C\u542F\u7528\u524D\u8BF7\u81EA\u884C\u590D\u6838\u5185\u5BB9\u548C\u6765\u6E90\u3002",en:"Cold-start experiment; upstream has been quiet, so review content and sources before use."}},{key:"riskWarningCatalysts",name:"risk-warning-catalysts",label:{zh:"\u98CE\u9669\u4E0E\u50AC\u5316\u5242\u76D1\u63A7",en:"Risk Warning Catalysts"},description:{zh:"\u628A\u7814\u7A76\u7ED3\u8BBA\u8F6C\u6210\u5E26\u6765\u6E90\u3001\u9608\u503C\u548C\u590D\u67E5\u9891\u7387\u7684\u98CE\u9669\u4E0E\u50AC\u5316\u5242\u76D1\u63A7\u9879\u3002",en:"Turns research into source-backed risk and catalyst monitoring with thresholds and review cadence."},owner:"spikeHongg",repository:"china-stock-research-skills",status:"watchlist",lastCommit:"2026-03-09",reviewBy:"2026-11-06",tags:["a-share","monitoring","risk"],riskNote:{zh:"\u51B7\u542F\u52A8\u5B9E\u9A8C\uFF1B\u4E0D\u8D1F\u8D23\u4F30\u503C\u6216\u4EA4\u6613\u51B3\u7B56\u3002",en:"Cold-start experiment; it does not make valuation or trading decisions."}},{key:"valuationInvestmentStrategy",name:"valuation-investment-strategy",label:{zh:"\u4F30\u503C\u4E0E\u60C5\u666F\u5206\u6790",en:"Valuation Investment Strategy"},description:{zh:"\u5728\u4E8B\u5B9E\u57FA\u7840\u5B8C\u6210\u540E\u6784\u5EFA\u5E26\u5047\u8BBE\u3001\u60C5\u666F\u548C\u5931\u6548\u6761\u4EF6\u7684\u4F30\u503C\u6846\u67B6\u3002",en:"Builds valuation scenarios with assumptions and invalidation conditions after the factual base is ready."},owner:"spikeHongg",repository:"china-stock-research-skills",status:"watchlist",lastCommit:"2026-03-09",reviewBy:"2026-11-06",tags:["a-share","risk","valuation"],riskNote:{zh:"\u51B7\u542F\u52A8\u5B9E\u9A8C\uFF1B\u8F93\u51FA\u4E0D\u7B49\u4E8E\u4E70\u5356\u6216\u4ED3\u4F4D\u5EFA\u8BAE\u3002",en:"Cold-start experiment; output is not a buy, sell, or position-size recommendation."}},{key:"strategyBusinessTransition",name:"strategy-business-transition",label:{zh:"\u6218\u7565\u4E0E\u4E1A\u52A1\u8F6C\u578B",en:"Strategy Business Transition"},description:{zh:"\u68C0\u9A8C\u516C\u53F8\u6218\u7565\u53D9\u4E8B\u3001\u4E1A\u52A1\u8FC1\u79FB\u3001\u8D44\u672C\u914D\u7F6E\u548C\u8F6C\u578B\u91CC\u7A0B\u7891\u3002",en:"Tests strategy narratives, business migration, capital allocation, and transition milestones."},owner:"spikeHongg",repository:"china-stock-research-skills",status:"watchlist",lastCommit:"2026-03-09",reviewBy:"2026-11-06",tags:["a-share","strategy","risk"],riskNote:{zh:"\u51B7\u542F\u52A8\u5B9E\u9A8C\uFF1B\u4E0D\u8D1F\u8D23\u4F30\u503C\u6216\u4EA4\u6613\u8BA1\u5212\u3002",en:"Cold-start experiment; it does not make valuation or trading plans."}},{key:"industryCompetitionMoat",name:"industry-competition-moat",label:{zh:"\u884C\u4E1A\u7ADE\u4E89\u4E0E\u62A4\u57CE\u6CB3",en:"Industry Competition Moat"},description:{zh:"\u5206\u6790\u884C\u4E1A\u7ED3\u6784\u3001\u7ADE\u4E89\u683C\u5C40\u3001\u4F9B\u9700\u548C\u516C\u53F8\u5DEE\u5F02\u5316\u662F\u5426\u53EF\u6301\u7EED\u3002",en:"Analyzes industry structure, competition, supply-demand, and sustainable differentiation."},owner:"spikeHongg",repository:"china-stock-research-skills",status:"watchlist",lastCommit:"2026-03-09",reviewBy:"2026-11-06",tags:["a-share","business-analysis","competition","risk"],riskNote:{zh:"\u51B7\u542F\u52A8\u5B9E\u9A8C\uFF1B\u884C\u4E1A\u5224\u65AD\u4ECD\u9700\u56DE\u5230\u516C\u5F00\u8BC1\u636E\u3002",en:"Cold-start experiment; industry conclusions still require public evidence."}},{key:"businessDecompositionOrderQuality",name:"business-decomposition-order-quality",label:{zh:"\u4E1A\u52A1\u62C6\u89E3\u4E0E\u8BA2\u5355\u8D28\u91CF",en:"Business Decomposition Order Quality"},description:{zh:"\u62C6\u89E3\u4EA7\u54C1\u3001\u5BA2\u6237\u3001\u9879\u76EE\u548C\u8BA2\u5355\uFF0C\u68C0\u67E5\u589E\u957F\u80FD\u5426\u8F6C\u5316\u4E3A\u6536\u5165\u548C\u73B0\u91D1\u3002",en:"Breaks down products, customers, projects, and orders to test conversion into revenue and cash."},owner:"spikeHongg",repository:"china-stock-research-skills",status:"watchlist",lastCommit:"2026-03-09",reviewBy:"2026-11-06",tags:["a-share","business-analysis","cash-flow","orders","risk"],riskNote:{zh:"\u51B7\u542F\u52A8\u5B9E\u9A8C\uFF1B\u4E0D\u8D1F\u8D23\u6700\u7EC8\u4F30\u503C\u6216\u4E70\u5356\u5EFA\u8BAE\u3002",en:"Cold-start experiment; it does not make final valuation or trading recommendations."}}]),$=Object.freeze({zh:{all:"\u5168\u90E8","a-share":"A \u80A1","business-analysis":"\u4E1A\u52A1\u5206\u6790","cash-flow":"\u73B0\u91D1\u6D41",competition:"\u7ADE\u4E89\u683C\u5C40","financial-health":"\u8D22\u52A1\u5065\u5EB7",monitoring:"\u76D1\u63A7",orders:"\u8BA2\u5355",perspective:"\u5206\u6790\u89C6\u89D2",risk:"\u98CE\u9669",strategy:"\u6218\u7565",valuation:"\u4F30\u503C"},en:{all:"All","a-share":"A-share","business-analysis":"Business analysis","cash-flow":"Cash flow",competition:"Competition","financial-health":"Financial health",monitoring:"Monitoring",orders:"Orders",perspective:"Perspective",risk:"Risk",strategy:"Strategy",valuation:"Valuation"}})});var{createElement:t,useEffect:G,useRef:Y,useState:F}=require("react"),{createPortal:V}=require("react-dom"),{SettingsForm:Q,SettingsSecretField:J,SettingsFormModel:X,Switch:T,IconRightUpOutlineRegular:D}=require("@deepseek-ai/dsh-client-ui-primitives"),{SELECTED_SKILL_CATALOG:x,SELECTED_SKILL_TAG_LABELS:R}=(N(),U(E)),v="capital-config",L="@v587d/capital-generation",S="settings.capital",A="plugins.detail.badge",Z="https://github.com/v587d/capital-generation",ee=`https://www.npmjs.com/package/${L}`,ie="FUYAO_API_KEY",ae="ANYSEARCH_API_KEY",te="WIND_API_KEY",se="PADDLE_OCR_TOKEN",y={fuyao:"https://fuyao.aicubes.cn/docs/",anysearch:"https://www.anysearch.com/docs/auth",wind:"https://market.windalice.com/",paddleocr:"https://aistudio.baidu.com/paddleocr"},p=["fuyao","anysearch","wind","paddleocr"],z=x.map(({key:i})=>i),g={fuyao:ie,anysearch:ae,wind:te,paddleocr:se},le=()=>Object.fromEntries(p.map(i=>[i,{ref:g[i],configured:!1,writable:!0}])),ne={title:"\u6570\u636E\u6E90",fuyaoLabel:"Fuyao API Key",fuyaoHint:"\u540C\u82B1\u987A Fuyao \u7ED3\u6784\u5316\u6570\u636E\u63A5\u53E3\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",anysearchLabel:"AnySearch API Key",anysearchHint:"AnySearch \u7F51\u9875\u641C\u7D22 / \u63D0\u53D6\u63A5\u53E3\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",localFetchLabel:"\u5141\u8BB8\u542F\u52A8\u672C\u5730\u63D0\u53D6\u7F51\u9875\u5185\u5BB9",localFetchHint:"\u5F00\u542F\u540E\u672C\u5730\u6293\u53D6\u515C\u5E95\uFF08\u56DE\u6267\u6765\u6E90 local-http\uFF09\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",windLabel:"Wind Alice API Key",windHint:"Wind \u91D1\u878D\u4FE1\u62AB\u7C7B\u6587\u6863\u68C0\u7D22\u63A5\u53E3\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",paddleocrLabel:"PaddleOCR \u6587\u6863\u89E3\u6790 Token",paddleocrHint:"\u914D\u7F6E Token \u540E\u81EA\u52A8\u89E3\u6790 PDF\u3001\u56FE\u7247\u3002\u4FDD\u5B58\u540E\u65B0 Capital \u6A21\u5F0F\u4F1A\u8BDD\u751F\u6548\u3002",selectedSkillsTitle:"\u7CBE\u9009 Skills",selectedSkillsFilterLabel:"\u6309\u80FD\u529B\u7B5B\u9009",selectedSkillsEmpty:"\u6CA1\u6709\u5339\u914D\u8FD9\u4E2A\u6807\u7B7E\u7684 Skill\u3002",selectedSkillsCopyName:"\u590D\u5236\u6280\u80FD",selectedSkillsCopyAction:"\u590D\u5236\u6280\u80FD",selectedSkillsCopied:"\u5DF2\u590D\u5236",selectedSkillsOpenRepo:"\u6253\u5F00\u4E0A\u6E38\u4ED3\u5E93",openDocs:"\u5B98\u65B9\u6587\u6863",configured:"\u5DF2\u914D\u7F6E\u5BC6\u94A5\u3002",notConfigured:"\u672A\u914D\u7F6E\u5BC6\u94A5\u3002",save:"\u4FDD\u5B58",saving:"\u4FDD\u5B58\u4E2D\u2026",readOnly:"\u672C\u90E8\u7F72\u7684\u8BBE\u7F6E\u4E3A\u53EA\u8BFB\u3002",saveFailed:"\u672C\u90E8\u7F72\u6CA1\u6709\u63A5\u53D7\u8FD9\u4E9B\u503C\uFF0C\u5DF2\u4FDD\u7559\u4F9B\u4F60\u4FEE\u6539\u3002",unavailable:"\u8BE5\u63D2\u4EF6\u5F53\u524D\u672A\u52A0\u8F7D\uFF0C\u6682\u65F6\u65E0\u6CD5\u914D\u7F6E\u3002",githubLabel:"GitHub \u4ED3\u5E93",npmLabel:"npm \u5305\u9875\u9762"},oe={title:"Data Sources",fuyaoLabel:"Fuyao API Key",fuyaoHint:"Tonghuashun Fuyao structured-data API. Takes effect in new Capital mode sessions.",anysearchLabel:"AnySearch API Key",anysearchHint:"AnySearch web search / extract interface. Takes effect in new Capital mode sessions.",localFetchLabel:"Allow local web page extraction",localFetchHint:"When on, a failed fetch falls back to local direct fetching (receipt via: local-http). Takes effect in new Capital mode sessions.",windLabel:"Wind Alice API Key",windHint:"Wind financial disclosure document retrieval interface. Takes effect in new Capital mode sessions.",paddleocrLabel:"PaddleOCR document token",paddleocrHint:"Configure the token to parse PDFs and images automatically. Takes effect in new Capital mode sessions.",selectedSkillsTitle:"Selected Skills",selectedSkillsFilterLabel:"Filter by capability",selectedSkillsEmpty:"No skills match this tag.",selectedSkillsCopyName:"Copy skill",selectedSkillsCopyAction:"Copy skill",selectedSkillsCopied:"Copied",selectedSkillsOpenRepo:"Open upstream repository",openDocs:"Official docs",configured:"A key is configured.",notConfigured:"No key is configured.",save:"Save",saving:"Saving\u2026",readOnly:"This deployment stores settings read-only.",saveFailed:"The deployment did not accept these values; they were left for you to correct.",unavailable:"This plugin is not loaded, so it cannot be configured right now.",githubLabel:"GitHub repository",npmLabel:"npm package page"};function b(i,e){return typeof i=="string"&&i.length>0?i:e}function re(i,e){return e==="fuyao"?b(i.value?.fuyaoCredentialRef,g.fuyao):e==="wind"?b(i.value?.retriever?.windDocs?.credentialRef,g.wind):e==="paddleocr"?b(i.value?.retriever?.paddleOcr?.credentialRef,g.paddleocr):b(i.value?.retriever?.credentialRef,g.anysearch)}function ce(){if(typeof document>"u"||document.querySelector("style[data-capital-config]"))return()=>{};let i=document.createElement("style");return i.dataset.capitalConfig="true",i.textContent=`
|
|
9
9
|
.capital-config-card { display: flex; flex-direction: column; gap: 12px; }
|
|
10
10
|
.capital-config-title { margin: 0; font-size: 14px; font-weight: 500; line-height: 20px; }
|
|
11
11
|
.capital-config-secret-row { display: flex; flex-direction: column; gap: 2px; }
|
|
@@ -14,6 +14,22 @@ window.__ModuleLoader__.load({
|
|
|
14
14
|
.capital-config-secret-row label { flex: 0 1 auto; }
|
|
15
15
|
.capital-config-secret-row label ~ span { order: 1; margin-left: auto; }
|
|
16
16
|
.capital-config-field { display: flex; flex-direction: column; gap: 6px; padding: 12px 0; border-top: 0.5px solid var(--dsw-alias-border-l2); }
|
|
17
|
+
.capital-config-selected-skills { display: flex; flex-direction: column; gap: 8px; padding-top: 12px; border-top: 0.5px solid var(--dsw-alias-border-l2); }
|
|
18
|
+
.capital-config-selected-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
|
|
19
|
+
.capital-config-selected-filter-label { flex: 0 0 100%; color: var(--dsw-alias-label-tertiary); font-size: 12px; line-height: 18px; }
|
|
20
|
+
.capital-config-selected-filter-button { min-height: 26px; padding: 3px 8px; border: 0.5px solid var(--dsw-alias-border-l1); border-radius: 6px; background: transparent; color: var(--dsw-alias-label-secondary); font: inherit; font-size: 12px; line-height: 18px; cursor: pointer; }
|
|
21
|
+
.capital-config-selected-filter-button:hover { background: var(--dsw-alias-interactive-bg-hover); color: var(--dsw-alias-label-primary); }
|
|
22
|
+
.capital-config-selected-filter-button[aria-pressed="true"] { border-color: var(--dsw-alias-brand-primary); background: color-mix(in srgb, var(--dsw-alias-brand-primary) 12%, transparent); color: var(--dsw-alias-label-primary); }
|
|
23
|
+
.capital-config-skill-tags { display: flex; flex-wrap: wrap; gap: 4px; }
|
|
24
|
+
.capital-config-skill-tag { padding: 1px 5px; border-radius: 4px; background: var(--dsw-alias-interactive-bg-hover); color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 16px; }
|
|
25
|
+
.capital-config-skill-heading { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
|
26
|
+
.capital-config-skill-slug { min-width: 0; overflow-wrap: anywhere; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 16px; }
|
|
27
|
+
.capital-config-skill-copy { flex: none; padding: 2px 6px; border: 0; border-radius: 4px; background: transparent; color: var(--dsw-alias-label-tertiary); font: inherit; font-size: 11px; line-height: 16px; cursor: pointer; }
|
|
28
|
+
.capital-config-skill-copy:hover { background: var(--dsw-alias-interactive-bg-hover); color: var(--dsw-alias-label-primary); }
|
|
29
|
+
.capital-config-skill-copy:focus-visible { outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color, var(--dsw-alias-brand-primary)); outline-offset: 1px; }
|
|
30
|
+
.capital-config-skill-repo { display: inline-flex; align-items: center; gap: 3px; color: var(--dsw-alias-label-tertiary); font-size: 11px; line-height: 16px; text-decoration: none; }
|
|
31
|
+
.capital-config-skill-repo:hover { color: var(--dsw-alias-brand-primary); text-decoration: underline; }
|
|
32
|
+
.capital-config-skill-description { margin: 0; color: var(--dsw-alias-label-secondary); font-size: 12px; line-height: 18px; }
|
|
17
33
|
.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; }
|
|
18
34
|
.capital-config-doc-link:hover { color: var(--dsw-alias-brand-primary); text-decoration: underline; }
|
|
19
35
|
.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; }
|
|
@@ -28,7 +44,7 @@ window.__ModuleLoader__.load({
|
|
|
28
44
|
.capital-config-plugin-link { border-radius: var(--dsw-radius-sm); width: 24px; height: 24px; color: var(--dsw-alias-label-tertiary); justify-content: center; align-items: center; display: inline-flex; text-decoration: none; }
|
|
29
45
|
.capital-config-plugin-link:hover { background: var(--dsw-alias-interactive-bg-hover); color: var(--dsw-alias-label-primary); }
|
|
30
46
|
.capital-config-plugin-link:focus-visible { outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color, var(--dsw-alias-brand-primary)); outline-offset: 1px; }
|
|
31
|
-
`,document.head.appendChild(
|
|
47
|
+
`,document.head.appendChild(i),()=>i.remove()}var C=class{constructor(e,a){this.scope=e,this.ctx=a,this.status=le(),this.localFetchWriting=!1,this.localFetchFailed=!1,this.selectedSkillWriting=new Set,this.selectedSkillFailed=new Set,this.model=new X(e,[],p.map(s=>({field:s,write:n=>this.writeKey(s,n)}))),this.store=this.model.bind(()=>this.projection()),this.unsubscribe=e.subscribe(()=>{this.refreshRefs(),this.store.set(this.projection()),this.readCredentials()}),this.refreshRefs(),this.readCredentials()}dispose(){this.unsubscribe?.(),this.model.dispose()}projection(){let e=this.scope.getSnapshot();return{...this.model.shell(),...Object.fromEntries(p.map(a=>[a,{...this.model.field(a),configured:this.status[a].configured,writable:this.status[a].writable}])),localFetch:{on:e.value?.retriever?.localFetch?.enabled!==!1,writing:this.localFetchWriting,failed:this.localFetchFailed},selectedSkills:Object.fromEntries(z.map(a=>[a,{on:e.value?.selectedSkills?.[a]===!0,writing:this.selectedSkillWriting.has(a),failed:this.selectedSkillFailed.has(a)}]))}}refreshRefs(){let e=this.scope.getSnapshot();for(let a of p){let s=re(e,a);this.status[a].ref!==s&&(this.status[a]={ref:s,configured:!1,writable:!0},this.model.edit(a,""))}}async readCredentials(){let e=p.map(a=>this.status[a].ref);try{let a=await this.ctx.remote.credentials.describe(e);if(!a?.ok||p.some((n,o)=>e[o]!==this.status[n].ref))return;let s=a.value??{};for(let n of p){let o=this.status[n],c=s[o.ref];c!==void 0&&(this.status[n]={ref:o.ref,configured:c.configured===!0,writable:c.writable!==!1})}this.store.set(this.projection())}catch{}}refresh(e){p.some(a=>e===this.status[a].ref)&&this.readCredentials()}async writeKey(e,a){try{return await this.ctx.remote.credentials.set(this.status[e].ref,a.trim()),await this.readCredentials(),this.status[e].configured===!0}catch{return!1}}async toggleLocalFetch(e){if(this.localFetchWriting)return;let a=this.scope.getSnapshot();if(a.status!=="ready"||!a.writable)return;this.localFetchWriting=!0,this.localFetchFailed=!1,this.store.set(this.projection());try{await this.scope.mutate([{op:"set",path:["retriever","localFetch","enabled"],value:e}])}catch{}this.localFetchWriting=!1,this.scope.getSnapshot().value?.retriever?.localFetch?.enabled===e||(this.localFetchFailed=!0),this.store.set(this.projection())}async toggleSelectedSkill(e,a){if(!z.includes(e)||this.selectedSkillWriting.has(e))return;let s=this.scope.getSnapshot();if(s.status!=="ready"||!s.writable)return;this.selectedSkillWriting.add(e),this.selectedSkillFailed.delete(e),this.store.set(this.projection());try{await this.scope.mutate([{op:"set",path:["selectedSkills",e],value:a}])}catch{}this.selectedSkillWriting.delete(e),this.scope.getSnapshot().value?.selectedSkills?.[e]===a||this.selectedSkillFailed.add(e),this.store.set(this.projection())}inject(){return{hooks:{capitalCard:this.store},...this.model.actions(),toggleLocalFetch:e=>this.toggleLocalFetch(e),toggleSelectedSkill:(e,a)=>this.toggleSelectedSkill(e,a)}}};function w({field:i,label:e,hint:a,docsUrl:s,state:n,disabled:o,onEdit:c,t:d}){let f=Y(null),[h,u]=F(null);G(()=>{let m=f.current,l=m?m.querySelector("label"):null;l&&l.parentElement&&u(l.parentElement)},[]);let r=t("a",{href:s,target:"_blank",rel:"noopener noreferrer","aria-label":`${e} ${d("openDocs")}`,"data-capital-config-doc":"true",className:"capital-config-doc-link"},d("openDocs"),t(D,{size:12}));return t("div",{className:"capital-config-secret-row",key:i,ref:f},t(J,{id:`capital-config-${i}-key`,label:e,hint:a,text:n.text,configured:n.configured,stateLabel:n.configured?d("configured"):d("notConfigured"),disabled:o,onEdit:c}),h?V(r,h):r)}function O(){let i=typeof document<"u"?document.documentElement?.lang:"";return typeof i=="string"&&i.toLowerCase().startsWith("en")?"en":"zh"}function de({entry:i,state:e,disabled:a,onChange:s,t:n}){let o=O(),c=i.label[o],d=`https://github.com/${i.owner}/${i.repository}`,[f,h]=F(!1),u=async()=>{let r=globalThis.navigator?.clipboard;if(typeof r?.writeText=="function")try{await r.writeText(i.name),h(!0)}catch{}};return t("div",{className:"capital-config-field"},t("div",{className:"capital-config-switch-row"},t("div",{className:"capital-config-switch-text"},t("div",{className:"capital-config-skill-heading"},t("span",{className:"capital-config-title"},c),t("code",{className:"capital-config-skill-slug"},i.name),e?.on===!0?t("button",{type:"button",className:"capital-config-skill-copy",title:n("selectedSkillsCopyName"),"aria-label":n("selectedSkillsCopyName"),onClick:u},n(f?"selectedSkillsCopied":"selectedSkillsCopyAction")):null),t("p",{className:"capital-config-skill-description"},i.description[o]),t("a",{className:"capital-config-skill-repo",href:d,target:"_blank",rel:"noopener noreferrer",title:n("selectedSkillsOpenRepo")},`${i.owner}/${i.repository}`,t(D,{size:12})),t("div",{className:"capital-config-skill-tags"},i.tags.map(r=>t("span",{key:r,className:"capital-config-skill-tag"},R[o][r]??r)))),t(T,{label:c,checked:e?.on===!0,disabled:a||e?.writing===!0,onChange:s})),e?.failed?t("p",{role:"status",className:"capital-config-write-failed"},n("saveFailed")):null)}function pe(i){let e=i.t,a=i.useCapitalCard(l=>l),s=!a.writable,n=O(),[o,c]=F("all"),d=R[n],f=["all",...Array.from(new Set(x.flatMap(l=>l.tags)))],h=x.filter(l=>o==="all"||l.tags.includes(o)),u=t("section",{className:"capital-config-selected-skills"},t("h5",{className:"capital-config-title"},e("selectedSkillsTitle")),t("div",{className:"capital-config-selected-filter",role:"group","aria-label":e("selectedSkillsFilterLabel")},t("span",{className:"capital-config-selected-filter-label"},e("selectedSkillsFilterLabel")),...f.map(l=>t("button",{key:l,type:"button",className:"capital-config-selected-filter-button","aria-pressed":o===l?"true":"false",onClick:()=>c(l)},d[l]??l))),h.length>0?h.map(l=>t(de,{key:l.key,entry:l,state:a.selectedSkills?.[l.key],disabled:s||a.saving,onChange:H=>i.toggleSelectedSkill(l.key,H),t:e})):t("p",{className:"capital-config-hint"},e("selectedSkillsEmpty"))),r=t(Q,{labels:{unavailable:e("unavailable"),readOnly:e("readOnly"),saveFailed:e("saveFailed"),save:e("save"),saving:e("saving")},state:a,onSave:i.save,onDiscard:i.discard},t(w,{field:"fuyao",label:e("fuyaoLabel"),hint:e("fuyaoHint"),docsUrl:y.fuyao,state:a.fuyao,disabled:s||a.saving||!a.fuyao.writable,onEdit:l=>i.edit("fuyao",l),t:e}),t(w,{field:"anysearch",label:e("anysearchLabel"),hint:e("anysearchHint"),docsUrl:y.anysearch,state:a.anysearch,disabled:s||a.saving||!a.anysearch.writable,onEdit:l=>i.edit("anysearch",l),t:e}),t(w,{field:"wind",label:e("windLabel"),hint:e("windHint"),docsUrl:y.wind,state:a.wind,disabled:s||a.saving||!a.wind.writable,onEdit:l=>i.edit("wind",l),t:e}),t(w,{field:"paddleocr",label:e("paddleocrLabel"),hint:e("paddleocrHint"),docsUrl:y.paddleocr,state:a.paddleocr,disabled:s||a.saving||!a.paddleocr.writable,onEdit:l=>i.edit("paddleocr",l),t:e})),m=t("div",{className:"capital-config-field"},t("div",{className:"capital-config-switch-row"},t("div",{className:"capital-config-switch-text"},t("span",{className:"capital-config-switch-label"},e("localFetchLabel")),t("p",{className:"capital-config-hint"},e("localFetchHint"))),t(T,{label:e("localFetchLabel"),checked:a.localFetch?.on!==!1,disabled:s||a.saving||a.localFetch?.writing===!0,onChange:i.toggleLocalFetch})),a.localFetch?.failed?t("p",{role:"status",className:"capital-config-write-failed"},e("saveFailed")):null);return t("div",{className:"capital-config-card"},t("h4",{className:"capital-config-title"},e("title")),r,a.available?m:null,a.available?u:null)}var he={github:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",npm:"M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z"};function _({kind:i,href:e,label:a}){return t("a",{className:"capital-config-plugin-link",href:e,target:"_blank",rel:"noopener noreferrer","aria-label":a,title:a,"data-capital-plugin-link":i},t("svg",{viewBox:"0 0 24 24",width:16,height:16,fill:"currentColor","aria-hidden":"true",focusable:"false"},t("path",{d:he[i]})))}function fe({subject:i,t:e}){return i?.kind!=="bundle"||i.pkg?.name!==L?null:t("span",{className:"capital-config-plugin-links"},t(_,{kind:"github",href:Z,label:e("githubLabel")}),t(_,{kind:"npm",href:ee,label:e("npmLabel")}))}function ue(i){i.effect(ce,"capital-config: styles"),i.effect(()=>i.locale.register(S,{zh:ne,en:oe}),"capital-config: dictionaries");let e=new C(i.configForms.get(v),i);i.effect(()=>()=>e.dispose(),"capital-config: form subscription"),i.effect(()=>i.remote.$on("credentials/reference-updated",a=>e.refresh(a)),"capital-config: credential invalidations"),i.effect(()=>i.configForms.whileServed([v],()=>i.slots.inject("plugins.bundle.config",()=>i.slots.register({name:"plugins.bundle.config",key:L,locale:S,inject:()=>e.inject()},pe))),"capital-config: page"),i.effect(()=>i.slots.inject(A,()=>i.slots.register({name:A,id:`${v}-plugin-links`,locale:S},fe)),"capital-config: plugin links"),i.logger?.info?.("capital-config: settings card + \u6807\u9898\u5916\u94FE mounted")}exports.name="capital-config";exports.inject=["slots","locale","remote","remote.credentials","configForms"];exports.apply=ue;
|
|
32
48
|
return module.exports
|
|
33
49
|
},
|
|
34
50
|
})
|