rhachet 1.1.0 → 1.2.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 (80) hide show
  1. package/dist/domain/objects/Role.d.ts +47 -0
  2. package/dist/domain/objects/Role.js +9 -0
  3. package/dist/domain/objects/Role.js.map +1 -0
  4. package/dist/domain/objects/RoleContext.d.ts +46 -0
  5. package/dist/domain/objects/RoleContext.js +3 -0
  6. package/dist/domain/objects/RoleContext.js.map +1 -0
  7. package/dist/domain/objects/RoleRegistry.d.ts +31 -0
  8. package/dist/domain/objects/RoleRegistry.js +13 -0
  9. package/dist/domain/objects/RoleRegistry.js.map +1 -0
  10. package/dist/domain/objects/RoleSkill.d.ts +38 -0
  11. package/dist/domain/objects/RoleSkill.js +9 -0
  12. package/dist/domain/objects/RoleSkill.js.map +1 -0
  13. package/dist/domain/objects/RoleSkillArgGetter.d.ts +137 -0
  14. package/dist/domain/objects/RoleSkillArgGetter.js +11 -0
  15. package/dist/domain/objects/RoleSkillArgGetter.js.map +1 -0
  16. package/dist/domain/objects/RoleTrait.d.ts +34 -0
  17. package/dist/domain/objects/RoleTrait.js +9 -0
  18. package/dist/domain/objects/RoleTrait.js.map +1 -0
  19. package/dist/domain/objects/StitchStep.d.ts +1 -1
  20. package/dist/domain/objects/StitchStep.js.map +1 -1
  21. package/dist/domain/objects/Template.d.ts +21 -0
  22. package/dist/domain/objects/Template.js +8 -0
  23. package/dist/domain/objects/Template.js.map +1 -0
  24. package/dist/domain/objects/Template.test.d.ts +1 -0
  25. package/dist/domain/objects/Template.test.js +48 -0
  26. package/dist/domain/objects/Template.test.js.map +1 -0
  27. package/dist/logic/role/addRoleTraits.d.ts +18 -0
  28. package/dist/logic/role/addRoleTraits.js +33 -0
  29. package/dist/logic/role/addRoleTraits.js.map +1 -0
  30. package/dist/logic/role/addRoleTraits.test.d.ts +1 -0
  31. package/dist/logic/role/addRoleTraits.test.js +93 -0
  32. package/dist/logic/role/addRoleTraits.test.js.map +1 -0
  33. package/dist/logic/role/enrollThread.d.ts +16 -0
  34. package/dist/logic/role/enrollThread.integration.test.d.ts +1 -0
  35. package/dist/logic/role/enrollThread.integration.test.js +79 -0
  36. package/dist/logic/role/enrollThread.integration.test.js.map +1 -0
  37. package/dist/logic/role/enrollThread.js +36 -0
  38. package/dist/logic/role/enrollThread.js.map +1 -0
  39. package/dist/logic/stitch/adapters/imagineViaOpenAI.js.map +1 -1
  40. package/dist/logic/stitch/invokeImagineStitcher.integration.test.js +2 -0
  41. package/dist/logic/stitch/invokeImagineStitcher.integration.test.js.map +1 -1
  42. package/dist/logic/stitch/invokeImagineStitcher.js +1 -1
  43. package/dist/logic/stitch/invokeImagineStitcher.js.map +1 -1
  44. package/dist/logic/template/genStepImagineViaTemplate.d.ts +22 -0
  45. package/dist/logic/template/genStepImagineViaTemplate.js +22 -0
  46. package/dist/logic/template/genStepImagineViaTemplate.js.map +1 -0
  47. package/dist/logic/template/genStepImagineViaTemplate.test.d.ts +1 -0
  48. package/dist/logic/template/genStepImagineViaTemplate.test.js +126 -0
  49. package/dist/logic/template/genStepImagineViaTemplate.test.js.map +1 -0
  50. package/dist/logic/template/genTemplate.d.ts +16 -0
  51. package/dist/logic/template/genTemplate.js +21 -0
  52. package/dist/logic/template/genTemplate.js.map +1 -0
  53. package/dist/logic/template/genTemplate.test.d.ts +1 -0
  54. package/dist/logic/template/genTemplate.test.js +118 -0
  55. package/dist/logic/template/genTemplate.test.js.map +1 -0
  56. package/dist/logic/template/getTemplateValFromArtifacts.d.ts +9 -0
  57. package/dist/logic/template/getTemplateValFromArtifacts.js +27 -0
  58. package/dist/logic/template/getTemplateValFromArtifacts.js.map +1 -0
  59. package/dist/logic/template/getTemplateVarsFromInheritance.d.ts +22 -0
  60. package/dist/logic/template/getTemplateVarsFromInheritance.js +15 -0
  61. package/dist/logic/template/getTemplateVarsFromInheritance.js.map +1 -0
  62. package/dist/logic/template/useTemplate.d.ts +10 -0
  63. package/dist/logic/template/useTemplate.integration.test.d.ts +1 -0
  64. package/dist/logic/template/useTemplate.integration.test.js +28 -0
  65. package/dist/logic/template/useTemplate.integration.test.js.map +1 -0
  66. package/dist/logic/template/useTemplate.js +26 -0
  67. package/dist/logic/template/useTemplate.js.map +1 -0
  68. package/dist/logic/thread/getStitch.d.ts +11 -0
  69. package/dist/logic/thread/getStitch.js +18 -0
  70. package/dist/logic/thread/getStitch.js.map +1 -0
  71. package/dist/logic/thread/getStitch.test.d.ts +1 -0
  72. package/dist/logic/thread/getStitch.test.js +73 -0
  73. package/dist/logic/thread/getStitch.test.js.map +1 -0
  74. package/dist/logic/weave/compose/genStitchCycle.test.js +115 -0
  75. package/dist/logic/weave/compose/genStitchCycle.test.js.map +1 -1
  76. package/package.json +8 -4
  77. package/readme.md +32 -33
  78. package/dist/logic/thread/enroleThread.d.ts +0 -4
  79. package/dist/logic/thread/enroleThread.js +0 -6
  80. package/dist/logic/thread/enroleThread.js.map +0 -1
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const as_procedure_1 = require("as-procedure");
4
+ const helpful_errors_1 = require("helpful-errors");
5
+ const test_fns_1 = require("test-fns");
6
+ const addRoleTraits_1 = require("./addRoleTraits");
7
+ const makeFakeArtifact = (content) => ({
8
+ ref: { uri: `/fake/${Math.random()}` },
9
+ get: (0, as_procedure_1.withExpectOutput)(async () => ({
10
+ uri: '/fake/file.md',
11
+ hash: 'hash123',
12
+ content,
13
+ })),
14
+ set: () => helpful_errors_1.UnexpectedCodePathError.throw('todo'),
15
+ del: () => helpful_errors_1.UnexpectedCodePathError.throw('todo'),
16
+ });
17
+ describe('addRoleTraits', () => {
18
+ (0, test_fns_1.given)('a thread with empty traits', () => {
19
+ const thread = {
20
+ context: { inherit: { traits: [], skills: [] } },
21
+ stitches: [],
22
+ };
23
+ (0, test_fns_1.when)('adding traits from direct RoleTrait content', () => {
24
+ const traits = [
25
+ { content: 'treat consistency as top priority' },
26
+ { content: 'prefer ubiquitous language' },
27
+ ];
28
+ (0, test_fns_1.then)('should append those traits to the context', async () => {
29
+ const updated = await (0, addRoleTraits_1.addRoleTraits)({ thread, from: { traits } });
30
+ expect(updated.context.inherit.traits).toEqual(traits);
31
+ });
32
+ });
33
+ (0, test_fns_1.when)('adding traits from GitFile artifacts', () => {
34
+ const artifacts = [
35
+ makeFakeArtifact('treat consistency as top priority'),
36
+ makeFakeArtifact('prefer given/when/then structure'),
37
+ ];
38
+ (0, test_fns_1.then)('should extract and append traits from files', async () => {
39
+ const updated = await (0, addRoleTraits_1.addRoleTraits)({ thread, from: { artifacts } });
40
+ expect(updated.context.inherit.traits).toEqual([
41
+ { content: 'treat consistency as top priority' },
42
+ { content: 'prefer given/when/then structure' },
43
+ ]);
44
+ });
45
+ });
46
+ (0, test_fns_1.when)('adding traits from both RoleTrait and Artifact', () => {
47
+ const traits = [{ content: 'always test behavior' }];
48
+ const artifacts = [makeFakeArtifact('capture domain terms')];
49
+ (0, test_fns_1.then)('should merge both sources into context.inherit.traits', async () => {
50
+ const updated = await (0, addRoleTraits_1.addRoleTraits)({
51
+ thread,
52
+ from: { traits, artifacts },
53
+ });
54
+ expect(updated.context.inherit.traits).toEqual([
55
+ { content: 'always test behavior' },
56
+ { content: 'capture domain terms' },
57
+ ]);
58
+ });
59
+ });
60
+ });
61
+ (0, test_fns_1.given)('a thread with pre-existing traits', () => {
62
+ const thread = {
63
+ context: {
64
+ inherit: {
65
+ traits: [{ content: 'existing trait' }],
66
+ skills: [],
67
+ },
68
+ },
69
+ stitches: [],
70
+ };
71
+ (0, test_fns_1.when)('adding new traits via artifact', () => {
72
+ const artifacts = [makeFakeArtifact('new trait added')];
73
+ (0, test_fns_1.then)('should preserve existing traits and append new ones', async () => {
74
+ const updated = await (0, addRoleTraits_1.addRoleTraits)({ thread, from: { artifacts } });
75
+ expect(updated.context.inherit.traits).toEqual([
76
+ { content: 'existing trait' },
77
+ { content: 'new trait added' },
78
+ ]);
79
+ });
80
+ });
81
+ });
82
+ (0, test_fns_1.given)('an invalid input with neither traits nor artifacts', () => {
83
+ const thread = {
84
+ context: { inherit: { traits: [], skills: [] } },
85
+ stitches: [],
86
+ };
87
+ (0, test_fns_1.then)('should fail at type level', async () => {
88
+ // @ts-expect-error — atleast one key in from is required
89
+ await (0, addRoleTraits_1.addRoleTraits)({ thread, from: {} });
90
+ });
91
+ });
92
+ });
93
+ //# sourceMappingURL=addRoleTraits.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addRoleTraits.test.js","sourceRoot":"","sources":["../../../src/logic/role/addRoleTraits.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Artifact } from 'rhachet-artifact';
2
+ import { GitFile } from 'rhachet-artifact-git';
3
+ import { Thread } from '../../domain/objects';
4
+ import { RoleContext } from '../../domain/objects/RoleContext';
5
+ /**
6
+ * .what = creates a thread for a given role, with optional inherited traits and skills
7
+ * .why = eliminates boilerplate around thread setup, including `as const`, trait/skill injection, and context composition
8
+ */
9
+ export declare const enrollThread: <TRole extends string, TStash extends Record<string, any>>({ role, inherit, stash, }: {
10
+ role: TRole;
11
+ inherit?: {
12
+ traits?: Artifact<typeof GitFile>[];
13
+ skills?: Artifact<typeof GitFile>[];
14
+ };
15
+ stash?: TStash;
16
+ }) => Promise<Thread<RoleContext<TRole, TStash>>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const helpful_errors_1 = require("helpful-errors");
4
+ const rhachet_artifact_git_1 = require("rhachet-artifact-git");
5
+ const test_fns_1 = require("test-fns");
6
+ const enrollThread_1 = require("./enrollThread");
7
+ describe('enrollThread', () => {
8
+ (0, test_fns_1.given)('a role with no traits or skills', () => {
9
+ (0, test_fns_1.when)('calling enrollThread()', () => {
10
+ (0, test_fns_1.then)('it should default traits and skills to empty arrays', async () => {
11
+ const thread = await (0, enrollThread_1.enrollThread)({
12
+ role: 'mechanic',
13
+ });
14
+ expect(thread.context.inherit.traits).toEqual([]);
15
+ expect(thread.context.inherit.skills).toEqual([]);
16
+ });
17
+ });
18
+ });
19
+ (0, test_fns_1.given)('a role with only traits provided', () => {
20
+ const traitArtifact = (0, rhachet_artifact_git_1.genArtifactGitFile)({
21
+ uri: __dirname + '/.temp/traits.md',
22
+ });
23
+ const traitContent = '__trait__';
24
+ beforeEach(() => traitArtifact.set({ content: traitContent }));
25
+ (0, test_fns_1.when)('calling enrollThread()', () => {
26
+ (0, test_fns_1.then)('it should inject traits and still initialize skills as an empty array', async () => {
27
+ const thread = await (0, enrollThread_1.enrollThread)({
28
+ role: 'analyst',
29
+ inherit: {
30
+ traits: [traitArtifact],
31
+ },
32
+ });
33
+ expect(thread.context.inherit.traits).toHaveLength(1);
34
+ expect(thread.context.inherit.traits[0]?.content).toBeDefined();
35
+ expect(thread.context.inherit.skills).toEqual([]);
36
+ });
37
+ });
38
+ });
39
+ (0, test_fns_1.given)('a role with only skills provided', () => {
40
+ const skillArtifact = (0, rhachet_artifact_git_1.genArtifactGitFile)({
41
+ uri: __dirname + '/.temp/skills.md',
42
+ });
43
+ (0, test_fns_1.when)('calling enrollThread()', () => {
44
+ (0, test_fns_1.then)('it should throw since addRoleSkills is not yet implemented', async () => {
45
+ await expect((0, enrollThread_1.enrollThread)({
46
+ role: 'operator',
47
+ inherit: {
48
+ skills: [skillArtifact],
49
+ },
50
+ })).rejects.toThrow(helpful_errors_1.UnexpectedCodePathError);
51
+ });
52
+ });
53
+ });
54
+ (0, test_fns_1.given)('a role with both traits and stash', () => {
55
+ const traitArtifact = (0, rhachet_artifact_git_1.genArtifactGitFile)({
56
+ uri: __dirname + '/.temp/traits.md',
57
+ });
58
+ const traitContent = '__trait__';
59
+ beforeEach(() => traitArtifact.set({ content: traitContent }));
60
+ (0, test_fns_1.when)('calling enrollThread()', () => {
61
+ (0, test_fns_1.then)('it should inject both stash and traits and ensure skills is []', async () => {
62
+ const thread = await (0, enrollThread_1.enrollThread)({
63
+ role: 'teacher',
64
+ stash: {
65
+ lesson: 'always explain the why',
66
+ },
67
+ inherit: {
68
+ traits: [traitArtifact],
69
+ },
70
+ });
71
+ expect(thread.context.stash.lesson).toBe('always explain the why');
72
+ expect(thread.context.inherit.traits).toHaveLength(1);
73
+ expect(thread.context.inherit.traits[0].content).toEqual(traitContent);
74
+ expect(thread.context.inherit.skills).toEqual([]);
75
+ });
76
+ });
77
+ });
78
+ });
79
+ //# sourceMappingURL=enrollThread.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrollThread.integration.test.js","sourceRoot":"","sources":["../../../src/logic/role/enrollThread.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enrollThread = void 0;
4
+ const helpful_errors_1 = require("helpful-errors");
5
+ const genThread_1 = require("../thread/genThread");
6
+ const addRoleTraits_1 = require("./addRoleTraits");
7
+ /**
8
+ * .what = creates a thread for a given role, with optional inherited traits and skills
9
+ * .why = eliminates boilerplate around thread setup, including `as const`, trait/skill injection, and context composition
10
+ */
11
+ const enrollThread = async ({ role, inherit, stash, }) => {
12
+ let thread = (0, genThread_1.genThread)({
13
+ role: role,
14
+ inherit: {
15
+ traits: [],
16
+ skills: [],
17
+ },
18
+ stash: stash,
19
+ });
20
+ if (inherit?.traits?.length) {
21
+ thread = await (0, addRoleTraits_1.addRoleTraits)({
22
+ thread,
23
+ from: { artifacts: inherit.traits },
24
+ });
25
+ }
26
+ if (inherit?.skills?.length) {
27
+ throw new helpful_errors_1.UnexpectedCodePathError('todo');
28
+ // thread = await addRoleSkills({
29
+ // thread,
30
+ // from: { artifacts: inherit.skills },
31
+ // });
32
+ }
33
+ return thread;
34
+ };
35
+ exports.enrollThread = enrollThread;
36
+ //# sourceMappingURL=enrollThread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrollThread.js","sourceRoot":"","sources":["../../../src/logic/role/enrollThread.ts"],"names":[],"mappings":";;;AAAA,mDAAyD;AAMzD,mDAAgD;AAChD,mDAAgD;AAEhD;;;GAGG;AACI,MAAM,YAAY,GAAG,KAAK,EAG/B,EACA,IAAI,EACJ,OAAO,EACP,KAAK,GAQN,EAA+C,EAAE;IAChD,IAAI,MAAM,GAAG,IAAA,qBAAS,EAA6B;QACjD,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACX;QACD,KAAK,EAAE,KAAe;KACvB,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5B,MAAM,GAAG,MAAM,IAAA,6BAAa,EAAC;YAC3B,MAAM;YACN,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,wCAAuB,CAAC,MAAM,CAAC,CAAC;QAC1C,iCAAiC;QACjC,YAAY;QACZ,yCAAyC;QACzC,MAAM;IACR,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAxCW,QAAA,YAAY,gBAwCvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"imagineViaOpenAI.js","sourceRoot":"","sources":["../../../../src/logic/stitch/adapters/imagineViaOpenAI.ts"],"names":[],"mappings":";;;;;;AAAA,mDAAyD;AACzD,oDAA4B;AAerB,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAa,EACb,OAAsB,EACL,EAAE;IACnB,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;KAChC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,eAAe,EACb,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;YAClC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;YACzB,CAAC,CAAC,SAAS;QACf,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,KAAK;aACf;SACF;QACD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;KAChC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,wCAAuB,CAC/B,iDAAiD,EACjD,EAAE,QAAQ,EAAE,CACb,CAAC;IACJ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC7B,MAAM,IAAI,wCAAuB,CAC/B,wCAAwC,EACxC,EAAE,QAAQ,EAAE,CACb,CAAC;IACJ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;QACtC,MAAM,IAAI,wCAAuB,CAAC,iCAAiC,EAAE;YACnE,QAAQ;SACT,CAAC,CAAC;IACL,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,CAAC,CAAC;AAnCW,QAAA,gBAAgB,oBAmC3B"}
1
+ {"version":3,"file":"imagineViaOpenAI.js","sourceRoot":"","sources":["../../../../src/logic/stitch/adapters/imagineViaOpenAI.ts"],"names":[],"mappings":";;;;;;AAAA,mDAAyD;AACzD,oDAA4B;AAarB,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAa,EACb,OAAsB,EACL,EAAE;IACnB,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;KAChC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,eAAe,EACb,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;YAClC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;YACzB,CAAC,CAAC,SAAS;QACf,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,KAAK;aACf;SACF;QACD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;KAChC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,wCAAuB,CAC/B,iDAAiD,EACjD,EAAE,QAAQ,EAAE,CACb,CAAC;IACJ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC7B,MAAM,IAAI,wCAAuB,CAC/B,wCAAwC,EACxC,EAAE,QAAQ,EAAE,CACb,CAAC;IACJ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;QACtC,MAAM,IAAI,wCAAuB,CAAC,iCAAiC,EAAE;YACnE,QAAQ;SACT,CAAC,CAAC;IACL,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,CAAC,CAAC;AAnCW,QAAA,gBAAgB,oBAmC3B"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const uni_time_1 = require("@ehmpathy/uni-time");
3
4
  const test_fns_1 = require("test-fns");
4
5
  const genContextLogTrail_1 = require("../../__test_assets__/genContextLogTrail");
5
6
  const genContextStitchTrail_1 = require("../../__test_assets__/genContextStitchTrail");
@@ -8,6 +9,7 @@ const StitchStep_1 = require("../../domain/objects/StitchStep");
8
9
  const Thread_1 = require("../../domain/objects/Thread");
9
10
  const imagineViaOpenAI_1 = require("./adapters/imagineViaOpenAI");
10
11
  const enstitch_1 = require("./enstitch");
12
+ jest.setTimeout((0, uni_time_1.toMilliseconds)({ minutes: 3 }));
11
13
  describe('invokeImagineStitcher', () => {
12
14
  test_fns_1.given.runIf(!process.env.CI)('a representative imagine stitcher', () => {
13
15
  const context = {
@@ -1 +1 @@
1
- {"version":3,"file":"invokeImagineStitcher.integration.test.js","sourceRoot":"","sources":["../../../src/logic/stitch/invokeImagineStitcher.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invokeImagineStitcher.integration.test.js","sourceRoot":"","sources":["../../../src/logic/stitch/invokeImagineStitcher.integration.test.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ exports.invokeImagineStitcher = void 0;
7
7
  const invokeImagineStitcher = async (input, context) => {
8
8
  const { stitcher, threads } = input;
9
9
  // enprompt the thread
10
- const prompt = stitcher.enprompt({ threads });
10
+ const prompt = await stitcher.enprompt({ threads });
11
11
  // invoke the imagination
12
12
  const imagined = await stitcher.imagine(prompt, context);
13
13
  // deprompt back into a stitch
@@ -1 +1 @@
1
- {"version":3,"file":"invokeImagineStitcher.js","sourceRoot":"","sources":["../../../src/logic/stitch/invokeImagineStitcher.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACI,MAAM,qBAAqB,GAAG,KAAK,EACxC,KAGC,EACD,OAA6B,EACmC,EAAE;IAClE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEpC,sBAAsB;IACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9C,yBAAyB;IACzB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzD,8BAA8B;IAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC/B,OAAO;QACP,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IAEH,oBAAoB;IACpB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAxBW,QAAA,qBAAqB,yBAwBhC"}
1
+ {"version":3,"file":"invokeImagineStitcher.js","sourceRoot":"","sources":["../../../src/logic/stitch/invokeImagineStitcher.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACI,MAAM,qBAAqB,GAAG,KAAK,EACxC,KAGC,EACD,OAA6B,EACmC,EAAE;IAClE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEpC,sBAAsB;IACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpD,yBAAyB;IACzB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzD,8BAA8B;IAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC/B,OAAO;QACP,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IAEH,oBAAoB;IACpB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAxBW,QAAA,qBAAqB,yBAwBhC"}
@@ -0,0 +1,22 @@
1
+ import { GStitcher, StitchStepImagine } from '../../domain/objects';
2
+ import { Template } from '../../domain/objects/Template';
3
+ /**
4
+ * .what = creates a typed StitchStepImagine from a prompt template and AI imagine function
5
+ * .why = enables reusable, type-safe imagine steps with minimal boilerplate
6
+ */
7
+ export declare const genStepImagineViaTemplate: <TStitcher extends GStitcher<any, any, any>>(input: {
8
+ slug: string;
9
+ readme: string;
10
+ stitchee: keyof TStitcher['threads'];
11
+ template: Template<{
12
+ threads: TStitcher['threads'];
13
+ }>;
14
+ imagine: (prompt: string, context: TStitcher['context']) => Promise<string>;
15
+ deprompt?: (args: {
16
+ input: string;
17
+ output: string;
18
+ }) => {
19
+ output: TStitcher['output'];
20
+ input: any;
21
+ };
22
+ }) => StitchStepImagine<TStitcher>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genStepImagineViaTemplate = void 0;
4
+ const objects_1 = require("../../domain/objects");
5
+ /**
6
+ * .what = creates a typed StitchStepImagine from a prompt template and AI imagine function
7
+ * .why = enables reusable, type-safe imagine steps with minimal boilerplate
8
+ */
9
+ const genStepImagineViaTemplate = (input) => new objects_1.StitchStepImagine({
10
+ form: 'IMAGINE',
11
+ slug: input.slug,
12
+ readme: input.readme,
13
+ stitchee: input.stitchee,
14
+ enprompt: async ({ threads }) => input.template.use({ threads }),
15
+ imagine: input.imagine,
16
+ deprompt: ({ promptIn, promptOut }) => input.deprompt?.({ input: promptIn, output: promptOut }) ?? {
17
+ input: { prompt: promptIn },
18
+ output: { content: promptOut },
19
+ },
20
+ });
21
+ exports.genStepImagineViaTemplate = genStepImagineViaTemplate;
22
+ //# sourceMappingURL=genStepImagineViaTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStepImagineViaTemplate.js","sourceRoot":"","sources":["../../../src/logic/template/genStepImagineViaTemplate.ts"],"names":[],"mappings":";;;AAAA,kDAAoE;AAGpE;;;GAGG;AACI,MAAM,yBAAyB,GAAG,CAEvC,KAUD,EAAgC,EAAE,CACjC,IAAI,2BAAiB,CAAY;IAC/B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,QAAQ,EAAE,KAAK,CAAC,QAAkB;IAClC,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;IAChE,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CACpC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI;QAC1D,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC3B,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAyB;KACtD;CACJ,CAAC,CAAC;AAzBQ,QAAA,yBAAyB,6BAyBjC"}
@@ -0,0 +1,126 @@
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 genThread_1 = require("../thread/genThread");
7
+ const genStepImagineViaTemplate_1 = require("./genStepImagineViaTemplate");
8
+ const genTemplate_1 = require("./genTemplate");
9
+ const useTemplate_1 = require("./useTemplate");
10
+ jest.mock('./useTemplate', () => ({
11
+ useTemplate: jest.fn(),
12
+ }));
13
+ describe('genStepImagineViaTemplate', () => {
14
+ const context = {
15
+ ...(0, genContextLogTrail_1.genContextLogTrail)(),
16
+ ...(0, genContextStitchTrail_1.genContextStitchTrail)(),
17
+ };
18
+ (0, test_fns_1.given)('a prompt template and imagine step with incompatible threads', () => {
19
+ const threads = {
20
+ assistant: (0, genThread_1.genThread)({ role: 'assistant', name: 'Bert' }),
21
+ };
22
+ const template = (0, genTemplate_1.genTemplate)({
23
+ ref: { uri: 'path/to/template.md' },
24
+ getVariables: (input) => ({
25
+ name: input.threads.assistant.context.name,
26
+ }),
27
+ });
28
+ (0, test_fns_1.then)('there should be a devtime error on instantiation', async () => {
29
+ (0, genStepImagineViaTemplate_1.genStepImagineViaTemplate)({
30
+ slug: 'test-slug',
31
+ readme: 'testing imagine via template',
32
+ stitchee: 'assistant',
33
+ // @ts-expect-error: Property 'name' is missing in type 'ThreadContextRole<"assistant">' but required in type '{ role: "assistant"; name: string; }'.ts(2322)
34
+ template,
35
+ imagine: async (prompt) => `AI said: ${prompt}`,
36
+ deprompt: ({ input, output }) => ({
37
+ input: { prompt: input },
38
+ output: { content: output },
39
+ }),
40
+ });
41
+ });
42
+ });
43
+ (0, test_fns_1.given)('a prompt template and imagine step with compatible threads', () => {
44
+ const threads = {
45
+ assistant: (0, genThread_1.genThread)({ role: 'assistant', name: 'Casey' }),
46
+ };
47
+ const template = (0, genTemplate_1.genTemplate)({
48
+ ref: { uri: 'path/to/template.md' },
49
+ getVariables: (input) => ({
50
+ name: input.threads.assistant.context.name,
51
+ }),
52
+ });
53
+ (0, test_fns_1.when)('creating a StitchStepImagine', () => {
54
+ useTemplate_1.useTemplate.mockImplementation(async (input) => {
55
+ console.log({ input });
56
+ const vars = await input.variables;
57
+ return `hydrated: ${vars.name}`;
58
+ });
59
+ const imagineStep = (0, genStepImagineViaTemplate_1.genStepImagineViaTemplate)({
60
+ slug: 'test-slug',
61
+ readme: 'testing imagine via template',
62
+ stitchee: 'assistant',
63
+ template,
64
+ imagine: async (prompt) => `AI said: ${prompt}`,
65
+ deprompt: ({ input, output }) => ({
66
+ input: { prompt: input },
67
+ output: { content: output },
68
+ }),
69
+ });
70
+ (0, test_fns_1.then)('it defines a valid imagine step', async () => {
71
+ expect(imagineStep.form).toBe('IMAGINE');
72
+ expect(imagineStep.slug).toBe('test-slug');
73
+ expect(imagineStep.stitchee).toBe('assistant');
74
+ });
75
+ (0, test_fns_1.then)('it renders the prompt using useTemplate()', async () => {
76
+ const prompt = await imagineStep.enprompt({ threads });
77
+ expect(prompt).toBe('hydrated: Casey');
78
+ expect(useTemplate_1.useTemplate).toHaveBeenCalledWith({
79
+ ref: { uri: 'path/to/template.md' },
80
+ variables: { name: 'Casey' },
81
+ });
82
+ });
83
+ (0, test_fns_1.then)('it runs the imagine function with the prompt', async () => {
84
+ const result = await imagineStep.imagine('a prompt', context);
85
+ expect(result).toBe('AI said: a prompt');
86
+ });
87
+ (0, test_fns_1.then)('it transforms the output with deprompt', () => {
88
+ const deprompted = imagineStep.deprompt({
89
+ threads,
90
+ promptIn: 'abc',
91
+ promptOut: 'xyz',
92
+ });
93
+ expect(deprompted).toEqual({
94
+ input: { prompt: 'abc' },
95
+ output: { content: 'xyz' },
96
+ });
97
+ });
98
+ });
99
+ (0, test_fns_1.when)('passing an invalid stitchee', () => {
100
+ (0, test_fns_1.then)('TypeScript throws an error', () => {
101
+ (0, genStepImagineViaTemplate_1.genStepImagineViaTemplate)({
102
+ slug: 'invalid',
103
+ readme: 'should fail',
104
+ // @ts-expect-error 'ghost' is not a valid stitchee
105
+ stitchee: 'ghost',
106
+ template,
107
+ imagine: async (prompt) => `ghost: ${prompt}`,
108
+ });
109
+ });
110
+ });
111
+ (0, test_fns_1.when)('passing a non-literal stitchee key', () => {
112
+ const stitchee = 'assistant';
113
+ (0, test_fns_1.then)('TypeScript throws an error', () => {
114
+ (0, genStepImagineViaTemplate_1.genStepImagineViaTemplate)({
115
+ slug: 'bad-key',
116
+ readme: 'non-literal stitchee',
117
+ // @ts-expect-error stitchee must be a literal keyof threads
118
+ stitchee,
119
+ template,
120
+ imagine: async () => `result`,
121
+ });
122
+ });
123
+ });
124
+ });
125
+ });
126
+ //# sourceMappingURL=genStepImagineViaTemplate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStepImagineViaTemplate.test.js","sourceRoot":"","sources":["../../../src/logic/template/genStepImagineViaTemplate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Serializable } from 'serde-fns';
2
+ import { Threads } from '../../domain/objects';
3
+ import { Template } from '../../domain/objects/Template';
4
+ /**
5
+ * .what = creates a Template that hydrates from a thread context
6
+ * .why = enables loading + variable projection in one step
7
+ * - transforms from Template<TVariables> to Template<{ threads: TThreads }>, so you can just template.use({ threads }), and abstract away the transform
8
+ */
9
+ export declare const genTemplate: <TThreads extends Threads<any>, TVariables extends Record<string, Serializable> = Record<string, Serializable>>(input: {
10
+ ref: Template<TVariables>['ref'];
11
+ getVariables: (input: {
12
+ threads: TThreads;
13
+ }) => TVariables | Promise<TVariables>;
14
+ }) => Template<{
15
+ threads: TThreads;
16
+ }>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genTemplate = void 0;
4
+ const useTemplate_1 = require("./useTemplate");
5
+ /**
6
+ * .what = creates a Template that hydrates from a thread context
7
+ * .why = enables loading + variable projection in one step
8
+ * - transforms from Template<TVariables> to Template<{ threads: TThreads }>, so you can just template.use({ threads }), and abstract away the transform
9
+ */
10
+ const genTemplate = (input) => ({
11
+ ref: input.ref,
12
+ use: async ({ threads }) => {
13
+ const variables = await input.getVariables({ threads });
14
+ return (0, useTemplate_1.useTemplate)({
15
+ ref: input.ref,
16
+ variables,
17
+ });
18
+ },
19
+ });
20
+ exports.genTemplate = genTemplate;
21
+ //# sourceMappingURL=genTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genTemplate.js","sourceRoot":"","sources":["../../../src/logic/template/genTemplate.ts"],"names":[],"mappings":";;;AAIA,+CAA4C;AAE5C;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAMzB,KAKD,EAAmC,EAAE,CAAC,CAAC;IACtC,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAyB,EAAE,EAAE;QAChD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,OAAO,IAAA,yBAAW,EAAC;YACjB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS;SACV,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AApBU,QAAA,WAAW,eAoBrB"}
@@ -0,0 +1 @@
1
+ export {};