pi-usereq 0.6.0 → 0.10.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 +44 -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 +2658 -2035
- package/pi-usereq/docs/REQUIREMENTS.md +345 -191
- package/pi-usereq/docs/WORKFLOW.md +387 -363
- 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 +546 -65
- package/src/core/debug-runtime.ts +542 -0
- package/src/core/extension-status.ts +324 -202
- 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 +585 -315
- 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 +1650 -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/settings-menu.ts +33 -7
- package/src/core/source-analyzer.ts +27 -7
- package/src/core/token-counter.ts +61 -79
- package/src/core/tool-runner.ts +38 -317
- package/src/index.ts +2629 -1220
- package/src/resources/images/favicon.svg +21 -0
- package/src/resources/images/pi.dev.png +0 -0
- 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 +74 -73
- package/tests/extension-registration.test.ts +3626 -685
- package/tests/fixtures_attended_results/project/compress-line-numbers.json +1 -1
- package/tests/fixtures_attended_results/project/compress.json +1 -1
- package/tests/fixtures_attended_results/project/find-line-numbers.json +1 -1
- package/tests/fixtures_attended_results/project/find.json +1 -1
- package/tests/fixtures_attended_results/project/references.json +2 -2
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-find/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_c.c.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_cpp.cpp.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_csharp.cs.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_elixir.ex.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_go.go.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_haskell.hs.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_java.java.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_javascript.js.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_kotlin.kt.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_lua.lua.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_perl.pl.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_php.php.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_python.py.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_ruby.rb.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_rust.rs.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_scala.scala.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_shell.sh.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_swift.swift.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_typescript.ts.json +1 -1
- package/tests/fixtures_attended_results/standalone/files-references/fixture_zig.zig.json +1 -1
- package/tests/helpers.ts +24 -15
- package/tests/oracle-project.test.ts +29 -30
- package/tests/oracle-standalone.test.ts +27 -1
- package/tests/prompt-rendering.test.ts +40 -9
- package/tests/python_oracle_stubs/tiktoken.py +76 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"code": 0,
|
|
3
|
-
"stdout": "@@@ tests/fixtures/fixture_go.go | go\n> Lines: 12-339\n```\npackage main\nimport (\n\"context\"\n\"fmt\"\n\"io\"\n\"sync\"\n)\nconst MaxSize = 100\nvar globalVar = 0\nconst (\
|
|
3
|
+
"stdout": "@@@ tests/fixtures/fixture_go.go | go\n> Lines: 12-339\n```\npackage main\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n)\nconst MaxSize = 100\nvar globalVar = 0\nconst (\n\tLogDebug = iota\n\tLogInfo\n\tLogError\n)\ntype Server struct {\n\tPort int\n\tHost string\n\tsync.Mutex\n\thandlers map[string]HandlerFunc\n}\ntype HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)\ntype Address struct {\n\tStreet string\n\tCity string\n\tZip string\n}\ntype Employee struct {\n\tName string\n\tAge int\n\tAddress\n\tManager *Employee\n}\ntype Handler interface {\n\tHandle(ctx context.Context, data []byte) error\n}\ntype ReadWriteCloser interface {\n\tio.Reader\n\tio.Writer\n\tio.Closer\n}\ntype MyInt int\nfunc (m MyInt) String() string {\n\treturn fmt.Sprintf(\"MyInt(%d)\", int(m))\n}\ntype Pair[A any, B any] struct {\n\tFirst A\n\tSecond B\n}\ntype Ordered interface {\n\t~int | ~float64 | ~string\n}\nfunc main() {\n\tfmt.Println(\"hello\")\n}\nfunc init() {\n\tglobalVar = 1\n}\nfunc (s *Server) Start() error {\n\ts.Lock()\n\tdefer s.Unlock()\n\tif s.Port <= 0 {\n\t\treturn fmt.Errorf(\"invalid port: %d\", s.Port)\n\t}\n\tfmt.Printf(\"Starting on %s:%d\\n\", s.Host, s.Port)\n\treturn nil\n}\nfunc (s *Server) Register(path string, handler HandlerFunc) {\n\tif s.handlers == nil {\n\t\ts.handlers = make(map[string]HandlerFunc)\n\t}\n\ts.handlers[path] = handler\n}\nfunc Max[T Ordered](a, b T) T {\n\tif a > b {\n\t\treturn a\n\t}\n\treturn b\n}\nfunc Filter[T any](items []T, pred func(T) bool) []T {\n\tresult := make([]T, 0)\n\tfor _, item := range items {\n\t\tif pred(item) {\n\t\t\tresult = append(result, item)\n\t\t}\n\t}\n\treturn result\n}\nfunc Divide(a, b int) (int, int, error) {\n\tif b == 0 {\n\t\treturn 0, 0, fmt.Errorf(\"division by zero\")\n\t}\n\treturn a / b, a % b, nil\n}\nfunc ParseConfig(input string) (host string, port int, err error) {\n\t_, scanErr := fmt.Sscanf(input, \"%s:%d\", &host, &port)\n\tif scanErr != nil {\n\t\terr = scanErr\n\t\treturn\n\t}\n\treturn\n}\nfunc Counter() func() int {\n\tcount := 0\n\treturn func() int {\n\t\tcount++\n\t\treturn count\n\t}\n}\nfunc FanOut(items []string, workers int) <-chan string {\n\tresults := make(chan string, len(items))\n\tvar wg sync.WaitGroup\n\tfor i := 0; i < workers; i++ {\n\t\twg.Add(1)\n\t\tgo func(id int) {\n\t\t\tdefer wg.Done()\n\t\t\tfor _, item := range items {\n\t\t\t\tresults <- fmt.Sprintf(\"[%d] %s\", id, item)\n\t\t\t}\n\t\t}(i)\n\t}\n\tgo func() {\n\t\twg.Wait()\n\t\tclose(results)\n\t}()\n\treturn results\n}\nfunc Describe(v interface{}) string {\n\tswitch val := v.(type) {\n\tcase int:\n\t\treturn fmt.Sprintf(\"int: %d\", val)\n\tcase string:\n\t\treturn fmt.Sprintf(\"string: %q\", val)\n\tcase bool:\n\t\tif val {\n\t\t\treturn \"bool: true\"\n\t\t}\n\t\treturn \"bool: false\"\n\tcase nil:\n\t\treturn \"nil\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"unknown: %T\", val)\n\t}\n}\nfunc SafeExecute(fn func()) (err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\terr = fmt.Errorf(\"panic: %v\", r)\n\t\t}\n\t}()\n\tfn()\n\treturn nil\n}\npackage utilx\npackage configx\npackage jobsx\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\nfunc (s *Server) Reset() {}\ntype Session struct { Id string }\ntype Bucket struct { Name string }\ntype Closer interface { Close() error }\ntype Starter interface { Start() error }\ntype UserAlias string\ntype Amount int\ntype Resolver func(string) error\nconst RetryCount = 3\nvar LastError error\nfunc reqCoverGo1(value int) int { return value + 1 }\nfunc reqCoverGo2(value int) int { return value + 2 }\nfunc reqCoverGo3(value int) int { return value + 3 }\nfunc reqCoverGo4(value int) int { return value + 4 }\nfunc reqCoverGo5(value int) int { return value + 5 }\n```\n",
|
|
4
4
|
"stderr": ""
|
|
5
5
|
}
|
package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_go.go.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"code": 0,
|
|
3
|
-
"stdout": "@@@ tests/fixtures/fixture_go.go | go\n> Lines: 12-339\n```\n12: package main\n14: import (\n15: \"context\"\n16: \"fmt\"\n17: \"io\"\n18: \"sync\"\n19: )\n24: const MaxSize = 100\n27: var globalVar = 0\n30: const (\n32:
|
|
3
|
+
"stdout": "@@@ tests/fixtures/fixture_go.go | go\n> Lines: 12-339\n```\n12: package main\n14: import (\n15: \t\"context\"\n16: \t\"fmt\"\n17: \t\"io\"\n18: \t\"sync\"\n19: )\n24: const MaxSize = 100\n27: var globalVar = 0\n30: const (\n32: \tLogDebug = iota\n34: \tLogInfo\n36: \tLogError\n37: )\n43: type Server struct {\n44: \tPort int\n45: \tHost string\n46: \tsync.Mutex\n47: \thandlers map[string]HandlerFunc\n48: }\n51: type HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)\n54: type Address struct {\n55: \tStreet string\n56: \tCity string\n57: \tZip string\n58: }\n61: type Employee struct {\n62: \tName string\n63: \tAge int\n64: \tAddress\n65: \tManager *Employee\n66: }\n71: type Handler interface {\n73: \tHandle(ctx context.Context, data []byte) error\n74: }\n77: type ReadWriteCloser interface {\n78: \tio.Reader\n79: \tio.Writer\n80: \tio.Closer\n81: }\n86: type MyInt int\n89: func (m MyInt) String() string {\n90: \treturn fmt.Sprintf(\"MyInt(%d)\", int(m))\n91: }\n98: type Pair[A any, B any] struct {\n99: \tFirst A\n100: \tSecond B\n101: }\n104: type Ordered interface {\n105: \t~int | ~float64 | ~string\n106: }\n111: func main() {\n112: \tfmt.Println(\"hello\")\n113: }\n116: func init() {\n118: \tglobalVar = 1\n119: }\n123: func (s *Server) Start() error {\n124: \ts.Lock()\n125: \tdefer s.Unlock()\n127: \tif s.Port <= 0 {\n128: \t\treturn fmt.Errorf(\"invalid port: %d\", s.Port)\n129: \t}\n130: \tfmt.Printf(\"Starting on %s:%d\\n\", s.Host, s.Port)\n131: \treturn nil\n132: }\n138: func (s *Server) Register(path string, handler HandlerFunc) {\n139: \tif s.handlers == nil {\n140: \t\ts.handlers = make(map[string]HandlerFunc)\n141: \t}\n142: \ts.handlers[path] = handler\n143: }\n152: func Max[T Ordered](a, b T) T {\n153: \tif a > b {\n154: \t\treturn a\n155: \t}\n156: \treturn b\n157: }\n164: func Filter[T any](items []T, pred func(T) bool) []T {\n165: \tresult := make([]T, 0)\n166: \tfor _, item := range items {\n167: \t\tif pred(item) {\n168: \t\t\tresult = append(result, item)\n169: \t\t}\n170: \t}\n171: \treturn result\n172: }\n180: func Divide(a, b int) (int, int, error) {\n181: \tif b == 0 {\n182: \t\treturn 0, 0, fmt.Errorf(\"division by zero\")\n183: \t}\n184: \treturn a / b, a % b, nil\n185: }\n192: func ParseConfig(input string) (host string, port int, err error) {\n194: \t_, scanErr := fmt.Sscanf(input, \"%s:%d\", &host, &port)\n195: \tif scanErr != nil {\n196: \t\terr = scanErr\n197: \t\treturn\n198: \t}\n199: \treturn\n200: }\n206: func Counter() func() int {\n207: \tcount := 0\n208: \treturn func() int {\n210: \t\tcount++\n211: \t\treturn count\n212: \t}\n213: }\n221: func FanOut(items []string, workers int) <-chan string {\n222: \tresults := make(chan string, len(items))\n223: \tvar wg sync.WaitGroup\n225: \tfor i := 0; i < workers; i++ {\n226: \t\twg.Add(1)\n227: \t\tgo func(id int) {\n228: \t\t\tdefer wg.Done()\n230: \t\t\tfor _, item := range items {\n231: \t\t\t\tresults <- fmt.Sprintf(\"[%d] %s\", id, item)\n232: \t\t\t}\n233: \t\t}(i)\n234: \t}\n237: \tgo func() {\n238: \t\twg.Wait()\n239: \t\tclose(results)\n240: \t}()\n242: \treturn results\n243: }\n250: func Describe(v interface{}) string {\n251: \tswitch val := v.(type) {\n252: \tcase int:\n253: \t\treturn fmt.Sprintf(\"int: %d\", val)\n254: \tcase string:\n255: \t\treturn fmt.Sprintf(\"string: %q\", val)\n256: \tcase bool:\n257: \t\tif val {\n258: \t\t\treturn \"bool: true\"\n259: \t\t}\n260: \t\treturn \"bool: false\"\n261: \tcase nil:\n262: \t\treturn \"nil\"\n263: \tdefault:\n264: \t\treturn fmt.Sprintf(\"unknown: %T\", val)\n265: \t}\n266: }\n273: func SafeExecute(fn func()) (err error) {\n274: \tdefer func() {\n275: \t\tif r := recover(); r != nil {\n277: \t\t\terr = fmt.Errorf(\"panic: %v\", r)\n278: \t\t}\n279: \t}()\n280: \tfn()\n281: \treturn nil\n282: }\n285: package utilx\n286: package configx\n287: package jobsx\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n294: func (s *Server) Reset() {}\n295: type Session struct { Id string }\n296: type Bucket struct { Name string }\n297: type Closer interface { Close() error }\n298: type Starter interface { Start() error }\n299: type UserAlias string\n300: type Amount int\n301: type Resolver func(string) error\n302: const RetryCount = 3\n303: var LastError error\n311: func reqCoverGo1(value int) int { return value + 1 }\n318: func reqCoverGo2(value int) int { return value + 2 }\n325: func reqCoverGo3(value int) int { return value + 3 }\n332: func reqCoverGo4(value int) int { return value + 4 }\n339: func reqCoverGo5(value int) int { return value + 5 }\n```\n",
|
|
4
4
|
"stderr": ""
|
|
5
5
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"code": 0,
|
|
3
|
-
"stdout": "@@@ tests/fixtures/fixture_go.go | go\n\n### MODULE: `main`\n> Signature: `package main`\n> Lines: 12-48\n```\npackage main\nimport (\n\"context\"\n\"fmt\"\n\"io\"\n\"sync\"\n)\nconst MaxSize = 100\nvar globalVar = 0\nconst (\nLogDebug = iota\nLogInfo\nLogError\n)\ntype Server struct {\nPort int\nHost string\nsync.Mutex\nhandlers map[string]HandlerFunc\n}\n```\n\n### IMPORT: `(`\n> Lines: 14-14\n```\nimport (\n```\n\n### CONSTANT: `MaxSize`\n> Signature: `const MaxSize = 100`\n> Lines: 24-24\n```\nconst MaxSize = 100\n```\n\n### CONSTANT: `globalVar`\n> Signature: `var globalVar = 0`\n> Lines: 27-27\n```\nvar globalVar = 0\n```\n\n### STRUCT: `Server`\n> Signature: `type Server struct`\n> Lines: 43-48\n```\ntype Server struct {\nPort int\nHost string\nsync.Mutex\nhandlers map[string]HandlerFunc\n}\n```\n\n### TYPE_ALIAS: `HandlerFunc`\n> Signature: `type HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)`\n> Lines: 51-51\n```\ntype HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)\n```\n\n### STRUCT: `Address`\n> Signature: `type Address struct`\n> Lines: 54-58\n```\ntype Address struct {\nStreet string\nCity string\nZip string\n}\n```\n\n### STRUCT: `Employee`\n> Signature: `type Employee struct`\n> Lines: 61-66\n```\ntype Employee struct {\nName string\nAge int\nAddress\nManager *Employee\n}\n```\n\n### INTERFACE: `Handler`\n> Signature: `type Handler interface`\n> Lines: 71-74\n```\ntype Handler interface {\nHandle(ctx context.Context, data []byte) error\n}\n```\n\n### INTERFACE: `ReadWriteCloser`\n> Signature: `type ReadWriteCloser interface`\n> Lines: 77-81\n```\ntype ReadWriteCloser interface {\nio.Reader\nio.Writer\nio.Closer\n}\n```\n\n### TYPE_ALIAS: `MyInt`\n> Signature: `type MyInt int`\n> Lines: 86-86\n```\ntype MyInt int\n```\n\n### METHOD: `String`\n> Signature: `func (m MyInt) String() string`\n> Lines: 89-91\n```\nfunc (m MyInt) String() string {\nreturn fmt.Sprintf(\"MyInt(%d)\", int(m))\n}\n```\n\n### INTERFACE: `Ordered`\n> Signature: `type Ordered interface`\n> Lines: 104-106\n```\ntype Ordered interface {\n~int | ~float64 | ~string\n}\n```\n\n### FUNCTION: `main`\n> Signature: `func main()`\n> Lines: 111-113\n```\nfunc main() {\nfmt.Println(\"hello\")\n}\n```\n\n### FUNCTION: `init`\n> Signature: `func init()`\n> Lines: 116-119\n```\nfunc init() {\nglobalVar = 1\n}\n```\n\n### METHOD: `Start`\n> Signature: `func (s *Server) Start() error`\n> Lines: 123-132\n```\nfunc (s *Server) Start() error {\ns.Lock()\ndefer s.Unlock()\nif s.Port <= 0 {\nreturn fmt.Errorf(\"invalid port: %d\", s.Port)\n}\nfmt.Printf(\"Starting on %s:%d\\n\", s.Host, s.Port)\nreturn nil\n}\n```\n\n### METHOD: `Register`\n> Signature: `func (s *Server) Register(path string, handler HandlerFunc)`\n> Lines: 138-143\n- @param path The URL path to register.\n- @param handler The function to invoke for this path.\n```\nfunc (s *Server) Register(path string, handler HandlerFunc) {\nif s.handlers == nil {\ns.handlers = make(map[string]HandlerFunc)\n}\ns.handlers[path] = handler\n}\n```\n\n### FUNCTION: `Divide`\n> Signature: `func Divide(a, b int) (int, int, error)`\n> Lines: 180-185\n- @param a Dividend.\n- @param b Divisor; must not be zero.\n- @return Quotient and remainder, or error if b is zero.\n```\nfunc Divide(a, b int) (int, int, error) {\nif b == 0 {\nreturn 0, 0, fmt.Errorf(\"division by zero\")\n}\nreturn a / b, a % b, nil\n}\n```\n\n### FUNCTION: `ParseConfig`\n> Signature: `func ParseConfig(input string) (host string, port int, err error)`\n> Lines: 192-200\n- @param input Configuration string in \"host:port\" format.\n- @return Named host and port values, or error.\n```\nfunc ParseConfig(input string) (host string, port int, err error) {\n_, scanErr := fmt.Sscanf(input, \"%s:%d\", &host, &port)\nif scanErr != nil {\nerr = scanErr\nreturn\n}\nreturn\n}\n```\n\n### FUNCTION: `Counter`\n> Signature: `func Counter() func() int`\n> Lines: 206-213\n- @return Closure yielding successive integer counts.\n```\nfunc Counter() func() int {\ncount := 0\nreturn func() int {\ncount++\nreturn count\n}\n}\n```\n\n### FUNCTION: `FanOut`\n> Signature: `func FanOut(items []string, workers int) <-chan string`\n> Lines: 221-243\n- @param items Slice of strings to process.\n- @param workers Number of concurrent worker goroutines.\n- @return Channel delivering processed results.\n```\nfunc FanOut(items []string, workers int) <-chan string {\nresults := make(chan string, len(items))\nvar wg sync.WaitGroup\nfor i := 0; i < workers; i++ {\nwg.Add(1)\ngo func(id int) {\ndefer wg.Done()\nfor _, item := range items {\nresults <- fmt.Sprintf(\"[%d] %s\", id, item)\n}\n}(i)\n}\ngo func() {\nwg.Wait()\nclose(results)\n}()\nreturn results\n}\n```\n\n### CONSTANT: `wg`\n> Signature: `var wg sync.WaitGroup`\n> Lines: 223-223\n```\nvar wg sync.WaitGroup\n```\n\n### FUNCTION: `Describe`\n> Signature: `func Describe(v interface{}) string`\n> Lines: 250-266\n- @param v Any value to describe.\n- @return Human-readable type description.\n```\nfunc Describe(v interface{}) string {\nswitch val := v.(type) {\ncase int:\nreturn fmt.Sprintf(\"int: %d\", val)\ncase string:\nreturn fmt.Sprintf(\"string: %q\", val)\ncase bool:\nif val {\nreturn \"bool: true\"\n}\nreturn \"bool: false\"\ncase nil:\nreturn \"nil\"\ndefault:\nreturn fmt.Sprintf(\"unknown: %T\", val)\n}\n}\n```\n\n### FUNCTION: `SafeExecute`\n> Signature: `func SafeExecute(fn func()) (err error)`\n> Lines: 273-282\n- @param fn The function to execute safely.\n- @return Error if fn panicked, nil otherwise.\n```\nfunc SafeExecute(fn func()) (err error) {\ndefer func() {\nif r := recover(); r != nil {\nerr = fmt.Errorf(\"panic: %v\", r)\n}\n}()\nfn()\nreturn nil\n}\n```\n\n### MODULE: `utilx`\n> Signature: `package utilx`\n> Lines: 285-293\n```\npackage utilx\npackage configx\npackage jobsx\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\n```\n\n### MODULE: `configx`\n> Signature: `package configx`\n> Lines: 286-293\n```\npackage configx\npackage jobsx\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\n```\n\n### MODULE: `jobsx`\n> Signature: `package jobsx`\n> Lines: 287-293\n```\npackage jobsx\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\n```\n\n### MODULE: `metricx`\n> Signature: `package metricx`\n> Lines: 288-293\n```\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\n```\n\n### IMPORT: `\"os\"`\n> Lines: 289-289\n```\nimport \"os\"\n```\n\n### IMPORT: `\"time\"`\n> Lines: 290-290\n```\nimport \"time\"\n```\n\n### IMPORT: `\"strings\"`\n> Lines: 291-291\n```\nimport \"strings\"\n```\n\n### IMPORT: `\"bytes\"`\n> Lines: 292-292\n```\nimport \"bytes\"\n```\n\n### METHOD: `Stop`\n> Signature: `func (s *Server) Stop() {}`\n> Lines: 293-293\n```\nfunc (s *Server) Stop() {}\n```\n\n### METHOD: `Reset`\n> Signature: `func (s *Server) Reset() {}`\n> Lines: 294-294\n```\nfunc (s *Server) Reset() {}\n```\n\n### STRUCT: `Session`\n> Signature: `type Session struct { Id string }`\n> Lines: 295-295\n```\ntype Session struct { Id string }\n```\n\n### STRUCT: `Bucket`\n> Signature: `type Bucket struct { Name string }`\n> Lines: 296-296\n```\ntype Bucket struct { Name string }\n```\n\n### INTERFACE: `Closer`\n> Signature: `type Closer interface { Close() error }`\n> Lines: 297-297\n```\ntype Closer interface { Close() error }\n```\n\n### INTERFACE: `Starter`\n> Signature: `type Starter interface { Start() error }`\n> Lines: 298-298\n```\ntype Starter interface { Start() error }\n```\n\n### TYPE_ALIAS: `UserAlias`\n> Signature: `type UserAlias string`\n> Lines: 299-299\n```\ntype UserAlias string\n```\n\n### TYPE_ALIAS: `Amount`\n> Signature: `type Amount int`\n> Lines: 300-300\n```\ntype Amount int\n```\n\n### TYPE_ALIAS: `Resolver`\n> Signature: `type Resolver func(string) error`\n> Lines: 301-301\n```\ntype Resolver func(string) error\n```\n\n### CONSTANT: `RetryCount`\n> Signature: `const RetryCount = 3`\n> Lines: 302-302\n```\nconst RetryCount = 3\n```\n\n### CONSTANT: `LastError`\n> Signature: `var LastError error`\n> Lines: 303-303\n```\nvar LastError error\n```\n\n### FUNCTION: `reqCoverGo1`\n> Signature: `func reqCoverGo1(value int) int { return value + 1 }`\n> Lines: 311-311\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```\nfunc reqCoverGo1(value int) int { return value + 1 }\n```\n\n### FUNCTION: `reqCoverGo2`\n> Signature: `func reqCoverGo2(value int) int { return value + 2 }`\n> Lines: 318-318\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```\nfunc reqCoverGo2(value int) int { return value + 2 }\n```\n\n### FUNCTION: `reqCoverGo3`\n> Signature: `func reqCoverGo3(value int) int { return value + 3 }`\n> Lines: 325-325\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```\nfunc reqCoverGo3(value int) int { return value + 3 }\n```\n\n### FUNCTION: `reqCoverGo4`\n> Signature: `func reqCoverGo4(value int) int { return value + 4 }`\n> Lines: 332-332\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```\nfunc reqCoverGo4(value int) int { return value + 4 }\n```\n\n### FUNCTION: `reqCoverGo5`\n> Signature: `func reqCoverGo5(value int) int { return value + 5 }`\n> Lines: 339-339\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```\nfunc reqCoverGo5(value int) int { return value + 5 }\n```\n",
|
|
3
|
+
"stdout": "@@@ tests/fixtures/fixture_go.go | go\n\n### MODULE: `main`\n> Signature: `package main`\n> Lines: 12-48\n```\npackage main\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n)\nconst MaxSize = 100\nvar globalVar = 0\nconst (\n\tLogDebug = iota\n\tLogInfo\n\tLogError\n)\ntype Server struct {\n\tPort int\n\tHost string\n\tsync.Mutex\n\thandlers map[string]HandlerFunc\n}\n```\n\n### IMPORT: `(`\n> Lines: 14-14\n```\nimport (\n```\n\n### CONSTANT: `MaxSize`\n> Signature: `const MaxSize = 100`\n> Lines: 24-24\n```\nconst MaxSize = 100\n```\n\n### CONSTANT: `globalVar`\n> Signature: `var globalVar = 0`\n> Lines: 27-27\n```\nvar globalVar = 0\n```\n\n### STRUCT: `Server`\n> Signature: `type Server struct`\n> Lines: 43-48\n```\ntype Server struct {\n\tPort int\n\tHost string\n\tsync.Mutex\n\thandlers map[string]HandlerFunc\n}\n```\n\n### TYPE_ALIAS: `HandlerFunc`\n> Signature: `type HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)`\n> Lines: 51-51\n```\ntype HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)\n```\n\n### STRUCT: `Address`\n> Signature: `type Address struct`\n> Lines: 54-58\n```\ntype Address struct {\n\tStreet string\n\tCity string\n\tZip string\n}\n```\n\n### STRUCT: `Employee`\n> Signature: `type Employee struct`\n> Lines: 61-66\n```\ntype Employee struct {\n\tName string\n\tAge int\n\tAddress\n\tManager *Employee\n}\n```\n\n### INTERFACE: `Handler`\n> Signature: `type Handler interface`\n> Lines: 71-74\n```\ntype Handler interface {\n\tHandle(ctx context.Context, data []byte) error\n}\n```\n\n### INTERFACE: `ReadWriteCloser`\n> Signature: `type ReadWriteCloser interface`\n> Lines: 77-81\n```\ntype ReadWriteCloser interface {\n\tio.Reader\n\tio.Writer\n\tio.Closer\n}\n```\n\n### TYPE_ALIAS: `MyInt`\n> Signature: `type MyInt int`\n> Lines: 86-86\n```\ntype MyInt int\n```\n\n### METHOD: `String`\n> Signature: `func (m MyInt) String() string`\n> Lines: 89-91\n```\nfunc (m MyInt) String() string {\n\treturn fmt.Sprintf(\"MyInt(%d)\", int(m))\n}\n```\n\n### INTERFACE: `Ordered`\n> Signature: `type Ordered interface`\n> Lines: 104-106\n```\ntype Ordered interface {\n\t~int | ~float64 | ~string\n}\n```\n\n### FUNCTION: `main`\n> Signature: `func main()`\n> Lines: 111-113\n```\nfunc main() {\n\tfmt.Println(\"hello\")\n}\n```\n\n### FUNCTION: `init`\n> Signature: `func init()`\n> Lines: 116-119\n```\nfunc init() {\n\tglobalVar = 1\n}\n```\n\n### METHOD: `Start`\n> Signature: `func (s *Server) Start() error`\n> Lines: 123-132\n```\nfunc (s *Server) Start() error {\n\ts.Lock()\n\tdefer s.Unlock()\n\tif s.Port <= 0 {\n\t\treturn fmt.Errorf(\"invalid port: %d\", s.Port)\n\t}\n\tfmt.Printf(\"Starting on %s:%d\\n\", s.Host, s.Port)\n\treturn nil\n}\n```\n\n### METHOD: `Register`\n> Signature: `func (s *Server) Register(path string, handler HandlerFunc)`\n> Lines: 138-143\n- @param path The URL path to register.\n- @param handler The function to invoke for this path.\n```\nfunc (s *Server) Register(path string, handler HandlerFunc) {\n\tif s.handlers == nil {\n\t\ts.handlers = make(map[string]HandlerFunc)\n\t}\n\ts.handlers[path] = handler\n}\n```\n\n### FUNCTION: `Divide`\n> Signature: `func Divide(a, b int) (int, int, error)`\n> Lines: 180-185\n- @param a Dividend.\n- @param b Divisor; must not be zero.\n- @return Quotient and remainder, or error if b is zero.\n```\nfunc Divide(a, b int) (int, int, error) {\n\tif b == 0 {\n\t\treturn 0, 0, fmt.Errorf(\"division by zero\")\n\t}\n\treturn a / b, a % b, nil\n}\n```\n\n### FUNCTION: `ParseConfig`\n> Signature: `func ParseConfig(input string) (host string, port int, err error)`\n> Lines: 192-200\n- @param input Configuration string in \"host:port\" format.\n- @return Named host and port values, or error.\n```\nfunc ParseConfig(input string) (host string, port int, err error) {\n\t_, scanErr := fmt.Sscanf(input, \"%s:%d\", &host, &port)\n\tif scanErr != nil {\n\t\terr = scanErr\n\t\treturn\n\t}\n\treturn\n}\n```\n\n### FUNCTION: `Counter`\n> Signature: `func Counter() func() int`\n> Lines: 206-213\n- @return Closure yielding successive integer counts.\n```\nfunc Counter() func() int {\n\tcount := 0\n\treturn func() int {\n\t\tcount++\n\t\treturn count\n\t}\n}\n```\n\n### FUNCTION: `FanOut`\n> Signature: `func FanOut(items []string, workers int) <-chan string`\n> Lines: 221-243\n- @param items Slice of strings to process.\n- @param workers Number of concurrent worker goroutines.\n- @return Channel delivering processed results.\n```\nfunc FanOut(items []string, workers int) <-chan string {\n\tresults := make(chan string, len(items))\n\tvar wg sync.WaitGroup\n\tfor i := 0; i < workers; i++ {\n\t\twg.Add(1)\n\t\tgo func(id int) {\n\t\t\tdefer wg.Done()\n\t\t\tfor _, item := range items {\n\t\t\t\tresults <- fmt.Sprintf(\"[%d] %s\", id, item)\n\t\t\t}\n\t\t}(i)\n\t}\n\tgo func() {\n\t\twg.Wait()\n\t\tclose(results)\n\t}()\n\treturn results\n}\n```\n\n### CONSTANT: `wg`\n> Signature: `\tvar wg sync.WaitGroup`\n> Lines: 223-223\n```\n\tvar wg sync.WaitGroup\n```\n\n### FUNCTION: `Describe`\n> Signature: `func Describe(v interface{}) string`\n> Lines: 250-266\n- @param v Any value to describe.\n- @return Human-readable type description.\n```\nfunc Describe(v interface{}) string {\n\tswitch val := v.(type) {\n\tcase int:\n\t\treturn fmt.Sprintf(\"int: %d\", val)\n\tcase string:\n\t\treturn fmt.Sprintf(\"string: %q\", val)\n\tcase bool:\n\t\tif val {\n\t\t\treturn \"bool: true\"\n\t\t}\n\t\treturn \"bool: false\"\n\tcase nil:\n\t\treturn \"nil\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"unknown: %T\", val)\n\t}\n}\n```\n\n### FUNCTION: `SafeExecute`\n> Signature: `func SafeExecute(fn func()) (err error)`\n> Lines: 273-282\n- @param fn The function to execute safely.\n- @return Error if fn panicked, nil otherwise.\n```\nfunc SafeExecute(fn func()) (err error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\terr = fmt.Errorf(\"panic: %v\", r)\n\t\t}\n\t}()\n\tfn()\n\treturn nil\n}\n```\n\n### MODULE: `utilx`\n> Signature: `package utilx`\n> Lines: 285-293\n```\npackage utilx\npackage configx\npackage jobsx\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\n```\n\n### MODULE: `configx`\n> Signature: `package configx`\n> Lines: 286-293\n```\npackage configx\npackage jobsx\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\n```\n\n### MODULE: `jobsx`\n> Signature: `package jobsx`\n> Lines: 287-293\n```\npackage jobsx\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\n```\n\n### MODULE: `metricx`\n> Signature: `package metricx`\n> Lines: 288-293\n```\npackage metricx\nimport \"os\"\nimport \"time\"\nimport \"strings\"\nimport \"bytes\"\nfunc (s *Server) Stop() {}\n```\n\n### IMPORT: `\"os\"`\n> Lines: 289-289\n```\nimport \"os\"\n```\n\n### IMPORT: `\"time\"`\n> Lines: 290-290\n```\nimport \"time\"\n```\n\n### IMPORT: `\"strings\"`\n> Lines: 291-291\n```\nimport \"strings\"\n```\n\n### IMPORT: `\"bytes\"`\n> Lines: 292-292\n```\nimport \"bytes\"\n```\n\n### METHOD: `Stop`\n> Signature: `func (s *Server) Stop() {}`\n> Lines: 293-293\n```\nfunc (s *Server) Stop() {}\n```\n\n### METHOD: `Reset`\n> Signature: `func (s *Server) Reset() {}`\n> Lines: 294-294\n```\nfunc (s *Server) Reset() {}\n```\n\n### STRUCT: `Session`\n> Signature: `type Session struct { Id string }`\n> Lines: 295-295\n```\ntype Session struct { Id string }\n```\n\n### STRUCT: `Bucket`\n> Signature: `type Bucket struct { Name string }`\n> Lines: 296-296\n```\ntype Bucket struct { Name string }\n```\n\n### INTERFACE: `Closer`\n> Signature: `type Closer interface { Close() error }`\n> Lines: 297-297\n```\ntype Closer interface { Close() error }\n```\n\n### INTERFACE: `Starter`\n> Signature: `type Starter interface { Start() error }`\n> Lines: 298-298\n```\ntype Starter interface { Start() error }\n```\n\n### TYPE_ALIAS: `UserAlias`\n> Signature: `type UserAlias string`\n> Lines: 299-299\n```\ntype UserAlias string\n```\n\n### TYPE_ALIAS: `Amount`\n> Signature: `type Amount int`\n> Lines: 300-300\n```\ntype Amount int\n```\n\n### TYPE_ALIAS: `Resolver`\n> Signature: `type Resolver func(string) error`\n> Lines: 301-301\n```\ntype Resolver func(string) error\n```\n\n### CONSTANT: `RetryCount`\n> Signature: `const RetryCount = 3`\n> Lines: 302-302\n```\nconst RetryCount = 3\n```\n\n### CONSTANT: `LastError`\n> Signature: `var LastError error`\n> Lines: 303-303\n```\nvar LastError error\n```\n\n### FUNCTION: `reqCoverGo1`\n> Signature: `func reqCoverGo1(value int) int { return value + 1 }`\n> Lines: 311-311\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```\nfunc reqCoverGo1(value int) int { return value + 1 }\n```\n\n### FUNCTION: `reqCoverGo2`\n> Signature: `func reqCoverGo2(value int) int { return value + 2 }`\n> Lines: 318-318\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```\nfunc reqCoverGo2(value int) int { return value + 2 }\n```\n\n### FUNCTION: `reqCoverGo3`\n> Signature: `func reqCoverGo3(value int) int { return value + 3 }`\n> Lines: 325-325\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```\nfunc reqCoverGo3(value int) int { return value + 3 }\n```\n\n### FUNCTION: `reqCoverGo4`\n> Signature: `func reqCoverGo4(value int) int { return value + 4 }`\n> Lines: 332-332\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```\nfunc reqCoverGo4(value int) int { return value + 4 }\n```\n\n### FUNCTION: `reqCoverGo5`\n> Signature: `func reqCoverGo5(value int) int { return value + 5 }`\n> Lines: 339-339\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```\nfunc reqCoverGo5(value int) int { return value + 5 }\n```\n",
|
|
4
4
|
"stderr": ""
|
|
5
5
|
}
|
package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_go.go.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"code": 0,
|
|
3
|
-
"stdout": "@@@ tests/fixtures/fixture_go.go | go\n\n### MODULE: `main`\n> Signature: `package main`\n> Lines: 12-48\n```\n12: package main\n14: import (\n15: \"context\"\n16: \"fmt\"\n17: \"io\"\n18: \"sync\"\n19: )\n24: const MaxSize = 100\n27: var globalVar = 0\n30: const (\n32: LogDebug = iota\n34: LogInfo\n36: LogError\n37: )\n43: type Server struct {\n44: Port int\n45: Host string\n46: sync.Mutex\n47: handlers map[string]HandlerFunc\n48: }\n```\n\n### IMPORT: `(`\n> Lines: 14-14\n```\n14: import (\n```\n\n### CONSTANT: `MaxSize`\n> Signature: `const MaxSize = 100`\n> Lines: 24-24\n```\n24: const MaxSize = 100\n```\n\n### CONSTANT: `globalVar`\n> Signature: `var globalVar = 0`\n> Lines: 27-27\n```\n27: var globalVar = 0\n```\n\n### STRUCT: `Server`\n> Signature: `type Server struct`\n> Lines: 43-48\n```\n43: type Server struct {\n44: Port int\n45: Host string\n46: sync.Mutex\n47: handlers map[string]HandlerFunc\n48: }\n```\n\n### TYPE_ALIAS: `HandlerFunc`\n> Signature: `type HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)`\n> Lines: 51-51\n```\n51: type HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)\n```\n\n### STRUCT: `Address`\n> Signature: `type Address struct`\n> Lines: 54-58\n```\n54: type Address struct {\n55: Street string\n56: City string\n57: Zip string\n58: }\n```\n\n### STRUCT: `Employee`\n> Signature: `type Employee struct`\n> Lines: 61-66\n```\n61: type Employee struct {\n62: Name string\n63: Age int\n64: Address\n65: Manager *Employee\n66: }\n```\n\n### INTERFACE: `Handler`\n> Signature: `type Handler interface`\n> Lines: 71-74\n```\n71: type Handler interface {\n73: Handle(ctx context.Context, data []byte) error\n74: }\n```\n\n### INTERFACE: `ReadWriteCloser`\n> Signature: `type ReadWriteCloser interface`\n> Lines: 77-81\n```\n77: type ReadWriteCloser interface {\n78: io.Reader\n79: io.Writer\n80: io.Closer\n81: }\n```\n\n### TYPE_ALIAS: `MyInt`\n> Signature: `type MyInt int`\n> Lines: 86-86\n```\n86: type MyInt int\n```\n\n### METHOD: `String`\n> Signature: `func (m MyInt) String() string`\n> Lines: 89-91\n```\n89: func (m MyInt) String() string {\n90: return fmt.Sprintf(\"MyInt(%d)\", int(m))\n91: }\n```\n\n### INTERFACE: `Ordered`\n> Signature: `type Ordered interface`\n> Lines: 104-106\n```\n104: type Ordered interface {\n105: ~int | ~float64 | ~string\n106: }\n```\n\n### FUNCTION: `main`\n> Signature: `func main()`\n> Lines: 111-113\n```\n111: func main() {\n112: fmt.Println(\"hello\")\n113: }\n```\n\n### FUNCTION: `init`\n> Signature: `func init()`\n> Lines: 116-119\n```\n116: func init() {\n118: globalVar = 1\n119: }\n```\n\n### METHOD: `Start`\n> Signature: `func (s *Server) Start() error`\n> Lines: 123-132\n```\n123: func (s *Server) Start() error {\n124: s.Lock()\n125: defer s.Unlock()\n127: if s.Port <= 0 {\n128: return fmt.Errorf(\"invalid port: %d\", s.Port)\n129: }\n130: fmt.Printf(\"Starting on %s:%d\\n\", s.Host, s.Port)\n131: return nil\n132: }\n```\n\n### METHOD: `Register`\n> Signature: `func (s *Server) Register(path string, handler HandlerFunc)`\n> Lines: 138-143\n- @param path The URL path to register.\n- @param handler The function to invoke for this path.\n```\n138: func (s *Server) Register(path string, handler HandlerFunc) {\n139: if s.handlers == nil {\n140: s.handlers = make(map[string]HandlerFunc)\n141: }\n142: s.handlers[path] = handler\n143: }\n```\n\n### FUNCTION: `Divide`\n> Signature: `func Divide(a, b int) (int, int, error)`\n> Lines: 180-185\n- @param a Dividend.\n- @param b Divisor; must not be zero.\n- @return Quotient and remainder, or error if b is zero.\n```\n180: func Divide(a, b int) (int, int, error) {\n181: if b == 0 {\n182: return 0, 0, fmt.Errorf(\"division by zero\")\n183: }\n184: return a / b, a % b, nil\n185: }\n```\n\n### FUNCTION: `ParseConfig`\n> Signature: `func ParseConfig(input string) (host string, port int, err error)`\n> Lines: 192-200\n- @param input Configuration string in \"host:port\" format.\n- @return Named host and port values, or error.\n```\n192: func ParseConfig(input string) (host string, port int, err error) {\n194: _, scanErr := fmt.Sscanf(input, \"%s:%d\", &host, &port)\n195: if scanErr != nil {\n196: err = scanErr\n197: return\n198: }\n199: return\n200: }\n```\n\n### FUNCTION: `Counter`\n> Signature: `func Counter() func() int`\n> Lines: 206-213\n- @return Closure yielding successive integer counts.\n```\n206: func Counter() func() int {\n207: count := 0\n208: return func() int {\n210: count++\n211: return count\n212: }\n213: }\n```\n\n### FUNCTION: `FanOut`\n> Signature: `func FanOut(items []string, workers int) <-chan string`\n> Lines: 221-243\n- @param items Slice of strings to process.\n- @param workers Number of concurrent worker goroutines.\n- @return Channel delivering processed results.\n```\n221: func FanOut(items []string, workers int) <-chan string {\n222: results := make(chan string, len(items))\n223: var wg sync.WaitGroup\n225: for i := 0; i < workers; i++ {\n226: wg.Add(1)\n227: go func(id int) {\n228: defer wg.Done()\n230: for _, item := range items {\n231: results <- fmt.Sprintf(\"[%d] %s\", id, item)\n232: }\n233: }(i)\n234: }\n237: go func() {\n238: wg.Wait()\n239: close(results)\n240: }()\n242: return results\n243: }\n```\n\n### CONSTANT: `wg`\n> Signature: `var wg sync.WaitGroup`\n> Lines: 223-223\n```\n223: var wg sync.WaitGroup\n```\n\n### FUNCTION: `Describe`\n> Signature: `func Describe(v interface{}) string`\n> Lines: 250-266\n- @param v Any value to describe.\n- @return Human-readable type description.\n```\n250: func Describe(v interface{}) string {\n251: switch val := v.(type) {\n252: case int:\n253: return fmt.Sprintf(\"int: %d\", val)\n254: case string:\n255: return fmt.Sprintf(\"string: %q\", val)\n256: case bool:\n257: if val {\n258: return \"bool: true\"\n259: }\n260: return \"bool: false\"\n261: case nil:\n262: return \"nil\"\n263: default:\n264: return fmt.Sprintf(\"unknown: %T\", val)\n265: }\n266: }\n```\n\n### FUNCTION: `SafeExecute`\n> Signature: `func SafeExecute(fn func()) (err error)`\n> Lines: 273-282\n- @param fn The function to execute safely.\n- @return Error if fn panicked, nil otherwise.\n```\n273: func SafeExecute(fn func()) (err error) {\n274: defer func() {\n275: if r := recover(); r != nil {\n277: err = fmt.Errorf(\"panic: %v\", r)\n278: }\n279: }()\n280: fn()\n281: return nil\n282: }\n```\n\n### MODULE: `utilx`\n> Signature: `package utilx`\n> Lines: 285-293\n```\n285: package utilx\n286: package configx\n287: package jobsx\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n```\n\n### MODULE: `configx`\n> Signature: `package configx`\n> Lines: 286-293\n```\n286: package configx\n287: package jobsx\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n```\n\n### MODULE: `jobsx`\n> Signature: `package jobsx`\n> Lines: 287-293\n```\n287: package jobsx\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n```\n\n### MODULE: `metricx`\n> Signature: `package metricx`\n> Lines: 288-293\n```\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n```\n\n### IMPORT: `\"os\"`\n> Lines: 289-289\n```\n289: import \"os\"\n```\n\n### IMPORT: `\"time\"`\n> Lines: 290-290\n```\n290: import \"time\"\n```\n\n### IMPORT: `\"strings\"`\n> Lines: 291-291\n```\n291: import \"strings\"\n```\n\n### IMPORT: `\"bytes\"`\n> Lines: 292-292\n```\n292: import \"bytes\"\n```\n\n### METHOD: `Stop`\n> Signature: `func (s *Server) Stop() {}`\n> Lines: 293-293\n```\n293: func (s *Server) Stop() {}\n```\n\n### METHOD: `Reset`\n> Signature: `func (s *Server) Reset() {}`\n> Lines: 294-294\n```\n294: func (s *Server) Reset() {}\n```\n\n### STRUCT: `Session`\n> Signature: `type Session struct { Id string }`\n> Lines: 295-295\n```\n295: type Session struct { Id string }\n```\n\n### STRUCT: `Bucket`\n> Signature: `type Bucket struct { Name string }`\n> Lines: 296-296\n```\n296: type Bucket struct { Name string }\n```\n\n### INTERFACE: `Closer`\n> Signature: `type Closer interface { Close() error }`\n> Lines: 297-297\n```\n297: type Closer interface { Close() error }\n```\n\n### INTERFACE: `Starter`\n> Signature: `type Starter interface { Start() error }`\n> Lines: 298-298\n```\n298: type Starter interface { Start() error }\n```\n\n### TYPE_ALIAS: `UserAlias`\n> Signature: `type UserAlias string`\n> Lines: 299-299\n```\n299: type UserAlias string\n```\n\n### TYPE_ALIAS: `Amount`\n> Signature: `type Amount int`\n> Lines: 300-300\n```\n300: type Amount int\n```\n\n### TYPE_ALIAS: `Resolver`\n> Signature: `type Resolver func(string) error`\n> Lines: 301-301\n```\n301: type Resolver func(string) error\n```\n\n### CONSTANT: `RetryCount`\n> Signature: `const RetryCount = 3`\n> Lines: 302-302\n```\n302: const RetryCount = 3\n```\n\n### CONSTANT: `LastError`\n> Signature: `var LastError error`\n> Lines: 303-303\n```\n303: var LastError error\n```\n\n### FUNCTION: `reqCoverGo1`\n> Signature: `func reqCoverGo1(value int) int { return value + 1 }`\n> Lines: 311-311\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```\n311: func reqCoverGo1(value int) int { return value + 1 }\n```\n\n### FUNCTION: `reqCoverGo2`\n> Signature: `func reqCoverGo2(value int) int { return value + 2 }`\n> Lines: 318-318\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```\n318: func reqCoverGo2(value int) int { return value + 2 }\n```\n\n### FUNCTION: `reqCoverGo3`\n> Signature: `func reqCoverGo3(value int) int { return value + 3 }`\n> Lines: 325-325\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```\n325: func reqCoverGo3(value int) int { return value + 3 }\n```\n\n### FUNCTION: `reqCoverGo4`\n> Signature: `func reqCoverGo4(value int) int { return value + 4 }`\n> Lines: 332-332\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```\n332: func reqCoverGo4(value int) int { return value + 4 }\n```\n\n### FUNCTION: `reqCoverGo5`\n> Signature: `func reqCoverGo5(value int) int { return value + 5 }`\n> Lines: 339-339\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```\n339: func reqCoverGo5(value int) int { return value + 5 }\n```\n",
|
|
3
|
+
"stdout": "@@@ tests/fixtures/fixture_go.go | go\n\n### MODULE: `main`\n> Signature: `package main`\n> Lines: 12-48\n```\n12: package main\n14: import (\n15: \t\"context\"\n16: \t\"fmt\"\n17: \t\"io\"\n18: \t\"sync\"\n19: )\n24: const MaxSize = 100\n27: var globalVar = 0\n30: const (\n32: \tLogDebug = iota\n34: \tLogInfo\n36: \tLogError\n37: )\n43: type Server struct {\n44: \tPort int\n45: \tHost string\n46: \tsync.Mutex\n47: \thandlers map[string]HandlerFunc\n48: }\n```\n\n### IMPORT: `(`\n> Lines: 14-14\n```\n14: import (\n```\n\n### CONSTANT: `MaxSize`\n> Signature: `const MaxSize = 100`\n> Lines: 24-24\n```\n24: const MaxSize = 100\n```\n\n### CONSTANT: `globalVar`\n> Signature: `var globalVar = 0`\n> Lines: 27-27\n```\n27: var globalVar = 0\n```\n\n### STRUCT: `Server`\n> Signature: `type Server struct`\n> Lines: 43-48\n```\n43: type Server struct {\n44: \tPort int\n45: \tHost string\n46: \tsync.Mutex\n47: \thandlers map[string]HandlerFunc\n48: }\n```\n\n### TYPE_ALIAS: `HandlerFunc`\n> Signature: `type HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)`\n> Lines: 51-51\n```\n51: type HandlerFunc func(ctx context.Context, req []byte) ([]byte, error)\n```\n\n### STRUCT: `Address`\n> Signature: `type Address struct`\n> Lines: 54-58\n```\n54: type Address struct {\n55: \tStreet string\n56: \tCity string\n57: \tZip string\n58: }\n```\n\n### STRUCT: `Employee`\n> Signature: `type Employee struct`\n> Lines: 61-66\n```\n61: type Employee struct {\n62: \tName string\n63: \tAge int\n64: \tAddress\n65: \tManager *Employee\n66: }\n```\n\n### INTERFACE: `Handler`\n> Signature: `type Handler interface`\n> Lines: 71-74\n```\n71: type Handler interface {\n73: \tHandle(ctx context.Context, data []byte) error\n74: }\n```\n\n### INTERFACE: `ReadWriteCloser`\n> Signature: `type ReadWriteCloser interface`\n> Lines: 77-81\n```\n77: type ReadWriteCloser interface {\n78: \tio.Reader\n79: \tio.Writer\n80: \tio.Closer\n81: }\n```\n\n### TYPE_ALIAS: `MyInt`\n> Signature: `type MyInt int`\n> Lines: 86-86\n```\n86: type MyInt int\n```\n\n### METHOD: `String`\n> Signature: `func (m MyInt) String() string`\n> Lines: 89-91\n```\n89: func (m MyInt) String() string {\n90: \treturn fmt.Sprintf(\"MyInt(%d)\", int(m))\n91: }\n```\n\n### INTERFACE: `Ordered`\n> Signature: `type Ordered interface`\n> Lines: 104-106\n```\n104: type Ordered interface {\n105: \t~int | ~float64 | ~string\n106: }\n```\n\n### FUNCTION: `main`\n> Signature: `func main()`\n> Lines: 111-113\n```\n111: func main() {\n112: \tfmt.Println(\"hello\")\n113: }\n```\n\n### FUNCTION: `init`\n> Signature: `func init()`\n> Lines: 116-119\n```\n116: func init() {\n118: \tglobalVar = 1\n119: }\n```\n\n### METHOD: `Start`\n> Signature: `func (s *Server) Start() error`\n> Lines: 123-132\n```\n123: func (s *Server) Start() error {\n124: \ts.Lock()\n125: \tdefer s.Unlock()\n127: \tif s.Port <= 0 {\n128: \t\treturn fmt.Errorf(\"invalid port: %d\", s.Port)\n129: \t}\n130: \tfmt.Printf(\"Starting on %s:%d\\n\", s.Host, s.Port)\n131: \treturn nil\n132: }\n```\n\n### METHOD: `Register`\n> Signature: `func (s *Server) Register(path string, handler HandlerFunc)`\n> Lines: 138-143\n- @param path The URL path to register.\n- @param handler The function to invoke for this path.\n```\n138: func (s *Server) Register(path string, handler HandlerFunc) {\n139: \tif s.handlers == nil {\n140: \t\ts.handlers = make(map[string]HandlerFunc)\n141: \t}\n142: \ts.handlers[path] = handler\n143: }\n```\n\n### FUNCTION: `Divide`\n> Signature: `func Divide(a, b int) (int, int, error)`\n> Lines: 180-185\n- @param a Dividend.\n- @param b Divisor; must not be zero.\n- @return Quotient and remainder, or error if b is zero.\n```\n180: func Divide(a, b int) (int, int, error) {\n181: \tif b == 0 {\n182: \t\treturn 0, 0, fmt.Errorf(\"division by zero\")\n183: \t}\n184: \treturn a / b, a % b, nil\n185: }\n```\n\n### FUNCTION: `ParseConfig`\n> Signature: `func ParseConfig(input string) (host string, port int, err error)`\n> Lines: 192-200\n- @param input Configuration string in \"host:port\" format.\n- @return Named host and port values, or error.\n```\n192: func ParseConfig(input string) (host string, port int, err error) {\n194: \t_, scanErr := fmt.Sscanf(input, \"%s:%d\", &host, &port)\n195: \tif scanErr != nil {\n196: \t\terr = scanErr\n197: \t\treturn\n198: \t}\n199: \treturn\n200: }\n```\n\n### FUNCTION: `Counter`\n> Signature: `func Counter() func() int`\n> Lines: 206-213\n- @return Closure yielding successive integer counts.\n```\n206: func Counter() func() int {\n207: \tcount := 0\n208: \treturn func() int {\n210: \t\tcount++\n211: \t\treturn count\n212: \t}\n213: }\n```\n\n### FUNCTION: `FanOut`\n> Signature: `func FanOut(items []string, workers int) <-chan string`\n> Lines: 221-243\n- @param items Slice of strings to process.\n- @param workers Number of concurrent worker goroutines.\n- @return Channel delivering processed results.\n```\n221: func FanOut(items []string, workers int) <-chan string {\n222: \tresults := make(chan string, len(items))\n223: \tvar wg sync.WaitGroup\n225: \tfor i := 0; i < workers; i++ {\n226: \t\twg.Add(1)\n227: \t\tgo func(id int) {\n228: \t\t\tdefer wg.Done()\n230: \t\t\tfor _, item := range items {\n231: \t\t\t\tresults <- fmt.Sprintf(\"[%d] %s\", id, item)\n232: \t\t\t}\n233: \t\t}(i)\n234: \t}\n237: \tgo func() {\n238: \t\twg.Wait()\n239: \t\tclose(results)\n240: \t}()\n242: \treturn results\n243: }\n```\n\n### CONSTANT: `wg`\n> Signature: `\tvar wg sync.WaitGroup`\n> Lines: 223-223\n```\n223: \tvar wg sync.WaitGroup\n```\n\n### FUNCTION: `Describe`\n> Signature: `func Describe(v interface{}) string`\n> Lines: 250-266\n- @param v Any value to describe.\n- @return Human-readable type description.\n```\n250: func Describe(v interface{}) string {\n251: \tswitch val := v.(type) {\n252: \tcase int:\n253: \t\treturn fmt.Sprintf(\"int: %d\", val)\n254: \tcase string:\n255: \t\treturn fmt.Sprintf(\"string: %q\", val)\n256: \tcase bool:\n257: \t\tif val {\n258: \t\t\treturn \"bool: true\"\n259: \t\t}\n260: \t\treturn \"bool: false\"\n261: \tcase nil:\n262: \t\treturn \"nil\"\n263: \tdefault:\n264: \t\treturn fmt.Sprintf(\"unknown: %T\", val)\n265: \t}\n266: }\n```\n\n### FUNCTION: `SafeExecute`\n> Signature: `func SafeExecute(fn func()) (err error)`\n> Lines: 273-282\n- @param fn The function to execute safely.\n- @return Error if fn panicked, nil otherwise.\n```\n273: func SafeExecute(fn func()) (err error) {\n274: \tdefer func() {\n275: \t\tif r := recover(); r != nil {\n277: \t\t\terr = fmt.Errorf(\"panic: %v\", r)\n278: \t\t}\n279: \t}()\n280: \tfn()\n281: \treturn nil\n282: }\n```\n\n### MODULE: `utilx`\n> Signature: `package utilx`\n> Lines: 285-293\n```\n285: package utilx\n286: package configx\n287: package jobsx\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n```\n\n### MODULE: `configx`\n> Signature: `package configx`\n> Lines: 286-293\n```\n286: package configx\n287: package jobsx\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n```\n\n### MODULE: `jobsx`\n> Signature: `package jobsx`\n> Lines: 287-293\n```\n287: package jobsx\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n```\n\n### MODULE: `metricx`\n> Signature: `package metricx`\n> Lines: 288-293\n```\n288: package metricx\n289: import \"os\"\n290: import \"time\"\n291: import \"strings\"\n292: import \"bytes\"\n293: func (s *Server) Stop() {}\n```\n\n### IMPORT: `\"os\"`\n> Lines: 289-289\n```\n289: import \"os\"\n```\n\n### IMPORT: `\"time\"`\n> Lines: 290-290\n```\n290: import \"time\"\n```\n\n### IMPORT: `\"strings\"`\n> Lines: 291-291\n```\n291: import \"strings\"\n```\n\n### IMPORT: `\"bytes\"`\n> Lines: 292-292\n```\n292: import \"bytes\"\n```\n\n### METHOD: `Stop`\n> Signature: `func (s *Server) Stop() {}`\n> Lines: 293-293\n```\n293: func (s *Server) Stop() {}\n```\n\n### METHOD: `Reset`\n> Signature: `func (s *Server) Reset() {}`\n> Lines: 294-294\n```\n294: func (s *Server) Reset() {}\n```\n\n### STRUCT: `Session`\n> Signature: `type Session struct { Id string }`\n> Lines: 295-295\n```\n295: type Session struct { Id string }\n```\n\n### STRUCT: `Bucket`\n> Signature: `type Bucket struct { Name string }`\n> Lines: 296-296\n```\n296: type Bucket struct { Name string }\n```\n\n### INTERFACE: `Closer`\n> Signature: `type Closer interface { Close() error }`\n> Lines: 297-297\n```\n297: type Closer interface { Close() error }\n```\n\n### INTERFACE: `Starter`\n> Signature: `type Starter interface { Start() error }`\n> Lines: 298-298\n```\n298: type Starter interface { Start() error }\n```\n\n### TYPE_ALIAS: `UserAlias`\n> Signature: `type UserAlias string`\n> Lines: 299-299\n```\n299: type UserAlias string\n```\n\n### TYPE_ALIAS: `Amount`\n> Signature: `type Amount int`\n> Lines: 300-300\n```\n300: type Amount int\n```\n\n### TYPE_ALIAS: `Resolver`\n> Signature: `type Resolver func(string) error`\n> Lines: 301-301\n```\n301: type Resolver func(string) error\n```\n\n### CONSTANT: `RetryCount`\n> Signature: `const RetryCount = 3`\n> Lines: 302-302\n```\n302: const RetryCount = 3\n```\n\n### CONSTANT: `LastError`\n> Signature: `var LastError error`\n> Lines: 303-303\n```\n303: var LastError error\n```\n\n### FUNCTION: `reqCoverGo1`\n> Signature: `func reqCoverGo1(value int) int { return value + 1 }`\n> Lines: 311-311\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```\n311: func reqCoverGo1(value int) int { return value + 1 }\n```\n\n### FUNCTION: `reqCoverGo2`\n> Signature: `func reqCoverGo2(value int) int { return value + 2 }`\n> Lines: 318-318\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```\n318: func reqCoverGo2(value int) int { return value + 2 }\n```\n\n### FUNCTION: `reqCoverGo3`\n> Signature: `func reqCoverGo3(value int) int { return value + 3 }`\n> Lines: 325-325\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```\n325: func reqCoverGo3(value int) int { return value + 3 }\n```\n\n### FUNCTION: `reqCoverGo4`\n> Signature: `func reqCoverGo4(value int) int { return value + 4 }`\n> Lines: 332-332\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```\n332: func reqCoverGo4(value int) int { return value + 4 }\n```\n\n### FUNCTION: `reqCoverGo5`\n> Signature: `func reqCoverGo5(value int) int { return value + 5 }`\n> Lines: 339-339\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```\n339: func reqCoverGo5(value int) int { return value + 5 }\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_c.c\"\n ],\n \"requested_canonical_paths\": [\n \"tests/fixtures/fixture_c.c\"\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\": 60,\n \"total_import_count\": 5,\n \"total_comment_count\": 79,\n \"total_standalone_comment_count\": 45,\n \"total_doxygen_field_count\": 84,\n \"symbol_kind_counts\": {\n \"ENUM\": 5,\n \"FUNCTION\": 16,\n \"MACRO\": 6,\n \"STRUCT\": 6,\n \"TYPEDEF\": 5,\n \"UNION\": 5,\n \"VARIABLE\": 17\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_c.c\"\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_c.c\",\n \"relative_path\": \"tests/fixtures/fixture_c.c\",\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\": 361,\n \"line_range\": [\n 1,\n 361\n ],\n \"request_index\": 0,\n \"input_path\": \"tests/fixtures/fixture_c.c\",\n \"canonical_path\": \"tests/fixtures/fixture_c.c\",\n \"absolute_path\": \"<ROOT>/tests/fixtures/fixture_c.c\",\n \"file_name\": \"fixture_c.c\",\n \"file_extension\": \".c\",\n \"language_id\": \"c\",\n \"language_name\": \"C\",\n \"status\": \"analyzed\",\n \"exists\": true,\n \"is_file\": true,\n \"import_count\": 5,\n \"symbol_count\": 60,\n \"comment_count\": 79,\n \"standalone_comment_count\": 45,\n \"doxygen_field_count\": 84,\n \"file_doxygen\": {\n \"brief\": [\n \"Comprehensive C language test fixture for parser validation.\"\n ],\n \"details\": [\n \"Covers structs, unions, enums, function pointers, inline functions,\\npreprocessor directives, bitfields, variadic functions, and complex\\ntypedef chains that stress-test regex-based parsing.\"\n ]\n },\n \"imports\": [\n {\n \"start_line_number\": 14,\n \"end_line_number\": 14,\n \"line_range\": [\n 14,\n 14\n ],\n \"import_name\": \"\\\"myheader.h\\\"\",\n \"statement_text\": \"#include \\\"myheader.h\\\"\"\n },\n {\n \"start_line_number\": 15,\n \"end_line_number\": 15,\n \"line_range\": [\n 15,\n 15\n ],\n \"import_name\": \"<stdarg.h>\",\n \"statement_text\": \"#include <stdarg.h>\"\n },\n {\n \"start_line_number\": 16,\n \"end_line_number\": 16,\n \"line_range\": [\n 16,\n 16\n ],\n \"import_name\": \"<stdio.h>\",\n \"statement_text\": \"#include <stdio.h>\"\n },\n {\n \"start_line_number\": 17,\n \"end_line_number\": 17,\n \"line_range\": [\n 17,\n 17\n ],\n \"import_name\": \"<stdlib.h>\",\n \"statement_text\": \"#include <stdlib.h>\"\n },\n {\n \"start_line_number\": 18,\n \"end_line_number\": 18,\n \"line_range\": [\n 18,\n 18\n ],\n \"import_name\": \"<string.h>\",\n \"statement_text\": \"#include <string.h>\"\n }\n ],\n \"symbols\": [\n {\n \"start_line_number\": 22,\n \"end_line_number\": 22,\n \"line_range\": [\n 22,\n 22\n ],\n \"declaration_order_index\": 0,\n \"symbol_name\": \"MAX_SIZE\",\n \"qualified_name\": \"MAX_SIZE\",\n \"symbol_kind\": \"MACRO\",\n \"type_label\": \"MACRO\",\n \"signature_text\": \"#define MAX_SIZE 100\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"── Preprocessor directives ────────────────────────────────────────────\",\n \"attached_comment_lines\": [\n \"── Preprocessor directives ────────────────────────────────────────────\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 31,\n \"end_line_number\": 31,\n \"line_range\": [\n 31,\n 31\n ],\n \"declaration_order_index\": 1,\n \"symbol_name\": \"CLAMP\",\n \"qualified_name\": \"CLAMP\",\n \"symbol_kind\": \"MACRO\",\n \"type_label\": \"MACRO\",\n \"signature_text\": \"#define CLAMP(val, lo, hi) ((val) < (lo) ? (lo) : ((val) > (hi) ? (hi) : (val)))\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Constrain value between lower and upper bounds.\",\n \"doxygen\": {\n \"brief\": [\n \"Constrain value between lower and upper bounds.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"val\",\n \"description\": \"Value to clamp.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"lo\",\n \"description\": \"Minimum allowed value.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"hi\",\n \"description\": \"Maximum allowed value.\"\n }\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 34,\n \"end_line_number\": 34,\n \"line_range\": [\n 34,\n 34\n ],\n \"declaration_order_index\": 2,\n \"symbol_name\": \"STRINGIFY\",\n \"qualified_name\": \"STRINGIFY\",\n \"symbol_kind\": \"MACRO\",\n \"type_label\": \"MACRO\",\n \"signature_text\": \"#define STRINGIFY(x) #x\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@def STRINGIFY Wrap token in double quotes at compile time.\",\n \"attached_comment_lines\": [\n \"@def STRINGIFY Wrap token in double quotes at compile time.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 40,\n \"end_line_number\": 40,\n \"line_range\": [\n 40,\n 40\n ],\n \"declaration_order_index\": 3,\n \"symbol_name\": \"CONCAT\",\n \"qualified_name\": \"CONCAT\",\n \"symbol_kind\": \"MACRO\",\n \"type_label\": \"MACRO\",\n \"signature_text\": \"#define CONCAT(a, b) a##b\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Token-pasting macro joining two identifiers.\",\n \"doxygen\": {\n \"brief\": [\n \"Token-pasting macro joining two identifiers.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 43,\n \"end_line_number\": 43,\n \"line_range\": [\n 43,\n 43\n ],\n \"declaration_order_index\": 4,\n \"symbol_name\": \"LOG\",\n \"qualified_name\": \"LOG\",\n \"symbol_kind\": \"MACRO\",\n \"type_label\": \"MACRO\",\n \"signature_text\": \"#define LOG(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__)\",\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\": 45,\n \"end_line_number\": 45,\n \"line_range\": [\n 45,\n 45\n ],\n \"declaration_order_index\": 5,\n \"symbol_name\": \"LOG\",\n \"qualified_name\": \"LOG\",\n \"symbol_kind\": \"MACRO\",\n \"type_label\": \"MACRO\",\n \"signature_text\": \"#define LOG(fmt, ...) ((void)0)\",\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\": 51,\n \"end_line_number\": 51,\n \"line_range\": [\n 51,\n 51\n ],\n \"declaration_order_index\": 6,\n \"symbol_name\": \"my_int\",\n \"qualified_name\": \"my_int\",\n \"symbol_kind\": \"TYPEDEF\",\n \"type_label\": \"TYPEDEF\",\n \"signature_text\": \"typedef int my_int\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"── Simple typedef ────────────────────────────────────────────────────\",\n \"attached_comment_lines\": [\n \"── Simple typedef ────────────────────────────────────────────────────\",\n \"@typedef my_int Alias for int used in legacy interfaces.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 54,\n \"end_line_number\": 54,\n \"line_range\": [\n 54,\n 54\n ],\n \"declaration_order_index\": 7,\n \"symbol_name\": \"byte_t\",\n \"qualified_name\": \"byte_t\",\n \"symbol_kind\": \"TYPEDEF\",\n \"type_label\": \"TYPEDEF\",\n \"signature_text\": \"typedef unsigned char byte_t\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@typedef byte_t Unsigned 8-bit type for raw byte buffers.\",\n \"attached_comment_lines\": [\n \"@typedef byte_t Unsigned 8-bit type for raw byte buffers.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 62,\n \"end_line_number\": 65,\n \"line_range\": [\n 62,\n 65\n ],\n \"declaration_order_index\": 8,\n \"symbol_name\": \"Point\",\n \"qualified_name\": \"Point\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"struct Point\",\n \"child_symbol_names\": [\n \"score_t\",\n \"req_cover_c_1\"\n ],\n \"child_qualified_names\": [\n \"Point.score_t\",\n \"Point.req_cover_c_1\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"2D point with integer coordinates.\",\n \"doxygen\": {\n \"brief\": [\n \"2D point with integer coordinates.\",\n \"Horizontal coordinate.\",\n \"Vertical coordinate.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 63,\n \"end_line_number\": 63,\n \"line_range\": [\n 63,\n 63\n ],\n \"text\": \"int x; /**< @brief Horizontal coordinate.\",\n \"text_lines\": [\n \"int x; /**< @brief Horizontal coordinate.\"\n ]\n },\n {\n \"start_line_number\": 64,\n \"end_line_number\": 64,\n \"line_range\": [\n 64,\n 64\n ],\n \"text\": \"int y; /**< @brief Vertical coordinate.\",\n \"text_lines\": [\n \"int y; /**< @brief Vertical coordinate.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 71,\n \"end_line_number\": 76,\n \"line_range\": [\n 71,\n 76\n ],\n \"declaration_order_index\": 9,\n \"symbol_name\": \"PackedFlags\",\n \"qualified_name\": \"PackedFlags\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"struct PackedFlags\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Bitfield struct testing parser handling of colon-separated widths.\",\n \"doxygen\": {\n \"brief\": [\n \"Bitfield struct testing parser handling of colon-separated widths.\",\n \"Read permission flag.\",\n \"Write permission flag.\",\n \"Execute permission flag.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 72,\n \"end_line_number\": 72,\n \"line_range\": [\n 72,\n 72\n ],\n \"text\": \"unsigned int readable : 1; /**< @brief Read permission flag.\",\n \"text_lines\": [\n \"unsigned int readable : 1; /**< @brief Read permission flag.\"\n ]\n },\n {\n \"start_line_number\": 73,\n \"end_line_number\": 73,\n \"line_range\": [\n 73,\n 73\n ],\n \"text\": \"unsigned int writable : 1; /**< @brief Write permission flag.\",\n \"text_lines\": [\n \"unsigned int writable : 1; /**< @brief Write permission flag.\"\n ]\n },\n {\n \"start_line_number\": 74,\n \"end_line_number\": 74,\n \"line_range\": [\n 74,\n 74\n ],\n \"text\": \"unsigned int executable : 1; /**< @brief Execute permission flag.\",\n \"text_lines\": [\n \"unsigned int executable : 1; /**< @brief Execute permission flag.\"\n ]\n },\n {\n \"start_line_number\": 75,\n \"end_line_number\": 75,\n \"line_range\": [\n 75,\n 75\n ],\n \"text\": \"unsigned int reserved : 5; /**< @brief Reserved for future use.\",\n \"text_lines\": [\n \"unsigned int reserved : 5; /**< @brief Reserved for future use.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 82,\n \"end_line_number\": 89,\n \"line_range\": [\n 82,\n 89\n ],\n \"declaration_order_index\": 10,\n \"symbol_name\": \"Node\",\n \"qualified_name\": \"Node\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"struct Node\",\n \"child_symbol_names\": [\n \"i_val\",\n \"f_val\"\n ],\n \"child_qualified_names\": [\n \"Node.i_val\",\n \"Node.f_val\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Self-referential linked-list node with embedded anonymous union.\",\n \"doxygen\": {\n \"brief\": [\n \"Self-referential linked-list node with embedded anonymous union.\",\n \"Payload can hold either an integer or float value.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 83,\n \"end_line_number\": 83,\n \"line_range\": [\n 83,\n 83\n ],\n \"text\": \"@brief Payload can hold either an integer or float value.\",\n \"text_lines\": [\n \"@brief Payload can hold either an integer or float value.\"\n ]\n },\n {\n \"start_line_number\": 88,\n \"end_line_number\": 88,\n \"line_range\": [\n 88,\n 88\n ],\n \"text\": \"struct Node *next; /**< @brief Pointer to successor node or NULL.\",\n \"text_lines\": [\n \"struct Node *next; /**< @brief Pointer to successor node or NULL.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 85,\n \"end_line_number\": 85,\n \"line_range\": [\n 85,\n 85\n ],\n \"declaration_order_index\": 11,\n \"symbol_name\": \"i_val\",\n \"qualified_name\": \"Node.i_val\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int i_val\",\n \"parent_symbol_name\": \"Node\",\n \"parent_qualified_name\": \"Node\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 1,\n \"attached_comment_summary_text\": \"Payload can hold either an integer or float value. */\",\n \"doxygen\": {\n \"brief\": [\n \"Payload can hold either an integer or float value. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 86,\n \"end_line_number\": 86,\n \"line_range\": [\n 86,\n 86\n ],\n \"declaration_order_index\": 12,\n \"symbol_name\": \"f_val\",\n \"qualified_name\": \"Node.f_val\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"float f_val\",\n \"parent_symbol_name\": \"Node\",\n \"parent_qualified_name\": \"Node\",\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\": 97,\n \"end_line_number\": 101,\n \"line_range\": [\n 97,\n 101\n ],\n \"declaration_order_index\": 13,\n \"symbol_name\": \"Data\",\n \"qualified_name\": \"Data\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"union Data\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Discriminated union for multi-type storage.\",\n \"doxygen\": {\n \"brief\": [\n \"Discriminated union for multi-type storage.\",\n \"Integer interpretation.\",\n \"Float interpretation.\",\n \"Fixed-size string buffer.\"\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\": \"int i; /**< @brief Integer interpretation.\",\n \"text_lines\": [\n \"int i; /**< @brief Integer interpretation.\"\n ]\n },\n {\n \"start_line_number\": 99,\n \"end_line_number\": 99,\n \"line_range\": [\n 99,\n 99\n ],\n \"text\": \"float f; /**< @brief Float interpretation.\",\n \"text_lines\": [\n \"float f; /**< @brief Float interpretation.\"\n ]\n },\n {\n \"start_line_number\": 100,\n \"end_line_number\": 100,\n \"line_range\": [\n 100,\n 100\n ],\n \"text\": \"char s[16]; /**< @brief Fixed-size string buffer.\",\n \"text_lines\": [\n \"char s[16]; /**< @brief Fixed-size string buffer.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 109,\n \"end_line_number\": 113,\n \"line_range\": [\n 109,\n 113\n ],\n \"declaration_order_index\": 14,\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\": \"Primary color identifiers for rendering pipeline.\",\n \"doxygen\": {\n \"brief\": [\n \"Primary color identifiers for rendering pipeline.\",\n \"Red channel.\",\n \"Green channel.\",\n \"Blue channel.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 110,\n \"end_line_number\": 110,\n \"line_range\": [\n 110,\n 110\n ],\n \"text\": \"RED, /**< @brief Red channel.\",\n \"text_lines\": [\n \"RED, /**< @brief Red channel.\"\n ]\n },\n {\n \"start_line_number\": 111,\n \"end_line_number\": 111,\n \"line_range\": [\n 111,\n 111\n ],\n \"text\": \"GREEN, /**< @brief Green channel.\",\n \"text_lines\": [\n \"GREEN, /**< @brief Green channel.\"\n ]\n },\n {\n \"start_line_number\": 112,\n \"end_line_number\": 112,\n \"line_range\": [\n 112,\n 112\n ],\n \"text\": \"BLUE /**< @brief Blue channel.\",\n \"text_lines\": [\n \"BLUE /**< @brief Blue channel.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 124,\n \"end_line_number\": 142,\n \"line_range\": [\n 124,\n 142\n ],\n \"declaration_order_index\": 15,\n \"symbol_name\": \"int\",\n \"qualified_name\": \"int\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"typedef int (*comparator_fn)(const void *a, const void *b)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Function pointer type for generic comparison callbacks.\",\n \"doxygen\": {\n \"brief\": [\n \"Function pointer type for generic comparison callbacks.\",\n \"Unary transform callback operating on a single integer.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"a\",\n \"description\": \"Pointer to first element.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"b\",\n \"description\": \"Pointer to second element.\"\n }\n ],\n \"returns\": [\n \"Negative if a<b, zero if equal, positive if a>b.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 126,\n \"end_line_number\": 129,\n \"line_range\": [\n 126,\n 129\n ],\n \"text\": \"@typedef transform_fn @brief Unary transform callback operating on a single integer.\",\n \"text_lines\": [\n \"@typedef transform_fn @brief Unary transform callback operating on a single integer.\"\n ]\n },\n {\n \"start_line_number\": 132,\n \"end_line_number\": 132,\n \"line_range\": [\n 132,\n 132\n ],\n \"text\": \"── Complex typedef: struct + pointer ──────────────────────────────────\",\n \"text_lines\": [\n \"── Complex typedef: struct + pointer ──────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 134,\n \"end_line_number\": 137,\n \"line_range\": [\n 134,\n 137\n ],\n \"text\": \"@typedef callback_entry_t @brief Combined struct typedef for callback registration entries.\",\n \"text_lines\": [\n \"@typedef callback_entry_t @brief Combined struct typedef for callback registration entries.\"\n ]\n },\n {\n \"start_line_number\": 139,\n \"end_line_number\": 139,\n \"line_range\": [\n 139,\n 139\n ],\n \"text\": \"const char *name; /**< @brief Callback identifier.\",\n \"text_lines\": [\n \"const char *name; /**< @brief Callback identifier.\"\n ]\n },\n {\n \"start_line_number\": 140,\n \"end_line_number\": 140,\n \"line_range\": [\n 140,\n 140\n ],\n \"text\": \"comparator_fn handler; /**< @brief Comparison function pointer.\",\n \"text_lines\": [\n \"comparator_fn handler; /**< @brief Comparison function pointer.\"\n ]\n },\n {\n \"start_line_number\": 141,\n \"end_line_number\": 141,\n \"line_range\": [\n 141,\n 141\n ],\n \"text\": \"int priority; /**< @brief Dispatch priority (lower = first).\",\n \"text_lines\": [\n \"int priority; /**< @brief Dispatch priority (lower = first).\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 130,\n \"end_line_number\": 142,\n \"line_range\": [\n 130,\n 142\n ],\n \"declaration_order_index\": 16,\n \"symbol_name\": \"int\",\n \"qualified_name\": \"int\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"typedef int (*transform_fn)(int value)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Unary transform callback operating on a single integer.\",\n \"doxygen\": {\n \"brief\": [\n \"Unary transform callback operating on a single integer.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 132,\n \"end_line_number\": 132,\n \"line_range\": [\n 132,\n 132\n ],\n \"text\": \"── Complex typedef: struct + pointer ──────────────────────────────────\",\n \"text_lines\": [\n \"── Complex typedef: struct + pointer ──────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 134,\n \"end_line_number\": 137,\n \"line_range\": [\n 134,\n 137\n ],\n \"text\": \"@typedef callback_entry_t @brief Combined struct typedef for callback registration entries.\",\n \"text_lines\": [\n \"@typedef callback_entry_t @brief Combined struct typedef for callback registration entries.\"\n ]\n },\n {\n \"start_line_number\": 139,\n \"end_line_number\": 139,\n \"line_range\": [\n 139,\n 139\n ],\n \"text\": \"const char *name; /**< @brief Callback identifier.\",\n \"text_lines\": [\n \"const char *name; /**< @brief Callback identifier.\"\n ]\n },\n {\n \"start_line_number\": 140,\n \"end_line_number\": 140,\n \"line_range\": [\n 140,\n 140\n ],\n \"text\": \"comparator_fn handler; /**< @brief Comparison function pointer.\",\n \"text_lines\": [\n \"comparator_fn handler; /**< @brief Comparison function pointer.\"\n ]\n },\n {\n \"start_line_number\": 141,\n \"end_line_number\": 141,\n \"line_range\": [\n 141,\n 141\n ],\n \"text\": \"int priority; /**< @brief Dispatch priority (lower = first).\",\n \"text_lines\": [\n \"int priority; /**< @brief Dispatch priority (lower = first).\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 147,\n \"end_line_number\": 147,\n \"line_range\": [\n 147,\n 147\n ],\n \"declaration_order_index\": 17,\n \"symbol_name\": \"counter\",\n \"qualified_name\": \"counter\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"static int counter = 0\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Module-scoped invocation counter, not visible externally. */\",\n \"doxygen\": {\n \"brief\": [\n \"Module-scoped invocation counter, not visible externally. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 150,\n \"end_line_number\": 150,\n \"line_range\": [\n 150,\n 150\n ],\n \"declaration_order_index\": 18,\n \"symbol_name\": \"error_buffer\",\n \"qualified_name\": \"error_buffer\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"static char error_buffer[256] = {0}\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Global error message buffer shared across translation unit. */\",\n \"doxygen\": {\n \"brief\": [\n \"Global error message buffer shared across translation unit. */\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 160,\n \"end_line_number\": 160,\n \"line_range\": [\n 160,\n 160\n ],\n \"declaration_order_index\": 19,\n \"symbol_name\": \"min_val\",\n \"qualified_name\": \"min_val\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static inline int min_val(int a, int b) { return a < b ? a : b; }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Compute the minimum of two integers.\",\n \"doxygen\": {\n \"brief\": [\n \"Compute the minimum of two integers.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"a\",\n \"description\": \"First integer.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"b\",\n \"description\": \"Second integer.\"\n }\n ],\n \"returns\": [\n \"The smaller of a and b.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 168,\n \"end_line_number\": 174,\n \"line_range\": [\n 168,\n 174\n ],\n \"declaration_order_index\": 20,\n \"symbol_name\": \"greet\",\n \"qualified_name\": \"greet\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"void greet(const char *name)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Print a greeting message to stdout.\",\n \"doxygen\": {\n \"brief\": [\n \"Print a greeting message to stdout.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"name\",\n \"description\": \"The recipient name; must not be NULL.\"\n }\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\": \"Validate non-null input before printing\",\n \"text_lines\": [\n \"Validate non-null input before printing\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 171,\n \"text\": \"return;\"\n }\n ]\n },\n {\n \"start_line_number\": 182,\n \"end_line_number\": 190,\n \"line_range\": [\n 182,\n 190\n ],\n \"declaration_order_index\": 21,\n \"symbol_name\": \"main\",\n \"qualified_name\": \"main\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"int main(int argc, char **argv)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Application entry point.\",\n \"doxygen\": {\n \"brief\": [\n \"Application entry point.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"argc\",\n \"description\": \"Argument count from the OS.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"argv\",\n \"description\": \"Argument vector; argv[0] is the program name.\"\n }\n ],\n \"returns\": [\n \"Exit code: 0 on success, 1 on error.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 184,\n \"end_line_number\": 184,\n \"line_range\": [\n 184,\n 184\n ],\n \"text\": \"No arguments supplied — show usage\",\n \"text_lines\": [\n \"No arguments supplied — show usage\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 186,\n \"text\": \"return 1;\"\n },\n {\n \"line_number\": 189,\n \"text\": \"return 0;\"\n }\n ]\n },\n {\n \"start_line_number\": 200,\n \"end_line_number\": 210,\n \"line_range\": [\n 200,\n 210\n ],\n \"declaration_order_index\": 22,\n \"symbol_name\": \"sum_ints\",\n \"qualified_name\": \"sum_ints\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"int sum_ints(int count, ...)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Compute the sum of a variable number of integers.\",\n \"doxygen\": {\n \"brief\": [\n \"Compute the sum of a variable number of integers.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"count\",\n \"description\": \"Number of integer arguments that follow.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"...\",\n \"description\": \"Variable integer arguments to sum.\"\n }\n ],\n \"returns\": [\n \"The cumulative sum of all provided integers.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 204,\n \"end_line_number\": 204,\n \"line_range\": [\n 204,\n 204\n ],\n \"text\": \"Iterate through variadic argument list\",\n \"text_lines\": [\n \"Iterate through variadic argument list\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 209,\n \"text\": \"return total;\"\n }\n ]\n },\n {\n \"start_line_number\": 203,\n \"end_line_number\": 203,\n \"line_range\": [\n 203,\n 203\n ],\n \"declaration_order_index\": 23,\n \"symbol_name\": \"total\",\n \"qualified_name\": \"total\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int total = 0\",\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\": 220,\n \"end_line_number\": 225,\n \"line_range\": [\n 220,\n 225\n ],\n \"declaration_order_index\": 24,\n \"symbol_name\": \"apply_transform\",\n \"qualified_name\": \"apply_transform\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"void apply_transform(int *arr, size_t len, transform_fn fn)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Apply a transform function to every element in an array.\",\n \"doxygen\": {\n \"brief\": [\n \"Apply a transform function to every element in an array.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"arr\",\n \"description\": \"Array of integers to transform in-place.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"len\",\n \"description\": \"Number of elements in arr.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"fn\",\n \"description\": \"Transform callback applied to each element.\"\n }\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 222,\n \"end_line_number\": 222,\n \"line_range\": [\n 222,\n 222\n ],\n \"text\": \"Apply callback and store result back\",\n \"text_lines\": [\n \"Apply callback and store result back\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 234,\n \"end_line_number\": 241,\n \"line_range\": [\n 234,\n 241\n ],\n \"declaration_order_index\": 25,\n \"symbol_name\": \"factorial\",\n \"qualified_name\": \"factorial\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"unsigned long factorial(unsigned int n)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Compute factorial recursively.\",\n \"doxygen\": {\n \"brief\": [\n \"Compute factorial recursively.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"n\",\n \"description\": \"Non-negative integer input.\"\n }\n ],\n \"returns\": [\n \"n! or 1 when n <= 1.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 235,\n \"end_line_number\": 235,\n \"line_range\": [\n 235,\n 235\n ],\n \"text\": \"Base case\",\n \"text_lines\": [\n \"Base case\"\n ]\n },\n {\n \"start_line_number\": 239,\n \"end_line_number\": 239,\n \"line_range\": [\n 239,\n 239\n ],\n \"text\": \"Recursive step\",\n \"text_lines\": [\n \"Recursive step\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 237,\n \"text\": \"return 1;\"\n },\n {\n \"line_number\": 240,\n \"text\": \"return n * factorial(n - 1);\"\n }\n ]\n },\n {\n \"start_line_number\": 251,\n \"end_line_number\": 253,\n \"line_range\": [\n 251,\n 253\n ],\n \"declaration_order_index\": 26,\n \"symbol_name\": \"fast_copy\",\n \"qualified_name\": \"fast_copy\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static void fast_copy(void *restrict dest, const void *restrict src, size_t n)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Copy bytes between non-overlapping buffers.\",\n \"doxygen\": {\n \"brief\": [\n \"Copy bytes between non-overlapping buffers.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"dest\",\n \"description\": \"Destination buffer (restrict-qualified).\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"src\",\n \"description\": \"Source buffer (restrict-qualified).\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"n\",\n \"description\": \"Number of bytes to copy.\"\n }\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 260,\n \"end_line_number\": 260,\n \"line_range\": [\n 260,\n 260\n ],\n \"declaration_order_index\": 27,\n \"symbol_name\": \"read_volatile\",\n \"qualified_name\": \"read_volatile\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"static int read_volatile(volatile int *reg) { return *reg; }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Read a hardware register marked volatile.\",\n \"doxygen\": {\n \"brief\": [\n \"Read a hardware register marked volatile.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"reg\",\n \"description\": \"Pointer to the memory-mapped register.\"\n }\n ],\n \"returns\": [\n \"The current 32-bit register value.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 269,\n \"end_line_number\": 275,\n \"line_range\": [\n 269,\n 275\n ],\n \"declaration_order_index\": 28,\n \"symbol_name\": \"sum_fixed\",\n \"qualified_name\": \"sum_fixed\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"int sum_fixed(int arr[static 10])\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Sum elements of a fixed-size array.\",\n \"doxygen\": {\n \"brief\": [\n \"Sum elements of a fixed-size array.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"arr\",\n \"description\": \"Array with at least 10 elements (compiler hint via static 10).\"\n }\n ],\n \"returns\": [\n \"The sum of the first 10 elements.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 274,\n \"text\": \"return s;\"\n }\n ]\n },\n {\n \"start_line_number\": 270,\n \"end_line_number\": 270,\n \"line_range\": [\n 270,\n 270\n ],\n \"declaration_order_index\": 29,\n \"symbol_name\": \"s\",\n \"qualified_name\": \"s\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int s = 0\",\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\": 278,\n \"end_line_number\": 281,\n \"line_range\": [\n 278,\n 281\n ],\n \"declaration_order_index\": 30,\n \"symbol_name\": \"Vector2\",\n \"qualified_name\": \"Vector2\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"struct Vector2\",\n \"child_symbol_names\": [\n \"x\",\n \"y\"\n ],\n \"child_qualified_names\": [\n \"Vector2.x\",\n \"Vector2.y\"\n ],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"coverage extension block\",\n \"attached_comment_lines\": [\n \"coverage extension block\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 281,\n \"end_line_number\": 281,\n \"line_range\": [\n 281,\n 281\n ],\n \"text\": \"inline struct comment\",\n \"text_lines\": [\n \"inline struct comment\"\n ]\n }\n ],\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\": 31,\n \"symbol_name\": \"x\",\n \"qualified_name\": \"Vector2.x\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int x\",\n \"parent_symbol_name\": \"Vector2\",\n \"parent_qualified_name\": \"Vector2\",\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\": 280,\n \"end_line_number\": 280,\n \"line_range\": [\n 280,\n 280\n ],\n \"declaration_order_index\": 32,\n \"symbol_name\": \"y\",\n \"qualified_name\": \"Vector2.y\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int y\",\n \"parent_symbol_name\": \"Vector2\",\n \"parent_qualified_name\": \"Vector2\",\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\": 282,\n \"end_line_number\": 285,\n \"line_range\": [\n 282,\n 285\n ],\n \"declaration_order_index\": 33,\n \"symbol_name\": \"Matrix2\",\n \"qualified_name\": \"Matrix2\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"struct Matrix2\",\n \"child_symbol_names\": [\n \"a11\",\n \"a22\"\n ],\n \"child_qualified_names\": [\n \"Matrix2.a11\",\n \"Matrix2.a22\"\n ],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 283,\n \"end_line_number\": 283,\n \"line_range\": [\n 283,\n 283\n ],\n \"declaration_order_index\": 34,\n \"symbol_name\": \"a11\",\n \"qualified_name\": \"Matrix2.a11\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int a11\",\n \"parent_symbol_name\": \"Matrix2\",\n \"parent_qualified_name\": \"Matrix2\",\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\": 284,\n \"end_line_number\": 284,\n \"line_range\": [\n 284,\n 284\n ],\n \"declaration_order_index\": 35,\n \"symbol_name\": \"a22\",\n \"qualified_name\": \"Matrix2.a22\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int a22\",\n \"parent_symbol_name\": \"Matrix2\",\n \"parent_qualified_name\": \"Matrix2\",\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\": 286,\n \"end_line_number\": 286,\n \"line_range\": [\n 286,\n 286\n ],\n \"declaration_order_index\": 36,\n \"symbol_name\": \"StatusCode\",\n \"qualified_name\": \"StatusCode\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum StatusCode { STATUS_OK, STATUS_ERR, STATUS_UNKNOWN }\",\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\": 287,\n \"end_line_number\": 287,\n \"line_range\": [\n 287,\n 287\n ],\n \"declaration_order_index\": 37,\n \"symbol_name\": \"LevelCode\",\n \"qualified_name\": \"LevelCode\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum LevelCode { LEVEL_LOW, LEVEL_MEDIUM, LEVEL_HIGH }\",\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\": 288,\n \"end_line_number\": 288,\n \"line_range\": [\n 288,\n 288\n ],\n \"declaration_order_index\": 38,\n \"symbol_name\": \"ModeCode\",\n \"qualified_name\": \"ModeCode\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum ModeCode { MODE_A, MODE_B }\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 289,\n \"end_line_number\": 289,\n \"line_range\": [\n 289,\n 289\n ],\n \"declaration_order_index\": 39,\n \"symbol_name\": \"FlagCode\",\n \"qualified_name\": \"FlagCode\",\n \"symbol_kind\": \"ENUM\",\n \"type_label\": \"ENUM\",\n \"signature_text\": \"enum FlagCode { FLAG_ON, FLAG_OFF }\",\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\": 290,\n \"end_line_number\": 293,\n \"line_range\": [\n 290,\n 293\n ],\n \"declaration_order_index\": 40,\n \"symbol_name\": \"NumberValue\",\n \"qualified_name\": \"NumberValue\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"union NumberValue\",\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\": 291,\n \"end_line_number\": 291,\n \"line_range\": [\n 291,\n 291\n ],\n \"declaration_order_index\": 41,\n \"symbol_name\": \"i\",\n \"qualified_name\": \"i\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int i\",\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\": 292,\n \"end_line_number\": 292,\n \"line_range\": [\n 292,\n 292\n ],\n \"declaration_order_index\": 42,\n \"symbol_name\": \"f\",\n \"qualified_name\": \"f\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"float f\",\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\": 294,\n \"end_line_number\": 297,\n \"line_range\": [\n 294,\n 297\n ],\n \"declaration_order_index\": 43,\n \"symbol_name\": \"PtrValue\",\n \"qualified_name\": \"PtrValue\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"union PtrValue\",\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\": 296,\n \"end_line_number\": 296,\n \"line_range\": [\n 296,\n 296\n ],\n \"declaration_order_index\": 44,\n \"symbol_name\": \"l\",\n \"qualified_name\": \"l\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"long l\",\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\": 298,\n \"end_line_number\": 301,\n \"line_range\": [\n 298,\n 301\n ],\n \"declaration_order_index\": 45,\n \"symbol_name\": \"StateValue\",\n \"qualified_name\": \"StateValue\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"union StateValue\",\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\": 299,\n \"end_line_number\": 299,\n \"line_range\": [\n 299,\n 299\n ],\n \"declaration_order_index\": 46,\n \"symbol_name\": \"s\",\n \"qualified_name\": \"s\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int s\",\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\": 300,\n \"end_line_number\": 300,\n \"line_range\": [\n 300,\n 300\n ],\n \"declaration_order_index\": 47,\n \"symbol_name\": \"c\",\n \"qualified_name\": \"c\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"char c\",\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\": 302,\n \"end_line_number\": 305,\n \"line_range\": [\n 302,\n 305\n ],\n \"declaration_order_index\": 48,\n \"symbol_name\": \"PairValue\",\n \"qualified_name\": \"PairValue\",\n \"symbol_kind\": \"UNION\",\n \"type_label\": \"UNION\",\n \"signature_text\": \"union PairValue\",\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\": 303,\n \"end_line_number\": 303,\n \"line_range\": [\n 303,\n 303\n ],\n \"declaration_order_index\": 49,\n \"symbol_name\": \"x\",\n \"qualified_name\": \"x\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int x\",\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\": 304,\n \"end_line_number\": 304,\n \"line_range\": [\n 304,\n 304\n ],\n \"declaration_order_index\": 50,\n \"symbol_name\": \"y\",\n \"qualified_name\": \"y\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"int y\",\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\": 306,\n \"end_line_number\": 306,\n \"line_range\": [\n 306,\n 306\n ],\n \"declaration_order_index\": 51,\n \"symbol_name\": \"index_t\",\n \"qualified_name\": \"index_t\",\n \"symbol_kind\": \"TYPEDEF\",\n \"type_label\": \"TYPEDEF\",\n \"signature_text\": \"typedef long index_t\",\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\": 307,\n \"end_line_number\": 307,\n \"line_range\": [\n 307,\n 307\n ],\n \"declaration_order_index\": 52,\n \"symbol_name\": \"ratio_t\",\n \"qualified_name\": \"ratio_t\",\n \"symbol_kind\": \"TYPEDEF\",\n \"type_label\": \"TYPEDEF\",\n \"signature_text\": \"typedef float ratio_t\",\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\": 308,\n \"end_line_number\": 319,\n \"line_range\": [\n 308,\n 319\n ],\n \"declaration_order_index\": 53,\n \"symbol_name\": \"Point\",\n \"qualified_name\": \"Point\",\n \"symbol_kind\": \"STRUCT\",\n \"type_label\": \"STRUCT\",\n \"signature_text\": \"typedef struct Point point_t\",\n \"child_symbol_names\": [\n \"score_t\",\n \"req_cover_c_1\"\n ],\n \"child_qualified_names\": [\n \"Point.score_t\",\n \"Point.req_cover_c_1\"\n ],\n \"depth\": 0,\n \"body_comment_entries\": [\n {\n \"start_line_number\": 311,\n \"end_line_number\": 311,\n \"line_range\": [\n 311,\n 311\n ],\n \"text\": \"REQ-COVER-SRS-231 START\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 START\"\n ]\n },\n {\n \"start_line_number\": 312,\n \"end_line_number\": 318,\n \"line_range\": [\n 312,\n 318\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 1 @brief Coverage helper construct 1. @details Provides deterministic fixture-level Doxygen coverage block 1. @param value Input value for helper construct 1. @return Output value for helper construct 1.\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 1 @brief Coverage helper construct 1. @details Provides deterministic fixture-level Doxygen coverage block 1. @param value Input value for helper construct 1. @return Output value for helper construct 1.\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 309,\n \"end_line_number\": 309,\n \"line_range\": [\n 309,\n 309\n ],\n \"declaration_order_index\": 54,\n \"symbol_name\": \"score_t\",\n \"qualified_name\": \"Point.score_t\",\n \"symbol_kind\": \"TYPEDEF\",\n \"type_label\": \"TYPEDEF\",\n \"signature_text\": \"typedef double score_t\",\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\": 319,\n \"end_line_number\": 319,\n \"line_range\": [\n 319,\n 319\n ],\n \"declaration_order_index\": 55,\n \"symbol_name\": \"req_cover_c_1\",\n \"qualified_name\": \"Point.req_cover_c_1\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"int req_cover_c_1(int value) { return value + 1; }\",\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\": \"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\": 328,\n \"end_line_number\": 328,\n \"line_range\": [\n 328,\n 328\n ],\n \"declaration_order_index\": 56,\n \"symbol_name\": \"req_cover_c_2\",\n \"qualified_name\": \"req_cover_c_2\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"int req_cover_c_2(int value) { 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\": 337,\n \"end_line_number\": 337,\n \"line_range\": [\n 337,\n 337\n ],\n \"declaration_order_index\": 57,\n \"symbol_name\": \"req_cover_c_3\",\n \"qualified_name\": \"req_cover_c_3\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"int req_cover_c_3(int value) { 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\": 346,\n \"end_line_number\": 346,\n \"line_range\": [\n 346,\n 346\n ],\n \"declaration_order_index\": 58,\n \"symbol_name\": \"req_cover_c_4\",\n \"qualified_name\": \"req_cover_c_4\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"int req_cover_c_4(int value) { 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\": 355,\n \"end_line_number\": 355,\n \"line_range\": [\n 355,\n 355\n ],\n \"declaration_order_index\": 59,\n \"symbol_name\": \"req_cover_c_5\",\n \"qualified_name\": \"req_cover_c_5\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"int req_cover_c_5(int value) { 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\": 2,\n \"end_line_number\": 2,\n \"line_range\": [\n 2,\n 2\n ],\n \"text\": \"cppcheck-suppress-begin constParameterPointer\",\n \"text_lines\": [\n \"cppcheck-suppress-begin constParameterPointer\"\n ]\n },\n {\n \"start_line_number\": 3,\n \"end_line_number\": 3,\n \"line_range\": [\n 3,\n 3\n ],\n \"text\": \"cppcheck-suppress-begin constParameter\",\n \"text_lines\": [\n \"cppcheck-suppress-begin constParameter\"\n ]\n },\n {\n \"start_line_number\": 4,\n \"end_line_number\": 10,\n \"line_range\": [\n 4,\n 10\n ],\n \"text\": \"@file fixture_c.c @brief Comprehensive C language test fixture for parser validation. @details Covers structs, unions, enums, function pointers, inline functions, ...\",\n \"text_lines\": [\n \"@file fixture_c.c\",\n \"@brief Comprehensive C language test fixture for parser validation.\",\n \"@details Covers structs, unions, enums, function pointers, inline functions,\",\n \"...\"\n ]\n },\n {\n \"start_line_number\": 11,\n \"end_line_number\": 11,\n \"line_range\": [\n 11,\n 11\n ],\n \"text\": \"Single line comment\",\n \"text_lines\": [\n \"Single line comment\"\n ]\n },\n {\n \"start_line_number\": 12,\n \"end_line_number\": 13,\n \"line_range\": [\n 12,\n 13\n ],\n \"text\": \"Multi-line comment\",\n \"text_lines\": [\n \"Multi-line\",\n \"comment\"\n ]\n },\n {\n \"start_line_number\": 56,\n \"end_line_number\": 56,\n \"line_range\": [\n 56,\n 56\n ],\n \"text\": \"── Struct with bitfields and nested anonymous union ───────────────────\",\n \"text_lines\": [\n \"── Struct with bitfields and nested anonymous union ───────────────────\"\n ]\n },\n {\n \"start_line_number\": 63,\n \"end_line_number\": 63,\n \"line_range\": [\n 63,\n 63\n ],\n \"text\": \"int x; /**< @brief Horizontal coordinate.\",\n \"text_lines\": [\n \"int x; /**< @brief Horizontal coordinate.\"\n ]\n },\n {\n \"start_line_number\": 64,\n \"end_line_number\": 64,\n \"line_range\": [\n 64,\n 64\n ],\n \"text\": \"int y; /**< @brief Vertical coordinate.\",\n \"text_lines\": [\n \"int y; /**< @brief Vertical coordinate.\"\n ]\n },\n {\n \"start_line_number\": 72,\n \"end_line_number\": 72,\n \"line_range\": [\n 72,\n 72\n ],\n \"text\": \"unsigned int readable : 1; /**< @brief Read permission flag.\",\n \"text_lines\": [\n \"unsigned int readable : 1; /**< @brief Read permission flag.\"\n ]\n },\n {\n \"start_line_number\": 73,\n \"end_line_number\": 73,\n \"line_range\": [\n 73,\n 73\n ],\n \"text\": \"unsigned int writable : 1; /**< @brief Write permission flag.\",\n \"text_lines\": [\n \"unsigned int writable : 1; /**< @brief Write permission flag.\"\n ]\n },\n {\n \"start_line_number\": 74,\n \"end_line_number\": 74,\n \"line_range\": [\n 74,\n 74\n ],\n \"text\": \"unsigned int executable : 1; /**< @brief Execute permission flag.\",\n \"text_lines\": [\n \"unsigned int executable : 1; /**< @brief Execute permission flag.\"\n ]\n },\n {\n \"start_line_number\": 75,\n \"end_line_number\": 75,\n \"line_range\": [\n 75,\n 75\n ],\n \"text\": \"unsigned int reserved : 5; /**< @brief Reserved for future use.\",\n \"text_lines\": [\n \"unsigned int reserved : 5; /**< @brief Reserved for future use.\"\n ]\n },\n {\n \"start_line_number\": 88,\n \"end_line_number\": 88,\n \"line_range\": [\n 88,\n 88\n ],\n \"text\": \"struct Node *next; /**< @brief Pointer to successor node or NULL.\",\n \"text_lines\": [\n \"struct Node *next; /**< @brief Pointer to successor node or NULL.\"\n ]\n },\n {\n \"start_line_number\": 91,\n \"end_line_number\": 91,\n \"line_range\": [\n 91,\n 91\n ],\n \"text\": \"── Union ──────────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Union ──────────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 98,\n \"end_line_number\": 98,\n \"line_range\": [\n 98,\n 98\n ],\n \"text\": \"int i; /**< @brief Integer interpretation.\",\n \"text_lines\": [\n \"int i; /**< @brief Integer interpretation.\"\n ]\n },\n {\n \"start_line_number\": 99,\n \"end_line_number\": 99,\n \"line_range\": [\n 99,\n 99\n ],\n \"text\": \"float f; /**< @brief Float interpretation.\",\n \"text_lines\": [\n \"float f; /**< @brief Float interpretation.\"\n ]\n },\n {\n \"start_line_number\": 100,\n \"end_line_number\": 100,\n \"line_range\": [\n 100,\n 100\n ],\n \"text\": \"char s[16]; /**< @brief Fixed-size string buffer.\",\n \"text_lines\": [\n \"char s[16]; /**< @brief Fixed-size string buffer.\"\n ]\n },\n {\n \"start_line_number\": 103,\n \"end_line_number\": 103,\n \"line_range\": [\n 103,\n 103\n ],\n \"text\": \"── Enum ───────────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Enum ───────────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 110,\n \"end_line_number\": 110,\n \"line_range\": [\n 110,\n 110\n ],\n \"text\": \"RED, /**< @brief Red channel.\",\n \"text_lines\": [\n \"RED, /**< @brief Red channel.\"\n ]\n },\n {\n \"start_line_number\": 111,\n \"end_line_number\": 111,\n \"line_range\": [\n 111,\n 111\n ],\n \"text\": \"GREEN, /**< @brief Green channel.\",\n \"text_lines\": [\n \"GREEN, /**< @brief Green channel.\"\n ]\n },\n {\n \"start_line_number\": 112,\n \"end_line_number\": 112,\n \"line_range\": [\n 112,\n 112\n ],\n \"text\": \"BLUE /**< @brief Blue channel.\",\n \"text_lines\": [\n \"BLUE /**< @brief Blue channel.\"\n ]\n },\n {\n \"start_line_number\": 115,\n \"end_line_number\": 115,\n \"line_range\": [\n 115,\n 115\n ],\n \"text\": \"── Typedef for function pointer ───────────────────────────────────────\",\n \"text_lines\": [\n \"── Typedef for function pointer ───────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 132,\n \"end_line_number\": 132,\n \"line_range\": [\n 132,\n 132\n ],\n \"text\": \"── Complex typedef: struct + pointer ──────────────────────────────────\",\n \"text_lines\": [\n \"── Complex typedef: struct + pointer ──────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 134,\n \"end_line_number\": 137,\n \"line_range\": [\n 134,\n 137\n ],\n \"text\": \"@typedef callback_entry_t @brief Combined struct typedef for callback registration entries.\",\n \"text_lines\": [\n \"@typedef callback_entry_t\",\n \"@brief Combined struct typedef for callback registration entries.\"\n ]\n },\n {\n \"start_line_number\": 139,\n \"end_line_number\": 139,\n \"line_range\": [\n 139,\n 139\n ],\n \"text\": \"const char *name; /**< @brief Callback identifier.\",\n \"text_lines\": [\n \"const char *name; /**< @brief Callback identifier.\"\n ]\n },\n {\n \"start_line_number\": 140,\n \"end_line_number\": 140,\n \"line_range\": [\n 140,\n 140\n ],\n \"text\": \"comparator_fn handler; /**< @brief Comparison function pointer.\",\n \"text_lines\": [\n \"comparator_fn handler; /**< @brief Comparison function pointer.\"\n ]\n },\n {\n \"start_line_number\": 141,\n \"end_line_number\": 141,\n \"line_range\": [\n 141,\n 141\n ],\n \"text\": \"int priority; /**< @brief Dispatch priority (lower = first).\",\n \"text_lines\": [\n \"int priority; /**< @brief Dispatch priority (lower = first).\"\n ]\n },\n {\n \"start_line_number\": 152,\n \"end_line_number\": 152,\n \"line_range\": [\n 152,\n 152\n ],\n \"text\": \"── Inline function ────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Inline function ────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 162,\n \"end_line_number\": 162,\n \"line_range\": [\n 162,\n 162\n ],\n \"text\": \"── Standard functions ─────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Standard functions ─────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 169,\n \"end_line_number\": 169,\n \"line_range\": [\n 169,\n 169\n ],\n \"text\": \"Validate non-null input before printing\",\n \"text_lines\": [\n \"Validate non-null input before printing\"\n ]\n },\n {\n \"start_line_number\": 184,\n \"end_line_number\": 184,\n \"line_range\": [\n 184,\n 184\n ],\n \"text\": \"No arguments supplied — show usage\",\n \"text_lines\": [\n \"No arguments supplied — show usage\"\n ]\n },\n {\n \"start_line_number\": 192,\n \"end_line_number\": 192,\n \"line_range\": [\n 192,\n 192\n ],\n \"text\": \"── Variadic function ──────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Variadic function ──────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 204,\n \"end_line_number\": 204,\n \"line_range\": [\n 204,\n 204\n ],\n \"text\": \"Iterate through variadic argument list\",\n \"text_lines\": [\n \"Iterate through variadic argument list\"\n ]\n },\n {\n \"start_line_number\": 212,\n \"end_line_number\": 212,\n \"line_range\": [\n 212,\n 212\n ],\n \"text\": \"── Function pointer parameter ─────────────────────────────────────────\",\n \"text_lines\": [\n \"── Function pointer parameter ─────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 222,\n \"end_line_number\": 222,\n \"line_range\": [\n 222,\n 222\n ],\n \"text\": \"Apply callback and store result back\",\n \"text_lines\": [\n \"Apply callback and store result back\"\n ]\n },\n {\n \"start_line_number\": 227,\n \"end_line_number\": 227,\n \"line_range\": [\n 227,\n 227\n ],\n \"text\": \"── Recursive function with conditional returns ────────────────────────\",\n \"text_lines\": [\n \"── Recursive function with conditional returns ────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 235,\n \"end_line_number\": 235,\n \"line_range\": [\n 235,\n 235\n ],\n \"text\": \"Base case\",\n \"text_lines\": [\n \"Base case\"\n ]\n },\n {\n \"start_line_number\": 239,\n \"end_line_number\": 239,\n \"line_range\": [\n 239,\n 239\n ],\n \"text\": \"Recursive step\",\n \"text_lines\": [\n \"Recursive step\"\n ]\n },\n {\n \"start_line_number\": 243,\n \"end_line_number\": 243,\n \"line_range\": [\n 243,\n 243\n ],\n \"text\": \"── Static helper with restrict/volatile qualifiers ────────────────────\",\n \"text_lines\": [\n \"── Static helper with restrict/volatile qualifiers ────────────────────\"\n ]\n },\n {\n \"start_line_number\": 262,\n \"end_line_number\": 262,\n \"line_range\": [\n 262,\n 262\n ],\n \"text\": \"── Array parameter syntax ─────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Array parameter syntax ─────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 311,\n \"end_line_number\": 311,\n \"line_range\": [\n 311,\n 311\n ],\n \"text\": \"REQ-COVER-SRS-231 START\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 START\"\n ]\n },\n {\n \"start_line_number\": 357,\n \"end_line_number\": 357,\n \"line_range\": [\n 357,\n 357\n ],\n \"text\": \"REQ-COVER-SRS-231 END\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 END\"\n ]\n },\n {\n \"start_line_number\": 359,\n \"end_line_number\": 359,\n \"line_range\": [\n 359,\n 359\n ],\n \"text\": \"cppcheck-suppress-end constParameter\",\n \"text_lines\": [\n \"cppcheck-suppress-end constParameter\"\n ]\n },\n {\n \"start_line_number\": 360,\n \"end_line_number\": 360,\n \"line_range\": [\n 360,\n 360\n ],\n \"text\": \"cppcheck-suppress-end constParameterPointer\",\n \"text_lines\": [\n \"cppcheck-suppress-end constParameterPointer\"\n ]\n },\n {\n \"start_line_number\": 361,\n \"end_line_number\": 361,\n \"line_range\": [\n 361,\n 361\n ],\n \"text\": \"cppcheck-suppress-end unusedStructMember\",\n \"text_lines\": [\n \"cppcheck-suppress-end unusedStructMember\"\n ]\n }\n ]\n }\n ]\n}\n",
|
|
3
|
+
"stdout": "# fixture_c.c | C | 361L | 60 symbols | 5 imports | 79 comments\n> Path: `tests/fixtures/fixture_c.c`\n- @brief Comprehensive C language test fixture for parser validation.\n- @details Covers structs, unions, enums, function pointers, inline functions,\npreprocessor directives, bitfields, variadic functions, and complex\ntypedef chains that stress-test regex-based parsing.\n\n## Imports\n```\n#include \"myheader.h\"\n#include <stdarg.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n```\n\n## Definitions\n\n- macro `#define MAX_SIZE 100` (L22)\n- macro `#define CLAMP(val, lo, hi) ((val) < (lo) ? (lo) : ((val) > (hi) ? (hi) : (val)))` (L31)\n- @brief Constrain value between lower and upper bounds.\n- @param val Value to clamp.\n- @param lo Minimum allowed value.\n- @param hi Maximum allowed value.\n- macro `#define STRINGIFY(x) #x` (L34)\n- macro `#define CONCAT(a, b) a##b` (L40)\n- @brief Token-pasting macro joining two identifiers.\n- macro `#define LOG(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__)` (L43)\n- macro `#define LOG(fmt, ...) ((void)0)` (L45)\n- typedef `typedef int my_int;` (L51)\n- typedef `typedef unsigned char byte_t;` (L54)\n### struct `struct Point` (L62-65)\n- @brief 2D point with integer coordinates.\n- @brief Horizontal coordinate.\n- @brief Vertical coordinate.\n\n### struct `struct PackedFlags` (L71-76)\n- @brief Bitfield struct testing parser handling of colon-separated widths.\n- @brief Read permission flag.\n- @brief Write permission flag.\n- @brief Execute permission flag.\n\n### struct `struct Node` (L82-89)\n- @brief Self-referential linked-list node with embedded anonymous union.\n- @brief Payload can hold either an integer or float value.\n- var `int i_val` (L85)\n - @brief Payload can hold either an integer or float value. */\n- var `float f_val` (L86)\n\n### unk `union Data` (L97-101)\n- @brief Discriminated union for multi-type storage.\n- @brief Integer interpretation.\n- @brief Float interpretation.\n- @brief Fixed-size string buffer.\n\n### enum `enum Color` (L109-113)\n- @brief Primary color identifiers for rendering pipeline.\n- @brief Red channel.\n- @brief Green channel.\n- @brief Blue channel.\n\n### fn `typedef int (*comparator_fn)(const void *a, const void *b)` (L124-142)\n- @brief Function pointer type for generic comparison callbacks.\n- @brief Unary transform callback operating on a single integer.\n- @param a Pointer to first element.\n- @param b Pointer to second element.\n- @return Negative if a<b, zero if equal, positive if a>b.\n\n### fn `typedef int (*transform_fn)(int value)` (L130-142)\n- @brief Unary transform callback operating on a single integer.\n\n- var `static int counter = 0;` (L147)\n- @brief Module-scoped invocation counter, not visible externally. */\n- var `static char error_buffer[256] = {0};` (L150)\n- @brief Global error message buffer shared across translation unit. */\n- fn `static inline int min_val(int a, int b) { return a < b ? a : b; }` (L160)\n- @brief Compute the minimum of two integers.\n- @param a First integer.\n- @param b Second integer.\n- @return The smaller of a and b.\n### fn `void greet(const char *name)` (L168-174)\n- @brief Print a greeting message to stdout.\n- @param name The recipient name; must not be NULL.\n\n### fn `int main(int argc, char **argv)` (L182-190)\n- @brief Application entry point.\n- @param argc Argument count from the OS.\n- @param argv Argument vector; argv[0] is the program name.\n- @return Exit code: 0 on success, 1 on error.\n\n### fn `int sum_ints(int count, ...)` (L200-210)\n- @brief Compute the sum of a variable number of integers.\n- @param count Number of integer arguments that follow.\n- @param ... Variable integer arguments to sum.\n- @return The cumulative sum of all provided integers.\n\n- var `int total = 0;` (L203)\n### fn `void apply_transform(int *arr, size_t len, transform_fn fn)` (L220-225)\n- @brief Apply a transform function to every element in an array.\n- @param arr Array of integers to transform in-place.\n- @param len Number of elements in arr.\n- @param fn Transform callback applied to each element.\n\n### fn `unsigned long factorial(unsigned int n)` (L234-241)\n- @brief Compute factorial recursively.\n- @param n Non-negative integer input.\n- @return n! or 1 when n <= 1.\n\n### fn `static void fast_copy(void *restrict dest, const void *restrict src, size_t n)` (L251-253)\n- @brief Copy bytes between non-overlapping buffers.\n- @param dest Destination buffer (restrict-qualified).\n- @param src Source buffer (restrict-qualified).\n- @param n Number of bytes to copy.\n\n- fn `static int read_volatile(volatile int *reg) { return *reg; }` (L260)\n- @brief Read a hardware register marked volatile.\n- @param reg Pointer to the memory-mapped register.\n- @return The current 32-bit register value.\n### fn `int sum_fixed(int arr[static 10])` (L269-275)\n- @brief Sum elements of a fixed-size array.\n- @param arr Array with at least 10 elements (compiler hint via static 10).\n- @return The sum of the first 10 elements.\n\n- var `int s = 0;` (L270)\n### struct `struct Vector2` (L278-281)\n- var `int x` (L279)\n- var `int y` (L280)\n\n### struct `struct Matrix2` (L282-285)\n- var `int a11` (L283)\n- var `int a22` (L284)\n\n- enum `enum StatusCode { STATUS_OK, STATUS_ERR, STATUS_UNKNOWN };` (L286)\n- enum `enum LevelCode { LEVEL_LOW, LEVEL_MEDIUM, LEVEL_HIGH };` (L287)\n- enum `enum ModeCode { MODE_A, MODE_B };` (L288)\n- enum `enum FlagCode { FLAG_ON, FLAG_OFF };` (L289)\n### unk `union NumberValue` (L290-293)\n\n- var `int i;` (L291)\n- var `float f;` (L292)\n### unk `union PtrValue` (L294-297)\n\n- var `long l;` (L296)\n### unk `union StateValue` (L298-301)\n\n- var `int s;` (L299)\n- var `char c;` (L300)\n### unk `union PairValue` (L302-305)\n\n- var `int x;` (L303)\n- var `int y;` (L304)\n- typedef `typedef long index_t;` (L306)\n- typedef `typedef float ratio_t;` (L307)\n### struct `typedef struct Point point_t` (L308-319)\n- typedef `typedef double score_t` (L309)\n- fn `int req_cover_c_1(int value) { return value + 1; }` (L319)\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\n- fn `int req_cover_c_2(int value) { return value + 2; }` (L328)\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 `int req_cover_c_3(int value) { return value + 3; }` (L337)\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 `int req_cover_c_4(int value) { return value + 4; }` (L346)\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 `int req_cover_c_5(int value) { return value + 5; }` (L355)\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|`MAX_SIZE`|macro||22||\n|`CLAMP`|macro||31||\n|`STRINGIFY`|macro||34||\n|`CONCAT`|macro||40||\n|`LOG`|macro||43||\n|`LOG`|macro||45||\n|`my_int`|typedef||51||\n|`byte_t`|typedef||54||\n|`Point`|struct||62-65|struct Point|\n|`PackedFlags`|struct||71-76|struct PackedFlags|\n|`Node`|struct||82-89|struct Node|\n|`Node.i_val`|var||85||\n|`Node.f_val`|var||86||\n|`Data`|unk||97-101||\n|`Color`|enum||109-113|enum Color|\n|`int`|fn||124-142|typedef int (*comparator_fn)(const void *a, const void *b)|\n|`int`|fn||130-142|typedef int (*transform_fn)(int value)|\n|`counter`|var||147||\n|`error_buffer`|var||150||\n|`min_val`|fn||160|static inline int min_val(int a, int b) { return a < b ? ...|\n|`greet`|fn||168-174|void greet(const char *name)|\n|`main`|fn||182-190|int main(int argc, char **argv)|\n|`sum_ints`|fn||200-210|int sum_ints(int count, ...)|\n|`total`|var||203||\n|`apply_transform`|fn||220-225|void apply_transform(int *arr, size_t len, transform_fn fn)|\n|`factorial`|fn||234-241|unsigned long factorial(unsigned int n)|\n|`fast_copy`|fn||251-253|static void fast_copy(void *restrict dest, const void *re...|\n|`read_volatile`|fn||260|static int read_volatile(volatile int *reg) { return *reg; }|\n|`sum_fixed`|fn||269-275|int sum_fixed(int arr[static 10])|\n|`s`|var||270||\n|`Vector2`|struct||278-281|struct Vector2|\n|`Vector2.x`|var||279||\n|`Vector2.y`|var||280||\n|`Matrix2`|struct||282-285|struct Matrix2|\n|`Matrix2.a11`|var||283||\n|`Matrix2.a22`|var||284||\n|`StatusCode`|enum||286|enum StatusCode { STATUS_OK, STATUS_ERR, STATUS_UNKNOWN }|\n|`LevelCode`|enum||287|enum LevelCode { LEVEL_LOW, LEVEL_MEDIUM, LEVEL_HIGH }|\n|`ModeCode`|enum||288|enum ModeCode { MODE_A, MODE_B }|\n|`FlagCode`|enum||289|enum FlagCode { FLAG_ON, FLAG_OFF }|\n|`NumberValue`|unk||290-293||\n|`i`|var||291||\n|`f`|var||292||\n|`PtrValue`|unk||294-297||\n|`l`|var||296||\n|`StateValue`|unk||298-301||\n|`s`|var||299||\n|`c`|var||300||\n|`PairValue`|unk||302-305||\n|`x`|var||303||\n|`y`|var||304||\n|`index_t`|typedef||306||\n|`ratio_t`|typedef||307||\n|`Point`|struct||308-319|typedef struct Point point_t|\n|`Point.score_t`|typedef||309||\n|`Point.req_cover_c_1`|fn||319|int req_cover_c_1(int value) { return value + 1; }|\n|`req_cover_c_2`|fn||328|int req_cover_c_2(int value) { return value + 2; }|\n|`req_cover_c_3`|fn||337|int req_cover_c_3(int value) { return value + 3; }|\n|`req_cover_c_4`|fn||346|int req_cover_c_4(int value) { return value + 4; }|\n|`req_cover_c_5`|fn||355|int req_cover_c_5(int value) { return value + 5; }|\n\n",
|
|
4
4
|
"stderr": ""
|
|
5
5
|
}
|