pi-usereq 0.4.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/.g.conf +20 -0
- package/.github/workflows/release-npm.yml +131 -0
- package/.gitignore +270 -0
- package/CHANGELOG.md +221 -0
- package/LICENSE +674 -0
- package/README.md +260 -0
- package/TODO.md +20 -0
- package/docs/pi.dev/agent-document-manifest.json +6399 -0
- package/docs/pi.dev/coding-agent-docs/compaction.md +394 -0
- package/docs/pi.dev/coding-agent-docs/custom-provider.md +596 -0
- package/docs/pi.dev/coding-agent-docs/development.md +71 -0
- package/docs/pi.dev/coding-agent-docs/extensions.md +2262 -0
- package/docs/pi.dev/coding-agent-docs/images/doom-extension.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/exy.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/interactive-mode.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/tree-view.png +0 -0
- package/docs/pi.dev/coding-agent-docs/json.md +82 -0
- package/docs/pi.dev/coding-agent-docs/keybindings.md +175 -0
- package/docs/pi.dev/coding-agent-docs/models.md +392 -0
- package/docs/pi.dev/coding-agent-docs/packages.md +218 -0
- package/docs/pi.dev/coding-agent-docs/prompt-templates.md +67 -0
- package/docs/pi.dev/coding-agent-docs/providers.md +195 -0
- package/docs/pi.dev/coding-agent-docs/rpc.md +1377 -0
- package/docs/pi.dev/coding-agent-docs/sdk.md +1124 -0
- package/docs/pi.dev/coding-agent-docs/session.md +412 -0
- package/docs/pi.dev/coding-agent-docs/settings.md +247 -0
- package/docs/pi.dev/coding-agent-docs/shell-aliases.md +13 -0
- package/docs/pi.dev/coding-agent-docs/skills.md +232 -0
- package/docs/pi.dev/coding-agent-docs/terminal-setup.md +106 -0
- package/docs/pi.dev/coding-agent-docs/termux.md +127 -0
- package/docs/pi.dev/coding-agent-docs/themes.md +295 -0
- package/docs/pi.dev/coding-agent-docs/tmux.md +61 -0
- package/docs/pi.dev/coding-agent-docs/tree.md +231 -0
- package/docs/pi.dev/coding-agent-docs/tui.md +887 -0
- package/docs/pi.dev/coding-agent-docs/windows.md +17 -0
- package/docs/pi.dev/mom-docs/artifacts-server.md +475 -0
- package/docs/pi.dev/mom-docs/events.md +307 -0
- package/docs/pi.dev/mom-docs/new.md +970 -0
- package/docs/pi.dev/mom-docs/sandbox.md +153 -0
- package/docs/pi.dev/mom-docs/slack-bot-minimal-guide.md +399 -0
- package/docs/pi.dev/mom-docs/v86.md +319 -0
- package/docs/pi.dev/pods-docs/gml-4.5.md +189 -0
- package/docs/pi.dev/pods-docs/gpt-oss.md +233 -0
- package/docs/pi.dev/pods-docs/implementation-plan.md +183 -0
- package/docs/pi.dev/pods-docs/kimi-k2.md +197 -0
- package/docs/pi.dev/pods-docs/models.md +116 -0
- package/docs/pi.dev/pods-docs/plan.md +166 -0
- package/docs/pi.dev/pods-docs/qwen3-coder.md +132 -0
- package/images/flowchart-bw.png +0 -0
- package/images/flowchart-bw.svg +102 -0
- package/images/flowchart.md +100 -0
- package/images/flowchart.png +0 -0
- package/images/flowchart.svg +3 -0
- package/package.json +46 -0
- package/req/docs/REFERENCES.md +4554 -0
- package/req/docs/REQUIREMENTS.md +475 -0
- package/req/docs/WORKFLOW.md +1059 -0
- package/scripts/debug-extension.ts +497 -0
- package/scripts/lib/extension-debug-harness.ts +450 -0
- package/scripts/lib/recording-extension-api.ts +786 -0
- package/scripts/lib/sdk-smoke.ts +503 -0
- package/scripts/pi-usereq-debug.sh +330 -0
- package/scripts/tool-args-to-params.ts +208 -0
- package/src/cli.ts +349 -0
- package/src/core/agent-tool-json.ts +621 -0
- package/src/core/compress-files.ts +72 -0
- package/src/core/compress-payload.ts +648 -0
- package/src/core/compress.ts +464 -0
- package/src/core/config.ts +272 -0
- package/src/core/doxygen-parser.ts +318 -0
- package/src/core/errors.ts +31 -0
- package/src/core/extension-status.ts +660 -0
- package/src/core/find-constructs.ts +319 -0
- package/src/core/find-payload.ts +915 -0
- package/src/core/generate-markdown.ts +120 -0
- package/src/core/path-context.ts +196 -0
- package/src/core/pi-notify.ts +430 -0
- package/src/core/pi-usereq-tools.ts +140 -0
- package/src/core/prompts.ts +184 -0
- package/src/core/reference-payload.ts +818 -0
- package/src/core/resources.ts +63 -0
- package/src/core/runtime-project-paths.ts +99 -0
- package/src/core/settings-menu.ts +233 -0
- package/src/core/source-analyzer.ts +1721 -0
- package/src/core/static-check.ts +674 -0
- package/src/core/token-counter.ts +729 -0
- package/src/core/tool-runner.ts +717 -0
- package/src/core/utils.ts +185 -0
- package/src/index.ts +2209 -0
- package/src/resources/guidelines/Google_C++_Style_Guide.md +3711 -0
- package/src/resources/guidelines/Google_Python_Style_Guide.md +3709 -0
- package/src/resources/prompts/analyze.md +130 -0
- package/src/resources/prompts/change.md +227 -0
- package/src/resources/prompts/check.md +139 -0
- package/src/resources/prompts/cover.md +219 -0
- package/src/resources/prompts/create.md +104 -0
- package/src/resources/prompts/fix.md +221 -0
- package/src/resources/prompts/flowchart.md +220 -0
- package/src/resources/prompts/implement.md +163 -0
- package/src/resources/prompts/new.md +226 -0
- package/src/resources/prompts/readme.md +182 -0
- package/src/resources/prompts/recreate.md +213 -0
- package/src/resources/prompts/refactor.md +213 -0
- package/src/resources/prompts/references.md +100 -0
- package/src/resources/prompts/renumber.md +119 -0
- package/src/resources/prompts/workflow.md +202 -0
- package/src/resources/prompts/write.md +99 -0
- package/src/resources/sounds/Machine-alert-beep-sound-effect.mp3 +0 -0
- package/src/resources/sounds/Soft-high-tech-notification-sound-effect.mp3 +0 -0
- package/src/resources/templates/Document_Source_Code_in_Doxygen_Style.md +130 -0
- package/src/resources/templates/HDT_Test_Authoring_Guide.md +318 -0
- package/src/resources/templates/Requirements_Template.md +78 -0
- package/tests/attended-results-scenarios.ts +758 -0
- package/tests/attended-results.test.ts +39 -0
- package/tests/cli-command-option-parity.test.ts +815 -0
- package/tests/debug-extension-harness.test.ts +463 -0
- package/tests/extension-registration.test.ts +2006 -0
- package/tests/fixtures/fixture_c.c +361 -0
- package/tests/fixtures/fixture_cpp.cpp +407 -0
- package/tests/fixtures/fixture_csharp.cs +411 -0
- package/tests/fixtures/fixture_elixir.ex +409 -0
- package/tests/fixtures/fixture_go.go +341 -0
- package/tests/fixtures/fixture_haskell.hs +250 -0
- package/tests/fixtures/fixture_java.java +430 -0
- package/tests/fixtures/fixture_javascript.js +383 -0
- package/tests/fixtures/fixture_kotlin.kt +451 -0
- package/tests/fixtures/fixture_lua.lua +276 -0
- package/tests/fixtures/fixture_perl.pl +310 -0
- package/tests/fixtures/fixture_php.php +433 -0
- package/tests/fixtures/fixture_python.py +502 -0
- package/tests/fixtures/fixture_ruby.rb +345 -0
- package/tests/fixtures/fixture_rust.rs +380 -0
- package/tests/fixtures/fixture_scala.scala +398 -0
- package/tests/fixtures/fixture_shell.sh +276 -0
- package/tests/fixtures/fixture_swift.swift +397 -0
- package/tests/fixtures/fixture_typescript.ts +434 -0
- package/tests/fixtures/fixture_zig.zig +295 -0
- package/tests/fixtures_attended_results/project/compress-line-numbers.json +5 -0
- package/tests/fixtures_attended_results/project/compress.json +5 -0
- package/tests/fixtures_attended_results/project/enable-static-check-invalid-command.json +5 -0
- package/tests/fixtures_attended_results/project/enable-static-check-valid.json +5 -0
- package/tests/fixtures_attended_results/project/files-static-check.json +5 -0
- package/tests/fixtures_attended_results/project/find-line-numbers.json +5 -0
- package/tests/fixtures_attended_results/project/find.json +5 -0
- package/tests/fixtures_attended_results/project/get-base-path.json +5 -0
- package/tests/fixtures_attended_results/project/git-check-clean.json +5 -0
- package/tests/fixtures_attended_results/project/git-check-dirty.json +5 -0
- package/tests/fixtures_attended_results/project/git-path.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-create-invalid.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-create-valid.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-delete-nonexistent.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-delete-valid.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-name.json +5 -0
- package/tests/fixtures_attended_results/project/references.json +5 -0
- package/tests/fixtures_attended_results/project/static-check.json +5 -0
- package/tests/fixtures_attended_results/project/tokens.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_zig.zig.json +5 -0
- package/tests/helpers.ts +204 -0
- package/tests/oracle-project.test.ts +63 -0
- package/tests/oracle-standalone.test.ts +48 -0
- package/tests/prompt-rendering.test.ts +66 -0
- package/tests/release-workflow.test.ts +133 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{
|
|
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_lua.lua\"\n ],\n \"requested_canonical_paths\": [\n \"tests/fixtures/fixture_lua.lua\"\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\": 34,\n \"total_import_count\": 0,\n \"total_comment_count\": 110,\n \"total_standalone_comment_count\": 40,\n \"total_doxygen_field_count\": 53,\n \"symbol_kind_counts\": {\n \"FUNCTION\": 21,\n \"VARIABLE\": 13\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_lua.lua\"\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_lua.lua\",\n \"relative_path\": \"tests/fixtures/fixture_lua.lua\",\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\": 276,\n \"line_range\": [\n 1,\n 276\n ],\n \"request_index\": 0,\n \"input_path\": \"tests/fixtures/fixture_lua.lua\",\n \"canonical_path\": \"tests/fixtures/fixture_lua.lua\",\n \"absolute_path\": \"<ROOT>/tests/fixtures/fixture_lua.lua\",\n \"file_name\": \"fixture_lua.lua\",\n \"file_extension\": \".lua\",\n \"language_id\": \"lua\",\n \"language_name\": \"Lua\",\n \"status\": \"analyzed\",\n \"exists\": true,\n \"is_file\": true,\n \"import_count\": 0,\n \"symbol_count\": 34,\n \"comment_count\": 110,\n \"standalone_comment_count\": 40,\n \"doxygen_field_count\": 53,\n \"file_description_text\": \"- @file fixture_lua.lua\",\n \"imports\": [],\n \"symbols\": [\n {\n \"start_line_number\": 14,\n \"end_line_number\": 16,\n \"line_range\": [\n 14,\n 16\n ],\n \"declaration_order_index\": 0,\n \"symbol_name\": \"globalFunc\",\n \"qualified_name\": \"globalFunc\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function globalFunc(x)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Compute the successor of a number.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"x number The input value.\\n---\"\n }\n ],\n \"returns\": [\n \"number The input incremented by one.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 15,\n \"text\": \"return x + 1\"\n }\n ]\n },\n {\n \"start_line_number\": 22,\n \"end_line_number\": 28,\n \"line_range\": [\n 22,\n 28\n ],\n \"declaration_order_index\": 1,\n \"symbol_name\": \"localFunc\",\n \"qualified_name\": \"localFunc\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"local function localFunc(y)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- @param y number The input value; must be a number.\",\n \"attached_comment_lines\": [\n \"- @param y number The input value; must be a number.\",\n \"- @return number The doubled value.\",\n \"- @raise error If y is not a number.\"\n ],\n \"body_comment_entries\": [\n {\n \"start_line_number\": 26,\n \"end_line_number\": 26,\n \"line_range\": [\n 26,\n 26\n ],\n \"text\": \"Perform the multiplication\",\n \"text_lines\": [\n \"Perform the multiplication\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 27,\n \"text\": \"return y * 2\"\n }\n ]\n },\n {\n \"start_line_number\": 33,\n \"end_line_number\": 41,\n \"line_range\": [\n 33,\n 41\n ],\n \"declaration_order_index\": 2,\n \"symbol_name\": \"sumAll\",\n \"qualified_name\": \"sumAll\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"local function sumAll(...)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Variadic function summing all arguments.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"... number Variable number of numeric arguments.\\n---\"\n }\n ],\n \"returns\": [\n \"number Sum of all provided values.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 37,\n \"end_line_number\": 37,\n \"line_range\": [\n 37,\n 37\n ],\n \"text\": \"Accumulate each argument\",\n \"text_lines\": [\n \"Accumulate each argument\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 40,\n \"text\": \"return total\"\n }\n ]\n },\n {\n \"start_line_number\": 34,\n \"end_line_number\": 34,\n \"line_range\": [\n 34,\n 34\n ],\n \"declaration_order_index\": 3,\n \"symbol_name\": \"total\",\n \"qualified_name\": \"total\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local 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\": 35,\n \"end_line_number\": 35,\n \"line_range\": [\n 35,\n 35\n ],\n \"declaration_order_index\": 4,\n \"symbol_name\": \"args\",\n \"qualified_name\": \"args\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local 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\": 46,\n \"end_line_number\": 46,\n \"line_range\": [\n 46,\n 46\n ],\n \"declaration_order_index\": 5,\n \"symbol_name\": \"myVar\",\n \"qualified_name\": \"myVar\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local myVar = 42\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Module-level constant for retry limits.\",\n \"doxygen\": {\n \"brief\": [\n \"Module-level constant for retry limits.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 49,\n \"end_line_number\": 49,\n \"line_range\": [\n 49,\n 49\n ],\n \"declaration_order_index\": 6,\n \"symbol_name\": \"config\",\n \"qualified_name\": \"config\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local config =\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Configuration table with default settings.\",\n \"doxygen\": {\n \"brief\": [\n \"Configuration table with default settings.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 59,\n \"end_line_number\": 66,\n \"line_range\": [\n 59,\n 66\n ],\n \"declaration_order_index\": 7,\n \"symbol_name\": \"handler\",\n \"qualified_name\": \"handler\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"local handler = function(event)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Event handler for UI callbacks.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"event\",\n \"description\": \"table Event object containing type and data fields.\"\n }\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 60,\n \"end_line_number\": 60,\n \"line_range\": [\n 60,\n 60\n ],\n \"text\": \"Dispatch based on event type\",\n \"text_lines\": [\n \"Dispatch based on event type\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 72,\n \"end_line_number\": 72,\n \"line_range\": [\n 72,\n 72\n ],\n \"declaration_order_index\": 8,\n \"symbol_name\": \"MyModule\",\n \"qualified_name\": \"MyModule\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local MyModule = {}\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Table-based module using method syntax.\",\n \"doxygen\": {\n \"brief\": [\n \"Table-based module using method syntax.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 78,\n \"end_line_number\": 83,\n \"line_range\": [\n 78,\n 83\n ],\n \"declaration_order_index\": 9,\n \"symbol_name\": \"MyModule.new\",\n \"qualified_name\": \"MyModule.new\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function MyModule.new(name)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Create a new module instance with a name.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"name string Instance identifier.\\n---\"\n }\n ],\n \"returns\": [\n \"table New MyModule instance.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 82,\n \"text\": \"return self\"\n }\n ]\n },\n {\n \"start_line_number\": 79,\n \"end_line_number\": 79,\n \"line_range\": [\n 79,\n 79\n ],\n \"declaration_order_index\": 10,\n \"symbol_name\": \"self\",\n \"qualified_name\": \"self\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local self = setmetatable({}, MyModule)\",\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\": 88,\n \"end_line_number\": 90,\n \"line_range\": [\n 88,\n 90\n ],\n \"declaration_order_index\": 11,\n \"symbol_name\": \"MyModule.method\",\n \"qualified_name\": \"MyModule.method\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"MyModule.method = function(self)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Get the module instance name using colon method syntax.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"self table The MyModule instance.\\n---\"\n }\n ],\n \"returns\": [\n \"string The instance name.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 89,\n \"text\": \"return self.name\"\n }\n ]\n },\n {\n \"start_line_number\": 94,\n \"end_line_number\": 97,\n \"line_range\": [\n 94,\n 97\n ],\n \"declaration_order_index\": 12,\n \"symbol_name\": \"MyModule:addItem\",\n \"qualified_name\": \"MyModule:addItem\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function MyModule:addItem(item)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Add an item to the internal collection.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"item\",\n \"description\": \"any The item to store.\"\n }\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 95,\n \"end_line_number\": 95,\n \"line_range\": [\n 95,\n 95\n ],\n \"text\": \"Append to internal list\",\n \"text_lines\": [\n \"Append to internal list\"\n ]\n }\n ],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 101,\n \"end_line_number\": 103,\n \"line_range\": [\n 101,\n 103\n ],\n \"declaration_order_index\": 13,\n \"symbol_name\": \"MyModule:count\",\n \"qualified_name\": \"MyModule:count\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function MyModule:count()\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Get count of stored items.\",\n \"doxygen\": {\n \"returns\": [\n \"number Number of items.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 102,\n \"text\": \"return #self._items\"\n }\n ]\n },\n {\n \"start_line_number\": 109,\n \"end_line_number\": 109,\n \"line_range\": [\n 109,\n 109\n ],\n \"declaration_order_index\": 14,\n \"symbol_name\": \"Animal\",\n \"qualified_name\": \"Animal\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local Animal = {}\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Base class using metatables for inheritance.\",\n \"doxygen\": {\n \"brief\": [\n \"Base class using metatables for inheritance.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 115,\n \"end_line_number\": 119,\n \"line_range\": [\n 115,\n 119\n ],\n \"declaration_order_index\": 15,\n \"symbol_name\": \"Animal.new\",\n \"qualified_name\": \"Animal.new\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function Animal.new(species)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Create a new Animal with a species name.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"species string The animal's species.\\n---\"\n }\n ],\n \"returns\": [\n \"table New Animal instance.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 118,\n \"text\": \"return self\"\n }\n ]\n },\n {\n \"start_line_number\": 116,\n \"end_line_number\": 116,\n \"line_range\": [\n 116,\n 116\n ],\n \"declaration_order_index\": 16,\n \"symbol_name\": \"self\",\n \"qualified_name\": \"self\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local self = setmetatable({}, Animal)\",\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\": 123,\n \"end_line_number\": 125,\n \"line_range\": [\n 123,\n 125\n ],\n \"declaration_order_index\": 17,\n \"symbol_name\": \"Animal:speak\",\n \"qualified_name\": \"Animal:speak\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function Animal:speak()\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Produce the animal's sound.\",\n \"doxygen\": {\n \"returns\": [\n \"string Sound description.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 124,\n \"text\": \"return self.species .. \\\" says ...\\\"\"\n }\n ]\n },\n {\n \"start_line_number\": 129,\n \"end_line_number\": 129,\n \"line_range\": [\n 129,\n 129\n ],\n \"declaration_order_index\": 18,\n \"symbol_name\": \"Dog\",\n \"qualified_name\": \"Dog\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local Dog = setmetatable({}, { __index = Animal })\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Dog subclass inheriting from Animal.\",\n \"doxygen\": {\n \"brief\": [\n \"Dog subclass inheriting from Animal.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 135,\n \"end_line_number\": 140,\n \"line_range\": [\n 135,\n 140\n ],\n \"declaration_order_index\": 19,\n \"symbol_name\": \"Dog.new\",\n \"qualified_name\": \"Dog.new\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function Dog.new(name)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Create a new Dog instance.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"name string The dog's name.\\n---\"\n }\n ],\n \"returns\": [\n \"table New Dog instance.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 139,\n \"text\": \"return self\"\n }\n ]\n },\n {\n \"start_line_number\": 136,\n \"end_line_number\": 136,\n \"line_range\": [\n 136,\n 136\n ],\n \"declaration_order_index\": 20,\n \"symbol_name\": \"self\",\n \"qualified_name\": \"self\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local self = Animal.new(\\\"Dog\\\")\",\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\": 144,\n \"end_line_number\": 146,\n \"line_range\": [\n 144,\n 146\n ],\n \"declaration_order_index\": 21,\n \"symbol_name\": \"Dog:speak\",\n \"qualified_name\": \"Dog:speak\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function Dog:speak()\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Override speak for dog-specific behavior.\",\n \"doxygen\": {\n \"returns\": [\n \"string The dog's vocalization.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 145,\n \"text\": \"return self.dogName .. \\\" says Woof!\\\"\"\n }\n ]\n },\n {\n \"start_line_number\": 153,\n \"end_line_number\": 160,\n \"line_range\": [\n 153,\n 160\n ],\n \"declaration_order_index\": 22,\n \"symbol_name\": \"makeCounter\",\n \"qualified_name\": \"makeCounter\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"local function makeCounter(step)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Create a counter closure with step increment.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"step number Increment amount per call.\\n---\"\n }\n ],\n \"returns\": [\n \"function Closure returning successive counts.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 156,\n \"end_line_number\": 156,\n \"line_range\": [\n 156,\n 156\n ],\n \"text\": \"Capture and mutate the upvalue\",\n \"text_lines\": [\n \"Capture and mutate the upvalue\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 155,\n \"text\": \"return function()\"\n },\n {\n \"line_number\": 158,\n \"text\": \"return count\"\n }\n ]\n },\n {\n \"start_line_number\": 154,\n \"end_line_number\": 154,\n \"line_range\": [\n 154,\n 154\n ],\n \"declaration_order_index\": 23,\n \"symbol_name\": \"count\",\n \"qualified_name\": \"count\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local count = 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\": 167,\n \"end_line_number\": 176,\n \"line_range\": [\n 167,\n 176\n ],\n \"declaration_order_index\": 24,\n \"symbol_name\": \"fibonacci\",\n \"qualified_name\": \"fibonacci\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"local function fibonacci(limit)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- Generator coroutine yielding Fibonacci numbers.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"limit number Maximum number of values to yield.\\n---\"\n }\n ],\n \"returns\": [\n \"function Coroutine wrap function.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 172,\n \"end_line_number\": 172,\n \"line_range\": [\n 172,\n 172\n ],\n \"text\": \"Advance to next Fibonacci number\",\n \"text_lines\": [\n \"Advance to next Fibonacci number\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 168,\n \"text\": \"return coroutine.wrap(function()\"\n }\n ]\n },\n {\n \"start_line_number\": 184,\n \"end_line_number\": 192,\n \"line_range\": [\n 184,\n 192\n ],\n \"declaration_order_index\": 25,\n \"symbol_name\": \"safeCall\",\n \"qualified_name\": \"safeCall\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"local function safeCall(fn, ...)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- @param fn function The function to execute.\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"fn function The function to execute.\\n---\"\n },\n {\n \"direction\": \"unspecified\",\n \"text\": \"... any Arguments to pass to fn.\\n---\"\n }\n ],\n \"returns\": [\n \"boolean, any Success flag and result or error message.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 187,\n \"end_line_number\": 187,\n \"line_range\": [\n 187,\n 187\n ],\n \"text\": \"Log error and return nil\",\n \"text_lines\": [\n \"Log error and return nil\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 189,\n \"text\": \"return false, nil\"\n },\n {\n \"line_number\": 191,\n \"text\": \"return true, result\"\n }\n ]\n },\n {\n \"start_line_number\": 197,\n \"end_line_number\": 197,\n \"line_range\": [\n 197,\n 197\n ],\n \"declaration_order_index\": 26,\n \"symbol_name\": \"mixedTable\",\n \"qualified_name\": \"mixedTable\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local mixedTable =\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Complex table demonstrating all key types.\",\n \"doxygen\": {\n \"brief\": [\n \"Complex table demonstrating all key types.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 219,\n \"end_line_number\": 228,\n \"line_range\": [\n 219,\n 228\n ],\n \"declaration_order_index\": 27,\n \"symbol_name\": \"range\",\n \"qualified_name\": \"range\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"local function range(from, to)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"- @param from number Start of range (inclusive).\",\n \"doxygen\": {\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"from number Start of range (inclusive).\\n---\"\n },\n {\n \"direction\": \"unspecified\",\n \"text\": \"to number End of range (inclusive).\\n---\"\n }\n ],\n \"returns\": [\n \"function Iterator function.\"\n ]\n },\n \"body_comment_entries\": [\n {\n \"start_line_number\": 226,\n \"end_line_number\": 226,\n \"line_range\": [\n 226,\n 226\n ],\n \"text\": \"Implicit nil return terminates iteration\",\n \"text_lines\": [\n \"Implicit nil return terminates iteration\"\n ]\n }\n ],\n \"exit_point_entries\": [\n {\n \"line_number\": 221,\n \"text\": \"return function()\"\n },\n {\n \"line_number\": 224,\n \"text\": \"return i\"\n }\n ]\n },\n {\n \"start_line_number\": 220,\n \"end_line_number\": 220,\n \"line_range\": [\n 220,\n 220\n ],\n \"declaration_order_index\": 28,\n \"symbol_name\": \"i\",\n \"qualified_name\": \"i\",\n \"symbol_kind\": \"VARIABLE\",\n \"type_label\": \"VARIABLE\",\n \"signature_text\": \"local i = from - 1\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 236,\n \"end_line_number\": 238,\n \"line_range\": [\n 236,\n 238\n ],\n \"declaration_order_index\": 29,\n \"symbol_name\": \"req_cover_lua_1\",\n \"qualified_name\": \"req_cover_lua_1\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function req_cover_lua_1(value)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Coverage helper construct 1.\\n--\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 1.\\n--\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 1.\\n--\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"value Input value for helper construct 1.\\n--\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 1.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 237,\n \"text\": \"return value + 1\"\n }\n ]\n },\n {\n \"start_line_number\": 245,\n \"end_line_number\": 247,\n \"line_range\": [\n 245,\n 247\n ],\n \"declaration_order_index\": 30,\n \"symbol_name\": \"req_cover_lua_2\",\n \"qualified_name\": \"req_cover_lua_2\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function req_cover_lua_2(value)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Coverage helper construct 2.\\n--\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 2.\\n--\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 2.\\n--\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"value Input value for helper construct 2.\\n--\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 2.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 246,\n \"text\": \"return value + 2\"\n }\n ]\n },\n {\n \"start_line_number\": 254,\n \"end_line_number\": 256,\n \"line_range\": [\n 254,\n 256\n ],\n \"declaration_order_index\": 31,\n \"symbol_name\": \"req_cover_lua_3\",\n \"qualified_name\": \"req_cover_lua_3\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function req_cover_lua_3(value)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Coverage helper construct 3.\\n--\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 3.\\n--\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 3.\\n--\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"value Input value for helper construct 3.\\n--\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 3.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 255,\n \"text\": \"return value + 3\"\n }\n ]\n },\n {\n \"start_line_number\": 263,\n \"end_line_number\": 265,\n \"line_range\": [\n 263,\n 265\n ],\n \"declaration_order_index\": 32,\n \"symbol_name\": \"req_cover_lua_4\",\n \"qualified_name\": \"req_cover_lua_4\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function req_cover_lua_4(value)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Coverage helper construct 4.\\n--\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 4.\\n--\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 4.\\n--\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"value Input value for helper construct 4.\\n--\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 4.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 264,\n \"text\": \"return value + 4\"\n }\n ]\n },\n {\n \"start_line_number\": 272,\n \"end_line_number\": 274,\n \"line_range\": [\n 272,\n 274\n ],\n \"declaration_order_index\": 33,\n \"symbol_name\": \"req_cover_lua_5\",\n \"qualified_name\": \"req_cover_lua_5\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"function req_cover_lua_5(value)\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Coverage helper construct 5.\\n--\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 5.\\n--\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 5.\\n--\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"text\": \"value Input value for helper construct 5.\\n--\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 5.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": [\n {\n \"line_number\": 273,\n \"text\": \"return value + 5\"\n }\n ]\n }\n ],\n \"standalone_comments\": [\n {\n \"start_line_number\": 2,\n \"end_line_number\": 2,\n \"line_range\": [\n 2,\n 2\n ],\n \"text\": \"- @brief Comprehensive Lua test fixture for parser validation.\",\n \"text_lines\": [\n \"- @brief Comprehensive Lua test fixture for parser validation.\"\n ]\n },\n {\n \"start_line_number\": 3,\n \"end_line_number\": 3,\n \"line_range\": [\n 3,\n 3\n ],\n \"text\": \"- @details Covers metatables, coroutines, closures, OOP patterns,\",\n \"text_lines\": [\n \"- @details Covers metatables, coroutines, closures, OOP patterns,\"\n ]\n },\n {\n \"start_line_number\": 4,\n \"end_line_number\": 4,\n \"line_range\": [\n 4,\n 4\n ],\n \"text\": \"- module pattern, varargs, error handling, and table constructors.\",\n \"text_lines\": [\n \"- module pattern, varargs, error handling, and table constructors.\"\n ]\n },\n {\n \"start_line_number\": 5,\n \"end_line_number\": 5,\n \"line_range\": [\n 5,\n 5\n ],\n \"text\": \"Single line comment\",\n \"text_lines\": [\n \"Single line comment\"\n ]\n },\n {\n \"start_line_number\": 6,\n \"end_line_number\": 7,\n \"line_range\": [\n 6,\n 7\n ],\n \"text\": \"[[ Multi-line comment ]]\",\n \"text_lines\": [\n \"[[ Multi-line\",\n \"comment ]]\"\n ]\n },\n {\n \"start_line_number\": 9,\n \"end_line_number\": 9,\n \"line_range\": [\n 9,\n 9\n ],\n \"text\": \"── Standard functions ─────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Standard functions ─────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 18,\n \"end_line_number\": 18,\n \"line_range\": [\n 18,\n 18\n ],\n \"text\": \"- Multiply a value by two with validation.\",\n \"text_lines\": [\n \"- Multiply a value by two with validation.\"\n ]\n },\n {\n \"start_line_number\": 26,\n \"end_line_number\": 26,\n \"line_range\": [\n 26,\n 26\n ],\n \"text\": \"Perform the multiplication\",\n \"text_lines\": [\n \"Perform the multiplication\"\n ]\n },\n {\n \"start_line_number\": 37,\n \"end_line_number\": 37,\n \"line_range\": [\n 37,\n 37\n ],\n \"text\": \"Accumulate each argument\",\n \"text_lines\": [\n \"Accumulate each argument\"\n ]\n },\n {\n \"start_line_number\": 55,\n \"end_line_number\": 55,\n \"line_range\": [\n 55,\n 55\n ],\n \"text\": \"── Function assigned to variable ──────────────────────────────────────\",\n \"text_lines\": [\n \"── Function assigned to variable ──────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 60,\n \"end_line_number\": 60,\n \"line_range\": [\n 60,\n 60\n ],\n \"text\": \"Dispatch based on event type\",\n \"text_lines\": [\n \"Dispatch based on event type\"\n ]\n },\n {\n \"start_line_number\": 68,\n \"end_line_number\": 68,\n \"line_range\": [\n 68,\n 68\n ],\n \"text\": \"── Module method pattern ──────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Module method pattern ──────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 95,\n \"end_line_number\": 95,\n \"line_range\": [\n 95,\n 95\n ],\n \"text\": \"Append to internal list\",\n \"text_lines\": [\n \"Append to internal list\"\n ]\n },\n {\n \"start_line_number\": 105,\n \"end_line_number\": 105,\n \"line_range\": [\n 105,\n 105\n ],\n \"text\": \"── Metatable-based OOP ────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Metatable-based OOP ────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 148,\n \"end_line_number\": 148,\n \"line_range\": [\n 148,\n 148\n ],\n \"text\": \"── Closure factory ────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Closure factory ────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 156,\n \"end_line_number\": 156,\n \"line_range\": [\n 156,\n 156\n ],\n \"text\": \"Capture and mutate the upvalue\",\n \"text_lines\": [\n \"Capture and mutate the upvalue\"\n ]\n },\n {\n \"start_line_number\": 162,\n \"end_line_number\": 162,\n \"line_range\": [\n 162,\n 162\n ],\n \"text\": \"── Coroutine ──────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Coroutine ──────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 172,\n \"end_line_number\": 172,\n \"line_range\": [\n 172,\n 172\n ],\n \"text\": \"Advance to next Fibonacci number\",\n \"text_lines\": [\n \"Advance to next Fibonacci number\"\n ]\n },\n {\n \"start_line_number\": 178,\n \"end_line_number\": 178,\n \"line_range\": [\n 178,\n 178\n ],\n \"text\": \"── Error handling with pcall ──────────────────────────────────────────\",\n \"text_lines\": [\n \"── Error handling with pcall ──────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 180,\n \"end_line_number\": 180,\n \"line_range\": [\n 180,\n 180\n ],\n \"text\": \"- Safely execute a function, catching any errors.\",\n \"text_lines\": [\n \"- Safely execute a function, catching any errors.\"\n ]\n },\n {\n \"start_line_number\": 187,\n \"end_line_number\": 187,\n \"line_range\": [\n 187,\n 187\n ],\n \"text\": \"Log error and return nil\",\n \"text_lines\": [\n \"Log error and return nil\"\n ]\n },\n {\n \"start_line_number\": 198,\n \"end_line_number\": 198,\n \"line_range\": [\n 198,\n 198\n ],\n \"text\": \"Array part\",\n \"text_lines\": [\n \"Array part\"\n ]\n },\n {\n \"start_line_number\": 201,\n \"end_line_number\": 201,\n \"line_range\": [\n 201,\n 201\n ],\n \"text\": \"Hash part with string keys\",\n \"text_lines\": [\n \"Hash part with string keys\"\n ]\n },\n {\n \"start_line_number\": 204,\n \"end_line_number\": 204,\n \"line_range\": [\n 204,\n 204\n ],\n \"text\": \"Computed key\",\n \"text_lines\": [\n \"Computed key\"\n ]\n },\n {\n \"start_line_number\": 206,\n \"end_line_number\": 206,\n \"line_range\": [\n 206,\n 206\n ],\n \"text\": \"Nested table\",\n \"text_lines\": [\n \"Nested table\"\n ]\n },\n {\n \"start_line_number\": 213,\n \"end_line_number\": 213,\n \"line_range\": [\n 213,\n 213\n ],\n \"text\": \"── Iterator pattern ───────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Iterator pattern ───────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 215,\n \"end_line_number\": 215,\n \"line_range\": [\n 215,\n 215\n ],\n \"text\": \"- Create a stateful iterator over a range.\",\n \"text_lines\": [\n \"- Create a stateful iterator over a range.\"\n ]\n },\n {\n \"start_line_number\": 226,\n \"end_line_number\": 226,\n \"line_range\": [\n 226,\n 226\n ],\n \"text\": \"Implicit nil return terminates iteration\",\n \"text_lines\": [\n \"Implicit nil return terminates iteration\"\n ]\n },\n {\n \"start_line_number\": 230,\n \"end_line_number\": 230,\n \"line_range\": [\n 230,\n 230\n ],\n \"text\": \"REQ-COVER-SRS-231 START\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 START\"\n ]\n },\n {\n \"start_line_number\": 231,\n \"end_line_number\": 231,\n \"line_range\": [\n 231,\n 231\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 1\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 1\"\n ]\n },\n {\n \"start_line_number\": 232,\n \"end_line_number\": 232,\n \"line_range\": [\n 232,\n 232\n ],\n \"text\": \"@brief Coverage helper construct 1.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 1.\"\n ]\n },\n {\n \"start_line_number\": 240,\n \"end_line_number\": 240,\n \"line_range\": [\n 240,\n 240\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 2\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 2\"\n ]\n },\n {\n \"start_line_number\": 241,\n \"end_line_number\": 241,\n \"line_range\": [\n 241,\n 241\n ],\n \"text\": \"@brief Coverage helper construct 2.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 2.\"\n ]\n },\n {\n \"start_line_number\": 249,\n \"end_line_number\": 249,\n \"line_range\": [\n 249,\n 249\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 3\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 3\"\n ]\n },\n {\n \"start_line_number\": 250,\n \"end_line_number\": 250,\n \"line_range\": [\n 250,\n 250\n ],\n \"text\": \"@brief Coverage helper construct 3.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 3.\"\n ]\n },\n {\n \"start_line_number\": 258,\n \"end_line_number\": 258,\n \"line_range\": [\n 258,\n 258\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 4\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 4\"\n ]\n },\n {\n \"start_line_number\": 259,\n \"end_line_number\": 259,\n \"line_range\": [\n 259,\n 259\n ],\n \"text\": \"@brief Coverage helper construct 4.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 4.\"\n ]\n },\n {\n \"start_line_number\": 267,\n \"end_line_number\": 267,\n \"line_range\": [\n 267,\n 267\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 5\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 5\"\n ]\n },\n {\n \"start_line_number\": 268,\n \"end_line_number\": 268,\n \"line_range\": [\n 268,\n 268\n ],\n \"text\": \"@brief Coverage helper construct 5.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 5.\"\n ]\n },\n {\n \"start_line_number\": 276,\n \"end_line_number\": 276,\n \"line_range\": [\n 276,\n 276\n ],\n \"text\": \"REQ-COVER-SRS-231 END\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 END\"\n ]\n }\n ]\n }\n ]\n}\n",
|
|
4
|
+
"stderr": ""
|
|
5
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{
|
|
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_perl.pl\"\n ],\n \"requested_canonical_paths\": [\n \"tests/fixtures/fixture_perl.pl\"\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\": 30,\n \"total_import_count\": 5,\n \"total_comment_count\": 97,\n \"total_standalone_comment_count\": 44,\n \"total_doxygen_field_count\": 62,\n \"symbol_kind_counts\": {\n \"CONSTANT\": 6,\n \"FUNCTION\": 19,\n \"MODULE\": 5\n }\n },\n \"repository\": {\n \"root_directory_path\": \"<ROOT>\",\n \"source_directory_paths\": [],\n \"file_count\": 1,\n \"file_canonical_paths\": [\n \"tests/fixtures/fixture_perl.pl\"\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_perl.pl\",\n \"relative_path\": \"tests/fixtures/fixture_perl.pl\",\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\": 310,\n \"line_range\": [\n 1,\n 310\n ],\n \"request_index\": 0,\n \"input_path\": \"tests/fixtures/fixture_perl.pl\",\n \"canonical_path\": \"tests/fixtures/fixture_perl.pl\",\n \"absolute_path\": \"<ROOT>/tests/fixtures/fixture_perl.pl\",\n \"file_name\": \"fixture_perl.pl\",\n \"file_extension\": \".pl\",\n \"language_id\": \"perl\",\n \"language_name\": \"Perl\",\n \"status\": \"analyzed\",\n \"exists\": true,\n \"is_file\": true,\n \"import_count\": 5,\n \"symbol_count\": 30,\n \"comment_count\": 97,\n \"standalone_comment_count\": 44,\n \"doxygen_field_count\": 62,\n \"file_description_text\": \"@file fixture_perl.pl\",\n \"imports\": [\n {\n \"start_line_number\": 18,\n \"end_line_number\": 18,\n \"line_range\": [\n 18,\n 18\n ],\n \"import_name\": \"strict\",\n \"statement_text\": \"use strict;\"\n },\n {\n \"start_line_number\": 19,\n \"end_line_number\": 19,\n \"line_range\": [\n 19,\n 19\n ],\n \"import_name\": \"warnings\",\n \"statement_text\": \"use warnings;\"\n },\n {\n \"start_line_number\": 20,\n \"end_line_number\": 20,\n \"line_range\": [\n 20,\n 20\n ],\n \"import_name\": \"Carp qw(croak confess)\",\n \"statement_text\": \"use Carp qw(croak confess);\"\n },\n {\n \"start_line_number\": 21,\n \"end_line_number\": 21,\n \"line_range\": [\n 21,\n 21\n ],\n \"import_name\": \"Exporter\",\n \"statement_text\": \"require Exporter;\"\n },\n {\n \"start_line_number\": 257,\n \"end_line_number\": 257,\n \"line_range\": [\n 257,\n 257\n ],\n \"import_name\": \"lib 'lib'\",\n \"statement_text\": \"use lib 'lib';\"\n }\n ],\n \"symbols\": [\n {\n \"start_line_number\": 16,\n \"end_line_number\": 16,\n \"line_range\": [\n 16,\n 16\n ],\n \"declaration_order_index\": 0,\n \"symbol_name\": \"MyPackage\",\n \"qualified_name\": \"MyPackage\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package MyPackage\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Comprehensive Perl test fixture for parser validation.\",\n \"doxygen\": {\n \"brief\": [\n \"Comprehensive Perl test fixture for parser validation.\",\n \"Documentation block for the fixture module.\"\n ],\n \"details\": [\n \"Covers OOP with bless, Moose-like attributes, closures,\\nhere-docs, wantarray, dispatch tables, prototypes, AUTOLOAD,\\nand regular expressions.\\nSingle line comment\\n=pod\",\n \"This module demonstrates advanced Perl constructs including\\nobject-oriented patterns, closures, and metaprogramming.\\n=cut\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 22,\n \"end_line_number\": 22,\n \"line_range\": [\n 22,\n 22\n ],\n \"declaration_order_index\": 1,\n \"symbol_name\": \"MAX_SIZE\",\n \"qualified_name\": \"MAX_SIZE\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"use constant MAX_SIZE => 100\",\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\": 48,\n \"end_line_number\": 48,\n \"line_range\": [\n 48,\n 48\n ],\n \"declaration_order_index\": 2,\n \"symbol_name\": \"new\",\n \"qualified_name\": \"new\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub new\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Create a new MyPackage instance.\",\n \"doxygen\": {\n \"brief\": [\n \"Create a new MyPackage instance.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"class\",\n \"description\": \"The class name (implicit first argument).\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"%args\",\n \"description\": \"Named arguments: name (required), age (optional).\"\n }\n ],\n \"returns\": [\n \"Blessed hashref instance.\\n=cut\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 62,\n \"end_line_number\": 62,\n \"line_range\": [\n 62,\n 62\n ],\n \"declaration_order_index\": 3,\n \"symbol_name\": \"name\",\n \"qualified_name\": \"name\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub name\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Accessor for the name attribute.\",\n \"doxygen\": {\n \"brief\": [\n \"Accessor for the name attribute.\"\n ],\n \"returns\": [\n \"The instance name string.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 74,\n \"end_line_number\": 74,\n \"line_range\": [\n 74,\n 74\n ],\n \"declaration_order_index\": 4,\n \"symbol_name\": \"is_valid\",\n \"qualified_name\": \"is_valid\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub is_valid\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Check if the instance is in a valid state.\",\n \"doxygen\": {\n \"brief\": [\n \"Check if the instance is in a valid state.\"\n ],\n \"returns\": [\n \"1 if valid, 0 otherwise.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 83,\n \"end_line_number\": 83,\n \"line_range\": [\n 83,\n 83\n ],\n \"declaration_order_index\": 5,\n \"symbol_name\": \"greet\",\n \"qualified_name\": \"greet\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub greet\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Print a greeting to stdout.\",\n \"doxygen\": {\n \"brief\": [\n \"Print a greeting to stdout.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"$name\",\n \"description\": \"The person's name.\"\n }\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 95,\n \"end_line_number\": 95,\n \"line_range\": [\n 95,\n 95\n ],\n \"declaration_order_index\": 6,\n \"symbol_name\": \"process\",\n \"qualified_name\": \"process\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub process\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Process data and return result.\",\n \"doxygen\": {\n \"brief\": [\n \"Process data and return result.\"\n ],\n \"returns\": [\n \"1 indicating success.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 102,\n \"end_line_number\": 102,\n \"line_range\": [\n 102,\n 102\n ],\n \"declaration_order_index\": 7,\n \"symbol_name\": \"format_output\",\n \"qualified_name\": \"format_output\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub format_output\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Format output depending on context (list vs scalar).\",\n \"doxygen\": {\n \"brief\": [\n \"Format output depending on context (list vs scalar).\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"@items\",\n \"description\": \"List of items to format.\"\n }\n ],\n \"returns\": [\n \"In list context: formatted items. In scalar: count.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 115,\n \"end_line_number\": 115,\n \"line_range\": [\n 115,\n 115\n ],\n \"declaration_order_index\": 8,\n \"symbol_name\": \"helper\",\n \"qualified_name\": \"helper\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub helper\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Standalone helper for internal use.\",\n \"doxygen\": {\n \"brief\": [\n \"Standalone helper for internal use.\"\n ],\n \"returns\": [\n \"Always returns \\\"ok\\\".\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 124,\n \"end_line_number\": 124,\n \"line_range\": [\n 124,\n 124\n ],\n \"declaration_order_index\": 9,\n \"symbol_name\": \"extract_emails\",\n \"qualified_name\": \"extract_emails\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub extract_emails\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Extract all email addresses from text.\",\n \"doxygen\": {\n \"brief\": [\n \"Extract all email addresses from text.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"$text\",\n \"description\": \"Input text to scan.\"\n }\n ],\n \"returns\": [\n \"List of matched email addresses.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 139,\n \"end_line_number\": 139,\n \"line_range\": [\n 139,\n 139\n ],\n \"declaration_order_index\": 10,\n \"symbol_name\": \"replace_all\",\n \"qualified_name\": \"replace_all\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub replace_all\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Replace all occurrences of a pattern in text.\",\n \"doxygen\": {\n \"brief\": [\n \"Replace all occurrences of a pattern in text.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"$text\",\n \"description\": \"Input text.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"$pattern\",\n \"description\": \"Regex pattern to find.\"\n },\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"$replacement\",\n \"description\": \"Replacement string.\"\n }\n ],\n \"returns\": [\n \"Modified text with substitutions applied.\"\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\": 11,\n \"symbol_name\": \"make_multiplier\",\n \"qualified_name\": \"make_multiplier\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub make_multiplier\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Create a multiplier closure.\",\n \"doxygen\": {\n \"brief\": [\n \"Create a multiplier closure.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"$factor\",\n \"description\": \"The multiplication factor.\"\n }\n ],\n \"returns\": [\n \"Coderef that multiplies its argument by factor.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 178,\n \"end_line_number\": 178,\n \"line_range\": [\n 178,\n 178\n ],\n \"declaration_order_index\": 12,\n \"symbol_name\": \"dispatch\",\n \"qualified_name\": \"dispatch\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub dispatch\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"@param $b Second operand.\",\n \"attached_comment_lines\": [\n \"@param $b Second operand.\",\n \"@return Result of the operation.\",\n \"@raise Croaks if operation is unknown.\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 190,\n \"end_line_number\": 190,\n \"line_range\": [\n 190,\n 190\n ],\n \"declaration_order_index\": 13,\n \"symbol_name\": \"generate_template\",\n \"qualified_name\": \"generate_template\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub generate_template\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Generate a template string using a here-document.\",\n \"doxygen\": {\n \"brief\": [\n \"Generate a template string using a here-document.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"$name\",\n \"description\": \"Name to insert into the template.\"\n }\n ],\n \"returns\": [\n \"Formatted multi-line string.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 210,\n \"end_line_number\": 210,\n \"line_range\": [\n 210,\n 210\n ],\n \"declaration_order_index\": 14,\n \"symbol_name\": \"AUTOLOAD\",\n \"qualified_name\": \"AUTOLOAD\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub AUTOLOAD\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Handle undefined method calls dynamically.\",\n \"doxygen\": {\n \"brief\": [\n \"Handle undefined method calls dynamically.\"\n ],\n \"details\": [\n \"Methods named get_* return the corresponding attribute.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"@args\",\n \"description\": \"Arguments passed to the auto-loaded method.\"\n }\n ],\n \"returns\": [\n \"The attribute value or undef.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 230,\n \"end_line_number\": 230,\n \"line_range\": [\n 230,\n 230\n ],\n \"declaration_order_index\": 15,\n \"symbol_name\": \"safe_execute\",\n \"qualified_name\": \"safe_execute\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub safe_execute\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Execute a block with error trapping.\",\n \"doxygen\": {\n \"brief\": [\n \"Execute a block with error trapping.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"$code\",\n \"description\": \"Coderef to execute.\"\n }\n ],\n \"returns\": [\n \"Result of execution or undef on error.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 248,\n \"end_line_number\": 248,\n \"line_range\": [\n 248,\n 248\n ],\n \"declaration_order_index\": 16,\n \"symbol_name\": \"Extra::One\",\n \"qualified_name\": \"Extra::One\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package Extra::One\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"=pod coverage extension block =cut\",\n \"attached_comment_lines\": [\n \"=pod\",\n \"coverage extension block\",\n \"=cut\"\n ],\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 249,\n \"end_line_number\": 249,\n \"line_range\": [\n 249,\n 249\n ],\n \"declaration_order_index\": 17,\n \"symbol_name\": \"Extra::Two\",\n \"qualified_name\": \"Extra::Two\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package Extra::Two\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 250,\n \"end_line_number\": 250,\n \"line_range\": [\n 250,\n 250\n ],\n \"declaration_order_index\": 18,\n \"symbol_name\": \"Extra::Three\",\n \"qualified_name\": \"Extra::Three\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package Extra::Three\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 251,\n \"end_line_number\": 251,\n \"line_range\": [\n 251,\n 251\n ],\n \"declaration_order_index\": 19,\n \"symbol_name\": \"Extra::Four\",\n \"qualified_name\": \"Extra::Four\",\n \"symbol_kind\": \"MODULE\",\n \"type_label\": \"MODULE\",\n \"signature_text\": \"package Extra::Four\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 252,\n \"end_line_number\": 252,\n \"line_range\": [\n 252,\n 252\n ],\n \"declaration_order_index\": 20,\n \"symbol_name\": \"RETRY_LIMIT\",\n \"qualified_name\": \"RETRY_LIMIT\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"use constant RETRY_LIMIT => 5\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 253,\n \"end_line_number\": 253,\n \"line_range\": [\n 253,\n 253\n ],\n \"declaration_order_index\": 21,\n \"symbol_name\": \"API_HOST\",\n \"qualified_name\": \"API_HOST\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"use constant API_HOST => 'localhost'\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 254,\n \"end_line_number\": 254,\n \"line_range\": [\n 254,\n 254\n ],\n \"declaration_order_index\": 22,\n \"symbol_name\": \"FEATURE_FLAG\",\n \"qualified_name\": \"FEATURE_FLAG\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"use constant FEATURE_FLAG => 1\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 255,\n \"end_line_number\": 255,\n \"line_range\": [\n 255,\n 255\n ],\n \"declaration_order_index\": 23,\n \"symbol_name\": \"CACHE_SIZE\",\n \"qualified_name\": \"CACHE_SIZE\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"use constant CACHE_SIZE => 256\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 256,\n \"end_line_number\": 256,\n \"line_range\": [\n 256,\n 256\n ],\n \"declaration_order_index\": 24,\n \"symbol_name\": \"DEFAULT_USER\",\n \"qualified_name\": \"DEFAULT_USER\",\n \"symbol_kind\": \"CONSTANT\",\n \"type_label\": \"CONSTANT\",\n \"signature_text\": \"use constant DEFAULT_USER => 'guest'\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 265,\n \"end_line_number\": 265,\n \"line_range\": [\n 265,\n 265\n ],\n \"declaration_order_index\": 25,\n \"symbol_name\": \"req_cover_perl_1\",\n \"qualified_name\": \"req_cover_perl_1\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub req_cover_perl_1\",\n \"child_symbol_names\": [],\n \"child_qualified_names\": [],\n \"depth\": 0,\n \"attached_comment_summary_text\": \"Coverage helper construct 1.\",\n \"doxygen\": {\n \"brief\": [\n \"Coverage helper construct 1.\"\n ],\n \"details\": [\n \"Provides deterministic fixture-level Doxygen coverage block 1.\"\n ],\n \"params\": [\n {\n \"direction\": \"unspecified\",\n \"parameter_name\": \"value\",\n \"description\": \"Input value for helper construct 1.\"\n }\n ],\n \"returns\": [\n \"Output value for helper construct 1.\"\n ]\n },\n \"body_comment_entries\": [],\n \"exit_point_entries\": []\n },\n {\n \"start_line_number\": 275,\n \"end_line_number\": 275,\n \"line_range\": [\n 275,\n 275\n ],\n \"declaration_order_index\": 26,\n \"symbol_name\": \"req_cover_perl_2\",\n \"qualified_name\": \"req_cover_perl_2\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub req_cover_perl_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\": 285,\n \"end_line_number\": 285,\n \"line_range\": [\n 285,\n 285\n ],\n \"declaration_order_index\": 27,\n \"symbol_name\": \"req_cover_perl_3\",\n \"qualified_name\": \"req_cover_perl_3\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub req_cover_perl_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\": 295,\n \"end_line_number\": 295,\n \"line_range\": [\n 295,\n 295\n ],\n \"declaration_order_index\": 28,\n \"symbol_name\": \"req_cover_perl_4\",\n \"qualified_name\": \"req_cover_perl_4\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub req_cover_perl_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\": 305,\n \"end_line_number\": 305,\n \"line_range\": [\n 305,\n 305\n ],\n \"declaration_order_index\": 29,\n \"symbol_name\": \"req_cover_perl_5\",\n \"qualified_name\": \"req_cover_perl_5\",\n \"symbol_kind\": \"FUNCTION\",\n \"type_label\": \"FUNCTION\",\n \"signature_text\": \"sub req_cover_perl_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\": \"@file fixture_perl.pl\",\n \"text_lines\": [\n \"@file fixture_perl.pl\"\n ]\n },\n {\n \"start_line_number\": 3,\n \"end_line_number\": 3,\n \"line_range\": [\n 3,\n 3\n ],\n \"text\": \"@brief Comprehensive Perl test fixture for parser validation.\",\n \"text_lines\": [\n \"@brief Comprehensive Perl test fixture for parser validation.\"\n ]\n },\n {\n \"start_line_number\": 4,\n \"end_line_number\": 4,\n \"line_range\": [\n 4,\n 4\n ],\n \"text\": \"@details Covers OOP with bless, Moose-like attributes, closures,\",\n \"text_lines\": [\n \"@details Covers OOP with bless, Moose-like attributes, closures,\"\n ]\n },\n {\n \"start_line_number\": 5,\n \"end_line_number\": 5,\n \"line_range\": [\n 5,\n 5\n ],\n \"text\": \"here-docs, wantarray, dispatch tables, prototypes, AUTOLOAD,\",\n \"text_lines\": [\n \"here-docs, wantarray, dispatch tables, prototypes, AUTOLOAD,\"\n ]\n },\n {\n \"start_line_number\": 6,\n \"end_line_number\": 6,\n \"line_range\": [\n 6,\n 6\n ],\n \"text\": \"and regular expressions.\",\n \"text_lines\": [\n \"and regular expressions.\"\n ]\n },\n {\n \"start_line_number\": 7,\n \"end_line_number\": 7,\n \"line_range\": [\n 7,\n 7\n ],\n \"text\": \"Single line comment\",\n \"text_lines\": [\n \"Single line comment\"\n ]\n },\n {\n \"start_line_number\": 28,\n \"end_line_number\": 28,\n \"line_range\": [\n 28,\n 28\n ],\n \"text\": \"@brief Module version string.\",\n \"text_lines\": [\n \"@brief Module version string.\"\n ]\n },\n {\n \"start_line_number\": 31,\n \"end_line_number\": 31,\n \"line_range\": [\n 31,\n 31\n ],\n \"text\": \"@brief Symbols exported by default.\",\n \"text_lines\": [\n \"@brief Symbols exported by default.\"\n ]\n },\n {\n \"start_line_number\": 34,\n \"end_line_number\": 34,\n \"line_range\": [\n 34,\n 34\n ],\n \"text\": \"@brief Symbols available on request.\",\n \"text_lines\": [\n \"@brief Symbols available on request.\"\n ]\n },\n {\n \"start_line_number\": 37,\n \"end_line_number\": 37,\n \"line_range\": [\n 37,\n 37\n ],\n \"text\": \"── Constructor and OOP ──────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Constructor and OOP ──────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 65,\n \"end_line_number\": 65,\n \"line_range\": [\n 65,\n 65\n ],\n \"text\": \"Setter mode\",\n \"text_lines\": [\n \"Setter mode\"\n ]\n },\n {\n \"start_line_number\": 79,\n \"end_line_number\": 79,\n \"line_range\": [\n 79,\n 79\n ],\n \"text\": \"── Functions ────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Functions ────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 85,\n \"end_line_number\": 85,\n \"line_range\": [\n 85,\n 85\n ],\n \"text\": \"Validate input before printing\",\n \"text_lines\": [\n \"Validate input before printing\"\n ]\n },\n {\n \"start_line_number\": 105,\n \"end_line_number\": 105,\n \"line_range\": [\n 105,\n 105\n ],\n \"text\": \"List context — return formatted items\",\n \"text_lines\": [\n \"List context — return formatted items\"\n ]\n },\n {\n \"start_line_number\": 108,\n \"end_line_number\": 108,\n \"line_range\": [\n 108,\n 108\n ],\n \"text\": \"Scalar context — return count\",\n \"text_lines\": [\n \"Scalar context — return count\"\n ]\n },\n {\n \"start_line_number\": 119,\n \"end_line_number\": 119,\n \"line_range\": [\n 119,\n 119\n ],\n \"text\": \"── Regular expression functions ─────────────────────────────────────\",\n \"text_lines\": [\n \"── Regular expression functions ─────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 127,\n \"end_line_number\": 127,\n \"line_range\": [\n 127,\n 127\n ],\n \"text\": \"Match standard email pattern\",\n \"text_lines\": [\n \"Match standard email pattern\"\n ]\n },\n {\n \"start_line_number\": 134,\n \"end_line_number\": 134,\n \"line_range\": [\n 134,\n 134\n ],\n \"text\": \"@brief Replace all occurrences of a pattern in text.\",\n \"text_lines\": [\n \"@brief Replace all occurrences of a pattern in text.\"\n ]\n },\n {\n \"start_line_number\": 135,\n \"end_line_number\": 135,\n \"line_range\": [\n 135,\n 135\n ],\n \"text\": \"@param $text Input text.\",\n \"text_lines\": [\n \"@param $text Input text.\"\n ]\n },\n {\n \"start_line_number\": 145,\n \"end_line_number\": 145,\n \"line_range\": [\n 145,\n 145\n ],\n \"text\": \"── Closure factory ──────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Closure factory ──────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 152,\n \"end_line_number\": 152,\n \"line_range\": [\n 152,\n 152\n ],\n \"text\": \"Capture $factor in the returned closure\",\n \"text_lines\": [\n \"Capture $factor in the returned closure\"\n ]\n },\n {\n \"start_line_number\": 159,\n \"end_line_number\": 159,\n \"line_range\": [\n 159,\n 159\n ],\n \"text\": \"── Dispatch table ───────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Dispatch table ───────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 161,\n \"end_line_number\": 161,\n \"line_range\": [\n 161,\n 161\n ],\n \"text\": \"@brief Command dispatch table mapping names to handler coderefs.\",\n \"text_lines\": [\n \"@brief Command dispatch table mapping names to handler coderefs.\"\n ]\n },\n {\n \"start_line_number\": 172,\n \"end_line_number\": 172,\n \"line_range\": [\n 172,\n 172\n ],\n \"text\": \"@brief Execute a named operation from the dispatch table.\",\n \"text_lines\": [\n \"@brief Execute a named operation from the dispatch table.\"\n ]\n },\n {\n \"start_line_number\": 173,\n \"end_line_number\": 173,\n \"line_range\": [\n 173,\n 173\n ],\n \"text\": \"@param $op Operation name (add, sub, mul, div).\",\n \"text_lines\": [\n \"@param $op Operation name (add, sub, mul, div).\"\n ]\n },\n {\n \"start_line_number\": 174,\n \"end_line_number\": 174,\n \"line_range\": [\n 174,\n 174\n ],\n \"text\": \"@param $a First operand.\",\n \"text_lines\": [\n \"@param $a First operand.\"\n ]\n },\n {\n \"start_line_number\": 185,\n \"end_line_number\": 185,\n \"line_range\": [\n 185,\n 185\n ],\n \"text\": \"── Here-doc ─────────────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Here-doc ─────────────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 204,\n \"end_line_number\": 204,\n \"line_range\": [\n 204,\n 204\n ],\n \"text\": \"── AUTOLOAD for dynamic dispatch ────────────────────────────────────\",\n \"text_lines\": [\n \"── AUTOLOAD for dynamic dispatch ────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 206,\n \"end_line_number\": 206,\n \"line_range\": [\n 206,\n 206\n ],\n \"text\": \"@brief Handle undefined method calls dynamically.\",\n \"text_lines\": [\n \"@brief Handle undefined method calls dynamically.\"\n ]\n },\n {\n \"start_line_number\": 213,\n \"end_line_number\": 213,\n \"line_range\": [\n 213,\n 213\n ],\n \"text\": \"Extract method name from fully qualified AUTOLOAD\",\n \"text_lines\": [\n \"Extract method name from fully qualified AUTOLOAD\"\n ]\n },\n {\n \"start_line_number\": 225,\n \"end_line_number\": 225,\n \"line_range\": [\n 225,\n 225\n ],\n \"text\": \"── Error handling ───────────────────────────────────────────────────\",\n \"text_lines\": [\n \"── Error handling ───────────────────────────────────────────────────\"\n ]\n },\n {\n \"start_line_number\": 236,\n \"end_line_number\": 236,\n \"line_range\": [\n 236,\n 236\n ],\n \"text\": \"Log and suppress error\",\n \"text_lines\": [\n \"Log and suppress error\"\n ]\n },\n {\n \"start_line_number\": 259,\n \"end_line_number\": 259,\n \"line_range\": [\n 259,\n 259\n ],\n \"text\": \"REQ-COVER-SRS-231 START\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 START\"\n ]\n },\n {\n \"start_line_number\": 260,\n \"end_line_number\": 260,\n \"line_range\": [\n 260,\n 260\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 1\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 1\"\n ]\n },\n {\n \"start_line_number\": 261,\n \"end_line_number\": 261,\n \"line_range\": [\n 261,\n 261\n ],\n \"text\": \"@brief Coverage helper construct 1.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 1.\"\n ]\n },\n {\n \"start_line_number\": 270,\n \"end_line_number\": 270,\n \"line_range\": [\n 270,\n 270\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 2\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 2\"\n ]\n },\n {\n \"start_line_number\": 271,\n \"end_line_number\": 271,\n \"line_range\": [\n 271,\n 271\n ],\n \"text\": \"@brief Coverage helper construct 2.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 2.\"\n ]\n },\n {\n \"start_line_number\": 280,\n \"end_line_number\": 280,\n \"line_range\": [\n 280,\n 280\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 3\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 3\"\n ]\n },\n {\n \"start_line_number\": 281,\n \"end_line_number\": 281,\n \"line_range\": [\n 281,\n 281\n ],\n \"text\": \"@brief Coverage helper construct 3.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 3.\"\n ]\n },\n {\n \"start_line_number\": 290,\n \"end_line_number\": 290,\n \"line_range\": [\n 290,\n 290\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 4\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 4\"\n ]\n },\n {\n \"start_line_number\": 291,\n \"end_line_number\": 291,\n \"line_range\": [\n 291,\n 291\n ],\n \"text\": \"@brief Coverage helper construct 4.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 4.\"\n ]\n },\n {\n \"start_line_number\": 300,\n \"end_line_number\": 300,\n \"line_range\": [\n 300,\n 300\n ],\n \"text\": \"@REQ-COVER-SRS-231 block 5\",\n \"text_lines\": [\n \"@REQ-COVER-SRS-231 block 5\"\n ]\n },\n {\n \"start_line_number\": 301,\n \"end_line_number\": 301,\n \"line_range\": [\n 301,\n 301\n ],\n \"text\": \"@brief Coverage helper construct 5.\",\n \"text_lines\": [\n \"@brief Coverage helper construct 5.\"\n ]\n },\n {\n \"start_line_number\": 310,\n \"end_line_number\": 310,\n \"line_range\": [\n 310,\n 310\n ],\n \"text\": \"REQ-COVER-SRS-231 END\",\n \"text_lines\": [\n \"REQ-COVER-SRS-231 END\"\n ]\n }\n ]\n }\n ]\n}\n",
|
|
4
|
+
"stderr": ""
|
|
5
|
+
}
|