rhachet-roles-bhrain 0.3.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 (240) hide show
  1. package/dist/access/sdk/sdkOpenAi.d.ts +25 -0
  2. package/dist/access/sdk/sdkOpenAi.js +122 -0
  3. package/dist/access/sdk/sdkOpenAi.js.map +1 -1
  4. package/dist/access/sdks/anthropic/sdkAnthropic.d.ts +31 -0
  5. package/dist/access/sdks/anthropic/sdkAnthropic.js +151 -0
  6. package/dist/access/sdks/anthropic/sdkAnthropic.js.map +1 -0
  7. package/dist/access/sdks/qwen/sdkQwen.d.ts +31 -0
  8. package/dist/access/sdks/qwen/sdkQwen.js +134 -0
  9. package/dist/access/sdks/qwen/sdkQwen.js.map +1 -0
  10. package/dist/domain.objects/BrainArch1/BrainArch1Actor.d.ts +67 -0
  11. package/dist/domain.objects/BrainArch1/BrainArch1Actor.js +12 -0
  12. package/dist/domain.objects/BrainArch1/BrainArch1Actor.js.map +1 -0
  13. package/dist/domain.objects/BrainArch1/BrainArch1Atom.d.ts +40 -0
  14. package/dist/domain.objects/BrainArch1/BrainArch1Atom.js +3 -0
  15. package/dist/domain.objects/BrainArch1/BrainArch1Atom.js.map +1 -0
  16. package/dist/domain.objects/BrainArch1/BrainArch1Context.d.ts +30 -0
  17. package/dist/domain.objects/BrainArch1/BrainArch1Context.js +3 -0
  18. package/dist/domain.objects/BrainArch1/BrainArch1Context.js.map +1 -0
  19. package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.d.ts +34 -0
  20. package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.js +8 -0
  21. package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.js.map +1 -0
  22. package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.d.ts +23 -0
  23. package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.js +9 -0
  24. package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.js.map +1 -0
  25. package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.d.ts +49 -0
  26. package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.js +8 -0
  27. package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.js.map +1 -0
  28. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.d.ts +31 -0
  29. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.js +9 -0
  30. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.js.map +1 -0
  31. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.d.ts +27 -0
  32. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.js +8 -0
  33. package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.js.map +1 -0
  34. package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.d.ts +45 -0
  35. package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.js +3 -0
  36. package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.js.map +1 -0
  37. package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.d.ts +29 -0
  38. package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.js +8 -0
  39. package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.js.map +1 -0
  40. package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.d.ts +22 -0
  41. package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.js +8 -0
  42. package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.js.map +1 -0
  43. package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.d.ts +30 -0
  44. package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.js +3 -0
  45. package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.js.map +1 -0
  46. package/dist/domain.objects/BrainArch1/BrainArch1Session.d.ts +47 -0
  47. package/dist/domain.objects/BrainArch1/BrainArch1Session.js +17 -0
  48. package/dist/domain.objects/BrainArch1/BrainArch1Session.js.map +1 -0
  49. package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.d.ts +34 -0
  50. package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.js +12 -0
  51. package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.js.map +1 -0
  52. package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.d.ts +21 -0
  53. package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.js +8 -0
  54. package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.js.map +1 -0
  55. package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.d.ts +54 -0
  56. package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.js +20 -0
  57. package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.js.map +1 -0
  58. package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.d.ts +36 -0
  59. package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.js +9 -0
  60. package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.js.map +1 -0
  61. package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.d.ts +25 -0
  62. package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.js +8 -0
  63. package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.js.map +1 -0
  64. package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.d.ts +31 -0
  65. package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.js +3 -0
  66. package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.js.map +1 -0
  67. package/dist/domain.objects/Reviewer/ReviewerReflectManifest.d.ts +44 -0
  68. package/dist/domain.objects/Reviewer/ReviewerReflectManifest.js +8 -0
  69. package/dist/domain.objects/Reviewer/ReviewerReflectManifest.js.map +1 -0
  70. package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.d.ts +30 -0
  71. package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.js +35 -0
  72. package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.js.map +1 -0
  73. package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.d.ts +89 -0
  74. package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.js +8 -0
  75. package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.js.map +1 -0
  76. package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.d.ts +43 -0
  77. package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.js +8 -0
  78. package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.js.map +1 -0
  79. package/dist/domain.operations/artifact/genLoopFeedback.js +1 -1
  80. package/dist/domain.operations/artifact/genLoopFeedback.js.map +1 -1
  81. package/dist/domain.operations/artifact/genStepGrabCallerFeedbackToArtifact.d.ts +1 -1
  82. package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.d.ts +13 -0
  83. package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.js +106 -0
  84. package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.js.map +1 -0
  85. package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.d.ts +18 -0
  86. package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.js +16 -0
  87. package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.js.map +1 -0
  88. package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.d.ts +30 -0
  89. package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.js +71 -0
  90. package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.js.map +1 -0
  91. package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.d.ts +20 -0
  92. package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.js +90 -0
  93. package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.js.map +1 -0
  94. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.d.ts +8 -0
  95. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.js +31 -0
  96. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.js.map +1 -0
  97. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.d.ts +3 -0
  98. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.js +10 -0
  99. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.js.map +1 -0
  100. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.d.ts +8 -0
  101. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.js +31 -0
  102. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.js.map +1 -0
  103. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.d.ts +8 -0
  104. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.js +32 -0
  105. package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.js.map +1 -0
  106. package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.d.ts +6 -0
  107. package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.js +80 -0
  108. package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.js.map +1 -0
  109. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.d.ts +6 -0
  110. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.js +14 -0
  111. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.js.map +1 -0
  112. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.d.ts +8 -0
  113. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.js +52 -0
  114. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.js.map +1 -0
  115. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.d.ts +8 -0
  116. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.js +38 -0
  117. package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.js.map +1 -0
  118. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.d.ts +33 -0
  119. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.js +100 -0
  120. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.js.map +1 -0
  121. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.d.ts +6 -0
  122. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.js +26 -0
  123. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.js.map +1 -0
  124. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.d.ts +41 -0
  125. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.js +107 -0
  126. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.js.map +1 -0
  127. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.d.ts +33 -0
  128. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.js +68 -0
  129. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.js.map +1 -0
  130. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.d.ts +41 -0
  131. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.js +97 -0
  132. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.js.map +1 -0
  133. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.d.ts +6 -0
  134. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.js +65 -0
  135. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.js.map +1 -0
  136. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.d.ts +37 -0
  137. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.js +96 -0
  138. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.js.map +1 -0
  139. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.d.ts +33 -0
  140. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.js +81 -0
  141. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.js.map +1 -0
  142. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.d.ts +33 -0
  143. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.js +113 -0
  144. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.js.map +1 -0
  145. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.d.ts +6 -0
  146. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.js +36 -0
  147. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.js.map +1 -0
  148. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.d.ts +36 -0
  149. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.js +101 -0
  150. package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.js.map +1 -0
  151. package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.d.ts +14 -0
  152. package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.js +45 -0
  153. package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.js.map +1 -0
  154. package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.d.ts +19 -0
  155. package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.js +35 -0
  156. package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.js.map +1 -0
  157. package/dist/domain.operations/git/genGitHubFileUrl.d.ts +9 -0
  158. package/dist/domain.operations/git/genGitHubFileUrl.js +55 -0
  159. package/dist/domain.operations/git/genGitHubFileUrl.js.map +1 -0
  160. package/dist/domain.operations/git/getGitRemoteUrl.d.ts +7 -0
  161. package/dist/domain.operations/git/getGitRemoteUrl.js +40 -0
  162. package/dist/domain.operations/git/getGitRemoteUrl.js.map +1 -0
  163. package/dist/domain.operations/hooks/getInvokeHooks.js +1 -1
  164. package/dist/domain.operations/hooks/getInvokeHooks.js.map +1 -1
  165. package/dist/domain.operations/reflect/createDraftDirectory.d.ts +11 -0
  166. package/dist/domain.operations/reflect/createDraftDirectory.js +46 -0
  167. package/dist/domain.operations/reflect/createDraftDirectory.js.map +1 -0
  168. package/dist/domain.operations/reflect/enumFeedbackFiles.d.ts +7 -0
  169. package/dist/domain.operations/reflect/enumFeedbackFiles.js +69 -0
  170. package/dist/domain.operations/reflect/enumFeedbackFiles.js.map +1 -0
  171. package/dist/domain.operations/reflect/extractJsonFromResultText.d.ts +7 -0
  172. package/dist/domain.operations/reflect/extractJsonFromResultText.js +19 -0
  173. package/dist/domain.operations/reflect/extractJsonFromResultText.js.map +1 -0
  174. package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.d.ts +46 -0
  175. package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.js +120 -0
  176. package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.js.map +1 -0
  177. package/dist/domain.operations/reflect/metrics/computeMetricsExpected.d.ts +12 -0
  178. package/dist/domain.operations/reflect/metrics/computeMetricsExpected.js +28 -0
  179. package/dist/domain.operations/reflect/metrics/computeMetricsExpected.js.map +1 -0
  180. package/dist/domain.operations/reflect/metrics/computeMetricsRealized.d.ts +26 -0
  181. package/dist/domain.operations/reflect/metrics/computeMetricsRealized.js +66 -0
  182. package/dist/domain.operations/reflect/metrics/computeMetricsRealized.js.map +1 -0
  183. package/dist/domain.operations/reflect/metrics/writeLogArtifact.d.ts +17 -0
  184. package/dist/domain.operations/reflect/metrics/writeLogArtifact.js +93 -0
  185. package/dist/domain.operations/reflect/metrics/writeLogArtifact.js.map +1 -0
  186. package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.d.ts +8 -0
  187. package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.js +28 -0
  188. package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.js.map +1 -0
  189. package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.d.ts +14 -0
  190. package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.js +93 -0
  191. package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.js.map +1 -0
  192. package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.d.ts +18 -0
  193. package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.js +208 -0
  194. package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.js.map +1 -0
  195. package/dist/domain.operations/reflect/step2/executeManifestOperations.d.ts +17 -0
  196. package/dist/domain.operations/reflect/step2/executeManifestOperations.js +189 -0
  197. package/dist/domain.operations/reflect/step2/executeManifestOperations.js.map +1 -0
  198. package/dist/domain.operations/reflect/step2/parseManifestOperations.d.ts +8 -0
  199. package/dist/domain.operations/reflect/step2/parseManifestOperations.js +73 -0
  200. package/dist/domain.operations/reflect/step2/parseManifestOperations.js.map +1 -0
  201. package/dist/domain.operations/reflect/validateSourceDirectory.d.ts +9 -0
  202. package/dist/domain.operations/reflect/validateSourceDirectory.js +63 -0
  203. package/dist/domain.operations/reflect/validateSourceDirectory.js.map +1 -0
  204. package/dist/domain.operations/reflect/validateTargetDirectory.d.ts +10 -0
  205. package/dist/domain.operations/reflect/validateTargetDirectory.js +59 -0
  206. package/dist/domain.operations/reflect/validateTargetDirectory.js.map +1 -0
  207. package/dist/index.js.map +1 -1
  208. package/dist/roles/architect/getArchitectRole.d.ts +6 -0
  209. package/dist/roles/architect/getArchitectRole.js +31 -0
  210. package/dist/roles/architect/getArchitectRole.js.map +1 -0
  211. package/dist/roles/brain/getBrainRole.d.ts +6 -0
  212. package/dist/roles/brain/getBrainRole.js +28 -0
  213. package/dist/roles/brain/getBrainRole.js.map +1 -0
  214. package/dist/roles/brain/skills/act/skillAct.d.ts +5 -0
  215. package/dist/roles/brain/skills/act/skillAct.js +147 -0
  216. package/dist/roles/brain/skills/act/skillAct.js.map +1 -0
  217. package/dist/roles/brain/skills/act/skillAct.ts +186 -0
  218. package/dist/roles/brain/skills/act/stepAct.d.ts +27 -0
  219. package/dist/roles/brain/skills/act/stepAct.js +95 -0
  220. package/dist/roles/brain/skills/act/stepAct.js.map +1 -0
  221. package/dist/roles/brain/skills/act/stepAct.ts +123 -0
  222. package/dist/roles/getRoleRegistry.js +5 -4
  223. package/dist/roles/getRoleRegistry.js.map +1 -1
  224. package/dist/roles/reviewer/briefs/on.rules/rules101.[article].md +41 -0
  225. package/dist/roles/reviewer/briefs/on.rules/rules101.citations.[article].md +88 -0
  226. package/dist/roles/reviewer/briefs/on.rules/rules101.collocated.[article].md +97 -0
  227. package/dist/roles/reviewer/briefs/on.rules/rules101.content.[article].md +228 -0
  228. package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].forbid.failhide.md +87 -0
  229. package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].forbid.gerunds.md +85 -0
  230. package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].require.failfast.md +73 -0
  231. package/dist/roles/reviewer/briefs/on.rules/rules101.structure.[article].md +70 -0
  232. package/dist/roles/reviewer/skills/reflect/reflect.d.ts +30 -0
  233. package/dist/roles/reviewer/skills/reflect/reflect.js +305 -0
  234. package/dist/roles/reviewer/skills/reflect/reflect.js.map +1 -0
  235. package/dist/roles/reviewer/skills/reflect/reflect.sh +38 -0
  236. package/dist/roles/reviewer/skills/reflect/reflect.ts +356 -0
  237. package/dist/roles/thinker/getThinkerBrief.d.ts +1 -1
  238. package/dist/roles/thinker/getThinkerRole.js +8 -8
  239. package/dist/roles/thinker/getThinkerRole.js.map +1 -1
  240. package/package.json +5 -3
@@ -0,0 +1,356 @@
1
+ import * as fs from 'fs/promises';
2
+ import { BadRequestError } from 'helpful-errors';
3
+ import * as path from 'path';
4
+
5
+ import type { ReviewerReflectMetrics } from '@src/domain.objects/Reviewer/ReviewerReflectMetrics';
6
+ import { getGitRemoteUrl } from '@src/domain.operations/git/getGitRemoteUrl';
7
+ import { createDraftDirectory } from '@src/domain.operations/reflect/createDraftDirectory';
8
+ import {
9
+ invokeClaudeCodeForReflect,
10
+ type ReflectStep1Response,
11
+ } from '@src/domain.operations/reflect/invokeClaudeCodeForReflect';
12
+ import { computeMetricsExpected } from '@src/domain.operations/reflect/metrics/computeMetricsExpected';
13
+ import { computeMetricsRealized } from '@src/domain.operations/reflect/metrics/computeMetricsRealized';
14
+ import { writeLogArtifact } from '@src/domain.operations/reflect/metrics/writeLogArtifact';
15
+ import { compileCitationsMarkdown } from '@src/domain.operations/reflect/step1/compileCitationsMarkdown';
16
+ import { compileReflectStep1Prompt } from '@src/domain.operations/reflect/step1/compileReflectStep1Prompt';
17
+ import { compileReflectStep2Prompt } from '@src/domain.operations/reflect/step2/compileReflectStep2Prompt';
18
+ import { executeManifestOperations } from '@src/domain.operations/reflect/step2/executeManifestOperations';
19
+ import { parseManifestOperations } from '@src/domain.operations/reflect/step2/parseManifestOperations';
20
+ import { validateSourceDirectory } from '@src/domain.operations/reflect/validateSourceDirectory';
21
+ import { validateTargetDirectory } from '@src/domain.operations/reflect/validateTargetDirectory';
22
+
23
+ /**
24
+ * .what = result of stepReflect execution
25
+ * .why = enables caller to inspect reflect outcome and artifacts
26
+ */
27
+ export type StepReflectResult = {
28
+ draft: {
29
+ dir: string;
30
+ pureDir: string;
31
+ syncDir: string;
32
+ };
33
+ results: {
34
+ created: number;
35
+ updated: number;
36
+ appended: number;
37
+ omitted: number;
38
+ };
39
+ metrics: ReviewerReflectMetrics;
40
+ };
41
+
42
+ /**
43
+ * .what = generates ISO timestamp for log directory naming
44
+ * .why = enables unique, sortable log directories
45
+ */
46
+ const genLogTimestamp = (): string => {
47
+ return new Date().toISOString().replace(/[:.]/g, '-');
48
+ };
49
+
50
+ /**
51
+ * .what = simple spinner for CLI feedback
52
+ * .why = shows progress during long-running operations
53
+ */
54
+ const withSpinner = async <T>(input: {
55
+ message: string;
56
+ operation: () => Promise<T>;
57
+ }): Promise<T> => {
58
+ const frames = ['ā ‹', 'ā ™', 'ā ¹', 'ā ø', 'ā ¼', 'ā “', 'ā ¦', 'ā §', 'ā ‡', 'ā '];
59
+ const startTime = Date.now();
60
+ let i = 0;
61
+
62
+ // print title once
63
+ console.log(input.message);
64
+
65
+ // render only the elapsed time branch line
66
+ const render = (frame: string) => {
67
+ const elapsed = Math.floor((Date.now() - startTime) / 1000);
68
+ process.stdout.write(`\r └─ elapsed: ${elapsed}s ${frame} `);
69
+ };
70
+
71
+ render(frames[0]!);
72
+ const interval = setInterval(() => {
73
+ i = (i + 1) % frames.length;
74
+ render(frames[i]!);
75
+ }, 100);
76
+
77
+ try {
78
+ const result = await input.operation();
79
+ clearInterval(interval);
80
+ const elapsed = Math.floor((Date.now() - startTime) / 1000);
81
+ process.stdout.write(`\r └─ elapsed: ${elapsed}s āœ“\n\n`);
82
+ return result;
83
+ } catch (error) {
84
+ clearInterval(interval);
85
+ const elapsed = Math.floor((Date.now() - startTime) / 1000);
86
+ process.stdout.write(`\r └─ elapsed: ${elapsed}s āœ—\n`);
87
+ throw error;
88
+ }
89
+ };
90
+
91
+ /**
92
+ * .what = extracts rules from feedback and proposes them to target
93
+ * .why = core orchestration flow for reviewer.reflect skill
94
+ */
95
+ export const stepReflect = async (input: {
96
+ source: string;
97
+ target: string;
98
+ mode?: 'soft' | 'hard';
99
+ force?: boolean;
100
+ rapid?: boolean;
101
+ }): Promise<StepReflectResult> => {
102
+ const mode = input.mode ?? 'soft';
103
+ const force = input.force ?? false;
104
+ const rapid = input.rapid ?? false;
105
+
106
+ // validate source directory and get feedback files
107
+ const { feedbackFiles } = await validateSourceDirectory({
108
+ source: input.source,
109
+ });
110
+
111
+ // validate target directory
112
+ await validateTargetDirectory({ target: input.target, force });
113
+
114
+ // get git remote url for citations
115
+ const remoteUrl = getGitRemoteUrl({ cwd: input.source });
116
+ if (!remoteUrl) {
117
+ throw new BadRequestError(
118
+ 'source directory must be a git repository with remote origin',
119
+ { source: input.source },
120
+ );
121
+ }
122
+
123
+ // create draft directory
124
+ const { draftDir, pureDir, syncDir } = await createDraftDirectory({
125
+ targetDir: input.target,
126
+ });
127
+
128
+ // compile citations markdown
129
+ const citationsMarkdown = compileCitationsMarkdown({
130
+ feedbackFiles,
131
+ cwd: input.source,
132
+ });
133
+
134
+ // write citations.md to draft directory
135
+ await fs.writeFile(
136
+ path.join(draftDir, 'citations.md'),
137
+ citationsMarkdown,
138
+ 'utf-8',
139
+ );
140
+
141
+ // compile step 1 prompt
142
+ const step1Prompt = await compileReflectStep1Prompt({
143
+ feedbackFiles,
144
+ citationsMarkdown,
145
+ draftDir,
146
+ cwd: input.source,
147
+ mode,
148
+ });
149
+
150
+ // compute expected metrics
151
+ const step2PromptResult = await compileReflectStep2Prompt({
152
+ targetDir: input.target,
153
+ draftDir,
154
+ pureDir,
155
+ mode,
156
+ rapid,
157
+ });
158
+ const expected = computeMetricsExpected({
159
+ step1PromptTokens: step1Prompt.tokenEstimate,
160
+ step2PromptTokens: step2PromptResult.tokenEstimate,
161
+ });
162
+
163
+ // emit metrics.expected
164
+ console.log(
165
+ `
166
+ šŸ”­ metrics.expected
167
+ ā”œā”€ files
168
+ │ └─ feedback: ${feedbackFiles.length}
169
+ ā”œā”€ tokens
170
+ │ ā”œā”€ estimate: ${expected.tokens.toLocaleString()}
171
+ │ └─ context: ${expected.contextWindowPercent}%
172
+ └─ cost
173
+ └─ estimate: $${expected.cost.toFixed(4)}
174
+ `.trim(),
175
+ );
176
+
177
+ // step 1: propose pure rules
178
+ console.log('');
179
+ const step1Result = await withSpinner({
180
+ message: 'ā›ļø step 1: propose pure rules from feedback...',
181
+ operation: async () => {
182
+ // invoke claude-code with step 1 prompt
183
+ // model writes rules directly to pureDir via Write tool
184
+ const { response, usage } =
185
+ await invokeClaudeCodeForReflect<ReflectStep1Response>({
186
+ prompt: step1Prompt.prompt,
187
+ cwd: input.source,
188
+ rapid,
189
+ });
190
+
191
+ // count rules written by enumerating pureDir
192
+ const pureFiles = await fs.readdir(pureDir).catch(() => []);
193
+ const rulesProposed = pureFiles.filter((f) =>
194
+ f.startsWith('rule.'),
195
+ ).length;
196
+
197
+ return {
198
+ tokens: usage,
199
+ rulesProposed: rulesProposed || response.rules?.length || 0,
200
+ };
201
+ },
202
+ });
203
+
204
+ // re-compile step 2 prompt with actual pure rules
205
+ const step2PromptFinal = await compileReflectStep2Prompt({
206
+ targetDir: input.target,
207
+ draftDir,
208
+ pureDir,
209
+ mode,
210
+ rapid,
211
+ });
212
+
213
+ // step 2: blend proposals with existing rules
214
+ const step2Result = await withSpinner({
215
+ message: '🪨 step 2: blend proposals with existing rules...',
216
+ operation: async () => {
217
+ // invoke claude-code with step 2 prompt
218
+ // note: model writes manifest.json directly via Write tool
219
+ const { usage } = await invokeClaudeCodeForReflect<{ written: boolean }>({
220
+ prompt: step2PromptFinal.prompt,
221
+ cwd: input.target,
222
+ rapid,
223
+ });
224
+
225
+ // read the manifest written by the model
226
+ const manifestPath = path.join(draftDir, 'manifest.json');
227
+ const manifestContent = await fs.readFile(manifestPath, 'utf-8');
228
+
229
+ return {
230
+ tokens: usage,
231
+ manifestContent,
232
+ };
233
+ },
234
+ });
235
+
236
+ // parse manifest operations
237
+ const manifest = parseManifestOperations({
238
+ content: step2Result.manifestContent,
239
+ });
240
+
241
+ // execute manifest operations
242
+ const blendResults = await executeManifestOperations({
243
+ manifest,
244
+ pureDir,
245
+ syncDir,
246
+ targetDir: input.target,
247
+ log: console,
248
+ });
249
+
250
+ // compute realized metrics
251
+ const realized = computeMetricsRealized({
252
+ step1: { tokens: step1Result.tokens },
253
+ step2: { tokens: step2Result.tokens },
254
+ });
255
+
256
+ // build full metrics object
257
+ const metrics: ReviewerReflectMetrics = {
258
+ files: {
259
+ feedbackCount: feedbackFiles.length,
260
+ rulesCount:
261
+ blendResults.created + blendResults.updated + blendResults.appended,
262
+ },
263
+ expected,
264
+ realized,
265
+ };
266
+
267
+ // write log artifact
268
+ await writeLogArtifact({
269
+ draftDir,
270
+ metrics,
271
+ results: blendResults,
272
+ });
273
+
274
+ // emit metrics.realized
275
+ console.log(
276
+ `
277
+ ✨ metrics.realized
278
+ ā”œā”€ tokens
279
+ │ ā”œā”€ input: ${realized.total.tokens.input.toLocaleString()}
280
+ │ └─ output: ${realized.total.tokens.output.toLocaleString()}
281
+ └─ cost
282
+ └─ total: $${realized.total.cost.total.toFixed(4)}
283
+
284
+ 🌊 output
285
+ ā”œā”€ draft: ${draftDir.startsWith(process.cwd()) ? path.relative(process.cwd(), draftDir) : draftDir}
286
+ ā”œā”€ pure: ${pureDir.startsWith(process.cwd()) ? path.relative(process.cwd(), pureDir) : pureDir}
287
+ └─ sync: ${syncDir.startsWith(process.cwd()) ? path.relative(process.cwd(), syncDir) : syncDir}
288
+
289
+ 🪨 results
290
+ ā”œā”€ created: ${blendResults.created}
291
+ ā”œā”€ updated: ${blendResults.updated}
292
+ ā”œā”€ appended: ${blendResults.appended}
293
+ └─ omitted: ${blendResults.omitted}
294
+ `.trim(),
295
+ );
296
+
297
+ return {
298
+ draft: {
299
+ dir: draftDir,
300
+ pureDir,
301
+ syncDir,
302
+ },
303
+ results: blendResults,
304
+ metrics,
305
+ };
306
+ };
307
+
308
+ /**
309
+ * .what = CLI entrypoint when run directly
310
+ * .why = enables ./reflect.sh to invoke this module
311
+ */
312
+ if (require.main === module) {
313
+ // parse command line arguments
314
+ const args = process.argv.slice(2);
315
+ const parsed: Record<string, string> = {};
316
+ for (let i = 0; i < args.length; i += 2) {
317
+ const key = args[i]?.replace(/^--/, '');
318
+ const value = args[i + 1];
319
+ if (key && value) parsed[key] = value;
320
+ }
321
+
322
+ // validate required arguments
323
+ if (!parsed.source) {
324
+ console.error('ā›ˆļø error: --source is required');
325
+ process.exit(1);
326
+ }
327
+ if (!parsed.target) {
328
+ console.error('ā›ˆļø error: --target is required');
329
+ process.exit(1);
330
+ }
331
+
332
+ // parse optional arguments
333
+ const mode = (parsed.mode as 'soft' | 'hard') ?? 'soft';
334
+ const force = parsed.force === 'true';
335
+ const rapid = parsed.rapid === 'true';
336
+
337
+ // execute reflect
338
+ void (async () => {
339
+ try {
340
+ await stepReflect({
341
+ source: parsed.source!,
342
+ target: parsed.target!,
343
+ mode,
344
+ force,
345
+ rapid,
346
+ });
347
+ } catch (error) {
348
+ if (error instanceof BadRequestError) {
349
+ console.error(`\nā›ˆļø error: ${error.message}`);
350
+ process.exit(1);
351
+ }
352
+ console.error('ā›ˆļø unexpected error:', error);
353
+ process.exit(1);
354
+ }
355
+ })();
356
+ }
@@ -1,6 +1,6 @@
1
1
  import type { Artifact } from 'rhachet-artifact';
2
2
  import { type GitFile } from 'rhachet-artifact-git';
3
- import type { BriefOptionThinker } from './getThinkerBrief.Options.codegen';
3
+ import type { BriefOptionThinker } from '../../roles/thinker/getThinkerBrief.Options.codegen';
4
4
  /**
5
5
  * .what = loads an artifact:brief distilled for the mechanic to reference, from the `briefs` directory
6
6
  * .why = enables reusable knowledge downloads for mechanic contexts (e.g., matrix-movie style)
@@ -2,14 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ROLE_THINKER = void 0;
4
4
  const rhachet_1 = require("rhachet");
5
- const getThinkerBrief_1 = require("./getThinkerBrief");
6
- const stepArticulate_skill_1 = require("./skills/brief.articulate/stepArticulate.skill");
7
- const stepCatalogize_skill_1 = require("./skills/brief.catalogize/stepCatalogize.skill");
8
- const stepDemonstrate_skill_1 = require("./skills/brief.demonstrate/stepDemonstrate.skill");
9
- const stepCluster_skill_1 = require("./skills/khue.cluster/stepCluster.skill");
10
- const stepDiverge_skill_1 = require("./skills/khue.diverge/stepDiverge.skill");
11
- const stepInstantiate_skill_1 = require("./skills/khue.instantiate/stepInstantiate.skill");
12
- const stepTriage_skill_1 = require("./skills/khue.triage/stepTriage.skill");
5
+ const getThinkerBrief_1 = require("../../roles/thinker/getThinkerBrief");
6
+ const stepArticulate_skill_1 = require("../../roles/thinker/skills/brief.articulate/stepArticulate.skill");
7
+ const stepCatalogize_skill_1 = require("../../roles/thinker/skills/brief.catalogize/stepCatalogize.skill");
8
+ const stepDemonstrate_skill_1 = require("../../roles/thinker/skills/brief.demonstrate/stepDemonstrate.skill");
9
+ const stepCluster_skill_1 = require("../../roles/thinker/skills/khue.cluster/stepCluster.skill");
10
+ const stepDiverge_skill_1 = require("../../roles/thinker/skills/khue.diverge/stepDiverge.skill");
11
+ const stepInstantiate_skill_1 = require("../../roles/thinker/skills/khue.instantiate/stepInstantiate.skill");
12
+ const stepTriage_skill_1 = require("../../roles/thinker/skills/khue.triage/stepTriage.skill");
13
13
  exports.ROLE_THINKER = rhachet_1.Role.build({
14
14
  slug: 'thinker',
15
15
  name: 'Thinker',
@@ -1 +1 @@
1
- {"version":3,"file":"getThinkerRole.js","sourceRoot":"","sources":["../../../src/roles/thinker/getThinkerRole.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAE1C,uDAAoD;AACpD,yFAAkF;AAClF,yFAAkF;AAClF,4FAAqF;AACrF,+EAAwE;AACxE,+EAAwE;AACxE,2FAAoF;AACpF,4EAAqE;AAExD,QAAA,YAAY,GAAS,cAAI,CAAC,KAAK,CAAC;IAC3C,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE;;;;GAIP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE;QACN,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,iDAAiD;YACzD,KAAK,EAAE,IAAA,iCAAe,EAAC,cAAc,CAAC;SACvC,CAAC;QACF,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,8CAA8C;YACtD,KAAK,EAAE,IAAA,iCAAe,EAAC,0BAA0B,CAAC;SACnD,CAAC;KACH;IACD,MAAM,EAAE;QACN,IAAI,EAAE,EAAE;QACR,IAAI,EAAE;YACJ,kBAAkB;YAClB,iCAAa;YACb,iCAAa;YACb,+BAAY;YACZ,yCAAiB;YAEjB,kBAAkB;YAClB,uCAAgB;YAChB,yCAAiB;YACjB,uCAAgB;YAEhB,kBAAkB;YAClB,sCAAsC;SACvC;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;KACvC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"getThinkerRole.js","sourceRoot":"","sources":["../../../src/roles/thinker/getThinkerRole.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAE1C,wEAAqE;AACrE,0GAAmG;AACnG,0GAAmG;AACnG,6GAAsG;AACtG,gGAAyF;AACzF,gGAAyF;AACzF,4GAAqG;AACrG,6FAAsF;AAEzE,QAAA,YAAY,GAAS,cAAI,CAAC,KAAK,CAAC;IAC3C,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE;;;;GAIP,CAAC,IAAI,EAAE;IACR,MAAM,EAAE;QACN,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,iDAAiD;YACzD,KAAK,EAAE,IAAA,iCAAe,EAAC,cAAc,CAAC;SACvC,CAAC;QACF,mBAAS,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,8CAA8C;YACtD,KAAK,EAAE,IAAA,iCAAe,EAAC,0BAA0B,CAAC;SACnD,CAAC;KACH;IACD,MAAM,EAAE;QACN,IAAI,EAAE,EAAE;QACR,IAAI,EAAE;YACJ,kBAAkB;YAClB,iCAAa;YACb,iCAAa;YACb,+BAAY;YACZ,yCAAiB;YAEjB,kBAAkB;YAClB,uCAAgB;YAChB,yCAAiB;YACjB,uCAAgB;YAEhB,kBAAkB;YAClB,sCAAsC;SACvC;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;KACvC;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "rhachet-roles-bhrain",
3
3
  "author": "ehmpathy",
4
4
  "description": "reliable thought concept navigation roles, briefs, and skills, via rhachet",
5
- "version": "0.3.0",
5
+ "version": "0.5.1",
6
6
  "repository": "ehmpathy/rhachet-roles-bhrain",
7
7
  "homepage": "https://github.com/ehmpathy/rhachet-roles-bhrain",
8
8
  "keywords": [
@@ -33,7 +33,6 @@
33
33
  "test:types": "tsc -p ./tsconfig.json --noEmit",
34
34
  "test:format": "npm run test:format:biome",
35
35
  "test:lint:deps": "npx depcheck -c ./.depcheckrc.yml",
36
- "test:integration:hold": "jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')",
37
36
  "test:lint:biome": "biome check --diagnostic-level=error",
38
37
  "test:lint:biome:all": "biome check",
39
38
  "test:lint": "npm run test:lint:biome && npm run test:lint:deps",
@@ -52,6 +51,7 @@
52
51
  "prepare:rhachet": "rhachet init && rhachet roles link --role mechanic && rhachet roles link --role behaver && rhachet roles init --role mechanic"
53
52
  },
54
53
  "dependencies": {
54
+ "@anthropic-ai/sdk": "0.51.0",
55
55
  "@ehmpathy/as-command": "1.0.3",
56
56
  "@ehmpathy/uni-time": "1.8.1",
57
57
  "as-procedure": "1.1.7",
@@ -67,7 +67,9 @@
67
67
  "simple-in-memory-cache": "0.4.0",
68
68
  "type-fns": "1.21.0",
69
69
  "with-simple-caching": "0.14.2",
70
- "wrapper-fns": "1.1.0"
70
+ "wrapper-fns": "1.1.0",
71
+ "zod": "3.25.76",
72
+ "zod-to-json-schema": "3.25.0"
71
73
  },
72
74
  "devDependencies": {
73
75
  "@anthropic-ai/claude-code": "2.0.76",