@devflow-tools/cli 0.18.3 → 0.18.4

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 (42) hide show
  1. package/README.md +19 -4
  2. package/dist/commands/doctor.d.ts.map +1 -1
  3. package/dist/commands/doctor.js +12 -10
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/server.d.ts +19 -5
  6. package/dist/commands/server.d.ts.map +1 -1
  7. package/dist/commands/server.js +31 -116
  8. package/dist/commands/server.js.map +1 -1
  9. package/dist/commands/start.d.ts +4 -2
  10. package/dist/commands/start.d.ts.map +1 -1
  11. package/dist/commands/start.js +29 -56
  12. package/dist/commands/start.js.map +1 -1
  13. package/dist/commands/status.d.ts +4 -1
  14. package/dist/commands/status.d.ts.map +1 -1
  15. package/dist/commands/status.js +17 -9
  16. package/dist/commands/status.js.map +1 -1
  17. package/dist/commands/stop.d.ts.map +1 -1
  18. package/dist/commands/stop.js +3 -2
  19. package/dist/commands/stop.js.map +1 -1
  20. package/dist/index.js +63 -18
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/messages.d.ts +38 -0
  23. package/dist/lib/messages.d.ts.map +1 -0
  24. package/dist/lib/messages.js +42 -0
  25. package/dist/lib/messages.js.map +1 -0
  26. package/dist/lib/with-server.d.ts.map +1 -1
  27. package/dist/lib/with-server.js +22 -8
  28. package/dist/lib/with-server.js.map +1 -1
  29. package/dist/plugin-files/.claude-plugin/plugin.json +1 -1
  30. package/dist/plugin-files/dist/command-registry.json +5 -5
  31. package/dist/plugin-files/dist/hooks/hook-daemon.js +28 -27
  32. package/dist/plugin-files/dist/hooks/post-tool-use-failure.js +2 -2
  33. package/dist/plugin-files/dist/hooks/post-tool-use.js +6 -6
  34. package/dist/plugin-files/dist/hooks/pre-compact.js +3 -3
  35. package/dist/plugin-files/dist/hooks/pre-tool-use.js +4 -4
  36. package/dist/plugin-files/dist/hooks/server-bootstrap.js +1 -109
  37. package/dist/plugin-files/dist/hooks/session-end.js +5 -5
  38. package/dist/plugin-files/dist/hooks/stop.js +9 -9
  39. package/dist/plugin-files/dist/hooks/user-prompt-submit.js +8 -8
  40. package/dist/plugin-files/package.json +13 -13
  41. package/dist/plugin-files/skills/start/SKILL.md +20 -34
  42. package/package.json +27 -27
package/README.md CHANGED
@@ -21,17 +21,32 @@ devflow --help
21
21
 
22
22
  ## 公共 API / 命令
23
23
 
24
- `devflow init`、`connect`、`index`、`graph`、`context`、`workflow`、`memory`、`knowledge`、`doctor` 和 `server start`。
24
+ `devflow init`、`connect`、`index`、`graph`、`context`、`workflow`、`memory`、`knowledge`、`doctor`、`dashboard`、`start`、`status` 和 `stop`。
25
+
26
+ ## Dashboard 与 Runtime
27
+
28
+ Runtime 是用户级单实例,Dashboard 与 API 共用同一个只监听 `127.0.0.1` 的 Server。项目数据仍需通过项目范围选择,不会因 Runtime 复用而共享。
29
+
30
+ ```bash
31
+ devflow dashboard
32
+ devflow dashboard --open
33
+ devflow dashboard --no-start
34
+ devflow start --background
35
+ devflow status --json
36
+ devflow stop
37
+ ```
38
+
39
+ `dashboard` 默认只输出就绪 URL;只有 `--open` 才会唤起浏览器。未显式传入 `--port` 时,默认端口冲突会选择一个可用 loopback 端口;显式端口冲突会直接失败。
25
40
 
26
41
 
27
42
  ## 配置与运行时
28
43
 
29
- 要求 Node.js >= 18、npm >= 9;`devflow init` 会生成 `.devflow/` 配置并同步 Claude Code/MCP 配置。
44
+ 要求 Node.js >= 22.13.0、npm >= 9;`devflow init` 会生成 `.devflow/` 配置并同步 Claude Code/MCP 配置。
30
45
 
31
46
  ## 版本与兼容性
32
47
 
33
- - 当前包版本:`0.17.8`
34
- - Node.js:未在 package manifest 声明更高版本时,使用 Node.js 18+;原生 SQLite/Playwright 能力请按对应依赖安装
48
+ - 当前包版本:`0.18.3`
49
+ - Node.js:22.13.0+
35
50
  - workspace 内部包应使用同一 DevFlow minor/patch 版本,避免类型和数据库 schema 不一致
36
51
 
37
52
  ## 相关链接
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { basename, dirname, extname, isAbsolute, join, relative, resolve, sep }
6
6
  import { spawnSync } from "node:child_process";
7
7
  import { fileURLToPath } from "node:url";
8
8
  import chalk from "chalk";
9
- import { DOCTOR_SCHEMA_VERSION, checkMcpHealth, getDaemonRegistryPath, getDaemonSocketPath, getDevFlowStateRoot, getProjectHash, getProjectStateDir, loadPluginsWithDiagnostics, readMcpInventory, redactMcpInventory, readRuntimeEndpointState, listRuntimeHttpCircuits, selectHostAdapter, } from "@devflow-tools/sdk";
9
+ import { DOCTOR_SCHEMA_VERSION, checkMcpHealth, getDaemonRegistryPath, getDaemonSocketPath, getDevFlowStateRoot, getProjectHash, getProjectStateDir, loadPluginsWithDiagnostics, readMcpInventory, redactMcpInventory, readRuntimeState, listRuntimeHttpCircuits, selectHostAdapter, } from "@devflow-tools/sdk";
10
10
  import { resolveActivePlugin, scanClaudeSkillShadowing } from "../lib/plugin-setup.js";
11
11
  import { serverStatus } from "./server.js";
12
12
  import { inspectSkillHealth } from "./skill-health.js";
@@ -132,14 +132,16 @@ async function checkRuntimeControlPlane(project, dependencies) {
132
132
  severity: "warning",
133
133
  });
134
134
  }
135
- const endpoint = readRuntimeEndpointState(pathOptions);
135
+ const runtime = readRuntimeState(pathOptions);
136
136
  metrics.push({
137
- key: 'runtime_endpoint_registry',
138
- value: endpoint ?? 'not registered',
139
- target: 'healthy while active, stopped or absent while idle',
140
- ok: !endpoint || endpoint.status === 'healthy' || endpoint.status === 'stopped',
141
- severity: endpoint?.status === 'degraded' ? 'error' : 'warning',
137
+ key: 'runtime_state_v2',
138
+ value: runtime ?? 'not registered',
139
+ target: 'ready while active, stopped or absent while idle',
140
+ ok: !runtime || runtime.status === 'ready' || runtime.status === 'stopped',
141
+ severity: runtime?.status === 'failed' ? 'error' : 'warning',
142
142
  });
143
+ const legacyEndpointPath = join(getDevFlowStateRoot(pathOptions), ['runtime', 'endpoint.json'].join('-'));
144
+ metrics.push({ key: 'legacy_runtime_endpoint_ignored', value: existsSync(legacyEndpointPath), target: false, ok: !existsSync(legacyEndpointPath), severity: 'warning' });
143
145
  const now = (dependencies.now ?? Date.now)();
144
146
  const openCircuits = listRuntimeHttpCircuits(pathOptions)
145
147
  .filter(circuit => circuit.status === 'open' && (circuit.openUntil ?? 0) > now);
@@ -4825,8 +4827,8 @@ async function checkUiReachability(dependencies) {
4825
4827
  const { manifest, metrics } = acceptanceManifestMetrics(dependencies);
4826
4828
  const routes = manifest?.ui?.routes ?? [];
4827
4829
  metrics.push({ key: "dashboard_routes", value: routes.length, target: ">= 13", ok: manifest?.ui?.status === "green" && routes.length >= 13, severity: "warning" });
4828
- const endpoint = readRuntimeEndpointState(doctorPathOptions(dependencies));
4829
- if ((!endpoint || endpoint.status === "stopped") && !dependencies.httpGet) {
4830
+ const runtime = readRuntimeState(doctorPathOptions(dependencies));
4831
+ if ((!runtime || runtime.status !== "ready") && !dependencies.httpGet) {
4830
4832
  metrics.push({
4831
4833
  key: "dashboard_server_health",
4832
4834
  value: "inactive",
@@ -4837,7 +4839,7 @@ async function checkUiReachability(dependencies) {
4837
4839
  return { name: "UI reachability", status: sectionStatus(metrics), metrics };
4838
4840
  }
4839
4841
  const port = dependencies.env?.PORT ?? process.env.PORT ?? "13337";
4840
- const healthUrl = `${endpoint?.url ?? `http://127.0.0.1:${port}`}/api/health`;
4842
+ const healthUrl = `${runtime?.url ?? `http://127.0.0.1:${port}`}/api/ready`;
4841
4843
  try {
4842
4844
  const response = await (dependencies.httpGet ?? defaultHttpGet)(healthUrl);
4843
4845
  metrics.push({ key: "dashboard_server_health", value: { url: healthUrl, status: response.status }, target: "HTTP 200", ok: response.status === 200, severity: "warning" });