@webpresso/agent-kit 3.1.26 → 3.1.30

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 (150) hide show
  1. package/catalog/AGENTS.md.tpl +7 -11
  2. package/catalog/agent/commands/verify.md +2 -2
  3. package/catalog/agent/rules/changeset-release.md +4 -2
  4. package/catalog/agent/rules/ci-cost-local-first.md +139 -0
  5. package/catalog/agent/rules/ci-test-perf.md +5 -1
  6. package/catalog/agent/rules/cmd-execution.md +9 -0
  7. package/catalog/agent/rules/pre-implementation.md +2 -1
  8. package/catalog/agent/rules/test-scan-perf.md +80 -0
  9. package/catalog/agent/rules/workflow-skills-routing.md +9 -4
  10. package/catalog/agent/skills/autopilot/SKILL.md +48 -11
  11. package/catalog/agent/skills/claude/SKILL.md +7 -0
  12. package/catalog/agent/skills/codex/SKILL.md +7 -0
  13. package/catalog/agent/skills/fix/SKILL.md +36 -8
  14. package/catalog/agent/skills/grok/SKILL.md +7 -0
  15. package/catalog/agent/skills/investigate/SKILL.md +12 -1
  16. package/catalog/agent/skills/pll/SKILL.md +53 -48
  17. package/catalog/agent/skills/team/SKILL.md +26 -9
  18. package/catalog/agent/skills/ultragoal/SKILL.md +147 -19
  19. package/catalog/agent/skills/verify/SKILL.md +89 -51
  20. package/dist/esm/audit/blueprint-lifecycle-sql.d.ts +8 -0
  21. package/dist/esm/audit/blueprint-lifecycle-sql.js +25 -1
  22. package/dist/esm/audit/blueprint-pr-coverage.js +68 -7
  23. package/dist/esm/audit/registry.d.ts +4 -4
  24. package/dist/esm/audit/registry.js +3 -0
  25. package/dist/esm/audit/roadmap-links.js +6 -0
  26. package/dist/esm/audit/test-scan-perf.d.ts +18 -0
  27. package/dist/esm/audit/test-scan-perf.js +275 -0
  28. package/dist/esm/blueprint/lifecycle/engine.d.ts +9 -0
  29. package/dist/esm/blueprint/lifecycle/engine.js +53 -6
  30. package/dist/esm/blueprint/lifecycle/review-provenance.d.ts +6 -0
  31. package/dist/esm/blueprint/lifecycle/review-provenance.js +93 -12
  32. package/dist/esm/blueprint/markdown/helpers.js +6 -2
  33. package/dist/esm/ci/act-replay.js +110 -7
  34. package/dist/esm/ci/act-runner.d.ts +4 -0
  35. package/dist/esm/ci/act-runner.js +85 -26
  36. package/dist/esm/ci/act-worktree-git.d.ts +11 -0
  37. package/dist/esm/ci/act-worktree-git.js +219 -0
  38. package/dist/esm/ci/native-session-memory-cache.d.ts +9 -1
  39. package/dist/esm/ci/native-session-memory-cache.js +9 -1
  40. package/dist/esm/ci/vitest-ci-shards.d.ts +6 -4
  41. package/dist/esm/ci/vitest-ci-shards.js +6 -4
  42. package/dist/esm/cli/auto-update/guard-tombstone.d.ts +25 -0
  43. package/dist/esm/cli/auto-update/guard-tombstone.js +67 -0
  44. package/dist/esm/cli/auto-update/installer.d.ts +4 -17
  45. package/dist/esm/cli/auto-update/installer.js +6 -57
  46. package/dist/esm/cli/auto-update/self-invocation.d.ts +37 -0
  47. package/dist/esm/cli/auto-update/self-invocation.js +62 -0
  48. package/dist/esm/cli/commands/audit.js +4 -0
  49. package/dist/esm/cli/commands/blueprint/mutations.js +35 -18
  50. package/dist/esm/cli/commands/blueprint/router.js +27 -2
  51. package/dist/esm/cli/commands/ci.d.ts +8 -1
  52. package/dist/esm/cli/commands/ci.js +80 -21
  53. package/dist/esm/cli/commands/dash/index.js +3 -3
  54. package/dist/esm/cli/commands/dash/keymap.js +1 -0
  55. package/dist/esm/cli/commands/dash/launch-preferences.d.ts +15 -0
  56. package/dist/esm/cli/commands/dash/launch-preferences.js +46 -17
  57. package/dist/esm/cli/commands/dash/plan-once-attention.d.ts +32 -0
  58. package/dist/esm/cli/commands/dash/plan-once-attention.js +50 -0
  59. package/dist/esm/cli/commands/dash/plan-once-label.d.ts +7 -0
  60. package/dist/esm/cli/commands/dash/plan-once-label.js +5 -0
  61. package/dist/esm/cli/commands/dash/plan-once-membership.d.ts +67 -0
  62. package/dist/esm/cli/commands/dash/plan-once-membership.js +151 -0
  63. package/dist/esm/cli/commands/dash/plan-once-merge.d.ts +143 -0
  64. package/dist/esm/cli/commands/dash/plan-once-merge.js +238 -0
  65. package/dist/esm/cli/commands/dash/plan-once-schema.d.ts +73 -0
  66. package/dist/esm/cli/commands/dash/plan-once-schema.js +119 -0
  67. package/dist/esm/cli/commands/dash/plan-once.d.ts +142 -0
  68. package/dist/esm/cli/commands/dash/plan-once.js +261 -0
  69. package/dist/esm/cli/commands/dash/tui/attention-hud.d.ts +9 -0
  70. package/dist/esm/cli/commands/dash/tui/attention-hud.js +9 -0
  71. package/dist/esm/cli/commands/dash/tui/chat-bridge.d.ts +41 -0
  72. package/dist/esm/cli/commands/dash/tui/chat-bridge.js +73 -0
  73. package/dist/esm/cli/commands/dash/tui/chat-mode.d.ts +47 -0
  74. package/dist/esm/cli/commands/dash/tui/chat-mode.js +98 -0
  75. package/dist/esm/cli/commands/dash/tui/frame.d.ts +3 -0
  76. package/dist/esm/cli/commands/dash/tui/frame.js +3 -1
  77. package/dist/esm/cli/commands/dash/tui/ipc-protocol.d.ts +87 -0
  78. package/dist/esm/cli/commands/dash/tui/ipc-protocol.js +128 -0
  79. package/dist/esm/cli/commands/dash/tui/native-host.d.ts +34 -0
  80. package/dist/esm/cli/commands/dash/tui/native-host.js +256 -0
  81. package/dist/esm/cli/commands/dash/tui/native-path.d.ts +11 -0
  82. package/dist/esm/cli/commands/dash/tui/native-path.js +41 -0
  83. package/dist/esm/cli/commands/dash/tui/palette.d.ts +1 -1
  84. package/dist/esm/cli/commands/dash/tui/palette.js +14 -0
  85. package/dist/esm/cli/commands/dash/tui/runtime.js +311 -4
  86. package/dist/esm/cli/commands/dash/tui/state.d.ts +41 -0
  87. package/dist/esm/cli/commands/dash/tui/state.js +257 -4
  88. package/dist/esm/cli/commands/format.js +0 -2
  89. package/dist/esm/cli/commands/init/config.d.ts +0 -1
  90. package/dist/esm/cli/commands/init/config.js +1 -4
  91. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/emitters/claude.d.ts +5 -6
  92. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/emitters/claude.js +6 -13
  93. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/ir.d.ts +0 -2
  94. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/ir.js +0 -2
  95. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/merge.d.ts +6 -3
  96. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/merge.js +39 -26
  97. package/dist/esm/cli/commands/init/scaffolders/agent-kit-global/index.js +1 -1
  98. package/dist/esm/cli/commands/init/scaffolders/codex-mcp/index.js +61 -23
  99. package/dist/esm/cli/commands/logs.d.ts +15 -0
  100. package/dist/esm/cli/commands/logs.js +192 -3
  101. package/dist/esm/cli/commands/package-manager.js +2 -1
  102. package/dist/esm/cli/commands/quality-log-store.d.ts +1 -0
  103. package/dist/esm/cli/commands/quality-log-store.js +187 -51
  104. package/dist/esm/cli/commands/review.js +5 -8
  105. package/dist/esm/cli/commands/secrets.d.ts +1 -0
  106. package/dist/esm/cli/commands/secrets.js +4 -1
  107. package/dist/esm/cli/commands/self-install-guard.d.ts +14 -32
  108. package/dist/esm/cli/commands/self-install-guard.js +17 -63
  109. package/dist/esm/cli/direct-provider-launch.js +25 -1
  110. package/dist/esm/hooks/doctor.d.ts +15 -0
  111. package/dist/esm/hooks/doctor.js +56 -0
  112. package/dist/esm/hooks/guard-switch/index.js +8 -4
  113. package/dist/esm/hooks/post-tool/lint-after-edit.js +6 -4
  114. package/dist/esm/hooks/precompact/index.js +5 -3
  115. package/dist/esm/hooks/pretool-guard/validators/forbidden-commands.js +4 -4
  116. package/dist/esm/hooks/pretool-guard/validators/mcp-redirect.d.ts +0 -1
  117. package/dist/esm/hooks/pretool-guard/validators/mcp-redirect.js +8 -5
  118. package/dist/esm/hooks/pretool-guard/validators/worktree-discipline.d.ts +9 -7
  119. package/dist/esm/hooks/pretool-guard/validators/worktree-discipline.js +126 -14
  120. package/dist/esm/hooks/sessionstart/index.d.ts +10 -0
  121. package/dist/esm/hooks/sessionstart/index.js +61 -4
  122. package/dist/esm/hooks/shared/types.d.ts +11 -0
  123. package/dist/esm/hooks/shared/types.js +21 -0
  124. package/dist/esm/mcp/tools/_shared/audit-kinds.d.ts +1 -1
  125. package/dist/esm/mcp/tools/audit.d.ts +2 -1
  126. package/dist/esm/mcp/tools/audit.js +10 -0
  127. package/dist/esm/mcp/tools/audits.d.ts +1 -0
  128. package/dist/esm/mcp/tools/ci-act.js +9 -11
  129. package/dist/esm/paths/state-root.js +9 -0
  130. package/dist/esm/review/authority.js +17 -2
  131. package/dist/esm/review/availability.js +18 -5
  132. package/dist/esm/review/subject.d.ts +15 -0
  133. package/dist/esm/review/subject.js +105 -10
  134. package/dist/esm/runtime/executor.d.ts +1 -0
  135. package/dist/esm/runtime/executor.js +2 -1
  136. package/dist/esm/secret-gate/runner.d.ts +1 -0
  137. package/dist/esm/secret-gate/runner.js +4 -1
  138. package/dist/esm/session-memory/current-session.js +2 -0
  139. package/dist/esm/session-memory/native-runtime.js +5 -3
  140. package/dist/esm/session-memory/native-warm-markers.d.ts +18 -0
  141. package/dist/esm/session-memory/native-warm-markers.js +22 -0
  142. package/dist/esm/session-memory/sync/types.d.ts +4 -0
  143. package/dist/esm/session-memory/types.d.ts +3 -1
  144. package/dist/esm/session-memory/types.js +2 -0
  145. package/dist/esm/ultragoal/runtime.js +44 -2
  146. package/dist/esm/worktrees/current.d.ts +1 -0
  147. package/dist/esm/worktrees/current.js +1 -0
  148. package/dist/esm/worktrees/project-agent-surfaces.d.ts +1 -0
  149. package/dist/esm/worktrees/project-agent-surfaces.js +2 -1
  150. package/package.json +17 -14
@@ -2,8 +2,9 @@ import { spawnSync } from "node:child_process";
2
2
  import { createHash } from "node:crypto";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { runQaCommand } from "#cli/commands/qa.js";
5
- import { validateTrackedReviewProvenance } from "#lifecycle/review-provenance.js";
5
+ import { collectV2ReviewProvenance, validateTrackedReviewProvenance, } from "#lifecycle/review-provenance.js";
6
6
  import { evaluateRequiredChecks } from "#mcp/tools/_shared/required-checks.js";
7
+ import { createDeliverySubjectAtRef, createPlanSubjectAtRef } from "#review/subject.js";
7
8
  import { scanBlueprintDirectory } from "#service/scanner.js";
8
9
  import { resolveBlueprintRoot } from "#utils/blueprint-root.js";
9
10
  import matter from "gray-matter";
@@ -105,6 +106,11 @@ async function collectPrProbe(cwd) {
105
106
  function hasRequiredGreenChecks(checks) {
106
107
  return evaluateRequiredChecks(checks).green;
107
108
  }
109
+ /**
110
+ * Validation needs two distinct reviewers bound to the current ultragoal source
111
+ * snapshot. Prefer legacy frontmatter+reviews.md; fall back to current v2 plan +
112
+ * delivery authorities (distinct lanes) when their subjects still match HEAD.
113
+ */
108
114
  function collectValidationEvidence(cwd, blueprintSlugs, sourceSnapshot) {
109
115
  const entries = scanBlueprintDirectory({
110
116
  baseDir: resolveBlueprintRoot(cwd),
@@ -115,7 +121,43 @@ function collectValidationEvidence(cwd, blueprintSlugs, sourceSnapshot) {
115
121
  if (!entry)
116
122
  return undefined;
117
123
  const approvals = matter(readFileSync(entry.path, "utf8")).data.approvals;
118
- return validateTrackedReviewProvenance(entry.path, approvals, { sourceSnapshot });
124
+ const legacy = validateTrackedReviewProvenance(entry.path, approvals, { sourceSnapshot });
125
+ if (legacy.valid)
126
+ return legacy;
127
+ const stableSlug = slug.includes("/") ? (slug.split("/").pop() ?? slug) : slug;
128
+ let deliveryDigest;
129
+ let planDigest;
130
+ try {
131
+ deliveryDigest = createDeliverySubjectAtRef(cwd, "HEAD", stableSlug).digest;
132
+ planDigest = createPlanSubjectAtRef(cwd, "HEAD", stableSlug).digest;
133
+ }
134
+ catch {
135
+ return undefined;
136
+ }
137
+ const bind = (records) => records.map((record) => ({
138
+ reviewer: record.reviewer,
139
+ artifact: record.artifact,
140
+ sourceSnapshot,
141
+ targetHash: record.targetHash,
142
+ }));
143
+ const delivery = bind(collectV2ReviewProvenance(entry.path, "delivery", "HEAD").filter((record) => record.targetHash === deliveryDigest));
144
+ const plan = bind(collectV2ReviewProvenance(entry.path, "plan", "HEAD").filter((record) => record.targetHash === planDigest));
145
+ // Prefer delivery as code-review lane; plan as verify/architecture lane.
146
+ const byReviewer = new Map();
147
+ for (const record of [...plan, ...delivery]) {
148
+ byReviewer.set(record.reviewer, record);
149
+ }
150
+ const v2Records = [...byReviewer.values()];
151
+ const distinctReviewers = [...new Set(v2Records.map((record) => record.reviewer))];
152
+ const distinctArtifacts = [...new Set(v2Records.map((record) => record.artifact))];
153
+ return {
154
+ distinctArtifacts,
155
+ distinctReviewers,
156
+ records: v2Records,
157
+ valid: v2Records.length >= 2 &&
158
+ distinctReviewers.length === v2Records.length &&
159
+ distinctArtifacts.length === v2Records.length,
160
+ };
119
161
  });
120
162
  if (evaluations.some((evaluation) => evaluation?.valid !== true))
121
163
  return undefined;
@@ -1,5 +1,6 @@
1
1
  import { type WorktreeDependencyResult } from "./dependencies.js";
2
2
  export interface ManagedWorktreeContext {
3
+ readonly kind: "owner" | "scratch";
3
4
  readonly repoRoot: string;
4
5
  readonly worktreePath: string;
5
6
  }
@@ -20,6 +20,7 @@ export function resolveCurrentManagedWorktreeContext(cwd) {
20
20
  if (!candidate)
21
21
  return null;
22
22
  return {
23
+ kind: candidate.entry.kind,
23
24
  repoRoot: candidate.entry.repoRoot,
24
25
  worktreePath,
25
26
  };
@@ -1,6 +1,7 @@
1
1
  export interface ProjectWorktreeAgentSurfacesInput {
2
2
  readonly worktreePath: string;
3
3
  readonly primaryRoot: string;
4
+ /** Package catalog root (`.../catalog`); unified sync receives its `agent/` child. */
4
5
  readonly catalogDir?: string;
5
6
  }
6
7
  /**
@@ -2,6 +2,7 @@ import { scaffoldAgent } from "#cli/commands/init/scaffold-agent";
2
2
  import { readConfig } from "#cli/commands/init/config";
3
3
  import { resolveCatalogDir } from "#cli/commands/init/index";
4
4
  import { runUnifiedSync } from "#symlinker/unified-sync";
5
+ import { join } from "node:path";
5
6
  /**
6
7
  * Seed `.agent/` and project rules/skills into a managed worktree.
7
8
  * Does not run full `wp setup` (hooks/home MCP plugins stay setup-owned).
@@ -11,7 +12,7 @@ export function projectWorktreeAgentSurfaces(input) {
11
12
  scaffoldAgent({ catalogDir, repoRoot: input.worktreePath, options: {} });
12
13
  const hosts = (readConfig(input.worktreePath) ?? readConfig(input.primaryRoot))?.hosts?.selected;
13
14
  runUnifiedSync({
14
- catalogDir,
15
+ catalogDir: join(catalogDir, "agent"),
15
16
  consumerRoot: input.worktreePath,
16
17
  ...(hosts ? { hosts } : {}),
17
18
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webpresso/agent-kit",
3
- "version": "3.1.26",
3
+ "version": "3.1.30",
4
4
  "private": false,
5
5
  "description": "TypeScript-first agent harness for guarded develop/deploy workflows: wp CLI gates, MCP tools, hooks, memory, worktrees, secrets, audits, and evidence checks.",
6
6
  "keywords": [
@@ -374,7 +374,7 @@
374
374
  "format": "./bin/wp format",
375
375
  "lint:pkg": "bun scripts/lint-pkg.ts && (command -v claude >/dev/null 2>&1 && claude plugin validate . || true)",
376
376
  "blueprints:check": "./bin/wp audit blueprint-lifecycle",
377
- "check:blueprint-done-ledger": "pnpm exec tsx scripts/check-blueprint-done-ledger.ts blueprints/in-progress/webpresso-desktop-app-collaborative-session-platform/_overview.md blueprints/completed/automation-control-plane-cli-mcp/_overview.md blueprints/draft/desktop-ac1-honest-solid-dry/_overview.md",
377
+ "check:blueprint-done-ledger": "pnpm exec tsx scripts/check-blueprint-done-ledger.ts blueprints/in-progress/webpresso-desktop-app-collaborative-session-platform/_overview.md blueprints/completed/automation-control-plane-cli-mcp/_overview.md blueprints/completed/desktop-ac1-honest-solid-dry/_overview.md",
378
378
  "docs:check": "./bin/wp audit docs-frontmatter",
379
379
  "catalog:check": "./bin/wp audit catalog-drift",
380
380
  "license:check": "./bin/wp audit open-source-licenses",
@@ -399,6 +399,9 @@
399
399
  "prepare": "husky",
400
400
  "mutation": "./bin/wp test --mutation",
401
401
  "e2e": "./bin/wp e2e --config playwright.config.ts",
402
+ "native:dash-tui:build": "cargo build --manifest-path native/dash-tui/Cargo.toml --release",
403
+ "native:dash-tui:test": "cargo test --manifest-path native/dash-tui/Cargo.toml",
404
+ "native:dash-tui:smoke": "cargo run --manifest-path native/dash-tui/Cargo.toml --release -- --smoke",
402
405
  "native:session-memory:build": "cargo build --manifest-path native/session-memory-engine/Cargo.toml --package session-memory-napi --release --locked",
403
406
  "native:session-memory:fmt": "cargo fmt --manifest-path native/session-memory-engine/Cargo.toml --all -- --check",
404
407
  "native:session-memory:clippy": "cargo clippy --manifest-path native/session-memory-engine/Cargo.toml --all-targets --all-features -- -D warnings",
@@ -426,7 +429,7 @@
426
429
  "@secretlint/secretlint-rule-preset-recommend": "^13.0.2",
427
430
  "@typescript/typescript6": "^6.0.2",
428
431
  "@webpresso/cli-contract": "^0.2.0",
429
- "better-sqlite3": "^12.11.1",
432
+ "better-sqlite3": "^13.0.1",
430
433
  "cac": "^7.0.0",
431
434
  "cli-truncate": "^6.1.1",
432
435
  "env-paths": "^4.0.0",
@@ -499,16 +502,16 @@
499
502
  "setupWpActionRef": "c2c71a7a4be446fc6858e6b57bf55a11ccfa2d88"
500
503
  },
501
504
  "optionalDependencies": {
502
- "@webpresso/agent-kit-runtime-darwin-arm64": "3.1.26",
503
- "@webpresso/agent-kit-runtime-darwin-x64": "3.1.26",
504
- "@webpresso/agent-kit-runtime-linux-x64": "3.1.26",
505
- "@webpresso/agent-kit-runtime-linux-arm64": "3.1.26",
506
- "@webpresso/agent-kit-runtime-windows-x64": "3.1.26",
507
- "@webpresso/agent-kit-session-memory-darwin-x64": "3.1.26",
508
- "@webpresso/agent-kit-session-memory-darwin-arm64": "3.1.26",
509
- "@webpresso/agent-kit-session-memory-linux-x64": "3.1.26",
510
- "@webpresso/agent-kit-session-memory-linux-arm64": "3.1.26",
511
- "@webpresso/agent-kit-session-memory-win32-x64": "3.1.26",
512
- "@webpresso/agent-kit-session-memory-win32-arm64": "3.1.26"
505
+ "@webpresso/agent-kit-runtime-darwin-arm64": "3.1.30",
506
+ "@webpresso/agent-kit-runtime-darwin-x64": "3.1.30",
507
+ "@webpresso/agent-kit-runtime-linux-x64": "3.1.30",
508
+ "@webpresso/agent-kit-runtime-linux-arm64": "3.1.30",
509
+ "@webpresso/agent-kit-runtime-windows-x64": "3.1.30",
510
+ "@webpresso/agent-kit-session-memory-darwin-x64": "3.1.30",
511
+ "@webpresso/agent-kit-session-memory-darwin-arm64": "3.1.30",
512
+ "@webpresso/agent-kit-session-memory-linux-x64": "3.1.30",
513
+ "@webpresso/agent-kit-session-memory-linux-arm64": "3.1.30",
514
+ "@webpresso/agent-kit-session-memory-win32-x64": "3.1.30",
515
+ "@webpresso/agent-kit-session-memory-win32-arm64": "3.1.30"
513
516
  }
514
517
  }