pi-usereq 0.48.0 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (939) hide show
  1. package/README.md +1 -1
  2. package/package.json +5 -1
  3. package/scripts/lib/extension-debug-harness.ts +443 -0
  4. package/scripts/lib/recording-extension-api.ts +855 -0
  5. package/scripts/lib/sdk-smoke.ts +503 -0
  6. package/src/core/prompts.ts +4 -4
  7. package/.g.conf +0 -16
  8. package/.github/workflows/release-npm.yml +0 -134
  9. package/.gitignore +0 -274
  10. package/CHANGELOG.md +0 -699
  11. package/TODO.md +0 -20
  12. package/docs/pi.dev/agent-document-manifest.json +0 -6399
  13. package/docs/pi.dev/coding-agent-docs/compaction.md +0 -394
  14. package/docs/pi.dev/coding-agent-docs/custom-provider.md +0 -637
  15. package/docs/pi.dev/coding-agent-docs/development.md +0 -71
  16. package/docs/pi.dev/coding-agent-docs/extensions.md +0 -2536
  17. package/docs/pi.dev/coding-agent-docs/images/doom-extension.png +0 -0
  18. package/docs/pi.dev/coding-agent-docs/images/exy.png +0 -0
  19. package/docs/pi.dev/coding-agent-docs/images/interactive-mode.png +0 -0
  20. package/docs/pi.dev/coding-agent-docs/images/tree-view.png +0 -0
  21. package/docs/pi.dev/coding-agent-docs/json.md +0 -82
  22. package/docs/pi.dev/coding-agent-docs/keybindings.md +0 -197
  23. package/docs/pi.dev/coding-agent-docs/models.md +0 -395
  24. package/docs/pi.dev/coding-agent-docs/packages.md +0 -218
  25. package/docs/pi.dev/coding-agent-docs/prompt-templates.md +0 -88
  26. package/docs/pi.dev/coding-agent-docs/providers.md +0 -196
  27. package/docs/pi.dev/coding-agent-docs/rpc.md +0 -1407
  28. package/docs/pi.dev/coding-agent-docs/sdk.md +0 -1149
  29. package/docs/pi.dev/coding-agent-docs/session.md +0 -412
  30. package/docs/pi.dev/coding-agent-docs/settings.md +0 -248
  31. package/docs/pi.dev/coding-agent-docs/shell-aliases.md +0 -13
  32. package/docs/pi.dev/coding-agent-docs/skills.md +0 -232
  33. package/docs/pi.dev/coding-agent-docs/terminal-setup.md +0 -106
  34. package/docs/pi.dev/coding-agent-docs/termux.md +0 -127
  35. package/docs/pi.dev/coding-agent-docs/themes.md +0 -295
  36. package/docs/pi.dev/coding-agent-docs/tmux.md +0 -61
  37. package/docs/pi.dev/coding-agent-docs/tree.md +0 -233
  38. package/docs/pi.dev/coding-agent-docs/tui.md +0 -918
  39. package/docs/pi.dev/coding-agent-docs/windows.md +0 -17
  40. package/docs/pi.dev/mom-docs/artifacts-server.md +0 -475
  41. package/docs/pi.dev/mom-docs/events.md +0 -307
  42. package/docs/pi.dev/mom-docs/new.md +0 -970
  43. package/docs/pi.dev/mom-docs/sandbox.md +0 -153
  44. package/docs/pi.dev/mom-docs/slack-bot-minimal-guide.md +0 -399
  45. package/docs/pi.dev/mom-docs/v86.md +0 -319
  46. package/docs/pi.dev/pods-docs/gml-4.5.md +0 -189
  47. package/docs/pi.dev/pods-docs/gpt-oss.md +0 -233
  48. package/docs/pi.dev/pods-docs/implementation-plan.md +0 -183
  49. package/docs/pi.dev/pods-docs/kimi-k2.md +0 -197
  50. package/docs/pi.dev/pods-docs/models.md +0 -116
  51. package/docs/pi.dev/pods-docs/plan.md +0 -166
  52. package/docs/pi.dev/pods-docs/qwen3-coder.md +0 -132
  53. package/images/flowchart-bw.png +0 -0
  54. package/images/flowchart-bw.svg +0 -102
  55. package/images/flowchart.md +0 -100
  56. package/images/flowchart.png +0 -0
  57. package/images/flowchart.svg +0 -3
  58. package/pi-usereq/docs/REFERENCES.md +0 -5713
  59. package/pi-usereq/docs/REQUIREMENTS.md +0 -779
  60. package/pi-usereq/docs/WORKFLOW.md +0 -1341
  61. package/pi.dev-src/pi-mono/agent/src/agent-loop.ts +0 -683
  62. package/pi.dev-src/pi-mono/agent/src/agent.ts +0 -543
  63. package/pi.dev-src/pi-mono/agent/src/index.ts +0 -8
  64. package/pi.dev-src/pi-mono/agent/src/proxy.ts +0 -367
  65. package/pi.dev-src/pi-mono/agent/src/types.ts +0 -364
  66. package/pi.dev-src/pi-mono/agent/test/agent-loop.test.ts +0 -1181
  67. package/pi.dev-src/pi-mono/agent/test/agent.test.ts +0 -463
  68. package/pi.dev-src/pi-mono/agent/test/e2e.test.ts +0 -404
  69. package/pi.dev-src/pi-mono/agent/test/utils/calculate.ts +0 -32
  70. package/pi.dev-src/pi-mono/agent/test/utils/get-current-time.ts +0 -46
  71. package/pi.dev-src/pi-mono/agent/vitest.config.ts +0 -9
  72. package/pi.dev-src/pi-mono/ai/bedrock-provider.d.ts +0 -1
  73. package/pi.dev-src/pi-mono/ai/bedrock-provider.js +0 -1
  74. package/pi.dev-src/pi-mono/ai/scripts/generate-models.ts +0 -1635
  75. package/pi.dev-src/pi-mono/ai/scripts/generate-test-image.ts +0 -34
  76. package/pi.dev-src/pi-mono/ai/src/api-registry.ts +0 -98
  77. package/pi.dev-src/pi-mono/ai/src/bedrock-provider.ts +0 -6
  78. package/pi.dev-src/pi-mono/ai/src/cli.ts +0 -133
  79. package/pi.dev-src/pi-mono/ai/src/env-api-keys.ts +0 -134
  80. package/pi.dev-src/pi-mono/ai/src/index.ts +0 -35
  81. package/pi.dev-src/pi-mono/ai/src/models.generated.ts +0 -14928
  82. package/pi.dev-src/pi-mono/ai/src/models.ts +0 -82
  83. package/pi.dev-src/pi-mono/ai/src/oauth.ts +0 -1
  84. package/pi.dev-src/pi-mono/ai/src/providers/amazon-bedrock.ts +0 -929
  85. package/pi.dev-src/pi-mono/ai/src/providers/anthropic.ts +0 -1125
  86. package/pi.dev-src/pi-mono/ai/src/providers/azure-openai-responses.ts +0 -253
  87. package/pi.dev-src/pi-mono/ai/src/providers/faux.ts +0 -499
  88. package/pi.dev-src/pi-mono/ai/src/providers/github-copilot-headers.ts +0 -37
  89. package/pi.dev-src/pi-mono/ai/src/providers/google-gemini-cli.ts +0 -996
  90. package/pi.dev-src/pi-mono/ai/src/providers/google-shared.ts +0 -354
  91. package/pi.dev-src/pi-mono/ai/src/providers/google-vertex.ts +0 -543
  92. package/pi.dev-src/pi-mono/ai/src/providers/google.ts +0 -500
  93. package/pi.dev-src/pi-mono/ai/src/providers/mistral.ts +0 -629
  94. package/pi.dev-src/pi-mono/ai/src/providers/openai-codex-responses.ts +0 -984
  95. package/pi.dev-src/pi-mono/ai/src/providers/openai-completions.ts +0 -1063
  96. package/pi.dev-src/pi-mono/ai/src/providers/openai-responses-shared.ts +0 -539
  97. package/pi.dev-src/pi-mono/ai/src/providers/openai-responses.ts +0 -264
  98. package/pi.dev-src/pi-mono/ai/src/providers/register-builtins.ts +0 -433
  99. package/pi.dev-src/pi-mono/ai/src/providers/simple-options.ts +0 -47
  100. package/pi.dev-src/pi-mono/ai/src/providers/transform-messages.ts +0 -220
  101. package/pi.dev-src/pi-mono/ai/src/stream.ts +0 -59
  102. package/pi.dev-src/pi-mono/ai/src/types.ts +0 -417
  103. package/pi.dev-src/pi-mono/ai/src/utils/event-stream.ts +0 -87
  104. package/pi.dev-src/pi-mono/ai/src/utils/hash.ts +0 -13
  105. package/pi.dev-src/pi-mono/ai/src/utils/headers.ts +0 -7
  106. package/pi.dev-src/pi-mono/ai/src/utils/json-parse.ts +0 -124
  107. package/pi.dev-src/pi-mono/ai/src/utils/overflow.ts +0 -138
  108. package/pi.dev-src/pi-mono/ai/src/utils/sanitize-unicode.ts +0 -25
  109. package/pi.dev-src/pi-mono/ai/src/utils/typebox-helpers.ts +0 -24
  110. package/pi.dev-src/pi-mono/ai/src/utils/validation.ts +0 -324
  111. package/pi.dev-src/pi-mono/ai/test/abort.test.ts +0 -260
  112. package/pi.dev-src/pi-mono/ai/test/anthropic-oauth.test.ts +0 -99
  113. package/pi.dev-src/pi-mono/ai/test/anthropic-opus-4-7-smoke.test.ts +0 -72
  114. package/pi.dev-src/pi-mono/ai/test/anthropic-sse-parsing.test.ts +0 -113
  115. package/pi.dev-src/pi-mono/ai/test/anthropic-thinking-disable.test.ts +0 -152
  116. package/pi.dev-src/pi-mono/ai/test/anthropic-tool-name-normalization.test.ts +0 -205
  117. package/pi.dev-src/pi-mono/ai/test/azure-utils.ts +0 -28
  118. package/pi.dev-src/pi-mono/ai/test/bedrock-endpoint-resolution.test.ts +0 -131
  119. package/pi.dev-src/pi-mono/ai/test/bedrock-models.test.ts +0 -66
  120. package/pi.dev-src/pi-mono/ai/test/bedrock-thinking-payload.test.ts +0 -107
  121. package/pi.dev-src/pi-mono/ai/test/bedrock-utils.ts +0 -18
  122. package/pi.dev-src/pi-mono/ai/test/cache-retention.test.ts +0 -335
  123. package/pi.dev-src/pi-mono/ai/test/context-overflow.test.ts +0 -714
  124. package/pi.dev-src/pi-mono/ai/test/cross-provider-handoff.test.ts +0 -458
  125. package/pi.dev-src/pi-mono/ai/test/data/red-circle.png +0 -0
  126. package/pi.dev-src/pi-mono/ai/test/empty.test.ts +0 -742
  127. package/pi.dev-src/pi-mono/ai/test/faux-provider.test.ts +0 -597
  128. package/pi.dev-src/pi-mono/ai/test/fireworks-models.test.ts +0 -49
  129. package/pi.dev-src/pi-mono/ai/test/github-copilot-anthropic.test.ts +0 -108
  130. package/pi.dev-src/pi-mono/ai/test/github-copilot-oauth.test.ts +0 -196
  131. package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-claude-thinking-header.test.ts +0 -103
  132. package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-empty-stream.test.ts +0 -108
  133. package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-retry-delay.test.ts +0 -53
  134. package/pi.dev-src/pi-mono/ai/test/google-shared-convert-tools.test.ts +0 -187
  135. package/pi.dev-src/pi-mono/ai/test/google-shared-gemini3-unsigned-tool-call.test.ts +0 -172
  136. package/pi.dev-src/pi-mono/ai/test/google-shared-image-tool-result-routing.test.ts +0 -124
  137. package/pi.dev-src/pi-mono/ai/test/google-thinking-disable.test.ts +0 -183
  138. package/pi.dev-src/pi-mono/ai/test/google-thinking-signature.test.ts +0 -38
  139. package/pi.dev-src/pi-mono/ai/test/google-tool-call-missing-args.test.ts +0 -105
  140. package/pi.dev-src/pi-mono/ai/test/google-vertex-api-key-resolution.test.ts +0 -144
  141. package/pi.dev-src/pi-mono/ai/test/image-tool-result.test.ts +0 -481
  142. package/pi.dev-src/pi-mono/ai/test/interleaved-thinking.test.ts +0 -145
  143. package/pi.dev-src/pi-mono/ai/test/lazy-module-load.test.ts +0 -102
  144. package/pi.dev-src/pi-mono/ai/test/mistral-reasoning-mode.test.ts +0 -66
  145. package/pi.dev-src/pi-mono/ai/test/mistral-tool-schema.test.ts +0 -61
  146. package/pi.dev-src/pi-mono/ai/test/oauth.ts +0 -89
  147. package/pi.dev-src/pi-mono/ai/test/openai-codex-cache-affinity-e2e.test.ts +0 -36
  148. package/pi.dev-src/pi-mono/ai/test/openai-codex-stream.test.ts +0 -686
  149. package/pi.dev-src/pi-mono/ai/test/openai-completions-cache-control-format.test.ts +0 -189
  150. package/pi.dev-src/pi-mono/ai/test/openai-completions-prompt-cache.test.ts +0 -198
  151. package/pi.dev-src/pi-mono/ai/test/openai-completions-thinking-as-text.test.ts +0 -214
  152. package/pi.dev-src/pi-mono/ai/test/openai-completions-tool-choice.test.ts +0 -560
  153. package/pi.dev-src/pi-mono/ai/test/openai-completions-tool-result-images.test.ts +0 -101
  154. package/pi.dev-src/pi-mono/ai/test/openai-responses-cache-affinity-e2e.test.ts +0 -32
  155. package/pi.dev-src/pi-mono/ai/test/openai-responses-copilot-provider.test.ts +0 -128
  156. package/pi.dev-src/pi-mono/ai/test/openai-responses-foreign-toolcall-id.test.ts +0 -66
  157. package/pi.dev-src/pi-mono/ai/test/openai-responses-partial-json-cleanup.test.ts +0 -101
  158. package/pi.dev-src/pi-mono/ai/test/openai-responses-reasoning-replay-e2e.test.ts +0 -292
  159. package/pi.dev-src/pi-mono/ai/test/openai-responses-tool-result-images.test.ts +0 -200
  160. package/pi.dev-src/pi-mono/ai/test/openrouter-cache-write-repro.test.ts +0 -78
  161. package/pi.dev-src/pi-mono/ai/test/overflow.test.ts +0 -64
  162. package/pi.dev-src/pi-mono/ai/test/responseid.test.ts +0 -145
  163. package/pi.dev-src/pi-mono/ai/test/stream.test.ts +0 -1405
  164. package/pi.dev-src/pi-mono/ai/test/supports-xhigh.test.ts +0 -34
  165. package/pi.dev-src/pi-mono/ai/test/tokens.test.ts +0 -304
  166. package/pi.dev-src/pi-mono/ai/test/tool-call-id-normalization.test.ts +0 -291
  167. package/pi.dev-src/pi-mono/ai/test/tool-call-without-result.test.ts +0 -313
  168. package/pi.dev-src/pi-mono/ai/test/total-tokens.test.ts +0 -695
  169. package/pi.dev-src/pi-mono/ai/test/transform-messages-copilot-openai-to-anthropic.test.ts +0 -191
  170. package/pi.dev-src/pi-mono/ai/test/unicode-surrogate.test.ts +0 -754
  171. package/pi.dev-src/pi-mono/ai/test/validation.test.ts +0 -116
  172. package/pi.dev-src/pi-mono/ai/test/xhigh.test.ts +0 -71
  173. package/pi.dev-src/pi-mono/ai/test/zen.test.ts +0 -25
  174. package/pi.dev-src/pi-mono/ai/vitest.config.ts +0 -9
  175. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/antigravity-image-gen.ts +0 -418
  176. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/auto-commit-on-exit.ts +0 -49
  177. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/bash-spawn-hook.ts +0 -30
  178. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/bookmark.ts +0 -50
  179. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/built-in-tool-renderer.ts +0 -249
  180. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/claude-rules.ts +0 -86
  181. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/commands.ts +0 -72
  182. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/confirm-destructive.ts +0 -59
  183. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-compaction.ts +0 -127
  184. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-footer.ts +0 -64
  185. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-header.ts +0 -73
  186. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-anthropic/index.ts +0 -604
  187. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +0 -24
  188. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts +0 -349
  189. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts +0 -82
  190. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-qwen-cli/index.ts +0 -345
  191. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dirty-repo-guard.ts +0 -56
  192. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom/build.sh +0 -152
  193. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
  194. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-component.ts +0 -132
  195. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-engine.ts +0 -173
  196. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-keys.ts +0 -104
  197. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/index.ts +0 -74
  198. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/wad-finder.ts +0 -51
  199. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/SKILL.md +0 -8
  200. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/dynamic.json +0 -79
  201. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/dynamic.md +0 -5
  202. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/index.ts +0 -15
  203. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-tools.ts +0 -74
  204. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/event-bus.ts +0 -43
  205. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/file-trigger.ts +0 -41
  206. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/git-checkpoint.ts +0 -53
  207. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/github-issue-autocomplete.ts +0 -185
  208. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/handoff.ts +0 -153
  209. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/hello.ts +0 -26
  210. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/hidden-thinking-label.ts +0 -53
  211. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/inline-bash.ts +0 -94
  212. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/input-transform.ts +0 -43
  213. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/interactive-shell.ts +0 -196
  214. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/mac-system-theme.ts +0 -47
  215. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/message-renderer.ts +0 -59
  216. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/minimal-mode.ts +0 -426
  217. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/modal-editor.ts +0 -85
  218. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/model-status.ts +0 -31
  219. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/notify.ts +0 -55
  220. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/overlay-qa-tests.ts +0 -1348
  221. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/overlay-test.ts +0 -150
  222. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/permission-gate.ts +0 -34
  223. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/pirate.ts +0 -47
  224. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/plan-mode/index.ts +0 -340
  225. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/plan-mode/utils.ts +0 -168
  226. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/preset.ts +0 -430
  227. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/prompt-customizer.ts +0 -97
  228. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/protected-paths.ts +0 -30
  229. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/provider-payload.ts +0 -18
  230. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/qna.ts +0 -122
  231. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/question.ts +0 -264
  232. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/questionnaire.ts +0 -427
  233. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/rainbow-editor.ts +0 -88
  234. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/reload-runtime.ts +0 -37
  235. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/rpc-demo.ts +0 -118
  236. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/sandbox/index.ts +0 -321
  237. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/sandbox/package-lock.json +0 -92
  238. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/send-user-message.ts +0 -97
  239. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/session-name.ts +0 -27
  240. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/shutdown-command.ts +0 -63
  241. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/snake.ts +0 -343
  242. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/space-invaders.ts +0 -560
  243. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/ssh.ts +0 -220
  244. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/status-line.ts +0 -32
  245. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/structured-output.ts +0 -65
  246. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/planner.md +0 -37
  247. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/reviewer.md +0 -35
  248. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/scout.md +0 -50
  249. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/worker.md +0 -24
  250. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents.ts +0 -126
  251. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/index.ts +0 -987
  252. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/implement-and-review.md +0 -10
  253. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/implement.md +0 -10
  254. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/scout-and-plan.md +0 -9
  255. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/summarize.ts +0 -206
  256. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/system-prompt-header.ts +0 -17
  257. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tic-tac-toe.ts +0 -1008
  258. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/timed-confirm.ts +0 -70
  259. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/titlebar-spinner.ts +0 -58
  260. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/todo.ts +0 -297
  261. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tool-override.ts +0 -144
  262. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tools.ts +0 -141
  263. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/trigger-compact.ts +0 -50
  264. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/truncated-tool.ts +0 -195
  265. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/widget-placement.ts +0 -9
  266. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/with-deps/index.ts +0 -32
  267. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/with-deps/package-lock.json +0 -31
  268. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/working-indicator.ts +0 -123
  269. package/pi.dev-src/pi-mono/coding-agent/examples/extensions/working-message-test.ts +0 -25
  270. package/pi.dev-src/pi-mono/coding-agent/examples/rpc-extension-ui.ts +0 -632
  271. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/01-minimal.ts +0 -22
  272. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/02-custom-model.ts +0 -49
  273. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/03-custom-prompt.ts +0 -62
  274. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/04-skills.ts +0 -55
  275. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/05-tools.ts +0 -44
  276. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/06-extensions.ts +0 -90
  277. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/07-context-files.ts +0 -42
  278. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/08-prompt-templates.ts +0 -51
  279. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/09-api-keys-and-oauth.ts +0 -48
  280. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/10-settings.ts +0 -53
  281. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/11-sessions.ts +0 -48
  282. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/12-full-control.ts +0 -73
  283. package/pi.dev-src/pi-mono/coding-agent/examples/sdk/13-session-runtime.ts +0 -67
  284. package/pi.dev-src/pi-mono/coding-agent/scripts/migrate-sessions.sh +0 -93
  285. package/pi.dev-src/pi-mono/coding-agent/src/bun/cli.ts +0 -6
  286. package/pi.dev-src/pi-mono/coding-agent/src/bun/register-bedrock.ts +0 -4
  287. package/pi.dev-src/pi-mono/coding-agent/src/cli/args.ts +0 -335
  288. package/pi.dev-src/pi-mono/coding-agent/src/cli/config-selector.ts +0 -52
  289. package/pi.dev-src/pi-mono/coding-agent/src/cli/file-processor.ts +0 -100
  290. package/pi.dev-src/pi-mono/coding-agent/src/cli/initial-message.ts +0 -43
  291. package/pi.dev-src/pi-mono/coding-agent/src/cli/list-models.ts +0 -110
  292. package/pi.dev-src/pi-mono/coding-agent/src/cli/session-picker.ts +0 -52
  293. package/pi.dev-src/pi-mono/coding-agent/src/cli.ts +0 -17
  294. package/pi.dev-src/pi-mono/coding-agent/src/config.ts +0 -261
  295. package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session-runtime.ts +0 -394
  296. package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session-services.ts +0 -196
  297. package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session.ts +0 -3096
  298. package/pi.dev-src/pi-mono/coding-agent/src/core/auth-storage.ts +0 -493
  299. package/pi.dev-src/pi-mono/coding-agent/src/core/bash-executor.ts +0 -154
  300. package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/branch-summarization.ts +0 -355
  301. package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/compaction.ts +0 -839
  302. package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/index.ts +0 -7
  303. package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/utils.ts +0 -170
  304. package/pi.dev-src/pi-mono/coding-agent/src/core/defaults.ts +0 -3
  305. package/pi.dev-src/pi-mono/coding-agent/src/core/diagnostics.ts +0 -15
  306. package/pi.dev-src/pi-mono/coding-agent/src/core/event-bus.ts +0 -33
  307. package/pi.dev-src/pi-mono/coding-agent/src/core/exec.ts +0 -107
  308. package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/ansi-to-html.ts +0 -258
  309. package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/index.ts +0 -314
  310. package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.css +0 -1017
  311. package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.html +0 -55
  312. package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.js +0 -1770
  313. package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/tool-renderer.ts +0 -158
  314. package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/vendor/highlight.min.js +0 -1213
  315. package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/vendor/marked.min.js +0 -6
  316. package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/index.ts +0 -171
  317. package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/loader.ts +0 -606
  318. package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/runner.ts +0 -1019
  319. package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/types.ts +0 -1542
  320. package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/wrapper.ts +0 -30
  321. package/pi.dev-src/pi-mono/coding-agent/src/core/footer-data-provider.ts +0 -354
  322. package/pi.dev-src/pi-mono/coding-agent/src/core/index.ts +0 -77
  323. package/pi.dev-src/pi-mono/coding-agent/src/core/keybindings.ts +0 -370
  324. package/pi.dev-src/pi-mono/coding-agent/src/core/messages.ts +0 -195
  325. package/pi.dev-src/pi-mono/coding-agent/src/core/model-registry.ts +0 -858
  326. package/pi.dev-src/pi-mono/coding-agent/src/core/model-resolver.ts +0 -629
  327. package/pi.dev-src/pi-mono/coding-agent/src/core/output-guard.ts +0 -74
  328. package/pi.dev-src/pi-mono/coding-agent/src/core/package-manager.ts +0 -2408
  329. package/pi.dev-src/pi-mono/coding-agent/src/core/prompt-templates.ts +0 -296
  330. package/pi.dev-src/pi-mono/coding-agent/src/core/resolve-config-value.ts +0 -142
  331. package/pi.dev-src/pi-mono/coding-agent/src/core/resource-loader.ts +0 -917
  332. package/pi.dev-src/pi-mono/coding-agent/src/core/sdk.ts +0 -380
  333. package/pi.dev-src/pi-mono/coding-agent/src/core/session-cwd.ts +0 -59
  334. package/pi.dev-src/pi-mono/coding-agent/src/core/session-manager.ts +0 -1425
  335. package/pi.dev-src/pi-mono/coding-agent/src/core/settings-manager.ts +0 -999
  336. package/pi.dev-src/pi-mono/coding-agent/src/core/skills.ts +0 -508
  337. package/pi.dev-src/pi-mono/coding-agent/src/core/slash-commands.ts +0 -39
  338. package/pi.dev-src/pi-mono/coding-agent/src/core/source-info.ts +0 -40
  339. package/pi.dev-src/pi-mono/coding-agent/src/core/system-prompt.ts +0 -172
  340. package/pi.dev-src/pi-mono/coding-agent/src/core/telemetry.ts +0 -13
  341. package/pi.dev-src/pi-mono/coding-agent/src/core/timings.ts +0 -31
  342. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/bash.ts +0 -448
  343. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/edit-diff.ts +0 -445
  344. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/edit.ts +0 -487
  345. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/file-mutation-queue.ts +0 -39
  346. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/find.ts +0 -370
  347. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/grep.ts +0 -384
  348. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/index.ts +0 -196
  349. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/ls.ts +0 -229
  350. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/path-utils.ts +0 -94
  351. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/read.ts +0 -273
  352. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/render-utils.ts +0 -64
  353. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/tool-definition-wrapper.ts +0 -45
  354. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/truncate.ts +0 -265
  355. package/pi.dev-src/pi-mono/coding-agent/src/core/tools/write.ts +0 -281
  356. package/pi.dev-src/pi-mono/coding-agent/src/index.ts +0 -352
  357. package/pi.dev-src/pi-mono/coding-agent/src/main.ts +0 -731
  358. package/pi.dev-src/pi-mono/coding-agent/src/migrations.ts +0 -314
  359. package/pi.dev-src/pi-mono/coding-agent/src/modes/index.ts +0 -9
  360. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/assets/clankolas.png +0 -0
  361. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/armin.ts +0 -382
  362. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/assistant-message.ts +0 -147
  363. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/bash-execution.ts +0 -218
  364. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/bordered-loader.ts +0 -68
  365. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/branch-summary-message.ts +0 -58
  366. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/compaction-summary-message.ts +0 -59
  367. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/config-selector.ts +0 -592
  368. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/countdown-timer.ts +0 -38
  369. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/custom-editor.ts +0 -80
  370. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/custom-message.ts +0 -99
  371. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/daxnuts.ts +0 -164
  372. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/diff.ts +0 -147
  373. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/dynamic-border.ts +0 -25
  374. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/earendil-announcement.ts +0 -53
  375. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-editor.ts +0 -147
  376. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-input.ts +0 -87
  377. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-selector.ts +0 -107
  378. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/footer.ts +0 -220
  379. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/index.ts +0 -32
  380. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/keybinding-hints.ts +0 -24
  381. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/login-dialog.ts +0 -178
  382. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/model-selector.ts +0 -338
  383. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/oauth-selector.ts +0 -121
  384. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/scoped-models-selector.ts +0 -355
  385. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/session-selector-search.ts +0 -194
  386. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/session-selector.ts +0 -1026
  387. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/settings-selector.ts +0 -456
  388. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/show-images-selector.ts +0 -50
  389. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/skill-invocation-message.ts +0 -55
  390. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/theme-selector.ts +0 -67
  391. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/thinking-selector.ts +0 -74
  392. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/tool-execution.ts +0 -352
  393. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/tree-selector.ts +0 -1246
  394. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/user-message-selector.ts +0 -155
  395. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/user-message.ts +0 -35
  396. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/visual-truncate.ts +0 -50
  397. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/interactive-mode.ts +0 -5155
  398. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/dark.json +0 -85
  399. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/light.json +0 -84
  400. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/theme-schema.json +0 -335
  401. package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/theme.ts +0 -1141
  402. package/pi.dev-src/pi-mono/coding-agent/src/modes/print-mode.ts +0 -158
  403. package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/jsonl.ts +0 -58
  404. package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-client.ts +0 -515
  405. package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-mode.ts +0 -745
  406. package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-types.ts +0 -264
  407. package/pi.dev-src/pi-mono/coding-agent/src/package-manager-cli.ts +0 -270
  408. package/pi.dev-src/pi-mono/coding-agent/src/utils/changelog.ts +0 -99
  409. package/pi.dev-src/pi-mono/coding-agent/src/utils/child-process.ts +0 -86
  410. package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard-image.ts +0 -300
  411. package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard-native.ts +0 -22
  412. package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard.ts +0 -81
  413. package/pi.dev-src/pi-mono/coding-agent/src/utils/exif-orientation.ts +0 -183
  414. package/pi.dev-src/pi-mono/coding-agent/src/utils/frontmatter.ts +0 -39
  415. package/pi.dev-src/pi-mono/coding-agent/src/utils/fs-watch.ts +0 -30
  416. package/pi.dev-src/pi-mono/coding-agent/src/utils/git.ts +0 -192
  417. package/pi.dev-src/pi-mono/coding-agent/src/utils/image-convert.ts +0 -41
  418. package/pi.dev-src/pi-mono/coding-agent/src/utils/image-resize.ts +0 -176
  419. package/pi.dev-src/pi-mono/coding-agent/src/utils/mime.ts +0 -30
  420. package/pi.dev-src/pi-mono/coding-agent/src/utils/paths.ts +0 -20
  421. package/pi.dev-src/pi-mono/coding-agent/src/utils/photon.ts +0 -139
  422. package/pi.dev-src/pi-mono/coding-agent/src/utils/shell.ts +0 -210
  423. package/pi.dev-src/pi-mono/coding-agent/src/utils/sleep.ts +0 -18
  424. package/pi.dev-src/pi-mono/coding-agent/src/utils/tools-manager.ts +0 -287
  425. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-auto-compaction-queue.test.ts +0 -437
  426. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-branching.test.ts +0 -156
  427. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-compaction.test.ts +0 -208
  428. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-concurrent.test.ts +0 -618
  429. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-dynamic-provider.test.ts +0 -117
  430. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-dynamic-tools.test.ts +0 -182
  431. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-retry.test.ts +0 -318
  432. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-runtime-events.test.ts +0 -208
  433. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-stats.test.ts +0 -143
  434. package/pi.dev-src/pi-mono/coding-agent/test/agent-session-tree-navigation.test.ts +0 -323
  435. package/pi.dev-src/pi-mono/coding-agent/test/args.test.ts +0 -328
  436. package/pi.dev-src/pi-mono/coding-agent/test/assistant-message.test.ts +0 -57
  437. package/pi.dev-src/pi-mono/coding-agent/test/auth-storage.test.ts +0 -462
  438. package/pi.dev-src/pi-mono/coding-agent/test/bash-close-hang-windows.test.ts +0 -126
  439. package/pi.dev-src/pi-mono/coding-agent/test/bash-execution-width.test.ts +0 -80
  440. package/pi.dev-src/pi-mono/coding-agent/test/block-images.test.ts +0 -120
  441. package/pi.dev-src/pi-mono/coding-agent/test/clipboard-image-bmp-conversion.test.ts +0 -88
  442. package/pi.dev-src/pi-mono/coding-agent/test/clipboard-image.test.ts +0 -136
  443. package/pi.dev-src/pi-mono/coding-agent/test/compaction-extensions-example.test.ts +0 -66
  444. package/pi.dev-src/pi-mono/coding-agent/test/compaction-extensions.test.ts +0 -415
  445. package/pi.dev-src/pi-mono/coding-agent/test/compaction-serialization.test.ts +0 -79
  446. package/pi.dev-src/pi-mono/coding-agent/test/compaction-summary-reasoning.test.ts +0 -118
  447. package/pi.dev-src/pi-mono/coding-agent/test/compaction-thinking-model.test.ts +0 -223
  448. package/pi.dev-src/pi-mono/coding-agent/test/compaction.test.ts +0 -550
  449. package/pi.dev-src/pi-mono/coding-agent/test/config.test.ts +0 -30
  450. package/pi.dev-src/pi-mono/coding-agent/test/edit-tool-legacy-input.test.ts +0 -116
  451. package/pi.dev-src/pi-mono/coding-agent/test/edit-tool-no-full-redraw.test.ts +0 -235
  452. package/pi.dev-src/pi-mono/coding-agent/test/export-html-whitespace.test.ts +0 -12
  453. package/pi.dev-src/pi-mono/coding-agent/test/export-html-xss.test.ts +0 -28
  454. package/pi.dev-src/pi-mono/coding-agent/test/extensions-discovery.test.ts +0 -463
  455. package/pi.dev-src/pi-mono/coding-agent/test/extensions-input-event.test.ts +0 -112
  456. package/pi.dev-src/pi-mono/coding-agent/test/extensions-runner.test.ts +0 -805
  457. package/pi.dev-src/pi-mono/coding-agent/test/file-mutation-queue.test.ts +0 -163
  458. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/assistant-message-with-thinking-code.json +0 -33
  459. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/before-compaction.jsonl +0 -1003
  460. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/empty-agent/.gitkeep +0 -0
  461. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/empty-cwd/.gitkeep +0 -0
  462. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/large-session.jsonl +0 -1019
  463. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/consecutive-hyphens/SKILL.md +0 -8
  464. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/disable-model-invocation/SKILL.md +0 -9
  465. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/invalid-name-chars/SKILL.md +0 -8
  466. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/invalid-yaml/SKILL.md +0 -8
  467. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/long-name/SKILL.md +0 -8
  468. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/missing-description/SKILL.md +0 -7
  469. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/multiline-description/SKILL.md +0 -11
  470. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/name-mismatch/SKILL.md +0 -8
  471. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/nested/child-skill/SKILL.md +0 -8
  472. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/no-frontmatter/SKILL.md +0 -3
  473. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/root-skill-preferred/SKILL.md +0 -3
  474. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/root-skill-preferred/nested-child/SKILL.md +0 -3
  475. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/unknown-field/SKILL.md +0 -10
  476. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/valid-skill/SKILL.md +0 -8
  477. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills-collision/first/calendar/SKILL.md +0 -8
  478. package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills-collision/second/calendar/SKILL.md +0 -8
  479. package/pi.dev-src/pi-mono/coding-agent/test/footer-data-provider.test.ts +0 -265
  480. package/pi.dev-src/pi-mono/coding-agent/test/footer-width.test.ts +0 -115
  481. package/pi.dev-src/pi-mono/coding-agent/test/frontmatter.test.ts +0 -60
  482. package/pi.dev-src/pi-mono/coding-agent/test/git-ssh-url.test.ts +0 -78
  483. package/pi.dev-src/pi-mono/coding-agent/test/git-update.test.ts +0 -411
  484. package/pi.dev-src/pi-mono/coding-agent/test/image-processing.test.ts +0 -145
  485. package/pi.dev-src/pi-mono/coding-agent/test/image-resize-callers.test.ts +0 -53
  486. package/pi.dev-src/pi-mono/coding-agent/test/initial-message.test.ts +0 -48
  487. package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-anthropic-warning.test.ts +0 -73
  488. package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-clone-command.test.ts +0 -77
  489. package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-compaction.test.ts +0 -57
  490. package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-import-command.test.ts +0 -144
  491. package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-status.test.ts +0 -635
  492. package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-suspend.test.ts +0 -149
  493. package/pi.dev-src/pi-mono/coding-agent/test/keybindings-migration.test.ts +0 -88
  494. package/pi.dev-src/pi-mono/coding-agent/test/model-registry.test.ts +0 -1209
  495. package/pi.dev-src/pi-mono/coding-agent/test/model-resolver.test.ts +0 -436
  496. package/pi.dev-src/pi-mono/coding-agent/test/package-command-paths.test.ts +0 -144
  497. package/pi.dev-src/pi-mono/coding-agent/test/package-manager-ssh.test.ts +0 -97
  498. package/pi.dev-src/pi-mono/coding-agent/test/package-manager.test.ts +0 -1795
  499. package/pi.dev-src/pi-mono/coding-agent/test/path-utils.test.ts +0 -162
  500. package/pi.dev-src/pi-mono/coding-agent/test/plan-mode-utils.test.ts +0 -261
  501. package/pi.dev-src/pi-mono/coding-agent/test/print-mode.test.ts +0 -140
  502. package/pi.dev-src/pi-mono/coding-agent/test/prompt-templates.test.ts +0 -515
  503. package/pi.dev-src/pi-mono/coding-agent/test/resource-loader.test.ts +0 -576
  504. package/pi.dev-src/pi-mono/coding-agent/test/rpc-client-clone.test.ts +0 -29
  505. package/pi.dev-src/pi-mono/coding-agent/test/rpc-example.ts +0 -86
  506. package/pi.dev-src/pi-mono/coding-agent/test/rpc-jsonl.test.ts +0 -65
  507. package/pi.dev-src/pi-mono/coding-agent/test/rpc-prompt-response-semantics.test.ts +0 -285
  508. package/pi.dev-src/pi-mono/coding-agent/test/rpc.test.ts +0 -321
  509. package/pi.dev-src/pi-mono/coding-agent/test/sdk-codex-cache-probe-tool-loop.ts +0 -364
  510. package/pi.dev-src/pi-mono/coding-agent/test/sdk-openrouter-attribution.test.ts +0 -181
  511. package/pi.dev-src/pi-mono/coding-agent/test/sdk-session-manager.test.ts +0 -95
  512. package/pi.dev-src/pi-mono/coding-agent/test/sdk-skills.test.ts +0 -109
  513. package/pi.dev-src/pi-mono/coding-agent/test/session-cwd.test.ts +0 -91
  514. package/pi.dev-src/pi-mono/coding-agent/test/session-info-modified-timestamp.test.ts +0 -83
  515. package/pi.dev-src/pi-mono/coding-agent/test/session-manager/build-context.test.ts +0 -268
  516. package/pi.dev-src/pi-mono/coding-agent/test/session-manager/custom-session-id.test.ts +0 -109
  517. package/pi.dev-src/pi-mono/coding-agent/test/session-manager/file-operations.test.ts +0 -208
  518. package/pi.dev-src/pi-mono/coding-agent/test/session-manager/labels.test.ts +0 -198
  519. package/pi.dev-src/pi-mono/coding-agent/test/session-manager/migration.test.ts +0 -78
  520. package/pi.dev-src/pi-mono/coding-agent/test/session-manager/save-entry.test.ts +0 -55
  521. package/pi.dev-src/pi-mono/coding-agent/test/session-manager/tree-traversal.test.ts +0 -533
  522. package/pi.dev-src/pi-mono/coding-agent/test/session-selector-path-delete.test.ts +0 -315
  523. package/pi.dev-src/pi-mono/coding-agent/test/session-selector-rename.test.ts +0 -111
  524. package/pi.dev-src/pi-mono/coding-agent/test/session-selector-search.test.ts +0 -195
  525. package/pi.dev-src/pi-mono/coding-agent/test/settings-manager-bug.test.ts +0 -147
  526. package/pi.dev-src/pi-mono/coding-agent/test/settings-manager.test.ts +0 -319
  527. package/pi.dev-src/pi-mono/coding-agent/test/skills.test.ts +0 -432
  528. package/pi.dev-src/pi-mono/coding-agent/test/stdout-cleanliness.test.ts +0 -103
  529. package/pi.dev-src/pi-mono/coding-agent/test/streaming-render-debug.ts +0 -97
  530. package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-bash-persistence.test.ts +0 -242
  531. package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-compaction.test.ts +0 -343
  532. package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-model-extension.test.ts +0 -325
  533. package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-prompt.test.ts +0 -323
  534. package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-queue.test.ts +0 -422
  535. package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-retry-events.test.ts +0 -358
  536. package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-runtime.test.ts +0 -553
  537. package/pi.dev-src/pi-mono/coding-agent/test/suite/harness.ts +0 -208
  538. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2023-queued-slash-command-followup.test.ts +0 -80
  539. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2753-reload-stale-resource-settings.test.ts +0 -100
  540. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2781-skill-collision-precedence.test.ts +0 -120
  541. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts +0 -106
  542. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2835-tools-allowlist-filters-extension-tools.test.ts +0 -94
  543. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2860-replaced-session-context.test.ts +0 -274
  544. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3217-scoped-model-order.test.ts +0 -104
  545. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts +0 -72
  546. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts +0 -83
  547. package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3317-network-connection-lost-retry.test.ts +0 -33
  548. package/pi.dev-src/pi-mono/coding-agent/test/system-prompt.test.ts +0 -102
  549. package/pi.dev-src/pi-mono/coding-agent/test/test-harness.test.ts +0 -321
  550. package/pi.dev-src/pi-mono/coding-agent/test/test-harness.ts +0 -446
  551. package/pi.dev-src/pi-mono/coding-agent/test/test-theme-colors.ts +0 -246
  552. package/pi.dev-src/pi-mono/coding-agent/test/theme-export.test.ts +0 -104
  553. package/pi.dev-src/pi-mono/coding-agent/test/tool-execution-component.test.ts +0 -331
  554. package/pi.dev-src/pi-mono/coding-agent/test/tools.test.ts +0 -889
  555. package/pi.dev-src/pi-mono/coding-agent/test/tree-selector.test.ts +0 -655
  556. package/pi.dev-src/pi-mono/coding-agent/test/trigger-compact-extension.test.ts +0 -57
  557. package/pi.dev-src/pi-mono/coding-agent/test/truncate-to-width.test.ts +0 -81
  558. package/pi.dev-src/pi-mono/coding-agent/test/user-message.test.ts +0 -25
  559. package/pi.dev-src/pi-mono/coding-agent/test/utilities.ts +0 -316
  560. package/pi.dev-src/pi-mono/coding-agent/tsconfig.examples.json +0 -16
  561. package/pi.dev-src/pi-mono/coding-agent/vitest.config.ts +0 -26
  562. package/pi.dev-src/pi-mono/mom/dev.sh +0 -30
  563. package/pi.dev-src/pi-mono/mom/docker.sh +0 -95
  564. package/pi.dev-src/pi-mono/mom/scripts/migrate-timestamps.ts +0 -121
  565. package/pi.dev-src/pi-mono/mom/src/agent.ts +0 -882
  566. package/pi.dev-src/pi-mono/mom/src/context.ts +0 -180
  567. package/pi.dev-src/pi-mono/mom/src/download.ts +0 -117
  568. package/pi.dev-src/pi-mono/mom/src/events.ts +0 -442
  569. package/pi.dev-src/pi-mono/mom/src/fs-watch.ts +0 -30
  570. package/pi.dev-src/pi-mono/mom/src/log.ts +0 -271
  571. package/pi.dev-src/pi-mono/mom/src/main.ts +0 -367
  572. package/pi.dev-src/pi-mono/mom/src/sandbox.ts +0 -221
  573. package/pi.dev-src/pi-mono/mom/src/slack.ts +0 -623
  574. package/pi.dev-src/pi-mono/mom/src/store.ts +0 -234
  575. package/pi.dev-src/pi-mono/mom/src/tools/attach.ts +0 -47
  576. package/pi.dev-src/pi-mono/mom/src/tools/bash.ts +0 -97
  577. package/pi.dev-src/pi-mono/mom/src/tools/edit.ts +0 -165
  578. package/pi.dev-src/pi-mono/mom/src/tools/index.ts +0 -19
  579. package/pi.dev-src/pi-mono/mom/src/tools/read.ts +0 -159
  580. package/pi.dev-src/pi-mono/mom/src/tools/truncate.ts +0 -236
  581. package/pi.dev-src/pi-mono/mom/src/tools/write.ts +0 -45
  582. package/pi.dev-src/pi-mono/mom/test/events.test.ts +0 -50
  583. package/pi.dev-src/pi-mono/pods/scripts/model_run.sh +0 -83
  584. package/pi.dev-src/pi-mono/pods/scripts/pod_setup.sh +0 -336
  585. package/pi.dev-src/pi-mono/pods/src/cli.ts +0 -360
  586. package/pi.dev-src/pi-mono/pods/src/commands/models.ts +0 -753
  587. package/pi.dev-src/pi-mono/pods/src/commands/pods.ts +0 -205
  588. package/pi.dev-src/pi-mono/pods/src/commands/prompt.ts +0 -84
  589. package/pi.dev-src/pi-mono/pods/src/config.ts +0 -80
  590. package/pi.dev-src/pi-mono/pods/src/index.ts +0 -2
  591. package/pi.dev-src/pi-mono/pods/src/model-configs.ts +0 -111
  592. package/pi.dev-src/pi-mono/pods/src/models.json +0 -295
  593. package/pi.dev-src/pi-mono/pods/src/ssh.ts +0 -151
  594. package/pi.dev-src/pi-mono/pods/src/types.ts +0 -27
  595. package/pi.dev-src/pi-mono/tui/src/autocomplete.ts +0 -783
  596. package/pi.dev-src/pi-mono/tui/src/components/box.ts +0 -137
  597. package/pi.dev-src/pi-mono/tui/src/components/cancellable-loader.ts +0 -40
  598. package/pi.dev-src/pi-mono/tui/src/components/editor.ts +0 -2280
  599. package/pi.dev-src/pi-mono/tui/src/components/image.ts +0 -104
  600. package/pi.dev-src/pi-mono/tui/src/components/input.ts +0 -503
  601. package/pi.dev-src/pi-mono/tui/src/components/loader.ts +0 -86
  602. package/pi.dev-src/pi-mono/tui/src/components/markdown.ts +0 -852
  603. package/pi.dev-src/pi-mono/tui/src/components/select-list.ts +0 -229
  604. package/pi.dev-src/pi-mono/tui/src/components/settings-list.ts +0 -250
  605. package/pi.dev-src/pi-mono/tui/src/components/spacer.ts +0 -28
  606. package/pi.dev-src/pi-mono/tui/src/components/text.ts +0 -106
  607. package/pi.dev-src/pi-mono/tui/src/components/truncated-text.ts +0 -65
  608. package/pi.dev-src/pi-mono/tui/src/editor-component.ts +0 -74
  609. package/pi.dev-src/pi-mono/tui/src/fuzzy.ts +0 -133
  610. package/pi.dev-src/pi-mono/tui/src/index.ts +0 -106
  611. package/pi.dev-src/pi-mono/tui/src/keybindings.ts +0 -244
  612. package/pi.dev-src/pi-mono/tui/src/keys.ts +0 -1400
  613. package/pi.dev-src/pi-mono/tui/src/kill-ring.ts +0 -46
  614. package/pi.dev-src/pi-mono/tui/src/stdin-buffer.ts +0 -386
  615. package/pi.dev-src/pi-mono/tui/src/terminal-image.ts +0 -414
  616. package/pi.dev-src/pi-mono/tui/src/terminal.ts +0 -373
  617. package/pi.dev-src/pi-mono/tui/src/tui.ts +0 -1243
  618. package/pi.dev-src/pi-mono/tui/src/undo-stack.ts +0 -28
  619. package/pi.dev-src/pi-mono/tui/src/utils.ts +0 -1085
  620. package/pi.dev-src/pi-mono/tui/test/autocomplete.test.ts +0 -542
  621. package/pi.dev-src/pi-mono/tui/test/bug-regression-isimageline-startswith-bug.test.ts +0 -237
  622. package/pi.dev-src/pi-mono/tui/test/chat-simple.ts +0 -129
  623. package/pi.dev-src/pi-mono/tui/test/editor.test.ts +0 -3812
  624. package/pi.dev-src/pi-mono/tui/test/fuzzy.test.ts +0 -98
  625. package/pi.dev-src/pi-mono/tui/test/image-test.ts +0 -56
  626. package/pi.dev-src/pi-mono/tui/test/input.test.ts +0 -580
  627. package/pi.dev-src/pi-mono/tui/test/key-tester.ts +0 -105
  628. package/pi.dev-src/pi-mono/tui/test/keybindings.test.ts +0 -38
  629. package/pi.dev-src/pi-mono/tui/test/keys.test.ts +0 -614
  630. package/pi.dev-src/pi-mono/tui/test/markdown.test.ts +0 -1236
  631. package/pi.dev-src/pi-mono/tui/test/overlay-non-capturing.test.ts +0 -609
  632. package/pi.dev-src/pi-mono/tui/test/overlay-options.test.ts +0 -538
  633. package/pi.dev-src/pi-mono/tui/test/overlay-short-content.test.ts +0 -56
  634. package/pi.dev-src/pi-mono/tui/test/regression-regional-indicator-width.test.ts +0 -52
  635. package/pi.dev-src/pi-mono/tui/test/select-list.test.ts +0 -116
  636. package/pi.dev-src/pi-mono/tui/test/stdin-buffer.test.ts +0 -422
  637. package/pi.dev-src/pi-mono/tui/test/terminal-image.test.ts +0 -279
  638. package/pi.dev-src/pi-mono/tui/test/test-themes.ts +0 -38
  639. package/pi.dev-src/pi-mono/tui/test/truncate-to-width.test.ts +0 -62
  640. package/pi.dev-src/pi-mono/tui/test/truncated-text.test.ts +0 -129
  641. package/pi.dev-src/pi-mono/tui/test/tui-cell-size-input.test.ts +0 -81
  642. package/pi.dev-src/pi-mono/tui/test/tui-overlay-style-leak.test.ts +0 -72
  643. package/pi.dev-src/pi-mono/tui/test/tui-render.test.ts +0 -509
  644. package/pi.dev-src/pi-mono/tui/test/viewport-overwrite-repro.ts +0 -106
  645. package/pi.dev-src/pi-mono/tui/test/virtual-terminal.ts +0 -218
  646. package/pi.dev-src/pi-mono/tui/test/wrap-ansi.test.ts +0 -207
  647. package/pi.dev-src/pi-mono/tui/vitest.config.ts +0 -7
  648. package/pi.dev-src/pi-mono/web-ui/example/index.html +0 -13
  649. package/pi.dev-src/pi-mono/web-ui/example/src/app.css +0 -1
  650. package/pi.dev-src/pi-mono/web-ui/example/src/custom-messages.ts +0 -99
  651. package/pi.dev-src/pi-mono/web-ui/example/src/main.ts +0 -421
  652. package/pi.dev-src/pi-mono/web-ui/example/tsconfig.json +0 -23
  653. package/pi.dev-src/pi-mono/web-ui/example/vite.config.ts +0 -6
  654. package/pi.dev-src/pi-mono/web-ui/scripts/count-prompt-tokens.ts +0 -88
  655. package/pi.dev-src/pi-mono/web-ui/src/ChatPanel.ts +0 -209
  656. package/pi.dev-src/pi-mono/web-ui/src/app.css +0 -68
  657. package/pi.dev-src/pi-mono/web-ui/src/components/AgentInterface.ts +0 -403
  658. package/pi.dev-src/pi-mono/web-ui/src/components/AttachmentTile.ts +0 -107
  659. package/pi.dev-src/pi-mono/web-ui/src/components/ConsoleBlock.ts +0 -72
  660. package/pi.dev-src/pi-mono/web-ui/src/components/CustomProviderCard.ts +0 -100
  661. package/pi.dev-src/pi-mono/web-ui/src/components/ExpandableSection.ts +0 -46
  662. package/pi.dev-src/pi-mono/web-ui/src/components/Input.ts +0 -113
  663. package/pi.dev-src/pi-mono/web-ui/src/components/MessageEditor.ts +0 -405
  664. package/pi.dev-src/pi-mono/web-ui/src/components/MessageList.ts +0 -98
  665. package/pi.dev-src/pi-mono/web-ui/src/components/Messages.ts +0 -383
  666. package/pi.dev-src/pi-mono/web-ui/src/components/ProviderKeyInput.ts +0 -153
  667. package/pi.dev-src/pi-mono/web-ui/src/components/SandboxedIframe.ts +0 -626
  668. package/pi.dev-src/pi-mono/web-ui/src/components/StreamingMessageContainer.ts +0 -103
  669. package/pi.dev-src/pi-mono/web-ui/src/components/ThinkingBlock.ts +0 -43
  670. package/pi.dev-src/pi-mono/web-ui/src/components/message-renderer-registry.ts +0 -28
  671. package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/ArtifactsRuntimeProvider.ts +0 -220
  672. package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/AttachmentsRuntimeProvider.ts +0 -66
  673. package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/ConsoleRuntimeProvider.ts +0 -186
  674. package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/FileDownloadRuntimeProvider.ts +0 -110
  675. package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/RuntimeMessageBridge.ts +0 -82
  676. package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/RuntimeMessageRouter.ts +0 -216
  677. package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/SandboxRuntimeProvider.ts +0 -52
  678. package/pi.dev-src/pi-mono/web-ui/src/dialogs/ApiKeyPromptDialog.ts +0 -75
  679. package/pi.dev-src/pi-mono/web-ui/src/dialogs/AttachmentOverlay.ts +0 -636
  680. package/pi.dev-src/pi-mono/web-ui/src/dialogs/CustomProviderDialog.ts +0 -274
  681. package/pi.dev-src/pi-mono/web-ui/src/dialogs/ModelSelector.ts +0 -370
  682. package/pi.dev-src/pi-mono/web-ui/src/dialogs/PersistentStorageDialog.ts +0 -144
  683. package/pi.dev-src/pi-mono/web-ui/src/dialogs/ProvidersModelsTab.ts +0 -212
  684. package/pi.dev-src/pi-mono/web-ui/src/dialogs/SessionListDialog.ts +0 -150
  685. package/pi.dev-src/pi-mono/web-ui/src/dialogs/SettingsDialog.ts +0 -218
  686. package/pi.dev-src/pi-mono/web-ui/src/index.ts +0 -120
  687. package/pi.dev-src/pi-mono/web-ui/src/prompts/prompts.ts +0 -282
  688. package/pi.dev-src/pi-mono/web-ui/src/storage/app-storage.ts +0 -60
  689. package/pi.dev-src/pi-mono/web-ui/src/storage/backends/indexeddb-storage-backend.ts +0 -193
  690. package/pi.dev-src/pi-mono/web-ui/src/storage/store.ts +0 -33
  691. package/pi.dev-src/pi-mono/web-ui/src/storage/stores/custom-providers-store.ts +0 -62
  692. package/pi.dev-src/pi-mono/web-ui/src/storage/stores/provider-keys-store.ts +0 -33
  693. package/pi.dev-src/pi-mono/web-ui/src/storage/stores/sessions-store.ts +0 -136
  694. package/pi.dev-src/pi-mono/web-ui/src/storage/stores/settings-store.ts +0 -34
  695. package/pi.dev-src/pi-mono/web-ui/src/storage/types.ts +0 -206
  696. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ArtifactElement.ts +0 -14
  697. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ArtifactPill.ts +0 -26
  698. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/Console.ts +0 -93
  699. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/DocxArtifact.ts +0 -213
  700. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ExcelArtifact.ts +0 -231
  701. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/GenericArtifact.ts +0 -117
  702. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/HtmlArtifact.ts +0 -195
  703. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ImageArtifact.ts +0 -116
  704. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/MarkdownArtifact.ts +0 -82
  705. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/PdfArtifact.ts +0 -201
  706. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/SvgArtifact.ts +0 -119
  707. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/TextArtifact.ts +0 -148
  708. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/artifacts-tool-renderer.ts +0 -310
  709. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/artifacts.ts +0 -713
  710. package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/index.ts +0 -7
  711. package/pi.dev-src/pi-mono/web-ui/src/tools/extract-document.ts +0 -275
  712. package/pi.dev-src/pi-mono/web-ui/src/tools/index.ts +0 -46
  713. package/pi.dev-src/pi-mono/web-ui/src/tools/javascript-repl.ts +0 -293
  714. package/pi.dev-src/pi-mono/web-ui/src/tools/renderer-registry.ts +0 -130
  715. package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/BashRenderer.ts +0 -52
  716. package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/CalculateRenderer.ts +0 -58
  717. package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/DefaultRenderer.ts +0 -103
  718. package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/GetCurrentTimeRenderer.ts +0 -92
  719. package/pi.dev-src/pi-mono/web-ui/src/tools/types.ts +0 -15
  720. package/pi.dev-src/pi-mono/web-ui/src/utils/attachment-utils.ts +0 -472
  721. package/pi.dev-src/pi-mono/web-ui/src/utils/auth-token.ts +0 -22
  722. package/pi.dev-src/pi-mono/web-ui/src/utils/format.ts +0 -42
  723. package/pi.dev-src/pi-mono/web-ui/src/utils/i18n.ts +0 -653
  724. package/pi.dev-src/pi-mono/web-ui/src/utils/model-discovery.ts +0 -277
  725. package/pi.dev-src/pi-mono/web-ui/src/utils/proxy-utils.ts +0 -139
  726. package/pi.dev-src/pi-mono/web-ui/src/utils/test-sessions.ts +0 -2357
  727. package/pi.dev-src/pi-mono/web-ui/tsconfig.json +0 -7
  728. package/tests/attended-results-scenarios.ts +0 -648
  729. package/tests/attended-results.test.ts +0 -39
  730. package/tests/cli-command-option-parity.test.ts +0 -798
  731. package/tests/debug-extension-harness.test.ts +0 -466
  732. package/tests/extension-registration.test.ts +0 -6785
  733. package/tests/fixtures/fixture_c.c +0 -361
  734. package/tests/fixtures/fixture_cpp.cpp +0 -407
  735. package/tests/fixtures/fixture_csharp.cs +0 -411
  736. package/tests/fixtures/fixture_elixir.ex +0 -409
  737. package/tests/fixtures/fixture_go.go +0 -341
  738. package/tests/fixtures/fixture_haskell.hs +0 -250
  739. package/tests/fixtures/fixture_java.java +0 -430
  740. package/tests/fixtures/fixture_javascript.js +0 -383
  741. package/tests/fixtures/fixture_kotlin.kt +0 -451
  742. package/tests/fixtures/fixture_lua.lua +0 -276
  743. package/tests/fixtures/fixture_perl.pl +0 -310
  744. package/tests/fixtures/fixture_php.php +0 -433
  745. package/tests/fixtures/fixture_python.py +0 -502
  746. package/tests/fixtures/fixture_ruby.rb +0 -345
  747. package/tests/fixtures/fixture_rust.rs +0 -380
  748. package/tests/fixtures/fixture_scala.scala +0 -398
  749. package/tests/fixtures/fixture_shell.sh +0 -276
  750. package/tests/fixtures/fixture_swift.swift +0 -397
  751. package/tests/fixtures/fixture_typescript.ts +0 -434
  752. package/tests/fixtures/fixture_zig.zig +0 -295
  753. package/tests/fixtures_attended_results/project/compress-line-numbers.json +0 -5
  754. package/tests/fixtures_attended_results/project/compress.json +0 -5
  755. package/tests/fixtures_attended_results/project/enable-static-check-invalid-command.json +0 -5
  756. package/tests/fixtures_attended_results/project/enable-static-check-valid.json +0 -5
  757. package/tests/fixtures_attended_results/project/files-static-check.json +0 -5
  758. package/tests/fixtures_attended_results/project/find-line-numbers.json +0 -5
  759. package/tests/fixtures_attended_results/project/find.json +0 -5
  760. package/tests/fixtures_attended_results/project/get-base-path.json +0 -5
  761. package/tests/fixtures_attended_results/project/git-check-clean.json +0 -5
  762. package/tests/fixtures_attended_results/project/git-check-dirty.json +0 -5
  763. package/tests/fixtures_attended_results/project/git-path.json +0 -5
  764. package/tests/fixtures_attended_results/project/git-wt-create-invalid.json +0 -5
  765. package/tests/fixtures_attended_results/project/git-wt-create-valid.json +0 -5
  766. package/tests/fixtures_attended_results/project/git-wt-delete-nonexistent.json +0 -5
  767. package/tests/fixtures_attended_results/project/git-wt-delete-valid.json +0 -5
  768. package/tests/fixtures_attended_results/project/git-wt-name.json +0 -5
  769. package/tests/fixtures_attended_results/project/static-check.json +0 -5
  770. package/tests/fixtures_attended_results/project/summarize.json +0 -5
  771. package/tests/fixtures_attended_results/project/tokens.json +0 -5
  772. package/tests/fixtures_attended_results/standalone/files-compress/fixture_c.c.json +0 -5
  773. package/tests/fixtures_attended_results/standalone/files-compress/fixture_cpp.cpp.json +0 -5
  774. package/tests/fixtures_attended_results/standalone/files-compress/fixture_csharp.cs.json +0 -5
  775. package/tests/fixtures_attended_results/standalone/files-compress/fixture_elixir.ex.json +0 -5
  776. package/tests/fixtures_attended_results/standalone/files-compress/fixture_go.go.json +0 -5
  777. package/tests/fixtures_attended_results/standalone/files-compress/fixture_haskell.hs.json +0 -5
  778. package/tests/fixtures_attended_results/standalone/files-compress/fixture_java.java.json +0 -5
  779. package/tests/fixtures_attended_results/standalone/files-compress/fixture_javascript.js.json +0 -5
  780. package/tests/fixtures_attended_results/standalone/files-compress/fixture_kotlin.kt.json +0 -5
  781. package/tests/fixtures_attended_results/standalone/files-compress/fixture_lua.lua.json +0 -5
  782. package/tests/fixtures_attended_results/standalone/files-compress/fixture_perl.pl.json +0 -5
  783. package/tests/fixtures_attended_results/standalone/files-compress/fixture_php.php.json +0 -5
  784. package/tests/fixtures_attended_results/standalone/files-compress/fixture_python.py.json +0 -5
  785. package/tests/fixtures_attended_results/standalone/files-compress/fixture_ruby.rb.json +0 -5
  786. package/tests/fixtures_attended_results/standalone/files-compress/fixture_rust.rs.json +0 -5
  787. package/tests/fixtures_attended_results/standalone/files-compress/fixture_scala.scala.json +0 -5
  788. package/tests/fixtures_attended_results/standalone/files-compress/fixture_shell.sh.json +0 -5
  789. package/tests/fixtures_attended_results/standalone/files-compress/fixture_swift.swift.json +0 -5
  790. package/tests/fixtures_attended_results/standalone/files-compress/fixture_typescript.ts.json +0 -5
  791. package/tests/fixtures_attended_results/standalone/files-compress/fixture_zig.zig.json +0 -5
  792. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_c.c.json +0 -5
  793. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_cpp.cpp.json +0 -5
  794. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_csharp.cs.json +0 -5
  795. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_elixir.ex.json +0 -5
  796. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_go.go.json +0 -5
  797. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_haskell.hs.json +0 -5
  798. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_java.java.json +0 -5
  799. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_javascript.js.json +0 -5
  800. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_kotlin.kt.json +0 -5
  801. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_lua.lua.json +0 -5
  802. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_perl.pl.json +0 -5
  803. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_php.php.json +0 -5
  804. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_python.py.json +0 -5
  805. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_ruby.rb.json +0 -5
  806. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_rust.rs.json +0 -5
  807. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_scala.scala.json +0 -5
  808. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_shell.sh.json +0 -5
  809. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_swift.swift.json +0 -5
  810. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_typescript.ts.json +0 -5
  811. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_zig.zig.json +0 -5
  812. package/tests/fixtures_attended_results/standalone/files-find/fixture_c.c.json +0 -5
  813. package/tests/fixtures_attended_results/standalone/files-find/fixture_cpp.cpp.json +0 -5
  814. package/tests/fixtures_attended_results/standalone/files-find/fixture_csharp.cs.json +0 -5
  815. package/tests/fixtures_attended_results/standalone/files-find/fixture_elixir.ex.json +0 -5
  816. package/tests/fixtures_attended_results/standalone/files-find/fixture_go.go.json +0 -5
  817. package/tests/fixtures_attended_results/standalone/files-find/fixture_haskell.hs.json +0 -5
  818. package/tests/fixtures_attended_results/standalone/files-find/fixture_java.java.json +0 -5
  819. package/tests/fixtures_attended_results/standalone/files-find/fixture_javascript.js.json +0 -5
  820. package/tests/fixtures_attended_results/standalone/files-find/fixture_kotlin.kt.json +0 -5
  821. package/tests/fixtures_attended_results/standalone/files-find/fixture_lua.lua.json +0 -5
  822. package/tests/fixtures_attended_results/standalone/files-find/fixture_perl.pl.json +0 -5
  823. package/tests/fixtures_attended_results/standalone/files-find/fixture_php.php.json +0 -5
  824. package/tests/fixtures_attended_results/standalone/files-find/fixture_python.py.json +0 -5
  825. package/tests/fixtures_attended_results/standalone/files-find/fixture_ruby.rb.json +0 -5
  826. package/tests/fixtures_attended_results/standalone/files-find/fixture_rust.rs.json +0 -5
  827. package/tests/fixtures_attended_results/standalone/files-find/fixture_scala.scala.json +0 -5
  828. package/tests/fixtures_attended_results/standalone/files-find/fixture_shell.sh.json +0 -5
  829. package/tests/fixtures_attended_results/standalone/files-find/fixture_swift.swift.json +0 -5
  830. package/tests/fixtures_attended_results/standalone/files-find/fixture_typescript.ts.json +0 -5
  831. package/tests/fixtures_attended_results/standalone/files-find/fixture_zig.zig.json +0 -5
  832. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_c.c.json +0 -5
  833. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_cpp.cpp.json +0 -5
  834. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_csharp.cs.json +0 -5
  835. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_elixir.ex.json +0 -5
  836. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_go.go.json +0 -5
  837. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_haskell.hs.json +0 -5
  838. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_java.java.json +0 -5
  839. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_javascript.js.json +0 -5
  840. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_kotlin.kt.json +0 -5
  841. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_lua.lua.json +0 -5
  842. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_perl.pl.json +0 -5
  843. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_php.php.json +0 -5
  844. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_python.py.json +0 -5
  845. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_ruby.rb.json +0 -5
  846. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_rust.rs.json +0 -5
  847. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_scala.scala.json +0 -5
  848. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_shell.sh.json +0 -5
  849. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_swift.swift.json +0 -5
  850. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_typescript.ts.json +0 -5
  851. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_zig.zig.json +0 -5
  852. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_c.c.json +0 -5
  853. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_cpp.cpp.json +0 -5
  854. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_csharp.cs.json +0 -5
  855. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_elixir.ex.json +0 -5
  856. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_go.go.json +0 -5
  857. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_haskell.hs.json +0 -5
  858. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_java.java.json +0 -5
  859. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_javascript.js.json +0 -5
  860. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_kotlin.kt.json +0 -5
  861. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_lua.lua.json +0 -5
  862. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_perl.pl.json +0 -5
  863. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_php.php.json +0 -5
  864. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_python.py.json +0 -5
  865. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_ruby.rb.json +0 -5
  866. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_rust.rs.json +0 -5
  867. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_scala.scala.json +0 -5
  868. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_shell.sh.json +0 -5
  869. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_swift.swift.json +0 -5
  870. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_typescript.ts.json +0 -5
  871. package/tests/fixtures_attended_results/standalone/files-summarize/fixture_zig.zig.json +0 -5
  872. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_c.c.json +0 -5
  873. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_cpp.cpp.json +0 -5
  874. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_csharp.cs.json +0 -5
  875. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_elixir.ex.json +0 -5
  876. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_go.go.json +0 -5
  877. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_haskell.hs.json +0 -5
  878. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_java.java.json +0 -5
  879. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_javascript.js.json +0 -5
  880. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_kotlin.kt.json +0 -5
  881. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_lua.lua.json +0 -5
  882. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_perl.pl.json +0 -5
  883. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_php.php.json +0 -5
  884. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_python.py.json +0 -5
  885. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_ruby.rb.json +0 -5
  886. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_rust.rs.json +0 -5
  887. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_scala.scala.json +0 -5
  888. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_shell.sh.json +0 -5
  889. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_swift.swift.json +0 -5
  890. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_typescript.ts.json +0 -5
  891. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_zig.zig.json +0 -5
  892. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_c.c.json +0 -5
  893. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_cpp.cpp.json +0 -5
  894. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_csharp.cs.json +0 -5
  895. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_elixir.ex.json +0 -5
  896. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_go.go.json +0 -5
  897. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_haskell.hs.json +0 -5
  898. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_java.java.json +0 -5
  899. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_javascript.js.json +0 -5
  900. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_kotlin.kt.json +0 -5
  901. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_lua.lua.json +0 -5
  902. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_perl.pl.json +0 -5
  903. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_php.php.json +0 -5
  904. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_python.py.json +0 -5
  905. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_ruby.rb.json +0 -5
  906. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_rust.rs.json +0 -5
  907. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_scala.scala.json +0 -5
  908. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_shell.sh.json +0 -5
  909. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_swift.swift.json +0 -5
  910. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_typescript.ts.json +0 -5
  911. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_zig.zig.json +0 -5
  912. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_c.c.json +0 -5
  913. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_cpp.cpp.json +0 -5
  914. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_csharp.cs.json +0 -5
  915. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_elixir.ex.json +0 -5
  916. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_go.go.json +0 -5
  917. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_haskell.hs.json +0 -5
  918. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_java.java.json +0 -5
  919. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_javascript.js.json +0 -5
  920. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_kotlin.kt.json +0 -5
  921. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_lua.lua.json +0 -5
  922. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_perl.pl.json +0 -5
  923. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_php.php.json +0 -5
  924. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_python.py.json +0 -5
  925. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_ruby.rb.json +0 -5
  926. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_rust.rs.json +0 -5
  927. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_scala.scala.json +0 -5
  928. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_shell.sh.json +0 -5
  929. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_swift.swift.json +0 -5
  930. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_typescript.ts.json +0 -5
  931. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_zig.zig.json +0 -5
  932. package/tests/helpers.ts +0 -236
  933. package/tests/oracle-project.test.ts +0 -67
  934. package/tests/oracle-standalone.test.ts +0 -68
  935. package/tests/prompt-command-summary.test.ts +0 -36
  936. package/tests/prompt-rendering.test.ts +0 -103
  937. package/tests/python_oracle_stubs/tiktoken.py +0 -76
  938. package/tests/release-workflow.test.ts +0 -195
  939. package/tests/static-check-bundled.test.ts +0 -332
@@ -1,798 +0,0 @@
1
- /**
2
- * @file
3
- * @brief Verifies imported CLI command-option regressions against the TypeScript implementation.
4
- * @details Maintains an executable mapping from imported source regression identifiers to TypeScript parity targets, executes oracle-backed and direct-behavior command scenarios, and inspects persisted config side effects for CLI-only static-check enablement. Runtime is dominated by subprocess execution, git operations, and temporary filesystem setup. Side effects are limited to temporary files, temporary git repositories, and child processes.
5
- */
6
-
7
- import test, { type TestContext } from "node:test";
8
- import assert from "node:assert/strict";
9
- import fs from "node:fs";
10
- import path from "node:path";
11
- import { spawnSync } from "node:child_process";
12
- import {
13
- createStaticCheckLanguageConfig,
14
- DEFAULT_DOCS_DIR,
15
- getDefaultConfig,
16
- getProjectConfigPath,
17
- type UseReqConfig,
18
- } from "../src/core/config.js";
19
- import { detectLanguage } from "../src/core/generate-markdown.js";
20
- import { LANGUAGE_TAGS } from "../src/core/find-constructs.js";
21
- import {
22
- createTempDir,
23
- getFixtureFiles,
24
- initFixtureRepo,
25
- readGlobalConfigJson,
26
- readProjectConfigJson,
27
- runNodeCli,
28
- runPythonCli,
29
- saveFixtureConfigs,
30
- writeExecutableScript,
31
- } from "./helpers.js";
32
-
33
- const TAB_SENSITIVE_FIXTURE_NAME = "fixture_go.go";
34
-
35
- /**
36
- * @brief Describes one executable TypeScript regression target.
37
- * @details Each target exposes a stable identifier plus a runner that performs the imported command-option assertions. The interface is compile-time only and introduces no runtime side effects.
38
- */
39
- interface TargetParityCase {
40
- id: string;
41
- run: (t: TestContext) => Promise<void> | void;
42
- }
43
-
44
- /**
45
- * @brief Maps one imported source regression identifier to a TypeScript target identifier.
46
- * @details The mapping is curated to current TypeScript CLI scope so coverage verification can assert that every imported case has a maintained executable target. The interface is compile-time only and adds no runtime cost.
47
- */
48
- interface ImportedCaseMapping {
49
- sourceId: string;
50
- targetId: string;
51
- }
52
-
53
- /**
54
- * @brief Compares one Node CLI invocation with the Python oracle.
55
- * @details Executes both CLIs with the same arguments, cwd, and optional environment overrides, then asserts identical exit status, stdout, and stderr payloads. Runtime is dominated by subprocess execution. Side effects are limited to child-process creation.
56
- * @param[in] args {string[]} CLI arguments forwarded to both implementations.
57
- * @param[in] cwd {string} Working directory for both subprocesses.
58
- * @param[in] envOverrides {NodeJS.ProcessEnv | undefined} Optional shared environment overrides.
59
- * @return {void} No return value.
60
- */
61
- function assertCliParity(args: string[], cwd: string, envOverrides?: NodeJS.ProcessEnv): void {
62
- const node = runNodeCli(args, cwd, envOverrides);
63
- const python = runPythonCli(args, cwd, envOverrides);
64
- assert.equal(node.status, python.status, `exit code mismatch for ${args.join(" ")}`);
65
- assert.equal(node.stdout, python.stdout, `stdout mismatch for ${args.join(" ")}`);
66
- assert.equal(node.stderr, python.stderr, `stderr mismatch for ${args.join(" ")}`);
67
- }
68
-
69
- /**
70
- * @brief Creates one temporary file and registers recursive cleanup on the active test context.
71
- * @details Allocates a unique directory under the system temp root, writes the requested file content, and schedules directory removal after the enclosing test completes. Runtime is O(n) in content size. Side effects include directory creation and file writes.
72
- * @param[in] t {test.TestContext} Active Node test context used for cleanup.
73
- * @param[in] fileName {string} File name to create inside the temporary directory.
74
- * @param[in] content {string} UTF-8 file payload.
75
- * @return {string} Absolute file path.
76
- */
77
- function createScratchFile(t: TestContext, fileName: string, content: string): string {
78
- const tempDir = createTempDir("pi-usereq-cli-case-");
79
- t.after(() => {
80
- fs.rmSync(tempDir, { recursive: true, force: true });
81
- });
82
- const filePath = path.join(tempDir, fileName);
83
- fs.writeFileSync(filePath, content, "utf8");
84
- return filePath;
85
- }
86
-
87
- /**
88
- * @brief Creates a fixture git repository and registers cleanup on the active test context.
89
- * @details Delegates to `initFixtureRepo`, then removes the temporary repository after the enclosing test completes. Runtime is dominated by git initialization and fixture copying. Side effects include temporary repository creation and git subprocess execution.
90
- * @param[in] t {test.TestContext} Active Node test context used for cleanup.
91
- * @param[in] options {Parameters<typeof initFixtureRepo>[0]} Repository initialization options.
92
- * @return {{ projectBase: string; config: UseReqConfig }} Fixture project descriptor.
93
- */
94
- function createFixtureRepo(
95
- t: TestContext,
96
- options: Parameters<typeof initFixtureRepo>[0] = {},
97
- ): { projectBase: string; config: UseReqConfig } {
98
- const repo = initFixtureRepo(options);
99
- t.after(() => {
100
- fs.rmSync(repo.projectBase, { recursive: true, force: true });
101
- });
102
- return repo;
103
- }
104
-
105
- /**
106
- * @brief Resolves the broadest tag filter supported by one fixture file.
107
- * @details Detects the file language, loads the language-specific supported tag set, and returns a stable pipe-delimited filter string for `--files-find`. Runtime is O(k) in tag count. No side effects occur.
108
- * @param[in] filePath {string} Fixture file path.
109
- * @return {string} Pipe-delimited tag filter.
110
- */
111
- function getFixtureTagFilter(filePath: string): string {
112
- const language = detectLanguage(filePath);
113
- assert.ok(language, `unsupported fixture language for ${filePath}`);
114
- const tags = [...(LANGUAGE_TAGS[language!] ?? [])].sort();
115
- assert.ok(tags.length > 0, `missing LANGUAGE_TAGS entry for ${language}`);
116
- return tags.join("|");
117
- }
118
-
119
- /**
120
- * @brief Returns the persisted local static-check config for one language.
121
- * @details Reads the raw local project config JSON so tests can assert enable-flag persistence and local-scope shape exactly as written. Runtime is O(n) in config file size. Side effects are limited to filesystem reads.
122
- * @param[in] projectBase {string} Fixture project root.
123
- * @param[in] language {string} Canonical language key.
124
- * @return {Record<string, unknown> | undefined} Persisted local language config object when present.
125
- */
126
- function getStaticCheckLanguageConfig(projectBase: string, language: string): Record<string, unknown> | undefined {
127
- const payload = readProjectConfigJson(projectBase);
128
- const staticCheck = (payload["static-check"] ?? {}) as Record<string, Record<string, unknown>>;
129
- return staticCheck[language];
130
- }
131
-
132
- /**
133
- * @brief Returns the persisted global static-check entries for one language.
134
- * @details Reads the raw global config JSON and extracts the `checkers` array so tests can assert entry order and duplicate suppression exactly as written. Runtime is O(n) in config file size. Side effects are limited to filesystem reads.
135
- * @param[in] projectBase {string} Fixture project root retained for stable call-site shape.
136
- * @param[in] language {string} Canonical language key.
137
- * @return {Array<Record<string, unknown>>} Persisted global checker-entry array or an empty array.
138
- */
139
- function getStaticCheckEntries(projectBase: string, language: string): Array<Record<string, unknown>> {
140
- void projectBase;
141
- const payload = readGlobalConfigJson();
142
- const staticCheck = (payload["static-check"] ?? {}) as Record<string, Record<string, unknown>>;
143
- const languageConfig = staticCheck[language];
144
- return Array.isArray(languageConfig?.checkers)
145
- ? languageConfig.checkers as Array<Record<string, unknown>>
146
- : [];
147
- }
148
-
149
- /**
150
- * @brief Creates a command-logging shell script for static-check integration tests.
151
- * @details Writes an executable script that appends one tagged invocation record per run into the provided log file. Runtime is O(n) in script size. Side effects include file writes and permission changes.
152
- * @param[in] projectBase {string} Fixture project root containing the helper script.
153
- * @param[in] scriptName {string} Script file name.
154
- * @param[in] tag {string} Stable prefix emitted into the log file.
155
- * @param[in] logPath {string} Absolute log-file destination.
156
- * @return {string} Absolute script path.
157
- */
158
- function createLoggingScript(projectBase: string, scriptName: string, tag: string, logPath: string): string {
159
- const escapedLogPath = logPath.replace(/'/g, "'\\''");
160
- const escapedTag = tag.replace(/'/g, "'\\''");
161
- return writeExecutableScript(
162
- path.join(projectBase, "bin", scriptName),
163
- `#!/usr/bin/env bash
164
- set -eu
165
- printf '%s|%s\n' '${escapedTag}' "$*" >> '${escapedLogPath}'
166
- `,
167
- );
168
- }
169
-
170
- /**
171
- * @brief Lists the imported direct-CLI regression mappings maintained by this suite.
172
- * @details Each mapping identifies one imported source regression and the TypeScript target that executes its analogous behavior. The array is treated as normative test metadata for TST-014. Access complexity is O(1).
173
- */
174
- const IMPORTED_CASE_MAPPINGS: ImportedCaseMapping[] = [
175
- { sourceId: "test_files_commands.py::TestFilesTokensCommand::test_files_tokens_basic", targetId: "oracle::standalone::files-tokens-explicit-files" },
176
- { sourceId: "test_files_commands.py::TestFilesTokensCommand::test_files_tokens_no_base_required", targetId: "oracle::standalone::files-tokens-explicit-files" },
177
- { sourceId: "test_files_commands.py::TestFilesTokensCommand::test_files_tokens_skip_missing", targetId: "oracle::standalone::files-tokens-explicit-files" },
178
- { sourceId: "test_files_commands.py::TestFilesTokensCommand::test_files_tokens_all_missing_errors", targetId: "oracle::standalone::files-tokens-explicit-files" },
179
- { sourceId: "test_files_commands.py::TestFilesSummarizeCommand::test_files_summarize_basic", targetId: "direct::files-summarize-explicit-files" },
180
- { sourceId: "test_files_commands.py::TestFilesSummarizeCommand::test_files_summarize_no_base_required", targetId: "direct::files-summarize-explicit-files" },
181
- { sourceId: "test_files_commands.py::TestFilesSummarizeCommand::test_files_summarize_verbose_outputs_progress", targetId: "direct::files-summarize-verbose" },
182
- { sourceId: "test_files_commands.py::TestFilesCompressCommand::test_files_compress_basic", targetId: "oracle::standalone::files-compress-line-number-modes" },
183
- { sourceId: "test_files_commands.py::TestFilesCompressCommand::test_files_compress_no_base_required", targetId: "oracle::standalone::files-compress-line-number-modes" },
184
- { sourceId: "test_files_commands.py::TestFilesCompressCommand::test_files_compress_no_line_numbers_by_default", targetId: "oracle::standalone::files-compress-line-number-modes" },
185
- { sourceId: "test_files_commands.py::TestFilesCompressCommand::test_files_compress_enable_line_numbers", targetId: "oracle::standalone::files-compress-line-number-modes" },
186
- { sourceId: "test_files_commands.py::TestFilesCompressCommand::test_files_compress_verbose_outputs_progress", targetId: "oracle::standalone::files-compress-verbose" },
187
- { sourceId: "test_files_commands.py::TestSummarizeCommand::test_rejects_base", targetId: "direct::summarize-modes" },
188
- { sourceId: "test_files_commands.py::TestSummarizeCommand::test_summarize_with_here", targetId: "direct::summarize-modes" },
189
- { sourceId: "test_files_commands.py::TestSummarizeCommand::test_summarize_prepends_files_structure", targetId: "direct::summarize-modes" },
190
- { sourceId: "test_files_commands.py::TestSummarizeCommand::test_summarize_from_config", targetId: "direct::summarize-modes" },
191
- { sourceId: "test_files_commands.py::TestCompressCommand::test_rejects_base", targetId: "oracle::project::compress-modes" },
192
- { sourceId: "test_files_commands.py::TestCompressCommand::test_compress_with_here", targetId: "oracle::project::compress-modes" },
193
- { sourceId: "test_files_commands.py::TestCompressCommand::test_compress_no_line_numbers_by_default", targetId: "oracle::project::compress-modes" },
194
- { sourceId: "test_files_commands.py::TestCompressCommand::test_compress_enable_line_numbers", targetId: "oracle::project::compress-modes" },
195
- { sourceId: "test_files_commands.py::TestTokensCommand::test_tokens_rejects_base", targetId: "oracle::project::tokens-doc-selection" },
196
- { sourceId: "test_files_commands.py::TestTokensCommand::test_tokens_implies_here_and_uses_config_docs_dir", targetId: "oracle::project::tokens-doc-selection" },
197
- { sourceId: "test_files_commands.py::TestTokensCommand::test_tokens_counts_docs_files", targetId: "oracle::project::tokens-doc-selection" },
198
- { sourceId: "test_files_commands.py::TestFindCommandVerbose::test_files_find_default_suppresses_progress", targetId: "oracle::standalone::files-find-modes" },
199
- { sourceId: "test_files_commands.py::TestFindCommandVerbose::test_files_find_verbose_outputs_progress", targetId: "oracle::standalone::files-find-modes" },
200
- { sourceId: "test_files_commands.py::TestFindCommandVerbose::test_files_find_enable_line_numbers", targetId: "oracle::standalone::files-find-modes" },
201
- { sourceId: "test_files_commands.py::TestFindCommandVerbose::test_find_verbose_outputs_progress", targetId: "oracle::project::find-modes" },
202
- { sourceId: "test_files_commands.py::TestFindCommandVerbose::test_find_enable_line_numbers", targetId: "oracle::project::find-modes" },
203
- { sourceId: "test_files_commands.py::TestFindCommandVerbose::test_find_rejects_base", targetId: "oracle::project::find-modes" },
204
- { sourceId: "test_static_check.py::TestCLIIntegrationStaticCheck::test_main_dispatches_dummy", targetId: "oracle::standalone::test-static-check-dispatch" },
205
- { sourceId: "test_static_check.py::TestCLIIntegrationStaticCheck::test_main_dispatches_unknown_subcommand", targetId: "oracle::standalone::test-static-check-dispatch" },
206
- { sourceId: "test_static_check.py::TestCLIIntegrationStaticCheck::test_main_static_check_is_standalone", targetId: "oracle::standalone::test-static-check-dispatch" },
207
- { sourceId: "test_static_check.py::TestFilesStaticCheckCLI::test_files_static_check_dummy_language", targetId: "direct::files-static-check-matrix" },
208
- { sourceId: "test_static_check.py::TestFilesStaticCheckCLI::test_files_static_check_unknown_extension_skipped", targetId: "direct::files-static-check-matrix" },
209
- { sourceId: "test_static_check.py::TestFilesStaticCheckCLI::test_files_static_check_lang_not_in_config_skipped", targetId: "direct::files-static-check-matrix" },
210
- { sourceId: "test_static_check.py::TestFilesStaticCheckCLI::test_files_static_check_fail_propagates_exit_code", targetId: "direct::files-static-check-matrix" },
211
- { sourceId: "test_static_check.py::TestFilesStaticCheckCLI::test_files_static_check_multiple_files_mixed", targetId: "direct::files-static-check-matrix" },
212
- { sourceId: "test_static_check.py::TestFilesStaticCheckCLI::test_files_static_check_runs_all_entries_for_language_in_order", targetId: "direct::files-static-check-matrix" },
213
- { sourceId: "test_static_check.py::TestFilesStaticCheckCLI::test_files_static_check_command_invokes_params_before_filename", targetId: "direct::files-static-check-matrix" },
214
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_dummy_on_project_files", targetId: "direct::project-static-check-matrix" },
215
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_skips_unconfigured_language", targetId: "direct::project-static-check-matrix" },
216
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_fail_propagates_exit_code", targetId: "direct::project-static-check-matrix" },
217
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_no_source_files_raises", targetId: "direct::project-static-check-matrix" },
218
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_rejects_base", targetId: "direct::project-static-check-matrix" },
219
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_uses_cwd_as_project_base_with_here", targetId: "direct::project-static-check-matrix" },
220
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_runs_all_entries_for_language_in_order", targetId: "direct::project-static-check-matrix" },
221
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_command_invokes_params_before_filename", targetId: "direct::project-static-check-matrix" },
222
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_includes_tests_dir_files", targetId: "direct::project-static-check-matrix" },
223
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_ignores_tests_fixtures_subtree", targetId: "direct::project-static-check-matrix" },
224
- { sourceId: "test_static_check.py::TestStaticCheckProjectScan::test_static_check_tests_dir_only", targetId: "direct::project-static-check-matrix" },
225
- { sourceId: "test_static_check.py::TestEnableStaticCheckExecutableValidation::test_non_update_command_requires_executable_before_config_write", targetId: "direct::enable-static-check-invalid-command" },
226
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_saved_to_config_json", targetId: "direct::enable-static-check-persistence" },
227
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_command_saves_cmd_and_params", targetId: "direct::enable-static-check-persistence" },
228
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_multiple_langs", targetId: "direct::enable-static-check-persistence" },
229
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_preserves_multiple_entries_same_lang", targetId: "direct::enable-static-check-persistence" },
230
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_deduplicates_identical_entries_same_invocation", targetId: "direct::enable-static-check-deduplication" },
231
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_preserves_different_params_same_module", targetId: "direct::enable-static-check-deduplication" },
232
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_update_does_not_duplicate_existing_identical_entry", targetId: "direct::enable-static-check-merge" },
233
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_update_preserves_existing_tools_when_adding_new", targetId: "direct::enable-static-check-merge" },
234
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_update_adds_same_module_different_params", targetId: "direct::enable-static-check-merge" },
235
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_enable_static_check_update_ignores_non_identity_fields_for_duplicate_check", targetId: "direct::enable-static-check-merge" },
236
- { sourceId: "test_static_check.py::TestEnableStaticCheckConfigPersistence::test_non_update_enable_static_check_preserves_existing_entries", targetId: "direct::enable-static-check-merge" },
237
- ];
238
-
239
- /**
240
- * @brief Lists the executable TypeScript regression targets maintained by this suite.
241
- * @details Each target runs one or more command-option scenarios that collectively cover the imported mappings above. The array is executed by the Node test runner through nested subtests. Access complexity is O(1).
242
- */
243
- const TARGET_CASES: TargetParityCase[] = [
244
- {
245
- id: "oracle::standalone::files-tokens-explicit-files",
246
- run(t) {
247
- const filePath = createScratchFile(t, "sample.py", "def hello():\n return 'world'\n");
248
- const missingOne = path.join(path.dirname(filePath), "missing-one.py");
249
- const missingTwo = path.join(path.dirname(filePath), "missing-two.py");
250
- const basic = runNodeCli(["--files-tokens", filePath], path.dirname(filePath));
251
- assert.equal(basic.status, 0, basic.stderr);
252
- assert.match(basic.stdout, /Pack Summary/);
253
- assert.match(basic.stdout, /tokens/);
254
- const mixed = runNodeCli(["--files-tokens", missingOne, filePath], path.dirname(filePath));
255
- assert.equal(mixed.status, 0, mixed.stderr);
256
- assert.match(mixed.stderr, /Warning/);
257
- const missing = runNodeCli(["--files-tokens", missingOne, missingTwo], path.dirname(filePath));
258
- assert.notEqual(missing.status, 0);
259
- },
260
- },
261
- {
262
- id: "direct::files-summarize-explicit-files",
263
- run(t) {
264
- const filePath = createScratchFile(
265
- t,
266
- "sample.ts",
267
- "/**\n * @file\n * @brief Sample file.\n */\n\n/**\n * @brief Build sample value.\n * @param[in] input {string} Caller text.\n * @return {string} Upper-cased text.\n */\nexport function buildSample(input: string): string {\n return input.toUpperCase();\n}\n",
268
- );
269
- const cwd = path.dirname(filePath);
270
- const node = runNodeCli(["--files-summarize", filePath], cwd);
271
- const python = runPythonCli(["--files-summarize", filePath], cwd);
272
- assert.equal(node.status, python.status);
273
- assert.equal(node.stdout, python.stdout);
274
- assert.equal(node.stderr, python.stderr);
275
- assert.match(node.stdout, /# sample\.ts \| TypeScript/);
276
- assert.match(node.stdout, /## Definitions/);
277
- assert.match(node.stdout, /### fn `export function buildSample\(input: string\): string`/);
278
- },
279
- },
280
- {
281
- id: "direct::files-summarize-verbose",
282
- run(t) {
283
- const filePath = createScratchFile(t, "sample.py", "value = 1\n");
284
- const cwd = path.dirname(filePath);
285
- const node = runNodeCli(["--verbose", "--files-summarize", filePath], cwd);
286
- const python = runPythonCli(["--verbose", "--files-summarize", filePath], cwd);
287
- assert.equal(node.status, python.status);
288
- assert.equal(node.stdout, python.stdout);
289
- assert.equal(node.stderr, python.stderr);
290
- assert.match(node.stderr, /OK/);
291
- },
292
- },
293
- {
294
- id: "oracle::standalone::files-compress-line-number-modes",
295
- run(t) {
296
- const filePath = createScratchFile(t, "sample.py", "# comment\nvalue = 1\n");
297
- const cwd = path.dirname(filePath);
298
- assertCliParity(["--files-compress", filePath], cwd);
299
- assertCliParity(["--files-compress", filePath, "--enable-line-numbers"], cwd);
300
- },
301
- },
302
- {
303
- id: "oracle::standalone::files-compress-verbose",
304
- run(t) {
305
- const filePath = createScratchFile(t, "sample.py", "value = 1\n");
306
- assertCliParity(["--verbose", "--files-compress", filePath], path.dirname(filePath));
307
- },
308
- },
309
- {
310
- id: "direct::summarize-modes",
311
- run(t) {
312
- const { projectBase } = createFixtureRepo(t, { fixtures: [] });
313
- fs.writeFileSync(path.join(projectBase, "src", "alpha.ts"), "export const ALPHA = 1;\n", "utf8");
314
- fs.mkdirSync(path.join(projectBase, "src", "nested"), { recursive: true });
315
- fs.writeFileSync(path.join(projectBase, "src", "nested", "beta.ts"), "export function beta(): number {\n return 2;\n}\n", "utf8");
316
-
317
- const directNode = runNodeCli(["--summarize"], projectBase);
318
- const directPython = runPythonCli(["--summarize"], projectBase);
319
- assert.equal(directNode.status, directPython.status);
320
- assert.equal(directNode.stdout, directPython.stdout);
321
- assert.equal(directNode.stderr, directPython.stderr);
322
- assert.match(directNode.stdout, /# Files Structure/);
323
- assert.match(directNode.stdout, /src\/nested\/beta\.ts/);
324
- assert.match(directNode.stdout, /# beta\.ts \| TypeScript/);
325
-
326
- const hereNode = runNodeCli(["--here", "--summarize"], projectBase);
327
- const herePython = runPythonCli(["--here", "--summarize"], projectBase);
328
- assert.equal(hereNode.status, herePython.status);
329
- assert.equal(hereNode.stdout, herePython.stdout);
330
- assert.equal(hereNode.stderr, herePython.stderr);
331
-
332
- const baseRejected = runNodeCli(["--base", projectBase, "--summarize"], projectBase);
333
- assert.notEqual(baseRejected.status, 0);
334
- assert.match(baseRejected.stderr, /do not allow --base/);
335
- },
336
- },
337
- {
338
- id: "oracle::project::compress-modes",
339
- run(t) {
340
- const fixtures = getFixtureFiles().filter((fixture) => path.basename(fixture) !== TAB_SENSITIVE_FIXTURE_NAME);
341
- const { projectBase } = createFixtureRepo(t, { fixtures });
342
- assertCliParity(["--compress"], projectBase);
343
- assertCliParity(["--here", "--compress"], projectBase);
344
- assertCliParity(["--compress", "--enable-line-numbers"], projectBase);
345
- const rejected = runNodeCli(["--base", projectBase, "--compress"], projectBase);
346
- assert.notEqual(rejected.status, 0);
347
- assert.match(rejected.stderr, /do not allow --base/);
348
- },
349
- },
350
- {
351
- id: "oracle::project::tokens-doc-selection",
352
- run(t) {
353
- const { projectBase, config } = createFixtureRepo(t, {
354
- fixtures: [],
355
- docs: {
356
- "REQUIREMENTS.md": "# Requirements\n",
357
- "WORKFLOW.md": "# Workflow\n",
358
- "REFERENCES.md": "# References\n",
359
- },
360
- });
361
- fs.mkdirSync(path.join(projectBase, "docs"), { recursive: true });
362
- fs.writeFileSync(path.join(projectBase, "docs", "REQUIREMENTS.md"), "# Alt Requirements\n", "utf8");
363
- fs.writeFileSync(path.join(projectBase, "docs", "WORKFLOW.md"), "# Alt Workflow\n", "utf8");
364
- fs.writeFileSync(path.join(projectBase, "docs", "REFERENCES.md"), "# Alt References\n", "utf8");
365
- fs.writeFileSync(path.join(projectBase, "docs", "IGNORED.md"), "# Ignored\n", "utf8");
366
- const updatedConfig: UseReqConfig = { ...config, "docs-dir": "docs" };
367
- saveFixtureConfigs(projectBase, updatedConfig);
368
- assertCliParity(["--tokens"], projectBase);
369
- const rejected = runNodeCli(["--base", projectBase, "--tokens"], projectBase);
370
- assert.notEqual(rejected.status, 0);
371
- assert.match(rejected.stderr, /do not allow --base/);
372
- },
373
- },
374
- {
375
- id: "oracle::standalone::files-find-modes",
376
- run(t) {
377
- const filePath = createScratchFile(t, "sample.py", "def foo():\n return 1\n");
378
- const cwd = path.dirname(filePath);
379
- const basic = runNodeCli(["--files-find", "FUNCTION", "foo", filePath], cwd);
380
- assert.equal(basic.status, 0, basic.stderr);
381
- assert.equal(basic.stderr, "");
382
- assert.match(basic.stdout, /### FUNCTION: `foo`/);
383
- const verbose = runNodeCli(["--verbose", "--files-find", "FUNCTION", "foo", filePath], cwd);
384
- assert.equal(verbose.status, 0, verbose.stderr);
385
- assert.match(verbose.stderr, /Found:/);
386
- const numbered = runNodeCli(["--files-find", "FUNCTION", "foo", filePath, "--enable-line-numbers"], cwd);
387
- assert.equal(numbered.status, 0, numbered.stderr);
388
- assert.match(numbered.stdout, /1: def foo\(\):/);
389
- },
390
- },
391
- {
392
- id: "oracle::project::find-modes",
393
- run(t) {
394
- const { projectBase } = createFixtureRepo(t, { fixtures: [] });
395
- fs.writeFileSync(path.join(projectBase, "src", "find_target.py"), "def foo():\n return 1\n", "utf8");
396
- const basic = runNodeCli(["--find", "FUNCTION", "foo"], projectBase);
397
- assert.equal(basic.status, 0, basic.stderr);
398
- assert.match(basic.stdout, /### FUNCTION: `foo`/);
399
- const verbose = runNodeCli(["--verbose", "--find", "FUNCTION", "foo"], projectBase);
400
- assert.equal(verbose.status, 0, verbose.stderr);
401
- assert.match(verbose.stderr, /Found:/);
402
- const numbered = runNodeCli(["--find", "FUNCTION", "foo", "--enable-line-numbers"], projectBase);
403
- assert.equal(numbered.status, 0, numbered.stderr);
404
- assert.match(numbered.stdout, /1: def foo\(\):/);
405
- const rejected = runNodeCli(["--base", projectBase, "--find", "FUNCTION", "foo"], projectBase);
406
- assert.notEqual(rejected.status, 0);
407
- },
408
- },
409
- {
410
- id: "oracle::standalone::test-static-check-dispatch",
411
- run(t) {
412
- const filePath = createScratchFile(t, "sample.py", "value = 1\n");
413
- const cwd = path.dirname(filePath);
414
- const dummy = runNodeCli(["--test-static-check", "dummy", filePath], cwd);
415
- assert.equal(dummy.status, 0, dummy.stderr);
416
- const bad = runNodeCli(["--test-static-check", "badcmd"], cwd);
417
- assert.notEqual(bad.status, 0);
418
- assert.match(bad.stderr, /unknown --test-static-check subcommand/i);
419
- },
420
- },
421
- {
422
- id: "direct::files-static-check-matrix",
423
- run(t) {
424
- const { projectBase, config } = createFixtureRepo(t, { fixtures: [] });
425
- const logPath = path.join(projectBase, "files-static-check.log");
426
- const firstScript = createLoggingScript(projectBase, "check-first.sh", "first", logPath);
427
- const secondScript = createLoggingScript(projectBase, "check-second.sh", "second", logPath);
428
- const jsFile = path.join(projectBase, "src", "sample.js");
429
- fs.writeFileSync(jsFile, "const value = 1;\n", "utf8");
430
- const updatedConfig: UseReqConfig = {
431
- ...config,
432
- "static-check": {
433
- JavaScript: createStaticCheckLanguageConfig([
434
- { module: "Command", cmd: firstScript },
435
- { module: "Command", cmd: secondScript, params: ["--check"] },
436
- ], "enable"),
437
- Python: createStaticCheckLanguageConfig([{ module: "Dummy" }], "enable"),
438
- },
439
- };
440
- saveFixtureConfigs(projectBase, updatedConfig);
441
-
442
- const success = runNodeCli(["--files-static-check", jsFile], projectBase);
443
- assert.equal(success.status, 0, success.stderr);
444
- const logLines = fs.readFileSync(logPath, "utf8").trim().split(/\r?\n/);
445
- assert.deepEqual(logLines, [
446
- `first|${path.resolve(jsFile)}`,
447
- `second|--check ${path.resolve(jsFile)}`,
448
- ]);
449
-
450
- fs.truncateSync(logPath, 0);
451
- saveFixtureConfigs(projectBase, {
452
- ...updatedConfig,
453
- "static-check": {
454
- JavaScript: createStaticCheckLanguageConfig([
455
- { module: "Command", cmd: firstScript },
456
- { module: "Command", cmd: secondScript, params: ["--check"] },
457
- ], "disable"),
458
- },
459
- });
460
- const disabled = runNodeCli(["--files-static-check", jsFile], projectBase);
461
- assert.equal(disabled.status, 0, disabled.stderr);
462
- assert.equal(disabled.stdout, "");
463
- assert.equal(fs.readFileSync(logPath, "utf8"), "");
464
-
465
- const unknownExtension = path.join(projectBase, "src", "ignored.txt");
466
- fs.writeFileSync(unknownExtension, "ignored\n", "utf8");
467
- const skipped = runNodeCli(["--files-static-check", unknownExtension], projectBase);
468
- assert.equal(skipped.status, 0, skipped.stderr);
469
- assert.equal(skipped.stdout, "");
470
-
471
- const unconfiguredLanguage = path.join(projectBase, "src", "program.c");
472
- fs.writeFileSync(unconfiguredLanguage, "int main(void){return 0;}\n", "utf8");
473
- const notConfigured = runNodeCli(["--files-static-check", unconfiguredLanguage], projectBase);
474
- assert.equal(notConfigured.status, 0, notConfigured.stderr);
475
- assert.equal(notConfigured.stdout, "");
476
-
477
- const failingScript = writeExecutableScript(
478
- path.join(projectBase, "bin", "check-fail.sh"),
479
- "#!/usr/bin/env bash\nset -eu\nprintf '%s\n' 'failing evidence'\nexit 1\n",
480
- );
481
- saveFixtureConfigs(projectBase, {
482
- ...updatedConfig,
483
- "static-check": {
484
- JavaScript: createStaticCheckLanguageConfig([
485
- { module: "Command", cmd: failingScript },
486
- ], "enable"),
487
- },
488
- });
489
- const failing = runNodeCli(["--files-static-check", jsFile], projectBase);
490
- assert.equal(failing.status, 1);
491
- assert.match(failing.stdout, /failing evidence/);
492
- },
493
- },
494
- {
495
- id: "direct::project-static-check-matrix",
496
- run(t) {
497
- const { projectBase, config } = createFixtureRepo(t, { fixtures: [] });
498
- const logPath = path.join(projectBase, "project-static-check.log");
499
- const logScript = createLoggingScript(projectBase, "collect.sh", "collect", logPath);
500
- fs.mkdirSync(path.join(projectBase, "tests", "fixtures"), { recursive: true });
501
- const srcFile = path.join(projectBase, "src", "main.py");
502
- const testFile = path.join(projectBase, "tests", "test_main.py");
503
- const fixtureFile = path.join(projectBase, "tests", "fixtures", "fixture_c.c");
504
- fs.writeFileSync(srcFile, "print('src')\n", "utf8");
505
- fs.writeFileSync(testFile, "print('test')\n", "utf8");
506
- fs.writeFileSync(fixtureFile, "int main(void){return 0;}\n", "utf8");
507
- saveFixtureConfigs(projectBase, {
508
- ...config,
509
- "static-check": {
510
- Python: createStaticCheckLanguageConfig([
511
- { module: "Command", cmd: logScript },
512
- ], "enable"),
513
- C: createStaticCheckLanguageConfig([
514
- { module: "Command", cmd: logScript },
515
- ], "enable"),
516
- },
517
- });
518
-
519
- const success = runNodeCli(["--static-check"], projectBase);
520
- assert.equal(success.status, 0, success.stderr);
521
- const dispatched = fs.readFileSync(logPath, "utf8").trim().split(/\r?\n/);
522
- assert.ok(dispatched.some((line) => line.endsWith(`|${path.resolve(srcFile)}`)));
523
- assert.ok(dispatched.some((line) => line.endsWith(`|${path.resolve(testFile)}`)));
524
- assert.ok(!dispatched.some((line) => line.endsWith(`|${path.resolve(fixtureFile)}`)));
525
-
526
- fs.truncateSync(logPath, 0);
527
- saveFixtureConfigs(projectBase, {
528
- ...config,
529
- "static-check": {
530
- Python: createStaticCheckLanguageConfig([{ module: "Dummy" }], "enable"),
531
- },
532
- });
533
- const skipped = runNodeCli(["--static-check"], projectBase);
534
- assert.equal(skipped.status, 0, skipped.stderr);
535
- assert.equal(skipped.stdout, "");
536
-
537
- const baseRejected = runNodeCli(["--base", projectBase, "--static-check"], projectBase);
538
- assert.notEqual(baseRejected.status, 0);
539
-
540
- fs.truncateSync(logPath, 0);
541
- const orderedLogPath = path.join(projectBase, "project-static-check-ordered.log");
542
- const firstOrderedScript = createLoggingScript(projectBase, "ordered-first.sh", "first", orderedLogPath);
543
- const secondOrderedScript = createLoggingScript(projectBase, "ordered-second.sh", "second", orderedLogPath);
544
- saveFixtureConfigs(projectBase, {
545
- ...config,
546
- "static-check": {
547
- Python: createStaticCheckLanguageConfig([
548
- { module: "Command", cmd: firstOrderedScript },
549
- { module: "Command", cmd: secondOrderedScript, params: ["--check"] },
550
- ], "enable"),
551
- },
552
- });
553
- const ordered = runNodeCli(["--static-check"], projectBase);
554
- assert.equal(ordered.status, 0, ordered.stderr);
555
- const orderedLines = fs.readFileSync(orderedLogPath, "utf8").trim().split(/\r?\n/);
556
- assert.deepEqual(orderedLines, [
557
- `first|${path.resolve(srcFile)}`,
558
- `second|--check ${path.resolve(srcFile)}`,
559
- `first|${path.resolve(testFile)}`,
560
- `second|--check ${path.resolve(testFile)}`,
561
- ]);
562
-
563
- const failingScript = writeExecutableScript(
564
- path.join(projectBase, "bin", "collect-fail.sh"),
565
- "#!/usr/bin/env bash\nset -eu\nprintf '%s\n' 'failing evidence'\nexit 1\n",
566
- );
567
- saveFixtureConfigs(projectBase, {
568
- ...config,
569
- "static-check": {
570
- Python: createStaticCheckLanguageConfig([
571
- { module: "Command", cmd: failingScript },
572
- ], "enable"),
573
- },
574
- });
575
- const failing = runNodeCli(["--static-check"], projectBase);
576
- assert.equal(failing.status, 1);
577
- assert.match(failing.stdout, /failing evidence/);
578
-
579
- const emptyRepo = createFixtureRepo(t, { fixtures: [] });
580
- fs.writeFileSync(path.join(emptyRepo.projectBase, "src", "README.txt"), "not source\n", "utf8");
581
- saveFixtureConfigs(emptyRepo.projectBase, {
582
- ...emptyRepo.config,
583
- "static-check": {
584
- Python: createStaticCheckLanguageConfig([{ module: "Dummy" }], "enable"),
585
- },
586
- });
587
- const noSource = runNodeCli(["--static-check"], emptyRepo.projectBase);
588
- assert.equal(noSource.status, 1);
589
- assert.match(noSource.stderr, /no source files found/i);
590
- },
591
- },
592
- {
593
- id: "direct::enable-static-check-invalid-command",
594
- run(t) {
595
- const projectBase = createTempDir("pi-usereq-enable-static-check-invalid-");
596
- t.after(() => {
597
- fs.rmSync(projectBase, { recursive: true, force: true });
598
- });
599
- fs.mkdirSync(path.join(projectBase, "src"), { recursive: true });
600
- fs.mkdirSync(path.join(projectBase, "tests"), { recursive: true });
601
- fs.mkdirSync(path.join(projectBase, ...DEFAULT_DOCS_DIR.split("/")), { recursive: true });
602
- const originalGlobalConfig = structuredClone(readGlobalConfigJson());
603
- const result = runNodeCli(
604
- ["--base", projectBase, "--enable-static-check", "C=Command,nonexistent_tool_xyz_12345"],
605
- projectBase,
606
- );
607
- assert.equal(result.status, 1);
608
- assert.match(result.stderr, /not an executable program/);
609
- assert.ok(!fs.existsSync(getProjectConfigPath(projectBase)));
610
- assert.deepEqual(readGlobalConfigJson(), originalGlobalConfig);
611
-
612
- const removedModule = runNodeCli(
613
- ["--base", projectBase, "--enable-static-check", "Python=Ruff"],
614
- projectBase,
615
- );
616
- assert.equal(removedModule.status, 1);
617
- assert.match(removedModule.stderr, /unknown module/i);
618
- assert.ok(!fs.existsSync(getProjectConfigPath(projectBase)));
619
- assert.deepEqual(readGlobalConfigJson(), originalGlobalConfig);
620
- },
621
- },
622
- {
623
- id: "direct::enable-static-check-persistence",
624
- run(t) {
625
- const { projectBase } = createFixtureRepo(t, { fixtures: [] });
626
- const persisted = runNodeCli(
627
- [
628
- "--base",
629
- projectBase,
630
- "--enable-static-check",
631
- "Python=Command,git,--version",
632
- "--enable-static-check",
633
- "C=Command,git,--version",
634
- "--enable-static-check",
635
- "Python=Command,git,--help",
636
- ],
637
- projectBase,
638
- );
639
- assert.equal(persisted.status, 0, persisted.stderr);
640
- const defaultConfig = getDefaultConfig(projectBase);
641
- assert.equal(getStaticCheckLanguageConfig(projectBase, "Python")?.enabled, "enable");
642
- assert.equal(getStaticCheckLanguageConfig(projectBase, "C")?.enabled, "enable");
643
- assert.deepEqual(getStaticCheckEntries(projectBase, "Python"), [
644
- ...defaultConfig["static-check"].Python.checkers,
645
- { module: "Command", cmd: "git", params: ["--version"] },
646
- { module: "Command", cmd: "git", params: ["--help"] },
647
- ]);
648
- assert.deepEqual(getStaticCheckEntries(projectBase, "C"), [
649
- ...defaultConfig["static-check"].C.checkers,
650
- { module: "Command", cmd: "git", params: ["--version"] },
651
- ]);
652
- },
653
- },
654
- {
655
- id: "direct::enable-static-check-deduplication",
656
- run(t) {
657
- const { projectBase } = createFixtureRepo(t, { fixtures: [] });
658
- const result = runNodeCli(
659
- [
660
- "--base",
661
- projectBase,
662
- "--enable-static-check",
663
- "Python=Command,git,--version",
664
- "--enable-static-check",
665
- "Python=Command,git,--version",
666
- "--enable-static-check",
667
- "C=Command,git,--version",
668
- "--enable-static-check",
669
- "C=Command,git,--help",
670
- ],
671
- projectBase,
672
- );
673
- assert.equal(result.status, 0, result.stderr);
674
- const defaultConfig = getDefaultConfig(projectBase);
675
- assert.equal(getStaticCheckLanguageConfig(projectBase, "Python")?.enabled, "enable");
676
- assert.equal(getStaticCheckLanguageConfig(projectBase, "C")?.enabled, "enable");
677
- assert.deepEqual(getStaticCheckEntries(projectBase, "Python"), [
678
- ...defaultConfig["static-check"].Python.checkers,
679
- { module: "Command", cmd: "git", params: ["--version"] },
680
- ]);
681
- assert.deepEqual(getStaticCheckEntries(projectBase, "C"), [
682
- ...defaultConfig["static-check"].C.checkers,
683
- { module: "Command", cmd: "git", params: ["--version"] },
684
- { module: "Command", cmd: "git", params: ["--help"] },
685
- ]);
686
- },
687
- },
688
- {
689
- id: "direct::enable-static-check-merge",
690
- run(t) {
691
- const { projectBase, config } = createFixtureRepo(t, { fixtures: [] });
692
- const preloaded = {
693
- ...config,
694
- "static-check": {
695
- Python: {
696
- enabled: "enable",
697
- checkers: [{ module: "Dummy", meta: "debug-note" }],
698
- } as unknown as UseReqConfig["static-check"][string],
699
- JavaScript: createStaticCheckLanguageConfig([
700
- { module: "Command", cmd: "git", params: ["--version"] },
701
- ], "enable"),
702
- } as unknown as UseReqConfig["static-check"],
703
- } as UseReqConfig;
704
- saveFixtureConfigs(projectBase, preloaded);
705
- const result = runNodeCli(
706
- [
707
- "--base",
708
- projectBase,
709
- "--enable-static-check",
710
- "Python=Command,git,--version",
711
- "--enable-static-check",
712
- "JavaScript=Command,git,--help",
713
- ],
714
- projectBase,
715
- );
716
- assert.equal(result.status, 0, result.stderr);
717
- assert.equal(getStaticCheckLanguageConfig(projectBase, "Python")?.enabled, "enable");
718
- assert.equal(getStaticCheckLanguageConfig(projectBase, "JavaScript")?.enabled, "enable");
719
- assert.deepEqual(getStaticCheckEntries(projectBase, "Python"), [
720
- { module: "Dummy" },
721
- { module: "Command", cmd: "git", params: ["--version"] },
722
- ]);
723
- assert.deepEqual(getStaticCheckEntries(projectBase, "JavaScript"), [
724
- { module: "Command", cmd: "git", params: ["--version"] },
725
- { module: "Command", cmd: "git", params: ["--help"] },
726
- ]);
727
- },
728
- },
729
- {
730
- id: "direct::fixtures::files-summarize-fixture-shape",
731
- async run(t) {
732
- for (const fixture of getFixtureFiles()) {
733
- if (path.basename(fixture) === TAB_SENSITIVE_FIXTURE_NAME) {
734
- continue;
735
- }
736
- await t.test(path.basename(fixture), () => {
737
- const cwd = path.dirname(fixture);
738
- const node = runNodeCli(["--files-summarize", fixture], cwd);
739
- const python = runPythonCli(["--files-summarize", fixture], cwd);
740
- assert.equal(node.status, python.status);
741
- assert.equal(node.stdout, python.stdout);
742
- assert.equal(node.stderr, python.stderr);
743
- assert.match(node.stdout, new RegExp(`# ${path.basename(fixture).replace(/[.*+?^${}()|[\]\\]/g, "\\$&")} \\|`));
744
- assert.match(node.stdout, /## Symbol Index/);
745
- });
746
- }
747
- },
748
- },
749
- {
750
- id: "oracle::fixtures::files-find-fixture-parity",
751
- async run(t) {
752
- for (const fixture of getFixtureFiles()) {
753
- if (path.basename(fixture) === TAB_SENSITIVE_FIXTURE_NAME) {
754
- continue;
755
- }
756
- await t.test(path.basename(fixture), () => {
757
- assertCliParity(["--files-find", getFixtureTagFilter(fixture), ".*", fixture], path.dirname(fixture));
758
- });
759
- }
760
- },
761
- },
762
- {
763
- id: "direct::fixtures::go-tab-preservation",
764
- run() {
765
- const fixture = getFixtureFiles().find((candidate) => path.basename(candidate) === TAB_SENSITIVE_FIXTURE_NAME);
766
- assert.ok(fixture, `missing ${TAB_SENSITIVE_FIXTURE_NAME}`);
767
- const cwd = path.dirname(fixture);
768
-
769
- const summarize = runNodeCli(["--files-summarize", fixture], cwd);
770
- assert.equal(summarize.status, 0, summarize.stderr);
771
- assert.match(summarize.stdout, /\tvar wg sync\.WaitGroup/);
772
-
773
- const compress = runNodeCli(["--files-compress", fixture, "--enable-line-numbers"], cwd);
774
- assert.equal(compress.status, 0, compress.stderr);
775
- assert.match(compress.stdout, /\d+: \t"context"/);
776
-
777
- const find = runNodeCli(["--files-find", "METHOD|FUNCTION", "^Start$", fixture, "--enable-line-numbers"], cwd);
778
- assert.equal(find.status, 0, find.stderr);
779
- assert.match(find.stdout, /\d+: \ts\.Lock\(\)/);
780
- },
781
- },
782
- ];
783
-
784
- test("imported CLI regression mappings resolve to executable TypeScript targets", () => {
785
- const implementedTargetIds = new Set(TARGET_CASES.map((target) => target.id));
786
- assert.ok(IMPORTED_CASE_MAPPINGS.length > 0, "expected imported CLI regression mappings");
787
- for (const mapping of IMPORTED_CASE_MAPPINGS) {
788
- assert.ok(implementedTargetIds.has(mapping.targetId), `missing target ${mapping.targetId} for ${mapping.sourceId}`);
789
- }
790
- });
791
-
792
- test("imported CLI option parity targets execute successfully", async (t) => {
793
- for (const target of TARGET_CASES) {
794
- await t.test(target.id, async (subtest) => {
795
- await target.run(subtest);
796
- });
797
- }
798
- });