@webpresso/agent-kit 0.28.0 → 0.29.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 (117) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +2 -3
  3. package/README.md +2 -2
  4. package/bin/_run.js +6 -0
  5. package/bin/wp +5 -0
  6. package/catalog/base-kit/.github/actions/setup-webpresso/action.yml.tmpl +21 -0
  7. package/catalog/base-kit/.github/workflows/{ci.webpresso.yml.tmpl → ci.yml.tmpl} +17 -7
  8. package/catalog/base-kit/tsconfig.json.tmpl +1 -1
  9. package/catalog/docs/templates/blueprint.yaml +1 -1
  10. package/dist/esm/audit/_budgets.d.ts +9 -1
  11. package/dist/esm/audit/_budgets.js +8 -1
  12. package/dist/esm/audit/blueprint-db-consistency.js +2 -2
  13. package/dist/esm/audit/blueprint-lifecycle-sql.d.ts +17 -7
  14. package/dist/esm/audit/blueprint-lifecycle-sql.js +298 -48
  15. package/dist/esm/audit/blueprint-readme-drift.d.ts +6 -0
  16. package/dist/esm/audit/blueprint-readme-drift.js +110 -0
  17. package/dist/esm/audit/no-first-party-mjs.js +5 -4
  18. package/dist/esm/audit/package-surface.js +79 -10
  19. package/dist/esm/audit/repo-guardrails.d.ts +1 -1
  20. package/dist/esm/audit/repo-guardrails.js +43 -3
  21. package/dist/esm/audit/tech-debt-cadence.js +2 -3
  22. package/dist/esm/audit/toolchain-isolation.js +2 -3
  23. package/dist/esm/blueprint/core/parser.js +3 -2
  24. package/dist/esm/blueprint/core/schema.d.ts +3 -2
  25. package/dist/esm/blueprint/core/schema.js +1 -1
  26. package/dist/esm/blueprint/cross-repo/audit.js +3 -4
  27. package/dist/esm/blueprint/db/cold-start.js +2 -3
  28. package/dist/esm/blueprint/db/enums.d.ts +1 -1
  29. package/dist/esm/blueprint/db/ephemeral-projection.d.ts +25 -0
  30. package/dist/esm/blueprint/db/ephemeral-projection.js +36 -0
  31. package/dist/esm/blueprint/db/gc.d.ts +11 -0
  32. package/dist/esm/blueprint/db/gc.js +55 -0
  33. package/dist/esm/blueprint/db/ingester.js +39 -1
  34. package/dist/esm/blueprint/db/migrations/run.js +5 -3
  35. package/dist/esm/blueprint/db/paths.d.ts +13 -24
  36. package/dist/esm/blueprint/db/paths.js +25 -33
  37. package/dist/esm/blueprint/execution/progress-bridge.js +5 -4
  38. package/dist/esm/blueprint/freshness.d.ts +2 -0
  39. package/dist/esm/blueprint/freshness.js +3 -1
  40. package/dist/esm/blueprint/lifecycle/audit.js +6 -6
  41. package/dist/esm/blueprint/lifecycle/engine.d.ts +1 -1
  42. package/dist/esm/blueprint/lifecycle/engine.js +13 -9
  43. package/dist/esm/blueprint/lifecycle/transition-matrix.d.ts +5 -0
  44. package/dist/esm/blueprint/lifecycle/transition-matrix.js +20 -0
  45. package/dist/esm/blueprint/markdown/helpers.d.ts +1 -1
  46. package/dist/esm/blueprint/projection-ready.js +2 -0
  47. package/dist/esm/blueprint/service/BlueprintService.js +1 -1
  48. package/dist/esm/blueprint/service/blueprint-records.js +1 -1
  49. package/dist/esm/blueprint/tracked-document/parser.js +1 -1
  50. package/dist/esm/blueprint/utils/archive.d.ts +2 -2
  51. package/dist/esm/blueprint/utils/archive.js +5 -2
  52. package/dist/esm/blueprint/utils/package-assets.d.ts +13 -0
  53. package/dist/esm/blueprint/utils/package-assets.js +38 -6
  54. package/dist/esm/build/normalize-tsconfig-json-exports.d.ts +13 -0
  55. package/dist/esm/build/normalize-tsconfig-json-exports.js +39 -0
  56. package/dist/esm/build/package-manifest.js +12 -4
  57. package/dist/esm/build/release-policy.d.ts +9 -18
  58. package/dist/esm/build/release-policy.js +10 -19
  59. package/dist/esm/build/runtime-surface-policy.d.ts +14 -0
  60. package/dist/esm/build/runtime-surface-policy.js +13 -0
  61. package/dist/esm/cli/commands/audit-core.d.ts +2 -2
  62. package/dist/esm/cli/commands/audit.js +7 -3
  63. package/dist/esm/cli/commands/blueprint/db-commands.js +0 -3
  64. package/dist/esm/cli/commands/blueprint/mutations.d.ts +3 -2
  65. package/dist/esm/cli/commands/blueprint/mutations.js +45 -39
  66. package/dist/esm/cli/commands/blueprint/router-output.js +2 -2
  67. package/dist/esm/cli/commands/doctor.d.ts +1 -1
  68. package/dist/esm/cli/commands/doctor.js +4 -5
  69. package/dist/esm/cli/commands/init/config.d.ts +6 -10
  70. package/dist/esm/cli/commands/init/config.js +36 -20
  71. package/dist/esm/cli/commands/init/gitignore-patcher.js +0 -1
  72. package/dist/esm/cli/commands/init/index.d.ts +8 -1
  73. package/dist/esm/cli/commands/init/index.js +17 -19
  74. package/dist/esm/cli/commands/init/package-root.d.ts +20 -0
  75. package/dist/esm/cli/commands/init/package-root.js +110 -0
  76. package/dist/esm/cli/commands/init/scaffold-base-kit.js +5 -1
  77. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/index.d.ts +3 -0
  78. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/index.js +8 -24
  79. package/dist/esm/cli/commands/init/scaffolders/agent-kit-global/index.d.ts +9 -0
  80. package/dist/esm/cli/commands/init/scaffolders/agent-kit-global/index.js +79 -1
  81. package/dist/esm/cli/commands/init/scaffolders/claude-rules/index.js +2 -12
  82. package/dist/esm/cli/commands/init/scaffolders/subagents/index.js +2 -12
  83. package/dist/esm/config/tsconfig/cloudflare.json +1 -1
  84. package/dist/esm/config/tsconfig/library.json +1 -1
  85. package/dist/esm/config/tsconfig/react-library.json +3 -2
  86. package/dist/esm/config/tsconfig/react-router.json +1 -1
  87. package/dist/esm/dev/restore-dev-links/index.js +3 -4
  88. package/dist/esm/docs-linter/blueprint-plan.js +46 -4
  89. package/dist/esm/hooks/check-dev-link/index.js +3 -4
  90. package/dist/esm/hooks/doctor.d.ts +11 -0
  91. package/dist/esm/hooks/doctor.js +174 -30
  92. package/dist/esm/hooks/guard-switch/index.js +3 -5
  93. package/dist/esm/hooks/post-tool/lint-after-edit.js +4 -5
  94. package/dist/esm/hooks/pretool-guard/index.js +2 -4
  95. package/dist/esm/hooks/pretool-guard/runner.js +2 -4
  96. package/dist/esm/hooks/pretool-guard/validators/forbidden-commands.js +47 -6
  97. package/dist/esm/hooks/sessionstart/index.js +3 -4
  98. package/dist/esm/hooks/shared/direct-entrypoint.d.ts +10 -0
  99. package/dist/esm/hooks/shared/direct-entrypoint.js +21 -0
  100. package/dist/esm/hooks/stop/qa-changed-files.js +3 -5
  101. package/dist/esm/hooks/test-quality-check.js +3 -4
  102. package/dist/esm/mcp/blueprint-server.js +26 -3
  103. package/dist/esm/mcp/cli.js +2 -6
  104. package/dist/esm/mcp/server.d.ts +2 -0
  105. package/dist/esm/mcp/server.js +18 -3
  106. package/dist/esm/mcp/tools/_shared/audit-kinds.d.ts +1 -1
  107. package/dist/esm/mcp/tools/_shared/audit-kinds.js +1 -0
  108. package/dist/esm/mcp/tools/audit.d.ts +2 -1
  109. package/dist/esm/mcp/tools/audit.js +13 -3
  110. package/dist/esm/package.json +2 -0
  111. package/package.json +24 -15
  112. package/tsconfig/cloudflare.json +1 -1
  113. package/tsconfig/library.json +1 -1
  114. package/tsconfig/react-library.json +3 -2
  115. package/tsconfig/react-router.json +1 -1
  116. package/dist/esm/blueprint/db/legacy-migration.d.ts +0 -41
  117. package/dist/esm/blueprint/db/legacy-migration.js +0 -122
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Webpresso agent-kit Claude Code plugin: blueprints, skills, hooks, MCP server",
9
- "version": "0.28.0"
9
+ "version": "0.29.1"
10
10
  },
11
11
  "plugins": [
12
12
  {
@@ -23,5 +23,5 @@
23
23
  ]
24
24
  }
25
25
  ],
26
- "version": "0.28.0"
26
+ "version": "0.29.1"
27
27
  }
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "name": "webpresso",
3
- "version": "0.28.0",
3
+ "version": "0.29.1",
4
4
  "description": "Webpresso agent-kit: blueprints, skills, lore commit protocol, tech-debt lifecycle",
5
5
  "skills": "./skills",
6
6
  "commands": "./commands",
7
7
  "mcpServers": {
8
8
  "webpresso": {
9
- "command": "node",
9
+ "command": "${CLAUDE_PLUGIN_ROOT}/bin/wp",
10
10
  "args": [
11
- "${CLAUDE_PLUGIN_ROOT}/bin/wp.js",
12
11
  "mcp"
13
12
  ]
14
13
  }
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # @webpresso/agent-kit
2
2
 
3
3
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
4
- [![CI](https://github.com/webpresso/agent-kit/actions/workflows/ci.webpresso.yml/badge.svg)](https://github.com/webpresso/agent-kit/actions/workflows/ci.webpresso.yml)
4
+ [![CI](https://github.com/webpresso/agent-kit/actions/workflows/ci.agent-kit.yml/badge.svg)](https://github.com/webpresso/agent-kit/actions/workflows/ci.agent-kit.yml)
5
5
 
6
6
  > TypeScript infrastructure for AI-agent-driven development. One `wp` runtime
7
7
  > gives agents planning, tests, mutation, e2e, CI, docs, and debt tracking —
@@ -74,7 +74,7 @@ vp run public:consumer-smoke -- --setup-only
74
74
  | **Summary-first `wp_*` MCP tools** | `wp_test` / `wp_typecheck` / `wp_lint` / `wp_qa` / `wp_e2e` / `wp_format` / `wp_ci_act` / `wp_audit` return JSON with `bytes` / `tokensSaved` budget metadata | [`src/mcp/tools/`](src/mcp/tools/) (each with co-located `.test.ts`), [`src/mcp/server.integration.test.ts`](src/mcp/server.integration.test.ts) |
75
75
  | **MCP server + CLI surface** | Registers the tool set and exposes it to agents | [`src/mcp/server.ts`](src/mcp/server.ts), [`src/mcp/cli.ts`](src/mcp/cli.ts), [`src/mcp/cli.integration.test.ts`](src/mcp/cli.integration.test.ts) |
76
76
  | **Blueprint runtime** | Lifecycle states, dependency-aware task graph, structured authoring control plane (`wp_blueprint_depgraph` / `put` / `transition`) | [`src/mcp/blueprint-server.ts`](src/mcp/blueprint-server.ts), [`docs/lifecycle.md`](docs/lifecycle.md), [`docs/blueprint-format.md`](docs/blueprint-format.md) |
77
- | **Audit contract family** | `blueprint-lifecycle`, `docs-frontmatter`, `catalog-drift`, `vision`, `architecture-drift`, `bundle-budget`, `commit-message` (Lore), `tech-debt`, `absolute-path-policy`, `open-source-licenses`, … — each runs as a `wp_audit` MCP tool **and** a pre-commit/CI gate | [`src/audit/`](src/audit/), [`src/mcp/tools/audit.ts`](src/mcp/tools/audit.ts), [`.github/workflows/ci.webpresso.yml`](.github/workflows/ci.webpresso.yml) |
77
+ | **Audit contract family** | `blueprint-lifecycle`, `docs-frontmatter`, `catalog-drift`, `vision`, `architecture-drift`, `bundle-budget`, `commit-message` (Lore), `tech-debt`, `absolute-path-policy`, `open-source-licenses`, … — each runs as a `wp_audit` MCP tool **and** a pre-commit/CI gate | [`src/audit/`](src/audit/), [`src/mcp/tools/audit.ts`](src/mcp/tools/audit.ts), [`.github/workflows/ci.agent-kit.yml`](.github/workflows/ci.agent-kit.yml) |
78
78
  | **Symlinker** | Syncs canonical `.agent/` to per-IDE surfaces (Codex/Amp skills, Gemini TOML commands) via rulesync | [`src/symlinker/index.ts`](src/symlinker/index.ts), [`src/symlinker/symlinker.integration.test.ts`](src/symlinker/symlinker.integration.test.ts), [`docs/symlinker.md`](docs/symlinker.md) |
79
79
  | **Mutation testing** | `wp audit mutation` (Stryker) catches tests that pass without asserting | [`src/config/stryker/`](src/config/stryker/), `./stryker` + `./mutation` exports |
80
80
  | **Tech-debt lifecycle** | `accepted → needs-remediation → monitoring → resolved`, auto-filed from failing audits | [`src/blueprint/tech-debt/`](src/blueprint/tech-debt/), [`src/cli/commands/tech-debt/`](src/cli/commands/tech-debt/) |
package/bin/_run.js CHANGED
@@ -41,6 +41,8 @@ const RUNTIME_BIN_ARGS = {
41
41
  'wp-sessionstart-routing': ['hook', 'sessionstart-routing'],
42
42
  }
43
43
 
44
+ const RUNTIME_WP_SUBCOMMANDS = new Set(['mcp'])
45
+
44
46
  function resolvePackageRoot() {
45
47
  return join(dirname(fileURLToPath(import.meta.url)), '..')
46
48
  }
@@ -158,6 +160,10 @@ function buildRuntimeLaunchPlan({
158
160
  }) {
159
161
  const selectorArgs = RUNTIME_BIN_ARGS[binName]
160
162
  if (!selectorArgs) return null
163
+ if (binName === 'wp') {
164
+ const subcommand = forwardedArgs[0]
165
+ if (!RUNTIME_WP_SUBCOMMANDS.has(subcommand) && !forceCompiledRuntime) return null
166
+ }
161
167
 
162
168
  const manifest = runtimeManifest ?? readRuntimeManifest(repoRoot)
163
169
  if (!manifest) return null
package/bin/wp ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { runNamedBin } from './_run.js'
4
+
5
+ runNamedBin('wp')
@@ -0,0 +1,21 @@
1
+ name: Set up Webpresso tooling
2
+ description: >
3
+ Install shared Webpresso CLIs needed by the base-kit workflow surface.
4
+ Resolves @webpresso/agent-kit from package.json and installs vite-plus only
5
+ when the consumer repo explicitly catalogs it.
6
+ runs:
7
+ using: composite
8
+ steps:
9
+ - name: Install shared Webpresso CLIs
10
+ shell: bash
11
+ run: |
12
+ set -euo pipefail
13
+
14
+ AGENT_KIT_VERSION="$(node -e "const pkg=require('./package.json'); console.log(pkg.devDependencies?.['@webpresso/agent-kit'] || pkg.dependencies?.['@webpresso/agent-kit'] || 'latest')")"
15
+ VITE_PLUS_VERSION="$(node -e "const fs=require('fs'); const text=fs.existsSync('pnpm-workspace.yaml') ? fs.readFileSync('pnpm-workspace.yaml','utf8') : ''; const match=text.match(/^\\s*vite-plus:\\s*(.+)$/m); console.log(match ? match[1].trim() : '')")"
16
+
17
+ if [[ -n "${VITE_PLUS_VERSION}" ]]; then
18
+ npm install -g "vite-plus@${VITE_PLUS_VERSION}" "@webpresso/agent-kit@${AGENT_KIT_VERSION}"
19
+ else
20
+ npm install -g "@webpresso/agent-kit@${AGENT_KIT_VERSION}"
21
+ fi
@@ -1,4 +1,4 @@
1
- name: CI (webpresso baseline)
1
+ name: CI
2
2
 
3
3
  on:
4
4
  push:
@@ -22,16 +22,23 @@ jobs:
22
22
  with:
23
23
  node-version: '24.16.0'
24
24
  cache: pnpm
25
+ - uses: ./.github/actions/setup-webpresso
25
26
  - uses: oven-sh/setup-bun@v2
26
27
  with:
27
28
  bun-version: latest
28
29
  - run: pnpm install --frozen-lockfile
29
30
  - run: pnpm run verify:secrets
30
31
  - run: pnpm run audit:secret-provider-quarantine
32
+ - name: Run wp audit guardrails
33
+ run: |
34
+ WP="$(pwd)/node_modules/.bin/wp"
35
+ [ -x "$WP" ] || WP=wp
36
+ "$WP" audit guardrails
31
37
  - run: pnpm run typecheck
32
38
  - run: pnpm run lint
39
+ - run: pnpm run test
33
40
 
34
- test:
41
+ e2e:
35
42
  runs-on: ubuntu-latest
36
43
  steps:
37
44
  - uses: actions/checkout@v5
@@ -40,13 +47,14 @@ jobs:
40
47
  with:
41
48
  node-version: '24.16.0'
42
49
  cache: pnpm
50
+ - uses: ./.github/actions/setup-webpresso
43
51
  - uses: oven-sh/setup-bun@v2
44
52
  with:
45
53
  bun-version: latest
46
54
  - run: pnpm install --frozen-lockfile
47
- - run: pnpm run test
55
+ - run: pnpm run e2e
48
56
 
49
- wp-audits:
57
+ architecture-drift:
50
58
  runs-on: ubuntu-latest
51
59
  steps:
52
60
  - uses: actions/checkout@v5
@@ -55,17 +63,18 @@ jobs:
55
63
  with:
56
64
  node-version: '24.16.0'
57
65
  cache: pnpm
66
+ - uses: ./.github/actions/setup-webpresso
58
67
  - uses: oven-sh/setup-bun@v2
59
68
  with:
60
69
  bun-version: latest
61
70
  - run: pnpm install --frozen-lockfile
62
- - name: Run wp audit guardrails
71
+ - name: Check architecture drift contract
63
72
  run: |
64
73
  WP="$(pwd)/node_modules/.bin/wp"
65
74
  [ -x "$WP" ] || WP=wp
66
- "$WP" audit guardrails
75
+ "$WP" audit architecture-drift --root .
67
76
 
68
- deploy-contract:
77
+ deploy-verify:
69
78
  runs-on: ubuntu-latest
70
79
  steps:
71
80
  - uses: actions/checkout@v5
@@ -74,6 +83,7 @@ jobs:
74
83
  with:
75
84
  node-version: '24.16.0'
76
85
  cache: pnpm
86
+ - uses: ./.github/actions/setup-webpresso
77
87
  - uses: oven-sh/setup-bun@v2
78
88
  with:
79
89
  bun-version: latest
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "./node_modules/@webpresso/agent-kit/tsconfig/base.json",
2
+ "extends": "@webpresso/agent-kit/tsconfig/base.json",
3
3
  "compilerOptions": {
4
4
  "types": ["node", "vitest/globals"],
5
5
  "noEmit": true
@@ -104,7 +104,7 @@ task_format:
104
104
  - 'These are the current accepted task-heading forms enforced by the validator.'
105
105
  - 'Lane prefix is optional but recommended. Common lanes: [schema], [backend], [ui], [infra], [docs], [qa].'
106
106
  required_metadata:
107
- - '**Status:** todo|in_progress|blocked|done'
107
+ - '**Status:** todo|in-progress|blocked|done|dropped'
108
108
  notes:
109
109
  - 'Task metadata rules here reflect the current validator contract.'
110
110
  - 'Acceptance checkboxes are evidence, not the lifecycle source of truth.'
@@ -12,10 +12,18 @@ export declare const DEFAULT_BUDGETS: {
12
12
  readonly 'skill-md-total-each': {
13
13
  readonly max_bytes: 16384;
14
14
  };
15
+ readonly 'blueprint-wip-in-progress-max': {
16
+ readonly max: 3;
17
+ };
18
+ readonly 'blueprint-stale-in-progress-days': {
19
+ readonly max_days: 14;
20
+ };
15
21
  };
16
22
  export type BudgetKey = keyof typeof DEFAULT_BUDGETS;
17
23
  export type BudgetEntry = {
18
- max_bytes: number;
24
+ max_bytes?: number;
25
+ max?: number;
26
+ max_days?: number;
19
27
  suggest_compact_at?: number;
20
28
  warn_pct?: number;
21
29
  };
@@ -8,9 +8,14 @@ import { existsSync, readFileSync } from 'node:fs';
8
8
  import path from 'node:path';
9
9
  import { z } from 'zod';
10
10
  const budgetEntrySchema = z.object({
11
- max_bytes: z.number().int().positive(),
11
+ max_bytes: z.number().int().positive().optional(),
12
+ max: z.number().int().positive().optional(),
13
+ max_days: z.number().int().positive().optional(),
12
14
  suggest_compact_at: z.number().min(0).max(1).optional(),
13
15
  warn_pct: z.number().min(1).optional(),
16
+ })
17
+ .refine((entry) => entry.max_bytes !== undefined || entry.max !== undefined || entry.max_days !== undefined, {
18
+ message: 'budget entry must define at least one of max_bytes, max, or max_days',
14
19
  });
15
20
  const budgetFileSchema = z.object({
16
21
  budgets: z.record(z.string(), budgetEntrySchema),
@@ -20,6 +25,8 @@ export const DEFAULT_BUDGETS = {
20
25
  'claude-skill-description-each': { max_bytes: 800 },
21
26
  'agents-md-section-each': { max_bytes: 4096, suggest_compact_at: 0.75 },
22
27
  'skill-md-total-each': { max_bytes: 16384 },
28
+ 'blueprint-wip-in-progress-max': { max: 3 },
29
+ 'blueprint-stale-in-progress-days': { max_days: 14 },
23
30
  };
24
31
  /**
25
32
  * Load budgets from `.agent/.audit-budgets.yaml` if present, merging with defaults.
@@ -13,8 +13,8 @@
13
13
  import { createHash } from 'node:crypto';
14
14
  import { existsSync, readFileSync } from 'node:fs';
15
15
  import path from 'node:path';
16
+ import { resolveBlueprintProjectionDbPath } from '#db/paths.js';
16
17
  import { scanBlueprintDirectory } from '#service/scanner.js';
17
- const DB_PATH = path.join('.agent', '.blueprints.db');
18
18
  const _DISABLED_RESULT = {
19
19
  ok: true,
20
20
  title: 'Blueprint DB consistency (SQL)',
@@ -34,7 +34,7 @@ export async function auditBlueprintDbConsistency(cwd) {
34
34
  violations: [],
35
35
  };
36
36
  }
37
- const dbFile = path.join(cwd, DB_PATH);
37
+ const dbFile = resolveBlueprintProjectionDbPath(cwd);
38
38
  if (!existsSync(dbFile)) {
39
39
  return {
40
40
  ok: true,
@@ -1,17 +1,27 @@
1
1
  /**
2
- * `wp audit blueprint-lifecycle-sql` — SQL-backed rewrite of the existing
3
- * blueprint-lifecycle audit.
2
+ * `wp audit blueprint-lifecycle` — the single, deterministic blueprint-lifecycle
3
+ * audit.
4
4
  *
5
- * Uses the SQLite replica as the primary source when the DB file exists.
6
- * Falls back to the markdown-based audit when the DB has not been built yet.
5
+ * The verdict is a pure function of `markdown@HEAD`: this builds an EPHEMERAL
6
+ * in-memory SQLite projection from the repo's blueprint markdown
7
+ * (`buildEphemeralProjection`), runs the relational checks against it, and
8
+ * discards it. It also runs the structural markdown checks
9
+ * (`auditBlueprintLifecycle` — type / status-vs-folder / `_overview.md` presence /
10
+ * linking-frontmatter) and merges both result sets. No persistent on-disk
11
+ * projection is read, so the audit can never hit a stale/missing/locked DB and
12
+ * is identical across CLI, the `wp_audit` MCP tool, `wp doctor`, and CI.
7
13
  *
8
- * SQL checks (when DB exists):
14
+ * Relational checks (against the in-memory projection):
9
15
  * 1. Blueprints with status='in-progress' that have 0 tasks (invalid).
10
16
  * 2. Blueprints whose `status` column doesn't match the directory segment
11
- * derived from `file_path` (e.g. stored in completed/ but status=in-progress).
17
+ * derived from `file_path`.
12
18
  * 3. Tasks in state 'in-progress' whose dependencies are not all done.
13
19
  * 4. Blueprints with progress_pct < 100 but status='completed'.
14
20
  */
15
21
  import type { RepoAuditResult } from './repo-guardrails.js';
16
- export declare function auditBlueprintLifecycleSql(cwd: string): Promise<RepoAuditResult>;
22
+ export interface BlueprintLifecycleAuditOptions {
23
+ /** Opt-in: also audit `.omx/plans/` derived-handoff governance (`--legacy-omx`). */
24
+ readonly includeOmxPlans?: boolean;
25
+ }
26
+ export declare function auditBlueprintLifecycleSql(cwd?: string, options?: BlueprintLifecycleAuditOptions): Promise<RepoAuditResult>;
17
27
  //# sourceMappingURL=blueprint-lifecycle-sql.d.ts.map