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.
Files changed (165) hide show
  1. package/LICENSE +21 -0
  2. package/dist/.test/genContextLogTrail.d.ts +2 -0
  3. package/dist/.test/genContextLogTrail.js +12 -0
  4. package/dist/.test/genContextLogTrail.js.map +1 -0
  5. package/dist/.test/genContextStitchTrail.d.ts +2 -0
  6. package/dist/.test/genContextStitchTrail.js +8 -0
  7. package/dist/.test/genContextStitchTrail.js.map +1 -0
  8. package/dist/.test/getContextOpenAI.d.ts +2 -0
  9. package/dist/.test/getContextOpenAI.js +18 -0
  10. package/dist/.test/getContextOpenAI.js.map +1 -0
  11. package/dist/contract/cases/mechanicGoalStubout.integration.test.d.ts +0 -0
  12. package/dist/contract/cases/mechanicGoalStubout.integration.test.js +2 -0
  13. package/dist/contract/cases/mechanicGoalStubout.integration.test.js.map +1 -0
  14. package/dist/contract/cases/mechanicStubFillout.integration.test.d.ts +0 -0
  15. package/dist/contract/cases/mechanicStubFillout.integration.test.js +2 -0
  16. package/dist/contract/cases/mechanicStubFillout.integration.test.js.map +1 -0
  17. package/dist/contract/commands/codegenBriefOptions.d.ts +1 -0
  18. package/dist/contract/commands/codegenBriefOptions.js +57 -0
  19. package/dist/contract/commands/codegenBriefOptions.js.map +1 -0
  20. package/dist/data/sdk/sdkOpenAi.d.ts +16 -0
  21. package/dist/data/sdk/sdkOpenAi.js +38 -0
  22. package/dist/data/sdk/sdkOpenAi.js.map +1 -0
  23. package/dist/index.d.ts +0 -0
  24. package/dist/index.js +2 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/logic/artifact/genStepArtSet.d.ts +13 -0
  27. package/dist/logic/artifact/genStepArtSet.integration.test.d.ts +1 -0
  28. package/dist/logic/artifact/genStepArtSet.integration.test.js +142 -0
  29. package/dist/logic/artifact/genStepArtSet.integration.test.js.map +1 -0
  30. package/dist/logic/artifact/genStepArtSet.js +29 -0
  31. package/dist/logic/artifact/genStepArtSet.js.map +1 -0
  32. package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.d.ts +19 -0
  33. package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.integration.test.d.ts +1 -0
  34. package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.integration.test.js +97 -0
  35. package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.integration.test.js.map +1 -0
  36. package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.js +84 -0
  37. package/dist/logic/artifact/genStepGrabCallerFeedbackToArtifact.js.map +1 -0
  38. package/dist/logic/roles/designer/getDesignerBrief.Options.codegen.d.ts +10 -0
  39. package/dist/logic/roles/designer/getDesignerBrief.Options.codegen.js +14 -0
  40. package/dist/logic/roles/designer/getDesignerBrief.Options.codegen.js.map +1 -0
  41. package/dist/logic/roles/designer/getDesignerBrief.d.ts +13 -0
  42. package/dist/logic/roles/designer/getDesignerBrief.js +21 -0
  43. package/dist/logic/roles/designer/getDesignerBrief.js.map +1 -0
  44. package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.d.ts +26 -0
  45. package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.integration.test.d.ts +1 -0
  46. package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.integration.test.js +77 -0
  47. package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.integration.test.js.map +1 -0
  48. package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.js +53 -0
  49. package/dist/logic/roles/designer/outlineDistilisys/loopOutlineDistilisys.js.map +1 -0
  50. package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.d.ts +22 -0
  51. package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.integration.test.d.ts +1 -0
  52. package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.integration.test.js +142 -0
  53. package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.integration.test.js.map +1 -0
  54. package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.js +55 -0
  55. package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.js.map +1 -0
  56. package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.d.ts +26 -0
  57. package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.integration.test.d.ts +1 -0
  58. package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.integration.test.js +71 -0
  59. package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.integration.test.js.map +1 -0
  60. package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.js +53 -0
  61. package/dist/logic/roles/designer/outlineRoadmap/loopOutlineRoadmap.js.map +1 -0
  62. package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.d.ts +22 -0
  63. package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.integration.test.d.ts +1 -0
  64. package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.integration.test.js +130 -0
  65. package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.integration.test.js.map +1 -0
  66. package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.js +48 -0
  67. package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.js.map +1 -0
  68. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.d.ts +17 -0
  69. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.integration.test.d.ts +1 -0
  70. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.integration.test.js +107 -0
  71. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.integration.test.js.map +1 -0
  72. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.js +76 -0
  73. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.expand.ResourcesAndMechanisms.js.map +1 -0
  74. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.imagine.ResourcesAndMechanisms.d.ts +17 -0
  75. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.imagine.ResourcesAndMechanisms.js +73 -0
  76. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.imagine.ResourcesAndMechanisms.js.map +1 -0
  77. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.d.ts +18 -0
  78. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.integration.test.d.ts +1 -0
  79. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.integration.test.js +73 -0
  80. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.integration.test.js.map +1 -0
  81. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.js +62 -0
  82. package/dist/logic/roles/ecologist/distill/.deprecate/distillDomain.refine.ResourcesAndMechanisms.js.map +1 -0
  83. package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.d.ts +16 -0
  84. package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.integration.test.d.ts +1 -0
  85. package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.integration.test.js +120 -0
  86. package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.integration.test.js.map +1 -0
  87. package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.js +69 -0
  88. package/dist/logic/roles/ecologist/distill/distillDomain.ActionsAndActors.js.map +1 -0
  89. package/dist/logic/roles/ecologist/getEcologistBrief.Options.codegen.d.ts +10 -0
  90. package/dist/logic/roles/ecologist/getEcologistBrief.Options.codegen.js +39 -0
  91. package/dist/logic/roles/ecologist/getEcologistBrief.Options.codegen.js.map +1 -0
  92. package/dist/logic/roles/ecologist/getEcologistBrief.d.ts +13 -0
  93. package/dist/logic/roles/ecologist/getEcologistBrief.js +21 -0
  94. package/dist/logic/roles/ecologist/getEcologistBrief.js.map +1 -0
  95. package/dist/logic/roles/getRoleRegistry.d.ts +8 -0
  96. package/dist/logic/roles/getRoleRegistry.js +19 -0
  97. package/dist/logic/roles/getRoleRegistry.js.map +1 -0
  98. package/dist/logic/roles/getRoleRegistry.readme.d.ts +5 -0
  99. package/dist/logic/roles/getRoleRegistry.readme.js +75 -0
  100. package/dist/logic/roles/getRoleRegistry.readme.js.map +1 -0
  101. package/dist/logic/roles/mechanic/codediff/getRefOrgPatterns.d.ts +5 -0
  102. package/dist/logic/roles/mechanic/codediff/getRefOrgPatterns.js +22 -0
  103. package/dist/logic/roles/mechanic/codediff/getRefOrgPatterns.js.map +1 -0
  104. package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.d.ts +34 -0
  105. package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.integration.test.d.ts +1 -0
  106. package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.integration.test.js +246 -0
  107. package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.integration.test.js.map +1 -0
  108. package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.js +56 -0
  109. package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.js.map +1 -0
  110. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.d.ts +34 -0
  111. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.integration.test.d.ts +1 -0
  112. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.integration.test.js +144 -0
  113. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.integration.test.js.map +1 -0
  114. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.js +33 -0
  115. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReview.js.map +1 -0
  116. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.d.ts +34 -0
  117. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.integration.test.d.ts +1 -0
  118. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.integration.test.js +138 -0
  119. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.integration.test.js.map +1 -0
  120. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.js +49 -0
  121. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.js.map +1 -0
  122. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewBehavior.d.ts +28 -0
  123. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewBehavior.js +35 -0
  124. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewBehavior.js.map +1 -0
  125. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.d.ts +28 -0
  126. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.integration.test.d.ts +1 -0
  127. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.integration.test.js +294 -0
  128. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.integration.test.js.map +1 -0
  129. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.js +44 -0
  130. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.js.map +1 -0
  131. package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.d.ts +38 -0
  132. package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.integration.test.d.ts +1 -0
  133. package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.integration.test.js +162 -0
  134. package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.integration.test.js.map +1 -0
  135. package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.js +32 -0
  136. package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.js.map +1 -0
  137. package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.d.ts +56 -0
  138. package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.integration.test.d.ts +1 -0
  139. package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.integration.test.js +169 -0
  140. package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.integration.test.js.map +1 -0
  141. package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.js +30 -0
  142. package/dist/logic/roles/mechanic/codediff/routeMechanicCodeIterate.js.map +1 -0
  143. package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.d.ts +53 -0
  144. package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.integration.test.d.ts +1 -0
  145. package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.integration.test.js +203 -0
  146. package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.integration.test.js.map +1 -0
  147. package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.js +72 -0
  148. package/dist/logic/roles/mechanic/codediff/routeMechanicCodePropose.js.map +1 -0
  149. package/dist/logic/roles/mechanic/getMechanicBrief.Options.codegen.d.ts +10 -0
  150. package/dist/logic/roles/mechanic/getMechanicBrief.Options.codegen.js +35 -0
  151. package/dist/logic/roles/mechanic/getMechanicBrief.Options.codegen.js.map +1 -0
  152. package/dist/logic/roles/mechanic/getMechanicBrief.d.ts +13 -0
  153. package/dist/logic/roles/mechanic/getMechanicBrief.js +21 -0
  154. package/dist/logic/roles/mechanic/getMechanicBrief.js.map +1 -0
  155. package/dist/logic/roles/mechanic/getMechanicRole.d.ts +2 -0
  156. package/dist/logic/roles/mechanic/getMechanicRole.js +157 -0
  157. package/dist/logic/roles/mechanic/getMechanicRole.js.map +1 -0
  158. package/dist/logic/roles/mechanic/study/routeStudyAsk.d.ts +19 -0
  159. package/dist/logic/roles/mechanic/study/routeStudyAsk.integration.test.d.ts +1 -0
  160. package/dist/logic/roles/mechanic/study/routeStudyAsk.integration.test.js +98 -0
  161. package/dist/logic/roles/mechanic/study/routeStudyAsk.integration.test.js.map +1 -0
  162. package/dist/logic/roles/mechanic/study/routeStudyAsk.js +30 -0
  163. package/dist/logic/roles/mechanic/study/routeStudyAsk.js.map +1 -0
  164. package/package.json +95 -0
  165. 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,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,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":";;AAAA,iDAAoD;AACpD,qCAA2D;AAC3D,+DAA0D;AAC1D,uCAAsD;AAEtD,6EAA0E;AAC1E,mFAAgF;AAChF,yEAAsE;AACtE,0DAAuD;AACvD,2DAAwD;AACxD,yEAAsE;AAEtE,IAAI,CAAC,UAAU,CAAC,IAAA,yBAAc,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,OAAO,GAAG;QACd,GAAG,IAAA,uCAAkB,GAAE;QACvB,GAAG,IAAA,6CAAqB,GAAE;QAC1B,GAAG,IAAA,mCAAgB,GAAE;KACtB,CAAC;IAEF,MAAM,KAAK,GAAG,mDAAwB,CAAC;IAEvC,IAAA,gBAAK,EAAC,iCAAiC,EAAE,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAG,IAAA,yCAAkB,EAClC;YACE,GAAG,EAAE,SAAS,GAAG,2BAA2B;SAC7C,EACD,EAAE,MAAM,EAAE,UAAU,EAAE,CACvB,CAAC;QAEF,IAAA,gBAAK,EAAC,uCAAuC,EAAE,GAAG,EAAE;YAClD,MAAM,WAAW,GAAG,IAAA,yCAAkB,EAAC;gBACrC,GAAG,EAAE,SAAS,GAAG,iDAAiD;aACnE,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,IAAA,yCAAkB,EAAC;gBACrC,GAAG,EAAE,SAAS,GAAG,mDAAmD;aACrE,CAAC,CAAC;YACH,MAAM,oBAAoB,GAAG,IAAA,yCAAkB,EAAC;gBAC9C,GAAG,EACD,SAAS;oBACT,6DAA6D;aAChE,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,yCAAkB,EAAC;gBACtC,GAAG,EAAE,SAAS,GAAG,oDAAoD;aACtE,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,yCAAkB,EAAC;gBACpC,GAAG,EAAE,SAAS,GAAG,gDAAgD;aAClE,CAAC,CAAC;YAEH,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,MAAM,WAAW,CAAC,GAAG,CAAC;oBACpB,OAAO,EAAE;;;GAGhB;iBACM,CAAC,CAAC;gBACH,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;gBACxB,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC;gBAEzB,MAAM,UAAU,CAAC,GAAG,CAAC;oBACnB,OAAO,EAAE;;;;;;;GAOhB;iBACM,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,kCAAkC,EAAE,GAAG,EAAE;gBAC5C,MAAM,OAAO,GAAG,IAAA,kBAAO,EAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACnC,MAAM,EAAE,MAAM,IAAA,sBAAY,EAAC;wBACzB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE;4BACL,GAAG,EAAE,sBAAsB;4BAC3B,GAAG,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;4BAC9B,GAAG,EAAE;gCACH,QAAQ,EAAE,IAAA,qCAAiB,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;6BACpD;4BACD,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;yBAClC;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,CAAC,IAAA,mCAAgB,EAAC,qBAAqB,CAAC,CAAC;yBAClD;qBACF,CAAC;oBACF,MAAM,EAAE,MAAM,IAAA,sBAAY,EAAC;wBACzB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE;4BACL,GAAG,EAAE;gCACH,QAAQ,EAAE,WAAW;gCACrB,iBAAiB,EAAE,oBAAoB;6BACxC;4BACD,GAAG,EAAE;gCACH,QAAQ,EAAE,IAAA,qCAAiB,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;6BACpD;yBACF;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,CAAC,IAAA,mCAAgB,EAAC,qBAAqB,CAAC,CAAC;yBAClD;qBACF,CAAC;oBACF,OAAO,EAAE,MAAM,IAAA,sBAAY,EAAC;wBAC1B,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;qBACtC,CAAC;oBACF,KAAK,EAAE,MAAM,IAAA,sBAAY,EAAC;wBACxB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;qBAC5C,CAAC;oBACF,QAAQ,EAAE,MAAM,IAAA,sBAAY,EAAC;wBAC3B,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,EAAE;qBACV,CAAC;iBACH,CAAC,CAAC,CAAC;gBAEJ,IAAA,eAAI,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;oBAC3C,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAkB,EACrC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAC5B,OAAO,CACR,CAAC;oBAEF,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM;yBAC7C,GAAG,EAAE;yBACL,MAAM,CAAC,WAAW,CAAC,CAAC;oBACvB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC;oBAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;oBACtD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;oBAEnC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,gBAAK,EAAC,kBAAkB,EAAE,GAAG,EAAE;YAC7B,MAAM,WAAW,GAAG,IAAA,yCAAkB,EAAC;gBACrC,GAAG,EAAE,SAAS,GAAG,kDAAkD;aACpE,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,IAAA,yCAAkB,EAAC;gBACrC,GAAG,EAAE,SAAS,GAAG,oDAAoD;aACtE,CAAC,CAAC;YACH,MAAM,oBAAoB,GAAG,IAAA,yCAAkB,EAAC;gBAC9C,GAAG,EACD,SAAS;oBACT,8DAA8D;aACjE,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,yCAAkB,EAAC;gBACtC,GAAG,EAAE,SAAS,GAAG,qDAAqD;aACvE,CAAC,CAAC;YAEH,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;gBACxB,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;gBACxB,MAAM,oBAAoB,CAAC,GAAG,EAAE,CAAC;gBACjC,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,kCAAkC,EAAE,GAAG,EAAE;gBAC5C,MAAM,OAAO,GAAG,IAAA,kBAAO,EAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACnC,MAAM,EAAE,MAAM,IAAA,sBAAY,EAAC;wBACzB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE;4BACL,GAAG,EAAE,sBAAsB;4BAC3B,GAAG,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;4BAC9B,GAAG,EAAE;gCACH,QAAQ,EAAE,IAAA,qCAAiB,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;6BACpD;4BACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;yBACxB;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,CAAC,IAAA,mCAAgB,EAAC,qBAAqB,CAAC,CAAC;yBAClD;qBACF,CAAC;oBACF,MAAM,EAAE,MAAM,IAAA,sBAAY,EAAC;wBACzB,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE;4BACL,GAAG,EAAE;gCACH,QAAQ,EAAE,WAAW;gCACrB,iBAAiB,EAAE,oBAAoB;6BACxC;4BACD,GAAG,EAAE;gCACH,QAAQ,EAAE,IAAA,qCAAiB,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;6BACpD;yBACF;wBACD,OAAO,EAAE;4BACP,MAAM,EAAE,CAAC,IAAA,mCAAgB,EAAC,qBAAqB,CAAC,CAAC;yBAClD;qBACF,CAAC;oBACF,OAAO,EAAE,MAAM,IAAA,sBAAY,EAAC;wBAC1B,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;qBACtC,CAAC;oBACF,KAAK,EAAE,MAAM,IAAA,sBAAY,EAAC;wBACxB,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;qBAC5C,CAAC;oBACF,QAAQ,EAAE,MAAM,IAAA,sBAAY,EAAC;wBAC3B,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,EAAE;qBACV,CAAC;iBACH,CAAC,CAAC,CAAC;gBAEJ,IAAA,eAAI,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;oBAC3C,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAkB,EACrC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAC5B,OAAO,CACR,CAAC;oBAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBACtE,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAE/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;oBAEnC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAK,EAAC,0DAA0D,EAAE,GAAG,EAAE;QACrE,MAAM,SAAS,GAAG,IAAA,yCAAkB,EAClC;YACE,GAAG,EAAE,SAAS,GAAG,wCAAwC;SAC1D,EACD,EAAE,MAAM,EAAE,UAAU,EAAE,CACvB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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 {};