@wandoupeas/coding-forge 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +347 -0
- package/dist/agent/adapters/base.d.ts +9 -0
- package/dist/agent/adapters/base.d.ts.map +1 -0
- package/dist/agent/adapters/base.js +2 -0
- package/dist/agent/adapters/base.js.map +1 -0
- package/dist/agent/adapters/claude-code.d.ts +4 -0
- package/dist/agent/adapters/claude-code.d.ts.map +1 -0
- package/dist/agent/adapters/claude-code.js +25 -0
- package/dist/agent/adapters/claude-code.js.map +1 -0
- package/dist/agent/adapters/codex.d.ts +4 -0
- package/dist/agent/adapters/codex.d.ts.map +1 -0
- package/dist/agent/adapters/codex.js +27 -0
- package/dist/agent/adapters/codex.js.map +1 -0
- package/dist/agent/adapters/command-bridge.d.ts +67 -0
- package/dist/agent/adapters/command-bridge.d.ts.map +1 -0
- package/dist/agent/adapters/command-bridge.js +266 -0
- package/dist/agent/adapters/command-bridge.js.map +1 -0
- package/dist/agent/adapters/index.d.ts +7 -0
- package/dist/agent/adapters/index.d.ts.map +1 -0
- package/dist/agent/adapters/index.js +25 -0
- package/dist/agent/adapters/index.js.map +1 -0
- package/dist/agent/adapters/stub.d.ts +3 -0
- package/dist/agent/adapters/stub.d.ts.map +1 -0
- package/dist/agent/adapters/stub.js +66 -0
- package/dist/agent/adapters/stub.js.map +1 -0
- package/dist/agent/context.d.ts +36 -0
- package/dist/agent/context.d.ts.map +1 -0
- package/dist/agent/context.js +16 -0
- package/dist/agent/context.js.map +1 -0
- package/dist/agent/handlers/index.d.ts +6 -0
- package/dist/agent/handlers/index.d.ts.map +1 -0
- package/dist/agent/handlers/index.js +61 -0
- package/dist/agent/handlers/index.js.map +1 -0
- package/dist/agent/index.d.ts +18 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +37 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/types.d.ts +21 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/cli/agent-briefing.d.ts +24 -0
- package/dist/cli/agent-briefing.d.ts.map +1 -0
- package/dist/cli/agent-briefing.js +133 -0
- package/dist/cli/agent-briefing.js.map +1 -0
- package/dist/cli/commands/checkpoint.d.ts +12 -0
- package/dist/cli/commands/checkpoint.d.ts.map +1 -0
- package/dist/cli/commands/checkpoint.js +86 -0
- package/dist/cli/commands/checkpoint.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +14 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +192 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +27 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +425 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +19 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +303 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +6 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +408 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +50 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +248 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/mailbox.d.ts +12 -0
- package/dist/cli/commands/mailbox.d.ts.map +1 -0
- package/dist/cli/commands/mailbox.js +131 -0
- package/dist/cli/commands/mailbox.js.map +1 -0
- package/dist/cli/commands/onboard.d.ts +43 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -0
- package/dist/cli/commands/onboard.js +313 -0
- package/dist/cli/commands/onboard.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +16 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +211 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +102 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +256 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/review.d.ts +13 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +91 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/run.d.ts +19 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +161 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/superpowers.d.ts +21 -0
- package/dist/cli/commands/superpowers.d.ts.map +1 -0
- package/dist/cli/commands/superpowers.js +135 -0
- package/dist/cli/commands/superpowers.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +14 -0
- package/dist/cli/commands/ui.d.ts.map +1 -0
- package/dist/cli/commands/ui.js +41 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +11 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +46 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +69 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/logger.d.ts +18 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +57 -0
- package/dist/cli/utils/logger.js.map +1 -0
- package/dist/core/checkpoint.d.ts +54 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +227 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/context.d.ts +36 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +71 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/deliverable.d.ts +34 -0
- package/dist/core/deliverable.d.ts.map +1 -0
- package/dist/core/deliverable.js +125 -0
- package/dist/core/deliverable.js.map +1 -0
- package/dist/core/harness-hints.d.ts +43 -0
- package/dist/core/harness-hints.d.ts.map +1 -0
- package/dist/core/harness-hints.js +162 -0
- package/dist/core/harness-hints.js.map +1 -0
- package/dist/core/logger.d.ts +104 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +199 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mailbox.d.ts +69 -0
- package/dist/core/mailbox.d.ts.map +1 -0
- package/dist/core/mailbox.js +225 -0
- package/dist/core/mailbox.js.map +1 -0
- package/dist/core/planning.d.ts +110 -0
- package/dist/core/planning.d.ts.map +1 -0
- package/dist/core/planning.js +832 -0
- package/dist/core/planning.js.map +1 -0
- package/dist/core/runtime.d.ts +22 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +364 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/session.d.ts +62 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +266 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/superpowers-registry.d.ts +20 -0
- package/dist/core/superpowers-registry.d.ts.map +1 -0
- package/dist/core/superpowers-registry.js +180 -0
- package/dist/core/superpowers-registry.js.map +1 -0
- package/dist/core/superpowers-runs.d.ts +19 -0
- package/dist/core/superpowers-runs.d.ts.map +1 -0
- package/dist/core/superpowers-runs.js +231 -0
- package/dist/core/superpowers-runs.js.map +1 -0
- package/dist/core/task.d.ts +43 -0
- package/dist/core/task.d.ts.map +1 -0
- package/dist/core/task.js +232 -0
- package/dist/core/task.js.map +1 -0
- package/dist/core/threads.d.ts +23 -0
- package/dist/core/threads.d.ts.map +1 -0
- package/dist/core/threads.js +92 -0
- package/dist/core/threads.js.map +1 -0
- package/dist/core/worker.d.ts +48 -0
- package/dist/core/worker.d.ts.map +1 -0
- package/dist/core/worker.js +181 -0
- package/dist/core/worker.js.map +1 -0
- package/dist/core/workflow-context.d.ts +16 -0
- package/dist/core/workflow-context.d.ts.map +1 -0
- package/dist/core/workflow-context.js +102 -0
- package/dist/core/workflow-context.js.map +1 -0
- package/dist/core/workspace.d.ts +13 -0
- package/dist/core/workspace.d.ts.map +1 -0
- package/dist/core/workspace.js +208 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/testing/index.d.ts +21 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +55 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types/index.d.ts +298 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/assets/index-DLwnhrrc.css +1 -0
- package/dist/ui/assets/index-cDUGEuwi.js +234 -0
- package/dist/ui/http/handlers/project-artifacts.d.ts +3 -0
- package/dist/ui/http/handlers/project-artifacts.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-artifacts.js +20 -0
- package/dist/ui/http/handlers/project-artifacts.js.map +1 -0
- package/dist/ui/http/handlers/project-overview.d.ts +3 -0
- package/dist/ui/http/handlers/project-overview.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-overview.js +20 -0
- package/dist/ui/http/handlers/project-overview.js.map +1 -0
- package/dist/ui/http/handlers/project-recovery.d.ts +3 -0
- package/dist/ui/http/handlers/project-recovery.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-recovery.js +20 -0
- package/dist/ui/http/handlers/project-recovery.js.map +1 -0
- package/dist/ui/http/handlers/project-runtime.d.ts +3 -0
- package/dist/ui/http/handlers/project-runtime.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-runtime.js +20 -0
- package/dist/ui/http/handlers/project-runtime.js.map +1 -0
- package/dist/ui/http/handlers/project-tasks.d.ts +3 -0
- package/dist/ui/http/handlers/project-tasks.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-tasks.js +20 -0
- package/dist/ui/http/handlers/project-tasks.js.map +1 -0
- package/dist/ui/http/handlers/projects.d.ts +23 -0
- package/dist/ui/http/handlers/projects.d.ts.map +1 -0
- package/dist/ui/http/handlers/projects.js +29 -0
- package/dist/ui/http/handlers/projects.js.map +1 -0
- package/dist/ui/http/router.d.ts +5 -0
- package/dist/ui/http/router.d.ts.map +1 -0
- package/dist/ui/http/router.js +81 -0
- package/dist/ui/http/router.js.map +1 -0
- package/dist/ui/http/server.d.ts +29 -0
- package/dist/ui/http/server.d.ts.map +1 -0
- package/dist/ui/http/server.js +143 -0
- package/dist/ui/http/server.js.map +1 -0
- package/dist/ui/index.html +13 -0
- package/dist/ui/project-registry.d.ts +9 -0
- package/dist/ui/project-registry.d.ts.map +1 -0
- package/dist/ui/project-registry.js +19 -0
- package/dist/ui/project-registry.js.map +1 -0
- package/dist/ui/project-scanner.d.ts +10 -0
- package/dist/ui/project-scanner.d.ts.map +1 -0
- package/dist/ui/project-scanner.js +135 -0
- package/dist/ui/project-scanner.js.map +1 -0
- package/dist/ui/read-models/artifacts.d.ts +58 -0
- package/dist/ui/read-models/artifacts.d.ts.map +1 -0
- package/dist/ui/read-models/artifacts.js +97 -0
- package/dist/ui/read-models/artifacts.js.map +1 -0
- package/dist/ui/read-models/overview.d.ts +38 -0
- package/dist/ui/read-models/overview.d.ts.map +1 -0
- package/dist/ui/read-models/overview.js +55 -0
- package/dist/ui/read-models/overview.js.map +1 -0
- package/dist/ui/read-models/recovery.d.ts +18 -0
- package/dist/ui/read-models/recovery.d.ts.map +1 -0
- package/dist/ui/read-models/recovery.js +26 -0
- package/dist/ui/read-models/recovery.js.map +1 -0
- package/dist/ui/read-models/runtime.d.ts +53 -0
- package/dist/ui/read-models/runtime.d.ts.map +1 -0
- package/dist/ui/read-models/runtime.js +86 -0
- package/dist/ui/read-models/runtime.js.map +1 -0
- package/dist/ui/read-models/tasks.d.ts +34 -0
- package/dist/ui/read-models/tasks.d.ts.map +1 -0
- package/dist/ui/read-models/tasks.js +46 -0
- package/dist/ui/read-models/tasks.js.map +1 -0
- package/dist/utils/config.d.ts +30 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +152 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/file.d.ts +24 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +42 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/lock.d.ts +7 -0
- package/dist/utils/lock.d.ts.map +1 -0
- package/dist/utils/lock.js +36 -0
- package/dist/utils/lock.js.map +1 -0
- package/package.json +78 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 wandoupeas
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
# WebForge
|
|
2
|
+
|
|
3
|
+
WebForge 是一个面向 Coding Agent 的 `agent-first harness` 参考实现。
|
|
4
|
+
它的目标不是替 agent 做决策,而是把项目状态、执行上下文、恢复机制和协作协议稳定地落在仓库里。
|
|
5
|
+
|
|
6
|
+
最重要的一点:
|
|
7
|
+
|
|
8
|
+
> 你应该直接使用 `Codex` 或 `Claude Code` 在仓库里工作,而 WebForge 负责约束和辅助它们如何工作。
|
|
9
|
+
|
|
10
|
+
## 它是什么
|
|
11
|
+
|
|
12
|
+
- 一个可持久化的 workspace contract
|
|
13
|
+
- 一组围绕 `.webforge/` 运行的 core services
|
|
14
|
+
- 一个 ready-task runtime 主循环
|
|
15
|
+
- 一层以观察和校验为主的轻量 CLI
|
|
16
|
+
- 一套能与 `superpowers` 共存的工程方法
|
|
17
|
+
|
|
18
|
+
## 它不是什么
|
|
19
|
+
|
|
20
|
+
- 不是把 CLI 当成主控制面的工作流引擎
|
|
21
|
+
- 不是 if/else 驱动的伪 agent 编排器
|
|
22
|
+
- 不是只靠聊天上下文维持连续性的工具
|
|
23
|
+
- 不是把 `superpowers` 当成唯一记忆源的包装器
|
|
24
|
+
|
|
25
|
+
## 核心模型
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
用户目标
|
|
29
|
+
-> Coding Agent
|
|
30
|
+
-> WebForge workspace contract (.webforge/)
|
|
31
|
+
-> WebForge repo-side harness contract
|
|
32
|
+
-> planning/context/runtime core
|
|
33
|
+
-> deliverables / code / sessions
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
真正的项目真相位于 `.webforge/`:
|
|
37
|
+
|
|
38
|
+
- `runtime.json`:当前执行状态
|
|
39
|
+
- `tasks.json` / `phases.json`:任务图与阶段图
|
|
40
|
+
- `knowledge/index.json`:知识入口
|
|
41
|
+
- `deliverables/index.json`:交付物索引
|
|
42
|
+
- `sessions/index.json`:跨会话恢复入口
|
|
43
|
+
|
|
44
|
+
## 快速开始
|
|
45
|
+
|
|
46
|
+
先构建 CLI:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install
|
|
50
|
+
npm run build
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
如果你是 npm 使用者,安装方式会是:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm install -g @wandoupeas/coding-forge
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
或者直接临时运行:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npx @wandoupeas/coding-forge --help
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
然后初始化一个新仓库:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
node dist/cli/index.js init demo-app
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
这一步会同时生成:
|
|
72
|
+
|
|
73
|
+
- `.webforge/` workspace contract
|
|
74
|
+
- `AGENTS.md`
|
|
75
|
+
- `docs/agent-guide.md`
|
|
76
|
+
- `docs/methodology/superpowers-integration.md`
|
|
77
|
+
|
|
78
|
+
初始化完成后,进入新仓库先运行:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
node dist/cli/index.js doctor
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
如果你希望让正在仓库里工作的 agent 直接消费结构化状态,可以使用:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
node dist/cli/index.js doctor --json
|
|
88
|
+
node dist/cli/index.js resume --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
这两个命令分别回答:
|
|
92
|
+
|
|
93
|
+
- 仓库契约是否完整
|
|
94
|
+
- 当前 agent 下一步应该做什么
|
|
95
|
+
|
|
96
|
+
如果你想用本地 Web UI 统一查看多个 WebForge 项目,可以直接启动:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
node dist/cli/index.js ui --root ~/projects
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
如果你已经通过 npm 安装,则等价命令是:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
webforge ui --root ~/projects
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
这个 UI 当前是只读监控台,会自动扫描根目录下带 `.webforge/` 的项目,并提供:
|
|
109
|
+
|
|
110
|
+
- 多项目总览
|
|
111
|
+
- 单项目 dashboard
|
|
112
|
+
- 文档 / 交付物 / session 浏览
|
|
113
|
+
- runtime / drift / checkpoint / mailbox / superpowers 观察
|
|
114
|
+
|
|
115
|
+
## 怎么使用
|
|
116
|
+
|
|
117
|
+
如果你是人类开发者,先看这两份:
|
|
118
|
+
|
|
119
|
+
- [`docs/manuals/operations.md`](docs/manuals/operations.md)
|
|
120
|
+
- [`docs/manuals/command-reference.md`](docs/manuals/command-reference.md)
|
|
121
|
+
- [`docs/manuals/scenario-playbooks.md`](docs/manuals/scenario-playbooks.md)
|
|
122
|
+
|
|
123
|
+
如果你是正在仓库里工作的 `Codex` 或 `Claude Code`,先看这两份:
|
|
124
|
+
|
|
125
|
+
- [`AGENTS.md`](AGENTS.md)
|
|
126
|
+
- [`docs/agent-guide.md`](docs/agent-guide.md)
|
|
127
|
+
|
|
128
|
+
推荐最短使用路径:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
node dist/cli/index.js init demo-app
|
|
132
|
+
cd demo-app
|
|
133
|
+
node /path/to/work-forge/dist/cli/index.js onboard --json
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
如果你已经通过 npm 安装,则等价命令是:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
webforge init demo-app
|
|
140
|
+
cd demo-app
|
|
141
|
+
webforge onboard --json
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
`init` 会同时生成带 onboarding contract 的 `AGENTS.md`、`docs/agent-guide.md`、`docs/methodology/superpowers-integration.md`,以及可直接照着执行的 `docs/examples/agent-onboarding-protocol.md`。初始化结束时还会立即跑一次 post-init self-check,确认 `doctor` 和 `onboard` 与这些协议文件保持一致。
|
|
145
|
+
|
|
146
|
+
如果你想显式重跑这次自检,可以直接执行:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
node /path/to/work-forge/dist/cli/index.js verify init demo-app --json
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
如果你是 npm 安装用户,则直接执行:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
webforge verify init demo-app --json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
然后:
|
|
159
|
+
|
|
160
|
+
1. 读取 `shouldRead`
|
|
161
|
+
2. 导入需求到 `.webforge/knowledge/`
|
|
162
|
+
3. 运行 `plan`
|
|
163
|
+
4. 运行 `run`
|
|
164
|
+
5. 用 `dashboard / logs runtime / deliverables / review` 观察和收口
|
|
165
|
+
其中 `logs runtime --json` 会同时给出 runtime 事件流、这条日志对应的恢复快照,以及当前工作区恢复快照
|
|
166
|
+
|
|
167
|
+
如果你需要并行观察多个项目,则直接开 Web UI:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
webforge ui --root ~/projects
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
推荐用法:
|
|
174
|
+
|
|
175
|
+
1. 在首页看项目健康、blocked、pending review、drift
|
|
176
|
+
2. 进入单项目页看 recovery、tasks、deliverables 和 runtime pulse
|
|
177
|
+
3. 切到 `Artifacts` 页直接看 knowledge / deliverable / session 文本预览
|
|
178
|
+
4. 切到 `Runtime` 页看日志快照 vs 当前工作区快照,以及 checkpoint 列表
|
|
179
|
+
|
|
180
|
+
## 仓库结构
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
.
|
|
184
|
+
├── AGENTS.md
|
|
185
|
+
├── README.md
|
|
186
|
+
├── ARCHITECTURE.md
|
|
187
|
+
├── docs/
|
|
188
|
+
│ ├── agent-guide.md
|
|
189
|
+
│ └── methodology/
|
|
190
|
+
├── src/
|
|
191
|
+
│ ├── core/
|
|
192
|
+
│ ├── agent/
|
|
193
|
+
│ ├── cli/
|
|
194
|
+
│ └── testing/
|
|
195
|
+
└── .webforge/ # 由 workspace 初始化后生成
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## 五层分工
|
|
199
|
+
|
|
200
|
+
1. `workspace contract`
|
|
201
|
+
`.webforge/` 的目录、文件、索引和字段约定。
|
|
202
|
+
2. `state services`
|
|
203
|
+
`workspace / session / deliverable / mailbox / task` 等稳定持久化服务。
|
|
204
|
+
3. `execution core`
|
|
205
|
+
`planning / context / runtime`,负责构建任务图和 ready-task 主循环。
|
|
206
|
+
4. `agent facade`
|
|
207
|
+
`Agent` 只接收 `{ task, context }`,返回标准结果。
|
|
208
|
+
5. `workflow enhancement layer`
|
|
209
|
+
`superpowers` 等方法增强层,负责“怎么做更稳”,不负责“项目真相是什么”。
|
|
210
|
+
|
|
211
|
+
## 与 superpowers 的关系
|
|
212
|
+
|
|
213
|
+
WebForge 和 `superpowers` 不是互相替代的关系:
|
|
214
|
+
|
|
215
|
+
- WebForge 负责项目状态、恢复和执行协议
|
|
216
|
+
- `superpowers` 负责设计、计划、评审、compact、线程化恢复等工作方法
|
|
217
|
+
|
|
218
|
+
一句话:
|
|
219
|
+
|
|
220
|
+
> WebForge 决定项目如何运作;superpowers 决定某类工作如何做得更稳。
|
|
221
|
+
|
|
222
|
+
## 当前实现重点
|
|
223
|
+
|
|
224
|
+
- `src/core/planning.ts`
|
|
225
|
+
从 knowledge index 构建任务图与阶段图
|
|
226
|
+
- `src/core/context.ts`
|
|
227
|
+
为任务构建统一执行上下文
|
|
228
|
+
- `src/core/runtime.ts`
|
|
229
|
+
按 ready 队列执行 `claim -> context -> agent.execute -> persist`
|
|
230
|
+
- `src/agent/`
|
|
231
|
+
只保留标准执行门面与 handler
|
|
232
|
+
- `src/cli/`
|
|
233
|
+
只保留兼容层和观察入口
|
|
234
|
+
包括 `init / plan / run / onboard / resume / dashboard / doctor / superpowers / knowledge / logs / deliverables / review / checkpoint / mailbox`
|
|
235
|
+
|
|
236
|
+
## 适配对象
|
|
237
|
+
|
|
238
|
+
这套设计优先兼容:
|
|
239
|
+
|
|
240
|
+
- Codex
|
|
241
|
+
- Claude Code
|
|
242
|
+
|
|
243
|
+
兼容方式不是强行统一交互体验,而是统一仓库内事实模型:
|
|
244
|
+
|
|
245
|
+
- 统一读 `.webforge/`
|
|
246
|
+
- 统一写 `.webforge/`
|
|
247
|
+
- 统一通过 runtime / session / thread linkage / deliverable / knowledge 恢复上下文
|
|
248
|
+
|
|
249
|
+
## Codex / Claude Code 接入范式
|
|
250
|
+
|
|
251
|
+
如果你是人类开发者在仓库里工作,推荐顺序是:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
node dist/cli/index.js doctor
|
|
255
|
+
node dist/cli/index.js resume
|
|
256
|
+
node dist/cli/index.js dashboard
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
如果你是希望让 agent 直接消费仓库状态,推荐顺序是:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
node dist/cli/index.js onboard --json
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
或者显式拆开:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
node dist/cli/index.js doctor --json
|
|
269
|
+
node dist/cli/index.js resume --json
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
标准含义:
|
|
273
|
+
|
|
274
|
+
1. `onboard --json`
|
|
275
|
+
一次性输出 `doctor + resume + runtime log + recoveryReadiness` 的统一握手结果。
|
|
276
|
+
2. `doctor --json`
|
|
277
|
+
先判断仓库契约是否完整,再决定能否直接继续工作。
|
|
278
|
+
3. `resume --json`
|
|
279
|
+
获取当前 `nextAction`、`shouldRead`、`readyCount`、`blockedCount`、`pendingReviewCount`。
|
|
280
|
+
4. 读取 `shouldRead` 里的文件。
|
|
281
|
+
5. 如问题还在发散,用 `brainstorming`;如 spec 已经稳定,用 `writing-plans`。
|
|
282
|
+
6. 如果使用了 `superpowers` workflow,把结果用 `webforge superpowers record ...` 回写到 `.webforge/superpowers-runs.json`。
|
|
283
|
+
7. 执行工作,并把结果回写到 `.webforge/`。
|
|
284
|
+
|
|
285
|
+
一句话:
|
|
286
|
+
|
|
287
|
+
> `doctor` 先回答“仓库能不能继续”,`resume` 再回答“现在应该做什么”。
|
|
288
|
+
|
|
289
|
+
`onboard --json` 里的 `recoveryReadiness` 会继续回答第三个问题:
|
|
290
|
+
|
|
291
|
+
> 当前 `workflow context / latest superpowers run / thread linkage` 指向的 `artifact / worktree / compact / thread` 线索还能不能直接恢复。
|
|
292
|
+
|
|
293
|
+
## 推荐阅读顺序
|
|
294
|
+
|
|
295
|
+
1. `AGENTS.md`
|
|
296
|
+
2. `ARCHITECTURE.md`
|
|
297
|
+
3. `docs/manuals/operations.md`
|
|
298
|
+
4. `docs/manuals/scenario-playbooks.md`
|
|
299
|
+
5. `docs/manuals/command-reference.md`
|
|
300
|
+
6. `docs/agent-guide.md`
|
|
301
|
+
|
|
302
|
+
## 里程碑说明
|
|
303
|
+
|
|
304
|
+
如果你想看当前内部工程进展、已完成能力、验证状态和下一阶段建议,直接看:
|
|
305
|
+
|
|
306
|
+
- [`docs/milestones/2026-03-31-v0.1-internal-progress.md`](docs/milestones/2026-03-31-v0.1-internal-progress.md)
|
|
307
|
+
6. `docs/methodology/harness-principles.md`
|
|
308
|
+
7. `docs/methodology/superpowers-integration.md`
|
|
309
|
+
8. `docs/examples/minimal-agent-onboarding.md`
|
|
310
|
+
|
|
311
|
+
## 本地验证
|
|
312
|
+
|
|
313
|
+
常用验证命令:
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
npm run test:unit
|
|
317
|
+
npm run build
|
|
318
|
+
npm run smoke:onboarding
|
|
319
|
+
node dist/cli/index.js --help
|
|
320
|
+
node dist/cli/index.js doctor
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
常用结构化观察命令:
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
node dist/cli/index.js onboard --json
|
|
327
|
+
node dist/cli/index.js doctor --json
|
|
328
|
+
node dist/cli/index.js resume --json
|
|
329
|
+
node dist/cli/index.js logs runtime --json
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
常用 workflow 回写命令:
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
node dist/cli/index.js superpowers record writing-plans \
|
|
336
|
+
--summary "approved spec converted into execution plan" \
|
|
337
|
+
--artifact plan:docs/superpowers/plans/demo-plan.md \
|
|
338
|
+
--task T001
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## 项目状态
|
|
342
|
+
|
|
343
|
+
当前仓库正在向 WebForge v0.2 收敛:
|
|
344
|
+
|
|
345
|
+
- `runtime` 已成为唯一主循环
|
|
346
|
+
- CLI 已缩减为兼容层
|
|
347
|
+
- 文档正在统一到 harness-first 叙事
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentConfig, AgentExecutionInput, AgentExecutionResult } from '../context.js';
|
|
2
|
+
import type { AgentProvider } from '../../types/index.js';
|
|
3
|
+
export interface AgentExecutionEngine {
|
|
4
|
+
execute(input: AgentExecutionInput, config: AgentConfig): Promise<AgentExecutionResult>;
|
|
5
|
+
}
|
|
6
|
+
export interface AgentAdapter extends AgentExecutionEngine {
|
|
7
|
+
provider: AgentProvider;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/agent/adapters/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,OAAO,CACL,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAa,SAAQ,oBAAoB;IACxD,QAAQ,EAAE,aAAa,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/agent/adapters/base.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/agent/adapters/claude-code.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,YAAY,EACtB,MAAM,GAAE,aAA0B,GACjC,YAAY,CA6Bd"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { enrichResultMetadata, mapClaudeArgs, parseAgentExecutionResult, runCommand } from './command-bridge.js';
|
|
2
|
+
export function createClaudeCodeAgentAdapter(fallback, runner = runCommand) {
|
|
3
|
+
return {
|
|
4
|
+
provider: 'claude-code',
|
|
5
|
+
async execute(input, config) {
|
|
6
|
+
const command = config.runtimeProfile.command ?? 'claude';
|
|
7
|
+
try {
|
|
8
|
+
const execution = await runner(mapClaudeArgs(command, input, config));
|
|
9
|
+
if (execution.exitCode !== 0) {
|
|
10
|
+
throw new Error(execution.stderr.trim() || execution.stdout.trim() || 'claude failed');
|
|
11
|
+
}
|
|
12
|
+
const parsed = parseAgentExecutionResult(execution.stdout);
|
|
13
|
+
return enrichResultMetadata(parsed, 'claude-code', 'external-command', config);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
const fallbackResult = await fallback.execute(input, config);
|
|
17
|
+
return enrichResultMetadata(fallbackResult, 'claude-code', 'bridge-fallback', config, {
|
|
18
|
+
adapterFallbackProvider: fallback.provider,
|
|
19
|
+
adapterError: error instanceof Error ? error.message : String(error)
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/agent/adapters/claude-code.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,UAAU,EACX,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,4BAA4B,CAC1C,QAAsB,EACtB,SAAwB,UAAU;IAElC,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,KAAK,CAAC,OAAO,CAAC,KAA0B,EAAE,MAAmB;YAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,IAAI,QAAQ,CAAC;YAE1D,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBACtE,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,CAAC,CAAC;gBACzF,CAAC;gBAED,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC3D,OAAO,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACjF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7D,OAAO,oBAAoB,CACzB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,MAAM,EACN;oBACE,uBAAuB,EAAE,QAAQ,CAAC,QAAQ;oBAC1C,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBACrE,CACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/agent/adapters/codex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,MAAM,GAAE,aAA0B,GACjC,YAAY,CA4Bd"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { enrichResultMetadata, mapCodexArgs, readStructuredOutput, runCommand, withTemporarySchemaFiles } from './command-bridge.js';
|
|
2
|
+
export function createCodexAgentAdapter(fallback, runner = runCommand) {
|
|
3
|
+
return {
|
|
4
|
+
provider: 'codex',
|
|
5
|
+
async execute(input, config) {
|
|
6
|
+
const command = config.runtimeProfile.command ?? 'codex';
|
|
7
|
+
try {
|
|
8
|
+
return await withTemporarySchemaFiles(async ({ schemaPath, outputPath }) => {
|
|
9
|
+
const execution = await runner(mapCodexArgs(command, input, config, schemaPath, outputPath));
|
|
10
|
+
if (execution.exitCode !== 0) {
|
|
11
|
+
throw new Error(execution.stderr.trim() || execution.stdout.trim() || 'codex failed');
|
|
12
|
+
}
|
|
13
|
+
const parsed = await readStructuredOutput(outputPath, execution.stdout);
|
|
14
|
+
return enrichResultMetadata(parsed, 'codex', 'external-command', config);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
const fallbackResult = await fallback.execute(input, config);
|
|
19
|
+
return enrichResultMetadata(fallbackResult, 'codex', 'bridge-fallback', config, {
|
|
20
|
+
adapterFallbackProvider: fallback.provider,
|
|
21
|
+
adapterError: error instanceof Error ? error.message : String(error)
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agent/adapters/codex.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,uBAAuB,CACrC,QAAsB,EACtB,SAAwB,UAAU;IAElC,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,KAAK,CAAC,OAAO,CAAC,KAA0B,EAAE,MAAmB;YAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,IAAI,OAAO,CAAC;YAEzD,IAAI,CAAC;gBACH,OAAO,MAAM,wBAAwB,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE;oBACzE,MAAM,SAAS,GAAG,MAAM,MAAM,CAC5B,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAC7D,CAAC;oBAEF,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,cAAc,CAAC,CAAC;oBACxF,CAAC;oBAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;oBACxE,OAAO,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBAC3E,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7D,OAAO,oBAAoB,CAAC,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE;oBAC9E,uBAAuB,EAAE,QAAQ,CAAC,QAAQ;oBAC1C,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBACrE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { AgentConfig, AgentExecutionInput, AgentExecutionResult, AgentRuntimeProfile } from '../context.js';
|
|
2
|
+
export interface CommandExecutionResult {
|
|
3
|
+
exitCode: number;
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
}
|
|
7
|
+
export interface CommandExecutionRequest {
|
|
8
|
+
command: string;
|
|
9
|
+
args: string[];
|
|
10
|
+
cwd: string;
|
|
11
|
+
input?: string;
|
|
12
|
+
}
|
|
13
|
+
export type CommandRunner = (request: CommandExecutionRequest) => Promise<CommandExecutionResult>;
|
|
14
|
+
export declare function runCommand(request: CommandExecutionRequest): Promise<CommandExecutionResult>;
|
|
15
|
+
export declare const AGENT_RESULT_SCHEMA: {
|
|
16
|
+
readonly type: "object";
|
|
17
|
+
readonly additionalProperties: false;
|
|
18
|
+
readonly required: readonly ["success", "summary", "needsReview"];
|
|
19
|
+
readonly properties: {
|
|
20
|
+
readonly success: {
|
|
21
|
+
readonly type: "boolean";
|
|
22
|
+
};
|
|
23
|
+
readonly summary: {
|
|
24
|
+
readonly type: "string";
|
|
25
|
+
};
|
|
26
|
+
readonly needsReview: {
|
|
27
|
+
readonly type: "boolean";
|
|
28
|
+
};
|
|
29
|
+
readonly error: {
|
|
30
|
+
readonly type: readonly ["string", "null"];
|
|
31
|
+
};
|
|
32
|
+
readonly metadata: {
|
|
33
|
+
readonly type: "object";
|
|
34
|
+
};
|
|
35
|
+
readonly deliverables: {
|
|
36
|
+
readonly type: "array";
|
|
37
|
+
readonly items: {
|
|
38
|
+
readonly type: "object";
|
|
39
|
+
readonly additionalProperties: false;
|
|
40
|
+
readonly required: readonly ["type", "title", "content"];
|
|
41
|
+
readonly properties: {
|
|
42
|
+
readonly type: {
|
|
43
|
+
readonly type: "string";
|
|
44
|
+
readonly enum: readonly ["document", "code", "test", "config", "design", "review"];
|
|
45
|
+
};
|
|
46
|
+
readonly title: {
|
|
47
|
+
readonly type: "string";
|
|
48
|
+
};
|
|
49
|
+
readonly content: {
|
|
50
|
+
readonly type: "string";
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
export declare function buildAgentPrompt(input: AgentExecutionInput, config: AgentConfig): string;
|
|
58
|
+
export declare function mapCodexArgs(command: string, input: AgentExecutionInput, config: AgentConfig, schemaPath: string, outputPath: string): CommandExecutionRequest;
|
|
59
|
+
export declare function mapClaudeArgs(command: string, input: AgentExecutionInput, config: AgentConfig): CommandExecutionRequest;
|
|
60
|
+
export declare function withTemporarySchemaFiles<T>(callback: (paths: {
|
|
61
|
+
schemaPath: string;
|
|
62
|
+
outputPath: string;
|
|
63
|
+
}) => Promise<T>): Promise<T>;
|
|
64
|
+
export declare function readStructuredOutput(outputPath: string, stdout: string): Promise<AgentExecutionResult>;
|
|
65
|
+
export declare function parseAgentExecutionResult(raw: string): AgentExecutionResult;
|
|
66
|
+
export declare function enrichResultMetadata(result: AgentExecutionResult, provider: AgentRuntimeProfile['provider'], mode: 'external-command' | 'bridge-fallback', config: AgentConfig, extra?: Record<string, unknown>): AgentExecutionResult;
|
|
67
|
+
//# sourceMappingURL=command-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-bridge.d.ts","sourceRoot":"","sources":["../../../src/agent/adapters/command-bridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAErC,wBAAsB,UAAU,CAC9B,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CA0DjC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BtB,CAAC;AAEX,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,WAAW,GAClB,MAAM,CA0ER;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,uBAAuB,CAsBzB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,WAAW,GAClB,uBAAuB,CA4BzB;AAED,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1E,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC,CAG/B;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAe3E;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACzC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,EAC5C,MAAM,EAAE,WAAW,EACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,oBAAoB,CAatB"}
|