rhachet 1.5.0 → 1.7.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 (66) hide show
  1. package/dist/.test/directory.d.ts +1 -0
  2. package/dist/.test/directory.js +2 -1
  3. package/dist/.test/directory.js.map +1 -1
  4. package/dist/{contract/cli/.test → .test/example.use.repo}/example.echoRegistry.d.ts +1 -1
  5. package/dist/.test/example.use.repo/example.echoRegistry.js +104 -0
  6. package/dist/.test/example.use.repo/example.echoRegistry.js.map +1 -0
  7. package/dist/contract/cli/invoke.integration.test.js +2 -1
  8. package/dist/contract/cli/invoke.integration.test.js.map +1 -1
  9. package/dist/contract/cli/invoke.js +10 -33
  10. package/dist/contract/cli/invoke.js.map +1 -1
  11. package/dist/contract/cli/invokeAsk.d.ts +4 -1
  12. package/dist/contract/cli/invokeAsk.integration.test.js +29 -2
  13. package/dist/contract/cli/invokeAsk.integration.test.js.map +1 -1
  14. package/dist/contract/cli/invokeAsk.js +14 -44
  15. package/dist/contract/cli/invokeAsk.js.map +1 -1
  16. package/dist/contract/cli/invokeReadme.integration.test.js +1 -1
  17. package/dist/contract/cli/invokeReadme.integration.test.js.map +1 -1
  18. package/dist/contract/sdk.d.ts +1 -0
  19. package/dist/contract/sdk.js +3 -1
  20. package/dist/contract/sdk.js.map +1 -1
  21. package/dist/directory.d.ts +1 -0
  22. package/dist/directory.js +5 -0
  23. package/dist/directory.js.map +1 -0
  24. package/dist/domain/objects/InvokeOpts.d.ts +11 -0
  25. package/dist/domain/objects/InvokeOpts.js +3 -0
  26. package/dist/domain/objects/InvokeOpts.js.map +1 -0
  27. package/dist/domain/objects/InvokeOpts.test.d.ts +1 -0
  28. package/dist/domain/objects/InvokeOpts.test.js +41 -0
  29. package/dist/domain/objects/InvokeOpts.test.js.map +1 -0
  30. package/dist/logic/invoke/addAttemptQualifierToOutputPath.d.ts +13 -0
  31. package/dist/logic/invoke/addAttemptQualifierToOutputPath.js +30 -0
  32. package/dist/logic/invoke/addAttemptQualifierToOutputPath.js.map +1 -0
  33. package/dist/logic/invoke/addAttemptQualifierToOutputPath.test.d.ts +1 -0
  34. package/dist/logic/invoke/addAttemptQualifierToOutputPath.test.js +130 -0
  35. package/dist/logic/invoke/addAttemptQualifierToOutputPath.test.js.map +1 -0
  36. package/dist/logic/invoke/getRegistriesByOpts.d.ts +13 -0
  37. package/dist/logic/invoke/getRegistriesByOpts.js +40 -0
  38. package/dist/logic/invoke/getRegistriesByOpts.js.map +1 -0
  39. package/dist/logic/invoke/getSkillThread.test.js.map +1 -1
  40. package/dist/logic/invoke/getSkillThreads.d.ts +4 -1
  41. package/dist/logic/invoke/getSkillThreads.js +1 -1
  42. package/dist/logic/invoke/getSkillThreads.js.map +1 -1
  43. package/dist/logic/invoke/performInCurrentThread.d.ts +16 -0
  44. package/dist/logic/invoke/performInCurrentThread.js +56 -0
  45. package/dist/logic/invoke/performInCurrentThread.js.map +1 -0
  46. package/dist/logic/invoke/performInIsolatedThread.execute.d.ts +14 -0
  47. package/dist/logic/invoke/performInIsolatedThread.execute.js +48 -0
  48. package/dist/logic/invoke/performInIsolatedThread.execute.js.map +1 -0
  49. package/dist/logic/invoke/performInIsolatedThread.invoke.d.ts +31 -0
  50. package/dist/logic/invoke/performInIsolatedThread.invoke.integration.test.d.ts +1 -0
  51. package/dist/logic/invoke/performInIsolatedThread.invoke.integration.test.js +74 -0
  52. package/dist/logic/invoke/performInIsolatedThread.invoke.integration.test.js.map +1 -0
  53. package/dist/logic/invoke/performInIsolatedThread.invoke.js +92 -0
  54. package/dist/logic/invoke/performInIsolatedThread.invoke.js.map +1 -0
  55. package/dist/logic/invoke/performInIsolatedThreads.d.ts +19 -0
  56. package/dist/logic/invoke/performInIsolatedThreads.integration.test.d.ts +1 -0
  57. package/dist/logic/invoke/performInIsolatedThreads.integration.test.js +75 -0
  58. package/dist/logic/invoke/performInIsolatedThreads.integration.test.js.map +1 -0
  59. package/dist/logic/invoke/performInIsolatedThreads.js +99 -0
  60. package/dist/logic/invoke/performInIsolatedThreads.js.map +1 -0
  61. package/dist/logic/template/getTemplatePathByCallerPath.d.ts +29 -0
  62. package/dist/logic/template/getTemplatePathByCallerPath.js +50 -0
  63. package/dist/logic/template/getTemplatePathByCallerPath.js.map +1 -0
  64. package/package.json +7 -4
  65. package/dist/contract/cli/.test/example.echoRegistry.js +0 -54
  66. package/dist/contract/cli/.test/example.echoRegistry.js.map +0 -1
@@ -1 +1,2 @@
1
1
  export declare const directoryTestAssets: string;
2
+ export declare const TEST_FIXTURE_DIRECTORY: string;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.directoryTestAssets = void 0;
3
+ exports.TEST_FIXTURE_DIRECTORY = exports.directoryTestAssets = void 0;
4
4
  exports.directoryTestAssets = __dirname;
5
+ exports.TEST_FIXTURE_DIRECTORY = __dirname;
5
6
  //# sourceMappingURL=directory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/.test/directory.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/.test/directory.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAChC,QAAA,sBAAsB,GAAG,SAAS,CAAC"}
@@ -1,2 +1,2 @@
1
- import { RoleRegistry } from '../../sdk';
1
+ import { RoleRegistry } from '../../domain/objects';
2
2
  export declare const EXAMPLE_REGISTRY: RoleRegistry;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EXAMPLE_REGISTRY = void 0;
4
+ const rhachet_artifact_git_1 = require("rhachet-artifact-git");
5
+ const objects_1 = require("../../domain/objects");
6
+ const genThread_1 = require("../../logic/thread/genThread");
7
+ const stepEchoAsk = new objects_1.StitchStepCompute({
8
+ slug: 'echo.step',
9
+ form: 'COMPUTE',
10
+ stitchee: 'caller',
11
+ readme: 'simple echo logic',
12
+ invoke: async ({ threads }, context) => {
13
+ context.log.info('echo:', { ask: threads.caller.context.ask });
14
+ return {
15
+ input: null,
16
+ output: `echo: ${threads.caller.context.ask}`,
17
+ };
18
+ },
19
+ });
20
+ const echoSkill = objects_1.RoleSkill.build({
21
+ slug: 'echo',
22
+ readme: 'Echoes back the ask string.',
23
+ route: stepEchoAsk,
24
+ threads: {
25
+ lookup: {},
26
+ assess: (input) => true,
27
+ instantiate: (input) => ({
28
+ caller: (0, genThread_1.genThread)({ role: 'caller', ask: input.ask }),
29
+ }),
30
+ },
31
+ context: {
32
+ lookup: {},
33
+ assess: (input) => true,
34
+ instantiate: () => ({
35
+ log: console,
36
+ stitch: {
37
+ trail: [],
38
+ },
39
+ }),
40
+ },
41
+ });
42
+ const stepWriteAsk = new objects_1.StitchStepCompute({
43
+ slug: 'step.write',
44
+ form: 'COMPUTE',
45
+ stitchee: 'caller',
46
+ readme: 'simple echo logic',
47
+ invoke: async ({ threads }, context) => {
48
+ context.log.info('echo:', { ask: threads.caller.context.ask });
49
+ await threads.caller.context.art.output.set({
50
+ content: threads.caller.context.ask,
51
+ });
52
+ return {
53
+ input: null,
54
+ output: `echo: ${threads.caller.context.ask}`,
55
+ };
56
+ },
57
+ });
58
+ const writeSkill = objects_1.RoleSkill.build({
59
+ slug: 'write',
60
+ readme: 'Writes down the ask string.',
61
+ route: stepWriteAsk,
62
+ threads: {
63
+ lookup: {
64
+ output: {
65
+ source: 'process.argv',
66
+ char: 'o',
67
+ desc: 'the output file to write against',
68
+ type: 'string',
69
+ },
70
+ },
71
+ assess: (input) => input.output && input.ask,
72
+ instantiate: (input) => ({
73
+ caller: (0, genThread_1.genThread)({
74
+ role: 'caller',
75
+ ask: input.ask,
76
+ art: { output: (0, rhachet_artifact_git_1.genArtifactGitFile)({ uri: input.output }) },
77
+ }),
78
+ }),
79
+ },
80
+ context: {
81
+ lookup: {},
82
+ assess: (input) => true,
83
+ instantiate: () => ({
84
+ log: console,
85
+ stitch: {
86
+ trail: [],
87
+ },
88
+ }),
89
+ },
90
+ });
91
+ const echoRole = objects_1.Role.build({
92
+ slug: 'echoer',
93
+ name: 'Echoer',
94
+ purpose: 'repeat things',
95
+ readme: 'knows how to echo input back to the user.',
96
+ traits: [],
97
+ skills: [echoSkill, writeSkill],
98
+ });
99
+ exports.EXAMPLE_REGISTRY = new objects_1.RoleRegistry({
100
+ slug: 'echo',
101
+ readme: 'basic registry for testing CLI execution',
102
+ roles: [echoRole],
103
+ });
104
+ //# sourceMappingURL=example.echoRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.echoRegistry.js","sourceRoot":"","sources":["../../../src/.test/example.use.repo/example.echoRegistry.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const path_1 = __importDefault(require("path"));
7
7
  const test_fns_1 = require("test-fns");
8
+ const directory_1 = require("../../.test/directory");
8
9
  const invoke_1 = require("./invoke");
9
10
  describe('invoke', () => {
10
11
  (0, test_fns_1.given)('a valid config path pointing to a basic test registry', () => {
11
- const configPath = path_1.default.resolve(__dirname, './.test/example.rhachet.use.ts');
12
+ const configPath = path_1.default.resolve(directory_1.TEST_FIXTURE_DIRECTORY, './example.use.repo/example.rhachet.use.ts');
12
13
  (0, test_fns_1.when)('asked to readme a role', () => {
13
14
  const args = [
14
15
  '--config',
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invoke.integration.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,uCAA6C;AAE7C,qCAAkC;AAElC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAA,gBAAK,EAAC,uDAAuD,EAAE,GAAG,EAAE;QAClE,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAC7B,SAAS,EACT,gCAAgC,CACjC,CAAC;QAEF,IAAA,eAAI,EAAC,wBAAwB,EAAE,GAAG,EAAE;YAClC,MAAM,IAAI,GAAG;gBACX,UAAU;gBACV,UAAU;gBACV,QAAQ;gBACR,YAAY;gBACZ,MAAM;gBACN,QAAQ;gBACR,QAAQ;aACT,CAAC;YAEF,IAAI,MAA8C,CAAC;YAEnD,SAAS,CAAC,GAAG,EAAE;gBACb,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEvB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"invoke.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invoke.integration.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,uCAA6C;AAE7C,qDAA+D;AAC/D,qCAAkC;AAElC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAA,gBAAK,EAAC,uDAAuD,EAAE,GAAG,EAAE;QAClE,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAC7B,kCAAsB,EACtB,2CAA2C,CAC5C,CAAC;QAEF,IAAA,eAAI,EAAC,wBAAwB,EAAE,GAAG,EAAE;YAClC,MAAM,IAAI,GAAG;gBACX,UAAU;gBACV,UAAU;gBACV,QAAQ;gBACR,YAAY;gBACZ,MAAM;gBACN,QAAQ;gBACR,QAAQ;aACT,CAAC;YAEF,IAAI,MAA8C,CAAC;YAEnD,SAAS,CAAC,GAAG,EAAE;gBACb,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEvB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,34 +1,12 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.invoke = void 0;
27
4
  const commander_1 = require("commander");
28
5
  const helpful_errors_1 = require("helpful-errors");
29
- const path_1 = require("path");
6
+ const node_path_1 = require("node:path");
30
7
  const rhachet_artifact_git_1 = require("rhachet-artifact-git");
31
8
  const assureUniqueRoles_1 = require("../../logic/invoke/assureUniqueRoles");
9
+ const getRegistriesByOpts_1 = require("../../logic/invoke/getRegistriesByOpts");
32
10
  const invokeAsk_1 = require("./invokeAsk");
33
11
  const invokeList_1 = require("./invokeList");
34
12
  const invokeReadme_1 = require("./invokeReadme");
@@ -42,18 +20,18 @@ const invokeReadme_1 = require("./invokeReadme");
42
20
  * - config must export a `getRoleRegistries()` function returning a set of RoleRegistries to support
43
21
  */
44
22
  const invoke = async (input) => {
45
- const gitroot = await (0, rhachet_artifact_git_1.getGitRepoRoot)({ from: process.cwd() });
46
- // grab the config
23
+ // grab the config.registries
47
24
  const configArg = input.args.findIndex((a) => a === '--config' || a === '-c');
48
25
  const configPathExplicit = configArg >= 0 && input.args[configArg + 1]
49
26
  ? input.args[configArg + 1]
50
27
  : undefined;
28
+ const cwd = process.cwd(); //
51
29
  const configPath = configPathExplicit
52
- ? (0, path_1.resolve)(process.cwd(), configPathExplicit)
53
- : (0, path_1.resolve)(gitroot, 'rhachet.use.ts');
54
- const config = await Promise.resolve(`${configPath}`).then(s => __importStar(require(s)));
55
- // grab the registries configured
56
- const registries = await config.getRoleRegistries();
30
+ ? (0, node_path_1.resolve)(cwd, configPathExplicit)
31
+ : (0, node_path_1.resolve)(await (0, rhachet_artifact_git_1.getGitRepoRoot)({ from: cwd }), 'rhachet.use.ts');
32
+ const registries = await (0, getRegistriesByOpts_1.getRegistriesByOpts)({
33
+ opts: { config: configPath },
34
+ });
57
35
  // failfast on duplicate roles // todo: update commands to allow registry based disambiguation
58
36
  await (0, assureUniqueRoles_1.assureUniqueRoles)(registries);
59
37
  // declare the cli program
@@ -69,9 +47,8 @@ const invoke = async (input) => {
69
47
  .option('-c, --config <path>', 'where to find the rhachet.use.ts config'); // tell commander that we expect the config input and not to complain about it
70
48
  (0, invokeReadme_1.invokeReadme)({ program, registries });
71
49
  (0, invokeList_1.invokeList)({ program, registries });
72
- (0, invokeAsk_1.invokeAsk)({ program, registries });
50
+ (0, invokeAsk_1.invokeAsk)({ program, config: { path: configPath }, registries });
73
51
  // invoke it
74
- // console.log('[args]', input.args); // todo: make it easier to d ebug
75
52
  await program.parseAsync(input.args, { from: 'user' }).catch((error) => {
76
53
  if (error instanceof helpful_errors_1.BadRequestError) {
77
54
  console.error(``);
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/contract/cli/invoke.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,mDAAiD;AACjD,+BAA+B;AAC/B,+DAAsD;AAGtD,4EAAyE;AACzE,2CAAwC;AACxC,6CAA0C;AAC1C,iDAA8C;AAE9C;;;;;;;;GAQG;AACI,MAAM,MAAM,GAAG,KAAK,EAAE,KAAyB,EAAiB,EAAE;IACvE,MAAM,OAAO,GAAG,MAAM,IAAA,qCAAc,EAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE9D,kBAAkB;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GACtB,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAE;QAC5B,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,UAAU,GAAG,kBAAkB;QACnC,CAAC,CAAC,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC;QAC5C,CAAC,CAAC,IAAA,cAAO,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACvC,MAAM,MAAM,GACV,yBAAa,UAAU,uCAAC,CAAC;IAE3B,iCAAiC;IACjC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAEpD,8FAA8F;IAC9F,MAAM,IAAA,qCAAiB,EAAC,UAAU,CAAC,CAAC;IAEpC,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,eAAe,CAAC;QACtB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC,CAAC;IACH,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CACV,mFAAmF,CACpF;SACA,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC,CAAC,CAAC,8EAA8E;IAC3J,IAAA,2BAAY,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACtC,IAAA,uBAAU,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACpC,IAAA,qBAAS,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAEnC,YAAY;IACZ,uEAAuE;IACvE,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrE,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAnDW,QAAA,MAAM,UAmDjB"}
1
+ {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/contract/cli/invoke.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,mDAAiD;AACjD,yCAAoC;AACpC,+DAAsD;AAEtD,4EAAyE;AACzE,gFAA6E;AAC7E,2CAAwC;AACxC,6CAA0C;AAC1C,iDAA8C;AAE9C;;;;;;;;GAQG;AACI,MAAM,MAAM,GAAG,KAAK,EAAE,KAAyB,EAAiB,EAAE;IACvE,6BAA6B;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GACtB,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAE;QAC5B,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;IAC7B,MAAM,UAAU,GAAG,kBAAkB;QACnC,CAAC,CAAC,IAAA,mBAAO,EAAC,GAAG,EAAE,kBAAkB,CAAC;QAClC,CAAC,CAAC,IAAA,mBAAO,EAAC,MAAM,IAAA,qCAAc,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,MAAM,IAAA,yCAAmB,EAAC;QAC3C,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;KAC7B,CAAC,CAAC;IAEH,8FAA8F;IAC9F,MAAM,IAAA,qCAAiB,EAAC,UAAU,CAAC,CAAC;IAEpC,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,eAAe,CAAC;QACtB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC,CAAC;IACH,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CACV,mFAAmF,CACpF;SACA,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC,CAAC,CAAC,8EAA8E;IAC3J,IAAA,2BAAY,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACtC,IAAA,uBAAU,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACpC,IAAA,qBAAS,EAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAEjE,YAAY;IACZ,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrE,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA/CW,QAAA,MAAM,UA+CjB"}
@@ -4,7 +4,10 @@ import { RoleRegistry } from '../../domain/objects/RoleRegistry';
4
4
  * .what = adds the "ask" command to the CLI
5
5
  * .why = lets users invoke a skill from any role in the given registries
6
6
  */
7
- export declare const invokeAsk: ({ program, registries, }: {
7
+ export declare const invokeAsk: ({ program, registries, ...input }: {
8
8
  program: Command;
9
+ config: {
10
+ path: string;
11
+ };
9
12
  registries: RoleRegistry[];
10
13
  }) => void;
@@ -1,13 +1,24 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const commander_1 = require("commander");
7
+ const node_path_1 = __importDefault(require("node:path"));
4
8
  const test_fns_1 = require("test-fns");
5
- const example_echoRegistry_1 = require("./.test/example.echoRegistry");
9
+ const directory_1 = require("../../.test/directory");
10
+ const example_echoRegistry_1 = require("../../.test/example.use.repo/example.echoRegistry");
6
11
  const invokeAsk_1 = require("./invokeAsk");
7
12
  describe('invokeAsk (integration)', () => {
8
13
  (0, test_fns_1.given)('a CLI program with invokeAsk registered using EXAMPLE_REGISTRY', () => {
14
+ // config path is required for nested attempts to be explicitly declared
15
+ const configPath = node_path_1.default.resolve(directory_1.TEST_FIXTURE_DIRECTORY, './example.use.repo/example.rhachet.use.ts');
9
16
  const program = new commander_1.Command();
10
- (0, invokeAsk_1.invokeAsk)({ program, registries: [example_echoRegistry_1.EXAMPLE_REGISTRY] });
17
+ (0, invokeAsk_1.invokeAsk)({
18
+ program,
19
+ config: { path: configPath },
20
+ registries: [example_echoRegistry_1.EXAMPLE_REGISTRY],
21
+ });
11
22
  (0, test_fns_1.when)('invoking a valid echo skill with ask input', () => {
12
23
  (0, test_fns_1.then)('it should execute the skill successfully', async () => {
13
24
  const args = [
@@ -36,6 +47,22 @@ describe('invokeAsk (integration)', () => {
36
47
  expect(error?.message).toContain('no role named');
37
48
  });
38
49
  });
50
+ (0, test_fns_1.when)('invoking a valid echo skill with attempts', () => {
51
+ (0, test_fns_1.then)('it should execute the skill successfully', async () => {
52
+ const args = [
53
+ 'ask',
54
+ '--role',
55
+ 'echoer',
56
+ '--skill',
57
+ 'echo',
58
+ '--ask',
59
+ 'hello',
60
+ '--attempts',
61
+ '3',
62
+ ];
63
+ await program.parseAsync(args, { from: 'user' });
64
+ });
65
+ });
39
66
  });
40
67
  });
41
68
  //# sourceMappingURL=invokeAsk.integration.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invokeAsk.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeAsk.integration.test.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,uCAAuD;AAEvD,uEAAgE;AAChE,2CAAwC;AAExC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAA,gBAAK,EACH,gEAAgE,EAChE,GAAG,EAAE;QACH,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;QAC9B,IAAA,qBAAS,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,uCAAgB,CAAC,EAAE,CAAC,CAAC;QAEvD,IAAA,eAAI,EAAC,4CAA4C,EAAE,GAAG,EAAE;YACtD,IAAA,eAAI,EAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,IAAI,GAAG;oBACX,KAAK;oBACL,QAAQ;oBACR,QAAQ;oBACR,SAAS;oBACT,MAAM;oBACN,OAAO;oBACP,OAAO;iBACR,CAAC;gBACF,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,IAAA,eAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACrE,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAChC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAC3C,CAAC;gBACF,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACzC,IAAA,eAAI,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnE,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAChC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAC3C,CAAC;gBACF,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"invokeAsk.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeAsk.integration.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,0DAA6B;AAC7B,uCAAuD;AAEvD,qDAA+D;AAC/D,4FAAqF;AACrF,2CAAwC;AAExC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAA,gBAAK,EACH,gEAAgE,EAChE,GAAG,EAAE;QACH,wEAAwE;QACxE,MAAM,UAAU,GAAG,mBAAI,CAAC,OAAO,CAC7B,kCAAsB,EACtB,2CAA2C,CAC5C,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;QAC9B,IAAA,qBAAS,EAAC;YACR,OAAO;YACP,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5B,UAAU,EAAE,CAAC,uCAAgB,CAAC;SAC/B,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,4CAA4C,EAAE,GAAG,EAAE;YACtD,IAAA,eAAI,EAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,IAAI,GAAG;oBACX,KAAK;oBACL,QAAQ;oBACR,QAAQ;oBACR,SAAS;oBACT,MAAM;oBACN,OAAO;oBACP,OAAO;iBACR,CAAC;gBACF,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,IAAA,eAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACrE,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAChC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAC3C,CAAC;gBACF,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACzC,IAAA,eAAI,EAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnE,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAChC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAC3C,CAAC;gBACF,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACrD,IAAA,eAAI,EAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,IAAI,GAAG;oBACX,KAAK;oBACL,QAAQ;oBACR,QAAQ;oBACR,SAAS;oBACT,MAAM;oBACN,OAAO;oBACP,OAAO;oBACP,YAAY;oBACZ,GAAG;iBACJ,CAAC;gBACF,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -3,19 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.invokeAsk = void 0;
4
4
  const helpful_errors_1 = require("helpful-errors");
5
5
  const assureFindRole_1 = require("../../logic/invoke/assureFindRole");
6
- const getSkillContext_1 = require("../../logic/invoke/getSkillContext");
7
- const getSkillThreads_1 = require("../../logic/invoke/getSkillThreads");
8
- const sdk_1 = require("../sdk");
6
+ const performInCurrentThread_1 = require("../../logic/invoke/performInCurrentThread");
7
+ const performInIsolatedThreads_1 = require("../../logic/invoke/performInIsolatedThreads");
9
8
  /**
10
9
  * .what = adds the "ask" command to the CLI
11
10
  * .why = lets users invoke a skill from any role in the given registries
12
11
  */
13
- const invokeAsk = ({ program, registries, }) => {
12
+ const invokeAsk = ({ program, registries, ...input }) => {
14
13
  const askCommand = program
15
14
  .command('ask')
16
15
  .requiredOption('-r, --role <slug>', 'role to invoke')
17
16
  .requiredOption('-s, --skill <slug>', 'skill to invoke')
18
17
  .option('-a, --ask <ask>', 'your ask')
18
+ .option('--attempts <int>', 'number of independent outputs (requires -o/--output)')
19
+ .option('--concurrency <int>', 'parallel subthreads limit (default 3)')
19
20
  .allowUnknownOption(true)
20
21
  .allowExcessArguments(true);
21
22
  // 💉 dynamically inject CLI flags from skill inputs
@@ -40,49 +41,18 @@ const invokeAsk = ({ program, registries, }) => {
40
41
  });
41
42
  // 🧠 perform the skill
42
43
  askCommand.action(async (opts) => {
43
- const { ask, role: roleSlug, skill: skillSlug } = opts;
44
- // lookup the role
45
- const role = (0, assureFindRole_1.assureFindRole)({
46
- registries,
47
- slug: roleSlug ??
48
- helpful_errors_1.UnexpectedCodePathError.throw('roleSlug not defined. why not?', {
49
- opts,
50
- }),
51
- });
52
- if (!role)
53
- helpful_errors_1.BadRequestError.throw(`unknown role "${roleSlug}"`);
54
- // lookup the skill
55
- const skill = role.skills.find((s) => s.slug === skillSlug);
56
- if (!skill)
57
- helpful_errors_1.BadRequestError.throw(`unknown skill "${skillSlug}" under role "${roleSlug}"`);
58
- // instantiate the threads
44
+ // instantiate the composed argv
59
45
  const argvWithAsk = {
60
46
  ...opts,
61
- ask: ask ?? helpful_errors_1.UnexpectedCodePathError.throw('ask was not declared', { ask }),
47
+ ask: opts.ask ??
48
+ helpful_errors_1.UnexpectedCodePathError.throw('ask was not declared', { opts }),
49
+ config: input.config.path, // required for isolated child threads when used with attempts
62
50
  };
63
- const threads = await (0, getSkillThreads_1.getSkillThreads)({
64
- getter: skill.threads,
65
- from: { lookup: { argv: argvWithAsk } },
66
- });
67
- // instantiate the context
68
- const env = process.env;
69
- const context = await (0, getSkillContext_1.getSkillContext)({
70
- getter: skill.context,
71
- from: { lookup: { env } },
72
- });
73
- // execute the weave
74
- console.log('');
75
- console.log('');
76
- console.log('🎙️ heard');
77
- console.log('');
78
- console.log(argvWithAsk.ask);
79
- console.log('');
80
- console.log('🫡 on it!');
81
- console.log('');
82
- await (0, sdk_1.enweaveOneStitcher)({
83
- stitcher: skill.route,
84
- threads,
85
- }, context);
51
+ // if attempts were requested, perform the skill in isolated threads per attempt
52
+ if (opts.attempts)
53
+ return await (0, performInIsolatedThreads_1.performInIsolatedThreads)({ opts: argvWithAsk });
54
+ // otherwise, perform in the main thread by default
55
+ return await (0, performInCurrentThread_1.performInCurrentThread)({ opts: argvWithAsk, registries });
86
56
  });
87
57
  };
88
58
  exports.invokeAsk = invokeAsk;
@@ -1 +1 @@
1
- {"version":3,"file":"invokeAsk.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeAsk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invokeAsk.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeAsk.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const commander_1 = require("commander");
4
4
  const test_fns_1 = require("test-fns");
5
- const example_echoRegistry_1 = require("./.test/example.echoRegistry");
5
+ const example_echoRegistry_1 = require("../../.test/example.use.repo/example.echoRegistry");
6
6
  const invokeReadme_1 = require("./invokeReadme");
7
7
  describe('invokeReadme (integration)', () => {
8
8
  (0, test_fns_1.given)('a CLI program with invokeReadme registered using EXAMPLE_REGISTRY', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"invokeReadme.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeReadme.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invokeReadme.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeReadme.integration.test.ts"],"names":[],"mappings":"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"}
@@ -16,3 +16,4 @@ export { getStitch } from '../logic/thread/getStitch';
16
16
  export { enrollThread } from '../logic/role/enrollThread';
17
17
  export { genRoleSkill } from '../logic/role/genRoleSkill';
18
18
  export { genContextStitchTrail } from '../logic/context/genContextStitchTrail';
19
+ export { getTemplatePathByCallerPath } from '../logic/template/getTemplatePathByCallerPath';
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.genContextStitchTrail = exports.genRoleSkill = exports.enrollThread = exports.getStitch = exports.genStepImagineViaTemplate = exports.useTemplate = exports.getTemplateVarsFromRoleInherit = exports.getTemplateValFromArtifacts = exports.genTemplate = exports.asStitcherFlat = exports.asStitcher = exports.enweaveOneStitcher = exports.genStitchRoute = exports.genStitchFanout = exports.genStitchCycle = exports.genStitchChoice = void 0;
17
+ exports.getTemplatePathByCallerPath = exports.genContextStitchTrail = exports.genRoleSkill = exports.enrollThread = exports.getStitch = exports.genStepImagineViaTemplate = exports.useTemplate = exports.getTemplateVarsFromRoleInherit = exports.getTemplateValFromArtifacts = exports.genTemplate = exports.asStitcherFlat = exports.asStitcher = exports.enweaveOneStitcher = exports.genStitchRoute = exports.genStitchFanout = exports.genStitchCycle = exports.genStitchChoice = void 0;
18
18
  __exportStar(require("../domain/objects"), exports);
19
19
  var genStitchChoice_1 = require("../logic/weave/compose/genStitchChoice");
20
20
  Object.defineProperty(exports, "genStitchChoice", { enumerable: true, get: function () { return genStitchChoice_1.genStitchChoice; } });
@@ -48,4 +48,6 @@ var genRoleSkill_1 = require("../logic/role/genRoleSkill");
48
48
  Object.defineProperty(exports, "genRoleSkill", { enumerable: true, get: function () { return genRoleSkill_1.genRoleSkill; } });
49
49
  var genContextStitchTrail_1 = require("../logic/context/genContextStitchTrail");
50
50
  Object.defineProperty(exports, "genContextStitchTrail", { enumerable: true, get: function () { return genContextStitchTrail_1.genContextStitchTrail; } });
51
+ var getTemplatePathByCallerPath_1 = require("../logic/template/getTemplatePathByCallerPath");
52
+ Object.defineProperty(exports, "getTemplatePathByCallerPath", { enumerable: true, get: function () { return getTemplatePathByCallerPath_1.getTemplatePathByCallerPath; } });
51
53
  //# sourceMappingURL=sdk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/contract/sdk.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAElC,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,wEAAuE;AAA9D,gHAAA,cAAc,OAAA;AACvB,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,wEAAuE;AAA9D,gHAAA,cAAc,OAAA;AAEvB,wEAAuE;AAA9D,wHAAA,kBAAkB,OAAA;AAE3B,gEAA+D;AAAtD,wGAAA,UAAU,OAAA;AACnB,wEAAuE;AAA9D,gHAAA,cAAc,OAAA;AAEvB,6DAA4D;AAAnD,0GAAA,WAAW,OAAA;AACpB,6FAA4F;AAAnF,0IAAA,2BAA2B,OAAA;AACpC,mGAAkG;AAAzF,gJAAA,8BAA8B,OAAA;AACvC,6DAA4D;AAAnD,0GAAA,WAAW,OAAA;AACpB,yFAAwF;AAA/E,sIAAA,yBAAyB,OAAA;AAGlC,uDAAsD;AAA7C,sGAAA,SAAS,OAAA;AAClB,2DAA0D;AAAjD,4GAAA,YAAY,OAAA;AAErB,2DAA0D;AAAjD,4GAAA,YAAY,OAAA;AACrB,gFAA+E;AAAtE,8HAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/contract/sdk.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAElC,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,wEAAuE;AAA9D,gHAAA,cAAc,OAAA;AACvB,0EAAyE;AAAhE,kHAAA,eAAe,OAAA;AACxB,wEAAuE;AAA9D,gHAAA,cAAc,OAAA;AAEvB,wEAAuE;AAA9D,wHAAA,kBAAkB,OAAA;AAE3B,gEAA+D;AAAtD,wGAAA,UAAU,OAAA;AACnB,wEAAuE;AAA9D,gHAAA,cAAc,OAAA;AAEvB,6DAA4D;AAAnD,0GAAA,WAAW,OAAA;AACpB,6FAA4F;AAAnF,0IAAA,2BAA2B,OAAA;AACpC,mGAAkG;AAAzF,gJAAA,8BAA8B,OAAA;AACvC,6DAA4D;AAAnD,0GAAA,WAAW,OAAA;AACpB,yFAAwF;AAA/E,sIAAA,yBAAyB,OAAA;AAGlC,uDAAsD;AAA7C,sGAAA,SAAS,OAAA;AAClB,2DAA0D;AAAjD,4GAAA,YAAY,OAAA;AAErB,2DAA0D;AAAjD,4GAAA,YAAY,OAAA;AACrB,gFAA+E;AAAtE,8HAAA,qBAAqB,OAAA;AAC9B,6FAA4F;AAAnF,0IAAA,2BAA2B,OAAA"}
@@ -0,0 +1 @@
1
+ export declare const SRC_DIRECTORY: string;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SRC_DIRECTORY = void 0;
4
+ exports.SRC_DIRECTORY = __dirname;
5
+ //# sourceMappingURL=directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,SAAS,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Serializable } from 'serde-fns';
2
+ /**
3
+ * .what = options declared to specify an invocation
4
+ * .why =
5
+ * - skills are generic and can take any shape of inputs
6
+ * - our responsibility is to forward the caller's full intent, with the careful transfer of the full options they declared
7
+ * .note =
8
+ * - we do allow the requirement of a _minimum_ set of options
9
+ * - for example, `ask` invocations will always require the skill to be specified at a minimum
10
+ */
11
+ export type InvokeOpts<TMinimum extends Record<string, Serializable> | undefined = undefined> = TMinimum & Record<string, string | number | undefined>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=InvokeOpts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvokeOpts.js","sourceRoot":"","sources":["../../../src/domain/objects/InvokeOpts.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ describe('InvokeOpts', () => {
4
+ it('should allow guaranteed presence of TMinimum string values', () => {
5
+ // ✅ allowed: exact minimum present with correct string type
6
+ const opts1 = { skill: 'writer' };
7
+ const use1 = opts1.skill;
8
+ const use1alt = opts1.role;
9
+ expect(use1).toBe('writer');
10
+ // ❌ not allowed: must have the keys required in TMinimum at a minimum
11
+ // @ts-expect-error -- 'skill' must be declared
12
+ const opts2 = { other: 'x', another: undefined };
13
+ // ❌ not allowed: wrong type for required minimum key
14
+ // @ts-expect-error -- 'skill' must be a string per TMinimum
15
+ const opts3 = { skill: 123 };
16
+ // ❌ not allowed: non-string extras in the record branch
17
+ // @ts-expect-error -- extra props in the record branch must be string | undefined
18
+ const opts4 = { other: 42 };
19
+ });
20
+ it('should allow guaranteed presence of TMinimum numeric values', () => {
21
+ // ✅ allowed: exact minimum present with correct numeric type
22
+ const opts1 = { attempts: 2 };
23
+ const use1 = opts1.attempts;
24
+ expect(use1).toBe(2);
25
+ // ❌ not allowed: must include the keys required in TMinimum at a minimum
26
+ // @ts-expect-error -- missing required key 'attempts'
27
+ const opts2 = { something: 'else' };
28
+ // ✅ allowed: minimum present + extra string props
29
+ const opts3 = { attempts: 3, something: 'x' };
30
+ const use2 = opts3.attempts;
31
+ const use2alt = opts3.something;
32
+ expect(use2).toBe(3);
33
+ // ❌ not allowed: wrong type for required minimum key
34
+ // @ts-expect-error -- 'attempts' must be a number per TMinimum
35
+ const opts4 = { attempts: '2' };
36
+ // ❌ not allowed: non-string extras in the record branch
37
+ // @ts-expect-error -- extra props in the record branch must be string | undefined
38
+ const opts5 = { other: 42 };
39
+ });
40
+ });
41
+ //# sourceMappingURL=InvokeOpts.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvokeOpts.test.js","sourceRoot":"","sources":["../../../src/domain/objects/InvokeOpts.test.ts"],"names":[],"mappings":";;AAGA,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QAGpE,4DAA4D;QAC5D,MAAM,KAAK,GAAyB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACxD,MAAM,IAAI,GAAW,KAAK,CAAC,KAAK,CAAC;QACjC,MAAM,OAAO,GAAgC,KAAK,CAAC,IAAI,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5B,sEAAsE;QACtE,+CAA+C;QAC/C,MAAM,KAAK,GAAyB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAEvE,qDAAqD;QACrD,4DAA4D;QAC5D,MAAM,KAAK,GAAyB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAEnD,wDAAwD;QACxD,kFAAkF;QAClF,MAAM,KAAK,GAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QAGrE,6DAA6D;QAC7D,MAAM,KAAK,GAAyB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAW,KAAK,CAAC,QAAQ,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,yEAAyE;QACzE,sDAAsD;QACtD,MAAM,KAAK,GAAyB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAE1D,kDAAkD;QAClD,MAAM,KAAK,GAAyB,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QACpE,MAAM,IAAI,GAAW,KAAK,CAAC,QAAQ,CAAC;QACpC,MAAM,OAAO,GAAgC,KAAK,CAAC,SAAS,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,qDAAqD;QACrD,+DAA+D;QAC/D,MAAM,KAAK,GAAyB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAEtD,wDAAwD;QACxD,kFAAkF;QAClF,MAAM,KAAK,GAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * .what = adds an attempt qualifier to an output file path
3
+ * .why =
4
+ * - ensures deterministic, per-attempt output paths
5
+ * - supports explicit token replacement via `{{attempt}}` or automatic suffix
6
+ * .how =
7
+ * - if `path` contains `{{attempt}}` → replace with `i${attempt}`
8
+ * - else → insert `.i{attempt}` before the final extension
9
+ */
10
+ export declare const addAttemptQualifierToOutputPath: (input: {
11
+ path: string;
12
+ attempt: number;
13
+ }) => string;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addAttemptQualifierToOutputPath = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const type_fns_1 = require("type-fns");
9
+ /**
10
+ * .what = adds an attempt qualifier to an output file path
11
+ * .why =
12
+ * - ensures deterministic, per-attempt output paths
13
+ * - supports explicit token replacement via `{{attempt}}` or automatic suffix
14
+ * .how =
15
+ * - if `path` contains `{{attempt}}` → replace with `i${attempt}`
16
+ * - else → insert `.i{attempt}` before the final extension
17
+ */
18
+ const addAttemptQualifierToOutputPath = (input) => {
19
+ // if replacement variable is present, replace it
20
+ if (input.path.includes('{{attempt}}'))
21
+ return input.path.replace(/\{\{attempt\}\}/g, `i${input.attempt}`);
22
+ // parse the path parts
23
+ const parts = node_path_1.default.parse(input.path);
24
+ // build the path
25
+ return node_path_1.default.join(parts.dir, [parts.name, `i${input.attempt}`, parts.ext.replace(/^\./, '') || null]
26
+ .filter(type_fns_1.isPresent)
27
+ .join('.'));
28
+ };
29
+ exports.addAttemptQualifierToOutputPath = addAttemptQualifierToOutputPath;
30
+ //# sourceMappingURL=addAttemptQualifierToOutputPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAttemptQualifierToOutputPath.js","sourceRoot":"","sources":["../../../src/logic/invoke/addAttemptQualifierToOutputPath.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,uCAAqC;AAErC;;;;;;;;GAQG;AACI,MAAM,+BAA+B,GAAG,CAAC,KAG/C,EAAU,EAAE;IACX,iDAAiD;IACjD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QACpC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAErE,uBAAuB;IACvB,MAAM,KAAK,GAAG,mBAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErC,iBAAiB;IACjB,OAAO,mBAAI,CAAC,IAAI,CACd,KAAK,CAAC,GAAG,EACT,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;SACpE,MAAM,CAAC,oBAAS,CAAC;SACjB,IAAI,CAAC,GAAG,CAAC,CACb,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,+BAA+B,mCAkB1C"}