rhachet-roles-bhrain 0.2.0 → 0.5.1

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 (365) hide show
  1. package/dist/.test/getContextOpenAI.js +1 -1
  2. package/dist/.test/getContextOpenAI.js.map +1 -1
  3. package/dist/access/sdk/sdkOpenAi.d.ts +25 -0
  4. package/dist/access/sdk/sdkOpenAi.js +122 -0
  5. package/dist/access/sdk/sdkOpenAi.js.map +1 -1
  6. package/dist/access/sdks/anthropic/sdkAnthropic.d.ts +31 -0
  7. package/dist/access/sdks/anthropic/sdkAnthropic.js +151 -0
  8. package/dist/access/sdks/anthropic/sdkAnthropic.js.map +1 -0
  9. package/dist/access/sdks/qwen/sdkQwen.d.ts +31 -0
  10. package/dist/access/sdks/qwen/sdkQwen.js +134 -0
  11. package/dist/access/sdks/qwen/sdkQwen.js.map +1 -0
  12. package/dist/domain.objects/BrainArch1/BrainArch1Actor.d.ts +67 -0
  13. package/dist/domain.objects/BrainArch1/BrainArch1Actor.js +12 -0
  14. package/dist/domain.objects/BrainArch1/BrainArch1Actor.js.map +1 -0
  15. package/dist/domain.objects/BrainArch1/BrainArch1Atom.d.ts +40 -0
  16. package/dist/domain.objects/BrainArch1/BrainArch1Atom.js +3 -0
  17. package/dist/domain.objects/BrainArch1/BrainArch1Atom.js.map +1 -0
  18. package/dist/domain.objects/BrainArch1/BrainArch1Context.d.ts +30 -0
  19. package/dist/domain.objects/BrainArch1/BrainArch1Context.js +3 -0
  20. package/dist/domain.objects/BrainArch1/BrainArch1Context.js.map +1 -0
  21. package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.d.ts +34 -0
  22. package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.js +8 -0
  23. package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.js.map +1 -0
  24. package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.d.ts +23 -0
  25. package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.js +9 -0
  26. package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.js.map +1 -0
  27. package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.d.ts +49 -0
  28. package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.js +8 -0
  29. package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.js.map +1 -0
  30. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.d.ts +31 -0
  31. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.js +9 -0
  32. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.js.map +1 -0
  33. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.d.ts +27 -0
  34. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.js +8 -0
  35. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.js.map +1 -0
  36. package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.d.ts +45 -0
  37. package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.js +3 -0
  38. package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.js.map +1 -0
  39. package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.d.ts +29 -0
  40. package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.js +8 -0
  41. package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.js.map +1 -0
  42. package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.d.ts +22 -0
  43. package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.js +8 -0
  44. package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.js.map +1 -0
  45. package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.d.ts +30 -0
  46. package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.js +3 -0
  47. package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.js.map +1 -0
  48. package/dist/domain.objects/BrainArch1/BrainArch1Session.d.ts +47 -0
  49. package/dist/domain.objects/BrainArch1/BrainArch1Session.js +17 -0
  50. package/dist/domain.objects/BrainArch1/BrainArch1Session.js.map +1 -0
  51. package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.d.ts +34 -0
  52. package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.js +12 -0
  53. package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.js.map +1 -0
  54. package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.d.ts +21 -0
  55. package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.js +8 -0
  56. package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.js.map +1 -0
  57. package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.d.ts +54 -0
  58. package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.js +20 -0
  59. package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.js.map +1 -0
  60. package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.d.ts +36 -0
  61. package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.js +9 -0
  62. package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.js.map +1 -0
  63. package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.d.ts +25 -0
  64. package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.js +8 -0
  65. package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.js.map +1 -0
  66. package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.d.ts +31 -0
  67. package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.js +3 -0
  68. package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.js.map +1 -0
  69. package/dist/domain.objects/Reviewer/ReviewerReflectManifest.d.ts +44 -0
  70. package/dist/domain.objects/Reviewer/ReviewerReflectManifest.js +8 -0
  71. package/dist/domain.objects/Reviewer/ReviewerReflectManifest.js.map +1 -0
  72. package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.d.ts +30 -0
  73. package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.js +35 -0
  74. package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.js.map +1 -0
  75. package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.d.ts +89 -0
  76. package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.js +8 -0
  77. package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.js.map +1 -0
  78. package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.d.ts +43 -0
  79. package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.js +8 -0
  80. package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.js.map +1 -0
  81. package/dist/domain.operations/artifact/genLoopFeedback.js +1 -1
  82. package/dist/domain.operations/artifact/genLoopFeedback.js.map +1 -1
  83. package/dist/domain.operations/artifact/genStepGrabCallerFeedbackToArtifact.d.ts +1 -1
  84. package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.d.ts +13 -0
  85. package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.js +106 -0
  86. package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.js.map +1 -0
  87. package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.d.ts +18 -0
  88. package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.js +16 -0
  89. package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.js.map +1 -0
  90. package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.d.ts +30 -0
  91. package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.js +71 -0
  92. package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.js.map +1 -0
  93. package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.d.ts +20 -0
  94. package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.js +90 -0
  95. package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.js.map +1 -0
  96. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.d.ts +8 -0
  97. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.js +31 -0
  98. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.js.map +1 -0
  99. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.d.ts +3 -0
  100. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.js +10 -0
  101. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.js.map +1 -0
  102. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.d.ts +8 -0
  103. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.js +31 -0
  104. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.js.map +1 -0
  105. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.d.ts +8 -0
  106. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.js +32 -0
  107. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.js.map +1 -0
  108. package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.d.ts +6 -0
  109. package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.js +80 -0
  110. package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.js.map +1 -0
  111. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.d.ts +6 -0
  112. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.js +14 -0
  113. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.js.map +1 -0
  114. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.d.ts +8 -0
  115. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.js +52 -0
  116. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.js.map +1 -0
  117. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.d.ts +8 -0
  118. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.js +38 -0
  119. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.js.map +1 -0
  120. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.d.ts +33 -0
  121. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.js +100 -0
  122. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.js.map +1 -0
  123. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.d.ts +6 -0
  124. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.js +26 -0
  125. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.js.map +1 -0
  126. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.d.ts +41 -0
  127. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.js +107 -0
  128. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.js.map +1 -0
  129. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.d.ts +33 -0
  130. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.js +68 -0
  131. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.js.map +1 -0
  132. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.d.ts +41 -0
  133. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.js +97 -0
  134. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.js.map +1 -0
  135. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.d.ts +6 -0
  136. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.js +65 -0
  137. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.js.map +1 -0
  138. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.d.ts +37 -0
  139. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.js +96 -0
  140. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.js.map +1 -0
  141. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.d.ts +33 -0
  142. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.js +81 -0
  143. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.js.map +1 -0
  144. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.d.ts +33 -0
  145. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.js +113 -0
  146. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.js.map +1 -0
  147. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.d.ts +6 -0
  148. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.js +36 -0
  149. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.js.map +1 -0
  150. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.d.ts +36 -0
  151. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.js +101 -0
  152. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.js.map +1 -0
  153. package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.d.ts +14 -0
  154. package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.js +45 -0
  155. package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.js.map +1 -0
  156. package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.d.ts +19 -0
  157. package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.js +35 -0
  158. package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.js.map +1 -0
  159. package/dist/domain.operations/git/genGitHubFileUrl.d.ts +9 -0
  160. package/dist/domain.operations/git/genGitHubFileUrl.js +55 -0
  161. package/dist/domain.operations/git/genGitHubFileUrl.js.map +1 -0
  162. package/dist/domain.operations/git/getGitRemoteUrl.d.ts +7 -0
  163. package/dist/domain.operations/git/getGitRemoteUrl.js +40 -0
  164. package/dist/domain.operations/git/getGitRemoteUrl.js.map +1 -0
  165. package/dist/domain.operations/hooks/getInvokeHooks.js +1 -1
  166. package/dist/domain.operations/hooks/getInvokeHooks.js.map +1 -1
  167. package/dist/domain.operations/reflect/createDraftDirectory.d.ts +11 -0
  168. package/dist/domain.operations/reflect/createDraftDirectory.js +46 -0
  169. package/dist/domain.operations/reflect/createDraftDirectory.js.map +1 -0
  170. package/dist/domain.operations/reflect/enumFeedbackFiles.d.ts +7 -0
  171. package/dist/domain.operations/reflect/enumFeedbackFiles.js +69 -0
  172. package/dist/domain.operations/reflect/enumFeedbackFiles.js.map +1 -0
  173. package/dist/domain.operations/reflect/extractJsonFromResultText.d.ts +7 -0
  174. package/dist/domain.operations/reflect/extractJsonFromResultText.js +19 -0
  175. package/dist/domain.operations/reflect/extractJsonFromResultText.js.map +1 -0
  176. package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.d.ts +46 -0
  177. package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.js +120 -0
  178. package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.js.map +1 -0
  179. package/dist/domain.operations/reflect/metrics/computeMetricsExpected.d.ts +12 -0
  180. package/dist/domain.operations/reflect/metrics/computeMetricsExpected.js +28 -0
  181. package/dist/domain.operations/reflect/metrics/computeMetricsExpected.js.map +1 -0
  182. package/dist/domain.operations/reflect/metrics/computeMetricsRealized.d.ts +26 -0
  183. package/dist/domain.operations/reflect/metrics/computeMetricsRealized.js +66 -0
  184. package/dist/domain.operations/reflect/metrics/computeMetricsRealized.js.map +1 -0
  185. package/dist/domain.operations/reflect/metrics/writeLogArtifact.d.ts +17 -0
  186. package/dist/domain.operations/reflect/metrics/writeLogArtifact.js +93 -0
  187. package/dist/domain.operations/reflect/metrics/writeLogArtifact.js.map +1 -0
  188. package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.d.ts +8 -0
  189. package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.js +28 -0
  190. package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.js.map +1 -0
  191. package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.d.ts +14 -0
  192. package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.js +93 -0
  193. package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.js.map +1 -0
  194. package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.d.ts +18 -0
  195. package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.js +208 -0
  196. package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.js.map +1 -0
  197. package/dist/domain.operations/reflect/step2/executeManifestOperations.d.ts +17 -0
  198. package/dist/domain.operations/reflect/step2/executeManifestOperations.js +189 -0
  199. package/dist/domain.operations/reflect/step2/executeManifestOperations.js.map +1 -0
  200. package/dist/domain.operations/reflect/step2/parseManifestOperations.d.ts +8 -0
  201. package/dist/domain.operations/reflect/step2/parseManifestOperations.js +73 -0
  202. package/dist/domain.operations/reflect/step2/parseManifestOperations.js.map +1 -0
  203. package/dist/domain.operations/reflect/validateSourceDirectory.d.ts +9 -0
  204. package/dist/domain.operations/reflect/validateSourceDirectory.js +63 -0
  205. package/dist/domain.operations/reflect/validateSourceDirectory.js.map +1 -0
  206. package/dist/domain.operations/reflect/validateTargetDirectory.d.ts +10 -0
  207. package/dist/domain.operations/reflect/validateTargetDirectory.js +59 -0
  208. package/dist/domain.operations/reflect/validateTargetDirectory.js.map +1 -0
  209. package/dist/domain.operations/review/compileReviewPrompt.d.ts +22 -0
  210. package/dist/domain.operations/review/compileReviewPrompt.js +95 -0
  211. package/dist/domain.operations/review/compileReviewPrompt.js.map +1 -0
  212. package/dist/domain.operations/review/enumFilesFromDiffs.d.ts +8 -0
  213. package/dist/domain.operations/review/enumFilesFromDiffs.js +74 -0
  214. package/dist/domain.operations/review/enumFilesFromDiffs.js.map +1 -0
  215. package/dist/domain.operations/review/enumFilesFromGlob.d.ts +8 -0
  216. package/dist/domain.operations/review/enumFilesFromGlob.js +31 -0
  217. package/dist/domain.operations/review/enumFilesFromGlob.js.map +1 -0
  218. package/dist/domain.operations/review/estimateTokenCount.d.ts +9 -0
  219. package/dist/domain.operations/review/estimateTokenCount.js +20 -0
  220. package/dist/domain.operations/review/estimateTokenCount.js.map +1 -0
  221. package/dist/domain.operations/review/formatReviewOutput.d.ts +14 -0
  222. package/dist/domain.operations/review/formatReviewOutput.js +42 -0
  223. package/dist/domain.operations/review/formatReviewOutput.js.map +1 -0
  224. package/dist/domain.operations/review/genTokenBreakdownMarkdown.d.ts +19 -0
  225. package/dist/domain.operations/review/genTokenBreakdownMarkdown.js +110 -0
  226. package/dist/domain.operations/review/genTokenBreakdownMarkdown.js.map +1 -0
  227. package/dist/domain.operations/review/genTokenBreakdownReport.d.ts +24 -0
  228. package/dist/domain.operations/review/genTokenBreakdownReport.js +64 -0
  229. package/dist/domain.operations/review/genTokenBreakdownReport.js.map +1 -0
  230. package/dist/domain.operations/review/invokeClaudeCode.d.ts +22 -0
  231. package/dist/domain.operations/review/invokeClaudeCode.js +92 -0
  232. package/dist/domain.operations/review/invokeClaudeCode.js.map +1 -0
  233. package/dist/domain.operations/review/writeInputArtifacts.d.ts +27 -0
  234. package/dist/domain.operations/review/writeInputArtifacts.js +50 -0
  235. package/dist/domain.operations/review/writeInputArtifacts.js.map +1 -0
  236. package/dist/domain.operations/review/writeOutputArtifacts.d.ts +12 -0
  237. package/dist/domain.operations/review/writeOutputArtifacts.js +46 -0
  238. package/dist/domain.operations/review/writeOutputArtifacts.js.map +1 -0
  239. package/dist/index.js.map +1 -1
  240. package/dist/roles/architect/getArchitectRole.d.ts +6 -0
  241. package/dist/roles/architect/getArchitectRole.js +31 -0
  242. package/dist/roles/architect/getArchitectRole.js.map +1 -0
  243. package/dist/roles/brain/getBrainRole.d.ts +6 -0
  244. package/dist/roles/brain/getBrainRole.js +28 -0
  245. package/dist/roles/brain/getBrainRole.js.map +1 -0
  246. package/dist/roles/brain/skills/act/skillAct.d.ts +5 -0
  247. package/dist/roles/brain/skills/act/skillAct.js +147 -0
  248. package/dist/roles/brain/skills/act/skillAct.js.map +1 -0
  249. package/dist/roles/brain/skills/act/skillAct.ts +186 -0
  250. package/dist/roles/brain/skills/act/stepAct.d.ts +27 -0
  251. package/dist/roles/brain/skills/act/stepAct.js +95 -0
  252. package/dist/roles/brain/skills/act/stepAct.js.map +1 -0
  253. package/dist/roles/brain/skills/act/stepAct.ts +123 -0
  254. package/dist/roles/getRoleRegistry.js +5 -3
  255. package/dist/roles/getRoleRegistry.js.map +1 -1
  256. package/dist/roles/getRoleRegistry.readme.js +6 -0
  257. package/dist/roles/getRoleRegistry.readme.js.map +1 -1
  258. package/dist/roles/reviewer/briefs/on.rules/rules101.[article].md +41 -0
  259. package/dist/roles/reviewer/briefs/on.rules/rules101.citations.[article].md +88 -0
  260. package/dist/roles/reviewer/briefs/on.rules/rules101.collocated.[article].md +97 -0
  261. package/dist/roles/reviewer/briefs/on.rules/rules101.content.[article].md +228 -0
  262. package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].forbid.failhide.md +87 -0
  263. package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].forbid.gerunds.md +85 -0
  264. package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].require.failfast.md +73 -0
  265. package/dist/roles/reviewer/briefs/on.rules/rules101.structure.[article].md +70 -0
  266. package/dist/roles/reviewer/briefs/review.tactics.md +60 -0
  267. package/dist/roles/reviewer/getReviewerRole.d.ts +6 -0
  268. package/dist/roles/reviewer/getReviewerRole.js +80 -0
  269. package/dist/roles/reviewer/getReviewerRole.js.map +1 -0
  270. package/dist/roles/reviewer/skills/reflect/reflect.d.ts +30 -0
  271. package/dist/roles/reviewer/skills/reflect/reflect.js +305 -0
  272. package/dist/roles/reviewer/skills/reflect/reflect.js.map +1 -0
  273. package/dist/roles/reviewer/skills/reflect/reflect.sh +38 -0
  274. package/dist/roles/reviewer/skills/reflect/reflect.ts +356 -0
  275. package/dist/roles/reviewer/skills/review/review.d.ts +57 -0
  276. package/dist/roles/reviewer/skills/review/review.js +445 -0
  277. package/dist/roles/reviewer/skills/review/review.js.map +1 -0
  278. package/dist/roles/reviewer/skills/review/review.sh +21 -0
  279. package/dist/roles/reviewer/skills/review/review.ts +575 -0
  280. package/dist/roles/thinker/getThinkerBrief.d.ts +1 -1
  281. package/dist/roles/thinker/getThinkerRole.js +9 -9
  282. package/dist/roles/thinker/getThinkerRole.js.map +1 -1
  283. package/dist/roles/thinker/skills/brief.articulate/.demo/article.vision.v2025_08_19..i1.via_chatgpt.md +47 -0
  284. package/dist/roles/thinker/skills/brief.articulate/.demo/article.vision.v2025_08_19.i2.via_rhachet.md +60 -0
  285. package/dist/roles/thinker/skills/brief.articulate/.demo/diverge.v2025_08_17.i1.md +62 -0
  286. package/dist/roles/thinker/skills/brief.articulate/.demo/diverge.v2025_08_17.i1.with_feedback.md +89 -0
  287. package/dist/roles/thinker/skills/brief.articulate/.demo/diverge.v2025_08_17.i2.md +47 -0
  288. package/dist/roles/thinker/skills/brief.articulate/.demo/joke.v2025_08_15.i1.md +44 -0
  289. package/dist/roles/thinker/skills/brief.articulate/.demo/joke.v2025_08_15.i2.md +63 -0
  290. package/dist/roles/thinker/skills/brief.articulate/.demo/joke.v2025_08_15.i3.md +51 -0
  291. package/dist/roles/thinker/skills/brief.articulate/.demo/user-journey.v2025_08_17.i1.md +62 -0
  292. package/dist/roles/thinker/skills/brief.articulate/.demo/user-journey.v2025_08_17.i2.md +49 -0
  293. package/dist/roles/thinker/skills/brief.articulate/.readme.md +0 -0
  294. package/dist/roles/thinker/skills/brief.articulate/stepArticulate.skill.js +1 -1
  295. package/dist/roles/thinker/skills/brief.articulate/stepArticulate.skill.js.map +1 -1
  296. package/dist/roles/thinker/skills/brief.articulate/stepArticulate.skill.ts +168 -0
  297. package/dist/roles/thinker/skills/brief.articulate/stepArticulate.ts +157 -0
  298. package/dist/roles/thinker/skills/brief.catalogize/.demo/joke.types.v2025_08_28.i1.md +93 -0
  299. package/dist/roles/thinker/skills/brief.catalogize/.demo/joke.types.v2025_08_28.i2.md +84 -0
  300. package/dist/roles/thinker/skills/brief.catalogize/.demo/joke.types.v2025_09_28.i1.no_focus_context.md +8 -0
  301. package/dist/roles/thinker/skills/brief.catalogize/.demo/joke.types.v2025_09_28.i2.md +54 -0
  302. package/dist/roles/thinker/skills/brief.catalogize/.demo/persona.usecases.v2025_08_28.i1.md +62 -0
  303. package/dist/roles/thinker/skills/brief.catalogize/.demo/persona.usecases.v2025_08_28.i2.md +64 -0
  304. package/dist/roles/thinker/skills/brief.catalogize/.readme.md +5 -0
  305. package/dist/roles/thinker/skills/brief.catalogize/stepCatalogize.skill.js +1 -1
  306. package/dist/roles/thinker/skills/brief.catalogize/stepCatalogize.skill.js.map +1 -1
  307. package/dist/roles/thinker/skills/brief.catalogize/stepCatalogize.skill.ts +173 -0
  308. package/dist/roles/thinker/skills/brief.catalogize/stepCatalogize.ts +132 -0
  309. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.input.example.i4.md +3 -0
  310. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.input.example.i5.md +3 -0
  311. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.input.example.i6.md +3 -0
  312. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.input.example.md +3 -0
  313. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i1.md +52 -0
  314. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i2.md +51 -0
  315. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i3.md +47 -0
  316. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i4.md +62 -0
  317. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i5.md +47 -0
  318. package/dist/roles/thinker/skills/brief.demonstrate/.demo/user.journey.roadtrip.v2025_08_27.i6.md +53 -0
  319. package/dist/roles/thinker/skills/brief.demonstrate/.readme +3 -0
  320. package/dist/roles/thinker/skills/brief.demonstrate/stepDemonstrate.skill.js +1 -1
  321. package/dist/roles/thinker/skills/brief.demonstrate/stepDemonstrate.skill.js.map +1 -1
  322. package/dist/roles/thinker/skills/brief.demonstrate/stepDemonstrate.skill.ts +190 -0
  323. package/dist/roles/thinker/skills/brief.demonstrate/stepDemonstrate.ts +164 -0
  324. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input1.cluster.v2025_08_17.i1.md +72 -0
  325. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input1.cluster.v2025_08_17.i2.md +53 -0
  326. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input1.cluster.v2025_08_17.i3.which_objectives.md +58 -0
  327. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input1.cluster.v2025_08_17.i5.which_personas.md +64 -0
  328. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input2.cluster.v2025_08_17.i1.md +67 -0
  329. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input2.cluster.v2025_08_17.i2.md +49 -0
  330. package/dist/roles/thinker/skills/khue.cluster/.demo/user.journeys.input2.cluster.v2025_08_17.i3.md +59 -0
  331. package/dist/roles/thinker/skills/khue.cluster/.readme.md +0 -0
  332. package/dist/roles/thinker/skills/khue.cluster/stepCluster.skill.js +1 -1
  333. package/dist/roles/thinker/skills/khue.cluster/stepCluster.skill.js.map +1 -1
  334. package/dist/roles/thinker/skills/khue.cluster/stepCluster.skill.ts +174 -0
  335. package/dist/roles/thinker/skills/khue.cluster/stepCluster.ts +150 -0
  336. package/dist/roles/thinker/skills/khue.decompose/.readme.md +9 -0
  337. package/dist/roles/thinker/skills/khue.diverge/.demo/joke.examples.v2025_08_17.i2.md +23 -0
  338. package/dist/roles/thinker/skills/khue.diverge/.demo/joke.examples.v2025_08_17.i3.md +23 -0
  339. package/dist/roles/thinker/skills/khue.diverge/.demo/joke.varieties.v2025_08_17.i1.md +23 -0
  340. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i1.md +9 -0
  341. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i2.md +9 -0
  342. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i3.md +23 -0
  343. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i4.folksy.md +9 -0
  344. package/dist/roles/thinker/skills/khue.diverge/.demo/userjourney.examples.v2025_08_17.i5.folksy.md +23 -0
  345. package/dist/roles/thinker/skills/khue.diverge/.readme.md +0 -0
  346. package/dist/roles/thinker/skills/khue.diverge/stepDiverge.skill.js +1 -1
  347. package/dist/roles/thinker/skills/khue.diverge/stepDiverge.skill.js.map +1 -1
  348. package/dist/roles/thinker/skills/khue.diverge/stepDiverge.skill.ts +149 -0
  349. package/dist/roles/thinker/skills/khue.diverge/stepDiverge.ts +151 -0
  350. package/dist/roles/thinker/skills/khue.encompose/.readme.md +7 -0
  351. package/dist/roles/thinker/skills/khue.instantiate/.readme.md +14 -0
  352. package/dist/roles/thinker/skills/khue.instantiate/stepInstantiate.skill.js +1 -1
  353. package/dist/roles/thinker/skills/khue.instantiate/stepInstantiate.skill.js.map +1 -1
  354. package/dist/roles/thinker/skills/khue.instantiate/stepInstantiate.skill.ts +190 -0
  355. package/dist/roles/thinker/skills/khue.instantiate/stepInstantiate.ts +132 -0
  356. package/dist/roles/thinker/skills/khue.triage/.demo/laughs.v2025_08_18.i1.md +29 -0
  357. package/dist/roles/thinker/skills/khue.triage/.demo/user.journeys.v2025_08_17.i1.md +86 -0
  358. package/dist/roles/thinker/skills/khue.triage/.demo/user.journeys.v2025_08_17.i2.md +68 -0
  359. package/dist/roles/thinker/skills/khue.triage/.readme.md +0 -0
  360. package/dist/roles/thinker/skills/khue.triage/stepTriage.skill.js +1 -1
  361. package/dist/roles/thinker/skills/khue.triage/stepTriage.skill.js.map +1 -1
  362. package/dist/roles/thinker/skills/khue.triage/stepTriage.skill.ts +174 -0
  363. package/dist/roles/thinker/skills/khue.triage/stepTriage.ts +153 -0
  364. package/package.json +11 -8
  365. package/readme.md +55 -0
@@ -0,0 +1,445 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.stepReview = void 0;
27
+ const fs = __importStar(require("fs/promises"));
28
+ const helpful_errors_1 = require("helpful-errors");
29
+ const path = __importStar(require("path"));
30
+ const compileReviewPrompt_1 = require("../../../../domain.operations/review/compileReviewPrompt");
31
+ const enumFilesFromDiffs_1 = require("../../../../domain.operations/review/enumFilesFromDiffs");
32
+ const enumFilesFromGlob_1 = require("../../../../domain.operations/review/enumFilesFromGlob");
33
+ const formatReviewOutput_1 = require("../../../../domain.operations/review/formatReviewOutput");
34
+ const genTokenBreakdownMarkdown_1 = require("../../../../domain.operations/review/genTokenBreakdownMarkdown");
35
+ const genTokenBreakdownReport_1 = require("../../../../domain.operations/review/genTokenBreakdownReport");
36
+ const invokeClaudeCode_1 = require("../../../../domain.operations/review/invokeClaudeCode");
37
+ const writeInputArtifacts_1 = require("../../../../domain.operations/review/writeInputArtifacts");
38
+ const writeOutputArtifacts_1 = require("../../../../domain.operations/review/writeOutputArtifacts");
39
+ /**
40
+ * .what = generates ISO timestamp for log directory naming
41
+ * .why = enables unique, sortable log directories
42
+ */
43
+ const genLogTimestamp = () => {
44
+ return new Date().toISOString().replace(/[:.]/g, '-');
45
+ };
46
+ /**
47
+ * .what = simple spinner for CLI feedback
48
+ * .why = shows progress during long-running operations
49
+ */
50
+ const withSpinner = async (input) => {
51
+ const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
52
+ const startTime = Date.now();
53
+ let i = 0;
54
+ // print title once
55
+ console.log(input.message);
56
+ // render only the elapsed time branch line
57
+ const render = (frame) => {
58
+ const elapsed = Math.floor((Date.now() - startTime) / 1000);
59
+ process.stdout.write(`\r └─ elapsed: ${elapsed}s ${frame} `);
60
+ };
61
+ render(frames[0]);
62
+ const interval = setInterval(() => {
63
+ i = (i + 1) % frames.length;
64
+ render(frames[i]);
65
+ }, 100);
66
+ try {
67
+ const result = await input.operation();
68
+ clearInterval(interval);
69
+ const elapsed = Math.floor((Date.now() - startTime) / 1000);
70
+ process.stdout.write(`\r └─ elapsed: ${elapsed}s ✓\n\n`);
71
+ return result;
72
+ }
73
+ catch (error) {
74
+ clearInterval(interval);
75
+ const elapsed = Math.floor((Date.now() - startTime) / 1000);
76
+ process.stdout.write(`\r └─ elapsed: ${elapsed}s ✗\n`);
77
+ throw error;
78
+ }
79
+ };
80
+ /**
81
+ * .what = executes a code review against specified rules and targets
82
+ * .why = core orchestration flow for reviewer role
83
+ */
84
+ const stepReview = async (input) => {
85
+ const cwd = input.cwd ?? process.cwd();
86
+ // validate that at least one of rules, diffs, or paths is specified
87
+ const hasRules = input.rules && (Array.isArray(input.rules) ? input.rules.length > 0 : true);
88
+ const hasDiffs = !!input.diffs;
89
+ const hasPaths = input.paths && (Array.isArray(input.paths) ? input.paths.length > 0 : true);
90
+ if (!hasRules && !hasDiffs && !hasPaths)
91
+ throw new helpful_errors_1.BadRequestError('must specify at least one of --rules, --diffs, or --paths');
92
+ // validate output parent directory exists
93
+ const outputParent = path.dirname(input.output);
94
+ const outputParentAbsolute = path.isAbsolute(outputParent)
95
+ ? outputParent
96
+ : path.join(cwd, outputParent);
97
+ try {
98
+ await fs.access(outputParentAbsolute);
99
+ }
100
+ catch {
101
+ throw new helpful_errors_1.BadRequestError('output path parent directory does not exist', {
102
+ outputParent: outputParentAbsolute,
103
+ });
104
+ }
105
+ // enumerate rule files
106
+ const ruleGlobs = Array.isArray(input.rules)
107
+ ? input.rules
108
+ : [input.rules].filter(Boolean);
109
+ const ruleFiles = await (0, enumFilesFromGlob_1.enumFilesFromGlob)({ glob: ruleGlobs, cwd });
110
+ if (ruleGlobs.length > 0 && ruleFiles.length === 0)
111
+ throw new helpful_errors_1.BadRequestError('--rules glob was ineffective; matched zero files', {
112
+ rules: input.rules,
113
+ });
114
+ // enumerate target files from diffs
115
+ const targetFilesFromDiffs = input.diffs
116
+ ? await (0, enumFilesFromDiffs_1.enumFilesFromDiffs)({
117
+ range: input.diffs,
118
+ cwd,
119
+ })
120
+ : [];
121
+ // enumerate target files from paths
122
+ const pathGlobs = input.paths
123
+ ? Array.isArray(input.paths)
124
+ ? input.paths
125
+ : [input.paths]
126
+ : [];
127
+ const positivePathGlobs = pathGlobs.filter((p) => !p.startsWith('!'));
128
+ const negativePathGlobs = pathGlobs
129
+ .filter((p) => p.startsWith('!'))
130
+ .map((p) => p.slice(1));
131
+ const targetFilesFromPaths = await (0, enumFilesFromGlob_1.enumFilesFromGlob)({
132
+ glob: positivePathGlobs,
133
+ cwd,
134
+ });
135
+ // union target files from diffs and paths, then apply global exclusions
136
+ const targetFilesUnion = [
137
+ ...new Set([...targetFilesFromDiffs, ...targetFilesFromPaths]),
138
+ ];
139
+ const targetFiles = targetFilesUnion
140
+ .filter((file) => {
141
+ for (const pattern of negativePathGlobs) {
142
+ if (file === pattern || file.endsWith(`/${pattern}`))
143
+ return false;
144
+ if (pattern.includes('*')) {
145
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*').replace(/\?/g, '.') + '$');
146
+ if (regex.test(file))
147
+ return false;
148
+ }
149
+ }
150
+ return true;
151
+ })
152
+ .sort();
153
+ // validate combined scope is non-empty
154
+ if (targetFiles.length === 0)
155
+ throw new helpful_errors_1.BadRequestError('combined scope resolves to zero files', {
156
+ diffs: input.diffs,
157
+ paths: input.paths,
158
+ diffsMatched: targetFilesFromDiffs.length,
159
+ pathsMatched: targetFilesFromPaths.length,
160
+ });
161
+ // create log directory early for debugging
162
+ const logDir = path.join(cwd, '.log', 'bhrain', 'review', genLogTimestamp());
163
+ await fs.mkdir(logDir, { recursive: true });
164
+ // write scope immediately for debugging
165
+ await fs.writeFile(path.join(logDir, 'input.scope.json'), JSON.stringify({ ruleFiles, targetFiles }, null, 2), 'utf-8');
166
+ // read file contents for prompt compilation
167
+ const readFileContent = async (file) => {
168
+ try {
169
+ return await fs.readFile(path.join(cwd, file), 'utf-8');
170
+ }
171
+ catch (error) {
172
+ if (!(error instanceof Error))
173
+ throw error;
174
+ throw new helpful_errors_1.BadRequestError(`failed to read file: ${file}`, {
175
+ file,
176
+ fullPath: path.join(cwd, file),
177
+ error: error.message,
178
+ });
179
+ }
180
+ };
181
+ const ruleContents = await Promise.all(ruleFiles.map(async (file) => ({
182
+ path: file,
183
+ content: await readFileContent(file),
184
+ })));
185
+ const targetContents = await Promise.all(targetFiles.map(async (file) => ({
186
+ path: file,
187
+ content: await readFileContent(file),
188
+ })));
189
+ // generate and write token breakdown reports
190
+ const allContents = [...ruleContents, ...targetContents];
191
+ const allBreakdown = (0, genTokenBreakdownReport_1.genTokenBreakdownReport)({ files: allContents });
192
+ const rulesBreakdown = (0, genTokenBreakdownReport_1.genTokenBreakdownReport)({ files: ruleContents });
193
+ const targetsBreakdown = (0, genTokenBreakdownReport_1.genTokenBreakdownReport)({ files: targetContents });
194
+ await fs.writeFile(path.join(logDir, 'tokens.expected.json'), JSON.stringify({
195
+ all: allBreakdown,
196
+ rules: rulesBreakdown,
197
+ targets: targetsBreakdown,
198
+ }, null, 2), 'utf-8');
199
+ await fs.writeFile(path.join(logDir, 'tokens.expected.md'), (0, genTokenBreakdownMarkdown_1.genTokenBreakdownMarkdown)({
200
+ all: allBreakdown,
201
+ rules: rulesBreakdown,
202
+ targets: targetsBreakdown,
203
+ }), 'utf-8');
204
+ // compile review prompt
205
+ const promptResult = (0, compileReviewPrompt_1.compileReviewPrompt)({
206
+ rules: ruleContents,
207
+ targets: targetContents,
208
+ mode: input.mode,
209
+ });
210
+ // write metrics.expected immediately after files are read
211
+ await fs.writeFile(path.join(logDir, 'metrics.expected.json'), JSON.stringify({
212
+ files: {
213
+ rulesCount: ruleFiles.length,
214
+ targetsCount: targetFiles.length,
215
+ },
216
+ tokens: {
217
+ estimate: promptResult.tokenEstimate,
218
+ contextWindowPercent: promptResult.contextWindowPercent,
219
+ },
220
+ cost: {
221
+ estimate: promptResult.costEstimate,
222
+ },
223
+ }, null, 2), 'utf-8');
224
+ // write input artifacts
225
+ await (0, writeInputArtifacts_1.writeInputArtifacts)({
226
+ logDir,
227
+ args: {
228
+ rules: input.rules,
229
+ diffs: input.diffs,
230
+ paths: input.paths,
231
+ output: input.output,
232
+ mode: input.mode,
233
+ },
234
+ scope: {
235
+ ruleFiles,
236
+ targetFiles,
237
+ },
238
+ metrics: {
239
+ tokenEstimate: promptResult.tokenEstimate,
240
+ contextWindowPercent: promptResult.contextWindowPercent,
241
+ costEstimate: promptResult.costEstimate,
242
+ },
243
+ prompt: promptResult.prompt,
244
+ });
245
+ // emit metrics.expected before invocation
246
+ const logDirRelative = path.relative(cwd, logDir);
247
+ console.log(`
248
+ 🔭 metrics.expected
249
+ ├─ files
250
+ │ ├─ rules: ${ruleFiles.length}
251
+ │ └─ targets: ${targetFiles.length}
252
+ ├─ tokens
253
+ │ ├─ estimate: ${promptResult.tokenEstimate}
254
+ │ └─ context: ${promptResult.contextWindowPercent.toFixed(1)}%
255
+ └─ cost
256
+ └─ estimate: $${promptResult.costEstimate.toFixed(4)}
257
+
258
+ 🪵 logs
259
+ ├─ scope: ${logDirRelative}/input.scope.json
260
+ ├─ metrics: ${logDirRelative}/metrics.expected.json
261
+ └─ tokens: ${logDirRelative}/tokens.expected.md
262
+ `.trim());
263
+ // invoke claude-code with spinner
264
+ console.log('');
265
+ const brainResult = await withSpinner({
266
+ message: "🐢 let's review!",
267
+ operation: () => (0, invokeClaudeCode_1.invokeClaudeCode)({ prompt: promptResult.prompt, cwd }),
268
+ });
269
+ // calculate realized costs per token type
270
+ const realizedCosts = (() => {
271
+ const input = (brainResult.usage.inputTokens / 1000000) * 3;
272
+ const cacheWrite = (brainResult.usage.inputTokensCacheCreation / 1000000) * 3.75;
273
+ const cacheRead = (brainResult.usage.inputTokensCacheRead / 1000000) * 0.3;
274
+ const output = (brainResult.usage.outputTokens / 1000000) * 15;
275
+ const total = Math.round((input + cacheWrite + cacheRead + output) * 10000) / 10000;
276
+ return { input, cacheWrite, cacheRead, output, total };
277
+ })();
278
+ // write metrics.realized after invocation
279
+ await fs.writeFile(path.join(logDir, 'metrics.realized.json'), JSON.stringify({
280
+ tokens: {
281
+ input: brainResult.usage.inputTokens,
282
+ inputCacheCreation: brainResult.usage.inputTokensCacheCreation,
283
+ inputCacheRead: brainResult.usage.inputTokensCacheRead,
284
+ output: brainResult.usage.outputTokens,
285
+ },
286
+ cost: {
287
+ input: realizedCosts.input,
288
+ cacheWrite: realizedCosts.cacheWrite,
289
+ cacheRead: realizedCosts.cacheRead,
290
+ output: realizedCosts.output,
291
+ total: realizedCosts.total,
292
+ },
293
+ }, null, 2), 'utf-8');
294
+ // parse issues from review text
295
+ const reviewIssues = (() => {
296
+ // extract JSON from the review text (may be wrapped in markdown code blocks)
297
+ const jsonMatch = brainResult.review.match(/```(?:json)?\s*([\s\S]*?)```/);
298
+ const jsonText = jsonMatch?.[1]?.trim() ?? brainResult.review.trim();
299
+ try {
300
+ return JSON.parse(jsonText);
301
+ }
302
+ catch (error) {
303
+ throw new helpful_errors_1.BadRequestError('failed to parse review issues from claude response', {
304
+ review: brainResult.review,
305
+ jsonText,
306
+ error: error instanceof Error ? error.message : String(error),
307
+ });
308
+ }
309
+ })();
310
+ // format review output
311
+ const formattedReview = (0, formatReviewOutput_1.formatReviewOutput)({
312
+ response: reviewIssues,
313
+ });
314
+ // write output artifacts
315
+ await (0, writeOutputArtifacts_1.writeOutputArtifacts)({
316
+ logDir,
317
+ response: brainResult.response,
318
+ review: formattedReview,
319
+ });
320
+ // write final review to output path
321
+ const outputAbsolute = path.isAbsolute(input.output)
322
+ ? input.output
323
+ : path.join(cwd, input.output);
324
+ await fs.writeFile(outputAbsolute, formattedReview, 'utf-8');
325
+ // emit metrics.realized after invocation
326
+ console.log(`
327
+ ✨ metrics.realized
328
+ ├─ tokens
329
+ │ ├─ input: ${brainResult.usage.inputTokens}
330
+ │ ├─ cache.write: ${brainResult.usage.inputTokensCacheCreation}
331
+ │ ├─ cache.read: ${brainResult.usage.inputTokensCacheRead}
332
+ │ └─ output: ${brainResult.usage.outputTokens}
333
+ └─ cost
334
+ ├─ input: $${realizedCosts.input.toFixed(4)}
335
+ ├─ cache.write: $${realizedCosts.cacheWrite.toFixed(4)}
336
+ ├─ cache.read: $${realizedCosts.cacheRead.toFixed(4)}
337
+ ├─ output: $${realizedCosts.output.toFixed(4)}
338
+ └─ total: $${realizedCosts.total.toFixed(4)}
339
+
340
+ 🌊 output
341
+ ├─ logs: ${path.relative(cwd, logDir)}
342
+ └─ review: ${path.relative(cwd, outputAbsolute).startsWith('..') ? outputAbsolute : path.relative(cwd, outputAbsolute)}
343
+ `.trim());
344
+ return {
345
+ review: {
346
+ formatted: formattedReview,
347
+ },
348
+ log: {
349
+ dir: logDir,
350
+ },
351
+ output: {
352
+ path: outputAbsolute,
353
+ },
354
+ metrics: {
355
+ files: {
356
+ rulesCount: ruleFiles.length,
357
+ targetsCount: targetFiles.length,
358
+ },
359
+ expected: {
360
+ tokens: {
361
+ estimate: promptResult.tokenEstimate,
362
+ contextWindowPercent: promptResult.contextWindowPercent,
363
+ },
364
+ cost: {
365
+ estimate: promptResult.costEstimate,
366
+ },
367
+ },
368
+ realized: {
369
+ tokens: {
370
+ input: brainResult.usage.inputTokens,
371
+ inputCacheCreation: brainResult.usage.inputTokensCacheCreation,
372
+ inputCacheRead: brainResult.usage.inputTokensCacheRead,
373
+ output: brainResult.usage.outputTokens,
374
+ },
375
+ cost: {
376
+ input: realizedCosts.input,
377
+ cacheWrite: realizedCosts.cacheWrite,
378
+ cacheRead: realizedCosts.cacheRead,
379
+ output: realizedCosts.output,
380
+ total: realizedCosts.total,
381
+ },
382
+ },
383
+ },
384
+ };
385
+ };
386
+ exports.stepReview = stepReview;
387
+ /**
388
+ * .what = CLI entrypoint when run directly
389
+ * .why = enables ./review.sh to invoke this module
390
+ */
391
+ if (require.main === module) {
392
+ // parse command line arguments
393
+ const args = process.argv.slice(2);
394
+ const parsed = {};
395
+ for (let i = 0; i < args.length; i += 2) {
396
+ const key = args[i]?.replace(/^--/, '');
397
+ const value = args[i + 1];
398
+ if (key && value)
399
+ parsed[key] = value;
400
+ }
401
+ // default output path if not provided
402
+ const output = parsed.output ??
403
+ path.join(process.cwd(), '.review', 'bhrain', `v${genLogTimestamp()}`, '[feedback].[given].by_robot.md');
404
+ // validate mode is provided
405
+ if (!parsed.mode || (parsed.mode !== 'soft' && parsed.mode !== 'hard')) {
406
+ console.error('⛈️ error: --mode must be "soft" or "hard"');
407
+ process.exit(1);
408
+ }
409
+ const mode = parsed.mode;
410
+ // default rules to .agent/**/briefs/**/rule.*.md
411
+ const rules = parsed.rules
412
+ ? parsed.rules.split(',').map((r) => r.trim())
413
+ : ['.agent/**/briefs/**/rule.*.md'];
414
+ // default diffs to uptil-main
415
+ const diffs = parsed.diffs ??
416
+ 'uptil-main';
417
+ // parse paths if provided
418
+ const paths = parsed.paths
419
+ ? parsed.paths.split(',').map((p) => p.trim())
420
+ : undefined;
421
+ // execute review
422
+ void (async () => {
423
+ try {
424
+ // ensure output directory exists
425
+ await fs.mkdir(path.dirname(output), { recursive: true });
426
+ // run the review
427
+ await (0, exports.stepReview)({
428
+ rules,
429
+ diffs,
430
+ paths,
431
+ output,
432
+ mode,
433
+ });
434
+ }
435
+ catch (error) {
436
+ if (error instanceof helpful_errors_1.BadRequestError) {
437
+ console.error(`\n⛈️ error: ${error.message}`);
438
+ process.exit(1);
439
+ }
440
+ console.error('⛈️ unexpected error:', error);
441
+ process.exit(1);
442
+ }
443
+ })();
444
+ }
445
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../../../src/roles/reviewer/skills/review/review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = shell entrypoint for code review skill
4
+ #
5
+ # .why = enables direct invocation from CLI, CI/CD, git hooks
6
+ #
7
+ # usage:
8
+ # ./review.sh --rules "rules/*.md" --paths "src/*.ts" --output "review.md" --mode hard
9
+ #
10
+ # options:
11
+ # --rules glob pattern(s) for rule files (comma-separated)
12
+ # --diffs diff range: uptil-main, uptil-commit, uptil-staged
13
+ # --paths glob pattern(s) for target files (comma-separated)
14
+ # --output output file path for the review
15
+ # --mode review mode: soft (paths only) or hard (full content)
16
+ ######################################################################
17
+ set -euo pipefail
18
+
19
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
20
+
21
+ exec npx tsx "$SCRIPT_DIR/review.ts" "$@"