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.
- package/README.md +1 -1
- package/package.json +5 -1
- package/scripts/lib/extension-debug-harness.ts +443 -0
- package/scripts/lib/recording-extension-api.ts +855 -0
- package/scripts/lib/sdk-smoke.ts +503 -0
- package/src/core/prompts.ts +4 -4
- package/.g.conf +0 -16
- package/.github/workflows/release-npm.yml +0 -134
- package/.gitignore +0 -274
- package/CHANGELOG.md +0 -699
- package/TODO.md +0 -20
- package/docs/pi.dev/agent-document-manifest.json +0 -6399
- package/docs/pi.dev/coding-agent-docs/compaction.md +0 -394
- package/docs/pi.dev/coding-agent-docs/custom-provider.md +0 -637
- package/docs/pi.dev/coding-agent-docs/development.md +0 -71
- package/docs/pi.dev/coding-agent-docs/extensions.md +0 -2536
- package/docs/pi.dev/coding-agent-docs/images/doom-extension.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/exy.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/interactive-mode.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/tree-view.png +0 -0
- package/docs/pi.dev/coding-agent-docs/json.md +0 -82
- package/docs/pi.dev/coding-agent-docs/keybindings.md +0 -197
- package/docs/pi.dev/coding-agent-docs/models.md +0 -395
- package/docs/pi.dev/coding-agent-docs/packages.md +0 -218
- package/docs/pi.dev/coding-agent-docs/prompt-templates.md +0 -88
- package/docs/pi.dev/coding-agent-docs/providers.md +0 -196
- package/docs/pi.dev/coding-agent-docs/rpc.md +0 -1407
- package/docs/pi.dev/coding-agent-docs/sdk.md +0 -1149
- package/docs/pi.dev/coding-agent-docs/session.md +0 -412
- package/docs/pi.dev/coding-agent-docs/settings.md +0 -248
- package/docs/pi.dev/coding-agent-docs/shell-aliases.md +0 -13
- package/docs/pi.dev/coding-agent-docs/skills.md +0 -232
- package/docs/pi.dev/coding-agent-docs/terminal-setup.md +0 -106
- package/docs/pi.dev/coding-agent-docs/termux.md +0 -127
- package/docs/pi.dev/coding-agent-docs/themes.md +0 -295
- package/docs/pi.dev/coding-agent-docs/tmux.md +0 -61
- package/docs/pi.dev/coding-agent-docs/tree.md +0 -233
- package/docs/pi.dev/coding-agent-docs/tui.md +0 -918
- package/docs/pi.dev/coding-agent-docs/windows.md +0 -17
- package/docs/pi.dev/mom-docs/artifacts-server.md +0 -475
- package/docs/pi.dev/mom-docs/events.md +0 -307
- package/docs/pi.dev/mom-docs/new.md +0 -970
- package/docs/pi.dev/mom-docs/sandbox.md +0 -153
- package/docs/pi.dev/mom-docs/slack-bot-minimal-guide.md +0 -399
- package/docs/pi.dev/mom-docs/v86.md +0 -319
- package/docs/pi.dev/pods-docs/gml-4.5.md +0 -189
- package/docs/pi.dev/pods-docs/gpt-oss.md +0 -233
- package/docs/pi.dev/pods-docs/implementation-plan.md +0 -183
- package/docs/pi.dev/pods-docs/kimi-k2.md +0 -197
- package/docs/pi.dev/pods-docs/models.md +0 -116
- package/docs/pi.dev/pods-docs/plan.md +0 -166
- package/docs/pi.dev/pods-docs/qwen3-coder.md +0 -132
- package/images/flowchart-bw.png +0 -0
- package/images/flowchart-bw.svg +0 -102
- package/images/flowchart.md +0 -100
- package/images/flowchart.png +0 -0
- package/images/flowchart.svg +0 -3
- package/pi-usereq/docs/REFERENCES.md +0 -5713
- package/pi-usereq/docs/REQUIREMENTS.md +0 -779
- package/pi-usereq/docs/WORKFLOW.md +0 -1341
- package/pi.dev-src/pi-mono/agent/src/agent-loop.ts +0 -683
- package/pi.dev-src/pi-mono/agent/src/agent.ts +0 -543
- package/pi.dev-src/pi-mono/agent/src/index.ts +0 -8
- package/pi.dev-src/pi-mono/agent/src/proxy.ts +0 -367
- package/pi.dev-src/pi-mono/agent/src/types.ts +0 -364
- package/pi.dev-src/pi-mono/agent/test/agent-loop.test.ts +0 -1181
- package/pi.dev-src/pi-mono/agent/test/agent.test.ts +0 -463
- package/pi.dev-src/pi-mono/agent/test/e2e.test.ts +0 -404
- package/pi.dev-src/pi-mono/agent/test/utils/calculate.ts +0 -32
- package/pi.dev-src/pi-mono/agent/test/utils/get-current-time.ts +0 -46
- package/pi.dev-src/pi-mono/agent/vitest.config.ts +0 -9
- package/pi.dev-src/pi-mono/ai/bedrock-provider.d.ts +0 -1
- package/pi.dev-src/pi-mono/ai/bedrock-provider.js +0 -1
- package/pi.dev-src/pi-mono/ai/scripts/generate-models.ts +0 -1635
- package/pi.dev-src/pi-mono/ai/scripts/generate-test-image.ts +0 -34
- package/pi.dev-src/pi-mono/ai/src/api-registry.ts +0 -98
- package/pi.dev-src/pi-mono/ai/src/bedrock-provider.ts +0 -6
- package/pi.dev-src/pi-mono/ai/src/cli.ts +0 -133
- package/pi.dev-src/pi-mono/ai/src/env-api-keys.ts +0 -134
- package/pi.dev-src/pi-mono/ai/src/index.ts +0 -35
- package/pi.dev-src/pi-mono/ai/src/models.generated.ts +0 -14928
- package/pi.dev-src/pi-mono/ai/src/models.ts +0 -82
- package/pi.dev-src/pi-mono/ai/src/oauth.ts +0 -1
- package/pi.dev-src/pi-mono/ai/src/providers/amazon-bedrock.ts +0 -929
- package/pi.dev-src/pi-mono/ai/src/providers/anthropic.ts +0 -1125
- package/pi.dev-src/pi-mono/ai/src/providers/azure-openai-responses.ts +0 -253
- package/pi.dev-src/pi-mono/ai/src/providers/faux.ts +0 -499
- package/pi.dev-src/pi-mono/ai/src/providers/github-copilot-headers.ts +0 -37
- package/pi.dev-src/pi-mono/ai/src/providers/google-gemini-cli.ts +0 -996
- package/pi.dev-src/pi-mono/ai/src/providers/google-shared.ts +0 -354
- package/pi.dev-src/pi-mono/ai/src/providers/google-vertex.ts +0 -543
- package/pi.dev-src/pi-mono/ai/src/providers/google.ts +0 -500
- package/pi.dev-src/pi-mono/ai/src/providers/mistral.ts +0 -629
- package/pi.dev-src/pi-mono/ai/src/providers/openai-codex-responses.ts +0 -984
- package/pi.dev-src/pi-mono/ai/src/providers/openai-completions.ts +0 -1063
- package/pi.dev-src/pi-mono/ai/src/providers/openai-responses-shared.ts +0 -539
- package/pi.dev-src/pi-mono/ai/src/providers/openai-responses.ts +0 -264
- package/pi.dev-src/pi-mono/ai/src/providers/register-builtins.ts +0 -433
- package/pi.dev-src/pi-mono/ai/src/providers/simple-options.ts +0 -47
- package/pi.dev-src/pi-mono/ai/src/providers/transform-messages.ts +0 -220
- package/pi.dev-src/pi-mono/ai/src/stream.ts +0 -59
- package/pi.dev-src/pi-mono/ai/src/types.ts +0 -417
- package/pi.dev-src/pi-mono/ai/src/utils/event-stream.ts +0 -87
- package/pi.dev-src/pi-mono/ai/src/utils/hash.ts +0 -13
- package/pi.dev-src/pi-mono/ai/src/utils/headers.ts +0 -7
- package/pi.dev-src/pi-mono/ai/src/utils/json-parse.ts +0 -124
- package/pi.dev-src/pi-mono/ai/src/utils/overflow.ts +0 -138
- package/pi.dev-src/pi-mono/ai/src/utils/sanitize-unicode.ts +0 -25
- package/pi.dev-src/pi-mono/ai/src/utils/typebox-helpers.ts +0 -24
- package/pi.dev-src/pi-mono/ai/src/utils/validation.ts +0 -324
- package/pi.dev-src/pi-mono/ai/test/abort.test.ts +0 -260
- package/pi.dev-src/pi-mono/ai/test/anthropic-oauth.test.ts +0 -99
- package/pi.dev-src/pi-mono/ai/test/anthropic-opus-4-7-smoke.test.ts +0 -72
- package/pi.dev-src/pi-mono/ai/test/anthropic-sse-parsing.test.ts +0 -113
- package/pi.dev-src/pi-mono/ai/test/anthropic-thinking-disable.test.ts +0 -152
- package/pi.dev-src/pi-mono/ai/test/anthropic-tool-name-normalization.test.ts +0 -205
- package/pi.dev-src/pi-mono/ai/test/azure-utils.ts +0 -28
- package/pi.dev-src/pi-mono/ai/test/bedrock-endpoint-resolution.test.ts +0 -131
- package/pi.dev-src/pi-mono/ai/test/bedrock-models.test.ts +0 -66
- package/pi.dev-src/pi-mono/ai/test/bedrock-thinking-payload.test.ts +0 -107
- package/pi.dev-src/pi-mono/ai/test/bedrock-utils.ts +0 -18
- package/pi.dev-src/pi-mono/ai/test/cache-retention.test.ts +0 -335
- package/pi.dev-src/pi-mono/ai/test/context-overflow.test.ts +0 -714
- package/pi.dev-src/pi-mono/ai/test/cross-provider-handoff.test.ts +0 -458
- package/pi.dev-src/pi-mono/ai/test/data/red-circle.png +0 -0
- package/pi.dev-src/pi-mono/ai/test/empty.test.ts +0 -742
- package/pi.dev-src/pi-mono/ai/test/faux-provider.test.ts +0 -597
- package/pi.dev-src/pi-mono/ai/test/fireworks-models.test.ts +0 -49
- package/pi.dev-src/pi-mono/ai/test/github-copilot-anthropic.test.ts +0 -108
- package/pi.dev-src/pi-mono/ai/test/github-copilot-oauth.test.ts +0 -196
- package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-claude-thinking-header.test.ts +0 -103
- package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-empty-stream.test.ts +0 -108
- package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-retry-delay.test.ts +0 -53
- package/pi.dev-src/pi-mono/ai/test/google-shared-convert-tools.test.ts +0 -187
- package/pi.dev-src/pi-mono/ai/test/google-shared-gemini3-unsigned-tool-call.test.ts +0 -172
- package/pi.dev-src/pi-mono/ai/test/google-shared-image-tool-result-routing.test.ts +0 -124
- package/pi.dev-src/pi-mono/ai/test/google-thinking-disable.test.ts +0 -183
- package/pi.dev-src/pi-mono/ai/test/google-thinking-signature.test.ts +0 -38
- package/pi.dev-src/pi-mono/ai/test/google-tool-call-missing-args.test.ts +0 -105
- package/pi.dev-src/pi-mono/ai/test/google-vertex-api-key-resolution.test.ts +0 -144
- package/pi.dev-src/pi-mono/ai/test/image-tool-result.test.ts +0 -481
- package/pi.dev-src/pi-mono/ai/test/interleaved-thinking.test.ts +0 -145
- package/pi.dev-src/pi-mono/ai/test/lazy-module-load.test.ts +0 -102
- package/pi.dev-src/pi-mono/ai/test/mistral-reasoning-mode.test.ts +0 -66
- package/pi.dev-src/pi-mono/ai/test/mistral-tool-schema.test.ts +0 -61
- package/pi.dev-src/pi-mono/ai/test/oauth.ts +0 -89
- package/pi.dev-src/pi-mono/ai/test/openai-codex-cache-affinity-e2e.test.ts +0 -36
- package/pi.dev-src/pi-mono/ai/test/openai-codex-stream.test.ts +0 -686
- package/pi.dev-src/pi-mono/ai/test/openai-completions-cache-control-format.test.ts +0 -189
- package/pi.dev-src/pi-mono/ai/test/openai-completions-prompt-cache.test.ts +0 -198
- package/pi.dev-src/pi-mono/ai/test/openai-completions-thinking-as-text.test.ts +0 -214
- package/pi.dev-src/pi-mono/ai/test/openai-completions-tool-choice.test.ts +0 -560
- package/pi.dev-src/pi-mono/ai/test/openai-completions-tool-result-images.test.ts +0 -101
- package/pi.dev-src/pi-mono/ai/test/openai-responses-cache-affinity-e2e.test.ts +0 -32
- package/pi.dev-src/pi-mono/ai/test/openai-responses-copilot-provider.test.ts +0 -128
- package/pi.dev-src/pi-mono/ai/test/openai-responses-foreign-toolcall-id.test.ts +0 -66
- package/pi.dev-src/pi-mono/ai/test/openai-responses-partial-json-cleanup.test.ts +0 -101
- package/pi.dev-src/pi-mono/ai/test/openai-responses-reasoning-replay-e2e.test.ts +0 -292
- package/pi.dev-src/pi-mono/ai/test/openai-responses-tool-result-images.test.ts +0 -200
- package/pi.dev-src/pi-mono/ai/test/openrouter-cache-write-repro.test.ts +0 -78
- package/pi.dev-src/pi-mono/ai/test/overflow.test.ts +0 -64
- package/pi.dev-src/pi-mono/ai/test/responseid.test.ts +0 -145
- package/pi.dev-src/pi-mono/ai/test/stream.test.ts +0 -1405
- package/pi.dev-src/pi-mono/ai/test/supports-xhigh.test.ts +0 -34
- package/pi.dev-src/pi-mono/ai/test/tokens.test.ts +0 -304
- package/pi.dev-src/pi-mono/ai/test/tool-call-id-normalization.test.ts +0 -291
- package/pi.dev-src/pi-mono/ai/test/tool-call-without-result.test.ts +0 -313
- package/pi.dev-src/pi-mono/ai/test/total-tokens.test.ts +0 -695
- package/pi.dev-src/pi-mono/ai/test/transform-messages-copilot-openai-to-anthropic.test.ts +0 -191
- package/pi.dev-src/pi-mono/ai/test/unicode-surrogate.test.ts +0 -754
- package/pi.dev-src/pi-mono/ai/test/validation.test.ts +0 -116
- package/pi.dev-src/pi-mono/ai/test/xhigh.test.ts +0 -71
- package/pi.dev-src/pi-mono/ai/test/zen.test.ts +0 -25
- package/pi.dev-src/pi-mono/ai/vitest.config.ts +0 -9
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/antigravity-image-gen.ts +0 -418
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/auto-commit-on-exit.ts +0 -49
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/bash-spawn-hook.ts +0 -30
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/bookmark.ts +0 -50
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/built-in-tool-renderer.ts +0 -249
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/claude-rules.ts +0 -86
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/commands.ts +0 -72
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/confirm-destructive.ts +0 -59
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-compaction.ts +0 -127
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-footer.ts +0 -64
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-header.ts +0 -73
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-anthropic/index.ts +0 -604
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +0 -24
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts +0 -349
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts +0 -82
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-qwen-cli/index.ts +0 -345
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dirty-repo-guard.ts +0 -56
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom/build.sh +0 -152
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-component.ts +0 -132
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-engine.ts +0 -173
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-keys.ts +0 -104
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/index.ts +0 -74
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/wad-finder.ts +0 -51
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/dynamic.json +0 -79
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/dynamic.md +0 -5
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/index.ts +0 -15
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-tools.ts +0 -74
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/event-bus.ts +0 -43
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/file-trigger.ts +0 -41
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/git-checkpoint.ts +0 -53
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/github-issue-autocomplete.ts +0 -185
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/handoff.ts +0 -153
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/hello.ts +0 -26
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/hidden-thinking-label.ts +0 -53
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/inline-bash.ts +0 -94
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/input-transform.ts +0 -43
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/interactive-shell.ts +0 -196
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/mac-system-theme.ts +0 -47
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/message-renderer.ts +0 -59
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/minimal-mode.ts +0 -426
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/modal-editor.ts +0 -85
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/model-status.ts +0 -31
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/notify.ts +0 -55
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/overlay-qa-tests.ts +0 -1348
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/overlay-test.ts +0 -150
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/permission-gate.ts +0 -34
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/pirate.ts +0 -47
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/plan-mode/index.ts +0 -340
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/plan-mode/utils.ts +0 -168
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/preset.ts +0 -430
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/prompt-customizer.ts +0 -97
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/protected-paths.ts +0 -30
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/provider-payload.ts +0 -18
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/qna.ts +0 -122
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/question.ts +0 -264
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/questionnaire.ts +0 -427
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/rainbow-editor.ts +0 -88
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/reload-runtime.ts +0 -37
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/rpc-demo.ts +0 -118
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/sandbox/index.ts +0 -321
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/sandbox/package-lock.json +0 -92
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/send-user-message.ts +0 -97
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/session-name.ts +0 -27
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/shutdown-command.ts +0 -63
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/snake.ts +0 -343
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/space-invaders.ts +0 -560
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/ssh.ts +0 -220
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/status-line.ts +0 -32
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/structured-output.ts +0 -65
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/planner.md +0 -37
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/reviewer.md +0 -35
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/scout.md +0 -50
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/worker.md +0 -24
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents.ts +0 -126
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/index.ts +0 -987
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/implement-and-review.md +0 -10
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/implement.md +0 -10
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/scout-and-plan.md +0 -9
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/summarize.ts +0 -206
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/system-prompt-header.ts +0 -17
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tic-tac-toe.ts +0 -1008
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/timed-confirm.ts +0 -70
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/titlebar-spinner.ts +0 -58
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/todo.ts +0 -297
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tool-override.ts +0 -144
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tools.ts +0 -141
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/trigger-compact.ts +0 -50
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/truncated-tool.ts +0 -195
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/widget-placement.ts +0 -9
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/with-deps/index.ts +0 -32
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/with-deps/package-lock.json +0 -31
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/working-indicator.ts +0 -123
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/working-message-test.ts +0 -25
- package/pi.dev-src/pi-mono/coding-agent/examples/rpc-extension-ui.ts +0 -632
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/01-minimal.ts +0 -22
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/02-custom-model.ts +0 -49
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/03-custom-prompt.ts +0 -62
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/04-skills.ts +0 -55
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/05-tools.ts +0 -44
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/06-extensions.ts +0 -90
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/07-context-files.ts +0 -42
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/08-prompt-templates.ts +0 -51
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/09-api-keys-and-oauth.ts +0 -48
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/10-settings.ts +0 -53
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/11-sessions.ts +0 -48
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/12-full-control.ts +0 -73
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/13-session-runtime.ts +0 -67
- package/pi.dev-src/pi-mono/coding-agent/scripts/migrate-sessions.sh +0 -93
- package/pi.dev-src/pi-mono/coding-agent/src/bun/cli.ts +0 -6
- package/pi.dev-src/pi-mono/coding-agent/src/bun/register-bedrock.ts +0 -4
- package/pi.dev-src/pi-mono/coding-agent/src/cli/args.ts +0 -335
- package/pi.dev-src/pi-mono/coding-agent/src/cli/config-selector.ts +0 -52
- package/pi.dev-src/pi-mono/coding-agent/src/cli/file-processor.ts +0 -100
- package/pi.dev-src/pi-mono/coding-agent/src/cli/initial-message.ts +0 -43
- package/pi.dev-src/pi-mono/coding-agent/src/cli/list-models.ts +0 -110
- package/pi.dev-src/pi-mono/coding-agent/src/cli/session-picker.ts +0 -52
- package/pi.dev-src/pi-mono/coding-agent/src/cli.ts +0 -17
- package/pi.dev-src/pi-mono/coding-agent/src/config.ts +0 -261
- package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session-runtime.ts +0 -394
- package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session-services.ts +0 -196
- package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session.ts +0 -3096
- package/pi.dev-src/pi-mono/coding-agent/src/core/auth-storage.ts +0 -493
- package/pi.dev-src/pi-mono/coding-agent/src/core/bash-executor.ts +0 -154
- package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/branch-summarization.ts +0 -355
- package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/compaction.ts +0 -839
- package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/index.ts +0 -7
- package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/utils.ts +0 -170
- package/pi.dev-src/pi-mono/coding-agent/src/core/defaults.ts +0 -3
- package/pi.dev-src/pi-mono/coding-agent/src/core/diagnostics.ts +0 -15
- package/pi.dev-src/pi-mono/coding-agent/src/core/event-bus.ts +0 -33
- package/pi.dev-src/pi-mono/coding-agent/src/core/exec.ts +0 -107
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/ansi-to-html.ts +0 -258
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/index.ts +0 -314
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.css +0 -1017
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.html +0 -55
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.js +0 -1770
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/tool-renderer.ts +0 -158
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/vendor/highlight.min.js +0 -1213
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/vendor/marked.min.js +0 -6
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/index.ts +0 -171
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/loader.ts +0 -606
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/runner.ts +0 -1019
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/types.ts +0 -1542
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/wrapper.ts +0 -30
- package/pi.dev-src/pi-mono/coding-agent/src/core/footer-data-provider.ts +0 -354
- package/pi.dev-src/pi-mono/coding-agent/src/core/index.ts +0 -77
- package/pi.dev-src/pi-mono/coding-agent/src/core/keybindings.ts +0 -370
- package/pi.dev-src/pi-mono/coding-agent/src/core/messages.ts +0 -195
- package/pi.dev-src/pi-mono/coding-agent/src/core/model-registry.ts +0 -858
- package/pi.dev-src/pi-mono/coding-agent/src/core/model-resolver.ts +0 -629
- package/pi.dev-src/pi-mono/coding-agent/src/core/output-guard.ts +0 -74
- package/pi.dev-src/pi-mono/coding-agent/src/core/package-manager.ts +0 -2408
- package/pi.dev-src/pi-mono/coding-agent/src/core/prompt-templates.ts +0 -296
- package/pi.dev-src/pi-mono/coding-agent/src/core/resolve-config-value.ts +0 -142
- package/pi.dev-src/pi-mono/coding-agent/src/core/resource-loader.ts +0 -917
- package/pi.dev-src/pi-mono/coding-agent/src/core/sdk.ts +0 -380
- package/pi.dev-src/pi-mono/coding-agent/src/core/session-cwd.ts +0 -59
- package/pi.dev-src/pi-mono/coding-agent/src/core/session-manager.ts +0 -1425
- package/pi.dev-src/pi-mono/coding-agent/src/core/settings-manager.ts +0 -999
- package/pi.dev-src/pi-mono/coding-agent/src/core/skills.ts +0 -508
- package/pi.dev-src/pi-mono/coding-agent/src/core/slash-commands.ts +0 -39
- package/pi.dev-src/pi-mono/coding-agent/src/core/source-info.ts +0 -40
- package/pi.dev-src/pi-mono/coding-agent/src/core/system-prompt.ts +0 -172
- package/pi.dev-src/pi-mono/coding-agent/src/core/telemetry.ts +0 -13
- package/pi.dev-src/pi-mono/coding-agent/src/core/timings.ts +0 -31
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/bash.ts +0 -448
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/edit-diff.ts +0 -445
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/edit.ts +0 -487
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/file-mutation-queue.ts +0 -39
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/find.ts +0 -370
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/grep.ts +0 -384
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/index.ts +0 -196
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/ls.ts +0 -229
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/path-utils.ts +0 -94
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/read.ts +0 -273
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/render-utils.ts +0 -64
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/tool-definition-wrapper.ts +0 -45
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/truncate.ts +0 -265
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/write.ts +0 -281
- package/pi.dev-src/pi-mono/coding-agent/src/index.ts +0 -352
- package/pi.dev-src/pi-mono/coding-agent/src/main.ts +0 -731
- package/pi.dev-src/pi-mono/coding-agent/src/migrations.ts +0 -314
- package/pi.dev-src/pi-mono/coding-agent/src/modes/index.ts +0 -9
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/assets/clankolas.png +0 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/armin.ts +0 -382
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/assistant-message.ts +0 -147
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/bash-execution.ts +0 -218
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/bordered-loader.ts +0 -68
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/branch-summary-message.ts +0 -58
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/compaction-summary-message.ts +0 -59
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/config-selector.ts +0 -592
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/countdown-timer.ts +0 -38
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/custom-editor.ts +0 -80
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/custom-message.ts +0 -99
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/daxnuts.ts +0 -164
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/diff.ts +0 -147
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/dynamic-border.ts +0 -25
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/earendil-announcement.ts +0 -53
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-editor.ts +0 -147
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-input.ts +0 -87
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-selector.ts +0 -107
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/footer.ts +0 -220
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/index.ts +0 -32
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/keybinding-hints.ts +0 -24
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/login-dialog.ts +0 -178
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/model-selector.ts +0 -338
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/oauth-selector.ts +0 -121
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/scoped-models-selector.ts +0 -355
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/session-selector-search.ts +0 -194
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/session-selector.ts +0 -1026
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/settings-selector.ts +0 -456
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/show-images-selector.ts +0 -50
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/skill-invocation-message.ts +0 -55
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/theme-selector.ts +0 -67
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/thinking-selector.ts +0 -74
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/tool-execution.ts +0 -352
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/tree-selector.ts +0 -1246
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/user-message-selector.ts +0 -155
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/user-message.ts +0 -35
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/visual-truncate.ts +0 -50
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/interactive-mode.ts +0 -5155
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/dark.json +0 -85
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/light.json +0 -84
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/theme-schema.json +0 -335
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/theme.ts +0 -1141
- package/pi.dev-src/pi-mono/coding-agent/src/modes/print-mode.ts +0 -158
- package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/jsonl.ts +0 -58
- package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-client.ts +0 -515
- package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-mode.ts +0 -745
- package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-types.ts +0 -264
- package/pi.dev-src/pi-mono/coding-agent/src/package-manager-cli.ts +0 -270
- package/pi.dev-src/pi-mono/coding-agent/src/utils/changelog.ts +0 -99
- package/pi.dev-src/pi-mono/coding-agent/src/utils/child-process.ts +0 -86
- package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard-image.ts +0 -300
- package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard-native.ts +0 -22
- package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard.ts +0 -81
- package/pi.dev-src/pi-mono/coding-agent/src/utils/exif-orientation.ts +0 -183
- package/pi.dev-src/pi-mono/coding-agent/src/utils/frontmatter.ts +0 -39
- package/pi.dev-src/pi-mono/coding-agent/src/utils/fs-watch.ts +0 -30
- package/pi.dev-src/pi-mono/coding-agent/src/utils/git.ts +0 -192
- package/pi.dev-src/pi-mono/coding-agent/src/utils/image-convert.ts +0 -41
- package/pi.dev-src/pi-mono/coding-agent/src/utils/image-resize.ts +0 -176
- package/pi.dev-src/pi-mono/coding-agent/src/utils/mime.ts +0 -30
- package/pi.dev-src/pi-mono/coding-agent/src/utils/paths.ts +0 -20
- package/pi.dev-src/pi-mono/coding-agent/src/utils/photon.ts +0 -139
- package/pi.dev-src/pi-mono/coding-agent/src/utils/shell.ts +0 -210
- package/pi.dev-src/pi-mono/coding-agent/src/utils/sleep.ts +0 -18
- package/pi.dev-src/pi-mono/coding-agent/src/utils/tools-manager.ts +0 -287
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-auto-compaction-queue.test.ts +0 -437
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-branching.test.ts +0 -156
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-compaction.test.ts +0 -208
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-concurrent.test.ts +0 -618
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-dynamic-provider.test.ts +0 -117
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-dynamic-tools.test.ts +0 -182
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-retry.test.ts +0 -318
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-runtime-events.test.ts +0 -208
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-stats.test.ts +0 -143
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-tree-navigation.test.ts +0 -323
- package/pi.dev-src/pi-mono/coding-agent/test/args.test.ts +0 -328
- package/pi.dev-src/pi-mono/coding-agent/test/assistant-message.test.ts +0 -57
- package/pi.dev-src/pi-mono/coding-agent/test/auth-storage.test.ts +0 -462
- package/pi.dev-src/pi-mono/coding-agent/test/bash-close-hang-windows.test.ts +0 -126
- package/pi.dev-src/pi-mono/coding-agent/test/bash-execution-width.test.ts +0 -80
- package/pi.dev-src/pi-mono/coding-agent/test/block-images.test.ts +0 -120
- package/pi.dev-src/pi-mono/coding-agent/test/clipboard-image-bmp-conversion.test.ts +0 -88
- package/pi.dev-src/pi-mono/coding-agent/test/clipboard-image.test.ts +0 -136
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-extensions-example.test.ts +0 -66
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-extensions.test.ts +0 -415
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-serialization.test.ts +0 -79
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-summary-reasoning.test.ts +0 -118
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-thinking-model.test.ts +0 -223
- package/pi.dev-src/pi-mono/coding-agent/test/compaction.test.ts +0 -550
- package/pi.dev-src/pi-mono/coding-agent/test/config.test.ts +0 -30
- package/pi.dev-src/pi-mono/coding-agent/test/edit-tool-legacy-input.test.ts +0 -116
- package/pi.dev-src/pi-mono/coding-agent/test/edit-tool-no-full-redraw.test.ts +0 -235
- package/pi.dev-src/pi-mono/coding-agent/test/export-html-whitespace.test.ts +0 -12
- package/pi.dev-src/pi-mono/coding-agent/test/export-html-xss.test.ts +0 -28
- package/pi.dev-src/pi-mono/coding-agent/test/extensions-discovery.test.ts +0 -463
- package/pi.dev-src/pi-mono/coding-agent/test/extensions-input-event.test.ts +0 -112
- package/pi.dev-src/pi-mono/coding-agent/test/extensions-runner.test.ts +0 -805
- package/pi.dev-src/pi-mono/coding-agent/test/file-mutation-queue.test.ts +0 -163
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/assistant-message-with-thinking-code.json +0 -33
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/before-compaction.jsonl +0 -1003
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/empty-agent/.gitkeep +0 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/empty-cwd/.gitkeep +0 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/large-session.jsonl +0 -1019
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/consecutive-hyphens/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/disable-model-invocation/SKILL.md +0 -9
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/invalid-name-chars/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/invalid-yaml/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/long-name/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/missing-description/SKILL.md +0 -7
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/multiline-description/SKILL.md +0 -11
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/name-mismatch/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/nested/child-skill/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/no-frontmatter/SKILL.md +0 -3
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/root-skill-preferred/SKILL.md +0 -3
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/root-skill-preferred/nested-child/SKILL.md +0 -3
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/unknown-field/SKILL.md +0 -10
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/valid-skill/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills-collision/first/calendar/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills-collision/second/calendar/SKILL.md +0 -8
- package/pi.dev-src/pi-mono/coding-agent/test/footer-data-provider.test.ts +0 -265
- package/pi.dev-src/pi-mono/coding-agent/test/footer-width.test.ts +0 -115
- package/pi.dev-src/pi-mono/coding-agent/test/frontmatter.test.ts +0 -60
- package/pi.dev-src/pi-mono/coding-agent/test/git-ssh-url.test.ts +0 -78
- package/pi.dev-src/pi-mono/coding-agent/test/git-update.test.ts +0 -411
- package/pi.dev-src/pi-mono/coding-agent/test/image-processing.test.ts +0 -145
- package/pi.dev-src/pi-mono/coding-agent/test/image-resize-callers.test.ts +0 -53
- package/pi.dev-src/pi-mono/coding-agent/test/initial-message.test.ts +0 -48
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-anthropic-warning.test.ts +0 -73
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-clone-command.test.ts +0 -77
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-compaction.test.ts +0 -57
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-import-command.test.ts +0 -144
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-status.test.ts +0 -635
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-suspend.test.ts +0 -149
- package/pi.dev-src/pi-mono/coding-agent/test/keybindings-migration.test.ts +0 -88
- package/pi.dev-src/pi-mono/coding-agent/test/model-registry.test.ts +0 -1209
- package/pi.dev-src/pi-mono/coding-agent/test/model-resolver.test.ts +0 -436
- package/pi.dev-src/pi-mono/coding-agent/test/package-command-paths.test.ts +0 -144
- package/pi.dev-src/pi-mono/coding-agent/test/package-manager-ssh.test.ts +0 -97
- package/pi.dev-src/pi-mono/coding-agent/test/package-manager.test.ts +0 -1795
- package/pi.dev-src/pi-mono/coding-agent/test/path-utils.test.ts +0 -162
- package/pi.dev-src/pi-mono/coding-agent/test/plan-mode-utils.test.ts +0 -261
- package/pi.dev-src/pi-mono/coding-agent/test/print-mode.test.ts +0 -140
- package/pi.dev-src/pi-mono/coding-agent/test/prompt-templates.test.ts +0 -515
- package/pi.dev-src/pi-mono/coding-agent/test/resource-loader.test.ts +0 -576
- package/pi.dev-src/pi-mono/coding-agent/test/rpc-client-clone.test.ts +0 -29
- package/pi.dev-src/pi-mono/coding-agent/test/rpc-example.ts +0 -86
- package/pi.dev-src/pi-mono/coding-agent/test/rpc-jsonl.test.ts +0 -65
- package/pi.dev-src/pi-mono/coding-agent/test/rpc-prompt-response-semantics.test.ts +0 -285
- package/pi.dev-src/pi-mono/coding-agent/test/rpc.test.ts +0 -321
- package/pi.dev-src/pi-mono/coding-agent/test/sdk-codex-cache-probe-tool-loop.ts +0 -364
- package/pi.dev-src/pi-mono/coding-agent/test/sdk-openrouter-attribution.test.ts +0 -181
- package/pi.dev-src/pi-mono/coding-agent/test/sdk-session-manager.test.ts +0 -95
- package/pi.dev-src/pi-mono/coding-agent/test/sdk-skills.test.ts +0 -109
- package/pi.dev-src/pi-mono/coding-agent/test/session-cwd.test.ts +0 -91
- package/pi.dev-src/pi-mono/coding-agent/test/session-info-modified-timestamp.test.ts +0 -83
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/build-context.test.ts +0 -268
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/custom-session-id.test.ts +0 -109
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/file-operations.test.ts +0 -208
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/labels.test.ts +0 -198
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/migration.test.ts +0 -78
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/save-entry.test.ts +0 -55
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/tree-traversal.test.ts +0 -533
- package/pi.dev-src/pi-mono/coding-agent/test/session-selector-path-delete.test.ts +0 -315
- package/pi.dev-src/pi-mono/coding-agent/test/session-selector-rename.test.ts +0 -111
- package/pi.dev-src/pi-mono/coding-agent/test/session-selector-search.test.ts +0 -195
- package/pi.dev-src/pi-mono/coding-agent/test/settings-manager-bug.test.ts +0 -147
- package/pi.dev-src/pi-mono/coding-agent/test/settings-manager.test.ts +0 -319
- package/pi.dev-src/pi-mono/coding-agent/test/skills.test.ts +0 -432
- package/pi.dev-src/pi-mono/coding-agent/test/stdout-cleanliness.test.ts +0 -103
- package/pi.dev-src/pi-mono/coding-agent/test/streaming-render-debug.ts +0 -97
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-bash-persistence.test.ts +0 -242
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-compaction.test.ts +0 -343
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-model-extension.test.ts +0 -325
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-prompt.test.ts +0 -323
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-queue.test.ts +0 -422
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-retry-events.test.ts +0 -358
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-runtime.test.ts +0 -553
- package/pi.dev-src/pi-mono/coding-agent/test/suite/harness.ts +0 -208
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2023-queued-slash-command-followup.test.ts +0 -80
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2753-reload-stale-resource-settings.test.ts +0 -100
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2781-skill-collision-precedence.test.ts +0 -120
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts +0 -106
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2835-tools-allowlist-filters-extension-tools.test.ts +0 -94
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2860-replaced-session-context.test.ts +0 -274
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3217-scoped-model-order.test.ts +0 -104
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts +0 -72
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts +0 -83
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3317-network-connection-lost-retry.test.ts +0 -33
- package/pi.dev-src/pi-mono/coding-agent/test/system-prompt.test.ts +0 -102
- package/pi.dev-src/pi-mono/coding-agent/test/test-harness.test.ts +0 -321
- package/pi.dev-src/pi-mono/coding-agent/test/test-harness.ts +0 -446
- package/pi.dev-src/pi-mono/coding-agent/test/test-theme-colors.ts +0 -246
- package/pi.dev-src/pi-mono/coding-agent/test/theme-export.test.ts +0 -104
- package/pi.dev-src/pi-mono/coding-agent/test/tool-execution-component.test.ts +0 -331
- package/pi.dev-src/pi-mono/coding-agent/test/tools.test.ts +0 -889
- package/pi.dev-src/pi-mono/coding-agent/test/tree-selector.test.ts +0 -655
- package/pi.dev-src/pi-mono/coding-agent/test/trigger-compact-extension.test.ts +0 -57
- package/pi.dev-src/pi-mono/coding-agent/test/truncate-to-width.test.ts +0 -81
- package/pi.dev-src/pi-mono/coding-agent/test/user-message.test.ts +0 -25
- package/pi.dev-src/pi-mono/coding-agent/test/utilities.ts +0 -316
- package/pi.dev-src/pi-mono/coding-agent/tsconfig.examples.json +0 -16
- package/pi.dev-src/pi-mono/coding-agent/vitest.config.ts +0 -26
- package/pi.dev-src/pi-mono/mom/dev.sh +0 -30
- package/pi.dev-src/pi-mono/mom/docker.sh +0 -95
- package/pi.dev-src/pi-mono/mom/scripts/migrate-timestamps.ts +0 -121
- package/pi.dev-src/pi-mono/mom/src/agent.ts +0 -882
- package/pi.dev-src/pi-mono/mom/src/context.ts +0 -180
- package/pi.dev-src/pi-mono/mom/src/download.ts +0 -117
- package/pi.dev-src/pi-mono/mom/src/events.ts +0 -442
- package/pi.dev-src/pi-mono/mom/src/fs-watch.ts +0 -30
- package/pi.dev-src/pi-mono/mom/src/log.ts +0 -271
- package/pi.dev-src/pi-mono/mom/src/main.ts +0 -367
- package/pi.dev-src/pi-mono/mom/src/sandbox.ts +0 -221
- package/pi.dev-src/pi-mono/mom/src/slack.ts +0 -623
- package/pi.dev-src/pi-mono/mom/src/store.ts +0 -234
- package/pi.dev-src/pi-mono/mom/src/tools/attach.ts +0 -47
- package/pi.dev-src/pi-mono/mom/src/tools/bash.ts +0 -97
- package/pi.dev-src/pi-mono/mom/src/tools/edit.ts +0 -165
- package/pi.dev-src/pi-mono/mom/src/tools/index.ts +0 -19
- package/pi.dev-src/pi-mono/mom/src/tools/read.ts +0 -159
- package/pi.dev-src/pi-mono/mom/src/tools/truncate.ts +0 -236
- package/pi.dev-src/pi-mono/mom/src/tools/write.ts +0 -45
- package/pi.dev-src/pi-mono/mom/test/events.test.ts +0 -50
- package/pi.dev-src/pi-mono/pods/scripts/model_run.sh +0 -83
- package/pi.dev-src/pi-mono/pods/scripts/pod_setup.sh +0 -336
- package/pi.dev-src/pi-mono/pods/src/cli.ts +0 -360
- package/pi.dev-src/pi-mono/pods/src/commands/models.ts +0 -753
- package/pi.dev-src/pi-mono/pods/src/commands/pods.ts +0 -205
- package/pi.dev-src/pi-mono/pods/src/commands/prompt.ts +0 -84
- package/pi.dev-src/pi-mono/pods/src/config.ts +0 -80
- package/pi.dev-src/pi-mono/pods/src/index.ts +0 -2
- package/pi.dev-src/pi-mono/pods/src/model-configs.ts +0 -111
- package/pi.dev-src/pi-mono/pods/src/models.json +0 -295
- package/pi.dev-src/pi-mono/pods/src/ssh.ts +0 -151
- package/pi.dev-src/pi-mono/pods/src/types.ts +0 -27
- package/pi.dev-src/pi-mono/tui/src/autocomplete.ts +0 -783
- package/pi.dev-src/pi-mono/tui/src/components/box.ts +0 -137
- package/pi.dev-src/pi-mono/tui/src/components/cancellable-loader.ts +0 -40
- package/pi.dev-src/pi-mono/tui/src/components/editor.ts +0 -2280
- package/pi.dev-src/pi-mono/tui/src/components/image.ts +0 -104
- package/pi.dev-src/pi-mono/tui/src/components/input.ts +0 -503
- package/pi.dev-src/pi-mono/tui/src/components/loader.ts +0 -86
- package/pi.dev-src/pi-mono/tui/src/components/markdown.ts +0 -852
- package/pi.dev-src/pi-mono/tui/src/components/select-list.ts +0 -229
- package/pi.dev-src/pi-mono/tui/src/components/settings-list.ts +0 -250
- package/pi.dev-src/pi-mono/tui/src/components/spacer.ts +0 -28
- package/pi.dev-src/pi-mono/tui/src/components/text.ts +0 -106
- package/pi.dev-src/pi-mono/tui/src/components/truncated-text.ts +0 -65
- package/pi.dev-src/pi-mono/tui/src/editor-component.ts +0 -74
- package/pi.dev-src/pi-mono/tui/src/fuzzy.ts +0 -133
- package/pi.dev-src/pi-mono/tui/src/index.ts +0 -106
- package/pi.dev-src/pi-mono/tui/src/keybindings.ts +0 -244
- package/pi.dev-src/pi-mono/tui/src/keys.ts +0 -1400
- package/pi.dev-src/pi-mono/tui/src/kill-ring.ts +0 -46
- package/pi.dev-src/pi-mono/tui/src/stdin-buffer.ts +0 -386
- package/pi.dev-src/pi-mono/tui/src/terminal-image.ts +0 -414
- package/pi.dev-src/pi-mono/tui/src/terminal.ts +0 -373
- package/pi.dev-src/pi-mono/tui/src/tui.ts +0 -1243
- package/pi.dev-src/pi-mono/tui/src/undo-stack.ts +0 -28
- package/pi.dev-src/pi-mono/tui/src/utils.ts +0 -1085
- package/pi.dev-src/pi-mono/tui/test/autocomplete.test.ts +0 -542
- package/pi.dev-src/pi-mono/tui/test/bug-regression-isimageline-startswith-bug.test.ts +0 -237
- package/pi.dev-src/pi-mono/tui/test/chat-simple.ts +0 -129
- package/pi.dev-src/pi-mono/tui/test/editor.test.ts +0 -3812
- package/pi.dev-src/pi-mono/tui/test/fuzzy.test.ts +0 -98
- package/pi.dev-src/pi-mono/tui/test/image-test.ts +0 -56
- package/pi.dev-src/pi-mono/tui/test/input.test.ts +0 -580
- package/pi.dev-src/pi-mono/tui/test/key-tester.ts +0 -105
- package/pi.dev-src/pi-mono/tui/test/keybindings.test.ts +0 -38
- package/pi.dev-src/pi-mono/tui/test/keys.test.ts +0 -614
- package/pi.dev-src/pi-mono/tui/test/markdown.test.ts +0 -1236
- package/pi.dev-src/pi-mono/tui/test/overlay-non-capturing.test.ts +0 -609
- package/pi.dev-src/pi-mono/tui/test/overlay-options.test.ts +0 -538
- package/pi.dev-src/pi-mono/tui/test/overlay-short-content.test.ts +0 -56
- package/pi.dev-src/pi-mono/tui/test/regression-regional-indicator-width.test.ts +0 -52
- package/pi.dev-src/pi-mono/tui/test/select-list.test.ts +0 -116
- package/pi.dev-src/pi-mono/tui/test/stdin-buffer.test.ts +0 -422
- package/pi.dev-src/pi-mono/tui/test/terminal-image.test.ts +0 -279
- package/pi.dev-src/pi-mono/tui/test/test-themes.ts +0 -38
- package/pi.dev-src/pi-mono/tui/test/truncate-to-width.test.ts +0 -62
- package/pi.dev-src/pi-mono/tui/test/truncated-text.test.ts +0 -129
- package/pi.dev-src/pi-mono/tui/test/tui-cell-size-input.test.ts +0 -81
- package/pi.dev-src/pi-mono/tui/test/tui-overlay-style-leak.test.ts +0 -72
- package/pi.dev-src/pi-mono/tui/test/tui-render.test.ts +0 -509
- package/pi.dev-src/pi-mono/tui/test/viewport-overwrite-repro.ts +0 -106
- package/pi.dev-src/pi-mono/tui/test/virtual-terminal.ts +0 -218
- package/pi.dev-src/pi-mono/tui/test/wrap-ansi.test.ts +0 -207
- package/pi.dev-src/pi-mono/tui/vitest.config.ts +0 -7
- package/pi.dev-src/pi-mono/web-ui/example/index.html +0 -13
- package/pi.dev-src/pi-mono/web-ui/example/src/app.css +0 -1
- package/pi.dev-src/pi-mono/web-ui/example/src/custom-messages.ts +0 -99
- package/pi.dev-src/pi-mono/web-ui/example/src/main.ts +0 -421
- package/pi.dev-src/pi-mono/web-ui/example/tsconfig.json +0 -23
- package/pi.dev-src/pi-mono/web-ui/example/vite.config.ts +0 -6
- package/pi.dev-src/pi-mono/web-ui/scripts/count-prompt-tokens.ts +0 -88
- package/pi.dev-src/pi-mono/web-ui/src/ChatPanel.ts +0 -209
- package/pi.dev-src/pi-mono/web-ui/src/app.css +0 -68
- package/pi.dev-src/pi-mono/web-ui/src/components/AgentInterface.ts +0 -403
- package/pi.dev-src/pi-mono/web-ui/src/components/AttachmentTile.ts +0 -107
- package/pi.dev-src/pi-mono/web-ui/src/components/ConsoleBlock.ts +0 -72
- package/pi.dev-src/pi-mono/web-ui/src/components/CustomProviderCard.ts +0 -100
- package/pi.dev-src/pi-mono/web-ui/src/components/ExpandableSection.ts +0 -46
- package/pi.dev-src/pi-mono/web-ui/src/components/Input.ts +0 -113
- package/pi.dev-src/pi-mono/web-ui/src/components/MessageEditor.ts +0 -405
- package/pi.dev-src/pi-mono/web-ui/src/components/MessageList.ts +0 -98
- package/pi.dev-src/pi-mono/web-ui/src/components/Messages.ts +0 -383
- package/pi.dev-src/pi-mono/web-ui/src/components/ProviderKeyInput.ts +0 -153
- package/pi.dev-src/pi-mono/web-ui/src/components/SandboxedIframe.ts +0 -626
- package/pi.dev-src/pi-mono/web-ui/src/components/StreamingMessageContainer.ts +0 -103
- package/pi.dev-src/pi-mono/web-ui/src/components/ThinkingBlock.ts +0 -43
- package/pi.dev-src/pi-mono/web-ui/src/components/message-renderer-registry.ts +0 -28
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/ArtifactsRuntimeProvider.ts +0 -220
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/AttachmentsRuntimeProvider.ts +0 -66
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/ConsoleRuntimeProvider.ts +0 -186
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/FileDownloadRuntimeProvider.ts +0 -110
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/RuntimeMessageBridge.ts +0 -82
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/RuntimeMessageRouter.ts +0 -216
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/SandboxRuntimeProvider.ts +0 -52
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/ApiKeyPromptDialog.ts +0 -75
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/AttachmentOverlay.ts +0 -636
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/CustomProviderDialog.ts +0 -274
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/ModelSelector.ts +0 -370
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/PersistentStorageDialog.ts +0 -144
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/ProvidersModelsTab.ts +0 -212
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/SessionListDialog.ts +0 -150
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/SettingsDialog.ts +0 -218
- package/pi.dev-src/pi-mono/web-ui/src/index.ts +0 -120
- package/pi.dev-src/pi-mono/web-ui/src/prompts/prompts.ts +0 -282
- package/pi.dev-src/pi-mono/web-ui/src/storage/app-storage.ts +0 -60
- package/pi.dev-src/pi-mono/web-ui/src/storage/backends/indexeddb-storage-backend.ts +0 -193
- package/pi.dev-src/pi-mono/web-ui/src/storage/store.ts +0 -33
- package/pi.dev-src/pi-mono/web-ui/src/storage/stores/custom-providers-store.ts +0 -62
- package/pi.dev-src/pi-mono/web-ui/src/storage/stores/provider-keys-store.ts +0 -33
- package/pi.dev-src/pi-mono/web-ui/src/storage/stores/sessions-store.ts +0 -136
- package/pi.dev-src/pi-mono/web-ui/src/storage/stores/settings-store.ts +0 -34
- package/pi.dev-src/pi-mono/web-ui/src/storage/types.ts +0 -206
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ArtifactElement.ts +0 -14
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ArtifactPill.ts +0 -26
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/Console.ts +0 -93
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/DocxArtifact.ts +0 -213
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ExcelArtifact.ts +0 -231
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/GenericArtifact.ts +0 -117
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/HtmlArtifact.ts +0 -195
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ImageArtifact.ts +0 -116
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/MarkdownArtifact.ts +0 -82
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/PdfArtifact.ts +0 -201
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/SvgArtifact.ts +0 -119
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/TextArtifact.ts +0 -148
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/artifacts-tool-renderer.ts +0 -310
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/artifacts.ts +0 -713
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/index.ts +0 -7
- package/pi.dev-src/pi-mono/web-ui/src/tools/extract-document.ts +0 -275
- package/pi.dev-src/pi-mono/web-ui/src/tools/index.ts +0 -46
- package/pi.dev-src/pi-mono/web-ui/src/tools/javascript-repl.ts +0 -293
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderer-registry.ts +0 -130
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/BashRenderer.ts +0 -52
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/CalculateRenderer.ts +0 -58
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/DefaultRenderer.ts +0 -103
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/GetCurrentTimeRenderer.ts +0 -92
- package/pi.dev-src/pi-mono/web-ui/src/tools/types.ts +0 -15
- package/pi.dev-src/pi-mono/web-ui/src/utils/attachment-utils.ts +0 -472
- package/pi.dev-src/pi-mono/web-ui/src/utils/auth-token.ts +0 -22
- package/pi.dev-src/pi-mono/web-ui/src/utils/format.ts +0 -42
- package/pi.dev-src/pi-mono/web-ui/src/utils/i18n.ts +0 -653
- package/pi.dev-src/pi-mono/web-ui/src/utils/model-discovery.ts +0 -277
- package/pi.dev-src/pi-mono/web-ui/src/utils/proxy-utils.ts +0 -139
- package/pi.dev-src/pi-mono/web-ui/src/utils/test-sessions.ts +0 -2357
- package/pi.dev-src/pi-mono/web-ui/tsconfig.json +0 -7
- package/tests/attended-results-scenarios.ts +0 -648
- package/tests/attended-results.test.ts +0 -39
- package/tests/cli-command-option-parity.test.ts +0 -798
- package/tests/debug-extension-harness.test.ts +0 -466
- package/tests/extension-registration.test.ts +0 -6785
- package/tests/fixtures/fixture_c.c +0 -361
- package/tests/fixtures/fixture_cpp.cpp +0 -407
- package/tests/fixtures/fixture_csharp.cs +0 -411
- package/tests/fixtures/fixture_elixir.ex +0 -409
- package/tests/fixtures/fixture_go.go +0 -341
- package/tests/fixtures/fixture_haskell.hs +0 -250
- package/tests/fixtures/fixture_java.java +0 -430
- package/tests/fixtures/fixture_javascript.js +0 -383
- package/tests/fixtures/fixture_kotlin.kt +0 -451
- package/tests/fixtures/fixture_lua.lua +0 -276
- package/tests/fixtures/fixture_perl.pl +0 -310
- package/tests/fixtures/fixture_php.php +0 -433
- package/tests/fixtures/fixture_python.py +0 -502
- package/tests/fixtures/fixture_ruby.rb +0 -345
- package/tests/fixtures/fixture_rust.rs +0 -380
- package/tests/fixtures/fixture_scala.scala +0 -398
- package/tests/fixtures/fixture_shell.sh +0 -276
- package/tests/fixtures/fixture_swift.swift +0 -397
- package/tests/fixtures/fixture_typescript.ts +0 -434
- package/tests/fixtures/fixture_zig.zig +0 -295
- package/tests/fixtures_attended_results/project/compress-line-numbers.json +0 -5
- package/tests/fixtures_attended_results/project/compress.json +0 -5
- package/tests/fixtures_attended_results/project/enable-static-check-invalid-command.json +0 -5
- package/tests/fixtures_attended_results/project/enable-static-check-valid.json +0 -5
- package/tests/fixtures_attended_results/project/files-static-check.json +0 -5
- package/tests/fixtures_attended_results/project/find-line-numbers.json +0 -5
- package/tests/fixtures_attended_results/project/find.json +0 -5
- package/tests/fixtures_attended_results/project/get-base-path.json +0 -5
- package/tests/fixtures_attended_results/project/git-check-clean.json +0 -5
- package/tests/fixtures_attended_results/project/git-check-dirty.json +0 -5
- package/tests/fixtures_attended_results/project/git-path.json +0 -5
- package/tests/fixtures_attended_results/project/git-wt-create-invalid.json +0 -5
- package/tests/fixtures_attended_results/project/git-wt-create-valid.json +0 -5
- package/tests/fixtures_attended_results/project/git-wt-delete-nonexistent.json +0 -5
- package/tests/fixtures_attended_results/project/git-wt-delete-valid.json +0 -5
- package/tests/fixtures_attended_results/project/git-wt-name.json +0 -5
- package/tests/fixtures_attended_results/project/static-check.json +0 -5
- package/tests/fixtures_attended_results/project/summarize.json +0 -5
- package/tests/fixtures_attended_results/project/tokens.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_c.c.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_cpp.cpp.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_csharp.cs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_elixir.ex.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_go.go.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_haskell.hs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_java.java.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_javascript.js.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_kotlin.kt.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_lua.lua.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_perl.pl.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_php.php.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_python.py.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_ruby.rb.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_rust.rs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_scala.scala.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_shell.sh.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_swift.swift.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_typescript.ts.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_zig.zig.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_c.c.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_cpp.cpp.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_csharp.cs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_elixir.ex.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_go.go.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_haskell.hs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_java.java.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_javascript.js.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_kotlin.kt.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_lua.lua.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_perl.pl.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_php.php.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_python.py.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_ruby.rb.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_rust.rs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_scala.scala.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_shell.sh.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_swift.swift.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_typescript.ts.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_zig.zig.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_c.c.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_cpp.cpp.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_csharp.cs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_elixir.ex.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_go.go.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_haskell.hs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_java.java.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_javascript.js.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_kotlin.kt.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_lua.lua.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_perl.pl.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_php.php.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_python.py.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_ruby.rb.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_rust.rs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_scala.scala.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_shell.sh.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_swift.swift.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_typescript.ts.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find/fixture_zig.zig.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_c.c.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_cpp.cpp.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_csharp.cs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_elixir.ex.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_go.go.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_haskell.hs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_java.java.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_javascript.js.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_kotlin.kt.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_lua.lua.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_perl.pl.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_php.php.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_python.py.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_ruby.rb.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_rust.rs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_scala.scala.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_shell.sh.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_swift.swift.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_typescript.ts.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_zig.zig.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_c.c.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_cpp.cpp.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_csharp.cs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_elixir.ex.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_go.go.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_haskell.hs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_java.java.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_javascript.js.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_kotlin.kt.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_lua.lua.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_perl.pl.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_php.php.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_python.py.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_ruby.rb.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_rust.rs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_scala.scala.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_shell.sh.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_swift.swift.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_typescript.ts.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-summarize/fixture_zig.zig.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_c.c.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_cpp.cpp.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_csharp.cs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_elixir.ex.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_go.go.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_haskell.hs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_java.java.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_javascript.js.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_kotlin.kt.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_lua.lua.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_perl.pl.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_php.php.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_python.py.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_ruby.rb.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_rust.rs.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_scala.scala.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_shell.sh.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_swift.swift.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_typescript.ts.json +0 -5
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_zig.zig.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_c.c.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_cpp.cpp.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_csharp.cs.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_elixir.ex.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_go.go.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_haskell.hs.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_java.java.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_javascript.js.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_kotlin.kt.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_lua.lua.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_perl.pl.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_php.php.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_python.py.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_ruby.rb.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_rust.rs.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_scala.scala.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_shell.sh.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_swift.swift.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_typescript.ts.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_zig.zig.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_c.c.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_cpp.cpp.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_csharp.cs.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_elixir.ex.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_go.go.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_haskell.hs.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_java.java.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_javascript.js.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_kotlin.kt.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_lua.lua.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_perl.pl.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_php.php.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_python.py.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_ruby.rb.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_rust.rs.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_scala.scala.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_shell.sh.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_swift.swift.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_typescript.ts.json +0 -5
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_zig.zig.json +0 -5
- package/tests/helpers.ts +0 -236
- package/tests/oracle-project.test.ts +0 -67
- package/tests/oracle-standalone.test.ts +0 -68
- package/tests/prompt-command-summary.test.ts +0 -36
- package/tests/prompt-rendering.test.ts +0 -103
- package/tests/python_oracle_stubs/tiktoken.py +0 -76
- package/tests/release-workflow.test.ts +0 -195
- package/tests/static-check-bundled.test.ts +0 -332
|
@@ -1,779 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "PI-useReq Requirements"
|
|
3
|
-
description: Software requirements specification
|
|
4
|
-
version: "0.0.77"
|
|
5
|
-
date: "2026-07-13"
|
|
6
|
-
author: "OpenAI Codex"
|
|
7
|
-
scope:
|
|
8
|
-
paths:
|
|
9
|
-
- "src/**/*.ts"
|
|
10
|
-
- "scripts/**"
|
|
11
|
-
- ".github/workflows/**"
|
|
12
|
-
- "tests/**/*.ts"
|
|
13
|
-
- "tests/python_oracle_stubs/**/*.py"
|
|
14
|
-
- "tests/fixtures_attended_results/**/*.json"
|
|
15
|
-
excludes:
|
|
16
|
-
- "node_modules/**"
|
|
17
|
-
- "dist/**"
|
|
18
|
-
- "build/**"
|
|
19
|
-
- "target/**"
|
|
20
|
-
- ".venv/**"
|
|
21
|
-
visibility: "draft"
|
|
22
|
-
tags: ["markdown", "requirements", "typescript", "cli", "pi-extension"]
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
# PI-useReq Requirements
|
|
26
|
-
|
|
27
|
-
## 1. Introduction
|
|
28
|
-
|
|
29
|
-
### 1.1 Document Rules
|
|
30
|
-
- This document MUST be written and maintained in English.
|
|
31
|
-
- Requirement statements MUST use RFC 2119 keywords exclusively and MUST NOT use "shall".
|
|
32
|
-
- Requirement bullets MUST use unique, stable IDs with prefixes limited to PRJ, CTN, DES, REQ, and TST.
|
|
33
|
-
- Requirement IDs MUST NOT be renumbered, reused, or repurposed outside the dedicated renumbering workflow.
|
|
34
|
-
- Each requirement MUST be atomic, single-sentence, and testable, with a target length of 35 words or fewer.
|
|
35
|
-
- This document MUST describe observed implementation state, including limitations and partial behavior.
|
|
36
|
-
- Future edits MUST update only `date` and `version` in the YAML front matter and MUST NOT add in-document revision history.
|
|
37
|
-
|
|
38
|
-
### 1.2 Project Scope
|
|
39
|
-
PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone extension-debug surface for requirements-oriented prompt delivery, source summarization, static-check orchestration, prompt-command-owned repository/worktree orchestration, offline extension contract validation, and npm release automation. Implemented UI is the pi selection/input/editor/status/notification surface. No standalone GUI code is present. `scripts/` contains the standalone harness, bash wrapper, and support modules. `.github/workflows/` contains the npm release workflow in this revision.
|
|
40
|
-
|
|
41
|
-
## 2. Project Requirements
|
|
42
|
-
|
|
43
|
-
### 2.1 Project Functions
|
|
44
|
-
- **PRJ-001**: MUST expose bundled prompt-backed slash commands with configuration-derived path substitutions plus a dedicated `req-references` slash command for direct reference-file regeneration.
|
|
45
|
-
- **PRJ-002**: MUST expose CLI and agent-tool interfaces for token counting, source summarization, compression, construct search, and static-check execution, plus an agent-tool interface for reference-file generation.
|
|
46
|
-
- **PRJ-003**: MUST provide an interactive pi configuration surface for project paths, git automation, static-check entries, active-tool enablement, notifications, and debug logging controls.
|
|
47
|
-
- **PRJ-004**: MUST provide slash-command-owned git validation plus bundled-prompt worktree orchestration and dedicated `req-references` direct reference-file commit orchestration using runtime project and git paths.
|
|
48
|
-
- **PRJ-005**: MUST install bundled prompts, git execution instructions, documentation templates, and guidelines under the extension installation path and expose them through shared runtime path context.
|
|
49
|
-
- **PRJ-006**: MUST expose a standalone debug surface that inventories extension commands and tools, replays handlers offline, captures registration and UI metadata, provides a bash wrapper, and optionally compares the contract against the official pi SDK runtime.
|
|
50
|
-
- **PRJ-007**: MUST intercept pi CLI lifecycle hooks to maintain context telemetry, prompt workflow state, session timing, and selected debug logging for prompt orchestration and tool execution.
|
|
51
|
-
- **PRJ-008**: MUST expose a dedicated `req-reset` slash command for non-agentic prompt-orchestration recovery, base-path session restoration, and force cleanup of generated worktrees plus branches.
|
|
52
|
-
|
|
53
|
-
### 2.2 Project Constraints
|
|
54
|
-
- **CTN-001**: MUST persist local project configuration only at `<base-path>/.pi-usereq.json` with default `docs-dir=pi-usereq/docs`, `tests-dir=tests`, and `src-dir=["src"]`.
|
|
55
|
-
- **CTN-018**: MUST persist global configuration only at `~/.config/pi-usereq/config.json` with default `AUTO_GIT_COMMIT=enable`, `GIT_WORKTREE_ENABLED=enable`, and `GIT_WORKTREE_PREFIX=PI-useReq-`.
|
|
56
|
-
- **CTN-002**: MUST collect project-wide source files through `git ls-files --cached --others --exclude-standard`; non-git project scans therefore fail instead of falling back to directory walking.
|
|
57
|
-
- **CTN-003**: MUST limit project-wide source discovery to extensions listed in `STATIC_CHECK_EXT_TO_LANG`; analyzer-only aliases such as `.cc`, `.cxx`, `.hpp`, and `.exs` remain undiscoverable.
|
|
58
|
-
- **CTN-004**: MUST exclude `tests/fixtures` and `<tests-dir>/fixtures` from project-wide static-check execution.
|
|
59
|
-
- **CTN-005**: MUST declare an ECMAScript module package and TypeScript `NodeNext` module semantics for runtime and import resolution.
|
|
60
|
-
- **CTN-006**: MUST type-check in strict `noEmit` mode and include both `src/**/*.ts` and `tests/**/*.ts` in the TypeScript program.
|
|
61
|
-
- **CTN-007**: MUST declare `./src/index.ts` as the only pi extension entry in package metadata.
|
|
62
|
-
- **CTN-008**: MUST expose package scripts for test, watch-mode test, and CLI execution through `node --import tsx`.
|
|
63
|
-
- **CTN-009**: MUST implement extension debugging outside `src/index.ts` business logic and drive extension behavior only through the default extension export, registered commands, registered tools, and registered events.
|
|
64
|
-
- **CTN-010**: MUST execute offline harness flows without requiring pi.dev services or `docs/pi.dev/agent-document-manifest.json`.
|
|
65
|
-
- **CTN-011**: MUST store bundled prompt, instruction, template, and guideline resources under `src/resources/{prompts,instructions,templates,guidelines}` and install them under `<installation-path>/resources/{prompts,instructions,templates,guidelines}`.
|
|
66
|
-
- **CTN-012**: MUST NOT persist derived `base-path`, `git-path`, `parent-path`, `base-dir`, `context-path`, `worktree-dir`, or `worktree-path` in local or global configuration files.
|
|
67
|
-
- **CTN-013**: MUST default `DEBUG_ENABLED=disable`, `DEBUG_LOG_FILE=/tmp/PI-useReq.json`, `DEBUG_STATUS_CHANGES=disable`, `DEBUG_WORKFLOW_EVENTS=disable`, `DEBUG_LOG_ON_STATUS=running`, `DEBUG_ENABLED_TOOLS=[]`, and `DEBUG_ENABLED_PROMPTS=[]` in persisted local configuration.
|
|
68
|
-
- **CTN-014**: MUST serialize every configured or derived path without a trailing `/`.
|
|
69
|
-
- **CTN-015**: MUST reserve `*-path` names for absolute paths and `*-dir` names for relative paths.
|
|
70
|
-
- **CTN-016**: MUST NOT modify any path under `docs/` during analysis, implementation, verification, or bug fixing.
|
|
71
|
-
- **CTN-017**: MUST NOT modify any path under `pi.dev-src/` during analysis, implementation, verification, or bug fixing.
|
|
72
|
-
- **CTN-019**: MUST persist local `DEBUG_TOOL_COMMANDS_ENABLED` with allowed values `enable` and `disable`, defaulting to `disable`.
|
|
73
|
-
- **CTN-020**: MUST declare `tsx` as a runtime `package.json` dependency so `node --import tsx` package scripts, the `postinstall` checker installer, and the `.ts` extension entry resolve on clean consumer installs.
|
|
74
|
-
|
|
75
|
-
## 3. Requirements
|
|
76
|
-
|
|
77
|
-
### 3.1 Design and Implementation
|
|
78
|
-
- **DES-001**: MUST implement the standalone executable in `src/cli.ts` as flag parsing plus dispatch to `tool-runner.ts` or `runStaticCheck`.
|
|
79
|
-
- **DES-002**: MUST implement extension activation in `src/index.ts` by registering bundled prompt commands, dedicated `req-references` command orchestration, agent tools, config commands, and shared pi CLI lifecycle-hook wrappers.
|
|
80
|
-
- **DES-003**: MUST represent parsed source constructs as `SourceElement` instances produced by `SourceAnalyzer` and enriched with signatures, hierarchy, visibility, inheritance, body annotations, and Doxygen fields.
|
|
81
|
-
- **DES-012**: MUST implement bundled prompt-command git validation and worktree lifecycle logic in `src/core/prompt-command-runtime.ts` without invoking extension custom-tool executors from `src/core/tool-runner.ts`.
|
|
82
|
-
- **DES-013**: MUST implement dedicated `req-references` git-validation, reference-write, staging, commit, and clean-repository verification logic in `src/core/req-references-command.ts` without starting an LLM session or creating a worktree.
|
|
83
|
-
- **DES-014**: MUST implement dedicated `req-reset` recovery and cleanup orchestration in `src/core/req-reset-command.ts`, reusing shared base-path restoration helpers without starting an LLM session or creating a worktree.
|
|
84
|
-
- **DES-004**: MUST implement modular static-check execution through debug-capable `StaticCheckBase` and user-facing `StaticCheckCommand`, selected by `dispatchStaticCheckForFile`.
|
|
85
|
-
- **DES-005**: MUST centralize project file collection, token counting, summary generation, reference-file generation, compression, construct search, and static-check execution in `src/core/tool-runner.ts`.
|
|
86
|
-
- **DES-006**: MUST reuse shared markdown and text renderers for CLI and agent-tool compression plus construct-search outputs, preserving source-leading tabs in emitted excerpts instead of dedicated agent-tool JSON payload builders.
|
|
87
|
-
- **DES-007**: MUST implement the standalone debug surface in `scripts/debug-extension.ts`, `scripts/pi-usereq-debug.sh`, and `scripts/lib/` recording and SDK-probe modules without altering extension runtime control flow.
|
|
88
|
-
- **DES-008**: MUST wrap affected agent-tool executions as one monolithic content text block plus minimal execution-only details instead of mirrored structured JSON payloads.
|
|
89
|
-
- **DES-009**: MUST treat `docs/pi.dev/coding-agent-docs/` and documents referenced by `docs/pi.dev/agent-document-manifest.json` as the authoritative read-only contract for new or modified software that interfaces with the pi.dev CLI.
|
|
90
|
-
- **DES-010**: MUST centralize event-driven context snapshots, run-timing state, prompt-orchestration workflow state, and status-bar rendering through shared extension-status helpers.
|
|
91
|
-
- **DES-011**: MUST implement `.github/workflows/release-npm.yml` as a two-job GitHub Actions pipeline where `check-branch` gates `build-release`, preserving changelog-driven GitHub Release creation while adding npm publication.
|
|
92
|
-
- **DES-015**: MUST implement config-gated `debug-compress`, `debug-references`, `debug-static-check`, and `debug-tokens` slash-command wrappers in `src/index.ts` that reuse existing tool-runner execution paths.
|
|
93
|
-
- **DES-016**: MUST deliver rendered bundled-prompt content to the LLM through `sendMessage` as a `display:false` custom message with `triggerTurn:true` and MUST NOT use `sendUserMessage` when `sendMessage` is available.
|
|
94
|
-
- **DES-017**: MUST declare `pyright`, `ruff`, and `eslint` as pinned caret-range npm dependencies and register a `postinstall` script that installs bundled static checkers.
|
|
95
|
-
- **DES-018**: MUST resolve checker executables by probing bundled `node_modules/.bin` paths relative to the installation path before falling back to `PATH` scan.
|
|
96
|
-
- **DES-019**: MUST resolve the `%%INSTALLATION_PATH%%` keyword inside static-check `Command` `cmd` fields to the runtime installation path within `resolveCheckerExecutable` before executable probing.
|
|
97
|
-
- **DES-020**: MUST extend `scripts/install-static-checkers.ts` to best-effort approve pending npm install scripts for bundled checker dependencies before probing bundled executables.
|
|
98
|
-
|
|
99
|
-
### 3.2 Functions
|
|
100
|
-
- **REQ-001**: MUST access bundled prompts, git execution instructions, templates, and guidelines from `<installation-path>/resources` without requiring user-home resource copies before prompt or tool execution.
|
|
101
|
-
- **REQ-002**: MUST replace `%%DOC_PATH%%`, `%%GUIDELINES_*%%`, `%%TEMPLATE_PATH%%`, `%%SRC_PATHS%%`, and `%%TEST_PATH%%` when rendering prompts.
|
|
102
|
-
- **REQ-266**: MUST replace `%%PROJECT_BASE%%`, `%%CONTEXT_PATH%%`, `%%INSTALLATION_PATH%%`, `%%CONFIG_PATH%%`, and `%%ARGS%%` when rendering prompts.
|
|
103
|
-
- **REQ-003**: MUST rewrite legacy `req --...` prompt text references to surviving internal tool names and slash-command-owned runtime behaviors.
|
|
104
|
-
- **REQ-004**: MUST register bundled prompt-backed `req-<prompt>` commands using the first Markdown `# ` heading as description, run prompt preflight/worktree orchestration, and send rendered prompt content as a user message.
|
|
105
|
-
- **REQ-298**: MUST register `req-references` as a dedicated extension command with description `Write a REFERENCES.md using the project's source code` and MUST NOT depend on a bundled prompt Markdown file.
|
|
106
|
-
- **REQ-211**: MUST replace `%%PROMPT%%` with the current prompt name without the `req-` prefix when rendering bundled prompts and bundled commit instructions.
|
|
107
|
-
- **REQ-213**: MUST replace prompt token `%%COMMIT%%` with rendered `<installation-path>/resources/instructions/git_commit.md` when `AUTO_GIT_COMMIT=enable`, and with rendered `<installation-path>/resources/instructions/git_read-only.md` when `AUTO_GIT_COMMIT=disable`.
|
|
108
|
-
- **REQ-214**: MUST preprocess bundled `git_commit.md` and `git_read-only.md` with the same runtime token-replacement rules used for prompts before injecting them through `%%COMMIT%%`.
|
|
109
|
-
- **REQ-005**: MUST expose `files-tokens`, `files-summarize`, `files-compress`, and `files-search` only through agent-tool registration.
|
|
110
|
-
- **REQ-044**: MUST expose `summarize`, `references`, `compress`, `search`, `tokens`, `files-static-check`, and `static-check` only through agent-tool registration.
|
|
111
|
-
- **REQ-293**: MUST make `references` scan configured `src-dir` files, generate the same file-structure-plus-summary markdown as `summarize`, and overwrite `<base-path>/<docs-dir>/REFERENCES.md`.
|
|
112
|
-
- **REQ-294**: MUST make `references` return `success` through `content[0].text` after `REFERENCES.md` is overwritten and MUST NOT return generated reference markdown to the LLM.
|
|
113
|
-
- **REQ-295**: MUST make `references` return `error: <diagnostic>` through `content[0].text` when source discovery, markdown generation, or `REFERENCES.md` writing fails.
|
|
114
|
-
- **REQ-296**: MUST preserve `references` `details` as `execution` metadata only, with numeric `code` and optional normalized residual diagnostics.
|
|
115
|
-
- **REQ-297**: MUST register `references` with machine-oriented descriptions describing configured `src-dir` plus `docs-dir` scope, overwrite behavior, status-only text contract, and stable failure conditions.
|
|
116
|
-
- **REQ-046**: MUST implement a recording extension API supporting `registerCommand`, `registerTool`, `on`, `getAllTools`, `getActiveTools`, `setActiveTools`, and `sendUserMessage`, and preserve stable registration order in serialized snapshots.
|
|
117
|
-
- **REQ-047**: MUST implement a recording command context UI supporting `select`, `input`, `notify`, `setStatus`, and `setEditorText`, and serialize queued inputs plus emitted UI side effects.
|
|
118
|
-
- **REQ-048**: MUST load the target extension via its default export, invoke it as a black box, and execute offline replays only through registered `session_start`, command, and tool handlers.
|
|
119
|
-
- **REQ-049**: MUST set both `ctx.cwd` and `process.cwd()` from the requested debug cwd during offline replay and report both effective values in the result payload.
|
|
120
|
-
- **REQ-050**: MUST expose harness subcommands `inspect`, `session-start`, `command`, `tool`, and `sdk-smoke`.
|
|
121
|
-
- **REQ-051**: MUST support `json` and `pretty` output modes for every harness subcommand and default to the human-readable mode when none is specified.
|
|
122
|
-
- **REQ-052**: MUST make `inspect` emit commands, tools, event-handler names, active tools, sent user messages, and a manual containing concrete usage examples for every registered `req-*` command and agent tool.
|
|
123
|
-
- **REQ-053**: MUST make `session-start` invoke all registered `session_start` handlers and capture final active tools, statuses, notifications, editor text, and sent user messages.
|
|
124
|
-
- **REQ-054**: MUST make `command` invoke the named registered command handler with supplied args and capture sent user messages plus UI side effects in the result payload.
|
|
125
|
-
- **REQ-055**: MUST make `tool` invoke the named registered tool `execute` handler with supplied params and capture returned `content`, returned `details`, and UI side effects.
|
|
126
|
-
- **REQ-056**: MUST make `sdk-smoke` use `DefaultResourceLoader` and `createAgentSession(...)` to load an explicit extension path and inventory extension-owned commands and tools from the official runtime.
|
|
127
|
-
- **REQ-057**: MUST compare offline and SDK inventories for command names, command descriptions, tool names, tool descriptions, parameter-schema presence, normalized provenance/sourceInfo, and active tools after `session_start`.
|
|
128
|
-
- **REQ-058**: MUST exit with non-zero status when a requested harness command or tool is not registered or when SDK parity loading fails.
|
|
129
|
-
- **REQ-059**: MUST expose package scripts `debug:ext`, `debug:ext:inspect`, `debug:ext:session`, `debug:ext:command`, `debug:ext:tool`, and `debug:ext:sdk`.
|
|
130
|
-
- **REQ-060**: MUST provide `scripts/pi-usereq-debug.sh` as a bash wrapper for `scripts/debug-extension.ts`.
|
|
131
|
-
- **REQ-061**: MUST make `scripts/pi-usereq-debug.sh` expose `inspect`, `session`, `command`, `prompt`, `tool`, `sdk`, `raw`, and `help` subcommands.
|
|
132
|
-
- **REQ-062**: MUST make `scripts/pi-usereq-debug.sh` default to `src/index.ts` plus caller cwd, permit later `--cwd` and `--extension` overrides, auto-prefix bare prompt names with `req-`, and map `session`/`sdk` to `session-start`/`sdk-smoke`.
|
|
133
|
-
- **REQ-065**: MUST make `scripts/pi-usereq-debug.sh tool` accept `--args <text>` by forwarding a JSON object through `--params`, while preserving direct `--params <json>` passthrough.
|
|
134
|
-
- **REQ-006**: MUST provide a `pi-usereq` menu that edits project directories, git automation, static-check settings, tools, notifications, and debug settings, and saves every change immediately.
|
|
135
|
-
- **REQ-314**: MUST expose `Show local configuration` and `Show global configuration` in the `pi-usereq` menu.
|
|
136
|
-
- **REQ-236**: MUST persist `DEBUG_ENABLED` with allowed values `enable` and `disable`, defaulting to `disable`.
|
|
137
|
-
- **REQ-237**: MUST persist `DEBUG_LOG_FILE` as a non-empty string defaulting to `/tmp/PI-useReq.json`, and resolve relative paths against the original project base when writing logs.
|
|
138
|
-
- **REQ-238**: MUST persist `DEBUG_LOG_ON_STATUS` with allowed values `any`, `idle`, `checking`, `running`, `merging`, and `error`, defaulting to `running`.
|
|
139
|
-
- **REQ-239**: MUST persist enabled debug-tool names and enabled debug-prompt names as normalized arrays defaulting to empty.
|
|
140
|
-
- **REQ-254**: MUST persist `DEBUG_STATUS_CHANGES` with allowed values `enable` and `disable`, defaulting to `disable`.
|
|
141
|
-
- **REQ-277**: MUST persist `DEBUG_WORKFLOW_EVENTS` with allowed values `enable` and `disable`, defaulting to `disable`.
|
|
142
|
-
- **REQ-240**: MUST provide a `Debug` submenu with rows `Debug`, `Log file`, `Log on status`, `Status changes`, `Workflow events`, and per-item toggles for custom tools, embedded tools, and `req-*` prompts.
|
|
143
|
-
- **REQ-241**: MUST dim and disable every `Debug` submenu row except `Debug` whenever `DEBUG_ENABLED=disable`.
|
|
144
|
-
- **REQ-242**: MUST derive per-tool debug rows from `PI_USEREQ_CUSTOM_TOOL_NAMES` and `PI_USEREQ_EMBEDDED_TOOL_NAMES`.
|
|
145
|
-
- **REQ-243**: MUST derive per-prompt debug rows from `PROMPT_COMMAND_NAMES` as `req-*` names.
|
|
146
|
-
- **REQ-244**: MUST append one JSON entry to `DEBUG_LOG_FILE` for each selected custom or embedded tool execution, including tool name, workflow state, input, result, and error flag.
|
|
147
|
-
- **REQ-245**: MUST append JSON debug entries from selected `req-*` commands for required-doc checks, worktree creation, merge finalization, worktree deletion, and workflow events when `DEBUG_WORKFLOW_EVENTS=enable`.
|
|
148
|
-
- **REQ-255**: MUST append `workflow_state` debug entries for every actual prompt-orchestration state transition only when `DEBUG_STATUS_CHANGES=enable`.
|
|
149
|
-
- **REQ-276**: MUST complete orchestrated session closure when pi lifecycle events expose non-command contexts without `switchSession()`, while keeping the client attached to the original `base-path` session.
|
|
150
|
-
- **REQ-278**: MUST preserve the in-memory prompt workflow state plus pending or active prompt request across switch-triggered `session_shutdown` events until the initiating handler or replacement-session lifecycle hooks complete prompt orchestration.
|
|
151
|
-
- **REQ-279**: MUST resynchronize replacement-session lifecycle handlers from persisted prompt-command runtime state when the active session file matches the forked execution session, so post-switch workflow transitions performed by the initiating handler remain visible to later `before_agent_start`, `agent_start`, `agent_end`, and `session_shutdown` handling.
|
|
152
|
-
- **REQ-280**: MUST ignore stale extension-context render or prompt-closure notification attempts raised after session replacement or reload and continue prompt-orchestration closure without surfacing stale-instance exceptions to pi CLI.
|
|
153
|
-
- **REQ-281**: MUST record and persist the `running` workflow transition immediately after prompt-session handoff begins, and MUST NOT delay that transition until an async replacement-session `sendUserMessage(...)` helper resolves after the full prompt run completes.
|
|
154
|
-
- **REQ-282**: MUST finalize successful worktree-backed closure from restored `base-path` using persisted execution-session header metadata and verified worktree artifacts even when pi CLI end-of-session processing has already moved the live runtime away from `worktree-path` before prompt-end handling.
|
|
155
|
-
- **REQ-246**: MUST suppress all debug logging whenever `DEBUG_ENABLED=disable`.
|
|
156
|
-
- **REQ-247**: MUST log selected debug entries only when `DEBUG_LOG_ON_STATUS` equals the current workflow state, or when `DEBUG_LOG_ON_STATUS=any`.
|
|
157
|
-
- **REQ-007**: MUST provide an `Enable tools` submenu with enable-all, disable-all, reset-defaults, and grouped per-tool toggles ordered as custom tools first and embedded pi CLI tools second.
|
|
158
|
-
- **REQ-315**: MUST persist every `Enable tools` menu flag only in global configuration.
|
|
159
|
-
- **REQ-231**: MUST order non-`files-*` custom-tool toggles alphabetically, append `files-*` custom-tool toggles alphabetically, and place default-disabled custom-tool toggles after default-enabled custom-tool toggles inside each custom subgroup.
|
|
160
|
-
- **REQ-232**: MUST order embedded-tool toggles alphabetically and place default-disabled embedded-tool toggles after default-enabled embedded-tool toggles.
|
|
161
|
-
- **REQ-063**: MUST derive configurable embedded pi CLI tools from runtime builtin tools named `read`, `bash`, `edit`, `write`, `find`, `grep`, and `ls`.
|
|
162
|
-
- **REQ-064**: MUST default `files-tokens`, `files-summarize`, `files-compress`, `files-search`, `summarize`, `references`, `compress`, `search`, `tokens`, `files-static-check`, `static-check`, plus embedded `read`, `bash`, `edit`, and `write` to enabled.
|
|
163
|
-
- **REQ-066**: MUST omit `reset-context` and `context-reset` fields from persisted local and global configuration.
|
|
164
|
-
- **REQ-067**: MUST send every bundled prompt-backed `req-<prompt>` payload into the current active session.
|
|
165
|
-
- **REQ-068**: MUST use one prompt-delivery path that sends bundled prompt-backed `req-<prompt>` payloads through the forked execution session by using only the replacement-session context for post-switch session-bound operations.
|
|
166
|
-
- **REQ-334**: MUST NOT display rendered prompt content on screen when delivering bundled prompt-backed `req-<prompt>` commands and MUST deliver the full rendered content only to the LLM agent.
|
|
167
|
-
- **REQ-335**: MUST display a command invocation summary on screen for every bundled prompt-backed `req-<prompt>` command containing the command name, passed arguments, and active configuration.
|
|
168
|
-
- **REQ-336**: MUST render the command invocation summary with the command name without the `req-` prefix in uppercase and the user request arguments.
|
|
169
|
-
- **REQ-337**: MUST include `docs-dir`, `src-dir`, `tests-dir`, enabled context files, `AUTO_GIT_COMMIT`, effective `GIT_WORKTREE_ENABLED`, `GIT_WORKTREE_PREFIX`, enabled static-check languages, and `enabled-tools` in the command invocation summary.
|
|
170
|
-
- **REQ-338**: MUST render `none` for the command invocation summary `context files`, `static code checks`, and `enabled tools` fields whenever their respective enabled-item list is empty.
|
|
171
|
-
- **REQ-008**: MUST provide a `Language static code checkers` submenu that adds, views, confirms-before-removes, and resets global Command checker entries, plus toggles local per-language enablement.
|
|
172
|
-
- **REQ-160**: MUST hardcode `Command` as the only user-configurable static-check module and omit module-selection UI from static-check configuration menus.
|
|
173
|
-
- **REQ-161**: MUST hide `Dummy` from user-configurable static-check menus while preserving existing-config parsing and debug-driver support for `Dummy` entries.
|
|
174
|
-
- **REQ-248**: MUST render 20 per-language static-check toggle rows between `Reset static code checker` and `Reset defaults`, with right-aligned `on|off` values derived from persisted local enablement.
|
|
175
|
-
- **REQ-249**: MUST persist local `static-check.<language>.enabled` with allowed values `enable|disable` and global `static-check.<language>.checkers` as ordered arrays.
|
|
176
|
-
- **REQ-250**: MUST default global `static-check.C` and `static-check.C++` checker arrays to documented `cppcheck` and `clang-format` Command entries.
|
|
177
|
-
- **REQ-251**: MUST default global `static-check.Python`, `JavaScript`, and `TypeScript` checker arrays to their documented Command entries.
|
|
178
|
-
- **REQ-252**: MUST default every other global `static-check.<language>.checkers` array to `[]`.
|
|
179
|
-
- **REQ-316**: MUST default local `static-check.<language>.enabled` to `enable` when global `checkers` is non-empty, otherwise `disable`.
|
|
180
|
-
- **REQ-009**: MUST refresh shared runtime path context, apply configured startup tools, reset workflow state to `idle` for `session_start` reasons `startup|new|reload`, and publish single-line `pi-usereq` status text.
|
|
181
|
-
- **REQ-109**: MUST omit `current-path`, `base`, `docs`, `src`, and `tests` path fields from the single-line status bar.
|
|
182
|
-
- **REQ-111**: MUST omit prompt-delivery mode fields from the single-line status bar.
|
|
183
|
-
- **REQ-112**: MUST render status-bar field names with the active theme `accent` token and non-error field values with the active theme `warning` token unless a field-specific requirement overrides the value token.
|
|
184
|
-
- **REQ-113**: MUST register shared event wrappers for `resources_discover`, `session_start`, `session_before_switch`, `session_before_fork`, `session_before_compact`, `session_compact`, and `session_shutdown`.
|
|
185
|
-
- **REQ-114**: MUST register shared event wrappers for `session_before_tree`, `session_tree`, `context`, `before_provider_request`, `before_agent_start`, `agent_start`, and `agent_end`.
|
|
186
|
-
- **REQ-115**: MUST register shared event wrappers for `turn_start`, `turn_end`, `message_start`, `message_update`, `message_end`, `tool_execution_start`, and `tool_execution_update`.
|
|
187
|
-
- **REQ-116**: MUST register shared event wrappers for `tool_execution_end`, `model_select`, `tool_call`, `tool_result`, `user_bash`, and `input`.
|
|
188
|
-
- **REQ-117**: MUST route every intercepted hook through `updateExtensionStatus` with the originating hook name and event payload, even when no hook-specific side effect exists.
|
|
189
|
-
- **REQ-118**: MUST obtain latest context-usage facts from `ctx.getContextUsage()` or an equivalent runtime API and store them in extension session state.
|
|
190
|
-
- **REQ-119**: MUST refresh stored context-usage facts during `session_start` and after intercepted events before rebuilding the status bar when newer data is available.
|
|
191
|
-
- **REQ-120**: MUST render single-line status fields in this order: `<extension>:v<version>`, `status`, `branch`, `context`, `elapsed`, `sound`, deriving `<extension>` and `<version>` from runtime extension package metadata.
|
|
192
|
-
- **REQ-121**: MUST render `branch` immediately after `status` with separator ` • ` and the active git branch name.
|
|
193
|
-
- **REQ-283**: MUST resolve `branch` from the current `context-path` git HEAD during every status-bar rebuild so worktree switches and base-path restoration update immediately.
|
|
194
|
-
- **REQ-284**: MUST render `context` immediately after `branch` with separator ` • ` and one fixed-width gauge icon.
|
|
195
|
-
- **REQ-122**: MUST map `context` usage to `▕_▏`, `▕▂▏`, `▕▄▏`, `▕▆▏`, and `▕█▏` for `0`, `>0-<25`, `>=25-<50`, `>=50-<75`, and `>=75` percent bands.
|
|
196
|
-
- **REQ-123**: MUST render `elapsed` immediately after `context` as `⏱︎ <active> ⚑ <last> ⌛︎<total>`.
|
|
197
|
-
- **REQ-124**: MUST render `⏱︎ --:--` when no prompt is active, and `⚑ --:--` plus `⌛︎--:--` until the corresponding timers receive a normally completed prompt duration.
|
|
198
|
-
- **REQ-125**: MUST render timed `elapsed` segments as `M:SS`, keep minutes unbounded above 59, zero-pad seconds to two digits, and preserve `⚑` plus `⌛︎` when escape-triggered cancellation ends the active run.
|
|
199
|
-
- **REQ-126**: MUST render `context` gauge icons below 90 percent with the same non-error theme token used by `status`, and theme `error` at 90 percent or above.
|
|
200
|
-
- **REQ-127**: MUST render `context` as non-blinking theme `error` `▕█▏` when normalized usage is `>=90-<100` percent.
|
|
201
|
-
- **REQ-233**: MUST render `context` as blinking theme `error` `▕█▏` when normalized usage is `>=100` percent and terminal blink control is supported.
|
|
202
|
-
- **REQ-128**: MUST render `context` as theme `error` `▕█▏` when normalized usage is `>=100` percent and terminal blink control is unavailable.
|
|
203
|
-
- **REQ-131**: MUST persist a boot sound level with allowed values `none`, `low`, `mid`, and `high`, defaulting to `none`.
|
|
204
|
-
- **REQ-132**: MUST execute the configured sound command when the corresponding prompt-end sound event toggle is enabled and the active runtime sound level is not `none`.
|
|
205
|
-
- **REQ-133**: MUST persist configurable shell-command strings for sound levels `low`, `mid`, and `high`, and MUST substitute `%%INSTALLATION_PATH%%` with the runtime extension installation path before execution.
|
|
206
|
-
- **REQ-134**: MUST persist a configurable sound-level toggle shortcut, defaulting to `alt+s`.
|
|
207
|
-
- **REQ-285**: MUST load the active runtime sound level from persisted `notify-sound` during `session_start`.
|
|
208
|
-
- **REQ-286**: MUST cycle only the active runtime sound level when the configured shortcut fires.
|
|
209
|
-
- **REQ-287**: MUST NOT update local or global configuration when the configured shortcut fires.
|
|
210
|
-
- **REQ-137**: MUST make the `Notifications` menu render contiguous command-notify, sound, and Pushover configuration blocks in that order and persist all descendant settings only in global configuration.
|
|
211
|
-
- **REQ-163**: MUST persist a global Pushover enable flag defaulting to disabled.
|
|
212
|
-
- **REQ-164**: MUST expose a `Pushover events` submenu and MUST keep non-event Pushover settings directly in `Notifications`.
|
|
213
|
-
- **REQ-165**: MUST order Pushover rows as `Enable pushover`, `Pushover events`, `Pushover priority`, `Pushover title`, `Pushover text`, `Pushover User Key/Delivery Group Key`, and `Pushover Token/API Token Key`.
|
|
214
|
-
- **REQ-234**: MUST keep `Enable pushover` dimmed, fixed at `off`, and non-selectable until both Pushover credential fields contain non-empty strings.
|
|
215
|
-
- **REQ-235**: MUST render the `Pushover text` menu value with escaped `\n`, `\r`, `\t`, `\\`, `\0`, `\b`, `\f`, and `\v` sequences and decode the same sequences from user input before persistence.
|
|
216
|
-
- **REQ-166**: MUST deliver Pushover notifications only when global Pushover is enabled and the corresponding prompt-end Pushover event toggle is enabled.
|
|
217
|
-
- **REQ-167**: MUST deliver Pushover notifications through native Node HTTP or HTTPS requests to `https://api.pushover.net/1/messages.json` and MUST NOT invoke shell commands for Pushover delivery.
|
|
218
|
-
- **REQ-168**: MUST send a Pushover message only when persisted `user` plus `token` values are non-empty for the triggered prompt-end outcome.
|
|
219
|
-
- **REQ-169**: MUST substitute `%%INSTALLATION_PATH%%`, `%%PROMT%%`, `%%BASE%%`, `%%TIME%%`, `%%ARGS%%`, and `%%RESULT%%` at runtime inside `PI_NOTIFY_CMD`.
|
|
220
|
-
- **REQ-172**: MUST persist Pushover priority values `Normal=0` and `High=1`, defaulting to `Normal`.
|
|
221
|
-
- **REQ-174**: MUST persist command-notify event toggles in keys `notify-on-completed`, `notify-on-interrupted`, and `notify-on-failed`, defaulting to completed enabled and interrupted plus failed disabled.
|
|
222
|
-
- **REQ-175**: MUST persist `PI_NOTIFY_CMD` defaulting to `notify-send -i %%INSTALLATION_PATH%%/resources/images/pi.dev.png -a "PI-useReq" "%%PROMT%% @ %%BASE%% [%%TIME%%]" "%%RESULT%%"`.
|
|
223
|
-
- **REQ-176**: MUST implement command-notify exclusively by executing `PI_NOTIFY_CMD` when command-notify is globally enabled and the corresponding prompt-end notify event toggle is enabled.
|
|
224
|
-
- **REQ-178**: MUST persist sound event toggles in keys `notify-sound-on-completed`, `notify-sound-on-interrupted`, and `notify-sound-on-failed`, defaulting to completed enabled and interrupted plus failed disabled.
|
|
225
|
-
- **REQ-179**: MUST label sound rows as `Enable sound (boot value)` and `Sound command (low vol.)`, `Sound command (mid vol.)`, and `Sound command (high vol.)`.
|
|
226
|
-
- **REQ-180**: MUST render `sound` immediately after `elapsed`, showing the active runtime sound level as `none`, `low`, `mid`, or `high`.
|
|
227
|
-
- **REQ-181**: MUST make the `Notifications` menu expose `Enable notification`, `Notification events`, and `Notify command` before sound rows.
|
|
228
|
-
- **REQ-183**: MUST make the `Notifications` menu expose `Sound events` immediately after `Enable sound (boot value)` and before sound hotkey plus command rows.
|
|
229
|
-
- **REQ-288**: MUST persist menu-selected `notify-sound` changes to global configuration without changing the active runtime sound level.
|
|
230
|
-
- **REQ-289**: MUST render configuration-menu sound values from persisted `notify-sound`, even when the active runtime sound level differs.
|
|
231
|
-
- **REQ-184**: MUST persist Pushover event toggles in keys `notify-pushover-on-completed`, `notify-pushover-on-interrupted`, and `notify-pushover-on-failed`, defaulting to completed enabled and interrupted plus failed disabled.
|
|
232
|
-
- **REQ-185**: MUST persist `Pushover title` defaulting to `%%PROMT%% @ %%BASE%% [%%TIME%%]` and `Pushover text` defaulting to `%%RESULT%%\n%%ARGS%%`.
|
|
233
|
-
- **REQ-186**: MUST substitute `%%PROMT%%`, `%%BASE%%`, `%%TIME%%`, `%%ARGS%%`, and `%%RESULT%%` at runtime inside `Pushover title` and `Pushover text`.
|
|
234
|
-
- **REQ-187**: MUST render `%%BASE%%` as static `base-path` relative to user home using `~/...` form and `%%TIME%%` as final elapsed `M:SS`.
|
|
235
|
-
- **REQ-188**: MUST label notification-event rows as `Prompt completed`, `Prompt interrupted`, and `Prompt failed`.
|
|
236
|
-
- **REQ-190**: MUST label top-level rows as `Document directory`, `Source-code directories`, `Unit tests directory`, `Context Files`, `Auto git commit`, `Git worktree`, `Worktree prefix`, `Language static code checkers`, `Enable tools`, `Notifications`, `Debug`, `Show local configuration`, and `Show global configuration`.
|
|
237
|
-
- **REQ-191**: MUST order top-level rows as `Document directory`, `Source-code directories`, `Unit tests directory`, `Context Files`, `Auto git commit`, `Git worktree`, `Worktree prefix`, `Language static code checkers`, `Enable tools`, `Notifications`, and `Debug`.
|
|
238
|
-
- **REQ-320**: MUST order `Show local configuration` after `Debug`, `Show global configuration` after `Show local configuration`, and `Reset defaults` last.
|
|
239
|
-
- **REQ-192**: MUST preserve the selected settings-menu row after toggling or editing a setting value.
|
|
240
|
-
- **REQ-193**: MUST append `Reset defaults` as a final row without right-aligned value text in every configuration menu and descendant selector menu, and MUST NOT render `Save and close`.
|
|
241
|
-
- **REQ-194**: MUST make top-level `Reset defaults` show changed values with previous and next values, require explicit confirmation, restore full-tree defaults, and save immediately.
|
|
242
|
-
- **REQ-195**: MUST make non-top-level `Reset defaults` show changed values with previous and next values, require explicit confirmation, restore subtree defaults, and save immediately.
|
|
243
|
-
- **REQ-196**: MUST persist a global command-notify enable flag defaulting to disabled.
|
|
244
|
-
- **REQ-197**: MUST summarize top-level `Notifications` as `notification:<state> • sound:<level> • pushover:<state>`.
|
|
245
|
-
- **REQ-198**: MUST render `Notification events`, `Sound events`, and `Pushover events` as identical submenu lists with right-aligned `on|off` values for `Prompt completed`, `Prompt interrupted`, and `Prompt failed`.
|
|
246
|
-
- **REQ-199**: MUST render `%%RESULT%%` as `successed`, `aborted`, or `failed` for completed, interrupted, and failed prompt-end outcomes.
|
|
247
|
-
- **REQ-200**: MUST run slash-command-owned git validation immediately after the `idle` gate at the start of every `req-*` slash command except `req-reset` and abort before command execution on failure.
|
|
248
|
-
- **REQ-201**: MUST require `REQUIREMENTS.md`, `WORKFLOW.md`, and `REFERENCES.md` before `analyze`, `change`, `check`, `cover`, `fix`, `flowchart`, `new`, `readme`, `recreate`, `refactor`, and `renumber`.
|
|
249
|
-
- **REQ-202**: MUST require `REQUIREMENTS.md` before `implement`, and MUST skip required-doc prechecks for `create`, `references`, `workflow`, and `write`.
|
|
250
|
-
- **REQ-203**: MUST abort a bundled prompt-backed `req-<prompt>` command before worktree creation and prompt dispatch when any prompt-required doc is missing, surfacing the missing canonical path plus remediation prompt command.
|
|
251
|
-
- **REQ-212**: MUST persist global `AUTO_GIT_COMMIT` with allowed values `enable` and `disable`, defaulting to `enable`.
|
|
252
|
-
- **REQ-204**: MUST persist global `GIT_WORKTREE_ENABLED` with allowed values `enable` and `disable`, defaulting to `enable`.
|
|
253
|
-
- **REQ-205**: MUST persist global `GIT_WORKTREE_PREFIX` as the configurable prefix used by `worktree-dir` generation, defaulting to `PI-useReq-`.
|
|
254
|
-
- **REQ-215**: MUST force the effective `GIT_WORKTREE_ENABLED` value to `disable` whenever `AUTO_GIT_COMMIT=disable`.
|
|
255
|
-
- **REQ-216**: MUST render `Git worktree` and `Worktree prefix` as dimmed non-editable rows whenever `AUTO_GIT_COMMIT=disable`.
|
|
256
|
-
- **REQ-206**: MUST derive `worktree-dir` as `<prefix><project>-<sanitized-branch>-<YYYYMMDDHHMMSS>` and `worktree-path` as `<parent-path>/<worktree-dir>/<base-dir>` when worktrees are enabled.
|
|
257
|
-
- **REQ-271**: MUST make bundled prompt-backed `req-<prompt>` commands create one dedicated worktree under `parent-path`, fork the current active session, and switch the active pi CLI session before agent start.
|
|
258
|
-
- **REQ-207**: MUST keep `context-path`, `ctx.cwd`, and `process.cwd()` at `base-path` when worktree creation is disabled.
|
|
259
|
-
- **REQ-208**: MUST restore the original session-backed `base-path`, merge the successful worktree branch from `base-path`, and delete the worktree plus branch after successful closure.
|
|
260
|
-
- **REQ-290**: MUST preserve the successful worktree execution transcript in the restored client-visible session after successful closure.
|
|
261
|
-
- **REQ-291**: MUST detect staged or unstaged `base-path` changes before successful closure merge and execute `git stash`, merge, and `git stash pop` in that order when changes exist.
|
|
262
|
-
- **REQ-292**: MUST complete successful stash-assisted closure without surfacing an error and MUST emit a warning that the restored `base-path` is not clean after merge.
|
|
263
|
-
- **REQ-209**: MUST retain the worktree execution session, worktree, and branch, notify the pi CLI of closure failure, park workflow state in `error`, and leave the original base-path session unresumed when orchestrated session closure is interrupted, failed, aborted, or incomplete.
|
|
264
|
-
- **REQ-221**: MUST maintain one prompt-orchestration state machine with states `idle`, `checking`, `running`, `merging`, and `error`.
|
|
265
|
-
- **REQ-222**: MUST render `status` as the first single-line status field and refresh it on every internal or pi CLI state transition.
|
|
266
|
-
- **REQ-223**: MUST render `status:error` with theme `error` plus terminal blink when supported, and other `status` values with the existing non-error status-bar convention.
|
|
267
|
-
- **REQ-224**: MUST reject every `req-*` slash command except `req-reset` before any operation when workflow state is not `idle`, surface the error to pi CLI, and transition workflow state to `error`.
|
|
268
|
-
- **REQ-225**: MUST make bundled prompt-backed `req-<prompt>` commands transition workflow state to `checking` after the `idle` gate and keep it there through required-doc checks, worktree preparation, and prompt handoff preparation.
|
|
269
|
-
- **REQ-226**: MUST transition workflow state to `error` when required-doc checks or worktree creation fails during bundled prompt-backed `req-<prompt>` preflight.
|
|
270
|
-
- **REQ-227**: MUST make bundled prompt-backed `req-<prompt>` commands transition workflow state to `running` only after required-doc checks, worktree preparation, worktree verification, and prompt-session handoff succeed.
|
|
271
|
-
- **REQ-299**: MUST make `req-references`, after passing the shared `idle` gate, transition workflow state to `checking`, validate slash-command-owned git state, and transition directly to `running` without worktree creation, session switching, or LLM-session initialization.
|
|
272
|
-
- **REQ-300**: MUST make `req-references` execute the same reference-generation and overwrite logic as `references`, writing configured-source reference markdown to `<base-path>/<docs-dir>/REFERENCES.md`.
|
|
273
|
-
- **REQ-301**: MUST make `req-references` stage only updated `<docs-dir>/REFERENCES.md` and create one git commit with exact message `docs(references): Update REFERENCES.md document. [useReq]`.
|
|
274
|
-
- **REQ-302**: MUST make successful `req-references` completion verify repository cleanliness, notify pi CLI success, and transition workflow state to `idle` before the command handler returns.
|
|
275
|
-
- **REQ-303**: MUST make failing `req-references` execution notify pi CLI, transition workflow state to `error`, and surface git or reference-generation failures without LLM-session initialization.
|
|
276
|
-
- **REQ-304**: MUST register `req-reset` as a dedicated extension command with description `Reset req workflow state, restore base-path, and remove generated worktrees` and MUST NOT depend on a bundled prompt Markdown file.
|
|
277
|
-
- **REQ-305**: MUST make `req-reset` execute without prompt dispatch, LLM-session initialization, or worktree creation.
|
|
278
|
-
- **REQ-306**: MUST allow `req-reset` invocation from any current workflow state and MUST NOT reject it when workflow state is not `idle`.
|
|
279
|
-
- **REQ-307**: MUST make `req-reset` preserve the visible execution transcript while restoring the original session-backed `base-path`.
|
|
280
|
-
- **REQ-308**: MUST make `req-reset` restore the original session-backed `base-path` when persisted prompt-orchestration state targets a worktree-backed execution session.
|
|
281
|
-
- **REQ-309**: MUST make `req-reset` force-remove every sibling worktree under `parent-path` whose name matches `<prefix><project>-<sanitized-branch>-<YYYYMMDDHHMMSS>`.
|
|
282
|
-
- **REQ-310**: MUST make `req-reset` force-remove every local branch under `git-path` whose name matches `<prefix><project>-<sanitized-branch>-<YYYYMMDDHHMMSS>`.
|
|
283
|
-
- **REQ-311**: MUST derive `req-reset` cleanup matchers from the same prefix, project, and branch-sanitization rules used by prompt-command worktree generation.
|
|
284
|
-
- **REQ-312**: MUST make successful `req-reset` clear persisted prompt-orchestration state, transition workflow state to `idle`, and notify pi success after cleanup completes.
|
|
285
|
-
- **REQ-313**: MUST make failing `req-reset` surface restoration or cleanup failures, transition workflow state to `error`, and preserve already-completed cleanup effects.
|
|
286
|
-
- **REQ-228**: MUST transition workflow state to `merging` immediately before merge and worktree/branch deletion begin during successful orchestrated session closure.
|
|
287
|
-
- **REQ-229**: MUST transition workflow state to `error` and notify the pi CLI when base-path restoration, merge, or worktree/branch deletion verification fails during orchestrated session closure.
|
|
288
|
-
- **REQ-230**: MUST transition workflow state to `idle` before the orchestrated session-closure handler returns for completed runs.
|
|
289
|
-
- **REQ-219**: MUST verify created worktree registration via `git worktree list`, branch presence via `git branch` list, and filesystem path existence before changing the prompt execution path or dispatching a prompt message.
|
|
290
|
-
- **REQ-256**: MUST store `base-path`, `context-path`, `git-path`, `parent-path`, `base-dir`, `worktree-dir`, `worktree-path`, branch name, original session file, and execution session file inside prompt-orchestration runtime state.
|
|
291
|
-
- **REQ-272**: MUST verify post-switch execution targets before agent start using replacement-session context when available, the persisted execution-session header cwd, and `process.cwd()`, and MUST NOT rely on stale pre-switch session-bound objects.
|
|
292
|
-
- **REQ-257**: MUST keep active-session cwd, `ctx.cwd`, and `process.cwd()` aligned to the current `context-path` before agent start and after authoritative `base-path` restoration during orchestrated session closure.
|
|
293
|
-
- **REQ-258**: MUST verify worktree deletion by confirming absence from `git worktree list`, absence from `git branch` list, and absence of the worktree filesystem path.
|
|
294
|
-
- **REQ-220**: MUST keep `req-<prompt>` implementations independent from extension custom-tool executors so prompt-command source remains unchanged when custom tools are removed.
|
|
295
|
-
- **REQ-210**: MUST define custom `renderResult` for every agent-tool registration, keep collapsed tool rows compact with essential invocation parameters plus result status, and reveal full monolithic tool text only when the tool row is expanded.
|
|
296
|
-
- **REQ-159**: MUST increase `Σ` by each normally completed prompt duration and MUST NOT change `Σ` on escape-triggered cancellation.
|
|
297
|
-
- **REQ-217**: MUST reset `⚑` plus `⌛︎` only during `session_start` with reason `startup` or `reload`.
|
|
298
|
-
- **REQ-173**: MUST optimize every affected agent-tool response by reusing Python-compatible monolithic renderer structure, preserving source-leading tabs in source-derived text, and omitting mirrored JSON bodies, duplicate facts, and caller-known request echoes.
|
|
299
|
-
- **REQ-010**: MUST count tokens with `js-tiktoken` `cl100k_base`, count characters and lines, and make `files-tokens` return the Python-compatible pack-summary text through `content[0].text`.
|
|
300
|
-
- **REQ-011**: MUST make `files-summarize` analyze supported source files and return the Python-compatible summary markdown through `content[0].text`.
|
|
301
|
-
- **REQ-012**: MUST compress supported source files by removing comments and blank lines, preserving full indentation for Python, Haskell, and Elixir, preserving leading-tab indentation for other languages, and optionally preserving original line numbers.
|
|
302
|
-
- **REQ-013**: MUST search explicit files by tag filter and name regex, then return Python-compatible markdown matches with signatures, line ranges, Doxygen bullets, and stripped code excerpts.
|
|
303
|
-
- **REQ-014**: MUST make `summarize` scan configured `src-dir` files and return the Python-compatible file-structure-plus-summary markdown through `content[0].text`.
|
|
304
|
-
- **REQ-015**: MUST make CLI project-scope compression scan configured `src-dir` files and emit Python-compatible compressed markdown blocks for every supported file.
|
|
305
|
-
- **REQ-016**: MUST make `find` scan configured `src-dir` files using the requested tag filter and regular expression, then emit Python-compatible markdown matches.
|
|
306
|
-
- **REQ-017**: MUST make `tokens` count only existing canonical docs `REQUIREMENTS.md`, `WORKFLOW.md`, and `REFERENCES.md`, reuse the `files-tokens` pack-summary text contract, and fail when none exist.
|
|
307
|
-
- **REQ-069**: MUST make `files-tokens` and `tokens` pass exactly one monolithic pack-summary text block to the LLM through `content[0].text`.
|
|
308
|
-
- **REQ-070**: MUST keep affected tool `details` limited to `execution` metadata with numeric `code` and optional `stdout_lines` plus `stderr_lines`.
|
|
309
|
-
- **REQ-071**: MUST keep `files-tokens` and `tokens` content text identical in ordering and headings to the Python pack-summary formatter.
|
|
310
|
-
- **REQ-072**: MUST register `files-tokens` and `tokens` with machine-oriented descriptions describing scope, monolithic text contract, and stable failure conditions.
|
|
311
|
-
- **REQ-073**: MUST omit caller-known request echoes, mirrored file tables, and duplicate metrics from `files-tokens` and `tokens` runtime payloads.
|
|
312
|
-
- **REQ-074**: MUST reserve `files-tokens` and `tokens` `details` for execution metadata and MUST NOT mirror content text or derived guidance there.
|
|
313
|
-
- **REQ-075**: MUST surface `files-tokens` and `tokens` skip or read-error observations through `details.execution` diagnostics instead of structured runtime file entries.
|
|
314
|
-
- **REQ-076**: MUST make `files-summarize` and `summarize` pass exactly one monolithic markdown document to the LLM through `content[0].text`.
|
|
315
|
-
- **REQ-077**: MUST keep `files-summarize` markdown aligned to the Python summary renderer in section ordering and non-source formatting while preserving leading tabs in source-derived lines.
|
|
316
|
-
- **REQ-078**: MUST prepend project-scope `summarize` output with the file-structure markdown block before the per-file summary markdown.
|
|
317
|
-
- **REQ-079**: MUST omit mirrored JSON structures and request echoes from `files-summarize` and `summarize` runtime payloads.
|
|
318
|
-
- **REQ-080**: MUST register `files-summarize` and `summarize` with machine-oriented descriptions describing scope, monolithic markdown contract, and stable failure conditions.
|
|
319
|
-
- **REQ-081**: MUST make `files-compress` and `compress` pass exactly one monolithic markdown document to the LLM through `content[0].text`.
|
|
320
|
-
- **REQ-082**: MUST keep `files-compress` and `compress` content aligned to the Python compression renderer in headers, line-range metadata, code fences, and file ordering while preserving leading tabs in retained source lines.
|
|
321
|
-
- **REQ-083**: MUST make `enableLineNumbers` for `files-compress` and `compress` toggle original source line prefixes inside emitted fenced code blocks without changing header or line-range formatting.
|
|
322
|
-
- **REQ-084**: MUST omit mirrored JSON structures, symbol tables, and duplicate excerpt copies from `files-compress` and `compress` runtime payloads.
|
|
323
|
-
- **REQ-085**: MUST register `files-compress` and `compress` with machine-oriented descriptions describing scope, line-number behavior, monolithic markdown contract, and stable failure conditions.
|
|
324
|
-
- **REQ-086**: MUST preserve `files-compress` and `compress` execution diagnostics only when the underlying compression runner emits residual stderr output.
|
|
325
|
-
- **REQ-087**: MUST keep `files-compress` and `compress` runtime payloads free of structured file-entry mirrors for skips, unsupported extensions, and failures.
|
|
326
|
-
- **REQ-088**: MUST NOT mirror compression markdown or diagnostics into additional JSON payload fields beyond `content[0].text` and `details.execution`.
|
|
327
|
-
- **REQ-089**: MUST make `files-search` and `search` pass exactly one monolithic markdown document to the LLM through `content[0].text`.
|
|
328
|
-
- **REQ-090**: MUST keep `files-search` and `search` content aligned to the Python search renderer in construct headings, line-range lines, Doxygen bullets, and fenced stripped-code excerpts while preserving leading tabs in source-derived lines.
|
|
329
|
-
- **REQ-091**: MUST keep `files-search` and `search` request-scope, regex, tag, and supported-tag facts in registration metadata instead of runtime payload fields.
|
|
330
|
-
- **REQ-092**: MUST make `enableLineNumbers` for `files-search` and `search` toggle original source line prefixes inside emitted fenced code blocks.
|
|
331
|
-
- **REQ-093**: MUST omit mirrored JSON structures, duplicate source excerpts, and request echoes from `files-search` and `search` runtime payloads.
|
|
332
|
-
- **REQ-094**: MUST register `files-search` and `search` with machine-oriented descriptions describing scope, regex semantics, supported tags, monolithic markdown contract, and stable failure conditions.
|
|
333
|
-
- **REQ-095**: MUST preserve search execution diagnostics only when the underlying search runner emits residual stderr output.
|
|
334
|
-
- **REQ-096**: MUST deliver search failure diagnostics through `details.execution` when no markdown match block is available.
|
|
335
|
-
- **REQ-097**: MUST make `files-static-check` and `static-check` pass the monolithic static-check report through `content[0].text`.
|
|
336
|
-
- **REQ-098**: MUST keep `files-static-check` and `static-check` `details` limited to `execution` metadata and MUST NOT mirror selection tables or request echoes there.
|
|
337
|
-
- **REQ-099**: MUST make every affected agent-tool response use `content[0].text` as the sole LLM-facing payload channel.
|
|
338
|
-
- **REQ-100**: MUST keep every affected agent-tool runtime payload free of mirrored JSON conversion logic and free of duplicate content copies across `content` and `details`.
|
|
339
|
-
- **REQ-101**: MUST register every affected agent tool with machine-oriented metadata describing parameters, monolithic text output, minimal `details.execution` metadata, and stable failure conditions.
|
|
340
|
-
- **REQ-102**: MUST keep every affected agent-tool `details.execution` record deterministic across identical inputs by preserving only exit code and normalized residual diagnostics.
|
|
341
|
-
- **REQ-018**: MUST expose the `test-static-check` driver only through standalone CLI `--test-static-check`, dispatching `dummy` or `command` checker subcommands directly.
|
|
342
|
-
- **REQ-019**: MUST resolve each explicit static-check file by extension and run every configured checker only when that language `enabled=enable`, while capturing only failing checker output.
|
|
343
|
-
- **REQ-020**: MUST parse user `--enable-static-check` specs in `LANG=Command,CMD[,PARAM...]` format and normalize supported language names plus `Command` case-insensitively.
|
|
344
|
-
- **REQ-021**: MUST reject user `--enable-static-check` specs with missing `=`, missing `Command`, missing `cmd`, unknown language, or any module other than `Command`.
|
|
345
|
-
- **REQ-022**: MUST preserve persisted `Dummy` static-check entries during config loading and execute them only when present in configuration or `--test-static-check dummy` input.
|
|
346
|
-
- **REQ-023**: MUST require `Command`-module executables to resolve via bundled `node_modules/.bin` or `PATH` before static-check execution.
|
|
347
|
-
- **REQ-030**: MUST set static `base-path` from the bootstrap cwd and static `local-config-path` to `<base-path>/.pi-usereq.json`.
|
|
348
|
-
- **REQ-317**: MUST set static `global-config-path` to `~/.config/pi-usereq/config.json`.
|
|
349
|
-
- **REQ-259**: MUST set dynamic `context-path` from the bootstrap cwd and keep it aligned with `ctx.cwd`.
|
|
350
|
-
- **REQ-103**: MUST resolve static `install-path` from the executing extension entry module.
|
|
351
|
-
- **REQ-269**: MUST derive static `template-path` and `guidelines-path` as `<install-path>/resources/{templates,guidelines}`.
|
|
352
|
-
- **REQ-104**: MUST persist `docs-dir`, `tests-dir`, and every `src-dir` entry as trailing-slash-free relative paths in local configuration.
|
|
353
|
-
- **REQ-105**: MUST derive static `git-path` from `base-path` only when it equals `base-path` or ancestors it.
|
|
354
|
-
- **REQ-270**: MUST derive static `parent-path` as the parent of `git-path` and static `base-dir` as `base-path` relative to `git-path`.
|
|
355
|
-
- **REQ-106**: MUST make prompt `%%GUIDELINES_FILES%%`, `%%GUIDELINES_PATH%%`, and `%%TEMPLATE_PATH%%` resolve from static installation resources.
|
|
356
|
-
- **REQ-107**: MUST express prompt-visible absolute paths under user home with `~` and without trailing `/`.
|
|
357
|
-
- **REQ-031**: MUST make the `pi-usereq` menu expose `Show local configuration`, save pending local and global config, close the active menu tree, and then write persisted `<base-path>/.pi-usereq.json` text to the editor.
|
|
358
|
-
- **REQ-318**: MUST make the `pi-usereq` menu expose `Show global configuration`, save pending local and global config, close the active menu tree, and then write persisted `~/.config/pi-usereq/config.json` text to the editor.
|
|
359
|
-
- **REQ-162**: MUST render the `show-local-config` current value as the `~`-relative local config path using the settings-list `dim` value style.
|
|
360
|
-
- **REQ-319**: MUST render the `show-global-config` current value as the `~`-relative global config path using the settings-list `dim` value style.
|
|
361
|
-
- **REQ-032**: MUST inject a pi.dev governance block into rendered prompts when `docs/pi.dev/agent-document-manifest.json` exists under the project base.
|
|
362
|
-
- **REQ-033**: MUST make that block require manifest-guided document review before implementing or changing extension code that interfaces with the pi.dev CLI.
|
|
363
|
-
- **REQ-034**: MUST make that block require manifest-guided document review before analyzing, verifying, or fixing extension code that interfaces with the pi.dev CLI.
|
|
364
|
-
- **REQ-108**: MUST make that block require interface-contract compliance with `docs/pi.dev/coding-agent-docs/` and documents referenced by `docs/pi.dev/agent-document-manifest.json` for new or modified pi.dev CLI integrations.
|
|
365
|
-
- **REQ-273**: MUST make that block declare every path under `docs/` and `pi.dev-src/` read-only for analysis, implementation, verification, and bug fixing.
|
|
366
|
-
- **REQ-274**: MUST make that block require validation against `pi.dev-src/pi-mono` when manifest or `docs/pi.dev/coding-agent-docs/` guidance is ambiguous for extension-to-pi-client interface behavior.
|
|
367
|
-
- **REQ-275**: MUST make that block require validation against `pi.dev-src/pi-mono` for bug fixes or problem resolution influenced by extension-to-pi-client interface implementations.
|
|
368
|
-
- **REQ-035**: MUST parse repeatable `--enable-static-check LANG=Command,CMD[,PARAM...]` CLI options before command dispatch and merge resulting entries into persisted global checker lists.
|
|
369
|
-
- **REQ-253**: MUST set `static-check.<language>.enabled=enable` whenever guided or CLI `--enable-static-check` entry creation targets that language.
|
|
370
|
-
- **REQ-036**: MUST preserve existing global `static-check` checker entries, append non-duplicate `--enable-static-check` entries in argument order, and treat canonical language, module, cmd, and params as the duplicate identity.
|
|
371
|
-
- **REQ-037**: MUST reject `--enable-static-check` `Command` entries whose executable is unresolvable via bundled `node_modules/.bin` or `PATH` and MUST NOT modify persisted local or global configuration when validation fails.
|
|
372
|
-
- **REQ-038**: MUST honor `--verbose` only for `files-summarize`, `files-compress`, `files-find`, `summarize`, `compress`, and `find`, emitting command progress to stderr while leaving stdout payload format unchanged.
|
|
373
|
-
- **REQ-039**: MUST support `--enable-line-numbers` only for `files-compress`, `compress`, `files-find`, and `find`, and MUST leave corresponding outputs unnumbered when the flag is absent.
|
|
374
|
-
- **REQ-040**: MUST store canonical expected CLI result fixtures as UTF-8 text files under `tests/fixtures_attended_results/`, preserving normalized exit code, stdout, and stderr for each archived scenario.
|
|
375
|
-
- **REQ-041**: MUST canonicalize environment-dependent path and timestamp segments in archived and observed CLI results with stable placeholder tokens before exact comparison.
|
|
376
|
-
- **REQ-042**: MUST archive explicit-file scenarios for `files-tokens`, `files-summarize`, `files-compress`, `files-find`, and `test-static-check` across every file under `tests/fixtures/`.
|
|
377
|
-
- **REQ-043**: MUST archive repository scenarios for `summarize`, `compress`, `find`, `tokens`, `enable-static-check`, `files-static-check`, and `static-check`.
|
|
378
|
-
- **REQ-138**: MUST make `.github/workflows/release-npm.yml` trigger release automation from pushed tags matched by the existing workflow filter `v[0-9]+.[0-9]+.[0-9]+`.
|
|
379
|
-
- **REQ-139**: MUST skip downstream release work unless `check-branch` confirms the tagged commit is contained in `origin/master`.
|
|
380
|
-
- **REQ-140**: MUST configure `.github/workflows/release-npm.yml` to use Node.js `24.15.0`, npm registry authentication, run `npm ci`, remove manifest `private`, and publish with provenance and public access using `secrets.NPM_TOKEN`.
|
|
381
|
-
- **REQ-141**: MUST preserve the existing changelog-builder step and use its output as the non-draft non-prerelease GitHub Release body.
|
|
382
|
-
- **REQ-155**: MUST keep `package.json` `name` equal to `pi-usereq` so npm publication resolves to `https://www.npmjs.com/package/pi-usereq`.
|
|
383
|
-
- **REQ-157**: MUST declare `package.json` `repository.type` as `git` and `repository.url` as `git+https://github.com/Ogekuri/PI-useReq.git`.
|
|
384
|
-
- **REQ-158**: MUST declare `package.json` `bugs.url` as `https://github.com/Ogekuri/PI-useReq/issues` and `homepage` as `https://github.com/Ogekuri/PI-useReq#readme`.
|
|
385
|
-
- **REQ-142**: MUST default `PI_NOTIFY_SOUND_LOW_CMD` to `paplay --volume=21845 %%INSTALLATION_PATH%%/resources/sounds/Soft-high-tech-notification-sound-effect.mp3`.
|
|
386
|
-
- **REQ-143**: MUST default `PI_NOTIFY_SOUND_MID_CMD` to `paplay --volume=43690 %%INSTALLATION_PATH%%/resources/sounds/Soft-high-tech-notification-sound-effect.mp3`.
|
|
387
|
-
- **REQ-144**: MUST default `PI_NOTIFY_SOUND_HIGH_CMD` to `paplay --volume=65535 %%INSTALLATION_PATH%%/resources/sounds/Soft-high-tech-notification-sound-effect.mp3`.
|
|
388
|
-
- **REQ-145**: MUST derive static `git-path` during bootstrap from `base-path` and repository ancestry rules, ignoring project-configuration JSON values.
|
|
389
|
-
- **REQ-146**: MUST NOT read or persist `base-path` or `git-path` in local or global configuration JSON.
|
|
390
|
-
- **REQ-149**: MUST label notification settings actions as `Notify command`, `Enable sound (boot value)`, `Sound toggle hotkey bind`, `Sound command (low|mid|high vol.)`, `Pushover User Key/Delivery Group Key`, and `Pushover Token/API Token Key`.
|
|
391
|
-
- **REQ-150**: MUST omit overview rows and reference-only actions from the main, notification, startup-tool, and static-check configuration menus.
|
|
392
|
-
- **REQ-151**: MUST render `pi-usereq`, notification, static-check, and startup-tool menus with left-aligned labels and right-aligned current values using the active CLI settings-list theme semantics.
|
|
393
|
-
- **REQ-156**: MUST restrict extension-owned status and settings rendering to CLI-supported theme APIs and documented theme tokens.
|
|
394
|
-
- **REQ-152**: MUST render a persistent bottom-line description for the currently selected configuration entry.
|
|
395
|
-
- **REQ-153**: MUST use scrollable configuration menus when entry count exceeds the visible row budget.
|
|
396
|
-
- **REQ-154**: MUST wrap configuration-menu selection from last-to-first and first-to-last entries.
|
|
397
|
-
- **REQ-321**: MUST render `Enable debug commands for tools` in `Debug` after `Debug`, before `Log file`, and before `Log on status`.
|
|
398
|
-
- **REQ-322**: MUST persist `DEBUG_TOOL_COMMANDS_ENABLED` through the `Debug` submenu with immediate-save, reset, and focus-preserving re-render behavior.
|
|
399
|
-
- **REQ-323**: MUST register `debug-compress`, `debug-references`, `debug-static-check`, `debug-summarize`, and `debug-tokens` only when `DEBUG_TOOL_COMMANDS_ENABLED=enable`.
|
|
400
|
-
- **REQ-324**: MUST make `debug-compress`, `debug-references`, `debug-static-check`, `debug-summarize`, and `debug-tokens` reuse the `compress`, `references`, `static-check`, `summarize`, and `tokens` runner outputs and write `content[0].text` to the editor.
|
|
401
|
-
- **REQ-325**: MUST reject `debug-compress`, `debug-references`, `debug-static-check`, `debug-summarize`, and `debug-tokens` execution when `DEBUG_TOOL_COMMANDS_ENABLED=disable`.
|
|
402
|
-
- **REQ-326**: MUST add a top-level `Context Files` row to the `pi-usereq` menu between `Unit tests directory` and `Auto git commit`.
|
|
403
|
-
- **REQ-327**: MUST expose a `Context Files` submenu with separate enable toggles for `REQUIREMENTS.md`, `REFERENCES.md`, and `WORKFLOW.md` in that order.
|
|
404
|
-
- **REQ-328**: MUST persist `context-files-requirements`, `context-files-references`, and `context-files-workflow` as boolean flags in local configuration, each defaulting to disabled.
|
|
405
|
-
- **REQ-329**: MUST replace the `%%CONTEXT_FILES%%` prompt token with one markdown section per enabled context file in the order `REQUIREMENTS.md`, `REFERENCES.md`, `WORKFLOW.md`.
|
|
406
|
-
- **REQ-330**: MUST render each `%%CONTEXT_FILES%%` section as the file-name heading, an HTML `<file name="<docs-dir>/<filename>">` reference with `%%DOC_PATH%%` pre-substituted, and the raw file content inside four-backtick `markdown` fences.
|
|
407
|
-
- **REQ-331**: MUST omit the `%%CONTEXT_FILES%%` section for any disabled flag or missing context file without surfacing an error.
|
|
408
|
-
- **REQ-332**: MUST inject `%%CONTEXT_FILES%%` content verbatim after every other prompt replacement so literal `%%...%%` tokens inside context files are not substituted.
|
|
409
|
-
- **REQ-333**: MUST restore all three `Context Files` flags to disabled when the `Context Files` subtree `Reset defaults` is approved.
|
|
410
|
-
- **REQ-339**: MUST run `scripts/install-static-checkers.ts` as a best-effort exit-code-0 `postinstall` installer that probes bundled npm checkers, attempts `npm install` on miss, prints platform guidance for native checkers, and never modifies git-tracked files.
|
|
411
|
-
- **REQ-340**: MUST default the `TypeScript` static-check `Command` entry to `cmd: "eslint"` with empty `params`.
|
|
412
|
-
- **REQ-341**: MUST emit one warning notification during `session_start` listing missing enabled static checkers without transitioning workflow state or aborting.
|
|
413
|
-
- **REQ-342**: MUST keep `STATIC_CHECK_MODULES`, `dispatchStaticCheckForFile` signature, and `StaticCheckEntry` shape unchanged when adding bundled executable resolution.
|
|
414
|
-
- **REQ-343**: MUST NOT transition workflow state or abort `session_start` when one or more enabled static checkers are missing.
|
|
415
|
-
- **REQ-344**: MUST place the `session_start` missing-checker helper in `src/core/static-check.ts` so `src/index.ts` remains thin.
|
|
416
|
-
- **REQ-345**: MUST expose `View static code checker` immediately before `Remove static code checker` inside the `Language static code checkers` submenu.
|
|
417
|
-
- **REQ-346**: MUST make `View static code checker` render configured checker entries as read-only disabled inspection rows terminated by a `Close` row without mutating configuration.
|
|
418
|
-
- **REQ-347**: MUST expose `Reset static code checker` immediately after `Remove static code checker` inside the `Language static code checkers` submenu.
|
|
419
|
-
- **REQ-348**: MUST make `Reset static code checker` restore global checker arrays plus derived local enable flags to embedded defaults after explicit user confirmation.
|
|
420
|
-
- **REQ-349**: MUST render the targeted configured checker entries and require explicit user confirmation before `Remove static code checker` removes any global checker entries.
|
|
421
|
-
- **REQ-350**: MUST substitute the `%%INSTALLATION_PATH%%` keyword with the runtime extension installation path inside static-check `Command` `cmd` fields before executable resolution and execution.
|
|
422
|
-
- **REQ-351**: MUST resolve bundled static-check executables from the extension installation `node_modules/.bin` so default configuration requires no target-project module installation.
|
|
423
|
-
- **REQ-352**: MUST best-effort approve pending npm install scripts for bundled checker dependencies during extension install or run so embedded checkers execute without manual approval.
|
|
424
|
-
|
|
425
|
-
## 4. Test Requirements
|
|
426
|
-
- **TST-001**: MUST verify extension activation registers every documented prompt command, agent tool, and configuration command while omitting tool-name slash commands, `test-static-check`, and the removed standalone config-viewer command.
|
|
427
|
-
- **TST-002**: MUST verify installed bundled prompt, commit-instruction, template, and guideline resources remain readable from `installation-path`.
|
|
428
|
-
- **TST-060**: MUST verify prompt rendering replaces `%%PROMPT%%` and expands `%%COMMIT%%` from rendered `git_commit.md` or `git_read-only.md` according to `AUTO_GIT_COMMIT`, excluding the verbatim `%%CONTEXT_FILES%%` block from placeholder-absence assertions.
|
|
429
|
-
- **TST-003**: MUST verify standalone `files-tokens` outputs match the Python oracle, `--test-static-check` dummy or command outputs match archived fixtures, and `files-summarize`, `files-compress`, plus `files-find` preserve leading source tabs.
|
|
430
|
-
- **TST-004**: MUST verify project `tokens` outputs match the Python oracle, verify `files-static-check` plus `static-check` against archived fixtures, and verify `summarize`, `compress`, plus `find` preserve leading source tabs.
|
|
431
|
-
- **TST-005**: MUST verify the configuration menu saves `docs-dir` locally and `AUTO_GIT_COMMIT`, `GIT_WORKTREE_ENABLED`, plus `GIT_WORKTREE_PREFIX` globally immediately after each change.
|
|
432
|
-
- **TST-084**: MUST verify local configuration persistence trims trailing `/` and keeps `docs-dir`, `tests-dir`, and `src-dir` relative.
|
|
433
|
-
- **TST-046**: MUST verify `Language static code checkers` omits module selection, raw-spec actions, supported-language reference actions, and hides `Dummy`, `Pylance`, and `Ruff` from user-configurable actions.
|
|
434
|
-
- **TST-077**: MUST verify `Language static code checkers` renders 20 per-language `on|off` toggle rows between `Reset static code checker` and `Reset defaults`, and persists toggle changes only in local configuration.
|
|
435
|
-
- **TST-078**: MUST verify default configuration stores documented per-language `enabled` flags locally and checker lists globally for `C`, `C++`, `Python`, `JavaScript`, and `TypeScript`.
|
|
436
|
-
- **TST-108**: MUST verify guided static-check entry addition updates global checker lists and sets the targeted local enable flag to `enable`, and guided removal updates global checker lists.
|
|
437
|
-
- **TST-112**: MUST verify `--enable-static-check` stores checker commands in global configuration and preserves local enablement according to the documented defaulting rules.
|
|
438
|
-
- **TST-079**: MUST verify `files-static-check` and `static-check` execute zero checkers and expose empty configured-checker lists when the target language `enabled=disable`.
|
|
439
|
-
- **TST-006**: MUST verify `session_start` activates configured startup tools, resets workflow state to `idle` for `startup|new|reload`, and updates the single-line `pi-usereq` status bar.
|
|
440
|
-
- **TST-031**: MUST verify the status bar renders runtime `<extension>:v<version>` before `status`, omits `current-path`, `base`, `docs`, `src`, `tests`, `git`, and `tools`, and preserves documented field-value theme separation.
|
|
441
|
-
- **TST-032**: MUST verify extension registration installs wrappers for all documented lifecycle hooks and routes replayed hook payloads through `updateExtensionStatus`.
|
|
442
|
-
- **TST-033**: MUST verify the status bar renders ordered `<extension>:v<version>`, `status`, `branch`, `context`, `elapsed`, and `sound` plus the documented icon-based `context` gauge thresholds.
|
|
443
|
-
- **TST-037**: MUST verify the `Notifications` menu persists notification and boot-sound settings only in global configuration through `Notification events` and `Sound events` submenus using the documented labels and order.
|
|
444
|
-
- **TST-038**: MUST verify the sound-toggle shortcut cycles only the active runtime sound level, leaves local and global configuration unchanged, and refreshes the status bar with the updated `sound` field.
|
|
445
|
-
- **TST-097**: MUST verify `session_start` loads the active runtime sound level from persisted `notify-sound`.
|
|
446
|
-
- **TST-098**: MUST verify menu-selected boot sound changes persist to global configuration without changing the active runtime sound level.
|
|
447
|
-
- **TST-047**: MUST verify the `Notifications` menu exposes `Pushover events` before direct Pushover settings, keeps `Enable pushover` dimmed and locked until both credential fields are non-empty, and persists Pushover event and credential values only in global configuration.
|
|
448
|
-
- **TST-072**: MUST verify `Pushover text` displays escaped control sequences in menus and decodes the documented escape sequences from input before persistence.
|
|
449
|
-
- **TST-048**: MUST verify native Pushover requests honor global enable, completed/interrupted/failed Pushover toggles, credentials, priority, title, and text placeholder substitution including `%%RESULT%%` for enabled prompt-end outcomes.
|
|
450
|
-
- **TST-049**: MUST verify the status bar renders ordered `<extension>:v<version>`, `status`, `branch`, `context`, `elapsed`, and `sound` fields and appends `sound:<level>`.
|
|
451
|
-
- **TST-050**: MUST verify `PI_NOTIFY_CMD` placeholder substitution including `%%RESULT%%` and routing honor global notify enable plus completed/interrupted/failed notify toggles.
|
|
452
|
-
- **TST-034**: MUST verify `ctx.getContextUsage()` snapshots refresh status updates and `elapsed` preserves `⚑` plus `⌛︎` across escape-triggered cancellation.
|
|
453
|
-
- **TST-062**: MUST verify `Show local configuration` saves pending local and global config, closes the active configuration menu tree, and writes persisted `<base-path>/.pi-usereq.json` text into the editor.
|
|
454
|
-
- **TST-109**: MUST verify `Show global configuration` saves pending local and global config, closes the active configuration menu tree, and writes persisted `~/.config/pi-usereq/config.json` text into the editor.
|
|
455
|
-
- **TST-111**: MUST verify `Show local configuration` and `Show global configuration` render `~`-relative config paths with the settings-list `dim` value style.
|
|
456
|
-
- **TST-063**: MUST verify `⚑` plus `⌛︎` survive `session_start` reason `new` and reset on `session_start` reason `reload`.
|
|
457
|
-
- **TST-045**: MUST verify default configuration enables auto git commit, disables debug, notify, and Pushover globally, initializes sound to `none`, sets `DEBUG_LOG_FILE=/tmp/PI-useReq.json`, and persists the documented notify and Pushover templates.
|
|
458
|
-
- **TST-051**: MUST verify sound routing honors the active runtime sound state and completed/interrupted/failed sound toggles.
|
|
459
|
-
- **TST-035**: MUST verify unavailable or 0-percent context usage renders `▕_▏` with the same non-error theme token used by `status`.
|
|
460
|
-
- **TST-096**: MUST verify context usage `>0-<25`, `>=25-<50`, `>=50-<75`, and `>=75-<90` render `▕▂▏`, `▕▄▏`, `▕▆▏`, and `▕█▏` with the same non-error theme token used by `status`.
|
|
461
|
-
- **TST-036**: MUST verify context usage `>=90-<100` renders non-blinking error `▕█▏`, and `>=100` renders blinking error `▕█▏` or non-blinking error `▕█▏` when blink control is unavailable.
|
|
462
|
-
- **TST-095**: MUST verify status-bar `branch` resolves from current `context-path` git HEAD and refreshes across worktree switches plus base-path restoration.
|
|
463
|
-
- **TST-043**: MUST verify configuration menus reuse the active CLI settings-list theme semantics for labels, values, descriptions, cursor, and hints.
|
|
464
|
-
- **TST-009**: MUST verify `package.json` declares ESM packaging, the single pi extension entry, and the standard `test`, `test:watch`, and `cli` scripts.
|
|
465
|
-
- **TST-010**: MUST verify `tsconfig.json` declares `NodeNext`, `strict`, `noEmit`, and includes both `src/**/*.ts` and `tests/**/*.ts`.
|
|
466
|
-
- **TST-011**: MUST verify pi.dev-aware prompt rendering injects a governance block only when the manifest exists and that the block marks `docs/` plus `pi.dev-src/` as read-only.
|
|
467
|
-
- **TST-030**: MUST verify pi.dev-aware prompt rendering injects an explicit interface-contract mandate covering `docs/pi.dev/coding-agent-docs/` and documents referenced by `docs/pi.dev/agent-document-manifest.json`.
|
|
468
|
-
- **TST-087**: MUST verify pi.dev-aware prompt rendering requires `pi.dev-src/pi-mono` validation when manifest or `docs/pi.dev/coding-agent-docs/` guidance is ambiguous for extension-to-pi-client behavior.
|
|
469
|
-
- **TST-088**: MUST verify pi.dev-aware prompt rendering requires `pi.dev-src/pi-mono` validation for bug fixes or problem resolution influenced by extension-to-pi-client interface implementations.
|
|
470
|
-
- **TST-012**: MUST verify TypeScript CLI parity for standalone command-option regressions covering `--files-tokens`, `--files-summarize`, `--files-compress`, `--files-find`, `--test-static-check`, `--enable-line-numbers`, `--enable-static-check`, and `--verbose`.
|
|
471
|
-
- **TST-013**: MUST verify TypeScript CLI parity for project-scoped command-option regressions covering `--summarize`, `--compress`, `--find`, `--tokens`, `--files-static-check`, and `--static-check`.
|
|
472
|
-
- **TST-014**: MUST maintain an executable mapping from each imported command-option regression case to one TypeScript test case identifier and fail verification when any mapped case is missing.
|
|
473
|
-
- **TST-015**: MUST verify archive-backed standalone CLI scenarios load expected results from `tests/fixtures_attended_results/standalone` and compare exact normalized exit code, stdout, and stderr for every file under `tests/fixtures/`.
|
|
474
|
-
- **TST-016**: MUST verify archive-backed repository CLI scenarios load expected results from `tests/fixtures_attended_results/project` and compare exact normalized exit code, stdout, and stderr for the archived command set.
|
|
475
|
-
- **TST-017**: MUST verify every archive-backed scenario required by `REQ-042` and `REQ-043` has a committed expected-result fixture file before executing TypeScript output comparisons.
|
|
476
|
-
- **TST-018**: MUST verify offline harness inspection and session-start replay capture registered commands, registered tools, event handlers, active tools, statuses, notifications, editor text, and sent user messages.
|
|
477
|
-
- **TST-019**: MUST verify offline harness command and tool replay invoke registered handlers, preserve requested cwd semantics, and capture prompt payloads, tool results, and UI side effects.
|
|
478
|
-
- **TST-020**: MUST verify SDK parity comparison reports aligned inventories as clean, reports requested mismatch categories, and `package.json` declares the `debug:ext*` harness scripts.
|
|
479
|
-
- **TST-021**: MUST verify `scripts/pi-usereq-debug.sh tool` forwards `--params` unchanged and converts `--args` text into the JSON object forwarded through `--params`.
|
|
480
|
-
- **TST-022**: MUST verify `files-summarize` and `summarize` agent-tool outputs place monolithic summary markdown with preserved leading tabs in `content[0].text` and restrict `details` to execution metadata.
|
|
481
|
-
- **TST-023**: MUST verify harness inspection surfaces `files-summarize` and `summarize` descriptions covering scope, monolithic markdown output, and failure details.
|
|
482
|
-
- **TST-099**: MUST verify extension activation and tool menus include `references` with the documented agent-tool-only registration and default-enabled ordering.
|
|
483
|
-
- **TST-100**: MUST verify `references` overwrites configured `docs-dir`/`REFERENCES.md`, returns only `success` in `content[0].text`, and restricts `details` to execution metadata.
|
|
484
|
-
- **TST-101**: MUST verify `references` returns `error: <diagnostic>` plus failing execution metadata when source discovery, markdown generation, or `REFERENCES.md` writing fails.
|
|
485
|
-
- **TST-102**: MUST verify `req-references` registers outside the bundled prompt inventory and retains description `Write a REFERENCES.md using the project's source code`.
|
|
486
|
-
- **TST-103**: MUST verify successful `req-references` runs create no worktree or LLM message, overwrite configured `REFERENCES.md`, stage only that file, commit exact message, notify success, and restore workflow state `idle`.
|
|
487
|
-
- **TST-104**: MUST verify failing `req-references` runs transition workflow state to `error`, notify pi CLI, create no worktree or LLM message, and surface git or reference-generation failures.
|
|
488
|
-
- **TST-105**: MUST verify extension activation registers `req-reset` outside the bundled prompt inventory with its dedicated fixed description.
|
|
489
|
-
- **TST-106**: MUST verify successful `req-reset` accepts non-`idle` workflow state, preserves execution transcript, restores `base-path`, removes matching generated worktrees plus branches, and returns workflow state `idle` without LLM messages.
|
|
490
|
-
- **TST-107**: MUST verify failing `req-reset` surfaces restoration or cleanup failures, transitions workflow state to `error`, and starts no worktree or LLM session.
|
|
491
|
-
- **TST-024**: MUST verify `files-search` and `search` agent-tool outputs place monolithic search markdown with preserved leading tabs in `content[0].text` and restrict `details` to execution metadata.
|
|
492
|
-
- **TST-025**: MUST verify harness inspection surfaces `files-search` and `search` descriptions covering parameters, regex semantics, supported tags, monolithic markdown output, and failure details.
|
|
493
|
-
- **TST-026**: MUST verify `files-compress` and `compress` agent-tool outputs place monolithic compression markdown with preserved leading tabs in `content[0].text` and restrict `details` to execution metadata.
|
|
494
|
-
- **TST-027**: MUST verify harness inspection surfaces `files-compress` and `compress` descriptions covering parameters, line-number behavior, monolithic markdown output, and failure details.
|
|
495
|
-
- **TST-028**: MUST verify `files-static-check` and `static-check` agent-tool outputs place the monolithic static-check report in `content[0].text` and restrict `details` to execution metadata.
|
|
496
|
-
- **TST-029**: MUST verify harness inspection surfaces `files-static-check` and `static-check` descriptions covering parameters, monolithic output, selection rules, and failure details.
|
|
497
|
-
- **TST-039**: MUST verify `.github/workflows/release-npm.yml` parses as YAML when `PyYAML` is available, keeps the existing tag filter, gates downstream release work on `origin/master`, uses Node.js `24.15.0`, runs npm publication, and creates the GitHub Release.
|
|
498
|
-
- **TST-042**: MUST verify `package.json` keeps `name` equal to `pi-usereq` so npm publication resolves to `https://www.npmjs.com/package/pi-usereq`.
|
|
499
|
-
- **TST-044**: MUST verify `package.json` keeps npm provenance metadata aligned to the canonical GitHub repository, issues URL, and README homepage.
|
|
500
|
-
- **TST-040**: MUST verify local and global configuration files omit derived static and dynamic path fields while runtime path context and status rendering still derive them correctly.
|
|
501
|
-
- **TST-041**: MUST verify the `pi-usereq` menu uses the documented labels and order, every configuration menu ends with `Reset defaults` without right-aligned value text, dims locked git or debug rows, and preserves the documented summary rows.
|
|
502
|
-
- **TST-073**: MUST verify the `Debug` submenu persists `DEBUG_ENABLED`, `DEBUG_STATUS_CHANGES`, `DEBUG_WORKFLOW_EVENTS`, `DEBUG_LOG_FILE`, `DEBUG_LOG_ON_STATUS`, and per-item debug toggles through immediate-save, reset-confirmation, and focus-preserving re-render flows.
|
|
503
|
-
- **TST-074**: MUST verify selected custom and embedded tool debug toggles append JSON entries with tool name, workflow state, input, result, and error flag, honoring `DEBUG_ENABLED` plus `DEBUG_LOG_ON_STATUS`.
|
|
504
|
-
- **TST-075**: MUST verify selected `req-*` debug toggles append JSON entries for required-doc checks, worktree creation, fast-forward merge, worktree deletion, `workflow_state`, and `DEBUG_WORKFLOW_EVENTS`-gated workflow events across successful and failing prompt runs.
|
|
505
|
-
- **TST-076**: MUST verify Debug submenu tool and prompt rows derive from `PI_USEREQ_CUSTOM_TOOL_NAMES`, `PI_USEREQ_EMBEDDED_TOOL_NAMES`, and `PROMPT_COMMAND_NAMES`.
|
|
506
|
-
- **TST-085**: MUST verify the `Debug` submenu orders `Log on status` before `Status changes` and preserves the documented immediate-save plus focus-preserving re-render behavior.
|
|
507
|
-
- **TST-080**: MUST verify each bundled prompt-backed `req-*` command description is loaded at runtime from the first bundled prompt Markdown `# ` heading with the prefix removed.
|
|
508
|
-
- **TST-081**: MUST verify worktree-backed prompt execution verifies worktree registration and branch presence, switches active-session cwd, `ctx.cwd`, and `process.cwd()` to `worktree-path` before agent start, and restores them to `base-path` before session-closure handling returns.
|
|
509
|
-
- **TST-082**: MUST verify worktree-backed successful runs enter `running` only after prompt handoff succeeds, merge with `--ff-only` from `base-path`, and delete the worktree only after deletion verification passes.
|
|
510
|
-
- **TST-083**: MUST verify worktree merge failures notify the pi CLI, transition through `error`, retain the worktree checkout for manual recovery, and keep `base-path` active after session-closure handling.
|
|
511
|
-
- **TST-089**: MUST verify orchestrated closure succeeds when pi lifecycle event contexts omit `switchSession()`, restoring the original `base-path` session, merging successful worktree changes, and deleting the worktree plus branch.
|
|
512
|
-
- **TST-090**: MUST verify switch-triggered `session_shutdown` preserves the in-memory `checking|running` prompt state plus pending prompt request so the initiating runtime can still complete successful worktree closure.
|
|
513
|
-
- **TST-091**: MUST verify a replacement-session runtime that starts before the initiating command handler finishes the post-switch `running` transition resynchronizes persisted prompt state before prompt closure and still merges plus deletes successful worktrees.
|
|
514
|
-
- **TST-092**: MUST verify stale replacement-session render contexts do not throw during workflow-state updates after session replacement.
|
|
515
|
-
- **TST-093**: MUST verify worktree-backed prompt delivery persists `running` before an async replacement-session `sendUserMessage(...)` helper resolves, so rebound prompt closure still performs merge plus cleanup.
|
|
516
|
-
- **TST-094**: MUST verify successful closure restores `base-path` and merges from `base-path` even when end-of-session timing has already moved the persisted replacement-session context away from `worktree-path`.
|
|
517
|
-
- **TST-052**: MUST verify toggling or editing a settings entry preserves focus on the affected row when the menu re-renders.
|
|
518
|
-
- **TST-053**: MUST verify top-level reset restores the full menu tree and submenu reset restores only the targeted recursive subtree.
|
|
519
|
-
- **TST-054**: MUST verify every `req-<prompt>` command aborts when slash-command-owned git validation fails and dispatches no prompt message.
|
|
520
|
-
- **TST-055**: MUST verify bundled prompt-backed `req-<prompt>` commands enforce the documented required-doc matrix, create no worktree, and dispatch no prompt when a required doc is missing.
|
|
521
|
-
- **TST-056**: MUST verify worktree-backed `req-<prompt>` commands derive `worktree-dir` from persisted `GIT_WORKTREE_PREFIX` for both default and override values.
|
|
522
|
-
- **TST-057**: MUST verify `req-<prompt>` commands create `worktree-path`, dispatch prompts through the replacement-session context of the switched execution session, and run tool executions against prepared `context-path`.
|
|
523
|
-
- **TST-058**: MUST verify worktree-backed `req-<prompt>` commands skip merge plus worktree/branch deletion, retain the worktree execution session, notify closure failure, and park workflow state `error` when the matched run ends interrupted, failed, or aborted.
|
|
524
|
-
- **TST-061**: MUST verify `req-<prompt>` commands skip worktree creation when `AUTO_GIT_COMMIT=disable`, even if persisted `GIT_WORKTREE_ENABLED=enable`.
|
|
525
|
-
- **TST-064**: MUST verify worktree-backed `req-<prompt>` commands confirm created worktree directory plus branch existence before prompt dispatch and abort without dispatch when verification fails.
|
|
526
|
-
- **TST-067**: MUST verify `status:error` renders with blinking error styling and non-error `status` values follow the documented status-bar theme convention.
|
|
527
|
-
- **TST-068**: MUST verify every `req-*` slash command except `req-reset` rejects non-`idle` workflow state before checks, worktree operations, or direct references execution, surfaces an error, and transitions workflow state to `error`.
|
|
528
|
-
- **TST-069**: MUST verify bundled prompt-backed `req-<prompt>` commands transition workflow state through `checking`, `error`, and `running` for documented preflight and prompt-handoff paths.
|
|
529
|
-
- **TST-070**: MUST verify prompt-end handling ignores unrelated or non-success completions and performs cleanup only for the matched successful prompt.
|
|
530
|
-
- **TST-071**: MUST verify matched successful cleanup transitions workflow state through `merging` to `idle` and transitions to `error` on merge or deletion failure.
|
|
531
|
-
- **TST-065**: MUST verify default startup-tool enablement matches the documented enabled and disabled tool matrix.
|
|
532
|
-
- **TST-110**: MUST verify `Enable tools` toggles, enable-all, disable-all, and reset-defaults persist only in global configuration.
|
|
533
|
-
- **TST-066**: MUST verify `req-<prompt>` commands keep working when extension custom-tool registrations are removed from the runtime inventory.
|
|
534
|
-
- **TST-121**: MUST verify bundled prompt-backed `req-<prompt>` commands deliver the full rendered prompt content through the fallback `sendUserMessage` channel when the runtime does not expose `sendMessage`.
|
|
535
|
-
- **TST-059**: MUST verify every agent-tool registration defines custom `renderResult` and that compact rendering shows essential invocation parameters while expanded rendering avoids fallback raw-content display.
|
|
536
|
-
- **TST-086**: MUST verify bundled prompt-backed `req-<prompt>` commands abort before prompt dispatch when the persisted execution-session header cwd or `process.cwd()` differs from the expected execution path, and abort before merge when persisted execution-session header metadata or verified worktree artifacts diverge, while stale pre-switch context probes alone do not abort.
|
|
537
|
-
- **TST-113**: MUST verify default local configuration persists `DEBUG_TOOL_COMMANDS_ENABLED=disable`, and the `Debug` submenu renders `Enable debug commands for tools` before `Log file`.
|
|
538
|
-
- **TST-114**: MUST verify the `Debug` submenu persists `DEBUG_TOOL_COMMANDS_ENABLED` through immediate-save, reset, and focus-preserving re-render flows.
|
|
539
|
-
- **TST-115**: MUST verify extension activation registers `debug-compress`, `debug-references`, `debug-static-check`, `debug-summarize`, and `debug-tokens` only when `DEBUG_TOOL_COMMANDS_ENABLED=enable`.
|
|
540
|
-
- **TST-116**: MUST verify `debug-compress`, `debug-references`, `debug-static-check`, `debug-summarize`, and `debug-tokens` write the same `content[0].text` as `compress`, `references`, `static-check`, `summarize`, and `tokens`, and reject execution when disabled.
|
|
541
|
-
- **TST-117**: MUST verify the `pi-usereq` menu renders `Context Files` between `Unit tests directory` and `Auto git commit`.
|
|
542
|
-
- **TST-118**: MUST verify the `Context Files` submenu persists the three context-file flags in local configuration with immediate-save, reset, and focus-preserving re-render behavior.
|
|
543
|
-
- **TST-119**: MUST verify `%%CONTEXT_FILES%%` replacement emits one section per enabled existing file in the documented order and omits disabled or missing files.
|
|
544
|
-
- **TST-120**: MUST verify `%%CONTEXT_FILES%%` sections use the file-name heading, the pre-substituted HTML file reference, and four-backtick `markdown` fences around raw content.
|
|
545
|
-
- **TST-122**: MUST verify the command invocation summary renders `none` for `context files`, `static code checks`, and `enabled tools` when no items are enabled in each respective category.
|
|
546
|
-
- **TST-123**: MUST verify `resolveCheckerExecutable` probes bundled `node_modules/.bin` paths before `PATH` scan.
|
|
547
|
-
- **TST-124**: MUST verify `scripts/install-static-checkers.ts` always returns exit code `0` regardless of probe or install outcomes.
|
|
548
|
-
- **TST-125**: MUST verify `session_start` emits one warning notification for missing enabled checkers without aborting or transitioning workflow state.
|
|
549
|
-
- **TST-126**: MUST verify `View static code checker` appears before `Remove static code checker` and renders configured checkers as read-only inspection rows.
|
|
550
|
-
- **TST-127**: MUST verify `Reset static code checker` appears after `Remove static code checker` and restores embedded defaults after explicit confirmation.
|
|
551
|
-
- **TST-128**: MUST verify `Remove static code checker` previews targeted checker entries and requires explicit confirmation before removing configured global checker entries.
|
|
552
|
-
- **TST-129**: MUST verify `resolveCheckerExecutable` substitutes `%%INSTALLATION_PATH%%` with the runtime installation path inside static-check `Command` `cmd` fields.
|
|
553
|
-
- **TST-130**: MUST verify `scripts/install-static-checkers.ts` best-effort approves pending npm install scripts and always returns exit code `0`.
|
|
554
|
-
|
|
555
|
-
## 5. Observed Component Model
|
|
556
|
-
|
|
557
|
-
### 5.1 Runtime Surfaces
|
|
558
|
-
- `src/cli.ts` parses CLI flags, repairs config for project-scoped commands, and dispatches to `tool-runner.ts` or `runStaticCheck`.
|
|
559
|
-
- `src/index.ts` activates the pi extension, registers bundled prompt-backed commands plus specialized `req-references` orchestration and agent tools, and manages interactive menu/status behavior through `ctx.ui`.
|
|
560
|
-
- `src/core/tool-runner.ts` orchestrates project file collection, markdown generation, compression, construct search, and static-check execution.
|
|
561
|
-
- `src/core/source-analyzer.ts` defines `SourceElement`, language specs, extraction heuristics, Doxygen attachment, and Markdown rendering support.
|
|
562
|
-
- `src/core/generate-markdown.ts`, `src/core/compress.ts`, and `src/core/find-constructs.ts` share analyzer and compressor logic to produce reusable Markdown outputs.
|
|
563
|
-
- `src/core/static-check.ts` maps languages/extensions, parses Command-only enable specs, preserves debug `Dummy` handling, resolves inputs, and dispatches modular checker classes.
|
|
564
|
-
- `src/core/config.ts`, `src/core/resources.ts`, `src/core/prompts.ts`, and `src/core/req-references-command.ts` provide config persistence, home-resource synchronization, bundled-prompt rendering, and direct `req-references` slash-command orchestration.
|
|
565
|
-
- `src/core/doxygen-parser.ts` normalizes Doxygen tags reused by source references and construct search output.
|
|
566
|
-
- `scripts/debug-extension.ts`, `scripts/pi-usereq-debug.sh`, and `scripts/lib/*.ts` provide the standalone extension debug harness, bash wrapper, recording adapters, offline replay, SDK parity probing, and usage-manual rendering.
|
|
567
|
-
|
|
568
|
-
### 5.2 Libraries and Runtime Dependencies
|
|
569
|
-
- `@mariozechner/pi-coding-agent` provides extension APIs, command registration, tool registration, and UI integration evidence in `src/index.ts` and `package.json`.
|
|
570
|
-
- `@mariozechner/pi-ai` is a manifest-declared peer dependency evidenced by `package.json` and `package-lock.json`.
|
|
571
|
-
- `@mariozechner/pi-tui` is a manifest-declared peer dependency evidenced by `package.json` and `package-lock.json`.
|
|
572
|
-
- `@sinclair/typebox` provides runtime tool parameter schemas and is declared as a peer dependency evidenced by `src/index.ts`, `package.json`, and `package-lock.json`.
|
|
573
|
-
- `js-tiktoken` provides token counting evidence in `src/core/token-counter.ts`, `package.json`, and `package-lock.json`.
|
|
574
|
-
- `fast-glob` provides wildcard expansion for static-check inputs evidence in `src/core/static-check.ts`, `package.json`, and `package-lock.json`.
|
|
575
|
-
- `tsx` is the manifest-declared runtime dependency and TypeScript execution runner for package scripts, the `postinstall` checker installer, and the `.ts` extension entry, evidenced by `package.json` and `package-lock.json`.
|
|
576
|
-
- `typescript` is the manifest-declared compiler and type-checker evidenced by `package.json`, `package-lock.json`, and `tsconfig.json`.
|
|
577
|
-
- `git` CLI is a runtime dependency for repository discovery, source-file collection, bundled prompt-command worktree orchestration, and direct `req-references` commit orchestration evidenced in `src/core/tool-runner.ts`, `src/core/prompt-command-runtime.ts`, and `src/core/req-references-command.ts`.
|
|
578
|
-
|
|
579
|
-
### 5.3 Packaging and Tooling Surface
|
|
580
|
-
- `package.json` declares `type: "module"`, `pi.extensions: ["./src/index.ts"]`, and the scripts `test`, `test:watch`, `cli`, `debug:ext`, `debug:ext:inspect`, `debug:ext:session`, `debug:ext:command`, `debug:ext:tool`, and `debug:ext:sdk`.
|
|
581
|
-
- `tsconfig.json` declares `target: "ES2022"`, `module: "NodeNext"`, `moduleResolution: "NodeNext"`, `strict: true`, `noEmit: true`, `skipLibCheck: true`, `resolveJsonModule: true`, and `types: ["node"]`.
|
|
582
|
-
- `.github/workflows/release-npm.yml` validates canonical release tags, pins Node.js `24.15.0` for release execution, publishes the package to npm, and creates the matching GitHub Release.
|
|
583
|
-
- `package.json` declares version `0.0.0` while `package-lock.json` resolves the top-level package as version `0.1.0`; this manifest metadata is inconsistent in the current revision.
|
|
584
|
-
|
|
585
|
-
## 6. Repository Structure
|
|
586
|
-
|
|
587
|
-
### 6.1 Tree View
|
|
588
|
-
```text
|
|
589
|
-
.
|
|
590
|
-
├── README.md
|
|
591
|
-
├── LICENSE
|
|
592
|
-
├── package.json
|
|
593
|
-
├── package-lock.json
|
|
594
|
-
├── tsconfig.json
|
|
595
|
-
├── src/
|
|
596
|
-
│ ├── cli.ts
|
|
597
|
-
│ ├── index.ts
|
|
598
|
-
│ ├── core/
|
|
599
|
-
│ │ ├── compress-files.ts
|
|
600
|
-
│ │ ├── compress.ts
|
|
601
|
-
│ │ ├── config.ts
|
|
602
|
-
│ │ ├── doxygen-parser.ts
|
|
603
|
-
│ │ ├── errors.ts
|
|
604
|
-
│ │ ├── find-constructs.ts
|
|
605
|
-
│ │ ├── generate-markdown.ts
|
|
606
|
-
│ │ ├── pi-usereq-tools.ts
|
|
607
|
-
│ │ ├── prompts.ts
|
|
608
|
-
│ │ ├── req-references-command.ts
|
|
609
|
-
│ │ ├── resources.ts
|
|
610
|
-
│ │ ├── source-analyzer.ts
|
|
611
|
-
│ │ ├── static-check.ts
|
|
612
|
-
│ │ ├── token-counter.ts
|
|
613
|
-
│ │ ├── tool-runner.ts
|
|
614
|
-
│ │ └── utils.ts
|
|
615
|
-
│ └── resources/
|
|
616
|
-
│ ├── templates/{Requirements_Template.md,HDT_Test_Authoring_Guide.md,Document_Source_Code_in_Doxygen_Style.md}
|
|
617
|
-
│ ├── guidelines/{Google_Python_Style_Guide.md,Google_C++_Style_Guide.md}
|
|
618
|
-
│ └── prompts/{analyze.md,change.md,check.md,cover.md,create.md,fix.md,flowchart.md,implement.md,new.md,readme.md,recreate.md,refactor.md,renumber.md,workflow.md,write.md}
|
|
619
|
-
├── tests/
|
|
620
|
-
│ ├── extension-registration.test.ts
|
|
621
|
-
│ ├── helpers.ts
|
|
622
|
-
│ ├── oracle-project.test.ts
|
|
623
|
-
│ ├── oracle-standalone.test.ts
|
|
624
|
-
│ ├── prompt-rendering.test.ts
|
|
625
|
-
│ ├── release-workflow.test.ts
|
|
626
|
-
│ └── fixtures/{fixture_c.c,fixture_cpp.cpp,fixture_csharp.cs,fixture_elixir.ex,fixture_go.go,fixture_haskell.hs,fixture_java.java,fixture_javascript.js,fixture_kotlin.kt,fixture_lua.lua,fixture_perl.pl,fixture_php.php,fixture_python.py,fixture_rust.rs,fixture_scala.scala,fixture_shell.sh,fixture_swift.swift,fixture_typescript.ts,fixture_zig.zig}
|
|
627
|
-
├── req/docs/
|
|
628
|
-
├── scripts/
|
|
629
|
-
│ ├── debug-extension.ts
|
|
630
|
-
│ ├── pi-usereq-debug.sh
|
|
631
|
-
│ └── lib/{extension-debug-harness.ts,recording-extension-api.ts,sdk-smoke.ts}
|
|
632
|
-
├── .github/
|
|
633
|
-
│ ├── workflows/
|
|
634
|
-
│ │ └── release-npm.yml
|
|
635
|
-
│ └── skills/{req-analyze,req-change,req-check,req-cover,req-create,req-fix,req-flowchart,req-implement,req-new,req-readme,req-recreate,req-references,req-refactor,req-renumber,req-workflow,req-write}/SKILL.md
|
|
636
|
-
├── .pi/prompts/{req-analyze.prompt.md,req-change.prompt.md,req-check.prompt.md,req-cover.prompt.md,req-create.prompt.md,req-fix.prompt.md,req-flowchart.prompt.md,req-implement.prompt.md,req-new.prompt.md,req-readme.prompt.md,req-recreate.prompt.md,req-references.prompt.md,req-refactor.prompt.md,req-renumber.prompt.md,req-workflow.prompt.md,req-write.prompt.md}
|
|
637
|
-
├── .req/docs/{Requirements_Template.md,HDT_Test_Authoring_Guide.md,Document_Source_Code_in_Doxygen_Style.md}
|
|
638
|
-
├── .claude/commands/req/*.md
|
|
639
|
-
├── .codex/skills/req-*/SKILL.md
|
|
640
|
-
├── .gemini/commands/req/*.toml
|
|
641
|
-
├── .kiro/agents/*.json
|
|
642
|
-
├── .opencode/command/*.md
|
|
643
|
-
└── .vscode/settings.json
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
## 7. Test Evidence Summary
|
|
647
|
-
|
|
648
|
-
### 7.1 Covered Behaviors
|
|
649
|
-
- `tests/extension-registration.test.ts` covers extension registration, config-menu persistence, startup-tool enablement, static-check menu mutation flows, bundled prompt-command worktree orchestration, and specialized `req-references` direct commit orchestration.
|
|
650
|
-
- `tests/prompt-rendering.test.ts` covers home-resource synchronization and placeholder replacement in rendered prompts.
|
|
651
|
-
- `tests/oracle-standalone.test.ts` compares non-tab-sensitive standalone `files-*` outputs against the Python `usereq.cli` oracle, asserts Go-fixture tab preservation, and compares `--test-static-check` dummy/command outputs against archived fixtures.
|
|
652
|
-
- `tests/oracle-project.test.ts` compares non-tab-sensitive project commands against the Python oracle, asserts Go-source tab preservation for project extraction commands, and verifies archived `files-static-check` plus `static-check` outputs.
|
|
653
|
-
- `tests/release-workflow.test.ts` verifies semver-tag gating, the pinned Node.js `24.15.0` release runtime, npm publication steps, and GitHub release creation directives in `.github/workflows/release-npm.yml`.
|
|
654
|
-
- Test business logic focuses on parity with the Python oracle, persistent config mutation, startup-tool activation, prompt-command worktree lifecycle correctness, and npm release workflow structure.
|
|
655
|
-
|
|
656
|
-
## 8. Evidence Matrix
|
|
657
|
-
|
|
658
|
-
### 8.1 PRJ and CTN Evidence
|
|
659
|
-
| ID | Evidence |
|
|
660
|
-
| --- | --- |
|
|
661
|
-
| PRJ-001 | `src/index.ts` :: `registerPromptCommands` plus `registerReqReferencesCommand` :: registers bundled prompt-backed commands and the dedicated `req-references` command; `src/core/prompts.ts` :: `renderPrompt` :: adapts bundled prompt payloads. |
|
|
662
|
-
| PRJ-002 | `src/index.ts` :: `registerAgentTools` :: tool names include `files-tokens`, `summarize`, `compress`, `search`, `files-static-check`, and `static-check`. |
|
|
663
|
-
| PRJ-003 | `src/index.ts` :: `buildPiUsereqMenuChoices`, `configurePiUsereq`, and `configureDebugMenu` :: expose project paths, git automation, static-check, startup tools, notifications, and debug logging controls. |
|
|
664
|
-
| PRJ-004 | `src/core/prompt-command-runtime.ts` :: `validatePromptGitState`, `buildPromptWorktreeName`, `createPromptWorktree`, and `finalizePromptCommandExecution`; `src/core/req-references-command.ts` :: `prepareReqReferencesCommandExecution` and `executeReqReferencesCommandExecution` :: keep git orchestration internal to slash-command execution. |
|
|
665
|
-
| PRJ-005 | `src/core/resources.ts` :: `ensureHomeResources` :: copies bundled resources; bundled tree exists under `src/resources/{prompts,templates,guidelines}`. |
|
|
666
|
-
| CTN-001 | `src/core/config.ts` :: `getProjectConfigPath` and `getDefaultConfig` :: returns `.pi/pi-usereq/config.json`, `pi-usereq/docs`, `tests`, and `["src"]`. |
|
|
667
|
-
| CTN-002 | `src/core/tool-runner.ts` :: `collectSourceFiles` :: executes `git -C <projectBase> ls-files --cached --others --exclude-standard` and fails on non-zero status. |
|
|
668
|
-
| CTN-003 | `src/core/tool-runner.ts` :: `SUPPORTED_EXTENSIONS = new Set(Object.keys(STATIC_CHECK_EXT_TO_LANG))`; `src/core/source-analyzer.ts` :: alias assignments `specs.cc = specs.cpp`, `specs.cxx = specs.cpp`, `specs.hpp = specs.cpp`, `specs.exs = specs.elixir`. |
|
|
669
|
-
| CTN-004 | `src/core/tool-runner.ts` :: `runProjectStaticCheck` :: defines `fixtureRoots` with `tests/fixtures` and `${testsDirRel}/fixtures`, then filters matching files out before execution. |
|
|
670
|
-
| CTN-005 | `package.json` :: `"type": "module"`; `tsconfig.json` :: `"module": "NodeNext"`, `"moduleResolution": "NodeNext"`. |
|
|
671
|
-
| CTN-006 | `tsconfig.json` :: `"strict": true`, `"noEmit": true`, `"include": ["src/**/*.ts", "tests/**/*.ts"]`. |
|
|
672
|
-
| CTN-007 | `package.json` :: `"pi": { "extensions": ["./src/index.ts"] }`. |
|
|
673
|
-
| CTN-008 | `package.json` :: `"scripts"` :: `"test": "node --import tsx --test tests/**/*.test.ts"`, `"test:watch": ...`, `"cli": "node --import tsx ./src/cli.ts"`. |
|
|
674
|
-
| CTN-011 | `src/core/config.ts` :: `buildPromptReplacementPaths` :: emits `%%TEMPLATE_PATH%%` from `~/.pi/pi-usereq/resources/templates`; bundled template files exist under `src/resources/templates/`. |
|
|
675
|
-
| CTN-013 | `src/core/config.ts` :: `getDefaultConfig` and `loadConfig`; `src/core/debug-runtime.ts` :: `DEFAULT_DEBUG_WORKFLOW_EVENTS` and `normalizeDebugWorkflowEvents` :: default and normalize the persisted debug configuration including `DEBUG_WORKFLOW_EVENTS`. |
|
|
676
|
-
|
|
677
|
-
### 8.2 DES Evidence
|
|
678
|
-
| ID | Evidence |
|
|
679
|
-
| --- | --- |
|
|
680
|
-
| DES-001 | `src/cli.ts` :: `parseArgs` and `main` :: parses flags then dispatches with branches such as `runSummarize`, `runCompress`, `runSearch`, `runProjectStaticCheck`, and `runStaticCheck`. |
|
|
681
|
-
| DES-002 | `src/index.ts` :: `piUsereqExtension` :: calls `registerReqReferencesCommand`, `registerPromptCommands`, `registerAgentTools`, `registerConfigCommands`, then installs shared lifecycle hooks. |
|
|
682
|
-
| DES-003 | `src/core/source-analyzer.ts` :: `class SourceElement`; `SourceAnalyzer.enrich` :: invokes `extractSignatures`, `detectHierarchy`, `extractVisibility`, `extractInheritance`, `extractBodyAnnotations`, and `extractDoxygenFields`. |
|
|
683
|
-
| DES-013 | `src/core/req-references-command.ts` :: `prepareReqReferencesCommandExecution` and `executeReqReferencesCommandExecution` :: implement the dedicated no-worktree `req-references` git-write workflow. |
|
|
684
|
-
| DES-004 | `src/core/static-check.ts` :: `StaticCheckBase` and `StaticCheckCommand`; `dispatchStaticCheckForFile` switch selects the modular implementation by module name. |
|
|
685
|
-
| DES-005 | `src/core/tool-runner.ts` :: exports `runFilesTokens`, `runFilesSummarize`, `runSummarize`, `runCompress`, `runSearch`, `runFilesStaticCheck`, and `runProjectStaticCheck`. |
|
|
686
|
-
| DES-006 | `src/core/compress.ts` :: `normalizeRetainedLineIndentation`; `src/core/source-analyzer.ts` :: `normalizeSourceLineForExtraction`; `src/core/compress-files.ts` and `src/core/find-constructs.ts` reuse shared markdown emitters with preserved source tabs. |
|
|
687
|
-
| DES-011 | `.github/workflows/release-npm.yml` :: release jobs validate semver tags and `origin/master`, publish with npm authentication, and create the GitHub Release. |
|
|
688
|
-
|
|
689
|
-
### 8.3 REQ Evidence
|
|
690
|
-
| ID | Evidence |
|
|
691
|
-
| --- | --- |
|
|
692
|
-
| REQ-001 | `src/core/resources.ts` :: `copyDirectoryContents` :: skips dotfiles, recurses into directories, and uses `fs.copyFileSync(sourcePath, destinationPath)`. |
|
|
693
|
-
| REQ-002 | `src/core/config.ts` :: `buildPromptReplacementPaths` :: emits `%%TEMPLATE_PATH%%` plus docs/guideline/source/test tokens; `src/core/prompts.ts` :: `renderPrompt` merges them with `"%%ARGS%%": args`. |
|
|
694
|
-
| REQ-003 | `src/core/prompts.ts` :: `TOOL_REFERENCE_REPLACEMENTS` and `adaptPromptForInternalTools` :: replaces ``req --find`` style text with `search tool` style text. |
|
|
695
|
-
| REQ-004 | `src/index.ts` :: `registerPromptCommands` :: each handler renders the bundled prompt and dispatches it through `deliverPromptCommand(...)`. |
|
|
696
|
-
| REQ-298 | `src/core/prompt-command-catalog.ts` :: `PROMPT_COMMAND_NAMES` omits `references`; `src/index.ts` :: `registerReqReferencesCommand` registers `req-references` with `REQ_REFERENCES_COMMAND_DESCRIPTION`. |
|
|
697
|
-
| REQ-299 | `src/index.ts` :: `registerReqReferencesCommand` :: transitions `checking` then `running`; `src/core/req-references-command.ts` :: `prepareReqReferencesCommandExecution` reuses `validatePromptGitState(...)` without worktree or session switching. |
|
|
698
|
-
| REQ-300 | `src/core/req-references-command.ts` :: `executeReqReferencesCommandExecution` calls `runReferences(...)`; `src/core/tool-runner.ts` :: `runReferences` overwrites configured `REFERENCES.md`. |
|
|
699
|
-
| REQ-301 | `src/core/req-references-command.ts` :: `REQ_REFERENCES_COMMIT_MESSAGE`, `getGitAddTargetPath(...)`, and `executeReqReferencesCommandExecution(...)` :: stage only `REFERENCES.md` and create the fixed commit. |
|
|
700
|
-
| REQ-302 | `src/index.ts` :: `registerReqReferencesCommand` :: restores workflow state `idle` and emits success notification after direct execution; `src/core/req-references-command.ts` :: `listResidualGitStatusLines(...)` verifies clean repository state. |
|
|
701
|
-
| REQ-303 | `src/index.ts` :: `registerReqReferencesCommand` :: transitions to `error` and notifies on failure; `src/core/req-references-command.ts` :: throws deterministic `ReqError` failures for generation, staging, commit, and cleanliness errors. |
|
|
702
|
-
| REQ-005 | `src/index.ts` :: `runToolCommand`, `formatResultForEditor`, `showToolResult` :: writes combined output into the editor and notifies `completed` or `failed`. |
|
|
703
|
-
| REQ-006 | `src/index.ts` :: `buildPiUsereqMenuChoices` and `configurePiUsereq` :: expose directories, git automation, static-check, tools, notifications, debug settings, reset, save, and `Show configuration`. |
|
|
704
|
-
| REQ-236 | `src/core/config.ts` :: `getDefaultConfig`, `loadConfig`, and `buildPersistedConfig` :: persist `DEBUG_ENABLED` with default `disable`. |
|
|
705
|
-
| REQ-237 | `src/core/config.ts` :: `getDefaultConfig`, `loadConfig`, and `buildPersistedConfig`; `src/core/debug-runtime.ts` :: `resolveDebugLogPath` :: persist `DEBUG_LOG_FILE` and resolve relative paths against the original project base. |
|
|
706
|
-
| REQ-238 | `src/core/config.ts` :: `getDefaultConfig`, `loadConfig`, and `buildPersistedConfig`; `src/index.ts` :: `configureDebugMenu` :: persist and edit `DEBUG_LOG_ON_STATUS`. |
|
|
707
|
-
| REQ-239 | `src/core/config.ts` :: `getDefaultConfig`, `loadConfig`, and `buildPersistedConfig`; `src/core/debug-runtime.ts` :: `normalizeDebugEnabledTools`, `normalizeDebugEnabledPrompts` :: persist normalized debug selector arrays. |
|
|
708
|
-
| REQ-240 | `src/index.ts` :: `buildDebugMenuChoices` and `configureDebugMenu` :: render `Debug`, `Log file`, `Log on status`, `Status changes`, `Workflow events`, tool toggles, prompt toggles, and terminal rows. |
|
|
709
|
-
| REQ-241 | `src/index.ts` :: `buildDebugMenuChoice` :: dims and disables non-`Debug` submenu rows while global debug is off. |
|
|
710
|
-
| REQ-242 | `src/index.ts` :: `getDebugToolToggleNames` and `buildDebugMenuChoices`; `src/core/debug-runtime.ts` :: `normalizeDebugEnabledTools` :: derive tool debug rows from canonical tool inventories. |
|
|
711
|
-
| REQ-243 | `src/core/prompt-command-catalog.ts` :: `PROMPT_COMMAND_NAMES`; `src/core/debug-runtime.ts` :: `DEBUG_PROMPT_NAMES`; `src/index.ts` :: `buildDebugMenuChoices` :: derive prompt debug rows as `req-*` names. |
|
|
712
|
-
| REQ-244 | `src/core/debug-runtime.ts` :: `logDebugToolExecution`; `src/index.ts` :: `handleExtensionStatusEvent` :: append selected tool debug entries with workflow state, input, result, and error flag. |
|
|
713
|
-
| REQ-245 | `src/core/debug-runtime.ts` :: `logDebugPromptEvent` and `logDebugPromptWorkflowEvent`; `src/core/prompt-command-runtime.ts` :: required-doc, worktree, and closure helpers; `src/index.ts` :: workflow-state and closure logging :: append selected prompt debug entries. |
|
|
714
|
-
| REQ-246 | `src/core/debug-runtime.ts` :: `shouldLogDebugTool`, `shouldLogDebugPrompt`, and `shouldLogDebugPromptWorkflowEvent` :: suppress all debug writes when `DEBUG_ENABLED=disable`. |
|
|
715
|
-
| REQ-277 | `src/core/config.ts` :: `getDefaultConfig`, `loadConfig`, and `buildPersistedConfig`; `src/index.ts` :: `configureDebugMenu` :: persist and edit `DEBUG_WORKFLOW_EVENTS`. |
|
|
716
|
-
| REQ-276 | `src/core/prompt-command-runtime.ts` :: persisted session-context reuse plus restoration helpers; `src/index.ts` :: closure handling over lifecycle event contexts without `switchSession()` :: keep closure attached to the original base session. |
|
|
717
|
-
| REQ-278 | `src/core/extension-status.ts` :: `shouldPreservePromptCommandStateOnShutdown` and `updateExtensionStatus`; `src/index.ts` :: pre-shutdown preservation-aware workflow logging :: keep in-memory prompt state intact across switch-triggered shutdown. |
|
|
718
|
-
| REQ-279 | `src/core/extension-status.ts` :: `updateExtensionStatus` and prompt-state resynchronization helpers :: refresh the replacement-session controller from persisted prompt state on post-switch lifecycle hooks. |
|
|
719
|
-
| REQ-280 | `src/core/extension-status.ts` :: stale-context-safe `renderPiUsereqStatus`; `src/index.ts` :: `notifyContextSafely` :: suppress stale replacement-context errors during closure-facing renders and notifications. |
|
|
720
|
-
| REQ-281 | `src/index.ts` :: `deliverPromptCommand` and `registerPromptCommands` :: transition to `running` immediately after prompt handoff starts instead of waiting for async prompt completion. |
|
|
721
|
-
| REQ-282 | `src/core/prompt-command-runtime.ts` :: `verifyPromptCommandClosureArtifacts` and `finalizePromptCommandExecution` :: merge from restored `base-path` using persisted execution metadata plus worktree artifacts without requiring worktree-session reactivation at prompt end. |
|
|
722
|
-
| REQ-247 | `src/core/debug-runtime.ts` :: `matchesDebugWorkflowState`, `shouldLogDebugTool`, and `shouldLogDebugPrompt` :: gate debug writes by `DEBUG_LOG_ON_STATUS`. |
|
|
723
|
-
| REQ-007 | `src/index.ts` :: `configurePiUsereqToolsMenu` :: choices include `Enable tools`, `Enable all`, `Disable all`, and `Reset defaults`. |
|
|
724
|
-
| REQ-008 | `src/index.ts` :: `configureStaticCheckMenu` :: supports Command-only guided addition, configured-language removal, and reset-only static-check management. |
|
|
725
|
-
| REQ-160 | `src/index.ts` :: `buildStaticCheckMenuChoices` and `configureStaticCheckMenu` :: omit user-facing module selection and hardcode `Command` for guided additions. |
|
|
726
|
-
| REQ-161 | `src/core/static-check.ts` :: `dispatchStaticCheckForFile` and `runStaticCheck` :: keep `Dummy` only for existing config entries and the debug driver. |
|
|
727
|
-
| REQ-009 | `src/index.ts` :: `pi.on("session_start", ...)` :: calls `ensureHomeResources()`, `applyConfiguredPiUsereqTools`, and `ctx.ui.setStatus(...)`. |
|
|
728
|
-
| REQ-010 | `src/core/token-counter.ts` :: `new TokenCounter("cl100k_base")`; `formatPackSummary`; `src/core/tool-runner.ts` :: `runFilesTokens` validates files and returns summary plus warnings. |
|
|
729
|
-
| REQ-011 | `src/core/tool-runner.ts` :: `runFilesSummarize` :: returns `generateMarkdown(...)`; `src/core/source-analyzer.ts` :: `formatMarkdown` renders source-derived lines with preserved leading tabs. |
|
|
730
|
-
| REQ-012 | `src/core/compress.ts` :: `INDENT_SIGNIFICANT`, `normalizeRetainedLineIndentation`, and `compressSourceDetailed` :: preserve full indentation for indentation-significant languages and preserve leading tabs for other languages. |
|
|
731
|
-
| REQ-013 | `src/core/find-constructs.ts` :: `searchConstructsInFiles` and `formatConstruct` :: filters by tags/regex and emits signature, lines, Doxygen bullets, and stripped code with preserved leading tabs. |
|
|
732
|
-
| REQ-014 | `src/core/tool-runner.ts` :: `runSummarize` :: prepends file structure and returns `generateMarkdown(...)`; `src/core/source-analyzer.ts` :: `formatMarkdown` preserves source-derived leading tabs. |
|
|
733
|
-
| REQ-015 | `src/core/tool-runner.ts` :: `runCompress` :: collects configured project files then returns `compressFiles(files, enableLineNumbers, verbose, base)`. |
|
|
734
|
-
| REQ-016 | `src/core/tool-runner.ts` :: `runSearch` :: collects configured project files and executes `searchConstructsInFiles(files, tagFilter, pattern, ...)`. |
|
|
735
|
-
| REQ-017 | `src/core/tool-runner.ts` :: `runTokens` :: `canonicalNames = ["REQUIREMENTS.md", "WORKFLOW.md", "REFERENCES.md"]` and fails if no canonical docs exist. |
|
|
736
|
-
| REQ-018 | `src/cli.ts` :: `if (args.testStaticCheck) return runStaticCheck(args.testStaticCheck)`; `src/core/static-check.ts` :: `runStaticCheck` supports `dummy` and `command`. |
|
|
737
|
-
| REQ-019 | `src/core/tool-runner.ts` :: `runFilesStaticCheck` :: resolves extension via `STATIC_CHECK_EXT_TO_LANG`, iterates configured checkers, and calls `dispatchStaticCheckForFile(..., { failOnly: true })`. |
|
|
738
|
-
| REQ-020 | `src/core/static-check.ts` :: `parseEnableStaticCheck` :: parses `LANG=Command,CMD[,PARAM...]`, canonicalizes language names, and builds `StaticCheckEntry`. |
|
|
739
|
-
| REQ-021 | `src/core/static-check.ts` :: `parseEnableStaticCheck` :: explicit `ReqError` branches reject missing `=`, missing `Command`, missing `cmd`, unknown language, and non-Command modules. |
|
|
740
|
-
| REQ-022 | `src/core/config.ts` :: `loadConfig` preserves persisted entries; `src/core/static-check.ts` :: `dispatchStaticCheckForFile` and `runStaticCheck` keep `Dummy` available only for existing config or debug-driver use. |
|
|
741
|
-
| REQ-023 | `src/core/static-check.ts` :: `StaticCheckCommand` constructor :: `if (!findExecutable(cmd)) throw new ReqError(...)`. |
|
|
742
|
-
| REQ-030 | `src/index.ts` :: `loadProjectConfig` :: resolves the project base from cwd and normalizes the loaded config without persisting runtime-derived path metadata. |
|
|
743
|
-
| REQ-031 | `src/index.ts` :: `registerConfigCommands` :: `pi-usereq-show-config` writes `JSON.stringify(config, null, 2)` into the editor. |
|
|
744
|
-
| REQ-138 | `.github/workflows/release-npm.yml` :: `on.push.tags` plus release-tag validation restrict automation to canonical `v<major>.<minor>.<patch>` tags. |
|
|
745
|
-
| REQ-139 | `.github/workflows/release-npm.yml` :: branch-check job fetches `origin/master` and gates downstream jobs on containment of `github.sha`. |
|
|
746
|
-
| REQ-140 | `.github/workflows/release-npm.yml` :: `env.NODE_VERSION` is `24.15.0`; publish job uses `actions/setup-node`, `npm ci`, `npm pkg delete private`, and `npm publish --provenance --access public` with `NODE_AUTH_TOKEN`. |
|
|
747
|
-
| REQ-141 | `.github/workflows/release-npm.yml` :: release job uses changelog-builder output as `softprops/action-gh-release` body with non-draft and non-prerelease flags. |
|
|
748
|
-
|
|
749
|
-
### 8.4 TST Evidence
|
|
750
|
-
| ID | Evidence |
|
|
751
|
-
| --- | --- |
|
|
752
|
-
| TST-001 | `tests/extension-registration.test.ts` :: `extension registers all required prompt commands, tool wrappers, and agent tools` validates command and tool registration sets. |
|
|
753
|
-
| TST-002 | `tests/prompt-rendering.test.ts` :: `embedded resources are copied ...` and `prompt rendering replaces all dynamic placeholders ...`. |
|
|
754
|
-
| TST-003 | `tests/oracle-standalone.test.ts` :: preserves Python-oracle coverage for non-tab-sensitive fixtures, asserts Go-fixture tab preservation for `files-summarize`, `files-compress`, and `files-find`, and keeps archived `test-static-check` coverage. |
|
|
755
|
-
| TST-004 | `tests/oracle-project.test.ts` :: preserves Python-oracle coverage for non-tab-sensitive project fixtures, asserts Go-source tab preservation for `summarize`, `compress`, and `find`, and keeps archived static-check coverage. |
|
|
756
|
-
| TST-005 | `tests/extension-registration.test.ts` :: `configuration menu saves updated docs-dir`, `configuration menu can disable ... tools`, and `configuration menu can add guided static-check entries ...`. |
|
|
757
|
-
| TST-046 | `tests/extension-registration.test.ts` :: `configuration menu hides removed static-check modules from user-facing actions`. |
|
|
758
|
-
| TST-073 | `tests/extension-registration.test.ts` :: `debug menu dims locked rows and persists debug settings with focus-preserving re-renders` validates `DEBUG_WORKFLOW_EVENTS` alongside the existing Debug fields. |
|
|
759
|
-
| TST-075 | `tests/extension-registration.test.ts` :: `prompt debug logging captures failing and successful prompt orchestration entries` validates `DEBUG_WORKFLOW_EVENTS`-gated workflow event actions alongside required-doc, worktree, merge, delete, and `workflow_state` entries. |
|
|
760
|
-
| TST-089 | `tests/extension-registration.test.ts` :: `worktree-backed closure succeeds when agent_end lifecycle contexts omit switchSession` simulates CLI event contexts without session-switch methods and verifies restore, merge, and cleanup. |
|
|
761
|
-
| TST-090 | `tests/extension-registration.test.ts` :: `switch-triggered session_shutdown preserves prompt state for same-runtime workflow closure` reproduces the logged shutdown ordering and verifies preserved workflow state, merge, and cleanup. |
|
|
762
|
-
| TST-091 | `tests/extension-registration.test.ts` :: `replacement-session runtime resynchronizes persisted running state before prompt closure` verifies rebinding before the post-switch `running` transition still leads to merge and cleanup. |
|
|
763
|
-
| TST-092 | `tests/extension-registration.test.ts` :: `stale replacement contexts do not break workflow-state rendering` verifies stale replacement-session render contexts are ignored without throwing. |
|
|
764
|
-
| TST-093 | `tests/extension-registration.test.ts` :: `replacement-session prompt delivery persists running before async sendUserMessage resolves` verifies async prompt-delivery completion does not delay merge-eligible `running` state. |
|
|
765
|
-
| TST-094 | `tests/extension-registration.test.ts` :: `worktree-backed closure merges from base-path when end-of-session timing already moved the persisted context` verifies closure merges successfully without worktree-session reactivation. |
|
|
766
|
-
| TST-102 | `tests/extension-registration.test.ts` :: `req-references registers outside the bundled prompt inventory and keeps its dedicated description` verifies dedicated registration independent from the bundled prompt inventory. |
|
|
767
|
-
| TST-103 | `tests/extension-registration.test.ts` :: `req-references updates REFERENCES.md with a direct commit workflow and no LLM session` verifies overwrite, fixed commit message, clean repo, and idle restoration without worktree or prompt dispatch. |
|
|
768
|
-
| TST-104 | `tests/extension-registration.test.ts` :: `req-references surfaces git-validation and reference-generation failures without session handoff` verifies error reporting without worktree creation, prompt dispatch, or git-history mutation. |
|
|
769
|
-
| TST-006 | `tests/extension-registration.test.ts` :: `session_start applies configured pi-usereq startup tools`. |
|
|
770
|
-
| TST-009 | `package.json` :: `"type": "module"`, `"pi": { "extensions": ["./src/index.ts"] }`, and `"scripts"` entries for `test`, `test:watch`, and `cli`. |
|
|
771
|
-
| TST-010 | `tsconfig.json` :: `"module": "NodeNext"`, `"moduleResolution": "NodeNext"`, `"strict": true`, `"noEmit": true`, and `"include": ["src/**/*.ts", "tests/**/*.ts"]`. |
|
|
772
|
-
| TST-022 | `tests/extension-registration.test.ts` :: `source-extraction agent tools preserve leading tabs in emitted content` plus the explicit `files-summarize` and `summarize` monolithic-output tests. |
|
|
773
|
-
| TST-023 | `tests/extension-registration.test.ts` :: `summary tools register agent-oriented descriptions and schema details`. |
|
|
774
|
-
| TST-024 | `tests/extension-registration.test.ts` :: `source-extraction agent tools preserve leading tabs in emitted content` plus the explicit `files-search` and `search` monolithic-output tests. |
|
|
775
|
-
| TST-026 | `tests/extension-registration.test.ts` :: `source-extraction agent tools preserve leading tabs in emitted content` plus the explicit `files-compress` and `compress` monolithic-output tests. |
|
|
776
|
-
| TST-039 | `tests/release-workflow.test.ts` :: workflow-content assertions cover semver gating, `origin/master` containment, Node.js `24.15.0`, npm publication, and GitHub release generation. |
|
|
777
|
-
|
|
778
|
-
## 9. Performance Notes
|
|
779
|
-
No explicit performance optimizations identified.
|