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.
- package/dist/access/sdk/sdkOpenAi.d.ts +25 -0
- package/dist/access/sdk/sdkOpenAi.js +122 -0
- package/dist/access/sdk/sdkOpenAi.js.map +1 -1
- package/dist/access/sdks/anthropic/sdkAnthropic.d.ts +31 -0
- package/dist/access/sdks/anthropic/sdkAnthropic.js +151 -0
- package/dist/access/sdks/anthropic/sdkAnthropic.js.map +1 -0
- package/dist/access/sdks/qwen/sdkQwen.d.ts +31 -0
- package/dist/access/sdks/qwen/sdkQwen.js +134 -0
- package/dist/access/sdks/qwen/sdkQwen.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Actor.d.ts +67 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Actor.js +12 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Actor.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Atom.d.ts +40 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Atom.js +3 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Atom.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Context.d.ts +30 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Context.js +3 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Context.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.d.ts +34 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.js +8 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopIteration.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.d.ts +23 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.js +9 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopIterationCompletedEvent.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.d.ts +49 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.js +8 -0
- package/dist/domain.objects/BrainArch1/BrainArch1LoopResult.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.d.ts +31 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.js +9 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactedEvent.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.d.ts +27 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.js +8 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryCompactionResult.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.d.ts +45 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.js +3 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryManager.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.d.ts +29 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.js +8 -0
- package/dist/domain.objects/BrainArch1/BrainArch1MemoryTokenUsage.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.d.ts +22 -0
- package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.js +8 -0
- package/dist/domain.objects/BrainArch1/BrainArch1PermissionDecision.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.d.ts +30 -0
- package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.js +3 -0
- package/dist/domain.objects/BrainArch1/BrainArch1PermissionGuard.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Session.d.ts +47 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Session.js +17 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Session.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.d.ts +34 -0
- package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.js +12 -0
- package/dist/domain.objects/BrainArch1/BrainArch1SessionMessage.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.d.ts +21 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.js +8 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolCall.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.d.ts +54 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.js +20 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolDefinition.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.d.ts +36 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.js +9 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolExecutionCompletedEvent.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.d.ts +25 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.js +8 -0
- package/dist/domain.objects/BrainArch1/BrainArch1ToolResult.js.map +1 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.d.ts +31 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.js +3 -0
- package/dist/domain.objects/BrainArch1/BrainArch1Toolbox.js.map +1 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectManifest.d.ts +44 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectManifest.js +8 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectManifest.js.map +1 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.d.ts +30 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.js +35 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectManifestOperation.js.map +1 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.d.ts +89 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.js +8 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectMetrics.js.map +1 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.d.ts +43 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.js +8 -0
- package/dist/domain.objects/Reviewer/ReviewerReflectRuleProposal.js.map +1 -0
- package/dist/domain.operations/artifact/genLoopFeedback.js +1 -1
- package/dist/domain.operations/artifact/genLoopFeedback.js.map +1 -1
- package/dist/domain.operations/artifact/genStepGrabCallerFeedbackToArtifact.d.ts +1 -1
- package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.d.ts +13 -0
- package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.js +106 -0
- package/dist/domain.operations/brain.replic.arch1/core/invokeBrainArch1.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.d.ts +18 -0
- package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.js +16 -0
- package/dist/domain.operations/brain.replic.arch1/llm/generateBrainArch1LlmResponse.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.d.ts +30 -0
- package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.js +71 -0
- package/dist/domain.operations/brain.replic.arch1/loop/iterateBrainArch1Loop.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.d.ts +20 -0
- package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.js +90 -0
- package/dist/domain.operations/brain.replic.arch1/loop/runBrainArch1Loop.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.d.ts +8 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.js +31 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/anthropic.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.d.ts +3 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.js +10 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/index.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.d.ts +8 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.js +31 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/openai.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.d.ts +8 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.js +32 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/atoms/qwen.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.d.ts +6 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.js +80 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/memoryManagers/slidingWindow.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.d.ts +6 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.js +14 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/allowAll.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.d.ts +8 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.js +52 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/promptUser.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.d.ts +8 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.js +38 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/permissionGuards/readOnly.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.d.ts +33 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.js +100 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/exec.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.d.ts +6 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.js +26 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/bash/index.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.d.ts +41 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.js +107 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/edit.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.d.ts +33 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.js +68 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/glob.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.d.ts +41 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.js +97 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/grep.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.d.ts +6 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.js +65 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/index.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.d.ts +37 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.js +96 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/read.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.d.ts +33 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.js +81 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/files/write.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.d.ts +33 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.js +113 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/fetch.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.d.ts +6 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.js +36 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/index.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.d.ts +36 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.js +101 -0
- package/dist/domain.operations/brain.replic.arch1/plugins/toolboxes/web/search.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.d.ts +14 -0
- package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.js +45 -0
- package/dist/domain.operations/brain.replic.arch1/tool/executeBrainArch1ToolCall.js.map +1 -0
- package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.d.ts +19 -0
- package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.js +35 -0
- package/dist/domain.operations/brain.replic.arch1/tool/mergeBrainArch1Toolboxes.js.map +1 -0
- package/dist/domain.operations/git/genGitHubFileUrl.d.ts +9 -0
- package/dist/domain.operations/git/genGitHubFileUrl.js +55 -0
- package/dist/domain.operations/git/genGitHubFileUrl.js.map +1 -0
- package/dist/domain.operations/git/getGitRemoteUrl.d.ts +7 -0
- package/dist/domain.operations/git/getGitRemoteUrl.js +40 -0
- package/dist/domain.operations/git/getGitRemoteUrl.js.map +1 -0
- package/dist/domain.operations/hooks/getInvokeHooks.js +1 -1
- package/dist/domain.operations/hooks/getInvokeHooks.js.map +1 -1
- package/dist/domain.operations/reflect/createDraftDirectory.d.ts +11 -0
- package/dist/domain.operations/reflect/createDraftDirectory.js +46 -0
- package/dist/domain.operations/reflect/createDraftDirectory.js.map +1 -0
- package/dist/domain.operations/reflect/enumFeedbackFiles.d.ts +7 -0
- package/dist/domain.operations/reflect/enumFeedbackFiles.js +69 -0
- package/dist/domain.operations/reflect/enumFeedbackFiles.js.map +1 -0
- package/dist/domain.operations/reflect/extractJsonFromResultText.d.ts +7 -0
- package/dist/domain.operations/reflect/extractJsonFromResultText.js +19 -0
- package/dist/domain.operations/reflect/extractJsonFromResultText.js.map +1 -0
- package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.d.ts +46 -0
- package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.js +120 -0
- package/dist/domain.operations/reflect/invokeClaudeCodeForReflect.js.map +1 -0
- package/dist/domain.operations/reflect/metrics/computeMetricsExpected.d.ts +12 -0
- package/dist/domain.operations/reflect/metrics/computeMetricsExpected.js +28 -0
- package/dist/domain.operations/reflect/metrics/computeMetricsExpected.js.map +1 -0
- package/dist/domain.operations/reflect/metrics/computeMetricsRealized.d.ts +26 -0
- package/dist/domain.operations/reflect/metrics/computeMetricsRealized.js +66 -0
- package/dist/domain.operations/reflect/metrics/computeMetricsRealized.js.map +1 -0
- package/dist/domain.operations/reflect/metrics/writeLogArtifact.d.ts +17 -0
- package/dist/domain.operations/reflect/metrics/writeLogArtifact.js +93 -0
- package/dist/domain.operations/reflect/metrics/writeLogArtifact.js.map +1 -0
- package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.d.ts +8 -0
- package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.js +28 -0
- package/dist/domain.operations/reflect/step1/compileCitationsMarkdown.js.map +1 -0
- package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.d.ts +14 -0
- package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.js +93 -0
- package/dist/domain.operations/reflect/step1/compileReflectStep1Prompt.js.map +1 -0
- package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.d.ts +18 -0
- package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.js +208 -0
- package/dist/domain.operations/reflect/step2/compileReflectStep2Prompt.js.map +1 -0
- package/dist/domain.operations/reflect/step2/executeManifestOperations.d.ts +17 -0
- package/dist/domain.operations/reflect/step2/executeManifestOperations.js +189 -0
- package/dist/domain.operations/reflect/step2/executeManifestOperations.js.map +1 -0
- package/dist/domain.operations/reflect/step2/parseManifestOperations.d.ts +8 -0
- package/dist/domain.operations/reflect/step2/parseManifestOperations.js +73 -0
- package/dist/domain.operations/reflect/step2/parseManifestOperations.js.map +1 -0
- package/dist/domain.operations/reflect/validateSourceDirectory.d.ts +9 -0
- package/dist/domain.operations/reflect/validateSourceDirectory.js +63 -0
- package/dist/domain.operations/reflect/validateSourceDirectory.js.map +1 -0
- package/dist/domain.operations/reflect/validateTargetDirectory.d.ts +10 -0
- package/dist/domain.operations/reflect/validateTargetDirectory.js +59 -0
- package/dist/domain.operations/reflect/validateTargetDirectory.js.map +1 -0
- package/dist/index.js.map +1 -1
- package/dist/roles/architect/getArchitectRole.d.ts +6 -0
- package/dist/roles/architect/getArchitectRole.js +31 -0
- package/dist/roles/architect/getArchitectRole.js.map +1 -0
- package/dist/roles/brain/getBrainRole.d.ts +6 -0
- package/dist/roles/brain/getBrainRole.js +28 -0
- package/dist/roles/brain/getBrainRole.js.map +1 -0
- package/dist/roles/brain/skills/act/skillAct.d.ts +5 -0
- package/dist/roles/brain/skills/act/skillAct.js +147 -0
- package/dist/roles/brain/skills/act/skillAct.js.map +1 -0
- package/dist/roles/brain/skills/act/skillAct.ts +186 -0
- package/dist/roles/brain/skills/act/stepAct.d.ts +27 -0
- package/dist/roles/brain/skills/act/stepAct.js +95 -0
- package/dist/roles/brain/skills/act/stepAct.js.map +1 -0
- package/dist/roles/brain/skills/act/stepAct.ts +123 -0
- package/dist/roles/getRoleRegistry.js +5 -4
- package/dist/roles/getRoleRegistry.js.map +1 -1
- package/dist/roles/reviewer/briefs/on.rules/rules101.[article].md +41 -0
- package/dist/roles/reviewer/briefs/on.rules/rules101.citations.[article].md +88 -0
- package/dist/roles/reviewer/briefs/on.rules/rules101.collocated.[article].md +97 -0
- package/dist/roles/reviewer/briefs/on.rules/rules101.content.[article].md +228 -0
- package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].forbid.failhide.md +87 -0
- package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].forbid.gerunds.md +85 -0
- package/dist/roles/reviewer/briefs/on.rules/rules101.content.[demo].require.failfast.md +73 -0
- package/dist/roles/reviewer/briefs/on.rules/rules101.structure.[article].md +70 -0
- package/dist/roles/reviewer/skills/reflect/reflect.d.ts +30 -0
- package/dist/roles/reviewer/skills/reflect/reflect.js +305 -0
- package/dist/roles/reviewer/skills/reflect/reflect.js.map +1 -0
- package/dist/roles/reviewer/skills/reflect/reflect.sh +38 -0
- package/dist/roles/reviewer/skills/reflect/reflect.ts +356 -0
- package/dist/roles/thinker/getThinkerBrief.d.ts +1 -1
- package/dist/roles/thinker/getThinkerRole.js +8 -8
- package/dist/roles/thinker/getThinkerRole.js.map +1 -1
- 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 '
|
|
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("
|
|
6
|
-
const stepArticulate_skill_1 = require("
|
|
7
|
-
const stepCatalogize_skill_1 = require("
|
|
8
|
-
const stepDemonstrate_skill_1 = require("
|
|
9
|
-
const stepCluster_skill_1 = require("
|
|
10
|
-
const stepDiverge_skill_1 = require("
|
|
11
|
-
const stepInstantiate_skill_1 = require("
|
|
12
|
-
const stepTriage_skill_1 = require("
|
|
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,
|
|
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.
|
|
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",
|