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.
Files changed (361) hide show
  1. package/.g.conf +20 -0
  2. package/.github/workflows/release-npm.yml +131 -0
  3. package/.gitignore +270 -0
  4. package/CHANGELOG.md +221 -0
  5. package/LICENSE +674 -0
  6. package/README.md +260 -0
  7. package/TODO.md +20 -0
  8. package/docs/pi.dev/agent-document-manifest.json +6399 -0
  9. package/docs/pi.dev/coding-agent-docs/compaction.md +394 -0
  10. package/docs/pi.dev/coding-agent-docs/custom-provider.md +596 -0
  11. package/docs/pi.dev/coding-agent-docs/development.md +71 -0
  12. package/docs/pi.dev/coding-agent-docs/extensions.md +2262 -0
  13. package/docs/pi.dev/coding-agent-docs/images/doom-extension.png +0 -0
  14. package/docs/pi.dev/coding-agent-docs/images/exy.png +0 -0
  15. package/docs/pi.dev/coding-agent-docs/images/interactive-mode.png +0 -0
  16. package/docs/pi.dev/coding-agent-docs/images/tree-view.png +0 -0
  17. package/docs/pi.dev/coding-agent-docs/json.md +82 -0
  18. package/docs/pi.dev/coding-agent-docs/keybindings.md +175 -0
  19. package/docs/pi.dev/coding-agent-docs/models.md +392 -0
  20. package/docs/pi.dev/coding-agent-docs/packages.md +218 -0
  21. package/docs/pi.dev/coding-agent-docs/prompt-templates.md +67 -0
  22. package/docs/pi.dev/coding-agent-docs/providers.md +195 -0
  23. package/docs/pi.dev/coding-agent-docs/rpc.md +1377 -0
  24. package/docs/pi.dev/coding-agent-docs/sdk.md +1124 -0
  25. package/docs/pi.dev/coding-agent-docs/session.md +412 -0
  26. package/docs/pi.dev/coding-agent-docs/settings.md +247 -0
  27. package/docs/pi.dev/coding-agent-docs/shell-aliases.md +13 -0
  28. package/docs/pi.dev/coding-agent-docs/skills.md +232 -0
  29. package/docs/pi.dev/coding-agent-docs/terminal-setup.md +106 -0
  30. package/docs/pi.dev/coding-agent-docs/termux.md +127 -0
  31. package/docs/pi.dev/coding-agent-docs/themes.md +295 -0
  32. package/docs/pi.dev/coding-agent-docs/tmux.md +61 -0
  33. package/docs/pi.dev/coding-agent-docs/tree.md +231 -0
  34. package/docs/pi.dev/coding-agent-docs/tui.md +887 -0
  35. package/docs/pi.dev/coding-agent-docs/windows.md +17 -0
  36. package/docs/pi.dev/mom-docs/artifacts-server.md +475 -0
  37. package/docs/pi.dev/mom-docs/events.md +307 -0
  38. package/docs/pi.dev/mom-docs/new.md +970 -0
  39. package/docs/pi.dev/mom-docs/sandbox.md +153 -0
  40. package/docs/pi.dev/mom-docs/slack-bot-minimal-guide.md +399 -0
  41. package/docs/pi.dev/mom-docs/v86.md +319 -0
  42. package/docs/pi.dev/pods-docs/gml-4.5.md +189 -0
  43. package/docs/pi.dev/pods-docs/gpt-oss.md +233 -0
  44. package/docs/pi.dev/pods-docs/implementation-plan.md +183 -0
  45. package/docs/pi.dev/pods-docs/kimi-k2.md +197 -0
  46. package/docs/pi.dev/pods-docs/models.md +116 -0
  47. package/docs/pi.dev/pods-docs/plan.md +166 -0
  48. package/docs/pi.dev/pods-docs/qwen3-coder.md +132 -0
  49. package/images/flowchart-bw.png +0 -0
  50. package/images/flowchart-bw.svg +102 -0
  51. package/images/flowchart.md +100 -0
  52. package/images/flowchart.png +0 -0
  53. package/images/flowchart.svg +3 -0
  54. package/package.json +46 -0
  55. package/req/docs/REFERENCES.md +4554 -0
  56. package/req/docs/REQUIREMENTS.md +475 -0
  57. package/req/docs/WORKFLOW.md +1059 -0
  58. package/scripts/debug-extension.ts +497 -0
  59. package/scripts/lib/extension-debug-harness.ts +450 -0
  60. package/scripts/lib/recording-extension-api.ts +786 -0
  61. package/scripts/lib/sdk-smoke.ts +503 -0
  62. package/scripts/pi-usereq-debug.sh +330 -0
  63. package/scripts/tool-args-to-params.ts +208 -0
  64. package/src/cli.ts +349 -0
  65. package/src/core/agent-tool-json.ts +621 -0
  66. package/src/core/compress-files.ts +72 -0
  67. package/src/core/compress-payload.ts +648 -0
  68. package/src/core/compress.ts +464 -0
  69. package/src/core/config.ts +272 -0
  70. package/src/core/doxygen-parser.ts +318 -0
  71. package/src/core/errors.ts +31 -0
  72. package/src/core/extension-status.ts +660 -0
  73. package/src/core/find-constructs.ts +319 -0
  74. package/src/core/find-payload.ts +915 -0
  75. package/src/core/generate-markdown.ts +120 -0
  76. package/src/core/path-context.ts +196 -0
  77. package/src/core/pi-notify.ts +430 -0
  78. package/src/core/pi-usereq-tools.ts +140 -0
  79. package/src/core/prompts.ts +184 -0
  80. package/src/core/reference-payload.ts +818 -0
  81. package/src/core/resources.ts +63 -0
  82. package/src/core/runtime-project-paths.ts +99 -0
  83. package/src/core/settings-menu.ts +233 -0
  84. package/src/core/source-analyzer.ts +1721 -0
  85. package/src/core/static-check.ts +674 -0
  86. package/src/core/token-counter.ts +729 -0
  87. package/src/core/tool-runner.ts +717 -0
  88. package/src/core/utils.ts +185 -0
  89. package/src/index.ts +2209 -0
  90. package/src/resources/guidelines/Google_C++_Style_Guide.md +3711 -0
  91. package/src/resources/guidelines/Google_Python_Style_Guide.md +3709 -0
  92. package/src/resources/prompts/analyze.md +130 -0
  93. package/src/resources/prompts/change.md +227 -0
  94. package/src/resources/prompts/check.md +139 -0
  95. package/src/resources/prompts/cover.md +219 -0
  96. package/src/resources/prompts/create.md +104 -0
  97. package/src/resources/prompts/fix.md +221 -0
  98. package/src/resources/prompts/flowchart.md +220 -0
  99. package/src/resources/prompts/implement.md +163 -0
  100. package/src/resources/prompts/new.md +226 -0
  101. package/src/resources/prompts/readme.md +182 -0
  102. package/src/resources/prompts/recreate.md +213 -0
  103. package/src/resources/prompts/refactor.md +213 -0
  104. package/src/resources/prompts/references.md +100 -0
  105. package/src/resources/prompts/renumber.md +119 -0
  106. package/src/resources/prompts/workflow.md +202 -0
  107. package/src/resources/prompts/write.md +99 -0
  108. package/src/resources/sounds/Machine-alert-beep-sound-effect.mp3 +0 -0
  109. package/src/resources/sounds/Soft-high-tech-notification-sound-effect.mp3 +0 -0
  110. package/src/resources/templates/Document_Source_Code_in_Doxygen_Style.md +130 -0
  111. package/src/resources/templates/HDT_Test_Authoring_Guide.md +318 -0
  112. package/src/resources/templates/Requirements_Template.md +78 -0
  113. package/tests/attended-results-scenarios.ts +758 -0
  114. package/tests/attended-results.test.ts +39 -0
  115. package/tests/cli-command-option-parity.test.ts +815 -0
  116. package/tests/debug-extension-harness.test.ts +463 -0
  117. package/tests/extension-registration.test.ts +2006 -0
  118. package/tests/fixtures/fixture_c.c +361 -0
  119. package/tests/fixtures/fixture_cpp.cpp +407 -0
  120. package/tests/fixtures/fixture_csharp.cs +411 -0
  121. package/tests/fixtures/fixture_elixir.ex +409 -0
  122. package/tests/fixtures/fixture_go.go +341 -0
  123. package/tests/fixtures/fixture_haskell.hs +250 -0
  124. package/tests/fixtures/fixture_java.java +430 -0
  125. package/tests/fixtures/fixture_javascript.js +383 -0
  126. package/tests/fixtures/fixture_kotlin.kt +451 -0
  127. package/tests/fixtures/fixture_lua.lua +276 -0
  128. package/tests/fixtures/fixture_perl.pl +310 -0
  129. package/tests/fixtures/fixture_php.php +433 -0
  130. package/tests/fixtures/fixture_python.py +502 -0
  131. package/tests/fixtures/fixture_ruby.rb +345 -0
  132. package/tests/fixtures/fixture_rust.rs +380 -0
  133. package/tests/fixtures/fixture_scala.scala +398 -0
  134. package/tests/fixtures/fixture_shell.sh +276 -0
  135. package/tests/fixtures/fixture_swift.swift +397 -0
  136. package/tests/fixtures/fixture_typescript.ts +434 -0
  137. package/tests/fixtures/fixture_zig.zig +295 -0
  138. package/tests/fixtures_attended_results/project/compress-line-numbers.json +5 -0
  139. package/tests/fixtures_attended_results/project/compress.json +5 -0
  140. package/tests/fixtures_attended_results/project/enable-static-check-invalid-command.json +5 -0
  141. package/tests/fixtures_attended_results/project/enable-static-check-valid.json +5 -0
  142. package/tests/fixtures_attended_results/project/files-static-check.json +5 -0
  143. package/tests/fixtures_attended_results/project/find-line-numbers.json +5 -0
  144. package/tests/fixtures_attended_results/project/find.json +5 -0
  145. package/tests/fixtures_attended_results/project/get-base-path.json +5 -0
  146. package/tests/fixtures_attended_results/project/git-check-clean.json +5 -0
  147. package/tests/fixtures_attended_results/project/git-check-dirty.json +5 -0
  148. package/tests/fixtures_attended_results/project/git-path.json +5 -0
  149. package/tests/fixtures_attended_results/project/git-wt-create-invalid.json +5 -0
  150. package/tests/fixtures_attended_results/project/git-wt-create-valid.json +5 -0
  151. package/tests/fixtures_attended_results/project/git-wt-delete-nonexistent.json +5 -0
  152. package/tests/fixtures_attended_results/project/git-wt-delete-valid.json +5 -0
  153. package/tests/fixtures_attended_results/project/git-wt-name.json +5 -0
  154. package/tests/fixtures_attended_results/project/references.json +5 -0
  155. package/tests/fixtures_attended_results/project/static-check.json +5 -0
  156. package/tests/fixtures_attended_results/project/tokens.json +5 -0
  157. package/tests/fixtures_attended_results/standalone/files-compress/fixture_c.c.json +5 -0
  158. package/tests/fixtures_attended_results/standalone/files-compress/fixture_cpp.cpp.json +5 -0
  159. package/tests/fixtures_attended_results/standalone/files-compress/fixture_csharp.cs.json +5 -0
  160. package/tests/fixtures_attended_results/standalone/files-compress/fixture_elixir.ex.json +5 -0
  161. package/tests/fixtures_attended_results/standalone/files-compress/fixture_go.go.json +5 -0
  162. package/tests/fixtures_attended_results/standalone/files-compress/fixture_haskell.hs.json +5 -0
  163. package/tests/fixtures_attended_results/standalone/files-compress/fixture_java.java.json +5 -0
  164. package/tests/fixtures_attended_results/standalone/files-compress/fixture_javascript.js.json +5 -0
  165. package/tests/fixtures_attended_results/standalone/files-compress/fixture_kotlin.kt.json +5 -0
  166. package/tests/fixtures_attended_results/standalone/files-compress/fixture_lua.lua.json +5 -0
  167. package/tests/fixtures_attended_results/standalone/files-compress/fixture_perl.pl.json +5 -0
  168. package/tests/fixtures_attended_results/standalone/files-compress/fixture_php.php.json +5 -0
  169. package/tests/fixtures_attended_results/standalone/files-compress/fixture_python.py.json +5 -0
  170. package/tests/fixtures_attended_results/standalone/files-compress/fixture_ruby.rb.json +5 -0
  171. package/tests/fixtures_attended_results/standalone/files-compress/fixture_rust.rs.json +5 -0
  172. package/tests/fixtures_attended_results/standalone/files-compress/fixture_scala.scala.json +5 -0
  173. package/tests/fixtures_attended_results/standalone/files-compress/fixture_shell.sh.json +5 -0
  174. package/tests/fixtures_attended_results/standalone/files-compress/fixture_swift.swift.json +5 -0
  175. package/tests/fixtures_attended_results/standalone/files-compress/fixture_typescript.ts.json +5 -0
  176. package/tests/fixtures_attended_results/standalone/files-compress/fixture_zig.zig.json +5 -0
  177. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_c.c.json +5 -0
  178. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_cpp.cpp.json +5 -0
  179. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_csharp.cs.json +5 -0
  180. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_elixir.ex.json +5 -0
  181. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_go.go.json +5 -0
  182. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_haskell.hs.json +5 -0
  183. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_java.java.json +5 -0
  184. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_javascript.js.json +5 -0
  185. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_kotlin.kt.json +5 -0
  186. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_lua.lua.json +5 -0
  187. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_perl.pl.json +5 -0
  188. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_php.php.json +5 -0
  189. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_python.py.json +5 -0
  190. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_ruby.rb.json +5 -0
  191. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_rust.rs.json +5 -0
  192. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_scala.scala.json +5 -0
  193. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_shell.sh.json +5 -0
  194. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_swift.swift.json +5 -0
  195. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_typescript.ts.json +5 -0
  196. package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_zig.zig.json +5 -0
  197. package/tests/fixtures_attended_results/standalone/files-find/fixture_c.c.json +5 -0
  198. package/tests/fixtures_attended_results/standalone/files-find/fixture_cpp.cpp.json +5 -0
  199. package/tests/fixtures_attended_results/standalone/files-find/fixture_csharp.cs.json +5 -0
  200. package/tests/fixtures_attended_results/standalone/files-find/fixture_elixir.ex.json +5 -0
  201. package/tests/fixtures_attended_results/standalone/files-find/fixture_go.go.json +5 -0
  202. package/tests/fixtures_attended_results/standalone/files-find/fixture_haskell.hs.json +5 -0
  203. package/tests/fixtures_attended_results/standalone/files-find/fixture_java.java.json +5 -0
  204. package/tests/fixtures_attended_results/standalone/files-find/fixture_javascript.js.json +5 -0
  205. package/tests/fixtures_attended_results/standalone/files-find/fixture_kotlin.kt.json +5 -0
  206. package/tests/fixtures_attended_results/standalone/files-find/fixture_lua.lua.json +5 -0
  207. package/tests/fixtures_attended_results/standalone/files-find/fixture_perl.pl.json +5 -0
  208. package/tests/fixtures_attended_results/standalone/files-find/fixture_php.php.json +5 -0
  209. package/tests/fixtures_attended_results/standalone/files-find/fixture_python.py.json +5 -0
  210. package/tests/fixtures_attended_results/standalone/files-find/fixture_ruby.rb.json +5 -0
  211. package/tests/fixtures_attended_results/standalone/files-find/fixture_rust.rs.json +5 -0
  212. package/tests/fixtures_attended_results/standalone/files-find/fixture_scala.scala.json +5 -0
  213. package/tests/fixtures_attended_results/standalone/files-find/fixture_shell.sh.json +5 -0
  214. package/tests/fixtures_attended_results/standalone/files-find/fixture_swift.swift.json +5 -0
  215. package/tests/fixtures_attended_results/standalone/files-find/fixture_typescript.ts.json +5 -0
  216. package/tests/fixtures_attended_results/standalone/files-find/fixture_zig.zig.json +5 -0
  217. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_c.c.json +5 -0
  218. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_cpp.cpp.json +5 -0
  219. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_csharp.cs.json +5 -0
  220. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_elixir.ex.json +5 -0
  221. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_go.go.json +5 -0
  222. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_haskell.hs.json +5 -0
  223. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_java.java.json +5 -0
  224. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_javascript.js.json +5 -0
  225. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_kotlin.kt.json +5 -0
  226. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_lua.lua.json +5 -0
  227. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_perl.pl.json +5 -0
  228. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_php.php.json +5 -0
  229. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_python.py.json +5 -0
  230. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_ruby.rb.json +5 -0
  231. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_rust.rs.json +5 -0
  232. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_scala.scala.json +5 -0
  233. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_shell.sh.json +5 -0
  234. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_swift.swift.json +5 -0
  235. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_typescript.ts.json +5 -0
  236. package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_zig.zig.json +5 -0
  237. package/tests/fixtures_attended_results/standalone/files-references/fixture_c.c.json +5 -0
  238. package/tests/fixtures_attended_results/standalone/files-references/fixture_cpp.cpp.json +5 -0
  239. package/tests/fixtures_attended_results/standalone/files-references/fixture_csharp.cs.json +5 -0
  240. package/tests/fixtures_attended_results/standalone/files-references/fixture_elixir.ex.json +5 -0
  241. package/tests/fixtures_attended_results/standalone/files-references/fixture_go.go.json +5 -0
  242. package/tests/fixtures_attended_results/standalone/files-references/fixture_haskell.hs.json +5 -0
  243. package/tests/fixtures_attended_results/standalone/files-references/fixture_java.java.json +5 -0
  244. package/tests/fixtures_attended_results/standalone/files-references/fixture_javascript.js.json +5 -0
  245. package/tests/fixtures_attended_results/standalone/files-references/fixture_kotlin.kt.json +5 -0
  246. package/tests/fixtures_attended_results/standalone/files-references/fixture_lua.lua.json +5 -0
  247. package/tests/fixtures_attended_results/standalone/files-references/fixture_perl.pl.json +5 -0
  248. package/tests/fixtures_attended_results/standalone/files-references/fixture_php.php.json +5 -0
  249. package/tests/fixtures_attended_results/standalone/files-references/fixture_python.py.json +5 -0
  250. package/tests/fixtures_attended_results/standalone/files-references/fixture_ruby.rb.json +5 -0
  251. package/tests/fixtures_attended_results/standalone/files-references/fixture_rust.rs.json +5 -0
  252. package/tests/fixtures_attended_results/standalone/files-references/fixture_scala.scala.json +5 -0
  253. package/tests/fixtures_attended_results/standalone/files-references/fixture_shell.sh.json +5 -0
  254. package/tests/fixtures_attended_results/standalone/files-references/fixture_swift.swift.json +5 -0
  255. package/tests/fixtures_attended_results/standalone/files-references/fixture_typescript.ts.json +5 -0
  256. package/tests/fixtures_attended_results/standalone/files-references/fixture_zig.zig.json +5 -0
  257. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_c.c.json +5 -0
  258. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_cpp.cpp.json +5 -0
  259. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_csharp.cs.json +5 -0
  260. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_elixir.ex.json +5 -0
  261. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_go.go.json +5 -0
  262. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_haskell.hs.json +5 -0
  263. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_java.java.json +5 -0
  264. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_javascript.js.json +5 -0
  265. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_kotlin.kt.json +5 -0
  266. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_lua.lua.json +5 -0
  267. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_perl.pl.json +5 -0
  268. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_php.php.json +5 -0
  269. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_python.py.json +5 -0
  270. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_ruby.rb.json +5 -0
  271. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_rust.rs.json +5 -0
  272. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_scala.scala.json +5 -0
  273. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_shell.sh.json +5 -0
  274. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_swift.swift.json +5 -0
  275. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_typescript.ts.json +5 -0
  276. package/tests/fixtures_attended_results/standalone/files-tokens/fixture_zig.zig.json +5 -0
  277. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_c.c.json +5 -0
  278. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_cpp.cpp.json +5 -0
  279. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_csharp.cs.json +5 -0
  280. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_elixir.ex.json +5 -0
  281. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_go.go.json +5 -0
  282. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_haskell.hs.json +5 -0
  283. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_java.java.json +5 -0
  284. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_javascript.js.json +5 -0
  285. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_kotlin.kt.json +5 -0
  286. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_lua.lua.json +5 -0
  287. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_perl.pl.json +5 -0
  288. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_php.php.json +5 -0
  289. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_python.py.json +5 -0
  290. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_ruby.rb.json +5 -0
  291. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_rust.rs.json +5 -0
  292. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_scala.scala.json +5 -0
  293. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_shell.sh.json +5 -0
  294. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_swift.swift.json +5 -0
  295. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_typescript.ts.json +5 -0
  296. package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_zig.zig.json +5 -0
  297. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_c.c.json +5 -0
  298. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_cpp.cpp.json +5 -0
  299. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_csharp.cs.json +5 -0
  300. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_elixir.ex.json +5 -0
  301. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_go.go.json +5 -0
  302. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_haskell.hs.json +5 -0
  303. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_java.java.json +5 -0
  304. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_javascript.js.json +5 -0
  305. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_kotlin.kt.json +5 -0
  306. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_lua.lua.json +5 -0
  307. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_perl.pl.json +5 -0
  308. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_php.php.json +5 -0
  309. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_python.py.json +5 -0
  310. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_ruby.rb.json +5 -0
  311. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_rust.rs.json +5 -0
  312. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_scala.scala.json +5 -0
  313. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_shell.sh.json +5 -0
  314. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_swift.swift.json +5 -0
  315. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_typescript.ts.json +5 -0
  316. package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_zig.zig.json +5 -0
  317. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_c.c.json +5 -0
  318. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_cpp.cpp.json +5 -0
  319. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_csharp.cs.json +5 -0
  320. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_elixir.ex.json +5 -0
  321. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_go.go.json +5 -0
  322. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_haskell.hs.json +5 -0
  323. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_java.java.json +5 -0
  324. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_javascript.js.json +5 -0
  325. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_kotlin.kt.json +5 -0
  326. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_lua.lua.json +5 -0
  327. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_perl.pl.json +5 -0
  328. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_php.php.json +5 -0
  329. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_python.py.json +5 -0
  330. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_ruby.rb.json +5 -0
  331. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_rust.rs.json +5 -0
  332. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_scala.scala.json +5 -0
  333. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_shell.sh.json +5 -0
  334. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_swift.swift.json +5 -0
  335. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_typescript.ts.json +5 -0
  336. package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_zig.zig.json +5 -0
  337. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_c.c.json +5 -0
  338. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_cpp.cpp.json +5 -0
  339. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_csharp.cs.json +5 -0
  340. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_elixir.ex.json +5 -0
  341. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_go.go.json +5 -0
  342. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_haskell.hs.json +5 -0
  343. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_java.java.json +5 -0
  344. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_javascript.js.json +5 -0
  345. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_kotlin.kt.json +5 -0
  346. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_lua.lua.json +5 -0
  347. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_perl.pl.json +5 -0
  348. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_php.php.json +5 -0
  349. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_python.py.json +5 -0
  350. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_ruby.rb.json +5 -0
  351. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_rust.rs.json +5 -0
  352. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_scala.scala.json +5 -0
  353. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_shell.sh.json +5 -0
  354. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_swift.swift.json +5 -0
  355. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_typescript.ts.json +5 -0
  356. package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_zig.zig.json +5 -0
  357. package/tests/helpers.ts +204 -0
  358. package/tests/oracle-project.test.ts +63 -0
  359. package/tests/oracle-standalone.test.ts +48 -0
  360. package/tests/prompt-rendering.test.ts +66 -0
  361. package/tests/release-workflow.test.ts +133 -0
@@ -0,0 +1,411 @@
1
+ /// @file fixture_csharp.cs
2
+ /// @brief Comprehensive C# test fixture for parser validation.
3
+ /// @details Covers records, pattern matching, LINQ, extension methods,
4
+ /// async streams, nullable reference types, init-only setters,
5
+ /// generic constraints, events, delegates, and indexers.
6
+ // Single line comment
7
+ /* Multi-line
8
+ comment */
9
+ using System;
10
+ using System.Collections.Generic;
11
+ using System.Linq;
12
+ using System.Threading.Tasks;
13
+ using System.Threading;
14
+
15
+ namespace MyApp {
16
+
17
+ /* ── Delegates and events ─────────────────────────────────────────────── */
18
+
19
+ /// @brief Delegate for handling data change notifications.
20
+ /// @details Emits sender and payload when tracked data changes.
21
+ /// @param sender The object raising the event.
22
+ /// @param data The changed data payload.
23
+ /// @return Void delegate invocation.
24
+ public delegate void DataChangedHandler(object sender, string data);
25
+
26
+ /// @brief Delegate for value transformation operations.
27
+ /// @details Applies a deterministic conversion from input to output.
28
+ /// @param value The value to transform.
29
+ /// @return Transformed value.
30
+ /// @details Generic type parameter T defines input and output type.
31
+ /// @param value Input value bound to type T.
32
+ public delegate T Transform<T>(T value);
33
+
34
+ /* ── Attributes ───────────────────────────────────────────────────────── */
35
+
36
+ /// <summary>
37
+ /// Custom attribute marking classes that require auditing.
38
+ /// </summary>
39
+ [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
40
+ public class AuditableAttribute : Attribute {
41
+ /// <summary>The audit level (1=low, 3=high).</summary>
42
+ public int Level { get; set; } = 1;
43
+ }
44
+
45
+ /* ── Main class ───────────────────────────────────────────────────────── */
46
+
47
+ /// <summary>
48
+ /// Primary class demonstrating various C# constructs including
49
+ /// properties, events, indexers, and async patterns.
50
+ /// </summary>
51
+ [Serializable]
52
+ [Auditable(Level = 2)]
53
+ public class Person : IComparable<Person>, IDisposable {
54
+ /// <summary>Maximum age constraint for validation.</summary>
55
+ public const int MAX_AGE = 150;
56
+
57
+ /// <summary>Instance counter tracking total allocations.</summary>
58
+ private static int _instanceCount = 0;
59
+
60
+ /// <summary>Internal name storage with backing field.</summary>
61
+ private string _name;
62
+
63
+ /// <summary>
64
+ /// Full name with validation on set.
65
+ /// </summary>
66
+ /// <value>Non-null, non-empty person name.</value>
67
+ /// <exception cref="ArgumentException">Thrown when value is empty.</exception>
68
+ public string Name {
69
+ get => _name;
70
+ set {
71
+ // Validate non-empty name
72
+ if (string.IsNullOrWhiteSpace(value))
73
+ throw new ArgumentException("Name cannot be empty");
74
+ _name = value;
75
+ }
76
+ }
77
+
78
+ /// <summary>Person's age with init-only setter.</summary>
79
+ public int Age { get; init; }
80
+
81
+ /// <summary>Optional email address (nullable reference type).</summary>
82
+ public string? Email { get; set; }
83
+
84
+ /// <summary>Read-only unique identifier generated at construction.</summary>
85
+ public Guid Id { get; } = Guid.NewGuid();
86
+
87
+ /// <summary>
88
+ /// Event raised when person data changes.
89
+ /// </summary>
90
+ public event DataChangedHandler? OnDataChanged;
91
+
92
+ /// @brief Construct a new Person with name and age.
93
+ /// @details Initializes backing fields and updates instance counters.
94
+ /// @param name Display name (required).
95
+ /// @param age Age in years (must be 0..MAX_AGE).
96
+ /// @return Constructed Person instance.
97
+ public Person(string name, int age) {
98
+ _name = name;
99
+ Age = age;
100
+ Interlocked.Increment(ref _instanceCount);
101
+ }
102
+
103
+ /// <summary>
104
+ /// Greet this person on the console.
105
+ /// </summary>
106
+ public void Greet() {
107
+ // Fire data changed event
108
+ OnDataChanged?.Invoke(this, $"Greeted {Name}");
109
+ Console.WriteLine($"Hello, {Name}!");
110
+ }
111
+
112
+ /// @brief Fetch person data asynchronously with cancellation support.
113
+ /// @details Waits asynchronously and returns a deterministic payload.
114
+ /// @param token Cancellation token for cooperative cancellation.
115
+ /// @return Formatted data string.
116
+ /// @details Supports cancellation through token propagation.
117
+ public static async Task<string> FetchAsync(CancellationToken token = default) {
118
+ await Task.Delay(100, token);
119
+ return "data";
120
+ }
121
+
122
+ /// @brief Compare persons by age for sorting.
123
+ /// @details Implements IComparable ordering semantics.
124
+ /// @param other Person to compare with.
125
+ /// @return Comparison result: negative, zero, or positive.
126
+ /// @details Null values are ordered after non-null instances.
127
+ public int CompareTo(Person? other) {
128
+ if (other is null) return 1;
129
+ return Age.CompareTo(other.Age);
130
+ }
131
+
132
+ /// <summary>
133
+ /// Dispose of managed resources.
134
+ /// </summary>
135
+ public void Dispose() {
136
+ // Cleanup managed resources
137
+ Interlocked.Decrement(ref _instanceCount);
138
+ GC.SuppressFinalize(this);
139
+ }
140
+
141
+ /// <summary>
142
+ /// Indexer for accessing person properties by name.
143
+ /// </summary>
144
+ /// <param name="propertyName">Name of the property to access.</param>
145
+ /// <returns>Property value as object, or null.</returns>
146
+ public object? this[string propertyName] {
147
+ get {
148
+ return propertyName switch {
149
+ "Name" => Name,
150
+ "Age" => Age,
151
+ "Email" => Email,
152
+ _ => null,
153
+ };
154
+ }
155
+ }
156
+
157
+ /// <summary>
158
+ /// Deconstruct for pattern matching support.
159
+ /// </summary>
160
+ /// <param name="name">Output: person name.</param>
161
+ /// <param name="age">Output: person age.</param>
162
+ public void Deconstruct(out string name, out int age) {
163
+ name = Name;
164
+ age = Age;
165
+ }
166
+
167
+ /// <summary>
168
+ /// Get total number of Person instances created.
169
+ /// </summary>
170
+ /// <returns>Instance count.</returns>
171
+ public static int GetInstanceCount() => _instanceCount;
172
+ }
173
+
174
+ /* ── Interface ────────────────────────────────────────────────────────── */
175
+
176
+ /// <summary>
177
+ /// Interface for greeting operations with default implementation.
178
+ /// </summary>
179
+ public interface IGreeter {
180
+ /// <summary>
181
+ /// Say hello to a named person.
182
+ /// </summary>
183
+ /// <param name="name">Person's name.</param>
184
+ void SayHello(string name);
185
+
186
+ /// <summary>
187
+ /// Default farewell implementation.
188
+ /// </summary>
189
+ /// <param name="name">Person's name.</param>
190
+ void SayGoodbye(string name) {
191
+ Console.WriteLine($"Goodbye, {name}");
192
+ }
193
+ }
194
+
195
+ /// <summary>
196
+ /// Generic repository interface with covariant type parameter.
197
+ /// </summary>
198
+ /// <typeparam name="T">Entity type, must be a class with parameterless ctor.</typeparam>
199
+ public interface IRepository<T> where T : class, new() {
200
+ /// <summary>Find entity by ID.</summary>
201
+ Task<T?> FindByIdAsync(int id);
202
+
203
+ /// <summary>Get all entities as async stream.</summary>
204
+ IAsyncEnumerable<T> GetAllAsync(CancellationToken token = default);
205
+
206
+ /// <summary>Save an entity.</summary>
207
+ Task<bool> SaveAsync(T entity);
208
+ }
209
+
210
+ /* ── Struct ───────────────────────────────────────────────────────────── */
211
+
212
+ /// <summary>
213
+ /// Immutable 2D point struct with operator overloading.
214
+ /// </summary>
215
+ public readonly struct Point {
216
+ /// <summary>Horizontal coordinate.</summary>
217
+ public double X { get; init; }
218
+ /// <summary>Vertical coordinate.</summary>
219
+ public double Y { get; init; }
220
+
221
+ /// <summary>
222
+ /// Add two points component-wise.
223
+ /// </summary>
224
+ public static Point operator +(Point a, Point b) => new() { X = a.X + b.X, Y = a.Y + b.Y };
225
+
226
+ /// <summary>
227
+ /// Compute distance from origin.
228
+ /// </summary>
229
+ public double Magnitude => Math.Sqrt(X * X + Y * Y);
230
+ }
231
+
232
+ /* ── Enum ─────────────────────────────────────────────────────────────── */
233
+
234
+ /// <summary>
235
+ /// Color flags enum supporting bitwise combinations.
236
+ /// </summary>
237
+ [Flags]
238
+ public enum Color {
239
+ /// <summary>No color selected.</summary>
240
+ None = 0,
241
+ /// <summary>Red channel.</summary>
242
+ Red = 1,
243
+ /// <summary>Green channel.</summary>
244
+ Green = 2,
245
+ /// <summary>Blue channel.</summary>
246
+ Blue = 4,
247
+ /// <summary>All channels combined.</summary>
248
+ All = Red | Green | Blue,
249
+ }
250
+
251
+ /* ── Record types ─────────────────────────────────────────────────────── */
252
+
253
+ /// <summary>
254
+ /// Immutable record for configuration entries.
255
+ /// </summary>
256
+ /// <param name="Key">Configuration key.</param>
257
+ /// <param name="Value">Configuration value.</param>
258
+ public record ConfigEntry(string Key, string Value);
259
+
260
+ /// <summary>
261
+ /// Record struct for lightweight value records (C# 10).
262
+ /// </summary>
263
+ /// <param name="X">X coordinate.</param>
264
+ /// <param name="Y">Y coordinate.</param>
265
+ public record struct Vector2(double X, double Y);
266
+
267
+ /* ── Extension methods ────────────────────────────────────────────────── */
268
+
269
+ /// <summary>
270
+ /// Extension methods for string manipulation.
271
+ /// </summary>
272
+ public static class StringExtensions {
273
+ /// <summary>
274
+ /// Truncate a string to the specified maximum length.
275
+ /// </summary>
276
+ /// <param name="str">Source string.</param>
277
+ /// <param name="maxLength">Maximum characters to keep.</param>
278
+ /// <returns>Truncated string with ellipsis if shortened.</returns>
279
+ public static string Truncate(this string str, int maxLength) {
280
+ if (str.Length <= maxLength) return str;
281
+ return str[..maxLength] + "...";
282
+ }
283
+
284
+ /// <summary>
285
+ /// Check if a string contains only ASCII characters.
286
+ /// </summary>
287
+ /// <param name="str">The string to check.</param>
288
+ /// <returns>True if all characters are ASCII.</returns>
289
+ public static bool IsAscii(this string str) {
290
+ return str.All(c => c < 128);
291
+ }
292
+ }
293
+
294
+ /* ── Generic class with constraints ───────────────────────────────────── */
295
+
296
+ /// <summary>
297
+ /// Generic collection with filtering and transformation support.
298
+ /// </summary>
299
+ /// <typeparam name="T">Element type, must be comparable.</typeparam>
300
+ public class SortedCollection<T> where T : IComparable<T> {
301
+ private readonly List<T> _items = new();
302
+
303
+ /// <summary>
304
+ /// Add an item maintaining sorted order.
305
+ /// </summary>
306
+ /// <param name="item">Item to insert.</param>
307
+ public void Add(T item) {
308
+ // Binary search for insertion point
309
+ var index = _items.BinarySearch(item);
310
+ if (index < 0) index = ~index;
311
+ _items.Insert(index, item);
312
+ }
313
+
314
+ /// <summary>
315
+ /// Get items matching a predicate using LINQ.
316
+ /// </summary>
317
+ /// <param name="predicate">Filter condition.</param>
318
+ /// <returns>Filtered enumerable.</returns>
319
+ public IEnumerable<T> Where(Func<T, bool> predicate) {
320
+ return _items.Where(predicate);
321
+ }
322
+ }
323
+
324
+ /* ── Pattern matching utility ─────────────────────────────────────────── */
325
+
326
+ /// <summary>
327
+ /// Utility class demonstrating advanced pattern matching.
328
+ /// </summary>
329
+ public static class PatternMatcher {
330
+ /// <summary>
331
+ /// Describe any object using C# pattern matching expressions.
332
+ /// </summary>
333
+ /// <param name="obj">Object to describe.</param>
334
+ /// <returns>Description string.</returns>
335
+ public static string Describe(object? obj) {
336
+ return obj switch {
337
+ null => "null",
338
+ int i when i > 0 => $"positive int: {i}",
339
+ int i => $"non-positive int: {i}",
340
+ string { Length: 0 } => "empty string",
341
+ string s => $"string({s.Length}): {s}",
342
+ Person { Age: >= 18 } p => $"adult: {p.Name}",
343
+ Person p => $"minor: {p.Name}",
344
+ _ => $"unknown: {obj.GetType().Name}",
345
+ };
346
+ }
347
+ }
348
+
349
+ } // namespace MyApp
350
+
351
+ /* coverage extension block */
352
+ namespace MyApp.Services {}
353
+ namespace MyApp.Core {}
354
+ namespace MyApp.Data {}
355
+ namespace MyApp.Api {}
356
+ public interface ILogger {}
357
+ public interface IParser {}
358
+ public interface IRunner {}
359
+ public enum ModeCs { Fast, Safe }
360
+ public enum PhaseCs { Init, Done }
361
+ public enum StateCs { Open, Closed }
362
+ public enum SignalCs { On, Off }
363
+ public struct Size { public int W; public int H; }
364
+ public readonly struct Vector { public readonly int X; public readonly int Y; }
365
+ public struct Limits { public int Max; }
366
+ public struct Cursor { public int Index; }
367
+ [DebuggerDisplay("{Value}")]
368
+ public const int MIN_AGE = 10;
369
+ public const int RETRY_LIMIT = 3;
370
+ public const int CACHE_SIZE = 128;
371
+ public const int DEFAULT_PAGE = 1;
372
+
373
+ // REQ-COVER-SRS-231 START
374
+ public static class ReqCoverCsharp {
375
+ /// @REQ-COVER-SRS-231 block 1
376
+ /// @brief Coverage helper construct 1.
377
+ /// @details Provides deterministic fixture-level Doxygen coverage block 1.
378
+ /// @param value Input value for helper construct 1.
379
+ /// @return Output value for helper construct 1.
380
+ public static int ReqCoverCsharp1(int value) { return value + 1; }
381
+
382
+ /// @REQ-COVER-SRS-231 block 2
383
+ /// @brief Coverage helper construct 2.
384
+ /// @details Provides deterministic fixture-level Doxygen coverage block 2.
385
+ /// @param value Input value for helper construct 2.
386
+ /// @return Output value for helper construct 2.
387
+ public static int ReqCoverCsharp2(int value) { return value + 2; }
388
+
389
+ /// @REQ-COVER-SRS-231 block 3
390
+ /// @brief Coverage helper construct 3.
391
+ /// @details Provides deterministic fixture-level Doxygen coverage block 3.
392
+ /// @param value Input value for helper construct 3.
393
+ /// @return Output value for helper construct 3.
394
+ public static int ReqCoverCsharp3(int value) { return value + 3; }
395
+
396
+ /// @REQ-COVER-SRS-231 block 4
397
+ /// @brief Coverage helper construct 4.
398
+ /// @details Provides deterministic fixture-level Doxygen coverage block 4.
399
+ /// @param value Input value for helper construct 4.
400
+ /// @return Output value for helper construct 4.
401
+ public static int ReqCoverCsharp4(int value) { return value + 4; }
402
+
403
+ /// @REQ-COVER-SRS-231 block 5
404
+ /// @brief Coverage helper construct 5.
405
+ /// @details Provides deterministic fixture-level Doxygen coverage block 5.
406
+ /// @param value Input value for helper construct 5.
407
+ /// @return Output value for helper construct 5.
408
+ public static int ReqCoverCsharp5(int value) { return value + 5; }
409
+
410
+ }
411
+ // REQ-COVER-SRS-231 END