rhachet 1.1.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 (228) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__nonpublished_modules__/file-fns/src/getFile.d.ts +6 -0
  3. package/dist/__nonpublished_modules__/file-fns/src/getFile.js +14 -0
  4. package/dist/__nonpublished_modules__/file-fns/src/getFile.js.map +1 -0
  5. package/dist/__test_assets__/directory.d.ts +1 -0
  6. package/dist/__test_assets__/directory.js +5 -0
  7. package/dist/__test_assets__/directory.js.map +1 -0
  8. package/dist/__test_assets__/genContextLogTrail.d.ts +2 -0
  9. package/dist/__test_assets__/genContextLogTrail.js +12 -0
  10. package/dist/__test_assets__/genContextLogTrail.js.map +1 -0
  11. package/dist/__test_assets__/genContextStitchTrail.d.ts +2 -0
  12. package/dist/__test_assets__/genContextStitchTrail.js +8 -0
  13. package/dist/__test_assets__/genContextStitchTrail.js.map +1 -0
  14. package/dist/__test_assets__/getContextOpenAI.d.ts +2 -0
  15. package/dist/__test_assets__/getContextOpenAI.js +18 -0
  16. package/dist/__test_assets__/getContextOpenAI.js.map +1 -0
  17. package/dist/__test_assets__/stitchers/genStitcherCodeFileRead.d.ts +14 -0
  18. package/dist/__test_assets__/stitchers/genStitcherCodeFileRead.js +23 -0
  19. package/dist/__test_assets__/stitchers/genStitcherCodeFileRead.js.map +1 -0
  20. package/dist/__test_assets__/stitchers/genStitcherCodeFileWrite.d.ts +16 -0
  21. package/dist/__test_assets__/stitchers/genStitcherCodeFileWrite.js +29 -0
  22. package/dist/__test_assets__/stitchers/genStitcherCodeFileWrite.js.map +1 -0
  23. package/dist/__test_assets__/stitchers/genStitcherCodeReviewImagine.d.ts +15 -0
  24. package/dist/__test_assets__/stitchers/genStitcherCodeReviewImagine.js +97 -0
  25. package/dist/__test_assets__/stitchers/genStitcherCodeReviewImagine.js.map +1 -0
  26. package/dist/__test_assets__/stitchers/stitcherCodeDiffImagine.d.ts +13 -0
  27. package/dist/__test_assets__/stitchers/stitcherCodeDiffImagine.js +33 -0
  28. package/dist/__test_assets__/stitchers/stitcherCodeDiffImagine.js.map +1 -0
  29. package/dist/__test_assets__/stitchers/stitcherFanoutRandomSum.d.ts +13 -0
  30. package/dist/__test_assets__/stitchers/stitcherFanoutRandomSum.js +45 -0
  31. package/dist/__test_assets__/stitchers/stitcherFanoutRandomSum.js.map +1 -0
  32. package/dist/__test_assets__/stitchers/stitcherFanoutSubroutes.d.ts +29 -0
  33. package/dist/__test_assets__/stitchers/stitcherFanoutSubroutes.js +76 -0
  34. package/dist/__test_assets__/stitchers/stitcherFanoutSubroutes.js.map +1 -0
  35. package/dist/__test_assets__/threads/codeArtist.d.ts +6 -0
  36. package/dist/__test_assets__/threads/codeArtist.js +26 -0
  37. package/dist/__test_assets__/threads/codeArtist.js.map +1 -0
  38. package/dist/__test_assets__/threads/codeCritic.d.ts +6 -0
  39. package/dist/__test_assets__/threads/codeCritic.js +21 -0
  40. package/dist/__test_assets__/threads/codeCritic.js.map +1 -0
  41. package/dist/__test_assets__/threads/director.d.ts +6 -0
  42. package/dist/__test_assets__/threads/director.js +14 -0
  43. package/dist/__test_assets__/threads/director.js.map +1 -0
  44. package/dist/contract/sdk.d.ts +8 -0
  45. package/dist/contract/sdk.js +33 -0
  46. package/dist/contract/sdk.js.map +1 -0
  47. package/dist/domain/objects/Stitch.d.ts +42 -0
  48. package/dist/domain/objects/Stitch.js +9 -0
  49. package/dist/domain/objects/Stitch.js.map +1 -0
  50. package/dist/domain/objects/StitchChoice.d.ts +30 -0
  51. package/dist/domain/objects/StitchChoice.js +8 -0
  52. package/dist/domain/objects/StitchChoice.js.map +1 -0
  53. package/dist/domain/objects/StitchCycle.d.ts +44 -0
  54. package/dist/domain/objects/StitchCycle.js +8 -0
  55. package/dist/domain/objects/StitchCycle.js.map +1 -0
  56. package/dist/domain/objects/StitchFanout.d.ts +35 -0
  57. package/dist/domain/objects/StitchFanout.js +8 -0
  58. package/dist/domain/objects/StitchFanout.js.map +1 -0
  59. package/dist/domain/objects/StitchRoute.d.ts +22 -0
  60. package/dist/domain/objects/StitchRoute.js +8 -0
  61. package/dist/domain/objects/StitchRoute.js.map +1 -0
  62. package/dist/domain/objects/StitchSetEvent.d.ts +23 -0
  63. package/dist/domain/objects/StitchSetEvent.js +8 -0
  64. package/dist/domain/objects/StitchSetEvent.js.map +1 -0
  65. package/dist/domain/objects/StitchStep.d.ts +55 -0
  66. package/dist/domain/objects/StitchStep.js +11 -0
  67. package/dist/domain/objects/StitchStep.js.map +1 -0
  68. package/dist/domain/objects/StitchTrail.d.ts +26 -0
  69. package/dist/domain/objects/StitchTrail.js +19 -0
  70. package/dist/domain/objects/StitchTrail.js.map +1 -0
  71. package/dist/domain/objects/Stitcher.d.ts +105 -0
  72. package/dist/domain/objects/Stitcher.js +49 -0
  73. package/dist/domain/objects/Stitcher.js.map +1 -0
  74. package/dist/domain/objects/Stitcher.test.d.ts +1 -0
  75. package/dist/domain/objects/Stitcher.test.js +78 -0
  76. package/dist/domain/objects/Stitcher.test.js.map +1 -0
  77. package/dist/domain/objects/Thread.d.ts +31 -0
  78. package/dist/domain/objects/Thread.js +11 -0
  79. package/dist/domain/objects/Thread.js.map +1 -0
  80. package/dist/domain/objects/Threads.d.ts +56 -0
  81. package/dist/domain/objects/Threads.js +26 -0
  82. package/dist/domain/objects/Threads.js.map +1 -0
  83. package/dist/domain/objects/Weave.d.ts +0 -0
  84. package/dist/domain/objects/Weave.js +2 -0
  85. package/dist/domain/objects/Weave.js.map +1 -0
  86. package/dist/domain/objects/Weaver.d.ts +5 -0
  87. package/dist/domain/objects/Weaver.js +7 -0
  88. package/dist/domain/objects/Weaver.js.map +1 -0
  89. package/dist/domain/objects/index.d.ts +11 -0
  90. package/dist/domain/objects/index.js +30 -0
  91. package/dist/domain/objects/index.js.map +1 -0
  92. package/dist/index.d.ts +1 -0
  93. package/dist/index.js +18 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/logic/stitch/adapters/imagineViaOpenAI.d.ts +13 -0
  96. package/dist/logic/stitch/adapters/imagineViaOpenAI.js +36 -0
  97. package/dist/logic/stitch/adapters/imagineViaOpenAI.js.map +1 -0
  98. package/dist/logic/stitch/enstitch.d.ts +27 -0
  99. package/dist/logic/stitch/enstitch.js +97 -0
  100. package/dist/logic/stitch/enstitch.js.map +1 -0
  101. package/dist/logic/stitch/enstitch.test.d.ts +1 -0
  102. package/dist/logic/stitch/enstitch.test.js +87 -0
  103. package/dist/logic/stitch/enstitch.test.js.map +1 -0
  104. package/dist/logic/stitch/invokeImagineStitcher.d.ts +10 -0
  105. package/dist/logic/stitch/invokeImagineStitcher.integration.test.d.ts +1 -0
  106. package/dist/logic/stitch/invokeImagineStitcher.integration.test.js +193 -0
  107. package/dist/logic/stitch/invokeImagineStitcher.integration.test.js.map +1 -0
  108. package/dist/logic/stitch/invokeImagineStitcher.js +23 -0
  109. package/dist/logic/stitch/invokeImagineStitcher.js.map +1 -0
  110. package/dist/logic/stitch/withStitchTrail.d.ts +16 -0
  111. package/dist/logic/stitch/withStitchTrail.js +40 -0
  112. package/dist/logic/stitch/withStitchTrail.js.map +1 -0
  113. package/dist/logic/thread/enroleThread.d.ts +4 -0
  114. package/dist/logic/thread/enroleThread.js +6 -0
  115. package/dist/logic/thread/enroleThread.js.map +1 -0
  116. package/dist/logic/thread/genThread.d.ts +7 -0
  117. package/dist/logic/thread/genThread.js +10 -0
  118. package/dist/logic/thread/genThread.js.map +1 -0
  119. package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.d.ts +17 -0
  120. package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.js +3 -0
  121. package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.js.map +1 -0
  122. package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.d.ts +1 -0
  123. package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.js +67 -0
  124. package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.js.map +1 -0
  125. package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.d.ts +18 -0
  126. package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.js +3 -0
  127. package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.js.map +1 -0
  128. package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.d.ts +1 -0
  129. package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.js +132 -0
  130. package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.js.map +1 -0
  131. package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.d.ts +23 -0
  132. package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.js +3 -0
  133. package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.js.map +1 -0
  134. package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.d.ts +1 -0
  135. package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.js +74 -0
  136. package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.js.map +1 -0
  137. package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.d.ts +24 -0
  138. package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.js +3 -0
  139. package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.js.map +1 -0
  140. package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.d.ts +1 -0
  141. package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.js +190 -0
  142. package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.js.map +1 -0
  143. package/dist/logic/weave/compose/ProcedureContextMerged.generic.d.ts +36 -0
  144. package/dist/logic/weave/compose/ProcedureContextMerged.generic.js +3 -0
  145. package/dist/logic/weave/compose/ProcedureContextMerged.generic.js.map +1 -0
  146. package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.d.ts +1 -0
  147. package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.js +29 -0
  148. package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.js.map +1 -0
  149. package/dist/logic/weave/compose/ThreadsMerged.generic.d.ts +65 -0
  150. package/dist/logic/weave/compose/ThreadsMerged.generic.js +3 -0
  151. package/dist/logic/weave/compose/ThreadsMerged.generic.js.map +1 -0
  152. package/dist/logic/weave/compose/ThreadsMerged.generic.test.d.ts +1 -0
  153. package/dist/logic/weave/compose/ThreadsMerged.generic.test.js +420 -0
  154. package/dist/logic/weave/compose/ThreadsMerged.generic.test.js.map +1 -0
  155. package/dist/logic/weave/compose/asStitcher.d.ts +12 -0
  156. package/dist/logic/weave/compose/asStitcher.js +15 -0
  157. package/dist/logic/weave/compose/asStitcher.js.map +1 -0
  158. package/dist/logic/weave/compose/asStitcher.test.d.ts +1 -0
  159. package/dist/logic/weave/compose/asStitcher.test.js +95 -0
  160. package/dist/logic/weave/compose/asStitcher.test.js.map +1 -0
  161. package/dist/logic/weave/compose/asStitcherFlat.d.ts +10 -0
  162. package/dist/logic/weave/compose/asStitcherFlat.js +13 -0
  163. package/dist/logic/weave/compose/asStitcherFlat.js.map +1 -0
  164. package/dist/logic/weave/compose/asStitcherFlat.test.d.ts +1 -0
  165. package/dist/logic/weave/compose/asStitcherFlat.test.js +96 -0
  166. package/dist/logic/weave/compose/asStitcherFlat.test.js.map +1 -0
  167. package/dist/logic/weave/compose/genStitchChoice.d.ts +22 -0
  168. package/dist/logic/weave/compose/genStitchChoice.js +23 -0
  169. package/dist/logic/weave/compose/genStitchChoice.js.map +1 -0
  170. package/dist/logic/weave/compose/genStitchChoice.test.d.ts +1 -0
  171. package/dist/logic/weave/compose/genStitchChoice.test.js +200 -0
  172. package/dist/logic/weave/compose/genStitchChoice.test.js.map +1 -0
  173. package/dist/logic/weave/compose/genStitchCycle.d.ts +28 -0
  174. package/dist/logic/weave/compose/genStitchCycle.js +30 -0
  175. package/dist/logic/weave/compose/genStitchCycle.js.map +1 -0
  176. package/dist/logic/weave/compose/genStitchCycle.test.d.ts +1 -0
  177. package/dist/logic/weave/compose/genStitchCycle.test.js +152 -0
  178. package/dist/logic/weave/compose/genStitchCycle.test.js.map +1 -0
  179. package/dist/logic/weave/compose/genStitchFanout.d.ts +17 -0
  180. package/dist/logic/weave/compose/genStitchFanout.js +21 -0
  181. package/dist/logic/weave/compose/genStitchFanout.js.map +1 -0
  182. package/dist/logic/weave/compose/genStitchFanout.test.d.ts +1 -0
  183. package/dist/logic/weave/compose/genStitchFanout.test.js +79 -0
  184. package/dist/logic/weave/compose/genStitchFanout.test.js.map +1 -0
  185. package/dist/logic/weave/compose/genStitchRoute.d.ts +15 -0
  186. package/dist/logic/weave/compose/genStitchRoute.js +20 -0
  187. package/dist/logic/weave/compose/genStitchRoute.js.map +1 -0
  188. package/dist/logic/weave/compose/genStitchRoute.test.d.ts +1 -0
  189. package/dist/logic/weave/compose/genStitchRoute.test.js +120 -0
  190. package/dist/logic/weave/compose/genStitchRoute.test.js.map +1 -0
  191. package/dist/logic/weave/enweave.d.ts +0 -0
  192. package/dist/logic/weave/enweave.js +2 -0
  193. package/dist/logic/weave/enweave.js.map +1 -0
  194. package/dist/logic/weave/enweaveAllStitchers.d.ts +0 -0
  195. package/dist/logic/weave/enweaveAllStitchers.js +2 -0
  196. package/dist/logic/weave/enweaveAllStitchers.js.map +1 -0
  197. package/dist/logic/weave/enweaveOneChoice.d.ts +14 -0
  198. package/dist/logic/weave/enweaveOneChoice.js +48 -0
  199. package/dist/logic/weave/enweaveOneChoice.js.map +1 -0
  200. package/dist/logic/weave/enweaveOneChoice.test.d.ts +1 -0
  201. package/dist/logic/weave/enweaveOneChoice.test.js +181 -0
  202. package/dist/logic/weave/enweaveOneChoice.test.js.map +1 -0
  203. package/dist/logic/weave/enweaveOneCycle.d.ts +19 -0
  204. package/dist/logic/weave/enweaveOneCycle.js +98 -0
  205. package/dist/logic/weave/enweaveOneCycle.js.map +1 -0
  206. package/dist/logic/weave/enweaveOneCycle.test.d.ts +1 -0
  207. package/dist/logic/weave/enweaveOneCycle.test.js +180 -0
  208. package/dist/logic/weave/enweaveOneCycle.test.js.map +1 -0
  209. package/dist/logic/weave/enweaveOneFanout.d.ts +12 -0
  210. package/dist/logic/weave/enweaveOneFanout.integration.test.d.ts +1 -0
  211. package/dist/logic/weave/enweaveOneFanout.integration.test.js +166 -0
  212. package/dist/logic/weave/enweaveOneFanout.integration.test.js.map +1 -0
  213. package/dist/logic/weave/enweaveOneFanout.js +37 -0
  214. package/dist/logic/weave/enweaveOneFanout.js.map +1 -0
  215. package/dist/logic/weave/enweaveOneRoute.d.ts +12 -0
  216. package/dist/logic/weave/enweaveOneRoute.integration.test.d.ts +1 -0
  217. package/dist/logic/weave/enweaveOneRoute.integration.test.js +159 -0
  218. package/dist/logic/weave/enweaveOneRoute.integration.test.js.map +1 -0
  219. package/dist/logic/weave/enweaveOneRoute.js +33 -0
  220. package/dist/logic/weave/enweaveOneRoute.js.map +1 -0
  221. package/dist/logic/weave/enweaveOneStitcher.d.ts +11 -0
  222. package/dist/logic/weave/enweaveOneStitcher.integration.test.d.ts +2 -0
  223. package/dist/logic/weave/enweaveOneStitcher.integration.test.js +258 -0
  224. package/dist/logic/weave/enweaveOneStitcher.integration.test.js.map +1 -0
  225. package/dist/logic/weave/enweaveOneStitcher.js +42 -0
  226. package/dist/logic/weave/enweaveOneStitcher.js.map +1 -0
  227. package/package.json +88 -0
  228. package/readme.md +61 -0
@@ -0,0 +1,10 @@
1
+ import { GStitcher, Stitcher } from '../../../domain/objects/Stitcher';
2
+ import { Threads } from '../../../domain/objects/Threads';
3
+ /**
4
+ * .what = narrows a stitcher with deeply inferred or recursive types into a pre-flattened form
5
+ * .why =
6
+ * - enables you to simplify the types youre looking at, against what you expect
7
+ * - avoids TS2589 (excessively deep type instantiation), by memoization of the shape, tested against the inferred types of the stitcher so far
8
+ * - ensures downstream use of `asStitcher(...)` stays composable
9
+ */
10
+ export declare const asStitcherFlat: <Flat extends GStitcher<Threads<any, "single">, any, any>>(input: Stitcher<Flat>) => Stitcher<Flat>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.asStitcherFlat = void 0;
4
+ /**
5
+ * .what = narrows a stitcher with deeply inferred or recursive types into a pre-flattened form
6
+ * .why =
7
+ * - enables you to simplify the types youre looking at, against what you expect
8
+ * - avoids TS2589 (excessively deep type instantiation), by memoization of the shape, tested against the inferred types of the stitcher so far
9
+ * - ensures downstream use of `asStitcher(...)` stays composable
10
+ */
11
+ const asStitcherFlat = (input) => input;
12
+ exports.asStitcherFlat = asStitcherFlat;
13
+ //# sourceMappingURL=asStitcherFlat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asStitcherFlat.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/asStitcherFlat.ts"],"names":[],"mappings":";;;AAGA;;;;;;GAMG;AACI,MAAM,cAAc,GAAG,CAG5B,KAAqB,EACL,EAAE,CAAC,KAAK,CAAC;AAJd,QAAA,cAAc,kBAIA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_fns_1 = require("test-fns");
4
+ const StitchStep_1 = require("../../../domain/objects/StitchStep");
5
+ const asStitcherFlat_1 = require("./asStitcherFlat");
6
+ const genStitchRoute_1 = require("./genStitchRoute");
7
+ describe('asStitcherFlat (typed GStitcher version)', () => {
8
+ (0, test_fns_1.given)('a genStitchRoute that needs to be flattened and reused', () => {
9
+ const step1 = new StitchStep_1.StitchStepCompute({
10
+ slug: 's1',
11
+ readme: null,
12
+ form: 'COMPUTE',
13
+ stitchee: 'alpha',
14
+ invoke: () => ({ input: null, output: 'a' }),
15
+ });
16
+ const step2 = new StitchStep_1.StitchStepCompute({
17
+ slug: 's2',
18
+ readme: null,
19
+ form: 'COMPUTE',
20
+ stitchee: 'alpha',
21
+ invoke: () => ({ input: null, output: 'b' }),
22
+ });
23
+ const route = (0, genStitchRoute_1.genStitchRoute)({
24
+ slug: 'r1',
25
+ readme: null,
26
+ sequence: [step1, step2],
27
+ });
28
+ const stitcher = (0, asStitcherFlat_1.asStitcherFlat)(route);
29
+ (0, test_fns_1.then)('it should be assignable to the flattened form', () => {
30
+ const ok = stitcher;
31
+ expect(ok.slug).toBe('r1');
32
+ });
33
+ (0, test_fns_1.then)('it should have the expected thread structure', () => {
34
+ const single = true;
35
+ const has = true;
36
+ expect(single);
37
+ expect(has);
38
+ });
39
+ (0, test_fns_1.then)('it should preserve output and context types', () => {
40
+ const a = true;
41
+ const b = true;
42
+ expect(a);
43
+ expect(b);
44
+ });
45
+ (0, test_fns_1.then)('it should no longer exactly match the original route', () => {
46
+ // @ts-expect-error: not assignable anymore
47
+ const exact = true;
48
+ expect(exact);
49
+ });
50
+ (0, test_fns_1.then)('it should be usable in a route that expects flattened steps', () => {
51
+ const outer = (0, genStitchRoute_1.genStitchRoute)({
52
+ slug: 'outer',
53
+ readme: null,
54
+ sequence: [stitcher],
55
+ });
56
+ expect(outer.slug).toBe('outer');
57
+ expect(outer.sequence[0].slug).toBe('r1');
58
+ });
59
+ });
60
+ (0, test_fns_1.given)('a stitcher that does not match the given flat type', () => {
61
+ const wrongStep = new StitchStep_1.StitchStepCompute({
62
+ slug: 'fail',
63
+ readme: null,
64
+ form: 'COMPUTE',
65
+ stitchee: 'wrong',
66
+ invoke: () => ({ input: null, output: 123 }),
67
+ });
68
+ // @ts-expect-error: wrong thread role and output type
69
+ const bad = (0, asStitcherFlat_1.asStitcherFlat)(wrongStep);
70
+ expect(bad.slug).toBe('fail');
71
+ });
72
+ (0, test_fns_1.given)('flat can require more threads than the inferred stitcher needs', () => {
73
+ const needslittle = new StitchStep_1.StitchStepCompute({
74
+ slug: 'succeed-broader-thread-context',
75
+ readme: null,
76
+ form: 'COMPUTE',
77
+ stitchee: 'alpha',
78
+ invoke: () => ({ input: null, output: 'oops' }),
79
+ });
80
+ const overprovisioned = (0, asStitcherFlat_1.asStitcherFlat)(needslittle);
81
+ expect(overprovisioned.slug).toBe('succeed-broader-thread-context');
82
+ });
83
+ (0, test_fns_1.given)('flat cannot allow less threads than the inferred stitcher needs', () => {
84
+ const unsupported = new StitchStep_1.StitchStepCompute({
85
+ slug: 'fail-narrow-thread-context',
86
+ readme: null,
87
+ form: 'COMPUTE',
88
+ stitchee: 'alpha',
89
+ invoke: () => ({ input: null, output: 'oops' }),
90
+ });
91
+ // @ts-expect-error: Property 'tools' is missing in type 'ThreadContextRole<"alpha">' but required in type '{ tools: string[]; }'
92
+ const bad = (0, asStitcherFlat_1.asStitcherFlat)(unsupported);
93
+ expect(bad.slug).toBe('fail-narrow-thread-context');
94
+ });
95
+ });
96
+ //# sourceMappingURL=asStitcherFlat.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asStitcherFlat.test.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/asStitcherFlat.test.ts"],"names":[],"mappings":";;AAAA,uCAAuC;AAIvC,mEAAuE;AAOvE,qDAAkD;AAClD,qDAAkD;AAElD,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,IAAA,gBAAK,EAAC,wDAAwD,EAAE,GAAG,EAAE;QACnE,MAAM,KAAK,GAAG,IAAI,8BAAiB,CAEjC;YACA,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;SAC7C,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,8BAAiB,CAEjC;YACA,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;SAC7C,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAA,+BAAc,EAAC;YAC3B,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAU;SAClC,CAAC,CAAC;QAQH,MAAM,QAAQ,GAAG,IAAA,+BAAc,EAAO,KAAK,CAAC,CAAC;QAE7C,IAAA,eAAI,EAAC,+CAA+C,EAAE,GAAG,EAAE;YACzD,MAAM,EAAE,GAAmB,QAAQ,CAAC;YACpC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,8CAA8C,EAAE,GAAG,EAAE;YASxD,MAAM,MAAM,GAAa,IAAI,CAAC;YAC9B,MAAM,GAAG,GAAa,IAAI,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,6CAA6C,EAAE,GAAG,EAAE;YAKvD,MAAM,CAAC,GAAa,IAAI,CAAC;YACzB,MAAM,CAAC,GAAc,IAAI,CAAC;YAC1B,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,sDAAsD,EAAE,GAAG,EAAE;YAChE,2CAA2C;YAC3C,MAAM,KAAK,GAAwD,IAAI,CAAC;YACxE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,6DAA6D,EAAE,GAAG,EAAE;YACvE,MAAM,KAAK,GAAG,IAAA,+BAAc,EAAC;gBAC3B,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,QAAQ,CAAU;aAC9B,CAAC,CAAC;YAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAK,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,SAAS,GAAG,IAAI,8BAAiB,CAErC;YACA,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;SAC7C,CAAC,CAAC;QAQH,sDAAsD;QACtD,MAAM,GAAG,GAAG,IAAA,+BAAc,EAAO,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAK,EACH,gEAAgE,EAChE,GAAG,EAAE;QACH,MAAM,WAAW,GAAG,IAAI,8BAAiB,CAEvC;YACA,IAAI,EAAE,gCAAgC;YACtC,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;SAChD,CAAC,CAAC;QAQH,MAAM,eAAe,GAAG,IAAA,+BAAc,EAAO,WAAW,CAAC,CAAC;QAC1D,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACtE,CAAC,CACF,CAAC;IAEF,IAAA,gBAAK,EACH,iEAAiE,EACjE,GAAG,EAAE;QACH,MAAM,WAAW,GAAG,IAAI,8BAAiB,CAMvC;YACA,IAAI,EAAE,4BAA4B;YAClC,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;SAChD,CAAC,CAAC;QAQH,iIAAiI;QACjI,MAAM,GAAG,GAAG,IAAA,+BAAc,EAAO,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtD,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { StitchChoice } from '../../../domain/objects/StitchChoice';
2
+ import { GStitcher, Stitcher } from '../../../domain/objects/Stitcher';
3
+ import { Threads } from '../../../domain/objects/Threads';
4
+ import { GStitcherInferredFromChoice } from './GStitcherInferredFromChoice.generic';
5
+ /**
6
+ * .what = generates a stitcher that forks to multiple options and chooses one
7
+ * .why =
8
+ * - supports runtime conditional logic with decider selection
9
+ * .note =
10
+ * - decider must return { choice: { slug } }
11
+ * - options must be typed as const
12
+ */
13
+ export declare const genStitchChoice: <TOptions extends readonly [Stitcher<GStitcher<Threads<any, "single">, any, any>>, ...Stitcher<GStitcher<Threads<any, "single">, any, any>>[]], TDecider extends Stitcher<GStitcher<Threads<any, "single">, any, {
14
+ choice: {
15
+ slug: string;
16
+ };
17
+ }>>>(input: {
18
+ slug: string;
19
+ readme: string | null;
20
+ decider: TDecider;
21
+ options: TOptions;
22
+ }) => StitchChoice<GStitcherInferredFromChoice<TOptions, TDecider>>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genStitchChoice = void 0;
4
+ const StitchChoice_1 = require("../../../domain/objects/StitchChoice");
5
+ /**
6
+ * .what = generates a stitcher that forks to multiple options and chooses one
7
+ * .why =
8
+ * - supports runtime conditional logic with decider selection
9
+ * .note =
10
+ * - decider must return { choice: { slug } }
11
+ * - options must be typed as const
12
+ */
13
+ const genStitchChoice = (input) => {
14
+ return new StitchChoice_1.StitchChoice({
15
+ form: 'CHOICE',
16
+ slug: input.slug,
17
+ readme: input.readme,
18
+ decider: input.decider,
19
+ options: input.options,
20
+ });
21
+ };
22
+ exports.genStitchChoice = genStitchChoice;
23
+ //# sourceMappingURL=genStitchChoice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStitchChoice.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/genStitchChoice.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AAKpE;;;;;;;GAOG;AACI,MAAM,eAAe,GAAG,CAQ7B,KAKD,EAAiE,EAAE;IAClE,OAAO,IAAI,2BAAY,CAAC;QACtB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAc;QAC7B,OAAO,EAAE,KAAK,CAAC,OAAc;KAC9B,CAAC,CAAC;AACL,CAAC,CAAC;AArBW,QAAA,eAAe,mBAqB1B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_fns_1 = require("test-fns");
4
+ const StitchStep_1 = require("../../../domain/objects/StitchStep");
5
+ const genThread_1 = require("../../thread/genThread");
6
+ const asStitcher_1 = require("./asStitcher");
7
+ const genStitchChoice_1 = require("./genStitchChoice");
8
+ describe('genStitchChoice type preservation', () => {
9
+ (0, test_fns_1.given)('a choice between two stitchers with different outputs', () => {
10
+ const stepA = new StitchStep_1.StitchStepCompute({
11
+ slug: 'number-return',
12
+ readme: null,
13
+ form: 'COMPUTE',
14
+ stitchee: 'main',
15
+ invoke: () => ({ input: null, output: 1 }),
16
+ });
17
+ const stepB = new StitchStep_1.StitchStepCompute({
18
+ slug: 'string-return',
19
+ readme: null,
20
+ form: 'COMPUTE',
21
+ stitchee: 'main',
22
+ invoke: () => ({ input: null, output: 'value' }),
23
+ });
24
+ const decider = new StitchStep_1.StitchStepCompute({
25
+ slug: 'choose-path',
26
+ readme: null,
27
+ form: 'COMPUTE',
28
+ stitchee: 'main',
29
+ invoke: () => ({
30
+ input: null,
31
+ output: { choice: { slug: 'number-return' } },
32
+ }),
33
+ });
34
+ const choice = (0, genStitchChoice_1.genStitchChoice)({
35
+ slug: 'test:choice:basic',
36
+ readme: null,
37
+ decider,
38
+ options: [stepA, stepB],
39
+ });
40
+ (0, test_fns_1.when)('checking assignability to Stitcher<GStitcher>', () => {
41
+ (0, test_fns_1.then)('it should produce single threads', () => {
42
+ const check = true;
43
+ expect(check);
44
+ });
45
+ (0, test_fns_1.then)('it should produce a valid GStitcher', () => {
46
+ const result = true;
47
+ expect(result);
48
+ });
49
+ (0, test_fns_1.then)('it should be assignable to StitchChoice<T extends GStitcher>', () => {
50
+ const check = true;
51
+ expect(check);
52
+ });
53
+ (0, test_fns_1.then)('it should be assignable generically', () => {
54
+ const checkA = true;
55
+ const checkB = true;
56
+ const checkC = true;
57
+ expect(checkA);
58
+ expect(checkB);
59
+ expect(checkC);
60
+ });
61
+ (0, test_fns_1.then)('it cannot be assignable exactly', () => {
62
+ // @ts-expect-error: due to Generic Invariance on Classes
63
+ const a = true;
64
+ expect(a);
65
+ // @ts-expect-error: due to Generic Invariance on Classes
66
+ const b = true;
67
+ expect(b);
68
+ });
69
+ });
70
+ (0, test_fns_1.then)('you can still cast it manually with loss of type safety', () => {
71
+ const forced = choice;
72
+ expect(forced.slug).toBe('test:choice:basic');
73
+ });
74
+ (0, test_fns_1.then)('it should be assignable when normalized manually', () => {
75
+ const forced = choice;
76
+ expect(forced.slug).toBe('test:choice:basic');
77
+ });
78
+ });
79
+ (0, test_fns_1.given)('a two-level decision tree for home service triage', () => {
80
+ // Leaf steps
81
+ const urgentPlumber = new StitchStep_1.StitchStepCompute({
82
+ slug: 'plumber-urgent',
83
+ readme: null,
84
+ form: 'COMPUTE',
85
+ stitchee: 'main',
86
+ invoke: () => ({ input: null, output: 'plumber-urgent' }),
87
+ });
88
+ const scheduleInspection = new StitchStep_1.StitchStepCompute({
89
+ slug: 'inspect-later',
90
+ readme: null,
91
+ form: 'COMPUTE',
92
+ stitchee: 'main',
93
+ invoke: () => ({ input: null, output: 'inspection-scheduled' }),
94
+ });
95
+ const referToUtility = new StitchStep_1.StitchStepCompute({
96
+ slug: 'refer-utility',
97
+ readme: null,
98
+ form: 'COMPUTE',
99
+ stitchee: 'main',
100
+ invoke: () => ({ input: null, output: 'refer-utility' }),
101
+ });
102
+ const dispatchElectrician = new StitchStep_1.StitchStepCompute({
103
+ slug: 'dispatch-electrician',
104
+ readme: null,
105
+ form: 'COMPUTE',
106
+ stitchee: 'main',
107
+ invoke: () => ({ input: null, output: 'dispatch-electrician' }),
108
+ });
109
+ // Inner choice: LEAK path
110
+ const leakDecider = new StitchStep_1.StitchStepCompute({
111
+ slug: 'decide-leak-type',
112
+ readme: null,
113
+ form: 'COMPUTE',
114
+ stitchee: 'main',
115
+ invoke: () => ({
116
+ input: null,
117
+ output: { choice: { slug: 'plumber-urgent' } },
118
+ }),
119
+ });
120
+ const leakChoice = (0, genStitchChoice_1.genStitchChoice)({
121
+ slug: 'choice:leak',
122
+ readme: null,
123
+ decider: leakDecider,
124
+ options: [urgentPlumber, scheduleInspection],
125
+ });
126
+ // Root choice: MAIN triage
127
+ const rootDecider = new StitchStep_1.StitchStepCompute({
128
+ slug: 'decide-main-issue',
129
+ readme: null,
130
+ form: 'COMPUTE',
131
+ stitchee: 'main',
132
+ invoke: () => ({
133
+ input: null,
134
+ output: { choice: { slug: 'choice:leak' } },
135
+ }),
136
+ });
137
+ const rootChoice = (0, genStitchChoice_1.genStitchChoice)({
138
+ slug: 'choice:whats-wrong',
139
+ readme: 'Decide how to triage home emergency',
140
+ decider: rootDecider,
141
+ options: [(0, asStitcher_1.asStitcher)(leakChoice), referToUtility, dispatchElectrician],
142
+ });
143
+ (0, test_fns_1.when)('checking type inference and assignability', () => {
144
+ (0, test_fns_1.then)('it should infer the correct output union', () => {
145
+ const result = 'dispatch-electrician';
146
+ expect(result).toBe('dispatch-electrician');
147
+ // compile-time check
148
+ const check = true;
149
+ expect(check);
150
+ // @ts-expect-error: Type '21' is not assignable to type '"plumber-urgent" | "inspection-scheduled" | "refer-utility" | "dispatch-electrician"'.ts(2322
151
+ const result3 = 21;
152
+ expect(result3);
153
+ });
154
+ (0, test_fns_1.then)('it should infer threads correctly', () => {
155
+ const threads = {
156
+ main: (0, genThread_1.genThread)({ role: 'main' }),
157
+ // @ts-expect-error: 'bert' does not exist in type 'ThreadsMerged<[Threads<{ main: Empty; }>
158
+ bert: (0, genThread_1.genThread)({ role: 'main' }),
159
+ };
160
+ expect(threads.main);
161
+ });
162
+ (0, test_fns_1.then)('it should infer context correctly', () => {
163
+ // ✅ Valid assignment
164
+ const context = {
165
+ log: console,
166
+ stitch: { trail: [] },
167
+ };
168
+ expect(context.log).toBe(console);
169
+ // @ts-expect-error: ⛔ missing required context keys
170
+ const missing = {};
171
+ expect(missing);
172
+ // @ts-expect-error: ⛔ wrong key ("stitchTrail" instead of "stitch")
173
+ const wrongKey = {
174
+ log: console,
175
+ stitchTrail: [],
176
+ };
177
+ expect(wrongKey);
178
+ const wrongValue = {
179
+ // @ts-expect-error: ⛔ wrong type of value for log
180
+ log: 'not-a-logger',
181
+ stitch: { trail: [] },
182
+ };
183
+ expect(wrongValue);
184
+ });
185
+ (0, test_fns_1.then)('it should be assignable to Stitcher<GStitcher>', () => {
186
+ const result = true;
187
+ expect(result);
188
+ });
189
+ (0, test_fns_1.then)('it should be assignable to StitchChoice<T>', () => {
190
+ const result = true;
191
+ expect(result);
192
+ });
193
+ (0, test_fns_1.then)('you can normalize manually', () => {
194
+ const forced = rootChoice;
195
+ expect(forced.slug).toBe('choice:whats-wrong');
196
+ });
197
+ });
198
+ });
199
+ });
200
+ //# sourceMappingURL=genStitchChoice.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStitchChoice.test.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/genStitchChoice.test.ts"],"names":[],"mappings":";;AAAA,uCAA6C;AAK7C,mEAAuE;AAQvE,sDAAmD;AACnD,6CAA0C;AAC1C,uDAAoD;AAEpD,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,IAAA,gBAAK,EAAC,uDAAuD,EAAE,GAAG,EAAE;QAClE,MAAM,KAAK,GAAG,IAAI,8BAAiB,CAEjC;YACA,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,8BAAiB,CAEjC;YACA,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;SACjD,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,8BAAiB,CAMnC;YACA,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACb,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;aAC9C,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAA,iCAAe,EAAC;YAC7B,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,IAAI;YACZ,OAAO;YACP,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAU;SACjC,CAAC,CAAC;QAKH,IAAA,eAAI,EAAC,+CAA+C,EAAE,GAAG,EAAE;YACzD,IAAA,eAAI,EAAC,kCAAkC,EAAE,GAAG,EAAE;gBAK5C,MAAM,KAAK,GAAa,IAAI,CAAC;gBAC7B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,qCAAqC,EAAE,GAAG,EAAE;gBAI/C,MAAM,MAAM,GAAW,IAAI,CAAC;gBAC5B,MAAM,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EACF,8DAA8D,EAC9D,GAAG,EAAE;gBASH,MAAM,KAAK,GAA+B,IAAI,CAAC;gBAC/C,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CACF,CAAC;YAEF,IAAA,eAAI,EAAC,qCAAqC,EAAE,GAAG,EAAE;gBAiB/C,MAAM,MAAM,GAAM,IAAI,CAAC;gBACvB,MAAM,MAAM,GAAM,IAAI,CAAC;gBACvB,MAAM,MAAM,GAAM,IAAI,CAAC;gBAEvB,MAAM,CAAC,MAAM,CAAC,CAAC;gBACf,MAAM,CAAC,MAAM,CAAC,CAAC;gBACf,MAAM,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC3C,yDAAyD;gBACzD,MAAM,CAAC,GAA0D,IAAI,CAAC;gBACtE,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEV,yDAAyD;gBACzD,MAAM,CAAC,GACL,IAAI,CAAC;gBACP,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,yDAAyD,EAAE,GAAG,EAAE;YACnE,MAAM,MAAM,GAAG,MAA6B,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,kDAAkD,EAAE,GAAG,EAAE;YAO5D,MAAM,MAAM,GAAyB,MAAa,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAK,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC9D,aAAa;QACb,MAAM,aAAa,GAAG,IAAI,8BAAiB,CAMzC;YACA,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;SAC1D,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAI,8BAAiB,CAM9C;YACA,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;SAChE,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,8BAAiB,CAE1C;YACA,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;SACzD,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,8BAAiB,CAM/C;YACA,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;SAChE,CAAC,CAAC;QAEH,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAI,8BAAiB,CAMvC;YACA,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACb,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE;aAC/C,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAA,iCAAe,EAAC;YACjC,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;SAC7C,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,WAAW,GAAG,IAAI,8BAAiB,CAMvC;YACA,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACb,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;aAC5C,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAA,iCAAe,EAAC;YACjC,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,qCAAqC;YAC7C,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,CAAC,IAAA,uBAAU,EAAC,UAAU,CAAC,EAAE,cAAc,EAAE,mBAAmB,CAAC;SACvE,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACrD,IAAA,eAAI,EAAC,0CAA0C,EAAE,GAAG,EAAE;gBAQpD,MAAM,MAAM,GAAW,sBAAsB,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAE5C,qBAAqB;gBACrB,MAAM,KAAK,GAA8C,IAAI,CAAC;gBAC9D,MAAM,CAAC,KAAK,CAAC,CAAC;gBAEd,uJAAuJ;gBACvJ,MAAM,OAAO,GAAW,EAAE,CAAC;gBAC3B,MAAM,CAAC,OAAO,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,mCAAmC,EAAE,GAAG,EAAE;gBAG7C,MAAM,OAAO,GAAgB;oBAC3B,IAAI,EAAE,IAAA,qBAAS,EAAC,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC;oBAE1C,4FAA4F;oBAC5F,IAAI,EAAE,IAAA,qBAAS,EAAC,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC;iBAC3C,CAAC;gBAEF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,mCAAmC,EAAE,GAAG,EAAE;gBAG7C,qBAAqB;gBACrB,MAAM,OAAO,GAAgB;oBAC3B,GAAG,EAAE,OAAO;oBACZ,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;iBACtB,CAAC;gBAEF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAElC,oDAAoD;gBACpD,MAAM,OAAO,GAAgB,EAAE,CAAC;gBAChC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAEhB,oEAAoE;gBACpE,MAAM,QAAQ,GAAgB;oBAC5B,GAAG,EAAE,OAAO;oBACZ,WAAW,EAAE,EAAE;iBAChB,CAAC;gBACF,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAEjB,MAAM,UAAU,GAAgB;oBAC9B,kDAAkD;oBAClD,GAAG,EAAE,cAAc;oBACnB,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;iBACtB,CAAC;gBACF,MAAM,CAAC,UAAU,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,gDAAgD,EAAE,GAAG,EAAE;gBAE1D,MAAM,MAAM,GAAuC,IAAI,CAAC;gBACxD,MAAM,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,4CAA4C,EAAE,GAAG,EAAE;gBAOtD,MAAM,MAAM,GAAU,IAAI,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,4BAA4B,EAAE,GAAG,EAAE;gBAUtC,MAAM,MAAM,GAAyB,UAAiB,CAAC;gBACvD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { UniDuration } from '@ehmpathy/uni-time';
2
+ import { PickAny } from 'type-fns';
3
+ import { StitchCycle } from '../../../domain/objects/StitchCycle';
4
+ import { GStitcher, GStitcherFlat, Stitcher } from '../../../domain/objects/Stitcher';
5
+ import { Threads } from '../../../domain/objects/Threads';
6
+ import { GStitcherInferredFromCycle } from './GStitcherInferredFromCycle.generic';
7
+ /**
8
+ * .what = generates a stitcher that repeats a step until the decider returns 'release' or 'halt'
9
+ * .why =
10
+ * - supports runtime loops with fine-grained flow control
11
+ * .note =
12
+ * - decider must return { choice: 'repeat' | 'release' | 'halt' }
13
+ * - halter is optional; defaults applied internally to prevent infinite loops
14
+ */
15
+ export declare const genStitchCycle: <TRepeatee extends Stitcher<GStitcher<Threads<any, "single">, any, any>>, TDecider extends Stitcher<GStitcher<Threads<any, "single">, any, {
16
+ choice: 'repeat' | 'release' | 'halt';
17
+ }>>>(input: {
18
+ slug: string;
19
+ readme: string | null;
20
+ repeatee: TRepeatee;
21
+ decider: TDecider;
22
+ halter?: {
23
+ threshold: PickAny<{
24
+ repetitions: number;
25
+ duration: UniDuration;
26
+ }>;
27
+ };
28
+ }) => StitchCycle<GStitcherFlat<GStitcherInferredFromCycle<TRepeatee, TDecider>>>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genStitchCycle = void 0;
4
+ const StitchCycle_1 = require("../../../domain/objects/StitchCycle");
5
+ /**
6
+ * .what = generates a stitcher that repeats a step until the decider returns 'release' or 'halt'
7
+ * .why =
8
+ * - supports runtime loops with fine-grained flow control
9
+ * .note =
10
+ * - decider must return { choice: 'repeat' | 'release' | 'halt' }
11
+ * - halter is optional; defaults applied internally to prevent infinite loops
12
+ */
13
+ const genStitchCycle = (input) => {
14
+ return new StitchCycle_1.StitchCycle({
15
+ form: 'CYCLE',
16
+ slug: input.slug,
17
+ readme: input.readme,
18
+ repeatee: input.repeatee,
19
+ decider: input.decider,
20
+ halter: input.halter ?? {
21
+ threshold: {
22
+ // safe by default
23
+ repetitions: 100,
24
+ duration: { hours: 1 },
25
+ },
26
+ },
27
+ });
28
+ };
29
+ exports.genStitchCycle = genStitchCycle;
30
+ //# sourceMappingURL=genStitchCycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStitchCycle.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/genStitchCycle.ts"],"names":[],"mappings":";;;AAGA,qEAAkE;AASlE;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,CAS5B,KAWD,EAEC,EAAE;IACF,OAAO,IAAI,yBAAW,CAAC;QACrB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAe;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAc;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI;YACtB,SAAS,EAAE;gBACT,kBAAkB;gBAClB,WAAW,EAAE,GAAG;gBAChB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aACvB;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AArCW,QAAA,cAAc,kBAqCzB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_fns_1 = require("test-fns");
4
+ const genContextLogTrail_1 = require("../../../__test_assets__/genContextLogTrail");
5
+ const genContextStitchTrail_1 = require("../../../__test_assets__/genContextStitchTrail");
6
+ const StitchStep_1 = require("../../../domain/objects/StitchStep");
7
+ const genThread_1 = require("../../thread/genThread");
8
+ const asStitcher_1 = require("./asStitcher");
9
+ const genStitchCycle_1 = require("./genStitchCycle");
10
+ const genStitchRoute_1 = require("./genStitchRoute");
11
+ describe('genStitchCycle type preservation', () => {
12
+ (0, test_fns_1.given)('a repeatee and a decider', () => {
13
+ const repeatee = new StitchStep_1.StitchStepCompute({
14
+ slug: 'return-42',
15
+ readme: null,
16
+ form: 'COMPUTE',
17
+ stitchee: 'main',
18
+ invoke: () => ({ input: null, output: 42 }),
19
+ });
20
+ const decider = new StitchStep_1.StitchStepCompute({
21
+ slug: 'decide-loop',
22
+ readme: null,
23
+ form: 'COMPUTE',
24
+ stitchee: 'main',
25
+ invoke: () => ({
26
+ input: null,
27
+ output: { choice: 'repeat' },
28
+ }),
29
+ });
30
+ const cycle = (0, genStitchCycle_1.genStitchCycle)({
31
+ slug: 'loop-example',
32
+ readme: 'Cycle until logic halts',
33
+ repeatee,
34
+ decider,
35
+ });
36
+ (0, test_fns_1.when)('checking assignability to Stitcher<GStitcher>', () => {
37
+ (0, test_fns_1.then)('it should produce single-threaded inference', () => {
38
+ const check = true;
39
+ expect(check);
40
+ });
41
+ (0, test_fns_1.then)('it should infer GStitcher shape', () => {
42
+ const result = true;
43
+ expect(result);
44
+ });
45
+ (0, test_fns_1.then)('it should have correct output type', () => {
46
+ const result = 42;
47
+ expect(result).toBe(42);
48
+ // @ts-expect-error: string not allowed
49
+ const invalid = 'oops';
50
+ expect(invalid);
51
+ });
52
+ (0, test_fns_1.then)('it should be assignable generically', () => {
53
+ const checkA = true;
54
+ const checkB = true;
55
+ expect(checkA);
56
+ expect(checkB);
57
+ });
58
+ (0, test_fns_1.then)('it should not be exactly assignable due to generic invariance', () => {
59
+ // @ts-expect-error: generic invariance on classes
60
+ const a = true;
61
+ expect(a);
62
+ });
63
+ (0, test_fns_1.then)('you can cast it manually with loss of type safety', () => {
64
+ const forced = cycle;
65
+ expect(forced.slug).toBe('loop-example');
66
+ });
67
+ (0, test_fns_1.then)('you can normalize it manually', () => {
68
+ const forced = cycle;
69
+ expect(forced.slug).toBe('loop-example');
70
+ });
71
+ (0, test_fns_1.then)('it should infer the correct context shape', () => {
72
+ const valid = {
73
+ ...(0, genContextLogTrail_1.genContextLogTrail)(),
74
+ ...(0, genContextStitchTrail_1.genContextStitchTrail)(),
75
+ };
76
+ expect(valid.log);
77
+ // @ts-expect-error: missing context
78
+ const invalid = {};
79
+ expect(invalid);
80
+ });
81
+ (0, test_fns_1.then)('it should infer threads correctly', () => {
82
+ const threads = {
83
+ main: (0, genThread_1.genThread)({ role: 'main' }),
84
+ };
85
+ expect(threads.main);
86
+ const bad = {
87
+ // @ts-expect-error: extra thread
88
+ foo: (0, genThread_1.genThread)({ role: 'foo' }),
89
+ };
90
+ expect(bad);
91
+ });
92
+ });
93
+ });
94
+ (0, test_fns_1.given)('a repeatee that is a route of two steps', () => {
95
+ const stepA = new StitchStep_1.StitchStepCompute({
96
+ slug: 'step-a',
97
+ readme: null,
98
+ form: 'COMPUTE',
99
+ stitchee: 'main',
100
+ invoke: () => ({ input: null, output: 'step-a' }),
101
+ });
102
+ const stepB = new StitchStep_1.StitchStepCompute({
103
+ slug: 'step-b',
104
+ readme: null,
105
+ form: 'COMPUTE',
106
+ stitchee: 'main',
107
+ invoke: () => ({ input: null, output: 'step-b' }),
108
+ });
109
+ const repeatee = (0, asStitcher_1.asStitcher)((0, genStitchRoute_1.genStitchRoute)({
110
+ slug: 'route:pair',
111
+ readme: null,
112
+ sequence: [stepA, stepB],
113
+ }));
114
+ const decider = new StitchStep_1.StitchStepCompute({
115
+ slug: 'decide-again',
116
+ readme: null,
117
+ form: 'COMPUTE',
118
+ stitchee: 'main',
119
+ invoke: () => ({ input: null, output: { choice: 'release' } }),
120
+ });
121
+ const cycle = (0, genStitchCycle_1.genStitchCycle)({
122
+ slug: 'loop-route',
123
+ readme: 'Repeats a route',
124
+ repeatee,
125
+ decider,
126
+ });
127
+ (0, test_fns_1.then)('it should merge context from both steps and decider', () => {
128
+ const valid = {
129
+ a: 1,
130
+ b: true,
131
+ d: new Date(),
132
+ log: console,
133
+ stitch: { trail: [] },
134
+ };
135
+ expect(valid);
136
+ // @ts-expect-error: missing required key `b`
137
+ const invalid = {
138
+ a: 1,
139
+ d: new Date(),
140
+ };
141
+ expect(invalid);
142
+ });
143
+ (0, test_fns_1.then)('it should infer the output type from the repeatee route', () => {
144
+ const val = 'step-a';
145
+ expect(val);
146
+ // @ts-expect-error: number is not assignable
147
+ const invalid = 42;
148
+ expect(invalid);
149
+ });
150
+ });
151
+ });
152
+ //# sourceMappingURL=genStitchCycle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStitchCycle.test.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/genStitchCycle.test.ts"],"names":[],"mappings":"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"}