ultimate-pi 0.18.1 → 0.19.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 (325) hide show
  1. package/.agents/skills/harness-debate-plan/SKILL.md +1 -1
  2. package/.agents/skills/harness-decisions/SKILL.md +1 -2
  3. package/.agents/skills/harness-governor/SKILL.md +6 -5
  4. package/.agents/skills/web-retrieval/SKILL.md +163 -0
  5. package/.agents/skills/wiki-autoresearch/SKILL.md +6 -6
  6. package/.pi/PACKAGING.md +4 -4
  7. package/.pi/SYSTEM.md +75 -123
  8. package/.pi/agents/harness/incident-recorder.md +0 -1
  9. package/.pi/agents/harness/planning/decompose.md +0 -2
  10. package/.pi/agents/harness/planning/execution-plan-author.md +0 -2
  11. package/.pi/agents/harness/planning/hypothesis-validator.md +0 -2
  12. package/.pi/agents/harness/planning/hypothesis.md +0 -2
  13. package/.pi/agents/harness/planning/implementation-researcher.md +1 -3
  14. package/.pi/agents/harness/planning/plan-adversary.md +0 -2
  15. package/.pi/agents/harness/planning/plan-evaluator.md +1 -3
  16. package/.pi/agents/harness/planning/planning-context.md +0 -2
  17. package/.pi/agents/harness/planning/review-integrator.md +0 -2
  18. package/.pi/agents/harness/planning/sprint-contract-auditor.md +0 -2
  19. package/.pi/agents/harness/planning/stack-researcher.md +5 -3
  20. package/.pi/agents/harness/reviewing/adversary.md +0 -2
  21. package/.pi/agents/harness/reviewing/evaluator.md +0 -2
  22. package/.pi/agents/harness/reviewing/tie-breaker.md +0 -2
  23. package/.pi/agents/harness/running/executor.md +0 -2
  24. package/.pi/agents/harness/sentrux-bootstrap.md +0 -1
  25. package/.pi/agents/harness/sentrux-steward.md +0 -2
  26. package/.pi/agents/harness/trace-librarian.md +0 -1
  27. package/.pi/agents/harness/web-retrieval/web-answerer.md +35 -0
  28. package/.pi/agents/harness/web-retrieval/web-criteria-verifier.md +28 -0
  29. package/.pi/agents/harness/web-retrieval/web-gap-analyzer.md +31 -0
  30. package/.pi/agents/harness/web-retrieval/web-query-expander-fast.md +34 -0
  31. package/.pi/agents/harness/web-retrieval/web-query-expander.md +60 -0
  32. package/.pi/agents/harness/web-retrieval/web-summarizer.md +18 -0
  33. package/.pi/extensions/agt-kill-switch.ts +57 -0
  34. package/.pi/extensions/agt-prompt-guard.ts +32 -0
  35. package/.pi/extensions/custom-footer.ts +46 -145
  36. package/.pi/extensions/custom-header.ts +1 -1
  37. package/.pi/extensions/custom-system-prompt.ts +1 -1
  38. package/.pi/extensions/debate-orchestrator.ts +6 -6
  39. package/.pi/extensions/harness-ask-user.ts +7 -7
  40. package/.pi/extensions/harness-debate-tools.ts +26 -42
  41. package/.pi/extensions/harness-lens.ts +94 -0
  42. package/.pi/extensions/harness-plan-approval.ts +11 -11
  43. package/.pi/extensions/harness-run-context.ts +1070 -876
  44. package/.pi/extensions/harness-subagent-governance.ts +8 -0
  45. package/.pi/extensions/harness-subagent-submit.ts +34 -163
  46. package/.pi/extensions/harness-subagents.ts +3 -3
  47. package/.pi/extensions/harness-telemetry.ts +2 -2
  48. package/.pi/extensions/harness-web-guard.ts +2 -1
  49. package/.pi/extensions/harness-web-tools.ts +691 -53
  50. package/.pi/extensions/policy-gate.ts +25 -5
  51. package/.pi/extensions/sentrux-rules-sync.ts +1 -1
  52. package/.pi/extensions/subagent-governance.ts +92 -0
  53. package/.pi/extensions/trace-recorder.ts +1 -1
  54. package/.pi/extensions/{ultimate-pi-vcc.ts → vcc-compaction.ts} +1 -1
  55. package/.pi/harness/README.md +6 -2
  56. package/.pi/harness/agents.manifest.json +46 -25
  57. package/.pi/harness/agents.policy.yaml +309 -0
  58. package/.pi/harness/docs/adrs/0030-inhouse-vcc-compaction.md +1 -1
  59. package/.pi/harness/docs/adrs/0035-plan-phase-review-gate.md +1 -1
  60. package/.pi/harness/docs/adrs/0045-harness-lens-minimal-contract.md +49 -0
  61. package/.pi/harness/docs/adrs/0046-agt-policy-engine.md +51 -0
  62. package/.pi/harness/docs/adrs/0047-agt-layered-security.md +39 -0
  63. package/.pi/harness/docs/adrs/0048-tool-call-hook-order.md +25 -0
  64. package/.pi/harness/docs/adrs/0049-agents-policy-manifest.md +36 -0
  65. package/.pi/harness/docs/adrs/0050-agentic-web-retrieval-stack.md +46 -0
  66. package/.pi/harness/docs/adrs/README.md +5 -0
  67. package/.pi/harness/docs/harness-web-search.md +97 -0
  68. package/.pi/harness/env.harness.template +9 -1
  69. package/.pi/harness/evolution/README.md +1 -2
  70. package/.pi/harness/examples/agents.policy.project.yaml +19 -0
  71. package/.pi/harness/examples/policies/custom-deny-bash.yaml +9 -0
  72. package/.pi/harness/examples/web-heuristic-angles.project.yaml +22 -0
  73. package/.pi/harness/policies/bash-denylists.yaml +5 -0
  74. package/.pi/harness/policies/defaults.yaml +51 -0
  75. package/.pi/harness/policies/orchestrator.yaml +18 -0
  76. package/.pi/harness/policies/phases.yaml +10 -0
  77. package/.pi/harness/policies/roles.yaml +5 -0
  78. package/.pi/harness/policies/web-guard.yaml +5 -0
  79. package/.pi/harness/policies/workflow-sequences.yaml +9 -0
  80. package/.pi/harness/sentrux/architecture.manifest.json +26 -4
  81. package/.pi/harness/specs/observation.schema.json +2 -1
  82. package/.pi/harness/web-heuristic-angles.json +278 -0
  83. package/.pi/harness/web-heuristic-angles.yaml +182 -0
  84. package/.pi/lib/agents-policy.d.mts +70 -0
  85. package/.pi/lib/agents-policy.mjs +331 -0
  86. package/.pi/lib/agents-policy.ts +19 -0
  87. package/.pi/lib/agt/audit-run-sink.ts +52 -0
  88. package/.pi/lib/agt/build-evaluation-context.ts +285 -0
  89. package/.pi/lib/agt/config.ts +28 -0
  90. package/.pi/lib/agt/delegation.ts +69 -0
  91. package/.pi/lib/agt/evaluate-policy.ts +56 -0
  92. package/.pi/lib/agt/identity-registry.ts +41 -0
  93. package/.pi/lib/agt/index.ts +55 -0
  94. package/.pi/lib/agt/kill-switch-state.ts +11 -0
  95. package/.pi/lib/agt/legacy-evaluate.ts +101 -0
  96. package/.pi/lib/agt/policy-engine.ts +154 -0
  97. package/.pi/lib/agt/rings.ts +21 -0
  98. package/.pi/lib/agt/sre-hooks.ts +45 -0
  99. package/.pi/lib/agt/trust-run-store.ts +26 -0
  100. package/.pi/lib/agt/workflow-history.ts +29 -0
  101. package/.pi/lib/agt-governance-active.ts +14 -0
  102. package/.pi/lib/agt-tool-guard.ts +78 -0
  103. package/.pi/lib/ask-user/dialog.ts +314 -0
  104. package/.pi/{extensions/lib → lib}/debate-bus-core.ts +10 -10
  105. package/.pi/{extensions/lib → lib}/debate-bus-state.ts +1 -1
  106. package/.pi/{extensions/lib → lib}/extension-load-guard.ts +13 -2
  107. package/.pi/lib/harness-agt-tool-guard.ts +5 -0
  108. package/.pi/{extensions/lib → lib}/harness-artifact-gate.ts +1 -1
  109. package/.pi/lib/harness-debate-core-deps.ts +14 -0
  110. package/.pi/lib/harness-debate-workflow-deps.ts +43 -0
  111. package/.pi/lib/harness-lens/.gitattributes +1 -0
  112. package/.pi/lib/harness-lens/clients/edit-autopatch.ts +88 -0
  113. package/.pi/lib/harness-lens/clients/file-kinds.ts +380 -0
  114. package/.pi/lib/harness-lens/clients/file-time.ts +215 -0
  115. package/.pi/lib/harness-lens/clients/file-utils.ts +484 -0
  116. package/.pi/lib/harness-lens/clients/format-service.ts +276 -0
  117. package/.pi/lib/harness-lens/clients/formatters.ts +1000 -0
  118. package/.pi/lib/harness-lens/clients/git-guard.ts +31 -0
  119. package/.pi/lib/harness-lens/clients/indent-retarget.ts +90 -0
  120. package/.pi/lib/harness-lens/clients/installer/index.ts +2368 -0
  121. package/.pi/lib/harness-lens/clients/latency-logger.ts +80 -0
  122. package/.pi/lib/harness-lens/clients/lens-config.ts +43 -0
  123. package/.pi/lib/harness-lens/clients/lens-events.ts +164 -0
  124. package/.pi/lib/harness-lens/clients/lsp/aggregation.ts +91 -0
  125. package/.pi/lib/harness-lens/clients/lsp/client.ts +1466 -0
  126. package/.pi/lib/harness-lens/clients/lsp/config.ts +216 -0
  127. package/.pi/lib/harness-lens/clients/lsp/edits.ts +297 -0
  128. package/.pi/lib/harness-lens/clients/lsp/index.ts +1355 -0
  129. package/.pi/lib/harness-lens/clients/lsp/interactive-install.ts +424 -0
  130. package/.pi/lib/harness-lens/clients/lsp/language.ts +223 -0
  131. package/.pi/lib/harness-lens/clients/lsp/launch.ts +939 -0
  132. package/.pi/lib/harness-lens/clients/lsp/lsp-index.ts +11 -0
  133. package/.pi/lib/harness-lens/clients/lsp/path-utils.ts +12 -0
  134. package/.pi/lib/harness-lens/clients/lsp/server-strategies.ts +81 -0
  135. package/.pi/lib/harness-lens/clients/lsp/server.ts +1971 -0
  136. package/.pi/lib/harness-lens/clients/path-utils.ts +182 -0
  137. package/.pi/lib/harness-lens/clients/pipeline.ts +360 -0
  138. package/.pi/lib/harness-lens/clients/project-profile.ts +117 -0
  139. package/.pi/lib/harness-lens/clients/runtime-agent-end.ts +112 -0
  140. package/.pi/lib/harness-lens/clients/runtime-config.ts +33 -0
  141. package/.pi/lib/harness-lens/clients/runtime-coordinator.ts +186 -0
  142. package/.pi/lib/harness-lens/clients/runtime-tool-result.ts +171 -0
  143. package/.pi/lib/harness-lens/clients/safe-spawn.ts +339 -0
  144. package/.pi/lib/harness-lens/clients/secrets-scanner.ts +214 -0
  145. package/.pi/lib/harness-lens/clients/tool-policy.ts +2072 -0
  146. package/.pi/lib/harness-lens/clients/types.ts +59 -0
  147. package/.pi/lib/harness-lens/clients/widget-state.ts +283 -0
  148. package/.pi/lib/harness-lens/index.ts +532 -0
  149. package/.pi/lib/harness-lens/tools/lsp-diagnostics.ts +706 -0
  150. package/.pi/lib/harness-lens/tools/lsp-navigation.ts +1246 -0
  151. package/.pi/{extensions/lib → lib}/harness-posthog.ts +3 -0
  152. package/.pi/lib/harness-run-context-responses.ts +9 -0
  153. package/.pi/lib/harness-run-context.ts +0 -2
  154. package/.pi/{extensions/lib/spawn-policy.ts → lib/harness-spawn-policy.ts} +1 -0
  155. package/.pi/{extensions/lib → lib}/harness-spawn-topology.ts +1 -1
  156. package/.pi/lib/harness-subagent-auth.ts +81 -0
  157. package/.pi/{extensions/lib → lib}/harness-subagent-precheck.ts +10 -7
  158. package/.pi/{extensions/lib → lib}/harness-subagent-submit-pipeline.ts +3 -3
  159. package/.pi/lib/harness-subagent-submit-register.ts +163 -0
  160. package/.pi/{extensions/lib → lib}/harness-subagent-submit-registry.ts +1 -37
  161. package/.pi/{extensions/lib → lib}/harness-subagents-bridge.ts +74 -14
  162. package/.pi/{extensions/lib → lib}/harness-subprocess-bootstrap.ts +1 -1
  163. package/.pi/lib/harness-web/artifacts.ts +200 -0
  164. package/.pi/lib/harness-web/cache.ts +369 -0
  165. package/.pi/{extensions/lib → lib}/harness-web/run-cli.ts +42 -2
  166. package/.pi/{extensions/lib → lib}/plan-approval/create-plan.ts +2 -2
  167. package/.pi/{extensions/lib → lib}/plan-approval/format-plan.ts +2 -2
  168. package/.pi/{extensions/lib → lib}/plan-approval/plan-review.ts +162 -201
  169. package/.pi/{extensions/lib → lib}/plan-approval/render.ts +1 -1
  170. package/.pi/{extensions/lib → lib}/plan-approval/resolve-disk.ts +2 -2
  171. package/.pi/{extensions/lib → lib}/plan-approval/types.ts +1 -1
  172. package/.pi/{extensions/lib → lib}/plan-approval/validate.ts +3 -3
  173. package/.pi/{extensions/lib → lib}/plan-debate-envelope.ts +1 -1
  174. package/.pi/{extensions/lib → lib}/plan-debate-gate.ts +1 -1
  175. package/.pi/{extensions/lib → lib}/plan-debate-lane.ts +1 -4
  176. package/.pi/{extensions/lib → lib}/plan-messenger.ts +1 -1
  177. package/.pi/prompts/harness-plan.md +2 -1
  178. package/.pi/prompts/harness-setup.md +40 -65
  179. package/.pi/scripts/README.md +2 -5
  180. package/.pi/scripts/gen-web-heuristic-angles-json.mjs +24 -0
  181. package/.pi/scripts/generate-agents-policy-yaml.mjs +148 -0
  182. package/.pi/scripts/harness-agents-manifest.mjs +60 -3
  183. package/.pi/scripts/harness-agt-doctor.ts +36 -0
  184. package/.pi/scripts/harness-cli-verify.sh +14 -2
  185. package/.pi/scripts/harness-verify.mjs +191 -39
  186. package/.pi/scripts/harness-web-policy-guard.mjs +3 -3
  187. package/.pi/scripts/harness-web.py +218 -15
  188. package/.pi/scripts/harness_web/deep_search.py +55 -0
  189. package/.pi/scripts/harness_web/evidence_bundle.py +47 -0
  190. package/.pi/scripts/harness_web/find_similar.py +88 -0
  191. package/.pi/scripts/harness_web/heuristic_angles_shipped.py +85 -0
  192. package/.pi/scripts/harness_web/heuristic_config.py +251 -0
  193. package/.pi/scripts/harness_web/highlights.py +47 -0
  194. package/.pi/scripts/harness_web/multi_search.py +59 -0
  195. package/.pi/scripts/harness_web/output.py +24 -0
  196. package/.pi/scripts/harness_web/query_angles.py +116 -0
  197. package/.pi/scripts/harness_web/rank.py +163 -0
  198. package/.pi/scripts/harness_web/scrape.py +30 -0
  199. package/.pi/scripts/tests/test_harness_web_heuristic_config.py +132 -0
  200. package/.pi/scripts/tests/test_harness_web_query_angles.py +45 -0
  201. package/.pi/scripts/tests/test_harness_web_rank.py +56 -0
  202. package/.pi/scripts/validate-plan-dag.mjs +65 -74
  203. package/.pi/scripts/vendor-pi-vcc-settings.stub.ts +2 -2
  204. package/.pi/scripts/vendor-sync-pi-vcc.sh +1 -1
  205. package/.pi/skills/architecture/broker-domain/SKILL.md +65 -0
  206. package/.pi/skills/architecture/cqrs/SKILL.md +63 -0
  207. package/.pi/skills/architecture/event-driven/SKILL.md +60 -0
  208. package/.pi/skills/architecture/hexagonal-ports-adapters/SKILL.md +66 -0
  209. package/.pi/skills/architecture/layered/SKILL.md +68 -0
  210. package/.pi/skills/architecture/microkernel/SKILL.md +62 -0
  211. package/.pi/skills/architecture/microservices/SKILL.md +64 -0
  212. package/.pi/skills/architecture/modular-monolith/SKILL.md +65 -0
  213. package/.pi/skills/architecture/orchestration-driven-soa/SKILL.md +61 -0
  214. package/.pi/skills/architecture/pipeline/SKILL.md +63 -0
  215. package/.pi/skills/architecture/service-based/SKILL.md +64 -0
  216. package/.pi/skills/architecture/service-mesh/SKILL.md +60 -0
  217. package/.pi/skills/architecture/space-based/SKILL.md +60 -0
  218. package/.pi/skills/ast-grep/SKILL.md +40 -321
  219. package/.pi/skills/delivery/debugging-discipline/SKILL.md +36 -0
  220. package/.pi/skills/delivery/documentation-update/SKILL.md +33 -0
  221. package/.pi/skills/delivery/requirements-to-implementation/SKILL.md +34 -0
  222. package/.pi/skills/delivery/risk-based-verification/SKILL.md +43 -0
  223. package/.pi/skills/delivery/tradeoff-analysis/SKILL.md +34 -0
  224. package/.pi/skills/engineering/api-contract-design/SKILL.md +38 -0
  225. package/.pi/skills/engineering/cohesion-coupling/SKILL.md +43 -0
  226. package/.pi/skills/engineering/complexity-control/SKILL.md +31 -0
  227. package/.pi/skills/engineering/defensive-programming/SKILL.md +38 -0
  228. package/.pi/skills/engineering/dependency-management/SKILL.md +29 -0
  229. package/.pi/skills/engineering/domain-modeling/SKILL.md +32 -0
  230. package/.pi/skills/engineering/error-handling/SKILL.md +37 -0
  231. package/.pi/skills/engineering/legacy-code-seams/SKILL.md +35 -0
  232. package/.pi/skills/engineering/naming-and-intent/SKILL.md +29 -0
  233. package/.pi/skills/engineering/refactoring-safe-evolution/SKILL.md +35 -0
  234. package/.pi/skills/engineering/routine-function-design/SKILL.md +34 -0
  235. package/.pi/skills/engineering/small-change-discipline/SKILL.md +35 -0
  236. package/.pi/skills/lsp-navigation/SKILL.md +89 -0
  237. package/.pi/skills/quality/code-review-self-check/SKILL.md +35 -0
  238. package/.pi/skills/quality/privacy-data-handling/SKILL.md +26 -0
  239. package/.pi/skills/quality/security-review/SKILL.md +34 -0
  240. package/.pi/skills/quality/test-strategy/SKILL.md +33 -0
  241. package/.pi/skills/quality/testability-design/SKILL.md +33 -0
  242. package/.pi/skills/systems/concurrency-safety/SKILL.md +32 -0
  243. package/.pi/skills/systems/data-modeling-migrations/SKILL.md +31 -0
  244. package/.pi/skills/systems/observability-instrumentation/SKILL.md +32 -0
  245. package/.pi/skills/systems/performance-measurement/SKILL.md +35 -0
  246. package/.pi/skills/systems/reliability-design/SKILL.md +32 -0
  247. package/.sentrux/rules.toml +20 -4
  248. package/AGENTS.md +7 -2
  249. package/CHANGELOG.md +20 -0
  250. package/README.md +3 -12
  251. package/THIRD_PARTY_NOTICES.md +12 -21
  252. package/package.json +17 -7
  253. package/vendor/pi-subagents/src/agents.ts +45 -1
  254. package/vendor/pi-subagents/src/subagents.ts +866 -811
  255. package/vendor/pi-vcc/src/core/brief.ts +68 -99
  256. package/vendor/pi-vcc/src/core/settings.ts +2 -2
  257. package/.agents/skills/caveman/SKILL.md +0 -67
  258. package/.agents/skills/scrapling-web/SKILL.md +0 -98
  259. package/.pi/agents/harness/meta-optimizer.md +0 -36
  260. package/.pi/extensions/00-posthog-network-bootstrap.ts +0 -11
  261. package/.pi/extensions/lib/ask-user/dialog.ts +0 -260
  262. package/.pi/extensions/lib/harness-subagent-auth.ts +0 -207
  263. package/.pi/extensions/lib/harness-subagent-policy.ts +0 -236
  264. package/.pi/extensions/pi-model-router-harness.ts +0 -42
  265. package/.pi/harness/evolution/meta-optimizer.mjs +0 -99
  266. package/.pi/harness/specs/router-tuning-proposal.schema.json +0 -114
  267. package/.pi/model-router.example.json +0 -36
  268. package/.pi/prompts/harness-critic.md +0 -10
  269. package/.pi/prompts/harness-eval.md +0 -10
  270. package/.pi/prompts/harness-router-tune.md +0 -52
  271. package/.pi/scripts/harness-generate-model-router.mjs +0 -327
  272. package/.pi/scripts/harness-model-router-routing.test.mjs +0 -97
  273. package/.pi/scripts/harness-sync-model-router.mjs +0 -97
  274. package/.pi/scripts/harness_web/__pycache__/__init__.cpython-314.pyc +0 -0
  275. package/.pi/scripts/harness_web/__pycache__/config.cpython-314.pyc +0 -0
  276. package/.pi/scripts/harness_web/__pycache__/output.cpython-314.pyc +0 -0
  277. package/.pi/scripts/harness_web/__pycache__/scrape.cpython-314.pyc +0 -0
  278. package/.pi/scripts/harness_web/__pycache__/search.cpython-314.pyc +0 -0
  279. package/.pi/scripts/harness_web/__pycache__/search_ddg.cpython-314.pyc +0 -0
  280. package/.pi/scripts/harness_web/__pycache__/search_searxng.cpython-314.pyc +0 -0
  281. package/.pi/scripts/vendor-sync-pi-model-router.sh +0 -47
  282. package/vendor/pi-model-router/.prettierignore +0 -4
  283. package/vendor/pi-model-router/.prettierrc +0 -5
  284. package/vendor/pi-model-router/AGENTS.md +0 -39
  285. package/vendor/pi-model-router/LICENSE +0 -21
  286. package/vendor/pi-model-router/README.md +0 -99
  287. package/vendor/pi-model-router/UPSTREAM_PIN.md +0 -10
  288. package/vendor/pi-model-router/docs/ARCHITECTURE.md +0 -54
  289. package/vendor/pi-model-router/extensions/commands.ts +0 -720
  290. package/vendor/pi-model-router/extensions/config.ts +0 -348
  291. package/vendor/pi-model-router/extensions/constants.ts +0 -1
  292. package/vendor/pi-model-router/extensions/index.ts +0 -478
  293. package/vendor/pi-model-router/extensions/provider.ts +0 -580
  294. package/vendor/pi-model-router/extensions/routing.ts +0 -564
  295. package/vendor/pi-model-router/extensions/state.ts +0 -52
  296. package/vendor/pi-model-router/extensions/types.ts +0 -95
  297. package/vendor/pi-model-router/extensions/ui.ts +0 -144
  298. package/vendor/pi-model-router/model-router.example.json +0 -48
  299. package/vendor/pi-model-router/package.json +0 -48
  300. package/vendor/pi-model-router/tsconfig.json +0 -16
  301. /package/.pi/{prompts → harness/docs}/planning-rubrics.md +0 -0
  302. /package/.pi/{extensions/lib → lib}/ask-user/fallback.ts +0 -0
  303. /package/.pi/{extensions/lib → lib}/ask-user/render.ts +0 -0
  304. /package/.pi/{extensions/lib → lib}/ask-user/schema.ts +0 -0
  305. /package/.pi/{extensions/lib → lib}/ask-user/types.ts +0 -0
  306. /package/.pi/{extensions/lib → lib}/ask-user/validate-core.mjs +0 -0
  307. /package/.pi/{extensions/lib → lib}/ask-user/validate.ts +0 -0
  308. /package/.pi/{extensions/lib → lib}/harness-cocoindex-refresh.ts +0 -0
  309. /package/.pi/{extensions/lib → lib}/harness-paths.ts +0 -0
  310. /package/.pi/{extensions/lib → lib}/harness-spawn-budget.ts +0 -0
  311. /package/.pi/{extensions/lib → lib}/harness-vcc-settings.ts +0 -0
  312. /package/.pi/{extensions/lib → lib}/plan-approval/dialog.ts +0 -0
  313. /package/.pi/{extensions/lib → lib}/plan-approval/schema.ts +0 -0
  314. /package/.pi/{extensions/lib → lib}/plan-approval-readiness.ts +0 -0
  315. /package/.pi/{extensions/lib → lib}/plan-debate-eligibility.ts +0 -0
  316. /package/.pi/{extensions/lib → lib}/plan-debate-focus.ts +0 -0
  317. /package/.pi/{extensions/lib → lib}/plan-debate-id.ts +0 -0
  318. /package/.pi/{extensions/lib → lib}/plan-debate-lanes.ts +0 -0
  319. /package/.pi/{extensions/lib → lib}/plan-debate-round-status.ts +0 -0
  320. /package/.pi/{extensions/lib → lib}/plan-debate-write-guard.ts +0 -0
  321. /package/.pi/{extensions/lib → lib}/plan-review-gate.ts +0 -0
  322. /package/.pi/{extensions/lib → lib}/plan-review-integrator-rules.ts +0 -0
  323. /package/.pi/{extensions/lib → lib}/plan-scope-guard.ts +0 -0
  324. /package/.pi/{extensions/lib → lib}/posthog-client.ts +0 -0
  325. /package/.pi/{extensions/lib → lib}/posthog-node.d.ts +0 -0
@@ -1,7 +1,5 @@
1
1
  ---
2
2
  description: Plan-phase stack research (ctx7 + web, read-only file writes via parent).
3
- tools: read, grep, find, ls, bash, web_search, web_fetch, submit_stack_brief
4
- disallowed_tools: write, edit, ask_user, approve_plan, create_plan, subagent
5
3
  extensions: false
6
4
  thinking: medium
7
5
  max_turns: 16
@@ -15,7 +13,11 @@ Produce evidence-backed stack recommendations before ExecutionPlan authoring. Ra
15
13
 
16
14
  1. Read spawn context: task_summary, brownfield vs greenfield, constraints.
17
15
  2. **Libraries / APIs:** use context7-cli skill (`ctx7 library`, `ctx7 docs`). Record library ids in `evidence_refs`.
18
- 3. **Landscape / comparisons:** `web_search` + `web_fetch` (parent stores under `.web/`).
16
+ 3. **Landscape / comparisons (WRS — mandatory):** follow `web-retrieval` skill:
17
+ - Use scoped `artifactDir` (`.web/runs/<run_id>/` or tool-reported `.web/sessions/…/`)
18
+ - `subagent` `harness/web-retrieval/web-query-expander` → `<artifactDir>/angles.yaml`
19
+ - `web_search({ query, tier: "deep", anglesFile })` — **never** bare `web_search({ query })` for landscape
20
+ - `read` `<artifactDir>/search-deep.json`; `web_fetch` top 3 with `highlights: true`
19
21
  4. Brownfield: always include **extend current stack** as a ranked option with migration risk.
20
22
  5. Greenfield: ≥3 distinct options with pros/cons/risks and selection criteria.
21
23
  6. Grade each ref: `primary` (official docs), `secondary` (reputable guide), `anecdotal` (blog/issue thread).
@@ -1,8 +1,6 @@
1
1
  ---
2
2
  description: Adversarial harness reviewer focused on breaking assumptions and surfacing regressions.
3
- tools: read, grep, find, ls, submit_adversary_report
4
3
  extensions: false
5
- disallowed_tools: ask_user
6
4
  thinking: high
7
5
  max_turns: 20
8
6
  ---
@@ -1,8 +1,6 @@
1
1
  ---
2
2
  description: Independent harness evaluator producing structured pass/fail verdicts.
3
- tools: read, grep, find, ls, submit_eval_verdict
4
3
  extensions: false
5
- disallowed_tools: ask_user
6
4
  thinking: high
7
5
  max_turns: 20
8
6
  ---
@@ -1,8 +1,6 @@
1
1
  ---
2
2
  description: Final arbiter for unresolved evaluator vs adversary debates within budget limits.
3
- tools: read, grep, find, ls, submit_human_required
4
3
  extensions: false
5
- disallowed_tools: ask_user
6
4
  thinking: high
7
5
  max_turns: 15
8
6
  ---
@@ -1,8 +1,6 @@
1
1
  ---
2
2
  description: Harness executor that implements only within approved PlanPacket scope.
3
- tools: read, write, edit, bash, grep, find, ls, submit_executor_handoff
4
3
  extensions: true
5
- disallowed_tools: ask_user
6
4
  thinking: medium
7
5
  max_turns: 20
8
6
  ---
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  description: Bootstrap Sentrux rules for a harness project — seed architecture manifest, sync merge-safe rules.toml, verify sentrux check.
3
- tools: read, bash, grep, find, ls
4
3
  extensions: true
5
4
  thinking: low
6
5
  max_turns: 12
@@ -1,7 +1,5 @@
1
1
  ---
2
2
  description: Propose architecture.manifest.json changes from graphify evidence (read-only governance steward).
3
- tools: read, grep, find, ls, bash, submit_sentrux_manifest_proposal
4
- disallowed_tools: write, edit, ask_user, approve_plan, create_plan, subagent
5
3
  extensions: false
6
4
  thinking: high
7
5
  max_turns: 16
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  description: Harness trace librarian for run replay, artifact indexing, and forensics summaries.
3
- tools: read, grep, find, ls, submit_human_required
4
3
  extensions: false
5
4
  thinking: medium
6
5
  max_turns: 20
@@ -0,0 +1,35 @@
1
+ ---
2
+ description: WRS synthesis — cited answer from evidence-bundle.json.
3
+ extensions: false
4
+ thinking: medium
5
+ max_turns: 12
6
+ ---
7
+
8
+ ## Your task
9
+
10
+ Write a concise, **cited** answer to the research question using only sources in the evidence bundle.
11
+
12
+ ## Output path (required — no shared flat file)
13
+
14
+ Write to **`$HARNESS_WEB_ARTIFACT_DIR/answer.md`** when that env var is set (harness web-retrieval subprocesses).
15
+
16
+ Otherwise use the **`answerPath`** or **`artifactDir`** the parent gives in the spawn task (e.g. `.web/sessions/<id>/answer.md` or `.web/runs/<run_id>/answer.md`).
17
+
18
+ **Never** write to flat `.web/answer.md` — it collides across parallel sessions.
19
+
20
+ ## Input
21
+
22
+ Read the evidence bundle path from the parent task (default: same directory as the answer file, file name `evidence-bundle.json`). Each source has url, title, description, optional highlights.
23
+
24
+ ## Output format
25
+
26
+ Write markdown to the resolved answer path via parent tooling or include full content in final message:
27
+
28
+ - Lead with a direct answer (2–4 sentences).
29
+ - Supporting bullets with inline citations `[title](url)`.
30
+ - "Sources" section listing URLs used.
31
+ - Flag uncertainty where evidence is thin.
32
+
33
+ Do **not** invent URLs. Do **not** call web_search.
34
+
35
+ Bus label: `WebAnswerer`.
@@ -0,0 +1,28 @@
1
+ ---
2
+ description: WRS Websets analog — score candidates against NL criteria (YAML/CSV output).
3
+ extensions: false
4
+ thinking: medium
5
+ max_turns: 14
6
+ ---
7
+
8
+ ## Your task
9
+
10
+ Given NL **criteria** and a list of candidate URLs/titles/snippets (from search-deep.json), score each candidate and explain match quality.
11
+
12
+ ## Output
13
+
14
+ Fenced YAML:
15
+
16
+ ```yaml
17
+ criteria: "<restated criteria>"
18
+ results:
19
+ - url: "..."
20
+ title: "..."
21
+ match: true|false
22
+ score: 0.0-1.0
23
+ reason: "<one sentence>"
24
+ ```
25
+
26
+ Parent may convert to `.web/webset-manifest.csv`. Do **not** call web_search.
27
+
28
+ Bus label: `WebCriteriaVerifier`.
@@ -0,0 +1,31 @@
1
+ ---
2
+ description: WRS gap-fill — read search-deep.json, propose follow-up angles for missing coverage.
3
+ extensions: false
4
+ thinking: low
5
+ max_turns: 10
6
+ ---
7
+
8
+ ## Your task
9
+
10
+ After a deep search, identify **gaps** (missing facets, contradictions, stale angles) and output **1–3 new search angles** only.
11
+
12
+ ## Input
13
+
14
+ Parent provides paths to `.web/search-deep.json` and research intent. Use `read` on those artifacts.
15
+
16
+ ## Output (only)
17
+
18
+ Fenced YAML:
19
+
20
+ ```yaml
21
+ gaps:
22
+ - "<what is missing>"
23
+ angles:
24
+ - id: gap_1
25
+ query: "..."
26
+ rationale: "..."
27
+ ```
28
+
29
+ Do **not** call web tools. Parent runs `web_search(tier=deep, anglesFile=...)`.
30
+
31
+ Bus label: `WebGapAnalyzer`.
@@ -0,0 +1,34 @@
1
+ ---
2
+ description: WRS fast query planner — 2–3 angles only for latency-sensitive search (YAML only).
3
+ extensions: false
4
+ thinking: off
5
+ max_turns: 5
6
+ ---
7
+
8
+ ## Your task
9
+
10
+ Same as `web-query-expander`, but **optimized for speed**: produce **2–3** angles only (not 4–5). No web tools.
11
+
12
+ ## When to use (parent)
13
+
14
+ - User asked for **fast** / **quick** / **low latency** open-web lookup
15
+ - `web_search` with `tier: "instant"` or `tier: "standard"` where angles still help (optional)
16
+ - **Not** for landscape, prior art, comparisons, or harness-plan research — use `harness/web-retrieval/web-query-expander` instead
17
+
18
+ ## Output (only)
19
+
20
+ ```yaml
21
+ intent: "<one sentence>"
22
+ category: null
23
+ angles:
24
+ - id: core
25
+ query: "<short query>"
26
+ rationale: "..."
27
+ - id: official
28
+ query: "..."
29
+ rationale: "..."
30
+ ```
31
+
32
+ Keep queries ≤10 words. Do not call `web_search` or `web_fetch`.
33
+
34
+ Bus label: `WebQueryExpanderFast`.
@@ -0,0 +1,60 @@
1
+ ---
2
+ description: WRS query planner — NL intent to 4-5 SearXNG-optimized search angles (YAML only).
3
+ extensions: false
4
+ thinking: low
5
+ max_turns: 8
6
+ ---
7
+
8
+ ## Your task
9
+
10
+ Convert a research intent into **4–5 distinct search angles** optimized for DuckDuckGo / SearXNG keyword search. You do **not** search the web yourself.
11
+
12
+ ## When parent should spawn you (not `web-query-expander-fast`)
13
+
14
+ - Landscape, prior art, comparisons, stack/implementation research, harness-plan external research
15
+ - Any question where **recall** matters more than latency
16
+
17
+ For **fast / narrow** paths, parent should spawn `harness/web-retrieval/web-query-expander-fast` or skip expander and use `tier=instant|standard` with `expandHeuristic:true`.
18
+
19
+ ## Output (only)
20
+
21
+ Respond with a single fenced YAML block and nothing else:
22
+
23
+ ```yaml
24
+ intent: "<restated intent in one sentence>"
25
+ category: null # or code|company|people|paper|news
26
+ angles:
27
+ - id: official
28
+ query: "<short keyword-dense query>"
29
+ rationale: "<why this angle>"
30
+ - id: technical
31
+ query: "..."
32
+ rationale: "..."
33
+ # 4-5 angles total
34
+ ```
35
+
36
+ ## Angle design rules
37
+
38
+ - Each `query` must be **short** (≤12 words unless `site:` operator needed).
39
+ - Angles must be **distinct** (definitional, official docs, technical depth, criticism/limitations, recent news, implementations/repos).
40
+ - Use operators when helpful: `site:github.com`, `site:arxiv.org`, `filetype:pdf`, quoted phrases.
41
+ - Do **not** duplicate the same phrasing across angles.
42
+ - Do **not** call `web_search` or `web_fetch`.
43
+
44
+ ## Category packs (when spawn context includes category)
45
+
46
+ Subagent output is LLM-crafted. For **heuristic** fallback (`expandHeuristic:true`), category packs come from YAML:
47
+
48
+ - Package: `.pi/harness/web-heuristic-angles.yaml`
49
+ - Project override: `<project>/.pi/harness/web-heuristic-angles.yaml` (see `examples/web-heuristic-angles.project.yaml`)
50
+
51
+ | category | Default heuristic angles (configurable) |
52
+ |----------|----------------------------------------|
53
+ | code | github, stackoverflow, … |
54
+ | company | official site, news, … |
55
+ | people | linkedin, biography |
56
+ | paper | arxiv, scholar |
57
+ | news | recent year in query |
58
+ | *(custom)* | Add your own category key in project YAML |
59
+
60
+ Bus label: `WebQueryExpander`.
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: WRS page digest — summarize a fetched markdown excerpt.
3
+ extensions: false
4
+ thinking: low
5
+ max_turns: 6
6
+ ---
7
+
8
+ ## Your task
9
+
10
+ Produce a 5–8 bullet summary of a single page excerpt for the parent agent. Read the provided `.web/*.md` or excerpt path only.
11
+
12
+ ## Rules
13
+
14
+ - Bullets only; no preamble.
15
+ - Preserve factual claims; note if page is marketing-heavy.
16
+ - Do not call web tools.
17
+
18
+ Bus label: `WebSummarizer`.
@@ -0,0 +1,57 @@
1
+ /**
2
+ * AGT kill switch — arms on harness-abort and repeated policy denies (ADR 0047).
3
+ */
4
+
5
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
6
+ import { KillSwitch } from "@microsoft/agent-governance-sdk";
7
+ import { isHarnessProjectEnabled } from "../lib/harness-project-config.js";
8
+ import {
9
+ hasHarnessAbortSignal,
10
+ userVisiblePromptSlice,
11
+ } from "../lib/harness-run-context.js";
12
+
13
+ const killSwitch = new KillSwitch({ enabled: true });
14
+
15
+ import { recordHarnessPolicyDeny } from "../lib/agt/kill-switch-state.js";
16
+
17
+ export function getHarnessKillSwitch(): KillSwitch {
18
+ return killSwitch;
19
+ }
20
+
21
+ export function recordHarnessPolicyDenyForKillSwitch(sessionId: string): void {
22
+ const n = recordHarnessPolicyDeny(sessionId);
23
+ if (n >= 5) {
24
+ void killSwitch.kill(sessionId, {
25
+ reason: "Repeated harness policy denials",
26
+ });
27
+ }
28
+ }
29
+
30
+ export default function agtKillSwitch(pi: ExtensionAPI) {
31
+ if (!isHarnessProjectEnabled()) return;
32
+
33
+ pi.on("before_agent_start", async (event, ctx) => {
34
+ const prompt = userVisiblePromptSlice(event.prompt);
35
+ if (hasHarnessAbortSignal(prompt)) {
36
+ const sessionId = ctx.sessionManager.getSessionId();
37
+ await killSwitch.kill(sessionId, {
38
+ reason: "harness-abort command",
39
+ });
40
+ }
41
+ return undefined;
42
+ });
43
+
44
+ pi.on("tool_call", async (_event, ctx) => {
45
+ const sessionId = ctx.sessionManager.getSessionId();
46
+ const history = killSwitch.getHistory();
47
+ const armed = history.some((h) => h.agentId === sessionId);
48
+ if (armed) {
49
+ return {
50
+ block: true,
51
+ reason:
52
+ "agt-kill-switch: harness session halted after abort or repeated policy breaches.",
53
+ };
54
+ }
55
+ return undefined;
56
+ });
57
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * AGT PromptDefense heuristics on harness slash commands (ADR 0047).
3
+ */
4
+
5
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
6
+ import { PromptDefenseEvaluator } from "@microsoft/agent-governance-sdk";
7
+ import { isHarnessProjectEnabled } from "../lib/harness-project-config.js";
8
+ import { userVisiblePromptSlice } from "../lib/harness-run-context.js";
9
+
10
+ const evaluator = new PromptDefenseEvaluator({ minGrade: "D" });
11
+
12
+ export default function agtPromptGuard(pi: ExtensionAPI) {
13
+ if (!isHarnessProjectEnabled()) return;
14
+
15
+ pi.on("before_agent_start", async (event) => {
16
+ const prompt = userVisiblePromptSlice(event.prompt);
17
+ if (!prompt.trim()) return undefined;
18
+ if (!/\/harness-/.test(prompt)) return undefined;
19
+
20
+ const report = evaluator.evaluate(prompt);
21
+ if (report.isBlocking("D")) {
22
+ return {
23
+ message: {
24
+ customType: "harness-policy-violation",
25
+ display: true,
26
+ content: `agt-prompt-guard: prompt defense grade ${report.grade} (${report.score}). Missing defenses: ${report.missing.join(", ") || "see findings"}.`,
27
+ },
28
+ };
29
+ }
30
+ return undefined;
31
+ });
32
+ }