@webpresso/agent-kit 3.1.30 → 3.3.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.
Files changed (300) hide show
  1. package/README.md +53 -15
  2. package/bin/_run.js +183 -20
  3. package/catalog/AGENTS.md.tpl +3 -3
  4. package/catalog/agent/agents/implementer.md +45 -0
  5. package/catalog/agent/rules/parallel-orchestration-quota.md +100 -0
  6. package/catalog/agent/rules/pre-implementation.md +28 -1
  7. package/catalog/agent/rules/supported-agent-clis.md +9 -0
  8. package/catalog/agent/rules/typescript-version.md +50 -0
  9. package/catalog/agent/skills/codex/SKILL.md +25 -1
  10. package/catalog/agent/skills/verify/SKILL.md +4 -2
  11. package/catalog/docs/templates/blueprint.md +1 -1
  12. package/dist/esm/audit/agents.js +1 -0
  13. package/dist/esm/audit/blueprint-lifecycle-sql.d.ts +12 -0
  14. package/dist/esm/audit/blueprint-lifecycle-sql.js +23 -2
  15. package/dist/esm/audit/blueprint-pr-coverage.js +4 -0
  16. package/dist/esm/audit/blueprint-trust.js +14 -10
  17. package/dist/esm/audit/changeset-evidence.d.ts +23 -0
  18. package/dist/esm/audit/changeset-evidence.js +30 -0
  19. package/dist/esm/audit/changeset-required.d.ts +10 -0
  20. package/dist/esm/audit/changeset-required.js +73 -0
  21. package/dist/esm/audit/ci-guardrails-detection.d.ts +27 -0
  22. package/dist/esm/audit/ci-guardrails-detection.js +68 -0
  23. package/dist/esm/audit/ci-guardrails-wiring.d.ts +22 -0
  24. package/dist/esm/audit/ci-guardrails-wiring.js +80 -0
  25. package/dist/esm/audit/ci-test-perf.js +30 -0
  26. package/dist/esm/audit/command-surface.js +4 -2
  27. package/dist/esm/audit/host-substitution-risk.d.ts +2 -0
  28. package/dist/esm/audit/host-substitution-risk.js +256 -0
  29. package/dist/esm/audit/registry.d.ts +4 -4
  30. package/dist/esm/audit/registry.js +13 -1
  31. package/dist/esm/audit/toolchain-isolation.js +1 -2
  32. package/dist/esm/audit/typescript-version.d.ts +2 -0
  33. package/dist/esm/audit/typescript-version.js +123 -0
  34. package/dist/esm/blueprint/core/parser.js +101 -2
  35. package/dist/esm/blueprint/core/schema.d.ts +1 -0
  36. package/dist/esm/blueprint/core/schema.js +26 -0
  37. package/dist/esm/blueprint/core/validation/criteria.d.ts +14 -0
  38. package/dist/esm/blueprint/core/validation/criteria.js +41 -2
  39. package/dist/esm/blueprint/core/validation/state.js +25 -14
  40. package/dist/esm/blueprint/db/migrations/run.js +4 -2
  41. package/dist/esm/blueprint/lifecycle/audit.d.ts +20 -0
  42. package/dist/esm/blueprint/lifecycle/audit.js +87 -20
  43. package/dist/esm/blueprint/lifecycle/canonicalize.d.ts +6 -0
  44. package/dist/esm/blueprint/lifecycle/canonicalize.js +135 -0
  45. package/dist/esm/blueprint/lifecycle/local.d.ts +2 -1
  46. package/dist/esm/blueprint/lifecycle/local.js +19 -3
  47. package/dist/esm/blueprint/lifecycle/review-provenance.d.ts +6 -0
  48. package/dist/esm/blueprint/lifecycle/review-provenance.js +68 -12
  49. package/dist/esm/blueprint/lifecycle/rollout-anchor.d.ts +97 -0
  50. package/dist/esm/blueprint/lifecycle/rollout-anchor.js +161 -0
  51. package/dist/esm/blueprint/service/BlueprintCreationService.d.ts +1 -0
  52. package/dist/esm/blueprint/service/BlueprintCreationService.js +53 -4
  53. package/dist/esm/blueprint/service/blueprint-tech-debt-links.js +16 -2
  54. package/dist/esm/blueprint/sync/client.d.ts +2 -1
  55. package/dist/esm/blueprint/sync/client.js +1 -1
  56. package/dist/esm/blueprint/trust/command-runner.d.ts +26 -0
  57. package/dist/esm/blueprint/trust/command-runner.js +148 -0
  58. package/dist/esm/blueprint/trust/dossier.d.ts +1 -0
  59. package/dist/esm/blueprint/trust/dossier.js +40 -6
  60. package/dist/esm/blueprint/trust/gates.d.ts +7 -0
  61. package/dist/esm/blueprint/trust/gates.js +20 -0
  62. package/dist/esm/blueprint/trust/promotion.d.ts +8 -0
  63. package/dist/esm/blueprint/trust/promotion.js +74 -112
  64. package/dist/esm/blueprint/trust/scaffold.d.ts +19 -0
  65. package/dist/esm/blueprint/trust/scaffold.js +64 -0
  66. package/dist/esm/blueprint/trust/validator.d.ts +1 -0
  67. package/dist/esm/blueprint/trust/validator.js +7 -1
  68. package/dist/esm/blueprint/utils/archive.js +27 -5
  69. package/dist/esm/blueprint/utils/document-paths.d.ts +18 -0
  70. package/dist/esm/blueprint/utils/document-paths.js +45 -12
  71. package/dist/esm/build/cli-mcp-parity.js +15 -0
  72. package/dist/esm/cli/bundle/commands/blueprint.d.ts +1 -0
  73. package/dist/esm/cli/bundle/commands/blueprint.js +1 -0
  74. package/dist/esm/cli/cli.d.ts +1 -1
  75. package/dist/esm/cli/cli.js +43 -0
  76. package/dist/esm/cli/commands/agent-launch.d.ts +8 -1
  77. package/dist/esm/cli/commands/agent-launch.js +93 -4
  78. package/dist/esm/cli/commands/audit-core.d.ts +1 -1
  79. package/dist/esm/cli/commands/audit-core.js +8 -1
  80. package/dist/esm/cli/commands/audit.js +21 -5
  81. package/dist/esm/cli/commands/blueprint/execution.js +18 -6
  82. package/dist/esm/cli/commands/blueprint/mutations.js +59 -40
  83. package/dist/esm/cli/commands/blueprint/router-dispatch.d.ts +2 -1
  84. package/dist/esm/cli/commands/blueprint/router-dispatch.js +20 -1
  85. package/dist/esm/cli/commands/blueprint/router-output.d.ts +21 -0
  86. package/dist/esm/cli/commands/blueprint/router-output.js +48 -17
  87. package/dist/esm/cli/commands/blueprint/router.d.ts +7 -0
  88. package/dist/esm/cli/commands/blueprint/router.js +13 -1
  89. package/dist/esm/cli/commands/ci-preflight.d.ts +13 -2
  90. package/dist/esm/cli/commands/ci-preflight.js +30 -6
  91. package/dist/esm/cli/commands/compile.js +5 -31
  92. package/dist/esm/cli/commands/dash/delivery-status.d.ts +1 -0
  93. package/dist/esm/cli/commands/dash/delivery-status.js +11 -4
  94. package/dist/esm/cli/commands/doctor.js +5 -0
  95. package/dist/esm/cli/commands/hook.d.ts +5 -0
  96. package/dist/esm/cli/commands/hook.js +15 -9
  97. package/dist/esm/cli/commands/init/config.js +2 -2
  98. package/dist/esm/cli/commands/init/convergence-apply.d.ts +88 -0
  99. package/dist/esm/cli/commands/init/convergence-apply.js +325 -0
  100. package/dist/esm/cli/commands/init/convergence-state.d.ts +13 -0
  101. package/dist/esm/cli/commands/init/convergence-state.js +54 -0
  102. package/dist/esm/cli/commands/init/convergence.d.ts +23 -0
  103. package/dist/esm/cli/commands/init/convergence.js +57 -0
  104. package/dist/esm/cli/commands/init/git-convergence.d.ts +19 -0
  105. package/dist/esm/cli/commands/init/git-convergence.js +168 -0
  106. package/dist/esm/cli/commands/init/gitignore-patcher.js +2 -0
  107. package/dist/esm/cli/commands/init/grok-privacy-smoke.d.ts +52 -0
  108. package/dist/esm/cli/commands/init/grok-privacy-smoke.js +91 -0
  109. package/dist/esm/cli/commands/init/host-native-proof.d.ts +18 -0
  110. package/dist/esm/cli/commands/init/host-native-proof.js +88 -0
  111. package/dist/esm/cli/commands/init/host-visibility.d.ts +2 -2
  112. package/dist/esm/cli/commands/init/host-visibility.js +94 -5
  113. package/dist/esm/cli/commands/init/index.d.ts +3 -0
  114. package/dist/esm/cli/commands/init/index.js +326 -173
  115. package/dist/esm/cli/commands/init/mcp-spec.d.ts +57 -0
  116. package/dist/esm/cli/commands/init/mcp-spec.js +273 -0
  117. package/dist/esm/cli/commands/init/merge.d.ts +1 -0
  118. package/dist/esm/cli/commands/init/merge.js +30 -1
  119. package/dist/esm/cli/commands/init/package-root.d.ts +7 -0
  120. package/dist/esm/cli/commands/init/package-root.js +10 -2
  121. package/dist/esm/cli/commands/init/plugin-cache-prune.d.ts +0 -3
  122. package/dist/esm/cli/commands/init/plugin-cache-prune.js +0 -1
  123. package/dist/esm/cli/commands/init/scaffold-agents-md.d.ts +1 -1
  124. package/dist/esm/cli/commands/init/scaffold-agents-md.js +9 -3
  125. package/dist/esm/cli/commands/init/scaffold-base-kit.d.ts +20 -0
  126. package/dist/esm/cli/commands/init/scaffold-base-kit.js +61 -5
  127. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/emitters/grok.d.ts +14 -8
  128. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/emitters/grok.js +41 -24
  129. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/index.d.ts +2 -0
  130. package/dist/esm/cli/commands/init/scaffolders/agent-hooks/index.js +54 -24
  131. package/dist/esm/cli/commands/init/scaffolders/codex-mcp/index.d.ts +12 -31
  132. package/dist/esm/cli/commands/init/scaffolders/codex-mcp/index.js +288 -202
  133. package/dist/esm/cli/commands/init/scaffolders/file-transaction.d.ts +22 -0
  134. package/dist/esm/cli/commands/init/scaffolders/file-transaction.js +230 -0
  135. package/dist/esm/cli/commands/init/scaffolders/grok-mcp/index.d.ts +38 -0
  136. package/dist/esm/cli/commands/init/scaffolders/grok-mcp/index.js +73 -0
  137. package/dist/esm/cli/commands/init/scaffolders/opencode-plugin/index.d.ts +21 -0
  138. package/dist/esm/cli/commands/init/scaffolders/opencode-plugin/index.js +559 -63
  139. package/dist/esm/cli/commands/init/untracked-collision.d.ts +14 -0
  140. package/dist/esm/cli/commands/init/untracked-collision.js +42 -0
  141. package/dist/esm/cli/commands/opencode-probe.d.ts +107 -0
  142. package/dist/esm/cli/commands/opencode-probe.js +323 -0
  143. package/dist/esm/cli/commands/opencode-rotate.d.ts +72 -0
  144. package/dist/esm/cli/commands/opencode-rotate.js +147 -0
  145. package/dist/esm/cli/commands/public-readiness.d.ts +11 -0
  146. package/dist/esm/cli/commands/public-readiness.js +42 -0
  147. package/dist/esm/cli/commands/quality-runner.js +3 -3
  148. package/dist/esm/cli/commands/review.d.ts +35 -3
  149. package/dist/esm/cli/commands/review.js +751 -209
  150. package/dist/esm/cli/commands/run-wait.d.ts +2 -0
  151. package/dist/esm/cli/commands/run-wait.js +122 -0
  152. package/dist/esm/cli/commands/rust-check.d.ts +24 -0
  153. package/dist/esm/cli/commands/rust-check.js +110 -0
  154. package/dist/esm/cli/commands/setup-help.js +1 -1
  155. package/dist/esm/cli/commands/setup-repair-help.js +1 -1
  156. package/dist/esm/cli/commands/typecheck.d.ts +1 -0
  157. package/dist/esm/cli/commands/typecheck.js +30 -1
  158. package/dist/esm/cli/commands/worktree/router-dispatch.d.ts +6 -0
  159. package/dist/esm/cli/commands/worktree/router-dispatch.js +126 -9
  160. package/dist/esm/cli/commands/worktree/router.js +10 -0
  161. package/dist/esm/cli/direct-provider-launch.js +9 -5
  162. package/dist/esm/cli/optional-tool-freshness.d.ts +27 -0
  163. package/dist/esm/cli/optional-tool-freshness.js +219 -9
  164. package/dist/esm/daemon/domains/git-actions.d.ts +29 -0
  165. package/dist/esm/daemon/domains/git-actions.js +136 -0
  166. package/dist/esm/daemon/domains/run-registry-interop.d.ts +16 -0
  167. package/dist/esm/daemon/domains/run-registry-interop.js +45 -0
  168. package/dist/esm/daemon/domains/sessions-search.d.ts +11 -0
  169. package/dist/esm/daemon/domains/sessions-search.js +29 -0
  170. package/dist/esm/daemon/handlers/blueprints-handlers.d.ts +5 -0
  171. package/dist/esm/daemon/handlers/blueprints-handlers.js +36 -0
  172. package/dist/esm/daemon/handlers/deploy-handlers.d.ts +6 -0
  173. package/dist/esm/daemon/handlers/deploy-handlers.js +5 -0
  174. package/dist/esm/daemon/handlers/fleet-handlers.d.ts +15 -0
  175. package/dist/esm/daemon/handlers/fleet-handlers.js +91 -0
  176. package/dist/esm/daemon/handlers/git-handlers.d.ts +6 -0
  177. package/dist/esm/daemon/handlers/git-handlers.js +27 -0
  178. package/dist/esm/daemon/handlers/product.d.ts +7 -0
  179. package/dist/esm/daemon/handlers/product.js +10 -119
  180. package/dist/esm/daemon/handlers/sessions-handlers.d.ts +12 -0
  181. package/dist/esm/daemon/handlers/sessions-handlers.js +31 -0
  182. package/dist/esm/daemon/handlers/shared.d.ts +5 -0
  183. package/dist/esm/daemon/handlers/shared.js +16 -0
  184. package/dist/esm/daemon/methods.d.ts +8 -1
  185. package/dist/esm/daemon/methods.js +7 -0
  186. package/dist/esm/daemon/protocol/contract.d.ts +43 -0
  187. package/dist/esm/daemon/protocol/contract.js +26 -0
  188. package/dist/esm/daemon/protocol/index.d.ts +1 -1
  189. package/dist/esm/daemon/protocol/index.js +1 -1
  190. package/dist/esm/hooks/__conformance__/matrix.d.ts +6 -0
  191. package/dist/esm/hooks/__conformance__/matrix.js +137 -0
  192. package/dist/esm/hooks/conformance/batch.js +5 -0
  193. package/dist/esm/hooks/doctor.d.ts +5 -3
  194. package/dist/esm/hooks/doctor.js +67 -16
  195. package/dist/esm/hooks/permission-request/index.js +9 -3
  196. package/dist/esm/hooks/permission-request/policy.d.ts +9 -0
  197. package/dist/esm/hooks/permission-request/policy.js +13 -0
  198. package/dist/esm/hooks/pretool-guard/dev-routing.d.ts +9 -0
  199. package/dist/esm/hooks/pretool-guard/dev-routing.js +41 -5
  200. package/dist/esm/hooks/pretool-guard/logger.d.ts +7 -0
  201. package/dist/esm/hooks/pretool-guard/logger.js +16 -0
  202. package/dist/esm/hooks/pretool-guard/runner.d.ts +6 -0
  203. package/dist/esm/hooks/pretool-guard/runner.js +68 -16
  204. package/dist/esm/hooks/pretool-guard/validators/blueprint.js +30 -10
  205. package/dist/esm/hooks/pretool-guard/validators/forbidden-commands.js +54 -0
  206. package/dist/esm/hooks/pretool-guard/validators/index.d.ts +7 -0
  207. package/dist/esm/hooks/pretool-guard/validators/index.js +21 -0
  208. package/dist/esm/hooks/pretool-guard/validators/path-contract.d.ts +19 -0
  209. package/dist/esm/hooks/pretool-guard/validators/path-contract.js +25 -8
  210. package/dist/esm/hooks/pretool-guard/validators/worktree-discipline.js +6 -1
  211. package/dist/esm/hooks/shared/guard-outcome.d.ts +149 -0
  212. package/dist/esm/hooks/shared/guard-outcome.js +215 -0
  213. package/dist/esm/hooks/shared/hook-bootstrap.d.ts +26 -0
  214. package/dist/esm/hooks/shared/hook-bootstrap.js +64 -1
  215. package/dist/esm/hooks/shared/types.d.ts +8 -5
  216. package/dist/esm/hooks/shared/types.js +50 -9
  217. package/dist/esm/hooks/stop/qa-changed-files.d.ts +11 -0
  218. package/dist/esm/hooks/stop/qa-changed-files.js +92 -0
  219. package/dist/esm/mcp/blueprint/_shared/lifecycle.js +14 -1
  220. package/dist/esm/mcp/blueprint/handlers/document-mutations.d.ts +5 -0
  221. package/dist/esm/mcp/blueprint/handlers/document-mutations.js +109 -11
  222. package/dist/esm/mcp/blueprint/handlers/review-log.js +8 -1
  223. package/dist/esm/mcp/blueprint/handlers/task-advance.js +113 -54
  224. package/dist/esm/mcp/blueprint/handlers/task-verify.js +39 -19
  225. package/dist/esm/mcp/blueprint/registration.js +3 -2
  226. package/dist/esm/mcp/server.d.ts +1 -0
  227. package/dist/esm/mcp/server.js +27 -0
  228. package/dist/esm/mcp/tools/_names.d.ts +1 -1
  229. package/dist/esm/mcp/tools/_names.js +5 -0
  230. package/dist/esm/mcp/tools/_registry.js +10 -0
  231. package/dist/esm/mcp/tools/_shared/audit-kinds.d.ts +1 -1
  232. package/dist/esm/mcp/tools/_shared/result.js +44 -1
  233. package/dist/esm/mcp/tools/audit.d.ts +5 -1
  234. package/dist/esm/mcp/tools/audit.js +42 -0
  235. package/dist/esm/mcp/tools/audits.d.ts +4 -0
  236. package/dist/esm/mcp/tools/ci-preflight.d.ts +50 -0
  237. package/dist/esm/mcp/tools/ci-preflight.js +183 -0
  238. package/dist/esm/mcp/tools/pr-upsert.js +39 -1
  239. package/dist/esm/mcp/tools/review-run.d.ts +28 -0
  240. package/dist/esm/mcp/tools/review-run.js +216 -0
  241. package/dist/esm/mcp/tools/run-wait.d.ts +86 -0
  242. package/dist/esm/mcp/tools/run-wait.js +593 -0
  243. package/dist/esm/mcp/tools/session-fetch-and-index.d.ts +1 -1
  244. package/dist/esm/mcp/tools/session-id.d.ts +3 -0
  245. package/dist/esm/mcp/tools/session-id.js +45 -0
  246. package/dist/esm/mcp/tools/session-info.d.ts +3 -0
  247. package/dist/esm/mcp/tools/session-info.js +49 -0
  248. package/dist/esm/output-transforms/audit.d.ts +23 -0
  249. package/dist/esm/output-transforms/audit.js +47 -0
  250. package/dist/esm/output-transforms/index.js +2 -0
  251. package/dist/esm/package.json +2 -0
  252. package/dist/esm/platform/client.d.ts +7 -1
  253. package/dist/esm/platform/github-contract-source.d.ts +2 -1
  254. package/dist/esm/pr-description/contract.js +24 -4
  255. package/dist/esm/review/authority.js +27 -14
  256. package/dist/esm/review/availability.d.ts +33 -0
  257. package/dist/esm/review/availability.js +122 -20
  258. package/dist/esm/review/delivery-verifier.d.ts +27 -0
  259. package/dist/esm/review/delivery-verifier.js +115 -0
  260. package/dist/esm/review/events.d.ts +3 -2
  261. package/dist/esm/review/events.js +23 -3
  262. package/dist/esm/review/execution/adapters.d.ts +11 -1
  263. package/dist/esm/review/execution/adapters.js +36 -10
  264. package/dist/esm/review/execution/artifacts.d.ts +1 -1
  265. package/dist/esm/review/execution/output-policy.d.ts +2 -0
  266. package/dist/esm/review/execution/output-policy.js +12 -0
  267. package/dist/esm/review/execution/review-checkout.js +121 -21
  268. package/dist/esm/review/execution/supervisor.js +36 -4
  269. package/dist/esm/review/execution/types.d.ts +9 -0
  270. package/dist/esm/review/opencode-account.d.ts +24 -0
  271. package/dist/esm/review/opencode-account.js +68 -0
  272. package/dist/esm/review/opencode-auth.d.ts +33 -0
  273. package/dist/esm/review/opencode-auth.js +79 -0
  274. package/dist/esm/review/subject.d.ts +25 -0
  275. package/dist/esm/review/subject.js +116 -26
  276. package/dist/esm/runtime/opencode-account-materializer.d.ts +34 -0
  277. package/dist/esm/runtime/opencode-account-materializer.js +33 -0
  278. package/dist/esm/rust/affected-manifests.d.ts +38 -0
  279. package/dist/esm/rust/affected-manifests.js +69 -0
  280. package/dist/esm/session-memory/fetch-index.d.ts +1 -1
  281. package/dist/esm/status/snapshot.js +32 -25
  282. package/dist/esm/test/duration-sequencer.d.ts +20 -0
  283. package/dist/esm/test/duration-sequencer.js +54 -0
  284. package/dist/esm/test/shard-durations.json +922 -0
  285. package/dist/esm/test/worker-budget.d.ts +6 -0
  286. package/dist/esm/test/worker-budget.js +59 -1
  287. package/dist/esm/test-helpers/global-setup.d.ts +1 -2
  288. package/dist/esm/test-helpers/global-setup.js +79 -32
  289. package/dist/esm/typecheck/planner.d.ts +9 -1
  290. package/dist/esm/typecheck/planner.js +31 -0
  291. package/dist/esm/ultragoal/service.d.ts +7 -0
  292. package/dist/esm/ultragoal/service.js +42 -2
  293. package/dist/esm/utils/write-json-file.js +3 -1
  294. package/dist/esm/worktrees/codex-project-trust.d.ts +15 -0
  295. package/dist/esm/worktrees/codex-project-trust.js +56 -0
  296. package/dist/esm/worktrees/orphan-scan.d.ts +50 -0
  297. package/dist/esm/worktrees/orphan-scan.js +211 -0
  298. package/dist/esm/worktrees/registry.d.ts +8 -0
  299. package/dist/esm/worktrees/registry.js +18 -3
  300. package/package.json +18 -13
@@ -0,0 +1,52 @@
1
+ export interface GrokPrivacyFlow {
2
+ readonly hostname: string;
3
+ readonly method: string;
4
+ readonly requestCount: number;
5
+ readonly requestBytes: number;
6
+ readonly responseBytes: number;
7
+ }
8
+ export interface GrokPrivacyBaseline {
9
+ readonly schemaVersion: 1;
10
+ readonly cliVersion: string;
11
+ readonly authMode: "local-session";
12
+ readonly transportVarianceBytes: number;
13
+ readonly maxAggregateRequestBytes: number;
14
+ readonly flows: readonly {
15
+ readonly hostname: string;
16
+ readonly method: string;
17
+ readonly maxRequestCount: number;
18
+ readonly maxRequestBytes: number;
19
+ }[];
20
+ }
21
+ export interface GrokPrivacyEvidence {
22
+ readonly schemaVersion: 1;
23
+ readonly host: "grok";
24
+ readonly cliVersion: string;
25
+ readonly authMode: "local-session";
26
+ readonly reviewedSha: string;
27
+ readonly traceSha256: string;
28
+ readonly sentinelObserved: false;
29
+ readonly native: {
30
+ readonly hooksTrusted: true;
31
+ readonly hookDenial: true;
32
+ readonly inspect: true;
33
+ readonly mcpList: true;
34
+ readonly mcpDoctor: true;
35
+ readonly localInference: true;
36
+ };
37
+ readonly flows: readonly GrokPrivacyFlow[];
38
+ }
39
+ export declare function buildGrokPrivacyEvidence(input: {
40
+ baseline: GrokPrivacyBaseline;
41
+ cliVersion: string;
42
+ reviewedSha: string;
43
+ sentinelObserved: boolean;
44
+ hooksTrusted: boolean;
45
+ hookDenialPassed: boolean;
46
+ inspectPassed: boolean;
47
+ mcpListPassed: boolean;
48
+ mcpDoctorPassed: boolean;
49
+ localInferencePassed: boolean;
50
+ flows: readonly GrokPrivacyFlow[];
51
+ }): GrokPrivacyEvidence;
52
+ export declare function serializeGrokPrivacyEvidence(evidence: GrokPrivacyEvidence): string;
@@ -0,0 +1,91 @@
1
+ import { createHash } from "node:crypto";
2
+ const EVIDENCE_KEYS = [
3
+ "schemaVersion",
4
+ "host",
5
+ "cliVersion",
6
+ "authMode",
7
+ "reviewedSha",
8
+ "traceSha256",
9
+ "sentinelObserved",
10
+ "native",
11
+ "flows",
12
+ ];
13
+ function normalizedFlows(flows) {
14
+ return [...flows]
15
+ .map((flow) => ({
16
+ hostname: flow.hostname.toLowerCase(),
17
+ method: flow.method.toUpperCase(),
18
+ requestCount: flow.requestCount,
19
+ requestBytes: flow.requestBytes,
20
+ responseBytes: flow.responseBytes,
21
+ }))
22
+ .sort((a, b) => `${a.hostname}\0${a.method}`.localeCompare(`${b.hostname}\0${b.method}`));
23
+ }
24
+ export function buildGrokPrivacyEvidence(input) {
25
+ const { baseline } = input;
26
+ if (input.cliVersion !== baseline.cliVersion) {
27
+ throw new Error(`Grok privacy proof requires pinned CLI ${baseline.cliVersion}; observed ${input.cliVersion}`);
28
+ }
29
+ if (!/^[a-f0-9]{40}$/u.test(input.reviewedSha)) {
30
+ throw new Error("Grok privacy proof requires a full reviewed git SHA");
31
+ }
32
+ if (input.sentinelObserved) {
33
+ throw new Error("Grok privacy proof detected the fixture sentinel in an outbound request");
34
+ }
35
+ if (!input.hooksTrusted ||
36
+ !input.hookDenialPassed ||
37
+ !input.inspectPassed ||
38
+ !input.mcpListPassed ||
39
+ !input.mcpDoctorPassed ||
40
+ !input.localInferencePassed) {
41
+ throw new Error("Grok privacy proof requires trusted hooks and passing native discovery");
42
+ }
43
+ const flows = normalizedFlows(input.flows);
44
+ const allowed = new Map(baseline.flows.map((flow) => [
45
+ `${flow.hostname.toLowerCase()}\0${flow.method.toUpperCase()}`,
46
+ flow,
47
+ ]));
48
+ for (const flow of flows) {
49
+ const expected = allowed.get(`${flow.hostname}\0${flow.method}`);
50
+ if (!expected) {
51
+ throw new Error(`Grok privacy proof observed unapproved flow ${flow.method} ${flow.hostname}`);
52
+ }
53
+ if (flow.requestCount > expected.maxRequestCount) {
54
+ throw new Error(`Grok privacy proof exceeded request count for ${flow.hostname}`);
55
+ }
56
+ if (flow.requestBytes > expected.maxRequestBytes + baseline.transportVarianceBytes) {
57
+ throw new Error(`Grok privacy proof exceeded request bytes for ${flow.hostname}`);
58
+ }
59
+ }
60
+ const aggregateRequestBytes = flows.reduce((total, flow) => total + flow.requestBytes, 0);
61
+ if (aggregateRequestBytes > baseline.maxAggregateRequestBytes + baseline.transportVarianceBytes) {
62
+ throw new Error("Grok privacy proof exceeded aggregate request bytes");
63
+ }
64
+ const trace = JSON.stringify(flows);
65
+ return {
66
+ schemaVersion: 1,
67
+ host: "grok",
68
+ cliVersion: input.cliVersion,
69
+ authMode: "local-session",
70
+ reviewedSha: input.reviewedSha,
71
+ traceSha256: createHash("sha256").update(trace).digest("hex"),
72
+ sentinelObserved: false,
73
+ native: {
74
+ hooksTrusted: true,
75
+ hookDenial: true,
76
+ inspect: true,
77
+ mcpList: true,
78
+ mcpDoctor: true,
79
+ localInference: true,
80
+ },
81
+ flows,
82
+ };
83
+ }
84
+ export function serializeGrokPrivacyEvidence(evidence) {
85
+ const keys = Object.keys(evidence);
86
+ if (keys.length !== EVIDENCE_KEYS.length ||
87
+ keys.some((key) => !EVIDENCE_KEYS.includes(key))) {
88
+ throw new Error("Grok privacy evidence contains an unknown field");
89
+ }
90
+ return `${JSON.stringify(evidence, null, 2)}\n`;
91
+ }
@@ -0,0 +1,18 @@
1
+ export declare const CLAUDE_NATIVE_PROOF_TOOL = "mcp__plugin_agent-kit_webpresso__wp_session_stats";
2
+ type JsonRecord = Record<string, unknown>;
3
+ export interface ClaudeNativeProofRecord {
4
+ readonly host: "claude";
5
+ readonly cliVersion: string;
6
+ readonly toolName: typeof CLAUDE_NATIVE_PROOF_TOOL;
7
+ readonly emptyArguments: true;
8
+ readonly success: true;
9
+ readonly elapsedMs: number;
10
+ readonly terminalEventSha256: string;
11
+ }
12
+ export declare function parseJsonLines(raw: string): JsonRecord[];
13
+ export declare function verifyClaudeNativeProof(events: readonly JsonRecord[], input: {
14
+ cliVersion: string;
15
+ elapsedMs: number;
16
+ }): ClaudeNativeProofRecord;
17
+ export declare function serializeClaudeNativeProof(record: ClaudeNativeProofRecord): string;
18
+ export {};
@@ -0,0 +1,88 @@
1
+ import { createHash } from "node:crypto";
2
+ export const CLAUDE_NATIVE_PROOF_TOOL = "mcp__plugin_agent-kit_webpresso__wp_session_stats";
3
+ function isRecord(value) {
4
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5
+ }
6
+ export function parseJsonLines(raw) {
7
+ return raw
8
+ .split(/\r?\n/u)
9
+ .filter((line) => line.trim() !== "")
10
+ .map((line) => {
11
+ const parsed = JSON.parse(line);
12
+ if (!isRecord(parsed))
13
+ throw new Error("Claude stream event must be a JSON object");
14
+ return parsed;
15
+ });
16
+ }
17
+ export function verifyClaudeNativeProof(events, input) {
18
+ const init = events.find((event) => event["type"] === "system" && event["subtype"] === "init");
19
+ if (!init)
20
+ throw new Error("Claude native proof missing system/init");
21
+ const pluginErrors = init["plugin_errors"];
22
+ if (Array.isArray(pluginErrors) && pluginErrors.length > 0) {
23
+ throw new Error("Claude native proof reported plugin load errors");
24
+ }
25
+ const plugins = Array.isArray(init["plugins"]) ? init["plugins"] : [];
26
+ const pluginNames = plugins
27
+ .map((plugin) => (isRecord(plugin) ? plugin["name"] : undefined))
28
+ .filter((name) => typeof name === "string");
29
+ if (pluginNames.length !== 1 || pluginNames[0] !== "agent-kit") {
30
+ throw new Error(`Claude native proof expected only agent-kit plugin; observed ${JSON.stringify(pluginNames)}`);
31
+ }
32
+ const tools = Array.isArray(init["tools"])
33
+ ? init["tools"].filter((tool) => typeof tool === "string")
34
+ : [];
35
+ if (tools.length !== 1 || tools[0] !== CLAUDE_NATIVE_PROOF_TOOL) {
36
+ throw new Error(`Claude native proof expected exactly ${CLAUDE_NATIVE_PROOF_TOOL}; observed tools=${JSON.stringify(tools)} mcp_servers=${JSON.stringify(init["mcp_servers"] ?? [])}`);
37
+ }
38
+ const mcpServers = Array.isArray(init["mcp_servers"]) ? init["mcp_servers"] : [];
39
+ const expectedServers = mcpServers.filter((server) => isRecord(server) &&
40
+ server["name"] === "plugin:agent-kit:webpresso" &&
41
+ server["status"] === "connected");
42
+ if (expectedServers.length !== 1) {
43
+ throw new Error(`Claude native proof expected one connected Agent Kit MCP server; observed ${JSON.stringify(mcpServers)}`);
44
+ }
45
+ const toolUses = events.flatMap((event) => {
46
+ const message = isRecord(event["message"]) ? event["message"] : null;
47
+ const content = message && Array.isArray(message["content"]) ? message["content"] : [];
48
+ return content.filter((block) => isRecord(block) && block["type"] === "tool_use");
49
+ });
50
+ if (toolUses.length !== 1) {
51
+ throw new Error(`Claude native proof expected exactly one tool use; observed ${toolUses.length}`);
52
+ }
53
+ const toolUse = toolUses[0];
54
+ if (toolUse["name"] !== CLAUDE_NATIVE_PROOF_TOOL) {
55
+ throw new Error(`Claude native proof observed unexpected tool: ${String(toolUse["name"])}`);
56
+ }
57
+ if (!isRecord(toolUse["input"]) || Object.keys(toolUse["input"]).length !== 0) {
58
+ throw new Error("Claude native proof tool arguments must be an empty object");
59
+ }
60
+ const terminal = events.findLast((event) => event["type"] === "result");
61
+ if (!terminal || terminal["subtype"] !== "success" || terminal["is_error"] === true) {
62
+ throw new Error("Claude native proof missing successful terminal result");
63
+ }
64
+ return {
65
+ host: "claude",
66
+ cliVersion: input.cliVersion,
67
+ toolName: CLAUDE_NATIVE_PROOF_TOOL,
68
+ emptyArguments: true,
69
+ success: true,
70
+ elapsedMs: Math.max(0, Math.min(Math.round(input.elapsedMs), 300_000)),
71
+ terminalEventSha256: createHash("sha256").update(JSON.stringify(terminal)).digest("hex"),
72
+ };
73
+ }
74
+ export function serializeClaudeNativeProof(record) {
75
+ const allowedKeys = [
76
+ "host",
77
+ "cliVersion",
78
+ "toolName",
79
+ "emptyArguments",
80
+ "success",
81
+ "elapsedMs",
82
+ "terminalEventSha256",
83
+ ];
84
+ if (Object.keys(record).some((key) => !allowedKeys.includes(key))) {
85
+ throw new Error("Claude native proof record contains an unknown field");
86
+ }
87
+ return `${JSON.stringify(record, null, 2)}\n`;
88
+ }
@@ -1,4 +1,4 @@
1
- export declare const AGENT_HOSTS: readonly ["codex", "claude", "opencode"];
1
+ export declare const AGENT_HOSTS: readonly ["codex", "claude", "opencode", "grok"];
2
2
  export type AgentHost = (typeof AGENT_HOSTS)[number];
3
3
  export declare const REQUIRED_CORE_CAPABILITIES: readonly ["verify", "fix", "investigate", "ai-deslop", "plan-refine", "ralplan", "best-practice-research", "testing-philosophy", "tph", "claude", "codex", "grok", "opencode-go", "plan-eng-review", "plan-ceo-review", "plan-design-review", "plan-devex-review", "browse", "devex-review", "design-review", "hooks-doctor", "tech-debt", "lore-protocol", "deep-interview", "deep-research", "autoresearch", "ultragoal", "autopilot", "team"];
4
4
  export declare const VISIBILITY_STATUSES: readonly ["visible-now", "visible-after-restart", "not-visible"];
@@ -21,7 +21,7 @@ export interface HostVisibilityAudit {
21
21
  readonly requiredCapabilities: readonly string[];
22
22
  readonly results: readonly HostSkillVisibility[];
23
23
  }
24
- export declare const SETUP_SURFACE_HOSTS: readonly ["claude", "codex", "opencode"];
24
+ export declare const SETUP_SURFACE_HOSTS: readonly ["claude", "codex", "opencode", "grok"];
25
25
  export type SetupSurfaceHost = (typeof SETUP_SURFACE_HOSTS)[number];
26
26
  export type SetupSurfaceArtifactStatus = "installed" | "missing" | "deferred";
27
27
  export type SetupSurfaceActiveStatus = "managed" | "not-installed";
@@ -6,10 +6,10 @@ import { SHARED_FAVORITE_SKILLS } from "./scaffold-agent.js";
6
6
  import { CLAUDE_DEV_ADAPTER_RELATIVE_PATH } from "./scaffolders/claude-plugin/index.js";
7
7
  import { CODEX_DEV_ADAPTER_RELATIVE_PATH } from "./scaffolders/codex-plugin/index.js";
8
8
  import { OPENCODE_PLUGIN_PACKAGE } from "./scaffolders/opencode-plugin/index.js";
9
- export const AGENT_HOSTS = ["codex", "claude", "opencode"];
9
+ export const AGENT_HOSTS = ["codex", "claude", "opencode", "grok"];
10
10
  export const REQUIRED_CORE_CAPABILITIES = SHARED_FAVORITE_SKILLS;
11
11
  export const VISIBILITY_STATUSES = ["visible-now", "visible-after-restart", "not-visible"];
12
- export const SETUP_SURFACE_HOSTS = ["claude", "codex", "opencode"];
12
+ export const SETUP_SURFACE_HOSTS = ["claude", "codex", "opencode", "grok"];
13
13
  export function parseAgentHosts(value) {
14
14
  if (value?.trim() === "none")
15
15
  return [];
@@ -103,6 +103,18 @@ export function hostSkillRoots(repoRoot, host, homeDir = homedir()) {
103
103
  ],
104
104
  global: [],
105
105
  };
106
+ case "grok":
107
+ // Grok reads AGENTS.md/CLAUDE.md natively for instructions; skills are
108
+ // shared from the Claude/agents surfaces plus a native `.grok/skills`.
109
+ return {
110
+ project: [
111
+ join(repoRoot, ".grok", "skills"),
112
+ join(repoRoot, ".claude", "skills"),
113
+ join(repoRoot, ".agents", "skills"),
114
+ ],
115
+ user: [join(homeDir, ".grok", "skills"), join(homeDir, ".claude", "skills")],
116
+ global: [],
117
+ };
106
118
  }
107
119
  }
108
120
  export function auditHostSkillVisibility(input) {
@@ -164,11 +176,13 @@ function allExist(repoRoot, relativePaths) {
164
176
  return relativePaths.every((relativePath) => existsSync(join(repoRoot, relativePath)));
165
177
  }
166
178
  function hasOpenCodePluginRegistration(repoRoot) {
167
- const configPath = join(repoRoot, "opencode.json");
179
+ const configPath = existsSync(join(repoRoot, "opencode.json"))
180
+ ? join(repoRoot, "opencode.json")
181
+ : join(repoRoot, "opencode.jsonc");
168
182
  if (!existsSync(configPath))
169
183
  return false;
170
184
  try {
171
- const parsed = JSON.parse(readFileSync(configPath, "utf8"));
185
+ const parsed = JSON.parse(stripJsonc(readFileSync(configPath, "utf8")));
172
186
  return (Array.isArray(parsed.plugin) &&
173
187
  parsed.plugin.some((entry) => entry === OPENCODE_PLUGIN_PACKAGE));
174
188
  }
@@ -176,6 +190,71 @@ function hasOpenCodePluginRegistration(repoRoot) {
176
190
  return false;
177
191
  }
178
192
  }
193
+ function stripJsonc(raw) {
194
+ let out = "";
195
+ let inString = false;
196
+ let quote = null;
197
+ let escaped = false;
198
+ for (let i = 0; i < raw.length; i += 1) {
199
+ const ch = raw[i];
200
+ const next = raw[i + 1];
201
+ if (inString) {
202
+ out += ch;
203
+ if (escaped)
204
+ escaped = false;
205
+ else if (ch === "\\")
206
+ escaped = true;
207
+ else if (ch === quote) {
208
+ inString = false;
209
+ quote = null;
210
+ }
211
+ continue;
212
+ }
213
+ if (ch === '"' || ch === "'") {
214
+ inString = true;
215
+ quote = ch;
216
+ out += ch;
217
+ continue;
218
+ }
219
+ if (ch === "/" && next === "/") {
220
+ while (i < raw.length && raw[i] !== "\n")
221
+ i += 1;
222
+ out += "\n";
223
+ continue;
224
+ }
225
+ if (ch === "/" && next === "*") {
226
+ i += 2;
227
+ while (i < raw.length && !(raw[i] === "*" && raw[i + 1] === "/"))
228
+ i += 1;
229
+ i += 1;
230
+ continue;
231
+ }
232
+ if (ch === ",") {
233
+ let j = i + 1;
234
+ while (j < raw.length) {
235
+ while (/\s/u.test(raw[j] ?? ""))
236
+ j += 1;
237
+ if (raw[j] === "/" && raw[j + 1] === "/") {
238
+ while (j < raw.length && raw[j] !== "\n")
239
+ j += 1;
240
+ continue;
241
+ }
242
+ if (raw[j] === "/" && raw[j + 1] === "*") {
243
+ j += 2;
244
+ while (j < raw.length && !(raw[j] === "*" && raw[j + 1] === "/"))
245
+ j += 1;
246
+ j += 2;
247
+ continue;
248
+ }
249
+ break;
250
+ }
251
+ if (raw[j] === "}" || raw[j] === "]")
252
+ continue;
253
+ }
254
+ out += ch;
255
+ }
256
+ return out;
257
+ }
179
258
  export function auditHostSetupSurfaceVisibility(input) {
180
259
  const { repoRoot, packageRoot } = input;
181
260
  const opencodePluginRegistered = hasOpenCodePluginRegistration(repoRoot);
@@ -210,7 +289,17 @@ export function auditHostSetupSurfaceVisibility(input) {
210
289
  active: opencodePluginRegistered ? "managed" : "not-installed",
211
290
  support: "full",
212
291
  required: false,
213
- ownership: "native npm plugin registration via the opencode.json plugin entry @webpresso/opencode-plugin",
292
+ ownership: "native npm plugin registration via the opencode.json/opencode.jsonc plugin entry @webpresso/opencode-plugin",
293
+ },
294
+ {
295
+ host: "grok",
296
+ artifact: existsSync(join(repoRoot, ".grok", "config.toml")) ? "installed" : "deferred",
297
+ active: existsSync(join(repoRoot, ".grok", "hooks", "webpresso.json"))
298
+ ? "managed"
299
+ : "not-installed",
300
+ support: "full",
301
+ required: false,
302
+ ownership: "native project .grok/config.toml MCP server plus .grok/hooks/webpresso.json; run /hooks-trust once to arm the hooks",
214
303
  },
215
304
  ];
216
305
  }
@@ -30,6 +30,7 @@ export interface InitFlags {
30
30
  repair?: boolean;
31
31
  profile?: string;
32
32
  }
33
+ export declare function setupDeprecationWarnings(flags: InitFlags): string[];
33
34
  /**
34
35
  * Which tier surfaces a given adoption-ladder profile scaffolds. Strict
35
36
  * supersets (see docs/adoption-ladder.md): quality ⊂ guarded ⊂ full.
@@ -83,6 +84,8 @@ export interface ResolveCatalogDirOptions {
83
84
  readonly argv0?: string;
84
85
  readonly argv1?: string;
85
86
  readonly pathEnv?: string;
87
+ readonly pathExtEnv?: string;
88
+ readonly platform?: NodeJS.Platform;
86
89
  }
87
90
  export declare function resolveCatalogDir(options?: ResolveCatalogDirOptions): string;
88
91
  export declare function formatHostSetupSurfaceVisibility(input: {