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
package/tests/fixtures_attended_results/standalone/files-references/fixture_typescript.ts.json
CHANGED
|
@@ -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_typescript.ts\"\n ],\n \"requested_canonical_paths\": [\n \"tests/fixtures/fixture_typescript.ts\"\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\": 45,\n \"total_import_count\": 5,\n \"total_comment_count\": 102,\n \"total_standalone_comment_count\": 59,\n \"total_doxygen_field_count\": 75,\n \"symbol_kind_counts\": {\n \"CLASS\": 5,\n \"ENUM\": 5,\n \"FUNCTION\": 14,\n \"INTERFACE\": 5,\n \"MODULE\": 5,\n \"NAMESPACE\": 5,\n \"TYPE_ALIAS\": 6\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_typescript.ts\"\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_typescript.ts\",\n \"relative_path\": \"tests/fixtures/fixture_typescript.ts\",\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\": 434,\n \"line_range\": [\n 1,\n 434\n ],\n \"request_index\": 0,\n \"input_path\": \"tests/fixtures/fixture_typescript.ts\",\n \"canonical_path\": \"tests/fixtures/fixture_typescript.ts\",\n \"absolute_path\": \"<ROOT>/tests/fixtures/fixture_typescript.ts\",\n \"file_name\": \"fixture_typescript.ts\",\n \"file_extension\": \".ts\",\n \"language_id\": \"typescript\",\n \"language_name\": \"TypeScript\",\n \"status\": \"analyzed\",\n \"exists\": true,\n \"is_file\": true,\n \"import_count\": 5,\n \"symbol_count\": 45,\n \"comment_count\": 102,\n \"standalone_comment_count\": 59,\n \"doxygen_field_count\": 75,\n \"file_doxygen\": {\n \"brief\": [\n \"Comprehensive TypeScript test fixture for parser validation.\"\n ],\n \"details\": [\n \"Covers conditional types, mapped types, template literal types,\\nsatisfies operator, overload signatures, discriminated unions,\\nmodule augmentation, decorators, generic constraints, and utility types.\"\n ]\n },\n \"imports\": [\n {\n \"start_line_number\": 10,\n \"end_line_number\": 10,\n \"line_range\": [\n 10,\n 10\n ],\n \"import_name\": \"{ Component } from 'react';\",\n \"statement_text\": \"import { Component } from 'react';\"\n },\n {\n \"start_line_number\": 11,\n \"end_line_number\": 11,\n \"line_range\": [\n 11,\n 11\n ],\n \"import_name\": \"type { ReactNode } from 'react';\",\n \"statement_text\": \"import type { ReactNode } from 'react';\"\n },\n {\n \"start_line_number\": 378,\n \"end_line_number\": 378,\n \"line_range\": [\n 378,\n 378\n ],\n \"import_name\": \"{ Injectable } from 'inversify';\",\n \"statement_text\": \"import { Injectable } from 'inversify';\"\n },\n {\n \"start_line_number\": 379,\n \"end_line_number\": 379,\n \"line_range\": [\n 379,\n 379\n ],\n \"import_name\": \"{ Observable } from 'rxjs';\",\n \"statement_text\": \"import { Observable } from 'rxjs';\"\n },\n {\n \"start_line_number\": 380,\n \"end_line_number\": 380,\n \"line_range\": [\n 380,\n 380\n ],\n \"import_name\": \"{ FC } from 'react';\",\n \"statement_text\": \"import { FC } from 'react';\"\n }\n ],\n \"symbols\": [\n {\n \"start_line_number\": 19,\n \"end_line_number\": 28,\n \"line_range\": [\n 19,\n 28\n ],\n \"declaration_order_index\": 0,\n \"symbol_name\": \"User\",\n \"qualified_name\": \"User\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"interface User\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Core user entity with identity fields.\",\n \"doxygen\": {\n \"brief\": [\n \"Core user entity with identity fields.\",\n \"Display name of the user.\",\n \"Age in years; must be non-negative.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 20,\n \"end_line_number\": 20,\n \"line_range\": [\n 20,\n 20\n ],\n \"text\": \"@brief Display name of the user.\",\n \"text_lines\": [\n \"@brief Display name of the user.\"\n ]\n },\n {\n \"start_line_number\": 22,\n \"end_line_number\": 22,\n \"line_range\": [\n 22,\n 22\n ],\n \"text\": \"@brief Age in years; must be non-negative.\",\n \"text_lines\": [\n \"@brief Age in years; must be non-negative.\"\n ]\n },\n {\n \"start_line_number\": 24,\n \"end_line_number\": 24,\n \"line_range\": [\n 24,\n 24\n ],\n \"text\": \"@brief Optional email address.\",\n \"text_lines\": [\n \"@brief Optional email address.\"\n ]\n },\n {\n \"start_line_number\": 26,\n \"end_line_number\": 26,\n \"line_range\": [\n 26,\n 26\n ],\n \"text\": \"@brief Read-only unique identifier.\",\n \"text_lines\": [\n \"@brief Read-only unique identifier.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 35,\n \"end_line_number\": 42,\n \"line_range\": [\n 35,\n 42\n ],\n \"declaration_order_index\": 1,\n \"symbol_name\": \"Repository\",\n \"qualified_name\": \"Repository\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"interface Repository<T>\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Generic CRUD repository with type parameter.\\n@tparam T Entity type managed by this repository.\",\n \"doxygen\": {\n \"brief\": [\n \"Generic CRUD repository with type parameter.\\n@tparam T Entity type managed by this repository.\",\n \"Find an entity by its ID.\",\n \"Persist an entity, returning the saved version.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 36,\n \"end_line_number\": 36,\n \"line_range\": [\n 36,\n 36\n ],\n \"text\": \"@brief Find an entity by its ID.\",\n \"text_lines\": [\n \"@brief Find an entity by its ID.\"\n ]\n },\n {\n \"start_line_number\": 38,\n \"end_line_number\": 38,\n \"line_range\": [\n 38,\n 38\n ],\n \"text\": \"@brief Persist an entity, returning the saved version.\",\n \"text_lines\": [\n \"@brief Persist an entity, returning the saved version.\"\n ]\n },\n {\n \"start_line_number\": 40,\n \"end_line_number\": 40,\n \"line_range\": [\n 40,\n 40\n ],\n \"text\": \"@brief Delete an entity by ID.\",\n \"text_lines\": [\n \"@brief Delete an entity by ID.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 48,\n \"end_line_number\": 51,\n \"line_range\": [\n 48,\n 51\n ],\n \"declaration_order_index\": 2,\n \"symbol_name\": \"Serializable\",\n \"qualified_name\": \"Serializable\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"interface Serializable\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Marks objects that can be serialized to JSON.\",\n \"doxygen\": {\n \"brief\": [\n \"Marks objects that can be serialized to JSON.\",\n \"Convert to a JSON-compatible string.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 49,\n \"end_line_number\": 49,\n \"line_range\": [\n 49,\n 49\n ],\n \"text\": \"@brief Convert to a JSON-compatible string.\",\n \"text_lines\": [\n \"@brief Convert to a JSON-compatible string.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 56,\n \"end_line_number\": 56,\n \"line_range\": [\n 56,\n 56\n ],\n \"declaration_order_index\": 3,\n \"symbol_name\": \"StringOrNumber\",\n \"qualified_name\": \"StringOrNumber\",\n \"symbol_kind\": \"TYPE_ALIAS\",\n \"type_label\": \"TYPE_ALIAS\",\n \"signature_text\": \"type StringOrNumber = string | number\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Union type for values that can be string or number. */\",\n \"doxygen\": {\n \"brief\": [\n \"Union type for values that can be string or number. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 59,\n \"end_line_number\": 59,\n \"line_range\": [\n 59,\n 59\n ],\n \"declaration_order_index\": 4,\n \"symbol_name\": \"DeepReadonly\",\n \"qualified_name\": \"DeepReadonly\",\n \"symbol_kind\": \"TYPE_ALIAS\",\n \"type_label\": \"TYPE_ALIAS\",\n \"signature_text\": \"type DeepReadonly<T> =\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Mapped type making all properties of T optional and readonly. */\",\n \"doxygen\": {\n \"brief\": [\n \"Mapped type making all properties of T optional and readonly. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 64,\n \"end_line_number\": 64,\n \"line_range\": [\n 64,\n 64\n ],\n \"declaration_order_index\": 5,\n \"symbol_name\": \"Unwrap\",\n \"qualified_name\": \"Unwrap\",\n \"symbol_kind\": \"TYPE_ALIAS\",\n \"type_label\": \"TYPE_ALIAS\",\n \"signature_text\": \"type Unwrap<T> = T extends Array<infer U> ? U : T\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Conditional type extracting array element type. */\",\n \"doxygen\": {\n \"brief\": [\n \"Conditional type extracting array element type. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 67,\n \"end_line_number\": 67,\n \"line_range\": [\n 67,\n 67\n ],\n \"declaration_order_index\": 6,\n \"symbol_name\": \"PixelValue\",\n \"qualified_name\": \"PixelValue\",\n \"symbol_kind\": \"TYPE_ALIAS\",\n \"type_label\": \"TYPE_ALIAS\",\n \"signature_text\": \"type PixelValue = `${number}px`\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Template literal type for CSS pixel values. */\",\n \"doxygen\": {\n \"brief\": [\n \"Template literal type for CSS pixel values. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 70,\n \"end_line_number\": 70,\n \"line_range\": [\n 70,\n 70\n ],\n \"declaration_order_index\": 7,\n \"symbol_name\": \"ApiResponse\",\n \"qualified_name\": \"ApiResponse\",\n \"symbol_kind\": \"TYPE_ALIAS\",\n \"type_label\": \"TYPE_ALIAS\",\n \"signature_text\": \"type ApiResponse<T> =\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Discriminated union tag for API responses. */\",\n \"doxygen\": {\n \"brief\": [\n \"Discriminated union tag for API responses. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 76,\n \"end_line_number\": 76,\n \"line_range\": [\n 76,\n 76\n ],\n \"declaration_order_index\": 8,\n \"symbol_name\": \"KeysOfType\",\n \"qualified_name\": \"KeysOfType\",\n \"symbol_kind\": \"TYPE_ALIAS\",\n \"type_label\": \"TYPE_ALIAS\",\n \"signature_text\": \"type KeysOfType<T, V> =\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Extract keys of T whose values extend a given type. */\",\n \"doxygen\": {\n \"brief\": [\n \"Extract keys of T whose values extend a given type. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 86,\n \"end_line_number\": 91,\n \"line_range\": [\n 86,\n 91\n ],\n \"declaration_order_index\": 9,\n \"symbol_name\": \"Direction\",\n \"qualified_name\": \"Direction\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"const enum Direction\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Const enum for cardinal directions (inlined at compile time).\",\n \"doxygen\": {\n \"brief\": [\n \"Const enum for cardinal directions (inlined at compile time).\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 97,\n \"end_line_number\": 104,\n \"line_range\": [\n 97,\n 104\n ],\n \"declaration_order_index\": 10,\n \"symbol_name\": \"Color\",\n \"qualified_name\": \"Color\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum Color\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Regular enum with numeric values for color channels.\",\n \"doxygen\": {\n \"brief\": [\n \"Regular enum with numeric values for color channels.\",\n \"Red channel identifier.\",\n \"Blue channel identifier.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 98,\n \"end_line_number\": 98,\n \"line_range\": [\n 98,\n 98\n ],\n \"text\": \"@brief Red channel identifier.\",\n \"text_lines\": [\n \"@brief Red channel identifier.\"\n ]\n },\n {\n \"start_line_number\": 100,\n \"end_line_number\": 100,\n \"line_range\": [\n 100,\n 100\n ],\n \"text\": \"@brief Blue channel identifier.\",\n \"text_lines\": [\n \"@brief Blue channel identifier.\"\n ]\n },\n {\n \"start_line_number\": 102,\n \"end_line_number\": 102,\n \"line_range\": [\n 102,\n 102\n ],\n \"text\": \"@brief Green channel, explicitly set to 10.\",\n \"text_lines\": [\n \"@brief Green channel, explicitly set to 10.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 110,\n \"end_line_number\": 114,\n \"line_range\": [\n 110,\n 114\n ],\n \"declaration_order_index\": 11,\n \"symbol_name\": \"HttpStatus\",\n \"qualified_name\": \"HttpStatus\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum HttpStatus\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"String enum mapping HTTP status codes.\",\n \"doxygen\": {\n \"brief\": [\n \"String enum mapping HTTP status codes.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 122,\n \"end_line_number\": 139,\n \"line_range\": [\n 122,\n 139\n ],\n \"declaration_order_index\": 12,\n \"symbol_name\": \"Base\",\n \"qualified_name\": \"Base\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"export abstract class Base\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Abstract base class with template method pattern.\",\n \"doxygen\": {\n \"brief\": [\n \"Abstract base class with template method pattern.\",\n \"Abstract render method to be implemented by subclasses.\"\n ],\n \"returns\": [\n \"void\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 123,\n \"end_line_number\": 126,\n \"line_range\": [\n 123,\n 126\n ],\n \"text\": \"@brief Abstract render method to be implemented by subclasses. @return void\",\n \"text_lines\": [\n \"@brief Abstract render method to be implemented by subclasses. @return void\"\n ]\n },\n {\n \"start_line_number\": 129,\n \"end_line_number\": 131,\n \"line_range\": [\n 129,\n 131\n ],\n \"text\": \"@brief Template method calling render with pre/post hooks.\",\n \"text_lines\": [\n \"@brief Template method calling render with pre/post hooks.\"\n ]\n },\n {\n \"start_line_number\": 133,\n \"end_line_number\": 133,\n \"line_range\": [\n 133,\n 133\n ],\n \"text\": \"Pre-render hook\",\n \"text_lines\": [\n \"Pre-render hook\"\n ]\n },\n {\n \"start_line_number\": 136,\n \"end_line_number\": 136,\n \"line_range\": [\n 136,\n 136\n ],\n \"text\": \"Post-render hook\",\n \"text_lines\": [\n \"Post-render hook\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 148,\n \"end_line_number\": 161,\n \"line_range\": [\n 148,\n 161\n ],\n \"declaration_order_index\": 13,\n \"symbol_name\": \"Derived\",\n \"qualified_name\": \"Derived\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"class Derived extends Base\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"inherits_text\": \"Base\",\n \"attached_comment_summary_text\": \"Concrete implementation with typed value storage.\",\n \"doxygen\": {\n \"brief\": [\n \"Concrete implementation with typed value storage.\",\n \"Stored numeric value.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 149,\n \"end_line_number\": 149,\n \"line_range\": [\n 149,\n 149\n ],\n \"text\": \"@brief Stored numeric value.\",\n \"text_lines\": [\n \"@brief Stored numeric value.\"\n ]\n },\n {\n \"start_line_number\": 152,\n \"end_line_number\": 152,\n \"line_range\": [\n 152,\n 152\n ],\n \"text\": \"@brief Optional label for display.\",\n \"text_lines\": [\n \"@brief Optional label for display.\"\n ]\n },\n {\n \"start_line_number\": 155,\n \"end_line_number\": 157,\n \"line_range\": [\n 155,\n 157\n ],\n \"text\": \"@brief Render the value to console output.\",\n \"text_lines\": [\n \"@brief Render the value to console output.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 168,\n \"end_line_number\": 201,\n \"line_range\": [\n 168,\n 201\n ],\n \"declaration_order_index\": 14,\n \"symbol_name\": \"TypedContainer\",\n \"qualified_name\": \"TypedContainer\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"class TypedContainer<T extends Serializable>\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"inherits_text\": \"Serializable>\",\n \"attached_comment_summary_text\": \"Generic container with constraint on Serializable.\\n@tparam T Must implement Serializable interface.\",\n \"doxygen\": {\n \"brief\": [\n \"Generic container with constraint on Serializable.\\n@tparam T Must implement Serializable interface.\",\n \"Internal array storage for items.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 169,\n \"end_line_number\": 169,\n \"line_range\": [\n 169,\n 169\n ],\n \"text\": \"@brief Internal array storage for items.\",\n \"text_lines\": [\n \"@brief Internal array storage for items.\"\n ]\n },\n {\n \"start_line_number\": 172,\n \"end_line_number\": 175,\n \"line_range\": [\n 172,\n 175\n ],\n \"text\": \"@brief Add an item to the container. @param item Item conforming to Serializable.\",\n \"text_lines\": [\n \"@brief Add an item to the container. @param item Item conforming to Serializable.\"\n ]\n },\n {\n \"start_line_number\": 180,\n \"end_line_number\": 183,\n \"line_range\": [\n 180,\n 183\n ],\n \"text\": \"@brief Serialize all items to a JSON array string. @return JSON string of all serialized items.\",\n \"text_lines\": [\n \"@brief Serialize all items to a JSON array string. @return JSON string of all serialized items.\"\n ]\n },\n {\n \"start_line_number\": 188,\n \"end_line_number\": 192,\n \"line_range\": [\n 188,\n 192\n ],\n \"text\": \"@brief Find first item matching a predicate. @param predicate Test function applied to each item. @return The first matching item or undefined.\",\n \"text_lines\": [\n \"@brief Find first item matching a predicate. @param predicate Test function applied to each item. @return The first matching item or undefined.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 185,\n \"text\": \"return `[${this.items.map(i => i.toJSON()).join(',')}]`;\"\n },\n {\n \"line_number\": 196,\n \"text\": \"return item;\"\n },\n {\n \"line_number\": 199,\n \"text\": \"return undefined;\"\n }\n ]\n },\n {\n \"start_line_number\": 210,\n \"end_line_number\": 228,\n \"line_range\": [\n 210,\n 228\n ],\n \"declaration_order_index\": 15,\n \"symbol_name\": \"UserEntity\",\n \"qualified_name\": \"UserEntity\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"class UserEntity implements User, Serializable\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"inherits_text\": \"User, Serializable\",\n \"attached_comment_summary_text\": \"Full user entity implementing both User and Serializable.\",\n \"doxygen\": {\n \"brief\": [\n \"Full user entity implementing both User and Serializable.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 221,\n \"end_line_number\": 224,\n \"line_range\": [\n 221,\n 224\n ],\n \"text\": \"@brief Serialize user to JSON string. @return JSON representation of the user.\",\n \"text_lines\": [\n \"@brief Serialize user to JSON string. @return JSON representation of the user.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 226,\n \"text\": \"return JSON.stringify({ id: this.id, name: this.name, age: this.age });\"\n }\n ]\n },\n {\n \"start_line_number\": 237,\n \"end_line_number\": 239,\n \"line_range\": [\n 237,\n 239\n ],\n \"declaration_order_index\": 16,\n \"symbol_name\": \"greet\",\n \"qualified_name\": \"greet\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"export function greet(name: string): void\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Greet a person by name with type-safe parameter.\",\n \"doxygen\": {\n \"brief\": [\n \"Greet a person by name with type-safe parameter.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"name\",\n \"description\": \"The person's name to display.\"\n }\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 249,\n \"end_line_number\": 256,\n \"line_range\": [\n 249,\n 256\n ],\n \"declaration_order_index\": 17,\n \"symbol_name\": \"parse\",\n \"qualified_name\": \"parse\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function parse(input: string): number\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Parse input with overloaded signatures for type safety.\\n@overload Parse a string input into a number.\\n@overload Parse a number input into a string.\",\n \"doxygen\": {\n \"brief\": [\n \"Parse input with overloaded signatures for type safety.\\n@overload Parse a string input into a number.\\n@overload Parse a number input into a string.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 253,\n \"text\": \"return parseInt(input, 10);\"\n },\n {\n \"line_number\": 255,\n \"text\": \"return input.toString();\"\n }\n ]\n },\n {\n \"start_line_number\": 250,\n \"end_line_number\": 256,\n \"line_range\": [\n 250,\n 256\n ],\n \"declaration_order_index\": 18,\n \"symbol_name\": \"parse\",\n \"qualified_name\": \"parse\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function parse(input: number): string\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 253,\n \"text\": \"return parseInt(input, 10);\"\n },\n {\n \"line_number\": 255,\n \"text\": \"return input.toString();\"\n }\n ]\n },\n {\n \"start_line_number\": 251,\n \"end_line_number\": 256,\n \"line_range\": [\n 251,\n 256\n ],\n \"declaration_order_index\": 19,\n \"symbol_name\": \"parse\",\n \"qualified_name\": \"parse\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function parse(input: string | number): string | number\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 253,\n \"text\": \"return parseInt(input, 10);\"\n },\n {\n \"line_number\": 255,\n \"text\": \"return input.toString();\"\n }\n ]\n },\n {\n \"start_line_number\": 266,\n \"end_line_number\": 277,\n \"line_range\": [\n 266,\n 277\n ],\n \"declaration_order_index\": 20,\n \"symbol_name\": \"add\",\n \"qualified_name\": \"add\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"const add = (a: number): number => a + 1\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Add one to a number (arrow function syntax).\",\n \"doxygen\": {\n \"brief\": [\n \"Add one to a number (arrow function syntax).\",\n \"Generic transform function with constraint. @tparam T Must have a toString method.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"a\",\n \"description\": \"The input number.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Input value to transform.\"\n }\n ],\n \"returns\": [\n \"The incremented value.\",\n \"String representation of the value.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 268,\n \"end_line_number\": 274,\n \"line_range\": [\n 268,\n 274\n ],\n \"text\": \"@function transform @brief Generic transform function with constraint. @tparam T Must have a toString method. @param value Input value to transform. @return String representation of the value.\",\n \"text_lines\": [\n \"@function transform @brief Generic transform function with constraint. @tparam T Must have a toString method. @param value Input value to transform. @return String representation of the value.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 276,\n \"text\": \"return value.toString();\"\n }\n ]\n },\n {\n \"start_line_number\": 288,\n \"end_line_number\": 292,\n \"line_range\": [\n 288,\n 292\n ],\n \"declaration_order_index\": 21,\n \"symbol_name\": \"fetchEntity\",\n \"qualified_name\": \"fetchEntity\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"async function fetchEntity<T>(url: string): Promise<T>\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Fetch and deserialize a typed entity from an API.\\n@tparam T The expected response entity type.\",\n \"doxygen\": {\n \"brief\": [\n \"Fetch and deserialize a typed entity from an API.\\n@tparam T The expected response entity type.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"url\",\n \"description\": \"Endpoint URL.\"\n }\n ],\n \"returns\": [\n \"Promise resolving to the typed entity.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 290,\n \"end_line_number\": 290,\n \"line_range\": [\n 290,\n 290\n ],\n \"text\": \"Parse JSON and cast to expected type\",\n \"text_lines\": [\n \"Parse JSON and cast to expected type\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 291,\n \"text\": \"return response.json() as Promise<T>;\"\n }\n ]\n },\n {\n \"start_line_number\": 300,\n \"end_line_number\": 312,\n \"line_range\": [\n 300,\n 312\n ],\n \"declaration_order_index\": 22,\n \"symbol_name\": \"MyNS\",\n \"qualified_name\": \"MyNS\",\n \"symbol_kind\": \"NAMESPACE\",\n \"type_label\": \"NAMESPACE\",\n \"signature_text\": \"export namespace MyNS\",\n \"child_symbol_names\": [\n \"double\"\n ],\n \"child_qualified_names\": [\n \"MyNS.double\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Namespace grouping related constants and helpers.\",\n \"doxygen\": {\n \"brief\": [\n \"Namespace grouping related constants and helpers.\",\n \"Exported constant within namespace.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 301,\n \"end_line_number\": 301,\n \"line_range\": [\n 301,\n 301\n ],\n \"text\": \"@brief Exported constant within namespace.\",\n \"text_lines\": [\n \"@brief Exported constant within namespace.\"\n ]\n },\n {\n \"start_line_number\": 304,\n \"end_line_number\": 308,\n \"line_range\": [\n 304,\n 308\n ],\n \"text\": \"@brief Helper function scoped to namespace. @param val Numeric input to double. @return The doubled value.\",\n \"text_lines\": [\n \"@brief Helper function scoped to namespace. @param val Numeric input to double. @return The doubled value.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 310,\n \"text\": \"return val * 2;\"\n }\n ]\n },\n {\n \"start_line_number\": 309,\n \"end_line_number\": 311,\n \"line_range\": [\n 309,\n 311\n ],\n \"declaration_order_index\": 23,\n \"symbol_name\": \"double\",\n \"qualified_name\": \"MyNS.double\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"export function double(val: number): number\",\n \"parent_symbol_name\": \"MyNS\",\n \"parent_qualified_name\": \"MyNS\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Helper function scoped to namespace.\",\n \"doxygen\": {\n \"brief\": [\n \"Helper function scoped to namespace.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"val\",\n \"description\": \"Numeric input to double.\"\n }\n ],\n \"returns\": [\n \"The doubled value.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 310,\n \"text\": \"return val * 2;\"\n }\n ]\n },\n {\n \"start_line_number\": 320,\n \"end_line_number\": 323,\n \"line_range\": [\n 320,\n 323\n ],\n \"declaration_order_index\": 24,\n \"symbol_name\": \"MyMod\",\n \"qualified_name\": \"MyMod\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"declare module MyMod\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Ambient module declaration for external library typings.\",\n \"doxygen\": {\n \"brief\": [\n \"Ambient module declaration for external library typings.\",\n \"Version string exposed by the external module.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 321,\n \"end_line_number\": 321,\n \"line_range\": [\n 321,\n 321\n ],\n \"text\": \"@brief Version string exposed by the external module.\",\n \"text_lines\": [\n \"@brief Version string exposed by the external module.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 332,\n \"end_line_number\": 335,\n \"line_range\": [\n 332,\n 335\n ],\n \"declaration_order_index\": 25,\n \"symbol_name\": \"Decorated\",\n \"qualified_name\": \"Decorated\",\n \"symbol_kind\": \"CLASS\",\n \"type_label\": \"CLASS\",\n \"signature_text\": \"class Decorated\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"decorator_text\": \"@Component\",\n \"attached_comment_summary_text\": \"Template string for rendering.\",\n \"doxygen\": {\n \"brief\": [\n \"Template string for rendering.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 333,\n \"end_line_number\": 333,\n \"line_range\": [\n 333,\n 333\n ],\n \"text\": \"@brief Template string for rendering.\",\n \"text_lines\": [\n \"@brief Template string for rendering.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 345,\n \"end_line_number\": 351,\n \"line_range\": [\n 345,\n 351\n ],\n \"declaration_order_index\": 26,\n \"symbol_name\": \"isUser\",\n \"qualified_name\": \"isUser\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function isUser(value: unknown): value is User\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Type guard narrowing unknown to User interface.\",\n \"doxygen\": {\n \"brief\": [\n \"Type guard narrowing unknown to User interface.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Unknown input to validate.\"\n }\n ],\n \"returns\": [\n \"True if value conforms to User shape.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 347,\n \"text\": \"return false;\"\n },\n {\n \"line_number\": 350,\n \"text\": \"return typeof obj.name === 'string' && typeof obj.age === 'number';\"\n }\n ]\n },\n {\n \"start_line_number\": 373,\n \"end_line_number\": 375,\n \"line_range\": [\n 373,\n 375\n ],\n \"declaration_order_index\": 27,\n \"symbol_name\": \"makeOptional\",\n \"qualified_name\": \"makeOptional\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function makeOptional<T extends object>(obj: T): Partial<T>\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Convert all properties of an object to optional at runtime.\\n@tparam T Source object type.\",\n \"doxygen\": {\n \"brief\": [\n \"Convert all properties of an object to optional at runtime.\\n@tparam T Source object type.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"obj\",\n \"description\": \"The source object.\"\n }\n ],\n \"returns\": [\n \"A partial copy of the object.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 374,\n \"text\": \"return { ...obj };\"\n }\n ]\n },\n {\n \"start_line_number\": 385,\n \"end_line_number\": 385,\n \"line_range\": [\n 385,\n 385\n ],\n \"declaration_order_index\": 28,\n \"symbol_name\": \"CacheEntry\",\n \"qualified_name\": \"CacheEntry\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"interface CacheEntry { key: string; value: string }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"decorator_text\": \"@memoized\",\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 386,\n \"end_line_number\": 386,\n \"line_range\": [\n 386,\n 386\n ],\n \"declaration_order_index\": 29,\n \"symbol_name\": \"Runner\",\n \"qualified_name\": \"Runner\",\n \"symbol_kind\": \"INTERFACE\",\n \"type_label\": \"INTERFACE\",\n \"signature_text\": \"export interface Runner { run(): Promise<void> }\",\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\": 387,\n \"end_line_number\": 387,\n \"line_range\": [\n 387,\n 387\n ],\n \"declaration_order_index\": 30,\n \"symbol_name\": \"ModeTs\",\n \"qualified_name\": \"ModeTs\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum ModeTs { 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\": 388,\n \"end_line_number\": 388,\n \"line_range\": [\n 388,\n 388\n ],\n \"declaration_order_index\": 31,\n \"symbol_name\": \"StatusTs\",\n \"qualified_name\": \"StatusTs\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum StatusTs { Ready, Busy }\",\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\": 389,\n \"end_line_number\": 389,\n \"line_range\": [\n 389,\n 389\n ],\n \"declaration_order_index\": 32,\n \"symbol_name\": \"ExtNSOne\",\n \"qualified_name\": \"ExtNSOne\",\n \"symbol_kind\": \"NAMESPACE\",\n \"type_label\": \"NAMESPACE\",\n \"signature_text\": \"namespace ExtNSOne { export const v = 1; }\",\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\": 390,\n \"end_line_number\": 390,\n \"line_range\": [\n 390,\n 390\n ],\n \"declaration_order_index\": 33,\n \"symbol_name\": \"ExtNSTwo\",\n \"qualified_name\": \"ExtNSTwo\",\n \"symbol_kind\": \"NAMESPACE\",\n \"type_label\": \"NAMESPACE\",\n \"signature_text\": \"namespace ExtNSTwo { export const v = 2; }\",\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\": 391,\n \"end_line_number\": 391,\n \"line_range\": [\n 391,\n 391\n ],\n \"declaration_order_index\": 34,\n \"symbol_name\": \"ExtNSThree\",\n \"qualified_name\": \"ExtNSThree\",\n \"symbol_kind\": \"NAMESPACE\",\n \"type_label\": \"NAMESPACE\",\n \"signature_text\": \"namespace ExtNSThree { export const v = 3; }\",\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\": 392,\n \"end_line_number\": 392,\n \"line_range\": [\n 392,\n 392\n ],\n \"declaration_order_index\": 35,\n \"symbol_name\": \"ExtNSFour\",\n \"qualified_name\": \"ExtNSFour\",\n \"symbol_kind\": \"NAMESPACE\",\n \"type_label\": \"NAMESPACE\",\n \"signature_text\": \"namespace ExtNSFour { export const v = 4; }\",\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\": 393,\n \"end_line_number\": 393,\n \"line_range\": [\n 393,\n 393\n ],\n \"declaration_order_index\": 36,\n \"symbol_name\": \"ExtOne\",\n \"qualified_name\": \"ExtOne\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"declare module ExtOne { export const one: number; }\",\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\": 394,\n \"end_line_number\": 394,\n \"line_range\": [\n 394,\n 394\n ],\n \"declaration_order_index\": 37,\n \"symbol_name\": \"ExtTwo\",\n \"qualified_name\": \"ExtTwo\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"module ExtTwo { export const two = 2; }\",\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\": 395,\n \"end_line_number\": 395,\n \"line_range\": [\n 395,\n 395\n ],\n \"declaration_order_index\": 38,\n \"symbol_name\": \"ExtThree\",\n \"qualified_name\": \"ExtThree\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"module ExtThree { export const three = 3; }\",\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\": 396,\n \"end_line_number\": 396,\n \"line_range\": [\n 396,\n 396\n ],\n \"declaration_order_index\": 39,\n \"symbol_name\": \"ExtFour\",\n \"qualified_name\": \"ExtFour\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"module ExtFour { export const four = 4; }\",\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\": 404,\n \"end_line_number\": 404,\n \"line_range\": [\n 404,\n 404\n ],\n \"declaration_order_index\": 40,\n \"symbol_name\": \"reqCoverTs1\",\n \"qualified_name\": \"reqCoverTs1\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function reqCoverTs1(value: number): number { return value + 1; }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\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 \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 411,\n \"end_line_number\": 411,\n \"line_range\": [\n 411,\n 411\n ],\n \"declaration_order_index\": 41,\n \"symbol_name\": \"reqCoverTs2\",\n \"qualified_name\": \"reqCoverTs2\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function reqCoverTs2(value: number): number { return value + 2; }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\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\": 418,\n \"end_line_number\": 418,\n \"line_range\": [\n 418,\n 418\n ],\n \"declaration_order_index\": 42,\n \"symbol_name\": \"reqCoverTs3\",\n \"qualified_name\": \"reqCoverTs3\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function reqCoverTs3(value: number): number { return value + 3; }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\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\": 425,\n \"end_line_number\": 425,\n \"line_range\": [\n 425,\n 425\n ],\n \"declaration_order_index\": 43,\n \"symbol_name\": \"reqCoverTs4\",\n \"qualified_name\": \"reqCoverTs4\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function reqCoverTs4(value: number): number { return value + 4; }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\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\": 432,\n \"end_line_number\": 432,\n \"line_range\": [\n 432,\n 432\n ],\n \"declaration_order_index\": 44,\n \"symbol_name\": \"reqCoverTs5\",\n \"qualified_name\": \"reqCoverTs5\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function reqCoverTs5(value: number): number { return value + 5; }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\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\": 8,\n \"end_line_number\": 8,\n \"line_range\": [\n 8,\n 8\n ],\n \"text\": \"Single line comment\",\n \"text_lines\": [\n \"Single line comment\"\n ]\n },\n {\n \"start_line_number\": 9,\n \"end_line_number\": 9,\n \"line_range\": [\n 9,\n 9\n ],\n \"text\": \"Multi-line comment\",\n \"text_lines\": [\n \"Multi-line comment\"\n ]\n },\n {\n \"start_line_number\": 13,\n \"end_line_number\": 13,\n \"line_range\": [\n 13,\n 13\n ],\n \"text\": \"── Interfaces ─────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Interfaces ─────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 20,\n \"end_line_number\": 20,\n \"line_range\": [\n 20,\n 20\n ],\n \"text\": \"@brief Display name of the user.\",\n \"text_lines\": [\n \"@brief Display name of the user.\"\n ]\n },\n {\n \"start_line_number\": 22,\n \"end_line_number\": 22,\n \"line_range\": [\n 22,\n 22\n ],\n \"text\": \"@brief Age in years; must be non-negative.\",\n \"text_lines\": [\n \"@brief Age in years; must be non-negative.\"\n ]\n },\n {\n \"start_line_number\": 24,\n \"end_line_number\": 24,\n \"line_range\": [\n 24,\n 24\n ],\n \"text\": \"@brief Optional email address.\",\n \"text_lines\": [\n \"@brief Optional email address.\"\n ]\n },\n {\n \"start_line_number\": 26,\n \"end_line_number\": 26,\n \"line_range\": [\n 26,\n 26\n ],\n \"text\": \"@brief Read-only unique identifier.\",\n \"text_lines\": [\n \"@brief Read-only unique identifier.\"\n ]\n },\n {\n \"start_line_number\": 36,\n \"end_line_number\": 36,\n \"line_range\": [\n 36,\n 36\n ],\n \"text\": \"@brief Find an entity by its ID.\",\n \"text_lines\": [\n \"@brief Find an entity by its ID.\"\n ]\n },\n {\n \"start_line_number\": 38,\n \"end_line_number\": 38,\n \"line_range\": [\n 38,\n 38\n ],\n \"text\": \"@brief Persist an entity, returning the saved version.\",\n \"text_lines\": [\n \"@brief Persist an entity, returning the saved version.\"\n ]\n },\n {\n \"start_line_number\": 40,\n \"end_line_number\": 40,\n \"line_range\": [\n 40,\n 40\n ],\n \"text\": \"@brief Delete an entity by ID.\",\n \"text_lines\": [\n \"@brief Delete an entity by ID.\"\n ]\n },\n {\n \"start_line_number\": 49,\n \"end_line_number\": 49,\n \"line_range\": [\n 49,\n 49\n ],\n \"text\": \"@brief Convert to a JSON-compatible string.\",\n \"text_lines\": [\n \"@brief Convert to a JSON-compatible string.\"\n ]\n },\n {\n \"start_line_number\": 80,\n \"end_line_number\": 80,\n \"line_range\": [\n 80,\n 80\n ],\n \"text\": \"── Enums ──────────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Enums ──────────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 98,\n \"end_line_number\": 98,\n \"line_range\": [\n 98,\n 98\n ],\n \"text\": \"@brief Red channel identifier.\",\n \"text_lines\": [\n \"@brief Red channel identifier.\"\n ]\n },\n {\n \"start_line_number\": 100,\n \"end_line_number\": 100,\n \"line_range\": [\n 100,\n 100\n ],\n \"text\": \"@brief Blue channel identifier.\",\n \"text_lines\": [\n \"@brief Blue channel identifier.\"\n ]\n },\n {\n \"start_line_number\": 102,\n \"end_line_number\": 102,\n \"line_range\": [\n 102,\n 102\n ],\n \"text\": \"@brief Green channel, explicitly set to 10.\",\n \"text_lines\": [\n \"@brief Green channel, explicitly set to 10.\"\n ]\n },\n {\n \"start_line_number\": 116,\n \"end_line_number\": 116,\n \"line_range\": [\n 116,\n 116\n ],\n \"text\": \"── Abstract class ─────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Abstract class ─────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 123,\n \"end_line_number\": 126,\n \"line_range\": [\n 123,\n 126\n ],\n \"text\": \"@brief Abstract render method to be implemented by subclasses. @return void\",\n \"text_lines\": [\n \"@brief Abstract render method to be implemented by subclasses.\",\n \"@return void\"\n ]\n },\n {\n \"start_line_number\": 129,\n \"end_line_number\": 131,\n \"line_range\": [\n 129,\n 131\n ],\n \"text\": \"@brief Template method calling render with pre/post hooks.\",\n \"text_lines\": [\n \"@brief Template method calling render with pre/post hooks.\"\n ]\n },\n {\n \"start_line_number\": 133,\n \"end_line_number\": 133,\n \"line_range\": [\n 133,\n 133\n ],\n \"text\": \"Pre-render hook\",\n \"text_lines\": [\n \"Pre-render hook\"\n ]\n },\n {\n \"start_line_number\": 136,\n \"end_line_number\": 136,\n \"line_range\": [\n 136,\n 136\n ],\n \"text\": \"Post-render hook\",\n \"text_lines\": [\n \"Post-render hook\"\n ]\n },\n {\n \"start_line_number\": 141,\n \"end_line_number\": 141,\n \"line_range\": [\n 141,\n 141\n ],\n \"text\": \"── Concrete class with generics ───────────────────────────────────────\",\n \"text_lines\": [\n \"── Concrete class with generics ───────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 149,\n \"end_line_number\": 149,\n \"line_range\": [\n 149,\n 149\n ],\n \"text\": \"@brief Stored numeric value.\",\n \"text_lines\": [\n \"@brief Stored numeric value.\"\n ]\n },\n {\n \"start_line_number\": 152,\n \"end_line_number\": 152,\n \"line_range\": [\n 152,\n 152\n ],\n \"text\": \"@brief Optional label for display.\",\n \"text_lines\": [\n \"@brief Optional label for display.\"\n ]\n },\n {\n \"start_line_number\": 155,\n \"end_line_number\": 157,\n \"line_range\": [\n 155,\n 157\n ],\n \"text\": \"@brief Render the value to console output.\",\n \"text_lines\": [\n \"@brief Render the value to console output.\"\n ]\n },\n {\n \"start_line_number\": 169,\n \"end_line_number\": 169,\n \"line_range\": [\n 169,\n 169\n ],\n \"text\": \"@brief Internal array storage for items.\",\n \"text_lines\": [\n \"@brief Internal array storage for items.\"\n ]\n },\n {\n \"start_line_number\": 172,\n \"end_line_number\": 175,\n \"line_range\": [\n 172,\n 175\n ],\n \"text\": \"@brief Add an item to the container. @param item Item conforming to Serializable.\",\n \"text_lines\": [\n \"@brief Add an item to the container.\",\n \"@param item Item conforming to Serializable.\"\n ]\n },\n {\n \"start_line_number\": 180,\n \"end_line_number\": 183,\n \"line_range\": [\n 180,\n 183\n ],\n \"text\": \"@brief Serialize all items to a JSON array string. @return JSON string of all serialized items.\",\n \"text_lines\": [\n \"@brief Serialize all items to a JSON array string.\",\n \"@return JSON string of all serialized items.\"\n ]\n },\n {\n \"start_line_number\": 188,\n \"end_line_number\": 192,\n \"line_range\": [\n 188,\n 192\n ],\n \"text\": \"@brief Find first item matching a predicate. @param predicate Test function applied to each item. @return The first matching item or undefined.\",\n \"text_lines\": [\n \"@brief Find first item matching a predicate.\",\n \"@param predicate Test function applied to each item.\",\n \"@return The first matching item or undefined.\"\n ]\n },\n {\n \"start_line_number\": 203,\n \"end_line_number\": 203,\n \"line_range\": [\n 203,\n 203\n ],\n \"text\": \"── Class implementing multiple interfaces ─────────────────────────────\",\n \"text_lines\": [\n \"── Class implementing multiple interfaces ─────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 221,\n \"end_line_number\": 224,\n \"line_range\": [\n 221,\n 224\n ],\n \"text\": \"@brief Serialize user to JSON string. @return JSON representation of the user.\",\n \"text_lines\": [\n \"@brief Serialize user to JSON string.\",\n \"@return JSON representation of the user.\"\n ]\n },\n {\n \"start_line_number\": 230,\n \"end_line_number\": 230,\n \"line_range\": [\n 230,\n 230\n ],\n \"text\": \"── Functions ──────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Functions ──────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 241,\n \"end_line_number\": 241,\n \"line_range\": [\n 241,\n 241\n ],\n \"text\": \"── Function overloads ─────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Function overloads ─────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 258,\n \"end_line_number\": 258,\n \"line_range\": [\n 258,\n 258\n ],\n \"text\": \"── Arrow function with type annotation ────────────────────────────────\",\n \"text_lines\": [\n \"── Arrow function with type annotation ────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 268,\n \"end_line_number\": 274,\n \"line_range\": [\n 268,\n 274\n ],\n \"text\": \"@function transform @brief Generic transform function with constraint. @tparam T Must have a toString method. ...\",\n \"text_lines\": [\n \"@function transform\",\n \"@brief Generic transform function with constraint.\",\n \"@tparam T Must have a toString method.\",\n \"...\"\n ]\n },\n {\n \"start_line_number\": 279,\n \"end_line_number\": 279,\n \"line_range\": [\n 279,\n 279\n ],\n \"text\": \"── Async function with generic return ─────────────────────────────────\",\n \"text_lines\": [\n \"── Async function with generic return ─────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 290,\n \"end_line_number\": 290,\n \"line_range\": [\n 290,\n 290\n ],\n \"text\": \"Parse JSON and cast to expected type\",\n \"text_lines\": [\n \"Parse JSON and cast to expected type\"\n ]\n },\n {\n \"start_line_number\": 294,\n \"end_line_number\": 294,\n \"line_range\": [\n 294,\n 294\n ],\n \"text\": \"── Namespace ──────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Namespace ──────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 301,\n \"end_line_number\": 301,\n \"line_range\": [\n 301,\n 301\n ],\n \"text\": \"@brief Exported constant within namespace.\",\n \"text_lines\": [\n \"@brief Exported constant within namespace.\"\n ]\n },\n {\n \"start_line_number\": 314,\n \"end_line_number\": 314,\n \"line_range\": [\n 314,\n 314\n ],\n \"text\": \"── Module declaration ─────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Module declaration ─────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 321,\n \"end_line_number\": 321,\n \"line_range\": [\n 321,\n 321\n ],\n \"text\": \"@brief Version string exposed by the external module.\",\n \"text_lines\": [\n \"@brief Version string exposed by the external module.\"\n ]\n },\n {\n \"start_line_number\": 325,\n \"end_line_number\": 325,\n \"line_range\": [\n 325,\n 325\n ],\n \"text\": \"── Decorator ──────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Decorator ──────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 333,\n \"end_line_number\": 333,\n \"line_range\": [\n 333,\n 333\n ],\n \"text\": \"@brief Template string for rendering.\",\n \"text_lines\": [\n \"@brief Template string for rendering.\"\n ]\n },\n {\n \"start_line_number\": 337,\n \"end_line_number\": 337,\n \"line_range\": [\n 337,\n 337\n ],\n \"text\": \"── Type guards and narrowing ──────────────────────────────────────────\",\n \"text_lines\": [\n \"── Type guards and narrowing ──────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 353,\n \"end_line_number\": 353,\n \"line_range\": [\n 353,\n 353\n ],\n \"text\": \"── Satisfies operator (TS 4.9) ────────────────────────────────────────\",\n \"text_lines\": [\n \"── Satisfies operator (TS 4.9) ────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 355,\n \"end_line_number\": 358,\n \"line_range\": [\n 355,\n 358\n ],\n \"text\": \"@brief Configuration validated with satisfies for type checking without widening the inferred type.\",\n \"text_lines\": [\n \"@brief Configuration validated with satisfies for type checking\",\n \"without widening the inferred type.\"\n ]\n },\n {\n \"start_line_number\": 364,\n \"end_line_number\": 364,\n \"line_range\": [\n 364,\n 364\n ],\n \"text\": \"── Mapped type function ───────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Mapped type function ───────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 377,\n \"end_line_number\": 377,\n \"line_range\": [\n 377,\n 377\n ],\n \"text\": \"coverage extension block\",\n \"text_lines\": [\n \"coverage extension block\"\n ]\n },\n {\n \"start_line_number\": 398,\n \"end_line_number\": 398,\n \"line_range\": [\n 398,\n 398\n ],\n \"text\": \"REQ-COVER-SRS-231 START\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 START\"\n ]\n },\n {\n \"start_line_number\": 399,\n \"end_line_number\": 399,\n \"line_range\": [\n 399,\n 399\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 1\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 1\"\n ]\n },\n {\n \"start_line_number\": 400,\n \"end_line_number\": 400,\n \"line_range\": [\n 400,\n 400\n ],\n \"text\": \"@brief Coverage helper construct 1.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 1.\"\n ]\n },\n {\n \"start_line_number\": 406,\n \"end_line_number\": 406,\n \"line_range\": [\n 406,\n 406\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 2\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 2\"\n ]\n },\n {\n \"start_line_number\": 407,\n \"end_line_number\": 407,\n \"line_range\": [\n 407,\n 407\n ],\n \"text\": \"@brief Coverage helper construct 2.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 2.\"\n ]\n },\n {\n \"start_line_number\": 413,\n \"end_line_number\": 413,\n \"line_range\": [\n 413,\n 413\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 3\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 3\"\n ]\n },\n {\n \"start_line_number\": 414,\n \"end_line_number\": 414,\n \"line_range\": [\n 414,\n 414\n ],\n \"text\": \"@brief Coverage helper construct 3.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 3.\"\n ]\n },\n {\n \"start_line_number\": 420,\n \"end_line_number\": 420,\n \"line_range\": [\n 420,\n 420\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 4\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 4\"\n ]\n },\n {\n \"start_line_number\": 421,\n \"end_line_number\": 421,\n \"line_range\": [\n 421,\n 421\n ],\n \"text\": \"@brief Coverage helper construct 4.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 4.\"\n ]\n },\n {\n \"start_line_number\": 427,\n \"end_line_number\": 427,\n \"line_range\": [\n 427,\n 427\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 5\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 5\"\n ]\n },\n {\n \"start_line_number\": 428,\n \"end_line_number\": 428,\n \"line_range\": [\n 428,\n 428\n ],\n \"text\": \"@brief Coverage helper construct 5.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 5.\"\n ]\n },\n {\n \"start_line_number\": 434,\n \"end_line_number\": 434,\n \"line_range\": [\n 434,\n 434\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_typescript.ts | TypeScript | 434L | 45 symbols | 5 imports | 102 comments\n> Path: `tests/fixtures/fixture_typescript.ts`\n- @brief Comprehensive TypeScript test fixture for parser validation.\n- @details Covers conditional types, mapped types, template literal types,\nsatisfies operator, overload signatures, discriminated unions,\nmodule augmentation, decorators, generic constraints, and utility types.\n\n## Imports\n```\nimport { Component } from 'react';\nimport type { ReactNode } from 'react';\nimport { Injectable } from 'inversify';\nimport { Observable } from 'rxjs';\nimport { FC } from 'react';\n```\n\n## Definitions\n\n### iface `interface User` (L19-28)\n- @brief Core user entity with identity fields.\n- @brief Display name of the user.\n- @brief Age in years; must be non-negative.\n\n### iface `interface Repository<T>` (L35-42)\n- @brief Generic CRUD repository with type parameter.\n@tparam T Entity type managed by this repository.\n- @brief Find an entity by its ID.\n- @brief Persist an entity, returning the saved version.\n\n### iface `interface Serializable` (L48-51)\n- @brief Marks objects that can be serialized to JSON.\n- @brief Convert to a JSON-compatible string.\n\n- type `type StringOrNumber = string | number;` (L56)\n- @brief Union type for values that can be string or number. */\n- type `type DeepReadonly<T> = {` (L59)\n- @brief Mapped type making all properties of T optional and readonly. */\n- type `type Unwrap<T> = T extends Array<infer U> ? U : T;` (L64)\n- @brief Conditional type extracting array element type. */\n- type `type PixelValue = `${number}px`;` (L67)\n- @brief Template literal type for CSS pixel values. */\n- type `type ApiResponse<T> =` (L70)\n- @brief Discriminated union tag for API responses. */\n- type `type KeysOfType<T, V> = {` (L76)\n- @brief Extract keys of T whose values extend a given type. */\n### enum `const enum Direction` (L86-91)\n- @brief Const enum for cardinal directions (inlined at compile time).\n\n### enum `enum Color` (L97-104)\n- @brief Regular enum with numeric values for color channels.\n- @brief Red channel identifier.\n- @brief Blue channel identifier.\n\n### enum `enum HttpStatus` (L110-114)\n- @brief String enum mapping HTTP status codes.\n\n### class `export abstract class Base` (L122-139)\n- @brief Abstract base class with template method pattern.\n- @brief Abstract render method to be implemented by subclasses.\n- @return void\n\n### class `class Derived extends Base` : Base (L148-161)\n- @brief Concrete implementation with typed value storage.\n- @brief Stored numeric value.\n\n### class `class TypedContainer<T extends Serializable>` : Serializable> (L168-201)\n- @brief Generic container with constraint on Serializable.\n@tparam T Must implement Serializable interface.\n- @brief Internal array storage for items.\n\n### class `class UserEntity implements User, Serializable` : User, Serializable (L210-228)\n- @brief Full user entity implementing both User and Serializable.\n\n### fn `export function greet(name: string): void` (L237-239)\n- @brief Greet a person by name with type-safe parameter.\n- @param name The person's name to display.\n\n### fn `function parse(input: string): number` (L249-256)\n- @brief Parse input with overloaded signatures for type safety.\n@overload Parse a string input into a number.\n@overload Parse a number input into a string.\n\n### fn `function parse(input: number): string` (L250-256)\n\n### fn `function parse(input: string | number): string | number` (L251-256)\n\n### fn `const add = (a: number): number => a + 1` (L266-277)\n- @brief Add one to a number (arrow function syntax).\n- @brief Generic transform function with constraint. @tparam T Must have a toString method.\n- @param a The input number.\n- @param value Input value to transform.\n- @return The incremented value.\n- @return String representation of the value.\n\n### fn `async function fetchEntity<T>(url: string): Promise<T>` (L288-292)\n- @brief Fetch and deserialize a typed entity from an API.\n@tparam T The expected response entity type.\n- @param url Endpoint URL.\n- @return Promise resolving to the typed entity.\n\n### ns `export namespace MyNS` (L300-312)\n- @brief Namespace grouping related constants and helpers.\n- @brief Exported constant within namespace.\n- fn `export function double(val: number): number` (L309-311)\n - @brief Helper function scoped to namespace.\n - @param val Numeric input to double.\n - @return The doubled value.\n\n### mod `declare module MyMod` (L320-323)\n- @brief Ambient module declaration for external library typings.\n- @brief Version string exposed by the external module.\n\n### class `class Decorated` `@Component` (L332-335)\n- @brief Template string for rendering.\n\n### fn `function isUser(value: unknown): value is User` (L345-351)\n- @brief Type guard narrowing unknown to User interface.\n- @param value Unknown input to validate.\n- @return True if value conforms to User shape.\n\n### fn `function makeOptional<T extends object>(obj: T): Partial<T>` (L373-375)\n- @brief Convert all properties of an object to optional at runtime.\n@tparam T Source object type.\n- @param obj The source object.\n- @return A partial copy of the object.\n\n- iface `interface CacheEntry { key: string; value: string }` (L385)\n- iface `export interface Runner { run(): Promise<void> }` (L386)\n- enum `enum ModeTs { Fast, Safe }` (L387)\n- enum `enum StatusTs { Ready, Busy }` (L388)\n- ns `namespace ExtNSOne { export const v = 1; }` (L389)\n- ns `namespace ExtNSTwo { export const v = 2; }` (L390)\n- ns `namespace ExtNSThree { export const v = 3; }` (L391)\n- ns `namespace ExtNSFour { export const v = 4; }` (L392)\n- mod `declare module ExtOne { export const one: number; }` (L393)\n- mod `module ExtTwo { export const two = 2; }` (L394)\n- mod `module ExtThree { export const three = 3; }` (L395)\n- mod `module ExtFour { export const four = 4; }` (L396)\n- fn `function reqCoverTs1(value: number): number { return value + 1; }` (L404)\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 `function reqCoverTs2(value: number): number { return value + 2; }` (L411)\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 `function reqCoverTs3(value: number): number { return value + 3; }` (L418)\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 `function reqCoverTs4(value: number): number { return value + 4; }` (L425)\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 `function reqCoverTs5(value: number): number { return value + 5; }` (L432)\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## Symbol Index\n|Symbol|Kind|Vis|Lines|Sig|\n|---|---|---|---|---|\n|`User`|iface||19-28|interface User|\n|`Repository`|iface||35-42|interface Repository<T>|\n|`Serializable`|iface||48-51|interface Serializable|\n|`StringOrNumber`|type||56||\n|`DeepReadonly`|type||59||\n|`Unwrap`|type||64||\n|`PixelValue`|type||67||\n|`ApiResponse`|type||70||\n|`KeysOfType`|type||76||\n|`Direction`|enum||86-91|const enum Direction|\n|`Color`|enum||97-104|enum Color|\n|`HttpStatus`|enum||110-114|enum HttpStatus|\n|`Base`|class||122-139|export abstract class Base|\n|`Derived`|class||148-161|class Derived extends Base|\n|`TypedContainer`|class||168-201|class TypedContainer<T extends Serializable>|\n|`UserEntity`|class||210-228|class UserEntity implements User, Serializable|\n|`greet`|fn||237-239|export function greet(name: string): void|\n|`parse`|fn||249-256|function parse(input: string): number|\n|`parse`|fn||250-256|function parse(input: number): string|\n|`parse`|fn||251-256|function parse(input: string | number): string | number|\n|`add`|fn||266-277|const add = (a: number): number => a + 1|\n|`fetchEntity`|fn||288-292|async function fetchEntity<T>(url: string): Promise<T>|\n|`MyNS`|ns||300-312||\n|`MyNS.double`|fn||309-311|export function double(val: number): number|\n|`MyMod`|mod||320-323||\n|`Decorated`|class||332-335|class Decorated|\n|`isUser`|fn||345-351|function isUser(value: unknown): value is User|\n|`makeOptional`|fn||373-375|function makeOptional<T extends object>(obj: T): Partial<T>|\n|`CacheEntry`|iface||385|interface CacheEntry { key: string; value: string }|\n|`Runner`|iface||386|export interface Runner { run(): Promise<void> }|\n|`ModeTs`|enum||387|enum ModeTs { Fast, Safe }|\n|`StatusTs`|enum||388|enum StatusTs { Ready, Busy }|\n|`ExtNSOne`|ns||389||\n|`ExtNSTwo`|ns||390||\n|`ExtNSThree`|ns||391||\n|`ExtNSFour`|ns||392||\n|`ExtOne`|mod||393||\n|`ExtTwo`|mod||394||\n|`ExtThree`|mod||395||\n|`ExtFour`|mod||396||\n|`reqCoverTs1`|fn||404|function reqCoverTs1(value: number): number { return valu...|\n|`reqCoverTs2`|fn||411|function reqCoverTs2(value: number): number { return valu...|\n|`reqCoverTs3`|fn||418|function reqCoverTs3(value: number): number { return valu...|\n|`reqCoverTs4`|fn||425|function reqCoverTs4(value: number): number { return valu...|\n|`reqCoverTs5`|fn||432|function reqCoverTs5(value: number): number { return valu...|\n\n",
|
|
4
4
|
"stderr": ""
|
|
5
5
|
}
|
|
@@ -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_zig.zig\"\n ],\n \"requested_canonical_paths\": [\n \"tests/fixtures/fixture_zig.zig\"\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\": 49,\n \"total_import_count\": 7,\n \"total_comment_count\": 105,\n \"total_standalone_comment_count\": 31,\n \"total_doxygen_field_count\": 57,\n \"symbol_kind_counts\": {\n \"CONSTANT\": 11,\n \"ENUM\": 5,\n \"FUNCTION\": 18,\n \"STRUCT\": 5,\n \"UNION\": 5,\n \"VARIABLE\": 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_zig.zig\"\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_zig.zig\",\n \"relative_path\": \"tests/fixtures/fixture_zig.zig\",\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\": 295,\n \"line_range\": [\n 1,\n 295\n ],\n \"request_index\": 0,\n \"input_path\": \"tests/fixtures/fixture_zig.zig\",\n \"canonical_path\": \"tests/fixtures/fixture_zig.zig\",\n \"absolute_path\": \"<ROOT>/tests/fixtures/fixture_zig.zig\",\n \"file_name\": \"fixture_zig.zig\",\n \"file_extension\": \".zig\",\n \"language_id\": \"zig\",\n \"language_name\": \"Zig\",\n \"status\": \"analyzed\",\n \"exists\": true,\n \"is_file\": true,\n \"import_count\": 7,\n \"symbol_count\": 49,\n \"comment_count\": 105,\n \"standalone_comment_count\": 31,\n \"doxygen_field_count\": 57,\n \"file_description_text\": \"@file fixture_zig.zig\",\n \"imports\": [\n {\n \"start_line_number\": 7,\n \"end_line_number\": 7,\n \"line_range\": [\n 7,\n 7\n ],\n \"import_name\": \"std\",\n \"statement_text\": \"const std = @import(\\\"std\\\");\"\n },\n {\n \"start_line_number\": 8,\n \"end_line_number\": 8,\n \"line_range\": [\n 8,\n 8\n ],\n \"import_name\": \"mem\",\n \"statement_text\": \"const mem = @import(\\\"std\\\").mem;\"\n },\n {\n \"start_line_number\": 243,\n \"end_line_number\": 243,\n \"line_range\": [\n 243,\n 243\n ],\n \"import_name\": \"io\",\n \"statement_text\": \"const io = @import(\\\"std\\\");\"\n },\n {\n \"start_line_number\": 244,\n \"end_line_number\": 244,\n \"line_range\": [\n 244,\n 244\n ],\n \"import_name\": \"fs\",\n \"statement_text\": \"const fs = @import(\\\"std\\\");\"\n },\n {\n \"start_line_number\": 245,\n \"end_line_number\": 245,\n \"line_range\": [\n 245,\n 245\n ],\n \"import_name\": \"mem\",\n \"statement_text\": \"const mem = @import(\\\"std\\\");\"\n },\n {\n \"start_line_number\": 246,\n \"end_line_number\": 246,\n \"line_range\": [\n 246,\n 246\n ],\n \"import_name\": \"math\",\n \"statement_text\": \"const math = @import(\\\"std\\\");\"\n },\n {\n \"start_line_number\": 247,\n \"end_line_number\": 247,\n \"line_range\": [\n 247,\n 247\n ],\n \"import_name\": \"json\",\n \"statement_text\": \"const json = @import(\\\"std\\\");\"\n }\n ],\n \"symbols\": [\n {\n \"start_line_number\": 9,\n \"end_line_number\": 9,\n \"line_range\": [\n 9,\n 9\n ],\n \"declaration_order_index\": 0,\n \"symbol_name\": \"Allocator\",\n \"qualified_name\": \"Allocator\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const Allocator = std.mem.Allocator\",\n \"visibility\": \"priv\",\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\": 14,\n \"end_line_number\": 16,\n \"line_range\": [\n 14,\n 16\n ],\n \"declaration_order_index\": 1,\n \"symbol_name\": \"main\",\n \"qualified_name\": \"main\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn main() void\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"── Functions ────────────────────────────────────────────────────────\",\n \"attached_comment_lines\": [\n \"── Functions ────────────────────────────────────────────────────────\",\n \"Application entry point; prints a hello message.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 22,\n \"end_line_number\": 24,\n \"line_range\": [\n 22,\n 24\n ],\n \"declaration_order_index\": 2,\n \"symbol_name\": \"add\",\n \"qualified_name\": \"add\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn add(a: i32, b: i32) i32\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@param a First operand.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"a\",\n \"description\": \"First operand.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"b\",\n \"description\": \"Second operand.\"\n }\n ],\n \"returns\": [\n \"Sum of a and b.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 23,\n \"text\": \"return a + b;\"\n }\n ]\n },\n {\n \"start_line_number\": 30,\n \"end_line_number\": 35,\n \"line_range\": [\n 30,\n 35\n ],\n \"declaration_order_index\": 3,\n \"symbol_name\": \"safeDivide\",\n \"qualified_name\": \"safeDivide\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn safeDivide(numerator: i32, denominator: i32) !i32\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@param numerator The dividend.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"numerator\",\n \"description\": \"The dividend.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"denominator\",\n \"description\": \"The divisor; must not be zero.\"\n }\n ],\n \"returns\": [\n \"Quotient or error.DivisionByZero.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 32,\n \"text\": \"return error.DivisionByZero;\"\n },\n {\n \"line_number\": 34,\n \"text\": \"return @divTrunc(numerator, denominator);\"\n }\n ]\n },\n {\n \"start_line_number\": 42,\n \"end_line_number\": 44,\n \"line_range\": [\n 42,\n 44\n ],\n \"declaration_order_index\": 4,\n \"symbol_name\": \"max\",\n \"qualified_name\": \"max\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn max(comptime T: type, a: T, b: T) T\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@param a First value.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"T\",\n \"description\": \"The element type (comptime resolved).\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"a\",\n \"description\": \"First value.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"b\",\n \"description\": \"Second value.\"\n }\n ],\n \"returns\": [\n \"The larger of a and b.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 43,\n \"text\": \"return if (a > b) a else b;\"\n }\n ]\n },\n {\n \"start_line_number\": 51,\n \"end_line_number\": 59,\n \"line_range\": [\n 51,\n 59\n ],\n \"declaration_order_index\": 5,\n \"symbol_name\": \"indexOf\",\n \"qualified_name\": \"indexOf\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn indexOf(comptime T: type, haystack: []const T, needle: T) ?usize\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@param haystack Slice to search.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"T\",\n \"description\": \"Element type.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"haystack\",\n \"description\": \"Slice to search.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"needle\",\n \"description\": \"Value to find.\"\n }\n ],\n \"returns\": [\n \"Index of needle or null if not found.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 57,\n \"end_line_number\": 57,\n \"line_range\": [\n 57,\n 57\n ],\n \"text\": \"Not found — return null optional\",\n \"text_lines\": [\n \"Not found — return null optional\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 54,\n \"text\": \"return i;\"\n },\n {\n \"line_number\": 58,\n \"text\": \"return null;\"\n }\n ]\n },\n {\n \"start_line_number\": 65,\n \"end_line_number\": 67,\n \"line_range\": [\n 65,\n 67\n ],\n \"declaration_order_index\": 6,\n \"symbol_name\": \"comptimeConcat\",\n \"qualified_name\": \"comptimeConcat\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn comptimeConcat(comptime a: []const u8, comptime b: []const u8) []const u8\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@param a First string literal.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"a\",\n \"description\": \"First string literal.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"b\",\n \"description\": \"Second string literal.\"\n }\n ],\n \"returns\": [\n \"Concatenated string at compile time.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 66,\n \"text\": \"return a ++ b;\"\n }\n ]\n },\n {\n \"start_line_number\": 72,\n \"end_line_number\": 78,\n \"line_range\": [\n 72,\n 78\n ],\n \"declaration_order_index\": 7,\n \"symbol_name\": \"createBuffer\",\n \"qualified_name\": \"createBuffer\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn createBuffer(allocator: Allocator) ![]u8\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Function with errdefer for resource cleanup on error paths.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"allocator\",\n \"description\": \"Memory allocator for buffer creation.\"\n }\n ],\n \"returns\": [\n \"Allocated buffer or error.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 75,\n \"end_line_number\": 75,\n \"line_range\": [\n 75,\n 75\n ],\n \"text\": \"Initialize buffer to zero\",\n \"text_lines\": [\n \"Initialize buffer to zero\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 77,\n \"text\": \"return buf;\"\n }\n ]\n },\n {\n \"start_line_number\": 73,\n \"end_line_number\": 73,\n \"line_range\": [\n 73,\n 73\n ],\n \"declaration_order_index\": 8,\n \"symbol_name\": \"buf\",\n \"qualified_name\": \"buf\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const buf = try allocator.alloc(u8, 1024)\",\n \"visibility\": \"priv\",\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\": 84,\n \"end_line_number\": 84,\n \"line_range\": [\n 84,\n 84\n ],\n \"declaration_order_index\": 9,\n \"symbol_name\": \"total\",\n \"qualified_name\": \"total\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"var total: f32 = 0.0\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@param values Slice of floats to sum.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"values\",\n \"description\": \"Slice of floats to sum.\"\n }\n ],\n \"returns\": [\n \"Sum of all elements.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 94,\n \"end_line_number\": 96,\n \"line_range\": [\n 94,\n 96\n ],\n \"declaration_order_index\": 10,\n \"symbol_name\": \"doubleValue\",\n \"qualified_name\": \"doubleValue\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"export fn doubleValue(x: i32) i32\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Extern C-ABI function for FFI interoperability.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"x\",\n \"description\": \"Value to double.\"\n }\n ],\n \"returns\": [\n \"Input multiplied by two.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 95,\n \"text\": \"return x * 2;\"\n }\n ]\n },\n {\n \"start_line_number\": 102,\n \"end_line_number\": 121,\n \"line_range\": [\n 102,\n 121\n ],\n \"declaration_order_index\": 11,\n \"symbol_name\": \"Point\",\n \"qualified_name\": \"Point\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"const Point = struct\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [\n \"distSquared\",\n \"dx\",\n \"dy\",\n \"origin\"\n ],\n \"child_qualified_names\": [\n \"Point.distSquared\",\n \"Point.dx\",\n \"Point.dy\",\n \"Point.origin\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Basic coordinate pair for geometric computations.\",\n \"doxygen\": {\n \"brief\": [\n \"Basic coordinate pair for geometric computations.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 103,\n \"end_line_number\": 103,\n \"line_range\": [\n 103,\n 103\n ],\n \"text\": \"Horizontal coordinate.\",\n \"text_lines\": [\n \"Horizontal coordinate.\"\n ]\n },\n {\n \"start_line_number\": 104,\n \"end_line_number\": 104,\n \"line_range\": [\n 104,\n 104\n ],\n \"text\": \"Vertical coordinate.\",\n \"text_lines\": [\n \"Vertical coordinate.\"\n ]\n },\n {\n \"start_line_number\": 106,\n \"end_line_number\": 106,\n \"line_range\": [\n 106,\n 106\n ],\n \"text\": \"Compute the squared distance to another point.\",\n \"text_lines\": [\n \"Compute the squared distance to another point.\"\n ]\n },\n {\n \"start_line_number\": 107,\n \"end_line_number\": 107,\n \"line_range\": [\n 107,\n 107\n ],\n \"text\": \"@param self This point.\",\n \"text_lines\": [\n \"@param self This point.\"\n ]\n },\n {\n \"start_line_number\": 108,\n \"end_line_number\": 108,\n \"line_range\": [\n 108,\n 108\n ],\n \"text\": \"@param other Target point.\",\n \"text_lines\": [\n \"@param other Target point.\"\n ]\n },\n {\n \"start_line_number\": 109,\n \"end_line_number\": 109,\n \"line_range\": [\n 109,\n 109\n ],\n \"text\": \"@return Distance squared (avoids sqrt).\",\n \"text_lines\": [\n \"@return Distance squared (avoids sqrt).\"\n ]\n },\n {\n \"start_line_number\": 116,\n \"end_line_number\": 116,\n \"line_range\": [\n 116,\n 116\n ],\n \"text\": \"Create a point at the origin (0, 0).\",\n \"text_lines\": [\n \"Create a point at the origin (0, 0).\"\n ]\n },\n {\n \"start_line_number\": 117,\n \"end_line_number\": 117,\n \"line_range\": [\n 117,\n 117\n ],\n \"text\": \"@return A zero-initialized Point.\",\n \"text_lines\": [\n \"@return A zero-initialized Point.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 113,\n \"text\": \"return dx * dx + dy * dy;\"\n },\n {\n \"line_number\": 119,\n \"text\": \"return .{ .x = 0.0, .y = 0.0 };\"\n }\n ]\n },\n {\n \"start_line_number\": 110,\n \"end_line_number\": 114,\n \"line_range\": [\n 110,\n 114\n ],\n \"declaration_order_index\": 12,\n \"symbol_name\": \"distSquared\",\n \"qualified_name\": \"Point.distSquared\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn distSquared(self: Point, other: Point) f64\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Point\",\n \"parent_qualified_name\": \"Point\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"@param self This point.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"self\",\n \"description\": \"This point.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"other\",\n \"description\": \"Target point.\"\n }\n ],\n \"returns\": [\n \"Distance squared (avoids sqrt).\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 113,\n \"text\": \"return dx * dx + dy * dy;\"\n }\n ]\n },\n {\n \"start_line_number\": 111,\n \"end_line_number\": 111,\n \"line_range\": [\n 111,\n 111\n ],\n \"declaration_order_index\": 13,\n \"symbol_name\": \"dx\",\n \"qualified_name\": \"Point.dx\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const dx = self.x - other.x\",\n \"visibility\": \"priv\",\n \"parent_symbol_name\": \"Point\",\n \"parent_qualified_name\": \"Point\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 112,\n \"end_line_number\": 112,\n \"line_range\": [\n 112,\n 112\n ],\n \"declaration_order_index\": 14,\n \"symbol_name\": \"dy\",\n \"qualified_name\": \"Point.dy\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const dy = self.y - other.y\",\n \"visibility\": \"priv\",\n \"parent_symbol_name\": \"Point\",\n \"parent_qualified_name\": \"Point\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 118,\n \"end_line_number\": 120,\n \"line_range\": [\n 118,\n 120\n ],\n \"declaration_order_index\": 15,\n \"symbol_name\": \"origin\",\n \"qualified_name\": \"Point.origin\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn origin() Point\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Point\",\n \"parent_qualified_name\": \"Point\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Create a point at the origin (0, 0).\",\n \"doxygen\": {\n \"returns\": [\n \"A zero-initialized Point.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 119,\n \"text\": \"return .{ .x = 0.0, .y = 0.0 };\"\n }\n ]\n },\n {\n \"start_line_number\": 125,\n \"end_line_number\": 130,\n \"line_range\": [\n 125,\n 130\n ],\n \"declaration_order_index\": 16,\n \"symbol_name\": \"PackedFlags\",\n \"qualified_name\": \"PackedFlags\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"const PackedFlags = packed struct\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Tests parser handling of packed layout specifier.\",\n \"doxygen\": {\n \"brief\": [\n \"Tests parser handling of packed layout specifier.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 126,\n \"end_line_number\": 126,\n \"line_range\": [\n 126,\n 126\n ],\n \"text\": \"Read permission bit.\",\n \"text_lines\": [\n \"Read permission bit.\"\n ]\n },\n {\n \"start_line_number\": 127,\n \"end_line_number\": 127,\n \"line_range\": [\n 127,\n 127\n ],\n \"text\": \"Write permission bit.\",\n \"text_lines\": [\n \"Write permission bit.\"\n ]\n },\n {\n \"start_line_number\": 128,\n \"end_line_number\": 128,\n \"line_range\": [\n 128,\n 128\n ],\n \"text\": \"Execute permission bit.\",\n \"text_lines\": [\n \"Execute permission bit.\"\n ]\n },\n {\n \"start_line_number\": 129,\n \"end_line_number\": 129,\n \"line_range\": [\n 129,\n 129\n ],\n \"text\": \"Reserved bits for alignment.\",\n \"text_lines\": [\n \"Reserved bits for alignment.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 133,\n \"end_line_number\": 144,\n \"line_range\": [\n 133,\n 144\n ],\n \"declaration_order_index\": 17,\n \"symbol_name\": \"Config\",\n \"qualified_name\": \"Config\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"const Config = struct\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [\n \"testing\"\n ],\n \"child_qualified_names\": [\n \"Config.testing\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Configuration struct with defaults via comptime initialization.\",\n \"attached_comment_lines\": [\n \"Configuration struct with defaults via comptime initialization.\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 134,\n \"end_line_number\": 134,\n \"line_range\": [\n 134,\n 134\n ],\n \"text\": \"Configuration name.\",\n \"text_lines\": [\n \"Configuration name.\"\n ]\n },\n {\n \"start_line_number\": 135,\n \"end_line_number\": 135,\n \"line_range\": [\n 135,\n 135\n ],\n \"text\": \"Maximum retry attempts.\",\n \"text_lines\": [\n \"Maximum retry attempts.\"\n ]\n },\n {\n \"start_line_number\": 136,\n \"end_line_number\": 136,\n \"line_range\": [\n 136,\n 136\n ],\n \"text\": \"Timeout in milliseconds.\",\n \"text_lines\": [\n \"Timeout in milliseconds.\"\n ]\n },\n {\n \"start_line_number\": 137,\n \"end_line_number\": 137,\n \"line_range\": [\n 137,\n 137\n ],\n \"text\": \"Debug mode toggle.\",\n \"text_lines\": [\n \"Debug mode toggle.\"\n ]\n },\n {\n \"start_line_number\": 139,\n \"end_line_number\": 139,\n \"line_range\": [\n 139,\n 139\n ],\n \"text\": \"Create a Config for testing with debug enabled.\",\n \"text_lines\": [\n \"Create a Config for testing with debug enabled.\"\n ]\n },\n {\n \"start_line_number\": 140,\n \"end_line_number\": 140,\n \"line_range\": [\n 140,\n 140\n ],\n \"text\": \"@return Config with debug=true.\",\n \"text_lines\": [\n \"@return Config with debug=true.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 142,\n \"text\": \"return .{ .debug = true, .name = \\\"test\\\" };\"\n }\n ]\n },\n {\n \"start_line_number\": 141,\n \"end_line_number\": 143,\n \"line_range\": [\n 141,\n 143\n ],\n \"declaration_order_index\": 18,\n \"symbol_name\": \"testing\",\n \"qualified_name\": \"Config.testing\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn testing() Config\",\n \"visibility\": \"pub\",\n \"parent_symbol_name\": \"Config\",\n \"parent_qualified_name\": \"Config\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Create a Config for testing with debug enabled.\",\n \"doxygen\": {\n \"returns\": [\n \"Config with debug=true.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 142,\n \"text\": \"return .{ .debug = true, .name = \\\"test\\\" };\"\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\": 19,\n \"symbol_name\": \"Color\",\n \"qualified_name\": \"Color\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"const Color = enum\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [\n \"toRgb\"\n ],\n \"child_qualified_names\": [\n \"Color.toRgb\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"── Enum definitions ─────────────────────────────────────────────────\",\n \"attached_comment_lines\": [\n \"── Enum definitions ─────────────────────────────────────────────────\",\n \"Color enumeration for rendering pipeline.\"\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\": \"Red channel.\",\n \"text_lines\": [\n \"Red channel.\"\n ]\n },\n {\n \"start_line_number\": 151,\n \"end_line_number\": 151,\n \"line_range\": [\n 151,\n 151\n ],\n \"text\": \"Green channel.\",\n \"text_lines\": [\n \"Green channel.\"\n ]\n },\n {\n \"start_line_number\": 152,\n \"end_line_number\": 152,\n \"line_range\": [\n 152,\n 152\n ],\n \"text\": \"Blue channel.\",\n \"text_lines\": [\n \"Blue channel.\"\n ]\n },\n {\n \"start_line_number\": 154,\n \"end_line_number\": 154,\n \"line_range\": [\n 154,\n 154\n ],\n \"text\": \"Convert color to its RGB integer value.\",\n \"text_lines\": [\n \"Convert color to its RGB integer value.\"\n ]\n },\n {\n \"start_line_number\": 155,\n \"end_line_number\": 155,\n \"line_range\": [\n 155,\n 155\n ],\n \"text\": \"@param self The color variant.\",\n \"text_lines\": [\n \"@param self The color variant.\"\n ]\n },\n {\n \"start_line_number\": 156,\n \"end_line_number\": 156,\n \"line_range\": [\n 156,\n 156\n ],\n \"text\": \"@return 24-bit RGB integer.\",\n \"text_lines\": [\n \"@return 24-bit RGB integer.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 158,\n \"text\": \"return switch (self) {\"\n }\n ]\n },\n {\n \"start_line_number\": 157,\n \"end_line_number\": 163,\n \"line_range\": [\n 157,\n 163\n ],\n \"declaration_order_index\": 20,\n \"symbol_name\": \"toRgb\",\n \"qualified_name\": \"Color.toRgb\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn toRgb(self: Color) u32\",\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\": \"Convert color to its RGB integer value.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"self\",\n \"description\": \"The color variant.\"\n }\n ],\n \"returns\": [\n \"24-bit RGB integer.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 158,\n \"text\": \"return switch (self) {\"\n }\n ]\n },\n {\n \"start_line_number\": 167,\n \"end_line_number\": 172,\n \"line_range\": [\n 167,\n 172\n ],\n \"declaration_order_index\": 21,\n \"symbol_name\": \"Status\",\n \"qualified_name\": \"Status\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"const Status = enum(u8)\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Status enum with explicit integer tags.\",\n \"attached_comment_lines\": [\n \"Status enum with explicit integer tags.\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 168,\n \"end_line_number\": 168,\n \"line_range\": [\n 168,\n 168\n ],\n \"text\": \"No operation in progress.\",\n \"text_lines\": [\n \"No operation in progress.\"\n ]\n },\n {\n \"start_line_number\": 169,\n \"end_line_number\": 169,\n \"line_range\": [\n 169,\n 169\n ],\n \"text\": \"Currently executing.\",\n \"text_lines\": [\n \"Currently executing.\"\n ]\n },\n {\n \"start_line_number\": 170,\n \"end_line_number\": 170,\n \"line_range\": [\n 170,\n 170\n ],\n \"text\": \"Terminated with error.\",\n \"text_lines\": [\n \"Terminated with error.\"\n ]\n },\n {\n \"start_line_number\": 171,\n \"end_line_number\": 171,\n \"line_range\": [\n 171,\n 171\n ],\n \"text\": \"Completed successfully.\",\n \"text_lines\": [\n \"Completed successfully.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 177,\n \"end_line_number\": 187,\n \"line_range\": [\n 177,\n 187\n ],\n \"declaration_order_index\": 22,\n \"symbol_name\": \"Result\",\n \"qualified_name\": \"Result\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"const Result = union(enum)\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"── Union definitions ────────────────────────────────────────────────\",\n \"attached_comment_lines\": [\n \"── Union definitions ────────────────────────────────────────────────\",\n \"Tagged union for multi-type value storage.\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 178,\n \"end_line_number\": 178,\n \"line_range\": [\n 178,\n 178\n ],\n \"text\": \"Success value.\",\n \"text_lines\": [\n \"Success value.\"\n ]\n },\n {\n \"start_line_number\": 179,\n \"end_line_number\": 179,\n \"line_range\": [\n 179,\n 179\n ],\n \"text\": \"Error message string.\",\n \"text_lines\": [\n \"Error message string.\"\n ]\n },\n {\n \"start_line_number\": 181,\n \"end_line_number\": 181,\n \"line_range\": [\n 181,\n 181\n ],\n \"text\": \"Check if the result represents success.\",\n \"text_lines\": [\n \"Check if the result represents success.\"\n ]\n },\n {\n \"start_line_number\": 182,\n \"end_line_number\": 182,\n \"line_range\": [\n 182,\n 182\n ],\n \"text\": \"@param self The result to inspect.\",\n \"text_lines\": [\n \"@param self The result to inspect.\"\n ]\n },\n {\n \"start_line_number\": 183,\n \"end_line_number\": 183,\n \"line_range\": [\n 183,\n 183\n ],\n \"text\": \"@return True if variant is ok.\",\n \"text_lines\": [\n \"@return True if variant is ok.\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 185,\n \"text\": \"return self == .ok;\"\n }\n ]\n },\n {\n \"start_line_number\": 184,\n \"end_line_number\": 186,\n \"line_range\": [\n 184,\n 186\n ],\n \"declaration_order_index\": 23,\n \"symbol_name\": \"isOk\",\n \"qualified_name\": \"isOk\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"pub fn isOk(self: Result) bool\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Check if the result represents success.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"self\",\n \"description\": \"The result to inspect.\"\n }\n ],\n \"returns\": [\n \"True if variant is ok.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 185,\n \"text\": \"return self == .ok;\"\n }\n ]\n },\n {\n \"start_line_number\": 190,\n \"end_line_number\": 194,\n \"line_range\": [\n 190,\n 194\n ],\n \"declaration_order_index\": 24,\n \"symbol_name\": \"ExternData\",\n \"qualified_name\": \"ExternData\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"const ExternData = extern union\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Extern union for C-compatible memory layout.\",\n \"attached_comment_lines\": [\n \"Extern union for C-compatible memory layout.\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 191,\n \"end_line_number\": 191,\n \"line_range\": [\n 191,\n 191\n ],\n \"text\": \"Integer interpretation.\",\n \"text_lines\": [\n \"Integer interpretation.\"\n ]\n },\n {\n \"start_line_number\": 192,\n \"end_line_number\": 192,\n \"line_range\": [\n 192,\n 192\n ],\n \"text\": \"Float interpretation.\",\n \"text_lines\": [\n \"Float interpretation.\"\n ]\n },\n {\n \"start_line_number\": 193,\n \"end_line_number\": 193,\n \"line_range\": [\n 193,\n 193\n ],\n \"text\": \"Raw byte access.\",\n \"text_lines\": [\n \"Raw byte access.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 199,\n \"end_line_number\": 199,\n \"line_range\": [\n 199,\n 199\n ],\n \"declaration_order_index\": 25,\n \"symbol_name\": \"MAX_SIZE\",\n \"qualified_name\": \"MAX_SIZE\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const MAX_SIZE: usize = 1024\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Maximum allocation size in bytes.\",\n \"doxygen\": {\n \"brief\": [\n \"Maximum allocation size in bytes.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 202,\n \"end_line_number\": 202,\n \"line_range\": [\n 202,\n 202\n ],\n \"declaration_order_index\": 26,\n \"symbol_name\": \"global_state\",\n \"qualified_name\": \"global_state\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"pub var global_state: i32 = 0\",\n \"visibility\": \"pub\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Global mutable state counter.\",\n \"doxygen\": {\n \"brief\": [\n \"Global mutable state counter.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 205,\n \"end_line_number\": 205,\n \"line_range\": [\n 205,\n 205\n ],\n \"declaration_order_index\": 27,\n \"symbol_name\": \"MAGIC_NUMBER\",\n \"qualified_name\": \"MAGIC_NUMBER\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const MAGIC_NUMBER: u32 = comptime blk:\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Compile-time computed constant.\",\n \"doxygen\": {\n \"brief\": [\n \"Compile-time computed constant.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 206,\n \"end_line_number\": 206,\n \"line_range\": [\n 206,\n 206\n ],\n \"declaration_order_index\": 28,\n \"symbol_name\": \"x\",\n \"qualified_name\": \"x\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"var x: u32 = 1\",\n \"visibility\": \"priv\",\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\": 214,\n \"end_line_number\": 214,\n \"line_range\": [\n 214,\n 214\n ],\n \"declaration_order_index\": 29,\n \"symbol_name\": \"ParseError\",\n \"qualified_name\": \"ParseError\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const ParseError = error\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"── Error set ────────────────────────────────────────────────────────\",\n \"attached_comment_lines\": [\n \"── Error set ────────────────────────────────────────────────────────\",\n \"Custom error set for parsing operations.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 225,\n \"end_line_number\": 225,\n \"line_range\": [\n 225,\n 225\n ],\n \"declaration_order_index\": 30,\n \"symbol_name\": \"result\",\n \"qualified_name\": \"result\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const result = add(2, 3)\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Test that add function computes correctly.\",\n \"attached_comment_lines\": [\n \"Test that add function computes correctly.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 231,\n \"end_line_number\": 231,\n \"line_range\": [\n 231,\n 231\n ],\n \"declaration_order_index\": 31,\n \"symbol_name\": \"result\",\n \"qualified_name\": \"result\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const result = safeDivide(10, 0)\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Test that safeDivide returns error on zero divisor.\",\n \"attached_comment_lines\": [\n \"Test that safeDivide returns error on zero divisor.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 237,\n \"end_line_number\": 237,\n \"line_range\": [\n 237,\n 237\n ],\n \"declaration_order_index\": 32,\n \"symbol_name\": \"items\",\n \"qualified_name\": \"items\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const items = [_]i32{ 1, 2, 3, 4, 5 }\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Test that indexOf finds existing elements.\",\n \"attached_comment_lines\": [\n \"Test that indexOf finds existing elements.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 238,\n \"end_line_number\": 238,\n \"line_range\": [\n 238,\n 238\n ],\n \"declaration_order_index\": 33,\n \"symbol_name\": \"idx\",\n \"qualified_name\": \"idx\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"const idx = indexOf(i32, &items, 3)\",\n \"visibility\": \"priv\",\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\": 248,\n \"end_line_number\": 248,\n \"line_range\": [\n 248,\n 248\n ],\n \"declaration_order_index\": 34,\n \"symbol_name\": \"Mode\",\n \"qualified_name\": \"Mode\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"const Mode = enum { fast, safe }\",\n \"visibility\": \"priv\",\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\": 249,\n \"end_line_number\": 249,\n \"line_range\": [\n 249,\n 249\n ],\n \"declaration_order_index\": 35,\n \"symbol_name\": \"Phase\",\n \"qualified_name\": \"Phase\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"const Phase = enum { init, done }\",\n \"visibility\": \"priv\",\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\": 250,\n \"end_line_number\": 250,\n \"line_range\": [\n 250,\n 250\n ],\n \"declaration_order_index\": 36,\n \"symbol_name\": \"Signal\",\n \"qualified_name\": \"Signal\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"const Signal = enum { on, off }\",\n \"visibility\": \"priv\",\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\": 251,\n \"end_line_number\": 251,\n \"line_range\": [\n 251,\n 251\n ],\n \"declaration_order_index\": 37,\n \"symbol_name\": \"Packet\",\n \"qualified_name\": \"Packet\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"const Packet = struct { id: i32 }\",\n \"visibility\": \"priv\",\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\": 252,\n \"end_line_number\": 252,\n \"line_range\": [\n 252,\n 252\n ],\n \"declaration_order_index\": 38,\n \"symbol_name\": \"Limits\",\n \"qualified_name\": \"Limits\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"const Limits = struct { max: i32 }\",\n \"visibility\": \"priv\",\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\": 253,\n \"end_line_number\": 253,\n \"line_range\": [\n 253,\n 253\n ],\n \"declaration_order_index\": 39,\n \"symbol_name\": \"Variant\",\n \"qualified_name\": \"Variant\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"const Variant = union { i: i32, f: f32 }\",\n \"visibility\": \"priv\",\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\": 254,\n \"end_line_number\": 254,\n \"line_range\": [\n 254,\n 254\n ],\n \"declaration_order_index\": 40,\n \"symbol_name\": \"Payload\",\n \"qualified_name\": \"Payload\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"const Payload = extern union { a: i32, b: i32 }\",\n \"visibility\": \"priv\",\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\": 255,\n \"end_line_number\": 255,\n \"line_range\": [\n 255,\n 255\n ],\n \"declaration_order_index\": 41,\n \"symbol_name\": \"Message\",\n \"qualified_name\": \"Message\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"const Message = union { txt: [4]u8, len: u32 }\",\n \"visibility\": \"priv\",\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\": 256,\n \"end_line_number\": 256,\n \"line_range\": [\n 256,\n 256\n ],\n \"declaration_order_index\": 42,\n \"symbol_name\": \"retries\",\n \"qualified_name\": \"retries\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"var retries: i32 = 0\",\n \"visibility\": \"priv\",\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\": 257,\n \"end_line_number\": 257,\n \"line_range\": [\n 257,\n 257\n ],\n \"declaration_order_index\": 43,\n \"symbol_name\": \"pointer\",\n \"qualified_name\": \"pointer\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"var pointer: usize = 0\",\n \"visibility\": \"priv\",\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\": 265,\n \"end_line_number\": 265,\n \"line_range\": [\n 265,\n 265\n ],\n \"declaration_order_index\": 44,\n \"symbol_name\": \"reqCoverZig1\",\n \"qualified_name\": \"reqCoverZig1\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"fn reqCoverZig1(value: i32) i32 { return value + 1; }\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\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 \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 272,\n \"end_line_number\": 272,\n \"line_range\": [\n 272,\n 272\n ],\n \"declaration_order_index\": 45,\n \"symbol_name\": \"reqCoverZig2\",\n \"qualified_name\": \"reqCoverZig2\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"fn reqCoverZig2(value: i32) i32 { return value + 2; }\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\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\": 279,\n \"end_line_number\": 279,\n \"line_range\": [\n 279,\n 279\n ],\n \"declaration_order_index\": 46,\n \"symbol_name\": \"reqCoverZig3\",\n \"qualified_name\": \"reqCoverZig3\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"fn reqCoverZig3(value: i32) i32 { return value + 3; }\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\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\": 286,\n \"end_line_number\": 286,\n \"line_range\": [\n 286,\n 286\n ],\n \"declaration_order_index\": 47,\n \"symbol_name\": \"reqCoverZig4\",\n \"qualified_name\": \"reqCoverZig4\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"fn reqCoverZig4(value: i32) i32 { return value + 4; }\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\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\": 293,\n \"end_line_number\": 293,\n \"line_range\": [\n 293,\n 293\n ],\n \"declaration_order_index\": 48,\n \"symbol_name\": \"reqCoverZig5\",\n \"qualified_name\": \"reqCoverZig5\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"fn reqCoverZig5(value: i32) i32 { return value + 5; }\",\n \"visibility\": \"priv\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\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\": 2,\n \"end_line_number\": 2,\n \"line_range\": [\n 2,\n 2\n ],\n \"text\": \"@brief Comprehensive Zig test fixture for parser validation.\",\n \"text_lines\": [\n \"@brief Comprehensive Zig test fixture for parser validation.\"\n ]\n },\n {\n \"start_line_number\": 3,\n \"end_line_number\": 3,\n \"line_range\": [\n 3,\n 3\n ],\n \"text\": \"@details Covers comptime, error unions, optional types, inline loops,\",\n \"text_lines\": [\n \"@details Covers comptime, error unions, optional types, inline loops,\"\n ]\n },\n {\n \"start_line_number\": 4,\n \"end_line_number\": 4,\n \"line_range\": [\n 4,\n 4\n ],\n \"text\": \"packed structs, extern unions, test blocks, errdefer,\",\n \"text_lines\": [\n \"packed structs, extern unions, test blocks, errdefer,\"\n ]\n },\n {\n \"start_line_number\": 5,\n \"end_line_number\": 5,\n \"line_range\": [\n 5,\n 5\n ],\n \"text\": \"alignment, vectors, and builtins.\",\n \"text_lines\": [\n \"alignment, vectors, and builtins.\"\n ]\n },\n {\n \"start_line_number\": 6,\n \"end_line_number\": 6,\n \"line_range\": [\n 6,\n 6\n ],\n \"text\": \"Single line comment\",\n \"text_lines\": [\n \"Single line comment\"\n ]\n },\n {\n \"start_line_number\": 18,\n \"end_line_number\": 18,\n \"line_range\": [\n 18,\n 18\n ],\n \"text\": \"Add two signed integers and return the sum.\",\n \"text_lines\": [\n \"Add two signed integers and return the sum.\"\n ]\n },\n {\n \"start_line_number\": 26,\n \"end_line_number\": 26,\n \"line_range\": [\n 26,\n 26\n ],\n \"text\": \"Divide two integers with error handling for division by zero.\",\n \"text_lines\": [\n \"Divide two integers with error handling for division by zero.\"\n ]\n },\n {\n \"start_line_number\": 37,\n \"end_line_number\": 37,\n \"line_range\": [\n 37,\n 37\n ],\n \"text\": \"Generic function computing the maximum of two comparable values.\",\n \"text_lines\": [\n \"Generic function computing the maximum of two comparable values.\"\n ]\n },\n {\n \"start_line_number\": 38,\n \"end_line_number\": 38,\n \"line_range\": [\n 38,\n 38\n ],\n \"text\": \"@param T The element type (comptime resolved).\",\n \"text_lines\": [\n \"@param T The element type (comptime resolved).\"\n ]\n },\n {\n \"start_line_number\": 46,\n \"end_line_number\": 46,\n \"line_range\": [\n 46,\n 46\n ],\n \"text\": \"Generic linear search returning the index of a target value.\",\n \"text_lines\": [\n \"Generic linear search returning the index of a target value.\"\n ]\n },\n {\n \"start_line_number\": 47,\n \"end_line_number\": 47,\n \"line_range\": [\n 47,\n 47\n ],\n \"text\": \"@param T Element type.\",\n \"text_lines\": [\n \"@param T Element type.\"\n ]\n },\n {\n \"start_line_number\": 57,\n \"end_line_number\": 57,\n \"line_range\": [\n 57,\n 57\n ],\n \"text\": \"Not found — return null optional\",\n \"text_lines\": [\n \"Not found — return null optional\"\n ]\n },\n {\n \"start_line_number\": 61,\n \"end_line_number\": 61,\n \"line_range\": [\n 61,\n 61\n ],\n \"text\": \"Perform a comptime string concatenation.\",\n \"text_lines\": [\n \"Perform a comptime string concatenation.\"\n ]\n },\n {\n \"start_line_number\": 75,\n \"end_line_number\": 75,\n \"line_range\": [\n 75,\n 75\n ],\n \"text\": \"Initialize buffer to zero\",\n \"text_lines\": [\n \"Initialize buffer to zero\"\n ]\n },\n {\n \"start_line_number\": 80,\n \"end_line_number\": 80,\n \"line_range\": [\n 80,\n 80\n ],\n \"text\": \"Inline function called in tight loops for vectorized operations.\",\n \"text_lines\": [\n \"Inline function called in tight loops for vectorized operations.\"\n ]\n },\n {\n \"start_line_number\": 98,\n \"end_line_number\": 98,\n \"line_range\": [\n 98,\n 98\n ],\n \"text\": \"── Struct definitions ───────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Struct definitions ───────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 106,\n \"end_line_number\": 106,\n \"line_range\": [\n 106,\n 106\n ],\n \"text\": \"Compute the squared distance to another point.\",\n \"text_lines\": [\n \"Compute the squared distance to another point.\"\n ]\n },\n {\n \"start_line_number\": 221,\n \"end_line_number\": 221,\n \"line_range\": [\n 221,\n 221\n ],\n \"text\": \"── Test blocks ──────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Test blocks ──────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 242,\n \"end_line_number\": 242,\n \"line_range\": [\n 242,\n 242\n ],\n \"text\": \"coverage extension block\",\n \"text_lines\": [\n \"coverage extension block\"\n ]\n },\n {\n \"start_line_number\": 259,\n \"end_line_number\": 259,\n \"line_range\": [\n 259,\n 259\n ],\n \"text\": \"REQ-COVER-SRS-231 START\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 START\"\n ]\n },\n {\n \"start_line_number\": 260,\n \"end_line_number\": 260,\n \"line_range\": [\n 260,\n 260\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 1\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 1\"\n ]\n },\n {\n \"start_line_number\": 261,\n \"end_line_number\": 261,\n \"line_range\": [\n 261,\n 261\n ],\n \"text\": \"@brief Coverage helper construct 1.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 1.\"\n ]\n },\n {\n \"start_line_number\": 267,\n \"end_line_number\": 267,\n \"line_range\": [\n 267,\n 267\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 2\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 2\"\n ]\n },\n {\n \"start_line_number\": 268,\n \"end_line_number\": 268,\n \"line_range\": [\n 268,\n 268\n ],\n \"text\": \"@brief Coverage helper construct 2.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 2.\"\n ]\n },\n {\n \"start_line_number\": 274,\n \"end_line_number\": 274,\n \"line_range\": [\n 274,\n 274\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 3\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 3\"\n ]\n },\n {\n \"start_line_number\": 275,\n \"end_line_number\": 275,\n \"line_range\": [\n 275,\n 275\n ],\n \"text\": \"@brief Coverage helper construct 3.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 3.\"\n ]\n },\n {\n \"start_line_number\": 281,\n \"end_line_number\": 281,\n \"line_range\": [\n 281,\n 281\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 4\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 4\"\n ]\n },\n {\n \"start_line_number\": 282,\n \"end_line_number\": 282,\n \"line_range\": [\n 282,\n 282\n ],\n \"text\": \"@brief Coverage helper construct 4.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 4.\"\n ]\n },\n {\n \"start_line_number\": 288,\n \"end_line_number\": 288,\n \"line_range\": [\n 288,\n 288\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 5\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 5\"\n ]\n },\n {\n \"start_line_number\": 289,\n \"end_line_number\": 289,\n \"line_range\": [\n 289,\n 289\n ],\n \"text\": \"@brief Coverage helper construct 5.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 5.\"\n ]\n },\n {\n \"start_line_number\": 295,\n \"end_line_number\": 295,\n \"line_range\": [\n 295,\n 295\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_zig.zig | Zig | 295L | 49 symbols | 7 imports | 105 comments\n> Path: `tests/fixtures/fixture_zig.zig`\n\n## Imports\n```\nconst std = @import(\"std\");\nconst mem = @import(\"std\").mem;\nconst io = @import(\"std\");\nconst fs = @import(\"std\");\nconst mem = @import(\"std\");\nconst math = @import(\"std\");\nconst json = @import(\"std\");\n```\n\n## Definitions\n\n- const `const Allocator = std.mem.Allocator;` `priv` (L9)\n### fn `pub fn main() void` (L14-16)\n\n### fn `pub fn add(a: i32, b: i32) i32` (L22-24)\n- @param a First operand.\n- @param b Second operand.\n- @return Sum of a and b.\n\n### fn `pub fn safeDivide(numerator: i32, denominator: i32) !i32` (L30-35)\n- @param numerator The dividend.\n- @param denominator The divisor; must not be zero.\n- @return Quotient or error.DivisionByZero.\n\n### fn `pub fn max(comptime T: type, a: T, b: T) T` (L42-44)\n- @param T The element type (comptime resolved).\n- @param a First value.\n- @param b Second value.\n- @return The larger of a and b.\n\n### fn `pub fn indexOf(comptime T: type, haystack: []const T, needle: T) ?usize` (L51-59)\n- @param T Element type.\n- @param haystack Slice to search.\n- @param needle Value to find.\n- @return Index of needle or null if not found.\n\n### fn `pub fn comptimeConcat(comptime a: []const u8, comptime b: []const u8) []const u8` (L65-67)\n- @param a First string literal.\n- @param b Second string literal.\n- @return Concatenated string at compile time.\n\n### fn `pub fn createBuffer(allocator: Allocator) ![]u8` (L72-78)\n- @param allocator Memory allocator for buffer creation.\n- @return Allocated buffer or error.\n\n- const `const buf = try allocator.alloc(u8, 1024);` `priv` (L73)\n- var `var total: f32 = 0.0;` `priv` (L84)\n- @param values Slice of floats to sum.\n- @return Sum of all elements.\n### fn `export fn doubleValue(x: i32) i32` `priv` (L94-96)\n- @param x Value to double.\n- @return Input multiplied by two.\n\n### struct `const Point = struct` `priv` (L102-121)\n- @brief Basic coordinate pair for geometric computations.\n- fn `pub fn distSquared(self: Point, other: Point) f64` (L110-114)\n - @param self This point.\n - @param other Target point.\n - @return Distance squared (avoids sqrt).\n- const `const dx = self.x - other.x` `priv` (L111)\n- const `const dy = self.y - other.y` `priv` (L112)\n- fn `pub fn origin() Point` (L118-120)\n - @return A zero-initialized Point.\n\n### struct `const PackedFlags = packed struct` `priv` (L125-130)\n- @brief Tests parser handling of packed layout specifier.\n\n### struct `const Config = struct` `priv` (L133-144)\n- fn `pub fn testing() Config` (L141-143)\n - @return Config with debug=true.\n\n### enum `const Color = enum` `priv` (L149-164)\n- fn `pub fn toRgb(self: Color) u32` (L157-163)\n - @param self The color variant.\n - @return 24-bit RGB integer.\n\n### enum `const Status = enum(u8)` `priv` (L167-172)\n\n### unk `const Result = union(enum)` `priv` (L177-187)\n\n### fn `pub fn isOk(self: Result) bool` (L184-186)\n- @param self The result to inspect.\n- @return True if variant is ok.\n\n### unk `const ExternData = extern union` `priv` (L190-194)\n\n- const `const MAX_SIZE: usize = 1024;` `priv` (L199)\n- @brief Maximum allocation size in bytes.\n- var `pub var global_state: i32 = 0;` (L202)\n- @brief Global mutable state counter.\n- const `const MAGIC_NUMBER: u32 = comptime blk: {` `priv` (L205)\n- @brief Compile-time computed constant.\n- var `var x: u32 = 1;` `priv` (L206)\n- const `const ParseError = error{` `priv` (L214)\n- const `const result = add(2, 3);` `priv` (L225)\n- const `const result = safeDivide(10, 0);` `priv` (L231)\n- const `const items = [_]i32{ 1, 2, 3, 4, 5 };` `priv` (L237)\n- const `const idx = indexOf(i32, &items, 3);` `priv` (L238)\n- enum `const Mode = enum { fast, safe };` `priv` (L248)\n- enum `const Phase = enum { init, done };` `priv` (L249)\n- enum `const Signal = enum { on, off };` `priv` (L250)\n- struct `const Packet = struct { id: i32 };` `priv` (L251)\n- struct `const Limits = struct { max: i32 };` `priv` (L252)\n- unk `const Variant = union { i: i32, f: f32 };` `priv` (L253)\n- unk `const Payload = extern union { a: i32, b: i32 };` `priv` (L254)\n- unk `const Message = union { txt: [4]u8, len: u32 };` `priv` (L255)\n- var `var retries: i32 = 0;` `priv` (L256)\n- var `var pointer: usize = 0;` `priv` (L257)\n- fn `fn reqCoverZig1(value: i32) i32 { return value + 1; }` `priv` (L265)\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 `fn reqCoverZig2(value: i32) i32 { return value + 2; }` `priv` (L272)\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 `fn reqCoverZig3(value: i32) i32 { return value + 3; }` `priv` (L279)\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 `fn reqCoverZig4(value: i32) i32 { return value + 4; }` `priv` (L286)\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 `fn reqCoverZig5(value: i32) i32 { return value + 5; }` `priv` (L293)\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## Symbol Index\n|Symbol|Kind|Vis|Lines|Sig|\n|---|---|---|---|---|\n|`Allocator`|const|priv|9||\n|`main`|fn|pub|14-16|pub fn main() void|\n|`add`|fn|pub|22-24|pub fn add(a: i32, b: i32) i32|\n|`safeDivide`|fn|pub|30-35|pub fn safeDivide(numerator: i32, denominator: i32) !i32|\n|`max`|fn|pub|42-44|pub fn max(comptime T: type, a: T, b: T) T|\n|`indexOf`|fn|pub|51-59|pub fn indexOf(comptime T: type, haystack: []const T, nee...|\n|`comptimeConcat`|fn|pub|65-67|pub fn comptimeConcat(comptime a: []const u8, comptime b:...|\n|`createBuffer`|fn|pub|72-78|pub fn createBuffer(allocator: Allocator) ![]u8|\n|`buf`|const|priv|73||\n|`total`|var|priv|84||\n|`doubleValue`|fn|priv|94-96|export fn doubleValue(x: i32) i32|\n|`Point`|struct|priv|102-121|const Point = struct|\n|`Point.distSquared`|fn|pub|110-114|pub fn distSquared(self: Point, other: Point) f64|\n|`Point.dx`|const|priv|111||\n|`Point.dy`|const|priv|112||\n|`Point.origin`|fn|pub|118-120|pub fn origin() Point|\n|`PackedFlags`|struct|priv|125-130|const PackedFlags = packed struct|\n|`Config`|struct|priv|133-144|const Config = struct|\n|`Config.testing`|fn|pub|141-143|pub fn testing() Config|\n|`Color`|enum|priv|149-164|const Color = enum|\n|`Color.toRgb`|fn|pub|157-163|pub fn toRgb(self: Color) u32|\n|`Status`|enum|priv|167-172|const Status = enum(u8)|\n|`Result`|unk|priv|177-187||\n|`isOk`|fn|pub|184-186|pub fn isOk(self: Result) bool|\n|`ExternData`|unk|priv|190-194||\n|`MAX_SIZE`|const|priv|199||\n|`global_state`|var|pub|202||\n|`MAGIC_NUMBER`|const|priv|205||\n|`x`|var|priv|206||\n|`ParseError`|const|priv|214||\n|`result`|const|priv|225||\n|`result`|const|priv|231||\n|`items`|const|priv|237||\n|`idx`|const|priv|238||\n|`Mode`|enum|priv|248|const Mode = enum { fast, safe }|\n|`Phase`|enum|priv|249|const Phase = enum { init, done }|\n|`Signal`|enum|priv|250|const Signal = enum { on, off }|\n|`Packet`|struct|priv|251|const Packet = struct { id: i32 }|\n|`Limits`|struct|priv|252|const Limits = struct { max: i32 }|\n|`Variant`|unk|priv|253||\n|`Payload`|unk|priv|254||\n|`Message`|unk|priv|255||\n|`retries`|var|priv|256||\n|`pointer`|var|priv|257||\n|`reqCoverZig1`|fn|priv|265|fn reqCoverZig1(value: i32) i32 { return value + 1; }|\n|`reqCoverZig2`|fn|priv|272|fn reqCoverZig2(value: i32) i32 { return value + 2; }|\n|`reqCoverZig3`|fn|priv|279|fn reqCoverZig3(value: i32) i32 { return value + 3; }|\n|`reqCoverZig4`|fn|priv|286|fn reqCoverZig4(value: i32) i32 { return value + 4; }|\n|`reqCoverZig5`|fn|priv|293|fn reqCoverZig5(value: i32) i32 { return value + 5; }|\n\n",
|
|
4
4
|
"stderr": ""
|
|
5
5
|
}
|