dsh-plugin-dev-kb 1.0.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/LICENSE +21 -0
- package/README.md +56 -0
- package/cordis.patch.yml +12 -0
- package/kb/INDEX.md +210 -0
- package/kb/README.md +69 -0
- package/kb/extra/AGENTS.md +75 -0
- package/kb/extra/api-gateway.md +164 -0
- package/kb/extra/api-gateway.zh.md +164 -0
- package/kb/extra/cookbook/adding-a-vendored-package.md +59 -0
- package/kb/extra/cookbook/adding-a-vendored-package.zh.md +59 -0
- package/kb/extra/cookbook/maintaining-dsh-code-review.md +64 -0
- package/kb/extra/cookbook/maintaining-dsh-code-review.zh.md +64 -0
- package/kb/extra/cookbook/responding-to-pr-review-on-a-stack.md +32 -0
- package/kb/extra/cookbook/responding-to-pr-review-on-a-stack.zh.md +32 -0
- package/kb/extra/defensive-patterns.md +33 -0
- package/kb/extra/defensive-patterns.zh.md +33 -0
- package/kb/extra/development.md +171 -0
- package/kb/extra/development.zh.md +171 -0
- package/kb/extra/event-producer-consumer.md +76 -0
- package/kb/extra/event-producer-consumer.zh.md +78 -0
- package/kb/extra/glossary.md +45 -0
- package/kb/extra/glossary.zh.md +45 -0
- package/kb/extra/graph-atlas.md +24 -0
- package/kb/extra/graph-atlas.zh.md +26 -0
- package/kb/extra/i18n/README.md +60 -0
- package/kb/extra/i18n/README.zh.md +60 -0
- package/kb/extra/i18n/style-samples.md +87 -0
- package/kb/extra/i18n/terminology.md +214 -0
- package/kb/extra/i18n/translation-prompt.md +263 -0
- package/kb/extra/i18n/translation-rules.md +69 -0
- package/kb/extra/i18n/translation-rules.zh.md +69 -0
- package/kb/extra/module-graph.md +1641 -0
- package/kb/extra/module-graph.zh.md +1643 -0
- package/kb/extra/postmortem/0001-acp-default-export-drops-inject.md +113 -0
- package/kb/extra/postmortem/0001-acp-default-export-drops-inject.zh.md +113 -0
- package/kb/extra/postmortem/0002-js-expression-disabled-filesystem-tools.md +47 -0
- package/kb/extra/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +47 -0
- package/kb/extra/postmortem/0003-web-agent-gui-feedback-loop.md +53 -0
- package/kb/extra/postmortem/0003-web-agent-gui-feedback-loop.zh.md +53 -0
- package/kb/extra/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +55 -0
- package/kb/extra/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +55 -0
- package/kb/extra/postmortem/README.md +18 -0
- package/kb/extra/postmortem/README.zh.md +18 -0
- package/kb/extra/rescope.md +53 -0
- package/kb/extra/rescope.zh.md +53 -0
- package/kb/extra/subsystems/attachment.md +125 -0
- package/kb/extra/subsystems/attachment.zh.md +125 -0
- package/kb/extra/subsystems/extensions.md +364 -0
- package/kb/extra/subsystems/extensions.zh.md +364 -0
- package/kb/extra/subsystems/feedback.md +266 -0
- package/kb/extra/subsystems/feedback.zh.md +266 -0
- package/kb/extra/testing.md +49 -0
- package/kb/extra/testing.zh.md +49 -0
- package/kb/extra/web-styling.md +25 -0
- package/kb/extra/web-styling.zh.md +25 -0
- package/kb/meta/search-index.json +1328 -0
- package/kb/meta/site-pages.txt +168 -0
- package/kb/meta/source.json +13 -0
- package/kb/meta/topics.md +75 -0
- package/kb/site/develop/basic/config.md +108 -0
- package/kb/site/develop/basic/index.md +146 -0
- package/kb/site/develop/basic/publish.md +185 -0
- package/kb/site/develop/basic/tool.md +54 -0
- package/kb/site/develop/cordis-tutorial/01-first-plugin.md +95 -0
- package/kb/site/develop/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
- package/kb/site/develop/cordis-tutorial/03-services.md +98 -0
- package/kb/site/develop/cordis-tutorial/04-events.md +144 -0
- package/kb/site/develop/cordis-tutorial/05-config.md +84 -0
- package/kb/site/develop/cordis-tutorial/06-composition-and-hmr.md +113 -0
- package/kb/site/develop/cordis-tutorial/07-into-the-harness.md +107 -0
- package/kb/site/develop/cordis-tutorial/index.md +62 -0
- package/kb/site/develop/framework/events.md +145 -0
- package/kb/site/develop/framework/index.md +139 -0
- package/kb/site/develop/framework/service.md +152 -0
- package/kb/site/develop/practice/index.md +157 -0
- package/kb/site/develop/practice/llm-adapter.md +190 -0
- package/kb/site/en/develop/basic/config.md +108 -0
- package/kb/site/en/develop/basic/index.md +146 -0
- package/kb/site/en/develop/basic/publish.md +185 -0
- package/kb/site/en/develop/basic/tool.md +54 -0
- package/kb/site/en/develop/cordis-tutorial/01-first-plugin.md +95 -0
- package/kb/site/en/develop/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
- package/kb/site/en/develop/cordis-tutorial/03-services.md +98 -0
- package/kb/site/en/develop/cordis-tutorial/04-events.md +144 -0
- package/kb/site/en/develop/cordis-tutorial/05-config.md +84 -0
- package/kb/site/en/develop/cordis-tutorial/06-composition-and-hmr.md +113 -0
- package/kb/site/en/develop/cordis-tutorial/07-into-the-harness.md +107 -0
- package/kb/site/en/develop/cordis-tutorial/index.md +60 -0
- package/kb/site/en/develop/framework/events.md +145 -0
- package/kb/site/en/develop/framework/index.md +139 -0
- package/kb/site/en/develop/framework/service.md +150 -0
- package/kb/site/en/develop/practice/index.md +157 -0
- package/kb/site/en/develop/practice/llm-adapter.md +190 -0
- package/kb/site/en/guide/providers-custom-form.png +0 -0
- package/kb/site/en/guide/providers-models-page.png +0 -0
- package/kb/site/en/guide/providers.md +100 -0
- package/kb/site/en/guide/python-sdk.md +106 -0
- package/kb/site/en/guide/quickstart.md +32 -0
- package/kb/site/en/index.md +8 -0
- package/kb/site/en/reference/agent-lifecycle.md +86 -0
- package/kb/site/en/reference/capability-seams.md +475 -0
- package/kb/site/en/reference/config-catalog.md +3155 -0
- package/kb/site/en/reference/cookbook/adding-a-conversation-node.md +235 -0
- package/kb/site/en/reference/cookbook/adding-a-package.md +120 -0
- package/kb/site/en/reference/cookbook/adding-a-settings-card.md +102 -0
- package/kb/site/en/reference/cookbook/adding-a-tool.md +96 -0
- package/kb/site/en/reference/cookbook/adding-an-llm-adapter.md +45 -0
- package/kb/site/en/reference/cookbook/extension-cookbook.md +131 -0
- package/kb/site/en/reference/cordis-api/context.md +368 -0
- package/kb/site/en/reference/cordis-api/events.md +211 -0
- package/kb/site/en/reference/cordis-api/fiber.md +379 -0
- package/kb/site/en/reference/cordis-api/inherited.md +43 -0
- package/kb/site/en/reference/cordis-api/registry.md +156 -0
- package/kb/site/en/reference/cordis-api/service.md +106 -0
- package/kb/site/en/reference/cordis-primer.md +46 -0
- package/kb/site/en/reference/index.md +131 -0
- package/kb/site/en/reference/persistence-catalog.md +949 -0
- package/kb/site/en/reference/subsystems/approval.md +173 -0
- package/kb/site/en/reference/subsystems/client-modules.md +121 -0
- package/kb/site/en/reference/subsystems/code-runtime.md +194 -0
- package/kb/site/en/reference/subsystems/commands.md +190 -0
- package/kb/site/en/reference/subsystems/compaction.md +241 -0
- package/kb/site/en/reference/subsystems/core.md +1073 -0
- package/kb/site/en/reference/subsystems/credentials.md +136 -0
- package/kb/site/en/reference/subsystems/filesystem.md +498 -0
- package/kb/site/en/reference/subsystems/goal.md +280 -0
- package/kb/site/en/reference/subsystems/index.md +58 -0
- package/kb/site/en/reference/subsystems/invariants.md +91 -0
- package/kb/site/en/reference/subsystems/jobs.md +293 -0
- package/kb/site/en/reference/subsystems/llm-streaming.md +920 -0
- package/kb/site/en/reference/subsystems/lsp.md +205 -0
- package/kb/site/en/reference/subsystems/permission-presets.md +134 -0
- package/kb/site/en/reference/subsystems/persistence.md +388 -0
- package/kb/site/en/reference/subsystems/plan.md +90 -0
- package/kb/site/en/reference/subsystems/sandbox.md +221 -0
- package/kb/site/en/reference/subsystems/schedule.md +189 -0
- package/kb/site/en/reference/subsystems/scope.md +62 -0
- package/kb/site/en/reference/subsystems/session-projection.md +265 -0
- package/kb/site/en/reference/subsystems/session-query.md +498 -0
- package/kb/site/en/reference/subsystems/session-reference.md +111 -0
- package/kb/site/en/reference/subsystems/session-telemetry.md +197 -0
- package/kb/site/en/reference/subsystems/session-title.md +207 -0
- package/kb/site/en/reference/subsystems/session.md +852 -0
- package/kb/site/en/reference/subsystems/settings.md +313 -0
- package/kb/site/en/reference/subsystems/shell.md +306 -0
- package/kb/site/en/reference/subsystems/skills.md +334 -0
- package/kb/site/en/reference/subsystems/spill.md +120 -0
- package/kb/site/en/reference/subsystems/storage.md +232 -0
- package/kb/site/en/reference/subsystems/subagent.md +737 -0
- package/kb/site/en/reference/subsystems/subprocess.md +327 -0
- package/kb/site/en/reference/subsystems/system-prompt.md +210 -0
- package/kb/site/en/reference/subsystems/terminal.md +187 -0
- package/kb/site/en/reference/subsystems/token-meter.md +93 -0
- package/kb/site/en/reference/subsystems/tools.md +723 -0
- package/kb/site/en/reference/subsystems/typert.md +339 -0
- package/kb/site/en/reference/subsystems/user-questions.md +181 -0
- package/kb/site/en/reference/subsystems/web-server.md +111 -0
- package/kb/site/en/reference/subsystems/web.md +202 -0
- package/kb/site/en/reference/subsystems/workflow.md +281 -0
- package/kb/site/en/reference/subsystems/workspace.md +231 -0
- package/kb/site/en/reference/tool-catalog.md +1877 -0
- package/kb/site/en/reference/tool-execution-pipeline.md +66 -0
- package/kb/site/guide/providers-custom-form.zh.png +0 -0
- package/kb/site/guide/providers-models-page.zh.png +0 -0
- package/kb/site/guide/providers.md +100 -0
- package/kb/site/guide/python-sdk.md +106 -0
- package/kb/site/guide/quickstart.md +32 -0
- package/kb/site/index.md +8 -0
- package/kb/site/reference/agent-lifecycle.md +86 -0
- package/kb/site/reference/capability-seams.md +475 -0
- package/kb/site/reference/config-catalog.md +3154 -0
- package/kb/site/reference/cookbook/adding-a-conversation-node.md +235 -0
- package/kb/site/reference/cookbook/adding-a-package.md +120 -0
- package/kb/site/reference/cookbook/adding-a-settings-card.md +102 -0
- package/kb/site/reference/cookbook/adding-a-tool.md +98 -0
- package/kb/site/reference/cookbook/adding-an-llm-adapter.md +45 -0
- package/kb/site/reference/cookbook/extension-cookbook.md +133 -0
- package/kb/site/reference/cordis-api/context.md +368 -0
- package/kb/site/reference/cordis-api/events.md +211 -0
- package/kb/site/reference/cordis-api/fiber.md +379 -0
- package/kb/site/reference/cordis-api/inherited.md +43 -0
- package/kb/site/reference/cordis-api/registry.md +156 -0
- package/kb/site/reference/cordis-api/service.md +106 -0
- package/kb/site/reference/cordis-primer.md +52 -0
- package/kb/site/reference/index.md +135 -0
- package/kb/site/reference/persistence-catalog.md +949 -0
- package/kb/site/reference/subsystems/approval.md +173 -0
- package/kb/site/reference/subsystems/client-modules.md +121 -0
- package/kb/site/reference/subsystems/code-runtime.md +194 -0
- package/kb/site/reference/subsystems/commands.md +190 -0
- package/kb/site/reference/subsystems/compaction.md +241 -0
- package/kb/site/reference/subsystems/core.md +1081 -0
- package/kb/site/reference/subsystems/credentials.md +136 -0
- package/kb/site/reference/subsystems/filesystem.md +498 -0
- package/kb/site/reference/subsystems/goal.md +280 -0
- package/kb/site/reference/subsystems/index.md +58 -0
- package/kb/site/reference/subsystems/invariants.md +91 -0
- package/kb/site/reference/subsystems/jobs.md +293 -0
- package/kb/site/reference/subsystems/llm-streaming.md +926 -0
- package/kb/site/reference/subsystems/lsp.md +205 -0
- package/kb/site/reference/subsystems/permission-presets.md +134 -0
- package/kb/site/reference/subsystems/persistence.md +388 -0
- package/kb/site/reference/subsystems/plan.md +90 -0
- package/kb/site/reference/subsystems/sandbox.md +221 -0
- package/kb/site/reference/subsystems/schedule.md +189 -0
- package/kb/site/reference/subsystems/scope.md +62 -0
- package/kb/site/reference/subsystems/session-projection.md +265 -0
- package/kb/site/reference/subsystems/session-query.md +498 -0
- package/kb/site/reference/subsystems/session-reference.md +111 -0
- package/kb/site/reference/subsystems/session-telemetry.md +197 -0
- package/kb/site/reference/subsystems/session-title.md +207 -0
- package/kb/site/reference/subsystems/session.md +854 -0
- package/kb/site/reference/subsystems/settings.md +313 -0
- package/kb/site/reference/subsystems/shell.md +306 -0
- package/kb/site/reference/subsystems/skills.md +334 -0
- package/kb/site/reference/subsystems/spill.md +120 -0
- package/kb/site/reference/subsystems/storage.md +232 -0
- package/kb/site/reference/subsystems/subagent.md +739 -0
- package/kb/site/reference/subsystems/subprocess.md +327 -0
- package/kb/site/reference/subsystems/system-prompt.md +210 -0
- package/kb/site/reference/subsystems/terminal.md +187 -0
- package/kb/site/reference/subsystems/token-meter.md +93 -0
- package/kb/site/reference/subsystems/tools.md +723 -0
- package/kb/site/reference/subsystems/typert.md +339 -0
- package/kb/site/reference/subsystems/user-questions.md +181 -0
- package/kb/site/reference/subsystems/web-server.md +111 -0
- package/kb/site/reference/subsystems/web.md +202 -0
- package/kb/site/reference/subsystems/workflow.md +281 -0
- package/kb/site/reference/subsystems/workspace.md +231 -0
- package/kb/site/reference/tool-catalog.md +1880 -0
- package/kb/site/reference/tool-execution-pipeline.md +66 -0
- package/package.json +40 -0
- package/scripts/rebuild-index.mjs +88 -0
- package/skills/dsh-plugin-dev-kb.md +66 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
editSource: "docs/cordis-api/events.zh.md"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<!-- 英文源文件由 scripts/gen-cordis-catalog.ts 生成;本中文文件是通过双语配对维护的经评审对侧。
|
|
6
|
+
更新时先运行 `pnpm run gen-cordis-catalog` 更新英文,再更新本文件并运行 `pnpm run verify-translation-pairing --write docs/cordis-api/events.md` 重新记录配对。 -->
|
|
7
|
+
|
|
8
|
+
# 事件
|
|
9
|
+
|
|
10
|
+
每个上下文中都混入了事件分发 API。Harness 事件声明及其分发模式会生成到各自所属的[子系统页面](../subsystems/core.md)。
|
|
11
|
+
|
|
12
|
+
### ctx.parallel(name, ...args)
|
|
13
|
+
|
|
14
|
+
```ts cordis-catalog
|
|
15
|
+
/**
|
|
16
|
+
* Dispatch an event, running all listeners concurrently.
|
|
17
|
+
*
|
|
18
|
+
* @param name — the event name.
|
|
19
|
+
* @param args — arguments passed to every listener.
|
|
20
|
+
* @returns a promise resolving once every listener has settled.
|
|
21
|
+
*/
|
|
22
|
+
parallel<K extends keyof Events>(name: K, ...args: Parameters<Events[K]>): Promise<void>
|
|
23
|
+
parallel<K extends keyof Events>(thisArg: NoInfer<ThisType<Events[K]>>, name: K, ...args: Parameters<Events[K]>): Promise<void>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
分发一个事件,并发运行所有监听器。
|
|
27
|
+
|
|
28
|
+
- `name`:事件名称。
|
|
29
|
+
- `args`:传递给每个监听器的参数。
|
|
30
|
+
|
|
31
|
+
**返回值**:一个 Promise,在所有监听器均已完成后兑现。
|
|
32
|
+
|
|
33
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L44)
|
|
34
|
+
|
|
35
|
+
### ctx.emit(name, ...args)
|
|
36
|
+
|
|
37
|
+
```ts cordis-catalog
|
|
38
|
+
/**
|
|
39
|
+
* Dispatch an event synchronously, ignoring listener return values.
|
|
40
|
+
*
|
|
41
|
+
* @param name — the event name.
|
|
42
|
+
* @param args — arguments passed to every listener.
|
|
43
|
+
*/
|
|
44
|
+
emit<K extends keyof Events>(name: K, ...args: Parameters<Events[K]>): void
|
|
45
|
+
emit<K extends keyof Events>(thisArg: NoInfer<ThisType<Events[K]>>, name: K, ...args: Parameters<Events[K]>): void
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
同步分发一个事件,忽略监听器的返回值。
|
|
49
|
+
|
|
50
|
+
- `name`:事件名称。
|
|
51
|
+
- `args`:传递给每个监听器的参数。
|
|
52
|
+
|
|
53
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L53)
|
|
54
|
+
|
|
55
|
+
### ctx.serial(name, ...args)
|
|
56
|
+
|
|
57
|
+
```ts cordis-catalog
|
|
58
|
+
/**
|
|
59
|
+
* Dispatch an event, awaiting listeners in order until one bails.
|
|
60
|
+
*
|
|
61
|
+
* @param name — the event name.
|
|
62
|
+
* @param args — arguments passed to each listener.
|
|
63
|
+
* @returns the first bail value (non-null, non-false, non-undefined), if any.
|
|
64
|
+
*/
|
|
65
|
+
serial<K extends keyof Events>(name: K, ...args: Parameters<Events[K]>): Promisify<ReturnType<Events[K]>>
|
|
66
|
+
serial<K extends keyof Events>(thisArg: NoInfer<ThisType<Events[K]>>, name: K, ...args: Parameters<Events[K]>): Promisify<ReturnType<Events[K]>>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
分发一个事件,依次等待各监听器,直到其中一个提前终止分发。
|
|
70
|
+
|
|
71
|
+
- `name`:事件名称。
|
|
72
|
+
- `args`:传递给每个监听器的参数。
|
|
73
|
+
|
|
74
|
+
**返回值**:第一个提前终止值(非 null、非 false 且非 undefined);如果没有,则不返回此类值。
|
|
75
|
+
|
|
76
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L63)
|
|
77
|
+
|
|
78
|
+
### ctx.bail(name, ...args)
|
|
79
|
+
|
|
80
|
+
```ts cordis-catalog
|
|
81
|
+
/**
|
|
82
|
+
* Dispatch an event, calling listeners in order until one bails.
|
|
83
|
+
*
|
|
84
|
+
* @param name — the event name.
|
|
85
|
+
* @param args — arguments passed to each listener.
|
|
86
|
+
* @returns the first bail value (non-null, non-false, non-undefined), if any.
|
|
87
|
+
*/
|
|
88
|
+
bail<K extends keyof Events>(name: K, ...args: Parameters<Events[K]>): ReturnType<Events[K]>
|
|
89
|
+
bail<K extends keyof Events>(thisArg: NoInfer<ThisType<Events[K]>>, name: K, ...args: Parameters<Events[K]>): ReturnType<Events[K]>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
分发一个事件,依次调用各监听器,直到其中一个提前终止分发。
|
|
93
|
+
|
|
94
|
+
- `name`:事件名称。
|
|
95
|
+
- `args`:传递给每个监听器的参数。
|
|
96
|
+
|
|
97
|
+
**返回值**:第一个提前终止值(非 null、非 false 且非 undefined);如果没有,则不返回此类值。
|
|
98
|
+
|
|
99
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L73)
|
|
100
|
+
|
|
101
|
+
### ctx.waterfall(name, ...args)
|
|
102
|
+
|
|
103
|
+
```ts cordis-catalog
|
|
104
|
+
/**
|
|
105
|
+
* Dispatch an event whose last argument is a `next` continuation.
|
|
106
|
+
*
|
|
107
|
+
* Each listener wraps the rest of the chain: calling `next()` invokes the
|
|
108
|
+
* next listener (finally the built-in behavior); not calling it vetoes.
|
|
109
|
+
*
|
|
110
|
+
* @param name — the event name.
|
|
111
|
+
* @param args — listener arguments; the final one is the innermost `next`.
|
|
112
|
+
* @returns the outermost listener's return value.
|
|
113
|
+
*/
|
|
114
|
+
waterfall<K extends keyof Events>(name: K, ...args: Parameters<Events[K]>): ReturnType<Events[K]>
|
|
115
|
+
waterfall<K extends keyof Events>(thisArg: NoInfer<ThisType<Events[K]>>, name: K, ...args: Parameters<Events[K]>): ReturnType<Events[K]>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
分发一个事件,其最后一个参数是续接执行的 `next` 回调。
|
|
119
|
+
|
|
120
|
+
每个监听器都会包装调用链的其余部分:调用 `next()` 会执行下一个监听器,最终执行内置行为;不调用则会否决后续执行。
|
|
121
|
+
|
|
122
|
+
- `name`:事件名称。
|
|
123
|
+
- `args`:监听器参数;最后一个参数是最内层的 `next`。
|
|
124
|
+
|
|
125
|
+
**返回值**:最外层监听器的返回值。
|
|
126
|
+
|
|
127
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L86)
|
|
128
|
+
|
|
129
|
+
### ctx.on(name, listener, options?)
|
|
130
|
+
|
|
131
|
+
```ts cordis-catalog
|
|
132
|
+
/**
|
|
133
|
+
* Register an event listener owned by the current fiber.
|
|
134
|
+
*
|
|
135
|
+
* @param name — the event name to listen for.
|
|
136
|
+
* @param listener — called with the dispatch arguments.
|
|
137
|
+
* @param options — listener options; a boolean is shorthand for `prepend`.
|
|
138
|
+
* @returns a disposer removing the listener; `true` if it was still registered.
|
|
139
|
+
*/
|
|
140
|
+
on<K extends keyof Events>(name: K, listener: Events[K], options?: boolean | EventOptions): () => boolean
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
注册一个归当前 fiber 所有的事件监听器。
|
|
144
|
+
|
|
145
|
+
- `name`:要监听的事件名称。
|
|
146
|
+
- `listener`:使用分发参数调用的监听器。
|
|
147
|
+
- `options`:监听器选项;布尔值可作为 `prepend` 的简写。
|
|
148
|
+
|
|
149
|
+
**返回值**:一个用于移除监听器的资源释放函数;如果调用该函数时监听器仍处于注册状态,则返回 `true`。
|
|
150
|
+
|
|
151
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L97)
|
|
152
|
+
|
|
153
|
+
### ctx.once(name, listener, options?)
|
|
154
|
+
|
|
155
|
+
```ts cordis-catalog
|
|
156
|
+
/**
|
|
157
|
+
* Same as `on()`, but the listener disposes itself after its first call.
|
|
158
|
+
*
|
|
159
|
+
* @param name — the event name to listen for.
|
|
160
|
+
* @param listener — called at most once with the dispatch arguments.
|
|
161
|
+
* @param options — listener options; a boolean is shorthand for `prepend`.
|
|
162
|
+
* @returns a disposer removing the listener; `true` if it was still registered.
|
|
163
|
+
*/
|
|
164
|
+
once<K extends keyof Events>(name: K, listener: Events[K], options?: boolean | EventOptions): () => boolean
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
与 `on()` 相同,但监听器在首次调用后会自行注销。
|
|
168
|
+
|
|
169
|
+
- `name`:要监听的事件名称。
|
|
170
|
+
- `listener`:使用分发参数调用,最多调用一次。
|
|
171
|
+
- `options`:监听器选项;布尔值可作为 `prepend` 的简写。
|
|
172
|
+
|
|
173
|
+
**返回值**:一个用于移除监听器的资源释放函数;如果调用该函数时监听器仍处于注册状态,则返回 `true`。
|
|
174
|
+
|
|
175
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L106)
|
|
176
|
+
|
|
177
|
+
## EventOptions
|
|
178
|
+
|
|
179
|
+
`ctx.on()` 和 `ctx.once()` 接受的选项。
|
|
180
|
+
|
|
181
|
+
```ts cordis-catalog
|
|
182
|
+
/** Options accepted by `ctx.on()` and `ctx.once()`. */
|
|
183
|
+
interface EventOptions {
|
|
184
|
+
/** Add the listener before existing listeners for the same event. */
|
|
185
|
+
prepend?: boolean
|
|
186
|
+
/** Receive the event regardless of context filter checks. */
|
|
187
|
+
global?: boolean
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L112)
|
|
192
|
+
|
|
193
|
+
## DispatchMode
|
|
194
|
+
|
|
195
|
+
事件服务使用的事件分发策略。
|
|
196
|
+
|
|
197
|
+
`emit` 运行同步监听器但不等待它们,`parallel` 同时等待所有监听器,`serial` 依次等待监听器直至其中一个提前终止分发,`bail` 遇到第一个同步提前终止值时停止,`waterfall` 则围绕最终的 `next` 回调组合监听器。
|
|
198
|
+
|
|
199
|
+
```ts cordis-catalog
|
|
200
|
+
/**
|
|
201
|
+
* Event dispatch strategy used by the event service.
|
|
202
|
+
*
|
|
203
|
+
* `emit` runs synchronous listeners without awaiting them, `parallel` awaits
|
|
204
|
+
* all listeners together, `serial` awaits them in order until one bails,
|
|
205
|
+
* `bail` stops on the first synchronous bail value, and `waterfall` composes
|
|
206
|
+
* listeners around a final `next` callback.
|
|
207
|
+
*/
|
|
208
|
+
type DispatchMode = 'emit' | 'parallel' | 'serial' | 'bail' | 'waterfall'
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts#L32)
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
---
|
|
2
|
+
editSource: "docs/cordis-api/fiber.zh.md"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<!-- 英文源文件由 scripts/gen-cordis-catalog.ts 生成;本中文文件是通过双语配对维护的经评审对侧。
|
|
6
|
+
更新时先运行 `pnpm run gen-cordis-catalog` 更新英文,再更新本文件并运行 `pnpm run verify-translation-pairing --write docs/cordis-api/fiber.md` 重新记录配对。 -->
|
|
7
|
+
|
|
8
|
+
# Fiber
|
|
9
|
+
|
|
10
|
+
fiber 是一个已加载的插件实例,包含其生命周期状态、经过校验的配置以及已注册的作用。`ctx.fiber` 是当前 fiber,`ctx.effect()` 会将调用委托给它。
|
|
11
|
+
|
|
12
|
+
### ctx.effect(execute, label?)
|
|
13
|
+
|
|
14
|
+
```ts cordis-catalog
|
|
15
|
+
/**
|
|
16
|
+
* Register a cleanup-aware effect on this fiber.
|
|
17
|
+
*
|
|
18
|
+
* `execute` runs immediately; the disposers it produces are collected and
|
|
19
|
+
* run (in reverse order) either when the returned disposer is called or
|
|
20
|
+
* when the fiber unloads, whichever comes first. Calling the disposer twice
|
|
21
|
+
* is a no-op. Throws `CordisError('INACTIVE_EFFECT')` if the fiber is
|
|
22
|
+
* already disposed, and `TypeError` if `execute` returns an invalid shape.
|
|
23
|
+
*
|
|
24
|
+
* @param execute — the effect body; see {@link Effect} for accepted shapes.
|
|
25
|
+
* @param label — effect label shown in `getEffects()` diagnostics.
|
|
26
|
+
* @returns a disposer that tears the effect down and settles once done.
|
|
27
|
+
*/
|
|
28
|
+
effect(execute: () => SyncEffect, label?: string): Disposable<Promise<void>>
|
|
29
|
+
effect(execute: () => Effect, label?: string): AsyncDisposable<Promise<void>>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
在此 fiber 上注册一个支持清理的作用。
|
|
33
|
+
|
|
34
|
+
`execute` 会立即运行;它产生的清理函数将被收集,并在调用返回的清理函数或卸载 fiber 时按相反顺序运行,以先发生者为准。重复调用清理函数不会产生任何效果。如果 fiber 已经 dispose(资源释放),则抛出 `CordisError('INACTIVE_EFFECT')`;如果结构无效,则抛出 `TypeError`,表示 `execute` 返回了不受支持的结果。
|
|
35
|
+
|
|
36
|
+
- `execute`:作用主体;可接受的结构见 `Effect`。
|
|
37
|
+
- `label`:在 `getEffects()` 诊断信息中显示的作用标签。
|
|
38
|
+
|
|
39
|
+
**返回**一个用于撤销该作用的清理函数,并在清理完成后结算。
|
|
40
|
+
|
|
41
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L415)
|
|
42
|
+
|
|
43
|
+
### ctx.fiber
|
|
44
|
+
|
|
45
|
+
```ts cordis-catalog
|
|
46
|
+
/** The fiber (plugin runtime instance) that owns this context. */
|
|
47
|
+
fiber: Fiber
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
拥有此上下文的 fiber(插件运行时实例)。
|
|
51
|
+
|
|
52
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L12)
|
|
53
|
+
|
|
54
|
+
## Fiber 类
|
|
55
|
+
|
|
56
|
+
单次插件应用的运行时实例。
|
|
57
|
+
|
|
58
|
+
fiber 会跟踪 `ctx.plugin()` 返回的插件上下文所对应的依赖状态、经过校验的配置、生命周期作用和清理操作。
|
|
59
|
+
|
|
60
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L184)
|
|
61
|
+
|
|
62
|
+
### fiber.uid
|
|
63
|
+
|
|
64
|
+
```ts cordis-catalog
|
|
65
|
+
/** Unique id within the registry; 0 for the root fiber, `null` once disposed. */
|
|
66
|
+
public uid: number | null
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
在注册表中的唯一 id;根 fiber 的 id 为 0,dispose 后为 `null`。
|
|
70
|
+
|
|
71
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L186)
|
|
72
|
+
|
|
73
|
+
### fiber.ctx
|
|
74
|
+
|
|
75
|
+
```ts cordis-catalog
|
|
76
|
+
/** The context this fiber's plugin runs in (extends the parent context). */
|
|
77
|
+
public readonly ctx: Context
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
此 fiber 的插件运行所在的上下文(扩展自父上下文)。
|
|
81
|
+
|
|
82
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L188)
|
|
83
|
+
|
|
84
|
+
### fiber.config
|
|
85
|
+
|
|
86
|
+
```ts cordis-catalog
|
|
87
|
+
/** The validated plugin config (updated by `update()`). */
|
|
88
|
+
public config: any
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
经过校验的插件配置(由 `update()` 更新)。
|
|
92
|
+
|
|
93
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L190)
|
|
94
|
+
|
|
95
|
+
### fiber.state
|
|
96
|
+
|
|
97
|
+
```ts cordis-catalog
|
|
98
|
+
/** Current lifecycle state; transitions emit `internal/status`. */
|
|
99
|
+
public state
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
当前生命周期状态;状态转换会发出 `internal/status`。
|
|
103
|
+
|
|
104
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L194)
|
|
105
|
+
|
|
106
|
+
### fiber.dispose
|
|
107
|
+
|
|
108
|
+
```ts cordis-catalog
|
|
109
|
+
/** Dispose this fiber: unload the plugin, then settle once cleanup finished. */
|
|
110
|
+
public readonly dispose: () => Promise<void>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
dispose 此 fiber:卸载插件,并在清理完成后结算。
|
|
114
|
+
|
|
115
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L196)
|
|
116
|
+
|
|
117
|
+
### fiber.store
|
|
118
|
+
|
|
119
|
+
```ts cordis-catalog
|
|
120
|
+
/** Snapshot of required service implementations while loaded; `undefined` otherwise. */
|
|
121
|
+
public store: Dict<Impl> | undefined
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
加载期间所需服务实现的快照;其他情况下为 `undefined`。
|
|
125
|
+
|
|
126
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L198)
|
|
127
|
+
|
|
128
|
+
### fiber.inertia
|
|
129
|
+
|
|
130
|
+
```ts cordis-catalog
|
|
131
|
+
/** The in-flight load/unload transition, if one is currently running. */
|
|
132
|
+
public inertia: Promise<void> | undefined
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
当前正在进行的加载或卸载转换;如果没有此类转换,则为 undefined。
|
|
136
|
+
|
|
137
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L200)
|
|
138
|
+
|
|
139
|
+
### fiber.name
|
|
140
|
+
|
|
141
|
+
```ts cordis-catalog
|
|
142
|
+
/** The plugin's display name, inherited from the nearest named ancestor, else `'root'`. */
|
|
143
|
+
get name()
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
插件的显示名称,继承自最近的具名祖先;如果不存在,则为 `'root'`。
|
|
147
|
+
|
|
148
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L336)
|
|
149
|
+
|
|
150
|
+
### fiber.assertActive()
|
|
151
|
+
|
|
152
|
+
```ts cordis-catalog
|
|
153
|
+
/**
|
|
154
|
+
* Throw if the fiber has already been disposed.
|
|
155
|
+
*
|
|
156
|
+
* @returns nothing when the fiber is still active.
|
|
157
|
+
* @throws {CordisError} `INACTIVE_EFFECT` when the fiber's uid has been cleared.
|
|
158
|
+
*/
|
|
159
|
+
assertActive()
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
如果 fiber 已经 dispose,则抛出异常。
|
|
163
|
+
|
|
164
|
+
**返回**:fiber 仍处于活动状态时不返回任何内容。
|
|
165
|
+
|
|
166
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L351)
|
|
167
|
+
|
|
168
|
+
### fiber.effect(execute, label?)
|
|
169
|
+
|
|
170
|
+
```ts cordis-catalog
|
|
171
|
+
/**
|
|
172
|
+
* Register a cleanup-aware effect on this fiber.
|
|
173
|
+
*
|
|
174
|
+
* `execute` runs immediately; the disposers it produces are collected and
|
|
175
|
+
* run (in reverse order) either when the returned disposer is called or
|
|
176
|
+
* when the fiber unloads, whichever comes first. Calling the disposer twice
|
|
177
|
+
* is a no-op. Throws `CordisError('INACTIVE_EFFECT')` if the fiber is
|
|
178
|
+
* already disposed, and `TypeError` if `execute` returns an invalid shape.
|
|
179
|
+
*
|
|
180
|
+
* @param execute — the effect body; see {@link Effect} for accepted shapes.
|
|
181
|
+
* @param label — effect label shown in `getEffects()` diagnostics.
|
|
182
|
+
* @returns a disposer that tears the effect down and settles once done.
|
|
183
|
+
*/
|
|
184
|
+
effect(execute: () => SyncEffect, label?: string): Disposable<Promise<void>>
|
|
185
|
+
effect(execute: () => Effect, label?: string): AsyncDisposable<Promise<void>>
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
在此 fiber 上注册一个支持清理的作用。
|
|
189
|
+
|
|
190
|
+
`execute` 会立即运行;它产生的清理函数将被收集,并在调用返回的清理函数或卸载 fiber 时按相反顺序运行,以先发生者为准。重复调用清理函数不会产生任何效果。如果 fiber 已经 dispose,则抛出 `CordisError('INACTIVE_EFFECT')`;如果结构无效,则抛出 `TypeError`,表示 `execute` 返回了不受支持的结果。
|
|
191
|
+
|
|
192
|
+
- `execute`:作用主体;可接受的结构见 `Effect`。
|
|
193
|
+
- `label`:在 `getEffects()` 诊断信息中显示的作用标签。
|
|
194
|
+
|
|
195
|
+
**返回**一个用于撤销该作用的清理函数,并在清理完成后结算。
|
|
196
|
+
|
|
197
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L415)
|
|
198
|
+
|
|
199
|
+
### fiber.getEffects()
|
|
200
|
+
|
|
201
|
+
```ts cordis-catalog
|
|
202
|
+
/**
|
|
203
|
+
* Return metadata for currently registered effects.
|
|
204
|
+
*
|
|
205
|
+
* @returns one {@link EffectMeta} tree per labeled live effect.
|
|
206
|
+
*/
|
|
207
|
+
getEffects()
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
返回当前已注册作用的元数据。
|
|
211
|
+
|
|
212
|
+
**返回**:每个带标签的活动作用对应一棵 `EffectMeta` 树。
|
|
213
|
+
|
|
214
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L568)
|
|
215
|
+
|
|
216
|
+
### fiber.await()
|
|
217
|
+
|
|
218
|
+
```ts cordis-catalog
|
|
219
|
+
/**
|
|
220
|
+
* Wait for current lifecycle work and rethrow startup errors.
|
|
221
|
+
*
|
|
222
|
+
* @returns this fiber, once it has settled into a stable state.
|
|
223
|
+
* @throws the config-validation or plugin-startup error, if any.
|
|
224
|
+
*/
|
|
225
|
+
async await()
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
等待当前生命周期工作完成,并重新抛出启动错误。
|
|
229
|
+
|
|
230
|
+
**返回**:进入稳定状态后的此 fiber。
|
|
231
|
+
|
|
232
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L704)
|
|
233
|
+
|
|
234
|
+
### fiber.restart()
|
|
235
|
+
|
|
236
|
+
```ts cordis-catalog
|
|
237
|
+
/**
|
|
238
|
+
* Dispose and immediately reload this plugin with its current config.
|
|
239
|
+
*
|
|
240
|
+
* @returns a promise resolving once the reload settled.
|
|
241
|
+
* @throws {CordisError} `INACTIVE_EFFECT` when the fiber is already disposed.
|
|
242
|
+
*/
|
|
243
|
+
async restart()
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
dispose 此插件,并立即使用其当前配置重新加载。
|
|
247
|
+
|
|
248
|
+
**返回**一个在重新加载完成后兑现的 promise。
|
|
249
|
+
|
|
250
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L718)
|
|
251
|
+
|
|
252
|
+
### fiber.update(config, noSave?)
|
|
253
|
+
|
|
254
|
+
```ts cordis-catalog
|
|
255
|
+
/**
|
|
256
|
+
* Validate and apply new config, then restart the plugin.
|
|
257
|
+
*
|
|
258
|
+
* Runs the `internal/update` waterfall first, so update hooks (and HMR)
|
|
259
|
+
* can veto or replace the restart.
|
|
260
|
+
*
|
|
261
|
+
* @param config — the new raw config; validated before anything restarts.
|
|
262
|
+
* @param noSave — hint for persistence hooks not to write the change back.
|
|
263
|
+
* @returns the update waterfall result; the default restart returns a promise.
|
|
264
|
+
* @throws when validation, an update listener, or the restarted plugin fails.
|
|
265
|
+
*/
|
|
266
|
+
update(config: any, noSave = false)
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
校验并应用新配置,然后重新启动插件。
|
|
270
|
+
|
|
271
|
+
首先运行 `internal/update` waterfall(瀑布式事件),因此更新钩子(以及 HMR(热模块替换))可以否决或取代重新启动操作。
|
|
272
|
+
|
|
273
|
+
- `config`:新的原始配置;在任何内容重新启动前进行校验。
|
|
274
|
+
- `noSave`:提示持久化钩子不要写回此变更。
|
|
275
|
+
|
|
276
|
+
**返回**更新 waterfall 的结果;默认的重新启动操作返回一个 promise。
|
|
277
|
+
|
|
278
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L736)
|
|
279
|
+
|
|
280
|
+
## Effect
|
|
281
|
+
|
|
282
|
+
`ctx.effect()` 和插件启动所接受的作用主体结果。
|
|
283
|
+
|
|
284
|
+
可以是单个清理函数、兑现为清理函数的 promise,或生成多个清理函数的(可能为异步的)可迭代对象。生成器作用会在每个清理函数产生时将其注册。
|
|
285
|
+
|
|
286
|
+
```ts cordis-catalog
|
|
287
|
+
/**
|
|
288
|
+
* Effect body result accepted by `ctx.effect()` and plugin startup.
|
|
289
|
+
*
|
|
290
|
+
* Either a single disposer, a promise of one, or a (possibly async) iterable
|
|
291
|
+
* yielding several — generator effects register each yielded disposer as it
|
|
292
|
+
* is produced.
|
|
293
|
+
*/
|
|
294
|
+
type Effect<T = any> =
|
|
295
|
+
| SyncEffect<T>
|
|
296
|
+
| AsyncEffect<T>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L83)
|
|
300
|
+
|
|
301
|
+
## Disposable
|
|
302
|
+
|
|
303
|
+
作用返回的函数,用于在资源释放期间释放资源。
|
|
304
|
+
|
|
305
|
+
拥有该函数的 fiber 卸载时,清理函数会按注册的相反顺序运行;清理函数可以是异步的,此时卸载过程会等待其完成。
|
|
306
|
+
|
|
307
|
+
```ts cordis-catalog
|
|
308
|
+
/**
|
|
309
|
+
* Function returned by an effect to release resources during disposal.
|
|
310
|
+
*
|
|
311
|
+
* Disposers run in reverse registration order when the owning fiber unloads;
|
|
312
|
+
* they may be async, in which case unloading awaits them.
|
|
313
|
+
*/
|
|
314
|
+
type Disposable<T = any> = () => T
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L74)
|
|
318
|
+
|
|
319
|
+
## EffectMeta
|
|
320
|
+
|
|
321
|
+
用于在诊断信息中公开嵌套作用标签的树节点。
|
|
322
|
+
|
|
323
|
+
```ts cordis-catalog
|
|
324
|
+
/** Tree node used to expose nested effect labels for diagnostics. */
|
|
325
|
+
interface EffectMeta {
|
|
326
|
+
/** Human-readable effect label, e.g. `ctx.on("event")` or `ctx.provide("name")`. */
|
|
327
|
+
label: string
|
|
328
|
+
/** Metadata of nested effects registered while this effect ran. */
|
|
329
|
+
children: EffectMeta[]
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L96)
|
|
334
|
+
|
|
335
|
+
## CordisError
|
|
336
|
+
|
|
337
|
+
具有稳定机器可读错误码的框架错误。
|
|
338
|
+
|
|
339
|
+
```ts cordis-catalog
|
|
340
|
+
/** Framework error with a stable machine-readable code. */
|
|
341
|
+
class CordisError extends Error {
|
|
342
|
+
/**
|
|
343
|
+
* @param code — the stable error code; also the default message.
|
|
344
|
+
* @param message — optional human-readable override.
|
|
345
|
+
*/
|
|
346
|
+
constructor(public code: CordisError.Code, message?: string)
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/** Cordis error code definitions. */
|
|
350
|
+
namespace CordisError {
|
|
351
|
+
export type Code = keyof typeof Code
|
|
352
|
+
|
|
353
|
+
export const Code = {
|
|
354
|
+
INACTIVE_EFFECT: 'cannot create effect on inactive context',
|
|
355
|
+
} as const
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L157)
|
|
360
|
+
|
|
361
|
+
## ValidationError
|
|
362
|
+
|
|
363
|
+
插件配置未通过 standard-schema 校验时抛出的错误。
|
|
364
|
+
|
|
365
|
+
```ts cordis-catalog
|
|
366
|
+
/** Error raised when plugin configuration fails standard-schema validation. */
|
|
367
|
+
class ValidationError extends TypeError {
|
|
368
|
+
name = 'ValidationError'
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Build the aggregated message from schema issues.
|
|
372
|
+
*
|
|
373
|
+
* @param issues — the standard-schema issues, one message line each.
|
|
374
|
+
*/
|
|
375
|
+
constructor(issues: readonly StandardSchemaV1.Issue[])
|
|
376
|
+
}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
[源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L19)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
editSource: "docs/cordis-api/inherited.md"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<!-- Generated by scripts/gen-cordis-catalog.ts — do not edit by hand.
|
|
6
|
+
Run `pnpm run gen-cordis-catalog` to regenerate. -->
|
|
7
|
+
|
|
8
|
+
# Inherited Cordis API
|
|
9
|
+
|
|
10
|
+
The framework `ctx` members and events every plugin sees beyond the harness tier — pinned vendor source ([vendoring policy](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/README.md)), summarized tersely so the harness pages stay focused on repository-owned vocabulary. Detailed Context, Fiber, Registry, and Service APIs are generated in [context.md](./context.md), [fiber.md](./fiber.md), [registry.md](./registry.md), and [service.md](./service.md); the event-dispatch methods in [events.md](./events.md).
|
|
11
|
+
|
|
12
|
+
This file is GENERATED from source (`scripts/gen-cordis-catalog.ts`) and verified fresh by `pnpm run verify-cordis-catalog` (part of `doc-sync`) — do not edit it by hand. Signature blocks use a `ts cordis-catalog` fence and include the original source JSDoc immediately before each event or service method. doc-typecheck skips these bare declaration fragments; type names in a signature link to the page that documents them.
|
|
13
|
+
|
|
14
|
+
## Inherited `ctx` members (cordis core + loader/hmr/timer)
|
|
15
|
+
|
|
16
|
+
- `ctx.on / ctx.once` — Register an event listener (disposable). ([`vendor/cordis/src/events.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
17
|
+
- `ctx.emit / ctx.parallel / ctx.serial / ctx.bail / ctx.waterfall` — Dispatch an event (sync / awaited / first-bail / short-circuit chain). ([`vendor/cordis/src/events.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
18
|
+
- `ctx.plugin / ctx.inject` — Load a plugin / declare required services. ([`vendor/cordis/src/registry.ts:164`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/registry.ts))
|
|
19
|
+
- `ctx.effect` — Register a disposable side effect tied to the fiber. ([`vendor/cordis/src/fiber.ts:9`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts))
|
|
20
|
+
- `ctx.get / ctx.set / ctx.provide / ctx.accessor / ctx.mixin` — Low-level service-store access and binding. ([`vendor/cordis/src/reflect.ts:7`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/reflect.ts))
|
|
21
|
+
- `ctx.extend / ctx.isolate / ctx.intercept` — Derive a child context (scoped services / isolation / interception). ([`vendor/cordis/src/context.ts:42`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/context.ts))
|
|
22
|
+
- `ctx.root / ctx.scope / ctx.fiber / ctx.registry / ctx.reflect / ctx.events / ctx.logger` — Ambient handles onto the running context graph. ([`vendor/cordis/src/context.ts:16`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/context.ts))
|
|
23
|
+
- `ctx.timer (+ interval / timeout / throttle / debounce)` — Disposable timer helpers. The `timer` key is provided at runtime; the four supported helpers are mixed onto ctx directly (declared via Pick). ([`vendor/timer/src/index.ts:4`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/timer/src/index.ts))
|
|
24
|
+
- `ctx.loader` — The config Loader that booted the app (present under the loader). ([`vendor/loader/src/index.ts:30`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/loader/src/index.ts))
|
|
25
|
+
- `ctx.hmr` — The hot-module-reload watcher (present under the hmr plugin). ([`vendor/hmr/src/index.ts:15`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/hmr/src/index.ts))
|
|
26
|
+
|
|
27
|
+
## Inherited events (cordis core + loader/hmr/timer)
|
|
28
|
+
|
|
29
|
+
- `internal/plugin` — A plugin fiber was created. ([`vendor/cordis/src/events.ts:328`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
30
|
+
- `internal/status` — A fiber changed lifecycle state. ([`vendor/cordis/src/events.ts:330`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
31
|
+
- `internal/service` — Interception hook for a service binding (no core producer). ([`vendor/cordis/src/events.ts:332`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
32
|
+
- `internal/update` — Waterfall: a fiber config update is being applied. ([`vendor/cordis/src/events.ts:334`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
33
|
+
- `internal/get` — Waterfall: a service is being read from the store. ([`vendor/cordis/src/events.ts:336`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
34
|
+
- `internal/set` — Waterfall: a service is being written to the store. ([`vendor/cordis/src/events.ts:338`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
35
|
+
- `internal/listener` — A listener was registered. ([`vendor/cordis/src/events.ts:340`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
36
|
+
- `internal/dispatch` — An event is being dispatched to listeners. ([`vendor/cordis/src/events.ts:342`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/events.ts))
|
|
37
|
+
- `hmr/change` — A watched source file changed on disk. ([`vendor/hmr/src/index.ts:20`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/hmr/src/index.ts))
|
|
38
|
+
- `hmr/reload` — Plugins are being reloaded after a change. ([`vendor/hmr/src/index.ts:21`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/hmr/src/index.ts))
|
|
39
|
+
- `exit` — The process is exiting on a signal. ([`vendor/loader/src/index.ts:23`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/loader/src/index.ts))
|
|
40
|
+
- `loader/config-update` — The loader config tree changed. ([`vendor/loader/src/index.ts:24`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/loader/src/index.ts))
|
|
41
|
+
- `loader/entry-init` — A config entry is being initialized. ([`vendor/loader/src/index.ts:25`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/loader/src/index.ts))
|
|
42
|
+
- `loader/partial-dispose` — An entry is being partially disposed on reload. ([`vendor/loader/src/index.ts:26`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/loader/src/index.ts))
|
|
43
|
+
- `loader/patch-context` — A context is being patched during a reload. ([`vendor/loader/src/index.ts:27`](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/loader/src/index.ts))
|