rhachet-roles-bhrain 0.3.0 → 0.5.2
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/domain.operations/review/compileReviewPrompt.js +16 -5
- package/dist/domain.operations/review/compileReviewPrompt.js.map +1 -1
- package/dist/domain.operations/review/formatReviewOutput.d.ts +15 -6
- package/dist/domain.operations/review/formatReviewOutput.js +15 -17
- package/dist/domain.operations/review/formatReviewOutput.js.map +1 -1
- 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/reviewer/skills/review/review.js.map +1 -1
- package/dist/roles/reviewer/skills/review/review.ts +12 -3
- 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 +6 -4
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type GStitcher, type RoleContext, type Threads } from 'rhachet';
|
|
2
|
+
import type { Artifact } from 'rhachet-artifact';
|
|
3
|
+
import type { GitFile } from 'rhachet-artifact-git';
|
|
4
|
+
import type { BrainArch1Actor } from '../../../../domain.objects/BrainArch1/BrainArch1Actor';
|
|
5
|
+
import type { BrainArch1Context } from '../../../../domain.objects/BrainArch1/BrainArch1Context';
|
|
6
|
+
/**
|
|
7
|
+
* .what = stitcher type for the act skill
|
|
8
|
+
* .why = defines the input/output contract for agentic task completion
|
|
9
|
+
*/
|
|
10
|
+
export type StitcherAct = GStitcher<Threads<{
|
|
11
|
+
caller: RoleContext<'caller', {
|
|
12
|
+
ask: string;
|
|
13
|
+
art: {
|
|
14
|
+
result: Artifact<typeof GitFile>;
|
|
15
|
+
log: Artifact<typeof GitFile>;
|
|
16
|
+
};
|
|
17
|
+
}>;
|
|
18
|
+
brain: RoleContext<'brain', {
|
|
19
|
+
actor: BrainArch1Actor;
|
|
20
|
+
systemPromptPath: string | null;
|
|
21
|
+
}>;
|
|
22
|
+
}>, BrainArch1Context & GStitcher['context']>;
|
|
23
|
+
/**
|
|
24
|
+
* .what = executes agentic task completion via brain invocation
|
|
25
|
+
* .why = enables llm with tools to autonomously complete tasks
|
|
26
|
+
*/
|
|
27
|
+
export declare const stepAct: import("rhachet").Stitcher<StitcherAct>;
|
|
@@ -0,0 +1,95 @@
|
|
|
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.stepAct = void 0;
|
|
27
|
+
const fs = __importStar(require("fs/promises"));
|
|
28
|
+
const rhachet_1 = require("rhachet");
|
|
29
|
+
const invokeBrainArch1_1 = require("../../../../domain.operations/brain.replic.arch1/core/invokeBrainArch1");
|
|
30
|
+
/**
|
|
31
|
+
* .what = step to invoke brain and persist results
|
|
32
|
+
* .why = core step for agentic task completion
|
|
33
|
+
*/
|
|
34
|
+
const stepInvokeBrain = new rhachet_1.StitchStepCompute({
|
|
35
|
+
form: 'COMPUTE',
|
|
36
|
+
readme: 'invokes brain agentic loop and persists results',
|
|
37
|
+
slug: '@[brain]<act>',
|
|
38
|
+
stitchee: 'brain',
|
|
39
|
+
invoke: async ({ threads }, context) => {
|
|
40
|
+
const { caller, brain } = threads;
|
|
41
|
+
// load custom system prompt if specified
|
|
42
|
+
let systemPrompt = brain.context.stash.actor.role.systemPrompt;
|
|
43
|
+
if (brain.context.stash.systemPromptPath) {
|
|
44
|
+
systemPrompt = await fs.readFile(brain.context.stash.systemPromptPath, 'utf-8');
|
|
45
|
+
}
|
|
46
|
+
// invoke the brain
|
|
47
|
+
const result = await (0, invokeBrainArch1_1.invokeBrainArch1)({
|
|
48
|
+
actor: {
|
|
49
|
+
...brain.context.stash.actor,
|
|
50
|
+
role: {
|
|
51
|
+
...brain.context.stash.actor.role,
|
|
52
|
+
systemPrompt,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
userInput: caller.context.stash.ask,
|
|
56
|
+
}, context);
|
|
57
|
+
// write result to output artifact
|
|
58
|
+
await caller.context.stash.art.result.set({
|
|
59
|
+
content: result.finalResponse ?? '',
|
|
60
|
+
});
|
|
61
|
+
// write execution log to log artifact
|
|
62
|
+
const logContent = [
|
|
63
|
+
`# brain act execution log`,
|
|
64
|
+
'',
|
|
65
|
+
`## summary`,
|
|
66
|
+
`- termination: ${result.terminationReason}`,
|
|
67
|
+
`- iterations: ${result.iterationCount}`,
|
|
68
|
+
`- tokens: ${result.totalTokenUsage.totalTokens}`,
|
|
69
|
+
'',
|
|
70
|
+
`## final response`,
|
|
71
|
+
'```',
|
|
72
|
+
result.finalResponse ?? '(no response)',
|
|
73
|
+
'```',
|
|
74
|
+
'',
|
|
75
|
+
result.error ? `## error\n${result.error}` : '',
|
|
76
|
+
]
|
|
77
|
+
.filter(Boolean)
|
|
78
|
+
.join('\n');
|
|
79
|
+
await caller.context.stash.art.log.set({ content: logContent });
|
|
80
|
+
return {
|
|
81
|
+
input: { ask: caller.context.stash.ask },
|
|
82
|
+
output: { content: result.finalResponse ?? '' },
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* .what = executes agentic task completion via brain invocation
|
|
88
|
+
* .why = enables llm with tools to autonomously complete tasks
|
|
89
|
+
*/
|
|
90
|
+
exports.stepAct = (0, rhachet_1.asStitcherFlat)((0, rhachet_1.genStitchRoute)({
|
|
91
|
+
slug: '@[brain]<act>',
|
|
92
|
+
readme: '@[brain]<act> -> agentic task completion',
|
|
93
|
+
sequence: [stepInvokeBrain],
|
|
94
|
+
}));
|
|
95
|
+
//# sourceMappingURL=stepAct.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stepAct.js","sourceRoot":"","sources":["../../../../../src/roles/brain/skills/act/stepAct.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,qCAOiB;AAMjB,sGAAmG;AA6BnG;;;GAGG;AACH,MAAM,eAAe,GAAG,IAAI,2BAAiB,CAAc;IACzD,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,iDAAiD;IACzD,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;QACrC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAElC,yCAAyC;QACzC,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;QAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACzC,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC9B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EACpC,OAAO,CACR,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,IAAA,mCAAgB,EACnC;YACE,KAAK,EAAE;gBACL,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;gBAC5B,IAAI,EAAE;oBACJ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;oBACjC,YAAY;iBACb;aACF;YACD,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;SACpC,EACD,OAAO,CACR,CAAC;QAEF,kCAAkC;QAClC,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YACxC,OAAO,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;SACpC,CAAC,CAAC;QAEH,sCAAsC;QACtC,MAAM,UAAU,GAAG;YACjB,2BAA2B;YAC3B,EAAE;YACF,YAAY;YACZ,kBAAkB,MAAM,CAAC,iBAAiB,EAAE;YAC5C,iBAAiB,MAAM,CAAC,cAAc,EAAE;YACxC,aAAa,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE;YACjD,EAAE;YACF,mBAAmB;YACnB,KAAK;YACL,MAAM,CAAC,aAAa,IAAI,eAAe;YACvC,KAAK;YACL,EAAE;YACF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;SAChD;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAEhE,OAAO;YACL,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACxC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE;SAChD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH;;;GAGG;AACU,QAAA,OAAO,GAAG,IAAA,wBAAc,EACnC,IAAA,wBAAc,EAAC;IACb,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,0CAA0C;IAClD,QAAQ,EAAE,CAAC,eAAe,CAAC;CAC5B,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import {
|
|
3
|
+
asStitcherFlat,
|
|
4
|
+
type GStitcher,
|
|
5
|
+
genStitchRoute,
|
|
6
|
+
type RoleContext,
|
|
7
|
+
StitchStepCompute,
|
|
8
|
+
type Threads,
|
|
9
|
+
} from 'rhachet';
|
|
10
|
+
import type { Artifact } from 'rhachet-artifact';
|
|
11
|
+
import type { GitFile } from 'rhachet-artifact-git';
|
|
12
|
+
|
|
13
|
+
import type { BrainArch1Actor } from '@src/domain.objects/BrainArch1/BrainArch1Actor';
|
|
14
|
+
import type { BrainArch1Context } from '@src/domain.objects/BrainArch1/BrainArch1Context';
|
|
15
|
+
import { invokeBrainArch1 } from '@src/domain.operations/brain.replic.arch1/core/invokeBrainArch1';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* .what = stitcher type for the act skill
|
|
19
|
+
* .why = defines the input/output contract for agentic task completion
|
|
20
|
+
*/
|
|
21
|
+
export type StitcherAct = GStitcher<
|
|
22
|
+
Threads<{
|
|
23
|
+
caller: RoleContext<
|
|
24
|
+
'caller',
|
|
25
|
+
{
|
|
26
|
+
ask: string;
|
|
27
|
+
art: {
|
|
28
|
+
result: Artifact<typeof GitFile>;
|
|
29
|
+
log: Artifact<typeof GitFile>;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
>;
|
|
33
|
+
brain: RoleContext<
|
|
34
|
+
'brain',
|
|
35
|
+
{
|
|
36
|
+
actor: BrainArch1Actor;
|
|
37
|
+
systemPromptPath: string | null;
|
|
38
|
+
}
|
|
39
|
+
>;
|
|
40
|
+
}>,
|
|
41
|
+
BrainArch1Context & GStitcher['context']
|
|
42
|
+
>;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* .what = step to invoke brain and persist results
|
|
46
|
+
* .why = core step for agentic task completion
|
|
47
|
+
*/
|
|
48
|
+
const stepInvokeBrain = new StitchStepCompute<StitcherAct>({
|
|
49
|
+
form: 'COMPUTE',
|
|
50
|
+
readme: 'invokes brain agentic loop and persists results',
|
|
51
|
+
slug: '@[brain]<act>',
|
|
52
|
+
stitchee: 'brain',
|
|
53
|
+
invoke: async ({ threads }, context) => {
|
|
54
|
+
const { caller, brain } = threads;
|
|
55
|
+
|
|
56
|
+
// load custom system prompt if specified
|
|
57
|
+
let systemPrompt = brain.context.stash.actor.role.systemPrompt;
|
|
58
|
+
if (brain.context.stash.systemPromptPath) {
|
|
59
|
+
systemPrompt = await fs.readFile(
|
|
60
|
+
brain.context.stash.systemPromptPath,
|
|
61
|
+
'utf-8',
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// invoke the brain
|
|
66
|
+
const result = await invokeBrainArch1(
|
|
67
|
+
{
|
|
68
|
+
actor: {
|
|
69
|
+
...brain.context.stash.actor,
|
|
70
|
+
role: {
|
|
71
|
+
...brain.context.stash.actor.role,
|
|
72
|
+
systemPrompt,
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
userInput: caller.context.stash.ask,
|
|
76
|
+
},
|
|
77
|
+
context,
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
// write result to output artifact
|
|
81
|
+
await caller.context.stash.art.result.set({
|
|
82
|
+
content: result.finalResponse ?? '',
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// write execution log to log artifact
|
|
86
|
+
const logContent = [
|
|
87
|
+
`# brain act execution log`,
|
|
88
|
+
'',
|
|
89
|
+
`## summary`,
|
|
90
|
+
`- termination: ${result.terminationReason}`,
|
|
91
|
+
`- iterations: ${result.iterationCount}`,
|
|
92
|
+
`- tokens: ${result.totalTokenUsage.totalTokens}`,
|
|
93
|
+
'',
|
|
94
|
+
`## final response`,
|
|
95
|
+
'```',
|
|
96
|
+
result.finalResponse ?? '(no response)',
|
|
97
|
+
'```',
|
|
98
|
+
'',
|
|
99
|
+
result.error ? `## error\n${result.error}` : '',
|
|
100
|
+
]
|
|
101
|
+
.filter(Boolean)
|
|
102
|
+
.join('\n');
|
|
103
|
+
|
|
104
|
+
await caller.context.stash.art.log.set({ content: logContent });
|
|
105
|
+
|
|
106
|
+
return {
|
|
107
|
+
input: { ask: caller.context.stash.ask },
|
|
108
|
+
output: { content: result.finalResponse ?? '' },
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* .what = executes agentic task completion via brain invocation
|
|
115
|
+
* .why = enables llm with tools to autonomously complete tasks
|
|
116
|
+
*/
|
|
117
|
+
export const stepAct = asStitcherFlat<StitcherAct>(
|
|
118
|
+
genStitchRoute({
|
|
119
|
+
slug: '@[brain]<act>',
|
|
120
|
+
readme: '@[brain]<act> -> agentic task completion',
|
|
121
|
+
sequence: [stepInvokeBrain],
|
|
122
|
+
}),
|
|
123
|
+
);
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getRoleRegistry = void 0;
|
|
4
4
|
const rhachet_1 = require("rhachet");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
5
|
+
const getBrainRole_1 = require("../roles/brain/getBrainRole");
|
|
6
|
+
const getRoleRegistry_readme_1 = require("../roles/getRoleRegistry.readme");
|
|
7
|
+
const getReviewerRole_1 = require("../roles/reviewer/getReviewerRole");
|
|
8
|
+
const getThinkerRole_1 = require("../roles/thinker/getThinkerRole");
|
|
8
9
|
/**
|
|
9
10
|
* .what = returns the core registry of predefined roles and skills
|
|
10
11
|
* .why =
|
|
@@ -14,7 +15,7 @@ const getThinkerRole_1 = require("./thinker/getThinkerRole");
|
|
|
14
15
|
const getRoleRegistry = () => new rhachet_1.RoleRegistry({
|
|
15
16
|
slug: 'bhrain',
|
|
16
17
|
readme: getRoleRegistry_readme_1.BHRAIN_REGISTRY_README,
|
|
17
|
-
roles: [getThinkerRole_1.ROLE_THINKER, getReviewerRole_1.ROLE_REVIEWER],
|
|
18
|
+
roles: [getThinkerRole_1.ROLE_THINKER, getReviewerRole_1.ROLE_REVIEWER, getBrainRole_1.ROLE_BRAIN],
|
|
18
19
|
});
|
|
19
20
|
exports.getRoleRegistry = getRoleRegistry;
|
|
20
21
|
//# sourceMappingURL=getRoleRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRoleRegistry.js","sourceRoot":"","sources":["../../src/roles/getRoleRegistry.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,
|
|
1
|
+
{"version":3,"file":"getRoleRegistry.js","sourceRoot":"","sources":["../../src/roles/getRoleRegistry.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAEvC,gEAA2D;AAC3D,8EAA2E;AAC3E,yEAAoE;AACpE,sEAAiE;AAEjE;;;;;GAKG;AACI,MAAM,eAAe,GAAG,GAAiB,EAAE,CAChD,IAAI,sBAAY,CAAC;IACf,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,+CAAsB;IAC9B,KAAK,EAAE,CAAC,6BAAY,EAAE,+BAAa,EAAE,yBAAU,CAAC;CACjD,CAAC,CAAC;AALQ,QAAA,eAAe,mBAKvB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# rules
|
|
2
|
+
|
|
3
|
+
## .what
|
|
4
|
+
|
|
5
|
+
rules are materialized feedback patterns that encode best practices and quality standards for a domain.
|
|
6
|
+
|
|
7
|
+
each rule represents a generalized insight extracted from real feedback - a distillation of lessons learned from actual experience.
|
|
8
|
+
|
|
9
|
+
## .why
|
|
10
|
+
|
|
11
|
+
rules enable consistent quality by making implicit knowledge explicit:
|
|
12
|
+
|
|
13
|
+
- capture hard-won lessons from feedback cycles
|
|
14
|
+
- prevent repeat mistakes across team members and projects
|
|
15
|
+
- provide a shared vocabulary for discussing quality
|
|
16
|
+
- enable automated review and validation
|
|
17
|
+
|
|
18
|
+
## .how rules relate to practices
|
|
19
|
+
|
|
20
|
+
practices organize rules by domain concern. each practice directory contains rules that apply to that domain. rules within the same practice share context and may reference each other.
|
|
21
|
+
|
|
22
|
+
the specific practice domains vary by project and role - there is no prescribed set of practices.
|
|
23
|
+
|
|
24
|
+
## .how rules materialize from feedback
|
|
25
|
+
|
|
26
|
+
feedback flows through a reflection process to become rules:
|
|
27
|
+
|
|
28
|
+
1. **feedback occurs** - human provides guidance on specific artifact
|
|
29
|
+
2. **pattern emerges** - similar feedback repeats across contexts
|
|
30
|
+
3. **rule crystallizes** - generalized rule extracted from pattern
|
|
31
|
+
4. **citation traces** - each rule links back to origin feedback
|
|
32
|
+
|
|
33
|
+
this materialization process ensures rules are grounded in real needs, not imagined requirements.
|
|
34
|
+
|
|
35
|
+
## .note
|
|
36
|
+
|
|
37
|
+
rules are living documents. as new feedback emerges, rules may be:
|
|
38
|
+
- refined (clarify edge cases)
|
|
39
|
+
- updated (incorporate new insights)
|
|
40
|
+
- deprecated (superseded by better understanding)
|
|
41
|
+
- split (single rule becomes multiple specific rules)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# rules citations
|
|
2
|
+
|
|
3
|
+
## .what
|
|
4
|
+
|
|
5
|
+
citations trace rules back to their origin feedback, providing provenance and context for why each rule exists.
|
|
6
|
+
|
|
7
|
+
## citation format
|
|
8
|
+
|
|
9
|
+
citations appear in the `## .citations` section of the `# deets` block:
|
|
10
|
+
|
|
11
|
+
```md
|
|
12
|
+
## .citations
|
|
13
|
+
|
|
14
|
+
> exact quote from the feedback that led to this rule
|
|
15
|
+
|
|
16
|
+
source: https://github.com/org/repo/blob/commit/path/to/feedback.md
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## github url format
|
|
20
|
+
|
|
21
|
+
citation urls must be permanent github links that include:
|
|
22
|
+
|
|
23
|
+
- organization/owner
|
|
24
|
+
- repository name
|
|
25
|
+
- commit hash or branch
|
|
26
|
+
- full file path
|
|
27
|
+
|
|
28
|
+
### url pattern
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
https://github.com/{org}/{repo}/blob/{ref}/{path}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### examples
|
|
35
|
+
|
|
36
|
+
```md
|
|
37
|
+
source: https://github.com/ehmpathy/declastruct-aws/blob/main/.behavior/v2025_12_05.aws-account-provision/5.1.execution.phase0_to_phaseN.v1.i1.md.%5Bfeedback%5D.v1.%5Bgiven%5D.by_human.md
|
|
38
|
+
|
|
39
|
+
source: https://github.com/acme/project/blob/abc123/.behavior/v2025_01_01.feature/execution.md.[feedback].v2.[given].by_human.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## quote inclusion
|
|
43
|
+
|
|
44
|
+
quotes capture the specific feedback that inspired the rule:
|
|
45
|
+
|
|
46
|
+
### single quote
|
|
47
|
+
|
|
48
|
+
```md
|
|
49
|
+
## .citations
|
|
50
|
+
|
|
51
|
+
> never hide errors in try/catch blocks without explicit handling
|
|
52
|
+
|
|
53
|
+
source: https://github.com/...
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### multiple quotes
|
|
57
|
+
|
|
58
|
+
when a rule consolidates multiple feedback instances:
|
|
59
|
+
|
|
60
|
+
```md
|
|
61
|
+
## .citations
|
|
62
|
+
|
|
63
|
+
> always use named arguments for readability
|
|
64
|
+
|
|
65
|
+
source: https://github.com/org/repo1/blob/.../feedback.v1.md
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
> positional args are a maintenance nightmare
|
|
70
|
+
|
|
71
|
+
source: https://github.com/org/repo2/blob/.../feedback.v3.md
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## provenance track
|
|
75
|
+
|
|
76
|
+
citations enable:
|
|
77
|
+
|
|
78
|
+
- **audit trail** - trace any rule back to real experience
|
|
79
|
+
- **context recovery** - understand the situation that prompted the rule
|
|
80
|
+
- **credibility** - rules grounded in actual feedback, not theory
|
|
81
|
+
- **evolution** - track how rules emerged and refined over time
|
|
82
|
+
|
|
83
|
+
## .note
|
|
84
|
+
|
|
85
|
+
- always use the full github url, not relative paths
|
|
86
|
+
- prefer permalinks with commit hashes for immutable references
|
|
87
|
+
- when feedback files are renamed or moved, update citations
|
|
88
|
+
- if origin feedback is deleted, preserve the quote with a note about the removed source
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# rules collocated
|
|
2
|
+
|
|
3
|
+
## .what
|
|
4
|
+
|
|
5
|
+
collocated documents are support materials that live alongside rule files, providing examples, references, and educational content.
|
|
6
|
+
|
|
7
|
+
## collocation pattern
|
|
8
|
+
|
|
9
|
+
support documents follow the rule file name with a suffix:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
rule.$directive.$topic.[suffix].$qualifier.md
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- **[suffix]** = document type: `[demo]`, `[ref]`, `[lesson]`
|
|
16
|
+
- **$qualifier** = distinguishing name for multiple documents
|
|
17
|
+
|
|
18
|
+
## suffix types
|
|
19
|
+
|
|
20
|
+
### [demo] - examples and demonstrations
|
|
21
|
+
|
|
22
|
+
concrete examples showing the rule in action:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
rule.forbid.error_hiding.[demo].try_catch.md
|
|
26
|
+
rule.prefer.early_returns.[demo].guard_clauses.md
|
|
27
|
+
rule.require.tests.[demo].integration.md
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
demos typically include:
|
|
31
|
+
- working code samples
|
|
32
|
+
- before/after comparisons
|
|
33
|
+
- annotated walkthroughs
|
|
34
|
+
|
|
35
|
+
### [ref] - reference materials
|
|
36
|
+
|
|
37
|
+
supporting documentation and external references:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
rule.require.domain_objects.[ref].package.md
|
|
41
|
+
rule.prefer.dependency_injection.[ref].article.md
|
|
42
|
+
rule.forbid.barrel_exports.[ref].circular_deps.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
refs typically include:
|
|
46
|
+
- links to external documentation
|
|
47
|
+
- package usage guides
|
|
48
|
+
- architectural diagrams
|
|
49
|
+
|
|
50
|
+
### [lesson] - educational content
|
|
51
|
+
|
|
52
|
+
teaching materials that explain concepts in depth:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
rule.require.narrative_flow.[lesson].code_paragraphs.md
|
|
56
|
+
rule.prefer.transformers.[lesson].pipelines_vs_conditionals.md
|
|
57
|
+
rule.require.idempotency.[lesson].findsert_upsert.md
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
lessons typically include:
|
|
61
|
+
- conceptual explanations
|
|
62
|
+
- mental models
|
|
63
|
+
- learning progressions
|
|
64
|
+
|
|
65
|
+
## directory layout
|
|
66
|
+
|
|
67
|
+
collocated documents appear alongside their parent rule:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
practices/code.prod/evolvable.procedures/
|
|
71
|
+
├── rule.forbid.positional_args.md
|
|
72
|
+
├── rule.forbid.positional_args.[demo].shell.md
|
|
73
|
+
├── rule.forbid.positional_args.[lesson].named_args.md
|
|
74
|
+
├── rule.require.input_context_pattern.md
|
|
75
|
+
├── rule.require.input_context_pattern.[ref].package.md
|
|
76
|
+
└── rule.require.dependency_injection.md
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## .when to collocate
|
|
80
|
+
|
|
81
|
+
collocate when:
|
|
82
|
+
- a rule benefits from concrete examples
|
|
83
|
+
- external resources clarify the rule
|
|
84
|
+
- deeper explanation aids understanding
|
|
85
|
+
- multiple examples illustrate different aspects
|
|
86
|
+
|
|
87
|
+
keep separate when:
|
|
88
|
+
- the document applies to multiple rules
|
|
89
|
+
- the content is general reference (put in briefs/knowledge/)
|
|
90
|
+
- the document is too large to be a quick supplement
|
|
91
|
+
|
|
92
|
+
## .note
|
|
93
|
+
|
|
94
|
+
- collocated documents inherit context from their parent rule
|
|
95
|
+
- multiple suffixed documents can exist for one rule
|
|
96
|
+
- qualifiers should be descriptive but concise
|
|
97
|
+
- load order: rule first, then demos, refs, lessons
|