pi-oxidized 0.1.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 (1517) hide show
  1. package/.agent-tasks/pi-rust-rewrite/Cargo.lock +5022 -0
  2. package/.agent-tasks/pi-rust-rewrite/Cargo.toml +22 -0
  3. package/.agent-tasks/pi-rust-rewrite/GOALS.md +1 -0
  4. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/goldens/branch_summary.json +8 -0
  5. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/goldens/changelog.md +16 -0
  6. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/goldens/debug_dump.txt +11 -0
  7. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/goldens/events.jsonl +6 -0
  8. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/goldens/legacy_auth_migration.json +16 -0
  9. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/goldens/selector_snapshot.txt +9 -0
  10. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/goldens/session_stats.json +16 -0
  11. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/goldens/share_result.json +7 -0
  12. package/.agent-tasks/pi-rust-rewrite/fixtures/phase7/sessions/export-roundtrip.jsonl +6 -0
  13. package/.agent-tasks/pi-rust-rewrite/fixtures/provider-drain/isolation-expectations.json +21 -0
  14. package/.agent-tasks/pi-rust-rewrite/fixtures/rpc/commands.json +238 -0
  15. package/.agent-tasks/pi-rust-rewrite/fixtures/rpc/host-state.json +128 -0
  16. package/.agent-tasks/pi-rust-rewrite/fixtures/rpc/ts-goldens.json +1 -0
  17. package/.agent-tasks/pi-rust-rewrite/fixtures/rpc/ts-replay.ts +317 -0
  18. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v1/linear-with-compaction.expected.json +576 -0
  19. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v1/linear-with-compaction.jsonl +12 -0
  20. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v2/branched.expected.json +387 -0
  21. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v2/branched.jsonl +8 -0
  22. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/basic.expected.json +256 -0
  23. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/basic.jsonl +5 -0
  24. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/branched-labels.expected.json +474 -0
  25. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/branched-labels.jsonl +13 -0
  26. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/branched-session.expected.json +352 -0
  27. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/branched-session.jsonl +9 -0
  28. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/compacted-twice.expected.json +590 -0
  29. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/compacted-twice.jsonl +13 -0
  30. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/custom-messages.expected.json +400 -0
  31. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/custom-messages.jsonl +8 -0
  32. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/forked-header.expected.json +257 -0
  33. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/forked-header.jsonl +5 -0
  34. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/unknown-entries.expected.json +297 -0
  35. package/.agent-tasks/pi-rust-rewrite/fixtures/sessions/v3/unknown-entries.jsonl +6 -0
  36. package/.agent-tasks/pi-rust-rewrite/fixtures/tool-schemas/bash.json +16 -0
  37. package/.agent-tasks/pi-rust-rewrite/fixtures/tool-schemas/edit.json +34 -0
  38. package/.agent-tasks/pi-rust-rewrite/fixtures/tool-schemas/find.json +20 -0
  39. package/.agent-tasks/pi-rust-rewrite/fixtures/tool-schemas/grep.json +36 -0
  40. package/.agent-tasks/pi-rust-rewrite/fixtures/tool-schemas/ls.json +13 -0
  41. package/.agent-tasks/pi-rust-rewrite/fixtures/tool-schemas/read.json +20 -0
  42. package/.agent-tasks/pi-rust-rewrite/fixtures/tool-schemas/write.json +17 -0
  43. package/.agent-tasks/pi-rust-rewrite/fixtures/tools/edit-cases.json +93 -0
  44. package/.agent-tasks/pi-rust-rewrite/helpers/reopen_session.ts +168 -0
  45. package/.agent-tasks/pi-rust-rewrite/src/lib.rs +13 -0
  46. package/.agent-tasks/pi-rust-rewrite/tests/phase7_fixtures.rs +742 -0
  47. package/.agent-tasks/pi-rust-rewrite/tests/pi_ai_contract.rs +101 -0
  48. package/.agent-tasks/pi-rust-rewrite/tests/provider_drain_isolation.rs +760 -0
  49. package/.agent-tasks/pi-rust-rewrite/tests/rpc_parity.rs +679 -0
  50. package/.agent-tasks/pi-rust-rewrite/tests/session_compat.rs +839 -0
  51. package/.agent-tasks/pi-rust-rewrite/tests/tool_parity.rs +761 -0
  52. package/.github/workflows/release-verification.yml +204 -0
  53. package/.gitmodules +5 -0
  54. package/.outline/audit/coverage.json +3262 -0
  55. package/.outline/audit/queue.json +4841 -0
  56. package/.outline/review-fix-grill/iterations/1.json +767 -0
  57. package/.outline/review-fix-grill/iterations/2.json +69 -0
  58. package/.outline/review-fix-grill/iterations/3.json +81 -0
  59. package/.outline/review-fix-grill/iterations/4.json +35 -0
  60. package/.outline/review-fix-grill/iterations/5.json +21 -0
  61. package/.outline/review-fix-grill/queue.json +6454 -0
  62. package/.references/pi/.gitattributes +23 -0
  63. package/.references/pi/.github/APPROVED_CONTRIBUTORS +281 -0
  64. package/.references/pi/.github/ISSUE_TEMPLATE/bug.yml +45 -0
  65. package/.references/pi/.github/ISSUE_TEMPLATE/config.yml +5 -0
  66. package/.references/pi/.github/ISSUE_TEMPLATE/contribution.yml +36 -0
  67. package/.references/pi/.github/ISSUE_TEMPLATE/package-report.yml +49 -0
  68. package/.references/pi/.github/workflows/approve-contributor.yml +179 -0
  69. package/.references/pi/.github/workflows/build-binaries.yml +294 -0
  70. package/.references/pi/.github/workflows/ci.yml +42 -0
  71. package/.references/pi/.github/workflows/issue-analysis.yml +634 -0
  72. package/.references/pi/.github/workflows/issue-gate.yml +129 -0
  73. package/.references/pi/.github/workflows/issue-triage-labels.yml +142 -0
  74. package/.references/pi/.github/workflows/npm-audit.yml +31 -0
  75. package/.references/pi/.github/workflows/pr-gate.yml +128 -0
  76. package/.references/pi/.github/workflows/publish-model-catalog.yml +112 -0
  77. package/.references/pi/.github/workflows/remove-inprogress-on-close.yml +31 -0
  78. package/.references/pi/.husky/pre-commit +45 -0
  79. package/.references/pi/.pi/extensions/import-repro.ts +351 -0
  80. package/.references/pi/.pi/extensions/prompt-url-widget.ts +270 -0
  81. package/.references/pi/.pi/extensions/redraws.ts +24 -0
  82. package/.references/pi/.pi/extensions/tps.ts +47 -0
  83. package/.references/pi/.pi/git/.gitignore +2 -0
  84. package/.references/pi/.pi/npm/.gitignore +2 -0
  85. package/.references/pi/.pi/prompts/cl.md +54 -0
  86. package/.references/pi/.pi/prompts/is.md +28 -0
  87. package/.references/pi/.pi/prompts/pr.md +37 -0
  88. package/.references/pi/.pi/prompts/sa.md +163 -0
  89. package/.references/pi/.pi/prompts/wr.md +40 -0
  90. package/.references/pi/.pi/skills/add-llm-provider.md +57 -0
  91. package/.references/pi/AGENTS.md +162 -0
  92. package/.references/pi/CONTRIBUTING.md +102 -0
  93. package/.references/pi/LICENSE +21 -0
  94. package/.references/pi/README.md +99 -0
  95. package/.references/pi/SECURITY.md +87 -0
  96. package/.references/pi/biome.json +39 -0
  97. package/.references/pi/bun.lock +961 -0
  98. package/.references/pi/package-lock.json +6172 -0
  99. package/.references/pi/package.json +66 -0
  100. package/.references/pi/packages/agent/CHANGELOG.md +594 -0
  101. package/.references/pi/packages/agent/README.md +488 -0
  102. package/.references/pi/packages/agent/docs/agent-harness.md +488 -0
  103. package/.references/pi/packages/agent/docs/durable-harness.md +212 -0
  104. package/.references/pi/packages/agent/docs/hooks.md +445 -0
  105. package/.references/pi/packages/agent/docs/models.md +964 -0
  106. package/.references/pi/packages/agent/docs/observability.md +376 -0
  107. package/.references/pi/packages/agent/package.json +60 -0
  108. package/.references/pi/packages/agent/src/agent-loop.ts +792 -0
  109. package/.references/pi/packages/agent/src/agent.ts +575 -0
  110. package/.references/pi/packages/agent/src/harness/agent-harness.ts +1029 -0
  111. package/.references/pi/packages/agent/src/harness/compaction/branch-summarization.ts +261 -0
  112. package/.references/pi/packages/agent/src/harness/compaction/compaction.ts +753 -0
  113. package/.references/pi/packages/agent/src/harness/compaction/utils.ts +144 -0
  114. package/.references/pi/packages/agent/src/harness/env/nodejs.ts +569 -0
  115. package/.references/pi/packages/agent/src/harness/messages.ts +164 -0
  116. package/.references/pi/packages/agent/src/harness/prompt-templates.ts +267 -0
  117. package/.references/pi/packages/agent/src/harness/session/jsonl-repo.ts +179 -0
  118. package/.references/pi/packages/agent/src/harness/session/jsonl-storage.ts +314 -0
  119. package/.references/pi/packages/agent/src/harness/session/memory-repo.ts +50 -0
  120. package/.references/pi/packages/agent/src/harness/session/memory-storage.ts +133 -0
  121. package/.references/pi/packages/agent/src/harness/session/repo-utils.ts +51 -0
  122. package/.references/pi/packages/agent/src/harness/session/session.ts +338 -0
  123. package/.references/pi/packages/agent/src/harness/session/uuid.ts +54 -0
  124. package/.references/pi/packages/agent/src/harness/skills.ts +375 -0
  125. package/.references/pi/packages/agent/src/harness/system-prompt.ts +34 -0
  126. package/.references/pi/packages/agent/src/harness/types.ts +838 -0
  127. package/.references/pi/packages/agent/src/harness/utils/shell-output.ts +135 -0
  128. package/.references/pi/packages/agent/src/harness/utils/truncate.ts +344 -0
  129. package/.references/pi/packages/agent/src/index.ts +46 -0
  130. package/.references/pi/packages/agent/src/node.ts +2 -0
  131. package/.references/pi/packages/agent/src/proxy.ts +367 -0
  132. package/.references/pi/packages/agent/src/types.ts +430 -0
  133. package/.references/pi/packages/agent/test/agent-loop.test.ts +1424 -0
  134. package/.references/pi/packages/agent/test/agent.test.ts +699 -0
  135. package/.references/pi/packages/agent/test/e2e.test.ts +404 -0
  136. package/.references/pi/packages/agent/test/harness/agent-harness-stream.test.ts +213 -0
  137. package/.references/pi/packages/agent/test/harness/agent-harness.test.ts +608 -0
  138. package/.references/pi/packages/agent/test/harness/compaction.test.ts +655 -0
  139. package/.references/pi/packages/agent/test/harness/nodejs-env.test.ts +321 -0
  140. package/.references/pi/packages/agent/test/harness/prompt-templates.test.ts +90 -0
  141. package/.references/pi/packages/agent/test/harness/repo.test.ts +92 -0
  142. package/.references/pi/packages/agent/test/harness/resource-formatting.test.ts +24 -0
  143. package/.references/pi/packages/agent/test/harness/session-test-utils.ts +55 -0
  144. package/.references/pi/packages/agent/test/harness/session-uuid.test.ts +50 -0
  145. package/.references/pi/packages/agent/test/harness/session.test.ts +203 -0
  146. package/.references/pi/packages/agent/test/harness/skills.test.ts +116 -0
  147. package/.references/pi/packages/agent/test/harness/storage.test.ts +341 -0
  148. package/.references/pi/packages/agent/test/harness/system-prompt.test.ts +66 -0
  149. package/.references/pi/packages/agent/test/harness/truncate.test.ts +169 -0
  150. package/.references/pi/packages/agent/test/scratch/simple.ts +72 -0
  151. package/.references/pi/packages/agent/test/utils/calculate.ts +32 -0
  152. package/.references/pi/packages/agent/test/utils/get-current-time.ts +46 -0
  153. package/.references/pi/packages/agent/tsconfig.build.json +13 -0
  154. package/.references/pi/packages/agent/vitest.config.ts +21 -0
  155. package/.references/pi/packages/agent/vitest.harness.config.ts +28 -0
  156. package/.references/pi/packages/ai/CHANGELOG.md +1739 -0
  157. package/.references/pi/packages/ai/README.md +1621 -0
  158. package/.references/pi/packages/ai/bedrock-provider.d.ts +1 -0
  159. package/.references/pi/packages/ai/bedrock-provider.js +1 -0
  160. package/.references/pi/packages/ai/package.json +97 -0
  161. package/.references/pi/packages/ai/scripts/generate-image-models.ts +131 -0
  162. package/.references/pi/packages/ai/scripts/generate-models.ts +2401 -0
  163. package/.references/pi/packages/ai/scripts/generate-test-image.ts +33 -0
  164. package/.references/pi/packages/ai/src/api/anthropic-messages.lazy.ts +4 -0
  165. package/.references/pi/packages/ai/src/api/anthropic-messages.ts +1313 -0
  166. package/.references/pi/packages/ai/src/api/azure-openai-responses.lazy.ts +4 -0
  167. package/.references/pi/packages/ai/src/api/azure-openai-responses.ts +298 -0
  168. package/.references/pi/packages/ai/src/api/bedrock-converse-stream.lazy.ts +30 -0
  169. package/.references/pi/packages/ai/src/api/bedrock-converse-stream.ts +1091 -0
  170. package/.references/pi/packages/ai/src/api/cloudflare.ts +15 -0
  171. package/.references/pi/packages/ai/src/api/github-copilot-headers.ts +37 -0
  172. package/.references/pi/packages/ai/src/api/google-generative-ai.lazy.ts +4 -0
  173. package/.references/pi/packages/ai/src/api/google-generative-ai.ts +509 -0
  174. package/.references/pi/packages/ai/src/api/google-shared.ts +350 -0
  175. package/.references/pi/packages/ai/src/api/google-vertex.lazy.ts +4 -0
  176. package/.references/pi/packages/ai/src/api/google-vertex.ts +584 -0
  177. package/.references/pi/packages/ai/src/api/lazy.ts +75 -0
  178. package/.references/pi/packages/ai/src/api/mistral-conversations.lazy.ts +4 -0
  179. package/.references/pi/packages/ai/src/api/mistral-conversations.ts +664 -0
  180. package/.references/pi/packages/ai/src/api/openai-codex-responses.lazy.ts +4 -0
  181. package/.references/pi/packages/ai/src/api/openai-codex-responses.ts +1573 -0
  182. package/.references/pi/packages/ai/src/api/openai-completions.lazy.ts +4 -0
  183. package/.references/pi/packages/ai/src/api/openai-completions.ts +1355 -0
  184. package/.references/pi/packages/ai/src/api/openai-prompt-cache.ts +8 -0
  185. package/.references/pi/packages/ai/src/api/openai-responses-shared.ts +613 -0
  186. package/.references/pi/packages/ai/src/api/openai-responses.lazy.ts +4 -0
  187. package/.references/pi/packages/ai/src/api/openai-responses.ts +318 -0
  188. package/.references/pi/packages/ai/src/api/openrouter-images.lazy.ts +10 -0
  189. package/.references/pi/packages/ai/src/api/openrouter-images.ts +185 -0
  190. package/.references/pi/packages/ai/src/api/pi-messages.lazy.ts +4 -0
  191. package/.references/pi/packages/ai/src/api/pi-messages.ts +436 -0
  192. package/.references/pi/packages/ai/src/api/simple-options.ts +77 -0
  193. package/.references/pi/packages/ai/src/api/transform-messages.ts +223 -0
  194. package/.references/pi/packages/ai/src/auth/context.ts +45 -0
  195. package/.references/pi/packages/ai/src/auth/credential-store.ts +51 -0
  196. package/.references/pi/packages/ai/src/auth/helpers.ts +47 -0
  197. package/.references/pi/packages/ai/src/auth/oauth/anthropic.ts +350 -0
  198. package/.references/pi/packages/ai/src/auth/oauth/device-code.ts +98 -0
  199. package/.references/pi/packages/ai/src/auth/oauth/github-copilot.ts +379 -0
  200. package/.references/pi/packages/ai/src/auth/oauth/load.ts +56 -0
  201. package/.references/pi/packages/ai/src/auth/oauth/oauth-page.ts +109 -0
  202. package/.references/pi/packages/ai/src/auth/oauth/openai-codex.ts +538 -0
  203. package/.references/pi/packages/ai/src/auth/oauth/pkce.ts +34 -0
  204. package/.references/pi/packages/ai/src/auth/oauth/radius.ts +410 -0
  205. package/.references/pi/packages/ai/src/auth/oauth/xai.ts +238 -0
  206. package/.references/pi/packages/ai/src/auth/resolve.ts +139 -0
  207. package/.references/pi/packages/ai/src/auth/types.ts +220 -0
  208. package/.references/pi/packages/ai/src/bedrock-provider.ts +6 -0
  209. package/.references/pi/packages/ai/src/bun-oauth.ts +17 -0
  210. package/.references/pi/packages/ai/src/cli.ts +118 -0
  211. package/.references/pi/packages/ai/src/compat/extension-oauth-types.ts +45 -0
  212. package/.references/pi/packages/ai/src/compat.ts +298 -0
  213. package/.references/pi/packages/ai/src/env-api-keys.ts +178 -0
  214. package/.references/pi/packages/ai/src/image-models.generated.ts +534 -0
  215. package/.references/pi/packages/ai/src/image-models.ts +42 -0
  216. package/.references/pi/packages/ai/src/images-api-registry.ts +53 -0
  217. package/.references/pi/packages/ai/src/images-models.ts +274 -0
  218. package/.references/pi/packages/ai/src/images.ts +21 -0
  219. package/.references/pi/packages/ai/src/index.ts +45 -0
  220. package/.references/pi/packages/ai/src/legacy-api-aliases.ts +108 -0
  221. package/.references/pi/packages/ai/src/models-store.ts +38 -0
  222. package/.references/pi/packages/ai/src/models.generated.ts +76 -0
  223. package/.references/pi/packages/ai/src/models.ts +705 -0
  224. package/.references/pi/packages/ai/src/oauth.ts +10 -0
  225. package/.references/pi/packages/ai/src/providers/all.ts +140 -0
  226. package/.references/pi/packages/ai/src/providers/amazon-bedrock.models.ts +1897 -0
  227. package/.references/pi/packages/ai/src/providers/amazon-bedrock.ts +80 -0
  228. package/.references/pi/packages/ai/src/providers/ant-ling.models.ts +62 -0
  229. package/.references/pi/packages/ai/src/providers/ant-ling.ts +15 -0
  230. package/.references/pi/packages/ai/src/providers/anthropic.models.ts +257 -0
  231. package/.references/pi/packages/ai/src/providers/anthropic.ts +20 -0
  232. package/.references/pi/packages/ai/src/providers/azure-openai-responses.models.ts +816 -0
  233. package/.references/pi/packages/ai/src/providers/azure-openai-responses.ts +14 -0
  234. package/.references/pi/packages/ai/src/providers/cerebras.models.ts +61 -0
  235. package/.references/pi/packages/ai/src/providers/cerebras.ts +15 -0
  236. package/.references/pi/packages/ai/src/providers/cloudflare-ai-gateway.models.ts +760 -0
  237. package/.references/pi/packages/ai/src/providers/cloudflare-ai-gateway.ts +23 -0
  238. package/.references/pi/packages/ai/src/providers/cloudflare-auth.ts +96 -0
  239. package/.references/pi/packages/ai/src/providers/cloudflare-stream.ts +28 -0
  240. package/.references/pi/packages/ai/src/providers/cloudflare-workers-ai.models.ts +241 -0
  241. package/.references/pi/packages/ai/src/providers/cloudflare-workers-ai.ts +15 -0
  242. package/.references/pi/packages/ai/src/providers/deepseek.models.ts +45 -0
  243. package/.references/pi/packages/ai/src/providers/deepseek.ts +15 -0
  244. package/.references/pi/packages/ai/src/providers/faux.ts +538 -0
  245. package/.references/pi/packages/ai/src/providers/fireworks.models.ts +297 -0
  246. package/.references/pi/packages/ai/src/providers/fireworks.ts +19 -0
  247. package/.references/pi/packages/ai/src/providers/github-copilot.models.ts +543 -0
  248. package/.references/pi/packages/ai/src/providers/github-copilot.ts +34 -0
  249. package/.references/pi/packages/ai/src/providers/google-vertex.models.ts +184 -0
  250. package/.references/pi/packages/ai/src/providers/google-vertex.ts +93 -0
  251. package/.references/pi/packages/ai/src/providers/google.models.ts +290 -0
  252. package/.references/pi/packages/ai/src/providers/google.ts +15 -0
  253. package/.references/pi/packages/ai/src/providers/groq.models.ts +127 -0
  254. package/.references/pi/packages/ai/src/providers/groq.ts +15 -0
  255. package/.references/pi/packages/ai/src/providers/huggingface.models.ts +889 -0
  256. package/.references/pi/packages/ai/src/providers/huggingface.ts +15 -0
  257. package/.references/pi/packages/ai/src/providers/images/register-builtins.ts +50 -0
  258. package/.references/pi/packages/ai/src/providers/kimi-coding.models.ts +103 -0
  259. package/.references/pi/packages/ai/src/providers/kimi-coding.ts +15 -0
  260. package/.references/pi/packages/ai/src/providers/minimax-cn.models.ts +58 -0
  261. package/.references/pi/packages/ai/src/providers/minimax-cn.ts +15 -0
  262. package/.references/pi/packages/ai/src/providers/minimax.models.ts +58 -0
  263. package/.references/pi/packages/ai/src/providers/minimax.ts +15 -0
  264. package/.references/pi/packages/ai/src/providers/mistral.models.ts +517 -0
  265. package/.references/pi/packages/ai/src/providers/mistral.ts +15 -0
  266. package/.references/pi/packages/ai/src/providers/moonshotai-cn.models.ts +190 -0
  267. package/.references/pi/packages/ai/src/providers/moonshotai-cn.ts +15 -0
  268. package/.references/pi/packages/ai/src/providers/moonshotai.models.ts +190 -0
  269. package/.references/pi/packages/ai/src/providers/moonshotai.ts +15 -0
  270. package/.references/pi/packages/ai/src/providers/nvidia.models.ts +387 -0
  271. package/.references/pi/packages/ai/src/providers/nvidia.ts +15 -0
  272. package/.references/pi/packages/ai/src/providers/openai-codex.models.ts +144 -0
  273. package/.references/pi/packages/ai/src/providers/openai-codex.ts +18 -0
  274. package/.references/pi/packages/ai/src/providers/openai.models.ts +830 -0
  275. package/.references/pi/packages/ai/src/providers/openai.ts +15 -0
  276. package/.references/pi/packages/ai/src/providers/opencode-go.models.ts +278 -0
  277. package/.references/pi/packages/ai/src/providers/opencode-go.ts +18 -0
  278. package/.references/pi/packages/ai/src/providers/opencode.models.ts +1001 -0
  279. package/.references/pi/packages/ai/src/providers/opencode.ts +24 -0
  280. package/.references/pi/packages/ai/src/providers/openrouter-images.ts +14 -0
  281. package/.references/pi/packages/ai/src/providers/openrouter.models.ts +4915 -0
  282. package/.references/pi/packages/ai/src/providers/openrouter.ts +15 -0
  283. package/.references/pi/packages/ai/src/providers/radius-config.ts +95 -0
  284. package/.references/pi/packages/ai/src/providers/radius.ts +67 -0
  285. package/.references/pi/packages/ai/src/providers/together.models.ts +382 -0
  286. package/.references/pi/packages/ai/src/providers/together.ts +15 -0
  287. package/.references/pi/packages/ai/src/providers/vercel-ai-gateway.models.ts +3268 -0
  288. package/.references/pi/packages/ai/src/providers/vercel-ai-gateway.ts +15 -0
  289. package/.references/pi/packages/ai/src/providers/xai.models.ts +62 -0
  290. package/.references/pi/packages/ai/src/providers/xai.ts +27 -0
  291. package/.references/pi/packages/ai/src/providers/xiaomi-token-plan-ams.models.ts +61 -0
  292. package/.references/pi/packages/ai/src/providers/xiaomi-token-plan-ams.ts +15 -0
  293. package/.references/pi/packages/ai/src/providers/xiaomi-token-plan-cn.models.ts +61 -0
  294. package/.references/pi/packages/ai/src/providers/xiaomi-token-plan-cn.ts +15 -0
  295. package/.references/pi/packages/ai/src/providers/xiaomi-token-plan-sgp.models.ts +61 -0
  296. package/.references/pi/packages/ai/src/providers/xiaomi-token-plan-sgp.ts +15 -0
  297. package/.references/pi/packages/ai/src/providers/xiaomi.models.ts +115 -0
  298. package/.references/pi/packages/ai/src/providers/xiaomi.ts +15 -0
  299. package/.references/pi/packages/ai/src/providers/zai-coding-cn.models.ts +116 -0
  300. package/.references/pi/packages/ai/src/providers/zai-coding-cn.ts +15 -0
  301. package/.references/pi/packages/ai/src/providers/zai.models.ts +116 -0
  302. package/.references/pi/packages/ai/src/providers/zai.ts +15 -0
  303. package/.references/pi/packages/ai/src/session-resources.ts +24 -0
  304. package/.references/pi/packages/ai/src/types.ts +738 -0
  305. package/.references/pi/packages/ai/src/utils/abort-signals.ts +41 -0
  306. package/.references/pi/packages/ai/src/utils/deferred-tools.ts +39 -0
  307. package/.references/pi/packages/ai/src/utils/diagnostics.ts +45 -0
  308. package/.references/pi/packages/ai/src/utils/error-body.ts +127 -0
  309. package/.references/pi/packages/ai/src/utils/estimate.ts +143 -0
  310. package/.references/pi/packages/ai/src/utils/event-stream.ts +88 -0
  311. package/.references/pi/packages/ai/src/utils/hash.ts +13 -0
  312. package/.references/pi/packages/ai/src/utils/headers.ts +18 -0
  313. package/.references/pi/packages/ai/src/utils/json-parse.ts +124 -0
  314. package/.references/pi/packages/ai/src/utils/node-http-proxy.ts +112 -0
  315. package/.references/pi/packages/ai/src/utils/overflow.ts +165 -0
  316. package/.references/pi/packages/ai/src/utils/provider-env.ts +52 -0
  317. package/.references/pi/packages/ai/src/utils/retry.ts +101 -0
  318. package/.references/pi/packages/ai/src/utils/sanitize-unicode.ts +25 -0
  319. package/.references/pi/packages/ai/src/utils/typebox-helpers.ts +24 -0
  320. package/.references/pi/packages/ai/src/utils/validation.ts +310 -0
  321. package/.references/pi/packages/ai/test/abort.test.ts +303 -0
  322. package/.references/pi/packages/ai/test/anthropic-adaptive-thinking-models.test.ts +39 -0
  323. package/.references/pi/packages/ai/test/anthropic-cache-write-1h-cost.test.ts +86 -0
  324. package/.references/pi/packages/ai/test/anthropic-eager-tool-input-compat.test.ts +122 -0
  325. package/.references/pi/packages/ai/test/anthropic-eager-tool-input-e2e.test.ts +155 -0
  326. package/.references/pi/packages/ai/test/anthropic-empty-thinking-signature-compat.test.ts +108 -0
  327. package/.references/pi/packages/ai/test/anthropic-force-adaptive-thinking.test.ts +125 -0
  328. package/.references/pi/packages/ai/test/anthropic-long-cache-retention-e2e.test.ts +127 -0
  329. package/.references/pi/packages/ai/test/anthropic-oauth.test.ts +137 -0
  330. package/.references/pi/packages/ai/test/anthropic-opus-4-8-smoke.test.ts +71 -0
  331. package/.references/pi/packages/ai/test/anthropic-sse-parsing.test.ts +275 -0
  332. package/.references/pi/packages/ai/test/anthropic-temperature-compat.test.ts +103 -0
  333. package/.references/pi/packages/ai/test/anthropic-thinking-disable.test.ts +172 -0
  334. package/.references/pi/packages/ai/test/anthropic-tool-name-normalization.test.ts +204 -0
  335. package/.references/pi/packages/ai/test/azure-openai-base-url.test.ts +175 -0
  336. package/.references/pi/packages/ai/test/azure-openai-responses-reasoning-replay.test.ts +136 -0
  337. package/.references/pi/packages/ai/test/azure-utils.ts +28 -0
  338. package/.references/pi/packages/ai/test/bedrock-convert-messages.test.ts +245 -0
  339. package/.references/pi/packages/ai/test/bedrock-custom-headers.test.ts +202 -0
  340. package/.references/pi/packages/ai/test/bedrock-endpoint-resolution.test.ts +208 -0
  341. package/.references/pi/packages/ai/test/bedrock-models.test.ts +65 -0
  342. package/.references/pi/packages/ai/test/bedrock-thinking-payload.test.ts +246 -0
  343. package/.references/pi/packages/ai/test/bedrock-utils.ts +18 -0
  344. package/.references/pi/packages/ai/test/cache-retention.test.ts +498 -0
  345. package/.references/pi/packages/ai/test/cloudflare-stream.test.ts +65 -0
  346. package/.references/pi/packages/ai/test/cloudflare-utils.ts +9 -0
  347. package/.references/pi/packages/ai/test/codex-websocket-cached-probe.ts +299 -0
  348. package/.references/pi/packages/ai/test/compat-env.test.ts +74 -0
  349. package/.references/pi/packages/ai/test/context-estimate.test.ts +81 -0
  350. package/.references/pi/packages/ai/test/context-overflow.test.ts +734 -0
  351. package/.references/pi/packages/ai/test/cross-provider-handoff.test.ts +502 -0
  352. package/.references/pi/packages/ai/test/data/red-circle.png +0 -0
  353. package/.references/pi/packages/ai/test/deferred-tools.test.ts +481 -0
  354. package/.references/pi/packages/ai/test/empty.test.ts +741 -0
  355. package/.references/pi/packages/ai/test/env-api-keys.test.ts +60 -0
  356. package/.references/pi/packages/ai/test/error-body.test.ts +154 -0
  357. package/.references/pi/packages/ai/test/faux-provider.test.ts +597 -0
  358. package/.references/pi/packages/ai/test/fireworks-models.test.ts +269 -0
  359. package/.references/pi/packages/ai/test/github-copilot-anthropic.test.ts +120 -0
  360. package/.references/pi/packages/ai/test/github-copilot-oauth.test.ts +444 -0
  361. package/.references/pi/packages/ai/test/google-shared-convert-tools.test.ts +187 -0
  362. package/.references/pi/packages/ai/test/google-shared-gemini3-unsigned-tool-call.test.ts +116 -0
  363. package/.references/pi/packages/ai/test/google-shared-image-tool-result-routing.test.ts +102 -0
  364. package/.references/pi/packages/ai/test/google-thinking-disable.test.ts +160 -0
  365. package/.references/pi/packages/ai/test/google-thinking-signature.test.ts +38 -0
  366. package/.references/pi/packages/ai/test/google-vertex-api-key-resolution.test.ts +223 -0
  367. package/.references/pi/packages/ai/test/image-tool-result.test.ts +501 -0
  368. package/.references/pi/packages/ai/test/images-models.test.ts +209 -0
  369. package/.references/pi/packages/ai/test/images.test.ts +90 -0
  370. package/.references/pi/packages/ai/test/interleaved-thinking.test.ts +144 -0
  371. package/.references/pi/packages/ai/test/lax-message-content.test.ts +67 -0
  372. package/.references/pi/packages/ai/test/lazy-module-load.test.ts +119 -0
  373. package/.references/pi/packages/ai/test/max-thinking.test.ts +89 -0
  374. package/.references/pi/packages/ai/test/mistral-reasoning-mode.test.ts +97 -0
  375. package/.references/pi/packages/ai/test/mistral-tool-schema.test.ts +60 -0
  376. package/.references/pi/packages/ai/test/models-runtime.test.ts +689 -0
  377. package/.references/pi/packages/ai/test/node-http-proxy.test.ts +76 -0
  378. package/.references/pi/packages/ai/test/oauth-auth.test.ts +141 -0
  379. package/.references/pi/packages/ai/test/oauth-device-code.test.ts +139 -0
  380. package/.references/pi/packages/ai/test/oauth.ts +83 -0
  381. package/.references/pi/packages/ai/test/openai-codex-cache-affinity-e2e.test.ts +35 -0
  382. package/.references/pi/packages/ai/test/openai-codex-oauth.test.ts +479 -0
  383. package/.references/pi/packages/ai/test/openai-codex-stream.test.ts +2028 -0
  384. package/.references/pi/packages/ai/test/openai-completions-cache-control-format.test.ts +189 -0
  385. package/.references/pi/packages/ai/test/openai-completions-empty-tools.test.ts +304 -0
  386. package/.references/pi/packages/ai/test/openai-completions-prompt-cache.test.ts +264 -0
  387. package/.references/pi/packages/ai/test/openai-completions-reasoning-details.test.ts +118 -0
  388. package/.references/pi/packages/ai/test/openai-completions-response-model.test.ts +140 -0
  389. package/.references/pi/packages/ai/test/openai-completions-retry.test.ts +86 -0
  390. package/.references/pi/packages/ai/test/openai-completions-thinking-as-text.test.ts +218 -0
  391. package/.references/pi/packages/ai/test/openai-completions-tool-choice.test.ts +1716 -0
  392. package/.references/pi/packages/ai/test/openai-completions-tool-result-images.test.ts +152 -0
  393. package/.references/pi/packages/ai/test/openai-responses-cache-affinity-e2e.test.ts +31 -0
  394. package/.references/pi/packages/ai/test/openai-responses-compat.test.ts +472 -0
  395. package/.references/pi/packages/ai/test/openai-responses-empty-tool-result.test.ts +58 -0
  396. package/.references/pi/packages/ai/test/openai-responses-foreign-toolcall-id.test.ts +66 -0
  397. package/.references/pi/packages/ai/test/openai-responses-message-id.test.ts +48 -0
  398. package/.references/pi/packages/ai/test/openai-responses-partial-json-cleanup.test.ts +106 -0
  399. package/.references/pi/packages/ai/test/openai-responses-reasoning-replay-e2e.test.ts +291 -0
  400. package/.references/pi/packages/ai/test/openai-responses-terminal-event.test.ts +233 -0
  401. package/.references/pi/packages/ai/test/openai-responses-tool-result-images.test.ts +194 -0
  402. package/.references/pi/packages/ai/test/openrouter-cache-write-repro.test.ts +77 -0
  403. package/.references/pi/packages/ai/test/openrouter-images.test.ts +140 -0
  404. package/.references/pi/packages/ai/test/overflow.test.ts +139 -0
  405. package/.references/pi/packages/ai/test/pi-messages.test.ts +243 -0
  406. package/.references/pi/packages/ai/test/provider-error-body-passthrough.test.ts +78 -0
  407. package/.references/pi/packages/ai/test/provider-error-body-regression.test.ts +189 -0
  408. package/.references/pi/packages/ai/test/providers.test.ts +404 -0
  409. package/.references/pi/packages/ai/test/responseid.test.ts +120 -0
  410. package/.references/pi/packages/ai/test/retry.test.ts +59 -0
  411. package/.references/pi/packages/ai/test/scratch.ts +57 -0
  412. package/.references/pi/packages/ai/test/stream.test.ts +1632 -0
  413. package/.references/pi/packages/ai/test/supports-xhigh.test.ts +145 -0
  414. package/.references/pi/packages/ai/test/together-models.test.ts +78 -0
  415. package/.references/pi/packages/ai/test/tokens.test.ts +333 -0
  416. package/.references/pi/packages/ai/test/tool-call-id-normalization.test.ts +290 -0
  417. package/.references/pi/packages/ai/test/tool-call-without-result.test.ts +327 -0
  418. package/.references/pi/packages/ai/test/total-tokens.test.ts +789 -0
  419. package/.references/pi/packages/ai/test/transform-messages-copilot-openai-to-anthropic.test.ts +191 -0
  420. package/.references/pi/packages/ai/test/unicode-surrogate.test.ts +774 -0
  421. package/.references/pi/packages/ai/test/validation.test.ts +116 -0
  422. package/.references/pi/packages/ai/test/xai-oauth.test.ts +330 -0
  423. package/.references/pi/packages/ai/test/xai-responses.test.ts +117 -0
  424. package/.references/pi/packages/ai/test/xhigh.test.ts +70 -0
  425. package/.references/pi/packages/ai/test/xiaomi-models.test.ts +17 -0
  426. package/.references/pi/packages/ai/test/xiaomi-token-plan-ams-anthropic-empty-signature-smoke.test.ts +114 -0
  427. package/.references/pi/packages/ai/test/zen.test.ts +25 -0
  428. package/.references/pi/packages/ai/tsconfig.build.json +9 -0
  429. package/.references/pi/packages/ai/vitest.config.ts +11 -0
  430. package/.references/pi/packages/coding-agent/CHANGELOG.md +5038 -0
  431. package/.references/pi/packages/coding-agent/README.md +691 -0
  432. package/.references/pi/packages/coding-agent/docs/compaction.md +396 -0
  433. package/.references/pi/packages/coding-agent/docs/containerization.md +111 -0
  434. package/.references/pi/packages/coding-agent/docs/custom-provider.md +735 -0
  435. package/.references/pi/packages/coding-agent/docs/development.md +71 -0
  436. package/.references/pi/packages/coding-agent/docs/docs.json +156 -0
  437. package/.references/pi/packages/coding-agent/docs/extensions.md +2911 -0
  438. package/.references/pi/packages/coding-agent/docs/images/doom-extension.png +0 -0
  439. package/.references/pi/packages/coding-agent/docs/images/exy.png +0 -0
  440. package/.references/pi/packages/coding-agent/docs/images/interactive-mode.png +0 -0
  441. package/.references/pi/packages/coding-agent/docs/images/tree-view.png +0 -0
  442. package/.references/pi/packages/coding-agent/docs/index.md +82 -0
  443. package/.references/pi/packages/coding-agent/docs/json.md +82 -0
  444. package/.references/pi/packages/coding-agent/docs/keybindings.md +198 -0
  445. package/.references/pi/packages/coding-agent/docs/models.md +540 -0
  446. package/.references/pi/packages/coding-agent/docs/packages.md +228 -0
  447. package/.references/pi/packages/coding-agent/docs/prompt-templates.md +95 -0
  448. package/.references/pi/packages/coding-agent/docs/providers.md +290 -0
  449. package/.references/pi/packages/coding-agent/docs/quickstart.md +165 -0
  450. package/.references/pi/packages/coding-agent/docs/rpc.md +1480 -0
  451. package/.references/pi/packages/coding-agent/docs/sdk.md +1183 -0
  452. package/.references/pi/packages/coding-agent/docs/security.md +59 -0
  453. package/.references/pi/packages/coding-agent/docs/session-format.md +422 -0
  454. package/.references/pi/packages/coding-agent/docs/sessions.md +145 -0
  455. package/.references/pi/packages/coding-agent/docs/settings.md +319 -0
  456. package/.references/pi/packages/coding-agent/docs/shell-aliases.md +13 -0
  457. package/.references/pi/packages/coding-agent/docs/skills.md +231 -0
  458. package/.references/pi/packages/coding-agent/docs/terminal-setup.md +142 -0
  459. package/.references/pi/packages/coding-agent/docs/termux.md +127 -0
  460. package/.references/pi/packages/coding-agent/docs/themes.md +297 -0
  461. package/.references/pi/packages/coding-agent/docs/tmux.md +63 -0
  462. package/.references/pi/packages/coding-agent/docs/tui.md +927 -0
  463. package/.references/pi/packages/coding-agent/docs/usage.md +310 -0
  464. package/.references/pi/packages/coding-agent/docs/windows.md +17 -0
  465. package/.references/pi/packages/coding-agent/examples/README.md +25 -0
  466. package/.references/pi/packages/coding-agent/examples/extensions/README.md +213 -0
  467. package/.references/pi/packages/coding-agent/examples/extensions/auto-commit-on-exit.ts +49 -0
  468. package/.references/pi/packages/coding-agent/examples/extensions/bash-spawn-hook.ts +30 -0
  469. package/.references/pi/packages/coding-agent/examples/extensions/bookmark.ts +50 -0
  470. package/.references/pi/packages/coding-agent/examples/extensions/border-status-editor.ts +150 -0
  471. package/.references/pi/packages/coding-agent/examples/extensions/built-in-tool-renderer.ts +249 -0
  472. package/.references/pi/packages/coding-agent/examples/extensions/claude-rules.ts +86 -0
  473. package/.references/pi/packages/coding-agent/examples/extensions/commands.ts +72 -0
  474. package/.references/pi/packages/coding-agent/examples/extensions/confirm-destructive.ts +59 -0
  475. package/.references/pi/packages/coding-agent/examples/extensions/custom-compaction.ts +128 -0
  476. package/.references/pi/packages/coding-agent/examples/extensions/custom-footer.ts +64 -0
  477. package/.references/pi/packages/coding-agent/examples/extensions/custom-header.ts +73 -0
  478. package/.references/pi/packages/coding-agent/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  479. package/.references/pi/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  480. package/.references/pi/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json +19 -0
  481. package/.references/pi/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -0
  482. package/.references/pi/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  483. package/.references/pi/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  484. package/.references/pi/packages/coding-agent/examples/extensions/dirty-repo-guard.ts +56 -0
  485. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/README.md +46 -0
  486. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  487. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  488. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/doom/build.sh +152 -0
  489. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
  490. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/doom-component.ts +132 -0
  491. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  492. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  493. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/index.ts +74 -0
  494. package/.references/pi/packages/coding-agent/examples/extensions/doom-overlay/wad-finder.ts +51 -0
  495. package/.references/pi/packages/coding-agent/examples/extensions/dynamic-resources/SKILL.md +8 -0
  496. package/.references/pi/packages/coding-agent/examples/extensions/dynamic-resources/dynamic.json +79 -0
  497. package/.references/pi/packages/coding-agent/examples/extensions/dynamic-resources/dynamic.md +5 -0
  498. package/.references/pi/packages/coding-agent/examples/extensions/dynamic-resources/index.ts +15 -0
  499. package/.references/pi/packages/coding-agent/examples/extensions/dynamic-tools.ts +74 -0
  500. package/.references/pi/packages/coding-agent/examples/extensions/entry-renderer.ts +41 -0
  501. package/.references/pi/packages/coding-agent/examples/extensions/event-bus.ts +43 -0
  502. package/.references/pi/packages/coding-agent/examples/extensions/file-trigger.ts +41 -0
  503. package/.references/pi/packages/coding-agent/examples/extensions/git-checkpoint.ts +53 -0
  504. package/.references/pi/packages/coding-agent/examples/extensions/git-merge-and-resolve.ts +115 -0
  505. package/.references/pi/packages/coding-agent/examples/extensions/github-issue-autocomplete.ts +185 -0
  506. package/.references/pi/packages/coding-agent/examples/extensions/gondolin/index.ts +531 -0
  507. package/.references/pi/packages/coding-agent/examples/extensions/gondolin/package-lock.json +185 -0
  508. package/.references/pi/packages/coding-agent/examples/extensions/gondolin/package.json +19 -0
  509. package/.references/pi/packages/coding-agent/examples/extensions/handoff.ts +191 -0
  510. package/.references/pi/packages/coding-agent/examples/extensions/hello.ts +26 -0
  511. package/.references/pi/packages/coding-agent/examples/extensions/hidden-thinking-label.ts +53 -0
  512. package/.references/pi/packages/coding-agent/examples/extensions/inline-bash.ts +94 -0
  513. package/.references/pi/packages/coding-agent/examples/extensions/input-transform-streaming.ts +39 -0
  514. package/.references/pi/packages/coding-agent/examples/extensions/input-transform.ts +43 -0
  515. package/.references/pi/packages/coding-agent/examples/extensions/interactive-shell.ts +196 -0
  516. package/.references/pi/packages/coding-agent/examples/extensions/kimi-deferred-tools.ts +61 -0
  517. package/.references/pi/packages/coding-agent/examples/extensions/mac-system-theme.ts +47 -0
  518. package/.references/pi/packages/coding-agent/examples/extensions/message-renderer.ts +59 -0
  519. package/.references/pi/packages/coding-agent/examples/extensions/minimal-mode.ts +426 -0
  520. package/.references/pi/packages/coding-agent/examples/extensions/modal-editor.ts +85 -0
  521. package/.references/pi/packages/coding-agent/examples/extensions/model-status.ts +31 -0
  522. package/.references/pi/packages/coding-agent/examples/extensions/notify.ts +55 -0
  523. package/.references/pi/packages/coding-agent/examples/extensions/overlay-qa-tests.ts +1450 -0
  524. package/.references/pi/packages/coding-agent/examples/extensions/overlay-test.ts +153 -0
  525. package/.references/pi/packages/coding-agent/examples/extensions/permission-gate.ts +34 -0
  526. package/.references/pi/packages/coding-agent/examples/extensions/pirate.ts +47 -0
  527. package/.references/pi/packages/coding-agent/examples/extensions/plan-mode/README.md +66 -0
  528. package/.references/pi/packages/coding-agent/examples/extensions/plan-mode/index.ts +390 -0
  529. package/.references/pi/packages/coding-agent/examples/extensions/plan-mode/utils.ts +168 -0
  530. package/.references/pi/packages/coding-agent/examples/extensions/preset.ts +436 -0
  531. package/.references/pi/packages/coding-agent/examples/extensions/project-trust.ts +64 -0
  532. package/.references/pi/packages/coding-agent/examples/extensions/prompt-customizer.ts +97 -0
  533. package/.references/pi/packages/coding-agent/examples/extensions/protected-paths.ts +30 -0
  534. package/.references/pi/packages/coding-agent/examples/extensions/provider-payload.ts +18 -0
  535. package/.references/pi/packages/coding-agent/examples/extensions/qna.ts +122 -0
  536. package/.references/pi/packages/coding-agent/examples/extensions/question.ts +286 -0
  537. package/.references/pi/packages/coding-agent/examples/extensions/questionnaire.ts +448 -0
  538. package/.references/pi/packages/coding-agent/examples/extensions/rainbow-editor.ts +88 -0
  539. package/.references/pi/packages/coding-agent/examples/extensions/reload-runtime.ts +37 -0
  540. package/.references/pi/packages/coding-agent/examples/extensions/rpc-demo.ts +118 -0
  541. package/.references/pi/packages/coding-agent/examples/extensions/sandbox/index.ts +321 -0
  542. package/.references/pi/packages/coding-agent/examples/extensions/sandbox/package-lock.json +92 -0
  543. package/.references/pi/packages/coding-agent/examples/extensions/sandbox/package.json +19 -0
  544. package/.references/pi/packages/coding-agent/examples/extensions/send-user-message.ts +97 -0
  545. package/.references/pi/packages/coding-agent/examples/extensions/session-name.ts +27 -0
  546. package/.references/pi/packages/coding-agent/examples/extensions/shutdown-command.ts +63 -0
  547. package/.references/pi/packages/coding-agent/examples/extensions/snake.ts +343 -0
  548. package/.references/pi/packages/coding-agent/examples/extensions/space-invaders.ts +560 -0
  549. package/.references/pi/packages/coding-agent/examples/extensions/ssh.ts +220 -0
  550. package/.references/pi/packages/coding-agent/examples/extensions/status-line.ts +32 -0
  551. package/.references/pi/packages/coding-agent/examples/extensions/structured-output.ts +65 -0
  552. package/.references/pi/packages/coding-agent/examples/extensions/subagent/README.md +175 -0
  553. package/.references/pi/packages/coding-agent/examples/extensions/subagent/agents/planner.md +37 -0
  554. package/.references/pi/packages/coding-agent/examples/extensions/subagent/agents/reviewer.md +35 -0
  555. package/.references/pi/packages/coding-agent/examples/extensions/subagent/agents/scout.md +50 -0
  556. package/.references/pi/packages/coding-agent/examples/extensions/subagent/agents/worker.md +24 -0
  557. package/.references/pi/packages/coding-agent/examples/extensions/subagent/agents.ts +126 -0
  558. package/.references/pi/packages/coding-agent/examples/extensions/subagent/index.ts +1015 -0
  559. package/.references/pi/packages/coding-agent/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  560. package/.references/pi/packages/coding-agent/examples/extensions/subagent/prompts/implement.md +10 -0
  561. package/.references/pi/packages/coding-agent/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  562. package/.references/pi/packages/coding-agent/examples/extensions/summarize.ts +207 -0
  563. package/.references/pi/packages/coding-agent/examples/extensions/system-prompt-header.ts +17 -0
  564. package/.references/pi/packages/coding-agent/examples/extensions/tic-tac-toe.ts +1008 -0
  565. package/.references/pi/packages/coding-agent/examples/extensions/timed-confirm.ts +70 -0
  566. package/.references/pi/packages/coding-agent/examples/extensions/titlebar-spinner.ts +58 -0
  567. package/.references/pi/packages/coding-agent/examples/extensions/todo.ts +297 -0
  568. package/.references/pi/packages/coding-agent/examples/extensions/tool-override.ts +144 -0
  569. package/.references/pi/packages/coding-agent/examples/extensions/tools.ts +146 -0
  570. package/.references/pi/packages/coding-agent/examples/extensions/trigger-compact.ts +50 -0
  571. package/.references/pi/packages/coding-agent/examples/extensions/truncated-tool.ts +195 -0
  572. package/.references/pi/packages/coding-agent/examples/extensions/widget-placement.ts +9 -0
  573. package/.references/pi/packages/coding-agent/examples/extensions/with-deps/index.ts +32 -0
  574. package/.references/pi/packages/coding-agent/examples/extensions/with-deps/package-lock.json +31 -0
  575. package/.references/pi/packages/coding-agent/examples/extensions/with-deps/package.json +22 -0
  576. package/.references/pi/packages/coding-agent/examples/extensions/working-indicator.ts +123 -0
  577. package/.references/pi/packages/coding-agent/examples/extensions/working-message-test.ts +25 -0
  578. package/.references/pi/packages/coding-agent/examples/rpc-extension-ui.ts +632 -0
  579. package/.references/pi/packages/coding-agent/examples/sdk/01-minimal.ts +26 -0
  580. package/.references/pi/packages/coding-agent/examples/sdk/02-custom-model.ts +50 -0
  581. package/.references/pi/packages/coding-agent/examples/sdk/03-custom-prompt.ts +75 -0
  582. package/.references/pi/packages/coding-agent/examples/sdk/04-skills.ts +55 -0
  583. package/.references/pi/packages/coding-agent/examples/sdk/05-tools.ts +48 -0
  584. package/.references/pi/packages/coding-agent/examples/sdk/06-extensions.ts +99 -0
  585. package/.references/pi/packages/coding-agent/examples/sdk/07-context-files.ts +47 -0
  586. package/.references/pi/packages/coding-agent/examples/sdk/08-prompt-templates.ts +51 -0
  587. package/.references/pi/packages/coding-agent/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  588. package/.references/pi/packages/coding-agent/examples/sdk/10-settings.ts +53 -0
  589. package/.references/pi/packages/coding-agent/examples/sdk/11-sessions.ts +52 -0
  590. package/.references/pi/packages/coding-agent/examples/sdk/12-full-control.ts +72 -0
  591. package/.references/pi/packages/coding-agent/examples/sdk/13-session-runtime.ts +67 -0
  592. package/.references/pi/packages/coding-agent/examples/sdk/README.md +140 -0
  593. package/.references/pi/packages/coding-agent/install-lock/package-lock.json +1849 -0
  594. package/.references/pi/packages/coding-agent/install-lock/package.json +18 -0
  595. package/.references/pi/packages/coding-agent/npm-shrinkwrap.json +1839 -0
  596. package/.references/pi/packages/coding-agent/package.json +100 -0
  597. package/.references/pi/packages/coding-agent/scripts/migrate-sessions.sh +93 -0
  598. package/.references/pi/packages/coding-agent/src/bun/cli.ts +15 -0
  599. package/.references/pi/packages/coding-agent/src/bun/register-bedrock.ts +4 -0
  600. package/.references/pi/packages/coding-agent/src/bun/restore-sandbox-env.ts +36 -0
  601. package/.references/pi/packages/coding-agent/src/cli/args.ts +390 -0
  602. package/.references/pi/packages/coding-agent/src/cli/config-selector.ts +56 -0
  603. package/.references/pi/packages/coding-agent/src/cli/file-processor.ts +87 -0
  604. package/.references/pi/packages/coding-agent/src/cli/initial-message.ts +43 -0
  605. package/.references/pi/packages/coding-agent/src/cli/list-models.ts +111 -0
  606. package/.references/pi/packages/coding-agent/src/cli/project-trust.ts +62 -0
  607. package/.references/pi/packages/coding-agent/src/cli/session-picker.ts +55 -0
  608. package/.references/pi/packages/coding-agent/src/cli/startup-ui.ts +239 -0
  609. package/.references/pi/packages/coding-agent/src/cli.ts +20 -0
  610. package/.references/pi/packages/coding-agent/src/config.ts +566 -0
  611. package/.references/pi/packages/coding-agent/src/core/agent-session-runtime.ts +438 -0
  612. package/.references/pi/packages/coding-agent/src/core/agent-session-services.ts +207 -0
  613. package/.references/pi/packages/coding-agent/src/core/agent-session.ts +3279 -0
  614. package/.references/pi/packages/coding-agent/src/core/auth-guidance.ts +25 -0
  615. package/.references/pi/packages/coding-agent/src/core/auth-storage.ts +271 -0
  616. package/.references/pi/packages/coding-agent/src/core/bash-executor.ts +156 -0
  617. package/.references/pi/packages/coding-agent/src/core/cache-stats.ts +164 -0
  618. package/.references/pi/packages/coding-agent/src/core/compaction/branch-summarization.ts +371 -0
  619. package/.references/pi/packages/coding-agent/src/core/compaction/compaction.ts +872 -0
  620. package/.references/pi/packages/coding-agent/src/core/compaction/index.ts +7 -0
  621. package/.references/pi/packages/coding-agent/src/core/compaction/utils.ts +170 -0
  622. package/.references/pi/packages/coding-agent/src/core/defaults.ts +3 -0
  623. package/.references/pi/packages/coding-agent/src/core/diagnostics.ts +15 -0
  624. package/.references/pi/packages/coding-agent/src/core/event-bus.ts +33 -0
  625. package/.references/pi/packages/coding-agent/src/core/exec.ts +107 -0
  626. package/.references/pi/packages/coding-agent/src/core/experimental.ts +3 -0
  627. package/.references/pi/packages/coding-agent/src/core/export-html/ansi-to-html.ts +258 -0
  628. package/.references/pi/packages/coding-agent/src/core/export-html/index.ts +316 -0
  629. package/.references/pi/packages/coding-agent/src/core/export-html/template.css +1066 -0
  630. package/.references/pi/packages/coding-agent/src/core/export-html/template.html +55 -0
  631. package/.references/pi/packages/coding-agent/src/core/export-html/template.js +1864 -0
  632. package/.references/pi/packages/coding-agent/src/core/export-html/tool-renderer.ts +172 -0
  633. package/.references/pi/packages/coding-agent/src/core/export-html/vendor/highlight.min.js +1213 -0
  634. package/.references/pi/packages/coding-agent/src/core/export-html/vendor/marked.min.js +78 -0
  635. package/.references/pi/packages/coding-agent/src/core/extensions/index.ts +184 -0
  636. package/.references/pi/packages/coding-agent/src/core/extensions/loader.ts +708 -0
  637. package/.references/pi/packages/coding-agent/src/core/extensions/runner.ts +1189 -0
  638. package/.references/pi/packages/coding-agent/src/core/extensions/types.ts +1674 -0
  639. package/.references/pi/packages/coding-agent/src/core/extensions/wrapper.ts +45 -0
  640. package/.references/pi/packages/coding-agent/src/core/footer-data-provider.ts +388 -0
  641. package/.references/pi/packages/coding-agent/src/core/http-dispatcher.ts +106 -0
  642. package/.references/pi/packages/coding-agent/src/core/index.ts +80 -0
  643. package/.references/pi/packages/coding-agent/src/core/keybindings.ts +370 -0
  644. package/.references/pi/packages/coding-agent/src/core/messages.ts +195 -0
  645. package/.references/pi/packages/coding-agent/src/core/model-config.ts +287 -0
  646. package/.references/pi/packages/coding-agent/src/core/model-registry.ts +126 -0
  647. package/.references/pi/packages/coding-agent/src/core/model-resolver.ts +705 -0
  648. package/.references/pi/packages/coding-agent/src/core/model-runtime.ts +566 -0
  649. package/.references/pi/packages/coding-agent/src/core/models-store.ts +57 -0
  650. package/.references/pi/packages/coding-agent/src/core/output-guard.ts +108 -0
  651. package/.references/pi/packages/coding-agent/src/core/package-manager.ts +2650 -0
  652. package/.references/pi/packages/coding-agent/src/core/project-trust.ts +96 -0
  653. package/.references/pi/packages/coding-agent/src/core/prompt-templates.ts +284 -0
  654. package/.references/pi/packages/coding-agent/src/core/provider-attribution.ts +97 -0
  655. package/.references/pi/packages/coding-agent/src/core/provider-composer.ts +548 -0
  656. package/.references/pi/packages/coding-agent/src/core/radius.ts +1 -0
  657. package/.references/pi/packages/coding-agent/src/core/remote-catalog-provider.ts +83 -0
  658. package/.references/pi/packages/coding-agent/src/core/resolve-config-value.ts +287 -0
  659. package/.references/pi/packages/coding-agent/src/core/resource-loader.ts +1039 -0
  660. package/.references/pi/packages/coding-agent/src/core/runtime-credentials.ts +48 -0
  661. package/.references/pi/packages/coding-agent/src/core/sdk.ts +393 -0
  662. package/.references/pi/packages/coding-agent/src/core/session-cwd.ts +59 -0
  663. package/.references/pi/packages/coding-agent/src/core/session-manager.ts +1623 -0
  664. package/.references/pi/packages/coding-agent/src/core/settings-manager.ts +1234 -0
  665. package/.references/pi/packages/coding-agent/src/core/skills.ts +487 -0
  666. package/.references/pi/packages/coding-agent/src/core/slash-commands.ts +42 -0
  667. package/.references/pi/packages/coding-agent/src/core/source-info.ts +40 -0
  668. package/.references/pi/packages/coding-agent/src/core/system-prompt.ts +162 -0
  669. package/.references/pi/packages/coding-agent/src/core/telemetry.ts +13 -0
  670. package/.references/pi/packages/coding-agent/src/core/timings.ts +50 -0
  671. package/.references/pi/packages/coding-agent/src/core/tools/bash.ts +470 -0
  672. package/.references/pi/packages/coding-agent/src/core/tools/edit-diff.ts +560 -0
  673. package/.references/pi/packages/coding-agent/src/core/tools/edit.ts +437 -0
  674. package/.references/pi/packages/coding-agent/src/core/tools/file-mutation-queue.ts +61 -0
  675. package/.references/pi/packages/coding-agent/src/core/tools/find.ts +374 -0
  676. package/.references/pi/packages/coding-agent/src/core/tools/grep.ts +385 -0
  677. package/.references/pi/packages/coding-agent/src/core/tools/index.ts +196 -0
  678. package/.references/pi/packages/coding-agent/src/core/tools/ls.ts +225 -0
  679. package/.references/pi/packages/coding-agent/src/core/tools/output-accumulator.ts +222 -0
  680. package/.references/pi/packages/coding-agent/src/core/tools/path-utils.ts +118 -0
  681. package/.references/pi/packages/coding-agent/src/core/tools/read.ts +351 -0
  682. package/.references/pi/packages/coding-agent/src/core/tools/render-utils.ts +85 -0
  683. package/.references/pi/packages/coding-agent/src/core/tools/tool-definition-wrapper.ts +45 -0
  684. package/.references/pi/packages/coding-agent/src/core/tools/truncate.ts +276 -0
  685. package/.references/pi/packages/coding-agent/src/core/tools/write.ts +267 -0
  686. package/.references/pi/packages/coding-agent/src/core/trust-manager.ts +244 -0
  687. package/.references/pi/packages/coding-agent/src/index.ts +394 -0
  688. package/.references/pi/packages/coding-agent/src/main.ts +857 -0
  689. package/.references/pi/packages/coding-agent/src/migrations.ts +315 -0
  690. package/.references/pi/packages/coding-agent/src/modes/index.ts +15 -0
  691. package/.references/pi/packages/coding-agent/src/modes/interactive/assets/clankolas.png +0 -0
  692. package/.references/pi/packages/coding-agent/src/modes/interactive/components/armin.ts +382 -0
  693. package/.references/pi/packages/coding-agent/src/modes/interactive/components/assistant-message.ts +180 -0
  694. package/.references/pi/packages/coding-agent/src/modes/interactive/components/bash-execution.ts +220 -0
  695. package/.references/pi/packages/coding-agent/src/modes/interactive/components/bordered-loader.ts +68 -0
  696. package/.references/pi/packages/coding-agent/src/modes/interactive/components/branch-summary-message.ts +58 -0
  697. package/.references/pi/packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts +59 -0
  698. package/.references/pi/packages/coding-agent/src/modes/interactive/components/config-selector.ts +942 -0
  699. package/.references/pi/packages/coding-agent/src/modes/interactive/components/countdown-timer.ts +39 -0
  700. package/.references/pi/packages/coding-agent/src/modes/interactive/components/custom-editor.ts +80 -0
  701. package/.references/pi/packages/coding-agent/src/modes/interactive/components/custom-entry.ts +62 -0
  702. package/.references/pi/packages/coding-agent/src/modes/interactive/components/custom-message.ts +99 -0
  703. package/.references/pi/packages/coding-agent/src/modes/interactive/components/daxnuts.ts +164 -0
  704. package/.references/pi/packages/coding-agent/src/modes/interactive/components/diff.ts +147 -0
  705. package/.references/pi/packages/coding-agent/src/modes/interactive/components/dynamic-border.ts +25 -0
  706. package/.references/pi/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts +53 -0
  707. package/.references/pi/packages/coding-agent/src/modes/interactive/components/extension-editor.ts +167 -0
  708. package/.references/pi/packages/coding-agent/src/modes/interactive/components/extension-input.ts +87 -0
  709. package/.references/pi/packages/coding-agent/src/modes/interactive/components/extension-selector.ts +112 -0
  710. package/.references/pi/packages/coding-agent/src/modes/interactive/components/first-time-setup.ts +145 -0
  711. package/.references/pi/packages/coding-agent/src/modes/interactive/components/footer.ts +245 -0
  712. package/.references/pi/packages/coding-agent/src/modes/interactive/components/index.ts +38 -0
  713. package/.references/pi/packages/coding-agent/src/modes/interactive/components/keybinding-hints.ts +48 -0
  714. package/.references/pi/packages/coding-agent/src/modes/interactive/components/login-dialog.ts +233 -0
  715. package/.references/pi/packages/coding-agent/src/modes/interactive/components/model-selector.ts +361 -0
  716. package/.references/pi/packages/coding-agent/src/modes/interactive/components/oauth-selector.ts +214 -0
  717. package/.references/pi/packages/coding-agent/src/modes/interactive/components/scoped-models-selector.ts +360 -0
  718. package/.references/pi/packages/coding-agent/src/modes/interactive/components/session-selector-search.ts +194 -0
  719. package/.references/pi/packages/coding-agent/src/modes/interactive/components/session-selector.ts +1031 -0
  720. package/.references/pi/packages/coding-agent/src/modes/interactive/components/settings-selector.ts +838 -0
  721. package/.references/pi/packages/coding-agent/src/modes/interactive/components/show-images-selector.ts +50 -0
  722. package/.references/pi/packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts +55 -0
  723. package/.references/pi/packages/coding-agent/src/modes/interactive/components/status-indicator.ts +114 -0
  724. package/.references/pi/packages/coding-agent/src/modes/interactive/components/theme-selector.ts +67 -0
  725. package/.references/pi/packages/coding-agent/src/modes/interactive/components/thinking-selector.ts +75 -0
  726. package/.references/pi/packages/coding-agent/src/modes/interactive/components/tool-execution.ts +377 -0
  727. package/.references/pi/packages/coding-agent/src/modes/interactive/components/tree-selector.ts +1427 -0
  728. package/.references/pi/packages/coding-agent/src/modes/interactive/components/trust-selector.ts +134 -0
  729. package/.references/pi/packages/coding-agent/src/modes/interactive/components/user-message-selector.ts +155 -0
  730. package/.references/pi/packages/coding-agent/src/modes/interactive/components/user-message.ts +57 -0
  731. package/.references/pi/packages/coding-agent/src/modes/interactive/components/visual-truncate.ts +50 -0
  732. package/.references/pi/packages/coding-agent/src/modes/interactive/interactive-mode.ts +6005 -0
  733. package/.references/pi/packages/coding-agent/src/modes/interactive/model-search.ts +21 -0
  734. package/.references/pi/packages/coding-agent/src/modes/interactive/theme/dark.json +87 -0
  735. package/.references/pi/packages/coding-agent/src/modes/interactive/theme/light.json +86 -0
  736. package/.references/pi/packages/coding-agent/src/modes/interactive/theme/theme-controller.ts +126 -0
  737. package/.references/pi/packages/coding-agent/src/modes/interactive/theme/theme-schema.json +340 -0
  738. package/.references/pi/packages/coding-agent/src/modes/interactive/theme/theme.ts +1294 -0
  739. package/.references/pi/packages/coding-agent/src/modes/print-mode.ts +159 -0
  740. package/.references/pi/packages/coding-agent/src/modes/rpc/jsonl.ts +58 -0
  741. package/.references/pi/packages/coding-agent/src/modes/rpc/rpc-client.ts +592 -0
  742. package/.references/pi/packages/coding-agent/src/modes/rpc/rpc-mode.ts +795 -0
  743. package/.references/pi/packages/coding-agent/src/modes/rpc/rpc-types.ts +281 -0
  744. package/.references/pi/packages/coding-agent/src/package-manager-cli.ts +887 -0
  745. package/.references/pi/packages/coding-agent/src/rpc-entry.ts +12 -0
  746. package/.references/pi/packages/coding-agent/src/utils/ansi.ts +60 -0
  747. package/.references/pi/packages/coding-agent/src/utils/changelog.ts +196 -0
  748. package/.references/pi/packages/coding-agent/src/utils/child-process.ts +137 -0
  749. package/.references/pi/packages/coding-agent/src/utils/clipboard-image.ts +300 -0
  750. package/.references/pi/packages/coding-agent/src/utils/clipboard-native.ts +33 -0
  751. package/.references/pi/packages/coding-agent/src/utils/clipboard.ts +141 -0
  752. package/.references/pi/packages/coding-agent/src/utils/deprecation.ts +14 -0
  753. package/.references/pi/packages/coding-agent/src/utils/exif-orientation.ts +183 -0
  754. package/.references/pi/packages/coding-agent/src/utils/frontmatter.ts +39 -0
  755. package/.references/pi/packages/coding-agent/src/utils/fs-watch.ts +30 -0
  756. package/.references/pi/packages/coding-agent/src/utils/git.ts +226 -0
  757. package/.references/pi/packages/coding-agent/src/utils/highlight-js-lib-index.d.ts +19 -0
  758. package/.references/pi/packages/coding-agent/src/utils/html.ts +51 -0
  759. package/.references/pi/packages/coding-agent/src/utils/image-convert.ts +49 -0
  760. package/.references/pi/packages/coding-agent/src/utils/image-process.ts +119 -0
  761. package/.references/pi/packages/coding-agent/src/utils/image-resize-core.ts +164 -0
  762. package/.references/pi/packages/coding-agent/src/utils/image-resize-worker.ts +42 -0
  763. package/.references/pi/packages/coding-agent/src/utils/image-resize.ts +123 -0
  764. package/.references/pi/packages/coding-agent/src/utils/json.ts +6 -0
  765. package/.references/pi/packages/coding-agent/src/utils/mime.ts +116 -0
  766. package/.references/pi/packages/coding-agent/src/utils/open-browser.ts +24 -0
  767. package/.references/pi/packages/coding-agent/src/utils/paths.ts +118 -0
  768. package/.references/pi/packages/coding-agent/src/utils/photon.ts +139 -0
  769. package/.references/pi/packages/coding-agent/src/utils/pi-user-agent.ts +4 -0
  770. package/.references/pi/packages/coding-agent/src/utils/shell.ts +225 -0
  771. package/.references/pi/packages/coding-agent/src/utils/sleep.ts +18 -0
  772. package/.references/pi/packages/coding-agent/src/utils/syntax-highlight.ts +146 -0
  773. package/.references/pi/packages/coding-agent/src/utils/tools-manager.ts +369 -0
  774. package/.references/pi/packages/coding-agent/src/utils/version-check.ts +80 -0
  775. package/.references/pi/packages/coding-agent/src/utils/windows-self-update.ts +84 -0
  776. package/.references/pi/packages/coding-agent/test/agent-session-auto-compaction-queue.test.ts +450 -0
  777. package/.references/pi/packages/coding-agent/test/agent-session-branching.test.ts +156 -0
  778. package/.references/pi/packages/coding-agent/test/agent-session-compaction.test.ts +208 -0
  779. package/.references/pi/packages/coding-agent/test/agent-session-concurrent.test.ts +629 -0
  780. package/.references/pi/packages/coding-agent/test/agent-session-dynamic-provider.test.ts +122 -0
  781. package/.references/pi/packages/coding-agent/test/agent-session-dynamic-tools.test.ts +185 -0
  782. package/.references/pi/packages/coding-agent/test/agent-session-retry.test.ts +322 -0
  783. package/.references/pi/packages/coding-agent/test/agent-session-runtime-events.test.ts +257 -0
  784. package/.references/pi/packages/coding-agent/test/agent-session-stats.test.ts +169 -0
  785. package/.references/pi/packages/coding-agent/test/agent-session-tree-navigation.test.ts +323 -0
  786. package/.references/pi/packages/coding-agent/test/ansi-utils.test.ts +110 -0
  787. package/.references/pi/packages/coding-agent/test/args.test.ts +441 -0
  788. package/.references/pi/packages/coding-agent/test/assistant-message.test.ts +130 -0
  789. package/.references/pi/packages/coding-agent/test/auth-storage.test.ts +217 -0
  790. package/.references/pi/packages/coding-agent/test/bash-close-hang-windows.test.ts +126 -0
  791. package/.references/pi/packages/coding-agent/test/bash-execution-width.test.ts +80 -0
  792. package/.references/pi/packages/coding-agent/test/block-images.test.ts +148 -0
  793. package/.references/pi/packages/coding-agent/test/cache-stats.test.ts +143 -0
  794. package/.references/pi/packages/coding-agent/test/changelog.test.ts +49 -0
  795. package/.references/pi/packages/coding-agent/test/clipboard-image-bmp-conversion.test.ts +88 -0
  796. package/.references/pi/packages/coding-agent/test/clipboard-image.test.ts +184 -0
  797. package/.references/pi/packages/coding-agent/test/clipboard-native.test.ts +32 -0
  798. package/.references/pi/packages/coding-agent/test/clipboard.test.ts +166 -0
  799. package/.references/pi/packages/coding-agent/test/compaction-extensions-example.test.ts +66 -0
  800. package/.references/pi/packages/coding-agent/test/compaction-extensions.test.ts +415 -0
  801. package/.references/pi/packages/coding-agent/test/compaction-serialization.test.ts +79 -0
  802. package/.references/pi/packages/coding-agent/test/compaction-summary-reasoning.test.ts +134 -0
  803. package/.references/pi/packages/coding-agent/test/compaction.test.ts +596 -0
  804. package/.references/pi/packages/coding-agent/test/config-value-migration.test.ts +178 -0
  805. package/.references/pi/packages/coding-agent/test/config.test.ts +437 -0
  806. package/.references/pi/packages/coding-agent/test/edit-tool-legacy-input.test.ts +116 -0
  807. package/.references/pi/packages/coding-agent/test/edit-tool-no-full-redraw.test.ts +235 -0
  808. package/.references/pi/packages/coding-agent/test/experimental.test.ts +44 -0
  809. package/.references/pi/packages/coding-agent/test/export-html-skill-block.test.ts +40 -0
  810. package/.references/pi/packages/coding-agent/test/export-html-whitespace.test.ts +42 -0
  811. package/.references/pi/packages/coding-agent/test/export-html-xss.test.ts +67 -0
  812. package/.references/pi/packages/coding-agent/test/extensions-discovery.test.ts +528 -0
  813. package/.references/pi/packages/coding-agent/test/extensions-input-event.test.ts +125 -0
  814. package/.references/pi/packages/coding-agent/test/extensions-runner.test.ts +986 -0
  815. package/.references/pi/packages/coding-agent/test/file-mutation-queue.test.ts +274 -0
  816. package/.references/pi/packages/coding-agent/test/first-time-setup-fork.test.ts +39 -0
  817. package/.references/pi/packages/coding-agent/test/first-time-setup.test.ts +95 -0
  818. package/.references/pi/packages/coding-agent/test/fixtures/assistant-message-with-thinking-code.json +33 -0
  819. package/.references/pi/packages/coding-agent/test/fixtures/before-compaction.jsonl +1003 -0
  820. package/.references/pi/packages/coding-agent/test/fixtures/empty-agent/.gitkeep +0 -0
  821. package/.references/pi/packages/coding-agent/test/fixtures/empty-cwd/.gitkeep +0 -0
  822. package/.references/pi/packages/coding-agent/test/fixtures/large-session.jsonl +1019 -0
  823. package/.references/pi/packages/coding-agent/test/fixtures/skills/consecutive-hyphens/SKILL.md +8 -0
  824. package/.references/pi/packages/coding-agent/test/fixtures/skills/disable-model-invocation/SKILL.md +9 -0
  825. package/.references/pi/packages/coding-agent/test/fixtures/skills/invalid-name-chars/SKILL.md +8 -0
  826. package/.references/pi/packages/coding-agent/test/fixtures/skills/invalid-yaml/SKILL.md +8 -0
  827. package/.references/pi/packages/coding-agent/test/fixtures/skills/long-name/SKILL.md +8 -0
  828. package/.references/pi/packages/coding-agent/test/fixtures/skills/missing-description/SKILL.md +7 -0
  829. package/.references/pi/packages/coding-agent/test/fixtures/skills/multiline-description/SKILL.md +11 -0
  830. package/.references/pi/packages/coding-agent/test/fixtures/skills/name-mismatch/SKILL.md +8 -0
  831. package/.references/pi/packages/coding-agent/test/fixtures/skills/nested/child-skill/SKILL.md +8 -0
  832. package/.references/pi/packages/coding-agent/test/fixtures/skills/no-frontmatter/SKILL.md +3 -0
  833. package/.references/pi/packages/coding-agent/test/fixtures/skills/root-skill-preferred/SKILL.md +3 -0
  834. package/.references/pi/packages/coding-agent/test/fixtures/skills/root-skill-preferred/nested-child/SKILL.md +3 -0
  835. package/.references/pi/packages/coding-agent/test/fixtures/skills/unknown-field/SKILL.md +10 -0
  836. package/.references/pi/packages/coding-agent/test/fixtures/skills/valid-skill/SKILL.md +8 -0
  837. package/.references/pi/packages/coding-agent/test/fixtures/skills-collision/first/calendar/SKILL.md +8 -0
  838. package/.references/pi/packages/coding-agent/test/fixtures/skills-collision/second/calendar/SKILL.md +8 -0
  839. package/.references/pi/packages/coding-agent/test/footer-data-provider.test.ts +265 -0
  840. package/.references/pi/packages/coding-agent/test/footer-width.test.ts +144 -0
  841. package/.references/pi/packages/coding-agent/test/format-resume-command.test.ts +135 -0
  842. package/.references/pi/packages/coding-agent/test/frontmatter.test.ts +60 -0
  843. package/.references/pi/packages/coding-agent/test/git-merge-and-resolve-extension.test.ts +206 -0
  844. package/.references/pi/packages/coding-agent/test/git-ssh-url.test.ts +91 -0
  845. package/.references/pi/packages/coding-agent/test/git-update.test.ts +484 -0
  846. package/.references/pi/packages/coding-agent/test/http-dispatcher.test.ts +53 -0
  847. package/.references/pi/packages/coding-agent/test/image-process.test.ts +53 -0
  848. package/.references/pi/packages/coding-agent/test/image-processing.test.ts +170 -0
  849. package/.references/pi/packages/coding-agent/test/image-resize-callers.test.ts +53 -0
  850. package/.references/pi/packages/coding-agent/test/initial-message.test.ts +48 -0
  851. package/.references/pi/packages/coding-agent/test/input-transform-streaming-example.test.ts +84 -0
  852. package/.references/pi/packages/coding-agent/test/interactive-mode-anthropic-warning.test.ts +89 -0
  853. package/.references/pi/packages/coding-agent/test/interactive-mode-clone-command.test.ts +72 -0
  854. package/.references/pi/packages/coding-agent/test/interactive-mode-compaction.test.ts +85 -0
  855. package/.references/pi/packages/coding-agent/test/interactive-mode-import-command.test.ts +143 -0
  856. package/.references/pi/packages/coding-agent/test/interactive-mode-startup-input.test.ts +72 -0
  857. package/.references/pi/packages/coding-agent/test/interactive-mode-status.test.ts +1123 -0
  858. package/.references/pi/packages/coding-agent/test/interactive-mode-suspend.test.ts +149 -0
  859. package/.references/pi/packages/coding-agent/test/keybindings-migration.test.ts +88 -0
  860. package/.references/pi/packages/coding-agent/test/max-thinking.test.ts +45 -0
  861. package/.references/pi/packages/coding-agent/test/model-registry.test.ts +1934 -0
  862. package/.references/pi/packages/coding-agent/test/model-resolver.test.ts +690 -0
  863. package/.references/pi/packages/coding-agent/test/model-runtime-auth-options.test.ts +256 -0
  864. package/.references/pi/packages/coding-agent/test/model-runtime-cloudflare-compat.test.ts +95 -0
  865. package/.references/pi/packages/coding-agent/test/model-runtime-modify-models-compat.test.ts +85 -0
  866. package/.references/pi/packages/coding-agent/test/model-runtime-test-utils.ts +25 -0
  867. package/.references/pi/packages/coding-agent/test/models-store.test.ts +51 -0
  868. package/.references/pi/packages/coding-agent/test/oauth-selector.test.ts +147 -0
  869. package/.references/pi/packages/coding-agent/test/package-command-paths.test.ts +746 -0
  870. package/.references/pi/packages/coding-agent/test/package-manager-ssh.test.ts +97 -0
  871. package/.references/pi/packages/coding-agent/test/package-manager.test.ts +2512 -0
  872. package/.references/pi/packages/coding-agent/test/path-utils.test.ts +174 -0
  873. package/.references/pi/packages/coding-agent/test/paths.test.ts +150 -0
  874. package/.references/pi/packages/coding-agent/test/pi-user-agent.test.ts +12 -0
  875. package/.references/pi/packages/coding-agent/test/plan-mode-extension.test.ts +167 -0
  876. package/.references/pi/packages/coding-agent/test/plan-mode-utils.test.ts +261 -0
  877. package/.references/pi/packages/coding-agent/test/print-mode.test.ts +142 -0
  878. package/.references/pi/packages/coding-agent/test/prompt-templates.test.ts +615 -0
  879. package/.references/pi/packages/coding-agent/test/radius.test.ts +151 -0
  880. package/.references/pi/packages/coding-agent/test/remote-catalog-provider.test.ts +118 -0
  881. package/.references/pi/packages/coding-agent/test/resolve-config-value.test.ts +121 -0
  882. package/.references/pi/packages/coding-agent/test/resource-loader.test.ts +739 -0
  883. package/.references/pi/packages/coding-agent/test/restore-sandbox-env.test.ts +77 -0
  884. package/.references/pi/packages/coding-agent/test/rpc-client-clone.test.ts +29 -0
  885. package/.references/pi/packages/coding-agent/test/rpc-client-process-exit.test.ts +38 -0
  886. package/.references/pi/packages/coding-agent/test/rpc-example.ts +86 -0
  887. package/.references/pi/packages/coding-agent/test/rpc-jsonl.test.ts +65 -0
  888. package/.references/pi/packages/coding-agent/test/rpc-prompt-response-semantics.test.ts +288 -0
  889. package/.references/pi/packages/coding-agent/test/rpc.test.ts +377 -0
  890. package/.references/pi/packages/coding-agent/test/runtime-credentials.test.ts +42 -0
  891. package/.references/pi/packages/coding-agent/test/sdk-codex-cache-probe-tool-loop.ts +497 -0
  892. package/.references/pi/packages/coding-agent/test/sdk-openrouter-attribution.test.ts +266 -0
  893. package/.references/pi/packages/coding-agent/test/sdk-session-manager.test.ts +95 -0
  894. package/.references/pi/packages/coding-agent/test/sdk-skills.test.ts +109 -0
  895. package/.references/pi/packages/coding-agent/test/sdk-stream-options.test.ts +188 -0
  896. package/.references/pi/packages/coding-agent/test/session-cwd.test.ts +91 -0
  897. package/.references/pi/packages/coding-agent/test/session-file-invalid.test.ts +65 -0
  898. package/.references/pi/packages/coding-agent/test/session-id-readonly.test.ts +190 -0
  899. package/.references/pi/packages/coding-agent/test/session-info-modified-timestamp.test.ts +83 -0
  900. package/.references/pi/packages/coding-agent/test/session-manager/build-context.test.ts +305 -0
  901. package/.references/pi/packages/coding-agent/test/session-manager/custom-session-id.test.ts +169 -0
  902. package/.references/pi/packages/coding-agent/test/session-manager/file-operations.test.ts +315 -0
  903. package/.references/pi/packages/coding-agent/test/session-manager/labels.test.ts +211 -0
  904. package/.references/pi/packages/coding-agent/test/session-manager/migration.test.ts +78 -0
  905. package/.references/pi/packages/coding-agent/test/session-manager/save-entry.test.ts +55 -0
  906. package/.references/pi/packages/coding-agent/test/session-manager/tree-traversal.test.ts +533 -0
  907. package/.references/pi/packages/coding-agent/test/session-selector-path-delete.test.ts +354 -0
  908. package/.references/pi/packages/coding-agent/test/session-selector-rename.test.ts +111 -0
  909. package/.references/pi/packages/coding-agent/test/session-selector-search.test.ts +195 -0
  910. package/.references/pi/packages/coding-agent/test/settings-manager-bug.test.ts +147 -0
  911. package/.references/pi/packages/coding-agent/test/settings-manager.test.ts +511 -0
  912. package/.references/pi/packages/coding-agent/test/skills.test.ts +432 -0
  913. package/.references/pi/packages/coding-agent/test/startup-session-name.test.ts +135 -0
  914. package/.references/pi/packages/coding-agent/test/status-indicator.test.ts +32 -0
  915. package/.references/pi/packages/coding-agent/test/stdout-cleanliness.test.ts +128 -0
  916. package/.references/pi/packages/coding-agent/test/streaming-render-debug.ts +97 -0
  917. package/.references/pi/packages/coding-agent/test/suite/README.md +16 -0
  918. package/.references/pi/packages/coding-agent/test/suite/agent-session-bash-persistence.test.ts +242 -0
  919. package/.references/pi/packages/coding-agent/test/suite/agent-session-compaction.test.ts +446 -0
  920. package/.references/pi/packages/coding-agent/test/suite/agent-session-model-extension.test.ts +373 -0
  921. package/.references/pi/packages/coding-agent/test/suite/agent-session-prompt.test.ts +398 -0
  922. package/.references/pi/packages/coding-agent/test/suite/agent-session-queue.test.ts +445 -0
  923. package/.references/pi/packages/coding-agent/test/suite/agent-session-retry-events.test.ts +364 -0
  924. package/.references/pi/packages/coding-agent/test/suite/agent-session-runtime.test.ts +609 -0
  925. package/.references/pi/packages/coding-agent/test/suite/harness.ts +219 -0
  926. package/.references/pi/packages/coding-agent/test/suite/lax-message-content.test.ts +162 -0
  927. package/.references/pi/packages/coding-agent/test/suite/regressions/1717-2113-agent-session-event-settlement.test.ts +95 -0
  928. package/.references/pi/packages/coding-agent/test/suite/regressions/2023-queued-slash-command-followup.test.ts +80 -0
  929. package/.references/pi/packages/coding-agent/test/suite/regressions/2753-reload-stale-resource-settings.test.ts +105 -0
  930. package/.references/pi/packages/coding-agent/test/suite/regressions/2781-skill-collision-precedence.test.ts +120 -0
  931. package/.references/pi/packages/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts +106 -0
  932. package/.references/pi/packages/coding-agent/test/suite/regressions/2835-tools-allowlist-filters-extension-tools.test.ts +94 -0
  933. package/.references/pi/packages/coding-agent/test/suite/regressions/2860-replaced-session-context.test.ts +279 -0
  934. package/.references/pi/packages/coding-agent/test/suite/regressions/3217-scoped-model-order.test.ts +104 -0
  935. package/.references/pi/packages/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts +72 -0
  936. package/.references/pi/packages/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts +83 -0
  937. package/.references/pi/packages/coding-agent/test/suite/regressions/3317-network-connection-lost-retry.test.ts +33 -0
  938. package/.references/pi/packages/coding-agent/test/suite/regressions/3592-no-builtin-tools-keeps-extension-tools.test.ts +119 -0
  939. package/.references/pi/packages/coding-agent/test/suite/regressions/3616-settings-inmemory-reload.test.ts +86 -0
  940. package/.references/pi/packages/coding-agent/test/suite/regressions/3686-session-name-event.test.ts +61 -0
  941. package/.references/pi/packages/coding-agent/test/suite/regressions/3688-tree-cancel-compacting.test.ts +36 -0
  942. package/.references/pi/packages/coding-agent/test/suite/regressions/3982-message-end-cost-override.test.ts +56 -0
  943. package/.references/pi/packages/coding-agent/test/suite/regressions/4167-thinking-toggle-pending-tool-render.test.ts +182 -0
  944. package/.references/pi/packages/coding-agent/test/suite/regressions/5080-signal-shutdown-extension-cleanup.test.ts +185 -0
  945. package/.references/pi/packages/coding-agent/test/suite/regressions/5109-exclude-tools.test.ts +81 -0
  946. package/.references/pi/packages/coding-agent/test/suite/regressions/5208-late-bash-output.test.ts +29 -0
  947. package/.references/pi/packages/coding-agent/test/suite/regressions/5217-compaction-reason.test.ts +95 -0
  948. package/.references/pi/packages/coding-agent/test/suite/regressions/5303-bash-output-truncation.test.ts +79 -0
  949. package/.references/pi/packages/coding-agent/test/suite/regressions/5433-extension-oauth-prompt-input.test.ts +119 -0
  950. package/.references/pi/packages/coding-agent/test/suite/regressions/5596-missing-theme-export.test.ts +89 -0
  951. package/.references/pi/packages/coding-agent/test/suite/regressions/5661-uppercase-header-values.test.ts +91 -0
  952. package/.references/pi/packages/coding-agent/test/suite/regressions/5724-sigterm-signal-exit.test.ts +94 -0
  953. package/.references/pi/packages/coding-agent/test/suite/regressions/5868-rpc-unknown-command-id.test.ts +113 -0
  954. package/.references/pi/packages/coding-agent/test/suite/regressions/5943-session-start-notify.test.ts +515 -0
  955. package/.references/pi/packages/coding-agent/test/suite/regressions/5996-session-name-newlines.test.ts +40 -0
  956. package/.references/pi/packages/coding-agent/test/suite/regressions/6019-explicit-provider-retry-message.test.ts +31 -0
  957. package/.references/pi/packages/coding-agent/test/suite/regressions/6162-extension-active-tools-next-turn.test.ts +192 -0
  958. package/.references/pi/packages/coding-agent/test/suite/regressions/6260-inline-extension-naming.test.ts +99 -0
  959. package/.references/pi/packages/coding-agent/test/suite/regressions/6324-branch-summary-ambient-auth.test.ts +61 -0
  960. package/.references/pi/packages/coding-agent/test/suite/regressions/6363-agent-settled-event.test.ts +158 -0
  961. package/.references/pi/packages/coding-agent/test/suite/regressions/extension-factory-cache.test.ts +131 -0
  962. package/.references/pi/packages/coding-agent/test/suite/regressions/pre-prompt-compaction-no-continue.test.ts +75 -0
  963. package/.references/pi/packages/coding-agent/test/syntax-highlight.test.ts +76 -0
  964. package/.references/pi/packages/coding-agent/test/system-prompt.test.ts +114 -0
  965. package/.references/pi/packages/coding-agent/test/test-harness.test.ts +321 -0
  966. package/.references/pi/packages/coding-agent/test/test-harness.ts +463 -0
  967. package/.references/pi/packages/coding-agent/test/test-theme-colors.ts +246 -0
  968. package/.references/pi/packages/coding-agent/test/theme-detection.test.ts +133 -0
  969. package/.references/pi/packages/coding-agent/test/theme-export.test.ts +104 -0
  970. package/.references/pi/packages/coding-agent/test/theme-picker.test.ts +51 -0
  971. package/.references/pi/packages/coding-agent/test/tool-execution-component.test.ts +529 -0
  972. package/.references/pi/packages/coding-agent/test/tools.test.ts +1213 -0
  973. package/.references/pi/packages/coding-agent/test/tree-selector.test.ts +702 -0
  974. package/.references/pi/packages/coding-agent/test/trigger-compact-extension.test.ts +59 -0
  975. package/.references/pi/packages/coding-agent/test/truncate-to-width.test.ts +81 -0
  976. package/.references/pi/packages/coding-agent/test/trust-manager.test.ts +67 -0
  977. package/.references/pi/packages/coding-agent/test/trust-selector.test.ts +87 -0
  978. package/.references/pi/packages/coding-agent/test/user-message.test.ts +25 -0
  979. package/.references/pi/packages/coding-agent/test/utilities.ts +318 -0
  980. package/.references/pi/packages/coding-agent/test/version-check.test.ts +91 -0
  981. package/.references/pi/packages/coding-agent/tsconfig.build.json +17 -0
  982. package/.references/pi/packages/coding-agent/tsconfig.examples.json +16 -0
  983. package/.references/pi/packages/coding-agent/vitest.config.ts +38 -0
  984. package/.references/pi/packages/orchestrator/CHANGELOG.md +19 -0
  985. package/.references/pi/packages/orchestrator/README.md +11 -0
  986. package/.references/pi/packages/orchestrator/package.json +45 -0
  987. package/.references/pi/packages/orchestrator/src/cli.ts +161 -0
  988. package/.references/pi/packages/orchestrator/src/config.ts +69 -0
  989. package/.references/pi/packages/orchestrator/src/handler.ts +161 -0
  990. package/.references/pi/packages/orchestrator/src/index.ts +10 -0
  991. package/.references/pi/packages/orchestrator/src/ipc/client.ts +63 -0
  992. package/.references/pi/packages/orchestrator/src/ipc/protocol.ts +142 -0
  993. package/.references/pi/packages/orchestrator/src/ipc/server.ts +209 -0
  994. package/.references/pi/packages/orchestrator/src/radius.ts +440 -0
  995. package/.references/pi/packages/orchestrator/src/rpc-process.ts +201 -0
  996. package/.references/pi/packages/orchestrator/src/serve.ts +77 -0
  997. package/.references/pi/packages/orchestrator/src/storage.ts +70 -0
  998. package/.references/pi/packages/orchestrator/src/supervisor.ts +354 -0
  999. package/.references/pi/packages/orchestrator/src/types.ts +25 -0
  1000. package/.references/pi/packages/orchestrator/tsconfig.build.json +9 -0
  1001. package/.references/pi/packages/tui/CHANGELOG.md +1005 -0
  1002. package/.references/pi/packages/tui/README.md +791 -0
  1003. package/.references/pi/packages/tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  1004. package/.references/pi/packages/tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  1005. package/.references/pi/packages/tui/native/darwin/src/darwin-modifiers.c +70 -0
  1006. package/.references/pi/packages/tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  1007. package/.references/pi/packages/tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  1008. package/.references/pi/packages/tui/native/win32/src/win32-console-mode.c +53 -0
  1009. package/.references/pi/packages/tui/package.json +47 -0
  1010. package/.references/pi/packages/tui/src/autocomplete.ts +786 -0
  1011. package/.references/pi/packages/tui/src/components/box.ts +137 -0
  1012. package/.references/pi/packages/tui/src/components/cancellable-loader.ts +40 -0
  1013. package/.references/pi/packages/tui/src/components/editor.ts +2333 -0
  1014. package/.references/pi/packages/tui/src/components/image.ts +126 -0
  1015. package/.references/pi/packages/tui/src/components/input.ts +447 -0
  1016. package/.references/pi/packages/tui/src/components/loader.ts +92 -0
  1017. package/.references/pi/packages/tui/src/components/markdown.ts +858 -0
  1018. package/.references/pi/packages/tui/src/components/select-list.ts +229 -0
  1019. package/.references/pi/packages/tui/src/components/settings-list.ts +250 -0
  1020. package/.references/pi/packages/tui/src/components/spacer.ts +28 -0
  1021. package/.references/pi/packages/tui/src/components/text.ts +106 -0
  1022. package/.references/pi/packages/tui/src/components/truncated-text.ts +65 -0
  1023. package/.references/pi/packages/tui/src/editor-component.ts +74 -0
  1024. package/.references/pi/packages/tui/src/fuzzy.ts +137 -0
  1025. package/.references/pi/packages/tui/src/index.ts +114 -0
  1026. package/.references/pi/packages/tui/src/keybindings.ts +244 -0
  1027. package/.references/pi/packages/tui/src/keys.ts +1401 -0
  1028. package/.references/pi/packages/tui/src/kill-ring.ts +46 -0
  1029. package/.references/pi/packages/tui/src/native-modifiers.ts +59 -0
  1030. package/.references/pi/packages/tui/src/stdin-buffer.ts +434 -0
  1031. package/.references/pi/packages/tui/src/terminal-colors.ts +73 -0
  1032. package/.references/pi/packages/tui/src/terminal-image.ts +488 -0
  1033. package/.references/pi/packages/tui/src/terminal.ts +531 -0
  1034. package/.references/pi/packages/tui/src/tui.ts +1714 -0
  1035. package/.references/pi/packages/tui/src/undo-stack.ts +28 -0
  1036. package/.references/pi/packages/tui/src/utils.ts +1209 -0
  1037. package/.references/pi/packages/tui/src/word-navigation.ts +117 -0
  1038. package/.references/pi/packages/tui/test/autocomplete.test.ts +542 -0
  1039. package/.references/pi/packages/tui/test/bug-regression-isimageline-startswith-bug.test.ts +237 -0
  1040. package/.references/pi/packages/tui/test/chat-simple.ts +129 -0
  1041. package/.references/pi/packages/tui/test/editor.test.ts +4051 -0
  1042. package/.references/pi/packages/tui/test/fuzzy.test.ts +112 -0
  1043. package/.references/pi/packages/tui/test/image-test.ts +56 -0
  1044. package/.references/pi/packages/tui/test/input.test.ts +647 -0
  1045. package/.references/pi/packages/tui/test/key-tester.ts +123 -0
  1046. package/.references/pi/packages/tui/test/keybindings.test.ts +46 -0
  1047. package/.references/pi/packages/tui/test/keys.test.ts +622 -0
  1048. package/.references/pi/packages/tui/test/markdown.test.ts +1442 -0
  1049. package/.references/pi/packages/tui/test/overlay-non-capturing.test.ts +1202 -0
  1050. package/.references/pi/packages/tui/test/overlay-options.test.ts +541 -0
  1051. package/.references/pi/packages/tui/test/overlay-short-content.test.ts +61 -0
  1052. package/.references/pi/packages/tui/test/regression-overlay-cjk-boundary.test.ts +68 -0
  1053. package/.references/pi/packages/tui/test/regression-regional-indicator-width.test.ts +52 -0
  1054. package/.references/pi/packages/tui/test/select-list.test.ts +116 -0
  1055. package/.references/pi/packages/tui/test/stdin-buffer.test.ts +458 -0
  1056. package/.references/pi/packages/tui/test/tab-width.test.ts +87 -0
  1057. package/.references/pi/packages/tui/test/terminal-colors.test.ts +249 -0
  1058. package/.references/pi/packages/tui/test/terminal-image.test.ts +492 -0
  1059. package/.references/pi/packages/tui/test/terminal.test.ts +233 -0
  1060. package/.references/pi/packages/tui/test/test-themes.ts +38 -0
  1061. package/.references/pi/packages/tui/test/truncate-to-width.test.ts +76 -0
  1062. package/.references/pi/packages/tui/test/truncated-text.test.ts +129 -0
  1063. package/.references/pi/packages/tui/test/tui-cell-size-input.test.ts +81 -0
  1064. package/.references/pi/packages/tui/test/tui-overlay-style-leak.test.ts +80 -0
  1065. package/.references/pi/packages/tui/test/tui-render.test.ts +767 -0
  1066. package/.references/pi/packages/tui/test/tui-shrink.test.ts +44 -0
  1067. package/.references/pi/packages/tui/test/viewport-overwrite-repro.ts +106 -0
  1068. package/.references/pi/packages/tui/test/virtual-terminal.ts +218 -0
  1069. package/.references/pi/packages/tui/test/word-navigation.test.ts +191 -0
  1070. package/.references/pi/packages/tui/test/wrap-ansi.test.ts +266 -0
  1071. package/.references/pi/packages/tui/tsconfig.build.json +9 -0
  1072. package/.references/pi/packages/tui/vitest.config.ts +7 -0
  1073. package/.references/pi/pi-test.bat +14 -0
  1074. package/.references/pi/pi-test.ps1 +71 -0
  1075. package/.references/pi/pi-test.sh +57 -0
  1076. package/.references/pi/scripts/browser-smoke-entry.ts +61 -0
  1077. package/.references/pi/scripts/build-binaries.sh +245 -0
  1078. package/.references/pi/scripts/check-browser-smoke.mjs +36 -0
  1079. package/.references/pi/scripts/check-lockfile-commit.mjs +120 -0
  1080. package/.references/pi/scripts/check-pinned-deps.mjs +63 -0
  1081. package/.references/pi/scripts/check-ts-relative-imports.mjs +74 -0
  1082. package/.references/pi/scripts/cost.ts +183 -0
  1083. package/.references/pi/scripts/edit-tool-stats.mjs +834 -0
  1084. package/.references/pi/scripts/generate-coding-agent-install-lock.mjs +439 -0
  1085. package/.references/pi/scripts/generate-coding-agent-shrinkwrap.mjs +365 -0
  1086. package/.references/pi/scripts/local-release.mjs +284 -0
  1087. package/.references/pi/scripts/profile-coding-agent-node.mjs +639 -0
  1088. package/.references/pi/scripts/publish-model-catalog.mjs +295 -0
  1089. package/.references/pi/scripts/publish.mjs +125 -0
  1090. package/.references/pi/scripts/read-tool-stats.mjs +505 -0
  1091. package/.references/pi/scripts/release-notes.mjs +364 -0
  1092. package/.references/pi/scripts/release.mjs +207 -0
  1093. package/.references/pi/scripts/repro-5893-wsl-bash.mjs +55 -0
  1094. package/.references/pi/scripts/session-context-stats.mjs +405 -0
  1095. package/.references/pi/scripts/session-transcripts.ts +406 -0
  1096. package/.references/pi/scripts/stats.ts +233 -0
  1097. package/.references/pi/scripts/sync-versions.js +96 -0
  1098. package/.references/pi/scripts/tool-stats.ts +232 -0
  1099. package/.references/pi/scripts/update-source-imports-to-ts.sh +10 -0
  1100. package/.references/pi/test.sh +81 -0
  1101. package/.references/pi/tsconfig.base.json +25 -0
  1102. package/.references/pi/tsconfig.json +27 -0
  1103. package/AGENTS.md +8 -0
  1104. package/Cargo.lock +5169 -0
  1105. package/Cargo.toml +39 -0
  1106. package/LICENSE +21 -0
  1107. package/README.md +43 -0
  1108. package/aliases/pi-rusty/Cargo.toml +19 -0
  1109. package/aliases/pi-rusty/LICENSE +21 -0
  1110. package/aliases/pi-rusty/README.md +10 -0
  1111. package/aliases/pi-rusty/src/main.rs +8 -0
  1112. package/bun.lock +687 -0
  1113. package/crates/pi/Cargo.toml +66 -0
  1114. package/crates/pi/LICENSE +21 -0
  1115. package/crates/pi/assets/export-html/template.css +1066 -0
  1116. package/crates/pi/assets/export-html/template.html +55 -0
  1117. package/crates/pi/assets/export-html/template.js +1864 -0
  1118. package/crates/pi/assets/export-html/vendor/dark.json +29 -0
  1119. package/crates/pi/assets/export-html/vendor/highlight.min.js +1213 -0
  1120. package/crates/pi/assets/export-html/vendor/light.json +6 -0
  1121. package/crates/pi/assets/export-html/vendor/marked.min.js +78 -0
  1122. package/crates/pi/src/cli/args.rs +889 -0
  1123. package/crates/pi/src/cli/bootstrap.rs +2134 -0
  1124. package/crates/pi/src/cli/entry.rs +1332 -0
  1125. package/crates/pi/src/cli/help.rs +326 -0
  1126. package/crates/pi/src/cli/mod.rs +22 -0
  1127. package/crates/pi/src/cli/package_manager_cli.rs +1515 -0
  1128. package/crates/pi/src/core/agent_session/bash.rs +453 -0
  1129. package/crates/pi/src/core/agent_session/compaction.rs +1804 -0
  1130. package/crates/pi/src/core/agent_session/events.rs +621 -0
  1131. package/crates/pi/src/core/agent_session/extension.rs +2146 -0
  1132. package/crates/pi/src/core/agent_session/extension_runner.rs +471 -0
  1133. package/crates/pi/src/core/agent_session/mod.rs +1768 -0
  1134. package/crates/pi/src/core/agent_session/model.rs +775 -0
  1135. package/crates/pi/src/core/agent_session/persistence.rs +265 -0
  1136. package/crates/pi/src/core/agent_session/prompt.rs +2289 -0
  1137. package/crates/pi/src/core/agent_session/retry.rs +448 -0
  1138. package/crates/pi/src/core/agent_session/stats.rs +302 -0
  1139. package/crates/pi/src/core/agent_session/subscribe.rs +450 -0
  1140. package/crates/pi/src/core/agent_session/tools.rs +515 -0
  1141. package/crates/pi/src/core/agent_session/tree.rs +1219 -0
  1142. package/crates/pi/src/core/agent_session_runtime.rs +1612 -0
  1143. package/crates/pi/src/core/agent_session_services.rs +1613 -0
  1144. package/crates/pi/src/core/compaction/branch.rs +767 -0
  1145. package/crates/pi/src/core/compaction/mod.rs +1955 -0
  1146. package/crates/pi/src/core/compaction/utils.rs +357 -0
  1147. package/crates/pi/src/core/config.rs +1102 -0
  1148. package/crates/pi/src/core/config_value.rs +179 -0
  1149. package/crates/pi/src/core/experimental.rs +29 -0
  1150. package/crates/pi/src/core/export_html/ansi_to_html.rs +279 -0
  1151. package/crates/pi/src/core/export_html/mod.rs +787 -0
  1152. package/crates/pi/src/core/export_html/session_data.rs +149 -0
  1153. package/crates/pi/src/core/extension_host/acquire/tests.rs +579 -0
  1154. package/crates/pi/src/core/extension_host/acquire.rs +431 -0
  1155. package/crates/pi/src/core/extension_host/tests.rs +2353 -0
  1156. package/crates/pi/src/core/extension_host.rs +2541 -0
  1157. package/crates/pi/src/core/lockfile.rs +913 -0
  1158. package/crates/pi/src/core/messages.rs +706 -0
  1159. package/crates/pi/src/core/migrations.rs +828 -0
  1160. package/crates/pi/src/core/mod.rs +28 -0
  1161. package/crates/pi/src/core/model_resolver.rs +1473 -0
  1162. package/crates/pi/src/core/model_runtime.rs +2720 -0
  1163. package/crates/pi/src/core/output_guard.rs +977 -0
  1164. package/crates/pi/src/core/package_manager/tests.rs +1304 -0
  1165. package/crates/pi/src/core/package_manager.rs +2015 -0
  1166. package/crates/pi/src/core/platform/clipboard.rs +702 -0
  1167. package/crates/pi/src/core/platform/command.rs +223 -0
  1168. package/crates/pi/src/core/platform/debug_dump.rs +274 -0
  1169. package/crates/pi/src/core/platform/external_editor.rs +294 -0
  1170. package/crates/pi/src/core/platform/first_run.rs +120 -0
  1171. package/crates/pi/src/core/platform/image.rs +237 -0
  1172. package/crates/pi/src/core/platform/mod.rs +27 -0
  1173. package/crates/pi/src/core/platform/open_browser.rs +187 -0
  1174. package/crates/pi/src/core/platform/release_packaging.rs +785 -0
  1175. package/crates/pi/src/core/resources/diagnostics.rs +148 -0
  1176. package/crates/pi/src/core/resources/discovery.rs +2570 -0
  1177. package/crates/pi/src/core/resources/frontmatter.rs +205 -0
  1178. package/crates/pi/src/core/resources/mod.rs +1402 -0
  1179. package/crates/pi/src/core/resources/prompts.rs +510 -0
  1180. package/crates/pi/src/core/resources/skills.rs +981 -0
  1181. package/crates/pi/src/core/resources/slash.rs +199 -0
  1182. package/crates/pi/src/core/resources/source_info.rs +141 -0
  1183. package/crates/pi/src/core/resources/themes.rs +297 -0
  1184. package/crates/pi/src/core/session_transfer.rs +390 -0
  1185. package/crates/pi/src/core/sessions/context.rs +657 -0
  1186. package/crates/pi/src/core/sessions/cwd.rs +176 -0
  1187. package/crates/pi/src/core/sessions/entries.rs +1364 -0
  1188. package/crates/pi/src/core/sessions/list.rs +610 -0
  1189. package/crates/pi/src/core/sessions/mod.rs +2117 -0
  1190. package/crates/pi/src/core/settings.rs +3794 -0
  1191. package/crates/pi/src/core/share.rs +577 -0
  1192. package/crates/pi/src/core/system_prompt.rs +654 -0
  1193. package/crates/pi/src/core/tools/bash.rs +1574 -0
  1194. package/crates/pi/src/core/tools/edit.rs +919 -0
  1195. package/crates/pi/src/core/tools/edit_diff.rs +1150 -0
  1196. package/crates/pi/src/core/tools/find.rs +652 -0
  1197. package/crates/pi/src/core/tools/grep.rs +965 -0
  1198. package/crates/pi/src/core/tools/ls.rs +545 -0
  1199. package/crates/pi/src/core/tools/mod.rs +312 -0
  1200. package/crates/pi/src/core/tools/mutation_queue.rs +392 -0
  1201. package/crates/pi/src/core/tools/output_accumulator.rs +689 -0
  1202. package/crates/pi/src/core/tools/path_utils.rs +517 -0
  1203. package/crates/pi/src/core/tools/read.rs +1413 -0
  1204. package/crates/pi/src/core/tools/truncate.rs +644 -0
  1205. package/crates/pi/src/core/tools/write.rs +524 -0
  1206. package/crates/pi/src/core/trust.rs +1414 -0
  1207. package/crates/pi/src/core/update/changelog.rs +583 -0
  1208. package/crates/pi/src/core/update/deprecation.rs +148 -0
  1209. package/crates/pi/src/core/update/mod.rs +8 -0
  1210. package/crates/pi/src/core/update/self_update.rs +1327 -0
  1211. package/crates/pi/src/core/update/user_agent.rs +59 -0
  1212. package/crates/pi/src/core/update/version_check.rs +511 -0
  1213. package/crates/pi/src/core/update/windows_quarantine.rs +262 -0
  1214. package/crates/pi/src/lib.rs +23 -0
  1215. package/crates/pi/src/main.rs +13 -0
  1216. package/crates/pi/src/modes/interactive/footer.rs +260 -0
  1217. package/crates/pi/src/modes/interactive/header.rs +83 -0
  1218. package/crates/pi/src/modes/interactive/input.rs +923 -0
  1219. package/crates/pi/src/modes/interactive/messages.rs +640 -0
  1220. package/crates/pi/src/modes/interactive/mod.rs +51 -0
  1221. package/crates/pi/src/modes/interactive/progress.rs +181 -0
  1222. package/crates/pi/src/modes/interactive/runtime.rs +7227 -0
  1223. package/crates/pi/src/modes/interactive/selectors.rs +146 -0
  1224. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__bash_state_widths.snap +138 -0
  1225. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__compact_state_widths.snap +137 -0
  1226. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__custom_branch_skill_messages.snap +145 -0
  1227. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__empty_state_widths.snap +136 -0
  1228. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__error_state_widths.snap +139 -0
  1229. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__loading_state_widths.snap +136 -0
  1230. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__queue_state_widths.snap +139 -0
  1231. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__retry_state_widths.snap +136 -0
  1232. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__streaming_state_widths.snap +137 -0
  1233. package/crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__user_assistant_messages.snap +145 -0
  1234. package/crates/pi/src/modes/interactive/startup.rs +194 -0
  1235. package/crates/pi/src/modes/interactive/state.rs +759 -0
  1236. package/crates/pi/src/modes/interactive/status.rs +70 -0
  1237. package/crates/pi/src/modes/interactive/tests.rs +945 -0
  1238. package/crates/pi/src/modes/interactive/theme.rs +1402 -0
  1239. package/crates/pi/src/modes/interactive/tool_renderer.rs +152 -0
  1240. package/crates/pi/src/modes/interactive/view.rs +511 -0
  1241. package/crates/pi/src/modes/mod.rs +6 -0
  1242. package/crates/pi/src/modes/print/input.rs +415 -0
  1243. package/crates/pi/src/modes/print/json.rs +195 -0
  1244. package/crates/pi/src/modes/print/mod.rs +403 -0
  1245. package/crates/pi/src/modes/print/text.rs +412 -0
  1246. package/crates/pi/src/modes/rpc/extension_ui.rs +361 -0
  1247. package/crates/pi/src/modes/rpc/jsonl.rs +429 -0
  1248. package/crates/pi/src/modes/rpc/mod.rs +19 -0
  1249. package/crates/pi/src/modes/rpc/mode_host.rs +466 -0
  1250. package/crates/pi/src/modes/rpc/server.rs +3037 -0
  1251. package/crates/pi/src/modes/rpc/types.rs +2999 -0
  1252. package/crates/pi/src/modes/run.rs +636 -0
  1253. package/crates/pi/tests/fixtures/fake_extension_host.rs +104 -0
  1254. package/crates/pi/tests/fixtures/tool-schemas/bash.json +16 -0
  1255. package/crates/pi/tests/fixtures/tool-schemas/edit.json +34 -0
  1256. package/crates/pi/tests/fixtures/tool-schemas/find.json +20 -0
  1257. package/crates/pi/tests/fixtures/tool-schemas/grep.json +36 -0
  1258. package/crates/pi/tests/fixtures/tool-schemas/ls.json +13 -0
  1259. package/crates/pi/tests/fixtures/tool-schemas/read.json +20 -0
  1260. package/crates/pi/tests/fixtures/tool-schemas/write.json +17 -0
  1261. package/crates/pi-agent/Cargo.toml +30 -0
  1262. package/crates/pi-agent/LICENSE +21 -0
  1263. package/crates/pi-agent/src/agent.rs +1780 -0
  1264. package/crates/pi-agent/src/bus.rs +770 -0
  1265. package/crates/pi-agent/src/config.rs +445 -0
  1266. package/crates/pi-agent/src/drain.rs +941 -0
  1267. package/crates/pi-agent/src/error.rs +61 -0
  1268. package/crates/pi-agent/src/event.rs +270 -0
  1269. package/crates/pi-agent/src/lib.rs +49 -0
  1270. package/crates/pi-agent/src/message.rs +296 -0
  1271. package/crates/pi-agent/src/queue.rs +222 -0
  1272. package/crates/pi-agent/src/run.rs +1870 -0
  1273. package/crates/pi-agent/src/schedule.rs +2153 -0
  1274. package/crates/pi-agent/src/state.rs +377 -0
  1275. package/crates/pi-agent/src/tool.rs +496 -0
  1276. package/crates/pi-ai/Cargo.toml +45 -0
  1277. package/crates/pi-ai/LICENSE +21 -0
  1278. package/crates/pi-ai/data/builtin-models.json +25193 -0
  1279. package/crates/pi-ai/src/auth/config_value.rs +598 -0
  1280. package/crates/pi-ai/src/auth/context.rs +215 -0
  1281. package/crates/pi-ai/src/auth/credential_store.rs +318 -0
  1282. package/crates/pi-ai/src/auth/env_keys.rs +647 -0
  1283. package/crates/pi-ai/src/auth/error.rs +194 -0
  1284. package/crates/pi-ai/src/auth/file_store.rs +1179 -0
  1285. package/crates/pi-ai/src/auth/http.rs +526 -0
  1286. package/crates/pi-ai/src/auth/mod.rs +29 -0
  1287. package/crates/pi-ai/src/auth/oauth/anthropic.rs +1482 -0
  1288. package/crates/pi-ai/src/auth/oauth/callback_server.rs +584 -0
  1289. package/crates/pi-ai/src/auth/oauth/device_code.rs +573 -0
  1290. package/crates/pi-ai/src/auth/oauth/github_copilot.rs +1527 -0
  1291. package/crates/pi-ai/src/auth/oauth/mod.rs +26 -0
  1292. package/crates/pi-ai/src/auth/oauth/openai_codex.rs +2005 -0
  1293. package/crates/pi-ai/src/auth/oauth/page.rs +159 -0
  1294. package/crates/pi-ai/src/auth/oauth/pkce.rs +145 -0
  1295. package/crates/pi-ai/src/auth/oauth/radius.rs +1685 -0
  1296. package/crates/pi-ai/src/auth/oauth/xai.rs +989 -0
  1297. package/crates/pi-ai/src/auth/resolve.rs +701 -0
  1298. package/crates/pi-ai/src/auth/runtime_credentials.rs +226 -0
  1299. package/crates/pi-ai/src/auth/types.rs +534 -0
  1300. package/crates/pi-ai/src/catalog/merge.rs +316 -0
  1301. package/crates/pi-ai/src/catalog/mod.rs +485 -0
  1302. package/crates/pi-ai/src/lib.rs +13 -0
  1303. package/crates/pi-ai/src/models_store.rs +974 -0
  1304. package/crates/pi-ai/src/provider.rs +285 -0
  1305. package/crates/pi-ai/src/providers/anthropic_messages.rs +1473 -0
  1306. package/crates/pi-ai/src/providers/azure_openai_responses.rs +559 -0
  1307. package/crates/pi-ai/src/providers/bedrock_converse_stream.rs +2430 -0
  1308. package/crates/pi-ai/src/providers/google_generative_ai.rs +622 -0
  1309. package/crates/pi-ai/src/providers/google_vertex.rs +1565 -0
  1310. package/crates/pi-ai/src/providers/mistral_conversations.rs +1245 -0
  1311. package/crates/pi-ai/src/providers/mod.rs +35 -0
  1312. package/crates/pi-ai/src/providers/openai_codex_responses.rs +2003 -0
  1313. package/crates/pi-ai/src/providers/openai_completions.rs +1873 -0
  1314. package/crates/pi-ai/src/providers/openai_responses.rs +757 -0
  1315. package/crates/pi-ai/src/providers/pi_messages.rs +1235 -0
  1316. package/crates/pi-ai/src/providers/registry.rs +923 -0
  1317. package/crates/pi-ai/src/providers/shared/google.rs +1193 -0
  1318. package/crates/pi-ai/src/providers/shared/responses.rs +1873 -0
  1319. package/crates/pi-ai/src/providers/shared.rs +671 -0
  1320. package/crates/pi-ai/src/providers/stream_state.rs +683 -0
  1321. package/crates/pi-ai/src/providers/transport.rs +488 -0
  1322. package/crates/pi-ai/src/text.rs +322 -0
  1323. package/crates/pi-ai/src/types.rs +1050 -0
  1324. package/crates/pi-ai/tests/conformance_anthropic_mistral.rs +664 -0
  1325. package/crates/pi-ai/tests/conformance_bedrock_pi_messages.rs +908 -0
  1326. package/crates/pi-ai/tests/conformance_codex.rs +815 -0
  1327. package/crates/pi-ai/tests/conformance_google.rs +743 -0
  1328. package/crates/pi-ai/tests/conformance_openai.rs +607 -0
  1329. package/crates/pi-ai/tests/fixtures/provenance/anthropic-sse-parsing.test.ts +275 -0
  1330. package/crates/pi-ai/tests/fixtures/provenance/mistral-reasoning-mode.test.ts +97 -0
  1331. package/crates/pi-ai/tests/fixtures/provenance/upstream/src/api/anthropic-messages.ts +1313 -0
  1332. package/crates/pi-ai/tests/fixtures/provenance/upstream/src/api/bedrock-converse-stream.ts +1091 -0
  1333. package/crates/pi-ai/tests/fixtures/provenance/upstream/src/api/google-generative-ai.ts +509 -0
  1334. package/crates/pi-ai/tests/fixtures/provenance/upstream/src/api/google-shared.ts +350 -0
  1335. package/crates/pi-ai/tests/fixtures/provenance/upstream/src/api/mistral-conversations.ts +664 -0
  1336. package/crates/pi-ai/tests/fixtures/provenance/upstream/src/api/openai-completions.ts +1355 -0
  1337. package/crates/pi-ai/tests/fixtures/provenance/upstream/src/api/openai-responses-shared.ts +613 -0
  1338. package/crates/pi-ai/tests/fixtures/provenance/upstream/src/api/openai-responses.ts +318 -0
  1339. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/abort.test.ts +303 -0
  1340. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/azure-openai-base-url.test.ts +175 -0
  1341. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/bedrock-endpoint-resolution.test.ts +208 -0
  1342. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/bedrock-thinking-payload.test.ts +246 -0
  1343. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/google-vertex-api-key-resolution.test.ts +223 -0
  1344. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/openai-codex-stream.test.ts +2028 -0
  1345. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/openai-completions-prompt-cache.test.ts +264 -0
  1346. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/openai-completions-retry.test.ts +86 -0
  1347. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/openai-completions-thinking-as-text.test.ts +218 -0
  1348. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/openai-completions-tool-choice.test.ts +1716 -0
  1349. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/openai-responses-partial-json-cleanup.test.ts +106 -0
  1350. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/openai-responses-terminal-event.test.ts +233 -0
  1351. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/pi-messages.test.ts +243 -0
  1352. package/crates/pi-ai/tests/fixtures/provenance/upstream/test/provider-error-body-passthrough.test.ts +78 -0
  1353. package/crates/pi-ai/tests/fixtures/providers/anthropic-messages/cases.jsonl +4 -0
  1354. package/crates/pi-ai/tests/fixtures/providers/azure-openai-responses/cases.jsonl +2 -0
  1355. package/crates/pi-ai/tests/fixtures/providers/bedrock-converse-stream/cases.jsonl +8 -0
  1356. package/crates/pi-ai/tests/fixtures/providers/google-generative-ai/cases.jsonl +6 -0
  1357. package/crates/pi-ai/tests/fixtures/providers/google-vertex/cases.jsonl +6 -0
  1358. package/crates/pi-ai/tests/fixtures/providers/mistral-conversations/cases.jsonl +4 -0
  1359. package/crates/pi-ai/tests/fixtures/providers/openai-codex-responses/cases.jsonl +7 -0
  1360. package/crates/pi-ai/tests/fixtures/providers/openai-completions/cases.jsonl +9 -0
  1361. package/crates/pi-ai/tests/fixtures/providers/openai-responses/cases.jsonl +5 -0
  1362. package/crates/pi-ai/tests/fixtures/providers/pi-messages/cases.jsonl +8 -0
  1363. package/crates/pi-ai/tests/provider_registry_contract.rs +85 -0
  1364. package/crates/pi-ai/tests/support/golden.rs +191 -0
  1365. package/crates/pi-ai/tests/support/http.rs +525 -0
  1366. package/crates/pi-ai/tests/support/mod.rs +4 -0
  1367. package/crates/pi-ext/Cargo.toml +34 -0
  1368. package/crates/pi-ext/LICENSE +21 -0
  1369. package/crates/pi-ext/src/adapters.rs +1915 -0
  1370. package/crates/pi-ext/src/client.rs +1883 -0
  1371. package/crates/pi-ext/src/host.rs +318 -0
  1372. package/crates/pi-ext/src/lib.rs +10 -0
  1373. package/crates/pi-ext/src/protocol.rs +1880 -0
  1374. package/crates/pi-ext/src/sanitize.rs +524 -0
  1375. package/crates/pi-ext/src/test_support.rs +93 -0
  1376. package/crates/pi-ext/tests/fixtures/fake_jsonl_host.rs +35 -0
  1377. package/crates/pi-ext/tests/fixtures/protocol/frames.jsonl +30 -0
  1378. package/crates/pi-ext/tests/scaling.rs +530 -0
  1379. package/crates/pi-tui/Cargo.toml +56 -0
  1380. package/crates/pi-tui/LICENSE +21 -0
  1381. package/crates/pi-tui/src/bin/pi_tui_pty_fixture.rs +722 -0
  1382. package/crates/pi-tui/src/component.rs +101 -0
  1383. package/crates/pi-tui/src/components/editor/mod.rs +2626 -0
  1384. package/crates/pi-tui/src/components/editor/paste.rs +406 -0
  1385. package/crates/pi-tui/src/components/editor/state.rs +240 -0
  1386. package/crates/pi-tui/src/components/image.rs +352 -0
  1387. package/crates/pi-tui/src/components/input.rs +742 -0
  1388. package/crates/pi-tui/src/components/loader.rs +364 -0
  1389. package/crates/pi-tui/src/components/markdown.rs +1154 -0
  1390. package/crates/pi-tui/src/components/mod.rs +30 -0
  1391. package/crates/pi-tui/src/components/padded.rs +212 -0
  1392. package/crates/pi-tui/src/components/select_list.rs +464 -0
  1393. package/crates/pi-tui/src/components/settings_list.rs +597 -0
  1394. package/crates/pi-tui/src/components/spacer.rs +67 -0
  1395. package/crates/pi-tui/src/components/text.rs +225 -0
  1396. package/crates/pi-tui/src/components/truncated_text.rs +137 -0
  1397. package/crates/pi-tui/src/components/util.rs +324 -0
  1398. package/crates/pi-tui/src/editor_support/autocomplete.rs +1039 -0
  1399. package/crates/pi-tui/src/editor_support/history.rs +248 -0
  1400. package/crates/pi-tui/src/editor_support/kill_ring.rs +139 -0
  1401. package/crates/pi-tui/src/editor_support/mod.rs +29 -0
  1402. package/crates/pi-tui/src/editor_support/undo.rs +73 -0
  1403. package/crates/pi-tui/src/editor_support/word_nav.rs +412 -0
  1404. package/crates/pi-tui/src/editor_support/wrap.rs +317 -0
  1405. package/crates/pi-tui/src/focus.rs +564 -0
  1406. package/crates/pi-tui/src/frame.rs +163 -0
  1407. package/crates/pi-tui/src/fuzzy.rs +221 -0
  1408. package/crates/pi-tui/src/image.rs +749 -0
  1409. package/crates/pi-tui/src/keybindings.rs +602 -0
  1410. package/crates/pi-tui/src/keys.rs +1242 -0
  1411. package/crates/pi-tui/src/layout.rs +563 -0
  1412. package/crates/pi-tui/src/lib.rs +16 -0
  1413. package/crates/pi-tui/src/link.rs +408 -0
  1414. package/crates/pi-tui/src/overlay.rs +895 -0
  1415. package/crates/pi-tui/src/terminal/backend.rs +348 -0
  1416. package/crates/pi-tui/src/terminal/caps.rs +237 -0
  1417. package/crates/pi-tui/src/terminal/guard.rs +476 -0
  1418. package/crates/pi-tui/src/terminal/input.rs +266 -0
  1419. package/crates/pi-tui/src/terminal/mod.rs +31 -0
  1420. package/crates/pi-tui/src/terminal/probe.rs +498 -0
  1421. package/crates/pi-tui/src/terminal/sink.rs +128 -0
  1422. package/crates/pi-tui/src/terminal/writer.rs +1541 -0
  1423. package/crates/pi-tui/src/text/ansi.rs +415 -0
  1424. package/crates/pi-tui/src/text/mod.rs +29 -0
  1425. package/crates/pi-tui/src/text/slice.rs +645 -0
  1426. package/crates/pi-tui/src/text/tests.rs +359 -0
  1427. package/crates/pi-tui/src/text/width.rs +311 -0
  1428. package/crates/pi-tui/src/text/wrap.rs +344 -0
  1429. package/crates/pi-tui/tests/pty_no_flicker.rs +929 -0
  1430. package/deny.toml +38 -0
  1431. package/npm-package/bin/pi.js +31 -0
  1432. package/npm-package/package.json +35 -0
  1433. package/npm-package/tests/archive.test.ts +139 -0
  1434. package/npm-package/tests/wrapper.test.ts +70 -0
  1435. package/package.json +34 -0
  1436. package/packages/extension-host/bun.lock +664 -0
  1437. package/packages/extension-host/fixtures/extensions/all-events.ts +55 -0
  1438. package/packages/extension-host/fixtures/extensions/control-compat-shadow.ts +14 -0
  1439. package/packages/extension-host/fixtures/extensions/control-compat.ts +35 -0
  1440. package/packages/extension-host/fixtures/extensions/crash.ts +36 -0
  1441. package/packages/extension-host/fixtures/extensions/hooks.ts +45 -0
  1442. package/packages/extension-host/fixtures/extensions/hostile.ts +39 -0
  1443. package/packages/extension-host/fixtures/extensions/idle.ts +9 -0
  1444. package/packages/extension-host/fixtures/extensions/provider-stream.ts +121 -0
  1445. package/packages/extension-host/fixtures/extensions/terminal-input-fast.ts +20 -0
  1446. package/packages/extension-host/fixtures/extensions/terminal-input-slow.ts +23 -0
  1447. package/packages/extension-host/fixtures/extensions/tool-progress.ts +72 -0
  1448. package/packages/extension-host/fixtures/extensions/tool.ts +71 -0
  1449. package/packages/extension-host/fixtures/extensions/virtual-imports.ts +87 -0
  1450. package/packages/extension-host/fixtures/extensions/widget-active.ts +16 -0
  1451. package/packages/extension-host/fixtures/photon-probe.ts +45 -0
  1452. package/packages/extension-host/fixtures/runtime-import.ts +54 -0
  1453. package/packages/extension-host/package.json +54 -0
  1454. package/packages/extension-host/src/host.ts +1651 -0
  1455. package/packages/extension-host/src/index.ts +21 -0
  1456. package/packages/extension-host/src/main.ts +51 -0
  1457. package/packages/extension-host/src/protocol.ts +10 -0
  1458. package/packages/extension-host/src/refs.d.ts +364 -0
  1459. package/packages/extension-host/src/sanitize.ts +503 -0
  1460. package/packages/extension-host/src/virtual-modules.ts +90 -0
  1461. package/packages/extension-host/tests/acceptance.test.ts +1498 -0
  1462. package/packages/extension-host/tests/host.test.ts +244 -0
  1463. package/packages/extension-host/tests/sanitize.test.ts +359 -0
  1464. package/packages/extension-host/tests/scaling.test.ts +661 -0
  1465. package/packages/extension-host/tests/virtual-modules.test.ts +122 -0
  1466. package/packages/extension-host/tsconfig.build.json +44 -0
  1467. package/packages/extension-host/tsconfig.check.json +29 -0
  1468. package/packages/extension-host/tsconfig.json +8 -0
  1469. package/packages/pi-tui-protocol/package.json +41 -0
  1470. package/packages/pi-tui-protocol/src/client.ts +341 -0
  1471. package/packages/pi-tui-protocol/src/codec.ts +439 -0
  1472. package/packages/pi-tui-protocol/src/index.ts +77 -0
  1473. package/packages/pi-tui-protocol/src/types.ts +358 -0
  1474. package/packages/pi-tui-protocol/tests/client.test.ts +175 -0
  1475. package/packages/pi-tui-protocol/tests/codec.test.ts +196 -0
  1476. package/packages/pi-tui-protocol/tests/fixtures/frames.jsonl +30 -0
  1477. package/packages/pi-tui-protocol/tsconfig.build.json +23 -0
  1478. package/packages/pi-tui-protocol/tsconfig.json +9 -0
  1479. package/rust-toolchain.toml +3 -0
  1480. package/rustfmt.toml +5 -0
  1481. package/scripts/bench-extension-scaling.ts +466 -0
  1482. package/scripts/build-extension-host.ts +51 -0
  1483. package/scripts/generate-builtin-models.ts +344 -0
  1484. package/scripts/generate-session-fixtures.ts +1758 -0
  1485. package/scripts/generate-tool-schemas.ts +444 -0
  1486. package/scripts/package-npm.ts +263 -0
  1487. package/scripts/package-release.ts +422 -0
  1488. package/scripts/release/archive.ts +594 -0
  1489. package/scripts/release/args.ts +187 -0
  1490. package/scripts/release/extract-host-asset.ts +224 -0
  1491. package/scripts/release/host.ts +825 -0
  1492. package/scripts/release/runner.ts +435 -0
  1493. package/scripts/release/runtime.ts +130 -0
  1494. package/scripts/release/stage.ts +437 -0
  1495. package/scripts/release/targets.ts +150 -0
  1496. package/scripts/tests/archive.test.ts +210 -0
  1497. package/scripts/tests/args.test.ts +180 -0
  1498. package/scripts/tests/cli-dry-run.test.ts +61 -0
  1499. package/scripts/tests/compat-authority.test.ts +79 -0
  1500. package/scripts/tests/compat-matrix.test.ts +389 -0
  1501. package/scripts/tests/extract-host-asset.test.ts +176 -0
  1502. package/scripts/tests/host.test.ts +443 -0
  1503. package/scripts/tests/npm-installed-smoke.test.ts +104 -0
  1504. package/scripts/tests/package-release.test.ts +516 -0
  1505. package/scripts/tests/repro-guards.test.ts +241 -0
  1506. package/scripts/tests/runner.test.ts +188 -0
  1507. package/scripts/tests/stage.test.ts +232 -0
  1508. package/scripts/tests/targets.test.ts +93 -0
  1509. package/scripts/tsconfig.json +47 -0
  1510. package/scripts/verification/compat-matrix.json +455 -0
  1511. package/scripts/verification/compat-matrix.ts +632 -0
  1512. package/scripts/verification/e2e-smoke.ts +1093 -0
  1513. package/scripts/verification/extension.ts +339 -0
  1514. package/scripts/verification/foundation.test.ts +339 -0
  1515. package/scripts/verification/npm-installed-smoke.ts +117 -0
  1516. package/scripts/verification/performance.ts +1425 -0
  1517. package/scripts/verification/pty.ts +332 -0
@@ -0,0 +1,767 @@
1
+ {
2
+ "iteration": 1,
3
+ "changedFiles": [
4
+ ".agent-tasks/pi-rust-rewrite/Cargo.lock",
5
+ ".agent-tasks/pi-rust-rewrite/Cargo.toml",
6
+ ".agent-tasks/pi-rust-rewrite/src/lib.rs",
7
+ ".agent-tasks/pi-rust-rewrite/tests/pi_ai_contract.rs",
8
+ ".github/workflows/release-verification.yml",
9
+ ".gitignore",
10
+ "Cargo.lock",
11
+ "bun.lock",
12
+ "crates/pi-agent/Cargo.toml",
13
+ "crates/pi-agent/src/agent.rs",
14
+ "crates/pi-agent/src/bus.rs",
15
+ "crates/pi-agent/src/config.rs",
16
+ "crates/pi-agent/src/drain.rs",
17
+ "crates/pi-agent/src/error.rs",
18
+ "crates/pi-agent/src/event.rs",
19
+ "crates/pi-agent/src/lib.rs",
20
+ "crates/pi-agent/src/message.rs",
21
+ "crates/pi-agent/src/queue.rs",
22
+ "crates/pi-agent/src/run.rs",
23
+ "crates/pi-agent/src/schedule.rs",
24
+ "crates/pi-agent/src/state.rs",
25
+ "crates/pi-agent/src/tool.rs",
26
+ "crates/pi-ai/Cargo.toml",
27
+ "crates/pi-ai/data/builtin-models.json",
28
+ "crates/pi-ai/src/auth/config_value.rs",
29
+ "crates/pi-ai/src/auth/context.rs",
30
+ "crates/pi-ai/src/auth/credential_store.rs",
31
+ "crates/pi-ai/src/auth/env_keys.rs",
32
+ "crates/pi-ai/src/auth/error.rs",
33
+ "crates/pi-ai/src/auth/file_store.rs",
34
+ "crates/pi-ai/src/auth/http.rs",
35
+ "crates/pi-ai/src/auth/mod.rs",
36
+ "crates/pi-ai/src/auth/oauth/anthropic.rs",
37
+ "crates/pi-ai/src/auth/oauth/callback_server.rs",
38
+ "crates/pi-ai/src/auth/oauth/device_code.rs",
39
+ "crates/pi-ai/src/auth/oauth/github_copilot.rs",
40
+ "crates/pi-ai/src/auth/oauth/mod.rs",
41
+ "crates/pi-ai/src/auth/oauth/openai_codex.rs",
42
+ "crates/pi-ai/src/auth/oauth/page.rs",
43
+ "crates/pi-ai/src/auth/oauth/pkce.rs",
44
+ "crates/pi-ai/src/auth/oauth/radius.rs",
45
+ "crates/pi-ai/src/auth/oauth/xai.rs",
46
+ "crates/pi-ai/src/auth/resolve.rs",
47
+ "crates/pi-ai/src/auth/runtime_credentials.rs",
48
+ "crates/pi-ai/src/auth/types.rs",
49
+ "crates/pi-ai/src/catalog/merge.rs",
50
+ "crates/pi-ai/src/catalog/mod.rs",
51
+ "crates/pi-ai/src/lib.rs",
52
+ "crates/pi-ai/src/models_store.rs",
53
+ "crates/pi-ai/src/provider.rs",
54
+ "crates/pi-ai/src/providers/anthropic_messages.rs",
55
+ "crates/pi-ai/src/providers/azure_openai_responses.rs",
56
+ "crates/pi-ai/src/providers/bedrock_converse_stream.rs",
57
+ "crates/pi-ai/src/providers/google_generative_ai.rs",
58
+ "crates/pi-ai/src/providers/google_vertex.rs",
59
+ "crates/pi-ai/src/providers/mistral_conversations.rs",
60
+ "crates/pi-ai/src/providers/mod.rs",
61
+ "crates/pi-ai/src/providers/openai_codex_responses.rs",
62
+ "crates/pi-ai/src/providers/openai_completions.rs",
63
+ "crates/pi-ai/src/providers/openai_responses.rs",
64
+ "crates/pi-ai/src/providers/pi_messages.rs",
65
+ "crates/pi-ai/src/providers/registry.rs",
66
+ "crates/pi-ai/src/providers/shared.rs",
67
+ "crates/pi-ai/src/providers/shared/google.rs",
68
+ "crates/pi-ai/src/providers/shared/responses.rs",
69
+ "crates/pi-ai/src/providers/stream_state.rs",
70
+ "crates/pi-ai/src/providers/transport.rs",
71
+ "crates/pi-ai/src/types.rs",
72
+ "crates/pi-ai/tests/conformance_anthropic_mistral.rs",
73
+ "crates/pi-ai/tests/conformance_bedrock_pi_messages.rs",
74
+ "crates/pi-ai/tests/conformance_codex.rs",
75
+ "crates/pi-ai/tests/conformance_google.rs",
76
+ "crates/pi-ai/tests/conformance_openai.rs",
77
+ "crates/pi-ai/tests/fixtures/providers/anthropic-messages/cases.jsonl",
78
+ "crates/pi-ai/tests/fixtures/providers/azure-openai-responses/cases.jsonl",
79
+ "crates/pi-ai/tests/fixtures/providers/bedrock-converse-stream/cases.jsonl",
80
+ "crates/pi-ai/tests/fixtures/providers/google-generative-ai/cases.jsonl",
81
+ "crates/pi-ai/tests/fixtures/providers/google-vertex/cases.jsonl",
82
+ "crates/pi-ai/tests/fixtures/providers/mistral-conversations/cases.jsonl",
83
+ "crates/pi-ai/tests/fixtures/providers/openai-codex-responses/cases.jsonl",
84
+ "crates/pi-ai/tests/fixtures/providers/openai-completions/cases.jsonl",
85
+ "crates/pi-ai/tests/fixtures/providers/openai-responses/cases.jsonl",
86
+ "crates/pi-ai/tests/fixtures/providers/pi-messages/cases.jsonl",
87
+ "crates/pi-ai/tests/provider_registry_contract.rs",
88
+ "crates/pi-ai/tests/support/golden.rs",
89
+ "crates/pi-ai/tests/support/http.rs",
90
+ "crates/pi-ai/tests/support/mod.rs",
91
+ "crates/pi-ext/Cargo.toml",
92
+ "crates/pi-ext/src/adapters.rs",
93
+ "crates/pi-ext/src/client.rs",
94
+ "crates/pi-ext/src/host.rs",
95
+ "crates/pi-ext/src/lib.rs",
96
+ "crates/pi-ext/src/protocol.rs",
97
+ "crates/pi-ext/src/sanitize.rs",
98
+ "crates/pi-ext/src/test_support.rs",
99
+ "crates/pi-ext/tests/scaling.rs",
100
+ "crates/pi-tui/Cargo.toml",
101
+ "crates/pi-tui/src/bin/pi_tui_pty_fixture.rs",
102
+ "crates/pi-tui/src/component.rs",
103
+ "crates/pi-tui/src/components/editor/mod.rs",
104
+ "crates/pi-tui/src/components/editor/paste.rs",
105
+ "crates/pi-tui/src/components/editor/state.rs",
106
+ "crates/pi-tui/src/components/image.rs",
107
+ "crates/pi-tui/src/components/input.rs",
108
+ "crates/pi-tui/src/components/loader.rs",
109
+ "crates/pi-tui/src/components/markdown.rs",
110
+ "crates/pi-tui/src/components/mod.rs",
111
+ "crates/pi-tui/src/components/padded.rs",
112
+ "crates/pi-tui/src/components/select_list.rs",
113
+ "crates/pi-tui/src/components/settings_list.rs",
114
+ "crates/pi-tui/src/components/spacer.rs",
115
+ "crates/pi-tui/src/components/text.rs",
116
+ "crates/pi-tui/src/components/truncated_text.rs",
117
+ "crates/pi-tui/src/components/util.rs",
118
+ "crates/pi-tui/src/editor_support/autocomplete.rs",
119
+ "crates/pi-tui/src/editor_support/history.rs",
120
+ "crates/pi-tui/src/editor_support/kill_ring.rs",
121
+ "crates/pi-tui/src/editor_support/mod.rs",
122
+ "crates/pi-tui/src/editor_support/undo.rs",
123
+ "crates/pi-tui/src/editor_support/word_nav.rs",
124
+ "crates/pi-tui/src/editor_support/wrap.rs",
125
+ "crates/pi-tui/src/focus.rs",
126
+ "crates/pi-tui/src/frame.rs",
127
+ "crates/pi-tui/src/fuzzy.rs",
128
+ "crates/pi-tui/src/image.rs",
129
+ "crates/pi-tui/src/keybindings.rs",
130
+ "crates/pi-tui/src/keys.rs",
131
+ "crates/pi-tui/src/layout.rs",
132
+ "crates/pi-tui/src/lib.rs",
133
+ "crates/pi-tui/src/link.rs",
134
+ "crates/pi-tui/src/overlay.rs",
135
+ "crates/pi-tui/src/terminal/backend.rs",
136
+ "crates/pi-tui/src/terminal/caps.rs",
137
+ "crates/pi-tui/src/terminal/guard.rs",
138
+ "crates/pi-tui/src/terminal/input.rs",
139
+ "crates/pi-tui/src/terminal/mod.rs",
140
+ "crates/pi-tui/src/terminal/probe.rs",
141
+ "crates/pi-tui/src/terminal/sink.rs",
142
+ "crates/pi-tui/src/terminal/writer.rs",
143
+ "crates/pi-tui/src/text/ansi.rs",
144
+ "crates/pi-tui/src/text/mod.rs",
145
+ "crates/pi-tui/src/text/slice.rs",
146
+ "crates/pi-tui/src/text/tests.rs",
147
+ "crates/pi-tui/src/text/width.rs",
148
+ "crates/pi-tui/src/text/wrap.rs",
149
+ "crates/pi-tui/tests/pty_no_flicker.rs",
150
+ "crates/pi/Cargo.toml",
151
+ "crates/pi/assets/export-html/template.css",
152
+ "crates/pi/assets/export-html/template.html",
153
+ "crates/pi/assets/export-html/template.js",
154
+ "crates/pi/assets/export-html/vendor/dark.json",
155
+ "crates/pi/assets/export-html/vendor/highlight.min.js",
156
+ "crates/pi/assets/export-html/vendor/light.json",
157
+ "crates/pi/assets/export-html/vendor/marked.min.js",
158
+ "crates/pi/src/cli/args.rs",
159
+ "crates/pi/src/cli/bootstrap.rs",
160
+ "crates/pi/src/cli/entry.rs",
161
+ "crates/pi/src/cli/help.rs",
162
+ "crates/pi/src/cli/mod.rs",
163
+ "crates/pi/src/cli/package_manager_cli.rs",
164
+ "crates/pi/src/core/agent_session/bash.rs",
165
+ "crates/pi/src/core/agent_session/compaction.rs",
166
+ "crates/pi/src/core/agent_session/events.rs",
167
+ "crates/pi/src/core/agent_session/extension.rs",
168
+ "crates/pi/src/core/agent_session/extension_runner.rs",
169
+ "crates/pi/src/core/agent_session/mod.rs",
170
+ "crates/pi/src/core/agent_session/model.rs",
171
+ "crates/pi/src/core/agent_session/persistence.rs",
172
+ "crates/pi/src/core/agent_session/prompt.rs",
173
+ "crates/pi/src/core/agent_session/retry.rs",
174
+ "crates/pi/src/core/agent_session/stats.rs",
175
+ "crates/pi/src/core/agent_session/subscribe.rs",
176
+ "crates/pi/src/core/agent_session/tools.rs",
177
+ "crates/pi/src/core/agent_session/tree.rs",
178
+ "crates/pi/src/core/agent_session_runtime.rs",
179
+ "crates/pi/src/core/agent_session_services.rs",
180
+ "crates/pi/src/core/compaction/branch.rs",
181
+ "crates/pi/src/core/compaction/mod.rs",
182
+ "crates/pi/src/core/compaction/utils.rs",
183
+ "crates/pi/src/core/config.rs",
184
+ "crates/pi/src/core/config_value.rs",
185
+ "crates/pi/src/core/experimental.rs",
186
+ "crates/pi/src/core/export_html/ansi_to_html.rs",
187
+ "crates/pi/src/core/export_html/mod.rs",
188
+ "crates/pi/src/core/export_html/session_data.rs",
189
+ "crates/pi/src/core/extension_host.rs",
190
+ "crates/pi/src/core/extension_host/tests.rs",
191
+ "crates/pi/src/core/lockfile.rs",
192
+ "crates/pi/src/core/messages.rs",
193
+ "crates/pi/src/core/migrations.rs",
194
+ "crates/pi/src/core/mod.rs",
195
+ "crates/pi/src/core/model_resolver.rs",
196
+ "crates/pi/src/core/model_runtime.rs",
197
+ "crates/pi/src/core/output_guard.rs",
198
+ "crates/pi/src/core/package_manager.rs",
199
+ "crates/pi/src/core/package_manager/tests.rs",
200
+ "crates/pi/src/core/platform/clipboard.rs",
201
+ "crates/pi/src/core/platform/command.rs",
202
+ "crates/pi/src/core/platform/debug_dump.rs",
203
+ "crates/pi/src/core/platform/external_editor.rs",
204
+ "crates/pi/src/core/platform/first_run.rs",
205
+ "crates/pi/src/core/platform/image.rs",
206
+ "crates/pi/src/core/platform/mod.rs",
207
+ "crates/pi/src/core/platform/open_browser.rs",
208
+ "crates/pi/src/core/platform/release_packaging.rs",
209
+ "crates/pi/src/core/resources/diagnostics.rs",
210
+ "crates/pi/src/core/resources/discovery.rs",
211
+ "crates/pi/src/core/resources/frontmatter.rs",
212
+ "crates/pi/src/core/resources/mod.rs",
213
+ "crates/pi/src/core/resources/prompts.rs",
214
+ "crates/pi/src/core/resources/skills.rs",
215
+ "crates/pi/src/core/resources/slash.rs",
216
+ "crates/pi/src/core/resources/source_info.rs",
217
+ "crates/pi/src/core/resources/themes.rs",
218
+ "crates/pi/src/core/session_transfer.rs",
219
+ "crates/pi/src/core/sessions/context.rs",
220
+ "crates/pi/src/core/sessions/cwd.rs",
221
+ "crates/pi/src/core/sessions/entries.rs",
222
+ "crates/pi/src/core/sessions/list.rs",
223
+ "crates/pi/src/core/sessions/mod.rs",
224
+ "crates/pi/src/core/settings.rs",
225
+ "crates/pi/src/core/share.rs",
226
+ "crates/pi/src/core/system_prompt.rs",
227
+ "crates/pi/src/core/tools/bash.rs",
228
+ "crates/pi/src/core/tools/edit.rs",
229
+ "crates/pi/src/core/tools/edit_diff.rs",
230
+ "crates/pi/src/core/tools/find.rs",
231
+ "crates/pi/src/core/tools/grep.rs",
232
+ "crates/pi/src/core/tools/ls.rs",
233
+ "crates/pi/src/core/tools/mod.rs",
234
+ "crates/pi/src/core/tools/mutation_queue.rs",
235
+ "crates/pi/src/core/tools/output_accumulator.rs",
236
+ "crates/pi/src/core/tools/path_utils.rs",
237
+ "crates/pi/src/core/tools/read.rs",
238
+ "crates/pi/src/core/tools/truncate.rs",
239
+ "crates/pi/src/core/tools/write.rs",
240
+ "crates/pi/src/core/trust.rs",
241
+ "crates/pi/src/core/update/changelog.rs",
242
+ "crates/pi/src/core/update/deprecation.rs",
243
+ "crates/pi/src/core/update/mod.rs",
244
+ "crates/pi/src/core/update/self_update.rs",
245
+ "crates/pi/src/core/update/user_agent.rs",
246
+ "crates/pi/src/core/update/version_check.rs",
247
+ "crates/pi/src/core/update/windows_quarantine.rs",
248
+ "crates/pi/src/lib.rs",
249
+ "crates/pi/src/main.rs",
250
+ "crates/pi/src/modes/interactive/footer.rs",
251
+ "crates/pi/src/modes/interactive/header.rs",
252
+ "crates/pi/src/modes/interactive/input.rs",
253
+ "crates/pi/src/modes/interactive/messages.rs",
254
+ "crates/pi/src/modes/interactive/mod.rs",
255
+ "crates/pi/src/modes/interactive/progress.rs",
256
+ "crates/pi/src/modes/interactive/runtime.rs",
257
+ "crates/pi/src/modes/interactive/selectors.rs",
258
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__bash_state_widths.snap",
259
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__compact_state_widths.snap",
260
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__custom_branch_skill_messages.snap",
261
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__empty_state_widths.snap",
262
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__error_state_widths.snap",
263
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__loading_state_widths.snap",
264
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__queue_state_widths.snap",
265
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__retry_state_widths.snap",
266
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__streaming_state_widths.snap",
267
+ "crates/pi/src/modes/interactive/snapshots/pi__modes__interactive__tests__user_assistant_messages.snap",
268
+ "crates/pi/src/modes/interactive/startup.rs",
269
+ "crates/pi/src/modes/interactive/state.rs",
270
+ "crates/pi/src/modes/interactive/status.rs",
271
+ "crates/pi/src/modes/interactive/tests.rs",
272
+ "crates/pi/src/modes/interactive/theme.rs",
273
+ "crates/pi/src/modes/interactive/tool_renderer.rs",
274
+ "crates/pi/src/modes/interactive/view.rs",
275
+ "crates/pi/src/modes/mod.rs",
276
+ "crates/pi/src/modes/print/input.rs",
277
+ "crates/pi/src/modes/print/json.rs",
278
+ "crates/pi/src/modes/print/mod.rs",
279
+ "crates/pi/src/modes/print/text.rs",
280
+ "crates/pi/src/modes/rpc/extension_ui.rs",
281
+ "crates/pi/src/modes/rpc/jsonl.rs",
282
+ "crates/pi/src/modes/rpc/mod.rs",
283
+ "crates/pi/src/modes/rpc/mode_host.rs",
284
+ "crates/pi/src/modes/rpc/server.rs",
285
+ "crates/pi/src/modes/rpc/types.rs",
286
+ "crates/pi/src/modes/run.rs",
287
+ "deny.toml",
288
+ "package.json",
289
+ "packages/extension-host/bun.lock",
290
+ "packages/extension-host/bunfig.toml",
291
+ "packages/extension-host/fixtures/extensions/all-events.ts",
292
+ "packages/extension-host/fixtures/extensions/crash.ts",
293
+ "packages/extension-host/fixtures/extensions/hooks.ts",
294
+ "packages/extension-host/fixtures/extensions/hostile.ts",
295
+ "packages/extension-host/fixtures/extensions/idle.ts",
296
+ "packages/extension-host/fixtures/extensions/provider-stream.ts",
297
+ "packages/extension-host/fixtures/extensions/terminal-input-fast.ts",
298
+ "packages/extension-host/fixtures/extensions/terminal-input-slow.ts",
299
+ "packages/extension-host/fixtures/extensions/tool-progress.ts",
300
+ "packages/extension-host/fixtures/extensions/tool.ts",
301
+ "packages/extension-host/fixtures/extensions/widget-active.ts",
302
+ "packages/extension-host/fixtures/runtime-import.ts",
303
+ "packages/extension-host/package.json",
304
+ "packages/extension-host/src/host.ts",
305
+ "packages/extension-host/src/index.ts",
306
+ "packages/extension-host/src/main.ts",
307
+ "packages/extension-host/src/protocol.ts",
308
+ "packages/extension-host/src/refs.d.ts",
309
+ "packages/extension-host/src/sanitize.ts",
310
+ "packages/extension-host/src/version.ts",
311
+ "packages/extension-host/src/virtual-modules.ts",
312
+ "packages/extension-host/tests/acceptance.test.ts",
313
+ "packages/extension-host/tests/host.test.ts",
314
+ "packages/extension-host/tests/sanitize.test.ts",
315
+ "packages/extension-host/tests/scaling.test.ts",
316
+ "packages/extension-host/tsconfig.build.json",
317
+ "packages/extension-host/tsconfig.check.json",
318
+ "packages/extension-host/tsconfig.json",
319
+ "packages/pi-tui-protocol/dist/client.d.ts",
320
+ "packages/pi-tui-protocol/dist/client.d.ts.map",
321
+ "packages/pi-tui-protocol/dist/client.js",
322
+ "packages/pi-tui-protocol/dist/client.js.map",
323
+ "packages/pi-tui-protocol/dist/codec.d.ts",
324
+ "packages/pi-tui-protocol/dist/codec.d.ts.map",
325
+ "packages/pi-tui-protocol/dist/codec.js",
326
+ "packages/pi-tui-protocol/dist/codec.js.map",
327
+ "packages/pi-tui-protocol/dist/index.d.ts",
328
+ "packages/pi-tui-protocol/dist/index.d.ts.map",
329
+ "packages/pi-tui-protocol/dist/index.js",
330
+ "packages/pi-tui-protocol/dist/index.js.map",
331
+ "packages/pi-tui-protocol/dist/types.d.ts",
332
+ "packages/pi-tui-protocol/dist/types.d.ts.map",
333
+ "packages/pi-tui-protocol/dist/types.js",
334
+ "packages/pi-tui-protocol/dist/types.js.map",
335
+ "packages/pi-tui-protocol/package.json",
336
+ "packages/pi-tui-protocol/src/client.ts",
337
+ "packages/pi-tui-protocol/src/codec.ts",
338
+ "packages/pi-tui-protocol/src/index.ts",
339
+ "packages/pi-tui-protocol/src/types.ts",
340
+ "packages/pi-tui-protocol/tests/client.test.ts",
341
+ "packages/pi-tui-protocol/tests/codec.test.ts",
342
+ "packages/pi-tui-protocol/tests/fixtures/frames.jsonl",
343
+ "packages/pi-tui-protocol/tsconfig.build.json",
344
+ "packages/pi-tui-protocol/tsconfig.json",
345
+ "scripts/bench-extension-scaling.ts",
346
+ "scripts/build-extension-host.ts",
347
+ "scripts/generate-builtin-models.ts",
348
+ "scripts/generate-session-fixtures.ts",
349
+ "scripts/generate-tool-schemas.ts",
350
+ "scripts/package-release.ts",
351
+ "scripts/release/archive.ts",
352
+ "scripts/release/args.ts",
353
+ "scripts/release/host.ts",
354
+ "scripts/release/runner.ts",
355
+ "scripts/release/stage.ts",
356
+ "scripts/release/targets.ts",
357
+ "scripts/tests/archive.test.ts",
358
+ "scripts/tests/args.test.ts",
359
+ "scripts/tests/cli-dry-run.test.ts",
360
+ "scripts/tests/host.test.ts",
361
+ "scripts/tests/package-release.test.ts",
362
+ "scripts/tests/runner.test.ts",
363
+ "scripts/tests/stage.test.ts",
364
+ "scripts/tests/targets.test.ts",
365
+ "scripts/tsconfig.json",
366
+ "scripts/verification/e2e-smoke.ts",
367
+ "scripts/verification/extension.ts",
368
+ "scripts/verification/foundation.test.ts",
369
+ "scripts/verification/performance.ts",
370
+ "scripts/verification/pty.ts"
371
+ ],
372
+ "reviewers": [
373
+ "code-quality",
374
+ "security",
375
+ "performance",
376
+ "test-quality",
377
+ "architecture",
378
+ "database",
379
+ "api",
380
+ "frontend",
381
+ "backend",
382
+ "devops"
383
+ ],
384
+ "counts": {
385
+ "critical": 5,
386
+ "high": 52,
387
+ "medium": 56,
388
+ "low": 5
389
+ },
390
+ "openAtOrAboveFloor": 98,
391
+ "belowFloor": 5,
392
+ "findingsHash": "6510588ed6d8bffdb0cca44146ce403629e786857aa20b939c46656936cd3575",
393
+ "fixBatches": [
394
+ {
395
+ "name": "agent-core",
396
+ "files": [
397
+ "crates/pi-agent/src/agent.rs",
398
+ "crates/pi-agent/src/bus.rs",
399
+ "crates/pi-agent/src/lib.rs",
400
+ "crates/pi-agent/src/run.rs",
401
+ "crates/pi-agent/src/schedule.rs",
402
+ "crates/pi-agent/src/tool.rs"
403
+ ],
404
+ "itemIds": [
405
+ "performance:crates/pi-agent/src/bus.rs:145:AgentEventSink::subscribe creates unbounded mpsc channels; emit clones the full AgentEvent (MessageUpdate embeds large message + boxed event) into every live lossless sender under a mutex. A lagging session/RPC/interactive consumer never drops, so queue length and clone work grow without bound under streaming load.",
406
+ "performance:crates/pi-agent/src/run.rs:325:Every Text/Thinking/ToolCall delta builds AssistantMessageEvent with partial: self.snapshot() (full AssistantMessage clone). run.rs then clones partial twice more for context replace and AgentEvent::MessageUpdate, and also event.clone() so MessageUpdate carries two full message copies. Cost path: provider token \u2192 stream_state \u2192 drain/run \u2192 bus reduce/fan-out. Impact: O(T\u00b2) allocation and copy as the partial grows across T tokens, amplified by N subscribers.",
407
+ "test-quality:crates/pi-agent/src/run.rs:1642:Asserts only count(agent_end)==1, count(assistant MessageEnd)==1, and empty partial. Never asserts the final assistant stop_reason. Regression: A cancel-vs-provider-terminal race that mis-classifies the run as StopReason::Stop or Error (while still emitting exactly one end pair) passes. This is the core classification contract of commit a2a4371.",
408
+ "code-quality:crates/pi-agent/src/schedule.rs:403:collect_parallel_completions only awaits event_rx and never selects on the run CancellationToken. Tools that ignore cancel hang the batch and block agent_end/wait_for_idle. Separately, emit_source_ordered_results skips ParallelSlot::Pending: if a worker panics or the channel closes before Done, those tool_use calls emit no tool_result, so the next LLM turn sees unpaired tool calls.",
409
+ "test-quality:crates/pi-agent/src/schedule.rs:1276:IDs-only tautology: after cancelling in the c1 before-hook, the test asserts only that result ids are [c1,c2,c3]. It never asserts is_error or the result content, and never checks RecordingTool.executed. Regression: If execute_tool_calls ignored the cancel token and ran all three tools to success, ids would still be c1,c2,c3 and the test stays green \u2014 the exact regression commit a2a4371 (preserve cancellation result contracts) was meant to prevent.",
410
+ "test-quality:crates/pi-agent/src/agent.rs:1047:Discards the prompt Result (`let _ = agent.prompt(...)`). Also, no test covers the documented contract that abort() cancels only the token and does NOT clear steer/follow-up queues (agent.rs:364-370); only reset_clears_transcript_and_queues tests the clearing side. Regression: Cancelled run bubbling up as Err to callers/UI (double error reporting) passes; abort() accidentally clearing queues (confusion with reset) passes.",
411
+ "test-quality:crates/pi-agent/src/agent.rs:1056:abort_emits_single_aborted_terminal polls `while !is_streaming && waited < 200` but does assert afterwards (good); however cancel_plus_provider_terminal... (run.rs:1671-1679) breaks out of `for _ in 0..100` when delivered < 1 and proceeds to cancel anyway with no failure if the provider never delivered. Regression: If the provider never delivers (harness deadlock/regression), the cancel still fires, the loop likely ends via hanging provider semantics, and the count-based assertions can still pass \u2014 masking the hang the test was built to race against.",
412
+ "test-quality:crates/pi-agent/src/run.rs:1439:Name overclaims: only the Error branch (no cancel) is exercised. The Aborted branch of synthesize_stream_failure (run.rs:413-417, cancel.is_cancelled() -> StopReason::Aborted) has no test. Regression: A transport failure concurrent with user cancel being classified as Error instead of Aborted (wrong UI semantics for user-initiated abort) passes silently.",
413
+ "performance:crates/pi-agent/src/schedule.rs:328:execute_tool_calls_parallel spawns one tokio task per tool with no concurrency limit, cloning the full AgentContext (entire transcript) and AssistantMessage per spawn. Partial ToolUpdates clone the ToolCall (including args map) on every progress callback over an unbounded channel. Large multi-tool turns can explode task count, memory, and clone traffic."
414
+ ],
415
+ "status": "verified",
416
+ "attempts": 1,
417
+ "verification": [
418
+ {
419
+ "command": "cargo test -p pi-agent",
420
+ "result": "post-commit all-target check + 9 bus + 17 schedule + 20 run + 19 agent tests passed (artifact://7028)"
421
+ }
422
+ ],
423
+ "guard": "Cancellation/panic emits one ordered result per tool; bounded subscriptions and clone work",
424
+ "verifier": "cargo test -p pi-agent",
425
+ "commit": "257de7e"
426
+ },
427
+ {
428
+ "name": "ai-store-config",
429
+ "files": [
430
+ "Cargo.lock",
431
+ "crates/pi-ai/src/auth/config_value.rs",
432
+ "crates/pi-ai/src/auth/file_store.rs",
433
+ "crates/pi/src/core/migrations.rs"
434
+ ],
435
+ "itemIds": [
436
+ "database:crates/pi-ai/src/auth/file_store.rs:133:FileLockBackend::ensure_data_file checks path.exists() then, without holding the exclusive lock, atomically replaces the data file with \"{}\". migrate_auth_to_auth_json_in also writes auth.json without that lock (and any other process can finish a real write between the exists check and the empty seed). If a concurrent FileCredentialStore/FileModelsStore constructor seeds after a non-empty write lands, credentials or catalog bytes are permanently replaced by empty JSON. Trigger: two pi processes starting against the same agent dir while auth.json is being created/migrated.",
437
+ "code-quality:crates/pi-ai/src/auth/config_value.rs:281:execute_command_uncached spawns a thread, waits 10s on mpsc, then unwrap_or_default on timeout without joining or killing the child. Hung `!command` auth config entries leave detached threads and shell processes until process exit.",
438
+ "backend:crates/pi-ai/src/auth/file_store.rs:362:FileCredentialStore::modify/delete call replace_cache_mutex before with_lock_async performs atomic_write. If atomic_write fails after the callback returns Some(serialized), the in-memory cache already holds the new credential map while disk retains the previous file. Trigger: disk full/permission error on atomic rename/write after a successful refresh/delete callback. Impact: subsequent get/list in-process return credentials that are not durable; restart or other processes see the old store\u2014auth/cache inconsistency."
439
+ ],
440
+ "status": "verified",
441
+ "attempts": 1,
442
+ "verification": [
443
+ {
444
+ "command": "cargo test -p pi-ai auth::config_value && cargo test -p pi-ai auth::file_store",
445
+ "result": "post-commit all-target check + 5 config command + 10 file-store tests passed (artifact://7069); migration suite previously 11 passed"
446
+ }
447
+ ],
448
+ "guard": "Concurrent seed cannot clobber; cache changes only after durable write; command child reaped",
449
+ "verifier": "cargo test -p pi-ai auth::config_value && cargo test -p pi-ai auth::file_store",
450
+ "commit": "a5a1b27"
451
+ },
452
+ {
453
+ "name": "oauth",
454
+ "files": [
455
+ "crates/pi-ai/src/auth/error.rs",
456
+ "crates/pi-ai/src/auth/oauth/anthropic.rs",
457
+ "crates/pi-ai/src/auth/oauth/github_copilot.rs",
458
+ "crates/pi-ai/src/auth/oauth/openai_codex.rs",
459
+ "crates/pi-ai/src/auth/oauth/radius.rs",
460
+ "crates/pi-ai/src/auth/resolve.rs",
461
+ "crates/pi/src/core/model_runtime.rs"
462
+ ],
463
+ "itemIds": [
464
+ "security:crates/pi-ai/src/auth/oauth/github_copilot.rs:592:get_base_url_from_token trusts the proxy-ep claim inside the Copilot token with no host allowlist, private-IP block, or scheme validation beyond prepending https://. get_github_copilot_base_url then uses that base for /models and /models/{id}/policy requests with Authorization: Bearer <copilot token>, so a malicious or compromised token issuer can redirect credentialed client traffic (SSRF/exfil) to arbitrary hosts including link-local metadata endpoints.",
465
+ "security:crates/pi-ai/src/auth/oauth/openai_codex.rs:883:OpenAI Codex read_token_response, on HTTP 2xx responses missing required fields, formats AuthError with the full response.body. That JSON commonly includes access_token and refresh_token when expires_in is absent or mistyped. AuthError::Message is Displayed verbatim, so tokens can leak into TUI errors, logs, diagnostics, or support dumps during login/refresh parse failures.",
466
+ "api:crates/pi-ai/src/auth/oauth/openai_codex.rs:886:openai_codex read_token_response, after HTTP ok, on missing access_token/refresh_token/expires_in formats the entire response.body into AuthError. Partial success bodies containing bearer/refresh tokens can leak into user-facing errors and ModelsError via resolve.",
467
+ "backend:crates/pi-ai/src/auth/resolve.rs:208:resolve_stored_oauth always calls oauth.refresh(&current_oauth, None) inside CredentialStore::modify, ignoring any session/request cancellation token, and maps AuthError::Cancelled into ModelsErrorCode::Oauth text. Trigger: user aborts model resolution while a token refresh is in flight. Impact: refresh cannot be cancelled; cancel becomes a generic OAuth failure, blocking retry/abort distinction and leaving long HTTP refresh running under the file lock.",
468
+ "test-quality:crates/pi-ai/src/auth/oauth/anthropic.rs:257:Both providers deliberately pass the PARENT signal into exchange_authorization_code after cancelling only the child prompt token, but no test cancels mid-exchange after a code was obtained. Such a test is also the only thing that would catch accidentally passing the already-cancelled child token into the exchange (which would make every settled login fail with Cancelled). Regression: Hung token exchange after successful callback cannot be aborted by the user; or child/parent token mix-up making login always fail post-settle.",
469
+ "test-quality:crates/pi-ai/src/auth/oauth/openai_codex.rs:1779:Happy-path only. No pre-cancel or mid-poll cancel variant for the Codex device flow, unlike github_copilot.rs:1375 (cancel_during_device_poll_returns_cancelled) and the xai/radius pre-cancel tests. Regression: Cancel ignored while poll_device_auth hangs: user abort leaves the device poll running until the server times out (commit bdc705c's cancellation contract only verified on the browser path).",
470
+ "security:crates/pi-ai/src/auth/oauth/radius.rs:281:Radius login_with_device_code notifies AuthEvent::DeviceCode with verification_uri taken verbatim from the gateway device-authorization response (or verification_endpoint) with no https/host checks. xAI already rejects non-https verification URIs because the URI is intended for browser open. A malicious or MITM'd Radius gateway can supply a phishing or non-https URI for user navigation during device login.",
471
+ "api:crates/pi-ai/src/auth/resolve.rs:206:resolve_stored_oauth calls oauth_for_refresh.refresh(&current_oauth, None) under CredentialStore::modify. Token HTTP can run up to the 30s OAuth timeout and cannot be aborted by session/auth cancel, despite OAuthAuth::refresh accepting a signal and other OAuth paths honoring cancellation."
472
+ ],
473
+ "status": "verified",
474
+ "attempts": 1,
475
+ "verification": [
476
+ {
477
+ "command": "cargo test -p pi-ai auth::oauth && cargo test -p pi-ai auth::resolve",
478
+ "result": "post-commit pi-ai all-target check + 95 OAuth + 6 resolve tests passed (artifact://6969)"
479
+ }
480
+ ],
481
+ "guard": "No token leakage/unsafe destination; cancellation reaches device, exchange and refresh",
482
+ "verifier": "cargo test -p pi-ai auth::oauth && cargo test -p pi-ai auth::resolve",
483
+ "commit": "23fe5f6"
484
+ },
485
+ {
486
+ "name": "provider-responses",
487
+ "files": [
488
+ "crates/pi-ai/src/providers/openai_responses.rs",
489
+ "crates/pi-ai/src/providers/shared/responses.rs"
490
+ ],
491
+ "itemIds": [
492
+ "backend:crates/pi-ai/src/providers/shared/responses.rs:964:On response.completed/incomplete (and Codex-rewritten completed frames that keep status failed|cancelled), finalize_response maps status via map_stop_reason to StopReason::Error, but done_reason collapses Error into DoneReason::Stop and AssistantState::finish overwrites stop_reason to Stop and clears error_message. Upstream TypeScript maps failed/cancelled to error and throws before emitting done. Trigger: provider returns completed/incomplete with status failed or cancelled (Codex path explicitly preserves those statuses). Impact: stream terminates as successful Done; callers may commit failed/partial assistant content and skip retry/error handling.",
493
+ "performance:crates/pi-ai/src/providers/shared/responses.rs:574:ResponsesStreamProcessor::tool_delta appends each argument fragment then calls parse_streaming_json(partial_json) on the entire accumulated string. parse_partial_object copies the candidate and retries from_str after each pop, so cost per fragment is O(n)\u2013O(n\u00b2) in partial length; large tool args stream into multi-megabyte reparses. Same pattern exists in openai_completions and anthropic input_json_delta.",
494
+ "api:crates/pi-ai/src/providers/openai_responses.rs:84:OpenAiResponses always formats OpenAI API error: {failure.message} even when ErrorReason::Aborted. Completions preserves raw abort text. Cancelled streams surface as OpenAI API error: request cancelled, diverging cancel detection and OpenAI-family adapter contracts."
495
+ ],
496
+ "status": "verified",
497
+ "attempts": 1,
498
+ "verification": [
499
+ {
500
+ "command": "cargo test -p pi-ai providers::shared::responses",
501
+ "result": "post-commit 8 shared + 5 adapter + 2 conformance tests passed (artifact://6942)"
502
+ }
503
+ ],
504
+ "guard": "failed/cancelled emits Error and never Done; argument stream work is amortized",
505
+ "verifier": "cargo test -p pi-ai providers::shared::responses",
506
+ "commit": "2820ae9"
507
+ },
508
+ {
509
+ "name": "extension-ui",
510
+ "files": [
511
+ "crates/pi-ext/src/adapters.rs",
512
+ "crates/pi-ext/src/client.rs",
513
+ "crates/pi/src/core/extension_host.rs",
514
+ "crates/pi/src/core/extension_host/tests.rs",
515
+ "crates/pi/src/core/platform/external_editor.rs",
516
+ "crates/pi/src/modes/interactive/runtime.rs",
517
+ "crates/pi/src/modes/interactive/theme.rs",
518
+ "crates/pi/src/modes/rpc/server.rs",
519
+ "packages/extension-host/src/host.ts",
520
+ "packages/extension-host/tests/acceptance.test.ts"
521
+ ],
522
+ "itemIds": [
523
+ "architecture:crates/pi/src/core/extension_host.rs:1279:Violated invariant: every Method-typed host\u2192Rust control frame reaches a consumer dispatcher (no silent drop). Host dialog()/notify produce select/confirm/input/editor/notify; HostClient maps FrameKind::Req and unmatched events to HostEvent::Raw (client.rs:804-806,860-861); product pump drops Raw at extension_host.rs:1279-1281. Extension UI dialogs hang until timeout and notifies never surface.",
524
+ "code-quality:crates/pi-ext/src/client.rs:352:HostClient::request_raw and StreamHandle::finish on timeout only remove_pending and return Timeout. Docs claim cancel-on-timeout, but no tool.cancel/provider.cancel control frame is sent. Host-side tool/provider work continues after the Rust caller already failed, leaking in-flight host work and risking late responses on recycled ids.",
525
+ "backend:crates/pi-ext/src/client.rs:361:HostClient::request_raw timeout path only remove_pending and returns Timeout; StreamHandle::finish does the same. No tool.cancel/provider.cancel control frame is sent, so the TS host keeps running (tool.execute has no local timeout and only aborts on cancel events). Trigger: hook/tool/provider exceeds DEFAULT_CALL_TIMEOUT. Impact: orphaned host side effects continue; agent may retry and duplicate execution; in-flight host work is unbounded after Rust abandons correlation.",
526
+ "code-quality:crates/pi-ext/src/client.rs:574:StreamHandle::finish mirrors request_raw: on deadline it remove_pending and returns Timeout without invoking cancel(control_method). ExtensionAgentTool/ExtensionProvider only send cancel when the CancellationToken fires, not when finish times out after DEFAULT_CALL_TIMEOUT, so hung extension tools keep running after the agent already errored.",
527
+ "api:crates/pi-ext/src/client.rs:798:Host UI context sends select/confirm/input/editor as correlated kind=req frames (packages/extension-host/src/host.ts dialog helper). Rust HostClient maps FrameKind::Req to HostEvent::Raw, and HostExtensionRunner's event pump silently ignores Raw. Dialogs therefore hang until the 30s request timeout with no UI surface and no correlated res/error.",
528
+ "api:crates/pi-ext/src/client.rs:809:Host createUIContext.notify emits unsolicited event method=notify id=0. forward_event has no Notify branch, so the frame becomes HostEvent::Raw and is ignored by the extension_host pump. Wire types define Notify/NotifyRequest, but the consumer never delivers notifications to interactive or RPC UI.",
529
+ "architecture:crates/pi/src/core/extension_host.rs:60:Violated invariant: every produced open method has a host dispatcher. Product defines TOOL_RENDER_HTML_METHOD and render_extension_tool_html requests tool.renderHtml; packages/extension-host has no tool.renderHtml case. Requests fail as unknown-method and export HTML always yields None on a live host.",
530
+ "frontend:crates/pi/src/modes/interactive/runtime.rs:686:ViewState.widgets_above/below are composed, but InteractiveRuntime never subscribes to HostExtensionRunner::subscribe_slot / HostEvent::UiSlot nor projects disposeSlot. Extension host fixtures push multi-line widgets on session_start, yet the live TUI never shows or updates them\u2014widget lifecycle is severed at the interactive boundary.",
531
+ "frontend:crates/pi/src/modes/interactive/runtime.rs:1062:handle_ui_event routes keys only through InteractiveRoot then InputMapper and never sends Method::TerminalInput to the extension host. Protocol and host implement the 4ms deadline with consume/rewrite and fail-open, but interactive input never exercises them, so onTerminalInput cannot rewrite or consume keystrokes in TUI mode.",
532
+ "frontend:crates/pi/src/modes/interactive/runtime.rs:1168:ViewAction::ExternalEditor is grouped with None/Consumed and returns ActionOutcome::None. input.rs maps Ctrl+G and the header documents it, and core/platform/external_editor.rs implements a cancel-safe editor flow, but the interactive runtime never pauses the TUI or writes edited text back. Ctrl+G is a complete no-op for users.",
533
+ "frontend:crates/pi/src/modes/interactive/runtime.rs:1171:ToggleToolExpand and ToggleThinking only force ActionOutcome::Repaint. ToolState.expanded is always false on project_tool_start and never toggled; AssistantMessageView.hide_thinking is always constructed false. Users cannot expand tool output or hide thinking despite keybindings and tests that only assert the mapper emits these actions.",
534
+ "performance:crates/pi/src/modes/interactive/runtime.rs:1897:paint_frame always InteractiveRoot::build \u2192 compose \u2192 build_chat walks every message and Markdown::new(text) per text block. Markdown width/parse caches die with the component each frame (~16ms coalesce or every keystroke). Long sessions re-parse and re-wrap the full transcript on every streaming paint; cost scales with message count \u00d7 content size \u00d7 paint rate.",
535
+ "test-quality:crates/pi/src/modes/interactive/runtime.rs:4469:Wiring tautology: the test sets emergency=AtomicBool::new(true) BEFORE install_product_panic_emergency_hook, so the installed global hook can never fire; it then calls the returned restore closure directly and asserts its bytes. The install call inside run_interactive_mode (runtime.rs:3396-3403) is never exercised. Regression: Deleting the install_product_panic_emergency_hook(...) call from run_interactive_mode \u2014 i.e. shipping commit 4e845e3's product wiring removed \u2014 leaves this test green; only the fixture PTY test would (weakly, see TQ-04) notice.",
536
+ "api:packages/extension-host/src/host.ts:348:Rust export path request_raw(TOOL_RENDER_HTML_METHOD) expects a host handler, but packages/extension-host handleRequest has no tool.renderHtml case and respondErrors with unknown method. Callers then isolate to Ok(None), so extension HTML export is a permanent silent no-op outside mocked tests.",
537
+ "architecture:crates/pi-ext/src/adapters.rs:146:Violated invariant: adapter honors host schema RPCs that the host implements. ExtensionAgentTool prepare_arguments/validate_arguments (adapters.rs:146-160) pass-through clone raw args while host.ts implements tool.prepare/tool.validate. Schema authority lives in TypeScript but is never invoked; malformed args are deferred to execute only.",
538
+ "test-quality:crates/pi/src/core/extension_host.rs:1170:Production reuses self.inner.project_trusted when spawning the replacement host, but extension_host/tests.rs contains zero references to restart_and_rewire or reload+trust. Regression: A restart dropping trust to the start_with_cwd default of false mid-session (extensions suddenly see untrusted context after reload) is uncaught.",
539
+ "code-quality:crates/pi/src/core/extension_host.rs:1288:spawn_event_pump on HostEvent::ProtocolError sets disabled and publishes an error but falls through the loop instead of breaking (unlike Eof). Post-fatal host traffic can keep flowing into a runner already marked disabled, creating inconsistent lifecycle state.",
540
+ "test-quality:crates/pi/src/core/extension_host/tests.rs:858:Asserts only the true case (payload[\"projectTrusted\"] == true). No false-case test exists anywhere; connect/start_with_cwd silently default to false (extension_host.rs:1190). Regression: Serialization hardcoding projectTrusted:true (or a true/false swap) passes; an untrusted project's extensions would observe trusted context.",
541
+ "frontend:crates/pi/src/modes/interactive/theme.rs:268:ResolvedTheme::from_slots marks any Rgb equal to Rgb::none() (0,0,0) as empty reset. ThemeJson::resolve_owned uses from_slots, so explicit #000000 becomes ESC[39m instead of black. Built-in light() bypasses via fg_empty:0, but JSON-loaded/custom themes\u2014including reloading light.json\u2014lose intentional black slots.",
542
+ "frontend:crates/pi/src/modes/interactive/theme.rs:975:ColorValue::Indexed(i) resolves to Rgb(i,i,i) grayscale, then emitters push truecolor or downsampled 256-color. Reference themes emit CSI 38;5;{index}m / 48;5;{index}m for numeric palette indices, so integer theme colors (e.g. 196 red) paint wrong.",
543
+ "code-quality:packages/extension-host/src/host.ts:1064:handleToolValidate looks up the tool definition then voids it and responds with the original args. Invalid extension-tool arguments are not schema-checked on the host validate path, so prepare/execute receive unvalidated payloads despite a dedicated RPC.",
544
+ "test-quality:packages/extension-host/tests/acceptance.test.ts:514:Bare `await runner.emit({ type: event })` with zero assertions \u2014 no result check, no handler-invocation check, no cancel/order assertion. Regression: emit resolving with an error result, dropping handlers silently, or merging cancel state incorrectly all pass."
545
+ ],
546
+ "status": "pending",
547
+ "attempts": 0,
548
+ "verification": [],
549
+ "guard": "Typed host UI request roundtrip with correlation; no raw drop; UI/runtime behavior wired",
550
+ "verifier": "cargo test -p pi core::extension_host && cargo test -p pi-ext && bun test packages/extension-host"
551
+ },
552
+ {
553
+ "name": "release",
554
+ "files": [
555
+ "crates/pi-ext/src/host.rs",
556
+ "crates/pi/src/core/platform/release_packaging.rs",
557
+ "scripts/package-release.ts",
558
+ "scripts/release/runner.ts",
559
+ "scripts/tests/cli-dry-run.test.ts",
560
+ "scripts/tests/package-release.test.ts"
561
+ ],
562
+ "itemIds": [
563
+ "devops:scripts/package-release.ts:123:When buildHost falls back to runtime-bundle, package-release sets bunRuntimePath to join(stagingRoot, plan.bunRuntimeName) without downloading or copying an official Bun binary unless --dry-run. assembleRelease then fs.readFile(s) that path, so non-dry-run fallback fails with missing-file errors instead of producing a shippable archive; comments claim the caller supplies the runtime, but the orchestrator never does.",
564
+ "devops:crates/pi-ext/src/host.rs:117:scripts/release/host.ts documents that the Rust binary should resolve PI_EXTENSION_HOST, then sibling pi-extension-host, then sibling bun[.exe] pi-extension-host.js. pi-ext host::default_asset_path/resolve_with only ever return the single sibling pi-extension-host[.exe] program with empty args\u2014no bun+js fallback. Archives produced on the runtime-bundle path therefore cannot start the extension host without manual PI_EXTENSION_HOST wiring.",
565
+ "devops:crates/pi/src/core/platform/release_packaging.rs:131:crates/pi/src/core/platform/release_packaging.rs plans compiled host as pi-host and fallback script as host.js with archive base pi-{version}-{triple}. The release scripts and pi-ext resolver ship/look for pi-extension-host[.exe] and pi-extension-host.js under pi-{os}-{arch}[-base]. Any consumer of the Rust planner (docs, future runner, tests asserting these names) disagrees with the actual packaging contract and product host resolution.",
566
+ "devops:scripts/package-release.ts:243:package-release unpackArchive always spawns unzip for zip archives. The release-verification matrix includes x86_64-pc-windows-msvc on windows-latest, where unzip is not a guaranteed PATH tool for node:child_process spawn. Windows packaging smoke can fail after a successful build/archive with a host-tool ENOENT, blocking the release job.",
567
+ "test-quality:scripts/tests/package-release.test.ts:32:The only smokeUnpacked test injects a perfect RecordingRunner and asserts call argv order. No test covers: missing pi throw (package-release.ts:284-286), pi --version nonzero throw (312-318), hello handshake failure throw (347-351), the hello stdin payload content (the mock never requires stdin), the dry-run branch (292-309), the runtime-bundle host-absent skip (325-330), or Windows .exe path joins. Regression: Release smoke (commit 7866bc5) can regress to accept a broken archive \u2014 non-running pi, garbage-hello host, handshake that sends no JSONL \u2014 with all unit tests green; failure would first appear on real release CI.",
568
+ "test-quality:scripts/package-release.ts:344:Smoke handshake accepts the host if the first stdout line substring-matches '\"method\":\"hello\"', '\"kind\":\"res\"', '\"protocolVersion\":1' \u2014 no JSON parse and no compatibilityVersion check, weaker than build-time isHelloAck (release/host.ts). No test pins the predicate's behavior on garbage input. Regression: A host ack with wrong compatibilityVersion, or a non-JSON line containing the substrings, passes smoke; conversely tightening the predicate later has no test safety net.",
569
+ "code-quality:scripts/release/runner.ts:78:SpawnRunner.run awaits child close with no deadline. cargo/host/smoke children that hang hold the release pipeline indefinitely; RunOptions has no timeout field and package-release smoke paths inherit this.",
570
+ "test-quality:scripts/tests/cli-dry-run.test.ts:29:Asserts only exitCode 0, stdout containing '=== Release Complete ===', and an Archive path prefix. Never stats the produced archive or .sha256, and never lists archive members. Regression: Packaging writing an empty/wrong-named archive, or omitting pi / host / release.json from entries, still prints the success banner and passes."
571
+ ],
572
+ "status": "verified",
573
+ "attempts": 1,
574
+ "verification": [
575
+ {
576
+ "command": "bun test scripts && cargo test -p pi-ext host && cargo test -p pi release_packaging",
577
+ "result": "post-commit 34 Bun tests + TS check + 9 pi-ext + 14 pi release tests passed (artifacts://7085, artifact://7120)"
578
+ }
579
+ ],
580
+ "guard": "Forced compiled-host fallback packages and launches Bun+JS; portable archive smoke",
581
+ "verifier": "bun test scripts && cargo test -p pi-ext host && cargo test -p pi release_packaging",
582
+ "commit": "66cc9c2"
583
+ },
584
+ {
585
+ "name": "editor",
586
+ "files": [
587
+ "crates/pi-tui/src/components/editor/mod.rs",
588
+ "crates/pi-tui/src/components/editor/paste.rs",
589
+ "crates/pi-tui/src/components/editor/state.rs"
590
+ ],
591
+ "itemIds": [
592
+ "frontend:crates/pi-tui/src/components/editor/mod.rs:888:handle_backspace calls renumber_after_delete while the deleted marker is still in the line, then deletes [col-glen, col) using pre-renumber offsets. When a higher id earlier on the line shrinks (e.g. #10\to#9), the target span moves left and the delete removes the wrong bytes, corrupting markers/text.",
593
+ "frontend:crates/pi-tui/src/components/editor/mod.rs:1220:move_word_forwards passes is_atomic_segment=is_paste_marker with segment:None, so default_word_segments splits markers into '[', 'paste', '#', digits. is_atomic never sees a full marker; word-right and delete-word-forward step inside markers and can slice them. move_word_backwards falls through to the same split when markers are present.",
594
+ "frontend:crates/pi-tui/src/components/editor/mod.rs:416:push_undo_snapshot only clones EditorState (lines+cursor). pastes and paste_counter live outside the undo stack. Undo after a large paste removes marker text but leaves pastes populated; undo after marker delete can restore marker text without the matching id. Submit/get_expanded_text then expands incorrectly or leaves ghost paste storage.",
595
+ "frontend:crates/pi-tui/src/components/editor/mod.rs:512:navigate_history uses set_text_internal without canceling/updating autocomplete; cursor line-start/end, word motion, and page_scroll move the cursor without update_autocomplete. Only move_cursor refreshes an open picker, so Tab/confirm can apply_completion with an obsolete prefix against new text after history or word motion.",
596
+ "frontend:crates/pi-tui/src/components/editor/mod.rs:913:handle_forward_delete removes an atomic paste-marker grapheme via next_grapheme_len but never updates pastes/paste_counter. Marker text disappears while stored content and later ids remain, so expand/submit can inject orphaned pastes if a matching id reappears and counters drift from visible markers."
597
+ ],
598
+ "status": "verified",
599
+ "attempts": 1,
600
+ "verification": [
601
+ {
602
+ "command": "cargo test -p pi-tui components::editor",
603
+ "result": "post-commit 28 editor tests + pi-tui lib check passed (artifact://6983)"
604
+ }
605
+ ],
606
+ "guard": "Paste marker/map/counter/undo remain atomic across delete, movement, history",
607
+ "verifier": "cargo test -p pi-tui components::editor",
608
+ "commit": "49e3b37"
609
+ },
610
+ {
611
+ "name": "terminal",
612
+ "files": [
613
+ "crates/pi-tui/src/focus.rs",
614
+ "crates/pi-tui/src/overlay.rs",
615
+ "crates/pi-tui/src/terminal/guard.rs",
616
+ "crates/pi-tui/src/terminal/writer.rs",
617
+ "crates/pi-tui/src/text/ansi.rs",
618
+ "crates/pi-tui/tests/pty_no_flicker.rs"
619
+ ],
620
+ "itemIds": [
621
+ "frontend:crates/pi-tui/src/terminal/writer.rs:521:stage3_write builds a balanced CSI ? 2026 h...l buffer then write_all/flush with no cleanup on partial write or mid-write I/O error. If the open marker is delivered without the close, the terminal stays in synchronized-output mode and subsequent UI can appear frozen/blank until an emergency close.",
622
+ "frontend:crates/pi-tui/src/focus.rs:331:dispatch_to_focused returns EventResult::Ignored when filter_key drops a Release. TS handleInput returns early so the event is fully consumed at the TUI layer. Hosts that fall through on Ignored can deliver key-release to global handlers (double-Esc, Ctrl+C) while a focused component was meant to own the key stream.",
623
+ "frontend:crates/pi-tui/src/overlay.rs:217:hide_id retargets FocusManager.overlay_pre_focus but not remaining OverlayEntry.pre_focus fields. Nested show editor\to A\to B then hide(A) while B is focused leaves B.pre_focus=A; hide(B) then set_focus(Some(A)) on a removed id so keyboard dispatch has no live component. TS retargetOverlayPreFocus rewrites entry.preFocus on the stack.",
624
+ "test-quality:crates/pi-tui/src/terminal/guard.rs:287:No test panics under the installed hook. CAS-once semantics, restore-closure invocation, and previous-hook chaining are untested at unit level; GuardScript tests (319-349) exercise only a mock whose emergency_restore (records sync_close) diverges from the real mode-only TerminalGuard::emergency_restore (146-160), which itself has no production call site. Regression: Hook not chaining the previous hook, restore firing twice, or the CAS flag not shared with the guard all pass unit tests.",
625
+ "frontend:crates/pi-tui/src/text/ansi.rs:54:extract_ansi_code only completes CSI on finals m/G/K/H/J. Private-mode sequences such as CSI ? 25 h/l (cursor hide/show) and other finals (A/B/C/D/f/l/h) are treated as visible text, so visible_width/wrap_text_with_ansi inflate columns (e.g. ESC[?25lhello width 10 vs 5) and mis-align wrap/truncate/overlays for streamed ANSI content.",
626
+ "test-quality:crates/pi-tui/tests/pty_no_flicker.rs:75:OR-weak predicate: saw_cursor_show || saw_emergency_restore. For exit=\"panic\" the normal Drop-path cursor show (?25h) alone satisfies the assertion, and saw_emergency_restore only requires ?2026l plus ANY of ?25h/0m/<u \u2014 a partial emergency sequence passes. Regression: Removing the fixture's panic-hook install (pi_tui_pty_fixture.rs:295-304) \u2014 panic exit restored only by Drop \u2014 keeps the panic branch green; an emergency sequence missing mode pops or reset also passes."
627
+ ],
628
+ "status": "verified",
629
+ "attempts": 1,
630
+ "verification": [
631
+ {
632
+ "command": "cargo test -p pi-tui terminal && cargo test -p pi-tui --test pty_no_flicker",
633
+ "result": "post-commit: 8+15+11+6+3 unit tests and 5 PTY tests passed (artifact://6829)"
634
+ }
635
+ ],
636
+ "guard": "Partial sync errors close mode; panic emits exact restore; ANSI/focus/overlay contracts",
637
+ "verifier": "cargo test -p pi-tui terminal && cargo test -p pi-tui --test pty_no_flicker",
638
+ "commit": "a04a0a1"
639
+ },
640
+ {
641
+ "name": "product-session",
642
+ "files": [
643
+ "crates/pi/src/cli/bootstrap.rs",
644
+ "crates/pi/src/cli/entry.rs",
645
+ "crates/pi/src/cli/package_manager_cli.rs",
646
+ "crates/pi/src/core/agent_session/compaction.rs",
647
+ "crates/pi/src/core/agent_session/events.rs",
648
+ "crates/pi/src/core/agent_session/extension.rs",
649
+ "crates/pi/src/core/agent_session/mod.rs",
650
+ "crates/pi/src/core/agent_session/model.rs",
651
+ "crates/pi/src/core/agent_session/retry.rs",
652
+ "crates/pi/src/core/agent_session/subscribe.rs",
653
+ "crates/pi/src/core/agent_session/tools.rs",
654
+ "crates/pi/src/core/agent_session_runtime.rs",
655
+ "crates/pi/src/core/agent_session_services.rs",
656
+ "crates/pi/src/core/config_value.rs",
657
+ "crates/pi/src/core/trust.rs",
658
+ "crates/pi/src/modes/print.rs",
659
+ "crates/pi/src/modes/rpc/mode_host.rs",
660
+ "crates/pi/src/modes/text.rs"
661
+ ],
662
+ "itemIds": [
663
+ "security:crates/pi/src/core/agent_session_services.rs:571:Production session construction always creates SettingsManager with SettingsManagerCreateOptions::default() (project_trusted: true) in create_service_foundation, create_runtime_services, and RealReplacementFactory, then discovers project extensions/settings and starts HostExtensionRunner with that flag. resolve_project_trusted / ProjectTrustStore are only exercised in unit tests; CLI project_trust_override is never passed. Opening a repo with .pi/extensions or project packages therefore executes untrusted local code and merges attacker-controlled project settings (e.g. npmCommand) without prompt or --no-approve.",
664
+ "code-quality:crates/pi/src/cli/entry.rs:900:RealPackageHandler::refresh_models always Ok(()) and update_self always Ok(false) with comments that wiring is deferred. Bootstrap routes `pi update` / `pi update models` / `pi update --self` through these handlers, so production CLI reports success or already-latest without performing the documented work.",
665
+ "security:crates/pi/src/cli/package_manager_cli.rs:669:package_manager_cli parses project_trust_override and preflight errors with \"Use --approve\", but only calls handler.is_project_trusted() and never reads the override. RealPackageHandler::is_project_trusted always builds SettingsManager with project_trusted(false) and returns that flag, so --approve cannot unblock local package writes and --no-approve cannot force-deny. Main Args::project_trust_override is likewise unused by create_runtime_services.",
666
+ "architecture:crates/pi/src/core/agent_session/compaction.rs:446:Violated invariant: each lifecycle hook fires once per occurrence. compact/run_auto_compaction call emit_session_event(CompactionStart) which already runner.emit's to extensions, then run_compaction_core again dispatches session_before_compact via another CompactionStart when handlers exist (compaction.rs:446-450). Extensions can double-cancel or observe duplicate starts.",
667
+ "api:crates/pi/src/core/agent_session/retry.rs:242:Providers emit status-first errorMessage strings such as OpenAI API error: 429: {body} and HTTP 429: {body}. is_retryable_assistant_error matches 500/502/503 and rate limit text but not 429. Upstream RETRYABLE_PROVIDER_ERROR_PATTERN includes 429; empty or generic 429 bodies therefore skip auto-retry.",
668
+ "architecture:crates/pi/src/core/agent_session/subscribe.rs:230:Violated invariant: one policy authority for retryability/context-overflow. will_retry_after_agent_end uses private is_retryable_assistant (subscribe.rs:230-256) that omits patterns in retry.rs is_retryable_assistant_error (\"internal error\", \"temporarily unavailable\", \"service_unavailable\") and does not share is_context_overflow. Public agent_end.willRetry can disagree with whether prepare_retry continues.",
669
+ "architecture:crates/pi/src/core/agent_session/tools.rs:241:Violated invariant: single owner of the live tool list for execution and prepare_next_turn. set_active_tools_by_name (tools.rs:241-246) updates Agent.state.tools and inner.active_tool_names but never SessionHooks.set_tools; prepare_next_turn_hook (extension_runner.rs:435-447) overwrites context.tools from the construction-time hooks snapshot whenever non-empty. After refresh_tool_registry or extension tool registration, the next turn can reinstall the stale tool set and drop newly registered tools.",
670
+ "architecture:crates/pi/src/core/agent_session_runtime.rs:621:Violated invariant: advertised extension lifecycle events are either fully dispatched with cancel semantics or not reported as having handlers. emit_before_switch/emit_before_fork (agent_session_runtime.rs:621-642) only check has_handlers and always return cancelled:false; emit_model_select is a no-op despite ALL_EVENT_TYPES listing model_select/session_before_*. Extensions cannot cancel switch/fork and never receive model_select.",
671
+ "architecture:crates/pi/src/cli/entry.rs:382:Violated invariant: product-owned types stay typed at product boundaries; no type-erasure for same-crate dependencies. cli/entry.rs:382-384 erases ModelRuntime into Arc<dyn Any + Send + Sync>; session/modes repeatedly downcast. Failed downcasts silently yield None auth/model paths.",
672
+ "test-quality:crates/pi/src/core/agent_session/extension.rs:1131:Tautology: calls session.report_extension_error(\"host crashed\") then asserts only !session.session_id().await.is_empty() \u2014 always true for a fresh session. The test cannot fail unless report_extension_error panics. Regression: Listener not invoked, listener panic propagating, or error swallowed into the wrong channel all pass.",
673
+ "architecture:crates/pi/src/core/agent_session/mod.rs:991:Violated invariant: runtime toggles that have a settings key update cache and persistence consistently. set_auto_retry_enabled writes inner + SettingsManager; set_auto_compaction_enabled only mutates the inner flag (mod.rs:991-994). Session toggle and disk settings diverge; restart reverts compaction policy while retry stays consistent.",
674
+ "performance:crates/pi/src/core/agent_session/subscribe.rs:103:process_agent_event clones each AgentEvent into a public AgentSessionEvent and, when message_update handlers exist, HostExtensionRunner::emit does serde_json::to_value of the full event (full AgentMessage + AssistantMessageEvent with another partial snapshot) and awaits the host RPC on the pump path. Per-token IPC JSON of growing messages multiplies extension latency and CPU whenever any extension subscribes to message_update.",
675
+ "backend:crates/pi/src/core/agent_session/subscribe.rs:182:will_retry_after_agent_end uses a weaker is_retryable_assistant that omits patterns prepare_retry/is_retryable_assistant_error accepts (e.g. internal error, temporarily unavailable, service_unavailable). Trigger: transient provider error matching only the stronger classifier. Impact: AgentEnd.willRetry can be false while the session still auto-retries (or the inverse on edge patterns), so UI/RPC clients mis-report retry intent and may settle prematurely in observers that trust willRetry alone.",
676
+ "code-quality:crates/pi/src/core/agent_session/subscribe.rs:230:subscribe.rs::is_retryable_assistant omits retry.rs patterns (internal error, temporarily unavailable, service_unavailable). AgentEnd.willRetry can be false while handle_post_agent_run still prepare_retry (or the reverse for other future drift), so UIs and extensions misread retry intent.",
677
+ "test-quality:crates/pi/src/core/agent_session_services.rs:466:create_agent_session_services reads settings_manager.is_project_trusted() and forwards it to start_with_cwd_and_trust, but no test asserts the bit actually reaches the extensions.load request for either value. Regression: Settings trust flipped in the UI but the host still started with default false (or always-true) \u2014 the trust decision never reaching extensions \u2014 passes all current tests (commit 6425136's core contract).",
678
+ "architecture:crates/pi/src/core/config_value.rs:50:Violated invariant: single domain authority and no hidden process-global mutable state for config command expansion. pi-ai auth/config_value owns COMMAND_CACHE and is what ModelRuntime imports; product core/config_value.rs:50-54 is a near-clone with a second static COMMAND_CACHE, pub-mod'd but unused by production paths. Dead second authority invites divergence if rewired later.",
679
+ "code-quality:crates/pi/src/core/trust.rs:611:write_trust_file uses fs::write directly on trust.json after building JSON. A crash mid-write can leave a truncated trust file; readers then fail open/closed unpredictably. No temp-file + rename pattern is used despite the store being security-sensitive."
680
+ ],
681
+ "status": "pending",
682
+ "attempts": 0,
683
+ "verification": [],
684
+ "guard": "Untrusted production startup loads no project resources; lifecycle/retry/tool policies single-authority",
685
+ "verifier": "cargo test -p pi trust && cargo test -p pi agent_session"
686
+ },
687
+ {
688
+ "name": "persistence",
689
+ "files": [
690
+ "crates/pi/src/core/agent_session/bash.rs",
691
+ "crates/pi/src/core/agent_session/persistence.rs",
692
+ "crates/pi/src/core/agent_session/prompt.rs",
693
+ "crates/pi/src/core/sessions/list.rs",
694
+ "crates/pi/src/core/sessions/mod.rs"
695
+ ],
696
+ "itemIds": [
697
+ "code-quality:crates/pi/src/core/agent_session/bash.rs:242:flush_pending_bash_messages drains pending bash records then ignores every manager.append_message Result. run_agent_prompt also does `let _ = self.flush_pending_bash_messages().await` before settle, so mid-run bashExecution custom messages can be lost while the prompt still reports success.",
698
+ "database:crates/pi/src/core/agent_session/persistence.rs:82:AgentSession::on_message_end routes append/persist errors through tracing_warn_persist, which intentionally discards the SessionError (let _ = err) and never logs, emits, or retries. Disk-full, permission, or create_new collisions therefore leave the live transcript ahead of the on-disk JSONL with no operator signal, so later resume/export silently omit user/assistant turns. This is a pure data-loss observability hole on the only append path for message_end.",
699
+ "code-quality:crates/pi/src/core/agent_session/persistence.rs:244:tracing_warn_persist discards SessionError with only `let _ = err` and an explicit silent-path comment. Callers that route append/message_end failures through it never log or surface diagnostics, so live transcript and on-disk session tree can diverge without operator signal.",
700
+ "code-quality:crates/pi/src/core/sessions/list.rs:78:find_most_recent_session_inner maps any fs::metadata error to Err(()) and find_most_recent_session turns that into None. One unreadable candidate makes the scan report no sessions even when other valid jsonl headers exist, breaking resume/most-recent selection.",
701
+ "performance:crates/pi/src/core/sessions/list.rs:173:build_session_info fully parses every JSONL line and accumulates all user/assistant text into all_messages, then joins into all_messages_text on SessionInfo. Listing many large sessions keeps complete transcript text in memory for the picker; cost is O(total session bytes) in RAM and CPU per list.",
702
+ "backend:crates/pi/src/core/sessions/mod.rs:417:SessionManager::rewrite_file opens the live session path with truncate(true) and rewrites all lines in place without temp file + rename or fsync. Trigger: crash/power loss mid-rewrite (migration, branch rewrite, bulk rebuild). Impact: session JSONL can be truncated to empty/partial contents\u2014history loss for the active session file.",
703
+ "performance:crates/pi/src/core/sessions/mod.rs:1453:On every message_end the event pump awaits persist_message_end \u2192 SessionManager::append_message \u2192 append_line, which does blocking OpenOptions open + writeln on the calling Tokio worker while holding session_manager. Large serialized messages or slow disks stall the lossless agent-event pump (and thus streaming projection) on the critical path."
704
+ ],
705
+ "status": "pending",
706
+ "attempts": 0,
707
+ "verification": [],
708
+ "guard": "Disk failures propagate; no drained/lost messages; rewrites atomic; listing bounded",
709
+ "verifier": "cargo test -p pi sessions && cargo test -p pi agent_session::persistence"
710
+ },
711
+ {
712
+ "name": "tools-mutation",
713
+ "files": [
714
+ "crates/pi/src/core/tools/edit.rs",
715
+ "crates/pi/src/core/tools/mutation_queue.rs",
716
+ "crates/pi/src/core/tools/write.rs"
717
+ ],
718
+ "itemIds": [
719
+ "backend:crates/pi/src/core/tools/edit.rs:290:apply_edit_mutation performs tokio::fs::write of final_content, then throw_if_cancelled. If cancel arrives in that window, the tool returns Operation aborted while the mutation is already durable on disk. Trigger: user abort/timeout immediately after the write completes. Impact: agent history/tool result claim failure, but workspace already changed; retries or compensating edits can corrupt or double-apply.",
720
+ "code-quality:crates/pi/src/core/tools/mutation_queue.rs:99:QueueRegistration::Drop checks Arc::strong_count == 1 outside the registry lock, then locks and removes the map entry. Between the count check and map.remove, another waiter can upgrade the Weak, register on a fresh Semaphore for the same path, and both run mutations concurrently\u2014breaking the per-path FIFO invariant for write/edit.",
721
+ "backend:crates/pi/src/core/tools/mutation_queue.rs:103:QueueRegistration::drop checks Arc::strong_count(&gate)==1 outside REGISTRY, then locks and map.remove(key). Between the count check and remove, another waiter can register the same key, insert a Weak to a new Semaphore, and then get wiped by the late remove\u2014or the old gate can be reclaimed while a new registration is in flight\u2014splitting one path across two semaphores. Trigger: concurrent edit/write on the same path when the last waiter drops during a new register. Impact: lost FIFO serialization; concurrent writers can interleave partial content on the same file.",
722
+ "backend:crates/pi/src/core/tools/write.rs:168:WriteTool writes file bytes then throw_if_cancelled; cancel after successful create/overwrite surfaces as tool error. Trigger: abort right after fs::write. Impact: same false-failure/durable-side-effect split as edit\u2014session believes the write failed while disk was updated."
723
+ ],
724
+ "status": "pending",
725
+ "attempts": 0,
726
+ "verification": [],
727
+ "guard": "One semaphore per path and cancellation cannot report failure after durable commit",
728
+ "verifier": "cargo test -p pi core::tools"
729
+ },
730
+ {
731
+ "name": "rpc",
732
+ "files": [
733
+ "crates/pi/src/modes/rpc/mode_host.rs",
734
+ "crates/pi/src/modes/rpc/server.rs",
735
+ "crates/pi/src/modes/rpc/types.rs"
736
+ ],
737
+ "itemIds": [
738
+ "api:crates/pi/src/modes/rpc/mode_host.rs:403:RpcSessionHost::get_commands always returns Vec::new while the wire command and success data shape exist. Upstream rpc-mode.ts fills extension commands, prompt templates, and skills. RPC clients permanently observe an empty catalog despite a successful get_commands response.",
739
+ "backend:crates/pi/src/modes/rpc/server.rs:448:ExtensionBindings.shutdown_handler only stores shutdown_requested=true and never notifies ServerState.signal. Production run_rpc_mode only observes that flag on signal.notified() (AgentSettled/rebind) or after the next stdin command (process_input_line). Trigger: extension invokes shutdown while the RPC server is idle with no stdin traffic. Impact: process hangs until external input/signal instead of exiting; automation clients can deadlock waiting for clean shutdown.",
740
+ "api:crates/pi/src/modes/rpc/mode_host.rs:411:Server docs require awaiting backpressure after non-prompt responses and on agent subscribe paths. process_input_line only enqueues frames, and production register_backpressure_hook is a no-op. Under event load the write FIFO can grow without flow control, diverging from TS waitForRawStdoutBackpressure.",
741
+ "api:crates/pi/src/modes/rpc/server.rs:994:process_input_line deserializes JSON to Value first, then RpcCommand. On schema/field errors it always emits RpcResponse::err(None, parse, ...), discarding a present id. Unknown commands correctly echo id; field errors break client correlation for the same request envelope.",
742
+ "api:crates/pi/src/modes/rpc/server.rs:1028:stdin_reader maps any JsonlReadError/Err to LineMsg::Eof, so transient read failures become clean shutdown with no error frame and exit-0 style completion. Distinguish Ok(None) EOF from Err and surface a non-zero/error path.",
743
+ "api:crates/pi/src/modes/rpc/types.rs:2192:optional_string/optional_bool silently return None for wrong JSON types (e.g. id:123, excludeFromContext:true-as-string). Correlation ids and bash flags can change semantics without a parse error. Reject known optional fields with wrong types, still echoing id when recoverable."
744
+ ],
745
+ "status": "verified",
746
+ "attempts": 1,
747
+ "verification": [
748
+ {
749
+ "command": "cargo test -p pi modes::rpc",
750
+ "result": "post-commit 99 RPC tests passed (artifact://7001)"
751
+ }
752
+ ],
753
+ "guard": "RPC correlation/backpressure/shutdown/read/type/catalog contracts are observable",
754
+ "verifier": "cargo test -p pi modes::rpc",
755
+ "commit": "5771f14"
756
+ }
757
+ ],
758
+ "verification": [],
759
+ "reReview": null,
760
+ "resolve": {
761
+ "valid": 98,
762
+ "notAnIssue": 15,
763
+ "needsClarification": 0,
764
+ "outOfScope": 0,
765
+ "findingsHash": "06074273642453e991181a4005bacfddd0645b02a77d85d40b26a9a3d9624afb"
766
+ }
767
+ }