@c956180462/awbs 0.0.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.
Files changed (50) hide show
  1. package/AWBS_CORE_DESIGN.md +983 -0
  2. package/AWBS_CURRENT_FEATURES.md +463 -0
  3. package/LICENSE +21 -0
  4. package/README.md +265 -0
  5. package/TASK_001_VIEW_AUTHORITY.md +446 -0
  6. package/TASK_003_AUTHORITY_LEDGER_AND_DB_AUDIT.md +268 -0
  7. package/TASK_004_TRUSTED_AUTHORITY_LAYER.md +547 -0
  8. package/TASK_005_AUTHORITY_SESSION.md +218 -0
  9. package/TASK_006_TRUST_BOUNDARY_HARDENING.md +381 -0
  10. package/TASK_007_TRUSTED_OPERATION_ENTRY.md +129 -0
  11. package/bin/awbs.js +2 -0
  12. package/docs/DEVELOPMENT_LEARNING.md +319 -0
  13. package/docs/FULL_CHAIN.md +295 -0
  14. package/docs/PRODUCT.md +188 -0
  15. package/docs/USAGE.md +294 -0
  16. package/package.json +45 -0
  17. package/src/adapters/file-summary-store.ts +88 -0
  18. package/src/adapters/git-cli.ts +107 -0
  19. package/src/adapters/local-authority-session.ts +606 -0
  20. package/src/adapters/local-file-database.ts +199 -0
  21. package/src/adapters/sealed-authority.ts +725 -0
  22. package/src/adapters/session-authority-client.ts +176 -0
  23. package/src/adapters/sqlite-index-store.ts +176 -0
  24. package/src/cli.ts +491 -0
  25. package/src/domain/authority-types.ts +194 -0
  26. package/src/domain/constants.ts +11 -0
  27. package/src/domain/errors.ts +6 -0
  28. package/src/domain/hash.ts +27 -0
  29. package/src/domain/path-policy.ts +36 -0
  30. package/src/domain/paths.ts +65 -0
  31. package/src/domain/session-proof.ts +140 -0
  32. package/src/domain/session-types.ts +101 -0
  33. package/src/domain/types.ts +94 -0
  34. package/src/ports/authority-session.ts +8 -0
  35. package/src/ports/authority.ts +26 -0
  36. package/src/ports/file-database.ts +18 -0
  37. package/src/ports/git.ts +23 -0
  38. package/src/ports/index-store.ts +7 -0
  39. package/src/ports/summary-store.ts +16 -0
  40. package/src/runtime.ts +56 -0
  41. package/src/session-entry.ts +1 -0
  42. package/src/usecases/authority.ts +53 -0
  43. package/src/usecases/changeset.ts +437 -0
  44. package/src/usecases/db.ts +192 -0
  45. package/src/usecases/index.ts +136 -0
  46. package/src/usecases/init.ts +48 -0
  47. package/src/usecases/ledger.ts +146 -0
  48. package/src/usecases/session.ts +48 -0
  49. package/src/usecases/trusted-chain.ts +56 -0
  50. package/src/usecases/view.ts +166 -0
@@ -0,0 +1,129 @@
1
+ # AWBS 007:可信操作入口与只读/修复拆分
2
+
3
+ ## Summary
4
+
5
+ 007 的目标是把 AWBS 可信写入收束成更清楚的语义入口。
6
+
7
+ AWBS 不信任“谁声称自己是应用”。AWBS 只信任:
8
+
9
+ ```text
10
+ controller capability
11
+ + authority session
12
+ + verified operation
13
+ ```
14
+
15
+ 也就是说:
16
+
17
+ ```text
18
+ Workflow Actor 可以产出请求和 changeset。
19
+ Host Controller 才能授权可信操作。
20
+ ```
21
+
22
+ AWBS 不防止宿主应用主动把控制权交给 agent;那属于宿主应用授权错误。AWBS 要防的是未获 controller capability 的 workflow actor 绕过可信链。
23
+
24
+ ## Actor Model
25
+
26
+ ```text
27
+ Workflow Actor
28
+ 普通 agent / 大 agent / 工作流步骤。
29
+ 可以在 workspace 中工作。
30
+ 可以生成 changeset。
31
+ 可以读取诊断和索引。
32
+ 不能直接推进 AWBS 可信事实。
33
+
34
+ Host Controller
35
+ 上层应用的非 AI 控制层 / 人类确认层 / 服务端控制层。
36
+ 持有 controllerToken。
37
+ 决定是否创建 view、撤销 view、修复 mirror、apply changeset。
38
+ ```
39
+
40
+ 如果宿主应用把 controllerToken 暴露给 agent,AWBS 会把这个请求视为已授权请求。AWBS 不伪装自己还能阻止这种宿主授权错误。
41
+
42
+ 当前实现中,controllerToken 不直接进入 session IPC。CLI 用 controllerToken 派生 HMAC proof,并把 proof 绑定到:
43
+
44
+ ```text
45
+ method
46
+ root
47
+ args
48
+ nonce
49
+ createdAt
50
+ ```
51
+
52
+ session daemon 在内存中记录已使用 nonce,拒绝重放。可信写入的成功响应也必须由 daemon 签回 response proof;CLI 验证后才承认操作成功。这样即使 `.awbs/private/session.json` 被篡改指向一个假 endpoint,假 endpoint 也不能伪造“可信写入成功”。
53
+
54
+ ## Trusted Operation Entry
55
+
56
+ Authority Service 不应暴露底层写入原语。
57
+
58
+ 禁止把它设计成:
59
+
60
+ ```text
61
+ sign(rawHash)
62
+ appendLedgerEntry(rawEntry)
63
+ createViewContract(rawContract)
64
+ ```
65
+
66
+ 应当收束成语义操作:
67
+
68
+ ```text
69
+ bootstrapTrustedChain
70
+ createView
71
+ revokeView
72
+ sealChangesetReceipt
73
+ recordChangesetApply
74
+ repairMirrors
75
+ ```
76
+
77
+ 这些操作必须在 Authority 内部重新检查当前 authority 状态,并由 Authority 自己完成密封写入、ledger 记录或 mirror 重建。
78
+
79
+ ## Verify / Repair Boundary
80
+
81
+ `verify` 是只读诊断。
82
+
83
+ ```text
84
+ verify:
85
+ 读取 sealed payload
86
+ 读取 mirror
87
+ 报告 mirror mismatch / seal error / ledger error
88
+ 不写任何文件
89
+ ```
90
+
91
+ `repair` 是显式维护写入。
92
+
93
+ ```text
94
+ repair-mirrors:
95
+ 需要 controllerToken
96
+ 从 sealed payload 重建 mirror
97
+ 可写 view-events.jsonl
98
+ ```
99
+
100
+ 不能让一个看似只读的检查命令偷偷修复 mirror。否则 AWBS 会出现隐藏写入通道。
101
+
102
+ ## `.awbs` Boundary
103
+
104
+ `.awbs` 是 AWBS 系统目录,不是业务数据目录。
105
+
106
+ ```text
107
+ .awbs/authority
108
+ .awbs/private
109
+ .awbs/index
110
+ .awbs/views
111
+ .awbs/changesets
112
+ .awbs/summaries
113
+ ```
114
+
115
+ 这些目录不进入 agent workspace。agent 需要的上下文应被投影成普通业务文件,而不是直接读取 AWBS 自己的系统材料。
116
+
117
+ ## Implementation Result
118
+
119
+ 007 完成后:
120
+
121
+ - session daemon 不接受 `createViewContract` / `appendLedgerEntry` 这类低层写入 method。
122
+ - session daemon 只接受绑定仓库或同一 Git common dir 下的临时 worktree。
123
+ - controller capability 通过 nonce HMAC proof 表达,不把 raw token 发给 session endpoint。
124
+ - controller proof 不能重放,可信写入成功响应必须带 response proof。
125
+ - `authority verify` 不修复 mirror。
126
+ - `authority repair-mirrors` 必须带 `--control-token-stdin`。
127
+ - view create、view revoke、changeset apply 仍通过 controller capability 走语义操作。
128
+ - 普通 inspect / collect / query / verify 不需要 controller token。
129
+ - `.awbs` / `.git` 作为系统路径按大小写无关方式拒绝投影和写回。
package/bin/awbs.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "../src/cli.ts";
@@ -0,0 +1,319 @@
1
+ # AWBS 开发学习文档
2
+
3
+ 本文档面向想阅读 AWBS 源码、理解设计演进、fork 后继续改造的人。
4
+
5
+ AWBS 当前是一个 Node/TypeScript CLI 原型。它没有 build step,依赖 Node.js 24 直接运行 `.ts` 文件。
6
+
7
+ ## 1. 学习顺序
8
+
9
+ 建议按这个顺序读:
10
+
11
+ ```text
12
+ README.md
13
+ -> docs/PRODUCT.md
14
+ -> docs/FULL_CHAIN.md
15
+ -> AWBS_CORE_DESIGN.md
16
+ -> TASK_001_VIEW_AUTHORITY.md
17
+ -> TASK_003_AUTHORITY_LEDGER_AND_DB_AUDIT.md
18
+ -> TASK_004_TRUSTED_AUTHORITY_LAYER.md
19
+ -> TASK_005_AUTHORITY_SESSION.md
20
+ -> TASK_006_TRUST_BOUNDARY_HARDENING.md
21
+ -> TASK_007_TRUSTED_OPERATION_ENTRY.md
22
+ -> src/
23
+ -> tests/
24
+ ```
25
+
26
+ `AWBS_USER_DISCUSSION_NOTES.md` 是原始讨论记录,适合了解思想来源,但不进入 npm 包。
27
+
28
+ ## 2. 架构分层
29
+
30
+ 当前源码分四层:
31
+
32
+ ```text
33
+ CLI Adapter
34
+ src/cli.ts
35
+
36
+ Application Use Cases
37
+ src/usecases/*
38
+
39
+ Domain Contracts
40
+ src/domain/*
41
+
42
+ Ports / Infrastructure Adapters
43
+ src/ports/*
44
+ src/adapters/*
45
+ ```
46
+
47
+ `src/runtime.ts` 负责组装默认运行时。
48
+
49
+ ## 3. CLI 层
50
+
51
+ 入口:
52
+
53
+ ```text
54
+ src/cli.ts
55
+ ```
56
+
57
+ 职责:
58
+
59
+ - 解析命令行参数。
60
+ - 读取 stdin 中的 controller token / recovery secret。
61
+ - 创建 runtime。
62
+ - 调用 use case。
63
+ - 格式化输出。
64
+
65
+ CLI 不应该直接 import 具体 infrastructure adapter。这个约束由 `tests/architecture.test.ts` 覆盖。
66
+
67
+ ## 4. Use Case 层
68
+
69
+ 主要文件:
70
+
71
+ ```text
72
+ src/usecases/init.ts
73
+ src/usecases/index.ts
74
+ src/usecases/view.ts
75
+ src/usecases/changeset.ts
76
+ src/usecases/authority.ts
77
+ src/usecases/session.ts
78
+ src/usecases/ledger.ts
79
+ src/usecases/db.ts
80
+ src/usecases/trusted-chain.ts
81
+ ```
82
+
83
+ Use case 层负责业务流程编排。它不应该把密封算法、SQLite 细节、Git 命令细节写死在自己里面。
84
+
85
+ ## 5. Domain 层
86
+
87
+ 主要文件:
88
+
89
+ ```text
90
+ src/domain/types.ts
91
+ src/domain/authority-types.ts
92
+ src/domain/session-types.ts
93
+ src/domain/paths.ts
94
+ src/domain/path-policy.ts
95
+ src/domain/session-proof.ts
96
+ src/domain/hash.ts
97
+ src/domain/constants.ts
98
+ src/domain/errors.ts
99
+ ```
100
+
101
+ 这里定义:
102
+
103
+ - manifest 类型。
104
+ - authority 类型。
105
+ - session 类型。
106
+ - path policy。
107
+ - controller proof。
108
+ - hash / canonical JSON。
109
+ - 常量和错误类型。
110
+
111
+ 路径策略是安全边界的一部分。`.git`、`.awbs`、`.awbs-view.json` 不能作为业务数据路径。
112
+
113
+ ## 6. Ports 层
114
+
115
+ 主要接口:
116
+
117
+ ```text
118
+ FileDatabasePort
119
+ GitPort
120
+ IndexStorePort
121
+ SummaryStorePort
122
+ AuthorityPort
123
+ AuthoritySessionPort
124
+ ```
125
+
126
+ Ports 的作用是让 use case 依赖能力,而不是依赖具体实现。
127
+
128
+ ## 7. Adapters 层
129
+
130
+ 当前 adapters:
131
+
132
+ ```text
133
+ GitCliAdapter
134
+ LocalFileDatabaseAdapter
135
+ SqliteIndexStoreAdapter
136
+ FileSummaryStoreAdapter
137
+ SealedAuthorityAdapter
138
+ LocalAuthoritySessionAdapter
139
+ SessionAuthorityClientAdapter
140
+ AutoAuthorityAdapter
141
+ ```
142
+
143
+ 重点:
144
+
145
+ - Git 操作统一走 `GitCliAdapter`。
146
+ - 文件扫描、copy、remove 统一走 `LocalFileDatabaseAdapter`。
147
+ - SQLite 索引走 `SqliteIndexStoreAdapter`。
148
+ - sealed authority 走 `SealedAuthorityAdapter`。
149
+ - session daemon 走 `LocalAuthoritySessionAdapter`。
150
+
151
+ ## 8. Trusted Chain 机制
152
+
153
+ AWBS 认证数据库不等于 Git HEAD。
154
+
155
+ 可信链由两部分表达:
156
+
157
+ ```text
158
+ .awbs/authority/ledger.seal.json
159
+ refs/awbs/trusted
160
+ ```
161
+
162
+ ledger entry 使用:
163
+
164
+ - `previousEntryHash`
165
+ - `entryHash`
166
+ - `operationHash`
167
+ - `parentTrustedCommit`
168
+ - `baseCommit`
169
+ - `changesetPayloadHash`
170
+ - `authorityContractHash`
171
+
172
+ `ledger verify` 会重算 hash chain。
173
+
174
+ ## 9. Authority Session 机制
175
+
176
+ session start:
177
+
178
+ - 读入 `.awbs/private/local.json`。
179
+ - 写出 `recovery.seal.json`。
180
+ - 启动 hidden detached daemon。
181
+ - 删除 `local.json`。
182
+
183
+ 可信写入:
184
+
185
+ - CLI 从 stdin 读取 controller token。
186
+ - 生成 nonce HMAC controller proof。
187
+ - daemon 验证 proof。
188
+ - daemon 拒绝重复 nonce。
189
+ - daemon 执行语义 operation。
190
+ - daemon 签回 response proof。
191
+ - CLI 验证 response proof。
192
+
193
+ daemon 不提供 `sign(rawHash)`。
194
+
195
+ ## 10. Changeset 机制
196
+
197
+ changeset collect 生成:
198
+
199
+ ```text
200
+ .awbs/changesets/<changesetId>/
201
+ manifest.json
202
+ diff.patch
203
+ files/
204
+ receipt.seal.json
205
+ ```
206
+
207
+ apply 前会验证:
208
+
209
+ - payload sha256。
210
+ - payloadHash。
211
+ - operationHash。
212
+ - sealed receipt。
213
+ - sealed view contract。
214
+ - current trusted commit。
215
+ - write path 权限。
216
+
217
+ 任何验证失败都不能写入数据库。
218
+
219
+ ## 11. 索引和摘要
220
+
221
+ 索引:
222
+
223
+ ```text
224
+ .awbs/index/files.sqlite
225
+ ```
226
+
227
+ 摘要:
228
+
229
+ ```text
230
+ .awbs/summaries/files.jsonl
231
+ ```
232
+
233
+ 摘要边界是长期设计边界:
234
+
235
+ ```text
236
+ AWBS 永远不内置 AI 摘要。
237
+ ```
238
+
239
+ 如果要接 AI 摘要,应由上层应用生成摘要,再调用 AWBS summary 接口写入。
240
+
241
+ ## 12. 测试结构
242
+
243
+ 当前测试:
244
+
245
+ ```text
246
+ tests/architecture.test.ts
247
+ tests/cli.test.ts
248
+ tests/authority.test.ts
249
+ tests/trusted-chain.test.ts
250
+ tests/hardening.test.ts
251
+ tests/session.test.ts
252
+ ```
253
+
254
+ 覆盖:
255
+
256
+ - CLI 闭环。
257
+ - SQLite 索引。
258
+ - summary。
259
+ - view authority。
260
+ - changeset apply。
261
+ - trusted chain。
262
+ - clean rebuild。
263
+ - session。
264
+ - 对抗路径。
265
+ - symlink 拒绝。
266
+ - payload 篡改。
267
+ - session endpoint 伪成功。
268
+
269
+ 运行:
270
+
271
+ ```powershell
272
+ npm test
273
+ ```
274
+
275
+ 测试使用串行执行,避免 Windows 上并发启动过多 authority session daemon。
276
+
277
+ ## 13. 开发原则
278
+
279
+ AWBS 的核心开发原则:
280
+
281
+ - 输入开放,落地受控。
282
+ - 失败不能伪成功。
283
+ - 普通 HEAD 不等于认证数据库。
284
+ - workspace 可以混乱,trusted chain 不能混乱。
285
+ - 权限事实源不能在 workspace 明文里。
286
+ - summary 不是 AWBS 的 AI 能力。
287
+ - 不默认兼容开发期旧仓库,除非明确开 migration 任务。
288
+ - 不用一堆特例替代底层机制。
289
+
290
+ ## 14. 发布流程
291
+
292
+ 发布前:
293
+
294
+ ```powershell
295
+ npm test
296
+ node src\cli.ts --help
297
+ npm pack --dry-run
298
+ git diff --check
299
+ ```
300
+
301
+ 首次 npm 发布需要登录:
302
+
303
+ ```powershell
304
+ npm adduser
305
+ npm publish --access public
306
+ ```
307
+
308
+ `awbs` 包名当前可用性需要发布前再次用 npm registry 确认。
309
+
310
+ ## 15. 后续可做方向
311
+
312
+ 可能的后续任务:
313
+
314
+ - workflow / run / step 记录。
315
+ - `applyVerifiedOperation` 更彻底的 Authority Service 化。
316
+ - B 模式:OS keychain / 独立系统账号 / 本地服务。
317
+ - npm release workflow。
318
+ - JSONL / SQLite 导出调试命令。
319
+ - 更正式的版本迁移策略。