@guanlin4924/devflow-pi 0.1.95 → 0.1.97
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 +42 -2
- package/package.json +2 -1
- package/plugins/devflow-core/extensions/devflow-core.ts +679 -91
- package/plugins/devflow-core/runtime/hooks/hook_common.py +245 -0
- package/plugins/devflow-core/runtime/hooks/index_gate.py +18 -0
- package/plugins/devflow-core/skills/wireframe-render/SKILL.md +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/acceptance_test_runner.py +98 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/acceptance_test_suite.rb +6 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/advance_state.rb +64 -8
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_coverage.py +3 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_draft.py +53 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/dsl_v1.py +52 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/execution_contract.rb +2 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/explore_preflight.py +58 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_workflow.rb +1 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/locator_map.py +156 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/machine_evidence.rb +1 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/playwright_adapter.py +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_graph.rb +50 -15
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/session_rollover.rb +60 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/startup_preflight.py +167 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/validate_state.rb +5 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_render.py +262 -56
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/regression-acceptance.yaml +126 -0
- package/plugins/devflow-core/skills/workflow-pipeline/SKILL.md +2 -0
- package/plugins/devflow-intel/extensions/devflow-intel.ts +1 -1
- package/plugins/devflow-quality/runtime/playwright/devflow-test-dsl-v1.schema.json +103 -88
- package/plugins/devflow-quality/runtime/playwright/explore-host.mjs +879 -0
- package/plugins/devflow-quality/runtime/playwright/runner.spec.mjs +297 -15
- package/plugins/devflow-quality/runtime/playwright/runtime-manifest.json +3 -2
- package/plugins/devflow-quality/skills/workflow-acceptance-test-design/SKILL.md +4 -0
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/SKILL.md +10 -2
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/intermediate-format.md +6 -2
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/project-dsl-contract.md +3 -1
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/ui-mainflow-rules.md +4 -2
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/compile_dsl.py +98 -15
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/locator_report.py +73 -0
- package/plugins/devflow-quality/skills/workflow-human-acceptance/SKILL.md +3 -1
- package/plugins/devflow-quality/skills/workflow-regression-test-design/SKILL.md +69 -0
- package/plugins/devflow-quality/skills/workflow-release-closeout/SKILL.md +1 -1
- package/plugins/devflow-quality/skills/workflow-run-acceptance-tests/SKILL.md +4 -2
- package/src/cli.ts +10 -0
- package/src/constants.ts +1 -1
- package/src/doctor.ts +9 -0
- package/src/mcp/auth.ts +103 -0
- package/src/mcp/core.ts +102 -0
- package/src/mcp/server.ts +193 -0
- package/src/mcp/types.ts +5 -0
- package/src/startup-briefing.ts +109 -0
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ Devflow Pi 是一个面向项目研发交付的独立 OMP 产品入口,内置
|
|
|
11
11
|
安装与启动:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install -g @guanlin4924/devflow-pi@0.1.
|
|
14
|
+
npm install -g @guanlin4924/devflow-pi@0.1.97
|
|
15
15
|
cd /path/to/your-project
|
|
16
16
|
devflow-pi init
|
|
17
17
|
devflow-pi doctor
|
|
@@ -31,6 +31,16 @@ devflow-pi
|
|
|
31
31
|
/usage-stats
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
已有功能可从空闲状态启动回归验收:调用 `devflow_bootstrap` 时使用
|
|
35
|
+
`flow="regression-acceptance"`,随后按“回归测试设计 → 主流程 DSL → 批准 → 验收执行”推进,
|
|
36
|
+
不需要补建功能开发链路。用例冻结时必须明确 `oracle_source`:`requirement` 来自需求,
|
|
37
|
+
`contract` 来自外部接口/权限约定,`invariant` 表示内部一致性,`characterization` 只表示经人确认的现有行为基线。
|
|
38
|
+
后三者都必须附 `oracle_evidence`;`characterization` 不能被表述为正确性证明。
|
|
39
|
+
|
|
40
|
+
测试环境 profile 的 `secret_env` 只声明变量名。打开 `/devflow control` 的“测试凭据”输入值后,
|
|
41
|
+
凭据仅保存在当前扩展进程的内存中,不写入 `process.env`、文件、日志或审计,也不会被 Agent 子进程继承;
|
|
42
|
+
只有 Core 启动验收执行子进程时才会注入。面板输入没有遮罩能力,输入时值会显示在屏幕上,退出 devflow-pi 后失效。
|
|
43
|
+
|
|
34
44
|
`/devflow project-init` 会先读取当前项目已有的 `.devflow/planning/PROJECT.md` 与 `.devflow/planning/navigation/INDEX.md`:仅回填仍存在于项目根目录内的已登记前后端路径,删除或越界的历史路径会被忽略。随后可选择复用已有边界、复用边界并重建索引,或手动覆盖。初始化模式使用选择器提供“只读规划(默认)”和“写入初始化”;选择后者并确认,只会创建 Devflow 的 `.devflow/planning/` 与 `.devflow/context/` 初始化产物,不会修改业务源码、依赖或项目配置。
|
|
35
45
|
|
|
36
46
|
用量统计默认只读取当前项目的隔离会话:`/usage-stats`。需要明确查看历史 OMP 会话时,使用 `/usage-stats omp`,或加筛选条件:`/usage-stats omp --from 2026-08-01 --to 2026-08-10`。历史统计保留真实会话路径,不再把不同项目的长会话文件合并成 `main`;统计只使用 assistant message 的原始 usage,不虚构工具调用成本分摊。
|
|
@@ -115,7 +125,7 @@ Devflow 会在输入框上方显示“当前 Feature 交付链路”:它基于
|
|
|
115
125
|
- 验收失败不会创建另一套人工台账,而是进入 `acceptance-remediation`:诊断 → 修复 → code-index 刷新 → 原冻结 `TC-*` 重跑。
|
|
116
126
|
- CP-4 通过后只进入一个 `workflow-release-closeout` 步骤,统一写入 `.devflow/planning/milestones/current-CLOSEOUT.md` 并更新项目状态、导航和版本记录。
|
|
117
127
|
|
|
118
|
-
正常使用不需要记忆底层命令:在 Devflow 工作流中按步骤继续即可。需要排查时,可用 `devflow_acceptance_tests` 查看冻结套件,或由工作流调用 `devflow_tdd_evidence` 与 `devflow_run_acceptance_tests` 生成 Core 指定写入的证据;不要手写“已测试”来替代结果文件。本地 hook 拒绝 Agent 文件工具与 shell 访问 `control.db` 及 Devflow 数据目录 `projects/`、拒绝写入 canonical
|
|
128
|
+
正常使用不需要记忆底层命令:在 Devflow 工作流中按步骤继续即可。需要排查时,可用 `devflow_acceptance_tests` 查看冻结套件,或由工作流调用 `devflow_tdd_evidence` 与 `devflow_run_acceptance_tests` 生成 Core 指定写入的证据;不要手写“已测试”来替代结果文件。本地 hook 拒绝 Agent 文件工具与 shell 访问 `control.db` 及 Devflow 数据目录 `projects/`、拒绝写入 canonical 验收结果文件,并默认拒绝访问 `.devflow/runs/` 运行工件,仅白名单放行 `result.json`(Read 类读取工具仍可读取 `acceptance-results.json`;trace、截图、网络工件和 `runtime.log` 由用户本地查看)。它是防误用,不构成对同系统用户恶意进程的安全隔离。
|
|
119
129
|
|
|
120
130
|
### Core 软门禁模式
|
|
121
131
|
|
|
@@ -151,3 +161,33 @@ npm install -g @guanlin4924/devflow-pi@latest
|
|
|
151
161
|
- 索引是加速器,不是真相源;过期时回退到 LSP、搜索、源码和测试。
|
|
152
162
|
- 人工 checkpoint 不得在 headless 模式静默通过。
|
|
153
163
|
- semantic correctness 不能靠 prompt 保证,必须由契约、确定性校验、独立审查和可复现测试共同约束。
|
|
164
|
+
## Devflow MCP(阶段 B)
|
|
165
|
+
|
|
166
|
+
`devflow-pi mcp --client <name>` 通过 stdio 提供四个 feature 级工具:`validate_feature`、`run_feature`、`get_feature_report` 和 `dsl_draft_validate`。Server 只做输入校验、授权、审计和调用包内 Core;不读取或导出 trace、截图等运行工件,也不能确认批准。缺批准的用例仍需在 `/devflow` 面板完成批准。
|
|
167
|
+
|
|
168
|
+
授权文件位于 `$DEVFLOW_HOME/mcp.json`(默认 `~/.devflow-pi/mcp.json`),例如:
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"schema_version": 1,
|
|
173
|
+
"clients": { "claude-code": { "projects": {
|
|
174
|
+
"/abs/path/to/project": {
|
|
175
|
+
"features": ["order"],
|
|
176
|
+
"permissions": ["validate", "run", "report", "dsl_draft"],
|
|
177
|
+
"environment_profiles": ["local"]
|
|
178
|
+
}
|
|
179
|
+
} } }
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
这里的 `--client` 是声明式身份,用于匹配授权和写入审计,不是密码学认证;stdio 调用方与 Server 是同一台机器上的同一用户。Claude Code 注册:`claude mcp add devflow-acceptance -- devflow-pi mcp --client claude-code`。Codex 在 `config.toml` 中注册:
|
|
184
|
+
|
|
185
|
+
```toml
|
|
186
|
+
[mcp_servers.devflow-acceptance]
|
|
187
|
+
command = "devflow-pi"
|
|
188
|
+
args = ["mcp", "--client", "codex"]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
`run_feature` 是同步调用,默认最多运行 2 小时,可用 `--run-timeout-seconds` 下调;客户端也应把 MCP 请求超时设得足够长,并启用 progress。审计写入 `$DEVFLOW_HOME/mcp-audit/`。批准仍只能在 `/devflow` 面板完成。
|
|
192
|
+
|
|
193
|
+
Core 在 MCP Server 的进程环境中执行,因此注册 Server 时要把被测环境需要的变量一并传入:HTTP adapter 的基础地址变量(如 `DEVFLOW_TEST_BASE_URL`)和环境 profile 中 `secret_env` 声明的密钥变量;缺失时对应用例会是 failed 或 blocked。`mcp.json` 的 `environment_profiles` 只约束 `devflow_playwright` 绑定引用的 profile;HTTP adapter 的目标地址来自这些环境变量,不受 `mcp.json` 授权约束,应由启动 Server 的人控制。`run_feature` 在有用例未通过时仍返回报告,是否通过以其中的 `gate` 为准。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guanlin4924/devflow-pi",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.97",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Devflow 专项研发 Pi,基于固定版本 OMP Runtime 组装研发状态机、代码智能、设计、实现与质量门禁。",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"node": ">=20"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
+
"@modelcontextprotocol/sdk": "1.32.1",
|
|
26
27
|
"@oh-my-pi/pi-coding-agent": "17.2.7",
|
|
27
28
|
"@playwright/test": "1.63.0",
|
|
28
29
|
"@plurnk/plurnk-mimetypes-grammar-cpp": "1.16.1",
|