rhachet-roles-ehmpathy 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/.test/genContextLogTrail.d.ts +2 -0
- package/dist/.test/genContextLogTrail.js +12 -0
- package/dist/.test/genContextLogTrail.js.map +1 -0
- package/dist/.test/genContextStitchTrail.d.ts +2 -0
- package/dist/.test/genContextStitchTrail.js +8 -0
- package/dist/.test/genContextStitchTrail.js.map +1 -0
- package/dist/.test/getContextOpenAI.d.ts +2 -0
- package/dist/.test/getContextOpenAI.js +18 -0
- package/dist/.test/getContextOpenAI.js.map +1 -0
- package/dist/contract/cases/mechanicGoalStubout.integration.test.d.ts +0 -0
- package/dist/contract/cases/mechanicGoalStubout.integration.test.js +2 -0
- package/dist/contract/cases/mechanicGoalStubout.integration.test.js.map +1 -0
- package/dist/contract/cases/mechanicStubFillout.integration.test.d.ts +0 -0
- package/dist/contract/cases/mechanicStubFillout.integration.test.js +2 -0
- package/dist/contract/cases/mechanicStubFillout.integration.test.js.map +1 -0
- package/dist/contract/commands/codegenBriefOptions.d.ts +1 -0
- package/dist/contract/commands/codegenBriefOptions.js +57 -0
- package/dist/contract/commands/codegenBriefOptions.js.map +1 -0
- package/dist/data/sdk/sdkOpenAi.d.ts +16 -0
- package/dist/data/sdk/sdkOpenAi.js +38 -0
- package/dist/data/sdk/sdkOpenAi.js.map +1 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/logic/artifact/genStepArtSet.d.ts +13 -0
- package/dist/logic/artifact/genStepArtSet.integration.test.d.ts +1 -0
- package/dist/logic/artifact/genStepArtSet.integration.test.js +142 -0
- package/dist/logic/artifact/genStepArtSet.integration.test.js.map +1 -0
- package/dist/logic/artifact/genStepArtSet.js +29 -0
- package/dist/logic/artifact/genStepArtSet.js.map +1 -0
- package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.d.ts +19 -0
- package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.integration.test.d.ts +1 -0
- package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.integration.test.js +97 -0
- package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.integration.test.js.map +1 -0
- package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.js +84 -0
- package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.js.map +1 -0
- package/dist/logic/roles/designer/getDesignerBrief.Options.codegen.d.ts +10 -0
- package/dist/logic/roles/designer/getDesignerBrief.Options.codegen.js +14 -0
- package/dist/logic/roles/designer/getDesignerBrief.Options.codegen.js.map +1 -0
- package/dist/logic/roles/designer/getDesignerBrief.d.ts +13 -0
- package/dist/logic/roles/designer/getDesignerBrief.js +21 -0
- package/dist/logic/roles/designer/getDesignerBrief.js.map +1 -0
- package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.d.ts +26 -0
- package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.integration.test.d.ts +1 -0
- package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.integration.test.js +77 -0
- package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.integration.test.js.map +1 -0
- package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.js +53 -0
- package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.js.map +1 -0
- package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.d.ts +22 -0
- package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.integration.test.d.ts +1 -0
- package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.integration.test.js +142 -0
- package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.integration.test.js.map +1 -0
- package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.js +55 -0
- package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.js.map +1 -0
- package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.d.ts +26 -0
- package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.integration.test.d.ts +1 -0
- package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.integration.test.js +71 -0
- package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.integration.test.js.map +1 -0
- package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.js +53 -0
- package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.js.map +1 -0
- package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.d.ts +22 -0
- package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.integration.test.d.ts +1 -0
- package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.integration.test.js +130 -0
- package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.integration.test.js.map +1 -0
- package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.js +48 -0
- package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.js.map +1 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.d.ts +17 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.integration.test.d.ts +1 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.integration.test.js +107 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.integration.test.js.map +1 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.js +76 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.js.map +1 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.imagine.ResourcesAndMechanisms.d.ts +17 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.imagine.ResourcesAndMechanisms.js +73 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.imagine.ResourcesAndMechanisms.js.map +1 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.d.ts +18 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.integration.test.d.ts +1 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.integration.test.js +73 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.integration.test.js.map +1 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.js +62 -0
- package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.js.map +1 -0
- package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.d.ts +16 -0
- package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.integration.test.d.ts +1 -0
- package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.integration.test.js +120 -0
- package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.integration.test.js.map +1 -0
- package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.js +69 -0
- package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.js.map +1 -0
- package/dist/logic/roles/ecologist/getEcologistBrief.Options.codegen.d.ts +10 -0
- package/dist/logic/roles/ecologist/getEcologistBrief.Options.codegen.js +39 -0
- package/dist/logic/roles/ecologist/getEcologistBrief.Options.codegen.js.map +1 -0
- package/dist/logic/roles/ecologist/getEcologistBrief.d.ts +13 -0
- package/dist/logic/roles/ecologist/getEcologistBrief.js +21 -0
- package/dist/logic/roles/ecologist/getEcologistBrief.js.map +1 -0
- package/dist/logic/roles/getRoleRegistry.d.ts +8 -0
- package/dist/logic/roles/getRoleRegistry.js +19 -0
- package/dist/logic/roles/getRoleRegistry.js.map +1 -0
- package/dist/logic/roles/getRoleRegistry.readme.d.ts +5 -0
- package/dist/logic/roles/getRoleRegistry.readme.js +75 -0
- package/dist/logic/roles/getRoleRegistry.readme.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/getRefOrgPatterns.d.ts +5 -0
- package/dist/logic/roles/mechanic/codediff/getRefOrgPatterns.js +22 -0
- package/dist/logic/roles/mechanic/codediff/getRefOrgPatterns.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.d.ts +34 -0
- package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.integration.test.d.ts +1 -0
- package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.integration.test.js +246 -0
- package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.integration.test.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.js +56 -0
- package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.d.ts +34 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.integration.test.d.ts +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.integration.test.js +144 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.integration.test.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.js +33 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.d.ts +34 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.integration.test.d.ts +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.integration.test.js +138 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.integration.test.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.js +49 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewBehavior.d.ts +28 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewBehavior.js +35 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewBehavior.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.d.ts +28 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.integration.test.d.ts +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.integration.test.js +294 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.integration.test.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.js +44 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.d.ts +38 -0
- package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.integration.test.d.ts +1 -0
- package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.integration.test.js +162 -0
- package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.integration.test.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.js +32 -0
- package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.d.ts +56 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.integration.test.d.ts +1 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.integration.test.js +169 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.integration.test.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.js +30 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.d.ts +53 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.integration.test.d.ts +1 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.integration.test.js +203 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.integration.test.js.map +1 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.js +72 -0
- package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.js.map +1 -0
- package/dist/logic/roles/mechanic/getMechanicBrief.Options.codegen.d.ts +10 -0
- package/dist/logic/roles/mechanic/getMechanicBrief.Options.codegen.js +35 -0
- package/dist/logic/roles/mechanic/getMechanicBrief.Options.codegen.js.map +1 -0
- package/dist/logic/roles/mechanic/getMechanicBrief.d.ts +13 -0
- package/dist/logic/roles/mechanic/getMechanicBrief.js +21 -0
- package/dist/logic/roles/mechanic/getMechanicBrief.js.map +1 -0
- package/dist/logic/roles/mechanic/getMechanicRole.d.ts +2 -0
- package/dist/logic/roles/mechanic/getMechanicRole.js +157 -0
- package/dist/logic/roles/mechanic/getMechanicRole.js.map +1 -0
- package/dist/logic/roles/mechanic/study/routeStudyAsk.d.ts +19 -0
- package/dist/logic/roles/mechanic/study/routeStudyAsk.integration.test.d.ts +1 -0
- package/dist/logic/roles/mechanic/study/routeStudyAsk.integration.test.js +98 -0
- package/dist/logic/roles/mechanic/study/routeStudyAsk.integration.test.js.map +1 -0
- package/dist/logic/roles/mechanic/study/routeStudyAsk.js +30 -0
- package/dist/logic/roles/mechanic/study/routeStudyAsk.js.map +1 -0
- package/package.json +95 -0
- package/readme.md +110 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { GStitcher, Threads, RoleContext } from 'rhachet';
|
|
2
|
+
import { Artifact } from 'rhachet-artifact';
|
|
3
|
+
import { GitFile } from 'rhachet-artifact-git';
|
|
4
|
+
import { ContextOpenAI } from '../../../../data/sdk/sdkOpenAi';
|
|
5
|
+
interface ThreadsDesired extends Threads<{
|
|
6
|
+
judge: RoleContext<'judge', {
|
|
7
|
+
art: {
|
|
8
|
+
judgement: Artifact<typeof GitFile>;
|
|
9
|
+
};
|
|
10
|
+
}>;
|
|
11
|
+
critic: RoleContext<'critic', {
|
|
12
|
+
art: {
|
|
13
|
+
feedback: Artifact<typeof GitFile>;
|
|
14
|
+
feedbackCodestyle: Artifact<typeof GitFile>;
|
|
15
|
+
};
|
|
16
|
+
org: {
|
|
17
|
+
patterns: Artifact<typeof GitFile>[];
|
|
18
|
+
};
|
|
19
|
+
}>;
|
|
20
|
+
artist: RoleContext<'artist', {
|
|
21
|
+
ask: string;
|
|
22
|
+
art: {
|
|
23
|
+
inflight: Artifact<typeof GitFile>;
|
|
24
|
+
};
|
|
25
|
+
org: {
|
|
26
|
+
patterns: Artifact<typeof GitFile>[];
|
|
27
|
+
};
|
|
28
|
+
scene: {
|
|
29
|
+
coderefs: Artifact<typeof GitFile>[];
|
|
30
|
+
};
|
|
31
|
+
}>;
|
|
32
|
+
student: RoleContext<'student', {
|
|
33
|
+
art: {
|
|
34
|
+
claims: Artifact<typeof GitFile>;
|
|
35
|
+
};
|
|
36
|
+
}>;
|
|
37
|
+
}> {
|
|
38
|
+
}
|
|
39
|
+
export type RouteMechanicCodeIterateStitcher = GStitcher<ThreadsDesired, ContextOpenAI & GStitcher['context'], {
|
|
40
|
+
content: string;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* .what = a route where a mechanic's threads iterate on code
|
|
44
|
+
* .how.contract
|
|
45
|
+
* - input = thread(student) w/ art.claims
|
|
46
|
+
* - output =
|
|
47
|
+
* - thread(artist) w/ art.inflight
|
|
48
|
+
* - thread(critic) w/ art.feedback
|
|
49
|
+
* - thread(judge) w/ art.judgement
|
|
50
|
+
* .how.procedure =
|
|
51
|
+
* - mechanic.artist diffs the code
|
|
52
|
+
* - mechanic.critic reviews the code
|
|
53
|
+
* - mechanic.judge decides release readiness
|
|
54
|
+
*/
|
|
55
|
+
export declare const routeMechanicCodeIterate: import("rhachet").Stitcher<RouteMechanicCodeIterateStitcher>;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// routeMechanicCodeIterate.integration.test.ts
|
|
4
|
+
const rhachet_1 = require("rhachet");
|
|
5
|
+
const rhachet_2 = require("rhachet");
|
|
6
|
+
const rhachet_artifact_git_1 = require("rhachet-artifact-git");
|
|
7
|
+
const test_fns_1 = require("test-fns");
|
|
8
|
+
const genContextLogTrail_1 = require("../../../../.test/genContextLogTrail");
|
|
9
|
+
const genContextStitchTrail_1 = require("../../../../.test/genContextStitchTrail");
|
|
10
|
+
const getContextOpenAI_1 = require("../../../../.test/getContextOpenAI");
|
|
11
|
+
const getRefOrgPatterns_1 = require("./getRefOrgPatterns");
|
|
12
|
+
const routeMechanicCodeIterate_1 = require("./routeMechanicCodeIterate");
|
|
13
|
+
describe('routeMechanicCodeIterate', () => {
|
|
14
|
+
const context = {
|
|
15
|
+
...(0, genContextLogTrail_1.genContextLogTrail)(),
|
|
16
|
+
...(0, genContextStitchTrail_1.genContextStitchTrail)(),
|
|
17
|
+
...(0, getContextOpenAI_1.getContextOpenAI)(),
|
|
18
|
+
};
|
|
19
|
+
const route = routeMechanicCodeIterate_1.routeMechanicCodeIterate;
|
|
20
|
+
(0, test_fns_1.given)('we want to multiply', () => {
|
|
21
|
+
const claimsArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
22
|
+
uri: __dirname + '/.test/multiply.claims.md',
|
|
23
|
+
}, { access: 'readonly' });
|
|
24
|
+
(0, test_fns_1.given)('code with known blockers', () => {
|
|
25
|
+
const inflightArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
26
|
+
uri: __dirname +
|
|
27
|
+
'/.temp/mechanicCodeIterate/multiply.hasblockers.inflight.ts',
|
|
28
|
+
});
|
|
29
|
+
const feedbackArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
30
|
+
uri: __dirname +
|
|
31
|
+
'/.temp/mechanicCodeIterate/multiply.hasblockers.feedback.json',
|
|
32
|
+
});
|
|
33
|
+
const feedbackCodestyleArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
34
|
+
uri: __dirname +
|
|
35
|
+
'/.temp/mechanicCodeIterate/multiply.hasblockers.feedback.codestyle.json',
|
|
36
|
+
});
|
|
37
|
+
const judgementArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
38
|
+
uri: __dirname +
|
|
39
|
+
'/.temp/mechanicCodeIterate/multiply.hasblockers.judgement.json',
|
|
40
|
+
});
|
|
41
|
+
beforeEach(async () => {
|
|
42
|
+
await inflightArt.set({
|
|
43
|
+
content: 'export const multiply=(a,b)=>a*b;',
|
|
44
|
+
});
|
|
45
|
+
await feedbackArt.del();
|
|
46
|
+
await judgementArt.del();
|
|
47
|
+
});
|
|
48
|
+
(0, test_fns_1.when)('executing the mechanic iterate route', () => {
|
|
49
|
+
const threads = (0, test_fns_1.usePrep)(async () => ({
|
|
50
|
+
artist: await (0, rhachet_2.enrollThread)({
|
|
51
|
+
role: 'artist',
|
|
52
|
+
stash: {
|
|
53
|
+
ask: 'multiply two numbers',
|
|
54
|
+
art: { inflight: inflightArt },
|
|
55
|
+
org: { patterns: [] },
|
|
56
|
+
scene: { coderefs: [inflightArt] },
|
|
57
|
+
},
|
|
58
|
+
}),
|
|
59
|
+
critic: await (0, rhachet_2.enrollThread)({
|
|
60
|
+
role: 'critic',
|
|
61
|
+
stash: {
|
|
62
|
+
art: {
|
|
63
|
+
feedback: feedbackArt,
|
|
64
|
+
feedbackCodestyle: feedbackCodestyleArt,
|
|
65
|
+
},
|
|
66
|
+
org: {
|
|
67
|
+
patterns: await (0, getRefOrgPatterns_1.getRefOrgPatterns)({ purpose: 'produce' }),
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
}),
|
|
71
|
+
student: await (0, rhachet_2.enrollThread)({
|
|
72
|
+
role: 'student',
|
|
73
|
+
stash: { art: { claims: claimsArt } },
|
|
74
|
+
}),
|
|
75
|
+
judge: await (0, rhachet_2.enrollThread)({
|
|
76
|
+
role: 'judge',
|
|
77
|
+
stash: { art: { judgement: judgementArt } },
|
|
78
|
+
}),
|
|
79
|
+
}));
|
|
80
|
+
(0, test_fns_1.then)('produces feedback and a judgement that blocks release', async () => {
|
|
81
|
+
const result = await (0, rhachet_1.enweaveOneStitcher)({ stitcher: route, threads }, context);
|
|
82
|
+
const judgement = await judgementArt.get();
|
|
83
|
+
const feedback = await feedbackArt.get();
|
|
84
|
+
const parsed = JSON.parse(judgement?.content ?? '{}');
|
|
85
|
+
expect(parsed.releasable).toBe(false);
|
|
86
|
+
expect(parsed.blockers).toBeGreaterThan(0);
|
|
87
|
+
expect(parsed.grade).toBeDefined();
|
|
88
|
+
expect(feedback?.content).toMatch(/blocker/i);
|
|
89
|
+
expect(result.threads.judge.stitches.length).toBeGreaterThan(0);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
test_fns_1.given.only('well-structured code without blockers', () => {
|
|
94
|
+
const inflightArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
95
|
+
uri: __dirname +
|
|
96
|
+
'/.temp/mechanicCodeIterate/multiply.nonblockers.inflight.ts',
|
|
97
|
+
});
|
|
98
|
+
const feedbackArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
99
|
+
uri: __dirname +
|
|
100
|
+
'/.temp/mechanicCodeIterate/multiply.nonblockers.feedback.json',
|
|
101
|
+
});
|
|
102
|
+
const feedbackCodestyleArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
103
|
+
uri: __dirname +
|
|
104
|
+
'/.temp/mechanicCodeIterate/multiply.nonblockers.feedback.codestyle.json',
|
|
105
|
+
});
|
|
106
|
+
const judgementArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
107
|
+
uri: __dirname +
|
|
108
|
+
'/.temp/mechanicCodeIterate/multiply.nonblockers.judgement.json',
|
|
109
|
+
});
|
|
110
|
+
beforeEach(async () => {
|
|
111
|
+
await inflightArt.set({
|
|
112
|
+
content: `
|
|
113
|
+
export const multiply = ({ a, b }: { a: number, b: number }): number => {
|
|
114
|
+
return a * b;
|
|
115
|
+
};`,
|
|
116
|
+
});
|
|
117
|
+
await feedbackArt.del();
|
|
118
|
+
await judgementArt.del();
|
|
119
|
+
});
|
|
120
|
+
(0, test_fns_1.when)('executing the mechanic iterate route', () => {
|
|
121
|
+
const threads = (0, test_fns_1.usePrep)(async () => ({
|
|
122
|
+
artist: await (0, rhachet_2.enrollThread)({
|
|
123
|
+
role: 'artist',
|
|
124
|
+
stash: {
|
|
125
|
+
ask: 'multiply two numbers',
|
|
126
|
+
art: { inflight: inflightArt },
|
|
127
|
+
org: {
|
|
128
|
+
patterns: (0, getRefOrgPatterns_1.getRefOrgPatterns)({ purpose: 'produce' }),
|
|
129
|
+
},
|
|
130
|
+
scene: { coderefs: [inflightArt] },
|
|
131
|
+
},
|
|
132
|
+
}),
|
|
133
|
+
critic: await (0, rhachet_2.enrollThread)({
|
|
134
|
+
role: 'critic',
|
|
135
|
+
stash: {
|
|
136
|
+
art: {
|
|
137
|
+
feedback: feedbackArt,
|
|
138
|
+
feedbackCodestyle: feedbackCodestyleArt,
|
|
139
|
+
},
|
|
140
|
+
org: {
|
|
141
|
+
patterns: (0, getRefOrgPatterns_1.getRefOrgPatterns)({ purpose: 'produce' }),
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
}),
|
|
145
|
+
student: await (0, rhachet_2.enrollThread)({
|
|
146
|
+
role: 'student',
|
|
147
|
+
stash: { art: { claims: claimsArt } },
|
|
148
|
+
}),
|
|
149
|
+
judge: await (0, rhachet_2.enrollThread)({
|
|
150
|
+
role: 'judge',
|
|
151
|
+
stash: { art: { judgement: judgementArt } },
|
|
152
|
+
}),
|
|
153
|
+
}));
|
|
154
|
+
(0, test_fns_1.then)('produces positive feedback and a releasable judgement', async () => {
|
|
155
|
+
const result = await (0, rhachet_1.enweaveOneStitcher)({ stitcher: route, threads }, context);
|
|
156
|
+
const judgement = await judgementArt.get();
|
|
157
|
+
const feedback = await feedbackArt.get();
|
|
158
|
+
const parsed = JSON.parse(judgement?.content ?? '{}');
|
|
159
|
+
expect(parsed.releasable).toBe(true);
|
|
160
|
+
expect(parsed.blockers).toBe(0);
|
|
161
|
+
expect(parsed.grade).toBeDefined();
|
|
162
|
+
expect(feedback?.content).not.toMatch(/blocker/i);
|
|
163
|
+
expect(result.threads.judge.stitches.length).toBeGreaterThan(0);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
//# sourceMappingURL=routeMechanicCodeIterate.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeMechanicCodeIterate.integration.test.js","sourceRoot":"","sources":["../../../../../src/logic/roles/mechanic/codediff/routeMechanicCodeIterate.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.routeMechanicCodeIterate = void 0;
|
|
4
|
+
const rhachet_1 = require("rhachet");
|
|
5
|
+
const routeArtistCodeDiff_1 = require("./routeArtistCodeDiff");
|
|
6
|
+
const routeCriticCodeReview_1 = require("./routeCriticCodeReview");
|
|
7
|
+
const routeJudgeReleasable_1 = require("./routeJudgeReleasable");
|
|
8
|
+
/**
|
|
9
|
+
* .what = a route where a mechanic's threads iterate on code
|
|
10
|
+
* .how.contract
|
|
11
|
+
* - input = thread(student) w/ art.claims
|
|
12
|
+
* - output =
|
|
13
|
+
* - thread(artist) w/ art.inflight
|
|
14
|
+
* - thread(critic) w/ art.feedback
|
|
15
|
+
* - thread(judge) w/ art.judgement
|
|
16
|
+
* .how.procedure =
|
|
17
|
+
* - mechanic.artist diffs the code
|
|
18
|
+
* - mechanic.critic reviews the code
|
|
19
|
+
* - mechanic.judge decides release readiness
|
|
20
|
+
*/
|
|
21
|
+
exports.routeMechanicCodeIterate = (0, rhachet_1.asStitcherFlat)((0, rhachet_1.genStitchRoute)({
|
|
22
|
+
slug: '[mechanic]<code><iterate>',
|
|
23
|
+
readme: '@[artist]<diff> -> @[critic]<review> -> @[judge]<release>',
|
|
24
|
+
sequence: [
|
|
25
|
+
routeArtistCodeDiff_1.routeArtistCodeDiff,
|
|
26
|
+
routeCriticCodeReview_1.routeCriticCodeReview,
|
|
27
|
+
routeJudgeReleasable_1.routeJudgeReleasable,
|
|
28
|
+
],
|
|
29
|
+
}));
|
|
30
|
+
//# sourceMappingURL=routeMechanicCodeIterate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeMechanicCodeIterate.js","sourceRoot":"","sources":["../../../../../src/logic/roles/mechanic/codediff/routeMechanicCodeIterate.ts"],"names":[],"mappings":";;;AAAA,qCAMiB;AAKjB,+DAA4D;AAC5D,mEAAgE;AAChE,iEAA8D;AA+C9D;;;;;;;;;;;;GAYG;AACU,QAAA,wBAAwB,GACnC,IAAA,wBAAc,EACZ,IAAA,wBAAc,EAAC;IACb,IAAI,EAAE,2BAA2B;IACjC,MAAM,EAAE,2DAA2D;IACnE,QAAQ,EAAE;QACR,yCAAmB;QACnB,6CAAqB;QACrB,2CAAoB;KACrB;CACF,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { GStitcher, Threads, RoleContext } from 'rhachet';
|
|
2
|
+
import { Artifact } from 'rhachet-artifact';
|
|
3
|
+
import { GitFile } from 'rhachet-artifact-git';
|
|
4
|
+
import { Empty } from 'type-fns';
|
|
5
|
+
import { ContextOpenAI } from '../../../../data/sdk/sdkOpenAi';
|
|
6
|
+
interface ThreadsDesired extends Threads<{
|
|
7
|
+
mechanic: RoleContext<'mechanic', Empty>;
|
|
8
|
+
judge: RoleContext<'judge', {
|
|
9
|
+
art: {
|
|
10
|
+
judgement: Artifact<typeof GitFile>;
|
|
11
|
+
};
|
|
12
|
+
}>;
|
|
13
|
+
critic: RoleContext<'critic', {
|
|
14
|
+
art: {
|
|
15
|
+
feedback: Artifact<typeof GitFile>;
|
|
16
|
+
feedbackCodestyle: Artifact<typeof GitFile>;
|
|
17
|
+
};
|
|
18
|
+
org: {
|
|
19
|
+
patterns: Artifact<typeof GitFile>[];
|
|
20
|
+
};
|
|
21
|
+
}>;
|
|
22
|
+
artist: RoleContext<'artist', {
|
|
23
|
+
ask: string;
|
|
24
|
+
art: {
|
|
25
|
+
inflight: Artifact<typeof GitFile>;
|
|
26
|
+
};
|
|
27
|
+
org: {
|
|
28
|
+
patterns: Artifact<typeof GitFile>[];
|
|
29
|
+
};
|
|
30
|
+
scene: {
|
|
31
|
+
coderefs: Artifact<typeof GitFile>[];
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
student: RoleContext<'student', {
|
|
35
|
+
art: {
|
|
36
|
+
claims: Artifact<typeof GitFile>;
|
|
37
|
+
};
|
|
38
|
+
}>;
|
|
39
|
+
}> {
|
|
40
|
+
}
|
|
41
|
+
export type RouteMechanicCodeProposeStitcher = GStitcher<ThreadsDesired, GStitcher['context'] & ContextOpenAI, Artifact<typeof GitFile>>;
|
|
42
|
+
/**
|
|
43
|
+
* .what = a route where a mechanic's threads cyclically iterate on code until releasable
|
|
44
|
+
* .how.contract
|
|
45
|
+
* - input = thread(student) w/ art.claims
|
|
46
|
+
* - output =
|
|
47
|
+
* - thread(mechanic) w/ art.proposal
|
|
48
|
+
* .how.procedure =
|
|
49
|
+
* - mechanic iterates w/ .artist,.critic,.judge in a cycle until judgement.releasable=true
|
|
50
|
+
* - mechanic then exposes proposal artifact as the output stitch
|
|
51
|
+
*/
|
|
52
|
+
export declare const routeMechanicCodePropose: import("rhachet").Stitcher<RouteMechanicCodeProposeStitcher>;
|
|
53
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const uni_time_1 = require("@ehmpathy/uni-time");
|
|
4
|
+
const rhachet_1 = require("rhachet");
|
|
5
|
+
const rhachet_artifact_git_1 = require("rhachet-artifact-git");
|
|
6
|
+
const test_fns_1 = require("test-fns");
|
|
7
|
+
const genContextLogTrail_1 = require("../../../../.test/genContextLogTrail");
|
|
8
|
+
const genContextStitchTrail_1 = require("../../../../.test/genContextStitchTrail");
|
|
9
|
+
const getContextOpenAI_1 = require("../../../../.test/getContextOpenAI");
|
|
10
|
+
const getMechanicBrief_1 = require("../getMechanicBrief");
|
|
11
|
+
const getRefOrgPatterns_1 = require("./getRefOrgPatterns");
|
|
12
|
+
const routeMechanicCodePropose_1 = require("./routeMechanicCodePropose");
|
|
13
|
+
jest.setTimeout((0, uni_time_1.toMilliseconds)({ minutes: 5 }));
|
|
14
|
+
describe('routeMechanicCodePropose', () => {
|
|
15
|
+
const context = {
|
|
16
|
+
...(0, genContextLogTrail_1.genContextLogTrail)(),
|
|
17
|
+
...(0, genContextStitchTrail_1.genContextStitchTrail)(),
|
|
18
|
+
...(0, getContextOpenAI_1.getContextOpenAI)(),
|
|
19
|
+
};
|
|
20
|
+
const route = routeMechanicCodePropose_1.routeMechanicCodePropose;
|
|
21
|
+
(0, test_fns_1.given)('we want to multiply two numbers', () => {
|
|
22
|
+
const claimsArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
23
|
+
uri: __dirname + '/.test/multiply.claims.md',
|
|
24
|
+
}, { access: 'readonly' });
|
|
25
|
+
(0, test_fns_1.given)('well-structured code without blockers', () => {
|
|
26
|
+
const inflightArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
27
|
+
uri: __dirname + '/.temp/mechanicCodePropose/fromgood.inflight.ts',
|
|
28
|
+
});
|
|
29
|
+
const feedbackArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
30
|
+
uri: __dirname + '/.temp/mechanicCodePropose/fromgood.feedback.json',
|
|
31
|
+
});
|
|
32
|
+
const feedbackCodestyleArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
33
|
+
uri: __dirname +
|
|
34
|
+
'/.temp/mechanicCodePropose/fromgood.feedback.codestyle.json',
|
|
35
|
+
});
|
|
36
|
+
const judgementArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
37
|
+
uri: __dirname + '/.temp/mechanicCodePropose/fromgood.judgement.json',
|
|
38
|
+
});
|
|
39
|
+
const coderefArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
40
|
+
uri: __dirname + '/.temp/mechanicCodePropose/fromgood.coderef.ts',
|
|
41
|
+
});
|
|
42
|
+
beforeEach(async () => {
|
|
43
|
+
await inflightArt.set({
|
|
44
|
+
content: `
|
|
45
|
+
export const multiply = ({ a, b }: { a: number, b: number }): number => {
|
|
46
|
+
return a * b;
|
|
47
|
+
};`,
|
|
48
|
+
});
|
|
49
|
+
await feedbackArt.del();
|
|
50
|
+
await judgementArt.del();
|
|
51
|
+
await coderefArt.set({
|
|
52
|
+
content: `
|
|
53
|
+
/**
|
|
54
|
+
* .what = mechanism to subtract two numbers
|
|
55
|
+
* .why = consistent mathematics
|
|
56
|
+
*/
|
|
57
|
+
export const subtract = ({ a, b }: { a: number, b: number }): number => {
|
|
58
|
+
return a * b;
|
|
59
|
+
};`,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
(0, test_fns_1.when)('executing the full propose route', () => {
|
|
63
|
+
const threads = (0, test_fns_1.usePrep)(async () => ({
|
|
64
|
+
artist: await (0, rhachet_1.enrollThread)({
|
|
65
|
+
role: 'artist',
|
|
66
|
+
stash: {
|
|
67
|
+
ask: 'multiply two numbers',
|
|
68
|
+
art: { inflight: inflightArt },
|
|
69
|
+
org: {
|
|
70
|
+
patterns: (0, getRefOrgPatterns_1.getRefOrgPatterns)({ purpose: 'produce' }),
|
|
71
|
+
},
|
|
72
|
+
scene: { coderefs: [coderefArt] },
|
|
73
|
+
},
|
|
74
|
+
inherit: {
|
|
75
|
+
traits: [(0, getMechanicBrief_1.getMechanicBrief)('style.compressed.md')],
|
|
76
|
+
},
|
|
77
|
+
}),
|
|
78
|
+
critic: await (0, rhachet_1.enrollThread)({
|
|
79
|
+
role: 'critic',
|
|
80
|
+
stash: {
|
|
81
|
+
art: {
|
|
82
|
+
feedback: feedbackArt,
|
|
83
|
+
feedbackCodestyle: feedbackCodestyleArt,
|
|
84
|
+
},
|
|
85
|
+
org: {
|
|
86
|
+
patterns: (0, getRefOrgPatterns_1.getRefOrgPatterns)({ purpose: 'produce' }),
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
inherit: {
|
|
90
|
+
traits: [(0, getMechanicBrief_1.getMechanicBrief)('style.compressed.md')],
|
|
91
|
+
},
|
|
92
|
+
}),
|
|
93
|
+
student: await (0, rhachet_1.enrollThread)({
|
|
94
|
+
role: 'student',
|
|
95
|
+
stash: { art: { claims: claimsArt } },
|
|
96
|
+
}),
|
|
97
|
+
judge: await (0, rhachet_1.enrollThread)({
|
|
98
|
+
role: 'judge',
|
|
99
|
+
stash: { art: { judgement: judgementArt } },
|
|
100
|
+
}),
|
|
101
|
+
mechanic: await (0, rhachet_1.enrollThread)({
|
|
102
|
+
role: 'mechanic',
|
|
103
|
+
stash: {},
|
|
104
|
+
}),
|
|
105
|
+
}));
|
|
106
|
+
(0, test_fns_1.then)('produces a final proposal', async () => {
|
|
107
|
+
const result = await (0, rhachet_1.enweaveOneStitcher)({ stitcher: route, threads }, context);
|
|
108
|
+
const finalProposal = await result.stitch.output
|
|
109
|
+
.get()
|
|
110
|
+
.expect('isPresent');
|
|
111
|
+
const judgement = await judgementArt.get();
|
|
112
|
+
const parsed = JSON.parse(judgement?.content ?? '{}');
|
|
113
|
+
expect(parsed.releasable).toBe(true);
|
|
114
|
+
expect(parsed.blockers).toBe(0);
|
|
115
|
+
expect(parsed.grade).toBeDefined();
|
|
116
|
+
expect(finalProposal?.content).toContain('multiply');
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
(0, test_fns_1.given)('empty file input', () => {
|
|
121
|
+
const inflightArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
122
|
+
uri: __dirname + '/.temp/mechanicCodePropose/fromempty.inflight.ts',
|
|
123
|
+
});
|
|
124
|
+
const feedbackArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
125
|
+
uri: __dirname + '/.temp/mechanicCodePropose/fromempty.feedback.json',
|
|
126
|
+
});
|
|
127
|
+
const feedbackCodestyleArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
128
|
+
uri: __dirname +
|
|
129
|
+
'/.temp/mechanicCodePropose/fromempty.feedback.codestyle.json',
|
|
130
|
+
});
|
|
131
|
+
const judgementArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
132
|
+
uri: __dirname + '/.temp/mechanicCodePropose/fromempty.judgement.json',
|
|
133
|
+
});
|
|
134
|
+
beforeEach(async () => {
|
|
135
|
+
await inflightArt.del();
|
|
136
|
+
await feedbackArt.del();
|
|
137
|
+
await feedbackCodestyleArt.del();
|
|
138
|
+
await judgementArt.del();
|
|
139
|
+
});
|
|
140
|
+
(0, test_fns_1.when)('executing the full propose route', () => {
|
|
141
|
+
const threads = (0, test_fns_1.usePrep)(async () => ({
|
|
142
|
+
artist: await (0, rhachet_1.enrollThread)({
|
|
143
|
+
role: 'artist',
|
|
144
|
+
stash: {
|
|
145
|
+
ask: 'multiply two numbers',
|
|
146
|
+
art: { inflight: inflightArt },
|
|
147
|
+
org: {
|
|
148
|
+
patterns: (0, getRefOrgPatterns_1.getRefOrgPatterns)({ purpose: 'produce' }),
|
|
149
|
+
},
|
|
150
|
+
scene: { coderefs: [] },
|
|
151
|
+
},
|
|
152
|
+
inherit: {
|
|
153
|
+
traits: [(0, getMechanicBrief_1.getMechanicBrief)('style.compressed.md')],
|
|
154
|
+
},
|
|
155
|
+
}),
|
|
156
|
+
critic: await (0, rhachet_1.enrollThread)({
|
|
157
|
+
role: 'critic',
|
|
158
|
+
stash: {
|
|
159
|
+
art: {
|
|
160
|
+
feedback: feedbackArt,
|
|
161
|
+
feedbackCodestyle: feedbackCodestyleArt,
|
|
162
|
+
},
|
|
163
|
+
org: {
|
|
164
|
+
patterns: (0, getRefOrgPatterns_1.getRefOrgPatterns)({ purpose: 'produce' }),
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
inherit: {
|
|
168
|
+
traits: [(0, getMechanicBrief_1.getMechanicBrief)('style.compressed.md')],
|
|
169
|
+
},
|
|
170
|
+
}),
|
|
171
|
+
student: await (0, rhachet_1.enrollThread)({
|
|
172
|
+
role: 'student',
|
|
173
|
+
stash: { art: { claims: claimsArt } },
|
|
174
|
+
}),
|
|
175
|
+
judge: await (0, rhachet_1.enrollThread)({
|
|
176
|
+
role: 'judge',
|
|
177
|
+
stash: { art: { judgement: judgementArt } },
|
|
178
|
+
}),
|
|
179
|
+
mechanic: await (0, rhachet_1.enrollThread)({
|
|
180
|
+
role: 'mechanic',
|
|
181
|
+
stash: {},
|
|
182
|
+
}),
|
|
183
|
+
}));
|
|
184
|
+
(0, test_fns_1.then)('produces a final proposal', async () => {
|
|
185
|
+
const result = await (0, rhachet_1.enweaveOneStitcher)({ stitcher: route, threads }, context);
|
|
186
|
+
const proposal = await result.stitch.output.get().expect('isPresent');
|
|
187
|
+
const judgement = await judgementArt.get().expect('isPresent');
|
|
188
|
+
const parsed = JSON.parse(judgement.content);
|
|
189
|
+
expect(parsed.releasable).toBe(true);
|
|
190
|
+
expect(parsed.blockers).toBe(0);
|
|
191
|
+
expect(parsed.grade).toBeDefined();
|
|
192
|
+
expect(proposal.content).toContain('multiply');
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
(0, test_fns_1.given)('we want to get schedulable appointment windows for a pro', () => {
|
|
198
|
+
const claimsArt = (0, rhachet_artifact_git_1.genArtifactGitFile)({
|
|
199
|
+
uri: __dirname + '/.test/getSchedulableWindows.claims.md',
|
|
200
|
+
}, { access: 'readonly' });
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
//# sourceMappingURL=routeMechanicCodePropose.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeMechanicCodePropose.integration.test.js","sourceRoot":"","sources":["../../../../../src/logic/roles/mechanic/codediff/routeMechanicCodePropose.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.routeMechanicCodePropose = void 0;
|
|
4
|
+
const rhachet_1 = require("rhachet");
|
|
5
|
+
const serde_fns_1 = require("serde-fns");
|
|
6
|
+
const routeMechanicCodeIterate_1 = require("./routeMechanicCodeIterate");
|
|
7
|
+
/**
|
|
8
|
+
* .what = looks at judge.judgement to decide whether to release
|
|
9
|
+
*/
|
|
10
|
+
const stepDecideRelease = new rhachet_1.StitchStepCompute({
|
|
11
|
+
form: 'COMPUTE',
|
|
12
|
+
readme: null,
|
|
13
|
+
slug: `[mechanic]<release?>`,
|
|
14
|
+
stitchee: 'judge',
|
|
15
|
+
invoke: async ({ threads }) => {
|
|
16
|
+
const judgement = (0, serde_fns_1.deSerialJSON)(serde_fns_1.isSerialJSON.assure((await threads.judge.context.stash.art.judgement
|
|
17
|
+
.get()
|
|
18
|
+
.expect('isPresent')).content));
|
|
19
|
+
return {
|
|
20
|
+
input: { judgement },
|
|
21
|
+
output: {
|
|
22
|
+
choice: judgement.releasable === true ? 'release' : 'repeat',
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* .what = cycles through iterate until releaseable
|
|
29
|
+
*/
|
|
30
|
+
const cycleMechanicCodeRelease = (0, rhachet_1.asStitcher)((0, rhachet_1.genStitchCycle)({
|
|
31
|
+
slug: '[mechanic]<code><release>',
|
|
32
|
+
readme: '@[mechanic]<iterate> -> <releaseable?> -> { yes: release, no: repeat }',
|
|
33
|
+
repeatee: routeMechanicCodeIterate_1.routeMechanicCodeIterate,
|
|
34
|
+
decider: stepDecideRelease,
|
|
35
|
+
halter: {
|
|
36
|
+
threshold: {
|
|
37
|
+
duration: { minutes: 5 },
|
|
38
|
+
repetitions: 5, // should be resolvable within 5 min
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
}));
|
|
42
|
+
/**
|
|
43
|
+
* .what = looks at the artist artifact to declare the proposal as the output stitch
|
|
44
|
+
*/
|
|
45
|
+
const stepDeclareProposal = new rhachet_1.StitchStepCompute({
|
|
46
|
+
form: 'COMPUTE',
|
|
47
|
+
readme: null,
|
|
48
|
+
slug: `[mechanic]<declare>`,
|
|
49
|
+
stitchee: 'mechanic',
|
|
50
|
+
invoke: async ({ threads }) => {
|
|
51
|
+
return {
|
|
52
|
+
input: null,
|
|
53
|
+
output: threads.artist.context.stash.art.inflight,
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* .what = a route where a mechanic's threads cyclically iterate on code until releasable
|
|
59
|
+
* .how.contract
|
|
60
|
+
* - input = thread(student) w/ art.claims
|
|
61
|
+
* - output =
|
|
62
|
+
* - thread(mechanic) w/ art.proposal
|
|
63
|
+
* .how.procedure =
|
|
64
|
+
* - mechanic iterates w/ .artist,.critic,.judge in a cycle until judgement.releasable=true
|
|
65
|
+
* - mechanic then exposes proposal artifact as the output stitch
|
|
66
|
+
*/
|
|
67
|
+
exports.routeMechanicCodePropose = (0, rhachet_1.asStitcherFlat)((0, rhachet_1.genStitchRoute)({
|
|
68
|
+
slug: '[mechanic]<code><propose>',
|
|
69
|
+
readme: '@[mechanic]<🌀release> -> @[mechanic]<declare>',
|
|
70
|
+
sequence: [cycleMechanicCodeRelease, stepDeclareProposal],
|
|
71
|
+
}));
|
|
72
|
+
//# sourceMappingURL=routeMechanicCodePropose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeMechanicCodePropose.js","sourceRoot":"","sources":["../../../../../src/logic/roles/mechanic/codediff/routeMechanicCodePropose.ts"],"names":[],"mappings":";;;AAAA,qCASiB;AAGjB,yCAAuD;AAIvD,yEAAsE;AAiDtE;;GAEG;AACH,MAAM,iBAAiB,GAAG,IAAI,2BAAiB,CAM7C;IACA,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,sBAAsB;IAC5B,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5B,MAAM,SAAS,GAAG,IAAA,wBAAY,EAC5B,wBAAY,CAAC,MAAM,CACjB,CACE,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;aAC5C,GAAG,EAAE;aACL,MAAM,CAAC,WAAW,CAAC,CACvB,CAAC,OAAO,CACV,CACF,CAAC;QACF,OAAO;YACL,KAAK,EAAE,EAAE,SAAS,EAAE;YACpB,MAAM,EAAE;gBACN,MAAM,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;aAC7D;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,wBAAwB,GAAG,IAAA,oBAAU,EACzC,IAAA,wBAAc,EAAC;IACb,IAAI,EAAE,2BAA2B;IACjC,MAAM,EACJ,wEAAwE;IAC1E,QAAQ,EAAE,mDAAwB;IAClC,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE;QACN,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;YACxB,WAAW,EAAE,CAAC,EAAE,oCAAoC;SACrD;KACF;CACF,CAAC,CACH,CAAC;AAEF;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,2BAAiB,CAE/C;IACA,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5B,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ;SAClD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACU,QAAA,wBAAwB,GACnC,IAAA,wBAAc,EACZ,IAAA,wBAAc,EAAC;IACb,IAAI,EAAE,2BAA2B;IACjC,MAAM,EAAE,gDAAgD;IACxD,QAAQ,EAAE,CAAC,wBAAwB,EAAE,mBAAmB,CAAC;CAC1D,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* .what = the options for the briefs available to role Mechanic
|
|
3
|
+
* .note = codegened via:
|
|
4
|
+
* ```sh
|
|
5
|
+
* npx tsx src/contract/commands/codegenBriefOptions.ts
|
|
6
|
+
* ```
|
|
7
|
+
*/
|
|
8
|
+
declare const options: readonly ["style.compressed.md", "style.compressed.prompt.md", "style.names.treestruct.md", "style.names.ubiqlang.md", "style.words.lowercase.md", "architecture/bounded-contexts.md", "architecture/directional-dependencies.md", "architecture/domain-driven-design.md", "architecture/ubiqlang.md", "codestyle/_mech.compressed.md", "codestyle/_mech.compressed.prompt.md", "codestyle/flow.failfast.md", "codestyle/flow.idempotency.md", "codestyle/flow.immutability.md", "codestyle/flow.narratives.md", "codestyle/flow.single-responsibility.md", "codestyle/mech.args.input-context.md", "codestyle/mech.arrowonly.md", "codestyle/mech.clear-contracts.md", "codestyle/mech.tests.given-when-then.md", "codestyle/mech.what-why.md", "codestyle/mech.what-why.v2.md", "engineer/dependency-injection.md"];
|
|
9
|
+
export type BriefOptionMechanic = typeof options[number];
|
|
10
|
+
export {};
|