@sayoriqwq/effect-harness 0.0.5 → 0.1.1
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/README.md +9 -77
- package/diagnostics/effect-routes.md +6 -0
- package/diagnostics/index.md +10 -0
- package/diagnostics/tsgo-routes.md +5 -0
- package/dist/src/eslint.d.ts +57 -0
- package/dist/src/eslint.js +42 -0
- package/dist/src/eslint.js.map +1 -0
- package/dist/src/index.d.ts +2 -8
- package/dist/src/index.js +2 -15
- package/dist/src/index.js.map +1 -1
- package/dist/src/prelude.d.ts +6 -0
- package/dist/src/prelude.js +161 -0
- package/dist/src/prelude.js.map +1 -0
- package/package.json +18 -17
- package/prelude-assets/effect/managed/docs/diagnostics.md +6 -0
- package/prelude-assets/effect/managed/docs/editor-policy.md +5 -0
- package/prelude-assets/effect/managed/docs/effect-code.md +5 -0
- package/prelude-assets/effect/managed/docs/index.md +14 -0
- package/prelude-assets/effect/managed/docs/managed-surfaces.md +5 -0
- package/prelude-assets/effect/managed/docs/package-config.md +20 -0
- package/prelude-assets/effect/managed/docs/quality-policy.md +5 -0
- package/prelude-assets/effect/managed/docs/source-identity.md +5 -0
- package/prelude-assets/guidance/eslint.md +15 -0
- package/HARNESS.md +0 -66
- package/dist/bin/effect-harness.d.ts +0 -2
- package/dist/bin/effect-harness.js +0 -23
- package/dist/bin/effect-harness.js.map +0 -1
- package/dist/src/cli/Main.d.ts +0 -7
- package/dist/src/cli/Main.js +0 -45
- package/dist/src/cli/Main.js.map +0 -1
- package/dist/src/harness/Errors.d.ts +0 -24
- package/dist/src/harness/Errors.js +0 -26
- package/dist/src/harness/Errors.js.map +0 -1
- package/dist/src/harness/Guardrails.d.ts +0 -7
- package/dist/src/harness/Guardrails.js +0 -50
- package/dist/src/harness/Guardrails.js.map +0 -1
- package/dist/src/harness/Model.d.ts +0 -52
- package/dist/src/harness/Model.js +0 -170
- package/dist/src/harness/Model.js.map +0 -1
- package/dist/src/harness/ModuleSources.d.ts +0 -5
- package/dist/src/harness/ModuleSources.js +0 -47
- package/dist/src/harness/ModuleSources.js.map +0 -1
- package/dist/src/harness/ProviderDiscovery.d.ts +0 -255
- package/dist/src/harness/ProviderDiscovery.js +0 -242
- package/dist/src/harness/ProviderDiscovery.js.map +0 -1
- package/dist/src/harness/SourcePin.d.ts +0 -4
- package/dist/src/harness/SourcePin.js +0 -214
- package/dist/src/harness/SourcePin.js.map +0 -1
- package/dist/src/harness/verify/JsonFields.d.ts +0 -1
- package/dist/src/harness/verify/JsonFields.js +0 -4
- package/dist/src/harness/verify/JsonFields.js.map +0 -1
- package/dist/src/harness/verify/Pipeline.d.ts +0 -7
- package/dist/src/harness/verify/Pipeline.js +0 -55
- package/dist/src/harness/verify/Pipeline.js.map +0 -1
- package/dist/src/harness/verify/ProviderProfile.d.ts +0 -3
- package/dist/src/harness/verify/ProviderProfile.js +0 -732
- package/dist/src/harness/verify/ProviderProfile.js.map +0 -1
- package/dist/src/harness/verify/ProviderRepository.d.ts +0 -4
- package/dist/src/harness/verify/ProviderRepository.js +0 -127
- package/dist/src/harness/verify/ProviderRepository.js.map +0 -1
- package/dist/src/harness/verify/Tsgo.d.ts +0 -3
- package/dist/src/harness/verify/Tsgo.js +0 -166
- package/dist/src/harness/verify/Tsgo.js.map +0 -1
- package/dist/src/harness/verify/TsgoMetadata.d.ts +0 -4
- package/dist/src/harness/verify/TsgoMetadata.js +0 -50
- package/dist/src/harness/verify/TsgoMetadata.js.map +0 -1
- package/dist/src/harness/verify/TsgoPolicy.d.ts +0 -208
- package/dist/src/harness/verify/TsgoPolicy.js +0 -143
- package/dist/src/harness/verify/TsgoPolicy.js.map +0 -1
- package/dist/src/harness/verify/TsgoSuppressions.d.ts +0 -2
- package/dist/src/harness/verify/TsgoSuppressions.js +0 -24
- package/dist/src/harness/verify/TsgoSuppressions.js.map +0 -1
- package/dist/src/harness/verify/VerifyStage.d.ts +0 -62
- package/dist/src/harness/verify/VerifyStage.js +0 -85
- package/dist/src/harness/verify/VerifyStage.js.map +0 -1
- package/dist/src/platform/Json.d.ts +0 -4
- package/dist/src/platform/Json.js +0 -16
- package/dist/src/platform/Json.js.map +0 -1
- package/dist/src/platform/Process.d.ts +0 -6
- package/dist/src/platform/Process.js +0 -35
- package/dist/src/platform/Process.js.map +0 -1
- package/harness/code.md +0 -83
- package/harness/diagnostic-layers.md +0 -94
- package/harness/effect-routes.md +0 -50
- package/harness/feedback-loop.md +0 -156
- package/harness/index.md +0 -83
- package/harness/offcial-guide.md +0 -50
- package/harness/offcial-migrate.md +0 -220
- package/harness/source.md +0 -91
- package/harness/tsgo-routes.md +0 -58
- package/harness/tsgo.md +0 -241
- package/provider/docs/diagnostics.md +0 -48
- package/provider/docs/discovery.md +0 -130
- package/provider/docs/editor-policy.md +0 -55
- package/provider/docs/effect-code.md +0 -41
- package/provider/docs/index.md +0 -48
- package/provider/docs/managed-surfaces.md +0 -51
- package/provider/docs/package-config.md +0 -71
- package/provider/docs/quality-policy.md +0 -68
- package/provider/docs/source-identity.md +0 -48
- package/provider/effect-harness.provider.json +0 -1021
- package/provider/index.md +0 -193
- package/provider/snippets/agents.md +0 -34
package/harness/feedback-loop.md
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
audience: [agent, human]
|
|
3
|
-
authors:
|
|
4
|
-
- codex
|
|
5
|
-
reviewed_by: []
|
|
6
|
-
purpose: 定义 effect-harness 第二阶段的 Codex feedback loop 和统一 verify pipeline。
|
|
7
|
-
status: active
|
|
8
|
-
sources:
|
|
9
|
-
- AGENTS.md
|
|
10
|
-
- HARNESS.md
|
|
11
|
-
- harness/index.md
|
|
12
|
-
- harness/offcial-guide.md
|
|
13
|
-
- harness/offcial-migrate.md
|
|
14
|
-
- harness/source.md
|
|
15
|
-
- harness/effect-routes.md
|
|
16
|
-
- harness/tsgo.md
|
|
17
|
-
- harness/tsgo-routes.md
|
|
18
|
-
- harness/diagnostic-layers.md
|
|
19
|
-
- src/harness/verify/Pipeline.ts
|
|
20
|
-
- src/harness/verify/VerifyStage.ts
|
|
21
|
-
- https://developers.openai.com/codex/learn/best-practices
|
|
22
|
-
- https://developers.openai.com/codex/prompting
|
|
23
|
-
- https://developers.openai.com/codex/guides/agents-md
|
|
24
|
-
updated: 2026-07-02
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
# Feedback Loop
|
|
28
|
-
|
|
29
|
-
## BASELINE
|
|
30
|
-
|
|
31
|
-
进入第二阶段 loop 前,当前仓库 MUST 已经满足干净基线。
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
pnpm verify
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
如果基线不为 0,MUST 先修复当前失败,再开始新的代码或文档修改。
|
|
38
|
-
|
|
39
|
-
`pnpm verify` 是唯一完成命令。`source:verify`、`effect:verify`、`typecheck`、`test`、`lint`
|
|
40
|
-
和 `knip` 只作为局部排错入口,不作为完成态替代命令。
|
|
41
|
-
|
|
42
|
-
`pnpm verify` 同时是 self-conformance gate。它证明 provider repository 符合自己的 exported
|
|
43
|
-
harness contract,但不生成 `.prelude/**` 或 Prelude target lifecycle state。
|
|
44
|
-
|
|
45
|
-
## ROUTE_TABLE
|
|
46
|
-
|
|
47
|
-
Codex 在本仓写 Effect 程序逻辑,或修改 source route、tsgo policy、provider profile、
|
|
48
|
-
verify pipeline、harness 边界时,MUST 按以下闭环执行:
|
|
49
|
-
|
|
50
|
-
1. 明确任务意图和涉及模块。
|
|
51
|
-
2. 从 `harness/index.md` 找到对应路线。
|
|
52
|
-
3. 按 `harness/effect-routes.md` 或 `harness/tsgo-routes.md` 读取 pinned source。
|
|
53
|
-
4. 做一轮最小修改。
|
|
54
|
-
5. 运行 `pnpm verify`。
|
|
55
|
-
6. 如果失败,按失败 stage 的 route 回到对应文档和 source 修复。
|
|
56
|
-
7. 重复到 `pnpm verify` 为 0。
|
|
57
|
-
8. review diff,确认没有绕过 strict policy。
|
|
58
|
-
|
|
59
|
-
MUST NOT 通过 suppress、override、恢复旧口径或从 `repos/**` import 来让 loop 变绿。
|
|
60
|
-
|
|
61
|
-
agent 默认从 `harness/index.md` 和 route tables 选择读取路径。这里不维护额外 task intake
|
|
62
|
-
分类,也不把任务强行归入单选 kind。
|
|
63
|
-
|
|
64
|
-
如果修改前判断和失败后的 stage route 冲突,MUST 服从 failed stage route。
|
|
65
|
-
|
|
66
|
-
## VERIFY_PIPELINE
|
|
67
|
-
|
|
68
|
-
`pnpm verify` 由 Effect pipeline 组织,入口是 `effect-harness verify --harness .`。
|
|
69
|
-
|
|
70
|
-
pipeline 采用 fail-fast。stage 按重要性排序,越接近真源和 harness contract 的检查越靠前。
|
|
71
|
-
失败输出 MUST 包含 code-defined stage tag、title、route、routeHint 和底层工具原始输出。
|
|
72
|
-
|
|
73
|
-
stage 真源是 `src/harness/verify/VerifyStage.ts`。本节只是 agent-readable projection。
|
|
74
|
-
|
|
75
|
-
| Stage | Route | Summary | Route Hint |
|
|
76
|
-
| --- | --- | --- | --- |
|
|
77
|
-
| `source-pins` | `harness/source.md` | Verify pinned GitHub subtree source entries. | Read the source-entry contract and fix Partita source pin drift. |
|
|
78
|
-
| `harness-contract` | `harness/index.md`、`harness/offcial-migrate.md`、`harness/feedback-loop.md` | Verify the provider repository contract and current harness baseline. | Read the harness index, migrate notes, and feedback loop contract before changing verifier behavior. |
|
|
79
|
-
| `tsgo-diagnostics` | `harness/tsgo.md`、`harness/tsgo-routes.md` | Run tsgo --noEmit and enforce zero Effect diagnostics. | Use the tsgo diagnostic output first; read the tsgo policy and routes only when the diagnostic is not enough. |
|
|
80
|
-
| `tests` | `harness/effect-routes.md` | Run the Effect test suite. | Read the Effect testing route and fix behavior through @effect/vitest patterns. |
|
|
81
|
-
| `lint` | `harness/diagnostic-layers.md`、`AGENTS.md`、`eslint.config.mjs` | Run ESLint with zero warnings. | Read the diagnostic layering contract, agent rules, and lint config, then fix repository boundary violations without duplicating tsgo semantics. |
|
|
82
|
-
| `knip` | `package.json` | Run knip and keep the package surface minimal. | Read package.json and source imports/exports, then remove unused package surface. |
|
|
83
|
-
|
|
84
|
-
## STAGE_SOURCE_PINS
|
|
85
|
-
|
|
86
|
-
失败时先读 `harness/source.md`。
|
|
87
|
-
|
|
88
|
-
这一 stage 验证 provider-internal source entries 仍然由 Partita GitHub subtree pin 管理。
|
|
89
|
-
|
|
90
|
-
常见修复方向:
|
|
91
|
-
|
|
92
|
-
- contract 中的 `github.ref`、`subtree.split` 和 git history trailer 必须一致。
|
|
93
|
-
- `repos/effect/` 和 `repos/tsgo/` 必须是 committed Git tree entries。
|
|
94
|
-
- anchor 和 agent route 必须存在。
|
|
95
|
-
- source prefix 不能变成 submodule 或 nested Git repository。
|
|
96
|
-
|
|
97
|
-
## STAGE_HARNESS_CONTRACT
|
|
98
|
-
|
|
99
|
-
失败时先读 `harness/index.md`、`harness/offcial-migrate.md` 和 `harness/feedback-loop.md`。
|
|
100
|
-
|
|
101
|
-
这一 stage 验证当前仓库仍处于新基线。
|
|
102
|
-
|
|
103
|
-
常见修复方向:
|
|
104
|
-
|
|
105
|
-
- provider profile 必须保留当前 package baseline、source identities 和 strict tsgo policy。
|
|
106
|
-
- provider repository 必须保持 self-conformance,不得 materialize `.prelude/**` 或 target
|
|
107
|
-
provider namespace。
|
|
108
|
-
- legacy surfaces 不能恢复。
|
|
109
|
-
- 应用代码和测试代码不能 import `repos/effect` 或 `repos/tsgo`。
|
|
110
|
-
- CLI 必须使用 `effect/unstable/cli`,不能恢复 `@effect/cli`。
|
|
111
|
-
- 当前 service definition baseline 是 `Context.Service`。
|
|
112
|
-
|
|
113
|
-
## STAGE_TSGO_DIAGNOSTICS
|
|
114
|
-
|
|
115
|
-
失败时先读 `harness/tsgo.md` 和 `harness/tsgo-routes.md`。
|
|
116
|
-
|
|
117
|
-
这一 stage 是 Effect 语义 feedback 的主入口。
|
|
118
|
-
|
|
119
|
-
修复时 SHOULD 先用 diagnostic name 定位 `repos/tsgo/_packages/tsgo/src/metadata.json`,再按
|
|
120
|
-
`harness/tsgo-routes.md` 查具体 rule、fixture 或 quickfix 行为。
|
|
121
|
-
|
|
122
|
-
MUST 修复代码或 policy。MUST NOT 用普通源码 suppressions、local override 或放宽 rule map
|
|
123
|
-
绕过失败。
|
|
124
|
-
|
|
125
|
-
## STAGE_TESTS
|
|
126
|
-
|
|
127
|
-
失败时先读 `harness/effect-routes.md` 中 testing 路线。
|
|
128
|
-
|
|
129
|
-
本仓测试使用 `@effect/vitest`。Effect 程序测试 SHOULD 使用 `it.effect`、`it.live` 或 `layer`
|
|
130
|
-
组织,不用普通 `vitest` 入口替代。
|
|
131
|
-
|
|
132
|
-
## STAGE_LINT
|
|
133
|
-
|
|
134
|
-
失败时先读 `harness/diagnostic-layers.md`、`AGENTS.md` 和 `eslint.config.mjs`。
|
|
135
|
-
|
|
136
|
-
lint stage 要求 0 error 和 0 warning。
|
|
137
|
-
|
|
138
|
-
lint 规则用于补 tsgo 未覆盖的仓库边界,例如 import boundary、CLI baseline、测试入口和
|
|
139
|
-
harness syntax-level guardrails。Effect 类型语义、Schema 语义、Layer 语义和 Effect-native
|
|
140
|
-
API 偏好由 `tsgo-diagnostics` stage 负责。
|
|
141
|
-
|
|
142
|
-
## STAGE_KNIP
|
|
143
|
-
|
|
144
|
-
失败时先读 `package.json` 和相关 source exports/imports。
|
|
145
|
-
|
|
146
|
-
knip stage 用于保持 provider package surface 最小。修复时 SHOULD 优先删除不需要的 exports、
|
|
147
|
-
imports 或 package fields,而不是为了 silence knip 添加无意义引用。
|
|
148
|
-
|
|
149
|
-
## DONE
|
|
150
|
-
|
|
151
|
-
一次 loop 只有在以下条件同时满足时才完成:
|
|
152
|
-
|
|
153
|
-
- `pnpm verify` 通过。
|
|
154
|
-
- 失败过的 stage 已按对应 route 修复。
|
|
155
|
-
- 没有新增 suppress、override、legacy surface 或 `repos/**` import。
|
|
156
|
-
- diff 已 review,确认没有把第二阶段扩展成 Prelude target lifecycle 实现或 repo skill/hook/rules 建设。
|
package/harness/index.md
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
audience: [agent, human]
|
|
3
|
-
authors:
|
|
4
|
-
- codex
|
|
5
|
-
reviewed_by: []
|
|
6
|
-
purpose: 组织 effect-harness harness 层文档入口,并路由到根级 provider contract。
|
|
7
|
-
status: active
|
|
8
|
-
sources: []
|
|
9
|
-
updated: 2026-07-02
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Harness Index
|
|
13
|
-
|
|
14
|
-
本仓文档按根级 `harness/` 和 `provider/` 拆分。`harness/` 维护本仓内部 source、route、
|
|
15
|
-
policy 和 verifier;`provider/` 维护 target 接入时消费的 contract、docs bundle 和 snippets。
|
|
16
|
-
|
|
17
|
-
本仓当前证明方式是 self-conformance。`pnpm verify` 验证 `effect-harness` 符合自己的
|
|
18
|
-
provider contract,但本仓不 self-materialize `.prelude/**` 或 Prelude target lifecycle surface。
|
|
19
|
-
|
|
20
|
-
## Documents
|
|
21
|
-
|
|
22
|
-
| 文档 | 职责 | 不承载 |
|
|
23
|
-
| --- | --- | --- |
|
|
24
|
-
| `harness/offcial-guide.md` | 维护 Effect 官方 `Coding with LLMs` 小节的当前源口径、官方链接和官方段落。 | 本仓实践、迁移顺序、本机集成、provider profile、verifier 和 Prelude target surfaces。 |
|
|
25
|
-
| `harness/offcial-migrate.md` | 描述官方三阶段建议在本仓的迁移状态、实现取舍、harness 与 provider 分层和集成判断。 | 官方原文镜像、通用 GitHub pin 流程和目标项目生命周期实现。 |
|
|
26
|
-
| `harness/feedback-loop.md` | 投影第二阶段 Codex feedback loop、code-defined verify stages、stage route 和完成条件。 | Provider target materialization、repo skill/hook/rules 建设和通用 Partita pin 流程。 |
|
|
27
|
-
| `harness/diagnostic-layers.md` | 定义 `tsgo-diagnostics`、`lint` 和 harness guardrails 的分层职责。 | strict tsgo rule map 本体、ESLint 规则实现和 package surface 维护。 |
|
|
28
|
-
| `harness/code.md` | 说明本仓 TypeScript code surface 的职责和非职责。 | target runtime、业务 Effect application 和 Prelude lifecycle 实现。 |
|
|
29
|
-
| `harness/source.md` | 描述本仓 provider-internal source entries、subtree pin 和 source boundary。 | 通用 Partita pin 设计和 Prelude target maintain 逻辑。 |
|
|
30
|
-
| `harness/effect-routes.md` | 给 agent 提供读取 `repos/effect/` 的路线表。 | 目标项目 runtime assets 和 provider record materialization。 |
|
|
31
|
-
| `harness/tsgo.md` | 记录 strict tsgo ADR、policy、rule map、exception 边界和 upgrade loop。 | Effect API 使用路线、通用 pin workflow 和 Prelude target lifecycle。 |
|
|
32
|
-
| `harness/tsgo-routes.md` | 给 agent 提供读取 `repos/tsgo/` 的路线表。 | strict policy 决策和 provider target projection。 |
|
|
33
|
-
| `provider/index.md` | 描述 target 消费 effect-harness provider profile、docs bundle 和 snippets 的方式。 | 本仓 source route 的完整内容和通用 pin workflow。 |
|
|
34
|
-
|
|
35
|
-
## Harness
|
|
36
|
-
|
|
37
|
-
这一层回答“`effect-harness` 本仓自己怎么运转”。
|
|
38
|
-
|
|
39
|
-
| 意图 | 先读 | 真源 | 验证 |
|
|
40
|
-
| --- | --- | --- | --- |
|
|
41
|
-
| 理解官方三阶段路线 | `harness/offcial-guide.md` | Effect 官方 Introduction / Coding with LLMs | 不适用 |
|
|
42
|
-
| 执行第二阶段 feedback loop | `harness/feedback-loop.md` | `src/harness/verify/VerifyStage.ts`、`src/harness/verify/Pipeline.ts`、`harness/effect-routes.md`、`harness/tsgo-routes.md` | `pnpm verify` |
|
|
43
|
-
| 理解第一阶段 source access 实现 | `harness/offcial-migrate.md` | `repos/effect.subtree.json`、`harness/source.md`、`harness/effect-routes.md`、provider profile | `pnpm verify` |
|
|
44
|
-
| 理解第三阶段 LSP/tsgo 实现 | `harness/offcial-migrate.md`、`harness/tsgo.md` | `repos/tsgo.subtree.json`、`repos/tsgo/_packages/tsgo/src/metadata.json`、`tsconfig.json`、provider profile | `pnpm verify` |
|
|
45
|
-
| 理解 diagnostics/lint 分层 | `harness/diagnostic-layers.md` | `src/harness/verify/Pipeline.ts`、`src/harness/verify/VerifyStage.ts`、`eslint.config.mjs`、`src/harness/verify/TsgoPolicy.ts` | `pnpm verify` |
|
|
46
|
-
| 理解仓内 TypeScript 代码用途 | `harness/code.md` | `bin/effect-harness.ts`、`src/harness/**`、`tests/*.test.ts` | `pnpm verify` |
|
|
47
|
-
| 查看 source entry 契约 | `harness/source.md` | `repos/effect.subtree.json`、`repos/tsgo.subtree.json` | `pnpm verify` |
|
|
48
|
-
| 按 agent 意图读取 Effect 源码 | `harness/effect-routes.md` | `repos/effect/LLMS.md`、`repos/effect/packages/**`、`repos/effect/ai-docs/src/**` | `pnpm verify` |
|
|
49
|
-
| 按 agent 意图读取 tsgo 源码 | `harness/tsgo-routes.md` | `repos/tsgo/README.md`、`repos/tsgo/_packages/tsgo/src/**`、`repos/tsgo/internal/**`、`repos/tsgo/etscore/**` | `pnpm verify` |
|
|
50
|
-
| 更新 source entries | `harness/source.md` | Partita GitHub subtree contracts、上游 Effect/tsgo repos | `pnpm source:update`、`pnpm verify`、subtree trailers |
|
|
51
|
-
| 验证本仓边界 | `HARNESS.md` | `src/harness/**`、provider profile、source contract | `pnpm verify` |
|
|
52
|
-
|
|
53
|
-
## Provider
|
|
54
|
-
|
|
55
|
-
这一层回答“target 接入 effect-harness 时应该消费什么”。本仓声明 provider profile 和受管模板;
|
|
56
|
-
实际生成、drift 和维护由 Prelude 执行。Prelude 本仓也可以作为 target 接入同一份 provider
|
|
57
|
-
contract。
|
|
58
|
-
|
|
59
|
-
| Prelude 消费内容 | 来源 | 由谁维护 | 目标项目是否接收源码 |
|
|
60
|
-
| --- | --- | --- | --- |
|
|
61
|
-
| provider profile、delivery modes 与 self-conformance contract | `provider/index.md`、`provider/effect-harness.provider.json` | effect-harness | 否 |
|
|
62
|
-
| provider record 与 source identities | `provider/effect-harness.provider.json` | Prelude | 否 |
|
|
63
|
-
| Effect package 基线 | provider profile | Prelude | 否 |
|
|
64
|
-
| `tsgo --noEmit` 诊断路径 | provider profile、`harness/tsgo.md` | Prelude | 否 |
|
|
65
|
-
| strict `@effect/language-service` policy | provider profile、`harness/tsgo.md` | Prelude | 否 |
|
|
66
|
-
| target docs bundle | `provider/docs/index.md`、provider profile | Prelude | 否 |
|
|
67
|
-
| target snippets | `provider/snippets/agents.md`、provider profile | Prelude | 否 |
|
|
68
|
-
| 源码阅读路线 | `harness/effect-routes.md` | effect-harness | 仅 provider 仓内部使用 |
|
|
69
|
-
| tsgo 源码阅读路线 | `harness/tsgo-routes.md` | effect-harness | 仅 provider 仓内部使用 |
|
|
70
|
-
|
|
71
|
-
## 边界
|
|
72
|
-
|
|
73
|
-
- Partita 负责 GitHub subtree pin 流程;effect-harness 不自建第二套 pin CLI。
|
|
74
|
-
- effect-harness 负责 Effect/tsgo 源入口实例、路线、基线、provider profile、docs bundle、
|
|
75
|
-
snippets 和本仓验证。
|
|
76
|
-
- effect-harness 使用 self-conformance 验证 exported harness contract,不生成 target provider
|
|
77
|
-
namespace。
|
|
78
|
-
- Prelude 负责消费 provider profile,并在目标项目中维护 provider record、落地生成、drift、verify
|
|
79
|
-
和 maintain。
|
|
80
|
-
- 业务代码和测试代码禁止从 `repos/effect` 或 `repos/tsgo` import。
|
|
81
|
-
- 本仓不再分发 Codex skills 或目标 runtime 资产。
|
|
82
|
-
- `.effect-harness.json`、effect-harness `.codex` 资产、反馈入口、effect-harness
|
|
83
|
-
`AGENTS.md` 管理块不属于当前 target surfaces。
|
package/harness/offcial-guide.md
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
audience: [agent, human]
|
|
3
|
-
authors:
|
|
4
|
-
- codex
|
|
5
|
-
reviewed_by: []
|
|
6
|
-
purpose: 维护 Effect 官方 Introduction 中 Coding with LLMs 小节的当前源口径。
|
|
7
|
-
status: active
|
|
8
|
-
sources:
|
|
9
|
-
- https://effect.website/docs/getting-started/introduction/
|
|
10
|
-
- https://effect.website/blog/the-one-weird-git-trick-that-makes-coding-agents-more-effect-ive/
|
|
11
|
-
- https://github.com/mikearnaldi/accountability
|
|
12
|
-
- https://github.com/Effect-TS/tsgo
|
|
13
|
-
updated: 2026-07-01
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# Official Guide
|
|
17
|
-
|
|
18
|
-
## Source
|
|
19
|
-
|
|
20
|
-
官方来源是 Effect 文档
|
|
21
|
-
[Getting Started / Introduction](https://effect.website/docs/getting-started/introduction/)
|
|
22
|
-
中的 `Coding with LLMs` 小节。
|
|
23
|
-
|
|
24
|
-
## Source Access
|
|
25
|
-
|
|
26
|
-
> [!quote] Official excerpt
|
|
27
|
-
> The following article describe how to use Effect with LLMs: https://effect.website/blog/the-one-weird-git-trick-that-makes-coding-agents-more-effect-ive/
|
|
28
|
-
|
|
29
|
-
官方入口是
|
|
30
|
-
[The One Weird Git Trick That Makes Coding Agents More Effect-ive](https://effect.website/blog/the-one-weird-git-trick-that-makes-coding-agents-more-effect-ive/)。
|
|
31
|
-
|
|
32
|
-
源口径是:agent 应该能读取 Effect 真实源码作为上下文。
|
|
33
|
-
|
|
34
|
-
## Feedback Loop
|
|
35
|
-
|
|
36
|
-
> [!quote] Official excerpt
|
|
37
|
-
> When using LLMs it is also very important to optimize the feedback loop to be as tight as possible, that can include writing custom linting rules to fit your style preferences and patterns, an example of a repository optimized for agentic coding can be found at: https://github.com/mikearnaldi/accountability
|
|
38
|
-
|
|
39
|
-
官方入口是 [mikearnaldi/accountability](https://github.com/mikearnaldi/accountability)。
|
|
40
|
-
|
|
41
|
-
源口径是:项目可以用自定义 lint rules、风格约束和 patterns 压短 agent 反馈回路。
|
|
42
|
-
|
|
43
|
-
## LSP
|
|
44
|
-
|
|
45
|
-
> [!quote] Official excerpt
|
|
46
|
-
> A key part of optimizing the feedback loop (and the developer experience in general when using Effect) is to use the Effect LSP plugin, we advise using the latest “tsgo” implementation of it that can be found at: https://github.com/Effect-TS/tsgo
|
|
47
|
-
|
|
48
|
-
官方入口是 [Effect-TS/tsgo](https://github.com/Effect-TS/tsgo)。
|
|
49
|
-
|
|
50
|
-
源口径是:项目应该使用 Effect LSP plugin,并关注当前 `tsgo` 实现。
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
audience: [agent, human]
|
|
3
|
-
authors:
|
|
4
|
-
- codex
|
|
5
|
-
reviewed_by: []
|
|
6
|
-
purpose: 说明 effect-harness 如何按官方 Coding with LLMs 三阶段建议完成当前迁移。
|
|
7
|
-
status: active
|
|
8
|
-
sources:
|
|
9
|
-
- harness/offcial-guide.md
|
|
10
|
-
- harness/source.md
|
|
11
|
-
- harness/effect-routes.md
|
|
12
|
-
- harness/tsgo.md
|
|
13
|
-
- harness/tsgo-routes.md
|
|
14
|
-
- provider/effect-harness.provider.json
|
|
15
|
-
- provider/docs/index.md
|
|
16
|
-
- provider/snippets/agents.md
|
|
17
|
-
- repos/effect.subtree.json
|
|
18
|
-
- repos/tsgo.subtree.json
|
|
19
|
-
- repos/effect/LLMS.md
|
|
20
|
-
- repos/tsgo/README.md
|
|
21
|
-
- https://effect.website/blog/the-one-weird-git-trick-that-makes-coding-agents-more-effect-ive/
|
|
22
|
-
- https://github.com/mikearnaldi/accountability
|
|
23
|
-
- https://github.com/Effect-TS/tsgo
|
|
24
|
-
updated: 2026-07-02
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
# Official Migrate
|
|
28
|
-
|
|
29
|
-
## Scope
|
|
30
|
-
|
|
31
|
-
官方 guide 在本仓被拆成三块推进:
|
|
32
|
-
|
|
33
|
-
1. 让 agent 读取真实 Effect source。
|
|
34
|
-
2. 参考项目级工程化反馈回路。
|
|
35
|
-
3. 接入 Effect Language Service / tsgo,让 diagnostics 成为 hard gate。
|
|
36
|
-
|
|
37
|
-
当前已经完成第一阶段、第二阶段的本仓 harness feedback loop、以及第三阶段。
|
|
38
|
-
|
|
39
|
-
第二阶段不照抄 `mikearnaldi/accountability` 的业务、前端架构或旧 Effect 写法。本仓只迁移工程化
|
|
40
|
-
理念:Codex 需要稳定入口、读取路线、可执行 hard gate 和失败后的回路。
|
|
41
|
-
|
|
42
|
-
## Layering
|
|
43
|
-
|
|
44
|
-
Harness 层维护 provider 仓内部事实:
|
|
45
|
-
|
|
46
|
-
- `repos/effect/` 和 `repos/effect.subtree.json`
|
|
47
|
-
- `repos/tsgo/` 和 `repos/tsgo.subtree.json`
|
|
48
|
-
- `harness/effect-routes.md`
|
|
49
|
-
- `harness/tsgo.md`
|
|
50
|
-
- `harness/tsgo-routes.md`
|
|
51
|
-
- `src/harness/**` verifier
|
|
52
|
-
|
|
53
|
-
Provider 层把这些事实投影为 Prelude 可消费的 profile:
|
|
54
|
-
|
|
55
|
-
- package baseline
|
|
56
|
-
- source identities
|
|
57
|
-
- `effect-tsgo patch`
|
|
58
|
-
- `tsgo --noEmit`
|
|
59
|
-
- strict `@effect/language-service` plugin policy
|
|
60
|
-
- target-facing docs bundle
|
|
61
|
-
- target-facing snippets
|
|
62
|
-
- target 不接收 provider-internal source trees 的边界
|
|
63
|
-
|
|
64
|
-
Prelude 负责目标项目 lifecycle、provider record、drift、verify 和 maintain。
|
|
65
|
-
|
|
66
|
-
## Stage 1
|
|
67
|
-
|
|
68
|
-
第一阶段对应官方文章的 source access 工作流。
|
|
69
|
-
|
|
70
|
-
本仓通过 Partita GitHub subtree pin,把 Effect v4 beta 官方 source 固定到 `repos/effect/`。
|
|
71
|
-
|
|
72
|
-
`repos/effect.subtree.json` 记录上游 repo、branch/ref、local prefix、split、anchor、agent route、
|
|
73
|
-
editor policy、ownership 和 read-only/import block。
|
|
74
|
-
|
|
75
|
-
`repos/effect/LLMS.md` 是 agent 写 Effect 程序逻辑前的 LLM anchor。
|
|
76
|
-
|
|
77
|
-
`harness/effect-routes.md` 按 agent 意图组织读取路线,覆盖 API surface、tests、ai-docs、CLI、
|
|
78
|
-
Node runtime、services、Schema、HTTP、AI、SQL、Cluster/RPC/Workflow 等路径。
|
|
79
|
-
|
|
80
|
-
`src/harness/SourcePin.ts` 和 `src/harness/Guardrails.ts` 把以下边界变成 hard check:
|
|
81
|
-
|
|
82
|
-
- source prefix 必须存在。
|
|
83
|
-
- source prefix 必须是 committed Git tree entry,不能是 gitlink/submodule。
|
|
84
|
-
- git history 必须有匹配 contract split 的 subtree trailer。
|
|
85
|
-
- anchor 和 route 必须存在。
|
|
86
|
-
- 应用代码和测试代码禁止从 source prefix import。
|
|
87
|
-
- provider 仓 source pin 不投影到目标项目。
|
|
88
|
-
|
|
89
|
-
## Stage 2
|
|
90
|
-
|
|
91
|
-
第二阶段当前聚焦 `effect-harness` 本仓 harness 和 provider contract,不实现 Prelude target
|
|
92
|
-
lifecycle。
|
|
93
|
-
|
|
94
|
-
本仓把 Codex feedback loop 固定为:
|
|
95
|
-
|
|
96
|
-
1. 进入 loop 前运行 `pnpm verify`,确认当前基线为 0。
|
|
97
|
-
2. 按任务意图读取 `harness/index.md`、`harness/effect-routes.md` 和 `harness/tsgo-routes.md`。
|
|
98
|
-
3. 做一轮最小修改。
|
|
99
|
-
4. 运行 `pnpm verify`。
|
|
100
|
-
5. 如果失败,按 verify stage 输出的 route 回到对应文档和 pinned source 修复。
|
|
101
|
-
6. 重复到 `pnpm verify` 为 0。
|
|
102
|
-
7. review diff,确认没有 suppress、override、`repos/**` import 或旧口径恢复。
|
|
103
|
-
|
|
104
|
-
`pnpm verify` 由 Effect pipeline 组织,入口是 `effect-harness verify --harness .`。
|
|
105
|
-
|
|
106
|
-
verify stage 真源是 `src/harness/verify/VerifyStage.ts`。`harness/feedback-loop.md` 只是
|
|
107
|
-
agent-readable projection,并由 `harness-contract` stage 校验覆盖。
|
|
108
|
-
|
|
109
|
-
pipeline 采用 fail-fast,stage 顺序是:
|
|
110
|
-
|
|
111
|
-
| Stage | Route |
|
|
112
|
-
| --- | --- |
|
|
113
|
-
| `source-pins` | `harness/source.md` |
|
|
114
|
-
| `harness-contract` | `harness/index.md`、`harness/offcial-migrate.md`、`harness/feedback-loop.md` |
|
|
115
|
-
| `tsgo-diagnostics` | `harness/tsgo.md`、`harness/tsgo-routes.md` |
|
|
116
|
-
| `tests` | `harness/effect-routes.md` |
|
|
117
|
-
| `lint` | `harness/diagnostic-layers.md`、`AGENTS.md`、`eslint.config.mjs` |
|
|
118
|
-
| `knip` | `package.json` |
|
|
119
|
-
|
|
120
|
-
本阶段不引入:
|
|
121
|
-
|
|
122
|
-
- accounting 业务规则。
|
|
123
|
-
- React/TanStack 前端约束。
|
|
124
|
-
- 参考仓旧 Effect service 写法。
|
|
125
|
-
- 参考仓 language-service 配置。
|
|
126
|
-
- auto agent loop。
|
|
127
|
-
- repo skill。
|
|
128
|
-
- Codex hook。
|
|
129
|
-
- Codex rules。
|
|
130
|
-
- 目标 runtime 模板。
|
|
131
|
-
- feedback intake。
|
|
132
|
-
- `.effect-harness.json` standalone state。
|
|
133
|
-
- effect-harness 管理的目标 `AGENTS.md` block。
|
|
134
|
-
|
|
135
|
-
## Stage 3
|
|
136
|
-
|
|
137
|
-
第三阶段已经完成 strict tsgo 迁移。
|
|
138
|
-
|
|
139
|
-
当前基线:
|
|
140
|
-
|
|
141
|
-
- `@effect/tsgo@0.15.0`
|
|
142
|
-
- `@effect/language-service@0.86.2`
|
|
143
|
-
- `@typescript/native-preview@7.0.0-dev.20260630.1`
|
|
144
|
-
|
|
145
|
-
本仓把 `Effect-TS/tsgo` pin 到 `repos/tsgo/`,commit 为
|
|
146
|
-
`43ed476270fb3cf78fe7afac2086d67340ca0486`。该 commit 绑定当前 `@effect/tsgo@0.15.0`
|
|
147
|
-
package baseline。
|
|
148
|
-
|
|
149
|
-
`harness/tsgo.md` 记录 strict policy、rule map、diagnostic gate、import style、overrides、
|
|
150
|
-
suppressions、key patterns、layer graph 和 upgrade loop。
|
|
151
|
-
|
|
152
|
-
`harness/tsgo-routes.md` 按 agent 意图组织读取路线,覆盖 metadata、rules、fixtures、LSP、
|
|
153
|
-
auto-import、setup、patch、schema/options、hooks 和 tests。
|
|
154
|
-
|
|
155
|
-
`tsconfig.json` 和 provider profile 使用同一份 strict `@effect/language-service` plugin policy。
|
|
156
|
-
|
|
157
|
-
`pnpm typecheck` 固定为:
|
|
158
|
-
|
|
159
|
-
```bash
|
|
160
|
-
tsgo --noEmit
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
`pnpm prepare` 固定为:
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
effect-tsgo patch
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
strict policy 要求 `tsgo --noEmit` 达到 0 error、0 warning、0 suggestion、0 message。warning
|
|
170
|
-
和 suggestion 也通过 exit-code hard gate 参与失败判定。
|
|
171
|
-
|
|
172
|
-
## Provider
|
|
173
|
-
|
|
174
|
-
`provider/effect-harness.provider.json` 暴露两个 provider-internal source entries:
|
|
175
|
-
|
|
176
|
-
- `effect-official-source`
|
|
177
|
-
- `tsgo-official-source`
|
|
178
|
-
|
|
179
|
-
provider profile 对目标项目的交付是 identity-only。目标项目接收 provider record 中的 source
|
|
180
|
-
identity,不接收 `repos/effect/`、`repos/tsgo/` 或 subtree contract 本体。
|
|
181
|
-
|
|
182
|
-
Provider target surfaces 保持受管且最小:
|
|
183
|
-
|
|
184
|
-
- `.prelude/providers/effect-harness/provider.json`
|
|
185
|
-
- `package.json` dependencies/devDependencies/script pointers
|
|
186
|
-
- `tsconfig.json` language-service plugin projection
|
|
187
|
-
- `.prelude/providers/effect-harness/docs/**`
|
|
188
|
-
- `.prelude/providers/effect-harness/snippets/**`
|
|
189
|
-
- provider artifact/source identities
|
|
190
|
-
|
|
191
|
-
docs bundle 和 snippets 是 provider contributions。Prelude 本仓作为 target 时,也应该接收同一组
|
|
192
|
-
managed surfaces。
|
|
193
|
-
|
|
194
|
-
Provider 明确不交付:
|
|
195
|
-
|
|
196
|
-
- `.codex` runtime files
|
|
197
|
-
- effect-harness `AGENTS.md` managed block
|
|
198
|
-
- `.effect-harness.json`
|
|
199
|
-
- `.codex/effect-feedback`
|
|
200
|
-
- target dispatcher scripts
|
|
201
|
-
- relaxed/compatibility profile
|
|
202
|
-
|
|
203
|
-
## Verification
|
|
204
|
-
|
|
205
|
-
当前完成定义只认一个命令:
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
pnpm verify
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
`pnpm verify` 由 Effect pipeline 组织,按 `source-pins`、`harness-contract`、
|
|
212
|
-
`tsgo-diagnostics`、`tests`、`lint`、`knip` 顺序 fail-fast 执行。
|
|
213
|
-
|
|
214
|
-
`source-pins` stage 借用 Partita pin verifier。`harness-contract` stage 验证 source entries、
|
|
215
|
-
provider profile、strict tsgo policy、package baseline、rule map、diagnostic suppressions 和
|
|
216
|
-
import boundary。`tsgo-diagnostics` stage 运行 `tsgo --noEmit`,后续 stages 运行 tests、eslint
|
|
217
|
-
和 knip。
|
|
218
|
-
|
|
219
|
-
如果官方 guide、pinned source、tsgo metadata 或 provider profile 之间冲突,优先修正到官方真源
|
|
220
|
-
和 pinned source,再更新最小 provider route。
|
package/harness/source.md
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
audience: [agent, human]
|
|
3
|
-
authors:
|
|
4
|
-
- codex
|
|
5
|
-
reviewed_by: []
|
|
6
|
-
purpose: 描述 effect-harness provider-internal source entries 与 source boundary。
|
|
7
|
-
status: active
|
|
8
|
-
sources:
|
|
9
|
-
- repos/effect.subtree.json
|
|
10
|
-
- repos/tsgo.subtree.json
|
|
11
|
-
- harness/effect-routes.md
|
|
12
|
-
- harness/tsgo-routes.md
|
|
13
|
-
- provider/effect-harness.provider.json
|
|
14
|
-
updated: 2026-07-01
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
# Source Entries
|
|
18
|
-
|
|
19
|
-
## Contract
|
|
20
|
-
|
|
21
|
-
本仓有两棵 provider-internal GitHub subtree source entries:
|
|
22
|
-
|
|
23
|
-
| Name | Contract | Prefix | Anchor | Route | Split |
|
|
24
|
-
| --- | --- | --- | --- | --- | --- |
|
|
25
|
-
| `effect` | `repos/effect.subtree.json` | `repos/effect` | `repos/effect/LLMS.md` | `harness/effect-routes.md` | `e11cccc7d5fe631abccc7d6e3bd296938de0fa2e` |
|
|
26
|
-
| `tsgo` | `repos/tsgo.subtree.json` | `repos/tsgo` | `repos/tsgo/README.md` | `harness/tsgo-routes.md` | `43ed476270fb3cf78fe7afac2086d67340ca0486` |
|
|
27
|
-
|
|
28
|
-
两份 contract 都采用 Partita GitHub subtree pin shape:
|
|
29
|
-
|
|
30
|
-
- `github.repository` 必须是 GitHub HTTPS URL。
|
|
31
|
-
- `mechanism` 固定为 `git-subtree`。
|
|
32
|
-
- `local.prefix` 是 provider 仓内部只读 source prefix。
|
|
33
|
-
- `subtree.split` 必须等于 `github.ref`。
|
|
34
|
-
- `subtree.trailer` 必须记录同一个 split。
|
|
35
|
-
- `ownership.mode` 固定为 `provider`。
|
|
36
|
-
- `boundaries.readOnly` 和 `boundaries.importBlock` 都是 `true`。
|
|
37
|
-
|
|
38
|
-
## Boundary
|
|
39
|
-
|
|
40
|
-
source entries 只给 agent 和本仓 verifier 读取,不投影到目标项目。
|
|
41
|
-
|
|
42
|
-
目标项目可以接收 provider record 里的 source identity,但不接收 `repos/effect/`、`repos/tsgo/`
|
|
43
|
-
或 subtree contract 本体。
|
|
44
|
-
|
|
45
|
-
本仓应用代码和测试代码禁止从 `repos/effect` 或 `repos/tsgo` import。
|
|
46
|
-
|
|
47
|
-
## Editor
|
|
48
|
-
|
|
49
|
-
source entry 的 editor policy 是 contract 和 provider profile 的数据。
|
|
50
|
-
|
|
51
|
-
`repos/**` auto-import exclude 是默认硬边界。
|
|
52
|
-
|
|
53
|
-
watch/search exclude 是推荐项,需要按编辑器显式配置。
|
|
54
|
-
|
|
55
|
-
files exclude 是用户偏好。Effect source entry 当前记录为 `enabled`,tsgo source entry 当前记录为
|
|
56
|
-
`disabled`,因为 tsgo route/policy 迁移期间需要保持 source tree 可见。
|
|
57
|
-
|
|
58
|
-
VSCode 和 Zed setting shape 分开记录。
|
|
59
|
-
|
|
60
|
-
## Commands
|
|
61
|
-
|
|
62
|
-
通用 source pin 流程由 Partita 提供:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
pnpm source:status
|
|
66
|
-
pnpm source:update
|
|
67
|
-
pnpm source:verify
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Partita 已发布为 `@sayoriqwq/partita@0.1.0`,bin 为 `partita`,source pin 子命令面是
|
|
71
|
-
`partita pin plan/status/verify/add/update`。本仓 `source:*` scripts 和 provider-facing command
|
|
72
|
-
strings 直接走 npm 包入口:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
npx --yes @sayoriqwq/partita pin status --name effect --prefix repos/effect --contract repos/effect.subtree.json
|
|
76
|
-
npx --yes @sayoriqwq/partita pin update --name effect --prefix repos/effect --contract repos/effect.subtree.json --dry-run
|
|
77
|
-
npx --yes @sayoriqwq/partita pin verify --name effect --prefix repos/effect --contract repos/effect.subtree.json
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
`source:update` 当前仍是 dry-run 更新计划。真实 source pin 更新必须提交包含
|
|
81
|
-
`git-subtree-dir` / `git-subtree-split` trailer 的 commit。
|
|
82
|
-
|
|
83
|
-
完成态验证入口是:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
pnpm verify
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
`pnpm verify` 的 `source-pins` stage 会调用 Partita pin verifier。`harness-contract` stage 会继续
|
|
90
|
-
检查 source prefix、Git tree entry、subtree trailer、anchor、route、provider profile、
|
|
91
|
-
package baseline 和 import boundary。
|
package/harness/tsgo-routes.md
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
audience: [agent, human]
|
|
3
|
-
authors:
|
|
4
|
-
- codex
|
|
5
|
-
reviewed_by: []
|
|
6
|
-
purpose: 给 agent 提供读取 pinned tsgo source 的路线表。
|
|
7
|
-
status: active
|
|
8
|
-
sources:
|
|
9
|
-
- repos/tsgo.subtree.json
|
|
10
|
-
- repos/tsgo/README.md
|
|
11
|
-
- repos/tsgo/_packages/tsgo/src/metadata.json
|
|
12
|
-
- repos/tsgo/_packages/tsgo/src/cli.ts
|
|
13
|
-
- repos/tsgo/_packages/tsgo/src/setup/
|
|
14
|
-
- repos/tsgo/etscore/
|
|
15
|
-
- repos/tsgo/internal/
|
|
16
|
-
updated: 2026-07-01
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# Tsgo Source Routes
|
|
20
|
-
|
|
21
|
-
## Boundary
|
|
22
|
-
|
|
23
|
-
`repos/tsgo/` 是 provider 仓内部只读参考源,目标项目不接收这棵目录。
|
|
24
|
-
|
|
25
|
-
应用代码和测试代码只能使用已安装 package 与 CLI,不从 `repos/tsgo` import。
|
|
26
|
-
|
|
27
|
-
当前 pin 的 `Effect-TS/tsgo` commit 是 `43ed476270fb3cf78fe7afac2086d67340ca0486`,
|
|
28
|
-
对应 `@effect/tsgo@0.15.0` package baseline。
|
|
29
|
-
|
|
30
|
-
Partita package CLI 已发布为 `@sayoriqwq/partita@0.1.0`;本仓 `source:*` scripts 通过
|
|
31
|
-
`npx --yes @sayoriqwq/partita pin ...` 执行,不依赖兄弟目录。
|
|
32
|
-
|
|
33
|
-
## Routes
|
|
34
|
-
|
|
35
|
-
| Agent 意图 | 先读 | 深入核对 | 适用输出 | 注意 |
|
|
36
|
-
| --- | --- | --- | --- | --- |
|
|
37
|
-
| 判断 tsgo pin 和 package baseline | `repos/tsgo.subtree.json`、`provider/effect-harness.provider.json` | `repos/tsgo/package.json`、`repos/tsgo/_packages/tsgo/package.json` | source identity、provider drift 判断 | commit 必须绑定当前 `@effect/tsgo` package version |
|
|
38
|
-
| 理解 tsgo 在本仓的策略 | `harness/tsgo.md` | `tsconfig.json`、`src/harness/verify/TsgoPolicy.ts` | ADR、policy、verifier 修复 | policy 变化先改 ADR,再改 projection |
|
|
39
|
-
| 理解官方 wrapper 和安装流程 | `repos/tsgo/README.md` | `repos/tsgo/_packages/tsgo/src/cli.ts` | setup/patch 解释、用户指令 | `effect-tsgo patch` 不是 typecheck binary |
|
|
40
|
-
| 查 CLI 命令入口 | `repos/tsgo/_packages/tsgo/src/cli.ts` | `repos/tsgo/_packages/tsgo/src/setup/index.ts` | `setup`、`patch`、`unpatch`、`get-exe-path` 判断 | provider 只投影 `prepare` 和 `typecheck` 指针 |
|
|
41
|
-
| 查 plugin option shape | `repos/tsgo/_packages/tsgo/src/config.ts`、`repos/tsgo/etscore/options.go` | `repos/tsgo/etscore/options_schema_test.go`、`repos/tsgo/etscore/options_test.go` | `tsconfig.json` plugin 字段 | 字段是顶层 plugin fields,不放进嵌套 `options` |
|
|
42
|
-
| 查 diagnostic metadata | `repos/tsgo/_packages/tsgo/src/metadata.json` | `repos/tsgo/_packages/tsgo/src/presets.ts`、`repos/tsgo/_packages/tsgo/src/setup/rule-info.ts` | rule map、severity 决策 | 只采用 `supportedEffect` 包含 `v4` 的规则 |
|
|
43
|
-
| 查 diagnostics 执行路径 | `repos/tsgo/internal/rulerunner/diagnostics.go` | `repos/tsgo/internal/rules/metadata.go`、`repos/tsgo/internal/rule/` | 诊断生命周期、rule dispatch 判断 | 不根据 README 摘要推断 rule 行为 |
|
|
44
|
-
| 查具体 rule 行为 | `repos/tsgo/internal/rules/<rule>.go` | `repos/tsgo/internal/fixables/<rule>.go`、`repos/tsgo/internal/effecttest/` | 规则解释、修复建议 | 先看 metadata,再看实现和 fixture |
|
|
45
|
-
| 查 quickfix 能力 | `repos/tsgo/internal/fixables/` | `repos/tsgo/internal/effecttest/quickfix_runner.go`、`quickfix_baseline.go` | 自动修复判断 | quickfix 存在不代表 provider 可以放宽 policy |
|
|
46
|
-
| 查 refactor 能力 | `repos/tsgo/internal/refactors/` | `repos/tsgo/internal/effecttest/refactor_runner.go`、`refactor_baseline.go` | refactor route、编辑器能力 | refactor 属于 agent 可参考能力,不是 target 必装脚本 |
|
|
47
|
-
| 查 completions | `repos/tsgo/internal/completions/` | `repos/tsgo/internal/completion/`、completion tests | snippet、completion 行为 | completion 只影响编辑体验,不改变 hard gate |
|
|
48
|
-
| 查 auto-import 风格 | `repos/tsgo/internal/autoimportstyle/stylepolicy.go` | `repos/tsgo/internal/effecttest/autoimport_style_consistency_test.go` | import style 决策 | 本仓采用 official user docs 的 barrel named import |
|
|
49
|
-
| 查 diagnostic suppress 指令 | `repos/tsgo/internal/directives/parser.go` | `repos/tsgo/internal/directives/parser_test.go`、`repos/tsgo/internal/completions/effect_diagnostics_comment.go` | suppress 检测和拒绝策略 | 本仓普通源码不允许 `:off` suppress |
|
|
50
|
-
| 查 setup 修改逻辑 | `repos/tsgo/_packages/tsgo/src/setup/changes.ts` | `repos/tsgo/_packages/tsgo/src/setup/assessment.ts`、`target.ts` | package/tsconfig/editor projection 参考 | effect-harness 不复制 setup CLI,只声明 provider projection |
|
|
51
|
-
| 查 native backend patch | `repos/tsgo/_packages/tsgo/src/setup/consts.ts` | `repos/tsgo/etscore/version_generated.go`、`repos/tsgo/etscore/climode.go` | native backend 判断 | 当前默认 `@typescript/native-preview` |
|
|
52
|
-
| 查 language-server hooks | `repos/tsgo/etslshooks/` | `repos/tsgo/internal/effectconfigraw/hooks.go` | LSP 行为、document symbol、inlay hints | hooks 用于理解能力,不直接进 provider target |
|
|
53
|
-
| 查 layer graph | `repos/tsgo/internal/layergraph/` | `repos/tsgo/internal/layergraph/*_test.go` | Mermaid、Layer 图推断 | 本仓需要图时维护本地 artifact,不默认外链 Mermaid |
|
|
54
|
-
| 查 key builder | `repos/tsgo/internal/keybuilder/` | `repos/tsgo/internal/keybuilder/keybuilder_test.go` | deterministic key policy | provider 使用 service/error/custom default pattern |
|
|
55
|
-
| 查 type parser | `repos/tsgo/internal/typeparser/` | `repos/tsgo/internal/typeparser/*_test.go` | rule 误报、类型识别排查 | 先确认 parser 能力,再判断是否需要 ADR 变化 |
|
|
56
|
-
| 查 baselines 和 test harness | `repos/tsgo/internal/effecttest/` | `repos/tsgo/internal/effecttest/baseline.go`、`runner.go` | 回归排查、fixture 设计 | 本仓 verifier 不依赖 tsgo test harness |
|
|
57
|
-
| 查 bundled Effect 识别 | `repos/tsgo/internal/bundledeffect/effect.go` | `repos/tsgo/internal/pluginoptions/resolver.go` | package/version 识别 | provider package baseline 仍以本仓 profile 为准 |
|
|
58
|
-
| 升级 tsgo pin | `harness/tsgo.md`、`repos/tsgo.subtree.json` | 新旧 `repos/tsgo/_packages/tsgo/src/metadata.json` diff | upgrade plan、ADR 更新 | 新增 v4 rule 或语义变化必须让用户 decide |
|