pi-usereq 0.7.0 → 0.11.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/.gitignore +2 -0
- package/CHANGELOG.md +24 -0
- package/README.md +1 -1
- package/docs/pi.dev/coding-agent-docs/custom-provider.md +42 -1
- package/docs/pi.dev/coding-agent-docs/extensions.md +302 -28
- package/docs/pi.dev/coding-agent-docs/keybindings.md +23 -1
- package/docs/pi.dev/coding-agent-docs/models.md +3 -0
- package/docs/pi.dev/coding-agent-docs/packages.md +2 -2
- package/docs/pi.dev/coding-agent-docs/prompt-templates.md +21 -0
- package/docs/pi.dev/coding-agent-docs/providers.md +1 -0
- package/docs/pi.dev/coding-agent-docs/rpc.md +36 -6
- package/docs/pi.dev/coding-agent-docs/sdk.md +30 -5
- package/docs/pi.dev/coding-agent-docs/session.md +1 -1
- package/docs/pi.dev/coding-agent-docs/settings.md +2 -1
- package/docs/pi.dev/coding-agent-docs/skills.md +12 -12
- package/docs/pi.dev/coding-agent-docs/tree.md +2 -0
- package/docs/pi.dev/coding-agent-docs/tui.md +31 -0
- package/docs/pi.dev/mom-docs/new.md +4 -4
- package/package.json +1 -1
- package/pi-usereq/docs/REFERENCES.md +5214 -24470
- package/pi-usereq/docs/REQUIREMENTS.md +307 -170
- package/pi-usereq/docs/WORKFLOW.md +334 -316
- package/pi.dev-src/pi-mono/agent/src/agent-loop.ts +683 -0
- package/pi.dev-src/pi-mono/agent/src/agent.ts +543 -0
- package/pi.dev-src/pi-mono/agent/src/index.ts +8 -0
- package/pi.dev-src/pi-mono/agent/src/proxy.ts +367 -0
- package/pi.dev-src/pi-mono/agent/src/types.ts +364 -0
- package/pi.dev-src/pi-mono/agent/test/agent-loop.test.ts +1181 -0
- package/pi.dev-src/pi-mono/agent/test/agent.test.ts +463 -0
- package/pi.dev-src/pi-mono/agent/test/e2e.test.ts +404 -0
- package/pi.dev-src/pi-mono/agent/test/utils/calculate.ts +32 -0
- package/pi.dev-src/pi-mono/agent/test/utils/get-current-time.ts +46 -0
- package/pi.dev-src/pi-mono/agent/vitest.config.ts +9 -0
- package/pi.dev-src/pi-mono/ai/bedrock-provider.d.ts +1 -0
- package/pi.dev-src/pi-mono/ai/bedrock-provider.js +1 -0
- package/pi.dev-src/pi-mono/ai/scripts/generate-models.ts +1635 -0
- package/pi.dev-src/pi-mono/ai/scripts/generate-test-image.ts +34 -0
- package/pi.dev-src/pi-mono/ai/src/api-registry.ts +98 -0
- package/pi.dev-src/pi-mono/ai/src/bedrock-provider.ts +6 -0
- package/pi.dev-src/pi-mono/ai/src/cli.ts +133 -0
- package/pi.dev-src/pi-mono/ai/src/env-api-keys.ts +134 -0
- package/pi.dev-src/pi-mono/ai/src/index.ts +35 -0
- package/pi.dev-src/pi-mono/ai/src/models.generated.ts +14928 -0
- package/pi.dev-src/pi-mono/ai/src/models.ts +82 -0
- package/pi.dev-src/pi-mono/ai/src/oauth.ts +1 -0
- package/pi.dev-src/pi-mono/ai/src/providers/amazon-bedrock.ts +929 -0
- package/pi.dev-src/pi-mono/ai/src/providers/anthropic.ts +1125 -0
- package/pi.dev-src/pi-mono/ai/src/providers/azure-openai-responses.ts +253 -0
- package/pi.dev-src/pi-mono/ai/src/providers/faux.ts +499 -0
- package/pi.dev-src/pi-mono/ai/src/providers/github-copilot-headers.ts +37 -0
- package/pi.dev-src/pi-mono/ai/src/providers/google-gemini-cli.ts +996 -0
- package/pi.dev-src/pi-mono/ai/src/providers/google-shared.ts +354 -0
- package/pi.dev-src/pi-mono/ai/src/providers/google-vertex.ts +543 -0
- package/pi.dev-src/pi-mono/ai/src/providers/google.ts +500 -0
- package/pi.dev-src/pi-mono/ai/src/providers/mistral.ts +629 -0
- package/pi.dev-src/pi-mono/ai/src/providers/openai-codex-responses.ts +984 -0
- package/pi.dev-src/pi-mono/ai/src/providers/openai-completions.ts +1063 -0
- package/pi.dev-src/pi-mono/ai/src/providers/openai-responses-shared.ts +539 -0
- package/pi.dev-src/pi-mono/ai/src/providers/openai-responses.ts +264 -0
- package/pi.dev-src/pi-mono/ai/src/providers/register-builtins.ts +433 -0
- package/pi.dev-src/pi-mono/ai/src/providers/simple-options.ts +47 -0
- package/pi.dev-src/pi-mono/ai/src/providers/transform-messages.ts +220 -0
- package/pi.dev-src/pi-mono/ai/src/stream.ts +59 -0
- package/pi.dev-src/pi-mono/ai/src/types.ts +417 -0
- package/pi.dev-src/pi-mono/ai/src/utils/event-stream.ts +87 -0
- package/pi.dev-src/pi-mono/ai/src/utils/hash.ts +13 -0
- package/pi.dev-src/pi-mono/ai/src/utils/headers.ts +7 -0
- package/pi.dev-src/pi-mono/ai/src/utils/json-parse.ts +124 -0
- package/pi.dev-src/pi-mono/ai/src/utils/overflow.ts +138 -0
- package/pi.dev-src/pi-mono/ai/src/utils/sanitize-unicode.ts +25 -0
- package/pi.dev-src/pi-mono/ai/src/utils/typebox-helpers.ts +24 -0
- package/pi.dev-src/pi-mono/ai/src/utils/validation.ts +324 -0
- package/pi.dev-src/pi-mono/ai/test/abort.test.ts +260 -0
- package/pi.dev-src/pi-mono/ai/test/anthropic-oauth.test.ts +99 -0
- package/pi.dev-src/pi-mono/ai/test/anthropic-opus-4-7-smoke.test.ts +72 -0
- package/pi.dev-src/pi-mono/ai/test/anthropic-sse-parsing.test.ts +113 -0
- package/pi.dev-src/pi-mono/ai/test/anthropic-thinking-disable.test.ts +152 -0
- package/pi.dev-src/pi-mono/ai/test/anthropic-tool-name-normalization.test.ts +205 -0
- package/pi.dev-src/pi-mono/ai/test/azure-utils.ts +28 -0
- package/pi.dev-src/pi-mono/ai/test/bedrock-endpoint-resolution.test.ts +131 -0
- package/pi.dev-src/pi-mono/ai/test/bedrock-models.test.ts +66 -0
- package/pi.dev-src/pi-mono/ai/test/bedrock-thinking-payload.test.ts +107 -0
- package/pi.dev-src/pi-mono/ai/test/bedrock-utils.ts +18 -0
- package/pi.dev-src/pi-mono/ai/test/cache-retention.test.ts +335 -0
- package/pi.dev-src/pi-mono/ai/test/context-overflow.test.ts +714 -0
- package/pi.dev-src/pi-mono/ai/test/cross-provider-handoff.test.ts +458 -0
- 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 +742 -0
- package/pi.dev-src/pi-mono/ai/test/faux-provider.test.ts +597 -0
- package/pi.dev-src/pi-mono/ai/test/fireworks-models.test.ts +49 -0
- package/pi.dev-src/pi-mono/ai/test/github-copilot-anthropic.test.ts +108 -0
- package/pi.dev-src/pi-mono/ai/test/github-copilot-oauth.test.ts +196 -0
- package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-claude-thinking-header.test.ts +103 -0
- package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-empty-stream.test.ts +108 -0
- package/pi.dev-src/pi-mono/ai/test/google-gemini-cli-retry-delay.test.ts +53 -0
- package/pi.dev-src/pi-mono/ai/test/google-shared-convert-tools.test.ts +187 -0
- package/pi.dev-src/pi-mono/ai/test/google-shared-gemini3-unsigned-tool-call.test.ts +172 -0
- package/pi.dev-src/pi-mono/ai/test/google-shared-image-tool-result-routing.test.ts +124 -0
- package/pi.dev-src/pi-mono/ai/test/google-thinking-disable.test.ts +183 -0
- package/pi.dev-src/pi-mono/ai/test/google-thinking-signature.test.ts +38 -0
- package/pi.dev-src/pi-mono/ai/test/google-tool-call-missing-args.test.ts +105 -0
- package/pi.dev-src/pi-mono/ai/test/google-vertex-api-key-resolution.test.ts +144 -0
- package/pi.dev-src/pi-mono/ai/test/image-tool-result.test.ts +481 -0
- package/pi.dev-src/pi-mono/ai/test/interleaved-thinking.test.ts +145 -0
- package/pi.dev-src/pi-mono/ai/test/lazy-module-load.test.ts +102 -0
- package/pi.dev-src/pi-mono/ai/test/mistral-reasoning-mode.test.ts +66 -0
- package/pi.dev-src/pi-mono/ai/test/mistral-tool-schema.test.ts +61 -0
- package/pi.dev-src/pi-mono/ai/test/oauth.ts +89 -0
- package/pi.dev-src/pi-mono/ai/test/openai-codex-cache-affinity-e2e.test.ts +36 -0
- package/pi.dev-src/pi-mono/ai/test/openai-codex-stream.test.ts +686 -0
- package/pi.dev-src/pi-mono/ai/test/openai-completions-cache-control-format.test.ts +189 -0
- package/pi.dev-src/pi-mono/ai/test/openai-completions-prompt-cache.test.ts +198 -0
- package/pi.dev-src/pi-mono/ai/test/openai-completions-thinking-as-text.test.ts +214 -0
- package/pi.dev-src/pi-mono/ai/test/openai-completions-tool-choice.test.ts +560 -0
- package/pi.dev-src/pi-mono/ai/test/openai-completions-tool-result-images.test.ts +101 -0
- package/pi.dev-src/pi-mono/ai/test/openai-responses-cache-affinity-e2e.test.ts +32 -0
- package/pi.dev-src/pi-mono/ai/test/openai-responses-copilot-provider.test.ts +128 -0
- package/pi.dev-src/pi-mono/ai/test/openai-responses-foreign-toolcall-id.test.ts +66 -0
- package/pi.dev-src/pi-mono/ai/test/openai-responses-partial-json-cleanup.test.ts +101 -0
- package/pi.dev-src/pi-mono/ai/test/openai-responses-reasoning-replay-e2e.test.ts +292 -0
- package/pi.dev-src/pi-mono/ai/test/openai-responses-tool-result-images.test.ts +200 -0
- package/pi.dev-src/pi-mono/ai/test/openrouter-cache-write-repro.test.ts +78 -0
- package/pi.dev-src/pi-mono/ai/test/overflow.test.ts +64 -0
- package/pi.dev-src/pi-mono/ai/test/responseid.test.ts +145 -0
- package/pi.dev-src/pi-mono/ai/test/stream.test.ts +1405 -0
- package/pi.dev-src/pi-mono/ai/test/supports-xhigh.test.ts +34 -0
- package/pi.dev-src/pi-mono/ai/test/tokens.test.ts +304 -0
- package/pi.dev-src/pi-mono/ai/test/tool-call-id-normalization.test.ts +291 -0
- package/pi.dev-src/pi-mono/ai/test/tool-call-without-result.test.ts +313 -0
- package/pi.dev-src/pi-mono/ai/test/total-tokens.test.ts +695 -0
- package/pi.dev-src/pi-mono/ai/test/transform-messages-copilot-openai-to-anthropic.test.ts +191 -0
- package/pi.dev-src/pi-mono/ai/test/unicode-surrogate.test.ts +754 -0
- package/pi.dev-src/pi-mono/ai/test/validation.test.ts +116 -0
- package/pi.dev-src/pi-mono/ai/test/xhigh.test.ts +71 -0
- package/pi.dev-src/pi-mono/ai/test/zen.test.ts +25 -0
- package/pi.dev-src/pi-mono/ai/vitest.config.ts +9 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/antigravity-image-gen.ts +418 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/bash-spawn-hook.ts +30 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/bookmark.ts +50 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/claude-rules.ts +86 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/commands.ts +72 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/confirm-destructive.ts +59 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-compaction.ts +127 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-footer.ts +64 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-header.ts +73 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/custom-provider-qwen-cli/index.ts +345 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dirty-repo-guard.ts +56 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-component.ts +132 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/index.ts +74 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-resources/index.ts +15 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/dynamic-tools.ts +74 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/event-bus.ts +43 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/file-trigger.ts +41 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/git-checkpoint.ts +53 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/handoff.ts +153 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/hello.ts +26 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/hidden-thinking-label.ts +53 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/inline-bash.ts +94 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/input-transform.ts +43 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/interactive-shell.ts +196 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/mac-system-theme.ts +47 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/message-renderer.ts +59 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/minimal-mode.ts +426 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/modal-editor.ts +85 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/model-status.ts +31 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/notify.ts +55 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/overlay-qa-tests.ts +1348 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/overlay-test.ts +150 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/permission-gate.ts +34 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/pirate.ts +47 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/plan-mode/index.ts +340 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/plan-mode/utils.ts +168 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/preset.ts +430 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/prompt-customizer.ts +97 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/protected-paths.ts +30 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/provider-payload.ts +18 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/qna.ts +122 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/question.ts +264 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/questionnaire.ts +427 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/rainbow-editor.ts +88 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/reload-runtime.ts +37 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/rpc-demo.ts +118 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/sandbox/index.ts +321 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/sandbox/package-lock.json +92 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/send-user-message.ts +97 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/session-name.ts +27 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/shutdown-command.ts +63 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/snake.ts +343 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/space-invaders.ts +560 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/ssh.ts +220 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/status-line.ts +32 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/structured-output.ts +65 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/planner.md +37 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/scout.md +50 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents/worker.md +24 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/agents.ts +126 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/index.ts +987 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/implement.md +10 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/summarize.ts +206 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/system-prompt-header.ts +17 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tic-tac-toe.ts +1008 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/timed-confirm.ts +70 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/titlebar-spinner.ts +58 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/todo.ts +297 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tool-override.ts +144 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/tools.ts +141 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/trigger-compact.ts +50 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/truncated-tool.ts +195 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/widget-placement.ts +9 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/with-deps/index.ts +32 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/with-deps/package-lock.json +31 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/working-indicator.ts +123 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/extensions/working-message-test.ts +25 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/rpc-extension-ui.ts +632 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/01-minimal.ts +22 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/02-custom-model.ts +49 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/03-custom-prompt.ts +62 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/04-skills.ts +55 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/05-tools.ts +44 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/06-extensions.ts +90 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/07-context-files.ts +42 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/08-prompt-templates.ts +51 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/09-api-keys-and-oauth.ts +48 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/10-settings.ts +53 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/11-sessions.ts +48 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/12-full-control.ts +73 -0
- package/pi.dev-src/pi-mono/coding-agent/examples/sdk/13-session-runtime.ts +67 -0
- package/pi.dev-src/pi-mono/coding-agent/scripts/migrate-sessions.sh +93 -0
- package/pi.dev-src/pi-mono/coding-agent/src/bun/cli.ts +6 -0
- package/pi.dev-src/pi-mono/coding-agent/src/bun/register-bedrock.ts +4 -0
- package/pi.dev-src/pi-mono/coding-agent/src/cli/args.ts +335 -0
- package/pi.dev-src/pi-mono/coding-agent/src/cli/config-selector.ts +52 -0
- package/pi.dev-src/pi-mono/coding-agent/src/cli/file-processor.ts +100 -0
- package/pi.dev-src/pi-mono/coding-agent/src/cli/initial-message.ts +43 -0
- package/pi.dev-src/pi-mono/coding-agent/src/cli/list-models.ts +110 -0
- package/pi.dev-src/pi-mono/coding-agent/src/cli/session-picker.ts +52 -0
- package/pi.dev-src/pi-mono/coding-agent/src/cli.ts +17 -0
- package/pi.dev-src/pi-mono/coding-agent/src/config.ts +261 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session-runtime.ts +394 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session-services.ts +196 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/agent-session.ts +3096 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/auth-storage.ts +493 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/bash-executor.ts +154 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/branch-summarization.ts +355 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/compaction.ts +839 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/index.ts +7 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/compaction/utils.ts +170 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/defaults.ts +3 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/diagnostics.ts +15 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/event-bus.ts +33 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/exec.ts +107 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/ansi-to-html.ts +258 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/index.ts +314 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.css +1017 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.html +55 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/template.js +1770 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/tool-renderer.ts +158 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/vendor/highlight.min.js +1213 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/export-html/vendor/marked.min.js +6 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/index.ts +171 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/loader.ts +606 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/runner.ts +1019 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/types.ts +1542 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/extensions/wrapper.ts +30 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/footer-data-provider.ts +354 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/index.ts +77 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/keybindings.ts +370 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/messages.ts +195 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/model-registry.ts +858 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/model-resolver.ts +629 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/output-guard.ts +74 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/package-manager.ts +2408 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/prompt-templates.ts +296 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/resolve-config-value.ts +142 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/resource-loader.ts +917 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/sdk.ts +380 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/session-cwd.ts +59 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/session-manager.ts +1425 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/settings-manager.ts +999 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/skills.ts +508 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/slash-commands.ts +39 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/source-info.ts +40 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/system-prompt.ts +172 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/telemetry.ts +13 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/timings.ts +31 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/bash.ts +448 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/edit-diff.ts +445 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/edit.ts +487 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/file-mutation-queue.ts +39 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/find.ts +370 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/grep.ts +384 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/index.ts +196 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/ls.ts +229 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/path-utils.ts +94 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/read.ts +273 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/render-utils.ts +64 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/tool-definition-wrapper.ts +45 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/truncate.ts +265 -0
- package/pi.dev-src/pi-mono/coding-agent/src/core/tools/write.ts +281 -0
- package/pi.dev-src/pi-mono/coding-agent/src/index.ts +352 -0
- package/pi.dev-src/pi-mono/coding-agent/src/main.ts +731 -0
- package/pi.dev-src/pi-mono/coding-agent/src/migrations.ts +314 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/index.ts +9 -0
- 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 +382 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/assistant-message.ts +147 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/bash-execution.ts +218 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/bordered-loader.ts +68 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/branch-summary-message.ts +58 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/compaction-summary-message.ts +59 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/config-selector.ts +592 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/countdown-timer.ts +38 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/custom-editor.ts +80 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/custom-message.ts +99 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/daxnuts.ts +164 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/diff.ts +147 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/dynamic-border.ts +25 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/earendil-announcement.ts +53 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-editor.ts +147 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-input.ts +87 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/extension-selector.ts +107 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/footer.ts +220 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/index.ts +32 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/keybinding-hints.ts +24 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/login-dialog.ts +178 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/model-selector.ts +338 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/oauth-selector.ts +121 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/scoped-models-selector.ts +355 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/session-selector-search.ts +194 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/session-selector.ts +1026 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/settings-selector.ts +456 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/show-images-selector.ts +50 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/skill-invocation-message.ts +55 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/theme-selector.ts +67 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/thinking-selector.ts +74 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/tool-execution.ts +352 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/tree-selector.ts +1246 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/user-message-selector.ts +155 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/user-message.ts +35 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/components/visual-truncate.ts +50 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/interactive-mode.ts +5155 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/dark.json +85 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/light.json +84 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/theme-schema.json +335 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/interactive/theme/theme.ts +1141 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/print-mode.ts +158 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/jsonl.ts +58 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-client.ts +515 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-mode.ts +745 -0
- package/pi.dev-src/pi-mono/coding-agent/src/modes/rpc/rpc-types.ts +264 -0
- package/pi.dev-src/pi-mono/coding-agent/src/package-manager-cli.ts +270 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/changelog.ts +99 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/child-process.ts +86 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard-image.ts +300 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard-native.ts +22 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/clipboard.ts +81 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/exif-orientation.ts +183 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/frontmatter.ts +39 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/fs-watch.ts +30 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/git.ts +192 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/image-convert.ts +41 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/image-resize.ts +176 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/mime.ts +30 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/paths.ts +20 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/photon.ts +139 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/shell.ts +210 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/sleep.ts +18 -0
- package/pi.dev-src/pi-mono/coding-agent/src/utils/tools-manager.ts +287 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-auto-compaction-queue.test.ts +437 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-branching.test.ts +156 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-compaction.test.ts +208 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-concurrent.test.ts +618 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-dynamic-provider.test.ts +117 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-dynamic-tools.test.ts +182 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-retry.test.ts +318 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-runtime-events.test.ts +208 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-stats.test.ts +143 -0
- package/pi.dev-src/pi-mono/coding-agent/test/agent-session-tree-navigation.test.ts +323 -0
- package/pi.dev-src/pi-mono/coding-agent/test/args.test.ts +328 -0
- package/pi.dev-src/pi-mono/coding-agent/test/assistant-message.test.ts +57 -0
- package/pi.dev-src/pi-mono/coding-agent/test/auth-storage.test.ts +462 -0
- package/pi.dev-src/pi-mono/coding-agent/test/bash-close-hang-windows.test.ts +126 -0
- package/pi.dev-src/pi-mono/coding-agent/test/bash-execution-width.test.ts +80 -0
- package/pi.dev-src/pi-mono/coding-agent/test/block-images.test.ts +120 -0
- package/pi.dev-src/pi-mono/coding-agent/test/clipboard-image-bmp-conversion.test.ts +88 -0
- package/pi.dev-src/pi-mono/coding-agent/test/clipboard-image.test.ts +136 -0
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-extensions-example.test.ts +66 -0
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-extensions.test.ts +415 -0
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-serialization.test.ts +79 -0
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-summary-reasoning.test.ts +118 -0
- package/pi.dev-src/pi-mono/coding-agent/test/compaction-thinking-model.test.ts +223 -0
- package/pi.dev-src/pi-mono/coding-agent/test/compaction.test.ts +550 -0
- package/pi.dev-src/pi-mono/coding-agent/test/config.test.ts +30 -0
- package/pi.dev-src/pi-mono/coding-agent/test/edit-tool-legacy-input.test.ts +116 -0
- package/pi.dev-src/pi-mono/coding-agent/test/edit-tool-no-full-redraw.test.ts +235 -0
- package/pi.dev-src/pi-mono/coding-agent/test/export-html-whitespace.test.ts +12 -0
- package/pi.dev-src/pi-mono/coding-agent/test/export-html-xss.test.ts +28 -0
- package/pi.dev-src/pi-mono/coding-agent/test/extensions-discovery.test.ts +463 -0
- package/pi.dev-src/pi-mono/coding-agent/test/extensions-input-event.test.ts +112 -0
- package/pi.dev-src/pi-mono/coding-agent/test/extensions-runner.test.ts +805 -0
- package/pi.dev-src/pi-mono/coding-agent/test/file-mutation-queue.test.ts +163 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/assistant-message-with-thinking-code.json +33 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/before-compaction.jsonl +1003 -0
- 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 +1019 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/consecutive-hyphens/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/disable-model-invocation/SKILL.md +9 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/invalid-name-chars/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/invalid-yaml/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/long-name/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/missing-description/SKILL.md +7 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/multiline-description/SKILL.md +11 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/name-mismatch/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/nested/child-skill/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/no-frontmatter/SKILL.md +3 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/root-skill-preferred/SKILL.md +3 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/root-skill-preferred/nested-child/SKILL.md +3 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/unknown-field/SKILL.md +10 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills/valid-skill/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills-collision/first/calendar/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/fixtures/skills-collision/second/calendar/SKILL.md +8 -0
- package/pi.dev-src/pi-mono/coding-agent/test/footer-data-provider.test.ts +265 -0
- package/pi.dev-src/pi-mono/coding-agent/test/footer-width.test.ts +115 -0
- package/pi.dev-src/pi-mono/coding-agent/test/frontmatter.test.ts +60 -0
- package/pi.dev-src/pi-mono/coding-agent/test/git-ssh-url.test.ts +78 -0
- package/pi.dev-src/pi-mono/coding-agent/test/git-update.test.ts +411 -0
- package/pi.dev-src/pi-mono/coding-agent/test/image-processing.test.ts +145 -0
- package/pi.dev-src/pi-mono/coding-agent/test/image-resize-callers.test.ts +53 -0
- package/pi.dev-src/pi-mono/coding-agent/test/initial-message.test.ts +48 -0
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-anthropic-warning.test.ts +73 -0
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-clone-command.test.ts +77 -0
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-compaction.test.ts +57 -0
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-import-command.test.ts +144 -0
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-status.test.ts +635 -0
- package/pi.dev-src/pi-mono/coding-agent/test/interactive-mode-suspend.test.ts +149 -0
- package/pi.dev-src/pi-mono/coding-agent/test/keybindings-migration.test.ts +88 -0
- package/pi.dev-src/pi-mono/coding-agent/test/model-registry.test.ts +1209 -0
- package/pi.dev-src/pi-mono/coding-agent/test/model-resolver.test.ts +436 -0
- package/pi.dev-src/pi-mono/coding-agent/test/package-command-paths.test.ts +144 -0
- package/pi.dev-src/pi-mono/coding-agent/test/package-manager-ssh.test.ts +97 -0
- package/pi.dev-src/pi-mono/coding-agent/test/package-manager.test.ts +1795 -0
- package/pi.dev-src/pi-mono/coding-agent/test/path-utils.test.ts +162 -0
- package/pi.dev-src/pi-mono/coding-agent/test/plan-mode-utils.test.ts +261 -0
- package/pi.dev-src/pi-mono/coding-agent/test/print-mode.test.ts +140 -0
- package/pi.dev-src/pi-mono/coding-agent/test/prompt-templates.test.ts +515 -0
- package/pi.dev-src/pi-mono/coding-agent/test/resource-loader.test.ts +576 -0
- package/pi.dev-src/pi-mono/coding-agent/test/rpc-client-clone.test.ts +29 -0
- package/pi.dev-src/pi-mono/coding-agent/test/rpc-example.ts +86 -0
- package/pi.dev-src/pi-mono/coding-agent/test/rpc-jsonl.test.ts +65 -0
- package/pi.dev-src/pi-mono/coding-agent/test/rpc-prompt-response-semantics.test.ts +285 -0
- package/pi.dev-src/pi-mono/coding-agent/test/rpc.test.ts +321 -0
- package/pi.dev-src/pi-mono/coding-agent/test/sdk-codex-cache-probe-tool-loop.ts +364 -0
- package/pi.dev-src/pi-mono/coding-agent/test/sdk-openrouter-attribution.test.ts +181 -0
- package/pi.dev-src/pi-mono/coding-agent/test/sdk-session-manager.test.ts +95 -0
- package/pi.dev-src/pi-mono/coding-agent/test/sdk-skills.test.ts +109 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-cwd.test.ts +91 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-info-modified-timestamp.test.ts +83 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/build-context.test.ts +268 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/custom-session-id.test.ts +109 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/file-operations.test.ts +208 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/labels.test.ts +198 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/migration.test.ts +78 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/save-entry.test.ts +55 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-manager/tree-traversal.test.ts +533 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-selector-path-delete.test.ts +315 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-selector-rename.test.ts +111 -0
- package/pi.dev-src/pi-mono/coding-agent/test/session-selector-search.test.ts +195 -0
- package/pi.dev-src/pi-mono/coding-agent/test/settings-manager-bug.test.ts +147 -0
- package/pi.dev-src/pi-mono/coding-agent/test/settings-manager.test.ts +319 -0
- package/pi.dev-src/pi-mono/coding-agent/test/skills.test.ts +432 -0
- package/pi.dev-src/pi-mono/coding-agent/test/stdout-cleanliness.test.ts +103 -0
- package/pi.dev-src/pi-mono/coding-agent/test/streaming-render-debug.ts +97 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-bash-persistence.test.ts +242 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-compaction.test.ts +343 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-model-extension.test.ts +325 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-prompt.test.ts +323 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-queue.test.ts +422 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-retry-events.test.ts +358 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/agent-session-runtime.test.ts +553 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/harness.ts +208 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2023-queued-slash-command-followup.test.ts +80 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2753-reload-stale-resource-settings.test.ts +100 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2781-skill-collision-precedence.test.ts +120 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts +106 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2835-tools-allowlist-filters-extension-tools.test.ts +94 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/2860-replaced-session-context.test.ts +274 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3217-scoped-model-order.test.ts +104 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts +72 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts +83 -0
- package/pi.dev-src/pi-mono/coding-agent/test/suite/regressions/3317-network-connection-lost-retry.test.ts +33 -0
- package/pi.dev-src/pi-mono/coding-agent/test/system-prompt.test.ts +102 -0
- package/pi.dev-src/pi-mono/coding-agent/test/test-harness.test.ts +321 -0
- package/pi.dev-src/pi-mono/coding-agent/test/test-harness.ts +446 -0
- package/pi.dev-src/pi-mono/coding-agent/test/test-theme-colors.ts +246 -0
- package/pi.dev-src/pi-mono/coding-agent/test/theme-export.test.ts +104 -0
- package/pi.dev-src/pi-mono/coding-agent/test/tool-execution-component.test.ts +331 -0
- package/pi.dev-src/pi-mono/coding-agent/test/tools.test.ts +889 -0
- package/pi.dev-src/pi-mono/coding-agent/test/tree-selector.test.ts +655 -0
- package/pi.dev-src/pi-mono/coding-agent/test/trigger-compact-extension.test.ts +57 -0
- package/pi.dev-src/pi-mono/coding-agent/test/truncate-to-width.test.ts +81 -0
- package/pi.dev-src/pi-mono/coding-agent/test/user-message.test.ts +25 -0
- package/pi.dev-src/pi-mono/coding-agent/test/utilities.ts +316 -0
- package/pi.dev-src/pi-mono/coding-agent/tsconfig.examples.json +16 -0
- package/pi.dev-src/pi-mono/coding-agent/vitest.config.ts +26 -0
- package/pi.dev-src/pi-mono/mom/dev.sh +30 -0
- package/pi.dev-src/pi-mono/mom/docker.sh +95 -0
- package/pi.dev-src/pi-mono/mom/scripts/migrate-timestamps.ts +121 -0
- package/pi.dev-src/pi-mono/mom/src/agent.ts +882 -0
- package/pi.dev-src/pi-mono/mom/src/context.ts +180 -0
- package/pi.dev-src/pi-mono/mom/src/download.ts +117 -0
- package/pi.dev-src/pi-mono/mom/src/events.ts +442 -0
- package/pi.dev-src/pi-mono/mom/src/fs-watch.ts +30 -0
- package/pi.dev-src/pi-mono/mom/src/log.ts +271 -0
- package/pi.dev-src/pi-mono/mom/src/main.ts +367 -0
- package/pi.dev-src/pi-mono/mom/src/sandbox.ts +221 -0
- package/pi.dev-src/pi-mono/mom/src/slack.ts +623 -0
- package/pi.dev-src/pi-mono/mom/src/store.ts +234 -0
- package/pi.dev-src/pi-mono/mom/src/tools/attach.ts +47 -0
- package/pi.dev-src/pi-mono/mom/src/tools/bash.ts +97 -0
- package/pi.dev-src/pi-mono/mom/src/tools/edit.ts +165 -0
- package/pi.dev-src/pi-mono/mom/src/tools/index.ts +19 -0
- package/pi.dev-src/pi-mono/mom/src/tools/read.ts +159 -0
- package/pi.dev-src/pi-mono/mom/src/tools/truncate.ts +236 -0
- package/pi.dev-src/pi-mono/mom/src/tools/write.ts +45 -0
- package/pi.dev-src/pi-mono/mom/test/events.test.ts +50 -0
- package/pi.dev-src/pi-mono/pods/scripts/model_run.sh +83 -0
- package/pi.dev-src/pi-mono/pods/scripts/pod_setup.sh +336 -0
- package/pi.dev-src/pi-mono/pods/src/cli.ts +360 -0
- package/pi.dev-src/pi-mono/pods/src/commands/models.ts +753 -0
- package/pi.dev-src/pi-mono/pods/src/commands/pods.ts +205 -0
- package/pi.dev-src/pi-mono/pods/src/commands/prompt.ts +84 -0
- package/pi.dev-src/pi-mono/pods/src/config.ts +80 -0
- package/pi.dev-src/pi-mono/pods/src/index.ts +2 -0
- package/pi.dev-src/pi-mono/pods/src/model-configs.ts +111 -0
- package/pi.dev-src/pi-mono/pods/src/models.json +295 -0
- package/pi.dev-src/pi-mono/pods/src/ssh.ts +151 -0
- package/pi.dev-src/pi-mono/pods/src/types.ts +27 -0
- package/pi.dev-src/pi-mono/tui/src/autocomplete.ts +783 -0
- package/pi.dev-src/pi-mono/tui/src/components/box.ts +137 -0
- package/pi.dev-src/pi-mono/tui/src/components/cancellable-loader.ts +40 -0
- package/pi.dev-src/pi-mono/tui/src/components/editor.ts +2280 -0
- package/pi.dev-src/pi-mono/tui/src/components/image.ts +104 -0
- package/pi.dev-src/pi-mono/tui/src/components/input.ts +503 -0
- package/pi.dev-src/pi-mono/tui/src/components/loader.ts +86 -0
- package/pi.dev-src/pi-mono/tui/src/components/markdown.ts +852 -0
- package/pi.dev-src/pi-mono/tui/src/components/select-list.ts +229 -0
- package/pi.dev-src/pi-mono/tui/src/components/settings-list.ts +250 -0
- package/pi.dev-src/pi-mono/tui/src/components/spacer.ts +28 -0
- package/pi.dev-src/pi-mono/tui/src/components/text.ts +106 -0
- package/pi.dev-src/pi-mono/tui/src/components/truncated-text.ts +65 -0
- package/pi.dev-src/pi-mono/tui/src/editor-component.ts +74 -0
- package/pi.dev-src/pi-mono/tui/src/fuzzy.ts +133 -0
- package/pi.dev-src/pi-mono/tui/src/index.ts +106 -0
- package/pi.dev-src/pi-mono/tui/src/keybindings.ts +244 -0
- package/pi.dev-src/pi-mono/tui/src/keys.ts +1400 -0
- package/pi.dev-src/pi-mono/tui/src/kill-ring.ts +46 -0
- package/pi.dev-src/pi-mono/tui/src/stdin-buffer.ts +386 -0
- package/pi.dev-src/pi-mono/tui/src/terminal-image.ts +414 -0
- package/pi.dev-src/pi-mono/tui/src/terminal.ts +373 -0
- package/pi.dev-src/pi-mono/tui/src/tui.ts +1243 -0
- package/pi.dev-src/pi-mono/tui/src/undo-stack.ts +28 -0
- package/pi.dev-src/pi-mono/tui/src/utils.ts +1085 -0
- package/pi.dev-src/pi-mono/tui/test/autocomplete.test.ts +542 -0
- package/pi.dev-src/pi-mono/tui/test/bug-regression-isimageline-startswith-bug.test.ts +237 -0
- package/pi.dev-src/pi-mono/tui/test/chat-simple.ts +129 -0
- package/pi.dev-src/pi-mono/tui/test/editor.test.ts +3812 -0
- package/pi.dev-src/pi-mono/tui/test/fuzzy.test.ts +98 -0
- package/pi.dev-src/pi-mono/tui/test/image-test.ts +56 -0
- package/pi.dev-src/pi-mono/tui/test/input.test.ts +580 -0
- package/pi.dev-src/pi-mono/tui/test/key-tester.ts +105 -0
- package/pi.dev-src/pi-mono/tui/test/keybindings.test.ts +38 -0
- package/pi.dev-src/pi-mono/tui/test/keys.test.ts +614 -0
- package/pi.dev-src/pi-mono/tui/test/markdown.test.ts +1236 -0
- package/pi.dev-src/pi-mono/tui/test/overlay-non-capturing.test.ts +609 -0
- package/pi.dev-src/pi-mono/tui/test/overlay-options.test.ts +538 -0
- package/pi.dev-src/pi-mono/tui/test/overlay-short-content.test.ts +56 -0
- package/pi.dev-src/pi-mono/tui/test/regression-regional-indicator-width.test.ts +52 -0
- package/pi.dev-src/pi-mono/tui/test/select-list.test.ts +116 -0
- package/pi.dev-src/pi-mono/tui/test/stdin-buffer.test.ts +422 -0
- package/pi.dev-src/pi-mono/tui/test/terminal-image.test.ts +279 -0
- package/pi.dev-src/pi-mono/tui/test/test-themes.ts +38 -0
- package/pi.dev-src/pi-mono/tui/test/truncate-to-width.test.ts +62 -0
- package/pi.dev-src/pi-mono/tui/test/truncated-text.test.ts +129 -0
- package/pi.dev-src/pi-mono/tui/test/tui-cell-size-input.test.ts +81 -0
- package/pi.dev-src/pi-mono/tui/test/tui-overlay-style-leak.test.ts +72 -0
- package/pi.dev-src/pi-mono/tui/test/tui-render.test.ts +509 -0
- package/pi.dev-src/pi-mono/tui/test/viewport-overwrite-repro.ts +106 -0
- package/pi.dev-src/pi-mono/tui/test/virtual-terminal.ts +218 -0
- package/pi.dev-src/pi-mono/tui/test/wrap-ansi.test.ts +207 -0
- package/pi.dev-src/pi-mono/tui/vitest.config.ts +7 -0
- package/pi.dev-src/pi-mono/web-ui/example/index.html +13 -0
- package/pi.dev-src/pi-mono/web-ui/example/src/app.css +1 -0
- package/pi.dev-src/pi-mono/web-ui/example/src/custom-messages.ts +99 -0
- package/pi.dev-src/pi-mono/web-ui/example/src/main.ts +421 -0
- package/pi.dev-src/pi-mono/web-ui/example/tsconfig.json +23 -0
- package/pi.dev-src/pi-mono/web-ui/example/vite.config.ts +6 -0
- package/pi.dev-src/pi-mono/web-ui/scripts/count-prompt-tokens.ts +88 -0
- package/pi.dev-src/pi-mono/web-ui/src/ChatPanel.ts +209 -0
- package/pi.dev-src/pi-mono/web-ui/src/app.css +68 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/AgentInterface.ts +403 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/AttachmentTile.ts +107 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/ConsoleBlock.ts +72 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/CustomProviderCard.ts +100 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/ExpandableSection.ts +46 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/Input.ts +113 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/MessageEditor.ts +405 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/MessageList.ts +98 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/Messages.ts +383 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/ProviderKeyInput.ts +153 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/SandboxedIframe.ts +626 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/StreamingMessageContainer.ts +103 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/ThinkingBlock.ts +43 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/message-renderer-registry.ts +28 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/ArtifactsRuntimeProvider.ts +220 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/AttachmentsRuntimeProvider.ts +66 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/ConsoleRuntimeProvider.ts +186 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/FileDownloadRuntimeProvider.ts +110 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/RuntimeMessageBridge.ts +82 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/RuntimeMessageRouter.ts +216 -0
- package/pi.dev-src/pi-mono/web-ui/src/components/sandbox/SandboxRuntimeProvider.ts +52 -0
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/ApiKeyPromptDialog.ts +75 -0
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/AttachmentOverlay.ts +636 -0
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/CustomProviderDialog.ts +274 -0
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/ModelSelector.ts +370 -0
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/PersistentStorageDialog.ts +144 -0
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/ProvidersModelsTab.ts +212 -0
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/SessionListDialog.ts +150 -0
- package/pi.dev-src/pi-mono/web-ui/src/dialogs/SettingsDialog.ts +218 -0
- package/pi.dev-src/pi-mono/web-ui/src/index.ts +120 -0
- package/pi.dev-src/pi-mono/web-ui/src/prompts/prompts.ts +282 -0
- package/pi.dev-src/pi-mono/web-ui/src/storage/app-storage.ts +60 -0
- package/pi.dev-src/pi-mono/web-ui/src/storage/backends/indexeddb-storage-backend.ts +193 -0
- package/pi.dev-src/pi-mono/web-ui/src/storage/store.ts +33 -0
- package/pi.dev-src/pi-mono/web-ui/src/storage/stores/custom-providers-store.ts +62 -0
- package/pi.dev-src/pi-mono/web-ui/src/storage/stores/provider-keys-store.ts +33 -0
- package/pi.dev-src/pi-mono/web-ui/src/storage/stores/sessions-store.ts +136 -0
- package/pi.dev-src/pi-mono/web-ui/src/storage/stores/settings-store.ts +34 -0
- package/pi.dev-src/pi-mono/web-ui/src/storage/types.ts +206 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ArtifactElement.ts +14 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ArtifactPill.ts +26 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/Console.ts +93 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/DocxArtifact.ts +213 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ExcelArtifact.ts +231 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/GenericArtifact.ts +117 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/HtmlArtifact.ts +195 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/ImageArtifact.ts +116 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/MarkdownArtifact.ts +82 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/PdfArtifact.ts +201 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/SvgArtifact.ts +119 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/TextArtifact.ts +148 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/artifacts-tool-renderer.ts +310 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/artifacts.ts +713 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/artifacts/index.ts +7 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/extract-document.ts +275 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/index.ts +46 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/javascript-repl.ts +293 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderer-registry.ts +130 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/BashRenderer.ts +52 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/CalculateRenderer.ts +58 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/DefaultRenderer.ts +103 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/renderers/GetCurrentTimeRenderer.ts +92 -0
- package/pi.dev-src/pi-mono/web-ui/src/tools/types.ts +15 -0
- package/pi.dev-src/pi-mono/web-ui/src/utils/attachment-utils.ts +472 -0
- package/pi.dev-src/pi-mono/web-ui/src/utils/auth-token.ts +22 -0
- package/pi.dev-src/pi-mono/web-ui/src/utils/format.ts +42 -0
- package/pi.dev-src/pi-mono/web-ui/src/utils/i18n.ts +653 -0
- package/pi.dev-src/pi-mono/web-ui/src/utils/model-discovery.ts +277 -0
- package/pi.dev-src/pi-mono/web-ui/src/utils/proxy-utils.ts +139 -0
- package/pi.dev-src/pi-mono/web-ui/src/utils/test-sessions.ts +2357 -0
- package/pi.dev-src/pi-mono/web-ui/tsconfig.json +7 -0
- package/scripts/lib/extension-debug-harness.ts +3 -10
- package/scripts/lib/recording-extension-api.ts +71 -2
- package/scripts/pi-usereq-debug.sh +1 -1
- package/scripts/tool-args-to-params.ts +4 -15
- package/src/cli.ts +24 -68
- package/src/core/agent-tool-json.ts +53 -239
- package/src/core/compress-payload.ts +4 -74
- package/src/core/compress.ts +26 -15
- package/src/core/config.ts +468 -42
- package/src/core/debug-runtime.ts +542 -0
- package/src/core/extension-status.ts +314 -59
- package/src/core/find-constructs.ts +3 -3
- package/src/core/find-payload.ts +26 -132
- package/src/core/path-context.ts +346 -81
- package/src/core/pi-notify.ts +115 -5
- package/src/core/pi-usereq-tools.ts +57 -19
- package/src/core/prompt-command-catalog.ts +46 -0
- package/src/core/prompt-command-runtime.ts +1816 -0
- package/src/core/prompt-command-state.ts +211 -0
- package/src/core/prompts.ts +173 -41
- package/src/core/reference-payload.ts +5 -63
- package/src/core/resources.ts +61 -5
- package/src/core/runtime-project-paths.ts +21 -1
- package/src/core/settings-menu.ts +12 -6
- package/src/core/source-analyzer.ts +27 -7
- package/src/core/token-counter.ts +6 -76
- package/src/core/tool-runner.ts +38 -317
- package/src/index.ts +2047 -947
- package/src/resources/instructions/git_commit.md +16 -0
- package/src/resources/instructions/git_read-only.md +2 -0
- package/src/resources/prompts/analyze.md +12 -13
- package/src/resources/prompts/change.md +21 -59
- package/src/resources/prompts/check.md +14 -16
- package/src/resources/prompts/cover.md +21 -59
- package/src/resources/prompts/create.md +5 -4
- package/src/resources/prompts/fix.md +20 -58
- package/src/resources/prompts/flowchart.md +14 -49
- package/src/resources/prompts/implement.md +14 -50
- package/src/resources/prompts/new.md +20 -58
- package/src/resources/prompts/readme.md +14 -50
- package/src/resources/prompts/recreate.md +14 -45
- package/src/resources/prompts/refactor.md +20 -58
- package/src/resources/prompts/references.md +7 -43
- package/src/resources/prompts/renumber.md +8 -39
- package/src/resources/prompts/workflow.md +14 -50
- package/src/resources/prompts/write.md +5 -4
- package/tests/attended-results-scenarios.ts +30 -136
- package/tests/cli-command-option-parity.test.ts +148 -192
- package/tests/debug-extension-harness.test.ts +77 -70
- package/tests/extension-registration.test.ts +3205 -658
- package/tests/fixtures_attended_results/project/compress-line-numbers.json +1 -1
- package/tests/fixtures_attended_results/project/compress.json +1 -1
- package/tests/fixtures_attended_results/project/find-line-numbers.json +1 -1
- package/tests/fixtures_attended_results/project/find.json +1 -1
- package/tests/fixtures_attended_results/project/references.json +2 -2
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-find/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_c.c.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_cpp.cpp.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_csharp.cs.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_elixir.ex.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_haskell.hs.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_java.java.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_javascript.js.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_kotlin.kt.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_lua.lua.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_perl.pl.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_php.php.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_python.py.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_ruby.rb.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_rust.rs.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_scala.scala.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_shell.sh.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_swift.swift.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_typescript.ts.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_zig.zig.json +1 -1
- package/tests/helpers.ts +24 -15
- package/tests/oracle-project.test.ts +29 -30
- package/tests/oracle-standalone.test.ts +27 -1
- package/tests/prompt-rendering.test.ts +40 -9
- package/tests/python_oracle_stubs/tiktoken.py +76 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"code": 0,
|
|
3
|
-
"stdout": "{\n \"request\": {\n \"tool_name\": \"files-references\",\n \"scope\": \"explicit-files\",\n \"base_dir_path\": \"<ROOT>\",\n \"source_directory_count\": 0,\n \"source_directory_paths\": [],\n \"requested_file_count\": 1,\n \"requested_input_paths\": [\n \"tests/fixtures/fixture_java.java\"\n ],\n \"requested_canonical_paths\": [\n \"tests/fixtures/fixture_java.java\"\n ]\n },\n \"summary\": {\n \"processable_file_count\": 1,\n \"analyzed_file_count\": 1,\n \"error_file_count\": 0,\n \"skipped_file_count\": 0,\n \"total_symbol_count\": 55,\n \"total_import_count\": 7,\n \"total_comment_count\": 66,\n \"total_standalone_comment_count\": 26,\n \"total_doxygen_field_count\": 95,\n \"symbol_kind_counts\": {\n \"CLASS\": 7,\n \"CONSTANT\": 5,\n \"ENUM\": 5,\n \"FUNCTION\": 28,\n \"INTERFACE\": 5,\n \"MODULE\": 5\n }\n },\n \"repository\": {\n \"root_directory_path\": \"<ROOT>\",\n \"source_directory_paths\": [],\n \"file_count\": 1,\n \"file_canonical_paths\": [\n \"tests/fixtures/fixture_java.java\"\n ],\n \"directory_tree\": {\n \"node_name\": \".\",\n \"relative_path\": \".\",\n \"node_kind\": \"directory\",\n \"child_count\": 1,\n \"children\": [\n {\n \"node_name\": \"tests\",\n \"relative_path\": \"tests\",\n \"node_kind\": \"directory\",\n \"child_count\": 1,\n \"children\": [\n {\n \"node_name\": \"fixtures\",\n \"relative_path\": \"tests/fixtures\",\n \"node_kind\": \"directory\",\n \"child_count\": 1,\n \"children\": [\n {\n \"node_name\": \"fixture_java.java\",\n \"relative_path\": \"tests/fixtures/fixture_java.java\",\n \"node_kind\": \"file\",\n \"child_count\": 0,\n \"children\": []\n }\n ]\n }\n ]\n }\n ]\n }\n },\n \"files\": [\n {\n \"start_line_number\": 1,\n \"end_line_number\": 430,\n \"line_range\": [\n 1,\n 430\n ],\n \"request_index\": 0,\n \"input_path\": \"tests/fixtures/fixture_java.java\",\n \"canonical_path\": \"tests/fixtures/fixture_java.java\",\n \"absolute_path\": \"<ROOT>/tests/fixtures/fixture_java.java\",\n \"file_name\": \"fixture_java.java\",\n \"file_extension\": \".java\",\n \"language_id\": \"java\",\n \"language_name\": \"Java\",\n \"status\": \"analyzed\",\n \"exists\": true,\n \"is_file\": true,\n \"import_count\": 7,\n \"symbol_count\": 55,\n \"comment_count\": 66,\n \"standalone_comment_count\": 26,\n \"doxygen_field_count\": 95,\n \"file_doxygen\": {\n \"brief\": [\n \"Comprehensive Java test fixture for parser validation.\"\n ],\n \"details\": [\n \"Covers generics with wildcards, sealed classes, records, inner classes,\\nanonymous classes, lambdas, method references, switch expressions,\\ntry-with-resources, annotations, and default interface methods.\"\n ]\n },\n \"imports\": [\n {\n \"start_line_number\": 13,\n \"end_line_number\": 13,\n \"line_range\": [\n 13,\n 13\n ],\n \"import_name\": \"java.util.List\",\n \"statement_text\": \"import java.util.List;\"\n },\n {\n \"start_line_number\": 14,\n \"end_line_number\": 14,\n \"line_range\": [\n 14,\n 14\n ],\n \"import_name\": \"java.util.Map\",\n \"statement_text\": \"import java.util.Map;\"\n },\n {\n \"start_line_number\": 15,\n \"end_line_number\": 15,\n \"line_range\": [\n 15,\n 15\n ],\n \"import_name\": \"java.util.Optional\",\n \"statement_text\": \"import java.util.Optional;\"\n },\n {\n \"start_line_number\": 16,\n \"end_line_number\": 16,\n \"line_range\": [\n 16,\n 16\n ],\n \"import_name\": \"java.util.function.Function\",\n \"statement_text\": \"import java.util.function.Function;\"\n },\n {\n \"start_line_number\": 17,\n \"end_line_number\": 17,\n \"line_range\": [\n 17,\n 17\n ],\n \"import_name\": \"java.util.function.Predicate\",\n \"statement_text\": \"import java.util.function.Predicate;\"\n },\n {\n \"start_line_number\": 18,\n \"end_line_number\": 18,\n \"line_range\": [\n 18,\n 18\n ],\n \"import_name\": \"java.util.stream.Collectors\",\n \"statement_text\": \"import java.util.stream.Collectors;\"\n },\n {\n \"start_line_number\": 19,\n \"end_line_number\": 19,\n \"line_range\": [\n 19,\n 19\n ],\n \"import_name\": \"java.lang.Math.PI\",\n \"statement_text\": \"import static java.lang.Math.PI;\"\n }\n ],\n \"symbols\": [\n {\n \"start_line_number\": 11,\n \"end_line_number\": 29,\n \"line_range\": [\n 11,\n 29\n ],\n \"declaration_order_index\": 0,\n \"symbol_name\": \"com.example.app\",\n \"qualified_name\": \"com.example.app\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package com.example.app\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Single line comment\",\n \"attached_comment_lines\": [\n \"Single line comment\",\n \"Multi-line\",\n \"comment\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 21,\n \"end_line_number\": 21,\n \"line_range\": [\n 21,\n 21\n ],\n \"text\": \"── Annotation ─────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Annotation ─────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 23,\n \"end_line_number\": 26,\n \"line_range\": [\n 23,\n 26\n ],\n \"text\": \"@brief Marks a method as requiring authentication before invocation. @param role The minimum role level required for access.\",\n \"text_lines\": [\n \"@brief Marks a method as requiring authentication before invocation. @param role The minimum role level required for access.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 28,\n \"end_line_number\": 39,\n \"line_range\": [\n 28,\n 39\n ],\n \"declaration_order_index\": 1,\n \"symbol_name\": \"role\",\n \"qualified_name\": \"role\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"String role() default \\\"user\\\"\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"decorator_text\": \"@interface RequiresAuth {\",\n \"attached_comment_summary_text\": \"@brief Marks a method as requiring authentication before invocation. @param role The minimum role level required for access.\",\n \"attached_comment_lines\": [\n \"@brief Marks a method as requiring authentication before invocation.\",\n \"@param role The minimum role level required for access.\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 31,\n \"end_line_number\": 31,\n \"line_range\": [\n 31,\n 31\n ],\n \"text\": \"── Main class ─────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Main class ─────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 33,\n \"end_line_number\": 37,\n \"line_range\": [\n 33,\n 37\n ],\n \"text\": \"@class MyClass @brief Primary class demonstrating various Java constructs. @param <T> Generic type parameter for flexible data handling.\",\n \"text_lines\": [\n \"@class MyClass @brief Primary class demonstrating various Java constructs. @param <T> Generic type parameter for flexible data handling.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 39,\n \"end_line_number\": 165,\n \"line_range\": [\n 39,\n 165\n ],\n \"declaration_order_index\": 2,\n \"symbol_name\": \"MyClass\",\n \"qualified_name\": \"MyClass\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"public class MyClass<T extends Comparable<T>>\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [\n \"MAX_SIZE\",\n \"greet\",\n \"helper\",\n \"findFirst\",\n \"map\",\n \"sumWildcard\"\n ],\n \"child_qualified_names\": [\n \"MyClass.MAX_SIZE\",\n \"MyClass.greet\",\n \"MyClass.helper\",\n \"MyClass.findFirst\",\n \"MyClass.map\",\n \"MyClass.sumWildcard\"\n ],\n \"depth\": 0,\n \"inherits_text\": \"Comparable<T>>\",\n \"decorator_text\": \"@SuppressWarnings(\\\"unchecked\\\")\",\n \"attached_comment_summary_text\": \"Maximum buffer size constant.\",\n \"doxygen\": {\n \"brief\": [\n \"Maximum buffer size constant.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 41,\n \"end_line_number\": 41,\n \"line_range\": [\n 41,\n 41\n ],\n \"text\": \"@brief Maximum buffer size constant.\",\n \"text_lines\": [\n \"@brief Maximum buffer size constant.\"\n ]\n },\n {\n \"start_line_number\": 44,\n \"end_line_number\": 44,\n \"line_range\": [\n 44,\n 44\n ],\n \"text\": \"@brief Type-safe internal storage for items.\",\n \"text_lines\": [\n \"@brief Type-safe internal storage for items.\"\n ]\n },\n {\n \"start_line_number\": 47,\n \"end_line_number\": 50,\n \"line_range\": [\n 47,\n 50\n ],\n \"text\": \"@brief Construct MyClass with an initial item list. @param items The starting collection of items.\",\n \"text_lines\": [\n \"@brief Construct MyClass with an initial item list. @param items The starting collection of items.\"\n ]\n },\n {\n \"start_line_number\": 55,\n \"end_line_number\": 58,\n \"line_range\": [\n 55,\n 58\n ],\n \"text\": \"@brief Greet a person by name on standard output. @param name The person's name; must not be null.\",\n \"text_lines\": [\n \"@brief Greet a person by name on standard output. @param name The person's name; must not be null.\"\n ]\n },\n {\n \"start_line_number\": 60,\n \"end_line_number\": 60,\n \"line_range\": [\n 60,\n 60\n ],\n \"text\": \"Null check before output\",\n \"text_lines\": [\n \"Null check before output\"\n ]\n },\n {\n \"start_line_number\": 67,\n \"end_line_number\": 70,\n \"line_range\": [\n 67,\n 70\n ],\n \"text\": \"@brief Helper method returning a status string. @return Always returns \\\"ok\\\".\",\n \"text_lines\": [\n \"@brief Helper method returning a status string. @return Always returns \\\"ok\\\".\"\n ]\n },\n {\n \"start_line_number\": 75,\n \"end_line_number\": 79,\n \"line_range\": [\n 75,\n 79\n ],\n \"text\": \"@brief Find the first item matching a predicate. @param predicate Filter condition for items. @return Optional containing the first match, or empty.\",\n \"text_lines\": [\n \"@brief Find the first item matching a predicate. @param predicate Filter condition for items. @return Optional containing the first match, or empty.\"\n ]\n },\n {\n \"start_line_number\": 82,\n \"end_line_number\": 82,\n \"line_range\": [\n 82,\n 82\n ],\n \"text\": \"Test each item against predicate\",\n \"text_lines\": [\n \"Test each item against predicate\"\n ]\n },\n {\n \"start_line_number\": 90,\n \"end_line_number\": 95,\n \"line_range\": [\n 90,\n 95\n ],\n \"text\": \"@brief Transform all items using a mapping function. @param <R> The result type after transformation. @param mapper Function to apply to each item. @return List of transformed results.\",\n \"text_lines\": [\n \"@brief Transform all items using a mapping function. @param <R> The result type after transformation. @param mapper Function to apply to each item. @return List of transformed results.\"\n ]\n },\n {\n \"start_line_number\": 102,\n \"end_line_number\": 106,\n \"line_range\": [\n 102,\n 106\n ],\n \"text\": \"@brief Process items with a wildcard-bounded list. @param source List of items extending Number. @return Sum of all numeric values as double.\",\n \"text_lines\": [\n \"@brief Process items with a wildcard-bounded list. @param source List of items extending Number. @return Sum of all numeric values as double.\"\n ]\n },\n {\n \"start_line_number\": 115,\n \"end_line_number\": 115,\n \"line_range\": [\n 115,\n 115\n ],\n \"text\": \"── Inner class ────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Inner class ────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 117,\n \"end_line_number\": 120,\n \"line_range\": [\n 117,\n 120\n ],\n \"text\": \"@class Builder @brief Inner builder class for constructing MyClass instances.\",\n \"text_lines\": [\n \"@class Builder @brief Inner builder class for constructing MyClass instances.\"\n ]\n },\n {\n \"start_line_number\": 124,\n \"end_line_number\": 128,\n \"line_range\": [\n 124,\n 128\n ],\n \"text\": \"@brief Add an item to the builder. @param item Item to include in the built instance. @return This builder for chaining.\",\n \"text_lines\": [\n \"@brief Add an item to the builder. @param item Item to include in the built instance. @return This builder for chaining.\"\n ]\n },\n {\n \"start_line_number\": 134,\n \"end_line_number\": 137,\n \"line_range\": [\n 134,\n 137\n ],\n \"text\": \"@brief Finalize and create the MyClass instance. @return A new MyClass populated with accumulated items.\",\n \"text_lines\": [\n \"@brief Finalize and create the MyClass instance. @return A new MyClass populated with accumulated items.\"\n ]\n },\n {\n \"start_line_number\": 143,\n \"end_line_number\": 143,\n \"line_range\": [\n 143,\n 143\n ],\n \"text\": \"── Static nested class ────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Static nested class ────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 145,\n \"end_line_number\": 148,\n \"line_range\": [\n 145,\n 148\n ],\n \"text\": \"@class Config @brief Static configuration holder with validation.\",\n \"text_lines\": [\n \"@class Config @brief Static configuration holder with validation.\"\n ]\n },\n {\n \"start_line_number\": 150,\n \"end_line_number\": 150,\n \"line_range\": [\n 150,\n 150\n ],\n \"text\": \"@brief Configuration key string.\",\n \"text_lines\": [\n \"@brief Configuration key string.\"\n ]\n },\n {\n \"start_line_number\": 152,\n \"end_line_number\": 152,\n \"line_range\": [\n 152,\n 152\n ],\n \"text\": \"@brief Configuration value.\",\n \"text_lines\": [\n \"@brief Configuration value.\"\n ]\n },\n {\n \"start_line_number\": 155,\n \"end_line_number\": 159,\n \"line_range\": [\n 155,\n 159\n ],\n \"text\": \"@brief Construct a Config entry. @param key The configuration key. @param value The associated value.\",\n \"text_lines\": [\n \"@brief Construct a Config entry. @param key The configuration key. @param value The associated value.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 62,\n \"text\": \"return;\"\n },\n {\n \"line_number\": 72,\n \"text\": \"return \\\"ok\\\";\"\n },\n {\n \"line_number\": 84,\n \"text\": \"return Optional.of(item);\"\n },\n {\n \"line_number\": 87,\n \"text\": \"return Optional.empty();\"\n },\n {\n \"line_number\": 97,\n \"text\": \"return items.stream()\"\n },\n {\n \"line_number\": 112,\n \"text\": \"return total;\"\n },\n {\n \"line_number\": 131,\n \"text\": \"return this;\"\n },\n {\n \"line_number\": 139,\n \"text\": \"return new MyClass<>(pending);\"\n }\n ]\n },\n {\n \"start_line_number\": 42,\n \"end_line_number\": 42,\n \"line_range\": [\n 42,\n 42\n ],\n \"declaration_order_index\": 3,\n \"symbol_name\": \"MAX_SIZE\",\n \"qualified_name\": \"MyClass.MAX_SIZE\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"public static final int MAX_SIZE = 100\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"MyClass\",\n \"parent_qualified_name\": \"MyClass\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Maximum buffer size constant. */\",\n \"doxygen\": {\n \"brief\": [\n \"Maximum buffer size constant. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 51,\n \"end_line_number\": 53,\n \"line_range\": [\n 51,\n 53\n ],\n \"declaration_order_index\": 4,\n \"symbol_name\": \"MyClass\",\n \"qualified_name\": \"MyClass\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public MyClass(List<T> items)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"MyClass\",\n \"child_symbol_names\": [\n \"MAX_SIZE\",\n \"greet\",\n \"helper\",\n \"findFirst\",\n \"map\",\n \"sumWildcard\"\n ],\n \"child_qualified_names\": [\n \"MyClass.MAX_SIZE\",\n \"MyClass.greet\",\n \"MyClass.helper\",\n \"MyClass.findFirst\",\n \"MyClass.map\",\n \"MyClass.sumWildcard\"\n ],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Construct MyClass with an initial item list.\",\n \"doxygen\": {\n \"brief\": [\n \"Construct MyClass with an initial item list.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"items\",\n \"description\": \"The starting collection of items.\"\n }\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 59,\n \"end_line_number\": 65,\n \"line_range\": [\n 59,\n 65\n ],\n \"declaration_order_index\": 5,\n \"symbol_name\": \"greet\",\n \"qualified_name\": \"MyClass.greet\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public void greet(String name)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"MyClass\",\n \"parent_qualified_name\": \"MyClass\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Greet a person by name on standard output.\",\n \"doxygen\": {\n \"brief\": [\n \"Greet a person by name on standard output.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"name\",\n \"description\": \"The person's name; must not be null.\"\n }\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 60,\n \"end_line_number\": 60,\n \"line_range\": [\n 60,\n 60\n ],\n \"text\": \"Null check before output\",\n \"text_lines\": [\n \"Null check before output\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 62,\n \"text\": \"return;\"\n }\n ]\n },\n {\n \"start_line_number\": 71,\n \"end_line_number\": 73,\n \"line_range\": [\n 71,\n 73\n ],\n \"declaration_order_index\": 6,\n \"symbol_name\": \"helper\",\n \"qualified_name\": \"MyClass.helper\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"private static String helper()\",\n \"visibility\": \"priv\",\n \"parent_symbol_name\": \"MyClass\",\n \"parent_qualified_name\": \"MyClass\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Helper method returning a status string.\",\n \"doxygen\": {\n \"brief\": [\n \"Helper method returning a status string.\"\n ],\n \"returns\": [\n \"Always returns \\\"ok\\\".\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 72,\n \"text\": \"return \\\"ok\\\";\"\n }\n ]\n },\n {\n \"start_line_number\": 80,\n \"end_line_number\": 88,\n \"line_range\": [\n 80,\n 88\n ],\n \"declaration_order_index\": 7,\n \"symbol_name\": \"findFirst\",\n \"qualified_name\": \"MyClass.findFirst\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public Optional<T> findFirst(Predicate<T> predicate)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"MyClass\",\n \"parent_qualified_name\": \"MyClass\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Find the first item matching a predicate.\",\n \"doxygen\": {\n \"brief\": [\n \"Find the first item matching a predicate.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"predicate\",\n \"description\": \"Filter condition for items.\"\n }\n ],\n \"returns\": [\n \"Optional containing the first match, or empty.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 82,\n \"end_line_number\": 82,\n \"line_range\": [\n 82,\n 82\n ],\n \"text\": \"Test each item against predicate\",\n \"text_lines\": [\n \"Test each item against predicate\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 84,\n \"text\": \"return Optional.of(item);\"\n },\n {\n \"line_number\": 87,\n \"text\": \"return Optional.empty();\"\n }\n ]\n },\n {\n \"start_line_number\": 96,\n \"end_line_number\": 100,\n \"line_range\": [\n 96,\n 100\n ],\n \"declaration_order_index\": 8,\n \"symbol_name\": \"map\",\n \"qualified_name\": \"MyClass.map\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public <R> List<R> map(Function<T, R> mapper)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"MyClass\",\n \"parent_qualified_name\": \"MyClass\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Transform all items using a mapping function.\",\n \"doxygen\": {\n \"brief\": [\n \"Transform all items using a mapping function.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"<R>\",\n \"description\": \"The result type after transformation.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"mapper\",\n \"description\": \"Function to apply to each item.\"\n }\n ],\n \"returns\": [\n \"List of transformed results.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 97,\n \"text\": \"return items.stream()\"\n }\n ]\n },\n {\n \"start_line_number\": 107,\n \"end_line_number\": 113,\n \"line_range\": [\n 107,\n 113\n ],\n \"declaration_order_index\": 9,\n \"symbol_name\": \"sumWildcard\",\n \"qualified_name\": \"MyClass.sumWildcard\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public double sumWildcard(List<? extends Number> source)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"MyClass\",\n \"parent_qualified_name\": \"MyClass\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Process items with a wildcard-bounded list.\",\n \"doxygen\": {\n \"brief\": [\n \"Process items with a wildcard-bounded list.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"source\",\n \"description\": \"List of items extending Number.\"\n }\n ],\n \"returns\": [\n \"Sum of all numeric values as double.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 112,\n \"text\": \"return total;\"\n }\n ]\n },\n {\n \"start_line_number\": 121,\n \"end_line_number\": 141,\n \"line_range\": [\n 121,\n 141\n ],\n \"declaration_order_index\": 10,\n \"symbol_name\": \"Builder\",\n \"qualified_name\": \"Builder\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"public class Builder\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [\n \"add\",\n \"build\"\n ],\n \"child_qualified_names\": [\n \"Builder.add\",\n \"Builder.build\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Inner builder class for constructing MyClass instances.\",\n \"doxygen\": {\n \"brief\": [\n \"Inner builder class for constructing MyClass instances.\",\n \"Add an item to the builder.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"item\",\n \"description\": \"Item to include in the built instance.\"\n }\n ],\n \"returns\": [\n \"This builder for chaining.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 124,\n \"end_line_number\": 128,\n \"line_range\": [\n 124,\n 128\n ],\n \"text\": \"@brief Add an item to the builder. @param item Item to include in the built instance. @return This builder for chaining.\",\n \"text_lines\": [\n \"@brief Add an item to the builder. @param item Item to include in the built instance. @return This builder for chaining.\"\n ]\n },\n {\n \"start_line_number\": 134,\n \"end_line_number\": 137,\n \"line_range\": [\n 134,\n 137\n ],\n \"text\": \"@brief Finalize and create the MyClass instance. @return A new MyClass populated with accumulated items.\",\n \"text_lines\": [\n \"@brief Finalize and create the MyClass instance. @return A new MyClass populated with accumulated items.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 131,\n \"text\": \"return this;\"\n },\n {\n \"line_number\": 139,\n \"text\": \"return new MyClass<>(pending);\"\n }\n ]\n },\n {\n \"start_line_number\": 129,\n \"end_line_number\": 132,\n \"line_range\": [\n 129,\n 132\n ],\n \"declaration_order_index\": 11,\n \"symbol_name\": \"add\",\n \"qualified_name\": \"Builder.add\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public Builder add(T item)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Builder\",\n \"parent_qualified_name\": \"Builder\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Add an item to the builder.\",\n \"doxygen\": {\n \"brief\": [\n \"Add an item to the builder.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"item\",\n \"description\": \"Item to include in the built instance.\"\n }\n ],\n \"returns\": [\n \"This builder for chaining.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 131,\n \"text\": \"return this;\"\n }\n ]\n },\n {\n \"start_line_number\": 138,\n \"end_line_number\": 140,\n \"line_range\": [\n 138,\n 140\n ],\n \"declaration_order_index\": 12,\n \"symbol_name\": \"build\",\n \"qualified_name\": \"Builder.build\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public MyClass<T> build()\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Builder\",\n \"parent_qualified_name\": \"Builder\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Finalize and create the MyClass instance.\",\n \"doxygen\": {\n \"brief\": [\n \"Finalize and create the MyClass instance.\"\n ],\n \"returns\": [\n \"A new MyClass populated with accumulated items.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 139,\n \"text\": \"return new MyClass<>(pending);\"\n }\n ]\n },\n {\n \"start_line_number\": 149,\n \"end_line_number\": 164,\n \"line_range\": [\n 149,\n 164\n ],\n \"declaration_order_index\": 13,\n \"symbol_name\": \"Config\",\n \"qualified_name\": \"Config\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"public static class Config\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Static configuration holder with validation.\",\n \"doxygen\": {\n \"brief\": [\n \"Static configuration holder with validation.\",\n \"Configuration key string.\",\n \"Configuration value.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 150,\n \"end_line_number\": 150,\n \"line_range\": [\n 150,\n 150\n ],\n \"text\": \"@brief Configuration key string.\",\n \"text_lines\": [\n \"@brief Configuration key string.\"\n ]\n },\n {\n \"start_line_number\": 152,\n \"end_line_number\": 152,\n \"line_range\": [\n 152,\n 152\n ],\n \"text\": \"@brief Configuration value.\",\n \"text_lines\": [\n \"@brief Configuration value.\"\n ]\n },\n {\n \"start_line_number\": 155,\n \"end_line_number\": 159,\n \"line_range\": [\n 155,\n 159\n ],\n \"text\": \"@brief Construct a Config entry. @param key The configuration key. @param value The associated value.\",\n \"text_lines\": [\n \"@brief Construct a Config entry. @param key The configuration key. @param value The associated value.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 160,\n \"end_line_number\": 163,\n \"line_range\": [\n 160,\n 163\n ],\n \"declaration_order_index\": 14,\n \"symbol_name\": \"Config\",\n \"qualified_name\": \"Config\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public Config(String key, Object value)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Config\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Construct a Config entry.\",\n \"doxygen\": {\n \"brief\": [\n \"Construct a Config entry.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"key\",\n \"description\": \"The configuration key.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"The associated value.\"\n }\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 173,\n \"end_line_number\": 196,\n \"line_range\": [\n 173,\n 196\n ],\n \"declaration_order_index\": 15,\n \"symbol_name\": \"Greeter\",\n \"qualified_name\": \"Greeter\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"public interface Greeter\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [\n \"sayHello\",\n \"simple\"\n ],\n \"child_qualified_names\": [\n \"Greeter.sayHello\",\n \"Greeter.simple\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Functional interface for greeting operations.\",\n \"doxygen\": {\n \"brief\": [\n \"Functional interface for greeting operations.\",\n \"Perform a greeting to the named person.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"name\",\n \"description\": \"Recipient of the greeting.\"\n }\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 174,\n \"end_line_number\": 177,\n \"line_range\": [\n 174,\n 177\n ],\n \"text\": \"@brief Perform a greeting to the named person. @param name Recipient of the greeting.\",\n \"text_lines\": [\n \"@brief Perform a greeting to the named person. @param name Recipient of the greeting.\"\n ]\n },\n {\n \"start_line_number\": 180,\n \"end_line_number\": 183,\n \"line_range\": [\n 180,\n 183\n ],\n \"text\": \"@brief Default farewell method with implementation. @param name Person to bid farewell.\",\n \"text_lines\": [\n \"@brief Default farewell method with implementation. @param name Person to bid farewell.\"\n ]\n },\n {\n \"start_line_number\": 188,\n \"end_line_number\": 191,\n \"line_range\": [\n 188,\n 191\n ],\n \"text\": \"@brief Static factory creating a simple Greeter. @return A Greeter that prints to stdout.\",\n \"text_lines\": [\n \"@brief Static factory creating a simple Greeter. @return A Greeter that prints to stdout.\"\n ]\n },\n {\n \"start_line_number\": 193,\n \"end_line_number\": 193,\n \"line_range\": [\n 193,\n 193\n ],\n \"text\": \"Lambda implementing the functional interface\",\n \"text_lines\": [\n \"Lambda implementing the functional interface\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 194,\n \"text\": \"return name -> System.out.println(\\\"Hi, \\\" + name);\"\n }\n ]\n },\n {\n \"start_line_number\": 178,\n \"end_line_number\": 186,\n \"line_range\": [\n 178,\n 186\n ],\n \"declaration_order_index\": 16,\n \"symbol_name\": \"sayHello\",\n \"qualified_name\": \"Greeter.sayHello\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"void sayHello(String name)\",\n \"parent_symbol_name\": \"Greeter\",\n \"parent_qualified_name\": \"Greeter\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Perform a greeting to the named person.\",\n \"doxygen\": {\n \"brief\": [\n \"Perform a greeting to the named person.\",\n \"Default farewell method with implementation.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"name\",\n \"description\": \"Recipient of the greeting.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"name\",\n \"description\": \"Person to bid farewell.\"\n }\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 180,\n \"end_line_number\": 183,\n \"line_range\": [\n 180,\n 183\n ],\n \"text\": \"@brief Default farewell method with implementation. @param name Person to bid farewell.\",\n \"text_lines\": [\n \"@brief Default farewell method with implementation. @param name Person to bid farewell.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 192,\n \"end_line_number\": 195,\n \"line_range\": [\n 192,\n 195\n ],\n \"declaration_order_index\": 17,\n \"symbol_name\": \"simple\",\n \"qualified_name\": \"Greeter.simple\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static Greeter simple()\",\n \"parent_symbol_name\": \"Greeter\",\n \"parent_qualified_name\": \"Greeter\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Static factory creating a simple Greeter.\",\n \"doxygen\": {\n \"brief\": [\n \"Static factory creating a simple Greeter.\"\n ],\n \"returns\": [\n \"A Greeter that prints to stdout.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 193,\n \"end_line_number\": 193,\n \"line_range\": [\n 193,\n 193\n ],\n \"text\": \"Lambda implementing the functional interface\",\n \"text_lines\": [\n \"Lambda implementing the functional interface\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 194,\n \"text\": \"return name -> System.out.println(\\\"Hi, \\\" + name);\"\n }\n ]\n },\n {\n \"start_line_number\": 204,\n \"end_line_number\": 230,\n \"line_range\": [\n 204,\n 230\n ],\n \"declaration_order_index\": 18,\n \"symbol_name\": \"Color\",\n \"qualified_name\": \"Color\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"public enum Color\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [\n \"getHex\"\n ],\n \"child_qualified_names\": [\n \"Color.getHex\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Color enum with associated hex values and behavior.\",\n \"doxygen\": {\n \"brief\": [\n \"Color enum with associated hex values and behavior.\",\n \"Red color with hex #FF0000.\",\n \"Green color with hex #00FF00.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 205,\n \"end_line_number\": 205,\n \"line_range\": [\n 205,\n 205\n ],\n \"text\": \"@brief Red color with hex #FF0000.\",\n \"text_lines\": [\n \"@brief Red color with hex #FF0000.\"\n ]\n },\n {\n \"start_line_number\": 207,\n \"end_line_number\": 207,\n \"line_range\": [\n 207,\n 207\n ],\n \"text\": \"@brief Green color with hex #00FF00.\",\n \"text_lines\": [\n \"@brief Green color with hex #00FF00.\"\n ]\n },\n {\n \"start_line_number\": 209,\n \"end_line_number\": 209,\n \"line_range\": [\n 209,\n 209\n ],\n \"text\": \"@brief Blue color with hex #0000FF.\",\n \"text_lines\": [\n \"@brief Blue color with hex #0000FF.\"\n ]\n },\n {\n \"start_line_number\": 212,\n \"end_line_number\": 212,\n \"line_range\": [\n 212,\n 212\n ],\n \"text\": \"@brief The hexadecimal color code.\",\n \"text_lines\": [\n \"@brief The hexadecimal color code.\"\n ]\n },\n {\n \"start_line_number\": 215,\n \"end_line_number\": 218,\n \"line_range\": [\n 215,\n 218\n ],\n \"text\": \"@brief Private constructor for enum constants. @param hex The hex string for this color.\",\n \"text_lines\": [\n \"@brief Private constructor for enum constants. @param hex The hex string for this color.\"\n ]\n },\n {\n \"start_line_number\": 223,\n \"end_line_number\": 226,\n \"line_range\": [\n 223,\n 226\n ],\n \"text\": \"@brief Get the hex code of this color. @return Hex string including '#' prefix.\",\n \"text_lines\": [\n \"@brief Get the hex code of this color. @return Hex string including '#' prefix.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 228,\n \"text\": \"return hex;\"\n }\n ]\n },\n {\n \"start_line_number\": 227,\n \"end_line_number\": 229,\n \"line_range\": [\n 227,\n 229\n ],\n \"declaration_order_index\": 19,\n \"symbol_name\": \"getHex\",\n \"qualified_name\": \"Color.getHex\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public String getHex()\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Color\",\n \"parent_qualified_name\": \"Color\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Get the hex code of this color.\",\n \"doxygen\": {\n \"brief\": [\n \"Get the hex code of this color.\"\n ],\n \"returns\": [\n \"Hex string including '#' prefix.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 228,\n \"text\": \"return hex;\"\n }\n ]\n },\n {\n \"start_line_number\": 240,\n \"end_line_number\": 261,\n \"line_range\": [\n 240,\n 261\n ],\n \"declaration_order_index\": 20,\n \"symbol_name\": \"Point\",\n \"qualified_name\": \"Point\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public record Point(double x, double y)\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Immutable 2D coordinate record.\",\n \"doxygen\": {\n \"brief\": [\n \"Immutable 2D coordinate record.\",\n \"Compact constructor validating coordinates.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"x\",\n \"description\": \"Horizontal coordinate.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"y\",\n \"description\": \"Vertical coordinate.\"\n }\n ],\n \"throws\": [\n \"IllegalArgumentException If either coordinate is NaN.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 241,\n \"end_line_number\": 244,\n \"line_range\": [\n 241,\n 244\n ],\n \"text\": \"@brief Compact constructor validating coordinates. @throws IllegalArgumentException If either coordinate is NaN.\",\n \"text_lines\": [\n \"@brief Compact constructor validating coordinates. @throws IllegalArgumentException If either coordinate is NaN.\"\n ]\n },\n {\n \"start_line_number\": 251,\n \"end_line_number\": 255,\n \"line_range\": [\n 251,\n 255\n ],\n \"text\": \"@brief Compute distance to another point. @param other Target point. @return Euclidean distance.\",\n \"text_lines\": [\n \"@brief Compute distance to another point. @param other Target point. @return Euclidean distance.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 247,\n \"text\": \"throw new IllegalArgumentException(\\\"NaN coordinates\\\");\"\n },\n {\n \"line_number\": 259,\n \"text\": \"return Math.sqrt(dx * dx + dy * dy);\"\n }\n ]\n },\n {\n \"start_line_number\": 256,\n \"end_line_number\": 260,\n \"line_range\": [\n 256,\n 260\n ],\n \"declaration_order_index\": 21,\n \"symbol_name\": \"distanceTo\",\n \"qualified_name\": \"distanceTo\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public double distanceTo(Point other)\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Compute distance to another point.\",\n \"doxygen\": {\n \"brief\": [\n \"Compute distance to another point.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"other\",\n \"description\": \"Target point.\"\n }\n ],\n \"returns\": [\n \"Euclidean distance.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 259,\n \"text\": \"return Math.sqrt(dx * dx + dy * dy);\"\n }\n ]\n },\n {\n \"start_line_number\": 274,\n \"end_line_number\": 276,\n \"line_range\": [\n 274,\n 276\n ],\n \"declaration_order_index\": 22,\n \"symbol_name\": \"area\",\n \"qualified_name\": \"area\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public double area()\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Compute the area of this shape.\",\n \"doxygen\": {\n \"brief\": [\n \"Compute the area of this shape.\"\n ],\n \"returns\": [\n \"Area as a double; subclasses provide implementation.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 275,\n \"text\": \"return 0.0;\"\n }\n ]\n },\n {\n \"start_line_number\": 284,\n \"end_line_number\": 304,\n \"line_range\": [\n 284,\n 304\n ],\n \"declaration_order_index\": 23,\n \"symbol_name\": \"Circle\",\n \"qualified_name\": \"Circle\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"public final class Circle extends Shape\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [\n \"area\"\n ],\n \"child_qualified_names\": [\n \"Circle.area\"\n ],\n \"depth\": 0,\n \"inherits_text\": \"Shape\",\n \"attached_comment_summary_text\": \"Circle shape with radius-based area computation.\",\n \"doxygen\": {\n \"brief\": [\n \"Circle shape with radius-based area computation.\",\n \"Radius of the circle.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 285,\n \"end_line_number\": 285,\n \"line_range\": [\n 285,\n 285\n ],\n \"text\": \"@brief Radius of the circle.\",\n \"text_lines\": [\n \"@brief Radius of the circle.\"\n ]\n },\n {\n \"start_line_number\": 288,\n \"end_line_number\": 291,\n \"line_range\": [\n 288,\n 291\n ],\n \"text\": \"@brief Construct a circle with a given radius. @param radius Non-negative radius value.\",\n \"text_lines\": [\n \"@brief Construct a circle with a given radius. @param radius Non-negative radius value.\"\n ]\n },\n {\n \"start_line_number\": 296,\n \"end_line_number\": 299,\n \"line_range\": [\n 296,\n 299\n ],\n \"text\": \"@brief Compute circle area using π×r². @return The area of the circle.\",\n \"text_lines\": [\n \"@brief Compute circle area using π×r². @return The area of the circle.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 302,\n \"text\": \"return PI * radius * radius;\"\n }\n ]\n },\n {\n \"start_line_number\": 292,\n \"end_line_number\": 294,\n \"line_range\": [\n 292,\n 294\n ],\n \"declaration_order_index\": 24,\n \"symbol_name\": \"Circle\",\n \"qualified_name\": \"Circle\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public Circle(double radius)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Circle\",\n \"child_symbol_names\": [\n \"area\"\n ],\n \"child_qualified_names\": [\n \"Circle.area\"\n ],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Construct a circle with a given radius.\",\n \"doxygen\": {\n \"brief\": [\n \"Construct a circle with a given radius.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"radius\",\n \"description\": \"Non-negative radius value.\"\n }\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 301,\n \"end_line_number\": 303,\n \"line_range\": [\n 301,\n 303\n ],\n \"declaration_order_index\": 25,\n \"symbol_name\": \"area\",\n \"qualified_name\": \"Circle.area\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public double area()\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Circle\",\n \"parent_qualified_name\": \"Circle\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"decorator_text\": \"@Override\",\n \"attached_comment_summary_text\": \"@brief Compute circle area using π×r². @return The area of the circle.\",\n \"attached_comment_lines\": [\n \"@brief Compute circle area using π×r².\",\n \"@return The area of the circle.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 302,\n \"text\": \"return PI * radius * radius;\"\n }\n ]\n },\n {\n \"start_line_number\": 311,\n \"end_line_number\": 324,\n \"line_range\": [\n 311,\n 324\n ],\n \"declaration_order_index\": 26,\n \"symbol_name\": \"Rectangle\",\n \"qualified_name\": \"Rectangle\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"public final class Rectangle extends Shape\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [\n \"area\"\n ],\n \"child_qualified_names\": [\n \"Rectangle.area\"\n ],\n \"depth\": 0,\n \"inherits_text\": \"Shape\",\n \"attached_comment_summary_text\": \"Rectangle shape with width and height.\",\n \"doxygen\": {\n \"brief\": [\n \"Rectangle shape with width and height.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 322,\n \"text\": \"return width * height;\"\n }\n ]\n },\n {\n \"start_line_number\": 315,\n \"end_line_number\": 318,\n \"line_range\": [\n 315,\n 318\n ],\n \"declaration_order_index\": 27,\n \"symbol_name\": \"Rectangle\",\n \"qualified_name\": \"Rectangle\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public Rectangle(double width, double height)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Rectangle\",\n \"child_symbol_names\": [\n \"area\"\n ],\n \"child_qualified_names\": [\n \"Rectangle.area\"\n ],\n \"depth\": 1,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 321,\n \"end_line_number\": 323,\n \"line_range\": [\n 321,\n 323\n ],\n \"declaration_order_index\": 28,\n \"symbol_name\": \"area\",\n \"qualified_name\": \"Rectangle.area\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public double area()\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Rectangle\",\n \"parent_qualified_name\": \"Rectangle\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"decorator_text\": \"@Override\",\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 322,\n \"text\": \"return width * height;\"\n }\n ]\n },\n {\n \"start_line_number\": 332,\n \"end_line_number\": 361,\n \"line_range\": [\n 332,\n 361\n ],\n \"declaration_order_index\": 29,\n \"symbol_name\": \"Evaluator\",\n \"qualified_name\": \"Evaluator\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"public class Evaluator\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [\n \"describe\",\n \"switch\",\n \"readFile\"\n ],\n \"child_qualified_names\": [\n \"Evaluator.describe\",\n \"Evaluator.switch\",\n \"Evaluator.readFile\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Demonstrates switch expressions and try-with-resources.\",\n \"doxygen\": {\n \"brief\": [\n \"Demonstrates switch expressions and try-with-resources.\",\n \"Describe a shape using pattern matching switch expression.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"shape\",\n \"description\": \"The shape to describe.\"\n }\n ],\n \"returns\": [\n \"Human-readable description string.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 334,\n \"end_line_number\": 338,\n \"line_range\": [\n 334,\n 338\n ],\n \"text\": \"@brief Describe a shape using pattern matching switch expression. @param shape The shape to describe. @return Human-readable description string.\",\n \"text_lines\": [\n \"@brief Describe a shape using pattern matching switch expression. @param shape The shape to describe. @return Human-readable description string.\"\n ]\n },\n {\n \"start_line_number\": 340,\n \"end_line_number\": 340,\n \"line_range\": [\n 340,\n 340\n ],\n \"text\": \"Switch expression with pattern matching (Java 21)\",\n \"text_lines\": [\n \"Switch expression with pattern matching (Java 21)\"\n ]\n },\n {\n \"start_line_number\": 348,\n \"end_line_number\": 353,\n \"line_range\": [\n 348,\n 353\n ],\n \"text\": \"@brief Read a file safely with try-with-resources. @param path File system path to read. @return File contents as a string. @throws java.io.IOException If the file cannot be read.\",\n \"text_lines\": [\n \"@brief Read a file safely with try-with-resources. @param path File system path to read. @return File contents as a string. @throws java.io.IOException If the file cannot be read.\"\n ]\n },\n {\n \"start_line_number\": 356,\n \"end_line_number\": 356,\n \"line_range\": [\n 356,\n 356\n ],\n \"text\": \"Auto-closeable resource management\",\n \"text_lines\": [\n \"Auto-closeable resource management\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 341,\n \"text\": \"return switch (shape) {\"\n },\n {\n \"line_number\": 358,\n \"text\": \"return reader.lines().collect(Collectors.joining(\\\"\\\\n\\\"));\"\n }\n ]\n },\n {\n \"start_line_number\": 339,\n \"end_line_number\": 346,\n \"line_range\": [\n 339,\n 346\n ],\n \"declaration_order_index\": 30,\n \"symbol_name\": \"describe\",\n \"qualified_name\": \"Evaluator.describe\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public static String describe(Shape shape)\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Evaluator\",\n \"parent_qualified_name\": \"Evaluator\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Describe a shape using pattern matching switch expression.\",\n \"doxygen\": {\n \"brief\": [\n \"Describe a shape using pattern matching switch expression.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"shape\",\n \"description\": \"The shape to describe.\"\n }\n ],\n \"returns\": [\n \"Human-readable description string.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 340,\n \"end_line_number\": 340,\n \"line_range\": [\n 340,\n 340\n ],\n \"text\": \"Switch expression with pattern matching (Java 21)\",\n \"text_lines\": [\n \"Switch expression with pattern matching (Java 21)\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 341,\n \"text\": \"return switch (shape) {\"\n }\n ]\n },\n {\n \"start_line_number\": 341,\n \"end_line_number\": 345,\n \"line_range\": [\n 341,\n 345\n ],\n \"declaration_order_index\": 31,\n \"symbol_name\": \"switch\",\n \"qualified_name\": \"Evaluator.switch\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"return switch (shape)\",\n \"parent_symbol_name\": \"Evaluator\",\n \"parent_qualified_name\": \"Evaluator\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Switch expression with pattern matching (Java 21)\",\n \"attached_comment_lines\": [\n \"Switch expression with pattern matching (Java 21)\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 355,\n \"end_line_number\": 360,\n \"line_range\": [\n 355,\n 360\n ],\n \"declaration_order_index\": 32,\n \"symbol_name\": \"readFile\",\n \"qualified_name\": \"Evaluator.readFile\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"public static String readFile(String path) throws java.io.IOException\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Evaluator\",\n \"parent_qualified_name\": \"Evaluator\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"decorator_text\": \"@RequiresAuth(role = \\\"admin\\\")\",\n \"attached_comment_summary_text\": \"@brief Read a file safely with try-with-resources. @param path File system path to read. @return File contents as a string. ...\",\n \"attached_comment_lines\": [\n \"@brief Read a file safely with try-with-resources.\",\n \"@param path File system path to read.\",\n \"@return File contents as a string.\",\n \"...\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 356,\n \"end_line_number\": 356,\n \"line_range\": [\n 356,\n 356\n ],\n \"text\": \"Auto-closeable resource management\",\n \"text_lines\": [\n \"Auto-closeable resource management\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 358,\n \"text\": \"return reader.lines().collect(Collectors.joining(\\\"\\\\n\\\"));\"\n }\n ]\n },\n {\n \"start_line_number\": 364,\n \"end_line_number\": 368,\n \"line_range\": [\n 364,\n 368\n ],\n \"declaration_order_index\": 33,\n \"symbol_name\": \"com.example.extra.one\",\n \"qualified_name\": \"com.example.extra.one\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package com.example.extra.one\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"coverage extension block\",\n \"attached_comment_lines\": [\n \"coverage extension block\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 365,\n \"end_line_number\": 368,\n \"line_range\": [\n 365,\n 368\n ],\n \"declaration_order_index\": 34,\n \"symbol_name\": \"com.example.extra.two\",\n \"qualified_name\": \"com.example.extra.two\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package com.example.extra.two\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 366,\n \"end_line_number\": 368,\n \"line_range\": [\n 366,\n 368\n ],\n \"declaration_order_index\": 35,\n \"symbol_name\": \"com.example.extra.three\",\n \"qualified_name\": \"com.example.extra.three\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package com.example.extra.three\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 367,\n \"end_line_number\": 368,\n \"line_range\": [\n 367,\n 368\n ],\n \"declaration_order_index\": 36,\n \"symbol_name\": \"com.example.extra.four\",\n \"qualified_name\": \"com.example.extra.four\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package com.example.extra.four\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 368,\n \"end_line_number\": 368,\n \"line_range\": [\n 368,\n 368\n ],\n \"declaration_order_index\": 37,\n \"symbol_name\": \"Runner\",\n \"qualified_name\": \"Runner\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"interface Runner {}\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 369,\n \"end_line_number\": 369,\n \"line_range\": [\n 369,\n 369\n ],\n \"declaration_order_index\": 38,\n \"symbol_name\": \"Mapper\",\n \"qualified_name\": \"Mapper\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"public interface Mapper {}\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 370,\n \"end_line_number\": 370,\n \"line_range\": [\n 370,\n 370\n ],\n \"declaration_order_index\": 39,\n \"symbol_name\": \"Handler\",\n \"qualified_name\": \"Handler\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"public interface Handler {}\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 371,\n \"end_line_number\": 371,\n \"line_range\": [\n 371,\n 371\n ],\n \"declaration_order_index\": 40,\n \"symbol_name\": \"Auditor\",\n \"qualified_name\": \"Auditor\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"public interface Auditor {}\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 372,\n \"end_line_number\": 372,\n \"line_range\": [\n 372,\n 372\n ],\n \"declaration_order_index\": 41,\n \"symbol_name\": \"ModeJava\",\n \"qualified_name\": \"ModeJava\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum ModeJava { FAST, SAFE }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 373,\n \"end_line_number\": 373,\n \"line_range\": [\n 373,\n 373\n ],\n \"declaration_order_index\": 42,\n \"symbol_name\": \"PhaseJava\",\n \"qualified_name\": \"PhaseJava\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum PhaseJava { INIT, RUN }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 374,\n \"end_line_number\": 374,\n \"line_range\": [\n 374,\n 374\n ],\n \"declaration_order_index\": 43,\n \"symbol_name\": \"StatusJava\",\n \"qualified_name\": \"StatusJava\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum StatusJava { OPEN, CLOSED }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 375,\n \"end_line_number\": 375,\n \"line_range\": [\n 375,\n 375\n ],\n \"declaration_order_index\": 44,\n \"symbol_name\": \"KindJava\",\n \"qualified_name\": \"KindJava\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum KindJava { A, B }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 376,\n \"end_line_number\": 376,\n \"line_range\": [\n 376,\n 376\n ],\n \"declaration_order_index\": 45,\n \"symbol_name\": \"DEFAULT_LIMIT\",\n \"qualified_name\": \"DEFAULT_LIMIT\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"public static final int DEFAULT_LIMIT = 10\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 377,\n \"end_line_number\": 377,\n \"line_range\": [\n 377,\n 377\n ],\n \"declaration_order_index\": 46,\n \"symbol_name\": \"RETRY_LIMIT\",\n \"qualified_name\": \"RETRY_LIMIT\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"public static final int RETRY_LIMIT = 3\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 378,\n \"end_line_number\": 378,\n \"line_range\": [\n 378,\n 378\n ],\n \"declaration_order_index\": 47,\n \"symbol_name\": \"BUFFER_SIZE\",\n \"qualified_name\": \"BUFFER_SIZE\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"public static final int BUFFER_SIZE = 512\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 379,\n \"end_line_number\": 379,\n \"line_range\": [\n 379,\n 379\n ],\n \"declaration_order_index\": 48,\n \"symbol_name\": \"MAX_USERS\",\n \"qualified_name\": \"MAX_USERS\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"public static final int MAX_USERS = 99\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 383,\n \"end_line_number\": 429,\n \"line_range\": [\n 383,\n 429\n ],\n \"declaration_order_index\": 49,\n \"symbol_name\": \"ReqCoverJava\",\n \"qualified_name\": \"ReqCoverJava\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"class ReqCoverJava\",\n \"child_symbol_names\": [\n \"reqCoverJava1\",\n \"reqCoverJava2\",\n \"reqCoverJava3\",\n \"reqCoverJava4\",\n \"reqCoverJava5\"\n ],\n \"child_qualified_names\": [\n \"ReqCoverJava.reqCoverJava1\",\n \"ReqCoverJava.reqCoverJava2\",\n \"ReqCoverJava.reqCoverJava3\",\n \"ReqCoverJava.reqCoverJava4\",\n \"ReqCoverJava.reqCoverJava5\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Coverage helper construct 1.\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 1.\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 1.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Input value for helper construct 1.\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 1.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 384,\n \"end_line_number\": 390,\n \"line_range\": [\n 384,\n 390\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 1 @brief Coverage helper construct 1. @details Provides deterministic fixture-level Doxygen coverage block 1. @param value Input value for helper construct 1. @return Output value for helper construct 1.\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 1 @brief Coverage helper construct 1. @details Provides deterministic fixture-level Doxygen coverage block 1. @param value Input value for helper construct 1. @return Output value for helper construct 1.\"\n ]\n },\n {\n \"start_line_number\": 393,\n \"end_line_number\": 399,\n \"line_range\": [\n 393,\n 399\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 2 @brief Coverage helper construct 2. @details Provides deterministic fixture-level Doxygen coverage block 2. @param value Input value for helper construct 2. @return Output value for helper construct 2.\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 2 @brief Coverage helper construct 2. @details Provides deterministic fixture-level Doxygen coverage block 2. @param value Input value for helper construct 2. @return Output value for helper construct 2.\"\n ]\n },\n {\n \"start_line_number\": 402,\n \"end_line_number\": 408,\n \"line_range\": [\n 402,\n 408\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 3 @brief Coverage helper construct 3. @details Provides deterministic fixture-level Doxygen coverage block 3. @param value Input value for helper construct 3. @return Output value for helper construct 3.\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 3 @brief Coverage helper construct 3. @details Provides deterministic fixture-level Doxygen coverage block 3. @param value Input value for helper construct 3. @return Output value for helper construct 3.\"\n ]\n },\n {\n \"start_line_number\": 411,\n \"end_line_number\": 417,\n \"line_range\": [\n 411,\n 417\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 4 @brief Coverage helper construct 4. @details Provides deterministic fixture-level Doxygen coverage block 4. @param value Input value for helper construct 4. @return Output value for helper construct 4.\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 4 @brief Coverage helper construct 4. @details Provides deterministic fixture-level Doxygen coverage block 4. @param value Input value for helper construct 4. @return Output value for helper construct 4.\"\n ]\n },\n {\n \"start_line_number\": 420,\n \"end_line_number\": 426,\n \"line_range\": [\n 420,\n 426\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 5 @brief Coverage helper construct 5. @details Provides deterministic fixture-level Doxygen coverage block 5. @param value Input value for helper construct 5. @return Output value for helper construct 5.\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 5 @brief Coverage helper construct 5. @details Provides deterministic fixture-level Doxygen coverage block 5. @param value Input value for helper construct 5. @return Output value for helper construct 5.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 391,\n \"end_line_number\": 391,\n \"line_range\": [\n 391,\n 391\n ],\n \"declaration_order_index\": 50,\n \"symbol_name\": \"reqCoverJava1\",\n \"qualified_name\": \"ReqCoverJava.reqCoverJava1\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static int reqCoverJava1(int value) { return value + 1; }\",\n \"parent_symbol_name\": \"ReqCoverJava\",\n \"parent_qualified_name\": \"ReqCoverJava\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Coverage helper construct 1.\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 1.\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 1.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Input value for helper construct 1.\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 1.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 400,\n \"end_line_number\": 400,\n \"line_range\": [\n 400,\n 400\n ],\n \"declaration_order_index\": 51,\n \"symbol_name\": \"reqCoverJava2\",\n \"qualified_name\": \"ReqCoverJava.reqCoverJava2\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static int reqCoverJava2(int value) { return value + 2; }\",\n \"parent_symbol_name\": \"ReqCoverJava\",\n \"parent_qualified_name\": \"ReqCoverJava\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Coverage helper construct 2.\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 2.\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 2.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Input value for helper construct 2.\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 2.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 409,\n \"end_line_number\": 409,\n \"line_range\": [\n 409,\n 409\n ],\n \"declaration_order_index\": 52,\n \"symbol_name\": \"reqCoverJava3\",\n \"qualified_name\": \"ReqCoverJava.reqCoverJava3\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static int reqCoverJava3(int value) { return value + 3; }\",\n \"parent_symbol_name\": \"ReqCoverJava\",\n \"parent_qualified_name\": \"ReqCoverJava\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Coverage helper construct 3.\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 3.\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 3.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Input value for helper construct 3.\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 3.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 418,\n \"end_line_number\": 418,\n \"line_range\": [\n 418,\n 418\n ],\n \"declaration_order_index\": 53,\n \"symbol_name\": \"reqCoverJava4\",\n \"qualified_name\": \"ReqCoverJava.reqCoverJava4\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static int reqCoverJava4(int value) { return value + 4; }\",\n \"parent_symbol_name\": \"ReqCoverJava\",\n \"parent_qualified_name\": \"ReqCoverJava\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Coverage helper construct 4.\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 4.\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 4.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Input value for helper construct 4.\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 4.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 427,\n \"end_line_number\": 427,\n \"line_range\": [\n 427,\n 427\n ],\n \"declaration_order_index\": 54,\n \"symbol_name\": \"reqCoverJava5\",\n \"qualified_name\": \"ReqCoverJava.reqCoverJava5\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static int reqCoverJava5(int value) { return value + 5; }\",\n \"parent_symbol_name\": \"ReqCoverJava\",\n \"parent_qualified_name\": \"ReqCoverJava\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Coverage helper construct 5.\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 5.\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 5.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Input value for helper construct 5.\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 5.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n }\n ],\n \"standalone_comments\": [\n {\n \"start_line_number\": 21,\n \"end_line_number\": 21,\n \"line_range\": [\n 21,\n 21\n ],\n \"text\": \"── Annotation ─────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Annotation ─────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 31,\n \"end_line_number\": 31,\n \"line_range\": [\n 31,\n 31\n ],\n \"text\": \"── Main class ─────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Main class ─────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 44,\n \"end_line_number\": 44,\n \"line_range\": [\n 44,\n 44\n ],\n \"text\": \"@brief Type-safe internal storage for items.\",\n \"text_lines\": [\n \"@brief Type-safe internal storage for items.\"\n ]\n },\n {\n \"start_line_number\": 60,\n \"end_line_number\": 60,\n \"line_range\": [\n 60,\n 60\n ],\n \"text\": \"Null check before output\",\n \"text_lines\": [\n \"Null check before output\"\n ]\n },\n {\n \"start_line_number\": 82,\n \"end_line_number\": 82,\n \"line_range\": [\n 82,\n 82\n ],\n \"text\": \"Test each item against predicate\",\n \"text_lines\": [\n \"Test each item against predicate\"\n ]\n },\n {\n \"start_line_number\": 115,\n \"end_line_number\": 115,\n \"line_range\": [\n 115,\n 115\n ],\n \"text\": \"── Inner class ────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Inner class ────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 143,\n \"end_line_number\": 143,\n \"line_range\": [\n 143,\n 143\n ],\n \"text\": \"── Static nested class ────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Static nested class ────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 150,\n \"end_line_number\": 150,\n \"line_range\": [\n 150,\n 150\n ],\n \"text\": \"@brief Configuration key string.\",\n \"text_lines\": [\n \"@brief Configuration key string.\"\n ]\n },\n {\n \"start_line_number\": 152,\n \"end_line_number\": 152,\n \"line_range\": [\n 152,\n 152\n ],\n \"text\": \"@brief Configuration value.\",\n \"text_lines\": [\n \"@brief Configuration value.\"\n ]\n },\n {\n \"start_line_number\": 167,\n \"end_line_number\": 167,\n \"line_range\": [\n 167,\n 167\n ],\n \"text\": \"── Interface with default methods ─────────────────────────────────────\",\n \"text_lines\": [\n \"── Interface with default methods ─────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 180,\n \"end_line_number\": 183,\n \"line_range\": [\n 180,\n 183\n ],\n \"text\": \"@brief Default farewell method with implementation. @param name Person to bid farewell.\",\n \"text_lines\": [\n \"@brief Default farewell method with implementation.\",\n \"@param name Person to bid farewell.\"\n ]\n },\n {\n \"start_line_number\": 193,\n \"end_line_number\": 193,\n \"line_range\": [\n 193,\n 193\n ],\n \"text\": \"Lambda implementing the functional interface\",\n \"text_lines\": [\n \"Lambda implementing the functional interface\"\n ]\n },\n {\n \"start_line_number\": 198,\n \"end_line_number\": 198,\n \"line_range\": [\n 198,\n 198\n ],\n \"text\": \"── Enum with methods ──────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Enum with methods ──────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 205,\n \"end_line_number\": 205,\n \"line_range\": [\n 205,\n 205\n ],\n \"text\": \"@brief Red color with hex #FF0000.\",\n \"text_lines\": [\n \"@brief Red color with hex #FF0000.\"\n ]\n },\n {\n \"start_line_number\": 207,\n \"end_line_number\": 207,\n \"line_range\": [\n 207,\n 207\n ],\n \"text\": \"@brief Green color with hex #00FF00.\",\n \"text_lines\": [\n \"@brief Green color with hex #00FF00.\"\n ]\n },\n {\n \"start_line_number\": 209,\n \"end_line_number\": 209,\n \"line_range\": [\n 209,\n 209\n ],\n \"text\": \"@brief Blue color with hex #0000FF.\",\n \"text_lines\": [\n \"@brief Blue color with hex #0000FF.\"\n ]\n },\n {\n \"start_line_number\": 212,\n \"end_line_number\": 212,\n \"line_range\": [\n 212,\n 212\n ],\n \"text\": \"@brief The hexadecimal color code.\",\n \"text_lines\": [\n \"@brief The hexadecimal color code.\"\n ]\n },\n {\n \"start_line_number\": 215,\n \"end_line_number\": 218,\n \"line_range\": [\n 215,\n 218\n ],\n \"text\": \"@brief Private constructor for enum constants. @param hex The hex string for this color.\",\n \"text_lines\": [\n \"@brief Private constructor for enum constants.\",\n \"@param hex The hex string for this color.\"\n ]\n },\n {\n \"start_line_number\": 232,\n \"end_line_number\": 232,\n \"line_range\": [\n 232,\n 232\n ],\n \"text\": \"── Record (Java 16+) ──────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Record (Java 16+) ──────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 241,\n \"end_line_number\": 244,\n \"line_range\": [\n 241,\n 244\n ],\n \"text\": \"@brief Compact constructor validating coordinates. @throws IllegalArgumentException If either coordinate is NaN.\",\n \"text_lines\": [\n \"@brief Compact constructor validating coordinates.\",\n \"@throws IllegalArgumentException If either coordinate is NaN.\"\n ]\n },\n {\n \"start_line_number\": 263,\n \"end_line_number\": 263,\n \"line_range\": [\n 263,\n 263\n ],\n \"text\": \"── Sealed class hierarchy (Java 17+) ──────────────────────────────────\",\n \"text_lines\": [\n \"── Sealed class hierarchy (Java 17+) ──────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 265,\n \"end_line_number\": 268,\n \"line_range\": [\n 265,\n 268\n ],\n \"text\": \"@class Shape @brief Sealed class permitting only Circle and Rectangle subtypes.\",\n \"text_lines\": [\n \"@class Shape\",\n \"@brief Sealed class permitting only Circle and Rectangle subtypes.\"\n ]\n },\n {\n \"start_line_number\": 285,\n \"end_line_number\": 285,\n \"line_range\": [\n 285,\n 285\n ],\n \"text\": \"@brief Radius of the circle.\",\n \"text_lines\": [\n \"@brief Radius of the circle.\"\n ]\n },\n {\n \"start_line_number\": 326,\n \"end_line_number\": 326,\n \"line_range\": [\n 326,\n 326\n ],\n \"text\": \"── Utility class with switch expression ───────────────────────────────\",\n \"text_lines\": [\n \"── Utility class with switch expression ───────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 356,\n \"end_line_number\": 356,\n \"line_range\": [\n 356,\n 356\n ],\n \"text\": \"Auto-closeable resource management\",\n \"text_lines\": [\n \"Auto-closeable resource management\"\n ]\n },\n {\n \"start_line_number\": 430,\n \"end_line_number\": 430,\n \"line_range\": [\n 430,\n 430\n ],\n \"text\": \"REQ-COVER-SRS-231 END\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 END\"\n ]\n }\n ]\n }\n ]\n}\n",
|
|
3
|
+
"stdout": "# fixture_java.java | Java | 430L | 55 symbols | 7 imports | 66 comments\n> Path: `tests/fixtures/fixture_java.java`\n- @brief Comprehensive Java test fixture for parser validation.\n- @details Covers generics with wildcards, sealed classes, records, inner classes,\nanonymous classes, lambdas, method references, switch expressions,\ntry-with-resources, annotations, and default interface methods.\n\n## Imports\n```\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Optional;\nimport java.util.function.Function;\nimport java.util.function.Predicate;\nimport java.util.stream.Collectors;\nimport static java.lang.Math.PI;\n```\n\n## Definitions\n\n### mod `package com.example.app` (L11-29)\n\n### fn `String role() default \"user\"` `@interface RequiresAuth {` (L28-39)\n\n### class `public class MyClass<T extends Comparable<T>>` : Comparable<T>> `@SuppressWarnings(\"unchecked\")` (L39-165)\n- @brief Maximum buffer size constant.\n- const `public static final int MAX_SIZE = 100` (L42)\n - @brief Maximum buffer size constant. */\n- fn `public MyClass(List<T> items)` (L51-53)\n - @brief Construct MyClass with an initial item list.\n - @param items The starting collection of items.\n- fn `public void greet(String name)` (L59-65)\n - @brief Greet a person by name on standard output.\n - @param name The person's name; must not be null.\n- fn `private static String helper()` `priv` (L71-73)\n - @brief Helper method returning a status string.\n - @return Always returns \"ok\".\n- fn `public Optional<T> findFirst(Predicate<T> predicate)` (L80-88)\n - @brief Find the first item matching a predicate.\n - @param predicate Filter condition for items.\n - @return Optional containing the first match, or empty.\n- fn `public <R> List<R> map(Function<T, R> mapper)` (L96-100)\n - @brief Transform all items using a mapping function.\n - @param <R> The result type after transformation.\n - @param mapper Function to apply to each item.\n - @return List of transformed results.\n- fn `public double sumWildcard(List<? extends Number> source)` (L107-113)\n - @brief Process items with a wildcard-bounded list.\n - @param source List of items extending Number.\n - @return Sum of all numeric values as double.\n\n### class `public class Builder` (L121-141)\n- @brief Inner builder class for constructing MyClass instances.\n- @brief Add an item to the builder.\n- @param item Item to include in the built instance.\n- @return This builder for chaining.\n- fn `public Builder add(T item)` (L129-132)\n - @brief Add an item to the builder.\n - @param item Item to include in the built instance.\n - @return This builder for chaining.\n- fn `public MyClass<T> build()` (L138-140)\n - @brief Finalize and create the MyClass instance.\n - @return A new MyClass populated with accumulated items.\n\n### class `public static class Config` (L149-164)\n- @brief Static configuration holder with validation.\n- @brief Configuration key string.\n- @brief Configuration value.\n- fn `public Config(String key, Object value)` (L160-163)\n - @brief Construct a Config entry.\n - @param key The configuration key.\n - @param value The associated value.\n\n### iface `public interface Greeter` (L173-196)\n- @brief Functional interface for greeting operations.\n- @brief Perform a greeting to the named person.\n- @param name Recipient of the greeting.\n- fn `void sayHello(String name)` (L178-186)\n - @brief Perform a greeting to the named person.\n - @brief Default farewell method with implementation.\n - @param name Recipient of the greeting.\n - @param name Person to bid farewell.\n- fn `static Greeter simple()` (L192-195)\n - @brief Static factory creating a simple Greeter.\n - @return A Greeter that prints to stdout.\n\n### enum `public enum Color` (L204-230)\n- @brief Color enum with associated hex values and behavior.\n- @brief Red color with hex #FF0000.\n- @brief Green color with hex #00FF00.\n- fn `public String getHex()` (L227-229)\n - @brief Get the hex code of this color.\n - @return Hex string including '#' prefix.\n\n### fn `public record Point(double x, double y)` (L240-261)\n- @brief Immutable 2D coordinate record.\n- @brief Compact constructor validating coordinates.\n- @param x Horizontal coordinate.\n- @param y Vertical coordinate.\n- @throws IllegalArgumentException If either coordinate is NaN.\n\n### fn `public double distanceTo(Point other)` (L256-260)\n- @brief Compute distance to another point.\n- @param other Target point.\n- @return Euclidean distance.\n\n### fn `public double area()` (L274-276)\n- @brief Compute the area of this shape.\n- @return Area as a double; subclasses provide implementation.\n\n### class `public final class Circle extends Shape` : Shape (L284-304)\n- @brief Circle shape with radius-based area computation.\n- @brief Radius of the circle.\n- fn `public Circle(double radius)` (L292-294)\n - @brief Construct a circle with a given radius.\n - @param radius Non-negative radius value.\n- fn `public double area()` (L301-303)\n\n### class `public final class Rectangle extends Shape` : Shape (L311-324)\n- @brief Rectangle shape with width and height.\n- fn `public Rectangle(double width, double height)` (L315-318)\n- fn `public double area()` (L321-323)\n\n### class `public class Evaluator` (L332-361)\n- @brief Demonstrates switch expressions and try-with-resources.\n- @brief Describe a shape using pattern matching switch expression.\n- @param shape The shape to describe.\n- @return Human-readable description string.\n- fn `public static String describe(Shape shape)` (L339-346)\n - @brief Describe a shape using pattern matching switch expression.\n - @param shape The shape to describe.\n - @return Human-readable description string.\n- fn `return switch (shape)` (L341-345)\n- fn `public static String readFile(String path) throws java.io.IOException` (L355-360)\n\n### mod `package com.example.extra.one` (L364-368)\n\n### mod `package com.example.extra.two` (L365-368)\n\n### mod `package com.example.extra.three` (L366-368)\n\n### mod `package com.example.extra.four` (L367-368)\n\n- iface `interface Runner {}` (L368)\n- iface `public interface Mapper {}` (L369)\n- iface `public interface Handler {}` (L370)\n- iface `public interface Auditor {}` (L371)\n- enum `enum ModeJava { FAST, SAFE }` (L372)\n- enum `enum PhaseJava { INIT, RUN }` (L373)\n- enum `enum StatusJava { OPEN, CLOSED }` (L374)\n- enum `enum KindJava { A, B }` (L375)\n- const `public static final int DEFAULT_LIMIT = 10;` (L376)\n- const `public static final int RETRY_LIMIT = 3;` (L377)\n- const `public static final int BUFFER_SIZE = 512;` (L378)\n- const `public static final int MAX_USERS = 99;` (L379)\n### class `class ReqCoverJava` (L383-429)\n- @brief Coverage helper construct 1.\n- @details Provides deterministic fixture-level Doxygen coverage block 1.\n- @param value Input value for helper construct 1.\n- @return Output value for helper construct 1.\n- fn `static int reqCoverJava1(int value) { return value + 1; }` (L391)\n - @brief Coverage helper construct 1.\n - @details Provides deterministic fixture-level Doxygen coverage block 1.\n - @param value Input value for helper construct 1.\n - @return Output value for helper construct 1.\n- fn `static int reqCoverJava2(int value) { return value + 2; }` (L400)\n - @brief Coverage helper construct 2.\n - @details Provides deterministic fixture-level Doxygen coverage block 2.\n - @param value Input value for helper construct 2.\n - @return Output value for helper construct 2.\n- fn `static int reqCoverJava3(int value) { return value + 3; }` (L409)\n - @brief Coverage helper construct 3.\n - @details Provides deterministic fixture-level Doxygen coverage block 3.\n - @param value Input value for helper construct 3.\n - @return Output value for helper construct 3.\n- fn `static int reqCoverJava4(int value) { return value + 4; }` (L418)\n - @brief Coverage helper construct 4.\n - @details Provides deterministic fixture-level Doxygen coverage block 4.\n - @param value Input value for helper construct 4.\n - @return Output value for helper construct 4.\n- fn `static int reqCoverJava5(int value) { return value + 5; }` (L427)\n - @brief Coverage helper construct 5.\n - @details Provides deterministic fixture-level Doxygen coverage block 5.\n - @param value Input value for helper construct 5.\n - @return Output value for helper construct 5.\n\n## Symbol Index\n|Symbol|Kind|Vis|Lines|Sig|\n|---|---|---|---|---|\n|`com.example.app`|mod||11-29||\n|`role`|fn||28-39|String role() default \"user\"|\n|`MyClass`|class|pub|39-165|public class MyClass<T extends Comparable<T>>|\n|`MyClass.MAX_SIZE`|const|pub|42||\n|`MyClass.MyClass`|fn|pub|51-53|public MyClass(List<T> items)|\n|`MyClass.greet`|fn|pub|59-65|public void greet(String name)|\n|`MyClass.helper`|fn|priv|71-73|private static String helper()|\n|`MyClass.findFirst`|fn|pub|80-88|public Optional<T> findFirst(Predicate<T> predicate)|\n|`MyClass.map`|fn|pub|96-100|public <R> List<R> map(Function<T, R> mapper)|\n|`MyClass.sumWildcard`|fn|pub|107-113|public double sumWildcard(List<? extends Number> source)|\n|`Builder`|class|pub|121-141|public class Builder|\n|`Builder.add`|fn|pub|129-132|public Builder add(T item)|\n|`Builder.build`|fn|pub|138-140|public MyClass<T> build()|\n|`Config`|class|pub|149-164|public static class Config|\n|`Config.Config`|fn|pub|160-163|public Config(String key, Object value)|\n|`Greeter`|iface|pub|173-196|public interface Greeter|\n|`Greeter.sayHello`|fn||178-186|void sayHello(String name)|\n|`Greeter.simple`|fn||192-195|static Greeter simple()|\n|`Color`|enum|pub|204-230|public enum Color|\n|`Color.getHex`|fn|pub|227-229|public String getHex()|\n|`Point`|fn|pub|240-261|public record Point(double x, double y)|\n|`distanceTo`|fn|pub|256-260|public double distanceTo(Point other)|\n|`area`|fn|pub|274-276|public double area()|\n|`Circle`|class|pub|284-304|public final class Circle extends Shape|\n|`Circle.Circle`|fn|pub|292-294|public Circle(double radius)|\n|`Circle.area`|fn|pub|301-303|public double area()|\n|`Rectangle`|class|pub|311-324|public final class Rectangle extends Shape|\n|`Rectangle.Rectangle`|fn|pub|315-318|public Rectangle(double width, double height)|\n|`Rectangle.area`|fn|pub|321-323|public double area()|\n|`Evaluator`|class|pub|332-361|public class Evaluator|\n|`Evaluator.describe`|fn|pub|339-346|public static String describe(Shape shape)|\n|`Evaluator.switch`|fn||341-345|return switch (shape)|\n|`Evaluator.readFile`|fn|pub|355-360|public static String readFile(String path) throws java.io...|\n|`com.example.extra.one`|mod||364-368||\n|`com.example.extra.two`|mod||365-368||\n|`com.example.extra.three`|mod||366-368||\n|`com.example.extra.four`|mod||367-368||\n|`Runner`|iface||368|interface Runner {}|\n|`Mapper`|iface|pub|369|public interface Mapper {}|\n|`Handler`|iface|pub|370|public interface Handler {}|\n|`Auditor`|iface|pub|371|public interface Auditor {}|\n|`ModeJava`|enum||372|enum ModeJava { FAST, SAFE }|\n|`PhaseJava`|enum||373|enum PhaseJava { INIT, RUN }|\n|`StatusJava`|enum||374|enum StatusJava { OPEN, CLOSED }|\n|`KindJava`|enum||375|enum KindJava { A, B }|\n|`DEFAULT_LIMIT`|const|pub|376||\n|`RETRY_LIMIT`|const|pub|377||\n|`BUFFER_SIZE`|const|pub|378||\n|`MAX_USERS`|const|pub|379||\n|`ReqCoverJava`|class||383-429|class ReqCoverJava|\n|`ReqCoverJava.reqCoverJava1`|fn||391|static int reqCoverJava1(int value) { return value + 1; }|\n|`ReqCoverJava.reqCoverJava2`|fn||400|static int reqCoverJava2(int value) { return value + 2; }|\n|`ReqCoverJava.reqCoverJava3`|fn||409|static int reqCoverJava3(int value) { return value + 3; }|\n|`ReqCoverJava.reqCoverJava4`|fn||418|static int reqCoverJava4(int value) { return value + 4; }|\n|`ReqCoverJava.reqCoverJava5`|fn||427|static int reqCoverJava5(int value) { return value + 5; }|\n\n",
|
|
4
4
|
"stderr": ""
|
|
5
5
|
}
|