dsh-industry-research 0.1.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 +19 -0
- package/LICENSE +201 -0
- package/README.es.md +175 -0
- package/README.hi.md +175 -0
- package/README.md +175 -0
- package/README.pt.md +175 -0
- package/README.zh.md +175 -0
- package/THIRD_PARTY_NOTICES.md +21 -0
- package/cordis.patch.yml +44 -0
- package/lib/index.js +2080 -0
- package/lib/types/chain.d.ts +68 -0
- package/lib/types/chain.d.ts.map +1 -0
- package/lib/types/chain.js +88 -0
- package/lib/types/chain.js.map +1 -0
- package/lib/types/company.d.ts +121 -0
- package/lib/types/company.d.ts.map +1 -0
- package/lib/types/company.js +170 -0
- package/lib/types/company.js.map +1 -0
- package/lib/types/config.d.ts +72 -0
- package/lib/types/config.d.ts.map +1 -0
- package/lib/types/config.js +86 -0
- package/lib/types/config.js.map +1 -0
- package/lib/types/engine-bridge.d.ts +68 -0
- package/lib/types/engine-bridge.d.ts.map +1 -0
- package/lib/types/engine-bridge.js +18 -0
- package/lib/types/engine-bridge.js.map +1 -0
- package/lib/types/events.d.ts +79 -0
- package/lib/types/events.d.ts.map +1 -0
- package/lib/types/events.js +13 -0
- package/lib/types/events.js.map +1 -0
- package/lib/types/index.d.ts +58 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +111 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/paths.d.ts +45 -0
- package/lib/types/paths.d.ts.map +1 -0
- package/lib/types/paths.js +93 -0
- package/lib/types/paths.js.map +1 -0
- package/lib/types/report.d.ts +134 -0
- package/lib/types/report.d.ts.map +1 -0
- package/lib/types/report.js +278 -0
- package/lib/types/report.js.map +1 -0
- package/lib/types/sources.d.ts +55 -0
- package/lib/types/sources.d.ts.map +1 -0
- package/lib/types/sources.js +73 -0
- package/lib/types/sources.js.map +1 -0
- package/lib/types/timeline.d.ts +78 -0
- package/lib/types/timeline.d.ts.map +1 -0
- package/lib/types/timeline.js +129 -0
- package/lib/types/timeline.js.map +1 -0
- package/lib/types/toolkit.d.ts +61 -0
- package/lib/types/toolkit.d.ts.map +1 -0
- package/lib/types/toolkit.js +77 -0
- package/lib/types/toolkit.js.map +1 -0
- package/lib/types/tools/company.d.ts +36 -0
- package/lib/types/tools/company.d.ts.map +1 -0
- package/lib/types/tools/company.js +139 -0
- package/lib/types/tools/company.js.map +1 -0
- package/lib/types/tools/map.d.ts +44 -0
- package/lib/types/tools/map.d.ts.map +1 -0
- package/lib/types/tools/map.js +211 -0
- package/lib/types/tools/map.js.map +1 -0
- package/lib/types/tools/report.d.ts +61 -0
- package/lib/types/tools/report.d.ts.map +1 -0
- package/lib/types/tools/report.js +277 -0
- package/lib/types/tools/report.js.map +1 -0
- package/lib/types/tools/track.d.ts +46 -0
- package/lib/types/tools/track.d.ts.map +1 -0
- package/lib/types/tools/track.js +188 -0
- package/lib/types/tools/track.js.map +1 -0
- package/lib/types/version.d.ts +8 -0
- package/lib/types/version.d.ts.map +1 -0
- package/lib/types/version.js +8 -0
- package/lib/types/version.js.map +1 -0
- package/lib/types/web.d.ts +74 -0
- package/lib/types/web.d.ts.map +1 -0
- package/lib/types/web.js +60 -0
- package/lib/types/web.js.map +1 -0
- package/package.json +143 -0
- package/skills/company-research-method/SKILL.md +50 -0
- package/skills/industry-research-method/SKILL.md +57 -0
- package/skills/industry-research-method/references/frameworks.md +42 -0
- package/src/chain.ts +132 -0
- package/src/company.ts +238 -0
- package/src/config.ts +154 -0
- package/src/engine-bridge.ts +62 -0
- package/src/events.ts +82 -0
- package/src/index.ts +139 -0
- package/src/paths.ts +96 -0
- package/src/report.ts +326 -0
- package/src/sources.ts +95 -0
- package/src/timeline.ts +155 -0
- package/src/toolkit.ts +87 -0
- package/src/tools/company.ts +157 -0
- package/src/tools/map.ts +241 -0
- package/src/tools/report.ts +304 -0
- package/src/tools/track.ts +223 -0
- package/src/version.ts +8 -0
- package/src/web.ts +94 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] - 2026-08-19
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Industry/company research domain pack: four workspace-bound tools and two methodology skills.
|
|
13
|
+
- `industry_map` — validate and persist an industry chain map (`chain.json`): upstream/midstream/downstream nodes, edges, and metric slots where every value requires a `sourceRef` (unsourced values are rejected; value-less slots are explicit gaps). Seed notes/files and an optional `ctx.web` digest are registered as citable sources (`sources.json`).
|
|
14
|
+
- `industry_track` — public-source policy/news tracking over the official `ctx.web` seam (never a hand-rolled fetch): per-topic search, host allow/block lists, `since` filtering, bounded snapshot fetches with SHA-256 provenance hashes, and append + dedupe into `timeline.jsonl` with a retention cap. Fails loud when `ctx.web` is unmounted or `offline: true`.
|
|
15
|
+
- `company_scan` — company cards (`card.json` + `card.md`) from user-supplied workspace data files (hashed, with Markdown outlines and figure-candidate lines so every number cites a file and a line) plus an optional `ctx.web` citation complement. Text formats only in v1 (no PDF).
|
|
16
|
+
- `industry_report` — report assembly with two paths: the frozen-contract `ctx.researchReport` engine (`assemble` → sealed directory + per-claim verdicts) when mounted, or an honest builtin fallback (`reports/<YYYYMMDD-HHmmss>/report.md` + `manifest.json` with a SHA-256 source-traceability table, claims marked `unverified`, `engine: 'builtin-fallback'`).
|
|
17
|
+
- Methodology skills `industry-research-method` and `company-research-method` (chain decomposition, supply/demand discipline, sourcing and gap-declaration discipline, compliance wording) published from the packaged `skills/` directory.
|
|
18
|
+
- Typed Cordis events `industry-research/map`, `industry-research/track`, and `industry-research/report` emitted after each committed artifact.
|
|
19
|
+
- Fail-loud Schemastery config (`industryRoot`, `fetchTimeoutMs`, `timelineMaxEntries`, `sourceAllowlist`/`sourceBlocklist`, `offline`, `skillsDir`, `track.*`, `scan.*`); vitest suites over the real 0.1.0-rc.6 `Context`/`Session`/`ToolRuntime`/`SkillRegistry`/`WebRuntime`; a keyless offline end-to-end suite over the 白酒 fixtures.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright [yyyy] [name of copyright owner]
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
package/README.es.md
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🏭 dsh-industry-research
|
|
4
|
+
|
|
5
|
+
**Paquete de dominio para investigación de industrias y empresas en DeepSeek Harness.**
|
|
6
|
+
|
|
7
|
+
*Mapas de cadena industrial, seguimiento de fuentes públicas, tarjetas de empresa e informes auditables: cada cifra remonta a una fuente y cada laguna se declara.*
|
|
8
|
+
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[](https://github.com/topics/dsh-plugin)
|
|
11
|
+
[](#)
|
|
12
|
+
[](https://github.com/PerryLink/dsh-industry-research/actions)
|
|
13
|
+
[](https://github.com/PerryLink/dsh-industry-research/releases)
|
|
14
|
+
[](https://www.npmjs.com/package/dsh-industry-research)
|
|
15
|
+
[](https://www.npmjs.com/package/dsh-industry-research)
|
|
16
|
+
|
|
17
|
+
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
18
|
+
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
**仅供研究,不构成投资建议 — Solo con fines de investigación; no constituye asesoramiento de inversión.** Este paquete solo apoya la investigación: sin trading, sin predicción de precios, sin fuentes de pago o con inicio de sesión.
|
|
24
|
+
|
|
25
|
+
## Compatibility
|
|
26
|
+
|
|
27
|
+
- DeepSeek Harness `0.1.0-rc.6` (peers fijados en `0.1.0-rc.6`).
|
|
28
|
+
- Node `^22.19.0 || >=24.0.0`, solo ESM (`"type": "module"`).
|
|
29
|
+
- Dependencias peer: `@deepseek-ai/cordis ^4.0.1`, `@deepseek-ai/schemastery ^3.18.0`, y `@deepseek-ai/dsh-tools`, `@deepseek-ai/dsh-skill`, `@deepseek-ai/dsh-skill-filesystem` en `0.1.0-rc.6` (todas compuestas por el bundle oficial `dsh-base`).
|
|
30
|
+
- Capacidades opcionales, resueltas en tiempo de ejecución (nunca inyectadas): `ctx.web` (recuperación de fuentes públicas, compuesta por `dsh-base`) y `ctx.researchReport` (el motor de sellado del plugin hermano `dsh-research-report`).
|
|
31
|
+
|
|
32
|
+
## What you get
|
|
33
|
+
|
|
34
|
+
- **`industry_map`** — crea o actualiza un mapa de cadena industrial (`chain.json`): nodos upstream/midstream/downstream, aristas y ranuras de métricas. Una métrica con `value` exige `sourceRef`; una ranura sin valor es una laguna explícita. Las notas/archivos semilla y un resumen opcional de `ctx.web` se registran como fuentes citables (`S1`, `S2`, …).
|
|
35
|
+
- **`industry_track`** — seguimiento de políticas y noticias de fuentes públicas a través de la costura oficial `ctx.web`: búsqueda por tema, listas de permitidos/bloqueados por host, filtro `since`, capturas de instantáneas limitadas con hashes SHA-256 de procedencia, y fusión con deduplicación en `timeline.jsonl` con tope de retención. Falla en voz alta cuando la capacidad web no está disponible.
|
|
36
|
+
- **`company_scan`** — tarjetas de empresa (`card.json` + `card.md`) a partir de tus archivos de datos del workspace (hash SHA-256, esquemas Markdown y líneas candidatas de cifras para que cada número cite archivo y línea), con complemento opcional de citas `ctx.web`. Solo formatos de texto en v1 (sin PDF).
|
|
37
|
+
- **`industry_report`** — un informe auditable a partir del mapa + la línea temporal + las tarjetas. Con el motor `ctx.researchReport` montado, evidencia/secciones/claims se sellan mediante su `assemble` y regresan los veredictos por claim; sin él, la ruta integrada escribe `reports/<YYYYMMDD-HHmmss>/report.md` + `manifest.json` versionados con una tabla de trazabilidad SHA-256 y etiqueta honestamente `engine: 'builtin-fallback'`.
|
|
38
|
+
- **Dos skills de metodología** — `industry-research-method` (descomposición de la cadena, marco oferta/demanda, disciplina de fuentes, disciplina de declaración de lagunas) y `company-research-method` (marco de empresa, lista de fuentes públicas, redacción de cumplimiento).
|
|
39
|
+
- **Eventos Cordis tipados** — `industry-research/map`, `industry-research/track`, `industry-research/report` emitidos tras cada artefacto confirmado.
|
|
40
|
+
|
|
41
|
+
## Quick start
|
|
42
|
+
|
|
43
|
+
### Canal git
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
# Desde un profile temporal (fija el commit; ejecuta el build `prepare` autocontenido)
|
|
47
|
+
dsh plugin --profile demo add "github:PerryLink/dsh-industry-research#<sha>"
|
|
48
|
+
# El pnpm-workspace.yaml del profile gana una entrada allowBuilds para dsh-industry-research en el primer add.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Canal npm
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
dsh plugin --profile demo add dsh-industry-research
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Ambos canales instalan la fila del bundle (ver `cordis.patch.yml`) en la pila `dsh.profile.bundles` del profile y surten efecto al reiniciar.
|
|
58
|
+
|
|
59
|
+
Luego, en una sesión:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
加载 industry-research-method 技能,然后研究白酒行业:
|
|
63
|
+
先 industry_map 建产业链图,再 industry_track 跟踪政策,最后 industry_report 出报告。
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Install & uninstall
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
dsh plugin --profile demo add dsh-industry-research # instalar
|
|
70
|
+
dsh plugin --profile demo remove dsh-industry-research # desinstalar
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Verifica que la fila se monta: `dsh --profile demo --dump-config | grep dsh-industry-research`.
|
|
74
|
+
|
|
75
|
+
## Configuration
|
|
76
|
+
|
|
77
|
+
Todos los ajustes son campos `Config` de Schemastery; los valores inválidos fallan ruidosamente al cargar el profile.
|
|
78
|
+
|
|
79
|
+
| Key | Default | Description |
|
|
80
|
+
| --- | --- | --- |
|
|
81
|
+
| `enabled` | `true` | Interruptor maestro; `false` no monta nada. |
|
|
82
|
+
| `industryRoot` | `industry-research` | Raíz de artefactos, relativa al workspace de sesión (o absoluta). |
|
|
83
|
+
| `fetchTimeoutMs` | `20000` | Tiempo de espera por solicitud (ms) para llamadas `ctx.web`. |
|
|
84
|
+
| `timelineMaxEntries` | `500` | Entradas retenidas por `timeline.jsonl` (se descartan las más antiguas). |
|
|
85
|
+
| `sourceAllowlist` | `[]` | Lista de hosts permitidos (vacía = todos). |
|
|
86
|
+
| `sourceBlocklist` | `[]` | Lista de hosts bloqueados (prevalece sobre la permitida). |
|
|
87
|
+
| `offline` | `false` | Modo offline: nunca toca `ctx.web`; solo datos locales. |
|
|
88
|
+
| `skillsDir` | _(sin definir)_ | Raíz de skills explícita; por defecto el `skills/` empaquetado. |
|
|
89
|
+
| `track.maxResultsPerTopic` | `10` | maxResults de `web_search` por tema. |
|
|
90
|
+
| `track.maxFetchesPerCall` | `10` | Presupuesto de capturas por llamada `industry_track`. |
|
|
91
|
+
| `scan.maxFileBytes` | `1048576` | Tope de lectura por archivo de datos de empresa. |
|
|
92
|
+
| `scan.maxFigureCandidates` | `100` | Presupuesto de líneas candidatas por escaneo. |
|
|
93
|
+
|
|
94
|
+
## Tools & surfaces
|
|
95
|
+
|
|
96
|
+
### `industry_map({ industry, seed?, seedFiles?, web?, chain? })`
|
|
97
|
+
|
|
98
|
+
Con `chain`: valida (aristas colgadas, valores sin fuente, tiers ilegales, ids duplicados — fallo ruidoso con la lista completa) y persiste `chain.json`, luego lista las lagunas explícitas. Sin `chain`: devuelve el mapa actual, las fuentes registradas y un resumen opcional de estructura vía `ctx.web` para iterar. Emite `industry-research/map`.
|
|
99
|
+
|
|
100
|
+
### `industry_track({ industry, topics?, since? })`
|
|
101
|
+
|
|
102
|
+
Busca cada tema a través de `ctx.web`, filtra por las listas y `since`, captura instantáneas (SHA-256) dentro del presupuesto y fusiona en `timeline.jsonl` (deduplicación por URL normalizada, con tope). Las fuentes cuya instantánea falló se conservan como entradas solo-cita con la razón en `note`. Falla en voz alta nombrando la capacidad faltante cuando `ctx.web` no está montada o `offline: true`. Emite `industry-research/track`.
|
|
103
|
+
|
|
104
|
+
### `company_scan({ name, dataFiles?, web? })`
|
|
105
|
+
|
|
106
|
+
Lee los archivos de datos del workspace (`.md/.txt/.csv/.tsv/.json`; v1 no analiza PDF), los hashea, extrae esquemas Markdown y líneas candidatas de cifras, adjunta citas `ctx.web` opcionales y persiste la tarjeta. Los archivos rechazados regresan con razones; todo lo que la tarjeta no puede establecer es una laguna explícita.
|
|
107
|
+
|
|
108
|
+
### `industry_report({ industry, sections?, companies?, draft? })`
|
|
109
|
+
|
|
110
|
+
Reúne la evidencia (`E-chain`, `E-timeline`, `E-company-<slug>`) y valida tu `draft` (secciones + claims; cada `evidenceIds` debe referenciar evidencia registrada) o construye el borrador mecánico (métricas con fuente y entradas recientes se convierten en claims). Ruta del motor: directorio sellado + `sealHash` + veredictos por claim. Ruta integrada: Markdown versionado + manifiesto, claims honestamente marcados `unverified`. Emite `industry-research/report`.
|
|
111
|
+
|
|
112
|
+
## Skills
|
|
113
|
+
|
|
114
|
+
- **`industry-research-method`** — metodología de investigación industrial: descomposición upstream/midstream/downstream, marco oferta/demanda, disciplina de fuentes (cada número: valor + unidad + fuente + asOf) y disciplina de lagunas (declarar, nunca fabricar).
|
|
115
|
+
- **`company-research-method`** — metodología de investigación de empresas: marco de estructura de negocio / finanzas / riesgos, lista de prioridad de fuentes públicas (divulgaciones de la empresa → reguladores → medios autorizados) y redacción de cumplimiento.
|
|
116
|
+
|
|
117
|
+
Ambas se cargan bajo demanda con la herramienta estándar `skill` (`加载 industry-research-method 技能`).
|
|
118
|
+
|
|
119
|
+
## Data layout
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
<workspace>/<industryRoot>/<industria>/chain.json industry_map
|
|
123
|
+
<workspace>/<industryRoot>/<industria>/timeline.jsonl industry_track
|
|
124
|
+
<workspace>/<industryRoot>/<industria>/sources.json registro de fuentes citables (S1, S2, …)
|
|
125
|
+
<workspace>/<industryRoot>/<industria>/notes/ notas semilla
|
|
126
|
+
<workspace>/<industryRoot>/<industria>/reports/<ts>/ industry_report (report.md + manifest.json)
|
|
127
|
+
<workspace>/<industryRoot>/companies/<empresa>/card.* company_scan
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Permissions & data
|
|
131
|
+
|
|
132
|
+
`dsh-industry-research` consume solo costuras públicas: `ctx.tools`, `ctx.skills` y — resueltas opcionalmente — `ctx.web` y `ctx.researchReport`. No realiza acceso de red propio (toda recuperación pasa por `ctx.web` con la selección de proveedor del despliegue y tus tiempos de espera configurados), no almacena credenciales y solo escribe dentro del workspace de sesión bajo `industryRoot`. Solo se usan fuentes públicas; las fuentes de pago o con inicio de sesión están fuera de alcance — pasa tus propias exportaciones como `dataFiles`.
|
|
133
|
+
|
|
134
|
+
## Security boundaries
|
|
135
|
+
|
|
136
|
+
- **Contención en el workspace** — nombres de industria/empresa validados como segmentos de ruta; archivos de datos verificados contra el cwd de sesión (ambos lados resueltos).
|
|
137
|
+
- **Procedencia por construcción** — las fuentes llevan hashes SHA-256; los números sin fuente son errores de validación; las líneas corruptas de la línea temporal se omiten con un conteo visible, nunca en silencio.
|
|
138
|
+
- **Degradación honesta** — la ausencia de `ctx.web` / `ctx.researchReport` produce fallos ruidosos o artefactos fallback honestamente etiquetados, nunca fabricación silenciosa.
|
|
139
|
+
- **Registros reversibles** — todo pasa por `ctx.effect()` / `ctx.on()` / `register()`.
|
|
140
|
+
- **Cumplimiento solo-investigación** — descripciones de herramientas, tarjetas e informes llevan 「仅供研究,不构成投资建议」; los datos llevan asOf y fuentes.
|
|
141
|
+
|
|
142
|
+
## Known limitations
|
|
143
|
+
|
|
144
|
+
- **Eventos Cordis, no eventos de log de sesión** — la firma `Session.append` de rc.6 no tiene marcador `ignorable` para tipos de evento externos ni superficie de registro externa, así que añadir eventos de sesión `industry-research/*` haría que el coordinador de persistencia rechazara el log al restaurarlo. El registro duradero son los artefactos del workspace; la observabilidad viaja por los eventos Cordis tipados; los resultados de herramientas visibles al modelo viajan por el evento duradero `tool/result`.
|
|
145
|
+
- **Sin escrituras en `ctx.attachment`** — la costura de adjuntos de rc.6 solo acepta imágenes (PNG/JPEG/WebP/GIF); los informes Markdown permanecen como archivos versionados del workspace, referenciados por ruta absoluta en el resultado de la herramienta.
|
|
146
|
+
- **v1 solo lee formatos de texto** — sin análisis de PDF; pide a los usuarios convertir los PDF a texto/Markdown primero.
|
|
147
|
+
- **Skills en edición china** — las skills de metodología empaquetadas se publican en chino; una edición en inglés es trabajo futuro.
|
|
148
|
+
- **Herramientas en primer plano** — `industry_track` está acotada por `track.maxFetchesPerCall` y `fetchTimeoutMs` y corre en primer plano; un modo con trabajos en segundo plano es trabajo futuro.
|
|
149
|
+
- **El borrador automático es mecánico** — resume artefactos y convierte datos con fuente en claims; la calidad narrativa viene de los `draft` escritos por el modelo.
|
|
150
|
+
|
|
151
|
+
## Development
|
|
152
|
+
|
|
153
|
+
```sh
|
|
154
|
+
pnpm install
|
|
155
|
+
pnpm run typecheck && pnpm run typecheck:ci
|
|
156
|
+
pnpm test
|
|
157
|
+
pnpm run build
|
|
158
|
+
pnpm run verify:self-contained && pnpm run verify:artifacts
|
|
159
|
+
pnpm run verify:readme-sync
|
|
160
|
+
pnpm run pack:check
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Topics
|
|
164
|
+
|
|
165
|
+
`dsh`, `dsh-plugin`, `deepseek-harness`, `cordis`, `industry-research`, `company-research`, `research`, `report`
|
|
166
|
+
|
|
167
|
+
## Contributors
|
|
168
|
+
|
|
169
|
+
- Diseño e implementación iniciales por la sesión de desarrollo de `dsh-industry-research` (DeepSeek Harness).
|
|
170
|
+
|
|
171
|
+
Las contribuciones externas son bienvenidas — abre un issue o una pull request.
|
|
172
|
+
|
|
173
|
+
## License
|
|
174
|
+
|
|
175
|
+
Apache-2.0 — consulta [LICENSE](LICENSE).
|
package/README.hi.md
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🏭 dsh-industry-research
|
|
4
|
+
|
|
5
|
+
**DeepSeek Harness के लिए उद्योग एवं कंपनी अनुसंधान डोमेन पैक।**
|
|
6
|
+
|
|
7
|
+
*औद्योगिक श्रृंखला मानचित्र, सार्वजनिक-स्रोत ट्रैकिंग, कंपनी कार्ड और ऑडिट योग्य रिपोर्ट — हर आंकड़ा किसी स्रोत से जुड़ा है, हर अंतराल घोषित है।*
|
|
8
|
+
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[](https://github.com/topics/dsh-plugin)
|
|
11
|
+
[](#)
|
|
12
|
+
[](https://github.com/PerryLink/dsh-industry-research/actions)
|
|
13
|
+
[](https://github.com/PerryLink/dsh-industry-research/releases)
|
|
14
|
+
[](https://www.npmjs.com/package/dsh-industry-research)
|
|
15
|
+
[](https://www.npmjs.com/package/dsh-industry-research)
|
|
16
|
+
|
|
17
|
+
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
18
|
+
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
**仅供研究,不构成投资建议 — केवल अनुसंधान हेतु; निवेश सलाह नहीं।** यह पैक केवल अनुसंधान सहायता करता है: कोई ट्रेडिंग नहीं, कोई मूल्य पूर्वानुमान नहीं, कोई सशुल्क/लॉगिन-सुरक्षित स्रोत नहीं।
|
|
24
|
+
|
|
25
|
+
## Compatibility
|
|
26
|
+
|
|
27
|
+
- DeepSeek Harness `0.1.0-rc.6` (peers `0.1.0-rc.6` पर पिन)।
|
|
28
|
+
- Node `^22.19.0 || >=24.0.0`, केवल ESM (`"type": "module"`)।
|
|
29
|
+
- Peer निर्भरताएँ: `@deepseek-ai/cordis ^4.0.1`, `@deepseek-ai/schemastery ^3.18.0`, और `0.1.0-rc.6` पर `@deepseek-ai/dsh-tools`, `@deepseek-ai/dsh-skill`, `@deepseek-ai/dsh-skill-filesystem` (सभी आधिकारिक `dsh-base` बंडल में समाहित)।
|
|
30
|
+
- वैकल्पिक क्षमताएँ, निष्पादन समय पर खोजी जाती हैं (कभी इंजेक्ट नहीं): `ctx.web` (सार्वजनिक-स्रोत पुनर्प्राप्ति, `dsh-base` में समाहित) और `ctx.researchReport` (सहयोगी `dsh-research-report` प्लगइन का सीलिंग इंजन)।
|
|
31
|
+
|
|
32
|
+
## What you get
|
|
33
|
+
|
|
34
|
+
- **`industry_map`** — औद्योगिक श्रृंखला मानचित्र बनाएँ या अपडेट करें (`chain.json`): upstream/midstream/downstream नोड, एज और मेट्रिक स्लॉट। `value` वाला मेट्रिक `sourceRef` मांगता है; बिना-मान स्लॉट स्पष्ट अंतराल है। सीड नोट्स/फ़ाइलें और वैकल्पिक `ctx.web` सारांश उद्धरण योग्य स्रोतों (`S1`, `S2`, …) के रूप में दर्ज होते हैं।
|
|
35
|
+
- **`industry_track`** — आधिकारिक `ctx.web` सीम के माध्यम से नीतियों/समाचारों की ट्रैकिंग: विषयवार खोज, होस्ट अनुमति/ब्लॉक सूचियाँ, `since` फ़िल्टर, SHA-256 स्रोत-हैश के साथ सीमित स्नैपशॉट फ़ेच, और `timeline.jsonl` में डीडुप मर्ज (रिटेंशन सीमा सहित)। वेब क्षमता अनुपलब्ध होने पर स्पष्ट रूप से विफल।
|
|
36
|
+
- **`company_scan`** — आपकी workspace डेटा फ़ाइलों से कंपनी कार्ड (`card.json` + `card.md`): SHA-256 हैश, Markdown रूपरेखा और आंकड़ा-उम्मीदवार पंक्तियाँ (हर आंकड़ा फ़ाइल व पंक्ति उद्धृत कर सके), साथ में वैकल्पिक `ctx.web` उद्धरण। v1 में केवल टेक्स्ट फ़ॉर्मैट (PDF नहीं)।
|
|
37
|
+
- **`industry_report`** — मानचित्र + टाइमलाइन + कार्डों से एक ऑडिट योग्य रिपोर्ट। `ctx.researchReport` इंजन माउंट होने पर evidence/sections/claims उसके `assemble` से सील होते हैं और प्रति-claim निष्कर्ष लौटते हैं; न होने पर, बिल्टिन फ़ॉलबैक संस्करणित `reports/<YYYYMMDD-HHmmss>/report.md` + `manifest.json` लिखता है (SHA-256 स्रोत-ट्रेसिबिलिटी तालिका सहित) और ईमानदारी से `engine: 'builtin-fallback'` अंकित करता है।
|
|
38
|
+
- **दो मेथडॉलॉजी स्किल्स** — `industry-research-method` (श्रृंखला विघटन, आपूर्ति/मांग ढांचा, स्रोत अनुशासन, अंतराल-घोषणा अनुशासन) और `company-research-method` (कंपनी ढांचा, सार्वजनिक-स्रोत सूची, अनुपालन भाषा)।
|
|
39
|
+
- **टाइप किए गए Cordis इवेंट** — हर कमिट हुए आर्टिफ़ैक्ट के बाद `industry-research/map`, `industry-research/track`, `industry-research/report`।
|
|
40
|
+
|
|
41
|
+
## Quick start
|
|
42
|
+
|
|
43
|
+
### git चैनल
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
# किसी अस्थायी profile से (commit पिन करें; स्व-समायोजित `prepare` बिल्ड चलता है)
|
|
47
|
+
dsh plugin --profile demo add "github:PerryLink/dsh-industry-research#<sha>"
|
|
48
|
+
# पहले add पर profile के pnpm-workspace.yaml में dsh-industry-research की allowBuilds एंट्री जुड़ जाती है।
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### npm चैनल
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
dsh plugin --profile demo add dsh-industry-research
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
दोनों चैनल बंडल पंक्ति (`cordis.patch.yml` देखें) को profile की `dsh.profile.bundles` स्टैक में डालते हैं और रीस्टार्ट पर प्रभावी होते हैं।
|
|
58
|
+
|
|
59
|
+
फिर, किसी सेशन में:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
加载 industry-research-method 技能,然后研究白酒行业:
|
|
63
|
+
先 industry_map 建产业链图,再 industry_track 跟踪政策,最后 industry_report 出报告。
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Install & uninstall
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
dsh plugin --profile demo add dsh-industry-research # इंस्टॉल
|
|
70
|
+
dsh plugin --profile demo remove dsh-industry-research # अनइंस्टॉल
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
पंक्ति माउंट हुई या नहीं, जाँचें: `dsh --profile demo --dump-config | grep dsh-industry-research`।
|
|
74
|
+
|
|
75
|
+
## Configuration
|
|
76
|
+
|
|
77
|
+
सभी समायोज्य विकल्प Schemastery `Config` फ़ील्ड हैं; अमान्य मान profile लोड पर स्पष्ट रूप से विफल करते हैं।
|
|
78
|
+
|
|
79
|
+
| Key | Default | Description |
|
|
80
|
+
| --- | --- | --- |
|
|
81
|
+
| `enabled` | `true` | मास्टर स्विच; `false` कुछ भी माउंट नहीं करता। |
|
|
82
|
+
| `industryRoot` | `industry-research` | आर्टिफ़ैक्ट रूट, सेशन workspace के सापेक्ष (या निरपेक्ष)। |
|
|
83
|
+
| `fetchTimeoutMs` | `20000` | `ctx.web` कॉल के लिए प्रति-रिक्वेस्ट टाइमआउट (ms)। |
|
|
84
|
+
| `timelineMaxEntries` | `500` | प्रति `timeline.jsonl` रिटेन की जाने वाली एंट्री (सबसे पुरानी हटती हैं)। |
|
|
85
|
+
| `sourceAllowlist` | `[]` | ट्रैक किए गए स्रोतों की होस्ट अनुमति सूची (खाली = सभी)। |
|
|
86
|
+
| `sourceBlocklist` | `[]` | ट्रैक किए गए स्रोतों की होस्ट ब्लॉक सूची (अनुमति सूची पर प्राथमिक)। |
|
|
87
|
+
| `offline` | `false` | ऑफ़लाइन मोड: `ctx.web` को कभी न छुएँ; केवल स्थानीय workspace डेटा। |
|
|
88
|
+
| `skillsDir` | _(अनसेट)_ | स्पष्ट स्किल रूट ओवरराइड; डिफ़ॉल्ट पैकेज्ड `skills/`। |
|
|
89
|
+
| `track.maxResultsPerTopic` | `10` | प्रति विषय `web_search` maxResults। |
|
|
90
|
+
| `track.maxFetchesPerCall` | `10` | प्रति `industry_track` कॉल स्नैपशॉट-फ़ेच बजट। |
|
|
91
|
+
| `scan.maxFileBytes` | `1048576` | कंपनी डेटा फ़ाइलों की प्रति-फ़ाइल रीड सीमा। |
|
|
92
|
+
| `scan.maxFigureCandidates` | `100` | प्रति कंपनी स्कैन आंकड़ा-उम्मीदवार बजट। |
|
|
93
|
+
|
|
94
|
+
## Tools & surfaces
|
|
95
|
+
|
|
96
|
+
### `industry_map({ industry, seed?, seedFiles?, web?, chain? })`
|
|
97
|
+
|
|
98
|
+
`chain` के साथ: वैलिडेट करता है (लटकती एज, बिना-स्रोत मान, अवैध tier, डुप्लिकेट id — पूरी समस्या सूची के साथ स्पष्ट विफलता) और `chain.json` सहेजता है, फिर स्पष्ट अंतराल स्लॉट सूचीबद्ध करता है। `chain` के बिना: वर्तमान मानचित्र, दर्ज स्रोत और वैकल्पिक `ctx.web` श्रृंखला-संरचना सारांश लौटाता है ताकि मॉडल पुनरावृत्ति कर सके। `industry-research/map` उत्सर्जित करता है।
|
|
99
|
+
|
|
100
|
+
### `industry_track({ industry, topics?, since? })`
|
|
101
|
+
|
|
102
|
+
`ctx.web` से प्रत्येक विषय खोजता है, सूचियों व `since` से फ़िल्टर करता है, कॉल बजट के भीतर स्नैपशॉट (SHA-256) फ़ेच करता है, और `timeline.jsonl` में मर्ज करता है (नॉर्मलाइज़्ड URL से डीडुप, सीमा सहित)। जिन स्रोतों का स्नैपशॉट विफल हुआ वे कारण `note` में लिखकर केवल-उद्धरण एंट्री के रूप में रहते हैं। `ctx.web` अनमाउंटेड या `offline: true` होने पर गुम क्षमता का नाम बताते हुए स्पष्ट विफल। `industry-research/track` उत्सर्जित करता है।
|
|
103
|
+
|
|
104
|
+
### `company_scan({ name, dataFiles?, web? })`
|
|
105
|
+
|
|
106
|
+
workspace डेटा फ़ाइलें (`.md/.txt/.csv/.tsv/.json`; v1 PDF पार्स नहीं करता) पढ़ता, हैश करता, Markdown रूपरेखा व आंकड़ा-उम्मीदवार पंक्तियाँ निकालता है, वैकल्पिक `ctx.web` उद्धरण जोड़ता है और कार्ड सहेजता है। अस्वीकृत फ़ाइलें कारणों सहित लौटती हैं; कार्ड जो स्थापित नहीं कर सकता वह स्पष्ट अंतराल है।
|
|
107
|
+
|
|
108
|
+
### `industry_report({ industry, sections?, companies?, draft? })`
|
|
109
|
+
|
|
110
|
+
एविडेंस (`E-chain`, `E-timeline`, `E-company-<slug>`) जुटाता है और या तो आपका `draft` वैलिडेट करता है (sections + claims; हर claim के `evidenceIds` दर्ज एविडेंस को संदर्भित करने चाहिए) या यांत्रिक ऑटो-ड्राफ़्ट बनाता है (स्रोतित मेट्रिक्स और हालिया टाइमलाइन एंट्री claims बनती हैं)। इंजन पथ: सील्ड डायरेक्टरी + `sealHash` + प्रति-claim निष्कर्ष। फ़ॉलबैक पथ: संस्करणित Markdown + मैनिफ़ेस्ट, claims ईमानदारी से `unverified` अंकित। `industry-research/report` उत्सर्जित करता है।
|
|
111
|
+
|
|
112
|
+
## Skills
|
|
113
|
+
|
|
114
|
+
- **`industry-research-method`** — उद्योग अनुसंधान पद्धति: upstream/midstream/downstream विघटन, आपूर्ति/मांग ढांचा, स्रोत अनुशासन (हर आंकड़ा: मान + इकाई + स्रोत + asOf) और अंतराल-घोषणा अनुशासन (घोषित करें, कभी न बनाएँ)।
|
|
115
|
+
- **`company-research-method`** — कंपनी अनुसंधान पद्धति: व्यापार-संरचना / वित्त / जोखिम कार्ड ढांचा, सार्वजनिक-स्रोत प्राथमिकता सूची (कंपनी प्रकटीकरण → नियामक → प्रामाणिक मीडिया) और अनुपालन भाषा।
|
|
116
|
+
|
|
117
|
+
दोनों मानक `skill` टूल से मांग पर लोड होती हैं (`加载 industry-research-method 技能`)।
|
|
118
|
+
|
|
119
|
+
## Data layout
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
<workspace>/<industryRoot>/<उद्योग>/chain.json industry_map
|
|
123
|
+
<workspace>/<industryRoot>/<उद्योग>/timeline.jsonl industry_track
|
|
124
|
+
<workspace>/<industryRoot>/<उद्योग>/sources.json उद्धरण योग्य स्रोत रजिस्ट्री (S1, S2, …)
|
|
125
|
+
<workspace>/<industryRoot>/<उद्योग>/notes/ सीड नोट्स
|
|
126
|
+
<workspace>/<industryRoot>/<उद्योग>/reports/<ts>/ industry_report (report.md + manifest.json)
|
|
127
|
+
<workspace>/<industryRoot>/companies/<कंपनी>/card.* company_scan
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Permissions & data
|
|
131
|
+
|
|
132
|
+
`dsh-industry-research` केवल सार्वजनिक सीम्स का उपभोग करता है: `ctx.tools`, `ctx.skills`, और — वैकल्पिक रूप से खोजे गए — `ctx.web` व `ctx.researchReport`। यह स्वयं कोई नेटवर्क एक्सेस नहीं करता (सारी पुनर्प्राप्ति `ctx.web` से होती है, deployment के प्रोवाइडर चयन और आपके कॉन्फ़िगर किए गए टाइमआउट के साथ), कोई क्रेडेंशियल स्टोर नहीं करता, और केवल सेशन workspace के `industryRoot` के भीतर लिखता है। केवल सार्वजनिक स्रोत उपयोग होते हैं; सशुल्क या लॉगिन-सुरक्षित स्रोत दायरे से बाहर हैं — अपनी एक्सपोर्ट फ़ाइलें `dataFiles` के रूप में दें।
|
|
133
|
+
|
|
134
|
+
## Security boundaries
|
|
135
|
+
|
|
136
|
+
- **workspace कंटेनमेंट** — उद्योग/कंपनी नाम वैध पाथ सेगमेंट हैं; डेटा फ़ाइलें सेशन cwd के विरुद्ध कंटेनमेंट-जाँचित हैं (दोनों ओर resolve)।
|
|
137
|
+
- **निर्माण से स्रोत-प्रूफ़** — स्रोतों में SHA-256 हैश होते हैं; बिना-स्रोत आंकड़े वैलिडेशन त्रुटि हैं; करप्ट टाइमलाइन पंक्तियाँ गिनती दिखाकर छोड़ी जाती हैं, कभी चुपचाप नहीं।
|
|
138
|
+
- **ईमानदार डिग्रेडेशन** — `ctx.web` / `ctx.researchReport` की अनुपस्थिति स्पष्ट विफलता या ईमानदारी से लेबल किए फ़ॉलबैक आर्टिफ़ैक्ट देती है, कभी मौन फ़ेब्रिकेशन नहीं।
|
|
139
|
+
- **प्रतिवर्ती रजिस्ट्रेशन** — सब कुछ `ctx.effect()` / `ctx.on()` / `register()` से गुजरता है।
|
|
140
|
+
- **केवल-अनुसंधान अनुपालन** — टूल विवरण, कार्ड और रिपोर्ट 「仅供研究,不构成投资建议」धारण करते हैं; डेटा पॉइंट asOf और स्रोत सहित।
|
|
141
|
+
|
|
142
|
+
## Known limitations
|
|
143
|
+
|
|
144
|
+
- **सेशन-लॉग इवेंट नहीं, Cordis इवेंट** — rc.6 की `Session.append` सिग्नेचर में बाहरी इवेंट प्रकारों के लिए `ignorable` मार्कर और बाहरी इवेंट-रजिस्ट्रेशन सतह नहीं है, इसलिए कस्टम `industry-research/*` सेशन इवेंट जोड़ने से पर्सिस्टेंस कोऑर्डिनेटर रीस्टोर पर लॉग अस्वीकार कर देगा। टिकाऊ रिकॉर्ड workspace आर्टिफ़ैक्ट हैं; ऑब्ज़र्वेबिलिटी टाइप किए Cordis इवेंट से चलती है; मॉडल-दृश्य टूल परिणाम टिकाऊ `tool/result` सेशन इवेंट से चलते हैं।
|
|
145
|
+
- **`ctx.attachment` में लेखन नहीं** — rc.6 अटैचमेंट सीम केवल इमेज स्वीकार करती है (PNG/JPEG/WebP/GIF); Markdown रिपोर्ट इसलिए संस्करणित workspace फ़ाइलें रहती हैं, टूल परिणाम में निरपेक्ष पाथ से संदर्भित।
|
|
146
|
+
- **v1 केवल टेक्स्ट फ़ॉर्मैट पढ़ता है** — PDF पार्सिंग नहीं; उपयोगकर्ताओं से पहले PDF को टेक्स्ट/Markdown में बदलने को कहें।
|
|
147
|
+
- **चीनी-संस्करण स्किल्स** — पैकेज्ड मेथडॉलॉजी स्किल्स चीनी में आती हैं; अंग्रेज़ी संस्करण भविष्य का काम।
|
|
148
|
+
- **फ़ोरग्राउंड टूल्स** — `industry_track` `track.maxFetchesPerCall` व `fetchTimeoutMs` से सीमित होकर फ़ोरग्राउंड में चलती है; बैकग्राउंड-जॉब्स मोड भविष्य का काम।
|
|
149
|
+
- **ऑटो-ड्राफ़्ट यांत्रिक है** — यह आर्टिफ़ैक्ट सारांशित करता है और स्रोतित डेटा पॉइंट को claims में बदलता है; वर्णनात्मक गुणवत्ता मॉडल-लिखित `draft` से आती है।
|
|
150
|
+
|
|
151
|
+
## Development
|
|
152
|
+
|
|
153
|
+
```sh
|
|
154
|
+
pnpm install
|
|
155
|
+
pnpm run typecheck && pnpm run typecheck:ci
|
|
156
|
+
pnpm test
|
|
157
|
+
pnpm run build
|
|
158
|
+
pnpm run verify:self-contained && pnpm run verify:artifacts
|
|
159
|
+
pnpm run verify:readme-sync
|
|
160
|
+
pnpm run pack:check
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Topics
|
|
164
|
+
|
|
165
|
+
`dsh`, `dsh-plugin`, `deepseek-harness`, `cordis`, `industry-research`, `company-research`, `research`, `report`
|
|
166
|
+
|
|
167
|
+
## Contributors
|
|
168
|
+
|
|
169
|
+
- प्रारंभिक डिज़ाइन और कार्यान्वयन: `dsh-industry-research` विकास सत्र (DeepSeek Harness)।
|
|
170
|
+
|
|
171
|
+
बाहरी योगदान स्वागत योग्य हैं — issue या pull request खोलें।
|
|
172
|
+
|
|
173
|
+
## License
|
|
174
|
+
|
|
175
|
+
Apache-2.0 — देखें [LICENSE](LICENSE)।
|